tide-design-system 2.0.6 → 2.0.8

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 (85) hide show
  1. package/dist/{IconAccountBalance-8d60a762.js → IconAccountBalance-f188d7c3.js} +2 -2
  2. package/dist/{IconAdd-41987be0.js → IconAdd-924ee7b8.js} +2 -2
  3. package/dist/{IconAi-54c9f1f9.js → IconAi-d04b53d1.js} +2 -2
  4. package/dist/{IconAlignSpace-0dbce580.js → IconAlignSpace-a902dd82.js} +2 -2
  5. package/dist/{IconApplePay-0aac1e20.js → IconApplePay-f4a0af2f.js} +2 -2
  6. package/dist/{IconArrowBack-942e8c4c.js → IconArrowBack-8e341c11.js} +2 -2
  7. package/dist/{IconArrowForward-4b5bcc17.js → IconArrowForward-3c47be0d.js} +2 -2
  8. package/dist/{IconArrowRight-143abfe9.js → IconArrowRight-af91d5b0.js} +2 -2
  9. package/dist/{IconAssignment-28546363.js → IconAssignment-8902b1c4.js} +2 -2
  10. package/dist/{IconAwardStar-e260b61a.js → IconAwardStar-2e86f3ee.js} +2 -2
  11. package/dist/{IconBookmark-2df361a1.js → IconBookmark-b148af92.js} +2 -2
  12. package/dist/{IconCalendarMonth-1331bb2e.js → IconCalendarMonth-a66e49c3.js} +2 -2
  13. package/dist/{IconCall-bfb28d23.js → IconCall-286e2e2c.js} +2 -2
  14. package/dist/{IconCheck-4f7c55bb.js → IconCheck-f226395e.js} +2 -2
  15. package/dist/{IconChevronLeft-111444b3.js → IconChevronLeft-1df56f5b.js} +2 -2
  16. package/dist/{IconChevronRight-f3e73764.js → IconChevronRight-a293ebab.js} +2 -2
  17. package/dist/{IconClear-7f6472ed.js → IconClear-c3120ff6.js} +2 -2
  18. package/dist/{IconClose-fe46270f.js → IconClose-d01a7195.js} +2 -2
  19. package/dist/{IconCycle-1c670925.js → IconCycle-f24ca489.js} +2 -2
  20. package/dist/{IconDelete-40861e3a.js → IconDelete-112cfb44.js} +2 -2
  21. package/dist/{IconDiamond-92bc3c14.js → IconDiamond-97e262b6.js} +2 -2
  22. package/dist/{IconEdit-2ce79ec9.js → IconEdit-55acf233.js} +2 -2
  23. package/dist/{IconError-9d150afa.js → IconError-636bae79.js} +2 -2
  24. package/dist/{IconExpandContent-4611f59a.js → IconExpandContent-4e2c65bd.js} +2 -2
  25. package/dist/{IconExpandLess-97dbbba2.js → IconExpandLess-d891e216.js} +2 -2
  26. package/dist/{IconExpandMore-74cf7746.js → IconExpandMore-f50b372f.js} +2 -2
  27. package/dist/{IconFacebook-5177a43e.js → IconFacebook-ea393a00.js} +2 -2
  28. package/dist/{IconFavorite-b8b2232b.js → IconFavorite-e48c4831.js} +2 -2
  29. package/dist/{IconFavoriteFilled-a03c18b0.js → IconFavoriteFilled-5e56ee15.js} +2 -2
  30. package/dist/{IconFormatBold-fe01c0d0.js → IconFormatBold-f54ed521.js} +2 -2
  31. package/dist/{IconFormatItalic-2b3d0f32.js → IconFormatItalic-839a567b.js} +2 -2
  32. package/dist/{IconFormatListBulleted-9f4f5f29.js → IconFormatListBulleted-968b2805.js} +2 -2
  33. package/dist/{IconForum-ad13c05f.js → IconForum-d24ae7f5.js} +2 -2
  34. package/dist/{IconGoogle-1661c713.js → IconGoogle-09d632e9.js} +2 -2
  35. package/dist/{IconGooglePay-c55f25e8.js → IconGooglePay-21519293.js} +2 -2
  36. package/dist/{IconGrid-1a6868d2.js → IconGrid-6285dc93.js} +2 -2
  37. package/dist/{IconHelp-1d25fcc1.js → IconHelp-dac96db2.js} +2 -2
  38. package/dist/{IconInfo-25020d15.js → IconInfo-3e44ee8e.js} +2 -2
  39. package/dist/{IconInsertText-a93ea55d.js → IconInsertText-cf9e8d94.js} +2 -2
  40. package/dist/{IconInstagram-393a91c5.js → IconInstagram-0e9cbad8.js} +2 -2
  41. package/dist/{IconIosShare-10a2497c.js → IconIosShare-966f94c6.js} +2 -2
  42. package/dist/{IconLayout-b486c56c.js → IconLayout-7b7e3db5.js} +2 -2
  43. package/dist/{IconLinkedIn-ed3a304e.js → IconLinkedIn-c112a15e.js} +2 -2
  44. package/dist/{IconLocalShipping-21673087.js → IconLocalShipping-c40fb702.js} +2 -2
  45. package/dist/{IconLock-c7d18ae6.js → IconLock-a6a7c6c8.js} +2 -2
  46. package/dist/{IconMail-3a6fb81c.js → IconMail-0e4f0f93.js} +2 -2
  47. package/dist/{IconMenu-27e0ea03.js → IconMenu-b1856c29.js} +2 -2
  48. package/dist/{IconMoreHoriz-97b1974a.js → IconMoreHoriz-439473cc.js} +2 -2
  49. package/dist/{IconNotifications-11566098.js → IconNotifications-b39d4c46.js} +2 -2
  50. package/dist/{IconOpenInNew-e89309cc.js → IconOpenInNew-84c05770.js} +2 -2
  51. package/dist/{IconPalette-7b39c00b.js → IconPalette-79cda0d3.js} +2 -2
  52. package/dist/{IconPaypal-581e5de8.js → IconPaypal-f82fae6d.js} +2 -2
  53. package/dist/{IconPerson-7b5fc958.js → IconPerson-d0315473.js} +2 -2
  54. package/dist/{IconPhotoCamera-dd25e6de.js → IconPhotoCamera-f011623d.js} +2 -2
  55. package/dist/{IconPinterest-f8569b8c.js → IconPinterest-b3397953.js} +2 -2
  56. package/dist/{IconPlayArrow-a7538942.js → IconPlayArrow-91ec13b9.js} +2 -2
  57. package/dist/{IconRemove-c19ef592.js → IconRemove-4818dbe1.js} +2 -2
  58. package/dist/{IconRoundedCorners-501a2efe.js → IconRoundedCorners-d81943f5.js} +2 -2
  59. package/dist/{IconSearch-c2acd4ec.js → IconSearch-d733de31.js} +2 -2
  60. package/dist/{IconSell-8a47939b.js → IconSell-805923a0.js} +2 -2
  61. package/dist/{IconShare-a8e26193.js → IconShare-1127eb49.js} +2 -2
  62. package/dist/{IconShoppingCart-78a14827.js → IconShoppingCart-560d3a93.js} +2 -2
  63. package/dist/{IconSms-3a93e423.js → IconSms-1703a868.js} +2 -2
  64. package/dist/{IconStar-8c8f1bb4.js → IconStar-3e439338.js} +2 -2
  65. package/dist/{IconSwapVert-066694ed.js → IconSwapVert-7f3e9c79.js} +2 -2
  66. package/dist/{IconThreeDRotation-7823ddb5.js → IconThreeDRotation-a88613fe.js} +2 -2
  67. package/dist/{IconTune-43f405a5.js → IconTune-081fa5f1.js} +2 -2
  68. package/dist/{IconTwitter-2bc0ee2b.js → IconTwitter-3df89b18.js} +2 -2
  69. package/dist/{IconVideocam-7deb4ac7.js → IconVideocam-2df877fc.js} +2 -2
  70. package/dist/{IconViewInAr-bf12af3e.js → IconViewInAr-e8b3c840.js} +2 -2
  71. package/dist/{IconVisibility-f6ca5bb6.js → IconVisibility-6d82554e.js} +2 -2
  72. package/dist/{IconWarning-7a1f76a9.js → IconWarning-f74b8658.js} +2 -2
  73. package/dist/{IconYoutube-6e789d14.js → IconYoutube-67040fb5.js} +2 -2
  74. package/dist/css/grid-layout.css +62 -0
  75. package/dist/css/main.css +1 -1
  76. package/dist/css/storybook.css +4 -0
  77. package/dist/css/utilities.css +3 -0
  78. package/dist/index-76cfd397.js +2116 -0
  79. package/dist/style.css +1 -1
  80. package/dist/tide-design-system.js +1 -1
  81. package/dist/types/Orientation.ts +6 -0
  82. package/dist/types/Styles.ts +39 -0
  83. package/package.json +1 -2
  84. package/dist/css/page-layout.css +0 -53
  85. package/dist/index-1042d93b.js +0 -2055
@@ -0,0 +1,2116 @@
1
+ import { defineComponent as v, openBlock as l, createElementBlock as r, normalizeClass as i, unref as t, ref as A, watch as Q, defineAsyncComponent as ue, markRaw as Oe, createBlock as S, resolveDynamicComponent as z, createCommentVNode as N, toDisplayString as L, onMounted as j, createElementVNode as c, createVNode as G, renderSlot as X, withCtx as J, computed as F, Fragment as $, renderList as Z, createTextVNode as Ee, onUnmounted as Ae, onUpdated as Ne, normalizeStyle as ae, onBeforeUnmount as Le, getCurrentInstance as ee, withDirectives as ie, vModelSelect as pe, withModifiers as Te, vModelDynamic as ve, vModelText as Fe, Teleport as _e } from "vue";
2
+ const e = {
3
+ ALIGN: {
4
+ X: {
5
+ CENTER: "tide-text-center",
6
+ LEFT: "tide-text-left",
7
+ RIGHT: "tide-text-right"
8
+ },
9
+ Y: {
10
+ MIDDLE: "tide-align-middle"
11
+ }
12
+ },
13
+ AXIS1: {
14
+ AROUND: "tide-axis1-around",
15
+ BETWEEN: "tide-axis1-between",
16
+ CENTER: "tide-axis1-center",
17
+ END: "tide-axis1-end",
18
+ START: "tide-axis1-start"
19
+ },
20
+ AXIS2: {
21
+ AROUND: "tide-axis2-around",
22
+ CENTER: "tide-axis2-center",
23
+ END: "tide-axis2-end",
24
+ START: "tide-axis2-start"
25
+ },
26
+ BG: {
27
+ ERROR: "tide-bg-error",
28
+ INFO: "tide-bg-info",
29
+ PRIMARY: "tide-bg-primary",
30
+ SECONDARY: "tide-bg-secondary",
31
+ SUCCESS: "tide-bg-success",
32
+ SURFACE: {
33
+ ACCENT: "tide-bg-surface-accent",
34
+ ACCENT_VARIANT: "tide-bg-surface-accent-variant",
35
+ BRAND: "tide-bg-surface-brand",
36
+ DEFAULT: "tide-bg-surface",
37
+ ERROR: "tide-bg-surface-error",
38
+ FLOATING: "tide-bg-surface-floating",
39
+ GRADIENT: "tide-bg-surface-gradient",
40
+ INFO: "tide-bg-surface-info",
41
+ SUCCESS: "tide-bg-surface-success",
42
+ VARIANT: "tide-bg-surface-variant",
43
+ WARNING: "tide-bg-surface-warning"
44
+ },
45
+ WARNING: "tide-bg-warning"
46
+ },
47
+ BORDER: {
48
+ BOTTOM: {
49
+ ONE: "tide-border-bottom-1",
50
+ TWO: "tide-border-bottom-2"
51
+ },
52
+ COLOR: {
53
+ DEFAULT: "tide-border",
54
+ FLOATING: "tide-border-floating",
55
+ HIGH: "tide-border-high",
56
+ LOW: "tide-border-low",
57
+ PRIMARY: "tide-border-primary"
58
+ },
59
+ FULL: {
60
+ ONE: "tide-border-1",
61
+ TWO: "tide-border-2"
62
+ },
63
+ LEFT: {
64
+ ONE: "tide-border-left-1",
65
+ TWO: "tide-border-left-2"
66
+ },
67
+ RADIUS: {
68
+ FULL: "tide-radius-full",
69
+ HALF: "tide-radius-1/2",
70
+ ONE: "tide-radius-1",
71
+ QUARTER: "tide-radius-1/4"
72
+ },
73
+ RIGHT: {
74
+ ONE: "tide-border-right-1",
75
+ TWO: "tide-border-right-2"
76
+ },
77
+ TOP: {
78
+ ONE: "tide-border-top-1",
79
+ TWO: "tide-border-top-2"
80
+ }
81
+ },
82
+ BOX_SIZING: {
83
+ BORDER_BOX: "tide-box-border",
84
+ CONTENT_BOX: "tide-box-content"
85
+ },
86
+ BREAK_WORD: {
87
+ ON: "tide-break-word"
88
+ },
89
+ CURSOR: {
90
+ NOT_ALLOWED: "tide-cursor-not-allowed",
91
+ POINTER: "tide-cursor-pointer",
92
+ TEXT: "tide-cursor-text"
93
+ },
94
+ DISPLAY: {
95
+ BLOCK: "tide-display-block",
96
+ CONTENTS: "tide-contents",
97
+ FLEX: "tide-display-flex",
98
+ GRID: "tide-display-grid",
99
+ INITIAL: "initial",
100
+ INLINE: "tide-display-inline",
101
+ INLINE_BLOCK: "tide-display-inline-block",
102
+ INLINE_FLEX: "tide-display-inline-flex",
103
+ NONE: "tide-display-none"
104
+ },
105
+ FLEX: {
106
+ DIRECTION: {
107
+ COLUMN: "tide-flex-column",
108
+ COLUMN_REVERSE: "tide-flex-column-reverse",
109
+ ROW: "tide-flex-row",
110
+ ROW_REVERSE: "tide-row-reverse"
111
+ },
112
+ GROW: {
113
+ OFF: "tide-grow-none",
114
+ ON: "tide-grow"
115
+ },
116
+ SHRINK: {
117
+ OFF: "tide-shrink-none",
118
+ ON: "tide-shrink"
119
+ },
120
+ WRAP: "tide-flex-wrap"
121
+ },
122
+ FONT: {
123
+ COLOR: {
124
+ PRIMARY: "tide-font-on-primary",
125
+ SECONDARY: "tide-font-on-secondary",
126
+ SURFACE: {
127
+ BRAND: "tide-font-on-surface-brand",
128
+ DEFAULT: "tide-font-on-surface",
129
+ INVERSE: "tide-font-on-surface-inverse",
130
+ VARIANT: "tide-font-on-surface-variant",
131
+ VARIANT_INVERSE: "tide-font-on-surface-variant-inverse"
132
+ }
133
+ },
134
+ SIZE: {
135
+ FOURTEEN: "tide-font-14",
136
+ SIXTEEN: "tide-font-16",
137
+ THIRTY_TWO: "tide-font-32",
138
+ TWELVE: "tide-font-12",
139
+ TWENTY: "tide-font-20",
140
+ TWENTY_FOUR: "tide-font-24"
141
+ },
142
+ WEIGHT: {
143
+ FIVE_HUNDRED: "tide-font-500",
144
+ FOUR_HUNDRED: "tide-font-400",
145
+ SEVEN_HUNDRED: "tide-font-700",
146
+ SIX_HUNDRED: "tide-font-600"
147
+ }
148
+ },
149
+ GAP: {
150
+ FOUR: "tide-gap-4",
151
+ HALF: "tide-gap-1/2",
152
+ ONE: "tide-gap-1",
153
+ QUARTER: "tide-gap-1/4",
154
+ TWO: "tide-gap-2"
155
+ },
156
+ GRID: {
157
+ END: {
158
+ END_1: "tide-start-1",
159
+ END_10: "tide-start-10",
160
+ END_11: "tide-start-11",
161
+ END_12: "tide-start-12",
162
+ END_13: "tide-start-13",
163
+ END_2: "tide-start-2",
164
+ END_3: "tide-start-3",
165
+ END_4: "tide-start-4",
166
+ END_5: "tide-start-5",
167
+ END_6: "tide-start-6",
168
+ END_7: "tide-start-7",
169
+ END_8: "tide-start-8",
170
+ END_9: "tide-start-9"
171
+ },
172
+ FLUID: "tide-fluid",
173
+ LAYOUT: "tide-grid-layout",
174
+ MAX_1920: "tide-grid-layout",
175
+ START: {
176
+ START_0: "tide-start-0",
177
+ START_1: "tide-start-1",
178
+ START_10: "tide-start-10",
179
+ START_11: "tide-start-11",
180
+ START_12: "tide-start-12",
181
+ START_2: "tide-start-2",
182
+ START_3: "tide-start-3",
183
+ START_4: "tide-start-4",
184
+ START_5: "tide-start-5",
185
+ START_6: "tide-start-6",
186
+ START_7: "tide-start-7",
187
+ START_8: "tide-start-8",
188
+ START_9: "tide-start-9"
189
+ }
190
+ },
191
+ HEIGHT: {
192
+ FULL: "tide-height-full"
193
+ },
194
+ LIST_BULLETS: {
195
+ OFF: "tide-list-none"
196
+ },
197
+ MARGIN: {
198
+ BOTTOM: {
199
+ FOUR: "tide-margin-bottom-4",
200
+ HALF: "tide-margin-bottom-1/2",
201
+ ONE: "tide-margin-bottom-1",
202
+ QUARTER: "tide-margin-bottom-1/4",
203
+ TWO: "tide-margin-bottom-2"
204
+ },
205
+ FULL: {
206
+ FOUR: "tide-margin-4",
207
+ HALF: "tide-margin-1/2",
208
+ ONE: "tide-margin-1",
209
+ QUARTER: "tide-margin-1/4",
210
+ TWO: "tide-margin-2"
211
+ },
212
+ LEFT: {
213
+ AUTO: "tide-margin-left-auto",
214
+ FOUR: "tide-margin-left-4",
215
+ HALF: "tide-margin-left-1/2",
216
+ ONE: "tide-margin-left-1",
217
+ QUARTER: "tide-margin-left-1/4",
218
+ TWO: "tide-margin-left-2"
219
+ },
220
+ RIGHT: {
221
+ AUTO: "tide-margin-right-auto",
222
+ FOUR: "tide-margin-right-4",
223
+ HALF: "tide-margin-right-1/2",
224
+ ONE: "tide-margin-right-1",
225
+ QUARTER: "tide-margin-right-1/4",
226
+ TWO: "tide-margin-right-2"
227
+ },
228
+ TOP: {
229
+ FOUR: "tide-margin-top-4",
230
+ HALF: "tide-margin-top-1/2",
231
+ ONE: "tide-margin-top-1",
232
+ QUARTER: "tide-margin-top-1/4",
233
+ TWO: "tide-margin-top-2"
234
+ },
235
+ X: {
236
+ AUTO: "tide-margin-x-auto",
237
+ FOUR: "tide-margin-x-4",
238
+ HALF: "tide-margin-x-1/2",
239
+ ONE: "tide-margin-x-1",
240
+ QUARTER: "tide-margin-x-1/4",
241
+ TWO: "tide-margin-x-2"
242
+ },
243
+ Y: {
244
+ FOUR: "tide-margin-y-4",
245
+ HALF: "tide-margin-y-1/2",
246
+ ONE: "tide-margin-y-1",
247
+ QUARTER: "tide-margin-y-1/4",
248
+ TWO: "tide-margin-y-2"
249
+ }
250
+ },
251
+ OBJECT: {
252
+ CENTER: "tide-object-center",
253
+ CONTAIN: "tide-object-contain",
254
+ COVER: "tide-object-cover",
255
+ SCALE_DOWN: "tide-object-scale-down"
256
+ },
257
+ OPACITY: {
258
+ OFF: "tide-opacity-none",
259
+ ON: "tide-opacity"
260
+ },
261
+ OVERFLOW: {
262
+ X: {
263
+ AUTO: "tide-x-auto",
264
+ HIDDEN: "tide-x-hidden",
265
+ SCROLL: "tide-x-scroll"
266
+ },
267
+ XY: {
268
+ AUTO: "tide-xy-auto",
269
+ HIDDEN: "tide-xy-hidden"
270
+ },
271
+ Y: {
272
+ AUTO: "tide-y-auto",
273
+ HIDDEN: "tide-y-hidden"
274
+ }
275
+ },
276
+ PADDING: {
277
+ BOTTOM: {
278
+ FOUR: "tide-padding-bottom-4",
279
+ HALF: "tide-padding-bottom-1/2",
280
+ ONE: "tide-padding-bottom-1",
281
+ QUARTER: "tide-padding-bottom-1/4",
282
+ TWO: "tide-padding-bottom-2"
283
+ },
284
+ FULL: {
285
+ FOUR: "tide-padding-4",
286
+ HALF: "tide-padding-1/2",
287
+ ONE: "tide-padding-1",
288
+ QUARTER: "tide-padding-1/4",
289
+ TWO: "tide-padding-2"
290
+ },
291
+ LEFT: {
292
+ FOUR: "tide-padding-left-4",
293
+ HALF: "tide-padding-left-1/2",
294
+ ONE: "tide-padding-left-1",
295
+ QUARTER: "tide-padding-left-1/4",
296
+ TWO: "tide-padding-left-2"
297
+ },
298
+ RIGHT: {
299
+ FOUR: "tide-padding-right-4",
300
+ HALF: "tide-padding-right-1/2",
301
+ ONE: "tide-padding-right-1",
302
+ QUARTER: "tide-padding-right-1/4",
303
+ TWO: "tide-padding-right-2"
304
+ },
305
+ TOP: {
306
+ FOUR: "tide-padding-top-4",
307
+ HALF: "tide-padding-top-1/2",
308
+ ONE: "tide-padding-top-1",
309
+ QUARTER: "tide-padding-top-1/4",
310
+ TWO: "tide-padding-top-2"
311
+ },
312
+ X: {
313
+ FOUR: "tide-padding-x-4",
314
+ HALF: "tide-padding-x-1/2",
315
+ ONE: "tide-padding-x-1",
316
+ QUARTER: "tide-padding-x-1/4",
317
+ TWO: "tide-padding-x-2"
318
+ },
319
+ Y: {
320
+ FOUR: "tide-padding-y-4",
321
+ HALF: "tide-padding-y-1/2",
322
+ ONE: "tide-padding-y-1",
323
+ QUARTER: "tide-padding-y-1/4",
324
+ TWO: "tide-padding-y-2"
325
+ }
326
+ },
327
+ POINTER_EVENTS: {
328
+ OFF: "tide-pointer-events-none",
329
+ ON: "tide-pointer-events"
330
+ },
331
+ POSITION: {
332
+ ABSOLUTE: "tide-position-absolute",
333
+ FIXED: "tide-position-fixed",
334
+ RELATIVE: "tide-position-relative",
335
+ STICKY: "tide-sticky"
336
+ },
337
+ POSITIONING: {
338
+ BOTTOM_0: "tide-bottom-0",
339
+ LEFT_0: "tide-left-0",
340
+ RIGHT_0: "tide-right-0",
341
+ TOP_0: "tide-top-0"
342
+ },
343
+ SCROLLBAR: {
344
+ OFF: "tide-scrollbar-none"
345
+ },
346
+ SHADOW: {
347
+ BOTTOM: "tide-shadow-bottom",
348
+ TOP: "tide-shadow-top"
349
+ },
350
+ SNAP: {
351
+ ON: "tide-snap"
352
+ },
353
+ SNAP_ALIGN: {
354
+ START: "tide-snap-start"
355
+ },
356
+ TEXT_TRANSFORM: {
357
+ LOWER: "tide-text-transform-lower",
358
+ NONE: "tide-text-transform-none",
359
+ UPPER: "tide-text-transform-upper"
360
+ },
361
+ UNDERLINE: {
362
+ HOVER: "tide-underline-hover",
363
+ OFF: "tide-underline-none",
364
+ ON: "tide-underline"
365
+ },
366
+ VISIBILITY: {
367
+ OFF: "tide-visible-none",
368
+ ON: "tide-visible"
369
+ },
370
+ WHITESPACE_WRAP: {
371
+ OFF: "tide-whitespace-nowrap"
372
+ },
373
+ WIDTH: {
374
+ FULL: "tide-width-full",
375
+ MAX_FULL: "tide-max-width-full"
376
+ }
377
+ };
378
+ e.DISPLAY.BLOCK, e.DISPLAY.CONTENTS, e.DISPLAY.FLEX, e.DISPLAY.GRID, e.DISPLAY.NONE, e.DISPLAY.INITIAL, e.DISPLAY.INLINE, e.DISPLAY.INLINE_BLOCK, e.DISPLAY.INLINE_FLEX, e.AXIS1.AROUND, e.AXIS1.BETWEEN, e.AXIS1.CENTER, e.AXIS1.END, e.AXIS1.START, e.AXIS2.AROUND, e.AXIS2.CENTER, e.AXIS2.END, e.AXIS2.START, e.FLEX.DIRECTION.COLUMN, e.FLEX.DIRECTION.COLUMN_REVERSE, e.FLEX.DIRECTION.ROW, e.FLEX.DIRECTION.ROW_REVERSE, e.GAP.ONE, e.GAP.HALF, e.GAP.QUARTER, e.GAP.TWO, e.GAP.FOUR, e.FLEX.GROW.ON, e.FLEX.GROW.OFF, e.FLEX.SHRINK.ON, e.FLEX.SHRINK.OFF, e.FLEX.WRAP, e.POSITION.ABSOLUTE, e.POSITION.FIXED, e.POSITION.RELATIVE, e.POSITION.STICKY, e.POSITIONING.TOP_0, e.POSITIONING.RIGHT_0, e.POSITIONING.BOTTOM_0, e.POSITIONING.LEFT_0, e.BOX_SIZING.BORDER_BOX, e.BOX_SIZING.CONTENT_BOX, e.MARGIN.FULL.ONE, e.MARGIN.FULL.HALF, e.MARGIN.FULL.QUARTER, e.MARGIN.FULL.TWO, e.MARGIN.FULL.FOUR, e.MARGIN.Y.ONE, e.MARGIN.Y.HALF, e.MARGIN.Y.QUARTER, e.MARGIN.Y.TWO, e.MARGIN.Y.FOUR, e.MARGIN.TOP.ONE, e.MARGIN.TOP.HALF, e.MARGIN.TOP.QUARTER, e.MARGIN.TOP.TWO, e.MARGIN.TOP.FOUR, e.MARGIN.X.ONE, e.MARGIN.X.HALF, e.MARGIN.X.QUARTER, e.MARGIN.X.TWO, e.MARGIN.X.FOUR, e.MARGIN.X.AUTO, e.MARGIN.RIGHT.ONE, e.MARGIN.RIGHT.HALF, e.MARGIN.RIGHT.QUARTER, e.MARGIN.RIGHT.TWO, e.MARGIN.RIGHT.FOUR, e.MARGIN.RIGHT.AUTO, e.MARGIN.BOTTOM.ONE, e.MARGIN.BOTTOM.HALF, e.MARGIN.BOTTOM.QUARTER, e.MARGIN.BOTTOM.TWO, e.MARGIN.BOTTOM.FOUR, e.MARGIN.LEFT.ONE, e.MARGIN.LEFT.HALF, e.MARGIN.LEFT.QUARTER, e.MARGIN.LEFT.TWO, e.MARGIN.LEFT.FOUR, e.MARGIN.LEFT.AUTO, e.BORDER.FULL.ONE, e.BORDER.FULL.TWO, e.BORDER.TOP.ONE, e.BORDER.TOP.TWO, e.BORDER.RIGHT.ONE, e.BORDER.RIGHT.TWO, e.BORDER.BOTTOM.ONE, e.BORDER.BOTTOM.TWO, e.BORDER.LEFT.ONE, e.BORDER.LEFT.TWO, e.BORDER.RADIUS.ONE, e.BORDER.RADIUS.HALF, e.BORDER.RADIUS.QUARTER, e.BORDER.RADIUS.FULL, e.PADDING.FULL.ONE, e.PADDING.FULL.HALF, e.PADDING.FULL.QUARTER, e.PADDING.FULL.TWO, e.PADDING.FULL.FOUR, e.PADDING.Y.ONE, e.PADDING.Y.HALF, e.PADDING.Y.QUARTER, e.PADDING.Y.TWO, e.PADDING.Y.FOUR, e.PADDING.TOP.ONE, e.PADDING.TOP.HALF, e.PADDING.TOP.QUARTER, e.PADDING.TOP.TWO, e.PADDING.TOP.FOUR, e.PADDING.X.ONE, e.PADDING.X.HALF, e.PADDING.X.QUARTER, e.PADDING.X.TWO, e.PADDING.X.FOUR, e.PADDING.RIGHT.ONE, e.PADDING.RIGHT.HALF, e.PADDING.RIGHT.QUARTER, e.PADDING.RIGHT.TWO, e.PADDING.RIGHT.FOUR, e.PADDING.BOTTOM.ONE, e.PADDING.BOTTOM.HALF, e.PADDING.BOTTOM.QUARTER, e.PADDING.BOTTOM.TWO, e.PADDING.BOTTOM.FOUR, e.PADDING.LEFT.ONE, e.PADDING.LEFT.HALF, e.PADDING.LEFT.QUARTER, e.PADDING.LEFT.TWO, e.PADDING.LEFT.FOUR, e.WIDTH.MAX_FULL, e.WIDTH.FULL, e.HEIGHT.FULL, e.ALIGN.Y.MIDDLE, e.BREAK_WORD, e.CURSOR.NOT_ALLOWED, e.CURSOR.POINTER, e.FONT.SIZE.TWELVE, e.FONT.SIZE.FOURTEEN, e.FONT.SIZE.SIXTEEN, e.FONT.SIZE.TWENTY, e.FONT.SIZE.TWENTY_FOUR, e.FONT.SIZE.THIRTY_TWO, e.FONT.WEIGHT.FOUR_HUNDRED, e.FONT.WEIGHT.FIVE_HUNDRED, e.FONT.WEIGHT.SIX_HUNDRED, e.FONT.WEIGHT.SEVEN_HUNDRED, e.LIST_BULLETS.OFF, e.OBJECT.CENTER, e.OBJECT.CONTAIN, e.OBJECT.COVER, e.OBJECT.SCALE_DOWN, e.POINTER_EVENTS.ON, e.POINTER_EVENTS.OFF, e.SCROLLBAR.OFF, e.SHADOW.BOTTOM, e.SHADOW.TOP, e.SNAP.ON, e.SNAP_ALIGN.START, e.ALIGN.X.LEFT, e.ALIGN.X.CENTER, e.ALIGN.X.RIGHT, e.TEXT_TRANSFORM.LOWER, e.TEXT_TRANSFORM.NONE, e.TEXT_TRANSFORM.UPPER, e.UNDERLINE, e.UNDERLINE.HOVER, e.UNDERLINE.OFF, e.VISIBILITY.ON, e.VISIBILITY.OFF, e.WHITESPACE_WRAP.OFF, e.OVERFLOW.XY.AUTO, e.OVERFLOW.XY.HIDDEN, e.OVERFLOW.X.AUTO, e.OVERFLOW.X.HIDDEN, e.OVERFLOW.X.SCROLL, e.OVERFLOW.Y.AUTO, e.OVERFLOW.Y.HIDDEN;
379
+ const de = {
380
+ HORIZONTAL: "horizontal",
381
+ VERTICAL: "vertical"
382
+ }, re = /* @__PURE__ */ v({
383
+ __name: "TideDivider",
384
+ props: {
385
+ orientation: { default: de.HORIZONTAL }
386
+ },
387
+ setup(n) {
388
+ const s = n;
389
+ return (a, o) => (l(), r("div", {
390
+ class: i([
391
+ t(e).BORDER.COLOR.LOW,
392
+ s.orientation === t(de).HORIZONTAL ? [t(e).MARGIN.Y.HALF, t(e).BORDER.BOTTOM.ONE] : [t(e).MARGIN.X.HALF, t(e).BORDER.RIGHT.ONE]
393
+ ])
394
+ }, null, 2));
395
+ }
396
+ }), De = (n, s) => {
397
+ const a = n[s];
398
+ return a ? typeof a == "function" ? a() : Promise.resolve(a) : new Promise((o, d) => {
399
+ (typeof queueMicrotask == "function" ? queueMicrotask : setTimeout)(d.bind(null, new Error("Unknown variable dynamic import: " + s)));
400
+ });
401
+ }, y = {
402
+ LARGE: "large",
403
+ SMALL: "small"
404
+ }, Se = (n) => n && typeof n == "string" ? n.replace(/([a-z]{1})([A-Z]{1})/g, "$1 $2").replace(/[\s_-]/g, " ").toLowerCase().split(" ").map((s) => s.slice(0, 1).toUpperCase() + s.slice(1)).join("") : n, fe = ["data-icon"], Ue = /* @__PURE__ */ v({
405
+ __name: "TideIcon",
406
+ props: {
407
+ icon: {},
408
+ size: { default: y.SMALL }
409
+ },
410
+ setup(n) {
411
+ const s = n, a = A();
412
+ return Q(
413
+ () => s.icon,
414
+ () => {
415
+ const o = s.icon, d = Se(o), T = ue(() => De(/* @__PURE__ */ Object.assign({ "../assets/svg/icons/IconAccountBalance.vue": () => import("./IconAccountBalance-f188d7c3.js"), "../assets/svg/icons/IconAdd.vue": () => import("./IconAdd-924ee7b8.js"), "../assets/svg/icons/IconAi.vue": () => import("./IconAi-d04b53d1.js"), "../assets/svg/icons/IconAlignSpace.vue": () => import("./IconAlignSpace-a902dd82.js"), "../assets/svg/icons/IconApplePay.vue": () => import("./IconApplePay-f4a0af2f.js"), "../assets/svg/icons/IconArrowBack.vue": () => import("./IconArrowBack-8e341c11.js"), "../assets/svg/icons/IconArrowForward.vue": () => import("./IconArrowForward-3c47be0d.js"), "../assets/svg/icons/IconArrowRight.vue": () => import("./IconArrowRight-af91d5b0.js"), "../assets/svg/icons/IconAssignment.vue": () => import("./IconAssignment-8902b1c4.js"), "../assets/svg/icons/IconAwardStar.vue": () => import("./IconAwardStar-2e86f3ee.js"), "../assets/svg/icons/IconBookmark.vue": () => import("./IconBookmark-b148af92.js"), "../assets/svg/icons/IconCalendarMonth.vue": () => import("./IconCalendarMonth-a66e49c3.js"), "../assets/svg/icons/IconCall.vue": () => import("./IconCall-286e2e2c.js"), "../assets/svg/icons/IconCheck.vue": () => import("./IconCheck-f226395e.js"), "../assets/svg/icons/IconChevronLeft.vue": () => import("./IconChevronLeft-1df56f5b.js"), "../assets/svg/icons/IconChevronRight.vue": () => import("./IconChevronRight-a293ebab.js"), "../assets/svg/icons/IconClear.vue": () => import("./IconClear-c3120ff6.js"), "../assets/svg/icons/IconClose.vue": () => import("./IconClose-d01a7195.js"), "../assets/svg/icons/IconCycle.vue": () => import("./IconCycle-f24ca489.js"), "../assets/svg/icons/IconDelete.vue": () => import("./IconDelete-112cfb44.js"), "../assets/svg/icons/IconDiamond.vue": () => import("./IconDiamond-97e262b6.js"), "../assets/svg/icons/IconEdit.vue": () => import("./IconEdit-55acf233.js"), "../assets/svg/icons/IconError.vue": () => import("./IconError-636bae79.js"), "../assets/svg/icons/IconExpandContent.vue": () => import("./IconExpandContent-4e2c65bd.js"), "../assets/svg/icons/IconExpandLess.vue": () => import("./IconExpandLess-d891e216.js"), "../assets/svg/icons/IconExpandMore.vue": () => import("./IconExpandMore-f50b372f.js"), "../assets/svg/icons/IconFacebook.vue": () => import("./IconFacebook-ea393a00.js"), "../assets/svg/icons/IconFavorite.vue": () => import("./IconFavorite-e48c4831.js"), "../assets/svg/icons/IconFavoriteFilled.vue": () => import("./IconFavoriteFilled-5e56ee15.js"), "../assets/svg/icons/IconFormatBold.vue": () => import("./IconFormatBold-f54ed521.js"), "../assets/svg/icons/IconFormatItalic.vue": () => import("./IconFormatItalic-839a567b.js"), "../assets/svg/icons/IconFormatListBulleted.vue": () => import("./IconFormatListBulleted-968b2805.js"), "../assets/svg/icons/IconForum.vue": () => import("./IconForum-d24ae7f5.js"), "../assets/svg/icons/IconGoogle.vue": () => import("./IconGoogle-09d632e9.js"), "../assets/svg/icons/IconGooglePay.vue": () => import("./IconGooglePay-21519293.js"), "../assets/svg/icons/IconGrid.vue": () => import("./IconGrid-6285dc93.js"), "../assets/svg/icons/IconHelp.vue": () => import("./IconHelp-dac96db2.js"), "../assets/svg/icons/IconInfo.vue": () => import("./IconInfo-3e44ee8e.js"), "../assets/svg/icons/IconInsertText.vue": () => import("./IconInsertText-cf9e8d94.js"), "../assets/svg/icons/IconInstagram.vue": () => import("./IconInstagram-0e9cbad8.js"), "../assets/svg/icons/IconIosShare.vue": () => import("./IconIosShare-966f94c6.js"), "../assets/svg/icons/IconLayout.vue": () => import("./IconLayout-7b7e3db5.js"), "../assets/svg/icons/IconLinkedIn.vue": () => import("./IconLinkedIn-c112a15e.js"), "../assets/svg/icons/IconLocalShipping.vue": () => import("./IconLocalShipping-c40fb702.js"), "../assets/svg/icons/IconLock.vue": () => import("./IconLock-a6a7c6c8.js"), "../assets/svg/icons/IconMail.vue": () => import("./IconMail-0e4f0f93.js"), "../assets/svg/icons/IconMenu.vue": () => import("./IconMenu-b1856c29.js"), "../assets/svg/icons/IconMoreHoriz.vue": () => import("./IconMoreHoriz-439473cc.js"), "../assets/svg/icons/IconNotifications.vue": () => import("./IconNotifications-b39d4c46.js"), "../assets/svg/icons/IconOpenInNew.vue": () => import("./IconOpenInNew-84c05770.js"), "../assets/svg/icons/IconPalette.vue": () => import("./IconPalette-79cda0d3.js"), "../assets/svg/icons/IconPaypal.vue": () => import("./IconPaypal-f82fae6d.js"), "../assets/svg/icons/IconPerson.vue": () => import("./IconPerson-d0315473.js"), "../assets/svg/icons/IconPhotoCamera.vue": () => import("./IconPhotoCamera-f011623d.js"), "../assets/svg/icons/IconPinterest.vue": () => import("./IconPinterest-b3397953.js"), "../assets/svg/icons/IconPlayArrow.vue": () => import("./IconPlayArrow-91ec13b9.js"), "../assets/svg/icons/IconRemove.vue": () => import("./IconRemove-4818dbe1.js"), "../assets/svg/icons/IconRoundedCorners.vue": () => import("./IconRoundedCorners-d81943f5.js"), "../assets/svg/icons/IconSearch.vue": () => import("./IconSearch-d733de31.js"), "../assets/svg/icons/IconSell.vue": () => import("./IconSell-805923a0.js"), "../assets/svg/icons/IconShare.vue": () => import("./IconShare-1127eb49.js"), "../assets/svg/icons/IconShoppingCart.vue": () => import("./IconShoppingCart-560d3a93.js"), "../assets/svg/icons/IconSms.vue": () => import("./IconSms-1703a868.js"), "../assets/svg/icons/IconStar.vue": () => import("./IconStar-3e439338.js"), "../assets/svg/icons/IconSwapVert.vue": () => import("./IconSwapVert-7f3e9c79.js"), "../assets/svg/icons/IconThreeDRotation.vue": () => import("./IconThreeDRotation-a88613fe.js"), "../assets/svg/icons/IconTune.vue": () => import("./IconTune-081fa5f1.js"), "../assets/svg/icons/IconTwitter.vue": () => import("./IconTwitter-3df89b18.js"), "../assets/svg/icons/IconVideocam.vue": () => import("./IconVideocam-2df877fc.js"), "../assets/svg/icons/IconViewInAr.vue": () => import("./IconViewInAr-e8b3c840.js"), "../assets/svg/icons/IconVisibility.vue": () => import("./IconVisibility-6d82554e.js"), "../assets/svg/icons/IconWarning.vue": () => import("./IconWarning-f74b8658.js"), "../assets/svg/icons/IconYoutube.vue": () => import("./IconYoutube-67040fb5.js") }), `../assets/svg/icons/Icon${d}.vue`));
416
+ a.value = Oe(T);
417
+ },
418
+ { immediate: !0 }
419
+ ), (o, d) => (l(), r("div", {
420
+ class: i(["tide-icon", s.size])
421
+ }, [
422
+ (l(), r("svg", {
423
+ class: i([t(e).DISPLAY.BLOCK]),
424
+ "data-icon": o.icon,
425
+ fill: "currentColor",
426
+ viewBox: "0 0 24 24",
427
+ xmlns: "http://www.w3.org/2000/svg"
428
+ }, [
429
+ a.value ? (l(), S(z(a.value), { key: 0 })) : N("", !0)
430
+ ], 10, fe))
431
+ ], 2));
432
+ }
433
+ });
434
+ const C = (n, s) => {
435
+ const a = n.__vccOpts || n;
436
+ for (const [o, d] of s)
437
+ a[o] = d;
438
+ return a;
439
+ }, f = /* @__PURE__ */ C(Ue, [["__scopeId", "data-v-30daad21"]]), me = /* @__PURE__ */ v({
440
+ __name: "TideIndicator",
441
+ props: {
442
+ label: { default: void 0 }
443
+ },
444
+ setup(n) {
445
+ const s = n;
446
+ return (a, o) => (l(), r("div", {
447
+ class: i([
448
+ s.label ? "tide-indicator-label" : "tide-indicator",
449
+ "border-white",
450
+ t(e).BG.SURFACE.ACCENT,
451
+ t(e).BORDER.FULL.ONE,
452
+ t(e).BORDER.RADIUS.FULL,
453
+ s.label ? [t(e).POSITION.RELATIVE, t(e).FONT.SIZE.TWELVE, t(e).FONT.WEIGHT.SEVEN_HUNDRED, t(e).FONT.COLOR.SURFACE.DEFAULT] : []
454
+ ])
455
+ }, [
456
+ s.label ? (l(), r("div", {
457
+ key: 0,
458
+ class: i([
459
+ t(e).POSITION.ABSOLUTE,
460
+ t(e).POSITIONING.TOP_0,
461
+ t(e).DISPLAY.FLEX,
462
+ t(e).AXIS1.CENTER,
463
+ t(e).AXIS2.CENTER,
464
+ t(e).WIDTH.FULL,
465
+ t(e).HEIGHT.FULL
466
+ ])
467
+ }, L(s.label), 3)) : N("", !0)
468
+ ], 2));
469
+ }
470
+ });
471
+ const ge = /* @__PURE__ */ C(me, [["__scopeId", "data-v-b3905972"]]), _ = {
472
+ ACCOUNT_BALANCE: "account-balance",
473
+ ADD: "add",
474
+ AI: "ai",
475
+ ALIGN_SPACE: "align-space",
476
+ APPLE_PAY: "apple-pay",
477
+ ARROW_BACK: "arrow-back",
478
+ ARROW_FORWARD: "arrow-forward",
479
+ ARROW_RIGHT: "arrow-right",
480
+ ASSIGNMENT: "assignment",
481
+ AWARD_STAR: "award-star",
482
+ BOOKMARK: "bookmark",
483
+ CALENDAR_MONTH: "calendar-month",
484
+ CALL: "call",
485
+ CHECK: "check",
486
+ CHEVRON_LEFT: "chevron-left",
487
+ CHEVRON_RIGHT: "chevron-right",
488
+ CLEAR: "clear",
489
+ CLOSE: "close",
490
+ CYCLE: "cycle",
491
+ DELETE: "delete",
492
+ DIAMOND: "diamond",
493
+ EDIT: "edit",
494
+ ERROR: "error",
495
+ EXPAND_CONTENT: "expand-content",
496
+ EXPAND_LESS: "expand-less",
497
+ EXPAND_MORE: "expand-more",
498
+ FACEBOOK: "facebook",
499
+ FAVORITE: "favorite",
500
+ FAVORITE_FILLED: "favorite-filled",
501
+ FORMAT_BOLD: "format-bold",
502
+ FORMAT_ITALIC: "format-italic",
503
+ FORMAT_LIST_BULLETED: "format-list-bulleted",
504
+ FORUM: "forum",
505
+ GOOGLE: "google",
506
+ GOOGLE_PAY: "google-pay",
507
+ GRID: "grid",
508
+ HELP: "help",
509
+ INFO: "info",
510
+ INSERT_TEXT: "insert-text",
511
+ INSTAGRAM: "instagram",
512
+ IOS_SHARE: "ios-share",
513
+ LAYOUT: "layout",
514
+ LINKED_IN: "linked in",
515
+ LOCAL_SHIPPING: "local-shipping",
516
+ LOCK: "lock",
517
+ MAIL: "mail",
518
+ MENU: "menu",
519
+ MORE_HORIZ: "more-horiz",
520
+ NOTIFICATIONS: "notifications",
521
+ OPEN_IN_NEW: "open-in-new",
522
+ PALETTE: "palette",
523
+ PAYPAL: "paypal",
524
+ PERSON: "person",
525
+ PHOTO_CAMERA: "photo-camera",
526
+ PINTEREST: "pinterest",
527
+ PLAY_ARROW: "play-arrow",
528
+ REMOVE: "remove",
529
+ ROUNDED_CORNERS: "rounded-corners",
530
+ SEARCH: "search",
531
+ SELL: "sell",
532
+ SHARE: "share",
533
+ SHOPPING_CART: "shopping-cart",
534
+ SMS: "sms",
535
+ STAR: "star",
536
+ SWAP_VERT: "swap-vert",
537
+ THREE_D_ROTATION: "three-d-rotation",
538
+ TUNE: "tune",
539
+ TWITTER: "twitter",
540
+ VIDEOCAM: "videocam",
541
+ VIEW_IN_AR: "view-in-ar",
542
+ VISIBILITY: "visibility",
543
+ WARNING: "warning",
544
+ YOUTUBE: "youtube"
545
+ }, Ce = { class: "tide-accordion-item" }, Pe = /* @__PURE__ */ v({
546
+ __name: "TideAccordionItem",
547
+ props: {
548
+ hasBottomDivider: {
549
+ default: !1,
550
+ required: !1,
551
+ type: Boolean
552
+ },
553
+ hasTopDivider: {
554
+ default: !1,
555
+ required: !1,
556
+ type: Boolean
557
+ },
558
+ isActive: {
559
+ default: !1,
560
+ required: !1,
561
+ type: Boolean
562
+ },
563
+ isExpandedInitial: {
564
+ default: !1,
565
+ required: !1,
566
+ type: Boolean
567
+ },
568
+ isOptional: {
569
+ default: !1,
570
+ required: !1,
571
+ type: Boolean
572
+ },
573
+ label: {
574
+ default: "",
575
+ required: !0,
576
+ type: String
577
+ }
578
+ },
579
+ setup(n) {
580
+ const s = n, a = A(s.isExpandedInitial);
581
+ let o = A();
582
+ const d = () => {
583
+ const T = o.value;
584
+ a.value = !a.value, T.style.gridTemplateRows = a.value ? "1fr" : "0fr";
585
+ };
586
+ return j(() => {
587
+ const T = o.value;
588
+ T.style.gridTemplateRows = a.value ? "1fr" : "0fr";
589
+ }), (T, I) => (l(), r("div", Ce, [
590
+ s.hasTopDivider ? (l(), S(re, { key: 0 })) : N("", !0),
591
+ c("div", {
592
+ class: i(["tide-accordion-head", t(e).DISPLAY.FLEX, t(e).AXIS1.BETWEEN, t(e).PADDING.Y.HALF, t(e).CURSOR.POINTER]),
593
+ onClick: d
594
+ }, [
595
+ c("div", {
596
+ class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.HALF, t(e).FONT.WEIGHT.SEVEN_HUNDRED])
597
+ }, [
598
+ c("span", null, L(s.label), 1),
599
+ s.isOptional ? (l(), r("span", {
600
+ key: 0,
601
+ class: i([t(e).FONT.COLOR.SURFACE.VARIANT])
602
+ }, " (optional) ", 2)) : N("", !0),
603
+ s.isActive ? (l(), S(ge, { key: 1 })) : N("", !0)
604
+ ], 2),
605
+ G(f, {
606
+ icon: a.value ? t(_).EXPAND_LESS : t(_).EXPAND_MORE
607
+ }, null, 8, ["icon"])
608
+ ], 2),
609
+ c("div", {
610
+ class: i(["tide-accordion-body", t(e).DISPLAY.GRID]),
611
+ ref_key: "accordionBody",
612
+ ref: o
613
+ }, [
614
+ c("div", {
615
+ class: i([t(e).OVERFLOW.Y.HIDDEN])
616
+ }, [
617
+ c("div", {
618
+ class: i([t(e).MARGIN.Y.ONE, t(e).FONT.WEIGHT.FOUR_HUNDRED, t(e).FONT.COLOR.SURFACE.DEFAULT])
619
+ }, [
620
+ X(T.$slots, "default", {}, void 0, !0)
621
+ ], 2)
622
+ ], 2)
623
+ ], 2),
624
+ s.hasBottomDivider ? (l(), S(re, { key: 1 })) : N("", !0)
625
+ ]));
626
+ }
627
+ });
628
+ const _t = /* @__PURE__ */ C(Pe, [["__scopeId", "data-v-ad283103"]]), D = {
629
+ BUTTON: "button",
630
+ LINK: "a"
631
+ }, x = {
632
+ BUTTON: "button",
633
+ DIV: "div",
634
+ LINK: "a"
635
+ }, w = {
636
+ PRIMARY: "primary",
637
+ SECONDARY: "secondary",
638
+ TERTIARY: "tertiary",
639
+ QUATERNARY: "quaternary",
640
+ FLOATING: "floating"
641
+ }, W = {
642
+ BLANK: "_blank",
643
+ SELF: void 0
644
+ }, q = /* @__PURE__ */ v({
645
+ __name: "TideButtonIcon",
646
+ props: {
647
+ disabled: { type: Boolean, default: !1 },
648
+ element: { default: D.BUTTON },
649
+ href: { default: void 0 },
650
+ icon: { default: void 0 },
651
+ isNewTab: { type: Boolean, default: !1 },
652
+ priority: { default: w.PRIMARY }
653
+ },
654
+ setup(n) {
655
+ const s = n;
656
+ return (a, o) => (l(), S(z(s.element === t(D).LINK ? "a" : "button"), {
657
+ "aria-label": s.icon,
658
+ class: i([
659
+ s.element === t(D).LINK ? "tide-link-as-button-icon" : "tide-button-icon",
660
+ s.priority && s.priority,
661
+ [t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER, t(e).BORDER.RADIUS.FULL, t(e).PADDING.FULL.HALF],
662
+ s.element === t(D).LINK ? [t(e).UNDERLINE.OFF] : ""
663
+ ]),
664
+ disabled: s.element === t(D).BUTTON && s.disabled,
665
+ href: s.element === t(D).LINK && s.href ? s.href : void 0,
666
+ target: s.element === t(D).LINK && s.isNewTab ? t(W).BLANK : t(W).SELF
667
+ }, {
668
+ default: J(() => [
669
+ s.icon ? (l(), S(f, {
670
+ key: 0,
671
+ icon: s.icon,
672
+ size: t(y).LARGE
673
+ }, null, 8, ["icon", "size"])) : N("", !0)
674
+ ]),
675
+ _: 1
676
+ }, 8, ["aria-label", "class", "disabled", "href", "target"]));
677
+ }
678
+ }), b = {
679
+ ERROR: "error",
680
+ INFO: "info",
681
+ SUCCESS: "success",
682
+ WARNING: "warning"
683
+ }, Ge = /* @__PURE__ */ v({
684
+ __name: "TideAlert",
685
+ props: {
686
+ heading: { default: void 0 },
687
+ isToast: { type: Boolean, default: !1 },
688
+ type: { default: b.INFO }
689
+ },
690
+ setup(n) {
691
+ const s = n, a = F(() => {
692
+ let o = _.VIEW_IN_AR;
693
+ switch (s.type) {
694
+ case b.ERROR:
695
+ o = _.ERROR;
696
+ break;
697
+ default:
698
+ case b.INFO:
699
+ o = _.INFO;
700
+ break;
701
+ case b.SUCCESS:
702
+ o = _.CHECK;
703
+ break;
704
+ case b.WARNING:
705
+ o = _.WARNING;
706
+ break;
707
+ }
708
+ return o;
709
+ });
710
+ return (o, d) => (l(), r("div", {
711
+ class: i([
712
+ s.type,
713
+ "tide-alert",
714
+ t(e).DISPLAY.GRID,
715
+ t(e).BORDER.RADIUS.HALF,
716
+ t(e).PADDING.FULL.ONE,
717
+ s.type === t(b).ERROR && t(e).BG.SURFACE.ERROR,
718
+ s.type === t(b).INFO && t(e).BG.SURFACE.INFO,
719
+ s.type === t(b).SUCCESS && t(e).BG.SURFACE.SUCCESS,
720
+ s.type === t(b).WARNING && t(e).BG.SURFACE.WARNING,
721
+ s.isToast ? t(e).SHADOW.BOTTOM : ""
722
+ ])
723
+ }, [
724
+ c("div", {
725
+ class: i(["tide-alert-icon", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER])
726
+ }, [
727
+ G(f, {
728
+ class: i([
729
+ s.type,
730
+ t(e).BORDER.RADIUS.FULL,
731
+ t(e).PADDING.FULL.HALF,
732
+ t(e).FONT.COLOR.SURFACE.INVERSE,
733
+ s.type === t(b).ERROR && t(e).BG.ERROR,
734
+ s.type === t(b).INFO && t(e).BG.INFO,
735
+ s.type === t(b).SUCCESS && t(e).BG.SUCCESS,
736
+ s.type === t(b).WARNING && t(e).BG.WARNING
737
+ ]),
738
+ icon: a.value
739
+ }, null, 8, ["class", "icon"])
740
+ ], 2),
741
+ c("div", {
742
+ class: i(["tide-alert-heading", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER])
743
+ }, [
744
+ c("h2", {
745
+ class: i([t(e).FONT.SIZE.SIXTEEN, t(e).FONT.WEIGHT.SIX_HUNDRED, t(e).FONT.COLOR.SURFACE.DEFAULT])
746
+ }, L(s.heading), 3)
747
+ ], 2),
748
+ G(q, {
749
+ class: i(["tide-alert-close", t(e).AXIS2.CENTER, t(e).FONT.COLOR.SURFACE.DEFAULT]),
750
+ icon: t(_).CLOSE,
751
+ priority: t(w).QUATERNARY,
752
+ "aria-label": "Close alert"
753
+ }, null, 8, ["class", "icon", "priority"]),
754
+ c("div", {
755
+ class: i(["tide-alert-body", t(e).FONT.WEIGHT.FIVE_HUNDRED, t(e).FONT.COLOR.SURFACE.VARIANT])
756
+ }, [
757
+ X(o.$slots, "default", {}, void 0, !0)
758
+ ], 2)
759
+ ], 2));
760
+ }
761
+ });
762
+ const Dt = /* @__PURE__ */ C(Ge, [["__scopeId", "data-v-279a5605"]]), St = /* @__PURE__ */ v({
763
+ __name: "TideBadge",
764
+ props: {
765
+ label: {}
766
+ },
767
+ setup(n) {
768
+ const s = n;
769
+ return (a, o) => (l(), r("div", {
770
+ class: i([
771
+ "tide-badge",
772
+ t(e).FONT.COLOR.SURFACE.DEFAULT,
773
+ t(e).BG.SURFACE.FLOATING,
774
+ t(e).DISPLAY.INLINE_FLEX,
775
+ t(e).AXIS2.CENTER,
776
+ t(e).GAP.QUARTER,
777
+ t(e).BORDER.RADIUS.QUARTER,
778
+ t(e).PADDING.Y.QUARTER,
779
+ t(e).PADDING.X.HALF,
780
+ t(e).FONT.SIZE.FOURTEEN
781
+ ])
782
+ }, L(s.label), 3));
783
+ }
784
+ }), ft = /* @__PURE__ */ v({
785
+ __name: "TideBadgePremium",
786
+ props: {
787
+ label: {}
788
+ },
789
+ setup(n) {
790
+ const s = n;
791
+ return (a, o) => (l(), r("div", {
792
+ class: i([
793
+ "tide-badge",
794
+ t(e).FONT.COLOR.SURFACE.DEFAULT,
795
+ t(e).BG.SURFACE.VARIANT,
796
+ t(e).DISPLAY.INLINE_FLEX,
797
+ t(e).GAP.QUARTER,
798
+ t(e).BORDER.RADIUS.QUARTER,
799
+ t(e).PADDING.Y.QUARTER,
800
+ t(e).PADDING.X.HALF,
801
+ t(e).FONT.SIZE.TWELVE
802
+ ])
803
+ }, L(s.label), 3));
804
+ }
805
+ }), Ut = {
806
+ JUST_LISTED: "Just listed",
807
+ NATIONWIDE: "Nationwide",
808
+ REDUCED: "Reduced",
809
+ UPDATED: "Updated"
810
+ }, mt = {
811
+ PREMIUM: "Premium",
812
+ PREMIUM_SELECT: "Premium SELECT"
813
+ }, he = {
814
+ YEARS_10: "10",
815
+ YEARS_15: "15",
816
+ YEARS_5: "5"
817
+ }, He = {
818
+ class: /* @__PURE__ */ i([])
819
+ }, gt = /* @__PURE__ */ v({
820
+ __name: "TideBadgeTrustedPartner",
821
+ props: {
822
+ years: { default: he.YEARS_5 }
823
+ },
824
+ setup(n) {
825
+ const s = n;
826
+ return (a, o) => (l(), r("div", {
827
+ class: i([
828
+ "tide-badge-trusted-partner",
829
+ t(e).FONT.COLOR.SURFACE.BRAND,
830
+ t(e).DISPLAY.INLINE_FLEX,
831
+ t(e).AXIS2.CENTER,
832
+ t(e).GAP.QUARTER,
833
+ t(e).PADDING.Y.QUARTER,
834
+ t(e).PADDING.X.HALF,
835
+ t(e).FONT.SIZE.FOURTEEN
836
+ ])
837
+ }, [
838
+ G(f, {
839
+ icon: t(_).VIEW_IN_AR
840
+ }, null, 8, ["icon"]),
841
+ c("div", He, [
842
+ c("span", null, L(s.years) + " year trusted partner", 1)
843
+ ])
844
+ ], 2));
845
+ }
846
+ }), be = ["data-track", "href"], ye = ["data-track"], Be = { key: 0 }, Ct = /* @__PURE__ */ v({
847
+ __name: "TideBreadCrumbs",
848
+ props: {
849
+ breadCrumbs: {
850
+ default: void 0,
851
+ required: !0,
852
+ type: Object
853
+ }
854
+ },
855
+ setup(n) {
856
+ const s = n;
857
+ return (a, o) => (l(), r("ul", {
858
+ class: i(["tide-bread-crumbs", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).LIST_BULLETS.OFF])
859
+ }, [
860
+ (l(!0), r($, null, Z(s.breadCrumbs, (d, T) => (l(), r($, {
861
+ key: d.label
862
+ }, [
863
+ c("li", {
864
+ class: i([t(e).FONT.SIZE.FOURTEEN])
865
+ }, [
866
+ d.url ? (l(), r("a", {
867
+ key: 0,
868
+ class: i([t(e).FONT.WEIGHT.SEVEN_HUNDRED, t(e).FONT.COLOR.SURFACE.DEFAULT]),
869
+ "data-track": d.dataTrack || void 0,
870
+ href: d.url
871
+ }, L(d.label), 11, be)) : (l(), r("span", {
872
+ key: 1,
873
+ class: i([t(e).FONT.WEIGHT.FIVE_HUNDRED, t(e).FONT.COLOR.SURFACE.VARIANT]),
874
+ "data-track": d.dataTrack || void 0
875
+ }, L(d.label), 11, ye))
876
+ ], 2),
877
+ s.breadCrumbs && T < s.breadCrumbs.length - 1 ? (l(), r("li", Be, [
878
+ G(f, {
879
+ icon: t(_).ARROW_RIGHT,
880
+ size: t(y).SMALL
881
+ }, null, 8, ["icon", "size"])
882
+ ])) : N("", !0)
883
+ ], 64))), 128))
884
+ ], 2));
885
+ }
886
+ }), Pt = /* @__PURE__ */ v({
887
+ __name: "TideButton",
888
+ props: {
889
+ disabled: { type: Boolean, default: !1 },
890
+ element: { default: D.BUTTON },
891
+ href: { default: void 0 },
892
+ iconLeading: { default: void 0 },
893
+ iconTrailing: { default: void 0 },
894
+ isNewTab: { type: Boolean, default: !1 },
895
+ label: { default: void 0 },
896
+ priority: { default: w.PRIMARY }
897
+ },
898
+ setup(n) {
899
+ const s = n;
900
+ return (a, o) => (l(), S(z(s.element === t(D).LINK ? t(D).LINK : t(D).BUTTON), {
901
+ class: i([
902
+ s.element === t(D).LINK ? "tide-link-as-button" : "tide-button",
903
+ s.priority && s.priority,
904
+ s.element === t(D).LINK ? [t(e).DISPLAY.INLINE_FLEX] : [t(e).DISPLAY.FLEX],
905
+ [t(e).AXIS1.CENTER, t(e).AXIS2.CENTER, t(e).GAP.HALF, t(e).BORDER.RADIUS.HALF],
906
+ s.element === t(D).LINK ? t(e).UNDERLINE.OFF : "",
907
+ t(e).PADDING.Y.ONE,
908
+ t(e).PADDING.X.TWO,
909
+ t(e).FONT.WEIGHT.SIX_HUNDRED
910
+ ]),
911
+ disabled: s.element === t(D).BUTTON && s.disabled,
912
+ href: s.element === t(D).LINK && s.href ? s.href : void 0,
913
+ target: s.element === t(D).LINK && s.isNewTab ? t(W).BLANK : t(W).SELF
914
+ }, {
915
+ default: J(() => [
916
+ s.iconLeading ? (l(), S(f, {
917
+ key: 0,
918
+ icon: s.iconLeading,
919
+ size: t(y).LARGE
920
+ }, null, 8, ["icon", "size"])) : N("", !0),
921
+ Ee(" " + L(s.label) + " ", 1),
922
+ s.iconTrailing ? (l(), S(f, {
923
+ key: 1,
924
+ icon: s.iconTrailing,
925
+ size: t(y).LARGE
926
+ }, null, 8, ["icon", "size"])) : N("", !0)
927
+ ]),
928
+ _: 1
929
+ }, 8, ["class", "disabled", "href", "target"]));
930
+ }
931
+ }), Xe = /* @__PURE__ */ v({
932
+ __name: "TideButtonPagination",
933
+ props: {
934
+ disabled: { type: Boolean, default: !1 },
935
+ element: { default: x.BUTTON },
936
+ href: { default: void 0 },
937
+ label: { default: void 0 }
938
+ },
939
+ setup(n) {
940
+ const s = n;
941
+ return (a, o) => (l(), S(z(
942
+ s.element === t(x).LINK ? "a" : s.element === t(x).BUTTON ? "button" : "div"
943
+ ), {
944
+ class: i([
945
+ s.element === t(x).LINK ? "tide-link-as-button-icon" : "tide-button-icon",
946
+ [t(e).DISPLAY.INLINE_BLOCK, t(e).BORDER.RADIUS.FULL, t(e).PADDING.FULL.HALF],
947
+ s.element === t(x).LINK ? [t(e).UNDERLINE.OFF] : "",
948
+ s.element === t(x).DIV ? [t(e).CURSOR.POINTER] : "",
949
+ [t(e).FONT.WEIGHT.SEVEN_HUNDRED]
950
+ ]),
951
+ disabled: s.element === t(x).BUTTON && s.disabled,
952
+ href: s.element === t(x).LINK && s.href ? s.href : void 0
953
+ }, {
954
+ default: J(() => [
955
+ c("span", {
956
+ class: i(["label", t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER])
957
+ }, L(s.label), 3)
958
+ ]),
959
+ _: 1
960
+ }, 8, ["class", "disabled", "href"]));
961
+ }
962
+ });
963
+ const We = /* @__PURE__ */ C(Xe, [["__scopeId", "data-v-0710b4ab"]]), Gt = /* @__PURE__ */ v({
964
+ __name: "TideCard",
965
+ setup(n) {
966
+ return (s, a) => (l(), r("div", {
967
+ class: i([
968
+ "tide-card",
969
+ t(e).HEIGHT.FULL,
970
+ t(e).BORDER.RADIUS.HALF,
971
+ t(e).BG.SURFACE.DEFAULT,
972
+ t(e).SHADOW.BOTTOM,
973
+ t(e).FONT.COLOR.SURFACE.DEFAULT,
974
+ t(e).SNAP_ALIGN.START
975
+ ])
976
+ }, [
977
+ X(s.$slots, "default")
978
+ ], 2));
979
+ }
980
+ }), ce = 16, ht = /* @__PURE__ */ v({
981
+ __name: "TideCarousel",
982
+ props: {
983
+ isTouchscreen: { type: Boolean },
984
+ offsetX: { default: 0 }
985
+ },
986
+ emits: ["change"],
987
+ setup(n, { emit: s }) {
988
+ const a = n;
989
+ let o = A(), d = A(), T = A(), I = A();
990
+ const E = A(), O = A(), p = A(), R = A(0), g = () => {
991
+ const u = Array.from(E.value.children).map((P) => P.offsetLeft);
992
+ if (u.length === 0)
993
+ return;
994
+ const U = u.reduce((P, V) => Math.abs(V - O.value.scrollLeft) < Math.abs(P - O.value.scrollLeft) ? V : P);
995
+ R.value = u.indexOf(U);
996
+ }, h = () => {
997
+ o.value = E.value.scrollWidth, d.value = O.value.clientWidth, T.value = o.value > d.value, I.value = O.value.scrollWidth - O.value.clientWidth, p.value = T.value && !a.isTouchscreen, g();
998
+ }, M = () => {
999
+ h();
1000
+ }, Y = (u) => {
1001
+ O.value.scrollTo({
1002
+ behavior: "smooth",
1003
+ left: E.value.children[u].offsetLeft
1004
+ });
1005
+ }, k = () => {
1006
+ const u = E.value.scrollWidth, U = O.value.scrollLeft + O.value.clientWidth;
1007
+ if (U > u)
1008
+ O.value.scrollTo({
1009
+ behavior: "smooth",
1010
+ left: u
1011
+ });
1012
+ else {
1013
+ const P = a.offsetX && R.value === 0, te = U === u ? 0 : P ? 2 : R.value + 1;
1014
+ Y(te);
1015
+ }
1016
+ }, H = () => {
1017
+ const u = a.offsetX ? 1 : 0, U = R.value - 1 === u, V = R.value <= u ? E.value.children.length - 1 : U ? 0 : R.value - 1;
1018
+ Y(V);
1019
+ };
1020
+ return window.addEventListener("resize", h), j(() => {
1021
+ h();
1022
+ }), Ae(() => {
1023
+ window.removeEventListener("resize", h);
1024
+ }), Ne(() => {
1025
+ h();
1026
+ }), Q(R, () => {
1027
+ s("change", R.value);
1028
+ }), (u, U) => (l(), r("section", {
1029
+ class: i(["tide-carousel", t(e).POSITION.RELATIVE, t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).WIDTH.FULL]),
1030
+ ref: "carouselRef"
1031
+ }, [
1032
+ c("div", {
1033
+ class: i([t(e).SCROLLBAR.OFF, t(e).SNAP.ON, t(e).OVERFLOW.X.SCROLL]),
1034
+ ref_key: "frameRef",
1035
+ ref: O,
1036
+ onScroll: M
1037
+ }, [
1038
+ c("ul", {
1039
+ class: i([a.isTouchscreen ? [t(e).OVERFLOW.X.AUTO] : "", t(e).DISPLAY.FLEX, t(e).GAP.ONE, t(e).LIST_BULLETS.OFF]),
1040
+ ref_key: "contentRef",
1041
+ ref: E
1042
+ }, [
1043
+ a.offsetX ? (l(), r("li", {
1044
+ key: 0,
1045
+ class: i([t(e).FLEX.SHRINK.OFF, t(e).SNAP_ALIGN.START]),
1046
+ style: ae({ width: `${a.offsetX - ce}px` })
1047
+ }, null, 6)) : N("", !0),
1048
+ X(u.$slots, "default"),
1049
+ a.offsetX ? (l(), r("li", {
1050
+ key: 1,
1051
+ class: i([t(e).FLEX.SHRINK.OFF, t(e).SNAP_ALIGN.START]),
1052
+ style: ae({ width: `${a.offsetX - ce}px` })
1053
+ }, null, 6)) : N("", !0)
1054
+ ], 2)
1055
+ ], 34),
1056
+ p.value ? (l(), r("div", {
1057
+ key: 0,
1058
+ class: i([
1059
+ t(e).POSITION.ABSOLUTE,
1060
+ t(e).DISPLAY.FLEX,
1061
+ t(e).AXIS1.BETWEEN,
1062
+ t(e).AXIS2.CENTER,
1063
+ t(e).WIDTH.FULL,
1064
+ t(e).HEIGHT.FULL,
1065
+ t(e).POINTER_EVENTS.OFF
1066
+ ])
1067
+ }, [
1068
+ G(q, {
1069
+ class: i([t(e).MARGIN.LEFT.ONE, t(e).POINTER_EVENTS.ON]),
1070
+ icon: t(_).CHEVRON_LEFT,
1071
+ priority: t(w).QUATERNARY,
1072
+ onClick: H
1073
+ }, null, 8, ["class", "icon", "priority"]),
1074
+ G(q, {
1075
+ class: i([t(e).MARGIN.RIGHT.ONE, t(e).POINTER_EVENTS.ON]),
1076
+ icon: t(_).CHEVRON_RIGHT,
1077
+ priority: t(w).QUATERNARY,
1078
+ onClick: k
1079
+ }, null, 8, ["class", "icon", "priority"])
1080
+ ], 2)) : N("", !0)
1081
+ ], 2));
1082
+ }
1083
+ }), Me = ["href", "target"], Ye = /* @__PURE__ */ v({
1084
+ __name: "TideChipAction",
1085
+ props: {
1086
+ href: {},
1087
+ isNewTab: { type: Boolean, default: !1 },
1088
+ label: {}
1089
+ },
1090
+ setup(n) {
1091
+ const s = n;
1092
+ return (a, o) => (l(), r("a", {
1093
+ class: i([
1094
+ "tide-chip-action",
1095
+ t(e).AXIS2.CENTER,
1096
+ t(e).GAP.HALF,
1097
+ t(e).BORDER.FULL.ONE,
1098
+ t(e).BORDER.RADIUS.FULL,
1099
+ t(e).PADDING.X.ONE,
1100
+ t(e).PADDING.Y.HALF,
1101
+ t(e).BG.SURFACE.DEFAULT,
1102
+ t(e).FONT.SIZE.FOURTEEN,
1103
+ t(e).FONT.WEIGHT.FIVE_HUNDRED,
1104
+ t(e).FONT.COLOR.SURFACE.DEFAULT,
1105
+ t(e).UNDERLINE.OFF
1106
+ ]),
1107
+ href: s.href,
1108
+ target: s.isNewTab ? t(W).BLANK : t(W).SELF
1109
+ }, [
1110
+ G(f, {
1111
+ icon: t(_).SEARCH
1112
+ }, null, 8, ["icon"]),
1113
+ c("span", null, L(s.label), 1)
1114
+ ], 10, Me));
1115
+ }
1116
+ });
1117
+ const Ht = /* @__PURE__ */ C(Ye, [["__scopeId", "data-v-99f83e8d"]]), ke = /* @__PURE__ */ v({
1118
+ __name: "TideChipFilter",
1119
+ props: {
1120
+ isActive: { type: Boolean },
1121
+ label: {}
1122
+ },
1123
+ setup(n) {
1124
+ const s = n;
1125
+ return (a, o) => (l(), r("button", {
1126
+ class: i([
1127
+ "tide-chip-filter",
1128
+ s.isActive ? [t(e).BG.SECONDARY, t(e).FONT.COLOR.SECONDARY] : [t(e).BG.SURFACE.VARIANT, t(e).FONT.COLOR.SURFACE.DEFAULT],
1129
+ t(e).DISPLAY.FLEX,
1130
+ t(e).AXIS2.CENTER,
1131
+ t(e).GAP.HALF,
1132
+ t(e).BORDER.FULL.ONE,
1133
+ t(e).BORDER.RADIUS.FULL,
1134
+ t(e).PADDING.X.ONE,
1135
+ t(e).PADDING.Y.HALF,
1136
+ t(e).FONT.SIZE.FOURTEEN,
1137
+ t(e).FONT.WEIGHT.FIVE_HUNDRED,
1138
+ s.isActive ? "active" : ""
1139
+ ])
1140
+ }, [
1141
+ X(a.$slots, "default", {}, void 0, !0),
1142
+ c("div", {
1143
+ class: i([t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER, t(e).GAP.HALF])
1144
+ }, [
1145
+ c("span", {
1146
+ class: i([s.isActive ? "" : "icon-spacing", t(e).FONT.WEIGHT.FIVE_HUNDRED, t(e).WHITESPACE_WRAP.OFF])
1147
+ }, L(s.label), 3)
1148
+ ], 2)
1149
+ ], 2));
1150
+ }
1151
+ });
1152
+ const bt = /* @__PURE__ */ C(ke, [["__scopeId", "data-v-c07faf14"]]), Ve = /* @__PURE__ */ v({
1153
+ __name: "TideChipInput",
1154
+ props: {
1155
+ label: {}
1156
+ },
1157
+ setup(n) {
1158
+ const s = n;
1159
+ return (a, o) => (l(), r("button", {
1160
+ class: i([
1161
+ "tide-chip-input",
1162
+ t(e).BG.SURFACE.VARIANT,
1163
+ t(e).FONT.COLOR.SURFACE,
1164
+ t(e).DISPLAY.FLEX,
1165
+ t(e).AXIS2.CENTER,
1166
+ t(e).GAP.HALF,
1167
+ t(e).BORDER.FULL.ONE,
1168
+ t(e).BORDER.RADIUS.FULL,
1169
+ t(e).PADDING.X.ONE,
1170
+ t(e).PADDING.Y.HALF,
1171
+ t(e).FONT.SIZE.FOURTEEN,
1172
+ t(e).FONT.WEIGHT.FIVE_HUNDRED
1173
+ ])
1174
+ }, [
1175
+ c("span", null, L(s.label), 1),
1176
+ G(f, {
1177
+ icon: t(_).CLOSE
1178
+ }, null, 8, ["icon"])
1179
+ ], 2));
1180
+ }
1181
+ });
1182
+ const yt = /* @__PURE__ */ C(Ve, [["__scopeId", "data-v-62b9f1c0"]]), xe = { class: "tide-columns" }, we = { class: "tide-columns-column" }, $e = { class: "tide-columns-column" }, Qe = { class: "tide-columns-column" }, Ke = { class: "tide-columns-column" }, qe = /* @__PURE__ */ v({
1183
+ __name: "TideColumns",
1184
+ props: {
1185
+ heading: { default: "" }
1186
+ },
1187
+ setup(n) {
1188
+ const s = n;
1189
+ return (a, o) => (l(), r("section", xe, [
1190
+ c("h2", {
1191
+ class: i([t(e).MARGIN.BOTTOM.HALF, t(e).FONT.SIZE.SIXTEEN])
1192
+ }, L(s.heading), 3),
1193
+ c("ul", {
1194
+ class: i([t(e).DISPLAY.FLEX, t(e).FLEX.WRAP, t(e).GAP.TWO, t(e).LIST_BULLETS.OFF])
1195
+ }, [
1196
+ c("li", we, [
1197
+ X(a.$slots, "section1", {}, void 0, !0)
1198
+ ]),
1199
+ c("li", $e, [
1200
+ X(a.$slots, "section2", {}, void 0, !0)
1201
+ ]),
1202
+ c("li", Qe, [
1203
+ X(a.$slots, "section3", {}, void 0, !0)
1204
+ ]),
1205
+ c("li", Ke, [
1206
+ X(a.$slots, "section4", {}, void 0, !0)
1207
+ ])
1208
+ ], 2)
1209
+ ]));
1210
+ }
1211
+ });
1212
+ const Bt = /* @__PURE__ */ C(qe, [["__scopeId", "data-v-14ad0455"]]), ze = ["alt", "src"], Xt = /* @__PURE__ */ v({
1213
+ __name: "TideImage",
1214
+ props: {
1215
+ alt: { default: "" },
1216
+ cdn: { default: void 0 },
1217
+ isLazy: { type: Boolean, default: !0 },
1218
+ offset: { default: 0 },
1219
+ src: { default: void 0 }
1220
+ },
1221
+ setup(n, { expose: s }) {
1222
+ const a = n, o = A(), d = `${a.cdn}/image-coming-soon-512.png`, T = () => {
1223
+ if (a.src) {
1224
+ const p = new Image();
1225
+ p.onload = E, p.onerror = I, p.src = a.src;
1226
+ }
1227
+ }, I = () => {
1228
+ o.value.src = d;
1229
+ }, E = () => {
1230
+ o.value.src = a.src;
1231
+ };
1232
+ s(o.value);
1233
+ const O = new IntersectionObserver((p, R) => {
1234
+ p.forEach(
1235
+ (g) => {
1236
+ g.isIntersecting && (T(), R.unobserve(g.target));
1237
+ },
1238
+ {
1239
+ rootMargin: `${a.offset}px`
1240
+ }
1241
+ );
1242
+ });
1243
+ return j(() => {
1244
+ a.isLazy ? O.observe(o.value) : T();
1245
+ }), Le(() => {
1246
+ O.unobserve(o.value);
1247
+ }), (p, R) => (l(), r("img", {
1248
+ alt: p.alt,
1249
+ class: i(["tide-image", t(e).OBJECT.CENTER, t(e).OBJECT.COVER]),
1250
+ ref_key: "tideImage",
1251
+ ref: o,
1252
+ src: p.isLazy && p.src ? p.src : d
1253
+ }, null, 10, ze));
1254
+ }
1255
+ }), Ze = ["checked", "id"], je = ["for"], Je = /* @__PURE__ */ v({
1256
+ __name: "TideInputRadio",
1257
+ props: {
1258
+ checked: { type: Boolean, default: !1 },
1259
+ dataTrack: { default: "" },
1260
+ disabled: { type: Boolean, default: !1 },
1261
+ inputId: { default: void 0 },
1262
+ label: { default: void 0 },
1263
+ name: {}
1264
+ },
1265
+ setup(n) {
1266
+ const s = n, a = A(s.checked), o = F(() => {
1267
+ var d;
1268
+ return s.inputId ? s.inputId : `text-input-${((d = ee()) == null ? void 0 : d.uid) || ""}`;
1269
+ });
1270
+ return Q(s, (d, T) => {
1271
+ (d.checked !== T.checked || d.checked !== a.value) && (a.value = s.checked);
1272
+ }), (d, T) => (l(), r("div", {
1273
+ class: i(["tide-input-radio", t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.HALF, s.disabled && "disabled"])
1274
+ }, [
1275
+ c("input", {
1276
+ checked: a.value,
1277
+ class: i([t(e).DISPLAY.NONE]),
1278
+ id: o.value,
1279
+ name: "",
1280
+ type: "radio",
1281
+ value: ""
1282
+ }, null, 10, Ze),
1283
+ c("div", {
1284
+ class: i([
1285
+ "tide-input-radio-custom",
1286
+ t(e).POSITION.RELATIVE,
1287
+ t(e).DISPLAY.FLEX,
1288
+ t(e).AXIS1.CENTER,
1289
+ t(e).AXIS2.CENTER,
1290
+ t(e).BORDER.FULL.ONE,
1291
+ a.value ? t(e).BORDER.COLOR.HIGH : t(e).BORDER.COLOR.DEFAULT,
1292
+ t(e).BORDER.RADIUS.FULL,
1293
+ a.value && "checked"
1294
+ ])
1295
+ }, [
1296
+ c("div", {
1297
+ class: i(["tide-input-radio-check", t(e).BORDER.RADIUS.FULL, s.checked && t(e).BG.SECONDARY])
1298
+ }, null, 2)
1299
+ ], 2),
1300
+ c("label", {
1301
+ class: i(t(e).FONT.WEIGHT.FOUR_HUNDRED),
1302
+ for: o.value
1303
+ }, L(s.label), 11, je)
1304
+ ], 2));
1305
+ }
1306
+ });
1307
+ const Wt = /* @__PURE__ */ C(Je, [["__scopeId", "data-v-c820007d"]]), Ie = "Please enter a valid value.", oe = (n, s) => typeof n == "string" && n.length > 0 ? n : typeof s == "string" && s.length > 0 ? s : Ie, ne = (n, s) => n !== !1 || s !== !1, et = ({ maxlength: n, minlength: s, value: a }) => {
1308
+ const o = n && a.length > n, d = s && a.length < s;
1309
+ return !o && !d;
1310
+ }, Re = ({
1311
+ error: n,
1312
+ errorFromProps: s,
1313
+ maxlength: a,
1314
+ minlength: o,
1315
+ validators: d,
1316
+ value: T
1317
+ }) => {
1318
+ if (n.value = s || !1, !n.value && d) {
1319
+ const I = st(T.value, d);
1320
+ I.valid || (n.value = I.message);
1321
+ }
1322
+ if (!n.value && (a || o)) {
1323
+ const I = tt({
1324
+ maxlength: a,
1325
+ minlength: o,
1326
+ value: T.value
1327
+ });
1328
+ I.valid || (n.value = I.message);
1329
+ }
1330
+ }, tt = ({ maxlength: n, minlength: s, value: a }) => {
1331
+ const o = {
1332
+ message: "",
1333
+ valid: !0
1334
+ };
1335
+ return o.valid = et({
1336
+ maxlength: n,
1337
+ minlength: s,
1338
+ value: a
1339
+ }), o.valid || (o.message = Ie, n && s ? o.message = `Please enter a value between ${s} and ${n} characters in length.` : n ? o.message = `Please enter a value no more than ${n} characters in length.` : s && (o.message = `Please enter a value no less than ${s} characters in length.`)), o;
1340
+ };
1341
+ function st(n, s) {
1342
+ for (const a of s) {
1343
+ const o = a(n);
1344
+ if (!o.valid)
1345
+ return o;
1346
+ }
1347
+ return {
1348
+ message: "",
1349
+ valid: !0
1350
+ };
1351
+ }
1352
+ const at = ["for"], it = ["disabled", "name", "required", "id"], ot = ["selected", "value"], nt = /* @__PURE__ */ v({
1353
+ __name: "TideInputSelect",
1354
+ props: {
1355
+ inputId: { default: void 0 },
1356
+ supportingText: { default: void 0 },
1357
+ options: {},
1358
+ disabled: { type: Boolean, default: !1 },
1359
+ error: { type: [String, Boolean], default: !1 },
1360
+ label: { default: void 0 },
1361
+ name: {},
1362
+ required: { type: Boolean, default: !1 },
1363
+ value: { default: "" }
1364
+ },
1365
+ setup(n, { expose: s }) {
1366
+ const a = n, o = A(a.error), d = A(!1), T = A(null), I = A(a.required), E = A(a.value), O = F(() => oe(a.error, o.value)), p = F(() => a.required ? `${a.label} *` : a.label), R = F(() => a.required && !E.value || ne(o.value, a.error)), g = F(() => d.value || !h.value), h = F(() => E.value === ""), M = F(() => {
1367
+ var u;
1368
+ return a.inputId ? a.inputId : `text-input-${((u = ee()) == null ? void 0 : u.uid) || ""}`;
1369
+ }), Y = () => {
1370
+ var U;
1371
+ const u = new MouseEvent("mousedown");
1372
+ (U = T == null ? void 0 : T.value) == null || U.dispatchEvent(u);
1373
+ }, k = () => {
1374
+ d.value = !0;
1375
+ }, H = () => {
1376
+ d.value = !1;
1377
+ };
1378
+ return Q(a, (u, U) => {
1379
+ (u.value !== U.value || u.value !== E.value) && (E.value = a.value);
1380
+ }), s({ error: o, value: E }), (u, U) => (l(), r("div", {
1381
+ class: i([
1382
+ "tide-input-select",
1383
+ t(e).DISPLAY.FLEX,
1384
+ t(e).FLEX.DIRECTION.COLUMN,
1385
+ t(e).GAP.QUARTER,
1386
+ u.disabled && "disabled",
1387
+ R.value && "error"
1388
+ ])
1389
+ }, [
1390
+ c("div", {
1391
+ class: i([
1392
+ "tide-input-border",
1393
+ t(e).POSITION.RELATIVE,
1394
+ t(e).DISPLAY.FLEX,
1395
+ t(e).AXIS2.CENTER,
1396
+ t(e).GAP.HALF,
1397
+ t(e).BORDER.RADIUS.HALF,
1398
+ a.disabled ? t(e).CURSOR.NOT_ALLOWED : "",
1399
+ t(e).OVERFLOW.XY.HIDDEN
1400
+ ]),
1401
+ onClick: Y
1402
+ }, [
1403
+ c("div", {
1404
+ class: i([t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).WIDTH.FULL])
1405
+ }, [
1406
+ u.label ? (l(), r("label", {
1407
+ key: 0,
1408
+ class: i([
1409
+ g.value ? ["minilabel", t(e).FONT.SIZE.TWELVE] : t(e).FONT.SIZE.SIXTEEN,
1410
+ t(e).POSITION.ABSOLUTE,
1411
+ t(e).POSITIONING.LEFT_0,
1412
+ t(e).MARGIN.TOP.HALF,
1413
+ t(e).MARGIN.LEFT.ONE,
1414
+ !R.value && t(e).FONT.COLOR.SURFACE.VARIANT,
1415
+ t(e).FONT.WEIGHT.FIVE_HUNDRED
1416
+ ]),
1417
+ for: M.value
1418
+ }, L(p.value), 11, at)) : N("", !0),
1419
+ ie(c("select", {
1420
+ class: i([t(e).PADDING.BOTTOM.HALF, t(e).PADDING.X.ONE, t(e).WIDTH.FULL, u.disabled && t(e).CURSOR.NOT_ALLOWED]),
1421
+ disabled: u.disabled,
1422
+ name: u.name,
1423
+ ref_key: "input",
1424
+ ref: T,
1425
+ required: I.value,
1426
+ onFocus: k,
1427
+ onFocusout: H,
1428
+ id: M.value,
1429
+ "onUpdate:modelValue": U[0] || (U[0] = (P) => E.value = P)
1430
+ }, [
1431
+ (l(!0), r($, null, Z(u.options, (P) => (l(), r("option", {
1432
+ class: i([t(e).WIDTH.FULL, t(e).BG.SURFACE.DEFAULT]),
1433
+ key: P.value,
1434
+ selected: E.value === P.value ? !0 : void 0,
1435
+ value: P.value
1436
+ }, L(P.label), 11, ot))), 128))
1437
+ ], 42, it), [
1438
+ [pe, E.value]
1439
+ ])
1440
+ ], 2),
1441
+ G(f, {
1442
+ class: i([t(e).POSITION.ABSOLUTE, t(e).POSITIONING.RIGHT_0, t(e).MARGIN.RIGHT.ONE, t(e).POINTER_EVENTS.OFF]),
1443
+ icon: t(_).EXPAND_MORE,
1444
+ size: t(y).SMALL
1445
+ }, null, 8, ["class", "icon", "size"])
1446
+ ], 2),
1447
+ a.supportingText || R.value ? (l(), r("div", {
1448
+ key: 0,
1449
+ class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).MARGIN.LEFT.ONE])
1450
+ }, [
1451
+ R.value ? (l(), S(f, {
1452
+ key: 0,
1453
+ class: i([]),
1454
+ icon: t(_).ERROR,
1455
+ size: t(y).SMALL
1456
+ }, null, 8, ["icon", "size"])) : N("", !0),
1457
+ c("div", {
1458
+ class: i([t(e).FONT.SIZE.TWELVE, t(e).FONT.WEIGHT.FIVE_HUNDRED])
1459
+ }, L(R.value ? O.value : a.supportingText), 3)
1460
+ ], 2)) : N("", !0)
1461
+ ], 2));
1462
+ }
1463
+ });
1464
+ const Mt = /* @__PURE__ */ C(nt, [["__scopeId", "data-v-c500c562"]]), K = {
1465
+ DATE: "date",
1466
+ DATETIME_LOCAL: "datetime-local",
1467
+ EMAIL: "email",
1468
+ MONTH: "month",
1469
+ NUMBER: "number",
1470
+ PASSWORD: "password",
1471
+ SEARCH: "search",
1472
+ TEL: "tel",
1473
+ TEXT: "text",
1474
+ TIME: "time",
1475
+ URL: "url",
1476
+ WEEK: "week"
1477
+ }, lt = ["for"], dt = ["autocomplete", "data-track", "disabled", "maxlength", "minlength", "name", "required", "type", "id"], rt = /* @__PURE__ */ v({
1478
+ __name: "TideInputText",
1479
+ props: {
1480
+ autocomplete: { type: Boolean, default: !1 },
1481
+ dataTrack: { default: "" },
1482
+ disabled: { type: Boolean, default: !1 },
1483
+ error: { type: [String, Boolean], default: !1 },
1484
+ hasClear: { type: Boolean, default: !1 },
1485
+ iconLeading: { default: void 0 },
1486
+ inputId: { default: void 0 },
1487
+ label: { default: void 0 },
1488
+ maxlength: { default: void 0 },
1489
+ minlength: { default: void 0 },
1490
+ name: {},
1491
+ prefix: { default: void 0 },
1492
+ required: { type: Boolean, default: !1 },
1493
+ suffix: { default: void 0 },
1494
+ supportingText: { default: void 0 },
1495
+ transformValue: { type: Function, default: void 0 },
1496
+ type: { default: K.TEXT },
1497
+ validators: { default: void 0 },
1498
+ value: { default: "" }
1499
+ },
1500
+ setup(n, { expose: s }) {
1501
+ const a = n, o = A(a.error), d = A(!1), T = A(null), I = A(!1), E = A(a.value), O = F(() => oe(a.error, o.value)), p = F(() => a.required && a.label ? `${a.label} *` : a.label), R = F(() => a.hasClear && E.value), g = F(() => a.required && !E.value || ne(o.value, a.error)), h = F(() => d.value || !M.value), M = F(() => E.value === ""), Y = F(
1502
+ () => a.type === K.PASSWORD && I.value === !0 ? K.TEXT : a.type
1503
+ ), k = F(() => {
1504
+ var m;
1505
+ return a.inputId ? a.inputId : `text-input-${((m = ee()) == null ? void 0 : m.uid) || ""}`;
1506
+ }), H = () => {
1507
+ var m;
1508
+ E.value = "", (m = T.value) == null || m.focus();
1509
+ }, u = () => {
1510
+ d.value = !0;
1511
+ }, U = () => {
1512
+ d.value = !1, V();
1513
+ }, P = () => {
1514
+ var m;
1515
+ if (a.transformValue) {
1516
+ const B = ((m = E.value.match(/\d/g)) == null ? void 0 : m.join("")) || void 0;
1517
+ E.value = B ? a.transformValue(B) : "";
1518
+ }
1519
+ }, V = () => {
1520
+ Re({
1521
+ error: o,
1522
+ errorFromProps: a.error,
1523
+ maxlength: a.maxlength,
1524
+ minlength: a.minlength,
1525
+ validators: a.validators,
1526
+ value: E
1527
+ });
1528
+ }, te = (m) => {
1529
+ E.value = m;
1530
+ };
1531
+ return Q(
1532
+ a,
1533
+ (m, B) => {
1534
+ (m.value !== B.value || m.value !== E.value) && (E.value = a.value);
1535
+ },
1536
+ { deep: !0 }
1537
+ ), s({ error: o, updateValue: te, value: E }), (m, B) => (l(), r("div", {
1538
+ class: i([
1539
+ "tide-input-text",
1540
+ t(e).DISPLAY.FLEX,
1541
+ t(e).FLEX.DIRECTION.COLUMN,
1542
+ t(e).GAP.QUARTER,
1543
+ m.disabled && "disabled",
1544
+ g.value && "error"
1545
+ ])
1546
+ }, [
1547
+ c("div", {
1548
+ class: i([
1549
+ "tide-input-border",
1550
+ t(e).DISPLAY.FLEX,
1551
+ t(e).AXIS2.CENTER,
1552
+ t(e).GAP.HALF,
1553
+ t(e).POSITION.RELATIVE,
1554
+ t(e).BORDER.RADIUS.HALF,
1555
+ R.value ? [t(e).PADDING.RIGHT.HALF, t(e).PADDING.LEFT.ONE] : [t(e).PADDING.X.ONE],
1556
+ t(e).PADDING.Y.HALF,
1557
+ a.disabled ? t(e).CURSOR.NOT_ALLOWED : t(e).CURSOR.TEXT
1558
+ ])
1559
+ }, [
1560
+ a.iconLeading ? (l(), S(f, {
1561
+ key: 0,
1562
+ icon: a.iconLeading,
1563
+ size: t(y).SMALL
1564
+ }, null, 8, ["icon", "size"])) : N("", !0),
1565
+ c("div", {
1566
+ class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).WIDTH.FULL])
1567
+ }, [
1568
+ a.prefix ? (l(), r("div", {
1569
+ key: 0,
1570
+ class: i(["tide-input-text-prefix", !g.value && t(e).FONT.COLOR.SURFACE.VARIANT, h.value ? "" : "offset"])
1571
+ }, L(a.prefix), 3)) : N("", !0),
1572
+ c("div", {
1573
+ class: i([t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).WIDTH.FULL]),
1574
+ onClick: B[1] || (B[1] = Te((se) => {
1575
+ var le;
1576
+ return (le = T.value) == null ? void 0 : le.focus();
1577
+ }, ["prevent"]))
1578
+ }, [
1579
+ m.label ? (l(), r("label", {
1580
+ key: 0,
1581
+ class: i([
1582
+ h.value ? ["minilabel", t(e).FONT.SIZE.TWELVE] : t(e).FONT.SIZE.SIXTEEN,
1583
+ !g.value && t(e).FONT.COLOR.SURFACE.VARIANT,
1584
+ t(e).FONT.WEIGHT.FIVE_HUNDRED,
1585
+ t(e).CURSOR.TEXT
1586
+ ]),
1587
+ for: k.value
1588
+ }, L(p.value), 11, lt)) : N("", !0),
1589
+ ie(c("input", {
1590
+ autocomplete: m.autocomplete ? "on" : "off",
1591
+ class: i([t(e).WIDTH.FULL, m.disabled && t(e).CURSOR.NOT_ALLOWED]),
1592
+ "data-track": a.dataTrack,
1593
+ disabled: a.disabled,
1594
+ maxlength: a.maxlength,
1595
+ minlength: a.minlength,
1596
+ name: a.name,
1597
+ ref_key: "input",
1598
+ ref: T,
1599
+ required: a.required,
1600
+ type: Y.value,
1601
+ onChange: V,
1602
+ onFocus: u,
1603
+ onFocusout: U,
1604
+ onInput: P,
1605
+ id: k.value,
1606
+ "onUpdate:modelValue": B[0] || (B[0] = (se) => E.value = se)
1607
+ }, null, 42, dt), [
1608
+ [ve, E.value]
1609
+ ])
1610
+ ], 2),
1611
+ a.suffix ? (l(), r("div", {
1612
+ key: 1,
1613
+ class: i(["tide-input-text-suffix", !g.value && t(e).FONT.COLOR.SURFACE.VARIANT, h.value ? "" : "offset"])
1614
+ }, L(a.suffix), 3)) : N("", !0)
1615
+ ], 2),
1616
+ R.value && a.type !== t(K).PASSWORD ? (l(), S(f, {
1617
+ key: 1,
1618
+ class: i([t(e).PADDING.Y.HALF, t(e).PADDING.FULL.HALF, t(e).CURSOR.POINTER]),
1619
+ icon: t(_).CLOSE,
1620
+ size: t(y).SMALL,
1621
+ onClick: H
1622
+ }, null, 8, ["class", "icon", "size"])) : N("", !0),
1623
+ a.type === t(K).PASSWORD ? (l(), S(f, {
1624
+ key: 2,
1625
+ class: i([t(e).PADDING.Y.HALF, t(e).PADDING.FULL.HALF, t(e).CURSOR.POINTER]),
1626
+ icon: t(_).VISIBILITY,
1627
+ size: t(y).SMALL,
1628
+ onClick: B[2] || (B[2] = (se) => I.value = !I.value)
1629
+ }, null, 8, ["class", "icon", "size"])) : N("", !0)
1630
+ ], 2),
1631
+ a.supportingText || g.value ? (l(), r("div", {
1632
+ key: 0,
1633
+ class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).MARGIN.LEFT.ONE])
1634
+ }, [
1635
+ g.value ? (l(), S(f, {
1636
+ key: 0,
1637
+ class: i([]),
1638
+ icon: t(_).ERROR,
1639
+ size: t(y).SMALL
1640
+ }, null, 8, ["icon", "size"])) : N("", !0),
1641
+ c("div", {
1642
+ class: i([t(e).FONT.SIZE.TWELVE, t(e).FONT.WEIGHT.FIVE_HUNDRED])
1643
+ }, L(g.value ? O.value : a.supportingText), 3)
1644
+ ], 2)) : N("", !0)
1645
+ ], 2));
1646
+ }
1647
+ });
1648
+ const Yt = /* @__PURE__ */ C(rt, [["__scopeId", "data-v-b8328f68"]]), ct = ["for"], Et = ["data-track", "maxlength", "minlength", "name", "required", "rows", "id"], Tt = /* @__PURE__ */ v({
1649
+ __name: "TideInputTextarea",
1650
+ props: {
1651
+ dataTrack: { default: "" },
1652
+ error: { type: [String, Boolean], default: !1 },
1653
+ inputId: { default: void 0 },
1654
+ label: { default: void 0 },
1655
+ maxlength: { default: void 0 },
1656
+ minlength: { default: void 0 },
1657
+ name: { default: void 0 },
1658
+ required: { type: Boolean, default: !1 },
1659
+ rows: { default: 8 },
1660
+ supportingText: { default: void 0 },
1661
+ value: { default: "" }
1662
+ },
1663
+ setup(n, { expose: s }) {
1664
+ const a = n, o = A(a.error), d = A(!1), T = A(null), I = A(a.value), E = F(() => oe(a.error, o.value)), O = F(() => a.required ? `${a.label} *` : a.label), p = F(() => a.required && !I.value || ne(o.value, a.error)), R = F(() => d.value || !g.value), g = F(() => I.value === ""), h = F(() => {
1665
+ var H;
1666
+ return a.inputId ? a.inputId : `text-input-${((H = ee()) == null ? void 0 : H.uid) || ""}`;
1667
+ }), M = () => {
1668
+ d.value = !0;
1669
+ }, Y = () => {
1670
+ d.value = !1;
1671
+ }, k = () => Re({
1672
+ error: o,
1673
+ errorFromProps: a.error,
1674
+ maxlength: a.maxlength,
1675
+ minlength: a.minlength,
1676
+ value: I
1677
+ });
1678
+ return Q(a, (H, u) => {
1679
+ (H.value !== u.value || H.value !== I.value) && (I.value = a.value);
1680
+ }), s({ error: o, value: I }), (H, u) => (l(), r("div", {
1681
+ class: i(["tide-input-textarea", t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).GAP.QUARTER, p.value && "error"])
1682
+ }, [
1683
+ c("div", {
1684
+ class: i([
1685
+ "tide-input-textarea-field",
1686
+ t(e).GAP.HALF,
1687
+ t(e).POSITION.RELATIVE,
1688
+ t(e).BORDER.RADIUS.HALF,
1689
+ t(e).PADDING.LEFT.ONE,
1690
+ t(e).PADDING.TOP.HALF,
1691
+ t(e).OVERFLOW.XY.HIDDEN
1692
+ ])
1693
+ }, [
1694
+ H.label ? (l(), r("label", {
1695
+ key: 0,
1696
+ class: i([
1697
+ R.value ? ["minilabel", t(e).FONT.SIZE.TWELVE] : t(e).FONT.SIZE.SIXTEEN,
1698
+ !p.value && t(e).FONT.COLOR.SURFACE.VARIANT,
1699
+ t(e).FONT.WEIGHT.FIVE_HUNDRED,
1700
+ t(e).CURSOR.TEXT
1701
+ ]),
1702
+ for: h.value,
1703
+ ref: "label"
1704
+ }, L(O.value), 11, ct)) : N("", !0),
1705
+ ie(c("textarea", {
1706
+ class: i([t(e).WIDTH.FULL]),
1707
+ "data-track": a.dataTrack,
1708
+ maxlength: a.maxlength,
1709
+ minlength: a.minlength,
1710
+ name: a.name,
1711
+ ref_key: "input",
1712
+ ref: T,
1713
+ required: a.required,
1714
+ rows: a.rows,
1715
+ onChange: k,
1716
+ onFocus: M,
1717
+ onFocusout: Y,
1718
+ id: h.value,
1719
+ "onUpdate:modelValue": u[0] || (u[0] = (U) => I.value = U)
1720
+ }, null, 42, Et), [
1721
+ [Fe, I.value]
1722
+ ])
1723
+ ], 2),
1724
+ a.supportingText || p.value ? (l(), r("div", {
1725
+ key: 0,
1726
+ class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).MARGIN.LEFT.ONE])
1727
+ }, [
1728
+ p.value ? (l(), S(f, {
1729
+ key: 0,
1730
+ icon: t(_).ERROR,
1731
+ size: t(y).SMALL
1732
+ }, null, 8, ["icon", "size"])) : N("", !0),
1733
+ c("div", {
1734
+ class: i([t(e).FONT.SIZE.TWELVE, t(e).FONT.WEIGHT.FIVE_HUNDRED])
1735
+ }, L(p.value ? E.value : a.supportingText), 3)
1736
+ ], 2)) : N("", !0)
1737
+ ], 2));
1738
+ }
1739
+ });
1740
+ const kt = /* @__PURE__ */ C(Tt, [["__scopeId", "data-v-022c8af4"]]), Vt = /* @__PURE__ */ v({
1741
+ __name: "TideLink",
1742
+ props: {
1743
+ element: { default: D.LINK },
1744
+ href: { default: void 0 },
1745
+ iconLeading: { default: void 0 },
1746
+ iconTrailing: { default: void 0 },
1747
+ isNewTab: { type: Boolean, default: !1 },
1748
+ label: { default: void 0 }
1749
+ },
1750
+ setup(n) {
1751
+ const s = n, a = F(() => s.iconLeading || s.iconTrailing);
1752
+ return (o, d) => (l(), S(z(s.element === t(D).LINK ? t(D).LINK : t(D).BUTTON), {
1753
+ class: i([
1754
+ s.element === t(D).LINK ? "tide-button-as-link" : "tide-link",
1755
+ a.value ? [t(e).DISPLAY.INLINE_FLEX, t(e).AXIS2.CENTER, t(e).GAP.HALF] : [t(e).FONT.WEIGHT.SEVEN_HUNDRED, t(e).UNDERLINE.ON]
1756
+ ]),
1757
+ href: s.href,
1758
+ target: s.isNewTab ? t(W).BLANK : t(W).SELF
1759
+ }, {
1760
+ default: J(() => [
1761
+ s.iconLeading ? (l(), S(f, {
1762
+ key: 0,
1763
+ icon: s.iconLeading
1764
+ }, null, 8, ["icon"])) : N("", !0),
1765
+ a.value ? (l(), r("div", {
1766
+ key: 1,
1767
+ class: i([t(e).FONT.WEIGHT.SEVEN_HUNDRED, t(e).UNDERLINE.ON])
1768
+ }, L(s.label), 3)) : (l(), r($, { key: 2 }, [
1769
+ Ee(L(s.label), 1)
1770
+ ], 64)),
1771
+ s.iconTrailing ? (l(), S(f, {
1772
+ key: 3,
1773
+ icon: s.iconTrailing
1774
+ }, null, 8, ["icon"])) : N("", !0)
1775
+ ]),
1776
+ _: 1
1777
+ }, 8, ["class", "href", "target"]));
1778
+ }
1779
+ }), It = ["onClick"], Rt = /* @__PURE__ */ v({
1780
+ __name: "TideModal",
1781
+ props: {
1782
+ isOpen: { type: Boolean },
1783
+ title: {},
1784
+ width: {}
1785
+ },
1786
+ emits: ["close"],
1787
+ setup(n, { emit: s }) {
1788
+ const a = n, o = A(a.isOpen), d = A(null), T = (R) => {
1789
+ o.value = !1, I(), s("close", R);
1790
+ }, I = () => {
1791
+ o.value ? (d.value = window.scrollY, document.body.style.overflow = "hidden", d.value && window.scrollTo(0, d.value), O()) : (document.body.style.overflow = "", p());
1792
+ }, E = (R) => {
1793
+ R.key === "Escape" && (R.stopPropagation(), T(R));
1794
+ }, O = () => {
1795
+ window.addEventListener("keydown", E);
1796
+ }, p = () => {
1797
+ window.removeEventListener("keydown", E);
1798
+ };
1799
+ return j(() => {
1800
+ I();
1801
+ }), Q(a, (R) => {
1802
+ o.value = R.isOpen, I();
1803
+ }), (R, g) => (l(), S(_e, { to: "body" }, [
1804
+ c("div", {
1805
+ class: i([
1806
+ "tide-modal-wrapper",
1807
+ t(e).POSITION.ABSOLUTE,
1808
+ t(e).DISPLAY.FLEX,
1809
+ t(e).AXIS1.CENTER,
1810
+ t(e).AXIS2.CENTER,
1811
+ t(e).POSITIONING.TOP_0,
1812
+ t(e).POSITIONING.LEFT_0,
1813
+ t(e).WIDTH.FULL,
1814
+ t(e).HEIGHT.FULL,
1815
+ a.isOpen ? "active" : t(e).POINTER_EVENTS.OFF,
1816
+ t(e).OVERFLOW.Y.HIDDEN
1817
+ ])
1818
+ }, [
1819
+ c("div", {
1820
+ class: i(["tide-modal-bg", t(e).POSITION.ABSOLUTE, t(e).WIDTH.FULL, t(e).HEIGHT.FULL]),
1821
+ style: ae({ "--tide-modal-width": a.width }),
1822
+ onClick: Te(T, ["self"])
1823
+ }, null, 14, It),
1824
+ c("div", {
1825
+ class: i([
1826
+ "tide-modal",
1827
+ t(e).BG.SURFACE.DEFAULT,
1828
+ t(e).FONT.COLOR.SURFACE.DEFAULT,
1829
+ t(e).POSITION.ABSOLUTE,
1830
+ t(e).DISPLAY.FLEX,
1831
+ t(e).FLEX.DIRECTION.COLUMN,
1832
+ t(e).BORDER.RADIUS.ONE,
1833
+ t(e).OVERFLOW.XY.HIDDEN,
1834
+ t(e).SHADOW.BOTTOM
1835
+ ])
1836
+ }, [
1837
+ c("header", {
1838
+ class: i([
1839
+ "tide-modal-header",
1840
+ t(e).POSITION.RELATIVE,
1841
+ t(e).DISPLAY.FLEX,
1842
+ t(e).AXIS2.CENTER,
1843
+ t(e).PADDING.Y.ONE,
1844
+ t(e).PADDING.X.TWO,
1845
+ t(e).BORDER.BOTTOM.ONE,
1846
+ t(e).BORDER.COLOR.LOW
1847
+ ])
1848
+ }, [
1849
+ R.title ? (l(), r("div", {
1850
+ key: 0,
1851
+ class: i([t(e).FLEX.GROW.ON, t(e).FONT.SIZE.TWENTY, t(e).FONT.WEIGHT.SEVEN_HUNDRED])
1852
+ }, L(R.title), 3)) : N("", !0),
1853
+ c("button", {
1854
+ class: i([t(e).POSITION.ABSOLUTE, t(e).POSITIONING.RIGHT_0, t(e).MARGIN.RIGHT.TWO]),
1855
+ onClick: T,
1856
+ title: "Close"
1857
+ }, [
1858
+ G(f, {
1859
+ icon: t(_).CLOSE
1860
+ }, null, 8, ["icon"])
1861
+ ], 2)
1862
+ ], 2),
1863
+ c("div", {
1864
+ class: i(["tide-modal-content", t(e).PADDING.FULL.TWO, t(e).OVERFLOW.Y.AUTO])
1865
+ }, [
1866
+ X(R.$slots, "default", {}, void 0, !0)
1867
+ ], 2),
1868
+ R.$slots.footer ? (l(), r("footer", {
1869
+ key: 0,
1870
+ class: i([
1871
+ "tide-bg-surface",
1872
+ t(e).POSITION.STICKY,
1873
+ t(e).POSITIONING.LEFT_0,
1874
+ t(e).POSITIONING.BOTTOM_0,
1875
+ t(e).DISPLAY.FLEX,
1876
+ t(e).AXIS1.END,
1877
+ t(e).GAP.ONE,
1878
+ t(e).PADDING.X.TWO,
1879
+ t(e).PADDING.Y.ONE,
1880
+ t(e).SHADOW.TOP
1881
+ ])
1882
+ }, [
1883
+ X(R.$slots, "footer", {}, void 0, !0)
1884
+ ], 2)) : N("", !0)
1885
+ ], 2)
1886
+ ], 2)
1887
+ ]));
1888
+ }
1889
+ });
1890
+ const xt = /* @__PURE__ */ C(Rt, [["__scopeId", "data-v-30035972"]]), wt = /* @__PURE__ */ v({
1891
+ __name: "TidePagination",
1892
+ props: {
1893
+ pageCurrent: { default: 1 },
1894
+ pageTotal: { default: 1 }
1895
+ },
1896
+ emits: ["change"],
1897
+ setup(n, { emit: s }) {
1898
+ const a = n, o = A(a.pageCurrent), d = F(() => new Array(a.pageTotal).fill("").map((I, E) => E + 1)), T = (I, E) => {
1899
+ o.value = E, s("change", I, E);
1900
+ };
1901
+ return (I, E) => (l(), r("section", {
1902
+ class: i(["tide-pagination", t(e).DISPLAY.FLEX, t(e).AXIS1.CENTER, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).WIDTH.FULL])
1903
+ }, [
1904
+ G(q, {
1905
+ disabled: o.value === 1,
1906
+ icon: t(_).CHEVRON_LEFT,
1907
+ priority: t(w).QUATERNARY,
1908
+ onClick: E[0] || (E[0] = (O) => T(O, o.value - 1))
1909
+ }, null, 8, ["disabled", "icon", "priority"]),
1910
+ c("ul", {
1911
+ class: i([t(e).DISPLAY.FLEX, t(e).AXIS2.CENTER, t(e).GAP.QUARTER, t(e).LIST_BULLETS.OFF])
1912
+ }, [
1913
+ (l(!0), r($, null, Z(d.value, (O) => (l(), r("li", { key: O }, [
1914
+ G(We, {
1915
+ disabled: o.value === O,
1916
+ label: O,
1917
+ priority: t(w).QUATERNARY,
1918
+ onClick: (p) => T(p, O)
1919
+ }, null, 8, ["disabled", "label", "priority", "onClick"])
1920
+ ]))), 128))
1921
+ ], 2),
1922
+ G(q, {
1923
+ disabled: o.value === d.value[d.value.length - 1],
1924
+ icon: t(_).CHEVRON_RIGHT,
1925
+ priority: t(w).QUATERNARY,
1926
+ onClick: E[1] || (E[1] = (O) => T(O, o.value + 1))
1927
+ }, null, 8, ["disabled", "icon", "priority"])
1928
+ ], 2));
1929
+ }
1930
+ }), ut = { class: "tide-seo-links" }, Ot = ["href", "target"], At = /* @__PURE__ */ v({
1931
+ __name: "TideSeoLinks",
1932
+ props: {
1933
+ heading: { default: "" },
1934
+ links: {}
1935
+ },
1936
+ setup(n) {
1937
+ const s = n;
1938
+ return (a, o) => (l(), r("section", ut, [
1939
+ c("h2", {
1940
+ class: i([t(e).MARGIN.BOTTOM.HALF, t(e).FONT.SIZE.SIXTEEN])
1941
+ }, L(s.heading), 3),
1942
+ c("ul", {
1943
+ class: i([t(e).DISPLAY.FLEX, t(e).FLEX.WRAP, t(e).GAP.TWO, t(e).LIST_BULLETS.OFF])
1944
+ }, [
1945
+ (l(!0), r($, null, Z(s.links, (d) => (l(), r("li", {
1946
+ class: i(["tide-seo-link", t(e).DISPLAY.FLEX, t(e).FLEX.DIRECTION.COLUMN, t(e).GAP.QUARTER, t(e).FONT.SIZE.FOURTEEN]),
1947
+ key: d.label
1948
+ }, [
1949
+ c("a", {
1950
+ class: i([t(e).UNDERLINE.OFF]),
1951
+ href: d.url,
1952
+ target: d.isNewTab ? t(W).BLANK : t(W).SELF
1953
+ }, L(d.label), 11, Ot)
1954
+ ], 2))), 128))
1955
+ ], 2)
1956
+ ]));
1957
+ }
1958
+ });
1959
+ const $t = /* @__PURE__ */ C(At, [["__scopeId", "data-v-d62373f1"]]), Nt = ["data-track", "onClick"], Lt = /* @__PURE__ */ v({
1960
+ __name: "TideTabs",
1961
+ props: {
1962
+ activeTabInitial: { default: 0 },
1963
+ tabs: {}
1964
+ },
1965
+ emits: ["change"],
1966
+ setup(n, { emit: s }) {
1967
+ const a = n, o = A(a.activeTabInitial), d = (T, I) => {
1968
+ o.value = I, s("change", T, I);
1969
+ };
1970
+ return (T, I) => (l(), r("div", {
1971
+ class: i([
1972
+ "tide-tabs",
1973
+ t(e).BG.SURFACE.VARIANT,
1974
+ t(e).DISPLAY.FLEX,
1975
+ t(e).GAP.QUARTER,
1976
+ t(e).BORDER.RADIUS.HALF,
1977
+ t(e).PADDING.FULL.QUARTER,
1978
+ t(e).OVERFLOW.XY.HIDDEN,
1979
+ t(e).WIDTH.FULL
1980
+ ])
1981
+ }, [
1982
+ (l(!0), r($, null, Z(a.tabs, (E, O) => (l(), r("button", {
1983
+ class: i([
1984
+ "tide-tabs-tab",
1985
+ O === o.value ? [t(e).BG.SURFACE.DEFAULT, t(e).FONT.COLOR.SURFACE.DEFAULT, t(e).SHADOW.BOTTOM] : ["inactive", t(e).FONT.COLOR.SURFACE.VARIANT],
1986
+ t(e).FLEX.GROW.ON,
1987
+ t(e).BORDER.RADIUS.QUARTER,
1988
+ t(e).PADDING.Y.QUARTER,
1989
+ t(e).WIDTH.FULL,
1990
+ t(e).FONT.WEIGHT.SIX_HUNDRED,
1991
+ t(e).WHITESPACE_WRAP.OFF
1992
+ ]),
1993
+ "data-track": E.dataTrack || void 0,
1994
+ key: E.label,
1995
+ onClick: (p) => d(p, O)
1996
+ }, [
1997
+ c("span", {
1998
+ class: i([t(e).FONT.WEIGHT.SIX_HUNDRED])
1999
+ }, L(E.label), 3),
2000
+ E.count && E.count > 0 ? (l(), r("span", {
2001
+ key: 0,
2002
+ class: i([t(e).FONT.WEIGHT.SIX_HUNDRED])
2003
+ }, " (" + L(E.count) + ") ", 3)) : N("", !0)
2004
+ ], 10, Nt))), 128))
2005
+ ], 2));
2006
+ }
2007
+ });
2008
+ const Qt = /* @__PURE__ */ C(Lt, [["__scopeId", "data-v-894fc638"]]), pt = ["disabled"], vt = /* @__PURE__ */ v({
2009
+ __name: "TideToggle",
2010
+ props: {
2011
+ disabled: {
2012
+ default: !1,
2013
+ required: !1,
2014
+ type: Boolean
2015
+ },
2016
+ isActive: {
2017
+ required: !0,
2018
+ type: Boolean
2019
+ }
2020
+ },
2021
+ emits: ["change"],
2022
+ setup(n, { emit: s }) {
2023
+ const a = n, o = A(a.isActive), d = (T) => {
2024
+ a.disabled || (o.value = !o.value, s("change", T, o.value));
2025
+ };
2026
+ return (T, I) => (l(), r("button", {
2027
+ class: i([
2028
+ "tide-toggle",
2029
+ a.isActive ? "active" : "",
2030
+ t(e).DISPLAY.FLEX,
2031
+ t(e).AXIS2.CENTER,
2032
+ t(e).BORDER.FULL.ONE,
2033
+ t(e).BORDER.RADIUS.FULL,
2034
+ a.isActive ? "" : t(e).BORDER.COLOR.DEFAULT,
2035
+ t(e).OVERFLOW.XY.HIDDEN,
2036
+ a.isActive ? t(e).BG.SECONDARY : t(e).BG.SURFACE.DEFAULT
2037
+ ]),
2038
+ disabled: a.disabled,
2039
+ onClick: d,
2040
+ "aria-label": "Toggle"
2041
+ }, [
2042
+ c("div", {
2043
+ class: i([
2044
+ "tide-toggle-indicator",
2045
+ t(e).POSITION.RELATIVE,
2046
+ t(e).DISPLAY.FLEX,
2047
+ t(e).AXIS1.CENTER,
2048
+ t(e).AXIS2.CENTER,
2049
+ t(e).BORDER.RADIUS.FULL,
2050
+ a.isActive ? t(e).BG.SURFACE.DEFAULT : t(e).BG.SECONDARY
2051
+ ])
2052
+ }, [
2053
+ G(f, {
2054
+ icon: t(_).CHECK,
2055
+ size: t(y).LARGE
2056
+ }, null, 8, ["icon", "size"])
2057
+ ], 2)
2058
+ ], 10, pt));
2059
+ }
2060
+ });
2061
+ const Kt = /* @__PURE__ */ C(vt, [["__scopeId", "data-v-59d06131"]]), qt = {
2062
+ AERO: "aero",
2063
+ ATV: "atv",
2064
+ BOATMART: "boatmart",
2065
+ CYCLE: "cycle",
2066
+ EQUIP: "equip",
2067
+ PWC: "pwc",
2068
+ RV: "rv",
2069
+ SNOW: "snow",
2070
+ TRUCK: "truck"
2071
+ };
2072
+ export {
2073
+ b as A,
2074
+ Ut as B,
2075
+ e as C,
2076
+ Vt as D,
2077
+ D as E,
2078
+ xt as F,
2079
+ wt as G,
2080
+ $t as H,
2081
+ _ as I,
2082
+ Qt as J,
2083
+ Kt as K,
2084
+ w as P,
2085
+ qt as R,
2086
+ y as S,
2087
+ W as T,
2088
+ C as _,
2089
+ mt as a,
2090
+ he as b,
2091
+ x as c,
2092
+ _t as d,
2093
+ Dt as e,
2094
+ St as f,
2095
+ ft as g,
2096
+ gt as h,
2097
+ Ct as i,
2098
+ Pt as j,
2099
+ q as k,
2100
+ We as l,
2101
+ Gt as m,
2102
+ ht as n,
2103
+ Ht as o,
2104
+ bt as p,
2105
+ yt as q,
2106
+ Bt as r,
2107
+ re as s,
2108
+ f as t,
2109
+ Xt as u,
2110
+ ge as v,
2111
+ Wt as w,
2112
+ Mt as x,
2113
+ Yt as y,
2114
+ kt as z
2115
+ };
2116
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtNzZjZmQzOTcuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlcy9TdHlsZXMudHMiLCIuLi9zcmMvdHlwZXMvT3JpZW50YXRpb24udHMiLCIuLi9zcmMvdHlwZXMvU2l6ZS50cyIsIi4uL3NyYy91dGlsaXRpZXMvZm9ybWF0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUljb24udnVlIiwiLi4vc3JjL3R5cGVzL0ljb24udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQWNjb3JkaW9uSXRlbS52dWUiLCIuLi9zcmMvdHlwZXMvRWxlbWVudC50cyIsIi4uL3NyYy90eXBlcy9Qcmlvcml0eS50cyIsIi4uL3NyYy90eXBlcy9UYXJnZXQudHMiLCIuLi9zcmMvdHlwZXMvQWxlcnQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQWxlcnQudnVlIiwiLi4vc3JjL3R5cGVzL0JhZGdlLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNhcm91c2VsLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbWFnZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpby52dWUiLCIuLi9zcmMvdXRpbGl0aWVzL3ZhbGlkYXRpb24udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRTZWxlY3QudnVlIiwiLi4vc3JjL3R5cGVzL1RleHRJbnB1dC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWEudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUxpbmsudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZU1vZGFsLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVQYWdpbmF0aW9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVUYWJzLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVUb2dnbGUudnVlIiwiLi4vc3JjL3R5cGVzL1JlYWxtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBDU1MgPSB7XG4gIEFMSUdOOiB7XG4gICAgWDoge1xuICAgICAgQ0VOVEVSOiAndGlkZS10ZXh0LWNlbnRlcicsXG4gICAgICBMRUZUOiAndGlkZS10ZXh0LWxlZnQnLFxuICAgICAgUklHSFQ6ICd0aWRlLXRleHQtcmlnaHQnLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgTUlERExFOiAndGlkZS1hbGlnbi1taWRkbGUnLFxuICAgIH0sXG4gIH0sXG4gIEFYSVMxOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMS1hcm91bmQnLFxuICAgIEJFVFdFRU46ICd0aWRlLWF4aXMxLWJldHdlZW4nLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczEtY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMxLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMxLXN0YXJ0JyxcbiAgfSxcbiAgQVhJUzI6IHtcbiAgICBBUk9VTkQ6ICd0aWRlLWF4aXMyLWFyb3VuZCcsXG4gICAgQ0VOVEVSOiAndGlkZS1heGlzMi1jZW50ZXInLFxuICAgIEVORDogJ3RpZGUtYXhpczItZW5kJyxcbiAgICBTVEFSVDogJ3RpZGUtYXhpczItc3RhcnQnLFxuICB9LFxuICBCRzoge1xuICAgIEVSUk9SOiAndGlkZS1iZy1lcnJvcicsXG4gICAgSU5GTzogJ3RpZGUtYmctaW5mbycsXG4gICAgUFJJTUFSWTogJ3RpZGUtYmctcHJpbWFyeScsXG4gICAgU0VDT05EQVJZOiAndGlkZS1iZy1zZWNvbmRhcnknLFxuICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXN1Y2Nlc3MnLFxuICAgIFNVUkZBQ0U6IHtcbiAgICAgIEFDQ0VOVDogJ3RpZGUtYmctc3VyZmFjZS1hY2NlbnQnLFxuICAgICAgQUNDRU5UX1ZBUklBTlQ6ICd0aWRlLWJnLXN1cmZhY2UtYWNjZW50LXZhcmlhbnQnLFxuICAgICAgQlJBTkQ6ICd0aWRlLWJnLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYmctc3VyZmFjZScsXG4gICAgICBFUlJPUjogJ3RpZGUtYmctc3VyZmFjZS1lcnJvcicsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYmctc3VyZmFjZS1mbG9hdGluZycsXG4gICAgICBHUkFESUVOVDogJ3RpZGUtYmctc3VyZmFjZS1ncmFkaWVudCcsXG4gICAgICBJTkZPOiAndGlkZS1iZy1zdXJmYWNlLWluZm8nLFxuICAgICAgU1VDQ0VTUzogJ3RpZGUtYmctc3VyZmFjZS1zdWNjZXNzJyxcbiAgICAgIFZBUklBTlQ6ICd0aWRlLWJnLXN1cmZhY2UtdmFyaWFudCcsXG4gICAgICBXQVJOSU5HOiAndGlkZS1iZy1zdXJmYWNlLXdhcm5pbmcnLFxuICAgIH0sXG4gICAgV0FSTklORzogJ3RpZGUtYmctd2FybmluZycsXG4gIH0sXG4gIEJPUkRFUjoge1xuICAgIEJPVFRPTToge1xuICAgICAgT05FOiAndGlkZS1ib3JkZXItYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItYm90dG9tLTInLFxuICAgIH0sXG4gICAgQ09MT1I6IHtcbiAgICAgIERFRkFVTFQ6ICd0aWRlLWJvcmRlcicsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYm9yZGVyLWZsb2F0aW5nJyxcbiAgICAgIEhJR0g6ICd0aWRlLWJvcmRlci1oaWdoJyxcbiAgICAgIExPVzogJ3RpZGUtYm9yZGVyLWxvdycsXG4gICAgICBQUklNQVJZOiAndGlkZS1ib3JkZXItcHJpbWFyeScsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLTInLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgT05FOiAndGlkZS1ib3JkZXItbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWxlZnQtMicsXG4gICAgfSxcbiAgICBSQURJVVM6IHtcbiAgICAgIEZVTEw6ICd0aWRlLXJhZGl1cy1mdWxsJyxcbiAgICAgIEhBTEY6ICd0aWRlLXJhZGl1cy0xLzInLFxuICAgICAgT05FOiAndGlkZS1yYWRpdXMtMScsXG4gICAgICBRVUFSVEVSOiAndGlkZS1yYWRpdXMtMS80JyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLXJpZ2h0LTInLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci10b3AtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci10b3AtMicsXG4gICAgfSxcbiAgfSxcbiAgQk9YX1NJWklORzoge1xuICAgIEJPUkRFUl9CT1g6ICd0aWRlLWJveC1ib3JkZXInLFxuICAgIENPTlRFTlRfQk9YOiAndGlkZS1ib3gtY29udGVudCcsXG4gIH0sXG4gIEJSRUFLX1dPUkQ6IHtcbiAgICBPTjogJ3RpZGUtYnJlYWstd29yZCcsXG4gIH0sXG4gIENVUlNPUjoge1xuICAgIE5PVF9BTExPV0VEOiAndGlkZS1jdXJzb3Itbm90LWFsbG93ZWQnLFxuICAgIFBPSU5URVI6ICd0aWRlLWN1cnNvci1wb2ludGVyJyxcbiAgICBURVhUOiAndGlkZS1jdXJzb3ItdGV4dCcsXG4gIH0sXG4gIERJU1BMQVk6IHtcbiAgICBCTE9DSzogJ3RpZGUtZGlzcGxheS1ibG9jaycsXG4gICAgQ09OVEVOVFM6ICd0aWRlLWNvbnRlbnRzJyxcbiAgICBGTEVYOiAndGlkZS1kaXNwbGF5LWZsZXgnLFxuICAgIEdSSUQ6ICd0aWRlLWRpc3BsYXktZ3JpZCcsXG4gICAgSU5JVElBTDogJ2luaXRpYWwnLFxuICAgIElOTElORTogJ3RpZGUtZGlzcGxheS1pbmxpbmUnLFxuICAgIElOTElORV9CTE9DSzogJ3RpZGUtZGlzcGxheS1pbmxpbmUtYmxvY2snLFxuICAgIElOTElORV9GTEVYOiAndGlkZS1kaXNwbGF5LWlubGluZS1mbGV4JyxcbiAgICBOT05FOiAndGlkZS1kaXNwbGF5LW5vbmUnLFxuICB9LFxuICBGTEVYOiB7XG4gICAgRElSRUNUSU9OOiB7XG4gICAgICBDT0xVTU46ICd0aWRlLWZsZXgtY29sdW1uJyxcbiAgICAgIENPTFVNTl9SRVZFUlNFOiAndGlkZS1mbGV4LWNvbHVtbi1yZXZlcnNlJyxcbiAgICAgIFJPVzogJ3RpZGUtZmxleC1yb3cnLFxuICAgICAgUk9XX1JFVkVSU0U6ICd0aWRlLXJvdy1yZXZlcnNlJyxcbiAgICB9LFxuICAgIEdST1c6IHtcbiAgICAgIE9GRjogJ3RpZGUtZ3Jvdy1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1ncm93JyxcbiAgICB9LFxuICAgIFNIUklOSzoge1xuICAgICAgT0ZGOiAndGlkZS1zaHJpbmstbm9uZScsXG4gICAgICBPTjogJ3RpZGUtc2hyaW5rJyxcbiAgICB9LFxuICAgIFdSQVA6ICd0aWRlLWZsZXgtd3JhcCcsXG4gIH0sXG4gIEZPTlQ6IHtcbiAgICBDT0xPUjoge1xuICAgICAgUFJJTUFSWTogJ3RpZGUtZm9udC1vbi1wcmltYXJ5JyxcbiAgICAgIFNFQ09OREFSWTogJ3RpZGUtZm9udC1vbi1zZWNvbmRhcnknLFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBCUkFORDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLWJyYW5kJyxcbiAgICAgICAgREVGQVVMVDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlJyxcbiAgICAgICAgSU5WRVJTRTogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLWludmVyc2UnLFxuICAgICAgICBWQVJJQU5UOiAndGlkZS1mb250LW9uLXN1cmZhY2UtdmFyaWFudCcsXG4gICAgICAgIFZBUklBTlRfSU5WRVJTRTogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLXZhcmlhbnQtaW52ZXJzZScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgU0laRToge1xuICAgICAgRk9VUlRFRU46ICd0aWRlLWZvbnQtMTQnLFxuICAgICAgU0lYVEVFTjogJ3RpZGUtZm9udC0xNicsXG4gICAgICBUSElSVFlfVFdPOiAndGlkZS1mb250LTMyJyxcbiAgICAgIFRXRUxWRTogJ3RpZGUtZm9udC0xMicsXG4gICAgICBUV0VOVFk6ICd0aWRlLWZvbnQtMjAnLFxuICAgICAgVFdFTlRZX0ZPVVI6ICd0aWRlLWZvbnQtMjQnLFxuICAgIH0sXG4gICAgV0VJR0hUOiB7XG4gICAgICBGSVZFX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNTAwJyxcbiAgICAgIEZPVVJfSFVORFJFRDogJ3RpZGUtZm9udC00MDAnLFxuICAgICAgU0VWRU5fSFVORFJFRDogJ3RpZGUtZm9udC03MDAnLFxuICAgICAgU0lYX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNjAwJyxcbiAgICB9LFxuICB9LFxuICBHQVA6IHtcbiAgICBGT1VSOiAndGlkZS1nYXAtNCcsXG4gICAgSEFMRjogJ3RpZGUtZ2FwLTEvMicsXG4gICAgT05FOiAndGlkZS1nYXAtMScsXG4gICAgUVVBUlRFUjogJ3RpZGUtZ2FwLTEvNCcsXG4gICAgVFdPOiAndGlkZS1nYXAtMicsXG4gIH0sXG4gIEdSSUQ6IHtcbiAgICBFTkQ6IHtcbiAgICAgIEVORF8xOiAndGlkZS1zdGFydC0xJyxcbiAgICAgIEVORF8xMDogJ3RpZGUtc3RhcnQtMTAnLFxuICAgICAgRU5EXzExOiAndGlkZS1zdGFydC0xMScsXG4gICAgICBFTkRfMTI6ICd0aWRlLXN0YXJ0LTEyJyxcbiAgICAgIEVORF8xMzogJ3RpZGUtc3RhcnQtMTMnLFxuICAgICAgRU5EXzI6ICd0aWRlLXN0YXJ0LTInLFxuICAgICAgRU5EXzM6ICd0aWRlLXN0YXJ0LTMnLFxuICAgICAgRU5EXzQ6ICd0aWRlLXN0YXJ0LTQnLFxuICAgICAgRU5EXzU6ICd0aWRlLXN0YXJ0LTUnLFxuICAgICAgRU5EXzY6ICd0aWRlLXN0YXJ0LTYnLFxuICAgICAgRU5EXzc6ICd0aWRlLXN0YXJ0LTcnLFxuICAgICAgRU5EXzg6ICd0aWRlLXN0YXJ0LTgnLFxuICAgICAgRU5EXzk6ICd0aWRlLXN0YXJ0LTknLFxuICAgIH0sXG4gICAgRkxVSUQ6ICd0aWRlLWZsdWlkJyxcbiAgICBMQVlPVVQ6ICd0aWRlLWdyaWQtbGF5b3V0JyxcbiAgICBNQVhfMTkyMDogJ3RpZGUtZ3JpZC1sYXlvdXQnLFxuICAgIFNUQVJUOiB7XG4gICAgICBTVEFSVF8wOiAndGlkZS1zdGFydC0wJyxcbiAgICAgIFNUQVJUXzE6ICd0aWRlLXN0YXJ0LTEnLFxuICAgICAgU1RBUlRfMTA6ICd0aWRlLXN0YXJ0LTEwJyxcbiAgICAgIFNUQVJUXzExOiAndGlkZS1zdGFydC0xMScsXG4gICAgICBTVEFSVF8xMjogJ3RpZGUtc3RhcnQtMTInLFxuICAgICAgU1RBUlRfMjogJ3RpZGUtc3RhcnQtMicsXG4gICAgICBTVEFSVF8zOiAndGlkZS1zdGFydC0zJyxcbiAgICAgIFNUQVJUXzQ6ICd0aWRlLXN0YXJ0LTQnLFxuICAgICAgU1RBUlRfNTogJ3RpZGUtc3RhcnQtNScsXG4gICAgICBTVEFSVF82OiAndGlkZS1zdGFydC02JyxcbiAgICAgIFNUQVJUXzc6ICd0aWRlLXN0YXJ0LTcnLFxuICAgICAgU1RBUlRfODogJ3RpZGUtc3RhcnQtOCcsXG4gICAgICBTVEFSVF85OiAndGlkZS1zdGFydC05JyxcbiAgICB9LFxuICB9LFxuICBIRUlHSFQ6IHtcbiAgICBGVUxMOiAndGlkZS1oZWlnaHQtZnVsbCcsXG4gIH0sXG4gIExJU1RfQlVMTEVUUzoge1xuICAgIE9GRjogJ3RpZGUtbGlzdC1ub25lJyxcbiAgfSxcbiAgTUFSR0lOOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tYm90dG9tLTQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLWJvdHRvbS0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tYm90dG9tLTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLWJvdHRvbS0xLzQnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tYm90dG9tLTInLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLTQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi0xJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi0xLzQnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tMicsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tbGVmdC1hdXRvJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1sZWZ0LTQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLWxlZnQtMScsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tbGVmdC0xLzQnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tbGVmdC0yJyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tcmlnaHQtYXV0bycsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tcmlnaHQtNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tcmlnaHQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEvNCcsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1yaWdodC0yJyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXRvcC00JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi10b3AtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXRvcC0xJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi10b3AtMS80JyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXRvcC0yJyxcbiAgICB9LFxuICAgIFg6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi14LWF1dG8nLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXgtNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4teC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4teC0xJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi14LTEvNCcsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi14LTInLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXktNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4teS0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4teS0xJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi15LTEvNCcsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi15LTInLFxuICAgIH0sXG4gIH0sXG4gIE9CSkVDVDoge1xuICAgIENFTlRFUjogJ3RpZGUtb2JqZWN0LWNlbnRlcicsXG4gICAgQ09OVEFJTjogJ3RpZGUtb2JqZWN0LWNvbnRhaW4nLFxuICAgIENPVkVSOiAndGlkZS1vYmplY3QtY292ZXInLFxuICAgIFNDQUxFX0RPV046ICd0aWRlLW9iamVjdC1zY2FsZS1kb3duJyxcbiAgfSxcbiAgT1BBQ0lUWToge1xuICAgIE9GRjogJ3RpZGUtb3BhY2l0eS1ub25lJyxcbiAgICBPTjogJ3RpZGUtb3BhY2l0eScsXG4gIH0sXG4gIE9WRVJGTE9XOiB7XG4gICAgWDoge1xuICAgICAgQVVUTzogJ3RpZGUteC1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteC1oaWRkZW4nLFxuICAgICAgU0NST0xMOiAndGlkZS14LXNjcm9sbCcsXG4gICAgfSxcbiAgICBYWToge1xuICAgICAgQVVUTzogJ3RpZGUteHktYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXh5LWhpZGRlbicsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBBVVRPOiAndGlkZS15LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS15LWhpZGRlbicsXG4gICAgfSxcbiAgfSxcbiAgUEFERElORzoge1xuICAgIEJPVFRPTToge1xuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1ib3R0b20tNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEvNCcsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctYm90dG9tLTInLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy00JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy0xJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctMS80JyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy0yJyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctbGVmdC00JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctbGVmdC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLWxlZnQtMScsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLWxlZnQtMS80JyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1sZWZ0LTInLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctcmlnaHQtMScsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTEvNCcsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctcmlnaHQtMicsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctdG9wLTQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy10b3AtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy10b3AtMScsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXRvcC0xLzQnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXRvcC0yJyxcbiAgICB9LFxuICAgIFg6IHtcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmcteC00JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmcteC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXgtMScsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXgtMS80JyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy14LTInLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy15LTQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy15LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmcteS0xJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmcteS0xLzQnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXktMicsXG4gICAgfSxcbiAgfSxcbiAgUE9JTlRFUl9FVkVOVFM6IHtcbiAgICBPRkY6ICd0aWRlLXBvaW50ZXItZXZlbnRzLW5vbmUnLFxuICAgIE9OOiAndGlkZS1wb2ludGVyLWV2ZW50cycsXG4gIH0sXG4gIFBPU0lUSU9OOiB7XG4gICAgQUJTT0xVVEU6ICd0aWRlLXBvc2l0aW9uLWFic29sdXRlJyxcbiAgICBGSVhFRDogJ3RpZGUtcG9zaXRpb24tZml4ZWQnLFxuICAgIFJFTEFUSVZFOiAndGlkZS1wb3NpdGlvbi1yZWxhdGl2ZScsXG4gICAgU1RJQ0tZOiAndGlkZS1zdGlja3knLFxuICB9LFxuICBQT1NJVElPTklORzoge1xuICAgIEJPVFRPTV8wOiAndGlkZS1ib3R0b20tMCcsXG4gICAgTEVGVF8wOiAndGlkZS1sZWZ0LTAnLFxuICAgIFJJR0hUXzA6ICd0aWRlLXJpZ2h0LTAnLFxuICAgIFRPUF8wOiAndGlkZS10b3AtMCcsXG4gIH0sXG4gIFNDUk9MTEJBUjoge1xuICAgIE9GRjogJ3RpZGUtc2Nyb2xsYmFyLW5vbmUnLFxuICB9LFxuICBTSEFET1c6IHtcbiAgICBCT1RUT006ICd0aWRlLXNoYWRvdy1ib3R0b20nLFxuICAgIFRPUDogJ3RpZGUtc2hhZG93LXRvcCcsXG4gIH0sXG4gIFNOQVA6IHtcbiAgICBPTjogJ3RpZGUtc25hcCcsXG4gIH0sXG4gIFNOQVBfQUxJR046IHtcbiAgICBTVEFSVDogJ3RpZGUtc25hcC1zdGFydCcsXG4gIH0sXG4gIFRFWFRfVFJBTlNGT1JNOiB7XG4gICAgTE9XRVI6ICd0aWRlLXRleHQtdHJhbnNmb3JtLWxvd2VyJyxcbiAgICBOT05FOiAndGlkZS10ZXh0LXRyYW5zZm9ybS1ub25lJyxcbiAgICBVUFBFUjogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tdXBwZXInLFxuICB9LFxuICBVTkRFUkxJTkU6IHtcbiAgICBIT1ZFUjogJ3RpZGUtdW5kZXJsaW5lLWhvdmVyJyxcbiAgICBPRkY6ICd0aWRlLXVuZGVybGluZS1ub25lJyxcbiAgICBPTjogJ3RpZGUtdW5kZXJsaW5lJyxcbiAgfSxcbiAgVklTSUJJTElUWToge1xuICAgIE9GRjogJ3RpZGUtdmlzaWJsZS1ub25lJyxcbiAgICBPTjogJ3RpZGUtdmlzaWJsZScsXG4gIH0sXG4gIFdISVRFU1BBQ0VfV1JBUDoge1xuICAgIE9GRjogJ3RpZGUtd2hpdGVzcGFjZS1ub3dyYXAnLFxuICB9LFxuICBXSURUSDoge1xuICAgIEZVTEw6ICd0aWRlLXdpZHRoLWZ1bGwnLFxuICAgIE1BWF9GVUxMOiAndGlkZS1tYXgtd2lkdGgtZnVsbCcsXG4gIH0sXG59O1xuXG5leHBvcnQgdHlwZSBDc3NVdGlsaXR5ID0gKHR5cGVvZiBDU1MpW2tleW9mIHR5cGVvZiBDU1NdO1xuXG5leHBvcnQgY29uc3QgY3NzU29ydE9yZGVyID0gW1xuICBDU1MuRElTUExBWS5CTE9DSyxcbiAgQ1NTLkRJU1BMQVkuQ09OVEVOVFMsXG4gIENTUy5ESVNQTEFZLkZMRVgsXG4gIENTUy5ESVNQTEFZLkdSSUQsXG4gIENTUy5ESVNQTEFZLk5PTkUsXG4gIENTUy5ESVNQTEFZLklOSVRJQUwsXG4gIENTUy5ESVNQTEFZLklOTElORSxcbiAgQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLFxuICBDU1MuRElTUExBWS5JTkxJTkVfRkxFWCxcbiAgQ1NTLkFYSVMxLkFST1VORCxcbiAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gIENTUy5BWElTMS5DRU5URVIsXG4gIENTUy5BWElTMS5FTkQsXG4gIENTUy5BWElTMS5TVEFSVCxcbiAgQ1NTLkFYSVMyLkFST1VORCxcbiAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgQ1NTLkFYSVMyLkVORCxcbiAgQ1NTLkFYSVMyLlNUQVJULFxuICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OX1JFVkVSU0UsXG4gIENTUy5GTEVYLkRJUkVDVElPTi5ST1csXG4gIENTUy5GTEVYLkRJUkVDVElPTi5ST1dfUkVWRVJTRSxcbiAgQ1NTLkdBUC5PTkUsXG4gIENTUy5HQVAuSEFMRixcbiAgQ1NTLkdBUC5RVUFSVEVSLFxuICBDU1MuR0FQLlRXTyxcbiAgQ1NTLkdBUC5GT1VSLFxuICBDU1MuRkxFWC5HUk9XLk9OLFxuICBDU1MuRkxFWC5HUk9XLk9GRixcbiAgQ1NTLkZMRVguU0hSSU5LLk9OLFxuICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICBDU1MuRkxFWC5XUkFQLFxuICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gIENTUy5QT1NJVElPTi5GSVhFRCxcbiAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICBDU1MuUE9TSVRJT04uU1RJQ0tZLFxuICBDU1MuUE9TSVRJT05JTkcuVE9QXzAsXG4gIENTUy5QT1NJVElPTklORy5SSUdIVF8wLFxuICBDU1MuUE9TSVRJT05JTkcuQk9UVE9NXzAsXG4gIENTUy5QT1NJVElPTklORy5MRUZUXzAsXG4gIENTUy5CT1hfU0laSU5HLkJPUkRFUl9CT1gsXG4gIENTUy5CT1hfU0laSU5HLkNPTlRFTlRfQk9YLFxuICBDU1MuTUFSR0lOLkZVTEwuT05FLFxuICBDU1MuTUFSR0lOLkZVTEwuSEFMRixcbiAgQ1NTLk1BUkdJTi5GVUxMLlFVQVJURVIsXG4gIENTUy5NQVJHSU4uRlVMTC5UV08sXG4gIENTUy5NQVJHSU4uRlVMTC5GT1VSLFxuICBDU1MuTUFSR0lOLlkuT05FLFxuICBDU1MuTUFSR0lOLlkuSEFMRixcbiAgQ1NTLk1BUkdJTi5ZLlFVQVJURVIsXG4gIENTUy5NQVJHSU4uWS5UV08sXG4gIENTUy5NQVJHSU4uWS5GT1VSLFxuICBDU1MuTUFSR0lOLlRPUC5PTkUsXG4gIENTUy5NQVJHSU4uVE9QLkhBTEYsXG4gIENTUy5NQVJHSU4uVE9QLlFVQVJURVIsXG4gIENTUy5NQVJHSU4uVE9QLlRXTyxcbiAgQ1NTLk1BUkdJTi5UT1AuRk9VUixcbiAgQ1NTLk1BUkdJTi5YLk9ORSxcbiAgQ1NTLk1BUkdJTi5YLkhBTEYsXG4gIENTUy5NQVJHSU4uWC5RVUFSVEVSLFxuICBDU1MuTUFSR0lOLlguVFdPLFxuICBDU1MuTUFSR0lOLlguRk9VUixcbiAgQ1NTLk1BUkdJTi5YLkFVVE8sXG4gIENTUy5NQVJHSU4uUklHSFQuT05FLFxuICBDU1MuTUFSR0lOLlJJR0hULkhBTEYsXG4gIENTUy5NQVJHSU4uUklHSFQuUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5SSUdIVC5UV08sXG4gIENTUy5NQVJHSU4uUklHSFQuRk9VUixcbiAgQ1NTLk1BUkdJTi5SSUdIVC5BVVRPLFxuICBDU1MuTUFSR0lOLkJPVFRPTS5PTkUsXG4gIENTUy5NQVJHSU4uQk9UVE9NLkhBTEYsXG4gIENTUy5NQVJHSU4uQk9UVE9NLlFVQVJURVIsXG4gIENTUy5NQVJHSU4uQk9UVE9NLlRXTyxcbiAgQ1NTLk1BUkdJTi5CT1RUT00uRk9VUixcbiAgQ1NTLk1BUkdJTi5MRUZULk9ORSxcbiAgQ1NTLk1BUkdJTi5MRUZULkhBTEYsXG4gIENTUy5NQVJHSU4uTEVGVC5RVUFSVEVSLFxuICBDU1MuTUFSR0lOLkxFRlQuVFdPLFxuICBDU1MuTUFSR0lOLkxFRlQuRk9VUixcbiAgQ1NTLk1BUkdJTi5MRUZULkFVVE8sXG4gIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gIENTUy5CT1JERVIuRlVMTC5UV08sXG4gIENTUy5CT1JERVIuVE9QLk9ORSxcbiAgQ1NTLkJPUkRFUi5UT1AuVFdPLFxuICBDU1MuQk9SREVSLlJJR0hULk9ORSxcbiAgQ1NTLkJPUkRFUi5SSUdIVC5UV08sXG4gIENTUy5CT1JERVIuQk9UVE9NLk9ORSxcbiAgQ1NTLkJPUkRFUi5CT1RUT00uVFdPLFxuICBDU1MuQk9SREVSLkxFRlQuT05FLFxuICBDU1MuQk9SREVSLkxFRlQuVFdPLFxuICBDU1MuQk9SREVSLlJBRElVUy5PTkUsXG4gIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gIENTUy5QQURESU5HLkZVTEwuT05FLFxuICBDU1MuUEFERElORy5GVUxMLkhBTEYsXG4gIENTUy5QQURESU5HLkZVTEwuUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuRlVMTC5UV08sXG4gIENTUy5QQURESU5HLkZVTEwuRk9VUixcbiAgQ1NTLlBBRERJTkcuWS5PTkUsXG4gIENTUy5QQURESU5HLlkuSEFMRixcbiAgQ1NTLlBBRERJTkcuWS5RVUFSVEVSLFxuICBDU1MuUEFERElORy5ZLlRXTyxcbiAgQ1NTLlBBRERJTkcuWS5GT1VSLFxuICBDU1MuUEFERElORy5UT1AuT05FLFxuICBDU1MuUEFERElORy5UT1AuSEFMRixcbiAgQ1NTLlBBRERJTkcuVE9QLlFVQVJURVIsXG4gIENTUy5QQURESU5HLlRPUC5UV08sXG4gIENTUy5QQURESU5HLlRPUC5GT1VSLFxuICBDU1MuUEFERElORy5YLk9ORSxcbiAgQ1NTLlBBRERJTkcuWC5IQUxGLFxuICBDU1MuUEFERElORy5YLlFVQVJURVIsXG4gIENTUy5QQURESU5HLlguVFdPLFxuICBDU1MuUEFERElORy5YLkZPVVIsXG4gIENTUy5QQURESU5HLlJJR0hULk9ORSxcbiAgQ1NTLlBBRERJTkcuUklHSFQuSEFMRixcbiAgQ1NTLlBBRERJTkcuUklHSFQuUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuUklHSFQuVFdPLFxuICBDU1MuUEFERElORy5SSUdIVC5GT1VSLFxuICBDU1MuUEFERElORy5CT1RUT00uT05FLFxuICBDU1MuUEFERElORy5CT1RUT00uSEFMRixcbiAgQ1NTLlBBRERJTkcuQk9UVE9NLlFVQVJURVIsXG4gIENTUy5QQURESU5HLkJPVFRPTS5UV08sXG4gIENTUy5QQURESU5HLkJPVFRPTS5GT1VSLFxuICBDU1MuUEFERElORy5MRUZULk9ORSxcbiAgQ1NTLlBBRERJTkcuTEVGVC5IQUxGLFxuICBDU1MuUEFERElORy5MRUZULlFVQVJURVIsXG4gIENTUy5QQURESU5HLkxFRlQuVFdPLFxuICBDU1MuUEFERElORy5MRUZULkZPVVIsXG4gIENTUy5XSURUSC5NQVhfRlVMTCxcbiAgQ1NTLldJRFRILkZVTEwsXG4gIENTUy5IRUlHSFQuRlVMTCxcbiAgQ1NTLkFMSUdOLlkuTUlERExFLFxuICBDU1MuQlJFQUtfV09SRCxcbiAgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCxcbiAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICBDU1MuRk9OVC5TSVpFLlRXRUxWRSxcbiAgQ1NTLkZPTlQuU0laRS5GT1VSVEVFTixcbiAgQ1NTLkZPTlQuU0laRS5TSVhURUVOLFxuICBDU1MuRk9OVC5TSVpFLlRXRU5UWSxcbiAgQ1NTLkZPTlQuU0laRS5UV0VOVFlfRk9VUixcbiAgQ1NTLkZPTlQuU0laRS5USElSVFlfVFdPLFxuICBDU1MuRk9OVC5XRUlHSFQuRk9VUl9IVU5EUkVELFxuICBDU1MuRk9OVC5XRUlHSFQuRklWRV9IVU5EUkVELFxuICBDU1MuRk9OVC5XRUlHSFQuU0lYX0hVTkRSRUQsXG4gIENTUy5GT05ULldFSUdIVC5TRVZFTl9IVU5EUkVELFxuICBDU1MuTElTVF9CVUxMRVRTLk9GRixcbiAgQ1NTLk9CSkVDVC5DRU5URVIsXG4gIENTUy5PQkpFQ1QuQ09OVEFJTixcbiAgQ1NTLk9CSkVDVC5DT1ZFUixcbiAgQ1NTLk9CSkVDVC5TQ0FMRV9ET1dOLFxuICBDU1MuUE9JTlRFUl9FVkVOVFMuT04sXG4gIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gIENTUy5TQ1JPTExCQVIuT0ZGLFxuICBDU1MuU0hBRE9XLkJPVFRPTSxcbiAgQ1NTLlNIQURPVy5UT1AsXG4gIENTUy5TTkFQLk9OLFxuICBDU1MuU05BUF9BTElHTi5TVEFSVCxcbiAgQ1NTLkFMSUdOLlguTEVGVCxcbiAgQ1NTLkFMSUdOLlguQ0VOVEVSLFxuICBDU1MuQUxJR04uWC5SSUdIVCxcbiAgQ1NTLlRFWFRfVFJBTlNGT1JNLkxPV0VSLFxuICBDU1MuVEVYVF9UUkFOU0ZPUk0uTk9ORSxcbiAgQ1NTLlRFWFRfVFJBTlNGT1JNLlVQUEVSLFxuICBDU1MuVU5ERVJMSU5FLFxuICBDU1MuVU5ERVJMSU5FLkhPVkVSLFxuICBDU1MuVU5ERVJMSU5FLk9GRixcbiAgQ1NTLlZJU0lCSUxJVFkuT04sXG4gIENTUy5WSVNJQklMSVRZLk9GRixcbiAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gIENTUy5PVkVSRkxPVy5YWS5BVVRPLFxuICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICBDU1MuT1ZFUkZMT1cuWC5BVVRPLFxuICBDU1MuT1ZFUkZMT1cuWC5ISURERU4sXG4gIENTUy5PVkVSRkxPVy5YLlNDUk9MTCxcbiAgQ1NTLk9WRVJGTE9XLlkuQVVUTyxcbiAgQ1NTLk9WRVJGTE9XLlkuSElEREVOLFxuXTtcbiIsImV4cG9ydCBjb25zdCBPUklFTlRBVElPTiA9IHtcbiAgSE9SSVpPTlRBTDogJ2hvcml6b250YWwnLFxuICBWRVJUSUNBTDogJ3ZlcnRpY2FsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIE9yaWVudGF0aW9uID0gKHR5cGVvZiBPUklFTlRBVElPTilba2V5b2YgdHlwZW9mIE9SSUVOVEFUSU9OXTtcbiIsImV4cG9ydCBjb25zdCBTSVpFID0ge1xuICBMQVJHRTogJ2xhcmdlJyxcbiAgU01BTEw6ICdzbWFsbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBTaXplID0gKHR5cGVvZiBTSVpFKVtrZXlvZiB0eXBlb2YgU0laRV07XG4iLCJjb25zdCBjYXBpdGFsaXplRmlyc3QgPSAoc3RyaW5nOiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIHN0cmluZy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0cmluZy5zbGljZSgxKTtcbn07XG5cbmNvbnN0IGZvcm1hdENhbWVsQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC9eW1xcc18tXS8sICcnKVxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJyAnKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAuc3BsaXQoJyAnKVxuICAgICAgICAubWFwKCh3b3JkLCBpbmRleCkgPT4gKGluZGV4ID09PSAwID8gd29yZCA6IHdvcmQuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpKVxuICAgICAgICAuam9pbignJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0S2ViYWJDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICctJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0TGFiZWwgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBjb25zdCBsYWJlbE1hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICBmYWxzZTogJ05vJyxcbiAgICB0cnVlOiAnWWVzJyxcbiAgfTtcbiAgcmV0dXJuIE9iamVjdC5oYXNPd24obGFiZWxNYXAsIHZhbHVlKSA/IGxhYmVsTWFwW3ZhbHVlXSA6IHZhbHVlO1xufTtcblxuY29uc3QgZm9ybWF0TnVtYmVyID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgb3V0cHV0ID0gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyA/IG5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdChpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJycpO1xuICBsZXQgZGlnaXRzID0gb3V0cHV0O1xuXG4gIGlmIChpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZGlnaXRzID0gZGlnaXRzLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG4gICAgaWYgKE51bWJlcihkaWdpdHMpKSB7XG4gICAgICBvdXRwdXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoTnVtYmVyKGRpZ2l0cykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXRwdXQgPSAnMCc7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFBhc2NhbENhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJyAnKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAuc3BsaXQoJyAnKVxuICAgICAgICAubWFwKCh3b3JkKSA9PiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKVxuICAgICAgICAuam9pbignJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0UGhvbmUgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBvdXRwdXQgPSBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInID8gU3RyaW5nKGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnJyk7XG4gIGxldCBkaWdpdHMgPSBvdXRwdXQ7XG4gIGRpZ2l0cyA9IGRpZ2l0cy5yZXBsYWNlKC9cXEQvZywgJycpO1xuXG4gIHN3aXRjaCAoZGlnaXRzLmxlbmd0aCkge1xuICAgIGNhc2UgNzpcbiAgICAgIG91dHB1dCA9IGAke2RpZ2l0cy5zbGljZSgwLCAzKX0tJHtkaWdpdHMuc2xpY2UoMyl9YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTA6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMyl9LSR7ZGlnaXRzLnNsaWNlKDMsIDYpfS0ke2RpZ2l0cy5zbGljZSg2KX1gO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMTpcbiAgICAgIG91dHB1dCA9IGAke2RpZ2l0cy5zbGljZSgwLCAxKX0tJHtkaWdpdHMuc2xpY2UoMSwgNCl9LSR7ZGlnaXRzLnNsaWNlKDQsIDcpfS0ke2RpZ2l0cy5zbGljZSg3KX1gO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIG91dHB1dCA9IGRpZ2l0cztcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFByaWNlID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dCA/IGZvcm1hdE51bWJlcihpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJzAnKTtcbiAgcmV0dXJuIGAkJHtvdXRwdXR9YDtcbn07XG5cbmNvbnN0IGZvcm1hdFF1b3RlcyA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIGlmICh2YWx1ZS5zdGFydHNXaXRoKCdcIicpICYmIHZhbHVlLmVuZHNXaXRoKCdcIicpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnNsaWNlKDEsIC0xKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn07XG5cbmNvbnN0IGZvcm1hdFNlbnRlbmNlQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IHNlbnRlbmNlQ2FzZSA9IGlucHV0O1xuXG4gIGlmIChpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3QgbG93ZXJDYXNlID0gaW5wdXRcbiAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJyk7XG5cbiAgICBzZW50ZW5jZUNhc2UgPSBsb3dlckNhc2Uuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIGxvd2VyQ2FzZS5zbGljZSgxKTtcbiAgfVxuXG4gIHJldHVybiBzZW50ZW5jZUNhc2U7XG59O1xuXG5jb25zdCBmb3JtYXRTbmFrZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJ18nKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRUaXRsZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJyAnKVxuICAgICAgICAuc3BsaXQoJyAnKVxuICAgICAgICAubWFwKCh3b3JkKSA9PiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKVxuICAgICAgICAuam9pbignICcpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFVybEZyb21Sb290ID0gKHVybDogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IHVybEZvcm1hdHRlZCA9IHVybC5zcGxpdCgnLmNvbS8nKTtcblxuICByZXR1cm4gdXJsRm9ybWF0dGVkLmxlbmd0aCA+IDEgPyBgLyR7dXJsRm9ybWF0dGVkWzFdfWAgOiB1cmw7XG59O1xuXG5jb25zdCBmb3JtYXRXZWlnaHQgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG91dHB1dCA9IGlucHV0ID8gZm9ybWF0TnVtYmVyKGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnMCcpO1xuICByZXR1cm4gYCR7b3V0cHV0fSBsYnNgO1xufTtcblxuY29uc3QgZ2V0QXJ0aWNsZSA9IChub3VuOiBzdHJpbmcsIGlzUGx1cmFsID0gZmFsc2UsIGlzRGVmaW5pdGUgPSBmYWxzZSkgPT4ge1xuICBjb25zdCB2b3dlbHMgPSBbJ2EnLCAnZScsICdpJywgJ28nLCAndSddO1xuICBjb25zdCBpc1Zvd2VsTGVhZGluZyA9IHZvd2Vscy5pbmNsdWRlcyhub3VuLmNoYXJBdCgwKSk7XG5cbiAgcmV0dXJuIGlzRGVmaW5pdGUgPyAndGhlJyA6IGlzUGx1cmFsID8gJ3NvbWUnIDogaXNWb3dlbExlYWRpbmcgPyAnYW4nIDogJ2EnO1xufTtcblxuY29uc3QgcHJpY2VUb051bWJlciA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIGlmIChOdW1iZXIuaXNOYU4oTnVtYmVyKHZhbHVlKSkpIHtcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoJyQnLCAnJyk7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC8sL2csICcnKTtcbiAgfVxuICByZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKTtcbn07XG5cbmNvbnN0IHVuZm9ybWF0UHJpY2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG91dHB1dCA9IGlucHV0LnJlcGxhY2UoL1xcJC9nLCAnJykucmVwbGFjZSgvLC9nLCAnJyk7XG4gIHJldHVybiBgJHtvdXRwdXR9YDtcbn07XG5cbmV4cG9ydCB7XG4gIGNhcGl0YWxpemVGaXJzdCxcbiAgZm9ybWF0Q2FtZWxDYXNlLFxuICBmb3JtYXRLZWJhYkNhc2UsXG4gIGZvcm1hdExhYmVsLFxuICBmb3JtYXROdW1iZXIsXG4gIGZvcm1hdFBhc2NhbENhc2UsXG4gIGZvcm1hdFBob25lLFxuICBmb3JtYXRQcmljZSxcbiAgZm9ybWF0UXVvdGVzLFxuICBmb3JtYXRTZW50ZW5jZUNhc2UsXG4gIGZvcm1hdFNuYWtlQ2FzZSxcbiAgZm9ybWF0VGl0bGVDYXNlLFxuICBmb3JtYXRVcmxGcm9tUm9vdCxcbiAgZm9ybWF0V2VpZ2h0LFxuICBnZXRBcnRpY2xlLFxuICBwcmljZVRvTnVtYmVyLFxuICB1bmZvcm1hdFByaWNlLFxufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGRlZmluZUFzeW5jQ29tcG9uZW50LCBtYXJrUmF3LCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgdHlwZSB7IENvbXBvbmVudCB9IGZyb20gJ3Z1ZSc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgU2l6ZSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgZm9ybWF0UGFzY2FsQ2FzZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBpY29uOiBJY29uO1xuICAgIHNpemU/OiBTaXplO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgc2l6ZTogU0laRS5TTUFMTCxcbiAgfSk7XG5cbiAgY29uc3QgaW5uZXJTVkcgPSByZWY8Q29tcG9uZW50PigpO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmljb24sXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3QgaWQgPSBwcm9wcy5pY29uIGFzIHVua25vd24gYXMgc3RyaW5nO1xuICAgICAgY29uc3QgbmFtZSA9IGZvcm1hdFBhc2NhbENhc2UoaWQpO1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZGVmaW5lQXN5bmNDb21wb25lbnQoKCkgPT4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2ljb25zL0ljb24ke25hbWV9LnZ1ZWApKTtcblxuICAgICAgaW5uZXJTVkcudmFsdWUgPSBtYXJrUmF3KGNvbXBvbmVudCk7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pY29uJywgcHJvcHMuc2l6ZV1cIj5cbiAgICA8c3ZnXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0tdXCJcbiAgICAgIDpkYXRhLWljb249XCJpY29uXCJcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICA+XG4gICAgICA8Q29tcG9uZW50XG4gICAgICAgIDppcz1cImlubmVyU1ZHXCJcbiAgICAgICAgdi1pZj1cImlubmVyU1ZHXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaWNvbiBzdmcge1xuICAgIHdpZHRoOiAxLjVyZW07XG4gICAgaGVpZ2h0OiAxLjVyZW07XG4gIH1cblxuICAudGlkZS1pY29uLnNtYWxsIHN2ZyB7XG4gICAgd2lkdGg6IDEuMjVyZW07XG4gICAgaGVpZ2h0OiAxLjI1cmVtO1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IElDT04gPSB7XG4gIEFDQ09VTlRfQkFMQU5DRTogJ2FjY291bnQtYmFsYW5jZScsXG4gIEFERDogJ2FkZCcsXG4gIEFJOiAnYWknLFxuICBBTElHTl9TUEFDRTogJ2FsaWduLXNwYWNlJyxcbiAgQVBQTEVfUEFZOiAnYXBwbGUtcGF5JyxcbiAgQVJST1dfQkFDSzogJ2Fycm93LWJhY2snLFxuICBBUlJPV19GT1JXQVJEOiAnYXJyb3ctZm9yd2FyZCcsXG4gIEFSUk9XX1JJR0hUOiAnYXJyb3ctcmlnaHQnLFxuICBBU1NJR05NRU5UOiAnYXNzaWdubWVudCcsXG4gIEFXQVJEX1NUQVI6ICdhd2FyZC1zdGFyJyxcbiAgQk9PS01BUks6ICdib29rbWFyaycsXG4gIENBTEVOREFSX01PTlRIOiAnY2FsZW5kYXItbW9udGgnLFxuICBDQUxMOiAnY2FsbCcsXG4gIENIRUNLOiAnY2hlY2snLFxuICBDSEVWUk9OX0xFRlQ6ICdjaGV2cm9uLWxlZnQnLFxuICBDSEVWUk9OX1JJR0hUOiAnY2hldnJvbi1yaWdodCcsXG4gIENMRUFSOiAnY2xlYXInLFxuICBDTE9TRTogJ2Nsb3NlJyxcbiAgQ1lDTEU6ICdjeWNsZScsXG4gIERFTEVURTogJ2RlbGV0ZScsXG4gIERJQU1PTkQ6ICdkaWFtb25kJyxcbiAgRURJVDogJ2VkaXQnLFxuICBFUlJPUjogJ2Vycm9yJyxcbiAgRVhQQU5EX0NPTlRFTlQ6ICdleHBhbmQtY29udGVudCcsXG4gIEVYUEFORF9MRVNTOiAnZXhwYW5kLWxlc3MnLFxuICBFWFBBTkRfTU9SRTogJ2V4cGFuZC1tb3JlJyxcbiAgRkFDRUJPT0s6ICdmYWNlYm9vaycsXG4gIEZBVk9SSVRFOiAnZmF2b3JpdGUnLFxuICBGQVZPUklURV9GSUxMRUQ6ICdmYXZvcml0ZS1maWxsZWQnLFxuICBGT1JNQVRfQk9MRDogJ2Zvcm1hdC1ib2xkJyxcbiAgRk9STUFUX0lUQUxJQzogJ2Zvcm1hdC1pdGFsaWMnLFxuICBGT1JNQVRfTElTVF9CVUxMRVRFRDogJ2Zvcm1hdC1saXN0LWJ1bGxldGVkJyxcbiAgRk9SVU06ICdmb3J1bScsXG4gIEdPT0dMRTogJ2dvb2dsZScsXG4gIEdPT0dMRV9QQVk6ICdnb29nbGUtcGF5JyxcbiAgR1JJRDogJ2dyaWQnLFxuICBIRUxQOiAnaGVscCcsXG4gIElORk86ICdpbmZvJyxcbiAgSU5TRVJUX1RFWFQ6ICdpbnNlcnQtdGV4dCcsXG4gIElOU1RBR1JBTTogJ2luc3RhZ3JhbScsXG4gIElPU19TSEFSRTogJ2lvcy1zaGFyZScsXG4gIExBWU9VVDogJ2xheW91dCcsXG4gIExJTktFRF9JTjogJ2xpbmtlZCBpbicsXG4gIExPQ0FMX1NISVBQSU5HOiAnbG9jYWwtc2hpcHBpbmcnLFxuICBMT0NLOiAnbG9jaycsXG4gIE1BSUw6ICdtYWlsJyxcbiAgTUVOVTogJ21lbnUnLFxuICBNT1JFX0hPUklaOiAnbW9yZS1ob3JpeicsXG4gIE5PVElGSUNBVElPTlM6ICdub3RpZmljYXRpb25zJyxcbiAgT1BFTl9JTl9ORVc6ICdvcGVuLWluLW5ldycsXG4gIFBBTEVUVEU6ICdwYWxldHRlJyxcbiAgUEFZUEFMOiAncGF5cGFsJyxcbiAgUEVSU09OOiAncGVyc29uJyxcbiAgUEhPVE9fQ0FNRVJBOiAncGhvdG8tY2FtZXJhJyxcbiAgUElOVEVSRVNUOiAncGludGVyZXN0JyxcbiAgUExBWV9BUlJPVzogJ3BsYXktYXJyb3cnLFxuICBSRU1PVkU6ICdyZW1vdmUnLFxuICBST1VOREVEX0NPUk5FUlM6ICdyb3VuZGVkLWNvcm5lcnMnLFxuICBTRUFSQ0g6ICdzZWFyY2gnLFxuICBTRUxMOiAnc2VsbCcsXG4gIFNIQVJFOiAnc2hhcmUnLFxuICBTSE9QUElOR19DQVJUOiAnc2hvcHBpbmctY2FydCcsXG4gIFNNUzogJ3NtcycsXG4gIFNUQVI6ICdzdGFyJyxcbiAgU1dBUF9WRVJUOiAnc3dhcC12ZXJ0JyxcbiAgVEhSRUVfRF9ST1RBVElPTjogJ3RocmVlLWQtcm90YXRpb24nLFxuICBUVU5FOiAndHVuZScsXG4gIFRXSVRURVI6ICd0d2l0dGVyJyxcbiAgVklERU9DQU06ICd2aWRlb2NhbScsXG4gIFZJRVdfSU5fQVI6ICd2aWV3LWluLWFyJyxcbiAgVklTSUJJTElUWTogJ3Zpc2liaWxpdHknLFxuICBXQVJOSU5HOiAnd2FybmluZycsXG4gIFlPVVRVQkU6ICd5b3V0dWJlJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEljb24gPSAodHlwZW9mIElDT04pW2tleW9mIHR5cGVvZiBJQ09OXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG9uTW91bnRlZCwgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZURpdmlkZXIgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVEaXZpZGVyLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IFRpZGVJbmRpY2F0b3IgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJbmRpY2F0b3IudnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBjb25zdCBwcm9wcyA9IGRlZmluZVByb3BzKHtcbiAgICBoYXNCb3R0b21EaXZpZGVyOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICBoYXNUb3BEaXZpZGVyOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICBpc0FjdGl2ZToge1xuICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAgaXNFeHBhbmRlZEluaXRpYWw6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIGlzT3B0aW9uYWw6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIGxhYmVsOiB7XG4gICAgICBkZWZhdWx0OiAnJyxcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGlzRXhwYW5kZWQgPSByZWYocHJvcHMuaXNFeHBhbmRlZEluaXRpYWwpO1xuXG4gIGxldCBhY2NvcmRpb25Cb2R5ID0gcmVmKCk7XG5cbiAgY29uc3QgdG9nZ2xlSXNFeHBhbmRlZCA9ICgpID0+IHtcbiAgICBjb25zdCBlbGVtZW50ID0gYWNjb3JkaW9uQm9keS52YWx1ZSBhcyBIVE1MRWxlbWVudDtcblxuICAgIGlzRXhwYW5kZWQudmFsdWUgPSAhaXNFeHBhbmRlZC52YWx1ZTtcblxuICAgIGVsZW1lbnQuc3R5bGUuZ3JpZFRlbXBsYXRlUm93cyA9IGlzRXhwYW5kZWQudmFsdWUgPyAnMWZyJyA6ICcwZnInO1xuICB9O1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFjY29yZGlvbkJvZHkudmFsdWUgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBlbGVtZW50LnN0eWxlLmdyaWRUZW1wbGF0ZVJvd3MgPSBpc0V4cGFuZGVkLnZhbHVlID8gJzFmcicgOiAnMGZyJztcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwidGlkZS1hY2NvcmRpb24taXRlbVwiPlxuICAgIDxUaWRlRGl2aWRlciB2LWlmPVwicHJvcHMuaGFzVG9wRGl2aWRlclwiIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtYWNjb3JkaW9uLWhlYWQnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQkVUV0VFTiwgQ1NTLlBBRERJTkcuWS5IQUxGLCBDU1MuQ1VSU09SLlBPSU5URVJdXCJcbiAgICAgIEBjbGljaz1cInRvZ2dsZUlzRXhwYW5kZWRcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuSEFMRiwgQ1NTLkZPTlQuV0VJR0hULlNFVkVOX0hVTkRSRURdXCI+XG4gICAgICAgIDxzcGFuPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5pc09wdGlvbmFsXCJcbiAgICAgICAgPlxuICAgICAgICAgIChvcHRpb25hbClcbiAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIDxUaWRlSW5kaWNhdG9yIHYtaWY9XCJwcm9wcy5pc0FjdGl2ZVwiIC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uIDppY29uPVwiaXNFeHBhbmRlZCA/IElDT04uRVhQQU5EX0xFU1MgOiBJQ09OLkVYUEFORF9NT1JFXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1hY2NvcmRpb24tYm9keScsIENTUy5ESVNQTEFZLkdSSURdXCJcbiAgICAgIHJlZj1cImFjY29yZGlvbkJvZHlcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5PVkVSRkxPVy5ZLkhJRERFTl1cIj5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5ZLk9ORSwgQ1NTLkZPTlQuV0VJR0hULkZPVVJfSFVORFJFRCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgICAgIDxzbG90IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cInByb3BzLmhhc0JvdHRvbURpdmlkZXJcIiAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWFjY29yZGlvbi1ib2R5IHtcbiAgICB0cmFuc2l0aW9uOiBncmlkLXRlbXBsYXRlLXJvd3MgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBFTEVNRU5UID0ge1xuICBCVVRUT046ICdidXR0b24nLFxuICBMSU5LOiAnYScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgRUxFTUVOVF9URVhUX0FTX0lDT04gPSB7XG4gIEJVVFRPTjogJ2J1dHRvbicsXG4gIERJVjogJ2RpdicsXG4gIExJTks6ICdhJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEVsZW1lbnQgPSAodHlwZW9mIEVMRU1FTlQpW2tleW9mIHR5cGVvZiBFTEVNRU5UXTtcbmV4cG9ydCB0eXBlIEVsZW1lbnRUZXh0QXNJY29uID0gKHR5cGVvZiBFTEVNRU5UX1RFWFRfQVNfSUNPTilba2V5b2YgdHlwZW9mIEVMRU1FTlRfVEVYVF9BU19JQ09OXTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIHZ1ZS9zb3J0LWtleXMgKi9cblxuZXhwb3J0IGNvbnN0IFBSSU9SSVRZID0ge1xuICBQUklNQVJZOiAncHJpbWFyeScsXG4gIFNFQ09OREFSWTogJ3NlY29uZGFyeScsXG4gIFRFUlRJQVJZOiAndGVydGlhcnknLFxuICBRVUFURVJOQVJZOiAncXVhdGVybmFyeScsXG4gIEZMT0FUSU5HOiAnZmxvYXRpbmcnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgUHJpb3JpdHkgPSAodHlwZW9mIFBSSU9SSVRZKVtrZXlvZiB0eXBlb2YgUFJJT1JJVFldO1xuIiwiZXhwb3J0IGNvbnN0IFRBUkdFVCA9IHtcbiAgQkxBTks6ICdfYmxhbmsnLFxuICBTRUxGOiB1bmRlZmluZWQsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBUYXJnZXQgPSAodHlwZW9mIFRBUkdFVClba2V5b2YgdHlwZW9mIFRBUkdFVF07XG4iLCJleHBvcnQgY29uc3QgQUxFUlQgPSB7XG4gIEVSUk9SOiAnZXJyb3InLFxuICBJTkZPOiAnaW5mbycsXG4gIFNVQ0NFU1M6ICdzdWNjZXNzJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQWxlcnQgPSAodHlwZW9mIEFMRVJUKVtrZXlvZiB0eXBlb2YgQUxFUlRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB0eXBlIHsgQWxlcnQgfSBmcm9tICdAL3R5cGVzL0FsZXJ0JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IHsgQUxFUlQgfSBmcm9tICdAL3R5cGVzL0FsZXJ0JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGhlYWRpbmc/OiBzdHJpbmc7XG4gICAgaXNUb2FzdD86IGJvb2xlYW47XG4gICAgdHlwZT86IEFsZXJ0O1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGlzVG9hc3Q6IGZhbHNlLFxuICAgIHR5cGU6IEFMRVJULklORk8sXG4gIH0pO1xuXG4gIGNvbnN0IGljb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgbGV0IGljb246IEljb24gPSBJQ09OLlZJRVdfSU5fQVI7XG5cbiAgICBzd2l0Y2ggKHByb3BzLnR5cGUpIHtcbiAgICAgIGNhc2UgQUxFUlQuRVJST1I6XG4gICAgICAgIGljb24gPSBJQ09OLkVSUk9SO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICBjYXNlIEFMRVJULklORk86XG4gICAgICAgIGljb24gPSBJQ09OLklORk87XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBTEVSVC5TVUNDRVNTOlxuICAgICAgICBpY29uID0gSUNPTi5DSEVDSztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEFMRVJULldBUk5JTkc6XG4gICAgICAgIGljb24gPSBJQ09OLldBUk5JTkc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBpY29uO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICBwcm9wcy50eXBlLFxuICAgICAgJ3RpZGUtYWxlcnQnLFxuICAgICAgQ1NTLkRJU1BMQVkuR1JJRCxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICBDU1MuUEFERElORy5GVUxMLk9ORSxcbiAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULkVSUk9SICYmIENTUy5CRy5TVVJGQUNFLkVSUk9SLFxuICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuSU5GTyAmJiBDU1MuQkcuU1VSRkFDRS5JTkZPLFxuICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuU1VDQ0VTUyAmJiBDU1MuQkcuU1VSRkFDRS5TVUNDRVNTLFxuICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuV0FSTklORyAmJiBDU1MuQkcuU1VSRkFDRS5XQVJOSU5HLFxuICAgICAgcHJvcHMuaXNUb2FzdCA/IENTUy5TSEFET1cuQk9UVE9NIDogJycsXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hbGVydC1pY29uJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUl1cIj5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgcHJvcHMudHlwZSxcbiAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICAgIENTUy5QQURESU5HLkZVTEwuSEFMRixcbiAgICAgICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLklOVkVSU0UsXG4gICAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgJiYgQ1NTLkJHLkVSUk9SLFxuICAgICAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULklORk8gJiYgQ1NTLkJHLklORk8sXG4gICAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuU1VDQ0VTUyAmJiBDU1MuQkcuU1VDQ0VTUyxcbiAgICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HICYmIENTUy5CRy5XQVJOSU5HLFxuICAgICAgICBdXCJcbiAgICAgICAgOmljb249XCJpY29uXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hbGVydC1oZWFkaW5nJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUl1cIj5cbiAgICAgIDxoMiA6Y2xhc3M9XCJbQ1NTLkZPTlQuU0laRS5TSVhURUVOLCBDU1MuRk9OVC5XRUlHSFQuU0lYX0hVTkRSRUQsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIj5cbiAgICAgICAge3sgcHJvcHMuaGVhZGluZyB9fVxuICAgICAgPC9oMj5cbiAgICA8L2Rpdj5cblxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWFsZXJ0LWNsb3NlJywgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBhcmlhLWxhYmVsPVwiQ2xvc2UgYWxlcnRcIlxuICAgIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hbGVydC1ib2R5JywgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiPlxuICAgICAgPHNsb3QgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1hbGVydCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczpcbiAgICAgICdpY29uIGhlYWRpbmcgY2xvc2UnXG4gICAgICAnLiBib2R5IC4nO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnIgYXV0bztcbiAgICBncmlkLWNvbHVtbi1nYXA6IDAuNXJlbTtcbiAgICBtYXgtd2lkdGg6IDQwcmVtO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaWNvbiB7XG4gICAgZ3JpZC1hcmVhOiBpY29uO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaGVhZGluZyB7XG4gICAgZ3JpZC1hcmVhOiBoZWFkaW5nO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtY2xvc2Uge1xuICAgIGdyaWQtYXJlYTogY2xvc2U7XG4gIH1cblxuICAudGlkZS1hbGVydC1ib2R5IHtcbiAgICBncmlkLWFyZWE6IGJvZHk7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgQkFER0UgPSB7XG4gIEpVU1RfTElTVEVEOiAnSnVzdCBsaXN0ZWQnLFxuICBOQVRJT05XSURFOiAnTmF0aW9ud2lkZScsXG4gIFJFRFVDRUQ6ICdSZWR1Y2VkJyxcbiAgVVBEQVRFRDogJ1VwZGF0ZWQnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEJBREdFX1BSRU1JVU0gPSB7XG4gIFBSRU1JVU06ICdQcmVtaXVtJyxcbiAgUFJFTUlVTV9TRUxFQ1Q6ICdQcmVtaXVtIFNFTEVDVCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgQkFER0VfVFJVU1RFRCA9IHtcbiAgWUVBUlNfMTA6ICcxMCcsXG4gIFlFQVJTXzE1OiAnMTUnLFxuICBZRUFSU181OiAnNScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBCYWRnZSA9ICh0eXBlb2YgQkFER0UpW2tleW9mIHR5cGVvZiBCQURHRV07XG5leHBvcnQgdHlwZSBCYWRnZVByZW1pdW0gPSAodHlwZW9mIEJBREdFX1BSRU1JVU0pW2tleW9mIHR5cGVvZiBCQURHRV9QUkVNSVVNXTtcbmV4cG9ydCB0eXBlIEJhZGdlVHJ1c3RlZFllYXJzID0gKHR5cGVvZiBCQURHRV9UUlVTVEVEKVtrZXlvZiB0eXBlb2YgQkFER0VfVFJVU1RFRF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBvbk1vdW50ZWQsIG9uVW5tb3VudGVkLCBvblVwZGF0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzVG91Y2hzY3JlZW4/OiBib29sZWFuO1xuICAgIG9mZnNldFg/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBvZmZzZXRYOiAwLFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjaGFuZ2UnXSk7XG5cbiAgbGV0IGNvbnRlbnRXaWR0aCA9IHJlZigpO1xuICBsZXQgZnJhbWVXaWR0aCA9IHJlZigpO1xuICBsZXQgaGFzT3ZlcmZsb3cgPSByZWYoKTtcbiAgbGV0IGxhc3RQb3NpdGlvbiA9IHJlZigpO1xuXG4gIGNvbnN0IGNvbnRlbnRSZWYgPSByZWYoKTtcbiAgY29uc3QgZnJhbWVSZWYgPSByZWYoKTtcbiAgY29uc3Qgc2hvd0J1dHRvbnMgPSByZWYoKTtcbiAgY29uc3QgY3VycmVudFNsaWRlID0gcmVmKDApO1xuXG4gIGNvbnN0IGdhcCA9IDE2O1xuXG4gIC8qKlxuICAgKiBNZWFzdXJlIHRoZSBjdXJyZW50IHNsaWRlIGJhc2VkIG9uIHRoZSBzY3JvbGxcbiAgICogcG9zaXRpb24gb2YgdGhlIGZyYW1lLiBUaGUgY3VycmVudCBzbGlkZSBpc1xuICAgKiB0aGUgc2xpZGUgdGhhdCBpcyBjbG9zZXN0IHRvIHRoZSBsZWZ0IGVkZ2Ugb2ZcbiAgICogdGhlIGZyYW1lLlxuICAgKi9cbiAgY29uc3QgbWVhc3VyZUN1cnJlbnRTbGlkZSA9ICgpID0+IHtcbiAgICAvLyBnZXQgbGVmdCBvZmZzZXRzIG9mIGVhY2ggc2xpZGVcbiAgICBjb25zdCBzbGlkZU9mZnNldHMgPSBBcnJheS5mcm9tKGNvbnRlbnRSZWYudmFsdWUuY2hpbGRyZW4pLm1hcCgoc2xpZGU6IGFueSkgPT4gc2xpZGUub2Zmc2V0TGVmdCk7XG5cbiAgICBpZiAoc2xpZGVPZmZzZXRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgLy8gZ2V0IHZhbHVlIGNsb3Nlc3QgdG8gY3VycmVudCBzY3JvbGwgcG9zaXRpb25cbiAgICBjb25zdCBjbG9zZXN0U2xpZGVPZmZzZXQgPSBzbGlkZU9mZnNldHMucmVkdWNlKChwcmV2LCBjdXJyKSA9PiB7XG4gICAgICByZXR1cm4gTWF0aC5hYnMoY3VyciAtIGZyYW1lUmVmLnZhbHVlLnNjcm9sbExlZnQpIDwgTWF0aC5hYnMocHJldiAtIGZyYW1lUmVmLnZhbHVlLnNjcm9sbExlZnQpID8gY3VyciA6IHByZXY7XG4gICAgfSk7XG5cbiAgICAvLyBzZXQgY3VycmVudCBzbGlkZSB0byBpbmRleCBvZiBjbG9zZXN0IHNsaWRlXG4gICAgY3VycmVudFNsaWRlLnZhbHVlID0gc2xpZGVPZmZzZXRzLmluZGV4T2YoY2xvc2VzdFNsaWRlT2Zmc2V0KTtcbiAgfTtcblxuICBjb25zdCBtZWFzdXJlRG9tID0gKCkgPT4ge1xuICAgIGNvbnRlbnRXaWR0aC52YWx1ZSA9IGNvbnRlbnRSZWYudmFsdWUuc2Nyb2xsV2lkdGg7XG4gICAgZnJhbWVXaWR0aC52YWx1ZSA9IGZyYW1lUmVmLnZhbHVlLmNsaWVudFdpZHRoO1xuICAgIGhhc092ZXJmbG93LnZhbHVlID0gY29udGVudFdpZHRoLnZhbHVlID4gZnJhbWVXaWR0aC52YWx1ZTtcbiAgICBsYXN0UG9zaXRpb24udmFsdWUgPSBmcmFtZVJlZi52YWx1ZS5zY3JvbGxXaWR0aCAtIGZyYW1lUmVmLnZhbHVlLmNsaWVudFdpZHRoO1xuICAgIHNob3dCdXR0b25zLnZhbHVlID0gaGFzT3ZlcmZsb3cudmFsdWUgJiYgIXByb3BzLmlzVG91Y2hzY3JlZW47XG5cbiAgICBtZWFzdXJlQ3VycmVudFNsaWRlKCk7XG4gIH07XG5cbiAgLy8gVE9ETzogZGVib3VuY2UgdGhpc1xuICBjb25zdCBoYW5kbGVTY3JvbGwgPSAoKSA9PiB7XG4gICAgbWVhc3VyZURvbSgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBTY3JvbGxzIHRvIHRoZSBzbGlkZSBhdCB0aGUgZ2l2ZW4gaW5kZXgsIG9yXG4gICAqIHRvIHRoZSBmaXJzdCBvciBsYXN0IHNsaWRlIGlmIHRoZSBnaXZlbiBpbmRleFxuICAgKiBpcyBvdXQgb2YgYm91bmRzLlxuICAgKiBAcGFyYW0gc2xpZGVJbmRleCBUaGUgaW5kZXggb2YgdGhlIHNsaWRlIHRvIHNjcm9sbCB0b1xuICAgKi9cbiAgY29uc3Qgc2Nyb2xsVG9TbGlkZSA9IChzbGlkZUluZGV4OiBudW1iZXIpID0+IHtcbiAgICBmcmFtZVJlZi52YWx1ZS5zY3JvbGxUbyh7XG4gICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICBsZWZ0OiBjb250ZW50UmVmLnZhbHVlLmNoaWxkcmVuW3NsaWRlSW5kZXhdLm9mZnNldExlZnQsXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgc2hvd05leHRTbGlkZSA9ICgpID0+IHtcbiAgICBjb25zdCBjb250ZW50V2lkdGggPSBjb250ZW50UmVmLnZhbHVlLnNjcm9sbFdpZHRoO1xuICAgIGNvbnN0IGNvbnRlbnRSaWdodEVkZ2UgPSBmcmFtZVJlZi52YWx1ZS5zY3JvbGxMZWZ0ICsgZnJhbWVSZWYudmFsdWUuY2xpZW50V2lkdGg7XG5cbiAgICBpZiAoY29udGVudFJpZ2h0RWRnZSA+IGNvbnRlbnRXaWR0aCkge1xuICAgICAgZnJhbWVSZWYudmFsdWUuc2Nyb2xsVG8oe1xuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICAgIGxlZnQ6IGNvbnRlbnRXaWR0aCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpc0ZpcnN0U2xpZGVXaXRoT2Zmc2V0ID0gcHJvcHMub2Zmc2V0WCAmJiBjdXJyZW50U2xpZGUudmFsdWUgPT09IDA7XG4gICAgICBjb25zdCBpc0xhc3RTbGlkZSA9IGNvbnRlbnRSaWdodEVkZ2UgPT09IGNvbnRlbnRXaWR0aDtcbiAgICAgIGNvbnN0IG5leHRTbGlkZSA9IGlzTGFzdFNsaWRlID8gMCA6IGlzRmlyc3RTbGlkZVdpdGhPZmZzZXQgPyAyIDogY3VycmVudFNsaWRlLnZhbHVlICsgMTtcblxuICAgICAgc2Nyb2xsVG9TbGlkZShuZXh0U2xpZGUpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBzaG93UHJldmlvdXNTbGlkZSA9ICgpID0+IHtcbiAgICBjb25zdCBmaXJzdFNsaWRlID0gcHJvcHMub2Zmc2V0WCA/IDEgOiAwO1xuICAgIGNvbnN0IGlzRmlyc3RTbGlkZSA9IGN1cnJlbnRTbGlkZS52YWx1ZSAtIDEgPT09IGZpcnN0U2xpZGU7XG4gICAgY29uc3QgaXNTZWNvbmRTbGlkZSA9IGN1cnJlbnRTbGlkZS52YWx1ZSA8PSBmaXJzdFNsaWRlO1xuICAgIGNvbnN0IHByZXZpb3VzU2xpZGUgPSBpc1NlY29uZFNsaWRlXG4gICAgICA/IGNvbnRlbnRSZWYudmFsdWUuY2hpbGRyZW4ubGVuZ3RoIC0gMVxuICAgICAgOiBpc0ZpcnN0U2xpZGVcbiAgICAgID8gMFxuICAgICAgOiBjdXJyZW50U2xpZGUudmFsdWUgLSAxO1xuXG4gICAgc2Nyb2xsVG9TbGlkZShwcmV2aW91c1NsaWRlKTtcbiAgfTtcblxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgbWVhc3VyZURvbSk7XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBtZWFzdXJlRG9tKCk7XG4gIH0pO1xuXG4gIG9uVW5tb3VudGVkKCgpID0+IHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgbWVhc3VyZURvbSk7XG4gIH0pO1xuXG4gIG9uVXBkYXRlZCgoKSA9PiB7XG4gICAgbWVhc3VyZURvbSgpO1xuICB9KTtcblxuICB3YXRjaChjdXJyZW50U2xpZGUsICgpID0+IHtcbiAgICBlbWl0KCdjaGFuZ2UnLCBjdXJyZW50U2xpZGUudmFsdWUpO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uXG4gICAgOmNsYXNzPVwiWyd0aWRlLWNhcm91c2VsJywgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuV0lEVEguRlVMTF1cIlxuICAgIHJlZj1cImNhcm91c2VsUmVmXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuU0NST0xMQkFSLk9GRiwgQ1NTLlNOQVAuT04sIENTUy5PVkVSRkxPVy5YLlNDUk9MTF1cIlxuICAgICAgcmVmPVwiZnJhbWVSZWZcIlxuICAgICAgQHNjcm9sbD1cImhhbmRsZVNjcm9sbFwiXG4gICAgPlxuICAgICAgPHVsXG4gICAgICAgIDpjbGFzcz1cIltwcm9wcy5pc1RvdWNoc2NyZWVuID8gW0NTUy5PVkVSRkxPVy5YLkFVVE9dIDogJycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5HQVAuT05FLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIlxuICAgICAgICByZWY9XCJjb250ZW50UmVmXCJcbiAgICAgID5cbiAgICAgICAgPGxpXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkYsIENTUy5TTkFQX0FMSUdOLlNUQVJUXVwiXG4gICAgICAgICAgOnN0eWxlPVwieyB3aWR0aDogYCR7cHJvcHMub2Zmc2V0WCAtIGdhcH1weGAgfVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLm9mZnNldFhcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxzbG90IC8+XG5cbiAgICAgICAgPGxpXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkYsIENTUy5TTkFQX0FMSUdOLlNUQVJUXVwiXG4gICAgICAgICAgOnN0eWxlPVwieyB3aWR0aDogYCR7cHJvcHMub2Zmc2V0WCAtIGdhcH1weGAgfVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLm9mZnNldFhcIlxuICAgICAgICAvPlxuICAgICAgPC91bD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQkVUV0VFTixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgIF1cIlxuICAgICAgdi1pZj1cInNob3dCdXR0b25zXCJcbiAgICA+XG4gICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uTEVGVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgIEBjbGljaz1cInNob3dQcmV2aW91c1NsaWRlXCJcbiAgICAgIC8+XG5cbiAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICBAY2xpY2s9XCJzaG93TmV4dFNsaWRlXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBvbk1vdW50ZWQsIG9uQmVmb3JlVW5tb3VudCwgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhbHQ/OiBzdHJpbmc7XG4gICAgY2RuPzogc3RyaW5nO1xuICAgIGlzTGF6eT86IGJvb2xlYW47XG4gICAgb2Zmc2V0PzogbnVtYmVyO1xuICAgIHNyYz86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGFsdDogJycsXG4gICAgY2RuOiB1bmRlZmluZWQsXG4gICAgaXNMYXp5OiB0cnVlLFxuICAgIG9mZnNldDogMCxcbiAgICBzcmM6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgdGlkZUltYWdlID0gcmVmKCk7XG5cbiAgY29uc3QgaW1hZ2VEZWZhdWx0ID0gYCR7cHJvcHMuY2RufS9pbWFnZS1jb21pbmctc29vbi01MTIucG5nYDtcblxuICBjb25zdCBsb2FkSW1hZ2UgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLnNyYykge1xuICAgICAgY29uc3QgaW1hZ2VMb2FkZXIgPSBuZXcgSW1hZ2UoKTtcblxuICAgICAgaW1hZ2VMb2FkZXIub25sb2FkID0gc2V0SW1hZ2VGcm9tU3JjO1xuICAgICAgaW1hZ2VMb2FkZXIub25lcnJvciA9IHNldEltYWdlRnJvbURlZmF1bHQ7XG4gICAgICBpbWFnZUxvYWRlci5zcmMgPSBwcm9wcy5zcmM7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHNldEltYWdlRnJvbURlZmF1bHQgPSAoKSA9PiB7XG4gICAgdGlkZUltYWdlLnZhbHVlLnNyYyA9IGltYWdlRGVmYXVsdDtcbiAgfTtcblxuICBjb25zdCBzZXRJbWFnZUZyb21TcmMgPSAoKSA9PiB7XG4gICAgdGlkZUltYWdlLnZhbHVlLnNyYyA9IHByb3BzLnNyYztcbiAgfTtcblxuICBkZWZpbmVFeHBvc2UodGlkZUltYWdlLnZhbHVlKTtcblxuICBjb25zdCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcywgb2JzZXJ2ZXIpID0+IHtcbiAgICBlbnRyaWVzLmZvckVhY2goXG4gICAgICAoZW50cnkpID0+IHtcbiAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgICAgbG9hZEltYWdlKCk7XG4gICAgICAgICAgb2JzZXJ2ZXIudW5vYnNlcnZlKGVudHJ5LnRhcmdldCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHJvb3RNYXJnaW46IGAke3Byb3BzLm9mZnNldH1weGAsXG4gICAgICB9XG4gICAgKTtcbiAgfSk7XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBpZiAocHJvcHMuaXNMYXp5KSB7XG4gICAgICBvYnNlcnZlci5vYnNlcnZlKHRpZGVJbWFnZS52YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvYWRJbWFnZSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgb25CZWZvcmVVbm1vdW50KCgpID0+IHtcbiAgICBvYnNlcnZlci51bm9ic2VydmUodGlkZUltYWdlLnZhbHVlKTtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8aW1nXG4gICAgOmFsdD1cImFsdFwiXG4gICAgOmNsYXNzPVwiWyd0aWRlLWltYWdlJywgQ1NTLk9CSkVDVC5DRU5URVIsIENTUy5PQkpFQ1QuQ09WRVJdXCJcbiAgICByZWY9XCJ0aWRlSW1hZ2VcIlxuICAgIDpzcmM9XCJpc0xhenkgJiYgc3JjID8gc3JjIDogaW1hZ2VEZWZhdWx0XCJcbiAgLz5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+PC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCBnZXRDdXJyZW50SW5zdGFuY2UsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGNoZWNrZWQ/OiBib29sZWFuO1xuICAgIGRhdGFUcmFjaz86IHN0cmluZztcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgIGRhdGFUcmFjazogJycsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBjaGVja2VkID0gcmVmKHByb3BzLmNoZWNrZWQpO1xuXG4gIGNvbnN0IHVuaXF1ZUlkID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmlucHV0SWQgPyBwcm9wcy5pbnB1dElkIDogYHRleHQtaW5wdXQtJHtnZXRDdXJyZW50SW5zdGFuY2UoKT8udWlkIHx8ICcnfWApKTtcblxuICB3YXRjaChwcm9wcywgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgIGlmIChuZXdWYWx1ZS5jaGVja2VkICE9PSBvbGRWYWx1ZS5jaGVja2VkIHx8IG5ld1ZhbHVlLmNoZWNrZWQgIT09IGNoZWNrZWQudmFsdWUpIHtcbiAgICAgIGNoZWNrZWQudmFsdWUgPSBwcm9wcy5jaGVja2VkO1xuICAgIH1cbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pbnB1dC1yYWRpbycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuSEFMRiwgcHJvcHMuZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJ11cIj5cbiAgICA8aW5wdXRcbiAgICAgIDpjaGVja2VkPVwiY2hlY2tlZFwiXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuTk9ORV1cIlxuICAgICAgOmlkPVwidW5pcXVlSWRcIlxuICAgICAgbmFtZT1cIlwiXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdmFsdWU9XCJcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXJhZGlvLWN1c3RvbScsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgY2hlY2tlZCA/IENTUy5CT1JERVIuQ09MT1IuSElHSCA6IENTUy5CT1JERVIuQ09MT1IuREVGQVVMVCxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgY2hlY2tlZCAmJiAnY2hlY2tlZCcsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pbnB1dC1yYWRpby1jaGVjaycsIENTUy5CT1JERVIuUkFESVVTLkZVTEwsIHByb3BzLmNoZWNrZWQgJiYgQ1NTLkJHLlNFQ09OREFSWV1cIiAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJDU1MuRk9OVC5XRUlHSFQuRk9VUl9IVU5EUkVEXCJcbiAgICAgIDpmb3I9XCJ1bmlxdWVJZFwiXG4gICAgPlxuICAgICAge3sgcHJvcHMubGFiZWwgfX1cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LXJhZGlvLmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWN1c3RvbSB7XG4gICAgd2lkdGg6IHZhcigtLXRpZGUtZm9udC0yOCk7XG4gICAgaGVpZ2h0OiB2YXIoLS10aWRlLWZvbnQtMjgpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY2hlY2sge1xuICAgIHdpZHRoOiAxcmVtO1xuICAgIGhlaWdodDogMXJlbTtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuaW1wb3J0IHR5cGUgeyBSYW5nZURhdGEgfSBmcm9tICdAL3R5cGVzL0ZhY2V0UmFuZ2UnO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb24gfSBmcm9tICdAL3R5cGVzL1NlbGVjdCc7XG5pbXBvcnQgdHlwZSB7IFN0cmluZ0lucHV0IH0gZnJvbSAnQC90eXBlcy9Gb3JtJztcbmltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0aW9uTGVuZ3RoLCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG5pbXBvcnQgeyBwcmljZVRvTnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuZXhwb3J0IGNvbnN0IGVycm9yTWVzc2FnZURlZmF1bHQgPSAnUGxlYXNlIGVudGVyIGEgdmFsaWQgdmFsdWUuJztcblxuZXhwb3J0IGNvbnN0IG5vRXJyb3IgPSB7XG4gIG1lc3NhZ2U6ICcnLFxuICB2YWxpZDogdHJ1ZSxcbn0gYXMgUmVhZG9ubHk8VmFsaWRhdGlvblJlc3VsdD47XG5cbmV4cG9ydCBjb25zdCBjaGVja0Zvcm1hdCA9IChmb3JtYXQ6IFJlZ0V4cCkgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgcmVzdWx0ID0gbm9FcnJvcjtcblxuICAgIGlmICghdmFsdWUudHJpbSgpLm1hdGNoKGZvcm1hdCkpIHtcbiAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgbWVzc2FnZTogZXJyb3JNZXNzYWdlRGVmYXVsdCxcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVycm9yTWVzc2FnZSA9IChlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yLCBlcnJvckZyb21SZWY6IFZhbGlkYXRpb25FcnJvcikgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuICBpZiAodHlwZW9mIGVycm9yRnJvbVByb3BzID09PSAnc3RyaW5nJyAmJiBlcnJvckZyb21Qcm9wcy5sZW5ndGggPiAwKSByZXR1cm4gZXJyb3JGcm9tUHJvcHM7XG5cbiAgcmV0dXJuIHR5cGVvZiBlcnJvckZyb21SZWYgPT09ICdzdHJpbmcnICYmIGVycm9yRnJvbVJlZi5sZW5ndGggPiAwID8gZXJyb3JGcm9tUmVmIDogZXJyb3JNZXNzYWdlRGVmYXVsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGaWVsZEhhc0Vycm9yID0gKGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3IsIGVycm9yRnJvbVJlZjogVmFsaWRhdGlvbkVycm9yKSA9PlxuICBlcnJvckZyb21Qcm9wcyAhPT0gZmFsc2UgfHwgZXJyb3JGcm9tUmVmICE9PSBmYWxzZTtcblxuZXhwb3J0IGNvbnN0IGdldEZpZWxkTGVuZ3RoSXNWYWxpZCA9ICh7IG1heGxlbmd0aCwgbWlubGVuZ3RoLCB2YWx1ZSB9OiBWYWxpZGF0aW9uTGVuZ3RoKSA9PiB7XG4gIGNvbnN0IHRvb1Nob3J0ID0gbWF4bGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heGxlbmd0aDtcbiAgY29uc3QgdG9vTG9uZyA9IG1pbmxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5sZW5ndGg7XG5cbiAgcmV0dXJuICF0b29TaG9ydCAmJiAhdG9vTG9uZztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNYXhSYW5nZUlzVmFsaWQgPSAoeyBtaW4gfTogUGljazxSYW5nZURhdGEsICdtaW4nPiwgdHlwZT86ICdwcmljZScpID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IG5ld01heDogbnVtYmVyIHwgbnVsbCA9IHR5cGUgPT09ICdwcmljZScgPyBwcmljZVRvTnVtYmVyKHZhbHVlKSA6IE51bWJlcih2YWx1ZSk7XG4gICAgbmV3TWF4ID0gIWlzTmFOKG5ld01heCkgPyBuZXdNYXggOiBudWxsO1xuICAgIGlmIChtaW4gJiYgbmV3TWF4KSB7XG4gICAgICBpZiAobmV3TWF4ID49IG1pbikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiBgTXVzdCBiZSBncmVhdGVyIHRoYW4gbWluYCxcbiAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub0Vycm9yO1xuICAgIH1cbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNaW5SYW5nZUlzVmFsaWQgPSAoeyBtYXggfTogUGljazxSYW5nZURhdGEsICdtYXgnPiwgdHlwZT86ICdwcmljZScpID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IG5ld01pbjogbnVtYmVyIHwgbnVsbCA9IHR5cGUgPT09ICdwcmljZScgPyBwcmljZVRvTnVtYmVyKHZhbHVlKSA6IE51bWJlcih2YWx1ZSk7XG4gICAgbmV3TWluID0gIWlzTmFOKG5ld01pbikgPyBuZXdNaW4gOiBudWxsO1xuICAgIGlmIChtYXggJiYgbmV3TWluKSB7XG4gICAgICBpZiAobmV3TWluIDw9IG1heCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiBgTXVzdCBiZSBsZXNzIHRoYW4gbWF4YCxcbiAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub0Vycm9yO1xuICAgIH1cbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RPcHRpb25zRnJvbVN0cmluZ3MgPSAoc3RyaW5nczogc3RyaW5nW10pID0+XG4gIHN0cmluZ3MubWFwKFxuICAgIChvcHRpb24pID0+XG4gICAgICAoe1xuICAgICAgICBsYWJlbDogb3B0aW9uLFxuICAgICAgICB2YWx1ZTogb3B0aW9uLFxuICAgICAgfSBhcyBTZWxlY3RPcHRpb24pXG4gICk7XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gPSAoe1xuICBlcnJvcixcbiAgZXJyb3JGcm9tUHJvcHMsXG4gIG1heGxlbmd0aCxcbiAgbWlubGVuZ3RoLFxuICB2YWxpZGF0b3JzLFxuICB2YWx1ZSxcbn06IHtcbiAgZXJyb3I6IFJlZjxWYWxpZGF0aW9uRXJyb3I+O1xuICBlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yO1xuICBtYXhsZW5ndGg/OiBudW1iZXI7XG4gIG1pbmxlbmd0aD86IG51bWJlcjtcbiAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICB2YWx1ZTogUmVmPHN0cmluZz47XG59KSA9PiB7XG4gIC8vIGVycm9yIGluIHByb3BzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGF0aW9uIGVycm9yXG5cbiAgZXJyb3IudmFsdWUgPSBlcnJvckZyb21Qcm9wcyA/IGVycm9yRnJvbVByb3BzIDogZmFsc2U7XG5cbiAgaWYgKCFlcnJvci52YWx1ZSAmJiB2YWxpZGF0b3JzKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRlUHJvcGVydHkodmFsdWUudmFsdWUsIHZhbGlkYXRvcnMpO1xuXG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICBlcnJvci52YWx1ZSA9IHZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWVycm9yLnZhbHVlICYmIChtYXhsZW5ndGggfHwgbWlubGVuZ3RoKSkge1xuICAgIGNvbnN0IGxlbmd0aHZhbGlkYXRpb24gPSB2YWxpZGF0ZUxlbmd0aCh7XG4gICAgICBtYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGgsXG4gICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgfSk7XG5cbiAgICBpZiAoIWxlbmd0aHZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIGVycm9yLnZhbHVlID0gbGVuZ3RodmFsaWRhdGlvbi5tZXNzYWdlO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRmllbGRzRnJvbVJlZnMoZmllbGRzOiB7IFtrZXk6IHN0cmluZ106IFJlZjxTdHJpbmdJbnB1dCB8IG51bGw+IH0pIHtcbiAgbGV0IHZhbGlkID0gdHJ1ZTtcblxuICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZHMpIHtcbiAgICBpZiAoZmllbGRzW2tleV0udmFsdWU/LnJlcXVpcmVkKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZpZWxkc1trZXldLnZhbHVlPy52YWx1ZTtcbiAgICAgIHZhbGlkID0gdmFsaWQgJiYgISF2YWx1ZSAmJiB2YWx1ZS50cmltKCkgIT09ICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9yID0gZmllbGRzW2tleV0udmFsdWU/LmVycm9yO1xuICAgIHZhbGlkID0gdmFsaWQgJiYgIWVycm9yO1xuICB9XG5cbiAgcmV0dXJuIHZhbGlkO1xufVxuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVMZW5ndGggPSAoeyBtYXhsZW5ndGgsIG1pbmxlbmd0aCwgdmFsdWUgfTogVmFsaWRhdGlvbkxlbmd0aCk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICBjb25zdCByZXNwb25zZSA9IHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcblxuICByZXNwb25zZS52YWxpZCA9IGdldEZpZWxkTGVuZ3RoSXNWYWxpZCh7XG4gICAgbWF4bGVuZ3RoLFxuICAgIG1pbmxlbmd0aCxcbiAgICB2YWx1ZSxcbiAgfSk7XG5cbiAgaWYgKHJlc3BvbnNlLnZhbGlkKSByZXR1cm4gcmVzcG9uc2U7XG5cbiAgcmVzcG9uc2UubWVzc2FnZSA9IGVycm9yTWVzc2FnZURlZmF1bHQ7XG5cbiAgaWYgKG1heGxlbmd0aCAmJiBtaW5sZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIHZhbHVlIGJldHdlZW4gJHttaW5sZW5ndGh9IGFuZCAke21heGxlbmd0aH0gY2hhcmFjdGVycyBpbiBsZW5ndGguYDtcbiAgfSBlbHNlIGlmIChtYXhsZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIHZhbHVlIG5vIG1vcmUgdGhhbiAke21heGxlbmd0aH0gY2hhcmFjdGVycyBpbiBsZW5ndGguYDtcbiAgfSBlbHNlIGlmIChtaW5sZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIHZhbHVlIG5vIGxlc3MgdGhhbiAke21pbmxlbmd0aH0gY2hhcmFjdGVycyBpbiBsZW5ndGguYDtcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlOiBzdHJpbmcsIHZhbGlkYXRvcnM6ICgodmFsdWU6IHN0cmluZykgPT4gVmFsaWRhdGlvblJlc3VsdClbXSk6IFZhbGlkYXRpb25SZXN1bHQge1xuICBmb3IgKGNvbnN0IHZhbGlkYXRvciBvZiB2YWxpZGF0b3JzKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRvcih2YWx1ZSk7XG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICByZXR1cm4gdmFsaWRhdGlvbjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xufVxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgZ2V0Q3VycmVudEluc3RhbmNlLCBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RGaWVsZCB9IGZyb20gJ0AvdHlwZXMvRmllbGQnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IGdldEZpZWxkSGFzRXJyb3IsIGdldEVycm9yTWVzc2FnZSB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIGludGVyZmFjZSBQcm9wcyBleHRlbmRzIFNlbGVjdEZpZWxkIHtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICB9XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiAnJyxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHJlcXVpcmVkID0gcmVmKHByb3BzLnJlcXVpcmVkKTtcbiAgY29uc3QgdmFsdWUgPSByZWYocHJvcHMudmFsdWUpO1xuXG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IGdldEVycm9yTWVzc2FnZShwcm9wcy5lcnJvciwgZXJyb3IudmFsdWUpKTtcbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBoYXNFcnJvciA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKSk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHZhbHVlLnZhbHVlID09PSAnJyk7XG5cbiAgY29uc3QgdW5pcXVlSWQgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuaW5wdXRJZCA/IHByb3BzLmlucHV0SWQgOiBgdGV4dC1pbnB1dC0ke2dldEN1cnJlbnRJbnN0YW5jZSgpPy51aWQgfHwgJyd9YCkpO1xuXG4gIGNvbnN0IGV4cGFuZE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgTW91c2VFdmVudCgnbW91c2Vkb3duJyk7XG4gICAgaW5wdXQ/LnZhbHVlPy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcbiAgfTtcblxuICB3YXRjaChwcm9wcywgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgIGlmIChuZXdWYWx1ZS52YWx1ZSAhPT0gb2xkVmFsdWUudmFsdWUgfHwgbmV3VmFsdWUudmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICB2YWx1ZS52YWx1ZSA9IHByb3BzLnZhbHVlO1xuICAgIH1cbiAgfSk7XG5cbiAgZGVmaW5lRXhwb3NlKHsgZXJyb3IsIHZhbHVlIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXNlbGVjdCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBoYXNFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1ib3JkZXInLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgcHJvcHMuZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogJycsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBdXCJcbiAgICAgIEBjbGljaz1cImV4cGFuZE9wdGlvbnNcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlNJWkUuVFdFTFZFXSA6IENTUy5GT05ULlNJWkUuU0lYVEVFTixcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTklORy5MRUZUXzAsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLlRPUC5IQUxGLFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5MRUZULk9ORSxcbiAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBDU1MuRk9OVC5XRUlHSFQuRklWRV9IVU5EUkVELFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpmb3I9XCJ1bmlxdWVJZFwiXG4gICAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuUEFERElORy5CT1RUT00uSEFMRiwgQ1NTLlBBRERJTkcuWC5PTkUsIENTUy5XSURUSC5GVUxMLCBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VEXVwiXG4gICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgIDppZD1cInVuaXF1ZUlkXCJcbiAgICAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgICA+XG4gICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIDpzZWxlY3RlZD1cInZhbHVlID09PSBvcHRpb24udmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiBvcHRpb25zXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUE9TSVRJT04uQUJTT0xVVEUsIENTUy5QT1NJVElPTklORy5SSUdIVF8wLCBDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVhQQU5EX01PUkVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5NQVJHSU4uTEVGVC5PTkVdXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5zdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlNJWkUuVFdFTFZFLCBDU1MuRk9OVC5XRUlHSFQuRklWRV9IVU5EUkVEXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHByb3BzLnN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICBzZWxlY3Qge1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cblxuICBsYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgbGFiZWw6bm90KC5taW5pbGFiZWwpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3IgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3Q6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1vbi1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciBvcHRpb24ge1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG5cbiAgc2VsZWN0IHtcbiAgICBwYWRkaW5nLXRvcDogMjdweDtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBURVhUX0lOUFVUX1RZUEUgPSB7XG4gIERBVEU6ICdkYXRlJyxcbiAgREFURVRJTUVfTE9DQUw6ICdkYXRldGltZS1sb2NhbCcsXG4gIEVNQUlMOiAnZW1haWwnLFxuICBNT05USDogJ21vbnRoJyxcbiAgTlVNQkVSOiAnbnVtYmVyJyxcbiAgUEFTU1dPUkQ6ICdwYXNzd29yZCcsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFRFTDogJ3RlbCcsXG4gIFRFWFQ6ICd0ZXh0JyxcbiAgVElNRTogJ3RpbWUnLFxuICBVUkw6ICd1cmwnLFxuICBXRUVLOiAnd2VlaycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBUZXh0SW5wdXRUeXBlID0gKHR5cGVvZiBURVhUX0lOUFVUX1RZUEUpW2tleW9mIHR5cGVvZiBURVhUX0lOUFVUX1RZUEVdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIGdldEN1cnJlbnRJbnN0YW5jZSwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBGb3JtVmFsdWVUcmFuc2Zvcm1lciB9IGZyb20gJ0AvdHlwZXMvRm9ybSc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgVGV4dElucHV0VHlwZSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgVEVYVF9JTlBVVF9UWVBFIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IsIGhhbmRsZUZpZWxkVmFsaWRhdGlvbiB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYXV0b2NvbXBsZXRlPzogYm9vbGVhbjtcbiAgICBkYXRhVHJhY2s/OiBzdHJpbmc7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGVycm9yPzogVmFsaWRhdGlvbkVycm9yO1xuICAgIGhhc0NsZWFyPzogYm9vbGVhbjtcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIG1heGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBtaW5sZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHByZWZpeD86IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgc3VmZml4Pzogc3RyaW5nO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHRyYW5zZm9ybVZhbHVlPzogRm9ybVZhbHVlVHJhbnNmb3JtZXI7XG4gICAgdHlwZT86IFRleHRJbnB1dFR5cGU7XG4gICAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYXV0b2NvbXBsZXRlOiBmYWxzZSxcbiAgICBkYXRhVHJhY2s6ICcnLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaGFzQ2xlYXI6IGZhbHNlLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbWF4bGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbWlubGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgcHJlZml4OiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1ZmZpeDogdW5kZWZpbmVkLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdHJhbnNmb3JtVmFsdWU6IHVuZGVmaW5lZCxcbiAgICB0eXBlOiBURVhUX0lOUFVUX1RZUEUuVEVYVCxcbiAgICB2YWxpZGF0b3JzOiB1bmRlZmluZWQsXG4gICAgdmFsdWU6ICcnLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBzaG93UGFzc3dvcmQgPSByZWYoZmFsc2UpO1xuICBjb25zdCB2YWx1ZSA9IHJlZihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiBwcm9wcy5sYWJlbCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0NsZWFyID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuaGFzQ2xlYXIgJiYgdmFsdWUudmFsdWUpO1xuICBjb25zdCBoYXNFcnJvciA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKSk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHZhbHVlLnZhbHVlID09PSAnJyk7XG4gIGNvbnN0IHR5cGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRCAmJiBzaG93UGFzc3dvcmQudmFsdWUgPT09IHRydWUgPyBURVhUX0lOUFVUX1RZUEUuVEVYVCA6IHByb3BzLnR5cGVcbiAgKTtcbiAgY29uc3QgdW5pcXVlSWQgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuaW5wdXRJZCA/IHByb3BzLmlucHV0SWQgOiBgdGV4dC1pbnB1dC0ke2dldEN1cnJlbnRJbnN0YW5jZSgpPy51aWQgfHwgJyd9YCkpO1xuXG4gIGNvbnN0IGhhbmRsZUNsZWFyID0gKCkgPT4ge1xuICAgIHZhbHVlLnZhbHVlID0gJyc7XG4gICAgaW5wdXQudmFsdWU/LmZvY3VzKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gICAgaGFuZGxlVmFsaWRhdGlvbigpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUlucHV0ID0gKCkgPT4ge1xuICAgIGlmIChwcm9wcy50cmFuc2Zvcm1WYWx1ZSkge1xuICAgICAgY29uc3QgZGlnaXRzID0gdmFsdWUudmFsdWUubWF0Y2goL1xcZC9nKT8uam9pbignJykgfHwgdW5kZWZpbmVkO1xuXG4gICAgICB2YWx1ZS52YWx1ZSA9IGRpZ2l0cyA/IHByb3BzLnRyYW5zZm9ybVZhbHVlKGRpZ2l0cykgOiAnJztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsaWRhdGlvbiA9ICgpID0+IHtcbiAgICBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgdmFsaWRhdG9yczogcHJvcHMudmFsaWRhdG9ycyxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZVZhbHVlID0gKG5ld1ZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgIHByb3BzLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZS52YWx1ZSAhPT0gb2xkVmFsdWUudmFsdWUgfHwgbmV3VmFsdWUudmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gcHJvcHMudmFsdWU7XG4gICAgICB9XG4gICAgfSxcbiAgICB7IGRlZXA6IHRydWUgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7IGVycm9yLCB1cGRhdGVWYWx1ZSwgdmFsdWUgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtdGV4dCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBoYXNFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1ib3JkZXInLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgaGFzQ2xlYXIgPyBbQ1NTLlBBRERJTkcuUklHSFQuSEFMRiwgQ1NTLlBBRERJTkcuTEVGVC5PTkVdIDogW0NTUy5QQURESU5HLlguT05FXSxcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgICBwcm9wcy5kaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXRleHQtcHJlZml4JywgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCwgaGFzTWluaWxhYmVsID8gJycgOiAnb2Zmc2V0J11cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5wcmVmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMucHJlZml4IH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCJcbiAgICAgICAgICBAY2xpY2sucHJldmVudD1cImlucHV0Py5mb2N1cygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlNJWkUuVFdFTFZFXSA6IENTUy5GT05ULlNJWkUuU0lYVEVFTixcbiAgICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgICAgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRCxcbiAgICAgICAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICA6Zm9yPVwidW5pcXVlSWRcIlxuICAgICAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIDphdXRvY29tcGxldGU9XCJhdXRvY29tcGxldGUgPyAnb24nIDogJ29mZidcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VEXVwiXG4gICAgICAgICAgICA6ZGF0YS10cmFjaz1cInByb3BzLmRhdGFUcmFja1wiXG4gICAgICAgICAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgICAgICAgICA6bWF4bGVuZ3RoPVwicHJvcHMubWF4bGVuZ3RoXCJcbiAgICAgICAgICAgIDptaW5sZW5ndGg9XCJwcm9wcy5taW5sZW5ndGhcIlxuICAgICAgICAgICAgOm5hbWU9XCJwcm9wcy5uYW1lXCJcbiAgICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICAgIDpyZXF1aXJlZD1cInByb3BzLnJlcXVpcmVkXCJcbiAgICAgICAgICAgIDp0eXBlPVwidHlwZVwiXG4gICAgICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgICBAaW5wdXQ9XCJoYW5kbGVJbnB1dFwiXG4gICAgICAgICAgICA6aWQ9XCJ1bmlxdWVJZFwiXG4gICAgICAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtdGV4dC1zdWZmaXgnLCAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULCBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnN1ZmZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy5zdWZmaXggfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUEFERElORy5ZLkhBTEYsIENTUy5QQURESU5HLkZVTEwuSEFMRiwgQ1NTLkNVUlNPUi5QT0lOVEVSXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIEBjbGljaz1cImhhbmRsZUNsZWFyXCJcbiAgICAgICAgdi1pZj1cImhhc0NsZWFyICYmIHByb3BzLnR5cGUgIT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFwiXG4gICAgICAvPlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QQURESU5HLlkuSEFMRiwgQ1NTLlBBRERJTkcuRlVMTC5IQUxGLCBDU1MuQ1VSU09SLlBPSU5URVJdXCJcbiAgICAgICAgOmljb249XCJJQ09OLlZJU0lCSUxJVFlcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICBAY2xpY2s9XCJzaG93UGFzc3dvcmQgPSAhc2hvd1Bhc3N3b3JkXCJcbiAgICAgICAgdi1pZj1cInByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLk1BUkdJTi5MRUZULk9ORV1cIlxuICAgICAgdi1pZj1cInByb3BzLnN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW11cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuU0laRS5UV0VMVkUsIENTUy5GT05ULldFSUdIVC5GSVZFX0hVTkRSRURdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogcHJvcHMuc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIGxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICBsYWJlbDpub3QoLm1pbmlsYWJlbCksXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4Om5vdCgub2Zmc2V0KSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXg6bm90KC5vZmZzZXQpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4LFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLW9uLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dCBpbnB1dCB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1mb3JlZ3JvdW5kKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCBnZXRDdXJyZW50SW5zdGFuY2UsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IsIGhhbmRsZUZpZWxkVmFsaWRhdGlvbiB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGF0YVRyYWNrPzogc3RyaW5nO1xuICAgIGVycm9yPzogVmFsaWRhdGlvbkVycm9yO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG1pbmxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICByb3dzPzogbnVtYmVyO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGF0YVRyYWNrOiAnJyxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbWF4bGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbWlubGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICByb3dzOiA4LFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdmFsdWU6ICcnLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCB2YWx1ZSA9IHJlZihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09ICcnKTtcbiAgY29uc3QgdW5pcXVlSWQgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuaW5wdXRJZCA/IHByb3BzLmlucHV0SWQgOiBgdGV4dC1pbnB1dC0ke2dldEN1cnJlbnRJbnN0YW5jZSgpPy51aWQgfHwgJyd9YCkpO1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVZhbGlkYXRpb24gPSAoKSA9PiB7XG4gICAgcmV0dXJuIGhhbmRsZUZpZWxkVmFsaWRhdGlvbih7XG4gICAgICBlcnJvcixcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICB2YWx1ZSxcbiAgICB9KTtcbiAgfTtcblxuICB3YXRjaChwcm9wcywgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgIGlmIChuZXdWYWx1ZS52YWx1ZSAhPT0gb2xkVmFsdWUudmFsdWUgfHwgbmV3VmFsdWUudmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICB2YWx1ZS52YWx1ZSA9IHByb3BzLnZhbHVlO1xuICAgIH1cbiAgfSk7XG5cbiAgZGVmaW5lRXhwb3NlKHsgZXJyb3IsIHZhbHVlIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIlsndGlkZS1pbnB1dC10ZXh0YXJlYScsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuUVVBUlRFUiwgaGFzRXJyb3IgJiYgJ2Vycm9yJ11cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCcsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuUEFERElORy5MRUZULk9ORSxcbiAgICAgICAgQ1NTLlBBRERJTkcuVE9QLkhBTEYsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8bGFiZWxcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuU0laRS5UV0VMVkVdIDogQ1NTLkZPTlQuU0laRS5TSVhURUVOLFxuICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRCxcbiAgICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICAgIF1cIlxuICAgICAgICA6Zm9yPVwidW5pcXVlSWRcIlxuICAgICAgICByZWY9XCJsYWJlbFwiXG4gICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICA+XG4gICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICA8L2xhYmVsPlxuXG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMXVwiXG4gICAgICAgIDpkYXRhLXRyYWNrPVwicHJvcHMuZGF0YVRyYWNrXCJcbiAgICAgICAgOm1heGxlbmd0aD1cInByb3BzLm1heGxlbmd0aFwiXG4gICAgICAgIDptaW5sZW5ndGg9XCJwcm9wcy5taW5sZW5ndGhcIlxuICAgICAgICA6bmFtZT1cInByb3BzLm5hbWVcIlxuICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgIDpyZXF1aXJlZD1cInByb3BzLnJlcXVpcmVkXCJcbiAgICAgICAgOnJvd3M9XCJwcm9wcy5yb3dzXCJcbiAgICAgICAgQGNoYW5nZT1cImhhbmRsZVZhbGlkYXRpb25cIlxuICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgOmlkPVwidW5pcXVlSWRcIlxuICAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5NQVJHSU4uTEVGVC5PTkVdXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5zdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5TSVpFLlRXRUxWRSwgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRF1cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBwcm9wcy5zdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cbjwvc3R5bGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIGxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICBsYWJlbDpub3QoLm1pbmlsYWJlbCksXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLXByZWZpeDpub3QoLm9mZnNldCksXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLXN1ZmZpeDpub3QoLm9mZnNldCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtcHJlZml4LFxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1zdWZmaXgge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLW9uLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3IgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYTpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEgdGV4dGFyZWEge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1mb3JlZ3JvdW5kKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG4gICAgaHJlZj86IHN0cmluZztcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaWNvblRyYWlsaW5nPzogSWNvbjtcbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVsZW1lbnQ6IEVMRU1FTlQuTElOSyxcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpY29uVHJhaWxpbmc6IHVuZGVmaW5lZCxcbiAgICBpc05ld1RhYjogZmFsc2UsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgaGFzSWNvbiA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmljb25MZWFkaW5nIHx8IHByb3BzLmljb25UcmFpbGluZyk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gJ3RpZGUtYnV0dG9uLWFzLWxpbmsnIDogJ3RpZGUtbGluaycsXG4gICAgICBoYXNJY29uXG4gICAgICAgID8gW0NTUy5ESVNQTEFZLklOTElORV9GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLkhBTEZdXG4gICAgICAgIDogW0NTUy5GT05ULldFSUdIVC5TRVZFTl9IVU5EUkVELCBDU1MuVU5ERVJMSU5FLk9OXSxcbiAgICBdXCJcbiAgICA6aHJlZj1cInByb3BzLmhyZWZcIlxuICAgIDp0YXJnZXQ9XCJwcm9wcy5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICA6aXM9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBFTEVNRU5ULkxJTksgOiBFTEVNRU5ULkJVVFRPTlwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDppY29uPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULldFSUdIVC5TRVZFTl9IVU5EUkVELCBDU1MuVU5ERVJMSU5FLk9OXVwiXG4gICAgICB2LWlmPVwiaGFzSWNvblwiXG4gICAgPlxuICAgICAge3sgcHJvcHMubGFiZWwgfX1cbiAgICA8L2Rpdj5cblxuICAgIDx0ZW1wbGF0ZSB2LWVsc2U+XG4gICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgIDwvdGVtcGxhdGU+XG5cbiAgICA8VGlkZUljb25cbiAgICAgIDppY29uPVwicHJvcHMuaWNvblRyYWlsaW5nXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uVHJhaWxpbmdcIlxuICAgIC8+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG9uTW91bnRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaXNPcGVuOiBib29sZWFuO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2xvc2UnXSk7XG5cbiAgY29uc3QgaXNPcGVuID0gcmVmKHByb3BzLmlzT3Blbik7XG4gIGNvbnN0IHNhdmVkU2Nyb2xsUG9zaXRpb24gPSByZWY8bnVtYmVyIHwgbnVsbD4obnVsbCk7IC8vIFRPRE86IHJlcGxhY2UgYm9keSBzY3JvbGwgbG9jayB3aXRoIGdsb2JhbCBzdHJ1Y3R1cmU/XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgaXNPcGVuLnZhbHVlID0gZmFsc2U7XG5cbiAgICB1cGRhdGVNb2RhbERpc3BsYXkoKTtcbiAgICBlbWl0KCdjbG9zZScsIGV2ZW50KTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVNb2RhbERpc3BsYXkgPSAoKSA9PiB7XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgc2F2ZWRTY3JvbGxQb3NpdGlvbi52YWx1ZSA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgc2F2ZWRTY3JvbGxQb3NpdGlvbi52YWx1ZSAmJiB3aW5kb3cuc2Nyb2xsVG8oMCwgc2F2ZWRTY3JvbGxQb3NpdGlvbi52YWx1ZSk7XG5cbiAgICAgIGFkZE9wZW5MaXN0ZW5lcnMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICcnO1xuXG4gICAgICByZW1vdmVPcGVuTGlzdGVuZXJzKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBoYW5kbGVDbG9zZShldmVudCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGFkZE9wZW5MaXN0ZW5lcnMgPSAoKSA9PiB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duKTtcbiAgfTtcblxuICBjb25zdCByZW1vdmVPcGVuTGlzdGVuZXJzID0gKCkgPT4ge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlS2V5RG93bik7XG4gIH07XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICB1cGRhdGVNb2RhbERpc3BsYXkoKTtcbiAgfSk7XG5cbiAgd2F0Y2gocHJvcHMsIChuZXdWYWx1ZSkgPT4ge1xuICAgIGlzT3Blbi52YWx1ZSA9IG5ld1ZhbHVlLmlzT3BlbjtcblxuICAgIHVwZGF0ZU1vZGFsRGlzcGxheSgpO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxUZWxlcG9ydCB0bz1cImJvZHlcIj5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLW1vZGFsLXdyYXBwZXInLFxuICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5QT1NJVElPTklORy5UT1BfMCxcbiAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkxFRlRfMCxcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgcHJvcHMuaXNPcGVuID8gJ2FjdGl2ZScgOiBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWS5ISURERU4sXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1tb2RhbC1iZycsIENTUy5QT1NJVElPTi5BQlNPTFVURSwgQ1NTLldJRFRILkZVTEwsIENTUy5IRUlHSFQuRlVMTF1cIlxuICAgICAgICA6c3R5bGU9XCJ7ICctLXRpZGUtbW9kYWwtd2lkdGgnOiBwcm9wcy53aWR0aCB9XCJcbiAgICAgICAgQGNsaWNrLnNlbGY9XCJoYW5kbGVDbG9zZVwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1tb2RhbCcsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5PTkUsXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgICBDU1MuU0hBRE9XLkJPVFRPTSxcbiAgICAgICAgXVwiXG4gICAgICA+XG4gICAgICAgIDxoZWFkZXJcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1tb2RhbC1oZWFkZXInLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgICBDU1MuUEFERElORy5ZLk9ORSxcbiAgICAgICAgICAgIENTUy5QQURESU5HLlguVFdPLFxuICAgICAgICAgICAgQ1NTLkJPUkRFUi5CT1RUT00uT05FLFxuICAgICAgICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PTiwgQ1NTLkZPTlQuU0laRS5UV0VOVFksIENTUy5GT05ULldFSUdIVC5TRVZFTl9IVU5EUkVEXVwiXG4gICAgICAgICAgICB2LWlmPVwidGl0bGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHRpdGxlIH19XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBPU0lUSU9OLkFCU09MVVRFLCBDU1MuUE9TSVRJT05JTkcuUklHSFRfMCwgQ1NTLk1BUkdJTi5SSUdIVC5UV09dXCJcbiAgICAgICAgICAgIEBjbGljaz1cImhhbmRsZUNsb3NlXCJcbiAgICAgICAgICAgIHRpdGxlPVwiQ2xvc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxUaWRlSWNvbiA6aWNvbj1cIklDT04uQ0xPU0VcIiAvPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1tb2RhbC1jb250ZW50JywgQ1NTLlBBRERJTkcuRlVMTC5UV08sIENTUy5PVkVSRkxPVy5ZLkFVVE9dXCI+XG4gICAgICAgICAgPHNsb3QgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCIkc2xvdHMuZm9vdGVyXCI+XG4gICAgICAgICAgPGZvb3RlclxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAndGlkZS1iZy1zdXJmYWNlJyxcbiAgICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLlNUSUNLWSxcbiAgICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkxFRlRfMCxcbiAgICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkJPVFRPTV8wLFxuICAgICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgICBDU1MuQVhJUzEuRU5ELFxuICAgICAgICAgICAgICBDU1MuR0FQLk9ORSxcbiAgICAgICAgICAgICAgQ1NTLlBBRERJTkcuWC5UV08sXG4gICAgICAgICAgICAgIENTUy5QQURESU5HLlkuT05FLFxuICAgICAgICAgICAgICBDU1MuU0hBRE9XLlRPUCxcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzbG90IG5hbWU9XCJmb290ZXJcIiAvPlxuICAgICAgICAgIDwvZm9vdGVyPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvVGVsZXBvcnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1tb2RhbCB7XG4gICAgd2lkdGg6IHZhcigtLXRpZGUtbW9kYWwtd2lkdGgpO1xuICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMnJlbSk7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gMnJlbSk7XG4gICAgYm94LXNoYWRvdzogMHB4IDEwcHggMjVweCAwcHggcmdiYSgxOCwgNDMsIDU4LCAwLjIpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDB2aCk7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm07XG4gIH1cblxuICAudGlkZS1tb2RhbC1iZyB7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDBweCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwKTtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tkcm9wLWZpbHRlciwgYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuXG4gIC5hY3RpdmUgLnRpZGUtbW9kYWwge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgfVxuXG4gIC5hY3RpdmUgLnRpZGUtbW9kYWwtYmcge1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtdHJhbnNwYXJlbnQtNDAwKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IFRpZGVCdXR0b25QYWdpbmF0aW9uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uUGFnaW5hdGlvbi52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgcGFnZUN1cnJlbnQ/OiBudW1iZXI7XG4gICAgcGFnZVRvdGFsPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgcGFnZUN1cnJlbnQ6IDEsXG4gICAgcGFnZVRvdGFsOiAxLFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjaGFuZ2UnXSk7XG5cbiAgY29uc3QgcGFnZUN1cnJlbnQgPSByZWYocHJvcHMucGFnZUN1cnJlbnQpO1xuXG4gIGNvbnN0IHBhZ2luYXRpb25CdXR0b25zID0gY29tcHV0ZWQoKCkgPT4gbmV3IEFycmF5KHByb3BzLnBhZ2VUb3RhbCkuZmlsbCgnJykubWFwKChlbXB0eSwgaW5kZXgpID0+IGluZGV4ICsgMSkpO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGV2ZW50OiBFdmVudCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIHBhZ2VDdXJyZW50LnZhbHVlID0gaW5kZXg7XG5cbiAgICBlbWl0KCdjaGFuZ2UnLCBldmVudCwgaW5kZXgpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb25cbiAgICA6Y2xhc3M9XCJbJ3RpZGUtcGFnaW5hdGlvbicsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgPlxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmRpc2FibGVkPVwicGFnZUN1cnJlbnQgPT09IDFcIlxuICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgIEBjbGljaz1cIihldmVudDogRXZlbnQpID0+IGhhbmRsZUNsaWNrKGV2ZW50LCBwYWdlQ3VycmVudCAtIDEpXCJcbiAgICAvPlxuXG4gICAgPHVsIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiPlxuICAgICAgPGxpXG4gICAgICAgIDprZXk9XCJwYWdpbmF0aW9uQnV0dG9uXCJcbiAgICAgICAgdi1mb3I9XCJwYWdpbmF0aW9uQnV0dG9uIGluIHBhZ2luYXRpb25CdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25QYWdpbmF0aW9uXG4gICAgICAgICAgOmRpc2FibGVkPVwicGFnZUN1cnJlbnQgPT09IHBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICAgIDpsYWJlbD1cInBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cIihldmVudDogRXZlbnQpID0+IGhhbmRsZUNsaWNrKGV2ZW50LCBwYWdpbmF0aW9uQnV0dG9uKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpkaXNhYmxlZD1cInBhZ2VDdXJyZW50ID09PSBwYWdpbmF0aW9uQnV0dG9uc1twYWdpbmF0aW9uQnV0dG9ucy5sZW5ndGggLSAxXVwiXG4gICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgIEBjbGljaz1cIihldmVudDogRXZlbnQpID0+IGhhbmRsZUNsaWNrKGV2ZW50LCBwYWdlQ3VycmVudCArIDEpXCJcbiAgICAvPlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB0eXBlIHsgVGFiIH0gZnJvbSAnQC90eXBlcy9UYWInO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGFjdGl2ZVRhYkluaXRpYWw/OiBudW1iZXI7XG4gICAgdGFiczogVGFiW107XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhY3RpdmVUYWJJbml0aWFsOiAwLFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjaGFuZ2UnXSk7XG5cbiAgY29uc3QgYWN0aXZlVGFiID0gcmVmKHByb3BzLmFjdGl2ZVRhYkluaXRpYWwpO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGV2ZW50OiBFdmVudCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGFjdGl2ZVRhYi52YWx1ZSA9IGluZGV4O1xuXG4gICAgZW1pdCgnY2hhbmdlJywgZXZlbnQsIGluZGV4KTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS10YWJzJyxcbiAgICAgIENTUy5CRy5TVVJGQUNFLlZBUklBTlQsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgIENTUy5QQURESU5HLkZVTEwuUVVBUlRFUixcbiAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICBdXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtdGFicy10YWInLFxuICAgICAgICBpbmRleCA9PT0gYWN0aXZlVGFiXG4gICAgICAgICAgPyBbQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULCBDU1MuU0hBRE9XLkJPVFRPTV1cbiAgICAgICAgICA6IFsnaW5hY3RpdmUnLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdLFxuICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICAgICAgICBDU1MuUEFERElORy5ZLlFVQVJURVIsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBDU1MuRk9OVC5XRUlHSFQuU0lYX0hVTkRSRUQsXG4gICAgICAgIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICAgICAgXVwiXG4gICAgICA6ZGF0YS10cmFjaz1cInRhYi5kYXRhVHJhY2sgfHwgdW5kZWZpbmVkXCJcbiAgICAgIDprZXk9XCJ0YWIubGFiZWxcIlxuICAgICAgQGNsaWNrPVwiKGV2ZW50OiBFdmVudCkgPT4gaGFuZGxlQ2xpY2soZXZlbnQsIGluZGV4KVwiXG4gICAgICB2LWZvcj1cIih0YWIsIGluZGV4KSBpbiBwcm9wcy50YWJzXCJcbiAgICA+XG4gICAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkZPTlQuV0VJR0hULlNJWF9IVU5EUkVEXVwiPlxuICAgICAgICB7eyB0YWIubGFiZWwgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5XRUlHSFQuU0lYX0hVTkRSRURdXCJcbiAgICAgICAgdi1pZj1cInRhYi5jb3VudCAmJiB0YWIuY291bnQgPiAwXCJcbiAgICAgID5cbiAgICAgICAgKHt7IHRhYi5jb3VudCB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS10YWJzIHtcbiAgICBtYXgtd2lkdGg6IDIzLjNyZW07XG4gIH1cblxuICAudGlkZS10YWJzLXRhYiB7XG4gICAgZmxleDogMTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAuaW5hY3RpdmU6bm90KDpob3Zlcikge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgfVxuXG4gIC5pbmFjdGl2ZTpob3ZlciB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuXG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xuICAgIGRpc2FibGVkOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICBpc0FjdGl2ZToge1xuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBpc0FjdGl2ZSA9IHJlZihwcm9wcy5pc0FjdGl2ZSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgaWYgKCFwcm9wcy5kaXNhYmxlZCkge1xuICAgICAgaXNBY3RpdmUudmFsdWUgPSAhaXNBY3RpdmUudmFsdWU7XG5cbiAgICAgIGVtaXQoJ2NoYW5nZScsIGV2ZW50LCBpc0FjdGl2ZS52YWx1ZSk7XG4gICAgfVxuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLXRvZ2dsZScsXG4gICAgICBwcm9wcy5pc0FjdGl2ZSA/ICdhY3RpdmUnIDogJycsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgcHJvcHMuaXNBY3RpdmUgPyAnJyA6IENTUy5CT1JERVIuQ09MT1IuREVGQVVMVCxcbiAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBwcm9wcy5pc0FjdGl2ZSA/IENTUy5CRy5TRUNPTkRBUlkgOiBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgIF1cIlxuICAgIDpkaXNhYmxlZD1cInByb3BzLmRpc2FibGVkXCJcbiAgICBAY2xpY2s9XCJoYW5kbGVDbGlja1wiXG4gICAgYXJpYS1sYWJlbD1cIlRvZ2dsZVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLXRvZ2dsZS1pbmRpY2F0b3InLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIHByb3BzLmlzQWN0aXZlID8gQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCA6IENTUy5CRy5TRUNPTkRBUlksXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJJQ09OLkNIRUNLXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtdG9nZ2xlIHtcbiAgICB3aWR0aDogNjRweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLnRpZGUtdG9nZ2xlOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjMyO1xuICB9XG5cbiAgLnRpZGUtdG9nZ2xlLmFjdGl2ZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLXNlY29uZGFyeSk7XG4gIH1cblxuICAudGlkZS10b2dnbGUuYWN0aXZlIC50aWRlLXRvZ2dsZS1pbmRpY2F0b3Ige1xuICAgIGxlZnQ6IDM2cHg7XG4gIH1cblxuICAudGlkZS10b2dnbGUtaW5kaWNhdG9yIHtcbiAgICBsZWZ0OiA0cHg7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBsZWZ0LCBib3JkZXItY29sb3IsIGJhY2tncm91bmQtY29sb3I7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgUkVBTE0gPSB7XG4gIEFFUk86ICdhZXJvJyxcbiAgQVRWOiAnYXR2JyxcbiAgQk9BVE1BUlQ6ICdib2F0bWFydCcsXG4gIENZQ0xFOiAnY3ljbGUnLFxuICBFUVVJUDogJ2VxdWlwJyxcbiAgUFdDOiAncHdjJyxcbiAgUlY6ICdydicsXG4gIFNOT1c6ICdzbm93JyxcbiAgVFJVQ0s6ICd0cnVjaycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBSZWFsbSA9ICh0eXBlb2YgUkVBTE0pW2tleW9mIHR5cGVvZiBSRUFMTV07XG4iXSwibmFtZXMiOlsiQ1NTIiwiT1JJRU5UQVRJT04iLCJTSVpFIiwiZm9ybWF0UGFzY2FsQ2FzZSIsImlucHV0Iiwid29yZCIsImlubmVyU1ZHIiwicmVmIiwid2F0Y2giLCJwcm9wcyIsImlkIiwibmFtZSIsImNvbXBvbmVudCIsImRlZmluZUFzeW5jQ29tcG9uZW50IiwiX192YXJpYWJsZUR5bmFtaWNJbXBvcnRSdW50aW1lSGVscGVyIiwibWFya1JhdyIsIklDT04iLCJpc0V4cGFuZGVkIiwiYWNjb3JkaW9uQm9keSIsInRvZ2dsZUlzRXhwYW5kZWQiLCJlbGVtZW50Iiwib25Nb3VudGVkIiwiRUxFTUVOVCIsIkVMRU1FTlRfVEVYVF9BU19JQ09OIiwiUFJJT1JJVFkiLCJUQVJHRVQiLCJBTEVSVCIsImljb24iLCJjb21wdXRlZCIsIkJBREdFIiwiQkFER0VfUFJFTUlVTSIsIkJBREdFX1RSVVNURUQiLCJnYXAiLCJjb250ZW50V2lkdGgiLCJmcmFtZVdpZHRoIiwiaGFzT3ZlcmZsb3ciLCJsYXN0UG9zaXRpb24iLCJjb250ZW50UmVmIiwiZnJhbWVSZWYiLCJzaG93QnV0dG9ucyIsImN1cnJlbnRTbGlkZSIsIm1lYXN1cmVDdXJyZW50U2xpZGUiLCJzbGlkZU9mZnNldHMiLCJzbGlkZSIsImNsb3Nlc3RTbGlkZU9mZnNldCIsInByZXYiLCJjdXJyIiwibWVhc3VyZURvbSIsImhhbmRsZVNjcm9sbCIsInNjcm9sbFRvU2xpZGUiLCJzbGlkZUluZGV4Iiwic2hvd05leHRTbGlkZSIsImNvbnRlbnRSaWdodEVkZ2UiLCJpc0ZpcnN0U2xpZGVXaXRoT2Zmc2V0IiwibmV4dFNsaWRlIiwic2hvd1ByZXZpb3VzU2xpZGUiLCJmaXJzdFNsaWRlIiwiaXNGaXJzdFNsaWRlIiwicHJldmlvdXNTbGlkZSIsIm9uVW5tb3VudGVkIiwib25VcGRhdGVkIiwiZW1pdCIsInRpZGVJbWFnZSIsImltYWdlRGVmYXVsdCIsImxvYWRJbWFnZSIsImltYWdlTG9hZGVyIiwic2V0SW1hZ2VGcm9tU3JjIiwic2V0SW1hZ2VGcm9tRGVmYXVsdCIsIl9fZXhwb3NlIiwib2JzZXJ2ZXIiLCJlbnRyaWVzIiwiZW50cnkiLCJvbkJlZm9yZVVubW91bnQiLCJjaGVja2VkIiwidW5pcXVlSWQiLCJfYSIsImdldEN1cnJlbnRJbnN0YW5jZSIsIm5ld1ZhbHVlIiwib2xkVmFsdWUiLCJlcnJvck1lc3NhZ2VEZWZhdWx0IiwiZ2V0RXJyb3JNZXNzYWdlIiwiZXJyb3JGcm9tUHJvcHMiLCJlcnJvckZyb21SZWYiLCJnZXRGaWVsZEhhc0Vycm9yIiwiZ2V0RmllbGRMZW5ndGhJc1ZhbGlkIiwibWF4bGVuZ3RoIiwibWlubGVuZ3RoIiwidmFsdWUiLCJ0b29TaG9ydCIsInRvb0xvbmciLCJoYW5kbGVGaWVsZFZhbGlkYXRpb24iLCJlcnJvciIsInZhbGlkYXRvcnMiLCJ2YWxpZGF0aW9uIiwidmFsaWRhdGVQcm9wZXJ0eSIsImxlbmd0aHZhbGlkYXRpb24iLCJ2YWxpZGF0ZUxlbmd0aCIsInJlc3BvbnNlIiwidmFsaWRhdG9yIiwiaGFzRm9jdXMiLCJyZXF1aXJlZCIsImVycm9yTWVzc2FnZSIsImZvcm1hdHRlZExhYmVsIiwiaGFzRXJyb3IiLCJoYXNNaW5pbGFiZWwiLCJpc0VtcHR5IiwiZXhwYW5kT3B0aW9ucyIsImV2ZW50IiwiaGFuZGxlRm9jdXMiLCJoYW5kbGVGb2N1c091dCIsIlRFWFRfSU5QVVRfVFlQRSIsInNob3dQYXNzd29yZCIsImhhc0NsZWFyIiwidHlwZSIsImhhbmRsZUNsZWFyIiwiaGFuZGxlVmFsaWRhdGlvbiIsImhhbmRsZUlucHV0IiwiZGlnaXRzIiwidXBkYXRlVmFsdWUiLCJoYXNJY29uIiwiaXNPcGVuIiwic2F2ZWRTY3JvbGxQb3NpdGlvbiIsImhhbmRsZUNsb3NlIiwidXBkYXRlTW9kYWxEaXNwbGF5IiwiYWRkT3Blbkxpc3RlbmVycyIsInJlbW92ZU9wZW5MaXN0ZW5lcnMiLCJoYW5kbGVLZXlEb3duIiwicGFnZUN1cnJlbnQiLCJwYWdpbmF0aW9uQnV0dG9ucyIsImVtcHR5IiwiaW5kZXgiLCJoYW5kbGVDbGljayIsImFjdGl2ZVRhYiIsImlzQWN0aXZlIiwiUkVBTE0iXSwibWFwcGluZ3MiOiI7QUFBTyxNQUFNQSxJQUFNO0FBQUEsRUFDakIsT0FBTztBQUFBLElBQ0wsR0FBRztBQUFBLE1BQ0QsUUFBUTtBQUFBLE1BQ1IsTUFBTTtBQUFBLE1BQ04sT0FBTztBQUFBLElBQ1Q7QUFBQSxJQUNBLEdBQUc7QUFBQSxNQUNELFFBQVE7QUFBQSxJQUNWO0FBQUEsRUFDRjtBQUFBLEVBQ0EsT0FBTztBQUFBLElBQ0wsUUFBUTtBQUFBLElBQ1IsU0FBUztBQUFBLElBQ1QsUUFBUTtBQUFBLElBQ1IsS0FBSztBQUFBLElBQ0wsT0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUNBLE9BQU87QUFBQSxJQUNMLFFBQVE7QUFBQSxJQUNSLFFBQVE7QUFBQSxJQUNSLEtBQUs7QUFBQSxJQUNMLE9BQU87QUFBQSxFQUNUO0FBQUEsRUFDQSxJQUFJO0FBQUEsSUFDRixPQUFPO0FBQUEsSUFDUCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsSUFDVCxXQUFXO0FBQUEsSUFDWCxTQUFTO0FBQUEsSUFDVCxTQUFTO0FBQUEsTUFDUCxRQUFRO0FBQUEsTUFDUixnQkFBZ0I7QUFBQSxNQUNoQixPQUFPO0FBQUEsTUFDUCxTQUFTO0FBQUEsTUFDVCxPQUFPO0FBQUEsTUFDUCxVQUFVO0FBQUEsTUFDVixVQUFVO0FBQUEsTUFDVixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxTQUFTO0FBQUEsTUFDVCxTQUFTO0FBQUEsSUFDWDtBQUFBLElBQ0EsU0FBUztBQUFBLEVBQ1g7QUFBQSxFQUNBLFFBQVE7QUFBQSxJQUNOLFFBQVE7QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxPQUFPO0FBQUEsTUFDTCxTQUFTO0FBQUEsTUFDVCxVQUFV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UztBQUFBLE1BQ1QsU0FBUztBQUFBLE1BQ1QsU0FBUztBQUFBLE1BQ1QsU0FBUztBQUFBLE1BQ1QsU0FBUztBQUFBLE1BQ1QsU0FBUztBQUFBLE1BQ1QsU0FBUztBQUFBLE1BQ1QsU0FBUztBQUFBLElBQ1g7QUFBQSxFQUNGO0FBQUEsRUFDQSxRQUFRO0FBQUEsSUFDTixNQUFNO0FBQUEsRUFDUjtBQUFBLEVBQ0EsY0FBYztBQUFBLElBQ1osS0FBSztBQUFBLEVBQ1A7QUFBQSxFQUNBLFFBQVE7QUFBQSxJQUNOLFFBQVE7QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLFNBQVM7QUFBQSxNQUNULEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxNQUFNO0FBQUEsTUFDSixNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxTQUFTO0FBQUEsTUFDVCxLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsTUFBTTtBQUFBLE1BQ0osTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsU0FBUztBQUFBLE1BQ1QsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLE9BQU87QUFBQSxNQUNMLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLFNBQVM7QUFBQSxNQUNULEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxLQUFLO0FBQUEsTUFDSCxNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxTQUFTO0FBQUEsTUFDVCxLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsR0FBRztBQUFBLE1BQ0QsTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsU0FBUztBQUFBLE1BQ1QsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLEdBQUc7QUFBQSxNQUNELE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLFNBQVM7QUFBQSxNQUNULEtBQUs7QUFBQSxJQUNQO0FBQUEsRUFDRjtBQUFBLEVBQ0EsUUFBUTtBQUFBLElBQ04sUUFBUTtBQUFBLElBQ1IsU0FBUztBQUFBLElBQ1QsT0FBTztBQUFBLElBQ1AsWUFBWTtBQUFBLEVBQ2Q7QUFBQSxFQUNBLFNBQVM7QUFBQSxJQUNQLEtBQUs7QUFBQSxJQUNMLElBQUk7QUFBQSxFQUNOO0FBQUEsRUFDQSxVQUFVO0FBQUEsSUFDUixHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixRQUFRO0FBQUEsTUFDUixRQUFRO0FBQUEsSUFDVjtBQUFBLElBQ0EsSUFBSTtBQUFBLE1BQ0YsTUFBTTtBQUFBLE1BQ04sUUFBUTtBQUFBLElBQ1Y7QUFBQSxJQUNBLEdBQUc7QUFBQSxNQUNELE1BQU07QUFBQSxNQUNOLFFBQVE7QUFBQSxJQUNWO0FBQUEsRUFDRjtBQUFBLEVBQ0EsU0FBUztBQUFBLElBQ1AsUUFBUTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsU0FBUztBQUFBLE1BQ1QsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLE1BQU07QUFBQSxNQUNKLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLFNBQVM7QUFBQSxNQUNULEtBQUs7QUFBQSxJQUNQO0FBQUEsSUFDQSxNQUFNO0FBQUEsTUFDSixNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxTQUFTO0FBQUEsTUFDVCxLQUFLO0FBQUEsSUFDUDtBQUFBLElBQ0EsT0FBTztBQUFBLE1BQ0wsTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsU0FBUztBQUFBLE1BQ1QsS0FBSztBQUFBLElBQ1A7QUFBQSxJQUNBLEtBQUs7QUFBQSxNQUNILE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFB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RSxLQUNiQSxFQUFJLE9BQU8sRUFBRSxNQUNiQSxFQUFJLE9BQU8sRUFBRSxTQUNiQSxFQUFJLE9BQU8sRUFBRSxLQUNiQSxFQUFJLE9BQU8sRUFBRSxNQUNiQSxFQUFJLE9BQU8sSUFBSSxLQUNmQSxFQUFJLE9BQU8sSUFBSSxNQUNmQSxFQUFJLE9BQU8sSUFBSSxTQUNmQSxFQUFJLE9BQU8sSUFBSSxLQUNmQSxFQUFJLE9BQU8sSUFBSSxNQUNmQSxFQUFJLE9BQU8sRUFBRSxLQUNiQSxFQUFJLE9BQU8sRUFBRSxNQUNiQSxFQUFJLE9BQU8sRUFBRSxTQUNiQSxFQUFJLE9BQU8sRUFBRSxLQUNiQSxFQUFJLE9BQU8sRUFBRSxNQUNiQSxFQUFJLE9BQU8sRUFBRSxNQUNiQSxFQUFJLE9BQU8sTUFBTSxLQUNqQkEsRUFBSSxPQUFPLE1BQU0sTUFDakJBLEVBQUksT0FBTyxNQUFNLFNBQ2pCQSxFQUFJLE9BQU8sTUFBTSxLQUNqQkEsRUFBSSxPQUFPLE1BQU0sTUFDakJBLEVBQUksT0FBTyxNQUFNLE1BQ2pCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLE9BQU8sTUFDbEJBLEVBQUksT0FBTyxPQUFPLFNBQ2xCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLE9BQU8sTUFDbEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxNQUNoQkEsRUFBSSxPQUFPLEtBQUssU0FDaEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxNQUNoQkEsRUFBSSxPQUFPLEtBQUssTUFDaEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxLQUNoQkEsRUFBSSxPQUFPLElBQUksS0FDZkEsRUFBSSxPQUFPLElBQUksS0FDZkEsRUFBSSxPQUFPLE1BQU0sS0FDakJBLEVBQUksT0FBTyxNQUFNLEtBQ2pCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLE9BQU8sS0FDbEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxLQUNoQkEsRUFBSSxPQUFPLE9BQU8sS0FDbEJBLEVBQUksT0FBTyxPQUFPLE1BQ2xCQSxFQUFJLE9BQU8sT0FBTyxTQUNsQkEsRUFBSSxPQUFPLE9BQU8sTUFDbEJBLEVBQUksUUFBUSxLQUFLLEtBQ2pCQSxFQUFJLFFBQVEsS0FBSyxNQUNqQkEsRUFBSSxRQUFRLEtBQUssU0FDakJBLEVBQUksUUFBUSxLQUFLLEtBQ2pCQSxFQUFJLFFBQVEsS0FBSyxNQUNqQkEsRUFBSSxRQUFRLEVBQUUsS0FDZEEsRUFBSSxRQUFRLEVBQUUsTUFDZEEsRUFBSSxRQUFRLEVBQUUsU0FDZEEsRUFBSSxRQUFRLEVBQUUsS0FDZEEsRUFBSSxRQUFRLEVBQUUsTUFDZEEsRUFBSSxRQUFRLElBQUksS0FDaEJBLEVBQUksUUFBUSxJQUFJLE1BQ2hCQSxFQUFJLFFBQVEsSUFBSSxTQUNoQkEsRUFBSSxRQUFRLElBQUksS0FDaEJBLEVBQUksUUFBUSxJQUFJLE1BQ2hCQSxFQUFJLFFBQVEsRUFBRSxLQUNkQSxFQUFJLFFBQVEsRUFBRSxNQUNkQSxFQUFJLFFBQVEsRUFBRSxTQUNkQSxFQUFJLFFBQVEsRUFBRSxLQUNkQSxFQUFJLFFBQVEsRUFBRSxNQUNkQSxFQUFJLFFBQVEsTUFBTSxLQUNsQkEsRUFBSSxRQUFRLE1BQU0sTUFDbEJBLEVBQUksUUFBUSxNQUFNLFNBQ2xCQSxFQUFJLFFBQVEsTUFBTSxLQUNsQkEsRUFBSSxRQUFRLE1BQU0sTUFDbEJBLEVBQUksUUFBUSxPQUFPLEtBQ25CQSxFQUFJLFFBQVEsT0FBTyxNQUNuQkEsRUFBSSxRQUFRLE9BQU8sU0FDbkJBLEVBQUksUUFBUSxPQUFPLEtBQ25CQSxFQUFJLFFBQVEsT0FBTyxNQUNuQkEsRUFBSSxRQUFRLEtBQUssS0FDakJBLEVBQUksUUFBUSxLQUFLLE1BQ2pCQSxFQUFJLFFBQVEsS0FBSyxTQUNqQkEsRUFBSSxRQUFRLEtBQUssS0FDakJBLEVBQUksUUFBUSxLQUFLLE1BQ2pCQSxFQUFJLE1BQU0sVUFDVkEsRUFBSSxNQUFNLE1BQ1ZBLEVBQUks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QUFBLE9BQUEseUJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSw4Q0FBQSxNQUFBLE9BQUEsa0NBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSxrREFBQSxNQUFBLE9BQUEsc0NBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSw4Q0FBQSxNQUFBLE9BQUEsa0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSxtQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSw4Q0FBQSxNQUFBLE9BQUEsa0NBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsRUFBQSxDQUFBLEdBQUEsMkJBQUFILENBQUEsTUFBQSxDQUFBO0FBRWpGLFFBQUFMLEVBQUEsUUFBUVMsR0FBUUgsQ0FBUztBQUFBLE1BQ3BDO0FBQUEsTUFDQSxFQUFFLFdBQVcsR0FBSztBQUFBLElBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0VDL0JUSSxJQUFPO0FBQUEsRUFDbEIsaUJBQWlCO0FBQUEsRUFDakIsS0FBSztBQUFBLEVBQ0wsSUFBSTtBQUFBLEVBQ0osYUFBYTtBQUFBLEVBQ2IsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osZUFBZTtBQUFBLEVBQ2YsYUFBYTtBQUFBLEVBQ2IsWUFBWTtBQUFBLEVBQ1osWUFBWTtBQUFBLEVBQ1osVUFBVTtBQUFBLEVBQ1YsZ0JBQWdCO0FBQUEsRUFDaEIsTUFBTTtBQUFBLEVBQ04sT0FBTztBQUFBLEVBQ1AsY0FBYztBQUFBLEVBQ2QsZUFBZTtBQUFBLEVBQ2YsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsTUFBTTtBQUFBLEVBQ04sT0FBTztBQUFBLEVBQ1AsZ0JBQWdCO0FBQUEsRUFDaEIsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsVUFBVTtBQUFBLEVBQ1YsVUFBVTtBQUFBLEVBQ1YsaUJBQWlCO0FBQUEsRUFDakIsYUFBYTtBQUFBLEVBQ2IsZUFBZTtBQUFBLEVBQ2Ysc0JBQXNCO0FBQUEsRUFDdEIsT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUFBLEVBQ1IsWUFBWTtBQUFBLEVBQ1osTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sYUFBYTtBQUFBLEVBQ2IsV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsV0FBVztBQUFBLEVBQ1gsZ0JBQWdCO0FBQUEsRUFDaEIsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sWUFBWTtBQUFBLEVBQ1osZUFBZTtBQUFBLEVBQ2YsYUFBYTtBQUFBLEVBQ2IsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsY0FBYztBQUFBLEVBQ2QsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osUUFBUTtBQUFBLEVBQ1IsaUJBQWlCO0FBQUEsRUFDakIsUUFBUTtBQUFBLEVBQ1IsTUFBTTtBQUFBLEVBQ04sT0FBTztBQUFBLEVBQ1AsZUFBZTtBQUFBLEVBQ2YsS0FBSztBQUFBLEVBQ0wsTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsa0JBQWtCO0FBQUEs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