@cdk_utils/iam 1.14.0 → 1.16.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 (469) hide show
  1. package/.jsii +11275 -7738
  2. package/lib/generated/services/a2c.js +1 -1
  3. package/lib/generated/services/a4b.js +3 -3
  4. package/lib/generated/services/access-analyzer.js +4 -4
  5. package/lib/generated/services/account-access.js +4 -4
  6. package/lib/generated/services/account.js +4 -4
  7. package/lib/generated/services/acm-pca.js +4 -4
  8. package/lib/generated/services/acm.js +4 -4
  9. package/lib/generated/services/aco-automation.js +4 -4
  10. package/lib/generated/services/action-recommendations.js +1 -1
  11. package/lib/generated/services/activate.js +1 -1
  12. package/lib/generated/services/agent-registry.d.ts +6 -0
  13. package/lib/generated/services/agent-registry.js +13 -5
  14. package/lib/generated/services/agentaccess-mcp.js +2 -2
  15. package/lib/generated/services/aidevops.js +4 -4
  16. package/lib/generated/services/aiops.js +4 -4
  17. package/lib/generated/services/airflow-serverless.js +4 -4
  18. package/lib/generated/services/airflow.js +4 -4
  19. package/lib/generated/services/amplify.js +4 -4
  20. package/lib/generated/services/amplifybackend.js +3 -3
  21. package/lib/generated/services/amplifyuibuilder.js +4 -4
  22. package/lib/generated/services/aoss.js +4 -4
  23. package/lib/generated/services/apigateway.js +4 -4
  24. package/lib/generated/services/app-integrations.js +4 -4
  25. package/lib/generated/services/appconfig.js +4 -4
  26. package/lib/generated/services/appfabric.js +4 -4
  27. package/lib/generated/services/appflow.js +4 -4
  28. package/lib/generated/services/application-autoscaling.js +4 -4
  29. package/lib/generated/services/application-signals-mcp.js +3 -3
  30. package/lib/generated/services/application-signals.js +4 -4
  31. package/lib/generated/services/application-transformation.js +1 -1
  32. package/lib/generated/services/applicationinsights.js +3 -3
  33. package/lib/generated/services/appmesh-preview.js +2 -2
  34. package/lib/generated/services/appmesh.js +4 -4
  35. package/lib/generated/services/apprunner.js +4 -4
  36. package/lib/generated/services/appstream.js +4 -4
  37. package/lib/generated/services/appstudio.js +2 -2
  38. package/lib/generated/services/appsync.js +4 -4
  39. package/lib/generated/services/apptest.js +3 -3
  40. package/lib/generated/services/aps.js +4 -4
  41. package/lib/generated/services/arc-region-switch.js +4 -4
  42. package/lib/generated/services/arc-zonal-shift.js +4 -4
  43. package/lib/generated/services/arsenal.js +1 -1
  44. package/lib/generated/services/artifact.js +4 -4
  45. package/lib/generated/services/athena.js +4 -4
  46. package/lib/generated/services/auditmanager.js +4 -4
  47. package/lib/generated/services/autoscaling-plans.js +2 -2
  48. package/lib/generated/services/autoscaling.js +4 -4
  49. package/lib/generated/services/aws-external-anthropic.js +3 -3
  50. package/lib/generated/services/aws-marketplace-management.js +1 -1
  51. package/lib/generated/services/aws-marketplace.js +4 -4
  52. package/lib/generated/services/aws-portal.js +1 -1
  53. package/lib/generated/services/awsconnector.js +1 -1
  54. package/lib/generated/services/b2bi.js +4 -4
  55. package/lib/generated/services/backup-gateway.js +4 -4
  56. package/lib/generated/services/backup-search.js +4 -4
  57. package/lib/generated/services/backup-storage.js +1 -1
  58. package/lib/generated/services/backup.js +4 -4
  59. package/lib/generated/services/batch.js +4 -4
  60. package/lib/generated/services/bcm-dashboards.js +4 -4
  61. package/lib/generated/services/bcm-data-exports.js +4 -4
  62. package/lib/generated/services/bcm-pricing-calculator.js +4 -4
  63. package/lib/generated/services/bcm-recommended-actions.js +2 -2
  64. package/lib/generated/services/bedrock-agentcore.js +4 -4
  65. package/lib/generated/services/bedrock-mantle.js +3 -3
  66. package/lib/generated/services/bedrock-websearch.js +2 -2
  67. package/lib/generated/services/bedrock.js +4 -4
  68. package/lib/generated/services/billing.js +4 -4
  69. package/lib/generated/services/billingconductor.js +4 -4
  70. package/lib/generated/services/braket.js +4 -4
  71. package/lib/generated/services/budgets.js +4 -4
  72. package/lib/generated/services/bugbust.js +3 -3
  73. package/lib/generated/services/cases.js +4 -4
  74. package/lib/generated/services/cassandra.js +4 -4
  75. package/lib/generated/services/ce.js +4 -4
  76. package/lib/generated/services/chatbot.js +4 -4
  77. package/lib/generated/services/chime.js +4 -4
  78. package/lib/generated/services/cleanrooms-ml.js +4 -4
  79. package/lib/generated/services/cleanrooms.js +4 -4
  80. package/lib/generated/services/cloud9.js +4 -4
  81. package/lib/generated/services/clouddirectory.js +3 -3
  82. package/lib/generated/services/cloudformation.js +4 -4
  83. package/lib/generated/services/cloudfront-keyvaluestore.js +3 -3
  84. package/lib/generated/services/cloudfront.js +4 -4
  85. package/lib/generated/services/cloudhsm.js +4 -4
  86. package/lib/generated/services/cloudsearch.js +3 -3
  87. package/lib/generated/services/cloudshell.js +3 -3
  88. package/lib/generated/services/cloudtrail-data.js +4 -4
  89. package/lib/generated/services/cloudtrail.js +4 -4
  90. package/lib/generated/services/cloudwatch.js +4 -4
  91. package/lib/generated/services/codeartifact.js +4 -4
  92. package/lib/generated/services/codebuild.js +4 -4
  93. package/lib/generated/services/codecatalyst.js +4 -4
  94. package/lib/generated/services/codecommit.js +4 -4
  95. package/lib/generated/services/codeconnections.js +4 -4
  96. package/lib/generated/services/codedeploy-commands-secure.js +1 -1
  97. package/lib/generated/services/codedeploy.js +4 -4
  98. package/lib/generated/services/codeguru-profiler.js +4 -4
  99. package/lib/generated/services/codeguru-reviewer.js +4 -4
  100. package/lib/generated/services/codeguru-security.js +4 -4
  101. package/lib/generated/services/codeguru.js +1 -1
  102. package/lib/generated/services/codepipeline.js +4 -4
  103. package/lib/generated/services/codestar-connections.js +4 -4
  104. package/lib/generated/services/codestar-notifications.js +4 -4
  105. package/lib/generated/services/codestar.js +3 -3
  106. package/lib/generated/services/codewhisperer.js +3 -3
  107. package/lib/generated/services/cognito-identity.js +4 -4
  108. package/lib/generated/services/cognito-idp.d.ts +2 -0
  109. package/lib/generated/services/cognito-idp.js +14 -7
  110. package/lib/generated/services/cognito-sync.js +3 -3
  111. package/lib/generated/services/comprehend.js +4 -4
  112. package/lib/generated/services/comprehendmedical.js +3 -3
  113. package/lib/generated/services/compute-optimizer.js +3 -3
  114. package/lib/generated/services/config.js +4 -4
  115. package/lib/generated/services/connect-campaigns.js +4 -4
  116. package/lib/generated/services/connect.d.ts +75 -0
  117. package/lib/generated/services/connect.js +110 -9
  118. package/lib/generated/services/consoleapp.js +2 -2
  119. package/lib/generated/services/consolidatedbilling.js +1 -1
  120. package/lib/generated/services/controlcatalog.js +3 -3
  121. package/lib/generated/services/controltower.js +4 -4
  122. package/lib/generated/services/cost-optimization-hub.js +2 -2
  123. package/lib/generated/services/cur.js +4 -4
  124. package/lib/generated/services/customer-verification.js +1 -1
  125. package/lib/generated/services/databrew.js +4 -4
  126. package/lib/generated/services/dataexchange.js +4 -4
  127. package/lib/generated/services/datapipeline.js +4 -4
  128. package/lib/generated/services/datasync.js +4 -4
  129. package/lib/generated/services/datazone.js +4 -4
  130. package/lib/generated/services/dax.js +4 -4
  131. package/lib/generated/services/dbqms.js +1 -1
  132. package/lib/generated/services/deadline.js +4 -4
  133. package/lib/generated/services/detective.js +4 -4
  134. package/lib/generated/services/devicefarm.js +4 -4
  135. package/lib/generated/services/devops-guru.js +4 -4
  136. package/lib/generated/services/directconnect.js +4 -4
  137. package/lib/generated/services/discovery.js +3 -3
  138. package/lib/generated/services/dlm.js +4 -4
  139. package/lib/generated/services/dms.js +4 -4
  140. package/lib/generated/services/docdb-elastic.js +4 -4
  141. package/lib/generated/services/drs.js +4 -4
  142. package/lib/generated/services/ds-data.js +4 -4
  143. package/lib/generated/services/ds.js +4 -4
  144. package/lib/generated/services/dsql.js +4 -4
  145. package/lib/generated/services/dynamodb.js +4 -4
  146. package/lib/generated/services/ebs.js +4 -4
  147. package/lib/generated/services/ec2-instance-connect.js +4 -4
  148. package/lib/generated/services/ec2.d.ts +103 -0
  149. package/lib/generated/services/ec2.js +179 -21
  150. package/lib/generated/services/ec2messages.js +2 -2
  151. package/lib/generated/services/ecr-public.js +4 -4
  152. package/lib/generated/services/ecr.js +4 -4
  153. package/lib/generated/services/ecs-mcp.js +1 -1
  154. package/lib/generated/services/ecs.js +4 -4
  155. package/lib/generated/services/eks-auth.js +4 -4
  156. package/lib/generated/services/eks-mcp.js +1 -1
  157. package/lib/generated/services/eks.js +4 -4
  158. package/lib/generated/services/elasticache.js +4 -4
  159. package/lib/generated/services/elasticbeanstalk.js +4 -4
  160. package/lib/generated/services/elasticfilesystem.js +4 -4
  161. package/lib/generated/services/elasticloadbalancing.js +4 -4
  162. package/lib/generated/services/elasticmapreduce.js +4 -4
  163. package/lib/generated/services/elastictranscoder.js +2 -2
  164. package/lib/generated/services/elemental-activations.js +1 -1
  165. package/lib/generated/services/elemental-appliances-software.js +2 -2
  166. package/lib/generated/services/elemental-inference.js +4 -4
  167. package/lib/generated/services/elemental-support-cases.js +3 -3
  168. package/lib/generated/services/elemental-support-content.js +1 -1
  169. package/lib/generated/services/emr-containers.js +4 -4
  170. package/lib/generated/services/emr-serverless.js +4 -4
  171. package/lib/generated/services/entityresolution.js +4 -4
  172. package/lib/generated/services/es.js +4 -4
  173. package/lib/generated/services/events.js +4 -4
  174. package/lib/generated/services/eventsbilltoaws.js +3 -3
  175. package/lib/generated/services/evidently.js +3 -3
  176. package/lib/generated/services/evs.js +4 -4
  177. package/lib/generated/services/execute-api.js +4 -4
  178. package/lib/generated/services/finops-agent.js +1 -1
  179. package/lib/generated/services/finspace-api.js +3 -3
  180. package/lib/generated/services/finspace.js +4 -4
  181. package/lib/generated/services/firehose.js +4 -4
  182. package/lib/generated/services/fis.js +4 -4
  183. package/lib/generated/services/fms.js +4 -4
  184. package/lib/generated/services/forecast.js +4 -4
  185. package/lib/generated/services/frauddetector.js +4 -4
  186. package/lib/generated/services/freertos.js +3 -3
  187. package/lib/generated/services/freetier.js +2 -2
  188. package/lib/generated/services/fsx.js +4 -4
  189. package/lib/generated/services/gamelift.js +4 -4
  190. package/lib/generated/services/gameliftstreams.js +4 -4
  191. package/lib/generated/services/geo-maps.js +3 -3
  192. package/lib/generated/services/geo-places.js +3 -3
  193. package/lib/generated/services/geo-routes.js +3 -3
  194. package/lib/generated/services/geo.js +4 -4
  195. package/lib/generated/services/glacier.js +4 -4
  196. package/lib/generated/services/globalaccelerator.js +4 -4
  197. package/lib/generated/services/glue.js +4 -4
  198. package/lib/generated/services/grafana.js +4 -4
  199. package/lib/generated/services/greengrass.js +4 -4
  200. package/lib/generated/services/groundstation.js +4 -4
  201. package/lib/generated/services/groundtruthlabeling.js +1 -1
  202. package/lib/generated/services/guardduty.d.ts +132 -0
  203. package/lib/generated/services/guardduty.js +149 -5
  204. package/lib/generated/services/health-agent.js +4 -4
  205. package/lib/generated/services/health.js +4 -4
  206. package/lib/generated/services/healthlake.js +4 -4
  207. package/lib/generated/services/honeycode.js +2 -2
  208. package/lib/generated/services/iam.js +4 -4
  209. package/lib/generated/services/identity-sync.js +2 -2
  210. package/lib/generated/services/identitystore-auth.js +1 -1
  211. package/lib/generated/services/identitystore.js +4 -4
  212. package/lib/generated/services/imagebuilder.js +9 -6
  213. package/lib/generated/services/importexport.js +2 -2
  214. package/lib/generated/services/inspector-scan.js +2 -2
  215. package/lib/generated/services/inspector.js +2 -2
  216. package/lib/generated/services/inspector2-telemetry.js +1 -1
  217. package/lib/generated/services/inspector2.js +4 -4
  218. package/lib/generated/services/interconnect.js +4 -4
  219. package/lib/generated/services/internetmonitor.js +4 -4
  220. package/lib/generated/services/invoicing.js +4 -4
  221. package/lib/generated/services/iot-device-tester.js +1 -1
  222. package/lib/generated/services/iot.js +4 -4
  223. package/lib/generated/services/iotanalytics.js +3 -3
  224. package/lib/generated/services/iotdeviceadvisor.js +4 -4
  225. package/lib/generated/services/iotevents.js +3 -3
  226. package/lib/generated/services/iotfleethub.js +3 -3
  227. package/lib/generated/services/iotfleetwise.js +4 -4
  228. package/lib/generated/services/iotjobsdata.js +4 -4
  229. package/lib/generated/services/iotmanagedintegrations.js +4 -4
  230. package/lib/generated/services/iotsitewise.js +4 -4
  231. package/lib/generated/services/iottwinmaker.js +4 -4
  232. package/lib/generated/services/iotwireless.js +4 -4
  233. package/lib/generated/services/iq-permission.js +2 -2
  234. package/lib/generated/services/iq.js +2 -2
  235. package/lib/generated/services/ivs.js +4 -4
  236. package/lib/generated/services/ivschat.js +4 -4
  237. package/lib/generated/services/kafka-cluster.js +3 -3
  238. package/lib/generated/services/kafka.js +4 -4
  239. package/lib/generated/services/kafkaconnect.d.ts +2 -0
  240. package/lib/generated/services/kafkaconnect.js +7 -5
  241. package/lib/generated/services/kendra-ranking.js +4 -4
  242. package/lib/generated/services/kendra.js +4 -4
  243. package/lib/generated/services/kinesis.d.ts +61 -0
  244. package/lib/generated/services/kinesis.js +67 -5
  245. package/lib/generated/services/kinesisanalytics.js +4 -4
  246. package/lib/generated/services/kinesisvideo.js +4 -4
  247. package/lib/generated/services/kms.js +4 -4
  248. package/lib/generated/services/lakeformation.js +3 -3
  249. package/lib/generated/services/lambda.js +4 -4
  250. package/lib/generated/services/launchwizard.js +4 -4
  251. package/lib/generated/services/lex.js +4 -4
  252. package/lib/generated/services/license-manager-linux-subscriptions.js +4 -4
  253. package/lib/generated/services/license-manager-user-subscriptions.js +4 -4
  254. package/lib/generated/services/license-manager.js +4 -4
  255. package/lib/generated/services/lightsail.d.ts +2 -0
  256. package/lib/generated/services/lightsail.js +7 -5
  257. package/lib/generated/services/logs.js +4 -4
  258. package/lib/generated/services/lookoutequipment.js +4 -4
  259. package/lib/generated/services/lookoutmetrics.js +3 -3
  260. package/lib/generated/services/lookoutvision.js +3 -3
  261. package/lib/generated/services/m2.js +4 -4
  262. package/lib/generated/services/machinelearning.js +3 -3
  263. package/lib/generated/services/macie2.js +4 -4
  264. package/lib/generated/services/managedblockchain-query.js +2 -2
  265. package/lib/generated/services/managedblockchain.js +4 -4
  266. package/lib/generated/services/mapcredits.js +2 -2
  267. package/lib/generated/services/marketplacecommerceanalytics.js +2 -2
  268. package/lib/generated/services/mechanicalturk.js +2 -2
  269. package/lib/generated/services/mediaconnect.js +4 -4
  270. package/lib/generated/services/mediaconvert.js +4 -4
  271. package/lib/generated/services/mediaimport.js +1 -1
  272. package/lib/generated/services/medialive.js +4 -4
  273. package/lib/generated/services/mediapackage-vod.js +4 -4
  274. package/lib/generated/services/mediapackage.js +4 -4
  275. package/lib/generated/services/mediapackagev2.js +4 -4
  276. package/lib/generated/services/mediastore.js +4 -4
  277. package/lib/generated/services/mediatailor.js +4 -4
  278. package/lib/generated/services/medical-imaging.js +4 -4
  279. package/lib/generated/services/memorydb.js +4 -4
  280. package/lib/generated/services/mgh.js +4 -4
  281. package/lib/generated/services/mgn.js +4 -4
  282. package/lib/generated/services/migrationhub-orchestrator.js +4 -4
  283. package/lib/generated/services/migrationhub-strategy.js +2 -2
  284. package/lib/generated/services/mobileanalytics.js +1 -1
  285. package/lib/generated/services/mobiletargeting.js +4 -4
  286. package/lib/generated/services/monitron.js +3 -3
  287. package/lib/generated/services/mpa.js +4 -4
  288. package/lib/generated/services/mq.js +4 -4
  289. package/lib/generated/services/neptune-db.js +4 -4
  290. package/lib/generated/services/neptune-graph.js +4 -4
  291. package/lib/generated/services/network-firewall.js +4 -4
  292. package/lib/generated/services/network-security-director.js +1 -1
  293. package/lib/generated/services/networkflowmonitor.js +4 -4
  294. package/lib/generated/services/networkmanager-chat.js +1 -1
  295. package/lib/generated/services/networkmanager.js +4 -4
  296. package/lib/generated/services/networkmonitor.js +4 -4
  297. package/lib/generated/services/nimble.js +3 -3
  298. package/lib/generated/services/notifications-contacts.js +4 -4
  299. package/lib/generated/services/notifications.js +4 -4
  300. package/lib/generated/services/nova-act.js +3 -3
  301. package/lib/generated/services/oam.js +4 -4
  302. package/lib/generated/services/observabilityadmin.js +4 -4
  303. package/lib/generated/services/odb.js +4 -4
  304. package/lib/generated/services/omics.js +4 -4
  305. package/lib/generated/services/one.js +3 -3
  306. package/lib/generated/services/opensearch.js +3 -3
  307. package/lib/generated/services/opsworks-cm.js +2 -2
  308. package/lib/generated/services/opsworks.js +2 -2
  309. package/lib/generated/services/organizations.js +4 -4
  310. package/lib/generated/services/osis.js +4 -4
  311. package/lib/generated/services/outposts.js +4 -4
  312. package/lib/generated/services/panorama.js +3 -3
  313. package/lib/generated/services/partnercentral-account-management.js +2 -2
  314. package/lib/generated/services/partnercentral.js +4 -4
  315. package/lib/generated/services/payment-cryptography.js +4 -4
  316. package/lib/generated/services/payments.js +3 -3
  317. package/lib/generated/services/pca-connector-ad.js +4 -4
  318. package/lib/generated/services/pca-connector-scep.js +4 -4
  319. package/lib/generated/services/pcs.js +4 -4
  320. package/lib/generated/services/personalize.js +4 -4
  321. package/lib/generated/services/pi.js +4 -4
  322. package/lib/generated/services/pipes.js +4 -4
  323. package/lib/generated/services/polly.js +3 -3
  324. package/lib/generated/services/pricing.js +2 -2
  325. package/lib/generated/services/pricingplanmanager.js +3 -3
  326. package/lib/generated/services/private-networks.js +3 -3
  327. package/lib/generated/services/profile.d.ts +14 -0
  328. package/lib/generated/services/profile.js +33 -5
  329. package/lib/generated/services/proton.js +4 -4
  330. package/lib/generated/services/purchase-orders.js +3 -3
  331. package/lib/generated/services/q.js +3 -3
  332. package/lib/generated/services/qapps.js +4 -4
  333. package/lib/generated/services/qbusiness.js +4 -4
  334. package/lib/generated/services/qdeveloper.js +3 -3
  335. package/lib/generated/services/qldb.js +3 -3
  336. package/lib/generated/services/quicksight.d.ts +12 -0
  337. package/lib/generated/services/quicksight.js +22 -6
  338. package/lib/generated/services/ram.js +4 -4
  339. package/lib/generated/services/rbin.js +4 -4
  340. package/lib/generated/services/rds-data.js +4 -4
  341. package/lib/generated/services/rds-db.js +2 -2
  342. package/lib/generated/services/rds.js +4 -4
  343. package/lib/generated/services/redshift-data.js +4 -4
  344. package/lib/generated/services/redshift-serverless.js +4 -4
  345. package/lib/generated/services/redshift.js +4 -4
  346. package/lib/generated/services/refactor-spaces.js +4 -4
  347. package/lib/generated/services/rekognition.js +4 -4
  348. package/lib/generated/services/repostspace.js +4 -4
  349. package/lib/generated/services/researchstudio.js +1 -1
  350. package/lib/generated/services/resiliencehub.js +4 -4
  351. package/lib/generated/services/resource-explorer-2.js +4 -4
  352. package/lib/generated/services/resource-explorer.js +1 -1
  353. package/lib/generated/services/resource-groups.js +4 -4
  354. package/lib/generated/services/rhelkb.js +1 -1
  355. package/lib/generated/services/robomaker.js +3 -3
  356. package/lib/generated/services/rolesanywhere.js +4 -4
  357. package/lib/generated/services/route53-recovery-cluster.js +4 -4
  358. package/lib/generated/services/route53-recovery-control-config.js +4 -4
  359. package/lib/generated/services/route53-recovery-readiness.js +4 -4
  360. package/lib/generated/services/route53.js +4 -4
  361. package/lib/generated/services/route53domains.js +2 -2
  362. package/lib/generated/services/route53globalresolver.js +4 -4
  363. package/lib/generated/services/route53profiles.js +4 -4
  364. package/lib/generated/services/route53resolver.js +4 -4
  365. package/lib/generated/services/rtbfabric.js +4 -4
  366. package/lib/generated/services/rum.js +4 -4
  367. package/lib/generated/services/s3-object-lambda.js +3 -3
  368. package/lib/generated/services/s3-outposts.js +4 -4
  369. package/lib/generated/services/s3.js +4 -4
  370. package/lib/generated/services/s3express.js +3 -3
  371. package/lib/generated/services/s3files.js +4 -4
  372. package/lib/generated/services/s3tables.js +4 -4
  373. package/lib/generated/services/s3vectors.js +4 -4
  374. package/lib/generated/services/sagemaker-data-science-assistant.js +1 -1
  375. package/lib/generated/services/sagemaker-geospatial.js +4 -4
  376. package/lib/generated/services/sagemaker-mlflow.js +3 -3
  377. package/lib/generated/services/sagemaker-unified-studio-mcp.js +1 -1
  378. package/lib/generated/services/sagemaker.js +4 -4
  379. package/lib/generated/services/savingsplans.js +4 -4
  380. package/lib/generated/services/scheduler.js +4 -4
  381. package/lib/generated/services/schemas.js +4 -4
  382. package/lib/generated/services/scn.js +4 -4
  383. package/lib/generated/services/sdb.js +3 -3
  384. package/lib/generated/services/secretsmanager.js +4 -4
  385. package/lib/generated/services/security-ir.js +4 -4
  386. package/lib/generated/services/securityagent.js +4 -4
  387. package/lib/generated/services/securityhub.js +4 -4
  388. package/lib/generated/services/securitylake.js +4 -4
  389. package/lib/generated/services/serverlessrepo.js +4 -4
  390. package/lib/generated/services/servicecatalog.js +4 -4
  391. package/lib/generated/services/servicediscovery.js +4 -4
  392. package/lib/generated/services/serviceextract.js +1 -1
  393. package/lib/generated/services/servicequotas.js +4 -4
  394. package/lib/generated/services/ses.d.ts +8 -0
  395. package/lib/generated/services/ses.js +13 -5
  396. package/lib/generated/services/shield.js +4 -4
  397. package/lib/generated/services/signer.js +4 -4
  398. package/lib/generated/services/signin.js +4 -4
  399. package/lib/generated/services/simspaceweaver.js +3 -3
  400. package/lib/generated/services/sms-voice.js +4 -4
  401. package/lib/generated/services/sms.js +1 -1
  402. package/lib/generated/services/snow-device-management.js +4 -4
  403. package/lib/generated/services/snowball.js +2 -2
  404. package/lib/generated/services/sns.js +4 -4
  405. package/lib/generated/services/social-messaging.js +4 -4
  406. package/lib/generated/services/sqlworkbench.js +3 -3
  407. package/lib/generated/services/sqs.js +4 -4
  408. package/lib/generated/services/ssm-contacts.js +4 -4
  409. package/lib/generated/services/ssm-guiconnect.js +2 -2
  410. package/lib/generated/services/ssm-incidents.js +4 -4
  411. package/lib/generated/services/ssm-quicksetup.js +4 -4
  412. package/lib/generated/services/ssm-sap.js +4 -4
  413. package/lib/generated/services/ssm.js +4 -4
  414. package/lib/generated/services/ssmmessages.js +2 -2
  415. package/lib/generated/services/sso-directory.js +1 -1
  416. package/lib/generated/services/sso-oauth.js +3 -3
  417. package/lib/generated/services/sso.js +4 -4
  418. package/lib/generated/services/states.js +4 -4
  419. package/lib/generated/services/storagegateway.js +4 -4
  420. package/lib/generated/services/sts.js +4 -4
  421. package/lib/generated/services/support-console.js +1 -1
  422. package/lib/generated/services/support.d.ts +9 -1
  423. package/lib/generated/services/support.js +25 -5
  424. package/lib/generated/services/supportapp.js +2 -2
  425. package/lib/generated/services/supportauthz.js +4 -4
  426. package/lib/generated/services/supportplans.js +1 -1
  427. package/lib/generated/services/sustainability.js +2 -2
  428. package/lib/generated/services/swf.js +4 -4
  429. package/lib/generated/services/synthetics.js +4 -4
  430. package/lib/generated/services/tag.js +2 -2
  431. package/lib/generated/services/tax.js +2 -2
  432. package/lib/generated/services/textract.js +4 -4
  433. package/lib/generated/services/thinclient.js +4 -4
  434. package/lib/generated/services/timestream-influxdb.js +4 -4
  435. package/lib/generated/services/timestream.js +4 -4
  436. package/lib/generated/services/tiros.js +1 -1
  437. package/lib/generated/services/tnb.js +4 -4
  438. package/lib/generated/services/transcribe.js +4 -4
  439. package/lib/generated/services/transfer.js +4 -4
  440. package/lib/generated/services/transform-custom.js +3 -3
  441. package/lib/generated/services/transform.js +3 -3
  442. package/lib/generated/services/translate.js +4 -4
  443. package/lib/generated/services/trustedadvisor.js +3 -3
  444. package/lib/generated/services/ts.js +3 -3
  445. package/lib/generated/services/user-subscriptions.js +2 -2
  446. package/lib/generated/services/uxc.js +2 -2
  447. package/lib/generated/services/vendor-insights.js +3 -3
  448. package/lib/generated/services/verified-access.js +1 -1
  449. package/lib/generated/services/verifiedpermissions.js +4 -4
  450. package/lib/generated/services/voiceid.js +4 -4
  451. package/lib/generated/services/vpc-lattice-svcs.js +3 -3
  452. package/lib/generated/services/vpc-lattice.js +4 -4
  453. package/lib/generated/services/vpce.js +2 -2
  454. package/lib/generated/services/waf-regional.js +4 -4
  455. package/lib/generated/services/waf.js +4 -4
  456. package/lib/generated/services/wafv2.js +4 -4
  457. package/lib/generated/services/wam.js +1 -1
  458. package/lib/generated/services/wellarchitected.js +4 -4
  459. package/lib/generated/services/wickr.js +4 -4
  460. package/lib/generated/services/wisdom.js +4 -4
  461. package/lib/generated/services/workdocs.js +3 -3
  462. package/lib/generated/services/worklink.js +3 -3
  463. package/lib/generated/services/workmail.js +4 -4
  464. package/lib/generated/services/workmailmessageflow.js +3 -3
  465. package/lib/generated/services/workspaces-instances.js +4 -4
  466. package/lib/generated/services/workspaces-web.js +4 -4
  467. package/lib/generated/services/workspaces.js +4 -4
  468. package/lib/generated/services/xray.js +4 -4
  469. package/package.json +1 -1
@@ -16,7 +16,7 @@ class GuardDutyActions {
16
16
  }
17
17
  exports.GuardDutyActions = GuardDutyActions;
18
18
  _a = JSII_RTTI_SYMBOL_1;
19
- GuardDutyActions[_a] = { fqn: "@cdk_utils/iam.guardduty.GuardDutyActions", version: "1.14.0" };
19
+ GuardDutyActions[_a] = { fqn: "@cdk_utils/iam.guardduty.GuardDutyActions", version: "1.16.0" };
20
20
  /** The IAM service prefix. */
21
21
  GuardDutyActions.SERVICE_PREFIX = "guardduty";
22
22
  /** [Write] guardduty:AcceptAdministratorInvitation */
@@ -25,6 +25,10 @@ GuardDutyActions.AcceptAdministratorInvitation = "guardduty:AcceptAdministratorI
25
25
  GuardDutyActions.AcceptInvitation = "guardduty:AcceptInvitation";
26
26
  /** [Write] guardduty:ArchiveFindings */
27
27
  GuardDutyActions.ArchiveFindings = "guardduty:ArchiveFindings";
28
+ /** [Write] guardduty:CreateCustomDetectionRuleAssociation */
29
+ GuardDutyActions.CreateCustomDetectionRuleAssociation = "guardduty:CreateCustomDetectionRuleAssociation";
30
+ /** [Write] guardduty:CreateCustomDetectionRuleOrgConfiguration */
31
+ GuardDutyActions.CreateCustomDetectionRuleOrgConfiguration = "guardduty:CreateCustomDetectionRuleOrgConfiguration";
28
32
  /** [Write] guardduty:CreateDetector */
29
33
  GuardDutyActions.CreateDetector = "guardduty:CreateDetector";
30
34
  /** [Write] guardduty:CreateFilter */
@@ -49,6 +53,10 @@ GuardDutyActions.CreateThreatIntelSet = "guardduty:CreateThreatIntelSet";
49
53
  GuardDutyActions.CreateTrustedEntitySet = "guardduty:CreateTrustedEntitySet";
50
54
  /** [Write] guardduty:DeclineInvitations */
51
55
  GuardDutyActions.DeclineInvitations = "guardduty:DeclineInvitations";
56
+ /** [Write] guardduty:DeleteCustomDetectionRuleAssociation */
57
+ GuardDutyActions.DeleteCustomDetectionRuleAssociation = "guardduty:DeleteCustomDetectionRuleAssociation";
58
+ /** [Write] guardduty:DeleteCustomDetectionRuleOrgConfiguration */
59
+ GuardDutyActions.DeleteCustomDetectionRuleOrgConfiguration = "guardduty:DeleteCustomDetectionRuleOrgConfiguration";
52
60
  /** [Write] guardduty:DeleteDetector */
53
61
  GuardDutyActions.DeleteDetector = "guardduty:DeleteDetector";
54
62
  /** [Write] guardduty:DeleteFilter */
@@ -89,6 +97,12 @@ GuardDutyActions.EnableOrganizationAdminAccount = "guardduty:EnableOrganizationA
89
97
  GuardDutyActions.actionGetAdministratorAccount = "guardduty:GetAdministratorAccount";
90
98
  /** [Read] guardduty:GetCoverageStatistics */
91
99
  GuardDutyActions.actionGetCoverageStatistics = "guardduty:GetCoverageStatistics";
100
+ /** [Read] guardduty:GetCustomDetectionRule */
101
+ GuardDutyActions.actionGetCustomDetectionRule = "guardduty:GetCustomDetectionRule";
102
+ /** [Read] guardduty:GetCustomDetectionRuleAssociation */
103
+ GuardDutyActions.actionGetCustomDetectionRuleAssociation = "guardduty:GetCustomDetectionRuleAssociation";
104
+ /** [Read] guardduty:GetCustomDetectionRuleOrgConfiguration */
105
+ GuardDutyActions.actionGetCustomDetectionRuleOrgConfiguration = "guardduty:GetCustomDetectionRuleOrgConfiguration";
92
106
  /** [Read] guardduty:GetDetector */
93
107
  GuardDutyActions.actionGetDetector = "guardduty:GetDetector";
94
108
  /** [Read] guardduty:GetFilter */
@@ -131,6 +145,12 @@ GuardDutyActions.actionGetUsageStatistics = "guardduty:GetUsageStatistics";
131
145
  GuardDutyActions.InviteMembers = "guardduty:InviteMembers";
132
146
  /** [List] guardduty:ListCoverage */
133
147
  GuardDutyActions.ListCoverage = "guardduty:ListCoverage";
148
+ /** [List] guardduty:ListCustomDetectionRuleAssociations */
149
+ GuardDutyActions.ListCustomDetectionRuleAssociations = "guardduty:ListCustomDetectionRuleAssociations";
150
+ /** [List] guardduty:ListCustomDetectionRuleOrgConfigurations */
151
+ GuardDutyActions.ListCustomDetectionRuleOrgConfigurations = "guardduty:ListCustomDetectionRuleOrgConfigurations";
152
+ /** [List] guardduty:ListCustomDetectionRules */
153
+ GuardDutyActions.ListCustomDetectionRules = "guardduty:ListCustomDetectionRules";
134
154
  /** [List] guardduty:ListDetectors */
135
155
  GuardDutyActions.ListDetectors = "guardduty:ListDetectors";
136
156
  /** [List] guardduty:ListFilters */
@@ -177,6 +197,10 @@ GuardDutyActions.TagResource = "guardduty:TagResource";
177
197
  GuardDutyActions.UnarchiveFindings = "guardduty:UnarchiveFindings";
178
198
  /** [Tagging] guardduty:UntagResource */
179
199
  GuardDutyActions.UntagResource = "guardduty:UntagResource";
200
+ /** [Write] guardduty:UpdateCustomDetectionRuleAssociation */
201
+ GuardDutyActions.UpdateCustomDetectionRuleAssociation = "guardduty:UpdateCustomDetectionRuleAssociation";
202
+ /** [Write] guardduty:UpdateCustomDetectionRuleOrgConfiguration */
203
+ GuardDutyActions.UpdateCustomDetectionRuleOrgConfiguration = "guardduty:UpdateCustomDetectionRuleOrgConfiguration";
180
204
  /** [Write] guardduty:UpdateDetector */
181
205
  GuardDutyActions.UpdateDetector = "guardduty:UpdateDetector";
182
206
  /** [Write] guardduty:UpdateFilter */
@@ -208,6 +232,9 @@ GuardDutyActions.AllReadActions = [
208
232
  GuardDutyActions.DescribePublishingDestination,
209
233
  GuardDutyActions.actionGetAdministratorAccount,
210
234
  GuardDutyActions.actionGetCoverageStatistics,
235
+ GuardDutyActions.actionGetCustomDetectionRule,
236
+ GuardDutyActions.actionGetCustomDetectionRuleAssociation,
237
+ GuardDutyActions.actionGetCustomDetectionRuleOrgConfiguration,
211
238
  GuardDutyActions.actionGetDetector,
212
239
  GuardDutyActions.actionGetFilter,
213
240
  GuardDutyActions.actionGetFindings,
@@ -234,6 +261,8 @@ GuardDutyActions.AllWriteActions = [
234
261
  GuardDutyActions.AcceptAdministratorInvitation,
235
262
  GuardDutyActions.AcceptInvitation,
236
263
  GuardDutyActions.ArchiveFindings,
264
+ GuardDutyActions.CreateCustomDetectionRuleAssociation,
265
+ GuardDutyActions.CreateCustomDetectionRuleOrgConfiguration,
237
266
  GuardDutyActions.CreateDetector,
238
267
  GuardDutyActions.CreateFilter,
239
268
  GuardDutyActions.CreateIPSet,
@@ -246,6 +275,8 @@ GuardDutyActions.AllWriteActions = [
246
275
  GuardDutyActions.CreateThreatIntelSet,
247
276
  GuardDutyActions.CreateTrustedEntitySet,
248
277
  GuardDutyActions.DeclineInvitations,
278
+ GuardDutyActions.DeleteCustomDetectionRuleAssociation,
279
+ GuardDutyActions.DeleteCustomDetectionRuleOrgConfiguration,
249
280
  GuardDutyActions.DeleteDetector,
250
281
  GuardDutyActions.DeleteFilter,
251
282
  GuardDutyActions.DeleteIPSet,
@@ -268,6 +299,8 @@ GuardDutyActions.AllWriteActions = [
268
299
  GuardDutyActions.StartMonitoringMembers,
269
300
  GuardDutyActions.StopMonitoringMembers,
270
301
  GuardDutyActions.UnarchiveFindings,
302
+ GuardDutyActions.UpdateCustomDetectionRuleAssociation,
303
+ GuardDutyActions.UpdateCustomDetectionRuleOrgConfiguration,
271
304
  GuardDutyActions.UpdateDetector,
272
305
  GuardDutyActions.UpdateFilter,
273
306
  GuardDutyActions.UpdateFindingsFeedback,
@@ -284,6 +317,9 @@ GuardDutyActions.AllWriteActions = [
284
317
  /** All list-level actions. */
285
318
  GuardDutyActions.AllListActions = [
286
319
  GuardDutyActions.ListCoverage,
320
+ GuardDutyActions.ListCustomDetectionRuleAssociations,
321
+ GuardDutyActions.ListCustomDetectionRuleOrgConfigurations,
322
+ GuardDutyActions.ListCustomDetectionRules,
287
323
  GuardDutyActions.ListDetectors,
288
324
  GuardDutyActions.ListFilters,
289
325
  GuardDutyActions.ListFindings,
@@ -306,6 +342,8 @@ GuardDutyActions.AllTaggingActions = [
306
342
  GuardDutyActions.TagResource,
307
343
  GuardDutyActions.UntagResource,
308
344
  ];
345
+ const CustomdetectionruleArnRegex = /^arn:(?<partition>[^:]+):guardduty::aws:detection-rule\/custom\/(?<ruleId>[^:/?]+)$/;
346
+ const CustomdetectionruleassociationArnRegex = /^arn:(?<partition>[^:]+):guardduty:(?<region>[^:]*):(?<account>[^:]*):detection-rule\/custom\/(?<ruleId>[^:/?]+)\/association\/(?<associationId>[^:/?]+)$/;
309
347
  const DetectorArnRegex = /^arn:(?<partition>[^:]+):guardduty:(?<region>[^:]*):(?<account>[^:]*):detector\/(?<detectorId>[^:/?]+)$/;
310
348
  const FilterArnRegex = /^arn:(?<partition>[^:]+):guardduty:(?<region>[^:]*):(?<account>[^:]*):detector\/(?<detectorId>[^:/?]+)\/filter\/(?<filterName>[^:/?]+)$/;
311
349
  const IpsetArnRegex = /^arn:(?<partition>[^:]+):guardduty:(?<region>[^:]*):(?<account>[^:]*):detector\/(?<detectorId>[^:/?]+)\/ipset\/(?<ipSetId>[^:/?]+)$/;
@@ -318,6 +356,63 @@ const TrustedentitysetArnRegex = /^arn:(?<partition>[^:]+):guardduty:(?<region>[
318
356
  * ARN builders, validators, and parsers for guardduty resources.
319
357
  */
320
358
  class GuardDutyResources {
359
+ /**
360
+ * Builds an ARN for the customdetectionrule resource.
361
+ */
362
+ static customdetectionrule(props) {
363
+ return `arn:${props.partition ?? "aws"}:guardduty::aws:detection-rule/custom/${props.ruleId}`;
364
+ }
365
+ /**
366
+ * Validates whether a string is a valid ARN for the customdetectionrule resource.
367
+ */
368
+ static isValidCustomdetectionruleArn(arn) {
369
+ return CustomdetectionruleArnRegex.test(arn);
370
+ }
371
+ /**
372
+ * Parses a customdetectionrule ARN into its components.
373
+ * @throws Error if the ARN does not match the expected format.
374
+ */
375
+ static parseCustomdetectionruleArn(arn) {
376
+ const match = CustomdetectionruleArnRegex.exec(arn);
377
+ if (!match?.groups) {
378
+ throw new Error(`Invalid customdetectionrule ARN: ${arn}`);
379
+ }
380
+ return {
381
+ partition: match.groups.partition,
382
+ region: match.groups.region,
383
+ account: match.groups.account,
384
+ ruleId: match.groups.ruleId,
385
+ };
386
+ }
387
+ /**
388
+ * Builds an ARN for the customdetectionruleassociation resource.
389
+ */
390
+ static customdetectionruleassociation(props) {
391
+ return `arn:${props.partition ?? "aws"}:guardduty:${props.region ?? "*"}:${props.account ?? "*"}:detection-rule/custom/${props.ruleId}/association/${props.associationId}`;
392
+ }
393
+ /**
394
+ * Validates whether a string is a valid ARN for the customdetectionruleassociation resource.
395
+ */
396
+ static isValidCustomdetectionruleassociationArn(arn) {
397
+ return CustomdetectionruleassociationArnRegex.test(arn);
398
+ }
399
+ /**
400
+ * Parses a customdetectionruleassociation ARN into its components.
401
+ * @throws Error if the ARN does not match the expected format.
402
+ */
403
+ static parseCustomdetectionruleassociationArn(arn) {
404
+ const match = CustomdetectionruleassociationArnRegex.exec(arn);
405
+ if (!match?.groups) {
406
+ throw new Error(`Invalid customdetectionruleassociation ARN: ${arn}`);
407
+ }
408
+ return {
409
+ partition: match.groups.partition,
410
+ region: match.groups.region,
411
+ account: match.groups.account,
412
+ ruleId: match.groups.ruleId,
413
+ associationId: match.groups.associationId,
414
+ };
415
+ }
321
416
  /**
322
417
  * Builds an ARN for the detector resource.
323
418
  */
@@ -551,7 +646,7 @@ class GuardDutyResources {
551
646
  }
552
647
  exports.GuardDutyResources = GuardDutyResources;
553
648
  _b = JSII_RTTI_SYMBOL_1;
554
- GuardDutyResources[_b] = { fqn: "@cdk_utils/iam.guardduty.GuardDutyResources", version: "1.14.0" };
649
+ GuardDutyResources[_b] = { fqn: "@cdk_utils/iam.guardduty.GuardDutyResources", version: "1.16.0" };
555
650
  /**
556
651
  * API operation to required IAM actions mapping for guardduty.
557
652
  */
@@ -559,7 +654,7 @@ class GuardDutyOperations {
559
654
  }
560
655
  exports.GuardDutyOperations = GuardDutyOperations;
561
656
  _c = JSII_RTTI_SYMBOL_1;
562
- GuardDutyOperations[_c] = { fqn: "@cdk_utils/iam.guardduty.GuardDutyOperations", version: "1.14.0" };
657
+ GuardDutyOperations[_c] = { fqn: "@cdk_utils/iam.guardduty.GuardDutyOperations", version: "1.16.0" };
563
658
  /** IAM actions required for the AcceptAdministratorInvitation API call. */
564
659
  GuardDutyOperations.AcceptAdministratorInvitation = [
565
660
  "guardduty:AcceptAdministratorInvitation",
@@ -568,6 +663,15 @@ GuardDutyOperations.AcceptAdministratorInvitation = [
568
663
  GuardDutyOperations.AcceptInvitation = ["guardduty:AcceptInvitation"];
569
664
  /** IAM actions required for the ArchiveFindings API call. */
570
665
  GuardDutyOperations.ArchiveFindings = ["guardduty:ArchiveFindings"];
666
+ /** IAM actions required for the CreateCustomDetectionRuleAssociation API call. */
667
+ GuardDutyOperations.CreateCustomDetectionRuleAssociation = [
668
+ "guardduty:CreateCustomDetectionRuleAssociation",
669
+ "guardduty:TagResource",
670
+ ];
671
+ /** IAM actions required for the CreateCustomDetectionRuleOrgConfiguration API call. */
672
+ GuardDutyOperations.CreateCustomDetectionRuleOrgConfiguration = [
673
+ "guardduty:CreateCustomDetectionRuleOrgConfiguration",
674
+ ];
571
675
  /** IAM actions required for the CreateDetector API call. */
572
676
  GuardDutyOperations.CreateDetector = [
573
677
  "guardduty:CreateDetector",
@@ -623,6 +727,14 @@ GuardDutyOperations.CreateTrustedEntitySet = [
623
727
  GuardDutyOperations.DeclineInvitations = [
624
728
  "guardduty:DeclineInvitations",
625
729
  ];
730
+ /** IAM actions required for the DeleteCustomDetectionRuleAssociation API call. */
731
+ GuardDutyOperations.DeleteCustomDetectionRuleAssociation = [
732
+ "guardduty:DeleteCustomDetectionRuleAssociation",
733
+ ];
734
+ /** IAM actions required for the DeleteCustomDetectionRuleOrgConfiguration API call. */
735
+ GuardDutyOperations.DeleteCustomDetectionRuleOrgConfiguration = [
736
+ "guardduty:DeleteCustomDetectionRuleOrgConfiguration",
737
+ ];
626
738
  /** IAM actions required for the DeleteDetector API call. */
627
739
  GuardDutyOperations.DeleteDetector = ["guardduty:DeleteDetector"];
628
740
  /** IAM actions required for the DeleteFilter API call. */
@@ -693,6 +805,18 @@ GuardDutyOperations.opGetAdministratorAccount = [
693
805
  GuardDutyOperations.opGetCoverageStatistics = [
694
806
  "guardduty:GetCoverageStatistics",
695
807
  ];
808
+ /** IAM actions required for the GetCustomDetectionRule API call. */
809
+ GuardDutyOperations.opGetCustomDetectionRule = [
810
+ "guardduty:GetCustomDetectionRule",
811
+ ];
812
+ /** IAM actions required for the GetCustomDetectionRuleAssociation API call. */
813
+ GuardDutyOperations.opGetCustomDetectionRuleAssociation = [
814
+ "guardduty:GetCustomDetectionRuleAssociation",
815
+ ];
816
+ /** IAM actions required for the GetCustomDetectionRuleOrgConfiguration API call. */
817
+ GuardDutyOperations.opGetCustomDetectionRuleOrgConfiguration = [
818
+ "guardduty:GetCustomDetectionRuleOrgConfiguration",
819
+ ];
696
820
  /** IAM actions required for the GetDetector API call. */
697
821
  GuardDutyOperations.opGetDetector = ["guardduty:GetDetector"];
698
822
  /** IAM actions required for the GetFilter API call. */
@@ -757,6 +881,18 @@ GuardDutyOperations.opGetUsageStatistics = [
757
881
  GuardDutyOperations.InviteMembers = ["guardduty:InviteMembers"];
758
882
  /** IAM actions required for the ListCoverage API call. */
759
883
  GuardDutyOperations.ListCoverage = ["guardduty:ListCoverage"];
884
+ /** IAM actions required for the ListCustomDetectionRuleAssociations API call. */
885
+ GuardDutyOperations.ListCustomDetectionRuleAssociations = [
886
+ "guardduty:ListCustomDetectionRuleAssociations",
887
+ ];
888
+ /** IAM actions required for the ListCustomDetectionRuleOrgConfigurations API call. */
889
+ GuardDutyOperations.ListCustomDetectionRuleOrgConfigurations = [
890
+ "guardduty:ListCustomDetectionRuleOrgConfigurations",
891
+ ];
892
+ /** IAM actions required for the ListCustomDetectionRules API call. */
893
+ GuardDutyOperations.ListCustomDetectionRules = [
894
+ "guardduty:ListCustomDetectionRules",
895
+ ];
760
896
  /** IAM actions required for the ListDetectors API call. */
761
897
  GuardDutyOperations.ListDetectors = ["guardduty:ListDetectors"];
762
898
  /** IAM actions required for the ListFilters API call. */
@@ -826,6 +962,12 @@ GuardDutyOperations.TagResource = ["guardduty:TagResource"];
826
962
  GuardDutyOperations.UnarchiveFindings = ["guardduty:UnarchiveFindings"];
827
963
  /** IAM actions required for the UntagResource API call. */
828
964
  GuardDutyOperations.UntagResource = ["guardduty:UntagResource"];
965
+ /** IAM actions required for the UpdateCustomDetectionRuleAssociation API call. */
966
+ GuardDutyOperations.UpdateCustomDetectionRuleAssociation = [
967
+ "guardduty:UpdateCustomDetectionRuleAssociation",
968
+ ];
969
+ /** IAM actions required for the UpdateCustomDetectionRuleOrgConfiguration API call. */
970
+ GuardDutyOperations.UpdateCustomDetectionRuleOrgConfiguration = [];
829
971
  /** IAM actions required for the UpdateDetector API call. */
830
972
  GuardDutyOperations.UpdateDetector = ["guardduty:UpdateDetector"];
831
973
  /** IAM actions required for the UpdateFilter API call. */
@@ -894,7 +1036,9 @@ class GuardDutyConditions {
894
1036
  }
895
1037
  exports.GuardDutyConditions = GuardDutyConditions;
896
1038
  _d = JSII_RTTI_SYMBOL_1;
897
- GuardDutyConditions[_d] = { fqn: "@cdk_utils/iam.guardduty.GuardDutyConditions", version: "1.14.0" };
1039
+ GuardDutyConditions[_d] = { fqn: "@cdk_utils/iam.guardduty.GuardDutyConditions", version: "1.16.0" };
1040
+ /** Condition keys applicable to the CreateCustomDetectionRuleAssociation action. */
1041
+ GuardDutyConditions.CreateCustomDetectionRuleAssociationConditionKeys = ["aws:RequestTag/${TagKey}", "aws:TagKeys"];
898
1042
  /** Condition keys applicable to the CreateDetector action. */
899
1043
  GuardDutyConditions.CreateDetectorConditionKeys = [
900
1044
  "aws:RequestTag/${TagKey}",
@@ -953,4 +1097,4 @@ GuardDutyConditions.AWS_REQUEST_TAG = "aws:RequestTag/${TagKey}";
953
1097
  GuardDutyConditions.AWS_RESOURCE_TAG = "aws:ResourceTag/${TagKey}";
954
1098
  /** Condition key: aws:TagKeys (ArrayOfString) */
955
1099
  GuardDutyConditions.AWS_TAG_KEYS = "aws:TagKeys";
956
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhcmRkdXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dlbmVyYXRlZC9zZXJ2aWNlcy9ndWFyZGR1dHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnRkFBZ0Y7QUFDaEYsNkNBQTZDO0FBQzdDLDBEQUEwRDtBQUMxRCxnREFBZ0Q7QUFDaEQsb0RBQW9EO0FBQ3BELGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQWEsZ0JBQWdCOztBQUE3Qiw0Q0E2VEM7OztBQTVUQSw4QkFBOEI7QUFDZCwrQkFBYyxHQUFHLFdBQVcsQ0FBQztBQUU3QyxzREFBc0Q7QUFDdEMsOENBQTZCLEdBQzVDLHlDQUF5QyxDQUFDO0FBQzNDLHlDQUF5QztBQUN6QixpQ0FBZ0IsR0FBRyw0QkFBNEIsQ0FBQztBQUNoRSx3Q0FBd0M7QUFDeEIsZ0NBQWUsR0FBRywyQkFBMkIsQ0FBQztBQUM5RCx1Q0FBdUM7QUFDdkIsK0JBQWMsR0FBRywwQkFBMEIsQ0FBQztBQUM1RCxxQ0FBcUM7QUFDckIsNkJBQVksR0FBRyx3QkFBd0IsQ0FBQztBQUN4RCxvQ0FBb0M7QUFDcEIsNEJBQVcsR0FBRyx1QkFBdUIsQ0FBQztBQUN0RCw0Q0FBNEM7QUFDNUIsb0NBQW1CLEdBQUcsK0JBQStCLENBQUM7QUFDdEUsb0RBQW9EO0FBQ3BDLDRDQUEyQixHQUMxQyx1Q0FBdUMsQ0FBQztBQUN6QyxzQ0FBc0M7QUFDdEIsOEJBQWEsR0FBRyx5QkFBeUIsQ0FBQztBQUMxRCxvREFBb0Q7QUFDcEMsNENBQTJCLEdBQzFDLHVDQUF1QyxDQUFDO0FBQ3pDLDZDQUE2QztBQUM3QixxQ0FBb0IsR0FBRyxnQ0FBZ0MsQ0FBQztBQUN4RSw4Q0FBOEM7QUFDOUIsc0NBQXFCLEdBQUcsaUNBQWlDLENBQUM7QUFDMUUsNkNBQTZDO0FBQzdCLHFDQUFvQixHQUFHLGdDQUFnQyxDQUFDO0FBQ3hFLCtDQUErQztBQUMvQix1Q0FBc0IsR0FBRyxrQ0FBa0MsQ0FBQztB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Q0FBMEIsR0FBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBRXZFLHVEQUF1RDtBQUN2QyxtQ0FBZSxHQUFHLDBCQUEwQixDQUFDO0FBQzdELHdEQUF3RDtBQUN4QyxvQ0FBZ0IsR0FBRywyQkFBMkIsQ0FBQztBQUMvRCxpREFBaUQ7QUFDakMsZ0NBQVksR0FBRyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQVVUTy1HRU5FUkFURUQgRklMRSDigJQgRE8gTk9UIEVESVQgTUFOVUFMTFlcbi8vIEdlbmVyYXRlZCBmcm9tIEFXUyBTZXJ2aWNlIEF1dGhvcml6YXRpb24gUmVmZXJlbmNlIGRhdGFcbi8vIFNvdXJjZTogZGF0YS9zZXJ2aWNlLXJlZmVyZW5jZS9ndWFyZGR1dHkuanNvblxuLy8gUnVuIGBucHggcHJvamVuIGdlbmVyYXRlLWNvbnN0YW50c2AgdG8gcmVnZW5lcmF0ZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBJQU0gYWN0aW9uIGNvbnN0YW50cyBmb3IgdGhlIGd1YXJkZHV0eSBzZXJ2aWNlLlxuICovXG5leHBvcnQgY2xhc3MgR3VhcmREdXR5QWN0aW9ucyB7XG5cdC8qKiBUaGUgSUFNIHNlcnZpY2UgcHJlZml4LiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU0VSVklDRV9QUkVGSVggPSBcImd1YXJkZHV0eVwiO1xuXG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpBY2NlcHRBZG1pbmlzdHJhdG9ySW52aXRhdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWNjZXB0QWRtaW5pc3RyYXRvckludml0YXRpb24gPVxuXHRcdFwiZ3VhcmRkdXR5OkFjY2VwdEFkbWluaXN0cmF0b3JJbnZpdGF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpBY2NlcHRJbnZpdGF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBBY2NlcHRJbnZpdGF0aW9uID0gXCJndWFyZGR1dHk6QWNjZXB0SW52aXRhdGlvblwiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6QXJjaGl2ZUZpbmRpbmdzICovXG5cdHN0YXRpYyByZWFkb25seSBBcmNoaXZlRmluZGluZ3MgPSBcImd1YXJkZHV0eTpBcmNoaXZlRmluZGluZ3NcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OkNyZWF0ZURldGVjdG9yICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVEZXRlY3RvciA9IFwiZ3VhcmRkdXR5OkNyZWF0ZURldGVjdG9yXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpDcmVhdGVGaWx0ZXIgKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUZpbHRlciA9IFwiZ3VhcmRkdXR5OkNyZWF0ZUZpbHRlclwiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6Q3JlYXRlSVBTZXQgKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUlQU2V0ID0gXCJndWFyZGR1dHk6Q3JlYXRlSVBTZXRcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OkNyZWF0ZUludmVzdGlnYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUludmVzdGlnYXRpb24gPSBcImd1YXJkZHV0eTpDcmVhdGVJbnZlc3RpZ2F0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpDcmVhdGVNYWx3YXJlUHJvdGVjdGlvblBsYW4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZU1hbHdhcmVQcm90ZWN0aW9uUGxhbiA9XG5cdFx0XCJndWFyZGR1dHk6Q3JlYXRlTWFsd2FyZVByb3RlY3Rpb25QbGFuXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpDcmVhdGVNZW1iZXJzICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVNZW1iZXJzID0gXCJndWFyZGR1dHk6Q3JlYXRlTWVtYmVyc1wiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6Q3JlYXRlUHVibGlzaGluZ0Rlc3RpbmF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVQdWJsaXNoaW5nRGVzdGluYXRpb24gPVxuXHRcdFwiZ3VhcmRkdXR5OkNyZWF0ZVB1Ymxpc2hpbmdEZXN0aW5hdGlvblwiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6Q3JlYXRlU2FtcGxlRmluZGluZ3MgKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVNhbXBsZUZpbmRpbmdzID0gXCJndWFyZGR1dHk6Q3JlYXRlU2FtcGxlRmluZGluZ3NcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OkNyZWF0ZVRocmVhdEVudGl0eVNldCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlVGhyZWF0RW50aXR5U2V0ID0gXCJndWFyZGR1dHk6Q3JlYXRlVGhyZWF0RW50aXR5U2V0XCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpDcmVhdGVUaHJlYXRJbnRlbFNldCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlVGhyZWF0SW50ZWxTZXQgPSBcImd1YXJkZHV0eTpDcmVhdGVUaHJlYXRJbnRlbFNldFwiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6Q3JlYXRlVHJ1c3RlZEVudGl0eVNldCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlVHJ1c3RlZEVudGl0eVNldCA9IFwiZ3VhcmRkdXR5OkNyZWF0ZVRydXN0ZWRFbnRpdHlTZXRcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OkRlY2xpbmVJbnZpdGF0aW9ucyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVjbGluZUludml0YXRpb25zID0gXCJndWFyZGR1dHk6RGVjbGluZUludml0YXRpb25zXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpEZWxldGVEZXRlY3RvciAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlRGV0ZWN0b3IgPSBcImd1YXJkZHV0eTpEZWxldGVEZXRlY3RvclwiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6RGVsZXRlRmlsdGVyICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVGaWx0ZXIgPSBcImd1YXJkZHV0eTpEZWxldGVGaWx0ZXJcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OkRlbGV0ZUlQU2V0ICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVJUFNldCA9IFwiZ3VhcmRkdXR5OkRlbGV0ZUlQU2V0XCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpEZWxldGVJbnZpdGF0aW9ucyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlSW52aXRhdGlvbnMgPSBcImd1YXJkZHV0eTpEZWxldGVJbnZpdGF0aW9uc1wiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6RGVsZXRlTWFsd2FyZVByb3RlY3Rpb25QbGFuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVNYWx3YXJlUHJvdGVjdGlvblBsYW4gPVxuXHRcdFwiZ3VhcmRkdXR5OkRlbGV0ZU1hbHdhcmVQcm90ZWN0aW9uUGxhblwiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6RGVsZXRlTWVtYmVycyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlTWVtYmVycyA9IFwiZ3VhcmRkdXR5OkRlbGV0ZU1lbWJlcnNcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OkRlbGV0ZVB1Ymxpc2hpbmdEZXN0aW5hdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlUHVibGlzaGluZ0Rlc3RpbmF0aW9uID1cblx0XHRcImd1YXJkZHV0eTpEZWxldGVQdWJsaXNoaW5nRGVzdGluYXRpb25cIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OkRlbGV0ZVRocmVhdEVudGl0eVNldCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlVGhyZWF0RW50aXR5U2V0ID0gXCJndWFyZGR1dHk6RGVsZXRlVGhyZWF0RW50aXR5U2V0XCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpEZWxldGVUaHJlYXRJbnRlbFNldCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlVGhyZWF0SW50ZWxTZXQgPSBcImd1YXJkZHV0eTpEZWxldGVUaHJlYXRJbnRlbFNldFwiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6RGVsZXRlVHJ1c3RlZEVudGl0eVNldCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlVHJ1c3RlZEVudGl0eVNldCA9IFwiZ3VhcmRkdXR5OkRlbGV0ZVRydXN0ZWRFbnRpdHlTZXRcIjtcblx0LyoqIFtSZWFkXSBndWFyZGR1dHk6RGVzY3JpYmVNYWx3YXJlU2NhbnMgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlTWFsd2FyZVNjYW5zID0gXCJndWFyZGR1dHk6RGVzY3JpYmVNYWx3YXJlU2NhbnNcIjtcblx0LyoqIFtSZWFkXSBndWFyZGR1dHk6RGVzY3JpYmVPcmdhbml6YXRpb25Db25maWd1cmF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZU9yZ2FuaXphdGlvbkNvbmZpZ3VyYXRpb24gPVxuXHRcdFwiZ3VhcmRkdXR5OkRlc2NyaWJlT3JnYW5pemF0aW9uQ29uZmlndXJhdGlvblwiO1xuXHQvKiogW1JlYWRdIGd1YXJkZHV0eTpEZXNjcmliZVB1Ymxpc2hpbmdEZXN0aW5hdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVQdWJsaXNoaW5nRGVzdGluYXRpb24gPVxuXHRcdFwiZ3VhcmRkdXR5OkRlc2NyaWJlUHVibGlzaGluZ0Rlc3RpbmF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpEaXNhYmxlT3JnYW5pemF0aW9uQWRtaW5BY2NvdW50ICovXG5cdHN0YXRpYyByZWFkb25seSBEaXNhYmxlT3JnYW5pemF0aW9uQWRtaW5BY2NvdW50ID1cblx0XHRcImd1YXJkZHV0eTpEaXNhYmxlT3JnYW5pemF0aW9uQWRtaW5BY2NvdW50XCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpEaXNhc3NvY2lhdGVGcm9tQWRtaW5pc3RyYXRvckFjY291bnQgKi9cblx0c3RhdGljIHJlYWRvbmx5IERpc2Fzc29jaWF0ZUZyb21BZG1pbmlzdHJhdG9yQWNjb3VudCA9XG5cdFx0XCJndWFyZGR1dHk6RGlzYXNzb2NpYXRlRnJvbUFkbWluaXN0cmF0b3JBY2NvdW50XCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpEaXNhc3NvY2lhdGVGcm9tTWFzdGVyQWNjb3VudCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGlzYXNzb2NpYXRlRnJvbU1hc3RlckFjY291bnQgPVxuXHRcdFwiZ3VhcmRkdXR5OkRpc2Fzc29jaWF0ZUZyb21NYXN0ZXJBY2NvdW50XCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpEaXNhc3NvY2lhdGVNZW1iZXJzICovXG5cdHN0YXRpYyByZWFkb25seSBEaXNhc3NvY2lhdGVNZW1iZXJzID0gXCJndWFyZGR1dHk6RGlzYXNzb2NpYXRlTWVtYmVyc1wiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6RW5hYmxlT3JnYW5pemF0aW9uQWRtaW5BY2NvdW50ICovXG5cdHN0YXRpYyByZWFkb25seSBFbmFibGVPcmdhbml6YXRpb25BZG1pbkFjY291bnQgPVxuXHRcdFwiZ3VhcmRkdXR5OkVuYWJsZU9yZ2FuaXphdGlvbkFkbWluQWNjb3VudFwiO1xuXHQvKiogW1JlYWRdIGd1YXJkZHV0eTpHZXRBZG1pbmlzdHJhdG9yQWNjb3VudCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0QWRtaW5pc3RyYXRvckFjY291bnQgPVxuXHRcdFwiZ3VhcmRkdXR5OkdldEFkbWluaXN0cmF0b3JBY2NvdW50XCI7XG5cdC8qKiBbUmVhZF0gZ3VhcmRkdXR5OkdldENvdmVyYWdlU3RhdGlzdGljcyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0Q292ZXJhZ2VTdGF0aXN0aWNzID1cblx0XHRcImd1YXJkZHV0eTpHZXRDb3ZlcmFnZVN0YXRpc3RpY3NcIjtcblx0LyoqIFtSZWFkXSBndWFyZGR1dHk6R2V0RGV0ZWN0b3IgKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldERldGVjdG9yID0gXCJndWFyZGR1dHk6R2V0RGV0ZWN0b3JcIjtcblx0LyoqIFtSZWFkXSBndWFyZGR1dHk6R2V0RmlsdGVyICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRGaWx0ZXIgPSBcImd1YXJkZHV0eTpHZXRGaWx0ZXJcIjtcblx0LyoqIFtSZWFkXSBndWFyZGR1dHk6R2V0RmluZGluZ3MgKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldEZpbmRpbmdzID0gXCJndWFyZGR1dHk6R2V0RmluZGluZ3NcIjtcblx0LyoqIFtSZWFkXSBndWFyZGR1dHk6R2V0RmluZGluZ3NTdGF0aXN0aWNzICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRGaW5kaW5nc1N0YXRpc3RpY3MgPVxuXHRcdFwiZ3VhcmRkdXR5OkdldEZpbmRpbmdzU3RhdGlzdGljc1wiO1xuXHQvKiogW1JlYWRdIGd1YXJkZHV0eTpHZXRJUFNldCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0SVBTZXQgPSBcImd1YXJkZHV0eTpHZXRJUFNldFwiO1xuXHQvKiogW1JlYWRdIGd1YXJkZHV0eTpHZXRJbnZlc3RpZ2F0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRJbnZlc3RpZ2F0aW9uID0gXCJndWFyZGR1dHk6R2V0SW52ZXN0aWdhdGlvblwiO1xuXHQvKiogW1JlYWRdIGd1YXJkZHV0eTpHZXRJbnZpdGF0aW9uc0NvdW50ICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRJbnZpdGF0aW9uc0NvdW50ID0gXCJndWFyZGR1dHk6R2V0SW52aXRhdGlvbnNDb3VudFwiO1xuXHQvKiogW1JlYWRdIGd1YXJkZHV0eTpHZXRNYWx3YXJlUHJvdGVjdGlvblBsYW4gKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldE1hbHdhcmVQcm90ZWN0aW9uUGxhbiA9XG5cdFx0XCJndWFyZGR1dHk6R2V0TWFsd2FyZVByb3RlY3Rpb25QbGFuXCI7XG5cdC8qKiBbUmVhZF0gZ3VhcmRkdXR5OkdldE1hbHdhcmVTY2FuICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRNYWx3YXJlU2NhbiA9IFwiZ3VhcmRkdXR5OkdldE1hbHdhcmVTY2FuXCI7XG5cdC8qKiBbUmVhZF0gZ3VhcmRkdXR5OkdldE1hbHdhcmVTY2FuU2V0dGluZ3MgKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldE1hbHdhcmVTY2FuU2V0dGluZ3MgPVxuXHRcdFwiZ3VhcmRkdXR5OkdldE1hbHdhcmVTY2FuU2V0dGluZ3NcIjtcblx0LyoqIFtSZWFkXSBndWFyZGR1dHk6R2V0TWFzdGVyQWNjb3VudCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0TWFzdGVyQWNjb3VudCA9IFwiZ3VhcmRkdXR5OkdldE1hc3RlckFjY291bnRcIjtcblx0LyoqIFtSZWFkXSBndWFyZGR1dHk6R2V0TWVtYmVyRGV0ZWN0b3JzICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRNZW1iZXJEZXRlY3RvcnMgPSBcImd1YXJkZHV0eTpHZXRNZW1iZXJEZXRlY3RvcnNcIjtcblx0LyoqIFtSZWFkXSBndWFyZGR1dHk6R2V0TWVtYmVycyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0TWVtYmVycyA9IFwiZ3VhcmRkdXR5OkdldE1lbWJlcnNcIjtcblx0LyoqIFtSZWFkXSBndWFyZGR1dHk6R2V0T3JnYW5pemF0aW9uU3RhdGlzdGljcyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0T3JnYW5pemF0aW9uU3RhdGlzdGljcyA9XG5cdFx0XCJndWFyZGR1dHk6R2V0T3JnYW5pemF0aW9uU3RhdGlzdGljc1wiO1xuXHQvKiogW1JlYWRdIGd1YXJkZHV0eTpHZXRSZW1haW5pbmdGcmVlVHJpYWxEYXlzICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRSZW1haW5pbmdGcmVlVHJpYWxEYXlzID1cblx0XHRcImd1YXJkZHV0eTpHZXRSZW1haW5pbmdGcmVlVHJpYWxEYXlzXCI7XG5cdC8qKiBbUmVhZF0gZ3VhcmRkdXR5OkdldFRocmVhdEVudGl0eVNldCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0VGhyZWF0RW50aXR5U2V0ID0gXCJndWFyZGR1dHk6R2V0VGhyZWF0RW50aXR5U2V0XCI7XG5cdC8qKiBbUmVhZF0gZ3VhcmRkdXR5OkdldFRocmVhdEludGVsU2V0ICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRUaHJlYXRJbnRlbFNldCA9IFwiZ3VhcmRkdXR5OkdldFRocmVhdEludGVsU2V0XCI7XG5cdC8qKiBbUmVhZF0gZ3VhcmRkdXR5OkdldFRydXN0ZWRFbnRpdHlTZXQgKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldFRydXN0ZWRFbnRpdHlTZXQgPSBcImd1YXJkZHV0eTpHZXRUcnVzdGVkRW50aXR5U2V0XCI7XG5cdC8qKiBbUmVhZF0gZ3VhcmRkdXR5OkdldFVzYWdlU3RhdGlzdGljcyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0VXNhZ2VTdGF0aXN0aWNzID0gXCJndWFyZGR1dHk6R2V0VXNhZ2VTdGF0aXN0aWNzXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpJbnZpdGVNZW1iZXJzICovXG5cdHN0YXRpYyByZWFkb25seSBJbnZpdGVNZW1iZXJzID0gXCJndWFyZGR1dHk6SW52aXRlTWVtYmVyc1wiO1xuXHQvKiogW0xpc3RdIGd1YXJkZHV0eTpMaXN0Q292ZXJhZ2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RDb3ZlcmFnZSA9IFwiZ3VhcmRkdXR5Okxpc3RDb3ZlcmFnZVwiO1xuXHQvKiogW0xpc3RdIGd1YXJkZHV0eTpMaXN0RGV0ZWN0b3JzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RGV0ZWN0b3JzID0gXCJndWFyZGR1dHk6TGlzdERldGVjdG9yc1wiO1xuXHQvKiogW0xpc3RdIGd1YXJkZHV0eTpMaXN0RmlsdGVycyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEZpbHRlcnMgPSBcImd1YXJkZHV0eTpMaXN0RmlsdGVyc1wiO1xuXHQvKiogW0xpc3RdIGd1YXJkZHV0eTpMaXN0RmluZGluZ3MgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RGaW5kaW5ncyA9IFwiZ3VhcmRkdXR5Okxpc3RGaW5kaW5nc1wiO1xuXHQvKiogW0xpc3RdIGd1YXJkZHV0eTpMaXN0SVBTZXRzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0SVBTZXRzID0gXCJndWFyZGR1dHk6TGlzdElQU2V0c1wiO1xuXHQvKiogW0xpc3RdIGd1YXJkZHV0eTpMaXN0SW52ZXN0aWdhdGlvbnMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RJbnZlc3RpZ2F0aW9ucyA9IFwiZ3VhcmRkdXR5Okxpc3RJbnZlc3RpZ2F0aW9uc1wiO1xuXHQvKiogW0xpc3RdIGd1YXJkZHV0eTpMaXN0SW52aXRhdGlvbnMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RJbnZpdGF0aW9ucyA9IFwiZ3VhcmRkdXR5Okxpc3RJbnZpdGF0aW9uc1wiO1xuXHQvKiogW0xpc3RdIGd1YXJkZHV0eTpMaXN0TWFsd2FyZVByb3RlY3Rpb25QbGFucyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdE1hbHdhcmVQcm90ZWN0aW9uUGxhbnMgPVxuXHRcdFwiZ3VhcmRkdXR5Okxpc3RNYWx3YXJlUHJvdGVjdGlvblBsYW5zXCI7XG5cdC8qKiBbTGlzdF0gZ3VhcmRkdXR5Okxpc3RNYWx3YXJlU2NhbnMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RNYWx3YXJlU2NhbnMgPSBcImd1YXJkZHV0eTpMaXN0TWFsd2FyZVNjYW5zXCI7XG5cdC8qKiBbTGlzdF0gZ3VhcmRkdXR5Okxpc3RNZW1iZXJzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0TWVtYmVycyA9IFwiZ3VhcmRkdXR5Okxpc3RNZW1iZXJzXCI7XG5cdC8qKiBbTGlzdF0gZ3VhcmRkdXR5Okxpc3RPcmdhbml6YXRpb25BZG1pbkFjY291bnRzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0T3JnYW5pemF0aW9uQWRtaW5BY2NvdW50cyA9XG5cdFx0XCJndWFyZGR1dHk6TGlzdE9yZ2FuaXphdGlvbkFkbWluQWNjb3VudHNcIjtcblx0LyoqIFtMaXN0XSBndWFyZGR1dHk6TGlzdFB1Ymxpc2hpbmdEZXN0aW5hdGlvbnMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RQdWJsaXNoaW5nRGVzdGluYXRpb25zID1cblx0XHRcImd1YXJkZHV0eTpMaXN0UHVibGlzaGluZ0Rlc3RpbmF0aW9uc1wiO1xuXHQvKiogW1JlYWRdIGd1YXJkZHV0eTpMaXN0VGFnc0ZvclJlc291cmNlICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0VGFnc0ZvclJlc291cmNlID0gXCJndWFyZGR1dHk6TGlzdFRhZ3NGb3JSZXNvdXJjZVwiO1xuXHQvKiogW0xpc3RdIGd1YXJkZHV0eTpMaXN0VGhyZWF0RW50aXR5U2V0cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFRocmVhdEVudGl0eVNldHMgPSBcImd1YXJkZHV0eTpMaXN0VGhyZWF0RW50aXR5U2V0c1wiO1xuXHQvKiogW0xpc3RdIGd1YXJkZHV0eTpMaXN0VGhyZWF0SW50ZWxTZXRzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0VGhyZWF0SW50ZWxTZXRzID0gXCJndWFyZGR1dHk6TGlzdFRocmVhdEludGVsU2V0c1wiO1xuXHQvKiogW0xpc3RdIGd1YXJkZHV0eTpMaXN0VHJ1c3RlZEVudGl0eVNldHMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUcnVzdGVkRW50aXR5U2V0cyA9IFwiZ3VhcmRkdXR5Okxpc3RUcnVzdGVkRW50aXR5U2V0c1wiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6U2VuZE9iamVjdE1hbHdhcmVTY2FuICovXG5cdHN0YXRpYyByZWFkb25seSBTZW5kT2JqZWN0TWFsd2FyZVNjYW4gPSBcImd1YXJkZHV0eTpTZW5kT2JqZWN0TWFsd2FyZVNjYW5cIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OlNlbmRTZWN1cml0eVRlbGVtZXRyeSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU2VuZFNlY3VyaXR5VGVsZW1ldHJ5ID0gXCJndWFyZGR1dHk6U2VuZFNlY3VyaXR5VGVsZW1ldHJ5XCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpTdGFydE1hbHdhcmVTY2FuICovXG5cdHN0YXRpYyByZWFkb25seSBTdGFydE1hbHdhcmVTY2FuID0gXCJndWFyZGR1dHk6U3RhcnRNYWx3YXJlU2NhblwiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6U3RhcnRNb25pdG9yaW5nTWVtYmVycyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RhcnRNb25pdG9yaW5nTWVtYmVycyA9IFwiZ3VhcmRkdXR5OlN0YXJ0TW9uaXRvcmluZ01lbWJlcnNcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OlN0b3BNb25pdG9yaW5nTWVtYmVycyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RvcE1vbml0b3JpbmdNZW1iZXJzID0gXCJndWFyZGR1dHk6U3RvcE1vbml0b3JpbmdNZW1iZXJzXCI7XG5cdC8qKiBbVGFnZ2luZ10gZ3VhcmRkdXR5OlRhZ1Jlc291cmNlICovXG5cdHN0YXRpYyByZWFkb25seSBUYWdSZXNvdXJjZSA9IFwiZ3VhcmRkdXR5OlRhZ1Jlc291cmNlXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpVbmFyY2hpdmVGaW5kaW5ncyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVW5hcmNoaXZlRmluZGluZ3MgPSBcImd1YXJkZHV0eTpVbmFyY2hpdmVGaW5kaW5nc1wiO1xuXHQvKiogW1RhZ2dpbmddIGd1YXJkZHV0eTpVbnRhZ1Jlc291cmNlICovXG5cdHN0YXRpYyByZWFkb25seSBVbnRhZ1Jlc291cmNlID0gXCJndWFyZGR1dHk6VW50YWdSZXNvdXJjZVwiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6VXBkYXRlRGV0ZWN0b3IgKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZURldGVjdG9yID0gXCJndWFyZGR1dHk6VXBkYXRlRGV0ZWN0b3JcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OlVwZGF0ZUZpbHRlciAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRmlsdGVyID0gXCJndWFyZGR1dHk6VXBkYXRlRmlsdGVyXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpVcGRhdGVGaW5kaW5nc0ZlZWRiYWNrICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVGaW5kaW5nc0ZlZWRiYWNrID0gXCJndWFyZGR1dHk6VXBkYXRlRmluZGluZ3NGZWVkYmFja1wiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6VXBkYXRlSVBTZXQgKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUlQU2V0ID0gXCJndWFyZGR1dHk6VXBkYXRlSVBTZXRcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OlVwZGF0ZU1hbHdhcmVQcm90ZWN0aW9uUGxhbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlTWFsd2FyZVByb3RlY3Rpb25QbGFuID1cblx0XHRcImd1YXJkZHV0eTpVcGRhdGVNYWx3YXJlUHJvdGVjdGlvblBsYW5cIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OlVwZGF0ZU1hbHdhcmVTY2FuU2V0dGluZ3MgKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZU1hbHdhcmVTY2FuU2V0dGluZ3MgPVxuXHRcdFwiZ3VhcmRkdXR5OlVwZGF0ZU1hbHdhcmVTY2FuU2V0dGluZ3NcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OlVwZGF0ZU1lbWJlckRldGVjdG9ycyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlTWVtYmVyRGV0ZWN0b3JzID0gXCJndWFyZGR1dHk6VXBkYXRlTWVtYmVyRGV0ZWN0b3JzXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpVcGRhdGVPcmdhbml6YXRpb25Db25maWd1cmF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVPcmdhbml6YXRpb25Db25maWd1cmF0aW9uID1cblx0XHRcImd1YXJkZHV0eTpVcGRhdGVPcmdhbml6YXRpb25Db25maWd1cmF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpVcGRhdGVQdWJsaXNoaW5nRGVzdGluYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZVB1Ymxpc2hpbmdEZXN0aW5hdGlvbiA9XG5cdFx0XCJndWFyZGR1dHk6VXBkYXRlUHVibGlzaGluZ0Rlc3RpbmF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpVcGRhdGVUaHJlYXRFbnRpdHlTZXQgKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZVRocmVhdEVudGl0eVNldCA9IFwiZ3VhcmRkdXR5OlVwZGF0ZVRocmVhdEVudGl0eVNldFwiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6VXBkYXRlVGhyZWF0SW50ZWxTZXQgKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZVRocmVhdEludGVsU2V0ID0gXCJndWFyZGR1dHk6VXBkYXRlVGhyZWF0SW50ZWxTZXRcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OlVwZGF0ZVRydXN0ZWRFbnRpdHlTZXQgKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZVRydXN0ZWRFbnRpdHlTZXQgPSBcImd1YXJkZHV0eTpVcGRhdGVUcnVzdGVkRW50aXR5U2V0XCI7XG5cblx0LyoqIEFsbCByZWFkLWxldmVsIGFjdGlvbnMuICovXG5cdHN0YXRpYyByZWFkb25seSBBbGxSZWFkQWN0aW9uczogc3RyaW5nW10gPSBbXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5EZXNjcmliZU1hbHdhcmVTY2Fucyxcblx0XHRHdWFyZER1dHlBY3Rpb25zLkRlc2NyaWJlT3JnYW5pemF0aW9uQ29uZmlndXJhdGlvbixcblx0XHRHdWFyZER1dHlBY3Rpb25zLkRlc2NyaWJlUHVibGlzaGluZ0Rlc3RpbmF0aW9uLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuYWN0aW9uR2V0QWRtaW5pc3RyYXRvckFjY291bnQsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5hY3Rpb25HZXRDb3ZlcmFnZVN0YXRpc3RpY3MsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5hY3Rpb25HZXREZXRlY3Rvcixcblx0XHRHdWFyZER1dHlBY3Rpb25zLmFjdGlvbkdldEZpbHRlcixcblx0XHRHdWFyZER1dHlBY3Rpb25zLmFjdGlvbkdldEZpbmRpbmdzLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuYWN0aW9uR2V0RmluZGluZ3NTdGF0aXN0aWNzLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuYWN0aW9uR2V0SVBTZXQsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5hY3Rpb25HZXRJbnZlc3RpZ2F0aW9uLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuYWN0aW9uR2V0SW52aXRhdGlvbnNDb3VudCxcblx0XHRHdWFyZER1dHlBY3Rpb25zLmFjdGlvbkdldE1hbHdhcmVQcm90ZWN0aW9uUGxhbixcblx0XHRHdWFyZER1dHlBY3Rpb25zLmFjdGlvbkdldE1hbHdhcmVTY2FuLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuYWN0aW9uR2V0TWFsd2FyZVNjYW5TZXR0aW5ncyxcblx0XHRHdWFyZER1dHlBY3Rpb25zLmFjdGlvbkdldE1hc3RlckFjY291bnQsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5hY3Rpb25HZXRNZW1iZXJEZXRlY3RvcnMsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5hY3Rpb25HZXRNZW1iZXJzLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuYWN0aW9uR2V0T3JnYW5pemF0aW9uU3RhdGlzdGljcyxcblx0XHRHdWFyZER1dHlBY3Rpb25zLmFjdGlvbkdldFJlbWFpbmluZ0ZyZWVUcmlhbERheXMsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5hY3Rpb25HZXRUaHJlYXRFbnRpdHlTZXQsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5hY3Rpb25HZXRUaHJlYXRJbnRlbFNldCxcblx0XHRHdWFyZER1dHlBY3Rpb25zLmFjdGlvbkdldFRydXN0ZWRFbnRpdHlTZXQsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5hY3Rpb25HZXRVc2FnZVN0YXRpc3RpY3MsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5MaXN0VGFnc0ZvclJlc291cmNlLFxuXHRdO1xuXHQvKiogQWxsIHdyaXRlLWxldmVsIGFjdGlvbnMuICovXG5cdHN0YXRpYyByZWFkb25seSBBbGxXcml0ZUFjdGlvbnM6IHN0cmluZ1tdID0gW1xuXHRcdEd1YXJkRHV0eUFjdGlvbnMuQWNjZXB0QWRtaW5pc3RyYXRvckludml0YXRpb24sXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5BY2NlcHRJbnZpdGF0aW9uLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuQXJjaGl2ZUZpbmRpbmdzLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuQ3JlYXRlRGV0ZWN0b3IsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5DcmVhdGVGaWx0ZXIsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5DcmVhdGVJUFNldCxcblx0XHRHdWFyZER1dHlBY3Rpb25zLkNyZWF0ZUludmVzdGlnYXRpb24sXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5DcmVhdGVNYWx3YXJlUHJvdGVjdGlvblBsYW4sXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5DcmVhdGVNZW1iZXJzLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuQ3JlYXRlUHVibGlzaGluZ0Rlc3RpbmF0aW9uLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuQ3JlYXRlU2FtcGxlRmluZGluZ3MsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5DcmVhdGVUaHJlYXRFbnRpdHlTZXQsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5DcmVhdGVUaHJlYXRJbnRlbFNldCxcblx0XHRHdWFyZER1dHlBY3Rpb25zLkNyZWF0ZVRydXN0ZWRFbnRpdHlTZXQsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5EZWNsaW5lSW52aXRhdGlvbnMsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5EZWxldGVEZXRlY3Rvcixcblx0XHRHdWFyZER1dHlBY3Rpb25zLkRlbGV0ZUZpbHRlcixcblx0XHRHdWFyZER1dHlBY3Rpb25zLkRlbGV0ZUlQU2V0LFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuRGVsZXRlSW52aXRhdGlvbnMsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5EZWxldGVNYWx3YXJlUHJvdGVjdGlvblBsYW4sXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5EZWxldGVNZW1iZXJzLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuRGVsZXRlUHVibGlzaGluZ0Rlc3RpbmF0aW9uLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuRGVsZXRlVGhyZWF0RW50aXR5U2V0LFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuRGVsZXRlVGhyZWF0SW50ZWxTZXQsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5EZWxldGVUcnVzdGVkRW50aXR5U2V0LFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuRGlzYWJsZU9yZ2FuaXphdGlvbkFkbWluQWNjb3VudCxcblx0XHRHdWFyZER1dHlBY3Rpb25zLkRpc2Fzc29jaWF0ZUZyb21BZG1pbmlzdHJhdG9yQWNjb3VudCxcblx0XHRHdWFyZER1dHlBY3Rpb25zLkRpc2Fzc29jaWF0ZUZyb21NYXN0ZXJBY2NvdW50LFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuRGlzYXNzb2NpYXRlTWVtYmVycyxcblx0XHRHdWFyZER1dHlBY3Rpb25zLkVuYWJsZU9yZ2FuaXphdGlvbkFkbWluQWNjb3VudCxcblx0XHRHdWFyZER1dHlBY3Rpb25zLkludml0ZU1lbWJlcnMsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5TZW5kT2JqZWN0TWFsd2FyZVNjYW4sXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5TZW5kU2VjdXJpdHlUZWxlbWV0cnksXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5TdGFydE1hbHdhcmVTY2FuLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuU3RhcnRNb25pdG9yaW5nTWVtYmVycyxcblx0XHRHdWFyZER1dHlBY3Rpb25zLlN0b3BNb25pdG9yaW5nTWVtYmVycyxcblx0XHRHdWFyZER1dHlBY3Rpb25zLlVuYXJjaGl2ZUZpbmRpbmdzLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuVXBkYXRlRGV0ZWN0b3IsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5VcGRhdGVGaWx0ZXIsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5VcGRhdGVGaW5kaW5nc0ZlZWRiYWNrLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuVXBkYXRlSVBTZXQsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5VcGRhdGVNYWx3YXJlUHJvdGVjdGlvblBsYW4sXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5VcGRhdGVNYWx3YXJlU2NhblNldHRpbmdzLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuVXBkYXRlTWVtYmVyRGV0ZWN0b3JzLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuVXBkYXRlT3JnYW5pemF0aW9uQ29uZmlndXJhdGlvbixcblx0XHRHdWFyZER1dHlBY3Rpb25zLlVwZGF0ZVB1Ymxpc2hpbmdEZXN0aW5hdGlvbixcblx0XHRHdWFyZER1dHlBY3Rpb25zLlVwZGF0ZVRocmVhdEVudGl0eVNldCxcblx0XHRHdWFyZER1dHlBY3Rpb25zLlVwZGF0ZVRocmVhdEludGVsU2V0LFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuVXBkYXRlVHJ1c3RlZEVudGl0eVNldCxcblx0XTtcblx0LyoqIEFsbCBsaXN0LWxldmVsIGFjdGlvbnMuICovXG5cdHN0YXRpYyByZWFkb25seSBBbGxMaXN0QWN0aW9uczogc3RyaW5nW10gPSBbXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5MaXN0Q292ZXJhZ2UsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5MaXN0RGV0ZWN0b3JzLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuTGlzdEZpbHRlcnMsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5MaXN0RmluZGluZ3MsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5MaXN0SVBTZXRzLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuTGlzdEludmVzdGlnYXRpb25zLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuTGlzdEludml0YXRpb25zLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuTGlzdE1hbHdhcmVQcm90ZWN0aW9uUGxhbnMsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5MaXN0TWFsd2FyZVNjYW5zLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuTGlzdE1lbWJlcnMsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5MaXN0T3JnYW5pemF0aW9uQWRtaW5BY2NvdW50cyxcblx0XHRHdWFyZER1dHlBY3Rpb25zLkxpc3RQdWJsaXNoaW5nRGVzdGluYXRpb25zLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuTGlzdFRocmVhdEVudGl0eVNldHMsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5MaXN0VGhyZWF0SW50ZWxTZXRzLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuTGlzdFRydXN0ZWRFbnRpdHlTZXRzLFxuXHRdO1xuXHQvKiogQWxsIHBlcm1pc3Npb24tbWFuYWdlbWVudC1sZXZlbCBhY3Rpb25zLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWxsUGVybWlzc2lvbk1hbmFnZW1lbnRBY3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuXHQvKiogQWxsIHRhZ2dpbmctbGV2ZWwgYWN0aW9ucy4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFsbFRhZ2dpbmdBY3Rpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRHdWFyZER1dHlBY3Rpb25zLlRhZ1Jlc291cmNlLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuVW50YWdSZXNvdXJjZSxcblx0XTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGRldGVjdG9yIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHdWFyZER1dHlEZXRlY3RvckFyblByb3BzIHtcblx0LyoqIFRoZSBEZXRlY3RvcklkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBkZXRlY3RvcklkOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgZGV0ZWN0b3IgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEd1YXJkRHV0eURldGVjdG9yQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBEZXRlY3RvcklkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgZGV0ZWN0b3JJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgZmlsdGVyIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHdWFyZER1dHlGaWx0ZXJBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgRGV0ZWN0b3JJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgZGV0ZWN0b3JJZDogc3RyaW5nO1xuXHQvKiogVGhlIEZpbHRlck5hbWUgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGZpbHRlck5hbWU6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBmaWx0ZXIgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEd1YXJkRHV0eUZpbHRlckFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgRGV0ZWN0b3JJZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGRldGVjdG9ySWQ6IHN0cmluZztcblx0LyoqIFRoZSBGaWx0ZXJOYW1lIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgZmlsdGVyTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgaXBzZXQgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEd1YXJkRHV0eUlwc2V0QXJuUHJvcHMge1xuXHQvKiogVGhlIERldGVjdG9ySWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGRldGVjdG9ySWQ6IHN0cmluZztcblx0LyoqIFRoZSBJUFNldElkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBpcFNldElkOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgaXBzZXQgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEd1YXJkRHV0eUlwc2V0QXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBEZXRlY3RvcklkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgZGV0ZWN0b3JJZDogc3RyaW5nO1xuXHQvKiogVGhlIElQU2V0SWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBpcFNldElkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBtYWx3YXJlcHJvdGVjdGlvbnBsYW4gQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEd1YXJkRHV0eU1hbHdhcmVwcm90ZWN0aW9ucGxhbkFyblByb3BzIHtcblx0LyoqIFRoZSBNYWx3YXJlUHJvdGVjdGlvblBsYW5JZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgbWFsd2FyZVByb3RlY3Rpb25QbGFuSWQ6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBtYWx3YXJlcHJvdGVjdGlvbnBsYW4gQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEd1YXJkRHV0eU1hbHdhcmVwcm90ZWN0aW9ucGxhbkFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgTWFsd2FyZVByb3RlY3Rpb25QbGFuSWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBtYWx3YXJlUHJvdGVjdGlvblBsYW5JZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgcHVibGlzaGluZ0Rlc3RpbmF0aW9uIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHdWFyZER1dHlQdWJsaXNoaW5nRGVzdGluYXRpb25Bcm5Qcm9wcyB7XG5cdC8qKiBUaGUgRGV0ZWN0b3JJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgZGV0ZWN0b3JJZDogc3RyaW5nO1xuXHQvKiogVGhlIFB1Ymxpc2hpbmdEZXN0aW5hdGlvbklkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBwdWJsaXNoaW5nRGVzdGluYXRpb25JZDogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIHB1Ymxpc2hpbmdEZXN0aW5hdGlvbiBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3VhcmREdXR5UHVibGlzaGluZ0Rlc3RpbmF0aW9uQXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBEZXRlY3RvcklkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgZGV0ZWN0b3JJZDogc3RyaW5nO1xuXHQvKiogVGhlIFB1Ymxpc2hpbmdEZXN0aW5hdGlvbklkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgcHVibGlzaGluZ0Rlc3RpbmF0aW9uSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHRocmVhdGVudGl0eXNldCBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3VhcmREdXR5VGhyZWF0ZW50aXR5c2V0QXJuUHJvcHMge1xuXHQvKiogVGhlIERldGVjdG9ySWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGRldGVjdG9ySWQ6IHN0cmluZztcblx0LyoqIFRoZSBUaHJlYXRFbnRpdHlTZXRJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgdGhyZWF0RW50aXR5U2V0SWQ6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSB0aHJlYXRlbnRpdHlzZXQgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEd1YXJkRHV0eVRocmVhdGVudGl0eXNldEFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgRGV0ZWN0b3JJZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGRldGVjdG9ySWQ6IHN0cmluZztcblx0LyoqIFRoZSBUaHJlYXRFbnRpdHlTZXRJZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHRocmVhdEVudGl0eVNldElkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSB0aHJlYXRpbnRlbHNldCBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3VhcmREdXR5VGhyZWF0aW50ZWxzZXRBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgRGV0ZWN0b3JJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgZGV0ZWN0b3JJZDogc3RyaW5nO1xuXHQvKiogVGhlIFRocmVhdEludGVsU2V0SWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IHRocmVhdEludGVsU2V0SWQ6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSB0aHJlYXRpbnRlbHNldCBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3VhcmREdXR5VGhyZWF0aW50ZWxzZXRBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIERldGVjdG9ySWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBkZXRlY3RvcklkOiBzdHJpbmc7XG5cdC8qKiBUaGUgVGhyZWF0SW50ZWxTZXRJZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHRocmVhdEludGVsU2V0SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHRydXN0ZWRlbnRpdHlzZXQgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEd1YXJkRHV0eVRydXN0ZWRlbnRpdHlzZXRBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgRGV0ZWN0b3JJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgZGV0ZWN0b3JJZDogc3RyaW5nO1xuXHQvKiogVGhlIFRydXN0ZWRFbnRpdHlTZXRJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgdHJ1c3RlZEVudGl0eVNldElkOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgdHJ1c3RlZGVudGl0eXNldCBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3VhcmREdXR5VHJ1c3RlZGVudGl0eXNldEFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgRGV0ZWN0b3JJZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGRldGVjdG9ySWQ6IHN0cmluZztcblx0LyoqIFRoZSBUcnVzdGVkRW50aXR5U2V0SWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSB0cnVzdGVkRW50aXR5U2V0SWQ6IHN0cmluZztcbn1cblxuY29uc3QgRGV0ZWN0b3JBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6Z3VhcmRkdXR5Oig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6ZGV0ZWN0b3JcXC8oPzxkZXRlY3RvcklkPlteOi8/XSspJC87XG5jb25zdCBGaWx0ZXJBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6Z3VhcmRkdXR5Oig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6ZGV0ZWN0b3JcXC8oPzxkZXRlY3RvcklkPlteOi8/XSspXFwvZmlsdGVyXFwvKD88ZmlsdGVyTmFtZT5bXjovP10rKSQvO1xuY29uc3QgSXBzZXRBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6Z3VhcmRkdXR5Oig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6ZGV0ZWN0b3JcXC8oPzxkZXRlY3RvcklkPlteOi8/XSspXFwvaXBzZXRcXC8oPzxpcFNldElkPlteOi8/XSspJC87XG5jb25zdCBNYWx3YXJlcHJvdGVjdGlvbnBsYW5Bcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6Z3VhcmRkdXR5Oig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6bWFsd2FyZS1wcm90ZWN0aW9uLXBsYW5cXC8oPzxtYWx3YXJlUHJvdGVjdGlvblBsYW5JZD5bXjovP10rKSQvO1xuY29uc3QgUHVibGlzaGluZ0Rlc3RpbmF0aW9uQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmd1YXJkZHV0eTooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmRldGVjdG9yXFwvKD88ZGV0ZWN0b3JJZD5bXjovP10rKVxcL3B1Ymxpc2hpbmdkZXN0aW5hdGlvblxcLyg/PHB1Ymxpc2hpbmdEZXN0aW5hdGlvbklkPlteOi8/XSspJC87XG5jb25zdCBUaHJlYXRlbnRpdHlzZXRBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6Z3VhcmRkdXR5Oig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6ZGV0ZWN0b3JcXC8oPzxkZXRlY3RvcklkPlteOi8/XSspXFwvdGhyZWF0ZW50aXR5c2V0XFwvKD88dGhyZWF0RW50aXR5U2V0SWQ+W146Lz9dKykkLztcbmNvbnN0IFRocmVhdGludGVsc2V0QXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmd1YXJkZHV0eTooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmRldGVjdG9yXFwvKD88ZGV0ZWN0b3JJZD5bXjovP10rKVxcL3RocmVhdGludGVsc2V0XFwvKD88dGhyZWF0SW50ZWxTZXRJZD5bXjovP10rKSQvO1xuY29uc3QgVHJ1c3RlZGVudGl0eXNldEFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpndWFyZGR1dHk6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpkZXRlY3RvclxcLyg/PGRldGVjdG9ySWQ+W146Lz9dKylcXC90cnVzdGVkZW50aXR5c2V0XFwvKD88dHJ1c3RlZEVudGl0eVNldElkPlteOi8/XSspJC87XG5cbi8qKlxuICogQVJOIGJ1aWxkZXJzLCB2YWxpZGF0b3JzLCBhbmQgcGFyc2VycyBmb3IgZ3VhcmRkdXR5IHJlc291cmNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEd1YXJkRHV0eVJlc291cmNlcyB7XG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgZGV0ZWN0b3IgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgZGV0ZWN0b3IocHJvcHM6IEd1YXJkRHV0eURldGVjdG9yQXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9Omd1YXJkZHV0eToke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTpkZXRlY3Rvci8ke3Byb3BzLmRldGVjdG9ySWR9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGRldGVjdG9yIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWREZXRlY3RvckFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBEZXRlY3RvckFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBkZXRlY3RvciBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VEZXRlY3RvckFybihhcm46IHN0cmluZyk6IEd1YXJkRHV0eURldGVjdG9yQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBEZXRlY3RvckFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkZXRlY3RvciBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRkZXRlY3RvcklkOiBtYXRjaC5ncm91cHMhLmRldGVjdG9ySWQsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgZmlsdGVyIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGZpbHRlcihwcm9wczogR3VhcmREdXR5RmlsdGVyQXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9Omd1YXJkZHV0eToke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTpkZXRlY3Rvci8ke3Byb3BzLmRldGVjdG9ySWR9L2ZpbHRlci8ke3Byb3BzLmZpbHRlck5hbWV9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGZpbHRlciByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkRmlsdGVyQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEZpbHRlckFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBmaWx0ZXIgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlRmlsdGVyQXJuKGFybjogc3RyaW5nKTogR3VhcmREdXR5RmlsdGVyQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBGaWx0ZXJBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZmlsdGVyIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGRldGVjdG9ySWQ6IG1hdGNoLmdyb3VwcyEuZGV0ZWN0b3JJZCxcblx0XHRcdGZpbHRlck5hbWU6IG1hdGNoLmdyb3VwcyEuZmlsdGVyTmFtZSxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBpcHNldCByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpcHNldChwcm9wczogR3VhcmREdXR5SXBzZXRBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06Z3VhcmRkdXR5OiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OmRldGVjdG9yLyR7cHJvcHMuZGV0ZWN0b3JJZH0vaXBzZXQvJHtwcm9wcy5pcFNldElkfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBpcHNldCByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkSXBzZXRBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gSXBzZXRBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgaXBzZXQgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlSXBzZXRBcm4oYXJuOiBzdHJpbmcpOiBHdWFyZER1dHlJcHNldEFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gSXBzZXRBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgaXBzZXQgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0ZGV0ZWN0b3JJZDogbWF0Y2guZ3JvdXBzIS5kZXRlY3RvcklkLFxuXHRcdFx0aXBTZXRJZDogbWF0Y2guZ3JvdXBzIS5pcFNldElkLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIG1hbHdhcmVwcm90ZWN0aW9ucGxhbiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBtYWx3YXJlcHJvdGVjdGlvbnBsYW4oXG5cdFx0cHJvcHM6IEd1YXJkRHV0eU1hbHdhcmVwcm90ZWN0aW9ucGxhbkFyblByb3BzLFxuXHQpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9Omd1YXJkZHV0eToke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTptYWx3YXJlLXByb3RlY3Rpb24tcGxhbi8ke3Byb3BzLm1hbHdhcmVQcm90ZWN0aW9uUGxhbklkfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBtYWx3YXJlcHJvdGVjdGlvbnBsYW4gcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZE1hbHdhcmVwcm90ZWN0aW9ucGxhbkFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBNYWx3YXJlcHJvdGVjdGlvbnBsYW5Bcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgbWFsd2FyZXByb3RlY3Rpb25wbGFuIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZU1hbHdhcmVwcm90ZWN0aW9ucGxhbkFybihcblx0XHRhcm46IHN0cmluZyxcblx0KTogR3VhcmREdXR5TWFsd2FyZXByb3RlY3Rpb25wbGFuQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBNYWx3YXJlcHJvdGVjdGlvbnBsYW5Bcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbWFsd2FyZXByb3RlY3Rpb25wbGFuIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdG1hbHdhcmVQcm90ZWN0aW9uUGxhbklkOiBtYXRjaC5ncm91cHMhLm1hbHdhcmVQcm90ZWN0aW9uUGxhbklkLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHB1Ymxpc2hpbmdEZXN0aW5hdGlvbiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBwdWJsaXNoaW5nRGVzdGluYXRpb24oXG5cdFx0cHJvcHM6IEd1YXJkRHV0eVB1Ymxpc2hpbmdEZXN0aW5hdGlvbkFyblByb3BzLFxuXHQpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9Omd1YXJkZHV0eToke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTpkZXRlY3Rvci8ke3Byb3BzLmRldGVjdG9ySWR9L3B1Ymxpc2hpbmdkZXN0aW5hdGlvbi8ke3Byb3BzLnB1Ymxpc2hpbmdEZXN0aW5hdGlvbklkfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBwdWJsaXNoaW5nRGVzdGluYXRpb24gcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZFB1Ymxpc2hpbmdEZXN0aW5hdGlvbkFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBQdWJsaXNoaW5nRGVzdGluYXRpb25Bcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgcHVibGlzaGluZ0Rlc3RpbmF0aW9uIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZVB1Ymxpc2hpbmdEZXN0aW5hdGlvbkFybihcblx0XHRhcm46IHN0cmluZyxcblx0KTogR3VhcmREdXR5UHVibGlzaGluZ0Rlc3RpbmF0aW9uQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBQdWJsaXNoaW5nRGVzdGluYXRpb25Bcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcHVibGlzaGluZ0Rlc3RpbmF0aW9uIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGRldGVjdG9ySWQ6IG1hdGNoLmdyb3VwcyEuZGV0ZWN0b3JJZCxcblx0XHRcdHB1Ymxpc2hpbmdEZXN0aW5hdGlvbklkOiBtYXRjaC5ncm91cHMhLnB1Ymxpc2hpbmdEZXN0aW5hdGlvbklkLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHRocmVhdGVudGl0eXNldCByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyB0aHJlYXRlbnRpdHlzZXQocHJvcHM6IEd1YXJkRHV0eVRocmVhdGVudGl0eXNldEFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpndWFyZGR1dHk6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06ZGV0ZWN0b3IvJHtwcm9wcy5kZXRlY3RvcklkfS90aHJlYXRlbnRpdHlzZXQvJHtwcm9wcy50aHJlYXRFbnRpdHlTZXRJZH1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgdGhyZWF0ZW50aXR5c2V0IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRUaHJlYXRlbnRpdHlzZXRBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gVGhyZWF0ZW50aXR5c2V0QXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIHRocmVhdGVudGl0eXNldCBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VUaHJlYXRlbnRpdHlzZXRBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IEd1YXJkRHV0eVRocmVhdGVudGl0eXNldEFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gVGhyZWF0ZW50aXR5c2V0QXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRocmVhdGVudGl0eXNldCBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRkZXRlY3RvcklkOiBtYXRjaC5ncm91cHMhLmRldGVjdG9ySWQsXG5cdFx0XHR0aHJlYXRFbnRpdHlTZXRJZDogbWF0Y2guZ3JvdXBzIS50aHJlYXRFbnRpdHlTZXRJZCxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSB0aHJlYXRpbnRlbHNldCByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyB0aHJlYXRpbnRlbHNldChwcm9wczogR3VhcmREdXR5VGhyZWF0aW50ZWxzZXRBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06Z3VhcmRkdXR5OiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OmRldGVjdG9yLyR7cHJvcHMuZGV0ZWN0b3JJZH0vdGhyZWF0aW50ZWxzZXQvJHtwcm9wcy50aHJlYXRJbnRlbFNldElkfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSB0aHJlYXRpbnRlbHNldCByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkVGhyZWF0aW50ZWxzZXRBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gVGhyZWF0aW50ZWxzZXRBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgdGhyZWF0aW50ZWxzZXQgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlVGhyZWF0aW50ZWxzZXRBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IEd1YXJkRHV0eVRocmVhdGludGVsc2V0QXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBUaHJlYXRpbnRlbHNldEFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0aHJlYXRpbnRlbHNldCBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRkZXRlY3RvcklkOiBtYXRjaC5ncm91cHMhLmRldGVjdG9ySWQsXG5cdFx0XHR0aHJlYXRJbnRlbFNldElkOiBtYXRjaC5ncm91cHMhLnRocmVhdEludGVsU2V0SWQsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgdHJ1c3RlZGVudGl0eXNldCByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyB0cnVzdGVkZW50aXR5c2V0KHByb3BzOiBHdWFyZER1dHlUcnVzdGVkZW50aXR5c2V0QXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9Omd1YXJkZHV0eToke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTpkZXRlY3Rvci8ke3Byb3BzLmRldGVjdG9ySWR9L3RydXN0ZWRlbnRpdHlzZXQvJHtwcm9wcy50cnVzdGVkRW50aXR5U2V0SWR9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIHRydXN0ZWRlbnRpdHlzZXQgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZFRydXN0ZWRlbnRpdHlzZXRBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gVHJ1c3RlZGVudGl0eXNldEFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSB0cnVzdGVkZW50aXR5c2V0IEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZVRydXN0ZWRlbnRpdHlzZXRBcm4oXG5cdFx0YXJuOiBzdHJpbmcsXG5cdCk6IEd1YXJkRHV0eVRydXN0ZWRlbnRpdHlzZXRBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IFRydXN0ZWRlbnRpdHlzZXRBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdHJ1c3RlZGVudGl0eXNldCBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRkZXRlY3RvcklkOiBtYXRjaC5ncm91cHMhLmRldGVjdG9ySWQsXG5cdFx0XHR0cnVzdGVkRW50aXR5U2V0SWQ6IG1hdGNoLmdyb3VwcyEudHJ1c3RlZEVudGl0eVNldElkLFxuXHRcdH07XG5cdH1cbn1cblxuLyoqXG4gKiBBUEkgb3BlcmF0aW9uIHRvIHJlcXVpcmVkIElBTSBhY3Rpb25zIG1hcHBpbmcgZm9yIGd1YXJkZHV0eS5cbiAqL1xuZXhwb3J0IGNsYXNzIEd1YXJkRHV0eU9wZXJhdGlvbnMge1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBBY2NlcHRBZG1pbmlzdHJhdG9ySW52aXRhdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFjY2VwdEFkbWluaXN0cmF0b3JJbnZpdGF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpBY2NlcHRBZG1pbmlzdHJhdG9ySW52aXRhdGlvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBBY2NlcHRJbnZpdGF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWNjZXB0SW52aXRhdGlvbjogc3RyaW5nW10gPSBbXCJndWFyZGR1dHk6QWNjZXB0SW52aXRhdGlvblwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQXJjaGl2ZUZpbmRpbmdzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQXJjaGl2ZUZpbmRpbmdzOiBzdHJpbmdbXSA9IFtcImd1YXJkZHV0eTpBcmNoaXZlRmluZGluZ3NcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZURldGVjdG9yIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRGV0ZWN0b3I6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OkNyZWF0ZURldGVjdG9yXCIsXG5cdFx0XCJndWFyZGR1dHk6VGFnUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlRmlsdGVyIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRmlsdGVyOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpDcmVhdGVGaWx0ZXJcIixcblx0XHRcImd1YXJkZHV0eTpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVJUFNldCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUlQU2V0OiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpDcmVhdGVJUFNldFwiLFxuXHRcdFwiZ3VhcmRkdXR5OlRhZ1Jlc291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZUludmVzdGlnYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVJbnZlc3RpZ2F0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpDcmVhdGVJbnZlc3RpZ2F0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZU1hbHdhcmVQcm90ZWN0aW9uUGxhbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZU1hbHdhcmVQcm90ZWN0aW9uUGxhbjogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6Q3JlYXRlTWFsd2FyZVByb3RlY3Rpb25QbGFuXCIsXG5cdFx0XCJpYW06UGFzc1JvbGVcIixcblx0XHRcImd1YXJkZHV0eTpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVNZW1iZXJzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlTWVtYmVyczogc3RyaW5nW10gPSBbXCJndWFyZGR1dHk6Q3JlYXRlTWVtYmVyc1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlUHVibGlzaGluZ0Rlc3RpbmF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlUHVibGlzaGluZ0Rlc3RpbmF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpDcmVhdGVQdWJsaXNoaW5nRGVzdGluYXRpb25cIixcblx0XHRcImd1YXJkZHV0eTpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVTYW1wbGVGaW5kaW5ncyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVNhbXBsZUZpbmRpbmdzOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpDcmVhdGVTYW1wbGVGaW5kaW5nc1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVUaHJlYXRFbnRpdHlTZXQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVUaHJlYXRFbnRpdHlTZXQ6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OkNyZWF0ZVRocmVhdEVudGl0eVNldFwiLFxuXHRcdFwiZ3VhcmRkdXR5OlRhZ1Jlc291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZVRocmVhdEludGVsU2V0IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlVGhyZWF0SW50ZWxTZXQ6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OkNyZWF0ZVRocmVhdEludGVsU2V0XCIsXG5cdFx0XCJndWFyZGR1dHk6VGFnUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlVHJ1c3RlZEVudGl0eVNldCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVRydXN0ZWRFbnRpdHlTZXQ6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OkNyZWF0ZVRydXN0ZWRFbnRpdHlTZXRcIixcblx0XHRcImd1YXJkZHV0eTpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWNsaW5lSW52aXRhdGlvbnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWNsaW5lSW52aXRhdGlvbnM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OkRlY2xpbmVJbnZpdGF0aW9uc1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVEZXRlY3RvciBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZURldGVjdG9yOiBzdHJpbmdbXSA9IFtcImd1YXJkZHV0eTpEZWxldGVEZXRlY3RvclwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlRmlsdGVyIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlRmlsdGVyOiBzdHJpbmdbXSA9IFtcImd1YXJkZHV0eTpEZWxldGVGaWx0ZXJcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZUlQU2V0IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlSVBTZXQ6IHN0cmluZ1tdID0gW1wiZ3VhcmRkdXR5OkRlbGV0ZUlQU2V0XCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVJbnZpdGF0aW9ucyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUludml0YXRpb25zOiBzdHJpbmdbXSA9IFtcImd1YXJkZHV0eTpEZWxldGVJbnZpdGF0aW9uc1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlTWFsd2FyZVByb3RlY3Rpb25QbGFuIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlTWFsd2FyZVByb3RlY3Rpb25QbGFuOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpEZWxldGVNYWx3YXJlUHJvdGVjdGlvblBsYW5cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlTWVtYmVycyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZU1lbWJlcnM6IHN0cmluZ1tdID0gW1wiZ3VhcmRkdXR5OkRlbGV0ZU1lbWJlcnNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZVB1Ymxpc2hpbmdEZXN0aW5hdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZVB1Ymxpc2hpbmdEZXN0aW5hdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6RGVsZXRlUHVibGlzaGluZ0Rlc3RpbmF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZVRocmVhdEVudGl0eVNldCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZVRocmVhdEVudGl0eVNldDogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6RGVsZXRlVGhyZWF0RW50aXR5U2V0XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZVRocmVhdEludGVsU2V0IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlVGhyZWF0SW50ZWxTZXQ6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OkRlbGV0ZVRocmVhdEludGVsU2V0XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZVRydXN0ZWRFbnRpdHlTZXQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVUcnVzdGVkRW50aXR5U2V0OiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpEZWxldGVUcnVzdGVkRW50aXR5U2V0XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlc2NyaWJlTWFsd2FyZVNjYW5zIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVNYWx3YXJlU2NhbnM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OkRlc2NyaWJlTWFsd2FyZVNjYW5zXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlc2NyaWJlT3JnYW5pemF0aW9uQ29uZmlndXJhdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlT3JnYW5pemF0aW9uQ29uZmlndXJhdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6RGVzY3JpYmVPcmdhbml6YXRpb25Db25maWd1cmF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlc2NyaWJlUHVibGlzaGluZ0Rlc3RpbmF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVQdWJsaXNoaW5nRGVzdGluYXRpb246IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OkRlc2NyaWJlUHVibGlzaGluZ0Rlc3RpbmF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERpc2FibGVPcmdhbml6YXRpb25BZG1pbkFjY291bnQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEaXNhYmxlT3JnYW5pemF0aW9uQWRtaW5BY2NvdW50OiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpEaXNhYmxlT3JnYW5pemF0aW9uQWRtaW5BY2NvdW50XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERpc2Fzc29jaWF0ZUZyb21BZG1pbmlzdHJhdG9yQWNjb3VudCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERpc2Fzc29jaWF0ZUZyb21BZG1pbmlzdHJhdG9yQWNjb3VudDogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6RGlzYXNzb2NpYXRlRnJvbUFkbWluaXN0cmF0b3JBY2NvdW50XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERpc2Fzc29jaWF0ZUZyb21NYXN0ZXJBY2NvdW50IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGlzYXNzb2NpYXRlRnJvbU1hc3RlckFjY291bnQ6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OkRpc2Fzc29jaWF0ZUZyb21NYXN0ZXJBY2NvdW50XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERpc2Fzc29jaWF0ZU1lbWJlcnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEaXNhc3NvY2lhdGVNZW1iZXJzOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpEaXNhc3NvY2lhdGVNZW1iZXJzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEVuYWJsZU9yZ2FuaXphdGlvbkFkbWluQWNjb3VudCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEVuYWJsZU9yZ2FuaXphdGlvbkFkbWluQWNjb3VudDogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6RW5hYmxlT3JnYW5pemF0aW9uQWRtaW5BY2NvdW50XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldEFkbWluaXN0cmF0b3JBY2NvdW50IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRBZG1pbmlzdHJhdG9yQWNjb3VudDogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6R2V0QWRtaW5pc3RyYXRvckFjY291bnRcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0Q292ZXJhZ2VTdGF0aXN0aWNzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRDb3ZlcmFnZVN0YXRpc3RpY3M6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OkdldENvdmVyYWdlU3RhdGlzdGljc1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXREZXRlY3RvciBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0RGV0ZWN0b3I6IHN0cmluZ1tdID0gW1wiZ3VhcmRkdXR5OkdldERldGVjdG9yXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRGaWx0ZXIgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldEZpbHRlcjogc3RyaW5nW10gPSBbXCJndWFyZGR1dHk6R2V0RmlsdGVyXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRGaW5kaW5ncyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0RmluZGluZ3M6IHN0cmluZ1tdID0gW1wiZ3VhcmRkdXR5OkdldEZpbmRpbmdzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRGaW5kaW5nc1N0YXRpc3RpY3MgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldEZpbmRpbmdzU3RhdGlzdGljczogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6R2V0RmluZGluZ3NTdGF0aXN0aWNzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldElQU2V0IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRJUFNldDogc3RyaW5nW10gPSBbXCJndWFyZGR1dHk6R2V0SVBTZXRcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldEludmVzdGlnYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldEludmVzdGlnYXRpb246IHN0cmluZ1tdID0gW1wiZ3VhcmRkdXR5OkdldEludmVzdGlnYXRpb25cIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldEludml0YXRpb25zQ291bnQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldEludml0YXRpb25zQ291bnQ6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OkdldEludml0YXRpb25zQ291bnRcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0TWFsd2FyZVByb3RlY3Rpb25QbGFuIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRNYWx3YXJlUHJvdGVjdGlvblBsYW46IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OkdldE1hbHdhcmVQcm90ZWN0aW9uUGxhblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRNYWx3YXJlU2NhbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0TWFsd2FyZVNjYW46IHN0cmluZ1tdID0gW1wiZ3VhcmRkdXR5OkdldE1hbHdhcmVTY2FuXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRNYWx3YXJlU2NhblNldHRpbmdzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRNYWx3YXJlU2NhblNldHRpbmdzOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpHZXRNYWx3YXJlU2NhblNldHRpbmdzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldE1hc3RlckFjY291bnQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldE1hc3RlckFjY291bnQ6IHN0cmluZ1tdID0gW1wiZ3VhcmRkdXR5OkdldE1hc3RlckFjY291bnRcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldE1lbWJlckRldGVjdG9ycyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0TWVtYmVyRGV0ZWN0b3JzOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpHZXRNZW1iZXJEZXRlY3RvcnNcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0TWVtYmVycyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0TWVtYmVyczogc3RyaW5nW10gPSBbXCJndWFyZGR1dHk6R2V0TWVtYmVyc1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0T3JnYW5pemF0aW9uU3RhdGlzdGljcyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0T3JnYW5pemF0aW9uU3RhdGlzdGljczogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6R2V0T3JnYW5pemF0aW9uU3RhdGlzdGljc1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRSZW1haW5pbmdGcmVlVHJpYWxEYXlzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRSZW1haW5pbmdGcmVlVHJpYWxEYXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpHZXRSZW1haW5pbmdGcmVlVHJpYWxEYXlzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldFRocmVhdEVudGl0eVNldCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0VGhyZWF0RW50aXR5U2V0OiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpHZXRUaHJlYXRFbnRpdHlTZXRcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0VGhyZWF0SW50ZWxTZXQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldFRocmVhdEludGVsU2V0OiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpHZXRUaHJlYXRJbnRlbFNldFwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRUcnVzdGVkRW50aXR5U2V0IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRUcnVzdGVkRW50aXR5U2V0OiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpHZXRUcnVzdGVkRW50aXR5U2V0XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldFVzYWdlU3RhdGlzdGljcyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0VXNhZ2VTdGF0aXN0aWNzOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpHZXRVc2FnZVN0YXRpc3RpY3NcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgSW52aXRlTWVtYmVycyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEludml0ZU1lbWJlcnM6IHN0cmluZ1tdID0gW1wiZ3VhcmRkdXR5Okludml0ZU1lbWJlcnNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RDb3ZlcmFnZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RDb3ZlcmFnZTogc3RyaW5nW10gPSBbXCJndWFyZGR1dHk6TGlzdENvdmVyYWdlXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0RGV0ZWN0b3JzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdERldGVjdG9yczogc3RyaW5nW10gPSBbXCJndWFyZGR1dHk6TGlzdERldGVjdG9yc1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdEZpbHRlcnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RmlsdGVyczogc3RyaW5nW10gPSBbXCJndWFyZGR1dHk6TGlzdEZpbHRlcnNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RGaW5kaW5ncyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RGaW5kaW5nczogc3RyaW5nW10gPSBbXCJndWFyZGR1dHk6TGlzdEZpbmRpbmdzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0SVBTZXRzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdElQU2V0czogc3RyaW5nW10gPSBbXCJndWFyZGR1dHk6TGlzdElQU2V0c1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdEludmVzdGlnYXRpb25zIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEludmVzdGlnYXRpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpMaXN0SW52ZXN0aWdhdGlvbnNcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdEludml0YXRpb25zIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEludml0YXRpb25zOiBzdHJpbmdbXSA9IFtcImd1YXJkZHV0eTpMaXN0SW52aXRhdGlvbnNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RNYWx3YXJlUHJvdGVjdGlvblBsYW5zIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdE1hbHdhcmVQcm90ZWN0aW9uUGxhbnM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5Okxpc3RNYWx3YXJlUHJvdGVjdGlvblBsYW5zXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RNYWx3YXJlU2NhbnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0TWFsd2FyZVNjYW5zOiBzdHJpbmdbXSA9IFtcImd1YXJkZHV0eTpMaXN0TWFsd2FyZVNjYW5zXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0TWVtYmVycyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RNZW1iZXJzOiBzdHJpbmdbXSA9IFtcImd1YXJkZHV0eTpMaXN0TWVtYmVyc1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdE9yZ2FuaXphdGlvbkFkbWluQWNjb3VudHMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0T3JnYW5pemF0aW9uQWRtaW5BY2NvdW50czogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6TGlzdE9yZ2FuaXphdGlvbkFkbWluQWNjb3VudHNcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFB1Ymxpc2hpbmdEZXN0aW5hdGlvbnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0UHVibGlzaGluZ0Rlc3RpbmF0aW9uczogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6TGlzdFB1Ymxpc2hpbmdEZXN0aW5hdGlvbnNcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFRhZ3NGb3JSZXNvdXJjZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUYWdzRm9yUmVzb3VyY2U6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5Okxpc3RUYWdzRm9yUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFRocmVhdEVudGl0eVNldHMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0VGhyZWF0RW50aXR5U2V0czogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6TGlzdFRocmVhdEVudGl0eVNldHNcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFRocmVhdEludGVsU2V0cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUaHJlYXRJbnRlbFNldHM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5Okxpc3RUaHJlYXRJbnRlbFNldHNcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdFRydXN0ZWRFbnRpdHlTZXRzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFRydXN0ZWRFbnRpdHlTZXRzOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpMaXN0VHJ1c3RlZEVudGl0eVNldHNcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgU2VuZE9iamVjdE1hbHdhcmVTY2FuIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU2VuZE9iamVjdE1hbHdhcmVTY2FuOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpTZW5kT2JqZWN0TWFsd2FyZVNjYW5cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgU3RhcnRNYWx3YXJlU2NhbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0TWFsd2FyZVNjYW46IHN0cmluZ1tdID0gW1xuXHRcdFwiaWFtOlBhc3NSb2xlXCIsXG5cdFx0XCJndWFyZGR1dHk6U3RhcnRNYWx3YXJlU2NhblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBTdGFydE1vbml0b3JpbmdNZW1iZXJzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RhcnRNb25pdG9yaW5nTWVtYmVyczogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6U3RhcnRNb25pdG9yaW5nTWVtYmVyc1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBTdG9wTW9uaXRvcmluZ01lbWJlcnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBTdG9wTW9uaXRvcmluZ01lbWJlcnM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OlN0b3BNb25pdG9yaW5nTWVtYmVyc1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBUYWdSZXNvdXJjZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFRhZ1Jlc291cmNlOiBzdHJpbmdbXSA9IFtcImd1YXJkZHV0eTpUYWdSZXNvdXJjZVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVW5hcmNoaXZlRmluZGluZ3MgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVbmFyY2hpdmVGaW5kaW5nczogc3RyaW5nW10gPSBbXCJndWFyZGR1dHk6VW5hcmNoaXZlRmluZGluZ3NcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVudGFnUmVzb3VyY2UgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVbnRhZ1Jlc291cmNlOiBzdHJpbmdbXSA9IFtcImd1YXJkZHV0eTpVbnRhZ1Jlc291cmNlXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVEZXRlY3RvciBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZURldGVjdG9yOiBzdHJpbmdbXSA9IFtcImd1YXJkZHV0eTpVcGRhdGVEZXRlY3RvclwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVXBkYXRlRmlsdGVyIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRmlsdGVyOiBzdHJpbmdbXSA9IFtcImd1YXJkZHV0eTpVcGRhdGVGaWx0ZXJcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZUZpbmRpbmdzRmVlZGJhY2sgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVGaW5kaW5nc0ZlZWRiYWNrOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpVcGRhdGVGaW5kaW5nc0ZlZWRiYWNrXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZUlQU2V0IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlSVBTZXQ6IHN0cmluZ1tdID0gW1wiZ3VhcmRkdXR5OlVwZGF0ZUlQU2V0XCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVNYWx3YXJlUHJvdGVjdGlvblBsYW4gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVNYWx3YXJlUHJvdGVjdGlvblBsYW46IHN0cmluZ1tdID0gW1xuXHRcdFwiaWFtOlBhc3NSb2xlXCIsXG5cdFx0XCJndWFyZGR1dHk6VXBkYXRlTWFsd2FyZVByb3RlY3Rpb25QbGFuXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZU1hbHdhcmVTY2FuU2V0dGluZ3MgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVNYWx3YXJlU2NhblNldHRpbmdzOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpVcGRhdGVNYWx3YXJlU2NhblNldHRpbmdzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZU1lbWJlckRldGVjdG9ycyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZU1lbWJlckRldGVjdG9yczogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6VXBkYXRlTWVtYmVyRGV0ZWN0b3JzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZU9yZ2FuaXphdGlvbkNvbmZpZ3VyYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVPcmdhbml6YXRpb25Db25maWd1cmF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpVcGRhdGVPcmdhbml6YXRpb25Db25maWd1cmF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZVB1Ymxpc2hpbmdEZXN0aW5hdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZVB1Ymxpc2hpbmdEZXN0aW5hdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6VXBkYXRlUHVibGlzaGluZ0Rlc3RpbmF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZVRocmVhdEVudGl0eVNldCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZVRocmVhdEVudGl0eVNldDogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6VXBkYXRlVGhyZWF0RW50aXR5U2V0XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZVRocmVhdEludGVsU2V0IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlVGhyZWF0SW50ZWxTZXQ6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OlVwZGF0ZVRocmVhdEludGVsU2V0XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZVRydXN0ZWRFbnRpdHlTZXQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVUcnVzdGVkRW50aXR5U2V0OiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpVcGRhdGVUcnVzdGVkRW50aXR5U2V0XCIsXG5cdF07XG59XG5cbi8qKlxuICogQ29uZGl0aW9uIGtleSBjb25zdGFudHMgYW5kIGJ1aWxkZXJzIGZvciBndWFyZGR1dHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBHdWFyZER1dHlDb25kaXRpb25zIHtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIENyZWF0ZURldGVjdG9yIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZURldGVjdG9yQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVGaWx0ZXIgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRmlsdGVyQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVJUFNldCBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVJUFNldENvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlTWFsd2FyZVByb3RlY3Rpb25QbGFuIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZU1hbHdhcmVQcm90ZWN0aW9uUGxhbkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlUHVibGlzaGluZ0Rlc3RpbmF0aW9uIGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVB1Ymxpc2hpbmdEZXN0aW5hdGlvbkNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlVGhyZWF0RW50aXR5U2V0IGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVRocmVhdEVudGl0eVNldENvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlVGhyZWF0SW50ZWxTZXQgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlVGhyZWF0SW50ZWxTZXRDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIENyZWF0ZVRydXN0ZWRFbnRpdHlTZXQgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlVHJ1c3RlZEVudGl0eVNldENvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgVGFnUmVzb3VyY2UgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVGFnUmVzb3VyY2VDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIFVudGFnUmVzb3VyY2UgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVW50YWdSZXNvdXJjZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1wiYXdzOlRhZ0tleXNcIl07XG5cblx0LyoqIENvbmRpdGlvbiBrZXk6IGF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fSAoU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQVdTX1JFUVVFU1RfVEFHID0gXCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX0gKFN0cmluZykgKi9cblx0c3RhdGljIHJlYWRvbmx5IEFXU19SRVNPVVJDRV9UQUcgPSBcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIjtcblx0LyoqIENvbmRpdGlvbiBrZXk6IGF3czpUYWdLZXlzIChBcnJheU9mU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQVdTX1RBR19LRVlTID0gXCJhd3M6VGFnS2V5c1wiO1xuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1gLlxuXHQgKi9cblx0c3RhdGljIHJlcXVlc3RUYWcodmFsdWU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4geyBTdHJpbmdFcXVhbHM6IHsgXCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIjogdmFsdWUgfSB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1gLlxuXHQgKi9cblx0c3RhdGljIHJlc291cmNlVGFnKHZhbHVlOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG5cdFx0cmV0dXJuIHsgU3RyaW5nRXF1YWxzOiB7IFwiYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fVwiOiB2YWx1ZSB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgYXdzOlRhZ0tleXNgLlxuXHQgKi9cblx0c3RhdGljIHRhZ0tleXModmFsdWVzOiBzdHJpbmdbXSk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPj4ge1xuXHRcdHJldHVybiB7IFwiRm9yQWxsVmFsdWVzOlN0cmluZ0VxdWFsc1wiOiB7IFwiYXdzOlRhZ0tleXNcIjogdmFsdWVzIH0gfTtcblx0fVxufVxuIl19
1100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhcmRkdXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dlbmVyYXRlZC9zZXJ2aWNlcy9ndWFyZGR1dHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnRkFBZ0Y7QUFDaEYsNkNBQTZDO0FBQzdDLDBEQUEwRDtBQUMxRCxnREFBZ0Q7QUFDaEQsb0RBQW9EO0FBQ3BELGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQWEsZ0JBQWdCOztBQUE3Qiw0Q0E2V0M7OztBQTVXQSw4QkFBOEI7QUFDZCwrQkFBYyxHQUFHLFdBQVcsQ0FBQztBQUU3QyxzREFBc0Q7QUFDdEMsOENBQTZCLEdBQzVDLHlDQUF5QyxDQUFDO0FBQzNDLHlDQUF5QztBQUN6QixpQ0FBZ0IsR0FBRyw0QkFBNEIsQ0FBQztBQUNoRSx3Q0FBd0M7QUFDeEIsZ0NBQWUsR0FBRywyQkFBMkIsQ0FBQztBQUM5RCw2REFBNkQ7QUFDN0MscURBQW9DLEdBQ25ELGdEQUFnRCxDQUFDO0FBQ2xELGtFQUFrRTtBQUNsRCwwREFBeUMsR0FDeEQscURBQXFELENBQUM7QUFDdkQsdUNBQXVDO0FBQ3ZCLCtCQUFjLEdBQUcsMEJBQTBCLENBQUM7QUFDNUQscUNBQXFDO0FBQ3JCLDZCQUFZLEdBQUcsd0JBQXdCLENBQUM7QUFDeEQsb0NBQW9DO0FBQ3BCLDRCQUFXLEdBQUcsdUJBQXVCLENBQUM7QUFDdEQsNENBQTRDO0FBQzVCLG9DQUFtQixHQUFHLCtCQUErQixDQUFDO0FBQ3RFLG9EQUFvRDtBQUNwQyw0Q0FBMkIsR0FDMUMsdUNBQXVDLENBQUM7QUFDekMsc0NBQXNDO0FBQ3RCLDhCQUFhLEdBQUcseUJBQXlCLENBQUM7QUFDMUQsb0RBQW9EO0FBQ3BDLDRDQUEyQixHQUMxQyx1Q0FBdUMsQ0FBQztBQUN6Qyw2Q0FBNkM7QUFDN0IscUNBQW9CLEdBQUcsZ0NBQWdDLENBQUM7QUFDeEUsOENBQThDO0FBQzlCLHNDQUFxQixHQUFHLGlDQUFpQyxDQUFD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O0NBQ2IsQ0FBQztBQUNGLHFFQUFxRTtBQUNyRCxzREFBa0MsR0FBYTtJQUM5RCwwQkFBMEI7SUFDMUIsYUFBYTtDQUNiLENBQUM7QUFDRixvRUFBb0U7QUFDcEQscURBQWlDLEdBQWE7SUFDN0QsMEJBQTBCO0lBQzFCLGFBQWE7Q0FDYixDQUFDO0FBQ0Ysc0VBQXNFO0FBQ3RELHVEQUFtQyxHQUFhO0lBQy9ELDBCQUEwQjtJQUMxQiwyQkFBMkI7SUFDM0IsYUFBYTtDQUNiLENBQUM7QUFDRiwyREFBMkQ7QUFDM0MsNENBQXdCLEdBQWE7SUFDcEQsMEJBQTBCO0lBQzFCLGFBQWE7Q0FDYixDQUFDO0FBQ0YsNkRBQTZEO0FBQzdDLDhDQUEwQixHQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7QUFFdkUsdURBQXVEO0FBQ3ZDLG1DQUFlLEdBQUcsMEJBQTBCLENBQUM7QUFDN0Qsd0RBQXdEO0FBQ3hDLG9DQUFnQixHQUFHLDJCQUEyQixDQUFDO0FBQy9ELGlEQUFpRDtBQUNqQyxnQ0FBWSxHQUFHLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBVVRPLUdFTkVSQVRFRCBGSUxFIOKAlCBETyBOT1QgRURJVCBNQU5VQUxMWVxuLy8gR2VuZXJhdGVkIGZyb20gQVdTIFNlcnZpY2UgQXV0aG9yaXphdGlvbiBSZWZlcmVuY2UgZGF0YVxuLy8gU291cmNlOiBkYXRhL3NlcnZpY2UtcmVmZXJlbmNlL2d1YXJkZHV0eS5qc29uXG4vLyBSdW4gYG5weCBwcm9qZW4gZ2VuZXJhdGUtY29uc3RhbnRzYCB0byByZWdlbmVyYXRlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIElBTSBhY3Rpb24gY29uc3RhbnRzIGZvciB0aGUgZ3VhcmRkdXR5IHNlcnZpY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBHdWFyZER1dHlBY3Rpb25zIHtcblx0LyoqIFRoZSBJQU0gc2VydmljZSBwcmVmaXguICovXG5cdHN0YXRpYyByZWFkb25seSBTRVJWSUNFX1BSRUZJWCA9IFwiZ3VhcmRkdXR5XCI7XG5cblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OkFjY2VwdEFkbWluaXN0cmF0b3JJbnZpdGF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBBY2NlcHRBZG1pbmlzdHJhdG9ySW52aXRhdGlvbiA9XG5cdFx0XCJndWFyZGR1dHk6QWNjZXB0QWRtaW5pc3RyYXRvckludml0YXRpb25cIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OkFjY2VwdEludml0YXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFjY2VwdEludml0YXRpb24gPSBcImd1YXJkZHV0eTpBY2NlcHRJbnZpdGF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpBcmNoaXZlRmluZGluZ3MgKi9cblx0c3RhdGljIHJlYWRvbmx5IEFyY2hpdmVGaW5kaW5ncyA9IFwiZ3VhcmRkdXR5OkFyY2hpdmVGaW5kaW5nc1wiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6Q3JlYXRlQ3VzdG9tRGV0ZWN0aW9uUnVsZUFzc29jaWF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVDdXN0b21EZXRlY3Rpb25SdWxlQXNzb2NpYXRpb24gPVxuXHRcdFwiZ3VhcmRkdXR5OkNyZWF0ZUN1c3RvbURldGVjdGlvblJ1bGVBc3NvY2lhdGlvblwiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6Q3JlYXRlQ3VzdG9tRGV0ZWN0aW9uUnVsZU9yZ0NvbmZpZ3VyYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUN1c3RvbURldGVjdGlvblJ1bGVPcmdDb25maWd1cmF0aW9uID1cblx0XHRcImd1YXJkZHV0eTpDcmVhdGVDdXN0b21EZXRlY3Rpb25SdWxlT3JnQ29uZmlndXJhdGlvblwiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6Q3JlYXRlRGV0ZWN0b3IgKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZURldGVjdG9yID0gXCJndWFyZGR1dHk6Q3JlYXRlRGV0ZWN0b3JcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OkNyZWF0ZUZpbHRlciAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRmlsdGVyID0gXCJndWFyZGR1dHk6Q3JlYXRlRmlsdGVyXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpDcmVhdGVJUFNldCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlSVBTZXQgPSBcImd1YXJkZHV0eTpDcmVhdGVJUFNldFwiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6Q3JlYXRlSW52ZXN0aWdhdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlSW52ZXN0aWdhdGlvbiA9IFwiZ3VhcmRkdXR5OkNyZWF0ZUludmVzdGlnYXRpb25cIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OkNyZWF0ZU1hbHdhcmVQcm90ZWN0aW9uUGxhbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlTWFsd2FyZVByb3RlY3Rpb25QbGFuID1cblx0XHRcImd1YXJkZHV0eTpDcmVhdGVNYWx3YXJlUHJvdGVjdGlvblBsYW5cIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OkNyZWF0ZU1lbWJlcnMgKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZU1lbWJlcnMgPSBcImd1YXJkZHV0eTpDcmVhdGVNZW1iZXJzXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpDcmVhdGVQdWJsaXNoaW5nRGVzdGluYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVB1Ymxpc2hpbmdEZXN0aW5hdGlvbiA9XG5cdFx0XCJndWFyZGR1dHk6Q3JlYXRlUHVibGlzaGluZ0Rlc3RpbmF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpDcmVhdGVTYW1wbGVGaW5kaW5ncyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlU2FtcGxlRmluZGluZ3MgPSBcImd1YXJkZHV0eTpDcmVhdGVTYW1wbGVGaW5kaW5nc1wiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6Q3JlYXRlVGhyZWF0RW50aXR5U2V0ICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVUaHJlYXRFbnRpdHlTZXQgPSBcImd1YXJkZHV0eTpDcmVhdGVUaHJlYXRFbnRpdHlTZXRcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OkNyZWF0ZVRocmVhdEludGVsU2V0ICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVUaHJlYXRJbnRlbFNldCA9IFwiZ3VhcmRkdXR5OkNyZWF0ZVRocmVhdEludGVsU2V0XCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpDcmVhdGVUcnVzdGVkRW50aXR5U2V0ICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVUcnVzdGVkRW50aXR5U2V0ID0gXCJndWFyZGR1dHk6Q3JlYXRlVHJ1c3RlZEVudGl0eVNldFwiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6RGVjbGluZUludml0YXRpb25zICovXG5cdHN0YXRpYyByZWFkb25seSBEZWNsaW5lSW52aXRhdGlvbnMgPSBcImd1YXJkZHV0eTpEZWNsaW5lSW52aXRhdGlvbnNcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OkRlbGV0ZUN1c3RvbURldGVjdGlvblJ1bGVBc3NvY2lhdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlQ3VzdG9tRGV0ZWN0aW9uUnVsZUFzc29jaWF0aW9uID1cblx0XHRcImd1YXJkZHV0eTpEZWxldGVDdXN0b21EZXRlY3Rpb25SdWxlQXNzb2NpYXRpb25cIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OkRlbGV0ZUN1c3RvbURldGVjdGlvblJ1bGVPcmdDb25maWd1cmF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVDdXN0b21EZXRlY3Rpb25SdWxlT3JnQ29uZmlndXJhdGlvbiA9XG5cdFx0XCJndWFyZGR1dHk6RGVsZXRlQ3VzdG9tRGV0ZWN0aW9uUnVsZU9yZ0NvbmZpZ3VyYXRpb25cIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OkRlbGV0ZURldGVjdG9yICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVEZXRlY3RvciA9IFwiZ3VhcmRkdXR5OkRlbGV0ZURldGVjdG9yXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpEZWxldGVGaWx0ZXIgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUZpbHRlciA9IFwiZ3VhcmRkdXR5OkRlbGV0ZUZpbHRlclwiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6RGVsZXRlSVBTZXQgKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUlQU2V0ID0gXCJndWFyZGR1dHk6RGVsZXRlSVBTZXRcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OkRlbGV0ZUludml0YXRpb25zICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVJbnZpdGF0aW9ucyA9IFwiZ3VhcmRkdXR5OkRlbGV0ZUludml0YXRpb25zXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpEZWxldGVNYWx3YXJlUHJvdGVjdGlvblBsYW4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZU1hbHdhcmVQcm90ZWN0aW9uUGxhbiA9XG5cdFx0XCJndWFyZGR1dHk6RGVsZXRlTWFsd2FyZVByb3RlY3Rpb25QbGFuXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpEZWxldGVNZW1iZXJzICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVNZW1iZXJzID0gXCJndWFyZGR1dHk6RGVsZXRlTWVtYmVyc1wiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6RGVsZXRlUHVibGlzaGluZ0Rlc3RpbmF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVQdWJsaXNoaW5nRGVzdGluYXRpb24gPVxuXHRcdFwiZ3VhcmRkdXR5OkRlbGV0ZVB1Ymxpc2hpbmdEZXN0aW5hdGlvblwiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6RGVsZXRlVGhyZWF0RW50aXR5U2V0ICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVUaHJlYXRFbnRpdHlTZXQgPSBcImd1YXJkZHV0eTpEZWxldGVUaHJlYXRFbnRpdHlTZXRcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OkRlbGV0ZVRocmVhdEludGVsU2V0ICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVUaHJlYXRJbnRlbFNldCA9IFwiZ3VhcmRkdXR5OkRlbGV0ZVRocmVhdEludGVsU2V0XCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpEZWxldGVUcnVzdGVkRW50aXR5U2V0ICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVUcnVzdGVkRW50aXR5U2V0ID0gXCJndWFyZGR1dHk6RGVsZXRlVHJ1c3RlZEVudGl0eVNldFwiO1xuXHQvKiogW1JlYWRdIGd1YXJkZHV0eTpEZXNjcmliZU1hbHdhcmVTY2FucyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVzY3JpYmVNYWx3YXJlU2NhbnMgPSBcImd1YXJkZHV0eTpEZXNjcmliZU1hbHdhcmVTY2Fuc1wiO1xuXHQvKiogW1JlYWRdIGd1YXJkZHV0eTpEZXNjcmliZU9yZ2FuaXphdGlvbkNvbmZpZ3VyYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlT3JnYW5pemF0aW9uQ29uZmlndXJhdGlvbiA9XG5cdFx0XCJndWFyZGR1dHk6RGVzY3JpYmVPcmdhbml6YXRpb25Db25maWd1cmF0aW9uXCI7XG5cdC8qKiBbUmVhZF0gZ3VhcmRkdXR5OkRlc2NyaWJlUHVibGlzaGluZ0Rlc3RpbmF0aW9uICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZVB1Ymxpc2hpbmdEZXN0aW5hdGlvbiA9XG5cdFx0XCJndWFyZGR1dHk6RGVzY3JpYmVQdWJsaXNoaW5nRGVzdGluYXRpb25cIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OkRpc2FibGVPcmdhbml6YXRpb25BZG1pbkFjY291bnQgKi9cblx0c3RhdGljIHJlYWRvbmx5IERpc2FibGVPcmdhbml6YXRpb25BZG1pbkFjY291bnQgPVxuXHRcdFwiZ3VhcmRkdXR5OkRpc2FibGVPcmdhbml6YXRpb25BZG1pbkFjY291bnRcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OkRpc2Fzc29jaWF0ZUZyb21BZG1pbmlzdHJhdG9yQWNjb3VudCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGlzYXNzb2NpYXRlRnJvbUFkbWluaXN0cmF0b3JBY2NvdW50ID1cblx0XHRcImd1YXJkZHV0eTpEaXNhc3NvY2lhdGVGcm9tQWRtaW5pc3RyYXRvckFjY291bnRcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OkRpc2Fzc29jaWF0ZUZyb21NYXN0ZXJBY2NvdW50ICovXG5cdHN0YXRpYyByZWFkb25seSBEaXNhc3NvY2lhdGVGcm9tTWFzdGVyQWNjb3VudCA9XG5cdFx0XCJndWFyZGR1dHk6RGlzYXNzb2NpYXRlRnJvbU1hc3RlckFjY291bnRcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OkRpc2Fzc29jaWF0ZU1lbWJlcnMgKi9cblx0c3RhdGljIHJlYWRvbmx5IERpc2Fzc29jaWF0ZU1lbWJlcnMgPSBcImd1YXJkZHV0eTpEaXNhc3NvY2lhdGVNZW1iZXJzXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpFbmFibGVPcmdhbml6YXRpb25BZG1pbkFjY291bnQgKi9cblx0c3RhdGljIHJlYWRvbmx5IEVuYWJsZU9yZ2FuaXphdGlvbkFkbWluQWNjb3VudCA9XG5cdFx0XCJndWFyZGR1dHk6RW5hYmxlT3JnYW5pemF0aW9uQWRtaW5BY2NvdW50XCI7XG5cdC8qKiBbUmVhZF0gZ3VhcmRkdXR5OkdldEFkbWluaXN0cmF0b3JBY2NvdW50ICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRBZG1pbmlzdHJhdG9yQWNjb3VudCA9XG5cdFx0XCJndWFyZGR1dHk6R2V0QWRtaW5pc3RyYXRvckFjY291bnRcIjtcblx0LyoqIFtSZWFkXSBndWFyZGR1dHk6R2V0Q292ZXJhZ2VTdGF0aXN0aWNzICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRDb3ZlcmFnZVN0YXRpc3RpY3MgPVxuXHRcdFwiZ3VhcmRkdXR5OkdldENvdmVyYWdlU3RhdGlzdGljc1wiO1xuXHQvKiogW1JlYWRdIGd1YXJkZHV0eTpHZXRDdXN0b21EZXRlY3Rpb25SdWxlICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRDdXN0b21EZXRlY3Rpb25SdWxlID1cblx0XHRcImd1YXJkZHV0eTpHZXRDdXN0b21EZXRlY3Rpb25SdWxlXCI7XG5cdC8qKiBbUmVhZF0gZ3VhcmRkdXR5OkdldEN1c3RvbURldGVjdGlvblJ1bGVBc3NvY2lhdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0Q3VzdG9tRGV0ZWN0aW9uUnVsZUFzc29jaWF0aW9uID1cblx0XHRcImd1YXJkZHV0eTpHZXRDdXN0b21EZXRlY3Rpb25SdWxlQXNzb2NpYXRpb25cIjtcblx0LyoqIFtSZWFkXSBndWFyZGR1dHk6R2V0Q3VzdG9tRGV0ZWN0aW9uUnVsZU9yZ0NvbmZpZ3VyYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldEN1c3RvbURldGVjdGlvblJ1bGVPcmdDb25maWd1cmF0aW9uID1cblx0XHRcImd1YXJkZHV0eTpHZXRDdXN0b21EZXRlY3Rpb25SdWxlT3JnQ29uZmlndXJhdGlvblwiO1xuXHQvKiogW1JlYWRdIGd1YXJkZHV0eTpHZXREZXRlY3RvciAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0RGV0ZWN0b3IgPSBcImd1YXJkZHV0eTpHZXREZXRlY3RvclwiO1xuXHQvKiogW1JlYWRdIGd1YXJkZHV0eTpHZXRGaWx0ZXIgKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldEZpbHRlciA9IFwiZ3VhcmRkdXR5OkdldEZpbHRlclwiO1xuXHQvKiogW1JlYWRdIGd1YXJkZHV0eTpHZXRGaW5kaW5ncyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0RmluZGluZ3MgPSBcImd1YXJkZHV0eTpHZXRGaW5kaW5nc1wiO1xuXHQvKiogW1JlYWRdIGd1YXJkZHV0eTpHZXRGaW5kaW5nc1N0YXRpc3RpY3MgKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldEZpbmRpbmdzU3RhdGlzdGljcyA9XG5cdFx0XCJndWFyZGR1dHk6R2V0RmluZGluZ3NTdGF0aXN0aWNzXCI7XG5cdC8qKiBbUmVhZF0gZ3VhcmRkdXR5OkdldElQU2V0ICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRJUFNldCA9IFwiZ3VhcmRkdXR5OkdldElQU2V0XCI7XG5cdC8qKiBbUmVhZF0gZ3VhcmRkdXR5OkdldEludmVzdGlnYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldEludmVzdGlnYXRpb24gPSBcImd1YXJkZHV0eTpHZXRJbnZlc3RpZ2F0aW9uXCI7XG5cdC8qKiBbUmVhZF0gZ3VhcmRkdXR5OkdldEludml0YXRpb25zQ291bnQgKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldEludml0YXRpb25zQ291bnQgPSBcImd1YXJkZHV0eTpHZXRJbnZpdGF0aW9uc0NvdW50XCI7XG5cdC8qKiBbUmVhZF0gZ3VhcmRkdXR5OkdldE1hbHdhcmVQcm90ZWN0aW9uUGxhbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0TWFsd2FyZVByb3RlY3Rpb25QbGFuID1cblx0XHRcImd1YXJkZHV0eTpHZXRNYWx3YXJlUHJvdGVjdGlvblBsYW5cIjtcblx0LyoqIFtSZWFkXSBndWFyZGR1dHk6R2V0TWFsd2FyZVNjYW4gKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldE1hbHdhcmVTY2FuID0gXCJndWFyZGR1dHk6R2V0TWFsd2FyZVNjYW5cIjtcblx0LyoqIFtSZWFkXSBndWFyZGR1dHk6R2V0TWFsd2FyZVNjYW5TZXR0aW5ncyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0TWFsd2FyZVNjYW5TZXR0aW5ncyA9XG5cdFx0XCJndWFyZGR1dHk6R2V0TWFsd2FyZVNjYW5TZXR0aW5nc1wiO1xuXHQvKiogW1JlYWRdIGd1YXJkZHV0eTpHZXRNYXN0ZXJBY2NvdW50ICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRNYXN0ZXJBY2NvdW50ID0gXCJndWFyZGR1dHk6R2V0TWFzdGVyQWNjb3VudFwiO1xuXHQvKiogW1JlYWRdIGd1YXJkZHV0eTpHZXRNZW1iZXJEZXRlY3RvcnMgKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldE1lbWJlckRldGVjdG9ycyA9IFwiZ3VhcmRkdXR5OkdldE1lbWJlckRldGVjdG9yc1wiO1xuXHQvKiogW1JlYWRdIGd1YXJkZHV0eTpHZXRNZW1iZXJzICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRNZW1iZXJzID0gXCJndWFyZGR1dHk6R2V0TWVtYmVyc1wiO1xuXHQvKiogW1JlYWRdIGd1YXJkZHV0eTpHZXRPcmdhbml6YXRpb25TdGF0aXN0aWNzICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRPcmdhbml6YXRpb25TdGF0aXN0aWNzID1cblx0XHRcImd1YXJkZHV0eTpHZXRPcmdhbml6YXRpb25TdGF0aXN0aWNzXCI7XG5cdC8qKiBbUmVhZF0gZ3VhcmRkdXR5OkdldFJlbWFpbmluZ0ZyZWVUcmlhbERheXMgKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldFJlbWFpbmluZ0ZyZWVUcmlhbERheXMgPVxuXHRcdFwiZ3VhcmRkdXR5OkdldFJlbWFpbmluZ0ZyZWVUcmlhbERheXNcIjtcblx0LyoqIFtSZWFkXSBndWFyZGR1dHk6R2V0VGhyZWF0RW50aXR5U2V0ICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRUaHJlYXRFbnRpdHlTZXQgPSBcImd1YXJkZHV0eTpHZXRUaHJlYXRFbnRpdHlTZXRcIjtcblx0LyoqIFtSZWFkXSBndWFyZGR1dHk6R2V0VGhyZWF0SW50ZWxTZXQgKi9cblx0c3RhdGljIHJlYWRvbmx5IGFjdGlvbkdldFRocmVhdEludGVsU2V0ID0gXCJndWFyZGR1dHk6R2V0VGhyZWF0SW50ZWxTZXRcIjtcblx0LyoqIFtSZWFkXSBndWFyZGR1dHk6R2V0VHJ1c3RlZEVudGl0eVNldCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgYWN0aW9uR2V0VHJ1c3RlZEVudGl0eVNldCA9IFwiZ3VhcmRkdXR5OkdldFRydXN0ZWRFbnRpdHlTZXRcIjtcblx0LyoqIFtSZWFkXSBndWFyZGR1dHk6R2V0VXNhZ2VTdGF0aXN0aWNzICovXG5cdHN0YXRpYyByZWFkb25seSBhY3Rpb25HZXRVc2FnZVN0YXRpc3RpY3MgPSBcImd1YXJkZHV0eTpHZXRVc2FnZVN0YXRpc3RpY3NcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5Okludml0ZU1lbWJlcnMgKi9cblx0c3RhdGljIHJlYWRvbmx5IEludml0ZU1lbWJlcnMgPSBcImd1YXJkZHV0eTpJbnZpdGVNZW1iZXJzXCI7XG5cdC8qKiBbTGlzdF0gZ3VhcmRkdXR5Okxpc3RDb3ZlcmFnZSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdENvdmVyYWdlID0gXCJndWFyZGR1dHk6TGlzdENvdmVyYWdlXCI7XG5cdC8qKiBbTGlzdF0gZ3VhcmRkdXR5Okxpc3RDdXN0b21EZXRlY3Rpb25SdWxlQXNzb2NpYXRpb25zICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0Q3VzdG9tRGV0ZWN0aW9uUnVsZUFzc29jaWF0aW9ucyA9XG5cdFx0XCJndWFyZGR1dHk6TGlzdEN1c3RvbURldGVjdGlvblJ1bGVBc3NvY2lhdGlvbnNcIjtcblx0LyoqIFtMaXN0XSBndWFyZGR1dHk6TGlzdEN1c3RvbURldGVjdGlvblJ1bGVPcmdDb25maWd1cmF0aW9ucyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEN1c3RvbURldGVjdGlvblJ1bGVPcmdDb25maWd1cmF0aW9ucyA9XG5cdFx0XCJndWFyZGR1dHk6TGlzdEN1c3RvbURldGVjdGlvblJ1bGVPcmdDb25maWd1cmF0aW9uc1wiO1xuXHQvKiogW0xpc3RdIGd1YXJkZHV0eTpMaXN0Q3VzdG9tRGV0ZWN0aW9uUnVsZXMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RDdXN0b21EZXRlY3Rpb25SdWxlcyA9XG5cdFx0XCJndWFyZGR1dHk6TGlzdEN1c3RvbURldGVjdGlvblJ1bGVzXCI7XG5cdC8qKiBbTGlzdF0gZ3VhcmRkdXR5Okxpc3REZXRlY3RvcnMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3REZXRlY3RvcnMgPSBcImd1YXJkZHV0eTpMaXN0RGV0ZWN0b3JzXCI7XG5cdC8qKiBbTGlzdF0gZ3VhcmRkdXR5Okxpc3RGaWx0ZXJzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RmlsdGVycyA9IFwiZ3VhcmRkdXR5Okxpc3RGaWx0ZXJzXCI7XG5cdC8qKiBbTGlzdF0gZ3VhcmRkdXR5Okxpc3RGaW5kaW5ncyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEZpbmRpbmdzID0gXCJndWFyZGR1dHk6TGlzdEZpbmRpbmdzXCI7XG5cdC8qKiBbTGlzdF0gZ3VhcmRkdXR5Okxpc3RJUFNldHMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RJUFNldHMgPSBcImd1YXJkZHV0eTpMaXN0SVBTZXRzXCI7XG5cdC8qKiBbTGlzdF0gZ3VhcmRkdXR5Okxpc3RJbnZlc3RpZ2F0aW9ucyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEludmVzdGlnYXRpb25zID0gXCJndWFyZGR1dHk6TGlzdEludmVzdGlnYXRpb25zXCI7XG5cdC8qKiBbTGlzdF0gZ3VhcmRkdXR5Okxpc3RJbnZpdGF0aW9ucyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEludml0YXRpb25zID0gXCJndWFyZGR1dHk6TGlzdEludml0YXRpb25zXCI7XG5cdC8qKiBbTGlzdF0gZ3VhcmRkdXR5Okxpc3RNYWx3YXJlUHJvdGVjdGlvblBsYW5zICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0TWFsd2FyZVByb3RlY3Rpb25QbGFucyA9XG5cdFx0XCJndWFyZGR1dHk6TGlzdE1hbHdhcmVQcm90ZWN0aW9uUGxhbnNcIjtcblx0LyoqIFtMaXN0XSBndWFyZGR1dHk6TGlzdE1hbHdhcmVTY2FucyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdE1hbHdhcmVTY2FucyA9IFwiZ3VhcmRkdXR5Okxpc3RNYWx3YXJlU2NhbnNcIjtcblx0LyoqIFtMaXN0XSBndWFyZGR1dHk6TGlzdE1lbWJlcnMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RNZW1iZXJzID0gXCJndWFyZGR1dHk6TGlzdE1lbWJlcnNcIjtcblx0LyoqIFtMaXN0XSBndWFyZGR1dHk6TGlzdE9yZ2FuaXphdGlvbkFkbWluQWNjb3VudHMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RPcmdhbml6YXRpb25BZG1pbkFjY291bnRzID1cblx0XHRcImd1YXJkZHV0eTpMaXN0T3JnYW5pemF0aW9uQWRtaW5BY2NvdW50c1wiO1xuXHQvKiogW0xpc3RdIGd1YXJkZHV0eTpMaXN0UHVibGlzaGluZ0Rlc3RpbmF0aW9ucyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFB1Ymxpc2hpbmdEZXN0aW5hdGlvbnMgPVxuXHRcdFwiZ3VhcmRkdXR5Okxpc3RQdWJsaXNoaW5nRGVzdGluYXRpb25zXCI7XG5cdC8qKiBbUmVhZF0gZ3VhcmRkdXR5Okxpc3RUYWdzRm9yUmVzb3VyY2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUYWdzRm9yUmVzb3VyY2UgPSBcImd1YXJkZHV0eTpMaXN0VGFnc0ZvclJlc291cmNlXCI7XG5cdC8qKiBbTGlzdF0gZ3VhcmRkdXR5Okxpc3RUaHJlYXRFbnRpdHlTZXRzICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0VGhyZWF0RW50aXR5U2V0cyA9IFwiZ3VhcmRkdXR5Okxpc3RUaHJlYXRFbnRpdHlTZXRzXCI7XG5cdC8qKiBbTGlzdF0gZ3VhcmRkdXR5Okxpc3RUaHJlYXRJbnRlbFNldHMgKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUaHJlYXRJbnRlbFNldHMgPSBcImd1YXJkZHV0eTpMaXN0VGhyZWF0SW50ZWxTZXRzXCI7XG5cdC8qKiBbTGlzdF0gZ3VhcmRkdXR5Okxpc3RUcnVzdGVkRW50aXR5U2V0cyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFRydXN0ZWRFbnRpdHlTZXRzID0gXCJndWFyZGR1dHk6TGlzdFRydXN0ZWRFbnRpdHlTZXRzXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpTZW5kT2JqZWN0TWFsd2FyZVNjYW4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFNlbmRPYmplY3RNYWx3YXJlU2NhbiA9IFwiZ3VhcmRkdXR5OlNlbmRPYmplY3RNYWx3YXJlU2NhblwiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6U2VuZFNlY3VyaXR5VGVsZW1ldHJ5ICovXG5cdHN0YXRpYyByZWFkb25seSBTZW5kU2VjdXJpdHlUZWxlbWV0cnkgPSBcImd1YXJkZHV0eTpTZW5kU2VjdXJpdHlUZWxlbWV0cnlcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OlN0YXJ0TWFsd2FyZVNjYW4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0TWFsd2FyZVNjYW4gPSBcImd1YXJkZHV0eTpTdGFydE1hbHdhcmVTY2FuXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpTdGFydE1vbml0b3JpbmdNZW1iZXJzICovXG5cdHN0YXRpYyByZWFkb25seSBTdGFydE1vbml0b3JpbmdNZW1iZXJzID0gXCJndWFyZGR1dHk6U3RhcnRNb25pdG9yaW5nTWVtYmVyc1wiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6U3RvcE1vbml0b3JpbmdNZW1iZXJzICovXG5cdHN0YXRpYyByZWFkb25seSBTdG9wTW9uaXRvcmluZ01lbWJlcnMgPSBcImd1YXJkZHV0eTpTdG9wTW9uaXRvcmluZ01lbWJlcnNcIjtcblx0LyoqIFtUYWdnaW5nXSBndWFyZGR1dHk6VGFnUmVzb3VyY2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IFRhZ1Jlc291cmNlID0gXCJndWFyZGR1dHk6VGFnUmVzb3VyY2VcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OlVuYXJjaGl2ZUZpbmRpbmdzICovXG5cdHN0YXRpYyByZWFkb25seSBVbmFyY2hpdmVGaW5kaW5ncyA9IFwiZ3VhcmRkdXR5OlVuYXJjaGl2ZUZpbmRpbmdzXCI7XG5cdC8qKiBbVGFnZ2luZ10gZ3VhcmRkdXR5OlVudGFnUmVzb3VyY2UgKi9cblx0c3RhdGljIHJlYWRvbmx5IFVudGFnUmVzb3VyY2UgPSBcImd1YXJkZHV0eTpVbnRhZ1Jlc291cmNlXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpVcGRhdGVDdXN0b21EZXRlY3Rpb25SdWxlQXNzb2NpYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUN1c3RvbURldGVjdGlvblJ1bGVBc3NvY2lhdGlvbiA9XG5cdFx0XCJndWFyZGR1dHk6VXBkYXRlQ3VzdG9tRGV0ZWN0aW9uUnVsZUFzc29jaWF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpVcGRhdGVDdXN0b21EZXRlY3Rpb25SdWxlT3JnQ29uZmlndXJhdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlQ3VzdG9tRGV0ZWN0aW9uUnVsZU9yZ0NvbmZpZ3VyYXRpb24gPVxuXHRcdFwiZ3VhcmRkdXR5OlVwZGF0ZUN1c3RvbURldGVjdGlvblJ1bGVPcmdDb25maWd1cmF0aW9uXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpVcGRhdGVEZXRlY3RvciAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRGV0ZWN0b3IgPSBcImd1YXJkZHV0eTpVcGRhdGVEZXRlY3RvclwiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6VXBkYXRlRmlsdGVyICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVGaWx0ZXIgPSBcImd1YXJkZHV0eTpVcGRhdGVGaWx0ZXJcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OlVwZGF0ZUZpbmRpbmdzRmVlZGJhY2sgKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUZpbmRpbmdzRmVlZGJhY2sgPSBcImd1YXJkZHV0eTpVcGRhdGVGaW5kaW5nc0ZlZWRiYWNrXCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpVcGRhdGVJUFNldCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlSVBTZXQgPSBcImd1YXJkZHV0eTpVcGRhdGVJUFNldFwiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6VXBkYXRlTWFsd2FyZVByb3RlY3Rpb25QbGFuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVNYWx3YXJlUHJvdGVjdGlvblBsYW4gPVxuXHRcdFwiZ3VhcmRkdXR5OlVwZGF0ZU1hbHdhcmVQcm90ZWN0aW9uUGxhblwiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6VXBkYXRlTWFsd2FyZVNjYW5TZXR0aW5ncyAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlTWFsd2FyZVNjYW5TZXR0aW5ncyA9XG5cdFx0XCJndWFyZGR1dHk6VXBkYXRlTWFsd2FyZVNjYW5TZXR0aW5nc1wiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6VXBkYXRlTWVtYmVyRGV0ZWN0b3JzICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVNZW1iZXJEZXRlY3RvcnMgPSBcImd1YXJkZHV0eTpVcGRhdGVNZW1iZXJEZXRlY3RvcnNcIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OlVwZGF0ZU9yZ2FuaXphdGlvbkNvbmZpZ3VyYXRpb24gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZU9yZ2FuaXphdGlvbkNvbmZpZ3VyYXRpb24gPVxuXHRcdFwiZ3VhcmRkdXR5OlVwZGF0ZU9yZ2FuaXphdGlvbkNvbmZpZ3VyYXRpb25cIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OlVwZGF0ZVB1Ymxpc2hpbmdEZXN0aW5hdGlvbiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlUHVibGlzaGluZ0Rlc3RpbmF0aW9uID1cblx0XHRcImd1YXJkZHV0eTpVcGRhdGVQdWJsaXNoaW5nRGVzdGluYXRpb25cIjtcblx0LyoqIFtXcml0ZV0gZ3VhcmRkdXR5OlVwZGF0ZVRocmVhdEVudGl0eVNldCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlVGhyZWF0RW50aXR5U2V0ID0gXCJndWFyZGR1dHk6VXBkYXRlVGhyZWF0RW50aXR5U2V0XCI7XG5cdC8qKiBbV3JpdGVdIGd1YXJkZHV0eTpVcGRhdGVUaHJlYXRJbnRlbFNldCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlVGhyZWF0SW50ZWxTZXQgPSBcImd1YXJkZHV0eTpVcGRhdGVUaHJlYXRJbnRlbFNldFwiO1xuXHQvKiogW1dyaXRlXSBndWFyZGR1dHk6VXBkYXRlVHJ1c3RlZEVudGl0eVNldCAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlVHJ1c3RlZEVudGl0eVNldCA9IFwiZ3VhcmRkdXR5OlVwZGF0ZVRydXN0ZWRFbnRpdHlTZXRcIjtcblxuXHQvKiogQWxsIHJlYWQtbGV2ZWwgYWN0aW9ucy4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFsbFJlYWRBY3Rpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRHdWFyZER1dHlBY3Rpb25zLkRlc2NyaWJlTWFsd2FyZVNjYW5zLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuRGVzY3JpYmVPcmdhbml6YXRpb25Db25maWd1cmF0aW9uLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuRGVzY3JpYmVQdWJsaXNoaW5nRGVzdGluYXRpb24sXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5hY3Rpb25HZXRBZG1pbmlzdHJhdG9yQWNjb3VudCxcblx0XHRHdWFyZER1dHlBY3Rpb25zLmFjdGlvbkdldENvdmVyYWdlU3RhdGlzdGljcyxcblx0XHRHdWFyZER1dHlBY3Rpb25zLmFjdGlvbkdldEN1c3RvbURldGVjdGlvblJ1bGUsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5hY3Rpb25HZXRDdXN0b21EZXRlY3Rpb25SdWxlQXNzb2NpYXRpb24sXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5hY3Rpb25HZXRDdXN0b21EZXRlY3Rpb25SdWxlT3JnQ29uZmlndXJhdGlvbixcblx0XHRHdWFyZER1dHlBY3Rpb25zLmFjdGlvbkdldERldGVjdG9yLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuYWN0aW9uR2V0RmlsdGVyLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuYWN0aW9uR2V0RmluZGluZ3MsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5hY3Rpb25HZXRGaW5kaW5nc1N0YXRpc3RpY3MsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5hY3Rpb25HZXRJUFNldCxcblx0XHRHdWFyZER1dHlBY3Rpb25zLmFjdGlvbkdldEludmVzdGlnYXRpb24sXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5hY3Rpb25HZXRJbnZpdGF0aW9uc0NvdW50LFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuYWN0aW9uR2V0TWFsd2FyZVByb3RlY3Rpb25QbGFuLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuYWN0aW9uR2V0TWFsd2FyZVNjYW4sXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5hY3Rpb25HZXRNYWx3YXJlU2NhblNldHRpbmdzLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuYWN0aW9uR2V0TWFzdGVyQWNjb3VudCxcblx0XHRHdWFyZER1dHlBY3Rpb25zLmFjdGlvbkdldE1lbWJlckRldGVjdG9ycyxcblx0XHRHdWFyZER1dHlBY3Rpb25zLmFjdGlvbkdldE1lbWJlcnMsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5hY3Rpb25HZXRPcmdhbml6YXRpb25TdGF0aXN0aWNzLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuYWN0aW9uR2V0UmVtYWluaW5nRnJlZVRyaWFsRGF5cyxcblx0XHRHdWFyZER1dHlBY3Rpb25zLmFjdGlvbkdldFRocmVhdEVudGl0eVNldCxcblx0XHRHdWFyZER1dHlBY3Rpb25zLmFjdGlvbkdldFRocmVhdEludGVsU2V0LFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuYWN0aW9uR2V0VHJ1c3RlZEVudGl0eVNldCxcblx0XHRHdWFyZER1dHlBY3Rpb25zLmFjdGlvbkdldFVzYWdlU3RhdGlzdGljcyxcblx0XHRHdWFyZER1dHlBY3Rpb25zLkxpc3RUYWdzRm9yUmVzb3VyY2UsXG5cdF07XG5cdC8qKiBBbGwgd3JpdGUtbGV2ZWwgYWN0aW9ucy4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFsbFdyaXRlQWN0aW9uczogc3RyaW5nW10gPSBbXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5BY2NlcHRBZG1pbmlzdHJhdG9ySW52aXRhdGlvbixcblx0XHRHdWFyZER1dHlBY3Rpb25zLkFjY2VwdEludml0YXRpb24sXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5BcmNoaXZlRmluZGluZ3MsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5DcmVhdGVDdXN0b21EZXRlY3Rpb25SdWxlQXNzb2NpYXRpb24sXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5DcmVhdGVDdXN0b21EZXRlY3Rpb25SdWxlT3JnQ29uZmlndXJhdGlvbixcblx0XHRHdWFyZER1dHlBY3Rpb25zLkNyZWF0ZURldGVjdG9yLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuQ3JlYXRlRmlsdGVyLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuQ3JlYXRlSVBTZXQsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5DcmVhdGVJbnZlc3RpZ2F0aW9uLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuQ3JlYXRlTWFsd2FyZVByb3RlY3Rpb25QbGFuLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuQ3JlYXRlTWVtYmVycyxcblx0XHRHdWFyZER1dHlBY3Rpb25zLkNyZWF0ZVB1Ymxpc2hpbmdEZXN0aW5hdGlvbixcblx0XHRHdWFyZER1dHlBY3Rpb25zLkNyZWF0ZVNhbXBsZUZpbmRpbmdzLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuQ3JlYXRlVGhyZWF0RW50aXR5U2V0LFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuQ3JlYXRlVGhyZWF0SW50ZWxTZXQsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5DcmVhdGVUcnVzdGVkRW50aXR5U2V0LFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuRGVjbGluZUludml0YXRpb25zLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuRGVsZXRlQ3VzdG9tRGV0ZWN0aW9uUnVsZUFzc29jaWF0aW9uLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuRGVsZXRlQ3VzdG9tRGV0ZWN0aW9uUnVsZU9yZ0NvbmZpZ3VyYXRpb24sXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5EZWxldGVEZXRlY3Rvcixcblx0XHRHdWFyZER1dHlBY3Rpb25zLkRlbGV0ZUZpbHRlcixcblx0XHRHdWFyZER1dHlBY3Rpb25zLkRlbGV0ZUlQU2V0LFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuRGVsZXRlSW52aXRhdGlvbnMsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5EZWxldGVNYWx3YXJlUHJvdGVjdGlvblBsYW4sXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5EZWxldGVNZW1iZXJzLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuRGVsZXRlUHVibGlzaGluZ0Rlc3RpbmF0aW9uLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuRGVsZXRlVGhyZWF0RW50aXR5U2V0LFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuRGVsZXRlVGhyZWF0SW50ZWxTZXQsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5EZWxldGVUcnVzdGVkRW50aXR5U2V0LFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuRGlzYWJsZU9yZ2FuaXphdGlvbkFkbWluQWNjb3VudCxcblx0XHRHdWFyZER1dHlBY3Rpb25zLkRpc2Fzc29jaWF0ZUZyb21BZG1pbmlzdHJhdG9yQWNjb3VudCxcblx0XHRHdWFyZER1dHlBY3Rpb25zLkRpc2Fzc29jaWF0ZUZyb21NYXN0ZXJBY2NvdW50LFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuRGlzYXNzb2NpYXRlTWVtYmVycyxcblx0XHRHdWFyZER1dHlBY3Rpb25zLkVuYWJsZU9yZ2FuaXphdGlvbkFkbWluQWNjb3VudCxcblx0XHRHdWFyZER1dHlBY3Rpb25zLkludml0ZU1lbWJlcnMsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5TZW5kT2JqZWN0TWFsd2FyZVNjYW4sXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5TZW5kU2VjdXJpdHlUZWxlbWV0cnksXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5TdGFydE1hbHdhcmVTY2FuLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuU3RhcnRNb25pdG9yaW5nTWVtYmVycyxcblx0XHRHdWFyZER1dHlBY3Rpb25zLlN0b3BNb25pdG9yaW5nTWVtYmVycyxcblx0XHRHdWFyZER1dHlBY3Rpb25zLlVuYXJjaGl2ZUZpbmRpbmdzLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuVXBkYXRlQ3VzdG9tRGV0ZWN0aW9uUnVsZUFzc29jaWF0aW9uLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuVXBkYXRlQ3VzdG9tRGV0ZWN0aW9uUnVsZU9yZ0NvbmZpZ3VyYXRpb24sXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5VcGRhdGVEZXRlY3Rvcixcblx0XHRHdWFyZER1dHlBY3Rpb25zLlVwZGF0ZUZpbHRlcixcblx0XHRHdWFyZER1dHlBY3Rpb25zLlVwZGF0ZUZpbmRpbmdzRmVlZGJhY2ssXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5VcGRhdGVJUFNldCxcblx0XHRHdWFyZER1dHlBY3Rpb25zLlVwZGF0ZU1hbHdhcmVQcm90ZWN0aW9uUGxhbixcblx0XHRHdWFyZER1dHlBY3Rpb25zLlVwZGF0ZU1hbHdhcmVTY2FuU2V0dGluZ3MsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5VcGRhdGVNZW1iZXJEZXRlY3RvcnMsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5VcGRhdGVPcmdhbml6YXRpb25Db25maWd1cmF0aW9uLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuVXBkYXRlUHVibGlzaGluZ0Rlc3RpbmF0aW9uLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuVXBkYXRlVGhyZWF0RW50aXR5U2V0LFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuVXBkYXRlVGhyZWF0SW50ZWxTZXQsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5VcGRhdGVUcnVzdGVkRW50aXR5U2V0LFxuXHRdO1xuXHQvKiogQWxsIGxpc3QtbGV2ZWwgYWN0aW9ucy4gKi9cblx0c3RhdGljIHJlYWRvbmx5IEFsbExpc3RBY3Rpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRHdWFyZER1dHlBY3Rpb25zLkxpc3RDb3ZlcmFnZSxcblx0XHRHdWFyZER1dHlBY3Rpb25zLkxpc3RDdXN0b21EZXRlY3Rpb25SdWxlQXNzb2NpYXRpb25zLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuTGlzdEN1c3RvbURldGVjdGlvblJ1bGVPcmdDb25maWd1cmF0aW9ucyxcblx0XHRHdWFyZER1dHlBY3Rpb25zLkxpc3RDdXN0b21EZXRlY3Rpb25SdWxlcyxcblx0XHRHdWFyZER1dHlBY3Rpb25zLkxpc3REZXRlY3RvcnMsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5MaXN0RmlsdGVycyxcblx0XHRHdWFyZER1dHlBY3Rpb25zLkxpc3RGaW5kaW5ncyxcblx0XHRHdWFyZER1dHlBY3Rpb25zLkxpc3RJUFNldHMsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5MaXN0SW52ZXN0aWdhdGlvbnMsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5MaXN0SW52aXRhdGlvbnMsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5MaXN0TWFsd2FyZVByb3RlY3Rpb25QbGFucyxcblx0XHRHdWFyZER1dHlBY3Rpb25zLkxpc3RNYWx3YXJlU2NhbnMsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5MaXN0TWVtYmVycyxcblx0XHRHdWFyZER1dHlBY3Rpb25zLkxpc3RPcmdhbml6YXRpb25BZG1pbkFjY291bnRzLFxuXHRcdEd1YXJkRHV0eUFjdGlvbnMuTGlzdFB1Ymxpc2hpbmdEZXN0aW5hdGlvbnMsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5MaXN0VGhyZWF0RW50aXR5U2V0cyxcblx0XHRHdWFyZER1dHlBY3Rpb25zLkxpc3RUaHJlYXRJbnRlbFNldHMsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5MaXN0VHJ1c3RlZEVudGl0eVNldHMsXG5cdF07XG5cdC8qKiBBbGwgcGVybWlzc2lvbi1tYW5hZ2VtZW50LWxldmVsIGFjdGlvbnMuICovXG5cdHN0YXRpYyByZWFkb25seSBBbGxQZXJtaXNzaW9uTWFuYWdlbWVudEFjdGlvbnM6IHN0cmluZ1tdID0gW107XG5cdC8qKiBBbGwgdGFnZ2luZy1sZXZlbCBhY3Rpb25zLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWxsVGFnZ2luZ0FjdGlvbnM6IHN0cmluZ1tdID0gW1xuXHRcdEd1YXJkRHV0eUFjdGlvbnMuVGFnUmVzb3VyY2UsXG5cdFx0R3VhcmREdXR5QWN0aW9ucy5VbnRhZ1Jlc291cmNlLFxuXHRdO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgY3VzdG9tZGV0ZWN0aW9ucnVsZSBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3VhcmREdXR5Q3VzdG9tZGV0ZWN0aW9ucnVsZUFyblByb3BzIHtcblx0LyoqIFRoZSBSdWxlSWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IHJ1bGVJZDogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGN1c3RvbWRldGVjdGlvbnJ1bGUgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEd1YXJkRHV0eUN1c3RvbWRldGVjdGlvbnJ1bGVBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIFJ1bGVJZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHJ1bGVJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgY3VzdG9tZGV0ZWN0aW9ucnVsZWFzc29jaWF0aW9uIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHdWFyZER1dHlDdXN0b21kZXRlY3Rpb25ydWxlYXNzb2NpYXRpb25Bcm5Qcm9wcyB7XG5cdC8qKiBUaGUgUnVsZUlkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBydWxlSWQ6IHN0cmluZztcblx0LyoqIFRoZSBBc3NvY2lhdGlvbklkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBhc3NvY2lhdGlvbklkOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgY3VzdG9tZGV0ZWN0aW9ucnVsZWFzc29jaWF0aW9uIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHdWFyZER1dHlDdXN0b21kZXRlY3Rpb25ydWxlYXNzb2NpYXRpb25Bcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIFJ1bGVJZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHJ1bGVJZDogc3RyaW5nO1xuXHQvKiogVGhlIEFzc29jaWF0aW9uSWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBhc3NvY2lhdGlvbklkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSBkZXRlY3RvciBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3VhcmREdXR5RGV0ZWN0b3JBcm5Qcm9wcyB7XG5cdC8qKiBUaGUgRGV0ZWN0b3JJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgZGV0ZWN0b3JJZDogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGRldGVjdG9yIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHdWFyZER1dHlEZXRlY3RvckFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgRGV0ZWN0b3JJZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGRldGVjdG9ySWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGZpbHRlciBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3VhcmREdXR5RmlsdGVyQXJuUHJvcHMge1xuXHQvKiogVGhlIERldGVjdG9ySWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGRldGVjdG9ySWQ6IHN0cmluZztcblx0LyoqIFRoZSBGaWx0ZXJOYW1lIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBmaWx0ZXJOYW1lOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgZmlsdGVyIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHdWFyZER1dHlGaWx0ZXJBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIERldGVjdG9ySWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBkZXRlY3RvcklkOiBzdHJpbmc7XG5cdC8qKiBUaGUgRmlsdGVyTmFtZSBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGZpbHRlck5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIGlwc2V0IEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHdWFyZER1dHlJcHNldEFyblByb3BzIHtcblx0LyoqIFRoZSBEZXRlY3RvcklkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBkZXRlY3RvcklkOiBzdHJpbmc7XG5cdC8qKiBUaGUgSVBTZXRJZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgaXBTZXRJZDogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIGlwc2V0IEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHdWFyZER1dHlJcHNldEFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgRGV0ZWN0b3JJZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGRldGVjdG9ySWQ6IHN0cmluZztcblx0LyoqIFRoZSBJUFNldElkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgaXBTZXRJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgbWFsd2FyZXByb3RlY3Rpb25wbGFuIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHdWFyZER1dHlNYWx3YXJlcHJvdGVjdGlvbnBsYW5Bcm5Qcm9wcyB7XG5cdC8qKiBUaGUgTWFsd2FyZVByb3RlY3Rpb25QbGFuSWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IG1hbHdhcmVQcm90ZWN0aW9uUGxhbklkOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgbWFsd2FyZXByb3RlY3Rpb25wbGFuIEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHdWFyZER1dHlNYWx3YXJlcHJvdGVjdGlvbnBsYW5Bcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIE1hbHdhcmVQcm90ZWN0aW9uUGxhbklkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgbWFsd2FyZVByb3RlY3Rpb25QbGFuSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBidWlsZGluZyBhIHB1Ymxpc2hpbmdEZXN0aW5hdGlvbiBBUk4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3VhcmREdXR5UHVibGlzaGluZ0Rlc3RpbmF0aW9uQXJuUHJvcHMge1xuXHQvKiogVGhlIERldGVjdG9ySWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGRldGVjdG9ySWQ6IHN0cmluZztcblx0LyoqIFRoZSBQdWJsaXNoaW5nRGVzdGluYXRpb25JZCBjb21wb25lbnQgb2YgdGhlIEFSTi4gKi9cblx0cmVhZG9ubHkgcHVibGlzaGluZ0Rlc3RpbmF0aW9uSWQ6IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiBEZWZhdWx0cyB0byBcImF3c1wiLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2VkIGNvbXBvbmVudHMgb2YgYSBwdWJsaXNoaW5nRGVzdGluYXRpb24gQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEd1YXJkRHV0eVB1Ymxpc2hpbmdEZXN0aW5hdGlvbkFybkNvbXBvbmVudHMge1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiAqL1xuXHRyZWFkb25seSByZWdpb246IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiAqL1xuXHRyZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cdC8qKiBUaGUgRGV0ZWN0b3JJZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IGRldGVjdG9ySWQ6IHN0cmluZztcblx0LyoqIFRoZSBQdWJsaXNoaW5nRGVzdGluYXRpb25JZCBjb21wb25lbnQuICovXG5cdHJlYWRvbmx5IHB1Ymxpc2hpbmdEZXN0aW5hdGlvbklkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSB0aHJlYXRlbnRpdHlzZXQgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEd1YXJkRHV0eVRocmVhdGVudGl0eXNldEFyblByb3BzIHtcblx0LyoqIFRoZSBEZXRlY3RvcklkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSBkZXRlY3RvcklkOiBzdHJpbmc7XG5cdC8qKiBUaGUgVGhyZWF0RW50aXR5U2V0SWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IHRocmVhdEVudGl0eVNldElkOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgdGhyZWF0ZW50aXR5c2V0IEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHdWFyZER1dHlUaHJlYXRlbnRpdHlzZXRBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIERldGVjdG9ySWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBkZXRlY3RvcklkOiBzdHJpbmc7XG5cdC8qKiBUaGUgVGhyZWF0RW50aXR5U2V0SWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSB0aHJlYXRFbnRpdHlTZXRJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGJ1aWxkaW5nIGEgdGhyZWF0aW50ZWxzZXQgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEd1YXJkRHV0eVRocmVhdGludGVsc2V0QXJuUHJvcHMge1xuXHQvKiogVGhlIERldGVjdG9ySWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGRldGVjdG9ySWQ6IHN0cmluZztcblx0LyoqIFRoZSBUaHJlYXRJbnRlbFNldElkIGNvbXBvbmVudCBvZiB0aGUgQVJOLiAqL1xuXHRyZWFkb25seSB0aHJlYXRJbnRlbFNldElkOiBzdHJpbmc7XG5cdC8qKiBBV1MgcmVnaW9uLiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuIERlZmF1bHRzIHRvIFwiKlwiLiAqL1xuXHRyZWFkb25seSBhY2NvdW50Pzogc3RyaW5nO1xuXHQvKiogQVdTIHBhcnRpdGlvbi4gRGVmYXVsdHMgdG8gXCJhd3NcIi4gKi9cblx0cmVhZG9ubHkgcGFydGl0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlZCBjb21wb25lbnRzIG9mIGEgdGhyZWF0aW50ZWxzZXQgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEd1YXJkRHV0eVRocmVhdGludGVsc2V0QXJuQ29tcG9uZW50cyB7XG5cdC8qKiBBV1MgcGFydGl0aW9uLiAqL1xuXHRyZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcblx0LyoqIEFXUyByZWdpb24uICovXG5cdHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXHQvKiogQVdTIGFjY291bnQgSUQuICovXG5cdHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblx0LyoqIFRoZSBEZXRlY3RvcklkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgZGV0ZWN0b3JJZDogc3RyaW5nO1xuXHQvKiogVGhlIFRocmVhdEludGVsU2V0SWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSB0aHJlYXRJbnRlbFNldElkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYnVpbGRpbmcgYSB0cnVzdGVkZW50aXR5c2V0IEFSTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHdWFyZER1dHlUcnVzdGVkZW50aXR5c2V0QXJuUHJvcHMge1xuXHQvKiogVGhlIERldGVjdG9ySWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IGRldGVjdG9ySWQ6IHN0cmluZztcblx0LyoqIFRoZSBUcnVzdGVkRW50aXR5U2V0SWQgY29tcG9uZW50IG9mIHRoZSBBUk4uICovXG5cdHJlYWRvbmx5IHRydXN0ZWRFbnRpdHlTZXRJZDogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gRGVmYXVsdHMgdG8gXCIqXCIuICovXG5cdHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblx0LyoqIEFXUyBhY2NvdW50IElELiBEZWZhdWx0cyB0byBcIipcIi4gKi9cblx0cmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblx0LyoqIEFXUyBwYXJ0aXRpb24uIERlZmF1bHRzIHRvIFwiYXdzXCIuICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJzZWQgY29tcG9uZW50cyBvZiBhIHRydXN0ZWRlbnRpdHlzZXQgQVJOLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEd1YXJkRHV0eVRydXN0ZWRlbnRpdHlzZXRBcm5Db21wb25lbnRzIHtcblx0LyoqIEFXUyBwYXJ0aXRpb24uICovXG5cdHJlYWRvbmx5IHBhcnRpdGlvbjogc3RyaW5nO1xuXHQvKiogQVdTIHJlZ2lvbi4gKi9cblx0cmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cdC8qKiBBV1MgYWNjb3VudCBJRC4gKi9cblx0cmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXHQvKiogVGhlIERldGVjdG9ySWQgY29tcG9uZW50LiAqL1xuXHRyZWFkb25seSBkZXRlY3RvcklkOiBzdHJpbmc7XG5cdC8qKiBUaGUgVHJ1c3RlZEVudGl0eVNldElkIGNvbXBvbmVudC4gKi9cblx0cmVhZG9ubHkgdHJ1c3RlZEVudGl0eVNldElkOiBzdHJpbmc7XG59XG5cbmNvbnN0IEN1c3RvbWRldGVjdGlvbnJ1bGVBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6Z3VhcmRkdXR5Ojphd3M6ZGV0ZWN0aW9uLXJ1bGVcXC9jdXN0b21cXC8oPzxydWxlSWQ+W146Lz9dKykkLztcbmNvbnN0IEN1c3RvbWRldGVjdGlvbnJ1bGVhc3NvY2lhdGlvbkFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpndWFyZGR1dHk6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpkZXRlY3Rpb24tcnVsZVxcL2N1c3RvbVxcLyg/PHJ1bGVJZD5bXjovP10rKVxcL2Fzc29jaWF0aW9uXFwvKD88YXNzb2NpYXRpb25JZD5bXjovP10rKSQvO1xuY29uc3QgRGV0ZWN0b3JBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6Z3VhcmRkdXR5Oig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6ZGV0ZWN0b3JcXC8oPzxkZXRlY3RvcklkPlteOi8/XSspJC87XG5jb25zdCBGaWx0ZXJBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6Z3VhcmRkdXR5Oig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6ZGV0ZWN0b3JcXC8oPzxkZXRlY3RvcklkPlteOi8/XSspXFwvZmlsdGVyXFwvKD88ZmlsdGVyTmFtZT5bXjovP10rKSQvO1xuY29uc3QgSXBzZXRBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6Z3VhcmRkdXR5Oig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6ZGV0ZWN0b3JcXC8oPzxkZXRlY3RvcklkPlteOi8/XSspXFwvaXBzZXRcXC8oPzxpcFNldElkPlteOi8/XSspJC87XG5jb25zdCBNYWx3YXJlcHJvdGVjdGlvbnBsYW5Bcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6Z3VhcmRkdXR5Oig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6bWFsd2FyZS1wcm90ZWN0aW9uLXBsYW5cXC8oPzxtYWx3YXJlUHJvdGVjdGlvblBsYW5JZD5bXjovP10rKSQvO1xuY29uc3QgUHVibGlzaGluZ0Rlc3RpbmF0aW9uQXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmd1YXJkZHV0eTooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmRldGVjdG9yXFwvKD88ZGV0ZWN0b3JJZD5bXjovP10rKVxcL3B1Ymxpc2hpbmdkZXN0aW5hdGlvblxcLyg/PHB1Ymxpc2hpbmdEZXN0aW5hdGlvbklkPlteOi8/XSspJC87XG5jb25zdCBUaHJlYXRlbnRpdHlzZXRBcm5SZWdleCA9XG5cdC9eYXJuOig/PHBhcnRpdGlvbj5bXjpdKyk6Z3VhcmRkdXR5Oig/PHJlZ2lvbj5bXjpdKik6KD88YWNjb3VudD5bXjpdKik6ZGV0ZWN0b3JcXC8oPzxkZXRlY3RvcklkPlteOi8/XSspXFwvdGhyZWF0ZW50aXR5c2V0XFwvKD88dGhyZWF0RW50aXR5U2V0SWQ+W146Lz9dKykkLztcbmNvbnN0IFRocmVhdGludGVsc2V0QXJuUmVnZXggPVxuXHQvXmFybjooPzxwYXJ0aXRpb24+W146XSspOmd1YXJkZHV0eTooPzxyZWdpb24+W146XSopOig/PGFjY291bnQ+W146XSopOmRldGVjdG9yXFwvKD88ZGV0ZWN0b3JJZD5bXjovP10rKVxcL3RocmVhdGludGVsc2V0XFwvKD88dGhyZWF0SW50ZWxTZXRJZD5bXjovP10rKSQvO1xuY29uc3QgVHJ1c3RlZGVudGl0eXNldEFyblJlZ2V4ID1cblx0L15hcm46KD88cGFydGl0aW9uPlteOl0rKTpndWFyZGR1dHk6KD88cmVnaW9uPlteOl0qKTooPzxhY2NvdW50PlteOl0qKTpkZXRlY3RvclxcLyg/PGRldGVjdG9ySWQ+W146Lz9dKylcXC90cnVzdGVkZW50aXR5c2V0XFwvKD88dHJ1c3RlZEVudGl0eVNldElkPlteOi8/XSspJC87XG5cbi8qKlxuICogQVJOIGJ1aWxkZXJzLCB2YWxpZGF0b3JzLCBhbmQgcGFyc2VycyBmb3IgZ3VhcmRkdXR5IHJlc291cmNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEd1YXJkRHV0eVJlc291cmNlcyB7XG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgY3VzdG9tZGV0ZWN0aW9ucnVsZSByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBjdXN0b21kZXRlY3Rpb25ydWxlKFxuXHRcdHByb3BzOiBHdWFyZER1dHlDdXN0b21kZXRlY3Rpb25ydWxlQXJuUHJvcHMsXG5cdCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06Z3VhcmRkdXR5Ojphd3M6ZGV0ZWN0aW9uLXJ1bGUvY3VzdG9tLyR7cHJvcHMucnVsZUlkfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSBjdXN0b21kZXRlY3Rpb25ydWxlIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRDdXN0b21kZXRlY3Rpb25ydWxlQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEN1c3RvbWRldGVjdGlvbnJ1bGVBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgY3VzdG9tZGV0ZWN0aW9ucnVsZSBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VDdXN0b21kZXRlY3Rpb25ydWxlQXJuKFxuXHRcdGFybjogc3RyaW5nLFxuXHQpOiBHdWFyZER1dHlDdXN0b21kZXRlY3Rpb25ydWxlQXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBDdXN0b21kZXRlY3Rpb25ydWxlQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGN1c3RvbWRldGVjdGlvbnJ1bGUgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0cnVsZUlkOiBtYXRjaC5ncm91cHMhLnJ1bGVJZCxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBjdXN0b21kZXRlY3Rpb25ydWxlYXNzb2NpYXRpb24gcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgY3VzdG9tZGV0ZWN0aW9ucnVsZWFzc29jaWF0aW9uKFxuXHRcdHByb3BzOiBHdWFyZER1dHlDdXN0b21kZXRlY3Rpb25ydWxlYXNzb2NpYXRpb25Bcm5Qcm9wcyxcblx0KTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpndWFyZGR1dHk6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06ZGV0ZWN0aW9uLXJ1bGUvY3VzdG9tLyR7cHJvcHMucnVsZUlkfS9hc3NvY2lhdGlvbi8ke3Byb3BzLmFzc29jaWF0aW9uSWR9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGN1c3RvbWRldGVjdGlvbnJ1bGVhc3NvY2lhdGlvbiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkQ3VzdG9tZGV0ZWN0aW9ucnVsZWFzc29jaWF0aW9uQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEN1c3RvbWRldGVjdGlvbnJ1bGVhc3NvY2lhdGlvbkFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBjdXN0b21kZXRlY3Rpb25ydWxlYXNzb2NpYXRpb24gQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlQ3VzdG9tZGV0ZWN0aW9ucnVsZWFzc29jaWF0aW9uQXJuKFxuXHRcdGFybjogc3RyaW5nLFxuXHQpOiBHdWFyZER1dHlDdXN0b21kZXRlY3Rpb25ydWxlYXNzb2NpYXRpb25Bcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IEN1c3RvbWRldGVjdGlvbnJ1bGVhc3NvY2lhdGlvbkFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBjdXN0b21kZXRlY3Rpb25ydWxlYXNzb2NpYXRpb24gQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0cnVsZUlkOiBtYXRjaC5ncm91cHMhLnJ1bGVJZCxcblx0XHRcdGFzc29jaWF0aW9uSWQ6IG1hdGNoLmdyb3VwcyEuYXNzb2NpYXRpb25JZCxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBkZXRlY3RvciByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBkZXRlY3Rvcihwcm9wczogR3VhcmREdXR5RGV0ZWN0b3JBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06Z3VhcmRkdXR5OiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OmRldGVjdG9yLyR7cHJvcHMuZGV0ZWN0b3JJZH1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgZGV0ZWN0b3IgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZERldGVjdG9yQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIERldGVjdG9yQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIGRldGVjdG9yIEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZURldGVjdG9yQXJuKGFybjogc3RyaW5nKTogR3VhcmREdXR5RGV0ZWN0b3JBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IERldGVjdG9yQXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRldGVjdG9yIEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGRldGVjdG9ySWQ6IG1hdGNoLmdyb3VwcyEuZGV0ZWN0b3JJZCxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSBmaWx0ZXIgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgZmlsdGVyKHByb3BzOiBHdWFyZER1dHlGaWx0ZXJBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06Z3VhcmRkdXR5OiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OmRldGVjdG9yLyR7cHJvcHMuZGV0ZWN0b3JJZH0vZmlsdGVyLyR7cHJvcHMuZmlsdGVyTmFtZX1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgZmlsdGVyIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRGaWx0ZXJBcm4oYXJuOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gRmlsdGVyQXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIGZpbHRlciBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VGaWx0ZXJBcm4oYXJuOiBzdHJpbmcpOiBHdWFyZER1dHlGaWx0ZXJBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IEZpbHRlckFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBmaWx0ZXIgQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0ZGV0ZWN0b3JJZDogbWF0Y2guZ3JvdXBzIS5kZXRlY3RvcklkLFxuXHRcdFx0ZmlsdGVyTmFtZTogbWF0Y2guZ3JvdXBzIS5maWx0ZXJOYW1lLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIGlwc2V0IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlwc2V0KHByb3BzOiBHdWFyZER1dHlJcHNldEFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpndWFyZGR1dHk6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06ZGV0ZWN0b3IvJHtwcm9wcy5kZXRlY3RvcklkfS9pcHNldC8ke3Byb3BzLmlwU2V0SWR9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIGlwc2V0IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRJcHNldEFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBJcHNldEFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBpcHNldCBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VJcHNldEFybihhcm46IHN0cmluZyk6IEd1YXJkRHV0eUlwc2V0QXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBJcHNldEFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBpcHNldCBBUk46ICR7YXJufWApO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0cGFydGl0aW9uOiBtYXRjaC5ncm91cHMucGFydGl0aW9uLFxuXHRcdFx0cmVnaW9uOiBtYXRjaC5ncm91cHMucmVnaW9uLFxuXHRcdFx0YWNjb3VudDogbWF0Y2guZ3JvdXBzLmFjY291bnQsXG5cdFx0XHRkZXRlY3RvcklkOiBtYXRjaC5ncm91cHMhLmRldGVjdG9ySWQsXG5cdFx0XHRpcFNldElkOiBtYXRjaC5ncm91cHMhLmlwU2V0SWQsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgbWFsd2FyZXByb3RlY3Rpb25wbGFuIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIG1hbHdhcmVwcm90ZWN0aW9ucGxhbihcblx0XHRwcm9wczogR3VhcmREdXR5TWFsd2FyZXByb3RlY3Rpb25wbGFuQXJuUHJvcHMsXG5cdCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06Z3VhcmRkdXR5OiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9Om1hbHdhcmUtcHJvdGVjdGlvbi1wbGFuLyR7cHJvcHMubWFsd2FyZVByb3RlY3Rpb25QbGFuSWR9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIG1hbHdhcmVwcm90ZWN0aW9ucGxhbiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkTWFsd2FyZXByb3RlY3Rpb25wbGFuQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIE1hbHdhcmVwcm90ZWN0aW9ucGxhbkFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBtYWx3YXJlcHJvdGVjdGlvbnBsYW4gQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlTWFsd2FyZXByb3RlY3Rpb25wbGFuQXJuKFxuXHRcdGFybjogc3RyaW5nLFxuXHQpOiBHdWFyZER1dHlNYWx3YXJlcHJvdGVjdGlvbnBsYW5Bcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IE1hbHdhcmVwcm90ZWN0aW9ucGxhbkFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBtYWx3YXJlcHJvdGVjdGlvbnBsYW4gQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0bWFsd2FyZVByb3RlY3Rpb25QbGFuSWQ6IG1hdGNoLmdyb3VwcyEubWFsd2FyZVByb3RlY3Rpb25QbGFuSWQsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgcHVibGlzaGluZ0Rlc3RpbmF0aW9uIHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIHB1Ymxpc2hpbmdEZXN0aW5hdGlvbihcblx0XHRwcm9wczogR3VhcmREdXR5UHVibGlzaGluZ0Rlc3RpbmF0aW9uQXJuUHJvcHMsXG5cdCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06Z3VhcmRkdXR5OiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OmRldGVjdG9yLyR7cHJvcHMuZGV0ZWN0b3JJZH0vcHVibGlzaGluZ2Rlc3RpbmF0aW9uLyR7cHJvcHMucHVibGlzaGluZ0Rlc3RpbmF0aW9uSWR9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIHB1Ymxpc2hpbmdEZXN0aW5hdGlvbiByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkUHVibGlzaGluZ0Rlc3RpbmF0aW9uQXJuKGFybjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIFB1Ymxpc2hpbmdEZXN0aW5hdGlvbkFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSBwdWJsaXNoaW5nRGVzdGluYXRpb24gQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlUHVibGlzaGluZ0Rlc3RpbmF0aW9uQXJuKFxuXHRcdGFybjogc3RyaW5nLFxuXHQpOiBHdWFyZER1dHlQdWJsaXNoaW5nRGVzdGluYXRpb25Bcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IFB1Ymxpc2hpbmdEZXN0aW5hdGlvbkFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwdWJsaXNoaW5nRGVzdGluYXRpb24gQVJOOiAke2Fybn1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHBhcnRpdGlvbjogbWF0Y2guZ3JvdXBzLnBhcnRpdGlvbixcblx0XHRcdHJlZ2lvbjogbWF0Y2guZ3JvdXBzLnJlZ2lvbixcblx0XHRcdGFjY291bnQ6IG1hdGNoLmdyb3Vwcy5hY2NvdW50LFxuXHRcdFx0ZGV0ZWN0b3JJZDogbWF0Y2guZ3JvdXBzIS5kZXRlY3RvcklkLFxuXHRcdFx0cHVibGlzaGluZ0Rlc3RpbmF0aW9uSWQ6IG1hdGNoLmdyb3VwcyEucHVibGlzaGluZ0Rlc3RpbmF0aW9uSWQsXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZHMgYW4gQVJOIGZvciB0aGUgdGhyZWF0ZW50aXR5c2V0IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIHRocmVhdGVudGl0eXNldChwcm9wczogR3VhcmREdXR5VGhyZWF0ZW50aXR5c2V0QXJuUHJvcHMpOiBzdHJpbmcge1xuXHRcdHJldHVybiBgYXJuOiR7cHJvcHMucGFydGl0aW9uID8/IFwiYXdzXCJ9Omd1YXJkZHV0eToke3Byb3BzLnJlZ2lvbiA/PyBcIipcIn06JHtwcm9wcy5hY2NvdW50ID8/IFwiKlwifTpkZXRlY3Rvci8ke3Byb3BzLmRldGVjdG9ySWR9L3RocmVhdGVudGl0eXNldC8ke3Byb3BzLnRocmVhdEVudGl0eVNldElkfWA7XG5cdH1cblxuXHQvKipcblx0ICogVmFsaWRhdGVzIHdoZXRoZXIgYSBzdHJpbmcgaXMgYSB2YWxpZCBBUk4gZm9yIHRoZSB0aHJlYXRlbnRpdHlzZXQgcmVzb3VyY2UuXG5cdCAqL1xuXHRzdGF0aWMgaXNWYWxpZFRocmVhdGVudGl0eXNldEFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBUaHJlYXRlbnRpdHlzZXRBcm5SZWdleC50ZXN0KGFybik7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2VzIGEgdGhyZWF0ZW50aXR5c2V0IEFSTiBpbnRvIGl0cyBjb21wb25lbnRzLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBBUk4gZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC5cblx0ICovXG5cdHN0YXRpYyBwYXJzZVRocmVhdGVudGl0eXNldEFybihcblx0XHRhcm46IHN0cmluZyxcblx0KTogR3VhcmREdXR5VGhyZWF0ZW50aXR5c2V0QXJuQ29tcG9uZW50cyB7XG5cdFx0Y29uc3QgbWF0Y2ggPSBUaHJlYXRlbnRpdHlzZXRBcm5SZWdleC5leGVjKGFybik7XG5cdFx0aWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGhyZWF0ZW50aXR5c2V0IEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGRldGVjdG9ySWQ6IG1hdGNoLmdyb3VwcyEuZGV0ZWN0b3JJZCxcblx0XHRcdHRocmVhdEVudGl0eVNldElkOiBtYXRjaC5ncm91cHMhLnRocmVhdEVudGl0eVNldElkLFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQnVpbGRzIGFuIEFSTiBmb3IgdGhlIHRocmVhdGludGVsc2V0IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIHRocmVhdGludGVsc2V0KHByb3BzOiBHdWFyZER1dHlUaHJlYXRpbnRlbHNldEFyblByb3BzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYGFybjoke3Byb3BzLnBhcnRpdGlvbiA/PyBcImF3c1wifTpndWFyZGR1dHk6JHtwcm9wcy5yZWdpb24gPz8gXCIqXCJ9OiR7cHJvcHMuYWNjb3VudCA/PyBcIipcIn06ZGV0ZWN0b3IvJHtwcm9wcy5kZXRlY3RvcklkfS90aHJlYXRpbnRlbHNldC8ke3Byb3BzLnRocmVhdEludGVsU2V0SWR9YDtcblx0fVxuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEFSTiBmb3IgdGhlIHRocmVhdGludGVsc2V0IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRUaHJlYXRpbnRlbHNldEFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBUaHJlYXRpbnRlbHNldEFyblJlZ2V4LnRlc3QoYXJuKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgYSB0aHJlYXRpbnRlbHNldCBBUk4gaW50byBpdHMgY29tcG9uZW50cy5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgQVJOIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuXG5cdCAqL1xuXHRzdGF0aWMgcGFyc2VUaHJlYXRpbnRlbHNldEFybihcblx0XHRhcm46IHN0cmluZyxcblx0KTogR3VhcmREdXR5VGhyZWF0aW50ZWxzZXRBcm5Db21wb25lbnRzIHtcblx0XHRjb25zdCBtYXRjaCA9IFRocmVhdGludGVsc2V0QXJuUmVnZXguZXhlYyhhcm4pO1xuXHRcdGlmICghbWF0Y2g/Lmdyb3Vwcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRocmVhdGludGVsc2V0IEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGRldGVjdG9ySWQ6IG1hdGNoLmdyb3VwcyEuZGV0ZWN0b3JJZCxcblx0XHRcdHRocmVhdEludGVsU2V0SWQ6IG1hdGNoLmdyb3VwcyEudGhyZWF0SW50ZWxTZXRJZCxcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEJ1aWxkcyBhbiBBUk4gZm9yIHRoZSB0cnVzdGVkZW50aXR5c2V0IHJlc291cmNlLlxuXHQgKi9cblx0c3RhdGljIHRydXN0ZWRlbnRpdHlzZXQocHJvcHM6IEd1YXJkRHV0eVRydXN0ZWRlbnRpdHlzZXRBcm5Qcm9wcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGBhcm46JHtwcm9wcy5wYXJ0aXRpb24gPz8gXCJhd3NcIn06Z3VhcmRkdXR5OiR7cHJvcHMucmVnaW9uID8/IFwiKlwifToke3Byb3BzLmFjY291bnQgPz8gXCIqXCJ9OmRldGVjdG9yLyR7cHJvcHMuZGV0ZWN0b3JJZH0vdHJ1c3RlZGVudGl0eXNldC8ke3Byb3BzLnRydXN0ZWRFbnRpdHlTZXRJZH1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgQVJOIGZvciB0aGUgdHJ1c3RlZGVudGl0eXNldCByZXNvdXJjZS5cblx0ICovXG5cdHN0YXRpYyBpc1ZhbGlkVHJ1c3RlZGVudGl0eXNldEFybihhcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBUcnVzdGVkZW50aXR5c2V0QXJuUmVnZXgudGVzdChhcm4pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIHRydXN0ZWRlbnRpdHlzZXQgQVJOIGludG8gaXRzIGNvbXBvbmVudHMuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEFSTiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LlxuXHQgKi9cblx0c3RhdGljIHBhcnNlVHJ1c3RlZGVudGl0eXNldEFybihcblx0XHRhcm46IHN0cmluZyxcblx0KTogR3VhcmREdXR5VHJ1c3RlZGVudGl0eXNldEFybkNvbXBvbmVudHMge1xuXHRcdGNvbnN0IG1hdGNoID0gVHJ1c3RlZGVudGl0eXNldEFyblJlZ2V4LmV4ZWMoYXJuKTtcblx0XHRpZiAoIW1hdGNoPy5ncm91cHMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0cnVzdGVkZW50aXR5c2V0IEFSTjogJHthcm59YCk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRwYXJ0aXRpb246IG1hdGNoLmdyb3Vwcy5wYXJ0aXRpb24sXG5cdFx0XHRyZWdpb246IG1hdGNoLmdyb3Vwcy5yZWdpb24sXG5cdFx0XHRhY2NvdW50OiBtYXRjaC5ncm91cHMuYWNjb3VudCxcblx0XHRcdGRldGVjdG9ySWQ6IG1hdGNoLmdyb3VwcyEuZGV0ZWN0b3JJZCxcblx0XHRcdHRydXN0ZWRFbnRpdHlTZXRJZDogbWF0Y2guZ3JvdXBzIS50cnVzdGVkRW50aXR5U2V0SWQsXG5cdFx0fTtcblx0fVxufVxuXG4vKipcbiAqIEFQSSBvcGVyYXRpb24gdG8gcmVxdWlyZWQgSUFNIGFjdGlvbnMgbWFwcGluZyBmb3IgZ3VhcmRkdXR5LlxuICovXG5leHBvcnQgY2xhc3MgR3VhcmREdXR5T3BlcmF0aW9ucyB7XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEFjY2VwdEFkbWluaXN0cmF0b3JJbnZpdGF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQWNjZXB0QWRtaW5pc3RyYXRvckludml0YXRpb246IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OkFjY2VwdEFkbWluaXN0cmF0b3JJbnZpdGF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEFjY2VwdEludml0YXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBBY2NlcHRJbnZpdGF0aW9uOiBzdHJpbmdbXSA9IFtcImd1YXJkZHV0eTpBY2NlcHRJbnZpdGF0aW9uXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBBcmNoaXZlRmluZGluZ3MgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBBcmNoaXZlRmluZGluZ3M6IHN0cmluZ1tdID0gW1wiZ3VhcmRkdXR5OkFyY2hpdmVGaW5kaW5nc1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlQ3VzdG9tRGV0ZWN0aW9uUnVsZUFzc29jaWF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlQ3VzdG9tRGV0ZWN0aW9uUnVsZUFzc29jaWF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpDcmVhdGVDdXN0b21EZXRlY3Rpb25SdWxlQXNzb2NpYXRpb25cIixcblx0XHRcImd1YXJkZHV0eTpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVDdXN0b21EZXRlY3Rpb25SdWxlT3JnQ29uZmlndXJhdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUN1c3RvbURldGVjdGlvblJ1bGVPcmdDb25maWd1cmF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpDcmVhdGVDdXN0b21EZXRlY3Rpb25SdWxlT3JnQ29uZmlndXJhdGlvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVEZXRlY3RvciBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZURldGVjdG9yOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpDcmVhdGVEZXRlY3RvclwiLFxuXHRcdFwiZ3VhcmRkdXR5OlRhZ1Jlc291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZUZpbHRlciBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUZpbHRlcjogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6Q3JlYXRlRmlsdGVyXCIsXG5cdFx0XCJndWFyZGR1dHk6VGFnUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlSVBTZXQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVJUFNldDogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6Q3JlYXRlSVBTZXRcIixcblx0XHRcImd1YXJkZHV0eTpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVJbnZlc3RpZ2F0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlSW52ZXN0aWdhdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6Q3JlYXRlSW52ZXN0aWdhdGlvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVNYWx3YXJlUHJvdGVjdGlvblBsYW4gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVNYWx3YXJlUHJvdGVjdGlvblBsYW46IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OkNyZWF0ZU1hbHdhcmVQcm90ZWN0aW9uUGxhblwiLFxuXHRcdFwiaWFtOlBhc3NSb2xlXCIsXG5cdFx0XCJndWFyZGR1dHk6VGFnUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlTWVtYmVycyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZU1lbWJlcnM6IHN0cmluZ1tdID0gW1wiZ3VhcmRkdXR5OkNyZWF0ZU1lbWJlcnNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZVB1Ymxpc2hpbmdEZXN0aW5hdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVB1Ymxpc2hpbmdEZXN0aW5hdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6Q3JlYXRlUHVibGlzaGluZ0Rlc3RpbmF0aW9uXCIsXG5cdFx0XCJndWFyZGR1dHk6VGFnUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlU2FtcGxlRmluZGluZ3MgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVTYW1wbGVGaW5kaW5nczogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6Q3JlYXRlU2FtcGxlRmluZGluZ3NcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgQ3JlYXRlVGhyZWF0RW50aXR5U2V0IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlVGhyZWF0RW50aXR5U2V0OiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpDcmVhdGVUaHJlYXRFbnRpdHlTZXRcIixcblx0XHRcImd1YXJkZHV0eTpUYWdSZXNvdXJjZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBDcmVhdGVUaHJlYXRJbnRlbFNldCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZVRocmVhdEludGVsU2V0OiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpDcmVhdGVUaHJlYXRJbnRlbFNldFwiLFxuXHRcdFwiZ3VhcmRkdXR5OlRhZ1Jlc291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIENyZWF0ZVRydXN0ZWRFbnRpdHlTZXQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVUcnVzdGVkRW50aXR5U2V0OiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpDcmVhdGVUcnVzdGVkRW50aXR5U2V0XCIsXG5cdFx0XCJndWFyZGR1dHk6VGFnUmVzb3VyY2VcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVjbGluZUludml0YXRpb25zIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVjbGluZUludml0YXRpb25zOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpEZWNsaW5lSW52aXRhdGlvbnNcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlQ3VzdG9tRGV0ZWN0aW9uUnVsZUFzc29jaWF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlQ3VzdG9tRGV0ZWN0aW9uUnVsZUFzc29jaWF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpEZWxldGVDdXN0b21EZXRlY3Rpb25SdWxlQXNzb2NpYXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlQ3VzdG9tRGV0ZWN0aW9uUnVsZU9yZ0NvbmZpZ3VyYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVDdXN0b21EZXRlY3Rpb25SdWxlT3JnQ29uZmlndXJhdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6RGVsZXRlQ3VzdG9tRGV0ZWN0aW9uUnVsZU9yZ0NvbmZpZ3VyYXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlRGV0ZWN0b3IgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVEZXRlY3Rvcjogc3RyaW5nW10gPSBbXCJndWFyZGR1dHk6RGVsZXRlRGV0ZWN0b3JcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZUZpbHRlciBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUZpbHRlcjogc3RyaW5nW10gPSBbXCJndWFyZGR1dHk6RGVsZXRlRmlsdGVyXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVJUFNldCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZUlQU2V0OiBzdHJpbmdbXSA9IFtcImd1YXJkZHV0eTpEZWxldGVJUFNldFwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgRGVsZXRlSW52aXRhdGlvbnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVJbnZpdGF0aW9uczogc3RyaW5nW10gPSBbXCJndWFyZGR1dHk6RGVsZXRlSW52aXRhdGlvbnNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZU1hbHdhcmVQcm90ZWN0aW9uUGxhbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZU1hbHdhcmVQcm90ZWN0aW9uUGxhbjogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6RGVsZXRlTWFsd2FyZVByb3RlY3Rpb25QbGFuXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIERlbGV0ZU1lbWJlcnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVNZW1iZXJzOiBzdHJpbmdbXSA9IFtcImd1YXJkZHV0eTpEZWxldGVNZW1iZXJzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVQdWJsaXNoaW5nRGVzdGluYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVQdWJsaXNoaW5nRGVzdGluYXRpb246IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OkRlbGV0ZVB1Ymxpc2hpbmdEZXN0aW5hdGlvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVUaHJlYXRFbnRpdHlTZXQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZWxldGVUaHJlYXRFbnRpdHlTZXQ6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OkRlbGV0ZVRocmVhdEVudGl0eVNldFwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVUaHJlYXRJbnRlbFNldCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlbGV0ZVRocmVhdEludGVsU2V0OiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpEZWxldGVUaHJlYXRJbnRlbFNldFwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZWxldGVUcnVzdGVkRW50aXR5U2V0IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGVsZXRlVHJ1c3RlZEVudGl0eVNldDogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6RGVsZXRlVHJ1c3RlZEVudGl0eVNldFwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZXNjcmliZU1hbHdhcmVTY2FucyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlTWFsd2FyZVNjYW5zOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpEZXNjcmliZU1hbHdhcmVTY2Fuc1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZXNjcmliZU9yZ2FuaXphdGlvbkNvbmZpZ3VyYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEZXNjcmliZU9yZ2FuaXphdGlvbkNvbmZpZ3VyYXRpb246IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OkRlc2NyaWJlT3JnYW5pemF0aW9uQ29uZmlndXJhdGlvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEZXNjcmliZVB1Ymxpc2hpbmdEZXN0aW5hdGlvbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERlc2NyaWJlUHVibGlzaGluZ0Rlc3RpbmF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpEZXNjcmliZVB1Ymxpc2hpbmdEZXN0aW5hdGlvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEaXNhYmxlT3JnYW5pemF0aW9uQWRtaW5BY2NvdW50IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGlzYWJsZU9yZ2FuaXphdGlvbkFkbWluQWNjb3VudDogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6RGlzYWJsZU9yZ2FuaXphdGlvbkFkbWluQWNjb3VudFwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEaXNhc3NvY2lhdGVGcm9tQWRtaW5pc3RyYXRvckFjY291bnQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBEaXNhc3NvY2lhdGVGcm9tQWRtaW5pc3RyYXRvckFjY291bnQ6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OkRpc2Fzc29jaWF0ZUZyb21BZG1pbmlzdHJhdG9yQWNjb3VudFwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEaXNhc3NvY2lhdGVGcm9tTWFzdGVyQWNjb3VudCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IERpc2Fzc29jaWF0ZUZyb21NYXN0ZXJBY2NvdW50OiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpEaXNhc3NvY2lhdGVGcm9tTWFzdGVyQWNjb3VudFwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBEaXNhc3NvY2lhdGVNZW1iZXJzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgRGlzYXNzb2NpYXRlTWVtYmVyczogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6RGlzYXNzb2NpYXRlTWVtYmVyc1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBFbmFibGVPcmdhbml6YXRpb25BZG1pbkFjY291bnQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBFbmFibGVPcmdhbml6YXRpb25BZG1pbkFjY291bnQ6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OkVuYWJsZU9yZ2FuaXphdGlvbkFkbWluQWNjb3VudFwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRBZG1pbmlzdHJhdG9yQWNjb3VudCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0QWRtaW5pc3RyYXRvckFjY291bnQ6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OkdldEFkbWluaXN0cmF0b3JBY2NvdW50XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldENvdmVyYWdlU3RhdGlzdGljcyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0Q292ZXJhZ2VTdGF0aXN0aWNzOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpHZXRDb3ZlcmFnZVN0YXRpc3RpY3NcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0Q3VzdG9tRGV0ZWN0aW9uUnVsZSBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0Q3VzdG9tRGV0ZWN0aW9uUnVsZTogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6R2V0Q3VzdG9tRGV0ZWN0aW9uUnVsZVwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRDdXN0b21EZXRlY3Rpb25SdWxlQXNzb2NpYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldEN1c3RvbURldGVjdGlvblJ1bGVBc3NvY2lhdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6R2V0Q3VzdG9tRGV0ZWN0aW9uUnVsZUFzc29jaWF0aW9uXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldEN1c3RvbURldGVjdGlvblJ1bGVPcmdDb25maWd1cmF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRDdXN0b21EZXRlY3Rpb25SdWxlT3JnQ29uZmlndXJhdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6R2V0Q3VzdG9tRGV0ZWN0aW9uUnVsZU9yZ0NvbmZpZ3VyYXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0RGV0ZWN0b3IgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldERldGVjdG9yOiBzdHJpbmdbXSA9IFtcImd1YXJkZHV0eTpHZXREZXRlY3RvclwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0RmlsdGVyIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRGaWx0ZXI6IHN0cmluZ1tdID0gW1wiZ3VhcmRkdXR5OkdldEZpbHRlclwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0RmluZGluZ3MgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldEZpbmRpbmdzOiBzdHJpbmdbXSA9IFtcImd1YXJkZHV0eTpHZXRGaW5kaW5nc1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0RmluZGluZ3NTdGF0aXN0aWNzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRGaW5kaW5nc1N0YXRpc3RpY3M6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OkdldEZpbmRpbmdzU3RhdGlzdGljc1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRJUFNldCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0SVBTZXQ6IHN0cmluZ1tdID0gW1wiZ3VhcmRkdXR5OkdldElQU2V0XCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRJbnZlc3RpZ2F0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRJbnZlc3RpZ2F0aW9uOiBzdHJpbmdbXSA9IFtcImd1YXJkZHV0eTpHZXRJbnZlc3RpZ2F0aW9uXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRJbnZpdGF0aW9uc0NvdW50IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRJbnZpdGF0aW9uc0NvdW50OiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpHZXRJbnZpdGF0aW9uc0NvdW50XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldE1hbHdhcmVQcm90ZWN0aW9uUGxhbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0TWFsd2FyZVByb3RlY3Rpb25QbGFuOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpHZXRNYWx3YXJlUHJvdGVjdGlvblBsYW5cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0TWFsd2FyZVNjYW4gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldE1hbHdhcmVTY2FuOiBzdHJpbmdbXSA9IFtcImd1YXJkZHV0eTpHZXRNYWx3YXJlU2NhblwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0TWFsd2FyZVNjYW5TZXR0aW5ncyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0TWFsd2FyZVNjYW5TZXR0aW5nczogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6R2V0TWFsd2FyZVNjYW5TZXR0aW5nc1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRNYXN0ZXJBY2NvdW50IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRNYXN0ZXJBY2NvdW50OiBzdHJpbmdbXSA9IFtcImd1YXJkZHV0eTpHZXRNYXN0ZXJBY2NvdW50XCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRNZW1iZXJEZXRlY3RvcnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldE1lbWJlckRldGVjdG9yczogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6R2V0TWVtYmVyRGV0ZWN0b3JzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldE1lbWJlcnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldE1lbWJlcnM6IHN0cmluZ1tdID0gW1wiZ3VhcmRkdXR5OkdldE1lbWJlcnNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldE9yZ2FuaXphdGlvblN0YXRpc3RpY3MgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldE9yZ2FuaXphdGlvblN0YXRpc3RpY3M6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OkdldE9yZ2FuaXphdGlvblN0YXRpc3RpY3NcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0UmVtYWluaW5nRnJlZVRyaWFsRGF5cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0UmVtYWluaW5nRnJlZVRyaWFsRGF5czogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6R2V0UmVtYWluaW5nRnJlZVRyaWFsRGF5c1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRUaHJlYXRFbnRpdHlTZXQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldFRocmVhdEVudGl0eVNldDogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6R2V0VGhyZWF0RW50aXR5U2V0XCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEdldFRocmVhdEludGVsU2V0IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgb3BHZXRUaHJlYXRJbnRlbFNldDogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6R2V0VGhyZWF0SW50ZWxTZXRcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgR2V0VHJ1c3RlZEVudGl0eVNldCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IG9wR2V0VHJ1c3RlZEVudGl0eVNldDogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6R2V0VHJ1c3RlZEVudGl0eVNldFwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBHZXRVc2FnZVN0YXRpc3RpY3MgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBvcEdldFVzYWdlU3RhdGlzdGljczogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6R2V0VXNhZ2VTdGF0aXN0aWNzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIEludml0ZU1lbWJlcnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBJbnZpdGVNZW1iZXJzOiBzdHJpbmdbXSA9IFtcImd1YXJkZHV0eTpJbnZpdGVNZW1iZXJzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0Q292ZXJhZ2UgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0Q292ZXJhZ2U6IHN0cmluZ1tdID0gW1wiZ3VhcmRkdXR5Okxpc3RDb3ZlcmFnZVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdEN1c3RvbURldGVjdGlvblJ1bGVBc3NvY2lhdGlvbnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0Q3VzdG9tRGV0ZWN0aW9uUnVsZUFzc29jaWF0aW9uczogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6TGlzdEN1c3RvbURldGVjdGlvblJ1bGVBc3NvY2lhdGlvbnNcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdEN1c3RvbURldGVjdGlvblJ1bGVPcmdDb25maWd1cmF0aW9ucyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RDdXN0b21EZXRlY3Rpb25SdWxlT3JnQ29uZmlndXJhdGlvbnM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5Okxpc3RDdXN0b21EZXRlY3Rpb25SdWxlT3JnQ29uZmlndXJhdGlvbnNcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdEN1c3RvbURldGVjdGlvblJ1bGVzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEN1c3RvbURldGVjdGlvblJ1bGVzOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpMaXN0Q3VzdG9tRGV0ZWN0aW9uUnVsZXNcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdERldGVjdG9ycyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3REZXRlY3RvcnM6IHN0cmluZ1tdID0gW1wiZ3VhcmRkdXR5Okxpc3REZXRlY3RvcnNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RGaWx0ZXJzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdEZpbHRlcnM6IHN0cmluZ1tdID0gW1wiZ3VhcmRkdXR5Okxpc3RGaWx0ZXJzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0RmluZGluZ3MgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0RmluZGluZ3M6IHN0cmluZ1tdID0gW1wiZ3VhcmRkdXR5Okxpc3RGaW5kaW5nc1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdElQU2V0cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RJUFNldHM6IHN0cmluZ1tdID0gW1wiZ3VhcmRkdXR5Okxpc3RJUFNldHNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RJbnZlc3RpZ2F0aW9ucyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RJbnZlc3RpZ2F0aW9uczogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6TGlzdEludmVzdGlnYXRpb25zXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RJbnZpdGF0aW9ucyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RJbnZpdGF0aW9uczogc3RyaW5nW10gPSBbXCJndWFyZGR1dHk6TGlzdEludml0YXRpb25zXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0TWFsd2FyZVByb3RlY3Rpb25QbGFucyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RNYWx3YXJlUHJvdGVjdGlvblBsYW5zOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpMaXN0TWFsd2FyZVByb3RlY3Rpb25QbGFuc1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBMaXN0TWFsd2FyZVNjYW5zIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdE1hbHdhcmVTY2Fuczogc3RyaW5nW10gPSBbXCJndWFyZGR1dHk6TGlzdE1hbHdhcmVTY2Fuc1wiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgTGlzdE1lbWJlcnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0TWVtYmVyczogc3RyaW5nW10gPSBbXCJndWFyZGR1dHk6TGlzdE1lbWJlcnNcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RPcmdhbml6YXRpb25BZG1pbkFjY291bnRzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdE9yZ2FuaXphdGlvbkFkbWluQWNjb3VudHM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5Okxpc3RPcmdhbml6YXRpb25BZG1pbkFjY291bnRzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RQdWJsaXNoaW5nRGVzdGluYXRpb25zIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFB1Ymxpc2hpbmdEZXN0aW5hdGlvbnM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5Okxpc3RQdWJsaXNoaW5nRGVzdGluYXRpb25zXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RUYWdzRm9yUmVzb3VyY2UgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0VGFnc0ZvclJlc291cmNlOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpMaXN0VGFnc0ZvclJlc291cmNlXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RUaHJlYXRFbnRpdHlTZXRzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgTGlzdFRocmVhdEVudGl0eVNldHM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5Okxpc3RUaHJlYXRFbnRpdHlTZXRzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RUaHJlYXRJbnRlbFNldHMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBMaXN0VGhyZWF0SW50ZWxTZXRzOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpMaXN0VGhyZWF0SW50ZWxTZXRzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIExpc3RUcnVzdGVkRW50aXR5U2V0cyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IExpc3RUcnVzdGVkRW50aXR5U2V0czogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6TGlzdFRydXN0ZWRFbnRpdHlTZXRzXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFNlbmRPYmplY3RNYWx3YXJlU2NhbiBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFNlbmRPYmplY3RNYWx3YXJlU2Nhbjogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6U2VuZE9iamVjdE1hbHdhcmVTY2FuXCIsXG5cdF07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFN0YXJ0TWFsd2FyZVNjYW4gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBTdGFydE1hbHdhcmVTY2FuOiBzdHJpbmdbXSA9IFtcblx0XHRcImlhbTpQYXNzUm9sZVwiLFxuXHRcdFwiZ3VhcmRkdXR5OlN0YXJ0TWFsd2FyZVNjYW5cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgU3RhcnRNb25pdG9yaW5nTWVtYmVycyBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFN0YXJ0TW9uaXRvcmluZ01lbWJlcnM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OlN0YXJ0TW9uaXRvcmluZ01lbWJlcnNcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgU3RvcE1vbml0b3JpbmdNZW1iZXJzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgU3RvcE1vbml0b3JpbmdNZW1iZXJzOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpTdG9wTW9uaXRvcmluZ01lbWJlcnNcIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVGFnUmVzb3VyY2UgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBUYWdSZXNvdXJjZTogc3RyaW5nW10gPSBbXCJndWFyZGR1dHk6VGFnUmVzb3VyY2VcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVuYXJjaGl2ZUZpbmRpbmdzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVW5hcmNoaXZlRmluZGluZ3M6IHN0cmluZ1tdID0gW1wiZ3VhcmRkdXR5OlVuYXJjaGl2ZUZpbmRpbmdzXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVbnRhZ1Jlc291cmNlIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVW50YWdSZXNvdXJjZTogc3RyaW5nW10gPSBbXCJndWFyZGR1dHk6VW50YWdSZXNvdXJjZVwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVXBkYXRlQ3VzdG9tRGV0ZWN0aW9uUnVsZUFzc29jaWF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlQ3VzdG9tRGV0ZWN0aW9uUnVsZUFzc29jaWF0aW9uOiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpVcGRhdGVDdXN0b21EZXRlY3Rpb25SdWxlQXNzb2NpYXRpb25cIixcblx0XTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVXBkYXRlQ3VzdG9tRGV0ZWN0aW9uUnVsZU9yZ0NvbmZpZ3VyYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVDdXN0b21EZXRlY3Rpb25SdWxlT3JnQ29uZmlndXJhdGlvbjogc3RyaW5nW10gPSBbXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVXBkYXRlRGV0ZWN0b3IgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVEZXRlY3Rvcjogc3RyaW5nW10gPSBbXCJndWFyZGR1dHk6VXBkYXRlRGV0ZWN0b3JcIl07XG5cdC8qKiBJQU0gYWN0aW9ucyByZXF1aXJlZCBmb3IgdGhlIFVwZGF0ZUZpbHRlciBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUZpbHRlcjogc3RyaW5nW10gPSBbXCJndWFyZGR1dHk6VXBkYXRlRmlsdGVyXCJdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVGaW5kaW5nc0ZlZWRiYWNrIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlRmluZGluZ3NGZWVkYmFjazogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6VXBkYXRlRmluZGluZ3NGZWVkYmFja1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVJUFNldCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZUlQU2V0OiBzdHJpbmdbXSA9IFtcImd1YXJkZHV0eTpVcGRhdGVJUFNldFwiXTtcblx0LyoqIElBTSBhY3Rpb25zIHJlcXVpcmVkIGZvciB0aGUgVXBkYXRlTWFsd2FyZVByb3RlY3Rpb25QbGFuIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlTWFsd2FyZVByb3RlY3Rpb25QbGFuOiBzdHJpbmdbXSA9IFtcblx0XHRcImlhbTpQYXNzUm9sZVwiLFxuXHRcdFwiZ3VhcmRkdXR5OlVwZGF0ZU1hbHdhcmVQcm90ZWN0aW9uUGxhblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVNYWx3YXJlU2NhblNldHRpbmdzIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlTWFsd2FyZVNjYW5TZXR0aW5nczogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6VXBkYXRlTWFsd2FyZVNjYW5TZXR0aW5nc1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVNZW1iZXJEZXRlY3RvcnMgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVNZW1iZXJEZXRlY3RvcnM6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OlVwZGF0ZU1lbWJlckRldGVjdG9yc1wiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVPcmdhbml6YXRpb25Db25maWd1cmF0aW9uIEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlT3JnYW5pemF0aW9uQ29uZmlndXJhdGlvbjogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6VXBkYXRlT3JnYW5pemF0aW9uQ29uZmlndXJhdGlvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVQdWJsaXNoaW5nRGVzdGluYXRpb24gQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVQdWJsaXNoaW5nRGVzdGluYXRpb246IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OlVwZGF0ZVB1Ymxpc2hpbmdEZXN0aW5hdGlvblwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVUaHJlYXRFbnRpdHlTZXQgQVBJIGNhbGwuICovXG5cdHN0YXRpYyByZWFkb25seSBVcGRhdGVUaHJlYXRFbnRpdHlTZXQ6IHN0cmluZ1tdID0gW1xuXHRcdFwiZ3VhcmRkdXR5OlVwZGF0ZVRocmVhdEVudGl0eVNldFwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVUaHJlYXRJbnRlbFNldCBBUEkgY2FsbC4gKi9cblx0c3RhdGljIHJlYWRvbmx5IFVwZGF0ZVRocmVhdEludGVsU2V0OiBzdHJpbmdbXSA9IFtcblx0XHRcImd1YXJkZHV0eTpVcGRhdGVUaHJlYXRJbnRlbFNldFwiLFxuXHRdO1xuXHQvKiogSUFNIGFjdGlvbnMgcmVxdWlyZWQgZm9yIHRoZSBVcGRhdGVUcnVzdGVkRW50aXR5U2V0IEFQSSBjYWxsLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgVXBkYXRlVHJ1c3RlZEVudGl0eVNldDogc3RyaW5nW10gPSBbXG5cdFx0XCJndWFyZGR1dHk6VXBkYXRlVHJ1c3RlZEVudGl0eVNldFwiLFxuXHRdO1xufVxuXG4vKipcbiAqIENvbmRpdGlvbiBrZXkgY29uc3RhbnRzIGFuZCBidWlsZGVycyBmb3IgZ3VhcmRkdXR5LlxuICovXG5leHBvcnQgY2xhc3MgR3VhcmREdXR5Q29uZGl0aW9ucyB7XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVDdXN0b21EZXRlY3Rpb25SdWxlQXNzb2NpYXRpb24gYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlQ3VzdG9tRGV0ZWN0aW9uUnVsZUFzc29jaWF0aW9uQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPVxuXHRcdFtcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLCBcImF3czpUYWdLZXlzXCJdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlRGV0ZWN0b3IgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlRGV0ZWN0b3JDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIENyZWF0ZUZpbHRlciBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVGaWx0ZXJDb25kaXRpb25LZXlzOiBzdHJpbmdbXSA9IFtcblx0XHRcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiLFxuXHRcdFwiYXdzOlRhZ0tleXNcIixcblx0XTtcblx0LyoqIENvbmRpdGlvbiBrZXlzIGFwcGxpY2FibGUgdG8gdGhlIENyZWF0ZUlQU2V0IGFjdGlvbi4gKi9cblx0c3RhdGljIHJlYWRvbmx5IENyZWF0ZUlQU2V0Q29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVNYWx3YXJlUHJvdGVjdGlvblBsYW4gYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlTWFsd2FyZVByb3RlY3Rpb25QbGFuQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVQdWJsaXNoaW5nRGVzdGluYXRpb24gYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlUHVibGlzaGluZ0Rlc3RpbmF0aW9uQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVUaHJlYXRFbnRpdHlTZXQgYWN0aW9uLiAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQ3JlYXRlVGhyZWF0RW50aXR5U2V0Q29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBDcmVhdGVUaHJlYXRJbnRlbFNldCBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVUaHJlYXRJbnRlbFNldENvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgQ3JlYXRlVHJ1c3RlZEVudGl0eVNldCBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBDcmVhdGVUcnVzdGVkRW50aXR5U2V0Q29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXG5cdFx0XCJhd3M6UmVxdWVzdFRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpSZXNvdXJjZVRhZy8ke1RhZ0tleX1cIixcblx0XHRcImF3czpUYWdLZXlzXCIsXG5cdF07XG5cdC8qKiBDb25kaXRpb24ga2V5cyBhcHBsaWNhYmxlIHRvIHRoZSBUYWdSZXNvdXJjZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBUYWdSZXNvdXJjZUNvbmRpdGlvbktleXM6IHN0cmluZ1tdID0gW1xuXHRcdFwiYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9XCIsXG5cdFx0XCJhd3M6VGFnS2V5c1wiLFxuXHRdO1xuXHQvKiogQ29uZGl0aW9uIGtleXMgYXBwbGljYWJsZSB0byB0aGUgVW50YWdSZXNvdXJjZSBhY3Rpb24uICovXG5cdHN0YXRpYyByZWFkb25seSBVbnRhZ1Jlc291cmNlQ29uZGl0aW9uS2V5czogc3RyaW5nW10gPSBbXCJhd3M6VGFnS2V5c1wiXTtcblxuXHQvKiogQ29uZGl0aW9uIGtleTogYXdzOlJlcXVlc3RUYWcvJHtUYWdLZXl9IChTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBBV1NfUkVRVUVTVF9UQUcgPSBcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fSAoU3RyaW5nKSAqL1xuXHRzdGF0aWMgcmVhZG9ubHkgQVdTX1JFU09VUkNFX1RBRyA9IFwiYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fVwiO1xuXHQvKiogQ29uZGl0aW9uIGtleTogYXdzOlRhZ0tleXMgKEFycmF5T2ZTdHJpbmcpICovXG5cdHN0YXRpYyByZWFkb25seSBBV1NfVEFHX0tFWVMgPSBcImF3czpUYWdLZXlzXCI7XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyBhIGNvbmRpdGlvbiBibG9jayBmb3IgYGF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fWAuXG5cdCAqL1xuXHRzdGF0aWMgcmVxdWVzdFRhZyh2YWx1ZTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuXHRcdHJldHVybiB7IFN0cmluZ0VxdWFsczogeyBcImF3czpSZXF1ZXN0VGFnLyR7VGFnS2V5fVwiOiB2YWx1ZSB9IH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIGEgY29uZGl0aW9uIGJsb2NrIGZvciBgYXdzOlJlc291cmNlVGFnLyR7VGFnS2V5fWAuXG5cdCAqL1xuXHRzdGF0aWMgcmVzb3VyY2VUYWcodmFsdWU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcblx0XHRyZXR1cm4geyBTdHJpbmdFcXVhbHM6IHsgXCJhd3M6UmVzb3VyY2VUYWcvJHtUYWdLZXl9XCI6IHZhbHVlIH0gfTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZW5lcmF0ZXMgYSBjb25kaXRpb24gYmxvY2sgZm9yIGBhd3M6VGFnS2V5c2AuXG5cdCAqL1xuXHRzdGF0aWMgdGFnS2V5cyh2YWx1ZXM6IHN0cmluZ1tdKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nW10+PiB7XG5cdFx0cmV0dXJuIHsgXCJGb3JBbGxWYWx1ZXM6U3RyaW5nRXF1YWxzXCI6IHsgXCJhd3M6VGFnS2V5c1wiOiB2YWx1ZXMgfSB9O1xuXHR9XG59XG4iXX0=