aws-cdk 2.31.2 → 2.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/CONTRIBUTING.md +29 -0
  2. package/README.md +7 -6
  3. package/build-info.json +2 -2
  4. package/lib/cli.js +4 -3
  5. package/lib/commands/context.js +67 -7
  6. package/lib/index.js +321 -134
  7. package/lib/init-templates/{v1/app → app}/csharp/.template.gitignore +0 -0
  8. package/lib/init-templates/{v1/app → app}/csharp/README.md +0 -0
  9. package/lib/init-templates/app/csharp/add-project.hook.d.ts +2 -0
  10. package/lib/init-templates/{v2/app → app}/csharp/add-project.hook.js +1 -1
  11. package/lib/init-templates/{v1/app → app}/csharp/cdk.template.json +0 -0
  12. package/lib/init-templates/{v2/app → app}/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj +0 -0
  13. package/lib/init-templates/{v2/app → app}/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs +0 -0
  14. package/lib/init-templates/{v1/app → app}/csharp/src/%name.PascalCased%/GlobalSuppressions.cs +0 -0
  15. package/lib/init-templates/{v2/app → app}/csharp/src/%name.PascalCased%/Program.template.cs +0 -0
  16. package/lib/init-templates/{v1/app → app}/csharp/src/%name.PascalCased%.template.sln +0 -0
  17. package/lib/init-templates/{v1/app → app}/fsharp/.template.gitignore +0 -0
  18. package/lib/init-templates/{v1/app → app}/fsharp/README.md +0 -0
  19. package/lib/init-templates/app/fsharp/add-project.hook.d.ts +2 -0
  20. package/lib/init-templates/{v1/app → app}/fsharp/add-project.hook.js +1 -1
  21. package/lib/init-templates/{v1/app → app}/fsharp/cdk.template.json +0 -0
  22. package/lib/init-templates/{v2/app → app}/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj +0 -0
  23. package/lib/init-templates/{v1/app → app}/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs +0 -0
  24. package/lib/init-templates/{v1/app → app}/fsharp/src/%name.PascalCased%/Program.template.fs +0 -0
  25. package/lib/init-templates/{v1/app → app}/fsharp/src/%name.PascalCased%.template.sln +0 -0
  26. package/lib/init-templates/{v2/app → app}/go/%name%.template.go +0 -0
  27. package/lib/init-templates/{v2/app → app}/go/%name%_test.template.go +0 -0
  28. package/lib/init-templates/{v1/app → app}/go/.template.gitignore +0 -0
  29. package/lib/init-templates/{v2/app → app}/go/README.md +1 -3
  30. package/lib/init-templates/{v1/app → app}/go/cdk.template.json +0 -0
  31. package/lib/init-templates/{v2/app → app}/go/go.template.mod +0 -0
  32. package/lib/init-templates/{v1/app → app}/info.json +0 -0
  33. package/lib/init-templates/{v1/app → app}/java/.template.gitignore +0 -0
  34. package/lib/init-templates/{v1/app → app}/java/README.md +0 -0
  35. package/lib/init-templates/{v1/app → app}/java/cdk.json +0 -0
  36. package/lib/init-templates/{v2/app → app}/java/pom.xml +0 -0
  37. package/lib/init-templates/{v2/app → app}/java/src/main/java/com/myorg/%name.PascalCased%App.template.java +0 -0
  38. package/lib/init-templates/{v2/app → app}/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java +0 -0
  39. package/lib/init-templates/{v2/app → app}/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java +0 -0
  40. package/lib/init-templates/app/java/sub-placeholders.hook.d.ts +2 -0
  41. package/lib/init-templates/{v1/app → app}/java/sub-placeholders.hook.js +1 -1
  42. package/lib/init-templates/{v1/app → app}/javascript/.template.gitignore +0 -0
  43. package/lib/init-templates/{v1/app → app}/javascript/.template.npmignore +0 -0
  44. package/lib/init-templates/{v1/app → app}/javascript/README.md +0 -0
  45. package/lib/init-templates/{v2/app → app}/javascript/bin/%name%.template.js +0 -0
  46. package/lib/init-templates/{v1/app → app}/javascript/cdk.template.json +0 -0
  47. package/lib/init-templates/{v1/sample-app → app}/javascript/jest.config.js +0 -0
  48. package/lib/init-templates/{v2/app → app}/javascript/lib/%name%-stack.template.js +0 -0
  49. package/lib/init-templates/{v2/app → app}/javascript/package.json +0 -0
  50. package/lib/init-templates/app/javascript/sub-placeholders.hook.d.ts +2 -0
  51. package/lib/init-templates/{v1/sample-app → app}/javascript/sub-placeholders.hook.js +1 -1
  52. package/lib/init-templates/{v2/app → app}/javascript/test/%name%.test.template.js +0 -0
  53. package/lib/init-templates/{v2/app → app}/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +0 -0
  54. package/lib/init-templates/{v1/app → app}/python/%name.PythonModule%/__init__.py +0 -0
  55. package/lib/init-templates/{v2/app → app}/python/.template.gitignore +0 -0
  56. package/lib/init-templates/{v1/app → app}/python/README.template.md +0 -0
  57. package/lib/init-templates/{v2/app → app}/python/app.template.py +0 -0
  58. package/lib/init-templates/{v1/app → app}/python/cdk.template.json +0 -0
  59. package/lib/init-templates/{v1/app → app}/python/requirements-dev.txt +0 -0
  60. package/lib/init-templates/{v2/app → app}/python/requirements.txt +0 -0
  61. package/lib/init-templates/{v1/app → app}/python/source.bat +0 -0
  62. package/lib/init-templates/app/python/sub-placeholders.hook.d.ts +2 -0
  63. package/lib/init-templates/{v1/sample-app → app}/python/sub-placeholders.hook.js +1 -1
  64. package/lib/init-templates/{v1/app → app}/python/tests/__init__.py +0 -0
  65. package/lib/init-templates/{v1/app → app}/python/tests/unit/__init__.py +0 -0
  66. package/lib/init-templates/{v2/app → app}/python/tests/unit/test_%name.PythonModule%_stack.template.py +0 -0
  67. package/lib/init-templates/{v1/app → app}/typescript/.template.gitignore +0 -0
  68. package/lib/init-templates/{v1/app → app}/typescript/.template.npmignore +0 -0
  69. package/lib/init-templates/{v1/app → app}/typescript/README.md +0 -0
  70. package/lib/init-templates/{v2/app → app}/typescript/bin/%name%.template.ts +0 -0
  71. package/lib/init-templates/{v1/app → app}/typescript/cdk.template.json +0 -0
  72. package/lib/init-templates/{v1/app → app}/typescript/jest.config.js +0 -0
  73. package/lib/init-templates/{v2/app → app}/typescript/lib/%name%-stack.template.ts +0 -0
  74. package/lib/init-templates/{v2/app → app}/typescript/package.json +0 -0
  75. package/lib/init-templates/app/typescript/sub-placeholders.hook.d.ts +2 -0
  76. package/lib/init-templates/{v1/app/javascript → app/typescript}/sub-placeholders.hook.js +1 -1
  77. package/lib/init-templates/{v2/app → app}/typescript/test/%name%.test.template.ts +0 -0
  78. package/lib/init-templates/{v1/app → app}/typescript/tsconfig.json +0 -0
  79. package/lib/init-templates/{v1/lib → lib}/info.json +0 -0
  80. package/lib/init-templates/{v1/lib → lib}/typescript/.template.gitignore +0 -0
  81. package/lib/init-templates/{v1/lib → lib}/typescript/.template.npmignore +0 -0
  82. package/lib/init-templates/{v2/lib → lib}/typescript/README.template.md +0 -0
  83. package/lib/init-templates/{v1/lib → lib}/typescript/jest.config.js +0 -0
  84. package/lib/init-templates/{v2/lib → lib}/typescript/lib/index.template.ts +0 -0
  85. package/lib/init-templates/{v2/lib → lib}/typescript/package.json +0 -0
  86. package/lib/init-templates/lib/typescript/sub-placeholders.hook.d.ts +2 -0
  87. package/lib/init-templates/{v1/lib → lib}/typescript/sub-placeholders.hook.js +1 -1
  88. package/lib/init-templates/{v2/lib → lib}/typescript/test/%name%.test.template.ts +0 -0
  89. package/lib/init-templates/{v1/lib → lib}/typescript/tsconfig.json +0 -0
  90. package/lib/init-templates/{v1/sample-app → sample-app}/csharp/.template.gitignore +0 -0
  91. package/lib/init-templates/{v2/sample-app → sample-app}/csharp/README.template.md +0 -0
  92. package/lib/init-templates/sample-app/csharp/add-project.hook.d.ts +2 -0
  93. package/lib/init-templates/{v1/sample-app → sample-app}/csharp/add-project.hook.js +1 -1
  94. package/lib/init-templates/{v1/sample-app → sample-app}/csharp/cdk.template.json +0 -0
  95. package/lib/init-templates/{v2/sample-app → sample-app}/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj +0 -0
  96. package/lib/init-templates/{v2/sample-app → sample-app}/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs +0 -0
  97. package/lib/init-templates/{v1/sample-app → sample-app}/csharp/src/%name.PascalCased%/GlobalSuppressions.cs +0 -0
  98. package/lib/init-templates/{v1/sample-app → sample-app}/csharp/src/%name.PascalCased%/Program.template.cs +0 -0
  99. package/lib/init-templates/{v1/sample-app → sample-app}/csharp/src/%name.PascalCased%.template.sln +0 -0
  100. package/lib/init-templates/{v1/sample-app → sample-app}/fsharp/.template.gitignore +0 -0
  101. package/lib/init-templates/{v1/sample-app → sample-app}/fsharp/README.template.md +0 -0
  102. package/lib/init-templates/sample-app/fsharp/add-project.hook.d.ts +2 -0
  103. package/lib/init-templates/{v2/app → sample-app}/fsharp/add-project.hook.js +1 -1
  104. package/lib/init-templates/{v1/sample-app → sample-app}/fsharp/cdk.template.json +0 -0
  105. package/lib/init-templates/{v2/sample-app → sample-app}/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj +0 -0
  106. package/lib/init-templates/{v2/sample-app → sample-app}/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs +1 -1
  107. package/lib/init-templates/{v1/sample-app → sample-app}/fsharp/src/%name.PascalCased%/Program.template.fs +0 -0
  108. package/lib/init-templates/{v1/sample-app → sample-app}/fsharp/src/%name.PascalCased%.template.sln +0 -0
  109. package/lib/init-templates/{v2/sample-app → sample-app}/go/%name%.template.go +0 -0
  110. package/lib/init-templates/{v2/sample-app → sample-app}/go/%name%_test.template.go +0 -0
  111. package/lib/init-templates/{v1/sample-app → sample-app}/go/.template.gitignore +0 -0
  112. package/lib/init-templates/{v2/sample-app → sample-app}/go/README.md +1 -3
  113. package/lib/init-templates/{v1/sample-app → sample-app}/go/cdk.template.json +0 -0
  114. package/lib/init-templates/{v2/sample-app → sample-app}/go/go.template.mod +0 -0
  115. package/lib/init-templates/{v1/sample-app → sample-app}/info.json +0 -0
  116. package/lib/init-templates/{v1/sample-app → sample-app}/java/.template.gitignore +0 -0
  117. package/lib/init-templates/{v2/sample-app → sample-app}/java/README.template.md +0 -0
  118. package/lib/init-templates/{v1/sample-app → sample-app}/java/cdk.json +0 -0
  119. package/lib/init-templates/{v2/sample-app → sample-app}/java/pom.xml +0 -0
  120. package/lib/init-templates/{v2/sample-app → sample-app}/java/src/main/java/com/myorg/%name.PascalCased%App.template.java +0 -0
  121. package/lib/init-templates/{v2/sample-app → sample-app}/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java +0 -0
  122. package/lib/init-templates/{v2/sample-app → sample-app}/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java +0 -0
  123. package/lib/init-templates/sample-app/java/sub-placeholders.hook.d.ts +2 -0
  124. package/lib/init-templates/{v1/sample-app → sample-app}/java/sub-placeholders.hook.js +1 -1
  125. package/lib/init-templates/{v1/sample-app → sample-app}/javascript/.template.gitignore +0 -0
  126. package/lib/init-templates/{v1/sample-app → sample-app}/javascript/.template.npmignore +0 -0
  127. package/lib/init-templates/{v2/sample-app → sample-app}/javascript/README.template.md +0 -0
  128. package/lib/init-templates/{v2/sample-app → sample-app}/javascript/bin/%name%.template.js +0 -0
  129. package/lib/init-templates/{v1/sample-app → sample-app}/javascript/cdk.template.json +0 -0
  130. package/lib/init-templates/{v2/app → sample-app}/javascript/jest.config.js +0 -0
  131. package/lib/init-templates/{v2/sample-app → sample-app}/javascript/lib/%name%-stack.template.js +0 -0
  132. package/lib/init-templates/{v2/sample-app → sample-app}/javascript/package.json +0 -0
  133. package/lib/init-templates/sample-app/javascript/sub-placeholders.hook.d.ts +2 -0
  134. package/lib/init-templates/{v1/app/typescript → sample-app/javascript}/sub-placeholders.hook.js +1 -1
  135. package/lib/init-templates/{v2/sample-app → sample-app}/javascript/test/%name%.test.template.js +0 -0
  136. package/lib/init-templates/{v1/sample-app → sample-app}/javascript/tsconfig.json +0 -0
  137. package/lib/init-templates/{v2/sample-app → sample-app}/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +0 -0
  138. package/lib/init-templates/{v1/sample-app → sample-app}/python/%name.PythonModule%/__init__.py +0 -0
  139. package/lib/init-templates/{v1/sample-app → sample-app}/python/.template.gitignore +0 -0
  140. package/lib/init-templates/{v2/sample-app → sample-app}/python/README.template.md +0 -0
  141. package/lib/init-templates/{v2/sample-app → sample-app}/python/app.template.py +0 -0
  142. package/lib/init-templates/{v1/sample-app → sample-app}/python/cdk.template.json +0 -0
  143. package/lib/init-templates/{v1/sample-app → sample-app}/python/requirements-dev.txt +0 -0
  144. package/lib/init-templates/{v2/sample-app → sample-app}/python/requirements.txt +0 -0
  145. package/lib/init-templates/{v1/sample-app → sample-app}/python/source.bat +0 -0
  146. package/lib/init-templates/sample-app/python/sub-placeholders.hook.d.ts +2 -0
  147. package/lib/init-templates/{v2/app → sample-app}/python/sub-placeholders.hook.js +1 -1
  148. package/lib/init-templates/{v1/sample-app → sample-app}/python/tests/__init__.py +0 -0
  149. package/lib/init-templates/{v1/sample-app → sample-app}/python/tests/unit/__init__.py +0 -0
  150. package/lib/init-templates/{v2/sample-app → sample-app}/python/tests/unit/test_%name.PythonModule%_stack.template.py +0 -0
  151. package/lib/init-templates/{v1/sample-app → sample-app}/typescript/.template.gitignore +0 -0
  152. package/lib/init-templates/{v1/sample-app → sample-app}/typescript/.template.npmignore +0 -0
  153. package/lib/init-templates/{v2/sample-app → sample-app}/typescript/README.template.md +0 -0
  154. package/lib/init-templates/{v2/sample-app → sample-app}/typescript/bin/%name%.template.ts +0 -0
  155. package/lib/init-templates/{v1/sample-app → sample-app}/typescript/cdk.template.json +0 -0
  156. package/lib/init-templates/{v1/sample-app → sample-app}/typescript/jest.config.js +0 -0
  157. package/lib/init-templates/{v2/sample-app → sample-app}/typescript/lib/%name%-stack.template.ts +0 -0
  158. package/lib/init-templates/{v2/sample-app → sample-app}/typescript/package.json +0 -0
  159. package/lib/init-templates/sample-app/typescript/sub-placeholders.hook.d.ts +2 -0
  160. package/lib/init-templates/sample-app/typescript/sub-placeholders.hook.js +9 -0
  161. package/lib/init-templates/{v2/sample-app → sample-app}/typescript/test/%name%.test.template.ts +0 -0
  162. package/lib/init-templates/{v1/sample-app → sample-app}/typescript/tsconfig.json +0 -0
  163. package/lib/init.js +3 -16
  164. package/lib/util/directories.d.ts +11 -0
  165. package/lib/util/directories.js +19 -2
  166. package/package.json +9 -9
  167. package/test/api/deploy-stack.test.js +2 -2
  168. package/test/commands/context-command.test.js +186 -47
  169. package/test/init.test.js +50 -56
  170. package/test/integ/cli/cli.integtest.js +30 -1
  171. package/lib/init-templates/v1/app/csharp/add-project.hook.d.ts +0 -2
  172. package/lib/init-templates/v1/app/csharp/add-project.hook.js +0 -31
  173. package/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj +0 -19
  174. package/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs +0 -12
  175. package/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/Program.template.cs +0 -45
  176. package/lib/init-templates/v1/app/fsharp/add-project.hook.d.ts +0 -2
  177. package/lib/init-templates/v1/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj +0 -24
  178. package/lib/init-templates/v1/app/go/%name%.template.go +0 -68
  179. package/lib/init-templates/v1/app/go/%name%_test.template.go +0 -26
  180. package/lib/init-templates/v1/app/go/README.md +0 -14
  181. package/lib/init-templates/v1/app/go/go.template.mod +0 -9
  182. package/lib/init-templates/v1/app/java/pom.xml +0 -60
  183. package/lib/init-templates/v1/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java +0 -41
  184. package/lib/init-templates/v1/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java +0 -24
  185. package/lib/init-templates/v1/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java +0 -26
  186. package/lib/init-templates/v1/app/java/sub-placeholders.hook.d.ts +0 -2
  187. package/lib/init-templates/v1/app/javascript/bin/%name%.template.js +0 -21
  188. package/lib/init-templates/v1/app/javascript/jest.config.js +0 -3
  189. package/lib/init-templates/v1/app/javascript/lib/%name%-stack.template.js +0 -23
  190. package/lib/init-templates/v1/app/javascript/package.json +0 -20
  191. package/lib/init-templates/v1/app/javascript/sub-placeholders.hook.d.ts +0 -2
  192. package/lib/init-templates/v1/app/javascript/test/%name%.test.template.js +0 -18
  193. package/lib/init-templates/v1/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +0 -24
  194. package/lib/init-templates/v1/app/python/.template.gitignore +0 -11
  195. package/lib/init-templates/v1/app/python/app.template.py +0 -34
  196. package/lib/init-templates/v1/app/python/requirements.txt +0 -2
  197. package/lib/init-templates/v1/app/python/sub-placeholders.hook.d.ts +0 -2
  198. package/lib/init-templates/v1/app/python/sub-placeholders.hook.js +0 -9
  199. package/lib/init-templates/v1/app/python/tests/unit/test_%name.PythonModule%_stack.template.py +0 -19
  200. package/lib/init-templates/v1/app/typescript/bin/%name%.template.ts +0 -21
  201. package/lib/init-templates/v1/app/typescript/lib/%name%-stack.template.ts +0 -15
  202. package/lib/init-templates/v1/app/typescript/package.json +0 -28
  203. package/lib/init-templates/v1/app/typescript/sub-placeholders.hook.d.ts +0 -2
  204. package/lib/init-templates/v1/app/typescript/test/%name%.test.template.ts +0 -17
  205. package/lib/init-templates/v1/lib/typescript/README.template.md +0 -12
  206. package/lib/init-templates/v1/lib/typescript/lib/index.template.ts +0 -20
  207. package/lib/init-templates/v1/lib/typescript/package.json +0 -26
  208. package/lib/init-templates/v1/lib/typescript/sub-placeholders.hook.d.ts +0 -2
  209. package/lib/init-templates/v1/lib/typescript/test/%name%.test.template.ts +0 -18
  210. package/lib/init-templates/v1/sample-app/csharp/README.template.md +0 -22
  211. package/lib/init-templates/v1/sample-app/csharp/add-project.hook.d.ts +0 -2
  212. package/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj +0 -23
  213. package/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs +0 -23
  214. package/lib/init-templates/v1/sample-app/fsharp/add-project.hook.d.ts +0 -2
  215. package/lib/init-templates/v1/sample-app/fsharp/add-project.hook.js +0 -31
  216. package/lib/init-templates/v1/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj +0 -27
  217. package/lib/init-templates/v1/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs +0 -14
  218. package/lib/init-templates/v1/sample-app/go/%name%.template.go +0 -71
  219. package/lib/init-templates/v1/sample-app/go/%name%_test.template.go +0 -25
  220. package/lib/init-templates/v1/sample-app/go/README.md +0 -14
  221. package/lib/init-templates/v1/sample-app/go/go.template.mod +0 -9
  222. package/lib/init-templates/v1/sample-app/java/README.template.md +0 -23
  223. package/lib/init-templates/v1/sample-app/java/pom.xml +0 -72
  224. package/lib/init-templates/v1/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java +0 -13
  225. package/lib/init-templates/v1/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java +0 -29
  226. package/lib/init-templates/v1/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java +0 -26
  227. package/lib/init-templates/v1/sample-app/java/sub-placeholders.hook.d.ts +0 -2
  228. package/lib/init-templates/v1/sample-app/javascript/README.template.md +0 -17
  229. package/lib/init-templates/v1/sample-app/javascript/bin/%name%.template.js +0 -6
  230. package/lib/init-templates/v1/sample-app/javascript/lib/%name%-stack.template.js +0 -25
  231. package/lib/init-templates/v1/sample-app/javascript/package.json +0 -23
  232. package/lib/init-templates/v1/sample-app/javascript/sub-placeholders.hook.d.ts +0 -2
  233. package/lib/init-templates/v1/sample-app/javascript/test/%name%.test.template.js +0 -25
  234. package/lib/init-templates/v1/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +0 -24
  235. package/lib/init-templates/v1/sample-app/python/README.template.md +0 -68
  236. package/lib/init-templates/v1/sample-app/python/app.template.py +0 -11
  237. package/lib/init-templates/v1/sample-app/python/requirements.txt +0 -7
  238. package/lib/init-templates/v1/sample-app/python/sub-placeholders.hook.d.ts +0 -2
  239. package/lib/init-templates/v1/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py +0 -24
  240. package/lib/init-templates/v1/sample-app/typescript/README.template.md +0 -19
  241. package/lib/init-templates/v1/sample-app/typescript/bin/%name%.template.ts +0 -6
  242. package/lib/init-templates/v1/sample-app/typescript/lib/%name%-stack.template.ts +0 -18
  243. package/lib/init-templates/v1/sample-app/typescript/package.json +0 -30
  244. package/lib/init-templates/v1/sample-app/typescript/sub-placeholders.hook.d.ts +0 -2
  245. package/lib/init-templates/v1/sample-app/typescript/sub-placeholders.hook.js +0 -9
  246. package/lib/init-templates/v1/sample-app/typescript/test/%name%.test.template.ts +0 -25
  247. package/lib/init-templates/v2/app/csharp/.template.gitignore +0 -342
  248. package/lib/init-templates/v2/app/csharp/README.md +0 -14
  249. package/lib/init-templates/v2/app/csharp/add-project.hook.d.ts +0 -2
  250. package/lib/init-templates/v2/app/csharp/cdk.template.json +0 -15
  251. package/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs +0 -1
  252. package/lib/init-templates/v2/app/csharp/src/%name.PascalCased%.template.sln +0 -18
  253. package/lib/init-templates/v2/app/fsharp/.template.gitignore +0 -342
  254. package/lib/init-templates/v2/app/fsharp/README.md +0 -18
  255. package/lib/init-templates/v2/app/fsharp/add-project.hook.d.ts +0 -2
  256. package/lib/init-templates/v2/app/fsharp/cdk.template.json +0 -14
  257. package/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs +0 -8
  258. package/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/Program.template.fs +0 -11
  259. package/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%.template.sln +0 -18
  260. package/lib/init-templates/v2/app/go/.template.gitignore +0 -19
  261. package/lib/init-templates/v2/app/go/cdk.template.json +0 -13
  262. package/lib/init-templates/v2/app/info.json +0 -4
  263. package/lib/init-templates/v2/app/java/.template.gitignore +0 -13
  264. package/lib/init-templates/v2/app/java/README.md +0 -18
  265. package/lib/init-templates/v2/app/java/cdk.json +0 -13
  266. package/lib/init-templates/v2/app/java/sub-placeholders.hook.d.ts +0 -2
  267. package/lib/init-templates/v2/app/java/sub-placeholders.hook.js +0 -9
  268. package/lib/init-templates/v2/app/javascript/.template.gitignore +0 -5
  269. package/lib/init-templates/v2/app/javascript/.template.npmignore +0 -3
  270. package/lib/init-templates/v2/app/javascript/README.md +0 -12
  271. package/lib/init-templates/v2/app/javascript/cdk.template.json +0 -15
  272. package/lib/init-templates/v2/app/javascript/sub-placeholders.hook.d.ts +0 -2
  273. package/lib/init-templates/v2/app/javascript/sub-placeholders.hook.js +0 -9
  274. package/lib/init-templates/v2/app/python/%name.PythonModule%/__init__.py +0 -0
  275. package/lib/init-templates/v2/app/python/README.template.md +0 -58
  276. package/lib/init-templates/v2/app/python/cdk.template.json +0 -15
  277. package/lib/init-templates/v2/app/python/requirements-dev.txt +0 -1
  278. package/lib/init-templates/v2/app/python/source.bat +0 -13
  279. package/lib/init-templates/v2/app/python/sub-placeholders.hook.d.ts +0 -2
  280. package/lib/init-templates/v2/app/python/tests/__init__.py +0 -0
  281. package/lib/init-templates/v2/app/python/tests/unit/__init__.py +0 -0
  282. package/lib/init-templates/v2/app/typescript/.template.gitignore +0 -8
  283. package/lib/init-templates/v2/app/typescript/.template.npmignore +0 -6
  284. package/lib/init-templates/v2/app/typescript/README.md +0 -14
  285. package/lib/init-templates/v2/app/typescript/cdk.template.json +0 -17
  286. package/lib/init-templates/v2/app/typescript/jest.config.js +0 -8
  287. package/lib/init-templates/v2/app/typescript/sub-placeholders.hook.d.ts +0 -2
  288. package/lib/init-templates/v2/app/typescript/sub-placeholders.hook.js +0 -9
  289. package/lib/init-templates/v2/app/typescript/tsconfig.json +0 -30
  290. package/lib/init-templates/v2/lib/info.json +0 -4
  291. package/lib/init-templates/v2/lib/typescript/.template.gitignore +0 -8
  292. package/lib/init-templates/v2/lib/typescript/.template.npmignore +0 -6
  293. package/lib/init-templates/v2/lib/typescript/jest.config.js +0 -8
  294. package/lib/init-templates/v2/lib/typescript/sub-placeholders.hook.d.ts +0 -2
  295. package/lib/init-templates/v2/lib/typescript/sub-placeholders.hook.js +0 -9
  296. package/lib/init-templates/v2/lib/typescript/tsconfig.json +0 -30
  297. package/lib/init-templates/v2/sample-app/csharp/.template.gitignore +0 -342
  298. package/lib/init-templates/v2/sample-app/csharp/add-project.hook.d.ts +0 -2
  299. package/lib/init-templates/v2/sample-app/csharp/add-project.hook.js +0 -31
  300. package/lib/init-templates/v2/sample-app/csharp/cdk.template.json +0 -15
  301. package/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs +0 -1
  302. package/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/Program.template.cs +0 -15
  303. package/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%.template.sln +0 -18
  304. package/lib/init-templates/v2/sample-app/fsharp/.template.gitignore +0 -342
  305. package/lib/init-templates/v2/sample-app/fsharp/README.template.md +0 -20
  306. package/lib/init-templates/v2/sample-app/fsharp/add-project.hook.d.ts +0 -2
  307. package/lib/init-templates/v2/sample-app/fsharp/add-project.hook.js +0 -31
  308. package/lib/init-templates/v2/sample-app/fsharp/cdk.template.json +0 -14
  309. package/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs +0 -11
  310. package/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%.template.sln +0 -18
  311. package/lib/init-templates/v2/sample-app/go/.template.gitignore +0 -19
  312. package/lib/init-templates/v2/sample-app/go/cdk.template.json +0 -13
  313. package/lib/init-templates/v2/sample-app/info.json +0 -4
  314. package/lib/init-templates/v2/sample-app/java/.template.gitignore +0 -13
  315. package/lib/init-templates/v2/sample-app/java/cdk.json +0 -13
  316. package/lib/init-templates/v2/sample-app/java/sub-placeholders.hook.d.ts +0 -2
  317. package/lib/init-templates/v2/sample-app/java/sub-placeholders.hook.js +0 -9
  318. package/lib/init-templates/v2/sample-app/javascript/.template.gitignore +0 -5
  319. package/lib/init-templates/v2/sample-app/javascript/.template.npmignore +0 -3
  320. package/lib/init-templates/v2/sample-app/javascript/cdk.template.json +0 -15
  321. package/lib/init-templates/v2/sample-app/javascript/jest.config.js +0 -3
  322. package/lib/init-templates/v2/sample-app/javascript/sub-placeholders.hook.d.ts +0 -2
  323. package/lib/init-templates/v2/sample-app/javascript/sub-placeholders.hook.js +0 -9
  324. package/lib/init-templates/v2/sample-app/javascript/tsconfig.json +0 -35
  325. package/lib/init-templates/v2/sample-app/python/%name.PythonModule%/__init__.py +0 -0
  326. package/lib/init-templates/v2/sample-app/python/.template.gitignore +0 -22
  327. package/lib/init-templates/v2/sample-app/python/cdk.template.json +0 -15
  328. package/lib/init-templates/v2/sample-app/python/requirements-dev.txt +0 -1
  329. package/lib/init-templates/v2/sample-app/python/source.bat +0 -13
  330. package/lib/init-templates/v2/sample-app/python/sub-placeholders.hook.d.ts +0 -2
  331. package/lib/init-templates/v2/sample-app/python/sub-placeholders.hook.js +0 -9
  332. package/lib/init-templates/v2/sample-app/python/tests/__init__.py +0 -0
  333. package/lib/init-templates/v2/sample-app/python/tests/unit/__init__.py +0 -0
  334. package/lib/init-templates/v2/sample-app/typescript/.template.gitignore +0 -8
  335. package/lib/init-templates/v2/sample-app/typescript/.template.npmignore +0 -6
  336. package/lib/init-templates/v2/sample-app/typescript/cdk.template.json +0 -17
  337. package/lib/init-templates/v2/sample-app/typescript/jest.config.js +0 -8
  338. package/lib/init-templates/v2/sample-app/typescript/sub-placeholders.hook.d.ts +0 -2
  339. package/lib/init-templates/v2/sample-app/typescript/sub-placeholders.hook.js +0 -9
  340. package/lib/init-templates/v2/sample-app/typescript/tsconfig.json +0 -30
@@ -2,9 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const api_1 = require("../../lib/api");
4
4
  const hotswap_deployments_1 = require("../../lib/api/hotswap-deployments");
5
+ const logging_1 = require("../../lib/logging");
5
6
  const util_1 = require("../util");
6
7
  const mock_sdk_1 = require("../util/mock-sdk");
7
- const logging_1 = require("../../lib/logging");
8
8
  jest.mock('../../lib/api/hotswap-deployments');
9
9
  const FAKE_STACK = util_1.testStack({
10
10
  stackName: 'withouterrors',
@@ -672,4 +672,4 @@ function givenTemplateIs(template) {
672
672
  TemplateBody: JSON.stringify(template),
673
673
  });
674
674
  }
675
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LXN0YWNrLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkZXBsb3ktc3RhY2sudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHVDQUE2RTtBQUM3RSwyRUFBeUU7QUFDekUsa0NBQTJEO0FBQzNELCtDQUF3SDtBQUN4SCwrQ0FBMEM7QUFFMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0FBRS9DLE1BQU0sVUFBVSxHQUFHLGdCQUFTLENBQUM7SUFDM0IsU0FBUyxFQUFFLGVBQWU7Q0FDM0IsQ0FBQyxDQUFDO0FBRUgsTUFBTSwwQkFBMEIsR0FBRyxnQkFBUyxDQUFDO0lBQzNDLFNBQVMsRUFBRSxnQkFBZ0I7SUFDM0IsUUFBUSxFQUFFO1FBQ1IsVUFBVSxFQUFFO1lBQ1YsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUM1QixVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUU7WUFDckQsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtTQUNuQztLQUNGO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxpQ0FBaUMsR0FBRyxnQkFBUyxDQUFDO0lBQ2xELFNBQVMsRUFBRSx3QkFBd0I7SUFDbkMsUUFBUSxFQUFFLDRCQUFxQjtJQUMvQixxQkFBcUIsRUFBRSxJQUFJO0NBQzVCLENBQUMsQ0FBQztBQUVILElBQUksR0FBWSxDQUFDO0FBQ2pCLElBQUksV0FBNEIsQ0FBQztBQUNqQyxJQUFJLFFBQStELENBQUM7QUFDcEUsSUFBSSxVQUE0QixDQUFDO0FBQ2pDLElBQUksVUFBNEIsQ0FBQztBQUVqQyxVQUFVLENBQUMsR0FBRyxFQUFFO0lBQ2QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3JCLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENB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Q0FBQyxRQUFhO0lBQ3BDLFFBQVEsQ0FBQyxXQUFZLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbEMsUUFBUSxDQUFDLFdBQVksQ0FBQyxlQUFlLENBQUM7UUFDcEMsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0tBQ3ZDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXBsb3lTdGFjaywgRGVwbG95U3RhY2tPcHRpb25zLCBUb29sa2l0SW5mbyB9IGZyb20gJy4uLy4uL2xpYi9hcGknO1xuaW1wb3J0IHsgdHJ5SG90c3dhcERlcGxveW1lbnQgfSBmcm9tICcuLi8uLi9saWIvYXBpL2hvdHN3YXAtZGVwbG95bWVudHMnO1xuaW1wb3J0IHsgREVGQVVMVF9GQUtFX1RFTVBMQVRFLCB0ZXN0U3RhY2sgfSBmcm9tICcuLi91dGlsJztcbmltcG9ydCB7IE1vY2tlZE9iamVjdCwgbW9ja1Jlc29sdmVkRW52aXJvbm1lbnQsIE1vY2tTZGssIE1vY2tTZGtQcm92aWRlciwgU3luY0hhbmRsZXJTdWJzZXRPZiB9IGZyb20gJy4uL3V0aWwvbW9jay1zZGsnO1xuaW1wb3J0IHsgc2V0Q0kgfSBmcm9tICcuLi8uLi9saWIvbG9nZ2luZyc7XG5cbmplc3QubW9jaygnLi4vLi4vbGliL2FwaS9ob3Rzd2FwLWRlcGxveW1lbnRzJyk7XG5cbmNvbnN0IEZBS0VfU1RBQ0sgPSB0ZXN0U3RhY2soe1xuICBzdGFja05hbWU6ICd3aXRob3V0ZXJyb3JzJyxcbn0pO1xuXG5jb25zdCBGQUtFX1NUQUNLX1dJVEhfUEFSQU1FVEVSUyA9IHRlc3RTdGFjayh7XG4gIHN0YWNrTmFtZTogJ3dpdGhwYXJhbWV0ZXJzJyxcbiAgdGVtcGxhdGU6IHtcbiAgICBQYXJhbWV0ZXJzOiB7XG4gICAgICBIYXNWYWx1ZTogeyBUeXBlOiAnU3RyaW5nJyB9LFxuICAgICAgSGFzRGVmYXVsdDogeyBUeXBlOiAnU3RyaW5nJywgRGVmYXVsdDogJ1RoZURlZmF1bHQnIH0sXG4gICAgICBPdGhlclBhcmFtZXRlcjogeyBUeXBlOiAnU3RyaW5nJyB9LFxuICAgIH0sXG4gIH0sXG59KTtcblxuY29uc3QgRkFLRV9TVEFDS19URVJNSU5BVElPTl9QUk9URUNUSU9OID0gdGVzdFN0YWNrKHtcbiAgc3RhY2tOYW1lOiAndGVybWluYXRpb24tcHJvdGVjdGlvbicsXG4gIHRlbXBsYXRlOiBERUZBVUxUX0ZBS0VfVEVNUExBVEUsXG4gIHRlcm1pbmF0aW9uUHJvdGVjdGlvbjogdHJ1ZSxcbn0pO1xuXG5sZXQgc2RrOiBNb2NrU2RrO1xubGV0IHNka1Byb3ZpZGVyOiBNb2NrU2RrUHJvdmlkZXI7XG5sZXQgY2ZuTW9ja3M6IE1vY2tlZE9iamVjdDxTeW5jSGFuZGxlclN1YnNldE9mPEFXUy5DbG91ZEZvcm1hdGlvbj4+O1xubGV0IHN0ZGVyck1vY2s6IGplc3QuU3B5SW5zdGFuY2U7XG5sZXQgc3Rkb3V0TW9jazogamVzdC5TcHlJbnN0YW5jZTtcblxuYmVmb3JlRWFjaCgoKSA9PiB7XG4gIGplc3QucmVzZXRBbGxNb2NrcygpO1xuICBzdGRlcnJNb2NrID0gamVzdC5zcHlPbihwcm9jZXNzLnN0ZGVyciwgJ3dyaXRlJykubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHsgcmV0dXJuIHRydWU7IH0pO1xuICBzdGRvdXRNb2NrID0gamVzdC5zcHlPbihwcm9jZXNzLnN0ZG91dCwgJ3dyaXRlJykubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHsgcmV0dXJuIHRydWU7IH0pO1xuXG4gIHNka1Byb3ZpZGVyID0gbmV3IE1vY2tTZGtQcm92aWRlcigpO1xuICBzZGsgPSBuZXcgTW9ja1NkaygpO1xuXG4gIGNmbk1vY2tzID0ge1xuICAgIGRlc2NyaWJlU3RhY2tFdmVudHM6IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUoe30pLFxuICAgIGRlc2NyaWJlU3RhY2tzOiBqZXN0LmZuKClcbiAgICAgIC8vIEZpcnN0IGNhbGwsIG5vIHN0YWNrcyBleGlzdFxuICAgICAgLm1vY2tJbXBsZW1lbnRhdGlvbk9uY2UoKCkgPT4gKHsgU3RhY2tzOiBbXSB9KSlcbiAgICAgIC8vIFNlY29uZCBjYWxsLCBzdGFjayBoYXMgYmVlbiBjcmVhdGVkXG4gICAgICAubW9ja0ltcGxlbWVudGF0aW9uT25jZSgoKSA9PiAoe1xuICAgICAgICBTdGFja3M6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBTdGFja1N0YXR1czogJ0NSRUFURV9DT01QTEVURScsXG4gICAgICAgICAgICBTdGFja1N0YXR1c1JlYXNvbjogJ0l0IGlzIG1hZ2ljJyxcbiAgICAgICAgICAgIEVuYWJsZVRlcm1pbmF0aW9uUHJvdGVjdGlvbjogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pKSxcbiAgICBjcmVhdGVDaGFuZ2VTZXQ6IGplc3QuZm4oKF9vKSA9PiAoe30pKSxcbiAgICBkZWxldGVDaGFuZ2VTZXQ6IGplc3QuZm4oKF9vKSA9PiAoe30pKSxcbiAgICBkZXNjcmliZUNoYW5nZVNldDogamVzdC5mbigoX28pID0+ICh7XG4gICAgICBTdGF0dXM6ICdDUkVBVEVfQ09NUExFVEUnLFxuICAgICAgQ2hhbmdlczogW10sXG4gICAgfSkpLFxuICAgIGV4ZWN1dGVDaGFuZ2VTZXQ6IGplc3QuZm4oKF9vKSA9PiAoe30pKSxcbiAgICBkZWxldGVTdGFjazogamVzdC5mbigoX28pID0+ICh7fSkpLFxuICAgIGdldFRlbXBsYXRlOiBqZXN0LmZuKChfbykgPT4gKHsgVGVtcGxhdGVCb2R5OiBKU09OLnN0cmluZ2lmeShERUZBVUxUX0ZBS0VfVEVNUExBVEUpIH0pKSxcbiAgICB1cGRhdGVUZXJtaW5hdGlvblByb3RlY3Rpb246IGplc3QuZm4oKF9vKSA9PiAoeyBTdGFja0lkOiAnc3RhY2staWQnIH0pKSxcbiAgfTtcbiAgc2RrLnN0dWJDbG91ZEZvcm1hdGlvbihjZm5Nb2NrcyBhcyBhbnkpO1xuICBzZGsuc3R1YkdldEVuZHBvaW50U3VmZml4KCgpID0+ICdhbWF6b25hd3MuY29tJyk7XG59KTtcblxuZnVuY3Rpb24gc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpOiBEZXBsb3lTdGFja09wdGlvbnMge1xuICByZXR1cm4ge1xuICAgIHN0YWNrOiBGQUtFX1NUQUNLLFxuICAgIHNkayxcbiAgICBzZGtQcm92aWRlcixcbiAgICByZXNvbHZlZEVudmlyb25tZW50OiBtb2NrUmVzb2x2ZWRFbnZpcm9ubWVudCgpLFxuICAgIHRvb2xraXRJbmZvOiBUb29sa2l0SW5mby5ib290c3RyYXBsZXNzRGVwbG95bWVudHNPbmx5KHNkayksXG4gIH07XG59XG5cbnRlc3QoXCJjYWxscyB0cnlIb3Rzd2FwRGVwbG95bWVudCgpIGlmICdob3Rzd2FwJyBpcyB0cnVlXCIsIGFzeW5jICgpID0+IHtcbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICAgIGhvdHN3YXA6IHRydWUsXG4gICAgZXh0cmFVc2VyQWdlbnQ6ICdleHRyYS11c2VyLWFnZW50JyxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QodHJ5SG90c3dhcERlcGxveW1lbnQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgLy8gY2hlY2sgdGhhdCB0aGUgZXh0cmEgVXNlci1BZ2VudCBpcyBob25vcmVkXG4gIGV4cGVjdChzZGsuYXBwZW5kQ3VzdG9tVXNlckFnZW50KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnZXh0cmEtdXNlci1hZ2VudCcpO1xuICAvLyBjaGVjayB0aGF0IHRoZSBmYWxsYmFjayBoYXMgYmVlbiBjYWxsZWQgaWYgaG90c3dhcHBpbmcgZmFpbGVkXG4gIGV4cGVjdChzZGsuYXBwZW5kQ3VzdG9tVXNlckFnZW50KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnY2RrLWhvdHN3YXAvZmFsbGJhY2snKTtcbn0pO1xuXG50ZXN0KFwiZG9lcyBub3QgY2FsbCB0cnlIb3Rzd2FwRGVwbG95bWVudCgpIGlmICdob3Rzd2FwJyBpcyBmYWxzZVwiLCBhc3luYyAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgICBob3Rzd2FwOiBmYWxzZSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QodHJ5SG90c3dhcERlcGxveW1lbnQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG59KTtcblxudGVzdChcInJvbGxiYWNrIHN0aWxsIGRlZmF1bHRzIHRvIGVuYWJsZWQgZXZlbiBpZiAnaG90c3dhcCcgaXMgZW5hYmxlZFwiLCBhc3luYyAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgICBob3Rzd2FwOiB0cnVlLFxuICAgIHJvbGxiYWNrOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLmV4ZWN1dGVDaGFuZ2VTZXQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgRGlzYWJsZVJvbGxiYWNrOiB0cnVlLFxuICB9KSk7XG59KTtcblxudGVzdChcInJvbGxiYWNrIGRlZmF1bHRzIHRvIGVuYWJsZWQgaWYgJ2hvdHN3YXAnIGlzIGZhbHNlXCIsIGFzeW5jICgpID0+IHtcbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICAgIGhvdHN3YXA6IGZhbHNlLFxuICAgIHJvbGxiYWNrOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLmV4ZWN1dGVDaGFuZ2VTZXQpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgZXhwZWN0KGNmbk1vY2tzLmV4ZWN1dGVDaGFuZ2VTZXQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgRGlzYWJsZVJvbGxiYWNrOiBleHBlY3QuYW55dGhpbmcoKSxcbiAgfSkpO1xufSk7XG5cbnRlc3QoJ2RvIGRlcGxveSBleGVjdXRhYmxlIGNoYW5nZSBzZXQgd2l0aCAwIGNoYW5nZXMnLCBhc3luYyAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgY29uc3QgcmV0ID0gYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QocmV0Lm5vT3ApLnRvQmVGYWxzeSgpO1xuICBleHBlY3QoY2ZuTW9ja3MuZXhlY3V0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZCgpO1xufSk7XG5cbnRlc3QoJ2NvcnJlY3RseSBwYXNzZXMgQ0ZOIHBhcmFtZXRlcnMsIGlnbm9yaW5nIG9uZXMgd2l0aCBlbXB0eSB2YWx1ZXMnLCBhc3luYyAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBBOiAnQS12YWx1ZScsXG4gICAgICBCOiAnQj12YWx1ZScsXG4gICAgICBDOiB1bmRlZmluZWQsXG4gICAgICBEOiAnJyxcbiAgICB9LFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChjZm5Nb2Nrcy5jcmVhdGVDaGFuZ2VTZXQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICBQYXJhbWV0ZXJzOiBbXG4gICAgICB7IFBhcmFtZXRlcktleTogJ0EnLCBQYXJhbWV0ZXJWYWx1ZTogJ0EtdmFsdWUnIH0sXG4gICAgICB7IFBhcmFtZXRlcktleTogJ0InLCBQYXJhbWV0ZXJWYWx1ZTogJ0I9dmFsdWUnIH0sXG4gICAgXSxcbiAgfSkpO1xufSk7XG5cbnRlc3QoJ3JldXNlIHByZXZpb3VzIHBhcmFtZXRlcnMgaWYgcmVxdWVzdGVkJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBnaXZlblN0YWNrRXhpc3RzKHtcbiAgICBQYXJhbWV0ZXJzOiBbXG4gICAgICB7IFBhcmFtZXRlcktleTogJ0hhc1ZhbHVlJywgUGFyYW1ldGVyVmFsdWU6ICdUaGVWYWx1ZScgfSxcbiAgICAgIHsgUGFyYW1ldGVyS2V5OiAnSGFzRGVmYXVsdCcsIFBhcmFtZXRlclZhbHVlOiAnVGhlT2xkVmFsdWUnIH0sXG4gICAgXSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICAgIHN0YWNrOiBGQUtFX1NUQUNLX1dJVEhfUEFSQU1FVEVSUyxcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBPdGhlclBhcmFtZXRlcjogJ1NvbWVWYWx1ZScsXG4gICAgfSxcbiAgICB1c2VQcmV2aW91c1BhcmFtZXRlcnM6IHRydWUsXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLmNyZWF0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgIFBhcmFtZXRlcnM6IFtcbiAgICAgIHsgUGFyYW1ldGVyS2V5OiAnSGFzVmFsdWUnLCBVc2VQcmV2aW91c1ZhbHVlOiB0cnVlIH0sXG4gICAgICB7IFBhcmFtZXRlcktleTogJ0hhc0RlZmF1bHQnLCBVc2VQcmV2aW91c1ZhbHVlOiB0cnVlIH0sXG4gICAgICB7IFBhcmFtZXRlcktleTogJ090aGVyUGFyYW1ldGVyJywgUGFyYW1ldGVyVmFsdWU6ICdTb21lVmFsdWUnIH0sXG4gICAgXSxcbiAgfSkpO1xufSk7XG5cbmRlc2NyaWJlKCdjaT10cnVlJywgKCkgPT4ge1xuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBzZXRDSSh0cnVlKTtcbiAgfSk7XG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgc2V0Q0koZmFsc2UpO1xuICB9KTtcbiAgdGVzdCgnb3V0cHV0IHdyaXR0ZW4gdG8gc3Rkb3V0JywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG5cbiAgICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgICAuLi5zdGFuZGFyZERlcGxveVN0YWNrQXJndW1lbnRzKCksXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KHN0ZGVyck1vY2subW9jay5jYWxscykudG9FcXVhbChbXSk7XG4gICAgZXhwZWN0KHN0ZG91dE1vY2subW9jay5jYWxscykubm90LnRvRXF1YWwoW10pO1xuICB9KTtcbn0pO1xuXG50ZXN0KCdkbyBub3QgcmV1c2UgcHJldmlvdXMgcGFyYW1ldGVycyBpZiBub3QgcmVxdWVzdGVkJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBnaXZlblN0YWNrRXhpc3RzKHtcbiAgICBQYXJhbWV0ZXJzOiBbXG4gICAgICB7IFBhcmFtZXRlcktleTogJ0hhc1ZhbHVlJywgUGFyYW1ldGVyVmFsdWU6ICdUaGVWYWx1ZScgfSxcbiAgICAgIHsgUGFyYW1ldGVyS2V5OiAnSGFzRGVmYXVsdCcsIFBhcmFtZXRlclZhbHVlOiAnVGhlT2xkVmFsdWUnIH0sXG4gICAgXSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICAgIHN0YWNrOiBGQUtFX1NUQUNLX1dJVEhfUEFSQU1FVEVSUyxcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBIYXNWYWx1ZTogJ1NvbWVWYWx1ZScsXG4gICAgICBPdGhlclBhcmFtZXRlcjogJ1NvbWVWYWx1ZScsXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoY2ZuTW9ja3MuY3JlYXRlQ2hhbmdlU2V0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgUGFyYW1ldGVyczogW1xuICAgICAgeyBQYXJhbWV0ZXJLZXk6ICdIYXNWYWx1ZScsIFBhcmFtZXRlclZhbHVlOiAnU29tZVZhbHVlJyB9LFxuICAgICAgeyBQYXJhbWV0ZXJLZXk6ICdPdGhlclBhcmFtZXRlcicsIFBhcmFtZXRlclZhbHVlOiAnU29tZVZhbHVlJyB9LFxuICAgIF0sXG4gIH0pKTtcbn0pO1xuXG50ZXN0KCd0aHJvdyBleGNlcHRpb24gaWYgbm90IGVub3VnaCBwYXJhbWV0ZXJzIHN1cHBsaWVkJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBnaXZlblN0YWNrRXhpc3RzKHtcbiAgICBQYXJhbWV0ZXJzOiBbXG4gICAgICB7IFBhcmFtZXRlcktleTogJ0hhc1ZhbHVlJywgUGFyYW1ldGVyVmFsdWU6ICdUaGVWYWx1ZScgfSxcbiAgICAgIHsgUGFyYW1ldGVyS2V5OiAnSGFzRGVmYXVsdCcsIFBhcmFtZXRlclZhbHVlOiAnVGhlT2xkVmFsdWUnIH0sXG4gICAgXSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBleHBlY3QoZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgICBzdGFjazogRkFLRV9TVEFDS19XSVRIX1BBUkFNRVRFUlMsXG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgT3RoZXJQYXJhbWV0ZXI6ICdTb21lVmFsdWUnLFxuICAgIH0sXG4gIH0pKS5yZWplY3RzLnRvVGhyb3coL0Nsb3VkRm9ybWF0aW9uIFBhcmFtZXRlcnMgYXJlIG1pc3NpbmcgYSB2YWx1ZS8pO1xufSk7XG5cbnRlc3QoJ2RlcGxveSBpcyBza2lwcGVkIGlmIHRlbXBsYXRlIGRpZCBub3QgY2hhbmdlJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBnaXZlblN0YWNrRXhpc3RzKCk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChjZm5Nb2Nrcy5leGVjdXRlQ2hhbmdlU2V0KS5ub3QudG9CZUNhbGxlZCgpO1xufSk7XG5cbnRlc3QoJ2RlcGxveSBpcyBza2lwcGVkIGlmIHBhcmFtZXRlcnMgYXJlIHRoZSBzYW1lJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBnaXZlblRlbXBsYXRlSXMoRkFLRV9TVEFDS19XSVRIX1BBUkFNRVRFUlMudGVtcGxhdGUpO1xuICBnaXZlblN0YWNrRXhpc3RzKHtcbiAgICBQYXJhbWV0ZXJzOiBbXG4gICAgICB7IFBhcmFtZXRlcktleTogJ0hhc1ZhbHVlJywgUGFyYW1ldGVyVmFsdWU6ICdIYXNWYWx1ZScgfSxcbiAgICAgIHsgUGFyYW1ldGVyS2V5OiAnSGFzRGVmYXVsdCcsIFBhcmFtZXRlclZhbHVlOiAnSGFzRGVmYXVsdCcgfSxcbiAgICAgIHsgUGFyYW1ldGVyS2V5OiAnT3RoZXJQYXJhbWV0ZXInLCBQYXJhbWV0ZXJWYWx1ZTogJ090aGVyUGFyYW1ldGVyJyB9LFxuICAgIF0sXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgICBzdGFjazogRkFLRV9TVEFDS19XSVRIX1BBUkFNRVRFUlMsXG4gICAgcGFyYW1ldGVyczoge30sXG4gICAgdXNlUHJldmlvdXNQYXJhbWV0ZXJzOiB0cnVlLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChjZm5Nb2Nrcy5jcmVhdGVDaGFuZ2VTZXQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG59KTtcblxudGVzdCgnZGVwbG95IGlzIG5vdCBza2lwcGVkIGlmIHBhcmFtZXRlcnMgYXJlIGRpZmZlcmVudCcsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgZ2l2ZW5UZW1wbGF0ZUlzKEZBS0VfU1RBQ0tfV0lUSF9QQVJBTUVURVJTLnRlbXBsYXRlKTtcbiAgZ2l2ZW5TdGFja0V4aXN0cyh7XG4gICAgUGFyYW1ldGVyczogW1xuICAgICAgeyBQYXJhbWV0ZXJLZXk6ICdIYXNWYWx1ZScsIFBhcmFtZXRlclZhbHVlOiAnSGFzVmFsdWUnIH0sXG4gICAgICB7IFBhcmFtZXRlcktleTogJ0hhc0RlZmF1bHQnLCBQYXJhbWV0ZXJWYWx1ZTogJ0hhc0RlZmF1bHQnIH0sXG4gICAgICB7IFBhcmFtZXRlcktleTogJ090aGVyUGFyYW1ldGVyJywgUGFyYW1ldGVyVmFsdWU6ICdPdGhlclBhcmFtZXRlcicgfSxcbiAgICBdLFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IGRlcGxveVN0YWNrKHtcbiAgICAuLi5zdGFuZGFyZERlcGxveVN0YWNrQXJndW1lbnRzKCksXG4gICAgc3RhY2s6IEZBS0VfU1RBQ0tfV0lUSF9QQVJBTUVURVJTLFxuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIEhhc1ZhbHVlOiAnTmV3VmFsdWUnLFxuICAgIH0sXG4gICAgdXNlUHJldmlvdXNQYXJhbWV0ZXJzOiB0cnVlLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChjZm5Nb2Nrcy5jcmVhdGVDaGFuZ2VTZXQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICBQYXJhbWV0ZXJzOiBbXG4gICAgICB7IFBhcmFtZXRlcktleTogJ0hhc1ZhbHVlJywgUGFyYW1ldGVyVmFsdWU6ICdOZXdWYWx1ZScgfSxcbiAgICAgIHsgUGFyYW1ldGVyS2V5OiAnSGFzRGVmYXVsdCcsIFVzZVByZXZpb3VzVmFsdWU6IHRydWUgfSxcbiAgICAgIHsgUGFyYW1ldGVyS2V5OiAnT3RoZXJQYXJhbWV0ZXInLCBVc2VQcmV2aW91c1ZhbHVlOiB0cnVlIH0sXG4gICAgXSxcbiAgfSkpO1xufSk7XG5cbnRlc3QoJ2lmIGV4aXN0aW5nIHN0YWNrIGZhaWxlZCB0byBjcmVhdGUsIGl0IGlzIGRlbGV0ZWQgYW5kIHJlY3JlYXRlZCcsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgZ2l2ZW5TdGFja0V4aXN0cyhcbiAgICB7IFN0YWNrU3RhdHVzOiAnUk9MTEJBQ0tfQ09NUExFVEUnIH0sIC8vIFRoaXMgaXMgZm9yIHRoZSBpbml0aWFsIGNoZWNrXG4gICAgeyBTdGFja1N0YXR1czogJ0RFTEVURV9DT01QTEVURScgfSwgLy8gUG9sbCB0aGUgc3VjY2Vzc2Z1bCBkZWxldGlvblxuICAgIHsgU3RhY2tTdGF0dXM6ICdDUkVBVEVfQ09NUExFVEUnIH0sIC8vIFBvbGwgdGhlIHJlY3JlYXRpb25cbiAgKTtcbiAgZ2l2ZW5UZW1wbGF0ZUlzKHtcbiAgICBEaWZmZXJlbnRUaGFuOiAnVGhlRGVmYXVsdCcsXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoY2ZuTW9ja3MuZGVsZXRlU3RhY2spLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgZXhwZWN0KGNmbk1vY2tzLmNyZWF0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgIENoYW5nZVNldFR5cGU6ICdDUkVBVEUnLFxuICB9KSk7XG59KTtcblxudGVzdCgnaWYgZXhpc3Rpbmcgc3RhY2sgZmFpbGVkIHRvIGNyZWF0ZSwgaXQgaXMgZGVsZXRlZCBhbmQgcmVjcmVhdGVkIGV2ZW4gaWYgdGhlIHRlbXBsYXRlIGRpZCBub3QgY2hhbmdlJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBnaXZlblN0YWNrRXhpc3RzKFxuICAgIHsgU3RhY2tTdGF0dXM6ICdST0xMQkFDS19DT01QTEVURScgfSwgLy8gVGhpcyBpcyBmb3IgdGhlIGluaXRpYWwgY2hlY2tcbiAgICB7IFN0YWNrU3RhdHVzOiAnREVMRVRFX0NPTVBMRVRFJyB9LCAvLyBQb2xsIHRoZSBzdWNjZXNzZnVsIGRlbGV0aW9uXG4gICAgeyBTdGFja1N0YXR1czogJ0NSRUFURV9DT01QTEVURScgfSwgLy8gUG9sbCB0aGUgcmVjcmVhdGlvblxuICApO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoY2ZuTW9ja3MuZGVsZXRlU3RhY2spLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgZXhwZWN0KGNmbk1vY2tzLmNyZWF0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgIENoYW5nZVNldFR5cGU6ICdDUkVBVEUnLFxuICB9KSk7XG59KTtcblxudGVzdCgnZGVwbG95IG5vdCBza2lwcGVkIGlmIHRlbXBsYXRlIGRpZCBub3QgY2hhbmdlIGFuZCAtLWZvcmNlIGlzIGFwcGxpZWQnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGdpdmVuU3RhY2tFeGlzdHMoKTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IGRlcGxveVN0YWNrKHtcbiAgICAuLi5zdGFuZGFyZERlcGxveVN0YWNrQXJndW1lbnRzKCksXG4gICAgZm9yY2U6IHRydWUsXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLmV4ZWN1dGVDaGFuZ2VTZXQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbn0pO1xuXG50ZXN0KCdkZXBsb3kgaXMgc2tpcHBlZCBpZiB0ZW1wbGF0ZSBhbmQgdGFncyBkaWQgbm90IGNoYW5nZScsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgZ2l2ZW5TdGFja0V4aXN0cyh7XG4gICAgVGFnczogW1xuICAgICAgeyBLZXk6ICdLZXkxJywgVmFsdWU6ICdWYWx1ZTEnIH0sXG4gICAgICB7IEtleTogJ0tleTInLCBWYWx1ZTogJ1ZhbHVlMicgfSxcbiAgICBdLFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IGRlcGxveVN0YWNrKHtcbiAgICAuLi5zdGFuZGFyZERlcGxveVN0YWNrQXJndW1lbnRzKCksXG4gICAgdGFnczogW1xuICAgICAgeyBLZXk6ICdLZXkxJywgVmFsdWU6ICdWYWx1ZTEnIH0sXG4gICAgICB7IEtleTogJ0tleTInLCBWYWx1ZTogJ1ZhbHVlMicgfSxcbiAgICBdLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChjZm5Nb2Nrcy5jcmVhdGVDaGFuZ2VTZXQpLm5vdC50b0JlQ2FsbGVkKCk7XG4gIGV4cGVjdChjZm5Nb2Nrcy5leGVjdXRlQ2hhbmdlU2V0KS5ub3QudG9CZUNhbGxlZCgpO1xuICBleHBlY3QoY2ZuTW9ja3MuZGVzY3JpYmVTdGFja3MpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHsgU3RhY2tOYW1lOiAnd2l0aG91dGVycm9ycycgfSk7XG4gIGV4cGVjdChjZm5Nb2Nrcy5nZXRUZW1wbGF0ZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoeyBTdGFja05hbWU6ICd3aXRob3V0ZXJyb3JzJywgVGVtcGxhdGVTdGFnZTogJ09yaWdpbmFsJyB9KTtcbn0pO1xuXG50ZXN0KCdkZXBsb3kgbm90IHNraXBwZWQgaWYgdGVtcGxhdGUgZGlkIG5vdCBjaGFuZ2UgYnV0IHRhZ3MgY2hhbmdlZCcsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgZ2l2ZW5TdGFja0V4aXN0cyh7XG4gICAgVGFnczogW1xuICAgICAgeyBLZXk6ICdLZXknLCBWYWx1ZTogJ1ZhbHVlJyB9LFxuICAgIF0sXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIHN0YWNrOiBGQUtFX1NUQUNLLFxuICAgIHNkayxcbiAgICBzZGtQcm92aWRlcixcbiAgICByZXNvbHZlZEVudmlyb25tZW50OiBtb2NrUmVzb2x2ZWRFbnZpcm9ubWVudCgpLFxuICAgIHRhZ3M6IFtcbiAgICAgIHtcbiAgICAgICAgS2V5OiAnS2V5JyxcbiAgICAgICAgVmFsdWU6ICdOZXdWYWx1ZScsXG4gICAgICB9LFxuICAgIF0sXG4gICAgdG9vbGtpdEluZm86IFRvb2xraXRJbmZvLmJvb3RzdHJhcGxlc3NEZXBsb3ltZW50c09ubHkoc2RrKSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoY2ZuTW9ja3MuY3JlYXRlQ2hhbmdlU2V0KS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gIGV4cGVjdChjZm5Nb2Nrcy5leGVjdXRlQ2hhbmdlU2V0KS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gIGV4cGVjdChjZm5Nb2Nrcy5kZXNjcmliZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICBleHBlY3QoY2ZuTW9ja3MuZGVzY3JpYmVTdGFja3MpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHsgU3RhY2tOYW1lOiAnd2l0aG91dGVycm9ycycgfSk7XG4gIGV4cGVjdChjZm5Nb2Nrcy5nZXRUZW1wbGF0ZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoeyBTdGFja05hbWU6ICd3aXRob3V0ZXJyb3JzJywgVGVtcGxhdGVTdGFnZTogJ09yaWdpbmFsJyB9KTtcbn0pO1xuXG50ZXN0KCdkZXBsb3lTdGFjayByZXBvcnRzIG5vIGNoYW5nZSBpZiBkZXNjcmliZUNoYW5nZVNldCByZXR1cm5zIHNwZWNpZmljIGVycm9yJywgYXN5bmMgKCkgPT4ge1xuICBjZm5Nb2Nrcy5kZXNjcmliZUNoYW5nZVNldD8ubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+ICh7XG4gICAgU3RhdHVzOiAnRkFJTEVEJyxcbiAgICBTdGF0dXNSZWFzb246ICdObyB1cGRhdGVzIGFyZSB0byBiZSBwZXJmb3JtZWQuJyxcbiAgfSkpO1xuXG4gIC8vIFdIRU5cbiAgY29uc3QgZGVwbG95UmVzdWx0ID0gYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoZGVwbG95UmVzdWx0Lm5vT3ApLnRvRXF1YWwodHJ1ZSk7XG59KTtcblxudGVzdCgnZGVwbG95IG5vdCBza2lwcGVkIGlmIHRlbXBsYXRlIGRpZCBub3QgY2hhbmdlIGJ1dCBvbmUgdGFnIHJlbW92ZWQnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGdpdmVuU3RhY2tFeGlzdHMoe1xuICAgIFRhZ3M6IFtcbiAgICAgIHsgS2V5OiAnS2V5MScsIFZhbHVlOiAnVmFsdWUxJyB9LFxuICAgICAgeyBLZXk6ICdLZXkyJywgVmFsdWU6ICdWYWx1ZTInIH0sXG4gICAgXSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICAgIHRhZ3M6IFtcbiAgICAgIHsgS2V5OiAnS2V5MScsIFZhbHVlOiAnVmFsdWUxJyB9LFxuICAgIF0sXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLmNyZWF0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICBleHBlY3QoY2ZuTW9ja3MuZXhlY3V0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICBleHBlY3QoY2ZuTW9ja3MuZGVzY3JpYmVDaGFuZ2VTZXQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgZXhwZWN0KGNmbk1vY2tzLmRlc2NyaWJlU3RhY2tzKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7IFN0YWNrTmFtZTogJ3dpdGhvdXRlcnJvcnMnIH0pO1xuICBleHBlY3QoY2ZuTW9ja3MuZ2V0VGVtcGxhdGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHsgU3RhY2tOYW1lOiAnd2l0aG91dGVycm9ycycsIFRlbXBsYXRlU3RhZ2U6ICdPcmlnaW5hbCcgfSk7XG59KTtcblxudGVzdCgnZGVwbG95IGlzIG5vdCBza2lwcGVkIGlmIHN0YWNrIGlzIGluIGEgX0ZBSUxFRCBzdGF0ZScsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgZ2l2ZW5TdGFja0V4aXN0cyh7XG4gICAgU3RhY2tTdGF0dXM6ICdERUxFVEVfRkFJTEVEJyxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICAgIHVzZVByZXZpb3VzUGFyYW1ldGVyczogdHJ1ZSxcbiAgfSkuY2F0Y2goKCkgPT4ge30pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLmNyZWF0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZCgpO1xufSk7XG5cbnRlc3QoJ2V4aXN0aW5nIHN0YWNrIGluIFVQREFURV9ST0xMQkFDS19DT01QTEVURSBzdGF0ZSBjYW4gYmUgdXBkYXRlZCcsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgZ2l2ZW5TdGFja0V4aXN0cyhcbiAgICB7IFN0YWNrU3RhdHVzOiAnVVBEQVRFX1JPTExCQUNLX0NPTVBMRVRFJyB9LCAvLyBUaGlzIGlzIGZvciB0aGUgaW5pdGlhbCBjaGVja1xuICAgIHsgU3RhY2tTdGF0dXM6ICdVUERBVEVfQ09NUExFVEUnIH0sIC8vIFBvbGwgdGhlIHVwZGF0ZVxuICApO1xuICBnaXZlblRlbXBsYXRlSXMoeyBjaGFuZ2VkOiAxMjMgfSk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChjZm5Nb2Nrcy5kZWxldGVTdGFjaykubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgZXhwZWN0KGNmbk1vY2tzLmNyZWF0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgIENoYW5nZVNldFR5cGU6ICdVUERBVEUnLFxuICB9KSk7XG59KTtcblxudGVzdCgnZGVwbG95IG5vdCBza2lwcGVkIGlmIHRlbXBsYXRlIGNoYW5nZWQnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGdpdmVuU3RhY2tFeGlzdHMoKTtcbiAgZ2l2ZW5UZW1wbGF0ZUlzKHsgY2hhbmdlZDogMTIzIH0pO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoY2ZuTW9ja3MuZXhlY3V0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZCgpO1xufSk7XG5cbnRlc3QoJ25vdCBleGVjdXRlZCBhbmQgbm8gZXJyb3IgaWYgLS1uby1leGVjdXRlIGlzIGdpdmVuJywgYXN5bmMgKCkgPT4ge1xuICAvLyBXSEVOXG4gIGF3YWl0IGRlcGxveVN0YWNrKHtcbiAgICAuLi5zdGFuZGFyZERlcGxveVN0YWNrQXJndW1lbnRzKCksXG4gICAgZXhlY3V0ZTogZmFsc2UsXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLmV4ZWN1dGVDaGFuZ2VTZXQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG59KTtcblxudGVzdCgnZW1wdHkgY2hhbmdlIHNldCBpcyBkZWxldGVkIGlmIC0tZXhlY3V0ZSBpcyBnaXZlbicsIGFzeW5jICgpID0+IHtcbiAgY2ZuTW9ja3MuZGVzY3JpYmVDaGFuZ2VTZXQ/Lm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiAoe1xuICAgIFN0YXR1czogJ0ZBSUxFRCcsXG4gICAgU3RhdHVzUmVhc29uOiAnTm8gdXBkYXRlcyBhcmUgdG8gYmUgcGVyZm9ybWVkLicsXG4gIH0pKTtcblxuICAvLyBHSVZFTlxuICBnaXZlblN0YWNrRXhpc3RzKCk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICAgIGV4ZWN1dGU6IHRydWUsXG4gICAgZm9yY2U6IHRydWUsIC8vIE5lY2Vzc2FyeSB0byBieXBhc3MgXCJza2lwIGRlcGxveVwiXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLmNyZWF0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICBleHBlY3QoY2ZuTW9ja3MuZXhlY3V0ZUNoYW5nZVNldCkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcblxuICAvL3RoZSBmaXJzdCBkZWxldGlvbiBpcyBmb3IgYW55IGV4aXN0aW5nIGNkayBjaGFuZ2Ugc2V0cywgdGhlIHNlY29uZCBpcyBmb3IgdGhlIGRlbGV0aW5nIHRoZSBuZXcgZW1wdHkgY2hhbmdlIHNldFxuICBleHBlY3QoY2ZuTW9ja3MuZGVsZXRlQ2hhbmdlU2V0KS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMik7XG59KTtcblxudGVzdCgnZW1wdHkgY2hhbmdlIHNldCBpcyBub3QgZGVsZXRlZCBpZiAtLW5vLWV4ZWN1dGUgaXMgZ2l2ZW4nLCBhc3luYyAoKSA9PiB7XG4gIGNmbk1vY2tzLmRlc2NyaWJlQ2hhbmdlU2V0Py5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gKHtcbiAgICBTdGF0dXM6ICdGQUlMRUQnLFxuICAgIFN0YXR1c1JlYXNvbjogJ05vIHVwZGF0ZXMgYXJlIHRvIGJlIHBlcmZvcm1lZC4nLFxuICB9KSk7XG5cbiAgLy8gR0lWRU5cbiAgZ2l2ZW5TdGFja0V4aXN0cygpO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgICBleGVjdXRlOiBmYWxzZSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoY2ZuTW9ja3MuY3JlYXRlQ2hhbmdlU2V0KS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gIGV4cGVjdChjZm5Nb2Nrcy5leGVjdXRlQ2hhbmdlU2V0KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuXG4gIC8vdGhlIGZpcnN0IGRlbGV0aW9uIGlzIGZvciBhbnkgZXhpc3RpbmcgY2RrIGNoYW5nZSBzZXRzXG4gIGV4cGVjdChjZm5Nb2Nrcy5kZWxldGVDaGFuZ2VTZXQpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbn0pO1xuXG50ZXN0KCd1c2UgUzMgdXJsIGZvciBzdGFjayBkZXBsb3ltZW50IGlmIHByZXNlbnQgaW4gU3RhY2sgQXJ0aWZhY3QnLCBhc3luYyAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgICBzdGFjazogdGVzdFN0YWNrKHtcbiAgICAgIHN0YWNrTmFtZTogJ3dpdGhvdXRlcnJvcnMnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBzdGFja1RlbXBsYXRlQXNzZXRPYmplY3RVcmw6ICdodHRwczovL3VzZS1tZS11c2UtbWUvJyxcbiAgICAgIH0sXG4gICAgfSksXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLmNyZWF0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgIFRlbXBsYXRlVVJMOiAnaHR0cHM6Ly91c2UtbWUtdXNlLW1lLycsXG4gIH0pKTtcbiAgZXhwZWN0KGNmbk1vY2tzLmV4ZWN1dGVDaGFuZ2VTZXQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbn0pO1xuXG50ZXN0KCd1c2UgUkVTVCBBUEkgUzMgdXJsIHdpdGggc3Vic3RpdHV0ZWQgcGxhY2Vob2xkZXJzIGlmIG1hbmlmZXN0IHVybCBzdGFydHMgd2l0aCBzMzovLycsIGFzeW5jICgpID0+IHtcbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICAgIHN0YWNrOiB0ZXN0U3RhY2soe1xuICAgICAgc3RhY2tOYW1lOiAnd2l0aG91dGVycm9ycycsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHN0YWNrVGVtcGxhdGVBc3NldE9iamVjdFVybDogJ3MzOi8vdXNlLW1lLXVzZS1tZS0ke0FXUzo6QWNjb3VudElkfS9vYmplY3QnLFxuICAgICAgfSxcbiAgICB9KSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoY2ZuTW9ja3MuY3JlYXRlQ2hhbmdlU2V0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgVGVtcGxhdGVVUkw6ICdodHRwczovL3MzLmJlcm11ZGEtdHJpYW5nbGUtMTMzNy5hbWF6b25hd3MuY29tL3VzZS1tZS11c2UtbWUtMTIzNDU2Nzg5L29iamVjdCcsXG4gIH0pKTtcbiAgZXhwZWN0KGNmbk1vY2tzLmV4ZWN1dGVDaGFuZ2VTZXQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbn0pO1xuXG50ZXN0KCdjaGFuZ2VzZXQgaXMgY3JlYXRlZCB3aGVuIHN0YWNrIGV4aXN0cyBpbiBSRVZJRVdfSU5fUFJPR1JFU1Mgc3RhdHVzJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBnaXZlblN0YWNrRXhpc3RzKHtcbiAgICBTdGFja1N0YXR1czogJ1JFVklFV19JTl9QUk9HUkVTUycsXG4gICAgVGFnczogW1xuICAgICAgeyBLZXk6ICdLZXkxJywgVmFsdWU6ICdWYWx1ZTEnIH0sXG4gICAgICB7IEtleTogJ0tleTInLCBWYWx1ZTogJ1ZhbHVlMicgfSxcbiAgICBdLFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IGRlcGxveVN0YWNrKHtcbiAgICAuLi5zdGFuZGFyZERlcGxveVN0YWNrQXJndW1lbnRzKCksXG4gICAgZXhlY3V0ZTogZmFsc2UsXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLmNyZWF0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgQ2hhbmdlU2V0VHlwZTogJ0NSRUFURScsXG4gICAgICBTdGFja05hbWU6ICd3aXRob3V0ZXJyb3JzJyxcbiAgICB9KSxcbiAgKTtcbiAgZXhwZWN0KGNmbk1vY2tzLmV4ZWN1dGVDaGFuZ2VTZXQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG59KTtcblxudGVzdCgnY2hhbmdlc2V0IGlzIHVwZGF0ZWQgd2hlbiBzdGFjayBleGlzdHMgaW4gQ1JFQVRFX0NPTVBMRVRFIHN0YXR1cycsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgZ2l2ZW5TdGFja0V4aXN0cyh7XG4gICAgVGFnczogW1xuICAgICAgeyBLZXk6ICdLZXkxJywgVmFsdWU6ICdWYWx1ZTEnIH0sXG4gICAgICB7IEtleTogJ0tleTInLCBWYWx1ZTogJ1ZhbHVlMicgfSxcbiAgICBdLFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IGRlcGxveVN0YWNrKHtcbiAgICAuLi5zdGFuZGFyZERlcGxveVN0YWNrQXJndW1lbnRzKCksXG4gICAgZXhlY3V0ZTogZmFsc2UsXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLmNyZWF0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgQ2hhbmdlU2V0VHlwZTogJ1VQREFURScsXG4gICAgICBTdGFja05hbWU6ICd3aXRob3V0ZXJyb3JzJyxcbiAgICB9KSxcbiAgKTtcbiAgZXhwZWN0KGNmbk1vY2tzLmV4ZWN1dGVDaGFuZ2VTZXQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG59KTtcblxudGVzdCgnZGVwbG95IHdpdGggdGVybWluYXRpb24gcHJvdGVjdGlvbiBlbmFibGVkJywgYXN5bmMgKCkgPT4ge1xuICAvLyBXSEVOXG4gIGF3YWl0IGRlcGxveVN0YWNrKHtcbiAgICAuLi5zdGFuZGFyZERlcGxveVN0YWNrQXJndW1lbnRzKCksXG4gICAgc3RhY2s6IEZBS0VfU1RBQ0tfVEVSTUlOQVRJT05fUFJPVEVDVElPTixcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoY2ZuTW9ja3MudXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgRW5hYmxlVGVybWluYXRpb25Qcm90ZWN0aW9uOiB0cnVlLFxuICB9KSk7XG59KTtcblxudGVzdCgndXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uIG5vdCBjYWxsZWQgd2hlbiB0ZXJtaW5hdGlvbiBwcm90ZWN0aW9uIGlzIHVuZGVmaW5lZCcsIGFzeW5jICgpID0+IHtcbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChjZm5Nb2Nrcy51cGRhdGVUZXJtaW5hdGlvblByb3RlY3Rpb24pLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG59KTtcblxudGVzdCgndXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uIGNhbGxlZCB3aGVuIHRlcm1pbmF0aW9uIHByb3RlY3Rpb24gaXMgdW5kZWZpbmVkIGFuZCBzdGFjayBoYXMgdGVybWluYXRpb24gcHJvdGVjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgZ2l2ZW5TdGFja0V4aXN0cyh7XG4gICAgRW5hYmxlVGVybWluYXRpb25Qcm90ZWN0aW9uOiB0cnVlLFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IGRlcGxveVN0YWNrKHtcbiAgICAuLi5zdGFuZGFyZERlcGxveVN0YWNrQXJndW1lbnRzKCksXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLnVwZGF0ZVRlcm1pbmF0aW9uUHJvdGVjdGlvbikudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgIEVuYWJsZVRlcm1pbmF0aW9uUHJvdGVjdGlvbjogZmFsc2UsXG4gIH0pKTtcbn0pO1xuXG5kZXNjcmliZSgnZGlzYWJsZSByb2xsYmFjaycsICgpID0+IHtcbiAgdGVzdCgnYnkgZGVmYXVsdCwgd2UgZG8gbm90IGRpc2FibGUgcm9sbGJhY2sgKGFuZCBhbHNvIGRvIG5vdCBwYXNzIHRoZSBmbGFnKScsIGFzeW5jICgpID0+IHtcbiAgICAvLyBXSEVOXG4gICAgYXdhaXQgZGVwbG95U3RhY2soe1xuICAgICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICAgIH0pO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChjZm5Nb2Nrcy5leGVjdXRlQ2hhbmdlU2V0KS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gICAgZXhwZWN0KGNmbk1vY2tzLmV4ZWN1dGVDaGFuZ2VTZXQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICBEaXNhYmxlUm9sbGJhY2s6IGV4cGVjdC5hbnl0aGluZygpLFxuICAgIH0pKTtcbiAgfSk7XG5cbiAgdGVzdCgncm9sbGJhY2sgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgcm9sbGJhY2s6IGZhbHNlJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIFdIRU5cbiAgICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgICAuLi5zdGFuZGFyZERlcGxveVN0YWNrQXJndW1lbnRzKCksXG4gICAgICByb2xsYmFjazogZmFsc2UsXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KGNmbk1vY2tzLmV4ZWN1dGVDaGFuZ2VTZXQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgIERpc2FibGVSb2xsYmFjazogdHJ1ZSxcbiAgICB9KSk7XG4gIH0pO1xuXG59KTtcblxuLyoqXG4gKiBTZXQgdXAgdGhlIG1vY2tzIHNvIHRoYXQgaXQgbG9va3MgbGlrZSB0aGUgc3RhY2sgZXhpc3RzIHRvIHN0YXJ0IHdpdGhcbiAqXG4gKiBUaGUgbGFzdCBlbGVtZW50IG9mIHRoaXMgYXJyYXkgd2lsbCBiZSBjb250aW51b3VzbHkgcmVwZWF0ZWQuXG4gKi9cbmZ1bmN0aW9uIGdpdmVuU3RhY2tFeGlzdHMoLi4ub3ZlcnJpZGVzOiBBcnJheTxQYXJ0aWFsPEFXUy5DbG91ZEZvcm1hdGlvbi5TdGFjaz4+KSB7XG4gIGNmbk1vY2tzLmRlc2NyaWJlU3RhY2tzIS5tb2NrUmVzZXQoKTtcblxuICBpZiAob3ZlcnJpZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIG92ZXJyaWRlcyA9IFt7fV07XG4gIH1cblxuICBjb25zdCBiYXNlUmVzcG9uc2UgPSB7XG4gICAgU3RhY2tOYW1lOiAnbW9jay1zdGFjay1uYW1lJyxcbiAgICBTdGFja0lkOiAnbW9jay1zdGFjay1pZCcsXG4gICAgQ3JlYXRpb25UaW1lOiBuZXcgRGF0ZSgpLFxuICAgIFN0YWNrU3RhdHVzOiAnQ1JFQVRFX0NPTVBMRVRFJyxcbiAgICBFbmFibGVUZXJtaW5hdGlvblByb3RlY3Rpb246IGZhbHNlLFxuICB9O1xuXG4gIGZvciAoY29uc3Qgb3ZlcnJpZGUgb2Ygb3ZlcnJpZGVzLnNsaWNlKDAsIG92ZXJyaWRlcy5sZW5ndGggLSAxKSkge1xuICAgIGNmbk1vY2tzLmRlc2NyaWJlU3RhY2tzIS5tb2NrSW1wbGVtZW50YXRpb25PbmNlKCgpID0+ICh7XG4gICAgICBTdGFja3M6IFt7IC4uLmJhc2VSZXNwb25zZSwgLi4ub3ZlcnJpZGUgfV0sXG4gICAgfSkpO1xuICB9XG4gIGNmbk1vY2tzLmRlc2NyaWJlU3RhY2tzIS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gKHtcbiAgICBTdGFja3M6IFt7IC4uLmJhc2VSZXNwb25zZSwgLi4ub3ZlcnJpZGVzW292ZXJyaWRlcy5sZW5ndGggLSAxXSB9XSxcbiAgfSkpO1xufVxuXG5mdW5jdGlvbiBnaXZlblRlbXBsYXRlSXModGVtcGxhdGU6IGFueSkge1xuICBjZm5Nb2Nrcy5nZXRUZW1wbGF0ZSEubW9ja1Jlc2V0KCk7XG4gIGNmbk1vY2tzLmdldFRlbXBsYXRlIS5tb2NrUmV0dXJuVmFsdWUoe1xuICAgIFRlbXBsYXRlQm9keTogSlNPTi5zdHJpbmdpZnkodGVtcGxhdGUpLFxuICB9KTtcbn1cbiJdfQ==
675
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LXN0YWNrLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkZXBsb3ktc3RhY2sudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHVDQUE2RTtBQUM3RSwyRUFBeUU7QUFDekUsK0NBQTBDO0FBQzFDLGtDQUEyRDtBQUMzRCwrQ0FBd0g7QUFFeEgsSUFBSSxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0FBRS9DLE1BQU0sVUFBVSxHQUFHLGdCQUFTLENBQUM7SUFDM0IsU0FBUyxFQUFFLGVBQWU7Q0FDM0IsQ0FBQyxDQUFDO0FBRUgsTUFBTSwwQkFBMEIsR0FBRyxnQkFBUyxDQUFDO0lBQzNDLFNBQVMsRUFBRSxnQkFBZ0I7SUFDM0IsUUFBUSxFQUFFO1FBQ1IsVUFBVSxFQUFFO1lBQ1YsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUM1QixVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUU7WUFDckQsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtTQUNuQztLQUNGO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxpQ0FBaUMsR0FBRyxnQkFBUyxDQUFDO0lBQ2xELFNBQVMsRUFBRSx3QkFBd0I7SUFDbkMsUUFBUSxFQUFFLDRCQUFxQjtJQUMvQixxQkFBcUIsRUFBRSxJQUFJO0NBQzVCLENBQUMsQ0FBQztBQUVILElBQUksR0FBWSxDQUFDO0FBQ2pCLElBQUksV0FBNEIsQ0FBQztBQUNqQyxJQUFJLFFBQStELENBQUM7QUFDcEUsSUFBSSxVQUE0QixDQUFDO0FBQ2pDLElBQUksVUFBNEIsQ0FBQztBQUVqQyxVQUFVLENBQUMsR0FBRyxFQUFFO0lBQ2QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3JCLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENB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Q0FBQyxRQUFhO0lBQ3BDLFFBQVEsQ0FBQyxXQUFZLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbEMsUUFBUSxDQUFDLFdBQVksQ0FBQyxlQUFlLENBQUM7UUFDcEMsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0tBQ3ZDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXBsb3lTdGFjaywgRGVwbG95U3RhY2tPcHRpb25zLCBUb29sa2l0SW5mbyB9IGZyb20gJy4uLy4uL2xpYi9hcGknO1xuaW1wb3J0IHsgdHJ5SG90c3dhcERlcGxveW1lbnQgfSBmcm9tICcuLi8uLi9saWIvYXBpL2hvdHN3YXAtZGVwbG95bWVudHMnO1xuaW1wb3J0IHsgc2V0Q0kgfSBmcm9tICcuLi8uLi9saWIvbG9nZ2luZyc7XG5pbXBvcnQgeyBERUZBVUxUX0ZBS0VfVEVNUExBVEUsIHRlc3RTdGFjayB9IGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0IHsgTW9ja2VkT2JqZWN0LCBtb2NrUmVzb2x2ZWRFbnZpcm9ubWVudCwgTW9ja1NkaywgTW9ja1Nka1Byb3ZpZGVyLCBTeW5jSGFuZGxlclN1YnNldE9mIH0gZnJvbSAnLi4vdXRpbC9tb2NrLXNkayc7XG5cbmplc3QubW9jaygnLi4vLi4vbGliL2FwaS9ob3Rzd2FwLWRlcGxveW1lbnRzJyk7XG5cbmNvbnN0IEZBS0VfU1RBQ0sgPSB0ZXN0U3RhY2soe1xuICBzdGFja05hbWU6ICd3aXRob3V0ZXJyb3JzJyxcbn0pO1xuXG5jb25zdCBGQUtFX1NUQUNLX1dJVEhfUEFSQU1FVEVSUyA9IHRlc3RTdGFjayh7XG4gIHN0YWNrTmFtZTogJ3dpdGhwYXJhbWV0ZXJzJyxcbiAgdGVtcGxhdGU6IHtcbiAgICBQYXJhbWV0ZXJzOiB7XG4gICAgICBIYXNWYWx1ZTogeyBUeXBlOiAnU3RyaW5nJyB9LFxuICAgICAgSGFzRGVmYXVsdDogeyBUeXBlOiAnU3RyaW5nJywgRGVmYXVsdDogJ1RoZURlZmF1bHQnIH0sXG4gICAgICBPdGhlclBhcmFtZXRlcjogeyBUeXBlOiAnU3RyaW5nJyB9LFxuICAgIH0sXG4gIH0sXG59KTtcblxuY29uc3QgRkFLRV9TVEFDS19URVJNSU5BVElPTl9QUk9URUNUSU9OID0gdGVzdFN0YWNrKHtcbiAgc3RhY2tOYW1lOiAndGVybWluYXRpb24tcHJvdGVjdGlvbicsXG4gIHRlbXBsYXRlOiBERUZBVUxUX0ZBS0VfVEVNUExBVEUsXG4gIHRlcm1pbmF0aW9uUHJvdGVjdGlvbjogdHJ1ZSxcbn0pO1xuXG5sZXQgc2RrOiBNb2NrU2RrO1xubGV0IHNka1Byb3ZpZGVyOiBNb2NrU2RrUHJvdmlkZXI7XG5sZXQgY2ZuTW9ja3M6IE1vY2tlZE9iamVjdDxTeW5jSGFuZGxlclN1YnNldE9mPEFXUy5DbG91ZEZvcm1hdGlvbj4+O1xubGV0IHN0ZGVyck1vY2s6IGplc3QuU3B5SW5zdGFuY2U7XG5sZXQgc3Rkb3V0TW9jazogamVzdC5TcHlJbnN0YW5jZTtcblxuYmVmb3JlRWFjaCgoKSA9PiB7XG4gIGplc3QucmVzZXRBbGxNb2NrcygpO1xuICBzdGRlcnJNb2NrID0gamVzdC5zcHlPbihwcm9jZXNzLnN0ZGVyciwgJ3dyaXRlJykubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHsgcmV0dXJuIHRydWU7IH0pO1xuICBzdGRvdXRNb2NrID0gamVzdC5zcHlPbihwcm9jZXNzLnN0ZG91dCwgJ3dyaXRlJykubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHsgcmV0dXJuIHRydWU7IH0pO1xuXG4gIHNka1Byb3ZpZGVyID0gbmV3IE1vY2tTZGtQcm92aWRlcigpO1xuICBzZGsgPSBuZXcgTW9ja1NkaygpO1xuXG4gIGNmbk1vY2tzID0ge1xuICAgIGRlc2NyaWJlU3RhY2tFdmVudHM6IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUoe30pLFxuICAgIGRlc2NyaWJlU3RhY2tzOiBqZXN0LmZuKClcbiAgICAgIC8vIEZpcnN0IGNhbGwsIG5vIHN0YWNrcyBleGlzdFxuICAgICAgLm1vY2tJbXBsZW1lbnRhdGlvbk9uY2UoKCkgPT4gKHsgU3RhY2tzOiBbXSB9KSlcbiAgICAgIC8vIFNlY29uZCBjYWxsLCBzdGFjayBoYXMgYmVlbiBjcmVhdGVkXG4gICAgICAubW9ja0ltcGxlbWVudGF0aW9uT25jZSgoKSA9PiAoe1xuICAgICAgICBTdGFja3M6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBTdGFja1N0YXR1czogJ0NSRUFURV9DT01QTEVURScsXG4gICAgICAgICAgICBTdGFja1N0YXR1c1JlYXNvbjogJ0l0IGlzIG1hZ2ljJyxcbiAgICAgICAgICAgIEVuYWJsZVRlcm1pbmF0aW9uUHJvdGVjdGlvbjogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pKSxcbiAgICBjcmVhdGVDaGFuZ2VTZXQ6IGplc3QuZm4oKF9vKSA9PiAoe30pKSxcbiAgICBkZWxldGVDaGFuZ2VTZXQ6IGplc3QuZm4oKF9vKSA9PiAoe30pKSxcbiAgICBkZXNjcmliZUNoYW5nZVNldDogamVzdC5mbigoX28pID0+ICh7XG4gICAgICBTdGF0dXM6ICdDUkVBVEVfQ09NUExFVEUnLFxuICAgICAgQ2hhbmdlczogW10sXG4gICAgfSkpLFxuICAgIGV4ZWN1dGVDaGFuZ2VTZXQ6IGplc3QuZm4oKF9vKSA9PiAoe30pKSxcbiAgICBkZWxldGVTdGFjazogamVzdC5mbigoX28pID0+ICh7fSkpLFxuICAgIGdldFRlbXBsYXRlOiBqZXN0LmZuKChfbykgPT4gKHsgVGVtcGxhdGVCb2R5OiBKU09OLnN0cmluZ2lmeShERUZBVUxUX0ZBS0VfVEVNUExBVEUpIH0pKSxcbiAgICB1cGRhdGVUZXJtaW5hdGlvblByb3RlY3Rpb246IGplc3QuZm4oKF9vKSA9PiAoeyBTdGFja0lkOiAnc3RhY2staWQnIH0pKSxcbiAgfTtcbiAgc2RrLnN0dWJDbG91ZEZvcm1hdGlvbihjZm5Nb2NrcyBhcyBhbnkpO1xuICBzZGsuc3R1YkdldEVuZHBvaW50U3VmZml4KCgpID0+ICdhbWF6b25hd3MuY29tJyk7XG59KTtcblxuZnVuY3Rpb24gc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpOiBEZXBsb3lTdGFja09wdGlvbnMge1xuICByZXR1cm4ge1xuICAgIHN0YWNrOiBGQUtFX1NUQUNLLFxuICAgIHNkayxcbiAgICBzZGtQcm92aWRlcixcbiAgICByZXNvbHZlZEVudmlyb25tZW50OiBtb2NrUmVzb2x2ZWRFbnZpcm9ubWVudCgpLFxuICAgIHRvb2xraXRJbmZvOiBUb29sa2l0SW5mby5ib290c3RyYXBsZXNzRGVwbG95bWVudHNPbmx5KHNkayksXG4gIH07XG59XG5cbnRlc3QoXCJjYWxscyB0cnlIb3Rzd2FwRGVwbG95bWVudCgpIGlmICdob3Rzd2FwJyBpcyB0cnVlXCIsIGFzeW5jICgpID0+IHtcbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICAgIGhvdHN3YXA6IHRydWUsXG4gICAgZXh0cmFVc2VyQWdlbnQ6ICdleHRyYS11c2VyLWFnZW50JyxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QodHJ5SG90c3dhcERlcGxveW1lbnQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgLy8gY2hlY2sgdGhhdCB0aGUgZXh0cmEgVXNlci1BZ2VudCBpcyBob25vcmVkXG4gIGV4cGVjdChzZGsuYXBwZW5kQ3VzdG9tVXNlckFnZW50KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnZXh0cmEtdXNlci1hZ2VudCcpO1xuICAvLyBjaGVjayB0aGF0IHRoZSBmYWxsYmFjayBoYXMgYmVlbiBjYWxsZWQgaWYgaG90c3dhcHBpbmcgZmFpbGVkXG4gIGV4cGVjdChzZGsuYXBwZW5kQ3VzdG9tVXNlckFnZW50KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnY2RrLWhvdHN3YXAvZmFsbGJhY2snKTtcbn0pO1xuXG50ZXN0KFwiZG9lcyBub3QgY2FsbCB0cnlIb3Rzd2FwRGVwbG95bWVudCgpIGlmICdob3Rzd2FwJyBpcyBmYWxzZVwiLCBhc3luYyAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgICBob3Rzd2FwOiBmYWxzZSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QodHJ5SG90c3dhcERlcGxveW1lbnQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG59KTtcblxudGVzdChcInJvbGxiYWNrIHN0aWxsIGRlZmF1bHRzIHRvIGVuYWJsZWQgZXZlbiBpZiAnaG90c3dhcCcgaXMgZW5hYmxlZFwiLCBhc3luYyAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgICBob3Rzd2FwOiB0cnVlLFxuICAgIHJvbGxiYWNrOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLmV4ZWN1dGVDaGFuZ2VTZXQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgRGlzYWJsZVJvbGxiYWNrOiB0cnVlLFxuICB9KSk7XG59KTtcblxudGVzdChcInJvbGxiYWNrIGRlZmF1bHRzIHRvIGVuYWJsZWQgaWYgJ2hvdHN3YXAnIGlzIGZhbHNlXCIsIGFzeW5jICgpID0+IHtcbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICAgIGhvdHN3YXA6IGZhbHNlLFxuICAgIHJvbGxiYWNrOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLmV4ZWN1dGVDaGFuZ2VTZXQpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgZXhwZWN0KGNmbk1vY2tzLmV4ZWN1dGVDaGFuZ2VTZXQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgRGlzYWJsZVJvbGxiYWNrOiBleHBlY3QuYW55dGhpbmcoKSxcbiAgfSkpO1xufSk7XG5cbnRlc3QoJ2RvIGRlcGxveSBleGVjdXRhYmxlIGNoYW5nZSBzZXQgd2l0aCAwIGNoYW5nZXMnLCBhc3luYyAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgY29uc3QgcmV0ID0gYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QocmV0Lm5vT3ApLnRvQmVGYWxzeSgpO1xuICBleHBlY3QoY2ZuTW9ja3MuZXhlY3V0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZCgpO1xufSk7XG5cbnRlc3QoJ2NvcnJlY3RseSBwYXNzZXMgQ0ZOIHBhcmFtZXRlcnMsIGlnbm9yaW5nIG9uZXMgd2l0aCBlbXB0eSB2YWx1ZXMnLCBhc3luYyAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBBOiAnQS12YWx1ZScsXG4gICAgICBCOiAnQj12YWx1ZScsXG4gICAgICBDOiB1bmRlZmluZWQsXG4gICAgICBEOiAnJyxcbiAgICB9LFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChjZm5Nb2Nrcy5jcmVhdGVDaGFuZ2VTZXQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICBQYXJhbWV0ZXJzOiBbXG4gICAgICB7IFBhcmFtZXRlcktleTogJ0EnLCBQYXJhbWV0ZXJWYWx1ZTogJ0EtdmFsdWUnIH0sXG4gICAgICB7IFBhcmFtZXRlcktleTogJ0InLCBQYXJhbWV0ZXJWYWx1ZTogJ0I9dmFsdWUnIH0sXG4gICAgXSxcbiAgfSkpO1xufSk7XG5cbnRlc3QoJ3JldXNlIHByZXZpb3VzIHBhcmFtZXRlcnMgaWYgcmVxdWVzdGVkJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBnaXZlblN0YWNrRXhpc3RzKHtcbiAgICBQYXJhbWV0ZXJzOiBbXG4gICAgICB7IFBhcmFtZXRlcktleTogJ0hhc1ZhbHVlJywgUGFyYW1ldGVyVmFsdWU6ICdUaGVWYWx1ZScgfSxcbiAgICAgIHsgUGFyYW1ldGVyS2V5OiAnSGFzRGVmYXVsdCcsIFBhcmFtZXRlclZhbHVlOiAnVGhlT2xkVmFsdWUnIH0sXG4gICAgXSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICAgIHN0YWNrOiBGQUtFX1NUQUNLX1dJVEhfUEFSQU1FVEVSUyxcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBPdGhlclBhcmFtZXRlcjogJ1NvbWVWYWx1ZScsXG4gICAgfSxcbiAgICB1c2VQcmV2aW91c1BhcmFtZXRlcnM6IHRydWUsXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLmNyZWF0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgIFBhcmFtZXRlcnM6IFtcbiAgICAgIHsgUGFyYW1ldGVyS2V5OiAnSGFzVmFsdWUnLCBVc2VQcmV2aW91c1ZhbHVlOiB0cnVlIH0sXG4gICAgICB7IFBhcmFtZXRlcktleTogJ0hhc0RlZmF1bHQnLCBVc2VQcmV2aW91c1ZhbHVlOiB0cnVlIH0sXG4gICAgICB7IFBhcmFtZXRlcktleTogJ090aGVyUGFyYW1ldGVyJywgUGFyYW1ldGVyVmFsdWU6ICdTb21lVmFsdWUnIH0sXG4gICAgXSxcbiAgfSkpO1xufSk7XG5cbmRlc2NyaWJlKCdjaT10cnVlJywgKCkgPT4ge1xuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBzZXRDSSh0cnVlKTtcbiAgfSk7XG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgc2V0Q0koZmFsc2UpO1xuICB9KTtcbiAgdGVzdCgnb3V0cHV0IHdyaXR0ZW4gdG8gc3Rkb3V0JywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG5cbiAgICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgICAuLi5zdGFuZGFyZERlcGxveVN0YWNrQXJndW1lbnRzKCksXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KHN0ZGVyck1vY2subW9jay5jYWxscykudG9FcXVhbChbXSk7XG4gICAgZXhwZWN0KHN0ZG91dE1vY2subW9jay5jYWxscykubm90LnRvRXF1YWwoW10pO1xuICB9KTtcbn0pO1xuXG50ZXN0KCdkbyBub3QgcmV1c2UgcHJldmlvdXMgcGFyYW1ldGVycyBpZiBub3QgcmVxdWVzdGVkJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBnaXZlblN0YWNrRXhpc3RzKHtcbiAgICBQYXJhbWV0ZXJzOiBbXG4gICAgICB7IFBhcmFtZXRlcktleTogJ0hhc1ZhbHVlJywgUGFyYW1ldGVyVmFsdWU6ICdUaGVWYWx1ZScgfSxcbiAgICAgIHsgUGFyYW1ldGVyS2V5OiAnSGFzRGVmYXVsdCcsIFBhcmFtZXRlclZhbHVlOiAnVGhlT2xkVmFsdWUnIH0sXG4gICAgXSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICAgIHN0YWNrOiBGQUtFX1NUQUNLX1dJVEhfUEFSQU1FVEVSUyxcbiAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICBIYXNWYWx1ZTogJ1NvbWVWYWx1ZScsXG4gICAgICBPdGhlclBhcmFtZXRlcjogJ1NvbWVWYWx1ZScsXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoY2ZuTW9ja3MuY3JlYXRlQ2hhbmdlU2V0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgUGFyYW1ldGVyczogW1xuICAgICAgeyBQYXJhbWV0ZXJLZXk6ICdIYXNWYWx1ZScsIFBhcmFtZXRlclZhbHVlOiAnU29tZVZhbHVlJyB9LFxuICAgICAgeyBQYXJhbWV0ZXJLZXk6ICdPdGhlclBhcmFtZXRlcicsIFBhcmFtZXRlclZhbHVlOiAnU29tZVZhbHVlJyB9LFxuICAgIF0sXG4gIH0pKTtcbn0pO1xuXG50ZXN0KCd0aHJvdyBleGNlcHRpb24gaWYgbm90IGVub3VnaCBwYXJhbWV0ZXJzIHN1cHBsaWVkJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBnaXZlblN0YWNrRXhpc3RzKHtcbiAgICBQYXJhbWV0ZXJzOiBbXG4gICAgICB7IFBhcmFtZXRlcktleTogJ0hhc1ZhbHVlJywgUGFyYW1ldGVyVmFsdWU6ICdUaGVWYWx1ZScgfSxcbiAgICAgIHsgUGFyYW1ldGVyS2V5OiAnSGFzRGVmYXVsdCcsIFBhcmFtZXRlclZhbHVlOiAnVGhlT2xkVmFsdWUnIH0sXG4gICAgXSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBleHBlY3QoZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgICBzdGFjazogRkFLRV9TVEFDS19XSVRIX1BBUkFNRVRFUlMsXG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgT3RoZXJQYXJhbWV0ZXI6ICdTb21lVmFsdWUnLFxuICAgIH0sXG4gIH0pKS5yZWplY3RzLnRvVGhyb3coL0Nsb3VkRm9ybWF0aW9uIFBhcmFtZXRlcnMgYXJlIG1pc3NpbmcgYSB2YWx1ZS8pO1xufSk7XG5cbnRlc3QoJ2RlcGxveSBpcyBza2lwcGVkIGlmIHRlbXBsYXRlIGRpZCBub3QgY2hhbmdlJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBnaXZlblN0YWNrRXhpc3RzKCk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChjZm5Nb2Nrcy5leGVjdXRlQ2hhbmdlU2V0KS5ub3QudG9CZUNhbGxlZCgpO1xufSk7XG5cbnRlc3QoJ2RlcGxveSBpcyBza2lwcGVkIGlmIHBhcmFtZXRlcnMgYXJlIHRoZSBzYW1lJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBnaXZlblRlbXBsYXRlSXMoRkFLRV9TVEFDS19XSVRIX1BBUkFNRVRFUlMudGVtcGxhdGUpO1xuICBnaXZlblN0YWNrRXhpc3RzKHtcbiAgICBQYXJhbWV0ZXJzOiBbXG4gICAgICB7IFBhcmFtZXRlcktleTogJ0hhc1ZhbHVlJywgUGFyYW1ldGVyVmFsdWU6ICdIYXNWYWx1ZScgfSxcbiAgICAgIHsgUGFyYW1ldGVyS2V5OiAnSGFzRGVmYXVsdCcsIFBhcmFtZXRlclZhbHVlOiAnSGFzRGVmYXVsdCcgfSxcbiAgICAgIHsgUGFyYW1ldGVyS2V5OiAnT3RoZXJQYXJhbWV0ZXInLCBQYXJhbWV0ZXJWYWx1ZTogJ090aGVyUGFyYW1ldGVyJyB9LFxuICAgIF0sXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgICBzdGFjazogRkFLRV9TVEFDS19XSVRIX1BBUkFNRVRFUlMsXG4gICAgcGFyYW1ldGVyczoge30sXG4gICAgdXNlUHJldmlvdXNQYXJhbWV0ZXJzOiB0cnVlLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChjZm5Nb2Nrcy5jcmVhdGVDaGFuZ2VTZXQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG59KTtcblxudGVzdCgnZGVwbG95IGlzIG5vdCBza2lwcGVkIGlmIHBhcmFtZXRlcnMgYXJlIGRpZmZlcmVudCcsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgZ2l2ZW5UZW1wbGF0ZUlzKEZBS0VfU1RBQ0tfV0lUSF9QQVJBTUVURVJTLnRlbXBsYXRlKTtcbiAgZ2l2ZW5TdGFja0V4aXN0cyh7XG4gICAgUGFyYW1ldGVyczogW1xuICAgICAgeyBQYXJhbWV0ZXJLZXk6ICdIYXNWYWx1ZScsIFBhcmFtZXRlclZhbHVlOiAnSGFzVmFsdWUnIH0sXG4gICAgICB7IFBhcmFtZXRlcktleTogJ0hhc0RlZmF1bHQnLCBQYXJhbWV0ZXJWYWx1ZTogJ0hhc0RlZmF1bHQnIH0sXG4gICAgICB7IFBhcmFtZXRlcktleTogJ090aGVyUGFyYW1ldGVyJywgUGFyYW1ldGVyVmFsdWU6ICdPdGhlclBhcmFtZXRlcicgfSxcbiAgICBdLFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IGRlcGxveVN0YWNrKHtcbiAgICAuLi5zdGFuZGFyZERlcGxveVN0YWNrQXJndW1lbnRzKCksXG4gICAgc3RhY2s6IEZBS0VfU1RBQ0tfV0lUSF9QQVJBTUVURVJTLFxuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIEhhc1ZhbHVlOiAnTmV3VmFsdWUnLFxuICAgIH0sXG4gICAgdXNlUHJldmlvdXNQYXJhbWV0ZXJzOiB0cnVlLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChjZm5Nb2Nrcy5jcmVhdGVDaGFuZ2VTZXQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICBQYXJhbWV0ZXJzOiBbXG4gICAgICB7IFBhcmFtZXRlcktleTogJ0hhc1ZhbHVlJywgUGFyYW1ldGVyVmFsdWU6ICdOZXdWYWx1ZScgfSxcbiAgICAgIHsgUGFyYW1ldGVyS2V5OiAnSGFzRGVmYXVsdCcsIFVzZVByZXZpb3VzVmFsdWU6IHRydWUgfSxcbiAgICAgIHsgUGFyYW1ldGVyS2V5OiAnT3RoZXJQYXJhbWV0ZXInLCBVc2VQcmV2aW91c1ZhbHVlOiB0cnVlIH0sXG4gICAgXSxcbiAgfSkpO1xufSk7XG5cbnRlc3QoJ2lmIGV4aXN0aW5nIHN0YWNrIGZhaWxlZCB0byBjcmVhdGUsIGl0IGlzIGRlbGV0ZWQgYW5kIHJlY3JlYXRlZCcsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgZ2l2ZW5TdGFja0V4aXN0cyhcbiAgICB7IFN0YWNrU3RhdHVzOiAnUk9MTEJBQ0tfQ09NUExFVEUnIH0sIC8vIFRoaXMgaXMgZm9yIHRoZSBpbml0aWFsIGNoZWNrXG4gICAgeyBTdGFja1N0YXR1czogJ0RFTEVURV9DT01QTEVURScgfSwgLy8gUG9sbCB0aGUgc3VjY2Vzc2Z1bCBkZWxldGlvblxuICAgIHsgU3RhY2tTdGF0dXM6ICdDUkVBVEVfQ09NUExFVEUnIH0sIC8vIFBvbGwgdGhlIHJlY3JlYXRpb25cbiAgKTtcbiAgZ2l2ZW5UZW1wbGF0ZUlzKHtcbiAgICBEaWZmZXJlbnRUaGFuOiAnVGhlRGVmYXVsdCcsXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoY2ZuTW9ja3MuZGVsZXRlU3RhY2spLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgZXhwZWN0KGNmbk1vY2tzLmNyZWF0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgIENoYW5nZVNldFR5cGU6ICdDUkVBVEUnLFxuICB9KSk7XG59KTtcblxudGVzdCgnaWYgZXhpc3Rpbmcgc3RhY2sgZmFpbGVkIHRvIGNyZWF0ZSwgaXQgaXMgZGVsZXRlZCBhbmQgcmVjcmVhdGVkIGV2ZW4gaWYgdGhlIHRlbXBsYXRlIGRpZCBub3QgY2hhbmdlJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBnaXZlblN0YWNrRXhpc3RzKFxuICAgIHsgU3RhY2tTdGF0dXM6ICdST0xMQkFDS19DT01QTEVURScgfSwgLy8gVGhpcyBpcyBmb3IgdGhlIGluaXRpYWwgY2hlY2tcbiAgICB7IFN0YWNrU3RhdHVzOiAnREVMRVRFX0NPTVBMRVRFJyB9LCAvLyBQb2xsIHRoZSBzdWNjZXNzZnVsIGRlbGV0aW9uXG4gICAgeyBTdGFja1N0YXR1czogJ0NSRUFURV9DT01QTEVURScgfSwgLy8gUG9sbCB0aGUgcmVjcmVhdGlvblxuICApO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoY2ZuTW9ja3MuZGVsZXRlU3RhY2spLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgZXhwZWN0KGNmbk1vY2tzLmNyZWF0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgIENoYW5nZVNldFR5cGU6ICdDUkVBVEUnLFxuICB9KSk7XG59KTtcblxudGVzdCgnZGVwbG95IG5vdCBza2lwcGVkIGlmIHRlbXBsYXRlIGRpZCBub3QgY2hhbmdlIGFuZCAtLWZvcmNlIGlzIGFwcGxpZWQnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGdpdmVuU3RhY2tFeGlzdHMoKTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IGRlcGxveVN0YWNrKHtcbiAgICAuLi5zdGFuZGFyZERlcGxveVN0YWNrQXJndW1lbnRzKCksXG4gICAgZm9yY2U6IHRydWUsXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLmV4ZWN1dGVDaGFuZ2VTZXQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbn0pO1xuXG50ZXN0KCdkZXBsb3kgaXMgc2tpcHBlZCBpZiB0ZW1wbGF0ZSBhbmQgdGFncyBkaWQgbm90IGNoYW5nZScsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgZ2l2ZW5TdGFja0V4aXN0cyh7XG4gICAgVGFnczogW1xuICAgICAgeyBLZXk6ICdLZXkxJywgVmFsdWU6ICdWYWx1ZTEnIH0sXG4gICAgICB7IEtleTogJ0tleTInLCBWYWx1ZTogJ1ZhbHVlMicgfSxcbiAgICBdLFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IGRlcGxveVN0YWNrKHtcbiAgICAuLi5zdGFuZGFyZERlcGxveVN0YWNrQXJndW1lbnRzKCksXG4gICAgdGFnczogW1xuICAgICAgeyBLZXk6ICdLZXkxJywgVmFsdWU6ICdWYWx1ZTEnIH0sXG4gICAgICB7IEtleTogJ0tleTInLCBWYWx1ZTogJ1ZhbHVlMicgfSxcbiAgICBdLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChjZm5Nb2Nrcy5jcmVhdGVDaGFuZ2VTZXQpLm5vdC50b0JlQ2FsbGVkKCk7XG4gIGV4cGVjdChjZm5Nb2Nrcy5leGVjdXRlQ2hhbmdlU2V0KS5ub3QudG9CZUNhbGxlZCgpO1xuICBleHBlY3QoY2ZuTW9ja3MuZGVzY3JpYmVTdGFja3MpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHsgU3RhY2tOYW1lOiAnd2l0aG91dGVycm9ycycgfSk7XG4gIGV4cGVjdChjZm5Nb2Nrcy5nZXRUZW1wbGF0ZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoeyBTdGFja05hbWU6ICd3aXRob3V0ZXJyb3JzJywgVGVtcGxhdGVTdGFnZTogJ09yaWdpbmFsJyB9KTtcbn0pO1xuXG50ZXN0KCdkZXBsb3kgbm90IHNraXBwZWQgaWYgdGVtcGxhdGUgZGlkIG5vdCBjaGFuZ2UgYnV0IHRhZ3MgY2hhbmdlZCcsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgZ2l2ZW5TdGFja0V4aXN0cyh7XG4gICAgVGFnczogW1xuICAgICAgeyBLZXk6ICdLZXknLCBWYWx1ZTogJ1ZhbHVlJyB9LFxuICAgIF0sXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIHN0YWNrOiBGQUtFX1NUQUNLLFxuICAgIHNkayxcbiAgICBzZGtQcm92aWRlcixcbiAgICByZXNvbHZlZEVudmlyb25tZW50OiBtb2NrUmVzb2x2ZWRFbnZpcm9ubWVudCgpLFxuICAgIHRhZ3M6IFtcbiAgICAgIHtcbiAgICAgICAgS2V5OiAnS2V5JyxcbiAgICAgICAgVmFsdWU6ICdOZXdWYWx1ZScsXG4gICAgICB9LFxuICAgIF0sXG4gICAgdG9vbGtpdEluZm86IFRvb2xraXRJbmZvLmJvb3RzdHJhcGxlc3NEZXBsb3ltZW50c09ubHkoc2RrKSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoY2ZuTW9ja3MuY3JlYXRlQ2hhbmdlU2V0KS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gIGV4cGVjdChjZm5Nb2Nrcy5leGVjdXRlQ2hhbmdlU2V0KS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gIGV4cGVjdChjZm5Nb2Nrcy5kZXNjcmliZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICBleHBlY3QoY2ZuTW9ja3MuZGVzY3JpYmVTdGFja3MpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHsgU3RhY2tOYW1lOiAnd2l0aG91dGVycm9ycycgfSk7XG4gIGV4cGVjdChjZm5Nb2Nrcy5nZXRUZW1wbGF0ZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoeyBTdGFja05hbWU6ICd3aXRob3V0ZXJyb3JzJywgVGVtcGxhdGVTdGFnZTogJ09yaWdpbmFsJyB9KTtcbn0pO1xuXG50ZXN0KCdkZXBsb3lTdGFjayByZXBvcnRzIG5vIGNoYW5nZSBpZiBkZXNjcmliZUNoYW5nZVNldCByZXR1cm5zIHNwZWNpZmljIGVycm9yJywgYXN5bmMgKCkgPT4ge1xuICBjZm5Nb2Nrcy5kZXNjcmliZUNoYW5nZVNldD8ubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+ICh7XG4gICAgU3RhdHVzOiAnRkFJTEVEJyxcbiAgICBTdGF0dXNSZWFzb246ICdObyB1cGRhdGVzIGFyZSB0byBiZSBwZXJmb3JtZWQuJyxcbiAgfSkpO1xuXG4gIC8vIFdIRU5cbiAgY29uc3QgZGVwbG95UmVzdWx0ID0gYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoZGVwbG95UmVzdWx0Lm5vT3ApLnRvRXF1YWwodHJ1ZSk7XG59KTtcblxudGVzdCgnZGVwbG95IG5vdCBza2lwcGVkIGlmIHRlbXBsYXRlIGRpZCBub3QgY2hhbmdlIGJ1dCBvbmUgdGFnIHJlbW92ZWQnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGdpdmVuU3RhY2tFeGlzdHMoe1xuICAgIFRhZ3M6IFtcbiAgICAgIHsgS2V5OiAnS2V5MScsIFZhbHVlOiAnVmFsdWUxJyB9LFxuICAgICAgeyBLZXk6ICdLZXkyJywgVmFsdWU6ICdWYWx1ZTInIH0sXG4gICAgXSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICAgIHRhZ3M6IFtcbiAgICAgIHsgS2V5OiAnS2V5MScsIFZhbHVlOiAnVmFsdWUxJyB9LFxuICAgIF0sXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLmNyZWF0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICBleHBlY3QoY2ZuTW9ja3MuZXhlY3V0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICBleHBlY3QoY2ZuTW9ja3MuZGVzY3JpYmVDaGFuZ2VTZXQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgZXhwZWN0KGNmbk1vY2tzLmRlc2NyaWJlU3RhY2tzKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7IFN0YWNrTmFtZTogJ3dpdGhvdXRlcnJvcnMnIH0pO1xuICBleHBlY3QoY2ZuTW9ja3MuZ2V0VGVtcGxhdGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHsgU3RhY2tOYW1lOiAnd2l0aG91dGVycm9ycycsIFRlbXBsYXRlU3RhZ2U6ICdPcmlnaW5hbCcgfSk7XG59KTtcblxudGVzdCgnZGVwbG95IGlzIG5vdCBza2lwcGVkIGlmIHN0YWNrIGlzIGluIGEgX0ZBSUxFRCBzdGF0ZScsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgZ2l2ZW5TdGFja0V4aXN0cyh7XG4gICAgU3RhY2tTdGF0dXM6ICdERUxFVEVfRkFJTEVEJyxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICAgIHVzZVByZXZpb3VzUGFyYW1ldGVyczogdHJ1ZSxcbiAgfSkuY2F0Y2goKCkgPT4ge30pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLmNyZWF0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZCgpO1xufSk7XG5cbnRlc3QoJ2V4aXN0aW5nIHN0YWNrIGluIFVQREFURV9ST0xMQkFDS19DT01QTEVURSBzdGF0ZSBjYW4gYmUgdXBkYXRlZCcsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgZ2l2ZW5TdGFja0V4aXN0cyhcbiAgICB7IFN0YWNrU3RhdHVzOiAnVVBEQVRFX1JPTExCQUNLX0NPTVBMRVRFJyB9LCAvLyBUaGlzIGlzIGZvciB0aGUgaW5pdGlhbCBjaGVja1xuICAgIHsgU3RhY2tTdGF0dXM6ICdVUERBVEVfQ09NUExFVEUnIH0sIC8vIFBvbGwgdGhlIHVwZGF0ZVxuICApO1xuICBnaXZlblRlbXBsYXRlSXMoeyBjaGFuZ2VkOiAxMjMgfSk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChjZm5Nb2Nrcy5kZWxldGVTdGFjaykubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgZXhwZWN0KGNmbk1vY2tzLmNyZWF0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgIENoYW5nZVNldFR5cGU6ICdVUERBVEUnLFxuICB9KSk7XG59KTtcblxudGVzdCgnZGVwbG95IG5vdCBza2lwcGVkIGlmIHRlbXBsYXRlIGNoYW5nZWQnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGdpdmVuU3RhY2tFeGlzdHMoKTtcbiAgZ2l2ZW5UZW1wbGF0ZUlzKHsgY2hhbmdlZDogMTIzIH0pO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoY2ZuTW9ja3MuZXhlY3V0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZCgpO1xufSk7XG5cbnRlc3QoJ25vdCBleGVjdXRlZCBhbmQgbm8gZXJyb3IgaWYgLS1uby1leGVjdXRlIGlzIGdpdmVuJywgYXN5bmMgKCkgPT4ge1xuICAvLyBXSEVOXG4gIGF3YWl0IGRlcGxveVN0YWNrKHtcbiAgICAuLi5zdGFuZGFyZERlcGxveVN0YWNrQXJndW1lbnRzKCksXG4gICAgZXhlY3V0ZTogZmFsc2UsXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLmV4ZWN1dGVDaGFuZ2VTZXQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG59KTtcblxudGVzdCgnZW1wdHkgY2hhbmdlIHNldCBpcyBkZWxldGVkIGlmIC0tZXhlY3V0ZSBpcyBnaXZlbicsIGFzeW5jICgpID0+IHtcbiAgY2ZuTW9ja3MuZGVzY3JpYmVDaGFuZ2VTZXQ/Lm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiAoe1xuICAgIFN0YXR1czogJ0ZBSUxFRCcsXG4gICAgU3RhdHVzUmVhc29uOiAnTm8gdXBkYXRlcyBhcmUgdG8gYmUgcGVyZm9ybWVkLicsXG4gIH0pKTtcblxuICAvLyBHSVZFTlxuICBnaXZlblN0YWNrRXhpc3RzKCk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICAgIGV4ZWN1dGU6IHRydWUsXG4gICAgZm9yY2U6IHRydWUsIC8vIE5lY2Vzc2FyeSB0byBieXBhc3MgXCJza2lwIGRlcGxveVwiXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLmNyZWF0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICBleHBlY3QoY2ZuTW9ja3MuZXhlY3V0ZUNoYW5nZVNldCkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcblxuICAvL3RoZSBmaXJzdCBkZWxldGlvbiBpcyBmb3IgYW55IGV4aXN0aW5nIGNkayBjaGFuZ2Ugc2V0cywgdGhlIHNlY29uZCBpcyBmb3IgdGhlIGRlbGV0aW5nIHRoZSBuZXcgZW1wdHkgY2hhbmdlIHNldFxuICBleHBlY3QoY2ZuTW9ja3MuZGVsZXRlQ2hhbmdlU2V0KS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMik7XG59KTtcblxudGVzdCgnZW1wdHkgY2hhbmdlIHNldCBpcyBub3QgZGVsZXRlZCBpZiAtLW5vLWV4ZWN1dGUgaXMgZ2l2ZW4nLCBhc3luYyAoKSA9PiB7XG4gIGNmbk1vY2tzLmRlc2NyaWJlQ2hhbmdlU2V0Py5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gKHtcbiAgICBTdGF0dXM6ICdGQUlMRUQnLFxuICAgIFN0YXR1c1JlYXNvbjogJ05vIHVwZGF0ZXMgYXJlIHRvIGJlIHBlcmZvcm1lZC4nLFxuICB9KSk7XG5cbiAgLy8gR0lWRU5cbiAgZ2l2ZW5TdGFja0V4aXN0cygpO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgICBleGVjdXRlOiBmYWxzZSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoY2ZuTW9ja3MuY3JlYXRlQ2hhbmdlU2V0KS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gIGV4cGVjdChjZm5Nb2Nrcy5leGVjdXRlQ2hhbmdlU2V0KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuXG4gIC8vdGhlIGZpcnN0IGRlbGV0aW9uIGlzIGZvciBhbnkgZXhpc3RpbmcgY2RrIGNoYW5nZSBzZXRzXG4gIGV4cGVjdChjZm5Nb2Nrcy5kZWxldGVDaGFuZ2VTZXQpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbn0pO1xuXG50ZXN0KCd1c2UgUzMgdXJsIGZvciBzdGFjayBkZXBsb3ltZW50IGlmIHByZXNlbnQgaW4gU3RhY2sgQXJ0aWZhY3QnLCBhc3luYyAoKSA9PiB7XG4gIC8vIFdIRU5cbiAgYXdhaXQgZGVwbG95U3RhY2soe1xuICAgIC4uLnN0YW5kYXJkRGVwbG95U3RhY2tBcmd1bWVudHMoKSxcbiAgICBzdGFjazogdGVzdFN0YWNrKHtcbiAgICAgIHN0YWNrTmFtZTogJ3dpdGhvdXRlcnJvcnMnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBzdGFja1RlbXBsYXRlQXNzZXRPYmplY3RVcmw6ICdodHRwczovL3VzZS1tZS11c2UtbWUvJyxcbiAgICAgIH0sXG4gICAgfSksXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLmNyZWF0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgIFRlbXBsYXRlVVJMOiAnaHR0cHM6Ly91c2UtbWUtdXNlLW1lLycsXG4gIH0pKTtcbiAgZXhwZWN0KGNmbk1vY2tzLmV4ZWN1dGVDaGFuZ2VTZXQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbn0pO1xuXG50ZXN0KCd1c2UgUkVTVCBBUEkgUzMgdXJsIHdpdGggc3Vic3RpdHV0ZWQgcGxhY2Vob2xkZXJzIGlmIG1hbmlmZXN0IHVybCBzdGFydHMgd2l0aCBzMzovLycsIGFzeW5jICgpID0+IHtcbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICAgIHN0YWNrOiB0ZXN0U3RhY2soe1xuICAgICAgc3RhY2tOYW1lOiAnd2l0aG91dGVycm9ycycsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHN0YWNrVGVtcGxhdGVBc3NldE9iamVjdFVybDogJ3MzOi8vdXNlLW1lLXVzZS1tZS0ke0FXUzo6QWNjb3VudElkfS9vYmplY3QnLFxuICAgICAgfSxcbiAgICB9KSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoY2ZuTW9ja3MuY3JlYXRlQ2hhbmdlU2V0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgVGVtcGxhdGVVUkw6ICdodHRwczovL3MzLmJlcm11ZGEtdHJpYW5nbGUtMTMzNy5hbWF6b25hd3MuY29tL3VzZS1tZS11c2UtbWUtMTIzNDU2Nzg5L29iamVjdCcsXG4gIH0pKTtcbiAgZXhwZWN0KGNmbk1vY2tzLmV4ZWN1dGVDaGFuZ2VTZXQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbn0pO1xuXG50ZXN0KCdjaGFuZ2VzZXQgaXMgY3JlYXRlZCB3aGVuIHN0YWNrIGV4aXN0cyBpbiBSRVZJRVdfSU5fUFJPR1JFU1Mgc3RhdHVzJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBnaXZlblN0YWNrRXhpc3RzKHtcbiAgICBTdGFja1N0YXR1czogJ1JFVklFV19JTl9QUk9HUkVTUycsXG4gICAgVGFnczogW1xuICAgICAgeyBLZXk6ICdLZXkxJywgVmFsdWU6ICdWYWx1ZTEnIH0sXG4gICAgICB7IEtleTogJ0tleTInLCBWYWx1ZTogJ1ZhbHVlMicgfSxcbiAgICBdLFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IGRlcGxveVN0YWNrKHtcbiAgICAuLi5zdGFuZGFyZERlcGxveVN0YWNrQXJndW1lbnRzKCksXG4gICAgZXhlY3V0ZTogZmFsc2UsXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLmNyZWF0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgQ2hhbmdlU2V0VHlwZTogJ0NSRUFURScsXG4gICAgICBTdGFja05hbWU6ICd3aXRob3V0ZXJyb3JzJyxcbiAgICB9KSxcbiAgKTtcbiAgZXhwZWN0KGNmbk1vY2tzLmV4ZWN1dGVDaGFuZ2VTZXQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG59KTtcblxudGVzdCgnY2hhbmdlc2V0IGlzIHVwZGF0ZWQgd2hlbiBzdGFjayBleGlzdHMgaW4gQ1JFQVRFX0NPTVBMRVRFIHN0YXR1cycsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgZ2l2ZW5TdGFja0V4aXN0cyh7XG4gICAgVGFnczogW1xuICAgICAgeyBLZXk6ICdLZXkxJywgVmFsdWU6ICdWYWx1ZTEnIH0sXG4gICAgICB7IEtleTogJ0tleTInLCBWYWx1ZTogJ1ZhbHVlMicgfSxcbiAgICBdLFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IGRlcGxveVN0YWNrKHtcbiAgICAuLi5zdGFuZGFyZERlcGxveVN0YWNrQXJndW1lbnRzKCksXG4gICAgZXhlY3V0ZTogZmFsc2UsXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLmNyZWF0ZUNoYW5nZVNldCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgQ2hhbmdlU2V0VHlwZTogJ1VQREFURScsXG4gICAgICBTdGFja05hbWU6ICd3aXRob3V0ZXJyb3JzJyxcbiAgICB9KSxcbiAgKTtcbiAgZXhwZWN0KGNmbk1vY2tzLmV4ZWN1dGVDaGFuZ2VTZXQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG59KTtcblxudGVzdCgnZGVwbG95IHdpdGggdGVybWluYXRpb24gcHJvdGVjdGlvbiBlbmFibGVkJywgYXN5bmMgKCkgPT4ge1xuICAvLyBXSEVOXG4gIGF3YWl0IGRlcGxveVN0YWNrKHtcbiAgICAuLi5zdGFuZGFyZERlcGxveVN0YWNrQXJndW1lbnRzKCksXG4gICAgc3RhY2s6IEZBS0VfU1RBQ0tfVEVSTUlOQVRJT05fUFJPVEVDVElPTixcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoY2ZuTW9ja3MudXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgRW5hYmxlVGVybWluYXRpb25Qcm90ZWN0aW9uOiB0cnVlLFxuICB9KSk7XG59KTtcblxudGVzdCgndXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uIG5vdCBjYWxsZWQgd2hlbiB0ZXJtaW5hdGlvbiBwcm90ZWN0aW9uIGlzIHVuZGVmaW5lZCcsIGFzeW5jICgpID0+IHtcbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChjZm5Nb2Nrcy51cGRhdGVUZXJtaW5hdGlvblByb3RlY3Rpb24pLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG59KTtcblxudGVzdCgndXBkYXRlVGVybWluYXRpb25Qcm90ZWN0aW9uIGNhbGxlZCB3aGVuIHRlcm1pbmF0aW9uIHByb3RlY3Rpb24gaXMgdW5kZWZpbmVkIGFuZCBzdGFjayBoYXMgdGVybWluYXRpb24gcHJvdGVjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgZ2l2ZW5TdGFja0V4aXN0cyh7XG4gICAgRW5hYmxlVGVybWluYXRpb25Qcm90ZWN0aW9uOiB0cnVlLFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IGRlcGxveVN0YWNrKHtcbiAgICAuLi5zdGFuZGFyZERlcGxveVN0YWNrQXJndW1lbnRzKCksXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGNmbk1vY2tzLnVwZGF0ZVRlcm1pbmF0aW9uUHJvdGVjdGlvbikudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgIEVuYWJsZVRlcm1pbmF0aW9uUHJvdGVjdGlvbjogZmFsc2UsXG4gIH0pKTtcbn0pO1xuXG5kZXNjcmliZSgnZGlzYWJsZSByb2xsYmFjaycsICgpID0+IHtcbiAgdGVzdCgnYnkgZGVmYXVsdCwgd2UgZG8gbm90IGRpc2FibGUgcm9sbGJhY2sgKGFuZCBhbHNvIGRvIG5vdCBwYXNzIHRoZSBmbGFnKScsIGFzeW5jICgpID0+IHtcbiAgICAvLyBXSEVOXG4gICAgYXdhaXQgZGVwbG95U3RhY2soe1xuICAgICAgLi4uc3RhbmRhcmREZXBsb3lTdGFja0FyZ3VtZW50cygpLFxuICAgIH0pO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChjZm5Nb2Nrcy5leGVjdXRlQ2hhbmdlU2V0KS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gICAgZXhwZWN0KGNmbk1vY2tzLmV4ZWN1dGVDaGFuZ2VTZXQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkV2l0aChleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICBEaXNhYmxlUm9sbGJhY2s6IGV4cGVjdC5hbnl0aGluZygpLFxuICAgIH0pKTtcbiAgfSk7XG5cbiAgdGVzdCgncm9sbGJhY2sgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgcm9sbGJhY2s6IGZhbHNlJywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIFdIRU5cbiAgICBhd2FpdCBkZXBsb3lTdGFjayh7XG4gICAgICAuLi5zdGFuZGFyZERlcGxveVN0YWNrQXJndW1lbnRzKCksXG4gICAgICByb2xsYmFjazogZmFsc2UsXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KGNmbk1vY2tzLmV4ZWN1dGVDaGFuZ2VTZXQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgIERpc2FibGVSb2xsYmFjazogdHJ1ZSxcbiAgICB9KSk7XG4gIH0pO1xuXG59KTtcblxuLyoqXG4gKiBTZXQgdXAgdGhlIG1vY2tzIHNvIHRoYXQgaXQgbG9va3MgbGlrZSB0aGUgc3RhY2sgZXhpc3RzIHRvIHN0YXJ0IHdpdGhcbiAqXG4gKiBUaGUgbGFzdCBlbGVtZW50IG9mIHRoaXMgYXJyYXkgd2lsbCBiZSBjb250aW51b3VzbHkgcmVwZWF0ZWQuXG4gKi9cbmZ1bmN0aW9uIGdpdmVuU3RhY2tFeGlzdHMoLi4ub3ZlcnJpZGVzOiBBcnJheTxQYXJ0aWFsPEFXUy5DbG91ZEZvcm1hdGlvbi5TdGFjaz4+KSB7XG4gIGNmbk1vY2tzLmRlc2NyaWJlU3RhY2tzIS5tb2NrUmVzZXQoKTtcblxuICBpZiAob3ZlcnJpZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIG92ZXJyaWRlcyA9IFt7fV07XG4gIH1cblxuICBjb25zdCBiYXNlUmVzcG9uc2UgPSB7XG4gICAgU3RhY2tOYW1lOiAnbW9jay1zdGFjay1uYW1lJyxcbiAgICBTdGFja0lkOiAnbW9jay1zdGFjay1pZCcsXG4gICAgQ3JlYXRpb25UaW1lOiBuZXcgRGF0ZSgpLFxuICAgIFN0YWNrU3RhdHVzOiAnQ1JFQVRFX0NPTVBMRVRFJyxcbiAgICBFbmFibGVUZXJtaW5hdGlvblByb3RlY3Rpb246IGZhbHNlLFxuICB9O1xuXG4gIGZvciAoY29uc3Qgb3ZlcnJpZGUgb2Ygb3ZlcnJpZGVzLnNsaWNlKDAsIG92ZXJyaWRlcy5sZW5ndGggLSAxKSkge1xuICAgIGNmbk1vY2tzLmRlc2NyaWJlU3RhY2tzIS5tb2NrSW1wbGVtZW50YXRpb25PbmNlKCgpID0+ICh7XG4gICAgICBTdGFja3M6IFt7IC4uLmJhc2VSZXNwb25zZSwgLi4ub3ZlcnJpZGUgfV0sXG4gICAgfSkpO1xuICB9XG4gIGNmbk1vY2tzLmRlc2NyaWJlU3RhY2tzIS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gKHtcbiAgICBTdGFja3M6IFt7IC4uLmJhc2VSZXNwb25zZSwgLi4ub3ZlcnJpZGVzW292ZXJyaWRlcy5sZW5ndGggLSAxXSB9XSxcbiAgfSkpO1xufVxuXG5mdW5jdGlvbiBnaXZlblRlbXBsYXRlSXModGVtcGxhdGU6IGFueSkge1xuICBjZm5Nb2Nrcy5nZXRUZW1wbGF0ZSEubW9ja1Jlc2V0KCk7XG4gIGNmbk1vY2tzLmdldFRlbXBsYXRlIS5tb2NrUmV0dXJuVmFsdWUoe1xuICAgIFRlbXBsYXRlQm9keTogSlNPTi5zdHJpbmdpZnkodGVtcGxhdGUpLFxuICB9KTtcbn1cbiJdfQ==
@@ -2,55 +2,194 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const context_1 = require("../../lib/commands/context");
4
4
  const settings_1 = require("../../lib/settings");
5
- test('context list', async () => {
6
- // GIVEN
7
- const configuration = new settings_1.Configuration();
8
- configuration.context.set('foo', 'bar');
9
- expect(configuration.context.all).toEqual({
10
- foo: 'bar',
11
- });
12
- // WHEN
13
- await context_1.realHandler({
14
- configuration,
15
- args: {},
5
+ describe('context --list', () => {
6
+ test('runs', async () => {
7
+ // GIVEN
8
+ const configuration = new settings_1.Configuration();
9
+ configuration.context.set('foo', 'bar');
10
+ expect(configuration.context.all).toEqual({
11
+ foo: 'bar',
12
+ });
13
+ // WHEN
14
+ await context_1.realHandler({
15
+ configuration,
16
+ args: {},
17
+ });
16
18
  });
17
19
  });
18
- test('context reset can remove a context key', async () => {
19
- // GIVEN
20
- const configuration = new settings_1.Configuration();
21
- configuration.context.set('foo', 'bar');
22
- configuration.context.set('baz', 'quux');
23
- expect(configuration.context.all).toEqual({
24
- foo: 'bar',
25
- baz: 'quux',
26
- });
27
- // WHEN
28
- await context_1.realHandler({
29
- configuration,
30
- args: { reset: 'foo' },
31
- });
32
- // THEN
33
- expect(configuration.context.all).toEqual({
34
- baz: 'quux',
20
+ describe('context --reset', () => {
21
+ test('can remove a context key', async () => {
22
+ // GIVEN
23
+ const configuration = new settings_1.Configuration();
24
+ configuration.context.set('foo', 'bar');
25
+ configuration.context.set('baz', 'quux');
26
+ expect(configuration.context.all).toEqual({
27
+ foo: 'bar',
28
+ baz: 'quux',
29
+ });
30
+ // WHEN
31
+ await context_1.realHandler({
32
+ configuration,
33
+ args: { reset: 'foo' },
34
+ });
35
+ // THEN
36
+ expect(configuration.context.all).toEqual({
37
+ baz: 'quux',
38
+ });
35
39
  });
36
- });
37
- test('context reset can remove a context key using number', async () => {
38
- // GIVEN
39
- const configuration = new settings_1.Configuration();
40
- configuration.context.set('foo', 'bar');
41
- configuration.context.set('baz', 'quux');
42
- expect(configuration.context.all).toEqual({
43
- foo: 'bar',
44
- baz: 'quux',
45
- });
46
- // WHEN
47
- await context_1.realHandler({
48
- configuration,
49
- args: { reset: '1' },
50
- });
51
- // THEN
52
- expect(configuration.context.all).toEqual({
53
- foo: 'bar',
40
+ test('can remove a context key using number', async () => {
41
+ // GIVEN
42
+ const configuration = new settings_1.Configuration();
43
+ configuration.context.set('foo', 'bar');
44
+ configuration.context.set('baz', 'quux');
45
+ expect(configuration.context.all).toEqual({
46
+ foo: 'bar',
47
+ baz: 'quux',
48
+ });
49
+ // WHEN
50
+ await context_1.realHandler({
51
+ configuration,
52
+ args: { reset: '1' },
53
+ });
54
+ // THEN
55
+ expect(configuration.context.all).toEqual({
56
+ foo: 'bar',
57
+ });
58
+ });
59
+ test('can reset matched pattern', async () => {
60
+ // GIVEN
61
+ const configuration = new settings_1.Configuration();
62
+ configuration.context.set('foo', 'bar');
63
+ configuration.context.set('match-a', 'baz');
64
+ configuration.context.set('match-b', 'qux');
65
+ expect(configuration.context.all).toEqual({
66
+ 'foo': 'bar',
67
+ 'match-a': 'baz',
68
+ 'match-b': 'qux',
69
+ });
70
+ // WHEN
71
+ await context_1.realHandler({
72
+ configuration,
73
+ args: { reset: 'match-*' },
74
+ });
75
+ // THEN
76
+ expect(configuration.context.all).toEqual({
77
+ foo: 'bar',
78
+ });
79
+ });
80
+ test('prefers an exact match', async () => {
81
+ // GIVEN
82
+ const configuration = new settings_1.Configuration();
83
+ configuration.context.set('foo', 'bar');
84
+ configuration.context.set('fo*', 'baz');
85
+ expect(configuration.context.all).toEqual({
86
+ 'foo': 'bar',
87
+ 'fo*': 'baz',
88
+ });
89
+ // WHEN
90
+ await context_1.realHandler({
91
+ configuration,
92
+ args: { reset: 'fo*' },
93
+ });
94
+ // THEN
95
+ expect(configuration.context.all).toEqual({
96
+ foo: 'bar',
97
+ });
98
+ });
99
+ test('doesn\'t throw when at least one match is reset', async () => {
100
+ // GIVEN
101
+ const configuration = new settings_1.Configuration();
102
+ const readOnlySettings = new settings_1.Settings({
103
+ 'foo': 'bar',
104
+ 'match-a': 'baz',
105
+ }, true);
106
+ configuration.context = new settings_1.Context(readOnlySettings, new settings_1.Settings());
107
+ configuration.context.set('match-b', 'quux');
108
+ // When
109
+ await expect(context_1.realHandler({
110
+ configuration,
111
+ args: { reset: 'match-*' },
112
+ }));
113
+ // Then
114
+ expect(configuration.context.all).toEqual({
115
+ 'foo': 'bar',
116
+ 'match-a': 'baz',
117
+ });
118
+ });
119
+ test('throws when key not found', async () => {
120
+ // GIVEN
121
+ const configuration = new settings_1.Configuration();
122
+ configuration.context.set('foo', 'bar');
123
+ expect(configuration.context.all).toEqual({
124
+ foo: 'bar',
125
+ });
126
+ // THEN
127
+ await expect(context_1.realHandler({
128
+ configuration,
129
+ args: { reset: 'baz' },
130
+ })).rejects.toThrow(/No context value matching key/);
131
+ });
132
+ test('Doesn\'t throw when key not found and --force is set', async () => {
133
+ // GIVEN
134
+ const configuration = new settings_1.Configuration();
135
+ configuration.context.set('foo', 'bar');
136
+ expect(configuration.context.all).toEqual({
137
+ foo: 'bar',
138
+ });
139
+ // THEN
140
+ await expect(context_1.realHandler({
141
+ configuration,
142
+ args: { reset: 'baz', force: true },
143
+ }));
144
+ });
145
+ test('throws when no key of index found', async () => {
146
+ // GIVEN
147
+ const configuration = new settings_1.Configuration();
148
+ configuration.context.set('foo', 'bar');
149
+ expect(configuration.context.all).toEqual({
150
+ foo: 'bar',
151
+ });
152
+ // THEN
153
+ await expect(context_1.realHandler({
154
+ configuration,
155
+ args: { reset: '2' },
156
+ })).rejects.toThrow(/No context key with number/);
157
+ });
158
+ test('throws when resetting read-only values', async () => {
159
+ // GIVEN
160
+ const configuration = new settings_1.Configuration();
161
+ const readOnlySettings = new settings_1.Settings({
162
+ foo: 'bar',
163
+ }, true);
164
+ configuration.context = new settings_1.Context(readOnlySettings);
165
+ expect(configuration.context.all).toEqual({
166
+ foo: 'bar',
167
+ });
168
+ // THEN
169
+ await expect(context_1.realHandler({
170
+ configuration,
171
+ args: { reset: 'foo' },
172
+ })).rejects.toThrow(/Cannot reset readonly context value with key/);
173
+ });
174
+ test('throws when no matches could be reset', async () => {
175
+ // GIVEN
176
+ const configuration = new settings_1.Configuration();
177
+ const readOnlySettings = new settings_1.Settings({
178
+ 'foo': 'bar',
179
+ 'match-a': 'baz',
180
+ 'match-b': 'quux',
181
+ }, true);
182
+ configuration.context = new settings_1.Context(readOnlySettings);
183
+ expect(configuration.context.all).toEqual({
184
+ 'foo': 'bar',
185
+ 'match-a': 'baz',
186
+ 'match-b': 'quux',
187
+ });
188
+ // THEN
189
+ await expect(context_1.realHandler({
190
+ configuration,
191
+ args: { reset: 'match-*' },
192
+ })).rejects.toThrow(/None of the matched context values could be reset/);
54
193
  });
55
194
  });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1jb21tYW5kLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb250ZXh0LWNvbW1hbmQudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdEQUF5RDtBQUN6RCxpREFBbUQ7QUFFbkQsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLElBQUcsRUFBRTtJQUM3QixRQUFRO0lBQ1IsTUFBTSxhQUFhLEdBQUcsSUFBSSx3QkFBYSxFQUFFLENBQUM7SUFDMUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRXhDLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUN4QyxHQUFHLEVBQUUsS0FBSztLQUNYLENBQUMsQ0FBQztJQUVILE9BQU87SUFDUCxNQUFNLHFCQUFXLENBQUM7UUFDaEIsYUFBYTtRQUNiLElBQUksRUFBRSxFQUFFO0tBQ0YsQ0FBQyxDQUFDO0FBQ1osQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsd0NBQXdDLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDeEQsUUFBUTtJQUNSLE1BQU0sYUFBYSxHQUFHLElBQUksd0JBQWEsRUFBRSxDQUFDO0lBQzFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4QyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFekMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3hDLEdBQUcsRUFBRSxLQUFLO1FBQ1YsR0FBRyxFQUFFLE1BQU07S0FDWixDQUFDLENBQUM7SUFFSCxPQUFPO0lBQ1AsTUFBTSxxQkFBVyxDQUFDO1FBQ2hCLGFBQWE7UUFDYixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO0tBQ2hCLENBQUMsQ0FBQztJQUVWLE9BQU87SUFDUCxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDeEMsR0FBRyxFQUFFLE1BQU07S0FDWixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxxREFBcUQsRUFBRSxLQUFLLElBQUksRUFBRTtJQUNyRSxRQUFRO0lBQ1IsTUFBTSxhQUFhLEdBQUcsSUFBSSx3QkFBYSxFQUFFLENBQUM7SUFDMUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUV6QyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDeEMsR0FBRyxFQUFFLEtBQUs7UUFDVixHQUFHLEVBQUUsTUFBTTtLQUNaLENBQUMsQ0FBQztJQUVILE9BQU87SUFDUCxNQUFNLHFCQUFXLENBQUM7UUFDaEIsYUFBYTtRQUNiLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7S0FDZCxDQUFDLENBQUM7SUFFVixPQUFPO0lBQ1AsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3hDLEdBQUcsRUFBRSxLQUFLO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFsSGFuZGxlciB9IGZyb20gJy4uLy4uL2xpYi9jb21tYW5kcy9jb250ZXh0JztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi9saWIvc2V0dGluZ3MnO1xuXG50ZXN0KCdjb250ZXh0IGxpc3QnLCBhc3luYygpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3QgY29uZmlndXJhdGlvbiA9IG5ldyBDb25maWd1cmF0aW9uKCk7XG4gIGNvbmZpZ3VyYXRpb24uY29udGV4dC5zZXQoJ2ZvbycsICdiYXInKTtcblxuICBleHBlY3QoY29uZmlndXJhdGlvbi5jb250ZXh0LmFsbCkudG9FcXVhbCh7XG4gICAgZm9vOiAnYmFyJyxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCByZWFsSGFuZGxlcih7XG4gICAgY29uZmlndXJhdGlvbixcbiAgICBhcmdzOiB7fSxcbiAgfSBhcyBhbnkpO1xufSk7XG5cbnRlc3QoJ2NvbnRleHQgcmVzZXQgY2FuIHJlbW92ZSBhIGNvbnRleHQga2V5JywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBjb25maWd1cmF0aW9uID0gbmV3IENvbmZpZ3VyYXRpb24oKTtcbiAgY29uZmlndXJhdGlvbi5jb250ZXh0LnNldCgnZm9vJywgJ2JhcicpO1xuICBjb25maWd1cmF0aW9uLmNvbnRleHQuc2V0KCdiYXonLCAncXV1eCcpO1xuXG4gIGV4cGVjdChjb25maWd1cmF0aW9uLmNvbnRleHQuYWxsKS50b0VxdWFsKHtcbiAgICBmb286ICdiYXInLFxuICAgIGJhejogJ3F1dXgnLFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IHJlYWxIYW5kbGVyKHtcbiAgICBjb25maWd1cmF0aW9uLFxuICAgIGFyZ3M6IHsgcmVzZXQ6ICdmb28nIH0sXG4gIH0gYXMgYW55KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChjb25maWd1cmF0aW9uLmNvbnRleHQuYWxsKS50b0VxdWFsKHtcbiAgICBiYXo6ICdxdXV4JyxcbiAgfSk7XG59KTtcblxudGVzdCgnY29udGV4dCByZXNldCBjYW4gcmVtb3ZlIGEgY29udGV4dCBrZXkgdXNpbmcgbnVtYmVyJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBjb25maWd1cmF0aW9uID0gbmV3IENvbmZpZ3VyYXRpb24oKTtcbiAgY29uZmlndXJhdGlvbi5jb250ZXh0LnNldCgnZm9vJywgJ2JhcicpO1xuICBjb25maWd1cmF0aW9uLmNvbnRleHQuc2V0KCdiYXonLCAncXV1eCcpO1xuXG4gIGV4cGVjdChjb25maWd1cmF0aW9uLmNvbnRleHQuYWxsKS50b0VxdWFsKHtcbiAgICBmb286ICdiYXInLFxuICAgIGJhejogJ3F1dXgnLFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IHJlYWxIYW5kbGVyKHtcbiAgICBjb25maWd1cmF0aW9uLFxuICAgIGFyZ3M6IHsgcmVzZXQ6ICcxJyB9LFxuICB9IGFzIGFueSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoY29uZmlndXJhdGlvbi5jb250ZXh0LmFsbCkudG9FcXVhbCh7XG4gICAgZm9vOiAnYmFyJyxcbiAgfSk7XG59KTtcbiJdfQ==
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1jb21tYW5kLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb250ZXh0LWNvbW1hbmQudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdEQUF5RDtBQUN6RCxpREFBc0U7QUFFdEUsUUFBUSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtJQUM5QixJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssSUFBRyxFQUFFO1FBQ3JCLFFBQVE7UUFDUixNQUFNLGFBQWEsR0FBRyxJQUFJLHdCQUFhLEVBQUUsQ0FBQztRQUMxQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ3hDLEdBQUcsRUFBRSxLQUFLO1NBQ1gsQ0FBQyxDQUFDO1FBRUgsT0FBTztRQUNQLE1BQU0scUJBQVcsQ0FBQztZQUNoQixhQUFhO1lBQ2IsSUFBSSxFQUFFLEVBQUU7U0FDRixDQUFDLENBQUM7SUFDWixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsUUFBUSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsRUFBRTtJQUMvQixJQUFJLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDMUMsUUFBUTtRQUNSLE1BQU0sYUFBYSxHQUFHLElBQUksd0JBQWEsRUFBRSxDQUFDO1FBQzFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4QyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFekMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ3hDLEdBQUcsRUFBRSxLQUFLO1lBQ1YsR0FB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QUFLLEVBQUUsS0FBSztZQUNaLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLFNBQVMsRUFBRSxNQUFNO1NBQ2xCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDVCxhQUFhLENBQUMsT0FBTyxHQUFHLElBQUksa0JBQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXRELE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUN4QyxLQUFLLEVBQUUsS0FBSztZQUNaLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLFNBQVMsRUFBRSxNQUFNO1NBQ2xCLENBQUMsQ0FBQztRQUVILE9BQU87UUFDUCxNQUFNLE1BQU0sQ0FBQyxxQkFBVyxDQUFDO1lBQ3ZCLGFBQWE7WUFDYixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1NBQ3BCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsbURBQW1ELENBQUMsQ0FBQztJQUNsRixDQUFDLENBQUMsQ0FBQztBQUVMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVhbEhhbmRsZXIgfSBmcm9tICcuLi8uLi9saWIvY29tbWFuZHMvY29udGV4dCc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uLCBTZXR0aW5ncywgQ29udGV4dCB9IGZyb20gJy4uLy4uL2xpYi9zZXR0aW5ncyc7XG5cbmRlc2NyaWJlKCdjb250ZXh0IC0tbGlzdCcsICgpID0+IHtcbiAgdGVzdCgncnVucycsIGFzeW5jKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgY29uZmlndXJhdGlvbiA9IG5ldyBDb25maWd1cmF0aW9uKCk7XG4gICAgY29uZmlndXJhdGlvbi5jb250ZXh0LnNldCgnZm9vJywgJ2JhcicpO1xuXG4gICAgZXhwZWN0KGNvbmZpZ3VyYXRpb24uY29udGV4dC5hbGwpLnRvRXF1YWwoe1xuICAgICAgZm9vOiAnYmFyJyxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBhd2FpdCByZWFsSGFuZGxlcih7XG4gICAgICBjb25maWd1cmF0aW9uLFxuICAgICAgYXJnczoge30sXG4gICAgfSBhcyBhbnkpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnY29udGV4dCAtLXJlc2V0JywgKCkgPT4ge1xuICB0ZXN0KCdjYW4gcmVtb3ZlIGEgY29udGV4dCBrZXknLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gbmV3IENvbmZpZ3VyYXRpb24oKTtcbiAgICBjb25maWd1cmF0aW9uLmNvbnRleHQuc2V0KCdmb28nLCAnYmFyJyk7XG4gICAgY29uZmlndXJhdGlvbi5jb250ZXh0LnNldCgnYmF6JywgJ3F1dXgnKTtcblxuICAgIGV4cGVjdChjb25maWd1cmF0aW9uLmNvbnRleHQuYWxsKS50b0VxdWFsKHtcbiAgICAgIGZvbzogJ2JhcicsXG4gICAgICBiYXo6ICdxdXV4JyxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBhd2FpdCByZWFsSGFuZGxlcih7XG4gICAgICBjb25maWd1cmF0aW9uLFxuICAgICAgYXJnczogeyByZXNldDogJ2ZvbycgfSxcbiAgICB9IGFzIGFueSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KGNvbmZpZ3VyYXRpb24uY29udGV4dC5hbGwpLnRvRXF1YWwoe1xuICAgICAgYmF6OiAncXV1eCcsXG4gICAgfSk7XG4gIH0pO1xuXG4gIHRlc3QoJ2NhbiByZW1vdmUgYSBjb250ZXh0IGtleSB1c2luZyBudW1iZXInLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gbmV3IENvbmZpZ3VyYXRpb24oKTtcbiAgICBjb25maWd1cmF0aW9uLmNvbnRleHQuc2V0KCdmb28nLCAnYmFyJyk7XG4gICAgY29uZmlndXJhdGlvbi5jb250ZXh0LnNldCgnYmF6JywgJ3F1dXgnKTtcblxuICAgIGV4cGVjdChjb25maWd1cmF0aW9uLmNvbnRleHQuYWxsKS50b0VxdWFsKHtcbiAgICAgIGZvbzogJ2JhcicsXG4gICAgICBiYXo6ICdxdXV4JyxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBhd2FpdCByZWFsSGFuZGxlcih7XG4gICAgICBjb25maWd1cmF0aW9uLFxuICAgICAgYXJnczogeyByZXNldDogJzEnIH0sXG4gICAgfSBhcyBhbnkpO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChjb25maWd1cmF0aW9uLmNvbnRleHQuYWxsKS50b0VxdWFsKHtcbiAgICAgIGZvbzogJ2JhcicsXG4gICAgfSk7XG4gIH0pO1xuXG5cbiAgdGVzdCgnY2FuIHJlc2V0IG1hdGNoZWQgcGF0dGVybicsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBuZXcgQ29uZmlndXJhdGlvbigpO1xuICAgIGNvbmZpZ3VyYXRpb24uY29udGV4dC5zZXQoJ2ZvbycsICdiYXInKTtcbiAgICBjb25maWd1cmF0aW9uLmNvbnRleHQuc2V0KCdtYXRjaC1hJywgJ2JheicpO1xuICAgIGNvbmZpZ3VyYXRpb24uY29udGV4dC5zZXQoJ21hdGNoLWInLCAncXV4Jyk7XG5cbiAgICBleHBlY3QoY29uZmlndXJhdGlvbi5jb250ZXh0LmFsbCkudG9FcXVhbCh7XG4gICAgICAnZm9vJzogJ2JhcicsXG4gICAgICAnbWF0Y2gtYSc6ICdiYXonLFxuICAgICAgJ21hdGNoLWInOiAncXV4JyxcbiAgICB9KTtcblxuICAgIC8vIFdIRU5cbiAgICBhd2FpdCByZWFsSGFuZGxlcih7XG4gICAgICBjb25maWd1cmF0aW9uLFxuICAgICAgYXJnczogeyByZXNldDogJ21hdGNoLSonIH0sXG4gICAgfSBhcyBhbnkpO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChjb25maWd1cmF0aW9uLmNvbnRleHQuYWxsKS50b0VxdWFsKHtcbiAgICAgIGZvbzogJ2JhcicsXG4gICAgfSk7XG4gIH0pO1xuXG5cbiAgdGVzdCgncHJlZmVycyBhbiBleGFjdCBtYXRjaCcsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBuZXcgQ29uZmlndXJhdGlvbigpO1xuICAgIGNvbmZpZ3VyYXRpb24uY29udGV4dC5zZXQoJ2ZvbycsICdiYXInKTtcbiAgICBjb25maWd1cmF0aW9uLmNvbnRleHQuc2V0KCdmbyonLCAnYmF6Jyk7XG5cbiAgICBleHBlY3QoY29uZmlndXJhdGlvbi5jb250ZXh0LmFsbCkudG9FcXVhbCh7XG4gICAgICAnZm9vJzogJ2JhcicsXG4gICAgICAnZm8qJzogJ2JheicsXG4gICAgfSk7XG5cbiAgICAvLyBXSEVOXG4gICAgYXdhaXQgcmVhbEhhbmRsZXIoe1xuICAgICAgY29uZmlndXJhdGlvbixcbiAgICAgIGFyZ3M6IHsgcmVzZXQ6ICdmbyonIH0sXG4gICAgfSBhcyBhbnkpO1xuXG4gICAgLy8gVEhFTlxuICAgIGV4cGVjdChjb25maWd1cmF0aW9uLmNvbnRleHQuYWxsKS50b0VxdWFsKHtcbiAgICAgIGZvbzogJ2JhcicsXG4gICAgfSk7XG4gIH0pO1xuXG5cbiAgdGVzdCgnZG9lc25cXCd0IHRocm93IHdoZW4gYXQgbGVhc3Qgb25lIG1hdGNoIGlzIHJlc2V0JywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3QgY29uZmlndXJhdGlvbiA9IG5ldyBDb25maWd1cmF0aW9uKCk7XG4gICAgY29uc3QgcmVhZE9ubHlTZXR0aW5ncyA9IG5ldyBTZXR0aW5ncyh7XG4gICAgICAnZm9vJzogJ2JhcicsXG4gICAgICAnbWF0Y2gtYSc6ICdiYXonLFxuICAgIH0sIHRydWUpO1xuICAgIGNvbmZpZ3VyYXRpb24uY29udGV4dCA9IG5ldyBDb250ZXh0KHJlYWRPbmx5U2V0dGluZ3MsIG5ldyBTZXR0aW5ncygpKTtcbiAgICBjb25maWd1cmF0aW9uLmNvbnRleHQuc2V0KCdtYXRjaC1iJywgJ3F1dXgnKTtcblxuICAgIC8vIFdoZW5cbiAgICBhd2FpdCBleHBlY3QocmVhbEhhbmRsZXIoe1xuICAgICAgY29uZmlndXJhdGlvbixcbiAgICAgIGFyZ3M6IHsgcmVzZXQ6ICdtYXRjaC0qJyB9LFxuICAgIH0gYXMgYW55KSk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGNvbmZpZ3VyYXRpb24uY29udGV4dC5hbGwpLnRvRXF1YWwoe1xuICAgICAgJ2Zvbyc6ICdiYXInLFxuICAgICAgJ21hdGNoLWEnOiAnYmF6JyxcbiAgICB9KTtcbiAgfSk7XG5cbiAgdGVzdCgndGhyb3dzIHdoZW4ga2V5IG5vdCBmb3VuZCcsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBuZXcgQ29uZmlndXJhdGlvbigpO1xuICAgIGNvbmZpZ3VyYXRpb24uY29udGV4dC5zZXQoJ2ZvbycsICdiYXInKTtcblxuICAgIGV4cGVjdChjb25maWd1cmF0aW9uLmNvbnRleHQuYWxsKS50b0VxdWFsKHtcbiAgICAgIGZvbzogJ2JhcicsXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgYXdhaXQgZXhwZWN0KHJlYWxIYW5kbGVyKHtcbiAgICAgIGNvbmZpZ3VyYXRpb24sXG4gICAgICBhcmdzOiB7IHJlc2V0OiAnYmF6JyB9LFxuICAgIH0gYXMgYW55KSkucmVqZWN0cy50b1Rocm93KC9ObyBjb250ZXh0IHZhbHVlIG1hdGNoaW5nIGtleS8pO1xuICB9KTtcblxuICB0ZXN0KCdEb2VzblxcJ3QgdGhyb3cgd2hlbiBrZXkgbm90IGZvdW5kIGFuZCAtLWZvcmNlIGlzIHNldCcsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBuZXcgQ29uZmlndXJhdGlvbigpO1xuICAgIGNvbmZpZ3VyYXRpb24uY29udGV4dC5zZXQoJ2ZvbycsICdiYXInKTtcblxuICAgIGV4cGVjdChjb25maWd1cmF0aW9uLmNvbnRleHQuYWxsKS50b0VxdWFsKHtcbiAgICAgIGZvbzogJ2JhcicsXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgYXdhaXQgZXhwZWN0KHJlYWxIYW5kbGVyKHtcbiAgICAgIGNvbmZpZ3VyYXRpb24sXG4gICAgICBhcmdzOiB7IHJlc2V0OiAnYmF6JywgZm9yY2U6IHRydWUgfSxcbiAgICB9IGFzIGFueSkpO1xuICB9KTtcblxuXG4gIHRlc3QoJ3Rocm93cyB3aGVuIG5vIGtleSBvZiBpbmRleCBmb3VuZCcsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBuZXcgQ29uZmlndXJhdGlvbigpO1xuICAgIGNvbmZpZ3VyYXRpb24uY29udGV4dC5zZXQoJ2ZvbycsICdiYXInKTtcblxuICAgIGV4cGVjdChjb25maWd1cmF0aW9uLmNvbnRleHQuYWxsKS50b0VxdWFsKHtcbiAgICAgIGZvbzogJ2JhcicsXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgYXdhaXQgZXhwZWN0KHJlYWxIYW5kbGVyKHtcbiAgICAgIGNvbmZpZ3VyYXRpb24sXG4gICAgICBhcmdzOiB7IHJlc2V0OiAnMicgfSxcbiAgICB9IGFzIGFueSkpLnJlamVjdHMudG9UaHJvdygvTm8gY29udGV4dCBrZXkgd2l0aCBudW1iZXIvKTtcbiAgfSk7XG5cblxuICB0ZXN0KCd0aHJvd3Mgd2hlbiByZXNldHRpbmcgcmVhZC1vbmx5IHZhbHVlcycsIGFzeW5jICgpID0+IHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBuZXcgQ29uZmlndXJhdGlvbigpO1xuICAgIGNvbnN0IHJlYWRPbmx5U2V0dGluZ3MgPSBuZXcgU2V0dGluZ3Moe1xuICAgICAgZm9vOiAnYmFyJyxcbiAgICB9LCB0cnVlKTtcbiAgICBjb25maWd1cmF0aW9uLmNvbnRleHQgPSBuZXcgQ29udGV4dChyZWFkT25seVNldHRpbmdzKTtcblxuICAgIGV4cGVjdChjb25maWd1cmF0aW9uLmNvbnRleHQuYWxsKS50b0VxdWFsKHtcbiAgICAgIGZvbzogJ2JhcicsXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgYXdhaXQgZXhwZWN0KHJlYWxIYW5kbGVyKHtcbiAgICAgIGNvbmZpZ3VyYXRpb24sXG4gICAgICBhcmdzOiB7IHJlc2V0OiAnZm9vJyB9LFxuICAgIH0gYXMgYW55KSkucmVqZWN0cy50b1Rocm93KC9DYW5ub3QgcmVzZXQgcmVhZG9ubHkgY29udGV4dCB2YWx1ZSB3aXRoIGtleS8pO1xuICB9KTtcblxuXG4gIHRlc3QoJ3Rocm93cyB3aGVuIG5vIG1hdGNoZXMgY291bGQgYmUgcmVzZXQnLCBhc3luYyAoKSA9PiB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gbmV3IENvbmZpZ3VyYXRpb24oKTtcbiAgICBjb25zdCByZWFkT25seVNldHRpbmdzID0gbmV3IFNldHRpbmdzKHtcbiAgICAgICdmb28nOiAnYmFyJyxcbiAgICAgICdtYXRjaC1hJzogJ2JheicsXG4gICAgICAnbWF0Y2gtYic6ICdxdXV4JyxcbiAgICB9LCB0cnVlKTtcbiAgICBjb25maWd1cmF0aW9uLmNvbnRleHQgPSBuZXcgQ29udGV4dChyZWFkT25seVNldHRpbmdzKTtcblxuICAgIGV4cGVjdChjb25maWd1cmF0aW9uLmNvbnRleHQuYWxsKS50b0VxdWFsKHtcbiAgICAgICdmb28nOiAnYmFyJyxcbiAgICAgICdtYXRjaC1hJzogJ2JheicsXG4gICAgICAnbWF0Y2gtYic6ICdxdXV4JyxcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBhd2FpdCBleHBlY3QocmVhbEhhbmRsZXIoe1xuICAgICAgY29uZmlndXJhdGlvbixcbiAgICAgIGFyZ3M6IHsgcmVzZXQ6ICdtYXRjaC0qJyB9LFxuICAgIH0gYXMgYW55KSkucmVqZWN0cy50b1Rocm93KC9Ob25lIG9mIHRoZSBtYXRjaGVkIGNvbnRleHQgdmFsdWVzIGNvdWxkIGJlIHJlc2V0Lyk7XG4gIH0pO1xuXG59KTtcblxuIl19