@alauda-fe/common 1.4.28-beta.6 → 1.4.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/array-form-table/form/component.d.ts +1 -1
  2. package/code/code-editor-configs.d.ts +2 -0
  3. package/code/managed-fields-folder.util.d.ts +35 -0
  4. package/code/public-api.d.ts +4 -0
  5. package/code/resource-yaml-display/component.d.ts +64 -6
  6. package/code/resource-yaml-editor/component.d.ts +95 -0
  7. package/code/yaml-examples.d.ts +8 -0
  8. package/code/yaml-sidebar/component.d.ts +57 -0
  9. package/code/yaml-sidebar/types.d.ts +21 -0
  10. package/core/abstract/base-nested-form-control.d.ts +1 -1
  11. package/core/services/kubernetes-schema.service.d.ts +44 -0
  12. package/core/services/public-api.d.ts +1 -0
  13. package/core/types/openapi.d.ts +37 -0
  14. package/core/types/public-api.d.ts +1 -0
  15. package/esm2022/abnormal-page/abnormal-page.component.mjs +1 -1
  16. package/esm2022/array-form-table/form/component.mjs +1 -1
  17. package/esm2022/array-form-table/key-value-form/component.mjs +1 -1
  18. package/esm2022/array-form-table/key-value-table/component.mjs +1 -1
  19. package/esm2022/array-form-table/string-array-form/component.mjs +1 -1
  20. package/esm2022/async-data/error-page/component.mjs +1 -1
  21. package/esm2022/async-data/page-state/component.mjs +1 -1
  22. package/esm2022/business/notification-disabled-container/component.mjs +1 -1
  23. package/esm2022/business/resource-select/exports/cluster-list/component.mjs +1 -1
  24. package/esm2022/business/resource-select/exports/cluster-selector/component.mjs +1 -1
  25. package/esm2022/business/resource-select/exports/icon/component.mjs +1 -1
  26. package/esm2022/business/resource-select/exports/mesh-group-selector/component.mjs +1 -1
  27. package/esm2022/business/resource-select/exports/namespace-list/component.mjs +1 -1
  28. package/esm2022/business/resource-select/exports/namespace-page/component.mjs +1 -1
  29. package/esm2022/business/resource-select/exports/namespace-selector/component.mjs +1 -1
  30. package/esm2022/business/resource-select/exports/project-list/component.mjs +1 -1
  31. package/esm2022/business/resource-select/exports/project-page/component.mjs +1 -1
  32. package/esm2022/business/resource-select/exports/project-selector/component.mjs +1 -1
  33. package/esm2022/business/resource-select/internals/data-grid/component.mjs +1 -1
  34. package/esm2022/business/resource-select/internals/meshgroup-list/component.mjs +1 -1
  35. package/esm2022/business/resource-select/internals/no-data/component.mjs +1 -1
  36. package/esm2022/business/resource-select/internals/resource-dashboard/component.mjs +1 -1
  37. package/esm2022/business/resource-select/internals/selector-popup/component.mjs +1 -1
  38. package/esm2022/chart/common/axis/axis-label.component.mjs +1 -1
  39. package/esm2022/chart/common/axis/x-axis-ticks.component.mjs +1 -1
  40. package/esm2022/chart/common/axis/x-axis.component.mjs +1 -1
  41. package/esm2022/chart/common/axis/x-plot-lines.component.mjs +1 -1
  42. package/esm2022/chart/common/axis/y-axis-ticks.component.mjs +1 -1
  43. package/esm2022/chart/common/axis/y-axis.component.mjs +1 -1
  44. package/esm2022/chart/common/axis/y-plot-lines.component.mjs +1 -1
  45. package/esm2022/chart/common/chart/chart.component.mjs +1 -1
  46. package/esm2022/chart/common/legend/legend.component.mjs +1 -1
  47. package/esm2022/chart/common/range-area/range-area.component.mjs +1 -1
  48. package/esm2022/chart/common/reference-area/reference-area.component.mjs +1 -1
  49. package/esm2022/chart/common/series/area-series.component.mjs +1 -1
  50. package/esm2022/chart/common/series/bar-path.component.mjs +1 -1
  51. package/esm2022/chart/common/series/bar-series.component.mjs +1 -1
  52. package/esm2022/chart/common/series/line-series.component.mjs +1 -1
  53. package/esm2022/chart/common/tooltip/tooltip.component.mjs +1 -1
  54. package/esm2022/chart/custom-template/dropdown-legend.mjs +1 -1
  55. package/esm2022/code/code-display-dialog/component.mjs +1 -1
  56. package/esm2022/code/code-editor-configs.mjs +12 -2
  57. package/esm2022/code/k8s-yaml-display-dialog/component.mjs +1 -1
  58. package/esm2022/code/managed-fields-folder.util.mjs +147 -0
  59. package/esm2022/code/public-api.mjs +5 -1
  60. package/esm2022/code/resource-yaml-display/component.mjs +257 -43
  61. package/esm2022/code/resource-yaml-editor/component.mjs +392 -0
  62. package/esm2022/code/yaml-examples.mjs +337 -0
  63. package/esm2022/code/yaml-sidebar/component.mjs +482 -0
  64. package/esm2022/code/yaml-sidebar/types.mjs +2 -0
  65. package/esm2022/core/components/tree/node/component.mjs +1 -1
  66. package/esm2022/core/components/tree/tree/component.mjs +1 -1
  67. package/esm2022/core/directives/readonly-field.directive.mjs +1 -1
  68. package/esm2022/core/services/kubernetes-schema.service.mjs +129 -0
  69. package/esm2022/core/services/public-api.mjs +2 -1
  70. package/esm2022/core/services/workspace-helper.service.mjs +4 -3
  71. package/esm2022/core/types/openapi.mjs +2 -0
  72. package/esm2022/core/types/public-api.mjs +2 -1
  73. package/esm2022/custom-columns-setting/component.mjs +1 -1
  74. package/esm2022/disabled-container/disabled-container.component.mjs +1 -1
  75. package/esm2022/editable/editable.component.mjs +1 -1
  76. package/esm2022/editable-text/component.mjs +1 -1
  77. package/esm2022/exec/placeholder/component.mjs +1 -1
  78. package/esm2022/exec/terminal/component.mjs +1 -1
  79. package/esm2022/exec/terminal-group/component.mjs +3 -3
  80. package/esm2022/feature-gate-forbidden/component/component.mjs +1 -1
  81. package/esm2022/form/errors-mapper/errors-mapper-component/component.mjs +1 -1
  82. package/esm2022/form/errors-mapper/errors-mapper.directive.mjs +1 -1
  83. package/esm2022/form/labels-editor/component.mjs +1 -1
  84. package/esm2022/form/taints-editor/component.mjs +1 -1
  85. package/esm2022/form/upload-file/component.mjs +1 -1
  86. package/esm2022/form/validators/strong-password/strong-password-tooltip/component.mjs +1 -1
  87. package/esm2022/graph-canvas/components/graph-actions.component.mjs +1 -1
  88. package/esm2022/graph-canvas/components/graph-canvas.component.mjs +1 -1
  89. package/esm2022/graph-canvas/components/graph-link.component.mjs +1 -1
  90. package/esm2022/graph-canvas/components/graph-links.component.mjs +1 -1
  91. package/esm2022/grid-layout/components/grid/component.mjs +1 -1
  92. package/esm2022/grid-layout/components/grid-items/component.mjs +1 -1
  93. package/esm2022/help-document/component.mjs +1 -1
  94. package/esm2022/k8s-resource-list/footer/component.mjs +1 -1
  95. package/esm2022/k8s-shared/resource-mark/k8s-resource-mark.component.mjs +1 -1
  96. package/esm2022/k8s-shared/update-description-dialog/component.mjs +1 -1
  97. package/esm2022/k8s-shared/update-display-name-dialog/component.mjs +1 -1
  98. package/esm2022/k8s-shared/update-key-value-dialog/component.mjs +1 -1
  99. package/esm2022/lazy-component/lazy-load-component.mjs +1 -1
  100. package/esm2022/license/license-error/component.mjs +1 -1
  101. package/esm2022/list-display/component.mjs +1 -1
  102. package/esm2022/metric-chart/metric-chart.component.mjs +1 -1
  103. package/esm2022/metric-chart/metric-time-pick.mjs +1 -1
  104. package/esm2022/multi-search/action-input/component.mjs +1 -1
  105. package/esm2022/multi-search/form/component.mjs +1 -1
  106. package/esm2022/multi-search/multi-search-tags/component.mjs +1 -1
  107. package/esm2022/mutable/mosaic/mosaic.component.mjs +1 -1
  108. package/esm2022/notification/feedback-notification/component.mjs +1 -1
  109. package/esm2022/overview-banner/overview-banner.component.mjs +1 -1
  110. package/esm2022/page-guard/component/component.mjs +1 -1
  111. package/esm2022/page-scaffold/navigation/breadcrumb/breadcrumb.component.mjs +1 -1
  112. package/esm2022/page-scaffold/navigation/nav-menu/nav-item-li/nav-item-li.component.mjs +1 -1
  113. package/esm2022/page-scaffold/navigation/nav-menu/nav-item-ul/nav-item-ul.component.mjs +1 -1
  114. package/esm2022/page-scaffold/navigation/nav-menu/nav-menu.component.mjs +1 -1
  115. package/esm2022/page-scaffold/page/notices/maintenance.component.mjs +1 -1
  116. package/esm2022/page-scaffold/page/notices/notice.component.mjs +1 -1
  117. package/esm2022/page-scaffold/page/page.component.mjs +1 -1
  118. package/esm2022/page-scaffold/page-header/account-menu/component/component.mjs +1 -1
  119. package/esm2022/page-scaffold/page-header/common-layout/namespace-select/component.mjs +1 -1
  120. package/esm2022/page-scaffold/page-header/common-layout/product-select/component.mjs +1 -1
  121. package/esm2022/page-scaffold/page-header/component.mjs +1 -1
  122. package/esm2022/page-scaffold/page-header/enterprise-support-status/component.mjs +1 -1
  123. package/esm2022/page-scaffold/page-header/header-notify/component/header-notify.component.mjs +1 -1
  124. package/esm2022/page-scaffold/page-header/header-notify/component/notification-list/notification-list.component.mjs +1 -1
  125. package/esm2022/page-scaffold/page-header/help-menu/component/component.mjs +1 -1
  126. package/esm2022/pie-derivative-chart/donut-status/component.mjs +1 -1
  127. package/esm2022/pie-derivative-chart/radial-bar/radial-bar-chart.component.mjs +1 -1
  128. package/esm2022/pod-status/component.mjs +1 -1
  129. package/esm2022/searchable-selector/component.mjs +1 -1
  130. package/esm2022/skeleton/item/component.mjs +1 -1
  131. package/esm2022/skeleton/nav-skeleton/component.mjs +1 -1
  132. package/esm2022/table/component.mjs +1 -1
  133. package/esm2022/view-chart/custom-template/dropdown-legend.mjs +1 -1
  134. package/esm2022/view-chart/legend/legend.component.mjs +1 -1
  135. package/esm2022/view-chart/view-chart.component.mjs +1 -1
  136. package/esm2022/view-zchart/custom-template/dropdown-legend.mjs +1 -1
  137. package/esm2022/view-zchart/legend/legend.component.mjs +1 -1
  138. package/esm2022/view-zchart/view-zchart.component.mjs +1 -1
  139. package/esm2022/widget/card-section/card-section.component.mjs +1 -1
  140. package/esm2022/widget/confirm-delete/confirm-delete.component.mjs +1 -1
  141. package/esm2022/widget/current-time/component.mjs +1 -1
  142. package/esm2022/widget/date-range-picker/component.mjs +1 -1
  143. package/esm2022/widget/field-set/column/component.mjs +2 -2
  144. package/esm2022/widget/field-set/group/component.mjs +1 -1
  145. package/esm2022/widget/field-set/item/component.mjs +1 -1
  146. package/esm2022/widget/foldable-block/component.mjs +1 -1
  147. package/esm2022/widget/foldable-item-in-table/component.mjs +1 -1
  148. package/esm2022/widget/loading-mask/loading-mask.component.mjs +1 -1
  149. package/esm2022/widget/password-input/component.mjs +1 -1
  150. package/esm2022/widget/relative-time/component.mjs +1 -1
  151. package/esm2022/widget/resource-label/component.mjs +1 -1
  152. package/esm2022/widget/resource-multi-select/component.mjs +1 -1
  153. package/esm2022/widget/search-panel/component.mjs +1 -1
  154. package/esm2022/widget/search-panel/search-item/component.mjs +1 -1
  155. package/esm2022/widget/status-icon/status-icon.component.mjs +1 -1
  156. package/esm2022/widget/tags-label/component.mjs +1 -1
  157. package/esm2022/widget/terminating-tag/component.mjs +1 -1
  158. package/esm2022/widget/text-ellipsis/component.mjs +1 -1
  159. package/esm2022/widget/text-with-url/component.mjs +1 -1
  160. package/esm2022/widget/zero-state/zero-state.component.mjs +1 -1
  161. package/esm2022/workload-status-icon/component.mjs +1 -1
  162. package/esm2022/xterm/xterm-terminal/xterm-terminal.component.mjs +1 -1
  163. package/esm2022/xterm/xterm.component.mjs +1 -1
  164. package/package.json +1 -1
  165. package/styles/global.scss +4 -0
@@ -0,0 +1,337 @@
1
+ /**
2
+ * Kubernetes 资源的内置 YAML 示例
3
+ * 按照 apiVersion.kind 的格式组织
4
+ */
5
+ export const BUILT_IN_YAML_EXAMPLES = {
6
+ 'apps/v1.Deployment': [
7
+ {
8
+ title: 'Basic Deployment',
9
+ description: 'A basic deployment example with nginx container',
10
+ yaml: `apiVersion: apps/v1
11
+ kind: Deployment
12
+ metadata:
13
+ name: example
14
+ spec:
15
+ selector:
16
+ matchLabels:
17
+ app: httpd
18
+ replicas: 3
19
+ template:
20
+ metadata:
21
+ labels:
22
+ app: httpd
23
+ spec:
24
+ containers:
25
+ - name: httpd
26
+ image: nginx:1.7.9
27
+ ports:
28
+ - containerPort: 8080`,
29
+ },
30
+ ],
31
+ 'v1.ConfigMap': [
32
+ {
33
+ title: 'Basic ConfigMap',
34
+ description: 'A basic ConfigMap example with properties and file data',
35
+ yaml: `apiVersion: v1
36
+ kind: ConfigMap
37
+ metadata:
38
+ name: example
39
+ data:
40
+ example.property.1: hello
41
+ example.property.2: world
42
+ example.property.file: |-
43
+ property.1=value-1
44
+ property.2=value-2
45
+ property.3=value-3`,
46
+ },
47
+ ],
48
+ 'batch/v1.CronJob': [
49
+ {
50
+ title: 'Basic CronJob',
51
+ description: 'A basic CronJob example that runs daily',
52
+ yaml: `apiVersion: batch/v1
53
+ kind: CronJob
54
+ metadata:
55
+ name: example
56
+ spec:
57
+ schedule: "@daily"
58
+ jobTemplate:
59
+ spec:
60
+ template:
61
+ spec:
62
+ containers:
63
+ - name: hello
64
+ image: busybox
65
+ args:
66
+ - /bin/sh
67
+ - -c
68
+ - date; echo Hello from the Kubernetes cluster
69
+ restartPolicy: OnFailure`,
70
+ },
71
+ ],
72
+ 'v1.PersistentVolume': [
73
+ {
74
+ title: 'Basic PersistentVolume',
75
+ description: 'A basic PersistentVolume example with NFS storage',
76
+ yaml: `apiVersion: v1
77
+ kind: PersistentVolume
78
+ metadata:
79
+ name: example
80
+ spec:
81
+ capacity:
82
+ storage: 5Gi
83
+ accessModes:
84
+ - ReadWriteOnce
85
+ persistentVolumeReclaimPolicy: Retain
86
+ storageClassName: slow
87
+ nfs:
88
+ path: /tmp
89
+ server: 172.17.0.2`,
90
+ },
91
+ ],
92
+ 'autoscaling/v2.HorizontalPodAutoscaler': [
93
+ {
94
+ title: 'Basic HorizontalPodAutoscaler',
95
+ description: 'A basic HPA example with CPU utilization target',
96
+ yaml: `apiVersion: autoscaling/v2
97
+ kind: HorizontalPodAutoscaler
98
+ metadata:
99
+ name: example
100
+ spec:
101
+ scaleTargetRef:
102
+ apiVersion: apps/v1
103
+ kind: Deployment
104
+ name: example
105
+ minReplicas: 1
106
+ maxReplicas: 3
107
+ metrics:
108
+ - type: Resource
109
+ resource:
110
+ name: cpu
111
+ target:
112
+ averageUtilization: 50
113
+ type: Utilization`,
114
+ },
115
+ ],
116
+ 'apps/v1.DaemonSet': [
117
+ {
118
+ title: 'Basic DaemonSet',
119
+ description: 'A basic DaemonSet example with nginx container',
120
+ yaml: `apiVersion: apps/v1
121
+ kind: DaemonSet
122
+ metadata:
123
+ name: example
124
+ spec:
125
+ selector:
126
+ matchLabels:
127
+ app: httpd
128
+ template:
129
+ metadata:
130
+ labels:
131
+ app: httpd
132
+ spec:
133
+ containers:
134
+ - name: httpd
135
+ image: nginx:1.7.9
136
+ ports:
137
+ - containerPort: 8080`,
138
+ },
139
+ ],
140
+ 'v1.PersistentVolumeClaim': [
141
+ {
142
+ title: 'Basic PersistentVolumeClaim',
143
+ description: 'A basic PVC example requesting 1Gi storage',
144
+ yaml: `apiVersion: v1
145
+ kind: PersistentVolumeClaim
146
+ metadata:
147
+ name: example
148
+ spec:
149
+ accessModes:
150
+ - ReadWriteOnce
151
+ volumeMode: Filesystem
152
+ resources:
153
+ requests:
154
+ storage: 1Gi`,
155
+ },
156
+ ],
157
+ 'v1.ResourceQuota': [
158
+ {
159
+ title: 'Compute ResourceQuota',
160
+ description: 'A ResourceQuota example for compute resources',
161
+ yaml: `apiVersion: v1
162
+ kind: ResourceQuota
163
+ metadata:
164
+ name: compute-quota
165
+ namespace: default
166
+ spec:
167
+ hard:
168
+ requests.cpu: '1'
169
+ requests.memory: 1Gi
170
+ limits.cpu: '2'
171
+ limits.memory: 2Gi`,
172
+ },
173
+ {
174
+ title: 'Storage Class ResourceQuota',
175
+ description: 'A ResourceQuota example for storage class specific quotas',
176
+ yaml: `apiVersion: v1
177
+ kind: ResourceQuota
178
+ metadata:
179
+ name: storage-class-quota
180
+ namespace: default
181
+ spec:
182
+ hard:
183
+ requests.storage: 100Gi
184
+ persistentvolumeclaims: '100'
185
+ # For quota specific to a storage class, the storage class must have the same name
186
+ gold.storage-class.kubernetes.io/requests.storage: 3Gi
187
+ gold.storage-class.kubernetes.io/persistentvolumeclaims: '5'
188
+ silver.storage-class.kubernetes.io/requests.storage: 2Gi
189
+ silver.storage-class.kubernetes.io/persistentvolumeclaims: '3'
190
+ bronze.storage-class.kubernetes.io/requests.storage: 1Gi
191
+ bronze.storage-class.kubernetes.io/persistentvolumeclaims: '1'`,
192
+ },
193
+ {
194
+ title: 'Object Counts ResourceQuota',
195
+ description: 'A ResourceQuota example for object count limits',
196
+ yaml: `apiVersion: v1
197
+ kind: ResourceQuota
198
+ metadata:
199
+ name: object-counts
200
+ namespace: default
201
+ spec:
202
+ hard:
203
+ configmaps: "10"
204
+ persistentvolumeclaims: "4"
205
+ replicationcontrollers: "20"
206
+ secrets: "10"
207
+ services: "10"
208
+ services.loadbalancers: "2"`,
209
+ },
210
+ ],
211
+ 'v1.LimitRange': [
212
+ {
213
+ title: 'Memory LimitRange',
214
+ description: 'A LimitRange example for container memory limits',
215
+ yaml: `apiVersion: v1
216
+ kind: LimitRange
217
+ metadata:
218
+ name: mem-limit-range
219
+ spec:
220
+ limits:
221
+ - default:
222
+ memory: 512Mi
223
+ defaultRequest:
224
+ memory: 256Mi
225
+ type: Container`,
226
+ },
227
+ ],
228
+ 'apps/v1.StatefulSet': [
229
+ {
230
+ title: 'Basic StatefulSet',
231
+ description: 'A basic StatefulSet example with persistent storage',
232
+ yaml: `apiVersion: apps/v1
233
+ kind: StatefulSet
234
+ metadata:
235
+ name: example
236
+ spec:
237
+ serviceName: "httpd"
238
+ replicas: 3
239
+ selector:
240
+ matchLabels:
241
+ app: httpd
242
+ template:
243
+ metadata:
244
+ labels:
245
+ app: httpd
246
+ spec:
247
+ terminationGracePeriodSeconds: 10
248
+ containers:
249
+ - name: httpd
250
+ image: nginx:1.7.9
251
+ ports:
252
+ - containerPort: 8080
253
+ name: web
254
+ volumeMounts:
255
+ - name: www
256
+ mountPath: /var/www/html
257
+ volumeClaimTemplates:
258
+ - metadata:
259
+ name: www
260
+ spec:
261
+ accessModes: [ "ReadWriteOnce" ]
262
+ storageClassName: my-storage-class
263
+ resources:
264
+ requests:
265
+ storage: 1Gi`,
266
+ },
267
+ ],
268
+ 'storage.k8s.io/v1.StorageClass': [
269
+ {
270
+ title: 'Basic StorageClass',
271
+ description: 'A basic StorageClass example',
272
+ yaml: `apiVersion: storage.k8s.io/v1
273
+ kind: StorageClass
274
+ metadata:
275
+ name: example
276
+ provisioner: my-provisioner
277
+ reclaimPolicy: Delete`,
278
+ },
279
+ ],
280
+ 'v1.Secret': [
281
+ {
282
+ title: 'Basic Secret',
283
+ description: 'A basic Secret example with username and password',
284
+ yaml: `apiVersion: v1
285
+ kind: Secret
286
+ metadata:
287
+ name: example
288
+ type: Opaque
289
+ stringData:
290
+ username: admin
291
+ password: opensesame`,
292
+ },
293
+ ],
294
+ 'app.k8s.io/v1beta1.Application': [
295
+ {
296
+ title: 'Basic Application',
297
+ description: 'A basic Application example with Deployment and Service',
298
+ yaml: `apiVersion: apps/v1
299
+ kind: Deployment
300
+ metadata:
301
+ labels:
302
+ app: nginx
303
+ name: nginx-deployment
304
+ spec:
305
+ replicas: 1
306
+ selector:
307
+ matchLabels:
308
+ app: nginx
309
+ template:
310
+ metadata:
311
+ labels:
312
+ app: nginx
313
+ spec:
314
+ containers:
315
+ - image: nginx:1.7.9
316
+ name: nginx
317
+ ports:
318
+ - containerPort: 80
319
+ ---
320
+ apiVersion: v1
321
+ kind: Service
322
+ metadata:
323
+ labels:
324
+ app: nginx
325
+ name: nginx
326
+ spec:
327
+ ports:
328
+ - port: 80
329
+ protocol: TCP
330
+ targetPort: 80
331
+ selector:
332
+ app: nginx
333
+ type: ClusterIP`,
334
+ },
335
+ ],
336
+ };
337
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFtbC1leGFtcGxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9jb2RlL3lhbWwtZXhhbXBsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQXFDO0lBQ3RFLG9CQUFvQixFQUFFO1FBQ3BCO1lBQ0UsS0FBSyxFQUFFLGtCQUFrQjtZQUN6QixXQUFXLEVBQUUsaURBQWlEO1lBQzlELElBQUksRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCQWtCa0I7U0FDekI7S0FDRjtJQUVELGNBQWMsRUFBRTtRQUNkO1lBQ0UsS0FBSyxFQUFFLGlCQUFpQjtZQUN4QixXQUFXLEVBQUUseURBQXlEO1lBQ3RFLElBQUksRUFBRTs7Ozs7Ozs7Ozt1QkFVVztTQUNsQjtLQUNGO0lBRUQsa0JBQWtCLEVBQUU7UUFDbEI7WUFDRSxLQUFLLEVBQUUsZUFBZTtZQUN0QixXQUFXLEVBQUUseUNBQXlDO1lBQ3RELElBQUksRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7bUNBaUJ1QjtTQUM5QjtLQUNGO0lBRUQscUJBQXFCLEVBQUU7UUFDckI7WUFDRSxLQUFLLEVBQUUsd0JBQXdCO1lBQy9CLFdBQVcsRUFBRSxtREFBbUQ7WUFDaEUsSUFBSSxFQUFFOzs7Ozs7Ozs7Ozs7O3VCQWFXO1NBQ2xCO0tBQ0Y7SUFFRCx3Q0FBd0MsRUFBRTtRQUN4QztZQUNFLEtBQUssRUFBRSwrQkFBK0I7WUFDdEMsV0FBVyxFQUFFLGlEQUFpRDtZQUM5RCxJQUFJLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQWlCYztTQUNyQjtLQUNGO0lBRUQsbUJBQW1CLEVBQUU7UUFDbkI7WUFDRSxLQUFLLEVBQUUsaUJBQWlCO1lBQ3hCLFdBQVcsRUFBRSxnREFBZ0Q7WUFDN0QsSUFBSSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs4QkFpQmtCO1NBQ3pCO0tBQ0Y7SUFFRCwwQkFBMEIsRUFBRTtRQUMxQjtZQUNFLEtBQUssRUFBRSw2QkFBNkI7WUFDcEMsV0FBVyxFQUFFLDRDQUE0QztZQUN6RCxJQUFJLEVBQUU7Ozs7Ozs7Ozs7bUJBVU87U0FDZDtLQUNGO0lBRUQsa0JBQWtCLEVBQUU7UUFDbEI7WUFDRSxLQUFLLEVBQUUsdUJBQXVCO1lBQzlCLFdBQVcsRUFBRSwrQ0FBK0M7WUFDNUQsSUFBSSxFQUFFOzs7Ozs7Ozs7O3VCQVVXO1NBQ2xCO1FBQ0Q7WUFDRSxLQUFLLEVBQUUsNkJBQTZCO1lBQ3BDLFdBQVcsRUFBRSwyREFBMkQ7WUFDeEUsSUFBSSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7bUVBZXVEO1NBQzlEO1FBQ0Q7WUFDRSxLQUFLLEVBQUUsNkJBQTZCO1lBQ3BDLFdBQVcsRUFBRSxpREFBaUQ7WUFDOUQsSUFBSSxFQUFFOzs7Ozs7Ozs7Ozs7Z0NBWW9CO1NBQzNCO0tBQ0Y7SUFFRCxlQUFlLEVBQUU7UUFDZjtZQUNFLEtBQUssRUFBRSxtQkFBbUI7WUFDMUIsV0FBVyxFQUFFLGtEQUFrRDtZQUMvRCxJQUFJLEVBQUU7Ozs7Ozs7Ozs7b0JBVVE7U0FDZjtLQUNGO0lBRUQscUJBQXFCLEVBQUU7UUFDckI7WUFDRSxLQUFLLEVBQUUsbUJBQW1CO1lBQzFCLFdBQVcsRUFBRSxxREFBcUQ7WUFDbEUsSUFBSSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7dUJBaUNXO1NBQ2xCO0tBQ0Y7SUFFRCxnQ0FBZ0MsRUFBRTtRQUNoQztZQUNFLEtBQUssRUFBRSxvQkFBb0I7WUFDM0IsV0FBVyxFQUFFLDhCQUE4QjtZQUMzQyxJQUFJLEVBQUU7Ozs7O3NCQUtVO1NBQ2pCO0tBQ0Y7SUFFRCxXQUFXLEVBQUU7UUFDWDtZQUNFLEtBQUssRUFBRSxjQUFjO1lBQ3JCLFdBQVcsRUFBRSxtREFBbUQ7WUFDaEUsSUFBSSxFQUFFOzs7Ozs7O3VCQU9XO1NBQ2xCO0tBQ0Y7SUFFRCxnQ0FBZ0MsRUFBRTtRQUNoQztZQUNFLEtBQUssRUFBRSxtQkFBbUI7WUFDMUIsV0FBVyxFQUFFLHlEQUF5RDtZQUN0RSxJQUFJLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCQW1DTTtTQUNiO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgWWFtbEV4YW1wbGUgfSBmcm9tICcuL3lhbWwtc2lkZWJhci90eXBlcyc7XG5cbi8qKlxuICogS3ViZXJuZXRlcyDotYTmupDnmoTlhoXnva4gWUFNTCDnpLrkvotcbiAqIOaMieeFpyBhcGlWZXJzaW9uLmtpbmQg55qE5qC85byP57uE57uHXG4gKi9cbmV4cG9ydCBjb25zdCBCVUlMVF9JTl9ZQU1MX0VYQU1QTEVTOiB7IFtrZXk6IHN0cmluZ106IFlhbWxFeGFtcGxlW10gfSA9IHtcbiAgJ2FwcHMvdjEuRGVwbG95bWVudCc6IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ0Jhc2ljIERlcGxveW1lbnQnLFxuICAgICAgZGVzY3JpcHRpb246ICdBIGJhc2ljIGRlcGxveW1lbnQgZXhhbXBsZSB3aXRoIG5naW54IGNvbnRhaW5lcicsXG4gICAgICB5YW1sOiBgYXBpVmVyc2lvbjogYXBwcy92MVxua2luZDogRGVwbG95bWVudFxubWV0YWRhdGE6XG4gIG5hbWU6IGV4YW1wbGVcbnNwZWM6XG4gIHNlbGVjdG9yOlxuICAgIG1hdGNoTGFiZWxzOlxuICAgICAgYXBwOiBodHRwZFxuICByZXBsaWNhczogM1xuICB0ZW1wbGF0ZTpcbiAgICBtZXRhZGF0YTpcbiAgICAgIGxhYmVsczpcbiAgICAgICAgYXBwOiBodHRwZFxuICAgIHNwZWM6XG4gICAgICBjb250YWluZXJzOlxuICAgICAgLSBuYW1lOiBodHRwZFxuICAgICAgICBpbWFnZTogbmdpbng6MS43LjlcbiAgICAgICAgcG9ydHM6XG4gICAgICAgIC0gY29udGFpbmVyUG9ydDogODA4MGAsXG4gICAgfSxcbiAgXSxcblxuICAndjEuQ29uZmlnTWFwJzogW1xuICAgIHtcbiAgICAgIHRpdGxlOiAnQmFzaWMgQ29uZmlnTWFwJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQSBiYXNpYyBDb25maWdNYXAgZXhhbXBsZSB3aXRoIHByb3BlcnRpZXMgYW5kIGZpbGUgZGF0YScsXG4gICAgICB5YW1sOiBgYXBpVmVyc2lvbjogdjFcbmtpbmQ6IENvbmZpZ01hcFxubWV0YWRhdGE6XG4gIG5hbWU6IGV4YW1wbGVcbmRhdGE6XG4gIGV4YW1wbGUucHJvcGVydHkuMTogaGVsbG9cbiAgZXhhbXBsZS5wcm9wZXJ0eS4yOiB3b3JsZFxuICBleGFtcGxlLnByb3BlcnR5LmZpbGU6IHwtXG4gICAgcHJvcGVydHkuMT12YWx1ZS0xXG4gICAgcHJvcGVydHkuMj12YWx1ZS0yXG4gICAgcHJvcGVydHkuMz12YWx1ZS0zYCxcbiAgICB9LFxuICBdLFxuXG4gICdiYXRjaC92MS5Dcm9uSm9iJzogW1xuICAgIHtcbiAgICAgIHRpdGxlOiAnQmFzaWMgQ3JvbkpvYicsXG4gICAgICBkZXNjcmlwdGlvbjogJ0EgYmFzaWMgQ3JvbkpvYiBleGFtcGxlIHRoYXQgcnVucyBkYWlseScsXG4gICAgICB5YW1sOiBgYXBpVmVyc2lvbjogYmF0Y2gvdjFcbmtpbmQ6IENyb25Kb2Jcbm1ldGFkYXRhOlxuICBuYW1lOiBleGFtcGxlXG5zcGVjOlxuICBzY2hlZHVsZTogXCJAZGFpbHlcIlxuICBqb2JUZW1wbGF0ZTpcbiAgICBzcGVjOlxuICAgICAgdGVtcGxhdGU6XG4gICAgICAgIHNwZWM6XG4gICAgICAgICAgY29udGFpbmVyczpcbiAgICAgICAgICAtIG5hbWU6IGhlbGxvXG4gICAgICAgICAgICBpbWFnZTogYnVzeWJveFxuICAgICAgICAgICAgYXJnczpcbiAgICAgICAgICAgIC0gL2Jpbi9zaFxuICAgICAgICAgICAgLSAtY1xuICAgICAgICAgICAgLSBkYXRlOyBlY2hvIEhlbGxvIGZyb20gdGhlIEt1YmVybmV0ZXMgY2x1c3RlclxuICAgICAgICAgIHJlc3RhcnRQb2xpY3k6IE9uRmFpbHVyZWAsXG4gICAgfSxcbiAgXSxcblxuICAndjEuUGVyc2lzdGVudFZvbHVtZSc6IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ0Jhc2ljIFBlcnNpc3RlbnRWb2x1bWUnLFxuICAgICAgZGVzY3JpcHRpb246ICdBIGJhc2ljIFBlcnNpc3RlbnRWb2x1bWUgZXhhbXBsZSB3aXRoIE5GUyBzdG9yYWdlJyxcbiAgICAgIHlhbWw6IGBhcGlWZXJzaW9uOiB2MVxua2luZDogUGVyc2lzdGVudFZvbHVtZVxubWV0YWRhdGE6XG4gIG5hbWU6IGV4YW1wbGVcbnNwZWM6XG4gIGNhcGFjaXR5OlxuICAgIHN0b3JhZ2U6IDVHaVxuICBhY2Nlc3NNb2RlczpcbiAgICAtIFJlYWRXcml0ZU9uY2VcbiAgcGVyc2lzdGVudFZvbHVtZVJlY2xhaW1Qb2xpY3k6IFJldGFpblxuICBzdG9yYWdlQ2xhc3NOYW1lOiBzbG93XG4gIG5mczpcbiAgICBwYXRoOiAvdG1wXG4gICAgc2VydmVyOiAxNzIuMTcuMC4yYCxcbiAgICB9LFxuICBdLFxuXG4gICdhdXRvc2NhbGluZy92Mi5Ib3Jpem9udGFsUG9kQXV0b3NjYWxlcic6IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ0Jhc2ljIEhvcml6b250YWxQb2RBdXRvc2NhbGVyJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQSBiYXNpYyBIUEEgZXhhbXBsZSB3aXRoIENQVSB1dGlsaXphdGlvbiB0YXJnZXQnLFxuICAgICAgeWFtbDogYGFwaVZlcnNpb246IGF1dG9zY2FsaW5nL3YyXG5raW5kOiBIb3Jpem9udGFsUG9kQXV0b3NjYWxlclxubWV0YWRhdGE6XG4gIG5hbWU6IGV4YW1wbGVcbnNwZWM6XG4gIHNjYWxlVGFyZ2V0UmVmOlxuICAgIGFwaVZlcnNpb246IGFwcHMvdjFcbiAgICBraW5kOiBEZXBsb3ltZW50XG4gICAgbmFtZTogZXhhbXBsZVxuICBtaW5SZXBsaWNhczogMVxuICBtYXhSZXBsaWNhczogM1xuICBtZXRyaWNzOlxuICAtIHR5cGU6IFJlc291cmNlXG4gICAgcmVzb3VyY2U6XG4gICAgICBuYW1lOiBjcHVcbiAgICAgIHRhcmdldDpcbiAgICAgICAgYXZlcmFnZVV0aWxpemF0aW9uOiA1MFxuICAgICAgICB0eXBlOiBVdGlsaXphdGlvbmAsXG4gICAgfSxcbiAgXSxcblxuICAnYXBwcy92MS5EYWVtb25TZXQnOiBbXG4gICAge1xuICAgICAgdGl0bGU6ICdCYXNpYyBEYWVtb25TZXQnLFxuICAgICAgZGVzY3JpcHRpb246ICdBIGJhc2ljIERhZW1vblNldCBleGFtcGxlIHdpdGggbmdpbnggY29udGFpbmVyJyxcbiAgICAgIHlhbWw6IGBhcGlWZXJzaW9uOiBhcHBzL3YxXG5raW5kOiBEYWVtb25TZXRcbm1ldGFkYXRhOlxuICBuYW1lOiBleGFtcGxlXG5zcGVjOlxuICBzZWxlY3RvcjpcbiAgICBtYXRjaExhYmVsczpcbiAgICAgIGFwcDogaHR0cGRcbiAgdGVtcGxhdGU6XG4gICAgbWV0YWRhdGE6XG4gICAgICBsYWJlbHM6XG4gICAgICAgIGFwcDogaHR0cGRcbiAgICBzcGVjOlxuICAgICAgY29udGFpbmVyczpcbiAgICAgIC0gbmFtZTogaHR0cGRcbiAgICAgICAgaW1hZ2U6IG5naW54OjEuNy45XG4gICAgICAgIHBvcnRzOlxuICAgICAgICAtIGNvbnRhaW5lclBvcnQ6IDgwODBgLFxuICAgIH0sXG4gIF0sXG5cbiAgJ3YxLlBlcnNpc3RlbnRWb2x1bWVDbGFpbSc6IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ0Jhc2ljIFBlcnNpc3RlbnRWb2x1bWVDbGFpbScsXG4gICAgICBkZXNjcmlwdGlvbjogJ0EgYmFzaWMgUFZDIGV4YW1wbGUgcmVxdWVzdGluZyAxR2kgc3RvcmFnZScsXG4gICAgICB5YW1sOiBgYXBpVmVyc2lvbjogdjFcbmtpbmQ6IFBlcnNpc3RlbnRWb2x1bWVDbGFpbVxubWV0YWRhdGE6XG4gIG5hbWU6IGV4YW1wbGVcbnNwZWM6XG4gIGFjY2Vzc01vZGVzOlxuICAgIC0gUmVhZFdyaXRlT25jZVxuICB2b2x1bWVNb2RlOiBGaWxlc3lzdGVtXG4gIHJlc291cmNlczpcbiAgICByZXF1ZXN0czpcbiAgICAgIHN0b3JhZ2U6IDFHaWAsXG4gICAgfSxcbiAgXSxcblxuICAndjEuUmVzb3VyY2VRdW90YSc6IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ0NvbXB1dGUgUmVzb3VyY2VRdW90YScsXG4gICAgICBkZXNjcmlwdGlvbjogJ0EgUmVzb3VyY2VRdW90YSBleGFtcGxlIGZvciBjb21wdXRlIHJlc291cmNlcycsXG4gICAgICB5YW1sOiBgYXBpVmVyc2lvbjogdjFcbmtpbmQ6IFJlc291cmNlUXVvdGFcbm1ldGFkYXRhOlxuICBuYW1lOiBjb21wdXRlLXF1b3RhXG4gIG5hbWVzcGFjZTogZGVmYXVsdFxuc3BlYzpcbiAgaGFyZDpcbiAgICByZXF1ZXN0cy5jcHU6ICcxJ1xuICAgIHJlcXVlc3RzLm1lbW9yeTogMUdpXG4gICAgbGltaXRzLmNwdTogJzInXG4gICAgbGltaXRzLm1lbW9yeTogMkdpYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnU3RvcmFnZSBDbGFzcyBSZXNvdXJjZVF1b3RhJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQSBSZXNvdXJjZVF1b3RhIGV4YW1wbGUgZm9yIHN0b3JhZ2UgY2xhc3Mgc3BlY2lmaWMgcXVvdGFzJyxcbiAgICAgIHlhbWw6IGBhcGlWZXJzaW9uOiB2MVxua2luZDogUmVzb3VyY2VRdW90YVxubWV0YWRhdGE6XG4gIG5hbWU6IHN0b3JhZ2UtY2xhc3MtcXVvdGFcbiAgbmFtZXNwYWNlOiBkZWZhdWx0XG5zcGVjOlxuICBoYXJkOlxuICAgIHJlcXVlc3RzLnN0b3JhZ2U6IDEwMEdpXG4gICAgcGVyc2lzdGVudHZvbHVtZWNsYWltczogJzEwMCdcbiAgICAjIEZvciBxdW90YSBzcGVjaWZpYyB0byBhIHN0b3JhZ2UgY2xhc3MsIHRoZSBzdG9yYWdlIGNsYXNzIG11c3QgaGF2ZSB0aGUgc2FtZSBuYW1lXG4gICAgZ29sZC5zdG9yYWdlLWNsYXNzLmt1YmVybmV0ZXMuaW8vcmVxdWVzdHMuc3RvcmFnZTogM0dpXG4gICAgZ29sZC5zdG9yYWdlLWNsYXNzLmt1YmVybmV0ZXMuaW8vcGVyc2lzdGVudHZvbHVtZWNsYWltczogJzUnXG4gICAgc2lsdmVyLnN0b3JhZ2UtY2xhc3Mua3ViZXJuZXRlcy5pby9yZXF1ZXN0cy5zdG9yYWdlOiAyR2lcbiAgICBzaWx2ZXIuc3RvcmFnZS1jbGFzcy5rdWJlcm5ldGVzLmlvL3BlcnNpc3RlbnR2b2x1bWVjbGFpbXM6ICczJ1xuICAgIGJyb256ZS5zdG9yYWdlLWNsYXNzLmt1YmVybmV0ZXMuaW8vcmVxdWVzdHMuc3RvcmFnZTogMUdpXG4gICAgYnJvbnplLnN0b3JhZ2UtY2xhc3Mua3ViZXJuZXRlcy5pby9wZXJzaXN0ZW50dm9sdW1lY2xhaW1zOiAnMSdgLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdPYmplY3QgQ291bnRzIFJlc291cmNlUXVvdGEnLFxuICAgICAgZGVzY3JpcHRpb246ICdBIFJlc291cmNlUXVvdGEgZXhhbXBsZSBmb3Igb2JqZWN0IGNvdW50IGxpbWl0cycsXG4gICAgICB5YW1sOiBgYXBpVmVyc2lvbjogdjFcbmtpbmQ6IFJlc291cmNlUXVvdGFcbm1ldGFkYXRhOlxuICBuYW1lOiBvYmplY3QtY291bnRzXG4gIG5hbWVzcGFjZTogZGVmYXVsdFxuc3BlYzpcbiAgaGFyZDpcbiAgICBjb25maWdtYXBzOiBcIjEwXCJcbiAgICBwZXJzaXN0ZW50dm9sdW1lY2xhaW1zOiBcIjRcIlxuICAgIHJlcGxpY2F0aW9uY29udHJvbGxlcnM6IFwiMjBcIlxuICAgIHNlY3JldHM6IFwiMTBcIlxuICAgIHNlcnZpY2VzOiBcIjEwXCJcbiAgICBzZXJ2aWNlcy5sb2FkYmFsYW5jZXJzOiBcIjJcImAsXG4gICAgfSxcbiAgXSxcblxuICAndjEuTGltaXRSYW5nZSc6IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ01lbW9yeSBMaW1pdFJhbmdlJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQSBMaW1pdFJhbmdlIGV4YW1wbGUgZm9yIGNvbnRhaW5lciBtZW1vcnkgbGltaXRzJyxcbiAgICAgIHlhbWw6IGBhcGlWZXJzaW9uOiB2MVxua2luZDogTGltaXRSYW5nZVxubWV0YWRhdGE6XG4gIG5hbWU6IG1lbS1saW1pdC1yYW5nZVxuc3BlYzpcbiAgbGltaXRzOlxuICAtIGRlZmF1bHQ6XG4gICAgICBtZW1vcnk6IDUxMk1pXG4gICAgZGVmYXVsdFJlcXVlc3Q6XG4gICAgICBtZW1vcnk6IDI1Nk1pXG4gICAgdHlwZTogQ29udGFpbmVyYCxcbiAgICB9LFxuICBdLFxuXG4gICdhcHBzL3YxLlN0YXRlZnVsU2V0JzogW1xuICAgIHtcbiAgICAgIHRpdGxlOiAnQmFzaWMgU3RhdGVmdWxTZXQnLFxuICAgICAgZGVzY3JpcHRpb246ICdBIGJhc2ljIFN0YXRlZnVsU2V0IGV4YW1wbGUgd2l0aCBwZXJzaXN0ZW50IHN0b3JhZ2UnLFxuICAgICAgeWFtbDogYGFwaVZlcnNpb246IGFwcHMvdjFcbmtpbmQ6IFN0YXRlZnVsU2V0XG5tZXRhZGF0YTpcbiAgbmFtZTogZXhhbXBsZVxuc3BlYzpcbiAgc2VydmljZU5hbWU6IFwiaHR0cGRcIlxuICByZXBsaWNhczogM1xuICBzZWxlY3RvcjpcbiAgICBtYXRjaExhYmVsczpcbiAgICAgIGFwcDogaHR0cGRcbiAgdGVtcGxhdGU6XG4gICAgbWV0YWRhdGE6XG4gICAgICBsYWJlbHM6XG4gICAgICAgIGFwcDogaHR0cGRcbiAgICBzcGVjOlxuICAgICAgdGVybWluYXRpb25HcmFjZVBlcmlvZFNlY29uZHM6IDEwXG4gICAgICBjb250YWluZXJzOlxuICAgICAgLSBuYW1lOiBodHRwZFxuICAgICAgICBpbWFnZTogbmdpbng6MS43LjlcbiAgICAgICAgcG9ydHM6XG4gICAgICAgIC0gY29udGFpbmVyUG9ydDogODA4MFxuICAgICAgICAgIG5hbWU6IHdlYlxuICAgICAgICB2b2x1bWVNb3VudHM6XG4gICAgICAgIC0gbmFtZTogd3d3XG4gICAgICAgICAgbW91bnRQYXRoOiAvdmFyL3d3dy9odG1sXG4gIHZvbHVtZUNsYWltVGVtcGxhdGVzOlxuICAtIG1ldGFkYXRhOlxuICAgICAgbmFtZTogd3d3XG4gICAgc3BlYzpcbiAgICAgIGFjY2Vzc01vZGVzOiBbIFwiUmVhZFdyaXRlT25jZVwiIF1cbiAgICAgIHN0b3JhZ2VDbGFzc05hbWU6IG15LXN0b3JhZ2UtY2xhc3NcbiAgICAgIHJlc291cmNlczpcbiAgICAgICAgcmVxdWVzdHM6XG4gICAgICAgICAgc3RvcmFnZTogMUdpYCxcbiAgICB9LFxuICBdLFxuXG4gICdzdG9yYWdlLms4cy5pby92MS5TdG9yYWdlQ2xhc3MnOiBbXG4gICAge1xuICAgICAgdGl0bGU6ICdCYXNpYyBTdG9yYWdlQ2xhc3MnLFxuICAgICAgZGVzY3JpcHRpb246ICdBIGJhc2ljIFN0b3JhZ2VDbGFzcyBleGFtcGxlJyxcbiAgICAgIHlhbWw6IGBhcGlWZXJzaW9uOiBzdG9yYWdlLms4cy5pby92MVxua2luZDogU3RvcmFnZUNsYXNzXG5tZXRhZGF0YTpcbiAgbmFtZTogZXhhbXBsZVxucHJvdmlzaW9uZXI6IG15LXByb3Zpc2lvbmVyXG5yZWNsYWltUG9saWN5OiBEZWxldGVgLFxuICAgIH0sXG4gIF0sXG5cbiAgJ3YxLlNlY3JldCc6IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ0Jhc2ljIFNlY3JldCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ0EgYmFzaWMgU2VjcmV0IGV4YW1wbGUgd2l0aCB1c2VybmFtZSBhbmQgcGFzc3dvcmQnLFxuICAgICAgeWFtbDogYGFwaVZlcnNpb246IHYxXG5raW5kOiBTZWNyZXRcbm1ldGFkYXRhOlxuICBuYW1lOiBleGFtcGxlXG50eXBlOiBPcGFxdWVcbnN0cmluZ0RhdGE6XG4gIHVzZXJuYW1lOiBhZG1pblxuICBwYXNzd29yZDogb3BlbnNlc2FtZWAsXG4gICAgfSxcbiAgXSxcblxuICAnYXBwLms4cy5pby92MWJldGExLkFwcGxpY2F0aW9uJzogW1xuICAgIHtcbiAgICAgIHRpdGxlOiAnQmFzaWMgQXBwbGljYXRpb24nLFxuICAgICAgZGVzY3JpcHRpb246ICdBIGJhc2ljIEFwcGxpY2F0aW9uIGV4YW1wbGUgd2l0aCBEZXBsb3ltZW50IGFuZCBTZXJ2aWNlJyxcbiAgICAgIHlhbWw6IGBhcGlWZXJzaW9uOiBhcHBzL3YxXG5raW5kOiBEZXBsb3ltZW50XG5tZXRhZGF0YTpcbiAgbGFiZWxzOlxuICAgIGFwcDogbmdpbnhcbiAgbmFtZTogbmdpbngtZGVwbG95bWVudFxuc3BlYzpcbiAgcmVwbGljYXM6IDFcbiAgc2VsZWN0b3I6XG4gICAgbWF0Y2hMYWJlbHM6XG4gICAgICBhcHA6IG5naW54XG4gIHRlbXBsYXRlOlxuICAgIG1ldGFkYXRhOlxuICAgICAgbGFiZWxzOlxuICAgICAgICBhcHA6IG5naW54XG4gICAgc3BlYzpcbiAgICAgIGNvbnRhaW5lcnM6XG4gICAgICAgIC0gaW1hZ2U6IG5naW54OjEuNy45XG4gICAgICAgICAgbmFtZTogbmdpbnhcbiAgICAgICAgICBwb3J0czpcbiAgICAgICAgICAgIC0gY29udGFpbmVyUG9ydDogODBcbi0tLVxuYXBpVmVyc2lvbjogdjFcbmtpbmQ6IFNlcnZpY2Vcbm1ldGFkYXRhOlxuICBsYWJlbHM6XG4gICAgYXBwOiBuZ2lueFxuICBuYW1lOiBuZ2lueFxuc3BlYzpcbiAgcG9ydHM6XG4gICAgLSBwb3J0OiA4MFxuICAgICAgcHJvdG9jb2w6IFRDUFxuICAgICAgdGFyZ2V0UG9ydDogODBcbiAgc2VsZWN0b3I6XG4gICAgYXBwOiBuZ2lueFxuICB0eXBlOiBDbHVzdGVySVBgLFxuICAgIH0sXG4gIF0sXG59O1xuIl19