@horietakehiro/aws-cdk-utul 0.41.46 → 0.41.47

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 (105) hide show
  1. package/lib/types/cfn-resource-types/aws-apigateway-account.d.ts +1 -0
  2. package/lib/types/cfn-resource-types/aws-apigateway-account.js +1 -1
  3. package/lib/types/cfn-resource-types/aws-apigateway-apikey.d.ts +7 -3
  4. package/lib/types/cfn-resource-types/aws-apigateway-apikey.js +1 -1
  5. package/lib/types/cfn-resource-types/aws-apigateway-basepathmapping.d.ts +1 -1
  6. package/lib/types/cfn-resource-types/aws-apigateway-basepathmapping.js +1 -1
  7. package/lib/types/cfn-resource-types/aws-apigateway-clientcertificate.d.ts +10 -0
  8. package/lib/types/cfn-resource-types/aws-apigateway-clientcertificate.js +1 -1
  9. package/lib/types/cfn-resource-types/aws-apigateway-deployment.d.ts +6 -2
  10. package/lib/types/cfn-resource-types/aws-apigateway-deployment.js +1 -1
  11. package/lib/types/cfn-resource-types/aws-apigateway-domainname.d.ts +15 -1
  12. package/lib/types/cfn-resource-types/aws-apigateway-domainname.js +1 -1
  13. package/lib/types/cfn-resource-types/aws-apigateway-domainnameaccessassociation.d.ts +1 -1
  14. package/lib/types/cfn-resource-types/aws-apigateway-domainnameaccessassociation.js +1 -1
  15. package/lib/types/cfn-resource-types/aws-apigateway-gatewayresponse.d.ts +1 -1
  16. package/lib/types/cfn-resource-types/aws-apigateway-gatewayresponse.js +1 -1
  17. package/lib/types/cfn-resource-types/aws-apigateway-restapi.d.ts +12 -2
  18. package/lib/types/cfn-resource-types/aws-apigateway-restapi.js +1 -1
  19. package/lib/types/cfn-resource-types/aws-apigateway-stage.d.ts +6 -2
  20. package/lib/types/cfn-resource-types/aws-apigateway-stage.js +1 -1
  21. package/lib/types/cfn-resource-types/aws-apigateway-usageplan.d.ts +6 -2
  22. package/lib/types/cfn-resource-types/aws-apigateway-usageplan.js +1 -1
  23. package/lib/types/cfn-resource-types/aws-apigateway-vpclink.d.ts +10 -0
  24. package/lib/types/cfn-resource-types/aws-apigateway-vpclink.js +1 -1
  25. package/lib/types/cfn-resource-types/aws-aps-scraper.d.ts +13 -0
  26. package/lib/types/cfn-resource-types/aws-aps-scraper.js +1 -1
  27. package/lib/types/cfn-resource-types/aws-backup-logicallyairgappedbackupvault.d.ts +12 -11
  28. package/lib/types/cfn-resource-types/aws-backup-logicallyairgappedbackupvault.js +1 -1
  29. package/lib/types/cfn-resource-types/aws-bedrockagentcore-gatewaytarget.d.ts +9 -2
  30. package/lib/types/cfn-resource-types/aws-bedrockagentcore-gatewaytarget.js +1 -1
  31. package/lib/types/cfn-resource-types/aws-cloudtrail-trail.d.ts +1 -1
  32. package/lib/types/cfn-resource-types/aws-cloudtrail-trail.js +1 -1
  33. package/lib/types/cfn-resource-types/aws-connect-securityprofile.d.ts +41 -0
  34. package/lib/types/cfn-resource-types/aws-connect-securityprofile.js +1 -1
  35. package/lib/types/cfn-resource-types/aws-controltower-landingzone.d.ts +6 -4
  36. package/lib/types/cfn-resource-types/aws-controltower-landingzone.js +1 -1
  37. package/lib/types/cfn-resource-types/aws-dsql-cluster.d.ts +8 -0
  38. package/lib/types/cfn-resource-types/aws-dsql-cluster.js +1 -1
  39. package/lib/types/cfn-resource-types/aws-dynamodb-globaltable.d.ts +3 -6
  40. package/lib/types/cfn-resource-types/aws-dynamodb-globaltable.js +1 -1
  41. package/lib/types/cfn-resource-types/aws-ec2-ec2fleet.d.ts +2 -2
  42. package/lib/types/cfn-resource-types/aws-ec2-ec2fleet.js +1 -1
  43. package/lib/types/cfn-resource-types/aws-ec2-flowlog.d.ts +1 -1
  44. package/lib/types/cfn-resource-types/aws-ec2-flowlog.js +1 -1
  45. package/lib/types/cfn-resource-types/aws-ec2-ipamscope.d.ts +14 -0
  46. package/lib/types/cfn-resource-types/aws-ec2-ipamscope.js +1 -1
  47. package/lib/types/cfn-resource-types/aws-ec2-spotfleet.d.ts +2 -2
  48. package/lib/types/cfn-resource-types/aws-ec2-spotfleet.js +1 -1
  49. package/lib/types/cfn-resource-types/aws-ec2-transitgateway.d.ts +8 -6
  50. package/lib/types/cfn-resource-types/aws-ec2-transitgateway.js +1 -1
  51. package/lib/types/cfn-resource-types/aws-ecs-cluster.d.ts +5 -5
  52. package/lib/types/cfn-resource-types/aws-ecs-cluster.js +1 -1
  53. package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-listener.d.ts +11 -0
  54. package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-listener.js +1 -1
  55. package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-listenerrule.d.ts +88 -77
  56. package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-listenerrule.js +1 -1
  57. package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-targetgroup.d.ts +4 -0
  58. package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-targetgroup.js +1 -1
  59. package/lib/types/cfn-resource-types/aws-iam-policy.d.ts +7 -7
  60. package/lib/types/cfn-resource-types/aws-iam-policy.js +1 -1
  61. package/lib/types/cfn-resource-types/aws-imagebuilder-containerrecipe.d.ts +22 -0
  62. package/lib/types/cfn-resource-types/aws-imagebuilder-containerrecipe.js +1 -1
  63. package/lib/types/cfn-resource-types/aws-imagebuilder-imagerecipe.d.ts +22 -0
  64. package/lib/types/cfn-resource-types/aws-imagebuilder-imagerecipe.js +1 -1
  65. package/lib/types/cfn-resource-types/aws-kinesis-stream.d.ts +19 -1
  66. package/lib/types/cfn-resource-types/aws-kinesis-stream.js +1 -1
  67. package/lib/types/cfn-resource-types/aws-lambda-eventsourcemapping.d.ts +12 -3
  68. package/lib/types/cfn-resource-types/aws-lambda-eventsourcemapping.js +1 -1
  69. package/lib/types/cfn-resource-types/aws-lambda-permission.d.ts +5 -2
  70. package/lib/types/cfn-resource-types/aws-lambda-permission.js +1 -1
  71. package/lib/types/cfn-resource-types/aws-mediaconnect-flow.d.ts +38 -0
  72. package/lib/types/cfn-resource-types/aws-mediaconnect-flow.js +1 -1
  73. package/lib/types/cfn-resource-types/aws-mediaconnect-flowoutput.d.ts +39 -1
  74. package/lib/types/cfn-resource-types/aws-mediaconnect-flowoutput.js +1 -1
  75. package/lib/types/cfn-resource-types/aws-mediaconnect-routerinput.d.ts +329 -0
  76. package/lib/types/cfn-resource-types/aws-mediaconnect-routerinput.js +3 -0
  77. package/lib/types/cfn-resource-types/aws-mediaconnect-routernetworkinterface.d.ts +94 -0
  78. package/lib/types/cfn-resource-types/aws-mediaconnect-routernetworkinterface.js +3 -0
  79. package/lib/types/cfn-resource-types/aws-mediaconnect-routeroutput.d.ts +277 -0
  80. package/lib/types/cfn-resource-types/aws-mediaconnect-routeroutput.js +3 -0
  81. package/lib/types/cfn-resource-types/aws-organizations-policy.d.ts +2 -2
  82. package/lib/types/cfn-resource-types/aws-organizations-policy.js +1 -1
  83. package/lib/types/cfn-resource-types/aws-rekognition-project.d.ts +20 -0
  84. package/lib/types/cfn-resource-types/aws-rekognition-project.js +1 -1
  85. package/lib/types/cfn-resource-types/aws-route53resolver-firewallrulegroup.d.ts +1 -1
  86. package/lib/types/cfn-resource-types/aws-route53resolver-firewallrulegroup.js +1 -1
  87. package/lib/types/cfn-resource-types/aws-rtbfabric-inboundexternallink.d.ts +67 -0
  88. package/lib/types/cfn-resource-types/aws-rtbfabric-inboundexternallink.js +3 -0
  89. package/lib/types/cfn-resource-types/aws-rtbfabric-link.d.ts +1 -1
  90. package/lib/types/cfn-resource-types/aws-rtbfabric-link.js +1 -1
  91. package/lib/types/cfn-resource-types/aws-s3-bucket.d.ts +1 -1
  92. package/lib/types/cfn-resource-types/aws-s3-bucket.js +1 -1
  93. package/lib/types/cfn-resource-types/aws-s3tables-table.d.ts +14 -0
  94. package/lib/types/cfn-resource-types/aws-s3tables-table.js +1 -1
  95. package/lib/types/cfn-resource-types/aws-s3tables-tablebucket.d.ts +14 -0
  96. package/lib/types/cfn-resource-types/aws-s3tables-tablebucket.js +1 -1
  97. package/lib/types/cfn-resource-types/aws-servicecatalog-cloudformationproduct.d.ts +23 -123
  98. package/lib/types/cfn-resource-types/aws-servicecatalog-cloudformationproduct.js +1 -1
  99. package/lib/types/cfn-resource-types/aws-workspacesweb-browsersettings.d.ts +19 -0
  100. package/lib/types/cfn-resource-types/aws-workspacesweb-browsersettings.js +1 -1
  101. package/lib/types/cfn-resource-types/dev-fsx-storagevirtualmachine.d.ts +31 -0
  102. package/lib/types/cfn-resource-types/dev-fsx-storagevirtualmachine.js +3 -0
  103. package/lib/types/cfn-resource-types.d.ts +10 -0
  104. package/lib/types/cfn-resource-types.js +23 -13
  105. package/package.json +1 -1
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWVjcy1jbHVzdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWVjcy1jbHVzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBgYEFXUzo6RUNTOjpDbHVzdGVyYGAgcmVzb3VyY2UgY3JlYXRlcyBhbiBBbWF6b24gRWxhc3RpYyBDb250YWluZXIgU2VydmljZSAoQW1hem9uIEVDUykgY2x1c3Rlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0VDU19DTFVTVEVSIHtcbi8qKlxuICogVGhlIHNldHRpbmdzIHRvIHVzZSB3aGVuIGNyZWF0aW5nIGEgY2x1c3Rlci4gVGhpcyBwYXJhbWV0ZXIgaXMgdXNlZCB0byB0dXJuIG9uIENsb3VkV2F0Y2ggQ29udGFpbmVyIEluc2lnaHRzIHdpdGggZW5oYW5jZWQgb2JzZXJ2YWJpbGl0eSBvciBDbG91ZFdhdGNoIENvbnRhaW5lciBJbnNpZ2h0cyBmb3IgYSBjbHVzdGVyLlxuICogIENvbnRhaW5lciBJbnNpZ2h0cyB3aXRoIGVuaGFuY2VkIG9ic2VydmFiaWxpdHkgcHJvdmlkZXMgYWxsIHRoZSBDb250YWluZXIgSW5zaWdodHMgbWV0cmljcywgcGx1cyBhZGRpdGlvbmFsIHRhc2sgYW5kIGNvbnRhaW5lciBtZXRyaWNzLiBUaGlzIHZlcnNpb24gc3VwcG9ydHMgZW5oYW5jZWQgb2JzZXJ2YWJpbGl0eSBmb3IgQW1hem9uIEVDUyBjbHVzdGVycyB1c2luZyB0aGUgQW1hem9uIEVDMiBhbmQgRmFyZ2F0ZSBsYXVuY2ggdHlwZXMuIEFmdGVyIHlvdSBjb25maWd1cmUgQ29udGFpbmVyIEluc2lnaHRzIHdpdGggZW5oYW5jZWQgb2JzZXJ2YWJpbGl0eSBvbiBBbWF6b24gRUNTLCBDb250YWluZXIgSW5zaWdodHMgYXV0by1jb2xsZWN0cyBkZXRhaWxlZCBpbmZyYXN0cnVjdHVyZSB0ZWxlbWV0cnkgZnJvbSB0aGUgY2x1c3RlciBsZXZlbCBkb3duIHRvIHRoZSBjb250YWluZXIgbGV2ZWwgaW4geW91ciBlbnZpcm9ubWVudCBhbmQgZGlzcGxheXMgdGhlc2UgY3JpdGljYWwgcGVyZm9ybWFuY2UgZGF0YSBpbiBjdXJhdGVkIGRhc2hib2FyZHMgcmVtb3ZpbmcgdGhlIGhlYXZ5IGxpZnRpbmcgaW4gb2JzZXJ2YWJpbGl0eSBzZXQtdXAuIFxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW01vbml0b3IgQW1hem9uIEVDUyBjb250YWluZXJzIHVzaW5nIENvbnRhaW5lciBJbnNpZ2h0cyB3aXRoIGVuaGFuY2VkIG9ic2VydmFiaWxpdHldKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2Nsb3Vkd2F0Y2gtY29udGFpbmVyLWluc2lnaHRzLmh0bWwpIGluIHRoZSAqQW1hem9uIEVsYXN0aWMgQ29udGFpbmVyIFNlcnZpY2UgRGV2ZWxvcGVyIEd1aWRlKi5cbiAqL1xuQ2x1c3RlclNldHRpbmdzPzogQ2x1c3RlclNldHRpbmdzW11cbi8qKlxuICogVGhlIGRlZmF1bHQgY2FwYWNpdHkgcHJvdmlkZXIgc3RyYXRlZ3kgZm9yIHRoZSBjbHVzdGVyLiBXaGVuIHNlcnZpY2VzIG9yIHRhc2tzIGFyZSBydW4gaW4gdGhlIGNsdXN0ZXIgd2l0aCBubyBsYXVuY2ggdHlwZSBvciBjYXBhY2l0eSBwcm92aWRlciBzdHJhdGVneSBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IGNhcGFjaXR5IHByb3ZpZGVyIHN0cmF0ZWd5IGlzIHVzZWQuXG4gKi9cbkRlZmF1bHRDYXBhY2l0eVByb3ZpZGVyU3RyYXRlZ3k/OiBDYXBhY2l0eVByb3ZpZGVyU3RyYXRlZ3lJdGVtW11cbkNvbmZpZ3VyYXRpb24/OiBDbHVzdGVyQ29uZmlndXJhdGlvblxuU2VydmljZUNvbm5lY3REZWZhdWx0cz86IFNlcnZpY2VDb25uZWN0RGVmYXVsdHNcbi8qKlxuICogVGhlIHNob3J0IG5hbWUgb2Ygb25lIG9yIG1vcmUgY2FwYWNpdHkgcHJvdmlkZXJzIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBjbHVzdGVyLiBBIGNhcGFjaXR5IHByb3ZpZGVyIG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIGEgY2x1c3RlciBiZWZvcmUgaXQgY2FuIGJlIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlIGRlZmF1bHQgY2FwYWNpdHkgcHJvdmlkZXIgc3RyYXRlZ3kgb2YgdGhlIGNsdXN0ZXIgb3IgdXNlZCBpbiBhIGNhcGFjaXR5IHByb3ZpZGVyIHN0cmF0ZWd5IHdoZW4gY2FsbGluZyB0aGUgW0NyZWF0ZVNlcnZpY2VdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlU2VydmljZS5odG1sKSBvciBbUnVuVGFza10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUy9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9SdW5UYXNrLmh0bWwpIGFjdGlvbnMuXG4gKiAgSWYgc3BlY2lmeWluZyBhIGNhcGFjaXR5IHByb3ZpZGVyIHRoYXQgdXNlcyBhbiBBdXRvIFNjYWxpbmcgZ3JvdXAsIHRoZSBjYXBhY2l0eSBwcm92aWRlciBtdXN0IGJlIGNyZWF0ZWQgYnV0IG5vdCBhc3NvY2lhdGVkIHdpdGggYW5vdGhlciBjbHVzdGVyLiBOZXcgQXV0byBTY2FsaW5nIGdyb3VwIGNhcGFjaXR5IHByb3ZpZGVycyBjYW4gYmUgY3JlYXRlZCB3aXRoIHRoZSBbQ3JlYXRlQ2FwYWNpdHlQcm92aWRlcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUy9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVDYXBhY2l0eVByb3ZpZGVyLmh0bWwpIEFQSSBvcGVyYXRpb24uXG4gKiAgVG8gdXNlIGEgRkFSR0FURWxvbmcgY2FwYWNpdHkgcHJvdmlkZXIsIHNwZWNpZnkgZWl0aGVyIHRoZSBgYEZBUkdBVEVgYCBvciBgYEZBUkdBVEVfU1BPVGBgIGNhcGFjaXR5IHByb3ZpZGVycy4gVGhlIEZBUkdBVEVsb25nIGNhcGFjaXR5IHByb3ZpZGVycyBhcmUgYXZhaWxhYmxlIHRvIGFsbCBhY2NvdW50cyBhbmQgb25seSBuZWVkIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCBhIGNsdXN0ZXIgdG8gYmUgdXNlZC5cbiAqICBUaGUgW1B1dENhcGFjaXR5UHJvdmlkZXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfUHV0Q2FwYWNpdHlQcm92aWRlci5odG1sKSBBUEkgb3BlcmF0aW9uIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBjYXBhY2l0eSBwcm92aWRlcnMgZm9yIGEgY2x1c3RlciBhZnRlciB0aGUgY2x1c3RlciBpcyBjcmVhdGVkLlxuICovXG5DYXBhY2l0eVByb3ZpZGVycz86IHN0cmluZ1tdXG4vKipcbiAqIEEgdXNlci1nZW5lcmF0ZWQgc3RyaW5nIHRoYXQgeW91IHVzZSB0byBpZGVudGlmeSB5b3VyIGNsdXN0ZXIuIElmIHlvdSBkb24ndCBzcGVjaWZ5IGEgbmFtZSwgQ0ZObG9uZyBnZW5lcmF0ZXMgYSB1bmlxdWUgcGh5c2ljYWwgSUQgZm9yIHRoZSBuYW1lLlxuICovXG5DbHVzdGVyTmFtZT86IHN0cmluZ1xuQXJuPzogc3RyaW5nXG4vKipcbiAqIFRoZSBtZXRhZGF0YSB0aGF0IHlvdSBhcHBseSB0byB0aGUgY2x1c3RlciB0byBoZWxwIHlvdSBjYXRlZ29yaXplIGFuZCBvcmdhbml6ZSB0aGVtLiBFYWNoIHRhZyBjb25zaXN0cyBvZiBhIGtleSBhbmQgYW4gb3B0aW9uYWwgdmFsdWUuIFlvdSBkZWZpbmUgYm90aC5cbiAqICBUaGUgZm9sbG93aW5nIGJhc2ljIHJlc3RyaWN0aW9ucyBhcHBseSB0byB0YWdzOlxuICogICArICBNYXhpbXVtIG51bWJlciBvZiB0YWdzIHBlciByZXNvdXJjZSAtIDUwXG4gKiAgICsgIEZvciBlYWNoIHJlc291cmNlLCBlYWNoIHRhZyBrZXkgbXVzdCBiZSB1bmlxdWUsIGFuZCBlYWNoIHRhZyBrZXkgY2FuIGhhdmUgb25seSBvbmUgdmFsdWUuXG4gKiAgICsgIE1heGltdW0ga2V5IGxlbmd0aCAtIDEyOCBVbmljb2RlIGNoYXJhY3RlcnMgaW4gVVRGLThcbiAqICAgKyAgTWF4aW11bSB2YWx1ZSBsZW5ndGggLSAyNTYgVW5pY29kZSBjaGFyYWN0ZXJzIGluIFVURi04XG4gKiAgICsgIElmIHlvdXIgdGFnZ2luZyBzY2hlbWEgaXMgdXNlZCBhY3Jvc3MgbXVsdGlwbGUgc2VydmljZXMgYW5kIHJlc291cmNlcywgcmVtZW1iZXIgdGhhdCBvdGhlciBzZXJ2aWNlcyBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gYWxsb3dlZCBjaGFyYWN0ZXJzLiBHZW5lcmFsbHkgYWxsb3dlZCBjaGFyYWN0ZXJzIGFyZTogbGV0dGVycywgbnVtYmVycywgYW5kIHNwYWNlcyByZXByZXNlbnRhYmxlIGluIFVURi04LCBhbmQgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiArIC0gPSAuIF8gOiAvIEAuXG4gKiAgICsgIFRhZyBrZXlzIGFuZCB2YWx1ZXMgYXJlIGNhc2Utc2Vuc2l0aXZlLlxuICogICArICBEbyBub3QgdXNlIGBgYXdzOmBgLCBgYEFXUzpgYCwgb3IgYW55IHVwcGVyIG9yIGxvd2VyY2FzZSBjb21iaW5hdGlvbiBvZiBzdWNoIGFzIGEgcHJlZml4IGZvciBlaXRoZXIga2V5cyBvciB2YWx1ZXMgYXMgaXQgaXMgcmVzZXJ2ZWQgZm9yIEFXUyB1c2UuIFlvdSBjYW5ub3QgZWRpdCBvciBkZWxldGUgdGFnIGtleXMgb3IgdmFsdWVzIHdpdGggdGhpcyBwcmVmaXguIFRhZ3Mgd2l0aCB0aGlzIHByZWZpeCBkbyBub3QgY291bnQgYWdhaW5zdCB5b3VyIHRhZ3MgcGVyIHJlc291cmNlIGxpbWl0LlxuICovXG5UYWdzPzogVGFnW11cbn1cbi8qKlxuICogVGhlIHNldHRpbmdzIHRvIHVzZSB3aGVuIGNyZWF0aW5nIGEgY2x1c3Rlci4gVGhpcyBwYXJhbWV0ZXIgaXMgdXNlZCB0byB0dXJuIG9uIENsb3VkV2F0Y2ggQ29udGFpbmVyIEluc2lnaHRzIHdpdGggZW5oYW5jZWQgb2JzZXJ2YWJpbGl0eSBvciBDbG91ZFdhdGNoIENvbnRhaW5lciBJbnNpZ2h0cyBmb3IgYSBjbHVzdGVyLlxuICogIENvbnRhaW5lciBJbnNpZ2h0cyB3aXRoIGVuaGFuY2VkIG9ic2VydmFiaWxpdHkgcHJvdmlkZXMgYWxsIHRoZSBDb250YWluZXIgSW5zaWdodHMgbWV0cmljcywgcGx1cyBhZGRpdGlvbmFsIHRhc2sgYW5kIGNvbnRhaW5lciBtZXRyaWNzLiBUaGlzIHZlcnNpb24gc3VwcG9ydHMgZW5oYW5jZWQgb2JzZXJ2YWJpbGl0eSBmb3IgQW1hem9uIEVDUyBjbHVzdGVycyB1c2luZyB0aGUgQW1hem9uIEVDMiBhbmQgRmFyZ2F0ZSBsYXVuY2ggdHlwZXMuIEFmdGVyIHlvdSBjb25maWd1cmUgQ29udGFpbmVyIEluc2lnaHRzIHdpdGggZW5oYW5jZWQgb2JzZXJ2YWJpbGl0eSBvbiBBbWF6b24gRUNTLCBDb250YWluZXIgSW5zaWdodHMgYXV0by1jb2xsZWN0cyBkZXRhaWxlZCBpbmZyYXN0cnVjdHVyZSB0ZWxlbWV0cnkgZnJvbSB0aGUgY2x1c3RlciBsZXZlbCBkb3duIHRvIHRoZSBjb250YWluZXIgbGV2ZWwgaW4geW91ciBlbnZpcm9ubWVudCBhbmQgZGlzcGxheXMgdGhlc2UgY3JpdGljYWwgcGVyZm9ybWFuY2UgZGF0YSBpbiBjdXJhdGVkIGRhc2hib2FyZHMgcmVtb3ZpbmcgdGhlIGhlYXZ5IGxpZnRpbmcgaW4gb2JzZXJ2YWJpbGl0eSBzZXQtdXAuIFxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW01vbml0b3IgQW1hem9uIEVDUyBjb250YWluZXJzIHVzaW5nIENvbnRhaW5lciBJbnNpZ2h0cyB3aXRoIGVuaGFuY2VkIG9ic2VydmFiaWxpdHldKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2Nsb3Vkd2F0Y2gtY29udGFpbmVyLWluc2lnaHRzLmh0bWwpIGluIHRoZSAqQW1hem9uIEVsYXN0aWMgQ29udGFpbmVyIFNlcnZpY2UgRGV2ZWxvcGVyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbHVzdGVyU2V0dGluZ3Mge1xuLyoqXG4gKiBUaGUgdmFsdWUgdG8gc2V0IGZvciB0aGUgY2x1c3RlciBzZXR0aW5nLiBUaGUgc3VwcG9ydGVkIHZhbHVlcyBhcmUgYGBlbmhhbmNlZGBgLCBgYGVuYWJsZWRgYCwgYW5kIGBgZGlzYWJsZWRgYC4gXG4gKiAgVG8gdXNlIENvbnRhaW5lciBJbnNpZ2h0cyB3aXRoIGVuaGFuY2VkIG9ic2VydmFiaWxpdHksIHNldCB0aGUgYGBjb250YWluZXJJbnNpZ2h0c2BgIGFjY291bnQgc2V0dGluZyB0byBgYGVuaGFuY2VkYGAuXG4gKiAgVG8gdXNlIENvbnRhaW5lciBJbnNpZ2h0cywgc2V0IHRoZSBgYGNvbnRhaW5lckluc2lnaHRzYGAgYWNjb3VudCBzZXR0aW5nIHRvIGBgZW5hYmxlZGBgLlxuICogIElmIGEgY2x1c3RlciB2YWx1ZSBpcyBzcGVjaWZpZWQsIGl0IHdpbGwgb3ZlcnJpZGUgdGhlIGBgY29udGFpbmVySW5zaWdodHNgYCB2YWx1ZSBzZXQgd2l0aCBbUHV0QWNjb3VudFNldHRpbmddKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfUHV0QWNjb3VudFNldHRpbmcuaHRtbCkgb3IgW1B1dEFjY291bnRTZXR0aW5nRGVmYXVsdF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUy9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9QdXRBY2NvdW50U2V0dGluZ0RlZmF1bHQuaHRtbCkuXG4gKi9cblZhbHVlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBjbHVzdGVyIHNldHRpbmcuIFRoZSB2YWx1ZSBpcyBgYGNvbnRhaW5lckluc2lnaHRzYGAuXG4gKi9cbk5hbWU/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIGBgQ2FwYWNpdHlQcm92aWRlclN0cmF0ZWd5SXRlbWBgIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgZGV0YWlscyBvZiB0aGUgZGVmYXVsdCBjYXBhY2l0eSBwcm92aWRlciBzdHJhdGVneSBmb3IgdGhlIGNsdXN0ZXIuIFdoZW4gc2VydmljZXMgb3IgdGFza3MgYXJlIHJ1biBpbiB0aGUgY2x1c3RlciB3aXRoIG5vIGxhdW5jaCB0eXBlIG9yIGNhcGFjaXR5IHByb3ZpZGVyIHN0cmF0ZWd5IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgY2FwYWNpdHkgcHJvdmlkZXIgc3RyYXRlZ3kgaXMgdXNlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYXBhY2l0eVByb3ZpZGVyU3RyYXRlZ3lJdGVtIHtcbi8qKlxuICogVGhlIHNob3J0IG5hbWUgb2YgdGhlIGNhcGFjaXR5IHByb3ZpZGVyLlxuICovXG5DYXBhY2l0eVByb3ZpZGVyPzogc3RyaW5nXG4vKipcbiAqIFRoZSAqd2VpZ2h0KiB2YWx1ZSBkZXNpZ25hdGVzIHRoZSByZWxhdGl2ZSBwZXJjZW50YWdlIG9mIHRoZSB0b3RhbCBudW1iZXIgb2YgdGFza3MgbGF1bmNoZWQgdGhhdCBzaG91bGQgdXNlIHRoZSBzcGVjaWZpZWQgY2FwYWNpdHkgcHJvdmlkZXIuIFRoZSBgYHdlaWdodGBgIHZhbHVlIGlzIHRha2VuIGludG8gY29uc2lkZXJhdGlvbiBhZnRlciB0aGUgYGBiYXNlYGAgdmFsdWUsIGlmIGRlZmluZWQsIGlzIHNhdGlzZmllZC5cbiAqICBJZiBubyBgYHdlaWdodGBgIHZhbHVlIGlzIHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgdmFsdWUgb2YgYGAwYGAgaXMgdXNlZC4gV2hlbiBtdWx0aXBsZSBjYXBhY2l0eSBwcm92aWRlcnMgYXJlIHNwZWNpZmllZCB3aXRoaW4gYSBjYXBhY2l0eSBwcm92aWRlciBzdHJhdGVneSwgYXQgbGVhc3Qgb25lIG9mIHRoZSBjYXBhY2l0eSBwcm92aWRlcnMgbXVzdCBoYXZlIGEgd2VpZ2h0IHZhbHVlIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBhbnkgY2FwYWNpdHkgcHJvdmlkZXJzIHdpdGggYSB3ZWlnaHQgb2YgYGAwYGAgY2FuJ3QgYmUgdXNlZCB0byBwbGFjZSB0YXNrcy4gSWYgeW91IHNwZWNpZnkgbXVsdGlwbGUgY2FwYWNpdHkgcHJvdmlkZXJzIGluIGEgc3RyYXRlZ3kgdGhhdCBhbGwgaGF2ZSBhIHdlaWdodCBvZiBgYDBgYCwgYW55IGBgUnVuVGFza2BgIG9yIGBgQ3JlYXRlU2VydmljZWBgIGFjdGlvbnMgdXNpbmcgdGhlIGNhcGFjaXR5IHByb3ZpZGVyIHN0cmF0ZWd5IHdpbGwgZmFpbC5cbiAqICBXZWlnaHQgdmFsdWUgY2hhcmFjdGVyaXN0aWNzOlxuICogICArICBXZWlnaHQgaXMgY29uc2lkZXJlZCBhZnRlciB0aGUgYmFzZSB2YWx1ZSBpcyBzYXRpc2ZpZWRcbiAqICAgKyAgRGVmYXVsdCB2YWx1ZSBpcyBgYDBgYCBpZiBub3Qgc3BlY2lmaWVkXG4gKiAgICsgIFZhbGlkIHJhbmdlOiAwIHRvIDEsMDAwXG4gKiAgICsgIEF0IGxlYXN0IG9uZSBjYXBhY2l0eSBwcm92aWRlciBtdXN0IGhhdmUgYSB3ZWlnaHQgZ3JlYXRlciB0aGFuIHplcm9cbiAqICAgKyAgQ2FwYWNpdHkgcHJvdmlkZXJzIHdpdGggd2VpZ2h0IG9mIGBgMGBgIGNhbm5vdCBwbGFjZSB0YXNrc1xuICogICBcbiAqICBUYXNrIGRpc3RyaWJ1dGlvbiBsb2dpYzpcbiAqICAgMS4gIEJhc2Ugc2F0aXNmYWN0aW9uOiBUaGUgbWluaW11bSBudW1iZXIgb2YgdGFza3Mgc3BlY2lmaWVkIGJ5IHRoZSBiYXNlIHZhbHVlIGFyZSBwbGFjZWQgb24gdGhhdCBjYXBhY2l0eSBwcm92aWRlclxuICogICAxLiAgV2VpZ2h0IGRpc3RyaWJ1dGlvbjogQWZ0ZXIgYmFzZSByZXF1aXJlbWVudHMgYXJlIG1ldCwgYWRkaXRpb25hbCB0YXNrcyBhcmUgZGlzdHJpYnV0ZWQgYWNjb3JkaW5nIHRvIHdlaWdodCByYXRpb3NcbiAqICAgXG4gKiAgRXhhbXBsZXM6XG4gKiAgRXF1YWwgRGlzdHJpYnV0aW9uOiBUd28gY2FwYWNpdHkgcHJvdmlkZXJzIGJvdGggd2l0aCB3ZWlnaHQgYGAxYGAgd2lsbCBzcGxpdCB0YXNrcyBldmVubHkgYWZ0ZXIgYmFzZSByZXF1aXJlbWVudHMgYXJlIG1ldC5cbiAqICBXZWlnaHRlZCBEaXN0cmlidXRpb246IElmIGNhcGFjaXR5UHJvdmlkZXJBIGhhcyB3ZWlnaHQgYGAxYGAgYW5kIGNhcGFjaXR5UHJvdmlkZXJCIGhhcyB3ZWlnaHQgYGA0YGAsIHRoZW4gZm9yIGV2ZXJ5IDEgdGFzayBvbiBBLCA0IHRhc2tzIHdpbGwgcnVuIG9uIEIuXG4gKi9cbldlaWdodD86IG51bWJlclxuLyoqXG4gKiBUaGUgKmJhc2UqIHZhbHVlIGRlc2lnbmF0ZXMgaG93IG1hbnkgdGFza3MsIGF0IGEgbWluaW11bSwgdG8gcnVuIG9uIHRoZSBzcGVjaWZpZWQgY2FwYWNpdHkgcHJvdmlkZXIgZm9yIGVhY2ggc2VydmljZS4gT25seSBvbmUgY2FwYWNpdHkgcHJvdmlkZXIgaW4gYSBjYXBhY2l0eSBwcm92aWRlciBzdHJhdGVneSBjYW4gaGF2ZSBhICpiYXNlKiBkZWZpbmVkLiBJZiBubyB2YWx1ZSBpcyBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHZhbHVlIG9mIGBgMGBgIGlzIHVzZWQuXG4gKiAgQmFzZSB2YWx1ZSBjaGFyYWN0ZXJpc3RpY3M6XG4gKiAgICsgIE9ubHkgb25lIGNhcGFjaXR5IHByb3ZpZGVyIGluIGEgc3RyYXRlZ3kgY2FuIGhhdmUgYSBiYXNlIGRlZmluZWRcbiAqICAgKyAgRGVmYXVsdCB2YWx1ZSBpcyBgYDBgYCBpZiBub3Qgc3BlY2lmaWVkXG4gKiAgICsgIFZhbGlkIHJhbmdlOiAwIHRvIDEwMCwwMDBcbiAqICAgKyAgQmFzZSByZXF1aXJlbWVudHMgYXJlIHNhdGlzZmllZCBmaXJzdCBiZWZvcmUgd2VpZ2h0IGRpc3RyaWJ1dGlvblxuICovXG5CYXNlPzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBleGVjdXRlIGNvbW1hbmQgYW5kIG1hbmFnZWQgc3RvcmFnZSBjb25maWd1cmF0aW9uIGZvciB0aGUgY2x1c3Rlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbHVzdGVyQ29uZmlndXJhdGlvbiB7XG5NYW5hZ2VkU3RvcmFnZUNvbmZpZ3VyYXRpb24/OiBNYW5hZ2VkU3RvcmFnZUNvbmZpZ3VyYXRpb25cbkV4ZWN1dGVDb21tYW5kQ29uZmlndXJhdGlvbj86IEV4ZWN1dGVDb21tYW5kQ29uZmlndXJhdGlvblxufVxuLyoqXG4gKiBUaGUgZGV0YWlscyBvZiB0aGUgbWFuYWdlZCBzdG9yYWdlIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFuYWdlZFN0b3JhZ2VDb25maWd1cmF0aW9uIHtcbi8qKlxuICogU3BlY2lmeSB0aGUgS01TbG9uZyBrZXkgSUQgZm9yIEZhcmdhdGUgZXBoZW1lcmFsIHN0b3JhZ2UuXG4gKiAgV2hlbiB5b3Ugc3BlY2lmeSBhIGBgZmFyZ2F0ZUVwaGVtZXJhbFN0b3JhZ2VLbXNLZXlJZGBgLCBBV1MgRmFyZ2F0ZSB1c2VzIHRoZSBrZXkgdG8gZW5jcnlwdCBkYXRhIGF0IHJlc3QgaW4gZXBoZW1lcmFsIHN0b3JhZ2UuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IEZhcmdhdGUgZXBoZW1lcmFsIHN0b3JhZ2UgZW5jcnlwdGlvbiwgc2VlIFtDdXN0b21lciBtYW5hZ2VkIGtleXMgZm9yIEZhcmdhdGUgZXBoZW1lcmFsIHN0b3JhZ2UgZm9yIEFtYXpvbiBFQ1NdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2ZhcmdhdGUtc3RvcmFnZS1lbmNyeXB0aW9uLmh0bWwpIGluIHRoZSAqQW1hem9uIEVsYXN0aWMgQ29udGFpbmVyIFNlcnZpY2UgRGV2ZWxvcGVyIEd1aWRlKi5cbiAqICBUaGUga2V5IG11c3QgYmUgYSBzaW5nbGUgUmVnaW9uIGtleS5cbiAqL1xuRmFyZ2F0ZUVwaGVtZXJhbFN0b3JhZ2VLbXNLZXlJZD86IHN0cmluZ1xuLyoqXG4gKiBTcGVjaWZ5IGEgS01TbG9uZyBrZXkgSUQgdG8gZW5jcnlwdCBBbWF6b24gRUNTIG1hbmFnZWQgc3RvcmFnZS5cbiAqICAgV2hlbiB5b3Ugc3BlY2lmeSBhIGBga21zS2V5SWRgYCwgQW1hem9uIEVDUyB1c2VzIHRoZSBrZXkgdG8gZW5jcnlwdCBkYXRhIHZvbHVtZXMgbWFuYWdlZCBieSBBbWF6b24gRUNTIHRoYXQgYXJlIGF0dGFjaGVkIHRvIHRhc2tzIGluIHRoZSBjbHVzdGVyLiBUaGUgZm9sbG93aW5nIGRhdGEgdm9sdW1lcyBhcmUgbWFuYWdlZCBieSBBbWF6b24gRUNTOiBBbWF6b24gRUJTLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBlbmNyeXB0aW9uIG9mIEFtYXpvbiBFQlMgdm9sdW1lcyBhdHRhY2hlZCB0byBBbWF6b24gRUNTIHRhc2tzLCBzZWUgW0VuY3J5cHQgZGF0YSBzdG9yZWQgaW4gQW1hem9uIEVCUyB2b2x1bWVzIGZvciBBbWF6b24gRUNTXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uRUNTL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9lYnMta21zLWVuY3J5cHRpb24uaHRtbCkgaW4gdGhlICpBbWF6b24gRWxhc3RpYyBDb250YWluZXIgU2VydmljZSBEZXZlbG9wZXIgR3VpZGUqLlxuICogIFRoZSBrZXkgbXVzdCBiZSBhIHNpbmdsZSBSZWdpb24ga2V5LlxuICovXG5LbXNLZXlJZD86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgZGV0YWlscyBvZiB0aGUgZXhlY3V0ZSBjb21tYW5kIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY3V0ZUNvbW1hbmRDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIGxvZyBzZXR0aW5nIHRvIHVzZSBmb3IgcmVkaXJlY3RpbmcgbG9ncyBmb3IgeW91ciBleGVjdXRlIGNvbW1hbmQgcmVzdWx0cy4gVGhlIGZvbGxvd2luZyBsb2cgc2V0dGluZ3MgYXJlIGF2YWlsYWJsZS5cbiAqICAgKyAgYGBOT05FYGA6IFRoZSBleGVjdXRlIGNvbW1hbmQgc2Vzc2lvbiBpcyBub3QgbG9nZ2VkLlxuICogICArICBgYERFRkFVTFRgYDogVGhlIGBgYXdzbG9nc2BgIGNvbmZpZ3VyYXRpb24gaW4gdGhlIHRhc2sgZGVmaW5pdGlvbiBpcyB1c2VkLiBJZiBubyBsb2dnaW5nIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQsIGl0IGRlZmF1bHRzIHRvIHRoaXMgdmFsdWUuIElmIG5vIGBgYXdzbG9nc2BgIGxvZyBkcml2ZXIgaXMgY29uZmlndXJlZCBpbiB0aGUgdGFzayBkZWZpbml0aW9uLCB0aGUgb3V0cHV0IHdvbid0IGJlIGxvZ2dlZC5cbiAqICAgKyAgYGBPVkVSUklERWBgOiBTcGVjaWZ5IHRoZSBsb2dnaW5nIGRldGFpbHMgYXMgYSBwYXJ0IG9mIGBgbG9nQ29uZmlndXJhdGlvbmBgLiBJZiB0aGUgYGBPVkVSUklERWBgIGxvZ2dpbmcgb3B0aW9uIGlzIHNwZWNpZmllZCwgdGhlIGBgbG9nQ29uZmlndXJhdGlvbmBgIGlzIHJlcXVpcmVkLlxuICovXG5Mb2dnaW5nPzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZnkgYW4gS01TbG9uZyBrZXkgSUQgdG8gZW5jcnlwdCB0aGUgZGF0YSBiZXR3ZWVuIHRoZSBsb2NhbCBjbGllbnQgYW5kIHRoZSBjb250YWluZXIuXG4gKi9cbkttc0tleUlkPzogc3RyaW5nXG5Mb2dDb25maWd1cmF0aW9uPzogRXhlY3V0ZUNvbW1hbmRMb2dDb25maWd1cmF0aW9uXG59XG4vKipcbiAqIFRoZSBsb2cgY29uZmlndXJhdGlvbiBmb3IgdGhlIHJlc3VsdHMgb2YgdGhlIGV4ZWN1dGUgY29tbWFuZCBhY3Rpb25zLiBUaGUgbG9ncyBjYW4gYmUgc2VudCB0byBDbG91ZFdhdGNoIExvZ3Mgb3IgYW4gQW1hem9uIFMzIGJ1Y2tldC4gV2hlbiBgYGxvZ2dpbmc9T1ZFUlJJREVgYCBpcyBzcGVjaWZpZWQsIGEgYGBsb2dDb25maWd1cmF0aW9uYGAgbXVzdCBiZSBwcm92aWRlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRlQ29tbWFuZExvZ0NvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gdXNlIGVuY3J5cHRpb24gb24gdGhlIFMzIGxvZ3MuIElmIG5vdCBzcGVjaWZpZWQsIGVuY3J5cHRpb24gaXMgbm90IHVzZWQuXG4gKi9cblMzRW5jcnlwdGlvbkVuYWJsZWQ/OiBib29sZWFuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0byB1c2UgZW5jcnlwdGlvbiBvbiB0aGUgQ2xvdWRXYXRjaCBsb2dzLiBJZiBub3Qgc3BlY2lmaWVkLCBlbmNyeXB0aW9uIHdpbGwgYmUgb2ZmLlxuICovXG5DbG91ZFdhdGNoRW5jcnlwdGlvbkVuYWJsZWQ/OiBib29sZWFuXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBDbG91ZFdhdGNoIGxvZyBncm91cCB0byBzZW5kIGxvZ3MgdG8uXG4gKiAgIFRoZSBDbG91ZFdhdGNoIGxvZyBncm91cCBtdXN0IGFscmVhZHkgYmUgY3JlYXRlZC5cbiAqL1xuQ2xvdWRXYXRjaExvZ0dyb3VwTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBBbiBvcHRpb25hbCBmb2xkZXIgaW4gdGhlIFMzIGJ1Y2tldCB0byBwbGFjZSBsb2dzIGluLlxuICovXG5TM0tleVByZWZpeD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgUzMgYnVja2V0IHRvIHNlbmQgbG9ncyB0by5cbiAqICAgVGhlIFMzIGJ1Y2tldCBtdXN0IGFscmVhZHkgYmUgY3JlYXRlZC5cbiAqL1xuUzNCdWNrZXROYW1lPzogc3RyaW5nXG59XG4vKipcbiAqIFVzZSB0aGlzIHBhcmFtZXRlciB0byBzZXQgYSBkZWZhdWx0IFNlcnZpY2UgQ29ubmVjdCBuYW1lc3BhY2UuIEFmdGVyIHlvdSBzZXQgYSBkZWZhdWx0IFNlcnZpY2UgQ29ubmVjdCBuYW1lc3BhY2UsIGFueSBuZXcgc2VydmljZXMgd2l0aCBTZXJ2aWNlIENvbm5lY3QgdHVybmVkIG9uIHRoYXQgYXJlIGNyZWF0ZWQgaW4gdGhlIGNsdXN0ZXIgYXJlIGFkZGVkIGFzIGNsaWVudCBzZXJ2aWNlcyBpbiB0aGUgbmFtZXNwYWNlLiBUaGlzIHNldHRpbmcgb25seSBhcHBsaWVzIHRvIG5ldyBzZXJ2aWNlcyB0aGF0IHNldCB0aGUgYGBlbmFibGVkYGAgcGFyYW1ldGVyIHRvIGBgdHJ1ZWBgIGluIHRoZSBgYFNlcnZpY2VDb25uZWN0Q29uZmlndXJhdGlvbmBgLiBZb3UgY2FuIHNldCB0aGUgbmFtZXNwYWNlIG9mIGVhY2ggc2VydmljZSBpbmRpdmlkdWFsbHkgaW4gdGhlIGBgU2VydmljZUNvbm5lY3RDb25maWd1cmF0aW9uYGAgdG8gb3ZlcnJpZGUgdGhpcyBkZWZhdWx0IHBhcmFtZXRlci5cbiAqICBUYXNrcyB0aGF0IHJ1biBpbiBhIG5hbWVzcGFjZSBjYW4gdXNlIHNob3J0IG5hbWVzIHRvIGNvbm5lY3QgdG8gc2VydmljZXMgaW4gdGhlIG5hbWVzcGFjZS4gVGFza3MgY2FuIGNvbm5lY3QgdG8gc2VydmljZXMgYWNyb3NzIGFsbCBvZiB0aGUgY2x1c3RlcnMgaW4gdGhlIG5hbWVzcGFjZS4gVGFza3MgY29ubmVjdCB0aHJvdWdoIGEgbWFuYWdlZCBwcm94eSBjb250YWluZXIgdGhhdCBjb2xsZWN0cyBsb2dzIGFuZCBtZXRyaWNzIGZvciBpbmNyZWFzZWQgdmlzaWJpbGl0eS4gT25seSB0aGUgdGFza3MgdGhhdCBBbWF6b24gRUNTIHNlcnZpY2VzIGNyZWF0ZSBhcmUgc3VwcG9ydGVkIHdpdGggU2VydmljZSBDb25uZWN0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtTZXJ2aWNlIENvbm5lY3RdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3NlcnZpY2UtY29ubmVjdC5odG1sKSBpbiB0aGUgKkFtYXpvbiBFbGFzdGljIENvbnRhaW5lciBTZXJ2aWNlIERldmVsb3BlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZUNvbm5lY3REZWZhdWx0cyB7XG4vKipcbiAqIFRoZSBuYW1lc3BhY2UgbmFtZSBvciBmdWxsIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBDTUFQbG9uZyBuYW1lc3BhY2UgdGhhdCdzIHVzZWQgd2hlbiB5b3UgY3JlYXRlIGEgc2VydmljZSBhbmQgZG9uJ3Qgc3BlY2lmeSBhIFNlcnZpY2UgQ29ubmVjdCBjb25maWd1cmF0aW9uLiBUaGUgbmFtZXNwYWNlIG5hbWUgY2FuIGluY2x1ZGUgdXAgdG8gMTAyNCBjaGFyYWN0ZXJzLiBUaGUgbmFtZSBpcyBjYXNlLXNlbnNpdGl2ZS4gVGhlIG5hbWUgY2FuJ3QgaW5jbHVkZSBncmVhdGVyIHRoYW4gKD4pLCBsZXNzIHRoYW4gKDwpLCBkb3VibGUgcXVvdGF0aW9uIG1hcmtzIChcIiksIG9yIHNsYXNoICgvKS5cbiAqICBJZiB5b3UgZW50ZXIgYW4gZXhpc3RpbmcgbmFtZXNwYWNlIG5hbWUgb3IgQVJOLCB0aGVuIHRoYXQgbmFtZXNwYWNlIHdpbGwgYmUgdXNlZC4gQW55IG5hbWVzcGFjZSB0eXBlIGlzIHN1cHBvcnRlZC4gVGhlIG5hbWVzcGFjZSBtdXN0IGJlIGluIHRoaXMgYWNjb3VudCBhbmQgdGhpcyBBV1MgUmVnaW9uLlxuICogIElmIHlvdSBlbnRlciBhIG5ldyBuYW1lLCBhIENNQVBsb25nIG5hbWVzcGFjZSB3aWxsIGJlIGNyZWF0ZWQuIEFtYXpvbiBFQ1MgY3JlYXRlcyBhIENNQVAgbmFtZXNwYWNlIHdpdGggdGhlIFwiQVBJIGNhbGxzXCIgbWV0aG9kIG9mIGluc3RhbmNlIGRpc2NvdmVyeSBvbmx5LiBUaGlzIGluc3RhbmNlIGRpc2NvdmVyeSBtZXRob2QgaXMgdGhlIFwiSFRUUFwiIG5hbWVzcGFjZSB0eXBlIGluIHRoZSBDTElsb25nLiBPdGhlciB0eXBlcyBvZiBpbnN0YW5jZSBkaXNjb3ZlcnkgYXJlbid0IHVzZWQgYnkgU2VydmljZSBDb25uZWN0LlxuICogIElmIHlvdSB1cGRhdGUgdGhlIGNsdXN0ZXIgd2l0aCBhbiBlbXB0eSBzdHJpbmcgYGBcIlwiYGAgZm9yIHRoZSBuYW1lc3BhY2UgbmFtZSwgdGhlIGNsdXN0ZXIgY29uZmlndXJhdGlvbiBmb3IgU2VydmljZSBDb25uZWN0IGlzIHJlbW92ZWQuIE5vdGUgdGhhdCB0aGUgbmFtZXNwYWNlIHdpbGwgcmVtYWluIGluIENNQVAgYW5kIG11c3QgYmUgZGVsZXRlZCBzZXBhcmF0ZWx5LlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IENNQVBsb25nLCBzZWUgW1dvcmtpbmcgd2l0aCBTZXJ2aWNlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Nsb3VkLW1hcC9sYXRlc3QvZGcvd29ya2luZy13aXRoLXNlcnZpY2VzLmh0bWwpIGluIHRoZSAqRGV2ZWxvcGVyIEd1aWRlKi5cbiAqL1xuTmFtZXNwYWNlPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBtZXRhZGF0YSB0aGF0IHlvdSBhcHBseSB0byBhIHJlc291cmNlIHRvIGhlbHAgeW91IGNhdGVnb3JpemUgYW5kIG9yZ2FuaXplIHRoZW0uIEVhY2ggdGFnIGNvbnNpc3RzIG9mIGEga2V5IGFuZCBhbiBvcHRpb25hbCB2YWx1ZS4gWW91IGRlZmluZSB0aGVtLlxuICogIFRoZSBmb2xsb3dpbmcgYmFzaWMgcmVzdHJpY3Rpb25zIGFwcGx5IHRvIHRhZ3M6XG4gKiAgICsgIE1heGltdW0gbnVtYmVyIG9mIHRhZ3MgcGVyIHJlc291cmNlIC0gNTBcbiAqICAgKyAgRm9yIGVhY2ggcmVzb3VyY2UsIGVhY2ggdGFnIGtleSBtdXN0IGJlIHVuaXF1ZSwgYW5kIGVhY2ggdGFnIGtleSBjYW4gaGF2ZSBvbmx5IG9uZSB2YWx1ZS5cbiAqICAgKyAgTWF4aW11bSBrZXkgbGVuZ3RoIC0gMTI4IFVuaWNvZGUgY2hhcmFjdGVycyBpbiBVVEYtOFxuICogICArICBNYXhpbXVtIHZhbHVlIGxlbmd0aCAtIDI1NiBVbmljb2RlIGNoYXJhY3RlcnMgaW4gVVRGLThcbiAqICAgKyAgSWYgeW91ciB0YWdnaW5nIHNjaGVtYSBpcyB1c2VkIGFjcm9zcyBtdWx0aXBsZSBzZXJ2aWNlcyBhbmQgcmVzb3VyY2VzLCByZW1lbWJlciB0aGF0IG90aGVyIHNlcnZpY2VzIG1heSBoYXZlIHJlc3RyaWN0aW9ucyBvbiBhbGxvd2VkIGNoYXJhY3RlcnMuIEdlbmVyYWxseSBhbGxvd2VkIGNoYXJhY3RlcnMgYXJlOiBsZXR0ZXJzLCBudW1iZXJzLCBhbmQgc3BhY2VzIHJlcHJlc2VudGFibGUgaW4gVVRGLTgsIGFuZCB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcnM6ICsgLSA9IC4gXyA6IC8gQC5cbiAqICAgKyAgVGFnIGtleXMgYW5kIHZhbHVlcyBhcmUgY2FzZS1zZW5zaXRpdmUuXG4gKiAgICsgIERvIG5vdCB1c2UgYGBhd3M6YGAsIGBgQVdTOmBgLCBvciBhbnkgdXBwZXIgb3IgbG93ZXJjYXNlIGNvbWJpbmF0aW9uIG9mIHN1Y2ggYXMgYSBwcmVmaXggZm9yIGVpdGhlciBrZXlzIG9yIHZhbHVlcyBhcyBpdCBpcyByZXNlcnZlZCBmb3IgQVdTIHVzZS4gWW91IGNhbm5vdCBlZGl0IG9yIGRlbGV0ZSB0YWcga2V5cyBvciB2YWx1ZXMgd2l0aCB0aGlzIHByZWZpeC4gVGFncyB3aXRoIHRoaXMgcHJlZml4IGRvIG5vdCBjb3VudCBhZ2FpbnN0IHlvdXIgdGFncyBwZXIgcmVzb3VyY2UgbGltaXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIHtcbi8qKlxuICogVGhlIG9wdGlvbmFsIHBhcnQgb2YgYSBrZXktdmFsdWUgcGFpciB0aGF0IG1ha2UgdXAgYSB0YWcuIEEgYGB2YWx1ZWBgIGFjdHMgYXMgYSBkZXNjcmlwdG9yIHdpdGhpbiBhIHRhZyBjYXRlZ29yeSAoa2V5KS5cbiAqL1xuVmFsdWU/OiBzdHJpbmdcbi8qKlxuICogT25lIHBhcnQgb2YgYSBrZXktdmFsdWUgcGFpciB0aGF0IG1ha2UgdXAgYSB0YWcuIEEgYGBrZXlgYCBpcyBhIGdlbmVyYWwgbGFiZWwgdGhhdCBhY3RzIGxpa2UgYSBjYXRlZ29yeSBmb3IgbW9yZSBzcGVjaWZpYyB0YWcgdmFsdWVzLlxuICovXG5LZXk/OiBzdHJpbmdcbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWVjcy1jbHVzdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWVjcy1jbHVzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBgYEFXUzo6RUNTOjpDbHVzdGVyYGAgcmVzb3VyY2UgY3JlYXRlcyBhbiBBbWF6b24gRWxhc3RpYyBDb250YWluZXIgU2VydmljZSAoQW1hem9uIEVDUykgY2x1c3Rlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0VDU19DTFVTVEVSIHtcbi8qKlxuICogVGhlIHNldHRpbmdzIHRvIHVzZSB3aGVuIGNyZWF0aW5nIGEgY2x1c3Rlci4gVGhpcyBwYXJhbWV0ZXIgaXMgdXNlZCB0byB0dXJuIG9uIENsb3VkV2F0Y2ggQ29udGFpbmVyIEluc2lnaHRzIHdpdGggZW5oYW5jZWQgb2JzZXJ2YWJpbGl0eSBvciBDbG91ZFdhdGNoIENvbnRhaW5lciBJbnNpZ2h0cyBmb3IgYSBjbHVzdGVyLlxuICogIENvbnRhaW5lciBJbnNpZ2h0cyB3aXRoIGVuaGFuY2VkIG9ic2VydmFiaWxpdHkgcHJvdmlkZXMgYWxsIHRoZSBDb250YWluZXIgSW5zaWdodHMgbWV0cmljcywgcGx1cyBhZGRpdGlvbmFsIHRhc2sgYW5kIGNvbnRhaW5lciBtZXRyaWNzLiBUaGlzIHZlcnNpb24gc3VwcG9ydHMgZW5oYW5jZWQgb2JzZXJ2YWJpbGl0eSBmb3IgQW1hem9uIEVDUyBjbHVzdGVycyB1c2luZyB0aGUgQW1hem9uIEVDMiBhbmQgRmFyZ2F0ZSBsYXVuY2ggdHlwZXMuIEFmdGVyIHlvdSBjb25maWd1cmUgQ29udGFpbmVyIEluc2lnaHRzIHdpdGggZW5oYW5jZWQgb2JzZXJ2YWJpbGl0eSBvbiBBbWF6b24gRUNTLCBDb250YWluZXIgSW5zaWdodHMgYXV0by1jb2xsZWN0cyBkZXRhaWxlZCBpbmZyYXN0cnVjdHVyZSB0ZWxlbWV0cnkgZnJvbSB0aGUgY2x1c3RlciBsZXZlbCBkb3duIHRvIHRoZSBjb250YWluZXIgbGV2ZWwgaW4geW91ciBlbnZpcm9ubWVudCBhbmQgZGlzcGxheXMgdGhlc2UgY3JpdGljYWwgcGVyZm9ybWFuY2UgZGF0YSBpbiBjdXJhdGVkIGRhc2hib2FyZHMgcmVtb3ZpbmcgdGhlIGhlYXZ5IGxpZnRpbmcgaW4gb2JzZXJ2YWJpbGl0eSBzZXQtdXAuIFxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW01vbml0b3IgQW1hem9uIEVDUyBjb250YWluZXJzIHVzaW5nIENvbnRhaW5lciBJbnNpZ2h0cyB3aXRoIGVuaGFuY2VkIG9ic2VydmFiaWxpdHldKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2Nsb3Vkd2F0Y2gtY29udGFpbmVyLWluc2lnaHRzLmh0bWwpIGluIHRoZSAqQW1hem9uIEVsYXN0aWMgQ29udGFpbmVyIFNlcnZpY2UgRGV2ZWxvcGVyIEd1aWRlKi5cbiAqL1xuQ2x1c3RlclNldHRpbmdzPzogQ2x1c3RlclNldHRpbmdzW11cbi8qKlxuICogVGhlIGRlZmF1bHQgY2FwYWNpdHkgcHJvdmlkZXIgc3RyYXRlZ3kgZm9yIHRoZSBjbHVzdGVyLiBXaGVuIHNlcnZpY2VzIG9yIHRhc2tzIGFyZSBydW4gaW4gdGhlIGNsdXN0ZXIgd2l0aCBubyBsYXVuY2ggdHlwZSBvciBjYXBhY2l0eSBwcm92aWRlciBzdHJhdGVneSBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IGNhcGFjaXR5IHByb3ZpZGVyIHN0cmF0ZWd5IGlzIHVzZWQuXG4gKi9cbkRlZmF1bHRDYXBhY2l0eVByb3ZpZGVyU3RyYXRlZ3k/OiBDYXBhY2l0eVByb3ZpZGVyU3RyYXRlZ3lJdGVtW11cbkNvbmZpZ3VyYXRpb24/OiBDbHVzdGVyQ29uZmlndXJhdGlvblxuU2VydmljZUNvbm5lY3REZWZhdWx0cz86IFNlcnZpY2VDb25uZWN0RGVmYXVsdHNcbi8qKlxuICogVGhlIHNob3J0IG5hbWUgb2Ygb25lIG9yIG1vcmUgY2FwYWNpdHkgcHJvdmlkZXJzIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBjbHVzdGVyLiBBIGNhcGFjaXR5IHByb3ZpZGVyIG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIGEgY2x1c3RlciBiZWZvcmUgaXQgY2FuIGJlIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlIGRlZmF1bHQgY2FwYWNpdHkgcHJvdmlkZXIgc3RyYXRlZ3kgb2YgdGhlIGNsdXN0ZXIgb3IgdXNlZCBpbiBhIGNhcGFjaXR5IHByb3ZpZGVyIHN0cmF0ZWd5IHdoZW4gY2FsbGluZyB0aGUgW0NyZWF0ZVNlcnZpY2VdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlU2VydmljZS5odG1sKSBvciBbUnVuVGFza10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUy9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9SdW5UYXNrLmh0bWwpIGFjdGlvbnMuXG4gKiAgSWYgc3BlY2lmeWluZyBhIGNhcGFjaXR5IHByb3ZpZGVyIHRoYXQgdXNlcyBhbiBBdXRvIFNjYWxpbmcgZ3JvdXAsIHRoZSBjYXBhY2l0eSBwcm92aWRlciBtdXN0IGJlIGNyZWF0ZWQgYnV0IG5vdCBhc3NvY2lhdGVkIHdpdGggYW5vdGhlciBjbHVzdGVyLiBOZXcgQXV0byBTY2FsaW5nIGdyb3VwIGNhcGFjaXR5IHByb3ZpZGVycyBjYW4gYmUgY3JlYXRlZCB3aXRoIHRoZSBbQ3JlYXRlQ2FwYWNpdHlQcm92aWRlcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUy9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVDYXBhY2l0eVByb3ZpZGVyLmh0bWwpIEFQSSBvcGVyYXRpb24uXG4gKiAgVG8gdXNlIGEgRkFSR0FURWxvbmcgY2FwYWNpdHkgcHJvdmlkZXIsIHNwZWNpZnkgZWl0aGVyIHRoZSBgYEZBUkdBVEVgYCBvciBgYEZBUkdBVEVfU1BPVGBgIGNhcGFjaXR5IHByb3ZpZGVycy4gVGhlIEZBUkdBVEVsb25nIGNhcGFjaXR5IHByb3ZpZGVycyBhcmUgYXZhaWxhYmxlIHRvIGFsbCBhY2NvdW50cyBhbmQgb25seSBuZWVkIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCBhIGNsdXN0ZXIgdG8gYmUgdXNlZC5cbiAqICBUaGUgW1B1dENhcGFjaXR5UHJvdmlkZXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfUHV0Q2FwYWNpdHlQcm92aWRlci5odG1sKSBBUEkgb3BlcmF0aW9uIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBjYXBhY2l0eSBwcm92aWRlcnMgZm9yIGEgY2x1c3RlciBhZnRlciB0aGUgY2x1c3RlciBpcyBjcmVhdGVkLlxuICovXG5DYXBhY2l0eVByb3ZpZGVycz86IHN0cmluZ1tdXG4vKipcbiAqIEEgdXNlci1nZW5lcmF0ZWQgc3RyaW5nIHRoYXQgeW91IHVzZSB0byBpZGVudGlmeSB5b3VyIGNsdXN0ZXIuIElmIHlvdSBkb24ndCBzcGVjaWZ5IGEgbmFtZSwgQ0ZObG9uZyBnZW5lcmF0ZXMgYSB1bmlxdWUgcGh5c2ljYWwgSUQgZm9yIHRoZSBuYW1lLlxuICovXG5DbHVzdGVyTmFtZT86IHN0cmluZ1xuQXJuPzogc3RyaW5nXG4vKipcbiAqIFRoZSBtZXRhZGF0YSB0aGF0IHlvdSBhcHBseSB0byB0aGUgY2x1c3RlciB0byBoZWxwIHlvdSBjYXRlZ29yaXplIGFuZCBvcmdhbml6ZSB0aGVtLiBFYWNoIHRhZyBjb25zaXN0cyBvZiBhIGtleSBhbmQgYW4gb3B0aW9uYWwgdmFsdWUuIFlvdSBkZWZpbmUgYm90aC5cbiAqICBUaGUgZm9sbG93aW5nIGJhc2ljIHJlc3RyaWN0aW9ucyBhcHBseSB0byB0YWdzOlxuICogICArICBNYXhpbXVtIG51bWJlciBvZiB0YWdzIHBlciByZXNvdXJjZSAtIDUwXG4gKiAgICsgIEZvciBlYWNoIHJlc291cmNlLCBlYWNoIHRhZyBrZXkgbXVzdCBiZSB1bmlxdWUsIGFuZCBlYWNoIHRhZyBrZXkgY2FuIGhhdmUgb25seSBvbmUgdmFsdWUuXG4gKiAgICsgIE1heGltdW0ga2V5IGxlbmd0aCAtIDEyOCBVbmljb2RlIGNoYXJhY3RlcnMgaW4gVVRGLThcbiAqICAgKyAgTWF4aW11bSB2YWx1ZSBsZW5ndGggLSAyNTYgVW5pY29kZSBjaGFyYWN0ZXJzIGluIFVURi04XG4gKiAgICsgIElmIHlvdXIgdGFnZ2luZyBzY2hlbWEgaXMgdXNlZCBhY3Jvc3MgbXVsdGlwbGUgc2VydmljZXMgYW5kIHJlc291cmNlcywgcmVtZW1iZXIgdGhhdCBvdGhlciBzZXJ2aWNlcyBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gYWxsb3dlZCBjaGFyYWN0ZXJzLiBHZW5lcmFsbHkgYWxsb3dlZCBjaGFyYWN0ZXJzIGFyZTogbGV0dGVycywgbnVtYmVycywgYW5kIHNwYWNlcyByZXByZXNlbnRhYmxlIGluIFVURi04LCBhbmQgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiArIC0gPSAuIF8gOiAvIEAuXG4gKiAgICsgIFRhZyBrZXlzIGFuZCB2YWx1ZXMgYXJlIGNhc2Utc2Vuc2l0aXZlLlxuICogICArICBEbyBub3QgdXNlIGBgYXdzOmBgLCBgYEFXUzpgYCwgb3IgYW55IHVwcGVyIG9yIGxvd2VyY2FzZSBjb21iaW5hdGlvbiBvZiBzdWNoIGFzIGEgcHJlZml4IGZvciBlaXRoZXIga2V5cyBvciB2YWx1ZXMgYXMgaXQgaXMgcmVzZXJ2ZWQgZm9yIEFXUyB1c2UuIFlvdSBjYW5ub3QgZWRpdCBvciBkZWxldGUgdGFnIGtleXMgb3IgdmFsdWVzIHdpdGggdGhpcyBwcmVmaXguIFRhZ3Mgd2l0aCB0aGlzIHByZWZpeCBkbyBub3QgY291bnQgYWdhaW5zdCB5b3VyIHRhZ3MgcGVyIHJlc291cmNlIGxpbWl0LlxuICovXG5UYWdzPzogVGFnW11cbn1cbi8qKlxuICogVGhlIHNldHRpbmdzIHRvIHVzZSB3aGVuIGNyZWF0aW5nIGEgY2x1c3Rlci4gVGhpcyBwYXJhbWV0ZXIgaXMgdXNlZCB0byB0dXJuIG9uIENsb3VkV2F0Y2ggQ29udGFpbmVyIEluc2lnaHRzIHdpdGggZW5oYW5jZWQgb2JzZXJ2YWJpbGl0eSBvciBDbG91ZFdhdGNoIENvbnRhaW5lciBJbnNpZ2h0cyBmb3IgYSBjbHVzdGVyLlxuICogIENvbnRhaW5lciBJbnNpZ2h0cyB3aXRoIGVuaGFuY2VkIG9ic2VydmFiaWxpdHkgcHJvdmlkZXMgYWxsIHRoZSBDb250YWluZXIgSW5zaWdodHMgbWV0cmljcywgcGx1cyBhZGRpdGlvbmFsIHRhc2sgYW5kIGNvbnRhaW5lciBtZXRyaWNzLiBUaGlzIHZlcnNpb24gc3VwcG9ydHMgZW5oYW5jZWQgb2JzZXJ2YWJpbGl0eSBmb3IgQW1hem9uIEVDUyBjbHVzdGVycyB1c2luZyB0aGUgQW1hem9uIEVDMiBhbmQgRmFyZ2F0ZSBsYXVuY2ggdHlwZXMuIEFmdGVyIHlvdSBjb25maWd1cmUgQ29udGFpbmVyIEluc2lnaHRzIHdpdGggZW5oYW5jZWQgb2JzZXJ2YWJpbGl0eSBvbiBBbWF6b24gRUNTLCBDb250YWluZXIgSW5zaWdodHMgYXV0by1jb2xsZWN0cyBkZXRhaWxlZCBpbmZyYXN0cnVjdHVyZSB0ZWxlbWV0cnkgZnJvbSB0aGUgY2x1c3RlciBsZXZlbCBkb3duIHRvIHRoZSBjb250YWluZXIgbGV2ZWwgaW4geW91ciBlbnZpcm9ubWVudCBhbmQgZGlzcGxheXMgdGhlc2UgY3JpdGljYWwgcGVyZm9ybWFuY2UgZGF0YSBpbiBjdXJhdGVkIGRhc2hib2FyZHMgcmVtb3ZpbmcgdGhlIGhlYXZ5IGxpZnRpbmcgaW4gb2JzZXJ2YWJpbGl0eSBzZXQtdXAuIFxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW01vbml0b3IgQW1hem9uIEVDUyBjb250YWluZXJzIHVzaW5nIENvbnRhaW5lciBJbnNpZ2h0cyB3aXRoIGVuaGFuY2VkIG9ic2VydmFiaWxpdHldKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2Nsb3Vkd2F0Y2gtY29udGFpbmVyLWluc2lnaHRzLmh0bWwpIGluIHRoZSAqQW1hem9uIEVsYXN0aWMgQ29udGFpbmVyIFNlcnZpY2UgRGV2ZWxvcGVyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbHVzdGVyU2V0dGluZ3Mge1xuLyoqXG4gKiBUaGUgdmFsdWUgdG8gc2V0IGZvciB0aGUgY2x1c3RlciBzZXR0aW5nLiBUaGUgc3VwcG9ydGVkIHZhbHVlcyBhcmUgYGBlbmhhbmNlZGBgLCBgYGVuYWJsZWRgYCwgYW5kIGBgZGlzYWJsZWRgYC4gXG4gKiAgVG8gdXNlIENvbnRhaW5lciBJbnNpZ2h0cyB3aXRoIGVuaGFuY2VkIG9ic2VydmFiaWxpdHksIHNldCB0aGUgYGBjb250YWluZXJJbnNpZ2h0c2BgIGFjY291bnQgc2V0dGluZyB0byBgYGVuaGFuY2VkYGAuXG4gKiAgVG8gdXNlIENvbnRhaW5lciBJbnNpZ2h0cywgc2V0IHRoZSBgYGNvbnRhaW5lckluc2lnaHRzYGAgYWNjb3VudCBzZXR0aW5nIHRvIGBgZW5hYmxlZGBgLlxuICogIElmIGEgY2x1c3RlciB2YWx1ZSBpcyBzcGVjaWZpZWQsIGl0IHdpbGwgb3ZlcnJpZGUgdGhlIGBgY29udGFpbmVySW5zaWdodHNgYCB2YWx1ZSBzZXQgd2l0aCBbUHV0QWNjb3VudFNldHRpbmddKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfUHV0QWNjb3VudFNldHRpbmcuaHRtbCkgb3IgW1B1dEFjY291bnRTZXR0aW5nRGVmYXVsdF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUy9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9QdXRBY2NvdW50U2V0dGluZ0RlZmF1bHQuaHRtbCkuXG4gKi9cblZhbHVlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBjbHVzdGVyIHNldHRpbmcuIFRoZSB2YWx1ZSBpcyBgYGNvbnRhaW5lckluc2lnaHRzYGAuXG4gKi9cbk5hbWU/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIGBgQ2FwYWNpdHlQcm92aWRlclN0cmF0ZWd5SXRlbWBgIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgZGV0YWlscyBvZiB0aGUgZGVmYXVsdCBjYXBhY2l0eSBwcm92aWRlciBzdHJhdGVneSBmb3IgdGhlIGNsdXN0ZXIuIFdoZW4gc2VydmljZXMgb3IgdGFza3MgYXJlIHJ1biBpbiB0aGUgY2x1c3RlciB3aXRoIG5vIGxhdW5jaCB0eXBlIG9yIGNhcGFjaXR5IHByb3ZpZGVyIHN0cmF0ZWd5IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgY2FwYWNpdHkgcHJvdmlkZXIgc3RyYXRlZ3kgaXMgdXNlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYXBhY2l0eVByb3ZpZGVyU3RyYXRlZ3lJdGVtIHtcbi8qKlxuICogVGhlIHNob3J0IG5hbWUgb2YgdGhlIGNhcGFjaXR5IHByb3ZpZGVyLiBUaGlzIGNhbiBiZSBlaXRoZXIgYW4gQVdTIG1hbmFnZWQgY2FwYWNpdHkgcHJvdmlkZXIgKGBgRkFSR0FURWBgIG9yIGBgRkFSR0FURV9TUE9UYGApIG9yIHRoZSBuYW1lIG9mIGEgY3VzdG9tIGNhcGFjaXR5IHByb3ZpZGVyIHRoYXQgeW91IGNyZWF0ZWQuXG4gKi9cbkNhcGFjaXR5UHJvdmlkZXI/OiBzdHJpbmdcbi8qKlxuICogVGhlICp3ZWlnaHQqIHZhbHVlIGRlc2lnbmF0ZXMgdGhlIHJlbGF0aXZlIHBlcmNlbnRhZ2Ugb2YgdGhlIHRvdGFsIG51bWJlciBvZiB0YXNrcyBsYXVuY2hlZCB0aGF0IHNob3VsZCB1c2UgdGhlIHNwZWNpZmllZCBjYXBhY2l0eSBwcm92aWRlci4gVGhlIGBgd2VpZ2h0YGAgdmFsdWUgaXMgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uIGFmdGVyIHRoZSBgYGJhc2VgYCB2YWx1ZSwgaWYgZGVmaW5lZCwgaXMgc2F0aXNmaWVkLlxuICogIElmIG5vIGBgd2VpZ2h0YGAgdmFsdWUgaXMgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBgYDBgYCBpcyB1c2VkLiBXaGVuIG11bHRpcGxlIGNhcGFjaXR5IHByb3ZpZGVycyBhcmUgc3BlY2lmaWVkIHdpdGhpbiBhIGNhcGFjaXR5IHByb3ZpZGVyIHN0cmF0ZWd5LCBhdCBsZWFzdCBvbmUgb2YgdGhlIGNhcGFjaXR5IHByb3ZpZGVycyBtdXN0IGhhdmUgYSB3ZWlnaHQgdmFsdWUgZ3JlYXRlciB0aGFuIHplcm8gYW5kIGFueSBjYXBhY2l0eSBwcm92aWRlcnMgd2l0aCBhIHdlaWdodCBvZiBgYDBgYCBjYW4ndCBiZSB1c2VkIHRvIHBsYWNlIHRhc2tzLiBJZiB5b3Ugc3BlY2lmeSBtdWx0aXBsZSBjYXBhY2l0eSBwcm92aWRlcnMgaW4gYSBzdHJhdGVneSB0aGF0IGFsbCBoYXZlIGEgd2VpZ2h0IG9mIGBgMGBgLCBhbnkgYGBSdW5UYXNrYGAgb3IgYGBDcmVhdGVTZXJ2aWNlYGAgYWN0aW9ucyB1c2luZyB0aGUgY2FwYWNpdHkgcHJvdmlkZXIgc3RyYXRlZ3kgd2lsbCBmYWlsLlxuICogIFdlaWdodCB2YWx1ZSBjaGFyYWN0ZXJpc3RpY3M6XG4gKiAgICsgIFdlaWdodCBpcyBjb25zaWRlcmVkIGFmdGVyIHRoZSBiYXNlIHZhbHVlIGlzIHNhdGlzZmllZFxuICogICArICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYDBgYCBpZiBub3Qgc3BlY2lmaWVkXG4gKiAgICsgIFRoZSB2YWxpZCByYW5nZSBpcyAwIHRvIDEsMDAwXG4gKiAgICsgIEF0IGxlYXN0IG9uZSBjYXBhY2l0eSBwcm92aWRlciBtdXN0IGhhdmUgYSB3ZWlnaHQgZ3JlYXRlciB0aGFuIHplcm9cbiAqICAgKyAgQ2FwYWNpdHkgcHJvdmlkZXJzIHdpdGggd2VpZ2h0IG9mIGBgMGBgIGNhbm5vdCBwbGFjZSB0YXNrc1xuICogICBcbiAqICBUYXNrIGRpc3RyaWJ1dGlvbiBsb2dpYzpcbiAqICAgMS4gIEJhc2Ugc2F0aXNmYWN0aW9uOiBUaGUgbWluaW11bSBudW1iZXIgb2YgdGFza3Mgc3BlY2lmaWVkIGJ5IHRoZSBiYXNlIHZhbHVlIGFyZSBwbGFjZWQgb24gdGhhdCBjYXBhY2l0eSBwcm92aWRlclxuICogICAxLiAgV2VpZ2h0IGRpc3RyaWJ1dGlvbjogQWZ0ZXIgYmFzZSByZXF1aXJlbWVudHMgYXJlIG1ldCwgYWRkaXRpb25hbCB0YXNrcyBhcmUgZGlzdHJpYnV0ZWQgYWNjb3JkaW5nIHRvIHdlaWdodCByYXRpb3NcbiAqICAgXG4gKiAgRXhhbXBsZXM6XG4gKiAgRXF1YWwgRGlzdHJpYnV0aW9uOiBUd28gY2FwYWNpdHkgcHJvdmlkZXJzIGJvdGggd2l0aCB3ZWlnaHQgYGAxYGAgd2lsbCBzcGxpdCB0YXNrcyBldmVubHkgYWZ0ZXIgYmFzZSByZXF1aXJlbWVudHMgYXJlIG1ldC5cbiAqICBXZWlnaHRlZCBEaXN0cmlidXRpb246IElmIGNhcGFjaXR5UHJvdmlkZXJBIGhhcyB3ZWlnaHQgYGAxYGAgYW5kIGNhcGFjaXR5UHJvdmlkZXJCIGhhcyB3ZWlnaHQgYGA0YGAsIHRoZW4gZm9yIGV2ZXJ5IDEgdGFzayBvbiBBLCA0IHRhc2tzIHdpbGwgcnVuIG9uIEIuXG4gKi9cbldlaWdodD86IG51bWJlclxuLyoqXG4gKiBUaGUgKmJhc2UqIHZhbHVlIGRlc2lnbmF0ZXMgaG93IG1hbnkgdGFza3MsIGF0IGEgbWluaW11bSwgdG8gcnVuIG9uIHRoZSBzcGVjaWZpZWQgY2FwYWNpdHkgcHJvdmlkZXIgZm9yIGVhY2ggc2VydmljZS4gT25seSBvbmUgY2FwYWNpdHkgcHJvdmlkZXIgaW4gYSBjYXBhY2l0eSBwcm92aWRlciBzdHJhdGVneSBjYW4gaGF2ZSBhICpiYXNlKiBkZWZpbmVkLiBJZiBubyB2YWx1ZSBpcyBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHZhbHVlIG9mIGBgMGBgIGlzIHVzZWQuXG4gKiAgQmFzZSB2YWx1ZSBjaGFyYWN0ZXJpc3RpY3M6XG4gKiAgICsgIE9ubHkgb25lIGNhcGFjaXR5IHByb3ZpZGVyIGluIGEgc3RyYXRlZ3kgY2FuIGhhdmUgYSBiYXNlIGRlZmluZWRcbiAqICAgKyAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGAwYGAgaWYgbm90IHNwZWNpZmllZFxuICogICArICBUaGUgdmFsaWQgcmFuZ2UgaXMgMCB0byAxMDAsMDAwXG4gKiAgICsgIEJhc2UgcmVxdWlyZW1lbnRzIGFyZSBzYXRpc2ZpZWQgZmlyc3QgYmVmb3JlIHdlaWdodCBkaXN0cmlidXRpb25cbiAqL1xuQmFzZT86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgZXhlY3V0ZSBjb21tYW5kIGFuZCBtYW5hZ2VkIHN0b3JhZ2UgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNsdXN0ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2x1c3RlckNvbmZpZ3VyYXRpb24ge1xuTWFuYWdlZFN0b3JhZ2VDb25maWd1cmF0aW9uPzogTWFuYWdlZFN0b3JhZ2VDb25maWd1cmF0aW9uXG5FeGVjdXRlQ29tbWFuZENvbmZpZ3VyYXRpb24/OiBFeGVjdXRlQ29tbWFuZENvbmZpZ3VyYXRpb25cbn1cbi8qKlxuICogVGhlIGRldGFpbHMgb2YgdGhlIG1hbmFnZWQgc3RvcmFnZSBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hbmFnZWRTdG9yYWdlQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFNwZWNpZnkgdGhlIEtNU2xvbmcga2V5IElEIGZvciBGYXJnYXRlIGVwaGVtZXJhbCBzdG9yYWdlLlxuICogIFdoZW4geW91IHNwZWNpZnkgYSBgYGZhcmdhdGVFcGhlbWVyYWxTdG9yYWdlS21zS2V5SWRgYCwgQVdTIEZhcmdhdGUgdXNlcyB0aGUga2V5IHRvIGVuY3J5cHQgZGF0YSBhdCByZXN0IGluIGVwaGVtZXJhbCBzdG9yYWdlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBGYXJnYXRlIGVwaGVtZXJhbCBzdG9yYWdlIGVuY3J5cHRpb24sIHNlZSBbQ3VzdG9tZXIgbWFuYWdlZCBrZXlzIGZvciBGYXJnYXRlIGVwaGVtZXJhbCBzdG9yYWdlIGZvciBBbWF6b24gRUNTXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uRUNTL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9mYXJnYXRlLXN0b3JhZ2UtZW5jcnlwdGlvbi5odG1sKSBpbiB0aGUgKkFtYXpvbiBFbGFzdGljIENvbnRhaW5lciBTZXJ2aWNlIERldmVsb3BlciBHdWlkZSouXG4gKiAgVGhlIGtleSBtdXN0IGJlIGEgc2luZ2xlIFJlZ2lvbiBrZXkuXG4gKi9cbkZhcmdhdGVFcGhlbWVyYWxTdG9yYWdlS21zS2V5SWQ/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmeSBhIEtNU2xvbmcga2V5IElEIHRvIGVuY3J5cHQgQW1hem9uIEVDUyBtYW5hZ2VkIHN0b3JhZ2UuXG4gKiAgIFdoZW4geW91IHNwZWNpZnkgYSBgYGttc0tleUlkYGAsIEFtYXpvbiBFQ1MgdXNlcyB0aGUga2V5IHRvIGVuY3J5cHQgZGF0YSB2b2x1bWVzIG1hbmFnZWQgYnkgQW1hem9uIEVDUyB0aGF0IGFyZSBhdHRhY2hlZCB0byB0YXNrcyBpbiB0aGUgY2x1c3Rlci4gVGhlIGZvbGxvd2luZyBkYXRhIHZvbHVtZXMgYXJlIG1hbmFnZWQgYnkgQW1hem9uIEVDUzogQW1hem9uIEVCUy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgZW5jcnlwdGlvbiBvZiBBbWF6b24gRUJTIHZvbHVtZXMgYXR0YWNoZWQgdG8gQW1hem9uIEVDUyB0YXNrcywgc2VlIFtFbmNyeXB0IGRhdGEgc3RvcmVkIGluIEFtYXpvbiBFQlMgdm9sdW1lcyBmb3IgQW1hem9uIEVDU10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvZWJzLWttcy1lbmNyeXB0aW9uLmh0bWwpIGluIHRoZSAqQW1hem9uIEVsYXN0aWMgQ29udGFpbmVyIFNlcnZpY2UgRGV2ZWxvcGVyIEd1aWRlKi5cbiAqICBUaGUga2V5IG11c3QgYmUgYSBzaW5nbGUgUmVnaW9uIGtleS5cbiAqL1xuS21zS2V5SWQ/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIGRldGFpbHMgb2YgdGhlIGV4ZWN1dGUgY29tbWFuZCBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWN1dGVDb21tYW5kQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBsb2cgc2V0dGluZyB0byB1c2UgZm9yIHJlZGlyZWN0aW5nIGxvZ3MgZm9yIHlvdXIgZXhlY3V0ZSBjb21tYW5kIHJlc3VsdHMuIFRoZSBmb2xsb3dpbmcgbG9nIHNldHRpbmdzIGFyZSBhdmFpbGFibGUuXG4gKiAgICsgIGBgTk9ORWBgOiBUaGUgZXhlY3V0ZSBjb21tYW5kIHNlc3Npb24gaXMgbm90IGxvZ2dlZC5cbiAqICAgKyAgYGBERUZBVUxUYGA6IFRoZSBgYGF3c2xvZ3NgYCBjb25maWd1cmF0aW9uIGluIHRoZSB0YXNrIGRlZmluaXRpb24gaXMgdXNlZC4gSWYgbm8gbG9nZ2luZyBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkLCBpdCBkZWZhdWx0cyB0byB0aGlzIHZhbHVlLiBJZiBubyBgYGF3c2xvZ3NgYCBsb2cgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgaW4gdGhlIHRhc2sgZGVmaW5pdGlvbiwgdGhlIG91dHB1dCB3b24ndCBiZSBsb2dnZWQuXG4gKiAgICsgIGBgT1ZFUlJJREVgYDogU3BlY2lmeSB0aGUgbG9nZ2luZyBkZXRhaWxzIGFzIGEgcGFydCBvZiBgYGxvZ0NvbmZpZ3VyYXRpb25gYC4gSWYgdGhlIGBgT1ZFUlJJREVgYCBsb2dnaW5nIG9wdGlvbiBpcyBzcGVjaWZpZWQsIHRoZSBgYGxvZ0NvbmZpZ3VyYXRpb25gYCBpcyByZXF1aXJlZC5cbiAqL1xuTG9nZ2luZz86IHN0cmluZ1xuLyoqXG4gKiBTcGVjaWZ5IGFuIEtNU2xvbmcga2V5IElEIHRvIGVuY3J5cHQgdGhlIGRhdGEgYmV0d2VlbiB0aGUgbG9jYWwgY2xpZW50IGFuZCB0aGUgY29udGFpbmVyLlxuICovXG5LbXNLZXlJZD86IHN0cmluZ1xuTG9nQ29uZmlndXJhdGlvbj86IEV4ZWN1dGVDb21tYW5kTG9nQ29uZmlndXJhdGlvblxufVxuLyoqXG4gKiBUaGUgbG9nIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSByZXN1bHRzIG9mIHRoZSBleGVjdXRlIGNvbW1hbmQgYWN0aW9ucy4gVGhlIGxvZ3MgY2FuIGJlIHNlbnQgdG8gQ2xvdWRXYXRjaCBMb2dzIG9yIGFuIEFtYXpvbiBTMyBidWNrZXQuIFdoZW4gYGBsb2dnaW5nPU9WRVJSSURFYGAgaXMgc3BlY2lmaWVkLCBhIGBgbG9nQ29uZmlndXJhdGlvbmBgIG11c3QgYmUgcHJvdmlkZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY3V0ZUNvbW1hbmRMb2dDb25maWd1cmF0aW9uIHtcbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHVzZSBlbmNyeXB0aW9uIG9uIHRoZSBTMyBsb2dzLiBJZiBub3Qgc3BlY2lmaWVkLCBlbmNyeXB0aW9uIGlzIG5vdCB1c2VkLlxuICovXG5TM0VuY3J5cHRpb25FbmFibGVkPzogYm9vbGVhblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gdXNlIGVuY3J5cHRpb24gb24gdGhlIENsb3VkV2F0Y2ggbG9ncy4gSWYgbm90IHNwZWNpZmllZCwgZW5jcnlwdGlvbiB3aWxsIGJlIG9mZi5cbiAqL1xuQ2xvdWRXYXRjaEVuY3J5cHRpb25FbmFibGVkPzogYm9vbGVhblxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgQ2xvdWRXYXRjaCBsb2cgZ3JvdXAgdG8gc2VuZCBsb2dzIHRvLlxuICogICBUaGUgQ2xvdWRXYXRjaCBsb2cgZ3JvdXAgbXVzdCBhbHJlYWR5IGJlIGNyZWF0ZWQuXG4gKi9cbkNsb3VkV2F0Y2hMb2dHcm91cE5hbWU/OiBzdHJpbmdcbi8qKlxuICogQW4gb3B0aW9uYWwgZm9sZGVyIGluIHRoZSBTMyBidWNrZXQgdG8gcGxhY2UgbG9ncyBpbi5cbiAqL1xuUzNLZXlQcmVmaXg/OiBzdHJpbmdcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIFMzIGJ1Y2tldCB0byBzZW5kIGxvZ3MgdG8uXG4gKiAgIFRoZSBTMyBidWNrZXQgbXVzdCBhbHJlYWR5IGJlIGNyZWF0ZWQuXG4gKi9cblMzQnVja2V0TmFtZT86IHN0cmluZ1xufVxuLyoqXG4gKiBVc2UgdGhpcyBwYXJhbWV0ZXIgdG8gc2V0IGEgZGVmYXVsdCBTZXJ2aWNlIENvbm5lY3QgbmFtZXNwYWNlLiBBZnRlciB5b3Ugc2V0IGEgZGVmYXVsdCBTZXJ2aWNlIENvbm5lY3QgbmFtZXNwYWNlLCBhbnkgbmV3IHNlcnZpY2VzIHdpdGggU2VydmljZSBDb25uZWN0IHR1cm5lZCBvbiB0aGF0IGFyZSBjcmVhdGVkIGluIHRoZSBjbHVzdGVyIGFyZSBhZGRlZCBhcyBjbGllbnQgc2VydmljZXMgaW4gdGhlIG5hbWVzcGFjZS4gVGhpcyBzZXR0aW5nIG9ubHkgYXBwbGllcyB0byBuZXcgc2VydmljZXMgdGhhdCBzZXQgdGhlIGBgZW5hYmxlZGBgIHBhcmFtZXRlciB0byBgYHRydWVgYCBpbiB0aGUgYGBTZXJ2aWNlQ29ubmVjdENvbmZpZ3VyYXRpb25gYC4gWW91IGNhbiBzZXQgdGhlIG5hbWVzcGFjZSBvZiBlYWNoIHNlcnZpY2UgaW5kaXZpZHVhbGx5IGluIHRoZSBgYFNlcnZpY2VDb25uZWN0Q29uZmlndXJhdGlvbmBgIHRvIG92ZXJyaWRlIHRoaXMgZGVmYXVsdCBwYXJhbWV0ZXIuXG4gKiAgVGFza3MgdGhhdCBydW4gaW4gYSBuYW1lc3BhY2UgY2FuIHVzZSBzaG9ydCBuYW1lcyB0byBjb25uZWN0IHRvIHNlcnZpY2VzIGluIHRoZSBuYW1lc3BhY2UuIFRhc2tzIGNhbiBjb25uZWN0IHRvIHNlcnZpY2VzIGFjcm9zcyBhbGwgb2YgdGhlIGNsdXN0ZXJzIGluIHRoZSBuYW1lc3BhY2UuIFRhc2tzIGNvbm5lY3QgdGhyb3VnaCBhIG1hbmFnZWQgcHJveHkgY29udGFpbmVyIHRoYXQgY29sbGVjdHMgbG9ncyBhbmQgbWV0cmljcyBmb3IgaW5jcmVhc2VkIHZpc2liaWxpdHkuIE9ubHkgdGhlIHRhc2tzIHRoYXQgQW1hem9uIEVDUyBzZXJ2aWNlcyBjcmVhdGUgYXJlIHN1cHBvcnRlZCB3aXRoIFNlcnZpY2UgQ29ubmVjdC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU2VydmljZSBDb25uZWN0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uRUNTL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9zZXJ2aWNlLWNvbm5lY3QuaHRtbCkgaW4gdGhlICpBbWF6b24gRWxhc3RpYyBDb250YWluZXIgU2VydmljZSBEZXZlbG9wZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VDb25uZWN0RGVmYXVsdHMge1xuLyoqXG4gKiBUaGUgbmFtZXNwYWNlIG5hbWUgb3IgZnVsbCBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgQ01BUGxvbmcgbmFtZXNwYWNlIHRoYXQncyB1c2VkIHdoZW4geW91IGNyZWF0ZSBhIHNlcnZpY2UgYW5kIGRvbid0IHNwZWNpZnkgYSBTZXJ2aWNlIENvbm5lY3QgY29uZmlndXJhdGlvbi4gVGhlIG5hbWVzcGFjZSBuYW1lIGNhbiBpbmNsdWRlIHVwIHRvIDEwMjQgY2hhcmFjdGVycy4gVGhlIG5hbWUgaXMgY2FzZS1zZW5zaXRpdmUuIFRoZSBuYW1lIGNhbid0IGluY2x1ZGUgZ3JlYXRlciB0aGFuICg+KSwgbGVzcyB0aGFuICg8KSwgZG91YmxlIHF1b3RhdGlvbiBtYXJrcyAoXCIpLCBvciBzbGFzaCAoLykuXG4gKiAgSWYgeW91IGVudGVyIGFuIGV4aXN0aW5nIG5hbWVzcGFjZSBuYW1lIG9yIEFSTiwgdGhlbiB0aGF0IG5hbWVzcGFjZSB3aWxsIGJlIHVzZWQuIEFueSBuYW1lc3BhY2UgdHlwZSBpcyBzdXBwb3J0ZWQuIFRoZSBuYW1lc3BhY2UgbXVzdCBiZSBpbiB0aGlzIGFjY291bnQgYW5kIHRoaXMgQVdTIFJlZ2lvbi5cbiAqICBJZiB5b3UgZW50ZXIgYSBuZXcgbmFtZSwgYSBDTUFQbG9uZyBuYW1lc3BhY2Ugd2lsbCBiZSBjcmVhdGVkLiBBbWF6b24gRUNTIGNyZWF0ZXMgYSBDTUFQIG5hbWVzcGFjZSB3aXRoIHRoZSBcIkFQSSBjYWxsc1wiIG1ldGhvZCBvZiBpbnN0YW5jZSBkaXNjb3Zlcnkgb25seS4gVGhpcyBpbnN0YW5jZSBkaXNjb3ZlcnkgbWV0aG9kIGlzIHRoZSBcIkhUVFBcIiBuYW1lc3BhY2UgdHlwZSBpbiB0aGUgQ0xJbG9uZy4gT3RoZXIgdHlwZXMgb2YgaW5zdGFuY2UgZGlzY292ZXJ5IGFyZW4ndCB1c2VkIGJ5IFNlcnZpY2UgQ29ubmVjdC5cbiAqICBJZiB5b3UgdXBkYXRlIHRoZSBjbHVzdGVyIHdpdGggYW4gZW1wdHkgc3RyaW5nIGBgXCJcImBgIGZvciB0aGUgbmFtZXNwYWNlIG5hbWUsIHRoZSBjbHVzdGVyIGNvbmZpZ3VyYXRpb24gZm9yIFNlcnZpY2UgQ29ubmVjdCBpcyByZW1vdmVkLiBOb3RlIHRoYXQgdGhlIG5hbWVzcGFjZSB3aWxsIHJlbWFpbiBpbiBDTUFQIGFuZCBtdXN0IGJlIGRlbGV0ZWQgc2VwYXJhdGVseS5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBDTUFQbG9uZywgc2VlIFtXb3JraW5nIHdpdGggU2VydmljZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jbG91ZC1tYXAvbGF0ZXN0L2RnL3dvcmtpbmctd2l0aC1zZXJ2aWNlcy5odG1sKSBpbiB0aGUgKkRldmVsb3BlciBHdWlkZSouXG4gKi9cbk5hbWVzcGFjZT86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgbWV0YWRhdGEgdGhhdCB5b3UgYXBwbHkgdG8gYSByZXNvdXJjZSB0byBoZWxwIHlvdSBjYXRlZ29yaXplIGFuZCBvcmdhbml6ZSB0aGVtLiBFYWNoIHRhZyBjb25zaXN0cyBvZiBhIGtleSBhbmQgYW4gb3B0aW9uYWwgdmFsdWUuIFlvdSBkZWZpbmUgdGhlbS5cbiAqICBUaGUgZm9sbG93aW5nIGJhc2ljIHJlc3RyaWN0aW9ucyBhcHBseSB0byB0YWdzOlxuICogICArICBNYXhpbXVtIG51bWJlciBvZiB0YWdzIHBlciByZXNvdXJjZSAtIDUwXG4gKiAgICsgIEZvciBlYWNoIHJlc291cmNlLCBlYWNoIHRhZyBrZXkgbXVzdCBiZSB1bmlxdWUsIGFuZCBlYWNoIHRhZyBrZXkgY2FuIGhhdmUgb25seSBvbmUgdmFsdWUuXG4gKiAgICsgIE1heGltdW0ga2V5IGxlbmd0aCAtIDEyOCBVbmljb2RlIGNoYXJhY3RlcnMgaW4gVVRGLThcbiAqICAgKyAgTWF4aW11bSB2YWx1ZSBsZW5ndGggLSAyNTYgVW5pY29kZSBjaGFyYWN0ZXJzIGluIFVURi04XG4gKiAgICsgIElmIHlvdXIgdGFnZ2luZyBzY2hlbWEgaXMgdXNlZCBhY3Jvc3MgbXVsdGlwbGUgc2VydmljZXMgYW5kIHJlc291cmNlcywgcmVtZW1iZXIgdGhhdCBvdGhlciBzZXJ2aWNlcyBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gYWxsb3dlZCBjaGFyYWN0ZXJzLiBHZW5lcmFsbHkgYWxsb3dlZCBjaGFyYWN0ZXJzIGFyZTogbGV0dGVycywgbnVtYmVycywgYW5kIHNwYWNlcyByZXByZXNlbnRhYmxlIGluIFVURi04LCBhbmQgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiArIC0gPSAuIF8gOiAvIEAuXG4gKiAgICsgIFRhZyBrZXlzIGFuZCB2YWx1ZXMgYXJlIGNhc2Utc2Vuc2l0aXZlLlxuICogICArICBEbyBub3QgdXNlIGBgYXdzOmBgLCBgYEFXUzpgYCwgb3IgYW55IHVwcGVyIG9yIGxvd2VyY2FzZSBjb21iaW5hdGlvbiBvZiBzdWNoIGFzIGEgcHJlZml4IGZvciBlaXRoZXIga2V5cyBvciB2YWx1ZXMgYXMgaXQgaXMgcmVzZXJ2ZWQgZm9yIEFXUyB1c2UuIFlvdSBjYW5ub3QgZWRpdCBvciBkZWxldGUgdGFnIGtleXMgb3IgdmFsdWVzIHdpdGggdGhpcyBwcmVmaXguIFRhZ3Mgd2l0aCB0aGlzIHByZWZpeCBkbyBub3QgY291bnQgYWdhaW5zdCB5b3VyIHRhZ3MgcGVyIHJlc291cmNlIGxpbWl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG4vKipcbiAqIFRoZSBvcHRpb25hbCBwYXJ0IG9mIGEga2V5LXZhbHVlIHBhaXIgdGhhdCBtYWtlIHVwIGEgdGFnLiBBIGBgdmFsdWVgYCBhY3RzIGFzIGEgZGVzY3JpcHRvciB3aXRoaW4gYSB0YWcgY2F0ZWdvcnkgKGtleSkuXG4gKi9cblZhbHVlPzogc3RyaW5nXG4vKipcbiAqIE9uZSBwYXJ0IG9mIGEga2V5LXZhbHVlIHBhaXIgdGhhdCBtYWtlIHVwIGEgdGFnLiBBIGBga2V5YGAgaXMgYSBnZW5lcmFsIGxhYmVsIHRoYXQgYWN0cyBsaWtlIGEgY2F0ZWdvcnkgZm9yIG1vcmUgc3BlY2lmaWMgdGFnIHZhbHVlcy5cbiAqL1xuS2V5Pzogc3RyaW5nXG59XG4iXX0=
@@ -182,6 +182,7 @@ export interface Action {
182
182
  */
183
183
  Type: string;
184
184
  RedirectConfig?: RedirectConfig;
185
+ JwtValidationConfig?: JwtValidationConfig;
185
186
  ForwardConfig?: ForwardConfig;
186
187
  AuthenticateOidcConfig?: AuthenticateOidcConfig;
187
188
  }
@@ -281,6 +282,16 @@ export interface RedirectConfig {
281
282
  */
282
283
  StatusCode: string;
283
284
  }
285
+ export interface JwtValidationConfig {
286
+ JwksEndpoint: string;
287
+ Issuer: string;
288
+ AdditionalClaims?: JwtValidationActionAdditionalClaim[];
289
+ }
290
+ export interface JwtValidationActionAdditionalClaim {
291
+ Format: string;
292
+ Values: string[];
293
+ Name: string;
294
+ }
284
295
  /**
285
296
  * Information for creating an action that distributes requests among multiple target groups. Specify only when ``Type`` is ``forward``.
286
297
  * If you specify both ``ForwardConfig`` and ``TargetGroupArn``, you can specify only one target group using ``ForwardConfig`` and it must be the same target group specified in ``TargetGroupArn``.
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjItbGlzdGVuZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi1saXN0ZW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBbSFRUUFMgbGlzdGVuZXJzXSBJbmZvcm1hdGlvbiBhYm91dCBhbiBpZGVudGl0eSBwcm92aWRlciB0aGF0IGlzIGNvbXBsaWFudCB3aXRoIE9wZW5JRCBDb25uZWN0IChPSURDKS4gU3BlY2lmeSBvbmx5IHdoZW4gYGBUeXBlYGAgaXMgYGBhdXRoZW50aWNhdGUtb2lkY2BgLlxuICovXG5leHBvcnQgdHlwZSBBdXRoZW50aWNhdGVPaWRjQ29uZmlnID0gKHtcbltrOiBzdHJpbmddOiB1bmtub3duXG59ICYge1xuLyoqXG4gKiBUaGUgYmVoYXZpb3IgaWYgdGhlIHVzZXIgaXMgbm90IGF1dGhlbnRpY2F0ZWQuIFRoZSBmb2xsb3dpbmcgYXJlIHBvc3NpYmxlIHZhbHVlczpcbiAqICAgKyAgZGVueWBgYGAgLSBSZXR1cm4gYW4gSFRUUCA0MDEgVW5hdXRob3JpemVkIGVycm9yLlxuICogICArICBhbGxvd2BgYGAgLSBBbGxvdyB0aGUgcmVxdWVzdCB0byBiZSBmb3J3YXJkZWQgdG8gdGhlIHRhcmdldC5cbiAqICAgKyAgYXV0aGVudGljYXRlYGBgYCAtIFJlZGlyZWN0IHRoZSByZXF1ZXN0IHRvIHRoZSBJZFAgYXV0aG9yaXphdGlvbiBlbmRwb2ludC4gVGhpcyBpcyB0aGUgZGVmYXVsdCB2YWx1ZS5cbiAqL1xuT25VbmF1dGhlbnRpY2F0ZWRSZXF1ZXN0Pzogc3RyaW5nXG4vKipcbiAqIFRoZSB0b2tlbiBlbmRwb2ludCBvZiB0aGUgSWRQLiBUaGlzIG11c3QgYmUgYSBmdWxsIFVSTCwgaW5jbHVkaW5nIHRoZSBIVFRQUyBwcm90b2NvbCwgdGhlIGRvbWFpbiwgYW5kIHRoZSBwYXRoLlxuICovXG5Ub2tlbkVuZHBvaW50OiBzdHJpbmdcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gdXNlIHRoZSBleGlzdGluZyBjbGllbnQgc2VjcmV0IHdoZW4gbW9kaWZ5aW5nIGEgcnVsZS4gSWYgeW91IGFyZSBjcmVhdGluZyBhIHJ1bGUsIHlvdSBjYW4gb21pdCB0aGlzIHBhcmFtZXRlciBvciBzZXQgaXQgdG8gZmFsc2UuXG4gKi9cblVzZUV4aXN0aW5nQ2xpZW50U2VjcmV0PzogYm9vbGVhblxuLyoqXG4gKiBUaGUgbWF4aW11bSBkdXJhdGlvbiBvZiB0aGUgYXV0aGVudGljYXRpb24gc2Vzc2lvbiwgaW4gc2Vjb25kcy4gVGhlIGRlZmF1bHQgaXMgNjA0ODAwIHNlY29uZHMgKDcgZGF5cykuXG4gKi9cblNlc3Npb25UaW1lb3V0Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBzZXQgb2YgdXNlciBjbGFpbXMgdG8gYmUgcmVxdWVzdGVkIGZyb20gdGhlIElkUC4gVGhlIGRlZmF1bHQgaXMgYGBvcGVuaWRgYC5cbiAqICBUbyB2ZXJpZnkgd2hpY2ggc2NvcGUgdmFsdWVzIHlvdXIgSWRQIHN1cHBvcnRzIGFuZCBob3cgdG8gc2VwYXJhdGUgbXVsdGlwbGUgdmFsdWVzLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHlvdXIgSWRQLlxuICovXG5TY29wZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgT0lEQyBpc3N1ZXIgaWRlbnRpZmllciBvZiB0aGUgSWRQLiBUaGlzIG11c3QgYmUgYSBmdWxsIFVSTCwgaW5jbHVkaW5nIHRoZSBIVFRQUyBwcm90b2NvbCwgdGhlIGRvbWFpbiwgYW5kIHRoZSBwYXRoLlxuICovXG5Jc3N1ZXI6IHN0cmluZ1xuLyoqXG4gKiBUaGUgT0F1dGggMi4wIGNsaWVudCBzZWNyZXQuIFRoaXMgcGFyYW1ldGVyIGlzIHJlcXVpcmVkIGlmIHlvdSBhcmUgY3JlYXRpbmcgYSBydWxlLiBJZiB5b3UgYXJlIG1vZGlmeWluZyBhIHJ1bGUsIHlvdSBjYW4gb21pdCB0aGlzIHBhcmFtZXRlciBpZiB5b3Ugc2V0IGBgVXNlRXhpc3RpbmdDbGllbnRTZWNyZXRgYCB0byB0cnVlLlxuICovXG5DbGllbnRTZWNyZXQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIHVzZXIgaW5mbyBlbmRwb2ludCBvZiB0aGUgSWRQLiBUaGlzIG11c3QgYmUgYSBmdWxsIFVSTCwgaW5jbHVkaW5nIHRoZSBIVFRQUyBwcm90b2NvbCwgdGhlIGRvbWFpbiwgYW5kIHRoZSBwYXRoLlxuICovXG5Vc2VySW5mb0VuZHBvaW50OiBzdHJpbmdcbi8qKlxuICogVGhlIE9BdXRoIDIuMCBjbGllbnQgaWRlbnRpZmllci5cbiAqL1xuQ2xpZW50SWQ6IHN0cmluZ1xuLyoqXG4gKiBUaGUgYXV0aG9yaXphdGlvbiBlbmRwb2ludCBvZiB0aGUgSWRQLiBUaGlzIG11c3QgYmUgYSBmdWxsIFVSTCwgaW5jbHVkaW5nIHRoZSBIVFRQUyBwcm90b2NvbCwgdGhlIGRvbWFpbiwgYW5kIHRoZSBwYXRoLlxuICovXG5BdXRob3JpemF0aW9uRW5kcG9pbnQ6IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgY29va2llIHVzZWQgdG8gbWFpbnRhaW4gc2Vzc2lvbiBpbmZvcm1hdGlvbi4gVGhlIGRlZmF1bHQgaXMgQVdTRUxCQXV0aFNlc3Npb25Db29raWUuXG4gKi9cblNlc3Npb25Db29raWVOYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBxdWVyeSBwYXJhbWV0ZXJzICh1cCB0byAxMCkgdG8gaW5jbHVkZSBpbiB0aGUgcmVkaXJlY3QgcmVxdWVzdCB0byB0aGUgYXV0aG9yaXphdGlvbiBlbmRwb2ludC5cbiAqL1xuQXV0aGVudGljYXRpb25SZXF1ZXN0RXh0cmFQYXJhbXM/OiB7XG4vKipcbiAqIFRoaXMgaW50ZXJmYWNlIHdhcyByZWZlcmVuY2VkIGJ5IGB1bmRlZmluZWRgJ3MgSlNPTi1TY2hlbWEgZGVmaW5pdGlvblxuICogdmlhIHRoZSBgcGF0dGVyblByb3BlcnR5YCBcIlthLXpBLVowLTldK1wiLlxuICovXG5bazogc3RyaW5nXTogc3RyaW5nXG59XG59KVxuXG4vKipcbiAqIFNwZWNpZmllcyBhIGxpc3RlbmVyIGZvciBhbiBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VyLCBOZXR3b3JrIExvYWQgQmFsYW5jZXIsIG9yIEdhdGV3YXkgTG9hZCBCYWxhbmNlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0VMQVNUSUNMT0FEQkFMQU5DSU5HVjJfTElTVEVORVIge1xuTGlzdGVuZXJBcm4/OiBzdHJpbmdcbk11dHVhbEF1dGhlbnRpY2F0aW9uPzogTXV0dWFsQXV0aGVudGljYXRpb25cbi8qKlxuICogVGhlIGxpc3RlbmVyIGF0dHJpYnV0ZXMuIEF0dHJpYnV0ZXMgdGhhdCB5b3UgZG8gbm90IG1vZGlmeSByZXRhaW4gdGhlaXIgY3VycmVudCB2YWx1ZXMuXG4gKi9cbkxpc3RlbmVyQXR0cmlidXRlcz86IExpc3RlbmVyQXR0cmlidXRlW11cbi8qKlxuICogW1RMUyBsaXN0ZW5lcl0gVGhlIG5hbWUgb2YgdGhlIEFwcGxpY2F0aW9uLUxheWVyIFByb3RvY29sIE5lZ290aWF0aW9uIChBTFBOKSBwb2xpY3kuXG4gKi9cbkFscG5Qb2xpY3k/OiBzdHJpbmdbXVxuLyoqXG4gKiBbSFRUUFMgYW5kIFRMUyBsaXN0ZW5lcnNdIFRoZSBzZWN1cml0eSBwb2xpY3kgdGhhdCBkZWZpbmVzIHdoaWNoIHByb3RvY29scyBhbmQgY2lwaGVycyBhcmUgc3VwcG9ydGVkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtTZWN1cml0eSBwb2xpY2llc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2VsYXN0aWNsb2FkYmFsYW5jaW5nL2xhdGVzdC9hcHBsaWNhdGlvbi9kZXNjcmliZS1zc2wtcG9saWNpZXMuaHRtbCkgaW4gdGhlICpBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VycyBHdWlkZSogYW5kIFtTZWN1cml0eSBwb2xpY2llc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2VsYXN0aWNsb2FkYmFsYW5jaW5nL2xhdGVzdC9uZXR3b3JrL2Rlc2NyaWJlLXNzbC1wb2xpY2llcy5odG1sKSBpbiB0aGUgKk5ldHdvcmsgTG9hZCBCYWxhbmNlcnMgR3VpZGUqLlxuICogIFtIVFRQUyBsaXN0ZW5lcnNdIFVwZGF0aW5nIHRoZSBzZWN1cml0eSBwb2xpY3kgY2FuIHJlc3VsdCBpbiBpbnRlcnJ1cHRpb25zIGlmIHRoZSBsb2FkIGJhbGFuY2VyIGlzIGhhbmRsaW5nIGEgaGlnaCB2b2x1bWUgb2YgdHJhZmZpYy4gVG8gZGVjcmVhc2UgdGhlIHBvc3NpYmlsaXR5IG9mIGFuIGludGVycnVwdGlvbiBpZiB5b3VyIGxvYWQgYmFsYW5jZXIgaXMgaGFuZGxpbmcgYSBoaWdoIHZvbHVtZSBvZiB0cmFmZmljLCBjcmVhdGUgYW4gYWRkaXRpb25hbCBsb2FkIGJhbGFuY2VyIG9yIHJlcXVlc3QgYW4gTENVIHJlc2VydmF0aW9uLlxuICovXG5Tc2xQb2xpY3k/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBsb2FkIGJhbGFuY2VyLlxuICovXG5Mb2FkQmFsYW5jZXJBcm46IHN0cmluZ1xuLyoqXG4gKiBUaGUgYWN0aW9ucyBmb3IgdGhlIGRlZmF1bHQgcnVsZS4gWW91IGNhbm5vdCBkZWZpbmUgYSBjb25kaXRpb24gZm9yIGEgZGVmYXVsdCBydWxlLlxuICogIFRvIGNyZWF0ZSBhZGRpdGlvbmFsIHJ1bGVzIGZvciBhbiBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VyLCB1c2UgW0FXUzo6RWxhc3RpY0xvYWRCYWxhbmNpbmdWMjo6TGlzdGVuZXJSdWxlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi1saXN0ZW5lcnJ1bGUuaHRtbCkuXG4gKi9cbkRlZmF1bHRBY3Rpb25zOiBBY3Rpb25bXVxuLyoqXG4gKiBUaGUgcG9ydCBvbiB3aGljaCB0aGUgbG9hZCBiYWxhbmNlciBpcyBsaXN0ZW5pbmcuIFlvdSBjYW4ndCBzcGVjaWZ5IGEgcG9ydCBmb3IgYSBHYXRld2F5IExvYWQgQmFsYW5jZXIuXG4gKi9cblBvcnQ/OiBudW1iZXJcbi8qKlxuICogVGhlIGRlZmF1bHQgU1NMIHNlcnZlciBjZXJ0aWZpY2F0ZSBmb3IgYSBzZWN1cmUgbGlzdGVuZXIuIFlvdSBtdXN0IHByb3ZpZGUgZXhhY3RseSBvbmUgY2VydGlmaWNhdGUgaWYgdGhlIGxpc3RlbmVyIHByb3RvY29sIGlzIEhUVFBTIG9yIFRMUy5cbiAqICBGb3IgYW4gSFRUUFMgbGlzdGVuZXIsIHVwZGF0ZSByZXF1aXJlcyBzb21lIGludGVycnVwdGlvbnMuIEZvciBhIFRMUyBsaXN0ZW5lciwgdXBkYXRlIHJlcXVpcmVzIG5vIGludGVycnVwdGlvbi5cbiAqICBUbyBjcmVhdGUgYSBjZXJ0aWZpY2F0ZSBsaXN0IGZvciBhIHNlY3VyZSBsaXN0ZW5lciwgdXNlIFtBV1M6OkVsYXN0aWNMb2FkQmFsYW5jaW5nVjI6Okxpc3RlbmVyQ2VydGlmaWNhdGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1lbGFzdGljbG9hZGJhbGFuY2luZ3YyLWxpc3RlbmVyY2VydGlmaWNhdGUuaHRtbCkuXG4gKi9cbkNlcnRpZmljYXRlcz86IENlcnRpZmljYXRlW11cbi8qKlxuICogVGhlIHByb3RvY29sIGZvciBjb25uZWN0aW9ucyBmcm9tIGNsaWVudHMgdG8gdGhlIGxvYWQgYmFsYW5jZXIuIEZvciBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VycywgdGhlIHN1cHBvcnRlZCBwcm90b2NvbHMgYXJlIEhUVFAgYW5kIEhUVFBTLiBGb3IgTmV0d29yayBMb2FkIEJhbGFuY2VycywgdGhlIHN1cHBvcnRlZCBwcm90b2NvbHMgYXJlIFRDUCwgVExTLCBVRFAsIGFuZCBUQ1BfVURQLiBZb3UgY2Fu4oCZdCBzcGVjaWZ5IHRoZSBVRFAgb3IgVENQX1VEUCBwcm90b2NvbCBpZiBkdWFsLXN0YWNrIG1vZGUgaXMgZW5hYmxlZC4gWW91IGNhbid0IHNwZWNpZnkgYSBwcm90b2NvbCBmb3IgYSBHYXRld2F5IExvYWQgQmFsYW5jZXIuXG4gKi9cblByb3RvY29sPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBtdXR1YWwgYXV0aGVudGljYXRpb24gY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNdXR1YWxBdXRoZW50aWNhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIGV4cGlyZWQgY2xpZW50IGNlcnRpZmljYXRlcyBhcmUgaWdub3JlZC5cbiAqL1xuSWdub3JlQ2xpZW50Q2VydGlmaWNhdGVFeHBpcnk/OiBib29sZWFuXG4vKipcbiAqIFRoZSBjbGllbnQgY2VydGlmaWNhdGUgaGFuZGxpbmcgbWV0aG9kLiBPcHRpb25zIGFyZSBgYG9mZmBgLCBgYHBhc3N0aHJvdWdoYGAgb3IgYGB2ZXJpZnlgYC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGBvZmZgYC5cbiAqL1xuTW9kZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIHRydXN0IHN0b3JlLlxuICovXG5UcnVzdFN0b3JlQXJuPzogc3RyaW5nXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRydXN0IHN0b3JlIENBIGNlcnRpZmljYXRlIG5hbWVzIGFyZSBhZHZlcnRpc2VkLlxuICovXG5BZHZlcnRpc2VUcnVzdFN0b3JlQ2FOYW1lcz86IHN0cmluZ1xufVxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCBhIGxpc3RlbmVyIGF0dHJpYnV0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXN0ZW5lckF0dHJpYnV0ZSB7XG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlLlxuICovXG5WYWx1ZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlLlxuICogIFRoZSBmb2xsb3dpbmcgYXR0cmlidXRlIGlzIHN1cHBvcnRlZCBieSBOZXR3b3JrIExvYWQgQmFsYW5jZXJzLCBhbmQgR2F0ZXdheSBMb2FkIEJhbGFuY2Vycy5cbiAqICAgKyAgYGB0Y3AuaWRsZV90aW1lb3V0LnNlY29uZHNgYCAtIFRoZSB0Y3AgaWRsZSB0aW1lb3V0IHZhbHVlLCBpbiBzZWNvbmRzLiBUaGUgdmFsaWQgcmFuZ2UgaXMgNjAtNjAwMCBzZWNvbmRzLiBUaGUgZGVmYXVsdCBpcyAzNTAgc2Vjb25kcy5cbiAqICAgXG4gKiAgVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIGFyZSBvbmx5IHN1cHBvcnRlZCBieSBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2Vycy5cbiAqICAgKyAgYGByb3V0aW5nLmh0dHAucmVxdWVzdC54X2Ftem5fbXRsc19jbGllbnRjZXJ0X3NlcmlhbF9udW1iZXIuaGVhZGVyX25hbWVgYCAtIEVuYWJsZXMgeW91IHRvIG1vZGlmeSB0aGUgaGVhZGVyIG5hbWUgb2YgdGhlICpYLUFtem4tTXRscy1DbGllbnRjZXJ0LVNlcmlhbC1OdW1iZXIqIEhUVFAgcmVxdWVzdCBoZWFkZXIuXG4gKiAgICsgIGBgcm91dGluZy5odHRwLnJlcXVlc3QueF9hbXpuX210bHNfY2xpZW50Y2VydF9pc3N1ZXIuaGVhZGVyX25hbWVgYCAtIEVuYWJsZXMgeW91IHRvIG1vZGlmeSB0aGUgaGVhZGVyIG5hbWUgb2YgdGhlICpYLUFtem4tTXRscy1DbGllbnRjZXJ0LUlzc3VlciogSFRUUCByZXF1ZXN0IGhlYWRlci5cbiAqICAgKyAgYGByb3V0aW5nLmh0dHAucmVxdWVzdC54X2Ftem5fbXRsc19jbGllbnRjZXJ0X3N1YmplY3QuaGVhZGVyX25hbWVgYCAtIEVuYWJsZXMgeW91IHRvIG1vZGlmeSB0aGUgaGVhZGVyIG5hbWUgb2YgdGhlICpYLUFtem4tTXRscy1DbGllbnRjZXJ0LVN1YmplY3QqIEhUVFAgcmVxdWVzdCBoZWFkZXIuXG4gKiAgICsgIGBgcm91dGluZy5odHRwLnJlcXVlc3QueF9hbXpuX210bHNfY2xpZW50Y2VydF92YWxpZGl0eS5oZWFkZXJfbmFtZWBgIC0gRW5hYmxlcyB5b3UgdG8gbW9kaWZ5IHRoZSBoZWFkZXIgbmFtZSBvZiB0aGUgKlgtQW16bi1NdGxzLUNsaWVudGNlcnQtVmFsaWRpdHkqIEhUVFAgcmVxdWVzdCBoZWFkZXIuXG4gKiAgICsgIGBgcm91dGluZy5odHRwLnJlcXVlc3QueF9hbXpuX210bHNfY2xpZW50Y2VydF9sZWFmLmhlYWRlcl9uYW1lYGAgLSBFbmFibGVzIHlvdSB0byBtb2RpZnkgdGhlIGhlYWRlciBuYW1lIG9mIHRoZSAqWC1BbXpuLU10bHMtQ2xpZW50Y2VydC1MZWFmKiBIVFRQIHJlcXVlc3QgaGVhZGVyLlxuICogICArICBgYHJvdXRpbmcuaHR0cC5yZXF1ZXN0LnhfYW16bl9tdGxzX2NsaWVudGNlcnQuaGVhZGVyX25hbWVgYCAtIEVuYWJsZXMgeW91IHRvIG1vZGlmeSB0aGUgaGVhZGVyIG5hbWUgb2YgdGhlICpYLUFtem4tTXRscy1DbGllbnRjZXJ0KiBIVFRQIHJlcXVlc3QgaGVhZGVyLlxuICogICArICBgYHJvdXRpbmcuaHR0cC5yZXF1ZXN0LnhfYW16bl90bHNfdmVyc2lvbi5oZWFkZXJfbmFtZWBgIC0gRW5hYmxlcyB5b3UgdG8gbW9kaWZ5IHRoZSBoZWFkZXIgbmFtZSBvZiB0aGUgKlgtQW16bi1UbHMtVmVyc2lvbiogSFRUUCByZXF1ZXN0IGhlYWRlci5cbiAqICAgKyAgYGByb3V0aW5nLmh0dHAucmVxdWVzdC54X2Ftem5fdGxzX2NpcGhlcl9zdWl0ZS5oZWFkZXJfbmFtZWBgIC0gRW5hYmxlcyB5b3UgdG8gbW9kaWZ5IHRoZSBoZWFkZXIgbmFtZSBvZiB0aGUgKlgtQW16bi1UbHMtQ2lwaGVyLVN1aXRlKiBIVFRQIHJlcXVlc3QgaGVhZGVyLlxuICogICArICBgYHJvdXRpbmcuaHR0cC5yZXNwb25zZS5zZXJ2ZXIuZW5hYmxlZGBgIC0gRW5hYmxlcyB5b3UgdG8gYWxsb3cgb3IgcmVtb3ZlIHRoZSBIVFRQIHJlc3BvbnNlIHNlcnZlciBoZWFkZXIuXG4gKiAgICsgIGBgcm91dGluZy5odHRwLnJlc3BvbnNlLnN0cmljdF90cmFuc3BvcnRfc2VjdXJpdHkuaGVhZGVyX3ZhbHVlYGAgLSBJbmZvcm1zIGJyb3dzZXJzIHRoYXQgdGhlIHNpdGUgc2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgdXNpbmcgSFRUUFMsIGFuZCB0aGF0IGFueSBmdXR1cmUgYXR0ZW1wdHMgdG8gYWNjZXNzIGl0IHVzaW5nIEhUVFAgc2hvdWxkIGF1dG9tYXRpY2FsbHkgYmUgY29udmVydGVkIHRvIEhUVFBTLlxuICogICArICBgYHJvdXRpbmcuaHR0cC5yZXNwb25zZS5hY2Nlc3NfY29udHJvbF9hbGxvd19vcmlnaW4uaGVhZGVyX3ZhbHVlYGAgLSBTcGVjaWZpZXMgd2hpY2ggb3JpZ2lucyBhcmUgYWxsb3dlZCB0byBhY2Nlc3MgdGhlIHNlcnZlci5cbiAqICAgKyAgYGByb3V0aW5nLmh0dHAucmVzcG9uc2UuYWNjZXNzX2NvbnRyb2xfYWxsb3dfbWV0aG9kcy5oZWFkZXJfdmFsdWVgYCAtIFJldHVybnMgd2hpY2ggSFRUUCBtZXRob2RzIGFyZSBhbGxvd2VkIHdoZW4gYWNjZXNzaW5nIHRoZSBzZXJ2ZXIgZnJvbSBhIGRpZmZlcmVudCBvcmlnaW4uXG4gKiAgICsgIGBgcm91dGluZy5odHRwLnJlc3BvbnNlLmFjY2Vzc19jb250cm9sX2FsbG93X2hlYWRlcnMuaGVhZGVyX3ZhbHVlYGAgLSBTcGVjaWZpZXMgd2hpY2ggaGVhZGVycyBjYW4gYmUgdXNlZCBkdXJpbmcgdGhlIHJlcXVlc3QuXG4gKiAgICsgIGBgcm91dGluZy5odHRwLnJlc3BvbnNlLmFjY2Vzc19jb250cm9sX2FsbG93X2NyZWRlbnRpYWxzLmhlYWRlcl92YWx1ZWBgIC0gSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGJyb3dzZXIgc2hvdWxkIGluY2x1ZGUgY3JlZGVudGlhbHMgc3VjaCBhcyBjb29raWVzIG9yIGF1dGhlbnRpY2F0aW9uIHdoZW4gbWFraW5nIHJlcXVlc3RzLlxuICogICArICBgYHJvdXRpbmcuaHR0cC5yZXNwb25zZS5hY2Nlc3NfY29udHJvbF9leHBvc2VfaGVhZGVycy5oZWFkZXJfdmFsdWVgYCAtIFJldHVybnMgd2hpY2ggaGVhZGVycyB0aGUgYnJvd3NlciBjYW4gZXhwb3NlIHRvIHRoZSByZXF1ZXN0aW5nIGNsaWVudC5cbiAqICAgKyAgYGByb3V0aW5nLmh0dHAucmVzcG9uc2UuYWNjZXNzX2NvbnRyb2xfbWF4X2FnZS5oZWFkZXJfdmFsdWVgYCAtIFNwZWNpZmllcyBob3cgbG9uZyB0aGUgcmVzdWx0cyBvZiBhIHByZWZsaWdodCByZXF1ZXN0IGNhbiBiZSBjYWNoZWQsIGluIHNlY29uZHMuXG4gKiAgICsgIGBgcm91dGluZy5odHRwLnJlc3BvbnNlLmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LmhlYWRlcl92YWx1ZWBgIC0gU3BlY2lmaWVzIHJlc3RyaWN0aW9ucyBlbmZvcmNlZCBieSB0aGUgYnJvd3NlciB0byBoZWxwIG1pbmltaXplIHRoZSByaXNrIG9mIGNlcnRhaW4gdHlwZXMgb2Ygc2VjdXJpdHkgdGhyZWF0cy5cbiAqICAgKyAgYGByb3V0aW5nLmh0dHAucmVzcG9uc2UueF9jb250ZW50X3R5cGVfb3B0aW9ucy5oZWFkZXJfdmFsdWVgYCAtIEluZGljYXRlcyB3aGV0aGVyIHRoZSBNSU1FIHR5cGVzIGFkdmVydGlzZWQgaW4gdGhlICpDb250ZW50LVR5cGUqIGhlYWRlcnMgc2hvdWxkIGJlIGZvbGxvd2VkIGFuZCBub3QgYmUgY2hhbmdlZC5cbiAqICAgKyAgYGByb3V0aW5nLmh0dHAucmVzcG9uc2UueF9mcmFtZV9vcHRpb25zLmhlYWRlcl92YWx1ZWBgIC0gSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGJyb3dzZXIgaXMgYWxsb3dlZCB0byByZW5kZXIgYSBwYWdlIGluIGEgKmZyYW1lKiwgKmlmcmFtZSosICplbWJlZCogb3IgKm9iamVjdCouXG4gKi9cbktleT86IHN0cmluZ1xufVxuLyoqXG4gKiBTcGVjaWZpZXMgYW4gYWN0aW9uIGZvciBhIGxpc3RlbmVyIHJ1bGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uIHtcbi8qKlxuICogVGhlIG9yZGVyIGZvciB0aGUgYWN0aW9uLiBUaGlzIHZhbHVlIGlzIHJlcXVpcmVkIGZvciBydWxlcyB3aXRoIG11bHRpcGxlIGFjdGlvbnMuIFRoZSBhY3Rpb24gd2l0aCB0aGUgbG93ZXN0IHZhbHVlIGZvciBvcmRlciBpcyBwZXJmb3JtZWQgZmlyc3QuXG4gKi9cbk9yZGVyPzogbnVtYmVyXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgdGFyZ2V0IGdyb3VwLiBTcGVjaWZ5IG9ubHkgd2hlbiBgYFR5cGVgYCBpcyBgYGZvcndhcmRgYCBhbmQgeW91IHdhbnQgdG8gcm91dGUgdG8gYSBzaW5nbGUgdGFyZ2V0IGdyb3VwLiBUbyByb3V0ZSB0byBtdWx0aXBsZSB0YXJnZXQgZ3JvdXBzLCB5b3UgbXVzdCB1c2UgYGBGb3J3YXJkQ29uZmlnYGAgaW5zdGVhZC5cbiAqL1xuVGFyZ2V0R3JvdXBBcm4/OiBzdHJpbmdcbkZpeGVkUmVzcG9uc2VDb25maWc/OiBGaXhlZFJlc3BvbnNlQ29uZmlnXG5BdXRoZW50aWNhdGVDb2duaXRvQ29uZmlnPzogQXV0aGVudGljYXRlQ29nbml0b0NvbmZpZ1xuLyoqXG4gKiBUaGUgdHlwZSBvZiBhY3Rpb24uXG4gKi9cblR5cGU6IHN0cmluZ1xuUmVkaXJlY3RDb25maWc/OiBSZWRpcmVjdENvbmZpZ1xuRm9yd2FyZENvbmZpZz86IEZvcndhcmRDb25maWdcbkF1dGhlbnRpY2F0ZU9pZGNDb25maWc/OiBBdXRoZW50aWNhdGVPaWRjQ29uZmlnXG59XG4vKipcbiAqIFtBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VyXSBJbmZvcm1hdGlvbiBmb3IgY3JlYXRpbmcgYW4gYWN0aW9uIHRoYXQgcmV0dXJucyBhIGN1c3RvbSBIVFRQIHJlc3BvbnNlLiBTcGVjaWZ5IG9ubHkgd2hlbiBgYFR5cGVgYCBpcyBgYGZpeGVkLXJlc3BvbnNlYGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRml4ZWRSZXNwb25zZUNvbmZpZyB7XG4vKipcbiAqIFRoZSBjb250ZW50IHR5cGUuXG4gKiAgVmFsaWQgVmFsdWVzOiB0ZXh0L3BsYWluIHwgdGV4dC9jc3MgfCB0ZXh0L2h0bWwgfCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IHwgYXBwbGljYXRpb24vanNvblxuICovXG5Db250ZW50VHlwZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgSFRUUCByZXNwb25zZSBjb2RlICgyWFgsIDRYWCwgb3IgNVhYKS5cbiAqL1xuU3RhdHVzQ29kZTogc3RyaW5nXG4vKipcbiAqIFRoZSBtZXNzYWdlLlxuICovXG5NZXNzYWdlQm9keT86IHN0cmluZ1xufVxuLyoqXG4gKiBbSFRUUFMgbGlzdGVuZXJzXSBJbmZvcm1hdGlvbiBmb3IgdXNpbmcgQW1hem9uIENvZ25pdG8gdG8gYXV0aGVudGljYXRlIHVzZXJzLiBTcGVjaWZ5IG9ubHkgd2hlbiBgYFR5cGVgYCBpcyBgYGF1dGhlbnRpY2F0ZS1jb2duaXRvYGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aGVudGljYXRlQ29nbml0b0NvbmZpZyB7XG4vKipcbiAqIFRoZSBiZWhhdmlvciBpZiB0aGUgdXNlciBpcyBub3QgYXV0aGVudGljYXRlZC4gVGhlIGZvbGxvd2luZyBhcmUgcG9zc2libGUgdmFsdWVzOlxuICogICArICBkZW55YGBgYCAtIFJldHVybiBhbiBIVFRQIDQwMSBVbmF1dGhvcml6ZWQgZXJyb3IuXG4gKiAgICsgIGFsbG93YGBgYCAtIEFsbG93IHRoZSByZXF1ZXN0IHRvIGJlIGZvcndhcmRlZCB0byB0aGUgdGFyZ2V0LlxuICogICArICBhdXRoZW50aWNhdGVgYGBgIC0gUmVkaXJlY3QgdGhlIHJlcXVlc3QgdG8gdGhlIElkUCBhdXRob3JpemF0aW9uIGVuZHBvaW50LiBUaGlzIGlzIHRoZSBkZWZhdWx0IHZhbHVlLlxuICovXG5PblVuYXV0aGVudGljYXRlZFJlcXVlc3Q/OiBzdHJpbmdcbi8qKlxuICogVGhlIElEIG9mIHRoZSBBbWF6b24gQ29nbml0byB1c2VyIHBvb2wgY2xpZW50LlxuICovXG5Vc2VyUG9vbENsaWVudElkOiAoe1xuW2s6IHN0cmluZ106IHVua25vd25cbn0gJiBzdHJpbmcpXG4vKipcbiAqIFRoZSBkb21haW4gcHJlZml4IG9yIGZ1bGx5LXF1YWxpZmllZCBkb21haW4gbmFtZSBvZiB0aGUgQW1hem9uIENvZ25pdG8gdXNlciBwb29sLlxuICovXG5Vc2VyUG9vbERvbWFpbjogc3RyaW5nXG4vKipcbiAqIFRoZSBtYXhpbXVtIGR1cmF0aW9uIG9mIHRoZSBhdXRoZW50aWNhdGlvbiBzZXNzaW9uLCBpbiBzZWNvbmRzLiBUaGUgZGVmYXVsdCBpcyA2MDQ4MDAgc2Vjb25kcyAoNyBkYXlzKS5cbiAqL1xuU2Vzc2lvblRpbWVvdXQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIHNldCBvZiB1c2VyIGNsYWltcyB0byBiZSByZXF1ZXN0ZWQgZnJvbSB0aGUgSWRQLiBUaGUgZGVmYXVsdCBpcyBgYG9wZW5pZGBgLlxuICogIFRvIHZlcmlmeSB3aGljaCBzY29wZSB2YWx1ZXMgeW91ciBJZFAgc3VwcG9ydHMgYW5kIGhvdyB0byBzZXBhcmF0ZSBtdWx0aXBsZSB2YWx1ZXMsIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgeW91ciBJZFAuXG4gKi9cblNjb3BlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBjb29raWUgdXNlZCB0byBtYWludGFpbiBzZXNzaW9uIGluZm9ybWF0aW9uLiBUaGUgZGVmYXVsdCBpcyBBV1NFTEJBdXRoU2Vzc2lvbkNvb2tpZS5cbiAqL1xuU2Vzc2lvbkNvb2tpZU5hbWU/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBBbWF6b24gQ29nbml0byB1c2VyIHBvb2wuXG4gKi9cblVzZXJQb29sQXJuOiBzdHJpbmdcbi8qKlxuICogVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgKHVwIHRvIDEwKSB0byBpbmNsdWRlIGluIHRoZSByZWRpcmVjdCByZXF1ZXN0IHRvIHRoZSBhdXRob3JpemF0aW9uIGVuZHBvaW50LlxuICovXG5BdXRoZW50aWNhdGlvblJlcXVlc3RFeHRyYVBhcmFtcz86IHtcbi8qKlxuICogVGhpcyBpbnRlcmZhY2Ugd2FzIHJlZmVyZW5jZWQgYnkgYHVuZGVmaW5lZGAncyBKU09OLVNjaGVtYSBkZWZpbml0aW9uXG4gKiB2aWEgdGhlIGBwYXR0ZXJuUHJvcGVydHlgIFwiW2EtekEtWjAtOV0rXCIuXG4gKi9cbltrOiBzdHJpbmddOiBzdHJpbmdcbn1cbn1cbi8qKlxuICogW0FwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXJdIEluZm9ybWF0aW9uIGZvciBjcmVhdGluZyBhIHJlZGlyZWN0IGFjdGlvbi4gU3BlY2lmeSBvbmx5IHdoZW4gYGBUeXBlYGAgaXMgYGByZWRpcmVjdGBgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZGlyZWN0Q29uZmlnIHtcbi8qKlxuICogVGhlIGFic29sdXRlIHBhdGgsIHN0YXJ0aW5nIHdpdGggdGhlIGxlYWRpbmcgXCIvXCIuIFRoaXMgY29tcG9uZW50IGlzIG5vdCBwZXJjZW50LWVuY29kZWQuIFRoZSBwYXRoIGNhbiBjb250YWluICN7aG9zdH0sICN7cGF0aH0sIGFuZCAje3BvcnR9LlxuICovXG5QYXRoPzogc3RyaW5nXG4vKipcbiAqIFRoZSBxdWVyeSBwYXJhbWV0ZXJzLCBVUkwtZW5jb2RlZCB3aGVuIG5lY2Vzc2FyeSwgYnV0IG5vdCBwZXJjZW50LWVuY29kZWQuIERvIG5vdCBpbmNsdWRlIHRoZSBsZWFkaW5nIFwiP1wiLCBhcyBpdCBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkLiBZb3UgY2FuIHNwZWNpZnkgYW55IG9mIHRoZSByZXNlcnZlZCBrZXl3b3Jkcy5cbiAqL1xuUXVlcnk/OiBzdHJpbmdcbi8qKlxuICogVGhlIHBvcnQuIFlvdSBjYW4gc3BlY2lmeSBhIHZhbHVlIGZyb20gMSB0byA2NTUzNSBvciAje3BvcnR9LlxuICovXG5Qb3J0Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBob3N0bmFtZS4gVGhpcyBjb21wb25lbnQgaXMgbm90IHBlcmNlbnQtZW5jb2RlZC4gVGhlIGhvc3RuYW1lIGNhbiBjb250YWluICN7aG9zdH0uXG4gKi9cbkhvc3Q/OiBzdHJpbmdcbi8qKlxuICogVGhlIHByb3RvY29sLiBZb3UgY2FuIHNwZWNpZnkgSFRUUCwgSFRUUFMsIG9yICN7cHJvdG9jb2x9LiBZb3UgY2FuIHJlZGlyZWN0IEhUVFAgdG8gSFRUUCwgSFRUUCB0byBIVFRQUywgYW5kIEhUVFBTIHRvIEhUVFBTLiBZb3UgY2FuJ3QgcmVkaXJlY3QgSFRUUFMgdG8gSFRUUC5cbiAqL1xuUHJvdG9jb2w/OiBzdHJpbmdcbi8qKlxuICogVGhlIEhUVFAgcmVkaXJlY3QgY29kZS4gVGhlIHJlZGlyZWN0IGlzIGVpdGhlciBwZXJtYW5lbnQgKEhUVFAgMzAxKSBvciB0ZW1wb3JhcnkgKEhUVFAgMzAyKS5cbiAqL1xuU3RhdHVzQ29kZTogc3RyaW5nXG59XG4vKipcbiAqIEluZm9ybWF0aW9uIGZvciBjcmVhdGluZyBhbiBhY3Rpb24gdGhhdCBkaXN0cmlidXRlcyByZXF1ZXN0cyBhbW9uZyBtdWx0aXBsZSB0YXJnZXQgZ3JvdXBzLiBTcGVjaWZ5IG9ubHkgd2hlbiBgYFR5cGVgYCBpcyBgYGZvcndhcmRgYC5cbiAqICBJZiB5b3Ugc3BlY2lmeSBib3RoIGBgRm9yd2FyZENvbmZpZ2BgIGFuZCBgYFRhcmdldEdyb3VwQXJuYGAsIHlvdSBjYW4gc3BlY2lmeSBvbmx5IG9uZSB0YXJnZXQgZ3JvdXAgdXNpbmcgYGBGb3J3YXJkQ29uZmlnYGAgYW5kIGl0IG11c3QgYmUgdGhlIHNhbWUgdGFyZ2V0IGdyb3VwIHNwZWNpZmllZCBpbiBgYFRhcmdldEdyb3VwQXJuYGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRm9yd2FyZENvbmZpZyB7XG5UYXJnZXRHcm91cFN0aWNraW5lc3NDb25maWc/OiBUYXJnZXRHcm91cFN0aWNraW5lc3NDb25maWdcbi8qKlxuICogSW5mb3JtYXRpb24gYWJvdXQgaG93IHRyYWZmaWMgd2lsbCBiZSBkaXN0cmlidXRlZCBiZXR3ZWVuIG11bHRpcGxlIHRhcmdldCBncm91cHMgaW4gYSBmb3J3YXJkIHJ1bGUuXG4gKi9cblRhcmdldEdyb3Vwcz86IFRhcmdldEdyb3VwVHVwbGVbXVxufVxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgdGFyZ2V0IGdyb3VwIHN0aWNraW5lc3MgZm9yIGEgcnVsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXJnZXRHcm91cFN0aWNraW5lc3NDb25maWcge1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0YXJnZXQgZ3JvdXAgc3RpY2tpbmVzcyBpcyBlbmFibGVkLlxuICovXG5FbmFibGVkPzogYm9vbGVhblxuLyoqXG4gKiBbQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlcnNdIFRoZSB0aW1lIHBlcmlvZCwgaW4gc2Vjb25kcywgZHVyaW5nIHdoaWNoIHJlcXVlc3RzIGZyb20gYSBjbGllbnQgc2hvdWxkIGJlIHJvdXRlZCB0byB0aGUgc2FtZSB0YXJnZXQgZ3JvdXAuIFRoZSByYW5nZSBpcyAxLTYwNDgwMCBzZWNvbmRzICg3IGRheXMpLiBZb3UgbXVzdCBzcGVjaWZ5IHRoaXMgdmFsdWUgd2hlbiBlbmFibGluZyB0YXJnZXQgZ3JvdXAgc3RpY2tpbmVzcy5cbiAqL1xuRHVyYXRpb25TZWNvbmRzPzogbnVtYmVyXG59XG4vKipcbiAqIEluZm9ybWF0aW9uIGFib3V0IGhvdyB0cmFmZmljIHdpbGwgYmUgZGlzdHJpYnV0ZWQgYmV0d2VlbiBtdWx0aXBsZSB0YXJnZXQgZ3JvdXBzIGluIGEgZm9yd2FyZCBydWxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldEdyb3VwVHVwbGUge1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIHRhcmdldCBncm91cC5cbiAqL1xuVGFyZ2V0R3JvdXBBcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIHdlaWdodC4gVGhlIHJhbmdlIGlzIDAgdG8gOTk5LlxuICovXG5XZWlnaHQ/OiBudW1iZXJcbn1cbi8qKlxuICogU3BlY2lmaWVzIGFuIFNTTCBzZXJ2ZXIgY2VydGlmaWNhdGUgdG8gdXNlIGFzIHRoZSBkZWZhdWx0IGNlcnRpZmljYXRlIGZvciBhIHNlY3VyZSBsaXN0ZW5lci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZXJ0aWZpY2F0ZSB7XG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgY2VydGlmaWNhdGUuXG4gKi9cbkNlcnRpZmljYXRlQXJuPzogKHtcbltrOiBzdHJpbmddOiB1bmtub3duXG59ICYgc3RyaW5nKVxufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjItbGlzdGVuZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi1saXN0ZW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBbSFRUUFMgbGlzdGVuZXJzXSBJbmZvcm1hdGlvbiBhYm91dCBhbiBpZGVudGl0eSBwcm92aWRlciB0aGF0IGlzIGNvbXBsaWFudCB3aXRoIE9wZW5JRCBDb25uZWN0IChPSURDKS4gU3BlY2lmeSBvbmx5IHdoZW4gYGBUeXBlYGAgaXMgYGBhdXRoZW50aWNhdGUtb2lkY2BgLlxuICovXG5leHBvcnQgdHlwZSBBdXRoZW50aWNhdGVPaWRjQ29uZmlnID0gKHtcbltrOiBzdHJpbmddOiB1bmtub3duXG59ICYge1xuLyoqXG4gKiBUaGUgYmVoYXZpb3IgaWYgdGhlIHVzZXIgaXMgbm90IGF1dGhlbnRpY2F0ZWQuIFRoZSBmb2xsb3dpbmcgYXJlIHBvc3NpYmxlIHZhbHVlczpcbiAqICAgKyAgZGVueWBgYGAgLSBSZXR1cm4gYW4gSFRUUCA0MDEgVW5hdXRob3JpemVkIGVycm9yLlxuICogICArICBhbGxvd2BgYGAgLSBBbGxvdyB0aGUgcmVxdWVzdCB0byBiZSBmb3J3YXJkZWQgdG8gdGhlIHRhcmdldC5cbiAqICAgKyAgYXV0aGVudGljYXRlYGBgYCAtIFJlZGlyZWN0IHRoZSByZXF1ZXN0IHRvIHRoZSBJZFAgYXV0aG9yaXphdGlvbiBlbmRwb2ludC4gVGhpcyBpcyB0aGUgZGVmYXVsdCB2YWx1ZS5cbiAqL1xuT25VbmF1dGhlbnRpY2F0ZWRSZXF1ZXN0Pzogc3RyaW5nXG4vKipcbiAqIFRoZSB0b2tlbiBlbmRwb2ludCBvZiB0aGUgSWRQLiBUaGlzIG11c3QgYmUgYSBmdWxsIFVSTCwgaW5jbHVkaW5nIHRoZSBIVFRQUyBwcm90b2NvbCwgdGhlIGRvbWFpbiwgYW5kIHRoZSBwYXRoLlxuICovXG5Ub2tlbkVuZHBvaW50OiBzdHJpbmdcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gdXNlIHRoZSBleGlzdGluZyBjbGllbnQgc2VjcmV0IHdoZW4gbW9kaWZ5aW5nIGEgcnVsZS4gSWYgeW91IGFyZSBjcmVhdGluZyBhIHJ1bGUsIHlvdSBjYW4gb21pdCB0aGlzIHBhcmFtZXRlciBvciBzZXQgaXQgdG8gZmFsc2UuXG4gKi9cblVzZUV4aXN0aW5nQ2xpZW50U2VjcmV0PzogYm9vbGVhblxuLyoqXG4gKiBUaGUgbWF4aW11bSBkdXJhdGlvbiBvZiB0aGUgYXV0aGVudGljYXRpb24gc2Vzc2lvbiwgaW4gc2Vjb25kcy4gVGhlIGRlZmF1bHQgaXMgNjA0ODAwIHNlY29uZHMgKDcgZGF5cykuXG4gKi9cblNlc3Npb25UaW1lb3V0Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBzZXQgb2YgdXNlciBjbGFpbXMgdG8gYmUgcmVxdWVzdGVkIGZyb20gdGhlIElkUC4gVGhlIGRlZmF1bHQgaXMgYGBvcGVuaWRgYC5cbiAqICBUbyB2ZXJpZnkgd2hpY2ggc2NvcGUgdmFsdWVzIHlvdXIgSWRQIHN1cHBvcnRzIGFuZCBob3cgdG8gc2VwYXJhdGUgbXVsdGlwbGUgdmFsdWVzLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHlvdXIgSWRQLlxuICovXG5TY29wZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgT0lEQyBpc3N1ZXIgaWRlbnRpZmllciBvZiB0aGUgSWRQLiBUaGlzIG11c3QgYmUgYSBmdWxsIFVSTCwgaW5jbHVkaW5nIHRoZSBIVFRQUyBwcm90b2NvbCwgdGhlIGRvbWFpbiwgYW5kIHRoZSBwYXRoLlxuICovXG5Jc3N1ZXI6IHN0cmluZ1xuLyoqXG4gKiBUaGUgT0F1dGggMi4wIGNsaWVudCBzZWNyZXQuIFRoaXMgcGFyYW1ldGVyIGlzIHJlcXVpcmVkIGlmIHlvdSBhcmUgY3JlYXRpbmcgYSBydWxlLiBJZiB5b3UgYXJlIG1vZGlmeWluZyBhIHJ1bGUsIHlvdSBjYW4gb21pdCB0aGlzIHBhcmFtZXRlciBpZiB5b3Ugc2V0IGBgVXNlRXhpc3RpbmdDbGllbnRTZWNyZXRgYCB0byB0cnVlLlxuICovXG5DbGllbnRTZWNyZXQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIHVzZXIgaW5mbyBlbmRwb2ludCBvZiB0aGUgSWRQLiBUaGlzIG11c3QgYmUgYSBmdWxsIFVSTCwgaW5jbHVkaW5nIHRoZSBIVFRQUyBwcm90b2NvbCwgdGhlIGRvbWFpbiwgYW5kIHRoZSBwYXRoLlxuICovXG5Vc2VySW5mb0VuZHBvaW50OiBzdHJpbmdcbi8qKlxuICogVGhlIE9BdXRoIDIuMCBjbGllbnQgaWRlbnRpZmllci5cbiAqL1xuQ2xpZW50SWQ6IHN0cmluZ1xuLyoqXG4gKiBUaGUgYXV0aG9yaXphdGlvbiBlbmRwb2ludCBvZiB0aGUgSWRQLiBUaGlzIG11c3QgYmUgYSBmdWxsIFVSTCwgaW5jbHVkaW5nIHRoZSBIVFRQUyBwcm90b2NvbCwgdGhlIGRvbWFpbiwgYW5kIHRoZSBwYXRoLlxuICovXG5BdXRob3JpemF0aW9uRW5kcG9pbnQ6IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgY29va2llIHVzZWQgdG8gbWFpbnRhaW4gc2Vzc2lvbiBpbmZvcm1hdGlvbi4gVGhlIGRlZmF1bHQgaXMgQVdTRUxCQXV0aFNlc3Npb25Db29raWUuXG4gKi9cblNlc3Npb25Db29raWVOYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBxdWVyeSBwYXJhbWV0ZXJzICh1cCB0byAxMCkgdG8gaW5jbHVkZSBpbiB0aGUgcmVkaXJlY3QgcmVxdWVzdCB0byB0aGUgYXV0aG9yaXphdGlvbiBlbmRwb2ludC5cbiAqL1xuQXV0aGVudGljYXRpb25SZXF1ZXN0RXh0cmFQYXJhbXM/OiB7XG4vKipcbiAqIFRoaXMgaW50ZXJmYWNlIHdhcyByZWZlcmVuY2VkIGJ5IGB1bmRlZmluZWRgJ3MgSlNPTi1TY2hlbWEgZGVmaW5pdGlvblxuICogdmlhIHRoZSBgcGF0dGVyblByb3BlcnR5YCBcIlthLXpBLVowLTldK1wiLlxuICovXG5bazogc3RyaW5nXTogc3RyaW5nXG59XG59KVxuXG4vKipcbiAqIFNwZWNpZmllcyBhIGxpc3RlbmVyIGZvciBhbiBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VyLCBOZXR3b3JrIExvYWQgQmFsYW5jZXIsIG9yIEdhdGV3YXkgTG9hZCBCYWxhbmNlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0VMQVNUSUNMT0FEQkFMQU5DSU5HVjJfTElTVEVORVIge1xuTGlzdGVuZXJBcm4/OiBzdHJpbmdcbk11dHVhbEF1dGhlbnRpY2F0aW9uPzogTXV0dWFsQXV0aGVudGljYXRpb25cbi8qKlxuICogVGhlIGxpc3RlbmVyIGF0dHJpYnV0ZXMuIEF0dHJpYnV0ZXMgdGhhdCB5b3UgZG8gbm90IG1vZGlmeSByZXRhaW4gdGhlaXIgY3VycmVudCB2YWx1ZXMuXG4gKi9cbkxpc3RlbmVyQXR0cmlidXRlcz86IExpc3RlbmVyQXR0cmlidXRlW11cbi8qKlxuICogW1RMUyBsaXN0ZW5lcl0gVGhlIG5hbWUgb2YgdGhlIEFwcGxpY2F0aW9uLUxheWVyIFByb3RvY29sIE5lZ290aWF0aW9uIChBTFBOKSBwb2xpY3kuXG4gKi9cbkFscG5Qb2xpY3k/OiBzdHJpbmdbXVxuLyoqXG4gKiBbSFRUUFMgYW5kIFRMUyBsaXN0ZW5lcnNdIFRoZSBzZWN1cml0eSBwb2xpY3kgdGhhdCBkZWZpbmVzIHdoaWNoIHByb3RvY29scyBhbmQgY2lwaGVycyBhcmUgc3VwcG9ydGVkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtTZWN1cml0eSBwb2xpY2llc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2VsYXN0aWNsb2FkYmFsYW5jaW5nL2xhdGVzdC9hcHBsaWNhdGlvbi9kZXNjcmliZS1zc2wtcG9saWNpZXMuaHRtbCkgaW4gdGhlICpBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VycyBHdWlkZSogYW5kIFtTZWN1cml0eSBwb2xpY2llc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2VsYXN0aWNsb2FkYmFsYW5jaW5nL2xhdGVzdC9uZXR3b3JrL2Rlc2NyaWJlLXNzbC1wb2xpY2llcy5odG1sKSBpbiB0aGUgKk5ldHdvcmsgTG9hZCBCYWxhbmNlcnMgR3VpZGUqLlxuICogIFtIVFRQUyBsaXN0ZW5lcnNdIFVwZGF0aW5nIHRoZSBzZWN1cml0eSBwb2xpY3kgY2FuIHJlc3VsdCBpbiBpbnRlcnJ1cHRpb25zIGlmIHRoZSBsb2FkIGJhbGFuY2VyIGlzIGhhbmRsaW5nIGEgaGlnaCB2b2x1bWUgb2YgdHJhZmZpYy4gVG8gZGVjcmVhc2UgdGhlIHBvc3NpYmlsaXR5IG9mIGFuIGludGVycnVwdGlvbiBpZiB5b3VyIGxvYWQgYmFsYW5jZXIgaXMgaGFuZGxpbmcgYSBoaWdoIHZvbHVtZSBvZiB0cmFmZmljLCBjcmVhdGUgYW4gYWRkaXRpb25hbCBsb2FkIGJhbGFuY2VyIG9yIHJlcXVlc3QgYW4gTENVIHJlc2VydmF0aW9uLlxuICovXG5Tc2xQb2xpY3k/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBsb2FkIGJhbGFuY2VyLlxuICovXG5Mb2FkQmFsYW5jZXJBcm46IHN0cmluZ1xuLyoqXG4gKiBUaGUgYWN0aW9ucyBmb3IgdGhlIGRlZmF1bHQgcnVsZS4gWW91IGNhbm5vdCBkZWZpbmUgYSBjb25kaXRpb24gZm9yIGEgZGVmYXVsdCBydWxlLlxuICogIFRvIGNyZWF0ZSBhZGRpdGlvbmFsIHJ1bGVzIGZvciBhbiBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VyLCB1c2UgW0FXUzo6RWxhc3RpY0xvYWRCYWxhbmNpbmdWMjo6TGlzdGVuZXJSdWxlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi1saXN0ZW5lcnJ1bGUuaHRtbCkuXG4gKi9cbkRlZmF1bHRBY3Rpb25zOiBBY3Rpb25bXVxuLyoqXG4gKiBUaGUgcG9ydCBvbiB3aGljaCB0aGUgbG9hZCBiYWxhbmNlciBpcyBsaXN0ZW5pbmcuIFlvdSBjYW4ndCBzcGVjaWZ5IGEgcG9ydCBmb3IgYSBHYXRld2F5IExvYWQgQmFsYW5jZXIuXG4gKi9cblBvcnQ/OiBudW1iZXJcbi8qKlxuICogVGhlIGRlZmF1bHQgU1NMIHNlcnZlciBjZXJ0aWZpY2F0ZSBmb3IgYSBzZWN1cmUgbGlzdGVuZXIuIFlvdSBtdXN0IHByb3ZpZGUgZXhhY3RseSBvbmUgY2VydGlmaWNhdGUgaWYgdGhlIGxpc3RlbmVyIHByb3RvY29sIGlzIEhUVFBTIG9yIFRMUy5cbiAqICBGb3IgYW4gSFRUUFMgbGlzdGVuZXIsIHVwZGF0ZSByZXF1aXJlcyBzb21lIGludGVycnVwdGlvbnMuIEZvciBhIFRMUyBsaXN0ZW5lciwgdXBkYXRlIHJlcXVpcmVzIG5vIGludGVycnVwdGlvbi5cbiAqICBUbyBjcmVhdGUgYSBjZXJ0aWZpY2F0ZSBsaXN0IGZvciBhIHNlY3VyZSBsaXN0ZW5lciwgdXNlIFtBV1M6OkVsYXN0aWNMb2FkQmFsYW5jaW5nVjI6Okxpc3RlbmVyQ2VydGlmaWNhdGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1lbGFzdGljbG9hZGJhbGFuY2luZ3YyLWxpc3RlbmVyY2VydGlmaWNhdGUuaHRtbCkuXG4gKi9cbkNlcnRpZmljYXRlcz86IENlcnRpZmljYXRlW11cbi8qKlxuICogVGhlIHByb3RvY29sIGZvciBjb25uZWN0aW9ucyBmcm9tIGNsaWVudHMgdG8gdGhlIGxvYWQgYmFsYW5jZXIuIEZvciBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VycywgdGhlIHN1cHBvcnRlZCBwcm90b2NvbHMgYXJlIEhUVFAgYW5kIEhUVFBTLiBGb3IgTmV0d29yayBMb2FkIEJhbGFuY2VycywgdGhlIHN1cHBvcnRlZCBwcm90b2NvbHMgYXJlIFRDUCwgVExTLCBVRFAsIGFuZCBUQ1BfVURQLiBZb3UgY2Fu4oCZdCBzcGVjaWZ5IHRoZSBVRFAgb3IgVENQX1VEUCBwcm90b2NvbCBpZiBkdWFsLXN0YWNrIG1vZGUgaXMgZW5hYmxlZC4gWW91IGNhbid0IHNwZWNpZnkgYSBwcm90b2NvbCBmb3IgYSBHYXRld2F5IExvYWQgQmFsYW5jZXIuXG4gKi9cblByb3RvY29sPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBtdXR1YWwgYXV0aGVudGljYXRpb24gY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNdXR1YWxBdXRoZW50aWNhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIGV4cGlyZWQgY2xpZW50IGNlcnRpZmljYXRlcyBhcmUgaWdub3JlZC5cbiAqL1xuSWdub3JlQ2xpZW50Q2VydGlmaWNhdGVFeHBpcnk/OiBib29sZWFuXG4vKipcbiAqIFRoZSBjbGllbnQgY2VydGlmaWNhdGUgaGFuZGxpbmcgbWV0aG9kLiBPcHRpb25zIGFyZSBgYG9mZmBgLCBgYHBhc3N0aHJvdWdoYGAgb3IgYGB2ZXJpZnlgYC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGBvZmZgYC5cbiAqL1xuTW9kZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIHRydXN0IHN0b3JlLlxuICovXG5UcnVzdFN0b3JlQXJuPzogc3RyaW5nXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRydXN0IHN0b3JlIENBIGNlcnRpZmljYXRlIG5hbWVzIGFyZSBhZHZlcnRpc2VkLlxuICovXG5BZHZlcnRpc2VUcnVzdFN0b3JlQ2FOYW1lcz86IHN0cmluZ1xufVxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCBhIGxpc3RlbmVyIGF0dHJpYnV0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXN0ZW5lckF0dHJpYnV0ZSB7XG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlLlxuICovXG5WYWx1ZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlLlxuICogIFRoZSBmb2xsb3dpbmcgYXR0cmlidXRlIGlzIHN1cHBvcnRlZCBieSBOZXR3b3JrIExvYWQgQmFsYW5jZXJzLCBhbmQgR2F0ZXdheSBMb2FkIEJhbGFuY2Vycy5cbiAqICAgKyAgYGB0Y3AuaWRsZV90aW1lb3V0LnNlY29uZHNgYCAtIFRoZSB0Y3AgaWRsZSB0aW1lb3V0IHZhbHVlLCBpbiBzZWNvbmRzLiBUaGUgdmFsaWQgcmFuZ2UgaXMgNjAtNjAwMCBzZWNvbmRzLiBUaGUgZGVmYXVsdCBpcyAzNTAgc2Vjb25kcy5cbiAqICAgXG4gKiAgVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIGFyZSBvbmx5IHN1cHBvcnRlZCBieSBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2Vycy5cbiAqICAgKyAgYGByb3V0aW5nLmh0dHAucmVxdWVzdC54X2Ftem5fbXRsc19jbGllbnRjZXJ0X3NlcmlhbF9udW1iZXIuaGVhZGVyX25hbWVgYCAtIEVuYWJsZXMgeW91IHRvIG1vZGlmeSB0aGUgaGVhZGVyIG5hbWUgb2YgdGhlICpYLUFtem4tTXRscy1DbGllbnRjZXJ0LVNlcmlhbC1OdW1iZXIqIEhUVFAgcmVxdWVzdCBoZWFkZXIuXG4gKiAgICsgIGBgcm91dGluZy5odHRwLnJlcXVlc3QueF9hbXpuX210bHNfY2xpZW50Y2VydF9pc3N1ZXIuaGVhZGVyX25hbWVgYCAtIEVuYWJsZXMgeW91IHRvIG1vZGlmeSB0aGUgaGVhZGVyIG5hbWUgb2YgdGhlICpYLUFtem4tTXRscy1DbGllbnRjZXJ0LUlzc3VlciogSFRUUCByZXF1ZXN0IGhlYWRlci5cbiAqICAgKyAgYGByb3V0aW5nLmh0dHAucmVxdWVzdC54X2Ftem5fbXRsc19jbGllbnRjZXJ0X3N1YmplY3QuaGVhZGVyX25hbWVgYCAtIEVuYWJsZXMgeW91IHRvIG1vZGlmeSB0aGUgaGVhZGVyIG5hbWUgb2YgdGhlICpYLUFtem4tTXRscy1DbGllbnRjZXJ0LVN1YmplY3QqIEhUVFAgcmVxdWVzdCBoZWFkZXIuXG4gKiAgICsgIGBgcm91dGluZy5odHRwLnJlcXVlc3QueF9hbXpuX210bHNfY2xpZW50Y2VydF92YWxpZGl0eS5oZWFkZXJfbmFtZWBgIC0gRW5hYmxlcyB5b3UgdG8gbW9kaWZ5IHRoZSBoZWFkZXIgbmFtZSBvZiB0aGUgKlgtQW16bi1NdGxzLUNsaWVudGNlcnQtVmFsaWRpdHkqIEhUVFAgcmVxdWVzdCBoZWFkZXIuXG4gKiAgICsgIGBgcm91dGluZy5odHRwLnJlcXVlc3QueF9hbXpuX210bHNfY2xpZW50Y2VydF9sZWFmLmhlYWRlcl9uYW1lYGAgLSBFbmFibGVzIHlvdSB0byBtb2RpZnkgdGhlIGhlYWRlciBuYW1lIG9mIHRoZSAqWC1BbXpuLU10bHMtQ2xpZW50Y2VydC1MZWFmKiBIVFRQIHJlcXVlc3QgaGVhZGVyLlxuICogICArICBgYHJvdXRpbmcuaHR0cC5yZXF1ZXN0LnhfYW16bl9tdGxzX2NsaWVudGNlcnQuaGVhZGVyX25hbWVgYCAtIEVuYWJsZXMgeW91IHRvIG1vZGlmeSB0aGUgaGVhZGVyIG5hbWUgb2YgdGhlICpYLUFtem4tTXRscy1DbGllbnRjZXJ0KiBIVFRQIHJlcXVlc3QgaGVhZGVyLlxuICogICArICBgYHJvdXRpbmcuaHR0cC5yZXF1ZXN0LnhfYW16bl90bHNfdmVyc2lvbi5oZWFkZXJfbmFtZWBgIC0gRW5hYmxlcyB5b3UgdG8gbW9kaWZ5IHRoZSBoZWFkZXIgbmFtZSBvZiB0aGUgKlgtQW16bi1UbHMtVmVyc2lvbiogSFRUUCByZXF1ZXN0IGhlYWRlci5cbiAqICAgKyAgYGByb3V0aW5nLmh0dHAucmVxdWVzdC54X2Ftem5fdGxzX2NpcGhlcl9zdWl0ZS5oZWFkZXJfbmFtZWBgIC0gRW5hYmxlcyB5b3UgdG8gbW9kaWZ5IHRoZSBoZWFkZXIgbmFtZSBvZiB0aGUgKlgtQW16bi1UbHMtQ2lwaGVyLVN1aXRlKiBIVFRQIHJlcXVlc3QgaGVhZGVyLlxuICogICArICBgYHJvdXRpbmcuaHR0cC5yZXNwb25zZS5zZXJ2ZXIuZW5hYmxlZGBgIC0gRW5hYmxlcyB5b3UgdG8gYWxsb3cgb3IgcmVtb3ZlIHRoZSBIVFRQIHJlc3BvbnNlIHNlcnZlciBoZWFkZXIuXG4gKiAgICsgIGBgcm91dGluZy5odHRwLnJlc3BvbnNlLnN0cmljdF90cmFuc3BvcnRfc2VjdXJpdHkuaGVhZGVyX3ZhbHVlYGAgLSBJbmZvcm1zIGJyb3dzZXJzIHRoYXQgdGhlIHNpdGUgc2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgdXNpbmcgSFRUUFMsIGFuZCB0aGF0IGFueSBmdXR1cmUgYXR0ZW1wdHMgdG8gYWNjZXNzIGl0IHVzaW5nIEhUVFAgc2hvdWxkIGF1dG9tYXRpY2FsbHkgYmUgY29udmVydGVkIHRvIEhUVFBTLlxuICogICArICBgYHJvdXRpbmcuaHR0cC5yZXNwb25zZS5hY2Nlc3NfY29udHJvbF9hbGxvd19vcmlnaW4uaGVhZGVyX3ZhbHVlYGAgLSBTcGVjaWZpZXMgd2hpY2ggb3JpZ2lucyBhcmUgYWxsb3dlZCB0byBhY2Nlc3MgdGhlIHNlcnZlci5cbiAqICAgKyAgYGByb3V0aW5nLmh0dHAucmVzcG9uc2UuYWNjZXNzX2NvbnRyb2xfYWxsb3dfbWV0aG9kcy5oZWFkZXJfdmFsdWVgYCAtIFJldHVybnMgd2hpY2ggSFRUUCBtZXRob2RzIGFyZSBhbGxvd2VkIHdoZW4gYWNjZXNzaW5nIHRoZSBzZXJ2ZXIgZnJvbSBhIGRpZmZlcmVudCBvcmlnaW4uXG4gKiAgICsgIGBgcm91dGluZy5odHRwLnJlc3BvbnNlLmFjY2Vzc19jb250cm9sX2FsbG93X2hlYWRlcnMuaGVhZGVyX3ZhbHVlYGAgLSBTcGVjaWZpZXMgd2hpY2ggaGVhZGVycyBjYW4gYmUgdXNlZCBkdXJpbmcgdGhlIHJlcXVlc3QuXG4gKiAgICsgIGBgcm91dGluZy5odHRwLnJlc3BvbnNlLmFjY2Vzc19jb250cm9sX2FsbG93X2NyZWRlbnRpYWxzLmhlYWRlcl92YWx1ZWBgIC0gSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGJyb3dzZXIgc2hvdWxkIGluY2x1ZGUgY3JlZGVudGlhbHMgc3VjaCBhcyBjb29raWVzIG9yIGF1dGhlbnRpY2F0aW9uIHdoZW4gbWFraW5nIHJlcXVlc3RzLlxuICogICArICBgYHJvdXRpbmcuaHR0cC5yZXNwb25zZS5hY2Nlc3NfY29udHJvbF9leHBvc2VfaGVhZGVycy5oZWFkZXJfdmFsdWVgYCAtIFJldHVybnMgd2hpY2ggaGVhZGVycyB0aGUgYnJvd3NlciBjYW4gZXhwb3NlIHRvIHRoZSByZXF1ZXN0aW5nIGNsaWVudC5cbiAqICAgKyAgYGByb3V0aW5nLmh0dHAucmVzcG9uc2UuYWNjZXNzX2NvbnRyb2xfbWF4X2FnZS5oZWFkZXJfdmFsdWVgYCAtIFNwZWNpZmllcyBob3cgbG9uZyB0aGUgcmVzdWx0cyBvZiBhIHByZWZsaWdodCByZXF1ZXN0IGNhbiBiZSBjYWNoZWQsIGluIHNlY29uZHMuXG4gKiAgICsgIGBgcm91dGluZy5odHRwLnJlc3BvbnNlLmNvbnRlbnRfc2VjdXJpdHlfcG9saWN5LmhlYWRlcl92YWx1ZWBgIC0gU3BlY2lmaWVzIHJlc3RyaWN0aW9ucyBlbmZvcmNlZCBieSB0aGUgYnJvd3NlciB0byBoZWxwIG1pbmltaXplIHRoZSByaXNrIG9mIGNlcnRhaW4gdHlwZXMgb2Ygc2VjdXJpdHkgdGhyZWF0cy5cbiAqICAgKyAgYGByb3V0aW5nLmh0dHAucmVzcG9uc2UueF9jb250ZW50X3R5cGVfb3B0aW9ucy5oZWFkZXJfdmFsdWVgYCAtIEluZGljYXRlcyB3aGV0aGVyIHRoZSBNSU1FIHR5cGVzIGFkdmVydGlzZWQgaW4gdGhlICpDb250ZW50LVR5cGUqIGhlYWRlcnMgc2hvdWxkIGJlIGZvbGxvd2VkIGFuZCBub3QgYmUgY2hhbmdlZC5cbiAqICAgKyAgYGByb3V0aW5nLmh0dHAucmVzcG9uc2UueF9mcmFtZV9vcHRpb25zLmhlYWRlcl92YWx1ZWBgIC0gSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGJyb3dzZXIgaXMgYWxsb3dlZCB0byByZW5kZXIgYSBwYWdlIGluIGEgKmZyYW1lKiwgKmlmcmFtZSosICplbWJlZCogb3IgKm9iamVjdCouXG4gKi9cbktleT86IHN0cmluZ1xufVxuLyoqXG4gKiBTcGVjaWZpZXMgYW4gYWN0aW9uIGZvciBhIGxpc3RlbmVyIHJ1bGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uIHtcbi8qKlxuICogVGhlIG9yZGVyIGZvciB0aGUgYWN0aW9uLiBUaGlzIHZhbHVlIGlzIHJlcXVpcmVkIGZvciBydWxlcyB3aXRoIG11bHRpcGxlIGFjdGlvbnMuIFRoZSBhY3Rpb24gd2l0aCB0aGUgbG93ZXN0IHZhbHVlIGZvciBvcmRlciBpcyBwZXJmb3JtZWQgZmlyc3QuXG4gKi9cbk9yZGVyPzogbnVtYmVyXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgdGFyZ2V0IGdyb3VwLiBTcGVjaWZ5IG9ubHkgd2hlbiBgYFR5cGVgYCBpcyBgYGZvcndhcmRgYCBhbmQgeW91IHdhbnQgdG8gcm91dGUgdG8gYSBzaW5nbGUgdGFyZ2V0IGdyb3VwLiBUbyByb3V0ZSB0byBtdWx0aXBsZSB0YXJnZXQgZ3JvdXBzLCB5b3UgbXVzdCB1c2UgYGBGb3J3YXJkQ29uZmlnYGAgaW5zdGVhZC5cbiAqL1xuVGFyZ2V0R3JvdXBBcm4/OiBzdHJpbmdcbkZpeGVkUmVzcG9uc2VDb25maWc/OiBGaXhlZFJlc3BvbnNlQ29uZmlnXG5BdXRoZW50aWNhdGVDb2duaXRvQ29uZmlnPzogQXV0aGVudGljYXRlQ29nbml0b0NvbmZpZ1xuLyoqXG4gKiBUaGUgdHlwZSBvZiBhY3Rpb24uXG4gKi9cblR5cGU6IHN0cmluZ1xuUmVkaXJlY3RDb25maWc/OiBSZWRpcmVjdENvbmZpZ1xuSnd0VmFsaWRhdGlvbkNvbmZpZz86IEp3dFZhbGlkYXRpb25Db25maWdcbkZvcndhcmRDb25maWc/OiBGb3J3YXJkQ29uZmlnXG5BdXRoZW50aWNhdGVPaWRjQ29uZmlnPzogQXV0aGVudGljYXRlT2lkY0NvbmZpZ1xufVxuLyoqXG4gKiBbQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlcl0gSW5mb3JtYXRpb24gZm9yIGNyZWF0aW5nIGFuIGFjdGlvbiB0aGF0IHJldHVybnMgYSBjdXN0b20gSFRUUCByZXNwb25zZS4gU3BlY2lmeSBvbmx5IHdoZW4gYGBUeXBlYGAgaXMgYGBmaXhlZC1yZXNwb25zZWBgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpeGVkUmVzcG9uc2VDb25maWcge1xuLyoqXG4gKiBUaGUgY29udGVudCB0eXBlLlxuICogIFZhbGlkIFZhbHVlczogdGV4dC9wbGFpbiB8IHRleHQvY3NzIHwgdGV4dC9odG1sIHwgYXBwbGljYXRpb24vamF2YXNjcmlwdCB8IGFwcGxpY2F0aW9uL2pzb25cbiAqL1xuQ29udGVudFR5cGU/OiBzdHJpbmdcbi8qKlxuICogVGhlIEhUVFAgcmVzcG9uc2UgY29kZSAoMlhYLCA0WFgsIG9yIDVYWCkuXG4gKi9cblN0YXR1c0NvZGU6IHN0cmluZ1xuLyoqXG4gKiBUaGUgbWVzc2FnZS5cbiAqL1xuTWVzc2FnZUJvZHk/OiBzdHJpbmdcbn1cbi8qKlxuICogW0hUVFBTIGxpc3RlbmVyc10gSW5mb3JtYXRpb24gZm9yIHVzaW5nIEFtYXpvbiBDb2duaXRvIHRvIGF1dGhlbnRpY2F0ZSB1c2Vycy4gU3BlY2lmeSBvbmx5IHdoZW4gYGBUeXBlYGAgaXMgYGBhdXRoZW50aWNhdGUtY29nbml0b2BgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhlbnRpY2F0ZUNvZ25pdG9Db25maWcge1xuLyoqXG4gKiBUaGUgYmVoYXZpb3IgaWYgdGhlIHVzZXIgaXMgbm90IGF1dGhlbnRpY2F0ZWQuIFRoZSBmb2xsb3dpbmcgYXJlIHBvc3NpYmxlIHZhbHVlczpcbiAqICAgKyAgZGVueWBgYGAgLSBSZXR1cm4gYW4gSFRUUCA0MDEgVW5hdXRob3JpemVkIGVycm9yLlxuICogICArICBhbGxvd2BgYGAgLSBBbGxvdyB0aGUgcmVxdWVzdCB0byBiZSBmb3J3YXJkZWQgdG8gdGhlIHRhcmdldC5cbiAqICAgKyAgYXV0aGVudGljYXRlYGBgYCAtIFJlZGlyZWN0IHRoZSByZXF1ZXN0IHRvIHRoZSBJZFAgYXV0aG9yaXphdGlvbiBlbmRwb2ludC4gVGhpcyBpcyB0aGUgZGVmYXVsdCB2YWx1ZS5cbiAqL1xuT25VbmF1dGhlbnRpY2F0ZWRSZXF1ZXN0Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBJRCBvZiB0aGUgQW1hem9uIENvZ25pdG8gdXNlciBwb29sIGNsaWVudC5cbiAqL1xuVXNlclBvb2xDbGllbnRJZDogKHtcbltrOiBzdHJpbmddOiB1bmtub3duXG59ICYgc3RyaW5nKVxuLyoqXG4gKiBUaGUgZG9tYWluIHByZWZpeCBvciBmdWxseS1xdWFsaWZpZWQgZG9tYWluIG5hbWUgb2YgdGhlIEFtYXpvbiBDb2duaXRvIHVzZXIgcG9vbC5cbiAqL1xuVXNlclBvb2xEb21haW46IHN0cmluZ1xuLyoqXG4gKiBUaGUgbWF4aW11bSBkdXJhdGlvbiBvZiB0aGUgYXV0aGVudGljYXRpb24gc2Vzc2lvbiwgaW4gc2Vjb25kcy4gVGhlIGRlZmF1bHQgaXMgNjA0ODAwIHNlY29uZHMgKDcgZGF5cykuXG4gKi9cblNlc3Npb25UaW1lb3V0Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBzZXQgb2YgdXNlciBjbGFpbXMgdG8gYmUgcmVxdWVzdGVkIGZyb20gdGhlIElkUC4gVGhlIGRlZmF1bHQgaXMgYGBvcGVuaWRgYC5cbiAqICBUbyB2ZXJpZnkgd2hpY2ggc2NvcGUgdmFsdWVzIHlvdXIgSWRQIHN1cHBvcnRzIGFuZCBob3cgdG8gc2VwYXJhdGUgbXVsdGlwbGUgdmFsdWVzLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHlvdXIgSWRQLlxuICovXG5TY29wZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgY29va2llIHVzZWQgdG8gbWFpbnRhaW4gc2Vzc2lvbiBpbmZvcm1hdGlvbi4gVGhlIGRlZmF1bHQgaXMgQVdTRUxCQXV0aFNlc3Npb25Db29raWUuXG4gKi9cblNlc3Npb25Db29raWVOYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgQW1hem9uIENvZ25pdG8gdXNlciBwb29sLlxuICovXG5Vc2VyUG9vbEFybjogc3RyaW5nXG4vKipcbiAqIFRoZSBxdWVyeSBwYXJhbWV0ZXJzICh1cCB0byAxMCkgdG8gaW5jbHVkZSBpbiB0aGUgcmVkaXJlY3QgcmVxdWVzdCB0byB0aGUgYXV0aG9yaXphdGlvbiBlbmRwb2ludC5cbiAqL1xuQXV0aGVudGljYXRpb25SZXF1ZXN0RXh0cmFQYXJhbXM/OiB7XG4vKipcbiAqIFRoaXMgaW50ZXJmYWNlIHdhcyByZWZlcmVuY2VkIGJ5IGB1bmRlZmluZWRgJ3MgSlNPTi1TY2hlbWEgZGVmaW5pdGlvblxuICogdmlhIHRoZSBgcGF0dGVyblByb3BlcnR5YCBcIlthLXpBLVowLTldK1wiLlxuICovXG5bazogc3RyaW5nXTogc3RyaW5nXG59XG59XG4vKipcbiAqIFtBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VyXSBJbmZvcm1hdGlvbiBmb3IgY3JlYXRpbmcgYSByZWRpcmVjdCBhY3Rpb24uIFNwZWNpZnkgb25seSB3aGVuIGBgVHlwZWBgIGlzIGBgcmVkaXJlY3RgYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWRpcmVjdENvbmZpZyB7XG4vKipcbiAqIFRoZSBhYnNvbHV0ZSBwYXRoLCBzdGFydGluZyB3aXRoIHRoZSBsZWFkaW5nIFwiL1wiLiBUaGlzIGNvbXBvbmVudCBpcyBub3QgcGVyY2VudC1lbmNvZGVkLiBUaGUgcGF0aCBjYW4gY29udGFpbiAje2hvc3R9LCAje3BhdGh9LCBhbmQgI3twb3J0fS5cbiAqL1xuUGF0aD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgcXVlcnkgcGFyYW1ldGVycywgVVJMLWVuY29kZWQgd2hlbiBuZWNlc3NhcnksIGJ1dCBub3QgcGVyY2VudC1lbmNvZGVkLiBEbyBub3QgaW5jbHVkZSB0aGUgbGVhZGluZyBcIj9cIiwgYXMgaXQgaXMgYXV0b21hdGljYWxseSBhZGRlZC4gWW91IGNhbiBzcGVjaWZ5IGFueSBvZiB0aGUgcmVzZXJ2ZWQga2V5d29yZHMuXG4gKi9cblF1ZXJ5Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBwb3J0LiBZb3UgY2FuIHNwZWNpZnkgYSB2YWx1ZSBmcm9tIDEgdG8gNjU1MzUgb3IgI3twb3J0fS5cbiAqL1xuUG9ydD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgaG9zdG5hbWUuIFRoaXMgY29tcG9uZW50IGlzIG5vdCBwZXJjZW50LWVuY29kZWQuIFRoZSBob3N0bmFtZSBjYW4gY29udGFpbiAje2hvc3R9LlxuICovXG5Ib3N0Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBwcm90b2NvbC4gWW91IGNhbiBzcGVjaWZ5IEhUVFAsIEhUVFBTLCBvciAje3Byb3RvY29sfS4gWW91IGNhbiByZWRpcmVjdCBIVFRQIHRvIEhUVFAsIEhUVFAgdG8gSFRUUFMsIGFuZCBIVFRQUyB0byBIVFRQUy4gWW91IGNhbid0IHJlZGlyZWN0IEhUVFBTIHRvIEhUVFAuXG4gKi9cblByb3RvY29sPzogc3RyaW5nXG4vKipcbiAqIFRoZSBIVFRQIHJlZGlyZWN0IGNvZGUuIFRoZSByZWRpcmVjdCBpcyBlaXRoZXIgcGVybWFuZW50IChIVFRQIDMwMSkgb3IgdGVtcG9yYXJ5IChIVFRQIDMwMikuXG4gKi9cblN0YXR1c0NvZGU6IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBKd3RWYWxpZGF0aW9uQ29uZmlnIHtcbkp3a3NFbmRwb2ludDogc3RyaW5nXG5Jc3N1ZXI6IHN0cmluZ1xuQWRkaXRpb25hbENsYWltcz86IEp3dFZhbGlkYXRpb25BY3Rpb25BZGRpdGlvbmFsQ2xhaW1bXVxufVxuZXhwb3J0IGludGVyZmFjZSBKd3RWYWxpZGF0aW9uQWN0aW9uQWRkaXRpb25hbENsYWltIHtcbkZvcm1hdDogc3RyaW5nXG5WYWx1ZXM6IHN0cmluZ1tdXG5OYW1lOiBzdHJpbmdcbn1cbi8qKlxuICogSW5mb3JtYXRpb24gZm9yIGNyZWF0aW5nIGFuIGFjdGlvbiB0aGF0IGRpc3RyaWJ1dGVzIHJlcXVlc3RzIGFtb25nIG11bHRpcGxlIHRhcmdldCBncm91cHMuIFNwZWNpZnkgb25seSB3aGVuIGBgVHlwZWBgIGlzIGBgZm9yd2FyZGBgLlxuICogIElmIHlvdSBzcGVjaWZ5IGJvdGggYGBGb3J3YXJkQ29uZmlnYGAgYW5kIGBgVGFyZ2V0R3JvdXBBcm5gYCwgeW91IGNhbiBzcGVjaWZ5IG9ubHkgb25lIHRhcmdldCBncm91cCB1c2luZyBgYEZvcndhcmRDb25maWdgYCBhbmQgaXQgbXVzdCBiZSB0aGUgc2FtZSB0YXJnZXQgZ3JvdXAgc3BlY2lmaWVkIGluIGBgVGFyZ2V0R3JvdXBBcm5gYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3J3YXJkQ29uZmlnIHtcblRhcmdldEdyb3VwU3RpY2tpbmVzc0NvbmZpZz86IFRhcmdldEdyb3VwU3RpY2tpbmVzc0NvbmZpZ1xuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCBob3cgdHJhZmZpYyB3aWxsIGJlIGRpc3RyaWJ1dGVkIGJldHdlZW4gbXVsdGlwbGUgdGFyZ2V0IGdyb3VwcyBpbiBhIGZvcndhcmQgcnVsZS5cbiAqL1xuVGFyZ2V0R3JvdXBzPzogVGFyZ2V0R3JvdXBUdXBsZVtdXG59XG4vKipcbiAqIEluZm9ybWF0aW9uIGFib3V0IHRoZSB0YXJnZXQgZ3JvdXAgc3RpY2tpbmVzcyBmb3IgYSBydWxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldEdyb3VwU3RpY2tpbmVzc0NvbmZpZyB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRhcmdldCBncm91cCBzdGlja2luZXNzIGlzIGVuYWJsZWQuXG4gKi9cbkVuYWJsZWQ/OiBib29sZWFuXG4vKipcbiAqIFtBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2Vyc10gVGhlIHRpbWUgcGVyaW9kLCBpbiBzZWNvbmRzLCBkdXJpbmcgd2hpY2ggcmVxdWVzdHMgZnJvbSBhIGNsaWVudCBzaG91bGQgYmUgcm91dGVkIHRvIHRoZSBzYW1lIHRhcmdldCBncm91cC4gVGhlIHJhbmdlIGlzIDEtNjA0ODAwIHNlY29uZHMgKDcgZGF5cykuIFlvdSBtdXN0IHNwZWNpZnkgdGhpcyB2YWx1ZSB3aGVuIGVuYWJsaW5nIHRhcmdldCBncm91cCBzdGlja2luZXNzLlxuICovXG5EdXJhdGlvblNlY29uZHM/OiBudW1iZXJcbn1cbi8qKlxuICogSW5mb3JtYXRpb24gYWJvdXQgaG93IHRyYWZmaWMgd2lsbCBiZSBkaXN0cmlidXRlZCBiZXR3ZWVuIG11bHRpcGxlIHRhcmdldCBncm91cHMgaW4gYSBmb3J3YXJkIHJ1bGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0R3JvdXBUdXBsZSB7XG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgdGFyZ2V0IGdyb3VwLlxuICovXG5UYXJnZXRHcm91cEFybj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgd2VpZ2h0LiBUaGUgcmFuZ2UgaXMgMCB0byA5OTkuXG4gKi9cbldlaWdodD86IG51bWJlclxufVxuLyoqXG4gKiBTcGVjaWZpZXMgYW4gU1NMIHNlcnZlciBjZXJ0aWZpY2F0ZSB0byB1c2UgYXMgdGhlIGRlZmF1bHQgY2VydGlmaWNhdGUgZm9yIGEgc2VjdXJlIGxpc3RlbmVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENlcnRpZmljYXRlIHtcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBjZXJ0aWZpY2F0ZS5cbiAqL1xuQ2VydGlmaWNhdGVBcm4/OiAoe1xuW2s6IHN0cmluZ106IHVua25vd25cbn0gJiBzdHJpbmcpXG59XG4iXX0=
@@ -15,10 +15,6 @@ export type AuthenticateOidcConfig = ({
15
15
  * The token endpoint of the IdP. This must be a full URL, including the HTTPS protocol, the domain, and the path.
16
16
  */
17
17
  TokenEndpoint: string;
18
- /**
19
- * Indicates whether to use the existing client secret when modifying a rule. If you are creating a rule, you can omit this parameter or set it to false.
20
- */
21
- UseExistingClientSecret?: boolean;
22
18
  /**
23
19
  * The maximum duration of the authentication session, in seconds. The default is 604800 seconds (7 days).
24
20
  */
@@ -52,6 +48,10 @@ export type AuthenticateOidcConfig = ({
52
48
  * The name of the cookie used to maintain session information. The default is AWSELBAuthSessionCookie.
53
49
  */
54
50
  SessionCookieName?: string;
51
+ /**
52
+ * Indicates whether to use the existing client secret when modifying a rule. If you are creating a rule, you can omit this parameter or set it to false.
53
+ */
54
+ UseExistingClientSecret?: boolean;
55
55
  /**
56
56
  * The query parameters (up to 10) to include in the redirect request to the authorization endpoint.
57
57
  */
@@ -63,22 +63,10 @@ export type AuthenticateOidcConfig = ({
63
63
  [k: string]: string;
64
64
  };
65
65
  });
66
- export type Transform = ({
67
- Type: string;
68
- UrlRewriteConfig?: RewriteConfigObject;
69
- HostHeaderRewriteConfig?: RewriteConfigObject1;
70
- } & Transform1);
71
- export type RewriteConfigList = RewriteConfig[];
72
- export type Transform1 = {
73
- [k: string]: unknown;
74
- };
75
66
  /**
76
- * The strings to compare against the value of the HTTP header. The maximum length of each string is 128 characters. The comparison strings are case insensitive. The following wildcard characters are supported: * (matches 0 or more characters) and ? (matches exactly 1 character).
77
- * If the same header appears multiple times in the request, we search them in order until a match is found.
78
- * If you specify multiple strings, the condition is satisfied if one of the strings matches the value of the HTTP header. To require that all of the strings are a match, create one condition per string.
67
+ * The regular expressions to match against the condition field. The maximum length of each string is 128 characters. Specify only when ``Field`` is ``http-header``, ``host-header``, or ``path-pattern``.
79
68
  */
80
69
  export type ListOfStrings = string[];
81
- export type ListOfStrings1 = string[];
82
70
  /**
83
71
  * The condition value. Specify only when ``Field`` is ``host-header`` or ``path-pattern``. Alternatively, to specify multiple host names or multiple path patterns, use ``HostHeaderConfig`` or ``PathPatternConfig``.
84
72
  * If ``Field`` is ``host-header`` and you're not using ``HostHeaderConfig``, you can specify a single host name (for example, my.example.com). A host name is case insensitive, can be up to 128 characters in length, and can contain any of the following characters.
@@ -94,28 +82,40 @@ export type ListOfStrings1 = string[];
94
82
  * + * (matches 0 or more characters)
95
83
  * + ? (matches exactly 1 character)
96
84
  */
97
- export type ListOfStrings2 = string[];
85
+ export type ListOfStrings1 = string[];
98
86
  /**
99
- * The regular expressions to match against the condition field. The maximum length of each string is 128 characters. Specify only when ``Field`` is ``http-header``, ``host-header``, or ``path-pattern``.
87
+ * The name of the request method. The maximum length is 40 characters. The allowed characters are A-Z, hyphen (-), and underscore (_). The comparison is case sensitive. Wildcards are not supported; therefore, the method name must be an exact match.
88
+ * If you specify multiple strings, the condition is satisfied if one of the strings matches the HTTP request method. We recommend that you route GET and HEAD requests in the same way, because the response to a HEAD request may be cached.
100
89
  */
90
+ export type ListOfStrings2 = string[];
101
91
  export type ListOfStrings3 = string[];
102
92
  /**
103
- * The host names. The maximum length of each string is 128 characters. The comparison is case insensitive. The following wildcard characters are supported: * (matches 0 or more characters) and ? (matches exactly 1 character). You must include at least one "." character. You can include only alphabetical characters after the final "." character.
104
- * If you specify multiple strings, the condition is satisfied if one of the strings matches the host name.
93
+ * The path patterns to compare against the request URL. The maximum size of each string is 128 characters. The comparison is case sensitive. The following wildcard characters are supported: * (matches 0 or more characters) and ? (matches exactly 1 character).
94
+ * If you specify multiple strings, the condition is satisfied if one of them matches the request URL. The path pattern is compared only to the path of the URL, not to its query string.
105
95
  */
106
96
  export type ListOfStrings4 = string[];
107
97
  export type ListOfStrings5 = string[];
108
98
  /**
109
- * The name of the request method. The maximum length is 40 characters. The allowed characters are A-Z, hyphen (-), and underscore (_). The comparison is case sensitive. Wildcards are not supported; therefore, the method name must be an exact match.
110
- * If you specify multiple strings, the condition is satisfied if one of the strings matches the HTTP request method. We recommend that you route GET and HEAD requests in the same way, because the response to a HEAD request may be cached.
99
+ * The strings to compare against the value of the HTTP header. The maximum length of each string is 128 characters. The comparison strings are case insensitive. The following wildcard characters are supported: * (matches 0 or more characters) and ? (matches exactly 1 character).
100
+ * If the same header appears multiple times in the request, we search them in order until a match is found.
101
+ * If you specify multiple strings, the condition is satisfied if one of the strings matches the value of the HTTP header. To require that all of the strings are a match, create one condition per string.
111
102
  */
112
103
  export type ListOfStrings6 = string[];
104
+ export type ListOfStrings7 = string[];
113
105
  /**
114
- * The path patterns to compare against the request URL. The maximum size of each string is 128 characters. The comparison is case sensitive. The following wildcard characters are supported: * (matches 0 or more characters) and ? (matches exactly 1 character).
115
- * If you specify multiple strings, the condition is satisfied if one of them matches the request URL. The path pattern is compared only to the path of the URL, not to its query string.
106
+ * The host names. The maximum length of each string is 128 characters. The comparison is case insensitive. The following wildcard characters are supported: * (matches 0 or more characters) and ? (matches exactly 1 character). You must include at least one "." character. You can include only alphabetical characters after the final "." character.
107
+ * If you specify multiple strings, the condition is satisfied if one of the strings matches the host name.
116
108
  */
117
- export type ListOfStrings7 = string[];
118
109
  export type ListOfStrings8 = string[];
110
+ export type Transform = ({
111
+ Type: string;
112
+ HostHeaderRewriteConfig?: RewriteConfigObject;
113
+ UrlRewriteConfig?: RewriteConfigObject1;
114
+ } & Transform1);
115
+ export type RewriteConfigList = RewriteConfig[];
116
+ export type Transform1 = {
117
+ [k: string]: unknown;
118
+ };
119
119
  /**
120
120
  * Specifies a listener rule. The listener must be associated with an Application Load Balancer. Each rule consists of a priority, one or more actions, and one or more conditions.
121
121
  * For more information, see [Quotas for your Application Load Balancers](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-limits.html) in the *User Guide for Application Load Balancers*.
@@ -125,7 +125,7 @@ export interface _AWS_ELASTICLOADBALANCINGV2_LISTENERRULE {
125
125
  * The Amazon Resource Name (ARN) of the listener.
126
126
  */
127
127
  ListenerArn?: string;
128
- IsDefault?: boolean;
128
+ RuleArn?: string;
129
129
  /**
130
130
  * The actions.
131
131
  * The rule must include exactly one of the following types of actions: ``forward``, ``fixed-response``, or ``redirect``, and it must be the last action to be performed. If the rule is for an HTTPS listener, it can also optionally include an authentication action.
@@ -136,13 +136,13 @@ export interface _AWS_ELASTICLOADBALANCINGV2_LISTENERRULE {
136
136
  * If you try to reorder rules by updating their priorities, do not specify a new priority if an existing rule already uses this priority, as this can cause an error. If you need to reuse a priority with a different rule, you must remove it as a priority first, and then specify it in a subsequent update.
137
137
  */
138
138
  Priority: number;
139
- RuleArn?: string;
140
- Transforms?: Transform[];
141
139
  /**
142
140
  * The conditions.
143
141
  * The rule can optionally include up to one of each of the following conditions: ``http-request-method``, ``host-header``, ``path-pattern``, and ``source-ip``. A rule can also optionally include one or more of each of the following conditions: ``http-header`` and ``query-string``.
144
142
  */
145
143
  Conditions: RuleCondition[];
144
+ Transforms?: Transform[];
145
+ IsDefault?: boolean;
146
146
  }
147
147
  /**
148
148
  * Specifies an action for a listener rule.
@@ -165,6 +165,7 @@ export interface Action {
165
165
  RedirectConfig?: RedirectConfig;
166
166
  ForwardConfig?: ForwardConfig;
167
167
  AuthenticateOidcConfig?: AuthenticateOidcConfig;
168
+ JwtValidationConfig?: JwtValidationConfig;
168
169
  }
169
170
  /**
170
171
  * [Application Load Balancer] Information for creating an action that returns a custom HTTP response. Specify only when ``Type`` is ``fixed-response``.
@@ -297,24 +298,15 @@ export interface TargetGroupTuple {
297
298
  */
298
299
  Weight?: number;
299
300
  }
300
- export interface RewriteConfigObject {
301
- Rewrites: RewriteConfigList;
302
- }
303
- /**
304
- * Information about a rewrite transform. This transform matches a pattern and replaces it with the specified string.
305
- */
306
- export interface RewriteConfig {
307
- /**
308
- * The replacement string to use when rewriting the matched input. The maximum length of the string is 1,024 characters. You can specify capture groups in the regular expression (for example, $1 and $2).
309
- */
310
- Replace: string;
311
- /**
312
- * The regular expression to match in the input string. The maximum length of the string is 1,024 characters.
313
- */
314
- Regex: string;
301
+ export interface JwtValidationConfig {
302
+ JwksEndpoint: string;
303
+ Issuer: string;
304
+ AdditionalClaims?: JwtValidationActionAdditionalClaim[];
315
305
  }
316
- export interface RewriteConfigObject1 {
317
- Rewrites: RewriteConfigList;
306
+ export interface JwtValidationActionAdditionalClaim {
307
+ Format: string;
308
+ Name: string;
309
+ Values: string[];
318
310
  }
319
311
  /**
320
312
  * Specifies a condition for a listener rule.
@@ -330,26 +322,56 @@ export interface RuleCondition {
330
322
  * + ``source-ip``
331
323
  */
332
324
  Field?: string;
333
- HttpHeaderConfig?: HttpHeaderConfig;
334
- Values?: ListOfStrings2;
335
- QueryStringConfig?: QueryStringConfig;
336
- RegexValues?: ListOfStrings3;
337
- HostHeaderConfig?: HostHeaderConfig;
325
+ RegexValues?: ListOfStrings;
326
+ Values?: ListOfStrings1;
338
327
  HttpRequestMethodConfig?: HttpRequestMethodConfig;
339
328
  PathPatternConfig?: PathPatternConfig;
329
+ HttpHeaderConfig?: HttpHeaderConfig;
340
330
  SourceIpConfig?: SourceIpConfig;
331
+ HostHeaderConfig?: HostHeaderConfig;
332
+ QueryStringConfig?: QueryStringConfig;
333
+ }
334
+ /**
335
+ * Information for an HTTP method condition. Specify only when ``Field`` is ``http-request-method``.
336
+ */
337
+ export interface HttpRequestMethodConfig {
338
+ Values?: ListOfStrings2;
339
+ }
340
+ /**
341
+ * Information for a path pattern condition. Specify only when ``Field`` is ``path-pattern``.
342
+ */
343
+ export interface PathPatternConfig {
344
+ RegexValues?: ListOfStrings3;
345
+ Values?: ListOfStrings4;
341
346
  }
342
347
  /**
343
348
  * Information for an HTTP header condition. Specify only when ``Field`` is ``http-header``.
344
349
  */
345
350
  export interface HttpHeaderConfig {
346
- Values?: ListOfStrings;
347
- RegexValues?: ListOfStrings1;
351
+ RegexValues?: ListOfStrings5;
352
+ Values?: ListOfStrings6;
348
353
  /**
349
354
  * The name of the HTTP header field. The maximum size is 40 characters. The header name is case insensitive. The allowed characters are specified by RFC 7230. Wildcards are not supported.
350
355
  */
351
356
  HttpHeaderName?: string;
352
357
  }
358
+ /**
359
+ * Information for a source IP condition. Specify only when ``Field`` is ``source-ip``.
360
+ */
361
+ export interface SourceIpConfig {
362
+ /**
363
+ * The source IP addresses, in CIDR format. You can use both IPv4 and IPv6 addresses. Wildcards are not supported.
364
+ * If you specify multiple addresses, the condition is satisfied if the source IP address of the request matches one of the CIDR blocks. This condition is not satisfied by the addresses in the X-Forwarded-For header.
365
+ */
366
+ Values?: string[];
367
+ }
368
+ /**
369
+ * Information for a host header condition. Specify only when ``Field`` is ``host-header``.
370
+ */
371
+ export interface HostHeaderConfig {
372
+ RegexValues?: ListOfStrings7;
373
+ Values?: ListOfStrings8;
374
+ }
353
375
  /**
354
376
  * Information for a query string condition. Specify only when ``Field`` is ``query-string``.
355
377
  */
@@ -373,33 +395,22 @@ export interface QueryStringKeyValue {
373
395
  */
374
396
  Key?: string;
375
397
  }
376
- /**
377
- * Information for a host header condition. Specify only when ``Field`` is ``host-header``.
378
- */
379
- export interface HostHeaderConfig {
380
- Values?: ListOfStrings4;
381
- RegexValues?: ListOfStrings5;
382
- }
383
- /**
384
- * Information for an HTTP method condition. Specify only when ``Field`` is ``http-request-method``.
385
- */
386
- export interface HttpRequestMethodConfig {
387
- Values?: ListOfStrings6;
388
- }
389
- /**
390
- * Information for a path pattern condition. Specify only when ``Field`` is ``path-pattern``.
391
- */
392
- export interface PathPatternConfig {
393
- Values?: ListOfStrings7;
394
- RegexValues?: ListOfStrings8;
398
+ export interface RewriteConfigObject {
399
+ Rewrites: RewriteConfigList;
395
400
  }
396
401
  /**
397
- * Information for a source IP condition. Specify only when ``Field`` is ``source-ip``.
402
+ * Information about a rewrite transform. This transform matches a pattern and replaces it with the specified string.
398
403
  */
399
- export interface SourceIpConfig {
404
+ export interface RewriteConfig {
400
405
  /**
401
- * The source IP addresses, in CIDR format. You can use both IPv4 and IPv6 addresses. Wildcards are not supported.
402
- * If you specify multiple addresses, the condition is satisfied if the source IP address of the request matches one of the CIDR blocks. This condition is not satisfied by the addresses in the X-Forwarded-For header.
406
+ * The regular expression to match in the input string. The maximum length of the string is 1,024 characters.
403
407
  */
404
- Values?: string[];
408
+ Regex: string;
409
+ /**
410
+ * The replacement string to use when rewriting the matched input. The maximum length of the string is 1,024 characters. You can specify capture groups in the regular expression (for example, $1 and $2).
411
+ */
412
+ Replace: string;
413
+ }
414
+ export interface RewriteConfigObject1 {
415
+ Rewrites: RewriteConfigList;
405
416
  }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjItbGlzdGVuZXJydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjItbGlzdGVuZXJydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFtIVFRQUyBsaXN0ZW5lcnNdIEluZm9ybWF0aW9uIGFib3V0IGFuIGlkZW50aXR5IHByb3ZpZGVyIHRoYXQgaXMgY29tcGxpYW50IHdpdGggT3BlbklEIENvbm5lY3QgKE9JREMpLiBTcGVjaWZ5IG9ubHkgd2hlbiBgYFR5cGVgYCBpcyBgYGF1dGhlbnRpY2F0ZS1vaWRjYGAuXG4gKi9cbmV4cG9ydCB0eXBlIEF1dGhlbnRpY2F0ZU9pZGNDb25maWcgPSAoe1xuW2s6IHN0cmluZ106IHVua25vd25cbn0gJiB7XG4vKipcbiAqIFRoZSBiZWhhdmlvciBpZiB0aGUgdXNlciBpcyBub3QgYXV0aGVudGljYXRlZC4gVGhlIGZvbGxvd2luZyBhcmUgcG9zc2libGUgdmFsdWVzOlxuICogICArICBkZW55YGBgYCAtIFJldHVybiBhbiBIVFRQIDQwMSBVbmF1dGhvcml6ZWQgZXJyb3IuXG4gKiAgICsgIGFsbG93YGBgYCAtIEFsbG93IHRoZSByZXF1ZXN0IHRvIGJlIGZvcndhcmRlZCB0byB0aGUgdGFyZ2V0LlxuICogICArICBhdXRoZW50aWNhdGVgYGBgIC0gUmVkaXJlY3QgdGhlIHJlcXVlc3QgdG8gdGhlIElkUCBhdXRob3JpemF0aW9uIGVuZHBvaW50LiBUaGlzIGlzIHRoZSBkZWZhdWx0IHZhbHVlLlxuICovXG5PblVuYXV0aGVudGljYXRlZFJlcXVlc3Q/OiBzdHJpbmdcbi8qKlxuICogVGhlIHRva2VuIGVuZHBvaW50IG9mIHRoZSBJZFAuIFRoaXMgbXVzdCBiZSBhIGZ1bGwgVVJMLCBpbmNsdWRpbmcgdGhlIEhUVFBTIHByb3RvY29sLCB0aGUgZG9tYWluLCBhbmQgdGhlIHBhdGguXG4gKi9cblRva2VuRW5kcG9pbnQ6IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0byB1c2UgdGhlIGV4aXN0aW5nIGNsaWVudCBzZWNyZXQgd2hlbiBtb2RpZnlpbmcgYSBydWxlLiBJZiB5b3UgYXJlIGNyZWF0aW5nIGEgcnVsZSwgeW91IGNhbiBvbWl0IHRoaXMgcGFyYW1ldGVyIG9yIHNldCBpdCB0byBmYWxzZS5cbiAqL1xuVXNlRXhpc3RpbmdDbGllbnRTZWNyZXQ/OiBib29sZWFuXG4vKipcbiAqIFRoZSBtYXhpbXVtIGR1cmF0aW9uIG9mIHRoZSBhdXRoZW50aWNhdGlvbiBzZXNzaW9uLCBpbiBzZWNvbmRzLiBUaGUgZGVmYXVsdCBpcyA2MDQ4MDAgc2Vjb25kcyAoNyBkYXlzKS5cbiAqL1xuU2Vzc2lvblRpbWVvdXQ/OiBudW1iZXJcbi8qKlxuICogVGhlIHNldCBvZiB1c2VyIGNsYWltcyB0byBiZSByZXF1ZXN0ZWQgZnJvbSB0aGUgSWRQLiBUaGUgZGVmYXVsdCBpcyBgYG9wZW5pZGBgLlxuICogIFRvIHZlcmlmeSB3aGljaCBzY29wZSB2YWx1ZXMgeW91ciBJZFAgc3VwcG9ydHMgYW5kIGhvdyB0byBzZXBhcmF0ZSBtdWx0aXBsZSB2YWx1ZXMsIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgeW91ciBJZFAuXG4gKi9cblNjb3BlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBPSURDIGlzc3VlciBpZGVudGlmaWVyIG9mIHRoZSBJZFAuIFRoaXMgbXVzdCBiZSBhIGZ1bGwgVVJMLCBpbmNsdWRpbmcgdGhlIEhUVFBTIHByb3RvY29sLCB0aGUgZG9tYWluLCBhbmQgdGhlIHBhdGguXG4gKi9cbklzc3Vlcjogc3RyaW5nXG4vKipcbiAqIFRoZSBPQXV0aCAyLjAgY2xpZW50IHNlY3JldC4gVGhpcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQgaWYgeW91IGFyZSBjcmVhdGluZyBhIHJ1bGUuIElmIHlvdSBhcmUgbW9kaWZ5aW5nIGEgcnVsZSwgeW91IGNhbiBvbWl0IHRoaXMgcGFyYW1ldGVyIGlmIHlvdSBzZXQgYGBVc2VFeGlzdGluZ0NsaWVudFNlY3JldGBgIHRvIHRydWUuXG4gKi9cbkNsaWVudFNlY3JldD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdXNlciBpbmZvIGVuZHBvaW50IG9mIHRoZSBJZFAuIFRoaXMgbXVzdCBiZSBhIGZ1bGwgVVJMLCBpbmNsdWRpbmcgdGhlIEhUVFBTIHByb3RvY29sLCB0aGUgZG9tYWluLCBhbmQgdGhlIHBhdGguXG4gKi9cblVzZXJJbmZvRW5kcG9pbnQ6IHN0cmluZ1xuLyoqXG4gKiBUaGUgT0F1dGggMi4wIGNsaWVudCBpZGVudGlmaWVyLlxuICovXG5DbGllbnRJZDogc3RyaW5nXG4vKipcbiAqIFRoZSBhdXRob3JpemF0aW9uIGVuZHBvaW50IG9mIHRoZSBJZFAuIFRoaXMgbXVzdCBiZSBhIGZ1bGwgVVJMLCBpbmNsdWRpbmcgdGhlIEhUVFBTIHByb3RvY29sLCB0aGUgZG9tYWluLCBhbmQgdGhlIHBhdGguXG4gKi9cbkF1dGhvcml6YXRpb25FbmRwb2ludDogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBjb29raWUgdXNlZCB0byBtYWludGFpbiBzZXNzaW9uIGluZm9ybWF0aW9uLiBUaGUgZGVmYXVsdCBpcyBBV1NFTEJBdXRoU2Vzc2lvbkNvb2tpZS5cbiAqL1xuU2Vzc2lvbkNvb2tpZU5hbWU/OiBzdHJpbmdcbi8qKlxuICogVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgKHVwIHRvIDEwKSB0byBpbmNsdWRlIGluIHRoZSByZWRpcmVjdCByZXF1ZXN0IHRvIHRoZSBhdXRob3JpemF0aW9uIGVuZHBvaW50LlxuICovXG5BdXRoZW50aWNhdGlvblJlcXVlc3RFeHRyYVBhcmFtcz86IHtcbi8qKlxuICogVGhpcyBpbnRlcmZhY2Ugd2FzIHJlZmVyZW5jZWQgYnkgYHVuZGVmaW5lZGAncyBKU09OLVNjaGVtYSBkZWZpbml0aW9uXG4gKiB2aWEgdGhlIGBwYXR0ZXJuUHJvcGVydHlgIFwiW2EtekEtWjAtOV0rXCIuXG4gKi9cbltrOiBzdHJpbmddOiBzdHJpbmdcbn1cbn0pXG5leHBvcnQgdHlwZSBUcmFuc2Zvcm0gPSAoe1xuVHlwZTogc3RyaW5nXG5VcmxSZXdyaXRlQ29uZmlnPzogUmV3cml0ZUNvbmZpZ09iamVjdFxuSG9zdEhlYWRlclJld3JpdGVDb25maWc/OiBSZXdyaXRlQ29uZmlnT2JqZWN0MVxufSAmIFRyYW5zZm9ybTEpXG5leHBvcnQgdHlwZSBSZXdyaXRlQ29uZmlnTGlzdCA9IFJld3JpdGVDb25maWdbXVxuZXhwb3J0IHR5cGUgVHJhbnNmb3JtMSA9IHtcbltrOiBzdHJpbmddOiB1bmtub3duXG59XG4vKipcbiAqIFRoZSBzdHJpbmdzIHRvIGNvbXBhcmUgYWdhaW5zdCB0aGUgdmFsdWUgb2YgdGhlIEhUVFAgaGVhZGVyLiBUaGUgbWF4aW11bSBsZW5ndGggb2YgZWFjaCBzdHJpbmcgaXMgMTI4IGNoYXJhY3RlcnMuIFRoZSBjb21wYXJpc29uIHN0cmluZ3MgYXJlIGNhc2UgaW5zZW5zaXRpdmUuIFRoZSBmb2xsb3dpbmcgd2lsZGNhcmQgY2hhcmFjdGVycyBhcmUgc3VwcG9ydGVkOiAqIChtYXRjaGVzIDAgb3IgbW9yZSBjaGFyYWN0ZXJzKSBhbmQgPyAobWF0Y2hlcyBleGFjdGx5IDEgY2hhcmFjdGVyKS5cbiAqICBJZiB0aGUgc2FtZSBoZWFkZXIgYXBwZWFycyBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgcmVxdWVzdCwgd2Ugc2VhcmNoIHRoZW0gaW4gb3JkZXIgdW50aWwgYSBtYXRjaCBpcyBmb3VuZC5cbiAqICBJZiB5b3Ugc3BlY2lmeSBtdWx0aXBsZSBzdHJpbmdzLCB0aGUgY29uZGl0aW9uIGlzIHNhdGlzZmllZCBpZiBvbmUgb2YgdGhlIHN0cmluZ3MgbWF0Y2hlcyB0aGUgdmFsdWUgb2YgdGhlIEhUVFAgaGVhZGVyLiBUbyByZXF1aXJlIHRoYXQgYWxsIG9mIHRoZSBzdHJpbmdzIGFyZSBhIG1hdGNoLCBjcmVhdGUgb25lIGNvbmRpdGlvbiBwZXIgc3RyaW5nLlxuICovXG5leHBvcnQgdHlwZSBMaXN0T2ZTdHJpbmdzID0gc3RyaW5nW11cbmV4cG9ydCB0eXBlIExpc3RPZlN0cmluZ3MxID0gc3RyaW5nW11cbi8qKlxuICogVGhlIGNvbmRpdGlvbiB2YWx1ZS4gU3BlY2lmeSBvbmx5IHdoZW4gYGBGaWVsZGBgIGlzIGBgaG9zdC1oZWFkZXJgYCBvciBgYHBhdGgtcGF0dGVybmBgLiBBbHRlcm5hdGl2ZWx5LCB0byBzcGVjaWZ5IG11bHRpcGxlIGhvc3QgbmFtZXMgb3IgbXVsdGlwbGUgcGF0aCBwYXR0ZXJucywgdXNlIGBgSG9zdEhlYWRlckNvbmZpZ2BgIG9yIGBgUGF0aFBhdHRlcm5Db25maWdgYC5cbiAqICBJZiBgYEZpZWxkYGAgaXMgYGBob3N0LWhlYWRlcmBgIGFuZCB5b3UncmUgbm90IHVzaW5nIGBgSG9zdEhlYWRlckNvbmZpZ2BgLCB5b3UgY2FuIHNwZWNpZnkgYSBzaW5nbGUgaG9zdCBuYW1lIChmb3IgZXhhbXBsZSwgbXkuZXhhbXBsZS5jb20pLiBBIGhvc3QgbmFtZSBpcyBjYXNlIGluc2Vuc2l0aXZlLCBjYW4gYmUgdXAgdG8gMTI4IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLCBhbmQgY2FuIGNvbnRhaW4gYW55IG9mIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVycy5cbiAqICAgKyAgQS1aLCBhLXosIDAtOVxuICogICArICAtIC5cbiAqICAgKyAgKiAobWF0Y2hlcyAwIG9yIG1vcmUgY2hhcmFjdGVycylcbiAqICAgKyAgPyAobWF0Y2hlcyBleGFjdGx5IDEgY2hhcmFjdGVyKVxuICogICBcbiAqICBJZiBgYEZpZWxkYGAgaXMgYGBwYXRoLXBhdHRlcm5gYCBhbmQgeW91J3JlIG5vdCB1c2luZyBgYFBhdGhQYXR0ZXJuQ29uZmlnYGAsIHlvdSBjYW4gc3BlY2lmeSBhIHNpbmdsZSBwYXRoIHBhdHRlcm4gKGZvciBleGFtcGxlLCAvaW1nLyopLiBBIHBhdGggcGF0dGVybiBpcyBjYXNlLXNlbnNpdGl2ZSwgY2FuIGJlIHVwIHRvIDEyOCBjaGFyYWN0ZXJzIGluIGxlbmd0aCwgYW5kIGNhbiBjb250YWluIGFueSBvZiB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcnMuXG4gKiAgICsgIEEtWiwgYS16LCAwLTlcbiAqICAgKyAgXyAtIC4gJCAvIH4gXCIgJyBAIDogK1xuICogICArICAmICh1c2luZyAmYW1wOylcbiAqICAgKyAgKiAobWF0Y2hlcyAwIG9yIG1vcmUgY2hhcmFjdGVycylcbiAqICAgKyAgPyAobWF0Y2hlcyBleGFjdGx5IDEgY2hhcmFjdGVyKVxuICovXG5leHBvcnQgdHlwZSBMaXN0T2ZTdHJpbmdzMiA9IHN0cmluZ1tdXG4vKipcbiAqIFRoZSByZWd1bGFyIGV4cHJlc3Npb25zIHRvIG1hdGNoIGFnYWluc3QgdGhlIGNvbmRpdGlvbiBmaWVsZC4gVGhlIG1heGltdW0gbGVuZ3RoIG9mIGVhY2ggc3RyaW5nIGlzIDEyOCBjaGFyYWN0ZXJzLiBTcGVjaWZ5IG9ubHkgd2hlbiBgYEZpZWxkYGAgaXMgYGBodHRwLWhlYWRlcmBgLCBgYGhvc3QtaGVhZGVyYGAsIG9yIGBgcGF0aC1wYXR0ZXJuYGAuXG4gKi9cbmV4cG9ydCB0eXBlIExpc3RPZlN0cmluZ3MzID0gc3RyaW5nW11cbi8qKlxuICogVGhlIGhvc3QgbmFtZXMuIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBlYWNoIHN0cmluZyBpcyAxMjggY2hhcmFjdGVycy4gVGhlIGNvbXBhcmlzb24gaXMgY2FzZSBpbnNlbnNpdGl2ZS4gVGhlIGZvbGxvd2luZyB3aWxkY2FyZCBjaGFyYWN0ZXJzIGFyZSBzdXBwb3J0ZWQ6ICogKG1hdGNoZXMgMCBvciBtb3JlIGNoYXJhY3RlcnMpIGFuZCA/IChtYXRjaGVzIGV4YWN0bHkgMSBjaGFyYWN0ZXIpLiBZb3UgbXVzdCBpbmNsdWRlIGF0IGxlYXN0IG9uZSBcIi5cIiBjaGFyYWN0ZXIuIFlvdSBjYW4gaW5jbHVkZSBvbmx5IGFscGhhYmV0aWNhbCBjaGFyYWN0ZXJzIGFmdGVyIHRoZSBmaW5hbCBcIi5cIiBjaGFyYWN0ZXIuXG4gKiAgSWYgeW91IHNwZWNpZnkgbXVsdGlwbGUgc3RyaW5ncywgdGhlIGNvbmRpdGlvbiBpcyBzYXRpc2ZpZWQgaWYgb25lIG9mIHRoZSBzdHJpbmdzIG1hdGNoZXMgdGhlIGhvc3QgbmFtZS5cbiAqL1xuZXhwb3J0IHR5cGUgTGlzdE9mU3RyaW5nczQgPSBzdHJpbmdbXVxuZXhwb3J0IHR5cGUgTGlzdE9mU3RyaW5nczUgPSBzdHJpbmdbXVxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgcmVxdWVzdCBtZXRob2QuIFRoZSBtYXhpbXVtIGxlbmd0aCBpcyA0MCBjaGFyYWN0ZXJzLiBUaGUgYWxsb3dlZCBjaGFyYWN0ZXJzIGFyZSBBLVosIGh5cGhlbiAoLSksIGFuZCB1bmRlcnNjb3JlIChfKS4gVGhlIGNvbXBhcmlzb24gaXMgY2FzZSBzZW5zaXRpdmUuIFdpbGRjYXJkcyBhcmUgbm90IHN1cHBvcnRlZDsgdGhlcmVmb3JlLCB0aGUgbWV0aG9kIG5hbWUgbXVzdCBiZSBhbiBleGFjdCBtYXRjaC5cbiAqICBJZiB5b3Ugc3BlY2lmeSBtdWx0aXBsZSBzdHJpbmdzLCB0aGUgY29uZGl0aW9uIGlzIHNhdGlzZmllZCBpZiBvbmUgb2YgdGhlIHN0cmluZ3MgbWF0Y2hlcyB0aGUgSFRUUCByZXF1ZXN0IG1ldGhvZC4gV2UgcmVjb21tZW5kIHRoYXQgeW91IHJvdXRlIEdFVCBhbmQgSEVBRCByZXF1ZXN0cyBpbiB0aGUgc2FtZSB3YXksIGJlY2F1c2UgdGhlIHJlc3BvbnNlIHRvIGEgSEVBRCByZXF1ZXN0IG1heSBiZSBjYWNoZWQuXG4gKi9cbmV4cG9ydCB0eXBlIExpc3RPZlN0cmluZ3M2ID0gc3RyaW5nW11cbi8qKlxuICogVGhlIHBhdGggcGF0dGVybnMgdG8gY29tcGFyZSBhZ2FpbnN0IHRoZSByZXF1ZXN0IFVSTC4gVGhlIG1heGltdW0gc2l6ZSBvZiBlYWNoIHN0cmluZyBpcyAxMjggY2hhcmFjdGVycy4gVGhlIGNvbXBhcmlzb24gaXMgY2FzZSBzZW5zaXRpdmUuIFRoZSBmb2xsb3dpbmcgd2lsZGNhcmQgY2hhcmFjdGVycyBhcmUgc3VwcG9ydGVkOiAqIChtYXRjaGVzIDAgb3IgbW9yZSBjaGFyYWN0ZXJzKSBhbmQgPyAobWF0Y2hlcyBleGFjdGx5IDEgY2hhcmFjdGVyKS5cbiAqICBJZiB5b3Ugc3BlY2lmeSBtdWx0aXBsZSBzdHJpbmdzLCB0aGUgY29uZGl0aW9uIGlzIHNhdGlzZmllZCBpZiBvbmUgb2YgdGhlbSBtYXRjaGVzIHRoZSByZXF1ZXN0IFVSTC4gVGhlIHBhdGggcGF0dGVybiBpcyBjb21wYXJlZCBvbmx5IHRvIHRoZSBwYXRoIG9mIHRoZSBVUkwsIG5vdCB0byBpdHMgcXVlcnkgc3RyaW5nLlxuICovXG5leHBvcnQgdHlwZSBMaXN0T2ZTdHJpbmdzNyA9IHN0cmluZ1tdXG5leHBvcnQgdHlwZSBMaXN0T2ZTdHJpbmdzOCA9IHN0cmluZ1tdXG5cbi8qKlxuICogU3BlY2lmaWVzIGEgbGlzdGVuZXIgcnVsZS4gVGhlIGxpc3RlbmVyIG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIGFuIEFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXIuIEVhY2ggcnVsZSBjb25zaXN0cyBvZiBhIHByaW9yaXR5LCBvbmUgb3IgbW9yZSBhY3Rpb25zLCBhbmQgb25lIG9yIG1vcmUgY29uZGl0aW9ucy5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtRdW90YXMgZm9yIHlvdXIgQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlcnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lbGFzdGljbG9hZGJhbGFuY2luZy9sYXRlc3QvYXBwbGljYXRpb24vbG9hZC1iYWxhbmNlci1saW1pdHMuaHRtbCkgaW4gdGhlICpVc2VyIEd1aWRlIGZvciBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VycyouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19FTEFTVElDTE9BREJBTEFOQ0lOR1YyX0xJU1RFTkVSUlVMRSB7XG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgbGlzdGVuZXIuXG4gKi9cbkxpc3RlbmVyQXJuPzogc3RyaW5nXG5Jc0RlZmF1bHQ/OiBib29sZWFuXG4vKipcbiAqIFRoZSBhY3Rpb25zLlxuICogIFRoZSBydWxlIG11c3QgaW5jbHVkZSBleGFjdGx5IG9uZSBvZiB0aGUgZm9sbG93aW5nIHR5cGVzIG9mIGFjdGlvbnM6IGBgZm9yd2FyZGBgLCBgYGZpeGVkLXJlc3BvbnNlYGAsIG9yIGBgcmVkaXJlY3RgYCwgYW5kIGl0IG11c3QgYmUgdGhlIGxhc3QgYWN0aW9uIHRvIGJlIHBlcmZvcm1lZC4gSWYgdGhlIHJ1bGUgaXMgZm9yIGFuIEhUVFBTIGxpc3RlbmVyLCBpdCBjYW4gYWxzbyBvcHRpb25hbGx5IGluY2x1ZGUgYW4gYXV0aGVudGljYXRpb24gYWN0aW9uLlxuICovXG5BY3Rpb25zOiBBY3Rpb25bXVxuLyoqXG4gKiBUaGUgcnVsZSBwcmlvcml0eS4gQSBsaXN0ZW5lciBjYW4ndCBoYXZlIG11bHRpcGxlIHJ1bGVzIHdpdGggdGhlIHNhbWUgcHJpb3JpdHkuXG4gKiAgSWYgeW91IHRyeSB0byByZW9yZGVyIHJ1bGVzIGJ5IHVwZGF0aW5nIHRoZWlyIHByaW9yaXRpZXMsIGRvIG5vdCBzcGVjaWZ5IGEgbmV3IHByaW9yaXR5IGlmIGFuIGV4aXN0aW5nIHJ1bGUgYWxyZWFkeSB1c2VzIHRoaXMgcHJpb3JpdHksIGFzIHRoaXMgY2FuIGNhdXNlIGFuIGVycm9yLiBJZiB5b3UgbmVlZCB0byByZXVzZSBhIHByaW9yaXR5IHdpdGggYSBkaWZmZXJlbnQgcnVsZSwgeW91IG11c3QgcmVtb3ZlIGl0IGFzIGEgcHJpb3JpdHkgZmlyc3QsIGFuZCB0aGVuIHNwZWNpZnkgaXQgaW4gYSBzdWJzZXF1ZW50IHVwZGF0ZS5cbiAqL1xuUHJpb3JpdHk6IG51bWJlclxuUnVsZUFybj86IHN0cmluZ1xuVHJhbnNmb3Jtcz86IFRyYW5zZm9ybVtdXG4vKipcbiAqIFRoZSBjb25kaXRpb25zLlxuICogIFRoZSBydWxlIGNhbiBvcHRpb25hbGx5IGluY2x1ZGUgdXAgdG8gb25lIG9mIGVhY2ggb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiBgYGh0dHAtcmVxdWVzdC1tZXRob2RgYCwgYGBob3N0LWhlYWRlcmBgLCBgYHBhdGgtcGF0dGVybmBgLCBhbmQgYGBzb3VyY2UtaXBgYC4gQSBydWxlIGNhbiBhbHNvIG9wdGlvbmFsbHkgaW5jbHVkZSBvbmUgb3IgbW9yZSBvZiBlYWNoIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogYGBodHRwLWhlYWRlcmBgIGFuZCBgYHF1ZXJ5LXN0cmluZ2BgLlxuICovXG5Db25kaXRpb25zOiBSdWxlQ29uZGl0aW9uW11cbn1cbi8qKlxuICogU3BlY2lmaWVzIGFuIGFjdGlvbiBmb3IgYSBsaXN0ZW5lciBydWxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbiB7XG4vKipcbiAqIFRoZSBvcmRlciBmb3IgdGhlIGFjdGlvbi4gVGhpcyB2YWx1ZSBpcyByZXF1aXJlZCBmb3IgcnVsZXMgd2l0aCBtdWx0aXBsZSBhY3Rpb25zLiBUaGUgYWN0aW9uIHdpdGggdGhlIGxvd2VzdCB2YWx1ZSBmb3Igb3JkZXIgaXMgcGVyZm9ybWVkIGZpcnN0LlxuICovXG5PcmRlcj86IG51bWJlclxuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIHRhcmdldCBncm91cC4gU3BlY2lmeSBvbmx5IHdoZW4gYGBUeXBlYGAgaXMgYGBmb3J3YXJkYGAgYW5kIHlvdSB3YW50IHRvIHJvdXRlIHRvIGEgc2luZ2xlIHRhcmdldCBncm91cC4gVG8gcm91dGUgdG8gbXVsdGlwbGUgdGFyZ2V0IGdyb3VwcywgeW91IG11c3QgdXNlIGBgRm9yd2FyZENvbmZpZ2BgIGluc3RlYWQuXG4gKi9cblRhcmdldEdyb3VwQXJuPzogc3RyaW5nXG5GaXhlZFJlc3BvbnNlQ29uZmlnPzogRml4ZWRSZXNwb25zZUNvbmZpZ1xuQXV0aGVudGljYXRlQ29nbml0b0NvbmZpZz86IEF1dGhlbnRpY2F0ZUNvZ25pdG9Db25maWdcbi8qKlxuICogVGhlIHR5cGUgb2YgYWN0aW9uLlxuICovXG5UeXBlOiBzdHJpbmdcblJlZGlyZWN0Q29uZmlnPzogUmVkaXJlY3RDb25maWdcbkZvcndhcmRDb25maWc/OiBGb3J3YXJkQ29uZmlnXG5BdXRoZW50aWNhdGVPaWRjQ29uZmlnPzogQXV0aGVudGljYXRlT2lkY0NvbmZpZ1xufVxuLyoqXG4gKiBbQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlcl0gSW5mb3JtYXRpb24gZm9yIGNyZWF0aW5nIGFuIGFjdGlvbiB0aGF0IHJldHVybnMgYSBjdXN0b20gSFRUUCByZXNwb25zZS4gU3BlY2lmeSBvbmx5IHdoZW4gYGBUeXBlYGAgaXMgYGBmaXhlZC1yZXNwb25zZWBgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpeGVkUmVzcG9uc2VDb25maWcge1xuLyoqXG4gKiBUaGUgY29udGVudCB0eXBlLlxuICogIFZhbGlkIFZhbHVlczogdGV4dC9wbGFpbiB8IHRleHQvY3NzIHwgdGV4dC9odG1sIHwgYXBwbGljYXRpb24vamF2YXNjcmlwdCB8IGFwcGxpY2F0aW9uL2pzb25cbiAqL1xuQ29udGVudFR5cGU/OiBzdHJpbmdcbi8qKlxuICogVGhlIEhUVFAgcmVzcG9uc2UgY29kZSAoMlhYLCA0WFgsIG9yIDVYWCkuXG4gKi9cblN0YXR1c0NvZGU6IHN0cmluZ1xuLyoqXG4gKiBUaGUgbWVzc2FnZS5cbiAqL1xuTWVzc2FnZUJvZHk/OiBzdHJpbmdcbn1cbi8qKlxuICogW0hUVFBTIGxpc3RlbmVyc10gSW5mb3JtYXRpb24gZm9yIHVzaW5nIEFtYXpvbiBDb2duaXRvIHRvIGF1dGhlbnRpY2F0ZSB1c2Vycy4gU3BlY2lmeSBvbmx5IHdoZW4gYGBUeXBlYGAgaXMgYGBhdXRoZW50aWNhdGUtY29nbml0b2BgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhlbnRpY2F0ZUNvZ25pdG9Db25maWcge1xuLyoqXG4gKiBUaGUgYmVoYXZpb3IgaWYgdGhlIHVzZXIgaXMgbm90IGF1dGhlbnRpY2F0ZWQuIFRoZSBmb2xsb3dpbmcgYXJlIHBvc3NpYmxlIHZhbHVlczpcbiAqICAgKyAgZGVueWBgYGAgLSBSZXR1cm4gYW4gSFRUUCA0MDEgVW5hdXRob3JpemVkIGVycm9yLlxuICogICArICBhbGxvd2BgYGAgLSBBbGxvdyB0aGUgcmVxdWVzdCB0byBiZSBmb3J3YXJkZWQgdG8gdGhlIHRhcmdldC5cbiAqICAgKyAgYXV0aGVudGljYXRlYGBgYCAtIFJlZGlyZWN0IHRoZSByZXF1ZXN0IHRvIHRoZSBJZFAgYXV0aG9yaXphdGlvbiBlbmRwb2ludC4gVGhpcyBpcyB0aGUgZGVmYXVsdCB2YWx1ZS5cbiAqL1xuT25VbmF1dGhlbnRpY2F0ZWRSZXF1ZXN0Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBJRCBvZiB0aGUgQW1hem9uIENvZ25pdG8gdXNlciBwb29sIGNsaWVudC5cbiAqL1xuVXNlclBvb2xDbGllbnRJZDogc3RyaW5nXG4vKipcbiAqIFRoZSBkb21haW4gcHJlZml4IG9yIGZ1bGx5LXF1YWxpZmllZCBkb21haW4gbmFtZSBvZiB0aGUgQW1hem9uIENvZ25pdG8gdXNlciBwb29sLlxuICovXG5Vc2VyUG9vbERvbWFpbjogc3RyaW5nXG4vKipcbiAqIFRoZSBtYXhpbXVtIGR1cmF0aW9uIG9mIHRoZSBhdXRoZW50aWNhdGlvbiBzZXNzaW9uLCBpbiBzZWNvbmRzLiBUaGUgZGVmYXVsdCBpcyA2MDQ4MDAgc2Vjb25kcyAoNyBkYXlzKS5cbiAqL1xuU2Vzc2lvblRpbWVvdXQ/OiBudW1iZXJcbi8qKlxuICogVGhlIHNldCBvZiB1c2VyIGNsYWltcyB0byBiZSByZXF1ZXN0ZWQgZnJvbSB0aGUgSWRQLiBUaGUgZGVmYXVsdCBpcyBgYG9wZW5pZGBgLlxuICogIFRvIHZlcmlmeSB3aGljaCBzY29wZSB2YWx1ZXMgeW91ciBJZFAgc3VwcG9ydHMgYW5kIGhvdyB0byBzZXBhcmF0ZSBtdWx0aXBsZSB2YWx1ZXMsIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgeW91ciBJZFAuXG4gKi9cblNjb3BlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBjb29raWUgdXNlZCB0byBtYWludGFpbiBzZXNzaW9uIGluZm9ybWF0aW9uLiBUaGUgZGVmYXVsdCBpcyBBV1NFTEJBdXRoU2Vzc2lvbkNvb2tpZS5cbiAqL1xuU2Vzc2lvbkNvb2tpZU5hbWU/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBBbWF6b24gQ29nbml0byB1c2VyIHBvb2wuXG4gKi9cblVzZXJQb29sQXJuOiBzdHJpbmdcbi8qKlxuICogVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgKHVwIHRvIDEwKSB0byBpbmNsdWRlIGluIHRoZSByZWRpcmVjdCByZXF1ZXN0IHRvIHRoZSBhdXRob3JpemF0aW9uIGVuZHBvaW50LlxuICovXG5BdXRoZW50aWNhdGlvblJlcXVlc3RFeHRyYVBhcmFtcz86IHtcbi8qKlxuICogVGhpcyBpbnRlcmZhY2Ugd2FzIHJlZmVyZW5jZWQgYnkgYHVuZGVmaW5lZGAncyBKU09OLVNjaGVtYSBkZWZpbml0aW9uXG4gKiB2aWEgdGhlIGBwYXR0ZXJuUHJvcGVydHlgIFwiW2EtekEtWjAtOV0rXCIuXG4gKi9cbltrOiBzdHJpbmddOiBzdHJpbmdcbn1cbn1cbi8qKlxuICogW0FwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXJdIEluZm9ybWF0aW9uIGZvciBjcmVhdGluZyBhIHJlZGlyZWN0IGFjdGlvbi4gU3BlY2lmeSBvbmx5IHdoZW4gYGBUeXBlYGAgaXMgYGByZWRpcmVjdGBgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZGlyZWN0Q29uZmlnIHtcbi8qKlxuICogVGhlIGFic29sdXRlIHBhdGgsIHN0YXJ0aW5nIHdpdGggdGhlIGxlYWRpbmcgXCIvXCIuIFRoaXMgY29tcG9uZW50IGlzIG5vdCBwZXJjZW50LWVuY29kZWQuIFRoZSBwYXRoIGNhbiBjb250YWluICN7aG9zdH0sICN7cGF0aH0sIGFuZCAje3BvcnR9LlxuICovXG5QYXRoPzogc3RyaW5nXG4vKipcbiAqIFRoZSBxdWVyeSBwYXJhbWV0ZXJzLCBVUkwtZW5jb2RlZCB3aGVuIG5lY2Vzc2FyeSwgYnV0IG5vdCBwZXJjZW50LWVuY29kZWQuIERvIG5vdCBpbmNsdWRlIHRoZSBsZWFkaW5nIFwiP1wiLCBhcyBpdCBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkLiBZb3UgY2FuIHNwZWNpZnkgYW55IG9mIHRoZSByZXNlcnZlZCBrZXl3b3Jkcy5cbiAqL1xuUXVlcnk/OiBzdHJpbmdcbi8qKlxuICogVGhlIHBvcnQuIFlvdSBjYW4gc3BlY2lmeSBhIHZhbHVlIGZyb20gMSB0byA2NTUzNSBvciAje3BvcnR9LlxuICovXG5Qb3J0Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBob3N0bmFtZS4gVGhpcyBjb21wb25lbnQgaXMgbm90IHBlcmNlbnQtZW5jb2RlZC4gVGhlIGhvc3RuYW1lIGNhbiBjb250YWluICN7aG9zdH0uXG4gKi9cbkhvc3Q/OiBzdHJpbmdcbi8qKlxuICogVGhlIHByb3RvY29sLiBZb3UgY2FuIHNwZWNpZnkgSFRUUCwgSFRUUFMsIG9yICN7cHJvdG9jb2x9LiBZb3UgY2FuIHJlZGlyZWN0IEhUVFAgdG8gSFRUUCwgSFRUUCB0byBIVFRQUywgYW5kIEhUVFBTIHRvIEhUVFBTLiBZb3UgY2FuJ3QgcmVkaXJlY3QgSFRUUFMgdG8gSFRUUC5cbiAqL1xuUHJvdG9jb2w/OiBzdHJpbmdcbi8qKlxuICogVGhlIEhUVFAgcmVkaXJlY3QgY29kZS4gVGhlIHJlZGlyZWN0IGlzIGVpdGhlciBwZXJtYW5lbnQgKEhUVFAgMzAxKSBvciB0ZW1wb3JhcnkgKEhUVFAgMzAyKS5cbiAqL1xuU3RhdHVzQ29kZTogc3RyaW5nXG59XG4vKipcbiAqIEluZm9ybWF0aW9uIGZvciBjcmVhdGluZyBhbiBhY3Rpb24gdGhhdCBkaXN0cmlidXRlcyByZXF1ZXN0cyBhbW9uZyBtdWx0aXBsZSB0YXJnZXQgZ3JvdXBzLiBTcGVjaWZ5IG9ubHkgd2hlbiBgYFR5cGVgYCBpcyBgYGZvcndhcmRgYC5cbiAqICBJZiB5b3Ugc3BlY2lmeSBib3RoIGBgRm9yd2FyZENvbmZpZ2BgIGFuZCBgYFRhcmdldEdyb3VwQXJuYGAsIHlvdSBjYW4gc3BlY2lmeSBvbmx5IG9uZSB0YXJnZXQgZ3JvdXAgdXNpbmcgYGBGb3J3YXJkQ29uZmlnYGAgYW5kIGl0IG11c3QgYmUgdGhlIHNhbWUgdGFyZ2V0IGdyb3VwIHNwZWNpZmllZCBpbiBgYFRhcmdldEdyb3VwQXJuYGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRm9yd2FyZENvbmZpZyB7XG5UYXJnZXRHcm91cFN0aWNraW5lc3NDb25maWc/OiBUYXJnZXRHcm91cFN0aWNraW5lc3NDb25maWdcbi8qKlxuICogSW5mb3JtYXRpb24gYWJvdXQgaG93IHRyYWZmaWMgd2lsbCBiZSBkaXN0cmlidXRlZCBiZXR3ZWVuIG11bHRpcGxlIHRhcmdldCBncm91cHMgaW4gYSBmb3J3YXJkIHJ1bGUuXG4gKi9cblRhcmdldEdyb3Vwcz86IFRhcmdldEdyb3VwVHVwbGVbXVxufVxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgdGFyZ2V0IGdyb3VwIHN0aWNraW5lc3MgZm9yIGEgcnVsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXJnZXRHcm91cFN0aWNraW5lc3NDb25maWcge1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0YXJnZXQgZ3JvdXAgc3RpY2tpbmVzcyBpcyBlbmFibGVkLlxuICovXG5FbmFibGVkPzogYm9vbGVhblxuLyoqXG4gKiBbQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlcnNdIFRoZSB0aW1lIHBlcmlvZCwgaW4gc2Vjb25kcywgZHVyaW5nIHdoaWNoIHJlcXVlc3RzIGZyb20gYSBjbGllbnQgc2hvdWxkIGJlIHJvdXRlZCB0byB0aGUgc2FtZSB0YXJnZXQgZ3JvdXAuIFRoZSByYW5nZSBpcyAxLTYwNDgwMCBzZWNvbmRzICg3IGRheXMpLiBZb3UgbXVzdCBzcGVjaWZ5IHRoaXMgdmFsdWUgd2hlbiBlbmFibGluZyB0YXJnZXQgZ3JvdXAgc3RpY2tpbmVzcy5cbiAqL1xuRHVyYXRpb25TZWNvbmRzPzogbnVtYmVyXG59XG4vKipcbiAqIEluZm9ybWF0aW9uIGFib3V0IGhvdyB0cmFmZmljIHdpbGwgYmUgZGlzdHJpYnV0ZWQgYmV0d2VlbiBtdWx0aXBsZSB0YXJnZXQgZ3JvdXBzIGluIGEgZm9yd2FyZCBydWxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldEdyb3VwVHVwbGUge1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIHRhcmdldCBncm91cC5cbiAqL1xuVGFyZ2V0R3JvdXBBcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIHdlaWdodC4gVGhlIHJhbmdlIGlzIDAgdG8gOTk5LlxuICovXG5XZWlnaHQ/OiBudW1iZXJcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUmV3cml0ZUNvbmZpZ09iamVjdCB7XG5SZXdyaXRlczogUmV3cml0ZUNvbmZpZ0xpc3Rcbn1cbi8qKlxuICogSW5mb3JtYXRpb24gYWJvdXQgYSByZXdyaXRlIHRyYW5zZm9ybS4gVGhpcyB0cmFuc2Zvcm0gbWF0Y2hlcyBhIHBhdHRlcm4gYW5kIHJlcGxhY2VzIGl0IHdpdGggdGhlIHNwZWNpZmllZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmV3cml0ZUNvbmZpZyB7XG4vKipcbiAqIFRoZSByZXBsYWNlbWVudCBzdHJpbmcgdG8gdXNlIHdoZW4gcmV3cml0aW5nIHRoZSBtYXRjaGVkIGlucHV0LiBUaGUgbWF4aW11bSBsZW5ndGggb2YgdGhlIHN0cmluZyBpcyAxLDAyNCBjaGFyYWN0ZXJzLiBZb3UgY2FuIHNwZWNpZnkgY2FwdHVyZSBncm91cHMgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAoZm9yIGV4YW1wbGUsICQxIGFuZCAkMikuXG4gKi9cblJlcGxhY2U6IHN0cmluZ1xuLyoqXG4gKiBUaGUgcmVndWxhciBleHByZXNzaW9uIHRvIG1hdGNoIGluIHRoZSBpbnB1dCBzdHJpbmcuIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGlzIDEsMDI0IGNoYXJhY3RlcnMuXG4gKi9cblJlZ2V4OiBzdHJpbmdcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUmV3cml0ZUNvbmZpZ09iamVjdDEge1xuUmV3cml0ZXM6IFJld3JpdGVDb25maWdMaXN0XG59XG4vKipcbiAqIFNwZWNpZmllcyBhIGNvbmRpdGlvbiBmb3IgYSBsaXN0ZW5lciBydWxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bGVDb25kaXRpb24ge1xuLyoqXG4gKiBUaGUgZmllbGQgaW4gdGhlIEhUVFAgcmVxdWVzdC4gVGhlIGZvbGxvd2luZyBhcmUgdGhlIHBvc3NpYmxlIHZhbHVlczpcbiAqICAgKyAgIGBgaHR0cC1oZWFkZXJgYCBcbiAqICAgKyAgIGBgaHR0cC1yZXF1ZXN0LW1ldGhvZGBgIFxuICogICArICAgYGBob3N0LWhlYWRlcmBgIFxuICogICArICAgYGBwYXRoLXBhdHRlcm5gYCBcbiAqICAgKyAgIGBgcXVlcnktc3RyaW5nYGAgXG4gKiAgICsgICBgYHNvdXJjZS1pcGBgXG4gKi9cbkZpZWxkPzogc3RyaW5nXG5IdHRwSGVhZGVyQ29uZmlnPzogSHR0cEhlYWRlckNvbmZpZ1xuVmFsdWVzPzogTGlzdE9mU3RyaW5nczJcblF1ZXJ5U3RyaW5nQ29uZmlnPzogUXVlcnlTdHJpbmdDb25maWdcblJlZ2V4VmFsdWVzPzogTGlzdE9mU3RyaW5nczNcbkhvc3RIZWFkZXJDb25maWc/OiBIb3N0SGVhZGVyQ29uZmlnXG5IdHRwUmVxdWVzdE1ldGhvZENvbmZpZz86IEh0dHBSZXF1ZXN0TWV0aG9kQ29uZmlnXG5QYXRoUGF0dGVybkNvbmZpZz86IFBhdGhQYXR0ZXJuQ29uZmlnXG5Tb3VyY2VJcENvbmZpZz86IFNvdXJjZUlwQ29uZmlnXG59XG4vKipcbiAqIEluZm9ybWF0aW9uIGZvciBhbiBIVFRQIGhlYWRlciBjb25kaXRpb24uIFNwZWNpZnkgb25seSB3aGVuIGBgRmllbGRgYCBpcyBgYGh0dHAtaGVhZGVyYGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cEhlYWRlckNvbmZpZyB7XG5WYWx1ZXM/OiBMaXN0T2ZTdHJpbmdzXG5SZWdleFZhbHVlcz86IExpc3RPZlN0cmluZ3MxXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBIVFRQIGhlYWRlciBmaWVsZC4gVGhlIG1heGltdW0gc2l6ZSBpcyA0MCBjaGFyYWN0ZXJzLiBUaGUgaGVhZGVyIG5hbWUgaXMgY2FzZSBpbnNlbnNpdGl2ZS4gVGhlIGFsbG93ZWQgY2hhcmFjdGVycyBhcmUgc3BlY2lmaWVkIGJ5IFJGQyA3MjMwLiBXaWxkY2FyZHMgYXJlIG5vdCBzdXBwb3J0ZWQuXG4gKi9cbkh0dHBIZWFkZXJOYW1lPzogc3RyaW5nXG59XG4vKipcbiAqIEluZm9ybWF0aW9uIGZvciBhIHF1ZXJ5IHN0cmluZyBjb25kaXRpb24uIFNwZWNpZnkgb25seSB3aGVuIGBgRmllbGRgYCBpcyBgYHF1ZXJ5LXN0cmluZ2BgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5U3RyaW5nQ29uZmlnIHtcbi8qKlxuICogVGhlIGtleS92YWx1ZSBwYWlycyBvciB2YWx1ZXMgdG8gZmluZCBpbiB0aGUgcXVlcnkgc3RyaW5nLiBUaGUgbWF4aW11bSBsZW5ndGggb2YgZWFjaCBzdHJpbmcgaXMgMTI4IGNoYXJhY3RlcnMuIFRoZSBjb21wYXJpc29uIGlzIGNhc2UgaW5zZW5zaXRpdmUuIFRoZSBmb2xsb3dpbmcgd2lsZGNhcmQgY2hhcmFjdGVycyBhcmUgc3VwcG9ydGVkOiAqIChtYXRjaGVzIDAgb3IgbW9yZSBjaGFyYWN0ZXJzKSBhbmQgPyAobWF0Y2hlcyBleGFjdGx5IDEgY2hhcmFjdGVyKS4gVG8gc2VhcmNoIGZvciBhIGxpdGVyYWwgJyonIG9yICc/JyBjaGFyYWN0ZXIgaW4gYSBxdWVyeSBzdHJpbmcsIHlvdSBtdXN0IGVzY2FwZSB0aGVzZSBjaGFyYWN0ZXJzIGluIGBgVmFsdWVzYGAgdXNpbmcgYSAnXFwnIGNoYXJhY3Rlci5cbiAqICBJZiB5b3Ugc3BlY2lmeSBtdWx0aXBsZSBrZXkvdmFsdWUgcGFpcnMgb3IgdmFsdWVzLCB0aGUgY29uZGl0aW9uIGlzIHNhdGlzZmllZCBpZiBvbmUgb2YgdGhlbSBpcyBmb3VuZCBpbiB0aGUgcXVlcnkgc3RyaW5nLlxuICovXG5WYWx1ZXM/OiBRdWVyeVN0cmluZ0tleVZhbHVlW11cbn1cbi8qKlxuICogSW5mb3JtYXRpb24gYWJvdXQgYSBrZXkvdmFsdWUgcGFpci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdWVyeVN0cmluZ0tleVZhbHVlIHtcbi8qKlxuICogVGhlIHZhbHVlLlxuICovXG5WYWx1ZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUga2V5LiBZb3UgY2FuIG9taXQgdGhlIGtleS5cbiAqL1xuS2V5Pzogc3RyaW5nXG59XG4vKipcbiAqIEluZm9ybWF0aW9uIGZvciBhIGhvc3QgaGVhZGVyIGNvbmRpdGlvbi4gU3BlY2lmeSBvbmx5IHdoZW4gYGBGaWVsZGBgIGlzIGBgaG9zdC1oZWFkZXJgYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIb3N0SGVhZGVyQ29uZmlnIHtcblZhbHVlcz86IExpc3RPZlN0cmluZ3M0XG5SZWdleFZhbHVlcz86IExpc3RPZlN0cmluZ3M1XG59XG4vKipcbiAqIEluZm9ybWF0aW9uIGZvciBhbiBIVFRQIG1ldGhvZCBjb25kaXRpb24uIFNwZWNpZnkgb25seSB3aGVuIGBgRmllbGRgYCBpcyBgYGh0dHAtcmVxdWVzdC1tZXRob2RgYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIdHRwUmVxdWVzdE1ldGhvZENvbmZpZyB7XG5WYWx1ZXM/OiBMaXN0T2ZTdHJpbmdzNlxufVxuLyoqXG4gKiBJbmZvcm1hdGlvbiBmb3IgYSBwYXRoIHBhdHRlcm4gY29uZGl0aW9uLiBTcGVjaWZ5IG9ubHkgd2hlbiBgYEZpZWxkYGAgaXMgYGBwYXRoLXBhdHRlcm5gYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXRoUGF0dGVybkNvbmZpZyB7XG5WYWx1ZXM/OiBMaXN0T2ZTdHJpbmdzN1xuUmVnZXhWYWx1ZXM/OiBMaXN0T2ZTdHJpbmdzOFxufVxuLyoqXG4gKiBJbmZvcm1hdGlvbiBmb3IgYSBzb3VyY2UgSVAgY29uZGl0aW9uLiBTcGVjaWZ5IG9ubHkgd2hlbiBgYEZpZWxkYGAgaXMgYGBzb3VyY2UtaXBgYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTb3VyY2VJcENvbmZpZyB7XG4vKipcbiAqIFRoZSBzb3VyY2UgSVAgYWRkcmVzc2VzLCBpbiBDSURSIGZvcm1hdC4gWW91IGNhbiB1c2UgYm90aCBJUHY0IGFuZCBJUHY2IGFkZHJlc3Nlcy4gV2lsZGNhcmRzIGFyZSBub3Qgc3VwcG9ydGVkLlxuICogIElmIHlvdSBzcGVjaWZ5IG11bHRpcGxlIGFkZHJlc3NlcywgdGhlIGNvbmRpdGlvbiBpcyBzYXRpc2ZpZWQgaWYgdGhlIHNvdXJjZSBJUCBhZGRyZXNzIG9mIHRoZSByZXF1ZXN0IG1hdGNoZXMgb25lIG9mIHRoZSBDSURSIGJsb2Nrcy4gVGhpcyBjb25kaXRpb24gaXMgbm90IHNhdGlzZmllZCBieSB0aGUgYWRkcmVzc2VzIGluIHRoZSBYLUZvcndhcmRlZC1Gb3IgaGVhZGVyLlxuICovXG5WYWx1ZXM/OiBzdHJpbmdbXVxufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjItbGlzdGVuZXJydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjItbGlzdGVuZXJydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFtIVFRQUyBsaXN0ZW5lcnNdIEluZm9ybWF0aW9uIGFib3V0IGFuIGlkZW50aXR5IHByb3ZpZGVyIHRoYXQgaXMgY29tcGxpYW50IHdpdGggT3BlbklEIENvbm5lY3QgKE9JREMpLiBTcGVjaWZ5IG9ubHkgd2hlbiBgYFR5cGVgYCBpcyBgYGF1dGhlbnRpY2F0ZS1vaWRjYGAuXG4gKi9cbmV4cG9ydCB0eXBlIEF1dGhlbnRpY2F0ZU9pZGNDb25maWcgPSAoe1xuW2s6IHN0cmluZ106IHVua25vd25cbn0gJiB7XG4vKipcbiAqIFRoZSBiZWhhdmlvciBpZiB0aGUgdXNlciBpcyBub3QgYXV0aGVudGljYXRlZC4gVGhlIGZvbGxvd2luZyBhcmUgcG9zc2libGUgdmFsdWVzOlxuICogICArICBkZW55YGBgYCAtIFJldHVybiBhbiBIVFRQIDQwMSBVbmF1dGhvcml6ZWQgZXJyb3IuXG4gKiAgICsgIGFsbG93YGBgYCAtIEFsbG93IHRoZSByZXF1ZXN0IHRvIGJlIGZvcndhcmRlZCB0byB0aGUgdGFyZ2V0LlxuICogICArICBhdXRoZW50aWNhdGVgYGBgIC0gUmVkaXJlY3QgdGhlIHJlcXVlc3QgdG8gdGhlIElkUCBhdXRob3JpemF0aW9uIGVuZHBvaW50LiBUaGlzIGlzIHRoZSBkZWZhdWx0IHZhbHVlLlxuICovXG5PblVuYXV0aGVudGljYXRlZFJlcXVlc3Q/OiBzdHJpbmdcbi8qKlxuICogVGhlIHRva2VuIGVuZHBvaW50IG9mIHRoZSBJZFAuIFRoaXMgbXVzdCBiZSBhIGZ1bGwgVVJMLCBpbmNsdWRpbmcgdGhlIEhUVFBTIHByb3RvY29sLCB0aGUgZG9tYWluLCBhbmQgdGhlIHBhdGguXG4gKi9cblRva2VuRW5kcG9pbnQ6IHN0cmluZ1xuLyoqXG4gKiBUaGUgbWF4aW11bSBkdXJhdGlvbiBvZiB0aGUgYXV0aGVudGljYXRpb24gc2Vzc2lvbiwgaW4gc2Vjb25kcy4gVGhlIGRlZmF1bHQgaXMgNjA0ODAwIHNlY29uZHMgKDcgZGF5cykuXG4gKi9cblNlc3Npb25UaW1lb3V0PzogbnVtYmVyXG4vKipcbiAqIFRoZSBzZXQgb2YgdXNlciBjbGFpbXMgdG8gYmUgcmVxdWVzdGVkIGZyb20gdGhlIElkUC4gVGhlIGRlZmF1bHQgaXMgYGBvcGVuaWRgYC5cbiAqICBUbyB2ZXJpZnkgd2hpY2ggc2NvcGUgdmFsdWVzIHlvdXIgSWRQIHN1cHBvcnRzIGFuZCBob3cgdG8gc2VwYXJhdGUgbXVsdGlwbGUgdmFsdWVzLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHlvdXIgSWRQLlxuICovXG5TY29wZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgT0lEQyBpc3N1ZXIgaWRlbnRpZmllciBvZiB0aGUgSWRQLiBUaGlzIG11c3QgYmUgYSBmdWxsIFVSTCwgaW5jbHVkaW5nIHRoZSBIVFRQUyBwcm90b2NvbCwgdGhlIGRvbWFpbiwgYW5kIHRoZSBwYXRoLlxuICovXG5Jc3N1ZXI6IHN0cmluZ1xuLyoqXG4gKiBUaGUgT0F1dGggMi4wIGNsaWVudCBzZWNyZXQuIFRoaXMgcGFyYW1ldGVyIGlzIHJlcXVpcmVkIGlmIHlvdSBhcmUgY3JlYXRpbmcgYSBydWxlLiBJZiB5b3UgYXJlIG1vZGlmeWluZyBhIHJ1bGUsIHlvdSBjYW4gb21pdCB0aGlzIHBhcmFtZXRlciBpZiB5b3Ugc2V0IGBgVXNlRXhpc3RpbmdDbGllbnRTZWNyZXRgYCB0byB0cnVlLlxuICovXG5DbGllbnRTZWNyZXQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIHVzZXIgaW5mbyBlbmRwb2ludCBvZiB0aGUgSWRQLiBUaGlzIG11c3QgYmUgYSBmdWxsIFVSTCwgaW5jbHVkaW5nIHRoZSBIVFRQUyBwcm90b2NvbCwgdGhlIGRvbWFpbiwgYW5kIHRoZSBwYXRoLlxuICovXG5Vc2VySW5mb0VuZHBvaW50OiBzdHJpbmdcbi8qKlxuICogVGhlIE9BdXRoIDIuMCBjbGllbnQgaWRlbnRpZmllci5cbiAqL1xuQ2xpZW50SWQ6IHN0cmluZ1xuLyoqXG4gKiBUaGUgYXV0aG9yaXphdGlvbiBlbmRwb2ludCBvZiB0aGUgSWRQLiBUaGlzIG11c3QgYmUgYSBmdWxsIFVSTCwgaW5jbHVkaW5nIHRoZSBIVFRQUyBwcm90b2NvbCwgdGhlIGRvbWFpbiwgYW5kIHRoZSBwYXRoLlxuICovXG5BdXRob3JpemF0aW9uRW5kcG9pbnQ6IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgY29va2llIHVzZWQgdG8gbWFpbnRhaW4gc2Vzc2lvbiBpbmZvcm1hdGlvbi4gVGhlIGRlZmF1bHQgaXMgQVdTRUxCQXV0aFNlc3Npb25Db29raWUuXG4gKi9cblNlc3Npb25Db29raWVOYW1lPzogc3RyaW5nXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRvIHVzZSB0aGUgZXhpc3RpbmcgY2xpZW50IHNlY3JldCB3aGVuIG1vZGlmeWluZyBhIHJ1bGUuIElmIHlvdSBhcmUgY3JlYXRpbmcgYSBydWxlLCB5b3UgY2FuIG9taXQgdGhpcyBwYXJhbWV0ZXIgb3Igc2V0IGl0IHRvIGZhbHNlLlxuICovXG5Vc2VFeGlzdGluZ0NsaWVudFNlY3JldD86IGJvb2xlYW5cbi8qKlxuICogVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgKHVwIHRvIDEwKSB0byBpbmNsdWRlIGluIHRoZSByZWRpcmVjdCByZXF1ZXN0IHRvIHRoZSBhdXRob3JpemF0aW9uIGVuZHBvaW50LlxuICovXG5BdXRoZW50aWNhdGlvblJlcXVlc3RFeHRyYVBhcmFtcz86IHtcbi8qKlxuICogVGhpcyBpbnRlcmZhY2Ugd2FzIHJlZmVyZW5jZWQgYnkgYHVuZGVmaW5lZGAncyBKU09OLVNjaGVtYSBkZWZpbml0aW9uXG4gKiB2aWEgdGhlIGBwYXR0ZXJuUHJvcGVydHlgIFwiW2EtekEtWjAtOV0rXCIuXG4gKi9cbltrOiBzdHJpbmddOiBzdHJpbmdcbn1cbn0pXG4vKipcbiAqIFRoZSByZWd1bGFyIGV4cHJlc3Npb25zIHRvIG1hdGNoIGFnYWluc3QgdGhlIGNvbmRpdGlvbiBmaWVsZC4gVGhlIG1heGltdW0gbGVuZ3RoIG9mIGVhY2ggc3RyaW5nIGlzIDEyOCBjaGFyYWN0ZXJzLiBTcGVjaWZ5IG9ubHkgd2hlbiBgYEZpZWxkYGAgaXMgYGBodHRwLWhlYWRlcmBgLCBgYGhvc3QtaGVhZGVyYGAsIG9yIGBgcGF0aC1wYXR0ZXJuYGAuXG4gKi9cbmV4cG9ydCB0eXBlIExpc3RPZlN0cmluZ3MgPSBzdHJpbmdbXVxuLyoqXG4gKiBUaGUgY29uZGl0aW9uIHZhbHVlLiBTcGVjaWZ5IG9ubHkgd2hlbiBgYEZpZWxkYGAgaXMgYGBob3N0LWhlYWRlcmBgIG9yIGBgcGF0aC1wYXR0ZXJuYGAuIEFsdGVybmF0aXZlbHksIHRvIHNwZWNpZnkgbXVsdGlwbGUgaG9zdCBuYW1lcyBvciBtdWx0aXBsZSBwYXRoIHBhdHRlcm5zLCB1c2UgYGBIb3N0SGVhZGVyQ29uZmlnYGAgb3IgYGBQYXRoUGF0dGVybkNvbmZpZ2BgLlxuICogIElmIGBgRmllbGRgYCBpcyBgYGhvc3QtaGVhZGVyYGAgYW5kIHlvdSdyZSBub3QgdXNpbmcgYGBIb3N0SGVhZGVyQ29uZmlnYGAsIHlvdSBjYW4gc3BlY2lmeSBhIHNpbmdsZSBob3N0IG5hbWUgKGZvciBleGFtcGxlLCBteS5leGFtcGxlLmNvbSkuIEEgaG9zdCBuYW1lIGlzIGNhc2UgaW5zZW5zaXRpdmUsIGNhbiBiZSB1cCB0byAxMjggY2hhcmFjdGVycyBpbiBsZW5ndGgsIGFuZCBjYW4gY29udGFpbiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzLlxuICogICArICBBLVosIGEteiwgMC05XG4gKiAgICsgIC0gLlxuICogICArICAqIChtYXRjaGVzIDAgb3IgbW9yZSBjaGFyYWN0ZXJzKVxuICogICArICA/IChtYXRjaGVzIGV4YWN0bHkgMSBjaGFyYWN0ZXIpXG4gKiAgIFxuICogIElmIGBgRmllbGRgYCBpcyBgYHBhdGgtcGF0dGVybmBgIGFuZCB5b3UncmUgbm90IHVzaW5nIGBgUGF0aFBhdHRlcm5Db25maWdgYCwgeW91IGNhbiBzcGVjaWZ5IGEgc2luZ2xlIHBhdGggcGF0dGVybiAoZm9yIGV4YW1wbGUsIC9pbWcvKikuIEEgcGF0aCBwYXR0ZXJuIGlzIGNhc2Utc2Vuc2l0aXZlLCBjYW4gYmUgdXAgdG8gMTI4IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLCBhbmQgY2FuIGNvbnRhaW4gYW55IG9mIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVycy5cbiAqICAgKyAgQS1aLCBhLXosIDAtOVxuICogICArICBfIC0gLiAkIC8gfiBcIiAnIEAgOiArXG4gKiAgICsgICYgKHVzaW5nICZhbXA7KVxuICogICArICAqIChtYXRjaGVzIDAgb3IgbW9yZSBjaGFyYWN0ZXJzKVxuICogICArICA/IChtYXRjaGVzIGV4YWN0bHkgMSBjaGFyYWN0ZXIpXG4gKi9cbmV4cG9ydCB0eXBlIExpc3RPZlN0cmluZ3MxID0gc3RyaW5nW11cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIHJlcXVlc3QgbWV0aG9kLiBUaGUgbWF4aW11bSBsZW5ndGggaXMgNDAgY2hhcmFjdGVycy4gVGhlIGFsbG93ZWQgY2hhcmFjdGVycyBhcmUgQS1aLCBoeXBoZW4gKC0pLCBhbmQgdW5kZXJzY29yZSAoXykuIFRoZSBjb21wYXJpc29uIGlzIGNhc2Ugc2Vuc2l0aXZlLiBXaWxkY2FyZHMgYXJlIG5vdCBzdXBwb3J0ZWQ7IHRoZXJlZm9yZSwgdGhlIG1ldGhvZCBuYW1lIG11c3QgYmUgYW4gZXhhY3QgbWF0Y2guXG4gKiAgSWYgeW91IHNwZWNpZnkgbXVsdGlwbGUgc3RyaW5ncywgdGhlIGNvbmRpdGlvbiBpcyBzYXRpc2ZpZWQgaWYgb25lIG9mIHRoZSBzdHJpbmdzIG1hdGNoZXMgdGhlIEhUVFAgcmVxdWVzdCBtZXRob2QuIFdlIHJlY29tbWVuZCB0aGF0IHlvdSByb3V0ZSBHRVQgYW5kIEhFQUQgcmVxdWVzdHMgaW4gdGhlIHNhbWUgd2F5LCBiZWNhdXNlIHRoZSByZXNwb25zZSB0byBhIEhFQUQgcmVxdWVzdCBtYXkgYmUgY2FjaGVkLlxuICovXG5leHBvcnQgdHlwZSBMaXN0T2ZTdHJpbmdzMiA9IHN0cmluZ1tdXG5leHBvcnQgdHlwZSBMaXN0T2ZTdHJpbmdzMyA9IHN0cmluZ1tdXG4vKipcbiAqIFRoZSBwYXRoIHBhdHRlcm5zIHRvIGNvbXBhcmUgYWdhaW5zdCB0aGUgcmVxdWVzdCBVUkwuIFRoZSBtYXhpbXVtIHNpemUgb2YgZWFjaCBzdHJpbmcgaXMgMTI4IGNoYXJhY3RlcnMuIFRoZSBjb21wYXJpc29uIGlzIGNhc2Ugc2Vuc2l0aXZlLiBUaGUgZm9sbG93aW5nIHdpbGRjYXJkIGNoYXJhY3RlcnMgYXJlIHN1cHBvcnRlZDogKiAobWF0Y2hlcyAwIG9yIG1vcmUgY2hhcmFjdGVycykgYW5kID8gKG1hdGNoZXMgZXhhY3RseSAxIGNoYXJhY3RlcikuXG4gKiAgSWYgeW91IHNwZWNpZnkgbXVsdGlwbGUgc3RyaW5ncywgdGhlIGNvbmRpdGlvbiBpcyBzYXRpc2ZpZWQgaWYgb25lIG9mIHRoZW0gbWF0Y2hlcyB0aGUgcmVxdWVzdCBVUkwuIFRoZSBwYXRoIHBhdHRlcm4gaXMgY29tcGFyZWQgb25seSB0byB0aGUgcGF0aCBvZiB0aGUgVVJMLCBub3QgdG8gaXRzIHF1ZXJ5IHN0cmluZy5cbiAqL1xuZXhwb3J0IHR5cGUgTGlzdE9mU3RyaW5nczQgPSBzdHJpbmdbXVxuZXhwb3J0IHR5cGUgTGlzdE9mU3RyaW5nczUgPSBzdHJpbmdbXVxuLyoqXG4gKiBUaGUgc3RyaW5ncyB0byBjb21wYXJlIGFnYWluc3QgdGhlIHZhbHVlIG9mIHRoZSBIVFRQIGhlYWRlci4gVGhlIG1heGltdW0gbGVuZ3RoIG9mIGVhY2ggc3RyaW5nIGlzIDEyOCBjaGFyYWN0ZXJzLiBUaGUgY29tcGFyaXNvbiBzdHJpbmdzIGFyZSBjYXNlIGluc2Vuc2l0aXZlLiBUaGUgZm9sbG93aW5nIHdpbGRjYXJkIGNoYXJhY3RlcnMgYXJlIHN1cHBvcnRlZDogKiAobWF0Y2hlcyAwIG9yIG1vcmUgY2hhcmFjdGVycykgYW5kID8gKG1hdGNoZXMgZXhhY3RseSAxIGNoYXJhY3RlcikuXG4gKiAgSWYgdGhlIHNhbWUgaGVhZGVyIGFwcGVhcnMgbXVsdGlwbGUgdGltZXMgaW4gdGhlIHJlcXVlc3QsIHdlIHNlYXJjaCB0aGVtIGluIG9yZGVyIHVudGlsIGEgbWF0Y2ggaXMgZm91bmQuXG4gKiAgSWYgeW91IHNwZWNpZnkgbXVsdGlwbGUgc3RyaW5ncywgdGhlIGNvbmRpdGlvbiBpcyBzYXRpc2ZpZWQgaWYgb25lIG9mIHRoZSBzdHJpbmdzIG1hdGNoZXMgdGhlIHZhbHVlIG9mIHRoZSBIVFRQIGhlYWRlci4gVG8gcmVxdWlyZSB0aGF0IGFsbCBvZiB0aGUgc3RyaW5ncyBhcmUgYSBtYXRjaCwgY3JlYXRlIG9uZSBjb25kaXRpb24gcGVyIHN0cmluZy5cbiAqL1xuZXhwb3J0IHR5cGUgTGlzdE9mU3RyaW5nczYgPSBzdHJpbmdbXVxuZXhwb3J0IHR5cGUgTGlzdE9mU3RyaW5nczcgPSBzdHJpbmdbXVxuLyoqXG4gKiBUaGUgaG9zdCBuYW1lcy4gVGhlIG1heGltdW0gbGVuZ3RoIG9mIGVhY2ggc3RyaW5nIGlzIDEyOCBjaGFyYWN0ZXJzLiBUaGUgY29tcGFyaXNvbiBpcyBjYXNlIGluc2Vuc2l0aXZlLiBUaGUgZm9sbG93aW5nIHdpbGRjYXJkIGNoYXJhY3RlcnMgYXJlIHN1cHBvcnRlZDogKiAobWF0Y2hlcyAwIG9yIG1vcmUgY2hhcmFjdGVycykgYW5kID8gKG1hdGNoZXMgZXhhY3RseSAxIGNoYXJhY3RlcikuIFlvdSBtdXN0IGluY2x1ZGUgYXQgbGVhc3Qgb25lIFwiLlwiIGNoYXJhY3Rlci4gWW91IGNhbiBpbmNsdWRlIG9ubHkgYWxwaGFiZXRpY2FsIGNoYXJhY3RlcnMgYWZ0ZXIgdGhlIGZpbmFsIFwiLlwiIGNoYXJhY3Rlci5cbiAqICBJZiB5b3Ugc3BlY2lmeSBtdWx0aXBsZSBzdHJpbmdzLCB0aGUgY29uZGl0aW9uIGlzIHNhdGlzZmllZCBpZiBvbmUgb2YgdGhlIHN0cmluZ3MgbWF0Y2hlcyB0aGUgaG9zdCBuYW1lLlxuICovXG5leHBvcnQgdHlwZSBMaXN0T2ZTdHJpbmdzOCA9IHN0cmluZ1tdXG5leHBvcnQgdHlwZSBUcmFuc2Zvcm0gPSAoe1xuVHlwZTogc3RyaW5nXG5Ib3N0SGVhZGVyUmV3cml0ZUNvbmZpZz86IFJld3JpdGVDb25maWdPYmplY3RcblVybFJld3JpdGVDb25maWc/OiBSZXdyaXRlQ29uZmlnT2JqZWN0MVxufSAmIFRyYW5zZm9ybTEpXG5leHBvcnQgdHlwZSBSZXdyaXRlQ29uZmlnTGlzdCA9IFJld3JpdGVDb25maWdbXVxuZXhwb3J0IHR5cGUgVHJhbnNmb3JtMSA9IHtcbltrOiBzdHJpbmddOiB1bmtub3duXG59XG5cbi8qKlxuICogU3BlY2lmaWVzIGEgbGlzdGVuZXIgcnVsZS4gVGhlIGxpc3RlbmVyIG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIGFuIEFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXIuIEVhY2ggcnVsZSBjb25zaXN0cyBvZiBhIHByaW9yaXR5LCBvbmUgb3IgbW9yZSBhY3Rpb25zLCBhbmQgb25lIG9yIG1vcmUgY29uZGl0aW9ucy5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtRdW90YXMgZm9yIHlvdXIgQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlcnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lbGFzdGljbG9hZGJhbGFuY2luZy9sYXRlc3QvYXBwbGljYXRpb24vbG9hZC1iYWxhbmNlci1saW1pdHMuaHRtbCkgaW4gdGhlICpVc2VyIEd1aWRlIGZvciBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VycyouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19FTEFTVElDTE9BREJBTEFOQ0lOR1YyX0xJU1RFTkVSUlVMRSB7XG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgbGlzdGVuZXIuXG4gKi9cbkxpc3RlbmVyQXJuPzogc3RyaW5nXG5SdWxlQXJuPzogc3RyaW5nXG4vKipcbiAqIFRoZSBhY3Rpb25zLlxuICogIFRoZSBydWxlIG11c3QgaW5jbHVkZSBleGFjdGx5IG9uZSBvZiB0aGUgZm9sbG93aW5nIHR5cGVzIG9mIGFjdGlvbnM6IGBgZm9yd2FyZGBgLCBgYGZpeGVkLXJlc3BvbnNlYGAsIG9yIGBgcmVkaXJlY3RgYCwgYW5kIGl0IG11c3QgYmUgdGhlIGxhc3QgYWN0aW9uIHRvIGJlIHBlcmZvcm1lZC4gSWYgdGhlIHJ1bGUgaXMgZm9yIGFuIEhUVFBTIGxpc3RlbmVyLCBpdCBjYW4gYWxzbyBvcHRpb25hbGx5IGluY2x1ZGUgYW4gYXV0aGVudGljYXRpb24gYWN0aW9uLlxuICovXG5BY3Rpb25zOiBBY3Rpb25bXVxuLyoqXG4gKiBUaGUgcnVsZSBwcmlvcml0eS4gQSBsaXN0ZW5lciBjYW4ndCBoYXZlIG11bHRpcGxlIHJ1bGVzIHdpdGggdGhlIHNhbWUgcHJpb3JpdHkuXG4gKiAgSWYgeW91IHRyeSB0byByZW9yZGVyIHJ1bGVzIGJ5IHVwZGF0aW5nIHRoZWlyIHByaW9yaXRpZXMsIGRvIG5vdCBzcGVjaWZ5IGEgbmV3IHByaW9yaXR5IGlmIGFuIGV4aXN0aW5nIHJ1bGUgYWxyZWFkeSB1c2VzIHRoaXMgcHJpb3JpdHksIGFzIHRoaXMgY2FuIGNhdXNlIGFuIGVycm9yLiBJZiB5b3UgbmVlZCB0byByZXVzZSBhIHByaW9yaXR5IHdpdGggYSBkaWZmZXJlbnQgcnVsZSwgeW91IG11c3QgcmVtb3ZlIGl0IGFzIGEgcHJpb3JpdHkgZmlyc3QsIGFuZCB0aGVuIHNwZWNpZnkgaXQgaW4gYSBzdWJzZXF1ZW50IHVwZGF0ZS5cbiAqL1xuUHJpb3JpdHk6IG51bWJlclxuLyoqXG4gKiBUaGUgY29uZGl0aW9ucy5cbiAqICBUaGUgcnVsZSBjYW4gb3B0aW9uYWxseSBpbmNsdWRlIHVwIHRvIG9uZSBvZiBlYWNoIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczogYGBodHRwLXJlcXVlc3QtbWV0aG9kYGAsIGBgaG9zdC1oZWFkZXJgYCwgYGBwYXRoLXBhdHRlcm5gYCwgYW5kIGBgc291cmNlLWlwYGAuIEEgcnVsZSBjYW4gYWxzbyBvcHRpb25hbGx5IGluY2x1ZGUgb25lIG9yIG1vcmUgb2YgZWFjaCBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6IGBgaHR0cC1oZWFkZXJgYCBhbmQgYGBxdWVyeS1zdHJpbmdgYC5cbiAqL1xuQ29uZGl0aW9uczogUnVsZUNvbmRpdGlvbltdXG5UcmFuc2Zvcm1zPzogVHJhbnNmb3JtW11cbklzRGVmYXVsdD86IGJvb2xlYW5cbn1cbi8qKlxuICogU3BlY2lmaWVzIGFuIGFjdGlvbiBmb3IgYSBsaXN0ZW5lciBydWxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbiB7XG4vKipcbiAqIFRoZSBvcmRlciBmb3IgdGhlIGFjdGlvbi4gVGhpcyB2YWx1ZSBpcyByZXF1aXJlZCBmb3IgcnVsZXMgd2l0aCBtdWx0aXBsZSBhY3Rpb25zLiBUaGUgYWN0aW9uIHdpdGggdGhlIGxvd2VzdCB2YWx1ZSBmb3Igb3JkZXIgaXMgcGVyZm9ybWVkIGZpcnN0LlxuICovXG5PcmRlcj86IG51bWJlclxuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIHRhcmdldCBncm91cC4gU3BlY2lmeSBvbmx5IHdoZW4gYGBUeXBlYGAgaXMgYGBmb3J3YXJkYGAgYW5kIHlvdSB3YW50IHRvIHJvdXRlIHRvIGEgc2luZ2xlIHRhcmdldCBncm91cC4gVG8gcm91dGUgdG8gbXVsdGlwbGUgdGFyZ2V0IGdyb3VwcywgeW91IG11c3QgdXNlIGBgRm9yd2FyZENvbmZpZ2BgIGluc3RlYWQuXG4gKi9cblRhcmdldEdyb3VwQXJuPzogc3RyaW5nXG5GaXhlZFJlc3BvbnNlQ29uZmlnPzogRml4ZWRSZXNwb25zZUNvbmZpZ1xuQXV0aGVudGljYXRlQ29nbml0b0NvbmZpZz86IEF1dGhlbnRpY2F0ZUNvZ25pdG9Db25maWdcbi8qKlxuICogVGhlIHR5cGUgb2YgYWN0aW9uLlxuICovXG5UeXBlOiBzdHJpbmdcblJlZGlyZWN0Q29uZmlnPzogUmVkaXJlY3RDb25maWdcbkZvcndhcmRDb25maWc/OiBGb3J3YXJkQ29uZmlnXG5BdXRoZW50aWNhdGVPaWRjQ29uZmlnPzogQXV0aGVudGljYXRlT2lkY0NvbmZpZ1xuSnd0VmFsaWRhdGlvbkNvbmZpZz86IEp3dFZhbGlkYXRpb25Db25maWdcbn1cbi8qKlxuICogW0FwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXJdIEluZm9ybWF0aW9uIGZvciBjcmVhdGluZyBhbiBhY3Rpb24gdGhhdCByZXR1cm5zIGEgY3VzdG9tIEhUVFAgcmVzcG9uc2UuIFNwZWNpZnkgb25seSB3aGVuIGBgVHlwZWBgIGlzIGBgZml4ZWQtcmVzcG9uc2VgYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXhlZFJlc3BvbnNlQ29uZmlnIHtcbi8qKlxuICogVGhlIGNvbnRlbnQgdHlwZS5cbiAqICBWYWxpZCBWYWx1ZXM6IHRleHQvcGxhaW4gfCB0ZXh0L2NzcyB8IHRleHQvaHRtbCB8IGFwcGxpY2F0aW9uL2phdmFzY3JpcHQgfCBhcHBsaWNhdGlvbi9qc29uXG4gKi9cbkNvbnRlbnRUeXBlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBIVFRQIHJlc3BvbnNlIGNvZGUgKDJYWCwgNFhYLCBvciA1WFgpLlxuICovXG5TdGF0dXNDb2RlOiBzdHJpbmdcbi8qKlxuICogVGhlIG1lc3NhZ2UuXG4gKi9cbk1lc3NhZ2VCb2R5Pzogc3RyaW5nXG59XG4vKipcbiAqIFtIVFRQUyBsaXN0ZW5lcnNdIEluZm9ybWF0aW9uIGZvciB1c2luZyBBbWF6b24gQ29nbml0byB0byBhdXRoZW50aWNhdGUgdXNlcnMuIFNwZWNpZnkgb25seSB3aGVuIGBgVHlwZWBgIGlzIGBgYXV0aGVudGljYXRlLWNvZ25pdG9gYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRoZW50aWNhdGVDb2duaXRvQ29uZmlnIHtcbi8qKlxuICogVGhlIGJlaGF2aW9yIGlmIHRoZSB1c2VyIGlzIG5vdCBhdXRoZW50aWNhdGVkLiBUaGUgZm9sbG93aW5nIGFyZSBwb3NzaWJsZSB2YWx1ZXM6XG4gKiAgICsgIGRlbnlgYGBgIC0gUmV0dXJuIGFuIEhUVFAgNDAxIFVuYXV0aG9yaXplZCBlcnJvci5cbiAqICAgKyAgYWxsb3dgYGBgIC0gQWxsb3cgdGhlIHJlcXVlc3QgdG8gYmUgZm9yd2FyZGVkIHRvIHRoZSB0YXJnZXQuXG4gKiAgICsgIGF1dGhlbnRpY2F0ZWBgYGAgLSBSZWRpcmVjdCB0aGUgcmVxdWVzdCB0byB0aGUgSWRQIGF1dGhvcml6YXRpb24gZW5kcG9pbnQuIFRoaXMgaXMgdGhlIGRlZmF1bHQgdmFsdWUuXG4gKi9cbk9uVW5hdXRoZW50aWNhdGVkUmVxdWVzdD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgSUQgb2YgdGhlIEFtYXpvbiBDb2duaXRvIHVzZXIgcG9vbCBjbGllbnQuXG4gKi9cblVzZXJQb29sQ2xpZW50SWQ6IHN0cmluZ1xuLyoqXG4gKiBUaGUgZG9tYWluIHByZWZpeCBvciBmdWxseS1xdWFsaWZpZWQgZG9tYWluIG5hbWUgb2YgdGhlIEFtYXpvbiBDb2duaXRvIHVzZXIgcG9vbC5cbiAqL1xuVXNlclBvb2xEb21haW46IHN0cmluZ1xuLyoqXG4gKiBUaGUgbWF4aW11bSBkdXJhdGlvbiBvZiB0aGUgYXV0aGVudGljYXRpb24gc2Vzc2lvbiwgaW4gc2Vjb25kcy4gVGhlIGRlZmF1bHQgaXMgNjA0ODAwIHNlY29uZHMgKDcgZGF5cykuXG4gKi9cblNlc3Npb25UaW1lb3V0PzogbnVtYmVyXG4vKipcbiAqIFRoZSBzZXQgb2YgdXNlciBjbGFpbXMgdG8gYmUgcmVxdWVzdGVkIGZyb20gdGhlIElkUC4gVGhlIGRlZmF1bHQgaXMgYGBvcGVuaWRgYC5cbiAqICBUbyB2ZXJpZnkgd2hpY2ggc2NvcGUgdmFsdWVzIHlvdXIgSWRQIHN1cHBvcnRzIGFuZCBob3cgdG8gc2VwYXJhdGUgbXVsdGlwbGUgdmFsdWVzLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHlvdXIgSWRQLlxuICovXG5TY29wZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgY29va2llIHVzZWQgdG8gbWFpbnRhaW4gc2Vzc2lvbiBpbmZvcm1hdGlvbi4gVGhlIGRlZmF1bHQgaXMgQVdTRUxCQXV0aFNlc3Npb25Db29raWUuXG4gKi9cblNlc3Npb25Db29raWVOYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgQW1hem9uIENvZ25pdG8gdXNlciBwb29sLlxuICovXG5Vc2VyUG9vbEFybjogc3RyaW5nXG4vKipcbiAqIFRoZSBxdWVyeSBwYXJhbWV0ZXJzICh1cCB0byAxMCkgdG8gaW5jbHVkZSBpbiB0aGUgcmVkaXJlY3QgcmVxdWVzdCB0byB0aGUgYXV0aG9yaXphdGlvbiBlbmRwb2ludC5cbiAqL1xuQXV0aGVudGljYXRpb25SZXF1ZXN0RXh0cmFQYXJhbXM/OiB7XG4vKipcbiAqIFRoaXMgaW50ZXJmYWNlIHdhcyByZWZlcmVuY2VkIGJ5IGB1bmRlZmluZWRgJ3MgSlNPTi1TY2hlbWEgZGVmaW5pdGlvblxuICogdmlhIHRoZSBgcGF0dGVyblByb3BlcnR5YCBcIlthLXpBLVowLTldK1wiLlxuICovXG5bazogc3RyaW5nXTogc3RyaW5nXG59XG59XG4vKipcbiAqIFtBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VyXSBJbmZvcm1hdGlvbiBmb3IgY3JlYXRpbmcgYSByZWRpcmVjdCBhY3Rpb24uIFNwZWNpZnkgb25seSB3aGVuIGBgVHlwZWBgIGlzIGBgcmVkaXJlY3RgYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWRpcmVjdENvbmZpZyB7XG4vKipcbiAqIFRoZSBhYnNvbHV0ZSBwYXRoLCBzdGFydGluZyB3aXRoIHRoZSBsZWFkaW5nIFwiL1wiLiBUaGlzIGNvbXBvbmVudCBpcyBub3QgcGVyY2VudC1lbmNvZGVkLiBUaGUgcGF0aCBjYW4gY29udGFpbiAje2hvc3R9LCAje3BhdGh9LCBhbmQgI3twb3J0fS5cbiAqL1xuUGF0aD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgcXVlcnkgcGFyYW1ldGVycywgVVJMLWVuY29kZWQgd2hlbiBuZWNlc3NhcnksIGJ1dCBub3QgcGVyY2VudC1lbmNvZGVkLiBEbyBub3QgaW5jbHVkZSB0aGUgbGVhZGluZyBcIj9cIiwgYXMgaXQgaXMgYXV0b21hdGljYWxseSBhZGRlZC4gWW91IGNhbiBzcGVjaWZ5IGFueSBvZiB0aGUgcmVzZXJ2ZWQga2V5d29yZHMuXG4gKi9cblF1ZXJ5Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBwb3J0LiBZb3UgY2FuIHNwZWNpZnkgYSB2YWx1ZSBmcm9tIDEgdG8gNjU1MzUgb3IgI3twb3J0fS5cbiAqL1xuUG9ydD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgaG9zdG5hbWUuIFRoaXMgY29tcG9uZW50IGlzIG5vdCBwZXJjZW50LWVuY29kZWQuIFRoZSBob3N0bmFtZSBjYW4gY29udGFpbiAje2hvc3R9LlxuICovXG5Ib3N0Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBwcm90b2NvbC4gWW91IGNhbiBzcGVjaWZ5IEhUVFAsIEhUVFBTLCBvciAje3Byb3RvY29sfS4gWW91IGNhbiByZWRpcmVjdCBIVFRQIHRvIEhUVFAsIEhUVFAgdG8gSFRUUFMsIGFuZCBIVFRQUyB0byBIVFRQUy4gWW91IGNhbid0IHJlZGlyZWN0IEhUVFBTIHRvIEhUVFAuXG4gKi9cblByb3RvY29sPzogc3RyaW5nXG4vKipcbiAqIFRoZSBIVFRQIHJlZGlyZWN0IGNvZGUuIFRoZSByZWRpcmVjdCBpcyBlaXRoZXIgcGVybWFuZW50IChIVFRQIDMwMSkgb3IgdGVtcG9yYXJ5IChIVFRQIDMwMikuXG4gKi9cblN0YXR1c0NvZGU6IHN0cmluZ1xufVxuLyoqXG4gKiBJbmZvcm1hdGlvbiBmb3IgY3JlYXRpbmcgYW4gYWN0aW9uIHRoYXQgZGlzdHJpYnV0ZXMgcmVxdWVzdHMgYW1vbmcgbXVsdGlwbGUgdGFyZ2V0IGdyb3Vwcy4gU3BlY2lmeSBvbmx5IHdoZW4gYGBUeXBlYGAgaXMgYGBmb3J3YXJkYGAuXG4gKiAgSWYgeW91IHNwZWNpZnkgYm90aCBgYEZvcndhcmRDb25maWdgYCBhbmQgYGBUYXJnZXRHcm91cEFybmBgLCB5b3UgY2FuIHNwZWNpZnkgb25seSBvbmUgdGFyZ2V0IGdyb3VwIHVzaW5nIGBgRm9yd2FyZENvbmZpZ2BgIGFuZCBpdCBtdXN0IGJlIHRoZSBzYW1lIHRhcmdldCBncm91cCBzcGVjaWZpZWQgaW4gYGBUYXJnZXRHcm91cEFybmBgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvcndhcmRDb25maWcge1xuVGFyZ2V0R3JvdXBTdGlja2luZXNzQ29uZmlnPzogVGFyZ2V0R3JvdXBTdGlja2luZXNzQ29uZmlnXG4vKipcbiAqIEluZm9ybWF0aW9uIGFib3V0IGhvdyB0cmFmZmljIHdpbGwgYmUgZGlzdHJpYnV0ZWQgYmV0d2VlbiBtdWx0aXBsZSB0YXJnZXQgZ3JvdXBzIGluIGEgZm9yd2FyZCBydWxlLlxuICovXG5UYXJnZXRHcm91cHM/OiBUYXJnZXRHcm91cFR1cGxlW11cbn1cbi8qKlxuICogSW5mb3JtYXRpb24gYWJvdXQgdGhlIHRhcmdldCBncm91cCBzdGlja2luZXNzIGZvciBhIHJ1bGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0R3JvdXBTdGlja2luZXNzQ29uZmlnIHtcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdGFyZ2V0IGdyb3VwIHN0aWNraW5lc3MgaXMgZW5hYmxlZC5cbiAqL1xuRW5hYmxlZD86IGJvb2xlYW5cbi8qKlxuICogW0FwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXJzXSBUaGUgdGltZSBwZXJpb2QsIGluIHNlY29uZHMsIGR1cmluZyB3aGljaCByZXF1ZXN0cyBmcm9tIGEgY2xpZW50IHNob3VsZCBiZSByb3V0ZWQgdG8gdGhlIHNhbWUgdGFyZ2V0IGdyb3VwLiBUaGUgcmFuZ2UgaXMgMS02MDQ4MDAgc2Vjb25kcyAoNyBkYXlzKS4gWW91IG11c3Qgc3BlY2lmeSB0aGlzIHZhbHVlIHdoZW4gZW5hYmxpbmcgdGFyZ2V0IGdyb3VwIHN0aWNraW5lc3MuXG4gKi9cbkR1cmF0aW9uU2Vjb25kcz86IG51bWJlclxufVxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCBob3cgdHJhZmZpYyB3aWxsIGJlIGRpc3RyaWJ1dGVkIGJldHdlZW4gbXVsdGlwbGUgdGFyZ2V0IGdyb3VwcyBpbiBhIGZvcndhcmQgcnVsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXJnZXRHcm91cFR1cGxlIHtcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSB0YXJnZXQgZ3JvdXAuXG4gKi9cblRhcmdldEdyb3VwQXJuPzogc3RyaW5nXG4vKipcbiAqIFRoZSB3ZWlnaHQuIFRoZSByYW5nZSBpcyAwIHRvIDk5OS5cbiAqL1xuV2VpZ2h0PzogbnVtYmVyXG59XG5leHBvcnQgaW50ZXJmYWNlIEp3dFZhbGlkYXRpb25Db25maWcge1xuSndrc0VuZHBvaW50OiBzdHJpbmdcbklzc3Vlcjogc3RyaW5nXG5BZGRpdGlvbmFsQ2xhaW1zPzogSnd0VmFsaWRhdGlvbkFjdGlvbkFkZGl0aW9uYWxDbGFpbVtdXG59XG5leHBvcnQgaW50ZXJmYWNlIEp3dFZhbGlkYXRpb25BY3Rpb25BZGRpdGlvbmFsQ2xhaW0ge1xuRm9ybWF0OiBzdHJpbmdcbk5hbWU6IHN0cmluZ1xuVmFsdWVzOiBzdHJpbmdbXVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgYSBjb25kaXRpb24gZm9yIGEgbGlzdGVuZXIgcnVsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdWxlQ29uZGl0aW9uIHtcbi8qKlxuICogVGhlIGZpZWxkIGluIHRoZSBIVFRQIHJlcXVlc3QuIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSBwb3NzaWJsZSB2YWx1ZXM6XG4gKiAgICsgICBgYGh0dHAtaGVhZGVyYGAgXG4gKiAgICsgICBgYGh0dHAtcmVxdWVzdC1tZXRob2RgYCBcbiAqICAgKyAgIGBgaG9zdC1oZWFkZXJgYCBcbiAqICAgKyAgIGBgcGF0aC1wYXR0ZXJuYGAgXG4gKiAgICsgICBgYHF1ZXJ5LXN0cmluZ2BgIFxuICogICArICAgYGBzb3VyY2UtaXBgYFxuICovXG5GaWVsZD86IHN0cmluZ1xuUmVnZXhWYWx1ZXM/OiBMaXN0T2ZTdHJpbmdzXG5WYWx1ZXM/OiBMaXN0T2ZTdHJpbmdzMVxuSHR0cFJlcXVlc3RNZXRob2RDb25maWc/OiBIdHRwUmVxdWVzdE1ldGhvZENvbmZpZ1xuUGF0aFBhdHRlcm5Db25maWc/OiBQYXRoUGF0dGVybkNvbmZpZ1xuSHR0cEhlYWRlckNvbmZpZz86IEh0dHBIZWFkZXJDb25maWdcblNvdXJjZUlwQ29uZmlnPzogU291cmNlSXBDb25maWdcbkhvc3RIZWFkZXJDb25maWc/OiBIb3N0SGVhZGVyQ29uZmlnXG5RdWVyeVN0cmluZ0NvbmZpZz86IFF1ZXJ5U3RyaW5nQ29uZmlnXG59XG4vKipcbiAqIEluZm9ybWF0aW9uIGZvciBhbiBIVFRQIG1ldGhvZCBjb25kaXRpb24uIFNwZWNpZnkgb25seSB3aGVuIGBgRmllbGRgYCBpcyBgYGh0dHAtcmVxdWVzdC1tZXRob2RgYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIdHRwUmVxdWVzdE1ldGhvZENvbmZpZyB7XG5WYWx1ZXM/OiBMaXN0T2ZTdHJpbmdzMlxufVxuLyoqXG4gKiBJbmZvcm1hdGlvbiBmb3IgYSBwYXRoIHBhdHRlcm4gY29uZGl0aW9uLiBTcGVjaWZ5IG9ubHkgd2hlbiBgYEZpZWxkYGAgaXMgYGBwYXRoLXBhdHRlcm5gYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXRoUGF0dGVybkNvbmZpZyB7XG5SZWdleFZhbHVlcz86IExpc3RPZlN0cmluZ3MzXG5WYWx1ZXM/OiBMaXN0T2ZTdHJpbmdzNFxufVxuLyoqXG4gKiBJbmZvcm1hdGlvbiBmb3IgYW4gSFRUUCBoZWFkZXIgY29uZGl0aW9uLiBTcGVjaWZ5IG9ubHkgd2hlbiBgYEZpZWxkYGAgaXMgYGBodHRwLWhlYWRlcmBgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBIZWFkZXJDb25maWcge1xuUmVnZXhWYWx1ZXM/OiBMaXN0T2ZTdHJpbmdzNVxuVmFsdWVzPzogTGlzdE9mU3RyaW5nczZcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIEhUVFAgaGVhZGVyIGZpZWxkLiBUaGUgbWF4aW11bSBzaXplIGlzIDQwIGNoYXJhY3RlcnMuIFRoZSBoZWFkZXIgbmFtZSBpcyBjYXNlIGluc2Vuc2l0aXZlLiBUaGUgYWxsb3dlZCBjaGFyYWN0ZXJzIGFyZSBzcGVjaWZpZWQgYnkgUkZDIDcyMzAuIFdpbGRjYXJkcyBhcmUgbm90IHN1cHBvcnRlZC5cbiAqL1xuSHR0cEhlYWRlck5hbWU/OiBzdHJpbmdcbn1cbi8qKlxuICogSW5mb3JtYXRpb24gZm9yIGEgc291cmNlIElQIGNvbmRpdGlvbi4gU3BlY2lmeSBvbmx5IHdoZW4gYGBGaWVsZGBgIGlzIGBgc291cmNlLWlwYGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlSXBDb25maWcge1xuLyoqXG4gKiBUaGUgc291cmNlIElQIGFkZHJlc3NlcywgaW4gQ0lEUiBmb3JtYXQuIFlvdSBjYW4gdXNlIGJvdGggSVB2NCBhbmQgSVB2NiBhZGRyZXNzZXMuIFdpbGRjYXJkcyBhcmUgbm90IHN1cHBvcnRlZC5cbiAqICBJZiB5b3Ugc3BlY2lmeSBtdWx0aXBsZSBhZGRyZXNzZXMsIHRoZSBjb25kaXRpb24gaXMgc2F0aXNmaWVkIGlmIHRoZSBzb3VyY2UgSVAgYWRkcmVzcyBvZiB0aGUgcmVxdWVzdCBtYXRjaGVzIG9uZSBvZiB0aGUgQ0lEUiBibG9ja3MuIFRoaXMgY29uZGl0aW9uIGlzIG5vdCBzYXRpc2ZpZWQgYnkgdGhlIGFkZHJlc3NlcyBpbiB0aGUgWC1Gb3J3YXJkZWQtRm9yIGhlYWRlci5cbiAqL1xuVmFsdWVzPzogc3RyaW5nW11cbn1cbi8qKlxuICogSW5mb3JtYXRpb24gZm9yIGEgaG9zdCBoZWFkZXIgY29uZGl0aW9uLiBTcGVjaWZ5IG9ubHkgd2hlbiBgYEZpZWxkYGAgaXMgYGBob3N0LWhlYWRlcmBgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhvc3RIZWFkZXJDb25maWcge1xuUmVnZXhWYWx1ZXM/OiBMaXN0T2ZTdHJpbmdzN1xuVmFsdWVzPzogTGlzdE9mU3RyaW5nczhcbn1cbi8qKlxuICogSW5mb3JtYXRpb24gZm9yIGEgcXVlcnkgc3RyaW5nIGNvbmRpdGlvbi4gU3BlY2lmeSBvbmx5IHdoZW4gYGBGaWVsZGBgIGlzIGBgcXVlcnktc3RyaW5nYGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlTdHJpbmdDb25maWcge1xuLyoqXG4gKiBUaGUga2V5L3ZhbHVlIHBhaXJzIG9yIHZhbHVlcyB0byBmaW5kIGluIHRoZSBxdWVyeSBzdHJpbmcuIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBlYWNoIHN0cmluZyBpcyAxMjggY2hhcmFjdGVycy4gVGhlIGNvbXBhcmlzb24gaXMgY2FzZSBpbnNlbnNpdGl2ZS4gVGhlIGZvbGxvd2luZyB3aWxkY2FyZCBjaGFyYWN0ZXJzIGFyZSBzdXBwb3J0ZWQ6ICogKG1hdGNoZXMgMCBvciBtb3JlIGNoYXJhY3RlcnMpIGFuZCA/IChtYXRjaGVzIGV4YWN0bHkgMSBjaGFyYWN0ZXIpLiBUbyBzZWFyY2ggZm9yIGEgbGl0ZXJhbCAnKicgb3IgJz8nIGNoYXJhY3RlciBpbiBhIHF1ZXJ5IHN0cmluZywgeW91IG11c3QgZXNjYXBlIHRoZXNlIGNoYXJhY3RlcnMgaW4gYGBWYWx1ZXNgYCB1c2luZyBhICdcXCcgY2hhcmFjdGVyLlxuICogIElmIHlvdSBzcGVjaWZ5IG11bHRpcGxlIGtleS92YWx1ZSBwYWlycyBvciB2YWx1ZXMsIHRoZSBjb25kaXRpb24gaXMgc2F0aXNmaWVkIGlmIG9uZSBvZiB0aGVtIGlzIGZvdW5kIGluIHRoZSBxdWVyeSBzdHJpbmcuXG4gKi9cblZhbHVlcz86IFF1ZXJ5U3RyaW5nS2V5VmFsdWVbXVxufVxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCBhIGtleS92YWx1ZSBwYWlyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5U3RyaW5nS2V5VmFsdWUge1xuLyoqXG4gKiBUaGUgdmFsdWUuXG4gKi9cblZhbHVlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBrZXkuIFlvdSBjYW4gb21pdCB0aGUga2V5LlxuICovXG5LZXk/OiBzdHJpbmdcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUmV3cml0ZUNvbmZpZ09iamVjdCB7XG5SZXdyaXRlczogUmV3cml0ZUNvbmZpZ0xpc3Rcbn1cbi8qKlxuICogSW5mb3JtYXRpb24gYWJvdXQgYSByZXdyaXRlIHRyYW5zZm9ybS4gVGhpcyB0cmFuc2Zvcm0gbWF0Y2hlcyBhIHBhdHRlcm4gYW5kIHJlcGxhY2VzIGl0IHdpdGggdGhlIHNwZWNpZmllZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmV3cml0ZUNvbmZpZyB7XG4vKipcbiAqIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gdG8gbWF0Y2ggaW4gdGhlIGlucHV0IHN0cmluZy4gVGhlIG1heGltdW0gbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaXMgMSwwMjQgY2hhcmFjdGVycy5cbiAqL1xuUmVnZXg6IHN0cmluZ1xuLyoqXG4gKiBUaGUgcmVwbGFjZW1lbnQgc3RyaW5nIHRvIHVzZSB3aGVuIHJld3JpdGluZyB0aGUgbWF0Y2hlZCBpbnB1dC4gVGhlIG1heGltdW0gbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaXMgMSwwMjQgY2hhcmFjdGVycy4gWW91IGNhbiBzcGVjaWZ5IGNhcHR1cmUgZ3JvdXBzIGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gKGZvciBleGFtcGxlLCAkMSBhbmQgJDIpLlxuICovXG5SZXBsYWNlOiBzdHJpbmdcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUmV3cml0ZUNvbmZpZ09iamVjdDEge1xuUmV3cml0ZXM6IFJld3JpdGVDb25maWdMaXN0XG59XG4iXX0=