@microsoft/terraform-cdk-constructs 0.0.3-pre.7 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (970) hide show
  1. package/.devcontainer/devcontainer.json +2 -2
  2. package/.jsii +22878 -10724
  3. package/API.md +25087 -9636
  4. package/LICENSE +16 -18
  5. package/README.md +147 -72
  6. package/cdktf.json +1 -1
  7. package/docs/ARCHITECTURE.md +836 -0
  8. package/docs/azapi-testing-architecture.md +482 -0
  9. package/docs/testing.md +39 -137
  10. package/docs/versioning-and-migrations-user-guide.md +409 -0
  11. package/go.mod +12 -12
  12. package/go.sum +27 -23
  13. package/lib/azure-resourcegroup/index.d.ts +37 -0
  14. package/lib/azure-resourcegroup/index.js +39 -1
  15. package/lib/azure-resourcegroup/lib/index.d.ts +44 -0
  16. package/lib/azure-resourcegroup/lib/index.js +43 -1
  17. package/lib/azure-resourcegroup/lib/resource-group-schemas.d.ts +40 -0
  18. package/lib/azure-resourcegroup/lib/resource-group-schemas.js +243 -0
  19. package/lib/azure-resourcegroup/lib/resource-group.d.ts +170 -46
  20. package/lib/azure-resourcegroup/lib/resource-group.js +222 -56
  21. package/lib/azure-resourcegroup/test/resource-group.integ.d.ts +9 -0
  22. package/lib/azure-resourcegroup/test/resource-group.integ.js +60 -0
  23. package/lib/azure-resourcegroup/test/resource-group.spec.d.ts +9 -0
  24. package/lib/azure-resourcegroup/test/resource-group.spec.js +554 -0
  25. package/lib/azure-storageaccount/index.d.ts +19 -0
  26. package/lib/azure-storageaccount/index.js +20 -1
  27. package/lib/azure-storageaccount/lib/index.d.ts +8 -5
  28. package/lib/azure-storageaccount/lib/index.js +9 -6
  29. package/lib/azure-storageaccount/lib/storage-account-schemas.d.ts +40 -0
  30. package/lib/azure-storageaccount/lib/storage-account-schemas.js +378 -0
  31. package/lib/azure-storageaccount/lib/storage-account.d.ts +311 -0
  32. package/lib/azure-storageaccount/lib/storage-account.js +229 -0
  33. package/lib/azure-storageaccount/test/storage-account.integ.d.ts +9 -0
  34. package/lib/azure-storageaccount/test/storage-account.integ.js +72 -0
  35. package/lib/azure-storageaccount/test/storage-account.spec.d.ts +4 -0
  36. package/lib/azure-storageaccount/test/storage-account.spec.js +315 -0
  37. package/lib/core-azure/lib/azapi/azapi-exports.d.ts +16 -0
  38. package/lib/core-azure/lib/azapi/azapi-exports.js +38 -0
  39. package/lib/core-azure/lib/azapi/azapi-resource.d.ts +413 -0
  40. package/lib/core-azure/lib/azapi/azapi-resource.js +468 -0
  41. package/lib/core-azure/lib/azapi/azapi-resource.spec.d.ts +7 -0
  42. package/lib/core-azure/lib/azapi/azapi-resource.spec.js +545 -0
  43. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.d.ts +62 -0
  44. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +161 -0
  45. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.d.ts +327 -0
  46. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +521 -0
  47. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.d.ts +331 -0
  48. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.js +436 -0
  49. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.d.ts +116 -0
  50. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.js +213 -0
  51. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.d.ts +272 -0
  52. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.js +368 -0
  53. package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.d.ts +505 -0
  54. package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.js +620 -0
  55. package/lib/core-azure/lib/azapi/providers-azapi/index.d.ts +10 -0
  56. package/lib/core-azure/lib/azapi/providers-azapi/index.js +15 -0
  57. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.d.ts +435 -0
  58. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +584 -0
  59. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.d.ts +675 -0
  60. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +856 -0
  61. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.d.ts +387 -0
  62. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +531 -0
  63. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.d.ts +437 -0
  64. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +589 -0
  65. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.d.ts +215 -0
  66. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +565 -0
  67. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.spec.d.ts +7 -0
  68. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.spec.js +630 -0
  69. package/lib/core-azure/lib/index.d.ts +18 -3
  70. package/lib/core-azure/lib/index.js +24 -4
  71. package/lib/core-azure/lib/version-manager/api-version-manager.d.ts +253 -0
  72. package/lib/core-azure/lib/version-manager/api-version-manager.js +509 -0
  73. package/lib/core-azure/lib/version-manager/api-version-manager.spec.d.ts +7 -0
  74. package/lib/core-azure/lib/version-manager/api-version-manager.spec.js +510 -0
  75. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.d.ts +669 -0
  76. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +202 -0
  77. package/lib/core-azure/lib/version-manager/version-manager.d.ts +9 -0
  78. package/lib/core-azure/lib/version-manager/version-manager.js +23 -0
  79. package/lib/index.d.ts +20 -16
  80. package/lib/index.js +41 -18
  81. package/lib/testing/index.d.ts +33 -0
  82. package/lib/testing/index.js +238 -2
  83. package/lib/util/azureTenantIdHelpers.js +3 -4
  84. package/lib/util/randomName.js +2 -3
  85. package/package.json +53 -40
  86. package/cdktf.out/manifest.json +0 -13
  87. package/cdktf.out/stacks/testAzureActionGroup/cdk.tf.json +0 -111
  88. package/cdktf.out/stacks/testAzureApplicationGateway/cdk.tf.json +0 -588
  89. package/cdktf.out/stacks/testAzureApplicationInsights/cdk.tf.json +0 -245
  90. package/cdktf.out/stacks/testAzureContainerRegistry/cdk.tf.json +0 -179
  91. package/cdktf.out/stacks/testAzureEventhub/cdk.tf.json +0 -236
  92. package/cdktf.out/stacks/testAzureKeyVault/cdk.tf.json +0 -436
  93. package/cdktf.out/stacks/testAzureKubernetesCluster/cdk.tf.json +0 -152
  94. package/cdktf.out/stacks/testAzureKusto/cdk.tf.json +0 -209
  95. package/cdktf.out/stacks/testAzureLinuxFunctionApp/cdk.tf.json +0 -439
  96. package/cdktf.out/stacks/testAzureLinuxVirtualMachineExample/cdk.tf.json +0 -283
  97. package/cdktf.out/stacks/testAzureLinuxVirtualMachineScaleSetExample/cdk.tf.json +0 -261
  98. package/cdktf.out/stacks/testAzureLogAnalytics/cdk.tf.json +0 -309
  99. package/cdktf.out/stacks/testAzureMetricAlert/cdk.tf.json +0 -161
  100. package/cdktf.out/stacks/testAzureNetworkSecurityGroup/cdk.tf.json +0 -271
  101. package/cdktf.out/stacks/testAzureQueryRuleAlert/cdk.tf.json +0 -122
  102. package/cdktf.out/stacks/testAzureResourceGroup/cdk.tf.json +0 -88
  103. package/cdktf.out/stacks/testAzureStorageAccount/cdk.tf.json +0 -339
  104. package/cdktf.out/stacks/testAzureVirtualNetwork/cdk.tf.json +0 -264
  105. package/cdktf.out/stacks/testAzureWindowVirtualMachineScaleSetExample/cdk.tf.json +0 -261
  106. package/cdktf.out/stacks/testAzureWindowsVirtualMachineExample/cdk.tf.json +0 -280
  107. package/cdktf.out/stacks/testExampleAzureResource/cdk.tf.json +0 -167
  108. package/lib/azure-actiongroup/index.d.ts +0 -1
  109. package/lib/azure-actiongroup/index.js +0 -18
  110. package/lib/azure-actiongroup/lib/actiongroup.d.ts +0 -49
  111. package/lib/azure-actiongroup/lib/actiongroup.js +0 -85
  112. package/lib/azure-actiongroup/lib/index.d.ts +0 -1
  113. package/lib/azure-actiongroup/lib/index.js +0 -18
  114. package/lib/azure-actiongroup/model/action-group-props.d.ts +0 -47
  115. package/lib/azure-actiongroup/model/action-group-props.js +0 -3
  116. package/lib/azure-actiongroup/model/arm-role-receiver-props.d.ts +0 -20
  117. package/lib/azure-actiongroup/model/arm-role-receiver-props.js +0 -3
  118. package/lib/azure-actiongroup/model/azure-app-push-receiver-props.d.ts +0 -14
  119. package/lib/azure-actiongroup/model/azure-app-push-receiver-props.js +0 -3
  120. package/lib/azure-actiongroup/model/email-receiver-props.d.ts +0 -19
  121. package/lib/azure-actiongroup/model/email-receiver-props.js +0 -3
  122. package/lib/azure-actiongroup/model/eventhub-receiver-props.d.ts +0 -23
  123. package/lib/azure-actiongroup/model/eventhub-receiver-props.js +0 -3
  124. package/lib/azure-actiongroup/model/function.d.ts +0 -40
  125. package/lib/azure-actiongroup/model/function.js +0 -118
  126. package/lib/azure-actiongroup/model/index.d.ts +0 -10
  127. package/lib/azure-actiongroup/model/index.js +0 -27
  128. package/lib/azure-actiongroup/model/logic-app-receiver-props.d.ts +0 -23
  129. package/lib/azure-actiongroup/model/logic-app-receiver-props.js +0 -3
  130. package/lib/azure-actiongroup/model/sms-receiver-props.d.ts +0 -18
  131. package/lib/azure-actiongroup/model/sms-receiver-props.js +0 -3
  132. package/lib/azure-actiongroup/model/voice-receiver-props.d.ts +0 -18
  133. package/lib/azure-actiongroup/model/voice-receiver-props.js +0 -3
  134. package/lib/azure-actiongroup/model/webhook-receiver-props.d.ts +0 -18
  135. package/lib/azure-actiongroup/model/webhook-receiver-props.js +0 -3
  136. package/lib/azure-actiongroup/test/AzureActionGroup.spec.d.ts +0 -1
  137. package/lib/azure-actiongroup/test/AzureActionGroup.spec.js +0 -294
  138. package/lib/azure-actiongroup/test/ExampleAzureActionGroup.d.ts +0 -5
  139. package/lib/azure-actiongroup/test/ExampleAzureActionGroup.js +0 -66
  140. package/lib/azure-applicationgateway/index.d.ts +0 -1
  141. package/lib/azure-applicationgateway/index.js +0 -18
  142. package/lib/azure-applicationgateway/lib/gateway.d.ts +0 -248
  143. package/lib/azure-applicationgateway/lib/gateway.js +0 -199
  144. package/lib/azure-applicationgateway/lib/index.d.ts +0 -1
  145. package/lib/azure-applicationgateway/lib/index.js +0 -18
  146. package/lib/azure-applicationgateway/test/AzureApplicationGateway.spec.d.ts +0 -1
  147. package/lib/azure-applicationgateway/test/AzureApplicationGateway.spec.js +0 -106
  148. package/lib/azure-applicationgateway/test/ExampleAzureApplicationGateway.d.ts +0 -5
  149. package/lib/azure-applicationgateway/test/ExampleAzureApplicationGateway.js +0 -267
  150. package/lib/azure-applicationinsights/index.d.ts +0 -1
  151. package/lib/azure-applicationinsights/index.js +0 -18
  152. package/lib/azure-applicationinsights/lib/appinsights.d.ts +0 -110
  153. package/lib/azure-applicationinsights/lib/appinsights.js +0 -134
  154. package/lib/azure-applicationinsights/lib/index.d.ts +0 -1
  155. package/lib/azure-applicationinsights/lib/index.js +0 -18
  156. package/lib/azure-applicationinsights/test/AzureAppInsights.spec.d.ts +0 -1
  157. package/lib/azure-applicationinsights/test/AzureAppInsights.spec.js +0 -55
  158. package/lib/azure-applicationinsights/test/ExampleAzureApplicationInsights.d.ts +0 -5
  159. package/lib/azure-applicationinsights/test/ExampleAzureApplicationInsights.js +0 -87
  160. package/lib/azure-containerregistry/index.d.ts +0 -1
  161. package/lib/azure-containerregistry/index.js +0 -18
  162. package/lib/azure-containerregistry/lib/index.d.ts +0 -1
  163. package/lib/azure-containerregistry/lib/index.js +0 -18
  164. package/lib/azure-containerregistry/lib/registry.d.ts +0 -70
  165. package/lib/azure-containerregistry/lib/registry.js +0 -76
  166. package/lib/azure-containerregistry/test/AzureContainerRegistry.spec.d.ts +0 -1
  167. package/lib/azure-containerregistry/test/AzureContainerRegistry.spec.js +0 -50
  168. package/lib/azure-containerregistry/test/ExampleAzureContainerRegistry.d.ts +0 -5
  169. package/lib/azure-containerregistry/test/ExampleAzureContainerRegistry.js +0 -57
  170. package/lib/azure-datalake/index.d.ts +0 -1
  171. package/lib/azure-datalake/index.js +0 -18
  172. package/lib/azure-datalake/lib/datalake.d.ts +0 -64
  173. package/lib/azure-datalake/lib/datalake.js +0 -92
  174. package/lib/azure-datalake/lib/filesystem.d.ts +0 -70
  175. package/lib/azure-datalake/lib/filesystem.js +0 -83
  176. package/lib/azure-datalake/lib/index.d.ts +0 -3
  177. package/lib/azure-datalake/lib/index.js +0 -20
  178. package/lib/azure-datalake/lib/path.d.ts +0 -49
  179. package/lib/azure-datalake/lib/path.js +0 -51
  180. package/lib/azure-eventhub/index.d.ts +0 -1
  181. package/lib/azure-eventhub/index.js +0 -18
  182. package/lib/azure-eventhub/lib/authorization.d.ts +0 -58
  183. package/lib/azure-eventhub/lib/authorization.js +0 -84
  184. package/lib/azure-eventhub/lib/cluster.d.ts +0 -56
  185. package/lib/azure-eventhub/lib/cluster.js +0 -64
  186. package/lib/azure-eventhub/lib/consumer.d.ts +0 -54
  187. package/lib/azure-eventhub/lib/consumer.js +0 -59
  188. package/lib/azure-eventhub/lib/index.d.ts +0 -6
  189. package/lib/azure-eventhub/lib/index.js +0 -23
  190. package/lib/azure-eventhub/lib/instance.d.ts +0 -164
  191. package/lib/azure-eventhub/lib/instance.js +0 -184
  192. package/lib/azure-eventhub/lib/kusto-connection.d.ts +0 -109
  193. package/lib/azure-eventhub/lib/kusto-connection.js +0 -76
  194. package/lib/azure-eventhub/lib/namespace.d.ts +0 -151
  195. package/lib/azure-eventhub/lib/namespace.js +0 -131
  196. package/lib/azure-eventhub/test/AzureEventhub.spec.d.ts +0 -1
  197. package/lib/azure-eventhub/test/AzureEventhub.spec.js +0 -56
  198. package/lib/azure-eventhub/test/ExampleAzureEventhub.d.ts +0 -5
  199. package/lib/azure-eventhub/test/ExampleAzureEventhub.js +0 -72
  200. package/lib/azure-functionapp/index.d.ts +0 -1
  201. package/lib/azure-functionapp/index.js +0 -18
  202. package/lib/azure-functionapp/lib/functionapplinux.d.ts +0 -211
  203. package/lib/azure-functionapp/lib/functionapplinux.js +0 -141
  204. package/lib/azure-functionapp/lib/index.d.ts +0 -1
  205. package/lib/azure-functionapp/lib/index.js +0 -18
  206. package/lib/azure-functionapp/serviceplanskus.d.ts +0 -70
  207. package/lib/azure-functionapp/serviceplanskus.js +0 -81
  208. package/lib/azure-functionapp/test/AzureLinuxFunctionApp.spec.d.ts +0 -1
  209. package/lib/azure-functionapp/test/AzureLinuxFunctionApp.spec.js +0 -48
  210. package/lib/azure-functionapp/test/ExampleAzureLinuxFunctionApp.d.ts +0 -5
  211. package/lib/azure-functionapp/test/ExampleAzureLinuxFunctionApp.js +0 -123
  212. package/lib/azure-keyvault/index.d.ts +0 -1
  213. package/lib/azure-keyvault/index.js +0 -18
  214. package/lib/azure-keyvault/lib/certificate.d.ts +0 -133
  215. package/lib/azure-keyvault/lib/certificate.js +0 -146
  216. package/lib/azure-keyvault/lib/index.d.ts +0 -5
  217. package/lib/azure-keyvault/lib/index.js +0 -22
  218. package/lib/azure-keyvault/lib/key.d.ts +0 -72
  219. package/lib/azure-keyvault/lib/key.js +0 -69
  220. package/lib/azure-keyvault/lib/policy.d.ts +0 -76
  221. package/lib/azure-keyvault/lib/policy.js +0 -56
  222. package/lib/azure-keyvault/lib/secret.d.ts +0 -70
  223. package/lib/azure-keyvault/lib/secret.js +0 -64
  224. package/lib/azure-keyvault/lib/vault.d.ts +0 -282
  225. package/lib/azure-keyvault/lib/vault.js +0 -392
  226. package/lib/azure-keyvault/test/AzureKeyVault.spec.d.ts +0 -1
  227. package/lib/azure-keyvault/test/AzureKeyVault.spec.js +0 -63
  228. package/lib/azure-keyvault/test/ExampleAzureKeyVault.d.ts +0 -5
  229. package/lib/azure-keyvault/test/ExampleAzureKeyVault.js +0 -112
  230. package/lib/azure-kubernetes/index.d.ts +0 -1
  231. package/lib/azure-kubernetes/index.js +0 -18
  232. package/lib/azure-kubernetes/lib/cluster.d.ts +0 -93
  233. package/lib/azure-kubernetes/lib/cluster.js +0 -63
  234. package/lib/azure-kubernetes/lib/index.d.ts +0 -1
  235. package/lib/azure-kubernetes/lib/index.js +0 -18
  236. package/lib/azure-kubernetes/test/AzureKubernetesCluster.spec.d.ts +0 -1
  237. package/lib/azure-kubernetes/test/AzureKubernetesCluster.spec.js +0 -56
  238. package/lib/azure-kubernetes/test/ExampleAzureKubernetesCluster.d.ts +0 -5
  239. package/lib/azure-kubernetes/test/ExampleAzureKubernetesCluster.js +0 -65
  240. package/lib/azure-kusto/index.d.ts +0 -1
  241. package/lib/azure-kusto/index.js +0 -18
  242. package/lib/azure-kusto/lib/cluster.d.ts +0 -136
  243. package/lib/azure-kusto/lib/cluster.js +0 -138
  244. package/lib/azure-kusto/lib/compute-specification.d.ts +0 -71
  245. package/lib/azure-kusto/lib/compute-specification.js +0 -651
  246. package/lib/azure-kusto/lib/database.d.ts +0 -162
  247. package/lib/azure-kusto/lib/database.js +0 -180
  248. package/lib/azure-kusto/lib/index.d.ts +0 -3
  249. package/lib/azure-kusto/lib/index.js +0 -20
  250. package/lib/azure-kusto/test/AzureKusto.spec.d.ts +0 -1
  251. package/lib/azure-kusto/test/AzureKusto.spec.js +0 -50
  252. package/lib/azure-kusto/test/ExampleAzureKusto.d.ts +0 -5
  253. package/lib/azure-kusto/test/ExampleAzureKusto.js +0 -71
  254. package/lib/azure-loganalytics/index.d.ts +0 -1
  255. package/lib/azure-loganalytics/index.js +0 -18
  256. package/lib/azure-loganalytics/lib/index.d.ts +0 -1
  257. package/lib/azure-loganalytics/lib/index.js +0 -18
  258. package/lib/azure-loganalytics/lib/workspace.d.ts +0 -163
  259. package/lib/azure-loganalytics/lib/workspace.js +0 -126
  260. package/lib/azure-loganalytics/test/AzureLogAnalytics.spec.d.ts +0 -1
  261. package/lib/azure-loganalytics/test/AzureLogAnalytics.spec.js +0 -50
  262. package/lib/azure-loganalytics/test/ExampleAzureLogAnalytics.d.ts +0 -5
  263. package/lib/azure-loganalytics/test/ExampleAzureLogAnalytics.js +0 -115
  264. package/lib/azure-metricalert/index.d.ts +0 -2
  265. package/lib/azure-metricalert/index.js +0 -19
  266. package/lib/azure-metricalert/lib/index.d.ts +0 -1
  267. package/lib/azure-metricalert/lib/index.js +0 -18
  268. package/lib/azure-metricalert/lib/metric-alert.d.ts +0 -56
  269. package/lib/azure-metricalert/lib/metric-alert.js +0 -128
  270. package/lib/azure-metricalert/model/action-props.d.ts +0 -11
  271. package/lib/azure-metricalert/model/action-props.js +0 -3
  272. package/lib/azure-metricalert/model/criteria-base-props.d.ts +0 -38
  273. package/lib/azure-metricalert/model/criteria-base-props.js +0 -3
  274. package/lib/azure-metricalert/model/criteria-dimension-props.d.ts +0 -21
  275. package/lib/azure-metricalert/model/criteria-dimension-props.js +0 -3
  276. package/lib/azure-metricalert/model/criteria-props.d.ts +0 -12
  277. package/lib/azure-metricalert/model/criteria-props.js +0 -3
  278. package/lib/azure-metricalert/model/dynamic-criteria-props.d.ts +0 -29
  279. package/lib/azure-metricalert/model/dynamic-criteria-props.js +0 -3
  280. package/lib/azure-metricalert/model/function.d.ts +0 -28
  281. package/lib/azure-metricalert/model/function.js +0 -78
  282. package/lib/azure-metricalert/model/index.d.ts +0 -7
  283. package/lib/azure-metricalert/model/index.js +0 -24
  284. package/lib/azure-metricalert/model/metric-alert-props.d.ts +0 -86
  285. package/lib/azure-metricalert/model/metric-alert-props.js +0 -3
  286. package/lib/azure-metricalert/test/AzureMetricAlert.spec.d.ts +0 -1
  287. package/lib/azure-metricalert/test/AzureMetricAlert.spec.js +0 -63
  288. package/lib/azure-metricalert/test/ExampleAzureMetricAlert.d.ts +0 -5
  289. package/lib/azure-metricalert/test/ExampleAzureMetricAlert.js +0 -81
  290. package/lib/azure-networksecuritygroup/index.d.ts +0 -1
  291. package/lib/azure-networksecuritygroup/index.js +0 -18
  292. package/lib/azure-networksecuritygroup/lib/index.d.ts +0 -2
  293. package/lib/azure-networksecuritygroup/lib/index.js +0 -19
  294. package/lib/azure-networksecuritygroup/lib/preconfigured-rules.d.ts +0 -77
  295. package/lib/azure-networksecuritygroup/lib/preconfigured-rules.js +0 -608
  296. package/lib/azure-networksecuritygroup/lib/securitygroup.d.ts +0 -190
  297. package/lib/azure-networksecuritygroup/lib/securitygroup.js +0 -172
  298. package/lib/azure-networksecuritygroup/test/AzureNetworkSecurityGroup.spec.d.ts +0 -1
  299. package/lib/azure-networksecuritygroup/test/AzureNetworkSecurityGroup.spec.js +0 -54
  300. package/lib/azure-networksecuritygroup/test/ExampleAzureNetworkSecurityGroup.d.ts +0 -5
  301. package/lib/azure-networksecuritygroup/test/ExampleAzureNetworkSecurityGroup.js +0 -97
  302. package/lib/azure-queryrulealert/index.d.ts +0 -1
  303. package/lib/azure-queryrulealert/index.js +0 -18
  304. package/lib/azure-queryrulealert/lib/index.d.ts +0 -1
  305. package/lib/azure-queryrulealert/lib/index.js +0 -18
  306. package/lib/azure-queryrulealert/lib/query-rule-alert.d.ts +0 -175
  307. package/lib/azure-queryrulealert/lib/query-rule-alert.js +0 -205
  308. package/lib/azure-queryrulealert/test/AzureQueryRuleAlert.spec.d.ts +0 -1
  309. package/lib/azure-queryrulealert/test/AzureQueryRuleAlert.spec.js +0 -67
  310. package/lib/azure-queryrulealert/test/ExampleAzureQueryRuleAlert.d.ts +0 -5
  311. package/lib/azure-queryrulealert/test/ExampleAzureQueryRuleAlert.js +0 -67
  312. package/lib/azure-resourcegroup/test/AzureResourceGroup.spec.d.ts +0 -1
  313. package/lib/azure-resourcegroup/test/AzureResourceGroup.spec.js +0 -41
  314. package/lib/azure-resourcegroup/test/ExampleAzureResourceGroup.d.ts +0 -5
  315. package/lib/azure-resourcegroup/test/ExampleAzureResourceGroup.js +0 -29
  316. package/lib/azure-storageaccount/lib/account.d.ts +0 -232
  317. package/lib/azure-storageaccount/lib/account.js +0 -225
  318. package/lib/azure-storageaccount/lib/container.d.ts +0 -122
  319. package/lib/azure-storageaccount/lib/container.js +0 -167
  320. package/lib/azure-storageaccount/lib/fileshare.d.ts +0 -105
  321. package/lib/azure-storageaccount/lib/fileshare.js +0 -126
  322. package/lib/azure-storageaccount/lib/queue.d.ts +0 -35
  323. package/lib/azure-storageaccount/lib/queue.js +0 -52
  324. package/lib/azure-storageaccount/lib/table.d.ts +0 -38
  325. package/lib/azure-storageaccount/lib/table.js +0 -55
  326. package/lib/azure-storageaccount/test/AzureStorageAccount.spec.d.ts +0 -1
  327. package/lib/azure-storageaccount/test/AzureStorageAccount.spec.js +0 -45
  328. package/lib/azure-storageaccount/test/ExampleAzureStorageAccount.d.ts +0 -5
  329. package/lib/azure-storageaccount/test/ExampleAzureStorageAccount.js +0 -102
  330. package/lib/azure-virtualmachine/index.d.ts +0 -1
  331. package/lib/azure-virtualmachine/index.js +0 -18
  332. package/lib/azure-virtualmachine/lib/image-references.d.ts +0 -22
  333. package/lib/azure-virtualmachine/lib/image-references.js +0 -128
  334. package/lib/azure-virtualmachine/lib/index.d.ts +0 -2
  335. package/lib/azure-virtualmachine/lib/index.js +0 -19
  336. package/lib/azure-virtualmachine/lib/vm.d.ts +0 -281
  337. package/lib/azure-virtualmachine/lib/vm.js +0 -283
  338. package/lib/azure-virtualmachine/test/AzureLinuxVirtualMachine.spec.d.ts +0 -1
  339. package/lib/azure-virtualmachine/test/AzureLinuxVirtualMachine.spec.js +0 -48
  340. package/lib/azure-virtualmachine/test/AzureWindowsVirtualMachine.spec.d.ts +0 -1
  341. package/lib/azure-virtualmachine/test/AzureWindowsVirtualMachine.spec.js +0 -50
  342. package/lib/azure-virtualmachine/test/ExampleAzureLinuxVirtualMachine.d.ts +0 -5
  343. package/lib/azure-virtualmachine/test/ExampleAzureLinuxVirtualMachine.js +0 -106
  344. package/lib/azure-virtualmachine/test/ExampleAzureWindowsVirtualMachine.d.ts +0 -5
  345. package/lib/azure-virtualmachine/test/ExampleAzureWindowsVirtualMachine.js +0 -102
  346. package/lib/azure-virtualmachinescaleset/index.d.ts +0 -1
  347. package/lib/azure-virtualmachinescaleset/index.js +0 -18
  348. package/lib/azure-virtualmachinescaleset/lib/cluster.d.ts +0 -324
  349. package/lib/azure-virtualmachinescaleset/lib/cluster.js +0 -264
  350. package/lib/azure-virtualmachinescaleset/lib/index.d.ts +0 -1
  351. package/lib/azure-virtualmachinescaleset/lib/index.js +0 -18
  352. package/lib/azure-virtualmachinescaleset/test/AzureLinuxVirtualMachineScaleSet.spec.d.ts +0 -1
  353. package/lib/azure-virtualmachinescaleset/test/AzureLinuxVirtualMachineScaleSet.spec.js +0 -48
  354. package/lib/azure-virtualmachinescaleset/test/AzureWindowsVirtualMachineScaleSet.spec.d.ts +0 -1
  355. package/lib/azure-virtualmachinescaleset/test/AzureWindowsVirtualMachineScaleSet.spec.js +0 -50
  356. package/lib/azure-virtualmachinescaleset/test/ExampleAzureLinuxVirtualMachineScaleSet.d.ts +0 -5
  357. package/lib/azure-virtualmachinescaleset/test/ExampleAzureLinuxVirtualMachineScaleSet.js +0 -107
  358. package/lib/azure-virtualmachinescaleset/test/ExampleAzureWindowsVirtualMachineScaleSet.d.ts +0 -5
  359. package/lib/azure-virtualmachinescaleset/test/ExampleAzureWindowsVirtualMachineScaleSet.js +0 -103
  360. package/lib/azure-virtualnetwork/index.d.ts +0 -1
  361. package/lib/azure-virtualnetwork/index.js +0 -18
  362. package/lib/azure-virtualnetwork/lib/index.d.ts +0 -2
  363. package/lib/azure-virtualnetwork/lib/index.js +0 -19
  364. package/lib/azure-virtualnetwork/lib/network.d.ts +0 -122
  365. package/lib/azure-virtualnetwork/lib/network.js +0 -120
  366. package/lib/azure-virtualnetwork/lib/peering.d.ts +0 -90
  367. package/lib/azure-virtualnetwork/lib/peering.js +0 -71
  368. package/lib/azure-virtualnetwork/test/AzureVirtualNetwork.spec.d.ts +0 -1
  369. package/lib/azure-virtualnetwork/test/AzureVirtualNetwork.spec.js +0 -48
  370. package/lib/azure-virtualnetwork/test/ExampleAzureVirtualNetwork.d.ts +0 -5
  371. package/lib/azure-virtualnetwork/test/ExampleAzureVirtualNetwork.js +0 -88
  372. package/lib/core-azure/lib/diagsettings.d.ts +0 -89
  373. package/lib/core-azure/lib/diagsettings.js +0 -83
  374. package/lib/core-azure/lib/rbac.d.ts +0 -50
  375. package/lib/core-azure/lib/rbac.js +0 -48
  376. package/lib/core-azure/lib/resource.d.ts +0 -62
  377. package/lib/core-azure/lib/resource.js +0 -118
  378. package/lib/core-azure/test/AzureResource.spec.d.ts +0 -1
  379. package/lib/core-azure/test/AzureResource.spec.js +0 -19
  380. package/lib/core-azure/test/ExampleAzureResource.d.ts +0 -5
  381. package/lib/core-azure/test/ExampleAzureResource.js +0 -67
  382. package/node_modules/moment/CHANGELOG.md +0 -996
  383. package/node_modules/moment/LICENSE +0 -22
  384. package/node_modules/moment/README.md +0 -55
  385. package/node_modules/moment/dist/locale/af.js +0 -71
  386. package/node_modules/moment/dist/locale/ar-dz.js +0 -156
  387. package/node_modules/moment/dist/locale/ar-kw.js +0 -55
  388. package/node_modules/moment/dist/locale/ar-ly.js +0 -171
  389. package/node_modules/moment/dist/locale/ar-ma.js +0 -56
  390. package/node_modules/moment/dist/locale/ar-ps.js +0 -112
  391. package/node_modules/moment/dist/locale/ar-sa.js +0 -105
  392. package/node_modules/moment/dist/locale/ar-tn.js +0 -55
  393. package/node_modules/moment/dist/locale/ar.js +0 -189
  394. package/node_modules/moment/dist/locale/az.js +0 -102
  395. package/node_modules/moment/dist/locale/be.js +0 -142
  396. package/node_modules/moment/dist/locale/bg.js +0 -87
  397. package/node_modules/moment/dist/locale/bm.js +0 -52
  398. package/node_modules/moment/dist/locale/bn-bd.js +0 -129
  399. package/node_modules/moment/dist/locale/bn.js +0 -119
  400. package/node_modules/moment/dist/locale/bo.js +0 -124
  401. package/node_modules/moment/dist/locale/br.js +0 -168
  402. package/node_modules/moment/dist/locale/bs.js +0 -160
  403. package/node_modules/moment/dist/locale/ca.js +0 -100
  404. package/node_modules/moment/dist/locale/cs.js +0 -181
  405. package/node_modules/moment/dist/locale/cv.js +0 -63
  406. package/node_modules/moment/dist/locale/cy.js +0 -98
  407. package/node_modules/moment/dist/locale/da.js +0 -53
  408. package/node_modules/moment/dist/locale/de-at.js +0 -79
  409. package/node_modules/moment/dist/locale/de-ch.js +0 -78
  410. package/node_modules/moment/dist/locale/de.js +0 -78
  411. package/node_modules/moment/dist/locale/dv.js +0 -90
  412. package/node_modules/moment/dist/locale/el.js +0 -106
  413. package/node_modules/moment/dist/locale/en-au.js +0 -68
  414. package/node_modules/moment/dist/locale/en-ca.js +0 -64
  415. package/node_modules/moment/dist/locale/en-gb.js +0 -68
  416. package/node_modules/moment/dist/locale/en-ie.js +0 -68
  417. package/node_modules/moment/dist/locale/en-il.js +0 -64
  418. package/node_modules/moment/dist/locale/en-in.js +0 -68
  419. package/node_modules/moment/dist/locale/en-nz.js +0 -68
  420. package/node_modules/moment/dist/locale/en-sg.js +0 -68
  421. package/node_modules/moment/dist/locale/eo.js +0 -68
  422. package/node_modules/moment/dist/locale/es-do.js +0 -108
  423. package/node_modules/moment/dist/locale/es-mx.js +0 -110
  424. package/node_modules/moment/dist/locale/es-us.js +0 -110
  425. package/node_modules/moment/dist/locale/es.js +0 -110
  426. package/node_modules/moment/dist/locale/et.js +0 -78
  427. package/node_modules/moment/dist/locale/eu.js +0 -65
  428. package/node_modules/moment/dist/locale/fa.js +0 -113
  429. package/node_modules/moment/dist/locale/fi.js +0 -124
  430. package/node_modules/moment/dist/locale/fil.js +0 -58
  431. package/node_modules/moment/dist/locale/fo.js +0 -57
  432. package/node_modules/moment/dist/locale/fr-ca.js +0 -70
  433. package/node_modules/moment/dist/locale/fr-ch.js +0 -74
  434. package/node_modules/moment/dist/locale/fr.js +0 -108
  435. package/node_modules/moment/dist/locale/fy.js +0 -75
  436. package/node_modules/moment/dist/locale/ga.js +0 -95
  437. package/node_modules/moment/dist/locale/gd.js +0 -95
  438. package/node_modules/moment/dist/locale/gl.js +0 -75
  439. package/node_modules/moment/dist/locale/gom-deva.js +0 -126
  440. package/node_modules/moment/dist/locale/gom-latn.js +0 -124
  441. package/node_modules/moment/dist/locale/gu.js +0 -122
  442. package/node_modules/moment/dist/locale/he.js +0 -94
  443. package/node_modules/moment/dist/locale/hi.js +0 -168
  444. package/node_modules/moment/dist/locale/hr.js +0 -156
  445. package/node_modules/moment/dist/locale/hu.js +0 -118
  446. package/node_modules/moment/dist/locale/hy-am.js +0 -94
  447. package/node_modules/moment/dist/locale/id.js +0 -76
  448. package/node_modules/moment/dist/locale/is.js +0 -140
  449. package/node_modules/moment/dist/locale/it-ch.js +0 -64
  450. package/node_modules/moment/dist/locale/it.js +0 -106
  451. package/node_modules/moment/dist/locale/ja.js +0 -148
  452. package/node_modules/moment/dist/locale/jv.js +0 -76
  453. package/node_modules/moment/dist/locale/ka.js +0 -92
  454. package/node_modules/moment/dist/locale/kk.js +0 -82
  455. package/node_modules/moment/dist/locale/km.js +0 -103
  456. package/node_modules/moment/dist/locale/kn.js +0 -124
  457. package/node_modules/moment/dist/locale/ko.js +0 -75
  458. package/node_modules/moment/dist/locale/ku-kmr.js +0 -121
  459. package/node_modules/moment/dist/locale/ku.js +0 -118
  460. package/node_modules/moment/dist/locale/ky.js +0 -84
  461. package/node_modules/moment/dist/locale/lb.js +0 -137
  462. package/node_modules/moment/dist/locale/lo.js +0 -66
  463. package/node_modules/moment/dist/locale/lt.js +0 -125
  464. package/node_modules/moment/dist/locale/lv.js +0 -94
  465. package/node_modules/moment/dist/locale/me.js +0 -117
  466. package/node_modules/moment/dist/locale/mi.js +0 -60
  467. package/node_modules/moment/dist/locale/mk.js +0 -85
  468. package/node_modules/moment/dist/locale/ml.js +0 -82
  469. package/node_modules/moment/dist/locale/mn.js +0 -100
  470. package/node_modules/moment/dist/locale/mr.js +0 -203
  471. package/node_modules/moment/dist/locale/ms-my.js +0 -76
  472. package/node_modules/moment/dist/locale/ms.js +0 -75
  473. package/node_modules/moment/dist/locale/mt.js +0 -56
  474. package/node_modules/moment/dist/locale/my.js +0 -91
  475. package/node_modules/moment/dist/locale/nb.js +0 -60
  476. package/node_modules/moment/dist/locale/ne.js +0 -121
  477. package/node_modules/moment/dist/locale/nl-be.js +0 -102
  478. package/node_modules/moment/dist/locale/nl.js +0 -104
  479. package/node_modules/moment/dist/locale/nn.js +0 -59
  480. package/node_modules/moment/dist/locale/oc-lnc.js +0 -85
  481. package/node_modules/moment/dist/locale/pa-in.js +0 -122
  482. package/node_modules/moment/dist/locale/pl.js +0 -140
  483. package/node_modules/moment/dist/locale/pt-br.js +0 -58
  484. package/node_modules/moment/dist/locale/pt.js +0 -63
  485. package/node_modules/moment/dist/locale/ro.js +0 -76
  486. package/node_modules/moment/dist/locale/ru.js +0 -213
  487. package/node_modules/moment/dist/locale/sd.js +0 -81
  488. package/node_modules/moment/dist/locale/se.js +0 -57
  489. package/node_modules/moment/dist/locale/si.js +0 -69
  490. package/node_modules/moment/dist/locale/sk.js +0 -145
  491. package/node_modules/moment/dist/locale/sl.js +0 -171
  492. package/node_modules/moment/dist/locale/sq.js +0 -65
  493. package/node_modules/moment/dist/locale/sr-cyrl.js +0 -127
  494. package/node_modules/moment/dist/locale/sr.js +0 -129
  495. package/node_modules/moment/dist/locale/ss.js +0 -84
  496. package/node_modules/moment/dist/locale/sv.js +0 -68
  497. package/node_modules/moment/dist/locale/sw.js +0 -55
  498. package/node_modules/moment/dist/locale/ta.js +0 -131
  499. package/node_modules/moment/dist/locale/te.js +0 -88
  500. package/node_modules/moment/dist/locale/tet.js +0 -68
  501. package/node_modules/moment/dist/locale/tg.js +0 -117
  502. package/node_modules/moment/dist/locale/th.js +0 -65
  503. package/node_modules/moment/dist/locale/tk.js +0 -91
  504. package/node_modules/moment/dist/locale/tl-ph.js +0 -57
  505. package/node_modules/moment/dist/locale/tlh.js +0 -124
  506. package/node_modules/moment/dist/locale/tr.js +0 -106
  507. package/node_modules/moment/dist/locale/tzl.js +0 -89
  508. package/node_modules/moment/dist/locale/tzm-latn.js +0 -54
  509. package/node_modules/moment/dist/locale/tzm.js +0 -54
  510. package/node_modules/moment/dist/locale/ug-cn.js +0 -111
  511. package/node_modules/moment/dist/locale/uk.js +0 -167
  512. package/node_modules/moment/dist/locale/ur.js +0 -82
  513. package/node_modules/moment/dist/locale/uz-latn.js +0 -54
  514. package/node_modules/moment/dist/locale/uz.js +0 -51
  515. package/node_modules/moment/dist/locale/vi.js +0 -80
  516. package/node_modules/moment/dist/locale/x-pseudo.js +0 -73
  517. package/node_modules/moment/dist/locale/yo.js +0 -53
  518. package/node_modules/moment/dist/locale/zh-cn.js +0 -120
  519. package/node_modules/moment/dist/locale/zh-hk.js +0 -101
  520. package/node_modules/moment/dist/locale/zh-mo.js +0 -100
  521. package/node_modules/moment/dist/locale/zh-tw.js +0 -99
  522. package/node_modules/moment/dist/moment.js +0 -5680
  523. package/node_modules/moment/ender.js +0 -1
  524. package/node_modules/moment/locale/af.js +0 -82
  525. package/node_modules/moment/locale/ar-dz.js +0 -167
  526. package/node_modules/moment/locale/ar-kw.js +0 -66
  527. package/node_modules/moment/locale/ar-ly.js +0 -182
  528. package/node_modules/moment/locale/ar-ma.js +0 -67
  529. package/node_modules/moment/locale/ar-ps.js +0 -123
  530. package/node_modules/moment/locale/ar-sa.js +0 -116
  531. package/node_modules/moment/locale/ar-tn.js +0 -66
  532. package/node_modules/moment/locale/ar.js +0 -200
  533. package/node_modules/moment/locale/az.js +0 -113
  534. package/node_modules/moment/locale/be.js +0 -153
  535. package/node_modules/moment/locale/bg.js +0 -98
  536. package/node_modules/moment/locale/bm.js +0 -62
  537. package/node_modules/moment/locale/bn-bd.js +0 -140
  538. package/node_modules/moment/locale/bn.js +0 -130
  539. package/node_modules/moment/locale/bo.js +0 -135
  540. package/node_modules/moment/locale/br.js +0 -179
  541. package/node_modules/moment/locale/bs.js +0 -171
  542. package/node_modules/moment/locale/ca.js +0 -111
  543. package/node_modules/moment/locale/cs.js +0 -192
  544. package/node_modules/moment/locale/cv.js +0 -74
  545. package/node_modules/moment/locale/cy.js +0 -109
  546. package/node_modules/moment/locale/da.js +0 -64
  547. package/node_modules/moment/locale/de-at.js +0 -90
  548. package/node_modules/moment/locale/de-ch.js +0 -87
  549. package/node_modules/moment/locale/de.js +0 -89
  550. package/node_modules/moment/locale/dv.js +0 -101
  551. package/node_modules/moment/locale/el.js +0 -117
  552. package/node_modules/moment/locale/en-au.js +0 -79
  553. package/node_modules/moment/locale/en-ca.js +0 -75
  554. package/node_modules/moment/locale/en-gb.js +0 -79
  555. package/node_modules/moment/locale/en-ie.js +0 -79
  556. package/node_modules/moment/locale/en-il.js +0 -75
  557. package/node_modules/moment/locale/en-in.js +0 -79
  558. package/node_modules/moment/locale/en-nz.js +0 -79
  559. package/node_modules/moment/locale/en-sg.js +0 -79
  560. package/node_modules/moment/locale/eo.js +0 -79
  561. package/node_modules/moment/locale/es-do.js +0 -119
  562. package/node_modules/moment/locale/es-mx.js +0 -121
  563. package/node_modules/moment/locale/es-us.js +0 -121
  564. package/node_modules/moment/locale/es.js +0 -121
  565. package/node_modules/moment/locale/et.js +0 -89
  566. package/node_modules/moment/locale/eu.js +0 -76
  567. package/node_modules/moment/locale/fa.js +0 -124
  568. package/node_modules/moment/locale/fi.js +0 -135
  569. package/node_modules/moment/locale/fil.js +0 -69
  570. package/node_modules/moment/locale/fo.js +0 -68
  571. package/node_modules/moment/locale/fr-ca.js +0 -81
  572. package/node_modules/moment/locale/fr-ch.js +0 -85
  573. package/node_modules/moment/locale/fr.js +0 -119
  574. package/node_modules/moment/locale/fy.js +0 -86
  575. package/node_modules/moment/locale/ga.js +0 -106
  576. package/node_modules/moment/locale/gd.js +0 -106
  577. package/node_modules/moment/locale/gl.js +0 -86
  578. package/node_modules/moment/locale/gom-deva.js +0 -137
  579. package/node_modules/moment/locale/gom-latn.js +0 -135
  580. package/node_modules/moment/locale/gu.js +0 -133
  581. package/node_modules/moment/locale/he.js +0 -105
  582. package/node_modules/moment/locale/hi.js +0 -179
  583. package/node_modules/moment/locale/hr.js +0 -167
  584. package/node_modules/moment/locale/hu.js +0 -129
  585. package/node_modules/moment/locale/hy-am.js +0 -105
  586. package/node_modules/moment/locale/id.js +0 -87
  587. package/node_modules/moment/locale/is.js +0 -151
  588. package/node_modules/moment/locale/it-ch.js +0 -75
  589. package/node_modules/moment/locale/it.js +0 -117
  590. package/node_modules/moment/locale/ja.js +0 -159
  591. package/node_modules/moment/locale/jv.js +0 -87
  592. package/node_modules/moment/locale/ka.js +0 -103
  593. package/node_modules/moment/locale/kk.js +0 -93
  594. package/node_modules/moment/locale/km.js +0 -114
  595. package/node_modules/moment/locale/kn.js +0 -135
  596. package/node_modules/moment/locale/ko.js +0 -86
  597. package/node_modules/moment/locale/ku-kmr.js +0 -125
  598. package/node_modules/moment/locale/ku.js +0 -129
  599. package/node_modules/moment/locale/ky.js +0 -95
  600. package/node_modules/moment/locale/lb.js +0 -148
  601. package/node_modules/moment/locale/lo.js +0 -77
  602. package/node_modules/moment/locale/lt.js +0 -136
  603. package/node_modules/moment/locale/lv.js +0 -105
  604. package/node_modules/moment/locale/me.js +0 -128
  605. package/node_modules/moment/locale/mi.js +0 -71
  606. package/node_modules/moment/locale/mk.js +0 -97
  607. package/node_modules/moment/locale/ml.js +0 -93
  608. package/node_modules/moment/locale/mn.js +0 -111
  609. package/node_modules/moment/locale/mr.js +0 -214
  610. package/node_modules/moment/locale/ms-my.js +0 -87
  611. package/node_modules/moment/locale/ms.js +0 -86
  612. package/node_modules/moment/locale/mt.js +0 -67
  613. package/node_modules/moment/locale/my.js +0 -102
  614. package/node_modules/moment/locale/nb.js +0 -71
  615. package/node_modules/moment/locale/ne.js +0 -132
  616. package/node_modules/moment/locale/nl-be.js +0 -113
  617. package/node_modules/moment/locale/nl.js +0 -115
  618. package/node_modules/moment/locale/nn.js +0 -70
  619. package/node_modules/moment/locale/oc-lnc.js +0 -96
  620. package/node_modules/moment/locale/pa-in.js +0 -133
  621. package/node_modules/moment/locale/pl.js +0 -151
  622. package/node_modules/moment/locale/pt-br.js +0 -69
  623. package/node_modules/moment/locale/pt.js +0 -74
  624. package/node_modules/moment/locale/ro.js +0 -87
  625. package/node_modules/moment/locale/ru.js +0 -224
  626. package/node_modules/moment/locale/sd.js +0 -92
  627. package/node_modules/moment/locale/se.js +0 -68
  628. package/node_modules/moment/locale/si.js +0 -80
  629. package/node_modules/moment/locale/sk.js +0 -156
  630. package/node_modules/moment/locale/sl.js +0 -182
  631. package/node_modules/moment/locale/sq.js +0 -76
  632. package/node_modules/moment/locale/sr-cyrl.js +0 -138
  633. package/node_modules/moment/locale/sr.js +0 -140
  634. package/node_modules/moment/locale/ss.js +0 -95
  635. package/node_modules/moment/locale/sv.js +0 -79
  636. package/node_modules/moment/locale/sw.js +0 -66
  637. package/node_modules/moment/locale/ta.js +0 -142
  638. package/node_modules/moment/locale/te.js +0 -99
  639. package/node_modules/moment/locale/tet.js +0 -79
  640. package/node_modules/moment/locale/tg.js +0 -128
  641. package/node_modules/moment/locale/th.js +0 -76
  642. package/node_modules/moment/locale/tk.js +0 -102
  643. package/node_modules/moment/locale/tl-ph.js +0 -68
  644. package/node_modules/moment/locale/tlh.js +0 -135
  645. package/node_modules/moment/locale/tr.js +0 -117
  646. package/node_modules/moment/locale/tzl.js +0 -100
  647. package/node_modules/moment/locale/tzm-latn.js +0 -65
  648. package/node_modules/moment/locale/tzm.js +0 -65
  649. package/node_modules/moment/locale/ug-cn.js +0 -122
  650. package/node_modules/moment/locale/uk.js +0 -178
  651. package/node_modules/moment/locale/ur.js +0 -93
  652. package/node_modules/moment/locale/uz-latn.js +0 -65
  653. package/node_modules/moment/locale/uz.js +0 -62
  654. package/node_modules/moment/locale/vi.js +0 -91
  655. package/node_modules/moment/locale/x-pseudo.js +0 -84
  656. package/node_modules/moment/locale/yo.js +0 -64
  657. package/node_modules/moment/locale/zh-cn.js +0 -131
  658. package/node_modules/moment/locale/zh-hk.js +0 -112
  659. package/node_modules/moment/locale/zh-mo.js +0 -111
  660. package/node_modules/moment/locale/zh-tw.js +0 -110
  661. package/node_modules/moment/min/locales.js +0 -12800
  662. package/node_modules/moment/min/locales.min.js +0 -2
  663. package/node_modules/moment/min/locales.min.js.map +0 -1
  664. package/node_modules/moment/min/moment-with-locales.js +0 -18472
  665. package/node_modules/moment/min/moment-with-locales.min.js +0 -2
  666. package/node_modules/moment/min/moment-with-locales.min.js.map +0 -1
  667. package/node_modules/moment/min/moment.min.js +0 -2
  668. package/node_modules/moment/min/moment.min.js.map +0 -1
  669. package/node_modules/moment/moment.d.ts +0 -796
  670. package/node_modules/moment/moment.js +0 -5688
  671. package/node_modules/moment/package.js +0 -11
  672. package/node_modules/moment/package.json +0 -116
  673. package/node_modules/moment/src/lib/create/check-overflow.js +0 -57
  674. package/node_modules/moment/src/lib/create/date-from-array.js +0 -35
  675. package/node_modules/moment/src/lib/create/from-anything.js +0 -117
  676. package/node_modules/moment/src/lib/create/from-array.js +0 -187
  677. package/node_modules/moment/src/lib/create/from-object.js +0 -20
  678. package/node_modules/moment/src/lib/create/from-string-and-array.js +0 -67
  679. package/node_modules/moment/src/lib/create/from-string-and-format.js +0 -135
  680. package/node_modules/moment/src/lib/create/from-string.js +0 -258
  681. package/node_modules/moment/src/lib/create/local.js +0 -5
  682. package/node_modules/moment/src/lib/create/parsing-flags.js +0 -28
  683. package/node_modules/moment/src/lib/create/utc.js +0 -5
  684. package/node_modules/moment/src/lib/create/valid.js +0 -51
  685. package/node_modules/moment/src/lib/duration/abs.js +0 -18
  686. package/node_modules/moment/src/lib/duration/add-subtract.js +0 -21
  687. package/node_modules/moment/src/lib/duration/as.js +0 -76
  688. package/node_modules/moment/src/lib/duration/bubble.js +0 -68
  689. package/node_modules/moment/src/lib/duration/clone.js +0 -5
  690. package/node_modules/moment/src/lib/duration/constructor.js +0 -42
  691. package/node_modules/moment/src/lib/duration/create.js +0 -133
  692. package/node_modules/moment/src/lib/duration/duration.js +0 -16
  693. package/node_modules/moment/src/lib/duration/get.js +0 -27
  694. package/node_modules/moment/src/lib/duration/humanize.js +0 -114
  695. package/node_modules/moment/src/lib/duration/iso-string.js +0 -68
  696. package/node_modules/moment/src/lib/duration/prototype.js +0 -78
  697. package/node_modules/moment/src/lib/duration/valid.js +0 -55
  698. package/node_modules/moment/src/lib/format/format.js +0 -104
  699. package/node_modules/moment/src/lib/locale/base-config.js +0 -41
  700. package/node_modules/moment/src/lib/locale/calendar.js +0 -15
  701. package/node_modules/moment/src/lib/locale/constructor.js +0 -5
  702. package/node_modules/moment/src/lib/locale/en.js +0 -39
  703. package/node_modules/moment/src/lib/locale/formats.js +0 -36
  704. package/node_modules/moment/src/lib/locale/invalid.js +0 -5
  705. package/node_modules/moment/src/lib/locale/lists.js +0 -93
  706. package/node_modules/moment/src/lib/locale/locale.js +0 -45
  707. package/node_modules/moment/src/lib/locale/locales.js +0 -249
  708. package/node_modules/moment/src/lib/locale/ordinal.js +0 -8
  709. package/node_modules/moment/src/lib/locale/pre-post-format.js +0 -3
  710. package/node_modules/moment/src/lib/locale/prototype.js +0 -88
  711. package/node_modules/moment/src/lib/locale/relative.js +0 -32
  712. package/node_modules/moment/src/lib/locale/set.js +0 -56
  713. package/node_modules/moment/src/lib/moment/add-subtract.js +0 -61
  714. package/node_modules/moment/src/lib/moment/calendar.js +0 -53
  715. package/node_modules/moment/src/lib/moment/clone.js +0 -5
  716. package/node_modules/moment/src/lib/moment/compare.js +0 -72
  717. package/node_modules/moment/src/lib/moment/constructor.js +0 -80
  718. package/node_modules/moment/src/lib/moment/creation-data.js +0 -9
  719. package/node_modules/moment/src/lib/moment/diff.js +0 -79
  720. package/node_modules/moment/src/lib/moment/format.js +0 -78
  721. package/node_modules/moment/src/lib/moment/from.js +0 -20
  722. package/node_modules/moment/src/lib/moment/get-set.js +0 -117
  723. package/node_modules/moment/src/lib/moment/locale.js +0 -34
  724. package/node_modules/moment/src/lib/moment/min-max.js +0 -62
  725. package/node_modules/moment/src/lib/moment/moment.js +0 -28
  726. package/node_modules/moment/src/lib/moment/now.js +0 -3
  727. package/node_modules/moment/src/lib/moment/prototype.js +0 -197
  728. package/node_modules/moment/src/lib/moment/start-end-of.js +0 -164
  729. package/node_modules/moment/src/lib/moment/to-type.js +0 -42
  730. package/node_modules/moment/src/lib/moment/to.js +0 -20
  731. package/node_modules/moment/src/lib/moment/valid.js +0 -15
  732. package/node_modules/moment/src/lib/parse/regex.js +0 -84
  733. package/node_modules/moment/src/lib/parse/token.js +0 -36
  734. package/node_modules/moment/src/lib/units/aliases.js +0 -75
  735. package/node_modules/moment/src/lib/units/constants.js +0 -9
  736. package/node_modules/moment/src/lib/units/day-of-month.js +0 -35
  737. package/node_modules/moment/src/lib/units/day-of-week.js +0 -432
  738. package/node_modules/moment/src/lib/units/day-of-year.js +0 -28
  739. package/node_modules/moment/src/lib/units/era.js +0 -293
  740. package/node_modules/moment/src/lib/units/hour.js +0 -152
  741. package/node_modules/moment/src/lib/units/millisecond.js +0 -66
  742. package/node_modules/moment/src/lib/units/minute.js +0 -24
  743. package/node_modules/moment/src/lib/units/month.js +0 -340
  744. package/node_modules/moment/src/lib/units/offset.js +0 -249
  745. package/node_modules/moment/src/lib/units/priorities.js +0 -34
  746. package/node_modules/moment/src/lib/units/quarter.js +0 -24
  747. package/node_modules/moment/src/lib/units/second.js +0 -24
  748. package/node_modules/moment/src/lib/units/timestamp.js +0 -20
  749. package/node_modules/moment/src/lib/units/timezone.js +0 -16
  750. package/node_modules/moment/src/lib/units/units.js +0 -20
  751. package/node_modules/moment/src/lib/units/week-calendar-utils.js +0 -66
  752. package/node_modules/moment/src/lib/units/week-year.js +0 -128
  753. package/node_modules/moment/src/lib/units/week.js +0 -62
  754. package/node_modules/moment/src/lib/units/year.js +0 -75
  755. package/node_modules/moment/src/lib/utils/abs-ceil.js +0 -7
  756. package/node_modules/moment/src/lib/utils/abs-floor.js +0 -8
  757. package/node_modules/moment/src/lib/utils/abs-round.js +0 -7
  758. package/node_modules/moment/src/lib/utils/compare-arrays.js +0 -18
  759. package/node_modules/moment/src/lib/utils/defaults.js +0 -10
  760. package/node_modules/moment/src/lib/utils/deprecate.js +0 -69
  761. package/node_modules/moment/src/lib/utils/extend.js +0 -19
  762. package/node_modules/moment/src/lib/utils/has-own-prop.js +0 -3
  763. package/node_modules/moment/src/lib/utils/hooks.js +0 -13
  764. package/node_modules/moment/src/lib/utils/index-of.js +0 -18
  765. package/node_modules/moment/src/lib/utils/is-array.js +0 -6
  766. package/node_modules/moment/src/lib/utils/is-calendar-spec.js +0 -25
  767. package/node_modules/moment/src/lib/utils/is-date.js +0 -6
  768. package/node_modules/moment/src/lib/utils/is-function.js +0 -6
  769. package/node_modules/moment/src/lib/utils/is-leap-year.js +0 -3
  770. package/node_modules/moment/src/lib/utils/is-moment-input.js +0 -75
  771. package/node_modules/moment/src/lib/utils/is-number.js +0 -6
  772. package/node_modules/moment/src/lib/utils/is-object-empty.js +0 -15
  773. package/node_modules/moment/src/lib/utils/is-object.js +0 -8
  774. package/node_modules/moment/src/lib/utils/is-string.js +0 -3
  775. package/node_modules/moment/src/lib/utils/is-undefined.js +0 -3
  776. package/node_modules/moment/src/lib/utils/keys.js +0 -20
  777. package/node_modules/moment/src/lib/utils/map.js +0 -9
  778. package/node_modules/moment/src/lib/utils/mod.js +0 -3
  779. package/node_modules/moment/src/lib/utils/some.js +0 -20
  780. package/node_modules/moment/src/lib/utils/to-int.js +0 -12
  781. package/node_modules/moment/src/lib/utils/zero-fill.js +0 -10
  782. package/node_modules/moment/src/locale/af.js +0 -71
  783. package/node_modules/moment/src/locale/ar-dz.js +0 -156
  784. package/node_modules/moment/src/locale/ar-kw.js +0 -55
  785. package/node_modules/moment/src/locale/ar-ly.js +0 -171
  786. package/node_modules/moment/src/locale/ar-ma.js +0 -56
  787. package/node_modules/moment/src/locale/ar-ps.js +0 -112
  788. package/node_modules/moment/src/locale/ar-sa.js +0 -105
  789. package/node_modules/moment/src/locale/ar-tn.js +0 -55
  790. package/node_modules/moment/src/locale/ar.js +0 -189
  791. package/node_modules/moment/src/locale/az.js +0 -102
  792. package/node_modules/moment/src/locale/be.js +0 -142
  793. package/node_modules/moment/src/locale/bg.js +0 -87
  794. package/node_modules/moment/src/locale/bm.js +0 -52
  795. package/node_modules/moment/src/locale/bn-bd.js +0 -129
  796. package/node_modules/moment/src/locale/bn.js +0 -119
  797. package/node_modules/moment/src/locale/bo.js +0 -124
  798. package/node_modules/moment/src/locale/br.js +0 -168
  799. package/node_modules/moment/src/locale/bs.js +0 -160
  800. package/node_modules/moment/src/locale/ca.js +0 -100
  801. package/node_modules/moment/src/locale/cs.js +0 -181
  802. package/node_modules/moment/src/locale/cv.js +0 -63
  803. package/node_modules/moment/src/locale/cy.js +0 -98
  804. package/node_modules/moment/src/locale/da.js +0 -53
  805. package/node_modules/moment/src/locale/de-at.js +0 -79
  806. package/node_modules/moment/src/locale/de-ch.js +0 -78
  807. package/node_modules/moment/src/locale/de.js +0 -78
  808. package/node_modules/moment/src/locale/dv.js +0 -90
  809. package/node_modules/moment/src/locale/el.js +0 -106
  810. package/node_modules/moment/src/locale/en-au.js +0 -68
  811. package/node_modules/moment/src/locale/en-ca.js +0 -64
  812. package/node_modules/moment/src/locale/en-gb.js +0 -68
  813. package/node_modules/moment/src/locale/en-ie.js +0 -68
  814. package/node_modules/moment/src/locale/en-il.js +0 -64
  815. package/node_modules/moment/src/locale/en-in.js +0 -68
  816. package/node_modules/moment/src/locale/en-nz.js +0 -68
  817. package/node_modules/moment/src/locale/en-sg.js +0 -68
  818. package/node_modules/moment/src/locale/eo.js +0 -68
  819. package/node_modules/moment/src/locale/es-do.js +0 -108
  820. package/node_modules/moment/src/locale/es-mx.js +0 -110
  821. package/node_modules/moment/src/locale/es-us.js +0 -110
  822. package/node_modules/moment/src/locale/es.js +0 -110
  823. package/node_modules/moment/src/locale/et.js +0 -78
  824. package/node_modules/moment/src/locale/eu.js +0 -65
  825. package/node_modules/moment/src/locale/fa.js +0 -113
  826. package/node_modules/moment/src/locale/fi.js +0 -124
  827. package/node_modules/moment/src/locale/fil.js +0 -58
  828. package/node_modules/moment/src/locale/fo.js +0 -57
  829. package/node_modules/moment/src/locale/fr-ca.js +0 -70
  830. package/node_modules/moment/src/locale/fr-ch.js +0 -74
  831. package/node_modules/moment/src/locale/fr.js +0 -108
  832. package/node_modules/moment/src/locale/fy.js +0 -75
  833. package/node_modules/moment/src/locale/ga.js +0 -95
  834. package/node_modules/moment/src/locale/gd.js +0 -95
  835. package/node_modules/moment/src/locale/gl.js +0 -75
  836. package/node_modules/moment/src/locale/gom-deva.js +0 -126
  837. package/node_modules/moment/src/locale/gom-latn.js +0 -124
  838. package/node_modules/moment/src/locale/gu.js +0 -122
  839. package/node_modules/moment/src/locale/he.js +0 -94
  840. package/node_modules/moment/src/locale/hi.js +0 -168
  841. package/node_modules/moment/src/locale/hr.js +0 -156
  842. package/node_modules/moment/src/locale/hu.js +0 -118
  843. package/node_modules/moment/src/locale/hy-am.js +0 -94
  844. package/node_modules/moment/src/locale/id.js +0 -76
  845. package/node_modules/moment/src/locale/is.js +0 -140
  846. package/node_modules/moment/src/locale/it-ch.js +0 -64
  847. package/node_modules/moment/src/locale/it.js +0 -106
  848. package/node_modules/moment/src/locale/ja.js +0 -148
  849. package/node_modules/moment/src/locale/jv.js +0 -76
  850. package/node_modules/moment/src/locale/ka.js +0 -92
  851. package/node_modules/moment/src/locale/kk.js +0 -82
  852. package/node_modules/moment/src/locale/km.js +0 -103
  853. package/node_modules/moment/src/locale/kn.js +0 -124
  854. package/node_modules/moment/src/locale/ko.js +0 -75
  855. package/node_modules/moment/src/locale/ku-kmr.js +0 -121
  856. package/node_modules/moment/src/locale/ku.js +0 -118
  857. package/node_modules/moment/src/locale/ky.js +0 -84
  858. package/node_modules/moment/src/locale/lb.js +0 -137
  859. package/node_modules/moment/src/locale/lo.js +0 -66
  860. package/node_modules/moment/src/locale/lt.js +0 -125
  861. package/node_modules/moment/src/locale/lv.js +0 -94
  862. package/node_modules/moment/src/locale/me.js +0 -117
  863. package/node_modules/moment/src/locale/mi.js +0 -60
  864. package/node_modules/moment/src/locale/mk.js +0 -85
  865. package/node_modules/moment/src/locale/ml.js +0 -82
  866. package/node_modules/moment/src/locale/mn.js +0 -100
  867. package/node_modules/moment/src/locale/mr.js +0 -203
  868. package/node_modules/moment/src/locale/ms-my.js +0 -76
  869. package/node_modules/moment/src/locale/ms.js +0 -75
  870. package/node_modules/moment/src/locale/mt.js +0 -56
  871. package/node_modules/moment/src/locale/my.js +0 -91
  872. package/node_modules/moment/src/locale/nb.js +0 -60
  873. package/node_modules/moment/src/locale/ne.js +0 -121
  874. package/node_modules/moment/src/locale/nl-be.js +0 -102
  875. package/node_modules/moment/src/locale/nl.js +0 -104
  876. package/node_modules/moment/src/locale/nn.js +0 -59
  877. package/node_modules/moment/src/locale/oc-lnc.js +0 -85
  878. package/node_modules/moment/src/locale/pa-in.js +0 -122
  879. package/node_modules/moment/src/locale/pl.js +0 -140
  880. package/node_modules/moment/src/locale/pt-br.js +0 -58
  881. package/node_modules/moment/src/locale/pt.js +0 -63
  882. package/node_modules/moment/src/locale/ro.js +0 -76
  883. package/node_modules/moment/src/locale/ru.js +0 -213
  884. package/node_modules/moment/src/locale/sd.js +0 -81
  885. package/node_modules/moment/src/locale/se.js +0 -57
  886. package/node_modules/moment/src/locale/si.js +0 -69
  887. package/node_modules/moment/src/locale/sk.js +0 -145
  888. package/node_modules/moment/src/locale/sl.js +0 -171
  889. package/node_modules/moment/src/locale/sq.js +0 -65
  890. package/node_modules/moment/src/locale/sr-cyrl.js +0 -127
  891. package/node_modules/moment/src/locale/sr.js +0 -129
  892. package/node_modules/moment/src/locale/ss.js +0 -84
  893. package/node_modules/moment/src/locale/sv.js +0 -68
  894. package/node_modules/moment/src/locale/sw.js +0 -55
  895. package/node_modules/moment/src/locale/ta.js +0 -131
  896. package/node_modules/moment/src/locale/te.js +0 -88
  897. package/node_modules/moment/src/locale/tet.js +0 -68
  898. package/node_modules/moment/src/locale/tg.js +0 -117
  899. package/node_modules/moment/src/locale/th.js +0 -65
  900. package/node_modules/moment/src/locale/tk.js +0 -91
  901. package/node_modules/moment/src/locale/tl-ph.js +0 -57
  902. package/node_modules/moment/src/locale/tlh.js +0 -124
  903. package/node_modules/moment/src/locale/tr.js +0 -106
  904. package/node_modules/moment/src/locale/tzl.js +0 -89
  905. package/node_modules/moment/src/locale/tzm-latn.js +0 -54
  906. package/node_modules/moment/src/locale/tzm.js +0 -54
  907. package/node_modules/moment/src/locale/ug-cn.js +0 -111
  908. package/node_modules/moment/src/locale/uk.js +0 -167
  909. package/node_modules/moment/src/locale/ur.js +0 -82
  910. package/node_modules/moment/src/locale/uz-latn.js +0 -54
  911. package/node_modules/moment/src/locale/uz.js +0 -51
  912. package/node_modules/moment/src/locale/vi.js +0 -80
  913. package/node_modules/moment/src/locale/x-pseudo.js +0 -73
  914. package/node_modules/moment/src/locale/yo.js +0 -53
  915. package/node_modules/moment/src/locale/zh-cn.js +0 -120
  916. package/node_modules/moment/src/locale/zh-hk.js +0 -101
  917. package/node_modules/moment/src/locale/zh-mo.js +0 -100
  918. package/node_modules/moment/src/locale/zh-tw.js +0 -99
  919. package/node_modules/moment/src/moment.js +0 -93
  920. package/node_modules/moment/ts3.1-typings/moment.d.ts +0 -785
  921. package/node_modules/nanoid/LICENSE +0 -20
  922. package/node_modules/nanoid/README.md +0 -38
  923. package/node_modules/nanoid/async/index.browser.js +0 -33
  924. package/node_modules/nanoid/async/index.d.ts +0 -56
  925. package/node_modules/nanoid/async/index.js +0 -34
  926. package/node_modules/nanoid/async/index.native.js +0 -25
  927. package/node_modules/nanoid/bin/nanoid.js +0 -46
  928. package/node_modules/nanoid/index.browser.js +0 -33
  929. package/node_modules/nanoid/index.d.ts +0 -91
  930. package/node_modules/nanoid/index.js +0 -45
  931. package/node_modules/nanoid/nanoid.js +0 -1
  932. package/node_modules/nanoid/non-secure/index.d.ts +0 -33
  933. package/node_modules/nanoid/non-secure/index.js +0 -20
  934. package/node_modules/nanoid/package.json +0 -46
  935. package/node_modules/nanoid/url-alphabet/index.js +0 -2
  936. package/node_modules/ts-md5/LICENSE +0 -21
  937. package/node_modules/ts-md5/README.md +0 -101
  938. package/node_modules/ts-md5/dist/cjs/index.d.ts +0 -3
  939. package/node_modules/ts-md5/dist/cjs/index.js +0 -10
  940. package/node_modules/ts-md5/dist/cjs/index.js.map +0 -1
  941. package/node_modules/ts-md5/dist/cjs/md5.d.ts +0 -70
  942. package/node_modules/ts-md5/dist/cjs/md5.js +0 -429
  943. package/node_modules/ts-md5/dist/cjs/md5.js.map +0 -1
  944. package/node_modules/ts-md5/dist/cjs/md5_file_hasher.d.ts +0 -25
  945. package/node_modules/ts-md5/dist/cjs/md5_file_hasher.js +0 -96
  946. package/node_modules/ts-md5/dist/cjs/md5_file_hasher.js.map +0 -1
  947. package/node_modules/ts-md5/dist/cjs/parallel_hasher.d.ts +0 -22
  948. package/node_modules/ts-md5/dist/cjs/parallel_hasher.js +0 -69
  949. package/node_modules/ts-md5/dist/cjs/parallel_hasher.js.map +0 -1
  950. package/node_modules/ts-md5/dist/esm/index.d.ts +0 -3
  951. package/node_modules/ts-md5/dist/esm/index.js +0 -4
  952. package/node_modules/ts-md5/dist/esm/index.js.map +0 -1
  953. package/node_modules/ts-md5/dist/esm/md5.d.ts +0 -70
  954. package/node_modules/ts-md5/dist/esm/md5.js +0 -421
  955. package/node_modules/ts-md5/dist/esm/md5.js.map +0 -1
  956. package/node_modules/ts-md5/dist/esm/md5_file_hasher.d.ts +0 -25
  957. package/node_modules/ts-md5/dist/esm/md5_file_hasher.js +0 -89
  958. package/node_modules/ts-md5/dist/esm/md5_file_hasher.js.map +0 -1
  959. package/node_modules/ts-md5/dist/esm/parallel_hasher.d.ts +0 -22
  960. package/node_modules/ts-md5/dist/esm/parallel_hasher.js +0 -64
  961. package/node_modules/ts-md5/dist/esm/parallel_hasher.js.map +0 -1
  962. package/node_modules/ts-md5/dist/md5.js +0 -429
  963. package/node_modules/ts-md5/dist/md5_worker.js +0 -523
  964. package/node_modules/ts-md5/package.json +0 -82
  965. package/node_modules/ts-md5/src/index.ts +0 -4
  966. package/node_modules/ts-md5/src/md5.ts +0 -473
  967. package/node_modules/ts-md5/src/md5_file_hasher.ts +0 -110
  968. package/node_modules/ts-md5/src/parallel_hasher.ts +0 -90
  969. package/node_modules/ts-md5/src/worker.js +0 -20
  970. package/tfsec.json +0 -4
@@ -0,0 +1,589 @@
1
+ "use strict";
2
+ var _a, _b, _c;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.UpdateResource = exports.UpdateResourceTimeoutsOutputReference = exports.UpdateResourceRetryOutputReference = void 0;
5
+ exports.updateResourceRetryToTerraform = updateResourceRetryToTerraform;
6
+ exports.updateResourceTimeoutsToTerraform = updateResourceTimeoutsToTerraform;
7
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
8
+ // https://registry.terraform.io/providers/azure/azapi/2.7.0/docs/resources/update_resource
9
+ // generated from terraform resource schema
10
+ const cdktf = require("cdktf");
11
+ function updateResourceRetryToTerraform(struct) {
12
+ if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
13
+ return struct;
14
+ }
15
+ if (cdktf.isComplexElement(struct)) {
16
+ throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
17
+ }
18
+ return {
19
+ error_message_regex: cdktf.listMapper(cdktf.stringToTerraform, false)(struct.errorMessageRegex),
20
+ interval_seconds: cdktf.numberToTerraform(struct.intervalSeconds),
21
+ max_interval_seconds: cdktf.numberToTerraform(struct.maxIntervalSeconds),
22
+ multiplier: cdktf.numberToTerraform(struct.multiplier),
23
+ randomization_factor: cdktf.numberToTerraform(struct.randomizationFactor),
24
+ };
25
+ }
26
+ class UpdateResourceRetryOutputReference extends cdktf.ComplexObject {
27
+ /**
28
+ * @param terraformResource The parent resource
29
+ * @param terraformAttribute The attribute on the parent resource this class is referencing
30
+ */
31
+ constructor(terraformResource, terraformAttribute) {
32
+ super(terraformResource, terraformAttribute, false);
33
+ this.isEmptyObject = false;
34
+ }
35
+ get internalValue() {
36
+ if (this.resolvableValue) {
37
+ return this.resolvableValue;
38
+ }
39
+ let hasAnyValues = this.isEmptyObject;
40
+ const internalValueResult = {};
41
+ if (this._errorMessageRegex !== undefined) {
42
+ hasAnyValues = true;
43
+ internalValueResult.errorMessageRegex = this._errorMessageRegex;
44
+ }
45
+ if (this._intervalSeconds !== undefined) {
46
+ hasAnyValues = true;
47
+ internalValueResult.intervalSeconds = this._intervalSeconds;
48
+ }
49
+ if (this._maxIntervalSeconds !== undefined) {
50
+ hasAnyValues = true;
51
+ internalValueResult.maxIntervalSeconds = this._maxIntervalSeconds;
52
+ }
53
+ if (this._multiplier !== undefined) {
54
+ hasAnyValues = true;
55
+ internalValueResult.multiplier = this._multiplier;
56
+ }
57
+ if (this._randomizationFactor !== undefined) {
58
+ hasAnyValues = true;
59
+ internalValueResult.randomizationFactor = this._randomizationFactor;
60
+ }
61
+ return hasAnyValues ? internalValueResult : undefined;
62
+ }
63
+ set internalValue(value) {
64
+ if (value === undefined) {
65
+ this.isEmptyObject = false;
66
+ this.resolvableValue = undefined;
67
+ this._errorMessageRegex = undefined;
68
+ this._intervalSeconds = undefined;
69
+ this._maxIntervalSeconds = undefined;
70
+ this._multiplier = undefined;
71
+ this._randomizationFactor = undefined;
72
+ }
73
+ else if (cdktf.Tokenization.isResolvable(value)) {
74
+ this.isEmptyObject = false;
75
+ this.resolvableValue = value;
76
+ }
77
+ else {
78
+ this.isEmptyObject = Object.keys(value).length === 0;
79
+ this.resolvableValue = undefined;
80
+ this._errorMessageRegex = value.errorMessageRegex;
81
+ this._intervalSeconds = value.intervalSeconds;
82
+ this._maxIntervalSeconds = value.maxIntervalSeconds;
83
+ this._multiplier = value.multiplier;
84
+ this._randomizationFactor = value.randomizationFactor;
85
+ }
86
+ }
87
+ get errorMessageRegex() {
88
+ return this.getListAttribute("error_message_regex");
89
+ }
90
+ set errorMessageRegex(value) {
91
+ this._errorMessageRegex = value;
92
+ }
93
+ // Temporarily expose input value. Use with caution.
94
+ get errorMessageRegexInput() {
95
+ return this._errorMessageRegex;
96
+ }
97
+ get intervalSeconds() {
98
+ return this.getNumberAttribute("interval_seconds");
99
+ }
100
+ set intervalSeconds(value) {
101
+ this._intervalSeconds = value;
102
+ }
103
+ resetIntervalSeconds() {
104
+ this._intervalSeconds = undefined;
105
+ }
106
+ // Temporarily expose input value. Use with caution.
107
+ get intervalSecondsInput() {
108
+ return this._intervalSeconds;
109
+ }
110
+ get maxIntervalSeconds() {
111
+ return this.getNumberAttribute("max_interval_seconds");
112
+ }
113
+ set maxIntervalSeconds(value) {
114
+ this._maxIntervalSeconds = value;
115
+ }
116
+ resetMaxIntervalSeconds() {
117
+ this._maxIntervalSeconds = undefined;
118
+ }
119
+ // Temporarily expose input value. Use with caution.
120
+ get maxIntervalSecondsInput() {
121
+ return this._maxIntervalSeconds;
122
+ }
123
+ get multiplier() {
124
+ return this.getNumberAttribute("multiplier");
125
+ }
126
+ set multiplier(value) {
127
+ this._multiplier = value;
128
+ }
129
+ resetMultiplier() {
130
+ this._multiplier = undefined;
131
+ }
132
+ // Temporarily expose input value. Use with caution.
133
+ get multiplierInput() {
134
+ return this._multiplier;
135
+ }
136
+ get randomizationFactor() {
137
+ return this.getNumberAttribute("randomization_factor");
138
+ }
139
+ set randomizationFactor(value) {
140
+ this._randomizationFactor = value;
141
+ }
142
+ resetRandomizationFactor() {
143
+ this._randomizationFactor = undefined;
144
+ }
145
+ // Temporarily expose input value. Use with caution.
146
+ get randomizationFactorInput() {
147
+ return this._randomizationFactor;
148
+ }
149
+ }
150
+ exports.UpdateResourceRetryOutputReference = UpdateResourceRetryOutputReference;
151
+ _a = JSII_RTTI_SYMBOL_1;
152
+ UpdateResourceRetryOutputReference[_a] = { fqn: "@microsoft/terraform-cdk-constructs.UpdateResourceRetryOutputReference", version: "1.0.0" };
153
+ function updateResourceTimeoutsToTerraform(struct) {
154
+ if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
155
+ return struct;
156
+ }
157
+ if (cdktf.isComplexElement(struct)) {
158
+ throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
159
+ }
160
+ return {
161
+ create: cdktf.stringToTerraform(struct.create),
162
+ delete: cdktf.stringToTerraform(struct.delete),
163
+ read: cdktf.stringToTerraform(struct.read),
164
+ update: cdktf.stringToTerraform(struct.update),
165
+ };
166
+ }
167
+ class UpdateResourceTimeoutsOutputReference extends cdktf.ComplexObject {
168
+ /**
169
+ * @param terraformResource The parent resource
170
+ * @param terraformAttribute The attribute on the parent resource this class is referencing
171
+ */
172
+ constructor(terraformResource, terraformAttribute) {
173
+ super(terraformResource, terraformAttribute, false);
174
+ this.isEmptyObject = false;
175
+ }
176
+ get internalValue() {
177
+ if (this.resolvableValue) {
178
+ return this.resolvableValue;
179
+ }
180
+ let hasAnyValues = this.isEmptyObject;
181
+ const internalValueResult = {};
182
+ if (this._create !== undefined) {
183
+ hasAnyValues = true;
184
+ internalValueResult.create = this._create;
185
+ }
186
+ if (this._delete !== undefined) {
187
+ hasAnyValues = true;
188
+ internalValueResult.delete = this._delete;
189
+ }
190
+ if (this._read !== undefined) {
191
+ hasAnyValues = true;
192
+ internalValueResult.read = this._read;
193
+ }
194
+ if (this._update !== undefined) {
195
+ hasAnyValues = true;
196
+ internalValueResult.update = this._update;
197
+ }
198
+ return hasAnyValues ? internalValueResult : undefined;
199
+ }
200
+ set internalValue(value) {
201
+ if (value === undefined) {
202
+ this.isEmptyObject = false;
203
+ this.resolvableValue = undefined;
204
+ this._create = undefined;
205
+ this._delete = undefined;
206
+ this._read = undefined;
207
+ this._update = undefined;
208
+ }
209
+ else if (cdktf.Tokenization.isResolvable(value)) {
210
+ this.isEmptyObject = false;
211
+ this.resolvableValue = value;
212
+ }
213
+ else {
214
+ this.isEmptyObject = Object.keys(value).length === 0;
215
+ this.resolvableValue = undefined;
216
+ this._create = value.create;
217
+ this._delete = value.delete;
218
+ this._read = value.read;
219
+ this._update = value.update;
220
+ }
221
+ }
222
+ get create() {
223
+ return this.getStringAttribute("create");
224
+ }
225
+ set create(value) {
226
+ this._create = value;
227
+ }
228
+ resetCreate() {
229
+ this._create = undefined;
230
+ }
231
+ // Temporarily expose input value. Use with caution.
232
+ get createInput() {
233
+ return this._create;
234
+ }
235
+ get delete() {
236
+ return this.getStringAttribute("delete");
237
+ }
238
+ set delete(value) {
239
+ this._delete = value;
240
+ }
241
+ resetDelete() {
242
+ this._delete = undefined;
243
+ }
244
+ // Temporarily expose input value. Use with caution.
245
+ get deleteInput() {
246
+ return this._delete;
247
+ }
248
+ get read() {
249
+ return this.getStringAttribute("read");
250
+ }
251
+ set read(value) {
252
+ this._read = value;
253
+ }
254
+ resetRead() {
255
+ this._read = undefined;
256
+ }
257
+ // Temporarily expose input value. Use with caution.
258
+ get readInput() {
259
+ return this._read;
260
+ }
261
+ get update() {
262
+ return this.getStringAttribute("update");
263
+ }
264
+ set update(value) {
265
+ this._update = value;
266
+ }
267
+ resetUpdate() {
268
+ this._update = undefined;
269
+ }
270
+ // Temporarily expose input value. Use with caution.
271
+ get updateInput() {
272
+ return this._update;
273
+ }
274
+ }
275
+ exports.UpdateResourceTimeoutsOutputReference = UpdateResourceTimeoutsOutputReference;
276
+ _b = JSII_RTTI_SYMBOL_1;
277
+ UpdateResourceTimeoutsOutputReference[_b] = { fqn: "@microsoft/terraform-cdk-constructs.UpdateResourceTimeoutsOutputReference", version: "1.0.0" };
278
+ /**
279
+ * Represents a {@link https://registry.terraform.io/providers/azure/azapi/2.7.0/docs/resources/update_resource azapi_update_resource}
280
+ */
281
+ class UpdateResource extends cdktf.TerraformResource {
282
+ // ===========
283
+ // INITIALIZER
284
+ // ===========
285
+ /**
286
+ * Create a new {@link https://registry.terraform.io/providers/azure/azapi/2.7.0/docs/resources/update_resource azapi_update_resource} Resource
287
+ *
288
+ * @param scope The scope in which to define this construct
289
+ * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
290
+ * @param options UpdateResourceConfig
291
+ */
292
+ constructor(scope, id, config) {
293
+ super(scope, id, {
294
+ terraformResourceType: "azapi_update_resource",
295
+ terraformGeneratorMetadata: {
296
+ providerName: "azapi",
297
+ providerVersion: "2.7.0",
298
+ providerVersionConstraint: "~> 2.7.0",
299
+ },
300
+ provider: config.provider,
301
+ dependsOn: config.dependsOn,
302
+ count: config.count,
303
+ lifecycle: config.lifecycle,
304
+ provisioners: config.provisioners,
305
+ connection: config.connection,
306
+ forEach: config.forEach,
307
+ });
308
+ // output - computed: true, optional: false, required: false
309
+ this._output = new cdktf.AnyMap(this, "output");
310
+ // retry - computed: false, optional: true, required: false
311
+ this._retry = new UpdateResourceRetryOutputReference(this, "retry");
312
+ // timeouts - computed: false, optional: true, required: false
313
+ this._timeouts = new UpdateResourceTimeoutsOutputReference(this, "timeouts");
314
+ this._body = config.body;
315
+ this._ignoreCasing = config.ignoreCasing;
316
+ this._ignoreMissingProperty = config.ignoreMissingProperty;
317
+ this._locks = config.locks;
318
+ this._name = config.name;
319
+ this._parentId = config.parentId;
320
+ this._readHeaders = config.readHeaders;
321
+ this._readQueryParameters = config.readQueryParameters;
322
+ this._resourceId = config.resourceId;
323
+ this._responseExportValues = config.responseExportValues;
324
+ this._retry.internalValue = config.retry;
325
+ this._sensitiveBody = config.sensitiveBody;
326
+ this._sensitiveBodyVersion = config.sensitiveBodyVersion;
327
+ this._type = config.type;
328
+ this._updateHeaders = config.updateHeaders;
329
+ this._updateQueryParameters = config.updateQueryParameters;
330
+ this._timeouts.internalValue = config.timeouts;
331
+ }
332
+ get body() {
333
+ return this.getAnyMapAttribute("body");
334
+ }
335
+ set body(value) {
336
+ this._body = value;
337
+ }
338
+ resetBody() {
339
+ this._body = undefined;
340
+ }
341
+ // Temporarily expose input value. Use with caution.
342
+ get bodyInput() {
343
+ return this._body;
344
+ }
345
+ // id - computed: true, optional: false, required: false
346
+ get id() {
347
+ return this.getStringAttribute("id");
348
+ }
349
+ get ignoreCasing() {
350
+ return this.getBooleanAttribute("ignore_casing");
351
+ }
352
+ set ignoreCasing(value) {
353
+ this._ignoreCasing = value;
354
+ }
355
+ resetIgnoreCasing() {
356
+ this._ignoreCasing = undefined;
357
+ }
358
+ // Temporarily expose input value. Use with caution.
359
+ get ignoreCasingInput() {
360
+ return this._ignoreCasing;
361
+ }
362
+ get ignoreMissingProperty() {
363
+ return this.getBooleanAttribute("ignore_missing_property");
364
+ }
365
+ set ignoreMissingProperty(value) {
366
+ this._ignoreMissingProperty = value;
367
+ }
368
+ resetIgnoreMissingProperty() {
369
+ this._ignoreMissingProperty = undefined;
370
+ }
371
+ // Temporarily expose input value. Use with caution.
372
+ get ignoreMissingPropertyInput() {
373
+ return this._ignoreMissingProperty;
374
+ }
375
+ get locks() {
376
+ return this.getListAttribute("locks");
377
+ }
378
+ set locks(value) {
379
+ this._locks = value;
380
+ }
381
+ resetLocks() {
382
+ this._locks = undefined;
383
+ }
384
+ // Temporarily expose input value. Use with caution.
385
+ get locksInput() {
386
+ return this._locks;
387
+ }
388
+ get name() {
389
+ return this.getStringAttribute("name");
390
+ }
391
+ set name(value) {
392
+ this._name = value;
393
+ }
394
+ resetName() {
395
+ this._name = undefined;
396
+ }
397
+ // Temporarily expose input value. Use with caution.
398
+ get nameInput() {
399
+ return this._name;
400
+ }
401
+ get output() {
402
+ return this._output;
403
+ }
404
+ get parentId() {
405
+ return this.getStringAttribute("parent_id");
406
+ }
407
+ set parentId(value) {
408
+ this._parentId = value;
409
+ }
410
+ resetParentId() {
411
+ this._parentId = undefined;
412
+ }
413
+ // Temporarily expose input value. Use with caution.
414
+ get parentIdInput() {
415
+ return this._parentId;
416
+ }
417
+ get readHeaders() {
418
+ return this.getStringMapAttribute("read_headers");
419
+ }
420
+ set readHeaders(value) {
421
+ this._readHeaders = value;
422
+ }
423
+ resetReadHeaders() {
424
+ this._readHeaders = undefined;
425
+ }
426
+ // Temporarily expose input value. Use with caution.
427
+ get readHeadersInput() {
428
+ return this._readHeaders;
429
+ }
430
+ get readQueryParameters() {
431
+ return this.interpolationForAttribute("read_query_parameters");
432
+ }
433
+ set readQueryParameters(value) {
434
+ this._readQueryParameters = value;
435
+ }
436
+ resetReadQueryParameters() {
437
+ this._readQueryParameters = undefined;
438
+ }
439
+ // Temporarily expose input value. Use with caution.
440
+ get readQueryParametersInput() {
441
+ return this._readQueryParameters;
442
+ }
443
+ get resourceId() {
444
+ return this.getStringAttribute("resource_id");
445
+ }
446
+ set resourceId(value) {
447
+ this._resourceId = value;
448
+ }
449
+ resetResourceId() {
450
+ this._resourceId = undefined;
451
+ }
452
+ // Temporarily expose input value. Use with caution.
453
+ get resourceIdInput() {
454
+ return this._resourceId;
455
+ }
456
+ get responseExportValues() {
457
+ return this.getAnyMapAttribute("response_export_values");
458
+ }
459
+ set responseExportValues(value) {
460
+ this._responseExportValues = value;
461
+ }
462
+ resetResponseExportValues() {
463
+ this._responseExportValues = undefined;
464
+ }
465
+ // Temporarily expose input value. Use with caution.
466
+ get responseExportValuesInput() {
467
+ return this._responseExportValues;
468
+ }
469
+ get retry() {
470
+ return this._retry;
471
+ }
472
+ putRetry(value) {
473
+ this._retry.internalValue = value;
474
+ }
475
+ resetRetry() {
476
+ this._retry.internalValue = undefined;
477
+ }
478
+ // Temporarily expose input value. Use with caution.
479
+ get retryInput() {
480
+ return this._retry.internalValue;
481
+ }
482
+ get sensitiveBody() {
483
+ return this.getAnyMapAttribute("sensitive_body");
484
+ }
485
+ set sensitiveBody(value) {
486
+ this._sensitiveBody = value;
487
+ }
488
+ resetSensitiveBody() {
489
+ this._sensitiveBody = undefined;
490
+ }
491
+ // Temporarily expose input value. Use with caution.
492
+ get sensitiveBodyInput() {
493
+ return this._sensitiveBody;
494
+ }
495
+ get sensitiveBodyVersion() {
496
+ return this.getStringMapAttribute("sensitive_body_version");
497
+ }
498
+ set sensitiveBodyVersion(value) {
499
+ this._sensitiveBodyVersion = value;
500
+ }
501
+ resetSensitiveBodyVersion() {
502
+ this._sensitiveBodyVersion = undefined;
503
+ }
504
+ // Temporarily expose input value. Use with caution.
505
+ get sensitiveBodyVersionInput() {
506
+ return this._sensitiveBodyVersion;
507
+ }
508
+ get type() {
509
+ return this.getStringAttribute("type");
510
+ }
511
+ set type(value) {
512
+ this._type = value;
513
+ }
514
+ // Temporarily expose input value. Use with caution.
515
+ get typeInput() {
516
+ return this._type;
517
+ }
518
+ get updateHeaders() {
519
+ return this.getStringMapAttribute("update_headers");
520
+ }
521
+ set updateHeaders(value) {
522
+ this._updateHeaders = value;
523
+ }
524
+ resetUpdateHeaders() {
525
+ this._updateHeaders = undefined;
526
+ }
527
+ // Temporarily expose input value. Use with caution.
528
+ get updateHeadersInput() {
529
+ return this._updateHeaders;
530
+ }
531
+ get updateQueryParameters() {
532
+ return this.interpolationForAttribute("update_query_parameters");
533
+ }
534
+ set updateQueryParameters(value) {
535
+ this._updateQueryParameters = value;
536
+ }
537
+ resetUpdateQueryParameters() {
538
+ this._updateQueryParameters = undefined;
539
+ }
540
+ // Temporarily expose input value. Use with caution.
541
+ get updateQueryParametersInput() {
542
+ return this._updateQueryParameters;
543
+ }
544
+ get timeouts() {
545
+ return this._timeouts;
546
+ }
547
+ putTimeouts(value) {
548
+ this._timeouts.internalValue = value;
549
+ }
550
+ resetTimeouts() {
551
+ this._timeouts.internalValue = undefined;
552
+ }
553
+ // Temporarily expose input value. Use with caution.
554
+ get timeoutsInput() {
555
+ return this._timeouts.internalValue;
556
+ }
557
+ // =========
558
+ // SYNTHESIS
559
+ // =========
560
+ synthesizeAttributes() {
561
+ return {
562
+ body: cdktf.hashMapper(cdktf.anyToTerraform)(this._body),
563
+ ignore_casing: cdktf.booleanToTerraform(this._ignoreCasing),
564
+ ignore_missing_property: cdktf.booleanToTerraform(this._ignoreMissingProperty),
565
+ locks: cdktf.listMapper(cdktf.stringToTerraform, false)(this._locks),
566
+ name: cdktf.stringToTerraform(this._name),
567
+ parent_id: cdktf.stringToTerraform(this._parentId),
568
+ read_headers: cdktf.hashMapper(cdktf.stringToTerraform)(this._readHeaders),
569
+ read_query_parameters: cdktf.hashMapper(cdktf.listMapper(cdktf.stringToTerraform, false))(this._readQueryParameters),
570
+ resource_id: cdktf.stringToTerraform(this._resourceId),
571
+ response_export_values: cdktf.hashMapper(cdktf.anyToTerraform)(this._responseExportValues),
572
+ retry: updateResourceRetryToTerraform(this._retry.internalValue),
573
+ sensitive_body: cdktf.hashMapper(cdktf.anyToTerraform)(this._sensitiveBody),
574
+ sensitive_body_version: cdktf.hashMapper(cdktf.stringToTerraform)(this._sensitiveBodyVersion),
575
+ type: cdktf.stringToTerraform(this._type),
576
+ update_headers: cdktf.hashMapper(cdktf.stringToTerraform)(this._updateHeaders),
577
+ update_query_parameters: cdktf.hashMapper(cdktf.listMapper(cdktf.stringToTerraform, false))(this._updateQueryParameters),
578
+ timeouts: updateResourceTimeoutsToTerraform(this._timeouts.internalValue),
579
+ };
580
+ }
581
+ }
582
+ exports.UpdateResource = UpdateResource;
583
+ _c = JSII_RTTI_SYMBOL_1;
584
+ UpdateResource[_c] = { fqn: "@microsoft/terraform-cdk-constructs.UpdateResource", version: "1.0.0" };
585
+ // =================
586
+ // STATIC PROPERTIES
587
+ // =================
588
+ UpdateResource.tfResourceType = "azapi_update_resource";
589
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29yZS1henVyZS9saWIvYXphcGkvcHJvdmlkZXJzLWF6YXBpL3VwZGF0ZS1yZXNvdXJjZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBMExBLHdFQXFCQztBQWtMRCw4RUFpQkM7O0FBbFpELDJGQUEyRjtBQUMzRiwyQ0FBMkM7QUFFM0MsK0JBQStCO0FBdUwvQixTQUFnQiw4QkFBOEIsQ0FDNUMsTUFBZ0Q7SUFFaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN6RSxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUksS0FBSyxDQUNiLG9IQUFvSCxDQUNySCxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU87UUFDTCxtQkFBbUIsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUNuQyxLQUFLLENBQUMsaUJBQWlCLEVBQ3ZCLEtBQUssQ0FDTixDQUFDLE1BQU8sQ0FBQyxpQkFBaUIsQ0FBQztRQUM1QixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTyxDQUFDLGVBQWUsQ0FBQztRQUNsRSxvQkFBb0IsRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTyxDQUFDLGtCQUFrQixDQUFDO1FBQ3pFLFVBQVUsRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTyxDQUFDLFVBQVUsQ0FBQztRQUN2RCxvQkFBb0IsRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTyxDQUFDLG1CQUFtQixDQUFDO0tBQzNFLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBYSxrQ0FBbUMsU0FB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QyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztTQUMxRSxDQUFDO0lBQ0osQ0FBQzs7QUF2WUgsd0NBd1lDOzs7QUF2WUMsb0JBQW9CO0FBQ3BCLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDRyw2QkFBYyxHQUFHLHVCQUF1QixBQUExQixDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy91cGRhdGVfcmVzb3VyY2Vcbi8vIGdlbmVyYXRlZCBmcm9tIHRlcnJhZm9ybSByZXNvdXJjZSBzY2hlbWFcblxuaW1wb3J0ICogYXMgY2RrdGYgZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG4vLyBDb25maWd1cmF0aW9uXG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlUmVzb3VyY2VDb25maWcgZXh0ZW5kcyBjZGt0Zi5UZXJyYWZvcm1NZXRhQXJndW1lbnRzIHtcbiAgLyoqXG4gICAqIEEgZHluYW1pYyBhdHRyaWJ1dGUgdGhhdCBjb250YWlucyB0aGUgcmVxdWVzdCBib2R5LlxuICAgKlxuICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy91cGRhdGVfcmVzb3VyY2UjYm9keSBVcGRhdGVSZXNvdXJjZSNib2R5fVxuICAgKi9cbiAgcmVhZG9ubHkgYm9keT86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIC8qKlxuICAgKiBXaGV0aGVyIGlnbm9yZSB0aGUgY2FzaW5nIG9mIHRoZSBwcm9wZXJ0eSBuYW1lcyBpbiB0aGUgcmVzcG9uc2UgYm9keS4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvdXBkYXRlX3Jlc291cmNlI2lnbm9yZV9jYXNpbmcgVXBkYXRlUmVzb3VyY2UjaWdub3JlX2Nhc2luZ31cbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUNhc2luZz86IGJvb2xlYW4gfCBjZGt0Zi5JUmVzb2x2YWJsZTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgaWdub3JlIG5vdCByZXR1cm5lZCBwcm9wZXJ0aWVzIGxpa2UgY3JlZGVudGlhbHMgaW4gYGJvZHlgIHRvIHN1cHByZXNzIHBsYW4tZGlmZi4gRGVmYXVsdHMgdG8gYHRydWVgLiBJdCdzIHJlY29tbWVuZCB0byBlbmFibGUgdGhpcyBvcHRpb24gd2hlbiBzb21lIHNlbnNpdGl2ZSBwcm9wZXJ0aWVzIGFyZSBub3QgcmV0dXJuZWQgaW4gcmVzcG9uc2UgYm9keSwgaW5zdGVhZCBvZiBzZXR0aW5nIHRoZW0gaW4gYGxpZmVjeWNsZS5pZ25vcmVfY2hhbmdlc2AgYmVjYXVzZSBpdCB3aWxsIG1ha2UgdGhlIHNlbnNpdGl2ZSBmaWVsZHMgdW5hYmxlIHRvIHVwZGF0ZS5cbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvdXBkYXRlX3Jlc291cmNlI2lnbm9yZV9taXNzaW5nX3Byb3BlcnR5IFVwZGF0ZVJlc291cmNlI2lnbm9yZV9taXNzaW5nX3Byb3BlcnR5fVxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlTWlzc2luZ1Byb3BlcnR5PzogYm9vbGVhbiB8IGNka3RmLklSZXNvbHZhYmxlO1xuICAvKipcbiAgICogQSBsaXN0IG9mIEFSTSByZXNvdXJjZSBJRHMgd2hpY2ggYXJlIHVzZWQgdG8gYXZvaWQgY3JlYXRlL21vZGlmeS9kZWxldGUgYXphcGkgcmVzb3VyY2VzIGF0IHRoZSBzYW1lIHRpbWUuXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3VwZGF0ZV9yZXNvdXJjZSNsb2NrcyBVcGRhdGVSZXNvdXJjZSNsb2Nrc31cbiAgICovXG4gIHJlYWRvbmx5IGxvY2tzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIEF6dXJlIHJlc291cmNlLiBDaGFuZ2luZyB0aGlzIGZvcmNlcyBhIG5ldyByZXNvdXJjZSB0byBiZSBjcmVhdGVkLlxuICAgKlxuICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy91cGRhdGVfcmVzb3VyY2UjbmFtZSBVcGRhdGVSZXNvdXJjZSNuYW1lfVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgLyoqXG4gICogVGhlIElEIG9mIHRoZSBhenVyZSByZXNvdXJjZSBpbiB3aGljaCB0aGlzIHJlc291cmNlIGlzIGNyZWF0ZWQuIEl0IHN1cHBvcnRzIGRpZmZlcmVudCBraW5kcyBvZiBkZXBsb3ltZW50IHNjb3BlIGZvciAqKnRvcCBsZXZlbCoqIHJlc291cmNlczpcblxuICAtIHJlc291cmNlIGdyb3VwIHNjb3BlOiBgcGFyZW50X2lkYCBzaG91bGQgYmUgdGhlIElEIG9mIGEgcmVzb3VyY2UgZ3JvdXAsIGl0J3MgcmVjb21tZW5kZWQgdG8gbWFuYWdlIGEgcmVzb3VyY2UgZ3JvdXAgYnkgYXp1cmVybV9yZXNvdXJjZV9ncm91cC5cblx0LSBtYW5hZ2VtZW50IGdyb3VwIHNjb3BlOiBgcGFyZW50X2lkYCBzaG91bGQgYmUgdGhlIElEIG9mIGEgbWFuYWdlbWVudCBncm91cCwgaXQncyByZWNvbW1lbmRlZCB0byBtYW5hZ2UgYSBtYW5hZ2VtZW50IGdyb3VwIGJ5IGF6dXJlcm1fbWFuYWdlbWVudF9ncm91cC5cblx0LSBleHRlbnNpb24gc2NvcGU6IGBwYXJlbnRfaWRgIHNob3VsZCBiZSB0aGUgSUQgb2YgdGhlIHJlc291cmNlIHlvdSdyZSBhZGRpbmcgdGhlIGV4dGVuc2lvbiB0by5cblx0LSBzdWJzY3JpcHRpb24gc2NvcGU6IGBwYXJlbnRfaWRgIHNob3VsZCBiZSBsaWtlIFxceDYwL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXFx4NjBcblx0LSB0ZW5hbnQgc2NvcGU6IGBwYXJlbnRfaWRgIHNob3VsZCBiZSAvXG5cbiAgRm9yIGNoaWxkIGxldmVsIHJlc291cmNlcywgdGhlIGBwYXJlbnRfaWRgIHNob3VsZCBiZSB0aGUgSUQgb2YgaXRzIHBhcmVudCByZXNvdXJjZSwgZm9yIGV4YW1wbGUsIHN1Ym5ldCByZXNvdXJjZSdzIGBwYXJlbnRfaWRgIGlzIHRoZSBJRCBvZiB0aGUgdm5ldC5cblxuICBGb3IgdHlwZSBgTWljcm9zb2Z0LlJlc291cmNlcy9yZXNvdXJjZUdyb3Vwc2AsIHRoZSBgcGFyZW50X2lkYCBjb3VsZCBiZSBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byBzdWJzY3JpcHRpb24gSUQgc3BlY2lmaWVkIGluIHByb3ZpZGVyIG9yIHRoZSBkZWZhdWx0IHN1YnNjcmlwdGlvbiAoWW91IGNvdWxkIGNoZWNrIHRoZSBkZWZhdWx0IHN1YnNjcmlwdGlvbiBieSBhenVyZSBjbGkgY29tbWFuZDogYGF6IGFjY291bnQgc2hvd2ApLlxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvdXBkYXRlX3Jlc291cmNlI3BhcmVudF9pZCBVcGRhdGVSZXNvdXJjZSNwYXJlbnRfaWR9XG4gICovXG4gIHJlYWRvbmx5IHBhcmVudElkPzogc3RyaW5nO1xuICAvKipcbiAgICogQSBtYXBwaW5nIG9mIGhlYWRlcnMgdG8gYmUgc2VudCB3aXRoIHRoZSByZWFkIHJlcXVlc3QuXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3VwZGF0ZV9yZXNvdXJjZSNyZWFkX2hlYWRlcnMgVXBkYXRlUmVzb3VyY2UjcmVhZF9oZWFkZXJzfVxuICAgKi9cbiAgcmVhZG9ubHkgcmVhZEhlYWRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAvKipcbiAgICogQSBtYXBwaW5nIG9mIHF1ZXJ5IHBhcmFtZXRlcnMgdG8gYmUgc2VudCB3aXRoIHRoZSByZWFkIHJlcXVlc3QuXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3VwZGF0ZV9yZXNvdXJjZSNyZWFkX3F1ZXJ5X3BhcmFtZXRlcnMgVXBkYXRlUmVzb3VyY2UjcmVhZF9xdWVyeV9wYXJhbWV0ZXJzfVxuICAgKi9cbiAgcmVhZG9ubHkgcmVhZFF1ZXJ5UGFyYW1ldGVycz86XG4gICAgfCB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH1cbiAgICB8IGNka3RmLklSZXNvbHZhYmxlO1xuICAvKipcbiAgICogVGhlIElEIG9mIGFuIGV4aXN0aW5nIEF6dXJlIHNvdXJjZS5cbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvdXBkYXRlX3Jlc291cmNlI3Jlc291cmNlX2lkIFVwZGF0ZVJlc291cmNlI3Jlc291cmNlX2lkfVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VJZD86IHN0cmluZztcbiAgLyoqXG4gICogVGhlIGF0dHJpYnV0ZSBjYW4gYWNjZXB0IGVpdGhlciBhIGxpc3Qgb3IgYSBtYXAuXG5cbi0gKipMaXN0Kio6IEEgbGlzdCBvZiBwYXRocyB0aGF0IG5lZWQgdG8gYmUgZXhwb3J0ZWQgZnJvbSB0aGUgcmVzcG9uc2UgYm9keS4gU2V0dGluZyBpdCB0byBgW1wiKlwiXWAgd2lsbCBleHBvcnQgdGhlIGZ1bGwgcmVzcG9uc2UgYm9keS4gSGVyZSdzIGFuIGV4YW1wbGUuIElmIGl0IHNldHMgdG8gYFtcInByb3BlcnRpZXMubG9naW5TZXJ2ZXJcIiwgXCJwcm9wZXJ0aWVzLnBvbGljaWVzLnF1YXJhbnRpbmVQb2xpY3kuc3RhdHVzXCJdYCwgaXQgd2lsbCBzZXQgdGhlIGZvbGxvd2luZyBIQ0wgb2JqZWN0IHRvIHRoZSBjb21wdXRlZCBwcm9wZXJ0eSBvdXRwdXQuXG5cblx0YGBgdGV4dFxuXHR7XG5cdFx0cHJvcGVydGllcyA9IHtcblx0XHRcdGxvZ2luU2VydmVyID0gXCJyZWdpc3RyeTEuYXp1cmVjci5pb1wiXG5cdFx0XHRwb2xpY2llcyA9IHtcblx0XHRcdFx0cXVhcmFudGluZVBvbGljeSA9IHtcblx0XHRcdFx0XHRzdGF0dXMgPSBcImRpc2FibGVkXCJcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRgYGBcblxuLSAqKk1hcCoqOiBBIG1hcCB3aGVyZSB0aGUga2V5IGlzIHRoZSBuYW1lIGZvciB0aGUgcmVzdWx0IGFuZCB0aGUgdmFsdWUgaXMgYSBKTUVTUGF0aCBxdWVyeSBzdHJpbmcgdG8gZmlsdGVyIHRoZSByZXNwb25zZS4gSGVyZSdzIGFuIGV4YW1wbGUuIElmIGl0IHNldHMgdG8gYHtcImxvZ2luX3NlcnZlclwiOiBcInByb3BlcnRpZXMubG9naW5TZXJ2ZXJcIiwgXCJxdWFyYW50aW5lX3N0YXR1c1wiOiBcInByb3BlcnRpZXMucG9saWNpZXMucXVhcmFudGluZVBvbGljeS5zdGF0dXNcIn1gLCBpdCB3aWxsIHNldCB0aGUgZm9sbG93aW5nIEhDTCBvYmplY3QgdG8gdGhlIGNvbXB1dGVkIHByb3BlcnR5IG91dHB1dC5cblxuXHRgYGB0ZXh0XG5cdHtcblx0XHRcImxvZ2luX3NlcnZlclwiID0gXCJyZWdpc3RyeTEuYXp1cmVjci5pb1wiXG5cdFx0XCJxdWFyYW50aW5lX3N0YXR1c1wiID0gXCJkaXNhYmxlZFwiXG5cdH1cblx0YGBgXG5cblRvIGxlYXJuIG1vcmUgYWJvdXQgSk1FU1BhdGgsIHZpc2l0IFtKTUVTUGF0aF0oaHR0cHM6Ly9qbWVzcGF0aC5vcmcvKS5cblxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvdXBkYXRlX3Jlc291cmNlI3Jlc3BvbnNlX2V4cG9ydF92YWx1ZXMgVXBkYXRlUmVzb3VyY2UjcmVzcG9uc2VfZXhwb3J0X3ZhbHVlc31cbiAgKi9cbiAgcmVhZG9ubHkgcmVzcG9uc2VFeHBvcnRWYWx1ZXM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuICAvKipcbiAgICogVGhlIHJldHJ5IG9iamVjdCBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6XG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3VwZGF0ZV9yZXNvdXJjZSNyZXRyeSBVcGRhdGVSZXNvdXJjZSNyZXRyeX1cbiAgICovXG4gIHJlYWRvbmx5IHJldHJ5PzogVXBkYXRlUmVzb3VyY2VSZXRyeTtcbiAgLyoqXG4gICAqIEEgZHluYW1pYyBhdHRyaWJ1dGUgdGhhdCBjb250YWlucyB0aGUgd3JpdGUtb25seSBwcm9wZXJ0aWVzIG9mIHRoZSByZXF1ZXN0IGJvZHkuIFRoaXMgd2lsbCBiZSBtZXJnZS1wYXRjaGVkIHRvIHRoZSBib2R5IHRvIGNvbnN0cnVjdCB0aGUgYWN0dWFsIHJlcXVlc3QgYm9keS5cbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvdXBkYXRlX3Jlc291cmNlI3NlbnNpdGl2ZV9ib2R5IFVwZGF0ZVJlc291cmNlI3NlbnNpdGl2ZV9ib2R5fVxuICAgKi9cbiAgcmVhZG9ubHkgc2Vuc2l0aXZlQm9keT86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIC8qKlxuICAgKiBBIG1hcCB3aGVyZSB0aGUga2V5IGlzIHRoZSBwYXRoIHRvIHRoZSBwcm9wZXJ0eSBpbiBgc2Vuc2l0aXZlX2JvZHlgIGFuZCB0aGUgdmFsdWUgaXMgdGhlIHZlcnNpb24gb2YgdGhlIHByb3BlcnR5LiBUaGUga2V5IGlzIGEgc3RyaW5nIGluIHRoZSBmb3JtYXQgb2YgYHBhdGgudG8ucHJvcGVydHlbaW5kZXhdLnN1YnByb3BlcnR5YCwgd2hlcmUgYGluZGV4YCBpcyB0aGUgaW5kZXggb2YgdGhlIGl0ZW0gaW4gYW4gYXJyYXkuIFdoZW4gdGhlIHZlcnNpb24gaXMgY2hhbmdlZCwgdGhlIHByb3BlcnR5IHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIHJlcXVlc3QgYm9keSwgb3RoZXJ3aXNlIGl0IHdpbGwgYmUgb21pdHRlZCBmcm9tIHRoZSByZXF1ZXN0IGJvZHkuXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3VwZGF0ZV9yZXNvdXJjZSNzZW5zaXRpdmVfYm9keV92ZXJzaW9uIFVwZGF0ZVJlc291cmNlI3NlbnNpdGl2ZV9ib2R5X3ZlcnNpb259XG4gICAqL1xuICByZWFkb25seSBzZW5zaXRpdmVCb2R5VmVyc2lvbj86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIC8qKlxuICAgKiBJbiBhIGZvcm1hdCBsaWtlIGA8cmVzb3VyY2UtdHlwZT5APGFwaS12ZXJzaW9uPmAuIGA8cmVzb3VyY2UtdHlwZT5gIGlzIHRoZSBBenVyZSByZXNvdXJjZSB0eXBlLCBmb3IgZXhhbXBsZSwgYE1pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50c2AuIGA8YXBpLXZlcnNpb24+YCBpcyB2ZXJzaW9uIG9mIHRoZSBBUEkgdXNlZCB0byBtYW5hZ2UgdGhpcyBhenVyZSByZXNvdXJjZS5cbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvdXBkYXRlX3Jlc291cmNlI3R5cGUgVXBkYXRlUmVzb3VyY2UjdHlwZX1cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbiAgLyoqXG4gICAqIEEgbWFwcGluZyBvZiBoZWFkZXJzIHRvIGJlIHNlbnQgd2l0aCB0aGUgdXBkYXRlIHJlcXVlc3QuXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3VwZGF0ZV9yZXNvdXJjZSN1cGRhdGVfaGVhZGVycyBVcGRhdGVSZXNvdXJjZSN1cGRhdGVfaGVhZGVyc31cbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZUhlYWRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAvKipcbiAgICogQSBtYXBwaW5nIG9mIHF1ZXJ5IHBhcmFtZXRlcnMgdG8gYmUgc2VudCB3aXRoIHRoZSB1cGRhdGUgcmVxdWVzdC5cbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvdXBkYXRlX3Jlc291cmNlI3VwZGF0ZV9xdWVyeV9wYXJhbWV0ZXJzIFVwZGF0ZVJlc291cmNlI3VwZGF0ZV9xdWVyeV9wYXJhbWV0ZXJzfVxuICAgKi9cbiAgcmVhZG9ubHkgdXBkYXRlUXVlcnlQYXJhbWV0ZXJzPzpcbiAgICB8IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfVxuICAgIHwgY2RrdGYuSVJlc29sdmFibGU7XG4gIC8qKlxuICAgKiB0aW1lb3V0cyBibG9ja1xuICAgKlxuICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy91cGRhdGVfcmVzb3VyY2UjdGltZW91dHMgVXBkYXRlUmVzb3VyY2UjdGltZW91dHN9XG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0cz86IFVwZGF0ZVJlc291cmNlVGltZW91dHM7XG59XG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVJlc291cmNlUmV0cnkge1xuICAvKipcbiAgICogQSBsaXN0IG9mIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdG8gbWF0Y2ggYWdhaW5zdCBlcnJvciBtZXNzYWdlcy4gSWYgYW55IG9mIHRoZSByZWd1bGFyIGV4cHJlc3Npb25zIG1hdGNoLCB0aGUgcmVxdWVzdCB3aWxsIGJlIHJldHJpZWQuXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3VwZGF0ZV9yZXNvdXJjZSNlcnJvcl9tZXNzYWdlX3JlZ2V4IFVwZGF0ZVJlc291cmNlI2Vycm9yX21lc3NhZ2VfcmVnZXh9XG4gICAqL1xuICByZWFkb25seSBlcnJvck1lc3NhZ2VSZWdleDogc3RyaW5nW107XG4gIC8qKlxuICAgKiBUaGUgYmFzZSBudW1iZXIgb2Ygc2Vjb25kcyB0byB3YWl0IGJldHdlZW4gcmV0cmllcy4gRGVmYXVsdCBpcyBgMTBgLlxuICAgKlxuICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy91cGRhdGVfcmVzb3VyY2UjaW50ZXJ2YWxfc2Vjb25kcyBVcGRhdGVSZXNvdXJjZSNpbnRlcnZhbF9zZWNvbmRzfVxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZXJ2YWxTZWNvbmRzPzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdCBiZXR3ZWVuIHJldHJpZXMuIERlZmF1bHQgaXMgYDE4MGAuXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3VwZGF0ZV9yZXNvdXJjZSNtYXhfaW50ZXJ2YWxfc2Vjb25kcyBVcGRhdGVSZXNvdXJjZSNtYXhfaW50ZXJ2YWxfc2Vjb25kc31cbiAgICovXG4gIHJlYWRvbmx5IG1heEludGVydmFsU2Vjb25kcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBtdWx0aXBsaWVyIHRvIGFwcGx5IHRvIHRoZSBpbnRlcnZhbCBiZXR3ZWVuIHJldHJpZXMuIERlZmF1bHQgaXMgYDEuNWAuXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2F6dXJlL2F6YXBpLzIuNy4wL2RvY3MvcmVzb3VyY2VzL3VwZGF0ZV9yZXNvdXJjZSNtdWx0aXBsaWVyIFVwZGF0ZVJlc291cmNlI211bHRpcGxpZXJ9XG4gICAqL1xuICByZWFkb25seSBtdWx0aXBsaWVyPzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIHJhbmRvbWl6YXRpb24gZmFjdG9yIHRvIGFwcGx5IHRvIHRoZSBpbnRlcnZhbCBiZXR3ZWVuIHJldHJpZXMuIFRoZSBmb3JtdWxhIGZvciB0aGUgcmFuZG9taXplZCBpbnRlcnZhbCBpczogYFJldHJ5SW50ZXJ2YWwgKiAocmFuZG9tIHZhbHVlIGluIHJhbmdlIFsxIC0gUmFuZG9taXphdGlvbkZhY3RvciwgMSArIFJhbmRvbWl6YXRpb25GYWN0b3JdKWAuIFRoZXJlZm9yZSBzZXQgdG8gemVybyBgMC4wYCBmb3Igbm8gcmFuZG9taXphdGlvbi4gRGVmYXVsdCBpcyBgMC41YC5cbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvdXBkYXRlX3Jlc291cmNlI3JhbmRvbWl6YXRpb25fZmFjdG9yIFVwZGF0ZVJlc291cmNlI3JhbmRvbWl6YXRpb25fZmFjdG9yfVxuICAgKi9cbiAgcmVhZG9ubHkgcmFuZG9taXphdGlvbkZhY3Rvcj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVJlc291cmNlUmV0cnlUb1RlcnJhZm9ybShcbiAgc3RydWN0PzogVXBkYXRlUmVzb3VyY2VSZXRyeSB8IGNka3RmLklSZXNvbHZhYmxlLFxuKTogYW55IHtcbiAgaWYgKCFjZGt0Zi5jYW5JbnNwZWN0KHN0cnVjdCkgfHwgY2RrdGYuVG9rZW5pemF0aW9uLmlzUmVzb2x2YWJsZShzdHJ1Y3QpKSB7XG4gICAgcmV0dXJuIHN0cnVjdDtcbiAgfVxuICBpZiAoY2RrdGYuaXNDb21wbGV4RWxlbWVudChzdHJ1Y3QpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJBIGNvbXBsZXggZWxlbWVudCB3YXMgdXNlZCBhcyBjb25maWd1cmF0aW9uLCB0aGlzIGlzIG5vdCBzdXBwb3J0ZWQ6IGh0dHBzOi8vY2RrLnRmL2NvbXBsZXgtb2JqZWN0LWFzLWNvbmZpZ3VyYXRpb25cIixcbiAgICApO1xuICB9XG4gIHJldHVybiB7XG4gICAgZXJyb3JfbWVzc2FnZV9yZWdleDogY2RrdGYubGlzdE1hcHBlcihcbiAgICAgIGNka3RmLnN0cmluZ1RvVGVycmFmb3JtLFxuICAgICAgZmFsc2UsXG4gICAgKShzdHJ1Y3QhLmVycm9yTWVzc2FnZVJlZ2V4KSxcbiAgICBpbnRlcnZhbF9zZWNvbmRzOiBjZGt0Zi5udW1iZXJUb1RlcnJhZm9ybShzdHJ1Y3QhLmludGVydmFsU2Vjb25kcyksXG4gICAgbWF4X2ludGVydmFsX3NlY29uZHM6IGNka3RmLm51bWJlclRvVGVycmFmb3JtKHN0cnVjdCEubWF4SW50ZXJ2YWxTZWNvbmRzKSxcbiAgICBtdWx0aXBsaWVyOiBjZGt0Zi5udW1iZXJUb1RlcnJhZm9ybShzdHJ1Y3QhLm11bHRpcGxpZXIpLFxuICAgIHJhbmRvbWl6YXRpb25fZmFjdG9yOiBjZGt0Zi5udW1iZXJUb1RlcnJhZm9ybShzdHJ1Y3QhLnJhbmRvbWl6YXRpb25GYWN0b3IpLFxuICB9O1xufVxuXG5leHBvcnQgY2xhc3MgVXBkYXRlUmVzb3VyY2VSZXRyeU91dHB1dFJlZmVyZW5jZSBleHRlbmRzIGNka3RmLkNvbXBsZXhPYmplY3Qge1xuICBwcml2YXRlIGlzRW1wdHlPYmplY3QgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZXNvbHZhYmxlVmFsdWU/OiBjZGt0Zi5JUmVzb2x2YWJsZTtcblxuICAvKipcbiAgICogQHBhcmFtIHRlcnJhZm9ybVJlc291cmNlIFRoZSBwYXJlbnQgcmVzb3VyY2VcbiAgICogQHBhcmFtIHRlcnJhZm9ybUF0dHJpYnV0ZSBUaGUgYXR0cmlidXRlIG9uIHRoZSBwYXJlbnQgcmVzb3VyY2UgdGhpcyBjbGFzcyBpcyByZWZlcmVuY2luZ1xuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHRlcnJhZm9ybVJlc291cmNlOiBjZGt0Zi5JSW50ZXJwb2xhdGluZ1BhcmVudCxcbiAgICB0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIodGVycmFmb3JtUmVzb3VyY2UsIHRlcnJhZm9ybUF0dHJpYnV0ZSwgZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIGdldCBpbnRlcm5hbFZhbHVlKCk6XG4gICAgfCBVcGRhdGVSZXNvdXJjZVJldHJ5XG4gICAgfCBjZGt0Zi5JUmVzb2x2YWJsZVxuICAgIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5yZXNvbHZhYmxlVmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlc29sdmFibGVWYWx1ZTtcbiAgICB9XG4gICAgbGV0IGhhc0FueVZhbHVlcyA9IHRoaXMuaXNFbXB0eU9iamVjdDtcbiAgICBjb25zdCBpbnRlcm5hbFZhbHVlUmVzdWx0OiBhbnkgPSB7fTtcbiAgICBpZiAodGhpcy5fZXJyb3JNZXNzYWdlUmVnZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgaGFzQW55VmFsdWVzID0gdHJ1ZTtcbiAgICAgIGludGVybmFsVmFsdWVSZXN1bHQuZXJyb3JNZXNzYWdlUmVnZXggPSB0aGlzLl9lcnJvck1lc3NhZ2VSZWdleDtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2ludGVydmFsU2Vjb25kcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBoYXNBbnlWYWx1ZXMgPSB0cnVlO1xuICAgICAgaW50ZXJuYWxWYWx1ZVJlc3VsdC5pbnRlcnZhbFNlY29uZHMgPSB0aGlzLl9pbnRlcnZhbFNlY29uZHM7XG4gICAgfVxuICAgIGlmICh0aGlzLl9tYXhJbnRlcnZhbFNlY29uZHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaGFzQW55VmFsdWVzID0gdHJ1ZTtcbiAgICAgIGludGVybmFsVmFsdWVSZXN1bHQubWF4SW50ZXJ2YWxTZWNvbmRzID0gdGhpcy5fbWF4SW50ZXJ2YWxTZWNvbmRzO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbXVsdGlwbGllciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBoYXNBbnlWYWx1ZXMgPSB0cnVlO1xuICAgICAgaW50ZXJuYWxWYWx1ZVJlc3VsdC5tdWx0aXBsaWVyID0gdGhpcy5fbXVsdGlwbGllcjtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3JhbmRvbWl6YXRpb25GYWN0b3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaGFzQW55VmFsdWVzID0gdHJ1ZTtcbiAgICAgIGludGVybmFsVmFsdWVSZXN1bHQucmFuZG9taXphdGlvbkZhY3RvciA9IHRoaXMuX3JhbmRvbWl6YXRpb25GYWN0b3I7XG4gICAgfVxuICAgIHJldHVybiBoYXNBbnlWYWx1ZXMgPyBpbnRlcm5hbFZhbHVlUmVzdWx0IDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHNldCBpbnRlcm5hbFZhbHVlKFxuICAgIHZhbHVlOiBVcGRhdGVSZXNvdXJjZVJldHJ5IHwgY2RrdGYuSVJlc29sdmFibGUgfCB1bmRlZmluZWQsXG4gICkge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmlzRW1wdHlPYmplY3QgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVzb2x2YWJsZVZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fZXJyb3JNZXNzYWdlUmVnZXggPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9pbnRlcnZhbFNlY29uZHMgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9tYXhJbnRlcnZhbFNlY29uZHMgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9tdWx0aXBsaWVyID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fcmFuZG9taXphdGlvbkZhY3RvciA9IHVuZGVmaW5lZDtcbiAgICB9IGVsc2UgaWYgKGNka3RmLlRva2VuaXphdGlvbi5pc1Jlc29sdmFibGUodmFsdWUpKSB7XG4gICAgICB0aGlzLmlzRW1wdHlPYmplY3QgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVzb2x2YWJsZVZhbHVlID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNFbXB0eU9iamVjdCA9IE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDA7XG4gICAgICB0aGlzLnJlc29sdmFibGVWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX2Vycm9yTWVzc2FnZVJlZ2V4ID0gdmFsdWUuZXJyb3JNZXNzYWdlUmVnZXg7XG4gICAgICB0aGlzLl9pbnRlcnZhbFNlY29uZHMgPSB2YWx1ZS5pbnRlcnZhbFNlY29uZHM7XG4gICAgICB0aGlzLl9tYXhJbnRlcnZhbFNlY29uZHMgPSB2YWx1ZS5tYXhJbnRlcnZhbFNlY29uZHM7XG4gICAgICB0aGlzLl9tdWx0aXBsaWVyID0gdmFsdWUubXVsdGlwbGllcjtcbiAgICAgIHRoaXMuX3JhbmRvbWl6YXRpb25GYWN0b3IgPSB2YWx1ZS5yYW5kb21pemF0aW9uRmFjdG9yO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVycm9yX21lc3NhZ2VfcmVnZXggLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiBmYWxzZSwgcmVxdWlyZWQ6IHRydWVcbiAgcHJpdmF0ZSBfZXJyb3JNZXNzYWdlUmVnZXg/OiBzdHJpbmdbXTtcbiAgcHVibGljIGdldCBlcnJvck1lc3NhZ2VSZWdleCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRMaXN0QXR0cmlidXRlKFwiZXJyb3JfbWVzc2FnZV9yZWdleFwiKTtcbiAgfVxuICBwdWJsaWMgc2V0IGVycm9yTWVzc2FnZVJlZ2V4KHZhbHVlOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX2Vycm9yTWVzc2FnZVJlZ2V4ID0gdmFsdWU7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGVycm9yTWVzc2FnZVJlZ2V4SW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Vycm9yTWVzc2FnZVJlZ2V4O1xuICB9XG5cbiAgLy8gaW50ZXJ2YWxfc2Vjb25kcyAtIGNvbXB1dGVkOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2ludGVydmFsU2Vjb25kcz86IG51bWJlcjtcbiAgcHVibGljIGdldCBpbnRlcnZhbFNlY29uZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TnVtYmVyQXR0cmlidXRlKFwiaW50ZXJ2YWxfc2Vjb25kc1wiKTtcbiAgfVxuICBwdWJsaWMgc2V0IGludGVydmFsU2Vjb25kcyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5faW50ZXJ2YWxTZWNvbmRzID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0SW50ZXJ2YWxTZWNvbmRzKCkge1xuICAgIHRoaXMuX2ludGVydmFsU2Vjb25kcyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgaW50ZXJ2YWxTZWNvbmRzSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ludGVydmFsU2Vjb25kcztcbiAgfVxuXG4gIC8vIG1heF9pbnRlcnZhbF9zZWNvbmRzIC0gY29tcHV0ZWQ6IHRydWUsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfbWF4SW50ZXJ2YWxTZWNvbmRzPzogbnVtYmVyO1xuICBwdWJsaWMgZ2V0IG1heEludGVydmFsU2Vjb25kcygpIHtcbiAgICByZXR1cm4gdGhpcy5nZXROdW1iZXJBdHRyaWJ1dGUoXCJtYXhfaW50ZXJ2YWxfc2Vjb25kc1wiKTtcbiAgfVxuICBwdWJsaWMgc2V0IG1heEludGVydmFsU2Vjb25kcyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fbWF4SW50ZXJ2YWxTZWNvbmRzID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0TWF4SW50ZXJ2YWxTZWNvbmRzKCkge1xuICAgIHRoaXMuX21heEludGVydmFsU2Vjb25kcyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgbWF4SW50ZXJ2YWxTZWNvbmRzSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21heEludGVydmFsU2Vjb25kcztcbiAgfVxuXG4gIC8vIG11bHRpcGxpZXIgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9tdWx0aXBsaWVyPzogbnVtYmVyO1xuICBwdWJsaWMgZ2V0IG11bHRpcGxpZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TnVtYmVyQXR0cmlidXRlKFwibXVsdGlwbGllclwiKTtcbiAgfVxuICBwdWJsaWMgc2V0IG11bHRpcGxpZXIodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX211bHRpcGxpZXIgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRNdWx0aXBsaWVyKCkge1xuICAgIHRoaXMuX211bHRpcGxpZXIgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IG11bHRpcGxpZXJJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbXVsdGlwbGllcjtcbiAgfVxuXG4gIC8vIHJhbmRvbWl6YXRpb25fZmFjdG9yIC0gY29tcHV0ZWQ6IHRydWUsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfcmFuZG9taXphdGlvbkZhY3Rvcj86IG51bWJlcjtcbiAgcHVibGljIGdldCByYW5kb21pemF0aW9uRmFjdG9yKCkge1xuICAgIHJldHVybiB0aGlzLmdldE51bWJlckF0dHJpYnV0ZShcInJhbmRvbWl6YXRpb25fZmFjdG9yXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgcmFuZG9taXphdGlvbkZhY3Rvcih2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fcmFuZG9taXphdGlvbkZhY3RvciA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFJhbmRvbWl6YXRpb25GYWN0b3IoKSB7XG4gICAgdGhpcy5fcmFuZG9taXphdGlvbkZhY3RvciA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgcmFuZG9taXphdGlvbkZhY3RvcklucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9yYW5kb21pemF0aW9uRmFjdG9yO1xuICB9XG59XG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVJlc291cmNlVGltZW91dHMge1xuICAvKipcbiAgICogQSBzdHJpbmcgdGhhdCBjYW4gYmUgW3BhcnNlZCBhcyBhIGR1cmF0aW9uXShodHRwczovL3BrZy5nby5kZXYvdGltZSNQYXJzZUR1cmF0aW9uKSBjb25zaXN0aW5nIG9mIG51bWJlcnMgYW5kIHVuaXQgc3VmZml4ZXMsIHN1Y2ggYXMgXCIzMHNcIiBvciBcIjJoNDVtXCIuIFZhbGlkIHRpbWUgdW5pdHMgYXJlIFwic1wiIChzZWNvbmRzKSwgXCJtXCIgKG1pbnV0ZXMpLCBcImhcIiAoaG91cnMpLlxuICAgKlxuICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy91cGRhdGVfcmVzb3VyY2UjY3JlYXRlIFVwZGF0ZVJlc291cmNlI2NyZWF0ZX1cbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEEgc3RyaW5nIHRoYXQgY2FuIGJlIFtwYXJzZWQgYXMgYSBkdXJhdGlvbl0oaHR0cHM6Ly9wa2cuZ28uZGV2L3RpbWUjUGFyc2VEdXJhdGlvbikgY29uc2lzdGluZyBvZiBudW1iZXJzIGFuZCB1bml0IHN1ZmZpeGVzLCBzdWNoIGFzIFwiMzBzXCIgb3IgXCIyaDQ1bVwiLiBWYWxpZCB0aW1lIHVuaXRzIGFyZSBcInNcIiAoc2Vjb25kcyksIFwibVwiIChtaW51dGVzKSwgXCJoXCIgKGhvdXJzKS4gU2V0dGluZyBhIHRpbWVvdXQgZm9yIGEgRGVsZXRlIG9wZXJhdGlvbiBpcyBvbmx5IGFwcGxpY2FibGUgaWYgY2hhbmdlcyBhcmUgc2F2ZWQgaW50byBzdGF0ZSBiZWZvcmUgdGhlIGRlc3Ryb3kgb3BlcmF0aW9uIG9jY3Vycy5cbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvdXBkYXRlX3Jlc291cmNlI2RlbGV0ZSBVcGRhdGVSZXNvdXJjZSNkZWxldGV9XG4gICAqL1xuICByZWFkb25seSBkZWxldGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIHN0cmluZyB0aGF0IGNhbiBiZSBbcGFyc2VkIGFzIGEgZHVyYXRpb25dKGh0dHBzOi8vcGtnLmdvLmRldi90aW1lI1BhcnNlRHVyYXRpb24pIGNvbnNpc3Rpbmcgb2YgbnVtYmVycyBhbmQgdW5pdCBzdWZmaXhlcywgc3VjaCBhcyBcIjMwc1wiIG9yIFwiMmg0NW1cIi4gVmFsaWQgdGltZSB1bml0cyBhcmUgXCJzXCIgKHNlY29uZHMpLCBcIm1cIiAobWludXRlcyksIFwiaFwiIChob3VycykuIFJlYWQgb3BlcmF0aW9ucyBvY2N1ciBkdXJpbmcgYW55IHJlZnJlc2ggb3IgcGxhbm5pbmcgb3BlcmF0aW9uIHdoZW4gcmVmcmVzaCBpcyBlbmFibGVkLlxuICAgKlxuICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy91cGRhdGVfcmVzb3VyY2UjcmVhZCBVcGRhdGVSZXNvdXJjZSNyZWFkfVxuICAgKi9cbiAgcmVhZG9ubHkgcmVhZD86IHN0cmluZztcbiAgLyoqXG4gICAqIEEgc3RyaW5nIHRoYXQgY2FuIGJlIFtwYXJzZWQgYXMgYSBkdXJhdGlvbl0oaHR0cHM6Ly9wa2cuZ28uZGV2L3RpbWUjUGFyc2VEdXJhdGlvbikgY29uc2lzdGluZyBvZiBudW1iZXJzIGFuZCB1bml0IHN1ZmZpeGVzLCBzdWNoIGFzIFwiMzBzXCIgb3IgXCIyaDQ1bVwiLiBWYWxpZCB0aW1lIHVuaXRzIGFyZSBcInNcIiAoc2Vjb25kcyksIFwibVwiIChtaW51dGVzKSwgXCJoXCIgKGhvdXJzKS5cbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvdXBkYXRlX3Jlc291cmNlI3VwZGF0ZSBVcGRhdGVSZXNvdXJjZSN1cGRhdGV9XG4gICAqL1xuICByZWFkb25seSB1cGRhdGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVSZXNvdXJjZVRpbWVvdXRzVG9UZXJyYWZvcm0oXG4gIHN0cnVjdD86IFVwZGF0ZVJlc291cmNlVGltZW91dHMgfCBjZGt0Zi5JUmVzb2x2YWJsZSxcbik6IGFueSB7XG4gIGlmICghY2RrdGYuY2FuSW5zcGVjdChzdHJ1Y3QpIHx8IGNka3RmLlRva2VuaXphdGlvbi5pc1Jlc29sdmFibGUoc3RydWN0KSkge1xuICAgIHJldHVybiBzdHJ1Y3Q7XG4gIH1cbiAgaWYgKGNka3RmLmlzQ29tcGxleEVsZW1lbnQoc3RydWN0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiQSBjb21wbGV4IGVsZW1lbnQgd2FzIHVzZWQgYXMgY29uZmlndXJhdGlvbiwgdGhpcyBpcyBub3Qgc3VwcG9ydGVkOiBodHRwczovL2Nkay50Zi9jb21wbGV4LW9iamVjdC1hcy1jb25maWd1cmF0aW9uXCIsXG4gICAgKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGNyZWF0ZTogY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0oc3RydWN0IS5jcmVhdGUpLFxuICAgIGRlbGV0ZTogY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0oc3RydWN0IS5kZWxldGUpLFxuICAgIHJlYWQ6IGNka3RmLnN0cmluZ1RvVGVycmFmb3JtKHN0cnVjdCEucmVhZCksXG4gICAgdXBkYXRlOiBjZGt0Zi5zdHJpbmdUb1RlcnJhZm9ybShzdHJ1Y3QhLnVwZGF0ZSksXG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGVSZXNvdXJjZVRpbWVvdXRzT3V0cHV0UmVmZXJlbmNlIGV4dGVuZHMgY2RrdGYuQ29tcGxleE9iamVjdCB7XG4gIHByaXZhdGUgaXNFbXB0eU9iamVjdCA9IGZhbHNlO1xuICBwcml2YXRlIHJlc29sdmFibGVWYWx1ZT86IGNka3RmLklSZXNvbHZhYmxlO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gdGVycmFmb3JtUmVzb3VyY2UgVGhlIHBhcmVudCByZXNvdXJjZVxuICAgKiBAcGFyYW0gdGVycmFmb3JtQXR0cmlidXRlIFRoZSBhdHRyaWJ1dGUgb24gdGhlIHBhcmVudCByZXNvdXJjZSB0aGlzIGNsYXNzIGlzIHJlZmVyZW5jaW5nXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgdGVycmFmb3JtUmVzb3VyY2U6IGNka3RmLklJbnRlcnBvbGF0aW5nUGFyZW50LFxuICAgIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nLFxuICApIHtcbiAgICBzdXBlcih0ZXJyYWZvcm1SZXNvdXJjZSwgdGVycmFmb3JtQXR0cmlidXRlLCBmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGludGVybmFsVmFsdWUoKTpcbiAgICB8IFVwZGF0ZVJlc291cmNlVGltZW91dHNcbiAgICB8IGNka3RmLklSZXNvbHZhYmxlXG4gICAgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLnJlc29sdmFibGVWYWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVzb2x2YWJsZVZhbHVlO1xuICAgIH1cbiAgICBsZXQgaGFzQW55VmFsdWVzID0gdGhpcy5pc0VtcHR5T2JqZWN0O1xuICAgIGNvbnN0IGludGVybmFsVmFsdWVSZXN1bHQ6IGFueSA9IHt9O1xuICAgIGlmICh0aGlzLl9jcmVhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaGFzQW55VmFsdWVzID0gdHJ1ZTtcbiAgICAgIGludGVybmFsVmFsdWVSZXN1bHQuY3JlYXRlID0gdGhpcy5fY3JlYXRlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZGVsZXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGhhc0FueVZhbHVlcyA9IHRydWU7XG4gICAgICBpbnRlcm5hbFZhbHVlUmVzdWx0LmRlbGV0ZSA9IHRoaXMuX2RlbGV0ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3JlYWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaGFzQW55VmFsdWVzID0gdHJ1ZTtcbiAgICAgIGludGVybmFsVmFsdWVSZXN1bHQucmVhZCA9IHRoaXMuX3JlYWQ7XG4gICAgfVxuICAgIGlmICh0aGlzLl91cGRhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaGFzQW55VmFsdWVzID0gdHJ1ZTtcbiAgICAgIGludGVybmFsVmFsdWVSZXN1bHQudXBkYXRlID0gdGhpcy5fdXBkYXRlO1xuICAgIH1cbiAgICByZXR1cm4gaGFzQW55VmFsdWVzID8gaW50ZXJuYWxWYWx1ZVJlc3VsdCA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgaW50ZXJuYWxWYWx1ZShcbiAgICB2YWx1ZTogVXBkYXRlUmVzb3VyY2VUaW1lb3V0cyB8IGNka3RmLklSZXNvbHZhYmxlIHwgdW5kZWZpbmVkLFxuICApIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5pc0VtcHR5T2JqZWN0ID0gZmFsc2U7XG4gICAgICB0aGlzLnJlc29sdmFibGVWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX2NyZWF0ZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX2RlbGV0ZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX3JlYWQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl91cGRhdGUgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIGlmIChjZGt0Zi5Ub2tlbml6YXRpb24uaXNSZXNvbHZhYmxlKHZhbHVlKSkge1xuICAgICAgdGhpcy5pc0VtcHR5T2JqZWN0ID0gZmFsc2U7XG4gICAgICB0aGlzLnJlc29sdmFibGVWYWx1ZSA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzRW1wdHlPYmplY3QgPSBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID09PSAwO1xuICAgICAgdGhpcy5yZXNvbHZhYmxlVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9jcmVhdGUgPSB2YWx1ZS5jcmVhdGU7XG4gICAgICB0aGlzLl9kZWxldGUgPSB2YWx1ZS5kZWxldGU7XG4gICAgICB0aGlzLl9yZWFkID0gdmFsdWUucmVhZDtcbiAgICAgIHRoaXMuX3VwZGF0ZSA9IHZhbHVlLnVwZGF0ZTtcbiAgICB9XG4gIH1cblxuICAvLyBjcmVhdGUgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfY3JlYXRlPzogc3RyaW5nO1xuICBwdWJsaWMgZ2V0IGNyZWF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoXCJjcmVhdGVcIik7XG4gIH1cbiAgcHVibGljIHNldCBjcmVhdGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2NyZWF0ZSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldENyZWF0ZSgpIHtcbiAgICB0aGlzLl9jcmVhdGUgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGNyZWF0ZUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGU7XG4gIH1cblxuICAvLyBkZWxldGUgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfZGVsZXRlPzogc3RyaW5nO1xuICBwdWJsaWMgZ2V0IGRlbGV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoXCJkZWxldGVcIik7XG4gIH1cbiAgcHVibGljIHNldCBkZWxldGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2RlbGV0ZSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldERlbGV0ZSgpIHtcbiAgICB0aGlzLl9kZWxldGUgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGRlbGV0ZUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9kZWxldGU7XG4gIH1cblxuICAvLyByZWFkIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3JlYWQ/OiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgcmVhZCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoXCJyZWFkXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgcmVhZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcmVhZCA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFJlYWQoKSB7XG4gICAgdGhpcy5fcmVhZCA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgcmVhZElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkO1xuICB9XG5cbiAgLy8gdXBkYXRlIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3VwZGF0ZT86IHN0cmluZztcbiAgcHVibGljIGdldCB1cGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKFwidXBkYXRlXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgdXBkYXRlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl91cGRhdGUgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRVcGRhdGUoKSB7XG4gICAgdGhpcy5fdXBkYXRlID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCB1cGRhdGVJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdXBkYXRlO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvYXp1cmUvYXphcGkvMi43LjAvZG9jcy9yZXNvdXJjZXMvdXBkYXRlX3Jlc291cmNlIGF6YXBpX3VwZGF0ZV9yZXNvdXJjZX1cbiAqL1xuZXhwb3J0IGNsYXNzIFVwZGF0ZVJlc291cmNlIGV4dGVuZHMgY2RrdGYuVGVycmFmb3JtUmVzb3VyY2Uge1xuICAvLyA9PT09PT09PT09PT09PT09PVxuICAvLyBTVEFUSUMgUFJPUEVSVElFU1xuICAvLyA9PT09PT09PT09PT09PT09PVxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHRmUmVzb3VyY2VUeXBlID0gXCJhemFwaV91cGRhdGVfcmVzb3VyY2VcIjtcblxuICAvLyA9PT09PT09PT09PVxuICAvLyBJTklUSUFMSVpFUlxuICAvLyA9PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9henVyZS9hemFwaS8yLjcuMC9kb2NzL3Jlc291cmNlcy91cGRhdGVfcmVzb3VyY2UgYXphcGlfdXBkYXRlX3Jlc291cmNlfSBSZXNvdXJjZVxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gaWQgVGhlIHNjb3BlZCBjb25zdHJ1Y3QgSUQuIE11c3QgYmUgdW5pcXVlIGFtb25nc3Qgc2libGluZ3MgaW4gdGhlIHNhbWUgc2NvcGVcbiAgICogQHBhcmFtIG9wdGlvbnMgVXBkYXRlUmVzb3VyY2VDb25maWdcbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgY29uZmlnOiBVcGRhdGVSZXNvdXJjZUNvbmZpZyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICB0ZXJyYWZvcm1SZXNvdXJjZVR5cGU6IFwiYXphcGlfdXBkYXRlX3Jlc291cmNlXCIsXG4gICAgICB0ZXJyYWZvcm1HZW5lcmF0b3JNZXRhZGF0YToge1xuICAgICAgICBwcm92aWRlck5hbWU6IFwiYXphcGlcIixcbiAgICAgICAgcHJvdmlkZXJWZXJzaW9uOiBcIjIuNy4wXCIsXG4gICAgICAgIHByb3ZpZGVyVmVyc2lvbkNvbnN0cmFpbnQ6IFwifj4gMi43LjBcIixcbiAgICAgIH0sXG4gICAgICBwcm92aWRlcjogY29uZmlnLnByb3ZpZGVyLFxuICAgICAgZGVwZW5kc09uOiBjb25maWcuZGVwZW5kc09uLFxuICAgICAgY291bnQ6IGNvbmZpZy5jb3VudCxcbiAgICAgIGxpZmVjeWNsZTogY29uZmlnLmxpZmVjeWNsZSxcbiAgICAgIHByb3Zpc2lvbmVyczogY29uZmlnLnByb3Zpc2lvbmVycyxcbiAgICAgIGNvbm5lY3Rpb246IGNvbmZpZy5jb25uZWN0aW9uLFxuICAgICAgZm9yRWFjaDogY29uZmlnLmZvckVhY2gsXG4gICAgfSk7XG4gICAgdGhpcy5fYm9keSA9IGNvbmZpZy5ib2R5O1xuICAgIHRoaXMuX2lnbm9yZUNhc2luZyA9IGNvbmZpZy5pZ25vcmVDYXNpbmc7XG4gICAgdGhpcy5faWdub3JlTWlzc2luZ1Byb3BlcnR5ID0gY29uZmlnLmlnbm9yZU1pc3NpbmdQcm9wZXJ0eTtcbiAgICB0aGlzLl9sb2NrcyA9IGNvbmZpZy5sb2NrcztcbiAgICB0aGlzLl9uYW1lID0gY29uZmlnLm5hbWU7XG4gICAgdGhpcy5fcGFyZW50SWQgPSBjb25maWcucGFyZW50SWQ7XG4gICAgdGhpcy5fcmVhZEhlYWRlcnMgPSBjb25maWcucmVhZEhlYWRlcnM7XG4gICAgdGhpcy5fcmVhZFF1ZXJ5UGFyYW1ldGVycyA9IGNvbmZpZy5yZWFkUXVlcnlQYXJhbWV0ZXJzO1xuICAgIHRoaXMuX3Jlc291cmNlSWQgPSBjb25maWcucmVzb3VyY2VJZDtcbiAgICB0aGlzLl9yZXNwb25zZUV4cG9ydFZhbHVlcyA9IGNvbmZpZy5yZXNwb25zZUV4cG9ydFZhbHVlcztcbiAgICB0aGlzLl9yZXRyeS5pbnRlcm5hbFZhbHVlID0gY29uZmlnLnJldHJ5O1xuICAgIHRoaXMuX3NlbnNpdGl2ZUJvZHkgPSBjb25maWcuc2Vuc2l0aXZlQm9keTtcbiAgICB0aGlzLl9zZW5zaXRpdmVCb2R5VmVyc2lvbiA9IGNvbmZpZy5zZW5zaXRpdmVCb2R5VmVyc2lvbjtcbiAgICB0aGlzLl90eXBlID0gY29uZmlnLnR5cGU7XG4gICAgdGhpcy5fdXBkYXRlSGVhZGVycyA9IGNvbmZpZy51cGRhdGVIZWFkZXJzO1xuICAgIHRoaXMuX3VwZGF0ZVF1ZXJ5UGFyYW1ldGVycyA9IGNvbmZpZy51cGRhdGVRdWVyeVBhcmFtZXRlcnM7XG4gICAgdGhpcy5fdGltZW91dHMuaW50ZXJuYWxWYWx1ZSA9IGNvbmZpZy50aW1lb3V0cztcbiAgfVxuXG4gIC8vID09PT09PT09PT1cbiAgLy8gQVRUUklCVVRFU1xuICAvLyA9PT09PT09PT09XG5cbiAgLy8gYm9keSAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9ib2R5PzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgcHVibGljIGdldCBib2R5KCkge1xuICAgIHJldHVybiB0aGlzLmdldEFueU1hcEF0dHJpYnV0ZShcImJvZHlcIik7XG4gIH1cbiAgcHVibGljIHNldCBib2R5KHZhbHVlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgdGhpcy5fYm9keSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldEJvZHkoKSB7XG4gICAgdGhpcy5fYm9keSA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgYm9keUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9ib2R5O1xuICB9XG5cbiAgLy8gaWQgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogZmFsc2VcbiAgcHVibGljIGdldCBpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoXCJpZFwiKTtcbiAgfVxuXG4gIC8vIGlnbm9yZV9jYXNpbmcgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9pZ25vcmVDYXNpbmc/OiBib29sZWFuIHwgY2RrdGYuSVJlc29sdmFibGU7XG4gIHB1YmxpYyBnZXQgaWdub3JlQ2FzaW5nKCkge1xuICAgIHJldHVybiB0aGlzLmdldEJvb2xlYW5BdHRyaWJ1dGUoXCJpZ25vcmVfY2FzaW5nXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgaWdub3JlQ2FzaW5nKHZhbHVlOiBib29sZWFuIHwgY2RrdGYuSVJlc29sdmFibGUpIHtcbiAgICB0aGlzLl9pZ25vcmVDYXNpbmcgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRJZ25vcmVDYXNpbmcoKSB7XG4gICAgdGhpcy5faWdub3JlQ2FzaW5nID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBpZ25vcmVDYXNpbmdJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5faWdub3JlQ2FzaW5nO1xuICB9XG5cbiAgLy8gaWdub3JlX21pc3NpbmdfcHJvcGVydHkgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9pZ25vcmVNaXNzaW5nUHJvcGVydHk/OiBib29sZWFuIHwgY2RrdGYuSVJlc29sdmFibGU7XG4gIHB1YmxpYyBnZXQgaWdub3JlTWlzc2luZ1Byb3BlcnR5KCkge1xuICAgIHJldHVybiB0aGlzLmdldEJvb2xlYW5BdHRyaWJ1dGUoXCJpZ25vcmVfbWlzc2luZ19wcm9wZXJ0eVwiKTtcbiAgfVxuICBwdWJsaWMgc2V0IGlnbm9yZU1pc3NpbmdQcm9wZXJ0eSh2YWx1ZTogYm9vbGVhbiB8IGNka3RmLklSZXNvbHZhYmxlKSB7XG4gICAgdGhpcy5faWdub3JlTWlzc2luZ1Byb3BlcnR5ID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0SWdub3JlTWlzc2luZ1Byb3BlcnR5KCkge1xuICAgIHRoaXMuX2lnbm9yZU1pc3NpbmdQcm9wZXJ0eSA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgaWdub3JlTWlzc2luZ1Byb3BlcnR5SW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lnbm9yZU1pc3NpbmdQcm9wZXJ0eTtcbiAgfVxuXG4gIC8vIGxvY2tzIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2xvY2tzPzogc3RyaW5nW107XG4gIHB1YmxpYyBnZXQgbG9ja3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TGlzdEF0dHJpYnV0ZShcImxvY2tzXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgbG9ja3ModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fbG9ja3MgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRMb2NrcygpIHtcbiAgICB0aGlzLl9sb2NrcyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgbG9ja3NJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbG9ja3M7XG4gIH1cblxuICAvLyBuYW1lIC0gY29tcHV0ZWQ6IHRydWUsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfbmFtZT86IHN0cmluZztcbiAgcHVibGljIGdldCBuYW1lKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZShcIm5hbWVcIik7XG4gIH1cbiAgcHVibGljIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9uYW1lID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0TmFtZSgpIHtcbiAgICB0aGlzLl9uYW1lID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBuYW1lSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gIH1cblxuICAvLyBvdXRwdXQgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfb3V0cHV0ID0gbmV3IGNka3RmLkFueU1hcCh0aGlzLCBcIm91dHB1dFwiKTtcbiAgcHVibGljIGdldCBvdXRwdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX291dHB1dDtcbiAgfVxuXG4gIC8vIHBhcmVudF9pZCAtIGNvbXB1dGVkOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3BhcmVudElkPzogc3RyaW5nO1xuICBwdWJsaWMgZ2V0IHBhcmVudElkKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZShcInBhcmVudF9pZFwiKTtcbiAgfVxuICBwdWJsaWMgc2V0IHBhcmVudElkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wYXJlbnRJZCA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFBhcmVudElkKCkge1xuICAgIHRoaXMuX3BhcmVudElkID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBwYXJlbnRJZElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9wYXJlbnRJZDtcbiAgfVxuXG4gIC8vIHJlYWRfaGVhZGVycyAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9yZWFkSGVhZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIHB1YmxpYyBnZXQgcmVhZEhlYWRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nTWFwQXR0cmlidXRlKFwicmVhZF9oZWFkZXJzXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgcmVhZEhlYWRlcnModmFsdWU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICB0aGlzLl9yZWFkSGVhZGVycyA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFJlYWRIZWFkZXJzKCkge1xuICAgIHRoaXMuX3JlYWRIZWFkZXJzID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCByZWFkSGVhZGVyc0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkSGVhZGVycztcbiAgfVxuXG4gIC8vIHJlYWRfcXVlcnlfcGFyYW1ldGVycyAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9yZWFkUXVlcnlQYXJhbWV0ZXJzPzpcbiAgICB8IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfVxuICAgIHwgY2RrdGYuSVJlc29sdmFibGU7XG4gIHB1YmxpYyBnZXQgcmVhZFF1ZXJ5UGFyYW1ldGVycygpIHtcbiAgICByZXR1cm4gdGhpcy5pbnRlcnBvbGF0aW9uRm9yQXR0cmlidXRlKFwicmVhZF9xdWVyeV9wYXJhbWV0ZXJzXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgcmVhZFF1ZXJ5UGFyYW1ldGVycyhcbiAgICB2YWx1ZTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9IHwgY2RrdGYuSVJlc29sdmFibGUsXG4gICkge1xuICAgIHRoaXMuX3JlYWRRdWVyeVBhcmFtZXRlcnMgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRSZWFkUXVlcnlQYXJhbWV0ZXJzKCkge1xuICAgIHRoaXMuX3JlYWRRdWVyeVBhcmFtZXRlcnMgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IHJlYWRRdWVyeVBhcmFtZXRlcnNJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZFF1ZXJ5UGFyYW1ldGVycztcbiAgfVxuXG4gIC8vIHJlc291cmNlX2lkIC0gY29tcHV0ZWQ6IHRydWUsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfcmVzb3VyY2VJZD86IHN0cmluZztcbiAgcHVibGljIGdldCByZXNvdXJjZUlkKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZShcInJlc291cmNlX2lkXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgcmVzb3VyY2VJZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcmVzb3VyY2VJZCA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFJlc291cmNlSWQoKSB7XG4gICAgdGhpcy5fcmVzb3VyY2VJZCA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgcmVzb3VyY2VJZElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZUlkO1xuICB9XG5cbiAgLy8gcmVzcG9uc2VfZXhwb3J0X3ZhbHVlcyAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9yZXNwb25zZUV4cG9ydFZhbHVlcz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIHB1YmxpYyBnZXQgcmVzcG9uc2VFeHBvcnRWYWx1ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QW55TWFwQXR0cmlidXRlKFwicmVzcG9uc2VfZXhwb3J0X3ZhbHVlc1wiKTtcbiAgfVxuICBwdWJsaWMgc2V0IHJlc3BvbnNlRXhwb3J0VmFsdWVzKHZhbHVlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgdGhpcy5fcmVzcG9uc2VFeHBvcnRWYWx1ZXMgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRSZXNwb25zZUV4cG9ydFZhbHVlcygpIHtcbiAgICB0aGlzLl9yZXNwb25zZUV4cG9ydFZhbHVlcyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgcmVzcG9uc2VFeHBvcnRWYWx1ZXNJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2VFeHBvcnRWYWx1ZXM7XG4gIH1cblxuICAvLyByZXRyeSAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9yZXRyeSA9IG5ldyBVcGRhdGVSZXNvdXJjZVJldHJ5T3V0cHV0UmVmZXJlbmNlKHRoaXMsIFwicmV0cnlcIik7XG4gIHB1YmxpYyBnZXQgcmV0cnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JldHJ5O1xuICB9XG4gIHB1YmxpYyBwdXRSZXRyeSh2YWx1ZTogVXBkYXRlUmVzb3VyY2VSZXRyeSkge1xuICAgIHRoaXMuX3JldHJ5LmludGVybmFsVmFsdWUgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRSZXRyeSgpIHtcbiAgICB0aGlzLl9yZXRyeS5pbnRlcm5hbFZhbHVlID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCByZXRyeUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZXRyeS5pbnRlcm5hbFZhbHVlO1xuICB9XG5cbiAgLy8gc2Vuc2l0aXZlX2JvZHkgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfc2Vuc2l0aXZlQm9keT86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIHB1YmxpYyBnZXQgc2Vuc2l0aXZlQm9keSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbnlNYXBBdHRyaWJ1dGUoXCJzZW5zaXRpdmVfYm9keVwiKTtcbiAgfVxuICBwdWJsaWMgc2V0IHNlbnNpdGl2ZUJvZHkodmFsdWU6IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICB0aGlzLl9zZW5zaXRpdmVCb2R5ID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0U2Vuc2l0aXZlQm9keSgpIHtcbiAgICB0aGlzLl9zZW5zaXRpdmVCb2R5ID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBzZW5zaXRpdmVCb2R5SW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbnNpdGl2ZUJvZHk7XG4gIH1cblxuICAvLyBzZW5zaXRpdmVfYm9keV92ZXJzaW9uIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3NlbnNpdGl2ZUJvZHlWZXJzaW9uPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcHVibGljIGdldCBzZW5zaXRpdmVCb2R5VmVyc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdNYXBBdHRyaWJ1dGUoXCJzZW5zaXRpdmVfYm9keV92ZXJzaW9uXCIpO1xuICB9XG4gIHB1YmxpYyBzZXQgc2Vuc2l0aXZlQm9keVZlcnNpb24odmFsdWU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICB0aGlzLl9zZW5zaXRpdmVCb2R5VmVyc2lvbiA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFNlbnNpdGl2ZUJvZHlWZXJzaW9uKCkge1xuICAgIHRoaXMuX3NlbnNpdGl2ZUJvZHlWZXJzaW9uID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBzZW5zaXRpdmVCb2R5VmVyc2lvbklucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9zZW5zaXRpdmVCb2R5VmVyc2lvbjtcbiAgfVxuXG4gIC8vIHR5cGUgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiBmYWxzZSwgcmVxdWlyZWQ6IHRydWVcbiAgcHJpdmF0ZSBfdHlwZT86IHN0cmluZztcbiAgcHVibGljIGdldCB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZShcInR5cGVcIik7XG4gIH1cbiAgcHVibGljIHNldCB0eXBlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl90eXBlID0gdmFsdWU7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IHR5cGVJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgfVxuXG4gIC8vIHVwZGF0ZV9oZWFkZXJzIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3VwZGF0ZUhlYWRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICBwdWJsaWMgZ2V0IHVwZGF0ZUhlYWRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nTWFwQXR0cmlidXRlKFwidXBkYXRlX2hlYWRlcnNcIik7XG4gIH1cbiAgcHVibGljIHNldCB1cGRhdGVIZWFkZXJzKHZhbHVlOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgdGhpcy5fdXBkYXRlSGVhZGVycyA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFVwZGF0ZUhlYWRlcnMoKSB7XG4gICAgdGhpcy5fdXBkYXRlSGVhZGVycyA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgdXBkYXRlSGVhZGVyc0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl91cGRhdGVIZWFkZXJzO1xuICB9XG5cbiAgLy8gdXBkYXRlX3F1ZXJ5X3BhcmFtZXRlcnMgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfdXBkYXRlUXVlcnlQYXJhbWV0ZXJzPzpcbiAgICB8IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfVxuICAgIHwgY2RrdGYuSVJlc29sdmFibGU7XG4gIHB1YmxpYyBnZXQgdXBkYXRlUXVlcnlQYXJhbWV0ZXJzKCkge1xuICAgIHJldHVybiB0aGlzLmludGVycG9sYXRpb25Gb3JBdHRyaWJ1dGUoXCJ1cGRhdGVfcXVlcnlfcGFyYW1ldGVyc1wiKTtcbiAgfVxuICBwdWJsaWMgc2V0IHVwZGF0ZVF1ZXJ5UGFyYW1ldGVycyhcbiAgICB2YWx1ZTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9IHwgY2RrdGYuSVJlc29sdmFibGUsXG4gICkge1xuICAgIHRoaXMuX3VwZGF0ZVF1ZXJ5UGFyYW1ldGVycyA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFVwZGF0ZVF1ZXJ5UGFyYW1ldGVycygpIHtcbiAgICB0aGlzLl91cGRhdGVRdWVyeVBhcmFtZXRlcnMgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IHVwZGF0ZVF1ZXJ5UGFyYW1ldGVyc0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl91cGRhdGVRdWVyeVBhcmFtZXRlcnM7XG4gIH1cblxuICAvLyB0aW1lb3V0cyAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF90aW1lb3V0cyA9IG5ldyBVcGRhdGVSZXNvdXJjZVRpbWVvdXRzT3V0cHV0UmVmZXJlbmNlKFxuICAgIHRoaXMsXG4gICAgXCJ0aW1lb3V0c1wiLFxuICApO1xuICBwdWJsaWMgZ2V0IHRpbWVvdXRzKCkge1xuICAgIHJldHVybiB0aGlzLl90aW1lb3V0cztcbiAgfVxuICBwdWJsaWMgcHV0VGltZW91dHModmFsdWU6IFVwZGF0ZVJlc291cmNlVGltZW91dHMpIHtcbiAgICB0aGlzLl90aW1lb3V0cy5pbnRlcm5hbFZhbHVlID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0VGltZW91dHMoKSB7XG4gICAgdGhpcy5fdGltZW91dHMuaW50ZXJuYWxWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgdGltZW91dHNJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdGltZW91dHMuaW50ZXJuYWxWYWx1ZTtcbiAgfVxuXG4gIC8vID09PT09PT09PVxuICAvLyBTWU5USEVTSVNcbiAgLy8gPT09PT09PT09XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVBdHRyaWJ1dGVzKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgYm9keTogY2RrdGYuaGFzaE1hcHBlcihjZGt0Zi5hbnlUb1RlcnJhZm9ybSkodGhpcy5fYm9keSksXG4gICAgICBpZ25vcmVfY2FzaW5nOiBjZGt0Zi5ib29sZWFuVG9UZXJyYWZvcm0odGhpcy5faWdub3JlQ2FzaW5nKSxcbiAgICAgIGlnbm9yZV9taXNzaW5nX3Byb3BlcnR5OiBjZGt0Zi5ib29sZWFuVG9UZXJyYWZvcm0oXG4gICAgICAgIHRoaXMuX2lnbm9yZU1pc3NpbmdQcm9wZXJ0eSxcbiAgICAgICksXG4gICAgICBsb2NrczogY2RrdGYubGlzdE1hcHBlcihjZGt0Zi5zdHJpbmdUb1RlcnJhZm9ybSwgZmFsc2UpKHRoaXMuX2xvY2tzKSxcbiAgICAgIG5hbWU6IGNka3RmLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX25hbWUpLFxuICAgICAgcGFyZW50X2lkOiBjZGt0Zi5zdHJpbmdUb1RlcnJhZm9ybSh0aGlzLl9wYXJlbnRJZCksXG4gICAgICByZWFkX2hlYWRlcnM6IGNka3RmLmhhc2hNYXBwZXIoY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0pKFxuICAgICAgICB0aGlzLl9yZWFkSGVhZGVycyxcbiAgICAgICksXG4gICAgICByZWFkX3F1ZXJ5X3BhcmFtZXRlcnM6IGNka3RmLmhhc2hNYXBwZXIoXG4gICAgICAgIGNka3RmLmxpc3RNYXBwZXIoY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0sIGZhbHNlKSxcbiAgICAgICkodGhpcy5fcmVhZFF1ZXJ5UGFyYW1ldGVycyksXG4gICAgICByZXNvdXJjZV9pZDogY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5fcmVzb3VyY2VJZCksXG4gICAgICByZXNwb25zZV9leHBvcnRfdmFsdWVzOiBjZGt0Zi5oYXNoTWFwcGVyKGNka3RmLmFueVRvVGVycmFmb3JtKShcbiAgICAgICAgdGhpcy5fcmVzcG9uc2VFeHBvcnRWYWx1ZXMsXG4gICAgICApLFxuICAgICAgcmV0cnk6IHVwZGF0ZVJlc291cmNlUmV0cnlUb1RlcnJhZm9ybSh0aGlzLl9yZXRyeS5pbnRlcm5hbFZhbHVlKSxcbiAgICAgIHNlbnNpdGl2ZV9ib2R5OiBjZGt0Zi5oYXNoTWFwcGVyKGNka3RmLmFueVRvVGVycmFmb3JtKShcbiAgICAgICAgdGhpcy5fc2Vuc2l0aXZlQm9keSxcbiAgICAgICksXG4gICAgICBzZW5zaXRpdmVfYm9keV92ZXJzaW9uOiBjZGt0Zi5oYXNoTWFwcGVyKGNka3RmLnN0cmluZ1RvVGVycmFmb3JtKShcbiAgICAgICAgdGhpcy5fc2Vuc2l0aXZlQm9keVZlcnNpb24sXG4gICAgICApLFxuICAgICAgdHlwZTogY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5fdHlwZSksXG4gICAgICB1cGRhdGVfaGVhZGVyczogY2RrdGYuaGFzaE1hcHBlcihjZGt0Zi5zdHJpbmdUb1RlcnJhZm9ybSkoXG4gICAgICAgIHRoaXMuX3VwZGF0ZUhlYWRlcnMsXG4gICAgICApLFxuICAgICAgdXBkYXRlX3F1ZXJ5X3BhcmFtZXRlcnM6IGNka3RmLmhhc2hNYXBwZXIoXG4gICAgICAgIGNka3RmLmxpc3RNYXBwZXIoY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0sIGZhbHNlKSxcbiAgICAgICkodGhpcy5fdXBkYXRlUXVlcnlQYXJhbWV0ZXJzKSxcbiAgICAgIHRpbWVvdXRzOiB1cGRhdGVSZXNvdXJjZVRpbWVvdXRzVG9UZXJyYWZvcm0odGhpcy5fdGltZW91dHMuaW50ZXJuYWxWYWx1ZSksXG4gICAgfTtcbiAgfVxufVxuIl19