@microsoft/terraform-cdk-constructs 1.9.0 → 2.2.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 (246) hide show
  1. package/.jsii +38110 -28389
  2. package/API.md +40683 -30877
  3. package/lib/azure-actiongroup/lib/action-group.d.ts +3 -3
  4. package/lib/azure-actiongroup/lib/action-group.js +5 -5
  5. package/lib/azure-actiongroup/test/action-group.integ.d.ts +1 -1
  6. package/lib/azure-actiongroup/test/action-group.integ.js +5 -5
  7. package/lib/azure-actiongroup/test/action-group.spec.js +9 -9
  8. package/lib/azure-activitylogalert/lib/activity-log-alert.d.ts +3 -3
  9. package/lib/azure-activitylogalert/lib/activity-log-alert.js +5 -5
  10. package/lib/azure-activitylogalert/test/activity-log-alert.integ.d.ts +1 -1
  11. package/lib/azure-activitylogalert/test/activity-log-alert.integ.js +6 -6
  12. package/lib/azure-activitylogalert/test/activity-log-alert.spec.js +9 -9
  13. package/lib/azure-aks/lib/aks-cluster.d.ts +6 -6
  14. package/lib/azure-aks/lib/aks-cluster.js +8 -8
  15. package/lib/azure-aks/test/aks-cluster.integ.d.ts +1 -1
  16. package/lib/azure-aks/test/aks-cluster.integ.js +5 -5
  17. package/lib/azure-aks/test/aks-cluster.spec.js +12 -12
  18. package/lib/azure-containerapps/index.d.ts +1 -0
  19. package/lib/azure-containerapps/index.js +18 -0
  20. package/lib/azure-containerapps/lib/container-app-environment-schemas.d.ts +50 -0
  21. package/lib/azure-containerapps/lib/container-app-environment-schemas.js +522 -0
  22. package/lib/azure-containerapps/lib/container-app-environment.d.ts +374 -0
  23. package/lib/azure-containerapps/lib/container-app-environment.js +310 -0
  24. package/lib/azure-containerapps/lib/container-app-schemas.d.ts +48 -0
  25. package/lib/azure-containerapps/lib/container-app-schemas.js +466 -0
  26. package/lib/azure-containerapps/lib/container-app.d.ts +925 -0
  27. package/lib/azure-containerapps/lib/container-app.js +320 -0
  28. package/lib/azure-containerapps/lib/index.d.ts +4 -0
  29. package/lib/azure-containerapps/lib/index.js +21 -0
  30. package/lib/azure-containerapps/test/container-app-environment.integ.d.ts +10 -0
  31. package/lib/azure-containerapps/test/container-app-environment.integ.js +82 -0
  32. package/lib/azure-containerapps/test/container-app-environment.spec.d.ts +9 -0
  33. package/lib/azure-containerapps/test/container-app-environment.spec.js +412 -0
  34. package/lib/azure-containerapps/test/container-app.integ.d.ts +10 -0
  35. package/lib/azure-containerapps/test/container-app.integ.js +119 -0
  36. package/lib/azure-containerapps/test/container-app.spec.d.ts +9 -0
  37. package/lib/azure-containerapps/test/container-app.spec.js +839 -0
  38. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.d.ts +3 -3
  39. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +5 -5
  40. package/lib/azure-diagnosticsettings/test/diagnostic-settings.spec.js +9 -9
  41. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.d.ts +7 -7
  42. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +9 -9
  43. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.d.ts +4 -4
  44. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +6 -6
  45. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.d.ts +4 -4
  46. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +6 -6
  47. package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.integ.d.ts +1 -1
  48. package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.integ.js +5 -5
  49. package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.spec.js +11 -11
  50. package/lib/azure-dnsforwardingruleset/test/forwarding-rule.spec.js +14 -14
  51. package/lib/azure-dnsforwardingruleset/test/virtual-network-link.spec.js +12 -12
  52. package/lib/azure-dnsresolver/lib/dns-resolver.d.ts +8 -8
  53. package/lib/azure-dnsresolver/lib/dns-resolver.js +10 -10
  54. package/lib/azure-dnsresolver/lib/inbound-endpoint.d.ts +6 -6
  55. package/lib/azure-dnsresolver/lib/inbound-endpoint.js +8 -8
  56. package/lib/azure-dnsresolver/lib/outbound-endpoint.d.ts +7 -7
  57. package/lib/azure-dnsresolver/lib/outbound-endpoint.js +9 -9
  58. package/lib/azure-dnsresolver/test/dns-resolver.integ.d.ts +1 -1
  59. package/lib/azure-dnsresolver/test/dns-resolver.integ.js +5 -5
  60. package/lib/azure-dnsresolver/test/dns-resolver.spec.js +11 -11
  61. package/lib/azure-dnsresolver/test/inbound-endpoint.integ.d.ts +1 -1
  62. package/lib/azure-dnsresolver/test/inbound-endpoint.integ.js +5 -5
  63. package/lib/azure-dnsresolver/test/inbound-endpoint.spec.js +12 -12
  64. package/lib/azure-dnsresolver/test/outbound-endpoint.integ.d.ts +1 -1
  65. package/lib/azure-dnsresolver/test/outbound-endpoint.integ.js +5 -5
  66. package/lib/azure-dnsresolver/test/outbound-endpoint.spec.js +9 -9
  67. package/lib/azure-dnszone/lib/dns-zone.d.ts +6 -6
  68. package/lib/azure-dnszone/lib/dns-zone.js +8 -8
  69. package/lib/azure-dnszone/lib/records/dns-records.d.ts +31 -31
  70. package/lib/azure-dnszone/lib/records/dns-records.js +42 -42
  71. package/lib/azure-dnszone/test/dns-records.integ.d.ts +1 -1
  72. package/lib/azure-dnszone/test/dns-records.integ.js +5 -5
  73. package/lib/azure-dnszone/test/dns-records.spec.js +57 -57
  74. package/lib/azure-dnszone/test/dns-zone.integ.d.ts +1 -1
  75. package/lib/azure-dnszone/test/dns-zone.integ.js +5 -5
  76. package/lib/azure-dnszone/test/dns-zone.spec.js +11 -11
  77. package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.d.ts +1 -1
  78. package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.js +3 -3
  79. package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.integ.d.ts +1 -1
  80. package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.integ.js +6 -6
  81. package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.spec.js +6 -6
  82. package/lib/azure-metricalert/lib/metric-alert.d.ts +3 -3
  83. package/lib/azure-metricalert/lib/metric-alert.js +5 -5
  84. package/lib/azure-metricalert/test/metric-alert.integ.d.ts +1 -1
  85. package/lib/azure-metricalert/test/metric-alert.integ.js +5 -5
  86. package/lib/azure-metricalert/test/metric-alert.spec.js +9 -9
  87. package/lib/azure-networkinterface/lib/network-interface.d.ts +5 -5
  88. package/lib/azure-networkinterface/lib/network-interface.js +7 -7
  89. package/lib/azure-networkinterface/test/network-interface.integ.d.ts +1 -1
  90. package/lib/azure-networkinterface/test/network-interface.integ.js +5 -5
  91. package/lib/azure-networkinterface/test/network-interface.spec.js +11 -11
  92. package/lib/azure-networksecuritygroup/lib/network-security-group.d.ts +6 -6
  93. package/lib/azure-networksecuritygroup/lib/network-security-group.js +8 -8
  94. package/lib/azure-networksecuritygroup/test/network-security-group.integ.d.ts +1 -1
  95. package/lib/azure-networksecuritygroup/test/network-security-group.integ.js +5 -5
  96. package/lib/azure-networksecuritygroup/test/network-security-group.spec.js +12 -12
  97. package/lib/azure-networkwatcher/lib/network-watcher.d.ts +1 -1
  98. package/lib/azure-networkwatcher/lib/network-watcher.js +3 -3
  99. package/lib/azure-networkwatcher/test/network-watcher.integ.d.ts +1 -1
  100. package/lib/azure-networkwatcher/test/network-watcher.integ.js +6 -6
  101. package/lib/azure-networkwatcher/test/network-watcher.spec.js +6 -6
  102. package/lib/azure-policyassignment/lib/policy-assignment.d.ts +3 -3
  103. package/lib/azure-policyassignment/lib/policy-assignment.js +5 -5
  104. package/lib/azure-policyassignment/test/policy-assignment.integ.d.ts +1 -1
  105. package/lib/azure-policyassignment/test/policy-assignment.integ.js +5 -5
  106. package/lib/azure-policyassignment/test/policy-assignment.spec.js +12 -12
  107. package/lib/azure-policydefinition/lib/policy-definition.d.ts +3 -3
  108. package/lib/azure-policydefinition/lib/policy-definition.js +5 -5
  109. package/lib/azure-policydefinition/test/policy-definition.integ.d.ts +1 -1
  110. package/lib/azure-policydefinition/test/policy-definition.integ.js +5 -5
  111. package/lib/azure-policydefinition/test/policy-definition.spec.js +19 -19
  112. package/lib/azure-policysetdefinition/lib/policy-set-definition.d.ts +1 -1
  113. package/lib/azure-policysetdefinition/lib/policy-set-definition.js +3 -3
  114. package/lib/azure-policysetdefinition/test/policy-set-definition.integ.d.ts +1 -1
  115. package/lib/azure-policysetdefinition/test/policy-set-definition.integ.js +6 -6
  116. package/lib/azure-policysetdefinition/test/policy-set-definition.spec.js +6 -6
  117. package/lib/azure-privatednszone/lib/private-dns-zone.d.ts +10 -10
  118. package/lib/azure-privatednszone/lib/private-dns-zone.js +12 -12
  119. package/lib/azure-privatednszone/lib/records/private-dns-records.d.ts +25 -25
  120. package/lib/azure-privatednszone/lib/records/private-dns-records.js +34 -34
  121. package/lib/azure-privatednszone/test/private-dns-records.integ.d.ts +1 -1
  122. package/lib/azure-privatednszone/test/private-dns-records.integ.js +5 -5
  123. package/lib/azure-privatednszone/test/private-dns-records.spec.js +49 -49
  124. package/lib/azure-privatednszone/test/private-dns-zone.integ.d.ts +1 -1
  125. package/lib/azure-privatednszone/test/private-dns-zone.integ.js +5 -5
  126. package/lib/azure-privatednszone/test/private-dns-zone.spec.js +12 -12
  127. package/lib/azure-privatednszonelink/lib/private-dns-zone-link.d.ts +6 -6
  128. package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +8 -8
  129. package/lib/azure-privatednszonelink/test/private-dns-zone-link.integ.d.ts +1 -1
  130. package/lib/azure-privatednszonelink/test/private-dns-zone-link.integ.js +5 -5
  131. package/lib/azure-privatednszonelink/test/private-dns-zone-link.spec.js +12 -12
  132. package/lib/azure-publicipaddress/lib/public-ip-address.d.ts +5 -5
  133. package/lib/azure-publicipaddress/lib/public-ip-address.js +7 -7
  134. package/lib/azure-publicipaddress/test/public-ip-address.integ.d.ts +1 -1
  135. package/lib/azure-publicipaddress/test/public-ip-address.integ.js +6 -6
  136. package/lib/azure-publicipaddress/test/public-ip-address.spec.js +11 -11
  137. package/lib/azure-resourcegroup/lib/resource-group.d.ts +5 -5
  138. package/lib/azure-resourcegroup/lib/resource-group.js +7 -7
  139. package/lib/azure-resourcegroup/test/resource-group.integ.d.ts +1 -1
  140. package/lib/azure-resourcegroup/test/resource-group.integ.js +5 -5
  141. package/lib/azure-resourcegroup/test/resource-group.spec.js +14 -14
  142. package/lib/azure-roleassignment/lib/role-assignment.d.ts +3 -3
  143. package/lib/azure-roleassignment/lib/role-assignment.js +5 -5
  144. package/lib/azure-roleassignment/test/role-assignment.integ.d.ts +1 -1
  145. package/lib/azure-roleassignment/test/role-assignment.integ.js +5 -5
  146. package/lib/azure-roleassignment/test/role-assignment.spec.js +12 -12
  147. package/lib/azure-roledefinition/lib/role-definition.d.ts +3 -3
  148. package/lib/azure-roledefinition/lib/role-definition.js +5 -5
  149. package/lib/azure-roledefinition/test/role-definition.integ.d.ts +1 -1
  150. package/lib/azure-roledefinition/test/role-definition.integ.js +5 -5
  151. package/lib/azure-roledefinition/test/role-definition.spec.js +12 -12
  152. package/lib/azure-storageaccount/lib/storage-account.d.ts +6 -6
  153. package/lib/azure-storageaccount/lib/storage-account.js +8 -8
  154. package/lib/azure-storageaccount/test/storage-account.integ.d.ts +1 -1
  155. package/lib/azure-storageaccount/test/storage-account.integ.js +5 -5
  156. package/lib/azure-storageaccount/test/storage-account.spec.js +11 -11
  157. package/lib/azure-subnet/lib/subnet.d.ts +3 -3
  158. package/lib/azure-subnet/lib/subnet.js +5 -5
  159. package/lib/azure-subnet/test/subnet.integ.d.ts +1 -1
  160. package/lib/azure-subnet/test/subnet.integ.js +5 -5
  161. package/lib/azure-subnet/test/subnet.spec.js +9 -9
  162. package/lib/azure-virtualmachine/lib/virtual-machine.d.ts +6 -6
  163. package/lib/azure-virtualmachine/lib/virtual-machine.js +8 -8
  164. package/lib/azure-virtualmachine/test/virtual-machine.integ.d.ts +1 -1
  165. package/lib/azure-virtualmachine/test/virtual-machine.integ.js +5 -5
  166. package/lib/azure-virtualmachine/test/virtual-machine.spec.js +17 -17
  167. package/lib/azure-virtualnetwork/lib/virtual-network.d.ts +6 -6
  168. package/lib/azure-virtualnetwork/lib/virtual-network.js +8 -8
  169. package/lib/azure-virtualnetwork/test/virtual-network.integ.d.ts +1 -1
  170. package/lib/azure-virtualnetwork/test/virtual-network.integ.js +5 -5
  171. package/lib/azure-virtualnetwork/test/virtual-network.spec.js +12 -12
  172. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.d.ts +5 -5
  173. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.js +7 -7
  174. package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.integ.d.ts +1 -1
  175. package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.integ.js +5 -5
  176. package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.spec.js +13 -13
  177. package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.d.ts +5 -5
  178. package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.js +7 -7
  179. package/lib/azure-virtualnetworkgatewayconnection/test/virtual-network-gateway-connection.integ.d.ts +1 -1
  180. package/lib/azure-virtualnetworkgatewayconnection/test/virtual-network-gateway-connection.integ.js +5 -5
  181. package/lib/azure-virtualnetworkgatewayconnection/test/virtual-network-gateway-connection.spec.js +20 -20
  182. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.d.ts +4 -4
  183. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +6 -6
  184. package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.d.ts +4 -4
  185. package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.js +6 -6
  186. package/lib/azure-virtualnetworkmanager/lib/ipam-pool.d.ts +4 -4
  187. package/lib/azure-virtualnetworkmanager/lib/ipam-pool.js +6 -6
  188. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.d.ts +4 -4
  189. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +6 -6
  190. package/lib/azure-virtualnetworkmanager/lib/network-group.d.ts +4 -4
  191. package/lib/azure-virtualnetworkmanager/lib/network-group.js +6 -6
  192. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.d.ts +4 -4
  193. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +6 -6
  194. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.d.ts +4 -4
  195. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +6 -6
  196. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.d.ts +4 -4
  197. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +6 -6
  198. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.d.ts +7 -7
  199. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +9 -9
  200. package/lib/azure-virtualnetworkmanager/test/ipam-pool-static-cidr.spec.js +17 -17
  201. package/lib/azure-virtualnetworkmanager/test/ipam-pool.spec.js +15 -15
  202. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.d.ts +1 -1
  203. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.js +5 -5
  204. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.spec.js +57 -57
  205. package/lib/azure-vmss/lib/virtual-machine-scale-set.d.ts +6 -6
  206. package/lib/azure-vmss/lib/virtual-machine-scale-set.js +8 -8
  207. package/lib/azure-vmss/test/virtual-machine-scale-set.integ.d.ts +1 -1
  208. package/lib/azure-vmss/test/virtual-machine-scale-set.integ.js +5 -5
  209. package/lib/azure-vmss/test/virtual-machine-scale-set.spec.js +12 -12
  210. package/lib/core-azure/lib/azapi/azapi-resource-tags.spec.js +6 -6
  211. package/lib/core-azure/lib/azapi/azapi-resource.d.ts +7 -7
  212. package/lib/core-azure/lib/azapi/azapi-resource.js +6 -6
  213. package/lib/core-azure/lib/azapi/azapi-resource.spec.js +7 -7
  214. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.d.ts +12 -12
  215. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +15 -15
  216. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.d.ts +35 -35
  217. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +58 -58
  218. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.d.ts +25 -25
  219. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.js +49 -49
  220. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.d.ts +13 -13
  221. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.js +22 -22
  222. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.d.ts +24 -24
  223. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.js +40 -40
  224. package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.d.ts +44 -44
  225. package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.js +72 -72
  226. package/lib/core-azure/lib/azapi/providers-azapi/index.js +2 -2
  227. package/lib/core-azure/lib/azapi/providers-azapi/lazy-index.js +2 -2
  228. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.d.ts +54 -54
  229. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +86 -86
  230. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.d.ts +65 -65
  231. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +102 -102
  232. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.d.ts +25 -25
  233. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +62 -62
  234. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.d.ts +36 -36
  235. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +69 -69
  236. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +1 -1
  237. package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
  238. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
  239. package/lib/index.d.ts +3 -0
  240. package/lib/index.js +5 -2
  241. package/lib/testing/index.d.ts +1 -1
  242. package/lib/testing/index.js +8 -8
  243. package/lib/testing/lib/cleanup.js +1 -1
  244. package/lib/testing/lib/metadata.js +1 -1
  245. package/package.json +10 -22
  246. package/setup.js +2 -2
@@ -12,8 +12,8 @@
12
12
  * Run with: npm run integration:nostream
13
13
  */
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- const cdktf_1 = require("cdktf");
16
- require("cdktf/lib/testing/adapters/jest");
15
+ const cdktn_1 = require("cdktn");
16
+ require("cdktn/lib/testing/adapters/jest");
17
17
  const azure_policydefinition_1 = require("../../azure-policydefinition");
18
18
  const data_azapi_client_config_1 = require("../../core-azure/lib/azapi/providers-azapi/data-azapi-client-config");
19
19
  const provider_1 = require("../../core-azure/lib/azapi/providers-azapi/provider");
@@ -140,9 +140,9 @@ class PolicyAssignmentExampleStack extends testing_1.BaseTestStack {
140
140
  }
141
141
  describe("Policy Assignment Integration Test", () => {
142
142
  it("should deploy, validate idempotency, and cleanup policy assignment resources", () => {
143
- const app = cdktf_1.Testing.app();
143
+ const app = cdktn_1.Testing.app();
144
144
  const stack = new PolicyAssignmentExampleStack(app, "test-policy-assignment");
145
- const synthesized = cdktf_1.Testing.fullSynth(stack);
145
+ const synthesized = cdktn_1.Testing.fullSynth(stack);
146
146
  // This will:
147
147
  // 1. Run terraform apply to deploy resources (policy definition and assignments)
148
148
  // 2. Run terraform plan to check idempotency (no changes expected)
@@ -150,4 +150,4 @@ describe("Policy Assignment Integration Test", () => {
150
150
  (0, testing_1.TerraformApplyCheckAndDestroy)(synthesized, { verifyCleanup: true });
151
151
  }, 600000); // 10 minute timeout for deployment and cleanup
152
152
  });
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LWFzc2lnbm1lbnQuaW50ZWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtcG9saWN5YXNzaWdubWVudC90ZXN0L3BvbGljeS1hc3NpZ25tZW50LmludGVnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFFSCxpQ0FBZ0M7QUFFaEMsMkNBQXlDO0FBQ3pDLHlFQUFnRTtBQUNoRSxrSEFBNEc7QUFDNUcsa0ZBQW9GO0FBQ3BGLDJDQUE2RTtBQUM3RSx5REFBNkQ7QUFDN0QsZ0VBQTREO0FBRTVELHdEQUF3RDtBQUN4RCxNQUFNLFlBQVksR0FBRyxJQUFJLDBCQUFlLENBQUMsK0JBQStCLEVBQUU7SUFDeEUsV0FBVyxFQUFFLENBQUM7Q0FDZixDQUFDLENBQUM7QUFFSDs7R0FFRztBQUNILE1BQU0sNEJBQTZCLFNBQVEsdUJBQWE7SUFDdEQsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixjQUFjLEVBQUU7Z0JBQ2QsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXO2dCQUNyQyxXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVc7Z0JBQ3JDLGFBQWEsRUFBRSxZQUFZLENBQUMsYUFBYTthQUMxQztTQUNGLENBQUMsQ0FBQztRQUVILDJCQUEyQjtRQUMzQixJQUFJLHdCQUFhLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVyQyw2Q0FBNkM7UUFDN0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxnREFBcUIsQ0FDNUMsSUFBSSxFQUNKLHVCQUF1QixDQUN4QixDQUFDO1FBRUYsd0JBQXdCO1FBQ3hCLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUNwRCwyQ0FBMkMsRUFDM0MsWUFBWSxDQUNiLENBQUM7UUFDRixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxvQkFBb0Is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cUVBQXFFO1lBQ3JFLDREQUE0RDtZQUM1RCxnRUFBZ0U7WUFDaEUsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO1NBQ3ZDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQUVELFFBQVEsQ0FBQyxvQ0FBb0MsRUFBRSxHQUFHLEVBQUU7SUFDbEQsRUFBRSxDQUFDLDhFQUE4RSxFQUFFLEdBQUcsRUFBRTtRQUN0RixNQUFNLEdBQUcsR0FBRyxlQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSw0QkFBNEIsQ0FDNUMsR0FBRyxFQUNILHdCQUF3QixDQUN6QixDQUFDO1FBQ0YsTUFBTSxXQUFXLEdBQUcsZUFBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU3QyxhQUFhO1FBQ2IsaUZBQWlGO1FBQ2pGLG1FQUFtRTtRQUNuRSxnREFBZ0Q7UUFDaEQsSUFBQSx1Q0FBNkIsRUFBQyxXQUFXLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQywrQ0FBK0M7QUFDN0QsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEludGVncmF0aW9uIHRlc3QgZm9yIEF6dXJlIFBvbGljeSBBc3NpZ25tZW50XG4gKlxuICogVGhpcyB0ZXN0IGRlbW9uc3RyYXRlcyBiYXNpYyB1c2FnZSBvZiB0aGUgUG9saWN5QXNzaWdubWVudCBjb25zdHJ1Y3RcbiAqIGFuZCB2YWxpZGF0ZXMgZGVwbG95bWVudCwgaWRlbXBvdGVuY3ksIGFuZCBjbGVhbnVwLlxuICpcbiAqIE5vdGU6IFRoaXMgdGVzdCByZXF1aXJlcyBhIHBvbGljeSBkZWZpbml0aW9uIHRvIGV4aXN0IGJlZm9yZSBhc3NpZ25pbmcgaXQuXG4gKiBJdCBjcmVhdGVzIGEgc2ltcGxlIHBvbGljeSBkZWZpbml0aW9uIGZpcnN0LCB0aGVuIGNyZWF0ZXMgYXNzaWdubWVudHNcbiAqIHRoYXQgcmVmZXJlbmNlIGl0LlxuICpcbiAqIFJ1biB3aXRoOiBucG0gcnVuIGludGVncmF0aW9uOm5vc3RyZWFtXG4gKi9cblxuaW1wb3J0IHsgVGVzdGluZyB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCBcImNka3RmL2xpYi90ZXN0aW5nL2FkYXB0ZXJzL2plc3RcIjtcbmltcG9ydCB7IFBvbGljeURlZmluaXRpb24gfSBmcm9tIFwiLi4vLi4vYXp1cmUtcG9saWN5ZGVmaW5pdGlvblwiO1xuaW1wb3J0IHsgRGF0YUF6YXBpQ2xpZW50Q29uZmlnIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL2F6YXBpL3Byb3ZpZGVycy1hemFwaS9kYXRhLWF6YXBpLWNsaWVudC1jb25maWdcIjtcbmltcG9ydCB7IEF6YXBpUHJvdmlkZXIgfSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvYXphcGkvcHJvdmlkZXJzLWF6YXBpL3Byb3ZpZGVyXCI7XG5pbXBvcnQgeyBCYXNlVGVzdFN0YWNrLCBUZXJyYWZvcm1BcHBseUNoZWNrQW5kRGVzdHJveSB9IGZyb20gXCIuLi8uLi90ZXN0aW5nXCI7XG5pbXBvcnQgeyBUZXN0UnVuTWV0YWRhdGEgfSBmcm9tIFwiLi4vLi4vdGVzdGluZy9saWIvbWV0YWRhdGFcIjtcbmltcG9ydCB7IFBvbGljeUFzc2lnbm1lbnQgfSBmcm9tIFwiLi4vbGliL3BvbGljeS1hc3NpZ25tZW50XCI7XG5cbi8vIEdlbmVyYXRlIHVuaXF1ZSB0ZXN0IHJ1biBtZXRhZGF0YSBmb3IgdGhpcyB0ZXN0IHN1aXRlXG5jb25zdCB0ZXN0TWV0YWRhdGEgPSBuZXcgVGVzdFJ1bk1ldGFkYXRhKFwicG9saWN5LWFzc2lnbm1lbnQtaW50ZWdyYXRpb25cIiwge1xuICBtYXhBZ2VIb3VyczogNCxcbn0pO1xuXG4vKipcbiAqIEV4YW1wbGUgc3RhY2sgZGVtb25zdHJhdGluZyBQb2xpY3kgQXNzaWdubWVudCB1c2FnZVxuICovXG5jbGFzcyBQb2xpY3lBc3NpZ25tZW50RXhhbXBsZVN0YWNrIGV4dGVuZHMgQmFzZVRlc3RTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHRlc3RSdW5PcHRpb25zOiB7XG4gICAgICAgIG1heEFnZUhvdXJzOiB0ZXN0TWV0YWRhdGEubWF4QWdlSG91cnMsXG4gICAgICAgIGF1dG9DbGVhbnVwOiB0ZXN0TWV0YWRhdGEuYXV0b0NsZWFudXAsXG4gICAgICAgIGNsZWFudXBQb2xpY3k6IHRlc3RNZXRhZGF0YS5jbGVhbnVwUG9saWN5LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIENvbmZpZ3VyZSBBWkFQSSBwcm92aWRlclxuICAgIG5ldyBBemFwaVByb3ZpZGVyKHRoaXMsIFwiYXphcGlcIiwge30pO1xuXG4gICAgLy8gR2V0IHRoZSBjdXJyZW50IHN1YnNjcmlwdGlvbiBJRCBmcm9tIEF6dXJlXG4gICAgY29uc3QgY2xpZW50Q29uZmlnID0gbmV3IERhdGFBemFwaUNsaWVudENvbmZpZyhcbiAgICAgIHRoaXMsXG4gICAgICBcImNsaWVudF9jb25maWdfZGVmYXVsdFwiLFxuICAgICk7XG5cbiAgICAvLyBHZW5lcmF0ZSB1bmlxdWUgbmFtZXNcbiAgICBjb25zdCBwb2xpY3lEZWZpbml0aW9uTmFtZSA9IHRoaXMuZ2VuZXJhdGVSZXNvdXJjZU5hbWUoXG4gICAgICBcIk1pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zXCIsXG4gICAgICBcInRlc3Rwb2xpY3lcIixcbiAgICApO1xuICAgIGNvbnN0IGJhc2ljQXNzaWdubWVudE5hbWUgPSB0aGlzLmdlbmVyYXRlUmVzb3VyY2VOYW1lKFxuICAgICAgXCJNaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lBc3NpZ25tZW50c1wiLFxuICAgICAgXCJiYXNpY1wiLFxuICAgICk7XG4gICAgY29uc3QgYWR2YW5jZWRBc3NpZ25tZW50TmFtZSA9IHRoaXMuZ2VuZXJhdGVSZXNvdXJjZU5hbWUoXG4gICAgICBcIk1pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeUFzc2lnbm1lbnRzXCIsXG4gICAgICBcImFkdmFuY2VkXCIsXG4gICAgKTtcblxuICAgIC8vIEZpcnN0LCBjcmVhdGUgYSBwb2xpY3kgZGVmaW5pdGlvbiB0byBhc3NpZ25cbiAgICBjb25zdCBwb2xpY3lEZWZpbml0aW9uID0gbmV3IFBvbGljeURlZmluaXRpb24odGhpcywgXCJ0ZXN0LXBvbGljeVwiLCB7XG4gICAgICBuYW1lOiBwb2xpY3lEZWZpbml0aW9uTmFtZSxcbiAgICAgIGRpc3BsYXlOYW1lOiBcIlRlc3QgUG9saWN5IGZvciBBc3NpZ25tZW50XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJBIHNpbXBsZSB0ZXN0IHBvbGljeSB1c2VkIHRvIHZhbGlkYXRlIHBvbGljeSBhc3NpZ25tZW50c1wiLFxuICAgICAgcG9saWN5VHlwZTogXCJDdXN0b21cIixcbiAgICAgIG1vZGU6IFwiSW5kZXhlZFwiLFxuICAgICAgcG9saWN5UnVsZToge1xuICAgICAgICBpZjoge1xuICAgICAgICAgIGZpZWxkOiBcIltjb25jYXQoJ3RhZ3NbJycnLCBwYXJhbWV0ZXJzKCd0YWdOYW1lJyksICcnJ10nKV1cIixcbiAgICAgICAgICBleGlzdHM6IFwiZmFsc2VcIixcbiAgICAgICAgfSxcbiAgICAgICAgdGhlbjoge1xuICAgICAgICAgIGVmZmVjdDogXCJhdWRpdFwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgdGFnTmFtZToge1xuICAgICAgICAgIHR5cGU6IFwiU3RyaW5nXCIsXG4gICAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBcIlRhZyBOYW1lXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJOYW1lIG9mIHRoZSB0YWcgdG8gY2hlY2tcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogXCJUZXN0VGFnXCIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgY2F0ZWdvcnk6IFwiVGVzdGluZ1wiLFxuICAgICAgICB2ZXJzaW9uOiBcIjEuMC4wXCIsXG4gICAgICB9LFxuICAgICAgdGFnczoge1xuICAgICAgICAuLi50aGlzLnN5c3RlbVRhZ3MoKSxcbiAgICAgICAgcHVycG9zZTogXCJpbnRlZ3JhdGlvbi10ZXN0XCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gVXNlIHRoZSBhY3R1YWwgc3Vic2NyaXB0aW9uIElEIGZyb20gdGhlIGNsaWVudCBjb25maWcgZGF0YSBzb3VyY2VcbiAgICBjb25zdCBzdWJzY3JpcHRpb25TY29wZSA9IGAvc3Vic2NyaXB0aW9ucy8ke2NsaWVudENvbmZpZy5zdWJzY3JpcHRpb25JZH1gO1xuXG4gICAgLy8gRXhhbXBsZSAxOiBCYXNpYyBwb2xpY3kgYXNzaWdubWVudCBhdCBzdWJzY3JpcHRpb24gc2NvcGVcbiAgICAvLyBBZGQgZXhwbGljaXQgZGVwZW5kc09uIGZvciBwcm9wZXIgZGVzdHJveSBvcmRlcmluZ1xuICAgIG5ldyBQb2xpY3lBc3NpZ25tZW50KHRoaXMsIFwiYmFzaWMtYXNzaWdubWVudFwiLCB7XG4gICAgICBuYW1lOiBiYXNpY0Fzc2lnbm1lbnROYW1lLFxuICAgICAgZGlzcGxheU5hbWU6IFwiQmFzaWMgUG9saWN5IEFzc2lnbm1lbnRcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkEgYmFzaWMgcG9saWN5IGFzc2lnbm1lbnQgZm9yIHRlc3RpbmdcIixcbiAgICAgIHBvbGljeURlZmluaXRpb25JZDogcG9saWN5RGVmaW5pdGlvbi5pZCxcbiAgICAgIHNjb3BlOiBzdWJzY3JpcHRpb25TY29wZSxcbiAgICAgIGVuZm9yY2VtZW50TW9kZTogXCJEZWZhdWx0XCIsXG4gICAgICB0YWdzOiB7XG4gICAgICAgIC4uLnRoaXMuc3lzdGVtVGFncygpLFxuICAgICAgICBleGFtcGxlOiBcImJhc2ljXCIsXG4gICAgICB9LFxuICAgICAgLy8gSU1QT1JUQU5UOiBBZGQgZXhwbGljaXQgZGVwZW5kZW5jeSBvbiBwb2xpY3kgZGVmaW5pdGlvbiB0byBlbnN1cmU6XG4gICAgICAvLyAxLiBQb2xpY3kgZGVmaW5pdGlvbiBpcyBjcmVhdGVkIGJlZm9yZSBhc3NpZ25tZW50IChhcHBseSlcbiAgICAgIC8vIDIuIFBvbGljeSBhc3NpZ25tZW50IGlzIGRlc3Ryb3llZCBiZWZvcmUgZGVmaW5pdGlvbiAoZGVzdHJveSlcbiAgICAgIC8vIEF6dXJlIFJCQUMvUG9saWN5IGhhcyBldmVudHVhbCBjb25zaXN0ZW5jeSAtIGV4cGxpY2l0IGRlcHMgaGVscCBvcmRlcmluZ1xuICAgICAgZGVwZW5kc09uOiBbcG9saWN5RGVmaW5pdGlvbi5yZXNvdXJjZV0sXG4gICAgfSk7XG5cbiAgICAvLyBFeGFtcGxlIDI6IEFkdmFuY2VkIHBvbGljeSBhc3NpZ25tZW50IHdpdGggcGFyYW1ldGVycywgaWRlbnRpdHksIGFuZCBub24tY29tcGxpYW5jZSBtZXNzYWdlc1xuICAgIC8vIEFkZCBleHBsaWNpdCBkZXBlbmRzT24gZm9yIHByb3BlciBkZXN0cm95IG9yZGVyaW5nXG4gICAgbmV3IFBvbGljeUFzc2lnbm1lbnQodGhpcywgXCJhZHZhbmNlZC1hc3NpZ25tZW50XCIsIHtcbiAgICAgIG5hbWU6IGFkdmFuY2VkQXNzaWdubWVudE5hbWUsXG4gICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIiwgLy8gUmVxdWlyZWQgd2hlbiBpZGVudGl0eSBpcyBzcGVjaWZpZWRcbiAgICAgIGRpc3BsYXlOYW1lOiBcIkFkdmFuY2VkIFBvbGljeSBBc3NpZ25tZW50XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJBbiBhZHZhbmNlZCBwb2xpY3kgYXNzaWdubWVudCB3aXRoIHBhcmFtZXRlcnMgYW5kIGlkZW50aXR5XCIsXG4gICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6IHBvbGljeURlZmluaXRpb24uaWQsXG4gICAgICBzY29wZTogc3Vic2NyaXB0aW9uU2NvcGUsXG4gICAgICBlbmZvcmNlbWVudE1vZGU6IFwiRG9Ob3RFbmZvcmNlXCIsIC8vIEF1ZGl0IG1vZGVcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgdGFnTmFtZToge1xuICAgICAgICAgIHZhbHVlOiBcIkVudmlyb25tZW50XCIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgYXNzaWduZWRCeTogXCJpbnRlZ3JhdGlvbi10ZXN0XCIsXG4gICAgICAgIGFzc2lnbm1lbnREYXRlOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9LFxuICAgICAgaWRlbnRpdHk6IHtcbiAgICAgICAgdHlwZTogXCJTeXN0ZW1Bc3NpZ25lZFwiLFxuICAgICAgfSxcbiAgICAgIG5vbkNvbXBsaWFuY2VNZXNzYWdlczogW1xuICAgICAgICB7XG4gICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgIFwiUmVzb3VyY2VzIG11c3QgaGF2ZSB0aGUgcmVxdWlyZWQgdGFnLiBUaGlzIGlzIGEgdGVzdCBwb2xpY3kgYXNzaWdubWVudC5cIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB0YWdzOiB7XG4gICAgICAgIC4uLnRoaXMuc3lzdGVtVGFncygpLFxuICAgICAgICBleGFtcGxlOiBcImFkdmFuY2VkXCIsXG4gICAgICB9LFxuICAgICAgLy8gSU1QT1JUQU5UOiBBZGQgZXhwbGljaXQgZGVwZW5kZW5jeSBvbiBwb2xpY3kgZGVmaW5pdGlvbiB0byBlbnN1cmU6XG4gICAgICAvLyAxLiBQb2xpY3kgZGVmaW5pdGlvbiBpcyBjcmVhdGVkIGJlZm9yZSBhc3NpZ25tZW50IChhcHBseSlcbiAgICAgIC8vIDIuIFBvbGljeSBhc3NpZ25tZW50IGlzIGRlc3Ryb3llZCBiZWZvcmUgZGVmaW5pdGlvbiAoZGVzdHJveSlcbiAgICAgIGRlcGVuZHNPbjogW3BvbGljeURlZmluaXRpb24ucmVzb3VyY2VdLFxuICAgIH0pO1xuICB9XG59XG5cbmRlc2NyaWJlKFwiUG9saWN5IEFzc2lnbm1lbnQgSW50ZWdyYXRpb24gVGVzdFwiLCAoKSA9PiB7XG4gIGl0KFwic2hvdWxkIGRlcGxveSwgdmFsaWRhdGUgaWRlbXBvdGVuY3ksIGFuZCBjbGVhbnVwIHBvbGljeSBhc3NpZ25tZW50IHJlc291cmNlc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgYXBwID0gVGVzdGluZy5hcHAoKTtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBQb2xpY3lBc3NpZ25tZW50RXhhbXBsZVN0YWNrKFxuICAgICAgYXBwLFxuICAgICAgXCJ0ZXN0LXBvbGljeS1hc3NpZ25tZW50XCIsXG4gICAgKTtcbiAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3RpbmcuZnVsbFN5bnRoKHN0YWNrKTtcblxuICAgIC8vIFRoaXMgd2lsbDpcbiAgICAvLyAxLiBSdW4gdGVycmFmb3JtIGFwcGx5IHRvIGRlcGxveSByZXNvdXJjZXMgKHBvbGljeSBkZWZpbml0aW9uIGFuZCBhc3NpZ25tZW50cylcbiAgICAvLyAyLiBSdW4gdGVycmFmb3JtIHBsYW4gdG8gY2hlY2sgaWRlbXBvdGVuY3kgKG5vIGNoYW5nZXMgZXhwZWN0ZWQpXG4gICAgLy8gMy4gUnVuIHRlcnJhZm9ybSBkZXN0cm95IHRvIGNsZWFudXAgcmVzb3VyY2VzXG4gICAgVGVycmFmb3JtQXBwbHlDaGVja0FuZERlc3Ryb3koc3ludGhlc2l6ZWQsIHsgdmVyaWZ5Q2xlYW51cDogdHJ1ZSB9KTtcbiAgfSwgNjAwMDAwKTsgLy8gMTAgbWludXRlIHRpbWVvdXQgZm9yIGRlcGxveW1lbnQgYW5kIGNsZWFudXBcbn0pO1xuIl19
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LWFzc2lnbm1lbnQuaW50ZWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtcG9saWN5YXNzaWdubWVudC90ZXN0L3BvbGljeS1hc3NpZ25tZW50LmludGVnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFFSCxpQ0FBZ0M7QUFFaEMsMkNBQXlDO0FBQ3pDLHlFQUFnRTtBQUNoRSxrSEFBNEc7QUFDNUcsa0ZBQW9GO0FBQ3BGLDJDQUE2RTtBQUM3RSx5REFBNkQ7QUFDN0QsZ0VBQTREO0FBRTVELHdEQUF3RDtBQUN4RCxNQUFNLFlBQVksR0FBRyxJQUFJLDBCQUFlLENBQUMsK0JBQStCLEVBQUU7SUFDeEUsV0FBVyxFQUFFLENBQUM7Q0FDZixDQUFDLENBQUM7QUFFSDs7R0FFRztBQUNILE1BQU0sNEJBQTZCLFNBQVEsdUJBQWE7SUFDdEQsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixjQUFjLEVBQUU7Z0JBQ2QsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXO2dCQUNyQyxXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVc7Z0JBQ3JDLGFBQWEsRUFBRSxZQUFZLENBQUMsYUFBYTthQUMxQztTQUNGLENBQUMsQ0FBQztRQUVILDJCQUEyQjtRQUMzQixJQUFJLHdCQUFhLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVyQyw2Q0FBNkM7UUFDN0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxnREFBcUIsQ0FDNUMsSUFBSSxFQUNKLHVCQUF1QixDQUN4QixDQUFDO1FBRUYsd0JBQXdCO1FBQ3hCLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUNwRCwyQ0FBMkMsRUFDM0MsWUFBWSxDQUNiLENBQUM7UUFDRixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxvQkFBb0Is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cUVBQXFFO1lBQ3JFLDREQUE0RDtZQUM1RCxnRUFBZ0U7WUFDaEUsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO1NBQ3ZDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQUVELFFBQVEsQ0FBQyxvQ0FBb0MsRUFBRSxHQUFHLEVBQUU7SUFDbEQsRUFBRSxDQUFDLDhFQUE4RSxFQUFFLEdBQUcsRUFBRTtRQUN0RixNQUFNLEdBQUcsR0FBRyxlQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSw0QkFBNEIsQ0FDNUMsR0FBRyxFQUNILHdCQUF3QixDQUN6QixDQUFDO1FBQ0YsTUFBTSxXQUFXLEdBQUcsZUFBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU3QyxhQUFhO1FBQ2IsaUZBQWlGO1FBQ2pGLG1FQUFtRTtRQUNuRSxnREFBZ0Q7UUFDaEQsSUFBQSx1Q0FBNkIsRUFBQyxXQUFXLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQywrQ0FBK0M7QUFDN0QsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEludGVncmF0aW9uIHRlc3QgZm9yIEF6dXJlIFBvbGljeSBBc3NpZ25tZW50XG4gKlxuICogVGhpcyB0ZXN0IGRlbW9uc3RyYXRlcyBiYXNpYyB1c2FnZSBvZiB0aGUgUG9saWN5QXNzaWdubWVudCBjb25zdHJ1Y3RcbiAqIGFuZCB2YWxpZGF0ZXMgZGVwbG95bWVudCwgaWRlbXBvdGVuY3ksIGFuZCBjbGVhbnVwLlxuICpcbiAqIE5vdGU6IFRoaXMgdGVzdCByZXF1aXJlcyBhIHBvbGljeSBkZWZpbml0aW9uIHRvIGV4aXN0IGJlZm9yZSBhc3NpZ25pbmcgaXQuXG4gKiBJdCBjcmVhdGVzIGEgc2ltcGxlIHBvbGljeSBkZWZpbml0aW9uIGZpcnN0LCB0aGVuIGNyZWF0ZXMgYXNzaWdubWVudHNcbiAqIHRoYXQgcmVmZXJlbmNlIGl0LlxuICpcbiAqIFJ1biB3aXRoOiBucG0gcnVuIGludGVncmF0aW9uOm5vc3RyZWFtXG4gKi9cblxuaW1wb3J0IHsgVGVzdGluZyB9IGZyb20gXCJjZGt0blwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCBcImNka3RuL2xpYi90ZXN0aW5nL2FkYXB0ZXJzL2plc3RcIjtcbmltcG9ydCB7IFBvbGljeURlZmluaXRpb24gfSBmcm9tIFwiLi4vLi4vYXp1cmUtcG9saWN5ZGVmaW5pdGlvblwiO1xuaW1wb3J0IHsgRGF0YUF6YXBpQ2xpZW50Q29uZmlnIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL2F6YXBpL3Byb3ZpZGVycy1hemFwaS9kYXRhLWF6YXBpLWNsaWVudC1jb25maWdcIjtcbmltcG9ydCB7IEF6YXBpUHJvdmlkZXIgfSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvYXphcGkvcHJvdmlkZXJzLWF6YXBpL3Byb3ZpZGVyXCI7XG5pbXBvcnQgeyBCYXNlVGVzdFN0YWNrLCBUZXJyYWZvcm1BcHBseUNoZWNrQW5kRGVzdHJveSB9IGZyb20gXCIuLi8uLi90ZXN0aW5nXCI7XG5pbXBvcnQgeyBUZXN0UnVuTWV0YWRhdGEgfSBmcm9tIFwiLi4vLi4vdGVzdGluZy9saWIvbWV0YWRhdGFcIjtcbmltcG9ydCB7IFBvbGljeUFzc2lnbm1lbnQgfSBmcm9tIFwiLi4vbGliL3BvbGljeS1hc3NpZ25tZW50XCI7XG5cbi8vIEdlbmVyYXRlIHVuaXF1ZSB0ZXN0IHJ1biBtZXRhZGF0YSBmb3IgdGhpcyB0ZXN0IHN1aXRlXG5jb25zdCB0ZXN0TWV0YWRhdGEgPSBuZXcgVGVzdFJ1bk1ldGFkYXRhKFwicG9saWN5LWFzc2lnbm1lbnQtaW50ZWdyYXRpb25cIiwge1xuICBtYXhBZ2VIb3VyczogNCxcbn0pO1xuXG4vKipcbiAqIEV4YW1wbGUgc3RhY2sgZGVtb25zdHJhdGluZyBQb2xpY3kgQXNzaWdubWVudCB1c2FnZVxuICovXG5jbGFzcyBQb2xpY3lBc3NpZ25tZW50RXhhbXBsZVN0YWNrIGV4dGVuZHMgQmFzZVRlc3RTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHRlc3RSdW5PcHRpb25zOiB7XG4gICAgICAgIG1heEFnZUhvdXJzOiB0ZXN0TWV0YWRhdGEubWF4QWdlSG91cnMsXG4gICAgICAgIGF1dG9DbGVhbnVwOiB0ZXN0TWV0YWRhdGEuYXV0b0NsZWFudXAsXG4gICAgICAgIGNsZWFudXBQb2xpY3k6IHRlc3RNZXRhZGF0YS5jbGVhbnVwUG9saWN5LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIENvbmZpZ3VyZSBBWkFQSSBwcm92aWRlclxuICAgIG5ldyBBemFwaVByb3ZpZGVyKHRoaXMsIFwiYXphcGlcIiwge30pO1xuXG4gICAgLy8gR2V0IHRoZSBjdXJyZW50IHN1YnNjcmlwdGlvbiBJRCBmcm9tIEF6dXJlXG4gICAgY29uc3QgY2xpZW50Q29uZmlnID0gbmV3IERhdGFBemFwaUNsaWVudENvbmZpZyhcbiAgICAgIHRoaXMsXG4gICAgICBcImNsaWVudF9jb25maWdfZGVmYXVsdFwiLFxuICAgICk7XG5cbiAgICAvLyBHZW5lcmF0ZSB1bmlxdWUgbmFtZXNcbiAgICBjb25zdCBwb2xpY3lEZWZpbml0aW9uTmFtZSA9IHRoaXMuZ2VuZXJhdGVSZXNvdXJjZU5hbWUoXG4gICAgICBcIk1pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zXCIsXG4gICAgICBcInRlc3Rwb2xpY3lcIixcbiAgICApO1xuICAgIGNvbnN0IGJhc2ljQXNzaWdubWVudE5hbWUgPSB0aGlzLmdlbmVyYXRlUmVzb3VyY2VOYW1lKFxuICAgICAgXCJNaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lBc3NpZ25tZW50c1wiLFxuICAgICAgXCJiYXNpY1wiLFxuICAgICk7XG4gICAgY29uc3QgYWR2YW5jZWRBc3NpZ25tZW50TmFtZSA9IHRoaXMuZ2VuZXJhdGVSZXNvdXJjZU5hbWUoXG4gICAgICBcIk1pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeUFzc2lnbm1lbnRzXCIsXG4gICAgICBcImFkdmFuY2VkXCIsXG4gICAgKTtcblxuICAgIC8vIEZpcnN0LCBjcmVhdGUgYSBwb2xpY3kgZGVmaW5pdGlvbiB0byBhc3NpZ25cbiAgICBjb25zdCBwb2xpY3lEZWZpbml0aW9uID0gbmV3IFBvbGljeURlZmluaXRpb24odGhpcywgXCJ0ZXN0LXBvbGljeVwiLCB7XG4gICAgICBuYW1lOiBwb2xpY3lEZWZpbml0aW9uTmFtZSxcbiAgICAgIGRpc3BsYXlOYW1lOiBcIlRlc3QgUG9saWN5IGZvciBBc3NpZ25tZW50XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJBIHNpbXBsZSB0ZXN0IHBvbGljeSB1c2VkIHRvIHZhbGlkYXRlIHBvbGljeSBhc3NpZ25tZW50c1wiLFxuICAgICAgcG9saWN5VHlwZTogXCJDdXN0b21cIixcbiAgICAgIG1vZGU6IFwiSW5kZXhlZFwiLFxuICAgICAgcG9saWN5UnVsZToge1xuICAgICAgICBpZjoge1xuICAgICAgICAgIGZpZWxkOiBcIltjb25jYXQoJ3RhZ3NbJycnLCBwYXJhbWV0ZXJzKCd0YWdOYW1lJyksICcnJ10nKV1cIixcbiAgICAgICAgICBleGlzdHM6IFwiZmFsc2VcIixcbiAgICAgICAgfSxcbiAgICAgICAgdGhlbjoge1xuICAgICAgICAgIGVmZmVjdDogXCJhdWRpdFwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgdGFnTmFtZToge1xuICAgICAgICAgIHR5cGU6IFwiU3RyaW5nXCIsXG4gICAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBcIlRhZyBOYW1lXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJOYW1lIG9mIHRoZSB0YWcgdG8gY2hlY2tcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogXCJUZXN0VGFnXCIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgY2F0ZWdvcnk6IFwiVGVzdGluZ1wiLFxuICAgICAgICB2ZXJzaW9uOiBcIjEuMC4wXCIsXG4gICAgICB9LFxuICAgICAgdGFnczoge1xuICAgICAgICAuLi50aGlzLnN5c3RlbVRhZ3MoKSxcbiAgICAgICAgcHVycG9zZTogXCJpbnRlZ3JhdGlvbi10ZXN0XCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gVXNlIHRoZSBhY3R1YWwgc3Vic2NyaXB0aW9uIElEIGZyb20gdGhlIGNsaWVudCBjb25maWcgZGF0YSBzb3VyY2VcbiAgICBjb25zdCBzdWJzY3JpcHRpb25TY29wZSA9IGAvc3Vic2NyaXB0aW9ucy8ke2NsaWVudENvbmZpZy5zdWJzY3JpcHRpb25JZH1gO1xuXG4gICAgLy8gRXhhbXBsZSAxOiBCYXNpYyBwb2xpY3kgYXNzaWdubWVudCBhdCBzdWJzY3JpcHRpb24gc2NvcGVcbiAgICAvLyBBZGQgZXhwbGljaXQgZGVwZW5kc09uIGZvciBwcm9wZXIgZGVzdHJveSBvcmRlcmluZ1xuICAgIG5ldyBQb2xpY3lBc3NpZ25tZW50KHRoaXMsIFwiYmFzaWMtYXNzaWdubWVudFwiLCB7XG4gICAgICBuYW1lOiBiYXNpY0Fzc2lnbm1lbnROYW1lLFxuICAgICAgZGlzcGxheU5hbWU6IFwiQmFzaWMgUG9saWN5IEFzc2lnbm1lbnRcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkEgYmFzaWMgcG9saWN5IGFzc2lnbm1lbnQgZm9yIHRlc3RpbmdcIixcbiAgICAgIHBvbGljeURlZmluaXRpb25JZDogcG9saWN5RGVmaW5pdGlvbi5pZCxcbiAgICAgIHNjb3BlOiBzdWJzY3JpcHRpb25TY29wZSxcbiAgICAgIGVuZm9yY2VtZW50TW9kZTogXCJEZWZhdWx0XCIsXG4gICAgICB0YWdzOiB7XG4gICAgICAgIC4uLnRoaXMuc3lzdGVtVGFncygpLFxuICAgICAgICBleGFtcGxlOiBcImJhc2ljXCIsXG4gICAgICB9LFxuICAgICAgLy8gSU1QT1JUQU5UOiBBZGQgZXhwbGljaXQgZGVwZW5kZW5jeSBvbiBwb2xpY3kgZGVmaW5pdGlvbiB0byBlbnN1cmU6XG4gICAgICAvLyAxLiBQb2xpY3kgZGVmaW5pdGlvbiBpcyBjcmVhdGVkIGJlZm9yZSBhc3NpZ25tZW50IChhcHBseSlcbiAgICAgIC8vIDIuIFBvbGljeSBhc3NpZ25tZW50IGlzIGRlc3Ryb3llZCBiZWZvcmUgZGVmaW5pdGlvbiAoZGVzdHJveSlcbiAgICAgIC8vIEF6dXJlIFJCQUMvUG9saWN5IGhhcyBldmVudHVhbCBjb25zaXN0ZW5jeSAtIGV4cGxpY2l0IGRlcHMgaGVscCBvcmRlcmluZ1xuICAgICAgZGVwZW5kc09uOiBbcG9saWN5RGVmaW5pdGlvbi5yZXNvdXJjZV0sXG4gICAgfSk7XG5cbiAgICAvLyBFeGFtcGxlIDI6IEFkdmFuY2VkIHBvbGljeSBhc3NpZ25tZW50IHdpdGggcGFyYW1ldGVycywgaWRlbnRpdHksIGFuZCBub24tY29tcGxpYW5jZSBtZXNzYWdlc1xuICAgIC8vIEFkZCBleHBsaWNpdCBkZXBlbmRzT24gZm9yIHByb3BlciBkZXN0cm95IG9yZGVyaW5nXG4gICAgbmV3IFBvbGljeUFzc2lnbm1lbnQodGhpcywgXCJhZHZhbmNlZC1hc3NpZ25tZW50XCIsIHtcbiAgICAgIG5hbWU6IGFkdmFuY2VkQXNzaWdubWVudE5hbWUsXG4gICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIiwgLy8gUmVxdWlyZWQgd2hlbiBpZGVudGl0eSBpcyBzcGVjaWZpZWRcbiAgICAgIGRpc3BsYXlOYW1lOiBcIkFkdmFuY2VkIFBvbGljeSBBc3NpZ25tZW50XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJBbiBhZHZhbmNlZCBwb2xpY3kgYXNzaWdubWVudCB3aXRoIHBhcmFtZXRlcnMgYW5kIGlkZW50aXR5XCIsXG4gICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6IHBvbGljeURlZmluaXRpb24uaWQsXG4gICAgICBzY29wZTogc3Vic2NyaXB0aW9uU2NvcGUsXG4gICAgICBlbmZvcmNlbWVudE1vZGU6IFwiRG9Ob3RFbmZvcmNlXCIsIC8vIEF1ZGl0IG1vZGVcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgdGFnTmFtZToge1xuICAgICAgICAgIHZhbHVlOiBcIkVudmlyb25tZW50XCIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgYXNzaWduZWRCeTogXCJpbnRlZ3JhdGlvbi10ZXN0XCIsXG4gICAgICAgIGFzc2lnbm1lbnREYXRlOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9LFxuICAgICAgaWRlbnRpdHk6IHtcbiAgICAgICAgdHlwZTogXCJTeXN0ZW1Bc3NpZ25lZFwiLFxuICAgICAgfSxcbiAgICAgIG5vbkNvbXBsaWFuY2VNZXNzYWdlczogW1xuICAgICAgICB7XG4gICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgIFwiUmVzb3VyY2VzIG11c3QgaGF2ZSB0aGUgcmVxdWlyZWQgdGFnLiBUaGlzIGlzIGEgdGVzdCBwb2xpY3kgYXNzaWdubWVudC5cIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB0YWdzOiB7XG4gICAgICAgIC4uLnRoaXMuc3lzdGVtVGFncygpLFxuICAgICAgICBleGFtcGxlOiBcImFkdmFuY2VkXCIsXG4gICAgICB9LFxuICAgICAgLy8gSU1QT1JUQU5UOiBBZGQgZXhwbGljaXQgZGVwZW5kZW5jeSBvbiBwb2xpY3kgZGVmaW5pdGlvbiB0byBlbnN1cmU6XG4gICAgICAvLyAxLiBQb2xpY3kgZGVmaW5pdGlvbiBpcyBjcmVhdGVkIGJlZm9yZSBhc3NpZ25tZW50IChhcHBseSlcbiAgICAgIC8vIDIuIFBvbGljeSBhc3NpZ25tZW50IGlzIGRlc3Ryb3llZCBiZWZvcmUgZGVmaW5pdGlvbiAoZGVzdHJveSlcbiAgICAgIGRlcGVuZHNPbjogW3BvbGljeURlZmluaXRpb24ucmVzb3VyY2VdLFxuICAgIH0pO1xuICB9XG59XG5cbmRlc2NyaWJlKFwiUG9saWN5IEFzc2lnbm1lbnQgSW50ZWdyYXRpb24gVGVzdFwiLCAoKSA9PiB7XG4gIGl0KFwic2hvdWxkIGRlcGxveSwgdmFsaWRhdGUgaWRlbXBvdGVuY3ksIGFuZCBjbGVhbnVwIHBvbGljeSBhc3NpZ25tZW50IHJlc291cmNlc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgYXBwID0gVGVzdGluZy5hcHAoKTtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBQb2xpY3lBc3NpZ25tZW50RXhhbXBsZVN0YWNrKFxuICAgICAgYXBwLFxuICAgICAgXCJ0ZXN0LXBvbGljeS1hc3NpZ25tZW50XCIsXG4gICAgKTtcbiAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3RpbmcuZnVsbFN5bnRoKHN0YWNrKTtcblxuICAgIC8vIFRoaXMgd2lsbDpcbiAgICAvLyAxLiBSdW4gdGVycmFmb3JtIGFwcGx5IHRvIGRlcGxveSByZXNvdXJjZXMgKHBvbGljeSBkZWZpbml0aW9uIGFuZCBhc3NpZ25tZW50cylcbiAgICAvLyAyLiBSdW4gdGVycmFmb3JtIHBsYW4gdG8gY2hlY2sgaWRlbXBvdGVuY3kgKG5vIGNoYW5nZXMgZXhwZWN0ZWQpXG4gICAgLy8gMy4gUnVuIHRlcnJhZm9ybSBkZXN0cm95IHRvIGNsZWFudXAgcmVzb3VyY2VzXG4gICAgVGVycmFmb3JtQXBwbHlDaGVja0FuZERlc3Ryb3koc3ludGhlc2l6ZWQsIHsgdmVyaWZ5Q2xlYW51cDogdHJ1ZSB9KTtcbiAgfSwgNjAwMDAwKTsgLy8gMTAgbWludXRlIHRpbWVvdXQgZm9yIGRlcGxveW1lbnQgYW5kIGNsZWFudXBcbn0pO1xuIl19
@@ -8,8 +8,8 @@
8
8
  * policy assignment-specific functionality.
9
9
  */
10
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
- const cdktf_1 = require("cdktf");
12
- const cdktf = require("cdktf");
11
+ const cdktn_1 = require("cdktn");
12
+ const cdktn = require("cdktn");
13
13
  const api_version_manager_1 = require("../../core-azure/lib/version-manager/api-version-manager");
14
14
  const version_interfaces_1 = require("../../core-azure/lib/version-manager/interfaces/version-interfaces");
15
15
  const policy_assignment_1 = require("../lib/policy-assignment");
@@ -19,8 +19,8 @@ describe("PolicyAssignment - Unified Implementation", () => {
19
19
  let stack;
20
20
  let manager;
21
21
  beforeEach(() => {
22
- app = cdktf_1.Testing.app();
23
- stack = new cdktf.TerraformStack(app, "TestStack");
22
+ app = cdktn_1.Testing.app();
23
+ stack = new cdktn.TerraformStack(app, "TestStack");
24
24
  manager = api_version_manager_1.ApiVersionManager.instance();
25
25
  // Ensure Policy Assignment schemas are registered
26
26
  try {
@@ -289,8 +289,8 @@ describe("PolicyAssignment - Unified Implementation", () => {
289
289
  policyDefinitionId: "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/policyDefinitions/test-policy",
290
290
  scope: "/subscriptions/00000000-0000-0000-0000-000000000000",
291
291
  });
292
- expect(assignment.idOutput).toBeInstanceOf(cdktf.TerraformOutput);
293
- expect(assignment.nameOutput).toBeInstanceOf(cdktf.TerraformOutput);
292
+ expect(assignment.idOutput).toBeInstanceOf(cdktn.TerraformOutput);
293
+ expect(assignment.nameOutput).toBeInstanceOf(cdktn.TerraformOutput);
294
294
  });
295
295
  });
296
296
  describe("Enforcement Mode Configuration", () => {
@@ -564,13 +564,13 @@ describe("PolicyAssignment - Unified Implementation", () => {
564
564
  policyDefinitionId: "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/policyDefinitions/test-policy",
565
565
  scope: "/subscriptions/00000000-0000-0000-0000-000000000000",
566
566
  });
567
- const synthesized = cdktf_1.Testing.synth(stack);
567
+ const synthesized = cdktn_1.Testing.synth(stack);
568
568
  expect(synthesized).toBeDefined();
569
569
  const stackConfig = JSON.parse(synthesized);
570
570
  expect(stackConfig.resource).toBeDefined();
571
571
  });
572
572
  it("should work in complex CDK constructs", () => {
573
- class ComplexConstruct extends cdktf.TerraformStack {
573
+ class ComplexConstruct extends cdktn.TerraformStack {
574
574
  constructor(scope, id) {
575
575
  super(scope, id);
576
576
  const assignment1 = new policy_assignment_1.PolicyAssignment(this, "Assignment1", {
@@ -586,10 +586,10 @@ describe("PolicyAssignment - Unified Implementation", () => {
586
586
  scope: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg",
587
587
  apiVersion: "2022-06-01",
588
588
  });
589
- new cdktf.TerraformOutput(this, "Assignment1Id", {
589
+ new cdktn.TerraformOutput(this, "Assignment1Id", {
590
590
  value: assignment1.id,
591
591
  });
592
- new cdktf.TerraformOutput(this, "Assignment2Id", {
592
+ new cdktn.TerraformOutput(this, "Assignment2Id", {
593
593
  value: assignment2.id,
594
594
  });
595
595
  }
@@ -612,7 +612,7 @@ describe("PolicyAssignment - Unified Implementation", () => {
612
612
  });
613
613
  expect(assignment1.resolvedApiVersion).toBe("2022-06-01");
614
614
  expect(assignment2.resolvedApiVersion).toBe("2022-06-01");
615
- const synthesized = cdktf_1.Testing.synth(stack);
615
+ const synthesized = cdktn_1.Testing.synth(stack);
616
616
  expect(synthesized).toBeDefined();
617
617
  });
618
618
  });
@@ -651,4 +651,4 @@ describe("PolicyAssignment - Unified Implementation", () => {
651
651
  });
652
652
  });
653
653
  });
654
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LWFzc2lnbm1lbnQuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS1wb2xpY3lhc3NpZ25tZW50L3Rlc3QvcG9saWN5LWFzc2lnbm1lbnQuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7R0FPRzs7QUFFSCxpQ0FBZ0M7QUFDaEMsK0JBQStCO0FBQy9CLGtHQUE2RjtBQUM3RiwyR0FBeUc7QUFDekcsZ0VBR2tDO0FBQ2xDLGdGQUcwQztBQUUxQyxRQUFRLENBQUMsMkNBQTJDLEVBQUUsR0FBRyxFQUFFO0lBQ3pELElBQUksR0FBYyxDQUFDO0lBQ25CLElBQUksS0FBMkIsQ0FBQztJQUNoQyxJQUFJLE9BQTBCLENBQUM7SUFFL0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLEdBQUcsR0FBRyxlQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDcEIsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbkQsT0FBTyxHQUFHLHVDQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRXZDLGtEQUFrRDtRQUNsRCxJQUFJLENBQUM7WUFDSCxPQUFPLENBQUMsb0JBQW9CLENBQzFCLGtEQUFzQixFQUN0QiwwREFBOEIsQ0FDL0IsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsK0JBQStCO1FBQ2pDLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLEVBQUU7UUFDaEQsRUFBRSxDQUFDLDBFQUEwRSxFQUFFLEdBQUcsRUFBRTtZQUNsRixNQUFNLEtBQUssR0FBMEI7Z0JBQ25DLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLGtCQUFrQixFQUNoQixxSEFBcUg7Z0JBQ3ZILEtBQUssRUFDSCw0RUFBNEU7YUFDL0UsQ0FBQztZQUVGLE1BQU0s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LEtBQUssRUFBRSxvQkFBb0IsRUFBRTtnQkFDbkUsSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLGtCQUFrQixFQUNoQixxSEFBcUg7Z0JBQ3ZILEtBQUssRUFDSCw0RUFBNEU7YUFDL0UsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNuRSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxHQUFHLEVBQUU7WUFDdkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxvQ0FBZ0IsQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFO2dCQUM5RCxJQUFJLEVBQUUscUJBQXFCO2dCQUMzQixrQkFBa0IsRUFDaEIscUhBQXFIO2dCQUN2SCxLQUFLLEVBQ0gsb0lBQW9JO2FBQ3ZJLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29tcHJlaGVuc2l2ZSB0ZXN0cyBmb3IgdGhlIHVuaWZpZWQgUG9saWN5QXNzaWdubWVudCBpbXBsZW1lbnRhdGlvblxuICpcbiAqIFRoaXMgdGVzdCBzdWl0ZSB2YWxpZGF0ZXMgdGhlIHVuaWZpZWQgUG9saWN5QXNzaWdubWVudCBjbGFzcyB0aGF0IHVzZXNcbiAqIHRoZSBWZXJzaW9uZWRBemFwaVJlc291cmNlIGZyYW1ld29yay4gVGVzdHMgY292ZXIgYXV0b21hdGljIHZlcnNpb24gcmVzb2x1dGlvbixcbiAqIGV4cGxpY2l0IHZlcnNpb24gcGlubmluZywgc2NoZW1hIHZhbGlkYXRpb24sIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uLCBhbmRcbiAqIHBvbGljeSBhc3NpZ25tZW50LXNwZWNpZmljIGZ1bmN0aW9uYWxpdHkuXG4gKi9cblxuaW1wb3J0IHsgVGVzdGluZyB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0ICogYXMgY2RrdGYgZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBBcGlWZXJzaW9uTWFuYWdlciB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvYXBpLXZlcnNpb24tbWFuYWdlclwiO1xuaW1wb3J0IHsgVmVyc2lvblN1cHBvcnRMZXZlbCB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvaW50ZXJmYWNlcy92ZXJzaW9uLWludGVyZmFjZXNcIjtcbmltcG9ydCB7XG4gIFBvbGljeUFzc2lnbm1lbnQsXG4gIFBvbGljeUFzc2lnbm1lbnRQcm9wcyxcbn0gZnJvbSBcIi4uL2xpYi9wb2xpY3ktYXNzaWdubWVudFwiO1xuaW1wb3J0IHtcbiAgQUxMX1BPTElDWV9BU1NJR05NRU5UX1ZFUlNJT05TLFxuICBQT0xJQ1lfQVNTSUdOTUVOVF9UWVBFLFxufSBmcm9tIFwiLi4vbGliL3BvbGljeS1hc3NpZ25tZW50LXNjaGVtYXNcIjtcblxuZGVzY3JpYmUoXCJQb2xpY3lBc3NpZ25tZW50IC0gVW5pZmllZCBJbXBsZW1lbnRhdGlvblwiLCAoKSA9PiB7XG4gIGxldCBhcHA6IGNka3RmLkFwcDtcbiAgbGV0IHN0YWNrOiBjZGt0Zi5UZXJyYWZvcm1TdGFjaztcbiAgbGV0IG1hbmFnZXI6IEFwaVZlcnNpb25NYW5hZ2VyO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGFwcCA9IFRlc3RpbmcuYXBwKCk7XG4gICAgc3RhY2sgPSBuZXcgY2RrdGYuVGVycmFmb3JtU3RhY2soYXBwLCBcIlRlc3RTdGFja1wiKTtcbiAgICBtYW5hZ2VyID0gQXBpVmVyc2lvbk1hbmFnZXIuaW5zdGFuY2UoKTtcblxuICAgIC8vIEVuc3VyZSBQb2xpY3kgQXNzaWdubWVudCBzY2hlbWFzIGFyZSByZWdpc3RlcmVkXG4gICAgdHJ5IHtcbiAgICAgIG1hbmFnZXIucmVnaXN0ZXJSZXNvdXJjZVR5cGUoXG4gICAgICAgIFBPTElDWV9BU1NJR05NRU5UX1RZUEUsXG4gICAgICAgIEFMTF9QT0xJQ1lfQVNTSUdOTUVOVF9WRVJTSU9OUyxcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIElnbm9yZSBpZiBhbHJlYWR5IHJlZ2lzdGVyZWRcbiAgICB9XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQ29uc3RydWN0b3IgYW5kIEJhc2ljIFByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBwb2xpY3kgYXNzaWdubWVudCB3aXRoIGF1dG9tYXRpYyBsYXRlc3QgdmVyc2lvbiByZXNvbHV0aW9uXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBQb2xpY3lBc3NpZ25tZW50UHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIlRlc3RBc3NpZ25tZW50XCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQpLnRvQmVJbnN0YW5jZU9mKFBvbGljeUFzc2lnbm1lbnQpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyMi0wNi0wMVwiKTsgLy8gTGF0ZXN0IHZlcnNpb25cbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzKS50b0JlKHByb3BzKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50Lm5hbWUpLnRvQmUoXCJ0ZXN0LWFzc2lnbm1lbnRcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgcG9saWN5IGFzc2lnbm1lbnQgd2l0aCBleHBsaWNpdCB2ZXJzaW9uIHBpbm5pbmdcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFBvbGljeUFzc2lnbm1lbnRQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWFzc2lnbm1lbnQtcGlubmVkXCIsXG4gICAgICAgIGFwaVZlcnNpb246IFwiMjAyMi0wNi0wMVwiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIlRlc3RBc3NpZ25tZW50XCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyMi0wNi0wMVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBwb2xpY3kgYXNzaWdubWVudCB3aXRoIGFsbCBvcHRpb25hbCBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBQb2xpY3lBc3NpZ25tZW50UHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50LWZ1bGxcIixcbiAgICAgICAgZGlzcGxheU5hbWU6IFwiVGVzdCBQb2xpY3kgQXNzaWdubWVudFwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJBIHRlc3QgcG9saWN5IGFzc2lnbm1lbnQgZm9yIHVuaXQgdGVzdGluZ1wiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgZW5mb3JjZW1lbnRNb2RlOiBcIkRlZmF1bHRcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIHRhZ05hbWU6IHtcbiAgICAgICAgICAgIHZhbHVlOiBcIkVudmlyb25tZW50XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICBhc3NpZ25lZEJ5OiBcImFkbWluQGV4YW1wbGUuY29tXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlkZW50aXR5OiB7XG4gICAgICAgICAgdHlwZTogXCJTeXN0ZW1Bc3NpZ25lZFwiLFxuICAgICAgICB9LFxuICAgICAgICBub3RTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy9leGNsdWRlZC1yZ1wiLFxuICAgICAgICBdLFxuICAgICAgICBub25Db21wbGlhbmNlTWVzc2FnZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtZXNzYWdlOiBcIlJlc291cmNlIG11c3QgY29tcGx5IHdpdGggcG9saWN5XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaWdub3JlQ2hhbmdlczogW1wibWV0YWRhdGFcIl0sXG4gICAgICAgIGVuYWJsZVZhbGlkYXRpb246IHRydWUsXG4gICAgICAgIGVuYWJsZU1pZ3JhdGlvbkFuYWx5c2lzOiB0cnVlLFxuICAgICAgICBlbmFibGVUcmFuc2Zvcm1hdGlvbjogdHJ1ZSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGFzc2lnbm1lbnQgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJUZXN0QXNzaWdubWVudFwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzLmRpc3BsYXlOYW1lKS50b0JlKFwiVGVzdCBQb2xpY3kgQXNzaWdubWVudFwiKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzLmRlc2NyaXB0aW9uKS50b0JlKFxuICAgICAgICBcIkEgdGVzdCBwb2xpY3kgYXNzaWdubWVudCBmb3IgdW5pdCB0ZXN0aW5nXCIsXG4gICAgICApO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucHJvcHMuZW5mb3JjZW1lbnRNb2RlKS50b0JlKFwiRGVmYXVsdFwiKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzLnBhcmFtZXRlcnMpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QoYXNzaWdubWVudC5wcm9wcy5tZXRhZGF0YSkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzLmlkZW50aXR5KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucHJvcHMubm90U2NvcGVzKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucHJvcHMubm9uQ29tcGxpYW5jZU1lc3NhZ2VzKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgdXNlIGRlZmF1bHQgbmFtZSB3aGVuIG5hbWUgaXMgbm90IHByb3ZpZGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBQb2xpY3lBc3NpZ25tZW50UHJvcHMgPSB7XG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBhc3NpZ25tZW50ID0gbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiVGVzdEFzc2lnbm1lbnRcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5uYW1lKS50b0JlKFwiVGVzdEFzc2lnbm1lbnRcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCByZXF1aXJlIHBvbGljeURlZmluaXRpb25JZCB0byBiZSBwcm92aWRlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogYW55ID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtYXNzaWdubWVudFwiLFxuICAgICAgICBzY29wZTogXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgIH07XG5cbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIlRlc3RBc3NpZ25tZW50XCIsIHByb3BzKTtcbiAgICAgIH0pLnRvVGhyb3coXCJSZXF1aXJlZCBwcm9wZXJ0eSAncG9saWN5RGVmaW5pdGlvbklkJyBpcyBtaXNzaW5nXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgcmVxdWlyZSBzY29wZSB0byBiZSBwcm92aWRlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogYW55ID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtYXNzaWdubWVudFwiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICB9O1xuXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJUZXN0QXNzaWdubWVudFwiLCBwcm9wcyk7XG4gICAgICB9KS50b1Rocm93KFwiUmVxdWlyZWQgcHJvcGVydHkgJ3Njb3BlJyBpcyBtaXNzaW5nXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkZyYW1ld29yayBJbnRlZ3JhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgcmVzb2x2ZSBsYXRlc3QgQVBJIHZlcnNpb24gYXV0b21hdGljYWxseVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhc3NpZ25tZW50ID0gbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiVGVzdEFzc2lnbm1lbnRcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtYXNzaWdubWVudFwiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjItMDYtMDFcIik7XG4gICAgICBleHBlY3QoYXNzaWdubWVudC5sYXRlc3RWZXJzaW9uKCkpLnRvQmUoXCIyMDIyLTA2LTAxXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBhbGwgcmVnaXN0ZXJlZCBBUEkgdmVyc2lvbnNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIlRlc3RBc3NpZ25tZW50XCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWFzc2lnbm1lbnRcIixcbiAgICAgICAgcG9saWN5RGVmaW5pdGlvbklkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Byb3ZpZGVycy9NaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lEZWZpbml0aW9ucy90ZXN0LXBvbGljeVwiLFxuICAgICAgICBzY29wZTogXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzdXBwb3J0ZWRWZXJzaW9ucyA9IGFzc2lnbm1lbnQuc3VwcG9ydGVkVmVyc2lvbnMoKTtcbiAgICAgIGV4cGVjdChzdXBwb3J0ZWRWZXJzaW9ucykudG9Db250YWluKFwiMjAyMi0wNi0wMVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHZhbGlkYXRlIHZlcnNpb24gc3VwcG9ydFwiLCAoKSA9PiB7XG4gICAgICAvLyBWYWxpZCB2ZXJzaW9uXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJWYWxpZFZlcnNpb25cIiwge1xuICAgICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50XCIsXG4gICAgICAgICAgcG9saWN5RGVmaW5pdGlvbklkOlxuICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgYXBpVmVyc2lvbjogXCIyMDIyLTA2LTAxXCIsXG4gICAgICAgIH0pO1xuICAgICAgfSkubm90LnRvVGhyb3coKTtcblxuICAgICAgLy8gSW52YWxpZCB2ZXJzaW9uXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJJbnZhbGlkVmVyc2lvblwiLCB7XG4gICAgICAgICAgbmFtZTogXCJ0ZXN0LWFzc2lnbm1lbnRcIixcbiAgICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgICBzY29wZTogXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjAtMDEtMDFcIixcbiAgICAgICAgfSk7XG4gICAgICB9KS50b1Rocm93KFwiVW5zdXBwb3J0ZWQgQVBJIHZlcnNpb24gJzIwMjAtMDEtMDEnXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgbG9hZCBjb3JyZWN0IHNjaGVtYSBmb3IgcmVzb2x2ZWQgdmVyc2lvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhc3NpZ25tZW50ID0gbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiVGVzdEFzc2lnbm1lbnRcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtYXNzaWdubWVudFwiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjItMDYtMDFcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5zY2hlbWEpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QoYXNzaWdubWVudC5zY2hlbWEucmVzb3VyY2VUeXBlKS50b0JlKFBPTElDWV9BU1NJR05NRU5UX1RZUEUpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQuc2NoZW1hLnZlcnNpb24pLnRvQmUoXCIyMDIyLTA2LTAxXCIpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQuc2NoZW1hLnByb3BlcnRpZXMpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBsb2FkIHZlcnNpb24gY29uZmlndXJhdGlvbiBjb3JyZWN0bHlcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIlRlc3RBc3NpZ25tZW50XCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWFzc2lnbm1lbnRcIixcbiAgICAgICAgcG9saWN5RGVmaW5pdGlvbklkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Byb3ZpZGVycy9NaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lEZWZpbml0aW9ucy90ZXN0LXBvbGljeVwiLFxuICAgICAgICBzY29wZTogXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC52ZXJzaW9uQ29uZmlnKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQudmVyc2lvbkNvbmZpZy52ZXJzaW9uKS50b0JlKFwiMjAyMi0wNi0wMVwiKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnZlcnNpb25Db25maWcuc3VwcG9ydExldmVsKS50b0JlKFxuICAgICAgICBWZXJzaW9uU3VwcG9ydExldmVsLkFDVElWRSxcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiUHJvcGVydHkgVmFsaWRhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgdmFsaWRhdGUgcHJvcGVydGllcyB3aGVuIHZhbGlkYXRpb24gaXMgZW5hYmxlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogUG9saWN5QXNzaWdubWVudFByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtYXNzaWdubWVudFwiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBlbmFibGVWYWxpZGF0aW9uOiB0cnVlLFxuICAgICAgfTtcblxuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiVGVzdEFzc2lnbm1lbnRcIiwgcHJvcHMpO1xuICAgICAgfSkubm90LnRvVGhyb3coKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhdmUgdmFsaWRhdGlvbiByZXN1bHRzIGZvciB2YWxpZCBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFzc2lnbm1lbnQgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJUZXN0QXNzaWdubWVudFwiLCB7XG4gICAgICAgIG5hbWU6IFwidmFsaWQtYXNzaWdubWVudFwiLFxuICAgICAgICBkaXNwbGF5TmFtZTogXCJWYWxpZCBBc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIGVuYWJsZVZhbGlkYXRpb246IHRydWUsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQudmFsaWRhdGlvblJlc3VsdCkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnZhbGlkYXRpb25SZXN1bHQhLnZhbGlkKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQudmFsaWRhdGlvblJlc3VsdCEuZXJyb3JzKS50b0hhdmVMZW5ndGgoMCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBza2lwIHZhbGlkYXRpb24gd2hlbiBkaXNhYmxlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhc3NpZ25tZW50ID0gbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiVGVzdEFzc2lnbm1lbnRcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtYXNzaWdubWVudFwiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBlbmFibGVWYWxpZGF0aW9uOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudCkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJNaWdyYXRpb24gQW5hbHlzaXNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHNraXAgbWlncmF0aW9uIGFuYWx5c2lzIGZvciBzaW5nbGUgdmVyc2lvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhc3NpZ25tZW50ID0gbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiVGVzdEFzc2lnbm1lbnRcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtYXNzaWdubWVudFwiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjItMDYtMDFcIixcbiAgICAgIH0pO1xuXG4gICAgICAvLyBTaW5jZSB0aGVyZSdzIG9ubHkgb25lIHZlcnNpb24sIG1pZ3JhdGlvbiBhbmFseXNpcyBzaG91bGQgYmUgc2tpcHBlZFxuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBza2lwIG1pZ3JhdGlvbiBhbmFseXNpcyB3aGVuIGRpc2FibGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFzc2lnbm1lbnQgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJUZXN0QXNzaWdubWVudFwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIGVuYWJsZU1pZ3JhdGlvbkFuYWx5c2lzOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5taWdyYXRpb25BbmFseXNpcykudG9CZVVuZGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlJlc291cmNlIENyZWF0aW9uIGFuZCBCb2R5XCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgY29ycmVjdCByZXNvdXJjZSBib2R5IHdpdGggbWluaW1hbCBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFzc2lnbm1lbnQgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJUZXN0QXNzaWdubWVudFwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChhc3NpZ25tZW50KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucHJvcHMucG9saWN5RGVmaW5pdGlvbklkKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucHJvcHMuc2NvcGUpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgY29ycmVjdCByZXNvdXJjZSBib2R5IHdpdGggYWxsIHByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIlRlc3RBc3NpZ25tZW50XCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWFzc2lnbm1lbnRcIixcbiAgICAgICAgZGlzcGxheU5hbWU6IFwiVGVzdCBBc3NpZ25tZW50XCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkEgdGVzdCBhc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIGVuZm9yY2VtZW50TW9kZTogXCJEb05vdEVuZm9yY2VcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIHRhZ05hbWU6IHtcbiAgICAgICAgICAgIHZhbHVlOiBcIkVudmlyb25tZW50XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICBhc3NpZ25lZEJ5OiBcImFkbWluQGV4YW1wbGUuY29tXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlkZW50aXR5OiB7XG4gICAgICAgICAgdHlwZTogXCJTeXN0ZW1Bc3NpZ25lZFwiLFxuICAgICAgICB9LFxuICAgICAgICBub3RTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy9leGNsdWRlZC1yZ1wiLFxuICAgICAgICBdLFxuICAgICAgICBub25Db21wbGlhbmNlTWVzc2FnZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtZXNzYWdlOiBcIlJlc291cmNlIG11c3QgY29tcGx5XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudCkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzLmRpc3BsYXlOYW1lKS50b0JlKFwiVGVzdCBBc3NpZ25tZW50XCIpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucHJvcHMuZW5mb3JjZW1lbnRNb2RlKS50b0JlKFwiRG9Ob3RFbmZvcmNlXCIpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucHJvcHMuaWRlbnRpdHkpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgVGVycmFmb3JtIG91dHB1dHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIlRlc3RBc3NpZ25tZW50XCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWFzc2lnbm1lbnQtb3V0cHV0c1wiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LmlkT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0Zi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQubmFtZU91dHB1dCkudG9CZUluc3RhbmNlT2YoY2RrdGYuVGVycmFmb3JtT3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJFbmZvcmNlbWVudCBNb2RlIENvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHVzZSBEZWZhdWx0IGVuZm9yY2VtZW50IG1vZGUgYnkgZGVmYXVsdFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhc3NpZ25tZW50ID0gbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiRGVmYXVsdEVuZm9yY2VtZW50XCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWFzc2lnbm1lbnRcIixcbiAgICAgICAgcG9saWN5RGVmaW5pdGlvbklkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Byb3ZpZGVycy9NaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lEZWZpbml0aW9ucy90ZXN0LXBvbGljeVwiLFxuICAgICAgICBzY29wZTogXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5lbmZvcmNlbWVudE1vZGUpLnRvQmUoXCJEZWZhdWx0XCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBEb05vdEVuZm9yY2UgZW5mb3JjZW1lbnQgbW9kZVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhc3NpZ25tZW50ID0gbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiRG9Ob3RFbmZvcmNlTW9kZVwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIGVuZm9yY2VtZW50TW9kZTogXCJEb05vdEVuZm9yY2VcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5lbmZvcmNlbWVudE1vZGUpLnRvQmUoXCJEb05vdEVuZm9yY2VcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IGV4cGxpY2l0IERlZmF1bHQgZW5mb3JjZW1lbnQgbW9kZVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhc3NpZ25tZW50ID0gbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiRXhwbGljaXREZWZhdWx0XCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWFzc2lnbm1lbnRcIixcbiAgICAgICAgcG9saWN5RGVmaW5pdGlvbklkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Byb3ZpZGVycy9NaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lEZWZpbml0aW9ucy90ZXN0LXBvbGljeVwiLFxuICAgICAgICBzY29wZTogXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgZW5mb3JjZW1lbnRNb2RlOiBcIkRlZmF1bHRcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5lbmZvcmNlbWVudE1vZGUpLnRvQmUoXCJEZWZhdWx0XCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIklkZW50aXR5IENvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgU3lzdGVtQXNzaWduZWQgaWRlbnRpdHlcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIlN5c3RlbUlkZW50aXR5XCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWFzc2lnbm1lbnRcIixcbiAgICAgICAgcG9saWN5RGVmaW5pdGlvbklkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Byb3ZpZGVycy9NaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lEZWZpbml0aW9ucy90ZXN0LXBvbGljeVwiLFxuICAgICAgICBzY29wZTogXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgaWRlbnRpdHk6IHtcbiAgICAgICAgICB0eXBlOiBcIlN5c3RlbUFzc2lnbmVkXCIsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucHJvcHMuaWRlbnRpdHkpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QoYXNzaWdubWVudC5wcm9wcy5pZGVudGl0eSEudHlwZSkudG9CZShcIlN5c3RlbUFzc2lnbmVkXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBVc2VyQXNzaWduZWQgaWRlbnRpdHlcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIlVzZXJJZGVudGl0eVwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIGlkZW50aXR5OiB7XG4gICAgICAgICAgdHlwZTogXCJVc2VyQXNzaWduZWRcIixcbiAgICAgICAgICB1c2VyQXNzaWduZWRJZGVudGl0aWVzOiB7XG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk1hbmFnZWRJZGVudGl0eS91c2VyQXNzaWduZWRJZGVudGl0aWVzL2lkZW50aXR5XCI6XG4gICAgICAgICAgICAgIHt9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucHJvcHMuaWRlbnRpdHkpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QoYXNzaWdubWVudC5wcm9wcy5pZGVudGl0eSEudHlwZSkudG9CZShcIlVzZXJBc3NpZ25lZFwiKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzLmlkZW50aXR5IS51c2VyQXNzaWduZWRJZGVudGl0aWVzKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBOb25lIGlkZW50aXR5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFzc2lnbm1lbnQgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJOb0lkZW50aXR5XCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWFzc2lnbm1lbnRcIixcbiAgICAgICAgcG9saWN5RGVmaW5pdGlvbklkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Byb3ZpZGVycy9NaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lEZWZpbml0aW9ucy90ZXN0LXBvbGljeVwiLFxuICAgICAgICBzY29wZTogXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgaWRlbnRpdHk6IHtcbiAgICAgICAgICB0eXBlOiBcIk5vbmVcIixcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5wcm9wcy5pZGVudGl0eSkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzLmlkZW50aXR5IS50eXBlKS50b0JlKFwiTm9uZVwiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJQYXJhbWV0ZXJzIGFuZCBNZXRhZGF0YVwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBwb2xpY3kgcGFyYW1ldGVyc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhc3NpZ25tZW50ID0gbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiV2l0aFBhcmFtZXRlcnNcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtYXNzaWdubWVudFwiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgdGFnTmFtZToge1xuICAgICAgICAgICAgdmFsdWU6IFwiRW52aXJvbm1lbnRcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRhZ1ZhbHVlOiB7XG4gICAgICAgICAgICB2YWx1ZTogXCJQcm9kdWN0aW9uXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5wcm9wcy5wYXJhbWV0ZXJzKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucHJvcHMucGFyYW1ldGVycy50YWdOYW1lLnZhbHVlKS50b0JlKFwiRW52aXJvbm1lbnRcIik7XG4gICAgICBleHBlY3QoYXNzaWdubWVudC5wcm9wcy5wYXJhbWV0ZXJzLnRhZ1ZhbHVlLnZhbHVlKS50b0JlKFwiUHJvZHVjdGlvblwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgbWV0YWRhdGFcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIldpdGhNZXRhZGF0YVwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgYXNzaWduZWRCeTogXCJhZG1pbkBleGFtcGxlLmNvbVwiLFxuICAgICAgICAgIGFzc2lnbmVkRGF0ZTogXCIyMDI0LTAxLTAxXCIsXG4gICAgICAgICAgcGFyYW1ldGVyU2NvcGVzOiB7fSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5wcm9wcy5tZXRhZGF0YSkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzLm1ldGFkYXRhLmFzc2lnbmVkQnkpLnRvQmUoXCJhZG1pbkBleGFtcGxlLmNvbVwiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJOb3RTY29wZXMgYW5kIE5vbkNvbXBsaWFuY2VNZXNzYWdlc1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBub3RTY29wZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIldpdGhOb3RTY29wZXNcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtYXNzaWdubWVudFwiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBub3RTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy9leGNsdWRlZC1yZy0xXCIsXG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvZXhjbHVkZWQtcmctMlwiLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzLm5vdFNjb3BlcykudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzLm5vdFNjb3BlcykudG9IYXZlTGVuZ3RoKDIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBub25Db21wbGlhbmNlTWVzc2FnZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KFxuICAgICAgICBzdGFjayxcbiAgICAgICAgXCJXaXRoTm9uQ29tcGxpYW5jZU1lc3NhZ2VzXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcInRlc3QtYXNzaWdubWVudFwiLFxuICAgICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Byb3ZpZGVycy9NaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lEZWZpbml0aW9ucy90ZXN0LXBvbGljeVwiLFxuICAgICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIG5vbkNvbXBsaWFuY2VNZXNzYWdlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBtZXNzYWdlOiBcIlJlc291cmNlIG11c3QgaGF2ZSByZXF1aXJlZCB0YWdzXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBtZXNzYWdlOiBcIlJlc291cmNlIGxvY2F0aW9uIGlzIG5vdCBjb21wbGlhbnRcIixcbiAgICAgICAgICAgICAgcG9saWN5RGVmaW5pdGlvblJlZmVyZW5jZUlkOiBcImxvY2F0aW9uUG9saWN5XCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5wcm9wcy5ub25Db21wbGlhbmNlTWVzc2FnZXMpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QoYXNzaWdubWVudC5wcm9wcy5ub25Db21wbGlhbmNlTWVzc2FnZXMpLnRvSGF2ZUxlbmd0aCgyKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzLm5vbkNvbXBsaWFuY2VNZXNzYWdlcyFbMF0ubWVzc2FnZSkudG9CZShcbiAgICAgICAgXCJSZXNvdXJjZSBtdXN0IGhhdmUgcmVxdWlyZWQgdGFnc1wiLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJQdWJsaWMgTWV0aG9kcyBhbmQgUHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgbGV0IGFzc2lnbm1lbnQ6IFBvbGljeUFzc2lnbm1lbnQ7XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIGFzc2lnbm1lbnQgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJUZXN0QXNzaWdubWVudFwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50XCIsXG4gICAgICAgIGRpc3BsYXlOYW1lOiBcIlRlc3QgQXNzaWdubWVudFwiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgZW5mb3JjZW1lbnRNb2RlOiBcIkRlZmF1bHRcIixcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGF2ZSBjb3JyZWN0IGlkIGZvcm1hdFwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoYXNzaWdubWVudC5pZCkudG9NYXRjaCgvXlxcJFxcey4qXFwuaWRcXH0kLyk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYXZlIHJlc291cmNlSWQgcHJvcGVydHkgbWF0Y2hpbmcgaWRcIiwgKCkgPT4ge1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucmVzb3VyY2VJZCkudG9CZShhc3NpZ25tZW50LmlkKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHJldHVybiBjb3JyZWN0IHBvbGljeURlZmluaXRpb25JZFwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoYXNzaWdubWVudC5wb2xpY3lEZWZpbml0aW9uSWQpLnRvQmUoXG4gICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Byb3ZpZGVycy9NaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lEZWZpbml0aW9ucy90ZXN0LXBvbGljeVwiLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHJldHVybiBjb3JyZWN0IHNjb3BlXCIsICgpID0+IHtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LmFzc2lnbm1lbnRTY29wZSkudG9CZShcbiAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHJldHVybiBjb3JyZWN0IGVuZm9yY2VtZW50TW9kZVwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoYXNzaWdubWVudC5lbmZvcmNlbWVudE1vZGUpLnRvQmUoXCJEZWZhdWx0XCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIklnbm9yZSBDaGFuZ2VzIENvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGFwcGx5IGlnbm9yZSBjaGFuZ2VzIGxpZmVjeWNsZSBydWxlc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhc3NpZ25tZW50ID0gbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiSWdub3JlQ2hhbmdlc1wiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFtcIm1ldGFkYXRhXCIsIFwiZGVzY3JpcHRpb25cIl0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQpLnRvQmVJbnN0YW5jZU9mKFBvbGljeUFzc2lnbm1lbnQpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIGVtcHR5IGlnbm9yZSBjaGFuZ2VzIGFycmF5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFzc2lnbm1lbnQgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJFbXB0eUlnbm9yZVwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFtdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChhc3NpZ25tZW50KS50b0JlSW5zdGFuY2VPZihQb2xpY3lBc3NpZ25tZW50KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJFcnJvciBIYW5kbGluZ1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIGludmFsaWQgQVBJIHZlcnNpb25zIGdyYWNlZnVsbHlcIiwgKCkgPT4ge1xuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiSW52YWxpZEFQSVwiLCB7XG4gICAgICAgICAgbmFtZTogXCJ0ZXN0LWFzc2lnbm1lbnRcIixcbiAgICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgICBzY29wZTogXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgICBhcGlWZXJzaW9uOiBcImludmFsaWQtdmVyc2lvblwiLFxuICAgICAgICB9KTtcbiAgICAgIH0pLnRvVGhyb3coXCJVbnN1cHBvcnRlZCBBUEkgdmVyc2lvbiAnaW52YWxpZC12ZXJzaW9uJ1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhbmRsZSB2YWxpZGF0aW9uIGVycm9ycyB3aGVuIHZhbGlkYXRpb24gaXMgZW5hYmxlZFwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJWYWxpZGF0aW9uRXJyb3JcIiwge1xuICAgICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50XCIsXG4gICAgICAgICAgcG9saWN5RGVmaW5pdGlvbklkOiB1bmRlZmluZWQgYXMgYW55LCAvLyBNaXNzaW5nIHJlcXVpcmVkIHBvbGljeURlZmluaXRpb25JZFxuICAgICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIGVuYWJsZVZhbGlkYXRpb246IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfSkudG9UaHJvdyhcIlJlcXVpcmVkIHByb3BlcnR5ICdwb2xpY3lEZWZpbml0aW9uSWQnIGlzIG1pc3NpbmdcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYW5kbGUgc2NoZW1hIHJlZ2lzdHJhdGlvbiBlcnJvcnMgZ3JhY2VmdWxseVwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJTY2hlbWFUZXN0XCIsIHtcbiAgICAgICAgICBuYW1lOiBcInRlc3QtYXNzaWdubWVudFwiLFxuICAgICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Byb3ZpZGVycy9NaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lEZWZpbml0aW9ucy90ZXN0LXBvbGljeVwiLFxuICAgICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICB9KTtcbiAgICAgIH0pLm5vdC50b1Rocm93KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiSlNJSSBDb21wbGlhbmNlXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBoYXZlIEpTSUktY29tcGxpYW50IGNvbnN0cnVjdG9yXCIsICgpID0+IHtcbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIkpzaWlUZXN0XCIsIHtcbiAgICAgICAgICBuYW1lOiBcImpzaWktdGVzdFwiLFxuICAgICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Byb3ZpZGVycy9NaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lEZWZpbml0aW9ucy90ZXN0LXBvbGljeVwiLFxuICAgICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICB9KTtcbiAgICAgIH0pLm5vdC50b1Rocm93KCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYXZlIEpTSUktY29tcGxpYW50IHByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIkpzaWlQcm9wc1wiLCB7XG4gICAgICAgIG5hbWU6IFwianNpaS1wcm9wc1wiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh0eXBlb2YgYXNzaWdubWVudC5pZCkudG9CZShcInN0cmluZ1wiKTtcbiAgICAgIGV4cGVjdCh0eXBlb2YgYXNzaWdubWVudC5uYW1lKS50b0JlKFwic3RyaW5nXCIpO1xuICAgICAgZXhwZWN0KHR5cGVvZiBhc3NpZ25tZW50LnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcInN0cmluZ1wiKTtcbiAgICAgIGV4cGVjdCh0eXBlb2YgYXNzaWdubWVudC5wb2xpY3lEZWZpbml0aW9uSWQpLnRvQmUoXCJzdHJpbmdcIik7XG4gICAgICBleHBlY3QodHlwZW9mIGFzc2lnbm1lbnQuYXNzaWdubWVudFNjb3BlKS50b0JlKFwic3RyaW5nXCIpO1xuICAgICAgZXhwZWN0KHR5cGVvZiBhc3NpZ25tZW50LmVuZm9yY2VtZW50TW9kZSkudG9CZShcInN0cmluZ1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhdmUgSlNJSS1jb21wbGlhbnQgbWV0aG9kc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhc3NpZ25tZW50ID0gbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiSnNpaU1ldGhvZHNcIiwge1xuICAgICAgICBuYW1lOiBcImpzaWktbWV0aG9kc1wiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh0eXBlb2YgYXNzaWdubWVudC5sYXRlc3RWZXJzaW9uKS50b0JlKFwiZnVuY3Rpb25cIik7XG4gICAgICBleHBlY3QodHlwZW9mIGFzc2lnbm1lbnQuc3VwcG9ydGVkVmVyc2lvbnMpLnRvQmUoXCJmdW5jdGlvblwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHNlcmlhbGl6ZSBjb21wbGV4IG9iamVjdHMgY29ycmVjdGx5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFzc2lnbm1lbnQgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJKc2lpU2VyaWFsaXphdGlvblwiLCB7XG4gICAgICAgIG5hbWU6IFwianNpaS1zZXJpYWxpemF0aW9uXCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICB0ZXN0UGFyYW06IHtcbiAgICAgICAgICAgIHZhbHVlOiBcInRlc3RcIixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCgoKSA9PiBKU09OLnN0cmluZ2lmeShhc3NpZ25tZW50LnZhbGlkYXRpb25SZXN1bHQpKS5ub3QudG9UaHJvdygpO1xuICAgICAgZXhwZWN0KCgpID0+IEpTT04uc3RyaW5naWZ5KGFzc2lnbm1lbnQuc2NoZW1hKSkubm90LnRvVGhyb3coKTtcbiAgICAgIGV4cGVjdCgoKSA9PiBKU09OLnN0cmluZ2lmeShhc3NpZ25tZW50LnZlcnNpb25Db25maWcpKS5ub3QudG9UaHJvdygpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkNESyBUZXJyYWZvcm0gSW50ZWdyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHN5bnRoZXNpemUgdG8gdmFsaWQgVGVycmFmb3JtIGNvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgICAgbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiU3ludGhUZXN0XCIsIHtcbiAgICAgICAgbmFtZTogXCJzeW50aC10ZXN0XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9CZURlZmluZWQoKTtcblxuICAgICAgY29uc3Qgc3RhY2tDb25maWcgPSBKU09OLnBhcnNlKHN5bnRoZXNpemVkKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5yZXNvdXJjZSkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHdvcmsgaW4gY29tcGxleCBDREsgY29uc3RydWN0c1wiLCAoKSA9PiB7XG4gICAgICBjbGFzcyBDb21wbGV4Q29uc3RydWN0IGV4dGVuZHMgY2RrdGYuVGVycmFmb3JtU3RhY2sge1xuICAgICAgICBjb25zdHJ1Y3RvcihzY29wZTogY2RrdGYuQXBwLCBpZDogc3RyaW5nKSB7XG4gICAgICAgICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgICAgICAgIGNvbnN0IGFzc2lnbm1lbnQxID0gbmV3IFBvbGljeUFzc2lnbm1lbnQodGhpcywgXCJBc3NpZ25tZW50MVwiLCB7XG4gICAgICAgICAgICBuYW1lOiBcImFzc2lnbm1lbnQtMVwiLFxuICAgICAgICAgICAgZGlzcGxheU5hbWU6IFwiRmlyc3QgQXNzaWdubWVudFwiLFxuICAgICAgICAgICAgcG9saWN5RGVmaW5pdGlvbklkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvcG9saWN5LTFcIixcbiAgICAgICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3QgYXNzaWdubWVudDIgPSBuZXcgUG9saWN5QXNzaWdubWVudCh0aGlzLCBcIkFzc2lnbm1lbnQyXCIsIHtcbiAgICAgICAgICAgIG5hbWU6IFwiYXNzaWdubWVudC0yXCIsXG4gICAgICAgICAgICBkaXNwbGF5TmFtZTogXCJTZWNvbmQgQXNzaWdubWVudFwiLFxuICAgICAgICAgICAgcG9saWN5RGVmaW5pdGlvbklkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvcG9saWN5LTJcIixcbiAgICAgICAgICAgIHNjb3BlOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjItMDYtMDFcIixcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJBc3NpZ25tZW50MUlkXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiBhc3NpZ25tZW50MS5pZCxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJBc3NpZ25tZW50MklkXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiBhc3NpZ25tZW50Mi5pZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgQ29tcGxleENvbnN0cnVjdChhcHAsIFwiQ29tcGxleFN0YWNrXCIpO1xuICAgICAgfSkubm90LnRvVGhyb3coKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhbmRsZSBtdWx0aXBsZSBwb2xpY3kgYXNzaWdubWVudHMgaW4gdGhlIHNhbWUgc3RhY2tcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudDEgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJBc3NpZ25tZW50MVwiLCB7XG4gICAgICAgIG5hbWU6IFwiYXNzaWdubWVudC0xXCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvcG9saWN5LTFcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgYXNzaWdubWVudDIgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJBc3NpZ25tZW50MlwiLCB7XG4gICAgICAgIG5hbWU6IFwiYXNzaWdubWVudC0yXCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvcG9saWN5LTJcIixcbiAgICAgICAgc2NvcGU6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjItMDYtMDFcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudDEucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyMi0wNi0wMVwiKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50Mi5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDIyLTA2LTAxXCIpO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlNjb3BlIENvbmZpZ3VyYXRpb25zXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBzdXBwb3J0IG1hbmFnZW1lbnQgZ3JvdXAgc2NvcGVcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIk1hbmFnZW1lbnRHcm91cFNjb3BlXCIsIHtcbiAgICAgICAgbmFtZTogXCJtZy1hc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3Byb3ZpZGVycy9NaWNyb3NvZnQuTWFuYWdlbWVudC9tYW5hZ2VtZW50R3JvdXBzL215LW1nXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQuYXNzaWdubWVudFNjb3BlKS50b0NvbnRhaW4oXG4gICAgICAgIFwiL3Byb3ZpZGVycy9NaWNyb3NvZnQuTWFuYWdlbWVudC9tYW5hZ2VtZW50R3JvdXBzL1wiLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgc3Vic2NyaXB0aW9uIHNjb3BlXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFzc2lnbm1lbnQgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJTdWJzY3JpcHRpb25TY29wZVwiLCB7XG4gICAgICAgIG5hbWU6IFwic3Vic2NyaXB0aW9uLWFzc2lnbm1lbnRcIixcbiAgICAgICAgcG9saWN5RGVmaW5pdGlvbklkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Byb3ZpZGVycy9NaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lEZWZpbml0aW9ucy90ZXN0LXBvbGljeVwiLFxuICAgICAgICBzY29wZTogXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5hc3NpZ25tZW50U2NvcGUpLnRvQ29udGFpbihcIi9zdWJzY3JpcHRpb25zL1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgcmVzb3VyY2UgZ3JvdXAgc2NvcGVcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIlJlc291cmNlR3JvdXBTY29wZVwiLCB7XG4gICAgICAgIG5hbWU6IFwicmctYXNzaWdubWVudFwiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5hc3NpZ25tZW50U2NvcGUpLnRvQ29udGFpbihcIi9yZXNvdXJjZUdyb3Vwcy9cIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IHJlc291cmNlIHNjb3BlXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFzc2lnbm1lbnQgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJSZXNvdXJjZVNjb3BlXCIsIHtcbiAgICAgICAgbmFtZTogXCJyZXNvdXJjZS1hc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZy9wcm92aWRlcnMvTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3Rlc3RzdG9yYWdlXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQuYXNzaWdubWVudFNjb3BlKS50b0NvbnRhaW4oXCIvcHJvdmlkZXJzL1wiKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
654
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LWFzc2lnbm1lbnQuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS1wb2xpY3lhc3NpZ25tZW50L3Rlc3QvcG9saWN5LWFzc2lnbm1lbnQuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7R0FPRzs7QUFFSCxpQ0FBZ0M7QUFDaEMsK0JBQStCO0FBQy9CLGtHQUE2RjtBQUM3RiwyR0FBeUc7QUFDekcsZ0VBR2tDO0FBQ2xDLGdGQUcwQztBQUUxQyxRQUFRLENBQUMsMkNBQTJDLEVBQUUsR0FBRyxFQUFFO0lBQ3pELElBQUksR0FBYyxDQUFDO0lBQ25CLElBQUksS0FBMkIsQ0FBQztJQUNoQyxJQUFJLE9BQTBCLENBQUM7SUFFL0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLEdBQUcsR0FBRyxlQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDcEIsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbkQsT0FBTyxHQUFHLHVDQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRXZDLGtEQUFrRDtRQUNsRCxJQUFJLENBQUM7WUFDSCxPQUFPLENBQUMsb0JBQW9CLENBQzFCLGtEQUFzQixFQUN0QiwwREFBOEIsQ0FDL0IsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsK0JBQStCO1FBQ2pDLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLEVBQUU7UUFDaEQsRUFBRSxDQUFDLDBFQUEwRSxFQUFFLEdBQUcsRUFBRTtZQUNsRixNQUFNLEtBQUssR0FBMEI7Z0JBQ25DLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLGtCQUFrQixFQUNoQixxSEFBcUg7Z0JBQ3ZILEtBQUssRUFDSCw0RUFBNEU7YUFDL0UsQ0FBQztZQUVGLE1BQU0s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LEtBQUssRUFBRSxvQkFBb0IsRUFBRTtnQkFDbkUsSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLGtCQUFrQixFQUNoQixxSEFBcUg7Z0JBQ3ZILEtBQUssRUFDSCw0RUFBNEU7YUFDL0UsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNuRSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxHQUFHLEVBQUU7WUFDdkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxvQ0FBZ0IsQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFO2dCQUM5RCxJQUFJLEVBQUUscUJBQXFCO2dCQUMzQixrQkFBa0IsRUFDaEIscUhBQXFIO2dCQUN2SCxLQUFLLEVBQ0gsb0lBQW9JO2FBQ3ZJLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29tcHJlaGVuc2l2ZSB0ZXN0cyBmb3IgdGhlIHVuaWZpZWQgUG9saWN5QXNzaWdubWVudCBpbXBsZW1lbnRhdGlvblxuICpcbiAqIFRoaXMgdGVzdCBzdWl0ZSB2YWxpZGF0ZXMgdGhlIHVuaWZpZWQgUG9saWN5QXNzaWdubWVudCBjbGFzcyB0aGF0IHVzZXNcbiAqIHRoZSBWZXJzaW9uZWRBemFwaVJlc291cmNlIGZyYW1ld29yay4gVGVzdHMgY292ZXIgYXV0b21hdGljIHZlcnNpb24gcmVzb2x1dGlvbixcbiAqIGV4cGxpY2l0IHZlcnNpb24gcGlubmluZywgc2NoZW1hIHZhbGlkYXRpb24sIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uLCBhbmRcbiAqIHBvbGljeSBhc3NpZ25tZW50LXNwZWNpZmljIGZ1bmN0aW9uYWxpdHkuXG4gKi9cblxuaW1wb3J0IHsgVGVzdGluZyB9IGZyb20gXCJjZGt0blwiO1xuaW1wb3J0ICogYXMgY2RrdG4gZnJvbSBcImNka3RuXCI7XG5pbXBvcnQgeyBBcGlWZXJzaW9uTWFuYWdlciB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvYXBpLXZlcnNpb24tbWFuYWdlclwiO1xuaW1wb3J0IHsgVmVyc2lvblN1cHBvcnRMZXZlbCB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvaW50ZXJmYWNlcy92ZXJzaW9uLWludGVyZmFjZXNcIjtcbmltcG9ydCB7XG4gIFBvbGljeUFzc2lnbm1lbnQsXG4gIFBvbGljeUFzc2lnbm1lbnRQcm9wcyxcbn0gZnJvbSBcIi4uL2xpYi9wb2xpY3ktYXNzaWdubWVudFwiO1xuaW1wb3J0IHtcbiAgQUxMX1BPTElDWV9BU1NJR05NRU5UX1ZFUlNJT05TLFxuICBQT0xJQ1lfQVNTSUdOTUVOVF9UWVBFLFxufSBmcm9tIFwiLi4vbGliL3BvbGljeS1hc3NpZ25tZW50LXNjaGVtYXNcIjtcblxuZGVzY3JpYmUoXCJQb2xpY3lBc3NpZ25tZW50IC0gVW5pZmllZCBJbXBsZW1lbnRhdGlvblwiLCAoKSA9PiB7XG4gIGxldCBhcHA6IGNka3RuLkFwcDtcbiAgbGV0IHN0YWNrOiBjZGt0bi5UZXJyYWZvcm1TdGFjaztcbiAgbGV0IG1hbmFnZXI6IEFwaVZlcnNpb25NYW5hZ2VyO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGFwcCA9IFRlc3RpbmcuYXBwKCk7XG4gICAgc3RhY2sgPSBuZXcgY2RrdG4uVGVycmFmb3JtU3RhY2soYXBwLCBcIlRlc3RTdGFja1wiKTtcbiAgICBtYW5hZ2VyID0gQXBpVmVyc2lvbk1hbmFnZXIuaW5zdGFuY2UoKTtcblxuICAgIC8vIEVuc3VyZSBQb2xpY3kgQXNzaWdubWVudCBzY2hlbWFzIGFyZSByZWdpc3RlcmVkXG4gICAgdHJ5IHtcbiAgICAgIG1hbmFnZXIucmVnaXN0ZXJSZXNvdXJjZVR5cGUoXG4gICAgICAgIFBPTElDWV9BU1NJR05NRU5UX1RZUEUsXG4gICAgICAgIEFMTF9QT0xJQ1lfQVNTSUdOTUVOVF9WRVJTSU9OUyxcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIElnbm9yZSBpZiBhbHJlYWR5IHJlZ2lzdGVyZWRcbiAgICB9XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQ29uc3RydWN0b3IgYW5kIEJhc2ljIFByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBwb2xpY3kgYXNzaWdubWVudCB3aXRoIGF1dG9tYXRpYyBsYXRlc3QgdmVyc2lvbiByZXNvbHV0aW9uXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBQb2xpY3lBc3NpZ25tZW50UHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIlRlc3RBc3NpZ25tZW50XCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQpLnRvQmVJbnN0YW5jZU9mKFBvbGljeUFzc2lnbm1lbnQpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyMi0wNi0wMVwiKTsgLy8gTGF0ZXN0IHZlcnNpb25cbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzKS50b0JlKHByb3BzKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50Lm5hbWUpLnRvQmUoXCJ0ZXN0LWFzc2lnbm1lbnRcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgcG9saWN5IGFzc2lnbm1lbnQgd2l0aCBleHBsaWNpdCB2ZXJzaW9uIHBpbm5pbmdcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFBvbGljeUFzc2lnbm1lbnRQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWFzc2lnbm1lbnQtcGlubmVkXCIsXG4gICAgICAgIGFwaVZlcnNpb246IFwiMjAyMi0wNi0wMVwiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIlRlc3RBc3NpZ25tZW50XCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyMi0wNi0wMVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBwb2xpY3kgYXNzaWdubWVudCB3aXRoIGFsbCBvcHRpb25hbCBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBQb2xpY3lBc3NpZ25tZW50UHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50LWZ1bGxcIixcbiAgICAgICAgZGlzcGxheU5hbWU6IFwiVGVzdCBQb2xpY3kgQXNzaWdubWVudFwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJBIHRlc3QgcG9saWN5IGFzc2lnbm1lbnQgZm9yIHVuaXQgdGVzdGluZ1wiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgZW5mb3JjZW1lbnRNb2RlOiBcIkRlZmF1bHRcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIHRhZ05hbWU6IHtcbiAgICAgICAgICAgIHZhbHVlOiBcIkVudmlyb25tZW50XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICBhc3NpZ25lZEJ5OiBcImFkbWluQGV4YW1wbGUuY29tXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlkZW50aXR5OiB7XG4gICAgICAgICAgdHlwZTogXCJTeXN0ZW1Bc3NpZ25lZFwiLFxuICAgICAgICB9LFxuICAgICAgICBub3RTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy9leGNsdWRlZC1yZ1wiLFxuICAgICAgICBdLFxuICAgICAgICBub25Db21wbGlhbmNlTWVzc2FnZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtZXNzYWdlOiBcIlJlc291cmNlIG11c3QgY29tcGx5IHdpdGggcG9saWN5XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaWdub3JlQ2hhbmdlczogW1wibWV0YWRhdGFcIl0sXG4gICAgICAgIGVuYWJsZVZhbGlkYXRpb246IHRydWUsXG4gICAgICAgIGVuYWJsZU1pZ3JhdGlvbkFuYWx5c2lzOiB0cnVlLFxuICAgICAgICBlbmFibGVUcmFuc2Zvcm1hdGlvbjogdHJ1ZSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGFzc2lnbm1lbnQgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJUZXN0QXNzaWdubWVudFwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzLmRpc3BsYXlOYW1lKS50b0JlKFwiVGVzdCBQb2xpY3kgQXNzaWdubWVudFwiKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzLmRlc2NyaXB0aW9uKS50b0JlKFxuICAgICAgICBcIkEgdGVzdCBwb2xpY3kgYXNzaWdubWVudCBmb3IgdW5pdCB0ZXN0aW5nXCIsXG4gICAgICApO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucHJvcHMuZW5mb3JjZW1lbnRNb2RlKS50b0JlKFwiRGVmYXVsdFwiKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzLnBhcmFtZXRlcnMpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QoYXNzaWdubWVudC5wcm9wcy5tZXRhZGF0YSkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzLmlkZW50aXR5KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucHJvcHMubm90U2NvcGVzKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucHJvcHMubm9uQ29tcGxpYW5jZU1lc3NhZ2VzKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgdXNlIGRlZmF1bHQgbmFtZSB3aGVuIG5hbWUgaXMgbm90IHByb3ZpZGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBQb2xpY3lBc3NpZ25tZW50UHJvcHMgPSB7XG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBhc3NpZ25tZW50ID0gbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiVGVzdEFzc2lnbm1lbnRcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5uYW1lKS50b0JlKFwiVGVzdEFzc2lnbm1lbnRcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCByZXF1aXJlIHBvbGljeURlZmluaXRpb25JZCB0byBiZSBwcm92aWRlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogYW55ID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtYXNzaWdubWVudFwiLFxuICAgICAgICBzY29wZTogXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgIH07XG5cbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIlRlc3RBc3NpZ25tZW50XCIsIHByb3BzKTtcbiAgICAgIH0pLnRvVGhyb3coXCJSZXF1aXJlZCBwcm9wZXJ0eSAncG9saWN5RGVmaW5pdGlvbklkJyBpcyBtaXNzaW5nXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgcmVxdWlyZSBzY29wZSB0byBiZSBwcm92aWRlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogYW55ID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtYXNzaWdubWVudFwiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICB9O1xuXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJUZXN0QXNzaWdubWVudFwiLCBwcm9wcyk7XG4gICAgICB9KS50b1Rocm93KFwiUmVxdWlyZWQgcHJvcGVydHkgJ3Njb3BlJyBpcyBtaXNzaW5nXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkZyYW1ld29yayBJbnRlZ3JhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgcmVzb2x2ZSBsYXRlc3QgQVBJIHZlcnNpb24gYXV0b21hdGljYWxseVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhc3NpZ25tZW50ID0gbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiVGVzdEFzc2lnbm1lbnRcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtYXNzaWdubWVudFwiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjItMDYtMDFcIik7XG4gICAgICBleHBlY3QoYXNzaWdubWVudC5sYXRlc3RWZXJzaW9uKCkpLnRvQmUoXCIyMDIyLTA2LTAxXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBhbGwgcmVnaXN0ZXJlZCBBUEkgdmVyc2lvbnNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIlRlc3RBc3NpZ25tZW50XCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWFzc2lnbm1lbnRcIixcbiAgICAgICAgcG9saWN5RGVmaW5pdGlvbklkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Byb3ZpZGVycy9NaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lEZWZpbml0aW9ucy90ZXN0LXBvbGljeVwiLFxuICAgICAgICBzY29wZTogXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzdXBwb3J0ZWRWZXJzaW9ucyA9IGFzc2lnbm1lbnQuc3VwcG9ydGVkVmVyc2lvbnMoKTtcbiAgICAgIGV4cGVjdChzdXBwb3J0ZWRWZXJzaW9ucykudG9Db250YWluKFwiMjAyMi0wNi0wMVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHZhbGlkYXRlIHZlcnNpb24gc3VwcG9ydFwiLCAoKSA9PiB7XG4gICAgICAvLyBWYWxpZCB2ZXJzaW9uXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJWYWxpZFZlcnNpb25cIiwge1xuICAgICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50XCIsXG4gICAgICAgICAgcG9saWN5RGVmaW5pdGlvbklkOlxuICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgYXBpVmVyc2lvbjogXCIyMDIyLTA2LTAxXCIsXG4gICAgICAgIH0pO1xuICAgICAgfSkubm90LnRvVGhyb3coKTtcblxuICAgICAgLy8gSW52YWxpZCB2ZXJzaW9uXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJJbnZhbGlkVmVyc2lvblwiLCB7XG4gICAgICAgICAgbmFtZTogXCJ0ZXN0LWFzc2lnbm1lbnRcIixcbiAgICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgICBzY29wZTogXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjAtMDEtMDFcIixcbiAgICAgICAgfSk7XG4gICAgICB9KS50b1Rocm93KFwiVW5zdXBwb3J0ZWQgQVBJIHZlcnNpb24gJzIwMjAtMDEtMDEnXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgbG9hZCBjb3JyZWN0IHNjaGVtYSBmb3IgcmVzb2x2ZWQgdmVyc2lvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhc3NpZ25tZW50ID0gbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiVGVzdEFzc2lnbm1lbnRcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtYXNzaWdubWVudFwiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjItMDYtMDFcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5zY2hlbWEpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QoYXNzaWdubWVudC5zY2hlbWEucmVzb3VyY2VUeXBlKS50b0JlKFBPTElDWV9BU1NJR05NRU5UX1RZUEUpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQuc2NoZW1hLnZlcnNpb24pLnRvQmUoXCIyMDIyLTA2LTAxXCIpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQuc2NoZW1hLnByb3BlcnRpZXMpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBsb2FkIHZlcnNpb24gY29uZmlndXJhdGlvbiBjb3JyZWN0bHlcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIlRlc3RBc3NpZ25tZW50XCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWFzc2lnbm1lbnRcIixcbiAgICAgICAgcG9saWN5RGVmaW5pdGlvbklkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Byb3ZpZGVycy9NaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lEZWZpbml0aW9ucy90ZXN0LXBvbGljeVwiLFxuICAgICAgICBzY29wZTogXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC52ZXJzaW9uQ29uZmlnKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQudmVyc2lvbkNvbmZpZy52ZXJzaW9uKS50b0JlKFwiMjAyMi0wNi0wMVwiKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnZlcnNpb25Db25maWcuc3VwcG9ydExldmVsKS50b0JlKFxuICAgICAgICBWZXJzaW9uU3VwcG9ydExldmVsLkFDVElWRSxcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiUHJvcGVydHkgVmFsaWRhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgdmFsaWRhdGUgcHJvcGVydGllcyB3aGVuIHZhbGlkYXRpb24gaXMgZW5hYmxlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogUG9saWN5QXNzaWdubWVudFByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtYXNzaWdubWVudFwiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBlbmFibGVWYWxpZGF0aW9uOiB0cnVlLFxuICAgICAgfTtcblxuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiVGVzdEFzc2lnbm1lbnRcIiwgcHJvcHMpO1xuICAgICAgfSkubm90LnRvVGhyb3coKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhdmUgdmFsaWRhdGlvbiByZXN1bHRzIGZvciB2YWxpZCBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFzc2lnbm1lbnQgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJUZXN0QXNzaWdubWVudFwiLCB7XG4gICAgICAgIG5hbWU6IFwidmFsaWQtYXNzaWdubWVudFwiLFxuICAgICAgICBkaXNwbGF5TmFtZTogXCJWYWxpZCBBc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIGVuYWJsZVZhbGlkYXRpb246IHRydWUsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQudmFsaWRhdGlvblJlc3VsdCkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnZhbGlkYXRpb25SZXN1bHQhLnZhbGlkKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQudmFsaWRhdGlvblJlc3VsdCEuZXJyb3JzKS50b0hhdmVMZW5ndGgoMCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBza2lwIHZhbGlkYXRpb24gd2hlbiBkaXNhYmxlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhc3NpZ25tZW50ID0gbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiVGVzdEFzc2lnbm1lbnRcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtYXNzaWdubWVudFwiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBlbmFibGVWYWxpZGF0aW9uOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudCkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJNaWdyYXRpb24gQW5hbHlzaXNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHNraXAgbWlncmF0aW9uIGFuYWx5c2lzIGZvciBzaW5nbGUgdmVyc2lvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhc3NpZ25tZW50ID0gbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiVGVzdEFzc2lnbm1lbnRcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtYXNzaWdubWVudFwiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjItMDYtMDFcIixcbiAgICAgIH0pO1xuXG4gICAgICAvLyBTaW5jZSB0aGVyZSdzIG9ubHkgb25lIHZlcnNpb24sIG1pZ3JhdGlvbiBhbmFseXNpcyBzaG91bGQgYmUgc2tpcHBlZFxuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBza2lwIG1pZ3JhdGlvbiBhbmFseXNpcyB3aGVuIGRpc2FibGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFzc2lnbm1lbnQgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJUZXN0QXNzaWdubWVudFwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIGVuYWJsZU1pZ3JhdGlvbkFuYWx5c2lzOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5taWdyYXRpb25BbmFseXNpcykudG9CZVVuZGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlJlc291cmNlIENyZWF0aW9uIGFuZCBCb2R5XCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgY29ycmVjdCByZXNvdXJjZSBib2R5IHdpdGggbWluaW1hbCBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFzc2lnbm1lbnQgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJUZXN0QXNzaWdubWVudFwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChhc3NpZ25tZW50KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucHJvcHMucG9saWN5RGVmaW5pdGlvbklkKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucHJvcHMuc2NvcGUpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgY29ycmVjdCByZXNvdXJjZSBib2R5IHdpdGggYWxsIHByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIlRlc3RBc3NpZ25tZW50XCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWFzc2lnbm1lbnRcIixcbiAgICAgICAgZGlzcGxheU5hbWU6IFwiVGVzdCBBc3NpZ25tZW50XCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkEgdGVzdCBhc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIGVuZm9yY2VtZW50TW9kZTogXCJEb05vdEVuZm9yY2VcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIHRhZ05hbWU6IHtcbiAgICAgICAgICAgIHZhbHVlOiBcIkVudmlyb25tZW50XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICBhc3NpZ25lZEJ5OiBcImFkbWluQGV4YW1wbGUuY29tXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlkZW50aXR5OiB7XG4gICAgICAgICAgdHlwZTogXCJTeXN0ZW1Bc3NpZ25lZFwiLFxuICAgICAgICB9LFxuICAgICAgICBub3RTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy9leGNsdWRlZC1yZ1wiLFxuICAgICAgICBdLFxuICAgICAgICBub25Db21wbGlhbmNlTWVzc2FnZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtZXNzYWdlOiBcIlJlc291cmNlIG11c3QgY29tcGx5XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudCkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzLmRpc3BsYXlOYW1lKS50b0JlKFwiVGVzdCBBc3NpZ25tZW50XCIpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucHJvcHMuZW5mb3JjZW1lbnRNb2RlKS50b0JlKFwiRG9Ob3RFbmZvcmNlXCIpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucHJvcHMuaWRlbnRpdHkpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgVGVycmFmb3JtIG91dHB1dHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIlRlc3RBc3NpZ25tZW50XCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWFzc2lnbm1lbnQtb3V0cHV0c1wiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LmlkT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0bi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQubmFtZU91dHB1dCkudG9CZUluc3RhbmNlT2YoY2RrdG4uVGVycmFmb3JtT3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJFbmZvcmNlbWVudCBNb2RlIENvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHVzZSBEZWZhdWx0IGVuZm9yY2VtZW50IG1vZGUgYnkgZGVmYXVsdFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhc3NpZ25tZW50ID0gbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiRGVmYXVsdEVuZm9yY2VtZW50XCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWFzc2lnbm1lbnRcIixcbiAgICAgICAgcG9saWN5RGVmaW5pdGlvbklkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Byb3ZpZGVycy9NaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lEZWZpbml0aW9ucy90ZXN0LXBvbGljeVwiLFxuICAgICAgICBzY29wZTogXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5lbmZvcmNlbWVudE1vZGUpLnRvQmUoXCJEZWZhdWx0XCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBEb05vdEVuZm9yY2UgZW5mb3JjZW1lbnQgbW9kZVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhc3NpZ25tZW50ID0gbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiRG9Ob3RFbmZvcmNlTW9kZVwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIGVuZm9yY2VtZW50TW9kZTogXCJEb05vdEVuZm9yY2VcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5lbmZvcmNlbWVudE1vZGUpLnRvQmUoXCJEb05vdEVuZm9yY2VcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IGV4cGxpY2l0IERlZmF1bHQgZW5mb3JjZW1lbnQgbW9kZVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhc3NpZ25tZW50ID0gbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiRXhwbGljaXREZWZhdWx0XCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWFzc2lnbm1lbnRcIixcbiAgICAgICAgcG9saWN5RGVmaW5pdGlvbklkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Byb3ZpZGVycy9NaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lEZWZpbml0aW9ucy90ZXN0LXBvbGljeVwiLFxuICAgICAgICBzY29wZTogXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgZW5mb3JjZW1lbnRNb2RlOiBcIkRlZmF1bHRcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5lbmZvcmNlbWVudE1vZGUpLnRvQmUoXCJEZWZhdWx0XCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIklkZW50aXR5IENvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgU3lzdGVtQXNzaWduZWQgaWRlbnRpdHlcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIlN5c3RlbUlkZW50aXR5XCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWFzc2lnbm1lbnRcIixcbiAgICAgICAgcG9saWN5RGVmaW5pdGlvbklkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Byb3ZpZGVycy9NaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lEZWZpbml0aW9ucy90ZXN0LXBvbGljeVwiLFxuICAgICAgICBzY29wZTogXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgaWRlbnRpdHk6IHtcbiAgICAgICAgICB0eXBlOiBcIlN5c3RlbUFzc2lnbmVkXCIsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucHJvcHMuaWRlbnRpdHkpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QoYXNzaWdubWVudC5wcm9wcy5pZGVudGl0eSEudHlwZSkudG9CZShcIlN5c3RlbUFzc2lnbmVkXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBVc2VyQXNzaWduZWQgaWRlbnRpdHlcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIlVzZXJJZGVudGl0eVwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIGlkZW50aXR5OiB7XG4gICAgICAgICAgdHlwZTogXCJVc2VyQXNzaWduZWRcIixcbiAgICAgICAgICB1c2VyQXNzaWduZWRJZGVudGl0aWVzOiB7XG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk1hbmFnZWRJZGVudGl0eS91c2VyQXNzaWduZWRJZGVudGl0aWVzL2lkZW50aXR5XCI6XG4gICAgICAgICAgICAgIHt9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucHJvcHMuaWRlbnRpdHkpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QoYXNzaWdubWVudC5wcm9wcy5pZGVudGl0eSEudHlwZSkudG9CZShcIlVzZXJBc3NpZ25lZFwiKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzLmlkZW50aXR5IS51c2VyQXNzaWduZWRJZGVudGl0aWVzKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBOb25lIGlkZW50aXR5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFzc2lnbm1lbnQgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJOb0lkZW50aXR5XCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWFzc2lnbm1lbnRcIixcbiAgICAgICAgcG9saWN5RGVmaW5pdGlvbklkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Byb3ZpZGVycy9NaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lEZWZpbml0aW9ucy90ZXN0LXBvbGljeVwiLFxuICAgICAgICBzY29wZTogXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgaWRlbnRpdHk6IHtcbiAgICAgICAgICB0eXBlOiBcIk5vbmVcIixcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5wcm9wcy5pZGVudGl0eSkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzLmlkZW50aXR5IS50eXBlKS50b0JlKFwiTm9uZVwiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJQYXJhbWV0ZXJzIGFuZCBNZXRhZGF0YVwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBwb2xpY3kgcGFyYW1ldGVyc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhc3NpZ25tZW50ID0gbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiV2l0aFBhcmFtZXRlcnNcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtYXNzaWdubWVudFwiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgdGFnTmFtZToge1xuICAgICAgICAgICAgdmFsdWU6IFwiRW52aXJvbm1lbnRcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRhZ1ZhbHVlOiB7XG4gICAgICAgICAgICB2YWx1ZTogXCJQcm9kdWN0aW9uXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5wcm9wcy5wYXJhbWV0ZXJzKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucHJvcHMucGFyYW1ldGVycy50YWdOYW1lLnZhbHVlKS50b0JlKFwiRW52aXJvbm1lbnRcIik7XG4gICAgICBleHBlY3QoYXNzaWdubWVudC5wcm9wcy5wYXJhbWV0ZXJzLnRhZ1ZhbHVlLnZhbHVlKS50b0JlKFwiUHJvZHVjdGlvblwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgbWV0YWRhdGFcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIldpdGhNZXRhZGF0YVwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgYXNzaWduZWRCeTogXCJhZG1pbkBleGFtcGxlLmNvbVwiLFxuICAgICAgICAgIGFzc2lnbmVkRGF0ZTogXCIyMDI0LTAxLTAxXCIsXG4gICAgICAgICAgcGFyYW1ldGVyU2NvcGVzOiB7fSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5wcm9wcy5tZXRhZGF0YSkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzLm1ldGFkYXRhLmFzc2lnbmVkQnkpLnRvQmUoXCJhZG1pbkBleGFtcGxlLmNvbVwiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJOb3RTY29wZXMgYW5kIE5vbkNvbXBsaWFuY2VNZXNzYWdlc1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBub3RTY29wZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIldpdGhOb3RTY29wZXNcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtYXNzaWdubWVudFwiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBub3RTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy9leGNsdWRlZC1yZy0xXCIsXG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvZXhjbHVkZWQtcmctMlwiLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzLm5vdFNjb3BlcykudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzLm5vdFNjb3BlcykudG9IYXZlTGVuZ3RoKDIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBub25Db21wbGlhbmNlTWVzc2FnZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KFxuICAgICAgICBzdGFjayxcbiAgICAgICAgXCJXaXRoTm9uQ29tcGxpYW5jZU1lc3NhZ2VzXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcInRlc3QtYXNzaWdubWVudFwiLFxuICAgICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Byb3ZpZGVycy9NaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lEZWZpbml0aW9ucy90ZXN0LXBvbGljeVwiLFxuICAgICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIG5vbkNvbXBsaWFuY2VNZXNzYWdlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBtZXNzYWdlOiBcIlJlc291cmNlIG11c3QgaGF2ZSByZXF1aXJlZCB0YWdzXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBtZXNzYWdlOiBcIlJlc291cmNlIGxvY2F0aW9uIGlzIG5vdCBjb21wbGlhbnRcIixcbiAgICAgICAgICAgICAgcG9saWN5RGVmaW5pdGlvblJlZmVyZW5jZUlkOiBcImxvY2F0aW9uUG9saWN5XCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5wcm9wcy5ub25Db21wbGlhbmNlTWVzc2FnZXMpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QoYXNzaWdubWVudC5wcm9wcy5ub25Db21wbGlhbmNlTWVzc2FnZXMpLnRvSGF2ZUxlbmd0aCgyKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LnByb3BzLm5vbkNvbXBsaWFuY2VNZXNzYWdlcyFbMF0ubWVzc2FnZSkudG9CZShcbiAgICAgICAgXCJSZXNvdXJjZSBtdXN0IGhhdmUgcmVxdWlyZWQgdGFnc1wiLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJQdWJsaWMgTWV0aG9kcyBhbmQgUHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgbGV0IGFzc2lnbm1lbnQ6IFBvbGljeUFzc2lnbm1lbnQ7XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIGFzc2lnbm1lbnQgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJUZXN0QXNzaWdubWVudFwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50XCIsXG4gICAgICAgIGRpc3BsYXlOYW1lOiBcIlRlc3QgQXNzaWdubWVudFwiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgZW5mb3JjZW1lbnRNb2RlOiBcIkRlZmF1bHRcIixcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGF2ZSBjb3JyZWN0IGlkIGZvcm1hdFwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoYXNzaWdubWVudC5pZCkudG9NYXRjaCgvXlxcJFxcey4qXFwuaWRcXH0kLyk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYXZlIHJlc291cmNlSWQgcHJvcGVydHkgbWF0Y2hpbmcgaWRcIiwgKCkgPT4ge1xuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQucmVzb3VyY2VJZCkudG9CZShhc3NpZ25tZW50LmlkKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHJldHVybiBjb3JyZWN0IHBvbGljeURlZmluaXRpb25JZFwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoYXNzaWdubWVudC5wb2xpY3lEZWZpbml0aW9uSWQpLnRvQmUoXG4gICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Byb3ZpZGVycy9NaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lEZWZpbml0aW9ucy90ZXN0LXBvbGljeVwiLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHJldHVybiBjb3JyZWN0IHNjb3BlXCIsICgpID0+IHtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50LmFzc2lnbm1lbnRTY29wZSkudG9CZShcbiAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHJldHVybiBjb3JyZWN0IGVuZm9yY2VtZW50TW9kZVwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoYXNzaWdubWVudC5lbmZvcmNlbWVudE1vZGUpLnRvQmUoXCJEZWZhdWx0XCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIklnbm9yZSBDaGFuZ2VzIENvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGFwcGx5IGlnbm9yZSBjaGFuZ2VzIGxpZmVjeWNsZSBydWxlc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhc3NpZ25tZW50ID0gbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiSWdub3JlQ2hhbmdlc1wiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFtcIm1ldGFkYXRhXCIsIFwiZGVzY3JpcHRpb25cIl0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQpLnRvQmVJbnN0YW5jZU9mKFBvbGljeUFzc2lnbm1lbnQpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIGVtcHR5IGlnbm9yZSBjaGFuZ2VzIGFycmF5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFzc2lnbm1lbnQgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJFbXB0eUlnbm9yZVwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFtdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChhc3NpZ25tZW50KS50b0JlSW5zdGFuY2VPZihQb2xpY3lBc3NpZ25tZW50KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJFcnJvciBIYW5kbGluZ1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIGludmFsaWQgQVBJIHZlcnNpb25zIGdyYWNlZnVsbHlcIiwgKCkgPT4ge1xuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiSW52YWxpZEFQSVwiLCB7XG4gICAgICAgICAgbmFtZTogXCJ0ZXN0LWFzc2lnbm1lbnRcIixcbiAgICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgICBzY29wZTogXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgICBhcGlWZXJzaW9uOiBcImludmFsaWQtdmVyc2lvblwiLFxuICAgICAgICB9KTtcbiAgICAgIH0pLnRvVGhyb3coXCJVbnN1cHBvcnRlZCBBUEkgdmVyc2lvbiAnaW52YWxpZC12ZXJzaW9uJ1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhbmRsZSB2YWxpZGF0aW9uIGVycm9ycyB3aGVuIHZhbGlkYXRpb24gaXMgZW5hYmxlZFwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJWYWxpZGF0aW9uRXJyb3JcIiwge1xuICAgICAgICAgIG5hbWU6IFwidGVzdC1hc3NpZ25tZW50XCIsXG4gICAgICAgICAgcG9saWN5RGVmaW5pdGlvbklkOiB1bmRlZmluZWQgYXMgYW55LCAvLyBNaXNzaW5nIHJlcXVpcmVkIHBvbGljeURlZmluaXRpb25JZFxuICAgICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIGVuYWJsZVZhbGlkYXRpb246IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfSkudG9UaHJvdyhcIlJlcXVpcmVkIHByb3BlcnR5ICdwb2xpY3lEZWZpbml0aW9uSWQnIGlzIG1pc3NpbmdcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYW5kbGUgc2NoZW1hIHJlZ2lzdHJhdGlvbiBlcnJvcnMgZ3JhY2VmdWxseVwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJTY2hlbWFUZXN0XCIsIHtcbiAgICAgICAgICBuYW1lOiBcInRlc3QtYXNzaWdubWVudFwiLFxuICAgICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Byb3ZpZGVycy9NaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lEZWZpbml0aW9ucy90ZXN0LXBvbGljeVwiLFxuICAgICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICB9KTtcbiAgICAgIH0pLm5vdC50b1Rocm93KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiSlNJSSBDb21wbGlhbmNlXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBoYXZlIEpTSUktY29tcGxpYW50IGNvbnN0cnVjdG9yXCIsICgpID0+IHtcbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIkpzaWlUZXN0XCIsIHtcbiAgICAgICAgICBuYW1lOiBcImpzaWktdGVzdFwiLFxuICAgICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Byb3ZpZGVycy9NaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lEZWZpbml0aW9ucy90ZXN0LXBvbGljeVwiLFxuICAgICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICB9KTtcbiAgICAgIH0pLm5vdC50b1Rocm93KCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYXZlIEpTSUktY29tcGxpYW50IHByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIkpzaWlQcm9wc1wiLCB7XG4gICAgICAgIG5hbWU6IFwianNpaS1wcm9wc1wiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh0eXBlb2YgYXNzaWdubWVudC5pZCkudG9CZShcInN0cmluZ1wiKTtcbiAgICAgIGV4cGVjdCh0eXBlb2YgYXNzaWdubWVudC5uYW1lKS50b0JlKFwic3RyaW5nXCIpO1xuICAgICAgZXhwZWN0KHR5cGVvZiBhc3NpZ25tZW50LnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcInN0cmluZ1wiKTtcbiAgICAgIGV4cGVjdCh0eXBlb2YgYXNzaWdubWVudC5wb2xpY3lEZWZpbml0aW9uSWQpLnRvQmUoXCJzdHJpbmdcIik7XG4gICAgICBleHBlY3QodHlwZW9mIGFzc2lnbm1lbnQuYXNzaWdubWVudFNjb3BlKS50b0JlKFwic3RyaW5nXCIpO1xuICAgICAgZXhwZWN0KHR5cGVvZiBhc3NpZ25tZW50LmVuZm9yY2VtZW50TW9kZSkudG9CZShcInN0cmluZ1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhdmUgSlNJSS1jb21wbGlhbnQgbWV0aG9kc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhc3NpZ25tZW50ID0gbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiSnNpaU1ldGhvZHNcIiwge1xuICAgICAgICBuYW1lOiBcImpzaWktbWV0aG9kc1wiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh0eXBlb2YgYXNzaWdubWVudC5sYXRlc3RWZXJzaW9uKS50b0JlKFwiZnVuY3Rpb25cIik7XG4gICAgICBleHBlY3QodHlwZW9mIGFzc2lnbm1lbnQuc3VwcG9ydGVkVmVyc2lvbnMpLnRvQmUoXCJmdW5jdGlvblwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHNlcmlhbGl6ZSBjb21wbGV4IG9iamVjdHMgY29ycmVjdGx5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFzc2lnbm1lbnQgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJKc2lpU2VyaWFsaXphdGlvblwiLCB7XG4gICAgICAgIG5hbWU6IFwianNpaS1zZXJpYWxpemF0aW9uXCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICB0ZXN0UGFyYW06IHtcbiAgICAgICAgICAgIHZhbHVlOiBcInRlc3RcIixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCgoKSA9PiBKU09OLnN0cmluZ2lmeShhc3NpZ25tZW50LnZhbGlkYXRpb25SZXN1bHQpKS5ub3QudG9UaHJvdygpO1xuICAgICAgZXhwZWN0KCgpID0+IEpTT04uc3RyaW5naWZ5KGFzc2lnbm1lbnQuc2NoZW1hKSkubm90LnRvVGhyb3coKTtcbiAgICAgIGV4cGVjdCgoKSA9PiBKU09OLnN0cmluZ2lmeShhc3NpZ25tZW50LnZlcnNpb25Db25maWcpKS5ub3QudG9UaHJvdygpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkNESyBUZXJyYWZvcm0gSW50ZWdyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHN5bnRoZXNpemUgdG8gdmFsaWQgVGVycmFmb3JtIGNvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgICAgbmV3IFBvbGljeUFzc2lnbm1lbnQoc3RhY2ssIFwiU3ludGhUZXN0XCIsIHtcbiAgICAgICAgbmFtZTogXCJzeW50aC10ZXN0XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9CZURlZmluZWQoKTtcblxuICAgICAgY29uc3Qgc3RhY2tDb25maWcgPSBKU09OLnBhcnNlKHN5bnRoZXNpemVkKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5yZXNvdXJjZSkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHdvcmsgaW4gY29tcGxleCBDREsgY29uc3RydWN0c1wiLCAoKSA9PiB7XG4gICAgICBjbGFzcyBDb21wbGV4Q29uc3RydWN0IGV4dGVuZHMgY2RrdG4uVGVycmFmb3JtU3RhY2sge1xuICAgICAgICBjb25zdHJ1Y3RvcihzY29wZTogY2RrdG4uQXBwLCBpZDogc3RyaW5nKSB7XG4gICAgICAgICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgICAgICAgIGNvbnN0IGFzc2lnbm1lbnQxID0gbmV3IFBvbGljeUFzc2lnbm1lbnQodGhpcywgXCJBc3NpZ25tZW50MVwiLCB7XG4gICAgICAgICAgICBuYW1lOiBcImFzc2lnbm1lbnQtMVwiLFxuICAgICAgICAgICAgZGlzcGxheU5hbWU6IFwiRmlyc3QgQXNzaWdubWVudFwiLFxuICAgICAgICAgICAgcG9saWN5RGVmaW5pdGlvbklkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvcG9saWN5LTFcIixcbiAgICAgICAgICAgIHNjb3BlOiBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3QgYXNzaWdubWVudDIgPSBuZXcgUG9saWN5QXNzaWdubWVudCh0aGlzLCBcIkFzc2lnbm1lbnQyXCIsIHtcbiAgICAgICAgICAgIG5hbWU6IFwiYXNzaWdubWVudC0yXCIsXG4gICAgICAgICAgICBkaXNwbGF5TmFtZTogXCJTZWNvbmQgQXNzaWdubWVudFwiLFxuICAgICAgICAgICAgcG9saWN5RGVmaW5pdGlvbklkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvcG9saWN5LTJcIixcbiAgICAgICAgICAgIHNjb3BlOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjItMDYtMDFcIixcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG5ldyBjZGt0bi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJBc3NpZ25tZW50MUlkXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiBhc3NpZ25tZW50MS5pZCxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG5ldyBjZGt0bi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJBc3NpZ25tZW50MklkXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiBhc3NpZ25tZW50Mi5pZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgQ29tcGxleENvbnN0cnVjdChhcHAsIFwiQ29tcGxleFN0YWNrXCIpO1xuICAgICAgfSkubm90LnRvVGhyb3coKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhbmRsZSBtdWx0aXBsZSBwb2xpY3kgYXNzaWdubWVudHMgaW4gdGhlIHNhbWUgc3RhY2tcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudDEgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJBc3NpZ25tZW50MVwiLCB7XG4gICAgICAgIG5hbWU6IFwiYXNzaWdubWVudC0xXCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvcG9saWN5LTFcIixcbiAgICAgICAgc2NvcGU6IFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgYXNzaWdubWVudDIgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJBc3NpZ25tZW50MlwiLCB7XG4gICAgICAgIG5hbWU6IFwiYXNzaWdubWVudC0yXCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvcG9saWN5LTJcIixcbiAgICAgICAgc2NvcGU6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjItMDYtMDFcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudDEucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyMi0wNi0wMVwiKTtcbiAgICAgIGV4cGVjdChhc3NpZ25tZW50Mi5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDIyLTA2LTAxXCIpO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlNjb3BlIENvbmZpZ3VyYXRpb25zXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBzdXBwb3J0IG1hbmFnZW1lbnQgZ3JvdXAgc2NvcGVcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIk1hbmFnZW1lbnRHcm91cFNjb3BlXCIsIHtcbiAgICAgICAgbmFtZTogXCJtZy1hc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6IFwiL3Byb3ZpZGVycy9NaWNyb3NvZnQuTWFuYWdlbWVudC9tYW5hZ2VtZW50R3JvdXBzL215LW1nXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQuYXNzaWdubWVudFNjb3BlKS50b0NvbnRhaW4oXG4gICAgICAgIFwiL3Byb3ZpZGVycy9NaWNyb3NvZnQuTWFuYWdlbWVudC9tYW5hZ2VtZW50R3JvdXBzL1wiLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgc3Vic2NyaXB0aW9uIHNjb3BlXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFzc2lnbm1lbnQgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJTdWJzY3JpcHRpb25TY29wZVwiLCB7XG4gICAgICAgIG5hbWU6IFwic3Vic2NyaXB0aW9uLWFzc2lnbm1lbnRcIixcbiAgICAgICAgcG9saWN5RGVmaW5pdGlvbklkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Byb3ZpZGVycy9NaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lEZWZpbml0aW9ucy90ZXN0LXBvbGljeVwiLFxuICAgICAgICBzY29wZTogXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5hc3NpZ25tZW50U2NvcGUpLnRvQ29udGFpbihcIi9zdWJzY3JpcHRpb25zL1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgcmVzb3VyY2UgZ3JvdXAgc2NvcGVcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXNzaWdubWVudCA9IG5ldyBQb2xpY3lBc3NpZ25tZW50KHN0YWNrLCBcIlJlc291cmNlR3JvdXBTY29wZVwiLCB7XG4gICAgICAgIG5hbWU6IFwicmctYXNzaWdubWVudFwiLFxuICAgICAgICBwb2xpY3lEZWZpbml0aW9uSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeURlZmluaXRpb25zL3Rlc3QtcG9saWN5XCIsXG4gICAgICAgIHNjb3BlOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoYXNzaWdubWVudC5hc3NpZ25tZW50U2NvcGUpLnRvQ29udGFpbihcIi9yZXNvdXJjZUdyb3Vwcy9cIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IHJlc291cmNlIHNjb3BlXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFzc2lnbm1lbnQgPSBuZXcgUG9saWN5QXNzaWdubWVudChzdGFjaywgXCJSZXNvdXJjZVNjb3BlXCIsIHtcbiAgICAgICAgbmFtZTogXCJyZXNvdXJjZS1hc3NpZ25tZW50XCIsXG4gICAgICAgIHBvbGljeURlZmluaXRpb25JZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5RGVmaW5pdGlvbnMvdGVzdC1wb2xpY3lcIixcbiAgICAgICAgc2NvcGU6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZy9wcm92aWRlcnMvTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3Rlc3RzdG9yYWdlXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGFzc2lnbm1lbnQuYXNzaWdubWVudFNjb3BlKS50b0NvbnRhaW4oXCIvcHJvdmlkZXJzL1wiKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -15,7 +15,7 @@
15
15
  * - Support for custom policy rules and parameters
16
16
  * - JSII compliance for multi-language support
17
17
  */
18
- import * as cdktf from "cdktf";
18
+ import * as cdktn from "cdktn";
19
19
  import { Construct } from "constructs";
20
20
  import { AzapiResource, AzapiResourceProps } from "../../core-azure/lib/azapi/azapi-resource";
21
21
  import { ApiSchema } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
@@ -233,8 +233,8 @@ export declare class PolicyDefinition extends AzapiResource {
233
233
  * The input properties for this Policy Definition instance
234
234
  */
235
235
  readonly props: PolicyDefinitionProps;
236
- readonly idOutput: cdktf.TerraformOutput;
237
- readonly nameOutput: cdktf.TerraformOutput;
236
+ readonly idOutput: cdktn.TerraformOutput;
237
+ readonly nameOutput: cdktn.TerraformOutput;
238
238
  /**
239
239
  * Creates a new Azure Policy Definition using the VersionedAzapiResource framework
240
240
  *