@gitpod/gitpod-protocol 0.1.5-minor-updates.0 → 0.1.5-mp-docs-wsp-phase.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.
- package/data/gitpod-schema.json +53 -26
- package/lib/accounting-protocol.d.ts +3 -6
- package/lib/accounting-protocol.d.ts.map +1 -1
- package/lib/accounting-protocol.js +10 -16
- package/lib/accounting-protocol.js.map +1 -1
- package/lib/admin-protocol.d.ts +27 -4
- package/lib/admin-protocol.d.ts.map +1 -1
- package/lib/admin-protocol.js +15 -0
- package/lib/admin-protocol.js.map +1 -1
- package/lib/analytics.d.ts +44 -0
- package/lib/analytics.d.ts.map +1 -0
- package/lib/analytics.js +10 -0
- package/lib/analytics.js.map +1 -0
- package/lib/context-url.d.ts +31 -0
- package/lib/context-url.d.ts.map +1 -0
- package/lib/context-url.js +102 -0
- package/lib/context-url.js.map +1 -0
- package/lib/context-url.spec.d.ts +14 -0
- package/lib/context-url.spec.d.ts.map +1 -0
- package/lib/context-url.spec.js +94 -0
- package/lib/context-url.spec.js.map +1 -0
- package/lib/email-protocol.d.ts +1 -2
- package/lib/email-protocol.d.ts.map +1 -1
- package/lib/email-protocol.js +4 -4
- package/lib/email-protocol.js.map +1 -1
- package/lib/encryption/container-module.js +4 -4
- package/lib/encryption/container-module.js.map +1 -1
- package/lib/encryption/encryption-engine.js +19 -20
- package/lib/encryption/encryption-engine.js.map +1 -1
- package/lib/encryption/encryption-engine.spec.js +29 -36
- package/lib/encryption/encryption-engine.spec.js.map +1 -1
- package/lib/encryption/encryption-service.js +29 -43
- package/lib/encryption/encryption-service.js.map +1 -1
- package/lib/encryption/key-provider.js +25 -30
- package/lib/encryption/key-provider.js.map +1 -1
- package/lib/env.d.ts +1 -2
- package/lib/env.d.ts.map +1 -1
- package/lib/env.js +20 -21
- package/lib/env.js.map +1 -1
- package/lib/gitpod-file-parser.js +25 -41
- package/lib/gitpod-file-parser.js.map +1 -1
- package/lib/gitpod-file-parser.spec.js +116 -116
- package/lib/gitpod-file-parser.spec.js.map +1 -1
- package/lib/gitpod-service.d.ts +124 -30
- package/lib/gitpod-service.d.ts.map +1 -1
- package/lib/gitpod-service.js +167 -278
- package/lib/gitpod-service.js.map +1 -1
- package/lib/headless-workspace-log.d.ts +9 -11
- package/lib/headless-workspace-log.d.ts.map +1 -1
- package/lib/headless-workspace-log.js +5 -7
- package/lib/headless-workspace-log.js.map +1 -1
- package/lib/ide-protocol.d.ts +105 -0
- package/lib/ide-protocol.d.ts.map +1 -0
- package/lib/{util/without.js → ide-protocol.js} +2 -2
- package/lib/ide-protocol.js.map +1 -0
- package/lib/index.d.ts +6 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +6 -0
- package/lib/index.js.map +1 -1
- package/lib/installation-admin-protocol.d.ts +27 -0
- package/lib/installation-admin-protocol.d.ts.map +1 -0
- package/lib/installation-admin-protocol.js +30 -0
- package/lib/installation-admin-protocol.js.map +1 -0
- package/lib/messaging/browser/connection.d.ts +5 -3
- package/lib/messaging/browser/connection.d.ts.map +1 -1
- package/lib/messaging/browser/connection.js +183 -33
- package/lib/messaging/browser/connection.js.map +1 -1
- package/lib/messaging/browser/window-connection.js +35 -55
- package/lib/messaging/browser/window-connection.js.map +1 -1
- package/lib/messaging/client-call-metrics.d.ts +35 -0
- package/lib/messaging/client-call-metrics.d.ts.map +1 -0
- package/lib/messaging/client-call-metrics.js +83 -0
- package/lib/messaging/client-call-metrics.js.map +1 -0
- package/lib/messaging/error.d.ts +3 -1
- package/lib/messaging/error.d.ts.map +1 -1
- package/lib/messaging/error.js +6 -2
- package/lib/messaging/error.js.map +1 -1
- package/lib/messaging/handler.d.ts +10 -0
- package/lib/messaging/handler.d.ts.map +1 -1
- package/lib/messaging/node/connection.d.ts +1 -17
- package/lib/messaging/node/connection.d.ts.map +1 -1
- package/lib/messaging/node/connection.js +23 -59
- package/lib/messaging/node/connection.js.map +1 -1
- package/lib/messaging/proxy-factory.d.ts +2 -0
- package/lib/messaging/proxy-factory.d.ts.map +1 -1
- package/lib/messaging/proxy-factory.js +74 -159
- package/lib/messaging/proxy-factory.js.map +1 -1
- package/lib/oss-allowlist.d.ts +14 -0
- package/lib/oss-allowlist.d.ts.map +1 -0
- package/lib/oss-allowlist.js +8 -0
- package/lib/oss-allowlist.js.map +1 -0
- package/lib/permission.d.ts +8 -1
- package/lib/permission.d.ts.map +1 -1
- package/lib/permission.js +36 -15
- package/lib/permission.js.map +1 -1
- package/lib/plans.d.ts +210 -0
- package/lib/plans.d.ts.map +1 -0
- package/lib/plans.js +570 -0
- package/lib/plans.js.map +1 -0
- package/lib/protocol.d.ts +152 -76
- package/lib/protocol.d.ts.map +1 -1
- package/lib/protocol.js +139 -131
- package/lib/protocol.js.map +1 -1
- package/lib/snapshot-url.d.ts +14 -0
- package/lib/snapshot-url.d.ts.map +1 -0
- package/lib/snapshot-url.js +26 -0
- package/lib/snapshot-url.js.map +1 -0
- package/{src/util/without.ts → lib/snapshot-url.spec.d.ts} +2 -3
- package/lib/snapshot-url.spec.d.ts.map +1 -0
- package/lib/snapshot-url.spec.js +41 -0
- package/lib/snapshot-url.spec.js.map +1 -0
- package/lib/team-subscription-protocol.d.ts +6 -4
- package/lib/team-subscription-protocol.d.ts.map +1 -1
- package/lib/team-subscription-protocol.js +15 -12
- package/lib/team-subscription-protocol.js.map +1 -1
- package/lib/teams-projects-protocol.d.ts +113 -0
- package/lib/teams-projects-protocol.d.ts.map +1 -0
- package/lib/teams-projects-protocol.js +30 -0
- package/lib/teams-projects-protocol.js.map +1 -0
- package/lib/util/analytics.d.ts +8 -0
- package/lib/util/analytics.d.ts.map +1 -0
- package/lib/util/analytics.js +88 -0
- package/lib/util/analytics.js.map +1 -0
- package/lib/util/async-iterator.js +55 -133
- package/lib/util/async-iterator.js.map +1 -1
- package/lib/util/cancelable.js +17 -59
- package/lib/util/cancelable.js.map +1 -1
- package/lib/util/date-time.js +8 -8
- package/lib/util/date-time.js.map +1 -1
- package/lib/util/deferred.js +10 -12
- package/lib/util/deferred.js.map +1 -1
- package/lib/util/disposable.js +26 -39
- package/lib/util/disposable.js.map +1 -1
- package/lib/util/event.js +58 -74
- package/lib/util/event.js.map +1 -1
- package/lib/util/garbage-collected-cache.d.ts +1 -0
- package/lib/util/garbage-collected-cache.d.ts.map +1 -1
- package/lib/util/garbage-collected-cache.js +26 -46
- package/lib/util/garbage-collected-cache.js.map +1 -1
- package/lib/util/generate-workspace-id.d.ts +1 -1
- package/lib/util/generate-workspace-id.d.ts.map +1 -1
- package/lib/util/generate-workspace-id.js +31 -68
- package/lib/util/generate-workspace-id.js.map +1 -1
- package/lib/util/generate-workspace-id.spec.js +57 -78
- package/lib/util/generate-workspace-id.spec.js.map +1 -1
- package/lib/util/gitpod-cookie.d.ts +20 -0
- package/lib/util/gitpod-cookie.d.ts.map +1 -0
- package/lib/util/gitpod-cookie.js +44 -0
- package/lib/util/gitpod-cookie.js.map +1 -0
- package/lib/util/gitpod-host-url.d.ts +1 -2
- package/lib/util/gitpod-host-url.d.ts.map +1 -1
- package/lib/util/gitpod-host-url.js +95 -98
- package/lib/util/gitpod-host-url.js.map +1 -1
- package/lib/util/gitpod-host-url.spec.d.ts +7 -1
- package/lib/util/gitpod-host-url.spec.d.ts.map +1 -1
- package/lib/util/gitpod-host-url.spec.js +103 -31
- package/lib/util/gitpod-host-url.spec.js.map +1 -1
- package/lib/util/grpc.d.ts +15 -0
- package/lib/util/grpc.d.ts.map +1 -0
- package/lib/util/grpc.js +18 -0
- package/lib/util/grpc.js.map +1 -0
- package/lib/util/jaeger-client-types.d.ts +68 -0
- package/lib/util/jaeger-client-types.d.ts.map +1 -0
- package/lib/{theia-plugins.js → util/jaeger-client-types.js} +1 -1
- package/lib/util/jaeger-client-types.js.map +1 -0
- package/lib/util/logging.d.ts +49 -33
- package/lib/util/logging.d.ts.map +1 -1
- package/lib/util/logging.js +107 -110
- package/lib/util/logging.js.map +1 -1
- package/lib/util/make-link.js +2 -2
- package/lib/util/make-link.js.map +1 -1
- package/lib/util/parse-workspace-id.d.ts +10 -0
- package/lib/util/parse-workspace-id.d.ts.map +1 -1
- package/lib/util/parse-workspace-id.js +31 -7
- package/lib/util/parse-workspace-id.js.map +1 -1
- package/lib/util/parse-workspace-id.spec.d.ts +4 -0
- package/lib/util/parse-workspace-id.spec.d.ts.map +1 -1
- package/lib/util/parse-workspace-id.spec.js +123 -84
- package/lib/util/parse-workspace-id.spec.js.map +1 -1
- package/lib/util/queue.js +16 -55
- package/lib/util/queue.js.map +1 -1
- package/lib/util/queue.spec.js +144 -288
- package/lib/util/queue.spec.js.map +1 -1
- package/lib/util/repeat.d.ts +15 -0
- package/lib/util/repeat.d.ts.map +1 -0
- package/lib/util/repeat.js +55 -0
- package/lib/util/repeat.js.map +1 -0
- package/lib/util/semaphore.js +15 -46
- package/lib/util/semaphore.js.map +1 -1
- package/lib/util/skip-if.js +6 -6
- package/lib/util/skip-if.js.map +1 -1
- package/lib/util/timeutil.js +16 -16
- package/lib/util/timeutil.js.map +1 -1
- package/lib/util/timeutil.spec.js +21 -24
- package/lib/util/timeutil.spec.js.map +1 -1
- package/lib/util/tracing.d.ts +51 -5
- package/lib/util/tracing.d.ts.map +1 -1
- package/lib/util/tracing.js +197 -62
- package/lib/util/tracing.js.map +1 -1
- package/lib/util/tracing.spec.d.ts +7 -0
- package/lib/util/tracing.spec.d.ts.map +1 -0
- package/lib/util/tracing.spec.js +121 -0
- package/lib/util/tracing.spec.js.map +1 -0
- package/lib/util/workspace-port-authentication.js +2 -2
- package/lib/util/workspace-port-authentication.js.map +1 -1
- package/lib/workspace-cluster.d.ts +76 -0
- package/lib/workspace-cluster.d.ts.map +1 -0
- package/lib/workspace-cluster.js +33 -0
- package/lib/workspace-cluster.js.map +1 -0
- package/lib/workspace-instance.d.ts +26 -4
- package/lib/workspace-instance.d.ts.map +1 -1
- package/lib/wsready.d.ts +1 -1
- package/lib/wsready.js +2 -2
- package/package.json +31 -17
- package/pkg-yarn.lock +17 -9
- package/provenance-bundle.jsonl +2 -0
- package/src/accounting-protocol.ts +4 -10
- package/src/admin-protocol.ts +48 -5
- package/src/analytics.ts +52 -0
- package/src/context-url.spec.ts +53 -0
- package/src/context-url.ts +107 -0
- package/src/email-protocol.ts +2 -3
- package/src/env.ts +10 -10
- package/src/gitpod-service.ts +181 -53
- package/src/headless-workspace-log.ts +8 -11
- package/src/ide-frontend-service.ts +1 -1
- package/src/ide-protocol.ts +119 -0
- package/src/index.ts +7 -1
- package/src/installation-admin-protocol.ts +42 -0
- package/src/messaging/browser/connection.ts +195 -14
- package/src/messaging/client-call-metrics.ts +97 -0
- package/src/messaging/error.ts +8 -2
- package/src/messaging/handler.ts +12 -0
- package/src/messaging/node/connection.ts +21 -68
- package/src/messaging/proxy-factory.ts +13 -5
- package/src/oss-allowlist.ts +15 -0
- package/src/permission.ts +24 -4
- package/src/plans.ts +632 -0
- package/src/protocol.ts +245 -112
- package/src/snapshot-url.spec.ts +25 -0
- package/src/snapshot-url.ts +27 -0
- package/src/team-subscription-protocol.ts +9 -5
- package/src/teams-projects-protocol.ts +147 -0
- package/src/util/analytics.ts +105 -0
- package/src/util/garbage-collected-cache.ts +9 -3
- package/src/util/generate-workspace-id.spec.ts +20 -3
- package/src/util/generate-workspace-id.ts +22 -2
- package/src/util/gitpod-cookie.ts +39 -0
- package/src/util/gitpod-host-url.spec.ts +25 -1
- package/src/util/gitpod-host-url.ts +22 -13
- package/src/util/grpc.ts +15 -0
- package/src/util/jaeger-client-types.ts +102 -0
- package/src/util/logging.ts +102 -38
- package/src/util/parse-workspace-id.spec.ts +21 -1
- package/src/util/parse-workspace-id.ts +32 -6
- package/src/util/repeat.ts +45 -0
- package/src/util/semaphore.ts +2 -2
- package/src/util/skip-if.ts +1 -1
- package/src/util/timeutil.ts +4 -4
- package/src/util/tracing.spec.ts +83 -0
- package/src/util/tracing.ts +183 -17
- package/src/workspace-cluster.ts +104 -0
- package/src/workspace-instance.ts +66 -30
- package/src/wsready.ts +2 -2
- package/data/builtin-theia-plugins.json +0 -372
- package/lib/messaging/connection-error-handler.d.ts +0 -27
- package/lib/messaging/connection-error-handler.d.ts.map +0 -1
- package/lib/messaging/connection-error-handler.js +0 -46
- package/lib/messaging/connection-error-handler.js.map +0 -1
- package/lib/theia-plugins.d.ts +0 -11
- package/lib/theia-plugins.d.ts.map +0 -1
- package/lib/theia-plugins.js.map +0 -1
- package/lib/util/context-url.d.ts +0 -13
- package/lib/util/context-url.d.ts.map +0 -1
- package/lib/util/context-url.js +0 -26
- package/lib/util/context-url.js.map +0 -1
- package/lib/util/context-url.spec.d.ts +0 -10
- package/lib/util/context-url.spec.d.ts.map +0 -1
- package/lib/util/context-url.spec.js +0 -52
- package/lib/util/context-url.spec.js.map +0 -1
- package/lib/util/repeater.d.ts +0 -22
- package/lib/util/repeater.d.ts.map +0 -1
- package/lib/util/repeater.js +0 -118
- package/lib/util/repeater.js.map +0 -1
- package/lib/util/safe-promise.d.ts +0 -11
- package/lib/util/safe-promise.d.ts.map +0 -1
- package/lib/util/safe-promise.js +0 -34
- package/lib/util/safe-promise.js.map +0 -1
- package/lib/util/without.d.ts +0 -7
- package/lib/util/without.d.ts.map +0 -1
- package/lib/util/without.js.map +0 -1
- package/src/messaging/connection-error-handler.ts +0 -62
- package/src/theia-plugins.ts +0 -11
- package/src/util/context-url.spec.ts +0 -25
- package/src/util/context-url.ts +0 -23
- package/src/util/jaeger-client.d.ts +0 -105
- package/src/util/repeater.ts +0 -49
- package/src/util/safe-promise.ts +0 -26
|
@@ -10,6 +10,7 @@ export interface WorkspaceInstance {
|
|
|
10
10
|
creationTime: string;
|
|
11
11
|
deployedTime?: string;
|
|
12
12
|
startedTime?: string;
|
|
13
|
+
stoppingTime?: string;
|
|
13
14
|
stoppedTime?: string;
|
|
14
15
|
ideUrl: string;
|
|
15
16
|
region: string;
|
|
@@ -17,6 +18,10 @@ export interface WorkspaceInstance {
|
|
|
17
18
|
status: WorkspaceInstanceStatus;
|
|
18
19
|
configuration?: WorkspaceInstanceConfiguration;
|
|
19
20
|
readonly deleted?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Contains information about the image build, if there was any
|
|
23
|
+
*/
|
|
24
|
+
imageBuildInfo?: ImageBuildInfo;
|
|
20
25
|
}
|
|
21
26
|
export interface WorkspaceInstanceStatus {
|
|
22
27
|
phase: WorkspaceInstancePhase;
|
|
@@ -35,16 +40,16 @@ export interface WorkspaceInstanceConditions {
|
|
|
35
40
|
failed?: string;
|
|
36
41
|
timeout?: string;
|
|
37
42
|
pullingImages?: boolean;
|
|
38
|
-
serviceExists?: boolean;
|
|
39
43
|
deployed?: boolean;
|
|
40
44
|
neededImageBuild?: boolean;
|
|
41
45
|
firstUserActivity?: string;
|
|
46
|
+
headlessTaskFailed?: string;
|
|
47
|
+
stoppedByRequest?: boolean;
|
|
42
48
|
}
|
|
43
|
-
export declare type AdmissionLevel =
|
|
44
|
-
export declare type PortVisibility =
|
|
49
|
+
export declare type AdmissionLevel = "owner_only" | "everyone";
|
|
50
|
+
export declare type PortVisibility = "public" | "private";
|
|
45
51
|
export interface WorkspaceInstancePort {
|
|
46
52
|
port: number;
|
|
47
|
-
targetPort?: number;
|
|
48
53
|
visibility?: PortVisibility;
|
|
49
54
|
url?: string;
|
|
50
55
|
}
|
|
@@ -62,5 +67,22 @@ export interface WorkspaceInstanceConfiguration {
|
|
|
62
67
|
theiaVersion?: string;
|
|
63
68
|
featureFlags?: NamedWorkspaceFeatureFlag[];
|
|
64
69
|
ideImage: string;
|
|
70
|
+
desktopIdeImage?: string;
|
|
71
|
+
supervisorImage?: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Holds information about the image build (if there was one) for this WorkspaceInstance
|
|
75
|
+
*/
|
|
76
|
+
export interface ImageBuildInfo {
|
|
77
|
+
log?: ImageBuildLogInfo;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Holds information about how to access logs for this an image build
|
|
81
|
+
*/
|
|
82
|
+
export interface ImageBuildLogInfo {
|
|
83
|
+
url: string;
|
|
84
|
+
headers: {
|
|
85
|
+
[key: string]: string;
|
|
86
|
+
};
|
|
65
87
|
}
|
|
66
88
|
//# sourceMappingURL=workspace-instance.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-instance.d.ts","sourceRoot":"","sources":["../src/workspace-instance.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAGvD,MAAM,WAAW,iBAAiB;IAE9B,EAAE,EAAE,MAAM,CAAC;IAGX,WAAW,EAAE,MAAM,CAAC;IAGpB,YAAY,EAAE,MAAM,CAAC;IAGrB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"workspace-instance.d.ts","sourceRoot":"","sources":["../src/workspace-instance.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAGvD,MAAM,WAAW,iBAAiB;IAE9B,EAAE,EAAE,MAAM,CAAC;IAGX,WAAW,EAAE,MAAM,CAAC;IAGpB,YAAY,EAAE,MAAM,CAAC;IAGrB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAIrB,MAAM,EAAE,MAAM,CAAC;IAIf,MAAM,EAAE,MAAM,CAAC;IAIf,cAAc,EAAE,MAAM,CAAC;IAGvB,MAAM,EAAE,uBAAuB,CAAC;IAKhC,aAAa,CAAC,EAAE,8BAA8B,CAAC;IAG/C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;CACnC;AAGD,MAAM,WAAW,uBAAuB;IAEpC,KAAK,EAAE,sBAAsB,CAAC;IAG9B,UAAU,EAAE,2BAA2B,CAAC;IAGxC,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,YAAY,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAGvC,IAAI,CAAC,EAAE,2BAA2B,CAAC;IAGnC,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAGD,oBAAY,sBAAsB,GAG5B,SAAS,GAIT,WAAW,GAKX,SAAS,GAKT,UAAU,GAIV,cAAc,GAId,SAAS,GAIT,aAAa,GAGb,UAAU,GAGV,SAAS,CAAC;AAEhB,MAAM,WAAW,2BAA2B;IAGxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,aAAa,CAAC,EAAE,OAAO,CAAC;IAGxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAG3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAM3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAG5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAGD,oBAAY,cAAc,GAAG,YAAY,GAAG,UAAU,CAAC;AAGvD,oBAAY,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;AAGlD,MAAM,WAAW,qBAAqB;IAElC,IAAI,EAAE,MAAM,CAAC;IAGb,UAAU,CAAC,EAAE,cAAc,CAAC;IAG5B,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,WAAW,2BAA2B;IAExC,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAG3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAG9B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAG1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAG7B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAG3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACjC;AAGD,MAAM,WAAW,8BAA8B;IAG3C,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,YAAY,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAG3C,QAAQ,EAAE,MAAM,CAAC;IAGjB,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,GAAG,CAAC,EAAE,iBAAiB,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACtC"}
|
package/lib/wsready.d.ts
CHANGED
package/lib/wsready.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Copyright (c)
|
|
3
|
+
* Copyright (c) 2022 Gitpod GmbH. All rights reserved.
|
|
4
4
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
5
5
|
* See License-AGPL.txt in the project root for license information.
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
exports.WorkspaceInitSource = void 0;
|
|
9
|
-
// generated using github.com/32leaves/bel on
|
|
9
|
+
// generated using github.com/32leaves/bel on 2022-02-15 11:53:18.380158212 +0000 UTC m=+0.011913675
|
|
10
10
|
// DO NOT MODIFY
|
|
11
11
|
var WorkspaceInitSource;
|
|
12
12
|
(function (WorkspaceInitSource) {
|
package/package.json
CHANGED
|
@@ -1,40 +1,54 @@
|
|
|
1
1
|
{
|
|
2
2
|
"dependencies": {
|
|
3
|
+
"@types/react": "17.0.32",
|
|
3
4
|
"ajv": "^6.5.4",
|
|
4
|
-
"
|
|
5
|
-
"
|
|
5
|
+
"analytics-node": "^4.0.1",
|
|
6
|
+
"cookie": "^0.4.2",
|
|
7
|
+
"inversify": "^5.1.1",
|
|
8
|
+
"jaeger-client": "^3.18.1",
|
|
6
9
|
"js-yaml": "^3.10.0",
|
|
7
|
-
"opentracing": "^0.14.
|
|
8
|
-
"prom-client": "^
|
|
10
|
+
"opentracing": "^0.14.5",
|
|
11
|
+
"prom-client": "^13.2.0",
|
|
9
12
|
"random-number-csprng": "^1.0.2",
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
+
"react": "17.0.2",
|
|
14
|
+
"react-dom": "17.0.2",
|
|
15
|
+
"reconnecting-websocket": "^4.4.0",
|
|
16
|
+
"reflect-metadata": "^0.1.13",
|
|
17
|
+
"uuid": "^8.3.2",
|
|
18
|
+
"vscode-jsonrpc": "^5.0.1",
|
|
19
|
+
"vscode-languageserver-protocol": "3.16.0",
|
|
20
|
+
"vscode-languageserver-types": "3.16.0",
|
|
13
21
|
"vscode-uri": "^1.0.1",
|
|
14
22
|
"vscode-ws-jsonrpc": "^0.2.0",
|
|
15
|
-
"ws": "^
|
|
23
|
+
"ws": "^7.4.6"
|
|
16
24
|
},
|
|
17
25
|
"devDependencies": {
|
|
18
|
-
"@types/
|
|
26
|
+
"@types/analytics-node": "^3.1.5",
|
|
27
|
+
"@types/chai-subset": "^1.3.3",
|
|
28
|
+
"@types/cookie": "^0.4.1",
|
|
29
|
+
"@types/jaeger-client": "^3.18.3",
|
|
19
30
|
"@types/js-yaml": "^3.10.1",
|
|
31
|
+
"@types/mocha": "^5.2.7",
|
|
32
|
+
"@types/node": "^16.11.6",
|
|
20
33
|
"@types/random-number-csprng": "^1.0.0",
|
|
21
|
-
"@types/uuid": "^3.
|
|
34
|
+
"@types/uuid": "^8.3.1",
|
|
22
35
|
"@types/ws": "^5.1.2",
|
|
23
|
-
"chai": "^4.
|
|
36
|
+
"chai": "^4.3.4",
|
|
24
37
|
"chai-subset": "^1.6.0",
|
|
25
38
|
"mocha": "^5.0.0",
|
|
26
39
|
"mocha-typescript": "^1.1.11",
|
|
27
40
|
"rimraf": "^2.6.2",
|
|
28
41
|
"ts-node": "^9.0.0",
|
|
29
|
-
"typescript": "~4.
|
|
30
|
-
"typescript-json-schema": "^0.
|
|
42
|
+
"typescript": "~4.4.2",
|
|
43
|
+
"typescript-json-schema": "^0.50.1",
|
|
31
44
|
"typescript-parser": "^2.6.1"
|
|
32
45
|
},
|
|
33
46
|
"files": [
|
|
34
47
|
"lib",
|
|
35
48
|
"data/*.json",
|
|
36
49
|
"src",
|
|
37
|
-
"pkg-yarn.lock"
|
|
50
|
+
"pkg-yarn.lock",
|
|
51
|
+
"provenance-bundle.jsonl"
|
|
38
52
|
],
|
|
39
53
|
"license": "UNLICENSED",
|
|
40
54
|
"main": "./lib/index.js",
|
|
@@ -43,9 +57,9 @@
|
|
|
43
57
|
"build": "tsc",
|
|
44
58
|
"clean": "rimraf lib",
|
|
45
59
|
"prepare": "yarn run clean && yarn run build",
|
|
46
|
-
"test": "mocha --opts mocha.opts '
|
|
60
|
+
"test": "mocha --opts mocha.opts './**/*.spec.ts' --exclude './node_modules/**'",
|
|
47
61
|
"watch": "leeway exec --package .:lib --transitive-dependencies --filter-type yarn --components --parallel -- tsc -w --preserveWatchOutput"
|
|
48
62
|
},
|
|
49
63
|
"types": "./lib/index.d.ts",
|
|
50
|
-
"version": "0.1.5-
|
|
51
|
-
}
|
|
64
|
+
"version": "0.1.5-mp-docs-wsp-phase.0"
|
|
65
|
+
}
|
package/pkg-yarn.lock
CHANGED
|
@@ -4,19 +4,27 @@
|
|
|
4
4
|
|
|
5
5
|
"@gitpod/gitpod-protocol@0.1.5":
|
|
6
6
|
version "0.1.5"
|
|
7
|
-
resolved "file:///tmp/cache/
|
|
7
|
+
resolved "file:///tmp/cache/9954d1fe380eb1dc3c1d9868fb5f70f88361cba4.tar.gz"
|
|
8
8
|
dependencies:
|
|
9
|
+
"@types/react" "17.0.32"
|
|
9
10
|
ajv "^6.5.4"
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
analytics-node "^4.0.1"
|
|
12
|
+
cookie "^0.4.2"
|
|
13
|
+
inversify "^5.1.1"
|
|
14
|
+
jaeger-client "^3.18.1"
|
|
12
15
|
js-yaml "^3.10.0"
|
|
13
|
-
opentracing "^0.14.
|
|
14
|
-
prom-client "^
|
|
16
|
+
opentracing "^0.14.5"
|
|
17
|
+
prom-client "^13.2.0"
|
|
15
18
|
random-number-csprng "^1.0.2"
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
react "17.0.2"
|
|
20
|
+
react-dom "17.0.2"
|
|
21
|
+
reconnecting-websocket "^4.4.0"
|
|
22
|
+
reflect-metadata "^0.1.13"
|
|
23
|
+
uuid "^8.3.2"
|
|
24
|
+
vscode-jsonrpc "^5.0.1"
|
|
25
|
+
vscode-languageserver-protocol "3.16.0"
|
|
26
|
+
vscode-languageserver-types "3.16.0"
|
|
19
27
|
vscode-uri "^1.0.1"
|
|
20
28
|
vscode-ws-jsonrpc "^0.2.0"
|
|
21
|
-
ws "^
|
|
29
|
+
ws "^7.4.6"
|
|
22
30
|
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
{"payloadType":"application/vnd.in-toto+json","payload":"ewogICJfdHlwZSI6ICJodHRwczovL2luLXRvdG8uaW8vU3RhdGVtZW50L3YwLjEiLAogICJwcmVkaWNhdGVUeXBlIjogImh0dHBzOi8vc2xzYS5kZXYvcHJvdmVuYW5jZS92MC4xIiwKICAic3ViamVjdCI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2QtZmlsZS1wYXJzZXIuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE2MTE0NzMzN2E1YmY2ZWVkODQyZTZhNGNiMDBkY2M1OGEzYzUzNWUxNTQ1NDQ4ODVkYWJkOWI2MmUwMWY2ZDQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9za2lwLWlmLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImIzNDk5YTQ3MThiNzFlNWYxODc1OGM2NDg4YTJkM2E1ZmZkZGIxNzg3ZDM3YWJkOWQxYjdiNzQ2Y2UwYTA3Y2EiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvc25hcHNob3QtdXJsLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJhNDRhMjY1Y2U2MWQ2YTlkODg3NzMyN2NmMDMxNDAxMTk2ZTNmMmE1Nzk5ZjU1NTY1NzY2MDZjODBmZDJkOGMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2hhbmRsZXIuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODlhMDY2ZTc5ZDRlZjhmYWQ0N2ViNjllZjkxMWVmOTAwMzljNzJlZDE2ODg4YzhkNDFjMDRmYTI2YTFkYjY5NSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1ob3N0LXVybC5zcGVjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjNTg3ZDQ4NGUwNjU3YTA4MDNhZWZhYmU1MDcyN2NlYzgwM2ZiZTM0OWM1MWM5MDU3ZTM0MGMwZWU0YWQ4YjAwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1lbmdpbmUuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwYzZhZDI1NWM3Y2NkOWM0NWZlNDFiMzU3OTM3YmZhMzY0NjUwMGI2MGExNTZiZDJlYmU2YzQyNTZjMDM4YTcxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIveWFybi5sb2NrIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjUzYzI4OWQzNjQ2MWIwYTRiMTNkZDdlMjA0NjFjYmZlMGNlMTE0OGRkNjMzZWVhZjczNGRhY2EyMzdiNGNhODMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90cmFjaW5nLnNwZWMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1ZDQwYTU0YmFkMjM4YTYyNzM4YWEwNGZlNDg2N2NjMGM4MTNkOWMxYWFiMjBhMWUyOGFhOThlYjZiMDUxMTBmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24va2V5LXByb3ZpZGVyLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiY2FlZWFlZTg4Y2Q3YjE2Mjk3Nzk0OGM1NGNhNzNiOTMxY2RmODNmMDA5ZjFiN2UwZTNiNjYzYTYxMjAyY2FjOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dhcmJhZ2UtY29sbGVjdGVkLWNhY2hlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjUwZGRmMWIzYzUyYzNmN2VjY2ZkYjI2ZGVkYzgxOTBkOTAxMmFkODgyYmM5MzNiOGNlNWNmNmMzNjI5YTA0MWEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaW5zdGFsbGF0aW9uLWFkbWluLXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjFkMTM0ZGE5NTA3MzNkMWI0MGI5NDhhOWY2YmE0YmFkOTU0OTc3YjJhNGM2MTM0NDZjNjhhZmYwMTlhMzJiZTkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbGljZW5zZS1wcm90b2NvbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmNGVhZjA5ZTI1Y2RiNDYwMzljZmQwNmY2Y2ExMWY5M2FmMDdjYmZmYjZjM2Y2ZmY5YTk1NDg5NjVhY2UwNDYyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2luZGV4LmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4OGNiNTU5Zjc3NjBhOTk2NzE5YTkyMmIwMmEzZGI1YzE0ZDlkN2I0OWVhZTNkNzhmYzk2M2JmNmI5ODRhNWIxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvYW5hbHl0aWNzLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhMGZmNzA3MGEwY2FiYjBhZWUzOGQ1NjA3Y2JlMDBkZGM0ZjY5N2M1OTBmNTZjOTczZGM5NGY5ODlhNjE1MTgzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGF0ZS10aW1lLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY4NzhiZWIwZjdjZWYyZmE4OTI2NjU1ZTVjNTk5MGMwOWE2YjljODBjMDQxNjYxMDI0YmIwYjBiZjIyYzhhMTkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nZW5lcmF0ZS13b3Jrc3BhY2UtaWQuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwMDY3ZGM4MzBiMmE1ZGUwZDUyZTc0ZTMyMzgxMjdlNjc5YTkzNmUwYTc3MGFhY2JjZTY2MTYyYjIyMDAzMTRiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2VuZXJhdGUtd29ya3NwYWNlLWlkLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjAyNGU0MjQ4Y2E0MGM0YmVhY2EyZDliMTVlM2M3NzY5MmY5ZDE4ZGEyOWU3MmQ2YzQzOTcwZmUzMWIxMDkzYjUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2NsaWVudC1jYWxsLW1ldHJpY3MuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwNjQ4ZTYyNTIzODAzNGRiYmEyNDJlOWJiOWJiOWIwNjIzMmQ3N2MzOGE1MTdmYmZlYjg3NzNjMmQwYmYyNzczIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvY2FuY2VsYWJsZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmM2JhY2I2ODJjOTBjZjgwZWVhMjJlZWI4NzQyOTA5OTEwMzM1MGNiM2U2ZWU5YWRjMzlmYzEwNTk4NTM4YTliIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9lcnJvci5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjRiYmJjZGJkMTk1NGIxNDQ0N2QxMjY0NzNiYzQxYmIwM2MxMmVmZTllMjYxMDFjMjU0YTg2MTdhNTgxYzljZWUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaWRlLXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE5OGZlMGVmYjMyZjA3NzQ1YTZmYzJmZDUzNGUxMWNiNTgzMGU3NWU2ZjdhYjYzYjhhMThjOWFlZWVlOWQ3MWYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9rZXktcHJvdmlkZXIuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2U0MjRiMTYzMDM2Y2E1MmU4ZmU2NzgzZTNlMmJjNzExYzE5MWNlMzBlNjYzMTVkMWM1YzU2ZDdhN2QwNTVlYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9zbmFwc2hvdC11cmwuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjVhYjhkMDhhMzdiNDYyNzY4MGI5MjY2YWNiMTlhNTY4ZWRlMzgyNmFlNDNmZmUxMjY0ODRiNjlmNzhlNjc1N2YiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLWVuZ2luZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyNDFjZmFhMjA2M2VlMGM5ZmZjYmRhYjcwNTMyY2Y3ZTNjMmQ2ZjRhMWVjMmI2NmFkMjBmMGQ5NWVlMjRhMTk0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2lkZS1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjhkMjYyN2E0ZmYyYzA4MWI4ZDQ3YmNjMzYwZmQ5YzU3ZjQ5NGI0ZThkM2YyNmIzN2U3OTM2M2Q2N2E2YzQxZTMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9tYWtlLWxpbmsuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2YThiYmY4ZGNlOWNmNTIyNzY5MWEwNmE0YmU3ZWI3NTZmODFkMTg0NWUxYTE4ZTU4MDljNjIzODllODQ4YjM5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2NvbnRleHQtdXJsLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjdjYzBhNjgyNWYzOTY0YzcwODA5ZTljNjkyYjIyNTVmYjMzYjZkYjUwZDU1MDE1ODZiYjdkOTIxMDM4MmM3NiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pbnN0YWxsYXRpb24tYWRtaW4tcHJvdG9jb2wuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQ2NWEyYmRjMjBiNjUzYmM1NDM0N2NhMzNkMzU4ZDIyMTIwMDg5ZTdjZTVjNWMxNmNhODEzMjIzOTFkYTA3MWEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW1haWwtcHJvdG9jb2wuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjJkYjEzZTUxNWUyY2IxOGFmZjhkNTZiMTc4MWMzYzM5NGI2ZjJlNmIxOTkyYWEwNjRmZWFkNjgyNDY2ZGI5YmEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaW5zdGFsbGF0aW9uLWFkbWluLXByb3RvY29sLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMzBiZWE1YzQ1ZWNiMTBhZmZjZDhiMjEwNzdhZDZmYzVmNGU1YjUyYjYwZThjNDBlYTBkMzI1ZjM2YTczNDcxZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9zbmFwc2hvdC11cmwuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjMmY1NmVlMGM3NTM5YzM5ZjY5NzFlZTlmYTgxYzA0NTBkZmY0NGFhM2YwMWQ2NjZjOGFkNjIyOWJkZjMzNDY1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL29zcy1hbGxvd2xpc3QuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjkxMDAyYWUzNGRmMjEzMWY2MDNkZWMyZmMxMzM5Njg5Nzk1YTEwYjdhYWE0ZWY2NzRlYjI4ZGVlN2UxYjNkMWIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9yZXBlYXQuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDk5MDU5MTVjY2E5NWExOWY1NGZkZmVkZjc3ZWRiMjEyNjVlNjA0ZmU4YmI2NTRmZmZlODdiMzIzMGVhNzg3MiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3BhcnNlLXdvcmtzcGFjZS1pZC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiOTA1OWFkYzM5ZmNiNTQyMTEzZDJjY2IyODc1MmQ4NjJiNWI2M2NlNWJhZTFkNmU4NTkzODUwNDNiOWE0ZTk3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZXZlbnQuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYzQ1MjNkNTlhMzVhZDU5Y2ExZTY5ZGVmMTlhOGYxYzAwYjA3YzJiZDQxYjE4ZWQ4NWMxMWYyYTVkNTgzYzQ4NCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wbGFucy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwNmQ2NGVlZDcwZDM3Nzg5OGM4YmY4ZjQxZmQzOGFmODNjOTg3YzgwNDU5NjgyMDI4NTZhMjBjNDVlMTJjNWIwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FjY291bnRpbmctcHJvdG9jb2wuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjhiODllOWRmYmEwZTM3ZTRlODUyMzU2YTNiOGIzNzI5YWFlZjJlOWIzYzU5MGE4MjAzMWFlMTc3YTdmZmViZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3JlcGVhdC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE3Y2E2MDM0Yjk1N2ZlMjg1Zjc2ZjFjZGM0NTIwNTk0OGRiZjlhNzMwMTE4YzMyOTI2MGZhZDM4NDk1N2ZlODYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYXV0aC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjViMzk4ZGU0OWNiNGRkMjVlZDIzNzM2ODMzMWQ3YzQyNWRiNTBjYjhlNmFkYmQ4MjhlZTNmMWYwYzAxM2VjNDkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYW5hbHl0aWNzLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjlmOGUyYzAyYjMzMmJjYWJmNGIwOWJlZjVhZWNiYzlkMTEzMWY3MTNkODJiNTc2NTVhN2Y0Nzg4NDI3OTczMGUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW1haWwtcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3MjYyYzc0MjYyMThjOTY3MDlhMmNjNjY4ZjEyN2UzYzg0ODEwMTRlNTA1OWQwNWFlMjkwN2M1ZTYxYmE2NjQ4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdGltZXV0aWwuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjc5N2Y4ZTk0NDZhODJlMzM1YTQzZmYyMWY0NDEwZTU2ZjU1NDg2OTAzYjFhOGVjNjE0YjA1YTFiZDdhNTM4MTQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLXNlcnZpY2UuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmMjU5MDg0MmRkNzY3ZWY5MDk1NzZiYmFiODExMDVmNTA0NTk0YjQ2ZWNiYTkyZDZiZmZkZGEwZTY2ZjBlMTA3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9icm93c2VyL3dpbmRvdy1jb25uZWN0aW9uLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGZhMzViOTlhMmI5NmVlN2MyYjQ4Y2YwOTAzOTUzZTYwMjkxM2UxODk5MmVhYjE2Y2ExYjg3MmM0MDIxNzY1YiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9jb250ZXh0LXVybC5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY4MWY5NGQ5N2Y3M2I0MDA2MTU3YjI4MzBhMmE0NmJkMmNjNTc3Y2Q3OWU2ZTY3MzQ4ZDQwMjNmMjk3N2ZiMzUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGF5bWVudC1wcm90b2NvbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4NTRlYjNlYzU1YmM4ZDc5ZThjNmU5MzNhYzQ0MTU3YmRiZWQzOGI2NmFkNzNiM2E0ZmRjYTRhYjQ2OTJlY2EwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdGltZXV0aWwuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhMDk5Nzk2OWFhYTQ3NTA2Mjg1YzE4MmRmYzU4OTgwOWRlYmVjNzUxZWE1Mjc2MzM1NjZhYmZmZmI3ZWJlNDMwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWhvc3QtdXJsLnNwZWMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyNGZhN2EwNjg2OWM3ODlkMjc0NmQ5OWViY2RjZGEyODgxYjU3MGUyOTk1Mjk3N2U2YjdlNGJhN2M1NGI1NWU1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FkbWluLXByb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhODJmZDE3NjJhNjk3ZWY1NGI4NWY3MmFjNTM0NTE2Y2JkNzJiYWQzNzkyM2UwMjg4ZTE0YzBmZTQ5ODk3MDhhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVlcC1wYXJ0aWFsLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkMWUwMTJhNzFiZjJmZGYwYjhlZDViYzA0YTQ0ZGE5Mjk2ZTg4YTM3YTAzOWFiNDc5Y2Q4ZWI2ZDMzMjk4ZjY3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2FyYmFnZS1jb2xsZWN0ZWQtY2FjaGUuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5OTU5MGFjMzVhZDQxMzliMzRiOTRmMmU1NGFmNzM4MGMzYTgzYjQxMDlhMTM5MWRjOTliMDhmZmJjZDU1MTA2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1zZXJ2aWNlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4Y2YwMDcyODBiNjMxZTdhNDI1OGFiYTE3MDYwZDJjYjdiYThmY2U3MDMyYTA4YmYwMTdjZTVlYzNkZTQ2MjNjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3R5cGluZ3MvZ2xvYmFscy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0YzcyZTM3MjNkYmQ5ZGY1MmNmZmU2OGNjYjhlOTdkMzY5ZWY3ZGIxYTIzYjVlNWUxNmNkOWM1YjcwNDMzOGY4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1maWxlLXBhcnNlci5zcGVjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3ZmZlZTc3NTY2ZGYzYTc5YzhjMDg4YWZhODRjODVlNGQ4NDA4NDAzODgxZTMyMzJmMjRhMTE2OGIwMzY0ZWE4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3BheW1lbnQtcHJvdG9jb2wuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGM3NzQxZGQzOTg0OTk3MmM5NWU5ZDFhNzlmNTVlYzg5Njk2ZGVjN2E0NzY5ZTFjZDY3YTQ1MTQ1YzY5MTBhZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2VuY3J5cHRpb24tZW5naW5lLnNwZWMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDdiMjFkOWNmMjNhZjU0ZDRkNTEyNjEyZjEyMTEzZWMyOTYwODM5ZjNkMmZjYmY5ZDE1N2Q5OTUzYjBhNGQ4YyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RyYWNpbmcuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZmI2MjA0MjRkNzBlMzg4MGIzMjQ5ZmM3Yjc4ZmFmOTk5NGNkYjVkNTQ2OTg5NDA0N2E5ZmYxMmFlOWMwNDQxZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9jb250ZXh0LXVybC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyMzNhYzU5MjBkYTI0NGI4NjMzODc0OTI0ZThlMzY4MDVmODhjNDgwZWI1MThiOWI2MGEzMjRjMjAzMThkN2VlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2Vudi5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOWQwMDgzOWFkYjFmMmNmYzFkMTFhZjQ1YWZmMzRlODQxMjNiZjYwZmRmMzEyZTNmNTE2N2VlMTU3ZjU4Y2E1OSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbnYuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3NDA1ZmY5OThhYmY5OGQ0MDFiMWU1NGVlOGM1N2JlMDUyN2Q2M2U1YmUyMjJkMDZmYTU4NDk2NDAzYTQ1NTlhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VtYWlsLXByb3RvY29sLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQzYTIxYzZkMGIzODY2ZDUwZDcxNTc1NWFmMzE5MmI1YjkzOTk4YWJjNjc3YTQxNjdkZGMzY2Q0YTE3ZDE4ZDMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL3Byb3h5LWZhY3RvcnkuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNTU4Y2E0MDExMjAzODkwZGFkMTFhOTA0NmZhYWMzNDFiNTQyYzM2ZDRmM2I1ODY2ZjQ1ZTQ0NjY0ZjY4MGQ4NSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dlbmVyYXRlLXdvcmtzcGFjZS1pZC5zcGVjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjMyN2Y4NjJjNTRlNzljZDZlODMzNjcyOGU2YmZhZmQ5YzcwNWU3OTEzYThkOWI0M2M3Yzk1OTM5ZTNiNzc5ZDIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2NsaWVudC1jYWxsLW1ldHJpY3MuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImU2MjU0MTY2NTg1MTAwMmY0ODUzMmE1Y2I4ODE5OWNiZDk2OWNlZTE1ODA1MWU1NDY1OGIwM2ZjZWNiYmM4ODEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxMzQzZjlhNWI4NmE3MzdmNjBiMTdjOTEzYWFiZGE2NDhlNWE3ZjgwNDk1N2M3OTdjNWFlNmVlMWU4NDc2ZTg3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9ub2RlL2Nvbm5lY3Rpb24uZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjZDQxODk5YWMyOWU3ZmI3ZTdjYTcxMTliM2QyYjdlMGQxNTM1MTA2NmMxNWFjMzlkMGJjNjk2ZjlmOGVkNmQ4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2FyYmFnZS1jb2xsZWN0ZWQtY2FjaGUuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI0MzQ0ZWVhNDc0ZmU5Nzk5ODdjOWJmZWY5NTFmYTM4OGRjNTJkZGU1ZTE1ZWZjY2ZhMjIwNmMxNzczZjEwZDYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9xdWV1ZS5zcGVjLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjFiMTliYTVmNmQ5OTNmY2NkNDdlYzZhNjc4ODA1NTMzNmE0MmU2OTIyZmE0Y2JlODljMmI0NzY1ZjMyMjFiMGIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYWRtaW4tcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDlhZmRlMDkwNGRlZTMxMTY0YzA2ZDA0YjY3ZWM3Y2Y0OTg2Y2RkMDNkYmY2ZDRkYjZhMWE2YmExNjhkZjc3MCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2V2ZW50LmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE3YTI3MzFkMzViYzYzYmM5ZDMzZTg3ZmNjYTM1N2Y2NzNkY2MzMGEwMDFjYzQ1MWRkOGEwZDA3YTZlOTE5OWMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaGVhZGxlc3Mtd29ya3NwYWNlLWxvZy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjBhMWJhYmJkZTEwOWNmMjA1ZGFmODA0NDlkMTU0YWU1Y2Y1NGU2ZWExNjU5MTRkNjZmMGQ2YzY0NWM2ZmE4NmQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtaG9zdC11cmwuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkZTJlYTA5ODhiZDA5NmU2OGRiNGEzZGZmMmYwNmMzOWVkNTk2YTMyZTEwM2FjYWI3NGNkNjFhNDNhOWYwMzM4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcGFyc2Utd29ya3NwYWNlLWlkLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTI2NWY2ODMzM2ViNDI4NzJmMmEyNDY0ZTAxNjRkZTViZjhmZmM0NDYxZGEzZWMxYTE5ZGE0NTQ5ZTQ3MjI2YSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvZXJyb3IuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjJiNmZhNWQzYjhiMzFiNjllOWY0OGE5YTIxMWQyNGNkODc4YTEwYjY5ZjIyMTViYjAxYmUyMjg0YzI0NmUyMDciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL3Byb3h5LWZhY3RvcnkuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZWVmODZmZDUzMDA4ZjQ0OGVhZDNmOTA0MGMxOGU3MDk1ZjdiYmIyOTU4MjE1Yzc3NmYyYzlmM2I0ZjNkMmFkYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wZXJtaXNzaW9uLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjI0NTlmZjFmMjFhMGJiMmZlMmE2YTAzZGNjNDI2NTI4NDYyOTdmOWVkMjY4MmI1NTZiZTQ4MTUxNDU5OTY2ZDUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kaXNwb3NhYmxlLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDgwOGZkMjc4MTBkY2E2ZjliMDY0NTZiZjEzMGVlMGViMWUyNzI2MmY2Y2EwYjYzNGYyZDUyYTU2NzZlYjc2YiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90eXBpbmdzL2dsb2JhbHMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxODY5NzFjNDhhNmQxNDYzZDhjODVhYjFkODc2ZmQ0MzdkMDcyMTg4NzY4MzE2Njc1OTQ1ZTk5MzM2NDdlZmYwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1zZXJ2aWNlLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDdmZTRlZjQxYzMxZDI2YzRlY2Y0NjFiMjZiZjhkMTcwMGY2OTM1NmU5YzRmYzUxNGIwMWE0MGMzNDA0NGI2MiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3F1ZXVlLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDliYWJjNWI0OTM2MDM5NzVkODhkYWZkZWM0ZWI5MTVmNTUxNGQ4ZjBhMjZiZjRkZjBiNjhiMDUwZTJiMzU2MyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2phZWdlci1jbGllbnQtdHlwZXMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZWZhMjMyMGE0NWQwNmQwZWI1MDM4ZTM4ZGZiY2I4OWZiNDMwZTFlMDZjZjQxZTdkMzI3ZDY1NjNmMmYyYzZjOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90eXBpbmdzL2dsb2JhbHMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjI3YWYxZjM1NTZkYmFkNzM1OGVkMjVjZGNhZTY1ZjEyYjUzOThjNjNiNWFmOWIzMzliNDRhZjc4ZDNhZWYyMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90ZWFtcy1wcm9qZWN0cy1wcm90b2NvbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxYTkzODYxZmVkMWZkMGVlM2JlZDk0NzAyYmYwZTRiNjg1ODAwNWNhNTY2NGMzMDBhNjdmMmVmNTI2YjAyMGNjIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGlzcG9zYWJsZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkMmU5NDA0YzIwYmFiNGE4MWVlODM0ZTA4YThlNDg3NWZiMzFjMGQ2MWFmMTk5NTFkNTg0OGFjYThlYzg5NWNlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ3JwYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwMTM2NDVmN2U0ODM0ZTNmZTYxMzY1ZDVkMjVjYmVlMTUxNDU0N2FiNjgzMzYyYzAxZjU3YTg5ZTVkYjZlOGQzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FjY291bnRpbmctcHJvdG9jb2wuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImM3YTI3MTEzNDczMDBlYWUzNWRiZmY4OTIyZDY5NGYwOTE3ZTc2ZGQ5MzFjMTk3NjA1NTYxNjA2ZmY4MjFlMTEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL25vZGUvY29ubmVjdGlvbi5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzNThhZWVhNjVmZWRlNDEwZmI5YjcwNTY1OGYzZDk0MjAwOThhMjRhMTU1OTc3OWUyODBhNWNiMjRkNjM0NTQ3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbWFrZS1saW5rLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE5OTk5ZjRlNmZhZjBhZjdjMzRmZTQ5YWQ0NDQ0MmU5MDlmNjE1YzJkYTE1ZmE5NTBkZjFkNTNmYTNjNmIwMjciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLWVuZ2luZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTFhM2FhMjk4YzI3NjY0OGM3YWMyNGE4NDExNWJmNWM4ZDczNzVmMWJmYzM1NzI4MmYxY2I0MzhjNTg5ODQ4MCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3F1ZXVlLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMzI1NWZhMGQ3Nzg4ZjQzNWNkMDg1Mjk1MjllYjk5ZTNmNWEzZDFmYTUyNTI4YWY1NjQ3YzBlY2Q4MWNkZDk0YiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9jb250ZXh0LXVybC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGZkNjcxNjE0MDM3ZWYyNzFlZWUzNWEwYmNkY2QzMzg4N2ZhN2RiNDA1YmMxNjk2ZjEyMzJlNDNiMmUxNWY4NCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2xvZ2dpbmcuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzE3ODVjNDE2MDM4YzJmNzJkMTk3MTkyOTkzOTQ5MTgyZGY2OWRmY2RiMmIwNmQ2NDE4OGI3MWE4NDUzZWUwNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvYnJvd3Nlci9jb25uZWN0aW9uLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjU0ZmY3YzQzMDYzMTM0NjU5NzE3MmFiMWIxZTFmMjBjYWNmMGIzZDc1YmJjZDJmZDVhNzgwNzM2Y2IxZGY4YWEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Vycm9yLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjA2MjcyYzY2ZjNjZGI3MmEwYzZjYTJhZDg0YzBlOGQ5Y2Y1MGQ2ZTZiOTA2MmVhZGRhYmY3MDVjMzc5MTY2NzIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLXNlcnZpY2UuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDRhYTdkMjRiYzM3MDQ1MDFiMWY4ZTA2MzA0MmY4MGY4NTE2OWUxNzkyNTA1ZjAwZmRkNjNmNWY5NDhhZGRlMCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2FuYWx5dGljcy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4MWU5OTMwMGJlYWVlNmYzN2YwNjBjOTY5NTg1N2YzODEzNDgyMzNhZmJkYTU3NjM5NmUxMzhiZDY4MTVkNzkwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9oYW5kbGVyLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxNDM3MzBkMTc3MGNiNjRjMzM2MzE0M2ZiODg2NzgzMmVlODg3YTQwMWI4ZmI1MDMwMzQ2MmM0OTE2Y2JlOTEyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3RlYW0tc3Vic2NyaXB0aW9uLXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjc1Y2FjOWZhODE0MzkzZTkyYzM2MGU1YTEyNWQ3OWE0ODZkOGY1NTY5MGM0N2M5NzIxYTU3Y2RiODc5N2U2YTgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvc25hcHNob3QtdXJsLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOGJjODRmNTE1MTNiNDUxMTc1OWUyNzg0NTYzNDAxY2NjOTc2Mjk1ZTk3NTRjOGNmNTA0ZGM4NTA4NzIwNjFiMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbWFpbC1wcm90b2NvbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0ZmE2NDlhOWVjNGZjN2RhZDE1OWM1OGI4MDdkZDcyZTJhMzViY2U5ZGU2NTdmZTViZGVkNTQ3NzE3MGNjMjM1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3Byb3RvY29sLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY5MGYwNDRiZDY0ZTQ1YjFiYjdiYTk2NTQ5MmQxNWM1YTU3ZWUxOGMyYTZkYzJmZGZkYTYxZDRhM2EwNGRkZTAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9zZW1hcGhvcmUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjY0ZTc4NDQ2M2EwZWYwMWQxYjliYzE5MWI3Y2UyMTEzYzEzZjkyZTgyYmEwMTQzZTJhYjJjMDU0MWJhZjI1YSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hZG1pbi1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjViODdkNzI4NmE0NzBkODRjYTY0Y2YzN2IxNDVlYzk5OTNkOWJhYzZjNjg1MDEyMDEwNzM1OTBhY2RmMDkzZjkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9tYWtlLWxpbmsuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjVlM2E3Y2ViYjRiMDhmMjg1NDdmODliZmM0ZTZhYzM2NmY4NjViMjkzNjRmYWE1ZTVmYmY0OWU1YmVjZmExZDUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGF5bWVudC1wcm90b2NvbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzVjYmQ4MDM2YTJhN2I2Yzc3ZGVjNTljMTk3OGZhYWE2OTU3Y2I5ZmU1OGQ1NWI0OTAxYjM3ZTZkZTdhM2I0ZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2phZWdlci1jbGllbnQtdHlwZXMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGQ3MWIyYzJiODI4NGYyMGU4OGM3MjI3MDk3OWI2OGU1Zjg5OThkZjgzNmU4N2M3M2MzZGM4MjdhZTZlNzA4MCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvcHJveHktZmFjdG9yeS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTJiNjhjNWZkNTlmOWUzYmFmYzAxYWM4Njg1ZmIwNjlmYTEyNTkxMTAyNjg0N2E2N2FlMWQwZGQ3Y2ExZDhkMCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2VuY3J5cHRpb24tZW5naW5lLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMWQ5MDFiM2JlMGQwOGRjOTNiMmE5YmM3Y2JhYzlmZmM0YzczMzRhYzNmM2JmZDQ2MjQ3NDM2YTcyOGJkNjdjNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RhdGUtdGltZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxNTQ0YzQ2NmRiOTU5ZTcxOTk0Y2M2NTE2NjZhYzFmMTViZjBlNzE1NmRhMDEzNzM1MWZkOTBlOTk0MmYwMzFkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2FyYmFnZS1jb2xsZWN0ZWQtY2FjaGUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2M4MjgwNmRjZGUxZmE5Yzg5ODc2NjI4Njc1YmYwNzUyYjJkMWVhNWQyZDNkYWE4MmMxY2Q5ZTY4ZjAxNWQ0NCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2Qtc2VydmljZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1NmI4M2U1MTc3MTk0YjYyYTQ2NDEzNzNkNzJmMzAyMDgxYzg4OTUzNzFjYjkwMTE1MzcyNWZkOGM3OTFmY2MwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZXZlbnQuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjdkMzc5NGJiNjQ5MWE5MWJjZDE0MDA3NDVlYjdmNzQwODgzYWIxNDU0YTllOWUzODk2MTI1MTBjMzA4MWE1ZWUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdGVhbS1zdWJzY3JpcHRpb24tcHJvdG9jb2wuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjBhZmRiMGJkYmU1YTM3YmYyNmZmOGM0Njg0ODVlM2JlYzIzMTljYWYzMjlhOTE2MTQ1OTIxMzQ4NTU0MWYyNWMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLWZpbGUtcGFyc2VyLnNwZWMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjNjhhZTEyMDA1OTgxOWUwZWM2ZmYzYTQ4N2Y4NDgzOGE5NmJmYzcxZTc5MGNlZGZkYzdlMmU5MjM3ZDk1NmNmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vY29udGFpbmVyLW1vZHVsZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZTJlMmNjMTg1ZDg0ZDJlOGIyOTgzYzRiNmFlOTgxNGIzYmEyMTQ4ZTA0MmUwOTVkNmUzNmYyNDJkYWUxZjc3ZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hdXRoLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjFmOGI0NzQ5ODI2MzZjNTgxOTgxZTU2NGFjZDg2MjhiNmVmMzRmYThkMTNjMTdmMTExODdjZWIzODIyNWFjMjUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kZWZlcnJlZC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDE2MjIxYzZhZTk4YjZiMmQ4ZDNiMTQ4NGUyYzU0Mjc5NWViNzljNTdkMzNhZjA2ZWQ1OWMxYzljZjdiY2QwOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2FzeW5jLWl0ZXJhdG9yLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiN2EwNTY0ZTA1MzM2NWJmMWQyY2ViMWM2N2IzZGNhNTQ1NjM2MTE5YjNjZTU1Y2YyNzhiNzVkOWUwZmUxZGIwNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvaGFuZGxlci5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjZhNzRhODgxYTk5YjYyNzE5YTlkYTFjMWIzYjI2ZWVlMjNlNDllNjJhN2U4N2M2NzU1OTBkYTAzOTU2ZTA5M2IiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvc25hcHNob3QtdXJsLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiY2JiOGI2MGU2ZjVhN2NiYTVlZjViNTc1M2EzNmZkYzY4YWEzMmNmZDJlOWVjMjU5OTBjM2NmNjg1ZDQxMDg0OSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wZXJtaXNzaW9uLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImFlODY2Nzk4MzkwYWNlMzI3ZjU1OWIxYjFkY2E1ZTlhMmY1ZmNhYjRkNjBkOTVmODYxZDllNmRkYTM5NDZhMDgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL3Byb3h5LWZhY3RvcnkuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0MzM4YTM5MDA2NDU5MDA0Zjk0NzliYTgwYmYwYjYzYTIwNzE0NzFkMzQwMDIyNjJmNGM4Mzc3NDNkYTk0NmY2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ3JwYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNDQxZjBjM2E3NmFkYmRkNjFiOGIyOWJlNDI1M2QxZDhkNTMwZDg5ODA5NDc0YmE4N2E2NmI2YjNlZTc5MDU4OSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvY2xpZW50LWNhbGwtbWV0cmljcy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhMjEwMjBhY2IxOTZlYmFjOGM0OTU3MDU2NGM0NGFmN2QzNjE2Y2M3MzFlYmQyYTZiMWQ1M2ViOGNiOWRmYTIxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9oYW5kbGVyLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjQ5MjFmODliNzRjNjJmY2JlMWM3ZGYwMDhhOTI4YmUzZmJlOWJmYjM4OWMwOWUzZDU0Njg4MjI4MTg1MTRkNjIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9ncnBjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjFlNmVmMmMxMTAyMDQ3ZmZmYmFkMmNhMDM1MjRlZThmNDBlZDU1OWZkNzc0MGYxMmEwODZlZTRjYmM1NTUxNTciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC93b3Jrc3BhY2UtcG9ydC1hdXRoZW50aWNhdGlvbi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2ZjgzNmFkZjEyNTYzMjQ4OTlmNDEwYzdkNWY4ZTQzMDJkZDBkZjdhMWY1MDA4YTFkNjdmYjliZTQ1NzY5OGM1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2F1dGguanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjI4ODkyMTE2YzIyNjIwNjJiOWU5YzMyNDAwZDdjOGFhZWI3NmQ2MjdlODc5NDlmODU1NGFmOGVmMGY3ZmVjZGMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaWRlLXByb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2NWRiYTdiZTE4ZDAxZThmNGU3ZjdjNmJiMDE1NzI0N2IxZWRkNjhhZDY3YzA3MjJhNThjMGU1ZGVjOTE3YzVmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3NuYXBzaG90LXVybC5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNDA1MzRkNTU4OWU1ZmI3ODU3ZTg0NTRlMjYzNjc5NjRjZjgwMTM4NmQxZmI4ZmMwNTE1Y2UyZTQxYjEwOWU4ZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pZGUtZnJvbnRlbmQtc2VydmljZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYWFhZDNmMThmYjA0OWY5YTUxM2MwYzg4MmRiNGEzYjFhOTQ4M2JlM2NlNmY0MjEzYzgwYjAxMWI1MWYyNmQzNSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2FuYWx5dGljcy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjc0NDI0NzlmYTUzMTZlZmY2MDk2OTU2OTc3NmM3ZjE3N2VhYmE3MDAwNzA4ZTFhOGViY2VjMGI0YzFmOWZkNTEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLXNlcnZpY2UuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzI5MDU2MjFhNGNlNTZkZmExZDVkZTFmNjg1NDEwOWNjNGI5MDVlMWE0Y2RlMmMwNTMzYTYyNWI5ZjY0NDcxMiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93b3Jrc3BhY2UtaW5zdGFuY2UuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTU0MGZlNTI4ZjhiOGJlYzhmNjY2NzQ2NjMyNTg1MGJhOWMwYjA4YjcwNDZiNjI4MjIxMmQwYjJkMTdlMWNhZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hY2NvdW50aW5nLXByb3RvY29sLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTUzMmIzZmRlNWE4Yzk3NDA1ZDA3OWY4NmFhM2JhZTFlYWVmZGJjNGM3ZmIwZGNhZWNjMmU1NWNhOTdlMDM5MSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9vc3MtYWxsb3dsaXN0LmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjcyMmYzM2E3NDc3NTQwMTg1YTYxZWFlNjg3ZjI5ZjFkM2NhYWNmYTQ0MmM4YTRkZDEzYjZlZjc0NWUwZmY4YWEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLWVuZ2luZS5zcGVjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiNzEzYzAzNDJlNmZhYjhlMjNmYTUyMDAxYjZhNDU3ZWNjMzc3ZjFlMmYzYTIzYjYwOTQ3ZjRiY2U1MGFiZjJmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdGltZXV0aWwuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYmMxYzdkMzk3ZmNmYmViNjE2OTZmNjcyYTE2NmNiNTRlZTE0OGRhNWQ1NTVjYzUzNzc3NTVkZDg2MGJiM2E0ZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2VuY3J5cHRpb24tZW5naW5lLnNwZWMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmYjcwZGI4NThkZTU3NDYzMGZiNTU4MDFlMzQwMzIxOTUxM2EzMDk0YTNlZjBjZDkzMDg0OTM4MzFjZTM0ZDZmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3BsYW5zLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjYwMDU0YzlhYTk0ZDliMzY2ZjYxZmVmYzBjOThjZTQxNDUyNzcyOGZlMDQyY2YzNThkZTcwMTM3NTM1NmUyNDciCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9za2lwLWlmLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwY2JmNjIwMjJiNjU2MTZjNWExZWMwZDU5YmVjODExNjg1ZmVhYmUyMWIwMzg0YzhiOWVhZjVlNzQxYWIyM2ZlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvbG9nZ2luZy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1ODExYWE3NTNmMWU5NWU3Yjg1OTRiNDE2ODJjM2NkMTRiNmM0NGI5NWNhYmNhM2EyOWRmYTM5MmI5ZGViYmY5IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2Vudi5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwNWE2ZWRkNmQzMWFjNzdkNGZjN2RhOTU3MzEyNzU1MzRkMTliMmFmYjIxZDExODU5YTI3NWY0NjcwYmY3NDc1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGlzcG9zYWJsZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4MGY2ZDYyMzY5ZmFlMzZmZWI4NjZmMWQwOTE4OWExOWQ2MGQ5OWEzOWYzODllZDc4NWZmNDRiNTc3OTE1NGFhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9icm93c2VyL2Nvbm5lY3Rpb24uZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyYzQwODljOTBlNzI0M2E1NDI3Njk5MmUxMDI0MTA0Nzk4OGNkMDExOWExOGE2NTUxZGFmMzExNTU1Nzk5NDg2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWhvc3QtdXJsLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGU2NTIwOGZlN2QwZDMwM2QyMmZmMjc2ODNiYzY0NGEwYTRmOTUwYTMwZGY3NDk4N2NjNWQyZjY0YzNkOTBlYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3NraXAtaWYuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMGI3YWY5MzAzZTI0YzMyNWZjOTk2ZjgzNWVlZmQ3MzYxOTg4N2Q5YWY5ZWY3YzE2MmM0ZmI5NzkxZTAzZjMxNiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90ZWFtcy1wcm9qZWN0cy1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImViMGZjOGRmOTc0ODgwMGZkYjYyNDQxMTg5MjIyMzA4MTBiNmVmZDZhZDg2YTYzNDE3OGVmMzBjZjA2OTkwNGYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGVybWlzc2lvbi5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjZhMjhiOWNjYmJhNzQ0MDk3NzE4MDQwZDIxNTYxYjdmYjUxNzQ0YmM0NWQzN2EzNDdmZWZhYzA0ZjFjZjI5NWUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9qYWVnZXItY2xpZW50LXR5cGVzLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5ZDg3NWEzYzZmNDk3ZWQxZjllM2I5ODAwMTk0NWY4YmQxOTdiMTk5OWZiNmFkODdlMTc5ZDQ3N2QyMmZkNzgxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdGltZXV0aWwuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjQ5NmIwODQ4YmFiZDZhYjY5ZTBjMDY0ZDQxZmYyZTBiNTMwMGRlYzI3NTVhNjA2MWU0ODc4ZGUwYjhhYzVlZSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2QtZmlsZS1wYXJzZXIuc3BlYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkZDllOTI2OTQ2ZjJhZTc5Y2IwMDQ0NzYxYjBlNzk0MzM0Mzg4YWI5M2QyZGI3MDVhNjJkODk3NThlMDUyYTUxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcXVldWUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDg0Y2FmNzllZmM3OTkyNGQ0ZGI1ZmRmZDYwZmM5OWNhMWZjNzBmMjNlZmIxODY2NTMxYjFiYmQ0YWMxNzlmMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hZG1pbi1wcm90b2NvbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIwMDdmYmU5MzllMzc2N2RkNzk1MzA3YzkzNmI1YzRkOTZjNzY5MjAxMWNkYzFjZDY4NDQ0MGFmMTdhMTdhYjVhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2dpdHBvZC1zZXJ2aWNlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4ZWM2OWQyZThjMTdlMmY5ZjVkYWVkOGYyNjVkNjY0ZDc0ZGViYWMzZTBjMzQ4ODQzNmQzMDU0Y2Y4YTA0N2EwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vY29udGFpbmVyLW1vZHVsZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjM4YTY5N2I0ZGJkYjVmMWFhODU4OTZjMTU3ZDI0Y2UwZDVkMTE1Yzc0ZjRhZDhhZjcxMjhkNDNiMGQ1NmE1NzgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd29ya3NwYWNlLWluc3RhbmNlLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTMxZDc2OTIzMmE0YjQwZGJhODdjYjg4ODFhNzcxZjNiZjFlYWQwOTk2Mzk5NDEwMTE3MWI5NzFiODMxYmY2YiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pbmRleC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJiMTJiMTk3ZjhhNjNmOTY4M2M0ZWY0MDQ5ODZkOWIzMWFiZTYwODUwZTJlN2VjNTBjOTRiNGY2OWNmNjZjYzAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd29ya3NwYWNlLWNsdXN0ZXIuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJhNTRkMzBmZmVmOWE4YWUxZjhlMjgxMTQ1YzUzMWFiY2NjZDEwMmVkZDQyNGUxNjNhNjdiMDI1MTIwYjhhMDkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvY29udGV4dC11cmwuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImUxYzRmNzJkYWM2N2M0Y2VmODUyNDI3ODFjOTE4ZDNkZjQzMjBjZWEyMDZhZWQ3MThmMWU2YzFkNGYwZTYwMjEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9jYW5jZWxhYmxlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjJhYTg2OWVkMzk4MGI2YTBmN2NjOTcyMDdjZTkxZjI5ZjdjZGMyZTM3NzI2YjNiNTcxN2QwZjYyYzJlMTA1MTgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9tYWtlLWxpbmsuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDU0MGVjNzhlOTUwY2I3MzdmMmI2M2M4ODJhODZkOTM5ODEyYzY2MTJlZTRmMmUzYWM3N2EyNjVmOTMzMjc2MSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2QtZmlsZS1wYXJzZXIuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOWFkYzBiYjcxNjAxZTgxZTRiZjNkZGNhYjc0YzNhMDhjNDdkNDRlMjI5MjVjOWM5MWUwZWFiOGU5N2IxY2FiYyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RyYWNpbmcuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTU3Yjk4OTI3ZGFkMGE5N2RmNDIzY2I4ZTBhMWY2MGMwOWRjZmY5MjgxZDE3YmYyYjRlYmMyMzIyZWJmYjlmNCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2xvZ2dpbmcuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiYTlmZGQ2ODEyY2Y0NDUxNDkyYmM0MmQzMjAzY2YxYTIzNGJlZjVhNTY3NjJkZGQzMzA3MWU5ZjYwYzlhMDdhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZXZlbnQuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5OTE1NzI0Yzg4NDQ0Zjc4NDA5ZmI4ZDhiZjNmOTg4ZjU2YWNiN2M0YmUyNzVmZjhjMzEyYjFkMjc4NmEwZTIzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWhvc3QtdXJsLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImI5ZmZhM2Y0YzhlN2IzM2I1YjJmYWUzNGYxM2E4NTdlZWM5NzYwZmM5ODc3NGRjOTNmYjQxZmUwODcyNTE4YTMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9sb2dnaW5nLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlNWNjY2I4ODI3ZDdhOTBkNWJjY2JkOTA1NjA4NjkyYWEwNTNmMmMwNDM4NmRmY2U1ZGVmZDBhM2JiMTYzN2Q3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3RlYW1zLXByb2plY3RzLXByb3RvY29sLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1ZGRkYmI0YWY0OWI2NzljZTQ1YmQ2OTI1MDNlNWI3NTQ0NDdjZDRhMTk2ZjVkNTY4MGJjYzQ1N2Y1NWRkYWRmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2NvbnRleHQtdXJsLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjUxNTAxZDU3ZTdhMTM0ODkzMWM5M2E0M2FmMjQ1OTFhNmNlMzZjNGNjN2EzMTdjMGFjNTI3ZGZjMTA5MWRhNjMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9nZW5lcmF0ZS13b3Jrc3BhY2UtaWQuc3BlYy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJkZWE2N2FjZWNhMjc0ZWI0YTQ1ZjE0ODYyZmEzMzE3MTQyYTdmMzYxZWNlOWEwNTJmNGQ4OGY1NzY4NjMxYzUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9lbmNyeXB0aW9uLXNlcnZpY2UuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZGJlOTk3MDU3NWJmMzAwOTZmZTI1NWFlNWUyOWUyY2VmNjkyMzgyODU2MTZmMGNlNDFmZmJiNGM2N2MzMDU2YiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2NhbmNlbGFibGUuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImQ2Nzc2ZWUyMmZmYzQwYzBmOTA1YmUwZDZlMTI5MzhjNGE5Zjc2N2YwMzM3YzRlNjZjMTE1YmU5MTM0OWU4NmMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcGxhbnMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkYWIyYmJlNWI1MjE4ZDI2MGI4MWRkOWI1NDk3MGZiMGM5NTlkYjIwNjMxZjhiZTg5ZjU5MDIxYTg0MDJhNTM2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FjY291bnRpbmctcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDQ2MjAxZDlhMmQ1YTQ3ZDI3OWUwOGE5ZWJjNDE0ODE0OTJlNmJkZTE3MjZmNTg3YTM4MjY2ZWFkNjZlNTg3NSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbnYuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDFiNWQ1OWI0ZjdhZGZlN2Y4YzE3MWQ2YWE4N2RlZTEwYTBjOWViNTYxMzI2NDdlZTMxM2JkZjUxOTY2ZTk4MyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9jb250ZXh0LXVybC5zcGVjLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjVkZTJlZGIzNTZjNjE5YjMwOTE4ZjZkMThmNWNkOTFiOWY0ZTcwM2ZkMWZlZDViNTVmZjA5M2YzZDUzMWQxODgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9yZXBlYXQuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE2Mzk2NTFmZWYwOGE2MWM2N2RkMGI5MGQ0N2E1ZDE0MDE0OWMzNGEyNTYzZWE1ZGIwZTVlY2Y1NzAyNWJhMTQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9rZXktcHJvdmlkZXIuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZDM4YWQ4YTlmNjRlNWI4NzMxMTg5YjYwNTA0YmJiYTM1M2IwNzJjY2ZjM2VkZTg4YWNkYzQ0YThlOWQ2NmVlZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9naXRwb2QtZmlsZS1wYXJzZXIuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTNlZTUzYTNiZmE2M2NlOTUyYjcxMWMyNWRiMDA2MGQyYzkyNjE0NWY2ODllOTQxMzgwNDcyODMxZjJiMzE0MyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3NlbWFwaG9yZS5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzYjFkOWE1NmJlOWFjM2UzNjZiN2NlMmVlY2VkNDNjOTAzNmQzZGM4YjllYTIxMjFkNzY4MmIxMzFmMjUzYmI1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdGltZXV0aWwuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1N2M3MmVmZDE1Y2VlODk5YjRmNDYyODczOTQ4Y2U3ZDg5YWMyM2RkNDNhZGNjZWMzOWRhMGU3MDc5MTIzNTJiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdGltZXV0aWwuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNzYyYjEwNjVjZDk1MmM5YjczZmI3NmUzNGM1MTkzYzEwMTY2ZjM5OWEzNzlhMjUwMjkzZmY4YzY5MTAyZjI1NyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dpdHBvZC1ob3N0LXVybC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZmNhYWYwZjRmZTA5OTc5ODFjY2Y0MzAzOWNmMGU1YTdhMzk1NTMxYzQwOTE2NzlkYmJkZjVmYjUzYWU4NGVhMyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3RyYWNpbmcuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNTllMzQ3MzYyY2E3NDk3MDBiMTY0MmE3NjVlMmQ2NjAxYmZiZTYwZWZhZWQ2YTFmOTExOWI2ODNlOWQ2NzVkOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3F1ZXVlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjg2ZGM3Nzk1MTEwNzE4ZDZlYTdiMTllMWIwMzE3Yzc2MGYzZGRmNjcyYzExOWQ3Nzc4YzlmMjJiOWE4YTBmNjQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9zZW1hcGhvcmUuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlNTBjZWU3MGMzMWNhZTQzNjcyMmIxNDk3YTk1MWUwM2IyZDFmNGYzZjI3OWRmZWNmMGM4ZmMwZTkwZWI4Mzg0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcXVldWUuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTE1NWI3YzE3YWRmNTJkY2QxYjliYjdlNjAwM2I5ZWNmMjM4YTc5M2MyODJhMWRiYzk5MTIxNDJmNTA2MTIyMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9oZWFkbGVzcy13b3Jrc3BhY2UtbG9nLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJkZGVhNjhhYTdhNTIxZjRmZWJjZmQxZGNkY2YzMDkzMzJlMjUxMmI1MTlmY2U1OTE2Mjg2YjM2MWQ4MzM4Nzg3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2VuZXJhdGUtd29ya3NwYWNlLWlkLnNwZWMuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImIyYWI2ZjcxMTg3MmNmMzViYzA0YTY3MjkxZjdkYzMyMGJmM2NhNDRkOWI0ZWY1MjBkOWFlMDExNjdkZjYxM2IiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Jyb3dzZXIvd2luZG93LWNvbm5lY3Rpb24uanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYmVkYTVkMWMyYTcwN2FlZjRiYTVjM2UxYTQyMzNmN2Q5ZTRhNTBlMzFhYWJmM2RiYjk5Yzg4NDYyZTk4NmZlOSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pbmRleC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2YTlhYjlkNzZmZjRhODg5NzgyNjcxYzdmMmNkOWQwZThjMDIxOTVlMzc2YTYxN2I0ZTY5MDM1NDE3MzdhNDI4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3Blcm1pc3Npb24uanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjM1MmQ2NWY4YjJjMDJhZTMxMDQ1ZmE5YjU0MGE5MWZmZTg0ODMwYTUyZjQ1ZDBhYWUwZjg1NzdkMGMyZTViYTQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaGVhZGxlc3Mtd29ya3NwYWNlLWxvZy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4Nzg1NmMzNDY5ZTA5Y2IwNjM1ZjE1NTViOGEzZTQ3YzA0ZDJjY2RkOTVkNzAyY2E2YzNhZGMxZjYyOGZiYmU4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcGFyc2Utd29ya3NwYWNlLWlkLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlNTIzNTc2Yzk0NTljZjg1ZDY2YTdlYTZjNjI4Mzc2ZDc2MGJiMjg1YWExNjc2MTRmODhlZjRhMWE4YThjM2IyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvc2tpcC1pZi5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjgwNDUwZWM0YjBlMTFmMTBhNjg3NzhkMTdkZTE5Mzg0OWMwMWZmNDkzZGE4YTUzYjQwNTAzNTU2NjBiYjE2ODgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLWZpbGUtcGFyc2VyLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTMxMTk4MjQwNDdmYTM2OWIyYjhjZTYwYWJiMzFmNWRmNjFkNzgwODE0NTg4NTViZjQ4MzgzNmFiNGRmYTBkNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93b3Jrc3BhY2UtY2x1c3Rlci5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjZkMWUyYTBmZjg5ZWZjMGUxMGJhZTlhOWIwN2NmMDRlOWZhNDdkMjA0MTk5ZWFlNzM0NTNiY2IzMmU1YjJmZmYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaW5zdGFsbGF0aW9uLWFkbWluLXByb3RvY29sLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjIxNGFhMjU2NTY0ZDUzNzlmMzMzNzhhODZkMDk5OTYwNTM4MDYwNmRiNWU3Mjk5MDg5Nzk1NDJkNWY1MThiMTAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYXV0aC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjMmRkNjcwNTY0YzA0MmVlMDNmYTgwMmIwYTdlM2RiMzZhMzgwMWIzN2RhZjNjMDg1MTI4MGIzNWI3MTg5MmNhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVlcC1wYXJ0aWFsLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTY0YTI5MzFjMTc5M2RkZWE1YTg2ZjI1NzZjZmJlNDNiMzJhZTAyMGY2ZGE5NThhZTRmNjkwNWY5ZjUxZjIxMCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2tleS1wcm92aWRlci5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODc3ZTdiNmNiM2JlZWEwMWFlNGQzNzVhZDQ5M2FmNjdhNDFiMzMzODcyNzBmOTU0MWQzYzg1M2YyMmY2NjdlMCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dlbmVyYXRlLXdvcmtzcGFjZS1pZC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImRkYjVmYmU4NDM1NDVjYzIyNWEyNTJlNDRiNDBlMmM2NWVkN2FkYTlkMGY2ZmU0YjBhOGRkMGFiOGNmMmFiYTIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC93b3Jrc3BhY2UtcG9ydC1hdXRoZW50aWNhdGlvbi5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1OWVjYjIwMjlkZjFjNWIyYjc3ZTA1ZTA0NDViYzA1MWQ1ZjZiNDZmMjAyNTUxYzYyYjc2MmY3YTYwYzg3OTE2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGF0ZS10aW1lLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNmE0MmFlYjU3M2ExNmM0YWRmZTAzM2JjYTkxZTZhMmQyMmU2NTM0Y2JhMGQ4ZTFjMWM0NzRmYzg2NmI3YWNkOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93c3JlYWR5LmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2ZTg4N2ZhMzY5ZjhkNjg1NTVjM2E1ZjJlYmU2ODEyMGNhN2QzNTJkMzNhZTc2ZGFhNmM5Yjg5MTAwZjIwMmYyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9icm93c2VyL3dpbmRvdy1jb25uZWN0aW9uLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjIwOTU3NzJiNWNjOGVlZmU1YzQzYTlhZDZhNTQ5NmMxZWMyYTExNzVjMmJmOGQ2Mzg1MzZkOTNhNGRiMjU2MDgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtY29va2llLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE3ZmNlMDRkMmM4MGFkYmI2YmJmYTdmZjFiOTgzOTgyMDU2MmFjNDIzN2MzOTgyZmY2MjZkNzFjMDZiZDFlMTYiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90cmFjaW5nLnNwZWMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYmM0NDBlNDkzNmQxY2MzN2Y4NWNhNzgzYTI0NmQ3N2I2ODljNTQwNTgyZWFiOTFkN2U0MTZkMWI0N2U5OGYxYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93c3JlYWR5LmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjIzMDY1MzVjNTI3Y2U2NzkyYzQ2MDM1Y2Y5YTdkMjhhZmYxZGZjNTg1OGQ4MGM4NGFhZTczNGQzNWM5YzI3MTIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbGljZW5zZS1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjE0YjVlZmI4OGI2YmFjYWEwMzExNjQ0NTAyYzg3ZWZlNTA0NDhmZTczNmVjMjJjNDQ3NmQ2MWM2MTYxZDljZGUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbWVzc2FnaW5nL2Jyb3dzZXIvd2luZG93LWNvbm5lY3Rpb24uanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjM0MzFkN2EwNjhkZGVhNzUxODUyOTQ3MjQ4MzhhZmJlMWU0OWEzN2RiOWY0MTkwNzgyYWQ3NGZmNDhlODE5NzQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9zZW1hcGhvcmUuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjllYjk5ZWNiYTUxYmY2MjgzZGU0ZjRhODkwNDBkMTZkM2YwZjJmOWIyZjI3OTNjZGQxN2FmZGJjN2U1MDljOTQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9hc3luYy1pdGVyYXRvci5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0MjFjZmMyMmY0YTExNmJiZmM3YWU4MGJkZGFlYmRiYjg5YTliY2YzOWFjZjI5NWI5ODQ3ODYzOTgzZmI0NjMzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2VuY3J5cHRpb24vZW5jcnlwdGlvbi1lbmdpbmUuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMWI1ZTdkYzUwOWZkMjNiZDM0MTIzMjE4ODExZTAwNWE4MzE4M2JkMzQ4NDhlYjFjOTVmZjM2ZWVjODY0YWI1ZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RlZmVycmVkLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE4OGU4ZWViZmQzODkwOTkwOGUzMDhjNjA4NmJlMzRjMWRjOWFjNTM4YmEzOGY4NTVlOTAzMDFiNzQ3ODQ5MWEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvcHJvdG9jb2wuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiM2Y4ZjliNjZlMTMyOTZhNjQ1Y2QwYzQwYjdkZTVjYTY5ZjFlZTVkZjBjNTc5ZThkNjkyYzM5NTUzNDBlZDMyYiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3F1ZXVlLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyMTMwMzllNWZlYTE5MDI5MTA2MDVhMzZjYjJmNWQzYWYwNGUwZTdlNTAzMzY5MmUzZDFkOWVmYTU3MzVlY2YzIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL29zcy1hbGxvd2xpc3QuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJiZDJjNzUxYWU3YTE4MWVhZjNmZGUzOWQ4M2I1ZDZlZjFhOTE1OWIyMDA0ZDA1MzM5ZDM3ZTU5MDdiMzYxNjFlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdGltZXV0aWwuanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjVlODUyNGFhYzQ0MGFiNmZlMzM5NjEyNmE3Yzc3NmVkYzM5NzVhNTMzYjgyZWNiODE4Yjk4MjZjMjI5MDhhNmUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9ncnBjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMzkyNTBiMTRhMTUyYTdmNDI3ZmVhMzg1YzdjZWNlNWUzNmRiOGE2ZTMxMGIxMjM5YzZlYjE4ODFkZTk1NTE5OSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90ZWFtLXN1YnNjcmlwdGlvbi1wcm90b2NvbC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIxM2JiMWU1NTBiZDBhM2U5ZjgzMTMwNGQ3NDBjZmVhN2NjZGQ3MGVkNGEwM2YwMGEwYzAxOWM2MzIyMGMyNGEyIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2FuYWx5dGljcy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMjlhMWY1MGZjMWZjZjM2NmMwMzExMjFiNjVlZjYyMjk1ZGNjOWRiMjljOTk2ZmNkMjBmN2U4NjMxNGYzZGY1NSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9oZWFkbGVzcy13b3Jrc3BhY2UtbG9nLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjVkZmMwY2M2NTM2MTllN2I0ODY4ZDNiNDViM2Y3ZTE0YjFiMzYzZTQwYzA3OGQ1YWFiMmIwYWY4NDAzMWZkY2UiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvaWRlLWZyb250ZW5kLXNlcnZpY2UuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4MDcxNmQ4MjY4MWY5ODdlYjNlNTRiN2RhZDIxOTA2Y2JiODhmZGYxNGVjYjI3ODVlNDdlNzZiNTkyMTA5N2EwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9ub2RlL2Nvbm5lY3Rpb24uanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOGM2MWQ3ZGRlZmU4NTM0ZDRmZmYwYjc3ODJlNmE0YTNlNDY3NjdkNzFmNjhhMzA1NTg0MjhmYzlmZDlhZTk1OCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9zbmFwc2hvdC11cmwuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOThjZGU1NzVkZDdmMTgxMTQwMzQ5YjIxNTE5NzE5ZGNlM2ZkYjExYjYxYzI0ODk2NzExMTgzMGQ0OWFiMTYzYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2FzeW5jLWl0ZXJhdG9yLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjI2OTNjYTEyMjI4Yzg2NTJhYjVlYzBiYTJlYzU3MzcxMmE1OTU2N2Y1NjkwNDlmZWZmY2I5NGI1YzJmYmI1NmIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9wYXJzZS13b3Jrc3BhY2UtaWQuc3BlYy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZWJjYjVhMjE1YzdjZTE3MzkwNDliYTRlNzE0ZjU3YWY5NzgzOWRkOTU5ZDQyN2Y1N2NiNGY5NzAwYzk4Y2JkYiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3BhcnNlLXdvcmtzcGFjZS1pZC5zcGVjLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMzg2ZjQwYjg3ZjhkYmFiMDU4ZjU1YWZhMjUyNWZjZTI3OTU3ZTI1Yzg0NDJiMTA3OTRmZTZkNTYwZWFhOTVhOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3JlcGVhdC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4NzAyZjQ4OTIwZTkxYTIxZWNlYWY5MzNlNzMxNTNkYTUxMTBmYzI3YTY5M2VlYTUwMmFkNmI4OTIxZjBkYTliIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9lcnJvci5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJlYTg0OGE4YzRjYjI5ZDM3YWFhOWM5ODZmNTE0ZGFmMDZiZGVmNjQ0Mzc1MDhiYTY4YTk0YzQxODExODc2NGU2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdHJhY2luZy5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjUzMzM2YTJjZGZhYTNkMjE2ZGNhZWNkODNiODU2YjFkYzE2NGNkYjY1NmM2ZmNlYWQyMGIyMjRlMjc2NDUxYiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3BhcnNlLXdvcmtzcGFjZS1pZC5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0YmMyNWNiZDMwYjQzMmFjOTYwMmNhMDkzYTVhMzc2ZTRiMDUyNzYxN2NmYTU1M2E4YzVlNTI4ZmQzZWJhNmQ3IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvcGFyc2Utd29ya3NwYWNlLWlkLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiY2RhOTVhYjBkMmJmMjRkNzQ0NmZhNTM4YjExZDI5ZDQ5ZDA5NTkwOWMxOTgxZWYyNzhlYjZjNzNhNTE2OGNhNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9saWNlbnNlLXByb3RvY29sLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImVjYThhMDhjYzJmMmJhYTIwZGUxOTc1YzdmZTY2YTE3YmNlNzFjNTI5NjgzM2ZmZDM3MjgzNWViMjhlY2YyOGUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC93b3Jrc3BhY2UtcG9ydC1hdXRoZW50aWNhdGlvbi5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjI5ODJjZDBiYjBmODE1ZWRjYmNjMzFlZjdkZTRhYWQzMTEzZTA2NjIyY2U5NmY5YTgwNmUzYTU1NzQxM2YyYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pZGUtZnJvbnRlbmQtc2VydmljZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyNzA5YjJjZDQwN2Q3MzQwNGU1YmI3NTdmMzRhNTIxMWU5Mzk4NzhiNDRkYTJkZjk0MjJmZWFhODY1YWVhYjU4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3BheW1lbnQtcHJvdG9jb2wuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1YzhhMzkwNzNmNmRlZjlmZjI5ZjIwZTBmOWMxZDY0Y2MzZjExODVhNTE3ZjZiMDM2ZjY0YmUxOGNlNzc1ZDM0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3RlYW1zLXByb2plY3RzLXByb3RvY29sLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjQwZjI5Yzg5NmE2YjhlNmIxNzI3OTZlZGI1MzI3ZjY5ZTBjYjNkMzBkNDY2NTFjODk3YzZjMGU5Y2ExYjY1MDEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC90cmFjaW5nLnNwZWMuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNWE0YzdlMTg1MTg5ZTQxMGVhZjA2ODlmOTZkYTEzYmU4OTY1MDVjYzY0MWZmMmNjODg4NDAzZTA5M2M3MTY2YyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2FuYWx5dGljcy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyMzc4M2ZjOGJiMTBmNDYwODllYWM4NGE1MTdkZDM2NWFlOWMxNmY4Yjg3ODZiYmY0MmFiNmZmYmVhZjRkOTZmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2lkZS1mcm9udGVuZC1zZXJ2aWNlLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjNhNDVlMjVhNWQxY2VkMDllZjFiNThlNGE4ZDhhOWUyMjBiZTY0ZjQ1YWViYzMxMjhiNTU0ZGE0YzQzMDg4ZjEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvYW5hbHl0aWNzLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjAyMDJlYjBhMzJjMDJlODhiM2NiOWUzYzI3NjA1NjQ4NDk5ZGNiODBkMTRjMDE1ZDQwZDQwMjQ3MTAxN2U0YTAiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZ2l0cG9kLWZpbGUtcGFyc2VyLnNwZWMuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjQyYzJjYmQxY2MzYjBjNWZkMDBjODE4ODczMjFlYjc5M2U0YzE2YTYzMGU2OGMyMmRjZDBjMWY2ZDYzYmRhNyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9pZGUtcHJvdG9jb2wuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiOTc3N2ZiZWY4Nzc0MjA2ZTc1MzM2ZjFmOGY2ZmY5ZmRmMjkxYjUzMTEwNTVlYjUyNmFhZmFjMmI1Y2VlMjNhZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2dlbmVyYXRlLXdvcmtzcGFjZS1pZC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3ZjVmYzQyZmM5YmI1ZmFkMTgyOGM0MmU3YTdhN2QxZGFjMzQxY2ExOWY3MTAzODNmNmMxMmU2NDc2N2M1OWJkIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dvcmtzcGFjZS1jbHVzdGVyLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjg3NDBlZjYxYTE2MjJlMzliMTFlZWNkNzUyYTIyNDc1Yjk1NGU1ZWY3NWUyMWFkN2UxYTI3ZjVjNjU5MmEzY2UiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC93b3Jrc3BhY2UtcG9ydC1hdXRoZW50aWNhdGlvbi5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjhlMmMwZGZkZTk3MDJhMmI4NTk3Mzg3M2U4Y2I2MDNkYWMyYmQ2MDI4NzU0ODI2M2IwYzMzNjI5NjZkZDAwYzQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvbGljZW5zZS1wcm90b2NvbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMzAyNGI0YzUxNTI1MWUyYTE5NzdkNDdlMTkzZDlkMjRmYWU1MDFmZTA2YmNlMWY5OWM1NTdjOGQxYTRjNTU3NyIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9wcm90b2NvbC5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNDdjYTU3MTFmNzNhM2Q5ZDdmZWNiZGI3ZWFkMzJlMmFiYzVjZmIwNzgzNjI1M2Y1OTA4ZWFmNDk4ZjVjM2I0MSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RlZXAtcGFydGlhbC5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1NmQ5ZDhkMmFmODhjYTE3MjI2NGVkOTBhOTVkZGZiMzZkZTcxZmQ3MTUxYTE0NGJjNjQ2M2UwNmU1ZjZjMTI0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL2luZGV4LmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImZjZTIwZTczZWQ5Zjc1YzkyNzZkZGM4YTA0NGM0YjExMDdkNDgwMzY1OTJkM2ZmNDJjMjFiOGYzMzc5MzViYzMiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtY29va2llLmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNTQxZTIzNjEwMzczY2VkZWFlZmFhM2MyZjA0NzQ5YWE1NWNhNzhhM2M1ZWJkOTU4OGFmYjI4OTA4NWI1NWRmZiIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2phZWdlci1jbGllbnQtdHlwZXMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5MDFmYmY4MjdkMGIwZTgzNmI3NmVmYzc5M2FlNDU4MzlmZGIxZThhNjUyNmEzZjI3MDE2ZDU3NWU0ZjM4N2U1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dvcmtzcGFjZS1pbnN0YW5jZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1MGE2NDNlMGIyMzY3YTQ5Y2E1NTQxMGI4ZDQzMTlhZTIxZTdmZGZmZmQ0ODk5NDliZmExMjllNjg2MGU2NmVlIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGlzcG9zYWJsZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMWIyNmJjMGQ4N2UzOGYyZDBlYzYzOGEyNGJlMGYwNjkwYTYxYmEzMTFlOGUyN2NkYmNiMDU4MGVmZjQyOWM0NSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9vc3MtYWxsb3dsaXN0LmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY3N2U5M2QzY2ZlNDAzODI0YmU5MWI1NGExMDIxMGRmM2Q2MTk1YWRjNDJmZTBkMGNlZDY5ZmVhODU2MTkxYWQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdHlwaW5ncy9nbG9iYWxzLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIzZDY3MTkyMDdiZjlhODk2NDQ5N2NjZjg0NWY0Yjk5NWY3MTIxNmYyZTc3ODRlOTYwMmViZjVmMzQ5ZTY0YmQwIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWNvb2tpZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiNjU4MjhjMjA4MzExMjdmNTVlNDdkZmQ3OGI1Y2M3NTkwMjYwNGQwNGU5MzJiM2RjYTVhYTkzOTg1MTljMzJjYSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi93c3JlYWR5LmQudHMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiODMyMDcyYTkwNThkZjQxMjNhMWNmYzJmMjZlZTc2ODA2NDdmMzQ1ZTU3OGNhZTkzZGQzNWI4MTNjOTRlZGU5ZCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL3F1ZXVlLnNwZWMuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmNGJhZDI0ODY5NTNlZGExZDU2YjVhNmNlYzlkYTFlMzJiZWFjNTRhMDRlMWEwYzM0MzQxNjFjNGE3NjAwNTk0IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2VuZXJhdGUtd29ya3NwYWNlLWlkLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyMjgyNDkyZmUxMWI3NWYzNTY5ZjlkZDkzMjcxZjM0MDY5MzU5MWU0M2YwZTg3MDY5ZmFjMzg1ZmJjYjBlZTMxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdHJhY2luZy5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjg5ZjM0MTU5ZDAzNDg1Nzc1MTUzMTg1MWFhNjA0OTQ4OGNjNmVhNmJiZGEzMzQ0YmQ1MjRjNDQ2NTBjODlkYWEiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtaG9zdC11cmwuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI3YzJmMjU5NjdmODVhZDc2M2IxMGRlOWUxNjQ2N2Y2N2FjNzM2OWYwOTE4NDYzYjg4NjUyNzUzNmNjNTZkZTk4IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGVmZXJyZWQuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI2MGEyZDYyNjgwMTU5MmNiYmIzZDMxMzEwMzcyNjFiNmI1MWI1Y2ZjMmMyOTU0ZTIzYzUyZWQxZDMwZGI0NjIxIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3BsYW5zLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI5MDdlNjkwNjk0ZGQyZDM4MWZhZDI3MmNjODU3NDdmNWM2ODRkNzkwZWZhNWQ0YjRiZjBjMWZmMDRmNzA2OGQ1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9icm93c2VyL2Nvbm5lY3Rpb24uanMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImVkMDRlM2M5ZDExZjE4ZDdhY2YzZmFkMDcxOWZiZWQ0MWNlM2UzZThlOThjMmUxNzVkYmE5MzY2ZDA3NTM1ZWQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvZW5jcnlwdGlvbi9jb250YWluZXItbW9kdWxlLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImM5MjM0MjA3Y2MzODM2NWU3YWE1OGY5ZmY1ZDc3ZGUwODY4MzdmOGQwZGZjMzQ5ZGEzNjAzODY2YjFkNzNlMzkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvY29udGV4dC11cmwuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZmFiMjZlYmE0ZjExMDQzZGUwODJiM2JiMDJlMTQ2Y2RiNmE5ZjU3NDAwYjQ5MGE2ZDY1ZWMwZmVjMzU5NTIwNCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvYnJvd3Nlci9jb25uZWN0aW9uLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImJkNTUxZGViODQyNGM0NWU5M2E5MWQ4YWVhZmIyNGY0NDY1ODcyM2NmOTYyZjgxNmI3ODgxYjhlZWIxNTZkNWUiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9hc3luYy1pdGVyYXRvci5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZjNjYTRiZDBlOTBhZDA3NDc4MGNjNjY5YWZhYWYxMDk0NmU2ZWQ1NTdlNTQ3NjNjOWFkOTdlYTQ5ZGU3ZWNjMCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi91dGlsL2RlZmVycmVkLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjk0M2RlMTU1MjAxMTE1OTE3MmRiZDUxZDRiOWJkMzYwY2Q1M2VlYTYwY2QxYWQwNTEyZTA0MGQxZTRkNTJmOWIiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9kZWVwLXBhcnRpYWwuanMiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMDVlNjgxMTM4MjcwNTFjZGQ5MTk1N2QyOWFlNjNhODFlZDBlODQ3YmE4OTE5YzdiZjhmOTdlOWJmNjlhMGQ0YSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9lbmNyeXB0aW9uL2NvbnRhaW5lci1tb2R1bGUuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiMTQ2M2VjMmYwOTE5ZGUwMjEyZjcxZjA0ZjM0YzFhN2Y3Mjc3ODFhNDM1NWVhODRjOTI4NDM1NDY4OWExNTI1YSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9hbmFseXRpY3MuZC50cyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICIyYTZkMDJmNjJhMGRiNzA1OTAzMGRhYzc3NGUxMGY1NzczNWQ4M2RjNzAyMWU5NzdlNTg1NGQwMGFmY2IyMzczIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3NuYXBzaG90LXVybC5zcGVjLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1YzY5ZDM5YmUxMTMwOTQyOWExNmIzMWMxNjBkM2M0MDMwMmY3MTNjNjAzNGFlMTI2YWFjMmJlNDVkMzhkY2JmIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvY2FuY2VsYWJsZS5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImVkZjViYzUzOTBiZDM5ZjRmYTI0YzFkYzhlNTZjNjVhNTViMWM1M2FkODdjYWJjMDU2ZWYyYTRkMGNmZGMyNjgiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvd3NyZWFkeS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJjMWVmNDFjY2FjMzkxZGI5YzZkYjQxMDU2MWVmMDJhYzE1YzI4NDU4YzJlMTY2MTA0MDRhOWI0OThiZjA2ZWViIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZGF0ZS10aW1lLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJhODQwZTI1NWJlMDcxMjlhNDAwYjc5Y2NkZjFmZGM4MzM0ODU3ZjAzYzQzZGZiY2NkMWZjYTE1MmJjOGY0ZmE1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dvcmtzcGFjZS1jbHVzdGVyLmpzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogImE0MzRlYTZhNjNmYjJjNTYwNGU4ODU3NDkwZmI1NGVlOTcxNWFiMjM4MTAwNmExOGFiNTBmZDQxNDAxZGYxNWQiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9wYXJzZS13b3Jrc3BhY2UtaWQuc3BlYy5kLnRzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICJmZTVjYjMyNzYzMzQ3YjkyNzEwMzY4MmNiYWQwNDY4ZWIwZmIxZTkzODY3OWM0NDY0NTYwOTdmNWRkZTA3NjlhIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3dvcmtzcGFjZS1pbnN0YW5jZS5qcy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiZTY2NTQ3ZWQ2YTk5NjM1MGQ5NmRmNWRiZjA3MTMyN2ViM2M5MDUyMmI4NzU5Njg3OWMxNTdmNzA5ZDE3NjEyMSIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi90ZWFtLXN1YnNjcmlwdGlvbi1wcm90b2NvbC5kLnRzIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjgwM2Q0NDFhZGEwMGFmZWJiYTU1YzViZTIwZjhjZDUzMTYzMzI1YWRhMmEzNDQ0YjMyYWViN2QwNWJhMWE3NTkiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJuYW1lIjogIi9saWIvdXRpbC9naXRwb2QtaG9zdC11cmwuZC50cy5tYXAiLAogICAgICAiZGlnZXN0IjogewogICAgICAgICJzaGEyNTYiOiAiYTdmYjI0ZWQ4ZmI3ZjI5NGVjZmQ5NzJmZDNiY2I3YTk3ZmE3OTgzYTg3OTY0YmVlZDMwYjMzMTA0NzNjYjMzOCIKICAgICAgfQogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiL2xpYi9tZXNzYWdpbmcvbm9kZS9jb25uZWN0aW9uLmpzLm1hcCIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI1Nzg1M2Q3YjdlNTFkNmEzNDYxNGMyZWFhNzQ5ZGVjMWE0MDJiNmRiODU4YzAzYTk3ZGE2ODJhYTI4NjEwYWJiIgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvZ2l0cG9kLWNvb2tpZS5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI4NTgyYzE5MWM0MzYyNDA0ZTc4NzUzZmEwMTU1YWFmMzI5YTM4NjJiMDM4ODNhMDI5NDc3YjRlNmY2MDlkZDA1IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL3V0aWwvdGltZXV0aWwuc3BlYy5qcyIsCiAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgInNoYTI1NiI6ICI0MDgxNWM4ZWMxNzUwYTg2ZGFmOWUwOTQzZWQzZDMzMWIwOTEyOWExZDJlN2ZmZmY1OTJjOTk4NTIyOGI2NWQ2IgogICAgICB9CiAgICB9LAogICAgewogICAgICAibmFtZSI6ICIvbGliL21lc3NhZ2luZy9jbGllbnQtY2FsbC1tZXRyaWNzLmQudHMubWFwIiwKICAgICAgImRpZ2VzdCI6IHsKICAgICAgICAic2hhMjU2IjogIjY4ZGViZGRjMjIxZDYzYTIyOTEzMzAxYzM0ZDU4OWI0ZGEyNTcwYjE2YTRhZTE5ZjEwM2NmODQwNGM0Y2Q0NmEiCiAgICAgIH0KICAgIH0KICBdLAogICJwcmVkaWNhdGUiOiB7CiAgICAiYnVpbGRlciI6IHsKICAgICAgImlkIjogImdpdGh1Yi5jb20vZ2l0cG9kLWlvL2xlZXdheTowLjIuMTctM2ViZmIyYUBzaGEyNTY6Yjk2MjllMmQwNDMyYWRlYTFiZTdkZGRiMzYwM2UzNmQ5ZjY5YjA5ZDg5ODVmNzI1MjU3YWRhYWRlNTFkNGE0MCIKICAgIH0sCiAgICAicmVjaXBlIjogewogICAgICAidHlwZSI6ICJodHRwczovL2dpdGh1Yi5jb20vZ2l0cG9kLWlvL2xlZXdheS9idWlsZEB5YXJuOjciLAogICAgICAiZGVmaW5lZEluTWF0ZXJpYWwiOiAwLAogICAgICAiZW50cnlQb2ludCI6ICJjb21wb25lbnRzL2dpdHBvZC1wcm90b2NvbDpsaWIiLAogICAgICAiYXJndW1lbnRzIjogWwogICAgICAgICJsZWV3YXkiLAogICAgICAgICJidWlsZCIsCiAgICAgICAgIi0tZG9ja2VyLWJ1aWxkLW9wdGlvbnMiLAogICAgICAgICJuZXR3b3JrPWhvc3QiLAogICAgICAgICItLXdlcmZ0PXRydWUiLAogICAgICAgICItYyIsCiAgICAgICAgInJlbW90ZSIsCiAgICAgICAgIi0tZG9udC1yZXRhZyIsCiAgICAgICAgIi0tY292ZXJhZ2Utb3V0cHV0LXBhdGg9L3RtcC90bXAubFJTNUd4b1ROWCIsCiAgICAgICAgIi1EdmVyc2lvbj1tcC1kb2NzLXdzcC1waGFzZS4wIiwKICAgICAgICAiLURyZW1vdmVTb3VyY2VzPWZhbHNlIiwKICAgICAgICAiLURpbWFnZVJlcG9CYXNlPWV1Lmdjci5pby9naXRwb2QtY29yZS1kZXYvYnVpbGQiLAogICAgICAgICItRGxvY2FsQXBwVmVyc2lvbj11bmtub3duIiwKICAgICAgICAiLURTRUdNRU5UX0lPX1RPS0VOPVgzYk5hdFlQdWRJSmNDejZrRmxUbjU0cHJ1bVFBcUdoIiwKICAgICAgICAiLURucG1QdWJsaXNoVHJpZ2dlcj1mYWxzZSIsCiAgICAgICAgIi1EamJNYXJrZXRwbGFjZVB1Ymxpc2hUcmlnZ2VyPWZhbHNlIgogICAgICBdLAogICAgICAiZW52aXJvbm1lbnQiOiB7CiAgICAgICAgIm1hbmlmZXN0IjogewogICAgICAgICAgImFyY2giOiAiYW1kNjQiLAogICAgICAgICAgImdvIjogImdvIHZlcnNpb24gZ28xLjE3LjUgbGludXgvYW1kNjQiLAogICAgICAgICAgIm5vZGUiOiAidjE2LjE0LjAiLAogICAgICAgICAgIm9zIjogImxpbnV4IiwKICAgICAgICAgICJ5YXJuIjogIjEuMjIuMTciCiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgIm1ldGFkYXRhIjogewogICAgICAiYnVpbGRTdGFydGVkT24iOiAiMjAyMi0wMy0xNFQxMjozNzo0Ny4xMDA1NjAwNjRaIiwKICAgICAgImJ1aWxkRmluaXNoZWRPbiI6ICIyMDIyLTAzLTE0VDEyOjM4OjEyLjE4MjI3NTg2M1oiLAogICAgICAiY29tcGxldGVuZXNzIjogewogICAgICAgICJhcmd1bWVudHMiOiB0cnVlLAogICAgICAgICJlbnZpcm9ubWVudCI6IGZhbHNlLAogICAgICAgICJtYXRlcmlhbHMiOiB0cnVlCiAgICAgIH0sCiAgICAgICJyZXByb2R1Y2libGUiOiBmYWxzZQogICAgfSwKICAgICJtYXRlcmlhbHMiOiBbCiAgICAgIHsKICAgICAgICAidXJpIjogImdpdCtodHRwczovL2dpdGh1Yi5jb20vZ2l0cG9kLWlvL2dpdHBvZC5naXQiLAogICAgICAgICJkaWdlc3QiOiB7CiAgICAgICAgICAic2hhMjU2IjogIjU3MTA2MjdiMTNkMWY2YTA1NWY2Y2JjYzk4NmM5YWM2YzFiODIyZWYiCiAgICAgICAgfQogICAgICB9CiAgICBdCiAgfQp9","signatures":null}
|
|
2
|
+
|
|
@@ -4,8 +4,7 @@
|
|
|
4
4
|
* See License-AGPL.txt in the project root for license information.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import
|
|
8
|
-
import { Without } from "./util/without";
|
|
7
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
9
8
|
import { User } from './protocol';
|
|
10
9
|
import { oneMonthLater } from './util/timeutil';
|
|
11
10
|
|
|
@@ -47,7 +46,7 @@ export interface AccountEntry {
|
|
|
47
46
|
description?: object;
|
|
48
47
|
}
|
|
49
48
|
export namespace AccountEntry {
|
|
50
|
-
export function create<T extends AccountEntry>(entry:
|
|
49
|
+
export function create<T extends AccountEntry>(entry: Omit<T, 'uid'>): T {
|
|
51
50
|
const result = entry as T;
|
|
52
51
|
result.uid = uuidv4();
|
|
53
52
|
return result;
|
|
@@ -91,7 +90,6 @@ export interface SessionDescription {
|
|
|
91
90
|
contextUrl: string;
|
|
92
91
|
workspaceId: string;
|
|
93
92
|
workspaceInstanceId: string;
|
|
94
|
-
private: boolean;
|
|
95
93
|
}
|
|
96
94
|
export namespace SessionDescription {
|
|
97
95
|
export function is(obj: any): obj is SessionDescription {
|
|
@@ -100,7 +98,6 @@ export namespace SessionDescription {
|
|
|
100
98
|
&& obj.hasOwnProperty('contextUrl')
|
|
101
99
|
&& obj.hasOwnProperty('workspaceId')
|
|
102
100
|
&& obj.hasOwnProperty('workspaceInstanceId')
|
|
103
|
-
&& obj.hasOwnProperty('private');
|
|
104
101
|
}
|
|
105
102
|
}
|
|
106
103
|
|
|
@@ -164,7 +161,7 @@ export namespace AssignedTeamSubscription {
|
|
|
164
161
|
}
|
|
165
162
|
|
|
166
163
|
export namespace Subscription {
|
|
167
|
-
export function create(newSubscription:
|
|
164
|
+
export function create(newSubscription: Omit<Subscription, 'uid'>) {
|
|
168
165
|
const subscription = newSubscription as Subscription;
|
|
169
166
|
subscription.uid = uuidv4();
|
|
170
167
|
return subscription;
|
|
@@ -193,9 +190,6 @@ export namespace Subscription {
|
|
|
193
190
|
export function isDowngraded(s: Subscription) {
|
|
194
191
|
return s.paymentData && s.paymentData.downgradeDate;
|
|
195
192
|
};
|
|
196
|
-
export function isCancelled(s: Subscription) {
|
|
197
|
-
return !!s.cancellationDate;
|
|
198
|
-
};
|
|
199
193
|
export function calculateCurrentPeriod(startDate: string, now: Date) {
|
|
200
194
|
let nextStartDate = startDate;
|
|
201
195
|
do {
|
|
@@ -215,7 +209,7 @@ export interface Period {
|
|
|
215
209
|
|
|
216
210
|
export type MaybePeriod = Period | undefined;
|
|
217
211
|
|
|
218
|
-
export type AccountEntryFixedPeriod =
|
|
212
|
+
export type AccountEntryFixedPeriod = Omit<AccountEntry, 'uid'> & { expiryDate: string };
|
|
219
213
|
export interface AccountStatement extends Period {
|
|
220
214
|
userId: string;
|
|
221
215
|
/**
|
package/src/admin-protocol.ts
CHANGED
|
@@ -5,10 +5,12 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { User, Workspace, NamedWorkspaceFeatureFlag } from "./protocol";
|
|
8
|
-
import {
|
|
8
|
+
import { FindPrebuildsParams } from "./gitpod-service";
|
|
9
|
+
import { Project, Team, PrebuildWithStatus, TeamMemberInfo, TeamMemberRole } from "./teams-projects-protocol"
|
|
9
10
|
import { WorkspaceInstance, WorkspaceInstancePhase } from "./workspace-instance";
|
|
10
11
|
import { RoleOrPermission } from "./permission";
|
|
11
12
|
import { AccountStatement } from "./accounting-protocol";
|
|
13
|
+
import { InstallationAdminSettings } from "./installation-admin-protocol";
|
|
12
14
|
|
|
13
15
|
export interface AdminServer {
|
|
14
16
|
adminGetUsers(req: AdminGetListRequest<User>): Promise<AdminGetListResult<User>>;
|
|
@@ -18,16 +20,30 @@ export interface AdminServer {
|
|
|
18
20
|
adminModifyRoleOrPermission(req: AdminModifyRoleOrPermissionRequest): Promise<User>;
|
|
19
21
|
adminModifyPermanentWorkspaceFeatureFlag(req: AdminModifyPermanentWorkspaceFeatureFlagRequest): Promise<User>;
|
|
20
22
|
|
|
23
|
+
adminGetTeamMembers(teamId: string): Promise<TeamMemberInfo[]>;
|
|
24
|
+
adminGetTeams(req: AdminGetListRequest<Team>): Promise<AdminGetListResult<Team>>;
|
|
25
|
+
adminGetTeamById(id: string): Promise<Team | undefined>;
|
|
26
|
+
adminSetTeamMemberRole(teamId: string, userId: string, role: TeamMemberRole): Promise<void>;
|
|
27
|
+
|
|
21
28
|
adminGetWorkspaces(req: AdminGetWorkspacesRequest): Promise<AdminGetListResult<WorkspaceAndInstance>>;
|
|
22
29
|
adminGetWorkspace(id: string): Promise<WorkspaceAndInstance>;
|
|
23
30
|
adminForceStopWorkspace(id: string): Promise<void>;
|
|
31
|
+
adminRestoreSoftDeletedWorkspace(id: string): Promise<void>;
|
|
32
|
+
|
|
33
|
+
adminGetProjectsBySearchTerm(req: AdminGetListRequest<Project>): Promise<AdminGetListResult<Project>>;
|
|
34
|
+
adminGetProjectById(id: string): Promise<Project | undefined>;
|
|
24
35
|
|
|
36
|
+
adminFindPrebuilds(params: FindPrebuildsParams): Promise<PrebuildWithStatus[]>;
|
|
25
37
|
adminSetLicense(key: string): Promise<void>;
|
|
26
38
|
|
|
27
39
|
adminGetAccountStatement(userId: string): Promise<AccountStatement>;
|
|
28
40
|
adminSetProfessionalOpenSource(userId: string, shouldGetProfOSS: boolean): Promise<void>;
|
|
29
41
|
adminIsStudent(userId: string): Promise<boolean>;
|
|
30
42
|
adminAddStudentEmailDomain(userId: string, domain: string): Promise<void>;
|
|
43
|
+
adminGrantExtraHours(userId: string, extraHours: number): Promise<void>;
|
|
44
|
+
|
|
45
|
+
adminGetSettings(): Promise<InstallationAdminSettings>
|
|
46
|
+
adminUpdateSettings(settings: InstallationAdminSettings): Promise<void>
|
|
31
47
|
}
|
|
32
48
|
|
|
33
49
|
export interface AdminGetListRequest<T> {
|
|
@@ -64,7 +80,7 @@ export interface AdminModifyPermanentWorkspaceFeatureFlagRequest {
|
|
|
64
80
|
}[]
|
|
65
81
|
}
|
|
66
82
|
|
|
67
|
-
export interface WorkspaceAndInstance extends
|
|
83
|
+
export interface WorkspaceAndInstance extends Omit<Workspace, "id" | "creationTime">, Omit<WorkspaceInstance, "id" | "creationTime"> {
|
|
68
84
|
workspaceId: string;
|
|
69
85
|
workspaceCreationTime: string;
|
|
70
86
|
instanceId: string;
|
|
@@ -72,6 +88,33 @@ export interface WorkspaceAndInstance extends Without<Workspace, "id"|"creationT
|
|
|
72
88
|
phase: WorkspaceInstancePhase;
|
|
73
89
|
}
|
|
74
90
|
|
|
75
|
-
export
|
|
76
|
-
|
|
77
|
-
|
|
91
|
+
export namespace WorkspaceAndInstance {
|
|
92
|
+
export function toWorkspace(wai: WorkspaceAndInstance): Workspace {
|
|
93
|
+
return {
|
|
94
|
+
id: wai.workspaceId,
|
|
95
|
+
creationTime: wai.workspaceCreationTime,
|
|
96
|
+
...wai
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export function toInstance(wai: WorkspaceAndInstance): WorkspaceInstance | undefined {
|
|
101
|
+
if (!wai.instanceId) {
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
id: wai.instanceId,
|
|
106
|
+
creationTime: wai.instanceCreationTime,
|
|
107
|
+
...wai
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export type AdminGetWorkspacesRequest = AdminGetListRequest<WorkspaceAndInstance> & AdminGetWorkspacesQuery;
|
|
113
|
+
/** The fields are meant to be used either OR (not combined) */
|
|
114
|
+
export type AdminGetWorkspacesQuery = {
|
|
115
|
+
/** we use this field in case we have a UUIDv4 and don't know whether it's an (old) workspace or instance id */
|
|
116
|
+
instanceIdOrWorkspaceId?: string;
|
|
117
|
+
instanceId?: string;
|
|
118
|
+
workspaceId?: string;
|
|
119
|
+
ownerId?: string;
|
|
120
|
+
};
|
package/src/analytics.ts
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2021 Gitpod GmbH. All rights reserved.
|
|
3
|
+
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
+
* See License-AGPL.txt in the project root for license information.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
export const IAnalyticsWriter = Symbol("IAnalyticsWriter");
|
|
9
|
+
|
|
10
|
+
type Identity =
|
|
11
|
+
| { userId: string | number; anonymousId?: string | number }
|
|
12
|
+
| { userId?: string | number; anonymousId: string | number };
|
|
13
|
+
|
|
14
|
+
interface Message {
|
|
15
|
+
messageId?: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export type IdentifyMessage = Message & Identity & {
|
|
19
|
+
traits?: any;
|
|
20
|
+
timestamp?: Date;
|
|
21
|
+
context?: any;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export type TrackMessage = Message & Identity & {
|
|
25
|
+
event: string;
|
|
26
|
+
properties?: any;
|
|
27
|
+
timestamp?: Date;
|
|
28
|
+
context?: any;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export type PageMessage = Message & Identity & {
|
|
32
|
+
properties?: any;
|
|
33
|
+
timestamp?: Date;
|
|
34
|
+
context?: any;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export type RemoteTrackMessage = Omit<TrackMessage, "timestamp" | "userId">;
|
|
38
|
+
export type RemotePageMessage = Omit<PageMessage, "timestamp" | "userId"> & {
|
|
39
|
+
includePII?: boolean;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export type RemoteIdentifyMessage = Omit<IdentifyMessage, "timestamp" | "userId">;
|
|
43
|
+
|
|
44
|
+
export interface IAnalyticsWriter {
|
|
45
|
+
|
|
46
|
+
identify(msg: IdentifyMessage): void;
|
|
47
|
+
|
|
48
|
+
track(msg: TrackMessage): void;
|
|
49
|
+
|
|
50
|
+
page(msg: PageMessage): void;
|
|
51
|
+
|
|
52
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2020 Gitpod GmbH. All rights reserved.
|
|
3
|
+
* Licensed under the GNU Affero General Public License (AGPL).
|
|
4
|
+
* See License-AGPL.txt in the project root for license information.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import * as chai from 'chai';
|
|
8
|
+
import { suite, test } from 'mocha-typescript';
|
|
9
|
+
import { Workspace } from '.';
|
|
10
|
+
import { ContextURL } from './context-url';
|
|
11
|
+
const expect = chai.expect;
|
|
12
|
+
|
|
13
|
+
type WsContextUrl = Pick<Workspace, "context" | "contextURL">;
|
|
14
|
+
|
|
15
|
+
@suite
|
|
16
|
+
export class ContextUrlTest {
|
|
17
|
+
|
|
18
|
+
@test public parseContextUrl_withEnvVar() {
|
|
19
|
+
const actual = ContextURL.getNormalizedURL({ contextURL: "passedin=test%20value/https://github.com/gitpod-io/gitpod-test-repo", context: {} } as WsContextUrl);
|
|
20
|
+
expect(actual?.host).to.equal("github.com");
|
|
21
|
+
expect(actual?.pathname).to.equal("/gitpod-io/gitpod-test-repo");
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@test public parseContextUrl_withEnvVar_withoutSchema() {
|
|
25
|
+
const actual = ContextURL.getNormalizedURL({ contextURL: "passedin=test%20value/github.com/gitpod-io/gitpod-test-repo", context: {} } as WsContextUrl);
|
|
26
|
+
expect(actual?.host).to.equal("github.com");
|
|
27
|
+
expect(actual?.pathname).to.equal("/gitpod-io/gitpod-test-repo");
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@test public parseContextUrl_withEnvVar_sshUrl() {
|
|
31
|
+
const actual = ContextURL.getNormalizedURL({ contextURL: "passedin=test%20value/git@github.com:gitpod-io/gitpod-test-repo.git", context: {} } as WsContextUrl);
|
|
32
|
+
expect(actual?.host).to.equal("github.com");
|
|
33
|
+
expect(actual?.pathname).to.equal("/gitpod-io/gitpod-test-repo.git");
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@test public parseContextUrl_withPrebuild() {
|
|
37
|
+
const actual = ContextURL.getNormalizedURL({ contextURL: "prebuild/https://github.com/gitpod-io/gitpod-test-repo", context: {} } as WsContextUrl);
|
|
38
|
+
expect(actual?.host).to.equal("github.com");
|
|
39
|
+
expect(actual?.pathname).to.equal("/gitpod-io/gitpod-test-repo");
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@test public parseContextUrl_withPrebuild_withoutSchema() {
|
|
43
|
+
const actual = ContextURL.getNormalizedURL({ contextURL: "prebuild/github.com/gitpod-io/gitpod-test-repo", context: {} } as WsContextUrl);
|
|
44
|
+
expect(actual?.host).to.equal("github.com");
|
|
45
|
+
expect(actual?.pathname).to.equal("/gitpod-io/gitpod-test-repo");
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@test public parseContextUrl_badUrl() {
|
|
49
|
+
const actual = ContextURL.getNormalizedURL({ contextURL: "[Object object]", context: {} } as WsContextUrl);
|
|
50
|
+
expect(actual).to.be.undefined;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
module.exports = new ContextUrlTest()
|