@gnwebsoft/ui 3.0.1 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +688 -0
- package/dist/chunk-4H3AFH7A.js +505 -0
- package/dist/chunk-DE62KYFK.js +122 -0
- package/dist/chunk-DEPJRTVT.js +1 -0
- package/dist/chunk-EBRUE2WR.cjs +493 -0
- package/dist/chunk-FD57PCAC.cjs +1 -0
- package/dist/chunk-H3GQLELL.js +2025 -0
- package/dist/chunk-MVPLBJRK.cjs +1 -0
- package/dist/chunk-OJF67RNM.js +1 -0
- package/dist/chunk-OT7COE7R.cjs +2025 -0
- package/dist/chunk-R2YK4LTT.cjs +122 -0
- package/dist/chunk-U6SDYCWF.js +493 -0
- package/dist/chunk-ZC7FGYL2.cjs +505 -0
- package/dist/components/index.cjs +25 -0
- package/dist/components/index.d.cts +752 -0
- package/dist/components/index.d.ts +664 -15
- package/dist/components/index.js +25 -24
- package/dist/enhanced-z-I7EHVS.d.cts +134 -0
- package/dist/enhanced-z-I7EHVS.d.ts +134 -0
- package/dist/hooks/index.cjs +12 -0
- package/dist/hooks/index.d.cts +95 -0
- package/dist/hooks/index.d.ts +82 -4
- package/dist/hooks/index.js +12 -7
- package/dist/index.cjs +127 -0
- package/dist/index.d.cts +14 -0
- package/dist/index.d.ts +4 -6
- package/dist/index.js +127 -54
- package/dist/types/index.cjs +2 -0
- package/dist/types/index.d.cts +241 -0
- package/dist/types/index.d.ts +205 -20
- package/dist/types/index.js +2 -1
- package/dist/utils/index.cjs +45 -0
- package/dist/utils/index.d.cts +366 -0
- package/dist/utils/index.d.ts +317 -9
- package/dist/utils/index.js +45 -22
- package/dist/wrappers/index.cjs +54 -0
- package/dist/wrappers/index.d.cts +1684 -0
- package/dist/wrappers/index.d.ts +1601 -118
- package/dist/wrappers/index.js +54 -8
- package/package.json +139 -88
- package/dist/AsyncSelectPayload-Cz4bgak0.d.mts +0 -10
- package/dist/AsyncSelectPayload-Cz4bgak0.d.ts +0 -10
- package/dist/chunk-2JFL7TS5.mjs +0 -0
- package/dist/chunk-6BGQA4BQ.js +0 -1
- package/dist/chunk-6JZ35VQJ.js +0 -19
- package/dist/chunk-7M2VOCYN.js +0 -1
- package/dist/chunk-BWQUYXUW.mjs +0 -1634
- package/dist/chunk-D3J7MWAU.js +0 -1634
- package/dist/chunk-EVPUCTZA.mjs +0 -0
- package/dist/chunk-FSU3H777.mjs +0 -473
- package/dist/chunk-GFSTK7KN.mjs +0 -19
- package/dist/chunk-I7EIUZKK.js +0 -332
- package/dist/chunk-JKUOV3MN.js +0 -473
- package/dist/chunk-RQS44YC7.mjs +0 -332
- package/dist/components/index.d.mts +0 -103
- package/dist/components/index.mjs +0 -24
- package/dist/hooks/index.d.mts +0 -17
- package/dist/hooks/index.mjs +0 -7
- package/dist/index.d.mts +0 -16
- package/dist/index.mjs +0 -54
- package/dist/types/index.d.mts +0 -56
- package/dist/types/index.mjs +0 -1
- package/dist/utils/index.d.mts +0 -58
- package/dist/utils/index.mjs +0 -22
- package/dist/wrappers/index.d.mts +0 -201
- package/dist/wrappers/index.mjs +0 -8
|
@@ -0,0 +1,493 @@
|
|
|
1
|
+
// src/components/ClearButton/ClearButton.tsx
|
|
2
|
+
import { Button } from "@mui/material";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
var ClearButton = ({
|
|
5
|
+
isSubmitting,
|
|
6
|
+
handleClear,
|
|
7
|
+
sx,
|
|
8
|
+
storeKey
|
|
9
|
+
}) => {
|
|
10
|
+
const onClick = () => {
|
|
11
|
+
handleClear();
|
|
12
|
+
if (storeKey != null) {
|
|
13
|
+
localStorage.removeItem(storeKey);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
return /* @__PURE__ */ jsx(
|
|
17
|
+
Button,
|
|
18
|
+
{
|
|
19
|
+
variant: "outlined",
|
|
20
|
+
onClick,
|
|
21
|
+
disabled: isSubmitting,
|
|
22
|
+
sx,
|
|
23
|
+
children: "Clear"
|
|
24
|
+
}
|
|
25
|
+
);
|
|
26
|
+
};
|
|
27
|
+
var ClearButton_default = ClearButton;
|
|
28
|
+
|
|
29
|
+
// src/components/FilterButton/FilterButton.tsx
|
|
30
|
+
import FilterAltIcon from "@mui/icons-material/FilterAlt";
|
|
31
|
+
import { LoadingButton } from "@mui/lab";
|
|
32
|
+
import { Badge } from "@mui/material";
|
|
33
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
34
|
+
var FilterButton = ({
|
|
35
|
+
isSubmitting,
|
|
36
|
+
show,
|
|
37
|
+
title,
|
|
38
|
+
icon,
|
|
39
|
+
sx,
|
|
40
|
+
iconSx
|
|
41
|
+
}) => {
|
|
42
|
+
return /* @__PURE__ */ jsx2(
|
|
43
|
+
LoadingButton,
|
|
44
|
+
{
|
|
45
|
+
type: "submit",
|
|
46
|
+
variant: "contained",
|
|
47
|
+
loading: isSubmitting,
|
|
48
|
+
disabled: !show,
|
|
49
|
+
disableRipple: true,
|
|
50
|
+
color: "primary",
|
|
51
|
+
sx: {
|
|
52
|
+
display: "flex",
|
|
53
|
+
alignItems: "center",
|
|
54
|
+
...sx
|
|
55
|
+
},
|
|
56
|
+
startIcon: /* @__PURE__ */ jsx2(Badge, { color: "error", variant: "standard", children: icon ? icon : /* @__PURE__ */ jsx2(FilterAltIcon, { width: "20", height: "20", sx: iconSx }) }),
|
|
57
|
+
children: title?.trim() === "" || !title ? "Filter" : title
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
};
|
|
61
|
+
var FilterButton_default = FilterButton;
|
|
62
|
+
|
|
63
|
+
// src/components/FilterWrapper/FilterWrapper.tsx
|
|
64
|
+
import ManageSearchIcon from "@mui/icons-material/ManageSearch";
|
|
65
|
+
import {
|
|
66
|
+
Box,
|
|
67
|
+
Card,
|
|
68
|
+
CardContent,
|
|
69
|
+
CardHeader,
|
|
70
|
+
Divider,
|
|
71
|
+
Grid,
|
|
72
|
+
Typography,
|
|
73
|
+
useTheme as useTheme2
|
|
74
|
+
} from "@mui/material";
|
|
75
|
+
import { Fragment, jsx as jsx3, jsxs } from "react/jsx-runtime";
|
|
76
|
+
var FilterWrapper = ({
|
|
77
|
+
children,
|
|
78
|
+
title,
|
|
79
|
+
filterCount,
|
|
80
|
+
cardSx,
|
|
81
|
+
textSx,
|
|
82
|
+
icon,
|
|
83
|
+
iconSx,
|
|
84
|
+
showCount
|
|
85
|
+
}) => {
|
|
86
|
+
const theme = useTheme2();
|
|
87
|
+
return /* @__PURE__ */ jsxs(
|
|
88
|
+
Card,
|
|
89
|
+
{
|
|
90
|
+
sx: {
|
|
91
|
+
position: "relative",
|
|
92
|
+
borderRadius: "0px",
|
|
93
|
+
mb: 2,
|
|
94
|
+
...cardSx
|
|
95
|
+
},
|
|
96
|
+
children: [
|
|
97
|
+
/* @__PURE__ */ jsx3(
|
|
98
|
+
CardHeader,
|
|
99
|
+
{
|
|
100
|
+
sx: {
|
|
101
|
+
display: "flex",
|
|
102
|
+
flexWrap: "wrap",
|
|
103
|
+
p: "1rem",
|
|
104
|
+
".MuiCardHeader-action": {
|
|
105
|
+
margin: 0,
|
|
106
|
+
alignSelf: "center"
|
|
107
|
+
},
|
|
108
|
+
alignItems: "center"
|
|
109
|
+
},
|
|
110
|
+
title: /* @__PURE__ */ jsxs(Box, { sx: { display: "flex", alignItems: "center", gap: 0.5 }, children: [
|
|
111
|
+
icon ? icon : /* @__PURE__ */ jsx3(
|
|
112
|
+
ManageSearchIcon,
|
|
113
|
+
{
|
|
114
|
+
sx: {
|
|
115
|
+
height: "2.5rem",
|
|
116
|
+
color: theme.palette.primary.main,
|
|
117
|
+
...iconSx
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
),
|
|
121
|
+
/* @__PURE__ */ jsxs(
|
|
122
|
+
Typography,
|
|
123
|
+
{
|
|
124
|
+
variant: "h5",
|
|
125
|
+
sx: {
|
|
126
|
+
fontWeight: "bold",
|
|
127
|
+
color: theme.palette.primary.main,
|
|
128
|
+
...textSx
|
|
129
|
+
},
|
|
130
|
+
children: [
|
|
131
|
+
title ? title : "Filter",
|
|
132
|
+
" ",
|
|
133
|
+
showCount ? `(${filterCount ? filterCount : 0})` : /* @__PURE__ */ jsx3(Fragment, {})
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
)
|
|
137
|
+
] })
|
|
138
|
+
}
|
|
139
|
+
),
|
|
140
|
+
/* @__PURE__ */ jsx3(Divider, {}),
|
|
141
|
+
/* @__PURE__ */ jsx3(CardContent, { sx: { py: 2 }, children: /* @__PURE__ */ jsx3(Grid, { container: true, spacing: 2, children }) })
|
|
142
|
+
]
|
|
143
|
+
}
|
|
144
|
+
);
|
|
145
|
+
};
|
|
146
|
+
var FilterWrapper_default = FilterWrapper;
|
|
147
|
+
|
|
148
|
+
// src/components/FormWrapper/FormWrapper.tsx
|
|
149
|
+
import {
|
|
150
|
+
Box as Box2,
|
|
151
|
+
Card as Card2,
|
|
152
|
+
CardContent as CardContent2,
|
|
153
|
+
CardHeader as CardHeader2,
|
|
154
|
+
Divider as Divider2,
|
|
155
|
+
Grid as Grid2,
|
|
156
|
+
Typography as Typography2
|
|
157
|
+
} from "@mui/material";
|
|
158
|
+
import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
159
|
+
var FormWrapper = ({
|
|
160
|
+
children,
|
|
161
|
+
title,
|
|
162
|
+
editMode,
|
|
163
|
+
cardSx,
|
|
164
|
+
textSx,
|
|
165
|
+
icon,
|
|
166
|
+
actionButton
|
|
167
|
+
}) => {
|
|
168
|
+
return /* @__PURE__ */ jsxs2(
|
|
169
|
+
Card2,
|
|
170
|
+
{
|
|
171
|
+
sx: {
|
|
172
|
+
position: "relative",
|
|
173
|
+
borderRadius: "0px",
|
|
174
|
+
...cardSx
|
|
175
|
+
},
|
|
176
|
+
children: [
|
|
177
|
+
/* @__PURE__ */ jsx4(
|
|
178
|
+
CardHeader2,
|
|
179
|
+
{
|
|
180
|
+
sx: {
|
|
181
|
+
display: "flex",
|
|
182
|
+
flexWrap: "wrap",
|
|
183
|
+
p: "1rem",
|
|
184
|
+
".MuiCardHeader-action": {
|
|
185
|
+
margin: 0,
|
|
186
|
+
alignSelf: "center"
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
title: /* @__PURE__ */ jsxs2(
|
|
190
|
+
Box2,
|
|
191
|
+
{
|
|
192
|
+
sx: {
|
|
193
|
+
display: "flex",
|
|
194
|
+
alignItems: "center",
|
|
195
|
+
justifyContent: "space-between"
|
|
196
|
+
},
|
|
197
|
+
children: [
|
|
198
|
+
/* @__PURE__ */ jsxs2(Box2, { sx: { display: "flex", alignItems: "center", gap: 0.5 }, children: [
|
|
199
|
+
icon ?? icon,
|
|
200
|
+
/* @__PURE__ */ jsx4(Typography2, { color: "primary", sx: textSx, children: title })
|
|
201
|
+
] }),
|
|
202
|
+
actionButton
|
|
203
|
+
]
|
|
204
|
+
}
|
|
205
|
+
)
|
|
206
|
+
}
|
|
207
|
+
),
|
|
208
|
+
/* @__PURE__ */ jsx4(Divider2, { sx: { mt: 0 } }),
|
|
209
|
+
/* @__PURE__ */ jsx4(CardContent2, { children: /* @__PURE__ */ jsx4(Grid2, { container: true, spacing: 2, children }) })
|
|
210
|
+
]
|
|
211
|
+
}
|
|
212
|
+
);
|
|
213
|
+
};
|
|
214
|
+
var FormWrapper_default = FormWrapper;
|
|
215
|
+
|
|
216
|
+
// src/components/LabelText/LabelText.tsx
|
|
217
|
+
import { Grid as Grid3, Tooltip, Typography as Typography3 } from "@mui/material";
|
|
218
|
+
import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
219
|
+
var LabelText = ({
|
|
220
|
+
label,
|
|
221
|
+
value,
|
|
222
|
+
gridSize,
|
|
223
|
+
containerSize,
|
|
224
|
+
labelSx,
|
|
225
|
+
valueSx
|
|
226
|
+
}) => {
|
|
227
|
+
const defaultGridSize = {
|
|
228
|
+
labelSize: { xs: 6, sm: 6, md: 6 },
|
|
229
|
+
valueSize: { xs: 12, sm: 6, md: 6 }
|
|
230
|
+
};
|
|
231
|
+
const defaultContainerSize = { xs: 12, sm: 6, md: 6 };
|
|
232
|
+
const size = gridSize || defaultGridSize;
|
|
233
|
+
const container = containerSize || defaultContainerSize;
|
|
234
|
+
return /* @__PURE__ */ jsxs3(
|
|
235
|
+
Grid3,
|
|
236
|
+
{
|
|
237
|
+
size: container,
|
|
238
|
+
sx: {
|
|
239
|
+
display: "flex",
|
|
240
|
+
flexDirection: { xs: "column", sm: "row", md: "row" },
|
|
241
|
+
"&:hover": { bgcolor: "#efefef", overflow: "hidden" }
|
|
242
|
+
},
|
|
243
|
+
children: [
|
|
244
|
+
/* @__PURE__ */ jsxs3(
|
|
245
|
+
Grid3,
|
|
246
|
+
{
|
|
247
|
+
size: size.labelSize,
|
|
248
|
+
sx: {
|
|
249
|
+
padding: "5px",
|
|
250
|
+
fontSize: "14px",
|
|
251
|
+
textAlign: { xs: "left", sm: "right", md: "right" },
|
|
252
|
+
...labelSx
|
|
253
|
+
},
|
|
254
|
+
children: [
|
|
255
|
+
label,
|
|
256
|
+
" :"
|
|
257
|
+
]
|
|
258
|
+
}
|
|
259
|
+
),
|
|
260
|
+
/* @__PURE__ */ jsx5(
|
|
261
|
+
Grid3,
|
|
262
|
+
{
|
|
263
|
+
size: size.valueSize,
|
|
264
|
+
sx: { padding: "5px", display: "flex", flexWrap: "wrap" },
|
|
265
|
+
children: /* @__PURE__ */ jsx5(Tooltip, { title: value, arrow: true, children: /* @__PURE__ */ jsx5(
|
|
266
|
+
Typography3,
|
|
267
|
+
{
|
|
268
|
+
sx: {
|
|
269
|
+
fontSize: "14px",
|
|
270
|
+
wordBreak: "break-word",
|
|
271
|
+
overflow: "hidden",
|
|
272
|
+
display: "-webkit-box",
|
|
273
|
+
textOverflow: "ellipsis",
|
|
274
|
+
WebkitLineClamp: 2,
|
|
275
|
+
WebkitBoxOrient: "vertical",
|
|
276
|
+
...valueSx,
|
|
277
|
+
color: "#078dee"
|
|
278
|
+
},
|
|
279
|
+
children: value ? value : "-"
|
|
280
|
+
}
|
|
281
|
+
) })
|
|
282
|
+
}
|
|
283
|
+
)
|
|
284
|
+
]
|
|
285
|
+
}
|
|
286
|
+
);
|
|
287
|
+
};
|
|
288
|
+
var LabelText_default = LabelText;
|
|
289
|
+
|
|
290
|
+
// src/components/ListWrapper/ListWrapper.tsx
|
|
291
|
+
import ManageSearchIcon2 from "@mui/icons-material/ManageSearch";
|
|
292
|
+
import {
|
|
293
|
+
Box as Box3,
|
|
294
|
+
Card as Card3,
|
|
295
|
+
CardContent as CardContent3,
|
|
296
|
+
CardHeader as CardHeader3,
|
|
297
|
+
Divider as Divider3,
|
|
298
|
+
Grid as Grid4,
|
|
299
|
+
Typography as Typography4,
|
|
300
|
+
useTheme as useTheme3
|
|
301
|
+
} from "@mui/material";
|
|
302
|
+
import { Fragment as Fragment2, jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
303
|
+
var ListWrapper = ({
|
|
304
|
+
children,
|
|
305
|
+
title,
|
|
306
|
+
count,
|
|
307
|
+
show = true,
|
|
308
|
+
actionButton,
|
|
309
|
+
cardSx,
|
|
310
|
+
textSx,
|
|
311
|
+
icon,
|
|
312
|
+
iconSx,
|
|
313
|
+
showCount = true
|
|
314
|
+
}) => {
|
|
315
|
+
const theme = useTheme3();
|
|
316
|
+
if (!show) return /* @__PURE__ */ jsx6(Fragment2, {});
|
|
317
|
+
return /* @__PURE__ */ jsxs4(
|
|
318
|
+
Card3,
|
|
319
|
+
{
|
|
320
|
+
sx: {
|
|
321
|
+
position: "relative",
|
|
322
|
+
borderRadius: "0px",
|
|
323
|
+
...cardSx
|
|
324
|
+
},
|
|
325
|
+
children: [
|
|
326
|
+
/* @__PURE__ */ jsx6(
|
|
327
|
+
CardHeader3,
|
|
328
|
+
{
|
|
329
|
+
sx: {
|
|
330
|
+
display: "flex",
|
|
331
|
+
flexWrap: "wrap",
|
|
332
|
+
p: "1rem",
|
|
333
|
+
".MuiCardHeader-action": {
|
|
334
|
+
margin: 0,
|
|
335
|
+
alignSelf: "center"
|
|
336
|
+
},
|
|
337
|
+
alignItems: "center"
|
|
338
|
+
},
|
|
339
|
+
title: /* @__PURE__ */ jsxs4(
|
|
340
|
+
Box3,
|
|
341
|
+
{
|
|
342
|
+
sx: {
|
|
343
|
+
display: "flex",
|
|
344
|
+
alignItems: "center",
|
|
345
|
+
justifyContent: "space-between"
|
|
346
|
+
},
|
|
347
|
+
children: [
|
|
348
|
+
/* @__PURE__ */ jsxs4(Box3, { sx: { display: "flex", alignItems: "center", gap: 0.5 }, children: [
|
|
349
|
+
icon ? icon : /* @__PURE__ */ jsx6(
|
|
350
|
+
ManageSearchIcon2,
|
|
351
|
+
{
|
|
352
|
+
sx: {
|
|
353
|
+
height: "2.5rem",
|
|
354
|
+
color: theme.palette.primary.main,
|
|
355
|
+
...iconSx
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
),
|
|
359
|
+
/* @__PURE__ */ jsxs4(
|
|
360
|
+
Typography4,
|
|
361
|
+
{
|
|
362
|
+
variant: "h5",
|
|
363
|
+
sx: {
|
|
364
|
+
fontWeight: "bold",
|
|
365
|
+
color: theme.palette.primary.main,
|
|
366
|
+
...textSx
|
|
367
|
+
},
|
|
368
|
+
children: [
|
|
369
|
+
title ? title : "List",
|
|
370
|
+
showCount ? `(${count ? count : 0})` : /* @__PURE__ */ jsx6(Fragment2, {})
|
|
371
|
+
]
|
|
372
|
+
}
|
|
373
|
+
)
|
|
374
|
+
] }),
|
|
375
|
+
actionButton
|
|
376
|
+
]
|
|
377
|
+
}
|
|
378
|
+
)
|
|
379
|
+
}
|
|
380
|
+
),
|
|
381
|
+
/* @__PURE__ */ jsx6(Divider3, {}),
|
|
382
|
+
/* @__PURE__ */ jsx6(CardContent3, { sx: { pt: 0 }, children: /* @__PURE__ */ jsx6(Grid4, { container: true, spacing: 2, children }) })
|
|
383
|
+
]
|
|
384
|
+
}
|
|
385
|
+
);
|
|
386
|
+
};
|
|
387
|
+
var ListWrapper_default = ListWrapper;
|
|
388
|
+
|
|
389
|
+
// src/components/SimpleToolbar/SimpleToolbar.tsx
|
|
390
|
+
import { Box as Box4 } from "@mui/material";
|
|
391
|
+
import {
|
|
392
|
+
GridToolbarContainer,
|
|
393
|
+
GridToolbarColumnsButton,
|
|
394
|
+
GridToolbarExport,
|
|
395
|
+
GridToolbarFilterButton,
|
|
396
|
+
GridToolbarQuickFilter
|
|
397
|
+
} from "@mui/x-data-grid";
|
|
398
|
+
import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
399
|
+
var SimpleToolbar = () => /* @__PURE__ */ jsxs5(GridToolbarContainer, { children: [
|
|
400
|
+
/* @__PURE__ */ jsx7(
|
|
401
|
+
Box4,
|
|
402
|
+
{
|
|
403
|
+
sx: {
|
|
404
|
+
"& .MuiInputBase-root": {
|
|
405
|
+
borderRadius: "8px",
|
|
406
|
+
padding: "6px 10px"
|
|
407
|
+
},
|
|
408
|
+
"& input": {
|
|
409
|
+
fontSize: "14px",
|
|
410
|
+
color: "#333"
|
|
411
|
+
},
|
|
412
|
+
borderRadius: "8px"
|
|
413
|
+
},
|
|
414
|
+
children: /* @__PURE__ */ jsx7(GridToolbarQuickFilter, {})
|
|
415
|
+
}
|
|
416
|
+
),
|
|
417
|
+
/* @__PURE__ */ jsx7(Box4, { sx: { flexGrow: 1 } }),
|
|
418
|
+
/* @__PURE__ */ jsx7(GridToolbarColumnsButton, {}),
|
|
419
|
+
/* @__PURE__ */ jsx7(GridToolbarFilterButton, {}),
|
|
420
|
+
/* @__PURE__ */ jsx7(GridToolbarExport, {})
|
|
421
|
+
] });
|
|
422
|
+
var SimpleToolbar_default = SimpleToolbar;
|
|
423
|
+
|
|
424
|
+
// src/components/SimpleButton/SimpleButton.tsx
|
|
425
|
+
import { Button as Button2, CircularProgress } from "@mui/material";
|
|
426
|
+
import { forwardRef, memo } from "react";
|
|
427
|
+
import { Fragment as Fragment3, jsx as jsx8 } from "react/jsx-runtime";
|
|
428
|
+
var SimpleButton = memo(forwardRef(
|
|
429
|
+
({
|
|
430
|
+
show = true,
|
|
431
|
+
loading = false,
|
|
432
|
+
loadingText,
|
|
433
|
+
children,
|
|
434
|
+
...rest
|
|
435
|
+
}, ref) => {
|
|
436
|
+
if (!show) return null;
|
|
437
|
+
return /* @__PURE__ */ jsx8(Fragment3, { children: /* @__PURE__ */ jsx8(
|
|
438
|
+
Button2,
|
|
439
|
+
{
|
|
440
|
+
ref,
|
|
441
|
+
disabled: loading || rest.disabled,
|
|
442
|
+
startIcon: loading ? /* @__PURE__ */ jsx8(CircularProgress, { size: 16 }) : rest.startIcon,
|
|
443
|
+
...rest,
|
|
444
|
+
children: loading && loadingText ? loadingText : children
|
|
445
|
+
}
|
|
446
|
+
) });
|
|
447
|
+
}
|
|
448
|
+
));
|
|
449
|
+
SimpleButton.displayName = "SimpleButton";
|
|
450
|
+
var SimpleButton_default = SimpleButton;
|
|
451
|
+
|
|
452
|
+
// src/components/AuthorizedView/AuthorizedView.tsx
|
|
453
|
+
import { Fragment as Fragment4, jsx as jsx9 } from "react/jsx-runtime";
|
|
454
|
+
var AuthorizedView = ({ children, show }) => {
|
|
455
|
+
if (!show) return /* @__PURE__ */ jsx9(Fragment4, {});
|
|
456
|
+
return /* @__PURE__ */ jsx9(Fragment4, { children });
|
|
457
|
+
};
|
|
458
|
+
var AuthorizedView_default = AuthorizedView;
|
|
459
|
+
|
|
460
|
+
// src/components/CancelButton/CancelButton.tsx
|
|
461
|
+
import { Button as Button3 } from "@mui/material";
|
|
462
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
463
|
+
var CancelButton = ({
|
|
464
|
+
isSubmitting,
|
|
465
|
+
handleCancel,
|
|
466
|
+
sx
|
|
467
|
+
}) => {
|
|
468
|
+
return /* @__PURE__ */ jsx10(
|
|
469
|
+
Button3,
|
|
470
|
+
{
|
|
471
|
+
variant: "outlined",
|
|
472
|
+
onClick: handleCancel,
|
|
473
|
+
disabled: isSubmitting,
|
|
474
|
+
sx,
|
|
475
|
+
children: "Cancel"
|
|
476
|
+
}
|
|
477
|
+
);
|
|
478
|
+
};
|
|
479
|
+
var CancelButton_default = CancelButton;
|
|
480
|
+
|
|
481
|
+
export {
|
|
482
|
+
ClearButton_default,
|
|
483
|
+
FilterButton_default,
|
|
484
|
+
FilterWrapper_default,
|
|
485
|
+
FormWrapper_default,
|
|
486
|
+
LabelText_default,
|
|
487
|
+
ListWrapper_default,
|
|
488
|
+
SimpleToolbar_default,
|
|
489
|
+
SimpleButton_default,
|
|
490
|
+
AuthorizedView_default,
|
|
491
|
+
CancelButton_default
|
|
492
|
+
};
|
|
493
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2NvbXBvbmVudHMvQ2xlYXJCdXR0b24vQ2xlYXJCdXR0b24udHN4IiwgIi4uL3NyYy9jb21wb25lbnRzL0ZpbHRlckJ1dHRvbi9GaWx0ZXJCdXR0b24udHN4IiwgIi4uL3NyYy9jb21wb25lbnRzL0ZpbHRlcldyYXBwZXIvRmlsdGVyV3JhcHBlci50c3giLCAiLi4vc3JjL2NvbXBvbmVudHMvRm9ybVdyYXBwZXIvRm9ybVdyYXBwZXIudHN4IiwgIi4uL3NyYy9jb21wb25lbnRzL0xhYmVsVGV4dC9MYWJlbFRleHQudHN4IiwgIi4uL3NyYy9jb21wb25lbnRzL0xpc3RXcmFwcGVyL0xpc3RXcmFwcGVyLnRzeCIsICIuLi9zcmMvY29tcG9uZW50cy9TaW1wbGVUb29sYmFyL1NpbXBsZVRvb2xiYXIudHN4IiwgIi4uL3NyYy9jb21wb25lbnRzL1NpbXBsZUJ1dHRvbi9TaW1wbGVCdXR0b24udHN4IiwgIi4uL3NyYy9jb21wb25lbnRzL0F1dGhvcml6ZWRWaWV3L0F1dGhvcml6ZWRWaWV3LnRzeCIsICIuLi9zcmMvY29tcG9uZW50cy9DYW5jZWxCdXR0b24vQ2FuY2VsQnV0dG9uLnRzeCJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHR5cGUgeyBTeFByb3BzIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbi8qKlxuICogUHJvcHMgZm9yIHRoZSBDbGVhckJ1dHRvbiBjb21wb25lbnQuXG4gKlxuICogQHB1YmxpY1xuICovXG5pbnRlcmZhY2UgQ2xlYXJCdXR0b25Qcm9wcyB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgYSBmb3JtIG9yIG9wZXJhdGlvbiBpcyBjdXJyZW50bHkgYmVpbmcgc3VibWl0dGVkLlxuICAgKiBXaGVuIHRydWUsIHRoZSBidXR0b24gaXMgZGlzYWJsZWQgdG8gcHJldmVudCBtdWx0aXBsZSBjbGVhciBhY3Rpb25zLlxuICAgKi9cbiAgaXNTdWJtaXR0aW5nOiBib29sZWFuO1xuICAvKipcbiAgICogQ2FsbGJhY2sgZnVuY3Rpb24gZXhlY3V0ZWQgd2hlbiB0aGUgY2xlYXIgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAqIFNob3VsZCBoYW5kbGUgdGhlIGNsZWFyaW5nIGxvZ2ljIChlLmcuLCBmb3JtIHJlc2V0LCBkYXRhIGNsZWFyaW5nKS5cbiAgICovXG4gIGhhbmRsZUNsZWFyOiAoKSA9PiB2b2lkO1xuICAvKipcbiAgICogT3B0aW9uYWwgTVVJIHN4IHByb3AgZm9yIGN1c3RvbSBzdHlsaW5nLlxuICAgKiBAZXhhbXBsZSB7IG10OiAyLCBjb2xvcjogJ3dhcm5pbmcubWFpbicgfVxuICAgKi9cbiAgc3g/OiBTeFByb3BzO1xuICAvKipcbiAgICogT3B0aW9uYWwgbG9jYWxTdG9yYWdlIGtleSB0byByZW1vdmUgd2hlbiBjbGVhcmluZy5cbiAgICogSWYgcHJvdmlkZWQsIHRoZSBjb3JyZXNwb25kaW5nIGxvY2FsU3RvcmFnZSBpdGVtIHdpbGwgYmUgcmVtb3ZlZCBvbiBjbGljay5cbiAgICogQGV4YW1wbGUgXCJ1c2VyLXByZWZlcmVuY2VzXCIgb3IgXCJmb3JtLWRhdGFcIlxuICAgKi9cbiAgc3RvcmVLZXk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogU3RhbmRhcmRpemVkIGNsZWFyIGJ1dHRvbiBjb21wb25lbnQgd2l0aCBsb2NhbFN0b3JhZ2UgaW50ZWdyYXRpb24uXG4gKlxuICogVGhpcyBjb21wb25lbnQgcHJvdmlkZXMgYSBjb25zaXN0ZW50IGNsZWFyIGJ1dHRvbiBpbXBsZW1lbnRhdGlvbiB0aGF0IGhhbmRsZXNcbiAqIGJvdGggY2FsbGJhY2sgZXhlY3V0aW9uIGFuZCBvcHRpb25hbCBsb2NhbFN0b3JhZ2UgY2xlYW51cC4gSXQgYXV0b21hdGljYWxseVxuICogZGlzYWJsZXMgZHVyaW5nIGZvcm0gc3VibWlzc2lvbnMgYW5kIGNhbiBjbGVhciBzdG9yZWQgZGF0YSB3aGVuIG5lZWRlZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogQmFzaWMgdXNhZ2U6XG4gKiBgYGB0c3hcbiAqIDxDbGVhckJ1dHRvblxuICogICBpc1N1Ym1pdHRpbmc9e2lzTG9hZGluZ31cbiAqICAgaGFuZGxlQ2xlYXI9eygpID0+IGZvcm0ucmVzZXQoKX1cbiAqIC8+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZVxuICogV2l0aCBsb2NhbFN0b3JhZ2UgY2xlYW51cDpcbiAqIGBgYHRzeFxuICogPENsZWFyQnV0dG9uXG4gKiAgIGlzU3VibWl0dGluZz17Zm9ybS5mb3JtU3RhdGUuaXNTdWJtaXR0aW5nfVxuICogICBoYW5kbGVDbGVhcj17KCkgPT4gc2V0RmlsdGVycyh7fSl9XG4gKiAgIHN0b3JlS2V5PVwidXNlci1maWx0ZXJzXCJcbiAqIC8+XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBDb21wb25lbnQgcHJvcHMgZm9yIGNsZWFyIGJ1dHRvbiBjb25maWd1cmF0aW9uXG4gKiBAcmV0dXJucyBNVUkgQnV0dG9uIGNvbXBvbmVudCBjb25maWd1cmVkIGFzIGEgY2xlYXIgYnV0dG9uXG4gKlxuICogQHB1YmxpY1xuICovXG5jb25zdCBDbGVhckJ1dHRvbiA9ICh7XG4gIGlzU3VibWl0dGluZyxcbiAgaGFuZGxlQ2xlYXIsXG4gIHN4LFxuICBzdG9yZUtleSxcbn06IENsZWFyQnV0dG9uUHJvcHMpID0+IHtcbiAgY29uc3Qgb25DbGljayA9ICgpID0+IHtcbiAgICBoYW5kbGVDbGVhcigpO1xuICAgIGlmIChzdG9yZUtleSAhPSBudWxsKSB7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShzdG9yZUtleSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJ1dHRvblxuICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICBkaXNhYmxlZD17aXNTdWJtaXR0aW5nfVxuICAgICAgc3g9e3N4fVxuICAgID5cbiAgICAgIENsZWFyXG4gICAgPC9CdXR0b24+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBDbGVhckJ1dHRvbjtcbiIsICJpbXBvcnQgRmlsdGVyQWx0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJBbHRcIjtcbmltcG9ydCB7IExvYWRpbmdCdXR0b24gfSBmcm9tIFwiQG11aS9sYWJcIjtcbmltcG9ydCB0eXBlIHsgU3hQcm9wcyB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBCYWRnZSwgdXNlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG4vKipcbiAqIFByb3BzIGZvciB0aGUgRmlsdGVyQnV0dG9uIGNvbXBvbmVudC5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmludGVyZmFjZSBGaWx0ZXJCdXR0b25Qcm9wcyB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgYSBmaWx0ZXIgb3BlcmF0aW9uIGlzIGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQuXG4gICAqIFdoZW4gdHJ1ZSwgc2hvd3MgbG9hZGluZyBzcGlubmVyIGFuZCBkaXNhYmxlcyB0aGUgYnV0dG9uLlxuICAgKi9cbiAgaXNTdWJtaXR0aW5nOiBib29sZWFuO1xuICAvKipcbiAgICogQ29udHJvbHMgYnV0dG9uIHZpc2liaWxpdHkgYW5kIGVuYWJsZWQgc3RhdGUuXG4gICAqIFdoZW4gZmFsc2UsIHRoZSBidXR0b24gaXMgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0VmFsdWUgdHJ1ZVxuICAgKi9cbiAgc2hvdz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDdXN0b20gdGV4dCB0byBkaXNwbGF5IG9uIHRoZSBidXR0b24uXG4gICAqIEBkZWZhdWx0VmFsdWUgXCJGaWx0ZXJcIlxuICAgKiBAZXhhbXBsZSBcIkFwcGx5IEZpbHRlcnNcIiBvciBcIlNlYXJjaFwiXG4gICAqL1xuICB0aXRsZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEN1c3RvbSBpY29uIHRvIGRpc3BsYXkgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBmaWx0ZXIgaWNvbi5cbiAgICogQGV4YW1wbGUgPFNlYXJjaEljb24gLz5cbiAgICovXG4gIGljb24/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBNVUkgc3ggcHJvcCBmb3IgY3VzdG9tIGJ1dHRvbiBzdHlsaW5nLlxuICAgKiBAZXhhbXBsZSB7IG10OiAyLCBtaW5XaWR0aDogMTIwIH1cbiAgICovXG4gIHN4PzogU3hQcm9wcztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIE1VSSBzeCBwcm9wIGZvciBjdXN0b20gaWNvbiBzdHlsaW5nLlxuICAgKiBAZXhhbXBsZSB7IGNvbG9yOiAncHJpbWFyeS5tYWluJywgZm9udFNpemU6IDE4IH1cbiAgICovXG4gIGljb25TeD86IFN4UHJvcHM7XG59XG5cbi8qKlxuICogRmlsdGVyIGJ1dHRvbiBjb21wb25lbnQgd2l0aCBsb2FkaW5nIHN0YXRlcyBhbmQgY3VzdG9taXphYmxlIGFwcGVhcmFuY2UuXG4gKlxuICogVGhpcyBjb21wb25lbnQgcHJvdmlkZXMgYSBzdGFuZGFyZGl6ZWQgZmlsdGVyL3N1Ym1pdCBidXR0b24gd2l0aCBpbnRlZ3JhdGVkIGxvYWRpbmdcbiAqIHN0YXRlcywgaWNvbiBzdXBwb3J0LCBhbmQgYmFkZ2Ugc3R5bGluZy4gSXQncyBkZXNpZ25lZCBmb3IgdXNlIGluIGZpbHRlciBmb3Jtc1xuICogYW5kIHNlYXJjaCBpbnRlcmZhY2VzIHdoZXJlIHVzZXJzIG5lZWQgdG8gYXBwbHkgZmlsdGVyaW5nIGNyaXRlcmlhLlxuICpcbiAqIEBleGFtcGxlXG4gKiBCYXNpYyB1c2FnZTpcbiAqIGBgYHRzeFxuICogPEZpbHRlckJ1dHRvblxuICogICBpc1N1Ym1pdHRpbmc9e2lzTG9hZGluZ31cbiAqICAgc2hvdz17aGFzRmlsdGVyc31cbiAqIC8+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZVxuICogQ3VzdG9tIHRpdGxlIGFuZCBpY29uOlxuICogYGBgdHN4XG4gKiA8RmlsdGVyQnV0dG9uXG4gKiAgIGlzU3VibWl0dGluZz17Zm9ybS5mb3JtU3RhdGUuaXNTdWJtaXR0aW5nfVxuICogICB0aXRsZT1cIkFwcGx5IFNlYXJjaFwiXG4gKiAgIGljb249ezxTZWFyY2hJY29uIC8+fVxuICogICBzaG93PXt0cnVlfVxuICogLz5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiBXaXRoIGN1c3RvbSBzdHlsaW5nOlxuICogYGBgdHN4XG4gKiA8RmlsdGVyQnV0dG9uXG4gKiAgIGlzU3VibWl0dGluZz17aXNQcm9jZXNzaW5nfVxuICogICB0aXRsZT1cIkZpbHRlciBSZXN1bHRzXCJcbiAqICAgc3g9e3sgbWluV2lkdGg6IDE1MCwgbXQ6IDIgfX1cbiAqICAgaWNvblN4PXt7IGZvbnRTaXplOiAyMCB9fVxuICogLz5cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIENvbXBvbmVudCBwcm9wcyBmb3IgZmlsdGVyIGJ1dHRvbiBjb25maWd1cmF0aW9uXG4gKiBAcmV0dXJucyBNVUkgTG9hZGluZ0J1dHRvbiBjb21wb25lbnQgY29uZmlndXJlZCBhcyBhIGZpbHRlciBidXR0b25cbiAqXG4gKiBAcHVibGljXG4gKi9cbmNvbnN0IEZpbHRlckJ1dHRvbiA9ICh7XG4gIGlzU3VibWl0dGluZyxcbiAgc2hvdyxcbiAgdGl0bGUsXG4gIGljb24sXG4gIHN4LFxuICBpY29uU3gsXG59OiBGaWx0ZXJCdXR0b25Qcm9wcykgPT4ge1xuICByZXR1cm4gKFxuICAgIDxMb2FkaW5nQnV0dG9uXG4gICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgbG9hZGluZz17aXNTdWJtaXR0aW5nfVxuICAgICAgZGlzYWJsZWQ9eyFzaG93fVxuICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIHN4PXt7XG4gICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICAgICAgICAuLi5zeCxcbiAgICAgIH19XG4gICAgICBzdGFydEljb249e1xuICAgICAgICA8QmFkZ2UgY29sb3I9XCJlcnJvclwiIHZhcmlhbnQ9XCJzdGFuZGFyZFwiPlxuICAgICAgICAgIHtpY29uID8gaWNvbiA6IDxGaWx0ZXJBbHRJY29uIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHN4PXtpY29uU3h9IC8+fVxuICAgICAgICA8L0JhZGdlPlxuICAgICAgfVxuICAgID5cbiAgICAgIHt0aXRsZT8udHJpbSgpID09PSBcIlwiIHx8ICF0aXRsZSA/IFwiRmlsdGVyXCIgOiB0aXRsZX1cbiAgICA8L0xvYWRpbmdCdXR0b24+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXJCdXR0b247XG4iLCAiaW1wb3J0IE1hbmFnZVNlYXJjaEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvTWFuYWdlU2VhcmNoXCI7XG5pbXBvcnQgdHlwZSB7XG4gIFN4UHJvcHNcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2FyZCxcbiAgQ2FyZENvbnRlbnQsXG4gIENhcmRIZWFkZXIsXG4gIERpdmlkZXIsXG4gIEdyaWQsXG4gIFR5cG9ncmFwaHksXG4gIHVzZVRoZW1lLFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wc1dpdGhDaGlsZHJlbiwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5cbi8qKlxuICogUHJvcHMgZm9yIHRoZSBGaWx0ZXJXcmFwcGVyIGNvbXBvbmVudC5cbiAqXG4gKiBAcHVibGljXG4gKi9cbnR5cGUgRmlsdGVyV3JhcHBlclByb3BzID0gUHJvcHNXaXRoQ2hpbGRyZW48e1xuICAvKipcbiAgICogVGl0bGUgdGV4dCBkaXNwbGF5ZWQgaW4gdGhlIGNhcmQgaGVhZGVyLlxuICAgKiBAZGVmYXVsdFZhbHVlIFwiRmlsdGVyXCJcbiAgICogQGV4YW1wbGUgXCJTZWFyY2ggQ3JpdGVyaWFcIiBvciBcIkFkdmFuY2VkIEZpbHRlcnNcIlxuICAgKi9cbiAgdGl0bGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgYWN0aXZlIGZpbHRlcnMgdG8gZGlzcGxheSBpbiB0aGUgaGVhZGVyLlxuICAgKiBPbmx5IHNob3duIHdoZW4gc2hvd0NvdW50IGlzIHRydWUuXG4gICAqIEBleGFtcGxlIDMgZm9yIFwiRmlsdGVyICgzKVwiXG4gICAqL1xuICBmaWx0ZXJDb3VudD86IG51bWJlcjtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIE1VSSBzeCBwcm9wIGZvciBjdXN0b20gY2FyZCBzdHlsaW5nLlxuICAgKiBAZXhhbXBsZSB7IG10OiAyLCBib3hTaGFkb3c6IDIgfVxuICAgKi9cbiAgY2FyZFN4PzogU3hQcm9wcztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIE1VSSBzeCBwcm9wIGZvciBjdXN0b20gdGl0bGUgdGV4dCBzdHlsaW5nLlxuICAgKiBAZXhhbXBsZSB7IGZvbnRTaXplOiAxOCwgZm9udFdlaWdodDogJ2JvbGQnIH1cbiAgICovXG4gIHRleHRTeD86IFN4UHJvcHM7XG4gIC8qKlxuICAgKiBDdXN0b20gaWNvbiB0byBkaXNwbGF5IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgc2VhcmNoIGljb24uXG4gICAqIEBleGFtcGxlIDxGaWx0ZXJMaXN0SWNvbiAvPlxuICAgKi9cbiAgaWNvbj86IFJlYWN0Tm9kZTtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIE1VSSBzeCBwcm9wIGZvciBjdXN0b20gaWNvbiBzdHlsaW5nLlxuICAgKiBAZXhhbXBsZSB7IGNvbG9yOiAnc2Vjb25kYXJ5Lm1haW4nLCBmb250U2l6ZTogMjQgfVxuICAgKi9cbiAgaWNvblN4PzogU3hQcm9wcztcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzcGxheSB0aGUgZmlsdGVyIGNvdW50IGluIHRoZSBoZWFkZXIuXG4gICAqIEBkZWZhdWx0VmFsdWUgZmFsc2VcbiAgICovXG4gIHNob3dDb3VudD86IGJvb2xlYW47XG59PjtcblxuLyoqXG4gKiBDYXJkLWJhc2VkIHdyYXBwZXIgY29tcG9uZW50IGZvciBvcmdhbml6aW5nIGZpbHRlciBjb250cm9scyBhbmQgZm9ybSBlbGVtZW50cy5cbiAqXG4gKiBUaGlzIGNvbXBvbmVudCBwcm92aWRlcyBhIGNvbnNpc3RlbnQgbGF5b3V0IGZvciBmaWx0ZXIgaW50ZXJmYWNlcyB3aXRoIGEgaGVhZGVyLFxuICogb3B0aW9uYWwgZmlsdGVyIGNvdW50IGRpc3BsYXksIGFuZCBhIGdyaWQtYmFzZWQgY29udGVudCBhcmVhLiBJdCdzIGRlc2lnbmVkIHRvXG4gKiBjb250YWluIGZvcm0gY29udHJvbHMgYW5kIGZpbHRlciBlbGVtZW50cyBpbiBhIHZpc3VhbGx5IG9yZ2FuaXplZCBtYW5uZXIuXG4gKlxuICogQGV4YW1wbGVcbiAqIEJhc2ljIHVzYWdlOlxuICogYGBgdHN4XG4gKiA8RmlsdGVyV3JhcHBlcj5cbiAqICAgPEdyaWQgaXRlbSB4cz17MTJ9IG1kPXs2fT5cbiAqICAgICA8VGV4dEZpZWxkIGxhYmVsPVwiU2VhcmNoXCIgLz5cbiAqICAgPC9HcmlkPlxuICogICA8R3JpZCBpdGVtIHhzPXsxMn0gbWQ9ezZ9PlxuICogICAgIDxTZWxlY3QgbGFiZWw9XCJDYXRlZ29yeVwiIC8+XG4gKiAgIDwvR3JpZD5cbiAqIDwvRmlsdGVyV3JhcHBlcj5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiBXaXRoIGN1c3RvbSB0aXRsZSBhbmQgY291bnQ6XG4gKiBgYGB0c3hcbiAqIDxGaWx0ZXJXcmFwcGVyXG4gKiAgIHRpdGxlPVwiQWR2YW5jZWQgU2VhcmNoXCJcbiAqICAgZmlsdGVyQ291bnQ9e2FjdGl2ZUZpbHRlcnMubGVuZ3RofVxuICogICBzaG93Q291bnQ9e3RydWV9XG4gKiA+XG4gKiAgIHtmaWx0ZXJDb250cm9sc31cbiAqIDwvRmlsdGVyV3JhcHBlcj5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiBXaXRoIGN1c3RvbSBzdHlsaW5nOlxuICogYGBgdHN4XG4gKiA8RmlsdGVyV3JhcHBlclxuICogICB0aXRsZT1cIlByb2R1Y3QgRmlsdGVyc1wiXG4gKiAgIGljb249ezxGaWx0ZXJMaXN0SWNvbiAvPn1cbiAqICAgY2FyZFN4PXt7IG10OiAzLCBib3JkZXJSYWRpdXM6IDIgfX1cbiAqICAgdGV4dFN4PXt7IGNvbG9yOiAnc2Vjb25kYXJ5Lm1haW4nIH19XG4gKiA+XG4gKiAgIHtjaGlsZHJlbn1cbiAqIDwvRmlsdGVyV3JhcHBlcj5cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIENvbXBvbmVudCBwcm9wcyBpbmNsdWRpbmcgY2hpbGRyZW4gYW5kIHN0eWxpbmcgb3B0aW9uc1xuICogQHJldHVybnMgTVVJIENhcmQgY29tcG9uZW50IHdpdGggc3RydWN0dXJlZCBmaWx0ZXIgbGF5b3V0XG4gKlxuICogQHB1YmxpY1xuICovXG5jb25zdCBGaWx0ZXJXcmFwcGVyID0gKHtcbiAgY2hpbGRyZW4sXG4gIHRpdGxlLFxuICBmaWx0ZXJDb3VudCxcbiAgY2FyZFN4LFxuICB0ZXh0U3gsXG4gIGljb24sXG4gIGljb25TeCxcbiAgc2hvd0NvdW50LFxufTogRmlsdGVyV3JhcHBlclByb3BzKSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcblxuICByZXR1cm4gKFxuICAgIDxDYXJkXG4gICAgICBzeD17e1xuICAgICAgICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICAgICAgICBib3JkZXJSYWRpdXM6IFwiMHB4XCIsXG4gICAgICAgIG1iOiAyLFxuICAgICAgICAuLi5jYXJkU3gsXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgZmxleFdyYXA6IFwid3JhcFwiLFxuICAgICAgICAgIHA6IFwiMXJlbVwiLFxuICAgICAgICAgIFwiLk11aUNhcmRIZWFkZXItYWN0aW9uXCI6IHtcbiAgICAgICAgICAgIG1hcmdpbjogMCxcbiAgICAgICAgICAgIGFsaWduU2VsZjogXCJjZW50ZXJcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgICAgIH19XG4gICAgICAgIHRpdGxlPXtcbiAgICAgICAgICA8Qm94IHN4PXt7IGRpc3BsYXk6IFwiZmxleFwiLCBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLCBnYXA6IDAuNSB9fT5cbiAgICAgICAgICAgIHtpY29uID8gKFxuICAgICAgICAgICAgICBpY29uXG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TWFuYWdlU2VhcmNoSWNvblxuICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiMi41cmVtXCIsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS5wcmltYXJ5Lm1haW4sXG4gICAgICAgICAgICAgICAgICAuLi5pY29uU3gsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICB2YXJpYW50PVwiaDVcIlxuICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IFwiYm9sZFwiLFxuICAgICAgICAgICAgICAgIGNvbG9yOiB0aGVtZS5wYWxldHRlLnByaW1hcnkubWFpbixcbiAgICAgICAgICAgICAgICAuLi50ZXh0U3gsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0aXRsZSA/IHRpdGxlIDogXCJGaWx0ZXJcIn17XCIgXCJ9XG4gICAgICAgICAgICAgIHtzaG93Q291bnQgPyBgKCR7ZmlsdGVyQ291bnQgPyBmaWx0ZXJDb3VudCA6IDB9KWAgOiA8PjwvPn1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgfVxuICAgICAgPjwvQ2FyZEhlYWRlcj5cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8Q2FyZENvbnRlbnQgc3g9e3sgcHk6IDIgfX0+XG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzcGFjaW5nPXsyfT5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgPC9DYXJkPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVyV3JhcHBlcjtcbiIsICJpbXBvcnQgdHlwZSB7XG4gIFN4UHJvcHNcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2FyZCxcbiAgQ2FyZENvbnRlbnQsXG4gIENhcmRIZWFkZXIsXG4gIERpdmlkZXIsXG4gIEdyaWQsXG4gIFR5cG9ncmFwaHksXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BzV2l0aENoaWxkcmVuLCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcblxuLyoqXG4gKiBQcm9wcyBmb3IgdGhlIEZvcm1XcmFwcGVyIGNvbXBvbmVudC5cbiAqXG4gKiBAcHVibGljXG4gKi9cbnR5cGUgRm9ybVdyYXBwZXIgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIC8qKlxuICAgKiBUaXRsZSB0ZXh0IGRpc3BsYXllZCBpbiB0aGUgZm9ybSBoZWFkZXIuXG4gICAqIEBleGFtcGxlIFwiQ3JlYXRlIFVzZXJcIiBvciBcIkVkaXQgUHJvZmlsZVwiXG4gICAqL1xuICB0aXRsZTogc3RyaW5nO1xuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBmb3JtIGlzIGluIGVkaXQgbW9kZSAoY3VycmVudGx5IHVudXNlZCBpbiBpbXBsZW1lbnRhdGlvbikuXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgcHJvcCBpcyBkZWZpbmVkIGJ1dCBub3QgdXNlZCBpbiB0aGUgY29tcG9uZW50IGxvZ2ljXG4gICAqL1xuICBlZGl0TW9kZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDdXN0b20gaWNvbiB0byBkaXNwbGF5IGluIHRoZSBoZWFkZXIgbmV4dCB0byB0aGUgdGl0bGUuXG4gICAqIEBleGFtcGxlIDxQZXJzb25JY29uIC8+IG9yIDxFZGl0SWNvbiAvPlxuICAgKi9cbiAgaWNvbj86IFJlYWN0Tm9kZTtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIE1VSSBzeCBwcm9wIGZvciBjdXN0b20gY2FyZCBzdHlsaW5nLlxuICAgKiBAZXhhbXBsZSB7IG10OiAyLCBtYXhXaWR0aDogNjAwIH1cbiAgICovXG4gIGNhcmRTeD86IFN4UHJvcHM7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBNVUkgc3ggcHJvcCBmb3IgY3VzdG9tIHRpdGxlIHRleHQgc3R5bGluZy5cbiAgICogQGV4YW1wbGUgeyBmb250U2l6ZTogMjAsIGZvbnRXZWlnaHQ6ICdib2xkJyB9XG4gICAqL1xuICB0ZXh0U3g/OiBTeFByb3BzO1xuICAvKipcbiAgICogQWN0aW9uIGJ1dHRvbiBvciBlbGVtZW50IHRvIGRpc3BsYXkgaW4gdGhlIGhlYWRlciAoZS5nLiwgc2F2ZSwgY2xvc2UpLlxuICAgKiBAZXhhbXBsZSA8QnV0dG9uPlNhdmU8L0J1dHRvbj4gb3IgPEljb25CdXR0b24+PENsb3NlSWNvbiAvPjwvSWNvbkJ1dHRvbj5cbiAgICovXG4gIGFjdGlvbkJ1dHRvbj86IFJlYWN0Tm9kZTtcbn0+O1xuXG4vKipcbiAqIENhcmQtYmFzZWQgd3JhcHBlciBjb21wb25lbnQgZm9yIG9yZ2FuaXppbmcgZm9ybSBlbGVtZW50cyB3aXRoIGhlYWRlciBhbmQgYWN0aW9ucy5cbiAqXG4gKiBUaGlzIGNvbXBvbmVudCBwcm92aWRlcyBhIHN0cnVjdHVyZWQgbGF5b3V0IGZvciBmb3JtcyB3aXRoIGEgdGl0bGUgaGVhZGVyLFxuICogb3B0aW9uYWwgaWNvbiwgYWN0aW9uIGJ1dHRvbnMsIGFuZCBhIGdyaWQtYmFzZWQgY29udGVudCBhcmVhLiBJdCBjcmVhdGVzXG4gKiBhIGNvbnNpc3RlbnQgdmlzdWFsIHN0cnVjdHVyZSBmb3IgZm9ybSBpbnRlcmZhY2VzIHRocm91Z2hvdXQgdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBleGFtcGxlXG4gKiBCYXNpYyBmb3JtIHdyYXBwZXI6XG4gKiBgYGB0c3hcbiAqIDxGb3JtV3JhcHBlciB0aXRsZT1cIlVzZXIgSW5mb3JtYXRpb25cIj5cbiAqICAgPEdyaWQgaXRlbSB4cz17MTJ9IG1kPXs2fT5cbiAqICAgICA8VGV4dEZpZWxkIGxhYmVsPVwiRmlyc3QgTmFtZVwiIC8+XG4gKiAgIDwvR3JpZD5cbiAqICAgPEdyaWQgaXRlbSB4cz17MTJ9IG1kPXs2fT5cbiAqICAgICA8VGV4dEZpZWxkIGxhYmVsPVwiTGFzdCBOYW1lXCIgLz5cbiAqICAgPC9HcmlkPlxuICogPC9Gb3JtV3JhcHBlcj5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiBXaXRoIGljb24gYW5kIGFjdGlvbiBidXR0b246XG4gKiBgYGB0c3hcbiAqIDxGb3JtV3JhcHBlclxuICogICB0aXRsZT1cIkVkaXQgUHJvZmlsZVwiXG4gKiAgIGljb249ezxQZXJzb25JY29uIC8+fVxuICogICBhY3Rpb25CdXR0b249e1xuICogICAgIDxCdXR0b24gdmFyaWFudD1cImNvbnRhaW5lZFwiIHR5cGU9XCJzdWJtaXRcIj5cbiAqICAgICAgIFNhdmUgQ2hhbmdlc1xuICogICAgIDwvQnV0dG9uPlxuICogICB9XG4gKiA+XG4gKiAgIHtmb3JtRmllbGRzfVxuICogPC9Gb3JtV3JhcHBlcj5cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIENvbXBvbmVudCBwcm9wcyBpbmNsdWRpbmcgY2hpbGRyZW4gYW5kIGxheW91dCBvcHRpb25zXG4gKiBAcmV0dXJucyBNVUkgQ2FyZCBjb21wb25lbnQgd2l0aCBzdHJ1Y3R1cmVkIGZvcm0gbGF5b3V0XG4gKlxuICogQHB1YmxpY1xuICovXG5jb25zdCBGb3JtV3JhcHBlciA9ICh7XG4gIGNoaWxkcmVuLFxuICB0aXRsZSxcbiAgZWRpdE1vZGUsXG4gIGNhcmRTeCxcbiAgdGV4dFN4LFxuICBpY29uLFxuICBhY3Rpb25CdXR0b24sXG59OiBGb3JtV3JhcHBlcikgPT4ge1xuICByZXR1cm4gKFxuICAgIDxDYXJkXG4gICAgICBzeD17e1xuICAgICAgICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICAgICAgICBib3JkZXJSYWRpdXM6IFwiMHB4XCIsXG4gICAgICAgIC4uLmNhcmRTeCxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBkaXNwbGF5OiBcImZsZXhcIixcbiAgICAgICAgICBmbGV4V3JhcDogXCJ3cmFwXCIsXG4gICAgICAgICAgcDogXCIxcmVtXCIsXG4gICAgICAgICAgXCIuTXVpQ2FyZEhlYWRlci1hY3Rpb25cIjoge1xuICAgICAgICAgICAgbWFyZ2luOiAwLFxuICAgICAgICAgICAgYWxpZ25TZWxmOiBcImNlbnRlclwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH19XG4gICAgICAgIHRpdGxlPXtcbiAgICAgICAgICA8Qm94XG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBkaXNwbGF5OiBcImZsZXhcIixcbiAgICAgICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Qm94IHN4PXt7IGRpc3BsYXk6IFwiZmxleFwiLCBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLCBnYXA6IDAuNSB9fT5cbiAgICAgICAgICAgICAge2ljb24gPz8gaWNvbn1cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHkgY29sb3I9XCJwcmltYXJ5XCIgc3g9e3RleHRTeH0+XG4gICAgICAgICAgICAgICAge3RpdGxlfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgIHthY3Rpb25CdXR0b259XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgIH1cbiAgICAgID48L0NhcmRIZWFkZXI+XG4gICAgICA8RGl2aWRlciBzeD17eyBtdDogMCB9fSAvPlxuICAgICAgPENhcmRDb250ZW50PlxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3BhY2luZz17Mn0+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0NhcmRDb250ZW50PlxuICAgIDwvQ2FyZD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZvcm1XcmFwcGVyO1xuIiwgImltcG9ydCB0eXBlIHsgU3hQcm9wcyB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBHcmlkLCBUb29sdGlwLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuLyoqXG4gKiBQcm9wcyBmb3IgdGhlIExhYmVsVGV4dCBjb21wb25lbnQuXG4gKlxuICogQHB1YmxpY1xuICovXG5pbnRlcmZhY2UgTGFiZWxUZXh0UHJvcHMge1xuICAvKipcbiAgICogTGFiZWwgdGV4dCB0byBkaXNwbGF5IG9uIHRoZSBsZWZ0IHNpZGUuXG4gICAqIEBleGFtcGxlIFwiTmFtZVwiIG9yIFwiRW1haWwgQWRkcmVzc1wiXG4gICAqL1xuICBsYWJlbDogc3RyaW5nO1xuICAvKipcbiAgICogVmFsdWUgY29udGVudCB0byBkaXNwbGF5IG9uIHRoZSByaWdodCBzaWRlLlxuICAgKiBDYW4gYmUgdGV4dCwgbnVtYmVycywgb3IgUmVhY3QgZWxlbWVudHMuXG4gICAqIEBleGFtcGxlIFwiSm9obiBEb2VcIiBvciA8TGluaz5WaWV3IERldGFpbHM8L0xpbms+XG4gICAqL1xuICB2YWx1ZTogUmVhY3QuUmVhY3ROb2RlO1xuICAvKipcbiAgICogQ3VzdG9tIGdyaWQgc2l6aW5nIGZvciBsYWJlbCBhbmQgdmFsdWUgc2VjdGlvbnMuXG4gICAqIEBkZWZhdWx0VmFsdWUgeyBsYWJlbFNpemU6IHsgeHM6IDYsIHNtOiA2LCBtZDogNiB9LCB2YWx1ZVNpemU6IHsgeHM6IDEyLCBzbTogNiwgbWQ6IDYgfSB9XG4gICAqL1xuICBncmlkU2l6ZT86IHtcbiAgICAvKiogR3JpZCBzaXplIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBsYWJlbCBzZWN0aW9uICovXG4gICAgbGFiZWxTaXplOiB7IHhzOiBudW1iZXI7IHNtOiBudW1iZXI7IG1kOiBudW1iZXIgfTtcbiAgICAvKiogR3JpZCBzaXplIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB2YWx1ZSBzZWN0aW9uICovXG4gICAgdmFsdWVTaXplOiB7IHhzOiBudW1iZXI7IHNtOiBudW1iZXI7IG1kOiBudW1iZXIgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEdyaWQgc2l6ZSBjb25maWd1cmF0aW9uIGZvciB0aGUgZW50aXJlIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHRWYWx1ZSB7IHhzOiAxMiwgc206IDYsIG1kOiA2IH1cbiAgICovXG4gIGNvbnRhaW5lclNpemU/OiB7IHhzOiBudW1iZXI7IHNtOiBudW1iZXI7IG1kOiBudW1iZXIgfTtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIE1VSSBzeCBwcm9wIGZvciBjdXN0b20gbGFiZWwgc3R5bGluZy5cbiAgICogQGV4YW1wbGUgeyBmb250V2VpZ2h0OiAnYm9sZCcsIGNvbG9yOiAncHJpbWFyeS5tYWluJyB9XG4gICAqL1xuICBsYWJlbFN4PzogU3hQcm9wcztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIE1VSSBzeCBwcm9wIGZvciBjdXN0b20gdmFsdWUgc3R5bGluZy5cbiAgICogQGV4YW1wbGUgeyBjb2xvcjogJ3RleHQuc2Vjb25kYXJ5JywgZm9udFN0eWxlOiAnaXRhbGljJyB9XG4gICAqL1xuICB2YWx1ZVN4PzogU3hQcm9wcztcbn1cblxuLyoqXG4gKiBSZXNwb25zaXZlIGxhYmVsLXZhbHVlIGRpc3BsYXkgY29tcG9uZW50IHdpdGggaG92ZXIgZWZmZWN0cyBhbmQgdGV4dCB0cnVuY2F0aW9uLlxuICpcbiAqIFRoaXMgY29tcG9uZW50IGNyZWF0ZXMgYSBjb25zaXN0ZW50IGxhYmVsLXZhbHVlIHBhaXIgbGF5b3V0IHRoYXQgYWRhcHRzIHRvIGRpZmZlcmVudFxuICogc2NyZWVuIHNpemVzLiBJdCBpbmNsdWRlcyBob3ZlciBlZmZlY3RzLCB0ZXh0IHRydW5jYXRpb24gd2l0aCB0b29sdGlwcywgYW5kXG4gKiBjdXN0b21pemFibGUgZ3JpZCBzaXppbmcgZm9yIGZsZXhpYmxlIGxheW91dHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIEJhc2ljIHVzYWdlOlxuICogYGBgdHN4XG4gKiA8TGFiZWxUZXh0XG4gKiAgIGxhYmVsPVwiRnVsbCBOYW1lXCJcbiAqICAgdmFsdWU9XCJKb2huIERvZVwiXG4gKiAvPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqIFdpdGggUmVhY3QgZWxlbWVudCB2YWx1ZTpcbiAqIGBgYHRzeFxuICogPExhYmVsVGV4dFxuICogICBsYWJlbD1cIlByb2ZpbGVcIlxuICogICB2YWx1ZT17PExpbmsgaHJlZj1cIi9wcm9maWxlXCI+VmlldyBQcm9maWxlPC9MaW5rPn1cbiAqIC8+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZVxuICogQ3VzdG9tIGdyaWQgc2l6aW5nOlxuICogYGBgdHN4XG4gKiA8TGFiZWxUZXh0XG4gKiAgIGxhYmVsPVwiRGVzY3JpcHRpb25cIlxuICogICB2YWx1ZT17bG9uZ0Rlc2NyaXB0aW9ufVxuICogICBncmlkU2l6ZT17e1xuICogICAgIGxhYmVsU2l6ZTogeyB4czogMTIsIHNtOiAzLCBtZDogMiB9LFxuICogICAgIHZhbHVlU2l6ZTogeyB4czogMTIsIHNtOiA5LCBtZDogMTAgfVxuICogICB9fVxuICogICBjb250YWluZXJTaXplPXt7IHhzOiAxMiwgc206IDEyLCBtZDogMTIgfX1cbiAqIC8+XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBDb21wb25lbnQgcHJvcHMgZm9yIGxhYmVsLXZhbHVlIGNvbmZpZ3VyYXRpb25cbiAqIEByZXR1cm5zIEdyaWQtYmFzZWQgbGF5b3V0IHdpdGggbGFiZWwgYW5kIHZhbHVlIHNlY3Rpb25zXG4gKlxuICogQHB1YmxpY1xuICovXG5jb25zdCBMYWJlbFRleHQgPSAoe1xuICBsYWJlbCxcbiAgdmFsdWUsXG4gIGdyaWRTaXplLFxuICBjb250YWluZXJTaXplLFxuICBsYWJlbFN4LFxuICB2YWx1ZVN4LFxufTogTGFiZWxUZXh0UHJvcHMpID0+IHtcbiAgY29uc3QgZGVmYXVsdEdyaWRTaXplID0ge1xuICAgIGxhYmVsU2l6ZTogeyB4czogNiwgc206IDYsIG1kOiA2IH0sXG4gICAgdmFsdWVTaXplOiB7IHhzOiAxMiwgc206IDYsIG1kOiA2IH0sXG4gIH07XG4gIGNvbnN0IGRlZmF1bHRDb250YWluZXJTaXplID0geyB4czogMTIsIHNtOiA2LCBtZDogNiB9O1xuICBjb25zdCBzaXplID0gZ3JpZFNpemUgfHwgZGVmYXVsdEdyaWRTaXplO1xuICBjb25zdCBjb250YWluZXIgPSBjb250YWluZXJTaXplIHx8IGRlZmF1bHRDb250YWluZXJTaXplO1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIHNpemU9e2NvbnRhaW5lcn1cbiAgICAgIHN4PXt7XG4gICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgICAgICBmbGV4RGlyZWN0aW9uOiB7IHhzOiBcImNvbHVtblwiLCBzbTogXCJyb3dcIiwgbWQ6IFwicm93XCIgfSxcbiAgICAgICAgXCImOmhvdmVyXCI6IHsgYmdjb2xvcjogXCIjZWZlZmVmXCIsIG92ZXJmbG93OiBcImhpZGRlblwiIH0sXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxHcmlkXG4gICAgICAgIHNpemU9e3NpemUubGFiZWxTaXplfVxuICAgICAgICBzeD17e1xuICAgICAgICAgIHBhZGRpbmc6IFwiNXB4XCIsXG4gICAgICAgICAgZm9udFNpemU6IFwiMTRweFwiLFxuICAgICAgICAgIHRleHRBbGlnbjogeyB4czogXCJsZWZ0XCIsIHNtOiBcInJpZ2h0XCIsIG1kOiBcInJpZ2h0XCIgfSxcbiAgICAgICAgICAuLi5sYWJlbFN4LFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7bGFiZWx9IDpcbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkXG4gICAgICAgIHNpemU9e3NpemUudmFsdWVTaXplfVxuICAgICAgICBzeD17eyBwYWRkaW5nOiBcIjVweFwiLCBkaXNwbGF5OiBcImZsZXhcIiwgZmxleFdyYXA6IFwid3JhcFwiIH19XG4gICAgICA+XG4gICAgICAgIDxUb29sdGlwIHRpdGxlPXt2YWx1ZX0gYXJyb3c+XG4gICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIGZvbnRTaXplOiBcIjE0cHhcIixcbiAgICAgICAgICAgICAgd29yZEJyZWFrOiBcImJyZWFrLXdvcmRcIixcbiAgICAgICAgICAgICAgb3ZlcmZsb3c6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgICAgIGRpc3BsYXk6IFwiLXdlYmtpdC1ib3hcIixcbiAgICAgICAgICAgICAgdGV4dE92ZXJmbG93OiBcImVsbGlwc2lzXCIsXG4gICAgICAgICAgICAgIFdlYmtpdExpbmVDbGFtcDogMixcbiAgICAgICAgICAgICAgV2Via2l0Qm94T3JpZW50OiBcInZlcnRpY2FsXCIsXG4gICAgICAgICAgICAgIC4uLnZhbHVlU3gsXG4gICAgICAgICAgICAgIGNvbG9yOiBcIiMwNzhkZWVcIixcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3ZhbHVlID8gdmFsdWUgOiBcIi1cIn1cbiAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgIDwvVG9vbHRpcD5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBMYWJlbFRleHQ7XG4iLCAiaW1wb3J0IE1hbmFnZVNlYXJjaEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvTWFuYWdlU2VhcmNoXCI7XG5pbXBvcnQgdHlwZSB7XG4gIFN4UHJvcHNcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2FyZCxcbiAgQ2FyZENvbnRlbnQsXG4gIENhcmRIZWFkZXIsXG4gIERpdmlkZXIsXG4gIEdyaWQsXG4gIFR5cG9ncmFwaHksXG4gIHVzZVRoZW1lLFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wc1dpdGhDaGlsZHJlbiwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5cbi8qKlxuICogUHJvcHMgZm9yIHRoZSBMaXN0V3JhcHBlciBjb21wb25lbnQuXG4gKlxuICogQHB1YmxpY1xuICovXG50eXBlIExpc3RXcmFwcGVyUHJvcHMgPSBQcm9wc1dpdGhDaGlsZHJlbjx7XG4gIC8qKlxuICAgKiBUaXRsZSB0ZXh0IGRpc3BsYXllZCBpbiB0aGUgY2FyZCBoZWFkZXIuXG4gICAqIEBkZWZhdWx0VmFsdWUgXCJMaXN0XCJcbiAgICogQGV4YW1wbGUgXCJVc2VyIExpc3RcIiBvciBcIlByb2R1Y3QgQ2F0YWxvZ1wiXG4gICAqL1xuICB0aXRsZT86IHN0cmluZztcbiAgLyoqXG4gICAqIE51bWJlciBvZiBpdGVtcyB0byBkaXNwbGF5IGluIHRoZSBoZWFkZXIgY291bnQuXG4gICAqIE9ubHkgc2hvd24gd2hlbiBzaG93Q291bnQgaXMgdHJ1ZS5cbiAgICogQGV4YW1wbGUgMjUgZm9yIFwiTGlzdCAoMjUpXCJcbiAgICovXG4gIGNvdW50PzogbnVtYmVyO1xuICAvKipcbiAgICogQ29udHJvbHMgd2hldGhlciB0aGUgZW50aXJlIGNvbXBvbmVudCBpcyByZW5kZXJlZC5cbiAgICogV2hlbiBmYWxzZSwgcmV0dXJucyBhbiBlbXB0eSBmcmFnbWVudC5cbiAgICogQGRlZmF1bHRWYWx1ZSB0cnVlXG4gICAqL1xuICBzaG93PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFjdGlvbiBidXR0b24gb3IgZWxlbWVudCB0byBkaXNwbGF5IGluIHRoZSBoZWFkZXIgKGUuZy4sIGFkZCwgZXhwb3J0KS5cbiAgICogQGV4YW1wbGUgPEJ1dHRvbj5BZGQgTmV3PC9CdXR0b24+IG9yIDxJY29uQnV0dG9uPjxNb3JlVmVydEljb24gLz48L0ljb25CdXR0b24+XG4gICAqL1xuICBhY3Rpb25CdXR0b24/OiBSZWFjdE5vZGU7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBNVUkgc3ggcHJvcCBmb3IgY3VzdG9tIGNhcmQgc3R5bGluZy5cbiAgICogQGV4YW1wbGUgeyBtdDogMiwgYm94U2hhZG93OiAzIH1cbiAgICovXG4gIGNhcmRTeD86IFN4UHJvcHM7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBNVUkgc3ggcHJvcCBmb3IgY3VzdG9tIHRpdGxlIHRleHQgc3R5bGluZy5cbiAgICogQGV4YW1wbGUgeyBmb250U2l6ZTogMTgsIGNvbG9yOiAnc2Vjb25kYXJ5Lm1haW4nIH1cbiAgICovXG4gIHRleHRTeD86IFN4UHJvcHM7XG4gIC8qKlxuICAgKiBDdXN0b20gaWNvbiB0byBkaXNwbGF5IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgc2VhcmNoIGljb24uXG4gICAqIEBleGFtcGxlIDxMaXN0SWNvbiAvPiBvciA8VGFibGVSb3dzSWNvbiAvPlxuICAgKi9cbiAgaWNvbj86IFJlYWN0Tm9kZTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzcGxheSB0aGUgY291bnQgaW4gdGhlIGhlYWRlci5cbiAgICogQGRlZmF1bHRWYWx1ZSB0cnVlXG4gICAqL1xuICBzaG93Q291bnQ/OiBib29sZWFuO1xuICAvKipcbiAgICogT3B0aW9uYWwgTVVJIHN4IHByb3AgZm9yIGN1c3RvbSBpY29uIHN0eWxpbmcuXG4gICAqIEBleGFtcGxlIHsgY29sb3I6ICdwcmltYXJ5Lm1haW4nLCBmb250U2l6ZTogMjggfVxuICAgKi9cbiAgaWNvblN4PzogU3hQcm9wcztcbn0+O1xuXG4vKipcbiAqIENhcmQtYmFzZWQgd3JhcHBlciBjb21wb25lbnQgZm9yIG9yZ2FuaXppbmcgbGlzdCBjb250ZW50IHdpdGggaGVhZGVyIGFuZCBhY3Rpb25zLlxuICpcbiAqIFRoaXMgY29tcG9uZW50IHByb3ZpZGVzIGEgc3RydWN0dXJlZCBsYXlvdXQgZm9yIGRpc3BsYXlpbmcgbGlzdHMgb2YgZGF0YSB3aXRoXG4gKiBhIHRpdGxlIGhlYWRlciwgb3B0aW9uYWwgaXRlbSBjb3VudCwgYWN0aW9uIGJ1dHRvbnMsIGFuZCBhIGdyaWQtYmFzZWQgY29udGVudCBhcmVhLlxuICogSXQgaW5jbHVkZXMgY29uZGl0aW9uYWwgcmVuZGVyaW5nIGFuZCBjb25zaXN0ZW50IHN0eWxpbmcgYWNyb3NzIGxpc3QgaW50ZXJmYWNlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogQmFzaWMgbGlzdCB3cmFwcGVyOlxuICogYGBgdHN4XG4gKiA8TGlzdFdyYXBwZXIgdGl0bGU9XCJVc2Vyc1wiIGNvdW50PXt1c2Vycy5sZW5ndGh9PlxuICogICA8R3JpZCBpdGVtIHhzPXsxMn0+XG4gKiAgICAgPERhdGFHcmlkIHJvd3M9e3VzZXJzfSBjb2x1bW5zPXtjb2x1bW5zfSAvPlxuICogICA8L0dyaWQ+XG4gKiA8L0xpc3RXcmFwcGVyPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqIFdpdGggYWN0aW9uIGJ1dHRvbiBhbmQgY3VzdG9tIGljb246XG4gKiBgYGB0c3hcbiAqIDxMaXN0V3JhcHBlclxuICogICB0aXRsZT1cIlByb2R1Y3RzXCJcbiAqICAgY291bnQ9e3Byb2R1Y3RzLmxlbmd0aH1cbiAqICAgaWNvbj17PEludmVudG9yeUljb24gLz59XG4gKiAgIGFjdGlvbkJ1dHRvbj17XG4gKiAgICAgPEJ1dHRvbiB2YXJpYW50PVwiY29udGFpbmVkXCIgb25DbGljaz17YWRkUHJvZHVjdH0+XG4gKiAgICAgICBBZGQgUHJvZHVjdFxuICogICAgIDwvQnV0dG9uPlxuICogICB9XG4gKiA+XG4gKiAgIHtwcm9kdWN0TGlzdH1cbiAqIDwvTGlzdFdyYXBwZXI+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZVxuICogQ29uZGl0aW9uYWwgcmVuZGVyaW5nOlxuICogYGBgdHN4XG4gKiA8TGlzdFdyYXBwZXJcbiAqICAgdGl0bGU9XCJTZWFyY2ggUmVzdWx0c1wiXG4gKiAgIGNvdW50PXtzZWFyY2hSZXN1bHRzLmxlbmd0aH1cbiAqICAgc2hvdz17aGFzU2VhcmNoZWR9XG4gKiAgIHNob3dDb3VudD17c2VhcmNoUmVzdWx0cy5sZW5ndGggPiAwfVxuICogPlxuICogICB7c2VhcmNoUmVzdWx0SXRlbXN9XG4gKiA8L0xpc3RXcmFwcGVyPlxuICogYGBgXG4gKlxuICogQHBhcmFtIHByb3BzIC0gQ29tcG9uZW50IHByb3BzIGluY2x1ZGluZyBjaGlsZHJlbiBhbmQgbGF5b3V0IG9wdGlvbnNcbiAqIEByZXR1cm5zIE1VSSBDYXJkIGNvbXBvbmVudCB3aXRoIHN0cnVjdHVyZWQgbGlzdCBsYXlvdXQsIG9yIGVtcHR5IGZyYWdtZW50IGlmIHNob3cgaXMgZmFsc2VcbiAqXG4gKiBAcHVibGljXG4gKi9cbmNvbnN0IExpc3RXcmFwcGVyID0gKHtcbiAgY2hpbGRyZW4sXG4gIHRpdGxlLFxuICBjb3VudCxcbiAgc2hvdyA9IHRydWUsXG4gIGFjdGlvbkJ1dHRvbixcbiAgY2FyZFN4LFxuICB0ZXh0U3gsXG4gIGljb24sXG4gIGljb25TeCxcbiAgc2hvd0NvdW50ID0gdHJ1ZSxcbn06IExpc3RXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuXG4gIGlmICghc2hvdykgcmV0dXJuIDw+PC8+O1xuXG4gIHJldHVybiAoXG4gICAgPENhcmRcbiAgICAgIHN4PXt7XG4gICAgICAgIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gICAgICAgIGJvcmRlclJhZGl1czogXCIwcHhcIixcbiAgICAgICAgLi4uY2FyZFN4LFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICBzeD17e1xuICAgICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgICAgICAgIGZsZXhXcmFwOiBcIndyYXBcIixcbiAgICAgICAgICBwOiBcIjFyZW1cIixcbiAgICAgICAgICBcIi5NdWlDYXJkSGVhZGVyLWFjdGlvblwiOiB7XG4gICAgICAgICAgICBtYXJnaW46IDAsXG4gICAgICAgICAgICBhbGlnblNlbGY6IFwiY2VudGVyXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICAgICAgICB9fVxuICAgICAgICB0aXRsZT17XG4gICAgICAgICAgPEJveFxuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIixcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEJveCBzeD17eyBkaXNwbGF5OiBcImZsZXhcIiwgYWxpZ25JdGVtczogXCJjZW50ZXJcIiwgZ2FwOiAwLjUgfX0+XG4gICAgICAgICAgICAgIHtpY29uID8gKFxuICAgICAgICAgICAgICAgIGljb25cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8TWFuYWdlU2VhcmNoSWNvblxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcIjIuNXJlbVwiLFxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS5wcmltYXJ5Lm1haW4sXG4gICAgICAgICAgICAgICAgICAgIC4uLmljb25TeCxcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiaDVcIlxuICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiBcImJvbGRcIixcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiB0aGVtZS5wYWxldHRlLnByaW1hcnkubWFpbixcbiAgICAgICAgICAgICAgICAgIC4uLnRleHRTeCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3RpdGxlID8gdGl0bGUgOiBcIkxpc3RcIn1cbiAgICAgICAgICAgICAgICB7c2hvd0NvdW50ID8gYCgke2NvdW50ID8gY291bnQgOiAwfSlgIDogPD48Lz59XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAge2FjdGlvbkJ1dHRvbn1cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgfVxuICAgICAgPjwvQ2FyZEhlYWRlcj5cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8Q2FyZENvbnRlbnQgc3g9e3sgcHQ6IDAgfX0+XG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzcGFjaW5nPXsyfT5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgPC9DYXJkPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTGlzdFdyYXBwZXI7XG4iLCAiaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIEdyaWRUb29sYmFyQ29udGFpbmVyLFxuICBHcmlkVG9vbGJhckNvbHVtbnNCdXR0b24sXG4gIEdyaWRUb29sYmFyRXhwb3J0LFxuICBHcmlkVG9vbGJhckZpbHRlckJ1dHRvbixcbiAgR3JpZFRvb2xiYXJRdWlja0ZpbHRlcixcbn0gZnJvbSBcIkBtdWkveC1kYXRhLWdyaWRcIjtcblxuLyoqXG4gKiBQcmUtY29uZmlndXJlZCB0b29sYmFyIGNvbXBvbmVudCBmb3IgTVVJIERhdGFHcmlkIHdpdGggZXNzZW50aWFsIHRvb2xzLlxuICpcbiAqIFRoaXMgY29tcG9uZW50IHByb3ZpZGVzIGEgcmVhZHktdG8tdXNlIHRvb2xiYXIgZm9yIE1VSSBEYXRhR3JpZCBjb21wb25lbnRzXG4gKiB0aGF0IGluY2x1ZGVzIHF1aWNrIGZpbHRlcmluZywgY29sdW1uIG1hbmFnZW1lbnQsIGFkdmFuY2VkIGZpbHRlcmluZywgYW5kXG4gKiBkYXRhIGV4cG9ydCBjYXBhYmlsaXRpZXMuIFRoZSBxdWljayBmaWx0ZXIgaW5wdXQgaXMgc3R5bGVkIHdpdGggY3VzdG9tXG4gKiBib3JkZXIgcmFkaXVzIGFuZCBwYWRkaW5nIGZvciBhIHBvbGlzaGVkIGFwcGVhcmFuY2UuXG4gKlxuICogRmVhdHVyZXMgaW5jbHVkZWQ6XG4gKiAtIFF1aWNrIGZpbHRlciBzZWFyY2ggaW5wdXQgKGxlZnQtYWxpZ25lZClcbiAqIC0gQ29sdW1uIHZpc2liaWxpdHkgdG9nZ2xlIGJ1dHRvblxuICogLSBBZHZhbmNlZCBmaWx0ZXIgYnV0dG9uXG4gKiAtIERhdGEgZXhwb3J0IGJ1dHRvbiAoQ1NWLCBFeGNlbCwgZXRjLilcbiAqXG4gKiBAZXhhbXBsZVxuICogQmFzaWMgdXNhZ2Ugd2l0aCBEYXRhR3JpZDpcbiAqIGBgYHRzeFxuICogPERhdGFHcmlkXG4gKiAgIHJvd3M9e2RhdGF9XG4gKiAgIGNvbHVtbnM9e2NvbHVtbnN9XG4gKiAgIHNsb3RzPXt7XG4gKiAgICAgdG9vbGJhcjogU2ltcGxlVG9vbGJhclxuICogICB9fVxuICogLz5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiBJbiBhIGN1c3RvbSBncmlkIHNldHVwOlxuICogYGBgdHN4XG4gKiA8Qm94PlxuICogICA8U2ltcGxlVG9vbGJhciAvPlxuICogICA8RGF0YUdyaWRcbiAqICAgICByb3dzPXtmaWx0ZXJlZERhdGF9XG4gKiAgICAgY29sdW1ucz17dmlzaWJsZUNvbHVtbnN9XG4gKiAgICAgaGlkZUZvb3RlclxuICogICAvPlxuICogPC9Cb3g+XG4gKiBgYGBcbiAqXG4gKiBAcmV0dXJucyBHcmlkVG9vbGJhckNvbnRhaW5lciB3aXRoIHByZS1jb25maWd1cmVkIHRvb2xiYXIgZWxlbWVudHNcbiAqXG4gKiBAcHVibGljXG4gKi9cbmNvbnN0IFNpbXBsZVRvb2xiYXIgPSAoKSA9PiAoXG4gIDxHcmlkVG9vbGJhckNvbnRhaW5lcj5cbiAgICA8Qm94XG4gICAgICBzeD17e1xuICAgICAgICBcIiYgLk11aUlucHV0QmFzZS1yb290XCI6IHtcbiAgICAgICAgICBib3JkZXJSYWRpdXM6IFwiOHB4XCIsXG4gICAgICAgICAgcGFkZGluZzogXCI2cHggMTBweFwiLFxuICAgICAgICB9LFxuICAgICAgICBcIiYgaW5wdXRcIjoge1xuICAgICAgICAgIGZvbnRTaXplOiBcIjE0cHhcIixcbiAgICAgICAgICBjb2xvcjogXCIjMzMzXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGJvcmRlclJhZGl1czogXCI4cHhcIixcbiAgICAgIH19XG4gICAgPlxuICAgICAgPEdyaWRUb29sYmFyUXVpY2tGaWx0ZXIgLz5cbiAgICA8L0JveD5cbiAgICA8Qm94IHN4PXt7IGZsZXhHcm93OiAxIH19IC8+XG4gICAgPEdyaWRUb29sYmFyQ29sdW1uc0J1dHRvbiAvPlxuICAgIDxHcmlkVG9vbGJhckZpbHRlckJ1dHRvbiAvPlxuICAgIDxHcmlkVG9vbGJhckV4cG9ydCAvPlxuICA8L0dyaWRUb29sYmFyQ29udGFpbmVyPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgU2ltcGxlVG9vbGJhcjtcbiIsICJpbXBvcnQgdHlwZSB7IEJ1dHRvblByb3BzIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IEJ1dHRvbiwgQ2lyY3VsYXJQcm9ncmVzcyB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmVhY3QsIHsgZm9yd2FyZFJlZiwgbWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuXG4vKipcbiAqIFByb3BzIGZvciB0aGUgU2ltcGxlQnV0dG9uIGNvbXBvbmVudC5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2ltcGxlQnV0dG9uUHJvcHMgZXh0ZW5kcyBCdXR0b25Qcm9wcyB7XG4gIC8qKlxuICAgKiBDb250cm9scyBidXR0b24gdmlzaWJpbGl0eS4gV2hlbiBmYWxzZSwgdGhlIGNvbXBvbmVudCByZXR1cm5zIG51bGwuXG4gICAqIEBkZWZhdWx0VmFsdWUgdHJ1ZVxuICAgKi9cbiAgc2hvdz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBMb2FkaW5nIHN0YXRlIHdpdGggc3Bpbm5lci4gV2hlbiB0cnVlLCBzaG93cyBhIGxvYWRpbmcgc3Bpbm5lciBhbmQgZGlzYWJsZXMgdGhlIGJ1dHRvbi5cbiAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgKi9cbiAgbG9hZGluZz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUZXN0IGlkZW50aWZpZXIgZm9yIHRlc3RpbmcgZnJhbWV3b3Jrcy5cbiAgICogQGV4YW1wbGUgXCJzdWJtaXQtYnV0dG9uXCJcbiAgICovXG4gICdkYXRhLXRlc3RpZCc/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDdXN0b20gdGV4dCB0byBkaXNwbGF5IHdoZW4gbG9hZGluZyBpcyB0cnVlLiBJZiBub3QgcHJvdmlkZWQsIG9yaWdpbmFsIGNoaWxkcmVuIGFyZSBzaG93bi5cbiAgICogQGV4YW1wbGUgXCJTYXZpbmcuLi5cIlxuICAgKi9cbiAgbG9hZGluZ1RleHQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW5oYW5jZWQgTVVJIEJ1dHRvbiBjb21wb25lbnQgd2l0aCBsb2FkaW5nIHN0YXRlcyBhbmQgY29uZGl0aW9uYWwgcmVuZGVyaW5nLlxuICpcbiAqIFRoaXMgY29tcG9uZW50IGV4dGVuZHMgdGhlIHN0YW5kYXJkIE1VSSBCdXR0b24gd2l0aCBhZGRpdGlvbmFsIGZlYXR1cmVzOlxuICogLSBMb2FkaW5nIHN0YXRlIHdpdGggc3Bpbm5lclxuICogLSBDb25kaXRpb25hbCByZW5kZXJpbmcgYmFzZWQgb24gc2hvdyBwcm9wXG4gKiAtIEF1dG9tYXRpYyBkaXNhYmxpbmcgZHVyaW5nIGxvYWRpbmdcbiAqIC0gQ3VzdG9tIGxvYWRpbmcgdGV4dCBzdXBwb3J0XG4gKlxuICogQGV4YW1wbGVcbiAqIEJhc2ljIHVzYWdlOlxuICogYGBgdHN4XG4gKiA8U2ltcGxlQnV0dG9uIHZhcmlhbnQ9XCJjb250YWluZWRcIiBjb2xvcj1cInByaW1hcnlcIj5cbiAqICAgQ2xpY2sgTWVcbiAqIDwvU2ltcGxlQnV0dG9uPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqIFdpdGggbG9hZGluZyBzdGF0ZTpcbiAqIGBgYHRzeFxuICogPFNpbXBsZUJ1dHRvblxuICogICBsb2FkaW5nPXtpc1N1Ym1pdHRpbmd9XG4gKiAgIGxvYWRpbmdUZXh0PVwiU2F2aW5nLi4uXCJcbiAqICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gKiA+XG4gKiAgIFNhdmUgQ2hhbmdlc1xuICogPC9TaW1wbGVCdXR0b24+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZVxuICogQ29uZGl0aW9uYWwgcmVuZGVyaW5nOlxuICogYGBgdHN4XG4gKiA8U2ltcGxlQnV0dG9uXG4gKiAgIHNob3c9e2hhc1Blcm1pc3Npb259XG4gKiAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gKiA+XG4gKiAgIEFkbWluIEFjdGlvblxuICogPC9TaW1wbGVCdXR0b24+XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gcHJvcHMgLSBDb21wb25lbnQgcHJvcHMgZXh0ZW5kaW5nIE1VSSBCdXR0b25Qcm9wc1xuICogQHBhcmFtIHJlZiAtIEZvcndhcmRlZCByZWYgdG8gdGhlIHVuZGVybHlpbmcgYnV0dG9uIGVsZW1lbnRcbiAqIEByZXR1cm5zIEpTWCBlbGVtZW50IG9yIG51bGwgaWYgc2hvdyBpcyBmYWxzZVxuICpcbiAqIEBwdWJsaWNcbiAqL1xuY29uc3QgU2ltcGxlQnV0dG9uID0gbWVtbyhmb3J3YXJkUmVmPEhUTUxCdXR0b25FbGVtZW50LCBTaW1wbGVCdXR0b25Qcm9wcz4oXG4gICh7XG4gICAgc2hvdyA9IHRydWUsXG4gICAgbG9hZGluZyA9IGZhbHNlLFxuICAgIGxvYWRpbmdUZXh0LFxuICAgIGNoaWxkcmVuLFxuICAgIC4uLnJlc3RcbiAgfSwgcmVmKSA9PiB7XG4gICAgaWYgKCFzaG93KSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgZGlzYWJsZWQ9e2xvYWRpbmcgfHwgcmVzdC5kaXNhYmxlZH1cbiAgICAgICAgICBzdGFydEljb249e2xvYWRpbmcgPyA8Q2lyY3VsYXJQcm9ncmVzcyBzaXplPXsxNn0gLz4gOiByZXN0LnN0YXJ0SWNvbn1cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtsb2FkaW5nICYmIGxvYWRpbmdUZXh0ID8gbG9hZGluZ1RleHQgOiBjaGlsZHJlbn1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG4pKTtcblxuU2ltcGxlQnV0dG9uLmRpc3BsYXlOYW1lID0gXCJTaW1wbGVCdXR0b25cIjtcblxuZXhwb3J0IGRlZmF1bHQgU2ltcGxlQnV0dG9uO1xuIiwgImltcG9ydCB0eXBlIHsgUHJvcHNXaXRoQ2hpbGRyZW4gfSBmcm9tIFwicmVhY3RcIjtcblxuLyoqXG4gKiBQcm9wcyBmb3IgdGhlIEF1dGhvcml6ZWRWaWV3IGNvbXBvbmVudC5cbiAqXG4gKiBAcHVibGljXG4gKi9cbnR5cGUgQXV0aG9yaXplZFZpZXdQcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuICYge1xuICAvKipcbiAgICogQ29udHJvbHMgd2hldGhlciB0aGUgY2hpbGRyZW4gc2hvdWxkIGJlIHJlbmRlcmVkLiBXaGVuIGZhbHNlLCBub3RoaW5nIGlzIHJlbmRlcmVkLlxuICAgKiBAZXhhbXBsZSB0cnVlIC0gU2hvdyBjb250ZW50LCBmYWxzZSAtIEhpZGUgY29udGVudFxuICAgKi9cbiAgc2hvdzogYm9vbGVhbjtcbn07XG5cbi8qKlxuICogQ29uZGl0aW9uYWwgcmVuZGVyaW5nIGNvbXBvbmVudCB0aGF0IHNob3dzIG9yIGhpZGVzIGNvbnRlbnQgYmFzZWQgb24gYXV0aG9yaXphdGlvbiBzdGF0ZS5cbiAqXG4gKiBUaGlzIGNvbXBvbmVudCBwcm92aWRlcyBhIHNpbXBsZSB3YXkgdG8gY29uZGl0aW9uYWxseSByZW5kZXIgY2hpbGQgY29tcG9uZW50c1xuICogYmFzZWQgb24gYSBib29sZWFuIGZsYWcsIHR5cGljYWxseSB1c2VkIGZvciBhdXRob3JpemF0aW9uIG9yIHBlcm1pc3Npb24tYmFzZWQgcmVuZGVyaW5nLlxuICpcbiAqIEBleGFtcGxlXG4gKiBCYXNpYyB1c2FnZTpcbiAqIGBgYHRzeFxuICogPEF1dGhvcml6ZWRWaWV3IHNob3c9e2hhc1Blcm1pc3Npb259PlxuICogICA8QWRtaW5QYW5lbCAvPlxuICogPC9BdXRob3JpemVkVmlldz5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiBXaXRoIHVzZXIgcm9sZXM6XG4gKiBgYGB0c3hcbiAqIDxBdXRob3JpemVkVmlldyBzaG93PXt1c2VyLnJvbGUgPT09ICdhZG1pbid9PlxuICogICA8RGVsZXRlQnV0dG9uIC8+XG4gKiA8L0F1dGhvcml6ZWRWaWV3PlxuICogYGBgXG4gKlxuICogQHBhcmFtIHByb3BzIC0gQ29tcG9uZW50IHByb3BzIGluY2x1ZGluZyBjaGlsZHJlbiBhbmQgc2hvdyBmbGFnXG4gKiBAcmV0dXJucyBKU1ggY2hpbGRyZW4gaWYgc2hvdyBpcyB0cnVlLCBlbXB0eSBmcmFnbWVudCBpZiBmYWxzZVxuICpcbiAqIEBwdWJsaWNcbiAqL1xuY29uc3QgQXV0aG9yaXplZFZpZXcgPSAoeyBjaGlsZHJlbiwgc2hvdyB9OiBBdXRob3JpemVkVmlld1Byb3BzKSA9PiB7XG4gIGlmICghc2hvdykgcmV0dXJuIDw+PC8+O1xuXG4gIHJldHVybiA8PntjaGlsZHJlbn08Lz47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBBdXRob3JpemVkVmlldztcbiIsICJpbXBvcnQgdHlwZSB7IFN4UHJvcHMgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuLyoqXG4gKiBQcm9wcyBmb3IgdGhlIENhbmNlbEJ1dHRvbiBjb21wb25lbnQuXG4gKlxuICogQHB1YmxpY1xuICovXG5pbnRlcmZhY2UgQ2FuY2VsQnV0dG9uUHJvcHMge1xuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIGEgZm9ybSBvciBvcGVyYXRpb24gaXMgY3VycmVudGx5IGJlaW5nIHN1Ym1pdHRlZC5cbiAgICogV2hlbiB0cnVlLCB0aGUgYnV0dG9uIGlzIGRpc2FibGVkIHRvIHByZXZlbnQgbXVsdGlwbGUgY2FuY2VsIGFjdGlvbnMuXG4gICAqL1xuICBpc1N1Ym1pdHRpbmc6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDYWxsYmFjayBmdW5jdGlvbiBleGVjdXRlZCB3aGVuIHRoZSBjYW5jZWwgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAqIFNob3VsZCBoYW5kbGUgdGhlIGNhbmNlbGxhdGlvbiBsb2dpYyAoZS5nLiwgZm9ybSByZXNldCwgbmF2aWdhdGlvbiwgZXRjLikuXG4gICAqL1xuICBoYW5kbGVDYW5jZWw6ICgpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBNVUkgc3ggcHJvcCBmb3IgY3VzdG9tIHN0eWxpbmcuXG4gICAqIEBleGFtcGxlIHsgbXQ6IDIsIGJnY29sb3I6ICdlcnJvci5tYWluJyB9XG4gICAqL1xuICBzeD86IFN4UHJvcHM7XG59XG5cbi8qKlxuICogU3RhbmRhcmRpemVkIGNhbmNlbCBidXR0b24gY29tcG9uZW50IHdpdGggc3VibWlzc2lvbiBzdGF0ZSBoYW5kbGluZy5cbiAqXG4gKiBUaGlzIGNvbXBvbmVudCBwcm92aWRlcyBhIGNvbnNpc3RlbnQgY2FuY2VsIGJ1dHRvbiBpbXBsZW1lbnRhdGlvbiB0aGF0IGF1dG9tYXRpY2FsbHlcbiAqIGhhbmRsZXMgZGlzYWJsZWQgc3RhdGVzIGR1cmluZyBmb3JtIHN1Ym1pc3Npb25zLiBJdCdzIGRlc2lnbmVkIHRvIGJlIHVzZWQgaW4gZm9ybXNcbiAqIGFuZCBkaWFsb2dzIHdoZXJlIHVzZXJzIG5lZWQgdG8gY2FuY2VsIG9wZXJhdGlvbnMuXG4gKlxuICogQGV4YW1wbGVcbiAqIEJhc2ljIHVzYWdlIGluIGEgZm9ybTpcbiAqIGBgYHRzeFxuICogPENhbmNlbEJ1dHRvblxuICogICBpc1N1Ym1pdHRpbmc9e2lzTG9hZGluZ31cbiAqICAgaGFuZGxlQ2FuY2VsPXsoKSA9PiBuYXZpZ2F0ZSgnL3ByZXZpb3VzLXBhZ2UnKX1cbiAqIC8+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZVxuICogV2l0aCBjdXN0b20gc3R5bGluZzpcbiAqIGBgYHRzeFxuICogPENhbmNlbEJ1dHRvblxuICogICBpc1N1Ym1pdHRpbmc9e2Zvcm0uZm9ybVN0YXRlLmlzU3VibWl0dGluZ31cbiAqICAgaGFuZGxlQ2FuY2VsPXtmb3JtLnJlc2V0fVxuICogICBzeD17eyBtdDogMiwgY29sb3I6ICdlcnJvci5tYWluJyB9fVxuICogLz5cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBwcm9wcyAtIENvbXBvbmVudCBwcm9wcyBmb3IgY2FuY2VsIGJ1dHRvbiBjb25maWd1cmF0aW9uXG4gKiBAcmV0dXJucyBNVUkgQnV0dG9uIGNvbXBvbmVudCBjb25maWd1cmVkIGFzIGEgY2FuY2VsIGJ1dHRvblxuICpcbiAqIEBwdWJsaWNcbiAqL1xuY29uc3QgQ2FuY2VsQnV0dG9uID0gKHtcbiAgaXNTdWJtaXR0aW5nLFxuICBoYW5kbGVDYW5jZWwsXG4gIHN4LFxufTogQ2FuY2VsQnV0dG9uUHJvcHMpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8QnV0dG9uXG4gICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgb25DbGljaz17aGFuZGxlQ2FuY2VsfVxuICAgICAgZGlzYWJsZWQ9e2lzU3VibWl0dGluZ31cbiAgICAgIHN4PXtzeH1cbiAgICA+XG4gICAgICBDYW5jZWxcbiAgICA8L0J1dHRvbj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENhbmNlbEJ1dHRvbjtcbiJdLAogICJtYXBwaW5ncyI6ICI7QUFDQSxTQUFTLGNBQWM7QUE0RW5CO0FBZEos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TyxnQkFBQUEsS0FBQUQsV0FBQSxFQUFFO0FBRXBCLFNBQU8sZ0JBQUFDLEtBQUFELFdBQUEsRUFBRyxVQUFTO0FBQ3JCO0FBRUEsSUFBTyx5QkFBUTs7O0FDL0NmLFNBQVMsVUFBQUUsZUFBYztBQThEbkIsZ0JBQUFDLGFBQUE7QUFOSixJQUFNLGVBQWUsQ0FBQztBQUFBLEVBQ3BCO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRixNQUF5QjtBQUN2QixTQUNFLGdCQUFBQTtBQUFBLElBQUNEO0FBQUEsSUFBQTtBQUFBLE1BQ0MsU0FBUTtBQUFBLE1BQ1IsU0FBUztBQUFBLE1BQ1QsVUFBVTtBQUFBLE1BQ1Y7QUFBQSxNQUNEO0FBQUE7QUFBQSxFQUVEO0FBRUo7QUFFQSxJQUFPLHVCQUFROyIsCiAgIm5hbWVzIjogWyJqc3giLCAidXNlVGhlbWUiLCAianN4IiwgIkJveCIsICJDYXJkIiwgIkNhcmRDb250ZW50IiwgIkNhcmRIZWFkZXIiLCAiRGl2aWRlciIsICJHcmlkIiwgIlR5cG9ncmFwaHkiLCAianN4IiwgImpzeHMiLCAiR3JpZCIsICJUeXBvZ3JhcGh5IiwgImpzeCIsICJqc3hzIiwgIk1hbmFnZVNlYXJjaEljb24iLCAiQm94IiwgIkNhcmQiLCAiQ2FyZENvbnRlbnQiLCAiQ2FyZEhlYWRlciIsICJEaXZpZGVyIiwgIkdyaWQiLCAiVHlwb2dyYXBoeSIsICJ1c2VUaGVtZSIsICJGcmFnbWVudCIsICJqc3giLCAianN4cyIsICJCb3giLCAianN4IiwgImpzeHMiLCAiQnV0dG9uIiwgIkZyYWdtZW50IiwgImpzeCIsICJGcmFnbWVudCIsICJqc3giLCAiQnV0dG9uIiwgImpzeCJdCn0K
|