@effect-aws/client-s3 1.6.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/Errors/package.json +6 -0
  2. package/S3ClientInstance/package.json +6 -0
  3. package/S3Service/package.json +6 -0
  4. package/S3ServiceConfig/package.json +6 -0
  5. package/{lib → dist/cjs}/Errors.d.ts +6 -10
  6. package/dist/cjs/Errors.d.ts.map +1 -0
  7. package/dist/cjs/Errors.js +23 -0
  8. package/dist/cjs/Errors.js.map +1 -0
  9. package/dist/cjs/S3ClientInstance.d.ts +24 -0
  10. package/dist/cjs/S3ClientInstance.d.ts.map +1 -0
  11. package/dist/cjs/S3ClientInstance.js +50 -0
  12. package/dist/cjs/S3ClientInstance.js.map +1 -0
  13. package/{lib → dist/cjs}/S3Service.d.ts +16 -38
  14. package/dist/cjs/S3Service.d.ts.map +1 -0
  15. package/dist/cjs/S3Service.js +159 -0
  16. package/dist/cjs/S3Service.js.map +1 -0
  17. package/dist/cjs/S3ServiceConfig.d.ts +25 -0
  18. package/dist/cjs/S3ServiceConfig.d.ts.map +1 -0
  19. package/dist/cjs/S3ServiceConfig.js +35 -0
  20. package/dist/cjs/S3ServiceConfig.js.map +1 -0
  21. package/dist/cjs/index.d.ts +39 -0
  22. package/dist/cjs/index.d.ts.map +1 -0
  23. package/dist/cjs/index.js +56 -0
  24. package/dist/cjs/index.js.map +1 -0
  25. package/dist/dts/Errors.d.ts +25 -0
  26. package/dist/dts/Errors.d.ts.map +1 -0
  27. package/dist/dts/S3ClientInstance.d.ts +24 -0
  28. package/dist/dts/S3ClientInstance.d.ts.map +1 -0
  29. package/dist/dts/S3Service.d.ts +544 -0
  30. package/dist/dts/S3Service.d.ts.map +1 -0
  31. package/dist/dts/S3ServiceConfig.d.ts +25 -0
  32. package/dist/dts/S3ServiceConfig.d.ts.map +1 -0
  33. package/dist/dts/index.d.ts +39 -0
  34. package/dist/dts/index.d.ts.map +1 -0
  35. package/dist/esm/Errors.js +20 -0
  36. package/dist/esm/Errors.js.map +1 -0
  37. package/dist/esm/S3ClientInstance.js +23 -0
  38. package/dist/esm/S3ClientInstance.js.map +1 -0
  39. package/dist/esm/S3Service.js +132 -0
  40. package/dist/esm/S3Service.js.map +1 -0
  41. package/dist/esm/S3ServiceConfig.js +31 -0
  42. package/dist/esm/S3ServiceConfig.js.map +1 -0
  43. package/dist/esm/index.js +27 -0
  44. package/dist/esm/index.js.map +1 -0
  45. package/dist/esm/package.json +4 -0
  46. package/package.json +61 -44
  47. package/src/Errors.ts +56 -0
  48. package/src/S3ClientInstance.ts +33 -0
  49. package/src/S3Service.ts +1579 -0
  50. package/src/S3ServiceConfig.ts +51 -0
  51. package/src/index.ts +44 -0
  52. package/CHANGELOG.md +0 -137
  53. package/docgen.json +0 -8
  54. package/lib/Errors.js +0 -22
  55. package/lib/S3ClientInstance.d.ts +0 -31
  56. package/lib/S3ClientInstance.js +0 -57
  57. package/lib/S3ClientInstanceConfig.d.ts +0 -23
  58. package/lib/S3ClientInstanceConfig.js +0 -44
  59. package/lib/S3Service.js +0 -192
  60. package/lib/esm/Errors.js +0 -19
  61. package/lib/esm/S3ClientInstance.js +0 -30
  62. package/lib/esm/S3ClientInstanceConfig.js +0 -40
  63. package/lib/esm/S3Service.js +0 -188
  64. package/lib/esm/index.js +0 -5
  65. package/lib/index.d.ts +0 -4
  66. package/lib/index.js +0 -21
  67. package/project.json +0 -77
  68. package/vitest.config.ts +0 -3
package/lib/S3Service.js DELETED
@@ -1,192 +0,0 @@
1
- "use strict";
2
- var _a;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.DefaultS3ServiceLayer = exports.S3ServiceLayer = exports.BaseS3ServiceLayer = exports.S3 = exports.S3Service = exports.makeS3Service = void 0;
5
- /**
6
- * @since 1.0.0
7
- */
8
- const client_s3_1 = require("@aws-sdk/client-s3");
9
- const s3_request_presigner_1 = require("@aws-sdk/s3-request-presigner");
10
- const effect_1 = require("effect");
11
- const Errors_1 = require("./Errors");
12
- const S3ClientInstance_1 = require("./S3ClientInstance");
13
- const S3ClientInstanceConfig_1 = require("./S3ClientInstanceConfig");
14
- const commands = {
15
- AbortMultipartUploadCommand: client_s3_1.AbortMultipartUploadCommand,
16
- CompleteMultipartUploadCommand: client_s3_1.CompleteMultipartUploadCommand,
17
- CopyObjectCommand: client_s3_1.CopyObjectCommand,
18
- CreateBucketCommand: client_s3_1.CreateBucketCommand,
19
- CreateBucketMetadataTableConfigurationCommand: client_s3_1.CreateBucketMetadataTableConfigurationCommand,
20
- CreateMultipartUploadCommand: client_s3_1.CreateMultipartUploadCommand,
21
- CreateSessionCommand: client_s3_1.CreateSessionCommand,
22
- DeleteBucketCommand: client_s3_1.DeleteBucketCommand,
23
- DeleteBucketAnalyticsConfigurationCommand: client_s3_1.DeleteBucketAnalyticsConfigurationCommand,
24
- DeleteBucketCorsCommand: client_s3_1.DeleteBucketCorsCommand,
25
- DeleteBucketEncryptionCommand: client_s3_1.DeleteBucketEncryptionCommand,
26
- DeleteBucketIntelligentTieringConfigurationCommand: client_s3_1.DeleteBucketIntelligentTieringConfigurationCommand,
27
- DeleteBucketInventoryConfigurationCommand: client_s3_1.DeleteBucketInventoryConfigurationCommand,
28
- DeleteBucketLifecycleCommand: client_s3_1.DeleteBucketLifecycleCommand,
29
- DeleteBucketMetadataTableConfigurationCommand: client_s3_1.DeleteBucketMetadataTableConfigurationCommand,
30
- DeleteBucketMetricsConfigurationCommand: client_s3_1.DeleteBucketMetricsConfigurationCommand,
31
- DeleteBucketOwnershipControlsCommand: client_s3_1.DeleteBucketOwnershipControlsCommand,
32
- DeleteBucketPolicyCommand: client_s3_1.DeleteBucketPolicyCommand,
33
- DeleteBucketReplicationCommand: client_s3_1.DeleteBucketReplicationCommand,
34
- DeleteBucketTaggingCommand: client_s3_1.DeleteBucketTaggingCommand,
35
- DeleteBucketWebsiteCommand: client_s3_1.DeleteBucketWebsiteCommand,
36
- DeleteObjectCommand: client_s3_1.DeleteObjectCommand,
37
- DeleteObjectTaggingCommand: client_s3_1.DeleteObjectTaggingCommand,
38
- DeleteObjectsCommand: client_s3_1.DeleteObjectsCommand,
39
- DeletePublicAccessBlockCommand: client_s3_1.DeletePublicAccessBlockCommand,
40
- GetBucketAccelerateConfigurationCommand: client_s3_1.GetBucketAccelerateConfigurationCommand,
41
- GetBucketAclCommand: client_s3_1.GetBucketAclCommand,
42
- GetBucketAnalyticsConfigurationCommand: client_s3_1.GetBucketAnalyticsConfigurationCommand,
43
- GetBucketCorsCommand: client_s3_1.GetBucketCorsCommand,
44
- GetBucketEncryptionCommand: client_s3_1.GetBucketEncryptionCommand,
45
- GetBucketIntelligentTieringConfigurationCommand: client_s3_1.GetBucketIntelligentTieringConfigurationCommand,
46
- GetBucketInventoryConfigurationCommand: client_s3_1.GetBucketInventoryConfigurationCommand,
47
- GetBucketLifecycleConfigurationCommand: client_s3_1.GetBucketLifecycleConfigurationCommand,
48
- GetBucketLocationCommand: client_s3_1.GetBucketLocationCommand,
49
- GetBucketLoggingCommand: client_s3_1.GetBucketLoggingCommand,
50
- GetBucketMetadataTableConfigurationCommand: client_s3_1.GetBucketMetadataTableConfigurationCommand,
51
- GetBucketMetricsConfigurationCommand: client_s3_1.GetBucketMetricsConfigurationCommand,
52
- GetBucketNotificationConfigurationCommand: client_s3_1.GetBucketNotificationConfigurationCommand,
53
- GetBucketOwnershipControlsCommand: client_s3_1.GetBucketOwnershipControlsCommand,
54
- GetBucketPolicyCommand: client_s3_1.GetBucketPolicyCommand,
55
- GetBucketPolicyStatusCommand: client_s3_1.GetBucketPolicyStatusCommand,
56
- GetBucketReplicationCommand: client_s3_1.GetBucketReplicationCommand,
57
- GetBucketRequestPaymentCommand: client_s3_1.GetBucketRequestPaymentCommand,
58
- GetBucketTaggingCommand: client_s3_1.GetBucketTaggingCommand,
59
- GetBucketVersioningCommand: client_s3_1.GetBucketVersioningCommand,
60
- GetBucketWebsiteCommand: client_s3_1.GetBucketWebsiteCommand,
61
- GetObjectCommand: client_s3_1.GetObjectCommand,
62
- GetObjectAclCommand: client_s3_1.GetObjectAclCommand,
63
- GetObjectAttributesCommand: client_s3_1.GetObjectAttributesCommand,
64
- GetObjectLegalHoldCommand: client_s3_1.GetObjectLegalHoldCommand,
65
- GetObjectLockConfigurationCommand: client_s3_1.GetObjectLockConfigurationCommand,
66
- GetObjectRetentionCommand: client_s3_1.GetObjectRetentionCommand,
67
- GetObjectTaggingCommand: client_s3_1.GetObjectTaggingCommand,
68
- GetObjectTorrentCommand: client_s3_1.GetObjectTorrentCommand,
69
- GetPublicAccessBlockCommand: client_s3_1.GetPublicAccessBlockCommand,
70
- HeadBucketCommand: client_s3_1.HeadBucketCommand,
71
- HeadObjectCommand: client_s3_1.HeadObjectCommand,
72
- ListBucketAnalyticsConfigurationsCommand: client_s3_1.ListBucketAnalyticsConfigurationsCommand,
73
- ListBucketIntelligentTieringConfigurationsCommand: client_s3_1.ListBucketIntelligentTieringConfigurationsCommand,
74
- ListBucketInventoryConfigurationsCommand: client_s3_1.ListBucketInventoryConfigurationsCommand,
75
- ListBucketMetricsConfigurationsCommand: client_s3_1.ListBucketMetricsConfigurationsCommand,
76
- ListBucketsCommand: client_s3_1.ListBucketsCommand,
77
- ListDirectoryBucketsCommand: client_s3_1.ListDirectoryBucketsCommand,
78
- ListMultipartUploadsCommand: client_s3_1.ListMultipartUploadsCommand,
79
- ListObjectVersionsCommand: client_s3_1.ListObjectVersionsCommand,
80
- ListObjectsCommand: client_s3_1.ListObjectsCommand,
81
- ListObjectsV2Command: client_s3_1.ListObjectsV2Command,
82
- ListPartsCommand: client_s3_1.ListPartsCommand,
83
- PutBucketAccelerateConfigurationCommand: client_s3_1.PutBucketAccelerateConfigurationCommand,
84
- PutBucketAclCommand: client_s3_1.PutBucketAclCommand,
85
- PutBucketAnalyticsConfigurationCommand: client_s3_1.PutBucketAnalyticsConfigurationCommand,
86
- PutBucketCorsCommand: client_s3_1.PutBucketCorsCommand,
87
- PutBucketEncryptionCommand: client_s3_1.PutBucketEncryptionCommand,
88
- PutBucketIntelligentTieringConfigurationCommand: client_s3_1.PutBucketIntelligentTieringConfigurationCommand,
89
- PutBucketInventoryConfigurationCommand: client_s3_1.PutBucketInventoryConfigurationCommand,
90
- PutBucketLifecycleConfigurationCommand: client_s3_1.PutBucketLifecycleConfigurationCommand,
91
- PutBucketLoggingCommand: client_s3_1.PutBucketLoggingCommand,
92
- PutBucketMetricsConfigurationCommand: client_s3_1.PutBucketMetricsConfigurationCommand,
93
- PutBucketNotificationConfigurationCommand: client_s3_1.PutBucketNotificationConfigurationCommand,
94
- PutBucketOwnershipControlsCommand: client_s3_1.PutBucketOwnershipControlsCommand,
95
- PutBucketPolicyCommand: client_s3_1.PutBucketPolicyCommand,
96
- PutBucketReplicationCommand: client_s3_1.PutBucketReplicationCommand,
97
- PutBucketRequestPaymentCommand: client_s3_1.PutBucketRequestPaymentCommand,
98
- PutBucketTaggingCommand: client_s3_1.PutBucketTaggingCommand,
99
- PutBucketVersioningCommand: client_s3_1.PutBucketVersioningCommand,
100
- PutBucketWebsiteCommand: client_s3_1.PutBucketWebsiteCommand,
101
- PutObjectCommand: client_s3_1.PutObjectCommand,
102
- PutObjectAclCommand: client_s3_1.PutObjectAclCommand,
103
- PutObjectLegalHoldCommand: client_s3_1.PutObjectLegalHoldCommand,
104
- PutObjectLockConfigurationCommand: client_s3_1.PutObjectLockConfigurationCommand,
105
- PutObjectRetentionCommand: client_s3_1.PutObjectRetentionCommand,
106
- PutObjectTaggingCommand: client_s3_1.PutObjectTaggingCommand,
107
- PutPublicAccessBlockCommand: client_s3_1.PutPublicAccessBlockCommand,
108
- RestoreObjectCommand: client_s3_1.RestoreObjectCommand,
109
- SelectObjectContentCommand: client_s3_1.SelectObjectContentCommand,
110
- UploadPartCommand: client_s3_1.UploadPartCommand,
111
- UploadPartCopyCommand: client_s3_1.UploadPartCopyCommand,
112
- WriteGetObjectResponseCommand: client_s3_1.WriteGetObjectResponseCommand,
113
- };
114
- /**
115
- * @since 1.0.0
116
- * @category constructors
117
- */
118
- exports.makeS3Service = effect_1.Effect.gen(function* (_) {
119
- const client = yield* _(S3ClientInstance_1.S3ClientInstance);
120
- const catchErrors = (e) => {
121
- if (e instanceof client_s3_1.S3ServiceException) {
122
- const ServiceException = effect_1.Data.tagged(e.name);
123
- return ServiceException({
124
- ...e,
125
- message: e.message,
126
- stack: e.stack,
127
- });
128
- }
129
- if (e instanceof Error) {
130
- return (0, Errors_1.SdkError)({
131
- ...e,
132
- name: "SdkError",
133
- message: e.message,
134
- stack: e.stack,
135
- });
136
- }
137
- throw e;
138
- };
139
- return effect_1.Record.toEntries(commands).reduce((acc, [command]) => {
140
- const CommandCtor = commands[command];
141
- const methodImpl = (args, options) => (options === null || options === void 0 ? void 0 : options.presigned)
142
- ? effect_1.Effect.tryPromise({
143
- try: () => (0, s3_request_presigner_1.getSignedUrl)(client, new CommandCtor(args), options),
144
- catch: catchErrors,
145
- })
146
- : effect_1.Effect.tryPromise({
147
- try: (abortSignal) => client.send(new CommandCtor(args), {
148
- ...(options !== null && options !== void 0 ? options : {}),
149
- abortSignal,
150
- }),
151
- catch: catchErrors,
152
- });
153
- const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, "");
154
- return { ...acc, [methodName]: methodImpl };
155
- }, {});
156
- });
157
- /**
158
- * @since 1.0.0
159
- * @category models
160
- */
161
- class S3Service extends effect_1.Effect.Tag("@effect-aws/client-s3/S3Service")() {
162
- }
163
- exports.S3Service = S3Service;
164
- _a = S3Service;
165
- S3Service.defaultLayer = effect_1.Layer.effect(_a, exports.makeS3Service).pipe(effect_1.Layer.provide(S3ClientInstance_1.S3ClientInstanceLayer), effect_1.Layer.provide(S3ClientInstanceConfig_1.DefaultS3ClientConfigLayer));
166
- S3Service.layer = (config) => effect_1.Layer.effect(_a, exports.makeS3Service).pipe(effect_1.Layer.provide(S3ClientInstance_1.S3ClientInstanceLayer), effect_1.Layer.provide(effect_1.Layer.effect(S3ClientInstanceConfig_1.S3ClientInstanceConfig, S3ClientInstanceConfig_1.makeDefaultS3ClientInstanceConfig.pipe(effect_1.Effect.map((defaultConfig) => ({ ...defaultConfig, ...config }))))));
167
- S3Service.baseLayer = (evaluate) => effect_1.Layer.effect(_a, exports.makeS3Service).pipe(effect_1.Layer.provide(effect_1.Layer.effect(S3ClientInstance_1.S3ClientInstance, effect_1.Effect.map(S3ClientInstanceConfig_1.makeDefaultS3ClientInstanceConfig, evaluate))));
168
- /**
169
- * @since 1.0.0
170
- * @category models
171
- * @alias S3Service
172
- */
173
- exports.S3 = S3Service;
174
- /**
175
- * @since 1.0.0
176
- * @category layers
177
- * @deprecated use S3.baseLayer instead
178
- */
179
- exports.BaseS3ServiceLayer = effect_1.Layer.effect(S3Service, exports.makeS3Service);
180
- /**
181
- * @since 1.0.0
182
- * @category layers
183
- * @deprecated use S3.layer instead
184
- */
185
- exports.S3ServiceLayer = exports.BaseS3ServiceLayer.pipe(effect_1.Layer.provide(S3ClientInstance_1.S3ClientInstanceLayer));
186
- /**
187
- * @since 1.0.0
188
- * @category layers
189
- * @deprecated use S3.defaultLayer instead
190
- */
191
- exports.DefaultS3ServiceLayer = S3Service.defaultLayer;
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUzNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1MzU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUE7O0dBRUc7QUFDSCxrREEwUzRCO0FBQzVCLHdFQUE2RDtBQUU3RCxtQ0FBcUQ7QUFDckQscUNBaUJrQjtBQUNsQix5REFBNkU7QUFDN0UscUVBSWtDO0FBYWxDLE1BQU0sUUFBUSxHQUFHO0lBQ2YsMkJBQTJCLEVBQTNCLHVDQUEyQjtJQUMzQiw4QkFBOEIsRUFBOUIsMENBQThCO0lBQzlCLGlCQUFpQixFQUFqQiw2QkFBaUI7SUFDakIsbUJBQW1CLEVBQW5CLCtCQUFtQjtJQUNuQiw2Q0FBNkMsRUFBN0MseURBQTZDO0lBQzdDLDRCQUE0QixFQUE1Qix3Q0FBNEI7SUFDNUIsb0JBQW9CLEVBQXBCLGdDQUFvQjtJQUNwQixtQkFBbUIsRUFBbkIsK0JBQW1CO0lBQ25CLHlDQUF5QyxFQUF6QyxxREFBeUM7SUFDekMsdUJBQXVCLEVBQXZCLG1DQUF1QjtJQUN2Qiw2QkFBNkIsRUFBN0IseUNBQTZCO0lBQzdCLGtEQUFrRCxFQUFsRCw4REFBa0Q7SUFDbEQseUNBQXlDLEVBQXpDLHFEQUF5QztJQUN6Qyw0QkFBNEIsRUFBNUIsd0NBQTRCO0lBQzVCLDZDQUE2QyxFQUE3Qyx5REFBNkM7SUFDN0MsdUNBQXVDLEVBQXZDLG1EQUF1QztJQUN2QyxvQ0FBb0MsRUFBcEMsZ0RBQW9DO0lBQ3BDLHlCQUF5QixFQUF6QixxQ0FBeUI7SUFDekIsOEJBQThCLEVBQTlCLDBDQUE4QjtJQUM5QiwwQkFBMEIsRUFBMUIsc0NBQTBCO0lBQzFCLDBCQUEwQixFQUExQixzQ0FBMEI7SUFDMUIsbUJBQW1CLEVBQW5CLCtCQUFtQjtJQUNuQiwwQkFBMEIsRUFBMUIsc0NBQTBCO0lBQzFCLG9CQUFvQixFQUFwQixnQ0FBb0I7SUFDcEIsOEJBQThCLEVBQTlCLDBDQUE4QjtJQUM5Qix1Q0FBdUMsRUFBdkMsbURBQXVDO0lBQ3ZDLG1CQUFtQixFQUFuQiwrQkFBbUI7SUFDbkIsc0NBQXNDLEVBQXRDLGtEQUFzQztJQUN0QyxvQkFBb0IsRUFBcEIsZ0NBQW9CO0lBQ3BCLDBCQUEwQixFQUExQixzQ0FBMEI7SUFDMUIsK0NBQStDLEVBQS9DLDJEQUErQztJQUMvQyxzQ0FBc0MsRUFBdEMsa0RBQXNDO0lBQ3RDLHNDQUFzQyxFQUF0QyxrREFBc0M7SUFDdEMsd0JBQXdCLEVBQXhCLG9DQUF3QjtJQUN4Qix1QkFBdUIsRUFBdkIsbUNBQXVCO0lBQ3ZCLDBDQUEwQyxFQUExQyxzREFBMEM7SUFDMUMsb0NBQW9DLEVBQXBDLGdEQUFvQztJQUNwQyx5Q0FBeUMsRUFBekMscURBQXlDO0lBQ3pDLGlDQUFpQyxFQUFqQyw2Q0FBaUM7SUFDakMsc0JBQXNCLEVBQXRCLGtDQUFzQjtJQUN0Qiw0QkFBNEIsRUFBNUIsd0NBQTRCO0lBQzVCLDJCQUEyQixFQUEzQix1Q0FBMkI7SUFDM0IsOEJBQThCLEVBQTlCLDBDQUE4QjtJQUM5Qix1QkFBdUIsRUFBdkIsbUNBQXVCO0lBQ3ZCLDBCQUEwQixFQUExQixzQ0FBMEI7SUFDMUIsdUJBQXVCLEVBQXZCLG1DQUF1QjtJQUN2QixnQkFBZ0IsRUFBaEIsNEJBQWdCO0lBQ2hCLG1CQUFtQixFQUFuQiwrQkFBbUI7SUFDbkIsMEJBQTBCLEVBQTFCLHNDQUEwQjtJQUMxQix5QkFBeUIsRUFBekIscUNBQXlCO0lBQ3pCLGlDQUFpQyxFQUFqQyw2Q0FBaUM7SUFDakMseUJBQXlCLEVBQXpCLHFDQUF5QjtJQUN6Qix1QkFBdUIsRUFBdkIsbUNBQXVCO0lBQ3ZCLHVCQUF1QixFQUF2QixtQ0FBdUI7SUFDdkIsMkJBQTJCLEVBQTNCLHVDQUEyQjtJQUMzQixpQkFBaUIsRUFBakIsNkJBQWlCO0lBQ2pCLGlCQUFpQixFQUFqQiw2QkFBaUI7SUFDakIsd0NBQXdDLEVBQXhDLG9EQUF3QztJQUN4QyxpREFBaUQsRUFBakQsNkRBQWlEO0lBQ2pELHdDQUF3QyxFQUF4QyxvREFBd0M7SUFDeEMsc0NBQXNDLEVBQXRDLGtEQUFzQztJQUN0QyxrQkFBa0IsRUFBbEIsOEJBQWtCO0lBQ2xCLDJCQUEyQixFQUEzQix1Q0FBMkI7SUFDM0IsMkJBQTJCLEVBQTNCLHVDQUEyQjtJQUMzQix5QkFBeUIsRUFBekIscUNBQXlCO0lBQ3pCLGtCQUFrQixFQUFsQiw4QkFBa0I7SUFDbEIsb0JBQW9CLEVBQXBCLGdDQUFvQjtJQUNwQixnQkFBZ0IsRUFBaEIsNEJBQWdCO0lBQ2hCLHVDQUF1QyxFQUF2QyxtREFBdUM7SUFDdkMsbUJBQW1CLEVBQW5CLCtCQUFtQjtJQUNuQixzQ0FBc0MsRUFBdEMsa0RBQXNDO0lBQ3RDLG9CQUFvQixFQUFwQixnQ0FBb0I7SUFDcEIsMEJBQTBCLEVBQTFCLHNDQUEwQjtJQUMxQiwrQ0FBK0MsRUFBL0MsMkRBQStDO0lBQy9DLHNDQUFzQyxFQUF0QyxrREFBc0M7SUFDdEMsc0NBQXNDLEVBQXRDLGtEQUFzQztJQUN0Qyx1QkFBdUIsRUFBdkIsbUNBQXVCO0lBQ3ZCLG9DQUFvQyxFQUFwQyxnREFBb0M7SUFDcEMseUNBQXlDLEVBQXpDLHFEQUF5QztJQUN6QyxpQ0FBaUMsRUFBakMsNkNBQWlDO0lBQ2pDLHNCQUFzQixFQUF0QixrQ0FBc0I7SUFDdEIsMkJBQTJCLEVBQTNCLHVDQUEyQjtJQUMzQiw4QkFBOEIsRUFBOUIsMENBQThCO0lBQzlCLHVCQUF1QixFQUF2QixtQ0FBdUI7SUFDdkIsMEJBQTBCLEVBQTFCLHNDQUEwQjtJQUMxQix1QkFBdUIsRUFBdkIsbUNBQXVCO0lBQ3ZCLGdCQUFnQixFQUFoQiw0QkFBZ0I7SUFDaEIsbUJBQW1CLEVBQW5CLCtCQUFtQjtJQUNuQix5QkFBeUIsRUFBekIscUNBQXlCO0lBQ3pCLGlDQUFpQyxFQUFqQyw2Q0FBaUM7SUFDakMseUJBQXlCLEVBQXpCLHFDQUF5QjtJQUN6Qix1QkFBdUIsRUFBdkIsbUNBQXVCO0lBQ3ZCLDJCQUEyQixFQUEzQix1Q0FBMkI7SUFDM0Isb0JBQW9CLEVBQXBCLGdDQUFvQjtJQUNwQiwwQkFBMEIsRUFBMUIsc0NBQTBCO0lBQzFCLGlCQUFpQixFQUFqQiw2QkFBaUI7SUFDakIscUJBQXFCLEVBQXJCLGlDQUFxQjtJQUNyQiw2QkFBNkIsRUFBN0IseUNBQTZCO0NBQzlCLENBQUM7QUE4N0JGOzs7R0FHRztBQUNVLFFBQUEsYUFBYSxHQUFHLGVBQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUNsRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsbUNBQWdCLENBQUMsQ0FBQztJQUUxQyxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFO1FBQ2pDLElBQUksQ0FBQyxZQUFZLDhCQUFrQixFQUFFLENBQUM7WUFDcEMsTUFBTSxnQkFBZ0IsR0FBRyxhQUFJLENBQUMsTUFBTSxDQUNsQyxDQUFDLENBQUMsSUFBSSxDQUNQLENBQUM7WUFFRixPQUFPLGdCQUFnQixDQUFDO2dCQUN0QixHQUFHLENBQUM7Z0JBQ0osT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPO2dCQUNsQixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7YUFDZixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksS0FBSyxFQUFFLENBQUM7WUFDdkIsT0FBTyxJQUFBLGlCQUFRLEVBQUM7Z0JBQ2QsR0FBRyxDQUFDO2dCQUNKLElBQUksRUFBRSxVQUFVO2dCQUNoQixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU87Z0JBQ2xCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSzthQUNmLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxNQUFNLENBQUMsQ0FBQztJQUNWLENBQUMsQ0FBQztJQUVGLE9BQU8sZUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFO1FBQzFELE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQVEsQ0FBQztRQUM3QyxNQUFNLFVBQVUsR0FBRyxDQUNqQixJQUFTLEVBQ1QsT0FFK0QsRUFDL0QsRUFBRSxDQUNGLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFNBQVM7WUFDaEIsQ0FBQyxDQUFDLGVBQU0sQ0FBQyxVQUFVLENBQUM7Z0JBQ2hCLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FDUixJQUFBLG1DQUFZLEVBQUMsTUFBYSxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQztnQkFDN0QsS0FBSyxFQUFFLFdBQVc7YUFDbkIsQ0FBQztZQUNKLENBQUMsQ0FBQyxlQUFNLENBQUMsVUFBVSxDQUFDO2dCQUNoQixHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNqQyxHQUFHLENBQUMsT0FBTyxhQUFQLE9BQU8sY0FBUCxPQUFPLEdBQUksRUFBRSxDQUFDO29CQUNsQixXQUFXO2lCQUNaLENBQUM7Z0JBQ0osS0FBSyxFQUFFLFdBQVc7YUFDbkIsQ0FBQyxDQUFDO1FBQ1QsTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDdEUsVUFBVSxFQUNWLEVBQUUsQ0FDSCxDQUFDO1FBQ0YsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDOUMsQ0FBQyxFQUFFLEVBQUUsQ0FBZSxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0FBRUg7OztHQUdHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsZUFBTSxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQyxFQUd6RTs7QUFISCw4QkFrQ0M7O0FBM0JpQixzQkFBWSxHQUFHLGNBQUssQ0FBQyxNQUFNLENBQUMsRUFBSSxFQUFFLHFCQUFhLENBQUMsQ0FBQyxJQUFJLENBQ25FLGNBQUssQ0FBQyxPQUFPLENBQUMsd0NBQXFCLENBQUMsRUFDcEMsY0FBSyxDQUFDLE9BQU8sQ0FBQyxtREFBMEIsQ0FBQyxDQUMxQyxBQUgyQixDQUcxQjtBQUNjLGVBQUssR0FBRyxDQUFDLE1BQXNCLEVBQUUsRUFBRSxDQUNqRCxjQUFLLENBQUMsTUFBTSxDQUFDLEVBQUksRUFBRSxxQkFBYSxDQUFDLENBQUMsSUFBSSxDQUNwQyxjQUFLLENBQUMsT0FBTyxDQUFDLHdDQUFxQixDQUFDLEVBQ3BDLGNBQUssQ0FBQyxPQUFPLENBQ1gsY0FBSyxDQUFDLE1BQU0sQ0FDViwrQ0FBc0IsRUFDdEIsMERBQWlDLENBQUMsSUFBSSxDQUNwQyxlQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxhQUFhLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQ2pFLENBQ0YsQ0FDRixDQUNGLEFBWGtCLENBV2pCO0FBQ1ksbUJBQVMsR0FBRyxDQUMxQixRQUFxRCxFQUNyRCxFQUFFLENBQ0YsY0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFJLEVBQUUscUJBQWEsQ0FBQyxDQUFDLElBQUksQ0FDcEMsY0FBSyxDQUFDLE9BQU8sQ0FDWCxjQUFLLENBQUMsTUFBTSxDQUNWLG1DQUFnQixFQUNoQixlQUFNLENBQUMsR0FBRyxDQUFDLDBEQUFpQyxFQUFFLFFBQVEsQ0FBQyxDQUN4RCxDQUNGLENBQ0YsQUFWc0IsQ0FVckI7QUFHTjs7OztHQUlHO0FBQ1UsUUFBQSxFQUFFLEdBQUcsU0FBUyxDQUFDO0FBRTVCOzs7O0dBSUc7QUFDVSxRQUFBLGtCQUFrQixHQUFHLGNBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLHFCQUFhLENBQUMsQ0FBQztBQUV6RTs7OztHQUlHO0FBQ1UsUUFBQSxjQUFjLEdBQUcsMEJBQWtCLENBQUMsSUFBSSxDQUNuRCxjQUFLLENBQUMsT0FBTyxDQUFDLHdDQUFxQixDQUFDLENBQ3JDLENBQUM7QUFFRjs7OztHQUlHO0FBQ1UsUUFBQSxxQkFBcUIsR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqL1xuaW1wb3J0IHtcbiAgQWJvcnRNdWx0aXBhcnRVcGxvYWRDb21tYW5kLFxuICB0eXBlIEFib3J0TXVsdGlwYXJ0VXBsb2FkQ29tbWFuZElucHV0LFxuICB0eXBlIEFib3J0TXVsdGlwYXJ0VXBsb2FkQ29tbWFuZE91dHB1dCxcbiAgQ29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kLFxuICB0eXBlIENvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZElucHV0LFxuICB0eXBlIENvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZE91dHB1dCxcbiAgQ29weU9iamVjdENvbW1hbmQsXG4gIHR5cGUgQ29weU9iamVjdENvbW1hbmRJbnB1dCxcbiAgdHlwZSBDb3B5T2JqZWN0Q29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlQnVja2V0Q29tbWFuZCxcbiAgdHlwZSBDcmVhdGVCdWNrZXRDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlQnVja2V0Q29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlQnVja2V0TWV0YWRhdGFUYWJsZUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICB0eXBlIENyZWF0ZUJ1Y2tldE1ldGFkYXRhVGFibGVDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZUJ1Y2tldE1ldGFkYXRhVGFibGVDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZE91dHB1dCxcbiAgQ3JlYXRlU2Vzc2lvbkNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlU2Vzc2lvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVTZXNzaW9uQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQnVja2V0Q29tbWFuZCxcbiAgdHlwZSBEZWxldGVCdWNrZXRDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlQnVja2V0Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQnVja2V0Q29yc0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQnVja2V0Q29yc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVCdWNrZXRDb3JzQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQnVja2V0RW5jcnlwdGlvbkNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQnVja2V0RW5jcnlwdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQnVja2V0TGlmZWN5Y2xlQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVCdWNrZXRMaWZlY3ljbGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlQnVja2V0TGlmZWN5Y2xlQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQnVja2V0TWV0YWRhdGFUYWJsZUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICB0eXBlIERlbGV0ZUJ1Y2tldE1ldGFkYXRhVGFibGVDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUJ1Y2tldE1ldGFkYXRhVGFibGVDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICB0eXBlIERlbGV0ZUJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQnVja2V0T3duZXJzaGlwQ29udHJvbHNDb21tYW5kLFxuICB0eXBlIERlbGV0ZUJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQnVja2V0UG9saWN5Q29tbWFuZCxcbiAgdHlwZSBEZWxldGVCdWNrZXRQb2xpY3lDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlQnVja2V0UG9saWN5Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQnVja2V0UmVwbGljYXRpb25Db21tYW5kLFxuICB0eXBlIERlbGV0ZUJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQnVja2V0VGFnZ2luZ0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQnVja2V0VGFnZ2luZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVCdWNrZXRUYWdnaW5nQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlQnVja2V0V2Vic2l0ZUNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlQnVja2V0V2Vic2l0ZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVCdWNrZXRXZWJzaXRlQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlT2JqZWN0Q29tbWFuZCxcbiAgdHlwZSBEZWxldGVPYmplY3RDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlT2JqZWN0Q29tbWFuZE91dHB1dCxcbiAgRGVsZXRlT2JqZWN0VGFnZ2luZ0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlT2JqZWN0VGFnZ2luZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVPYmplY3RUYWdnaW5nQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlT2JqZWN0c0NvbW1hbmQsXG4gIHR5cGUgRGVsZXRlT2JqZWN0c0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVPYmplY3RzQ29tbWFuZE91dHB1dCxcbiAgRGVsZXRlUHVibGljQWNjZXNzQmxvY2tDb21tYW5kLFxuICB0eXBlIERlbGV0ZVB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZVB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0QWNjZWxlcmF0ZUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICB0eXBlIEdldEJ1Y2tldEFjY2VsZXJhdGVDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEJ1Y2tldEFjY2VsZXJhdGVDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0QWNsQ29tbWFuZCxcbiAgdHlwZSBHZXRCdWNrZXRBY2xDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0QnVja2V0QWNsQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIHR5cGUgR2V0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0Q29yc0NvbW1hbmQsXG4gIHR5cGUgR2V0QnVja2V0Q29yc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRCdWNrZXRDb3JzQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmQsXG4gIHR5cGUgR2V0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIHR5cGUgR2V0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIHR5cGUgR2V0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0TGlmZWN5Y2xlQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIHR5cGUgR2V0QnVja2V0TGlmZWN5Y2xlQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRCdWNrZXRMaWZlY3ljbGVDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0TG9jYXRpb25Db21tYW5kLFxuICB0eXBlIEdldEJ1Y2tldExvY2F0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEJ1Y2tldExvY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0TG9nZ2luZ0NvbW1hbmQsXG4gIHR5cGUgR2V0QnVja2V0TG9nZ2luZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRCdWNrZXRMb2dnaW5nQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0TWV0YWRhdGFUYWJsZUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICB0eXBlIEdldEJ1Y2tldE1ldGFkYXRhVGFibGVDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEJ1Y2tldE1ldGFkYXRhVGFibGVDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICB0eXBlIEdldEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0Tm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIHR5cGUgR2V0QnVja2V0Tm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRCdWNrZXROb3RpZmljYXRpb25Db25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0T3duZXJzaGlwQ29udHJvbHNDb21tYW5kLFxuICB0eXBlIEdldEJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0UG9saWN5Q29tbWFuZCxcbiAgdHlwZSBHZXRCdWNrZXRQb2xpY3lDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0QnVja2V0UG9saWN5Q29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0UG9saWN5U3RhdHVzQ29tbWFuZCxcbiAgdHlwZSBHZXRCdWNrZXRQb2xpY3lTdGF0dXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0QnVja2V0UG9saWN5U3RhdHVzQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0UmVwbGljYXRpb25Db21tYW5kLFxuICB0eXBlIEdldEJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIEdldEJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0UmVxdWVzdFBheW1lbnRDb21tYW5kLFxuICB0eXBlIEdldEJ1Y2tldFJlcXVlc3RQYXltZW50Q29tbWFuZElucHV0LFxuICB0eXBlIEdldEJ1Y2tldFJlcXVlc3RQYXltZW50Q29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0VGFnZ2luZ0NvbW1hbmQsXG4gIHR5cGUgR2V0QnVja2V0VGFnZ2luZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRCdWNrZXRUYWdnaW5nQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0VmVyc2lvbmluZ0NvbW1hbmQsXG4gIHR5cGUgR2V0QnVja2V0VmVyc2lvbmluZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRCdWNrZXRWZXJzaW9uaW5nQ29tbWFuZE91dHB1dCxcbiAgR2V0QnVja2V0V2Vic2l0ZUNvbW1hbmQsXG4gIHR5cGUgR2V0QnVja2V0V2Vic2l0ZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRCdWNrZXRXZWJzaXRlQ29tbWFuZE91dHB1dCxcbiAgR2V0T2JqZWN0QWNsQ29tbWFuZCxcbiAgdHlwZSBHZXRPYmplY3RBY2xDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0T2JqZWN0QWNsQ29tbWFuZE91dHB1dCxcbiAgR2V0T2JqZWN0QXR0cmlidXRlc0NvbW1hbmQsXG4gIHR5cGUgR2V0T2JqZWN0QXR0cmlidXRlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRPYmplY3RBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgR2V0T2JqZWN0Q29tbWFuZCxcbiAgdHlwZSBHZXRPYmplY3RDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0T2JqZWN0Q29tbWFuZE91dHB1dCxcbiAgR2V0T2JqZWN0TGVnYWxIb2xkQ29tbWFuZCxcbiAgdHlwZSBHZXRPYmplY3RMZWdhbEhvbGRDb21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0T2JqZWN0TGVnYWxIb2xkQ29tbWFuZE91dHB1dCxcbiAgR2V0T2JqZWN0TG9ja0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICB0eXBlIEdldE9iamVjdExvY2tDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIEdldE9iamVjdExvY2tDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0T2JqZWN0UmV0ZW50aW9uQ29tbWFuZCxcbiAgdHlwZSBHZXRPYmplY3RSZXRlbnRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgR2V0T2JqZWN0UmV0ZW50aW9uQ29tbWFuZE91dHB1dCxcbiAgR2V0T2JqZWN0VGFnZ2luZ0NvbW1hbmQsXG4gIHR5cGUgR2V0T2JqZWN0VGFnZ2luZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRPYmplY3RUYWdnaW5nQ29tbWFuZE91dHB1dCxcbiAgR2V0T2JqZWN0VG9ycmVudENvbW1hbmQsXG4gIHR5cGUgR2V0T2JqZWN0VG9ycmVudENvbW1hbmRJbnB1dCxcbiAgdHlwZSBHZXRPYmplY3RUb3JyZW50Q29tbWFuZE91dHB1dCxcbiAgR2V0UHVibGljQWNjZXNzQmxvY2tDb21tYW5kLFxuICB0eXBlIEdldFB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZElucHV0LFxuICB0eXBlIEdldFB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZE91dHB1dCxcbiAgSGVhZEJ1Y2tldENvbW1hbmQsXG4gIHR5cGUgSGVhZEJ1Y2tldENvbW1hbmRJbnB1dCxcbiAgdHlwZSBIZWFkQnVja2V0Q29tbWFuZE91dHB1dCxcbiAgSGVhZE9iamVjdENvbW1hbmQsXG4gIHR5cGUgSGVhZE9iamVjdENvbW1hbmRJbnB1dCxcbiAgdHlwZSBIZWFkT2JqZWN0Q29tbWFuZE91dHB1dCxcbiAgTGlzdEJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25zQ29tbWFuZCxcbiAgdHlwZSBMaXN0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25zQ29tbWFuZE91dHB1dCxcbiAgTGlzdEJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25zQ29tbWFuZCxcbiAgdHlwZSBMaXN0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25zQ29tbWFuZE91dHB1dCxcbiAgTGlzdEJ1Y2tldEludmVudG9yeUNvbmZpZ3VyYXRpb25zQ29tbWFuZCxcbiAgdHlwZSBMaXN0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdEJ1Y2tldEludmVudG9yeUNvbmZpZ3VyYXRpb25zQ29tbWFuZE91dHB1dCxcbiAgTGlzdEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uc0NvbW1hbmQsXG4gIHR5cGUgTGlzdEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25zQ29tbWFuZE91dHB1dCxcbiAgTGlzdEJ1Y2tldHNDb21tYW5kLFxuICB0eXBlIExpc3RCdWNrZXRzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RCdWNrZXRzQ29tbWFuZE91dHB1dCxcbiAgTGlzdERpcmVjdG9yeUJ1Y2tldHNDb21tYW5kLFxuICB0eXBlIExpc3REaXJlY3RvcnlCdWNrZXRzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3REaXJlY3RvcnlCdWNrZXRzQ29tbWFuZE91dHB1dCxcbiAgTGlzdE11bHRpcGFydFVwbG9hZHNDb21tYW5kLFxuICB0eXBlIExpc3RNdWx0aXBhcnRVcGxvYWRzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RNdWx0aXBhcnRVcGxvYWRzQ29tbWFuZE91dHB1dCxcbiAgTGlzdE9iamVjdFZlcnNpb25zQ29tbWFuZCxcbiAgdHlwZSBMaXN0T2JqZWN0VmVyc2lvbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdE9iamVjdFZlcnNpb25zQ29tbWFuZE91dHB1dCxcbiAgTGlzdE9iamVjdHNDb21tYW5kLFxuICB0eXBlIExpc3RPYmplY3RzQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RPYmplY3RzQ29tbWFuZE91dHB1dCxcbiAgTGlzdE9iamVjdHNWMkNvbW1hbmQsXG4gIHR5cGUgTGlzdE9iamVjdHNWMkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBMaXN0T2JqZWN0c1YyQ29tbWFuZE91dHB1dCxcbiAgTGlzdFBhcnRzQ29tbWFuZCxcbiAgdHlwZSBMaXN0UGFydHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgTGlzdFBhcnRzQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0QWNjZWxlcmF0ZUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICB0eXBlIFB1dEJ1Y2tldEFjY2VsZXJhdGVDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFB1dEJ1Y2tldEFjY2VsZXJhdGVDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0QWNsQ29tbWFuZCxcbiAgdHlwZSBQdXRCdWNrZXRBY2xDb21tYW5kSW5wdXQsXG4gIHR5cGUgUHV0QnVja2V0QWNsQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIHR5cGUgUHV0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0Q29yc0NvbW1hbmQsXG4gIHR5cGUgUHV0QnVja2V0Q29yc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRCdWNrZXRDb3JzQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmQsXG4gIHR5cGUgUHV0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIHR5cGUgUHV0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIHR5cGUgUHV0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0TGlmZWN5Y2xlQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIHR5cGUgUHV0QnVja2V0TGlmZWN5Y2xlQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRCdWNrZXRMaWZlY3ljbGVDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0TG9nZ2luZ0NvbW1hbmQsXG4gIHR5cGUgUHV0QnVja2V0TG9nZ2luZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRCdWNrZXRMb2dnaW5nQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICB0eXBlIFB1dEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFB1dEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0Tm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIHR5cGUgUHV0QnVja2V0Tm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRCdWNrZXROb3RpZmljYXRpb25Db25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0T3duZXJzaGlwQ29udHJvbHNDb21tYW5kLFxuICB0eXBlIFB1dEJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZElucHV0LFxuICB0eXBlIFB1dEJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0UG9saWN5Q29tbWFuZCxcbiAgdHlwZSBQdXRCdWNrZXRQb2xpY3lDb21tYW5kSW5wdXQsXG4gIHR5cGUgUHV0QnVja2V0UG9saWN5Q29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0UmVwbGljYXRpb25Db21tYW5kLFxuICB0eXBlIFB1dEJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFB1dEJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0UmVxdWVzdFBheW1lbnRDb21tYW5kLFxuICB0eXBlIFB1dEJ1Y2tldFJlcXVlc3RQYXltZW50Q29tbWFuZElucHV0LFxuICB0eXBlIFB1dEJ1Y2tldFJlcXVlc3RQYXltZW50Q29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0VGFnZ2luZ0NvbW1hbmQsXG4gIHR5cGUgUHV0QnVja2V0VGFnZ2luZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRCdWNrZXRUYWdnaW5nQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0VmVyc2lvbmluZ0NvbW1hbmQsXG4gIHR5cGUgUHV0QnVja2V0VmVyc2lvbmluZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRCdWNrZXRWZXJzaW9uaW5nQ29tbWFuZE91dHB1dCxcbiAgUHV0QnVja2V0V2Vic2l0ZUNvbW1hbmQsXG4gIHR5cGUgUHV0QnVja2V0V2Vic2l0ZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRCdWNrZXRXZWJzaXRlQ29tbWFuZE91dHB1dCxcbiAgUHV0T2JqZWN0QWNsQ29tbWFuZCxcbiAgdHlwZSBQdXRPYmplY3RBY2xDb21tYW5kSW5wdXQsXG4gIHR5cGUgUHV0T2JqZWN0QWNsQ29tbWFuZE91dHB1dCxcbiAgUHV0T2JqZWN0Q29tbWFuZCxcbiAgdHlwZSBQdXRPYmplY3RDb21tYW5kSW5wdXQsXG4gIHR5cGUgUHV0T2JqZWN0Q29tbWFuZE91dHB1dCxcbiAgUHV0T2JqZWN0TGVnYWxIb2xkQ29tbWFuZCxcbiAgdHlwZSBQdXRPYmplY3RMZWdhbEhvbGRDb21tYW5kSW5wdXQsXG4gIHR5cGUgUHV0T2JqZWN0TGVnYWxIb2xkQ29tbWFuZE91dHB1dCxcbiAgUHV0T2JqZWN0TG9ja0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICB0eXBlIFB1dE9iamVjdExvY2tDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIFB1dE9iamVjdExvY2tDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgUHV0T2JqZWN0UmV0ZW50aW9uQ29tbWFuZCxcbiAgdHlwZSBQdXRPYmplY3RSZXRlbnRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgUHV0T2JqZWN0UmV0ZW50aW9uQ29tbWFuZE91dHB1dCxcbiAgUHV0T2JqZWN0VGFnZ2luZ0NvbW1hbmQsXG4gIHR5cGUgUHV0T2JqZWN0VGFnZ2luZ0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBQdXRPYmplY3RUYWdnaW5nQ29tbWFuZE91dHB1dCxcbiAgUHV0UHVibGljQWNjZXNzQmxvY2tDb21tYW5kLFxuICB0eXBlIFB1dFB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZElucHV0LFxuICB0eXBlIFB1dFB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZE91dHB1dCxcbiAgUmVzdG9yZU9iamVjdENvbW1hbmQsXG4gIHR5cGUgUmVzdG9yZU9iamVjdENvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZXN0b3JlT2JqZWN0Q29tbWFuZE91dHB1dCxcbiAgdHlwZSBTM0NsaWVudCxcbiAgdHlwZSBTM0NsaWVudENvbmZpZyxcbiAgUzNTZXJ2aWNlRXhjZXB0aW9uLFxuICBTZWxlY3RPYmplY3RDb250ZW50Q29tbWFuZCxcbiAgdHlwZSBTZWxlY3RPYmplY3RDb250ZW50Q29tbWFuZElucHV0LFxuICB0eXBlIFNlbGVjdE9iamVjdENvbnRlbnRDb21tYW5kT3V0cHV0LFxuICBVcGxvYWRQYXJ0Q29tbWFuZCxcbiAgdHlwZSBVcGxvYWRQYXJ0Q29tbWFuZElucHV0LFxuICB0eXBlIFVwbG9hZFBhcnRDb21tYW5kT3V0cHV0LFxuICBVcGxvYWRQYXJ0Q29weUNvbW1hbmQsXG4gIHR5cGUgVXBsb2FkUGFydENvcHlDb21tYW5kSW5wdXQsXG4gIHR5cGUgVXBsb2FkUGFydENvcHlDb21tYW5kT3V0cHV0LFxuICBXcml0ZUdldE9iamVjdFJlc3BvbnNlQ29tbWFuZCxcbiAgdHlwZSBXcml0ZUdldE9iamVjdFJlc3BvbnNlQ29tbWFuZElucHV0LFxuICB0eXBlIFdyaXRlR2V0T2JqZWN0UmVzcG9uc2VDb21tYW5kT3V0cHV0LFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LXMzXCI7XG5pbXBvcnQgeyBnZXRTaWduZWRVcmwgfSBmcm9tIFwiQGF3cy1zZGsvczMtcmVxdWVzdC1wcmVzaWduZXJcIjtcbmltcG9ydCB0eXBlIHsgUmVxdWVzdFByZXNpZ25pbmdBcmd1bWVudHMgfSBmcm9tIFwiQGF3cy1zZGsvdHlwZXNcIjtcbmltcG9ydCB7IERhdGEsIEVmZmVjdCwgTGF5ZXIsIFJlY29yZCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB7XG4gIEJ1Y2tldEFscmVhZHlFeGlzdHNFcnJvcixcbiAgQnVja2V0QWxyZWFkeU93bmVkQnlZb3VFcnJvcixcbiAgRW5jcnlwdGlvblR5cGVNaXNtYXRjaEVycm9yLFxuICBJbnZhbGlkT2JqZWN0U3RhdGVFcnJvcixcbiAgSW52YWxpZFJlcXVlc3RFcnJvcixcbiAgSW52YWxpZFdyaXRlT2Zmc2V0RXJyb3IsXG4gIE5vU3VjaEJ1Y2tldEVycm9yLFxuICBOb1N1Y2hLZXlFcnJvcixcbiAgTm9TdWNoVXBsb2FkRXJyb3IsXG4gIE5vdEZvdW5kRXJyb3IsXG4gIE9iamVjdEFscmVhZHlJbkFjdGl2ZVRpZXJFcnJvcixcbiAgT2JqZWN0Tm90SW5BY3RpdmVUaWVyRXJyb3IsXG4gIFMzU2VydmljZUVycm9yLFxuICBTZGtFcnJvcixcbiAgVGFnZ2VkRXhjZXB0aW9uLFxuICBUb29NYW55UGFydHNFcnJvcixcbn0gZnJvbSBcIi4vRXJyb3JzXCI7XG5pbXBvcnQgeyBTM0NsaWVudEluc3RhbmNlLCBTM0NsaWVudEluc3RhbmNlTGF5ZXIgfSBmcm9tIFwiLi9TM0NsaWVudEluc3RhbmNlXCI7XG5pbXBvcnQge1xuICBEZWZhdWx0UzNDbGllbnRDb25maWdMYXllcixcbiAgUzNDbGllbnRJbnN0YW5jZUNvbmZpZyxcbiAgbWFrZURlZmF1bHRTM0NsaWVudEluc3RhbmNlQ29uZmlnLFxufSBmcm9tIFwiLi9TM0NsaWVudEluc3RhbmNlQ29uZmlnXCI7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4xXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cEhhbmRsZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRoYXQgdGhlIGNvbm5lY3Rpb24gcGhhc2Ugb2YgYSByZXF1ZXN0XG4gICAqIG1heSB0YWtlIGJlZm9yZSB0aGUgY29ubmVjdGlvbiBhdHRlbXB0IGlzIGFiYW5kb25lZC5cbiAgICovXG4gIHJlcXVlc3RUaW1lb3V0PzogbnVtYmVyO1xufVxuXG5jb25zdCBjb21tYW5kcyA9IHtcbiAgQWJvcnRNdWx0aXBhcnRVcGxvYWRDb21tYW5kLFxuICBDb21wbGV0ZU11bHRpcGFydFVwbG9hZENvbW1hbmQsXG4gIENvcHlPYmplY3RDb21tYW5kLFxuICBDcmVhdGVCdWNrZXRDb21tYW5kLFxuICBDcmVhdGVCdWNrZXRNZXRhZGF0YVRhYmxlQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIENyZWF0ZU11bHRpcGFydFVwbG9hZENvbW1hbmQsXG4gIENyZWF0ZVNlc3Npb25Db21tYW5kLFxuICBEZWxldGVCdWNrZXRDb21tYW5kLFxuICBEZWxldGVCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgRGVsZXRlQnVja2V0Q29yc0NvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldEVuY3J5cHRpb25Db21tYW5kLFxuICBEZWxldGVCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgRGVsZXRlQnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldExpZmVjeWNsZUNvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldE1ldGFkYXRhVGFibGVDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgRGVsZXRlQnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBEZWxldGVCdWNrZXRPd25lcnNoaXBDb250cm9sc0NvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldFBvbGljeUNvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZCxcbiAgRGVsZXRlQnVja2V0VGFnZ2luZ0NvbW1hbmQsXG4gIERlbGV0ZUJ1Y2tldFdlYnNpdGVDb21tYW5kLFxuICBEZWxldGVPYmplY3RDb21tYW5kLFxuICBEZWxldGVPYmplY3RUYWdnaW5nQ29tbWFuZCxcbiAgRGVsZXRlT2JqZWN0c0NvbW1hbmQsXG4gIERlbGV0ZVB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZCxcbiAgR2V0QnVja2V0QWNjZWxlcmF0ZUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBHZXRCdWNrZXRBY2xDb21tYW5kLFxuICBHZXRCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgR2V0QnVja2V0Q29yc0NvbW1hbmQsXG4gIEdldEJ1Y2tldEVuY3J5cHRpb25Db21tYW5kLFxuICBHZXRCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgR2V0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIEdldEJ1Y2tldExpZmVjeWNsZUNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBHZXRCdWNrZXRMb2NhdGlvbkNvbW1hbmQsXG4gIEdldEJ1Y2tldExvZ2dpbmdDb21tYW5kLFxuICBHZXRCdWNrZXRNZXRhZGF0YVRhYmxlQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIEdldEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgR2V0QnVja2V0Tm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIEdldEJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZCxcbiAgR2V0QnVja2V0UG9saWN5Q29tbWFuZCxcbiAgR2V0QnVja2V0UG9saWN5U3RhdHVzQ29tbWFuZCxcbiAgR2V0QnVja2V0UmVwbGljYXRpb25Db21tYW5kLFxuICBHZXRCdWNrZXRSZXF1ZXN0UGF5bWVudENvbW1hbmQsXG4gIEdldEJ1Y2tldFRhZ2dpbmdDb21tYW5kLFxuICBHZXRCdWNrZXRWZXJzaW9uaW5nQ29tbWFuZCxcbiAgR2V0QnVja2V0V2Vic2l0ZUNvbW1hbmQsXG4gIEdldE9iamVjdENvbW1hbmQsXG4gIEdldE9iamVjdEFjbENvbW1hbmQsXG4gIEdldE9iamVjdEF0dHJpYnV0ZXNDb21tYW5kLFxuICBHZXRPYmplY3RMZWdhbEhvbGRDb21tYW5kLFxuICBHZXRPYmplY3RMb2NrQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIEdldE9iamVjdFJldGVudGlvbkNvbW1hbmQsXG4gIEdldE9iamVjdFRhZ2dpbmdDb21tYW5kLFxuICBHZXRPYmplY3RUb3JyZW50Q29tbWFuZCxcbiAgR2V0UHVibGljQWNjZXNzQmxvY2tDb21tYW5kLFxuICBIZWFkQnVja2V0Q29tbWFuZCxcbiAgSGVhZE9iamVjdENvbW1hbmQsXG4gIExpc3RCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uc0NvbW1hbmQsXG4gIExpc3RCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uc0NvbW1hbmQsXG4gIExpc3RCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uc0NvbW1hbmQsXG4gIExpc3RCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbnNDb21tYW5kLFxuICBMaXN0QnVja2V0c0NvbW1hbmQsXG4gIExpc3REaXJlY3RvcnlCdWNrZXRzQ29tbWFuZCxcbiAgTGlzdE11bHRpcGFydFVwbG9hZHNDb21tYW5kLFxuICBMaXN0T2JqZWN0VmVyc2lvbnNDb21tYW5kLFxuICBMaXN0T2JqZWN0c0NvbW1hbmQsXG4gIExpc3RPYmplY3RzVjJDb21tYW5kLFxuICBMaXN0UGFydHNDb21tYW5kLFxuICBQdXRCdWNrZXRBY2NlbGVyYXRlQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIFB1dEJ1Y2tldEFjbENvbW1hbmQsXG4gIFB1dEJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBQdXRCdWNrZXRDb3JzQ29tbWFuZCxcbiAgUHV0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmQsXG4gIFB1dEJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBQdXRCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uQ29tbWFuZCxcbiAgUHV0QnVja2V0TGlmZWN5Y2xlQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIFB1dEJ1Y2tldExvZ2dpbmdDb21tYW5kLFxuICBQdXRCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIFB1dEJ1Y2tldE5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kLFxuICBQdXRCdWNrZXRPd25lcnNoaXBDb250cm9sc0NvbW1hbmQsXG4gIFB1dEJ1Y2tldFBvbGljeUNvbW1hbmQsXG4gIFB1dEJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZCxcbiAgUHV0QnVja2V0UmVxdWVzdFBheW1lbnRDb21tYW5kLFxuICBQdXRCdWNrZXRUYWdnaW5nQ29tbWFuZCxcbiAgUHV0QnVja2V0VmVyc2lvbmluZ0NvbW1hbmQsXG4gIFB1dEJ1Y2tldFdlYnNpdGVDb21tYW5kLFxuICBQdXRPYmplY3RDb21tYW5kLFxuICBQdXRPYmplY3RBY2xDb21tYW5kLFxuICBQdXRPYmplY3RMZWdhbEhvbGRDb21tYW5kLFxuICBQdXRPYmplY3RMb2NrQ29uZmlndXJhdGlvbkNvbW1hbmQsXG4gIFB1dE9iamVjdFJldGVudGlvbkNvbW1hbmQsXG4gIFB1dE9iamVjdFRhZ2dpbmdDb21tYW5kLFxuICBQdXRQdWJsaWNBY2Nlc3NCbG9ja0NvbW1hbmQsXG4gIFJlc3RvcmVPYmplY3RDb21tYW5kLFxuICBTZWxlY3RPYmplY3RDb250ZW50Q29tbWFuZCxcbiAgVXBsb2FkUGFydENvbW1hbmQsXG4gIFVwbG9hZFBhcnRDb3B5Q29tbWFuZCxcbiAgV3JpdGVHZXRPYmplY3RSZXNwb25zZUNvbW1hbmQsXG59O1xuXG5pbnRlcmZhY2UgUzNTZXJ2aWNlJCB7XG4gIHJlYWRvbmx5IF86IHVuaXF1ZSBzeW1ib2w7XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFib3J0TXVsdGlwYXJ0VXBsb2FkQ29tbWFuZH1cbiAgICovXG4gIGFib3J0TXVsdGlwYXJ0VXBsb2FkKFxuICAgIGFyZ3M6IEFib3J0TXVsdGlwYXJ0VXBsb2FkQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQWJvcnRNdWx0aXBhcnRVcGxvYWRDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgTm9TdWNoVXBsb2FkRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kfVxuICAgKi9cbiAgY29tcGxldGVNdWx0aXBhcnRVcGxvYWQoXG4gICAgYXJnczogQ29tcGxldGVNdWx0aXBhcnRVcGxvYWRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDb21wbGV0ZU11bHRpcGFydFVwbG9hZENvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDb3B5T2JqZWN0Q29tbWFuZH1cbiAgICovXG4gIGNvcHlPYmplY3QoXG4gICAgYXJnczogQ29weU9iamVjdENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENvcHlPYmplY3RDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgT2JqZWN0Tm90SW5BY3RpdmVUaWVyRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlQnVja2V0Q29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUJ1Y2tldChcbiAgICBhcmdzOiBDcmVhdGVCdWNrZXRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVCdWNrZXRDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgQnVja2V0QWxyZWFkeUV4aXN0c0Vycm9yIHwgQnVja2V0QWxyZWFkeU93bmVkQnlZb3VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVCdWNrZXRNZXRhZGF0YVRhYmxlQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVCdWNrZXRNZXRhZGF0YVRhYmxlQ29uZmlndXJhdGlvbihcbiAgICBhcmdzOiBDcmVhdGVCdWNrZXRNZXRhZGF0YVRhYmxlQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUJ1Y2tldE1ldGFkYXRhVGFibGVDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZU11bHRpcGFydFVwbG9hZENvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVNdWx0aXBhcnRVcGxvYWQoXG4gICAgYXJnczogQ3JlYXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlTXVsdGlwYXJ0VXBsb2FkQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZVNlc3Npb25Db21tYW5kfVxuICAgKi9cbiAgY3JlYXRlU2Vzc2lvbihcbiAgICBhcmdzOiBDcmVhdGVTZXNzaW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8Q3JlYXRlU2Vzc2lvbkNvbW1hbmRPdXRwdXQsIFNka0Vycm9yIHwgTm9TdWNoQnVja2V0RXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVCdWNrZXRDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlQnVja2V0KFxuICAgIGFyZ3M6IERlbGV0ZUJ1Y2tldENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PERlbGV0ZUJ1Y2tldENvbW1hbmRPdXRwdXQsIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb24oXG4gICAgYXJnczogRGVsZXRlQnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQnVja2V0Q29yc0NvbW1hbmR9XG4gICAqL1xuICBkZWxldGVCdWNrZXRDb3JzKFxuICAgIGFyZ3M6IERlbGV0ZUJ1Y2tldENvcnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxEZWxldGVCdWNrZXRDb3JzQ29tbWFuZE91dHB1dCwgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUJ1Y2tldEVuY3J5cHRpb25Db21tYW5kfVxuICAgKi9cbiAgZGVsZXRlQnVja2V0RW5jcnlwdGlvbihcbiAgICBhcmdzOiBEZWxldGVCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlQnVja2V0RW5jcnlwdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb24oXG4gICAgYXJnczogRGVsZXRlQnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uKFxuICAgIGFyZ3M6IERlbGV0ZUJ1Y2tldEludmVudG9yeUNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUJ1Y2tldExpZmVjeWNsZUNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVCdWNrZXRMaWZlY3ljbGUoXG4gICAgYXJnczogRGVsZXRlQnVja2V0TGlmZWN5Y2xlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlQnVja2V0TGlmZWN5Y2xlQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUJ1Y2tldE1ldGFkYXRhVGFibGVDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUJ1Y2tldE1ldGFkYXRhVGFibGVDb25maWd1cmF0aW9uKFxuICAgIGFyZ3M6IERlbGV0ZUJ1Y2tldE1ldGFkYXRhVGFibGVDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlQnVja2V0TWV0YWRhdGFUYWJsZUNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgZGVsZXRlQnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb24oXG4gICAgYXJnczogRGVsZXRlQnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVCdWNrZXRPd25lcnNoaXBDb250cm9sc0NvbW1hbmR9XG4gICAqL1xuICBkZWxldGVCdWNrZXRPd25lcnNoaXBDb250cm9scyhcbiAgICBhcmdzOiBEZWxldGVCdWNrZXRPd25lcnNoaXBDb250cm9sc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUJ1Y2tldFBvbGljeUNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVCdWNrZXRQb2xpY3koXG4gICAgYXJnczogRGVsZXRlQnVja2V0UG9saWN5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8RGVsZXRlQnVja2V0UG9saWN5Q29tbWFuZE91dHB1dCwgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUJ1Y2tldFJlcGxpY2F0aW9uKFxuICAgIGFyZ3M6IERlbGV0ZUJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlQnVja2V0UmVwbGljYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlQnVja2V0VGFnZ2luZ0NvbW1hbmR9XG4gICAqL1xuICBkZWxldGVCdWNrZXRUYWdnaW5nKFxuICAgIGFyZ3M6IERlbGV0ZUJ1Y2tldFRhZ2dpbmdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxEZWxldGVCdWNrZXRUYWdnaW5nQ29tbWFuZE91dHB1dCwgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUJ1Y2tldFdlYnNpdGVDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlQnVja2V0V2Vic2l0ZShcbiAgICBhcmdzOiBEZWxldGVCdWNrZXRXZWJzaXRlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8RGVsZXRlQnVja2V0V2Vic2l0ZUNvbW1hbmRPdXRwdXQsIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVPYmplY3RDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlT2JqZWN0KFxuICAgIGFyZ3M6IERlbGV0ZU9iamVjdENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PERlbGV0ZU9iamVjdENvbW1hbmRPdXRwdXQsIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVPYmplY3RUYWdnaW5nQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZU9iamVjdFRhZ2dpbmcoXG4gICAgYXJnczogRGVsZXRlT2JqZWN0VGFnZ2luZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PERlbGV0ZU9iamVjdFRhZ2dpbmdDb21tYW5kT3V0cHV0LCBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlT2JqZWN0c0NvbW1hbmR9XG4gICAqL1xuICBkZWxldGVPYmplY3RzKFxuICAgIGFyZ3M6IERlbGV0ZU9iamVjdHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxEZWxldGVPYmplY3RzQ29tbWFuZE91dHB1dCwgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZVB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZVB1YmxpY0FjY2Vzc0Jsb2NrKFxuICAgIGFyZ3M6IERlbGV0ZVB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlUHVibGljQWNjZXNzQmxvY2tDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QnVja2V0QWNjZWxlcmF0ZUNvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgZ2V0QnVja2V0QWNjZWxlcmF0ZUNvbmZpZ3VyYXRpb24oXG4gICAgYXJnczogR2V0QnVja2V0QWNjZWxlcmF0ZUNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRCdWNrZXRBY2NlbGVyYXRlQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRCdWNrZXRBY2xDb21tYW5kfVxuICAgKi9cbiAgZ2V0QnVja2V0QWNsKFxuICAgIGFyZ3M6IEdldEJ1Y2tldEFjbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PEdldEJ1Y2tldEFjbENvbW1hbmRPdXRwdXQsIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIGdldEJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb24oXG4gICAgYXJnczogR2V0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QnVja2V0Q29yc0NvbW1hbmR9XG4gICAqL1xuICBnZXRCdWNrZXRDb3JzKFxuICAgIGFyZ3M6IEdldEJ1Y2tldENvcnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxHZXRCdWNrZXRDb3JzQ29tbWFuZE91dHB1dCwgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEJ1Y2tldEVuY3J5cHRpb25Db21tYW5kfVxuICAgKi9cbiAgZ2V0QnVja2V0RW5jcnlwdGlvbihcbiAgICBhcmdzOiBHZXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8R2V0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmRPdXRwdXQsIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIGdldEJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb24oXG4gICAgYXJnczogR2V0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBnZXRCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uKFxuICAgIGFyZ3M6IEdldEJ1Y2tldEludmVudG9yeUNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEJ1Y2tldExpZmVjeWNsZUNvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgZ2V0QnVja2V0TGlmZWN5Y2xlQ29uZmlndXJhdGlvbihcbiAgICBhcmdzOiBHZXRCdWNrZXRMaWZlY3ljbGVDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0QnVja2V0TGlmZWN5Y2xlQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRCdWNrZXRMb2NhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBnZXRCdWNrZXRMb2NhdGlvbihcbiAgICBhcmdzOiBHZXRCdWNrZXRMb2NhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PEdldEJ1Y2tldExvY2F0aW9uQ29tbWFuZE91dHB1dCwgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEJ1Y2tldExvZ2dpbmdDb21tYW5kfVxuICAgKi9cbiAgZ2V0QnVja2V0TG9nZ2luZyhcbiAgICBhcmdzOiBHZXRCdWNrZXRMb2dnaW5nQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8R2V0QnVja2V0TG9nZ2luZ0NvbW1hbmRPdXRwdXQsIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRCdWNrZXRNZXRhZGF0YVRhYmxlQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBnZXRCdWNrZXRNZXRhZGF0YVRhYmxlQ29uZmlndXJhdGlvbihcbiAgICBhcmdzOiBHZXRCdWNrZXRNZXRhZGF0YVRhYmxlQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEJ1Y2tldE1ldGFkYXRhVGFibGVDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIGdldEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uKFxuICAgIGFyZ3M6IEdldEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QnVja2V0Tm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBnZXRCdWNrZXROb3RpZmljYXRpb25Db25maWd1cmF0aW9uKFxuICAgIGFyZ3M6IEdldEJ1Y2tldE5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRCdWNrZXROb3RpZmljYXRpb25Db25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZH1cbiAgICovXG4gIGdldEJ1Y2tldE93bmVyc2hpcENvbnRyb2xzKFxuICAgIGFyZ3M6IEdldEJ1Y2tldE93bmVyc2hpcENvbnRyb2xzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0QnVja2V0T3duZXJzaGlwQ29udHJvbHNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QnVja2V0UG9saWN5Q29tbWFuZH1cbiAgICovXG4gIGdldEJ1Y2tldFBvbGljeShcbiAgICBhcmdzOiBHZXRCdWNrZXRQb2xpY3lDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxHZXRCdWNrZXRQb2xpY3lDb21tYW5kT3V0cHV0LCBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QnVja2V0UG9saWN5U3RhdHVzQ29tbWFuZH1cbiAgICovXG4gIGdldEJ1Y2tldFBvbGljeVN0YXR1cyhcbiAgICBhcmdzOiBHZXRCdWNrZXRQb2xpY3lTdGF0dXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRCdWNrZXRQb2xpY3lTdGF0dXNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QnVja2V0UmVwbGljYXRpb25Db21tYW5kfVxuICAgKi9cbiAgZ2V0QnVja2V0UmVwbGljYXRpb24oXG4gICAgYXJnczogR2V0QnVja2V0UmVwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRCdWNrZXRSZXBsaWNhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRCdWNrZXRSZXF1ZXN0UGF5bWVudENvbW1hbmR9XG4gICAqL1xuICBnZXRCdWNrZXRSZXF1ZXN0UGF5bWVudChcbiAgICBhcmdzOiBHZXRCdWNrZXRSZXF1ZXN0UGF5bWVudENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldEJ1Y2tldFJlcXVlc3RQYXltZW50Q29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldEJ1Y2tldFRhZ2dpbmdDb21tYW5kfVxuICAgKi9cbiAgZ2V0QnVja2V0VGFnZ2luZyhcbiAgICBhcmdzOiBHZXRCdWNrZXRUYWdnaW5nQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8R2V0QnVja2V0VGFnZ2luZ0NvbW1hbmRPdXRwdXQsIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRCdWNrZXRWZXJzaW9uaW5nQ29tbWFuZH1cbiAgICovXG4gIGdldEJ1Y2tldFZlcnNpb25pbmcoXG4gICAgYXJnczogR2V0QnVja2V0VmVyc2lvbmluZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PEdldEJ1Y2tldFZlcnNpb25pbmdDb21tYW5kT3V0cHV0LCBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0QnVja2V0V2Vic2l0ZUNvbW1hbmR9XG4gICAqL1xuICBnZXRCdWNrZXRXZWJzaXRlKFxuICAgIGFyZ3M6IEdldEJ1Y2tldFdlYnNpdGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxHZXRCdWNrZXRXZWJzaXRlQ29tbWFuZE91dHB1dCwgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldE9iamVjdENvbW1hbmR9XG4gICAqL1xuICBnZXRPYmplY3QoXG4gICAgYXJnczogR2V0T2JqZWN0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiB7IHJlYWRvbmx5IHByZXNpZ25lZD86IGZhbHNlIH0gJiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgR2V0T2JqZWN0Q29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEludmFsaWRPYmplY3RTdGF0ZUVycm9yIHwgTm9TdWNoS2V5RXJyb3JcbiAgPjtcbiAgZ2V0T2JqZWN0KFxuICAgIGFyZ3M6IEdldE9iamVjdENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogeyByZWFkb25seSBwcmVzaWduZWQ6IHRydWUgfSAmIFJlcXVlc3RQcmVzaWduaW5nQXJndW1lbnRzLFxuICApOiBFZmZlY3QuRWZmZWN0PHN0cmluZywgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldE9iamVjdEFjbENvbW1hbmR9XG4gICAqL1xuICBnZXRPYmplY3RBY2woXG4gICAgYXJnczogR2V0T2JqZWN0QWNsQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8R2V0T2JqZWN0QWNsQ29tbWFuZE91dHB1dCwgU2RrRXJyb3IgfCBOb1N1Y2hLZXlFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldE9iamVjdEF0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgZ2V0T2JqZWN0QXR0cmlidXRlcyhcbiAgICBhcmdzOiBHZXRPYmplY3RBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8R2V0T2JqZWN0QXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsIFNka0Vycm9yIHwgTm9TdWNoS2V5RXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRPYmplY3RMZWdhbEhvbGRDb21tYW5kfVxuICAgKi9cbiAgZ2V0T2JqZWN0TGVnYWxIb2xkKFxuICAgIGFyZ3M6IEdldE9iamVjdExlZ2FsSG9sZENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PEdldE9iamVjdExlZ2FsSG9sZENvbW1hbmRPdXRwdXQsIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRPYmplY3RMb2NrQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBnZXRPYmplY3RMb2NrQ29uZmlndXJhdGlvbihcbiAgICBhcmdzOiBHZXRPYmplY3RMb2NrQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEdldE9iamVjdExvY2tDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldE9iamVjdFJldGVudGlvbkNvbW1hbmR9XG4gICAqL1xuICBnZXRPYmplY3RSZXRlbnRpb24oXG4gICAgYXJnczogR2V0T2JqZWN0UmV0ZW50aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8R2V0T2JqZWN0UmV0ZW50aW9uQ29tbWFuZE91dHB1dCwgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEdldE9iamVjdFRhZ2dpbmdDb21tYW5kfVxuICAgKi9cbiAgZ2V0T2JqZWN0VGFnZ2luZyhcbiAgICBhcmdzOiBHZXRPYmplY3RUYWdnaW5nQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8R2V0T2JqZWN0VGFnZ2luZ0NvbW1hbmRPdXRwdXQsIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBHZXRPYmplY3RUb3JyZW50Q29tbWFuZH1cbiAgICovXG4gIGdldE9iamVjdFRvcnJlbnQoXG4gICAgYXJnczogR2V0T2JqZWN0VG9ycmVudENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PEdldE9iamVjdFRvcnJlbnRDb21tYW5kT3V0cHV0LCBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgR2V0UHVibGljQWNjZXNzQmxvY2tDb21tYW5kfVxuICAgKi9cbiAgZ2V0UHVibGljQWNjZXNzQmxvY2soXG4gICAgYXJnczogR2V0UHVibGljQWNjZXNzQmxvY2tDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBHZXRQdWJsaWNBY2Nlc3NCbG9ja0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBIZWFkQnVja2V0Q29tbWFuZH1cbiAgICovXG4gIGhlYWRCdWNrZXQoXG4gICAgYXJnczogSGVhZEJ1Y2tldENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PEhlYWRCdWNrZXRDb21tYW5kT3V0cHV0LCBTZGtFcnJvciB8IE5vdEZvdW5kRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBIZWFkT2JqZWN0Q29tbWFuZH1cbiAgICovXG4gIGhlYWRPYmplY3QoXG4gICAgYXJnczogSGVhZE9iamVjdENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PEhlYWRPYmplY3RDb21tYW5kT3V0cHV0LCBTZGtFcnJvciB8IE5vdEZvdW5kRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdEJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25zKFxuICAgIGFyZ3M6IExpc3RCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdEJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25zKFxuICAgIGFyZ3M6IExpc3RCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbnNDb21tYW5kfVxuICAgKi9cbiAgbGlzdEJ1Y2tldEludmVudG9yeUNvbmZpZ3VyYXRpb25zKFxuICAgIGFyZ3M6IExpc3RCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25zQ29tbWFuZH1cbiAgICovXG4gIGxpc3RCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbnMoXG4gICAgYXJnczogTGlzdEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbnNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdEJ1Y2tldHNDb21tYW5kfVxuICAgKi9cbiAgbGlzdEJ1Y2tldHMoXG4gICAgYXJnczogTGlzdEJ1Y2tldHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxMaXN0QnVja2V0c0NvbW1hbmRPdXRwdXQsIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0RGlyZWN0b3J5QnVja2V0c0NvbW1hbmR9XG4gICAqL1xuICBsaXN0RGlyZWN0b3J5QnVja2V0cyhcbiAgICBhcmdzOiBMaXN0RGlyZWN0b3J5QnVja2V0c0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3REaXJlY3RvcnlCdWNrZXRzQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIExpc3RNdWx0aXBhcnRVcGxvYWRzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RNdWx0aXBhcnRVcGxvYWRzKFxuICAgIGFyZ3M6IExpc3RNdWx0aXBhcnRVcGxvYWRzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTGlzdE11bHRpcGFydFVwbG9hZHNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdE9iamVjdFZlcnNpb25zQ29tbWFuZH1cbiAgICovXG4gIGxpc3RPYmplY3RWZXJzaW9ucyhcbiAgICBhcmdzOiBMaXN0T2JqZWN0VmVyc2lvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxMaXN0T2JqZWN0VmVyc2lvbnNDb21tYW5kT3V0cHV0LCBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdE9iamVjdHNDb21tYW5kfVxuICAgKi9cbiAgbGlzdE9iamVjdHMoXG4gICAgYXJnczogTGlzdE9iamVjdHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxMaXN0T2JqZWN0c0NvbW1hbmRPdXRwdXQsIFNka0Vycm9yIHwgTm9TdWNoQnVja2V0RXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0T2JqZWN0c1YyQ29tbWFuZH1cbiAgICovXG4gIGxpc3RPYmplY3RzVjIoXG4gICAgYXJnczogTGlzdE9iamVjdHNWMkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PExpc3RPYmplY3RzVjJDb21tYW5kT3V0cHV0LCBTZGtFcnJvciB8IE5vU3VjaEJ1Y2tldEVycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTGlzdFBhcnRzQ29tbWFuZH1cbiAgICovXG4gIGxpc3RQYXJ0cyhcbiAgICBhcmdzOiBMaXN0UGFydHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxMaXN0UGFydHNDb21tYW5kT3V0cHV0LCBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0QnVja2V0QWNjZWxlcmF0ZUNvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgcHV0QnVja2V0QWNjZWxlcmF0ZUNvbmZpZ3VyYXRpb24oXG4gICAgYXJnczogUHV0QnVja2V0QWNjZWxlcmF0ZUNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdXRCdWNrZXRBY2NlbGVyYXRlQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRCdWNrZXRBY2xDb21tYW5kfVxuICAgKi9cbiAgcHV0QnVja2V0QWNsKFxuICAgIGFyZ3M6IFB1dEJ1Y2tldEFjbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFB1dEJ1Y2tldEFjbENvbW1hbmRPdXRwdXQsIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRCdWNrZXRBbmFseXRpY3NDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIHB1dEJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb24oXG4gICAgYXJnczogUHV0QnVja2V0QW5hbHl0aWNzQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1dEJ1Y2tldEFuYWx5dGljc0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0QnVja2V0Q29yc0NvbW1hbmR9XG4gICAqL1xuICBwdXRCdWNrZXRDb3JzKFxuICAgIGFyZ3M6IFB1dEJ1Y2tldENvcnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxQdXRCdWNrZXRDb3JzQ29tbWFuZE91dHB1dCwgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEJ1Y2tldEVuY3J5cHRpb25Db21tYW5kfVxuICAgKi9cbiAgcHV0QnVja2V0RW5jcnlwdGlvbihcbiAgICBhcmdzOiBQdXRCdWNrZXRFbmNyeXB0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8UHV0QnVja2V0RW5jcnlwdGlvbkNvbW1hbmRPdXRwdXQsIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRCdWNrZXRJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIHB1dEJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb24oXG4gICAgYXJnczogUHV0QnVja2V0SW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1dEJ1Y2tldEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0QnVja2V0SW52ZW50b3J5Q29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBwdXRCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uKFxuICAgIGFyZ3M6IFB1dEJ1Y2tldEludmVudG9yeUNvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdXRCdWNrZXRJbnZlbnRvcnlDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEJ1Y2tldExpZmVjeWNsZUNvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgcHV0QnVja2V0TGlmZWN5Y2xlQ29uZmlndXJhdGlvbihcbiAgICBhcmdzOiBQdXRCdWNrZXRMaWZlY3ljbGVDb25maWd1cmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHV0QnVja2V0TGlmZWN5Y2xlQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRCdWNrZXRMb2dnaW5nQ29tbWFuZH1cbiAgICovXG4gIHB1dEJ1Y2tldExvZ2dpbmcoXG4gICAgYXJnczogUHV0QnVja2V0TG9nZ2luZ0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFB1dEJ1Y2tldExvZ2dpbmdDb21tYW5kT3V0cHV0LCBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgcHV0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb24oXG4gICAgYXJnczogUHV0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdXRCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRCdWNrZXROb3RpZmljYXRpb25Db25maWd1cmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIHB1dEJ1Y2tldE5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb24oXG4gICAgYXJnczogUHV0QnVja2V0Tm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1dEJ1Y2tldE5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0QnVja2V0T3duZXJzaGlwQ29udHJvbHNDb21tYW5kfVxuICAgKi9cbiAgcHV0QnVja2V0T3duZXJzaGlwQ29udHJvbHMoXG4gICAgYXJnczogUHV0QnVja2V0T3duZXJzaGlwQ29udHJvbHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdXRCdWNrZXRPd25lcnNoaXBDb250cm9sc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRCdWNrZXRQb2xpY3lDb21tYW5kfVxuICAgKi9cbiAgcHV0QnVja2V0UG9saWN5KFxuICAgIGFyZ3M6IFB1dEJ1Y2tldFBvbGljeUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFB1dEJ1Y2tldFBvbGljeUNvbW1hbmRPdXRwdXQsIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRCdWNrZXRSZXBsaWNhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBwdXRCdWNrZXRSZXBsaWNhdGlvbihcbiAgICBhcmdzOiBQdXRCdWNrZXRSZXBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1dEJ1Y2tldFJlcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEJ1Y2tldFJlcXVlc3RQYXltZW50Q29tbWFuZH1cbiAgICovXG4gIHB1dEJ1Y2tldFJlcXVlc3RQYXltZW50KFxuICAgIGFyZ3M6IFB1dEJ1Y2tldFJlcXVlc3RQYXltZW50Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHV0QnVja2V0UmVxdWVzdFBheW1lbnRDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0QnVja2V0VGFnZ2luZ0NvbW1hbmR9XG4gICAqL1xuICBwdXRCdWNrZXRUYWdnaW5nKFxuICAgIGFyZ3M6IFB1dEJ1Y2tldFRhZ2dpbmdDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxQdXRCdWNrZXRUYWdnaW5nQ29tbWFuZE91dHB1dCwgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dEJ1Y2tldFZlcnNpb25pbmdDb21tYW5kfVxuICAgKi9cbiAgcHV0QnVja2V0VmVyc2lvbmluZyhcbiAgICBhcmdzOiBQdXRCdWNrZXRWZXJzaW9uaW5nQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8UHV0QnVja2V0VmVyc2lvbmluZ0NvbW1hbmRPdXRwdXQsIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRCdWNrZXRXZWJzaXRlQ29tbWFuZH1cbiAgICovXG4gIHB1dEJ1Y2tldFdlYnNpdGUoXG4gICAgYXJnczogUHV0QnVja2V0V2Vic2l0ZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFB1dEJ1Y2tldFdlYnNpdGVDb21tYW5kT3V0cHV0LCBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUHV0T2JqZWN0Q29tbWFuZH1cbiAgICovXG4gIHB1dE9iamVjdChcbiAgICBhcmdzOiBQdXRPYmplY3RDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IHsgcmVhZG9ubHkgcHJlc2lnbmVkPzogZmFsc2UgfSAmIEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBQdXRPYmplY3RDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEVuY3J5cHRpb25UeXBlTWlzbWF0Y2hFcnJvclxuICAgIHwgSW52YWxpZFJlcXVlc3RFcnJvclxuICAgIHwgSW52YWxpZFdyaXRlT2Zmc2V0RXJyb3JcbiAgICB8IFRvb01hbnlQYXJ0c0Vycm9yXG4gID47XG4gIHB1dE9iamVjdChcbiAgICBhcmdzOiBQdXRPYmplY3RDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IHsgcmVhZG9ubHkgcHJlc2lnbmVkOiB0cnVlIH0gJiBSZXF1ZXN0UHJlc2lnbmluZ0FyZ3VtZW50cyxcbiAgKTogRWZmZWN0LkVmZmVjdDxzdHJpbmcsIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRPYmplY3RBY2xDb21tYW5kfVxuICAgKi9cbiAgcHV0T2JqZWN0QWNsKFxuICAgIGFyZ3M6IFB1dE9iamVjdEFjbENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFB1dE9iamVjdEFjbENvbW1hbmRPdXRwdXQsIFNka0Vycm9yIHwgTm9TdWNoS2V5RXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRPYmplY3RMZWdhbEhvbGRDb21tYW5kfVxuICAgKi9cbiAgcHV0T2JqZWN0TGVnYWxIb2xkKFxuICAgIGFyZ3M6IFB1dE9iamVjdExlZ2FsSG9sZENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFB1dE9iamVjdExlZ2FsSG9sZENvbW1hbmRPdXRwdXQsIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRPYmplY3RMb2NrQ29uZmlndXJhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBwdXRPYmplY3RMb2NrQ29uZmlndXJhdGlvbihcbiAgICBhcmdzOiBQdXRPYmplY3RMb2NrQ29uZmlndXJhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1dE9iamVjdExvY2tDb25maWd1cmF0aW9uQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dE9iamVjdFJldGVudGlvbkNvbW1hbmR9XG4gICAqL1xuICBwdXRPYmplY3RSZXRlbnRpb24oXG4gICAgYXJnczogUHV0T2JqZWN0UmV0ZW50aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8UHV0T2JqZWN0UmV0ZW50aW9uQ29tbWFuZE91dHB1dCwgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1dE9iamVjdFRhZ2dpbmdDb21tYW5kfVxuICAgKi9cbiAgcHV0T2JqZWN0VGFnZ2luZyhcbiAgICBhcmdzOiBQdXRPYmplY3RUYWdnaW5nQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8UHV0T2JqZWN0VGFnZ2luZ0NvbW1hbmRPdXRwdXQsIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQdXRQdWJsaWNBY2Nlc3NCbG9ja0NvbW1hbmR9XG4gICAqL1xuICBwdXRQdWJsaWNBY2Nlc3NCbG9jayhcbiAgICBhcmdzOiBQdXRQdWJsaWNBY2Nlc3NCbG9ja0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFB1dFB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFMzU2VydmljZUVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlc3RvcmVPYmplY3RDb21tYW5kfVxuICAgKi9cbiAgcmVzdG9yZU9iamVjdChcbiAgICBhcmdzOiBSZXN0b3JlT2JqZWN0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmVzdG9yZU9iamVjdENvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBPYmplY3RBbHJlYWR5SW5BY3RpdmVUaWVyRXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU2VsZWN0T2JqZWN0Q29udGVudENvbW1hbmR9XG4gICAqL1xuICBzZWxlY3RPYmplY3RDb250ZW50KFxuICAgIGFyZ3M6IFNlbGVjdE9iamVjdENvbnRlbnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxTZWxlY3RPYmplY3RDb250ZW50Q29tbWFuZE91dHB1dCwgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFVwbG9hZFBhcnRDb21tYW5kfVxuICAgKi9cbiAgdXBsb2FkUGFydChcbiAgICBhcmdzOiBVcGxvYWRQYXJ0Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8VXBsb2FkUGFydENvbW1hbmRPdXRwdXQsIFNka0Vycm9yIHwgUzNTZXJ2aWNlRXJyb3I+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBVcGxvYWRQYXJ0Q29weUNvbW1hbmR9XG4gICAqL1xuICB1cGxvYWRQYXJ0Q29weShcbiAgICBhcmdzOiBVcGxvYWRQYXJ0Q29weUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFVwbG9hZFBhcnRDb3B5Q29tbWFuZE91dHB1dCwgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFdyaXRlR2V0T2JqZWN0UmVzcG9uc2VDb21tYW5kfVxuICAgKi9cbiAgd3JpdGVHZXRPYmplY3RSZXNwb25zZShcbiAgICBhcmdzOiBXcml0ZUdldE9iamVjdFJlc3BvbnNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgV3JpdGVHZXRPYmplY3RSZXNwb25zZUNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBTM1NlcnZpY2VFcnJvclxuICA+O1xufVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGNvbnN0cnVjdG9yc1xuICovXG5leHBvcnQgY29uc3QgbWFrZVMzU2VydmljZSA9IEVmZmVjdC5nZW4oZnVuY3Rpb24qIChfKSB7XG4gIGNvbnN0IGNsaWVudCA9IHlpZWxkKiBfKFMzQ2xpZW50SW5zdGFuY2UpO1xuXG4gIGNvbnN0IGNhdGNoRXJyb3JzID0gKGU6IHVua25vd24pID0+IHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIFMzU2VydmljZUV4Y2VwdGlvbikge1xuICAgICAgY29uc3QgU2VydmljZUV4Y2VwdGlvbiA9IERhdGEudGFnZ2VkPFRhZ2dlZEV4Y2VwdGlvbjxTM1NlcnZpY2VFeGNlcHRpb24+PihcbiAgICAgICAgZS5uYW1lLFxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIFNlcnZpY2VFeGNlcHRpb24oe1xuICAgICAgICAuLi5lLFxuICAgICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UsXG4gICAgICAgIHN0YWNrOiBlLnN0YWNrLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHJldHVybiBTZGtFcnJvcih7XG4gICAgICAgIC4uLmUsXG4gICAgICAgIG5hbWU6IFwiU2RrRXJyb3JcIixcbiAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICBzdGFjazogZS5zdGFjayxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aHJvdyBlO1xuICB9O1xuXG4gIHJldHVybiBSZWNvcmQudG9FbnRyaWVzKGNvbW1hbmRzKS5yZWR1Y2UoKGFjYywgW2NvbW1hbmRdKSA9PiB7XG4gICAgY29uc3QgQ29tbWFuZEN0b3IgPSBjb21tYW5kc1tjb21tYW5kXSBhcyBhbnk7XG4gICAgY29uc3QgbWV0aG9kSW1wbCA9IChcbiAgICAgIGFyZ3M6IGFueSxcbiAgICAgIG9wdGlvbnM/OlxuICAgICAgICB8ICh7IHJlYWRvbmx5IHByZXNpZ25lZD86IGZhbHNlIH0gJiBIdHRwSGFuZGxlck9wdGlvbnMpXG4gICAgICAgIHwgKHsgcmVhZG9ubHkgcHJlc2lnbmVkOiB0cnVlIH0gJiBSZXF1ZXN0UHJlc2lnbmluZ0FyZ3VtZW50cyksXG4gICAgKSA9PlxuICAgICAgb3B0aW9ucz8ucHJlc2lnbmVkXG4gICAgICAgID8gRWZmZWN0LnRyeVByb21pc2Uoe1xuICAgICAgICAgICAgdHJ5OiAoKSA9PlxuICAgICAgICAgICAgICBnZXRTaWduZWRVcmwoY2xpZW50IGFzIGFueSwgbmV3IENvbW1hbmRDdG9yKGFyZ3MpLCBvcHRpb25zKSxcbiAgICAgICAgICAgIGNhdGNoOiBjYXRjaEVycm9ycyxcbiAgICAgICAgICB9KVxuICAgICAgICA6IEVmZmVjdC50cnlQcm9taXNlKHtcbiAgICAgICAgICAgIHRyeTogKGFib3J0U2lnbmFsKSA9PlxuICAgICAgICAgICAgICBjbGllbnQuc2VuZChuZXcgQ29tbWFuZEN0b3IoYXJncyksIHtcbiAgICAgICAgICAgICAgICAuLi4ob3B0aW9ucyA/PyB7fSksXG4gICAgICAgICAgICAgICAgYWJvcnRTaWduYWwsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2g6IGNhdGNoRXJyb3JzLFxuICAgICAgICAgIH0pO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAoY29tbWFuZFswXS50b0xvd2VyQ2FzZSgpICsgY29tbWFuZC5zbGljZSgxKSkucmVwbGFjZShcbiAgICAgIC9Db21tYW5kJC8sXG4gICAgICBcIlwiLFxuICAgICk7XG4gICAgcmV0dXJuIHsgLi4uYWNjLCBbbWV0aG9kTmFtZV06IG1ldGhvZEltcGwgfTtcbiAgfSwge30pIGFzIFMzU2VydmljZSQ7XG59KTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBtb2RlbHNcbiAqL1xuZXhwb3J0IGNsYXNzIFMzU2VydmljZSBleHRlbmRzIEVmZmVjdC5UYWcoXCJAZWZmZWN0LWF3cy9jbGllbnQtczMvUzNTZXJ2aWNlXCIpPFxuICBTM1NlcnZpY2UsXG4gIFMzU2VydmljZSRcbj4oKSB7XG4gIGRlY2xhcmUgc3RhdGljIHJlYWRvbmx5IGdldE9iamVjdDogUzNTZXJ2aWNlJFtcImdldE9iamVjdFwiXTtcbiAgZGVjbGFyZSBzdGF0aWMgcmVhZG9ubHkgcHV0T2JqZWN0OiBTM1NlcnZpY2UkW1wicHV0T2JqZWN0XCJdO1xuXG4gIHN0YXRpYyByZWFkb25seSBkZWZhdWx0TGF5ZXIgPSBMYXllci5lZmZlY3QodGhpcywgbWFrZVMzU2VydmljZSkucGlwZShcbiAgICBMYXllci5wcm92aWRlKFMzQ2xpZW50SW5zdGFuY2VMYXllciksXG4gICAgTGF5ZXIucHJvdmlkZShEZWZhdWx0UzNDbGllbnRDb25maWdMYXllciksXG4gICk7XG4gIHN0YXRpYyByZWFkb25seSBsYXllciA9IChjb25maWc6IFMzQ2xpZW50Q29uZmlnKSA9PlxuICAgIExheWVyLmVmZmVjdCh0aGlzLCBtYWtlUzNTZXJ2aWNlKS5waXBlKFxuICAgICAgTGF5ZXIucHJvdmlkZShTM0NsaWVudEluc3RhbmNlTGF5ZXIpLFxuICAgICAgTGF5ZXIucHJvdmlkZShcbiAgICAgICAgTGF5ZXIuZWZmZWN0KFxuICAgICAgICAgIFMzQ2xpZW50SW5zdGFuY2VDb25maWcsXG4gICAgICAgICAgbWFrZURlZmF1bHRTM0NsaWVudEluc3RhbmNlQ29uZmlnLnBpcGUoXG4gICAgICAgICAgICBFZmZlY3QubWFwKChkZWZhdWx0Q29uZmlnKSA9PiAoeyAuLi5kZWZhdWx0Q29uZmlnLCAuLi5jb25maWcgfSkpLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICk7XG4gIHN0YXRpYyByZWFkb25seSBiYXNlTGF5ZXIgPSAoXG4gICAgZXZhbHVhdGU6IChkZWZhdWx0Q29uZmlnOiBTM0NsaWVudENvbmZpZykgPT4gUzNDbGllbnQsXG4gICkgPT5cbiAgICBMYXllci5lZmZlY3QodGhpcywgbWFrZVMzU2VydmljZSkucGlwZShcbiAgICAgIExheWVyLnByb3ZpZGUoXG4gICAgICAgIExheWVyLmVmZmVjdChcbiAgICAgICAgICBTM0NsaWVudEluc3RhbmNlLFxuICAgICAgICAgIEVmZmVjdC5tYXAobWFrZURlZmF1bHRTM0NsaWVudEluc3RhbmNlQ29uZmlnLCBldmFsdWF0ZSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICk7XG59XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbW9kZWxzXG4gKiBAYWxpYXMgUzNTZXJ2aWNlXG4gKi9cbmV4cG9ydCBjb25zdCBTMyA9IFMzU2VydmljZTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqIEBkZXByZWNhdGVkIHVzZSBTMy5iYXNlTGF5ZXIgaW5zdGVhZFxuICovXG5leHBvcnQgY29uc3QgQmFzZVMzU2VydmljZUxheWVyID0gTGF5ZXIuZWZmZWN0KFMzU2VydmljZSwgbWFrZVMzU2VydmljZSk7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKiBAZGVwcmVjYXRlZCB1c2UgUzMubGF5ZXIgaW5zdGVhZFxuICovXG5leHBvcnQgY29uc3QgUzNTZXJ2aWNlTGF5ZXIgPSBCYXNlUzNTZXJ2aWNlTGF5ZXIucGlwZShcbiAgTGF5ZXIucHJvdmlkZShTM0NsaWVudEluc3RhbmNlTGF5ZXIpLFxuKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqIEBkZXByZWNhdGVkIHVzZSBTMy5kZWZhdWx0TGF5ZXIgaW5zdGVhZFxuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdFMzU2VydmljZUxheWVyID0gUzNTZXJ2aWNlLmRlZmF1bHRMYXllcjtcbiJdfQ==
package/lib/esm/Errors.js DELETED
@@ -1,19 +0,0 @@
1
- import { Data } from "effect";
2
- export const AllServiceErrors = [
3
- "BucketAlreadyExists",
4
- "BucketAlreadyOwnedByYou",
5
- "EncryptionTypeMismatch",
6
- "InvalidObjectState",
7
- "InvalidRequest",
8
- "InvalidWriteOffset",
9
- "NoSuchBucket",
10
- "NoSuchKey",
11
- "NoSuchUpload",
12
- "NotFound",
13
- "ObjectAlreadyInActiveTierError",
14
- "ObjectNotInActiveTierError",
15
- "TooManyParts",
16
- ];
17
- export const S3ServiceError = Data.tagged("S3ServiceError");
18
- export const SdkError = Data.tagged("SdkError");
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQkEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU5QixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM5QixxQkFBcUI7SUFDckIseUJBQXlCO0lBQ3pCLHdCQUF3QjtJQUN4QixvQkFBb0I7SUFDcEIsZ0JBQWdCO0lBQ2hCLG9CQUFvQjtJQUNwQixjQUFjO0lBQ2QsV0FBVztJQUNYLGNBQWM7SUFDZCxVQUFVO0lBQ1YsZ0NBQWdDO0lBQ2hDLDRCQUE0QjtJQUM1QixjQUFjO0NBQ2YsQ0FBQztBQTJCRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBaUIsZ0JBQWdCLENBQUMsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBVyxVQUFVLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgQnVja2V0QWxyZWFkeUV4aXN0cyxcbiAgQnVja2V0QWxyZWFkeU93bmVkQnlZb3UsXG4gIEVuY3J5cHRpb25UeXBlTWlzbWF0Y2gsXG4gIEludmFsaWRPYmplY3RTdGF0ZSxcbiAgSW52YWxpZFJlcXVlc3QsXG4gIEludmFsaWRXcml0ZU9mZnNldCxcbiAgTm9TdWNoQnVja2V0LFxuICBOb1N1Y2hLZXksXG4gIE5vU3VjaFVwbG9hZCxcbiAgTm90Rm91bmQsXG4gIE9iamVjdEFscmVhZHlJbkFjdGl2ZVRpZXJFcnJvciBhcyBPYmplY3RBbHJlYWR5SW5BY3RpdmVUaWVyRXhjZXB0aW9uLFxuICBPYmplY3ROb3RJbkFjdGl2ZVRpZXJFcnJvciBhcyBPYmplY3ROb3RJbkFjdGl2ZVRpZXJFeGNlcHRpb24sXG4gIFMzU2VydmljZUV4Y2VwdGlvbixcbiAgVG9vTWFueVBhcnRzLFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LXMzXCI7XG5pbXBvcnQgeyBEYXRhIH0gZnJvbSBcImVmZmVjdFwiO1xuXG5leHBvcnQgY29uc3QgQWxsU2VydmljZUVycm9ycyA9IFtcbiAgXCJCdWNrZXRBbHJlYWR5RXhpc3RzXCIsXG4gIFwiQnVja2V0QWxyZWFkeU93bmVkQnlZb3VcIixcbiAgXCJFbmNyeXB0aW9uVHlwZU1pc21hdGNoXCIsXG4gIFwiSW52YWxpZE9iamVjdFN0YXRlXCIsXG4gIFwiSW52YWxpZFJlcXVlc3RcIixcbiAgXCJJbnZhbGlkV3JpdGVPZmZzZXRcIixcbiAgXCJOb1N1Y2hCdWNrZXRcIixcbiAgXCJOb1N1Y2hLZXlcIixcbiAgXCJOb1N1Y2hVcGxvYWRcIixcbiAgXCJOb3RGb3VuZFwiLFxuICBcIk9iamVjdEFscmVhZHlJbkFjdGl2ZVRpZXJFcnJvclwiLFxuICBcIk9iamVjdE5vdEluQWN0aXZlVGllckVycm9yXCIsXG4gIFwiVG9vTWFueVBhcnRzXCIsXG5dO1xuXG5leHBvcnQgdHlwZSBUYWdnZWRFeGNlcHRpb248VCBleHRlbmRzIHsgbmFtZTogc3RyaW5nIH0+ID0gVCAmIHtcbiAgcmVhZG9ubHkgX3RhZzogVFtcIm5hbWVcIl07XG59O1xuXG5leHBvcnQgdHlwZSBCdWNrZXRBbHJlYWR5RXhpc3RzRXJyb3IgPSBUYWdnZWRFeGNlcHRpb248QnVja2V0QWxyZWFkeUV4aXN0cz47XG5leHBvcnQgdHlwZSBCdWNrZXRBbHJlYWR5T3duZWRCeVlvdUVycm9yID1cbiAgVGFnZ2VkRXhjZXB0aW9uPEJ1Y2tldEFscmVhZHlPd25lZEJ5WW91PjtcbmV4cG9ydCB0eXBlIEVuY3J5cHRpb25UeXBlTWlzbWF0Y2hFcnJvciA9XG4gIFRhZ2dlZEV4Y2VwdGlvbjxFbmNyeXB0aW9uVHlwZU1pc21hdGNoPjtcbmV4cG9ydCB0eXBlIEludmFsaWRPYmplY3RTdGF0ZUVycm9yID0gVGFnZ2VkRXhjZXB0aW9uPEludmFsaWRPYmplY3RTdGF0ZT47XG5leHBvcnQgdHlwZSBJbnZhbGlkUmVxdWVzdEVycm9yID0gVGFnZ2VkRXhjZXB0aW9uPEludmFsaWRSZXF1ZXN0PjtcbmV4cG9ydCB0eXBlIEludmFsaWRXcml0ZU9mZnNldEVycm9yID0gVGFnZ2VkRXhjZXB0aW9uPEludmFsaWRXcml0ZU9mZnNldD47XG5leHBvcnQgdHlwZSBOb1N1Y2hCdWNrZXRFcnJvciA9IFRhZ2dlZEV4Y2VwdGlvbjxOb1N1Y2hCdWNrZXQ+O1xuZXhwb3J0IHR5cGUgTm9TdWNoS2V5RXJyb3IgPSBUYWdnZWRFeGNlcHRpb248Tm9TdWNoS2V5PjtcbmV4cG9ydCB0eXBlIE5vU3VjaFVwbG9hZEVycm9yID0gVGFnZ2VkRXhjZXB0aW9uPE5vU3VjaFVwbG9hZD47XG5leHBvcnQgdHlwZSBOb3RGb3VuZEVycm9yID0gVGFnZ2VkRXhjZXB0aW9uPE5vdEZvdW5kPjtcbmV4cG9ydCB0eXBlIE9iamVjdEFscmVhZHlJbkFjdGl2ZVRpZXJFcnJvciA9XG4gIFRhZ2dlZEV4Y2VwdGlvbjxPYmplY3RBbHJlYWR5SW5BY3RpdmVUaWVyRXhjZXB0aW9uPjtcbmV4cG9ydCB0eXBlIE9iamVjdE5vdEluQWN0aXZlVGllckVycm9yID1cbiAgVGFnZ2VkRXhjZXB0aW9uPE9iamVjdE5vdEluQWN0aXZlVGllckV4Y2VwdGlvbj47XG5leHBvcnQgdHlwZSBUb29NYW55UGFydHNFcnJvciA9IFRhZ2dlZEV4Y2VwdGlvbjxUb29NYW55UGFydHM+O1xuXG5leHBvcnQgdHlwZSBTM1NlcnZpY2VFcnJvciA9IFRhZ2dlZEV4Y2VwdGlvbjxcbiAgUzNTZXJ2aWNlRXhjZXB0aW9uICYgeyBuYW1lOiBcIlMzU2VydmljZUVycm9yXCIgfVxuPjtcbmV4cG9ydCBjb25zdCBTM1NlcnZpY2VFcnJvciA9IERhdGEudGFnZ2VkPFMzU2VydmljZUVycm9yPihcIlMzU2VydmljZUVycm9yXCIpO1xuZXhwb3J0IHR5cGUgU2RrRXJyb3IgPSBUYWdnZWRFeGNlcHRpb248RXJyb3IgJiB7IG5hbWU6IFwiU2RrRXJyb3JcIiB9PjtcbmV4cG9ydCBjb25zdCBTZGtFcnJvciA9IERhdGEudGFnZ2VkPFNka0Vycm9yPihcIlNka0Vycm9yXCIpO1xuIl19
@@ -1,30 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import { S3Client } from "@aws-sdk/client-s3";
5
- import * as Context from "effect/Context";
6
- import * as Effect from "effect/Effect";
7
- import * as Layer from "effect/Layer";
8
- import { DefaultS3ClientConfigLayer, S3ClientInstanceConfig, } from "./S3ClientInstanceConfig";
9
- /**
10
- * @since 1.0.0
11
- * @category tags
12
- */
13
- export class S3ClientInstance extends Context.Tag("@effect-aws/client-s3/S3ClientInstance")() {
14
- }
15
- /**
16
- * @since 1.0.0
17
- * @category constructors
18
- */
19
- export const makeS3ClientInstance = Effect.flatMap(S3ClientInstanceConfig, (config) => Effect.acquireRelease(Effect.sync(() => new S3Client(config)), (client) => Effect.sync(() => client.destroy())));
20
- /**
21
- * @since 1.0.0
22
- * @category layers
23
- */
24
- export const S3ClientInstanceLayer = Layer.scoped(S3ClientInstance, makeS3ClientInstance);
25
- /**
26
- * @since 1.0.0
27
- * @category layers
28
- */
29
- export const DefaultS3ClientInstanceLayer = S3ClientInstanceLayer.pipe(Layer.provide(DefaultS3ClientConfigLayer));
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUzNDbGllbnRJbnN0YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TM0NsaWVudEluc3RhbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLEtBQUssTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUNMLDBCQUEwQixFQUMxQixzQkFBc0IsR0FDdkIsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsT0FBTyxDQUFDLEdBQUcsQ0FDL0Msd0NBQXdDLENBQ3pDLEVBQThCO0NBQUc7QUFFbEM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FDaEQsc0JBQXNCLEVBQ3RCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDVCxNQUFNLENBQUMsY0FBYyxDQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQ3ZDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUNoRCxDQUNKLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUMvQyxnQkFBZ0IsRUFDaEIsb0JBQW9CLENBQ3JCLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQ3BFLEtBQUssQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FDMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKi9cbmltcG9ydCB7IFMzQ2xpZW50IH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zM1wiO1xuaW1wb3J0ICogYXMgQ29udGV4dCBmcm9tIFwiZWZmZWN0L0NvbnRleHRcIjtcbmltcG9ydCAqIGFzIEVmZmVjdCBmcm9tIFwiZWZmZWN0L0VmZmVjdFwiO1xuaW1wb3J0ICogYXMgTGF5ZXIgZnJvbSBcImVmZmVjdC9MYXllclwiO1xuaW1wb3J0IHtcbiAgRGVmYXVsdFMzQ2xpZW50Q29uZmlnTGF5ZXIsXG4gIFMzQ2xpZW50SW5zdGFuY2VDb25maWcsXG59IGZyb20gXCIuL1MzQ2xpZW50SW5zdGFuY2VDb25maWdcIjtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSB0YWdzXG4gKi9cbmV4cG9ydCBjbGFzcyBTM0NsaWVudEluc3RhbmNlIGV4dGVuZHMgQ29udGV4dC5UYWcoXG4gIFwiQGVmZmVjdC1hd3MvY2xpZW50LXMzL1MzQ2xpZW50SW5zdGFuY2VcIixcbik8UzNDbGllbnRJbnN0YW5jZSwgUzNDbGllbnQ+KCkge31cblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBjb25zdHJ1Y3RvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IG1ha2VTM0NsaWVudEluc3RhbmNlID0gRWZmZWN0LmZsYXRNYXAoXG4gIFMzQ2xpZW50SW5zdGFuY2VDb25maWcsXG4gIChjb25maWcpID0+XG4gICAgRWZmZWN0LmFjcXVpcmVSZWxlYXNlKFxuICAgICAgRWZmZWN0LnN5bmMoKCkgPT4gbmV3IFMzQ2xpZW50KGNvbmZpZykpLFxuICAgICAgKGNsaWVudCkgPT4gRWZmZWN0LnN5bmMoKCkgPT4gY2xpZW50LmRlc3Ryb3koKSksXG4gICAgKSxcbik7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBTM0NsaWVudEluc3RhbmNlTGF5ZXIgPSBMYXllci5zY29wZWQoXG4gIFMzQ2xpZW50SW5zdGFuY2UsXG4gIG1ha2VTM0NsaWVudEluc3RhbmNlLFxuKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IERlZmF1bHRTM0NsaWVudEluc3RhbmNlTGF5ZXIgPSBTM0NsaWVudEluc3RhbmNlTGF5ZXIucGlwZShcbiAgTGF5ZXIucHJvdmlkZShEZWZhdWx0UzNDbGllbnRDb25maWdMYXllciksXG4pO1xuIl19
@@ -1,40 +0,0 @@
1
- import { Context, Effect, Layer, Runtime } from "effect";
2
- /**
3
- * @since 1.0.0
4
- * @category tags
5
- */
6
- export class S3ClientInstanceConfig extends Context.Tag("@effect-aws/client-s3/S3ClientInstanceConfig")() {
7
- }
8
- /**
9
- * @since 1.0.0
10
- * @category constructors
11
- */
12
- export const makeDefaultS3ClientInstanceConfig = Effect.gen(function* (_) {
13
- const runtime = yield* _(Effect.runtime());
14
- const runSync = Runtime.runSync(runtime);
15
- return {
16
- logger: {
17
- info(m) {
18
- Effect.logInfo(m).pipe(runSync);
19
- },
20
- warn(m) {
21
- Effect.logWarning(m).pipe(runSync);
22
- },
23
- error(m) {
24
- Effect.logError(m).pipe(runSync);
25
- },
26
- debug(m) {
27
- Effect.logDebug(m).pipe(runSync);
28
- },
29
- trace(m) {
30
- Effect.logTrace(m).pipe(runSync);
31
- },
32
- },
33
- };
34
- });
35
- /**
36
- * @since 1.0.0
37
- * @category layers
38
- */
39
- export const DefaultS3ClientConfigLayer = Layer.effect(S3ClientInstanceConfig, makeDefaultS3ClientInstanceConfig);
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUzNDbGllbnRJbnN0YW5jZUNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TM0NsaWVudEluc3RhbmNlQ29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFekQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHNCQUF1QixTQUFRLE9BQU8sQ0FBQyxHQUFHLENBQ3JELDhDQUE4QyxDQUMvQyxFQUEwQztDQUFHO0FBRTlDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUM1QyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDckIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQVMsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFekMsT0FBTztRQUNMLE1BQU0sRUFBRTtZQUNOLElBQUksQ0FBQyxDQUFDO2dCQUNKLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2xDLENBQUM7WUFDRCxJQUFJLENBQUMsQ0FBQztnQkFDSixNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyQyxDQUFDO1lBQ0QsS0FBSyxDQUFDLENBQUM7Z0JBQ0wsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUNELEtBQUssQ0FBQyxDQUFDO2dCQUNMLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFDRCxLQUFLLENBQUMsQ0FBQztnQkFDTCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQyxDQUFDO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUM7QUFFTDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUNwRCxzQkFBc0IsRUFDdEIsaUNBQWlDLENBQ2xDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5pbXBvcnQgdHlwZSB7IFMzQ2xpZW50Q29uZmlnIH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zM1wiO1xuaW1wb3J0IHsgQ29udGV4dCwgRWZmZWN0LCBMYXllciwgUnVudGltZSB9IGZyb20gXCJlZmZlY3RcIjtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSB0YWdzXG4gKi9cbmV4cG9ydCBjbGFzcyBTM0NsaWVudEluc3RhbmNlQ29uZmlnIGV4dGVuZHMgQ29udGV4dC5UYWcoXG4gIFwiQGVmZmVjdC1hd3MvY2xpZW50LXMzL1MzQ2xpZW50SW5zdGFuY2VDb25maWdcIixcbik8UzNDbGllbnRJbnN0YW5jZUNvbmZpZywgUzNDbGllbnRDb25maWc+KCkge31cblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBjb25zdHJ1Y3RvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IG1ha2VEZWZhdWx0UzNDbGllbnRJbnN0YW5jZUNvbmZpZzogRWZmZWN0LkVmZmVjdDxTM0NsaWVudENvbmZpZz4gPVxuICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoXykge1xuICAgIGNvbnN0IHJ1bnRpbWUgPSB5aWVsZCogXyhFZmZlY3QucnVudGltZTxuZXZlcj4oKSk7XG4gICAgY29uc3QgcnVuU3luYyA9IFJ1bnRpbWUucnVuU3luYyhydW50aW1lKTtcblxuICAgIHJldHVybiB7XG4gICAgICBsb2dnZXI6IHtcbiAgICAgICAgaW5mbyhtKSB7XG4gICAgICAgICAgRWZmZWN0LmxvZ0luZm8obSkucGlwZShydW5TeW5jKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2FybihtKSB7XG4gICAgICAgICAgRWZmZWN0LmxvZ1dhcm5pbmcobSkucGlwZShydW5TeW5jKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3IobSkge1xuICAgICAgICAgIEVmZmVjdC5sb2dFcnJvcihtKS5waXBlKHJ1blN5bmMpO1xuICAgICAgICB9LFxuICAgICAgICBkZWJ1ZyhtKSB7XG4gICAgICAgICAgRWZmZWN0LmxvZ0RlYnVnKG0pLnBpcGUocnVuU3luYyk7XG4gICAgICAgIH0sXG4gICAgICAgIHRyYWNlKG0pIHtcbiAgICAgICAgICBFZmZlY3QubG9nVHJhY2UobSkucGlwZShydW5TeW5jKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBEZWZhdWx0UzNDbGllbnRDb25maWdMYXllciA9IExheWVyLmVmZmVjdChcbiAgUzNDbGllbnRJbnN0YW5jZUNvbmZpZyxcbiAgbWFrZURlZmF1bHRTM0NsaWVudEluc3RhbmNlQ29uZmlnLFxuKTtcbiJdfQ==