payload 2.22.0 → 2.22.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/admin/components/elements/EditUpload/index.d.ts.map +1 -1
  2. package/dist/admin/components/elements/EditUpload/index.js +35 -18
  3. package/dist/admin/components/utilities/Auth/index.d.ts.map +1 -1
  4. package/dist/admin/components/utilities/Auth/index.js +8 -1
  5. package/dist/admin/components/utilities/Auth/types.d.ts +2 -0
  6. package/dist/admin/components/utilities/Auth/types.d.ts.map +1 -1
  7. package/dist/admin/components/views/collections/Edit/Upload/index.d.ts.map +1 -1
  8. package/dist/admin/components/views/collections/Edit/Upload/index.js +5 -7
  9. package/dist/auth/operations/me.d.ts +1 -0
  10. package/dist/auth/operations/me.d.ts.map +1 -1
  11. package/dist/auth/operations/me.js +2 -1
  12. package/dist/auth/operations/refresh.d.ts +1 -0
  13. package/dist/auth/operations/refresh.d.ts.map +1 -1
  14. package/dist/auth/operations/refresh.js +2 -1
  15. package/dist/collections/graphql/init.d.ts.map +1 -1
  16. package/dist/collections/graphql/init.js +7 -1
  17. package/dist/collections/graphql/resolvers/find.js +7 -4
  18. package/dist/database/types.d.ts +2 -2
  19. package/dist/database/types.d.ts.map +1 -1
  20. package/dist/express/types.d.ts +2 -5
  21. package/dist/express/types.d.ts.map +1 -1
  22. package/dist/uploads/cropImage.d.ts.map +1 -1
  23. package/dist/uploads/cropImage.js +4 -4
  24. package/dist/utilities/initTransaction.d.ts.map +1 -1
  25. package/dist/utilities/initTransaction.js +10 -10
  26. package/dist/utilities/isolateObjectProperty.d.ts +1 -1
  27. package/dist/utilities/isolateObjectProperty.d.ts.map +1 -1
  28. package/dist/utilities/isolateObjectProperty.js +14 -5
  29. package/dist/utilities/killTransaction.js +2 -2
  30. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/elements/EditUpload/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAA2B,MAAM,OAAO,CAAA;AAG/C,OAAO,qCAAqC,CAAA;AAE5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAMlD,OAAO,cAAc,CAAA;AAerB,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;IAChC,GAAG,CAAC,EAAE,IAAI,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,CA+OA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/elements/EditUpload/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAuC,MAAM,OAAO,CAAA;AAG3D,OAAO,qCAAqC,CAAA;AAE5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAMlD,OAAO,cAAc,CAAA;AA2BrB,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;IAChC,GAAG,CAAC,EAAE,IAAI,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,CAiQA,CAAA"}
@@ -65,14 +65,18 @@ function _interop_require_wildcard(obj, nodeInterop) {
65
65
  return newObj;
66
66
  }
67
67
  const baseClass = 'edit-upload';
68
- const Input = ({ name, onChange, value })=>/*#__PURE__*/ _react.default.createElement("div", {
68
+ const Input = /*#__PURE__*/ (0, _react.forwardRef)((props, ref)=>{
69
+ const { name, onChange, value } = props;
70
+ return /*#__PURE__*/ _react.default.createElement("div", {
69
71
  className: `${baseClass}__input`
70
72
  }, name, /*#__PURE__*/ _react.default.createElement("input", {
71
73
  name: name,
72
74
  onChange: (e)=>onChange(e.target.value),
75
+ ref: ref,
73
76
  type: "number",
74
77
  value: value
75
78
  }));
79
+ });
76
80
  const EditUpload = ({ doc, fileName, fileSrc, imageCacheTag, showCrop, showFocalPoint })=>{
77
81
  const { closeModal } = (0, _modal.useModal)();
78
82
  const { t } = (0, _reacti18next.useTranslation)([
@@ -80,13 +84,6 @@ const EditUpload = ({ doc, fileName, fileSrc, imageCacheTag, showCrop, showFocal
80
84
  'upload'
81
85
  ]);
82
86
  const { updateUploadEdits, uploadEdits } = (0, _UploadEdits.useUploadEdits)();
83
- const [crop, setCrop] = (0, _react.useState)({
84
- height: uploadEdits?.crop?.height || 100,
85
- unit: '%',
86
- width: uploadEdits?.crop?.width || 100,
87
- x: uploadEdits?.crop?.x || 0,
88
- y: uploadEdits?.crop?.y || 0
89
- });
90
87
  const [focalPosition, setFocalPosition] = (0, _react.useState)({
91
88
  x: uploadEdits?.focalPoint?.x || doc.focalX || 50,
92
89
  y: uploadEdits?.focalPoint?.y || doc.focalY || 50
@@ -97,6 +94,23 @@ const EditUpload = ({ doc, fileName, fileSrc, imageCacheTag, showCrop, showFocal
97
94
  const focalWrapRef = (0, _react.useRef)();
98
95
  const imageRef = (0, _react.useRef)();
99
96
  const cropRef = (0, _react.useRef)();
97
+ const heightRef = (0, _react.useRef)(null);
98
+ const widthRef = (0, _react.useRef)(null);
99
+ const [crop, setCrop] = (0, _react.useState)({
100
+ height: 100,
101
+ heightPixels: 0,
102
+ unit: '%',
103
+ width: 100,
104
+ widthPixels: 0,
105
+ x: 0,
106
+ y: 0
107
+ });
108
+ const [imageLoaded, setImageLoaded] = (0, _react.useState)(false);
109
+ const onImageLoad = (e)=>{
110
+ setOriginalHeight(e.currentTarget.naturalHeight);
111
+ setOriginalWidth(e.currentTarget.naturalWidth);
112
+ setImageLoaded(true);
113
+ };
100
114
  const fineTuneCrop = ({ dimension, value })=>{
101
115
  const intValue = parseInt(value);
102
116
  if (dimension === 'width' && intValue >= originalWidth) return null;
@@ -119,7 +133,11 @@ const EditUpload = ({ doc, fileName, fileSrc, imageCacheTag, showCrop, showFocal
119
133
  };
120
134
  const saveEdits = ()=>{
121
135
  updateUploadEdits({
122
- crop: crop || undefined,
136
+ crop: crop ? {
137
+ ...crop,
138
+ heightPixels: Number(heightRef.current?.value ?? crop.heightPixels),
139
+ widthPixels: Number(widthRef.current?.value ?? crop.widthPixels)
140
+ } : undefined,
123
141
  focalPoint: focalPosition ? focalPosition : undefined
124
142
  });
125
143
  closeModal(_Upload.editDrawerSlug);
@@ -159,6 +177,7 @@ const EditUpload = ({ doc, fileName, fileSrc, imageCacheTag, showCrop, showFocal
159
177
  "aria-label": t('general:applyChanges'),
160
178
  buttonStyle: "primary",
161
179
  className: `${baseClass}__save`,
180
+ disabled: !imageLoaded,
162
181
  onClick: ()=>saveEdits()
163
182
  }, t('general:applyChanges')))), /*#__PURE__*/ _react.default.createElement("div", {
164
183
  className: `${baseClass}__toolWrap`
@@ -183,18 +202,12 @@ const EditUpload = ({ doc, fileName, fileSrc, imageCacheTag, showCrop, showFocal
183
202
  }
184
203
  }, /*#__PURE__*/ _react.default.createElement("img", {
185
204
  alt: t('upload:setCropArea'),
186
- onLoad: (e)=>{
187
- setOriginalHeight(e.currentTarget.naturalHeight);
188
- setOriginalWidth(e.currentTarget.naturalWidth);
189
- },
205
+ onLoad: onImageLoad,
190
206
  ref: imageRef,
191
207
  src: fileSrcToUse
192
208
  })) : /*#__PURE__*/ _react.default.createElement("img", {
193
209
  alt: t('upload:setFocalPoint'),
194
- onLoad: (e)=>{
195
- setOriginalHeight(e.currentTarget.naturalHeight);
196
- setOriginalWidth(e.currentTarget.naturalWidth);
197
- },
210
+ onLoad: onImageLoad,
198
211
  ref: imageRef,
199
212
  src: fileSrcToUse
200
213
  }), showFocalPoint && /*#__PURE__*/ _react.default.createElement(DraggableElement, {
@@ -216,8 +229,10 @@ const EditUpload = ({ doc, fileName, fileSrc, imageCacheTag, showCrop, showFocal
216
229
  className: `${baseClass}__reset`,
217
230
  onClick: ()=>setCrop({
218
231
  height: 100,
232
+ heightPixels: originalHeight,
219
233
  unit: '%',
220
234
  width: 100,
235
+ widthPixels: originalWidth,
221
236
  x: 0,
222
237
  y: 0
223
238
  })
@@ -231,6 +246,7 @@ const EditUpload = ({ doc, fileName, fileSrc, imageCacheTag, showCrop, showFocal
231
246
  dimension: 'width',
232
247
  value
233
248
  }),
249
+ ref: widthRef,
234
250
  value: (crop.width / 100 * originalWidth).toFixed(0)
235
251
  }), /*#__PURE__*/ _react.default.createElement(Input, {
236
252
  name: `${t('upload:height')} (px)`,
@@ -238,6 +254,7 @@ const EditUpload = ({ doc, fileName, fileSrc, imageCacheTag, showCrop, showFocal
238
254
  dimension: 'height',
239
255
  value
240
256
  }),
257
+ ref: heightRef,
241
258
  value: (crop.height / 100 * originalHeight).toFixed(0)
242
259
  }))), showFocalPoint && /*#__PURE__*/ _react.default.createElement("div", {
243
260
  className: `${baseClass}__groupWrap`
@@ -385,4 +402,4 @@ const DraggableElement = ({ boundsRef, checkBounds, children, className, contain
385
402
  }, children), /*#__PURE__*/ _react.default.createElement("div", null));
386
403
  };
387
404
 
388
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2VsZW1lbnRzL0VkaXRVcGxvYWQvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZU1vZGFsIH0gZnJvbSAnQGZhY2VsZXNzLXVpL21vZGFsJ1xuaW1wb3J0IFJlYWN0LCB7IHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCBSZWFjdENyb3AsIHsgdHlwZSBDcm9wIGFzIENyb3BUeXBlIH0gZnJvbSAncmVhY3QtaW1hZ2UtY3JvcCdcbmltcG9ydCAncmVhY3QtaW1hZ2UtY3JvcC9kaXN0L1JlYWN0Q3JvcC5jc3MnXG5cbmltcG9ydCB0eXBlIHsgRGF0YSB9IGZyb20gJy4uLy4uL2Zvcm1zL0Zvcm0vdHlwZXMnXG5cbmltcG9ydCBQbHVzIGZyb20gJy4uLy4uL2ljb25zL1BsdXMnXG5pbXBvcnQgeyB1c2VVcGxvYWRFZGl0cyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9VcGxvYWRFZGl0cydcbmltcG9ydCB7IGVkaXREcmF3ZXJTbHVnIH0gZnJvbSAnLi4vLi4vdmlld3MvY29sbGVjdGlvbnMvRWRpdC9VcGxvYWQnXG5pbXBvcnQgQnV0dG9uIGZyb20gJy4uL0J1dHRvbidcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5jb25zdCBiYXNlQ2xhc3MgPSAnZWRpdC11cGxvYWQnXG5cbmNvbnN0IElucHV0OiBSZWFjdC5GQzx7IG5hbWU6IHN0cmluZzsgb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkOyB2YWx1ZTogc3RyaW5nIH0+ID0gKHtcbiAgbmFtZSxcbiAgb25DaGFuZ2UsXG4gIHZhbHVlLFxufSkgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9faW5wdXRgfT5cbiAgICB7bmFtZX1cbiAgICA8aW5wdXQgbmFtZT17bmFtZX0gb25DaGFuZ2U9eyhlKSA9PiBvbkNoYW5nZShlLnRhcmdldC52YWx1ZSl9IHR5cGU9XCJudW1iZXJcIiB2YWx1ZT17dmFsdWV9IC8+XG4gIDwvZGl2PlxuKVxuXG5leHBvcnQgY29uc3QgRWRpdFVwbG9hZDogUmVhY3QuRkM8e1xuICBkb2M/OiBEYXRhXG4gIGZpbGVOYW1lOiBzdHJpbmdcbiAgZmlsZVNyYzogc3RyaW5nXG4gIGltYWdlQ2FjaGVUYWc/OiBzdHJpbmdcbiAgc2hvd0Nyb3A/OiBib29sZWFuXG4gIHNob3dGb2NhbFBvaW50PzogYm9vbGVhblxufT4gPSAoeyBkb2MsIGZpbGVOYW1lLCBmaWxlU3JjLCBpbWFnZUNhY2hlVGFnLCBzaG93Q3JvcCwgc2hvd0ZvY2FsUG9pbnQgfSkgPT4ge1xuICBjb25zdCB7IGNsb3NlTW9kYWwgfSA9IHVzZU1vZGFsKClcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbJ2dlbmVyYWwnLCAndXBsb2FkJ10pXG4gIGNvbnN0IHsgdXBkYXRlVXBsb2FkRWRpdHMsIHVwbG9hZEVkaXRzIH0gPSB1c2VVcGxvYWRFZGl0cygpXG5cbiAgY29uc3QgW2Nyb3AsIHNldENyb3BdID0gdXNlU3RhdGU8Q3JvcFR5cGU+KHtcbiAgICBoZWlnaHQ6IHVwbG9hZEVkaXRzPy5jcm9wPy5oZWlnaHQgfHwgMTAwLFxuICAgIHVuaXQ6ICclJyxcbiAgICB3aWR0aDogdXBsb2FkRWRpdHM/LmNyb3A/LndpZHRoIHx8IDEwMCxcbiAgICB4OiB1cGxvYWRFZGl0cz8uY3JvcD8ueCB8fCAwLFxuICAgIHk6IHVwbG9hZEVkaXRzPy5jcm9wPy55IHx8IDAsXG4gIH0pXG5cbiAgY29uc3QgW2ZvY2FsUG9zaXRpb24sIHNldEZvY2FsUG9zaXRpb25dID0gdXNlU3RhdGU8eyB4OiBudW1iZXI7IHk6IG51bWJlciB9Pih7XG4gICAgeDogdXBsb2FkRWRpdHM/LmZvY2FsUG9pbnQ/LnggfHwgZG9jLmZvY2FsWCB8fCA1MCxcbiAgICB5OiB1cGxvYWRFZGl0cz8uZm9jYWxQb2ludD8ueSB8fCBkb2MuZm9jYWxZIHx8IDUwLFxuICB9KVxuXG4gIGNvbnN0IFtjaGVja0JvdW5kcywgc2V0Q2hlY2tCb3VuZHNdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpXG4gIGNvbnN0IFtvcmlnaW5hbEhlaWdodCwgc2V0T3JpZ2luYWxIZWlnaHRdID0gdXNlU3RhdGU8bnVtYmVyPigwKVxuICBjb25zdCBbb3JpZ2luYWxXaWR0aCwgc2V0T3JpZ2luYWxXaWR0aF0gPSB1c2VTdGF0ZTxudW1iZXI+KDApXG5cbiAgY29uc3QgZm9jYWxXcmFwUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkPigpXG4gIGNvbnN0IGltYWdlUmVmID0gdXNlUmVmPEhUTUxJbWFnZUVsZW1lbnQgfCB1bmRlZmluZWQ+KClcbiAgY29uc3QgY3JvcFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IHVuZGVmaW5lZD4oKVxuXG4gIGNvbnN0IGZpbmVUdW5lQ3JvcCA9ICh7IGRpbWVuc2lvbiwgdmFsdWUgfTogeyBkaW1lbnNpb246ICdoZWlnaHQnIHwgJ3dpZHRoJzsgdmFsdWU6IHN0cmluZyB9KSA9PiB7XG4gICAgY29uc3QgaW50VmFsdWUgPSBwYXJzZUludCh2YWx1ZSlcbiAgICBpZiAoZGltZW5zaW9uID09PSAnd2lkdGgnICYmIGludFZhbHVlID49IG9yaWdpbmFsV2lkdGgpIHJldHVybiBudWxsXG4gICAgaWYgKGRpbWVuc2lvbiA9PT0gJ2hlaWdodCcgJiYgaW50VmFsdWUgPj0gb3JpZ2luYWxIZWlnaHQpIHJldHVybiBudWxsXG5cbiAgICBjb25zdCBwZXJjZW50YWdlID0gMTAwICogKGludFZhbHVlIC8gKGRpbWVuc2lvbiA9PT0gJ3dpZHRoJyA/IG9yaWdpbmFsV2lkdGggOiBvcmlnaW5hbEhlaWdodCkpXG5cbiAgICBpZiAocGVyY2VudGFnZSA9PT0gMTAwIHx8IHBlcmNlbnRhZ2UgPT09IDApIHJldHVybiBudWxsXG5cbiAgICBzZXRDcm9wKHtcbiAgICAgIC4uLmNyb3AsXG4gICAgICBbZGltZW5zaW9uXTogcGVyY2VudGFnZSxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgZmluZVR1bmVGb2NhbFBvc2l0aW9uID0gKHtcbiAgICBjb29yZGluYXRlLFxuICAgIHZhbHVlLFxuICB9OiB7XG4gICAgY29vcmRpbmF0ZTogJ3gnIHwgJ3knXG4gICAgdmFsdWU6IHN0cmluZ1xuICB9KSA9PiB7XG4gICAgY29uc3QgaW50VmFsdWUgPSBwYXJzZUludCh2YWx1ZSlcbiAgICBpZiAoaW50VmFsdWUgPj0gMCAmJiBpbnRWYWx1ZSA8PSAxMDApIHtcbiAgICAgIHNldEZvY2FsUG9zaXRpb24oKHByZXZQb3NpdGlvbikgPT4gKHsgLi4ucHJldlBvc2l0aW9uLCBbY29vcmRpbmF0ZV06IGludFZhbHVlIH0pKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNhdmVFZGl0cyA9ICgpID0+IHtcbiAgICB1cGRhdGVVcGxvYWRFZGl0cyh7XG4gICAgICBjcm9wOiBjcm9wIHx8IHVuZGVmaW5lZCxcbiAgICAgIGZvY2FsUG9pbnQ6IGZvY2FsUG9zaXRpb24gPyBmb2NhbFBvc2l0aW9uIDogdW5kZWZpbmVkLFxuICAgIH0pXG4gICAgY2xvc2VNb2RhbChlZGl0RHJhd2VyU2x1ZylcbiAgfVxuXG4gIGNvbnN0IG9uRHJhZ0VuZCA9IFJlYWN0LnVzZUNhbGxiYWNrKCh7IHgsIHkgfSkgPT4ge1xuICAgIHNldEZvY2FsUG9zaXRpb24oeyB4LCB5IH0pXG4gICAgc2V0Q2hlY2tCb3VuZHMoZmFsc2UpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGNlbnRlckZvY2FsUG9pbnQgPSAoKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGZvY2FsV3JhcFJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgY29uc3QgYm91bmRzUmVjdCA9IHNob3dDcm9wXG4gICAgICA/IGNyb3BSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgOiBpbWFnZVJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgY29uc3QgeENlbnRlciA9XG4gICAgICAoKGJvdW5kc1JlY3QubGVmdCAtIGNvbnRhaW5lclJlY3QubGVmdCArIGJvdW5kc1JlY3Qud2lkdGggLyAyKSAvIGNvbnRhaW5lclJlY3Qud2lkdGgpICogMTAwXG4gICAgY29uc3QgeUNlbnRlciA9XG4gICAgICAoKGJvdW5kc1JlY3QudG9wIC0gY29udGFpbmVyUmVjdC50b3AgKyBib3VuZHNSZWN0LmhlaWdodCAvIDIpIC8gY29udGFpbmVyUmVjdC5oZWlnaHQpICogMTAwXG4gICAgc2V0Rm9jYWxQb3NpdGlvbih7IHg6IHhDZW50ZXIsIHk6IHlDZW50ZXIgfSlcbiAgfVxuXG4gIGNvbnN0IGZpbGVTcmNUb1VzZSA9IGltYWdlQ2FjaGVUYWcgPyBgJHtmaWxlU3JjfT8ke2ltYWdlQ2FjaGVUYWd9YCA6IGZpbGVTcmNcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtiYXNlQ2xhc3N9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2hlYWRlcmB9PlxuICAgICAgICA8aDIgdGl0bGU9e2Ake3QoJ2dlbmVyYWw6ZWRpdGluZycpfSAke2ZpbGVOYW1lfWB9PlxuICAgICAgICAgIHt0KCdnZW5lcmFsOmVkaXRpbmcnKX0ge2ZpbGVOYW1lfVxuICAgICAgICA8L2gyPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fYWN0aW9uc2B9PlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ2NhbmNlbCcpfVxuICAgICAgICAgICAgYnV0dG9uU3R5bGU9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19jYW5jZWxgfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gY2xvc2VNb2RhbChlZGl0RHJhd2VyU2x1Zyl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoJ2dlbmVyYWw6Y2FuY2VsJyl9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnZ2VuZXJhbDphcHBseUNoYW5nZXMnKX1cbiAgICAgICAgICAgIGJ1dHRvblN0eWxlPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3NhdmVgfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2F2ZUVkaXRzKCl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoJ2dlbmVyYWw6YXBwbHlDaGFuZ2VzJyl9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fdG9vbFdyYXBgfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2Nyb3BgfT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2ZvY2FsLXdyYXBwZXJgfVxuICAgICAgICAgICAgcmVmPXtmb2NhbFdyYXBSZWZ9XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBhc3BlY3RSYXRpbzogYCR7b3JpZ2luYWxXaWR0aCAvIG9yaWdpbmFsSGVpZ2h0fWAsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzaG93Q3JvcCA/IChcbiAgICAgICAgICAgICAgPFJlYWN0Q3JvcFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fcmVhY3RDcm9wYH1cbiAgICAgICAgICAgICAgICBjcm9wPXtjcm9wfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoXywgYykgPT4gc2V0Q3JvcChjKX1cbiAgICAgICAgICAgICAgICBvbkNvbXBsZXRlPXsoKSA9PiBzZXRDaGVja0JvdW5kcyh0cnVlKX1cbiAgICAgICAgICAgICAgICByZW5kZXJTZWxlY3Rpb25BZGRvbj17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19jcm9wLXdpbmRvd2B9IHJlZj17Y3JvcFJlZn0gLz5cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgYWx0PXt0KCd1cGxvYWQ6c2V0Q3JvcEFyZWEnKX1cbiAgICAgICAgICAgICAgICAgIG9uTG9hZD17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0T3JpZ2luYWxIZWlnaHQoZS5jdXJyZW50VGFyZ2V0Lm5hdHVyYWxIZWlnaHQpXG4gICAgICAgICAgICAgICAgICAgIHNldE9yaWdpbmFsV2lkdGgoZS5jdXJyZW50VGFyZ2V0Lm5hdHVyYWxXaWR0aClcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICByZWY9e2ltYWdlUmVmfVxuICAgICAgICAgICAgICAgICAgc3JjPXtmaWxlU3JjVG9Vc2V9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9SZWFjdENyb3A+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgYWx0PXt0KCd1cGxvYWQ6c2V0Rm9jYWxQb2ludCcpfVxuICAgICAgICAgICAgICAgIG9uTG9hZD17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgIHNldE9yaWdpbmFsSGVpZ2h0KGUuY3VycmVudFRhcmdldC5uYXR1cmFsSGVpZ2h0KVxuICAgICAgICAgICAgICAgICAgc2V0T3JpZ2luYWxXaWR0aChlLmN1cnJlbnRUYXJnZXQubmF0dXJhbFdpZHRoKVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgcmVmPXtpbWFnZVJlZn1cbiAgICAgICAgICAgICAgICBzcmM9e2ZpbGVTcmNUb1VzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7c2hvd0ZvY2FsUG9pbnQgJiYgKFxuICAgICAgICAgICAgICA8RHJhZ2dhYmxlRWxlbWVudFxuICAgICAgICAgICAgICAgIGJvdW5kc1JlZj17c2hvd0Nyb3AgPyBjcm9wUmVmIDogaW1hZ2VSZWZ9XG4gICAgICAgICAgICAgICAgY2hlY2tCb3VuZHM9e3Nob3dDcm9wID8gY2hlY2tCb3VuZHMgOiBmYWxzZX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2ZvY2FsUG9pbnRgfVxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclJlZj17Zm9jYWxXcmFwUmVmfVxuICAgICAgICAgICAgICAgIGluaXRpYWxQb3NpdGlvbj17Zm9jYWxQb3NpdGlvbn1cbiAgICAgICAgICAgICAgICBvbkRyYWdFbmQ9e29uRHJhZ0VuZH1cbiAgICAgICAgICAgICAgICBzZXRDaGVja0JvdW5kcz17c2hvd0Nyb3AgPyBzZXRDaGVja0JvdW5kcyA6IGZhbHNlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFBsdXMgLz5cbiAgICAgICAgICAgICAgPC9EcmFnZ2FibGVFbGVtZW50PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHsoc2hvd0Nyb3AgfHwgc2hvd0ZvY2FsUG9pbnQpICYmIChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fc2lkZWJhcmB9PlxuICAgICAgICAgICAge3Nob3dDcm9wICYmIChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2dyb3VwV3JhcGB9PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fdGl0bGVXcmFwYH0+XG4gICAgICAgICAgICAgICAgICAgIDxoMz57dCgndXBsb2FkOmNyb3AnKX08L2gzPlxuICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU3R5bGU9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3Jlc2V0YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3JvcCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0OiAnJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt0KCdnZW5lcmFsOnJlc2V0Jyl9XG4gICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19kZXNjcmlwdGlvbmB9PlxuICAgICAgICAgICAgICAgICAge3QoJ3VwbG9hZDpjcm9wVG9vbERlc2NyaXB0aW9uJyl9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19pbnB1dHNXcmFwYH0+XG4gICAgICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgbmFtZT17YCR7dCgndXBsb2FkOndpZHRoJyl9IChweClgfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBmaW5lVHVuZUNyb3AoeyBkaW1lbnNpb246ICd3aWR0aCcsIHZhbHVlIH0pfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17KChjcm9wLndpZHRoIC8gMTAwKSAqIG9yaWdpbmFsV2lkdGgpLnRvRml4ZWQoMCl9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPElucHV0XG4gICAgICAgICAgICAgICAgICAgIG5hbWU9e2Ake3QoJ3VwbG9hZDpoZWlnaHQnKX0gKHB4KWB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IGZpbmVUdW5lQ3JvcCh7IGRpbWVuc2lvbjogJ2hlaWdodCcsIHZhbHVlIH0pfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17KChjcm9wLmhlaWdodCAvIDEwMCkgKiBvcmlnaW5hbEhlaWdodCkudG9GaXhlZCgwKX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3Nob3dGb2NhbFBvaW50ICYmIChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2dyb3VwV3JhcGB9PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fdGl0bGVXcmFwYH0+XG4gICAgICAgICAgICAgICAgICAgIDxoMz57dCgndXBsb2FkOmZvY2FsUG9pbnQnKX08L2gzPlxuICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU3R5bGU9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3Jlc2V0YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtjZW50ZXJGb2NhbFBvaW50fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3QoJ2dlbmVyYWw6cmVzZXQnKX1cbiAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2Rlc2NyaXB0aW9uYH0+XG4gICAgICAgICAgICAgICAgICB7dCgndXBsb2FkOmZvY2FsUG9pbnREZXNjcmlwdGlvbicpfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9faW5wdXRzV3JhcGB9PlxuICAgICAgICAgICAgICAgICAgPElucHV0XG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJYICVcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBmaW5lVHVuZUZvY2FsUG9zaXRpb24oeyBjb29yZGluYXRlOiAneCcsIHZhbHVlIH0pfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Zm9jYWxQb3NpdGlvbi54LnRvRml4ZWQoMCl9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPElucHV0XG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJZICVcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBmaW5lVHVuZUZvY2FsUG9zaXRpb24oeyBjb29yZGluYXRlOiAneScsIHZhbHVlIH0pfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Zm9jYWxQb3NpdGlvbi55LnRvRml4ZWQoMCl9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5jb25zdCBEcmFnZ2FibGVFbGVtZW50ID0gKHtcbiAgYm91bmRzUmVmLFxuICBjaGVja0JvdW5kcyxcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgY29udGFpbmVyUmVmLFxuICBpbml0aWFsUG9zaXRpb24gPSB7IHg6IDUwLCB5OiA1MCB9LFxuICBvbkRyYWdFbmQsXG4gIHNldENoZWNrQm91bmRzLFxufSkgPT4ge1xuICBjb25zdCBbcG9zaXRpb24sIHNldFBvc2l0aW9uXSA9IHVzZVN0YXRlKHsgeDogaW5pdGlhbFBvc2l0aW9uLngsIHk6IGluaXRpYWxQb3NpdGlvbi55IH0pXG4gIGNvbnN0IFtpc0RyYWdnaW5nLCBzZXRJc0RyYWdnaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBkcmFnUmVmID0gdXNlUmVmPEhUTUxCdXR0b25FbGVtZW50IHwgdW5kZWZpbmVkPigpXG5cbiAgY29uc3QgZ2V0Q29vcmRpbmF0ZXMgPSBSZWFjdC51c2VDYWxsYmFjayhcbiAgICAobW91c2VYQXJnPzogbnVtYmVyLCBtb3VzZVlBcmc/OiBudW1iZXIsIHJlY2VudGVyPzogYm9vbGVhbikgPT4ge1xuICAgICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lclJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICBjb25zdCBib3VuZHNSZWN0ID0gYm91bmRzUmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgIGNvbnN0IG1vdXNlWCA9IG1vdXNlWEFyZyA/PyBib3VuZHNSZWN0LmxlZnRcbiAgICAgIGNvbnN0IG1vdXNlWSA9IG1vdXNlWUFyZyA/PyBib3VuZHNSZWN0LnRvcFxuXG4gICAgICBjb25zdCB4T3V0T2ZCb3VuZHMgPSBtb3VzZVggPCBib3VuZHNSZWN0LmxlZnQgfHwgbW91c2VYID4gYm91bmRzUmVjdC5yaWdodFxuICAgICAgY29uc3QgeU91dE9mQm91bmRzID0gbW91c2VZIDwgYm91bmRzUmVjdC50b3AgfHwgbW91c2VZID4gYm91bmRzUmVjdC5ib3R0b21cblxuICAgICAgbGV0IHggPSAoKG1vdXNlWCAtIGNvbnRhaW5lclJlY3QubGVmdCkgLyBjb250YWluZXJSZWN0LndpZHRoKSAqIDEwMFxuICAgICAgbGV0IHkgPSAoKG1vdXNlWSAtIGNvbnRhaW5lclJlY3QudG9wKSAvIGNvbnRhaW5lclJlY3QuaGVpZ2h0KSAqIDEwMFxuICAgICAgY29uc3QgeENlbnRlciA9XG4gICAgICAgICgoYm91bmRzUmVjdC5sZWZ0IC0gY29udGFpbmVyUmVjdC5sZWZ0ICsgYm91bmRzUmVjdC53aWR0aCAvIDIpIC8gY29udGFpbmVyUmVjdC53aWR0aCkgKiAxMDBcbiAgICAgIGNvbnN0IHlDZW50ZXIgPVxuICAgICAgICAoKGJvdW5kc1JlY3QudG9wIC0gY29udGFpbmVyUmVjdC50b3AgKyBib3VuZHNSZWN0LmhlaWdodCAvIDIpIC8gY29udGFpbmVyUmVjdC5oZWlnaHQpICogMTAwXG4gICAgICBpZiAoeE91dE9mQm91bmRzIHx8IHlPdXRPZkJvdW5kcykge1xuICAgICAgICBzZXRJc0RyYWdnaW5nKGZhbHNlKVxuICAgICAgICBpZiAobW91c2VYIDwgYm91bmRzUmVjdC5sZWZ0KSB7XG4gICAgICAgICAgeCA9ICgoYm91bmRzUmVjdC5sZWZ0IC0gY29udGFpbmVyUmVjdC5sZWZ0KSAvIGNvbnRhaW5lclJlY3Qud2lkdGgpICogMTAwXG4gICAgICAgIH0gZWxzZSBpZiAobW91c2VYID4gYm91bmRzUmVjdC5yaWdodCkge1xuICAgICAgICAgIHggPVxuICAgICAgICAgICAgKChjb250YWluZXJSZWN0LndpZHRoIC0gKGNvbnRhaW5lclJlY3QucmlnaHQgLSBib3VuZHNSZWN0LnJpZ2h0KSkgL1xuICAgICAgICAgICAgICBjb250YWluZXJSZWN0LndpZHRoKSAqXG4gICAgICAgICAgICAxMDBcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb3VzZVkgPCBib3VuZHNSZWN0LnRvcCkge1xuICAgICAgICAgIHkgPSAoKGJvdW5kc1JlY3QudG9wIC0gY29udGFpbmVyUmVjdC50b3ApIC8gY29udGFpbmVyUmVjdC5oZWlnaHQpICogMTAwXG4gICAgICAgIH0gZWxzZSBpZiAobW91c2VZID4gYm91bmRzUmVjdC5ib3R0b20pIHtcbiAgICAgICAgICB5ID1cbiAgICAgICAgICAgICgoY29udGFpbmVyUmVjdC5oZWlnaHQgLSAoY29udGFpbmVyUmVjdC5ib3R0b20gLSBib3VuZHNSZWN0LmJvdHRvbSkpIC9cbiAgICAgICAgICAgICAgY29udGFpbmVyUmVjdC5oZWlnaHQpICpcbiAgICAgICAgICAgIDEwMFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlY2VudGVyKSB7XG4gICAgICAgICAgeCA9IHhPdXRPZkJvdW5kcyA/IHhDZW50ZXIgOiB4XG4gICAgICAgICAgeSA9IHlPdXRPZkJvdW5kcyA/IHlDZW50ZXIgOiB5XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgeCwgeSB9XG4gICAgfSxcbiAgICBbYm91bmRzUmVmLCBjb250YWluZXJSZWZdLFxuICApXG5cbiAgY29uc3QgaGFuZGxlTW91c2VEb3duID0gKGV2ZW50KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIHNldElzRHJhZ2dpbmcodHJ1ZSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZU1vdXNlTW92ZSA9IChldmVudCkgPT4ge1xuICAgIGlmICghaXNEcmFnZ2luZykgcmV0dXJuIG51bGxcbiAgICBjb25zdCB7IHgsIHkgfSA9IGdldENvb3JkaW5hdGVzKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpXG5cbiAgICBzZXRQb3NpdGlvbih7IHgsIHkgfSlcbiAgfVxuXG4gIGNvbnN0IG9uRHJvcCA9ICgpID0+IHtcbiAgICBzZXRJc0RyYWdnaW5nKGZhbHNlKVxuICAgIG9uRHJhZ0VuZChwb3NpdGlvbilcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzRHJhZ2dpbmcgfHwgIWRyYWdSZWYuY3VycmVudCkgcmV0dXJuXG4gICAgaWYgKGNoZWNrQm91bmRzKSB7XG4gICAgICBjb25zdCB7IGhlaWdodCwgbGVmdCwgdG9wLCB3aWR0aCB9ID0gZHJhZ1JlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICBjb25zdCB7IHgsIHkgfSA9IGdldENvb3JkaW5hdGVzKGxlZnQgKyB3aWR0aCAvIDIsIHRvcCArIGhlaWdodCAvIDIsIHRydWUpXG4gICAgICBvbkRyYWdFbmQoeyB4LCB5IH0pXG4gICAgICBzZXRQb3NpdGlvbih7IHgsIHkgfSlcbiAgICAgIHNldENoZWNrQm91bmRzKGZhbHNlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICB9LCBbZ2V0Q29vcmRpbmF0ZXMsIGlzRHJhZ2dpbmcsIGNoZWNrQm91bmRzLCBzZXRDaGVja0JvdW5kcywgcG9zaXRpb24ueCwgcG9zaXRpb24ueSwgb25EcmFnRW5kXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFBvc2l0aW9uKHsgeDogaW5pdGlhbFBvc2l0aW9uLngsIHk6IGluaXRpYWxQb3NpdGlvbi55IH0pXG4gIH0sIFtpbml0aWFsUG9zaXRpb24ueCwgaW5pdGlhbFBvc2l0aW9uLnldKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtbXG4gICAgICAgIGAke2Jhc2VDbGFzc31fX2RyYWdnYWJsZS1jb250YWluZXJgLFxuICAgICAgICBpc0RyYWdnaW5nICYmIGAke2Jhc2VDbGFzc31fX2RyYWdnYWJsZS1jb250YWluZXItLWRyYWdnaW5nYCxcbiAgICAgIF1cbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAuam9pbignICcpfVxuICAgICAgb25Nb3VzZU1vdmU9e2hhbmRsZU1vdXNlTW92ZX1cbiAgICA+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17W2Ake2Jhc2VDbGFzc31fX2RyYWdnYWJsZWAsIGNsYXNzTmFtZV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKX1cbiAgICAgICAgb25Nb3VzZURvd249e2hhbmRsZU1vdXNlRG93bn1cbiAgICAgICAgb25Nb3VzZVVwPXtvbkRyb3B9XG4gICAgICAgIHJlZj17ZHJhZ1JlZn1cbiAgICAgICAgc3R5bGU9e3sgbGVmdDogYCR7cG9zaXRpb24ueH0lYCwgdG9wOiBgJHtwb3NpdGlvbi55fSVgIH19XG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxkaXYgLz5cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl0sIm5hbWVzIjpbIkVkaXRVcGxvYWQiLCJiYXNlQ2xhc3MiLCJJbnB1dCIsIm5hbWUiLCJvbkNoYW5nZSIsInZhbHVlIiwiZGl2IiwiY2xhc3NOYW1lIiwiaW5wdXQiLCJlIiwidGFyZ2V0IiwidHlwZSIsImRvYyIsImZpbGVOYW1lIiwiZmlsZVNyYyIsImltYWdlQ2FjaGVUYWciLCJzaG93Q3JvcCIsInNob3dGb2NhbFBvaW50IiwiY2xvc2VNb2RhbCIsInVzZU1vZGFsIiwidCIsInVzZVRyYW5zbGF0aW9uIiwidXBkYXRlVXBsb2FkRWRpdHMiLCJ1cGxvYWRFZGl0cyIsInVzZVVwbG9hZEVkaXRzIiwiY3JvcCIsInNldENyb3AiLCJ1c2VTdGF0ZSIsImhlaWdodCIsInVuaXQiLCJ3aWR0aCIsIngiLCJ5IiwiZm9jYWxQb3NpdGlvbiIsInNldEZvY2FsUG9zaXRpb24iLCJmb2NhbFBvaW50IiwiZm9jYWxYIiwiZm9jYWxZIiwiY2hlY2tCb3VuZHMiLCJzZXRDaGVja0JvdW5kcyIsIm9yaWdpbmFsSGVpZ2h0Iiwic2V0T3JpZ2luYWxIZWlnaHQiLCJvcmlnaW5hbFdpZHRoIiwic2V0T3JpZ2luYWxXaWR0aCIsImZvY2FsV3JhcFJlZiIsInVzZVJlZiIsImltYWdlUmVmIiwiY3JvcFJlZiIsImZpbmVUdW5lQ3JvcCIsImRpbWVuc2lvbiIsImludFZhbHVlIiwicGFyc2VJbnQiLCJwZXJjZW50YWdlIiwiZmluZVR1bmVGb2NhbFBvc2l0aW9uIiwiY29vcmRpbmF0ZSIsInByZXZQb3NpdGlvbiIsInNhdmVFZGl0cyIsInVuZGVmaW5lZCIsImVkaXREcmF3ZXJTbHVnIiwib25EcmFnRW5kIiwiUmVhY3QiLCJ1c2VDYWxsYmFjayIsImNlbnRlckZvY2FsUG9pbnQiLCJjb250YWluZXJSZWN0IiwiY3VycmVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImJvdW5kc1JlY3QiLCJ4Q2VudGVyIiwibGVmdCIsInlDZW50ZXIiLCJ0b3AiLCJmaWxlU3JjVG9Vc2UiLCJoMiIsInRpdGxlIiwiQnV0dG9uIiwiYXJpYS1sYWJlbCIsImJ1dHRvblN0eWxlIiwib25DbGljayIsInJlZiIsInN0eWxlIiwiYXNwZWN0UmF0aW8iLCJSZWFjdENyb3AiLCJfIiwiYyIsIm9uQ29tcGxldGUiLCJyZW5kZXJTZWxlY3Rpb25BZGRvbiIsImltZyIsImFsdCIsIm9uTG9hZCIsImN1cnJlbnRUYXJnZXQiLCJuYXR1cmFsSGVpZ2h0IiwibmF0dXJhbFdpZHRoIiwic3JjIiwiRHJhZ2dhYmxlRWxlbWVudCIsImJvdW5kc1JlZiIsImNvbnRhaW5lclJlZiIsImluaXRpYWxQb3NpdGlvbiIsIlBsdXMiLCJoMyIsInNwYW4iLCJ0b0ZpeGVkIiwiY2hpbGRyZW4iLCJwb3NpdGlvbiIsInNldFBvc2l0aW9uIiwiaXNEcmFnZ2luZyIsInNldElzRHJhZ2dpbmciLCJkcmFnUmVmIiwiZ2V0Q29vcmRpbmF0ZXMiLCJtb3VzZVhBcmciLCJtb3VzZVlBcmciLCJyZWNlbnRlciIsIm1vdXNlWCIsIm1vdXNlWSIsInhPdXRPZkJvdW5kcyIsInJpZ2h0IiwieU91dE9mQm91bmRzIiwiYm90dG9tIiwiaGFuZGxlTW91c2VEb3duIiwiZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsImhhbmRsZU1vdXNlTW92ZSIsImNsaWVudFgiLCJjbGllbnRZIiwib25Ecm9wIiwidXNlRWZmZWN0IiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJvbk1vdXNlTW92ZSIsImJ1dHRvbiIsIm9uTW91c2VEb3duIiwib25Nb3VzZVVwIl0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiI7Ozs7K0JBMkJhQTs7O2VBQUFBOzs7dUJBM0JZOytEQUNlOzhCQUNUO3VFQUNrQjtRQUMxQzs2REFJVTs2QkFDYzt3QkFDQTsrREFDWjtRQUNaOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVQLE1BQU1DLFlBQVk7QUFFbEIsTUFBTUMsUUFBc0YsQ0FBQyxFQUMzRkMsSUFBSSxFQUNKQyxRQUFRLEVBQ1JDLEtBQUssRUFDTixpQkFDQyw2QkFBQ0M7UUFBSUMsV0FBVyxDQUFDLEVBQUVOLFVBQVUsT0FBTyxDQUFDO09BQ2xDRSxvQkFDRCw2QkFBQ0s7UUFBTUwsTUFBTUE7UUFBTUMsVUFBVSxDQUFDSyxJQUFNTCxTQUFTSyxFQUFFQyxNQUFNLENBQUNMLEtBQUs7UUFBR00sTUFBSztRQUFTTixPQUFPQTs7QUFJaEYsTUFBTUwsYUFPUixDQUFD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
405
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2VsZW1lbnRzL0VkaXRVcGxvYWQvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZU1vZGFsIH0gZnJvbSAnQGZhY2VsZXNzLXVpL21vZGFsJ1xuaW1wb3J0IFJlYWN0LCB7IGZvcndhcmRSZWYsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCBSZWFjdENyb3AsIHsgdHlwZSBDcm9wIGFzIENyb3BUeXBlIH0gZnJvbSAncmVhY3QtaW1hZ2UtY3JvcCdcbmltcG9ydCAncmVhY3QtaW1hZ2UtY3JvcC9kaXN0L1JlYWN0Q3JvcC5jc3MnXG5cbmltcG9ydCB0eXBlIHsgRGF0YSB9IGZyb20gJy4uLy4uL2Zvcm1zL0Zvcm0vdHlwZXMnXG5cbmltcG9ydCBQbHVzIGZyb20gJy4uLy4uL2ljb25zL1BsdXMnXG5pbXBvcnQgeyB1c2VVcGxvYWRFZGl0cyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9VcGxvYWRFZGl0cydcbmltcG9ydCB7IGVkaXREcmF3ZXJTbHVnIH0gZnJvbSAnLi4vLi4vdmlld3MvY29sbGVjdGlvbnMvRWRpdC9VcGxvYWQnXG5pbXBvcnQgQnV0dG9uIGZyb20gJy4uL0J1dHRvbidcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5jb25zdCBiYXNlQ2xhc3MgPSAnZWRpdC11cGxvYWQnXG5cbnR5cGUgUHJvcHMgPSB7XG4gIG5hbWU6IHN0cmluZ1xuICBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWRcbiAgdmFsdWU6IHN0cmluZ1xufVxuXG5jb25zdCBJbnB1dCA9IGZvcndhcmRSZWY8SFRNTElucHV0RWxlbWVudCwgUHJvcHM+KChwcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHsgbmFtZSwgb25DaGFuZ2UsIHZhbHVlIH0gPSBwcm9wc1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2lucHV0YH0+XG4gICAgICB7bmFtZX1cbiAgICAgIDxpbnB1dFxuICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICBvbkNoYW5nZT17KGUpID0+IG9uQ2hhbmdlKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59KVxuXG5leHBvcnQgY29uc3QgRWRpdFVwbG9hZDogUmVhY3QuRkM8e1xuICBkb2M/OiBEYXRhXG4gIGZpbGVOYW1lOiBzdHJpbmdcbiAgZmlsZVNyYzogc3RyaW5nXG4gIGltYWdlQ2FjaGVUYWc/OiBzdHJpbmdcbiAgc2hvd0Nyb3A/OiBib29sZWFuXG4gIHNob3dGb2NhbFBvaW50PzogYm9vbGVhblxufT4gPSAoeyBkb2MsIGZpbGVOYW1lLCBmaWxlU3JjLCBpbWFnZUNhY2hlVGFnLCBzaG93Q3JvcCwgc2hvd0ZvY2FsUG9pbnQgfSkgPT4ge1xuICBjb25zdCB7IGNsb3NlTW9kYWwgfSA9IHVzZU1vZGFsKClcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbJ2dlbmVyYWwnLCAndXBsb2FkJ10pXG4gIGNvbnN0IHsgdXBkYXRlVXBsb2FkRWRpdHMsIHVwbG9hZEVkaXRzIH0gPSB1c2VVcGxvYWRFZGl0cygpXG5cbiAgY29uc3QgW2ZvY2FsUG9zaXRpb24sIHNldEZvY2FsUG9zaXRpb25dID0gdXNlU3RhdGU8eyB4OiBudW1iZXI7IHk6IG51bWJlciB9Pih7XG4gICAgeDogdXBsb2FkRWRpdHM/LmZvY2FsUG9pbnQ/LnggfHwgZG9jLmZvY2FsWCB8fCA1MCxcbiAgICB5OiB1cGxvYWRFZGl0cz8uZm9jYWxQb2ludD8ueSB8fCBkb2MuZm9jYWxZIHx8IDUwLFxuICB9KVxuXG4gIGNvbnN0IFtjaGVja0JvdW5kcywgc2V0Q2hlY2tCb3VuZHNdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpXG4gIGNvbnN0IFtvcmlnaW5hbEhlaWdodCwgc2V0T3JpZ2luYWxIZWlnaHRdID0gdXNlU3RhdGU8bnVtYmVyPigwKVxuICBjb25zdCBbb3JpZ2luYWxXaWR0aCwgc2V0T3JpZ2luYWxXaWR0aF0gPSB1c2VTdGF0ZTxudW1iZXI+KDApXG5cbiAgY29uc3QgZm9jYWxXcmFwUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkPigpXG4gIGNvbnN0IGltYWdlUmVmID0gdXNlUmVmPEhUTUxJbWFnZUVsZW1lbnQgfCB1bmRlZmluZWQ+KClcbiAgY29uc3QgY3JvcFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IHVuZGVmaW5lZD4oKVxuXG4gIGNvbnN0IGhlaWdodFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbClcbiAgY29uc3Qgd2lkdGhSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgW2Nyb3AsIHNldENyb3BdID0gdXNlU3RhdGU8Q3JvcFR5cGU+KHtcbiAgICBoZWlnaHQ6IDEwMCxcbiAgICBoZWlnaHRQaXhlbHM6IDAsXG4gICAgdW5pdDogJyUnLFxuICAgIHdpZHRoOiAxMDAsXG4gICAgd2lkdGhQaXhlbHM6IDAsXG4gICAgeDogMCxcbiAgICB5OiAwLFxuICB9KVxuXG4gIGNvbnN0IFtpbWFnZUxvYWRlZCwgc2V0SW1hZ2VMb2FkZWRdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpXG5cbiAgY29uc3Qgb25JbWFnZUxvYWQgPSAoZSkgPT4ge1xuICAgIHNldE9yaWdpbmFsSGVpZ2h0KGUuY3VycmVudFRhcmdldC5uYXR1cmFsSGVpZ2h0KVxuICAgIHNldE9yaWdpbmFsV2lkdGgoZS5jdXJyZW50VGFyZ2V0Lm5hdHVyYWxXaWR0aClcbiAgICBzZXRJbWFnZUxvYWRlZCh0cnVlKVxuICB9XG5cbiAgY29uc3QgZmluZVR1bmVDcm9wID0gKHsgZGltZW5zaW9uLCB2YWx1ZSB9OiB7IGRpbWVuc2lvbjogJ2hlaWdodCcgfCAnd2lkdGgnOyB2YWx1ZTogc3RyaW5nIH0pID0+IHtcbiAgICBjb25zdCBpbnRWYWx1ZSA9IHBhcnNlSW50KHZhbHVlKVxuICAgIGlmIChkaW1lbnNpb24gPT09ICd3aWR0aCcgJiYgaW50VmFsdWUgPj0gb3JpZ2luYWxXaWR0aCkgcmV0dXJuIG51bGxcbiAgICBpZiAoZGltZW5zaW9uID09PSAnaGVpZ2h0JyAmJiBpbnRWYWx1ZSA+PSBvcmlnaW5hbEhlaWdodCkgcmV0dXJuIG51bGxcblxuICAgIGNvbnN0IHBlcmNlbnRhZ2UgPSAxMDAgKiAoaW50VmFsdWUgLyAoZGltZW5zaW9uID09PSAnd2lkdGgnID8gb3JpZ2luYWxXaWR0aCA6IG9yaWdpbmFsSGVpZ2h0KSlcblxuICAgIGlmIChwZXJjZW50YWdlID09PSAxMDAgfHwgcGVyY2VudGFnZSA9PT0gMCkgcmV0dXJuIG51bGxcblxuICAgIHNldENyb3Aoe1xuICAgICAgLi4uY3JvcCxcbiAgICAgIFtkaW1lbnNpb25dOiBwZXJjZW50YWdlLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBmaW5lVHVuZUZvY2FsUG9zaXRpb24gPSAoe1xuICAgIGNvb3JkaW5hdGUsXG4gICAgdmFsdWUsXG4gIH06IHtcbiAgICBjb29yZGluYXRlOiAneCcgfCAneSdcbiAgICB2YWx1ZTogc3RyaW5nXG4gIH0pID0+IHtcbiAgICBjb25zdCBpbnRWYWx1ZSA9IHBhcnNlSW50KHZhbHVlKVxuICAgIGlmIChpbnRWYWx1ZSA+PSAwICYmIGludFZhbHVlIDw9IDEwMCkge1xuICAgICAgc2V0Rm9jYWxQb3NpdGlvbigocHJldlBvc2l0aW9uKSA9PiAoeyAuLi5wcmV2UG9zaXRpb24sIFtjb29yZGluYXRlXTogaW50VmFsdWUgfSkpXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2F2ZUVkaXRzID0gKCkgPT4ge1xuICAgIHVwZGF0ZVVwbG9hZEVkaXRzKHtcbiAgICAgIGNyb3A6IGNyb3BcbiAgICAgICAgPyB7XG4gICAgICAgICAgICAuLi5jcm9wLFxuICAgICAgICAgICAgaGVpZ2h0UGl4ZWxzOiBOdW1iZXIoaGVpZ2h0UmVmLmN1cnJlbnQ/LnZhbHVlID8/IGNyb3AuaGVpZ2h0UGl4ZWxzKSxcbiAgICAgICAgICAgIHdpZHRoUGl4ZWxzOiBOdW1iZXIod2lkdGhSZWYuY3VycmVudD8udmFsdWUgPz8gY3JvcC53aWR0aFBpeGVscyksXG4gICAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGZvY2FsUG9pbnQ6IGZvY2FsUG9zaXRpb24gPyBmb2NhbFBvc2l0aW9uIDogdW5kZWZpbmVkLFxuICAgIH0pXG4gICAgY2xvc2VNb2RhbChlZGl0RHJhd2VyU2x1ZylcbiAgfVxuXG4gIGNvbnN0IG9uRHJhZ0VuZCA9IFJlYWN0LnVzZUNhbGxiYWNrKCh7IHgsIHkgfSkgPT4ge1xuICAgIHNldEZvY2FsUG9zaXRpb24oeyB4LCB5IH0pXG4gICAgc2V0Q2hlY2tCb3VuZHMoZmFsc2UpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGNlbnRlckZvY2FsUG9pbnQgPSAoKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGZvY2FsV3JhcFJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgY29uc3QgYm91bmRzUmVjdCA9IHNob3dDcm9wXG4gICAgICA/IGNyb3BSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgOiBpbWFnZVJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgY29uc3QgeENlbnRlciA9XG4gICAgICAoKGJvdW5kc1JlY3QubGVmdCAtIGNvbnRhaW5lclJlY3QubGVmdCArIGJvdW5kc1JlY3Qud2lkdGggLyAyKSAvIGNvbnRhaW5lclJlY3Qud2lkdGgpICogMTAwXG4gICAgY29uc3QgeUNlbnRlciA9XG4gICAgICAoKGJvdW5kc1JlY3QudG9wIC0gY29udGFpbmVyUmVjdC50b3AgKyBib3VuZHNSZWN0LmhlaWdodCAvIDIpIC8gY29udGFpbmVyUmVjdC5oZWlnaHQpICogMTAwXG4gICAgc2V0Rm9jYWxQb3NpdGlvbih7IHg6IHhDZW50ZXIsIHk6IHlDZW50ZXIgfSlcbiAgfVxuXG4gIGNvbnN0IGZpbGVTcmNUb1VzZSA9IGltYWdlQ2FjaGVUYWcgPyBgJHtmaWxlU3JjfT8ke2ltYWdlQ2FjaGVUYWd9YCA6IGZpbGVTcmNcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtiYXNlQ2xhc3N9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2hlYWRlcmB9PlxuICAgICAgICA8aDIgdGl0bGU9e2Ake3QoJ2dlbmVyYWw6ZWRpdGluZycpfSAke2ZpbGVOYW1lfWB9PlxuICAgICAgICAgIHt0KCdnZW5lcmFsOmVkaXRpbmcnKX0ge2ZpbGVOYW1lfVxuICAgICAgICA8L2gyPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fYWN0aW9uc2B9PlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ2NhbmNlbCcpfVxuICAgICAgICAgICAgYnV0dG9uU3R5bGU9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19jYW5jZWxgfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gY2xvc2VNb2RhbChlZGl0RHJhd2VyU2x1Zyl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoJ2dlbmVyYWw6Y2FuY2VsJyl9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnZ2VuZXJhbDphcHBseUNoYW5nZXMnKX1cbiAgICAgICAgICAgIGJ1dHRvblN0eWxlPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3NhdmVgfVxuICAgICAgICAgICAgZGlzYWJsZWQ9eyFpbWFnZUxvYWRlZH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNhdmVFZGl0cygpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KCdnZW5lcmFsOmFwcGx5Q2hhbmdlcycpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3Rvb2xXcmFwYH0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19jcm9wYH0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19mb2NhbC13cmFwcGVyYH1cbiAgICAgICAgICAgIHJlZj17Zm9jYWxXcmFwUmVmfVxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgYXNwZWN0UmF0aW86IGAke29yaWdpbmFsV2lkdGggLyBvcmlnaW5hbEhlaWdodH1gLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2hvd0Nyb3AgPyAoXG4gICAgICAgICAgICAgIDxSZWFjdENyb3BcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3JlYWN0Q3JvcGB9XG4gICAgICAgICAgICAgICAgY3JvcD17Y3JvcH1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KF8sIGMpID0+IHNldENyb3AoYyl9XG4gICAgICAgICAgICAgICAgb25Db21wbGV0ZT17KCkgPT4gc2V0Q2hlY2tCb3VuZHModHJ1ZSl9XG4gICAgICAgICAgICAgICAgcmVuZGVyU2VsZWN0aW9uQWRkb249eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fY3JvcC13aW5kb3dgfSByZWY9e2Nyb3BSZWZ9IC8+XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgIGFsdD17dCgndXBsb2FkOnNldENyb3BBcmVhJyl9XG4gICAgICAgICAgICAgICAgICBvbkxvYWQ9e29uSW1hZ2VMb2FkfVxuICAgICAgICAgICAgICAgICAgcmVmPXtpbWFnZVJlZn1cbiAgICAgICAgICAgICAgICAgIHNyYz17ZmlsZVNyY1RvVXNlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvUmVhY3RDcm9wPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIGFsdD17dCgndXBsb2FkOnNldEZvY2FsUG9pbnQnKX1cbiAgICAgICAgICAgICAgICBvbkxvYWQ9e29uSW1hZ2VMb2FkfVxuICAgICAgICAgICAgICAgIHJlZj17aW1hZ2VSZWZ9XG4gICAgICAgICAgICAgICAgc3JjPXtmaWxlU3JjVG9Vc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge3Nob3dGb2NhbFBvaW50ICYmIChcbiAgICAgICAgICAgICAgPERyYWdnYWJsZUVsZW1lbnRcbiAgICAgICAgICAgICAgICBib3VuZHNSZWY9e3Nob3dDcm9wID8gY3JvcFJlZiA6IGltYWdlUmVmfVxuICAgICAgICAgICAgICAgIGNoZWNrQm91bmRzPXtzaG93Q3JvcCA/IGNoZWNrQm91bmRzIDogZmFsc2V9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19mb2NhbFBvaW50YH1cbiAgICAgICAgICAgICAgICBjb250YWluZXJSZWY9e2ZvY2FsV3JhcFJlZn1cbiAgICAgICAgICAgICAgICBpbml0aWFsUG9zaXRpb249e2ZvY2FsUG9zaXRpb259XG4gICAgICAgICAgICAgICAgb25EcmFnRW5kPXtvbkRyYWdFbmR9XG4gICAgICAgICAgICAgICAgc2V0Q2hlY2tCb3VuZHM9e3Nob3dDcm9wID8gc2V0Q2hlY2tCb3VuZHMgOiBmYWxzZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxQbHVzIC8+XG4gICAgICAgICAgICAgIDwvRHJhZ2dhYmxlRWxlbWVudD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7KHNob3dDcm9wIHx8IHNob3dGb2NhbFBvaW50KSAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3NpZGViYXJgfT5cbiAgICAgICAgICAgIHtzaG93Q3JvcCAmJiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19ncm91cFdyYXBgfT5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3RpdGxlV3JhcGB9PlxuICAgICAgICAgICAgICAgICAgICA8aDM+e3QoJ3VwbG9hZDpjcm9wJyl9PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblN0eWxlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19yZXNldGB9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNldENyb3Aoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0UGl4ZWxzOiBvcmlnaW5hbEhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdDogJyUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aFBpeGVsczogb3JpZ2luYWxXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3QoJ2dlbmVyYWw6cmVzZXQnKX1cbiAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2Rlc2NyaXB0aW9uYH0+XG4gICAgICAgICAgICAgICAgICB7dCgndXBsb2FkOmNyb3BUb29sRGVzY3JpcHRpb24nKX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2lucHV0c1dyYXBgfT5cbiAgICAgICAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICAgICAgICBuYW1lPXtgJHt0KCd1cGxvYWQ6d2lkdGgnKX0gKHB4KWB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IGZpbmVUdW5lQ3JvcCh7IGRpbWVuc2lvbjogJ3dpZHRoJywgdmFsdWUgfSl9XG4gICAgICAgICAgICAgICAgICAgIHJlZj17d2lkdGhSZWZ9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXsoKGNyb3Aud2lkdGggLyAxMDApICogb3JpZ2luYWxXaWR0aCkudG9GaXhlZCgwKX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgbmFtZT17YCR7dCgndXBsb2FkOmhlaWdodCcpfSAocHgpYH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gZmluZVR1bmVDcm9wKHsgZGltZW5zaW9uOiAnaGVpZ2h0JywgdmFsdWUgfSl9XG4gICAgICAgICAgICAgICAgICAgIHJlZj17aGVpZ2h0UmVmfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17KChjcm9wLmhlaWdodCAvIDEwMCkgKiBvcmlnaW5hbEhlaWdodCkudG9GaXhlZCgwKX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3Nob3dGb2NhbFBvaW50ICYmIChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2dyb3VwV3JhcGB9PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fdGl0bGVXcmFwYH0+XG4gICAgICAgICAgICAgICAgICAgIDxoMz57dCgndXBsb2FkOmZvY2FsUG9pbnQnKX08L2gzPlxuICAgICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgYnV0dG9uU3R5bGU9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3Jlc2V0YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtjZW50ZXJGb2NhbFBvaW50fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3QoJ2dlbmVyYWw6cmVzZXQnKX1cbiAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2Rlc2NyaXB0aW9uYH0+XG4gICAgICAgICAgICAgICAgICB7dCgndXBsb2FkOmZvY2FsUG9pbnREZXNjcmlwdGlvbicpfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9faW5wdXRzV3JhcGB9PlxuICAgICAgICAgICAgICAgICAgPElucHV0XG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJYICVcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBmaW5lVHVuZUZvY2FsUG9zaXRpb24oeyBjb29yZGluYXRlOiAneCcsIHZhbHVlIH0pfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Zm9jYWxQb3NpdGlvbi54LnRvRml4ZWQoMCl9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPElucHV0XG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJZICVcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiBmaW5lVHVuZUZvY2FsUG9zaXRpb24oeyBjb29yZGluYXRlOiAneScsIHZhbHVlIH0pfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Zm9jYWxQb3NpdGlvbi55LnRvRml4ZWQoMCl9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5jb25zdCBEcmFnZ2FibGVFbGVtZW50ID0gKHtcbiAgYm91bmRzUmVmLFxuICBjaGVja0JvdW5kcyxcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZSxcbiAgY29udGFpbmVyUmVmLFxuICBpbml0aWFsUG9zaXRpb24gPSB7IHg6IDUwLCB5OiA1MCB9LFxuICBvbkRyYWdFbmQsXG4gIHNldENoZWNrQm91bmRzLFxufSkgPT4ge1xuICBjb25zdCBbcG9zaXRpb24sIHNldFBvc2l0aW9uXSA9IHVzZVN0YXRlKHsgeDogaW5pdGlhbFBvc2l0aW9uLngsIHk6IGluaXRpYWxQb3NpdGlvbi55IH0pXG4gIGNvbnN0IFtpc0RyYWdnaW5nLCBzZXRJc0RyYWdnaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBkcmFnUmVmID0gdXNlUmVmPEhUTUxCdXR0b25FbGVtZW50IHwgdW5kZWZpbmVkPigpXG5cbiAgY29uc3QgZ2V0Q29vcmRpbmF0ZXMgPSBSZWFjdC51c2VDYWxsYmFjayhcbiAgICAobW91c2VYQXJnPzogbnVtYmVyLCBtb3VzZVlBcmc/OiBudW1iZXIsIHJlY2VudGVyPzogYm9vbGVhbikgPT4ge1xuICAgICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lclJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICBjb25zdCBib3VuZHNSZWN0ID0gYm91bmRzUmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgIGNvbnN0IG1vdXNlWCA9IG1vdXNlWEFyZyA/PyBib3VuZHNSZWN0LmxlZnRcbiAgICAgIGNvbnN0IG1vdXNlWSA9IG1vdXNlWUFyZyA/PyBib3VuZHNSZWN0LnRvcFxuXG4gICAgICBjb25zdCB4T3V0T2ZCb3VuZHMgPSBtb3VzZVggPCBib3VuZHNSZWN0LmxlZnQgfHwgbW91c2VYID4gYm91bmRzUmVjdC5yaWdodFxuICAgICAgY29uc3QgeU91dE9mQm91bmRzID0gbW91c2VZIDwgYm91bmRzUmVjdC50b3AgfHwgbW91c2VZID4gYm91bmRzUmVjdC5ib3R0b21cblxuICAgICAgbGV0IHggPSAoKG1vdXNlWCAtIGNvbnRhaW5lclJlY3QubGVmdCkgLyBjb250YWluZXJSZWN0LndpZHRoKSAqIDEwMFxuICAgICAgbGV0IHkgPSAoKG1vdXNlWSAtIGNvbnRhaW5lclJlY3QudG9wKSAvIGNvbnRhaW5lclJlY3QuaGVpZ2h0KSAqIDEwMFxuICAgICAgY29uc3QgeENlbnRlciA9XG4gICAgICAgICgoYm91bmRzUmVjdC5sZWZ0IC0gY29udGFpbmVyUmVjdC5sZWZ0ICsgYm91bmRzUmVjdC53aWR0aCAvIDIpIC8gY29udGFpbmVyUmVjdC53aWR0aCkgKiAxMDBcbiAgICAgIGNvbnN0IHlDZW50ZXIgPVxuICAgICAgICAoKGJvdW5kc1JlY3QudG9wIC0gY29udGFpbmVyUmVjdC50b3AgKyBib3VuZHNSZWN0LmhlaWdodCAvIDIpIC8gY29udGFpbmVyUmVjdC5oZWlnaHQpICogMTAwXG4gICAgICBpZiAoeE91dE9mQm91bmRzIHx8IHlPdXRPZkJvdW5kcykge1xuICAgICAgICBzZXRJc0RyYWdnaW5nKGZhbHNlKVxuICAgICAgICBpZiAobW91c2VYIDwgYm91bmRzUmVjdC5sZWZ0KSB7XG4gICAgICAgICAgeCA9ICgoYm91bmRzUmVjdC5sZWZ0IC0gY29udGFpbmVyUmVjdC5sZWZ0KSAvIGNvbnRhaW5lclJlY3Qud2lkdGgpICogMTAwXG4gICAgICAgIH0gZWxzZSBpZiAobW91c2VYID4gYm91bmRzUmVjdC5yaWdodCkge1xuICAgICAgICAgIHggPVxuICAgICAgICAgICAgKChjb250YWluZXJSZWN0LndpZHRoIC0gKGNvbnRhaW5lclJlY3QucmlnaHQgLSBib3VuZHNSZWN0LnJpZ2h0KSkgL1xuICAgICAgICAgICAgICBjb250YWluZXJSZWN0LndpZHRoKSAqXG4gICAgICAgICAgICAxMDBcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb3VzZVkgPCBib3VuZHNSZWN0LnRvcCkge1xuICAgICAgICAgIHkgPSAoKGJvdW5kc1JlY3QudG9wIC0gY29udGFpbmVyUmVjdC50b3ApIC8gY29udGFpbmVyUmVjdC5oZWlnaHQpICogMTAwXG4gICAgICAgIH0gZWxzZSBpZiAobW91c2VZID4gYm91bmRzUmVjdC5ib3R0b20pIHtcbiAgICAgICAgICB5ID1cbiAgICAgICAgICAgICgoY29udGFpbmVyUmVjdC5oZWlnaHQgLSAoY29udGFpbmVyUmVjdC5ib3R0b20gLSBib3VuZHNSZWN0LmJvdHRvbSkpIC9cbiAgICAgICAgICAgICAgY29udGFpbmVyUmVjdC5oZWlnaHQpICpcbiAgICAgICAgICAgIDEwMFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlY2VudGVyKSB7XG4gICAgICAgICAgeCA9IHhPdXRPZkJvdW5kcyA/IHhDZW50ZXIgOiB4XG4gICAgICAgICAgeSA9IHlPdXRPZkJvdW5kcyA/IHlDZW50ZXIgOiB5XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgeCwgeSB9XG4gICAgfSxcbiAgICBbYm91bmRzUmVmLCBjb250YWluZXJSZWZdLFxuICApXG5cbiAgY29uc3QgaGFuZGxlTW91c2VEb3duID0gKGV2ZW50KSA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIHNldElzRHJhZ2dpbmcodHJ1ZSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZU1vdXNlTW92ZSA9IChldmVudCkgPT4ge1xuICAgIGlmICghaXNEcmFnZ2luZykgcmV0dXJuIG51bGxcbiAgICBjb25zdCB7IHgsIHkgfSA9IGdldENvb3JkaW5hdGVzKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpXG5cbiAgICBzZXRQb3NpdGlvbih7IHgsIHkgfSlcbiAgfVxuXG4gIGNvbnN0IG9uRHJvcCA9ICgpID0+IHtcbiAgICBzZXRJc0RyYWdnaW5nKGZhbHNlKVxuICAgIG9uRHJhZ0VuZChwb3NpdGlvbilcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzRHJhZ2dpbmcgfHwgIWRyYWdSZWYuY3VycmVudCkgcmV0dXJuXG4gICAgaWYgKGNoZWNrQm91bmRzKSB7XG4gICAgICBjb25zdCB7IGhlaWdodCwgbGVmdCwgdG9wLCB3aWR0aCB9ID0gZHJhZ1JlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICBjb25zdCB7IHgsIHkgfSA9IGdldENvb3JkaW5hdGVzKGxlZnQgKyB3aWR0aCAvIDIsIHRvcCArIGhlaWdodCAvIDIsIHRydWUpXG4gICAgICBvbkRyYWdFbmQoeyB4LCB5IH0pXG4gICAgICBzZXRQb3NpdGlvbih7IHgsIHkgfSlcbiAgICAgIHNldENoZWNrQm91bmRzKGZhbHNlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICB9LCBbZ2V0Q29vcmRpbmF0ZXMsIGlzRHJhZ2dpbmcsIGNoZWNrQm91bmRzLCBzZXRDaGVja0JvdW5kcywgcG9zaXRpb24ueCwgcG9zaXRpb24ueSwgb25EcmFnRW5kXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFBvc2l0aW9uKHsgeDogaW5pdGlhbFBvc2l0aW9uLngsIHk6IGluaXRpYWxQb3NpdGlvbi55IH0pXG4gIH0sIFtpbml0aWFsUG9zaXRpb24ueCwgaW5pdGlhbFBvc2l0aW9uLnldKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtbXG4gICAgICAgIGAke2Jhc2VDbGFzc31fX2RyYWdnYWJsZS1jb250YWluZXJgLFxuICAgICAgICBpc0RyYWdnaW5nICYmIGAke2Jhc2VDbGFzc31fX2RyYWdnYWJsZS1jb250YWluZXItLWRyYWdnaW5nYCxcbiAgICAgIF1cbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAuam9pbignICcpfVxuICAgICAgb25Nb3VzZU1vdmU9e2hhbmRsZU1vdXNlTW92ZX1cbiAgICA+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17W2Ake2Jhc2VDbGFzc31fX2RyYWdnYWJsZWAsIGNsYXNzTmFtZV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKX1cbiAgICAgICAgb25Nb3VzZURvd249e2hhbmRsZU1vdXNlRG93bn1cbiAgICAgICAgb25Nb3VzZVVwPXtvbkRyb3B9XG4gICAgICAgIHJlZj17ZHJhZ1JlZn1cbiAgICAgICAgc3R5bGU9e3sgbGVmdDogYCR7cG9zaXRpb24ueH0lYCwgdG9wOiBgJHtwb3NpdGlvbi55fSVgIH19XG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxkaXYgLz5cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl0sIm5hbWVzIjpbIkVkaXRVcGxvYWQiLCJiYXNlQ2xhc3MiLCJJbnB1dCIsImZvcndhcmRSZWYiLCJwcm9wcyIsInJlZiIsIm5hbWUiLCJvbkNoYW5nZSIsInZhbHVlIiwiZGl2IiwiY2xhc3NOYW1lIiwiaW5wdXQiLCJlIiwidGFyZ2V0IiwidHlwZSIsImRvYyIsImZpbGVOYW1lIiwiZmlsZVNyYyIsImltYWdlQ2FjaGVUYWciLCJzaG93Q3JvcCIsInNob3dGb2NhbFBvaW50IiwiY2xvc2VNb2RhbCIsInVzZU1vZGFsIiwidCIsInVzZVRyYW5zbGF0aW9uIiwidXBkYXRlVXBsb2FkRWRpdHMiLCJ1cGxvYWRFZGl0cyIsInVzZVVwbG9hZEVkaXRzIiwiZm9jYWxQb3NpdGlvbiIsInNldEZvY2FsUG9zaXRpb24iLCJ1c2VTdGF0ZSIsIngiLCJmb2NhbFBvaW50IiwiZm9jYWxYIiwieSIsImZvY2FsWSIsImNoZWNrQm91bmRzIiwic2V0Q2hlY2tCb3VuZHMiLCJvcmlnaW5hbEhlaWdodCIsInNldE9yaWdpbmFsSGVpZ2h0Iiwib3JpZ2luYWxXaWR0aCIsInNldE9yaWdpbmFsV2lkdGgiLCJmb2NhbFdyYXBSZWYiLCJ1c2VSZWYiLCJpbWFnZVJlZiIsImNyb3BSZWYiLCJoZWlnaHRSZWYiLCJ3aWR0aFJlZiIsImNyb3AiLCJzZXRDcm9wIiwiaGVpZ2h0IiwiaGVpZ2h0UGl4ZWxzIiwidW5pdCIsIndpZHRoIiwid2lkdGhQaXhlbHMiLCJpbWFnZUxvYWRlZCIsInNldEltYWdlTG9hZGVkIiwib25JbWFnZUxvYWQiLCJjdXJyZW50VGFyZ2V0IiwibmF0dXJhbEhlaWdodCIsIm5hdHVyYWxXaWR0aCIsImZpbmVUdW5lQ3JvcCIsImRpbWVuc2lvbiIsImludFZhbHVlIiwicGFyc2VJbnQiLCJwZXJjZW50YWdlIiwiZmluZVR1bmVGb2NhbFBvc2l0aW9uIiwiY29vcmRpbmF0ZSIsInByZXZQb3NpdGlvbiIsInNhdmVFZGl0cyIsIk51bWJlciIsImN1cnJlbnQiLCJ1bmRlZmluZWQiLCJlZGl0RHJhd2VyU2x1ZyIsIm9uRHJhZ0VuZCIsIlJlYWN0IiwidXNlQ2FsbGJhY2siLCJjZW50ZXJGb2NhbFBvaW50IiwiY29udGFpbmVyUmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImJvdW5kc1JlY3QiLCJ4Q2VudGVyIiwibGVmdCIsInlDZW50ZXIiLCJ0b3AiLCJmaWxlU3JjVG9Vc2UiLCJoMiIsInRpdGxlIiwiQnV0dG9uIiwiYXJpYS1sYWJlbCIsImJ1dHRvblN0eWxlIiwib25DbGljayIsImRpc2FibGVkIiwic3R5bGUiLCJhc3BlY3RSYXRpbyIsIlJlYWN0Q3JvcCIsIl8iLCJjIiwib25Db21wbGV0ZSIsInJlbmRlclNlbGVjdGlvbkFkZG9uIiwiaW1nIiwiYWx0Iiwib25Mb2FkIiwic3JjIiwiRHJhZ2dhYmxlRWxlbWVudCIsImJvdW5kc1JlZiIsImNvbnRhaW5lclJlZiIsImluaXRpYWxQb3NpdGlvbiIsIlBsdXMiLCJoMyIsInNwYW4iLCJ0b0ZpeGVkIiwiY2hpbGRyZW4iLCJwb3NpdGlvbiIsInNldFBvc2l0aW9uIiwiaXNEcmFnZ2luZyIsInNldElzRHJhZ2dpbmciLCJkcmFnUmVmIiwiZ2V0Q29vcmRpbmF0ZXMiLCJtb3VzZVhBcmciLCJtb3VzZVlBcmciLCJyZWNlbnRlciIsIm1vdXNlWCIsIm1vdXNlWSIsInhPdXRPZkJvdW5kcyIsInJpZ2h0IiwieU91dE9mQm91bmRzIiwiYm90dG9tIiwiaGFuZGxlTW91c2VEb3duIiwiZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsImhhbmRsZU1vdXNlTW92ZSIsImNsaWVudFgiLCJjbGllbnRZIiwib25Ecm9wIiwidXNlRWZmZWN0IiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJvbk1vdXNlTW92ZSIsImJ1dHRvbiIsIm9uTW91c2VEb3duIiwib25Nb3VzZVVwIl0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/utilities/Auth/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsE,MAAM,OAAO,CAAA;AAK1F,OAAO,KAAK,EAAe,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAW1C,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAwRhE,CAAA;AAED,eAAO,MAAM,OAAO,gCAAyE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/utilities/Auth/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsE,MAAM,OAAO,CAAA;AAK1F,OAAO,KAAK,EAAe,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAW1C,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CA+RhE,CAAA;AAED,eAAO,MAAM,OAAO,gCAAyE,CAAA"}
@@ -78,6 +78,7 @@ const AuthProvider = ({ children })=>{
78
78
  const [user, setUser] = (0, _react.useState)();
79
79
  const [tokenInMemory, setTokenInMemory] = (0, _react.useState)();
80
80
  const [tokenExpiration, setTokenExpiration] = (0, _react.useState)();
81
+ const [strategy, setStrategy] = (0, _react.useState)();
81
82
  const { pathname } = (0, _reactrouterdom.useLocation)();
82
83
  const { push } = (0, _reactrouterdom.useHistory)();
83
84
  const { code } = (0, _Locale.useLocale)();
@@ -106,12 +107,16 @@ const AuthProvider = ({ children })=>{
106
107
  const revokeTokenAndExpire = (0, _react.useCallback)(()=>{
107
108
  setTokenInMemory(undefined);
108
109
  setTokenExpiration(undefined);
110
+ setStrategy(undefined);
109
111
  }, []);
110
112
  const setTokenAndExpiration = (0, _react.useCallback)((json)=>{
111
113
  const token = json?.token || json?.refreshedToken;
112
114
  if (token && json?.exp) {
113
115
  setTokenInMemory(token);
114
116
  setTokenExpiration(json.exp);
117
+ if (json.strategy) {
118
+ setStrategy(json.strategy);
119
+ }
115
120
  } else {
116
121
  revokeTokenAndExpire();
117
122
  }
@@ -349,11 +354,13 @@ const AuthProvider = ({ children })=>{
349
354
  refreshCookieAsync,
350
355
  refreshPermissions,
351
356
  setUser,
357
+ strategy,
352
358
  token: tokenInMemory,
359
+ tokenExpiration,
353
360
  user
354
361
  }
355
362
  }, children);
356
363
  };
357
364
  const useAuth = ()=>(0, _react.useContext)(Context);
358
365
 
359
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3V0aWxpdGllcy9BdXRoL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VNb2RhbCB9IGZyb20gJ0BmYWNlbGVzcy11aS9tb2RhbCdcbmltcG9ydCBxcyBmcm9tICdxcydcbmltcG9ydCBSZWFjdCwgeyBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdXNlSGlzdG9yeSwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJ1xuaW1wb3J0IHsgdG9hc3QgfSBmcm9tICdyZWFjdC10b2FzdGlmeSdcblxuaW1wb3J0IHR5cGUgeyBQZXJtaXNzaW9ucywgVXNlciB9IGZyb20gJy4uLy4uLy4uLy4uL2F1dGgvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEF1dGhDb250ZXh0IH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgcmVxdWVzdHMgfSBmcm9tICcuLi8uLi8uLi9hcGknXG5pbXBvcnQgdXNlRGVib3VuY2UgZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRGVib3VuY2UnXG5pbXBvcnQgeyB1c2VDb25maWcgfSBmcm9tICcuLi9Db25maWcnXG5pbXBvcnQgeyB1c2VMb2NhbGUgfSBmcm9tICcuLi9Mb2NhbGUnXG5cbmNvbnN0IENvbnRleHQgPSBjcmVhdGVDb250ZXh0KHt9IGFzIEF1dGhDb250ZXh0KVxuXG5jb25zdCBtYXhUaW1lb3V0VGltZSA9IDIxNDc0ODM2NDdcblxuZXhwb3J0IGNvbnN0IEF1dGhQcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+ID0gKHsgY2hpbGRyZW4gfSkgPT4ge1xuICBjb25zdCBbdXNlciwgc2V0VXNlcl0gPSB1c2VTdGF0ZTxVc2VyIHwgbnVsbD4oKVxuICBjb25zdCBbdG9rZW5Jbk1lbW9yeSwgc2V0VG9rZW5Jbk1lbW9yeV0gPSB1c2VTdGF0ZTxzdHJpbmc+KClcbiAgY29uc3QgW3Rva2VuRXhwaXJhdGlvbiwgc2V0VG9rZW5FeHBpcmF0aW9uXSA9IHVzZVN0YXRlPG51bWJlcj4oKVxuICBjb25zdCB7IHBhdGhuYW1lIH0gPSB1c2VMb2NhdGlvbigpXG4gIGNvbnN0IHsgcHVzaCB9ID0gdXNlSGlzdG9yeSgpXG4gIGNvbnN0IHsgY29kZSB9ID0gdXNlTG9jYWxlKClcblxuICBjb25zdCBjb25maWcgPSB1c2VDb25maWcoKVxuXG4gIGNvbnN0IHtcbiAgICBhZG1pbjogeyBhdXRvTG9naW4sIGluYWN0aXZpdHlSb3V0ZTogbG9nb3V0SW5hY3Rpdml0eVJvdXRlLCB1c2VyOiB1c2VyU2x1ZyB9LFxuICAgIHJvdXRlczogeyBhZG1pbiwgYXBpIH0sXG4gICAgc2VydmVyVVJMLFxuICB9ID0gY29uZmlnXG5cbiAgY29uc3QgW3Blcm1pc3Npb25zLCBzZXRQZXJtaXNzaW9uc10gPSB1c2VTdGF0ZTxQZXJtaXNzaW9ucz4oKVxuXG4gIGNvbnN0IHsgaTE4biB9ID0gdXNlVHJhbnNsYXRpb24oKVxuICBjb25zdCB7IGNsb3NlQWxsTW9kYWxzLCBvcGVuTW9kYWwgfSA9IHVzZU1vZGFsKClcbiAgY29uc3QgW2xhc3RMb2NhdGlvbkNoYW5nZSwgc2V0TGFzdExvY2F0aW9uQ2hhbmdlXSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IGRlYm91bmNlZExvY2F0aW9uQ2hhbmdlID0gdXNlRGVib3VuY2UobGFzdExvY2F0aW9uQ2hhbmdlLCAxMDAwMClcblxuICBjb25zdCBpZCA9IHVzZXI/LmlkXG5cbiAgY29uc3QgcmVkaXJlY3RUb0luYWN0aXZpdHlSb3V0ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnN0YXJ0c1dpdGgoYWRtaW4pKSB7XG4gICAgICBjb25zdCByZWRpcmVjdFBhcmFtID0gYD9yZWRpcmVjdD0ke2VuY29kZVVSSUNvbXBvbmVudChcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoYWRtaW4sICcnKSxcbiAgICAgICl9YFxuICAgICAgcHVzaChgJHthZG1pbn0ke2xvZ291dEluYWN0aXZpdHlSb3V0ZX0ke3JlZGlyZWN0UGFyYW19YClcbiAgICB9IGVsc2Uge1xuICAgICAgcHVzaChgJHthZG1pbn0ke2xvZ291dEluYWN0aXZpdHlSb3V0ZX1gKVxuICAgIH1cbiAgICBjbG9zZUFsbE1vZGFscygpXG4gIH0sIFtwdXNoLCBhZG1pbiwgbG9nb3V0SW5hY3Rpdml0eVJvdXRlLCBjbG9zZUFsbE1vZGFsc10pXG5cbiAgY29uc3QgcmV2b2tlVG9rZW5BbmRFeHBpcmUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0VG9rZW5Jbk1lbW9yeSh1bmRlZmluZWQpXG4gICAgc2V0VG9rZW5FeHBpcmF0aW9uKHVuZGVmaW5lZClcbiAgfSwgW10pXG5cbiAgY29uc3Qgc2V0VG9rZW5BbmRFeHBpcmF0aW9uID0gdXNlQ2FsbGJhY2soXG4gICAgKGpzb24pID0+IHtcbiAgICAgIGNvbnN0IHRva2VuID0ganNvbj8udG9rZW4gfHwganNvbj8ucmVmcmVzaGVkVG9rZW5cbiAgICAgIGlmICh0b2tlbiAmJiBqc29uPy5leHApIHtcbiAgICAgICAgc2V0VG9rZW5Jbk1lbW9yeSh0b2tlbilcbiAgICAgICAgc2V0VG9rZW5FeHBpcmF0aW9uKGpzb24uZXhwKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV2b2tlVG9rZW5BbmRFeHBpcmUoKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3Jldm9rZVRva2VuQW5kRXhwaXJlXSxcbiAgKVxuXG4gIGNvbnN0IHJlZnJlc2hDb29raWUgPSB1c2VDYWxsYmFjayhcbiAgICAoZm9yY2VSZWZyZXNoPzogYm9vbGVhbikgPT4ge1xuICAgICAgY29uc3Qgbm93ID0gTWF0aC5yb3VuZChuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApXG4gICAgICBjb25zdCByZW1haW5pbmdUaW1lID0gKHR5cGVvZiB0b2tlbkV4cGlyYXRpb24gPT09ICdudW1iZXInID8gdG9rZW5FeHBpcmF0aW9uIDogMCkgLSBub3dcblxuICAgICAgaWYgKGZvcmNlUmVmcmVzaCB8fCAodG9rZW5FeHBpcmF0aW9uICYmIHJlbWFpbmluZ1RpbWUgPCAxMjApKSB7XG4gICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgcmVxdWVzdHMucG9zdChgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7dXNlclNsdWd9L3JlZnJlc2gtdG9rZW5gLCB7XG4gICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGlmIChyZXF1ZXN0LnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGpzb24gPSBhd2FpdCByZXF1ZXN0Lmpzb24oKVxuICAgICAgICAgICAgICBzZXRVc2VyKGpzb24udXNlcilcbiAgICAgICAgICAgICAgc2V0VG9rZW5BbmRFeHBpcmF0aW9uKGpzb24pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzZXRVc2VyKG51bGwpXG4gICAgICAgICAgICAgIHJlZGlyZWN0VG9JbmFjdGl2aXR5Um91dGUoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRvYXN0LmVycm9yKGUubWVzc2FnZSlcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDEwMDApXG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICB0b2tlbkV4cGlyYXRpb24sXG4gICAgICBzZXJ2ZXJVUkwsXG4gICAgICBhcGksXG4gICAgICB1c2VyU2x1ZyxcbiAgICAgIGkxOG4sXG4gICAgICByZWRpcmVjdFRvSW5hY3Rpdml0eVJvdXRlLFxuICAgICAgc2V0VG9rZW5BbmRFeHBpcmF0aW9uLFxuICAgIF0sXG4gIClcblxuICBjb25zdCByZWZyZXNoQ29va2llQXN5bmMgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoc2tpcFNldFVzZXI/OiBib29sZWFuKTogUHJvbWlzZTxVc2VyPiA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgcmVxdWVzdHMucG9zdChgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7dXNlclNsdWd9L3JlZnJlc2gtdG9rZW5gLCB7XG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6IGkxOG4ubGFuZ3VhZ2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgIGNvbnN0IGpzb24gPSBhd2FpdCByZXF1ZXN0Lmpzb24oKVxuICAgICAgICAgIGlmICghc2tpcFNldFVzZXIpIHtcbiAgICAgICAgICAgIHNldFVzZXIoanNvbi51c2VyKVxuICAgICAgICAgICAgc2V0VG9rZW5BbmRFeHBpcmF0aW9uKGpzb24pXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBqc29uLnVzZXJcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFVzZXIobnVsbClcbiAgICAgICAgcmVkaXJlY3RUb0luYWN0aXZpdHlSb3V0ZSgpXG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRvYXN0LmVycm9yKGBSZWZyZXNoaW5nIHRva2VuIGZhaWxlZDogJHtlLm1lc3NhZ2V9YClcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZXJ2ZXJVUkwsIGFwaSwgdXNlclNsdWcsIGkxOG4sIHJlZGlyZWN0VG9JbmFjdGl2aXR5Um91dGUsIHNldFRva2VuQW5kRXhwaXJhdGlvbl0sXG4gIClcblxuICBjb25zdCBsb2dPdXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0VXNlcihudWxsKVxuICAgIHJldm9rZVRva2VuQW5kRXhwaXJlKClcbiAgICByZXF1ZXN0cy5wb3N0KGAke3NlcnZlclVSTH0ke2FwaX0vJHt1c2VyU2x1Z30vbG9nb3V0YClcbiAgfSwgW3NlcnZlclVSTCwgYXBpLCB1c2VyU2x1ZywgcmV2b2tlVG9rZW5BbmRFeHBpcmVdKVxuXG4gIGNvbnN0IHJlZnJlc2hQZXJtaXNzaW9ucyA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBsb2NhbGU6IGNvZGUsXG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgcmVxdWVzdHMuZ2V0KGAke3NlcnZlclVSTH0ke2FwaX0vYWNjZXNzPyR7cXMuc3RyaW5naWZ5KHBhcmFtcyl9YCwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6IGkxOG4ubGFuZ3VhZ2UsXG4gICAgICAgIH0sXG4gICAgICB9KVxuXG4gICAgICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICBjb25zdCBqc29uOiBQZXJtaXNzaW9ucyA9IGF3YWl0IHJlcXVlc3QuanNvbigpXG4gICAgICAgIHNldFBlcm1pc3Npb25zKGpzb24pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZldGNoaW5nIHBlcm1pc3Npb25zIGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICR7cmVxdWVzdC5zdGF0dXN9YClcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0b2FzdC5lcnJvcihgUmVmcmVzaGluZyBwZXJtaXNzaW9ucyBmYWlsZWQ6ICR7ZS5tZXNzYWdlfWApXG4gICAgfVxuICB9LCBbc2VydmVyVVJMLCBhcGksIGkxOG4sIGNvZGVdKVxuXG4gIGNvbnN0IGZldGNoRnVsbFVzZXIgPSBSZWFjdC51c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCByZXF1ZXN0cy5nZXQoYCR7c2VydmVyVVJMfSR7YXBpfS8ke3VzZXJTbHVnfS9tZWAsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiBpMThuLmxhbmd1YWdlLFxuICAgICAgICB9LFxuICAgICAgfSlcblxuICAgICAgaWYgKHJlcXVlc3Quc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgY29uc3QganNvbiA9IGF3YWl0IHJlcXVlc3QuanNvbigpXG5cbiAgICAgICAgaWYgKGpzb24/LnVzZXIpIHtcbiAgICAgICAgICBzZXRVc2VyKGpzb24udXNlcilcbiAgICAgICAgICBpZiAoanNvbj8udG9rZW4pIHtcbiAgICAgICAgICAgIHNldFRva2VuQW5kRXhwaXJhdGlvbihqc29uKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChhdXRvTG9naW4gJiYgYXV0b0xvZ2luLnByZWZpbGxPbmx5ICE9PSB0cnVlKSB7XG4gICAgICAgICAgLy8gYXV0byBsb2ctaW4gd2l0aCB0aGUgcHJvdmlkZWQgYXV0b0xvZ2luIGNyZWRlbnRpYWxzLiBUaGlzIGlzIHVzZWQgaW4gZGV2IG1vZGVcbiAgICAgICAgICAvLyBzbyB5b3UgZG9uJ3QgaGF2ZSB0byBsb2cgaW4gb3ZlciBhbmQgb3ZlciBhZ2FpblxuICAgICAgICAgIGNvbnN0IGF1dG9Mb2dpblJlc3VsdCA9IGF3YWl0IHJlcXVlc3RzLnBvc3QoYCR7c2VydmVyVVJMfSR7YXBpfS8ke3VzZXJTbHVnfS9sb2dpbmAsIHtcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgZW1haWw6IGF1dG9Mb2dpbi5lbWFpbCxcbiAgICAgICAgICAgICAgcGFzc3dvcmQ6IGF1dG9Mb2dpbi5wYXNzd29yZCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICBpZiAoYXV0b0xvZ2luUmVzdWx0LnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICBjb25zdCBhdXRvTG9naW5Kc29uID0gYXdhaXQgYXV0b0xvZ2luUmVzdWx0Lmpzb24oKVxuICAgICAgICAgICAgc2V0VXNlcihhdXRvTG9naW5Kc29uLnVzZXIpXG4gICAgICAgICAgICBpZiAoYXV0b0xvZ2luSnNvbj8udG9rZW4pIHtcbiAgICAgICAgICAgICAgc2V0VG9rZW5BbmRFeHBpcmF0aW9uKGF1dG9Mb2dpbkpzb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldFVzZXIobnVsbClcbiAgICAgICAgICAgIHJldm9rZVRva2VuQW5kRXhwaXJlKClcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0VXNlcihudWxsKVxuICAgICAgICAgIHJldm9rZVRva2VuQW5kRXhwaXJlKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRvYXN0LmVycm9yKGBGZXRjaGluZyB1c2VyIGZhaWxlZDogJHtlLm1lc3NhZ2V9YClcbiAgICB9XG4gIH0sIFtzZXJ2ZXJVUkwsIGFwaSwgdXNlclNsdWcsIGkxOG4sIGF1dG9Mb2dpbiwgc2V0VG9rZW5BbmRFeHBpcmF0aW9uLCByZXZva2VUb2tlbkFuZEV4cGlyZV0pXG5cbiAgLy8gT24gbW91bnQsIGdldCB1c2VyIGFuZCBzZXRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaEZ1bGxVc2VyKClcbiAgfSwgW2ZldGNoRnVsbFVzZXJdKVxuXG4gIC8vIFdoZW4gbG9jYXRpb24gY2hhbmdlcywgcmVmcmVzaCBjb29raWVcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaWQpIHtcbiAgICAgIHJlZnJlc2hDb29raWUoKVxuICAgIH1cbiAgfSwgW2RlYm91bmNlZExvY2F0aW9uQ2hhbmdlLCByZWZyZXNoQ29va2llLCBpZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRMYXN0TG9jYXRpb25DaGFuZ2UoRGF0ZS5ub3coKSlcbiAgfSwgW3BhdGhuYW1lXSlcblxuICAvLyBXaGVuIHVzZXIgY2hhbmdlcywgZ2V0IG5ldyBhY2Nlc3NcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaWQpIHtcbiAgICAgIHJlZnJlc2hQZXJtaXNzaW9ucygpXG4gICAgfVxuICB9LCBbaTE4biwgaWQsIGFwaSwgc2VydmVyVVJMLCByZWZyZXNoUGVybWlzc2lvbnNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IHJlbWluZGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PlxuICAgIGNvbnN0IG5vdyA9IE1hdGgucm91bmQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKVxuICAgIGNvbnN0IHJlbWFpbmluZ1RpbWUgPSB0eXBlb2YgdG9rZW5FeHBpcmF0aW9uID09PSAnbnVtYmVyJyA/IHRva2VuRXhwaXJhdGlvbiAtIG5vdyA6IDBcblxuICAgIGlmIChyZW1haW5pbmdUaW1lID4gMCkge1xuICAgICAgcmVtaW5kZXIgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgb3Blbk1vZGFsKCdzdGF5LWxvZ2dlZC1pbicpXG4gICAgICAgIH0sXG4gICAgICAgIE1hdGgubWF4KE1hdGgubWluKChyZW1haW5pbmdUaW1lIC0gNjApICogMTAwMCwgbWF4VGltZW91dFRpbWUpKSxcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHJlbWluZGVyKSBjbGVhclRpbWVvdXQocmVtaW5kZXIpXG4gICAgfVxuICB9LCBbdG9rZW5FeHBpcmF0aW9uLCBvcGVuTW9kYWxdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IGZvcmNlTG9nT3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PlxuICAgIGNvbnN0IG5vdyA9IE1hdGgucm91bmQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKVxuICAgIGNvbnN0IHJlbWFpbmluZ1RpbWUgPSB0eXBlb2YgdG9rZW5FeHBpcmF0aW9uID09PSAnbnVtYmVyJyA/IHRva2VuRXhwaXJhdGlvbiAtIG5vdyA6IDBcblxuICAgIGlmIChyZW1haW5pbmdUaW1lID4gMCkge1xuICAgICAgZm9yY2VMb2dPdXQgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgc2V0VXNlcihudWxsKVxuICAgICAgICAgIHJldm9rZVRva2VuQW5kRXhwaXJlKClcbiAgICAgICAgICByZWRpcmVjdFRvSW5hY3Rpdml0eVJvdXRlKClcbiAgICAgICAgfSxcbiAgICAgICAgTWF0aC5tYXgoTWF0aC5taW4ocmVtYWluaW5nVGltZSAqIDEwMDAsIG1heFRpbWVvdXRUaW1lKSwgMCksXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChmb3JjZUxvZ091dCkgY2xlYXJUaW1lb3V0KGZvcmNlTG9nT3V0KVxuICAgIH1cbiAgfSwgW3Rva2VuRXhwaXJhdGlvbiwgY2xvc2VBbGxNb2RhbHMsIGkxOG4sIHJlZGlyZWN0VG9JbmFjdGl2aXR5Um91dGUsIHJldm9rZVRva2VuQW5kRXhwaXJlXSlcblxuICByZXR1cm4gKFxuICAgIDxDb250ZXh0LlByb3ZpZGVyXG4gICAgICB2YWx1ZT17e1xuICAgICAgICBmZXRjaEZ1bGxVc2VyLFxuICAgICAgICBsb2dPdXQsXG4gICAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgICByZWZyZXNoQ29va2llLFxuICAgICAgICByZWZyZXNoQ29va2llQXN5bmMsXG4gICAgICAgIHJlZnJlc2hQZXJtaXNzaW9ucyxcbiAgICAgICAgc2V0VXNlcixcbiAgICAgICAgdG9rZW46IHRva2VuSW5NZW1vcnksXG4gICAgICAgIHVzZXIsXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0NvbnRleHQuUHJvdmlkZXI+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IHVzZUF1dGggPSA8VCA9IFVzZXIsPigpOiBBdXRoQ29udGV4dDxUPiA9PiB1c2VDb250ZXh0KENvbnRleHQpIGFzIEF1dGhDb250ZXh0PFQ+XG4iXSwibmFtZXMiOlsiQXV0aFByb3ZpZGVyIiwidXNlQXV0aCIsIkNvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwibWF4VGltZW91dFRpbWUiLCJjaGlsZHJlbiIsInVzZXIiLCJzZXRVc2VyIiwidXNlU3RhdGUiLCJ0b2tlbkluTWVtb3J5Iiwic2V0VG9rZW5Jbk1lbW9yeSIsInRva2VuRXhwaXJhdGlvbiIsInNldFRva2VuRXhwaXJhdGlvbiIsInBhdGhuYW1lIiwidXNlTG9jYXRpb24iLCJwdXNoIiwidXNlSGlzdG9yeSIsImNvZGUiLCJ1c2VMb2NhbGUiLCJjb25maWciLCJ1c2VDb25maWciLCJhZG1pbiIsImF1dG9Mb2dpbiIsImluYWN0aXZpdHlSb3V0ZSIsImxvZ291dEluYWN0aXZpdHlSb3V0ZSIsInVzZXJTbHVnIiwicm91dGVzIiwiYXBpIiwic2VydmVyVVJMIiwicGVybWlzc2lvbnMiLCJzZXRQZXJtaXNzaW9ucyIsImkxOG4iLCJ1c2VUcmFuc2xhdGlvbiIsImNsb3NlQWxsTW9kYWxzIiwib3Blbk1vZGFsIiwidXNlTW9kYWwiLCJsYXN0TG9jYXRpb25DaGFuZ2UiLCJzZXRMYXN0TG9jYXRpb25DaGFuZ2UiLCJkZWJvdW5jZWRMb2NhdGlvbkNoYW5nZSIsInVzZURlYm91bmNlIiwiaWQiLCJyZWRpcmVjdFRvSW5hY3Rpdml0eVJvdXRlIiwidXNlQ2FsbGJhY2siLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInN0YXJ0c1dpdGgiLCJyZWRpcmVjdFBhcmFtIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwicmVwbGFjZSIsInJldm9rZVRva2VuQW5kRXhwaXJlIiwidW5kZWZpbmVkIiwic2V0VG9rZW5BbmRFeHBpcmF0aW9uIiwianNvbiIsInRva2VuIiwicmVmcmVzaGVkVG9rZW4iLCJleHAiLCJyZWZyZXNoQ29va2llIiwiZm9yY2VSZWZyZXNoIiwibm93IiwiTWF0aCIsInJvdW5kIiwiRGF0ZSIsImdldFRpbWUiLCJyZW1haW5pbmdUaW1lIiwic2V0VGltZW91dCIsInJlcXVlc3QiLCJyZXF1ZXN0cyIsInBvc3QiLCJoZWFkZXJzIiwibGFuZ3VhZ2UiLCJzdGF0dXMiLCJlIiwidG9hc3QiLCJlcnJvciIsIm1lc3NhZ2UiLCJyZWZyZXNoQ29va2llQXN5bmMiLCJza2lwU2V0VXNlciIsImxvZ091dCIsInJlZnJlc2hQZXJtaXNzaW9ucyIsInBhcmFtcyIsImxvY2FsZSIsImdldCIsInFzIiwic3RyaW5naWZ5IiwiRXJyb3IiLCJmZXRjaEZ1bGxVc2VyIiwiUmVhY3QiLCJwcmVmaWxsT25seSIsImF1dG9Mb2dpblJlc3VsdCIsImJvZHkiLCJKU09OIiwiZW1haWwiLCJwYXNzd29yZCIsImF1dG9Mb2dpbkpzb24iLCJ1c2VFZmZlY3QiLCJyZW1pbmRlciIsIm1heCIsIm1pbiIsImNsZWFyVGltZW91dCIsImZvcmNlTG9nT3V0IiwiUHJvdmlkZXIiLCJ2YWx1ZSIsInVzZUNvbnRleHQiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
366
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3V0aWxpdGllcy9BdXRoL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VNb2RhbCB9IGZyb20gJ0BmYWNlbGVzcy11aS9tb2RhbCdcbmltcG9ydCBxcyBmcm9tICdxcydcbmltcG9ydCBSZWFjdCwgeyBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdXNlSGlzdG9yeSwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJ1xuaW1wb3J0IHsgdG9hc3QgfSBmcm9tICdyZWFjdC10b2FzdGlmeSdcblxuaW1wb3J0IHR5cGUgeyBQZXJtaXNzaW9ucywgVXNlciB9IGZyb20gJy4uLy4uLy4uLy4uL2F1dGgvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEF1dGhDb250ZXh0IH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgcmVxdWVzdHMgfSBmcm9tICcuLi8uLi8uLi9hcGknXG5pbXBvcnQgdXNlRGVib3VuY2UgZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRGVib3VuY2UnXG5pbXBvcnQgeyB1c2VDb25maWcgfSBmcm9tICcuLi9Db25maWcnXG5pbXBvcnQgeyB1c2VMb2NhbGUgfSBmcm9tICcuLi9Mb2NhbGUnXG5cbmNvbnN0IENvbnRleHQgPSBjcmVhdGVDb250ZXh0KHt9IGFzIEF1dGhDb250ZXh0KVxuXG5jb25zdCBtYXhUaW1lb3V0VGltZSA9IDIxNDc0ODM2NDdcblxuZXhwb3J0IGNvbnN0IEF1dGhQcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+ID0gKHsgY2hpbGRyZW4gfSkgPT4ge1xuICBjb25zdCBbdXNlciwgc2V0VXNlcl0gPSB1c2VTdGF0ZTxVc2VyIHwgbnVsbD4oKVxuICBjb25zdCBbdG9rZW5Jbk1lbW9yeSwgc2V0VG9rZW5Jbk1lbW9yeV0gPSB1c2VTdGF0ZTxzdHJpbmc+KClcbiAgY29uc3QgW3Rva2VuRXhwaXJhdGlvbiwgc2V0VG9rZW5FeHBpcmF0aW9uXSA9IHVzZVN0YXRlPG51bWJlcj4oKVxuICBjb25zdCBbc3RyYXRlZ3ksIHNldFN0cmF0ZWd5XSA9IHVzZVN0YXRlPHN0cmluZz4oKVxuICBjb25zdCB7IHBhdGhuYW1lIH0gPSB1c2VMb2NhdGlvbigpXG4gIGNvbnN0IHsgcHVzaCB9ID0gdXNlSGlzdG9yeSgpXG4gIGNvbnN0IHsgY29kZSB9ID0gdXNlTG9jYWxlKClcblxuICBjb25zdCBjb25maWcgPSB1c2VDb25maWcoKVxuXG4gIGNvbnN0IHtcbiAgICBhZG1pbjogeyBhdXRvTG9naW4sIGluYWN0aXZpdHlSb3V0ZTogbG9nb3V0SW5hY3Rpdml0eVJvdXRlLCB1c2VyOiB1c2VyU2x1ZyB9LFxuICAgIHJvdXRlczogeyBhZG1pbiwgYXBpIH0sXG4gICAgc2VydmVyVVJMLFxuICB9ID0gY29uZmlnXG5cbiAgY29uc3QgW3Blcm1pc3Npb25zLCBzZXRQZXJtaXNzaW9uc10gPSB1c2VTdGF0ZTxQZXJtaXNzaW9ucz4oKVxuXG4gIGNvbnN0IHsgaTE4biB9ID0gdXNlVHJhbnNsYXRpb24oKVxuICBjb25zdCB7IGNsb3NlQWxsTW9kYWxzLCBvcGVuTW9kYWwgfSA9IHVzZU1vZGFsKClcbiAgY29uc3QgW2xhc3RMb2NhdGlvbkNoYW5nZSwgc2V0TGFzdExvY2F0aW9uQ2hhbmdlXSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IGRlYm91bmNlZExvY2F0aW9uQ2hhbmdlID0gdXNlRGVib3VuY2UobGFzdExvY2F0aW9uQ2hhbmdlLCAxMDAwMClcblxuICBjb25zdCBpZCA9IHVzZXI/LmlkXG5cbiAgY29uc3QgcmVkaXJlY3RUb0luYWN0aXZpdHlSb3V0ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnN0YXJ0c1dpdGgoYWRtaW4pKSB7XG4gICAgICBjb25zdCByZWRpcmVjdFBhcmFtID0gYD9yZWRpcmVjdD0ke2VuY29kZVVSSUNvbXBvbmVudChcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoYWRtaW4sICcnKSxcbiAgICAgICl9YFxuICAgICAgcHVzaChgJHthZG1pbn0ke2xvZ291dEluYWN0aXZpdHlSb3V0ZX0ke3JlZGlyZWN0UGFyYW19YClcbiAgICB9IGVsc2Uge1xuICAgICAgcHVzaChgJHthZG1pbn0ke2xvZ291dEluYWN0aXZpdHlSb3V0ZX1gKVxuICAgIH1cbiAgICBjbG9zZUFsbE1vZGFscygpXG4gIH0sIFtwdXNoLCBhZG1pbiwgbG9nb3V0SW5hY3Rpdml0eVJvdXRlLCBjbG9zZUFsbE1vZGFsc10pXG5cbiAgY29uc3QgcmV2b2tlVG9rZW5BbmRFeHBpcmUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0VG9rZW5Jbk1lbW9yeSh1bmRlZmluZWQpXG4gICAgc2V0VG9rZW5FeHBpcmF0aW9uKHVuZGVmaW5lZClcbiAgICBzZXRTdHJhdGVneSh1bmRlZmluZWQpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHNldFRva2VuQW5kRXhwaXJhdGlvbiA9IHVzZUNhbGxiYWNrKFxuICAgIChqc29uKSA9PiB7XG4gICAgICBjb25zdCB0b2tlbiA9IGpzb24/LnRva2VuIHx8IGpzb24/LnJlZnJlc2hlZFRva2VuXG4gICAgICBpZiAodG9rZW4gJiYganNvbj8uZXhwKSB7XG4gICAgICAgIHNldFRva2VuSW5NZW1vcnkodG9rZW4pXG4gICAgICAgIHNldFRva2VuRXhwaXJhdGlvbihqc29uLmV4cClcbiAgICAgICAgaWYgKGpzb24uc3RyYXRlZ3kpIHtcbiAgICAgICAgICBzZXRTdHJhdGVneShqc29uLnN0cmF0ZWd5KVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXZva2VUb2tlbkFuZEV4cGlyZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbcmV2b2tlVG9rZW5BbmRFeHBpcmVdLFxuICApXG5cbiAgY29uc3QgcmVmcmVzaENvb2tpZSA9IHVzZUNhbGxiYWNrKFxuICAgIChmb3JjZVJlZnJlc2g/OiBib29sZWFuKSA9PiB7XG4gICAgICBjb25zdCBub3cgPSBNYXRoLnJvdW5kKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMClcbiAgICAgIGNvbnN0IHJlbWFpbmluZ1RpbWUgPSAodHlwZW9mIHRva2VuRXhwaXJhdGlvbiA9PT0gJ251bWJlcicgPyB0b2tlbkV4cGlyYXRpb24gOiAwKSAtIG5vd1xuXG4gICAgICBpZiAoZm9yY2VSZWZyZXNoIHx8ICh0b2tlbkV4cGlyYXRpb24gJiYgcmVtYWluaW5nVGltZSA8IDEyMCkpIHtcbiAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCByZXF1ZXN0cy5wb3N0KGAke3NlcnZlclVSTH0ke2FwaX0vJHt1c2VyU2x1Z30vcmVmcmVzaC10b2tlbmAsIHtcbiAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiBpMThuLmxhbmd1YWdlLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgaWYgKHJlcXVlc3Quc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgICAgY29uc3QganNvbiA9IGF3YWl0IHJlcXVlc3QuanNvbigpXG4gICAgICAgICAgICAgIHNldFVzZXIoanNvbi51c2VyKVxuICAgICAgICAgICAgICBzZXRUb2tlbkFuZEV4cGlyYXRpb24oanNvbilcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldFVzZXIobnVsbClcbiAgICAgICAgICAgICAgcmVkaXJlY3RUb0luYWN0aXZpdHlSb3V0ZSgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdG9hc3QuZXJyb3IoZS5tZXNzYWdlKVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwMClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIHRva2VuRXhwaXJhdGlvbixcbiAgICAgIHNlcnZlclVSTCxcbiAgICAgIGFwaSxcbiAgICAgIHVzZXJTbHVnLFxuICAgICAgaTE4bixcbiAgICAgIHJlZGlyZWN0VG9JbmFjdGl2aXR5Um91dGUsXG4gICAgICBzZXRUb2tlbkFuZEV4cGlyYXRpb24sXG4gICAgXSxcbiAgKVxuXG4gIGNvbnN0IHJlZnJlc2hDb29raWVBc3luYyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChza2lwU2V0VXNlcj86IGJvb2xlYW4pOiBQcm9taXNlPFVzZXI+ID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCByZXF1ZXN0cy5wb3N0KGAke3NlcnZlclVSTH0ke2FwaX0vJHt1c2VyU2x1Z30vcmVmcmVzaC10b2tlbmAsIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChyZXF1ZXN0LnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgY29uc3QganNvbiA9IGF3YWl0IHJlcXVlc3QuanNvbigpXG4gICAgICAgICAgaWYgKCFza2lwU2V0VXNlcikge1xuICAgICAgICAgICAgc2V0VXNlcihqc29uLnVzZXIpXG4gICAgICAgICAgICBzZXRUb2tlbkFuZEV4cGlyYXRpb24oanNvbilcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGpzb24udXNlclxuICAgICAgICB9XG5cbiAgICAgICAgc2V0VXNlcihudWxsKVxuICAgICAgICByZWRpcmVjdFRvSW5hY3Rpdml0eVJvdXRlKClcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdG9hc3QuZXJyb3IoYFJlZnJlc2hpbmcgdG9rZW4gZmFpbGVkOiAke2UubWVzc2FnZX1gKVxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgIH0sXG4gICAgW3NlcnZlclVSTCwgYXBpLCB1c2VyU2x1ZywgaTE4biwgcmVkaXJlY3RUb0luYWN0aXZpdHlSb3V0ZSwgc2V0VG9rZW5BbmRFeHBpcmF0aW9uXSxcbiAgKVxuXG4gIGNvbnN0IGxvZ091dCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRVc2VyKG51bGwpXG4gICAgcmV2b2tlVG9rZW5BbmRFeHBpcmUoKVxuICAgIHJlcXVlc3RzLnBvc3QoYCR7c2VydmVyVVJMfSR7YXBpfS8ke3VzZXJTbHVnfS9sb2dvdXRgKVxuICB9LCBbc2VydmVyVVJMLCBhcGksIHVzZXJTbHVnLCByZXZva2VUb2tlbkFuZEV4cGlyZV0pXG5cbiAgY29uc3QgcmVmcmVzaFBlcm1pc3Npb25zID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGxvY2FsZTogY29kZSxcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCByZXF1ZXN0cy5nZXQoYCR7c2VydmVyVVJMfSR7YXBpfS9hY2Nlc3M/JHtxcy5zdHJpbmdpZnkocGFyYW1zKX1gLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG5cbiAgICAgIGlmIChyZXF1ZXN0LnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgIGNvbnN0IGpzb246IFBlcm1pc3Npb25zID0gYXdhaXQgcmVxdWVzdC5qc29uKClcbiAgICAgICAgc2V0UGVybWlzc2lvbnMoanNvbilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRmV0Y2hpbmcgcGVybWlzc2lvbnMgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgJHtyZXF1ZXN0LnN0YXR1c31gKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRvYXN0LmVycm9yKGBSZWZyZXNoaW5nIHBlcm1pc3Npb25zIGZhaWxlZDogJHtlLm1lc3NhZ2V9YClcbiAgICB9XG4gIH0sIFtzZXJ2ZXJVUkwsIGFwaSwgaTE4biwgY29kZV0pXG5cbiAgY29uc3QgZmV0Y2hGdWxsVXNlciA9IFJlYWN0LnVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IGF3YWl0IHJlcXVlc3RzLmdldChgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7dXNlclNsdWd9L21lYCwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6IGkxOG4ubGFuZ3VhZ2UsXG4gICAgICAgIH0sXG4gICAgICB9KVxuXG4gICAgICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICBjb25zdCBqc29uID0gYXdhaXQgcmVxdWVzdC5qc29uKClcblxuICAgICAgICBpZiAoanNvbj8udXNlcikge1xuICAgICAgICAgIHNldFVzZXIoanNvbi51c2VyKVxuICAgICAgICAgIGlmIChqc29uPy50b2tlbikge1xuICAgICAgICAgICAgc2V0VG9rZW5BbmRFeHBpcmF0aW9uKGpzb24pXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGF1dG9Mb2dpbiAmJiBhdXRvTG9naW4ucHJlZmlsbE9ubHkgIT09IHRydWUpIHtcbiAgICAgICAgICAvLyBhdXRvIGxvZy1pbiB3aXRoIHRoZSBwcm92aWRlZCBhdXRvTG9naW4gY3JlZGVudGlhbHMuIFRoaXMgaXMgdXNlZCBpbiBkZXYgbW9kZVxuICAgICAgICAgIC8vIHNvIHlvdSBkb24ndCBoYXZlIHRvIGxvZyBpbiBvdmVyIGFuZCBvdmVyIGFnYWluXG4gICAgICAgICAgY29uc3QgYXV0b0xvZ2luUmVzdWx0ID0gYXdhaXQgcmVxdWVzdHMucG9zdChgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7dXNlclNsdWd9L2xvZ2luYCwge1xuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICBlbWFpbDogYXV0b0xvZ2luLmVtYWlsLFxuICAgICAgICAgICAgICBwYXNzd29yZDogYXV0b0xvZ2luLnBhc3N3b3JkLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiBpMThuLmxhbmd1YWdlLFxuICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGlmIChhdXRvTG9naW5SZXN1bHQuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgIGNvbnN0IGF1dG9Mb2dpbkpzb24gPSBhd2FpdCBhdXRvTG9naW5SZXN1bHQuanNvbigpXG4gICAgICAgICAgICBzZXRVc2VyKGF1dG9Mb2dpbkpzb24udXNlcilcbiAgICAgICAgICAgIGlmIChhdXRvTG9naW5Kc29uPy50b2tlbikge1xuICAgICAgICAgICAgICBzZXRUb2tlbkFuZEV4cGlyYXRpb24oYXV0b0xvZ2luSnNvbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0VXNlcihudWxsKVxuICAgICAgICAgICAgcmV2b2tlVG9rZW5BbmRFeHBpcmUoKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRVc2VyKG51bGwpXG4gICAgICAgICAgcmV2b2tlVG9rZW5BbmRFeHBpcmUoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdG9hc3QuZXJyb3IoYEZldGNoaW5nIHVzZXIgZmFpbGVkOiAke2UubWVzc2FnZX1gKVxuICAgIH1cbiAgfSwgW3NlcnZlclVSTCwgYXBpLCB1c2VyU2x1ZywgaTE4biwgYXV0b0xvZ2luLCBzZXRUb2tlbkFuZEV4cGlyYXRpb24sIHJldm9rZVRva2VuQW5kRXhwaXJlXSlcblxuICAvLyBPbiBtb3VudCwgZ2V0IHVzZXIgYW5kIHNldFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoRnVsbFVzZXIoKVxuICB9LCBbZmV0Y2hGdWxsVXNlcl0pXG5cbiAgLy8gV2hlbiBsb2NhdGlvbiBjaGFuZ2VzLCByZWZyZXNoIGNvb2tpZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpZCkge1xuICAgICAgcmVmcmVzaENvb2tpZSgpXG4gICAgfVxuICB9LCBbZGVib3VuY2VkTG9jYXRpb25DaGFuZ2UsIHJlZnJlc2hDb29raWUsIGlkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldExhc3RMb2NhdGlvbkNoYW5nZShEYXRlLm5vdygpKVxuICB9LCBbcGF0aG5hbWVdKVxuXG4gIC8vIFdoZW4gdXNlciBjaGFuZ2VzLCBnZXQgbmV3IGFjY2Vzc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpZCkge1xuICAgICAgcmVmcmVzaFBlcm1pc3Npb25zKClcbiAgICB9XG4gIH0sIFtpMThuLCBpZCwgYXBpLCBzZXJ2ZXJVUkwsIHJlZnJlc2hQZXJtaXNzaW9uc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgcmVtaW5kZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+XG4gICAgY29uc3Qgbm93ID0gTWF0aC5yb3VuZChuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApXG4gICAgY29uc3QgcmVtYWluaW5nVGltZSA9IHR5cGVvZiB0b2tlbkV4cGlyYXRpb24gPT09ICdudW1iZXInID8gdG9rZW5FeHBpcmF0aW9uIC0gbm93IDogMFxuXG4gICAgaWYgKHJlbWFpbmluZ1RpbWUgPiAwKSB7XG4gICAgICByZW1pbmRlciA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBvcGVuTW9kYWwoJ3N0YXktbG9nZ2VkLWluJylcbiAgICAgICAgfSxcbiAgICAgICAgTWF0aC5tYXgoTWF0aC5taW4oKHJlbWFpbmluZ1RpbWUgLSA2MCkgKiAxMDAwLCBtYXhUaW1lb3V0VGltZSkpLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAocmVtaW5kZXIpIGNsZWFyVGltZW91dChyZW1pbmRlcilcbiAgICB9XG4gIH0sIFt0b2tlbkV4cGlyYXRpb24sIG9wZW5Nb2RhbF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgZm9yY2VMb2dPdXQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+XG4gICAgY29uc3Qgbm93ID0gTWF0aC5yb3VuZChuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApXG4gICAgY29uc3QgcmVtYWluaW5nVGltZSA9IHR5cGVvZiB0b2tlbkV4cGlyYXRpb24gPT09ICdudW1iZXInID8gdG9rZW5FeHBpcmF0aW9uIC0gbm93IDogMFxuXG4gICAgaWYgKHJlbWFpbmluZ1RpbWUgPiAwKSB7XG4gICAgICBmb3JjZUxvZ091dCA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBzZXRVc2VyKG51bGwpXG4gICAgICAgICAgcmV2b2tlVG9rZW5BbmRFeHBpcmUoKVxuICAgICAgICAgIHJlZGlyZWN0VG9JbmFjdGl2aXR5Um91dGUoKVxuICAgICAgICB9LFxuICAgICAgICBNYXRoLm1heChNYXRoLm1pbihyZW1haW5pbmdUaW1lICogMTAwMCwgbWF4VGltZW91dFRpbWUpLCAwKSxcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGZvcmNlTG9nT3V0KSBjbGVhclRpbWVvdXQoZm9yY2VMb2dPdXQpXG4gICAgfVxuICB9LCBbdG9rZW5FeHBpcmF0aW9uLCBjbG9zZUFsbE1vZGFscywgaTE4biwgcmVkaXJlY3RUb0luYWN0aXZpdHlSb3V0ZSwgcmV2b2tlVG9rZW5BbmRFeHBpcmVdKVxuXG4gIHJldHVybiAoXG4gICAgPENvbnRleHQuUHJvdmlkZXJcbiAgICAgIHZhbHVlPXt7XG4gICAgICAgIGZldGNoRnVsbFVzZXIsXG4gICAgICAgIGxvZ091dCxcbiAgICAgICAgcGVybWlzc2lvbnMsXG4gICAgICAgIHJlZnJlc2hDb29raWUsXG4gICAgICAgIHJlZnJlc2hDb29raWVBc3luYyxcbiAgICAgICAgcmVmcmVzaFBlcm1pc3Npb25zLFxuICAgICAgICBzZXRVc2VyLFxuICAgICAgICBzdHJhdGVneSxcbiAgICAgICAgdG9rZW46IHRva2VuSW5NZW1vcnksXG4gICAgICAgIHRva2VuRXhwaXJhdGlvbixcbiAgICAgICAgdXNlcixcbiAgICAgIH19XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvQ29udGV4dC5Qcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgdXNlQXV0aCA9IDxUID0gVXNlciw+KCk6IEF1dGhDb250ZXh0PFQ+ID0+IHVzZUNvbnRleHQoQ29udGV4dCkgYXMgQXV0aENvbnRleHQ8VD5cbiJdLCJuYW1lcyI6WyJBdXRoUHJvdmlkZXIiLCJ1c2VBdXRoIiwiQ29udGV4dCIsImNyZWF0ZUNvbnRleHQiLCJtYXhUaW1lb3V0VGltZSIsImNoaWxkcmVuIiwidXNlciIsInNldFVzZXIiLCJ1c2VTdGF0ZSIsInRva2VuSW5NZW1vcnkiLCJzZXRUb2tlbkluTWVtb3J5IiwidG9rZW5FeHBpcmF0aW9uIiwic2V0VG9rZW5FeHBpcmF0aW9uIiwic3RyYXRlZ3kiLCJzZXRTdHJhdGVneSIsInBhdGhuYW1lIiwidXNlTG9jYXRpb24iLCJwdXNoIiwidXNlSGlzdG9yeSIsImNvZGUiLCJ1c2VMb2NhbGUiLCJjb25maWciLCJ1c2VDb25maWciLCJhZG1pbiIsImF1dG9Mb2dpbiIsImluYWN0aXZpdHlSb3V0ZSIsImxvZ291dEluYWN0aXZpdHlSb3V0ZSIsInVzZXJTbHVnIiwicm91dGVzIiwiYXBpIiwic2VydmVyVVJMIiwicGVybWlzc2lvbnMiLCJzZXRQZXJtaXNzaW9ucyIsImkxOG4iLCJ1c2VUcmFuc2xhdGlvbiIsImNsb3NlQWxsTW9kYWxzIiwib3Blbk1vZGFsIiwidXNlTW9kYWwiLCJsYXN0TG9jYXRpb25DaGFuZ2UiLCJzZXRMYXN0TG9jYXRpb25DaGFuZ2UiLCJkZWJvdW5jZWRMb2NhdGlvbkNoYW5nZSIsInVzZURlYm91bmNlIiwiaWQiLCJyZWRpcmVjdFRvSW5hY3Rpdml0eVJvdXRlIiwidXNlQ2FsbGJhY2siLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInN0YXJ0c1dpdGgiLCJyZWRpcmVjdFBhcmFtIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwicmVwbGFjZSIsInJldm9rZVRva2VuQW5kRXhwaXJlIiwidW5kZWZpbmVkIiwic2V0VG9rZW5BbmRFeHBpcmF0aW9uIiwianNvbiIsInRva2VuIiwicmVmcmVzaGVkVG9rZW4iLCJleHAiLCJyZWZyZXNoQ29va2llIiwiZm9yY2VSZWZyZXNoIiwibm93IiwiTWF0aCIsInJvdW5kIiwiRGF0ZSIsImdldFRpbWUiLCJyZW1haW5pbmdUaW1lIiwic2V0VGltZW91dCIsInJlcXVlc3QiLCJyZXF1ZXN0cyIsInBvc3QiLCJoZWFkZXJzIiwibGFuZ3VhZ2UiLCJzdGF0dXMiLCJlIiwidG9hc3QiLCJlcnJvciIsIm1lc3NhZ2UiLCJyZWZyZXNoQ29va2llQXN5bmMiLCJza2lwU2V0VXNlciIsImxvZ091dCIsInJlZnJlc2hQZXJtaXNzaW9ucyIsInBhcmFtcyIsImxvY2FsZSIsImdldCIsInFzIiwic3RyaW5naWZ5IiwiRXJyb3IiLCJmZXRjaEZ1bGxVc2VyIiwiUmVhY3QiLCJwcmVmaWxsT25seSIsImF1dG9Mb2dpblJlc3VsdCIsImJvZHkiLCJKU09OIiwiZW1haWwiLCJwYXNzd29yZCIsImF1dG9Mb2dpbkpzb24iLCJ1c2VFZmZlY3QiLCJyZW1pbmRlciIsIm1heCIsIm1pbiIsImNsZWFyVGltZW91dCIsImZvcmNlTG9nT3V0IiwiUHJvdmlkZXIiLCJ2YWx1ZSIsInVzZUNvbnRleHQiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQW1CYUEsWUFBWTtlQUFaQTs7SUFpU0FDLE9BQU87ZUFBUEE7Ozt1QkFwVFk7MkRBQ1Y7K0RBQ29FOzhCQUNwRDtnQ0FDUzsrQkFDbEI7cUJBS0c7b0VBQ0Q7d0JBQ0U7d0JBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTFCLE1BQU1DLHdCQUFVQyxJQUFBQSxvQkFBYSxFQUFDLENBQUM7QUFFL0IsTUFBTUMsaUJBQWlCO0FBRWhCLE1BQU1KLGVBQXdELENBQUMsRUFBRUssUUFBUSxFQUFFO0lBQ2hGLE1BQU0sQ0FBQ0MsTUFBTUMsUUFBUSxHQUFHQyxJQUFBQSxlQUFRO0lBQ2hDLE1BQU0sQ0FBQ0MsZUFBZUMsaUJBQWlCLEdBQUdGLElBQUFBLGVBQVE7SUFDbEQsTUFBTSxDQUFDRyxpQkFBaUJDLG1CQUFtQixHQUFHSixJQUFBQSxlQUFRO0lBQ3RELE1BQU0sQ0FBQ0ssVUFBVUMsWUFBWSxHQUFHTixJQUFBQSxlQUFRO0lBQ3hDLE1BQU0sRUFBRU8sUUFBUSxFQUFFLEdBQUdDLElBQUFBLDJCQUFXO0lB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
@@ -7,7 +7,9 @@ export type AuthContext<T = User> = {
7
7
  refreshCookieAsync: () => Promise<User>;
8
8
  refreshPermissions: () => Promise<void>;
9
9
  setUser: (user: T) => void;
10
+ strategy?: string;
10
11
  token?: string;
12
+ tokenExpiration?: number;
11
13
  user?: T | null;
12
14
  };
13
15
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/utilities/Auth/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAE/D,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,IAAI,IAAI;IAClC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA;CAChB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/utilities/Auth/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAE/D,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,IAAI,IAAI;IAClC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA;CAChB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/admin/components/views/collections/Edit/Upload/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAG/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAgBpC,OAAO,cAAc,CAAA;AAGrB,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAC3C,eAAO,MAAM,eAAe,kBAAkB,CAAA;AAU9C,eAAO,MAAM,aAAa;;;uBAgBzB,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA+JlC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/admin/components/views/collections/Edit/Upload/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAG/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAepC,OAAO,cAAc,CAAA;AAGrB,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAC3C,eAAO,MAAM,eAAe,kBAAkB,CAAA;AAU9C,eAAO,MAAM,aAAa;;;uBAgBzB,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA4JlC,CAAA"}
@@ -33,7 +33,6 @@ const _FileDetails = /*#__PURE__*/ _interop_require_default(require("../../../..
33
33
  const _PreviewSizes = /*#__PURE__*/ _interop_require_default(require("../../../../elements/PreviewSizes"));
34
34
  const _Thumbnail = /*#__PURE__*/ _interop_require_default(require("../../../../elements/Thumbnail"));
35
35
  const _Error = /*#__PURE__*/ _interop_require_default(require("../../../../forms/Error"));
36
- const _context = require("../../../../forms/Form/context");
37
36
  const _reduceFieldsToValues = /*#__PURE__*/ _interop_require_default(require("../../../../forms/Form/reduceFieldsToValues"));
38
37
  const _shared = require("../../../../forms/field-types/shared");
39
38
  const _useField = /*#__PURE__*/ _interop_require_default(require("../../../../forms/useField"));
@@ -107,7 +106,6 @@ const UploadActions = ({ canEdit, showSizePreviews })=>{
107
106
  }, t('upload:editImage')));
108
107
  };
109
108
  const Upload = (props)=>{
110
- const submitted = (0, _context.useFormSubmitted)();
111
109
  const { collection, internalState, onChange, updatedAt } = props;
112
110
  const [replacingFile, setReplacingFile] = (0, _react.useState)(false);
113
111
  const [fileSrc, setFileSrc] = (0, _react.useState)(null);
@@ -180,7 +178,6 @@ const Upload = (props)=>{
180
178
  const focalPointEnabled = collection?.upload?.focalPoint === true;
181
179
  const { collection: { upload: { crop: showCrop = true, focalPoint = true } } = {} } = props;
182
180
  const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled);
183
- const lastSubmittedTime = submitted ? new Date().toISOString() : null;
184
181
  return /*#__PURE__*/ _react.default.createElement("div", {
185
182
  className: [
186
183
  _shared.fieldBaseClass,
@@ -195,7 +192,7 @@ const Upload = (props)=>{
195
192
  doc: doc,
196
193
  handleRemove: canRemoveUpload ? handleFileRemoval : undefined,
197
194
  hasImageSizes: hasImageSizes,
198
- imageCacheTag: lastSubmittedTime
195
+ imageCacheTag: doc.updatedAt
199
196
  }), (!doc.filename || replacingFile) && /*#__PURE__*/ _react.default.createElement("div", {
200
197
  className: `${baseClass}__upload`
201
198
  }, !value && /*#__PURE__*/ _react.default.createElement(_Dropzone.Dropzone, {
@@ -231,7 +228,7 @@ const Upload = (props)=>{
231
228
  doc: doc || undefined,
232
229
  fileName: value?.name || doc?.filename,
233
230
  fileSrc: fileSrc || doc?.url,
234
- imageCacheTag: lastSubmittedTime,
231
+ imageCacheTag: doc.updatedAt,
235
232
  showCrop: showCrop,
236
233
  showFocalPoint: showFocalPoint
237
234
  })), doc && hasImageSizes && /*#__PURE__*/ _react.default.createElement(_Drawer.Drawer, {
@@ -243,8 +240,9 @@ const Upload = (props)=>{
243
240
  })
244
241
  }, /*#__PURE__*/ _react.default.createElement(_PreviewSizes.default, {
245
242
  collection: collection,
246
- doc: doc
243
+ doc: doc,
244
+ imageCacheTag: doc.updatedAt
247
245
  })));
248
246
  };
249
247
 
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL2NvbGxlY3Rpb25zL0VkaXQvVXBsb2FkL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcblxuaW1wb3J0IHR5cGUgeyBQcm9wcyB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCBpc0ltYWdlIGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3VwbG9hZHMvaXNJbWFnZSdcbmltcG9ydCBCdXR0b24gZnJvbSAnLi4vLi4vLi4vLi4vZWxlbWVudHMvQnV0dG9uJ1xuaW1wb3J0IHsgRHJhd2VyLCBEcmF3ZXJUb2dnbGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vZWxlbWVudHMvRHJhd2VyJ1xuaW1wb3J0IHsgRHJvcHpvbmUgfSBmcm9tICcuLi8uLi8uLi8uLi9lbGVtZW50cy9Ecm9wem9uZSdcbmltcG9ydCB7IEVkaXRVcGxvYWQgfSBmcm9tICcuLi8uLi8uLi8uLi9lbGVtZW50cy9FZGl0VXBsb2FkJ1xuaW1wb3J0IEZpbGVEZXRhaWxzIGZyb20gJy4uLy4uLy4uLy4uL2VsZW1lbnRzL0ZpbGVEZXRhaWxzJ1xuaW1wb3J0IFByZXZpZXdTaXplcyBmcm9tICcuLi8uLi8uLi8uLi9lbGVtZW50cy9QcmV2aWV3U2l6ZXMnXG5pbXBvcnQgVGh1bWJuYWlsIGZyb20gJy4uLy4uLy4uLy4uL2VsZW1lbnRzL1RodW1ibmFpbCdcbmltcG9ydCBFcnJvciBmcm9tICcuLi8uLi8uLi8uLi9mb3Jtcy9FcnJvcidcbmltcG9ydCB7IHVzZUZvcm1TdWJtaXR0ZWQgfSBmcm9tICcuLi8uLi8uLi8uLi9mb3Jtcy9Gb3JtL2NvbnRleHQnXG5pbXBvcnQgcmVkdWNlRmllbGRzVG9WYWx1ZXMgZnJvbSAnLi4vLi4vLi4vLi4vZm9ybXMvRm9ybS9yZWR1Y2VGaWVsZHNUb1ZhbHVlcydcbmltcG9ydCB7IGZpZWxkQmFzZUNsYXNzIH0gZnJvbSAnLi4vLi4vLi4vLi4vZm9ybXMvZmllbGQtdHlwZXMvc2hhcmVkJ1xuaW1wb3J0IHVzZUZpZWxkIGZyb20gJy4uLy4uLy4uLy4uL2Zvcm1zL3VzZUZpZWxkJ1xuaW1wb3J0IHsgdXNlRG9jdW1lbnRJbmZvIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0aWVzL0RvY3VtZW50SW5mbydcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5jb25zdCBiYXNlQ2xhc3MgPSAnZmlsZS1maWVsZCdcbmV4cG9ydCBjb25zdCBlZGl0RHJhd2VyU2x1ZyA9ICdlZGl0LXVwbG9hZCdcbmV4cG9ydCBjb25zdCBzaXplUHJldmlld1NsdWcgPSAncHJldmlldy1zaXplcydcblxuY29uc3QgdmFsaWRhdGUgPSAodmFsdWUpID0+IHtcbiAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuICdBIGZpbGUgaXMgcmVxdWlyZWQuJ1xuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IFVwbG9hZEFjdGlvbnMgPSAoeyBjYW5FZGl0LCBzaG93U2l6ZVByZXZpZXdzIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigndXBsb2FkJylcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZmlsZS1tdXRhdGlvbmB9PlxuICAgICAge3Nob3dTaXplUHJldmlld3MgJiYgKFxuICAgICAgICA8RHJhd2VyVG9nZ2xlciBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3ByZXZpZXdTaXplc2B9IHNsdWc9e3NpemVQcmV2aWV3U2x1Z30+XG4gICAgICAgICAge3QoJ3VwbG9hZDpwcmV2aWV3U2l6ZXMnKX1cbiAgICAgICAgPC9EcmF3ZXJUb2dnbGVyPlxuICAgICAgKX1cbiAgICAgIHtjYW5FZGl0ICYmIChcbiAgICAgICAgPERyYXdlclRvZ2dsZXIgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19lZGl0YH0gc2x1Zz17ZWRpdERyYXdlclNsdWd9PlxuICAgICAgICAgIHt0KCd1cGxvYWQ6ZWRpdEltYWdlJyl9XG4gICAgICAgIDwvRHJhd2VyVG9nZ2xlcj5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IFVwbG9hZDogUmVhY3QuRkM8UHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHN1Ym1pdHRlZCA9IHVzZUZvcm1TdWJtaXR0ZWQoKVxuICBjb25zdCB7IGNvbGxlY3Rpb24sIGludGVybmFsU3RhdGUsIG9uQ2hhbmdlLCB1cGRhdGVkQXQgfSA9IHByb3BzXG4gIGNvbnN0IFtyZXBsYWNpbmdGaWxlLCBzZXRSZXBsYWNpbmdGaWxlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZmlsZVNyYywgc2V0RmlsZVNyY10gPSB1c2VTdGF0ZTxudWxsIHwgc3RyaW5nPihudWxsKVxuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFsndXBsb2FkJywgJ2dlbmVyYWwnXSlcbiAgY29uc3QgW2RvYywgc2V0RG9jXSA9IHVzZVN0YXRlKHJlZHVjZUZpZWxkc1RvVmFsdWVzKGludGVybmFsU3RhdGUgfHwge30sIHRydWUpKVxuICBjb25zdCB7IGRvY1Blcm1pc3Npb25zIH0gPSB1c2VEb2N1bWVudEluZm8oKVxuICBjb25zdCB7IGVycm9yTWVzc2FnZSwgc2V0VmFsdWUsIHNob3dFcnJvciwgdmFsdWUgfSA9IHVzZUZpZWxkPEZpbGU+KHtcbiAgICBwYXRoOiAnZmlsZScsXG4gICAgdmFsaWRhdGUsXG4gIH0pXG5cbiAgY29uc3QgaGFuZGxlRmlsZU5hbWVDaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCB1cGRhdGVkRmlsZU5hbWUgPSBlLnRhcmdldC52YWx1ZVxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgY29uc3QgZmlsZVZhbHVlID0gdmFsdWVcbiAgICAgIC8vIENyZWF0aW5nIGEgbmV3IEZpbGUgb2JqZWN0IHdpdGggdXBkYXRlZCBwcm9wZXJ0aWVzXG4gICAgICBjb25zdCBuZXdGaWxlID0gbmV3IEZpbGUoW2ZpbGVWYWx1ZV0sIHVwZGF0ZWRGaWxlTmFtZSwgeyB0eXBlOiBmaWxlVmFsdWUudHlwZSB9KVxuICAgICAgc2V0VmFsdWUobmV3RmlsZSkgLy8gVXBkYXRpbmcgdGhlIHN0YXRlIHdpdGggdGhlIG5ldyBGaWxlIG9iamVjdFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUZpbGVTZWxlY3Rpb24gPSBSZWFjdC51c2VDYWxsYmFjayhcbiAgICAoZmlsZXM6IEZpbGVMaXN0KSA9PiB7XG4gICAgICBjb25zdCBmaWxlVG9VcGxvYWQgPSBmaWxlcz8uWzBdXG4gICAgICBzZXRWYWx1ZShmaWxlVG9VcGxvYWQpXG4gICAgfSxcbiAgICBbc2V0VmFsdWVdLFxuICApXG5cbiAgY29uc3QgaGFuZGxlRmlsZVJlbW92YWwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0UmVwbGFjaW5nRmlsZSh0cnVlKVxuICAgIHNldFZhbHVlKG51bGwpXG4gICAgc2V0RmlsZVNyYygnJylcbiAgfSwgW3NldFZhbHVlXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldERvYyhyZWR1Y2VGaWVsZHNUb1ZhbHVlcyhpbnRlcm5hbFN0YXRlIHx8IHt9LCB0cnVlKSlcbiAgICBzZXRSZXBsYWNpbmdGaWxlKGZhbHNlKVxuICB9LCBbaW50ZXJuYWxTdGF0ZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGaWxlKSB7XG4gICAgICBjb25zdCBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuICAgICAgZmlsZVJlYWRlci5vbmxvYWQgPSAoZSkgPT4ge1xuICAgICAgICBjb25zdCBpbWdTcmMgPSBlLnRhcmdldD8ucmVzdWx0XG5cbiAgICAgICAgaWYgKHR5cGVvZiBpbWdTcmMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgc2V0RmlsZVNyYyhpbWdTcmMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZpbGVSZWFkZXIucmVhZEFzRGF0YVVSTCh2YWx1ZSlcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9uQ2hhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBvbkNoYW5nZSh2YWx1ZSlcbiAgICB9XG4gIH0sIFt2YWx1ZSwgb25DaGFuZ2UsIHVwZGF0ZWRBdF0pXG5cbiAgY29uc3QgY2FuUmVtb3ZlVXBsb2FkID1cbiAgICBkb2NQZXJtaXNzaW9ucz8udXBkYXRlPy5wZXJtaXNzaW9uICYmXG4gICAgJ2RlbGV0ZScgaW4gZG9jUGVybWlzc2lvbnMgJiZcbiAgICBkb2NQZXJtaXNzaW9ucz8uZGVsZXRlPy5wZXJtaXNzaW9uXG5cbiAgY29uc3QgaGFzSW1hZ2VTaXplcyA9IGNvbGxlY3Rpb24/LnVwbG9hZD8uaW1hZ2VTaXplcz8ubGVuZ3RoID4gMFxuICBjb25zdCBoYXNSZXNpemVPcHRpb25zID0gQm9vbGVhbihjb2xsZWN0aW9uPy51cGxvYWQ/LnJlc2l6ZU9wdGlvbnMpXG4gIC8vIEV4cGxpY2l0bHkgY2hlY2sgaWYgc2V0IHRvIHRydWUsIGRlZmF1bHQgaXMgdW5kZWZpbmVkXG4gIGNvbnN0IGZvY2FsUG9pbnRFbmFibGVkID0gY29sbGVjdGlvbj8udXBsb2FkPy5mb2NhbFBvaW50ID09PSB0cnVlXG5cbiAgY29uc3QgeyBjb2xsZWN0aW9uOiB7IHVwbG9hZDogeyBjcm9wOiBzaG93Q3JvcCA9IHRydWUsIGZvY2FsUG9pbnQgPSB0cnVlIH0gfSA9IHt9IH0gPSBwcm9wc1xuXG4gIGNvbnN0IHNob3dGb2NhbFBvaW50ID0gZm9jYWxQb2ludCAmJiAoaGFzSW1hZ2VTaXplcyB8fCBoYXNSZXNpemVPcHRpb25zIHx8IGZvY2FsUG9pbnRFbmFibGVkKVxuXG4gIGNvbnN0IGxhc3RTdWJtaXR0ZWRUaW1lID0gc3VibWl0dGVkID8gbmV3IERhdGUoKS50b0lTT1N0cmluZygpIDogbnVsbFxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e1tmaWVsZEJhc2VDbGFzcywgYmFzZUNsYXNzXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpfT5cbiAgICAgIDxFcnJvciBtZXNzYWdlPXtlcnJvck1lc3NhZ2V9IHNob3dFcnJvcj17c2hvd0Vycm9yfSAvPlxuXG4gICAgICB7ZG9jLmZpbGVuYW1lICYmICFyZXBsYWNpbmdGaWxlICYmIChcbiAgICAgICAgPEZpbGVEZXRhaWxzXG4gICAgICAgICAgY2FuRWRpdD17c2hvd0Nyb3AgfHwgc2hvd0ZvY2FsUG9pbnR9XG4gICAgICAgICAgY29sbGVjdGlvbj17Y29sbGVjdGlvbn1cbiAgICAgICAgICBkb2M9e2RvY31cbiAgICAgICAgICBoYW5kbGVSZW1vdmU9e2NhblJlbW92ZVVwbG9hZCA/IGhhbmRsZUZpbGVSZW1vdmFsIDogdW5kZWZpbmVkfVxuICAgICAgICAgIGhhc0ltYWdlU2l6ZXM9e2hhc0ltYWdlU2l6ZXN9XG4gICAgICAgICAgaW1hZ2VDYWNoZVRhZz17bGFzdFN1Ym1pdHRlZFRpbWV9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7KCFkb2MuZmlsZW5hbWUgfHwgcmVwbGFjaW5nRmlsZSkgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fdXBsb2FkYH0+XG4gICAgICAgICAgeyF2YWx1ZSAmJiAoXG4gICAgICAgICAgICA8RHJvcHpvbmVcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19kcm9wem9uZWB9XG4gICAgICAgICAgICAgIG1pbWVUeXBlcz17Y29sbGVjdGlvbj8udXBsb2FkPy5taW1lVHlwZXN9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVGaWxlU2VsZWN0aW9ufVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuXG4gICAgICAgICAge3ZhbHVlICYmIChcbiAgICAgICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3RodW1ibmFpbC13cmFwYH0+XG4gICAgICAgICAgICAgICAgPFRodW1ibmFpbCBmaWxlU3JjPXtpc0ltYWdlKHZhbHVlLnR5cGUpID8gZmlsZVNyYyA6IG51bGx9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZmlsZS1hZGp1c3RtZW50c2B9PlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19maWxlbmFtZWB9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlRmlsZU5hbWVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICB2YWx1ZT17dmFsdWUubmFtZX1cbiAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAge2lzSW1hZ2UodmFsdWUudHlwZSkgJiYgdmFsdWUudHlwZSAhPT0gJ2ltYWdlL3N2Zyt4bWwnICYmIChcbiAgICAgICAgICAgICAgICAgIDxVcGxvYWRBY3Rpb25zXG4gICAgICAgICAgICAgICAgICAgIGNhbkVkaXQ9e3Nob3dDcm9wIHx8IHNob3dGb2NhbFBvaW50fVxuICAgICAgICAgICAgICAgICAgICBzaG93U2l6ZVByZXZpZXdzPXtoYXNJbWFnZVNpemVzICYmIGRvYy5maWxlbmFtZSAmJiAhcmVwbGFjaW5nRmlsZX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBidXR0b25TdHlsZT1cImljb24tbGFiZWxcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fcmVtb3ZlYH1cbiAgICAgICAgICAgICAgICBpY29uPVwieFwiXG4gICAgICAgICAgICAgICAgaWNvblN0eWxlPVwid2l0aC1ib3JkZXJcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUZpbGVSZW1vdmFsfVxuICAgICAgICAgICAgICAgIHJvdW5kXG4gICAgICAgICAgICAgICAgdG9vbHRpcD17dCgnZ2VuZXJhbDpjYW5jZWwnKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuXG4gICAgICB7KHZhbHVlIHx8IGRvYy5maWxlbmFtZSkgJiYgKFxuICAgICAgICA8RHJhd2VyIGhlYWRlcj17bnVsbH0gc2x1Zz17ZWRpdERyYXdlclNsdWd9PlxuICAgICAgICAgIDxFZGl0VXBsb2FkXG4gICAgICAgICAgICBkb2M9e2RvYyB8fCB1bmRlZmluZWR9XG4gICAgICAgICAgICBmaWxlTmFtZT17dmFsdWU/Lm5hbWUgfHwgZG9jPy5maWxlbmFtZX1cbiAgICAgICAgICAgIGZpbGVTcmM9e2ZpbGVTcmMgfHwgZG9jPy51cmx9XG4gICAgICAgICAgICBpbWFnZUNhY2hlVGFnPXtsYXN0U3VibWl0dGVkVGltZX1cbiAgICAgICAgICAgIHNob3dDcm9wPXtzaG93Q3JvcH1cbiAgICAgICAgICAgIHNob3dGb2NhbFBvaW50PXtzaG93Rm9jYWxQb2ludH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0RyYXdlcj5cbiAgICAgICl9XG4gICAgICB7ZG9jICYmIGhhc0ltYWdlU2l6ZXMgJiYgKFxuICAgICAgICA8RHJhd2VyXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19wcmV2aWV3RHJhd2VyYH1cbiAgICAgICAgICBob3ZlclRpdGxlXG4gICAgICAgICAgc2x1Zz17c2l6ZVByZXZpZXdTbHVnfVxuICAgICAgICAgIHRpdGxlPXt0KCd1cGxvYWQ6c2l6ZXNGb3InLCB7IGxhYmVsOiBkb2M/LmZpbGVuYW1lIH0pfVxuICAgICAgICA+XG4gICAgICAgICAgPFByZXZpZXdTaXplcyBjb2xsZWN0aW9uPXtjb2xsZWN0aW9ufSBkb2M9e2RvY30gLz5cbiAgICAgICAgPC9EcmF3ZXI+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApXG59XG4iXSwibmFtZXMiOlsiVXBsb2FkIiwiVXBsb2FkQWN0aW9ucyIsImVkaXREcmF3ZXJTbHVnIiwic2l6ZVByZXZpZXdTbHVnIiwiYmFzZUNsYXNzIiwidmFsaWRhdGUiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsImNhbkVkaXQiLCJzaG93U2l6ZVByZXZpZXdzIiwidCIsInVzZVRyYW5zbGF0aW9uIiwiZGl2IiwiY2xhc3NOYW1lIiwiRHJhd2VyVG9nZ2xlciIsInNsdWciLCJwcm9wcyIsInN1Ym1pdHRlZCIsInVzZUZvcm1TdWJtaXR0ZWQiLCJjb2xsZWN0aW9uIiwiaW50ZXJuYWxTdGF0ZSIsIm9uQ2hhbmdlIiwidXBkYXRlZEF0IiwicmVwbGFjaW5nRmlsZSIsInNldFJlcGxhY2luZ0ZpbGUiLCJ1c2VTdGF0ZSIsImZpbGVTcmMiLCJzZXRGaWxlU3JjIiwiZG9jIiwic2V0RG9jIiwicmVkdWNlRmllbGRzVG9WYWx1ZXMiLCJkb2NQZXJtaXNzaW9ucyIsInVzZURvY3VtZW50SW5mbyIsImVycm9yTWVzc2FnZSIsInNldFZhbHVlIiwic2hvd0Vycm9yIiwidXNlRmllbGQiLCJwYXRoIiwiaGFuZGxlRmlsZU5hbWVDaGFuZ2UiLCJlIiwidXBkYXRlZEZpbGVOYW1lIiwidGFyZ2V0IiwiZmlsZVZhbHVlIiwibmV3RmlsZSIsIkZpbGUiLCJ0eXBlIiwiaGFuZGxlRmlsZVNlbGVjdGlvbiIsIlJlYWN0IiwidXNlQ2FsbGJhY2siLCJmaWxlcyIsImZpbGVUb1VwbG9hZCIsImhhbmRsZUZpbGVSZW1vdmFsIiwidXNlRWZmZWN0IiwiZmlsZVJlYWRlciIsIkZpbGVSZWFkZXIiLCJvbmxvYWQiLCJpbWdTcmMiLCJyZXN1bHQiLCJyZWFkQXNEYXRhVVJMIiwiY2FuUmVtb3ZlVXBsb2FkIiwidXBkYXRlIiwicGVybWlzc2lvbiIsImRlbGV0ZSIsImhhc0ltYWdlU2l6ZXMiLCJ1cGxvYWQiLCJpbWFnZVNpemVzIiwibGVuZ3RoIiwiaGFzUmVzaXplT3B0aW9ucyIsIkJvb2xlYW4iLCJyZXNpemVPcHRpb25zIiwiZm9jYWxQb2ludEVuYWJsZWQiLCJmb2NhbFBvaW50IiwiY3JvcCIsInNob3dDcm9wIiwic2hvd0ZvY2FsUG9pbnQiLCJsYXN0U3VibWl0dGVkVGltZSIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsImZpZWxkQmFzZUNsYXNzIiwiZmlsdGVyIiwiam9pbiIsIkVycm9yIiwibWVzc2FnZSIsImZpbGVuYW1lIiwiRmlsZURldGFpbHMiLCJoYW5kbGVSZW1vdmUiLCJpbWFnZUNhY2hlVGFnIiwiRHJvcHpvbmUiLCJtaW1lVHlwZXMiLCJGcmFnbWVudCIsIlRodW1ibmFpbCIsImlzSW1hZ2UiLCJpbnB1dCIsIm5hbWUiLCJCdXR0b24iLCJidXR0b25TdHlsZSIsImljb24iLCJpY29uU3R5bGUiLCJvbkNsaWNrIiwicm91bmQiLCJ0b29sdGlwIiwiRHJhd2VyIiwiaGVhZGVyIiwiRWRpdFVwbG9hZCIsImZpbGVOYW1lIiwidXJsIiwiaG92ZXJUaXRsZSIsInRpdGxlIiwibGFiZWwiLCJQcmV2aWV3U2l6ZXMiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7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
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL2NvbGxlY3Rpb25zL0VkaXQvVXBsb2FkL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcblxuaW1wb3J0IHR5cGUgeyBQcm9wcyB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCBpc0ltYWdlIGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3VwbG9hZHMvaXNJbWFnZSdcbmltcG9ydCBCdXR0b24gZnJvbSAnLi4vLi4vLi4vLi4vZWxlbWVudHMvQnV0dG9uJ1xuaW1wb3J0IHsgRHJhd2VyLCBEcmF3ZXJUb2dnbGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vZWxlbWVudHMvRHJhd2VyJ1xuaW1wb3J0IHsgRHJvcHpvbmUgfSBmcm9tICcuLi8uLi8uLi8uLi9lbGVtZW50cy9Ecm9wem9uZSdcbmltcG9ydCB7IEVkaXRVcGxvYWQgfSBmcm9tICcuLi8uLi8uLi8uLi9lbGVtZW50cy9FZGl0VXBsb2FkJ1xuaW1wb3J0IEZpbGVEZXRhaWxzIGZyb20gJy4uLy4uLy4uLy4uL2VsZW1lbnRzL0ZpbGVEZXRhaWxzJ1xuaW1wb3J0IFByZXZpZXdTaXplcyBmcm9tICcuLi8uLi8uLi8uLi9lbGVtZW50cy9QcmV2aWV3U2l6ZXMnXG5pbXBvcnQgVGh1bWJuYWlsIGZyb20gJy4uLy4uLy4uLy4uL2VsZW1lbnRzL1RodW1ibmFpbCdcbmltcG9ydCBFcnJvciBmcm9tICcuLi8uLi8uLi8uLi9mb3Jtcy9FcnJvcidcbmltcG9ydCByZWR1Y2VGaWVsZHNUb1ZhbHVlcyBmcm9tICcuLi8uLi8uLi8uLi9mb3Jtcy9Gb3JtL3JlZHVjZUZpZWxkc1RvVmFsdWVzJ1xuaW1wb3J0IHsgZmllbGRCYXNlQ2xhc3MgfSBmcm9tICcuLi8uLi8uLi8uLi9mb3Jtcy9maWVsZC10eXBlcy9zaGFyZWQnXG5pbXBvcnQgdXNlRmllbGQgZnJvbSAnLi4vLi4vLi4vLi4vZm9ybXMvdXNlRmllbGQnXG5pbXBvcnQgeyB1c2VEb2N1bWVudEluZm8gfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvRG9jdW1lbnRJbmZvJ1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnXG5cbmNvbnN0IGJhc2VDbGFzcyA9ICdmaWxlLWZpZWxkJ1xuZXhwb3J0IGNvbnN0IGVkaXREcmF3ZXJTbHVnID0gJ2VkaXQtdXBsb2FkJ1xuZXhwb3J0IGNvbnN0IHNpemVQcmV2aWV3U2x1ZyA9ICdwcmV2aWV3LXNpemVzJ1xuXG5jb25zdCB2YWxpZGF0ZSA9ICh2YWx1ZSkgPT4ge1xuICBpZiAoIXZhbHVlICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gJ0EgZmlsZSBpcyByZXF1aXJlZC4nXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgVXBsb2FkQWN0aW9ucyA9ICh7IGNhbkVkaXQsIHNob3dTaXplUHJldmlld3MgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCd1cGxvYWQnKVxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19maWxlLW11dGF0aW9uYH0+XG4gICAgICB7c2hvd1NpemVQcmV2aWV3cyAmJiAoXG4gICAgICAgIDxEcmF3ZXJUb2dnbGVyIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fcHJldmlld1NpemVzYH0gc2x1Zz17c2l6ZVByZXZpZXdTbHVnfT5cbiAgICAgICAgICB7dCgndXBsb2FkOnByZXZpZXdTaXplcycpfVxuICAgICAgICA8L0RyYXdlclRvZ2dsZXI+XG4gICAgICApfVxuICAgICAge2NhbkVkaXQgJiYgKFxuICAgICAgICA8RHJhd2VyVG9nZ2xlciBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2VkaXRgfSBzbHVnPXtlZGl0RHJhd2VyU2x1Z30+XG4gICAgICAgICAge3QoJ3VwbG9hZDplZGl0SW1hZ2UnKX1cbiAgICAgICAgPC9EcmF3ZXJUb2dnbGVyPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgVXBsb2FkOiBSZWFjdC5GQzxQcm9wcz4gPSAocHJvcHMpID0+IHtcbiAgY29uc3QgeyBjb2xsZWN0aW9uLCBpbnRlcm5hbFN0YXRlLCBvbkNoYW5nZSwgdXBkYXRlZEF0IH0gPSBwcm9wc1xuICBjb25zdCBbcmVwbGFjaW5nRmlsZSwgc2V0UmVwbGFjaW5nRmlsZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2ZpbGVTcmMsIHNldEZpbGVTcmNdID0gdXNlU3RhdGU8bnVsbCB8IHN0cmluZz4obnVsbClcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbJ3VwbG9hZCcsICdnZW5lcmFsJ10pXG4gIGNvbnN0IFtkb2MsIHNldERvY10gPSB1c2VTdGF0ZShyZWR1Y2VGaWVsZHNUb1ZhbHVlcyhpbnRlcm5hbFN0YXRlIHx8IHt9LCB0cnVlKSlcbiAgY29uc3QgeyBkb2NQZXJtaXNzaW9ucyB9ID0gdXNlRG9jdW1lbnRJbmZvKClcbiAgY29uc3QgeyBlcnJvck1lc3NhZ2UsIHNldFZhbHVlLCBzaG93RXJyb3IsIHZhbHVlIH0gPSB1c2VGaWVsZDxGaWxlPih7XG4gICAgcGF0aDogJ2ZpbGUnLFxuICAgIHZhbGlkYXRlLFxuICB9KVxuXG4gIGNvbnN0IGhhbmRsZUZpbGVOYW1lQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgdXBkYXRlZEZpbGVOYW1lID0gZS50YXJnZXQudmFsdWVcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGNvbnN0IGZpbGVWYWx1ZSA9IHZhbHVlXG4gICAgICAvLyBDcmVhdGluZyBhIG5ldyBGaWxlIG9iamVjdCB3aXRoIHVwZGF0ZWQgcHJvcGVydGllc1xuICAgICAgY29uc3QgbmV3RmlsZSA9IG5ldyBGaWxlKFtmaWxlVmFsdWVdLCB1cGRhdGVkRmlsZU5hbWUsIHsgdHlwZTogZmlsZVZhbHVlLnR5cGUgfSlcbiAgICAgIHNldFZhbHVlKG5ld0ZpbGUpIC8vIFVwZGF0aW5nIHRoZSBzdGF0ZSB3aXRoIHRoZSBuZXcgRmlsZSBvYmplY3RcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVGaWxlU2VsZWN0aW9uID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKGZpbGVzOiBGaWxlTGlzdCkgPT4ge1xuICAgICAgY29uc3QgZmlsZVRvVXBsb2FkID0gZmlsZXM/LlswXVxuICAgICAgc2V0VmFsdWUoZmlsZVRvVXBsb2FkKVxuICAgIH0sXG4gICAgW3NldFZhbHVlXSxcbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUZpbGVSZW1vdmFsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFJlcGxhY2luZ0ZpbGUodHJ1ZSlcbiAgICBzZXRWYWx1ZShudWxsKVxuICAgIHNldEZpbGVTcmMoJycpXG4gIH0sIFtzZXRWYWx1ZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXREb2MocmVkdWNlRmllbGRzVG9WYWx1ZXMoaW50ZXJuYWxTdGF0ZSB8fCB7fSwgdHJ1ZSkpXG4gICAgc2V0UmVwbGFjaW5nRmlsZShmYWxzZSlcbiAgfSwgW2ludGVybmFsU3RhdGVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRmlsZSkge1xuICAgICAgY29uc3QgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgICAgIGZpbGVSZWFkZXIub25sb2FkID0gKGUpID0+IHtcbiAgICAgICAgY29uc3QgaW1nU3JjID0gZS50YXJnZXQ/LnJlc3VsdFxuXG4gICAgICAgIGlmICh0eXBlb2YgaW1nU3JjID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHNldEZpbGVTcmMoaW1nU3JjKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmaWxlUmVhZGVyLnJlYWRBc0RhdGFVUkwodmFsdWUpXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvbkNoYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgb25DaGFuZ2UodmFsdWUpXG4gICAgfVxuICB9LCBbdmFsdWUsIG9uQ2hhbmdlLCB1cGRhdGVkQXRdKVxuXG4gIGNvbnN0IGNhblJlbW92ZVVwbG9hZCA9XG4gICAgZG9jUGVybWlzc2lvbnM/LnVwZGF0ZT8ucGVybWlzc2lvbiAmJlxuICAgICdkZWxldGUnIGluIGRvY1Blcm1pc3Npb25zICYmXG4gICAgZG9jUGVybWlzc2lvbnM/LmRlbGV0ZT8ucGVybWlzc2lvblxuXG4gIGNvbnN0IGhhc0ltYWdlU2l6ZXMgPSBjb2xsZWN0aW9uPy51cGxvYWQ/LmltYWdlU2l6ZXM/Lmxlbmd0aCA+IDBcbiAgY29uc3QgaGFzUmVzaXplT3B0aW9ucyA9IEJvb2xlYW4oY29sbGVjdGlvbj8udXBsb2FkPy5yZXNpemVPcHRpb25zKVxuICAvLyBFeHBsaWNpdGx5IGNoZWNrIGlmIHNldCB0byB0cnVlLCBkZWZhdWx0IGlzIHVuZGVmaW5lZFxuICBjb25zdCBmb2NhbFBvaW50RW5hYmxlZCA9IGNvbGxlY3Rpb24/LnVwbG9hZD8uZm9jYWxQb2ludCA9PT0gdHJ1ZVxuXG4gIGNvbnN0IHsgY29sbGVjdGlvbjogeyB1cGxvYWQ6IHsgY3JvcDogc2hvd0Nyb3AgPSB0cnVlLCBmb2NhbFBvaW50ID0gdHJ1ZSB9IH0gPSB7fSB9ID0gcHJvcHNcblxuICBjb25zdCBzaG93Rm9jYWxQb2ludCA9IGZvY2FsUG9pbnQgJiYgKGhhc0ltYWdlU2l6ZXMgfHwgaGFzUmVzaXplT3B0aW9ucyB8fCBmb2NhbFBvaW50RW5hYmxlZClcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtbZmllbGRCYXNlQ2xhc3MsIGJhc2VDbGFzc10uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKX0+XG4gICAgICA8RXJyb3IgbWVzc2FnZT17ZXJyb3JNZXNzYWdlfSBzaG93RXJyb3I9e3Nob3dFcnJvcn0gLz5cblxuICAgICAge2RvYy5maWxlbmFtZSAmJiAhcmVwbGFjaW5nRmlsZSAmJiAoXG4gICAgICAgIDxGaWxlRGV0YWlsc1xuICAgICAgICAgIGNhbkVkaXQ9e3Nob3dDcm9wIHx8IHNob3dGb2NhbFBvaW50fVxuICAgICAgICAgIGNvbGxlY3Rpb249e2NvbGxlY3Rpb259XG4gICAgICAgICAgZG9jPXtkb2N9XG4gICAgICAgICAgaGFuZGxlUmVtb3ZlPXtjYW5SZW1vdmVVcGxvYWQgPyBoYW5kbGVGaWxlUmVtb3ZhbCA6IHVuZGVmaW5lZH1cbiAgICAgICAgICBoYXNJbWFnZVNpemVzPXtoYXNJbWFnZVNpemVzfVxuICAgICAgICAgIGltYWdlQ2FjaGVUYWc9e2RvYy51cGRhdGVkQXR9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7KCFkb2MuZmlsZW5hbWUgfHwgcmVwbGFjaW5nRmlsZSkgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fdXBsb2FkYH0+XG4gICAgICAgICAgeyF2YWx1ZSAmJiAoXG4gICAgICAgICAgICA8RHJvcHpvbmVcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19kcm9wem9uZWB9XG4gICAgICAgICAgICAgIG1pbWVUeXBlcz17Y29sbGVjdGlvbj8udXBsb2FkPy5taW1lVHlwZXN9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVGaWxlU2VsZWN0aW9ufVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuXG4gICAgICAgICAge3ZhbHVlICYmIChcbiAgICAgICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3RodW1ibmFpbC13cmFwYH0+XG4gICAgICAgICAgICAgICAgPFRodW1ibmFpbCBmaWxlU3JjPXtpc0ltYWdlKHZhbHVlLnR5cGUpID8gZmlsZVNyYyA6IG51bGx9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZmlsZS1hZGp1c3RtZW50c2B9PlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19maWxlbmFtZWB9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlRmlsZU5hbWVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICB2YWx1ZT17dmFsdWUubmFtZX1cbiAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAge2lzSW1hZ2UodmFsdWUudHlwZSkgJiYgdmFsdWUudHlwZSAhPT0gJ2ltYWdlL3N2Zyt4bWwnICYmIChcbiAgICAgICAgICAgICAgICAgIDxVcGxvYWRBY3Rpb25zXG4gICAgICAgICAgICAgICAgICAgIGNhbkVkaXQ9e3Nob3dDcm9wIHx8IHNob3dGb2NhbFBvaW50fVxuICAgICAgICAgICAgICAgICAgICBzaG93U2l6ZVByZXZpZXdzPXtoYXNJbWFnZVNpemVzICYmIGRvYy5maWxlbmFtZSAmJiAhcmVwbGFjaW5nRmlsZX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBidXR0b25TdHlsZT1cImljb24tbGFiZWxcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fcmVtb3ZlYH1cbiAgICAgICAgICAgICAgICBpY29uPVwieFwiXG4gICAgICAgICAgICAgICAgaWNvblN0eWxlPVwid2l0aC1ib3JkZXJcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUZpbGVSZW1vdmFsfVxuICAgICAgICAgICAgICAgIHJvdW5kXG4gICAgICAgICAgICAgICAgdG9vbHRpcD17dCgnZ2VuZXJhbDpjYW5jZWwnKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuXG4gICAgICB7KHZhbHVlIHx8IGRvYy5maWxlbmFtZSkgJiYgKFxuICAgICAgICA8RHJhd2VyIGhlYWRlcj17bnVsbH0gc2x1Zz17ZWRpdERyYXdlclNsdWd9PlxuICAgICAgICAgIDxFZGl0VXBsb2FkXG4gICAgICAgICAgICBkb2M9e2RvYyB8fCB1bmRlZmluZWR9XG4gICAgICAgICAgICBmaWxlTmFtZT17dmFsdWU/Lm5hbWUgfHwgZG9jPy5maWxlbmFtZX1cbiAgICAgICAgICAgIGZpbGVTcmM9e2ZpbGVTcmMgfHwgZG9jPy51cmx9XG4gICAgICAgICAgICBpbWFnZUNhY2hlVGFnPXtkb2MudXBkYXRlZEF0fVxuICAgICAgICAgICAgc2hvd0Nyb3A9e3Nob3dDcm9wfVxuICAgICAgICAgICAgc2hvd0ZvY2FsUG9pbnQ9e3Nob3dGb2NhbFBvaW50fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvRHJhd2VyPlxuICAgICAgKX1cbiAgICAgIHtkb2MgJiYgaGFzSW1hZ2VTaXplcyAmJiAoXG4gICAgICAgIDxEcmF3ZXJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3ByZXZpZXdEcmF3ZXJgfVxuICAgICAgICAgIGhvdmVyVGl0bGVcbiAgICAgICAgICBzbHVnPXtzaXplUHJldmlld1NsdWd9XG4gICAgICAgICAgdGl0bGU9e3QoJ3VwbG9hZDpzaXplc0ZvcicsIHsgbGFiZWw6IGRvYz8uZmlsZW5hbWUgfSl9XG4gICAgICAgID5cbiAgICAgICAgICA8UHJldmlld1NpemVzIGNvbGxlY3Rpb249e2NvbGxlY3Rpb259IGRvYz17ZG9jfSBpbWFnZUNhY2hlVGFnPXtkb2MudXBkYXRlZEF0fSAvPlxuICAgICAgICA8L0RyYXdlcj5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJVcGxvYWQiLCJVcGxvYWRBY3Rpb25zIiwiZWRpdERyYXdlclNsdWciLCJzaXplUHJldmlld1NsdWciLCJiYXNlQ2xhc3MiLCJ2YWxpZGF0ZSIsInZhbHVlIiwidW5kZWZpbmVkIiwiY2FuRWRpdCIsInNob3dTaXplUHJldmlld3MiLCJ0IiwidXNlVHJhbnNsYXRpb24iLCJkaXYiLCJjbGFzc05hbWUiLCJEcmF3ZXJUb2dnbGVyIiwic2x1ZyIsInByb3BzIiwiY29sbGVjdGlvbiIsImludGVybmFsU3RhdGUiLCJvbkNoYW5nZSIsInVwZGF0ZWRBdCIsInJlcGxhY2luZ0ZpbGUiLCJzZXRSZXBsYWNpbmdGaWxlIiwidXNlU3RhdGUiLCJmaWxlU3JjIiwic2V0RmlsZVNyYyIsImRvYyIsInNldERvYyIsInJlZHVjZUZpZWxkc1RvVmFsdWVzIiwiZG9jUGVybWlzc2lvbnMiLCJ1c2VEb2N1bWVudEluZm8iLCJlcnJvck1lc3NhZ2UiLCJzZXRWYWx1ZSIsInNob3dFcnJvciIsInVzZUZpZWxkIiwicGF0aCIsImhhbmRsZUZpbGVOYW1lQ2hhbmdlIiwiZSIsInVwZGF0ZWRGaWxlTmFtZSIsInRhcmdldCIsImZpbGVWYWx1ZSIsIm5ld0ZpbGUiLCJGaWxlIiwidHlwZSIsImhhbmRsZUZpbGVTZWxlY3Rpb24iLCJSZWFjdCIsInVzZUNhbGxiYWNrIiwiZmlsZXMiLCJmaWxlVG9VcGxvYWQiLCJoYW5kbGVGaWxlUmVtb3ZhbCIsInVzZUVmZmVjdCIsImZpbGVSZWFkZXIiLCJGaWxlUmVhZGVyIiwib25sb2FkIiwiaW1nU3JjIiwicmVzdWx0IiwicmVhZEFzRGF0YVVSTCIsImNhblJlbW92ZVVwbG9hZCIsInVwZGF0ZSIsInBlcm1pc3Npb24iLCJkZWxldGUiLCJoYXNJbWFnZVNpemVzIiwidXBsb2FkIiwiaW1hZ2VTaXplcyIsImxlbmd0aCIsImhhc1Jlc2l6ZU9wdGlvbnMiLCJCb29sZWFuIiwicmVzaXplT3B0aW9ucyIsImZvY2FsUG9pbnRFbmFibGVkIiwiZm9jYWxQb2ludCIsImNyb3AiLCJzaG93Q3JvcCIsInNob3dGb2NhbFBvaW50IiwiZmllbGRCYXNlQ2xhc3MiLCJmaWx0ZXIiLCJqb2luIiwiRXJyb3IiLCJtZXNzYWdlIiwiZmlsZW5hbWUiLCJGaWxlRGV0YWlscyIsImhhbmRsZVJlbW92ZSIsImltYWdlQ2FjaGVUYWciLCJEcm9wem9uZSIsIm1pbWVUeXBlcyIsIkZyYWdtZW50IiwiVGh1bWJuYWlsIiwiaXNJbWFnZSIsImlucHV0IiwibmFtZSIsIkJ1dHRvbiIsImJ1dHRvblN0eWxlIiwiaWNvbiIsImljb25TdHlsZSIsIm9uQ2xpY2siLCJyb3VuZCIsInRvb2x0aXAiLCJEcmF3ZXIiLCJoZWFkZXIiLCJFZGl0VXBsb2FkIiwiZmlsZU5hbWUiLCJ1cmwiLCJob3ZlclRpdGxlIiwidGl0bGUiLCJsYWJlbCIsIlByZXZpZXdTaXplcyJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFrRGFBLE1BQU07ZUFBTkE7O0lBbEJBQyxhQUFhO2VBQWJBOztJQVhBQyxjQUFjO2VBQWRBOztJQUNBQyxlQUFlO2VBQWZBOzs7K0RBdEIyQzs4QkFDekI7Z0VBSVg7K0RBQ0Q7d0JBQ21COzBCQUNiOzRCQUNFO29FQUNIO3FFQUNDO2tFQUNIOzhEQUNKOzZFQUNlO3dCQUNGO2lFQUNWOzhCQUNXO1FBQ3pCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVQLE1BQU1D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
@@ -4,6 +4,7 @@ import type { User } from '../types';
4
4
  export type Result = {
5
5
  collection?: string;
6
6
  exp?: number;
7
+ strategy?: string;
7
8
  token?: string;
8
9
  user?: User;
9
10
  };
@@ -1 +1 @@
1
- {"version":3,"file":"me.d.ts","sourceRoot":"","sources":["../../../src/auth/operations/me.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAIpC,MAAM,MAAM,MAAM,GAAG;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,UAAU,CAAA;IACtB,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED,iBAAe,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CA0DjE;AAED,eAAe,EAAE,CAAA"}
1
+ {"version":3,"file":"me.d.ts","sourceRoot":"","sources":["../../../src/auth/operations/me.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAIpC,MAAM,MAAM,MAAM,GAAG;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,UAAU,CAAA;IACtB,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED,iBAAe,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CA2DjE;AAED,eAAe,EAAE,CAAA"}