@horietakehiro/aws-cdk-utul 0.41.12 → 0.41.14

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 (51) hide show
  1. package/lib/types/cfn-resource-types/aws-appconfig-deployment.d.ts +4 -0
  2. package/lib/types/cfn-resource-types/aws-appconfig-deployment.js +1 -1
  3. package/lib/types/cfn-resource-types/aws-codebuild-project.d.ts +5 -0
  4. package/lib/types/cfn-resource-types/aws-codebuild-project.js +1 -1
  5. package/lib/types/cfn-resource-types/aws-deadline-fleet.d.ts +4 -0
  6. package/lib/types/cfn-resource-types/aws-deadline-fleet.js +1 -1
  7. package/lib/types/cfn-resource-types/aws-deadline-monitor.d.ts +19 -0
  8. package/lib/types/cfn-resource-types/aws-deadline-monitor.js +1 -1
  9. package/lib/types/cfn-resource-types/aws-ec2-launchtemplate.d.ts +1 -38
  10. package/lib/types/cfn-resource-types/aws-ec2-launchtemplate.js +1 -1
  11. package/lib/types/cfn-resource-types/aws-ec2-natgateway.d.ts +10 -10
  12. package/lib/types/cfn-resource-types/aws-ec2-natgateway.js +1 -1
  13. package/lib/types/cfn-resource-types/aws-ecr-repository.d.ts +7 -10
  14. package/lib/types/cfn-resource-types/aws-ecr-repository.js +1 -1
  15. package/lib/types/cfn-resource-types/aws-ecr-repositorycreationtemplate.d.ts +5 -6
  16. package/lib/types/cfn-resource-types/aws-ecr-repositorycreationtemplate.js +1 -1
  17. package/lib/types/cfn-resource-types/aws-ecs-service.d.ts +109 -4
  18. package/lib/types/cfn-resource-types/aws-ecs-service.js +1 -1
  19. package/lib/types/cfn-resource-types/aws-eks-cluster.d.ts +114 -110
  20. package/lib/types/cfn-resource-types/aws-eks-cluster.js +1 -1
  21. package/lib/types/cfn-resource-types/aws-iotsitewise-assetmodel.d.ts +35 -1
  22. package/lib/types/cfn-resource-types/aws-iotsitewise-assetmodel.js +1 -1
  23. package/lib/types/cfn-resource-types/aws-lambda-version.d.ts +14 -14
  24. package/lib/types/cfn-resource-types/aws-lambda-version.js +1 -1
  25. package/lib/types/cfn-resource-types/aws-mediapackagev2-originendpoint.d.ts +4 -0
  26. package/lib/types/cfn-resource-types/aws-mediapackagev2-originendpoint.js +1 -1
  27. package/lib/types/cfn-resource-types/aws-networkfirewall-firewall.d.ts +11 -5
  28. package/lib/types/cfn-resource-types/aws-networkfirewall-firewall.js +1 -1
  29. package/lib/types/cfn-resource-types/aws-networkfirewall-firewallpolicy.d.ts +1 -0
  30. package/lib/types/cfn-resource-types/aws-networkfirewall-firewallpolicy.js +1 -1
  31. package/lib/types/cfn-resource-types/aws-networkfirewall-rulegroup.d.ts +4 -0
  32. package/lib/types/cfn-resource-types/aws-networkfirewall-rulegroup.js +1 -1
  33. package/lib/types/cfn-resource-types/aws-pcs-cluster.d.ts +40 -32
  34. package/lib/types/cfn-resource-types/aws-pcs-cluster.js +1 -1
  35. package/lib/types/cfn-resource-types/aws-rds-dbinstance.d.ts +7 -1
  36. package/lib/types/cfn-resource-types/aws-rds-dbinstance.js +1 -1
  37. package/lib/types/cfn-resource-types/aws-rds-dbproxy.d.ts +1 -1
  38. package/lib/types/cfn-resource-types/aws-rds-dbproxy.js +1 -1
  39. package/lib/types/cfn-resource-types/aws-sagemaker-cluster.d.ts +28 -19
  40. package/lib/types/cfn-resource-types/aws-sagemaker-cluster.js +1 -1
  41. package/lib/types/cfn-resource-types/aws-securityhub-automationrule.d.ts +1 -1
  42. package/lib/types/cfn-resource-types/aws-securityhub-automationrule.js +1 -1
  43. package/lib/types/cfn-resource-types/aws-verifiedpermissions-policystore.d.ts +7 -2
  44. package/lib/types/cfn-resource-types/aws-verifiedpermissions-policystore.js +1 -1
  45. package/lib/types/cfn-resource-types/aws-workspacesweb-portal.d.ts +1 -0
  46. package/lib/types/cfn-resource-types/aws-workspacesweb-portal.js +1 -1
  47. package/lib/types/cfn-resource-types/aws-workspacesweb-sessionlogger.d.ts +55 -0
  48. package/lib/types/cfn-resource-types/aws-workspacesweb-sessionlogger.js +3 -0
  49. package/lib/types/cfn-resource-types.d.ts +2 -0
  50. package/lib/types/cfn-resource-types.js +4 -2
  51. package/package.json +1 -1
@@ -26,6 +26,10 @@ export interface _AWS_APPCONFIG_DEPLOYMENT {
26
26
  * The configuration version to deploy. If deploying an AWS AppConfig hosted configuration version, you can specify either the version number or version label. For all other configurations, you must specify the version number.
27
27
  */
28
28
  ConfigurationVersion: string;
29
+ /**
30
+ * The state of the deployment.
31
+ */
32
+ State?: ("BAKING" | "VALIDATING" | "DEPLOYING" | "COMPLETE" | "ROLLING_BACK" | "ROLLED_BACK" | "REVERTED");
29
33
  /**
30
34
  * The sequence number of the deployment.
31
35
  */
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWFwcGNvbmZpZy1kZXBsb3ltZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWFwcGNvbmZpZy1kZXBsb3ltZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlc291cmNlIFR5cGUgZGVmaW5pdGlvbiBmb3IgQVdTOjpBcHBDb25maWc6OkRlcGxveW1lbnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0FQUENPTkZJR19ERVBMT1lNRU5UIHtcbi8qKlxuICogVGhlIGRlcGxveW1lbnQgc3RyYXRlZ3kgSUQuXG4gKi9cbkRlcGxveW1lbnRTdHJhdGVneUlkOiBzdHJpbmdcbi8qKlxuICogVGhlIGNvbmZpZ3VyYXRpb24gcHJvZmlsZSBJRC5cbiAqL1xuQ29uZmlndXJhdGlvblByb2ZpbGVJZDogc3RyaW5nXG4vKipcbiAqIFRoZSBlbnZpcm9ubWVudCBJRC5cbiAqL1xuRW52aXJvbm1lbnRJZDogc3RyaW5nXG4vKipcbiAqIFRoZSBBV1MgS2V5IE1hbmFnZW1lbnQgU2VydmljZSBrZXkgaWRlbnRpZmllciAoa2V5IElELCBrZXkgYWxpYXMsIG9yIGtleSBBUk4pIHByb3ZpZGVkIHdoZW4gdGhlIHJlc291cmNlIHdhcyBjcmVhdGVkIG9yIHVwZGF0ZWQuXG4gKi9cbkttc0tleUlkZW50aWZpZXI/OiBzdHJpbmdcbi8qKlxuICogQSBkZXNjcmlwdGlvbiBvZiB0aGUgZGVwbG95bWVudC5cbiAqL1xuRGVzY3JpcHRpb24/OiBzdHJpbmdcbi8qKlxuICogVGhlIGNvbmZpZ3VyYXRpb24gdmVyc2lvbiB0byBkZXBsb3kuIElmIGRlcGxveWluZyBhbiBBV1MgQXBwQ29uZmlnIGhvc3RlZCBjb25maWd1cmF0aW9uIHZlcnNpb24sIHlvdSBjYW4gc3BlY2lmeSBlaXRoZXIgdGhlIHZlcnNpb24gbnVtYmVyIG9yIHZlcnNpb24gbGFiZWwuIEZvciBhbGwgb3RoZXIgY29uZmlndXJhdGlvbnMsIHlvdSBtdXN0IHNwZWNpZnkgdGhlIHZlcnNpb24gbnVtYmVyLlxuICovXG5Db25maWd1cmF0aW9uVmVyc2lvbjogc3RyaW5nXG4vKipcbiAqIFRoZSBzZXF1ZW5jZSBudW1iZXIgb2YgdGhlIGRlcGxveW1lbnQuXG4gKi9cbkRlcGxveW1lbnROdW1iZXI/OiBzdHJpbmdcbi8qKlxuICogVGhlIGFwcGxpY2F0aW9uIElELlxuICovXG5BcHBsaWNhdGlvbklkOiBzdHJpbmdcbkR5bmFtaWNFeHRlbnNpb25QYXJhbWV0ZXJzPzogRHluYW1pY0V4dGVuc2lvblBhcmFtZXRlcnNbXVxuLyoqXG4gKiBBbiBhcnJheSBvZiBrZXktdmFsdWUgcGFpcnMgdG8gYXBwbHkgdG8gdGhpcyByZXNvdXJjZS5cbiAqL1xuVGFncz86IFRhZ1tdXG59XG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNFeHRlbnNpb25QYXJhbWV0ZXJzIHtcblBhcmFtZXRlclZhbHVlPzogc3RyaW5nXG5FeHRlbnNpb25SZWZlcmVuY2U/OiBzdHJpbmdcblBhcmFtZXRlck5hbWU/OiBzdHJpbmdcbn1cbi8qKlxuICogTWV0YWRhdGEgdG8gYXNzaWduIHRvIHRoZSBkZXBsb3ltZW50LiBUYWdzIGhlbHAgb3JnYW5pemUgYW5kIGNhdGVnb3JpemUgeW91ciBBV1MgQXBwQ29uZmlnIHJlc291cmNlcy4gRWFjaCB0YWcgY29uc2lzdHMgb2YgYSBrZXkgYW5kIGFuIG9wdGlvbmFsIHZhbHVlLCBib3RoIG9mIHdoaWNoIHlvdSBkZWZpbmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIHtcbi8qKlxuICogVGhlIHRhZyB2YWx1ZSBjYW4gYmUgdXAgdG8gMjU2IGNoYXJhY3RlcnMuXG4gKi9cblZhbHVlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBrZXktdmFsdWUgc3RyaW5nIG1hcC4gVGhlIHZhbGlkIGNoYXJhY3RlciBzZXQgaXMgW2EtekEtWjEtOSstPS5fOi9dLiBUaGUgdGFnIGtleSBjYW4gYmUgdXAgdG8gMTI4IGNoYXJhY3RlcnMgYW5kIG11c3Qgbm90IHN0YXJ0IHdpdGggYXdzOi5cbiAqL1xuS2V5Pzogc3RyaW5nXG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWFwcGNvbmZpZy1kZXBsb3ltZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWFwcGNvbmZpZy1kZXBsb3ltZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlc291cmNlIFR5cGUgZGVmaW5pdGlvbiBmb3IgQVdTOjpBcHBDb25maWc6OkRlcGxveW1lbnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0FQUENPTkZJR19ERVBMT1lNRU5UIHtcbi8qKlxuICogVGhlIGRlcGxveW1lbnQgc3RyYXRlZ3kgSUQuXG4gKi9cbkRlcGxveW1lbnRTdHJhdGVneUlkOiBzdHJpbmdcbi8qKlxuICogVGhlIGNvbmZpZ3VyYXRpb24gcHJvZmlsZSBJRC5cbiAqL1xuQ29uZmlndXJhdGlvblByb2ZpbGVJZDogc3RyaW5nXG4vKipcbiAqIFRoZSBlbnZpcm9ubWVudCBJRC5cbiAqL1xuRW52aXJvbm1lbnRJZDogc3RyaW5nXG4vKipcbiAqIFRoZSBBV1MgS2V5IE1hbmFnZW1lbnQgU2VydmljZSBrZXkgaWRlbnRpZmllciAoa2V5IElELCBrZXkgYWxpYXMsIG9yIGtleSBBUk4pIHByb3ZpZGVkIHdoZW4gdGhlIHJlc291cmNlIHdhcyBjcmVhdGVkIG9yIHVwZGF0ZWQuXG4gKi9cbkttc0tleUlkZW50aWZpZXI/OiBzdHJpbmdcbi8qKlxuICogQSBkZXNjcmlwdGlvbiBvZiB0aGUgZGVwbG95bWVudC5cbiAqL1xuRGVzY3JpcHRpb24/OiBzdHJpbmdcbi8qKlxuICogVGhlIGNvbmZpZ3VyYXRpb24gdmVyc2lvbiB0byBkZXBsb3kuIElmIGRlcGxveWluZyBhbiBBV1MgQXBwQ29uZmlnIGhvc3RlZCBjb25maWd1cmF0aW9uIHZlcnNpb24sIHlvdSBjYW4gc3BlY2lmeSBlaXRoZXIgdGhlIHZlcnNpb24gbnVtYmVyIG9yIHZlcnNpb24gbGFiZWwuIEZvciBhbGwgb3RoZXIgY29uZmlndXJhdGlvbnMsIHlvdSBtdXN0IHNwZWNpZnkgdGhlIHZlcnNpb24gbnVtYmVyLlxuICovXG5Db25maWd1cmF0aW9uVmVyc2lvbjogc3RyaW5nXG4vKipcbiAqIFRoZSBzdGF0ZSBvZiB0aGUgZGVwbG95bWVudC5cbiAqL1xuU3RhdGU/OiAoXCJCQUtJTkdcIiB8IFwiVkFMSURBVElOR1wiIHwgXCJERVBMT1lJTkdcIiB8IFwiQ09NUExFVEVcIiB8IFwiUk9MTElOR19CQUNLXCIgfCBcIlJPTExFRF9CQUNLXCIgfCBcIlJFVkVSVEVEXCIpXG4vKipcbiAqIFRoZSBzZXF1ZW5jZSBudW1iZXIgb2YgdGhlIGRlcGxveW1lbnQuXG4gKi9cbkRlcGxveW1lbnROdW1iZXI/OiBzdHJpbmdcbi8qKlxuICogVGhlIGFwcGxpY2F0aW9uIElELlxuICovXG5BcHBsaWNhdGlvbklkOiBzdHJpbmdcbkR5bmFtaWNFeHRlbnNpb25QYXJhbWV0ZXJzPzogRHluYW1pY0V4dGVuc2lvblBhcmFtZXRlcnNbXVxuLyoqXG4gKiBBbiBhcnJheSBvZiBrZXktdmFsdWUgcGFpcnMgdG8gYXBwbHkgdG8gdGhpcyByZXNvdXJjZS5cbiAqL1xuVGFncz86IFRhZ1tdXG59XG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNFeHRlbnNpb25QYXJhbWV0ZXJzIHtcblBhcmFtZXRlclZhbHVlPzogc3RyaW5nXG5FeHRlbnNpb25SZWZlcmVuY2U/OiBzdHJpbmdcblBhcmFtZXRlck5hbWU/OiBzdHJpbmdcbn1cbi8qKlxuICogTWV0YWRhdGEgdG8gYXNzaWduIHRvIHRoZSBkZXBsb3ltZW50LiBUYWdzIGhlbHAgb3JnYW5pemUgYW5kIGNhdGVnb3JpemUgeW91ciBBV1MgQXBwQ29uZmlnIHJlc291cmNlcy4gRWFjaCB0YWcgY29uc2lzdHMgb2YgYSBrZXkgYW5kIGFuIG9wdGlvbmFsIHZhbHVlLCBib3RoIG9mIHdoaWNoIHlvdSBkZWZpbmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIHtcbi8qKlxuICogVGhlIHRhZyB2YWx1ZSBjYW4gYmUgdXAgdG8gMjU2IGNoYXJhY3RlcnMuXG4gKi9cblZhbHVlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBrZXktdmFsdWUgc3RyaW5nIG1hcC4gVGhlIHZhbGlkIGNoYXJhY3RlciBzZXQgaXMgW2EtekEtWjEtOSstPS5fOi9dLiBUaGUgdGFnIGtleSBjYW4gYmUgdXAgdG8gMTI4IGNoYXJhY3RlcnMgYW5kIG11c3Qgbm90IHN0YXJ0IHdpdGggYXdzOi5cbiAqL1xuS2V5Pzogc3RyaW5nXG59XG4iXX0=
@@ -96,6 +96,7 @@ export interface ProjectTriggers {
96
96
  FilterGroups?: FilterGroup[];
97
97
  Webhook?: boolean;
98
98
  ScopeConfiguration?: ScopeConfiguration;
99
+ PullRequestBuildPolicy?: PullRequestBuildPolicy;
99
100
  }
100
101
  export interface FilterGroup {
101
102
  }
@@ -104,6 +105,10 @@ export interface ScopeConfiguration {
104
105
  Domain?: string;
105
106
  Name: string;
106
107
  }
108
+ export interface PullRequestBuildPolicy {
109
+ RequiresCommentApproval: string;
110
+ ApproverRoles?: string[];
111
+ }
107
112
  export interface ProjectFileSystemLocation {
108
113
  MountPoint: string;
109
114
  Type: string;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWNvZGVidWlsZC1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWNvZGVidWlsZC1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlc291cmNlIFR5cGUgZGVmaW5pdGlvbiBmb3IgQVdTOjpDb2RlQnVpbGQ6OlByb2plY3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0NPREVCVUlMRF9QUk9KRUNUIHtcbkRlc2NyaXB0aW9uPzogc3RyaW5nXG5SZXNvdXJjZUFjY2Vzc1JvbGU/OiBzdHJpbmdcblZwY0NvbmZpZz86IFZwY0NvbmZpZ1xuU2Vjb25kYXJ5U291cmNlcz86IFNvdXJjZVtdXG5FbmNyeXB0aW9uS2V5Pzogc3RyaW5nXG5TZWNvbmRhcnlBcnRpZmFjdHM/OiBBcnRpZmFjdHNbXVxuU291cmNlOiBTb3VyY2Vcbk5hbWU/OiBzdHJpbmdcbkxvZ3NDb25maWc/OiBMb2dzQ29uZmlnXG5TZXJ2aWNlUm9sZTogc3RyaW5nXG5RdWV1ZWRUaW1lb3V0SW5NaW51dGVzPzogbnVtYmVyXG5TZWNvbmRhcnlTb3VyY2VWZXJzaW9ucz86IFByb2plY3RTb3VyY2VWZXJzaW9uW11cblRhZ3M/OiBUYWdbXVxuQXV0b1JldHJ5TGltaXQ/OiBudW1iZXJcblNvdXJjZVZlcnNpb24/OiBzdHJpbmdcblRyaWdnZXJzPzogUHJvamVjdFRyaWdnZXJzXG5BcnRpZmFjdHM6IEFydGlmYWN0c1xuQmFkZ2VFbmFibGVkPzogYm9vbGVhblxuRmlsZVN5c3RlbUxvY2F0aW9ucz86IFByb2plY3RGaWxlU3lzdGVtTG9jYXRpb25bXVxuRW52aXJvbm1lbnQ6IEVudmlyb25tZW50XG5Db25jdXJyZW50QnVpbGRMaW1pdD86IG51bWJlclxuVmlzaWJpbGl0eT86IHN0cmluZ1xuSWQ/OiBzdHJpbmdcbkFybj86IHN0cmluZ1xuQnVpbGRCYXRjaENvbmZpZz86IFByb2plY3RCdWlsZEJhdGNoQ29uZmlnXG5UaW1lb3V0SW5NaW51dGVzPzogbnVtYmVyXG5DYWNoZT86IFByb2plY3RDYWNoZVxufVxuZXhwb3J0IGludGVyZmFjZSBWcGNDb25maWcge1xuU3VibmV0cz86IHN0cmluZ1tdXG5WcGNJZD86IHN0cmluZ1xuU2VjdXJpdHlHcm91cElkcz86IHN0cmluZ1tdXG59XG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZSB7XG5UeXBlOiBzdHJpbmdcblJlcG9ydEJ1aWxkU3RhdHVzPzogYm9vbGVhblxuQXV0aD86IFNvdXJjZUF1dGhcblNvdXJjZUlkZW50aWZpZXI/OiBzdHJpbmdcbkJ1aWxkU3BlYz86IHN0cmluZ1xuR2l0Q2xvbmVEZXB0aD86IG51bWJlclxuQnVpbGRTdGF0dXNDb25maWc/OiBCdWlsZFN0YXR1c0NvbmZpZ1xuR2l0U3VibW9kdWxlc0NvbmZpZz86IEdpdFN1Ym1vZHVsZXNDb25maWdcbkluc2VjdXJlU3NsPzogYm9vbGVhblxuTG9jYXRpb24/OiBzdHJpbmdcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlQXV0aCB7XG5SZXNvdXJjZT86IHN0cmluZ1xuVHlwZTogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkU3RhdHVzQ29uZmlnIHtcbkNvbnRleHQ/OiBzdHJpbmdcblRhcmdldFVybD86IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBHaXRTdWJtb2R1bGVzQ29uZmlnIHtcbkZldGNoU3VibW9kdWxlczogYm9vbGVhblxufVxuZXhwb3J0IGludGVyZmFjZSBBcnRpZmFjdHMge1xuUGF0aD86IHN0cmluZ1xuVHlwZTogc3RyaW5nXG5BcnRpZmFjdElkZW50aWZpZXI/OiBzdHJpbmdcbk92ZXJyaWRlQXJ0aWZhY3ROYW1lPzogYm9vbGVhblxuUGFja2FnaW5nPzogc3RyaW5nXG5FbmNyeXB0aW9uRGlzYWJsZWQ/OiBib29sZWFuXG5Mb2NhdGlvbj86IHN0cmluZ1xuTmFtZT86IHN0cmluZ1xuTmFtZXNwYWNlVHlwZT86IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBMb2dzQ29uZmlnIHtcbkNsb3VkV2F0Y2hMb2dzPzogQ2xvdWRXYXRjaExvZ3NDb25maWdcblMzTG9ncz86IFMzTG9nc0NvbmZpZ1xufVxuZXhwb3J0IGludGVyZmFjZSBDbG91ZFdhdGNoTG9nc0NvbmZpZyB7XG5TdGF0dXM6IHN0cmluZ1xuR3JvdXBOYW1lPzogc3RyaW5nXG5TdHJlYW1OYW1lPzogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIFMzTG9nc0NvbmZpZyB7XG5TdGF0dXM6IHN0cmluZ1xuRW5jcnlwdGlvbkRpc2FibGVkPzogYm9vbGVhblxuTG9jYXRpb24/OiBzdHJpbmdcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHJvamVjdFNvdXJjZVZlcnNpb24ge1xuU291cmNlSWRlbnRpZmllcjogc3RyaW5nXG5Tb3VyY2VWZXJzaW9uPzogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG5WYWx1ZTogc3RyaW5nXG5LZXk6IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0VHJpZ2dlcnMge1xuQnVpbGRUeXBlPzogc3RyaW5nXG5GaWx0ZXJHcm91cHM/OiBGaWx0ZXJHcm91cFtdXG5XZWJob29rPzogYm9vbGVhblxuU2NvcGVDb25maWd1cmF0aW9uPzogU2NvcGVDb25maWd1cmF0aW9uXG59XG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckdyb3VwIHtcblxufVxuZXhwb3J0IGludGVyZmFjZSBTY29wZUNvbmZpZ3VyYXRpb24ge1xuU2NvcGU/OiBzdHJpbmdcbkRvbWFpbj86IHN0cmluZ1xuTmFtZTogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIFByb2plY3RGaWxlU3lzdGVtTG9jYXRpb24ge1xuTW91bnRQb2ludDogc3RyaW5nXG5UeXBlOiBzdHJpbmdcbklkZW50aWZpZXI6IHN0cmluZ1xuTW91bnRPcHRpb25zPzogc3RyaW5nXG5Mb2NhdGlvbjogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIEVudmlyb25tZW50IHtcblR5cGU6IHN0cmluZ1xuRW52aXJvbm1lbnRWYXJpYWJsZXM/OiBFbnZpcm9ubWVudFZhcmlhYmxlW11cbkZsZWV0PzogUHJvamVjdEZsZWV0XG5Qcml2aWxlZ2VkTW9kZT86IGJvb2xlYW5cbkltYWdlUHVsbENyZWRlbnRpYWxzVHlwZT86IHN0cmluZ1xuSW1hZ2U6IHN0cmluZ1xuUmVnaXN0cnlDcmVkZW50aWFsPzogUmVnaXN0cnlDcmVkZW50aWFsXG5Db21wdXRlVHlwZTogc3RyaW5nXG5Eb2NrZXJTZXJ2ZXI/OiBEb2NrZXJTZXJ2ZXJcbkNlcnRpZmljYXRlPzogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIEVudmlyb25tZW50VmFyaWFibGUge1xuVmFsdWU6IHN0cmluZ1xuVHlwZT86IHN0cmluZ1xuTmFtZTogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIFByb2plY3RGbGVldCB7XG5GbGVldEFybj86IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RyeUNyZWRlbnRpYWwge1xuQ3JlZGVudGlhbDogc3RyaW5nXG5DcmVkZW50aWFsUHJvdmlkZXI6IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBEb2NrZXJTZXJ2ZXIge1xuQ29tcHV0ZVR5cGU6IHN0cmluZ1xuU2VjdXJpdHlHcm91cElkcz86IHN0cmluZ1tdXG59XG5leHBvcnQgaW50ZXJmYWNlIFByb2plY3RCdWlsZEJhdGNoQ29uZmlnIHtcbkNvbWJpbmVBcnRpZmFjdHM/OiBib29sZWFuXG5TZXJ2aWNlUm9sZT86IHN0cmluZ1xuQmF0Y2hSZXBvcnRNb2RlPzogc3RyaW5nXG5UaW1lb3V0SW5NaW5zPzogbnVtYmVyXG5SZXN0cmljdGlvbnM/OiBCYXRjaFJlc3RyaWN0aW9uc1xufVxuZXhwb3J0IGludGVyZmFjZSBCYXRjaFJlc3RyaWN0aW9ucyB7XG5Db21wdXRlVHlwZXNBbGxvd2VkPzogc3RyaW5nW11cbk1heGltdW1CdWlsZHNBbGxvd2VkPzogbnVtYmVyXG59XG5leHBvcnQgaW50ZXJmYWNlIFByb2plY3RDYWNoZSB7XG5Nb2Rlcz86IHN0cmluZ1tdXG5UeXBlOiBzdHJpbmdcbkNhY2hlTmFtZXNwYWNlPzogc3RyaW5nXG5Mb2NhdGlvbj86IHN0cmluZ1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWNvZGVidWlsZC1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWNvZGVidWlsZC1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlc291cmNlIFR5cGUgZGVmaW5pdGlvbiBmb3IgQVdTOjpDb2RlQnVpbGQ6OlByb2plY3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0NPREVCVUlMRF9QUk9KRUNUIHtcbkRlc2NyaXB0aW9uPzogc3RyaW5nXG5SZXNvdXJjZUFjY2Vzc1JvbGU/OiBzdHJpbmdcblZwY0NvbmZpZz86IFZwY0NvbmZpZ1xuU2Vjb25kYXJ5U291cmNlcz86IFNvdXJjZVtdXG5FbmNyeXB0aW9uS2V5Pzogc3RyaW5nXG5TZWNvbmRhcnlBcnRpZmFjdHM/OiBBcnRpZmFjdHNbXVxuU291cmNlOiBTb3VyY2Vcbk5hbWU/OiBzdHJpbmdcbkxvZ3NDb25maWc/OiBMb2dzQ29uZmlnXG5TZXJ2aWNlUm9sZTogc3RyaW5nXG5RdWV1ZWRUaW1lb3V0SW5NaW51dGVzPzogbnVtYmVyXG5TZWNvbmRhcnlTb3VyY2VWZXJzaW9ucz86IFByb2plY3RTb3VyY2VWZXJzaW9uW11cblRhZ3M/OiBUYWdbXVxuQXV0b1JldHJ5TGltaXQ/OiBudW1iZXJcblNvdXJjZVZlcnNpb24/OiBzdHJpbmdcblRyaWdnZXJzPzogUHJvamVjdFRyaWdnZXJzXG5BcnRpZmFjdHM6IEFydGlmYWN0c1xuQmFkZ2VFbmFibGVkPzogYm9vbGVhblxuRmlsZVN5c3RlbUxvY2F0aW9ucz86IFByb2plY3RGaWxlU3lzdGVtTG9jYXRpb25bXVxuRW52aXJvbm1lbnQ6IEVudmlyb25tZW50XG5Db25jdXJyZW50QnVpbGRMaW1pdD86IG51bWJlclxuVmlzaWJpbGl0eT86IHN0cmluZ1xuSWQ/OiBzdHJpbmdcbkFybj86IHN0cmluZ1xuQnVpbGRCYXRjaENvbmZpZz86IFByb2plY3RCdWlsZEJhdGNoQ29uZmlnXG5UaW1lb3V0SW5NaW51dGVzPzogbnVtYmVyXG5DYWNoZT86IFByb2plY3RDYWNoZVxufVxuZXhwb3J0IGludGVyZmFjZSBWcGNDb25maWcge1xuU3VibmV0cz86IHN0cmluZ1tdXG5WcGNJZD86IHN0cmluZ1xuU2VjdXJpdHlHcm91cElkcz86IHN0cmluZ1tdXG59XG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZSB7XG5UeXBlOiBzdHJpbmdcblJlcG9ydEJ1aWxkU3RhdHVzPzogYm9vbGVhblxuQXV0aD86IFNvdXJjZUF1dGhcblNvdXJjZUlkZW50aWZpZXI/OiBzdHJpbmdcbkJ1aWxkU3BlYz86IHN0cmluZ1xuR2l0Q2xvbmVEZXB0aD86IG51bWJlclxuQnVpbGRTdGF0dXNDb25maWc/OiBCdWlsZFN0YXR1c0NvbmZpZ1xuR2l0U3VibW9kdWxlc0NvbmZpZz86IEdpdFN1Ym1vZHVsZXNDb25maWdcbkluc2VjdXJlU3NsPzogYm9vbGVhblxuTG9jYXRpb24/OiBzdHJpbmdcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlQXV0aCB7XG5SZXNvdXJjZT86IHN0cmluZ1xuVHlwZTogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkU3RhdHVzQ29uZmlnIHtcbkNvbnRleHQ/OiBzdHJpbmdcblRhcmdldFVybD86IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBHaXRTdWJtb2R1bGVzQ29uZmlnIHtcbkZldGNoU3VibW9kdWxlczogYm9vbGVhblxufVxuZXhwb3J0IGludGVyZmFjZSBBcnRpZmFjdHMge1xuUGF0aD86IHN0cmluZ1xuVHlwZTogc3RyaW5nXG5BcnRpZmFjdElkZW50aWZpZXI/OiBzdHJpbmdcbk92ZXJyaWRlQXJ0aWZhY3ROYW1lPzogYm9vbGVhblxuUGFja2FnaW5nPzogc3RyaW5nXG5FbmNyeXB0aW9uRGlzYWJsZWQ/OiBib29sZWFuXG5Mb2NhdGlvbj86IHN0cmluZ1xuTmFtZT86IHN0cmluZ1xuTmFtZXNwYWNlVHlwZT86IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBMb2dzQ29uZmlnIHtcbkNsb3VkV2F0Y2hMb2dzPzogQ2xvdWRXYXRjaExvZ3NDb25maWdcblMzTG9ncz86IFMzTG9nc0NvbmZpZ1xufVxuZXhwb3J0IGludGVyZmFjZSBDbG91ZFdhdGNoTG9nc0NvbmZpZyB7XG5TdGF0dXM6IHN0cmluZ1xuR3JvdXBOYW1lPzogc3RyaW5nXG5TdHJlYW1OYW1lPzogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIFMzTG9nc0NvbmZpZyB7XG5TdGF0dXM6IHN0cmluZ1xuRW5jcnlwdGlvbkRpc2FibGVkPzogYm9vbGVhblxuTG9jYXRpb24/OiBzdHJpbmdcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHJvamVjdFNvdXJjZVZlcnNpb24ge1xuU291cmNlSWRlbnRpZmllcjogc3RyaW5nXG5Tb3VyY2VWZXJzaW9uPzogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG5WYWx1ZTogc3RyaW5nXG5LZXk6IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0VHJpZ2dlcnMge1xuQnVpbGRUeXBlPzogc3RyaW5nXG5GaWx0ZXJHcm91cHM/OiBGaWx0ZXJHcm91cFtdXG5XZWJob29rPzogYm9vbGVhblxuU2NvcGVDb25maWd1cmF0aW9uPzogU2NvcGVDb25maWd1cmF0aW9uXG5QdWxsUmVxdWVzdEJ1aWxkUG9saWN5PzogUHVsbFJlcXVlc3RCdWlsZFBvbGljeVxufVxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJHcm91cCB7XG5cbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2NvcGVDb25maWd1cmF0aW9uIHtcblNjb3BlPzogc3RyaW5nXG5Eb21haW4/OiBzdHJpbmdcbk5hbWU6IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBQdWxsUmVxdWVzdEJ1aWxkUG9saWN5IHtcblJlcXVpcmVzQ29tbWVudEFwcHJvdmFsOiBzdHJpbmdcbkFwcHJvdmVyUm9sZXM/OiBzdHJpbmdbXVxufVxuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0RmlsZVN5c3RlbUxvY2F0aW9uIHtcbk1vdW50UG9pbnQ6IHN0cmluZ1xuVHlwZTogc3RyaW5nXG5JZGVudGlmaWVyOiBzdHJpbmdcbk1vdW50T3B0aW9ucz86IHN0cmluZ1xuTG9jYXRpb246IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBFbnZpcm9ubWVudCB7XG5UeXBlOiBzdHJpbmdcbkVudmlyb25tZW50VmFyaWFibGVzPzogRW52aXJvbm1lbnRWYXJpYWJsZVtdXG5GbGVldD86IFByb2plY3RGbGVldFxuUHJpdmlsZWdlZE1vZGU/OiBib29sZWFuXG5JbWFnZVB1bGxDcmVkZW50aWFsc1R5cGU/OiBzdHJpbmdcbkltYWdlOiBzdHJpbmdcblJlZ2lzdHJ5Q3JlZGVudGlhbD86IFJlZ2lzdHJ5Q3JlZGVudGlhbFxuQ29tcHV0ZVR5cGU6IHN0cmluZ1xuRG9ja2VyU2VydmVyPzogRG9ja2VyU2VydmVyXG5DZXJ0aWZpY2F0ZT86IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBFbnZpcm9ubWVudFZhcmlhYmxlIHtcblZhbHVlOiBzdHJpbmdcblR5cGU/OiBzdHJpbmdcbk5hbWU6IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0RmxlZXQge1xuRmxlZXRBcm4/OiBzdHJpbmdcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0cnlDcmVkZW50aWFsIHtcbkNyZWRlbnRpYWw6IHN0cmluZ1xuQ3JlZGVudGlhbFByb3ZpZGVyOiBzdHJpbmdcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRG9ja2VyU2VydmVyIHtcbkNvbXB1dGVUeXBlOiBzdHJpbmdcblNlY3VyaXR5R3JvdXBJZHM/OiBzdHJpbmdbXVxufVxuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0QnVpbGRCYXRjaENvbmZpZyB7XG5Db21iaW5lQXJ0aWZhY3RzPzogYm9vbGVhblxuU2VydmljZVJvbGU/OiBzdHJpbmdcbkJhdGNoUmVwb3J0TW9kZT86IHN0cmluZ1xuVGltZW91dEluTWlucz86IG51bWJlclxuUmVzdHJpY3Rpb25zPzogQmF0Y2hSZXN0cmljdGlvbnNcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQmF0Y2hSZXN0cmljdGlvbnMge1xuQ29tcHV0ZVR5cGVzQWxsb3dlZD86IHN0cmluZ1tdXG5NYXhpbXVtQnVpbGRzQWxsb3dlZD86IG51bWJlclxufVxuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0Q2FjaGUge1xuTW9kZXM/OiBzdHJpbmdbXVxuVHlwZTogc3RyaW5nXG5DYWNoZU5hbWVzcGFjZT86IHN0cmluZ1xuTG9jYXRpb24/OiBzdHJpbmdcbn1cbiJdfQ==
@@ -106,6 +106,7 @@ export interface ServiceManagedEc2 {
106
106
  export interface ServiceManagedEc2FleetConfiguration {
107
107
  InstanceCapabilities: ServiceManagedEc2InstanceCapabilities;
108
108
  InstanceMarketOptions: ServiceManagedEc2InstanceMarketOptions;
109
+ VpcConfiguration?: VpcConfiguration;
109
110
  StorageProfileId?: string;
110
111
  }
111
112
  export interface ServiceManagedEc2InstanceCapabilities {
@@ -155,6 +156,9 @@ export interface AcceleratorSelection {
155
156
  export interface ServiceManagedEc2InstanceMarketOptions {
156
157
  Type: Ec2MarketType;
157
158
  }
159
+ export interface VpcConfiguration {
160
+ ResourceConfigurationArns?: string[];
161
+ }
158
162
  export interface HostConfiguration {
159
163
  ScriptBody: string;
160
164
  ScriptTimeoutSeconds?: number;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWRlYWRsaW5lLWZsZWV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWRlYWRsaW5lLWZsZWV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBGbGVldENvbmZpZ3VyYXRpb24gPSAoQ3VzdG9tZXJNYW5hZ2VkIHwgU2VydmljZU1hbmFnZWRFYzIpXG5leHBvcnQgdHlwZSBBdXRvU2NhbGluZ01vZGUgPSAoXCJOT19TQ0FMSU5HXCIgfCBcIkVWRU5UX0JBU0VEX0FVVE9fU0NBTElOR1wiKVxuZXhwb3J0IHR5cGUgQWNjZWxlcmF0b3JUeXBlID0gXCJncHVcIlxuZXhwb3J0IHR5cGUgQ3VzdG9tZXJNYW5hZ2VkRmxlZXRPcGVyYXRpbmdTeXN0ZW1GYW1pbHkgPSAoXCJXSU5ET1dTXCIgfCBcIkxJTlVYXCIgfCBcIk1BQ09TXCIpXG5leHBvcnQgdHlwZSBDcHVBcmNoaXRlY3R1cmVUeXBlID0gKFwieDg2XzY0XCIgfCBcImFybTY0XCIpXG5leHBvcnQgdHlwZSBUYWdQcm9wYWdhdGlvbk1vZGUgPSAoXCJOT19QUk9QQUdBVElPTlwiIHwgXCJQUk9QQUdBVEVfVEFHU19UT19XT1JLRVJTX0FUX0xBVU5DSFwiKVxuZXhwb3J0IHR5cGUgU2VydmljZU1hbmFnZWRGbGVldE9wZXJhdGluZ1N5c3RlbUZhbWlseSA9IChcIkxJTlVYXCIgfCBcIldJTkRPV1NcIilcbmV4cG9ydCB0eXBlIEVjMk1hcmtldFR5cGUgPSAoXCJvbi1kZW1hbmRcIiB8IFwic3BvdFwiKVxuZXhwb3J0IHR5cGUgRmxlZXRTdGF0dXMgPSAoXCJBQ1RJVkVcIiB8IFwiQ1JFQVRFX0lOX1BST0dSRVNTXCIgfCBcIlVQREFURV9JTl9QUk9HUkVTU1wiIHwgXCJDUkVBVEVfRkFJTEVEXCIgfCBcIlVQREFURV9GQUlMRURcIilcblxuLyoqXG4gKiBEZWZpbml0aW9uIG9mIEFXUzo6RGVhZGxpbmU6OkZsZWV0IFJlc291cmNlIFR5cGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0RFQURMSU5FX0ZMRUVUIHtcbkNhcGFiaWxpdGllcz86IEZsZWV0Q2FwYWJpbGl0aWVzXG5Db25maWd1cmF0aW9uOiBGbGVldENvbmZpZ3VyYXRpb25cbkRlc2NyaXB0aW9uPzogc3RyaW5nXG5EaXNwbGF5TmFtZTogc3RyaW5nXG5GYXJtSWQ6IHN0cmluZ1xuRmxlZXRJZD86IHN0cmluZ1xuSG9zdENvbmZpZ3VyYXRpb24/OiBIb3N0Q29uZmlndXJhdGlvblxuTWF4V29ya2VyQ291bnQ6IG51bWJlclxuTWluV29ya2VyQ291bnQ/OiBudW1iZXJcblJvbGVBcm46IHN0cmluZ1xuU3RhdHVzPzogRmxlZXRTdGF0dXNcbldvcmtlckNvdW50PzogbnVtYmVyXG5Bcm4/OiBzdHJpbmdcbi8qKlxuICogQW4gYXJyYXkgb2Yga2V5LXZhbHVlIHBhaXJzIHRvIGFwcGx5IHRvIHRoaXMgcmVzb3VyY2UuXG4gKiBcbiAqIEBtYXhJdGVtcyA1MFxuICovXG5UYWdzPzogVGFnW11cbn1cbmV4cG9ydCBpbnRlcmZhY2UgRmxlZXRDYXBhYmlsaXRpZXMge1xuLyoqXG4gKiBAbWluSXRlbXMgMVxuICogQG1heEl0ZW1zIDE1XG4gKi9cbkFtb3VudHM/OiBGbGVldEFtb3VudENhcGFiaWxpdHlbXVxuLyoqXG4gKiBAbWluSXRlbXMgMVxuICogQG1heEl0ZW1zIDE1XG4gKi9cbkF0dHJpYnV0ZXM/OiBGbGVldEF0dHJpYnV0ZUNhcGFiaWxpdHlbXVxufVxuZXhwb3J0IGludGVyZmFjZSBGbGVldEFtb3VudENhcGFiaWxpdHkge1xuTmFtZTogc3RyaW5nXG5NaW46IG51bWJlclxuTWF4PzogbnVtYmVyXG59XG5leHBvcnQgaW50ZXJmYWNlIEZsZWV0QXR0cmlidXRlQ2FwYWJpbGl0eSB7XG5OYW1lOiBzdHJpbmdcbi8qKlxuICogQG1pbkl0ZW1zIDFcbiAqIEBtYXhJdGVtcyAxMFxuICovXG5WYWx1ZXM6IHN0cmluZ1tdXG59XG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbWVyTWFuYWdlZCB7XG5DdXN0b21lck1hbmFnZWQ6IEN1c3RvbWVyTWFuYWdlZEZsZWV0Q29uZmlndXJhdGlvblxufVxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21lck1hbmFnZWRGbGVldENvbmZpZ3VyYXRpb24ge1xuTW9kZTogQXV0b1NjYWxpbmdNb2RlXG5Xb3JrZXJDYXBhYmlsaXRpZXM6IEN1c3RvbWVyTWFuYWdlZFdvcmtlckNhcGFiaWxpdGllc1xuU3RvcmFnZVByb2ZpbGVJZD86IHN0cmluZ1xuVGFnUHJvcGFnYXRpb25Nb2RlPzogVGFnUHJvcGFnYXRpb25Nb2RlXG59XG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbWVyTWFuYWdlZFdvcmtlckNhcGFiaWxpdGllcyB7XG5WQ3B1Q291bnQ6IFZDcHVDb3VudFJhbmdlXG5NZW1vcnlNaUI6IE1lbW9yeU1pQlJhbmdlXG5BY2NlbGVyYXRvclR5cGVzPzogQWNjZWxlcmF0b3JUeXBlW11cbkFjY2VsZXJhdG9yQ291bnQ/OiBBY2NlbGVyYXRvckNvdW50UmFuZ2VcbkFjY2VsZXJhdG9yVG90YWxNZW1vcnlNaUI/OiBBY2NlbGVyYXRvclRvdGFsTWVtb3J5TWlCUmFuZ2Vcbk9zRmFtaWx5OiBDdXN0b21lck1hbmFnZWRGbGVldE9wZXJhdGluZ1N5c3RlbUZhbWlseVxuQ3B1QXJjaGl0ZWN0dXJlVHlwZTogQ3B1QXJjaGl0ZWN0dXJlVHlwZVxuLyoqXG4gKiBAbWluSXRlbXMgMVxuICogQG1heEl0ZW1zIDE1XG4gKi9cbkN1c3RvbUFtb3VudHM/OiBGbGVldEFtb3VudENhcGFiaWxpdHlbXVxuLyoqXG4gKiBAbWluSXRlbXMgMVxuICogQG1heEl0ZW1zIDE1XG4gKi9cbkN1c3RvbUF0dHJpYnV0ZXM/OiBGbGVldEF0dHJpYnV0ZUNhcGFiaWxpdHlbXVxufVxuZXhwb3J0IGludGVyZmFjZSBWQ3B1Q291bnRSYW5nZSB7XG5NaW46IG51bWJlclxuTWF4PzogbnVtYmVyXG59XG5leHBvcnQgaW50ZXJmYWNlIE1lbW9yeU1pQlJhbmdlIHtcbk1pbjogbnVtYmVyXG5NYXg/OiBudW1iZXJcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQWNjZWxlcmF0b3JDb3VudFJhbmdlIHtcbk1pbjogbnVtYmVyXG5NYXg/OiBudW1iZXJcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQWNjZWxlcmF0b3JUb3RhbE1lbW9yeU1pQlJhbmdlIHtcbk1pbjogbnVtYmVyXG5NYXg/OiBudW1iZXJcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZU1hbmFnZWRFYzIge1xuU2VydmljZU1hbmFnZWRFYzI6IFNlcnZpY2VNYW5hZ2VkRWMyRmxlZXRDb25maWd1cmF0aW9uXG59XG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VNYW5hZ2VkRWMyRmxlZXRDb25maWd1cmF0aW9uIHtcbkluc3RhbmNlQ2FwYWJpbGl0aWVzOiBTZXJ2aWNlTWFuYWdlZEVjMkluc3RhbmNlQ2FwYWJpbGl0aWVzXG5JbnN0YW5jZU1hcmtldE9wdGlvbnM6IFNlcnZpY2VNYW5hZ2VkRWMySW5zdGFuY2VNYXJrZXRPcHRpb25zXG5TdG9yYWdlUHJvZmlsZUlkPzogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VNYW5hZ2VkRWMySW5zdGFuY2VDYXBhYmlsaXRpZXMge1xuVkNwdUNvdW50OiBWQ3B1Q291bnRSYW5nZVxuTWVtb3J5TWlCOiBNZW1vcnlNaUJSYW5nZVxuT3NGYW1pbHk6IFNlcnZpY2VNYW5hZ2VkRmxlZXRPcGVyYXRpbmdTeXN0ZW1GYW1pbHlcbkNwdUFyY2hpdGVjdHVyZVR5cGU6IENwdUFyY2hpdGVjdHVyZVR5cGVcblJvb3RFYnNWb2x1bWU/OiBFYzJFYnNWb2x1bWVcbkFjY2VsZXJhdG9yQ2FwYWJpbGl0aWVzPzogQWNjZWxlcmF0b3JDYXBhYmlsaXRpZXNcbi8qKlxuICogQG1pbkl0ZW1zIDFcbiAqIEBtYXhJdGVtcyAxMDBcbiAqL1xuQWxsb3dlZEluc3RhbmNlVHlwZXM/OiBzdHJpbmdbXVxuLyoqXG4gKiBAbWluSXRlbXMgMVxuICogQG1heEl0ZW1zIDEwMFxuICovXG5FeGNsdWRlZEluc3RhbmNlVHlwZXM/OiBzdHJpbmdbXVxuLyoqXG4gKiBAbWluSXRlbXMgMVxuICogQG1heEl0ZW1zIDE1XG4gKi9cbkN1c3RvbUFtb3VudHM/OiBGbGVldEFtb3VudENhcGFiaWxpdHlbXVxuLyoqXG4gKiBAbWluSXRlbXMgMVxuICogQG1heEl0ZW1zIDE1XG4gKi9cbkN1c3RvbUF0dHJpYnV0ZXM/OiBGbGVldEF0dHJpYnV0ZUNhcGFiaWxpdHlbXVxufVxuZXhwb3J0IGludGVyZmFjZSBFYzJFYnNWb2x1bWUge1xuU2l6ZUdpQj86IG51bWJlclxuSW9wcz86IG51bWJlclxuVGhyb3VnaHB1dE1pQj86IG51bWJlclxufVxuZXhwb3J0IGludGVyZmFjZSBBY2NlbGVyYXRvckNhcGFiaWxpdGllcyB7XG4vKipcbiAqIEBtaW5JdGVtcyAxXG4gKi9cblNlbGVjdGlvbnM6IEFjY2VsZXJhdG9yU2VsZWN0aW9uW11cbkNvdW50PzogQWNjZWxlcmF0b3JDb3VudFJhbmdlXG59XG5leHBvcnQgaW50ZXJmYWNlIEFjY2VsZXJhdG9yU2VsZWN0aW9uIHtcbk5hbWU6IChcInQ0XCIgfCBcImExMGdcIiB8IFwibDRcIiB8IFwibDQwc1wiKVxuUnVudGltZT86IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlTWFuYWdlZEVjMkluc3RhbmNlTWFya2V0T3B0aW9ucyB7XG5UeXBlOiBFYzJNYXJrZXRUeXBlXG59XG5leHBvcnQgaW50ZXJmYWNlIEhvc3RDb25maWd1cmF0aW9uIHtcblNjcmlwdEJvZHk6IHN0cmluZ1xuU2NyaXB0VGltZW91dFNlY29uZHM/OiBudW1iZXJcbn1cbi8qKlxuICogQSBrZXktdmFsdWUgcGFpciB0byBhc3NvY2lhdGUgd2l0aCBhIHJlc291cmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG4vKipcbiAqIFRoZSBrZXkgbmFtZSBvZiB0aGUgdGFnLiBZb3UgY2FuIHNwZWNpZnkgYSB2YWx1ZSB0aGF0IGlzIDEgdG8gMTI3IFVuaWNvZGUgY2hhcmFjdGVycyBpbiBsZW5ndGggYW5kIGNhbm5vdCBiZSBwcmVmaXhlZCB3aXRoIGF3czouIFlvdSBjYW4gdXNlIGFueSBvZiB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcnM6IHRoZSBzZXQgb2YgVW5pY29kZSBsZXR0ZXJzLCBkaWdpdHMsIHdoaXRlc3BhY2UsIF8sIC4sIC8sID0sICssIGFuZCAtLiBcbiAqL1xuS2V5OiBzdHJpbmdcbi8qKlxuICogVGhlIHZhbHVlIGZvciB0aGUgdGFnLiBZb3UgY2FuIHNwZWNpZnkgYSB2YWx1ZSB0aGF0IGlzIDEgdG8gMjU1IFVuaWNvZGUgY2hhcmFjdGVycyBpbiBsZW5ndGggYW5kIGNhbm5vdCBiZSBwcmVmaXhlZCB3aXRoIGF3czouIFlvdSBjYW4gdXNlIGFueSBvZiB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcnM6IHRoZSBzZXQgb2YgVW5pY29kZSBsZXR0ZXJzLCBkaWdpdHMsIHdoaXRlc3BhY2UsIF8sIC4sIC8sID0sICssIGFuZCAtLiBcbiAqL1xuVmFsdWU6IHN0cmluZ1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWRlYWRsaW5lLWZsZWV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWRlYWRsaW5lLWZsZWV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBGbGVldENvbmZpZ3VyYXRpb24gPSAoQ3VzdG9tZXJNYW5hZ2VkIHwgU2VydmljZU1hbmFnZWRFYzIpXG5leHBvcnQgdHlwZSBBdXRvU2NhbGluZ01vZGUgPSAoXCJOT19TQ0FMSU5HXCIgfCBcIkVWRU5UX0JBU0VEX0FVVE9fU0NBTElOR1wiKVxuZXhwb3J0IHR5cGUgQWNjZWxlcmF0b3JUeXBlID0gXCJncHVcIlxuZXhwb3J0IHR5cGUgQ3VzdG9tZXJNYW5hZ2VkRmxlZXRPcGVyYXRpbmdTeXN0ZW1GYW1pbHkgPSAoXCJXSU5ET1dTXCIgfCBcIkxJTlVYXCIgfCBcIk1BQ09TXCIpXG5leHBvcnQgdHlwZSBDcHVBcmNoaXRlY3R1cmVUeXBlID0gKFwieDg2XzY0XCIgfCBcImFybTY0XCIpXG5leHBvcnQgdHlwZSBUYWdQcm9wYWdhdGlvbk1vZGUgPSAoXCJOT19QUk9QQUdBVElPTlwiIHwgXCJQUk9QQUdBVEVfVEFHU19UT19XT1JLRVJTX0FUX0xBVU5DSFwiKVxuZXhwb3J0IHR5cGUgU2VydmljZU1hbmFnZWRGbGVldE9wZXJhdGluZ1N5c3RlbUZhbWlseSA9IChcIkxJTlVYXCIgfCBcIldJTkRPV1NcIilcbmV4cG9ydCB0eXBlIEVjMk1hcmtldFR5cGUgPSAoXCJvbi1kZW1hbmRcIiB8IFwic3BvdFwiKVxuZXhwb3J0IHR5cGUgRmxlZXRTdGF0dXMgPSAoXCJBQ1RJVkVcIiB8IFwiQ1JFQVRFX0lOX1BST0dSRVNTXCIgfCBcIlVQREFURV9JTl9QUk9HUkVTU1wiIHwgXCJDUkVBVEVfRkFJTEVEXCIgfCBcIlVQREFURV9GQUlMRURcIilcblxuLyoqXG4gKiBEZWZpbml0aW9uIG9mIEFXUzo6RGVhZGxpbmU6OkZsZWV0IFJlc291cmNlIFR5cGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0RFQURMSU5FX0ZMRUVUIHtcbkNhcGFiaWxpdGllcz86IEZsZWV0Q2FwYWJpbGl0aWVzXG5Db25maWd1cmF0aW9uOiBGbGVldENvbmZpZ3VyYXRpb25cbkRlc2NyaXB0aW9uPzogc3RyaW5nXG5EaXNwbGF5TmFtZTogc3RyaW5nXG5GYXJtSWQ6IHN0cmluZ1xuRmxlZXRJZD86IHN0cmluZ1xuSG9zdENvbmZpZ3VyYXRpb24/OiBIb3N0Q29uZmlndXJhdGlvblxuTWF4V29ya2VyQ291bnQ6IG51bWJlclxuTWluV29ya2VyQ291bnQ/OiBudW1iZXJcblJvbGVBcm46IHN0cmluZ1xuU3RhdHVzPzogRmxlZXRTdGF0dXNcbldvcmtlckNvdW50PzogbnVtYmVyXG5Bcm4/OiBzdHJpbmdcbi8qKlxuICogQW4gYXJyYXkgb2Yga2V5LXZhbHVlIHBhaXJzIHRvIGFwcGx5IHRvIHRoaXMgcmVzb3VyY2UuXG4gKiBcbiAqIEBtYXhJdGVtcyA1MFxuICovXG5UYWdzPzogVGFnW11cbn1cbmV4cG9ydCBpbnRlcmZhY2UgRmxlZXRDYXBhYmlsaXRpZXMge1xuLyoqXG4gKiBAbWluSXRlbXMgMVxuICogQG1heEl0ZW1zIDE1XG4gKi9cbkFtb3VudHM/OiBGbGVldEFtb3VudENhcGFiaWxpdHlbXVxuLyoqXG4gKiBAbWluSXRlbXMgMVxuICogQG1heEl0ZW1zIDE1XG4gKi9cbkF0dHJpYnV0ZXM/OiBGbGVldEF0dHJpYnV0ZUNhcGFiaWxpdHlbXVxufVxuZXhwb3J0IGludGVyZmFjZSBGbGVldEFtb3VudENhcGFiaWxpdHkge1xuTmFtZTogc3RyaW5nXG5NaW46IG51bWJlclxuTWF4PzogbnVtYmVyXG59XG5leHBvcnQgaW50ZXJmYWNlIEZsZWV0QXR0cmlidXRlQ2FwYWJpbGl0eSB7XG5OYW1lOiBzdHJpbmdcbi8qKlxuICogQG1pbkl0ZW1zIDFcbiAqIEBtYXhJdGVtcyAxMFxuICovXG5WYWx1ZXM6IHN0cmluZ1tdXG59XG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbWVyTWFuYWdlZCB7XG5DdXN0b21lck1hbmFnZWQ6IEN1c3RvbWVyTWFuYWdlZEZsZWV0Q29uZmlndXJhdGlvblxufVxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21lck1hbmFnZWRGbGVldENvbmZpZ3VyYXRpb24ge1xuTW9kZTogQXV0b1NjYWxpbmdNb2RlXG5Xb3JrZXJDYXBhYmlsaXRpZXM6IEN1c3RvbWVyTWFuYWdlZFdvcmtlckNhcGFiaWxpdGllc1xuU3RvcmFnZVByb2ZpbGVJZD86IHN0cmluZ1xuVGFnUHJvcGFnYXRpb25Nb2RlPzogVGFnUHJvcGFnYXRpb25Nb2RlXG59XG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbWVyTWFuYWdlZFdvcmtlckNhcGFiaWxpdGllcyB7XG5WQ3B1Q291bnQ6IFZDcHVDb3VudFJhbmdlXG5NZW1vcnlNaUI6IE1lbW9yeU1pQlJhbmdlXG5BY2NlbGVyYXRvclR5cGVzPzogQWNjZWxlcmF0b3JUeXBlW11cbkFjY2VsZXJhdG9yQ291bnQ/OiBBY2NlbGVyYXRvckNvdW50UmFuZ2VcbkFjY2VsZXJhdG9yVG90YWxNZW1vcnlNaUI/OiBBY2NlbGVyYXRvclRvdGFsTWVtb3J5TWlCUmFuZ2Vcbk9zRmFtaWx5OiBDdXN0b21lck1hbmFnZWRGbGVldE9wZXJhdGluZ1N5c3RlbUZhbWlseVxuQ3B1QXJjaGl0ZWN0dXJlVHlwZTogQ3B1QXJjaGl0ZWN0dXJlVHlwZVxuLyoqXG4gKiBAbWluSXRlbXMgMVxuICogQG1heEl0ZW1zIDE1XG4gKi9cbkN1c3RvbUFtb3VudHM/OiBGbGVldEFtb3VudENhcGFiaWxpdHlbXVxuLyoqXG4gKiBAbWluSXRlbXMgMVxuICogQG1heEl0ZW1zIDE1XG4gKi9cbkN1c3RvbUF0dHJpYnV0ZXM/OiBGbGVldEF0dHJpYnV0ZUNhcGFiaWxpdHlbXVxufVxuZXhwb3J0IGludGVyZmFjZSBWQ3B1Q291bnRSYW5nZSB7XG5NaW46IG51bWJlclxuTWF4PzogbnVtYmVyXG59XG5leHBvcnQgaW50ZXJmYWNlIE1lbW9yeU1pQlJhbmdlIHtcbk1pbjogbnVtYmVyXG5NYXg/OiBudW1iZXJcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQWNjZWxlcmF0b3JDb3VudFJhbmdlIHtcbk1pbjogbnVtYmVyXG5NYXg/OiBudW1iZXJcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQWNjZWxlcmF0b3JUb3RhbE1lbW9yeU1pQlJhbmdlIHtcbk1pbjogbnVtYmVyXG5NYXg/OiBudW1iZXJcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZU1hbmFnZWRFYzIge1xuU2VydmljZU1hbmFnZWRFYzI6IFNlcnZpY2VNYW5hZ2VkRWMyRmxlZXRDb25maWd1cmF0aW9uXG59XG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VNYW5hZ2VkRWMyRmxlZXRDb25maWd1cmF0aW9uIHtcbkluc3RhbmNlQ2FwYWJpbGl0aWVzOiBTZXJ2aWNlTWFuYWdlZEVjMkluc3RhbmNlQ2FwYWJpbGl0aWVzXG5JbnN0YW5jZU1hcmtldE9wdGlvbnM6IFNlcnZpY2VNYW5hZ2VkRWMySW5zdGFuY2VNYXJrZXRPcHRpb25zXG5WcGNDb25maWd1cmF0aW9uPzogVnBjQ29uZmlndXJhdGlvblxuU3RvcmFnZVByb2ZpbGVJZD86IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlTWFuYWdlZEVjMkluc3RhbmNlQ2FwYWJpbGl0aWVzIHtcblZDcHVDb3VudDogVkNwdUNvdW50UmFuZ2Vcbk1lbW9yeU1pQjogTWVtb3J5TWlCUmFuZ2Vcbk9zRmFtaWx5OiBTZXJ2aWNlTWFuYWdlZEZsZWV0T3BlcmF0aW5nU3lzdGVtRmFtaWx5XG5DcHVBcmNoaXRlY3R1cmVUeXBlOiBDcHVBcmNoaXRlY3R1cmVUeXBlXG5Sb290RWJzVm9sdW1lPzogRWMyRWJzVm9sdW1lXG5BY2NlbGVyYXRvckNhcGFiaWxpdGllcz86IEFjY2VsZXJhdG9yQ2FwYWJpbGl0aWVzXG4vKipcbiAqIEBtaW5JdGVtcyAxXG4gKiBAbWF4SXRlbXMgMTAwXG4gKi9cbkFsbG93ZWRJbnN0YW5jZVR5cGVzPzogc3RyaW5nW11cbi8qKlxuICogQG1pbkl0ZW1zIDFcbiAqIEBtYXhJdGVtcyAxMDBcbiAqL1xuRXhjbHVkZWRJbnN0YW5jZVR5cGVzPzogc3RyaW5nW11cbi8qKlxuICogQG1pbkl0ZW1zIDFcbiAqIEBtYXhJdGVtcyAxNVxuICovXG5DdXN0b21BbW91bnRzPzogRmxlZXRBbW91bnRDYXBhYmlsaXR5W11cbi8qKlxuICogQG1pbkl0ZW1zIDFcbiAqIEBtYXhJdGVtcyAxNVxuICovXG5DdXN0b21BdHRyaWJ1dGVzPzogRmxlZXRBdHRyaWJ1dGVDYXBhYmlsaXR5W11cbn1cbmV4cG9ydCBpbnRlcmZhY2UgRWMyRWJzVm9sdW1lIHtcblNpemVHaUI/OiBudW1iZXJcbklvcHM/OiBudW1iZXJcblRocm91Z2hwdXRNaUI/OiBudW1iZXJcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQWNjZWxlcmF0b3JDYXBhYmlsaXRpZXMge1xuLyoqXG4gKiBAbWluSXRlbXMgMVxuICovXG5TZWxlY3Rpb25zOiBBY2NlbGVyYXRvclNlbGVjdGlvbltdXG5Db3VudD86IEFjY2VsZXJhdG9yQ291bnRSYW5nZVxufVxuZXhwb3J0IGludGVyZmFjZSBBY2NlbGVyYXRvclNlbGVjdGlvbiB7XG5OYW1lOiAoXCJ0NFwiIHwgXCJhMTBnXCIgfCBcImw0XCIgfCBcImw0MHNcIilcblJ1bnRpbWU/OiBzdHJpbmdcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZU1hbmFnZWRFYzJJbnN0YW5jZU1hcmtldE9wdGlvbnMge1xuVHlwZTogRWMyTWFya2V0VHlwZVxufVxuZXhwb3J0IGludGVyZmFjZSBWcGNDb25maWd1cmF0aW9uIHtcblJlc291cmNlQ29uZmlndXJhdGlvbkFybnM/OiBzdHJpbmdbXVxufVxuZXhwb3J0IGludGVyZmFjZSBIb3N0Q29uZmlndXJhdGlvbiB7XG5TY3JpcHRCb2R5OiBzdHJpbmdcblNjcmlwdFRpbWVvdXRTZWNvbmRzPzogbnVtYmVyXG59XG4vKipcbiAqIEEga2V5LXZhbHVlIHBhaXIgdG8gYXNzb2NpYXRlIHdpdGggYSByZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWcge1xuLyoqXG4gKiBUaGUga2V5IG5hbWUgb2YgdGhlIHRhZy4gWW91IGNhbiBzcGVjaWZ5IGEgdmFsdWUgdGhhdCBpcyAxIHRvIDEyNyBVbmljb2RlIGNoYXJhY3RlcnMgaW4gbGVuZ3RoIGFuZCBjYW5ub3QgYmUgcHJlZml4ZWQgd2l0aCBhd3M6LiBZb3UgY2FuIHVzZSBhbnkgb2YgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiB0aGUgc2V0IG9mIFVuaWNvZGUgbGV0dGVycywgZGlnaXRzLCB3aGl0ZXNwYWNlLCBfLCAuLCAvLCA9LCArLCBhbmQgLS4gXG4gKi9cbktleTogc3RyaW5nXG4vKipcbiAqIFRoZSB2YWx1ZSBmb3IgdGhlIHRhZy4gWW91IGNhbiBzcGVjaWZ5IGEgdmFsdWUgdGhhdCBpcyAxIHRvIDI1NSBVbmljb2RlIGNoYXJhY3RlcnMgaW4gbGVuZ3RoIGFuZCBjYW5ub3QgYmUgcHJlZml4ZWQgd2l0aCBhd3M6LiBZb3UgY2FuIHVzZSBhbnkgb2YgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiB0aGUgc2V0IG9mIFVuaWNvZGUgbGV0dGVycywgZGlnaXRzLCB3aGl0ZXNwYWNlLCBfLCAuLCAvLCA9LCArLCBhbmQgLS4gXG4gKi9cblZhbHVlOiBzdHJpbmdcbn1cbiJdfQ==
@@ -8,6 +8,25 @@ export interface _AWS_DEADLINE_MONITOR {
8
8
  MonitorId?: string;
9
9
  RoleArn: string;
10
10
  Subdomain: string;
11
+ /**
12
+ * An array of key-value pairs to apply to this resource.
13
+ *
14
+ * @maxItems 50
15
+ */
16
+ Tags?: Tag[];
11
17
  Url?: string;
12
18
  Arn?: string;
13
19
  }
20
+ /**
21
+ * A key-value pair to associate with a resource.
22
+ */
23
+ export interface Tag {
24
+ /**
25
+ * The key name of the tag. You can specify a value that is 1 to 127 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.
26
+ */
27
+ Key: string;
28
+ /**
29
+ * The value for the tag. You can specify a value that is 1 to 255 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.
30
+ */
31
+ Value: string;
32
+ }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWRlYWRsaW5lLW1vbml0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtZGVhZGxpbmUtbW9uaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEZWZpbml0aW9uIG9mIEFXUzo6RGVhZGxpbmU6Ok1vbml0b3IgUmVzb3VyY2UgVHlwZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIF9BV1NfREVBRExJTkVfTU9OSVRPUiB7XG5EaXNwbGF5TmFtZTogc3RyaW5nXG5JZGVudGl0eUNlbnRlckFwcGxpY2F0aW9uQXJuPzogc3RyaW5nXG5JZGVudGl0eUNlbnRlckluc3RhbmNlQXJuOiBzdHJpbmdcbk1vbml0b3JJZD86IHN0cmluZ1xuUm9sZUFybjogc3RyaW5nXG5TdWJkb21haW46IHN0cmluZ1xuVXJsPzogc3RyaW5nXG5Bcm4/OiBzdHJpbmdcbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWRlYWRsaW5lLW1vbml0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtZGVhZGxpbmUtbW9uaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEZWZpbml0aW9uIG9mIEFXUzo6RGVhZGxpbmU6Ok1vbml0b3IgUmVzb3VyY2UgVHlwZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIF9BV1NfREVBRExJTkVfTU9OSVRPUiB7XG5EaXNwbGF5TmFtZTogc3RyaW5nXG5JZGVudGl0eUNlbnRlckFwcGxpY2F0aW9uQXJuPzogc3RyaW5nXG5JZGVudGl0eUNlbnRlckluc3RhbmNlQXJuOiBzdHJpbmdcbk1vbml0b3JJZD86IHN0cmluZ1xuUm9sZUFybjogc3RyaW5nXG5TdWJkb21haW46IHN0cmluZ1xuLyoqXG4gKiBBbiBhcnJheSBvZiBrZXktdmFsdWUgcGFpcnMgdG8gYXBwbHkgdG8gdGhpcyByZXNvdXJjZS5cbiAqIFxuICogQG1heEl0ZW1zIDUwXG4gKi9cblRhZ3M/OiBUYWdbXVxuVXJsPzogc3RyaW5nXG5Bcm4/OiBzdHJpbmdcbn1cbi8qKlxuICogQSBrZXktdmFsdWUgcGFpciB0byBhc3NvY2lhdGUgd2l0aCBhIHJlc291cmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG4vKipcbiAqIFRoZSBrZXkgbmFtZSBvZiB0aGUgdGFnLiBZb3UgY2FuIHNwZWNpZnkgYSB2YWx1ZSB0aGF0IGlzIDEgdG8gMTI3IFVuaWNvZGUgY2hhcmFjdGVycyBpbiBsZW5ndGggYW5kIGNhbm5vdCBiZSBwcmVmaXhlZCB3aXRoIGF3czouIFlvdSBjYW4gdXNlIGFueSBvZiB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcnM6IHRoZSBzZXQgb2YgVW5pY29kZSBsZXR0ZXJzLCBkaWdpdHMsIHdoaXRlc3BhY2UsIF8sIC4sIC8sID0sICssIGFuZCAtLiBcbiAqL1xuS2V5OiBzdHJpbmdcbi8qKlxuICogVGhlIHZhbHVlIGZvciB0aGUgdGFnLiBZb3UgY2FuIHNwZWNpZnkgYSB2YWx1ZSB0aGF0IGlzIDEgdG8gMjU1IFVuaWNvZGUgY2hhcmFjdGVycyBpbiBsZW5ndGggYW5kIGNhbm5vdCBiZSBwcmVmaXhlZCB3aXRoIGF3czouIFlvdSBjYW4gdXNlIGFueSBvZiB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcnM6IHRoZSBzZXQgb2YgVW5pY29kZSBsZXR0ZXJzLCBkaWdpdHMsIHdoaXRlc3BhY2UsIF8sIC4sIC8sID0sICssIGFuZCAtLiBcbiAqL1xuVmFsdWU6IHN0cmluZ1xufVxuIl19
@@ -65,17 +65,6 @@ export interface LaunchTemplateData {
65
65
  * Indicates whether the instance is optimized for Amazon EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal Amazon EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS-optimized instance.
66
66
  */
67
67
  EbsOptimized?: boolean;
68
- /**
69
- * Deprecated.
70
- * Amazon Elastic Graphics reached end of life on January 8, 2024.
71
- */
72
- ElasticGpuSpecifications?: ElasticGpuSpecification[];
73
- /**
74
- * Amazon Elastic Inference is no longer available.
75
- * An elastic inference accelerator to associate with the instance. Elastic inference accelerators are a resource you can attach to your Amazon EC2 instances to accelerate your Deep Learning (DL) inference workloads.
76
- * You cannot specify accelerators from different generations in the same request.
77
- */
78
- ElasticInferenceAccelerators?: LaunchTemplateElasticInferenceAccelerator[];
79
68
  Placement?: Placement;
80
69
  /**
81
70
  * The network interfaces for the instance.
@@ -280,33 +269,6 @@ export interface IamInstanceProfile {
280
269
  */
281
270
  Name?: string;
282
271
  }
283
- /**
284
- * Amazon Elastic Graphics reached end of life on January 8, 2024.
285
- * Specifies a specification for an Elastic GPU for an Amazon EC2 launch template.
286
- * ``ElasticGpuSpecification`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).
287
- */
288
- export interface ElasticGpuSpecification {
289
- /**
290
- * The type of Elastic Graphics accelerator.
291
- */
292
- Type?: string;
293
- }
294
- /**
295
- * Amazon Elastic Inference is no longer available.
296
- * Specifies an elastic inference accelerator.
297
- * ``LaunchTemplateElasticInferenceAccelerator`` is a property of [AWS::EC2::LaunchTemplate LaunchTemplateData](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html).
298
- */
299
- export interface LaunchTemplateElasticInferenceAccelerator {
300
- /**
301
- * The type of elastic inference accelerator. The possible values are eia1.medium, eia1.large, and eia1.xlarge.
302
- */
303
- Type?: string;
304
- /**
305
- * The number of elastic inference accelerators to attach to the instance.
306
- * Default: 1
307
- */
308
- Count?: number;
309
- }
310
272
  /**
311
273
  * The placement for the instance.
312
274
  */
@@ -390,6 +352,7 @@ export interface NetworkInterface {
390
352
  * The number of IPv4 prefixes to be automatically assigned to the network interface. You cannot use this option if you use the ``Ipv4Prefix`` option.
391
353
  */
392
354
  Ipv4PrefixCount?: number;
355
+ EnaQueueCount?: number;
393
356
  /**
394
357
  * One or more IPv6 prefixes to be assigned to the network interface. You cannot use this option if you use the ``Ipv6PrefixCount`` option.
395
358
  */
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWVjMi1sYXVuY2h0ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3cy1lYzItbGF1bmNodGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGluc3RhbmNlIGZhbWlseSB0byB1c2UgYXMgdGhlIGJhc2VsaW5lIHJlZmVyZW5jZSBmb3IgQ1BVIHBlcmZvcm1hbmNlLiBBbGwgaW5zdGFuY2UgdHlwZXMgdGhhdCBtYXRjaCB5b3VyIHNwZWNpZmllZCBhdHRyaWJ1dGVzIGFyZSBjb21wYXJlZCBhZ2FpbnN0IHRoZSBDUFUgcGVyZm9ybWFuY2Ugb2YgdGhlIHJlZmVyZW5jZWQgaW5zdGFuY2UgZmFtaWx5LCByZWdhcmRsZXNzIG9mIENQVSBtYW51ZmFjdHVyZXIgb3IgYXJjaGl0ZWN0dXJlIGRpZmZlcmVuY2VzLlxuICovXG5leHBvcnQgdHlwZSBSZWZlcmVuY2VzID0gUmVmZXJlbmNlW11cblxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgbGF1bmNoIHRlbXBsYXRlLlxuICogIFRoZSBtaW5pbXVtIHJlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHNwZWNpZnlpbmcgYSBsYXVuY2ggdGVtcGxhdGUgYXJlIGFzIGZvbGxvd3M6XG4gKiAgICsgIFlvdSBtdXN0IHNwZWNpZnkgYXQgbGVhc3Qgb25lIHByb3BlcnR5IGZvciB0aGUgbGF1bmNoIHRlbXBsYXRlIGRhdGEuXG4gKiAgICsgIFlvdSBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGEgbmFtZSBmb3IgdGhlIGxhdW5jaCB0ZW1wbGF0ZS4gSWYgeW91IGRvIG5vdCBzcGVjaWZ5IGEgbmFtZSwgQ0ZOIGNyZWF0ZXMgYSBuYW1lIGZvciB5b3UuXG4gKiAgIFxuICogIEEgbGF1bmNoIHRlbXBsYXRlIGNhbiBjb250YWluIHNvbWUgb3IgYWxsIG9mIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIHRvIGxhdW5jaCBhbiBpbnN0YW5jZS4gV2hlbiB5b3UgbGF1bmNoIGFuIGluc3RhbmNlIHVzaW5nIGEgbGF1bmNoIHRlbXBsYXRlLCBpbnN0YW5jZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5vdCBzcGVjaWZpZWQgaW4gdGhlIGxhdW5jaCB0ZW1wbGF0ZSB1c2UgZGVmYXVsdCB2YWx1ZXMsIGV4Y2VwdCB0aGUgYGBJbWFnZUlkYGAgcHJvcGVydHksIHdoaWNoIGhhcyBubyBkZWZhdWx0IHZhbHVlLiBJZiB5b3UgZG8gbm90IHNwZWNpZnkgYW4gQU1JIElEIGZvciB0aGUgbGF1bmNoIHRlbXBsYXRlIGBgSW1hZ2VJZGBgIHByb3BlcnR5LCB5b3UgbXVzdCBzcGVjaWZ5IGFuIEFNSSBJRCBmb3IgdGhlIGluc3RhbmNlIGBgSW1hZ2VJZGBgIHByb3BlcnR5LlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0xhdW5jaCBhbiBpbnN0YW5jZSBmcm9tIGEgbGF1bmNoIHRlbXBsYXRlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWMyLWxhdW5jaC10ZW1wbGF0ZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIF9BV1NfRUMyX0xBVU5DSFRFTVBMQVRFIHtcbi8qKlxuICogQSBuYW1lIGZvciB0aGUgbGF1bmNoIHRlbXBsYXRlLlxuICovXG5MYXVuY2hUZW1wbGF0ZU5hbWU/OiBzdHJpbmdcbkxhdW5jaFRlbXBsYXRlRGF0YTogTGF1bmNoVGVtcGxhdGVEYXRhXG4vKipcbiAqIEEgZGVzY3JpcHRpb24gZm9yIHRoZSBmaXJzdCB2ZXJzaW9uIG9mIHRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gKi9cblZlcnNpb25EZXNjcmlwdGlvbj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdGFncyB0byBhcHBseSB0byB0aGUgbGF1bmNoIHRlbXBsYXRlIG9uIGNyZWF0aW9uLiBUbyB0YWcgdGhlIGxhdW5jaCB0ZW1wbGF0ZSwgdGhlIHJlc291cmNlIHR5cGUgbXVzdCBiZSBgYGxhdW5jaC10ZW1wbGF0ZWBgLlxuICogIFRvIHNwZWNpZnkgdGhlIHRhZ3MgZm9yIHJlc291cmNlcyB0aGF0IGFyZSBjcmVhdGVkIGR1cmluZyBpbnN0YW5jZSBsYXVuY2gsIHVzZSBbVGFnU3BlY2lmaWNhdGlvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEuaHRtbCNjZm4tZWMyLWxhdW5jaHRlbXBsYXRlLWxhdW5jaHRlbXBsYXRlZGF0YS10YWdzcGVjaWZpY2F0aW9ucykuXG4gKi9cblRhZ1NwZWNpZmljYXRpb25zPzogTGF1bmNoVGVtcGxhdGVUYWdTcGVjaWZpY2F0aW9uW11cbkxhdGVzdFZlcnNpb25OdW1iZXI/OiBzdHJpbmdcbkxhdW5jaFRlbXBsYXRlSWQ/OiBzdHJpbmdcbkRlZmF1bHRWZXJzaW9uTnVtYmVyPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGxhdW5jaCB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYXVuY2hUZW1wbGF0ZURhdGEge1xuLyoqXG4gKiBUaGUgbmFtZXMgb2YgdGhlIHNlY3VyaXR5IGdyb3Vwcy4gRm9yIGEgbm9uZGVmYXVsdCBWUEMsIHlvdSBtdXN0IHVzZSBzZWN1cml0eSBncm91cCBJRHMgaW5zdGVhZC5cbiAqICBJZiB5b3Ugc3BlY2lmeSBhIG5ldHdvcmsgaW50ZXJmYWNlLCB5b3UgbXVzdCBzcGVjaWZ5IGFueSBzZWN1cml0eSBncm91cHMgYXMgcGFydCBvZiB0aGUgbmV0d29yayBpbnRlcmZhY2UgaW5zdGVhZCBvZiB1c2luZyB0aGlzIHBhcmFtZXRlci5cbiAqL1xuU2VjdXJpdHlHcm91cHM/OiBzdHJpbmdbXVxuLyoqXG4gKiBUaGUgdGFncyB0byBhcHBseSB0byByZXNvdXJjZXMgdGhhdCBhcmUgY3JlYXRlZCBkdXJpbmcgaW5zdGFuY2UgbGF1bmNoLlxuICogIFRvIHRhZyB0aGUgbGF1bmNoIHRlbXBsYXRlIGl0c2VsZiwgdXNlIFtUYWdTcGVjaWZpY2F0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi1sYXVuY2h0ZW1wbGF0ZS5odG1sI2Nmbi1lYzItbGF1bmNodGVtcGxhdGUtdGFnc3BlY2lmaWNhdGlvbnMpLlxuICovXG5UYWdTcGVjaWZpY2F0aW9ucz86IFRhZ1NwZWNpZmljYXRpb25bXVxuTmV0d29ya1BlcmZvcm1hbmNlT3B0aW9ucz86IE5ldHdvcmtQZXJmb3JtYW5jZU9wdGlvbnNcbi8qKlxuICogVGhlIHVzZXIgZGF0YSB0byBtYWtlIGF2YWlsYWJsZSB0byB0aGUgaW5zdGFuY2UuIFlvdSBtdXN0IHByb3ZpZGUgYmFzZTY0LWVuY29kZWQgdGV4dC4gVXNlciBkYXRhIGlzIGxpbWl0ZWQgdG8gMTYgS0IuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1J1biBjb21tYW5kcyB3aGVuIHlvdSBsYXVuY2ggYW4gRUMyIGluc3RhbmNlIHdpdGggdXNlciBkYXRhIGlucHV0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvdXNlci1kYXRhLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlKi5cbiAqICBJZiB5b3UgYXJlIGNyZWF0aW5nIHRoZSBsYXVuY2ggdGVtcGxhdGUgZm9yIHVzZSB3aXRoIEJBVENILCB0aGUgdXNlciBkYXRhIG11c3QgYmUgcHJvdmlkZWQgaW4gdGhlIFtNSU1FIG11bHRpLXBhcnQgYXJjaGl2ZSBmb3JtYXRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9odHRwczovL2Nsb3VkaW5pdC5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvdG9waWNzL2Zvcm1hdC5odG1sI21pbWUtbXVsdGktcGFydC1hcmNoaXZlKS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQW1hem9uIEVDMiB1c2VyIGRhdGEgaW4gbGF1bmNoIHRlbXBsYXRlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JhdGNoL2xhdGVzdC91c2VyZ3VpZGUvbGF1bmNoLXRlbXBsYXRlcy5odG1sI2x0LXVzZXItZGF0YSkgaW4gdGhlICpVc2VyIEd1aWRlKi5cbiAqL1xuVXNlckRhdGE/OiBzdHJpbmdcbi8qKlxuICogVGhlIGJsb2NrIGRldmljZSBtYXBwaW5nLlxuICovXG5CbG9ja0RldmljZU1hcHBpbmdzPzogQmxvY2tEZXZpY2VNYXBwaW5nW11cbk1haW50ZW5hbmNlT3B0aW9ucz86IE1haW50ZW5hbmNlT3B0aW9uc1xuSWFtSW5zdGFuY2VQcm9maWxlPzogSWFtSW5zdGFuY2VQcm9maWxlXG4vKipcbiAqIFRoZSBJRCBvZiB0aGUga2VybmVsLlxuICogIFdlIHJlY29tbWVuZCB0aGF0IHlvdSB1c2UgUFYtR1JVQiBpbnN0ZWFkIG9mIGtlcm5lbHMgYW5kIFJBTSBkaXNrcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVXNlciBQcm92aWRlZCBLZXJuZWxzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvVXNlclByb3ZpZGVka2VybmVscy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKi9cbktlcm5lbElkPzogc3RyaW5nXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBpbnN0YW5jZSBpcyBvcHRpbWl6ZWQgZm9yIEFtYXpvbiBFQlMgSS9PLiBUaGlzIG9wdGltaXphdGlvbiBwcm92aWRlcyBkZWRpY2F0ZWQgdGhyb3VnaHB1dCB0byBBbWF6b24gRUJTIGFuZCBhbiBvcHRpbWl6ZWQgY29uZmlndXJhdGlvbiBzdGFjayB0byBwcm92aWRlIG9wdGltYWwgQW1hem9uIEVCUyBJL08gcGVyZm9ybWFuY2UuIFRoaXMgb3B0aW1pemF0aW9uIGlzbid0IGF2YWlsYWJsZSB3aXRoIGFsbCBpbnN0YW5jZSB0eXBlcy4gQWRkaXRpb25hbCB1c2FnZSBjaGFyZ2VzIGFwcGx5IHdoZW4gdXNpbmcgYW4gRUJTLW9wdGltaXplZCBpbnN0YW5jZS5cbiAqL1xuRWJzT3B0aW1pemVkPzogYm9vbGVhblxuLyoqXG4gKiBEZXByZWNhdGVkLlxuICogICBBbWF6b24gRWxhc3RpYyBHcmFwaGljcyByZWFjaGVkIGVuZCBvZiBsaWZlIG9uIEphbnVhcnkgOCwgMjAyNC5cbiAqL1xuRWxhc3RpY0dwdVNwZWNpZmljYXRpb25zPzogRWxhc3RpY0dwdVNwZWNpZmljYXRpb25bXVxuLyoqXG4gKiBBbWF6b24gRWxhc3RpYyBJbmZlcmVuY2UgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZS5cbiAqICAgQW4gZWxhc3RpYyBpbmZlcmVuY2UgYWNjZWxlcmF0b3IgdG8gYXNzb2NpYXRlIHdpdGggdGhlIGluc3RhbmNlLiBFbGFzdGljIGluZmVyZW5jZSBhY2NlbGVyYXRvcnMgYXJlIGEgcmVzb3VyY2UgeW91IGNhbiBhdHRhY2ggdG8geW91ciBBbWF6b24gRUMyIGluc3RhbmNlcyB0byBhY2NlbGVyYXRlIHlvdXIgRGVlcCBMZWFybmluZyAoREwpIGluZmVyZW5jZSB3b3JrbG9hZHMuXG4gKiAgWW91IGNhbm5vdCBzcGVjaWZ5IGFjY2VsZXJhdG9ycyBmcm9tIGRpZmZlcmVudCBnZW5lcmF0aW9ucyBpbiB0aGUgc2FtZSByZXF1ZXN0LlxuICovXG5FbGFzdGljSW5mZXJlbmNlQWNjZWxlcmF0b3JzPzogTGF1bmNoVGVtcGxhdGVFbGFzdGljSW5mZXJlbmNlQWNjZWxlcmF0b3JbXVxuUGxhY2VtZW50PzogUGxhY2VtZW50XG4vKipcbiAqIFRoZSBuZXR3b3JrIGludGVyZmFjZXMgZm9yIHRoZSBpbnN0YW5jZS5cbiAqL1xuTmV0d29ya0ludGVyZmFjZXM/OiBOZXR3b3JrSW50ZXJmYWNlW11cbkVuY2xhdmVPcHRpb25zPzogRW5jbGF2ZU9wdGlvbnNcbi8qKlxuICogVGhlIElEIG9mIHRoZSBBTUkuIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gc3BlY2lmeSBhIFN5c3RlbXMgTWFuYWdlciBwYXJhbWV0ZXIsIHdoaWNoIHdpbGwgcmVzb2x2ZSB0byBhbiBBTUkgSUQgb24gbGF1bmNoLlxuICogIFZhbGlkIGZvcm1hdHM6XG4gKiAgICsgICBgYGFtaS0wYWMzOTRkNmEzZXhhbXBsZWBgIFxuICogICArICAgYGByZXNvbHZlOnNzbTpwYXJhbWV0ZXItbmFtZWBgIFxuICogICArICAgYGByZXNvbHZlOnNzbTpwYXJhbWV0ZXItbmFtZTp2ZXJzaW9uLW51bWJlcmBgIFxuICogICArICAgYGByZXNvbHZlOnNzbTpwYXJhbWV0ZXItbmFtZTpsYWJlbGBgIFxuICogICBcbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtVc2UgYSBTeXN0ZW1zIE1hbmFnZXIgcGFyYW1ldGVyIHRvIGZpbmQgYW4gQU1JXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZmluZGluZy1hbi1hbWkuaHRtbCN1c2luZy1zeXN0ZW1zLW1hbmFnZXItcGFyYW1ldGVyLXRvLWZpbmQtQU1JKSBpbiB0aGUgKkFtYXpvbiBFbGFzdGljIENvbXB1dGUgQ2xvdWQgVXNlciBHdWlkZSouXG4gKi9cbkltYWdlSWQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIGluc3RhbmNlIHR5cGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBFQzIgaW5zdGFuY2UgdHlwZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9pbnN0YW5jZS10eXBlcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKiAgSWYgeW91IHNwZWNpZnkgYGBJbnN0YW5jZVR5cGVgYCwgeW91IGNhbid0IHNwZWNpZnkgYGBJbnN0YW5jZVJlcXVpcmVtZW50c2BgLlxuICovXG5JbnN0YW5jZVR5cGU/OiBzdHJpbmdcbk1vbml0b3Jpbmc/OiBNb25pdG9yaW5nXG5IaWJlcm5hdGlvbk9wdGlvbnM/OiBIaWJlcm5hdGlvbk9wdGlvbnNcbk1ldGFkYXRhT3B0aW9ucz86IE1ldGFkYXRhT3B0aW9uc1xuLyoqXG4gKiBUaGUgbGljZW5zZSBjb25maWd1cmF0aW9ucy5cbiAqL1xuTGljZW5zZVNwZWNpZmljYXRpb25zPzogTGljZW5zZVNwZWNpZmljYXRpb25bXVxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBhbiBpbnN0YW5jZSBzdG9wcyBvciB0ZXJtaW5hdGVzIHdoZW4geW91IGluaXRpYXRlIHNodXRkb3duIGZyb20gdGhlIGluc3RhbmNlICh1c2luZyB0aGUgb3BlcmF0aW5nIHN5c3RlbSBjb21tYW5kIGZvciBzeXN0ZW0gc2h1dGRvd24pLlxuICogIERlZmF1bHQ6IGBgc3RvcGBgXG4gKi9cbkluc3RhbmNlSW5pdGlhdGVkU2h1dGRvd25CZWhhdmlvcj86IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0byBlbmFibGUgdGhlIGluc3RhbmNlIGZvciBzdG9wIHByb3RlY3Rpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0VuYWJsZSBzdG9wIHByb3RlY3Rpb24gZm9yIHlvdXIgRUMyIGluc3RhbmNlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2VjMi1zdG9wLXByb3RlY3Rpb24uaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICovXG5EaXNhYmxlQXBpU3RvcD86IGJvb2xlYW5cbkNwdU9wdGlvbnM/OiBDcHVPcHRpb25zXG5Qcml2YXRlRG5zTmFtZU9wdGlvbnM/OiBQcml2YXRlRG5zTmFtZU9wdGlvbnNcbi8qKlxuICogVGhlIElEcyBvZiB0aGUgc2VjdXJpdHkgZ3JvdXBzLiBZb3UgY2FuIHNwZWNpZnkgdGhlIElEcyBvZiBleGlzdGluZyBzZWN1cml0eSBncm91cHMgYW5kIHJlZmVyZW5jZXMgdG8gcmVzb3VyY2VzIGNyZWF0ZWQgYnkgdGhlIHN0YWNrIHRlbXBsYXRlLlxuICogIElmIHlvdSBzcGVjaWZ5IGEgbmV0d29yayBpbnRlcmZhY2UsIHlvdSBtdXN0IHNwZWNpZnkgYW55IHNlY3VyaXR5IGdyb3VwcyBhcyBwYXJ0IG9mIHRoZSBuZXR3b3JrIGludGVyZmFjZSBpbnN0ZWFkLlxuICovXG5TZWN1cml0eUdyb3VwSWRzPzogc3RyaW5nW11cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGtleSBwYWlyLiBZb3UgY2FuIGNyZWF0ZSBhIGtleSBwYWlyIHVzaW5nIFtDcmVhdGVLZXlQYWlyXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZUtleVBhaXIuaHRtbCkgb3IgW0ltcG9ydEtleVBhaXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfSW1wb3J0S2V5UGFpci5odG1sKS5cbiAqICAgSWYgeW91IGRvIG5vdCBzcGVjaWZ5IGEga2V5IHBhaXIsIHlvdSBjYW4ndCBjb25uZWN0IHRvIHRoZSBpbnN0YW5jZSB1bmxlc3MgeW91IGNob29zZSBhbiBBTUkgdGhhdCBpcyBjb25maWd1cmVkIHRvIGFsbG93IHVzZXJzIGFub3RoZXIgd2F5IHRvIGxvZyBpbi5cbiAqL1xuS2V5TmFtZT86IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0ZXJtaW5hdGlvbiBwcm90ZWN0aW9uIGlzIGVuYWJsZWQgZm9yIHRoZSBpbnN0YW5jZS4gVGhlIGRlZmF1bHQgaXMgYGBmYWxzZWBgLCB3aGljaCBtZWFucyB0aGF0IHlvdSBjYW4gdGVybWluYXRlIHRoZSBpbnN0YW5jZSB1c2luZyB0aGUgQW1hem9uIEVDMiBjb25zb2xlLCBjb21tYW5kIGxpbmUgdG9vbHMsIG9yIEFQSS4gWW91IGNhbiBlbmFibGUgdGVybWluYXRpb24gcHJvdGVjdGlvbiB3aGVuIHlvdSBsYXVuY2ggYW4gaW5zdGFuY2UsIHdoaWxlIHRoZSBpbnN0YW5jZSBpcyBydW5uaW5nLCBvciB3aGlsZSB0aGUgaW5zdGFuY2UgaXMgc3RvcHBlZC5cbiAqL1xuRGlzYWJsZUFwaVRlcm1pbmF0aW9uPzogYm9vbGVhblxuSW5zdGFuY2VNYXJrZXRPcHRpb25zPzogSW5zdGFuY2VNYXJrZXRPcHRpb25zXG5JbnN0YW5jZVJlcXVpcmVtZW50cz86IEluc3RhbmNlUmVxdWlyZW1lbnRzXG4vKipcbiAqIFRoZSBJRCBvZiB0aGUgUkFNIGRpc2suXG4gKiAgIFdlIHJlY29tbWVuZCB0aGF0IHlvdSB1c2UgUFYtR1JVQiBpbnN0ZWFkIG9mIGtlcm5lbHMgYW5kIFJBTSBkaXNrcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVXNlciBwcm92aWRlZCBrZXJuZWxzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvVXNlclByb3ZpZGVka2VybmVscy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKi9cblJhbURpc2tJZD86IHN0cmluZ1xuQ2FwYWNpdHlSZXNlcnZhdGlvblNwZWNpZmljYXRpb24/OiBDYXBhY2l0eVJlc2VydmF0aW9uU3BlY2lmaWNhdGlvblxuQ3JlZGl0U3BlY2lmaWNhdGlvbj86IENyZWRpdFNwZWNpZmljYXRpb25cbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSB0YWdzIHRvIGFwcGx5IHRvIHJlc291cmNlcyB0aGF0IGFyZSBjcmVhdGVkIGR1cmluZyBpbnN0YW5jZSBsYXVuY2guXG4gKiAgYGBUYWdTcGVjaWZpY2F0aW9uYGAgaXMgYSBwcm9wZXJ0eSB0eXBlIG9mIFtUYWdTcGVjaWZpY2F0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZWMyLWxhdW5jaHRlbXBsYXRlLWxhdW5jaHRlbXBsYXRlZGF0YS5odG1sI2Nmbi1lYzItbGF1bmNodGVtcGxhdGUtbGF1bmNodGVtcGxhdGVkYXRhLXRhZ3NwZWNpZmljYXRpb25zKS4gW1RhZ1NwZWNpZmljYXRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1lYzItbGF1bmNodGVtcGxhdGUtbGF1bmNodGVtcGxhdGVkYXRhLmh0bWwjY2ZuLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEtdGFnc3BlY2lmaWNhdGlvbnMpIGlzIGEgcHJvcGVydHkgb2YgW0FXUzo6RUMyOjpMYXVuY2hUZW1wbGF0ZSBMYXVuY2hUZW1wbGF0ZURhdGFdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIFRoZSB0eXBlIG9mIHJlc291cmNlIHRvIHRhZy4gWW91IGNhbiBzcGVjaWZ5IHRhZ3MgZm9yIHRoZSBmb2xsb3dpbmcgcmVzb3VyY2UgdHlwZXMgb25seTogYGBpbnN0YW5jZWBgIHwgYGB2b2x1bWVgYCB8IGBgbmV0d29yay1pbnRlcmZhY2VgYCB8IGBgc3BvdC1pbnN0YW5jZXMtcmVxdWVzdGBgLiBJZiB0aGUgaW5zdGFuY2UgZG9lcyBub3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgdHlwZSB0aGF0IHlvdSBzcGVjaWZ5LCB0aGUgaW5zdGFuY2UgbGF1bmNoIGZhaWxzLiBGb3IgZXhhbXBsZSwgbm90IGFsbCBpbnN0YW5jZSB0eXBlcyBpbmNsdWRlIGEgdm9sdW1lLlxuICogIFRvIHRhZyBhIHJlc291cmNlIGFmdGVyIGl0IGhhcyBiZWVuIGNyZWF0ZWQsIHNlZSBbQ3JlYXRlVGFnc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVUYWdzLmh0bWwpLlxuICovXG5SZXNvdXJjZVR5cGU/OiBzdHJpbmdcbi8qKlxuICogVGhlIHRhZ3MgdG8gYXBwbHkgdG8gdGhlIHJlc291cmNlLlxuICovXG5UYWdzPzogVGFnW11cbn1cbi8qKlxuICogU3BlY2lmaWVzIGEgdGFnLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtSZXNvdXJjZSB0YWdzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1yZXNvdXJjZS10YWdzLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG4vKipcbiAqIFRoZSB0YWcgdmFsdWUuXG4gKi9cblZhbHVlOiBzdHJpbmdcbi8qKlxuICogVGhlIHRhZyBrZXkuXG4gKi9cbktleTogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBzZXR0aW5ncyBmb3IgdGhlIG5ldHdvcmsgcGVyZm9ybWFuY2Ugb3B0aW9ucyBmb3IgdGhlIGluc3RhbmNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtFQzIgaW5zdGFuY2UgYmFuZHdpZHRoIHdlaWdodGluZyBjb25maWd1cmF0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvY29uZmlndXJlLWJhbmR3aWR0aC13ZWlnaHRpbmcuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya1BlcmZvcm1hbmNlT3B0aW9ucyB7XG4vKipcbiAqIFNwZWNpZnkgdGhlIGJhbmR3aWR0aCB3ZWlnaHRpbmcgb3B0aW9uIHRvIGJvb3N0IHRoZSBhc3NvY2lhdGVkIHR5cGUgb2YgYmFzZWxpbmUgYmFuZHdpZHRoLCBhcyBmb2xsb3dzOlxuICogICArIGRlZmF1bHQgVGhpcyBvcHRpb24gdXNlcyB0aGUgc3RhbmRhcmQgYmFuZHdpZHRoIGNvbmZpZ3VyYXRpb24gZm9yIHlvdXIgaW5zdGFuY2UgdHlwZS4gKyB2cGMtMSBUaGlzIG9wdGlvbiBib29zdHMgeW91ciBuZXR3b3JraW5nIGJhc2VsaW5lIGJhbmR3aWR0aCBhbmQgcmVkdWNlcyB5b3VyIEVCUyBiYXNlbGluZSBiYW5kd2lkdGguICsgZWJzLTEgVGhpcyBvcHRpb24gYm9vc3RzIHlvdXIgRUJTIGJhc2VsaW5lIGJhbmR3aWR0aCBhbmQgcmVkdWNlcyB5b3VyIG5ldHdvcmtpbmcgYmFzZWxpbmUgYmFuZHdpZHRoLlxuICovXG5CYW5kd2lkdGhXZWlnaHRpbmc/OiBzdHJpbmdcbn1cbi8qKlxuICogU3BlY2lmaWVzIGEgYmxvY2sgZGV2aWNlIG1hcHBpbmcgZm9yIGEgbGF1bmNoIHRlbXBsYXRlLiBZb3UgbXVzdCBzcGVjaWZ5IGBgRGV2aWNlTmFtZWBgIHBsdXMgZXhhY3RseSBvbmUgb2YgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOiBgYEVic2BgLCBgYE5vRGV2aWNlYGAsIG9yIGBgVmlydHVhbE5hbWVgYC5cbiAqICBgYEJsb2NrRGV2aWNlTWFwcGluZ2BgIGlzIGEgcHJvcGVydHkgb2YgW0FXUzo6RUMyOjpMYXVuY2hUZW1wbGF0ZSBMYXVuY2hUZW1wbGF0ZURhdGFdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmxvY2tEZXZpY2VNYXBwaW5nIHtcbkVicz86IEVic1xuLyoqXG4gKiBUbyBvbWl0IHRoZSBkZXZpY2UgZnJvbSB0aGUgYmxvY2sgZGV2aWNlIG1hcHBpbmcsIHNwZWNpZnkgYW4gZW1wdHkgc3RyaW5nLlxuICovXG5Ob0RldmljZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmlydHVhbCBkZXZpY2UgbmFtZSAoZXBoZW1lcmFsTikuIEluc3RhbmNlIHN0b3JlIHZvbHVtZXMgYXJlIG51bWJlcmVkIHN0YXJ0aW5nIGZyb20gMC4gQW4gaW5zdGFuY2UgdHlwZSB3aXRoIDIgYXZhaWxhYmxlIGluc3RhbmNlIHN0b3JlIHZvbHVtZXMgY2FuIHNwZWNpZnkgbWFwcGluZ3MgZm9yIGVwaGVtZXJhbDAgYW5kIGVwaGVtZXJhbDEuIFRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIGluc3RhbmNlIHN0b3JlIHZvbHVtZXMgZGVwZW5kcyBvbiB0aGUgaW5zdGFuY2UgdHlwZS4gQWZ0ZXIgeW91IGNvbm5lY3QgdG8gdGhlIGluc3RhbmNlLCB5b3UgbXVzdCBtb3VudCB0aGUgdm9sdW1lLlxuICovXG5WaXJ0dWFsTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgZGV2aWNlIG5hbWUgKGZvciBleGFtcGxlLCAvZGV2L3NkaCBvciB4dmRoKS5cbiAqL1xuRGV2aWNlTmFtZT86IHN0cmluZ1xufVxuLyoqXG4gKiBQYXJhbWV0ZXJzIHVzZWQgdG8gYXV0b21hdGljYWxseSBzZXQgdXAgRUJTIHZvbHVtZXMgd2hlbiB0aGUgaW5zdGFuY2UgaXMgbGF1bmNoZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWJzIHtcbi8qKlxuICogVGhlIElEIG9mIHRoZSBzbmFwc2hvdC5cbiAqL1xuU25hcHNob3RJZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdm9sdW1lIHR5cGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBFQlMgdm9sdW1lIHR5cGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZWJzL2xhdGVzdC91c2VyZ3VpZGUvZWJzLXZvbHVtZS10eXBlcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQlMgVXNlciBHdWlkZSouXG4gKi9cblZvbHVtZVR5cGU/OiBzdHJpbmdcbi8qKlxuICogSWRlbnRpZmllciAoa2V5IElELCBrZXkgYWxpYXMsIGtleSBBUk4sIG9yIGFsaWFzIEFSTikgb2YgdGhlIGN1c3RvbWVyIG1hbmFnZWQgS01TIGtleSB0byB1c2UgZm9yIEVCUyBlbmNyeXB0aW9uLlxuICovXG5LbXNLZXlJZD86IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgRUJTIHZvbHVtZSBpcyBlbmNyeXB0ZWQuIEVuY3J5cHRlZCB2b2x1bWVzIGNhbiBvbmx5IGJlIGF0dGFjaGVkIHRvIGluc3RhbmNlcyB0aGF0IHN1cHBvcnQgQW1hem9uIEVCUyBlbmNyeXB0aW9uLiBJZiB5b3UgYXJlIGNyZWF0aW5nIGEgdm9sdW1lIGZyb20gYSBzbmFwc2hvdCwgeW91IGNhbid0IHNwZWNpZnkgYW4gZW5jcnlwdGlvbiB2YWx1ZS5cbiAqL1xuRW5jcnlwdGVkPzogYm9vbGVhblxuLyoqXG4gKiBUaGUgdGhyb3VnaHB1dCB0byBwcm92aXNpb24gZm9yIGEgYGBncDNgYCB2b2x1bWUsIHdpdGggYSBtYXhpbXVtIG9mIDEsMDAwIE1pQi9zLlxuICogIFZhbGlkIFJhbmdlOiBNaW5pbXVtIHZhbHVlIG9mIDEyNS4gTWF4aW11bSB2YWx1ZSBvZiAxMDAwLlxuICovXG5UaHJvdWdocHV0PzogbnVtYmVyXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgSS9PIG9wZXJhdGlvbnMgcGVyIHNlY29uZCAoSU9QUykuIEZvciBgYGdwM2BgLCBgYGlvMWBgLCBhbmQgYGBpbzJgYCB2b2x1bWVzLCB0aGlzIHJlcHJlc2VudHMgdGhlIG51bWJlciBvZiBJT1BTIHRoYXQgYXJlIHByb3Zpc2lvbmVkIGZvciB0aGUgdm9sdW1lLiBGb3IgYGBncDJgYCB2b2x1bWVzLCB0aGlzIHJlcHJlc2VudHMgdGhlIGJhc2VsaW5lIHBlcmZvcm1hbmNlIG9mIHRoZSB2b2x1bWUgYW5kIHRoZSByYXRlIGF0IHdoaWNoIHRoZSB2b2x1bWUgYWNjdW11bGF0ZXMgSS9PIGNyZWRpdHMgZm9yIGJ1cnN0aW5nLlxuICogIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSBzdXBwb3J0ZWQgdmFsdWVzIGZvciBlYWNoIHZvbHVtZSB0eXBlOlxuICogICArICBgYGdwM2BgOiAzLDAwMCAtIDE2LDAwMCBJT1BTXG4gKiAgICsgIGBgaW8xYGA6IDEwMCAtIDY0LDAwMCBJT1BTXG4gKiAgICsgIGBgaW8yYGA6IDEwMCAtIDI1NiwwMDAgSU9QU1xuICogICBcbiAqICBGb3IgYGBpbzJgYCB2b2x1bWVzLCB5b3UgY2FuIGFjaGlldmUgdXAgdG8gMjU2LDAwMCBJT1BTIG9uIFtpbnN0YW5jZXMgYnVpbHQgb24gdGhlIE5pdHJvIFN5c3RlbV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2VjMi9sYXRlc3QvaW5zdGFuY2V0eXBlcy9lYzItbml0cm8taW5zdGFuY2VzLmh0bWwpLiBPbiBvdGhlciBpbnN0YW5jZXMsIHlvdSBjYW4gYWNoaWV2ZSBwZXJmb3JtYW5jZSB1cCB0byAzMiwwMDAgSU9QUy5cbiAqICBUaGlzIHBhcmFtZXRlciBpcyBzdXBwb3J0ZWQgZm9yIGBgaW8xYGAsIGBgaW8yYGAsIGFuZCBgYGdwM2BgIHZvbHVtZXMgb25seS5cbiAqL1xuSW9wcz86IG51bWJlclxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIEFtYXpvbiBFQlMgUHJvdmlzaW9uZWQgUmF0ZSBmb3IgVm9sdW1lIEluaXRpYWxpemF0aW9uICh2b2x1bWUgaW5pdGlhbGl6YXRpb24gcmF0ZSksIGluIE1pQi9zLCBhdCB3aGljaCB0byBkb3dubG9hZCB0aGUgc25hcHNob3QgYmxvY2tzIGZyb20gQW1hem9uIFMzIHRvIHRoZSB2b2x1bWUuIFRoaXMgaXMgYWxzbyBrbm93biBhcyAqdm9sdW1lIGluaXRpYWxpemF0aW9uKi4gU3BlY2lmeWluZyBhIHZvbHVtZSBpbml0aWFsaXphdGlvbiByYXRlIGVuc3VyZXMgdGhhdCB0aGUgdm9sdW1lIGlzIGluaXRpYWxpemVkIGF0IGEgcHJlZGljdGFibGUgYW5kIGNvbnNpc3RlbnQgcmF0ZSBhZnRlciBjcmVhdGlvbi5cbiAqICBUaGlzIHBhcmFtZXRlciBpcyBzdXBwb3J0ZWQgb25seSBmb3Igdm9sdW1lcyBjcmVhdGVkIGZyb20gc25hcHNob3RzLiBPbWl0IHRoaXMgcGFyYW1ldGVyIGlmOlxuICogICArICBZb3Ugd2FudCB0byBjcmVhdGUgdGhlIHZvbHVtZSB1c2luZyBmYXN0IHNuYXBzaG90IHJlc3RvcmUuIFlvdSBtdXN0IHNwZWNpZnkgYSBzbmFwc2hvdCB0aGF0IGlzIGVuYWJsZWQgZm9yIGZhc3Qgc25hcHNob3QgcmVzdG9yZS4gSW4gdGhpcyBjYXNlLCB0aGUgdm9sdW1lIGlzIGZ1bGx5IGluaXRpYWxpemVkIGF0IGNyZWF0aW9uLlxuICogICBJZiB5b3Ugc3BlY2lmeSBhIHNuYXBzaG90IHRoYXQgaXMgZW5hYmxlZCBmb3IgZmFzdCBzbmFwc2hvdCByZXN0b3JlIGFuZCBhIHZvbHVtZSBpbml0aWFsaXphdGlvbiByYXRlLCB0aGUgdm9sdW1lIHdpbGwgYmUgaW5pdGlhbGl6ZWQgYXQgdGhlIHNwZWNpZmllZCByYXRlIGluc3RlYWQgb2YgZmFzdCBzbmFwc2hvdCByZXN0b3JlLlxuICogICAgKyAgWW91IHdhbnQgdG8gY3JlYXRlIGEgdm9sdW1lIHRoYXQgaXMgaW5pdGlhbGl6ZWQgYXQgdGhlIGRlZmF1bHQgcmF0ZS5cbiAqICAgXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbSW5pdGlhbGl6ZSBBbWF6b24gRUJTIHZvbHVtZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lYnMvbGF0ZXN0L3VzZXJndWlkZS9pbml0YWxpemUtdm9sdW1lLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlKi5cbiAqICBWYWxpZCByYW5nZTogMTAwIC0gMzAwIE1pQi9zXG4gKi9cblZvbHVtZUluaXRpYWxpemF0aW9uUmF0ZT86IG51bWJlclxuLyoqXG4gKiBUaGUgc2l6ZSBvZiB0aGUgdm9sdW1lLCBpbiBHaUJzLiBZb3UgbXVzdCBzcGVjaWZ5IGVpdGhlciBhIHNuYXBzaG90IElEIG9yIGEgdm9sdW1lIHNpemUuIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSBzdXBwb3J0ZWQgdm9sdW1lcyBzaXplcyBmb3IgZWFjaCB2b2x1bWUgdHlwZTpcbiAqICAgKyAgYGBncDJgYCBhbmQgYGBncDNgYDogMSAtIDE2LDM4NCBHaUJcbiAqICAgKyAgYGBpbzFgYDogNCAtIDE2LDM4NCBHaUJcbiAqICAgKyAgYGBpbzJgYDogNCAtIDY1LDUzNiBHaUJcbiAqICAgKyAgYGBzdDFgYCBhbmQgYGBzYzFgYDogMTI1IC0gMTYsMzg0IEdpQlxuICogICArICBgYHN0YW5kYXJkYGA6IDEgLSAxMDI0IEdpQlxuICovXG5Wb2x1bWVTaXplPzogbnVtYmVyXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBFQlMgdm9sdW1lIGlzIGRlbGV0ZWQgb24gaW5zdGFuY2UgdGVybWluYXRpb24uXG4gKi9cbkRlbGV0ZU9uVGVybWluYXRpb24/OiBib29sZWFuXG59XG4vKipcbiAqIFRoZSBtYWludGVuYW5jZSBvcHRpb25zIG9mIHlvdXIgaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFpbnRlbmFuY2VPcHRpb25zIHtcbi8qKlxuICogRGlzYWJsZXMgdGhlIGF1dG9tYXRpYyByZWNvdmVyeSBiZWhhdmlvciBvZiB5b3VyIGluc3RhbmNlIG9yIHNldHMgaXQgdG8gZGVmYXVsdC5cbiAqL1xuQXV0b1JlY292ZXJ5Pzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBuYW1lIG9yIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIGFuIElBTSBpbnN0YW5jZSBwcm9maWxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElhbUluc3RhbmNlUHJvZmlsZSB7XG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgaW5zdGFuY2UgcHJvZmlsZS5cbiAqL1xuQXJuPzogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBpbnN0YW5jZSBwcm9maWxlLlxuICovXG5OYW1lPzogc3RyaW5nXG59XG4vKipcbiAqIEFtYXpvbiBFbGFzdGljIEdyYXBoaWNzIHJlYWNoZWQgZW5kIG9mIGxpZmUgb24gSmFudWFyeSA4LCAyMDI0LlxuICogICBTcGVjaWZpZXMgYSBzcGVjaWZpY2F0aW9uIGZvciBhbiBFbGFzdGljIEdQVSBmb3IgYW4gQW1hem9uIEVDMiBsYXVuY2ggdGVtcGxhdGUuXG4gKiAgYGBFbGFzdGljR3B1U3BlY2lmaWNhdGlvbmBgIGlzIGEgcHJvcGVydHkgb2YgW0FXUzo6RUMyOjpMYXVuY2hUZW1wbGF0ZSBMYXVuY2hUZW1wbGF0ZURhdGFdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWxhc3RpY0dwdVNwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBUaGUgdHlwZSBvZiBFbGFzdGljIEdyYXBoaWNzIGFjY2VsZXJhdG9yLlxuICovXG5UeXBlPzogc3RyaW5nXG59XG4vKipcbiAqIEFtYXpvbiBFbGFzdGljIEluZmVyZW5jZSBpcyBubyBsb25nZXIgYXZhaWxhYmxlLlxuICogICBTcGVjaWZpZXMgYW4gZWxhc3RpYyBpbmZlcmVuY2UgYWNjZWxlcmF0b3IuXG4gKiAgYGBMYXVuY2hUZW1wbGF0ZUVsYXN0aWNJbmZlcmVuY2VBY2NlbGVyYXRvcmBgIGlzIGEgcHJvcGVydHkgb2YgW0FXUzo6RUMyOjpMYXVuY2hUZW1wbGF0ZSBMYXVuY2hUZW1wbGF0ZURhdGFdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGF1bmNoVGVtcGxhdGVFbGFzdGljSW5mZXJlbmNlQWNjZWxlcmF0b3Ige1xuLyoqXG4gKiBUaGUgdHlwZSBvZiBlbGFzdGljIGluZmVyZW5jZSBhY2NlbGVyYXRvci4gVGhlIHBvc3NpYmxlIHZhbHVlcyBhcmUgZWlhMS5tZWRpdW0sIGVpYTEubGFyZ2UsIGFuZCBlaWExLnhsYXJnZS5cbiAqL1xuVHlwZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIGVsYXN0aWMgaW5mZXJlbmNlIGFjY2VsZXJhdG9ycyB0byBhdHRhY2ggdG8gdGhlIGluc3RhbmNlLiBcbiAqICBEZWZhdWx0OiAxXG4gKi9cbkNvdW50PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBwbGFjZW1lbnQgZm9yIHRoZSBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbGFjZW1lbnQge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgcGxhY2VtZW50IGdyb3VwIGZvciB0aGUgaW5zdGFuY2UuXG4gKi9cbkdyb3VwTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdGVuYW5jeSBvZiB0aGUgaW5zdGFuY2UuIEFuIGluc3RhbmNlIHdpdGggYSB0ZW5hbmN5IG9mIGRlZGljYXRlZCBydW5zIG9uIHNpbmdsZS10ZW5hbnQgaGFyZHdhcmUuXG4gKi9cblRlbmFuY3k/OiBzdHJpbmdcbi8qKlxuICogUmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UuXG4gKi9cblNwcmVhZERvbWFpbj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIHRoZSBwYXJ0aXRpb24gdGhlIGluc3RhbmNlIHNob3VsZCBsYXVuY2ggaW4uIFZhbGlkIG9ubHkgaWYgdGhlIHBsYWNlbWVudCBncm91cCBzdHJhdGVneSBpcyBzZXQgdG8gYGBwYXJ0aXRpb25gYC5cbiAqL1xuUGFydGl0aW9uTnVtYmVyPzogbnVtYmVyXG4vKipcbiAqIFRoZSBBdmFpbGFiaWxpdHkgWm9uZSBmb3IgdGhlIGluc3RhbmNlLlxuICovXG5BdmFpbGFiaWxpdHlab25lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBhZmZpbml0eSBzZXR0aW5nIGZvciBhbiBpbnN0YW5jZSBvbiBhIERlZGljYXRlZCBIb3N0LlxuICovXG5BZmZpbml0eT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgSUQgb2YgdGhlIERlZGljYXRlZCBIb3N0IGZvciB0aGUgaW5zdGFuY2UuXG4gKi9cbkhvc3RJZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgQVJOIG9mIHRoZSBob3N0IHJlc291cmNlIGdyb3VwIGluIHdoaWNoIHRvIGxhdW5jaCB0aGUgaW5zdGFuY2VzLiBJZiB5b3Ugc3BlY2lmeSBhIGhvc3QgcmVzb3VyY2UgZ3JvdXAgQVJOLCBvbWl0IHRoZSAqVGVuYW5jeSogcGFyYW1ldGVyIG9yIHNldCBpdCB0byBgYGhvc3RgYC5cbiAqL1xuSG9zdFJlc291cmNlR3JvdXBBcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIEdyb3VwIElkIG9mIGEgcGxhY2VtZW50IGdyb3VwLiBZb3UgbXVzdCBzcGVjaWZ5IHRoZSBQbGFjZW1lbnQgR3JvdXAgKkdyb3VwIElkKiB0byBsYXVuY2ggYW4gaW5zdGFuY2UgaW4gYSBzaGFyZWQgcGxhY2VtZW50IGdyb3VwLlxuICovXG5Hcm91cElkPzogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgcGFyYW1ldGVycyBmb3IgYSBuZXR3b3JrIGludGVyZmFjZS5cbiAqICBgYE5ldHdvcmtJbnRlcmZhY2VgYCBpcyBhIHByb3BlcnR5IG9mIFtBV1M6OkVDMjo6TGF1bmNoVGVtcGxhdGUgTGF1bmNoVGVtcGxhdGVEYXRhXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1lYzItbGF1bmNodGVtcGxhdGUtbGF1bmNodGVtcGxhdGVkYXRhLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtJbnRlcmZhY2Uge1xuLyoqXG4gKiBBIGRlc2NyaXB0aW9uIGZvciB0aGUgbmV0d29yayBpbnRlcmZhY2UuXG4gKi9cbkRlc2NyaXB0aW9uPzogc3RyaW5nXG4vKipcbiAqIFRoZSBwcmltYXJ5IHByaXZhdGUgSVB2NCBhZGRyZXNzIG9mIHRoZSBuZXR3b3JrIGludGVyZmFjZS5cbiAqL1xuUHJpdmF0ZUlwQWRkcmVzcz86IHN0cmluZ1xuLyoqXG4gKiBPbmUgb3IgbW9yZSBwcml2YXRlIElQdjQgYWRkcmVzc2VzLlxuICovXG5Qcml2YXRlSXBBZGRyZXNzZXM/OiBQcml2YXRlSXBBZGRbXVxuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIHNlY29uZGFyeSBwcml2YXRlIElQdjQgYWRkcmVzc2VzIHRvIGFzc2lnbiB0byBhIG5ldHdvcmsgaW50ZXJmYWNlLlxuICovXG5TZWNvbmRhcnlQcml2YXRlSXBBZGRyZXNzQ291bnQ/OiBudW1iZXJcbi8qKlxuICogVGhlIG51bWJlciBvZiBJUHY2IHByZWZpeGVzIHRvIGJlIGF1dG9tYXRpY2FsbHkgYXNzaWduZWQgdG8gdGhlIG5ldHdvcmsgaW50ZXJmYWNlLiBZb3UgY2Fubm90IHVzZSB0aGlzIG9wdGlvbiBpZiB5b3UgdXNlIHRoZSBgYElwdjZQcmVmaXhgYCBvcHRpb24uXG4gKi9cbklwdjZQcmVmaXhDb3VudD86IG51bWJlclxuLyoqXG4gKiBPbmUgb3IgbW9yZSBJUHY0IHByZWZpeGVzIHRvIGJlIGFzc2lnbmVkIHRvIHRoZSBuZXR3b3JrIGludGVyZmFjZS4gWW91IGNhbm5vdCB1c2UgdGhpcyBvcHRpb24gaWYgeW91IHVzZSB0aGUgYGBJcHY0UHJlZml4Q291bnRgYCBvcHRpb24uXG4gKi9cbklwdjRQcmVmaXhlcz86IElwdjRQcmVmaXhTcGVjaWZpY2F0aW9uW11cbi8qKlxuICogVGhlIGRldmljZSBpbmRleCBmb3IgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGF0dGFjaG1lbnQuIFRoZSBwcmltYXJ5IG5ldHdvcmsgaW50ZXJmYWNlIGhhcyBhIGRldmljZSBpbmRleCBvZiAwLiBJZiB0aGUgbmV0d29yayBpbnRlcmZhY2UgaXMgb2YgdHlwZSBgYGludGVyZmFjZWBgLCB5b3UgbXVzdCBzcGVjaWZ5IGEgZGV2aWNlIGluZGV4LlxuICogIElmIHlvdSBjcmVhdGUgYSBsYXVuY2ggdGVtcGxhdGUgdGhhdCBpbmNsdWRlcyBzZWNvbmRhcnkgbmV0d29yayBpbnRlcmZhY2VzIGJ1dCBubyBwcmltYXJ5IG5ldHdvcmsgaW50ZXJmYWNlLCBhbmQgeW91IHNwZWNpZnkgaXQgdXNpbmcgdGhlIGBgTGF1bmNoVGVtcGxhdGVgYCBwcm9wZXJ0eSBvZiBgYEFXUzo6RUMyOjpJbnN0YW5jZWBgLCB0aGVuIHlvdSBtdXN0IGluY2x1ZGUgYSBwcmltYXJ5IG5ldHdvcmsgaW50ZXJmYWNlIHVzaW5nIHRoZSBgYE5ldHdvcmtJbnRlcmZhY2VzYGAgcHJvcGVydHkgb2YgYGBBV1M6OkVDMjo6SW5zdGFuY2VgYC5cbiAqL1xuRGV2aWNlSW5kZXg/OiBudW1iZXJcbi8qKlxuICogVGhlIHByaW1hcnkgSVB2NiBhZGRyZXNzIG9mIHRoZSBuZXR3b3JrIGludGVyZmFjZS4gV2hlbiB5b3UgZW5hYmxlIGFuIElQdjYgR1VBIGFkZHJlc3MgdG8gYmUgYSBwcmltYXJ5IElQdjYsIHRoZSBmaXJzdCBJUHY2IEdVQSB3aWxsIGJlIG1hZGUgdGhlIHByaW1hcnkgSVB2NiBhZGRyZXNzIHVudGlsIHRoZSBpbnN0YW5jZSBpcyB0ZXJtaW5hdGVkIG9yIHRoZSBuZXR3b3JrIGludGVyZmFjZSBpcyBkZXRhY2hlZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgcHJpbWFyeSBJUHY2IGFkZHJlc3Nlcywgc2VlIFtSdW5JbnN0YW5jZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfUnVuSW5zdGFuY2VzLmh0bWwpLlxuICovXG5QcmltYXJ5SXB2Nj86IGJvb2xlYW5cbi8qKlxuICogVGhlIG51bWJlciBvZiBJUHY0IHByZWZpeGVzIHRvIGJlIGF1dG9tYXRpY2FsbHkgYXNzaWduZWQgdG8gdGhlIG5ldHdvcmsgaW50ZXJmYWNlLiBZb3UgY2Fubm90IHVzZSB0aGlzIG9wdGlvbiBpZiB5b3UgdXNlIHRoZSBgYElwdjRQcmVmaXhgYCBvcHRpb24uXG4gKi9cbklwdjRQcmVmaXhDb3VudD86IG51bWJlclxuLyoqXG4gKiBPbmUgb3IgbW9yZSBJUHY2IHByZWZpeGVzIHRvIGJlIGFzc2lnbmVkIHRvIHRoZSBuZXR3b3JrIGludGVyZmFjZS4gWW91IGNhbm5vdCB1c2UgdGhpcyBvcHRpb24gaWYgeW91IHVzZSB0aGUgYGBJcHY2UHJlZml4Q291bnRgYCBvcHRpb24uXG4gKi9cbklwdjZQcmVmaXhlcz86IElwdjZQcmVmaXhTcGVjaWZpY2F0aW9uW11cbi8qKlxuICogVGhlIElEIG9mIHRoZSBzdWJuZXQgZm9yIHRoZSBuZXR3b3JrIGludGVyZmFjZS5cbiAqL1xuU3VibmV0SWQ/OiBzdHJpbmdcbi8qKlxuICogT25lIG9yIG1vcmUgc3BlY2lmaWMgSVB2NiBhZGRyZXNzZXMgZnJvbSB0aGUgSVB2NiBDSURSIGJsb2NrIHJhbmdlIG9mIHlvdXIgc3VibmV0LiBZb3UgY2FuJ3QgdXNlIHRoaXMgb3B0aW9uIGlmIHlvdSdyZSBzcGVjaWZ5aW5nIGEgbnVtYmVyIG9mIElQdjYgYWRkcmVzc2VzLlxuICovXG5JcHY2QWRkcmVzc2VzPzogSXB2NkFkZFtdXG4vKipcbiAqIEFzc29jaWF0ZXMgYSBwdWJsaWMgSVB2NCBhZGRyZXNzIHdpdGggZXRoMCBmb3IgYSBuZXcgbmV0d29yayBpbnRlcmZhY2UuXG4gKiAgQVdTIGNoYXJnZXMgZm9yIGFsbCBwdWJsaWMgSVB2NCBhZGRyZXNzZXMsIGluY2x1ZGluZyBwdWJsaWMgSVB2NCBhZGRyZXNzZXMgYXNzb2NpYXRlZCB3aXRoIHJ1bm5pbmcgaW5zdGFuY2VzIGFuZCBFbGFzdGljIElQIGFkZHJlc3Nlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUgKlB1YmxpYyBJUHY0IEFkZHJlc3MqIHRhYiBvbiB0aGUgW0FtYXpvbiBWUEMgcHJpY2luZyBwYWdlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL3ByaWNpbmcvKS5cbiAqL1xuQXNzb2NpYXRlUHVibGljSXBBZGRyZXNzPzogYm9vbGVhblxuLyoqXG4gKiBUaGUgSUQgb2YgdGhlIG5ldHdvcmsgaW50ZXJmYWNlLlxuICovXG5OZXR3b3JrSW50ZXJmYWNlSWQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIGluZGV4IG9mIHRoZSBuZXR3b3JrIGNhcmQuIFNvbWUgaW5zdGFuY2UgdHlwZXMgc3VwcG9ydCBtdWx0aXBsZSBuZXR3b3JrIGNhcmRzLiBUaGUgcHJpbWFyeSBuZXR3b3JrIGludGVyZmFjZSBtdXN0IGJlIGFzc2lnbmVkIHRvIG5ldHdvcmsgY2FyZCBpbmRleCAwLiBUaGUgZGVmYXVsdCBpcyBuZXR3b3JrIGNhcmQgaW5kZXggMC5cbiAqL1xuTmV0d29ya0NhcmRJbmRleD86IG51bWJlclxuLyoqXG4gKiBUaGUgdHlwZSBvZiBuZXR3b3JrIGludGVyZmFjZS4gVG8gY3JlYXRlIGFuIEVsYXN0aWMgRmFicmljIEFkYXB0ZXIgKEVGQSksIHNwZWNpZnkgYGBlZmFgYCBvciBgYGVmYWBgLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtFbGFzdGljIEZhYnJpYyBBZGFwdGVyIGZvciBBSS9NTCBhbmQgSFBDIHdvcmtsb2FkcyBvbiBBbWF6b24gRUMyXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWZhLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlKi5cbiAqICBJZiB5b3UgYXJlIG5vdCBjcmVhdGluZyBhbiBFRkEsIHNwZWNpZnkgYGBpbnRlcmZhY2VgYCBvciBvbWl0IHRoaXMgcGFyYW1ldGVyLlxuICogIElmIHlvdSBzcGVjaWZ5IGBgZWZhLW9ubHlgYCwgZG8gbm90IGFzc2lnbiBhbnkgSVAgYWRkcmVzc2VzIHRvIHRoZSBuZXR3b3JrIGludGVyZmFjZS4gRUZBLW9ubHkgbmV0d29yayBpbnRlcmZhY2VzIGRvIG5vdCBzdXBwb3J0IElQIGFkZHJlc3Nlcy5cbiAqICBWYWxpZCB2YWx1ZXM6IGBgaW50ZXJmYWNlYGAgfCBgYGVmYWBgIHwgYGBlZmEtb25seWBgXG4gKi9cbkludGVyZmFjZVR5cGU/OiBzdHJpbmdcbi8qKlxuICogQXNzb2NpYXRlcyBhIENhcnJpZXIgSVAgYWRkcmVzcyB3aXRoIGV0aDAgZm9yIGEgbmV3IG5ldHdvcmsgaW50ZXJmYWNlLlxuICogIFVzZSB0aGlzIG9wdGlvbiB3aGVuIHlvdSBsYXVuY2ggYW4gaW5zdGFuY2UgaW4gYSBXYXZlbGVuZ3RoIFpvbmUgYW5kIHdhbnQgdG8gYXNzb2NpYXRlIGEgQ2FycmllciBJUCBhZGRyZXNzIHdpdGggdGhlIG5ldHdvcmsgaW50ZXJmYWNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBDYXJyaWVyIElQIGFkZHJlc3Nlcywgc2VlIFtDYXJyaWVyIElQIGFkZHJlc3Nlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3dhdmVsZW5ndGgvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2hvdy13YXZlbGVuZ3Rocy13b3JrLmh0bWwjcHJvdmlkZXItb3duZWQtaXApIGluIHRoZSAqRGV2ZWxvcGVyIEd1aWRlKi5cbiAqL1xuQXNzb2NpYXRlQ2FycmllcklwQWRkcmVzcz86IGJvb2xlYW5cbkVuYVNyZFNwZWNpZmljYXRpb24/OiBFbmFTcmRTcGVjaWZpY2F0aW9uXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgSVB2NiBhZGRyZXNzZXMgdG8gYXNzaWduIHRvIGEgbmV0d29yayBpbnRlcmZhY2UuIEFtYXpvbiBFQzIgYXV0b21hdGljYWxseSBzZWxlY3RzIHRoZSBJUHY2IGFkZHJlc3NlcyBmcm9tIHRoZSBzdWJuZXQgcmFuZ2UuIFlvdSBjYW4ndCB1c2UgdGhpcyBvcHRpb24gaWYgc3BlY2lmeWluZyBzcGVjaWZpYyBJUHY2IGFkZHJlc3Nlcy5cbiAqL1xuSXB2NkFkZHJlc3NDb3VudD86IG51bWJlclxuLyoqXG4gKiBUaGUgSURzIG9mIG9uZSBvciBtb3JlIHNlY3VyaXR5IGdyb3Vwcy5cbiAqL1xuR3JvdXBzPzogc3RyaW5nW11cbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGlzIGRlbGV0ZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgdGVybWluYXRlZC5cbiAqL1xuRGVsZXRlT25UZXJtaW5hdGlvbj86IGJvb2xlYW5cbkNvbm5lY3Rpb25UcmFja2luZ1NwZWNpZmljYXRpb24/OiBDb25uZWN0aW9uVHJhY2tpbmdTcGVjaWZpY2F0aW9uXG59XG4vKipcbiAqIFNwZWNpZmllcyBhIHNlY29uZGFyeSBwcml2YXRlIElQdjQgYWRkcmVzcyBmb3IgYSBuZXR3b3JrIGludGVyZmFjZS5cbiAqICBgYFByaXZhdGVJcEFkZGBgIGlzIGEgcHJvcGVydHkgb2YgW0FXUzo6RUMyOjpMYXVuY2hUZW1wbGF0ZSBOZXR3b3JrSW50ZXJmYWNlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1lYzItbGF1bmNodGVtcGxhdGUtbmV0d29ya2ludGVyZmFjZS5odG1sKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcml2YXRlSXBBZGQge1xuLyoqXG4gKiBUaGUgcHJpdmF0ZSBJUHY0IGFkZHJlc3MuXG4gKi9cblByaXZhdGVJcEFkZHJlc3M/OiBzdHJpbmdcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHByaXZhdGUgSVB2NCBhZGRyZXNzIGlzIHRoZSBwcmltYXJ5IHByaXZhdGUgSVB2NCBhZGRyZXNzLiBPbmx5IG9uZSBJUHY0IGFkZHJlc3MgY2FuIGJlIGRlc2lnbmF0ZWQgYXMgcHJpbWFyeS5cbiAqL1xuUHJpbWFyeT86IGJvb2xlYW5cbn1cbi8qKlxuICogU3BlY2lmaWVzIGFuIElQdjQgcHJlZml4IGZvciBhIG5ldHdvcmsgaW50ZXJmYWNlLlxuICogIGBgSXB2NFByZWZpeFNwZWNpZmljYXRpb25gYCBpcyBhIHByb3BlcnR5IG9mIFtBV1M6OkVDMjo6TGF1bmNoVGVtcGxhdGUgTmV0d29ya0ludGVyZmFjZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZWMyLWxhdW5jaHRlbXBsYXRlLW5ldHdvcmtpbnRlcmZhY2UuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSXB2NFByZWZpeFNwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBUaGUgSVB2NCBwcmVmaXguIEZvciBpbmZvcm1hdGlvbiwgc2VlIFtBc3NpZ25pbmcgcHJlZml4ZXMgdG8gbmV0d29yayBpbnRlcmZhY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWMyLXByZWZpeC1lbmkuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICovXG5JcHY0UHJlZml4Pzogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyBhbiBJUHY2IHByZWZpeCBmb3IgYSBuZXR3b3JrIGludGVyZmFjZS5cbiAqICBgYElwdjZQcmVmaXhTcGVjaWZpY2F0aW9uYGAgaXMgYSBwcm9wZXJ0eSBvZiBbQVdTOjpFQzI6OkxhdW5jaFRlbXBsYXRlIE5ldHdvcmtJbnRlcmZhY2VdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1uZXR3b3JraW50ZXJmYWNlLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElwdjZQcmVmaXhTcGVjaWZpY2F0aW9uIHtcbi8qKlxuICogVGhlIElQdjYgcHJlZml4LlxuICovXG5JcHY2UHJlZml4Pzogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyBhbiBJUHY2IGFkZHJlc3MgaW4gYW4gQW1hem9uIEVDMiBsYXVuY2ggdGVtcGxhdGUuXG4gKiAgYGBJcHY2QWRkYGAgaXMgYSBwcm9wZXJ0eSBvZiBbQVdTOjpFQzI6OkxhdW5jaFRlbXBsYXRlIE5ldHdvcmtJbnRlcmZhY2VdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1uZXR3b3JraW50ZXJmYWNlLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElwdjZBZGQge1xuLyoqXG4gKiBPbmUgb3IgbW9yZSBzcGVjaWZpYyBJUHY2IGFkZHJlc3NlcyBmcm9tIHRoZSBJUHY2IENJRFIgYmxvY2sgcmFuZ2Ugb2YgeW91ciBzdWJuZXQuIFlvdSBjYW4ndCB1c2UgdGhpcyBvcHRpb24gaWYgeW91J3JlIHNwZWNpZnlpbmcgYSBudW1iZXIgb2YgSVB2NiBhZGRyZXNzZXMuXG4gKi9cbklwdjZBZGRyZXNzPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBFTkEgRXhwcmVzcyBjb25maWd1cmF0aW9uIGZvciB0aGUgbmV0d29yayBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5hU3JkU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIEVOQSBFeHByZXNzIGlzIGVuYWJsZWQgZm9yIHRoZSBuZXR3b3JrIGludGVyZmFjZS5cbiAqL1xuRW5hU3JkRW5hYmxlZD86IGJvb2xlYW5cbkVuYVNyZFVkcFNwZWNpZmljYXRpb24/OiBFbmFTcmRVZHBTcGVjaWZpY2F0aW9uXG59XG4vKipcbiAqIENvbmZpZ3VyZXMgRU5BIEV4cHJlc3MgZm9yIFVEUCBuZXR3b3JrIHRyYWZmaWMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5hU3JkVWRwU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIFVEUCB0cmFmZmljIHRvIGFuZCBmcm9tIHRoZSBpbnN0YW5jZSB1c2VzIEVOQSBFeHByZXNzLiBUbyBzcGVjaWZ5IHRoaXMgc2V0dGluZywgeW91IG11c3QgZmlyc3QgZW5hYmxlIEVOQSBFeHByZXNzLlxuICovXG5FbmFTcmRVZHBFbmFibGVkPzogYm9vbGVhblxufVxuLyoqXG4gKiBBIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIG5ldHdvcmsgaW50ZXJmYWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbm5lY3Rpb25UcmFja2luZ1NwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBUaW1lb3V0IChpbiBzZWNvbmRzKSBmb3IgaWRsZSBVRFAgZmxvd3MgdGhhdCBoYXZlIHNlZW4gdHJhZmZpYyBvbmx5IGluIGEgc2luZ2xlIGRpcmVjdGlvbiBvciBhIHNpbmdsZSByZXF1ZXN0LXJlc3BvbnNlIHRyYW5zYWN0aW9uLiBNaW46IDMwIHNlY29uZHMuIE1heDogNjAgc2Vjb25kcy4gRGVmYXVsdDogMzAgc2Vjb25kcy5cbiAqL1xuVWRwVGltZW91dD86IG51bWJlclxuLyoqXG4gKiBUaW1lb3V0IChpbiBzZWNvbmRzKSBmb3IgaWRsZSBUQ1AgY29ubmVjdGlvbnMgaW4gYW4gZXN0YWJsaXNoZWQgc3RhdGUuIE1pbjogNjAgc2Vjb25kcy4gTWF4OiA0MzIwMDAgc2Vjb25kcyAoNSBkYXlzKS4gRGVmYXVsdDogNDMyMDAwIHNlY29uZHMuIFJlY29tbWVuZGVkOiBMZXNzIHRoYW4gNDMyMDAwIHNlY29uZHMuXG4gKi9cblRjcEVzdGFibGlzaGVkVGltZW91dD86IG51bWJlclxuLyoqXG4gKiBUaW1lb3V0IChpbiBzZWNvbmRzKSBmb3IgaWRsZSBVRFAgZmxvd3MgY2xhc3NpZmllZCBhcyBzdHJlYW1zIHdoaWNoIGhhdmUgc2VlbiBtb3JlIHRoYW4gb25lIHJlcXVlc3QtcmVzcG9uc2UgdHJhbnNhY3Rpb24uIE1pbjogNjAgc2Vjb25kcy4gTWF4OiAxODAgc2Vjb25kcyAoMyBtaW51dGVzKS4gRGVmYXVsdDogMTgwIHNlY29uZHMuXG4gKi9cblVkcFN0cmVhbVRpbWVvdXQ/OiBudW1iZXJcbn1cbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGluc3RhbmNlIGlzIGVuYWJsZWQgZm9yIEFXUyBOaXRybyBFbmNsYXZlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbV2hhdCBpcyBOaXRybyBFbmNsYXZlcz9dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lbmNsYXZlcy9sYXRlc3QvdXNlci9uaXRyby1lbmNsYXZlLmh0bWwpIGluIHRoZSAqTml0cm8gRW5jbGF2ZXMgVXNlciBHdWlkZSouXG4gKiAgWW91IGNhbid0IGVuYWJsZSBBV1MgTml0cm8gRW5jbGF2ZXMgYW5kIGhpYmVybmF0aW9uIG9uIHRoZSBzYW1lIGluc3RhbmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuY2xhdmVPcHRpb25zIHtcbi8qKlxuICogSWYgdGhpcyBwYXJhbWV0ZXIgaXMgc2V0IHRvIGBgdHJ1ZWBgLCB0aGUgaW5zdGFuY2UgaXMgZW5hYmxlZCBmb3IgQVdTIE5pdHJvIEVuY2xhdmVzOyBvdGhlcndpc2UsIGl0IGlzIG5vdCBlbmFibGVkIGZvciBBV1MgTml0cm8gRW5jbGF2ZXMuXG4gKi9cbkVuYWJsZWQ/OiBib29sZWFuXG59XG4vKipcbiAqIFRoZSBtb25pdG9yaW5nIGZvciB0aGUgaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9uaXRvcmluZyB7XG4vKipcbiAqIFNwZWNpZnkgYGB0cnVlYGAgdG8gZW5hYmxlIGRldGFpbGVkIG1vbml0b3JpbmcuIE90aGVyd2lzZSwgYmFzaWMgbW9uaXRvcmluZyBpcyBlbmFibGVkLlxuICovXG5FbmFibGVkPzogYm9vbGVhblxufVxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBhbiBpbnN0YW5jZSBpcyBlbmFibGVkIGZvciBoaWJlcm5hdGlvbi4gVGhpcyBwYXJhbWV0ZXIgaXMgdmFsaWQgb25seSBpZiB0aGUgaW5zdGFuY2UgbWVldHMgdGhlIFtoaWJlcm5hdGlvbiBwcmVyZXF1aXNpdGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvaGliZXJuYXRpbmctcHJlcmVxdWlzaXRlcy5odG1sKS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbSGliZXJuYXRlIHlvdXIgQW1hem9uIEVDMiBpbnN0YW5jZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL0hpYmVybmF0ZS5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGliZXJuYXRpb25PcHRpb25zIHtcbi8qKlxuICogSWYgeW91IHNldCB0aGlzIHBhcmFtZXRlciB0byBgYHRydWVgYCwgdGhlIGluc3RhbmNlIGlzIGVuYWJsZWQgZm9yIGhpYmVybmF0aW9uLlxuICogIERlZmF1bHQ6IGBgZmFsc2VgYFxuICovXG5Db25maWd1cmVkPzogYm9vbGVhblxufVxuLyoqXG4gKiBUaGUgbWV0YWRhdGEgb3B0aW9ucyBmb3IgdGhlIGluc3RhbmNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDb25maWd1cmUgdGhlIEluc3RhbmNlIE1ldGFkYXRhIFNlcnZpY2Ugb3B0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2NvbmZpZ3VyaW5nLWluc3RhbmNlLW1ldGFkYXRhLW9wdGlvbnMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhT3B0aW9ucyB7XG4vKipcbiAqIFRoZSBkZXNpcmVkIEhUVFAgUFVUIHJlc3BvbnNlIGhvcCBsaW1pdCBmb3IgaW5zdGFuY2UgbWV0YWRhdGEgcmVxdWVzdHMuIFRoZSBsYXJnZXIgdGhlIG51bWJlciwgdGhlIGZ1cnRoZXIgaW5zdGFuY2UgbWV0YWRhdGEgcmVxdWVzdHMgY2FuIHRyYXZlbC5cbiAqICBEZWZhdWx0OiBgYDFgYFxuICogIFBvc3NpYmxlIHZhbHVlczogSW50ZWdlcnMgZnJvbSAxIHRvIDY0XG4gKi9cbkh0dHBQdXRSZXNwb25zZUhvcExpbWl0PzogbnVtYmVyXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIElNRFN2MiBpcyByZXF1aXJlZC5cbiAqICAgKyAgYGBvcHRpb25hbGBgIC0gSU1EU3YyIGlzIG9wdGlvbmFsLiBZb3UgY2FuIGNob29zZSB3aGV0aGVyIHRvIHNlbmQgYSBzZXNzaW9uIHRva2VuIGluIHlvdXIgaW5zdGFuY2UgbWV0YWRhdGEgcmV0cmlldmFsIHJlcXVlc3RzLiBJZiB5b3UgcmV0cmlldmUgSUFNIHJvbGUgY3JlZGVudGlhbHMgd2l0aG91dCBhIHNlc3Npb24gdG9rZW4sIHlvdSByZWNlaXZlIHRoZSBJTURTdjEgcm9sZSBjcmVkZW50aWFscy4gSWYgeW91IHJldHJpZXZlIElBTSByb2xlIGNyZWRlbnRpYWxzIHVzaW5nIGEgdmFsaWQgc2Vzc2lvbiB0b2tlbiwgeW91IHJlY2VpdmUgdGhlIElNRFN2MiByb2xlIGNyZWRlbnRpYWxzLlxuICogICArICBgYHJlcXVpcmVkYGAgLSBJTURTdjIgaXMgcmVxdWlyZWQuIFlvdSBtdXN0IHNlbmQgYSBzZXNzaW9uIHRva2VuIGluIHlvdXIgaW5zdGFuY2UgbWV0YWRhdGEgcmV0cmlldmFsIHJlcXVlc3RzLiBXaXRoIHRoaXMgb3B0aW9uLCByZXRyaWV2aW5nIHRoZSBJQU0gcm9sZSBjcmVkZW50aWFscyBhbHdheXMgcmV0dXJucyBJTURTdjIgY3JlZGVudGlhbHM7IElNRFN2MSBjcmVkZW50aWFscyBhcmUgbm90IGF2YWlsYWJsZS5cbiAqICAgXG4gKiAgRGVmYXVsdDogSWYgdGhlIHZhbHVlIG9mIGBgSW1kc1N1cHBvcnRgYCBmb3IgdGhlIEFtYXpvbiBNYWNoaW5lIEltYWdlIChBTUkpIGZvciB5b3VyIGluc3RhbmNlIGlzIGBgdjIuMGBgLCB0aGUgZGVmYXVsdCBpcyBgYHJlcXVpcmVkYGAuXG4gKi9cbkh0dHBUb2tlbnM/OiBzdHJpbmdcbi8qKlxuICogRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgSVB2NiBlbmRwb2ludCBmb3IgdGhlIGluc3RhbmNlIG1ldGFkYXRhIHNlcnZpY2UuXG4gKiAgRGVmYXVsdDogYGBkaXNhYmxlZGBgXG4gKi9cbkh0dHBQcm90b2NvbElwdjY/OiBzdHJpbmdcbi8qKlxuICogU2V0IHRvIGBgZW5hYmxlZGBgIHRvIGFsbG93IGFjY2VzcyB0byBpbnN0YW5jZSB0YWdzIGZyb20gdGhlIGluc3RhbmNlIG1ldGFkYXRhLiBTZXQgdG8gYGBkaXNhYmxlZGBgIHRvIHR1cm4gb2ZmIGFjY2VzcyB0byBpbnN0YW5jZSB0YWdzIGZyb20gdGhlIGluc3RhbmNlIG1ldGFkYXRhLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtWaWV3IHRhZ3MgZm9yIHlvdXIgRUMyIGluc3RhbmNlcyB1c2luZyBpbnN0YW5jZSBtZXRhZGF0YV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL3dvcmstd2l0aC10YWdzLWluLUlNRFMuaHRtbCkuXG4gKiAgRGVmYXVsdDogYGBkaXNhYmxlZGBgXG4gKi9cbkluc3RhbmNlTWV0YWRhdGFUYWdzPzogc3RyaW5nXG4vKipcbiAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIEhUVFAgbWV0YWRhdGEgZW5kcG9pbnQgb24geW91ciBpbnN0YW5jZXMuIElmIHRoZSBwYXJhbWV0ZXIgaXMgbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgc3RhdGUgaXMgYGBlbmFibGVkYGAuXG4gKiAgIElmIHlvdSBzcGVjaWZ5IGEgdmFsdWUgb2YgYGBkaXNhYmxlZGBgLCB5b3Ugd2lsbCBub3QgYmUgYWJsZSB0byBhY2Nlc3MgeW91ciBpbnN0YW5jZSBtZXRhZGF0YS5cbiAqL1xuSHR0cEVuZHBvaW50Pzogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyBhIGxpY2Vuc2UgY29uZmlndXJhdGlvbiBmb3IgYW4gaW5zdGFuY2UuXG4gKiAgYGBMaWNlbnNlU3BlY2lmaWNhdGlvbmBgIGlzIGEgcHJvcGVydHkgb2YgW0FXUzo6RUMyOjpMYXVuY2hUZW1wbGF0ZSBMYXVuY2hUZW1wbGF0ZURhdGFdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGljZW5zZVNwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIGxpY2Vuc2UgY29uZmlndXJhdGlvbi5cbiAqL1xuTGljZW5zZUNvbmZpZ3VyYXRpb25Bcm4/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIENQVSBvcHRpb25zIGZvciB0aGUgaW5zdGFuY2UuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NQVSBvcHRpb25zIGZvciBBbWF6b24gRUMyIGluc3RhbmNlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2luc3RhbmNlLW9wdGltaXplLWNwdS5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3B1T3B0aW9ucyB7XG4vKipcbiAqIFRoZSBudW1iZXIgb2YgdGhyZWFkcyBwZXIgQ1BVIGNvcmUuIFRvIGRpc2FibGUgbXVsdGl0aHJlYWRpbmcgZm9yIHRoZSBpbnN0YW5jZSwgc3BlY2lmeSBhIHZhbHVlIG9mIGBgMWBgLiBPdGhlcndpc2UsIHNwZWNpZnkgdGhlIGRlZmF1bHQgdmFsdWUgb2YgYGAyYGAuXG4gKi9cblRocmVhZHNQZXJDb3JlPzogbnVtYmVyXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGVuYWJsZSB0aGUgaW5zdGFuY2UgZm9yIEFNRCBTRVYtU05QLiBBTUQgU0VWLVNOUCBpcyBzdXBwb3J0ZWQgd2l0aCBNNmEsIFI2YSwgYW5kIEM2YSBpbnN0YW5jZSB0eXBlcyBvbmx5LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBTUQgU0VWLVNOUCBmb3IgQW1hem9uIEVDMiBpbnN0YW5jZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9zZXYtc25wLmh0bWwpLlxuICovXG5BbWRTZXZTbnA/OiAoXCJlbmFibGVkXCIgfCBcImRpc2FibGVkXCIpXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgQ1BVIGNvcmVzIGZvciB0aGUgaW5zdGFuY2UuXG4gKi9cbkNvcmVDb3VudD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgaG9zdG5hbWUgdHlwZSBmb3IgRUMyIGluc3RhbmNlcyBsYXVuY2hlZCBpbnRvIHRoaXMgc3VibmV0IGFuZCBob3cgRE5TIEEgYW5kIEFBQUEgcmVjb3JkIHF1ZXJpZXMgc2hvdWxkIGJlIGhhbmRsZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBFQzIgaW5zdGFuY2UgaG9zdG5hbWUgdHlwZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9lYzItaW5zdGFuY2UtbmFtaW5nLmh0bWwpIGluIHRoZSAqVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJpdmF0ZURuc05hbWVPcHRpb25zIHtcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gcmVzcG9uZCB0byBETlMgcXVlcmllcyBmb3IgaW5zdGFuY2UgaG9zdG5hbWVzIHdpdGggRE5TIEEgcmVjb3Jkcy5cbiAqL1xuRW5hYmxlUmVzb3VyY2VOYW1lRG5zQVJlY29yZD86IGJvb2xlYW5cbi8qKlxuICogVGhlIHR5cGUgb2YgaG9zdG5hbWUgZm9yIEVDMiBpbnN0YW5jZXMuIEZvciBJUHY0IG9ubHkgc3VibmV0cywgYW4gaW5zdGFuY2UgRE5TIG5hbWUgbXVzdCBiZSBiYXNlZCBvbiB0aGUgaW5zdGFuY2UgSVB2NCBhZGRyZXNzLiBGb3IgSVB2NiBvbmx5IHN1Ym5ldHMsIGFuIGluc3RhbmNlIEROUyBuYW1lIG11c3QgYmUgYmFzZWQgb24gdGhlIGluc3RhbmNlIElELiBGb3IgZHVhbC1zdGFjayBzdWJuZXRzLCB5b3UgY2FuIHNwZWNpZnkgd2hldGhlciBETlMgbmFtZXMgdXNlIHRoZSBpbnN0YW5jZSBJUHY0IGFkZHJlc3Mgb3IgdGhlIGluc3RhbmNlIElELiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBbWF6b24gRUMyIGluc3RhbmNlIGhvc3RuYW1lIHR5cGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWMyLWluc3RhbmNlLW5hbWluZy5odG1sKSBpbiB0aGUgKlVzZXIgR3VpZGUqLlxuICovXG5Ib3N0bmFtZVR5cGU/OiBzdHJpbmdcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gcmVzcG9uZCB0byBETlMgcXVlcmllcyBmb3IgaW5zdGFuY2UgaG9zdG5hbWVzIHdpdGggRE5TIEFBQUEgcmVjb3Jkcy5cbiAqL1xuRW5hYmxlUmVzb3VyY2VOYW1lRG5zQUFBQVJlY29yZD86IGJvb2xlYW5cbn1cbi8qKlxuICogVGhlIG1hcmtldCAocHVyY2hhc2luZykgb3B0aW9uIGZvciB0aGUgaW5zdGFuY2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlTWFya2V0T3B0aW9ucyB7XG5TcG90T3B0aW9ucz86IFNwb3RPcHRpb25zXG4vKipcbiAqIFRoZSBtYXJrZXQgdHlwZS5cbiAqL1xuTWFya2V0VHlwZT86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgb3B0aW9ucyBmb3IgU3BvdCBJbnN0YW5jZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3BvdE9wdGlvbnMge1xuLyoqXG4gKiBUaGUgU3BvdCBJbnN0YW5jZSByZXF1ZXN0IHR5cGUuXG4gKiAgSWYgeW91IGFyZSB1c2luZyBTcG90IEluc3RhbmNlcyB3aXRoIGFuIEF1dG8gU2NhbGluZyBncm91cCwgdXNlIGBgb25lLXRpbWVgYCByZXF1ZXN0cywgYXMgdGhlIEFTbG9uZyBzZXJ2aWNlIGhhbmRsZXMgcmVxdWVzdGluZyBuZXcgU3BvdCBJbnN0YW5jZXMgd2hlbmV2ZXIgdGhlIGdyb3VwIGlzIGJlbG93IGl0cyBkZXNpcmVkIGNhcGFjaXR5LlxuICovXG5TcG90SW5zdGFuY2VUeXBlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBiZWhhdmlvciB3aGVuIGEgU3BvdCBJbnN0YW5jZSBpcyBpbnRlcnJ1cHRlZC4gVGhlIGRlZmF1bHQgaXMgYGB0ZXJtaW5hdGVgYC5cbiAqL1xuSW5zdGFuY2VJbnRlcnJ1cHRpb25CZWhhdmlvcj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbWF4aW11bSBob3VybHkgcHJpY2UgeW91J3JlIHdpbGxpbmcgdG8gcGF5IGZvciBhIFNwb3QgSW5zdGFuY2UuIFdlIGRvIG5vdCByZWNvbW1lbmQgdXNpbmcgdGhpcyBwYXJhbWV0ZXIgYmVjYXVzZSBpdCBjYW4gbGVhZCB0byBpbmNyZWFzZWQgaW50ZXJydXB0aW9ucy4gSWYgeW91IGRvIG5vdCBzcGVjaWZ5IHRoaXMgcGFyYW1ldGVyLCB5b3Ugd2lsbCBwYXkgdGhlIGN1cnJlbnQgU3BvdCBwcmljZS4gSWYgeW91IGRvIHNwZWNpZnkgdGhpcyBwYXJhbWV0ZXIsIGl0IG11c3QgYmUgbW9yZSB0aGFuIFVTRCAkMC4wMDEuIFNwZWNpZnlpbmcgYSB2YWx1ZSBiZWxvdyBVU0QgJDAuMDAxIHdpbGwgcmVzdWx0IGluIGFuIGBgSW52YWxpZFBhcmFtZXRlclZhbHVlYGAgZXJyb3IgbWVzc2FnZSB3aGVuIHRoZSBsYXVuY2ggdGVtcGxhdGUgaXMgdXNlZCB0byBsYXVuY2ggYW4gaW5zdGFuY2UuXG4gKiAgIElmIHlvdSBzcGVjaWZ5IGEgbWF4aW11bSBwcmljZSwgeW91ciBTcG90IEluc3RhbmNlcyB3aWxsIGJlIGludGVycnVwdGVkIG1vcmUgZnJlcXVlbnRseSB0aGFuIGlmIHlvdSBkbyBub3Qgc3BlY2lmeSB0aGlzIHBhcmFtZXRlci5cbiAqL1xuTWF4UHJpY2U/OiBzdHJpbmdcbi8qKlxuICogRGVwcmVjYXRlZC5cbiAqL1xuQmxvY2tEdXJhdGlvbk1pbnV0ZXM/OiBudW1iZXJcbi8qKlxuICogVGhlIGVuZCBkYXRlIG9mIHRoZSByZXF1ZXN0LCBpbiBVVEMgZm9ybWF0ICgqWVlZWS1NTS1ERCpUKkhIOk1NOlNTKlopLiBTdXBwb3J0ZWQgb25seSBmb3IgcGVyc2lzdGVudCByZXF1ZXN0cy5cbiAqICAgKyAgRm9yIGEgcGVyc2lzdGVudCByZXF1ZXN0LCB0aGUgcmVxdWVzdCByZW1haW5zIGFjdGl2ZSB1bnRpbCB0aGUgYGBWYWxpZFVudGlsYGAgZGF0ZSBhbmQgdGltZSBpcyByZWFjaGVkLiBPdGhlcndpc2UsIHRoZSByZXF1ZXN0IHJlbWFpbnMgYWN0aXZlIHVudGlsIHlvdSBjYW5jZWwgaXQuXG4gKiAgICsgIEZvciBhIG9uZS10aW1lIHJlcXVlc3QsIGBgVmFsaWRVbnRpbGBgIGlzIG5vdCBzdXBwb3J0ZWQuIFRoZSByZXF1ZXN0IHJlbWFpbnMgYWN0aXZlIHVudGlsIGFsbCBpbnN0YW5jZXMgbGF1bmNoIG9yIHlvdSBjYW5jZWwgdGhlIHJlcXVlc3QuXG4gKiAgIFxuICogIERlZmF1bHQ6IDcgZGF5cyBmcm9tIHRoZSBjdXJyZW50IGRhdGVcbiAqL1xuVmFsaWRVbnRpbD86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgYXR0cmlidXRlcyBmb3IgdGhlIGluc3RhbmNlIHR5cGVzLiBXaGVuIHlvdSBzcGVjaWZ5IGluc3RhbmNlIGF0dHJpYnV0ZXMsIEFtYXpvbiBFQzIgd2lsbCBpZGVudGlmeSBpbnN0YW5jZSB0eXBlcyB3aXRoIHRoZXNlIGF0dHJpYnV0ZXMuXG4gKiAgWW91IG11c3Qgc3BlY2lmeSBgYFZDcHVDb3VudGBgIGFuZCBgYE1lbW9yeU1pQmBgLiBBbGwgb3RoZXIgYXR0cmlidXRlcyBhcmUgb3B0aW9uYWwuIEFueSB1bnNwZWNpZmllZCBvcHRpb25hbCBhdHRyaWJ1dGUgaXMgc2V0IHRvIGl0cyBkZWZhdWx0LlxuICogIFdoZW4geW91IHNwZWNpZnkgbXVsdGlwbGUgYXR0cmlidXRlcywgeW91IGdldCBpbnN0YW5jZSB0eXBlcyB0aGF0IHNhdGlzZnkgYWxsIG9mIHRoZSBzcGVjaWZpZWQgYXR0cmlidXRlcy4gSWYgeW91IHNwZWNpZnkgbXVsdGlwbGUgdmFsdWVzIGZvciBhbiBhdHRyaWJ1dGUsIHlvdSBnZXQgaW5zdGFuY2UgdHlwZXMgdGhhdCBzYXRpc2Z5IGFueSBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlcy5cbiAqICBUbyBsaW1pdCB0aGUgbGlzdCBvZiBpbnN0YW5jZSB0eXBlcyBmcm9tIHdoaWNoIEFtYXpvbiBFQzIgY2FuIGlkZW50aWZ5IG1hdGNoaW5nIGluc3RhbmNlIHR5cGVzLCB5b3UgY2FuIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzLCBidXQgbm90IGJvdGggaW4gdGhlIHNhbWUgcmVxdWVzdDpcbiAqICAgKyAgYGBBbGxvd2VkSW5zdGFuY2VUeXBlc2BgIC0gVGhlIGluc3RhbmNlIHR5cGVzIHRvIGluY2x1ZGUgaW4gdGhlIGxpc3QuIEFsbCBvdGhlciBpbnN0YW5jZSB0eXBlcyBhcmUgaWdub3JlZCwgZXZlbiBpZiB0aGV5IG1hdGNoIHlvdXIgc3BlY2lmaWVkIGF0dHJpYnV0ZXMuXG4gKiAgICsgIGBgRXhjbHVkZWRJbnN0YW5jZVR5cGVzYGAgLSBUaGUgaW5zdGFuY2UgdHlwZXMgdG8gZXhjbHVkZSBmcm9tIHRoZSBsaXN0LCBldmVuIGlmIHRoZXkgbWF0Y2ggeW91ciBzcGVjaWZpZWQgYXR0cmlidXRlcy5cbiAqICAgXG4gKiAgIElmIHlvdSBzcGVjaWZ5IGBgSW5zdGFuY2VSZXF1aXJlbWVudHNgYCwgeW91IGNhbid0IHNwZWNpZnkgYGBJbnN0YW5jZVR5cGVgYC5cbiAqICBBdHRyaWJ1dGUtYmFzZWQgaW5zdGFuY2UgdHlwZSBzZWxlY3Rpb24gaXMgb25seSBzdXBwb3J0ZWQgd2hlbiB1c2luZyBBdXRvIFNjYWxpbmcgZ3JvdXBzLCBFQzIgRmxlZXQsIGFuZCBTcG90IEZsZWV0IHRvIGxhdW5jaCBpbnN0YW5jZXMuIElmIHlvdSBwbGFuIHRvIHVzZSB0aGUgbGF1bmNoIHRlbXBsYXRlIGluIHRoZSBbbGF1bmNoIGluc3RhbmNlIHdpemFyZF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2VjMi1sYXVuY2gtaW5zdGFuY2Utd2l6YXJkLmh0bWwpLCBvciB3aXRoIHRoZSBbUnVuSW5zdGFuY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1J1bkluc3RhbmNlcy5odG1sKSBBUEkgb3IgW0FXUzo6RUMyOjpJbnN0YW5jZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZWMyLWluc3RhbmNlLmh0bWwpQVdTIENsb3VkRm9ybWF0aW9uIHJlc291cmNlLCB5b3UgY2FuJ3Qgc3BlY2lmeSBgYEluc3RhbmNlUmVxdWlyZW1lbnRzYGAuXG4gKiAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1NwZWNpZnkgYXR0cmlidXRlcyBmb3IgaW5zdGFuY2UgdHlwZSBzZWxlY3Rpb24gZm9yIEVDMiBGbGVldCBvciBTcG90IEZsZWV0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWMyLWZsZWV0LWF0dHJpYnV0ZS1iYXNlZC1pbnN0YW5jZS10eXBlLXNlbGVjdGlvbi5odG1sKSBhbmQgW1Nwb3QgcGxhY2VtZW50IHNjb3JlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvc3BvdC1wbGFjZW1lbnQtc2NvcmUuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlUmVxdWlyZW1lbnRzIHtcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgY3VycmVudCBvciBwcmV2aW91cyBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzIGFyZSBpbmNsdWRlZC4gVGhlIGN1cnJlbnQgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlcyBhcmUgcmVjb21tZW5kZWQgZm9yIHVzZS4gQ3VycmVudCBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzIGFyZSB0eXBpY2FsbHkgdGhlIGxhdGVzdCB0d28gdG8gdGhyZWUgZ2VuZXJhdGlvbnMgaW4gZWFjaCBpbnN0YW5jZSBmYW1pbHkuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0luc3RhbmNlIHR5cGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvaW5zdGFuY2UtdHlwZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICogIEZvciBjdXJyZW50IGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMsIHNwZWNpZnkgYGBjdXJyZW50YGAuXG4gKiAgRm9yIHByZXZpb3VzIGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMsIHNwZWNpZnkgYGBwcmV2aW91c2BgLlxuICogIERlZmF1bHQ6IEN1cnJlbnQgYW5kIHByZXZpb3VzIGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXNcbiAqL1xuSW5zdGFuY2VHZW5lcmF0aW9ucz86IHN0cmluZ1tdXG5NZW1vcnlHaUJQZXJWQ3B1PzogTWVtb3J5R2lCUGVyVkNwdVxuLyoqXG4gKiBUaGUgYWNjZWxlcmF0b3IgdHlwZXMgdGhhdCBtdXN0IGJlIG9uIHRoZSBpbnN0YW5jZSB0eXBlLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBGUEdBIGFjY2VsZXJhdG9ycywgc3BlY2lmeSBgYGZwZ2FgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggR1BVIGFjY2VsZXJhdG9ycywgc3BlY2lmeSBgYGdwdWBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBJbmZlcmVuY2UgYWNjZWxlcmF0b3JzLCBzcGVjaWZ5IGBgaW5mZXJlbmNlYGAuXG4gKiAgIFxuICogIERlZmF1bHQ6IEFueSBhY2NlbGVyYXRvciB0eXBlXG4gKi9cbkFjY2VsZXJhdG9yVHlwZXM/OiBzdHJpbmdbXVxuVkNwdUNvdW50PzogVkNwdUNvdW50XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIGluc3RhbmNlIHR5cGVzIG11c3QgaGF2ZSBhY2NlbGVyYXRvcnMgYnkgc3BlY2lmaWMgbWFudWZhY3R1cmVycy5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggQVdTIGRldmljZXMsIHNwZWNpZnkgYGBhbWF6b24td2ViLXNlcnZpY2VzYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEFNRCBkZXZpY2VzLCBzcGVjaWZ5IGBgYW1kYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEhhYmFuYSBkZXZpY2VzLCBzcGVjaWZ5IGBgaGFiYW5hYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIE5WSURJQSBkZXZpY2VzLCBzcGVjaWZ5IGBgbnZpZGlhYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIFhpbGlueCBkZXZpY2VzLCBzcGVjaWZ5IGBgeGlsaW54YGAuXG4gKiAgIFxuICogIERlZmF1bHQ6IEFueSBtYW51ZmFjdHVyZXJcbiAqL1xuQWNjZWxlcmF0b3JNYW51ZmFjdHVyZXJzPzogc3RyaW5nW11cbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgaW5zdGFuY2UgdHlwZXMgd2l0aCBpbnN0YW5jZSBzdG9yZSB2b2x1bWVzIGFyZSBpbmNsdWRlZCwgZXhjbHVkZWQsIG9yIHJlcXVpcmVkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgW0FtYXpvbiBFQzIgaW5zdGFuY2Ugc3RvcmVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9JbnN0YW5jZVN0b3JhZ2UuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICogICArICBUbyBpbmNsdWRlIGluc3RhbmNlIHR5cGVzIHdpdGggaW5zdGFuY2Ugc3RvcmUgdm9sdW1lcywgc3BlY2lmeSBgYGluY2x1ZGVkYGAuXG4gKiAgICsgIFRvIHJlcXVpcmUgb25seSBpbnN0YW5jZSB0eXBlcyB3aXRoIGluc3RhbmNlIHN0b3JlIHZvbHVtZXMsIHNwZWNpZnkgYGByZXF1aXJlZGBgLlxuICogICArICBUbyBleGNsdWRlIGluc3RhbmNlIHR5cGVzIHdpdGggaW5zdGFuY2Ugc3RvcmUgdm9sdW1lcywgc3BlY2lmeSBgYGV4Y2x1ZGVkYGAuXG4gKiAgIFxuICogIERlZmF1bHQ6IGBgaW5jbHVkZWRgYFxuICovXG5Mb2NhbFN0b3JhZ2U/OiBzdHJpbmdcbi8qKlxuICogVGhlIENQVSBtYW51ZmFjdHVyZXJzIHRvIGluY2x1ZGUuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEludGVsIENQVXMsIHNwZWNpZnkgYGBpbnRlbGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBBTUQgQ1BVcywgc3BlY2lmeSBgYGFtZGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBBV1MgQ1BVcywgc3BlY2lmeSBgYGFtYXpvbi13ZWItc2VydmljZXNgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggQXBwbGUgQ1BVcywgc3BlY2lmeSBgYGFwcGxlYGAuXG4gKiAgIFxuICogICBEb24ndCBjb25mdXNlIHRoZSBDUFUgbWFudWZhY3R1cmVyIHdpdGggdGhlIENQVSBhcmNoaXRlY3R1cmUuIEluc3RhbmNlcyB3aWxsIGJlIGxhdW5jaGVkIHdpdGggYSBjb21wYXRpYmxlIENQVSBhcmNoaXRlY3R1cmUgYmFzZWQgb24gdGhlIEFtYXpvbiBNYWNoaW5lIEltYWdlIChBTUkpIHRoYXQgeW91IHNwZWNpZnkgaW4geW91ciBsYXVuY2ggdGVtcGxhdGUuXG4gKiAgIERlZmF1bHQ6IEFueSBtYW51ZmFjdHVyZXJcbiAqL1xuQ3B1TWFudWZhY3R1cmVycz86IHN0cmluZ1tdXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIGJhcmUgbWV0YWwgaW5zdGFuY2UgdHlwZXMgbXVzdCBiZSBpbmNsdWRlZCwgZXhjbHVkZWQsIG9yIHJlcXVpcmVkLlxuICogICArICBUbyBpbmNsdWRlIGJhcmUgbWV0YWwgaW5zdGFuY2UgdHlwZXMsIHNwZWNpZnkgYGBpbmNsdWRlZGBgLlxuICogICArICBUbyByZXF1aXJlIG9ubHkgYmFyZSBtZXRhbCBpbnN0YW5jZSB0eXBlcywgc3BlY2lmeSBgYHJlcXVpcmVkYGAuXG4gKiAgICsgIFRvIGV4Y2x1ZGUgYmFyZSBtZXRhbCBpbnN0YW5jZSB0eXBlcywgc3BlY2lmeSBgYGV4Y2x1ZGVkYGAuXG4gKiAgIFxuICogIERlZmF1bHQ6IGBgZXhjbHVkZWRgYFxuICovXG5CYXJlTWV0YWw/OiBzdHJpbmdcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgaW5zdGFuY2UgdHlwZXMgbXVzdCBzdXBwb3J0IGhpYmVybmF0aW9uIGZvciBPbi1EZW1hbmQgSW5zdGFuY2VzLlxuICogIFRoaXMgcGFyYW1ldGVyIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFtHZXRTcG90UGxhY2VtZW50U2NvcmVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0dldFNwb3RQbGFjZW1lbnRTY29yZXMuaHRtbCkuXG4gKiAgRGVmYXVsdDogYGBmYWxzZWBgXG4gKi9cblJlcXVpcmVIaWJlcm5hdGVTdXBwb3J0PzogYm9vbGVhblxuLyoqXG4gKiBbUHJpY2UgcHJvdGVjdGlvbl0gVGhlIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGZvciBTcG90IEluc3RhbmNlcywgYXMgYSBwZXJjZW50YWdlIG9mIGFuIGlkZW50aWZpZWQgT24tRGVtYW5kIHByaWNlLiBUaGUgaWRlbnRpZmllZCBPbi1EZW1hbmQgcHJpY2UgaXMgdGhlIHByaWNlIG9mIHRoZSBsb3dlc3QgcHJpY2VkIGN1cnJlbnQgZ2VuZXJhdGlvbiBDLCBNLCBvciBSIGluc3RhbmNlIHR5cGUgd2l0aCB5b3VyIHNwZWNpZmllZCBhdHRyaWJ1dGVzLiBJZiBubyBjdXJyZW50IGdlbmVyYXRpb24gQywgTSwgb3IgUiBpbnN0YW5jZSB0eXBlIG1hdGNoZXMgeW91ciBhdHRyaWJ1dGVzLCB0aGVuIHRoZSBpZGVudGlmaWVkIHByaWNlIGlzIGZyb20gdGhlIGxvd2VzdCBwcmljZWQgY3VycmVudCBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzLCBhbmQgZmFpbGluZyB0aGF0LCBmcm9tIHRoZSBsb3dlc3QgcHJpY2VkIHByZXZpb3VzIGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMgdGhhdCBtYXRjaCB5b3VyIGF0dHJpYnV0ZXMuIFdoZW4gQW1hem9uIEVDMiBzZWxlY3RzIGluc3RhbmNlIHR5cGVzIHdpdGggeW91ciBhdHRyaWJ1dGVzLCBpdCB3aWxsIGV4Y2x1ZGUgaW5zdGFuY2UgdHlwZXMgd2hvc2UgcHJpY2UgZXhjZWVkcyB5b3VyIHNwZWNpZmllZCB0aHJlc2hvbGQuXG4gKiAgVGhlIHBhcmFtZXRlciBhY2NlcHRzIGFuIGludGVnZXIsIHdoaWNoIEFtYXpvbiBFQzIgaW50ZXJwcmV0cyBhcyBhIHBlcmNlbnRhZ2UuXG4gKiAgSWYgeW91IHNldCBgYFRhcmdldENhcGFjaXR5VW5pdFR5cGVgYCB0byBgYHZjcHVgYCBvciBgYG1lbW9yeS1taWJgYCwgdGhlIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGlzIGJhc2VkIG9uIHRoZSBwZXIgdkNQVSBvciBwZXIgbWVtb3J5IHByaWNlIGluc3RlYWQgb2YgdGhlIHBlciBpbnN0YW5jZSBwcmljZS5cbiAqICAgT25seSBvbmUgb2YgYGBTcG90TWF4UHJpY2VQZXJjZW50YWdlT3Zlckxvd2VzdFByaWNlYGAgb3IgYGBNYXhTcG90UHJpY2VBc1BlcmNlbnRhZ2VPZk9wdGltYWxPbkRlbWFuZFByaWNlYGAgY2FuIGJlIHNwZWNpZmllZC4gSWYgeW91IGRvbid0IHNwZWNpZnkgZWl0aGVyLCBBbWF6b24gRUMyIHdpbGwgYXV0b21hdGljYWxseSBhcHBseSBvcHRpbWFsIHByaWNlIHByb3RlY3Rpb24gdG8gY29uc2lzdGVudGx5IHNlbGVjdCBmcm9tIGEgd2lkZSByYW5nZSBvZiBpbnN0YW5jZSB0eXBlcy4gVG8gaW5kaWNhdGUgbm8gcHJpY2UgcHJvdGVjdGlvbiB0aHJlc2hvbGQgZm9yIFNwb3QgSW5zdGFuY2VzLCBtZWFuaW5nIHlvdSB3YW50IHRvIGNvbnNpZGVyIGFsbCBpbnN0YW5jZSB0eXBlcyB0aGF0IG1hdGNoIHlvdXIgYXR0cmlidXRlcywgaW5jbHVkZSBvbmUgb2YgdGhlc2UgcGFyYW1ldGVycyBhbmQgc3BlY2lmeSBhIGhpZ2ggdmFsdWUsIHN1Y2ggYXMgYGA5OTk5OTlgYC5cbiAqL1xuTWF4U3BvdFByaWNlQXNQZXJjZW50YWdlT2ZPcHRpbWFsT25EZW1hbmRQcmljZT86IG51bWJlclxuLyoqXG4gKiBbUHJpY2UgcHJvdGVjdGlvbl0gVGhlIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGZvciBPbi1EZW1hbmQgSW5zdGFuY2VzLCBhcyBhIHBlcmNlbnRhZ2UgaGlnaGVyIHRoYW4gYW4gaWRlbnRpZmllZCBPbi1EZW1hbmQgcHJpY2UuIFRoZSBpZGVudGlmaWVkIE9uLURlbWFuZCBwcmljZSBpcyB0aGUgcHJpY2Ugb2YgdGhlIGxvd2VzdCBwcmljZWQgY3VycmVudCBnZW5lcmF0aW9uIEMsIE0sIG9yIFIgaW5zdGFuY2UgdHlwZSB3aXRoIHlvdXIgc3BlY2lmaWVkIGF0dHJpYnV0ZXMuIFdoZW4gQW1hem9uIEVDMiBzZWxlY3RzIGluc3RhbmNlIHR5cGVzIHdpdGggeW91ciBhdHRyaWJ1dGVzLCBpdCB3aWxsIGV4Y2x1ZGUgaW5zdGFuY2UgdHlwZXMgd2hvc2UgcHJpY2UgZXhjZWVkcyB5b3VyIHNwZWNpZmllZCB0aHJlc2hvbGQuXG4gKiAgVGhlIHBhcmFtZXRlciBhY2NlcHRzIGFuIGludGVnZXIsIHdoaWNoIEFtYXpvbiBFQzIgaW50ZXJwcmV0cyBhcyBhIHBlcmNlbnRhZ2UuXG4gKiAgVG8gdHVybiBvZmYgcHJpY2UgcHJvdGVjdGlvbiwgc3BlY2lmeSBhIGhpZ2ggdmFsdWUsIHN1Y2ggYXMgYGA5OTk5OTlgYC5cbiAqICBUaGlzIHBhcmFtZXRlciBpcyBub3Qgc3VwcG9ydGVkIGZvciBbR2V0U3BvdFBsYWNlbWVudFNjb3Jlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRTcG90UGxhY2VtZW50U2NvcmVzLmh0bWwpIGFuZCBbR2V0SW5zdGFuY2VUeXBlc0Zyb21JbnN0YW5jZVJlcXVpcmVtZW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRJbnN0YW5jZVR5cGVzRnJvbUluc3RhbmNlUmVxdWlyZW1lbnRzLmh0bWwpLlxuICogICBJZiB5b3Ugc2V0IGBgVGFyZ2V0Q2FwYWNpdHlVbml0VHlwZWBgIHRvIGBgdmNwdWBgIG9yIGBgbWVtb3J5LW1pYmBgLCB0aGUgcHJpY2UgcHJvdGVjdGlvbiB0aHJlc2hvbGQgaXMgYXBwbGllZCBiYXNlZCBvbiB0aGUgcGVyLXZDUFUgb3IgcGVyLW1lbW9yeSBwcmljZSBpbnN0ZWFkIG9mIHRoZSBwZXItaW5zdGFuY2UgcHJpY2UuXG4gKiAgIERlZmF1bHQ6IGBgMjBgYFxuICovXG5PbkRlbWFuZE1heFByaWNlUGVyY2VudGFnZU92ZXJMb3dlc3RQcmljZT86IG51bWJlclxuTWVtb3J5TWlCPzogTWVtb3J5TWlCXG4vKipcbiAqIFRoZSB0eXBlIG9mIGxvY2FsIHN0b3JhZ2UgdGhhdCBpcyByZXF1aXJlZC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggaGFyZCBkaXNrIGRyaXZlIChIREQpIHN0b3JhZ2UsIHNwZWNpZnkgYGBoZGRgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggc29saWQgc3RhdGUgZHJpdmUgKFNTRCkgc3RvcmFnZSwgc3BlY2lmeSBgYHNzZGBgLlxuICogICBcbiAqICBEZWZhdWx0OiBgYGhkZGBgIGFuZCBgYHNzZGBgXG4gKi9cbkxvY2FsU3RvcmFnZVR5cGVzPzogc3RyaW5nW11cbk5ldHdvcmtJbnRlcmZhY2VDb3VudD86IE5ldHdvcmtJbnRlcmZhY2VDb3VudFxuLyoqXG4gKiBUaGUgaW5zdGFuY2UgdHlwZXMgdG8gZXhjbHVkZS5cbiAqICBZb3UgY2FuIHVzZSBzdHJpbmdzIHdpdGggb25lIG9yIG1vcmUgd2lsZCBjYXJkcywgcmVwcmVzZW50ZWQgYnkgYW4gYXN0ZXJpc2sgKGBgKmBgKSwgdG8gZXhjbHVkZSBhbiBpbnN0YW5jZSB0eXBlLCBzaXplLCBvciBnZW5lcmF0aW9uLiBUaGUgZm9sbG93aW5nIGFyZSBleGFtcGxlczogYGBtNS44eGxhcmdlYGAsIGBgYzUqLipgYCwgYGBtNWEuKmBgLCBgYHIqYGAsIGBgKjMqYGAuXG4gKiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBzcGVjaWZ5IGBgYzUqYGAsQW1hem9uIEVDMiB3aWxsIGV4Y2x1ZGUgdGhlIGVudGlyZSBDNSBpbnN0YW5jZSBmYW1pbHksIHdoaWNoIGluY2x1ZGVzIGFsbCBDNWEgYW5kIEM1biBpbnN0YW5jZSB0eXBlcy4gSWYgeW91IHNwZWNpZnkgYGBtNWEuKmBgLCBBbWF6b24gRUMyIHdpbGwgZXhjbHVkZSBhbGwgdGhlIE01YSBpbnN0YW5jZSB0eXBlcywgYnV0IG5vdCB0aGUgTTVuIGluc3RhbmNlIHR5cGVzLlxuICogICBJZiB5b3Ugc3BlY2lmeSBgYEV4Y2x1ZGVkSW5zdGFuY2VUeXBlc2BgLCB5b3UgY2FuJ3Qgc3BlY2lmeSBgYEFsbG93ZWRJbnN0YW5jZVR5cGVzYGAuXG4gKiAgIERlZmF1bHQ6IE5vIGV4Y2x1ZGVkIGluc3RhbmNlIHR5cGVzXG4gKi9cbkV4Y2x1ZGVkSW5zdGFuY2VUeXBlcz86IHN0cmluZ1tdXG4vKipcbiAqIFRoZSBpbnN0YW5jZSB0eXBlcyB0byBhcHBseSB5b3VyIHNwZWNpZmllZCBhdHRyaWJ1dGVzIGFnYWluc3QuIEFsbCBvdGhlciBpbnN0YW5jZSB0eXBlcyBhcmUgaWdub3JlZCwgZXZlbiBpZiB0aGV5IG1hdGNoIHlvdXIgc3BlY2lmaWVkIGF0dHJpYnV0ZXMuXG4gKiAgWW91IGNhbiB1c2Ugc3RyaW5ncyB3aXRoIG9uZSBvciBtb3JlIHdpbGQgY2FyZHMsIHJlcHJlc2VudGVkIGJ5IGFuIGFzdGVyaXNrIChgYCpgYCksIHRvIGFsbG93IGFuIGluc3RhbmNlIHR5cGUsIHNpemUsIG9yIGdlbmVyYXRpb24uIFRoZSBmb2xsb3dpbmcgYXJlIGV4YW1wbGVzOiBgYG01Ljh4bGFyZ2VgYCwgYGBjNSouKmBgLCBgYG01YS4qYGAsIGBgcipgYCwgYGAqMypgYC5cbiAqICBGb3IgZXhhbXBsZSwgaWYgeW91IHNwZWNpZnkgYGBjNSpgYCxBbWF6b24gRUMyIHdpbGwgYWxsb3cgdGhlIGVudGlyZSBDNSBpbnN0YW5jZSBmYW1pbHksIHdoaWNoIGluY2x1ZGVzIGFsbCBDNWEgYW5kIEM1biBpbnN0YW5jZSB0eXBlcy4gSWYgeW91IHNwZWNpZnkgYGBtNWEuKmBgLCBBbWF6b24gRUMyIHdpbGwgYWxsb3cgYWxsIHRoZSBNNWEgaW5zdGFuY2UgdHlwZXMsIGJ1dCBub3QgdGhlIE01biBpbnN0YW5jZSB0eXBlcy5cbiAqICAgSWYgeW91IHNwZWNpZnkgYGBBbGxvd2VkSW5zdGFuY2VUeXBlc2BgLCB5b3UgY2FuJ3Qgc3BlY2lmeSBgYEV4Y2x1ZGVkSW5zdGFuY2VUeXBlc2BgLlxuICogICBEZWZhdWx0OiBBbGwgaW5zdGFuY2UgdHlwZXNcbiAqL1xuQWxsb3dlZEluc3RhbmNlVHlwZXM/OiBzdHJpbmdbXVxuQWNjZWxlcmF0b3JDb3VudD86IEFjY2VsZXJhdG9yQ291bnRcbk5ldHdvcmtCYW5kd2lkdGhHYnBzPzogTmV0d29ya0JhbmR3aWR0aEdicHNcbkJhc2VsaW5lUGVyZm9ybWFuY2VGYWN0b3JzPzogQmFzZWxpbmVQZXJmb3JtYW5jZUZhY3RvcnNcbi8qKlxuICogW1ByaWNlIHByb3RlY3Rpb25dIFRoZSBwcmljZSBwcm90ZWN0aW9uIHRocmVzaG9sZCBmb3IgU3BvdCBJbnN0YW5jZXMsIGFzIGEgcGVyY2VudGFnZSBoaWdoZXIgdGhhbiBhbiBpZGVudGlmaWVkIFNwb3QgcHJpY2UuIFRoZSBpZGVudGlmaWVkIFNwb3QgcHJpY2UgaXMgdGhlIFNwb3QgcHJpY2Ugb2YgdGhlIGxvd2VzdCBwcmljZWQgY3VycmVudCBnZW5lcmF0aW9uIEMsIE0sIG9yIFIgaW5zdGFuY2UgdHlwZSB3aXRoIHlvdXIgc3BlY2lmaWVkIGF0dHJpYnV0ZXMuIElmIG5vIGN1cnJlbnQgZ2VuZXJhdGlvbiBDLCBNLCBvciBSIGluc3RhbmNlIHR5cGUgbWF0Y2hlcyB5b3VyIGF0dHJpYnV0ZXMsIHRoZW4gdGhlIGlkZW50aWZpZWQgU3BvdCBwcmljZSBpcyBmcm9tIHRoZSBsb3dlc3QgcHJpY2VkIGN1cnJlbnQgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlcywgYW5kIGZhaWxpbmcgdGhhdCwgZnJvbSB0aGUgbG93ZXN0IHByaWNlZCBwcmV2aW91cyBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzIHRoYXQgbWF0Y2ggeW91ciBhdHRyaWJ1dGVzLiBXaGVuIEFtYXpvbiBFQzIgc2VsZWN0cyBpbnN0YW5jZSB0eXBlcyB3aXRoIHlvdXIgYXR0cmlidXRlcywgaXQgd2lsbCBleGNsdWRlIGluc3RhbmNlIHR5cGVzIHdob3NlIFNwb3QgcHJpY2UgZXhjZWVkcyB5b3VyIHNwZWNpZmllZCB0aHJlc2hvbGQuXG4gKiAgVGhlIHBhcmFtZXRlciBhY2NlcHRzIGFuIGludGVnZXIsIHdoaWNoIEFtYXpvbiBFQzIgaW50ZXJwcmV0cyBhcyBhIHBlcmNlbnRhZ2UuXG4gKiAgSWYgeW91IHNldCBgYFRhcmdldENhcGFjaXR5VW5pdFR5cGVgYCB0byBgYHZjcHVgYCBvciBgYG1lbW9yeS1taWJgYCwgdGhlIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGlzIGFwcGxpZWQgYmFzZWQgb24gdGhlIHBlci12Q1BVIG9yIHBlci1tZW1vcnkgcHJpY2UgaW5zdGVhZCBvZiB0aGUgcGVyLWluc3RhbmNlIHByaWNlLlxuICogIFRoaXMgcGFyYW1ldGVyIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFtHZXRTcG90UGxhY2VtZW50U2NvcmVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0dldFNwb3RQbGFjZW1lbnRTY29yZXMuaHRtbCkgYW5kIFtHZXRJbnN0YW5jZVR5cGVzRnJvbUluc3RhbmNlUmVxdWlyZW1lbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0dldEluc3RhbmNlVHlwZXNGcm9tSW5zdGFuY2VSZXF1aXJlbWVudHMuaHRtbCkuXG4gKiAgIE9ubHkgb25lIG9mIGBgU3BvdE1heFByaWNlUGVyY2VudGFnZU92ZXJMb3dlc3RQcmljZWBgIG9yIGBgTWF4U3BvdFByaWNlQXNQZXJjZW50YWdlT2ZPcHRpbWFsT25EZW1hbmRQcmljZWBgIGNhbiBiZSBzcGVjaWZpZWQuIElmIHlvdSBkb24ndCBzcGVjaWZ5IGVpdGhlciwgQW1hem9uIEVDMiB3aWxsIGF1dG9tYXRpY2FsbHkgYXBwbHkgb3B0aW1hbCBwcmljZSBwcm90ZWN0aW9uIHRvIGNvbnNpc3RlbnRseSBzZWxlY3QgZnJvbSBhIHdpZGUgcmFuZ2Ugb2YgaW5zdGFuY2UgdHlwZXMuIFRvIGluZGljYXRlIG5vIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGZvciBTcG90IEluc3RhbmNlcywgbWVhbmluZyB5b3Ugd2FudCB0byBjb25zaWRlciBhbGwgaW5zdGFuY2UgdHlwZXMgdGhhdCBtYXRjaCB5b3VyIGF0dHJpYnV0ZXMsIGluY2x1ZGUgb25lIG9mIHRoZXNlIHBhcmFtZXRlcnMgYW5kIHNwZWNpZnkgYSBoaWdoIHZhbHVlLCBzdWNoIGFzIGBgOTk5OTk5YGAuXG4gKiAgIERlZmF1bHQ6IGBgMTAwYGBcbiAqL1xuU3BvdE1heFByaWNlUGVyY2VudGFnZU92ZXJMb3dlc3RQcmljZT86IG51bWJlclxuQmFzZWxpbmVFYnNCYW5kd2lkdGhNYnBzPzogQmFzZWxpbmVFYnNCYW5kd2lkdGhNYnBzXG4vKipcbiAqIFRoZSBhY2NlbGVyYXRvcnMgdGhhdCBtdXN0IGJlIG9uIHRoZSBpbnN0YW5jZSB0eXBlLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgQTEwRyBHUFVzLCBzcGVjaWZ5IGBgYTEwZ2BgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgQTEwMCBHUFVzLCBzcGVjaWZ5IGBgYTEwMGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgSDEwMCBHUFVzLCBzcGVjaWZ5IGBgaDEwMGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBBV1MgSW5mZXJlbnRpYSBjaGlwcywgc3BlY2lmeSBgYGluZmVyZW50aWFgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggTlZJRElBIEdSSUQgSzUyMCBHUFVzLCBzcGVjaWZ5IGBgazUyMGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgSzgwIEdQVXMsIHNwZWNpZnkgYGBrODBgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggTlZJRElBIE02MCBHUFVzLCBzcGVjaWZ5IGBgbTYwYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEFNRCBSYWRlb24gUHJvIFY1MjAgR1BVcywgc3BlY2lmeSBgYHJhZGVvbi1wcm8tdjUyMGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgVDQgR1BVcywgc3BlY2lmeSBgYHQ0YGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIE5WSURJQSBUNEcgR1BVcywgc3BlY2lmeSBgYHQ0Z2BgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBYaWxpbnggVlU5UCBGUEdBcywgc3BlY2lmeSBgYHZ1OXBgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggTlZJRElBIFYxMDAgR1BVcywgc3BlY2lmeSBgYHYxMDBgYC5cbiAqICAgXG4gKiAgRGVmYXVsdDogQW55IGFjY2VsZXJhdG9yXG4gKi9cbkFjY2VsZXJhdG9yTmFtZXM/OiBzdHJpbmdbXVxuQWNjZWxlcmF0b3JUb3RhbE1lbW9yeU1pQj86IEFjY2VsZXJhdG9yVG90YWxNZW1vcnlNaUJcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgYnVyc3RhYmxlIHBlcmZvcm1hbmNlIFQgaW5zdGFuY2UgdHlwZXMgYXJlIGluY2x1ZGVkLCBleGNsdWRlZCwgb3IgcmVxdWlyZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0J1cnN0YWJsZSBwZXJmb3JtYW5jZSBpbnN0YW5jZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9idXJzdGFibGUtcGVyZm9ybWFuY2UtaW5zdGFuY2VzLmh0bWwpLlxuICogICArICBUbyBpbmNsdWRlIGJ1cnN0YWJsZSBwZXJmb3JtYW5jZSBpbnN0YW5jZSB0eXBlcywgc3BlY2lmeSBgYGluY2x1ZGVkYGAuXG4gKiAgICsgIFRvIHJlcXVpcmUgb25seSBidXJzdGFibGUgcGVyZm9ybWFuY2UgaW5zdGFuY2UgdHlwZXMsIHNwZWNpZnkgYGByZXF1aXJlZGBgLlxuICogICArICBUbyBleGNsdWRlIGJ1cnN0YWJsZSBwZXJmb3JtYW5jZSBpbnN0YW5jZSB0eXBlcywgc3BlY2lmeSBgYGV4Y2x1ZGVkYGAuXG4gKiAgIFxuICogIERlZmF1bHQ6IGBgZXhjbHVkZWRgYFxuICovXG5CdXJzdGFibGVQZXJmb3JtYW5jZT86IHN0cmluZ1xuVG90YWxMb2NhbFN0b3JhZ2VHQj86IFRvdGFsTG9jYWxTdG9yYWdlR0Jcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gYW1vdW50IG9mIG1lbW9yeSBwZXIgdkNQVSwgaW4gR2lCLlxuICogIERlZmF1bHQ6IE5vIG1pbmltdW0gb3IgbWF4aW11bSBsaW1pdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW1vcnlHaUJQZXJWQ3B1IHtcbi8qKlxuICogVGhlIG1pbmltdW0gYW1vdW50IG9mIG1lbW9yeSBwZXIgdkNQVSwgaW4gR2lCLiBUbyBzcGVjaWZ5IG5vIG1pbmltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSBhbW91bnQgb2YgbWVtb3J5IHBlciB2Q1BVLCBpbiBHaUIuIFRvIHNwZWNpZnkgbm8gbWF4aW11bSBsaW1pdCwgb21pdCB0aGlzIHBhcmFtZXRlci5cbiAqL1xuTWF4PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIG51bWJlciBvZiB2Q1BVcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWQ3B1Q291bnQge1xuLyoqXG4gKiBUaGUgbWluaW11bSBudW1iZXIgb2YgdkNQVXMuIFRvIHNwZWNpZnkgbm8gbWluaW11bSBsaW1pdCwgc3BlY2lmeSBgYDBgYC5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiB2Q1BVcy4gVG8gc3BlY2lmeSBubyBtYXhpbXVtIGxpbWl0LCBvbWl0IHRoaXMgcGFyYW1ldGVyLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gYW1vdW50IG9mIG1lbW9yeSwgaW4gTWlCLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lbW9yeU1pQiB7XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFtb3VudCBvZiBtZW1vcnksIGluIE1pQi4gVG8gc3BlY2lmeSBubyBtaW5pbXVtIGxpbWl0LCBzcGVjaWZ5IGBgMGBgLlxuICovXG5NaW4/OiBudW1iZXJcbi8qKlxuICogVGhlIG1heGltdW0gYW1vdW50IG9mIG1lbW9yeSwgaW4gTWlCLiBUbyBzcGVjaWZ5IG5vIG1heGltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBudW1iZXIgb2YgbmV0d29yayBpbnRlcmZhY2VzLlxuICogIERlZmF1bHQ6IE5vIG1pbmltdW0gb3IgbWF4aW11bSBsaW1pdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrSW50ZXJmYWNlQ291bnQge1xuLyoqXG4gKiBUaGUgbWluaW11bSBudW1iZXIgb2YgbmV0d29yayBpbnRlcmZhY2VzLiBUbyBzcGVjaWZ5IG5vIG1pbmltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgbmV0d29yayBpbnRlcmZhY2VzLiBUbyBzcGVjaWZ5IG5vIG1heGltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBudW1iZXIgb2YgYWNjZWxlcmF0b3JzIChHUFVzLCBGUEdBcywgb3IgQVdTIEluZmVyZW50aWEgY2hpcHMpIG9uIGFuIGluc3RhbmNlLlxuICogIFRvIGV4Y2x1ZGUgYWNjZWxlcmF0b3ItZW5hYmxlZCBpbnN0YW5jZSB0eXBlcywgc2V0IGBgTWF4YGAgdG8gYGAwYGAuXG4gKiAgRGVmYXVsdDogTm8gbWluaW11bSBvciBtYXhpbXVtIGxpbWl0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjY2VsZXJhdG9yQ291bnQge1xuLyoqXG4gKiBUaGUgbWluaW11bSBudW1iZXIgb2YgYWNjZWxlcmF0b3JzLiBUbyBzcGVjaWZ5IG5vIG1pbmltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgYWNjZWxlcmF0b3JzLiBUbyBzcGVjaWZ5IG5vIG1heGltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuIFRvIGV4Y2x1ZGUgYWNjZWxlcmF0b3ItZW5hYmxlZCBpbnN0YW5jZSB0eXBlcywgc2V0IGBgTWF4YGAgdG8gYGAwYGAuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBhbW91bnQgb2YgbmV0d29yayBiYW5kd2lkdGgsIGluIGdpZ2FiaXRzIHBlciBzZWNvbmQgKEdicHMpLlxuICogIERlZmF1bHQ6IE5vIG1pbmltdW0gb3IgbWF4aW11bSBsaW1pdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrQmFuZHdpZHRoR2JwcyB7XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFtb3VudCBvZiBuZXR3b3JrIGJhbmR3aWR0aCwgaW4gR2Jwcy4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgbm90IHNwZWNpZmllZCwgdGhlcmUgaXMgbm8gbWluaW11bSBsaW1pdC5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBuZXR3b3JrIGJhbmR3aWR0aCwgaW4gR2Jwcy4gVG8gc3BlY2lmeSBubyBtYXhpbXVtIGxpbWl0LCBvbWl0IHRoaXMgcGFyYW1ldGVyLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIGJhc2VsaW5lIHBlcmZvcm1hbmNlIHRvIGNvbnNpZGVyLCB1c2luZyBhbiBpbnN0YW5jZSBmYW1pbHkgYXMgYSBiYXNlbGluZSByZWZlcmVuY2UuIFRoZSBpbnN0YW5jZSBmYW1pbHkgZXN0YWJsaXNoZXMgdGhlIGxvd2VzdCBhY2NlcHRhYmxlIGxldmVsIG9mIHBlcmZvcm1hbmNlLiBBbWF6b24gRUMyIHVzZXMgdGhpcyBiYXNlbGluZSB0byBndWlkZSBpbnN0YW5jZSB0eXBlIHNlbGVjdGlvbiwgYnV0IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBzZWxlY3RlZCBpbnN0YW5jZSB0eXBlcyB3aWxsIGFsd2F5cyBleGNlZWQgdGhlIGJhc2VsaW5lIGZvciBldmVyeSBhcHBsaWNhdGlvbi4gQ3VycmVudGx5LCB0aGlzIHBhcmFtZXRlciBvbmx5IHN1cHBvcnRzIENQVSBwZXJmb3JtYW5jZSBhcyBhIGJhc2VsaW5lIHBlcmZvcm1hbmNlIGZhY3Rvci4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUGVyZm9ybWFuY2UgcHJvdGVjdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2VjMi1mbGVldC1hdHRyaWJ1dGUtYmFzZWQtaW5zdGFuY2UtdHlwZS1zZWxlY3Rpb24uaHRtbCNlYzJmbGVldC1hYmlzLXBlcmZvcm1hbmNlLXByb3RlY3Rpb24pIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlbGluZVBlcmZvcm1hbmNlRmFjdG9ycyB7XG5DcHU/OiBDcHVcbn1cbi8qKlxuICogVGhlIENQVSBwZXJmb3JtYW5jZSB0byBjb25zaWRlciwgdXNpbmcgYW4gaW5zdGFuY2UgZmFtaWx5IGFzIHRoZSBiYXNlbGluZSByZWZlcmVuY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3B1IHtcblJlZmVyZW5jZXM/OiBSZWZlcmVuY2VzXG59XG4vKipcbiAqIFNwZWNpZmllcyBhbiBpbnN0YW5jZSBmYW1pbHkgdG8gdXNlIGFzIHRoZSBiYXNlbGluZSByZWZlcmVuY2UgZm9yIENQVSBwZXJmb3JtYW5jZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWZlcmVuY2Uge1xuLyoqXG4gKiBUaGUgaW5zdGFuY2UgZmFtaWx5IHRvIHVzZSBhcyBhIGJhc2VsaW5lIHJlZmVyZW5jZS5cbiAqICAgRW5zdXJlIHRoYXQgeW91IHNwZWNpZnkgdGhlIGNvcnJlY3QgdmFsdWUgZm9yIHRoZSBpbnN0YW5jZSBmYW1pbHkuIFRoZSBpbnN0YW5jZSBmYW1pbHkgaXMgZXZlcnl0aGluZyBiZWZvcmUgdGhlIHBlcmlvZCAoYGAuYGApIGluIHRoZSBpbnN0YW5jZSB0eXBlIG5hbWUuIEZvciBleGFtcGxlLCBpbiB0aGUgaW5zdGFuY2UgdHlwZSBgYGM2aS5sYXJnZWBgLCB0aGUgaW5zdGFuY2UgZmFtaWx5IGlzIGBgYzZpYGAsIG5vdCBgYGM2YGAuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBFQzIgaW5zdGFuY2UgdHlwZSBuYW1pbmcgY29udmVudGlvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lYzIvbGF0ZXN0L2luc3RhbmNldHlwZXMvaW5zdGFuY2UtdHlwZS1uYW1lcy5odG1sKSBpbiAqQW1hem9uIEVDMiBJbnN0YW5jZSBUeXBlcyouXG4gKiAgIFRoZSBmb2xsb3dpbmcgaW5zdGFuY2UgZmFtaWxpZXMgYXJlICpub3Qgc3VwcG9ydGVkKiBmb3IgcGVyZm9ybWFuY2UgcHJvdGVjdGlvbjpcbiAqICAgKyAgIGBgYzFgYCBcbiAqICAgKyAgYGBnM2BgIHwgYGBnM3NgYFxuICogICArICAgYGBocGM3Z2BgIFxuICogICArICBgYG0xYGAgfCBgYG0yYGBcbiAqICAgKyAgYGBtYWMxYGAgfCBgYG1hYzJgYCB8IGBgbWFjMi1tMXVsdHJhYGAgfCBgYG1hYzItbTJgYCB8IGBgbWFjMi1tMnByb2BgXG4gKiAgICsgIGBgcDNkbmBgIHwgYGBwNGRgYCB8IGBgcDVgYFxuICogICArICAgYGB0MWBgIFxuICogICArICBgYHUtMTJ0YjFgYCB8IGBgdS0xOHRiMWBgIHwgYGB1LTI0dGIxYGAgfCBgYHUtM3RiMWBgIHwgYGB1LTZ0YjFgYCB8IGBgdS05dGIxYGAgfCBgYHU3aS0xMnRiYGAgfCBgYHU3aW4tMTZ0YmBgIHwgYGB1N2luLTI0dGJgYCB8IGBgdTdpbi0zMnRiYGBcbiAqICAgXG4gKiAgSWYgeW91IGVuYWJsZSBwZXJmb3JtYW5jZSBwcm90ZWN0aW9uIGJ5IHNwZWNpZnlpbmcgYSBzdXBwb3J0ZWQgaW5zdGFuY2UgZmFtaWx5LCB0aGUgcmV0dXJuZWQgaW5zdGFuY2UgdHlwZXMgd2lsbCBleGNsdWRlIHRoZSBhYm92ZSB1bnN1cHBvcnRlZCBpbnN0YW5jZSBmYW1pbGllcy5cbiAqL1xuSW5zdGFuY2VGYW1pbHk/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gYmFzZWxpbmUgYmFuZHdpZHRoIHRvIEFtYXpvbiBFQlMsIGluIE1icHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBFQlPigJNvcHRpbWl6ZWQgaW5zdGFuY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWJzLW9wdGltaXplZC5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKiAgRGVmYXVsdDogTm8gbWluaW11bSBvciBtYXhpbXVtIGxpbWl0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VsaW5lRWJzQmFuZHdpZHRoTWJwcyB7XG4vKipcbiAqIFRoZSBtaW5pbXVtIGJhc2VsaW5lIGJhbmR3aWR0aCwgaW4gTWJwcy4gVG8gc3BlY2lmeSBubyBtaW5pbXVtIGxpbWl0LCBvbWl0IHRoaXMgcGFyYW1ldGVyLlxuICovXG5NaW4/OiBudW1iZXJcbi8qKlxuICogVGhlIG1heGltdW0gYmFzZWxpbmUgYmFuZHdpZHRoLCBpbiBNYnBzLiBUbyBzcGVjaWZ5IG5vIG1heGltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBhbW91bnQgb2YgdG90YWwgYWNjZWxlcmF0b3IgbWVtb3J5LCBpbiBNaUIuXG4gKiAgRGVmYXVsdDogTm8gbWluaW11bSBvciBtYXhpbXVtIGxpbWl0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjY2VsZXJhdG9yVG90YWxNZW1vcnlNaUIge1xuLyoqXG4gKiBUaGUgbWluaW11bSBhbW91bnQgb2YgYWNjZWxlcmF0b3IgbWVtb3J5LCBpbiBNaUIuIFRvIHNwZWNpZnkgbm8gbWluaW11bSBsaW1pdCwgb21pdCB0aGlzIHBhcmFtZXRlci5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBhY2NlbGVyYXRvciBtZW1vcnksIGluIE1pQi4gVG8gc3BlY2lmeSBubyBtYXhpbXVtIGxpbWl0LCBvbWl0IHRoaXMgcGFyYW1ldGVyLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gYW1vdW50IG9mIHRvdGFsIGxvY2FsIHN0b3JhZ2UsIGluIEdCLlxuICogIERlZmF1bHQ6IE5vIG1pbmltdW0gb3IgbWF4aW11bSBsaW1pdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb3RhbExvY2FsU3RvcmFnZUdCIHtcbi8qKlxuICogVGhlIG1pbmltdW0gYW1vdW50IG9mIHRvdGFsIGxvY2FsIHN0b3JhZ2UsIGluIEdCLiBUbyBzcGVjaWZ5IG5vIG1pbmltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSBhbW91bnQgb2YgdG90YWwgbG9jYWwgc3RvcmFnZSwgaW4gR0IuIFRvIHNwZWNpZnkgbm8gbWF4aW11bSBsaW1pdCwgb21pdCB0aGlzIHBhcmFtZXRlci5cbiAqL1xuTWF4PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBDYXBhY2l0eSBSZXNlcnZhdGlvbiB0YXJnZXRpbmcgb3B0aW9uLiBJZiB5b3UgZG8gbm90IHNwZWNpZnkgdGhpcyBwYXJhbWV0ZXIsIHRoZSBpbnN0YW5jZSdzIENhcGFjaXR5IFJlc2VydmF0aW9uIHByZWZlcmVuY2UgZGVmYXVsdHMgdG8gYGBvcGVuYGAsIHdoaWNoIGVuYWJsZXMgaXQgdG8gcnVuIGluIGFueSBvcGVuIENhcGFjaXR5IFJlc2VydmF0aW9uIHRoYXQgaGFzIG1hdGNoaW5nIGF0dHJpYnV0ZXMgKGluc3RhbmNlIHR5cGUsIHBsYXRmb3JtLCBBdmFpbGFiaWxpdHkgWm9uZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FwYWNpdHlSZXNlcnZhdGlvblNwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBJbmRpY2F0ZXMgdGhlIGluc3RhbmNlJ3MgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gcHJlZmVyZW5jZXMuIFBvc3NpYmxlIHByZWZlcmVuY2VzIGluY2x1ZGU6XG4gKiAgICsgIGBgY2FwYWNpdHktcmVzZXJ2YXRpb25zLW9ubHlgYCAtIFRoZSBpbnN0YW5jZSB3aWxsIG9ubHkgcnVuIGluIGEgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gb3IgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gZ3JvdXAuIElmIGNhcGFjaXR5IGlzbid0IGF2YWlsYWJsZSwgdGhlIGluc3RhbmNlIHdpbGwgZmFpbCB0byBsYXVuY2guXG4gKiAgICsgIGBgb3BlbmBgIC0gVGhlIGluc3RhbmNlIGNhbiBydW4gaW4gYW55IGBgb3BlbmBgIENhcGFjaXR5IFJlc2VydmF0aW9uIHRoYXQgaGFzIG1hdGNoaW5nIGF0dHJpYnV0ZXMgKGluc3RhbmNlIHR5cGUsIHBsYXRmb3JtLCBBdmFpbGFiaWxpdHkgWm9uZSwgdGVuYW5jeSkuXG4gKiAgICsgIGBgbm9uZWBgIC0gVGhlIGluc3RhbmNlIGF2b2lkcyBydW5uaW5nIGluIGEgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gZXZlbiBpZiBvbmUgaXMgYXZhaWxhYmxlLiBUaGUgaW5zdGFuY2UgcnVucyBpbiBPbi1EZW1hbmQgY2FwYWNpdHkuXG4gKi9cbkNhcGFjaXR5UmVzZXJ2YXRpb25QcmVmZXJlbmNlPzogc3RyaW5nXG5DYXBhY2l0eVJlc2VydmF0aW9uVGFyZ2V0PzogQ2FwYWNpdHlSZXNlcnZhdGlvblRhcmdldFxufVxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgdGFyZ2V0IENhcGFjaXR5IFJlc2VydmF0aW9uIG9yIENhcGFjaXR5IFJlc2VydmF0aW9uIGdyb3VwLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENhcGFjaXR5UmVzZXJ2YXRpb25UYXJnZXQge1xuLyoqXG4gKiBUaGUgQVJOIG9mIHRoZSBDYXBhY2l0eSBSZXNlcnZhdGlvbiByZXNvdXJjZSBncm91cCBpbiB3aGljaCB0byBydW4gdGhlIGluc3RhbmNlLlxuICovXG5DYXBhY2l0eVJlc2VydmF0aW9uUmVzb3VyY2VHcm91cEFybj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgSUQgb2YgdGhlIENhcGFjaXR5IFJlc2VydmF0aW9uIGluIHdoaWNoIHRvIHJ1biB0aGUgaW5zdGFuY2UuXG4gKi9cbkNhcGFjaXR5UmVzZXJ2YXRpb25JZD86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgY3JlZGl0IG9wdGlvbiBmb3IgQ1BVIHVzYWdlIG9mIHRoZSBpbnN0YW5jZS4gVmFsaWQgb25seSBmb3IgVCBpbnN0YW5jZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlZGl0U3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIFRoZSBjcmVkaXQgb3B0aW9uIGZvciBDUFUgdXNhZ2Ugb2YgYSBUIGluc3RhbmNlLlxuICogIFZhbGlkIHZhbHVlczogYGBzdGFuZGFyZGBgIHwgYGB1bmxpbWl0ZWRgYFxuICovXG5DcHVDcmVkaXRzPzogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgdGFncyB0byBhcHBseSB0byB0aGUgbGF1bmNoIHRlbXBsYXRlIGR1cmluZyBjcmVhdGlvbi5cbiAqICBUbyBzcGVjaWZ5IHRoZSB0YWdzIGZvciB0aGUgcmVzb3VyY2VzIHRoYXQgYXJlIGNyZWF0ZWQgZHVyaW5nIGluc3RhbmNlIGxhdW5jaCwgdXNlIFtBV1M6OkVDMjo6TGF1bmNoVGVtcGxhdGUgVGFnU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZWMyLWxhdW5jaHRlbXBsYXRlLXRhZ3NwZWNpZmljYXRpb24uaHRtbCkuXG4gKiAgYGBMYXVuY2hUZW1wbGF0ZVRhZ1NwZWNpZmljYXRpb25gYCBpcyBhIHByb3BlcnR5IG9mIFtBV1M6OkVDMjo6TGF1bmNoVGVtcGxhdGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1lYzItbGF1bmNodGVtcGxhdGUuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGF1bmNoVGVtcGxhdGVUYWdTcGVjaWZpY2F0aW9uIHtcbi8qKlxuICogVGhlIHR5cGUgb2YgcmVzb3VyY2UuIFRvIHRhZyBhIGxhdW5jaCB0ZW1wbGF0ZSwgYGBSZXNvdXJjZVR5cGVgYCBtdXN0IGJlIGBgbGF1bmNoLXRlbXBsYXRlYGAuXG4gKi9cblJlc291cmNlVHlwZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdGFncyBmb3IgdGhlIHJlc291cmNlLlxuICovXG5UYWdzPzogVGFnW11cbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWVjMi1sYXVuY2h0ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3cy1lYzItbGF1bmNodGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGluc3RhbmNlIGZhbWlseSB0byB1c2UgYXMgdGhlIGJhc2VsaW5lIHJlZmVyZW5jZSBmb3IgQ1BVIHBlcmZvcm1hbmNlLiBBbGwgaW5zdGFuY2UgdHlwZXMgdGhhdCBtYXRjaCB5b3VyIHNwZWNpZmllZCBhdHRyaWJ1dGVzIGFyZSBjb21wYXJlZCBhZ2FpbnN0IHRoZSBDUFUgcGVyZm9ybWFuY2Ugb2YgdGhlIHJlZmVyZW5jZWQgaW5zdGFuY2UgZmFtaWx5LCByZWdhcmRsZXNzIG9mIENQVSBtYW51ZmFjdHVyZXIgb3IgYXJjaGl0ZWN0dXJlIGRpZmZlcmVuY2VzLlxuICovXG5leHBvcnQgdHlwZSBSZWZlcmVuY2VzID0gUmVmZXJlbmNlW11cblxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgbGF1bmNoIHRlbXBsYXRlLlxuICogIFRoZSBtaW5pbXVtIHJlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHNwZWNpZnlpbmcgYSBsYXVuY2ggdGVtcGxhdGUgYXJlIGFzIGZvbGxvd3M6XG4gKiAgICsgIFlvdSBtdXN0IHNwZWNpZnkgYXQgbGVhc3Qgb25lIHByb3BlcnR5IGZvciB0aGUgbGF1bmNoIHRlbXBsYXRlIGRhdGEuXG4gKiAgICsgIFlvdSBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGEgbmFtZSBmb3IgdGhlIGxhdW5jaCB0ZW1wbGF0ZS4gSWYgeW91IGRvIG5vdCBzcGVjaWZ5IGEgbmFtZSwgQ0ZOIGNyZWF0ZXMgYSBuYW1lIGZvciB5b3UuXG4gKiAgIFxuICogIEEgbGF1bmNoIHRlbXBsYXRlIGNhbiBjb250YWluIHNvbWUgb3IgYWxsIG9mIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIHRvIGxhdW5jaCBhbiBpbnN0YW5jZS4gV2hlbiB5b3UgbGF1bmNoIGFuIGluc3RhbmNlIHVzaW5nIGEgbGF1bmNoIHRlbXBsYXRlLCBpbnN0YW5jZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5vdCBzcGVjaWZpZWQgaW4gdGhlIGxhdW5jaCB0ZW1wbGF0ZSB1c2UgZGVmYXVsdCB2YWx1ZXMsIGV4Y2VwdCB0aGUgYGBJbWFnZUlkYGAgcHJvcGVydHksIHdoaWNoIGhhcyBubyBkZWZhdWx0IHZhbHVlLiBJZiB5b3UgZG8gbm90IHNwZWNpZnkgYW4gQU1JIElEIGZvciB0aGUgbGF1bmNoIHRlbXBsYXRlIGBgSW1hZ2VJZGBgIHByb3BlcnR5LCB5b3UgbXVzdCBzcGVjaWZ5IGFuIEFNSSBJRCBmb3IgdGhlIGluc3RhbmNlIGBgSW1hZ2VJZGBgIHByb3BlcnR5LlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0xhdW5jaCBhbiBpbnN0YW5jZSBmcm9tIGEgbGF1bmNoIHRlbXBsYXRlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWMyLWxhdW5jaC10ZW1wbGF0ZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIF9BV1NfRUMyX0xBVU5DSFRFTVBMQVRFIHtcbi8qKlxuICogQSBuYW1lIGZvciB0aGUgbGF1bmNoIHRlbXBsYXRlLlxuICovXG5MYXVuY2hUZW1wbGF0ZU5hbWU/OiBzdHJpbmdcbkxhdW5jaFRlbXBsYXRlRGF0YTogTGF1bmNoVGVtcGxhdGVEYXRhXG4vKipcbiAqIEEgZGVzY3JpcHRpb24gZm9yIHRoZSBmaXJzdCB2ZXJzaW9uIG9mIHRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gKi9cblZlcnNpb25EZXNjcmlwdGlvbj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdGFncyB0byBhcHBseSB0byB0aGUgbGF1bmNoIHRlbXBsYXRlIG9uIGNyZWF0aW9uLiBUbyB0YWcgdGhlIGxhdW5jaCB0ZW1wbGF0ZSwgdGhlIHJlc291cmNlIHR5cGUgbXVzdCBiZSBgYGxhdW5jaC10ZW1wbGF0ZWBgLlxuICogIFRvIHNwZWNpZnkgdGhlIHRhZ3MgZm9yIHJlc291cmNlcyB0aGF0IGFyZSBjcmVhdGVkIGR1cmluZyBpbnN0YW5jZSBsYXVuY2gsIHVzZSBbVGFnU3BlY2lmaWNhdGlvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEuaHRtbCNjZm4tZWMyLWxhdW5jaHRlbXBsYXRlLWxhdW5jaHRlbXBsYXRlZGF0YS10YWdzcGVjaWZpY2F0aW9ucykuXG4gKi9cblRhZ1NwZWNpZmljYXRpb25zPzogTGF1bmNoVGVtcGxhdGVUYWdTcGVjaWZpY2F0aW9uW11cbkxhdGVzdFZlcnNpb25OdW1iZXI/OiBzdHJpbmdcbkxhdW5jaFRlbXBsYXRlSWQ/OiBzdHJpbmdcbkRlZmF1bHRWZXJzaW9uTnVtYmVyPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGxhdW5jaCB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYXVuY2hUZW1wbGF0ZURhdGEge1xuLyoqXG4gKiBUaGUgbmFtZXMgb2YgdGhlIHNlY3VyaXR5IGdyb3Vwcy4gRm9yIGEgbm9uZGVmYXVsdCBWUEMsIHlvdSBtdXN0IHVzZSBzZWN1cml0eSBncm91cCBJRHMgaW5zdGVhZC5cbiAqICBJZiB5b3Ugc3BlY2lmeSBhIG5ldHdvcmsgaW50ZXJmYWNlLCB5b3UgbXVzdCBzcGVjaWZ5IGFueSBzZWN1cml0eSBncm91cHMgYXMgcGFydCBvZiB0aGUgbmV0d29yayBpbnRlcmZhY2UgaW5zdGVhZCBvZiB1c2luZyB0aGlzIHBhcmFtZXRlci5cbiAqL1xuU2VjdXJpdHlHcm91cHM/OiBzdHJpbmdbXVxuLyoqXG4gKiBUaGUgdGFncyB0byBhcHBseSB0byByZXNvdXJjZXMgdGhhdCBhcmUgY3JlYXRlZCBkdXJpbmcgaW5zdGFuY2UgbGF1bmNoLlxuICogIFRvIHRhZyB0aGUgbGF1bmNoIHRlbXBsYXRlIGl0c2VsZiwgdXNlIFtUYWdTcGVjaWZpY2F0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi1sYXVuY2h0ZW1wbGF0ZS5odG1sI2Nmbi1lYzItbGF1bmNodGVtcGxhdGUtdGFnc3BlY2lmaWNhdGlvbnMpLlxuICovXG5UYWdTcGVjaWZpY2F0aW9ucz86IFRhZ1NwZWNpZmljYXRpb25bXVxuTmV0d29ya1BlcmZvcm1hbmNlT3B0aW9ucz86IE5ldHdvcmtQZXJmb3JtYW5jZU9wdGlvbnNcbi8qKlxuICogVGhlIHVzZXIgZGF0YSB0byBtYWtlIGF2YWlsYWJsZSB0byB0aGUgaW5zdGFuY2UuIFlvdSBtdXN0IHByb3ZpZGUgYmFzZTY0LWVuY29kZWQgdGV4dC4gVXNlciBkYXRhIGlzIGxpbWl0ZWQgdG8gMTYgS0IuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1J1biBjb21tYW5kcyB3aGVuIHlvdSBsYXVuY2ggYW4gRUMyIGluc3RhbmNlIHdpdGggdXNlciBkYXRhIGlucHV0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvdXNlci1kYXRhLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlKi5cbiAqICBJZiB5b3UgYXJlIGNyZWF0aW5nIHRoZSBsYXVuY2ggdGVtcGxhdGUgZm9yIHVzZSB3aXRoIEJBVENILCB0aGUgdXNlciBkYXRhIG11c3QgYmUgcHJvdmlkZWQgaW4gdGhlIFtNSU1FIG11bHRpLXBhcnQgYXJjaGl2ZSBmb3JtYXRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9odHRwczovL2Nsb3VkaW5pdC5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvdG9waWNzL2Zvcm1hdC5odG1sI21pbWUtbXVsdGktcGFydC1hcmNoaXZlKS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQW1hem9uIEVDMiB1c2VyIGRhdGEgaW4gbGF1bmNoIHRlbXBsYXRlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JhdGNoL2xhdGVzdC91c2VyZ3VpZGUvbGF1bmNoLXRlbXBsYXRlcy5odG1sI2x0LXVzZXItZGF0YSkgaW4gdGhlICpVc2VyIEd1aWRlKi5cbiAqL1xuVXNlckRhdGE/OiBzdHJpbmdcbi8qKlxuICogVGhlIGJsb2NrIGRldmljZSBtYXBwaW5nLlxuICovXG5CbG9ja0RldmljZU1hcHBpbmdzPzogQmxvY2tEZXZpY2VNYXBwaW5nW11cbk1haW50ZW5hbmNlT3B0aW9ucz86IE1haW50ZW5hbmNlT3B0aW9uc1xuSWFtSW5zdGFuY2VQcm9maWxlPzogSWFtSW5zdGFuY2VQcm9maWxlXG4vKipcbiAqIFRoZSBJRCBvZiB0aGUga2VybmVsLlxuICogIFdlIHJlY29tbWVuZCB0aGF0IHlvdSB1c2UgUFYtR1JVQiBpbnN0ZWFkIG9mIGtlcm5lbHMgYW5kIFJBTSBkaXNrcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVXNlciBQcm92aWRlZCBLZXJuZWxzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvVXNlclByb3ZpZGVka2VybmVscy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKi9cbktlcm5lbElkPzogc3RyaW5nXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBpbnN0YW5jZSBpcyBvcHRpbWl6ZWQgZm9yIEFtYXpvbiBFQlMgSS9PLiBUaGlzIG9wdGltaXphdGlvbiBwcm92aWRlcyBkZWRpY2F0ZWQgdGhyb3VnaHB1dCB0byBBbWF6b24gRUJTIGFuZCBhbiBvcHRpbWl6ZWQgY29uZmlndXJhdGlvbiBzdGFjayB0byBwcm92aWRlIG9wdGltYWwgQW1hem9uIEVCUyBJL08gcGVyZm9ybWFuY2UuIFRoaXMgb3B0aW1pemF0aW9uIGlzbid0IGF2YWlsYWJsZSB3aXRoIGFsbCBpbnN0YW5jZSB0eXBlcy4gQWRkaXRpb25hbCB1c2FnZSBjaGFyZ2VzIGFwcGx5IHdoZW4gdXNpbmcgYW4gRUJTLW9wdGltaXplZCBpbnN0YW5jZS5cbiAqL1xuRWJzT3B0aW1pemVkPzogYm9vbGVhblxuUGxhY2VtZW50PzogUGxhY2VtZW50XG4vKipcbiAqIFRoZSBuZXR3b3JrIGludGVyZmFjZXMgZm9yIHRoZSBpbnN0YW5jZS5cbiAqL1xuTmV0d29ya0ludGVyZmFjZXM/OiBOZXR3b3JrSW50ZXJmYWNlW11cbkVuY2xhdmVPcHRpb25zPzogRW5jbGF2ZU9wdGlvbnNcbi8qKlxuICogVGhlIElEIG9mIHRoZSBBTUkuIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gc3BlY2lmeSBhIFN5c3RlbXMgTWFuYWdlciBwYXJhbWV0ZXIsIHdoaWNoIHdpbGwgcmVzb2x2ZSB0byBhbiBBTUkgSUQgb24gbGF1bmNoLlxuICogIFZhbGlkIGZvcm1hdHM6XG4gKiAgICsgICBgYGFtaS0wYWMzOTRkNmEzZXhhbXBsZWBgIFxuICogICArICAgYGByZXNvbHZlOnNzbTpwYXJhbWV0ZXItbmFtZWBgIFxuICogICArICAgYGByZXNvbHZlOnNzbTpwYXJhbWV0ZXItbmFtZTp2ZXJzaW9uLW51bWJlcmBgIFxuICogICArICAgYGByZXNvbHZlOnNzbTpwYXJhbWV0ZXItbmFtZTpsYWJlbGBgIFxuICogICBcbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtVc2UgYSBTeXN0ZW1zIE1hbmFnZXIgcGFyYW1ldGVyIHRvIGZpbmQgYW4gQU1JXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZmluZGluZy1hbi1hbWkuaHRtbCN1c2luZy1zeXN0ZW1zLW1hbmFnZXItcGFyYW1ldGVyLXRvLWZpbmQtQU1JKSBpbiB0aGUgKkFtYXpvbiBFbGFzdGljIENvbXB1dGUgQ2xvdWQgVXNlciBHdWlkZSouXG4gKi9cbkltYWdlSWQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIGluc3RhbmNlIHR5cGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBFQzIgaW5zdGFuY2UgdHlwZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9pbnN0YW5jZS10eXBlcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKiAgSWYgeW91IHNwZWNpZnkgYGBJbnN0YW5jZVR5cGVgYCwgeW91IGNhbid0IHNwZWNpZnkgYGBJbnN0YW5jZVJlcXVpcmVtZW50c2BgLlxuICovXG5JbnN0YW5jZVR5cGU/OiBzdHJpbmdcbk1vbml0b3Jpbmc/OiBNb25pdG9yaW5nXG5IaWJlcm5hdGlvbk9wdGlvbnM/OiBIaWJlcm5hdGlvbk9wdGlvbnNcbk1ldGFkYXRhT3B0aW9ucz86IE1ldGFkYXRhT3B0aW9uc1xuLyoqXG4gKiBUaGUgbGljZW5zZSBjb25maWd1cmF0aW9ucy5cbiAqL1xuTGljZW5zZVNwZWNpZmljYXRpb25zPzogTGljZW5zZVNwZWNpZmljYXRpb25bXVxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBhbiBpbnN0YW5jZSBzdG9wcyBvciB0ZXJtaW5hdGVzIHdoZW4geW91IGluaXRpYXRlIHNodXRkb3duIGZyb20gdGhlIGluc3RhbmNlICh1c2luZyB0aGUgb3BlcmF0aW5nIHN5c3RlbSBjb21tYW5kIGZvciBzeXN0ZW0gc2h1dGRvd24pLlxuICogIERlZmF1bHQ6IGBgc3RvcGBgXG4gKi9cbkluc3RhbmNlSW5pdGlhdGVkU2h1dGRvd25CZWhhdmlvcj86IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0byBlbmFibGUgdGhlIGluc3RhbmNlIGZvciBzdG9wIHByb3RlY3Rpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0VuYWJsZSBzdG9wIHByb3RlY3Rpb24gZm9yIHlvdXIgRUMyIGluc3RhbmNlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2VjMi1zdG9wLXByb3RlY3Rpb24uaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICovXG5EaXNhYmxlQXBpU3RvcD86IGJvb2xlYW5cbkNwdU9wdGlvbnM/OiBDcHVPcHRpb25zXG5Qcml2YXRlRG5zTmFtZU9wdGlvbnM/OiBQcml2YXRlRG5zTmFtZU9wdGlvbnNcbi8qKlxuICogVGhlIElEcyBvZiB0aGUgc2VjdXJpdHkgZ3JvdXBzLiBZb3UgY2FuIHNwZWNpZnkgdGhlIElEcyBvZiBleGlzdGluZyBzZWN1cml0eSBncm91cHMgYW5kIHJlZmVyZW5jZXMgdG8gcmVzb3VyY2VzIGNyZWF0ZWQgYnkgdGhlIHN0YWNrIHRlbXBsYXRlLlxuICogIElmIHlvdSBzcGVjaWZ5IGEgbmV0d29yayBpbnRlcmZhY2UsIHlvdSBtdXN0IHNwZWNpZnkgYW55IHNlY3VyaXR5IGdyb3VwcyBhcyBwYXJ0IG9mIHRoZSBuZXR3b3JrIGludGVyZmFjZSBpbnN0ZWFkLlxuICovXG5TZWN1cml0eUdyb3VwSWRzPzogc3RyaW5nW11cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGtleSBwYWlyLiBZb3UgY2FuIGNyZWF0ZSBhIGtleSBwYWlyIHVzaW5nIFtDcmVhdGVLZXlQYWlyXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZUtleVBhaXIuaHRtbCkgb3IgW0ltcG9ydEtleVBhaXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfSW1wb3J0S2V5UGFpci5odG1sKS5cbiAqICAgSWYgeW91IGRvIG5vdCBzcGVjaWZ5IGEga2V5IHBhaXIsIHlvdSBjYW4ndCBjb25uZWN0IHRvIHRoZSBpbnN0YW5jZSB1bmxlc3MgeW91IGNob29zZSBhbiBBTUkgdGhhdCBpcyBjb25maWd1cmVkIHRvIGFsbG93IHVzZXJzIGFub3RoZXIgd2F5IHRvIGxvZyBpbi5cbiAqL1xuS2V5TmFtZT86IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0ZXJtaW5hdGlvbiBwcm90ZWN0aW9uIGlzIGVuYWJsZWQgZm9yIHRoZSBpbnN0YW5jZS4gVGhlIGRlZmF1bHQgaXMgYGBmYWxzZWBgLCB3aGljaCBtZWFucyB0aGF0IHlvdSBjYW4gdGVybWluYXRlIHRoZSBpbnN0YW5jZSB1c2luZyB0aGUgQW1hem9uIEVDMiBjb25zb2xlLCBjb21tYW5kIGxpbmUgdG9vbHMsIG9yIEFQSS4gWW91IGNhbiBlbmFibGUgdGVybWluYXRpb24gcHJvdGVjdGlvbiB3aGVuIHlvdSBsYXVuY2ggYW4gaW5zdGFuY2UsIHdoaWxlIHRoZSBpbnN0YW5jZSBpcyBydW5uaW5nLCBvciB3aGlsZSB0aGUgaW5zdGFuY2UgaXMgc3RvcHBlZC5cbiAqL1xuRGlzYWJsZUFwaVRlcm1pbmF0aW9uPzogYm9vbGVhblxuSW5zdGFuY2VNYXJrZXRPcHRpb25zPzogSW5zdGFuY2VNYXJrZXRPcHRpb25zXG5JbnN0YW5jZVJlcXVpcmVtZW50cz86IEluc3RhbmNlUmVxdWlyZW1lbnRzXG4vKipcbiAqIFRoZSBJRCBvZiB0aGUgUkFNIGRpc2suXG4gKiAgIFdlIHJlY29tbWVuZCB0aGF0IHlvdSB1c2UgUFYtR1JVQiBpbnN0ZWFkIG9mIGtlcm5lbHMgYW5kIFJBTSBkaXNrcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVXNlciBwcm92aWRlZCBrZXJuZWxzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvVXNlclByb3ZpZGVka2VybmVscy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKi9cblJhbURpc2tJZD86IHN0cmluZ1xuQ2FwYWNpdHlSZXNlcnZhdGlvblNwZWNpZmljYXRpb24/OiBDYXBhY2l0eVJlc2VydmF0aW9uU3BlY2lmaWNhdGlvblxuQ3JlZGl0U3BlY2lmaWNhdGlvbj86IENyZWRpdFNwZWNpZmljYXRpb25cbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSB0YWdzIHRvIGFwcGx5IHRvIHJlc291cmNlcyB0aGF0IGFyZSBjcmVhdGVkIGR1cmluZyBpbnN0YW5jZSBsYXVuY2guXG4gKiAgYGBUYWdTcGVjaWZpY2F0aW9uYGAgaXMgYSBwcm9wZXJ0eSB0eXBlIG9mIFtUYWdTcGVjaWZpY2F0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZWMyLWxhdW5jaHRlbXBsYXRlLWxhdW5jaHRlbXBsYXRlZGF0YS5odG1sI2Nmbi1lYzItbGF1bmNodGVtcGxhdGUtbGF1bmNodGVtcGxhdGVkYXRhLXRhZ3NwZWNpZmljYXRpb25zKS4gW1RhZ1NwZWNpZmljYXRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1lYzItbGF1bmNodGVtcGxhdGUtbGF1bmNodGVtcGxhdGVkYXRhLmh0bWwjY2ZuLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEtdGFnc3BlY2lmaWNhdGlvbnMpIGlzIGEgcHJvcGVydHkgb2YgW0FXUzo6RUMyOjpMYXVuY2hUZW1wbGF0ZSBMYXVuY2hUZW1wbGF0ZURhdGFdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIFRoZSB0eXBlIG9mIHJlc291cmNlIHRvIHRhZy4gWW91IGNhbiBzcGVjaWZ5IHRhZ3MgZm9yIHRoZSBmb2xsb3dpbmcgcmVzb3VyY2UgdHlwZXMgb25seTogYGBpbnN0YW5jZWBgIHwgYGB2b2x1bWVgYCB8IGBgbmV0d29yay1pbnRlcmZhY2VgYCB8IGBgc3BvdC1pbnN0YW5jZXMtcmVxdWVzdGBgLiBJZiB0aGUgaW5zdGFuY2UgZG9lcyBub3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgdHlwZSB0aGF0IHlvdSBzcGVjaWZ5LCB0aGUgaW5zdGFuY2UgbGF1bmNoIGZhaWxzLiBGb3IgZXhhbXBsZSwgbm90IGFsbCBpbnN0YW5jZSB0eXBlcyBpbmNsdWRlIGEgdm9sdW1lLlxuICogIFRvIHRhZyBhIHJlc291cmNlIGFmdGVyIGl0IGhhcyBiZWVuIGNyZWF0ZWQsIHNlZSBbQ3JlYXRlVGFnc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVUYWdzLmh0bWwpLlxuICovXG5SZXNvdXJjZVR5cGU/OiBzdHJpbmdcbi8qKlxuICogVGhlIHRhZ3MgdG8gYXBwbHkgdG8gdGhlIHJlc291cmNlLlxuICovXG5UYWdzPzogVGFnW11cbn1cbi8qKlxuICogU3BlY2lmaWVzIGEgdGFnLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtSZXNvdXJjZSB0YWdzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1yZXNvdXJjZS10YWdzLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG4vKipcbiAqIFRoZSB0YWcgdmFsdWUuXG4gKi9cblZhbHVlOiBzdHJpbmdcbi8qKlxuICogVGhlIHRhZyBrZXkuXG4gKi9cbktleTogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBzZXR0aW5ncyBmb3IgdGhlIG5ldHdvcmsgcGVyZm9ybWFuY2Ugb3B0aW9ucyBmb3IgdGhlIGluc3RhbmNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtFQzIgaW5zdGFuY2UgYmFuZHdpZHRoIHdlaWdodGluZyBjb25maWd1cmF0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvY29uZmlndXJlLWJhbmR3aWR0aC13ZWlnaHRpbmcuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya1BlcmZvcm1hbmNlT3B0aW9ucyB7XG4vKipcbiAqIFNwZWNpZnkgdGhlIGJhbmR3aWR0aCB3ZWlnaHRpbmcgb3B0aW9uIHRvIGJvb3N0IHRoZSBhc3NvY2lhdGVkIHR5cGUgb2YgYmFzZWxpbmUgYmFuZHdpZHRoLCBhcyBmb2xsb3dzOlxuICogICArIGRlZmF1bHQgVGhpcyBvcHRpb24gdXNlcyB0aGUgc3RhbmRhcmQgYmFuZHdpZHRoIGNvbmZpZ3VyYXRpb24gZm9yIHlvdXIgaW5zdGFuY2UgdHlwZS4gKyB2cGMtMSBUaGlzIG9wdGlvbiBib29zdHMgeW91ciBuZXR3b3JraW5nIGJhc2VsaW5lIGJhbmR3aWR0aCBhbmQgcmVkdWNlcyB5b3VyIEVCUyBiYXNlbGluZSBiYW5kd2lkdGguICsgZWJzLTEgVGhpcyBvcHRpb24gYm9vc3RzIHlvdXIgRUJTIGJhc2VsaW5lIGJhbmR3aWR0aCBhbmQgcmVkdWNlcyB5b3VyIG5ldHdvcmtpbmcgYmFzZWxpbmUgYmFuZHdpZHRoLlxuICovXG5CYW5kd2lkdGhXZWlnaHRpbmc/OiBzdHJpbmdcbn1cbi8qKlxuICogU3BlY2lmaWVzIGEgYmxvY2sgZGV2aWNlIG1hcHBpbmcgZm9yIGEgbGF1bmNoIHRlbXBsYXRlLiBZb3UgbXVzdCBzcGVjaWZ5IGBgRGV2aWNlTmFtZWBgIHBsdXMgZXhhY3RseSBvbmUgb2YgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOiBgYEVic2BgLCBgYE5vRGV2aWNlYGAsIG9yIGBgVmlydHVhbE5hbWVgYC5cbiAqICBgYEJsb2NrRGV2aWNlTWFwcGluZ2BgIGlzIGEgcHJvcGVydHkgb2YgW0FXUzo6RUMyOjpMYXVuY2hUZW1wbGF0ZSBMYXVuY2hUZW1wbGF0ZURhdGFdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmxvY2tEZXZpY2VNYXBwaW5nIHtcbkVicz86IEVic1xuLyoqXG4gKiBUbyBvbWl0IHRoZSBkZXZpY2UgZnJvbSB0aGUgYmxvY2sgZGV2aWNlIG1hcHBpbmcsIHNwZWNpZnkgYW4gZW1wdHkgc3RyaW5nLlxuICovXG5Ob0RldmljZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmlydHVhbCBkZXZpY2UgbmFtZSAoZXBoZW1lcmFsTikuIEluc3RhbmNlIHN0b3JlIHZvbHVtZXMgYXJlIG51bWJlcmVkIHN0YXJ0aW5nIGZyb20gMC4gQW4gaW5zdGFuY2UgdHlwZSB3aXRoIDIgYXZhaWxhYmxlIGluc3RhbmNlIHN0b3JlIHZvbHVtZXMgY2FuIHNwZWNpZnkgbWFwcGluZ3MgZm9yIGVwaGVtZXJhbDAgYW5kIGVwaGVtZXJhbDEuIFRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIGluc3RhbmNlIHN0b3JlIHZvbHVtZXMgZGVwZW5kcyBvbiB0aGUgaW5zdGFuY2UgdHlwZS4gQWZ0ZXIgeW91IGNvbm5lY3QgdG8gdGhlIGluc3RhbmNlLCB5b3UgbXVzdCBtb3VudCB0aGUgdm9sdW1lLlxuICovXG5WaXJ0dWFsTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgZGV2aWNlIG5hbWUgKGZvciBleGFtcGxlLCAvZGV2L3NkaCBvciB4dmRoKS5cbiAqL1xuRGV2aWNlTmFtZT86IHN0cmluZ1xufVxuLyoqXG4gKiBQYXJhbWV0ZXJzIHVzZWQgdG8gYXV0b21hdGljYWxseSBzZXQgdXAgRUJTIHZvbHVtZXMgd2hlbiB0aGUgaW5zdGFuY2UgaXMgbGF1bmNoZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWJzIHtcbi8qKlxuICogVGhlIElEIG9mIHRoZSBzbmFwc2hvdC5cbiAqL1xuU25hcHNob3RJZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdm9sdW1lIHR5cGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBFQlMgdm9sdW1lIHR5cGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZWJzL2xhdGVzdC91c2VyZ3VpZGUvZWJzLXZvbHVtZS10eXBlcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQlMgVXNlciBHdWlkZSouXG4gKi9cblZvbHVtZVR5cGU/OiBzdHJpbmdcbi8qKlxuICogSWRlbnRpZmllciAoa2V5IElELCBrZXkgYWxpYXMsIGtleSBBUk4sIG9yIGFsaWFzIEFSTikgb2YgdGhlIGN1c3RvbWVyIG1hbmFnZWQgS01TIGtleSB0byB1c2UgZm9yIEVCUyBlbmNyeXB0aW9uLlxuICovXG5LbXNLZXlJZD86IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgRUJTIHZvbHVtZSBpcyBlbmNyeXB0ZWQuIEVuY3J5cHRlZCB2b2x1bWVzIGNhbiBvbmx5IGJlIGF0dGFjaGVkIHRvIGluc3RhbmNlcyB0aGF0IHN1cHBvcnQgQW1hem9uIEVCUyBlbmNyeXB0aW9uLiBJZiB5b3UgYXJlIGNyZWF0aW5nIGEgdm9sdW1lIGZyb20gYSBzbmFwc2hvdCwgeW91IGNhbid0IHNwZWNpZnkgYW4gZW5jcnlwdGlvbiB2YWx1ZS5cbiAqL1xuRW5jcnlwdGVkPzogYm9vbGVhblxuLyoqXG4gKiBUaGUgdGhyb3VnaHB1dCB0byBwcm92aXNpb24gZm9yIGEgYGBncDNgYCB2b2x1bWUsIHdpdGggYSBtYXhpbXVtIG9mIDEsMDAwIE1pQi9zLlxuICogIFZhbGlkIFJhbmdlOiBNaW5pbXVtIHZhbHVlIG9mIDEyNS4gTWF4aW11bSB2YWx1ZSBvZiAxMDAwLlxuICovXG5UaHJvdWdocHV0PzogbnVtYmVyXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgSS9PIG9wZXJhdGlvbnMgcGVyIHNlY29uZCAoSU9QUykuIEZvciBgYGdwM2BgLCBgYGlvMWBgLCBhbmQgYGBpbzJgYCB2b2x1bWVzLCB0aGlzIHJlcHJlc2VudHMgdGhlIG51bWJlciBvZiBJT1BTIHRoYXQgYXJlIHByb3Zpc2lvbmVkIGZvciB0aGUgdm9sdW1lLiBGb3IgYGBncDJgYCB2b2x1bWVzLCB0aGlzIHJlcHJlc2VudHMgdGhlIGJhc2VsaW5lIHBlcmZvcm1hbmNlIG9mIHRoZSB2b2x1bWUgYW5kIHRoZSByYXRlIGF0IHdoaWNoIHRoZSB2b2x1bWUgYWNjdW11bGF0ZXMgSS9PIGNyZWRpdHMgZm9yIGJ1cnN0aW5nLlxuICogIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSBzdXBwb3J0ZWQgdmFsdWVzIGZvciBlYWNoIHZvbHVtZSB0eXBlOlxuICogICArICBgYGdwM2BgOiAzLDAwMCAtIDE2LDAwMCBJT1BTXG4gKiAgICsgIGBgaW8xYGA6IDEwMCAtIDY0LDAwMCBJT1BTXG4gKiAgICsgIGBgaW8yYGA6IDEwMCAtIDI1NiwwMDAgSU9QU1xuICogICBcbiAqICBGb3IgYGBpbzJgYCB2b2x1bWVzLCB5b3UgY2FuIGFjaGlldmUgdXAgdG8gMjU2LDAwMCBJT1BTIG9uIFtpbnN0YW5jZXMgYnVpbHQgb24gdGhlIE5pdHJvIFN5c3RlbV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2VjMi9sYXRlc3QvaW5zdGFuY2V0eXBlcy9lYzItbml0cm8taW5zdGFuY2VzLmh0bWwpLiBPbiBvdGhlciBpbnN0YW5jZXMsIHlvdSBjYW4gYWNoaWV2ZSBwZXJmb3JtYW5jZSB1cCB0byAzMiwwMDAgSU9QUy5cbiAqICBUaGlzIHBhcmFtZXRlciBpcyBzdXBwb3J0ZWQgZm9yIGBgaW8xYGAsIGBgaW8yYGAsIGFuZCBgYGdwM2BgIHZvbHVtZXMgb25seS5cbiAqL1xuSW9wcz86IG51bWJlclxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIEFtYXpvbiBFQlMgUHJvdmlzaW9uZWQgUmF0ZSBmb3IgVm9sdW1lIEluaXRpYWxpemF0aW9uICh2b2x1bWUgaW5pdGlhbGl6YXRpb24gcmF0ZSksIGluIE1pQi9zLCBhdCB3aGljaCB0byBkb3dubG9hZCB0aGUgc25hcHNob3QgYmxvY2tzIGZyb20gQW1hem9uIFMzIHRvIHRoZSB2b2x1bWUuIFRoaXMgaXMgYWxzbyBrbm93biBhcyAqdm9sdW1lIGluaXRpYWxpemF0aW9uKi4gU3BlY2lmeWluZyBhIHZvbHVtZSBpbml0aWFsaXphdGlvbiByYXRlIGVuc3VyZXMgdGhhdCB0aGUgdm9sdW1lIGlzIGluaXRpYWxpemVkIGF0IGEgcHJlZGljdGFibGUgYW5kIGNvbnNpc3RlbnQgcmF0ZSBhZnRlciBjcmVhdGlvbi5cbiAqICBUaGlzIHBhcmFtZXRlciBpcyBzdXBwb3J0ZWQgb25seSBmb3Igdm9sdW1lcyBjcmVhdGVkIGZyb20gc25hcHNob3RzLiBPbWl0IHRoaXMgcGFyYW1ldGVyIGlmOlxuICogICArICBZb3Ugd2FudCB0byBjcmVhdGUgdGhlIHZvbHVtZSB1c2luZyBmYXN0IHNuYXBzaG90IHJlc3RvcmUuIFlvdSBtdXN0IHNwZWNpZnkgYSBzbmFwc2hvdCB0aGF0IGlzIGVuYWJsZWQgZm9yIGZhc3Qgc25hcHNob3QgcmVzdG9yZS4gSW4gdGhpcyBjYXNlLCB0aGUgdm9sdW1lIGlzIGZ1bGx5IGluaXRpYWxpemVkIGF0IGNyZWF0aW9uLlxuICogICBJZiB5b3Ugc3BlY2lmeSBhIHNuYXBzaG90IHRoYXQgaXMgZW5hYmxlZCBmb3IgZmFzdCBzbmFwc2hvdCByZXN0b3JlIGFuZCBhIHZvbHVtZSBpbml0aWFsaXphdGlvbiByYXRlLCB0aGUgdm9sdW1lIHdpbGwgYmUgaW5pdGlhbGl6ZWQgYXQgdGhlIHNwZWNpZmllZCByYXRlIGluc3RlYWQgb2YgZmFzdCBzbmFwc2hvdCByZXN0b3JlLlxuICogICAgKyAgWW91IHdhbnQgdG8gY3JlYXRlIGEgdm9sdW1lIHRoYXQgaXMgaW5pdGlhbGl6ZWQgYXQgdGhlIGRlZmF1bHQgcmF0ZS5cbiAqICAgXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbSW5pdGlhbGl6ZSBBbWF6b24gRUJTIHZvbHVtZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lYnMvbGF0ZXN0L3VzZXJndWlkZS9pbml0YWxpemUtdm9sdW1lLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlKi5cbiAqICBWYWxpZCByYW5nZTogMTAwIC0gMzAwIE1pQi9zXG4gKi9cblZvbHVtZUluaXRpYWxpemF0aW9uUmF0ZT86IG51bWJlclxuLyoqXG4gKiBUaGUgc2l6ZSBvZiB0aGUgdm9sdW1lLCBpbiBHaUJzLiBZb3UgbXVzdCBzcGVjaWZ5IGVpdGhlciBhIHNuYXBzaG90IElEIG9yIGEgdm9sdW1lIHNpemUuIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSBzdXBwb3J0ZWQgdm9sdW1lcyBzaXplcyBmb3IgZWFjaCB2b2x1bWUgdHlwZTpcbiAqICAgKyAgYGBncDJgYCBhbmQgYGBncDNgYDogMSAtIDE2LDM4NCBHaUJcbiAqICAgKyAgYGBpbzFgYDogNCAtIDE2LDM4NCBHaUJcbiAqICAgKyAgYGBpbzJgYDogNCAtIDY1LDUzNiBHaUJcbiAqICAgKyAgYGBzdDFgYCBhbmQgYGBzYzFgYDogMTI1IC0gMTYsMzg0IEdpQlxuICogICArICBgYHN0YW5kYXJkYGA6IDEgLSAxMDI0IEdpQlxuICovXG5Wb2x1bWVTaXplPzogbnVtYmVyXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBFQlMgdm9sdW1lIGlzIGRlbGV0ZWQgb24gaW5zdGFuY2UgdGVybWluYXRpb24uXG4gKi9cbkRlbGV0ZU9uVGVybWluYXRpb24/OiBib29sZWFuXG59XG4vKipcbiAqIFRoZSBtYWludGVuYW5jZSBvcHRpb25zIG9mIHlvdXIgaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFpbnRlbmFuY2VPcHRpb25zIHtcbi8qKlxuICogRGlzYWJsZXMgdGhlIGF1dG9tYXRpYyByZWNvdmVyeSBiZWhhdmlvciBvZiB5b3VyIGluc3RhbmNlIG9yIHNldHMgaXQgdG8gZGVmYXVsdC5cbiAqL1xuQXV0b1JlY292ZXJ5Pzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBuYW1lIG9yIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIGFuIElBTSBpbnN0YW5jZSBwcm9maWxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElhbUluc3RhbmNlUHJvZmlsZSB7XG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgaW5zdGFuY2UgcHJvZmlsZS5cbiAqL1xuQXJuPzogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBpbnN0YW5jZSBwcm9maWxlLlxuICovXG5OYW1lPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBwbGFjZW1lbnQgZm9yIHRoZSBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbGFjZW1lbnQge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgcGxhY2VtZW50IGdyb3VwIGZvciB0aGUgaW5zdGFuY2UuXG4gKi9cbkdyb3VwTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdGVuYW5jeSBvZiB0aGUgaW5zdGFuY2UuIEFuIGluc3RhbmNlIHdpdGggYSB0ZW5hbmN5IG9mIGRlZGljYXRlZCBydW5zIG9uIHNpbmdsZS10ZW5hbnQgaGFyZHdhcmUuXG4gKi9cblRlbmFuY3k/OiBzdHJpbmdcbi8qKlxuICogUmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UuXG4gKi9cblNwcmVhZERvbWFpbj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIHRoZSBwYXJ0aXRpb24gdGhlIGluc3RhbmNlIHNob3VsZCBsYXVuY2ggaW4uIFZhbGlkIG9ubHkgaWYgdGhlIHBsYWNlbWVudCBncm91cCBzdHJhdGVneSBpcyBzZXQgdG8gYGBwYXJ0aXRpb25gYC5cbiAqL1xuUGFydGl0aW9uTnVtYmVyPzogbnVtYmVyXG4vKipcbiAqIFRoZSBBdmFpbGFiaWxpdHkgWm9uZSBmb3IgdGhlIGluc3RhbmNlLlxuICovXG5BdmFpbGFiaWxpdHlab25lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBhZmZpbml0eSBzZXR0aW5nIGZvciBhbiBpbnN0YW5jZSBvbiBhIERlZGljYXRlZCBIb3N0LlxuICovXG5BZmZpbml0eT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgSUQgb2YgdGhlIERlZGljYXRlZCBIb3N0IGZvciB0aGUgaW5zdGFuY2UuXG4gKi9cbkhvc3RJZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgQVJOIG9mIHRoZSBob3N0IHJlc291cmNlIGdyb3VwIGluIHdoaWNoIHRvIGxhdW5jaCB0aGUgaW5zdGFuY2VzLiBJZiB5b3Ugc3BlY2lmeSBhIGhvc3QgcmVzb3VyY2UgZ3JvdXAgQVJOLCBvbWl0IHRoZSAqVGVuYW5jeSogcGFyYW1ldGVyIG9yIHNldCBpdCB0byBgYGhvc3RgYC5cbiAqL1xuSG9zdFJlc291cmNlR3JvdXBBcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIEdyb3VwIElkIG9mIGEgcGxhY2VtZW50IGdyb3VwLiBZb3UgbXVzdCBzcGVjaWZ5IHRoZSBQbGFjZW1lbnQgR3JvdXAgKkdyb3VwIElkKiB0byBsYXVuY2ggYW4gaW5zdGFuY2UgaW4gYSBzaGFyZWQgcGxhY2VtZW50IGdyb3VwLlxuICovXG5Hcm91cElkPzogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgcGFyYW1ldGVycyBmb3IgYSBuZXR3b3JrIGludGVyZmFjZS5cbiAqICBgYE5ldHdvcmtJbnRlcmZhY2VgYCBpcyBhIHByb3BlcnR5IG9mIFtBV1M6OkVDMjo6TGF1bmNoVGVtcGxhdGUgTGF1bmNoVGVtcGxhdGVEYXRhXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1lYzItbGF1bmNodGVtcGxhdGUtbGF1bmNodGVtcGxhdGVkYXRhLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtJbnRlcmZhY2Uge1xuLyoqXG4gKiBBIGRlc2NyaXB0aW9uIGZvciB0aGUgbmV0d29yayBpbnRlcmZhY2UuXG4gKi9cbkRlc2NyaXB0aW9uPzogc3RyaW5nXG4vKipcbiAqIFRoZSBwcmltYXJ5IHByaXZhdGUgSVB2NCBhZGRyZXNzIG9mIHRoZSBuZXR3b3JrIGludGVyZmFjZS5cbiAqL1xuUHJpdmF0ZUlwQWRkcmVzcz86IHN0cmluZ1xuLyoqXG4gKiBPbmUgb3IgbW9yZSBwcml2YXRlIElQdjQgYWRkcmVzc2VzLlxuICovXG5Qcml2YXRlSXBBZGRyZXNzZXM/OiBQcml2YXRlSXBBZGRbXVxuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIHNlY29uZGFyeSBwcml2YXRlIElQdjQgYWRkcmVzc2VzIHRvIGFzc2lnbiB0byBhIG5ldHdvcmsgaW50ZXJmYWNlLlxuICovXG5TZWNvbmRhcnlQcml2YXRlSXBBZGRyZXNzQ291bnQ/OiBudW1iZXJcbi8qKlxuICogVGhlIG51bWJlciBvZiBJUHY2IHByZWZpeGVzIHRvIGJlIGF1dG9tYXRpY2FsbHkgYXNzaWduZWQgdG8gdGhlIG5ldHdvcmsgaW50ZXJmYWNlLiBZb3UgY2Fubm90IHVzZSB0aGlzIG9wdGlvbiBpZiB5b3UgdXNlIHRoZSBgYElwdjZQcmVmaXhgYCBvcHRpb24uXG4gKi9cbklwdjZQcmVmaXhDb3VudD86IG51bWJlclxuLyoqXG4gKiBPbmUgb3IgbW9yZSBJUHY0IHByZWZpeGVzIHRvIGJlIGFzc2lnbmVkIHRvIHRoZSBuZXR3b3JrIGludGVyZmFjZS4gWW91IGNhbm5vdCB1c2UgdGhpcyBvcHRpb24gaWYgeW91IHVzZSB0aGUgYGBJcHY0UHJlZml4Q291bnRgYCBvcHRpb24uXG4gKi9cbklwdjRQcmVmaXhlcz86IElwdjRQcmVmaXhTcGVjaWZpY2F0aW9uW11cbi8qKlxuICogVGhlIGRldmljZSBpbmRleCBmb3IgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGF0dGFjaG1lbnQuIFRoZSBwcmltYXJ5IG5ldHdvcmsgaW50ZXJmYWNlIGhhcyBhIGRldmljZSBpbmRleCBvZiAwLiBJZiB0aGUgbmV0d29yayBpbnRlcmZhY2UgaXMgb2YgdHlwZSBgYGludGVyZmFjZWBgLCB5b3UgbXVzdCBzcGVjaWZ5IGEgZGV2aWNlIGluZGV4LlxuICogIElmIHlvdSBjcmVhdGUgYSBsYXVuY2ggdGVtcGxhdGUgdGhhdCBpbmNsdWRlcyBzZWNvbmRhcnkgbmV0d29yayBpbnRlcmZhY2VzIGJ1dCBubyBwcmltYXJ5IG5ldHdvcmsgaW50ZXJmYWNlLCBhbmQgeW91IHNwZWNpZnkgaXQgdXNpbmcgdGhlIGBgTGF1bmNoVGVtcGxhdGVgYCBwcm9wZXJ0eSBvZiBgYEFXUzo6RUMyOjpJbnN0YW5jZWBgLCB0aGVuIHlvdSBtdXN0IGluY2x1ZGUgYSBwcmltYXJ5IG5ldHdvcmsgaW50ZXJmYWNlIHVzaW5nIHRoZSBgYE5ldHdvcmtJbnRlcmZhY2VzYGAgcHJvcGVydHkgb2YgYGBBV1M6OkVDMjo6SW5zdGFuY2VgYC5cbiAqL1xuRGV2aWNlSW5kZXg/OiBudW1iZXJcbi8qKlxuICogVGhlIHByaW1hcnkgSVB2NiBhZGRyZXNzIG9mIHRoZSBuZXR3b3JrIGludGVyZmFjZS4gV2hlbiB5b3UgZW5hYmxlIGFuIElQdjYgR1VBIGFkZHJlc3MgdG8gYmUgYSBwcmltYXJ5IElQdjYsIHRoZSBmaXJzdCBJUHY2IEdVQSB3aWxsIGJlIG1hZGUgdGhlIHByaW1hcnkgSVB2NiBhZGRyZXNzIHVudGlsIHRoZSBpbnN0YW5jZSBpcyB0ZXJtaW5hdGVkIG9yIHRoZSBuZXR3b3JrIGludGVyZmFjZSBpcyBkZXRhY2hlZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgcHJpbWFyeSBJUHY2IGFkZHJlc3Nlcywgc2VlIFtSdW5JbnN0YW5jZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfUnVuSW5zdGFuY2VzLmh0bWwpLlxuICovXG5QcmltYXJ5SXB2Nj86IGJvb2xlYW5cbi8qKlxuICogVGhlIG51bWJlciBvZiBJUHY0IHByZWZpeGVzIHRvIGJlIGF1dG9tYXRpY2FsbHkgYXNzaWduZWQgdG8gdGhlIG5ldHdvcmsgaW50ZXJmYWNlLiBZb3UgY2Fubm90IHVzZSB0aGlzIG9wdGlvbiBpZiB5b3UgdXNlIHRoZSBgYElwdjRQcmVmaXhgYCBvcHRpb24uXG4gKi9cbklwdjRQcmVmaXhDb3VudD86IG51bWJlclxuRW5hUXVldWVDb3VudD86IG51bWJlclxuLyoqXG4gKiBPbmUgb3IgbW9yZSBJUHY2IHByZWZpeGVzIHRvIGJlIGFzc2lnbmVkIHRvIHRoZSBuZXR3b3JrIGludGVyZmFjZS4gWW91IGNhbm5vdCB1c2UgdGhpcyBvcHRpb24gaWYgeW91IHVzZSB0aGUgYGBJcHY2UHJlZml4Q291bnRgYCBvcHRpb24uXG4gKi9cbklwdjZQcmVmaXhlcz86IElwdjZQcmVmaXhTcGVjaWZpY2F0aW9uW11cbi8qKlxuICogVGhlIElEIG9mIHRoZSBzdWJuZXQgZm9yIHRoZSBuZXR3b3JrIGludGVyZmFjZS5cbiAqL1xuU3VibmV0SWQ/OiBzdHJpbmdcbi8qKlxuICogT25lIG9yIG1vcmUgc3BlY2lmaWMgSVB2NiBhZGRyZXNzZXMgZnJvbSB0aGUgSVB2NiBDSURSIGJsb2NrIHJhbmdlIG9mIHlvdXIgc3VibmV0LiBZb3UgY2FuJ3QgdXNlIHRoaXMgb3B0aW9uIGlmIHlvdSdyZSBzcGVjaWZ5aW5nIGEgbnVtYmVyIG9mIElQdjYgYWRkcmVzc2VzLlxuICovXG5JcHY2QWRkcmVzc2VzPzogSXB2NkFkZFtdXG4vKipcbiAqIEFzc29jaWF0ZXMgYSBwdWJsaWMgSVB2NCBhZGRyZXNzIHdpdGggZXRoMCBmb3IgYSBuZXcgbmV0d29yayBpbnRlcmZhY2UuXG4gKiAgQVdTIGNoYXJnZXMgZm9yIGFsbCBwdWJsaWMgSVB2NCBhZGRyZXNzZXMsIGluY2x1ZGluZyBwdWJsaWMgSVB2NCBhZGRyZXNzZXMgYXNzb2NpYXRlZCB3aXRoIHJ1bm5pbmcgaW5zdGFuY2VzIGFuZCBFbGFzdGljIElQIGFkZHJlc3Nlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUgKlB1YmxpYyBJUHY0IEFkZHJlc3MqIHRhYiBvbiB0aGUgW0FtYXpvbiBWUEMgcHJpY2luZyBwYWdlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL3ByaWNpbmcvKS5cbiAqL1xuQXNzb2NpYXRlUHVibGljSXBBZGRyZXNzPzogYm9vbGVhblxuLyoqXG4gKiBUaGUgSUQgb2YgdGhlIG5ldHdvcmsgaW50ZXJmYWNlLlxuICovXG5OZXR3b3JrSW50ZXJmYWNlSWQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIGluZGV4IG9mIHRoZSBuZXR3b3JrIGNhcmQuIFNvbWUgaW5zdGFuY2UgdHlwZXMgc3VwcG9ydCBtdWx0aXBsZSBuZXR3b3JrIGNhcmRzLiBUaGUgcHJpbWFyeSBuZXR3b3JrIGludGVyZmFjZSBtdXN0IGJlIGFzc2lnbmVkIHRvIG5ldHdvcmsgY2FyZCBpbmRleCAwLiBUaGUgZGVmYXVsdCBpcyBuZXR3b3JrIGNhcmQgaW5kZXggMC5cbiAqL1xuTmV0d29ya0NhcmRJbmRleD86IG51bWJlclxuLyoqXG4gKiBUaGUgdHlwZSBvZiBuZXR3b3JrIGludGVyZmFjZS4gVG8gY3JlYXRlIGFuIEVsYXN0aWMgRmFicmljIEFkYXB0ZXIgKEVGQSksIHNwZWNpZnkgYGBlZmFgYCBvciBgYGVmYWBgLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtFbGFzdGljIEZhYnJpYyBBZGFwdGVyIGZvciBBSS9NTCBhbmQgSFBDIHdvcmtsb2FkcyBvbiBBbWF6b24gRUMyXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWZhLmh0bWwpIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlKi5cbiAqICBJZiB5b3UgYXJlIG5vdCBjcmVhdGluZyBhbiBFRkEsIHNwZWNpZnkgYGBpbnRlcmZhY2VgYCBvciBvbWl0IHRoaXMgcGFyYW1ldGVyLlxuICogIElmIHlvdSBzcGVjaWZ5IGBgZWZhLW9ubHlgYCwgZG8gbm90IGFzc2lnbiBhbnkgSVAgYWRkcmVzc2VzIHRvIHRoZSBuZXR3b3JrIGludGVyZmFjZS4gRUZBLW9ubHkgbmV0d29yayBpbnRlcmZhY2VzIGRvIG5vdCBzdXBwb3J0IElQIGFkZHJlc3Nlcy5cbiAqICBWYWxpZCB2YWx1ZXM6IGBgaW50ZXJmYWNlYGAgfCBgYGVmYWBgIHwgYGBlZmEtb25seWBgXG4gKi9cbkludGVyZmFjZVR5cGU/OiBzdHJpbmdcbi8qKlxuICogQXNzb2NpYXRlcyBhIENhcnJpZXIgSVAgYWRkcmVzcyB3aXRoIGV0aDAgZm9yIGEgbmV3IG5ldHdvcmsgaW50ZXJmYWNlLlxuICogIFVzZSB0aGlzIG9wdGlvbiB3aGVuIHlvdSBsYXVuY2ggYW4gaW5zdGFuY2UgaW4gYSBXYXZlbGVuZ3RoIFpvbmUgYW5kIHdhbnQgdG8gYXNzb2NpYXRlIGEgQ2FycmllciBJUCBhZGRyZXNzIHdpdGggdGhlIG5ldHdvcmsgaW50ZXJmYWNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBDYXJyaWVyIElQIGFkZHJlc3Nlcywgc2VlIFtDYXJyaWVyIElQIGFkZHJlc3Nlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3dhdmVsZW5ndGgvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2hvdy13YXZlbGVuZ3Rocy13b3JrLmh0bWwjcHJvdmlkZXItb3duZWQtaXApIGluIHRoZSAqRGV2ZWxvcGVyIEd1aWRlKi5cbiAqL1xuQXNzb2NpYXRlQ2FycmllcklwQWRkcmVzcz86IGJvb2xlYW5cbkVuYVNyZFNwZWNpZmljYXRpb24/OiBFbmFTcmRTcGVjaWZpY2F0aW9uXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgSVB2NiBhZGRyZXNzZXMgdG8gYXNzaWduIHRvIGEgbmV0d29yayBpbnRlcmZhY2UuIEFtYXpvbiBFQzIgYXV0b21hdGljYWxseSBzZWxlY3RzIHRoZSBJUHY2IGFkZHJlc3NlcyBmcm9tIHRoZSBzdWJuZXQgcmFuZ2UuIFlvdSBjYW4ndCB1c2UgdGhpcyBvcHRpb24gaWYgc3BlY2lmeWluZyBzcGVjaWZpYyBJUHY2IGFkZHJlc3Nlcy5cbiAqL1xuSXB2NkFkZHJlc3NDb3VudD86IG51bWJlclxuLyoqXG4gKiBUaGUgSURzIG9mIG9uZSBvciBtb3JlIHNlY3VyaXR5IGdyb3Vwcy5cbiAqL1xuR3JvdXBzPzogc3RyaW5nW11cbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGlzIGRlbGV0ZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgdGVybWluYXRlZC5cbiAqL1xuRGVsZXRlT25UZXJtaW5hdGlvbj86IGJvb2xlYW5cbkNvbm5lY3Rpb25UcmFja2luZ1NwZWNpZmljYXRpb24/OiBDb25uZWN0aW9uVHJhY2tpbmdTcGVjaWZpY2F0aW9uXG59XG4vKipcbiAqIFNwZWNpZmllcyBhIHNlY29uZGFyeSBwcml2YXRlIElQdjQgYWRkcmVzcyBmb3IgYSBuZXR3b3JrIGludGVyZmFjZS5cbiAqICBgYFByaXZhdGVJcEFkZGBgIGlzIGEgcHJvcGVydHkgb2YgW0FXUzo6RUMyOjpMYXVuY2hUZW1wbGF0ZSBOZXR3b3JrSW50ZXJmYWNlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1lYzItbGF1bmNodGVtcGxhdGUtbmV0d29ya2ludGVyZmFjZS5odG1sKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcml2YXRlSXBBZGQge1xuLyoqXG4gKiBUaGUgcHJpdmF0ZSBJUHY0IGFkZHJlc3MuXG4gKi9cblByaXZhdGVJcEFkZHJlc3M/OiBzdHJpbmdcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHByaXZhdGUgSVB2NCBhZGRyZXNzIGlzIHRoZSBwcmltYXJ5IHByaXZhdGUgSVB2NCBhZGRyZXNzLiBPbmx5IG9uZSBJUHY0IGFkZHJlc3MgY2FuIGJlIGRlc2lnbmF0ZWQgYXMgcHJpbWFyeS5cbiAqL1xuUHJpbWFyeT86IGJvb2xlYW5cbn1cbi8qKlxuICogU3BlY2lmaWVzIGFuIElQdjQgcHJlZml4IGZvciBhIG5ldHdvcmsgaW50ZXJmYWNlLlxuICogIGBgSXB2NFByZWZpeFNwZWNpZmljYXRpb25gYCBpcyBhIHByb3BlcnR5IG9mIFtBV1M6OkVDMjo6TGF1bmNoVGVtcGxhdGUgTmV0d29ya0ludGVyZmFjZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZWMyLWxhdW5jaHRlbXBsYXRlLW5ldHdvcmtpbnRlcmZhY2UuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSXB2NFByZWZpeFNwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBUaGUgSVB2NCBwcmVmaXguIEZvciBpbmZvcm1hdGlvbiwgc2VlIFtBc3NpZ25pbmcgcHJlZml4ZXMgdG8gbmV0d29yayBpbnRlcmZhY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWMyLXByZWZpeC1lbmkuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICovXG5JcHY0UHJlZml4Pzogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyBhbiBJUHY2IHByZWZpeCBmb3IgYSBuZXR3b3JrIGludGVyZmFjZS5cbiAqICBgYElwdjZQcmVmaXhTcGVjaWZpY2F0aW9uYGAgaXMgYSBwcm9wZXJ0eSBvZiBbQVdTOjpFQzI6OkxhdW5jaFRlbXBsYXRlIE5ldHdvcmtJbnRlcmZhY2VdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1uZXR3b3JraW50ZXJmYWNlLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElwdjZQcmVmaXhTcGVjaWZpY2F0aW9uIHtcbi8qKlxuICogVGhlIElQdjYgcHJlZml4LlxuICovXG5JcHY2UHJlZml4Pzogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyBhbiBJUHY2IGFkZHJlc3MgaW4gYW4gQW1hem9uIEVDMiBsYXVuY2ggdGVtcGxhdGUuXG4gKiAgYGBJcHY2QWRkYGAgaXMgYSBwcm9wZXJ0eSBvZiBbQVdTOjpFQzI6OkxhdW5jaFRlbXBsYXRlIE5ldHdvcmtJbnRlcmZhY2VdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1uZXR3b3JraW50ZXJmYWNlLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElwdjZBZGQge1xuLyoqXG4gKiBPbmUgb3IgbW9yZSBzcGVjaWZpYyBJUHY2IGFkZHJlc3NlcyBmcm9tIHRoZSBJUHY2IENJRFIgYmxvY2sgcmFuZ2Ugb2YgeW91ciBzdWJuZXQuIFlvdSBjYW4ndCB1c2UgdGhpcyBvcHRpb24gaWYgeW91J3JlIHNwZWNpZnlpbmcgYSBudW1iZXIgb2YgSVB2NiBhZGRyZXNzZXMuXG4gKi9cbklwdjZBZGRyZXNzPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBFTkEgRXhwcmVzcyBjb25maWd1cmF0aW9uIGZvciB0aGUgbmV0d29yayBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5hU3JkU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIEVOQSBFeHByZXNzIGlzIGVuYWJsZWQgZm9yIHRoZSBuZXR3b3JrIGludGVyZmFjZS5cbiAqL1xuRW5hU3JkRW5hYmxlZD86IGJvb2xlYW5cbkVuYVNyZFVkcFNwZWNpZmljYXRpb24/OiBFbmFTcmRVZHBTcGVjaWZpY2F0aW9uXG59XG4vKipcbiAqIENvbmZpZ3VyZXMgRU5BIEV4cHJlc3MgZm9yIFVEUCBuZXR3b3JrIHRyYWZmaWMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5hU3JkVWRwU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIFVEUCB0cmFmZmljIHRvIGFuZCBmcm9tIHRoZSBpbnN0YW5jZSB1c2VzIEVOQSBFeHByZXNzLiBUbyBzcGVjaWZ5IHRoaXMgc2V0dGluZywgeW91IG11c3QgZmlyc3QgZW5hYmxlIEVOQSBFeHByZXNzLlxuICovXG5FbmFTcmRVZHBFbmFibGVkPzogYm9vbGVhblxufVxuLyoqXG4gKiBBIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIG5ldHdvcmsgaW50ZXJmYWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbm5lY3Rpb25UcmFja2luZ1NwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBUaW1lb3V0IChpbiBzZWNvbmRzKSBmb3IgaWRsZSBVRFAgZmxvd3MgdGhhdCBoYXZlIHNlZW4gdHJhZmZpYyBvbmx5IGluIGEgc2luZ2xlIGRpcmVjdGlvbiBvciBhIHNpbmdsZSByZXF1ZXN0LXJlc3BvbnNlIHRyYW5zYWN0aW9uLiBNaW46IDMwIHNlY29uZHMuIE1heDogNjAgc2Vjb25kcy4gRGVmYXVsdDogMzAgc2Vjb25kcy5cbiAqL1xuVWRwVGltZW91dD86IG51bWJlclxuLyoqXG4gKiBUaW1lb3V0IChpbiBzZWNvbmRzKSBmb3IgaWRsZSBUQ1AgY29ubmVjdGlvbnMgaW4gYW4gZXN0YWJsaXNoZWQgc3RhdGUuIE1pbjogNjAgc2Vjb25kcy4gTWF4OiA0MzIwMDAgc2Vjb25kcyAoNSBkYXlzKS4gRGVmYXVsdDogNDMyMDAwIHNlY29uZHMuIFJlY29tbWVuZGVkOiBMZXNzIHRoYW4gNDMyMDAwIHNlY29uZHMuXG4gKi9cblRjcEVzdGFibGlzaGVkVGltZW91dD86IG51bWJlclxuLyoqXG4gKiBUaW1lb3V0IChpbiBzZWNvbmRzKSBmb3IgaWRsZSBVRFAgZmxvd3MgY2xhc3NpZmllZCBhcyBzdHJlYW1zIHdoaWNoIGhhdmUgc2VlbiBtb3JlIHRoYW4gb25lIHJlcXVlc3QtcmVzcG9uc2UgdHJhbnNhY3Rpb24uIE1pbjogNjAgc2Vjb25kcy4gTWF4OiAxODAgc2Vjb25kcyAoMyBtaW51dGVzKS4gRGVmYXVsdDogMTgwIHNlY29uZHMuXG4gKi9cblVkcFN0cmVhbVRpbWVvdXQ/OiBudW1iZXJcbn1cbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGluc3RhbmNlIGlzIGVuYWJsZWQgZm9yIEFXUyBOaXRybyBFbmNsYXZlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbV2hhdCBpcyBOaXRybyBFbmNsYXZlcz9dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lbmNsYXZlcy9sYXRlc3QvdXNlci9uaXRyby1lbmNsYXZlLmh0bWwpIGluIHRoZSAqTml0cm8gRW5jbGF2ZXMgVXNlciBHdWlkZSouXG4gKiAgWW91IGNhbid0IGVuYWJsZSBBV1MgTml0cm8gRW5jbGF2ZXMgYW5kIGhpYmVybmF0aW9uIG9uIHRoZSBzYW1lIGluc3RhbmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuY2xhdmVPcHRpb25zIHtcbi8qKlxuICogSWYgdGhpcyBwYXJhbWV0ZXIgaXMgc2V0IHRvIGBgdHJ1ZWBgLCB0aGUgaW5zdGFuY2UgaXMgZW5hYmxlZCBmb3IgQVdTIE5pdHJvIEVuY2xhdmVzOyBvdGhlcndpc2UsIGl0IGlzIG5vdCBlbmFibGVkIGZvciBBV1MgTml0cm8gRW5jbGF2ZXMuXG4gKi9cbkVuYWJsZWQ/OiBib29sZWFuXG59XG4vKipcbiAqIFRoZSBtb25pdG9yaW5nIGZvciB0aGUgaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9uaXRvcmluZyB7XG4vKipcbiAqIFNwZWNpZnkgYGB0cnVlYGAgdG8gZW5hYmxlIGRldGFpbGVkIG1vbml0b3JpbmcuIE90aGVyd2lzZSwgYmFzaWMgbW9uaXRvcmluZyBpcyBlbmFibGVkLlxuICovXG5FbmFibGVkPzogYm9vbGVhblxufVxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBhbiBpbnN0YW5jZSBpcyBlbmFibGVkIGZvciBoaWJlcm5hdGlvbi4gVGhpcyBwYXJhbWV0ZXIgaXMgdmFsaWQgb25seSBpZiB0aGUgaW5zdGFuY2UgbWVldHMgdGhlIFtoaWJlcm5hdGlvbiBwcmVyZXF1aXNpdGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvaGliZXJuYXRpbmctcHJlcmVxdWlzaXRlcy5odG1sKS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbSGliZXJuYXRlIHlvdXIgQW1hem9uIEVDMiBpbnN0YW5jZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL0hpYmVybmF0ZS5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGliZXJuYXRpb25PcHRpb25zIHtcbi8qKlxuICogSWYgeW91IHNldCB0aGlzIHBhcmFtZXRlciB0byBgYHRydWVgYCwgdGhlIGluc3RhbmNlIGlzIGVuYWJsZWQgZm9yIGhpYmVybmF0aW9uLlxuICogIERlZmF1bHQ6IGBgZmFsc2VgYFxuICovXG5Db25maWd1cmVkPzogYm9vbGVhblxufVxuLyoqXG4gKiBUaGUgbWV0YWRhdGEgb3B0aW9ucyBmb3IgdGhlIGluc3RhbmNlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDb25maWd1cmUgdGhlIEluc3RhbmNlIE1ldGFkYXRhIFNlcnZpY2Ugb3B0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2NvbmZpZ3VyaW5nLWluc3RhbmNlLW1ldGFkYXRhLW9wdGlvbnMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhT3B0aW9ucyB7XG4vKipcbiAqIFRoZSBkZXNpcmVkIEhUVFAgUFVUIHJlc3BvbnNlIGhvcCBsaW1pdCBmb3IgaW5zdGFuY2UgbWV0YWRhdGEgcmVxdWVzdHMuIFRoZSBsYXJnZXIgdGhlIG51bWJlciwgdGhlIGZ1cnRoZXIgaW5zdGFuY2UgbWV0YWRhdGEgcmVxdWVzdHMgY2FuIHRyYXZlbC5cbiAqICBEZWZhdWx0OiBgYDFgYFxuICogIFBvc3NpYmxlIHZhbHVlczogSW50ZWdlcnMgZnJvbSAxIHRvIDY0XG4gKi9cbkh0dHBQdXRSZXNwb25zZUhvcExpbWl0PzogbnVtYmVyXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIElNRFN2MiBpcyByZXF1aXJlZC5cbiAqICAgKyAgYGBvcHRpb25hbGBgIC0gSU1EU3YyIGlzIG9wdGlvbmFsLiBZb3UgY2FuIGNob29zZSB3aGV0aGVyIHRvIHNlbmQgYSBzZXNzaW9uIHRva2VuIGluIHlvdXIgaW5zdGFuY2UgbWV0YWRhdGEgcmV0cmlldmFsIHJlcXVlc3RzLiBJZiB5b3UgcmV0cmlldmUgSUFNIHJvbGUgY3JlZGVudGlhbHMgd2l0aG91dCBhIHNlc3Npb24gdG9rZW4sIHlvdSByZWNlaXZlIHRoZSBJTURTdjEgcm9sZSBjcmVkZW50aWFscy4gSWYgeW91IHJldHJpZXZlIElBTSByb2xlIGNyZWRlbnRpYWxzIHVzaW5nIGEgdmFsaWQgc2Vzc2lvbiB0b2tlbiwgeW91IHJlY2VpdmUgdGhlIElNRFN2MiByb2xlIGNyZWRlbnRpYWxzLlxuICogICArICBgYHJlcXVpcmVkYGAgLSBJTURTdjIgaXMgcmVxdWlyZWQuIFlvdSBtdXN0IHNlbmQgYSBzZXNzaW9uIHRva2VuIGluIHlvdXIgaW5zdGFuY2UgbWV0YWRhdGEgcmV0cmlldmFsIHJlcXVlc3RzLiBXaXRoIHRoaXMgb3B0aW9uLCByZXRyaWV2aW5nIHRoZSBJQU0gcm9sZSBjcmVkZW50aWFscyBhbHdheXMgcmV0dXJucyBJTURTdjIgY3JlZGVudGlhbHM7IElNRFN2MSBjcmVkZW50aWFscyBhcmUgbm90IGF2YWlsYWJsZS5cbiAqICAgXG4gKiAgRGVmYXVsdDogSWYgdGhlIHZhbHVlIG9mIGBgSW1kc1N1cHBvcnRgYCBmb3IgdGhlIEFtYXpvbiBNYWNoaW5lIEltYWdlIChBTUkpIGZvciB5b3VyIGluc3RhbmNlIGlzIGBgdjIuMGBgLCB0aGUgZGVmYXVsdCBpcyBgYHJlcXVpcmVkYGAuXG4gKi9cbkh0dHBUb2tlbnM/OiBzdHJpbmdcbi8qKlxuICogRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgSVB2NiBlbmRwb2ludCBmb3IgdGhlIGluc3RhbmNlIG1ldGFkYXRhIHNlcnZpY2UuXG4gKiAgRGVmYXVsdDogYGBkaXNhYmxlZGBgXG4gKi9cbkh0dHBQcm90b2NvbElwdjY/OiBzdHJpbmdcbi8qKlxuICogU2V0IHRvIGBgZW5hYmxlZGBgIHRvIGFsbG93IGFjY2VzcyB0byBpbnN0YW5jZSB0YWdzIGZyb20gdGhlIGluc3RhbmNlIG1ldGFkYXRhLiBTZXQgdG8gYGBkaXNhYmxlZGBgIHRvIHR1cm4gb2ZmIGFjY2VzcyB0byBpbnN0YW5jZSB0YWdzIGZyb20gdGhlIGluc3RhbmNlIG1ldGFkYXRhLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtWaWV3IHRhZ3MgZm9yIHlvdXIgRUMyIGluc3RhbmNlcyB1c2luZyBpbnN0YW5jZSBtZXRhZGF0YV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL3dvcmstd2l0aC10YWdzLWluLUlNRFMuaHRtbCkuXG4gKiAgRGVmYXVsdDogYGBkaXNhYmxlZGBgXG4gKi9cbkluc3RhbmNlTWV0YWRhdGFUYWdzPzogc3RyaW5nXG4vKipcbiAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIEhUVFAgbWV0YWRhdGEgZW5kcG9pbnQgb24geW91ciBpbnN0YW5jZXMuIElmIHRoZSBwYXJhbWV0ZXIgaXMgbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgc3RhdGUgaXMgYGBlbmFibGVkYGAuXG4gKiAgIElmIHlvdSBzcGVjaWZ5IGEgdmFsdWUgb2YgYGBkaXNhYmxlZGBgLCB5b3Ugd2lsbCBub3QgYmUgYWJsZSB0byBhY2Nlc3MgeW91ciBpbnN0YW5jZSBtZXRhZGF0YS5cbiAqL1xuSHR0cEVuZHBvaW50Pzogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyBhIGxpY2Vuc2UgY29uZmlndXJhdGlvbiBmb3IgYW4gaW5zdGFuY2UuXG4gKiAgYGBMaWNlbnNlU3BlY2lmaWNhdGlvbmBgIGlzIGEgcHJvcGVydHkgb2YgW0FXUzo6RUMyOjpMYXVuY2hUZW1wbGF0ZSBMYXVuY2hUZW1wbGF0ZURhdGFdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWVjMi1sYXVuY2h0ZW1wbGF0ZS1sYXVuY2h0ZW1wbGF0ZWRhdGEuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGljZW5zZVNwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIGxpY2Vuc2UgY29uZmlndXJhdGlvbi5cbiAqL1xuTGljZW5zZUNvbmZpZ3VyYXRpb25Bcm4/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIENQVSBvcHRpb25zIGZvciB0aGUgaW5zdGFuY2UuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NQVSBvcHRpb25zIGZvciBBbWF6b24gRUMyIGluc3RhbmNlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2luc3RhbmNlLW9wdGltaXplLWNwdS5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3B1T3B0aW9ucyB7XG4vKipcbiAqIFRoZSBudW1iZXIgb2YgdGhyZWFkcyBwZXIgQ1BVIGNvcmUuIFRvIGRpc2FibGUgbXVsdGl0aHJlYWRpbmcgZm9yIHRoZSBpbnN0YW5jZSwgc3BlY2lmeSBhIHZhbHVlIG9mIGBgMWBgLiBPdGhlcndpc2UsIHNwZWNpZnkgdGhlIGRlZmF1bHQgdmFsdWUgb2YgYGAyYGAuXG4gKi9cblRocmVhZHNQZXJDb3JlPzogbnVtYmVyXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGVuYWJsZSB0aGUgaW5zdGFuY2UgZm9yIEFNRCBTRVYtU05QLiBBTUQgU0VWLVNOUCBpcyBzdXBwb3J0ZWQgd2l0aCBNNmEsIFI2YSwgYW5kIEM2YSBpbnN0YW5jZSB0eXBlcyBvbmx5LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBTUQgU0VWLVNOUCBmb3IgQW1hem9uIEVDMiBpbnN0YW5jZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9zZXYtc25wLmh0bWwpLlxuICovXG5BbWRTZXZTbnA/OiAoXCJlbmFibGVkXCIgfCBcImRpc2FibGVkXCIpXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgQ1BVIGNvcmVzIGZvciB0aGUgaW5zdGFuY2UuXG4gKi9cbkNvcmVDb3VudD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgaG9zdG5hbWUgdHlwZSBmb3IgRUMyIGluc3RhbmNlcyBsYXVuY2hlZCBpbnRvIHRoaXMgc3VibmV0IGFuZCBob3cgRE5TIEEgYW5kIEFBQUEgcmVjb3JkIHF1ZXJpZXMgc2hvdWxkIGJlIGhhbmRsZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBFQzIgaW5zdGFuY2UgaG9zdG5hbWUgdHlwZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9lYzItaW5zdGFuY2UtbmFtaW5nLmh0bWwpIGluIHRoZSAqVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJpdmF0ZURuc05hbWVPcHRpb25zIHtcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gcmVzcG9uZCB0byBETlMgcXVlcmllcyBmb3IgaW5zdGFuY2UgaG9zdG5hbWVzIHdpdGggRE5TIEEgcmVjb3Jkcy5cbiAqL1xuRW5hYmxlUmVzb3VyY2VOYW1lRG5zQVJlY29yZD86IGJvb2xlYW5cbi8qKlxuICogVGhlIHR5cGUgb2YgaG9zdG5hbWUgZm9yIEVDMiBpbnN0YW5jZXMuIEZvciBJUHY0IG9ubHkgc3VibmV0cywgYW4gaW5zdGFuY2UgRE5TIG5hbWUgbXVzdCBiZSBiYXNlZCBvbiB0aGUgaW5zdGFuY2UgSVB2NCBhZGRyZXNzLiBGb3IgSVB2NiBvbmx5IHN1Ym5ldHMsIGFuIGluc3RhbmNlIEROUyBuYW1lIG11c3QgYmUgYmFzZWQgb24gdGhlIGluc3RhbmNlIElELiBGb3IgZHVhbC1zdGFjayBzdWJuZXRzLCB5b3UgY2FuIHNwZWNpZnkgd2hldGhlciBETlMgbmFtZXMgdXNlIHRoZSBpbnN0YW5jZSBJUHY0IGFkZHJlc3Mgb3IgdGhlIGluc3RhbmNlIElELiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBbWF6b24gRUMyIGluc3RhbmNlIGhvc3RuYW1lIHR5cGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWMyLWluc3RhbmNlLW5hbWluZy5odG1sKSBpbiB0aGUgKlVzZXIgR3VpZGUqLlxuICovXG5Ib3N0bmFtZVR5cGU/OiBzdHJpbmdcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gcmVzcG9uZCB0byBETlMgcXVlcmllcyBmb3IgaW5zdGFuY2UgaG9zdG5hbWVzIHdpdGggRE5TIEFBQUEgcmVjb3Jkcy5cbiAqL1xuRW5hYmxlUmVzb3VyY2VOYW1lRG5zQUFBQVJlY29yZD86IGJvb2xlYW5cbn1cbi8qKlxuICogVGhlIG1hcmtldCAocHVyY2hhc2luZykgb3B0aW9uIGZvciB0aGUgaW5zdGFuY2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlTWFya2V0T3B0aW9ucyB7XG5TcG90T3B0aW9ucz86IFNwb3RPcHRpb25zXG4vKipcbiAqIFRoZSBtYXJrZXQgdHlwZS5cbiAqL1xuTWFya2V0VHlwZT86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgb3B0aW9ucyBmb3IgU3BvdCBJbnN0YW5jZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3BvdE9wdGlvbnMge1xuLyoqXG4gKiBUaGUgU3BvdCBJbnN0YW5jZSByZXF1ZXN0IHR5cGUuXG4gKiAgSWYgeW91IGFyZSB1c2luZyBTcG90IEluc3RhbmNlcyB3aXRoIGFuIEF1dG8gU2NhbGluZyBncm91cCwgdXNlIGBgb25lLXRpbWVgYCByZXF1ZXN0cywgYXMgdGhlIEFTbG9uZyBzZXJ2aWNlIGhhbmRsZXMgcmVxdWVzdGluZyBuZXcgU3BvdCBJbnN0YW5jZXMgd2hlbmV2ZXIgdGhlIGdyb3VwIGlzIGJlbG93IGl0cyBkZXNpcmVkIGNhcGFjaXR5LlxuICovXG5TcG90SW5zdGFuY2VUeXBlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBiZWhhdmlvciB3aGVuIGEgU3BvdCBJbnN0YW5jZSBpcyBpbnRlcnJ1cHRlZC4gVGhlIGRlZmF1bHQgaXMgYGB0ZXJtaW5hdGVgYC5cbiAqL1xuSW5zdGFuY2VJbnRlcnJ1cHRpb25CZWhhdmlvcj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbWF4aW11bSBob3VybHkgcHJpY2UgeW91J3JlIHdpbGxpbmcgdG8gcGF5IGZvciBhIFNwb3QgSW5zdGFuY2UuIFdlIGRvIG5vdCByZWNvbW1lbmQgdXNpbmcgdGhpcyBwYXJhbWV0ZXIgYmVjYXVzZSBpdCBjYW4gbGVhZCB0byBpbmNyZWFzZWQgaW50ZXJydXB0aW9ucy4gSWYgeW91IGRvIG5vdCBzcGVjaWZ5IHRoaXMgcGFyYW1ldGVyLCB5b3Ugd2lsbCBwYXkgdGhlIGN1cnJlbnQgU3BvdCBwcmljZS4gSWYgeW91IGRvIHNwZWNpZnkgdGhpcyBwYXJhbWV0ZXIsIGl0IG11c3QgYmUgbW9yZSB0aGFuIFVTRCAkMC4wMDEuIFNwZWNpZnlpbmcgYSB2YWx1ZSBiZWxvdyBVU0QgJDAuMDAxIHdpbGwgcmVzdWx0IGluIGFuIGBgSW52YWxpZFBhcmFtZXRlclZhbHVlYGAgZXJyb3IgbWVzc2FnZSB3aGVuIHRoZSBsYXVuY2ggdGVtcGxhdGUgaXMgdXNlZCB0byBsYXVuY2ggYW4gaW5zdGFuY2UuXG4gKiAgIElmIHlvdSBzcGVjaWZ5IGEgbWF4aW11bSBwcmljZSwgeW91ciBTcG90IEluc3RhbmNlcyB3aWxsIGJlIGludGVycnVwdGVkIG1vcmUgZnJlcXVlbnRseSB0aGFuIGlmIHlvdSBkbyBub3Qgc3BlY2lmeSB0aGlzIHBhcmFtZXRlci5cbiAqL1xuTWF4UHJpY2U/OiBzdHJpbmdcbi8qKlxuICogRGVwcmVjYXRlZC5cbiAqL1xuQmxvY2tEdXJhdGlvbk1pbnV0ZXM/OiBudW1iZXJcbi8qKlxuICogVGhlIGVuZCBkYXRlIG9mIHRoZSByZXF1ZXN0LCBpbiBVVEMgZm9ybWF0ICgqWVlZWS1NTS1ERCpUKkhIOk1NOlNTKlopLiBTdXBwb3J0ZWQgb25seSBmb3IgcGVyc2lzdGVudCByZXF1ZXN0cy5cbiAqICAgKyAgRm9yIGEgcGVyc2lzdGVudCByZXF1ZXN0LCB0aGUgcmVxdWVzdCByZW1haW5zIGFjdGl2ZSB1bnRpbCB0aGUgYGBWYWxpZFVudGlsYGAgZGF0ZSBhbmQgdGltZSBpcyByZWFjaGVkLiBPdGhlcndpc2UsIHRoZSByZXF1ZXN0IHJlbWFpbnMgYWN0aXZlIHVudGlsIHlvdSBjYW5jZWwgaXQuXG4gKiAgICsgIEZvciBhIG9uZS10aW1lIHJlcXVlc3QsIGBgVmFsaWRVbnRpbGBgIGlzIG5vdCBzdXBwb3J0ZWQuIFRoZSByZXF1ZXN0IHJlbWFpbnMgYWN0aXZlIHVudGlsIGFsbCBpbnN0YW5jZXMgbGF1bmNoIG9yIHlvdSBjYW5jZWwgdGhlIHJlcXVlc3QuXG4gKiAgIFxuICogIERlZmF1bHQ6IDcgZGF5cyBmcm9tIHRoZSBjdXJyZW50IGRhdGVcbiAqL1xuVmFsaWRVbnRpbD86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgYXR0cmlidXRlcyBmb3IgdGhlIGluc3RhbmNlIHR5cGVzLiBXaGVuIHlvdSBzcGVjaWZ5IGluc3RhbmNlIGF0dHJpYnV0ZXMsIEFtYXpvbiBFQzIgd2lsbCBpZGVudGlmeSBpbnN0YW5jZSB0eXBlcyB3aXRoIHRoZXNlIGF0dHJpYnV0ZXMuXG4gKiAgWW91IG11c3Qgc3BlY2lmeSBgYFZDcHVDb3VudGBgIGFuZCBgYE1lbW9yeU1pQmBgLiBBbGwgb3RoZXIgYXR0cmlidXRlcyBhcmUgb3B0aW9uYWwuIEFueSB1bnNwZWNpZmllZCBvcHRpb25hbCBhdHRyaWJ1dGUgaXMgc2V0IHRvIGl0cyBkZWZhdWx0LlxuICogIFdoZW4geW91IHNwZWNpZnkgbXVsdGlwbGUgYXR0cmlidXRlcywgeW91IGdldCBpbnN0YW5jZSB0eXBlcyB0aGF0IHNhdGlzZnkgYWxsIG9mIHRoZSBzcGVjaWZpZWQgYXR0cmlidXRlcy4gSWYgeW91IHNwZWNpZnkgbXVsdGlwbGUgdmFsdWVzIGZvciBhbiBhdHRyaWJ1dGUsIHlvdSBnZXQgaW5zdGFuY2UgdHlwZXMgdGhhdCBzYXRpc2Z5IGFueSBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlcy5cbiAqICBUbyBsaW1pdCB0aGUgbGlzdCBvZiBpbnN0YW5jZSB0eXBlcyBmcm9tIHdoaWNoIEFtYXpvbiBFQzIgY2FuIGlkZW50aWZ5IG1hdGNoaW5nIGluc3RhbmNlIHR5cGVzLCB5b3UgY2FuIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzLCBidXQgbm90IGJvdGggaW4gdGhlIHNhbWUgcmVxdWVzdDpcbiAqICAgKyAgYGBBbGxvd2VkSW5zdGFuY2VUeXBlc2BgIC0gVGhlIGluc3RhbmNlIHR5cGVzIHRvIGluY2x1ZGUgaW4gdGhlIGxpc3QuIEFsbCBvdGhlciBpbnN0YW5jZSB0eXBlcyBhcmUgaWdub3JlZCwgZXZlbiBpZiB0aGV5IG1hdGNoIHlvdXIgc3BlY2lmaWVkIGF0dHJpYnV0ZXMuXG4gKiAgICsgIGBgRXhjbHVkZWRJbnN0YW5jZVR5cGVzYGAgLSBUaGUgaW5zdGFuY2UgdHlwZXMgdG8gZXhjbHVkZSBmcm9tIHRoZSBsaXN0LCBldmVuIGlmIHRoZXkgbWF0Y2ggeW91ciBzcGVjaWZpZWQgYXR0cmlidXRlcy5cbiAqICAgXG4gKiAgIElmIHlvdSBzcGVjaWZ5IGBgSW5zdGFuY2VSZXF1aXJlbWVudHNgYCwgeW91IGNhbid0IHNwZWNpZnkgYGBJbnN0YW5jZVR5cGVgYC5cbiAqICBBdHRyaWJ1dGUtYmFzZWQgaW5zdGFuY2UgdHlwZSBzZWxlY3Rpb24gaXMgb25seSBzdXBwb3J0ZWQgd2hlbiB1c2luZyBBdXRvIFNjYWxpbmcgZ3JvdXBzLCBFQzIgRmxlZXQsIGFuZCBTcG90IEZsZWV0IHRvIGxhdW5jaCBpbnN0YW5jZXMuIElmIHlvdSBwbGFuIHRvIHVzZSB0aGUgbGF1bmNoIHRlbXBsYXRlIGluIHRoZSBbbGF1bmNoIGluc3RhbmNlIHdpemFyZF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2VjMi1sYXVuY2gtaW5zdGFuY2Utd2l6YXJkLmh0bWwpLCBvciB3aXRoIHRoZSBbUnVuSW5zdGFuY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1J1bkluc3RhbmNlcy5odG1sKSBBUEkgb3IgW0FXUzo6RUMyOjpJbnN0YW5jZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZWMyLWluc3RhbmNlLmh0bWwpQVdTIENsb3VkRm9ybWF0aW9uIHJlc291cmNlLCB5b3UgY2FuJ3Qgc3BlY2lmeSBgYEluc3RhbmNlUmVxdWlyZW1lbnRzYGAuXG4gKiAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1NwZWNpZnkgYXR0cmlidXRlcyBmb3IgaW5zdGFuY2UgdHlwZSBzZWxlY3Rpb24gZm9yIEVDMiBGbGVldCBvciBTcG90IEZsZWV0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWMyLWZsZWV0LWF0dHJpYnV0ZS1iYXNlZC1pbnN0YW5jZS10eXBlLXNlbGVjdGlvbi5odG1sKSBhbmQgW1Nwb3QgcGxhY2VtZW50IHNjb3JlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvc3BvdC1wbGFjZW1lbnQtc2NvcmUuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlUmVxdWlyZW1lbnRzIHtcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgY3VycmVudCBvciBwcmV2aW91cyBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzIGFyZSBpbmNsdWRlZC4gVGhlIGN1cnJlbnQgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlcyBhcmUgcmVjb21tZW5kZWQgZm9yIHVzZS4gQ3VycmVudCBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzIGFyZSB0eXBpY2FsbHkgdGhlIGxhdGVzdCB0d28gdG8gdGhyZWUgZ2VuZXJhdGlvbnMgaW4gZWFjaCBpbnN0YW5jZSBmYW1pbHkuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0luc3RhbmNlIHR5cGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvaW5zdGFuY2UtdHlwZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICogIEZvciBjdXJyZW50IGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMsIHNwZWNpZnkgYGBjdXJyZW50YGAuXG4gKiAgRm9yIHByZXZpb3VzIGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMsIHNwZWNpZnkgYGBwcmV2aW91c2BgLlxuICogIERlZmF1bHQ6IEN1cnJlbnQgYW5kIHByZXZpb3VzIGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXNcbiAqL1xuSW5zdGFuY2VHZW5lcmF0aW9ucz86IHN0cmluZ1tdXG5NZW1vcnlHaUJQZXJWQ3B1PzogTWVtb3J5R2lCUGVyVkNwdVxuLyoqXG4gKiBUaGUgYWNjZWxlcmF0b3IgdHlwZXMgdGhhdCBtdXN0IGJlIG9uIHRoZSBpbnN0YW5jZSB0eXBlLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBGUEdBIGFjY2VsZXJhdG9ycywgc3BlY2lmeSBgYGZwZ2FgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggR1BVIGFjY2VsZXJhdG9ycywgc3BlY2lmeSBgYGdwdWBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBJbmZlcmVuY2UgYWNjZWxlcmF0b3JzLCBzcGVjaWZ5IGBgaW5mZXJlbmNlYGAuXG4gKiAgIFxuICogIERlZmF1bHQ6IEFueSBhY2NlbGVyYXRvciB0eXBlXG4gKi9cbkFjY2VsZXJhdG9yVHlwZXM/OiBzdHJpbmdbXVxuVkNwdUNvdW50PzogVkNwdUNvdW50XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIGluc3RhbmNlIHR5cGVzIG11c3QgaGF2ZSBhY2NlbGVyYXRvcnMgYnkgc3BlY2lmaWMgbWFudWZhY3R1cmVycy5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggQVdTIGRldmljZXMsIHNwZWNpZnkgYGBhbWF6b24td2ViLXNlcnZpY2VzYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEFNRCBkZXZpY2VzLCBzcGVjaWZ5IGBgYW1kYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEhhYmFuYSBkZXZpY2VzLCBzcGVjaWZ5IGBgaGFiYW5hYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIE5WSURJQSBkZXZpY2VzLCBzcGVjaWZ5IGBgbnZpZGlhYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIFhpbGlueCBkZXZpY2VzLCBzcGVjaWZ5IGBgeGlsaW54YGAuXG4gKiAgIFxuICogIERlZmF1bHQ6IEFueSBtYW51ZmFjdHVyZXJcbiAqL1xuQWNjZWxlcmF0b3JNYW51ZmFjdHVyZXJzPzogc3RyaW5nW11cbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgaW5zdGFuY2UgdHlwZXMgd2l0aCBpbnN0YW5jZSBzdG9yZSB2b2x1bWVzIGFyZSBpbmNsdWRlZCwgZXhjbHVkZWQsIG9yIHJlcXVpcmVkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgW0FtYXpvbiBFQzIgaW5zdGFuY2Ugc3RvcmVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9JbnN0YW5jZVN0b3JhZ2UuaHRtbCkgaW4gdGhlICpBbWF6b24gRUMyIFVzZXIgR3VpZGUqLlxuICogICArICBUbyBpbmNsdWRlIGluc3RhbmNlIHR5cGVzIHdpdGggaW5zdGFuY2Ugc3RvcmUgdm9sdW1lcywgc3BlY2lmeSBgYGluY2x1ZGVkYGAuXG4gKiAgICsgIFRvIHJlcXVpcmUgb25seSBpbnN0YW5jZSB0eXBlcyB3aXRoIGluc3RhbmNlIHN0b3JlIHZvbHVtZXMsIHNwZWNpZnkgYGByZXF1aXJlZGBgLlxuICogICArICBUbyBleGNsdWRlIGluc3RhbmNlIHR5cGVzIHdpdGggaW5zdGFuY2Ugc3RvcmUgdm9sdW1lcywgc3BlY2lmeSBgYGV4Y2x1ZGVkYGAuXG4gKiAgIFxuICogIERlZmF1bHQ6IGBgaW5jbHVkZWRgYFxuICovXG5Mb2NhbFN0b3JhZ2U/OiBzdHJpbmdcbi8qKlxuICogVGhlIENQVSBtYW51ZmFjdHVyZXJzIHRvIGluY2x1ZGUuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEludGVsIENQVXMsIHNwZWNpZnkgYGBpbnRlbGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBBTUQgQ1BVcywgc3BlY2lmeSBgYGFtZGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBBV1MgQ1BVcywgc3BlY2lmeSBgYGFtYXpvbi13ZWItc2VydmljZXNgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggQXBwbGUgQ1BVcywgc3BlY2lmeSBgYGFwcGxlYGAuXG4gKiAgIFxuICogICBEb24ndCBjb25mdXNlIHRoZSBDUFUgbWFudWZhY3R1cmVyIHdpdGggdGhlIENQVSBhcmNoaXRlY3R1cmUuIEluc3RhbmNlcyB3aWxsIGJlIGxhdW5jaGVkIHdpdGggYSBjb21wYXRpYmxlIENQVSBhcmNoaXRlY3R1cmUgYmFzZWQgb24gdGhlIEFtYXpvbiBNYWNoaW5lIEltYWdlIChBTUkpIHRoYXQgeW91IHNwZWNpZnkgaW4geW91ciBsYXVuY2ggdGVtcGxhdGUuXG4gKiAgIERlZmF1bHQ6IEFueSBtYW51ZmFjdHVyZXJcbiAqL1xuQ3B1TWFudWZhY3R1cmVycz86IHN0cmluZ1tdXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIGJhcmUgbWV0YWwgaW5zdGFuY2UgdHlwZXMgbXVzdCBiZSBpbmNsdWRlZCwgZXhjbHVkZWQsIG9yIHJlcXVpcmVkLlxuICogICArICBUbyBpbmNsdWRlIGJhcmUgbWV0YWwgaW5zdGFuY2UgdHlwZXMsIHNwZWNpZnkgYGBpbmNsdWRlZGBgLlxuICogICArICBUbyByZXF1aXJlIG9ubHkgYmFyZSBtZXRhbCBpbnN0YW5jZSB0eXBlcywgc3BlY2lmeSBgYHJlcXVpcmVkYGAuXG4gKiAgICsgIFRvIGV4Y2x1ZGUgYmFyZSBtZXRhbCBpbnN0YW5jZSB0eXBlcywgc3BlY2lmeSBgYGV4Y2x1ZGVkYGAuXG4gKiAgIFxuICogIERlZmF1bHQ6IGBgZXhjbHVkZWRgYFxuICovXG5CYXJlTWV0YWw/OiBzdHJpbmdcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgaW5zdGFuY2UgdHlwZXMgbXVzdCBzdXBwb3J0IGhpYmVybmF0aW9uIGZvciBPbi1EZW1hbmQgSW5zdGFuY2VzLlxuICogIFRoaXMgcGFyYW1ldGVyIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFtHZXRTcG90UGxhY2VtZW50U2NvcmVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0dldFNwb3RQbGFjZW1lbnRTY29yZXMuaHRtbCkuXG4gKiAgRGVmYXVsdDogYGBmYWxzZWBgXG4gKi9cblJlcXVpcmVIaWJlcm5hdGVTdXBwb3J0PzogYm9vbGVhblxuLyoqXG4gKiBbUHJpY2UgcHJvdGVjdGlvbl0gVGhlIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGZvciBTcG90IEluc3RhbmNlcywgYXMgYSBwZXJjZW50YWdlIG9mIGFuIGlkZW50aWZpZWQgT24tRGVtYW5kIHByaWNlLiBUaGUgaWRlbnRpZmllZCBPbi1EZW1hbmQgcHJpY2UgaXMgdGhlIHByaWNlIG9mIHRoZSBsb3dlc3QgcHJpY2VkIGN1cnJlbnQgZ2VuZXJhdGlvbiBDLCBNLCBvciBSIGluc3RhbmNlIHR5cGUgd2l0aCB5b3VyIHNwZWNpZmllZCBhdHRyaWJ1dGVzLiBJZiBubyBjdXJyZW50IGdlbmVyYXRpb24gQywgTSwgb3IgUiBpbnN0YW5jZSB0eXBlIG1hdGNoZXMgeW91ciBhdHRyaWJ1dGVzLCB0aGVuIHRoZSBpZGVudGlmaWVkIHByaWNlIGlzIGZyb20gdGhlIGxvd2VzdCBwcmljZWQgY3VycmVudCBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzLCBhbmQgZmFpbGluZyB0aGF0LCBmcm9tIHRoZSBsb3dlc3QgcHJpY2VkIHByZXZpb3VzIGdlbmVyYXRpb24gaW5zdGFuY2UgdHlwZXMgdGhhdCBtYXRjaCB5b3VyIGF0dHJpYnV0ZXMuIFdoZW4gQW1hem9uIEVDMiBzZWxlY3RzIGluc3RhbmNlIHR5cGVzIHdpdGggeW91ciBhdHRyaWJ1dGVzLCBpdCB3aWxsIGV4Y2x1ZGUgaW5zdGFuY2UgdHlwZXMgd2hvc2UgcHJpY2UgZXhjZWVkcyB5b3VyIHNwZWNpZmllZCB0aHJlc2hvbGQuXG4gKiAgVGhlIHBhcmFtZXRlciBhY2NlcHRzIGFuIGludGVnZXIsIHdoaWNoIEFtYXpvbiBFQzIgaW50ZXJwcmV0cyBhcyBhIHBlcmNlbnRhZ2UuXG4gKiAgSWYgeW91IHNldCBgYFRhcmdldENhcGFjaXR5VW5pdFR5cGVgYCB0byBgYHZjcHVgYCBvciBgYG1lbW9yeS1taWJgYCwgdGhlIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGlzIGJhc2VkIG9uIHRoZSBwZXIgdkNQVSBvciBwZXIgbWVtb3J5IHByaWNlIGluc3RlYWQgb2YgdGhlIHBlciBpbnN0YW5jZSBwcmljZS5cbiAqICAgT25seSBvbmUgb2YgYGBTcG90TWF4UHJpY2VQZXJjZW50YWdlT3Zlckxvd2VzdFByaWNlYGAgb3IgYGBNYXhTcG90UHJpY2VBc1BlcmNlbnRhZ2VPZk9wdGltYWxPbkRlbWFuZFByaWNlYGAgY2FuIGJlIHNwZWNpZmllZC4gSWYgeW91IGRvbid0IHNwZWNpZnkgZWl0aGVyLCBBbWF6b24gRUMyIHdpbGwgYXV0b21hdGljYWxseSBhcHBseSBvcHRpbWFsIHByaWNlIHByb3RlY3Rpb24gdG8gY29uc2lzdGVudGx5IHNlbGVjdCBmcm9tIGEgd2lkZSByYW5nZSBvZiBpbnN0YW5jZSB0eXBlcy4gVG8gaW5kaWNhdGUgbm8gcHJpY2UgcHJvdGVjdGlvbiB0aHJlc2hvbGQgZm9yIFNwb3QgSW5zdGFuY2VzLCBtZWFuaW5nIHlvdSB3YW50IHRvIGNvbnNpZGVyIGFsbCBpbnN0YW5jZSB0eXBlcyB0aGF0IG1hdGNoIHlvdXIgYXR0cmlidXRlcywgaW5jbHVkZSBvbmUgb2YgdGhlc2UgcGFyYW1ldGVycyBhbmQgc3BlY2lmeSBhIGhpZ2ggdmFsdWUsIHN1Y2ggYXMgYGA5OTk5OTlgYC5cbiAqL1xuTWF4U3BvdFByaWNlQXNQZXJjZW50YWdlT2ZPcHRpbWFsT25EZW1hbmRQcmljZT86IG51bWJlclxuLyoqXG4gKiBbUHJpY2UgcHJvdGVjdGlvbl0gVGhlIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGZvciBPbi1EZW1hbmQgSW5zdGFuY2VzLCBhcyBhIHBlcmNlbnRhZ2UgaGlnaGVyIHRoYW4gYW4gaWRlbnRpZmllZCBPbi1EZW1hbmQgcHJpY2UuIFRoZSBpZGVudGlmaWVkIE9uLURlbWFuZCBwcmljZSBpcyB0aGUgcHJpY2Ugb2YgdGhlIGxvd2VzdCBwcmljZWQgY3VycmVudCBnZW5lcmF0aW9uIEMsIE0sIG9yIFIgaW5zdGFuY2UgdHlwZSB3aXRoIHlvdXIgc3BlY2lmaWVkIGF0dHJpYnV0ZXMuIFdoZW4gQW1hem9uIEVDMiBzZWxlY3RzIGluc3RhbmNlIHR5cGVzIHdpdGggeW91ciBhdHRyaWJ1dGVzLCBpdCB3aWxsIGV4Y2x1ZGUgaW5zdGFuY2UgdHlwZXMgd2hvc2UgcHJpY2UgZXhjZWVkcyB5b3VyIHNwZWNpZmllZCB0aHJlc2hvbGQuXG4gKiAgVGhlIHBhcmFtZXRlciBhY2NlcHRzIGFuIGludGVnZXIsIHdoaWNoIEFtYXpvbiBFQzIgaW50ZXJwcmV0cyBhcyBhIHBlcmNlbnRhZ2UuXG4gKiAgVG8gdHVybiBvZmYgcHJpY2UgcHJvdGVjdGlvbiwgc3BlY2lmeSBhIGhpZ2ggdmFsdWUsIHN1Y2ggYXMgYGA5OTk5OTlgYC5cbiAqICBUaGlzIHBhcmFtZXRlciBpcyBub3Qgc3VwcG9ydGVkIGZvciBbR2V0U3BvdFBsYWNlbWVudFNjb3Jlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRTcG90UGxhY2VtZW50U2NvcmVzLmh0bWwpIGFuZCBbR2V0SW5zdGFuY2VUeXBlc0Zyb21JbnN0YW5jZVJlcXVpcmVtZW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRJbnN0YW5jZVR5cGVzRnJvbUluc3RhbmNlUmVxdWlyZW1lbnRzLmh0bWwpLlxuICogICBJZiB5b3Ugc2V0IGBgVGFyZ2V0Q2FwYWNpdHlVbml0VHlwZWBgIHRvIGBgdmNwdWBgIG9yIGBgbWVtb3J5LW1pYmBgLCB0aGUgcHJpY2UgcHJvdGVjdGlvbiB0aHJlc2hvbGQgaXMgYXBwbGllZCBiYXNlZCBvbiB0aGUgcGVyLXZDUFUgb3IgcGVyLW1lbW9yeSBwcmljZSBpbnN0ZWFkIG9mIHRoZSBwZXItaW5zdGFuY2UgcHJpY2UuXG4gKiAgIERlZmF1bHQ6IGBgMjBgYFxuICovXG5PbkRlbWFuZE1heFByaWNlUGVyY2VudGFnZU92ZXJMb3dlc3RQcmljZT86IG51bWJlclxuTWVtb3J5TWlCPzogTWVtb3J5TWlCXG4vKipcbiAqIFRoZSB0eXBlIG9mIGxvY2FsIHN0b3JhZ2UgdGhhdCBpcyByZXF1aXJlZC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggaGFyZCBkaXNrIGRyaXZlIChIREQpIHN0b3JhZ2UsIHNwZWNpZnkgYGBoZGRgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggc29saWQgc3RhdGUgZHJpdmUgKFNTRCkgc3RvcmFnZSwgc3BlY2lmeSBgYHNzZGBgLlxuICogICBcbiAqICBEZWZhdWx0OiBgYGhkZGBgIGFuZCBgYHNzZGBgXG4gKi9cbkxvY2FsU3RvcmFnZVR5cGVzPzogc3RyaW5nW11cbk5ldHdvcmtJbnRlcmZhY2VDb3VudD86IE5ldHdvcmtJbnRlcmZhY2VDb3VudFxuLyoqXG4gKiBUaGUgaW5zdGFuY2UgdHlwZXMgdG8gZXhjbHVkZS5cbiAqICBZb3UgY2FuIHVzZSBzdHJpbmdzIHdpdGggb25lIG9yIG1vcmUgd2lsZCBjYXJkcywgcmVwcmVzZW50ZWQgYnkgYW4gYXN0ZXJpc2sgKGBgKmBgKSwgdG8gZXhjbHVkZSBhbiBpbnN0YW5jZSB0eXBlLCBzaXplLCBvciBnZW5lcmF0aW9uLiBUaGUgZm9sbG93aW5nIGFyZSBleGFtcGxlczogYGBtNS44eGxhcmdlYGAsIGBgYzUqLipgYCwgYGBtNWEuKmBgLCBgYHIqYGAsIGBgKjMqYGAuXG4gKiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBzcGVjaWZ5IGBgYzUqYGAsQW1hem9uIEVDMiB3aWxsIGV4Y2x1ZGUgdGhlIGVudGlyZSBDNSBpbnN0YW5jZSBmYW1pbHksIHdoaWNoIGluY2x1ZGVzIGFsbCBDNWEgYW5kIEM1biBpbnN0YW5jZSB0eXBlcy4gSWYgeW91IHNwZWNpZnkgYGBtNWEuKmBgLCBBbWF6b24gRUMyIHdpbGwgZXhjbHVkZSBhbGwgdGhlIE01YSBpbnN0YW5jZSB0eXBlcywgYnV0IG5vdCB0aGUgTTVuIGluc3RhbmNlIHR5cGVzLlxuICogICBJZiB5b3Ugc3BlY2lmeSBgYEV4Y2x1ZGVkSW5zdGFuY2VUeXBlc2BgLCB5b3UgY2FuJ3Qgc3BlY2lmeSBgYEFsbG93ZWRJbnN0YW5jZVR5cGVzYGAuXG4gKiAgIERlZmF1bHQ6IE5vIGV4Y2x1ZGVkIGluc3RhbmNlIHR5cGVzXG4gKi9cbkV4Y2x1ZGVkSW5zdGFuY2VUeXBlcz86IHN0cmluZ1tdXG4vKipcbiAqIFRoZSBpbnN0YW5jZSB0eXBlcyB0byBhcHBseSB5b3VyIHNwZWNpZmllZCBhdHRyaWJ1dGVzIGFnYWluc3QuIEFsbCBvdGhlciBpbnN0YW5jZSB0eXBlcyBhcmUgaWdub3JlZCwgZXZlbiBpZiB0aGV5IG1hdGNoIHlvdXIgc3BlY2lmaWVkIGF0dHJpYnV0ZXMuXG4gKiAgWW91IGNhbiB1c2Ugc3RyaW5ncyB3aXRoIG9uZSBvciBtb3JlIHdpbGQgY2FyZHMsIHJlcHJlc2VudGVkIGJ5IGFuIGFzdGVyaXNrIChgYCpgYCksIHRvIGFsbG93IGFuIGluc3RhbmNlIHR5cGUsIHNpemUsIG9yIGdlbmVyYXRpb24uIFRoZSBmb2xsb3dpbmcgYXJlIGV4YW1wbGVzOiBgYG01Ljh4bGFyZ2VgYCwgYGBjNSouKmBgLCBgYG01YS4qYGAsIGBgcipgYCwgYGAqMypgYC5cbiAqICBGb3IgZXhhbXBsZSwgaWYgeW91IHNwZWNpZnkgYGBjNSpgYCxBbWF6b24gRUMyIHdpbGwgYWxsb3cgdGhlIGVudGlyZSBDNSBpbnN0YW5jZSBmYW1pbHksIHdoaWNoIGluY2x1ZGVzIGFsbCBDNWEgYW5kIEM1biBpbnN0YW5jZSB0eXBlcy4gSWYgeW91IHNwZWNpZnkgYGBtNWEuKmBgLCBBbWF6b24gRUMyIHdpbGwgYWxsb3cgYWxsIHRoZSBNNWEgaW5zdGFuY2UgdHlwZXMsIGJ1dCBub3QgdGhlIE01biBpbnN0YW5jZSB0eXBlcy5cbiAqICAgSWYgeW91IHNwZWNpZnkgYGBBbGxvd2VkSW5zdGFuY2VUeXBlc2BgLCB5b3UgY2FuJ3Qgc3BlY2lmeSBgYEV4Y2x1ZGVkSW5zdGFuY2VUeXBlc2BgLlxuICogICBEZWZhdWx0OiBBbGwgaW5zdGFuY2UgdHlwZXNcbiAqL1xuQWxsb3dlZEluc3RhbmNlVHlwZXM/OiBzdHJpbmdbXVxuQWNjZWxlcmF0b3JDb3VudD86IEFjY2VsZXJhdG9yQ291bnRcbk5ldHdvcmtCYW5kd2lkdGhHYnBzPzogTmV0d29ya0JhbmR3aWR0aEdicHNcbkJhc2VsaW5lUGVyZm9ybWFuY2VGYWN0b3JzPzogQmFzZWxpbmVQZXJmb3JtYW5jZUZhY3RvcnNcbi8qKlxuICogW1ByaWNlIHByb3RlY3Rpb25dIFRoZSBwcmljZSBwcm90ZWN0aW9uIHRocmVzaG9sZCBmb3IgU3BvdCBJbnN0YW5jZXMsIGFzIGEgcGVyY2VudGFnZSBoaWdoZXIgdGhhbiBhbiBpZGVudGlmaWVkIFNwb3QgcHJpY2UuIFRoZSBpZGVudGlmaWVkIFNwb3QgcHJpY2UgaXMgdGhlIFNwb3QgcHJpY2Ugb2YgdGhlIGxvd2VzdCBwcmljZWQgY3VycmVudCBnZW5lcmF0aW9uIEMsIE0sIG9yIFIgaW5zdGFuY2UgdHlwZSB3aXRoIHlvdXIgc3BlY2lmaWVkIGF0dHJpYnV0ZXMuIElmIG5vIGN1cnJlbnQgZ2VuZXJhdGlvbiBDLCBNLCBvciBSIGluc3RhbmNlIHR5cGUgbWF0Y2hlcyB5b3VyIGF0dHJpYnV0ZXMsIHRoZW4gdGhlIGlkZW50aWZpZWQgU3BvdCBwcmljZSBpcyBmcm9tIHRoZSBsb3dlc3QgcHJpY2VkIGN1cnJlbnQgZ2VuZXJhdGlvbiBpbnN0YW5jZSB0eXBlcywgYW5kIGZhaWxpbmcgdGhhdCwgZnJvbSB0aGUgbG93ZXN0IHByaWNlZCBwcmV2aW91cyBnZW5lcmF0aW9uIGluc3RhbmNlIHR5cGVzIHRoYXQgbWF0Y2ggeW91ciBhdHRyaWJ1dGVzLiBXaGVuIEFtYXpvbiBFQzIgc2VsZWN0cyBpbnN0YW5jZSB0eXBlcyB3aXRoIHlvdXIgYXR0cmlidXRlcywgaXQgd2lsbCBleGNsdWRlIGluc3RhbmNlIHR5cGVzIHdob3NlIFNwb3QgcHJpY2UgZXhjZWVkcyB5b3VyIHNwZWNpZmllZCB0aHJlc2hvbGQuXG4gKiAgVGhlIHBhcmFtZXRlciBhY2NlcHRzIGFuIGludGVnZXIsIHdoaWNoIEFtYXpvbiBFQzIgaW50ZXJwcmV0cyBhcyBhIHBlcmNlbnRhZ2UuXG4gKiAgSWYgeW91IHNldCBgYFRhcmdldENhcGFjaXR5VW5pdFR5cGVgYCB0byBgYHZjcHVgYCBvciBgYG1lbW9yeS1taWJgYCwgdGhlIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGlzIGFwcGxpZWQgYmFzZWQgb24gdGhlIHBlci12Q1BVIG9yIHBlci1tZW1vcnkgcHJpY2UgaW5zdGVhZCBvZiB0aGUgcGVyLWluc3RhbmNlIHByaWNlLlxuICogIFRoaXMgcGFyYW1ldGVyIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFtHZXRTcG90UGxhY2VtZW50U2NvcmVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0dldFNwb3RQbGFjZW1lbnRTY29yZXMuaHRtbCkgYW5kIFtHZXRJbnN0YW5jZVR5cGVzRnJvbUluc3RhbmNlUmVxdWlyZW1lbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0dldEluc3RhbmNlVHlwZXNGcm9tSW5zdGFuY2VSZXF1aXJlbWVudHMuaHRtbCkuXG4gKiAgIE9ubHkgb25lIG9mIGBgU3BvdE1heFByaWNlUGVyY2VudGFnZU92ZXJMb3dlc3RQcmljZWBgIG9yIGBgTWF4U3BvdFByaWNlQXNQZXJjZW50YWdlT2ZPcHRpbWFsT25EZW1hbmRQcmljZWBgIGNhbiBiZSBzcGVjaWZpZWQuIElmIHlvdSBkb24ndCBzcGVjaWZ5IGVpdGhlciwgQW1hem9uIEVDMiB3aWxsIGF1dG9tYXRpY2FsbHkgYXBwbHkgb3B0aW1hbCBwcmljZSBwcm90ZWN0aW9uIHRvIGNvbnNpc3RlbnRseSBzZWxlY3QgZnJvbSBhIHdpZGUgcmFuZ2Ugb2YgaW5zdGFuY2UgdHlwZXMuIFRvIGluZGljYXRlIG5vIHByaWNlIHByb3RlY3Rpb24gdGhyZXNob2xkIGZvciBTcG90IEluc3RhbmNlcywgbWVhbmluZyB5b3Ugd2FudCB0byBjb25zaWRlciBhbGwgaW5zdGFuY2UgdHlwZXMgdGhhdCBtYXRjaCB5b3VyIGF0dHJpYnV0ZXMsIGluY2x1ZGUgb25lIG9mIHRoZXNlIHBhcmFtZXRlcnMgYW5kIHNwZWNpZnkgYSBoaWdoIHZhbHVlLCBzdWNoIGFzIGBgOTk5OTk5YGAuXG4gKiAgIERlZmF1bHQ6IGBgMTAwYGBcbiAqL1xuU3BvdE1heFByaWNlUGVyY2VudGFnZU92ZXJMb3dlc3RQcmljZT86IG51bWJlclxuQmFzZWxpbmVFYnNCYW5kd2lkdGhNYnBzPzogQmFzZWxpbmVFYnNCYW5kd2lkdGhNYnBzXG4vKipcbiAqIFRoZSBhY2NlbGVyYXRvcnMgdGhhdCBtdXN0IGJlIG9uIHRoZSBpbnN0YW5jZSB0eXBlLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgQTEwRyBHUFVzLCBzcGVjaWZ5IGBgYTEwZ2BgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgQTEwMCBHUFVzLCBzcGVjaWZ5IGBgYTEwMGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgSDEwMCBHUFVzLCBzcGVjaWZ5IGBgaDEwMGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBBV1MgSW5mZXJlbnRpYSBjaGlwcywgc3BlY2lmeSBgYGluZmVyZW50aWFgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggTlZJRElBIEdSSUQgSzUyMCBHUFVzLCBzcGVjaWZ5IGBgazUyMGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgSzgwIEdQVXMsIHNwZWNpZnkgYGBrODBgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggTlZJRElBIE02MCBHUFVzLCBzcGVjaWZ5IGBgbTYwYGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIEFNRCBSYWRlb24gUHJvIFY1MjAgR1BVcywgc3BlY2lmeSBgYHJhZGVvbi1wcm8tdjUyMGBgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBOVklESUEgVDQgR1BVcywgc3BlY2lmeSBgYHQ0YGAuXG4gKiAgICsgIEZvciBpbnN0YW5jZSB0eXBlcyB3aXRoIE5WSURJQSBUNEcgR1BVcywgc3BlY2lmeSBgYHQ0Z2BgLlxuICogICArICBGb3IgaW5zdGFuY2UgdHlwZXMgd2l0aCBYaWxpbnggVlU5UCBGUEdBcywgc3BlY2lmeSBgYHZ1OXBgYC5cbiAqICAgKyAgRm9yIGluc3RhbmNlIHR5cGVzIHdpdGggTlZJRElBIFYxMDAgR1BVcywgc3BlY2lmeSBgYHYxMDBgYC5cbiAqICAgXG4gKiAgRGVmYXVsdDogQW55IGFjY2VsZXJhdG9yXG4gKi9cbkFjY2VsZXJhdG9yTmFtZXM/OiBzdHJpbmdbXVxuQWNjZWxlcmF0b3JUb3RhbE1lbW9yeU1pQj86IEFjY2VsZXJhdG9yVG90YWxNZW1vcnlNaUJcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgYnVyc3RhYmxlIHBlcmZvcm1hbmNlIFQgaW5zdGFuY2UgdHlwZXMgYXJlIGluY2x1ZGVkLCBleGNsdWRlZCwgb3IgcmVxdWlyZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0J1cnN0YWJsZSBwZXJmb3JtYW5jZSBpbnN0YW5jZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9idXJzdGFibGUtcGVyZm9ybWFuY2UtaW5zdGFuY2VzLmh0bWwpLlxuICogICArICBUbyBpbmNsdWRlIGJ1cnN0YWJsZSBwZXJmb3JtYW5jZSBpbnN0YW5jZSB0eXBlcywgc3BlY2lmeSBgYGluY2x1ZGVkYGAuXG4gKiAgICsgIFRvIHJlcXVpcmUgb25seSBidXJzdGFibGUgcGVyZm9ybWFuY2UgaW5zdGFuY2UgdHlwZXMsIHNwZWNpZnkgYGByZXF1aXJlZGBgLlxuICogICArICBUbyBleGNsdWRlIGJ1cnN0YWJsZSBwZXJmb3JtYW5jZSBpbnN0YW5jZSB0eXBlcywgc3BlY2lmeSBgYGV4Y2x1ZGVkYGAuXG4gKiAgIFxuICogIERlZmF1bHQ6IGBgZXhjbHVkZWRgYFxuICovXG5CdXJzdGFibGVQZXJmb3JtYW5jZT86IHN0cmluZ1xuVG90YWxMb2NhbFN0b3JhZ2VHQj86IFRvdGFsTG9jYWxTdG9yYWdlR0Jcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gYW1vdW50IG9mIG1lbW9yeSBwZXIgdkNQVSwgaW4gR2lCLlxuICogIERlZmF1bHQ6IE5vIG1pbmltdW0gb3IgbWF4aW11bSBsaW1pdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW1vcnlHaUJQZXJWQ3B1IHtcbi8qKlxuICogVGhlIG1pbmltdW0gYW1vdW50IG9mIG1lbW9yeSBwZXIgdkNQVSwgaW4gR2lCLiBUbyBzcGVjaWZ5IG5vIG1pbmltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSBhbW91bnQgb2YgbWVtb3J5IHBlciB2Q1BVLCBpbiBHaUIuIFRvIHNwZWNpZnkgbm8gbWF4aW11bSBsaW1pdCwgb21pdCB0aGlzIHBhcmFtZXRlci5cbiAqL1xuTWF4PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIG51bWJlciBvZiB2Q1BVcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWQ3B1Q291bnQge1xuLyoqXG4gKiBUaGUgbWluaW11bSBudW1iZXIgb2YgdkNQVXMuIFRvIHNwZWNpZnkgbm8gbWluaW11bSBsaW1pdCwgc3BlY2lmeSBgYDBgYC5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiB2Q1BVcy4gVG8gc3BlY2lmeSBubyBtYXhpbXVtIGxpbWl0LCBvbWl0IHRoaXMgcGFyYW1ldGVyLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gYW1vdW50IG9mIG1lbW9yeSwgaW4gTWlCLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lbW9yeU1pQiB7XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFtb3VudCBvZiBtZW1vcnksIGluIE1pQi4gVG8gc3BlY2lmeSBubyBtaW5pbXVtIGxpbWl0LCBzcGVjaWZ5IGBgMGBgLlxuICovXG5NaW4/OiBudW1iZXJcbi8qKlxuICogVGhlIG1heGltdW0gYW1vdW50IG9mIG1lbW9yeSwgaW4gTWlCLiBUbyBzcGVjaWZ5IG5vIG1heGltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBudW1iZXIgb2YgbmV0d29yayBpbnRlcmZhY2VzLlxuICogIERlZmF1bHQ6IE5vIG1pbmltdW0gb3IgbWF4aW11bSBsaW1pdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrSW50ZXJmYWNlQ291bnQge1xuLyoqXG4gKiBUaGUgbWluaW11bSBudW1iZXIgb2YgbmV0d29yayBpbnRlcmZhY2VzLiBUbyBzcGVjaWZ5IG5vIG1pbmltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgbmV0d29yayBpbnRlcmZhY2VzLiBUbyBzcGVjaWZ5IG5vIG1heGltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBudW1iZXIgb2YgYWNjZWxlcmF0b3JzIChHUFVzLCBGUEdBcywgb3IgQVdTIEluZmVyZW50aWEgY2hpcHMpIG9uIGFuIGluc3RhbmNlLlxuICogIFRvIGV4Y2x1ZGUgYWNjZWxlcmF0b3ItZW5hYmxlZCBpbnN0YW5jZSB0eXBlcywgc2V0IGBgTWF4YGAgdG8gYGAwYGAuXG4gKiAgRGVmYXVsdDogTm8gbWluaW11bSBvciBtYXhpbXVtIGxpbWl0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjY2VsZXJhdG9yQ291bnQge1xuLyoqXG4gKiBUaGUgbWluaW11bSBudW1iZXIgb2YgYWNjZWxlcmF0b3JzLiBUbyBzcGVjaWZ5IG5vIG1pbmltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgYWNjZWxlcmF0b3JzLiBUbyBzcGVjaWZ5IG5vIG1heGltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuIFRvIGV4Y2x1ZGUgYWNjZWxlcmF0b3ItZW5hYmxlZCBpbnN0YW5jZSB0eXBlcywgc2V0IGBgTWF4YGAgdG8gYGAwYGAuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBhbW91bnQgb2YgbmV0d29yayBiYW5kd2lkdGgsIGluIGdpZ2FiaXRzIHBlciBzZWNvbmQgKEdicHMpLlxuICogIERlZmF1bHQ6IE5vIG1pbmltdW0gb3IgbWF4aW11bSBsaW1pdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrQmFuZHdpZHRoR2JwcyB7XG4vKipcbiAqIFRoZSBtaW5pbXVtIGFtb3VudCBvZiBuZXR3b3JrIGJhbmR3aWR0aCwgaW4gR2Jwcy4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgbm90IHNwZWNpZmllZCwgdGhlcmUgaXMgbm8gbWluaW11bSBsaW1pdC5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBuZXR3b3JrIGJhbmR3aWR0aCwgaW4gR2Jwcy4gVG8gc3BlY2lmeSBubyBtYXhpbXVtIGxpbWl0LCBvbWl0IHRoaXMgcGFyYW1ldGVyLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIGJhc2VsaW5lIHBlcmZvcm1hbmNlIHRvIGNvbnNpZGVyLCB1c2luZyBhbiBpbnN0YW5jZSBmYW1pbHkgYXMgYSBiYXNlbGluZSByZWZlcmVuY2UuIFRoZSBpbnN0YW5jZSBmYW1pbHkgZXN0YWJsaXNoZXMgdGhlIGxvd2VzdCBhY2NlcHRhYmxlIGxldmVsIG9mIHBlcmZvcm1hbmNlLiBBbWF6b24gRUMyIHVzZXMgdGhpcyBiYXNlbGluZSB0byBndWlkZSBpbnN0YW5jZSB0eXBlIHNlbGVjdGlvbiwgYnV0IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBzZWxlY3RlZCBpbnN0YW5jZSB0eXBlcyB3aWxsIGFsd2F5cyBleGNlZWQgdGhlIGJhc2VsaW5lIGZvciBldmVyeSBhcHBsaWNhdGlvbi4gQ3VycmVudGx5LCB0aGlzIHBhcmFtZXRlciBvbmx5IHN1cHBvcnRzIENQVSBwZXJmb3JtYW5jZSBhcyBhIGJhc2VsaW5lIHBlcmZvcm1hbmNlIGZhY3Rvci4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUGVyZm9ybWFuY2UgcHJvdGVjdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2VjMi1mbGVldC1hdHRyaWJ1dGUtYmFzZWQtaW5zdGFuY2UtdHlwZS1zZWxlY3Rpb24uaHRtbCNlYzJmbGVldC1hYmlzLXBlcmZvcm1hbmNlLXByb3RlY3Rpb24pIGluIHRoZSAqQW1hem9uIEVDMiBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlbGluZVBlcmZvcm1hbmNlRmFjdG9ycyB7XG5DcHU/OiBDcHVcbn1cbi8qKlxuICogVGhlIENQVSBwZXJmb3JtYW5jZSB0byBjb25zaWRlciwgdXNpbmcgYW4gaW5zdGFuY2UgZmFtaWx5IGFzIHRoZSBiYXNlbGluZSByZWZlcmVuY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3B1IHtcblJlZmVyZW5jZXM/OiBSZWZlcmVuY2VzXG59XG4vKipcbiAqIFNwZWNpZmllcyBhbiBpbnN0YW5jZSBmYW1pbHkgdG8gdXNlIGFzIHRoZSBiYXNlbGluZSByZWZlcmVuY2UgZm9yIENQVSBwZXJmb3JtYW5jZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWZlcmVuY2Uge1xuLyoqXG4gKiBUaGUgaW5zdGFuY2UgZmFtaWx5IHRvIHVzZSBhcyBhIGJhc2VsaW5lIHJlZmVyZW5jZS5cbiAqICAgRW5zdXJlIHRoYXQgeW91IHNwZWNpZnkgdGhlIGNvcnJlY3QgdmFsdWUgZm9yIHRoZSBpbnN0YW5jZSBmYW1pbHkuIFRoZSBpbnN0YW5jZSBmYW1pbHkgaXMgZXZlcnl0aGluZyBiZWZvcmUgdGhlIHBlcmlvZCAoYGAuYGApIGluIHRoZSBpbnN0YW5jZSB0eXBlIG5hbWUuIEZvciBleGFtcGxlLCBpbiB0aGUgaW5zdGFuY2UgdHlwZSBgYGM2aS5sYXJnZWBgLCB0aGUgaW5zdGFuY2UgZmFtaWx5IGlzIGBgYzZpYGAsIG5vdCBgYGM2YGAuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBFQzIgaW5zdGFuY2UgdHlwZSBuYW1pbmcgY29udmVudGlvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lYzIvbGF0ZXN0L2luc3RhbmNldHlwZXMvaW5zdGFuY2UtdHlwZS1uYW1lcy5odG1sKSBpbiAqQW1hem9uIEVDMiBJbnN0YW5jZSBUeXBlcyouXG4gKiAgIFRoZSBmb2xsb3dpbmcgaW5zdGFuY2UgZmFtaWxpZXMgYXJlICpub3Qgc3VwcG9ydGVkKiBmb3IgcGVyZm9ybWFuY2UgcHJvdGVjdGlvbjpcbiAqICAgKyAgIGBgYzFgYCBcbiAqICAgKyAgYGBnM2BgIHwgYGBnM3NgYFxuICogICArICAgYGBocGM3Z2BgIFxuICogICArICBgYG0xYGAgfCBgYG0yYGBcbiAqICAgKyAgYGBtYWMxYGAgfCBgYG1hYzJgYCB8IGBgbWFjMi1tMXVsdHJhYGAgfCBgYG1hYzItbTJgYCB8IGBgbWFjMi1tMnByb2BgXG4gKiAgICsgIGBgcDNkbmBgIHwgYGBwNGRgYCB8IGBgcDVgYFxuICogICArICAgYGB0MWBgIFxuICogICArICBgYHUtMTJ0YjFgYCB8IGBgdS0xOHRiMWBgIHwgYGB1LTI0dGIxYGAgfCBgYHUtM3RiMWBgIHwgYGB1LTZ0YjFgYCB8IGBgdS05dGIxYGAgfCBgYHU3aS0xMnRiYGAgfCBgYHU3aW4tMTZ0YmBgIHwgYGB1N2luLTI0dGJgYCB8IGBgdTdpbi0zMnRiYGBcbiAqICAgXG4gKiAgSWYgeW91IGVuYWJsZSBwZXJmb3JtYW5jZSBwcm90ZWN0aW9uIGJ5IHNwZWNpZnlpbmcgYSBzdXBwb3J0ZWQgaW5zdGFuY2UgZmFtaWx5LCB0aGUgcmV0dXJuZWQgaW5zdGFuY2UgdHlwZXMgd2lsbCBleGNsdWRlIHRoZSBhYm92ZSB1bnN1cHBvcnRlZCBpbnN0YW5jZSBmYW1pbGllcy5cbiAqL1xuSW5zdGFuY2VGYW1pbHk/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gYmFzZWxpbmUgYmFuZHdpZHRoIHRvIEFtYXpvbiBFQlMsIGluIE1icHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBFQlPigJNvcHRpbWl6ZWQgaW5zdGFuY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvZWJzLW9wdGltaXplZC5odG1sKSBpbiB0aGUgKkFtYXpvbiBFQzIgVXNlciBHdWlkZSouXG4gKiAgRGVmYXVsdDogTm8gbWluaW11bSBvciBtYXhpbXVtIGxpbWl0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VsaW5lRWJzQmFuZHdpZHRoTWJwcyB7XG4vKipcbiAqIFRoZSBtaW5pbXVtIGJhc2VsaW5lIGJhbmR3aWR0aCwgaW4gTWJwcy4gVG8gc3BlY2lmeSBubyBtaW5pbXVtIGxpbWl0LCBvbWl0IHRoaXMgcGFyYW1ldGVyLlxuICovXG5NaW4/OiBudW1iZXJcbi8qKlxuICogVGhlIG1heGltdW0gYmFzZWxpbmUgYmFuZHdpZHRoLCBpbiBNYnBzLiBUbyBzcGVjaWZ5IG5vIG1heGltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1heD86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBhbW91bnQgb2YgdG90YWwgYWNjZWxlcmF0b3IgbWVtb3J5LCBpbiBNaUIuXG4gKiAgRGVmYXVsdDogTm8gbWluaW11bSBvciBtYXhpbXVtIGxpbWl0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjY2VsZXJhdG9yVG90YWxNZW1vcnlNaUIge1xuLyoqXG4gKiBUaGUgbWluaW11bSBhbW91bnQgb2YgYWNjZWxlcmF0b3IgbWVtb3J5LCBpbiBNaUIuIFRvIHNwZWNpZnkgbm8gbWluaW11bSBsaW1pdCwgb21pdCB0aGlzIHBhcmFtZXRlci5cbiAqL1xuTWluPzogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBhY2NlbGVyYXRvciBtZW1vcnksIGluIE1pQi4gVG8gc3BlY2lmeSBubyBtYXhpbXVtIGxpbWl0LCBvbWl0IHRoaXMgcGFyYW1ldGVyLlxuICovXG5NYXg/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIG1pbmltdW0gYW5kIG1heGltdW0gYW1vdW50IG9mIHRvdGFsIGxvY2FsIHN0b3JhZ2UsIGluIEdCLlxuICogIERlZmF1bHQ6IE5vIG1pbmltdW0gb3IgbWF4aW11bSBsaW1pdHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb3RhbExvY2FsU3RvcmFnZUdCIHtcbi8qKlxuICogVGhlIG1pbmltdW0gYW1vdW50IG9mIHRvdGFsIGxvY2FsIHN0b3JhZ2UsIGluIEdCLiBUbyBzcGVjaWZ5IG5vIG1pbmltdW0gbGltaXQsIG9taXQgdGhpcyBwYXJhbWV0ZXIuXG4gKi9cbk1pbj86IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSBhbW91bnQgb2YgdG90YWwgbG9jYWwgc3RvcmFnZSwgaW4gR0IuIFRvIHNwZWNpZnkgbm8gbWF4aW11bSBsaW1pdCwgb21pdCB0aGlzIHBhcmFtZXRlci5cbiAqL1xuTWF4PzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBDYXBhY2l0eSBSZXNlcnZhdGlvbiB0YXJnZXRpbmcgb3B0aW9uLiBJZiB5b3UgZG8gbm90IHNwZWNpZnkgdGhpcyBwYXJhbWV0ZXIsIHRoZSBpbnN0YW5jZSdzIENhcGFjaXR5IFJlc2VydmF0aW9uIHByZWZlcmVuY2UgZGVmYXVsdHMgdG8gYGBvcGVuYGAsIHdoaWNoIGVuYWJsZXMgaXQgdG8gcnVuIGluIGFueSBvcGVuIENhcGFjaXR5IFJlc2VydmF0aW9uIHRoYXQgaGFzIG1hdGNoaW5nIGF0dHJpYnV0ZXMgKGluc3RhbmNlIHR5cGUsIHBsYXRmb3JtLCBBdmFpbGFiaWxpdHkgWm9uZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FwYWNpdHlSZXNlcnZhdGlvblNwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBJbmRpY2F0ZXMgdGhlIGluc3RhbmNlJ3MgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gcHJlZmVyZW5jZXMuIFBvc3NpYmxlIHByZWZlcmVuY2VzIGluY2x1ZGU6XG4gKiAgICsgIGBgY2FwYWNpdHktcmVzZXJ2YXRpb25zLW9ubHlgYCAtIFRoZSBpbnN0YW5jZSB3aWxsIG9ubHkgcnVuIGluIGEgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gb3IgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gZ3JvdXAuIElmIGNhcGFjaXR5IGlzbid0IGF2YWlsYWJsZSwgdGhlIGluc3RhbmNlIHdpbGwgZmFpbCB0byBsYXVuY2guXG4gKiAgICsgIGBgb3BlbmBgIC0gVGhlIGluc3RhbmNlIGNhbiBydW4gaW4gYW55IGBgb3BlbmBgIENhcGFjaXR5IFJlc2VydmF0aW9uIHRoYXQgaGFzIG1hdGNoaW5nIGF0dHJpYnV0ZXMgKGluc3RhbmNlIHR5cGUsIHBsYXRmb3JtLCBBdmFpbGFiaWxpdHkgWm9uZSwgdGVuYW5jeSkuXG4gKiAgICsgIGBgbm9uZWBgIC0gVGhlIGluc3RhbmNlIGF2b2lkcyBydW5uaW5nIGluIGEgQ2FwYWNpdHkgUmVzZXJ2YXRpb24gZXZlbiBpZiBvbmUgaXMgYXZhaWxhYmxlLiBUaGUgaW5zdGFuY2UgcnVucyBpbiBPbi1EZW1hbmQgY2FwYWNpdHkuXG4gKi9cbkNhcGFjaXR5UmVzZXJ2YXRpb25QcmVmZXJlbmNlPzogc3RyaW5nXG5DYXBhY2l0eVJlc2VydmF0aW9uVGFyZ2V0PzogQ2FwYWNpdHlSZXNlcnZhdGlvblRhcmdldFxufVxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgdGFyZ2V0IENhcGFjaXR5IFJlc2VydmF0aW9uIG9yIENhcGFjaXR5IFJlc2VydmF0aW9uIGdyb3VwLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENhcGFjaXR5UmVzZXJ2YXRpb25UYXJnZXQge1xuLyoqXG4gKiBUaGUgQVJOIG9mIHRoZSBDYXBhY2l0eSBSZXNlcnZhdGlvbiByZXNvdXJjZSBncm91cCBpbiB3aGljaCB0byBydW4gdGhlIGluc3RhbmNlLlxuICovXG5DYXBhY2l0eVJlc2VydmF0aW9uUmVzb3VyY2VHcm91cEFybj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgSUQgb2YgdGhlIENhcGFjaXR5IFJlc2VydmF0aW9uIGluIHdoaWNoIHRvIHJ1biB0aGUgaW5zdGFuY2UuXG4gKi9cbkNhcGFjaXR5UmVzZXJ2YXRpb25JZD86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgY3JlZGl0IG9wdGlvbiBmb3IgQ1BVIHVzYWdlIG9mIHRoZSBpbnN0YW5jZS4gVmFsaWQgb25seSBmb3IgVCBpbnN0YW5jZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlZGl0U3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIFRoZSBjcmVkaXQgb3B0aW9uIGZvciBDUFUgdXNhZ2Ugb2YgYSBUIGluc3RhbmNlLlxuICogIFZhbGlkIHZhbHVlczogYGBzdGFuZGFyZGBgIHwgYGB1bmxpbWl0ZWRgYFxuICovXG5DcHVDcmVkaXRzPzogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgdGFncyB0byBhcHBseSB0byB0aGUgbGF1bmNoIHRlbXBsYXRlIGR1cmluZyBjcmVhdGlvbi5cbiAqICBUbyBzcGVjaWZ5IHRoZSB0YWdzIGZvciB0aGUgcmVzb3VyY2VzIHRoYXQgYXJlIGNyZWF0ZWQgZHVyaW5nIGluc3RhbmNlIGxhdW5jaCwgdXNlIFtBV1M6OkVDMjo6TGF1bmNoVGVtcGxhdGUgVGFnU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZWMyLWxhdW5jaHRlbXBsYXRlLXRhZ3NwZWNpZmljYXRpb24uaHRtbCkuXG4gKiAgYGBMYXVuY2hUZW1wbGF0ZVRhZ1NwZWNpZmljYXRpb25gYCBpcyBhIHByb3BlcnR5IG9mIFtBV1M6OkVDMjo6TGF1bmNoVGVtcGxhdGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1lYzItbGF1bmNodGVtcGxhdGUuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGF1bmNoVGVtcGxhdGVUYWdTcGVjaWZpY2F0aW9uIHtcbi8qKlxuICogVGhlIHR5cGUgb2YgcmVzb3VyY2UuIFRvIHRhZyBhIGxhdW5jaCB0ZW1wbGF0ZSwgYGBSZXNvdXJjZVR5cGVgYCBtdXN0IGJlIGBgbGF1bmNoLXRlbXBsYXRlYGAuXG4gKi9cblJlc291cmNlVHlwZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdGFncyBmb3IgdGhlIHJlc291cmNlLlxuICovXG5UYWdzPzogVGFnW11cbn1cbiJdfQ==