@inversifyjs/core 1.3.2 → 1.3.4

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.
Files changed (172) hide show
  1. package/.turbo/turbo-build.log +299 -6
  2. package/CHANGELOG.md +15 -0
  3. package/lib/cjs/metadata/actions/updateMaybeClassMetadataConstructorArgument.d.ts +4 -0
  4. package/lib/cjs/metadata/actions/updateMaybeClassMetadataConstructorArgument.d.ts.map +1 -0
  5. package/lib/cjs/metadata/actions/updateMaybeClassMetadataConstructorArgument.js +12 -0
  6. package/lib/cjs/metadata/actions/updateMaybeClassMetadataConstructorArgument.js.map +1 -0
  7. package/lib/cjs/metadata/actions/updateMaybeClassMetadataConstructorArgument.spec.d.ts.map +1 -0
  8. package/lib/cjs/metadata/actions/updateMaybeClassMetadataProperty.d.ts +4 -0
  9. package/lib/cjs/metadata/actions/updateMaybeClassMetadataProperty.d.ts.map +1 -0
  10. package/lib/cjs/metadata/actions/updateMaybeClassMetadataProperty.js +11 -0
  11. package/lib/cjs/metadata/actions/updateMaybeClassMetadataProperty.js.map +1 -0
  12. package/lib/cjs/metadata/actions/updateMaybeClassMetadataProperty.spec.d.ts.map +1 -0
  13. package/lib/cjs/metadata/calculations/assertConstructorMetadataArrayFilled.d.ts +4 -0
  14. package/lib/cjs/metadata/calculations/assertConstructorMetadataArrayFilled.d.ts.map +1 -0
  15. package/lib/cjs/metadata/calculations/assertConstructorMetadataArrayFilled.js +23 -0
  16. package/lib/cjs/metadata/calculations/assertConstructorMetadataArrayFilled.js.map +1 -0
  17. package/lib/cjs/metadata/calculations/assertConstructorMetadataArrayFilled.spec.d.ts.map +1 -0
  18. package/lib/cjs/metadata/calculations/getClassMetadataConstructorArguments.d.ts.map +1 -1
  19. package/lib/cjs/metadata/calculations/getClassMetadataConstructorArguments.js +2 -0
  20. package/lib/cjs/metadata/calculations/getClassMetadataConstructorArguments.js.map +1 -1
  21. package/lib/cjs/metadata/calculations/getClassMetadataConstructorArgumentsFromMetadataReader.d.ts.map +1 -1
  22. package/lib/cjs/metadata/calculations/getClassMetadataConstructorArgumentsFromMetadataReader.js +2 -0
  23. package/lib/cjs/metadata/calculations/getClassMetadataConstructorArgumentsFromMetadataReader.js.map +1 -1
  24. package/lib/cjs/metadata/calculations/getDefaultClassMetadata.d.ts +3 -0
  25. package/lib/cjs/metadata/calculations/getDefaultClassMetadata.d.ts.map +1 -0
  26. package/lib/cjs/metadata/calculations/getDefaultClassMetadata.js +14 -0
  27. package/lib/cjs/metadata/calculations/getDefaultClassMetadata.js.map +1 -0
  28. package/lib/cjs/metadata/calculations/getDefaultClassMetadata.spec.d.ts.map +1 -0
  29. package/lib/cjs/metadata/decorators/injectBase.d.ts +4 -0
  30. package/lib/cjs/metadata/decorators/injectBase.d.ts.map +1 -0
  31. package/lib/cjs/metadata/decorators/injectBase.js +39 -0
  32. package/lib/cjs/metadata/decorators/injectBase.js.map +1 -0
  33. package/lib/cjs/metadata/decorators/injectBase.spec.d.ts.map +1 -0
  34. package/lib/cjs/metadata/models/BaseClassElementMetadata.d.ts +1 -2
  35. package/lib/cjs/metadata/models/BaseClassElementMetadata.d.ts.map +1 -1
  36. package/lib/cjs/metadata/models/ManagedClassElementMetadata.d.ts +1 -1
  37. package/lib/cjs/metadata/models/ManagedClassElementMetadata.d.ts.map +1 -1
  38. package/lib/cjs/metadata/models/MaybeClassElementMetadata.d.ts +5 -0
  39. package/lib/cjs/metadata/models/MaybeClassElementMetadata.d.ts.map +1 -0
  40. package/lib/cjs/metadata/models/MaybeClassElementMetadata.js +3 -0
  41. package/lib/cjs/metadata/models/MaybeClassElementMetadata.js.map +1 -0
  42. package/lib/cjs/metadata/models/MaybeClassElementMetadataKind.d.ts +4 -0
  43. package/lib/cjs/metadata/models/MaybeClassElementMetadataKind.d.ts.map +1 -0
  44. package/lib/cjs/metadata/models/MaybeClassElementMetadataKind.js +8 -0
  45. package/lib/cjs/metadata/models/MaybeClassElementMetadataKind.js.map +1 -0
  46. package/lib/cjs/metadata/models/MaybeClassMetadata.d.ts +8 -0
  47. package/lib/cjs/metadata/models/MaybeClassMetadata.d.ts.map +1 -0
  48. package/lib/cjs/metadata/models/MaybeClassMetadata.js +3 -0
  49. package/lib/cjs/metadata/models/MaybeClassMetadata.js.map +1 -0
  50. package/lib/cjs/metadata/models/MaybeManagedClassElementMetadata.d.ts +14 -0
  51. package/lib/cjs/metadata/models/MaybeManagedClassElementMetadata.d.ts.map +1 -0
  52. package/lib/cjs/metadata/models/MaybeManagedClassElementMetadata.js +3 -0
  53. package/lib/cjs/metadata/models/MaybeManagedClassElementMetadata.js.map +1 -0
  54. package/lib/cjs/reflectMetadata/data/classMetadataReflectKey.d.ts +2 -0
  55. package/lib/cjs/reflectMetadata/data/classMetadataReflectKey.d.ts.map +1 -0
  56. package/lib/cjs/reflectMetadata/data/classMetadataReflectKey.js +5 -0
  57. package/lib/cjs/reflectMetadata/data/classMetadataReflectKey.js.map +1 -0
  58. package/lib/esm/index.js +2 -8
  59. package/lib/esm/metadata/actions/updateMaybeClassMetadataConstructorArgument.d.ts +4 -0
  60. package/lib/esm/metadata/actions/updateMaybeClassMetadataConstructorArgument.d.ts.map +1 -0
  61. package/lib/esm/metadata/actions/updateMaybeClassMetadataConstructorArgument.spec.d.ts.map +1 -0
  62. package/lib/esm/metadata/actions/updateMaybeClassMetadataProperty.d.ts +4 -0
  63. package/lib/esm/metadata/actions/updateMaybeClassMetadataProperty.d.ts.map +1 -0
  64. package/lib/esm/metadata/actions/updateMaybeClassMetadataProperty.spec.d.ts.map +1 -0
  65. package/lib/esm/metadata/calculations/assertConstructorMetadataArrayFilled.d.ts +4 -0
  66. package/lib/esm/metadata/calculations/assertConstructorMetadataArrayFilled.d.ts.map +1 -0
  67. package/lib/esm/metadata/calculations/assertConstructorMetadataArrayFilled.spec.d.ts.map +1 -0
  68. package/lib/esm/metadata/calculations/getClassMetadataConstructorArguments.d.ts.map +1 -1
  69. package/lib/esm/metadata/calculations/getClassMetadataConstructorArgumentsFromMetadataReader.d.ts.map +1 -1
  70. package/lib/esm/metadata/calculations/getDefaultClassMetadata.d.ts +3 -0
  71. package/lib/esm/metadata/calculations/getDefaultClassMetadata.d.ts.map +1 -0
  72. package/lib/esm/metadata/calculations/getDefaultClassMetadata.spec.d.ts.map +1 -0
  73. package/lib/esm/metadata/decorators/injectBase.d.ts +4 -0
  74. package/lib/esm/metadata/decorators/injectBase.d.ts.map +1 -0
  75. package/lib/esm/metadata/decorators/injectBase.spec.d.ts.map +1 -0
  76. package/lib/esm/metadata/models/BaseClassElementMetadata.d.ts +1 -2
  77. package/lib/esm/metadata/models/BaseClassElementMetadata.d.ts.map +1 -1
  78. package/lib/esm/metadata/models/ManagedClassElementMetadata.d.ts +1 -1
  79. package/lib/esm/metadata/models/ManagedClassElementMetadata.d.ts.map +1 -1
  80. package/lib/esm/metadata/models/MaybeClassElementMetadata.d.ts +5 -0
  81. package/lib/esm/metadata/models/MaybeClassElementMetadata.d.ts.map +1 -0
  82. package/lib/esm/metadata/models/MaybeClassElementMetadataKind.d.ts +4 -0
  83. package/lib/esm/metadata/models/MaybeClassElementMetadataKind.d.ts.map +1 -0
  84. package/lib/esm/metadata/models/MaybeClassMetadata.d.ts +8 -0
  85. package/lib/esm/metadata/models/MaybeClassMetadata.d.ts.map +1 -0
  86. package/lib/esm/metadata/models/MaybeManagedClassElementMetadata.d.ts +14 -0
  87. package/lib/esm/metadata/models/MaybeManagedClassElementMetadata.d.ts.map +1 -0
  88. package/lib/esm/reflectMetadata/data/classMetadataReflectKey.d.ts +2 -0
  89. package/lib/esm/reflectMetadata/data/classMetadataReflectKey.d.ts.map +1 -0
  90. package/package.json +14 -7
  91. package/tsconfig.cjs.tsbuildinfo +1 -1
  92. package/webpack.config.mjs +13 -0
  93. package/lib/esm/error/models/InversifyCoreError.js +0 -19
  94. package/lib/esm/error/models/InversifyCoreError.js.map +0 -1
  95. package/lib/esm/error/models/InversifyCoreErrorKind.js +0 -6
  96. package/lib/esm/error/models/InversifyCoreErrorKind.js.map +0 -1
  97. package/lib/esm/index.js.map +0 -1
  98. package/lib/esm/legacyTarget/calculations/getTargetId.js +0 -13
  99. package/lib/esm/legacyTarget/calculations/getTargetId.js.map +0 -1
  100. package/lib/esm/legacyTarget/calculations/getTargets.js +0 -15
  101. package/lib/esm/legacyTarget/calculations/getTargets.js.map +0 -1
  102. package/lib/esm/legacyTarget/calculations/getTargetsFromMetadataProviders.js +0 -33
  103. package/lib/esm/legacyTarget/calculations/getTargetsFromMetadataProviders.js.map +0 -1
  104. package/lib/esm/legacyTarget/models/LegacyTarget.js +0 -2
  105. package/lib/esm/legacyTarget/models/LegacyTarget.js.map +0 -1
  106. package/lib/esm/legacyTarget/models/LegacyTargetImpl.js +0 -91
  107. package/lib/esm/legacyTarget/models/LegacyTargetImpl.js.map +0 -1
  108. package/lib/esm/legacyTarget/models/LegacyTargetType.js +0 -2
  109. package/lib/esm/legacyTarget/models/LegacyTargetType.js.map +0 -1
  110. package/lib/esm/metadata/calculations/getClassElementMetadataFromLegacyMetadata.js +0 -45
  111. package/lib/esm/metadata/calculations/getClassElementMetadataFromLegacyMetadata.js.map +0 -1
  112. package/lib/esm/metadata/calculations/getClassElementMetadataFromNewable.js +0 -12
  113. package/lib/esm/metadata/calculations/getClassElementMetadataFromNewable.js.map +0 -1
  114. package/lib/esm/metadata/calculations/getClassMetadata.js +0 -18
  115. package/lib/esm/metadata/calculations/getClassMetadata.js.map +0 -1
  116. package/lib/esm/metadata/calculations/getClassMetadataConstructorArguments.js +0 -27
  117. package/lib/esm/metadata/calculations/getClassMetadataConstructorArguments.js.map +0 -1
  118. package/lib/esm/metadata/calculations/getClassMetadataConstructorArgumentsFromMetadataReader.js +0 -23
  119. package/lib/esm/metadata/calculations/getClassMetadataConstructorArgumentsFromMetadataReader.js.map +0 -1
  120. package/lib/esm/metadata/calculations/getClassMetadataFromMetadataReader.js +0 -18
  121. package/lib/esm/metadata/calculations/getClassMetadataFromMetadataReader.js.map +0 -1
  122. package/lib/esm/metadata/calculations/getClassMetadataProperties.js +0 -15
  123. package/lib/esm/metadata/calculations/getClassMetadataProperties.js.map +0 -1
  124. package/lib/esm/metadata/calculations/getClassMetadataPropertiesFromMetadataReader.js +0 -11
  125. package/lib/esm/metadata/calculations/getClassMetadataPropertiesFromMetadataReader.js.map +0 -1
  126. package/lib/esm/metadata/calculations/getConstructorArgumentMetadataFromLegacyMetadata.js +0 -17
  127. package/lib/esm/metadata/calculations/getConstructorArgumentMetadataFromLegacyMetadata.js.map +0 -1
  128. package/lib/esm/metadata/calculations/getLegacyMetadata.js +0 -67
  129. package/lib/esm/metadata/calculations/getLegacyMetadata.js.map +0 -1
  130. package/lib/esm/metadata/calculations/getPropertyMetadataFromLegacyMetadata.js +0 -17
  131. package/lib/esm/metadata/calculations/getPropertyMetadataFromLegacyMetadata.js.map +0 -1
  132. package/lib/esm/metadata/models/BaseClassElementMetadata.js +0 -2
  133. package/lib/esm/metadata/models/BaseClassElementMetadata.js.map +0 -1
  134. package/lib/esm/metadata/models/ClassElementMetadata.js +0 -2
  135. package/lib/esm/metadata/models/ClassElementMetadata.js.map +0 -1
  136. package/lib/esm/metadata/models/ClassElementMetadataKind.js +0 -7
  137. package/lib/esm/metadata/models/ClassElementMetadataKind.js.map +0 -1
  138. package/lib/esm/metadata/models/ClassMetadata.js +0 -2
  139. package/lib/esm/metadata/models/ClassMetadata.js.map +0 -1
  140. package/lib/esm/metadata/models/ClassMetadataLifecycle.js +0 -2
  141. package/lib/esm/metadata/models/ClassMetadataLifecycle.js.map +0 -1
  142. package/lib/esm/metadata/models/LegacyConstructorMetadata.js +0 -2
  143. package/lib/esm/metadata/models/LegacyConstructorMetadata.js.map +0 -1
  144. package/lib/esm/metadata/models/LegacyMetadata.js +0 -2
  145. package/lib/esm/metadata/models/LegacyMetadata.js.map +0 -1
  146. package/lib/esm/metadata/models/LegacyMetadataMap.js +0 -2
  147. package/lib/esm/metadata/models/LegacyMetadataMap.js.map +0 -1
  148. package/lib/esm/metadata/models/LegacyMetadataReader.js +0 -2
  149. package/lib/esm/metadata/models/LegacyMetadataReader.js.map +0 -1
  150. package/lib/esm/metadata/models/ManagedClassElementMetadata.js +0 -2
  151. package/lib/esm/metadata/models/ManagedClassElementMetadata.js.map +0 -1
  152. package/lib/esm/metadata/models/MetadataName.js +0 -2
  153. package/lib/esm/metadata/models/MetadataName.js.map +0 -1
  154. package/lib/esm/metadata/models/MetadataTag.js +0 -2
  155. package/lib/esm/metadata/models/MetadataTag.js.map +0 -1
  156. package/lib/esm/metadata/models/MetadataTargetName.js +0 -2
  157. package/lib/esm/metadata/models/MetadataTargetName.js.map +0 -1
  158. package/lib/esm/metadata/models/UnmanagedClassElementMetadata.js +0 -2
  159. package/lib/esm/metadata/models/UnmanagedClassElementMetadata.js.map +0 -1
  160. package/lib/esm/prototype/calculations/getBaseType.js +0 -6
  161. package/lib/esm/prototype/calculations/getBaseType.js.map +0 -1
  162. package/lib/esm/prototype/models/Prototype.js +0 -2
  163. package/lib/esm/prototype/models/Prototype.js.map +0 -1
  164. package/lib/esm/reflectMetadata/data/keys.js +0 -35
  165. package/lib/esm/reflectMetadata/data/keys.js.map +0 -1
  166. package/lib/esm/string/models/LegacyQueryableString.js +0 -2
  167. package/lib/esm/string/models/LegacyQueryableString.js.map +0 -1
  168. package/lib/esm/string/models/LegacyQueryableStringImpl.js +0 -22
  169. package/lib/esm/string/models/LegacyQueryableStringImpl.js.map +0 -1
  170. package/lib/esm/symbol/calculations/getDescription.js +0 -6
  171. package/lib/esm/symbol/calculations/getDescription.js.map +0 -1
  172. package/tsconfig.esm.tsbuildinfo +0 -1
@@ -5,10 +5,10 @@ import { MetadataName } from './MetadataName';
5
5
  import { MetadataTag } from './MetadataTag';
6
6
  import { MetadataTargetName } from './MetadataTargetName';
7
7
  export interface ManagedClassElementMetadata extends BaseClassElementMetadata<ClassElementMetadataKind.singleInjection | ClassElementMetadataKind.multipleInjection> {
8
- value: ServiceIdentifier | LazyServiceIdentifier;
9
8
  name: MetadataName | undefined;
10
9
  optional: boolean;
11
10
  tags: Map<MetadataTag, unknown>;
12
11
  targetName: MetadataTargetName | undefined;
12
+ value: ServiceIdentifier | LazyServiceIdentifier;
13
13
  }
14
14
  //# sourceMappingURL=ManagedClassElementMetadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ManagedClassElementMetadata.d.ts","sourceRoot":"","sources":["../../../../src/metadata/models/ManagedClassElementMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,2BACf,SAAQ,wBAAwB,CAC5B,wBAAwB,CAAC,eAAe,GACxC,wBAAwB,CAAC,iBAAiB,CAC7C;IACD,KAAK,EAAE,iBAAiB,GAAG,qBAAqB,CAAC;IACjD,IAAI,EAAE,YAAY,GAAG,SAAS,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAChC,UAAU,EAAE,kBAAkB,GAAG,SAAS,CAAC;CAC5C"}
1
+ {"version":3,"file":"ManagedClassElementMetadata.d.ts","sourceRoot":"","sources":["../../../../src/metadata/models/ManagedClassElementMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,2BACf,SAAQ,wBAAwB,CAC5B,wBAAwB,CAAC,eAAe,GACxC,wBAAwB,CAAC,iBAAiB,CAC7C;IACD,IAAI,EAAE,YAAY,GAAG,SAAS,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAChC,UAAU,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAC3C,KAAK,EAAE,iBAAiB,GAAG,qBAAqB,CAAC;CAClD"}
@@ -0,0 +1,5 @@
1
+ import { ManagedClassElementMetadata } from './ManagedClassElementMetadata';
2
+ import { MaybeManagedClassElementMetadata } from './MaybeManagedClassElementMetadata';
3
+ import { UnmanagedClassElementMetadata } from './UnmanagedClassElementMetadata';
4
+ export type MaybeClassElementMetadata = ManagedClassElementMetadata | MaybeManagedClassElementMetadata | UnmanagedClassElementMetadata;
5
+ //# sourceMappingURL=MaybeClassElementMetadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaybeClassElementMetadata.d.ts","sourceRoot":"","sources":["../../../../src/metadata/models/MaybeClassElementMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAEhF,MAAM,MAAM,yBAAyB,GACjC,2BAA2B,GAC3B,gCAAgC,GAChC,6BAA6B,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=MaybeClassElementMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaybeClassElementMetadata.js","sourceRoot":"","sources":["../../../../src/metadata/models/MaybeClassElementMetadata.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export declare enum MaybeClassElementMetadataKind {
2
+ unknown = 0
3
+ }
4
+ //# sourceMappingURL=MaybeClassElementMetadataKind.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaybeClassElementMetadataKind.d.ts","sourceRoot":"","sources":["../../../../src/metadata/models/MaybeClassElementMetadataKind.ts"],"names":[],"mappings":"AAAA,oBAAY,6BAA6B;IACvC,OAAO,IAAA;CACR"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MaybeClassElementMetadataKind = void 0;
4
+ var MaybeClassElementMetadataKind;
5
+ (function (MaybeClassElementMetadataKind) {
6
+ MaybeClassElementMetadataKind[MaybeClassElementMetadataKind["unknown"] = 0] = "unknown";
7
+ })(MaybeClassElementMetadataKind || (exports.MaybeClassElementMetadataKind = MaybeClassElementMetadataKind = {}));
8
+ //# sourceMappingURL=MaybeClassElementMetadataKind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaybeClassElementMetadataKind.js","sourceRoot":"","sources":["../../../../src/metadata/models/MaybeClassElementMetadataKind.ts"],"names":[],"mappings":";;;AAAA,IAAY,6BAEX;AAFD,WAAY,6BAA6B;IACvC,uFAAO,CAAA;AACT,CAAC,EAFW,6BAA6B,6CAA7B,6BAA6B,QAExC"}
@@ -0,0 +1,8 @@
1
+ import { ClassMetadataLifecycle } from './ClassMetadataLifecycle';
2
+ import { MaybeClassElementMetadata } from './MaybeClassElementMetadata';
3
+ export interface MaybeClassMetadata {
4
+ constructorArguments: MaybeClassElementMetadata[];
5
+ lifecycle: ClassMetadataLifecycle;
6
+ properties: Map<string | symbol, MaybeClassElementMetadata>;
7
+ }
8
+ //# sourceMappingURL=MaybeClassMetadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaybeClassMetadata.d.ts","sourceRoot":"","sources":["../../../../src/metadata/models/MaybeClassMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE,MAAM,WAAW,kBAAkB;IACjC,oBAAoB,EAAE,yBAAyB,EAAE,CAAC;IAClD,SAAS,EAAE,sBAAsB,CAAC;IAClC,UAAU,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,yBAAyB,CAAC,CAAC;CAC7D"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=MaybeClassMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaybeClassMetadata.js","sourceRoot":"","sources":["../../../../src/metadata/models/MaybeClassMetadata.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { LazyServiceIdentifier, ServiceIdentifier } from '@inversifyjs/common';
2
+ import { BaseClassElementMetadata } from './BaseClassElementMetadata';
3
+ import { MaybeClassElementMetadataKind } from './MaybeClassElementMetadataKind';
4
+ import { MetadataName } from './MetadataName';
5
+ import { MetadataTag } from './MetadataTag';
6
+ import { MetadataTargetName } from './MetadataTargetName';
7
+ export interface MaybeManagedClassElementMetadata extends BaseClassElementMetadata<MaybeClassElementMetadataKind.unknown> {
8
+ name: MetadataName | undefined;
9
+ optional: boolean | undefined;
10
+ tags: Map<MetadataTag, unknown>;
11
+ targetName: MetadataTargetName | undefined;
12
+ value: ServiceIdentifier | LazyServiceIdentifier | undefined;
13
+ }
14
+ //# sourceMappingURL=MaybeManagedClassElementMetadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaybeManagedClassElementMetadata.d.ts","sourceRoot":"","sources":["../../../../src/metadata/models/MaybeManagedClassElementMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,gCACf,SAAQ,wBAAwB,CAAC,6BAA6B,CAAC,OAAO,CAAC;IACvE,IAAI,EAAE,YAAY,GAAG,SAAS,CAAC;IAC/B,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,IAAI,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAChC,UAAU,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAC3C,KAAK,EAAE,iBAAiB,GAAG,qBAAqB,GAAG,SAAS,CAAC;CAC9D"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=MaybeManagedClassElementMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaybeManagedClassElementMetadata.js","sourceRoot":"","sources":["../../../../src/metadata/models/MaybeManagedClassElementMetadata.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare const classMetadataReflectKey: string;
2
+ //# sourceMappingURL=classMetadataReflectKey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classMetadataReflectKey.d.ts","sourceRoot":"","sources":["../../../../src/reflectMetadata/data/classMetadataReflectKey.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,EAAE,MACO,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.classMetadataReflectKey = void 0;
4
+ exports.classMetadataReflectKey = '@inversifyjs/core/classMetadataReflectKey';
5
+ //# sourceMappingURL=classMetadataReflectKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classMetadataReflectKey.js","sourceRoot":"","sources":["../../../../src/reflectMetadata/data/classMetadataReflectKey.ts"],"names":[],"mappings":";;;AAAa,QAAA,uBAAuB,GAClC,2CAA2C,CAAC"}
package/lib/esm/index.js CHANGED
@@ -1,8 +1,2 @@
1
- import { getTargets } from './legacyTarget/calculations/getTargets';
2
- import { LegacyTargetImpl } from './legacyTarget/models/LegacyTargetImpl';
3
- import { getClassElementMetadataFromLegacyMetadata } from './metadata/calculations/getClassElementMetadataFromLegacyMetadata';
4
- import { getClassMetadata } from './metadata/calculations/getClassMetadata';
5
- import { getClassMetadataFromMetadataReader } from './metadata/calculations/getClassMetadataFromMetadataReader';
6
- import { ClassElementMetadataKind } from './metadata/models/ClassElementMetadataKind';
7
- export { ClassElementMetadataKind, getClassElementMetadataFromLegacyMetadata, getClassMetadata, getClassMetadataFromMetadataReader, getTargets, LegacyTargetImpl, };
8
- //# sourceMappingURL=index.js.map
1
+ import*as t from"@inversifyjs/reflect-metadata-utils";import*as e from"@inversifyjs/common";var a={d:(t,e)=>{for(var n in e)a.o(e,n)&&!a.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},n={};a.d(n,{Uo:()=>k,zN:()=>G,YR:()=>R,QN:()=>z,wK:()=>x,N3:()=>$});const r=(y={getReflectMetadata:()=>t.getReflectMetadata,updateReflectMetadata:()=>t.updateReflectMetadata},v={},a.d(v,y),v),i="named",o="name",s="unmanaged",c="optional",d="inject",u="multi_inject",l="inversify:tagged",m="inversify:tagged_props",f="design:paramtypes",g="post_construct",p="pre_destroy";var y,v;const h=[d,u,o,s,i,c],j=Symbol.for("@inversifyjs/core/InversifyCoreError");class M extends Error{[j];kind;constructor(t,e,a){super(e,a),this[j]=!0,this.kind=t}static is(t){return"object"==typeof t&&null!==t&&!0===t[j]}static isErrorOfKind(t,e){return M.is(t)&&t.kind===e}}var I,k;function w(t,e){const a=[];for(let t=0;t<e.length;++t)void 0===e[t]&&a.push(t);if(a.length>0)throw new M(I.missingInjectionDecorator,`Found unexpected missing metadata on type "${t.name}" at constructor indexes "${a.join('", "')}".\n\nAre you using @inject, @multiInject or @unmanaged decorators at those indexes?\n\nIf you're using typescript and want to rely on auto injection, set "emitDecoratorMetadata" compiler option to true`)}function N(t){return{kind:k.singleInjection,name:void 0,optional:!1,tags:new Map,targetName:void 0,value:t}}function R(t){const e=t.find((t=>t.key===d)),a=t.find((t=>t.key===u));if(void 0!==t.find((t=>t.key===s)))return function(t,e){if(void 0!==e||void 0!==t)throw new M(I.missingInjectionDecorator,"Expected a single @inject, @multiInject or @unmanaged metadata");return{kind:k.unmanaged}}(e,a);if(void 0===a&&void 0===e)throw new M(I.missingInjectionDecorator,"Expected @inject, @multiInject or @unmanaged metadata");const n=t.find((t=>t.key===i)),r=t.find((t=>t.key===c)),l=t.find((t=>t.key===o));return{kind:void 0===e?k.multipleInjection:k.singleInjection,name:n?.value,optional:void 0!==r,tags:new Map(t.filter((t=>h.every((e=>t.key!==e)))).map((t=>[t.key,t.value]))),targetName:l?.value,value:void 0===e?a?.value:e.value}}function E(t,e,a){try{return R(a)}catch(a){throw M.isErrorOfKind(a,I.missingInjectionDecorator)?new M(I.missingInjectionDecorator,`Expected a single @inject, @multiInject or @unmanaged decorator at type "${t.name}" at constructor arguments at index "${e.toString()}"`,{cause:a}):a}}function b(t){const e=(0,r.getReflectMetadata)(t,f),a=(0,r.getReflectMetadata)(t,l),n=[];if(void 0!==a)for(const[e,r]of Object.entries(a)){const a=parseInt(e);n[a]=E(t,a,r)}if(void 0!==e)for(let t=0;t<e.length;++t)if(void 0===n[t]){const a=e[t];n[t]=N(a)}return w(t,n),n}function O(t,e,a){try{return R(a)}catch(a){throw M.isErrorOfKind(a,I.missingInjectionDecorator)?new M(I.missingInjectionDecorator,`Expected a single @inject, @multiInject or @unmanaged decorator at type "${t.name}" at property "${e.toString()}"`,{cause:a}):a}}function D(t){const e=(0,r.getReflectMetadata)(t,m),a=new Map;if(void 0!==e)for(const n of Reflect.ownKeys(e)){const r=e[n];a.set(n,O(t,n,r))}return a}function z(t){const e=(0,r.getReflectMetadata)(t,g),a=(0,r.getReflectMetadata)(t,p);return{constructorArguments:b(t),lifecycle:{postConstructMethodName:e?.value,preDestroyMethodName:a?.value},properties:D(t)}}function A(t,e){const a=e.getConstructorMetadata(t),n=[];for(const[e,r]of Object.entries(a.userGeneratedMetadata)){const a=parseInt(e);n[a]=E(t,a,r)}if(void 0!==a.compilerGeneratedMetadata)for(let t=0;t<a.compilerGeneratedMetadata.length;++t)if(void 0===n[t]){const e=a.compilerGeneratedMetadata[t];n[t]=N(e)}return w(t,n),n}function C(t,e){const a=e.getPropertiesMetadata(t),n=new Map;for(const e of Reflect.ownKeys(a)){const r=a[e];n.set(e,O(t,e,r))}return n}function x(t,e){const a=(0,r.getReflectMetadata)(t,g),n=(0,r.getReflectMetadata)(t,p);return{constructorArguments:A(t,e),lifecycle:{postConstructMethodName:a?.value,preDestroyMethodName:n?.value},properties:C(t,e)}}function L(t){const e=Object.getPrototypeOf(t.prototype),a=e?.constructor;return a}!function(t){t[t.missingInjectionDecorator=0]="missingInjectionDecorator",t[t.unknown=1]="unknown"}(I||(I={})),function(t){t[t.multipleInjection=0]="multipleInjection",t[t.singleInjection=1]="singleInjection",t[t.unmanaged=2]="unmanaged"}(k||(k={}));const T=(t=>{var e={};return a.d(e,t),e})({LazyServiceIdentifier:()=>e.LazyServiceIdentifier});function S(t){let e;switch(t.kind){case k.multipleInjection:e={key:u,value:t.value};break;case k.singleInjection:e={key:d,value:t.value}}return e}class K{#t;constructor(t){this.#t=t}startsWith(t){return this.#t.startsWith(t)}endsWith(t){return this.#t.endsWith(t)}contains(t){return this.#t.includes(t)}equals(t){return this.#t===t}value(){return this.#t}}const _="@inversifyjs/core/targetId";class G{#e;#a;#n;#r;#i;#o;constructor(t,e,a){this.#a=function(){const t=(0,r.getReflectMetadata)(Object,_)??0;return t===Number.MAX_SAFE_INTEGER?(0,r.updateReflectMetadata)(Object,_,t,(()=>Number.MIN_SAFE_INTEGER)):(0,r.updateReflectMetadata)(Object,_,t,(t=>t+1)),t}(),this.#n=t,this.#r=void 0,this.#e=e,this.#i=new K("string"==typeof t?t:t.toString().slice(7,-1)),this.#o=a}get id(){return this.#a}get identifier(){return this.#n}get metadata(){return void 0===this.#r&&(this.#r=(t=this.#e).kind===k.unmanaged?[{key:s,value:!0}]:function(t){const e=[S(t)];void 0!==t.name&&e.push({key:i,value:t.name}),t.optional&&e.push({key:c,value:!0});for(const[a,n]of t.tags)e.push({key:a,value:n});return void 0!==t.targetName&&e.push({key:o,value:t.targetName}),e}(t)),this.#r;var t}get name(){return this.#i}get type(){return this.#o}get serviceIdentifier(){return T.LazyServiceIdentifier.is(this.#e.value)?this.#e.value.unwrap():this.#e.value}getCustomTags(){return[...this.#e.tags.entries()].map((([t,e])=>({key:t,value:e})))}getNamedTag(){return void 0===this.#e.name?null:{key:i,value:this.#e.name}}hasTag(t){return this.metadata.some((e=>e.key===t))}isArray(){return this.#e.kind===k.multipleInjection}isNamed(){return void 0!==this.#e.name}isOptional(){return this.#e.optional}isTagged(){return this.#e.tags.size>0}matchesArray(t){return this.isArray()&&this.#e.value===t}matchesNamedTag(t){return this.#e.name===t}matchesTag(t){return e=>this.metadata.some((a=>a.key===t&&a.value===e))}}const $=t=>function(t,e){return function(a){const n=t(a);let r=L(a);for(;void 0!==r&&r!==Object;){const t=e(r);for(const[e,a]of t)n.properties.has(e)||n.properties.set(e,a);r=L(r)}const i=[];for(const t of n.constructorArguments)if(t.kind!==k.unmanaged){const e=t.targetName??"";i.push(new G(e,t,"ConstructorArgument"))}for(const[t,e]of n.properties)if(e.kind!==k.unmanaged){const a=e.targetName??t;i.push(new G(a,e,"ClassProperty"))}return i}}(void 0===t?z:e=>x(e,t),void 0===t?D:e=>C(e,t));var F=n.Uo,P=n.zN,W=n.YR,Q=n.QN,U=n.wK,Y=n.N3;export{F as ClassElementMetadataKind,P as LegacyTargetImpl,W as getClassElementMetadataFromLegacyMetadata,Q as getClassMetadata,U as getClassMetadataFromMetadataReader,Y as getTargets};
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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SyxNQUFNMEgsRUFHWHRELEdDTkssU0FDTFQsRUFDQVIsR0FJQSxPQUFPLFNBQW1COUMsR0FDeEIsTUFBTXNILEVBQStCaEUsRUFBaUJ0RCxHQUV0RCxJQUFJeUUsRUFBZ0NGLEVBQVl2RSxHQUVoRCxVQUFvQkksSUFBYnFFLEdBQTBCQSxJQUFhbkgsUUFBUSxDQUNwRCxNQUFNaUssRUFHRnpFLEVBQTJCMkIsR0FFL0IsSUFBSyxNQUFPK0MsRUFBYUMsS0FBa0JGLEVBQ3BDRCxFQUFjekQsV0FBVzZELElBQUlGLElBQ2hDRixFQUFjekQsV0FBV1IsSUFBSW1FLEVBQWFDLEdBSTlDaEQsRUFBV0YsRUFBWUUsRUFDekIsQ0FFQSxNQUFNa0QsRUFBMEIsR0FFaEMsSUFBSyxNQUFNQyxLQUF1Qk4sRUFBYzdELHFCQUM5QyxHQUFJbUUsRUFBb0J4SSxPQUFTVSxFQUF5QnVCLFVBQVcsQ0FDbkUsTUFBTVAsRUFBcUI4RyxFQUFvQjlHLFlBQWMsR0FFN0Q2RyxFQUFRdEgsS0FDTixJQUFJbUYsRUFDRjFFLEVBQ0E4RyxFQUNBLHVCQUdOLENBR0YsSUFBSyxNQUFPM0UsRUFBVTlCLEtBQWFtRyxFQUFjekQsV0FDL0MsR0FBSTFDLEVBQVMvQixPQUFTVSxFQUF5QnVCLFVBQVcsQ0FDeEQsTUFBTVAsRUFBOEJLLEVBQVNMLFlBQWNtQyxFQUUzRDBFLEVBQVF0SCxLQUNOLElBQUltRixFQUFpQjFFLEVBQVlLLEVBQVUsaUJBRS9DLENBR0YsT0FBT3dHLENBQ1QsQ0FDRixDRGpDU0UsTUFaY3pILElBQW5CMkQsRUFDSVQsRUFDQ3RELEdBQ0NzRSxFQUFtQ3RFLEVBQU0rRCxRQUk1QjNELElBQW5CMkQsRUFDSWpCLEVBQ0M5QyxHQUNDb0UsRUFBNkNwRSxFQUFNK0QsSSIsInNvdXJjZXMiOlsid2VicGFjazovL0BpbnZlcnNpZnlqcy9jb3JlL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL0BpbnZlcnNpZnlqcy9jb3JlL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9AaW52ZXJzaWZ5anMvY29yZS93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL0BpbnZlcnNpZnlqcy9jb3JlL2V4dGVybmFsIG1vZHVsZSBcIkBpbnZlcnNpZnlqcy9yZWZsZWN0LW1ldGFkYXRhLXV0aWxzXCIiLCJ3ZWJwYWNrOi8vQGludmVyc2lmeWpzL2NvcmUvLi9zcmMvcmVmbGVjdE1ldGFkYXRhL2RhdGEva2V5cy50cyIsIndlYnBhY2s6Ly9AaW52ZXJzaWZ5anMvY29yZS8uL3NyYy9lcnJvci9tb2RlbHMvSW52ZXJzaWZ5Q29yZUVycm9yLnRzIiwid2VicGFjazovL0BpbnZlcnNpZnlqcy9jb3JlLy4vc3JjL2Vycm9yL21vZGVscy9JbnZlcnNpZnlDb3JlRXJyb3JLaW5kLnRzIiwid2VicGFjazovL0BpbnZlcnNpZnlqcy9jb3JlLy4vc3JjL21ldGFkYXRhL21vZGVscy9DbGFzc0VsZW1lbnRNZXRhZGF0YUtpbmQudHMiLCJ3ZWJwYWNrOi8vQGludmVyc2lmeWpzL2NvcmUvLi9zcmMvbWV0YWRhdGEvY2FsY3VsYXRpb25zL2Fzc2VydENvbnN0cnVjdG9yTWV0YWRhdGFBcnJheUZpbGxlZC50cyIsIndlYnBhY2s6Ly9AaW52ZXJzaWZ5anMvY29yZS8uL3NyYy9tZXRhZGF0YS9jYWxjdWxhdGlvbnMvZ2V0Q2xhc3NFbGVtZW50TWV0YWRhdGFGcm9tTmV3YWJsZS50cyIsIndlYnBhY2s6Ly9AaW52ZXJzaWZ5anMvY29yZS8uL3NyYy9tZXRhZGF0YS9jYWxjdWxhdGlvbnMvZ2V0Q2xhc3NFbGVtZW50TWV0YWRhdGFGcm9tTGVnYWN5TWV0YWRhdGEudHMiLCJ3ZWJwYWNrOi8vQGludmVyc2lmeWpzL2NvcmUvLi9zcmMvbWV0YWRhdGEvY2FsY3VsYXRpb25zL2dldENvbnN0cnVjdG9yQXJndW1lbnRNZXRhZGF0YUZyb21MZWdhY3lNZXRhZGF0YS50cyIsIndlYnBhY2s6Ly9AaW52ZXJzaWZ5anMvY29yZS8uL3NyYy9tZXRhZGF0YS9jYWxjdWxhdGlvbnMvZ2V0Q2xhc3NNZXRhZGF0YUNvbnN0cnVjdG9yQXJndW1lbnRzLnRzIiwid2VicGFjazovL0BpbnZlcnNpZnlqcy9jb3JlLy4vc3JjL21ldGFkYXRhL2NhbGN1bGF0aW9ucy9nZXRQcm9wZXJ0eU1ldGFkYXRhRnJvbUxlZ2FjeU1ldGFkYXRhLnRzIiwid2VicGFjazovL0BpbnZlcnNpZnlqcy9jb3JlLy4vc3JjL21ldGFkYXRhL2NhbGN1bGF0aW9ucy9nZXRDbGFzc01ldGFkYXRhUHJvcGVydGllcy50cyIsIndlYnBhY2s6Ly9AaW52ZXJzaWZ5anMvY29yZS8uL3NyYy9tZXRhZGF0YS9jYWxjdWxhdGlvbnMvZ2V0Q2xhc3NNZXRhZGF0YS50cyIsIndlYnBhY2s6Ly9AaW52ZXJzaWZ5anMvY29yZS8uL3NyYy9tZXRhZGF0YS9jYWxjdWxhdGlvbnMvZ2V0Q2xhc3NNZXRhZGF0YUNvbnN0cnVjdG9yQXJndW1lbnRzRnJvbU1ldGFkYXRhUmVhZGVyLnRzIiwid2VicGFjazovL0BpbnZlcnNpZnlqcy9jb3JlLy4vc3JjL21ldGFkYXRhL2NhbGN1bGF0aW9ucy9nZXRDbGFzc01ldGFkYXRhUHJvcGVydGllc0Zyb21NZXRhZGF0YVJlYWRlci50cyIsIndlYnBhY2s6Ly9AaW52ZXJzaWZ5anMvY29yZS8uL3NyYy9tZXRhZGF0YS9jYWxjdWxhdGlvbnMvZ2V0Q2xhc3NNZXRhZGF0YUZyb21NZXRhZGF0YVJlYWRlci50cyIsIndlYnBhY2s6Ly9AaW52ZXJzaWZ5anMvY29yZS8uL3NyYy9wcm90b3R5cGUvY2FsY3VsYXRpb25zL2dldEJhc2VUeXBlLnRzIiwid2VicGFjazovL0BpbnZlcnNpZnlqcy9jb3JlL2V4dGVybmFsIG1vZHVsZSBcIkBpbnZlcnNpZnlqcy9jb21tb25cIiIsIndlYnBhY2s6Ly9AaW52ZXJzaWZ5anMvY29yZS8uL3NyYy9tZXRhZGF0YS9jYWxjdWxhdGlvbnMvZ2V0TGVnYWN5TWV0YWRhdGEudHMiLCJ3ZWJwYWNrOi8vQGludmVyc2lmeWpzL2NvcmUvLi9zcmMvc3RyaW5nL21vZGVscy9MZWdhY3lRdWVyeWFibGVTdHJpbmdJbXBsLnRzIiwid2VicGFjazovL0BpbnZlcnNpZnlqcy9jb3JlLy4vc3JjL2xlZ2FjeVRhcmdldC9jYWxjdWxhdGlvbnMvZ2V0VGFyZ2V0SWQudHMiLCJ3ZWJwYWNrOi8vQGludmVyc2lmeWpzL2NvcmUvLi9zcmMvbGVnYWN5VGFyZ2V0L21vZGVscy9MZWdhY3lUYXJnZXRJbXBsLnRzIiwid2VicGFjazovL0BpbnZlcnNpZnlqcy9jb3JlLy4vc3JjL3N5bWJvbC9jYWxjdWxhdGlvbnMvZ2V0RGVzY3JpcHRpb24udHMiLCJ3ZWJwYWNrOi8vQGludmVyc2lmeWpzL2NvcmUvLi9zcmMvbGVnYWN5VGFyZ2V0L2NhbGN1bGF0aW9ucy9nZXRUYXJnZXRzLnRzIiwid2VicGFjazovL0BpbnZlcnNpZnlqcy9jb3JlLy4vc3JjL2xlZ2FjeVRhcmdldC9jYWxjdWxhdGlvbnMvZ2V0VGFyZ2V0c0Zyb21NZXRhZGF0YVByb3ZpZGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGUgcmVxdWlyZSBzY29wZVxudmFyIF9fd2VicGFja19yZXF1aXJlX18gPSB7fTtcblxuIiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsInZhciB4ID0gKHkpID0+IHtcblx0dmFyIHggPSB7fTsgX193ZWJwYWNrX3JlcXVpcmVfXy5kKHgsIHkpOyByZXR1cm4geFxufSBcbnZhciB5ID0gKHgpID0+ICgoKSA9PiAoeCkpXG5jb25zdCBfX1dFQlBBQ0tfTkFNRVNQQUNFX09CSkVDVF9fID0geCh7IFtcImdldFJlZmxlY3RNZXRhZGF0YVwiXTogKCkgPT4gKF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfX2ludmVyc2lmeWpzX3JlZmxlY3RfbWV0YWRhdGFfdXRpbHNfOGVjYzRjMTZfXy5nZXRSZWZsZWN0TWV0YWRhdGEpLCBbXCJ1cGRhdGVSZWZsZWN0TWV0YWRhdGFcIl06ICgpID0+IChfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX19pbnZlcnNpZnlqc19yZWZsZWN0X21ldGFkYXRhX3V0aWxzXzhlY2M0YzE2X18udXBkYXRlUmVmbGVjdE1ldGFkYXRhKSB9KTsiLCIvLyBVc2VkIGZvciBuYW1lZCBiaW5kaW5nc1xuZXhwb3J0IGNvbnN0IE5BTUVEX1RBRzogc3RyaW5nID0gJ25hbWVkJztcblxuZXhwb3J0IGNvbnN0IE5BTUVfVEFHOiBzdHJpbmcgPSAnbmFtZSc7XG5cbi8vIFRoZSBmb3IgdW5tYW5hZ2VkIGluamVjdGlvbnMgKGluIGJhc2UgY2xhc3NlcyB3aGVuIHVzaW5nIGluaGVyaXRhbmNlKVxuZXhwb3J0IGNvbnN0IFVOTUFOQUdFRF9UQUc6IHN0cmluZyA9ICd1bm1hbmFnZWQnO1xuXG4vLyBUaGUgZm9yIG9wdGlvbmFsIGluamVjdGlvbnNcbmV4cG9ydCBjb25zdCBPUFRJT05BTF9UQUc6IHN0cmluZyA9ICdvcHRpb25hbCc7XG5cbi8vIFRoZSB0eXBlIG9mIHRoZSBiaW5kaW5nIGF0IGRlc2lnbiB0aW1lXG5leHBvcnQgY29uc3QgSU5KRUNUX1RBRzogc3RyaW5nID0gJ2luamVjdCc7XG5cbi8vIFRoZSB0eXBlIG9mIHRoZSBiaW5kaW5nIGF0IGRlc2lnbiB0eXBlIGZvciBtdWx0aS1pbmplY3Rpb25zXG5leHBvcnQgY29uc3QgTVVMVElfSU5KRUNUX1RBRzogc3RyaW5nID0gJ211bHRpX2luamVjdCc7XG5cbi8vIHVzZWQgdG8gc3RvcmUgY29uc3RydWN0b3IgYXJndW1lbnRzIHRhZ3NcbmV4cG9ydCBjb25zdCBUQUdHRUQ6IHN0cmluZyA9ICdpbnZlcnNpZnk6dGFnZ2VkJztcblxuLy8gdXNlZCB0byBzdG9yZSBjbGFzcyBwcm9wZXJ0aWVzIHRhZ3NcbmV4cG9ydCBjb25zdCBUQUdHRURfUFJPUDogc3RyaW5nID0gJ2ludmVyc2lmeTp0YWdnZWRfcHJvcHMnO1xuXG4vLyB1c2VkIHRvIHN0b3JlIHR5cGVzIHRvIGJlIGluamVjdGVkXG5leHBvcnQgY29uc3QgUEFSQU1fVFlQRVM6IHN0cmluZyA9ICdpbnZlcnNpZnk6cGFyYW10eXBlcyc7XG5cbi8vIHVzZWQgdG8gYWNjZXNzIGRlc2lnbiB0aW1lIHR5cGVzXG5leHBvcnQgY29uc3QgREVTSUdOX1BBUkFNX1RZUEVTOiBzdHJpbmcgPSAnZGVzaWduOnBhcmFtdHlwZXMnO1xuXG4vLyB1c2VkIHRvIGlkZW50aWZ5IHBvc3RDb25zdHJ1Y3QgZnVuY3Rpb25zXG5leHBvcnQgY29uc3QgUE9TVF9DT05TVFJVQ1Q6IHN0cmluZyA9ICdwb3N0X2NvbnN0cnVjdCc7XG5cbi8vIHVzZWQgdG8gaWRlbnRpZnkgcHJlRGVzdHJveSBmdW5jdGlvbnNcbmV4cG9ydCBjb25zdCBQUkVfREVTVFJPWTogc3RyaW5nID0gJ3ByZV9kZXN0cm95JztcblxuZnVuY3Rpb24gZ2V0Tm9uQ3VzdG9tVGFnS2V5cygpOiBzdHJpbmdbXSB7XG4gIHJldHVybiBbXG4gICAgSU5KRUNUX1RBRyxcbiAgICBNVUxUSV9JTkpFQ1RfVEFHLFxuICAgIE5BTUVfVEFHLFxuICAgIFVOTUFOQUdFRF9UQUcsXG4gICAgTkFNRURfVEFHLFxuICAgIE9QVElPTkFMX1RBRyxcbiAgXTtcbn1cblxuZXhwb3J0IGNvbnN0IE5PTl9DVVNUT01fVEFHX0tFWVM6IHN0cmluZ1tdID0gZ2V0Tm9uQ3VzdG9tVGFnS2V5cygpO1xuIiwiaW1wb3J0IHsgSW52ZXJzaWZ5Q29yZUVycm9yS2luZCB9IGZyb20gJy4vSW52ZXJzaWZ5Q29yZUVycm9yS2luZCc7XG5cbmV4cG9ydCBjb25zdCBpc0FwcEVycm9yU3ltYm9sOiB1bmlxdWUgc3ltYm9sID0gU3ltYm9sLmZvcihcbiAgJ0BpbnZlcnNpZnlqcy9jb3JlL0ludmVyc2lmeUNvcmVFcnJvcicsXG4pO1xuXG5leHBvcnQgY2xhc3MgSW52ZXJzaWZ5Q29yZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBwdWJsaWMgW2lzQXBwRXJyb3JTeW1ib2xdOiB0cnVlO1xuXG4gIHB1YmxpYyBraW5kOiBJbnZlcnNpZnlDb3JlRXJyb3JLaW5kO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGtpbmQ6IEludmVyc2lmeUNvcmVFcnJvcktpbmQsXG4gICAgbWVzc2FnZT86IHN0cmluZyxcbiAgICBvcHRpb25zPzogRXJyb3JPcHRpb25zLFxuICApIHtcbiAgICBzdXBlcihtZXNzYWdlLCBvcHRpb25zKTtcblxuICAgIHRoaXNbaXNBcHBFcnJvclN5bWJvbF0gPSB0cnVlO1xuICAgIHRoaXMua2luZCA9IGtpbmQ7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgSW52ZXJzaWZ5Q29yZUVycm9yIHtcbiAgICByZXR1cm4gKFxuICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgICh2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nIHwgc3ltYm9sLCB1bmtub3duPilbaXNBcHBFcnJvclN5bWJvbF0gPT09IHRydWVcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc0Vycm9yT2ZLaW5kKFxuICAgIHZhbHVlOiB1bmtub3duLFxuICAgIGtpbmQ6IEludmVyc2lmeUNvcmVFcnJvcktpbmQsXG4gICk6IHZhbHVlIGlzIEludmVyc2lmeUNvcmVFcnJvciB7XG4gICAgcmV0dXJuIEludmVyc2lmeUNvcmVFcnJvci5pcyh2YWx1ZSkgJiYgdmFsdWUua2luZCA9PT0ga2luZDtcbiAgfVxufVxuIiwiZXhwb3J0IGVudW0gSW52ZXJzaWZ5Q29yZUVycm9yS2luZCB7XG4gIG1pc3NpbmdJbmplY3Rpb25EZWNvcmF0b3IsXG4gIHVua25vd24sXG59XG4iLCJleHBvcnQgZW51bSBDbGFzc0VsZW1lbnRNZXRhZGF0YUtpbmQge1xuICBtdWx0aXBsZUluamVjdGlvbixcbiAgc2luZ2xlSW5qZWN0aW9uLFxuICB1bm1hbmFnZWQsXG59XG4iLCJpbXBvcnQgeyBOZXdhYmxlIH0gZnJvbSAnQGludmVyc2lmeWpzL2NvbW1vbic7XG5cbmltcG9ydCB7IEludmVyc2lmeUNvcmVFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL21vZGVscy9JbnZlcnNpZnlDb3JlRXJyb3InO1xuaW1wb3J0IHsgSW52ZXJzaWZ5Q29yZUVycm9yS2luZCB9IGZyb20gJy4uLy4uL2Vycm9yL21vZGVscy9JbnZlcnNpZnlDb3JlRXJyb3JLaW5kJztcbmltcG9ydCB7IENsYXNzRWxlbWVudE1ldGFkYXRhIH0gZnJvbSAnLi4vbW9kZWxzL0NsYXNzRWxlbWVudE1ldGFkYXRhJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydENvbnN0cnVjdG9yTWV0YWRhdGFBcnJheUZpbGxlZChcbiAgdHlwZTogTmV3YWJsZSxcbiAgdmFsdWU6IChDbGFzc0VsZW1lbnRNZXRhZGF0YSB8IHVuZGVmaW5lZClbXSxcbik6IGFzc2VydHMgdmFsdWUgaXMgQ2xhc3NFbGVtZW50TWV0YWRhdGFbXSB7XG4gIGNvbnN0IHVuZGVmaW5lZEluZGV4ZXM6IG51bWJlcltdID0gW107XG5cbiAgLy8gVXNpbmcgYSBmb3IgbG9vcCB0byBlbnN1cmUgZW1wdHkgdmFsdWVzIGFyZSB0cmF2ZXJzZWQgYXMgd2VsbFxuICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyArK2kpIHtcbiAgICBjb25zdCBlbGVtZW50OiBDbGFzc0VsZW1lbnRNZXRhZGF0YSB8IHVuZGVmaW5lZCA9IHZhbHVlW2ldO1xuXG4gICAgaWYgKGVsZW1lbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdW5kZWZpbmVkSW5kZXhlcy5wdXNoKGkpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh1bmRlZmluZWRJbmRleGVzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgSW52ZXJzaWZ5Q29yZUVycm9yKFxuICAgICAgSW52ZXJzaWZ5Q29yZUVycm9yS2luZC5taXNzaW5nSW5qZWN0aW9uRGVjb3JhdG9yLFxuICAgICAgYEZvdW5kIHVuZXhwZWN0ZWQgbWlzc2luZyBtZXRhZGF0YSBvbiB0eXBlIFwiJHt0eXBlLm5hbWV9XCIgYXQgY29uc3RydWN0b3IgaW5kZXhlcyBcIiR7dW5kZWZpbmVkSW5kZXhlcy5qb2luKCdcIiwgXCInKX1cIi5cblxuQXJlIHlvdSB1c2luZyBAaW5qZWN0LCBAbXVsdGlJbmplY3Qgb3IgQHVubWFuYWdlZCBkZWNvcmF0b3JzIGF0IHRob3NlIGluZGV4ZXM/XG5cbklmIHlvdSdyZSB1c2luZyB0eXBlc2NyaXB0IGFuZCB3YW50IHRvIHJlbHkgb24gYXV0byBpbmplY3Rpb24sIHNldCBcImVtaXREZWNvcmF0b3JNZXRhZGF0YVwiIGNvbXBpbGVyIG9wdGlvbiB0byB0cnVlYCxcbiAgICApO1xuICB9XG59XG4iLCJpbXBvcnQgeyBOZXdhYmxlIH0gZnJvbSAnQGludmVyc2lmeWpzL2NvbW1vbic7XG5cbmltcG9ydCB7IENsYXNzRWxlbWVudE1ldGFkYXRhIH0gZnJvbSAnLi4vbW9kZWxzL0NsYXNzRWxlbWVudE1ldGFkYXRhJztcbmltcG9ydCB7IENsYXNzRWxlbWVudE1ldGFkYXRhS2luZCB9IGZyb20gJy4uL21vZGVscy9DbGFzc0VsZW1lbnRNZXRhZGF0YUtpbmQnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2xhc3NFbGVtZW50TWV0YWRhdGFGcm9tTmV3YWJsZShcbiAgdHlwZTogTmV3YWJsZSxcbik6IENsYXNzRWxlbWVudE1ldGFkYXRhIHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiBDbGFzc0VsZW1lbnRNZXRhZGF0YUtpbmQuc2luZ2xlSW5qZWN0aW9uLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBvcHRpb25hbDogZmFsc2UsXG4gICAgdGFnczogbmV3IE1hcCgpLFxuICAgIHRhcmdldE5hbWU6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogdHlwZSxcbiAgfTtcbn1cbiIsImltcG9ydCB7IExhenlTZXJ2aWNlSWRlbnRpZmllciwgU2VydmljZUlkZW50aWZpZXIgfSBmcm9tICdAaW52ZXJzaWZ5anMvY29tbW9uJztcblxuaW1wb3J0IHsgSW52ZXJzaWZ5Q29yZUVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvbW9kZWxzL0ludmVyc2lmeUNvcmVFcnJvcic7XG5pbXBvcnQgeyBJbnZlcnNpZnlDb3JlRXJyb3JLaW5kIH0gZnJvbSAnLi4vLi4vZXJyb3IvbW9kZWxzL0ludmVyc2lmeUNvcmVFcnJvcktpbmQnO1xuaW1wb3J0IHtcbiAgSU5KRUNUX1RBRyxcbiAgTVVMVElfSU5KRUNUX1RBRyxcbiAgTkFNRV9UQUcsXG4gIE5BTUVEX1RBRyxcbiAgTk9OX0NVU1RPTV9UQUdfS0VZUyxcbiAgT1BUSU9OQUxfVEFHLFxuICBVTk1BTkFHRURfVEFHLFxufSBmcm9tICcuLi8uLi9yZWZsZWN0TWV0YWRhdGEvZGF0YS9rZXlzJztcbmltcG9ydCB7IENsYXNzRWxlbWVudE1ldGFkYXRhIH0gZnJvbSAnLi4vbW9kZWxzL0NsYXNzRWxlbWVudE1ldGFkYXRhJztcbmltcG9ydCB7IENsYXNzRWxlbWVudE1ldGFkYXRhS2luZCB9IGZyb20gJy4uL21vZGVscy9DbGFzc0VsZW1lbnRNZXRhZGF0YUtpbmQnO1xuaW1wb3J0IHsgTGVnYWN5TWV0YWRhdGEgfSBmcm9tICcuLi9tb2RlbHMvTGVnYWN5TWV0YWRhdGEnO1xuaW1wb3J0IHsgTWFuYWdlZENsYXNzRWxlbWVudE1ldGFkYXRhIH0gZnJvbSAnLi4vbW9kZWxzL01hbmFnZWRDbGFzc0VsZW1lbnRNZXRhZGF0YSc7XG5pbXBvcnQgeyBNZXRhZGF0YU5hbWUgfSBmcm9tICcuLi9tb2RlbHMvTWV0YWRhdGFOYW1lJztcbmltcG9ydCB7IE1ldGFkYXRhVGFnIH0gZnJvbSAnLi4vbW9kZWxzL01ldGFkYXRhVGFnJztcbmltcG9ydCB7IE1ldGFkYXRhVGFyZ2V0TmFtZSB9IGZyb20gJy4uL21vZGVscy9NZXRhZGF0YVRhcmdldE5hbWUnO1xuaW1wb3J0IHsgVW5tYW5hZ2VkQ2xhc3NFbGVtZW50TWV0YWRhdGEgfSBmcm9tICcuLi9tb2RlbHMvVW5tYW5hZ2VkQ2xhc3NFbGVtZW50TWV0YWRhdGEnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2xhc3NFbGVtZW50TWV0YWRhdGFGcm9tTGVnYWN5TWV0YWRhdGEoXG4gIG1ldGFkYXRhTGlzdDogTGVnYWN5TWV0YWRhdGFbXSxcbik6IENsYXNzRWxlbWVudE1ldGFkYXRhIHtcbiAgY29uc3QgaW5qZWN0TWV0YWRhdGE6IExlZ2FjeU1ldGFkYXRhIHwgdW5kZWZpbmVkID0gbWV0YWRhdGFMaXN0LmZpbmQoXG4gICAgKG1ldGFkYXRhOiBMZWdhY3lNZXRhZGF0YSk6IGJvb2xlYW4gPT4gbWV0YWRhdGEua2V5ID09PSBJTkpFQ1RfVEFHLFxuICApO1xuICBjb25zdCBtdWx0aUluamVjdE1ldGFkYXRhOiBMZWdhY3lNZXRhZGF0YSB8IHVuZGVmaW5lZCA9IG1ldGFkYXRhTGlzdC5maW5kKFxuICAgIChtZXRhZGF0YTogTGVnYWN5TWV0YWRhdGEpOiBib29sZWFuID0+IG1ldGFkYXRhLmtleSA9PT0gTVVMVElfSU5KRUNUX1RBRyxcbiAgKTtcbiAgY29uc3QgdW5tYW5hZ2VkTWV0YWRhdGE6IExlZ2FjeU1ldGFkYXRhIHwgdW5kZWZpbmVkID0gbWV0YWRhdGFMaXN0LmZpbmQoXG4gICAgKG1ldGFkYXRhOiBMZWdhY3lNZXRhZGF0YSk6IGJvb2xlYW4gPT4gbWV0YWRhdGEua2V5ID09PSBVTk1BTkFHRURfVEFHLFxuICApO1xuXG4gIGlmICh1bm1hbmFnZWRNZXRhZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGdldFVubWFuYWdlZENsYXNzRWxlbWVudE1ldGFkYXRhKFxuICAgICAgaW5qZWN0TWV0YWRhdGEsXG4gICAgICBtdWx0aUluamVjdE1ldGFkYXRhLFxuICAgICk7XG4gIH1cblxuICBpZiAobXVsdGlJbmplY3RNZXRhZGF0YSA9PT0gdW5kZWZpbmVkICYmIGluamVjdE1ldGFkYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgSW52ZXJzaWZ5Q29yZUVycm9yKFxuICAgICAgSW52ZXJzaWZ5Q29yZUVycm9yS2luZC5taXNzaW5nSW5qZWN0aW9uRGVjb3JhdG9yLFxuICAgICAgJ0V4cGVjdGVkIEBpbmplY3QsIEBtdWx0aUluamVjdCBvciBAdW5tYW5hZ2VkIG1ldGFkYXRhJyxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgbmFtZU1ldGFkYXRhOiBMZWdhY3lNZXRhZGF0YSB8IHVuZGVmaW5lZCA9IG1ldGFkYXRhTGlzdC5maW5kKFxuICAgIChtZXRhZGF0YTogTGVnYWN5TWV0YWRhdGEpOiBib29sZWFuID0+IG1ldGFkYXRhLmtleSA9PT0gTkFNRURfVEFHLFxuICApO1xuXG4gIGNvbnN0IG9wdGlvbmFsTWV0YWRhdGE6IExlZ2FjeU1ldGFkYXRhIHwgdW5kZWZpbmVkID0gbWV0YWRhdGFMaXN0LmZpbmQoXG4gICAgKG1ldGFkYXRhOiBMZWdhY3lNZXRhZGF0YSk6IGJvb2xlYW4gPT4gbWV0YWRhdGEua2V5ID09PSBPUFRJT05BTF9UQUcsXG4gICk7XG5cbiAgY29uc3QgdGFyZ2V0TmFtZU1ldGFkYXRhOiBMZWdhY3lNZXRhZGF0YSB8IHVuZGVmaW5lZCA9IG1ldGFkYXRhTGlzdC5maW5kKFxuICAgIChtZXRhZGF0YTogTGVnYWN5TWV0YWRhdGEpOiBib29sZWFuID0+IG1ldGFkYXRhLmtleSA9PT0gTkFNRV9UQUcsXG4gICk7XG5cbiAgY29uc3QgbWFuYWdlZENsYXNzRWxlbWVudE1ldGFkYXRhOiBNYW5hZ2VkQ2xhc3NFbGVtZW50TWV0YWRhdGEgPSB7XG4gICAga2luZDpcbiAgICAgIGluamVjdE1ldGFkYXRhID09PSB1bmRlZmluZWRcbiAgICAgICAgPyBDbGFzc0VsZW1lbnRNZXRhZGF0YUtpbmQubXVsdGlwbGVJbmplY3Rpb25cbiAgICAgICAgOiBDbGFzc0VsZW1lbnRNZXRhZGF0YUtpbmQuc2luZ2xlSW5qZWN0aW9uLFxuICAgIG5hbWU6IG5hbWVNZXRhZGF0YT8udmFsdWUgYXMgTWV0YWRhdGFOYW1lIHwgdW5kZWZpbmVkLFxuICAgIG9wdGlvbmFsOiBvcHRpb25hbE1ldGFkYXRhICE9PSB1bmRlZmluZWQsXG4gICAgdGFnczogbmV3IE1hcChcbiAgICAgIG1ldGFkYXRhTGlzdFxuICAgICAgICAuZmlsdGVyKChtZXRhZGF0YTogTGVnYWN5TWV0YWRhdGEpOiBib29sZWFuID0+XG4gICAgICAgICAgTk9OX0NVU1RPTV9UQUdfS0VZUy5ldmVyeShcbiAgICAgICAgICAgIChjdXN0b21UYWdLZXk6IHN0cmluZyk6IGJvb2xlYW4gPT4gbWV0YWRhdGEua2V5ICE9PSBjdXN0b21UYWdLZXksXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgICAubWFwKChtZXRhZGF0YTogTGVnYWN5TWV0YWRhdGEpOiBbTWV0YWRhdGFUYWcsIHVua25vd25dID0+IFtcbiAgICAgICAgICBtZXRhZGF0YS5rZXksXG4gICAgICAgICAgbWV0YWRhdGEudmFsdWUsXG4gICAgICAgIF0pLFxuICAgICksXG4gICAgdGFyZ2V0TmFtZTogdGFyZ2V0TmFtZU1ldGFkYXRhPy52YWx1ZSBhcyBNZXRhZGF0YVRhcmdldE5hbWUgfCB1bmRlZmluZWQsXG4gICAgdmFsdWU6XG4gICAgICBpbmplY3RNZXRhZGF0YSA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gKG11bHRpSW5qZWN0TWV0YWRhdGE/LnZhbHVlIGFzXG4gICAgICAgICAgICB8IFNlcnZpY2VJZGVudGlmaWVyXG4gICAgICAgICAgICB8IExhenlTZXJ2aWNlSWRlbnRpZmllcilcbiAgICAgICAgOiAoaW5qZWN0TWV0YWRhdGEudmFsdWUgYXMgU2VydmljZUlkZW50aWZpZXIgfCBMYXp5U2VydmljZUlkZW50aWZpZXIpLFxuICB9O1xuXG4gIHJldHVybiBtYW5hZ2VkQ2xhc3NFbGVtZW50TWV0YWRhdGE7XG59XG5cbmZ1bmN0aW9uIGdldFVubWFuYWdlZENsYXNzRWxlbWVudE1ldGFkYXRhKFxuICBpbmplY3RNZXRhZGF0YTogTGVnYWN5TWV0YWRhdGEgfCB1bmRlZmluZWQsXG4gIG11bHRpSW5qZWN0TWV0YWRhdGE6IExlZ2FjeU1ldGFkYXRhIHwgdW5kZWZpbmVkLFxuKTogVW5tYW5hZ2VkQ2xhc3NFbGVtZW50TWV0YWRhdGEge1xuICBpZiAobXVsdGlJbmplY3RNZXRhZGF0YSAhPT0gdW5kZWZpbmVkIHx8IGluamVjdE1ldGFkYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgSW52ZXJzaWZ5Q29yZUVycm9yKFxuICAgICAgSW52ZXJzaWZ5Q29yZUVycm9yS2luZC5taXNzaW5nSW5qZWN0aW9uRGVjb3JhdG9yLFxuICAgICAgJ0V4cGVjdGVkIGEgc2luZ2xlIEBpbmplY3QsIEBtdWx0aUluamVjdCBvciBAdW5tYW5hZ2VkIG1ldGFkYXRhJyxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBraW5kOiBDbGFzc0VsZW1lbnRNZXRhZGF0YUtpbmQudW5tYW5hZ2VkLFxuICB9O1xufVxuIiwiaW1wb3J0IHsgTmV3YWJsZSB9IGZyb20gJ0BpbnZlcnNpZnlqcy9jb21tb24nO1xuXG5pbXBvcnQgeyBJbnZlcnNpZnlDb3JlRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvci9tb2RlbHMvSW52ZXJzaWZ5Q29yZUVycm9yJztcbmltcG9ydCB7IEludmVyc2lmeUNvcmVFcnJvcktpbmQgfSBmcm9tICcuLi8uLi9lcnJvci9tb2RlbHMvSW52ZXJzaWZ5Q29yZUVycm9yS2luZCc7XG5pbXBvcnQgeyBDbGFzc0VsZW1lbnRNZXRhZGF0YSB9IGZyb20gJy4uL21vZGVscy9DbGFzc0VsZW1lbnRNZXRhZGF0YSc7XG5pbXBvcnQgeyBMZWdhY3lNZXRhZGF0YSB9IGZyb20gJy4uL21vZGVscy9MZWdhY3lNZXRhZGF0YSc7XG5pbXBvcnQgeyBnZXRDbGFzc0VsZW1lbnRNZXRhZGF0YUZyb21MZWdhY3lNZXRhZGF0YSB9IGZyb20gJy4vZ2V0Q2xhc3NFbGVtZW50TWV0YWRhdGFGcm9tTGVnYWN5TWV0YWRhdGEnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uc3RydWN0b3JBcmd1bWVudE1ldGFkYXRhRnJvbUxlZ2FjeU1ldGFkYXRhKFxuICB0eXBlOiBOZXdhYmxlLFxuICBpbmRleDogbnVtYmVyLFxuICBtZXRhZGF0YUxpc3Q6IExlZ2FjeU1ldGFkYXRhW10sXG4pOiBDbGFzc0VsZW1lbnRNZXRhZGF0YSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGdldENsYXNzRWxlbWVudE1ldGFkYXRhRnJvbUxlZ2FjeU1ldGFkYXRhKG1ldGFkYXRhTGlzdCk7XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgaWYgKFxuICAgICAgSW52ZXJzaWZ5Q29yZUVycm9yLmlzRXJyb3JPZktpbmQoXG4gICAgICAgIGVycm9yLFxuICAgICAgICBJbnZlcnNpZnlDb3JlRXJyb3JLaW5kLm1pc3NpbmdJbmplY3Rpb25EZWNvcmF0b3IsXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgSW52ZXJzaWZ5Q29yZUVycm9yKFxuICAgICAgICBJbnZlcnNpZnlDb3JlRXJyb3JLaW5kLm1pc3NpbmdJbmplY3Rpb25EZWNvcmF0b3IsXG4gICAgICAgIGBFeHBlY3RlZCBhIHNpbmdsZSBAaW5qZWN0LCBAbXVsdGlJbmplY3Qgb3IgQHVubWFuYWdlZCBkZWNvcmF0b3IgYXQgdHlwZSBcIiR7dHlwZS5uYW1lfVwiIGF0IGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBhdCBpbmRleCBcIiR7aW5kZXgudG9TdHJpbmcoKX1cImAsXG4gICAgICAgIHsgY2F1c2U6IGVycm9yIH0sXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IE5ld2FibGUgfSBmcm9tICdAaW52ZXJzaWZ5anMvY29tbW9uJztcbmltcG9ydCB7IGdldFJlZmxlY3RNZXRhZGF0YSB9IGZyb20gJ0BpbnZlcnNpZnlqcy9yZWZsZWN0LW1ldGFkYXRhLXV0aWxzJztcblxuaW1wb3J0IHsgREVTSUdOX1BBUkFNX1RZUEVTLCBUQUdHRUQgfSBmcm9tICcuLi8uLi9yZWZsZWN0TWV0YWRhdGEvZGF0YS9rZXlzJztcbmltcG9ydCB7IENsYXNzRWxlbWVudE1ldGFkYXRhIH0gZnJvbSAnLi4vbW9kZWxzL0NsYXNzRWxlbWVudE1ldGFkYXRhJztcbmltcG9ydCB7IExlZ2FjeU1ldGFkYXRhTWFwIH0gZnJvbSAnLi4vbW9kZWxzL0xlZ2FjeU1ldGFkYXRhTWFwJztcbmltcG9ydCB7IGFzc2VydENvbnN0cnVjdG9yTWV0YWRhdGFBcnJheUZpbGxlZCB9IGZyb20gJy4vYXNzZXJ0Q29uc3RydWN0b3JNZXRhZGF0YUFycmF5RmlsbGVkJztcbmltcG9ydCB7IGdldENsYXNzRWxlbWVudE1ldGFkYXRhRnJvbU5ld2FibGUgfSBmcm9tICcuL2dldENsYXNzRWxlbWVudE1ldGFkYXRhRnJvbU5ld2FibGUnO1xuaW1wb3J0IHsgZ2V0Q29uc3RydWN0b3JBcmd1bWVudE1ldGFkYXRhRnJvbUxlZ2FjeU1ldGFkYXRhIH0gZnJvbSAnLi9nZXRDb25zdHJ1Y3RvckFyZ3VtZW50TWV0YWRhdGFGcm9tTGVnYWN5TWV0YWRhdGEnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2xhc3NNZXRhZGF0YUNvbnN0cnVjdG9yQXJndW1lbnRzKFxuICB0eXBlOiBOZXdhYmxlLFxuKTogQ2xhc3NFbGVtZW50TWV0YWRhdGFbXSB7XG4gIGNvbnN0IHR5cGVzY3JpcHRNZXRhZGF0YUxpc3Q6IE5ld2FibGVbXSB8IHVuZGVmaW5lZCA9IGdldFJlZmxlY3RNZXRhZGF0YShcbiAgICB0eXBlLFxuICAgIERFU0lHTl9QQVJBTV9UWVBFUyxcbiAgKTtcblxuICBjb25zdCBjb25zdHJ1Y3RvclBhcmFtZXRlcnNMZWdhY3lNZXRhZGF0YTogTGVnYWN5TWV0YWRhdGFNYXAgfCB1bmRlZmluZWQgPVxuICAgIGdldFJlZmxlY3RNZXRhZGF0YSh0eXBlLCBUQUdHRUQpO1xuXG4gIGNvbnN0IGNvbnN0cnVjdG9yQXJndW1lbnRzTWV0YWRhdGE6IChDbGFzc0VsZW1lbnRNZXRhZGF0YSB8IHVuZGVmaW5lZClbXSA9IFtdO1xuXG4gIGlmIChjb25zdHJ1Y3RvclBhcmFtZXRlcnNMZWdhY3lNZXRhZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZm9yIChjb25zdCBbc3RyaW5naWZpZWRJbmRleCwgbWV0YWRhdGFMaXN0XSBvZiBPYmplY3QuZW50cmllcyhcbiAgICAgIGNvbnN0cnVjdG9yUGFyYW1ldGVyc0xlZ2FjeU1ldGFkYXRhLFxuICAgICkpIHtcbiAgICAgIGNvbnN0IGluZGV4OiBudW1iZXIgPSBwYXJzZUludChzdHJpbmdpZmllZEluZGV4KTtcblxuICAgICAgY29uc3RydWN0b3JBcmd1bWVudHNNZXRhZGF0YVtpbmRleF0gPVxuICAgICAgICBnZXRDb25zdHJ1Y3RvckFyZ3VtZW50TWV0YWRhdGFGcm9tTGVnYWN5TWV0YWRhdGEoXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBpbmRleCxcbiAgICAgICAgICBtZXRhZGF0YUxpc3QsXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVzY3JpcHRNZXRhZGF0YUxpc3QgIT09IHVuZGVmaW5lZCkge1xuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0eXBlc2NyaXB0TWV0YWRhdGFMaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgICBpZiAoY29uc3RydWN0b3JBcmd1bWVudHNNZXRhZGF0YVtpXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IHR5cGVzY3JpcHRNZXRhZGF0YTogTmV3YWJsZSA9IHR5cGVzY3JpcHRNZXRhZGF0YUxpc3RbXG4gICAgICAgICAgaVxuICAgICAgICBdIGFzIE5ld2FibGU7XG5cbiAgICAgICAgY29uc3RydWN0b3JBcmd1bWVudHNNZXRhZGF0YVtpXSA9XG4gICAgICAgICAgZ2V0Q2xhc3NFbGVtZW50TWV0YWRhdGFGcm9tTmV3YWJsZSh0eXBlc2NyaXB0TWV0YWRhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzc2VydENvbnN0cnVjdG9yTWV0YWRhdGFBcnJheUZpbGxlZCh0eXBlLCBjb25zdHJ1Y3RvckFyZ3VtZW50c01ldGFkYXRhKTtcblxuICByZXR1cm4gY29uc3RydWN0b3JBcmd1bWVudHNNZXRhZGF0YTtcbn1cbiIsImltcG9ydCB7IE5ld2FibGUgfSBmcm9tICdAaW52ZXJzaWZ5anMvY29tbW9uJztcblxuaW1wb3J0IHsgSW52ZXJzaWZ5Q29yZUVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvbW9kZWxzL0ludmVyc2lmeUNvcmVFcnJvcic7XG5pbXBvcnQgeyBJbnZlcnNpZnlDb3JlRXJyb3JLaW5kIH0gZnJvbSAnLi4vLi4vZXJyb3IvbW9kZWxzL0ludmVyc2lmeUNvcmVFcnJvcktpbmQnO1xuaW1wb3J0IHsgQ2xhc3NFbGVtZW50TWV0YWRhdGEgfSBmcm9tICcuLi9tb2RlbHMvQ2xhc3NFbGVtZW50TWV0YWRhdGEnO1xuaW1wb3J0IHsgTGVnYWN5TWV0YWRhdGEgfSBmcm9tICcuLi9tb2RlbHMvTGVnYWN5TWV0YWRhdGEnO1xuaW1wb3J0IHsgZ2V0Q2xhc3NFbGVtZW50TWV0YWRhdGFGcm9tTGVnYWN5TWV0YWRhdGEgfSBmcm9tICcuL2dldENsYXNzRWxlbWVudE1ldGFkYXRhRnJvbUxlZ2FjeU1ldGFkYXRhJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3BlcnR5TWV0YWRhdGFGcm9tTGVnYWN5TWV0YWRhdGEoXG4gIHR5cGU6IE5ld2FibGUsXG4gIGtleTogc3RyaW5nIHwgc3ltYm9sLFxuICBtZXRhZGF0YUxpc3Q6IExlZ2FjeU1ldGFkYXRhW10sXG4pOiBDbGFzc0VsZW1lbnRNZXRhZGF0YSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGdldENsYXNzRWxlbWVudE1ldGFkYXRhRnJvbUxlZ2FjeU1ldGFkYXRhKG1ldGFkYXRhTGlzdCk7XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgaWYgKFxuICAgICAgSW52ZXJzaWZ5Q29yZUVycm9yLmlzRXJyb3JPZktpbmQoXG4gICAgICAgIGVycm9yLFxuICAgICAgICBJbnZlcnNpZnlDb3JlRXJyb3JLaW5kLm1pc3NpbmdJbmplY3Rpb25EZWNvcmF0b3IsXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgSW52ZXJzaWZ5Q29yZUVycm9yKFxuICAgICAgICBJbnZlcnNpZnlDb3JlRXJyb3JLaW5kLm1pc3NpbmdJbmplY3Rpb25EZWNvcmF0b3IsXG4gICAgICAgIGBFeHBlY3RlZCBhIHNpbmdsZSBAaW5qZWN0LCBAbXVsdGlJbmplY3Qgb3IgQHVubWFuYWdlZCBkZWNvcmF0b3IgYXQgdHlwZSBcIiR7dHlwZS5uYW1lfVwiIGF0IHByb3BlcnR5IFwiJHtrZXkudG9TdHJpbmcoKX1cImAsXG4gICAgICAgIHsgY2F1c2U6IGVycm9yIH0sXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IE5ld2FibGUgfSBmcm9tICdAaW52ZXJzaWZ5anMvY29tbW9uJztcbmltcG9ydCB7IGdldFJlZmxlY3RNZXRhZGF0YSB9IGZyb20gJ0BpbnZlcnNpZnlqcy9yZWZsZWN0LW1ldGFkYXRhLXV0aWxzJztcblxuaW1wb3J0IHsgVEFHR0VEX1BST1AgfSBmcm9tICcuLi8uLi9yZWZsZWN0TWV0YWRhdGEvZGF0YS9rZXlzJztcbmltcG9ydCB7IENsYXNzRWxlbWVudE1ldGFkYXRhIH0gZnJvbSAnLi4vbW9kZWxzL0NsYXNzRWxlbWVudE1ldGFkYXRhJztcbmltcG9ydCB7IExlZ2FjeU1ldGFkYXRhIH0gZnJvbSAnLi4vbW9kZWxzL0xlZ2FjeU1ldGFkYXRhJztcbmltcG9ydCB7IExlZ2FjeU1ldGFkYXRhTWFwIH0gZnJvbSAnLi4vbW9kZWxzL0xlZ2FjeU1ldGFkYXRhTWFwJztcbmltcG9ydCB7IGdldFByb3BlcnR5TWV0YWRhdGFGcm9tTGVnYWN5TWV0YWRhdGEgfSBmcm9tICcuL2dldFByb3BlcnR5TWV0YWRhdGFGcm9tTGVnYWN5TWV0YWRhdGEnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2xhc3NNZXRhZGF0YVByb3BlcnRpZXMoXG4gIHR5cGU6IE5ld2FibGUsXG4pOiBNYXA8c3RyaW5nIHwgc3ltYm9sLCBDbGFzc0VsZW1lbnRNZXRhZGF0YT4ge1xuICBjb25zdCBwcm9wZXJ0aWVzTGVnYWN5TWV0YWRhdGE6IExlZ2FjeU1ldGFkYXRhTWFwIHwgdW5kZWZpbmVkID1cbiAgICBnZXRSZWZsZWN0TWV0YWRhdGEodHlwZSwgVEFHR0VEX1BST1ApO1xuXG4gIGNvbnN0IHByb3BlcnRpZXNNZXRhZGF0YTogTWFwPHN0cmluZyB8IHN5bWJvbCwgQ2xhc3NFbGVtZW50TWV0YWRhdGE+ID1cbiAgICBuZXcgTWFwKCk7XG5cbiAgaWYgKHByb3BlcnRpZXNMZWdhY3lNZXRhZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBSZWZsZWN0Lm93bktleXMocHJvcGVydGllc0xlZ2FjeU1ldGFkYXRhKSkge1xuICAgICAgY29uc3QgbGVnYWN5TWV0YWRhdGE6IExlZ2FjeU1ldGFkYXRhW10gPSBwcm9wZXJ0aWVzTGVnYWN5TWV0YWRhdGFbXG4gICAgICAgIHByb3BlcnR5XG4gICAgICBdIGFzIExlZ2FjeU1ldGFkYXRhW107XG4gICAgICBwcm9wZXJ0aWVzTWV0YWRhdGEuc2V0KFxuICAgICAgICBwcm9wZXJ0eSxcbiAgICAgICAgZ2V0UHJvcGVydHlNZXRhZGF0YUZyb21MZWdhY3lNZXRhZGF0YSh0eXBlLCBwcm9wZXJ0eSwgbGVnYWN5TWV0YWRhdGEpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJvcGVydGllc01ldGFkYXRhO1xufVxuIiwiaW1wb3J0IHsgTmV3YWJsZSB9IGZyb20gJ0BpbnZlcnNpZnlqcy9jb21tb24nO1xuaW1wb3J0IHsgZ2V0UmVmbGVjdE1ldGFkYXRhIH0gZnJvbSAnQGludmVyc2lmeWpzL3JlZmxlY3QtbWV0YWRhdGEtdXRpbHMnO1xuXG5pbXBvcnQgeyBQT1NUX0NPTlNUUlVDVCwgUFJFX0RFU1RST1kgfSBmcm9tICcuLi8uLi9yZWZsZWN0TWV0YWRhdGEvZGF0YS9rZXlzJztcbmltcG9ydCB7IENsYXNzTWV0YWRhdGEgfSBmcm9tICcuLi9tb2RlbHMvQ2xhc3NNZXRhZGF0YSc7XG5pbXBvcnQgeyBMZWdhY3lNZXRhZGF0YSB9IGZyb20gJy4uL21vZGVscy9MZWdhY3lNZXRhZGF0YSc7XG5pbXBvcnQgeyBnZXRDbGFzc01ldGFkYXRhQ29uc3RydWN0b3JBcmd1bWVudHMgfSBmcm9tICcuL2dldENsYXNzTWV0YWRhdGFDb25zdHJ1Y3RvckFyZ3VtZW50cyc7XG5pbXBvcnQgeyBnZXRDbGFzc01ldGFkYXRhUHJvcGVydGllcyB9IGZyb20gJy4vZ2V0Q2xhc3NNZXRhZGF0YVByb3BlcnRpZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2xhc3NNZXRhZGF0YSh0eXBlOiBOZXdhYmxlKTogQ2xhc3NNZXRhZGF0YSB7XG4gIGNvbnN0IHBvc3RDb25zdHJ1Y3RNZXRhZGF0YTogTGVnYWN5TWV0YWRhdGEgfCB1bmRlZmluZWQgPVxuICAgIGdldFJlZmxlY3RNZXRhZGF0YTxMZWdhY3lNZXRhZGF0YT4odHlwZSwgUE9TVF9DT05TVFJVQ1QpO1xuICBjb25zdCBwcmVEZXN0cm95TWV0YWRhdGE6IExlZ2FjeU1ldGFkYXRhIHwgdW5kZWZpbmVkID1cbiAgICBnZXRSZWZsZWN0TWV0YWRhdGE8TGVnYWN5TWV0YWRhdGE+KHR5cGUsIFBSRV9ERVNUUk9ZKTtcblxuICBjb25zdCBjbGFzc01ldGFkYXRhOiBDbGFzc01ldGFkYXRhID0ge1xuICAgIGNvbnN0cnVjdG9yQXJndW1lbnRzOiBnZXRDbGFzc01ldGFkYXRhQ29uc3RydWN0b3JBcmd1bWVudHModHlwZSksXG4gICAgbGlmZWN5Y2xlOiB7XG4gICAgICBwb3N0Q29uc3RydWN0TWV0aG9kTmFtZTogcG9zdENvbnN0cnVjdE1ldGFkYXRhPy52YWx1ZSBhcyBzdHJpbmcsXG4gICAgICBwcmVEZXN0cm95TWV0aG9kTmFtZTogcHJlRGVzdHJveU1ldGFkYXRhPy52YWx1ZSBhcyBzdHJpbmcsXG4gICAgfSxcbiAgICBwcm9wZXJ0aWVzOiBnZXRDbGFzc01ldGFkYXRhUHJvcGVydGllcyh0eXBlKSxcbiAgfTtcblxuICByZXR1cm4gY2xhc3NNZXRhZGF0YTtcbn1cbiIsImltcG9ydCB7IE5ld2FibGUgfSBmcm9tICdAaW52ZXJzaWZ5anMvY29tbW9uJztcblxuaW1wb3J0IHsgQ2xhc3NFbGVtZW50TWV0YWRhdGEgfSBmcm9tICcuLi9tb2RlbHMvQ2xhc3NFbGVtZW50TWV0YWRhdGEnO1xuaW1wb3J0IHsgTGVnYWN5Q29uc3RydWN0b3JNZXRhZGF0YSB9IGZyb20gJy4uL21vZGVscy9MZWdhY3lDb25zdHJ1Y3Rvck1ldGFkYXRhJztcbmltcG9ydCB7IExlZ2FjeU1ldGFkYXRhUmVhZGVyIH0gZnJvbSAnLi4vbW9kZWxzL0xlZ2FjeU1ldGFkYXRhUmVhZGVyJztcbmltcG9ydCB7IGFzc2VydENvbnN0cnVjdG9yTWV0YWRhdGFBcnJheUZpbGxlZCB9IGZyb20gJy4vYXNzZXJ0Q29uc3RydWN0b3JNZXRhZGF0YUFycmF5RmlsbGVkJztcbmltcG9ydCB7IGdldENsYXNzRWxlbWVudE1ldGFkYXRhRnJvbU5ld2FibGUgfSBmcm9tICcuL2dldENsYXNzRWxlbWVudE1ldGFkYXRhRnJvbU5ld2FibGUnO1xuaW1wb3J0IHsgZ2V0Q29uc3RydWN0b3JBcmd1bWVudE1ldGFkYXRhRnJvbUxlZ2FjeU1ldGFkYXRhIH0gZnJvbSAnLi9nZXRDb25zdHJ1Y3RvckFyZ3VtZW50TWV0YWRhdGFGcm9tTGVnYWN5TWV0YWRhdGEnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2xhc3NNZXRhZGF0YUNvbnN0cnVjdG9yQXJndW1lbnRzRnJvbU1ldGFkYXRhUmVhZGVyKFxuICB0eXBlOiBOZXdhYmxlLFxuICBtZXRhZGF0YVJlYWRlcjogTGVnYWN5TWV0YWRhdGFSZWFkZXIsXG4pOiBDbGFzc0VsZW1lbnRNZXRhZGF0YVtdIHtcbiAgY29uc3QgbGVnYWN5Q29uc3RydWN0b3JNZXRhZGF0YTogTGVnYWN5Q29uc3RydWN0b3JNZXRhZGF0YSA9XG4gICAgbWV0YWRhdGFSZWFkZXIuZ2V0Q29uc3RydWN0b3JNZXRhZGF0YSh0eXBlKTtcblxuICBjb25zdCBjb25zdHJ1Y3RvckFyZ3VtZW50c01ldGFkYXRhOiAoQ2xhc3NFbGVtZW50TWV0YWRhdGEgfCB1bmRlZmluZWQpW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IFtzdHJpbmdpZmllZEluZGV4LCBtZXRhZGF0YUxpc3RdIG9mIE9iamVjdC5lbnRyaWVzKFxuICAgIGxlZ2FjeUNvbnN0cnVjdG9yTWV0YWRhdGEudXNlckdlbmVyYXRlZE1ldGFkYXRhLFxuICApKSB7XG4gICAgY29uc3QgaW5kZXg6IG51bWJlciA9IHBhcnNlSW50KHN0cmluZ2lmaWVkSW5kZXgpO1xuXG4gICAgY29uc3RydWN0b3JBcmd1bWVudHNNZXRhZGF0YVtpbmRleF0gPVxuICAgICAgZ2V0Q29uc3RydWN0b3JBcmd1bWVudE1ldGFkYXRhRnJvbUxlZ2FjeU1ldGFkYXRhKFxuICAgICAgICB0eXBlLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgbWV0YWRhdGFMaXN0LFxuICAgICAgKTtcbiAgfVxuXG4gIGlmIChsZWdhY3lDb25zdHJ1Y3Rvck1ldGFkYXRhLmNvbXBpbGVyR2VuZXJhdGVkTWV0YWRhdGEgIT09IHVuZGVmaW5lZCkge1xuICAgIGZvciAoXG4gICAgICBsZXQgaTogbnVtYmVyID0gMDtcbiAgICAgIGkgPCBsZWdhY3lDb25zdHJ1Y3Rvck1ldGFkYXRhLmNvbXBpbGVyR2VuZXJhdGVkTWV0YWRhdGEubGVuZ3RoO1xuICAgICAgKytpXG4gICAgKSB7XG4gICAgICBpZiAoY29uc3RydWN0b3JBcmd1bWVudHNNZXRhZGF0YVtpXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IHR5cGVzY3JpcHRNZXRhZGF0YTogTmV3YWJsZSA9IGxlZ2FjeUNvbnN0cnVjdG9yTWV0YWRhdGFcbiAgICAgICAgICAuY29tcGlsZXJHZW5lcmF0ZWRNZXRhZGF0YVtpXSBhcyBOZXdhYmxlO1xuXG4gICAgICAgIGNvbnN0cnVjdG9yQXJndW1lbnRzTWV0YWRhdGFbaV0gPVxuICAgICAgICAgIGdldENsYXNzRWxlbWVudE1ldGFkYXRhRnJvbU5ld2FibGUodHlwZXNjcmlwdE1ldGFkYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3NlcnRDb25zdHJ1Y3Rvck1ldGFkYXRhQXJyYXlGaWxsZWQodHlwZSwgY29uc3RydWN0b3JBcmd1bWVudHNNZXRhZGF0YSk7XG5cbiAgcmV0dXJuIGNvbnN0cnVjdG9yQXJndW1lbnRzTWV0YWRhdGE7XG59XG4iLCJpbXBvcnQgeyBOZXdhYmxlIH0gZnJvbSAnQGludmVyc2lmeWpzL2NvbW1vbic7XG5cbmltcG9ydCB7IENsYXNzRWxlbWVudE1ldGFkYXRhIH0gZnJvbSAnLi4vbW9kZWxzL0NsYXNzRWxlbWVudE1ldGFkYXRhJztcbmltcG9ydCB7IExlZ2FjeU1ldGFkYXRhIH0gZnJvbSAnLi4vbW9kZWxzL0xlZ2FjeU1ldGFkYXRhJztcbmltcG9ydCB7IExlZ2FjeU1ldGFkYXRhTWFwIH0gZnJvbSAnLi4vbW9kZWxzL0xlZ2FjeU1ldGFkYXRhTWFwJztcbmltcG9ydCB7IExlZ2FjeU1ldGFkYXRhUmVhZGVyIH0gZnJvbSAnLi4vbW9kZWxzL0xlZ2FjeU1ldGFkYXRhUmVhZGVyJztcbmltcG9ydCB7IGdldFByb3BlcnR5TWV0YWRhdGFGcm9tTGVnYWN5TWV0YWRhdGEgfSBmcm9tICcuL2dldFByb3BlcnR5TWV0YWRhdGFGcm9tTGVnYWN5TWV0YWRhdGEnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2xhc3NNZXRhZGF0YVByb3BlcnRpZXNGcm9tTWV0YWRhdGFSZWFkZXIoXG4gIHR5cGU6IE5ld2FibGUsXG4gIG1ldGFkYXRhUmVhZGVyOiBMZWdhY3lNZXRhZGF0YVJlYWRlcixcbik6IE1hcDxzdHJpbmcgfCBzeW1ib2wsIENsYXNzRWxlbWVudE1ldGFkYXRhPiB7XG4gIGNvbnN0IHByb3BlcnRpZXNMZWdhY3lNZXRhZGF0YTogTGVnYWN5TWV0YWRhdGFNYXAgPVxuICAgIG1ldGFkYXRhUmVhZGVyLmdldFByb3BlcnRpZXNNZXRhZGF0YSh0eXBlKTtcblxuICBjb25zdCBwcm9wZXJ0aWVzTWV0YWRhdGE6IE1hcDxzdHJpbmcgfCBzeW1ib2wsIENsYXNzRWxlbWVudE1ldGFkYXRhPiA9XG4gICAgbmV3IE1hcCgpO1xuXG4gIGZvciAoY29uc3QgcHJvcGVydHkgb2YgUmVmbGVjdC5vd25LZXlzKHByb3BlcnRpZXNMZWdhY3lNZXRhZGF0YSkpIHtcbiAgICBjb25zdCBsZWdhY3lNZXRhZGF0YTogTGVnYWN5TWV0YWRhdGFbXSA9IHByb3BlcnRpZXNMZWdhY3lNZXRhZGF0YVtcbiAgICAgIHByb3BlcnR5XG4gICAgXSBhcyBMZWdhY3lNZXRhZGF0YVtdO1xuICAgIHByb3BlcnRpZXNNZXRhZGF0YS5zZXQoXG4gICAgICBwcm9wZXJ0eSxcbiAgICAgIGdldFByb3BlcnR5TWV0YWRhdGFGcm9tTGVnYWN5TWV0YWRhdGEodHlwZSwgcHJvcGVydHksIGxlZ2FjeU1ldGFkYXRhKSxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHByb3BlcnRpZXNNZXRhZGF0YTtcbn1cbiIsImltcG9ydCB7IE5ld2FibGUgfSBmcm9tICdAaW52ZXJzaWZ5anMvY29tbW9uJztcbmltcG9ydCB7IGdldFJlZmxlY3RNZXRhZGF0YSB9IGZyb20gJ0BpbnZlcnNpZnlqcy9yZWZsZWN0LW1ldGFkYXRhLXV0aWxzJztcblxuaW1wb3J0IHsgUE9TVF9DT05TVFJVQ1QsIFBSRV9ERVNUUk9ZIH0gZnJvbSAnLi4vLi4vcmVmbGVjdE1ldGFkYXRhL2RhdGEva2V5cyc7XG5pbXBvcnQgeyBDbGFzc01ldGFkYXRhIH0gZnJvbSAnLi4vbW9kZWxzL0NsYXNzTWV0YWRhdGEnO1xuaW1wb3J0IHsgTGVnYWN5TWV0YWRhdGEgfSBmcm9tICcuLi9tb2RlbHMvTGVnYWN5TWV0YWRhdGEnO1xuaW1wb3J0IHsgTGVnYWN5TWV0YWRhdGFSZWFkZXIgfSBmcm9tICcuLi9tb2RlbHMvTGVnYWN5TWV0YWRhdGFSZWFkZXInO1xuaW1wb3J0IHsgZ2V0Q2xhc3NNZXRhZGF0YUNvbnN0cnVjdG9yQXJndW1lbnRzRnJvbU1ldGFkYXRhUmVhZGVyIH0gZnJvbSAnLi9nZXRDbGFzc01ldGFkYXRhQ29uc3RydWN0b3JBcmd1bWVudHNGcm9tTWV0YWRhdGFSZWFkZXInO1xuaW1wb3J0IHsgZ2V0Q2xhc3NNZXRhZGF0YVByb3BlcnRpZXNGcm9tTWV0YWRhdGFSZWFkZXIgfSBmcm9tICcuL2dldENsYXNzTWV0YWRhdGFQcm9wZXJ0aWVzRnJvbU1ldGFkYXRhUmVhZGVyJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENsYXNzTWV0YWRhdGFGcm9tTWV0YWRhdGFSZWFkZXIoXG4gIHR5cGU6IE5ld2FibGUsXG4gIG1ldGFkYXRhUmVhZGVyOiBMZWdhY3lNZXRhZGF0YVJlYWRlcixcbik6IENsYXNzTWV0YWRhdGEge1xuICBjb25zdCBwb3N0Q29uc3RydWN0TWV0YWRhdGE6IExlZ2FjeU1ldGFkYXRhIHwgdW5kZWZpbmVkID1cbiAgICBnZXRSZWZsZWN0TWV0YWRhdGE8TGVnYWN5TWV0YWRhdGE+KHR5cGUsIFBPU1RfQ09OU1RSVUNUKTtcbiAgY29uc3QgcHJlRGVzdHJveU1ldGFkYXRhOiBMZWdhY3lNZXRhZGF0YSB8IHVuZGVmaW5lZCA9XG4gICAgZ2V0UmVmbGVjdE1ldGFkYXRhPExlZ2FjeU1ldGFkYXRhPih0eXBlLCBQUkVfREVTVFJPWSk7XG5cbiAgY29uc3QgY2xhc3NNZXRhZGF0YTogQ2xhc3NNZXRhZGF0YSA9IHtcbiAgICBjb25zdHJ1Y3RvckFyZ3VtZW50czpcbiAgICAgIGdldENsYXNzTWV0YWRhdGFDb25zdHJ1Y3RvckFyZ3VtZW50c0Zyb21NZXRhZGF0YVJlYWRlcihcbiAgICAgICAgdHlwZSxcbiAgICAgICAgbWV0YWRhdGFSZWFkZXIsXG4gICAgICApLFxuICAgIGxpZmVjeWNsZToge1xuICAgICAgcG9zdENvbnN0cnVjdE1ldGhvZE5hbWU6IHBvc3RDb25zdHJ1Y3RNZXRhZGF0YT8udmFsdWUgYXMgc3RyaW5nLFxuICAgICAgcHJlRGVzdHJveU1ldGhvZE5hbWU6IHByZURlc3Ryb3lNZXRhZGF0YT8udmFsdWUgYXMgc3RyaW5nLFxuICAgIH0sXG4gICAgcHJvcGVydGllczogZ2V0Q2xhc3NNZXRhZGF0YVByb3BlcnRpZXNGcm9tTWV0YWRhdGFSZWFkZXIoXG4gICAgICB0eXBlLFxuICAgICAgbWV0YWRhdGFSZWFkZXIsXG4gICAgKSxcbiAgfTtcblxuICByZXR1cm4gY2xhc3NNZXRhZGF0YTtcbn1cbiIsImltcG9ydCB7IE5ld2FibGUgfSBmcm9tICdAaW52ZXJzaWZ5anMvY29tbW9uJztcblxuaW1wb3J0IHsgUHJvdG90eXBlIH0gZnJvbSAnLi4vbW9kZWxzL1Byb3RvdHlwZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCYXNlVHlwZTxUSW5zdGFuY2UsIFRBcmdzIGV4dGVuZHMgdW5rbm93bltdPihcbiAgdHlwZTogTmV3YWJsZTxUSW5zdGFuY2UsIFRBcmdzPixcbik6IE5ld2FibGUgfCB1bmRlZmluZWQge1xuICBjb25zdCBwcm90b3R5cGU6IFByb3RvdHlwZSB8IG51bGwgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoXG4gICAgdHlwZS5wcm90b3R5cGUsXG4gICkgYXMgUHJvdG90eXBlIHwgbnVsbDtcblxuICBjb25zdCBiYXNlVHlwZTogTmV3YWJsZSB8IHVuZGVmaW5lZCA9IHByb3RvdHlwZT8uY29uc3RydWN0b3I7XG5cbiAgcmV0dXJuIGJhc2VUeXBlO1xufVxuIiwidmFyIHggPSAoeSkgPT4ge1xuXHR2YXIgeCA9IHt9OyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoeCwgeSk7IHJldHVybiB4XG59IFxudmFyIHkgPSAoeCkgPT4gKCgpID0+ICh4KSlcbmNvbnN0IF9fV0VCUEFDS19OQU1FU1BBQ0VfT0JKRUNUX18gPSB4KHsgW1wiTGF6eVNlcnZpY2VJZGVudGlmaWVyXCJdOiAoKSA9PiAoX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9faW52ZXJzaWZ5anNfY29tbW9uXzA4MWQ4YzA3X18uTGF6eVNlcnZpY2VJZGVudGlmaWVyKSB9KTsiLCJpbXBvcnQge1xuICBJTkpFQ1RfVEFHLFxuICBNVUxUSV9JTkpFQ1RfVEFHLFxuICBOQU1FX1RBRyxcbiAgTkFNRURfVEFHLFxuICBPUFRJT05BTF9UQUcsXG4gIFVOTUFOQUdFRF9UQUcsXG59IGZyb20gJy4uLy4uL3JlZmxlY3RNZXRhZGF0YS9kYXRhL2tleXMnO1xuaW1wb3J0IHsgQ2xhc3NFbGVtZW50TWV0YWRhdGEgfSBmcm9tICcuLi9tb2RlbHMvQ2xhc3NFbGVtZW50TWV0YWRhdGEnO1xuaW1wb3J0IHsgQ2xhc3NFbGVtZW50TWV0YWRhdGFLaW5kIH0gZnJvbSAnLi4vbW9kZWxzL0NsYXNzRWxlbWVudE1ldGFkYXRhS2luZCc7XG5pbXBvcnQgeyBMZWdhY3lNZXRhZGF0YSB9IGZyb20gJy4uL21vZGVscy9MZWdhY3lNZXRhZGF0YSc7XG5pbXBvcnQgeyBNYW5hZ2VkQ2xhc3NFbGVtZW50TWV0YWRhdGEgfSBmcm9tICcuLi9tb2RlbHMvTWFuYWdlZENsYXNzRWxlbWVudE1ldGFkYXRhJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldExlZ2FjeU1ldGFkYXRhKFxuICBjbGFzc0VsZW1lbnRNZXRhZGF0YTogQ2xhc3NFbGVtZW50TWV0YWRhdGEsXG4pOiBMZWdhY3lNZXRhZGF0YVtdIHtcbiAgc3dpdGNoIChjbGFzc0VsZW1lbnRNZXRhZGF0YS5raW5kKSB7XG4gICAgY2FzZSBDbGFzc0VsZW1lbnRNZXRhZGF0YUtpbmQudW5tYW5hZ2VkOlxuICAgICAgcmV0dXJuIGdldFVubWFuYWdlZExlZ2FjeU1ldGFkYXRhKCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBnZXRNYW5hZ2VkTGVnYWN5TWV0YWRhdGEoY2xhc3NFbGVtZW50TWV0YWRhdGEpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldE1hbmFnZWRMZWdhY3lNZXRhZGF0YShcbiAgY2xhc3NFbGVtZW50TWV0YWRhdGE6IE1hbmFnZWRDbGFzc0VsZW1lbnRNZXRhZGF0YSxcbik6IExlZ2FjeU1ldGFkYXRhW10ge1xuICBjb25zdCBsZWdhY3lNZXRhZGF0YUxpc3Q6IExlZ2FjeU1ldGFkYXRhW10gPSBbXG4gICAgZ2V0TWFuYWdlZEtpbmRMZWdhY3lNZXRhZGF0YShjbGFzc0VsZW1lbnRNZXRhZGF0YSksXG4gIF07XG5cbiAgaWYgKGNsYXNzRWxlbWVudE1ldGFkYXRhLm5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgIGxlZ2FjeU1ldGFkYXRhTGlzdC5wdXNoKHtcbiAgICAgIGtleTogTkFNRURfVEFHLFxuICAgICAgdmFsdWU6IGNsYXNzRWxlbWVudE1ldGFkYXRhLm5hbWUsXG4gICAgfSk7XG4gIH1cblxuICBpZiAoY2xhc3NFbGVtZW50TWV0YWRhdGEub3B0aW9uYWwpIHtcbiAgICBsZWdhY3lNZXRhZGF0YUxpc3QucHVzaCh7XG4gICAgICBrZXk6IE9QVElPTkFMX1RBRyxcbiAgICAgIHZhbHVlOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgZm9yIChjb25zdCBbdGFnS2V5LCB0YWdWYWx1ZV0gb2YgY2xhc3NFbGVtZW50TWV0YWRhdGEudGFncykge1xuICAgIGxlZ2FjeU1ldGFkYXRhTGlzdC5wdXNoKHtcbiAgICAgIGtleTogdGFnS2V5LFxuICAgICAgdmFsdWU6IHRhZ1ZhbHVlLFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKGNsYXNzRWxlbWVudE1ldGFkYXRhLnRhcmdldE5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgIGxlZ2FjeU1ldGFkYXRhTGlzdC5wdXNoKHtcbiAgICAgIGtleTogTkFNRV9UQUcsXG4gICAgICB2YWx1ZTogY2xhc3NFbGVtZW50TWV0YWRhdGEudGFyZ2V0TmFtZSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBsZWdhY3lNZXRhZGF0YUxpc3Q7XG59XG5cbmZ1bmN0aW9uIGdldE1hbmFnZWRLaW5kTGVnYWN5TWV0YWRhdGEoXG4gIGNsYXNzRWxlbWVudE1ldGFkYXRhOiBNYW5hZ2VkQ2xhc3NFbGVtZW50TWV0YWRhdGEsXG4pOiBMZWdhY3lNZXRhZGF0YSB7XG4gIGxldCBraW5kTGVnYWN5TWV0YWRhdGE6IExlZ2FjeU1ldGFkYXRhO1xuXG4gIHN3aXRjaCAoY2xhc3NFbGVtZW50TWV0YWRhdGEua2luZCkge1xuICAgIGNhc2UgQ2xhc3NFbGVtZW50TWV0YWRhdGFLaW5kLm11bHRpcGxlSW5qZWN0aW9uOlxuICAgICAga2luZExlZ2FjeU1ldGFkYXRhID0ge1xuICAgICAgICBrZXk6IE1VTFRJX0lOSkVDVF9UQUcsXG4gICAgICAgIHZhbHVlOiBjbGFzc0VsZW1lbnRNZXRhZGF0YS52YWx1ZSxcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIENsYXNzRWxlbWVudE1ldGFkYXRhS2luZC5zaW5nbGVJbmplY3Rpb246XG4gICAgICBraW5kTGVnYWN5TWV0YWRhdGEgPSB7XG4gICAgICAgIGtleTogSU5KRUNUX1RBRyxcbiAgICAgICAgdmFsdWU6IGNsYXNzRWxlbWVudE1ldGFkYXRhLnZhbHVlLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIGtpbmRMZWdhY3lNZXRhZGF0YTtcbn1cblxuZnVuY3Rpb24gZ2V0VW5tYW5hZ2VkTGVnYWN5TWV0YWRhdGEoKTogTGVnYWN5TWV0YWRhdGFbXSB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAga2V5OiBVTk1BTkFHRURfVEFHLFxuICAgICAgdmFsdWU6IHRydWUsXG4gICAgfSxcbiAgXTtcbn1cbiIsImltcG9ydCB7IExlZ2FjeVF1ZXJ5YWJsZVN0cmluZyB9IGZyb20gJy4vTGVnYWN5UXVlcnlhYmxlU3RyaW5nJztcblxuZXhwb3J0IGNsYXNzIExlZ2FjeVF1ZXJ5YWJsZVN0cmluZ0ltcGwgaW1wbGVtZW50cyBMZWdhY3lRdWVyeWFibGVTdHJpbmcge1xuICByZWFkb25seSAjc3RyOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc3RyOiBzdHJpbmcpIHtcbiAgICB0aGlzLiNzdHIgPSBzdHI7XG4gIH1cblxuICBwdWJsaWMgc3RhcnRzV2l0aChzZWFyY2hTdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNzdHIuc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcpO1xuICB9XG5cbiAgcHVibGljIGVuZHNXaXRoKHNlYXJjaFN0cmluZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI3N0ci5lbmRzV2l0aChzZWFyY2hTdHJpbmcpO1xuICB9XG5cbiAgcHVibGljIGNvbnRhaW5zKHNlYXJjaFN0cmluZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI3N0ci5pbmNsdWRlcyhzZWFyY2hTdHJpbmcpO1xuICB9XG5cbiAgcHVibGljIGVxdWFscyhjb21wYXJlU3RyaW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jc3RyID09PSBjb21wYXJlU3RyaW5nO1xuICB9XG5cbiAgcHVibGljIHZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI3N0cjtcbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgZ2V0UmVmbGVjdE1ldGFkYXRhLFxuICB1cGRhdGVSZWZsZWN0TWV0YWRhdGEsXG59IGZyb20gJ0BpbnZlcnNpZnlqcy9yZWZsZWN0LW1ldGFkYXRhLXV0aWxzJztcblxuY29uc3QgSURfTUVUQURBVEE6IHN0cmluZyA9ICdAaW52ZXJzaWZ5anMvY29yZS90YXJnZXRJZCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYXJnZXRJZCgpOiBudW1iZXIge1xuICBjb25zdCB0YXJnZXRJZDogbnVtYmVyID0gZ2V0UmVmbGVjdE1ldGFkYXRhPG51bWJlcj4oT2JqZWN0LCBJRF9NRVRBREFUQSkgPz8gMDtcblxuICBpZiAodGFyZ2V0SWQgPT09IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgdXBkYXRlUmVmbGVjdE1ldGFkYXRhKFxuICAgICAgT2JqZWN0LFxuICAgICAgSURfTUVUQURBVEEsXG4gICAgICB0YXJnZXRJZCxcbiAgICAgICgpID0+IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSLFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgdXBkYXRlUmVmbGVjdE1ldGFkYXRhKFxuICAgICAgT2JqZWN0LFxuICAgICAgSURfTUVUQURBVEEsXG4gICAgICB0YXJnZXRJZCxcbiAgICAgIChpZDogbnVtYmVyKSA9PiBpZCArIDEsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiB0YXJnZXRJZDtcbn1cbiIsImltcG9ydCB7IExhenlTZXJ2aWNlSWRlbnRpZmllciwgU2VydmljZUlkZW50aWZpZXIgfSBmcm9tICdAaW52ZXJzaWZ5anMvY29tbW9uJztcblxuaW1wb3J0IHsgZ2V0TGVnYWN5TWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tZXRhZGF0YS9jYWxjdWxhdGlvbnMvZ2V0TGVnYWN5TWV0YWRhdGEnO1xuaW1wb3J0IHsgQ2xhc3NFbGVtZW50TWV0YWRhdGFLaW5kIH0gZnJvbSAnLi4vLi4vbWV0YWRhdGEvbW9kZWxzL0NsYXNzRWxlbWVudE1ldGFkYXRhS2luZCc7XG5pbXBvcnQgeyBMZWdhY3lNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21ldGFkYXRhL21vZGVscy9MZWdhY3lNZXRhZGF0YSc7XG5pbXBvcnQgeyBNYW5hZ2VkQ2xhc3NFbGVtZW50TWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tZXRhZGF0YS9tb2RlbHMvTWFuYWdlZENsYXNzRWxlbWVudE1ldGFkYXRhJztcbmltcG9ydCB7IE1ldGFkYXRhTmFtZSB9IGZyb20gJy4uLy4uL21ldGFkYXRhL21vZGVscy9NZXRhZGF0YU5hbWUnO1xuaW1wb3J0IHsgTWV0YWRhdGFUYWcgfSBmcm9tICcuLi8uLi9tZXRhZGF0YS9tb2RlbHMvTWV0YWRhdGFUYWcnO1xuaW1wb3J0IHsgTkFNRURfVEFHIH0gZnJvbSAnLi4vLi4vcmVmbGVjdE1ldGFkYXRhL2RhdGEva2V5cyc7XG5pbXBvcnQgeyBMZWdhY3lRdWVyeWFibGVTdHJpbmcgfSBmcm9tICcuLi8uLi9zdHJpbmcvbW9kZWxzL0xlZ2FjeVF1ZXJ5YWJsZVN0cmluZyc7XG5pbXBvcnQgeyBMZWdhY3lRdWVyeWFibGVTdHJpbmdJbXBsIH0gZnJvbSAnLi4vLi4vc3RyaW5nL21vZGVscy9MZWdhY3lRdWVyeWFibGVTdHJpbmdJbXBsJztcbmltcG9ydCB7IGdldERlc2NyaXB0aW9uIH0gZnJvbSAnLi4vLi4vc3ltYm9sL2NhbGN1bGF0aW9ucy9nZXREZXNjcmlwdGlvbic7XG5pbXBvcnQgeyBnZXRUYXJnZXRJZCB9IGZyb20gJy4uL2NhbGN1bGF0aW9ucy9nZXRUYXJnZXRJZCc7XG5pbXBvcnQgeyBMZWdhY3lUYXJnZXQgfSBmcm9tICcuL0xlZ2FjeVRhcmdldCc7XG5pbXBvcnQgeyBMZWdhY3lUYXJnZXRUeXBlIH0gZnJvbSAnLi9MZWdhY3lUYXJnZXRUeXBlJztcblxuZXhwb3J0IGNsYXNzIExlZ2FjeVRhcmdldEltcGwgaW1wbGVtZW50cyBMZWdhY3lUYXJnZXQge1xuICByZWFkb25seSAjbWV0YWRhdGE6IE1hbmFnZWRDbGFzc0VsZW1lbnRNZXRhZGF0YTtcbiAgcmVhZG9ubHkgI2lkOiBudW1iZXI7XG4gIHJlYWRvbmx5ICNpZGVudGlmaWVyOiBzdHJpbmcgfCBzeW1ib2w7XG4gICNsYXp5TGVnYWN5TWV0YWRhdGE6IExlZ2FjeU1ldGFkYXRhW10gfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5ICNuYW1lOiBMZWdhY3lRdWVyeWFibGVTdHJpbmc7XG4gIHJlYWRvbmx5ICN0eXBlOiBMZWdhY3lUYXJnZXRUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGlkZW50aWZpZXI6IHN0cmluZyB8IHN5bWJvbCxcbiAgICBtZXRhZGF0YTogTWFuYWdlZENsYXNzRWxlbWVudE1ldGFkYXRhLFxuICAgIHR5cGU6IExlZ2FjeVRhcmdldFR5cGUsXG4gICkge1xuICAgIHRoaXMuI2lkID0gZ2V0VGFyZ2V0SWQoKTtcbiAgICB0aGlzLiNpZGVudGlmaWVyID0gaWRlbnRpZmllcjtcbiAgICB0aGlzLiNsYXp5TGVnYWN5TWV0YWRhdGEgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy4jbWV0YWRhdGEgPSBtZXRhZGF0YTtcbiAgICB0aGlzLiNuYW1lID0gbmV3IExlZ2FjeVF1ZXJ5YWJsZVN0cmluZ0ltcGwoXG4gICAgICB0eXBlb2YgaWRlbnRpZmllciA9PT0gJ3N0cmluZycgPyBpZGVudGlmaWVyIDogZ2V0RGVzY3JpcHRpb24oaWRlbnRpZmllciksXG4gICAgKTtcbiAgICB0aGlzLiN0eXBlID0gdHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaWQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy4jaWQ7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBhIGNsYXNzIHByb3BlcnR5IHRhcmdldCwgdGhpcyBpcyB0aGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gYmUgaW5qZWN0ZWRcbiAgICovXG4gIHB1YmxpYyBnZXQgaWRlbnRpZmllcigpOiBzdHJpbmcgfCBzeW1ib2wge1xuICAgIHJldHVybiB0aGlzLiNpZGVudGlmaWVyO1xuICB9XG5cbiAgcHVibGljIGdldCBtZXRhZGF0YSgpOiBMZWdhY3lNZXRhZGF0YVtdIHtcbiAgICBpZiAodGhpcy4jbGF6eUxlZ2FjeU1ldGFkYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuI2xhenlMZWdhY3lNZXRhZGF0YSA9IGdldExlZ2FjeU1ldGFkYXRhKHRoaXMuI21ldGFkYXRhKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy4jbGF6eUxlZ2FjeU1ldGFkYXRhO1xuICB9XG5cbiAgcHVibGljIGdldCBuYW1lKCk6IExlZ2FjeVF1ZXJ5YWJsZVN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI25hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHR5cGUoKTogTGVnYWN5VGFyZ2V0VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuI3R5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlcnZpY2VJZGVudGlmaWVyKCk6IFNlcnZpY2VJZGVudGlmaWVyIHtcbiAgICBpZiAoTGF6eVNlcnZpY2VJZGVudGlmaWVyLmlzKHRoaXMuI21ldGFkYXRhLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIHRoaXMuI21ldGFkYXRhLnZhbHVlLnVud3JhcCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy4jbWV0YWRhdGEudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEN1c3RvbVRhZ3MoKTogTGVnYWN5TWV0YWRhdGFbXSB8IG51bGwge1xuICAgIHJldHVybiBbLi4udGhpcy4jbWV0YWRhdGEudGFncy5lbnRyaWVzKCldLm1hcChcbiAgICAgIChba2V5LCB2YWx1ZV06IFtNZXRhZGF0YVRhZywgdW5rbm93bl0pOiBMZWdhY3lNZXRhZGF0YSA9PiAoe1xuICAgICAgICBrZXksXG4gICAgICAgIHZhbHVlLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXROYW1lZFRhZygpOiBMZWdhY3lNZXRhZGF0YTxNZXRhZGF0YU5hbWU+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuI21ldGFkYXRhLm5hbWUgPT09IHVuZGVmaW5lZFxuICAgICAgPyBudWxsXG4gICAgICA6IHtcbiAgICAgICAgICBrZXk6IE5BTUVEX1RBRyxcbiAgICAgICAgICB2YWx1ZTogdGhpcy4jbWV0YWRhdGEubmFtZSxcbiAgICAgICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNUYWcoa2V5OiBNZXRhZGF0YVRhZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1ldGFkYXRhLnNvbWUoXG4gICAgICAobWV0YWRhdGE6IExlZ2FjeU1ldGFkYXRhKTogYm9vbGVhbiA9PiBtZXRhZGF0YS5rZXkgPT09IGtleSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGlzQXJyYXkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI21ldGFkYXRhLmtpbmQgPT09IENsYXNzRWxlbWVudE1ldGFkYXRhS2luZC5tdWx0aXBsZUluamVjdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBpc05hbWVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNtZXRhZGF0YS5uYW1lICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgaXNPcHRpb25hbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jbWV0YWRhdGEub3B0aW9uYWw7XG4gIH1cblxuICBwdWJsaWMgaXNUYWdnZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI21ldGFkYXRhLnRhZ3Muc2l6ZSA+IDA7XG4gIH1cblxuICBwdWJsaWMgbWF0Y2hlc0FycmF5KG5hbWU6IFNlcnZpY2VJZGVudGlmaWVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNBcnJheSgpICYmIHRoaXMuI21ldGFkYXRhLnZhbHVlID09PSBuYW1lO1xuICB9XG5cbiAgcHVibGljIG1hdGNoZXNOYW1lZFRhZyhuYW1lOiBNZXRhZGF0YU5hbWUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jbWV0YWRhdGEubmFtZSA9PT0gbmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBtYXRjaGVzVGFnKGtleTogTWV0YWRhdGFUYWcpOiAodmFsdWU6IHVua25vd24pID0+IGJvb2xlYW4ge1xuICAgIHJldHVybiAodmFsdWU6IHVua25vd24pOiBib29sZWFuID0+XG4gICAgICB0aGlzLm1ldGFkYXRhLnNvbWUoXG4gICAgICAgIChtZXRhZGF0YTogTGVnYWN5TWV0YWRhdGEpOiBib29sZWFuID0+XG4gICAgICAgICAgbWV0YWRhdGEua2V5ID09PSBrZXkgJiYgbWV0YWRhdGEudmFsdWUgPT09IHZhbHVlLFxuICAgICAgKTtcbiAgfVxufVxuIiwiY29uc3QgU1lNQk9MX0lOREVYX1NUQVJUOiBudW1iZXIgPSA3O1xuY29uc3QgU1lNQk9MX0lOREVYX0VORDogbnVtYmVyID0gLTE7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXNjcmlwdGlvbihzeW1ib2w6IHN5bWJvbCkge1xuICByZXR1cm4gc3ltYm9sLnRvU3RyaW5nKCkuc2xpY2UoU1lNQk9MX0lOREVYX1NUQVJULCBTWU1CT0xfSU5ERVhfRU5EKTtcbn1cbiIsImltcG9ydCB7IE5ld2FibGUgfSBmcm9tICdAaW52ZXJzaWZ5anMvY29tbW9uJztcblxuaW1wb3J0IHsgZ2V0Q2xhc3NNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21ldGFkYXRhL2NhbGN1bGF0aW9ucy9nZXRDbGFzc01ldGFkYXRhJztcbmltcG9ydCB7IGdldENsYXNzTWV0YWRhdGFGcm9tTWV0YWRhdGFSZWFkZXIgfSBmcm9tICcuLi8uLi9tZXRhZGF0YS9jYWxjdWxhdGlvbnMvZ2V0Q2xhc3NNZXRhZGF0YUZyb21NZXRhZGF0YVJlYWRlcic7XG5pbXBvcnQgeyBnZXRDbGFzc01ldGFkYXRhUHJvcGVydGllcyB9IGZyb20gJy4uLy4uL21ldGFkYXRhL2NhbGN1bGF0aW9ucy9nZXRDbGFzc01ldGFkYXRhUHJvcGVydGllcyc7XG5pbXBvcnQgeyBnZXRDbGFzc01ldGFkYXRhUHJvcGVydGllc0Zyb21NZXRhZGF0YVJlYWRlciB9IGZyb20gJy4uLy4uL21ldGFkYXRhL2NhbGN1bGF0aW9ucy9nZXRDbGFzc01ldGFkYXRhUHJvcGVydGllc0Zyb21NZXRhZGF0YVJlYWRlcic7XG5pbXBvcnQgeyBDbGFzc0VsZW1lbnRNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21ldGFkYXRhL21vZGVscy9DbGFzc0VsZW1lbnRNZXRhZGF0YSc7XG5pbXBvcnQgeyBDbGFzc01ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbWV0YWRhdGEvbW9kZWxzL0NsYXNzTWV0YWRhdGEnO1xuaW1wb3J0IHsgTGVnYWN5TWV0YWRhdGFSZWFkZXIgfSBmcm9tICcuLi8uLi9tZXRhZGF0YS9tb2RlbHMvTGVnYWN5TWV0YWRhdGFSZWFkZXInO1xuaW1wb3J0IHsgTGVnYWN5VGFyZ2V0IH0gZnJvbSAnLi4vbW9kZWxzL0xlZ2FjeVRhcmdldCc7XG5pbXBvcnQgeyBnZXRUYXJnZXRzRnJvbU1ldGFkYXRhUHJvdmlkZXJzIH0gZnJvbSAnLi9nZXRUYXJnZXRzRnJvbU1ldGFkYXRhUHJvdmlkZXJzJztcblxuZXhwb3J0IGNvbnN0IGdldFRhcmdldHM6IChcbiAgbWV0YWRhdGFSZWFkZXI/OiBMZWdhY3lNZXRhZGF0YVJlYWRlcixcbikgPT4gKHR5cGU6IE5ld2FibGUpID0+IExlZ2FjeVRhcmdldFtdID0gKFxuICBtZXRhZGF0YVJlYWRlcj86IExlZ2FjeU1ldGFkYXRhUmVhZGVyLFxuKTogKCh0eXBlOiBOZXdhYmxlKSA9PiBMZWdhY3lUYXJnZXRbXSkgPT4ge1xuICBjb25zdCBnZXRDbGFzc01ldGFkYXRhRm46ICh0eXBlOiBOZXdhYmxlKSA9PiBDbGFzc01ldGFkYXRhID1cbiAgICBtZXRhZGF0YVJlYWRlciA9PT0gdW5kZWZpbmVkXG4gICAgICA/IGdldENsYXNzTWV0YWRhdGFcbiAgICAgIDogKHR5cGU6IE5ld2FibGUpOiBDbGFzc01ldGFkYXRhID0+XG4gICAgICAgICAgZ2V0Q2xhc3NNZXRhZGF0YUZyb21NZXRhZGF0YVJlYWRlcih0eXBlLCBtZXRhZGF0YVJlYWRlcik7XG4gIGNvbnN0IGdldENsYXNzTWV0YWRhdGFQcm9wZXJ0aWVzRm46IChcbiAgICB0eXBlOiBOZXdhYmxlLFxuICApID0+IE1hcDxzdHJpbmcgfCBzeW1ib2wsIENsYXNzRWxlbWVudE1ldGFkYXRhPiA9XG4gICAgbWV0YWRhdGFSZWFkZXIgPT09IHVuZGVmaW5lZFxuICAgICAgPyBnZXRDbGFzc01ldGFkYXRhUHJvcGVydGllc1xuICAgICAgOiAodHlwZTogTmV3YWJsZSk6IE1hcDxzdHJpbmcgfCBzeW1ib2wsIENsYXNzRWxlbWVudE1ldGFkYXRhPiA9PlxuICAgICAgICAgIGdldENsYXNzTWV0YWRhdGFQcm9wZXJ0aWVzRnJvbU1ldGFkYXRhUmVhZGVyKHR5cGUsIG1ldGFkYXRhUmVhZGVyKTtcblxuICByZXR1cm4gZ2V0VGFyZ2V0c0Zyb21NZXRhZGF0YVByb3ZpZGVycyhcbiAgICBnZXRDbGFzc01ldGFkYXRhRm4sXG4gICAgZ2V0Q2xhc3NNZXRhZGF0YVByb3BlcnRpZXNGbixcbiAgKTtcbn07XG4iLCJpbXBvcnQgeyBOZXdhYmxlIH0gZnJvbSAnQGludmVyc2lmeWpzL2NvbW1vbic7XG5cbmltcG9ydCB7IENsYXNzRWxlbWVudE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbWV0YWRhdGEvbW9kZWxzL0NsYXNzRWxlbWVudE1ldGFkYXRhJztcbmltcG9ydCB7IENsYXNzRWxlbWVudE1ldGFkYXRhS2luZCB9IGZyb20gJy4uLy4uL21ldGFkYXRhL21vZGVscy9DbGFzc0VsZW1lbnRNZXRhZGF0YUtpbmQnO1xuaW1wb3J0IHsgQ2xhc3NNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21ldGFkYXRhL21vZGVscy9DbGFzc01ldGFkYXRhJztcbmltcG9ydCB7IGdldEJhc2VUeXBlIH0gZnJvbSAnLi4vLi4vcHJvdG90eXBlL2NhbGN1bGF0aW9ucy9nZXRCYXNlVHlwZSc7XG5pbXBvcnQgeyBMZWdhY3lUYXJnZXQgfSBmcm9tICcuLi9tb2RlbHMvTGVnYWN5VGFyZ2V0JztcbmltcG9ydCB7IExlZ2FjeVRhcmdldEltcGwgfSBmcm9tICcuLi9tb2RlbHMvTGVnYWN5VGFyZ2V0SW1wbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYXJnZXRzRnJvbU1ldGFkYXRhUHJvdmlkZXJzKFxuICBnZXRDbGFzc01ldGFkYXRhOiAodHlwZTogTmV3YWJsZSkgPT4gQ2xhc3NNZXRhZGF0YSxcbiAgZ2V0Q2xhc3NNZXRhZGF0YVByb3BlcnRpZXM6IChcbiAgICB0eXBlOiBOZXdhYmxlLFxuICApID0+IE1hcDxzdHJpbmcgfCBzeW1ib2wsIENsYXNzRWxlbWVudE1ldGFkYXRhPixcbik6ICh0eXBlOiBOZXdhYmxlKSA9PiBMZWdhY3lUYXJnZXRbXSB7XG4gIHJldHVybiBmdW5jdGlvbiBnZXRUYWdldHModHlwZTogTmV3YWJsZSk6IExlZ2FjeVRhcmdldFtdIHtcbiAgICBjb25zdCBjbGFzc01ldGFkYXRhOiBDbGFzc01ldGFkYXRhID0gZ2V0Q2xhc3NNZXRhZGF0YSh0eXBlKTtcblxuICAgIGxldCBiYXNlVHlwZTogTmV3YWJsZSB8IHVuZGVmaW5lZCA9IGdldEJhc2VUeXBlKHR5cGUpO1xuXG4gICAgd2hpbGUgKGJhc2VUeXBlICE9PSB1bmRlZmluZWQgJiYgYmFzZVR5cGUgIT09IE9iamVjdCkge1xuICAgICAgY29uc3QgY2xhc3NNZXRhZGF0YVByb3BlcnRpZXM6IE1hcDxcbiAgICAgICAgc3RyaW5nIHwgc3ltYm9sLFxuICAgICAgICBDbGFzc0VsZW1lbnRNZXRhZGF0YVxuICAgICAgPiA9IGdldENsYXNzTWV0YWRhdGFQcm9wZXJ0aWVzKGJhc2VUeXBlKTtcblxuICAgICAgZm9yIChjb25zdCBbcHJvcGVydHlLZXksIHByb3BlcnR5VmFsdWVdIG9mIGNsYXNzTWV0YWRhdGFQcm9wZXJ0aWVzKSB7XG4gICAgICAgIGlmICghY2xhc3NNZXRhZGF0YS5wcm9wZXJ0aWVzLmhhcyhwcm9wZXJ0eUtleSkpIHtcbiAgICAgICAgICBjbGFzc01ldGFkYXRhLnByb3BlcnRpZXMuc2V0KHByb3BlcnR5S2V5LCBwcm9wZXJ0eVZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBiYXNlVHlwZSA9IGdldEJhc2VUeXBlKGJhc2VUeXBlKTtcbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRzOiBMZWdhY3lUYXJnZXRbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBjb25zdHJ1Y3RvckFyZ3VtZW50IG9mIGNsYXNzTWV0YWRhdGEuY29uc3RydWN0b3JBcmd1bWVudHMpIHtcbiAgICAgIGlmIChjb25zdHJ1Y3RvckFyZ3VtZW50LmtpbmQgIT09IENsYXNzRWxlbWVudE1ldGFkYXRhS2luZC51bm1hbmFnZWQpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0TmFtZTogc3RyaW5nID0gY29uc3RydWN0b3JBcmd1bWVudC50YXJnZXROYW1lID8/ICcnO1xuXG4gICAgICAgIHRhcmdldHMucHVzaChcbiAgICAgICAgICBuZXcgTGVnYWN5VGFyZ2V0SW1wbChcbiAgICAgICAgICAgIHRhcmdldE5hbWUsXG4gICAgICAgICAgICBjb25zdHJ1Y3RvckFyZ3VtZW50LFxuICAgICAgICAgICAgJ0NvbnN0cnVjdG9yQXJndW1lbnQnLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbcHJvcGVydHksIG1ldGFkYXRhXSBvZiBjbGFzc01ldGFkYXRhLnByb3BlcnRpZXMpIHtcbiAgICAgIGlmIChtZXRhZGF0YS5raW5kICE9PSBDbGFzc0VsZW1lbnRNZXRhZGF0YUtpbmQudW5tYW5hZ2VkKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldE5hbWU6IHN0cmluZyB8IHN5bWJvbCA9IG1ldGFkYXRhLnRhcmdldE5hbWUgPz8gcHJvcGVydHk7XG5cbiAgICAgICAgdGFyZ2V0cy5wdXNoKFxuICAgICAgICAgIG5ldyBMZWdhY3lUYXJnZXRJbXBsKHRhcmdldE5hbWUsIG1ldGFkYXRhLCAnQ2xhc3NQcm9wZXJ0eScpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXRzO1xuICB9O1xufVxuIl0sIm5hbWVzIjpbIl9fd2VicGFja19yZXF1aXJlX18iLCJleHBvcnRzIiwiZGVmaW5pdGlvbiIsImtleSIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJvYmoiLCJwcm9wIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwieSIsIl9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfX2ludmVyc2lmeWpzX3JlZmxlY3RfbWV0YWRhdGFfdXRpbHNfOGVjYzRjMTZfXyIsIngiLCJkIiwiTkFNRURfVEFHIiwiTkFNRV9UQUciLCJVTk1BTkFHRURfVEFHIiwiT1BUSU9OQUxfVEFHIiwiSU5KRUNUX1RBRyIsIk1VTFRJX0lOSkVDVF9UQUciLCJUQUdHRUQiLCJUQUdHRURfUFJPUCIsIkRFU0lHTl9QQVJBTV9UWVBFUyIsIlBPU1RfQ09OU1RSVUNUIiwiUFJFX0RFU1RST1kiLCJOT05fQ1VTVE9NX1RBR19LRVlTIiwiaXNBcHBFcnJvclN5bWJvbCIsIlN5bWJvbCIsImZvciIsIkludmVyc2lmeUNvcmVFcnJvciIsIkVycm9yIiwia2luZCIsImNvbnN0cnVjdG9yIiwibWVzc2FnZSIsIm9wdGlvbnMiLCJzdXBlciIsInRoaXMiLCJpcyIsInZhbHVlIiwiaXNFcnJvck9mS2luZCIsIkludmVyc2lmeUNvcmVFcnJvcktpbmQiLCJDbGFzc0VsZW1lbnRNZXRhZGF0YUtpbmQiLCJhc3NlcnRDb25zdHJ1Y3Rvck1ldGFkYXRhQXJyYXlGaWxsZWQiLCJ0eXBlIiwidW5kZWZpbmVkSW5kZXhlcyIsImkiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJwdXNoIiwibWlzc2luZ0luamVjdGlvbkRlY29yYXRvciIsIm5hbWUiLCJqb2luIiwiZ2V0Q2xhc3NFbGVtZW50TWV0YWRhdGFGcm9tTmV3YWJsZSIsInNpbmdsZUluamVjdGlvbiIsIm9wdGlvbmFsIiwidGFncyIsIk1hcCIsInRhcmdldE5hbWUiLCJnZXRDbGFzc0VsZW1lbnRNZXRhZGF0YUZyb21MZWdhY3lNZXRhZGF0YSIsIm1ldGFkYXRhTGlzdCIsImluamVjdE1ldGFkYXRhIiwiZmluZCIsIm1ldGFkYXRhIiwibXVsdGlJbmplY3RNZXRhZGF0YSIsInVubWFuYWdlZCIsImdldFVubWFuYWdlZENsYXNzRWxlbWVudE1ldGFkYXRhIiwibmFtZU1ldGFkYXRhIiwib3B0aW9uYWxNZXRhZGF0YSIsInRhcmdldE5hbWVNZXRhZGF0YSIsIm11bHRpcGxlSW5qZWN0aW9uIiwiZmlsdGVyIiwiZXZlcnkiLCJjdXN0b21UYWdLZXkiLCJtYXAiLCJnZXRDb25zdHJ1Y3RvckFyZ3VtZW50TWV0YWRhdGFGcm9tTGVnYWN5TWV0YWRhdGEiLCJpbmRleCIsImVycm9yIiwidG9TdHJpbmciLCJjYXVzZSIsImdldENsYXNzTWV0YWRhdGFDb25zdHJ1Y3RvckFyZ3VtZW50cyIsInR5cGVzY3JpcHRNZXRhZGF0YUxpc3QiLCJnZXRSZWZsZWN0TWV0YWRhdGEiLCJjb25zdHJ1Y3RvclBhcmFtZXRlcnNMZWdhY3lNZXRhZGF0YSIsImNvbnN0cnVjdG9yQXJndW1lbnRzTWV0YWRhdGEiLCJzdHJpbmdpZmllZEluZGV4IiwiZW50cmllcyIsInBhcnNlSW50IiwidHlwZXNjcmlwdE1ldGFkYXRhIiwiZ2V0UHJvcGVydHlNZXRhZGF0YUZyb21MZWdhY3lNZXRhZGF0YSIsImdldENsYXNzTWV0YWRhdGFQcm9wZXJ0aWVzIiwicHJvcGVydGllc0xlZ2FjeU1ldGFkYXRhIiwicHJvcGVydGllc01ldGFkYXRhIiwicHJvcGVydHkiLCJSZWZsZWN0Iiwib3duS2V5cyIsImxlZ2FjeU1ldGFkYXRhIiwic2V0IiwiZ2V0Q2xhc3NNZXRhZGF0YSIsInBvc3RDb25zdHJ1Y3RNZXRhZGF0YSIsInByZURlc3Ryb3lNZXRhZGF0YSIsImNvbnN0cnVjdG9yQXJndW1lbnRzIiwibGlmZWN5Y2xlIiwicG9zdENvbnN0cnVjdE1ldGhvZE5hbWUiLCJwcmVEZXN0cm95TWV0aG9kTmFtZSIsInByb3BlcnRpZXMiLCJnZXRDbGFzc01ldGFkYXRhQ29uc3RydWN0b3JBcmd1bWVudHNGcm9tTWV0YWRhdGFSZWFkZXIiLCJtZXRhZGF0YVJlYWRlciIsImxlZ2FjeUNvbnN0cnVjdG9yTWV0YWRhdGEiLCJnZXRDb25zdHJ1Y3Rvck1ldGFkYXRhIiwidXNlckdlbmVyYXRlZE1ldGFkYXRhIiwiY29tcGlsZXJHZW5lcmF0ZWRNZXRhZGF0YSIsImdldENsYXNzTWV0YWRhdGFQcm9wZXJ0aWVzRnJvbU1ldGFkYXRhUmVhZGVyIiwiZ2V0UHJvcGVydGllc01ldGFkYXRhIiwiZ2V0Q2xhc3NNZXRhZGF0YUZyb21NZXRhZGF0YVJlYWRlciIsImdldEJhc2VUeXBlIiwiZ2V0UHJvdG90eXBlT2YiLCJiYXNlVHlwZSIsIl9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfX2ludmVyc2lmeWpzX2NvbW1vbl8wODFkOGMwN19fIiwiZ2V0TWFuYWdlZEtpbmRMZWdhY3lNZXRhZGF0YSIsImNsYXNzRWxlbWVudE1ldGFkYXRhIiwia2luZExlZ2FjeU1ldGFkYXRhIiwiTGVnYWN5UXVlcnlhYmxlU3RyaW5nSW1wbCIsInN0ciIsInN0YXJ0c1dpdGgiLCJzZWFyY2hTdHJpbmciLCJlbmRzV2l0aCIsImNvbnRhaW5zIiwiaW5jbHVkZXMiLCJlcXVhbHMiLCJjb21wYXJlU3RyaW5nIiwiSURfTUVUQURBVEEiLCJMZWdhY3lUYXJnZXRJbXBsIiwiaWRlbnRpZmllciIsInRhcmdldElkIiwiTnVtYmVyIiwiTUFYX1NBRkVfSU5URUdFUiIsInVwZGF0ZVJlZmxlY3RNZXRhZGF0YSIsIk1JTl9TQUZFX0lOVEVHRVIiLCJpZCIsImdldFRhcmdldElkIiwic2xpY2UiLCJsZWdhY3lNZXRhZGF0YUxpc3QiLCJ0YWdLZXkiLCJ0YWdWYWx1ZSIsImdldE1hbmFnZWRMZWdhY3lNZXRhZGF0YSIsInNlcnZpY2VJZGVudGlmaWVyIiwiTGF6eVNlcnZpY2VJZGVudGlmaWVyIiwidW53cmFwIiwiZ2V0Q3VzdG9tVGFncyIsImdldE5hbWVkVGFnIiwiaGFzVGFnIiwic29tZSIsImlzQXJyYXkiLCJpc05hbWVkIiwiaXNPcHRpb25hbCIsImlzVGFnZ2VkIiwic2l6ZSIsIm1hdGNoZXNBcnJheSIsIm1hdGNoZXNOYW1lZFRhZyIsIm1hdGNoZXNUYWciLCJnZXRUYXJnZXRzIiwiY2xhc3NNZXRhZGF0YSIsImNsYXNzTWV0YWRhdGFQcm9wZXJ0aWVzIiwicHJvcGVydHlLZXkiLCJwcm9wZXJ0eVZhbHVlIiwiaGFzIiwidGFyZ2V0cyIsImNvbnN0cnVjdG9yQXJndW1lbnQiLCJnZXRUYXJnZXRzRnJvbU1ldGFkYXRhUHJvdmlkZXJzIl0sInNvdXJjZVJvb3QiOiIifQ==
@@ -0,0 +1,4 @@
1
+ import { MaybeClassElementMetadata } from '../models/MaybeClassElementMetadata';
2
+ import { MaybeClassMetadata } from '../models/MaybeClassMetadata';
3
+ export declare function updateMaybeClassMetadataConstructorArgument(updateMetadata: (classMetadata: MaybeClassElementMetadata | undefined) => MaybeClassElementMetadata, index: number): (classMetadata: MaybeClassMetadata) => MaybeClassMetadata;
4
+ //# sourceMappingURL=updateMaybeClassMetadataConstructorArgument.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateMaybeClassMetadataConstructorArgument.d.ts","sourceRoot":"","sources":["../../../../src/metadata/actions/updateMaybeClassMetadataConstructorArgument.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,wBAAgB,2CAA2C,CACzD,cAAc,EAAE,CACd,aAAa,EAAE,yBAAyB,GAAG,SAAS,KACjD,yBAAyB,EAC9B,KAAK,EAAE,MAAM,GACZ,CAAC,aAAa,EAAE,kBAAkB,KAAK,kBAAkB,CAU3D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateMaybeClassMetadataConstructorArgument.spec.d.ts","sourceRoot":"","sources":["../../../../src/metadata/actions/updateMaybeClassMetadataConstructorArgument.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { MaybeClassElementMetadata } from '../models/MaybeClassElementMetadata';
2
+ import { MaybeClassMetadata } from '../models/MaybeClassMetadata';
3
+ export declare function updateMaybeClassMetadataProperty(updateMetadata: (classElementMetadata: MaybeClassElementMetadata | undefined) => MaybeClassElementMetadata, propertyKey: string | symbol): (classMetadata: MaybeClassMetadata) => MaybeClassMetadata;
4
+ //# sourceMappingURL=updateMaybeClassMetadataProperty.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateMaybeClassMetadataProperty.d.ts","sourceRoot":"","sources":["../../../../src/metadata/actions/updateMaybeClassMetadataProperty.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,wBAAgB,gCAAgC,CAC9C,cAAc,EAAE,CACd,oBAAoB,EAAE,yBAAyB,GAAG,SAAS,KACxD,yBAAyB,EAC9B,WAAW,EAAE,MAAM,GAAG,MAAM,GAC3B,CAAC,aAAa,EAAE,kBAAkB,KAAK,kBAAkB,CAS3D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateMaybeClassMetadataProperty.spec.d.ts","sourceRoot":"","sources":["../../../../src/metadata/actions/updateMaybeClassMetadataProperty.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { Newable } from '@inversifyjs/common';
2
+ import { ClassElementMetadata } from '../models/ClassElementMetadata';
3
+ export declare function assertConstructorMetadataArrayFilled(type: Newable, value: (ClassElementMetadata | undefined)[]): asserts value is ClassElementMetadata[];
4
+ //# sourceMappingURL=assertConstructorMetadataArrayFilled.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertConstructorMetadataArrayFilled.d.ts","sourceRoot":"","sources":["../../../../src/metadata/calculations/assertConstructorMetadataArrayFilled.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAI9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,CAAC,oBAAoB,GAAG,SAAS,CAAC,EAAE,GAC1C,OAAO,CAAC,KAAK,IAAI,oBAAoB,EAAE,CAsBzC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertConstructorMetadataArrayFilled.spec.d.ts","sourceRoot":"","sources":["../../../../src/metadata/calculations/assertConstructorMetadataArrayFilled.spec.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"getClassMetadataConstructorArguments.d.ts","sourceRoot":"","sources":["../../../../src/metadata/calculations/getClassMetadataConstructorArguments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAI9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAKtE,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,OAAO,GACZ,oBAAoB,EAAE,CAwCxB"}
1
+ {"version":3,"file":"getClassMetadataConstructorArguments.d.ts","sourceRoot":"","sources":["../../../../src/metadata/calculations/getClassMetadataConstructorArguments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAI9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAMtE,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,OAAO,GACZ,oBAAoB,EAAE,CA0CxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"getClassMetadataConstructorArgumentsFromMetadataReader.d.ts","sourceRoot":"","sources":["../../../../src/metadata/calculations/getClassMetadataConstructorArgumentsFromMetadataReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAItE,wBAAgB,sDAAsD,CACpE,IAAI,EAAE,OAAO,EACb,cAAc,EAAE,oBAAoB,GACnC,oBAAoB,EAAE,CAoCxB"}
1
+ {"version":3,"file":"getClassMetadataConstructorArgumentsFromMetadataReader.d.ts","sourceRoot":"","sources":["../../../../src/metadata/calculations/getClassMetadataConstructorArgumentsFromMetadataReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAKtE,wBAAgB,sDAAsD,CACpE,IAAI,EAAE,OAAO,EACb,cAAc,EAAE,oBAAoB,GACnC,oBAAoB,EAAE,CAsCxB"}
@@ -0,0 +1,3 @@
1
+ import { ClassMetadata } from '../models/ClassMetadata';
2
+ export declare function getDefaultClassMetadata(): ClassMetadata;
3
+ //# sourceMappingURL=getDefaultClassMetadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDefaultClassMetadata.d.ts","sourceRoot":"","sources":["../../../../src/metadata/calculations/getDefaultClassMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,wBAAgB,uBAAuB,IAAI,aAAa,CASvD"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDefaultClassMetadata.spec.d.ts","sourceRoot":"","sources":["../../../../src/metadata/calculations/getDefaultClassMetadata.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { ManagedClassElementMetadata } from '../models/ManagedClassElementMetadata';
2
+ import { MaybeClassElementMetadata } from '../models/MaybeClassElementMetadata';
3
+ export declare function injectBase(updateMetadata: (classMetadata: MaybeClassElementMetadata | undefined) => ManagedClassElementMetadata): ParameterDecorator & PropertyDecorator;
4
+ //# sourceMappingURL=injectBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injectBase.d.ts","sourceRoot":"","sources":["../../../../src/metadata/decorators/injectBase.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AACpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAEhF,wBAAgB,UAAU,CACxB,cAAc,EAAE,CACd,aAAa,EAAE,yBAAyB,GAAG,SAAS,KACjD,2BAA2B,GAC/B,kBAAkB,GAAG,iBAAiB,CAcxC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injectBase.spec.d.ts","sourceRoot":"","sources":["../../../../src/metadata/decorators/injectBase.spec.ts"],"names":[],"mappings":"AAEA,OAAO,kBAAkB,CAAC"}
@@ -1,5 +1,4 @@
1
- import { ClassElementMetadataKind } from './ClassElementMetadataKind';
2
- export interface BaseClassElementMetadata<TKind extends ClassElementMetadataKind> {
1
+ export interface BaseClassElementMetadata<TKind> {
3
2
  kind: TKind;
4
3
  }
5
4
  //# sourceMappingURL=BaseClassElementMetadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseClassElementMetadata.d.ts","sourceRoot":"","sources":["../../../../src/metadata/models/BaseClassElementMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,MAAM,WAAW,wBAAwB,CACvC,KAAK,SAAS,wBAAwB;IAEtC,IAAI,EAAE,KAAK,CAAC;CACb"}
1
+ {"version":3,"file":"BaseClassElementMetadata.d.ts","sourceRoot":"","sources":["../../../../src/metadata/models/BaseClassElementMetadata.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,wBAAwB,CAAC,KAAK;IAC7C,IAAI,EAAE,KAAK,CAAC;CACb"}
@@ -5,10 +5,10 @@ import { MetadataName } from './MetadataName';
5
5
  import { MetadataTag } from './MetadataTag';
6
6
  import { MetadataTargetName } from './MetadataTargetName';
7
7
  export interface ManagedClassElementMetadata extends BaseClassElementMetadata<ClassElementMetadataKind.singleInjection | ClassElementMetadataKind.multipleInjection> {
8
- value: ServiceIdentifier | LazyServiceIdentifier;
9
8
  name: MetadataName | undefined;
10
9
  optional: boolean;
11
10
  tags: Map<MetadataTag, unknown>;
12
11
  targetName: MetadataTargetName | undefined;
12
+ value: ServiceIdentifier | LazyServiceIdentifier;
13
13
  }
14
14
  //# sourceMappingURL=ManagedClassElementMetadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ManagedClassElementMetadata.d.ts","sourceRoot":"","sources":["../../../../src/metadata/models/ManagedClassElementMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,2BACf,SAAQ,wBAAwB,CAC5B,wBAAwB,CAAC,eAAe,GACxC,wBAAwB,CAAC,iBAAiB,CAC7C;IACD,KAAK,EAAE,iBAAiB,GAAG,qBAAqB,CAAC;IACjD,IAAI,EAAE,YAAY,GAAG,SAAS,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAChC,UAAU,EAAE,kBAAkB,GAAG,SAAS,CAAC;CAC5C"}
1
+ {"version":3,"file":"ManagedClassElementMetadata.d.ts","sourceRoot":"","sources":["../../../../src/metadata/models/ManagedClassElementMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,2BACf,SAAQ,wBAAwB,CAC5B,wBAAwB,CAAC,eAAe,GACxC,wBAAwB,CAAC,iBAAiB,CAC7C;IACD,IAAI,EAAE,YAAY,GAAG,SAAS,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAChC,UAAU,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAC3C,KAAK,EAAE,iBAAiB,GAAG,qBAAqB,CAAC;CAClD"}
@@ -0,0 +1,5 @@
1
+ import { ManagedClassElementMetadata } from './ManagedClassElementMetadata';
2
+ import { MaybeManagedClassElementMetadata } from './MaybeManagedClassElementMetadata';
3
+ import { UnmanagedClassElementMetadata } from './UnmanagedClassElementMetadata';
4
+ export type MaybeClassElementMetadata = ManagedClassElementMetadata | MaybeManagedClassElementMetadata | UnmanagedClassElementMetadata;
5
+ //# sourceMappingURL=MaybeClassElementMetadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaybeClassElementMetadata.d.ts","sourceRoot":"","sources":["../../../../src/metadata/models/MaybeClassElementMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAEhF,MAAM,MAAM,yBAAyB,GACjC,2BAA2B,GAC3B,gCAAgC,GAChC,6BAA6B,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare enum MaybeClassElementMetadataKind {
2
+ unknown = 0
3
+ }
4
+ //# sourceMappingURL=MaybeClassElementMetadataKind.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaybeClassElementMetadataKind.d.ts","sourceRoot":"","sources":["../../../../src/metadata/models/MaybeClassElementMetadataKind.ts"],"names":[],"mappings":"AAAA,oBAAY,6BAA6B;IACvC,OAAO,IAAA;CACR"}
@@ -0,0 +1,8 @@
1
+ import { ClassMetadataLifecycle } from './ClassMetadataLifecycle';
2
+ import { MaybeClassElementMetadata } from './MaybeClassElementMetadata';
3
+ export interface MaybeClassMetadata {
4
+ constructorArguments: MaybeClassElementMetadata[];
5
+ lifecycle: ClassMetadataLifecycle;
6
+ properties: Map<string | symbol, MaybeClassElementMetadata>;
7
+ }
8
+ //# sourceMappingURL=MaybeClassMetadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaybeClassMetadata.d.ts","sourceRoot":"","sources":["../../../../src/metadata/models/MaybeClassMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE,MAAM,WAAW,kBAAkB;IACjC,oBAAoB,EAAE,yBAAyB,EAAE,CAAC;IAClD,SAAS,EAAE,sBAAsB,CAAC;IAClC,UAAU,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,yBAAyB,CAAC,CAAC;CAC7D"}
@@ -0,0 +1,14 @@
1
+ import { LazyServiceIdentifier, ServiceIdentifier } from '@inversifyjs/common';
2
+ import { BaseClassElementMetadata } from './BaseClassElementMetadata';
3
+ import { MaybeClassElementMetadataKind } from './MaybeClassElementMetadataKind';
4
+ import { MetadataName } from './MetadataName';
5
+ import { MetadataTag } from './MetadataTag';
6
+ import { MetadataTargetName } from './MetadataTargetName';
7
+ export interface MaybeManagedClassElementMetadata extends BaseClassElementMetadata<MaybeClassElementMetadataKind.unknown> {
8
+ name: MetadataName | undefined;
9
+ optional: boolean | undefined;
10
+ tags: Map<MetadataTag, unknown>;
11
+ targetName: MetadataTargetName | undefined;
12
+ value: ServiceIdentifier | LazyServiceIdentifier | undefined;
13
+ }
14
+ //# sourceMappingURL=MaybeManagedClassElementMetadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaybeManagedClassElementMetadata.d.ts","sourceRoot":"","sources":["../../../../src/metadata/models/MaybeManagedClassElementMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,gCACf,SAAQ,wBAAwB,CAAC,6BAA6B,CAAC,OAAO,CAAC;IACvE,IAAI,EAAE,YAAY,GAAG,SAAS,CAAC;IAC/B,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,IAAI,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAChC,UAAU,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAC3C,KAAK,EAAE,iBAAiB,GAAG,qBAAqB,GAAG,SAAS,CAAC;CAC9D"}
@@ -0,0 +1,2 @@
1
+ export declare const classMetadataReflectKey: string;
2
+ //# sourceMappingURL=classMetadataReflectKey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classMetadataReflectKey.d.ts","sourceRoot":"","sources":["../../../../src/reflectMetadata/data/classMetadataReflectKey.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,EAAE,MACO,CAAC"}
package/package.json CHANGED
@@ -5,8 +5,8 @@
5
5
  },
6
6
  "description": "InversifyJs core package",
7
7
  "dependencies": {
8
- "@inversifyjs/common": "1.3.2",
9
- "@inversifyjs/reflect-metadata-utils": "0.2.2"
8
+ "@inversifyjs/common": "1.3.3",
9
+ "@inversifyjs/reflect-metadata-utils": "0.2.3"
10
10
  },
11
11
  "devDependencies": {
12
12
  "@eslint/js": "9.14.0",
@@ -15,15 +15,18 @@
15
15
  "@stryker-mutator/jest-runner": "8.6.0",
16
16
  "@stryker-mutator/typescript-checker": "8.6.0",
17
17
  "@types/node": "22.9.0",
18
- "@typescript-eslint/eslint-plugin": "8.13.0",
19
- "@typescript-eslint/parser": "8.13.0",
18
+ "@typescript-eslint/eslint-plugin": "8.14.0",
19
+ "@typescript-eslint/parser": "8.14.0",
20
20
  "eslint": "9.14.0",
21
21
  "jest": "29.7.0",
22
22
  "prettier": "3.3.3",
23
23
  "rimraf": "6.0.1",
24
+ "ts-loader": "9.5.1",
24
25
  "ts-jest": "29.2.5",
25
26
  "ts-node": "10.9.2",
26
- "typescript": "5.6.3"
27
+ "typescript": "5.6.3",
28
+ "webpack": "5.96.1",
29
+ "webpack-cli": "5.1.4"
27
30
  },
28
31
  "homepage": "https://inversify.io",
29
32
  "keywords": [
@@ -36,6 +39,10 @@
36
39
  "node",
37
40
  "typescript"
38
41
  ],
42
+ "devEngines": {
43
+ "node": "^20.18.0",
44
+ "pnpm": "^9.12.1"
45
+ },
39
46
  "license": "MIT",
40
47
  "main": "lib/cjs/index.js",
41
48
  "module": "lib/esm/index.js",
@@ -54,11 +61,11 @@
54
61
  "url": "git+https://github.com/inversify/monorepo.git"
55
62
  },
56
63
  "sideEffects": false,
57
- "version": "1.3.2",
64
+ "version": "1.3.4",
58
65
  "scripts": {
59
66
  "build": "pnpm run build:cjs && pnpm run build:esm",
60
67
  "build:cjs": "tsc --build tsconfig.cjs.json && pnpm exec foundation-ts-package-cjs ./lib/cjs",
61
- "build:esm": "tsc --build tsconfig.esm.json && pnpm exec foundation-ts-package-esm ./lib/esm",
68
+ "build:esm": "webpack && pnpm exec foundation-ts-package-esm ./lib/esm",
62
69
  "build:clean": "rimraf lib",
63
70
  "format": "prettier --write ./src/**/*.ts",
64
71
  "lint": "eslint ./src",
@@ -1 +1 @@
1
- {"root":["./src/index.ts","./src/error/models/InversifyCoreError.ts","./src/error/models/InversifyCoreErrorKind.ts","./src/legacyTarget/calculations/getTargetId.spec.ts","./src/legacyTarget/calculations/getTargetId.ts","./src/legacyTarget/calculations/getTargets.spec.ts","./src/legacyTarget/calculations/getTargets.ts","./src/legacyTarget/calculations/getTargetsFromMetadataProviders.spec.ts","./src/legacyTarget/calculations/getTargetsFromMetadataProviders.ts","./src/legacyTarget/models/LegacyTarget.ts","./src/legacyTarget/models/LegacyTargetImpl.spec.ts","./src/legacyTarget/models/LegacyTargetImpl.ts","./src/legacyTarget/models/LegacyTargetType.ts","./src/metadata/calculations/getClassElementMetadataFromLegacyMetadata.spec.ts","./src/metadata/calculations/getClassElementMetadataFromLegacyMetadata.ts","./src/metadata/calculations/getClassElementMetadataFromNewable.spec.ts","./src/metadata/calculations/getClassElementMetadataFromNewable.ts","./src/metadata/calculations/getClassMetadata.spec.ts","./src/metadata/calculations/getClassMetadata.ts","./src/metadata/calculations/getClassMetadataConstructorArguments.spec.ts","./src/metadata/calculations/getClassMetadataConstructorArguments.ts","./src/metadata/calculations/getClassMetadataConstructorArgumentsFromMetadataReader.spec.ts","./src/metadata/calculations/getClassMetadataConstructorArgumentsFromMetadataReader.ts","./src/metadata/calculations/getClassMetadataFromMetadataReader.spec.ts","./src/metadata/calculations/getClassMetadataFromMetadataReader.ts","./src/metadata/calculations/getClassMetadataProperties.spec.ts","./src/metadata/calculations/getClassMetadataProperties.ts","./src/metadata/calculations/getClassMetadataPropertiesFromMetadataReader.spec.ts","./src/metadata/calculations/getClassMetadataPropertiesFromMetadataReader.ts","./src/metadata/calculations/getConstructorArgumentMetadataFromLegacyMetadata.spec.ts","./src/metadata/calculations/getConstructorArgumentMetadataFromLegacyMetadata.ts","./src/metadata/calculations/getLegacyMetadata.spec.ts","./src/metadata/calculations/getLegacyMetadata.ts","./src/metadata/calculations/getPropertyMetadataFromLegacyMetadata.spec.ts","./src/metadata/calculations/getPropertyMetadataFromLegacyMetadata.ts","./src/metadata/models/BaseClassElementMetadata.ts","./src/metadata/models/ClassElementMetadata.ts","./src/metadata/models/ClassElementMetadataKind.ts","./src/metadata/models/ClassMetadata.ts","./src/metadata/models/ClassMetadataLifecycle.ts","./src/metadata/models/LegacyConstructorMetadata.ts","./src/metadata/models/LegacyMetadata.ts","./src/metadata/models/LegacyMetadataMap.ts","./src/metadata/models/LegacyMetadataReader.ts","./src/metadata/models/ManagedClassElementMetadata.ts","./src/metadata/models/MetadataName.ts","./src/metadata/models/MetadataTag.ts","./src/metadata/models/MetadataTargetName.ts","./src/metadata/models/UnmanagedClassElementMetadata.ts","./src/prototype/calculations/getBaseType.spec.ts","./src/prototype/calculations/getBaseType.ts","./src/prototype/models/Prototype.ts","./src/reflectMetadata/data/keys.ts","./src/string/models/LegacyQueryableString.ts","./src/string/models/LegacyQueryableStringImpl.spec.ts","./src/string/models/LegacyQueryableStringImpl.ts","./src/symbol/calculations/getDescription.spec.ts","./src/symbol/calculations/getDescription.ts"],"version":"5.6.3"}
1
+ {"root":["./src/index.ts","./src/error/models/InversifyCoreError.ts","./src/error/models/InversifyCoreErrorKind.ts","./src/legacyTarget/calculations/getTargetId.spec.ts","./src/legacyTarget/calculations/getTargetId.ts","./src/legacyTarget/calculations/getTargets.spec.ts","./src/legacyTarget/calculations/getTargets.ts","./src/legacyTarget/calculations/getTargetsFromMetadataProviders.spec.ts","./src/legacyTarget/calculations/getTargetsFromMetadataProviders.ts","./src/legacyTarget/models/LegacyTarget.ts","./src/legacyTarget/models/LegacyTargetImpl.spec.ts","./src/legacyTarget/models/LegacyTargetImpl.ts","./src/legacyTarget/models/LegacyTargetType.ts","./src/metadata/actions/updateMaybeClassMetadataConstructorArgument.spec.ts","./src/metadata/actions/updateMaybeClassMetadataConstructorArgument.ts","./src/metadata/actions/updateMaybeClassMetadataProperty.spec.ts","./src/metadata/actions/updateMaybeClassMetadataProperty.ts","./src/metadata/calculations/assertConstructorMetadataArrayFilled.spec.ts","./src/metadata/calculations/assertConstructorMetadataArrayFilled.ts","./src/metadata/calculations/getClassElementMetadataFromLegacyMetadata.spec.ts","./src/metadata/calculations/getClassElementMetadataFromLegacyMetadata.ts","./src/metadata/calculations/getClassElementMetadataFromNewable.spec.ts","./src/metadata/calculations/getClassElementMetadataFromNewable.ts","./src/metadata/calculations/getClassMetadata.spec.ts","./src/metadata/calculations/getClassMetadata.ts","./src/metadata/calculations/getClassMetadataConstructorArguments.spec.ts","./src/metadata/calculations/getClassMetadataConstructorArguments.ts","./src/metadata/calculations/getClassMetadataConstructorArgumentsFromMetadataReader.spec.ts","./src/metadata/calculations/getClassMetadataConstructorArgumentsFromMetadataReader.ts","./src/metadata/calculations/getClassMetadataFromMetadataReader.spec.ts","./src/metadata/calculations/getClassMetadataFromMetadataReader.ts","./src/metadata/calculations/getClassMetadataProperties.spec.ts","./src/metadata/calculations/getClassMetadataProperties.ts","./src/metadata/calculations/getClassMetadataPropertiesFromMetadataReader.spec.ts","./src/metadata/calculations/getClassMetadataPropertiesFromMetadataReader.ts","./src/metadata/calculations/getConstructorArgumentMetadataFromLegacyMetadata.spec.ts","./src/metadata/calculations/getConstructorArgumentMetadataFromLegacyMetadata.ts","./src/metadata/calculations/getDefaultClassMetadata.spec.ts","./src/metadata/calculations/getDefaultClassMetadata.ts","./src/metadata/calculations/getLegacyMetadata.spec.ts","./src/metadata/calculations/getLegacyMetadata.ts","./src/metadata/calculations/getPropertyMetadataFromLegacyMetadata.spec.ts","./src/metadata/calculations/getPropertyMetadataFromLegacyMetadata.ts","./src/metadata/decorators/injectBase.spec.ts","./src/metadata/decorators/injectBase.ts","./src/metadata/models/BaseClassElementMetadata.ts","./src/metadata/models/ClassElementMetadata.ts","./src/metadata/models/ClassElementMetadataKind.ts","./src/metadata/models/ClassMetadata.ts","./src/metadata/models/ClassMetadataLifecycle.ts","./src/metadata/models/LegacyConstructorMetadata.ts","./src/metadata/models/LegacyMetadata.ts","./src/metadata/models/LegacyMetadataMap.ts","./src/metadata/models/LegacyMetadataReader.ts","./src/metadata/models/ManagedClassElementMetadata.ts","./src/metadata/models/MaybeClassElementMetadata.ts","./src/metadata/models/MaybeClassElementMetadataKind.ts","./src/metadata/models/MaybeClassMetadata.ts","./src/metadata/models/MaybeManagedClassElementMetadata.ts","./src/metadata/models/MetadataName.ts","./src/metadata/models/MetadataTag.ts","./src/metadata/models/MetadataTargetName.ts","./src/metadata/models/UnmanagedClassElementMetadata.ts","./src/prototype/calculations/getBaseType.spec.ts","./src/prototype/calculations/getBaseType.ts","./src/prototype/models/Prototype.ts","./src/reflectMetadata/data/classMetadataReflectKey.ts","./src/reflectMetadata/data/keys.ts","./src/string/models/LegacyQueryableString.ts","./src/string/models/LegacyQueryableStringImpl.spec.ts","./src/string/models/LegacyQueryableStringImpl.ts","./src/symbol/calculations/getDescription.spec.ts","./src/symbol/calculations/getDescription.ts"],"version":"5.6.3"}