@merchi/product-form 1.19.37 → 1.19.38

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.
@@ -0,0 +1,419 @@
1
+ 'use client';
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
5
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
6
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
7
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
8
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
9
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
10
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
11
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
12
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
15
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
16
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
17
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
18
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
19
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
20
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
21
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
22
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
23
+ import * as React from 'react';
24
+ import { useEffect, useRef, useState } from 'react';
25
+ import { useFieldArray } from 'react-hook-form';
26
+ import { FaTimes } from 'react-icons/fa';
27
+ import { CgSpinner } from 'react-icons/cg';
28
+ import DropzoneInput from './DropzoneInput';
29
+ import InputHiddenStatic from './InputHiddenStatic';
30
+ import VariationError from './VariationError';
31
+ import VariationLabel from './VariationLabel';
32
+ import { useMerchiFormContext } from '../context/MerchiProductFormProvider';
33
+ import { embroideryQualityWarning, embroideryValueJson, parseEmbroideryValue } from '../utils/embroidery';
34
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
35
+ function sizeText(value) {
36
+ return value != null && Number(value) > 0 ? String(value) : '';
37
+ }
38
+ function VariationEmbroideryInput(_ref) {
39
+ var _saved$colours;
40
+ var disabled = _ref.disabled,
41
+ name = _ref.name,
42
+ variation = _ref.variation;
43
+ var _useMerchiFormContext = useMerchiFormContext(),
44
+ apiUrl = _useMerchiFormContext.apiUrl,
45
+ classNameFileUploadContainer = _useMerchiFormContext.classNameFileUploadContainer,
46
+ classNameFilePreviewContainer = _useMerchiFormContext.classNameFilePreviewContainer,
47
+ classNameFilePreviewIconWrapper = _useMerchiFormContext.classNameFilePreviewIconWrapper,
48
+ control = _useMerchiFormContext.control,
49
+ getQuote = _useMerchiFormContext.getQuote,
50
+ hookForm = _useMerchiFormContext.hookForm;
51
+ var setValue = hookForm.setValue,
52
+ watch = hookForm.watch;
53
+ var variationField = variation.variationField || {};
54
+ var fileMode = variationField.embroideryInputMode !== 'text';
55
+ var maxColours = Number(variationField.maxColours) > 0 ? Number(variationField.maxColours) : 4;
56
+ var saved = parseEmbroideryValue(watch("".concat(name, ".value"))) || {};
57
+ var _useState = useState(saved.text || ''),
58
+ _useState2 = _slicedToArray(_useState, 2),
59
+ wording = _useState2[0],
60
+ setWording = _useState2[1];
61
+ var _useState3 = useState(sizeText(saved.widthMm)),
62
+ _useState4 = _slicedToArray(_useState3, 2),
63
+ width = _useState4[0],
64
+ setWidth = _useState4[1];
65
+ var _useState5 = useState(sizeText(saved.heightMm)),
66
+ _useState6 = _slicedToArray(_useState5, 2),
67
+ height = _useState6[0],
68
+ setHeight = _useState6[1];
69
+ var _useState7 = useState((_saved$colours = saved.colours) !== null && _saved$colours !== void 0 && _saved$colours.length ? saved.colours : ['#111111']),
70
+ _useState8 = _slicedToArray(_useState7, 2),
71
+ colours = _useState8[0],
72
+ setColours = _useState8[1];
73
+ var _useState9 = useState(false),
74
+ _useState0 = _slicedToArray(_useState9, 2),
75
+ measuring = _useState0[0],
76
+ setMeasuring = _useState0[1];
77
+ var _useState1 = useState(null),
78
+ _useState10 = _slicedToArray(_useState1, 2),
79
+ error = _useState10[0],
80
+ setError = _useState10[1];
81
+ var requestId = useRef(0);
82
+ var filesName = "".concat(name, ".variationFiles");
83
+ var _useFieldArray = useFieldArray({
84
+ control: control,
85
+ keyName: 'fileId',
86
+ name: filesName
87
+ }),
88
+ append = _useFieldArray.append,
89
+ fields = _useFieldArray.fields,
90
+ remove = _useFieldArray.remove;
91
+ var file = fields[0];
92
+ var draft = _objectSpread(_objectSpread({}, saved), {}, {
93
+ text: fileMode ? saved.text : wording,
94
+ widthMm: Number(width) || undefined,
95
+ heightMm: Number(height) || undefined,
96
+ colours: fileMode ? saved.colours : colours.slice(0, maxColours)
97
+ });
98
+ var warning = fileMode ? embroideryQualityWarning(draft) : null;
99
+ var watchedValue = watch("".concat(name, ".value"));
100
+ useEffect(function () {
101
+ var parsed = parseEmbroideryValue(watchedValue);
102
+ if (!parsed) return;
103
+ if (parsed.widthMm && String(parsed.widthMm) !== width) {
104
+ setWidth(String(parsed.widthMm));
105
+ }
106
+ if (parsed.heightMm && String(parsed.heightMm) !== height) {
107
+ setHeight(String(parsed.heightMm));
108
+ }
109
+ // Draft resizes write the form value. Don't depend on local size or this
110
+ // would fight the inputs while they are being typed.
111
+ // eslint-disable-next-line react-hooks/exhaustive-deps
112
+ }, [watchedValue]);
113
+ var writeValue = function writeValue(next) {
114
+ var quote = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
115
+ setValue("".concat(name, ".value"), embroideryValueJson(next), {
116
+ shouldDirty: true
117
+ });
118
+ if (quote) Promise.resolve().then(function () {
119
+ return getQuote();
120
+ });
121
+ };
122
+ var measure = /*#__PURE__*/function () {
123
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(next, fileId) {
124
+ var fieldId, current, base, response, data, merged, measuredWidth, measuredHeight, _t;
125
+ return _regenerator().w(function (_context) {
126
+ while (1) switch (_context.p = _context.n) {
127
+ case 0:
128
+ fieldId = variationField.id;
129
+ if (fieldId) {
130
+ _context.n = 1;
131
+ break;
132
+ }
133
+ return _context.a(2);
134
+ case 1:
135
+ current = ++requestId.current;
136
+ setMeasuring(true);
137
+ setError(null);
138
+ _context.p = 2;
139
+ base = apiUrl.endsWith('/') ? apiUrl : "".concat(apiUrl, "/");
140
+ _context.n = 3;
141
+ return fetch("".concat(base, "variation-fields/").concat(fieldId, "/estimate-embroidery/"), {
142
+ method: 'POST',
143
+ headers: {
144
+ 'Content-Type': 'application/json'
145
+ },
146
+ body: JSON.stringify({
147
+ text: next.text || '',
148
+ widthMm: next.widthMm,
149
+ heightMm: next.heightMm,
150
+ colours: next.colours,
151
+ fileId: fileId
152
+ })
153
+ });
154
+ case 3:
155
+ response = _context.v;
156
+ if (response.ok) {
157
+ _context.n = 4;
158
+ break;
159
+ }
160
+ throw new Error("Measure failed (".concat(response.status, ")"));
161
+ case 4:
162
+ _context.n = 5;
163
+ return response.json();
164
+ case 5:
165
+ data = _context.v;
166
+ if (!(current !== requestId.current)) {
167
+ _context.n = 6;
168
+ break;
169
+ }
170
+ return _context.a(2);
171
+ case 6:
172
+ merged = _objectSpread(_objectSpread({}, next), {}, {
173
+ colours: data.colours || next.colours,
174
+ coverage: data.coverage,
175
+ pixelWidth: data.pixelWidth || next.pixelWidth,
176
+ pixelHeight: data.pixelHeight || next.pixelHeight,
177
+ widthMm: next.widthMm || data.widthMm || data.measuredWidthMm,
178
+ heightMm: next.heightMm || data.heightMm || data.measuredHeightMm
179
+ });
180
+ measuredWidth = data.widthMm || data.measuredWidthMm;
181
+ measuredHeight = data.heightMm || data.measuredHeightMm;
182
+ if (!next.widthMm && measuredWidth) setWidth(String(measuredWidth));
183
+ if (!next.heightMm && measuredHeight) setHeight(String(measuredHeight));
184
+ writeValue(merged);
185
+ _context.n = 8;
186
+ break;
187
+ case 7:
188
+ _context.p = 7;
189
+ _t = _context.v;
190
+ if (current === requestId.current) {
191
+ setError((_t === null || _t === void 0 ? void 0 : _t.message) || 'Unable to measure this embroidery.');
192
+ }
193
+ case 8:
194
+ _context.p = 8;
195
+ if (current === requestId.current) setMeasuring(false);
196
+ return _context.f(8);
197
+ case 9:
198
+ return _context.a(2);
199
+ }
200
+ }, _callee, null, [[2, 7, 8, 9]]);
201
+ }));
202
+ return function measure(_x, _x2) {
203
+ return _ref2.apply(this, arguments);
204
+ };
205
+ }();
206
+ useEffect(function () {
207
+ var handle = window.setTimeout(function () {
208
+ var next = _objectSpread(_objectSpread({}, draft), {}, {
209
+ text: fileMode ? undefined : wording,
210
+ colours: fileMode ? draft.colours : colours
211
+ });
212
+ if (fileMode && !(file !== null && file !== void 0 && file.id) && !next.widthMm) return;
213
+ if (!fileMode && !wording.trim()) return;
214
+ measure(next, file === null || file === void 0 ? void 0 : file.id);
215
+ }, 350);
216
+ return function () {
217
+ return window.clearTimeout(handle);
218
+ };
219
+ // Re-measure when the design or size changes. `draft` is derived each render.
220
+ // eslint-disable-next-line react-hooks/exhaustive-deps
221
+ }, [wording, width, height, colours.join('|'), file === null || file === void 0 ? void 0 : file.id, fileMode]);
222
+ var updateSize = function updateSize(axis, raw) {
223
+ if (axis === 'width') setWidth(raw);else setHeight(raw);
224
+ writeValue(_objectSpread(_objectSpread({}, draft), {}, {
225
+ widthMm: Number(axis === 'width' ? raw : width) || undefined,
226
+ heightMm: Number(axis === 'height' ? raw : height) || undefined
227
+ }), false);
228
+ };
229
+ return /*#__PURE__*/_jsxs("div", {
230
+ className: classNameFileUploadContainer,
231
+ children: [/*#__PURE__*/_jsx(VariationLabel, {
232
+ name: name,
233
+ variationClassName: "merchi-embed-form_input-file",
234
+ variation: variation
235
+ }), fileMode ? /*#__PURE__*/_jsx(_Fragment, {
236
+ children: /*#__PURE__*/_jsx(DropzoneInput, {
237
+ accept: ".jpg,.jpeg,.png,.webp,.gif",
238
+ disabled: disabled || measuring,
239
+ multiple: false,
240
+ placeholder: variationField.placeholder || 'Drop artwork image:',
241
+ onUploadSuccess: function onUploadSuccess(uploaded) {
242
+ if (fields.length) remove(0);
243
+ append(uploaded);
244
+ },
245
+ preview: file ? /*#__PURE__*/_jsxs("div", {
246
+ style: {
247
+ display: 'flex',
248
+ flexDirection: 'column',
249
+ alignItems: 'center',
250
+ gap: 8
251
+ },
252
+ children: [/*#__PURE__*/_jsxs("div", {
253
+ style: {
254
+ position: 'relative'
255
+ },
256
+ children: [file.viewUrl || file.cachedViewUrl ? /*#__PURE__*/_jsx("img", {
257
+ alt: file.name || 'Embroidery artwork',
258
+ src: file.viewUrl || file.cachedViewUrl,
259
+ style: {
260
+ display: 'block',
261
+ maxWidth: 220,
262
+ maxHeight: 160,
263
+ objectFit: 'contain'
264
+ }
265
+ }) : null, /*#__PURE__*/_jsx("button", {
266
+ type: "button",
267
+ "aria-label": "Remove artwork",
268
+ className: classNameFilePreviewIconWrapper,
269
+ onClick: function onClick(event) {
270
+ event.stopPropagation();
271
+ event.preventDefault();
272
+ remove(0);
273
+ },
274
+ style: {
275
+ position: 'absolute',
276
+ top: 0,
277
+ right: -28
278
+ },
279
+ children: /*#__PURE__*/_jsx(FaTimes, {
280
+ className: "close-icon"
281
+ })
282
+ })]
283
+ }), /*#__PURE__*/_jsxs("div", {
284
+ style: {
285
+ fontSize: 12
286
+ },
287
+ children: [width ? "".concat(width, " mm wide") : 'Measuring width…', ' · ', height ? "".concat(height, " mm high") : 'Measuring height…']
288
+ }), Array.isArray(draft.colours) && draft.colours.length > 0 ? /*#__PURE__*/_jsx("div", {
289
+ style: {
290
+ display: 'flex',
291
+ gap: 6
292
+ },
293
+ children: draft.colours.map(function (colour) {
294
+ return /*#__PURE__*/_jsx("span", {
295
+ title: colour,
296
+ style: {
297
+ width: 16,
298
+ height: 16,
299
+ borderRadius: 8,
300
+ background: colour,
301
+ display: 'inline-block',
302
+ border: '1px solid rgba(0,0,0,0.2)'
303
+ }
304
+ }, colour);
305
+ })
306
+ }) : null, warning ? /*#__PURE__*/_jsx("div", {
307
+ className: "text-danger",
308
+ style: {
309
+ fontSize: 12
310
+ },
311
+ children: warning
312
+ }) : null, /*#__PURE__*/_jsx(InputHiddenStatic, {
313
+ name: "".concat(filesName, "[0].id"),
314
+ rules: {
315
+ required: true
316
+ },
317
+ value: file.id
318
+ })]
319
+ }) : undefined
320
+ })
321
+ }) : /*#__PURE__*/_jsxs(_Fragment, {
322
+ children: [/*#__PURE__*/_jsx("input", {
323
+ className: "form-control",
324
+ disabled: disabled,
325
+ value: wording,
326
+ placeholder: variationField.placeholder || 'Wording',
327
+ onChange: function onChange(event) {
328
+ return setWording(event.target.value);
329
+ }
330
+ }), /*#__PURE__*/_jsxs("div", {
331
+ style: {
332
+ display: 'flex',
333
+ gap: 8,
334
+ flexWrap: 'wrap',
335
+ marginTop: 8
336
+ },
337
+ children: [colours.map(function (colour, index) {
338
+ return /*#__PURE__*/_jsx("input", {
339
+ type: "color",
340
+ "aria-label": "Thread colour ".concat(index + 1),
341
+ disabled: disabled,
342
+ value: colour,
343
+ onChange: function onChange(event) {
344
+ var next = colours.slice();
345
+ next[index] = event.target.value;
346
+ setColours(next);
347
+ }
348
+ }, "".concat(colour, "-").concat(index));
349
+ }), colours.length < maxColours ? /*#__PURE__*/_jsx("button", {
350
+ type: "button",
351
+ className: "btn btn-sm btn-link",
352
+ disabled: disabled,
353
+ onClick: function onClick() {
354
+ return setColours([].concat(_toConsumableArray(colours), ['#000000']));
355
+ },
356
+ children: "Add colour"
357
+ }) : null]
358
+ })]
359
+ }), /*#__PURE__*/_jsxs("div", {
360
+ style: {
361
+ display: 'flex',
362
+ gap: 8,
363
+ marginTop: 8
364
+ },
365
+ children: [/*#__PURE__*/_jsxs("label", {
366
+ style: {
367
+ flex: 1
368
+ },
369
+ children: [/*#__PURE__*/_jsx("span", {
370
+ style: {
371
+ display: 'block',
372
+ fontSize: 12
373
+ },
374
+ children: "Width (mm)"
375
+ }), /*#__PURE__*/_jsx("input", {
376
+ className: "form-control",
377
+ type: "number",
378
+ min: 0,
379
+ disabled: disabled,
380
+ placeholder: "Width (mm)",
381
+ value: width,
382
+ onChange: function onChange(event) {
383
+ return updateSize('width', event.target.value);
384
+ }
385
+ })]
386
+ }), /*#__PURE__*/_jsxs("label", {
387
+ style: {
388
+ flex: 1
389
+ },
390
+ children: [/*#__PURE__*/_jsx("span", {
391
+ style: {
392
+ display: 'block',
393
+ fontSize: 12
394
+ },
395
+ children: "Height (mm)"
396
+ }), /*#__PURE__*/_jsx("input", {
397
+ className: "form-control",
398
+ type: "number",
399
+ min: 0,
400
+ disabled: disabled,
401
+ placeholder: "Height (mm)",
402
+ value: height,
403
+ onChange: function onChange(event) {
404
+ return updateSize('height', event.target.value);
405
+ }
406
+ })]
407
+ })]
408
+ }), measuring ? /*#__PURE__*/_jsx(CgSpinner, {
409
+ className: "animate_spin"
410
+ }) : null, error ? /*#__PURE__*/_jsx("div", {
411
+ className: "text-danger",
412
+ children: error
413
+ }) : null, /*#__PURE__*/_jsx(VariationError, {
414
+ name: name
415
+ })]
416
+ });
417
+ }
418
+ export default VariationEmbroideryInput;
419
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIlR5cGVFcnJvciIsIkFycmF5IiwiZnJvbSIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsIl9yZWdlbmVyYXRvciIsImUiLCJ0IiwibiIsInRvU3RyaW5nVGFnIiwiaSIsImMiLCJHZW5lcmF0b3IiLCJ1IiwiT2JqZWN0IiwiY3JlYXRlIiwiX3JlZ2VuZXJhdG9yRGVmaW5lMiIsImYiLCJwIiwieSIsIkciLCJ2IiwiYSIsImQiLCJiaW5kIiwibGVuZ3RoIiwibCIsImNhbGwiLCJkb25lIiwidmFsdWUiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiZ2V0UHJvdG90eXBlT2YiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImRpc3BsYXlOYW1lIiwidyIsIm0iLCJkZWZpbmVQcm9wZXJ0eSIsIl9yZWdlbmVyYXRvckRlZmluZSIsIl9pbnZva2UiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJfYXN5bmNUb0dlbmVyYXRvciIsImFyZ3VtZW50cyIsImFwcGx5IiwiX25leHQiLCJfdGhyb3ciLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIl9zbGljZWRUb0FycmF5IiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX25vbkl0ZXJhYmxlUmVzdCIsInRvU3RyaW5nIiwic2xpY2UiLCJuYW1lIiwidGVzdCIsIm5leHQiLCJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwidXNlRmllbGRBcnJheSIsIkZhVGltZXMiLCJDZ1NwaW5uZXIiLCJEcm9wem9uZUlucHV0IiwiSW5wdXRIaWRkZW5TdGF0aWMiLCJWYXJpYXRpb25FcnJvciIsIlZhcmlhdGlvbkxhYmVsIiwidXNlTWVyY2hpRm9ybUNvbnRleHQiLCJlbWJyb2lkZXJ5UXVhbGl0eVdhcm5pbmciLCJlbWJyb2lkZXJ5VmFsdWVKc29uIiwicGFyc2VFbWJyb2lkZXJ5VmFsdWUiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJzaXplVGV4dCIsIlZhcmlhdGlvbkVtYnJvaWRlcnlJbnB1dCIsIl9yZWYiLCJfc2F2ZWQkY29sb3VycyIsImRpc2FibGVkIiwidmFyaWF0aW9uIiwiX3VzZU1lcmNoaUZvcm1Db250ZXh0IiwiYXBpVXJsIiwiY2xhc3NOYW1lRmlsZVVwbG9hZENvbnRhaW5lciIsImNsYXNzTmFtZUZpbGVQcmV2aWV3Q29udGFpbmVyIiwiY2xhc3NOYW1lRmlsZVByZXZpZXdJY29uV3JhcHBlciIsImNvbnRyb2wiLCJnZXRRdW90ZSIsImhvb2tGb3JtIiwic2V0VmFsdWUiLCJ3YXRjaCIsInZhcmlhdGlvbkZpZWxkIiwiZmlsZU1vZGUiLCJlbWJyb2lkZXJ5SW5wdXRNb2RlIiwibWF4Q29sb3VycyIsInNhdmVkIiwiY29uY2F0IiwiX3VzZVN0YXRlIiwidGV4dCIsIl91c2VTdGF0ZTIiLCJ3b3JkaW5nIiwic2V0V29yZGluZyIsIl91c2VTdGF0ZTMiLCJ3aWR0aE1tIiwiX3VzZVN0YXRlNCIsIndpZHRoIiwic2V0V2lkdGgiLCJfdXNlU3RhdGU1IiwiaGVpZ2h0TW0iLCJfdXNlU3RhdGU2IiwiaGVpZ2h0Iiwic2V0SGVpZ2h0IiwiX3VzZVN0YXRlNyIsImNvbG91cnMiLCJfdXNlU3RhdGU4Iiwic2V0Q29sb3VycyIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwibWVhc3VyaW5nIiwic2V0TWVhc3VyaW5nIiwiX3VzZVN0YXRlMSIsIl91c2VTdGF0ZTEwIiwiZXJyb3IiLCJzZXRFcnJvciIsInJlcXVlc3RJZCIsImZpbGVzTmFtZSIsIl91c2VGaWVsZEFycmF5Iiwia2V5TmFtZSIsImFwcGVuZCIsImZpZWxkcyIsInJlbW92ZSIsImZpbGUiLCJkcmFmdCIsInVuZGVmaW5lZCIsIndhcm5pbmciLCJ3YXRjaGVkVmFsdWUiLCJwYXJzZWQiLCJ3cml0ZVZhbHVlIiwicXVvdGUiLCJzaG91bGREaXJ0eSIsIm1lYXN1cmUiLCJfcmVmMiIsIl9jYWxsZWUiLCJmaWxlSWQiLCJmaWVsZElkIiwiY3VycmVudCIsImJhc2UiLCJyZXNwb25zZSIsImRhdGEiLCJtZXJnZWQiLCJtZWFzdXJlZFdpZHRoIiwibWVhc3VyZWRIZWlnaHQiLCJfdCIsIl9jb250ZXh0IiwiaWQiLCJlbmRzV2l0aCIsImZldGNoIiwibWV0aG9kIiwiaGVhZGVycyIsImJvZHkiLCJKU09OIiwic3RyaW5naWZ5Iiwib2siLCJFcnJvciIsInN0YXR1cyIsImpzb24iLCJjb3ZlcmFnZSIsInBpeGVsV2lkdGgiLCJwaXhlbEhlaWdodCIsIm1lYXN1cmVkV2lkdGhNbSIsIm1lYXN1cmVkSGVpZ2h0TW0iLCJtZXNzYWdlIiwiX3giLCJfeDIiLCJoYW5kbGUiLCJ3aW5kb3ciLCJzZXRUaW1lb3V0IiwidHJpbSIsImNsZWFyVGltZW91dCIsImpvaW4iLCJ1cGRhdGVTaXplIiwiYXhpcyIsInJhdyIsImNsYXNzTmFtZSIsImNoaWxkcmVuIiwidmFyaWF0aW9uQ2xhc3NOYW1lIiwiYWNjZXB0IiwibXVsdGlwbGUiLCJwbGFjZWhvbGRlciIsIm9uVXBsb2FkU3VjY2VzcyIsInVwbG9hZGVkIiwicHJldmlldyIsInN0eWxlIiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJhbGlnbkl0ZW1zIiwiZ2FwIiwicG9zaXRpb24iLCJ2aWV3VXJsIiwiY2FjaGVkVmlld1VybCIsImFsdCIsInNyYyIsIm1heFdpZHRoIiwibWF4SGVpZ2h0Iiwib2JqZWN0Rml0IiwidHlwZSIsIm9uQ2xpY2siLCJldmVudCIsInN0b3BQcm9wYWdhdGlvbiIsInByZXZlbnREZWZhdWx0IiwidG9wIiwicmlnaHQiLCJmb250U2l6ZSIsIm1hcCIsImNvbG91ciIsInRpdGxlIiwiYm9yZGVyUmFkaXVzIiwiYmFja2dyb3VuZCIsImJvcmRlciIsInJ1bGVzIiwicmVxdWlyZWQiLCJvbkNoYW5nZSIsInRhcmdldCIsImZsZXhXcmFwIiwibWFyZ2luVG9wIiwiaW5kZXgiLCJmbGV4IiwibWluIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvVmFyaWF0aW9uRW1icm9pZGVyeUlucHV0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VGaWVsZEFycmF5IH0gZnJvbSAncmVhY3QtaG9vay1mb3JtJztcbmltcG9ydCB7IEZhVGltZXMgfSBmcm9tICdyZWFjdC1pY29ucy9mYSc7XG5pbXBvcnQgeyBDZ1NwaW5uZXIgfSBmcm9tICdyZWFjdC1pY29ucy9jZyc7XG5pbXBvcnQgRHJvcHpvbmVJbnB1dCBmcm9tICcuL0Ryb3B6b25lSW5wdXQnO1xuaW1wb3J0IElucHV0SGlkZGVuU3RhdGljIGZyb20gJy4vSW5wdXRIaWRkZW5TdGF0aWMnO1xuaW1wb3J0IFZhcmlhdGlvbkVycm9yIGZyb20gJy4vVmFyaWF0aW9uRXJyb3InO1xuaW1wb3J0IFZhcmlhdGlvbkxhYmVsIGZyb20gJy4vVmFyaWF0aW9uTGFiZWwnO1xuaW1wb3J0IHsgdXNlTWVyY2hpRm9ybUNvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0L01lcmNoaVByb2R1Y3RGb3JtUHJvdmlkZXInO1xuaW1wb3J0IHtcbiAgRW1icm9pZGVyeVZhbHVlLFxuICBlbWJyb2lkZXJ5UXVhbGl0eVdhcm5pbmcsXG4gIGVtYnJvaWRlcnlWYWx1ZUpzb24sXG4gIHBhcnNlRW1icm9pZGVyeVZhbHVlLFxufSBmcm9tICcuLi91dGlscy9lbWJyb2lkZXJ5JztcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhcmlhdGlvbjogYW55O1xufVxuXG5mdW5jdGlvbiBzaXplVGV4dCh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgTnVtYmVyKHZhbHVlKSA+IDAgPyBTdHJpbmcodmFsdWUpIDogJyc7XG59XG5cbmZ1bmN0aW9uIFZhcmlhdGlvbkVtYnJvaWRlcnlJbnB1dCh7IGRpc2FibGVkLCBuYW1lLCB2YXJpYXRpb24gfTogUHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGFwaVVybCxcbiAgICBjbGFzc05hbWVGaWxlVXBsb2FkQ29udGFpbmVyLFxuICAgIGNsYXNzTmFtZUZpbGVQcmV2aWV3Q29udGFpbmVyLFxuICAgIGNsYXNzTmFtZUZpbGVQcmV2aWV3SWNvbldyYXBwZXIsXG4gICAgY29udHJvbCxcbiAgICBnZXRRdW90ZSxcbiAgICBob29rRm9ybSxcbiAgfSA9IHVzZU1lcmNoaUZvcm1Db250ZXh0KCk7XG4gIGNvbnN0IHsgc2V0VmFsdWUsIHdhdGNoIH0gPSBob29rRm9ybTtcbiAgY29uc3QgdmFyaWF0aW9uRmllbGQgPSB2YXJpYXRpb24udmFyaWF0aW9uRmllbGQgfHwge307XG4gIGNvbnN0IGZpbGVNb2RlID0gdmFyaWF0aW9uRmllbGQuZW1icm9pZGVyeUlucHV0TW9kZSAhPT0gJ3RleHQnO1xuICBjb25zdCBtYXhDb2xvdXJzID0gTnVtYmVyKHZhcmlhdGlvbkZpZWxkLm1heENvbG91cnMpID4gMFxuICAgID8gTnVtYmVyKHZhcmlhdGlvbkZpZWxkLm1heENvbG91cnMpXG4gICAgOiA0O1xuICBjb25zdCBzYXZlZCA9IHBhcnNlRW1icm9pZGVyeVZhbHVlKHdhdGNoKGAke25hbWV9LnZhbHVlYCkpIHx8IHt9O1xuICBjb25zdCBbd29yZGluZywgc2V0V29yZGluZ10gPSB1c2VTdGF0ZShzYXZlZC50ZXh0IHx8ICcnKTtcbiAgY29uc3QgW3dpZHRoLCBzZXRXaWR0aF0gPSB1c2VTdGF0ZShzaXplVGV4dChzYXZlZC53aWR0aE1tKSk7XG4gIGNvbnN0IFtoZWlnaHQsIHNldEhlaWdodF0gPSB1c2VTdGF0ZShzaXplVGV4dChzYXZlZC5oZWlnaHRNbSkpO1xuICBjb25zdCBbY29sb3Vycywgc2V0Q29sb3Vyc10gPSB1c2VTdGF0ZTxzdHJpbmdbXT4oXG4gICAgc2F2ZWQuY29sb3Vycz8ubGVuZ3RoID8gc2F2ZWQuY29sb3VycyA6IFsnIzExMTExMSddXG4gICk7XG4gIGNvbnN0IFttZWFzdXJpbmcsIHNldE1lYXN1cmluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHJlcXVlc3RJZCA9IHVzZVJlZigwKTtcbiAgY29uc3QgZmlsZXNOYW1lID0gYCR7bmFtZX0udmFyaWF0aW9uRmlsZXNgO1xuICBjb25zdCB7IGFwcGVuZCwgZmllbGRzLCByZW1vdmUgfSA9IHVzZUZpZWxkQXJyYXkoe1xuICAgIGNvbnRyb2wsXG4gICAga2V5TmFtZTogJ2ZpbGVJZCcsXG4gICAgbmFtZTogZmlsZXNOYW1lLFxuICB9KTtcbiAgY29uc3QgZmlsZSA9IGZpZWxkc1swXSBhcyBhbnk7XG4gIGNvbnN0IGRyYWZ0OiBFbWJyb2lkZXJ5VmFsdWUgPSB7XG4gICAgLi4uc2F2ZWQsXG4gICAgdGV4dDogZmlsZU1vZGUgPyBzYXZlZC50ZXh0IDogd29yZGluZyxcbiAgICB3aWR0aE1tOiBOdW1iZXIod2lkdGgpIHx8IHVuZGVmaW5lZCxcbiAgICBoZWlnaHRNbTogTnVtYmVyKGhlaWdodCkgfHwgdW5kZWZpbmVkLFxuICAgIGNvbG91cnM6IGZpbGVNb2RlID8gc2F2ZWQuY29sb3VycyA6IGNvbG91cnMuc2xpY2UoMCwgbWF4Q29sb3VycyksXG4gIH07XG4gIGNvbnN0IHdhcm5pbmcgPSBmaWxlTW9kZSA/IGVtYnJvaWRlcnlRdWFsaXR5V2FybmluZyhkcmFmdCkgOiBudWxsO1xuICBjb25zdCB3YXRjaGVkVmFsdWUgPSB3YXRjaChgJHtuYW1lfS52YWx1ZWApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VFbWJyb2lkZXJ5VmFsdWUod2F0Y2hlZFZhbHVlKTtcbiAgICBpZiAoIXBhcnNlZCkgcmV0dXJuO1xuICAgIGlmIChwYXJzZWQud2lkdGhNbSAmJiBTdHJpbmcocGFyc2VkLndpZHRoTW0pICE9PSB3aWR0aCkge1xuICAgICAgc2V0V2lkdGgoU3RyaW5nKHBhcnNlZC53aWR0aE1tKSk7XG4gICAgfVxuICAgIGlmIChwYXJzZWQuaGVpZ2h0TW0gJiYgU3RyaW5nKHBhcnNlZC5oZWlnaHRNbSkgIT09IGhlaWdodCkge1xuICAgICAgc2V0SGVpZ2h0KFN0cmluZyhwYXJzZWQuaGVpZ2h0TW0pKTtcbiAgICB9XG4gICAgLy8gRHJhZnQgcmVzaXplcyB3cml0ZSB0aGUgZm9ybSB2YWx1ZS4gRG9uJ3QgZGVwZW5kIG9uIGxvY2FsIHNpemUgb3IgdGhpc1xuICAgIC8vIHdvdWxkIGZpZ2h0IHRoZSBpbnB1dHMgd2hpbGUgdGhleSBhcmUgYmVpbmcgdHlwZWQuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbd2F0Y2hlZFZhbHVlXSk7XG5cbiAgY29uc3Qgd3JpdGVWYWx1ZSA9IChuZXh0OiBFbWJyb2lkZXJ5VmFsdWUsIHF1b3RlID0gdHJ1ZSkgPT4ge1xuICAgIHNldFZhbHVlKGAke25hbWV9LnZhbHVlYCwgZW1icm9pZGVyeVZhbHVlSnNvbihuZXh0KSwgeyBzaG91bGREaXJ0eTogdHJ1ZSB9KTtcbiAgICBpZiAocXVvdGUpIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gZ2V0UXVvdGUoKSk7XG4gIH07XG5cbiAgY29uc3QgbWVhc3VyZSA9IGFzeW5jIChuZXh0OiBFbWJyb2lkZXJ5VmFsdWUsIGZpbGVJZD86IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGZpZWxkSWQgPSB2YXJpYXRpb25GaWVsZC5pZDtcbiAgICBpZiAoIWZpZWxkSWQpIHJldHVybjtcbiAgICBjb25zdCBjdXJyZW50ID0gKytyZXF1ZXN0SWQuY3VycmVudDtcbiAgICBzZXRNZWFzdXJpbmcodHJ1ZSk7XG4gICAgc2V0RXJyb3IobnVsbCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhc2UgPSBhcGlVcmwuZW5kc1dpdGgoJy8nKSA/IGFwaVVybCA6IGAke2FwaVVybH0vYDtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goXG4gICAgICAgIGAke2Jhc2V9dmFyaWF0aW9uLWZpZWxkcy8ke2ZpZWxkSWR9L2VzdGltYXRlLWVtYnJvaWRlcnkvYCxcbiAgICAgICAge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LFxuICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIHRleHQ6IG5leHQudGV4dCB8fCAnJyxcbiAgICAgICAgICAgIHdpZHRoTW06IG5leHQud2lkdGhNbSxcbiAgICAgICAgICAgIGhlaWdodE1tOiBuZXh0LmhlaWdodE1tLFxuICAgICAgICAgICAgY29sb3VyczogbmV4dC5jb2xvdXJzLFxuICAgICAgICAgICAgZmlsZUlkLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgaWYgKCFyZXNwb25zZS5vaykgdGhyb3cgbmV3IEVycm9yKGBNZWFzdXJlIGZhaWxlZCAoJHtyZXNwb25zZS5zdGF0dXN9KWApO1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICAgIGlmIChjdXJyZW50ICE9PSByZXF1ZXN0SWQuY3VycmVudCkgcmV0dXJuO1xuICAgICAgY29uc3QgbWVyZ2VkOiBFbWJyb2lkZXJ5VmFsdWUgPSB7XG4gICAgICAgIC4uLm5leHQsXG4gICAgICAgIGNvbG91cnM6IGRhdGEuY29sb3VycyB8fCBuZXh0LmNvbG91cnMsXG4gICAgICAgIGNvdmVyYWdlOiBkYXRhLmNvdmVyYWdlLFxuICAgICAgICBwaXhlbFdpZHRoOiBkYXRhLnBpeGVsV2lkdGggfHwgbmV4dC5waXhlbFdpZHRoLFxuICAgICAgICBwaXhlbEhlaWdodDogZGF0YS5waXhlbEhlaWdodCB8fCBuZXh0LnBpeGVsSGVpZ2h0LFxuICAgICAgICB3aWR0aE1tOiBuZXh0LndpZHRoTW0gfHwgZGF0YS53aWR0aE1tIHx8IGRhdGEubWVhc3VyZWRXaWR0aE1tLFxuICAgICAgICBoZWlnaHRNbTogbmV4dC5oZWlnaHRNbSB8fCBkYXRhLmhlaWdodE1tIHx8IGRhdGEubWVhc3VyZWRIZWlnaHRNbSxcbiAgICAgIH07XG4gICAgICBjb25zdCBtZWFzdXJlZFdpZHRoID0gZGF0YS53aWR0aE1tIHx8IGRhdGEubWVhc3VyZWRXaWR0aE1tO1xuICAgICAgY29uc3QgbWVhc3VyZWRIZWlnaHQgPSBkYXRhLmhlaWdodE1tIHx8IGRhdGEubWVhc3VyZWRIZWlnaHRNbTtcbiAgICAgIGlmICghbmV4dC53aWR0aE1tICYmIG1lYXN1cmVkV2lkdGgpIHNldFdpZHRoKFN0cmluZyhtZWFzdXJlZFdpZHRoKSk7XG4gICAgICBpZiAoIW5leHQuaGVpZ2h0TW0gJiYgbWVhc3VyZWRIZWlnaHQpIHNldEhlaWdodChTdHJpbmcobWVhc3VyZWRIZWlnaHQpKTtcbiAgICAgIHdyaXRlVmFsdWUobWVyZ2VkKTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgaWYgKGN1cnJlbnQgPT09IHJlcXVlc3RJZC5jdXJyZW50KSB7XG4gICAgICAgIHNldEVycm9yKGVycj8ubWVzc2FnZSB8fCAnVW5hYmxlIHRvIG1lYXN1cmUgdGhpcyBlbWJyb2lkZXJ5LicpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoY3VycmVudCA9PT0gcmVxdWVzdElkLmN1cnJlbnQpIHNldE1lYXN1cmluZyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgbmV4dCA9IHtcbiAgICAgICAgLi4uZHJhZnQsXG4gICAgICAgIHRleHQ6IGZpbGVNb2RlID8gdW5kZWZpbmVkIDogd29yZGluZyxcbiAgICAgICAgY29sb3VyczogZmlsZU1vZGUgPyBkcmFmdC5jb2xvdXJzIDogY29sb3VycyxcbiAgICAgIH07XG4gICAgICBpZiAoZmlsZU1vZGUgJiYgIWZpbGU/LmlkICYmICFuZXh0LndpZHRoTW0pIHJldHVybjtcbiAgICAgIGlmICghZmlsZU1vZGUgJiYgIXdvcmRpbmcudHJpbSgpKSByZXR1cm47XG4gICAgICBtZWFzdXJlKG5leHQsIGZpbGU/LmlkKTtcbiAgICB9LCAzNTApO1xuICAgIHJldHVybiAoKSA9PiB3aW5kb3cuY2xlYXJUaW1lb3V0KGhhbmRsZSk7XG4gICAgLy8gUmUtbWVhc3VyZSB3aGVuIHRoZSBkZXNpZ24gb3Igc2l6ZSBjaGFuZ2VzLiBgZHJhZnRgIGlzIGRlcml2ZWQgZWFjaCByZW5kZXIuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbd29yZGluZywgd2lkdGgsIGhlaWdodCwgY29sb3Vycy5qb2luKCd8JyksIGZpbGU/LmlkLCBmaWxlTW9kZV0pO1xuXG4gIGNvbnN0IHVwZGF0ZVNpemUgPSAoYXhpczogJ3dpZHRoJyB8ICdoZWlnaHQnLCByYXc6IHN0cmluZykgPT4ge1xuICAgIGlmIChheGlzID09PSAnd2lkdGgnKSBzZXRXaWR0aChyYXcpO1xuICAgIGVsc2Ugc2V0SGVpZ2h0KHJhdyk7XG4gICAgd3JpdGVWYWx1ZSh7XG4gICAgICAuLi5kcmFmdCxcbiAgICAgIHdpZHRoTW06IE51bWJlcihheGlzID09PSAnd2lkdGgnID8gcmF3IDogd2lkdGgpIHx8IHVuZGVmaW5lZCxcbiAgICAgIGhlaWdodE1tOiBOdW1iZXIoYXhpcyA9PT0gJ2hlaWdodCcgPyByYXcgOiBoZWlnaHQpIHx8IHVuZGVmaW5lZCxcbiAgICB9LCBmYWxzZSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lRmlsZVVwbG9hZENvbnRhaW5lcn0+XG4gICAgICA8VmFyaWF0aW9uTGFiZWxcbiAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgdmFyaWF0aW9uQ2xhc3NOYW1lPSdtZXJjaGktZW1iZWQtZm9ybV9pbnB1dC1maWxlJ1xuICAgICAgICB2YXJpYXRpb249e3ZhcmlhdGlvbn1cbiAgICAgIC8+XG4gICAgICB7ZmlsZU1vZGUgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPERyb3B6b25lSW5wdXRcbiAgICAgICAgICAgIGFjY2VwdD0nLmpwZywuanBlZywucG5nLC53ZWJwLC5naWYnXG4gICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWQgfHwgbWVhc3VyaW5nfVxuICAgICAgICAgICAgbXVsdGlwbGU9e2ZhbHNlfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3ZhcmlhdGlvbkZpZWxkLnBsYWNlaG9sZGVyIHx8ICdEcm9wIGFydHdvcmsgaW1hZ2U6J31cbiAgICAgICAgICAgIG9uVXBsb2FkU3VjY2Vzcz17KHVwbG9hZGVkOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGZpZWxkcy5sZW5ndGgpIHJlbW92ZSgwKTtcbiAgICAgICAgICAgICAgYXBwZW5kKHVwbG9hZGVkKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBwcmV2aWV3PXtmaWxlID8gKFxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBnYXA6IDggfX0+XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBwb3NpdGlvbjogJ3JlbGF0aXZlJyB9fT5cbiAgICAgICAgICAgICAgICAgIHsoZmlsZS52aWV3VXJsIHx8IGZpbGUuY2FjaGVkVmlld1VybCkgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICBhbHQ9e2ZpbGUubmFtZSB8fCAnRW1icm9pZGVyeSBhcnR3b3JrJ31cbiAgICAgICAgICAgICAgICAgICAgICBzcmM9e2ZpbGUudmlld1VybCB8fCBmaWxlLmNhY2hlZFZpZXdVcmx9XG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogJ2Jsb2NrJywgbWF4V2lkdGg6IDIyMCwgbWF4SGVpZ2h0OiAxNjAsIG9iamVjdEZpdDogJ2NvbnRhaW4nIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT0nYnV0dG9uJ1xuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPSdSZW1vdmUgYXJ0d29yaydcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVGaWxlUHJldmlld0ljb25XcmFwcGVyfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZSgwKTtcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgcG9zaXRpb246ICdhYnNvbHV0ZScsIHRvcDogMCwgcmlnaHQ6IC0yOCB9fVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8RmFUaW1lcyBjbGFzc05hbWU9J2Nsb3NlLWljb24nIC8+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGZvbnRTaXplOiAxMiB9fT5cbiAgICAgICAgICAgICAgICAgIHt3aWR0aCA/IGAke3dpZHRofSBtbSB3aWRlYCA6ICdNZWFzdXJpbmcgd2lkdGjigKYnfVxuICAgICAgICAgICAgICAgICAgeycgwrcgJ31cbiAgICAgICAgICAgICAgICAgIHtoZWlnaHQgPyBgJHtoZWlnaHR9IG1tIGhpZ2hgIDogJ01lYXN1cmluZyBoZWlnaHTigKYnfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIHtBcnJheS5pc0FycmF5KGRyYWZ0LmNvbG91cnMpICYmIGRyYWZ0LmNvbG91cnMubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBnYXA6IDYgfX0+XG4gICAgICAgICAgICAgICAgICAgIHtkcmFmdC5jb2xvdXJzLm1hcCgoY29sb3VyKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17Y29sb3VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e2NvbG91cn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxNixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxNixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiA4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBjb2xvdXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6ICcxcHggc29saWQgcmdiYSgwLDAsMCwwLjIpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICB7d2FybmluZyA/IChcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSd0ZXh0LWRhbmdlcicgc3R5bGU9e3sgZm9udFNpemU6IDEyIH19Pnt3YXJuaW5nfTwvZGl2PlxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDxJbnB1dEhpZGRlblN0YXRpY1xuICAgICAgICAgICAgICAgICAgbmFtZT17YCR7ZmlsZXNOYW1lfVswXS5pZGB9XG4gICAgICAgICAgICAgICAgICBydWxlcz17eyByZXF1aXJlZDogdHJ1ZSB9fVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2ZpbGUuaWR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogdW5kZWZpbmVkfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGNsYXNzTmFtZT0nZm9ybS1jb250cm9sJ1xuICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgdmFsdWU9e3dvcmRpbmd9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17dmFyaWF0aW9uRmllbGQucGxhY2Vob2xkZXIgfHwgJ1dvcmRpbmcnfVxuICAgICAgICAgICAgb25DaGFuZ2U9eyhldmVudCkgPT4gc2V0V29yZGluZyhldmVudC50YXJnZXQudmFsdWUpfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGdhcDogOCwgZmxleFdyYXA6ICd3cmFwJywgbWFyZ2luVG9wOiA4IH19PlxuICAgICAgICAgICAge2NvbG91cnMubWFwKChjb2xvdXIsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGtleT17YCR7Y29sb3VyfS0ke2luZGV4fWB9XG4gICAgICAgICAgICAgICAgdHlwZT0nY29sb3InXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17YFRocmVhZCBjb2xvdXIgJHtpbmRleCArIDF9YH1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgdmFsdWU9e2NvbG91cn1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gY29sb3Vycy5zbGljZSgpO1xuICAgICAgICAgICAgICAgICAgbmV4dFtpbmRleF0gPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgICAgICAgICAgICAgICBzZXRDb2xvdXJzKG5leHQpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICAgIHtjb2xvdXJzLmxlbmd0aCA8IG1heENvbG91cnMgPyAoXG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPSdidXR0b24nXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPSdidG4gYnRuLXNtIGJ0bi1saW5rJ1xuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRDb2xvdXJzKFsuLi5jb2xvdXJzLCAnIzAwMDAwMCddKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEFkZCBjb2xvdXJcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGdhcDogOCwgbWFyZ2luVG9wOiA4IH19PlxuICAgICAgICA8bGFiZWwgc3R5bGU9e3sgZmxleDogMSB9fT5cbiAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnYmxvY2snLCBmb250U2l6ZTogMTIgfX0+V2lkdGggKG1tKTwvc3Bhbj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGNsYXNzTmFtZT0nZm9ybS1jb250cm9sJ1xuICAgICAgICAgICAgdHlwZT0nbnVtYmVyJ1xuICAgICAgICAgICAgbWluPXswfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9J1dpZHRoIChtbSknXG4gICAgICAgICAgICB2YWx1ZT17d2lkdGh9XG4gICAgICAgICAgICBvbkNoYW5nZT17KGV2ZW50KSA9PiB1cGRhdGVTaXplKCd3aWR0aCcsIGV2ZW50LnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGxhYmVsIHN0eWxlPXt7IGZsZXg6IDEgfX0+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZGlzcGxheTogJ2Jsb2NrJywgZm9udFNpemU6IDEyIH19PkhlaWdodCAobW0pPC9zcGFuPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3NOYW1lPSdmb3JtLWNvbnRyb2wnXG4gICAgICAgICAgICB0eXBlPSdudW1iZXInXG4gICAgICAgICAgICBtaW49ezB9XG4gICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj0nSGVpZ2h0IChtbSknXG4gICAgICAgICAgICB2YWx1ZT17aGVpZ2h0fVxuICAgICAgICAgICAgb25DaGFuZ2U9eyhldmVudCkgPT4gdXBkYXRlU2l6ZSgnaGVpZ2h0JywgZXZlbnQudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgICB7bWVhc3VyaW5nID8gPENnU3Bpbm5lciBjbGFzc05hbWU9J2FuaW1hdGVfc3BpbicgLz4gOiBudWxsfVxuICAgICAge2Vycm9yID8gPGRpdiBjbGFzc05hbWU9J3RleHQtZGFuZ2VyJz57ZXJyb3J9PC9kaXY+IDogbnVsbH1cbiAgICAgIDxWYXJpYXRpb25FcnJvciBuYW1lPXtuYW1lfSAvPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBWYXJpYXRpb25FbWJyb2lkZXJ5SW5wdXQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7O0FBQUMsU0FBQUEsUUFBQUMsQ0FBQSxzQ0FBQUQsT0FBQSx3QkFBQUUsTUFBQSx1QkFBQUEsTUFBQSxDQUFBQyxRQUFBLGFBQUFGLENBQUEsa0JBQUFBLENBQUEsZ0JBQUFBLENBQUEsV0FBQUEsQ0FBQSx5QkFBQUMsTUFBQSxJQUFBRCxDQUFBLENBQUFHLFdBQUEsS0FBQUYsTUFBQSxJQUFBRCxDQUFBLEtBQUFDLE1BQUEsQ0FBQUcsU0FBQSxxQkFBQUosQ0FBQSxLQUFBRCxPQUFBLENBQUFDLENBQUE7QUFBQSxTQUFBSyxtQkFBQUMsQ0FBQSxXQUFBQyxrQkFBQSxDQUFBRCxDQUFBLEtBQUFFLGdCQUFBLENBQUFGLENBQUEsS0FB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LFFBQUEsRUFBQztRQUFVLENBQU0sQ0FBQyxlQUNsRWxILElBQUE7VUFDRWlILFNBQVMsRUFBQyxjQUFjO1VBQ3hCc0IsSUFBSSxFQUFDLFFBQVE7VUFDYnNCLEdBQUcsRUFBRSxDQUFFO1VBQ1BwSixRQUFRLEVBQUVBLFFBQVM7VUFDbkI2RyxXQUFXLEVBQUMsWUFBWTtVQUN4QnZMLEtBQUssRUFBRW9HLEtBQU07VUFDYm9ILFFBQVEsRUFBRSxTQUFWQSxRQUFRQSxDQUFHZCxLQUFLO1lBQUEsT0FBSzNCLFVBQVUsQ0FBQyxPQUFPLEVBQUUyQixLQUFLLENBQUNlLE1BQU0sQ0FBQ3pOLEtBQUssQ0FBQztVQUFBO1FBQUMsQ0FDOUQsQ0FBQztNQUFBLENBQ0csQ0FBQyxlQUNSbUUsS0FBQTtRQUFPd0gsS0FBSyxFQUFFO1VBQUVrQyxJQUFJLEVBQUU7UUFBRSxDQUFFO1FBQUExQyxRQUFBLGdCQUN4QmxILElBQUE7VUFBTTBILEtBQUssRUFBRTtZQUFFQyxPQUFPLEVBQUUsT0FBTztZQUFFbUIsUUFBUSxFQUFFO1VBQUcsQ0FBRTtVQUFBNUIsUUFBQSxFQUFDO1FBQVcsQ0FBTSxDQUFDLGVBQ25FbEgsSUFBQTtVQUNFaUgsU0FBUyxFQUFDLGNBQWM7VUFDeEJzQixJQUFJLEVBQUMsUUFBUTtVQUNic0IsR0FBRyxFQUFFLENBQUU7VUFDUHBKLFFBQVEsRUFBRUEsUUFBUztVQUNuQjZHLFdBQVcsRUFBQyxhQUFhO1VBQ3pCdkwsS0FBSyxFQUFFeUcsTUFBTztVQUNkK0csUUFBUSxFQUFFLFNBQVZBLFFBQVFBLENBQUdkLEtBQUs7WUFBQSxPQUFLM0IsVUFBVSxDQUFDLFFBQVEsRUFBRTJCLEtBQUssQ0FBQ2UsTUFBTSxDQUFDek4sS0FBSyxDQUFDO1VBQUE7UUFBQyxDQUMvRCxDQUFDO01BQUEsQ0FDRyxDQUFDO0lBQUEsQ0FDTCxDQUFDLEVBQ0xpSCxTQUFTLGdCQUFHaEQsSUFBQSxDQUFDVixTQUFTO01BQUMySCxTQUFTLEVBQUM7SUFBYyxDQUFFLENBQUMsR0FBRyxJQUFJLEVBQ3pEN0QsS0FBSyxnQkFBR3BELElBQUE7TUFBS2lILFNBQVMsRUFBQyxhQUFhO01BQUFDLFFBQUEsRUFBRTlEO0lBQUssQ0FBTSxDQUFDLEdBQUcsSUFBSSxlQUMxRHBELElBQUEsQ0FBQ1AsY0FBYztNQUFDWixJQUFJLEVBQUVBO0lBQUssQ0FBRSxDQUFDO0VBQUEsQ0FDM0IsQ0FBQztBQUVWO0FBRUEsZUFBZXlCLHdCQUF3QiIsImlnbm9yZUxpc3QiOltdfQ==