@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.
- package/lib/actions/jobs.d.ts +1 -1
- package/lib/components/DropzoneInput.d.ts +3 -1
- package/lib/components/DropzoneInput.js +4 -3
- package/lib/components/DynamicVariationInput.js +3 -1
- package/lib/components/VariationEmbroideryInput.d.ts +8 -0
- package/lib/components/VariationEmbroideryInput.js +419 -0
- package/lib/components/drafts/DraftDesignerSheet.js +50 -3
- package/lib/components/utils.js +2 -2
- package/lib/utils/draftTemplates.d.ts +1 -0
- package/lib/utils/draftTemplates.js +39 -7
- package/lib/utils/embroidery.d.ts +26 -0
- package/lib/utils/embroidery.js +98 -0
- package/lib/utils/selections.d.ts +1 -0
- package/lib/utils/selections.js +24 -6
- package/lib/utils/types.d.ts +2 -1
- package/lib/utils/types.js +2 -1
- package/package.json +2 -2
|
@@ -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==
|