@kando-env/kando-ui 1.2.47-alpha.16 → 1.2.47-alpha.17
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/Router.js +3 -3
- package/lib/components/SevereEvent/SevereEvent.js +2 -2
- package/lib/i18n/en.json +2 -1
- package/lib/i18n/he.json +2 -1
- package/lib/macros/getVersion.js +1 -1
- package/lib/pages/SamplingsPage/SamplingActionDropdown.js +3 -3
- package/lib/pages/SamplingsPage/SamplingMobileModal.js +2 -2
- package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +2 -2
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +305 -0
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +111 -245
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +167 -0
- package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +14 -10
- package/lib/pages/SamplingsPage/samplingsPageUtils.js +27 -21
- package/lib/pages/SamplingsPage/style.module.scss +32 -0
- package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +1 -1
- package/lib/ui-kit/MobileInput/MobileInput.js +4 -4
- package/package.json +1 -1
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingMobileProperties.js +0 -262
- package/lib/pages/SamplingsPage/SamplingProperties/bootstrap.overrides.scss +0 -7
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
|
-
Object.defineProperty(exports, "__esModule", {
|
|
8
|
-
value: true
|
|
9
|
-
});
|
|
10
|
-
exports.SamplingMobileProperties = void 0;
|
|
11
|
-
|
|
12
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
13
|
-
|
|
14
|
-
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
15
|
-
|
|
16
|
-
var _reactDatepicker = _interopRequireDefault(require("react-datepicker"));
|
|
17
|
-
|
|
18
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
19
|
-
|
|
20
|
-
var _axios = _interopRequireDefault(require("axios"));
|
|
21
|
-
|
|
22
|
-
var _moment = _interopRequireDefault(require("moment"));
|
|
23
|
-
|
|
24
|
-
var _reactBootstrap = require("react-bootstrap");
|
|
25
|
-
|
|
26
|
-
var _reactDeviceDetect = require("react-device-detect");
|
|
27
|
-
|
|
28
|
-
var _reactRouterDom = require("react-router-dom");
|
|
29
|
-
|
|
30
|
-
var _reactRedux = require("react-redux");
|
|
31
|
-
|
|
32
|
-
var _Layout = _interopRequireDefault(require("ui-kit/Layout/Layout"));
|
|
33
|
-
|
|
34
|
-
var _samplingPropertiesPhone = _interopRequireDefault(require("assets/icons/sampling-properties-phone.svg"));
|
|
35
|
-
|
|
36
|
-
var _i18n = _interopRequireDefault(require("utilities/i18n"));
|
|
37
|
-
|
|
38
|
-
var _useQueryURL = _interopRequireDefault(require("hooks/useQueryURL"));
|
|
39
|
-
|
|
40
|
-
var _imageMissing = require("@svgr/webpack?-svgo!assets/image-missing.svg");
|
|
41
|
-
|
|
42
|
-
var _Spinner = require("components/Spinner/Spinner");
|
|
43
|
-
|
|
44
|
-
var _urls = require("utilities/urls");
|
|
45
|
-
|
|
46
|
-
var _styleModule = _interopRequireDefault(require("../style.module.scss"));
|
|
47
|
-
|
|
48
|
-
var _SamplingPropertiesForm = require("./SamplingPropertiesForm");
|
|
49
|
-
|
|
50
|
-
var _SamplingsMobileItem = require("../SamplingsMobileItem");
|
|
51
|
-
|
|
52
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
53
|
-
|
|
54
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
55
|
-
|
|
56
|
-
/*
|
|
57
|
-
* Properties and Cancelling forms.
|
|
58
|
-
**/
|
|
59
|
-
function ImageMissingComponent(props) {
|
|
60
|
-
var image;
|
|
61
|
-
|
|
62
|
-
if (props.samplingProperties.point_photo !== null) {
|
|
63
|
-
image = /*#__PURE__*/_react.default.createElement("div", {
|
|
64
|
-
className: _styleModule.default.imageWrapper,
|
|
65
|
-
style: {
|
|
66
|
-
height: '100%',
|
|
67
|
-
backgroundSize: 'cover',
|
|
68
|
-
backgroundPosition: 'center',
|
|
69
|
-
backgroundImage: "url(".concat(props.samplingProperties.point_photo, ")")
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
} else {
|
|
73
|
-
image = /*#__PURE__*/_react.default.createElement("div", {
|
|
74
|
-
className: _styleModule.default.imageWrapper
|
|
75
|
-
}, /*#__PURE__*/_react.default.createElement(_imageMissing.ReactComponent, null));
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
return image;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
var SamplingMobileProperties = function SamplingMobileProperties() {
|
|
82
|
-
var currDate = Date.now();
|
|
83
|
-
|
|
84
|
-
var _useState = (0, _react.useState)(currDate),
|
|
85
|
-
_useState2 = (0, _slicedToArray2.default)(_useState, 1),
|
|
86
|
-
collectionDate = _useState2[0];
|
|
87
|
-
|
|
88
|
-
var _useState3 = (0, _react.useState)(false),
|
|
89
|
-
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
90
|
-
samplingUpdated = _useState4[0],
|
|
91
|
-
setSamplingUpdated = _useState4[1];
|
|
92
|
-
|
|
93
|
-
var _useState5 = (0, _react.useState)(undefined),
|
|
94
|
-
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
95
|
-
sampling = _useState6[0],
|
|
96
|
-
setSampling = _useState6[1];
|
|
97
|
-
|
|
98
|
-
var userInfo = (0, _reactRedux.useSelector)(function (state) {
|
|
99
|
-
return state.permissions.user_info;
|
|
100
|
-
});
|
|
101
|
-
var dateFormat = userInfo.date_time_format === 'us' ? 'MMM d, yyyy hh:mm aa' : 'd/MM/yyyy HH:mm';
|
|
102
|
-
|
|
103
|
-
var _useState7 = (0, _react.useState)(),
|
|
104
|
-
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
105
|
-
pageType = _useState8[0],
|
|
106
|
-
setPageType = _useState8[1];
|
|
107
|
-
|
|
108
|
-
var isPropertiesPage = pageType === 'edit';
|
|
109
|
-
|
|
110
|
-
var _useState9 = (0, _react.useState)(),
|
|
111
|
-
_useState10 = (0, _slicedToArray2.default)(_useState9, 2),
|
|
112
|
-
samplingProperties = _useState10[0],
|
|
113
|
-
setSamplingProperties = _useState10[1];
|
|
114
|
-
|
|
115
|
-
var _useState11 = (0, _react.useState)(new Date()),
|
|
116
|
-
_useState12 = (0, _slicedToArray2.default)(_useState11, 2),
|
|
117
|
-
currentDate = _useState12[0],
|
|
118
|
-
setCurrentDate = _useState12[1];
|
|
119
|
-
|
|
120
|
-
var CustomDatePicker = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
121
|
-
var value = _ref.value,
|
|
122
|
-
onClick = _ref.onClick;
|
|
123
|
-
return /*#__PURE__*/_react.default.createElement("div", {
|
|
124
|
-
className: _styleModule.default.datePicker,
|
|
125
|
-
ref: ref,
|
|
126
|
-
onClick: onClick
|
|
127
|
-
}, value);
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
var _useParams = (0, _reactRouterDom.useParams)(),
|
|
131
|
-
sampleId = _useParams.sampleId;
|
|
132
|
-
|
|
133
|
-
var fetchSamplingProperties = function fetchSamplingProperties() {
|
|
134
|
-
var samplingId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : sampleId;
|
|
135
|
-
var op = arguments.length > 1 ? arguments[1] : undefined;
|
|
136
|
-
|
|
137
|
-
// default pageType is: 'collect'
|
|
138
|
-
if ([undefined, null, ''].includes(op)) {
|
|
139
|
-
op = 'collecting';
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
_axios.default.get((0, _urls.urls)({
|
|
143
|
-
samplingId: samplingId
|
|
144
|
-
}).samplingProperties.fetchSampling.url).then(function (res) {
|
|
145
|
-
var samplingRes = res.data;
|
|
146
|
-
var sps = samplingRes.sampling_properties;
|
|
147
|
-
|
|
148
|
-
if (op === 'edit') {
|
|
149
|
-
setPageType(sps.sampling.is_canceled ? 'cancel' : 'collect');
|
|
150
|
-
setCurrentDate(new Date(sps.sampling.collection_time));
|
|
151
|
-
} else if (op === 'collecting') {
|
|
152
|
-
setCurrentDate(new Date());
|
|
153
|
-
setPageType('collect');
|
|
154
|
-
} else if (op === 'cancelling') {
|
|
155
|
-
setCurrentDate(new Date(sps.sampling.collection_time));
|
|
156
|
-
setPageType('cancel');
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
setSamplingProperties(sps);
|
|
160
|
-
setSampling(samplingRes.sampling_plan);
|
|
161
|
-
});
|
|
162
|
-
};
|
|
163
|
-
|
|
164
|
-
var getCurrentDate = function getCurrentDate(epoch) {
|
|
165
|
-
return (0, _moment.default)(epoch).format('DD/MM/YYYY hh:mm');
|
|
166
|
-
};
|
|
167
|
-
|
|
168
|
-
var query = (0, _useQueryURL.default)();
|
|
169
|
-
(0, _react.useEffect)(function () {
|
|
170
|
-
var op = query.get('op');
|
|
171
|
-
fetchSamplingProperties(sampleId, op);
|
|
172
|
-
}, [samplingUpdated]);
|
|
173
|
-
if (sampling === undefined) return /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, null);
|
|
174
|
-
return /*#__PURE__*/_react.default.createElement(_Layout.default, null, /*#__PURE__*/_react.default.createElement(SamplingPropertiesStyle, null, /*#__PURE__*/_react.default.createElement(Top, null, !_reactDeviceDetect.isMobile && samplingProperties !== undefined && /*#__PURE__*/_react.default.createElement(Start, null, /*#__PURE__*/_react.default.createElement(ImageMissingComponent, {
|
|
175
|
-
samplingProperties: samplingProperties
|
|
176
|
-
})), /*#__PURE__*/_react.default.createElement(End, null, /*#__PURE__*/_react.default.createElement(_SamplingsMobileItem.SamplingsMobileItem, {
|
|
177
|
-
isMobileProperties: true,
|
|
178
|
-
data: sampling
|
|
179
|
-
}), /*#__PURE__*/_react.default.createElement(PropertyItemLayout, null, /*#__PURE__*/_react.default.createElement(LeftSideLayout, null, sampling.contact), sampling.contact_number && /*#__PURE__*/_react.default.createElement(ContactNumberStyle, null, /*#__PURE__*/_react.default.createElement(PhoneIconStyle, {
|
|
180
|
-
src: _samplingPropertiesPhone.default
|
|
181
|
-
}), /*#__PURE__*/_react.default.createElement(UnderlineTextStyle, {
|
|
182
|
-
href: "tel:".concat(sampling.contact_number)
|
|
183
|
-
}, sampling.contact_number))), /*#__PURE__*/_react.default.createElement(PropertyItemLayout, null, /*#__PURE__*/_react.default.createElement(LeftSideLayout, null, _i18n.default.t('sampling.sampling_type')), sampling.type), /*#__PURE__*/_react.default.createElement(PropertyItemLayout, {
|
|
184
|
-
className: pageType === 'cancel' && _styleModule.default.hidden
|
|
185
|
-
}, /*#__PURE__*/_react.default.createElement(LeftSideLayout, null, _i18n.default.t('samplings_page.samplings_properties.collection_time')), /*#__PURE__*/_react.default.createElement("div", {
|
|
186
|
-
className: _styleModule.default.datePickerWrapper
|
|
187
|
-
}, /*#__PURE__*/_react.default.createElement(_reactDatepicker.default, {
|
|
188
|
-
disabled: isPropertiesPage,
|
|
189
|
-
timeIntervals: 10,
|
|
190
|
-
dateFormat: dateFormat,
|
|
191
|
-
timeFormat: "HH:mm",
|
|
192
|
-
showTimeInput: true,
|
|
193
|
-
popperProps: {
|
|
194
|
-
strategy: 'fixed'
|
|
195
|
-
},
|
|
196
|
-
selected: pageType !== 'cancel' ? currentDate : null,
|
|
197
|
-
onChange: function onChange(date) {
|
|
198
|
-
return setCurrentDate(date);
|
|
199
|
-
},
|
|
200
|
-
customInput: /*#__PURE__*/_react.default.createElement(CustomDatePicker, null)
|
|
201
|
-
}))))), samplingProperties !== undefined && pageType !== undefined && /*#__PURE__*/_react.default.createElement(_SamplingPropertiesForm.SamplingPropertiesForm, {
|
|
202
|
-
samplingProperties: samplingProperties,
|
|
203
|
-
sampling: sampling,
|
|
204
|
-
pageType: pageType,
|
|
205
|
-
currentDate: getCurrentDate(collectionDate),
|
|
206
|
-
setSamplingUpdated: setSamplingUpdated
|
|
207
|
-
})));
|
|
208
|
-
};
|
|
209
|
-
|
|
210
|
-
exports.SamplingMobileProperties = SamplingMobileProperties;
|
|
211
|
-
|
|
212
|
-
var SamplingPropertiesStyle = _styledComponents.default.div.withConfig({
|
|
213
|
-
displayName: "SamplingMobileProperties__SamplingPropertiesStyle",
|
|
214
|
-
componentId: "sc-1qot0ip-0"
|
|
215
|
-
})(["", " ", ""], !_reactDeviceDetect.isMobile ? 'width: 830px;' : '', !_reactDeviceDetect.isMobile ? 'margin: 100px;' : '');
|
|
216
|
-
|
|
217
|
-
var PropertyItemLayout = (0, _styledComponents.default)(_reactBootstrap.ListGroup.Item).withConfig({
|
|
218
|
-
displayName: "SamplingMobileProperties__PropertyItemLayout",
|
|
219
|
-
componentId: "sc-1qot0ip-1"
|
|
220
|
-
})(["display:flex;justify-content:space-between;border:none;height:42px;align-items:center;padding:0 0 6px;"]);
|
|
221
|
-
|
|
222
|
-
var LeftSideLayout = _styledComponents.default.span.withConfig({
|
|
223
|
-
displayName: "SamplingMobileProperties__LeftSideLayout",
|
|
224
|
-
componentId: "sc-1qot0ip-2"
|
|
225
|
-
})(["font-weight:bold;font-family:Nunito;font-weight:700;color:", ";"], function (_ref2) {
|
|
226
|
-
var theme = _ref2.theme;
|
|
227
|
-
return theme.colorScheme.natural.n100;
|
|
228
|
-
});
|
|
229
|
-
|
|
230
|
-
var ContactNumberStyle = _styledComponents.default.div.withConfig({
|
|
231
|
-
displayName: "SamplingMobileProperties__ContactNumberStyle",
|
|
232
|
-
componentId: "sc-1qot0ip-3"
|
|
233
|
-
})(["display:flex;align-items:center;gap:5px;"]);
|
|
234
|
-
|
|
235
|
-
var UnderlineTextStyle = _styledComponents.default.a.withConfig({
|
|
236
|
-
displayName: "SamplingMobileProperties__UnderlineTextStyle",
|
|
237
|
-
componentId: "sc-1qot0ip-4"
|
|
238
|
-
})(["text-decoration:underline;color:", ";"], function (_ref3) {
|
|
239
|
-
var theme = _ref3.theme;
|
|
240
|
-
return theme.samplingsPage.mobile.propertiesClickItems;
|
|
241
|
-
});
|
|
242
|
-
|
|
243
|
-
var PhoneIconStyle = _styledComponents.default.img.withConfig({
|
|
244
|
-
displayName: "SamplingMobileProperties__PhoneIconStyle",
|
|
245
|
-
componentId: "sc-1qot0ip-5"
|
|
246
|
-
})(["width:14px;height:14px;"]);
|
|
247
|
-
|
|
248
|
-
var Top = _styledComponents.default.div.withConfig({
|
|
249
|
-
displayName: "SamplingMobileProperties__Top",
|
|
250
|
-
componentId: "sc-1qot0ip-6"
|
|
251
|
-
})(["display:flex;"]);
|
|
252
|
-
|
|
253
|
-
var Start = _styledComponents.default.div.withConfig({
|
|
254
|
-
displayName: "SamplingMobileProperties__Start",
|
|
255
|
-
componentId: "sc-1qot0ip-7"
|
|
256
|
-
})(["width:", ";overflow:hidden;margin-inline-end:25px;img{border:1px solid #858a94;border-radius:16px;height:100%;width:100%;}svg{width:100%;height:100%;opacity:0.1;}"], _reactDeviceDetect.isMobile ? '0%' : '40%');
|
|
257
|
-
|
|
258
|
-
var End = _styledComponents.default.div.withConfig({
|
|
259
|
-
displayName: "SamplingMobileProperties__End",
|
|
260
|
-
componentId: "sc-1qot0ip-8"
|
|
261
|
-
})(["width:100%;border:1px solid #a6acb9;border-radius:16px;overflow:hidden;padding:0 20px;box-sizing:content-box;"]);
|
|
262
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wYWdlcy9TYW1wbGluZ3NQYWdlL1NhbXBsaW5nUHJvcGVydGllcy9TYW1wbGluZ01vYmlsZVByb3BlcnRpZXMudHN4Il0sIm5hbWVzIjpbIkltYWdlTWlzc2luZ0NvbXBvbmVudCIsInByb3BzIiwiaW1hZ2UiLCJzYW1wbGluZ1Byb3BlcnRpZXMiLCJwb2ludF9waG90byIsIlN0eWxlIiwiaW1hZ2VXcmFwcGVyIiwiaGVpZ2h0IiwiYmFja2dyb3VuZFNpemUiLCJiYWNrZ3JvdW5kUG9zaXRpb24iLCJiYWNrZ3JvdW5kSW1hZ2UiLCJTYW1wbGluZ01vYmlsZVByb3BlcnRpZXMiLCJjdXJyRGF0ZSIsIkRhdGUiLCJub3ciLCJjb2xsZWN0aW9uRGF0ZSIsInNhbXBsaW5nVXBkYXRlZCIsInNldFNhbXBsaW5nVXBkYXRlZCIsInVuZGVmaW5lZCIsInNhbXBsaW5nIiwic2V0U2FtcGxpbmciLCJ1c2VySW5mbyIsInN0YXRlIiwicGVybWlzc2lvbnMiLCJ1c2VyX2luZm8iLCJkYXRlRm9ybWF0IiwiZGF0ZV90aW1lX2Zvcm1hdCIsInBhZ2VUeXBlIiwic2V0UGFnZVR5cGUiLCJpc1Byb3BlcnRpZXNQYWdlIiwic2V0U2FtcGxpbmdQcm9wZXJ0aWVzIiwiY3VycmVudERhdGUiLCJzZXRDdXJyZW50RGF0ZSIsIkN1c3RvbURhdGVQaWNrZXIiLCJyZWYiLCJ2YWx1ZSIsIm9uQ2xpY2siLCJkYXRlUGlja2VyIiwic2FtcGxlSWQiLCJmZXRjaFNhbXBsaW5nUHJvcGVydGllcyIsInNhbXBsaW5nSWQiLCJvcCIsImluY2x1ZGVzIiwiYXhpb3MiLCJnZXQiLCJmZXRjaFNhbXBsaW5nIiwidXJsIiwidGhlbiIsInJlcyIsInNhbXBsaW5nUmVzIiwiZGF0YSIsInNwcyIsInNhbXBsaW5nX3Byb3BlcnRpZXMiLCJpc19jYW5jZWxlZCIsImNvbGxlY3Rpb25fdGltZSIsInNhbXBsaW5nX3BsYW4iLCJnZXRDdXJyZW50RGF0ZSIsImVwb2NoIiwiZm9ybWF0IiwicXVlcnkiLCJpc01vYmlsZSIsImNvbnRhY3QiLCJjb250YWN0X251bWJlciIsIlBob25lIiwiaTE4biIsInQiLCJ0eXBlIiwiaGlkZGVuIiwiZGF0ZVBpY2tlcldyYXBwZXIiLCJzdHJhdGVneSIsImRhdGUiLCJTYW1wbGluZ1Byb3BlcnRpZXNTdHlsZSIsInN0eWxlZCIsImRpdiIsIlByb3BlcnR5SXRlbUxheW91dCIsIkxpc3RHcm91cCIsIkl0ZW0iLCJMZWZ0U2lkZUxheW91dCIsInNwYW4iLCJ0aGVtZSIsImNvbG9yU2NoZW1lIiwibmF0dXJhbCIsIm4xMDAiLCJDb250YWN0TnVtYmVyU3R5bGUiLCJVbmRlcmxpbmVUZXh0U3R5bGUiLCJhIiwic2FtcGxpbmdzUGFnZSIsIm1vYmlsZSIsInByb3BlcnRpZXNDbGlja0l0ZW1zIiwiUGhvbmVJY29uU3R5bGUiLCJpbWciLCJUb3AiLCJTdGFydCIsIkVuZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7QUFFQTs7QUFDQTs7OztBQUVBOztBQUNBOztBQUVBOztBQUVBOztBQUNBOzs7Ozs7QUF4QkE7QUFDQTtBQUNBO0FBMENBLFNBQVNBLHFCQUFULENBQStCQyxLQUEvQixFQUVHO0FBQ0QsTUFBSUMsS0FBSjs7QUFDQSxNQUFJRCxLQUFLLENBQUNFLGtCQUFOLENBQXlCQyxXQUF6QixLQUF5QyxJQUE3QyxFQUFtRDtBQUNqREYsSUFBQUEsS0FBSyxnQkFDSDtBQUNFLE1BQUEsU0FBUyxFQUFFRyxxQkFBTUMsWUFEbkI7QUFFRSxNQUFBLEtBQUssRUFBRTtBQUNMQyxRQUFBQSxNQUFNLEVBQUUsTUFESDtBQUVMQyxRQUFBQSxjQUFjLEVBQUUsT0FGWDtBQUdMQyxRQUFBQSxrQkFBa0IsRUFBRSxRQUhmO0FBSUxDLFFBQUFBLGVBQWUsZ0JBQVNULEtBQUssQ0FBQ0Usa0JBQU4sQ0FBeUJDLFdBQWxDO0FBSlY7QUFGVCxNQURGO0FBV0Qs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QUEsQ0FGYSxDQUF4Qjs7QUFJQSxJQUFNQyxjQUFjLEdBQUdqQiwwQkFBT2tCLEdBQVY7QUFBQTtBQUFBO0FBQUEsK0JBQXBCOztBQUtBLElBQU1DLEdBQUcsR0FBR25CLDBCQUFPQyxHQUFWO0FBQUE7QUFBQTtBQUFBLHFCQUFUOztBQUdBLElBQU1tQixLQUFLLEdBQUdwQiwwQkFBT0MsR0FBVjtBQUFBO0FBQUE7QUFBQSwyS0FDQWIsOEJBQVcsSUFBWCxHQUFrQixLQURsQixDQUFYOztBQWtCQSxJQUFNaUMsR0FBRyxHQUFHckIsMEJBQU9DLEdBQVY7QUFBQTtBQUFBO0FBQUEscUhBQVQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHJvcGVydGllcyBhbmQgQ2FuY2VsbGluZyBmb3Jtcy5cbiAqKi9cbmltcG9ydCBEYXRlUGlja2VyIGZyb20gJ3JlYWN0LWRhdGVwaWNrZXInO1xuaW1wb3J0IFJlYWN0LCB7IEZDLCBmb3J3YXJkUmVmLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMvbWFjcm8nO1xuaW1wb3J0IHsgTGlzdEdyb3VwIH0gZnJvbSAncmVhY3QtYm9vdHN0cmFwJztcbmltcG9ydCB7IGlzTW9iaWxlIH0gZnJvbSAncmVhY3QtZGV2aWNlLWRldGVjdCc7XG5pbXBvcnQgeyB1c2VQYXJhbXMgfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IHVzZVNlbGVjdG9yIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuXG5pbXBvcnQgTGF5b3V0IGZyb20gJ3NyYy91aS1raXQvTGF5b3V0L0xheW91dCc7XG5pbXBvcnQgUGhvbmUgZnJvbSAnc3JjL2Fzc2V0cy9pY29ucy9zYW1wbGluZy1wcm9wZXJ0aWVzLXBob25lLnN2Zyc7XG5pbXBvcnQgaTE4biBmcm9tICdzcmMvdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHVzZVF1ZXJ5VVJMIGZyb20gJ3NyYy9ob29rcy91c2VRdWVyeVVSTCc7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBJbWFnZU1pc3NpbmcgfSBmcm9tICdzcmMvYXNzZXRzL2ltYWdlLW1pc3Npbmcuc3ZnJztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICdzcmMvY29tcG9uZW50cy9TcGlubmVyL1NwaW5uZXInO1xuaW1wb3J0IHsgdXJscyB9IGZyb20gJ3NyYy91dGlsaXRpZXMvdXJscyc7XG5cbmltcG9ydCBTdHlsZSBmcm9tICcuLi9zdHlsZS5tb2R1bGUuc2Nzcyc7XG5pbXBvcnQgeyBTYW1wbGluZ0ZldGNoRGF0YSB9IGZyb20gJy4uL3NhbXBsaW5nc1BhZ2VVdGlscyc7XG5pbXBvcnQgeyBTYW1wbGluZ1Byb3BlcnRpZXNGb3JtIH0gZnJvbSAnLi9TYW1wbGluZ1Byb3BlcnRpZXNGb3JtJztcbmltcG9ydCB7IFNhbXBsaW5nc01vYmlsZUl0ZW0gYXMgU2FtcGxpbmdJdGVtSW5mbyB9IGZyb20gJy4uL1NhbXBsaW5nc01vYmlsZUl0ZW0nO1xuXG5leHBvcnQgdHlwZSBUU2FtcGxpbmdQcm9wZXJ0aWVzID0ge1xuICBwb2ludF9waG90bzogc3RyaW5nO1xuICBwaG90b3M6IFt7IHVybDogc3RyaW5nOyBpZDogbnVtYmVyIH1dO1xuICBsYWJzOiBbXTtcbiAgc2FtcGxpbmc6IHtcbiAgICBpZDogbnVtYmVyO1xuICAgIGxhYl9pZDogbnVtYmVyO1xuICAgIGNvbGxlY3Rpb25fdGltZTogc3RyaW5nO1xuICAgIHB1bXBfc2FtcGxpbmdfdm9sdW1lOiBudW1iZXI7XG4gICAgcHVtcF9iYXR0ZXJ5X2xldmVsOiBudW1iZXI7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICBrYW5kb19yZXA6IHN0cmluZztcbiAgICBzYW1wbGluZ19wbGFuX2lkOiBudW1iZXI7XG4gICAgY2FuY2VsbGF0aW9uX3JlYXNvbjogc3RyaW5nO1xuICAgIGlzX2NhbmNlbGVkOiBib29sZWFuO1xuICB9O1xufTtcblxuZnVuY3Rpb24gSW1hZ2VNaXNzaW5nQ29tcG9uZW50KHByb3BzOiB7XG4gIHNhbXBsaW5nUHJvcGVydGllczogVFNhbXBsaW5nUHJvcGVydGllcztcbn0pIHtcbiAgbGV0IGltYWdlO1xuICBpZiAocHJvcHMuc2FtcGxpbmdQcm9wZXJ0aWVzLnBvaW50X3Bob3RvICE9PSBudWxsKSB7XG4gICAgaW1hZ2UgPSAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17U3R5bGUuaW1hZ2VXcmFwcGVyfVxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgIGJhY2tncm91bmRTaXplOiAnY292ZXInLFxuICAgICAgICAgIGJhY2tncm91bmRQb3NpdGlvbjogJ2NlbnRlcicsXG4gICAgICAgICAgYmFja2dyb3VuZEltYWdlOiBgdXJsKCR7cHJvcHMuc2FtcGxpbmdQcm9wZXJ0aWVzLnBvaW50X3Bob3RvfSlgLFxuICAgICAgICB9fVxuICAgICAgLz5cbiAgICApO1xuICB9IGVsc2Uge1xuICAgIGltYWdlID0gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e1N0eWxlLmltYWdlV3JhcHBlcn0+XG4gICAgICAgIDxJbWFnZU1pc3NpbmcgLz5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGltYWdlO1xufVxuXG5leHBvcnQgY29uc3QgU2FtcGxpbmdNb2JpbGVQcm9wZXJ0aWVzOiBGQyA9ICgpID0+IHtcbiAgY29uc3QgY3VyckRhdGUgPSBEYXRlLm5vdygpO1xuICBjb25zdCBbY29sbGVjdGlvbkRhdGVdID0gdXNlU3RhdGUoY3VyckRhdGUpO1xuICBjb25zdCBbc2FtcGxpbmdVcGRhdGVkLCBzZXRTYW1wbGluZ1VwZGF0ZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2FtcGxpbmcsIHNldFNhbXBsaW5nXSA9IHVzZVN0YXRlPFNhbXBsaW5nRmV0Y2hEYXRhIHwgdW5kZWZpbmVkPihcbiAgICB1bmRlZmluZWQsXG4gICk7XG4gIGNvbnN0IHVzZXJJbmZvID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS5wZXJtaXNzaW9ucy51c2VyX2luZm8pO1xuICBjb25zdCBkYXRlRm9ybWF0ID1cbiAgICB1c2VySW5mby5kYXRlX3RpbWVfZm9ybWF0ID09PSAndXMnXG4gICAgICA/ICdNTU0gZCwgeXl5eSBoaDptbSBhYSdcbiAgICAgIDogJ2QvTU0veXl5eSBISDptbSc7XG4gIGNvbnN0IFtwYWdlVHlwZSwgc2V0UGFnZVR5cGVdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4oKTtcbiAgY29uc3QgaXNQcm9wZXJ0aWVzUGFnZSA9IHBhZ2VUeXBlID09PSAnZWRpdCc7XG5cbiAgY29uc3QgW3NhbXBsaW5nUHJvcGVydGllcywgc2V0U2FtcGxpbmdQcm9wZXJ0aWVzXSA9XG4gICAgdXNlU3RhdGU8VFNhbXBsaW5nUHJvcGVydGllcz4oKTtcblxuICBjb25zdCBbY3VycmVudERhdGUsIHNldEN1cnJlbnREYXRlXSA9IHVzZVN0YXRlKG5ldyBEYXRlKCkpO1xuICBjb25zdCBDdXN0b21EYXRlUGlja2VyID0gZm9yd2FyZFJlZigoeyB2YWx1ZSwgb25DbGljayB9LCByZWYpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e1N0eWxlLmRhdGVQaWNrZXJ9IHJlZj17cmVmfSBvbkNsaWNrPXtvbkNsaWNrfT5cbiAgICAgICAge3ZhbHVlfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfSk7XG5cbiAgY29uc3QgeyBzYW1wbGVJZCB9ID0gdXNlUGFyYW1zKCk7XG5cbiAgY29uc3QgZmV0Y2hTYW1wbGluZ1Byb3BlcnRpZXMgPSAoc2FtcGxpbmdJZCA9IHNhbXBsZUlkLCBvcCkgPT4ge1xuICAgIC8vIGRlZmF1bHQgcGFnZVR5cGUgaXM6ICdjb2xsZWN0J1xuICAgIGlmIChbdW5kZWZpbmVkLCBudWxsLCAnJ10uaW5jbHVkZXMob3ApKSB7XG4gICAgICBvcCA9ICdjb2xsZWN0aW5nJztcbiAgICB9XG5cbiAgICBheGlvc1xuICAgICAgLmdldChcbiAgICAgICAgdXJscyh7IHNhbXBsaW5nSWQ6IHNhbXBsaW5nSWQgfSkuc2FtcGxpbmdQcm9wZXJ0aWVzLmZldGNoU2FtcGxpbmcudXJsLFxuICAgICAgKVxuICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICBjb25zdCBzYW1wbGluZ1JlcyA9IHJlcy5kYXRhO1xuICAgICAgICBjb25zdCBzcHMgPSBzYW1wbGluZ1Jlcy5zYW1wbGluZ19wcm9wZXJ0aWVzO1xuICAgICAgICBpZiAob3AgPT09ICdlZGl0Jykge1xuICAgICAgICAgIHNldFBhZ2VUeXBlKHNwcy5zYW1wbGluZy5pc19jYW5jZWxlZCA/ICdjYW5jZWwnIDogJ2NvbGxlY3QnKTtcbiAgICAgICAgICBzZXRDdXJyZW50RGF0ZShuZXcgRGF0ZShzcHMuc2FtcGxpbmcuY29sbGVjdGlvbl90aW1lKSk7XG4gICAgICAgIH0gZWxzZSBpZiAob3AgPT09ICdjb2xsZWN0aW5nJykge1xuICAgICAgICAgIHNldEN1cnJlbnREYXRlKG5ldyBEYXRlKCkpO1xuICAgICAgICAgIHNldFBhZ2VUeXBlKCdjb2xsZWN0Jyk7XG4gICAgICAgIH0gZWxzZSBpZiAob3AgPT09ICdjYW5jZWxsaW5nJykge1xuICAgICAgICAgIHNldEN1cnJlbnREYXRlKG5ldyBEYXRlKHNwcy5zYW1wbGluZy5jb2xsZWN0aW9uX3RpbWUpKTtcbiAgICAgICAgICBzZXRQYWdlVHlwZSgnY2FuY2VsJyk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0U2FtcGxpbmdQcm9wZXJ0aWVzKHNwcyk7XG4gICAgICAgIHNldFNhbXBsaW5nKHNhbXBsaW5nUmVzLnNhbXBsaW5nX3BsYW4pO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3QgZ2V0Q3VycmVudERhdGUgPSAoZXBvY2g6IG51bWJlcikgPT5cbiAgICBtb21lbnQoZXBvY2gpLmZvcm1hdCgnREQvTU0vWVlZWSBoaDptbScpO1xuXG4gIGNvbnN0IHF1ZXJ5ID0gdXNlUXVlcnlVUkwoKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBvcCA9IHF1ZXJ5LmdldCgnb3AnKTtcbiAgICBmZXRjaFNhbXBsaW5nUHJvcGVydGllcyhzYW1wbGVJZCwgb3ApO1xuICB9LCBbc2FtcGxpbmdVcGRhdGVkXSk7XG5cbiAgaWYgKHNhbXBsaW5nID09PSB1bmRlZmluZWQpIHJldHVybiA8U3Bpbm5lciAvPjtcbiAgcmV0dXJuIChcbiAgICA8TGF5b3V0PlxuICAgICAgPFNhbXBsaW5nUHJvcGVydGllc1N0eWxlPlxuICAgICAgICA8VG9wPlxuICAgICAgICAgIHshaXNNb2JpbGUgJiYgc2FtcGxpbmdQcm9wZXJ0aWVzICE9PSB1bmRlZmluZWQgJiYgKFxuICAgICAgICAgICAgPFN0YXJ0PlxuICAgICAgICAgICAgICA8SW1hZ2VNaXNzaW5nQ29tcG9uZW50IHNhbXBsaW5nUHJvcGVydGllcz17c2FtcGxpbmdQcm9wZXJ0aWVzfSAvPlxuICAgICAgICAgICAgPC9TdGFydD5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxFbmQ+XG4gICAgICAgICAgICA8U2FtcGxpbmdJdGVtSW5mbyBpc01vYmlsZVByb3BlcnRpZXM9e3RydWV9IGRhdGE9e3NhbXBsaW5nfSAvPlxuICAgICAgICAgICAgPFByb3BlcnR5SXRlbUxheW91dD5cbiAgICAgICAgICAgICAgPExlZnRTaWRlTGF5b3V0PntzYW1wbGluZy5jb250YWN0fTwvTGVmdFNpZGVMYXlvdXQ+XG4gICAgICAgICAgICAgIHtzYW1wbGluZy5jb250YWN0X251bWJlciAmJiAoXG4gICAgICAgICAgICAgICAgPENvbnRhY3ROdW1iZXJTdHlsZT5cbiAgICAgICAgICAgICAgICAgIDxQaG9uZUljb25TdHlsZSBzcmM9e1Bob25lfSAvPlxuICAgICAgICAgICAgICAgICAgPFVuZGVybGluZVRleHRTdHlsZSBocmVmPXtgdGVsOiR7c2FtcGxpbmcuY29udGFjdF9udW1iZXJ9YH0+XG4gICAgICAgICAgICAgICAgICAgIHtzYW1wbGluZy5jb250YWN0X251bWJlcn1cbiAgICAgICAgICAgICAgICAgIDwvVW5kZXJsaW5lVGV4dFN0eWxlPlxuICAgICAgICAgICAgICAgIDwvQ29udGFjdE51bWJlclN0eWxlPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Qcm9wZXJ0eUl0ZW1MYXlvdXQ+XG4gICAgICAgICAgICA8UHJvcGVydHlJdGVtTGF5b3V0PlxuICAgICAgICAgICAgICA8TGVmdFNpZGVMYXlvdXQ+XG4gICAgICAgICAgICAgICAge2kxOG4udCgnc2FtcGxpbmcuc2FtcGxpbmdfdHlwZScpfVxuICAgICAgICAgICAgICA8L0xlZnRTaWRlTGF5b3V0PlxuICAgICAgICAgICAgICB7c2FtcGxpbmcudHlwZX1cbiAgICAgICAgICAgIDwvUHJvcGVydHlJdGVtTGF5b3V0PlxuICAgICAgICAgICAgPFByb3BlcnR5SXRlbUxheW91dFxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3BhZ2VUeXBlID09PSAnY2FuY2VsJyAmJiBTdHlsZS5oaWRkZW59XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxMZWZ0U2lkZUxheW91dD5cbiAgICAgICAgICAgICAgICB7aTE4bi50KCdzYW1wbGluZ3NfcGFnZS5zYW1wbGluZ3NfcHJvcGVydGllcy5jb2xsZWN0aW9uX3RpbWUnKX1cbiAgICAgICAgICAgICAgPC9MZWZ0U2lkZUxheW91dD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e1N0eWxlLmRhdGVQaWNrZXJXcmFwcGVyfT5cbiAgICAgICAgICAgICAgICB7LyogTk9URSBpbnB1dCB0aW1lIGZvcm1hdCB3b250Zml4IGh0dHBzOi8vZ2l0aHViLmNvbS9IYWNrZXIweDAxL3JlYWN0LWRhdGVwaWNrZXIvaXNzdWVzLzE3ODUgKi99XG4gICAgICAgICAgICAgICAgPERhdGVQaWNrZXJcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc1Byb3BlcnRpZXNQYWdlfVxuICAgICAgICAgICAgICAgICAgdGltZUludGVydmFscz17MTB9XG4gICAgICAgICAgICAgICAgICBkYXRlRm9ybWF0PXtkYXRlRm9ybWF0fVxuICAgICAgICAgICAgICAgICAgdGltZUZvcm1hdD1cIkhIOm1tXCJcbiAgICAgICAgICAgICAgICAgIHNob3dUaW1lSW5wdXRcbiAgICAgICAgICAgICAgICAgIHBvcHBlclByb3BzPXt7IHN0cmF0ZWd5OiAnZml4ZWQnIH19XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZD17cGFnZVR5cGUgIT09ICdjYW5jZWwnID8gY3VycmVudERhdGUgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXRDdXJyZW50RGF0ZShkYXRlKX1cbiAgICAgICAgICAgICAgICAgIGN1c3RvbUlucHV0PXs8Q3VzdG9tRGF0ZVBpY2tlciAvPn1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvUHJvcGVydHlJdGVtTGF5b3V0PlxuICAgICAgICAgIDwvRW5kPlxuICAgICAgICA8L1RvcD5cbiAgICAgICAge3NhbXBsaW5nUHJvcGVydGllcyAhPT0gdW5kZWZpbmVkICYmIHBhZ2VUeXBlICE9PSB1bmRlZmluZWQgJiYgKFxuICAgICAgICAgIDxTYW1wbGluZ1Byb3BlcnRpZXNGb3JtXG4gICAgICAgICAgICBzYW1wbGluZ1Byb3BlcnRpZXM9e3NhbXBsaW5nUHJvcGVydGllc31cbiAgICAgICAgICAgIHNhbXBsaW5nPXtzYW1wbGluZ31cbiAgICAgICAgICAgIHBhZ2VUeXBlPXtwYWdlVHlwZX1cbiAgICAgICAgICAgIGN1cnJlbnREYXRlPXtnZXRDdXJyZW50RGF0ZShjb2xsZWN0aW9uRGF0ZSl9XG4gICAgICAgICAgICBzZXRTYW1wbGluZ1VwZGF0ZWQ9e3NldFNhbXBsaW5nVXBkYXRlZH1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9TYW1wbGluZ1Byb3BlcnRpZXNTdHlsZT5cbiAgICA8L0xheW91dD5cbiAgKTtcbn07XG5cbmNvbnN0IFNhbXBsaW5nUHJvcGVydGllc1N0eWxlID0gc3R5bGVkLmRpdmBcbiAgJHshaXNNb2JpbGUgPyAnd2lkdGg6IDgzMHB4OycgOiAnJ31cbiAgJHshaXNNb2JpbGUgPyAnbWFyZ2luOiAxMDBweDsnIDogJyd9XG5gO1xuXG5jb25zdCBQcm9wZXJ0eUl0ZW1MYXlvdXQgPSBzdHlsZWQoTGlzdEdyb3VwLkl0ZW0pYFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGJvcmRlcjogbm9uZTtcbiAgaGVpZ2h0OiA0MnB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAwIDAgNnB4O1xuYDtcbmNvbnN0IExlZnRTaWRlTGF5b3V0ID0gc3R5bGVkLnNwYW5gXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmb250LWZhbWlseTogTnVuaXRvO1xuICBmb250LXdlaWdodDogNzAwO1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvclNjaGVtZS5uYXR1cmFsLm4xMDB9O1xuYDtcbmNvbnN0IENvbnRhY3ROdW1iZXJTdHlsZSA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogNXB4O1xuYDtcbmNvbnN0IFVuZGVybGluZVRleHRTdHlsZSA9IHN0eWxlZC5hYFxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc2FtcGxpbmdzUGFnZS5tb2JpbGUucHJvcGVydGllc0NsaWNrSXRlbXN9O1xuYDtcbmNvbnN0IFBob25lSWNvblN0eWxlID0gc3R5bGVkLmltZ2BcbiAgd2lkdGg6IDE0cHg7XG4gIGhlaWdodDogMTRweDtcbmA7XG5cbmNvbnN0IFRvcCA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG5gO1xuY29uc3QgU3RhcnQgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogJHtpc01vYmlsZSA/ICcwJScgOiAnNDAlJ307XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIG1hcmdpbi1pbmxpbmUtZW5kOiAyNXB4O1xuXG4gIGltZyB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgIzg1OGE5NDtcbiAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIHN2ZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG9wYWNpdHk6IDAuMTtcbiAgfVxuYDtcbmNvbnN0IEVuZCA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXI6IDFweCBzb2xpZCAjYTZhY2I5O1xuICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwIDIwcHg7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuYDtcbiJdfQ==
|