@comet/brevo-admin 8.20.2 → 9.0.0-beta.1

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 (112) hide show
  1. package/lib/blocks/NewsletterImageBlock.d.ts +7 -3
  2. package/lib/blocks/NewsletterImageBlock.d.ts.map +1 -1
  3. package/lib/blocks/NewsletterImageBlock.js +8 -14
  4. package/lib/blocks.generated.js +1 -5
  5. package/lib/brevoConfiguration/BrevoConfigForm.generated.js +1 -5
  6. package/lib/brevoConfiguration/BrevoConfigForm.gql.d.ts +7 -7
  7. package/lib/brevoConfiguration/BrevoConfigForm.gql.d.ts.map +1 -1
  8. package/lib/brevoConfiguration/BrevoConfigForm.gql.generated.js +1 -7
  9. package/lib/brevoConfiguration/BrevoConfigForm.gql.js +8 -14
  10. package/lib/brevoConfiguration/BrevoConfigForm.js +53 -59
  11. package/lib/brevoConfiguration/BrevoConfigPage.d.ts +1 -0
  12. package/lib/brevoConfiguration/BrevoConfigPage.d.ts.map +1 -1
  13. package/lib/brevoConfiguration/BrevoConfigPage.js +8 -14
  14. package/lib/brevoContacts/BrevoContactsGrid.generated.js +1 -7
  15. package/lib/brevoContacts/BrevoContactsGrid.js +45 -51
  16. package/lib/brevoContacts/BrevoContactsPage.d.ts +1 -1
  17. package/lib/brevoContacts/BrevoContactsPage.d.ts.map +1 -1
  18. package/lib/brevoContacts/BrevoContactsPage.js +24 -29
  19. package/lib/brevoContacts/form/BrevoContactForm.generated.js +1 -7
  20. package/lib/brevoContacts/form/BrevoContactForm.gql.generated.js +1 -7
  21. package/lib/brevoContacts/form/BrevoContactForm.gql.js +7 -13
  22. package/lib/brevoContacts/form/BrevoContactForm.js +58 -64
  23. package/lib/brevoTestContacts/BrevoTestContactsGrid.generated.js +1 -7
  24. package/lib/brevoTestContacts/BrevoTestContactsGrid.js +40 -46
  25. package/lib/brevoTestContacts/BrevoTestContactsPage.d.ts +1 -1
  26. package/lib/brevoTestContacts/BrevoTestContactsPage.d.ts.map +1 -1
  27. package/lib/brevoTestContacts/BrevoTestContactsPage.js +24 -29
  28. package/lib/brevoTestContacts/form/BrevoTestContactForm.generated.js +1 -7
  29. package/lib/brevoTestContacts/form/BrevoTestContactForm.gql.generated.js +1 -7
  30. package/lib/brevoTestContacts/form/BrevoTestContactForm.gql.js +7 -13
  31. package/lib/brevoTestContacts/form/BrevoTestContactForm.js +42 -48
  32. package/lib/common/BrevoConfigProvider.js +9 -15
  33. package/lib/common/contactImport/useContactImportFromCsv.d.ts.map +1 -1
  34. package/lib/common/contactImport/useContactImportFromCsv.gql.d.ts +1 -1
  35. package/lib/common/contactImport/useContactImportFromCsv.gql.d.ts.map +1 -1
  36. package/lib/common/contactImport/useContactImportFromCsv.gql.generated.js +1 -7
  37. package/lib/common/contactImport/useContactImportFromCsv.gql.js +2 -8
  38. package/lib/common/contactImport/useContactImportFromCsv.js +81 -91
  39. package/lib/configVerification/ConfigVerification.d.ts +1 -1
  40. package/lib/configVerification/ConfigVerification.d.ts.map +1 -1
  41. package/lib/configVerification/ConfigVerification.gql.d.ts +1 -1
  42. package/lib/configVerification/ConfigVerification.gql.d.ts.map +1 -1
  43. package/lib/configVerification/ConfigVerification.gql.generated.js +1 -7
  44. package/lib/configVerification/ConfigVerification.gql.js +2 -8
  45. package/lib/configVerification/ConfigVerification.js +12 -18
  46. package/lib/emailCampaigns/EmailCampaignsGrid.generated.js +1 -7
  47. package/lib/emailCampaigns/EmailCampaignsGrid.js +47 -53
  48. package/lib/emailCampaigns/EmailCampaignsPage.d.ts +1 -0
  49. package/lib/emailCampaigns/EmailCampaignsPage.d.ts.map +1 -1
  50. package/lib/emailCampaigns/EmailCampaignsPage.js +29 -35
  51. package/lib/emailCampaigns/SendingStateColumn.js +24 -30
  52. package/lib/emailCampaigns/form/ConfigFields.js +11 -17
  53. package/lib/emailCampaigns/form/EmailCampaignForm.gql.d.ts +5 -5
  54. package/lib/emailCampaigns/form/EmailCampaignForm.gql.d.ts.map +1 -1
  55. package/lib/emailCampaigns/form/EmailCampaignForm.gql.generated.js +1 -7
  56. package/lib/emailCampaigns/form/EmailCampaignForm.gql.js +6 -12
  57. package/lib/emailCampaigns/form/EmailCampaignForm.js +65 -71
  58. package/lib/emailCampaigns/form/SendEmailCampaignNowDialog.js +16 -21
  59. package/lib/emailCampaigns/form/SendManagerFields.gql.d.ts +2 -2
  60. package/lib/emailCampaigns/form/SendManagerFields.gql.d.ts.map +1 -1
  61. package/lib/emailCampaigns/form/SendManagerFields.gql.generated.js +1 -7
  62. package/lib/emailCampaigns/form/SendManagerFields.gql.js +4 -10
  63. package/lib/emailCampaigns/form/SendManagerFields.js +37 -43
  64. package/lib/emailCampaigns/form/SendManagerWrapper.gql.d.ts +1 -1
  65. package/lib/emailCampaigns/form/SendManagerWrapper.gql.d.ts.map +1 -1
  66. package/lib/emailCampaigns/form/SendManagerWrapper.gql.generated.js +1 -7
  67. package/lib/emailCampaigns/form/SendManagerWrapper.gql.js +2 -8
  68. package/lib/emailCampaigns/form/SendManagerWrapper.js +13 -19
  69. package/lib/emailCampaigns/form/TestEmailCampaignForm.generated.js +1 -7
  70. package/lib/emailCampaigns/form/TestEmailCampaignForm.gql.d.ts +1 -1
  71. package/lib/emailCampaigns/form/TestEmailCampaignForm.gql.d.ts.map +1 -1
  72. package/lib/emailCampaigns/form/TestEmailCampaignForm.gql.generated.js +1 -7
  73. package/lib/emailCampaigns/form/TestEmailCampaignForm.gql.js +2 -8
  74. package/lib/emailCampaigns/form/TestEmailCampaignForm.js +33 -39
  75. package/lib/emailCampaigns/statistics/EmailCampaignStatistics.gql.d.ts +1 -1
  76. package/lib/emailCampaigns/statistics/EmailCampaignStatistics.gql.d.ts.map +1 -1
  77. package/lib/emailCampaigns/statistics/EmailCampaignStatistics.gql.generated.js +1 -7
  78. package/lib/emailCampaigns/statistics/EmailCampaignStatistics.gql.js +2 -8
  79. package/lib/emailCampaigns/statistics/EmailCampaignStatistics.js +40 -46
  80. package/lib/emailCampaigns/statistics/PercentageCard.js +29 -35
  81. package/lib/emailCampaigns/view/EmailCampaignView.gql.d.ts +1 -1
  82. package/lib/emailCampaigns/view/EmailCampaignView.gql.d.ts.map +1 -1
  83. package/lib/emailCampaigns/view/EmailCampaignView.gql.generated.js +1 -7
  84. package/lib/emailCampaigns/view/EmailCampaignView.gql.js +2 -8
  85. package/lib/emailCampaigns/view/EmailCampaignView.js +31 -37
  86. package/lib/graphql.generated.js +1 -5
  87. package/lib/index.js +7 -60
  88. package/lib/targetGroups/TargetGroupDialog.gql.d.ts +1 -1
  89. package/lib/targetGroups/TargetGroupDialog.gql.d.ts.map +1 -1
  90. package/lib/targetGroups/TargetGroupDialog.gql.generated.js +1 -7
  91. package/lib/targetGroups/TargetGroupDialog.gql.js +2 -8
  92. package/lib/targetGroups/TargetGroupDialog.js +13 -19
  93. package/lib/targetGroups/TargetGroupForm.gql.generated.js +1 -7
  94. package/lib/targetGroups/TargetGroupForm.gql.js +8 -14
  95. package/lib/targetGroups/TargetGroupForm.js +49 -61
  96. package/lib/targetGroups/TargetGroupsGrid.d.ts.map +1 -1
  97. package/lib/targetGroups/TargetGroupsGrid.generated.js +1 -7
  98. package/lib/targetGroups/TargetGroupsGrid.js +40 -48
  99. package/lib/targetGroups/TargetGroupsPage.d.ts +1 -1
  100. package/lib/targetGroups/TargetGroupsPage.d.ts.map +1 -1
  101. package/lib/targetGroups/TargetGroupsPage.js +21 -27
  102. package/lib/targetGroups/addContacts/AddContactsGridSelect.gql.d.ts +4 -4
  103. package/lib/targetGroups/addContacts/AddContactsGridSelect.gql.d.ts.map +1 -1
  104. package/lib/targetGroups/addContacts/AddContactsGridSelect.gql.generated.js +1 -7
  105. package/lib/targetGroups/addContacts/AddContactsGridSelect.gql.js +6 -12
  106. package/lib/targetGroups/addContacts/AddContactsGridSelect.js +64 -70
  107. package/lib/targetGroups/allAssignedContacts/AllAssignedContactsGrid.gql.d.ts +1 -1
  108. package/lib/targetGroups/allAssignedContacts/AllAssignedContactsGrid.gql.d.ts.map +1 -1
  109. package/lib/targetGroups/allAssignedContacts/AllAssignedContactsGrid.gql.generated.js +1 -7
  110. package/lib/targetGroups/allAssignedContacts/AllAssignedContactsGrid.gql.js +3 -9
  111. package/lib/targetGroups/allAssignedContacts/AllAssignedContactsGrid.js +17 -23
  112. package/package.json +22 -19
@@ -1,23 +1,4 @@
1
- "use strict";
2
-
3
1
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.useContactImportFromCsv = void 0;
8
- var _client = require("@apollo/client");
9
- var _admin = require("@comet/admin");
10
- var _adminIcons = require("@comet/admin-icons");
11
- var _material = require("@mui/material");
12
- var _styles = require("@mui/material/styles");
13
- var _fileSaver = _interopRequireDefault(require("file-saver"));
14
- var _react = require("react");
15
- var _reactDropzone = require("react-dropzone");
16
- var _reactIntl = require("react-intl");
17
- var _BrevoConfigProvider = require("../BrevoConfigProvider");
18
- var _useContactImportFromCsv = require("./useContactImportFromCsv.gql");
19
- var _jsxRuntime = require("react/jsx-runtime");
20
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
21
2
  function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
22
3
  function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
23
4
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
@@ -34,29 +15,40 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
34
15
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
35
16
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
36
17
  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
37
- var useContactImportFromCsv = exports.useContactImportFromCsv = function useContactImportFromCsv(_ref) {
18
+ import { useApolloClient } from "@apollo/client";
19
+ import { Alert, Button, CheckboxField, Dialog, downloadFile, FinalForm, Loading, messages, useErrorDialog } from "@comet/admin";
20
+ import { Upload } from "@comet/admin-icons";
21
+ import { Box, DialogActions, DialogContent, DialogTitle } from "@mui/material";
22
+ import { styled } from "@mui/material/styles";
23
+ import { useMemo, useRef, useState } from "react";
24
+ import { useDropzone } from "react-dropzone";
25
+ import { FormattedMessage, useIntl } from "react-intl";
26
+ import { useBrevoConfig } from "../BrevoConfigProvider";
27
+ import { startBrevoContactImportMutation } from "./useContactImportFromCsv.gql";
28
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
29
+ export var useContactImportFromCsv = function useContactImportFromCsv(_ref) {
38
30
  var scope = _ref.scope,
39
31
  targetGroupId = _ref.targetGroupId,
40
32
  refetchQueries = _ref.refetchQueries;
41
- var fileInputRef = (0, _react.useRef)(null);
42
- var _useState = (0, _react.useState)(false),
33
+ var fileInputRef = useRef(null);
34
+ var _useState = useState(false),
43
35
  _useState2 = _slicedToArray(_useState, 2),
44
36
  open = _useState2[0],
45
37
  setOpen = _useState2[1];
46
- var _useState3 = (0, _react.useState)(true),
38
+ var _useState3 = useState(true),
47
39
  _useState4 = _slicedToArray(_useState3, 2),
48
40
  sendDoubleOptIn = _useState4[0],
49
41
  setSendDoubleOptIn = _useState4[1];
50
- var _useBrevoConfig = (0, _BrevoConfigProvider.useBrevoConfig)(),
42
+ var _useBrevoConfig = useBrevoConfig(),
51
43
  allowAddingContactsWithoutDoi = _useBrevoConfig.allowAddingContactsWithoutDoi;
52
- var moreActionsMenuItem = (0, _react.useMemo)(function () {
44
+ var moreActionsMenuItem = useMemo(function () {
53
45
  return {
54
46
  type: "action",
55
- label: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
47
+ label: /*#__PURE__*/_jsx(FormattedMessage, {
56
48
  id: "cometBrevoModule.targetGroup.assignedContacts.actions.importFromCsv",
57
49
  defaultMessage: "Import contacts from CSV"
58
50
  }),
59
- startAdornment: /*#__PURE__*/(0, _jsxRuntime.jsx)(_adminIcons.Upload, {}),
51
+ startAdornment: /*#__PURE__*/_jsx(Upload, {}),
60
52
  onClick: function onClick() {
61
53
  return setOpen(true);
62
54
  }
@@ -65,16 +57,16 @@ var useContactImportFromCsv = exports.useContactImportFromCsv = function useCont
65
57
  var handleClose = function handleClose() {
66
58
  return setOpen(false);
67
59
  };
68
- var dialog = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_admin.Dialog, {
60
+ var dialog = /*#__PURE__*/_jsxs(Dialog, {
69
61
  open: open,
70
62
  onClose: handleClose,
71
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.DialogTitle, {
72
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
63
+ children: [/*#__PURE__*/_jsx(DialogTitle, {
64
+ children: /*#__PURE__*/_jsx(FormattedMessage, {
73
65
  id: "cometBrevoModule.contactImport.title",
74
66
  defaultMessage: "Importing contacts from CSV"
75
67
  })
76
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.DialogContent, {
77
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.FinalForm, {
68
+ }), /*#__PURE__*/_jsx(DialogContent, {
69
+ children: /*#__PURE__*/_jsx(FinalForm, {
78
70
  onSubmit: function onSubmit(values) {
79
71
  var _fileInputRef$current;
80
72
  (_fileInputRef$current = fileInputRef.current) === null || _fileInputRef$current === void 0 || _fileInputRef$current.click();
@@ -86,28 +78,28 @@ var useContactImportFromCsv = exports.useContactImportFromCsv = function useCont
86
78
  children: function children(_ref2) {
87
79
  var values = _ref2.values;
88
80
  setSendDoubleOptIn(values.sendDoubleOptIn);
89
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
90
- children: [values.sendDoubleOptIn ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Alert, {
81
+ return /*#__PURE__*/_jsxs(_Fragment, {
82
+ children: [values.sendDoubleOptIn ? /*#__PURE__*/_jsx(Alert, {
91
83
  severity: "warning",
92
84
  sx: {
93
85
  marginBottom: 5
94
86
  },
95
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
87
+ children: /*#__PURE__*/_jsx(FormattedMessage, {
96
88
  id: "cometBrevoModule.contactImport.contactAddAlert",
97
89
  defaultMessage: "The contact will get a double opt-in email to confirm the subscription. After the contact's confirmation, the contact will be added to the corresponding target groups in this scope depending on the contact's attributes. Before the confirmation the contact will not be shown on the contacts page."
98
90
  })
99
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Alert, {
91
+ }) : /*#__PURE__*/_jsx(Alert, {
100
92
  severity: "error",
101
93
  sx: {
102
94
  marginBottom: 5
103
95
  },
104
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
96
+ children: /*#__PURE__*/_jsx(FormattedMessage, {
105
97
  id: "cometBrevoModule.contactImport.contactNoOptInAlert",
106
98
  defaultMessage: "No Double Opt-In email will be sent. Please ensure recipients have given their consent before proceeding."
107
99
  })
108
- }), allowAddingContactsWithoutDoi && /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.CheckboxField, {
100
+ }), allowAddingContactsWithoutDoi && /*#__PURE__*/_jsx(CheckboxField, {
109
101
  name: "sendDoubleOptIn",
110
- label: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
102
+ label: /*#__PURE__*/_jsx(FormattedMessage, {
111
103
  id: "cometBrevoModule.contactImport.sendDoubleOptInMail",
112
104
  defaultMessage: "Send double opt-in email"
113
105
  }),
@@ -116,25 +108,25 @@ var useContactImportFromCsv = exports.useContactImportFromCsv = function useCont
116
108
  });
117
109
  }
118
110
  })
119
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.DialogActions, {
120
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Button, {
111
+ }), /*#__PURE__*/_jsxs(DialogActions, {
112
+ children: [/*#__PURE__*/_jsx(Button, {
121
113
  onClick: handleClose,
122
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, _objectSpread({}, _admin.messages.cancel))
123
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Button, {
114
+ children: /*#__PURE__*/_jsx(FormattedMessage, _objectSpread({}, messages.cancel))
115
+ }), /*#__PURE__*/_jsx(Button, {
124
116
  variant: "primary",
125
117
  onClick: function onClick() {
126
118
  var _fileInputRef$current2;
127
119
  return (_fileInputRef$current2 = fileInputRef.current) === null || _fileInputRef$current2 === void 0 ? void 0 : _fileInputRef$current2.click();
128
120
  },
129
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
121
+ children: /*#__PURE__*/_jsx(FormattedMessage, {
130
122
  id: "cometBrevoModule.contactImport.importContacts",
131
123
  defaultMessage: "Import Contacts"
132
124
  })
133
125
  })]
134
126
  })]
135
127
  });
136
- var component = (0, _react.useMemo)(function () {
137
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(ContactImportComponent, {
128
+ var component = useMemo(function () {
129
+ return /*#__PURE__*/_jsx(ContactImportComponent, {
138
130
  scope: scope,
139
131
  targetGroupId: targetGroupId,
140
132
  fileInputRef: fileInputRef,
@@ -142,7 +134,7 @@ var useContactImportFromCsv = exports.useContactImportFromCsv = function useCont
142
134
  refetchQueries: refetchQueries
143
135
  });
144
136
  }, [refetchQueries, scope, targetGroupId, sendDoubleOptIn]);
145
- return [moreActionsMenuItem, /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
137
+ return [moreActionsMenuItem, /*#__PURE__*/_jsxs(_Fragment, {
146
138
  children: [dialog, component]
147
139
  })];
148
140
  };
@@ -152,20 +144,20 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
152
144
  fileInputRef = _ref3.fileInputRef,
153
145
  sendDoubleOptIn = _ref3.sendDoubleOptIn,
154
146
  refetchQueries = _ref3.refetchQueries;
155
- var apolloClient = (0, _client.useApolloClient)();
156
- var _useState5 = (0, _react.useState)(false),
147
+ var apolloClient = useApolloClient();
148
+ var _useState5 = useState(false),
157
149
  _useState6 = _slicedToArray(_useState5, 2),
158
150
  importingCsv = _useState6[0],
159
151
  setImportingCsv = _useState6[1];
160
- var _useState7 = (0, _react.useState)(null),
152
+ var _useState7 = useState(null),
161
153
  _useState8 = _slicedToArray(_useState7, 2),
162
154
  importInformation = _useState8[0],
163
155
  setImportInformation = _useState8[1];
164
156
  var dialogOpen = importingCsv || !!importInformation;
165
- var errorDialog = (0, _admin.useErrorDialog)();
166
- var config = (0, _BrevoConfigProvider.useBrevoConfig)();
167
- var intl = (0, _reactIntl.useIntl)();
168
- var client = (0, _client.useApolloClient)();
157
+ var errorDialog = useErrorDialog();
158
+ var config = useBrevoConfig();
159
+ var intl = useIntl();
160
+ var client = useApolloClient();
169
161
  function upload(_x, _x2, _x3) {
170
162
  return _upload.apply(this, arguments);
171
163
  }
@@ -199,7 +191,7 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
199
191
  fileUploadId = _context2.v.id;
200
192
  _context2.n = 4;
201
193
  return client.mutate({
202
- mutation: _useContactImportFromCsv.startBrevoContactImportMutation,
194
+ mutation: startBrevoContactImportMutation,
203
195
  variables: {
204
196
  fileId: fileUploadId,
205
197
  scope: scope,
@@ -260,10 +252,9 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
260
252
  } finally {
261
253
  _iterator.f();
262
254
  }
263
- var file = new Blob([errorData], {
255
+ downloadFile(new Blob([errorData], {
264
256
  type: "text/csv;charset=utf-8"
265
- });
266
- (0, _fileSaver["default"])(file, "error-log-".concat(new Date().toISOString(), ".csv"));
257
+ }), "error-log-".concat(new Date().toISOString(), ".csv"));
267
258
  };
268
259
  var saveBlacklistedContactsFile = function saveBlacklistedContactsFile() {
269
260
  var blacklistedContactsColumns = importInformation === null || importInformation === void 0 ? void 0 : importInformation.blacklistedColumns;
@@ -300,12 +291,11 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
300
291
  } finally {
301
292
  _iterator2.f();
302
293
  }
303
- var file = new Blob([blacklistedContactsData], {
294
+ downloadFile(new Blob([blacklistedContactsData], {
304
295
  type: "text/csv;charset=utf-8"
305
- });
306
- (0, _fileSaver["default"])(file, "blacklisted-contact-log-".concat(new Date().toISOString(), ".csv"));
296
+ }), "blacklisted-contact-log-".concat(new Date().toISOString(), ".csv"));
307
297
  };
308
- var _useDropzone = (0, _reactDropzone.useDropzone)({
298
+ var _useDropzone = useDropzone({
309
299
  accept: {
310
300
  "text/csv": []
311
301
  },
@@ -333,7 +323,7 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
333
323
  setImportingCsv(false);
334
324
  if (data.errorMessage) {
335
325
  errorDialog === null || errorDialog === void 0 || errorDialog.showError({
336
- title: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, _objectSpread({}, _admin.messages.error)),
326
+ title: /*#__PURE__*/_jsx(FormattedMessage, _objectSpread({}, messages.error)),
337
327
  userMessage: data.errorMessage,
338
328
  error: data.errorMessage
339
329
  });
@@ -351,12 +341,12 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
351
341
  _context.p = 5;
352
342
  _t = _context.v;
353
343
  setImportingCsv(false);
354
- userMessage = /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
344
+ userMessage = /*#__PURE__*/_jsx(FormattedMessage, {
355
345
  id: "cometBrevoModule.useContactImport.error.defaultMessage",
356
346
  defaultMessage: "An error occured during the import. Please try again in a while or contact your administrator if the error persists."
357
347
  });
358
348
  errorDialog === null || errorDialog === void 0 || errorDialog.showError({
359
- title: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, _objectSpread({}, _admin.messages.error)),
349
+ title: /*#__PURE__*/_jsx(FormattedMessage, _objectSpread({}, messages.error)),
360
350
  userMessage: userMessage,
361
351
  error: String(_t)
362
352
  });
@@ -372,47 +362,47 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
372
362
  }()
373
363
  }),
374
364
  getInputProps = _useDropzone.getInputProps;
375
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
376
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("input", _objectSpread(_objectSpread({
365
+ return /*#__PURE__*/_jsxs(_Fragment, {
366
+ children: [/*#__PURE__*/_jsx("input", _objectSpread(_objectSpread({
377
367
  type: "file",
378
368
  hidden: true
379
369
  }, getInputProps()), {}, {
380
370
  ref: fileInputRef
381
- })), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_admin.Dialog, {
371
+ })), /*#__PURE__*/_jsxs(Dialog, {
382
372
  open: dialogOpen,
383
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.DialogTitle, {
384
- children: [importingCsv && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
373
+ children: [/*#__PURE__*/_jsxs(DialogTitle, {
374
+ children: [importingCsv && /*#__PURE__*/_jsx(FormattedMessage, {
385
375
  id: "cometBrevoModule.useContactImport.importing.title",
386
376
  defaultMessage: "Importing contacts from CSV..."
387
- }), importInformation && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
377
+ }), importInformation && /*#__PURE__*/_jsx(FormattedMessage, {
388
378
  id: "cometBrevoModule.useContactImport.importSuccessful.title",
389
379
  defaultMessage: "Import successful"
390
380
  })]
391
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.DialogContent, {
392
- children: [importingCsv && /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Loading, {}), importInformation && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
393
- children: [importInformation.created > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
381
+ }), /*#__PURE__*/_jsxs(DialogContent, {
382
+ children: [importingCsv && /*#__PURE__*/_jsx(Loading, {}), importInformation && /*#__PURE__*/_jsxs(_Fragment, {
383
+ children: [importInformation.created > 0 && /*#__PURE__*/_jsx(FormattedMessage, {
394
384
  id: "cometBrevoModule.useContactImport.importSuccessful.contactsImported",
395
385
  defaultMessage: "{amount} contact(s) have been created successfully.",
396
386
  values: {
397
387
  amount: importInformation.created
398
388
  }
399
- }), importInformation.updated > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
389
+ }), importInformation.updated > 0 && /*#__PURE__*/_jsx(FormattedMessage, {
400
390
  id: "cometBrevoModule.useContactImport.importSuccessful.contactsUpdated",
401
391
  defaultMessage: "{amount} contact(s) have been updated.",
402
392
  values: {
403
393
  amount: importInformation.updated
404
394
  }
405
- }), importInformation.failed > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
395
+ }), importInformation.failed > 0 && /*#__PURE__*/_jsx(Box, {
406
396
  mt: 2,
407
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Alert, {
397
+ children: /*#__PURE__*/_jsx(Alert, {
408
398
  severity: "error",
409
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
399
+ children: /*#__PURE__*/_jsx(FormattedMessage, {
410
400
  id: "cometBrevoModule.useContactImport.error.contactsCouldNotBeImported",
411
401
  defaultMessage: "{amount} contact(s) could not be imported. <link>Download this file</link> to get the failing row(s).",
412
402
  values: {
413
403
  amount: importInformation.failed,
414
404
  link: function link(chunks) {
415
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(CsvDownloadLink, {
405
+ return /*#__PURE__*/_jsx(CsvDownloadLink, {
416
406
  onClick: saveErrorFile,
417
407
  children: chunks
418
408
  });
@@ -420,17 +410,17 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
420
410
  }
421
411
  })
422
412
  })
423
- }), importInformation.blacklisted > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
413
+ }), importInformation.blacklisted > 0 && /*#__PURE__*/_jsx(Box, {
424
414
  mt: 2,
425
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Alert, {
415
+ children: /*#__PURE__*/_jsx(Alert, {
426
416
  severity: "error",
427
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
417
+ children: /*#__PURE__*/_jsx(FormattedMessage, {
428
418
  id: "cometBrevoModule.useContactImport.error.contactsAreBlacklisted",
429
419
  defaultMessage: "{amount} contacts could not be imported as they are blacklisted. <link>Download this file</link> to get the blacklisted contact(s).",
430
420
  values: {
431
421
  amount: importInformation.blacklisted,
432
422
  link: function link(chunks) {
433
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(CsvDownloadLink, {
423
+ return /*#__PURE__*/_jsx(CsvDownloadLink, {
434
424
  onClick: saveBlacklistedContactsFile,
435
425
  children: chunks
436
426
  });
@@ -438,30 +428,30 @@ var ContactImportComponent = function ContactImportComponent(_ref3) {
438
428
  }
439
429
  })
440
430
  })
441
- }), (importInformation.created > 0 || importInformation.updated > 0) && sendDoubleOptIn && /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
431
+ }), (importInformation.created > 0 || importInformation.updated > 0) && sendDoubleOptIn && /*#__PURE__*/_jsx(Box, {
442
432
  mt: 2,
443
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Alert, {
433
+ children: /*#__PURE__*/_jsx(Alert, {
444
434
  severity: "warning",
445
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
435
+ children: /*#__PURE__*/_jsx(FormattedMessage, {
446
436
  id: "cometBrevoModule.useContactImport.importSuccessful.doiNotice",
447
437
  defaultMessage: "Contacts who have not yet confirmed their subscription will receive a double opt-in email to complete the process. These contacts will not appear in this list until they confirm their subscription. Once confirmed, they will automatically be added to the appropriate target group(s)."
448
438
  })
449
439
  })
450
440
  })]
451
441
  })]
452
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.DialogActions, {
453
- children: importInformation && /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Button, {
442
+ }), /*#__PURE__*/_jsx(DialogActions, {
443
+ children: importInformation && /*#__PURE__*/_jsx(Button, {
454
444
  onClick: function onClick() {
455
445
  return setImportInformation(null);
456
446
  },
457
447
  variant: "primary",
458
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, _objectSpread({}, _admin.messages.ok))
448
+ children: /*#__PURE__*/_jsx(FormattedMessage, _objectSpread({}, messages.ok))
459
449
  })
460
450
  })]
461
451
  })]
462
452
  });
463
453
  };
464
- var CsvDownloadLink = /*#__PURE__*/(0, _styles.styled)("span", process.env.NODE_ENV === "production" ? {
454
+ var CsvDownloadLink = /*#__PURE__*/styled("span", process.env.NODE_ENV === "production" ? {
465
455
  target: "e157iusb0"
466
456
  } : {
467
457
  target: "e157iusb0",
@@ -469,4 +459,4 @@ var CsvDownloadLink = /*#__PURE__*/(0, _styles.styled)("span", process.env.NODE_
469
459
  })("color:", function (_ref4) {
470
460
  var theme = _ref4.theme;
471
461
  return theme.palette.info.main;
472
- }, ";text-decoration:underline;cursor:pointer;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vY29udGFjdEltcG9ydC91c2VDb250YWN0SW1wb3J0RnJvbUNzdi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNlhzQyIsImZpbGUiOiIuLi8uLi8uLi9zcmMvY29tbW9uL2NvbnRhY3RJbXBvcnQvdXNlQ29udGFjdEltcG9ydEZyb21Dc3YudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQXBvbGxvQ2xpZW50IH0gZnJvbSBcIkBhcG9sbG8vY2xpZW50XCI7XG5pbXBvcnQgeyB0eXBlIFJlZmV0Y2hRdWVyaWVzSW5jbHVkZSB9IGZyb20gXCJAYXBvbGxvL2NsaWVudC9jb3JlL3R5cGVzXCI7XG5pbXBvcnQgeyBBbGVydCwgQnV0dG9uLCBDaGVja2JveEZpZWxkLCBEaWFsb2csIEZpbmFsRm9ybSwgTG9hZGluZywgbWVzc2FnZXMsIHVzZUVycm9yRGlhbG9nIH0gZnJvbSBcIkBjb21ldC9hZG1pblwiO1xuaW1wb3J0IHsgVXBsb2FkIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBEaWFsb2dBY3Rpb25zLCBEaWFsb2dDb250ZW50LCBEaWFsb2dUaXRsZSwgdHlwZSBNZW51SXRlbSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBzYXZlQXMgZnJvbSBcImZpbGUtc2F2ZXJcIjtcbmltcG9ydCB7IHR5cGUgQ29tcG9uZW50UHJvcHMsIHR5cGUgUmVhY3ROb2RlLCB0eXBlIFJlZk9iamVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRHJvcHpvbmUgfSBmcm9tIFwicmVhY3QtZHJvcHpvbmVcIjtcbmltcG9ydCB7IEZvcm1hdHRlZE1lc3NhZ2UsIHVzZUludGwgfSBmcm9tIFwicmVhY3QtaW50bFwiO1xuXG5pbXBvcnQgeyB0eXBlIEdRTENzdkltcG9ydEluZm9ybWF0aW9uLCB0eXBlIEdRTEVtYWlsQ2FtcGFpZ25Db250ZW50U2NvcGVJbnB1dCB9IGZyb20gXCIuLi8uLi9ncmFwaHFsLmdlbmVyYXRlZFwiO1xuaW1wb3J0IHsgdXNlQnJldm9Db25maWcgfSBmcm9tIFwiLi4vQnJldm9Db25maWdQcm92aWRlclwiO1xuaW1wb3J0IHsgc3RhcnRCcmV2b0NvbnRhY3RJbXBvcnRNdXRhdGlvbiB9IGZyb20gXCIuL3VzZUNvbnRhY3RJbXBvcnRGcm9tQ3N2LmdxbFwiO1xuaW1wb3J0IHsgdHlwZSBHUUxTdGFydEJyZXZvQ29udGFjdEltcG9ydE11dGF0aW9uLCB0eXBlIEdRTFN0YXJ0QnJldm9Db250YWN0SW1wb3J0TXV0YXRpb25WYXJpYWJsZXMgfSBmcm9tIFwiLi91c2VDb250YWN0SW1wb3J0RnJvbUNzdi5ncWwuZ2VuZXJhdGVkXCI7XG5cbmludGVyZmFjZSBVc2VDb250YWN0SW1wb3J0UHJvcHMge1xuICAgIHNjb3BlOiBHUUxFbWFpbENhbXBhaWduQ29udGVudFNjb3BlSW5wdXQ7XG4gICAgc2VuZERvdWJsZU9wdEluOiBib29sZWFuO1xuICAgIHRhcmdldEdyb3VwSWQ/OiBzdHJpbmc7XG4gICAgcmVmZXRjaFF1ZXJpZXM/OiBSZWZldGNoUXVlcmllc0luY2x1ZGU7XG59XG5cbnR5cGUgQ29udGFjdEltcG9ydEZyb21Dc3ZGb3JtID0ge1xuICAgIHNlbmREb3VibGVPcHRJbjogYm9vbGVhbjtcbn07XG5cbmludGVyZmFjZSBBY3Rpb25JdGVtIGV4dGVuZHMgQ29tcG9uZW50UHJvcHM8dHlwZW9mIE1lbnVJdGVtPiB7XG4gICAgdHlwZTogXCJhY3Rpb25cIjtcbiAgICBsYWJlbDogUmVhY3ROb2RlO1xuICAgIHN0YXJ0QWRvcm5tZW50PzogUmVhY3ROb2RlO1xufVxuXG5leHBvcnQgY29uc3QgdXNlQ29udGFjdEltcG9ydEZyb21Dc3YgPSAoeyBzY29wZSwgdGFyZ2V0R3JvdXBJZCwgcmVmZXRjaFF1ZXJpZXMgfTogVXNlQ29udGFjdEltcG9ydFByb3BzKTogW0FjdGlvbkl0ZW0sIFJlYWN0Tm9kZV0gPT4ge1xuICAgIGNvbnN0IGZpbGVJbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgICBjb25zdCBbb3Blbiwgc2V0T3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3NlbmREb3VibGVPcHRJbiwgc2V0U2VuZERvdWJsZU9wdEluXSA9IHVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IHsgYWxsb3dBZGRpbmdDb250YWN0c1dpdGhvdXREb2kgfSA9IHVzZUJyZXZvQ29uZmlnKCk7XG5cbiAgICBjb25zdCBtb3JlQWN0aW9uc01lbnVJdGVtOiBBY3Rpb25JdGVtID0gdXNlTWVtbyhcbiAgICAgICAgKCkgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6IFwiYWN0aW9uXCIsXG4gICAgICAgICAgICBsYWJlbDogKFxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS50YXJnZXRHcm91cC5hc3NpZ25lZENvbnRhY3RzLmFjdGlvbnMuaW1wb3J0RnJvbUNzdlwiXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiSW1wb3J0IGNvbnRhY3RzIGZyb20gQ1NWXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YXJ0QWRvcm5tZW50OiA8VXBsb2FkIC8+LFxuICAgICAgICAgICAgb25DbGljazogKCkgPT4gc2V0T3Blbih0cnVlKSxcbiAgICAgICAgfSksXG4gICAgICAgIFtdLFxuICAgICk7XG5cbiAgICBjb25zdCBoYW5kbGVDbG9zZSA9ICgpID0+IHNldE9wZW4oZmFsc2UpO1xuXG4gICAgY29uc3QgZGlhbG9nID0gKFxuICAgICAgICA8RGlhbG9nIG9wZW49e29wZW59IG9uQ2xvc2U9e2hhbmRsZUNsb3NlfT5cbiAgICAgICAgICAgIDxEaWFsb2dUaXRsZT5cbiAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0QnJldm9Nb2R1bGUuY29udGFjdEltcG9ydC50aXRsZVwiIGRlZmF1bHRNZXNzYWdlPVwiSW1wb3J0aW5nIGNvbnRhY3RzIGZyb20gQ1NWXCIgLz5cbiAgICAgICAgICAgIDwvRGlhbG9nVGl0bGU+XG4gICAgICAgICAgICA8RGlhbG9nQ29udGVudD5cbiAgICAgICAgICAgICAgICA8RmluYWxGb3JtPENvbnRhY3RJbXBvcnRGcm9tQ3N2Rm9ybT5cbiAgICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9eyh2YWx1ZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50Py5jbGljaygpO1xuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBtb2RlPVwiYWRkXCJcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFZhbHVlcz17eyBzZW5kRG91YmxlT3B0SW46IHRydWUgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHsoeyB2YWx1ZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VuZERvdWJsZU9wdEluKHZhbHVlcy5zZW5kRG91YmxlT3B0SW4pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YWx1ZXMuc2VuZERvdWJsZU9wdEluID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IHNldmVyaXR5PVwid2FybmluZ1wiIHN4PXt7IG1hcmdpbkJvdHRvbTogNSB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0QnJldm9Nb2R1bGUuY29udGFjdEltcG9ydC5jb250YWN0QWRkQWxlcnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIlRoZSBjb250YWN0IHdpbGwgZ2V0IGEgZG91YmxlIG9wdC1pbiBlbWFpbCB0byBjb25maXJtIHRoZSBzdWJzY3JpcHRpb24uIEFmdGVyIHRoZSBjb250YWN0J3MgY29uZmlybWF0aW9uLCB0aGUgY29udGFjdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRhcmdldCBncm91cHMgaW4gdGhpcyBzY29wZSBkZXBlbmRpbmcgb24gdGhlIGNvbnRhY3QncyBhdHRyaWJ1dGVzLiBCZWZvcmUgdGhlIGNvbmZpcm1hdGlvbiB0aGUgY29udGFjdCB3aWxsIG5vdCBiZSBzaG93biBvbiB0aGUgY29udGFjdHMgcGFnZS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IHNldmVyaXR5PVwiZXJyb3JcIiBzeD17eyBtYXJnaW5Cb3R0b206IDUgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldEJyZXZvTW9kdWxlLmNvbnRhY3RJbXBvcnQuY29udGFjdE5vT3B0SW5BbGVydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiTm8gRG91YmxlIE9wdC1JbiBlbWFpbCB3aWxsIGJlIHNlbnQuIFBsZWFzZSBlbnN1cmUgcmVjaXBpZW50cyBoYXZlIGdpdmVuIHRoZWlyIGNvbnNlbnQgYmVmb3JlIHByb2NlZWRpbmcuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2FsbG93QWRkaW5nQ29udGFjdHNXaXRob3V0RG9pICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGVja2JveEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNlbmREb3VibGVPcHRJblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldEJyZXZvTW9kdWxlLmNvbnRhY3RJbXBvcnQuc2VuZERvdWJsZU9wdEluTWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIlNlbmQgZG91YmxlIG9wdC1pbiBlbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9GaW5hbEZvcm0+XG4gICAgICAgICAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gICAgICAgICAgICA8RGlhbG9nQWN0aW9ucz5cbiAgICAgICAgICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e2hhbmRsZUNsb3NlfT5cbiAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLmNhbmNlbH0gLz5cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJwcmltYXJ5XCIgb25DbGljaz17KCkgPT4gZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKCl9PlxuICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0QnJldm9Nb2R1bGUuY29udGFjdEltcG9ydC5pbXBvcnRDb250YWN0c1wiIGRlZmF1bHRNZXNzYWdlPVwiSW1wb3J0IENvbnRhY3RzXCIgLz5cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvRGlhbG9nQWN0aW9ucz5cbiAgICAgICAgPC9EaWFsb2c+XG4gICAgKTtcblxuICAgIGNvbnN0IGNvbXBvbmVudCA9IHVzZU1lbW8oXG4gICAgICAgICgpID0+IChcbiAgICAgICAgICAgIDxDb250YWN0SW1wb3J0Q29tcG9uZW50XG4gICAgICAgICAgICAgICAgc2NvcGU9e3Njb3BlfVxuICAgICAgICAgICAgICAgIHRhcmdldEdyb3VwSWQ9e3RhcmdldEdyb3VwSWR9XG4gICAgICAgICAgICAgICAgZmlsZUlucHV0UmVmPXtmaWxlSW5wdXRSZWZ9XG4gICAgICAgICAgICAgICAgc2VuZERvdWJsZU9wdEluPXtzZW5kRG91YmxlT3B0SW59XG4gICAgICAgICAgICAgICAgcmVmZXRjaFF1ZXJpZXM9e3JlZmV0Y2hRdWVyaWVzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgKSxcbiAgICAgICAgW3JlZmV0Y2hRdWVyaWVzLCBzY29wZSwgdGFyZ2V0R3JvdXBJZCwgc2VuZERvdWJsZU9wdEluXSxcbiAgICApO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgICAgbW9yZUFjdGlvbnNNZW51SXRlbSxcbiAgICAgICAgPD5cbiAgICAgICAgICAgIHtkaWFsb2d9XG4gICAgICAgICAgICB7Y29tcG9uZW50fVxuICAgICAgICA8Lz4sXG4gICAgXTtcbn07XG5cbmludGVyZmFjZSBVc2VDb250YWN0Q29tcG9uZW50UHJvcHMgZXh0ZW5kcyBVc2VDb250YWN0SW1wb3J0UHJvcHMge1xuICAgIGZpbGVJbnB1dFJlZjogUmVmT2JqZWN0PEhUTUxJbnB1dEVsZW1lbnQ+O1xufVxuXG5jb25zdCBDb250YWN0SW1wb3J0Q29tcG9uZW50ID0gKHsgc2NvcGUsIHRhcmdldEdyb3VwSWQsIGZpbGVJbnB1dFJlZiwgc2VuZERvdWJsZU9wdEluLCByZWZldGNoUXVlcmllcyB9OiBVc2VDb250YWN0Q29tcG9uZW50UHJvcHMpID0+IHtcbiAgICBjb25zdCBhcG9sbG9DbGllbnQgPSB1c2VBcG9sbG9DbGllbnQoKTtcbiAgICBjb25zdCBbaW1wb3J0aW5nQ3N2LCBzZXRJbXBvcnRpbmdDc3ZdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpbXBvcnRJbmZvcm1hdGlvbiwgc2V0SW1wb3J0SW5mb3JtYXRpb25dID0gdXNlU3RhdGU8R1FMQ3N2SW1wb3J0SW5mb3JtYXRpb24gfCBudWxsPihudWxsKTtcbiAgICBjb25zdCBkaWFsb2dPcGVuID0gaW1wb3J0aW5nQ3N2IHx8ICEhaW1wb3J0SW5mb3JtYXRpb247XG4gICAgY29uc3QgZXJyb3JEaWFsb2cgPSB1c2VFcnJvckRpYWxvZygpO1xuICAgIGNvbnN0IGNvbmZpZyA9IHVzZUJyZXZvQ29uZmlnKCk7XG4gICAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgICBjb25zdCBjbGllbnQgPSB1c2VBcG9sbG9DbGllbnQoKTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHVwbG9hZChmaWxlOiBGaWxlLCBzY29wZTogR1FMRW1haWxDYW1wYWlnbkNvbnRlbnRTY29wZUlucHV0LCBsaXN0SWRzPzogc3RyaW5nW10pOiBQcm9taXNlPEdRTENzdkltcG9ydEluZm9ybWF0aW9uPiB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChcImZpbGVcIiwgZmlsZSk7XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtjb25maWcuYXBpVXJsfS9maWxlLXVwbG9hZHMvdXBsb2FkYCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgaW50bC5mb3JtYXRNZXNzYWdlKHsgaWQ6IFwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmVycm9yLmZpbGVVcGxvYWRcIiwgZGVmYXVsdE1lc3NhZ2U6IFwiQ291bGQgbm90IHVwbG9hZCBmaWxlXCIgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsZVVwbG9hZElkID0gKGF3YWl0IHJlc3BvbnNlLmpzb24oKSkuaWQ7XG5cbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBjbGllbnQubXV0YXRlPEdRTFN0YXJ0QnJldm9Db250YWN0SW1wb3J0TXV0YXRpb24sIEdRTFN0YXJ0QnJldm9Db250YWN0SW1wb3J0TXV0YXRpb25WYXJpYWJsZXM+KHtcbiAgICAgICAgICAgIG11dGF0aW9uOiBzdGFydEJyZXZvQ29udGFjdEltcG9ydE11dGF0aW9uLFxuICAgICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICAgICAgZmlsZUlkOiBmaWxlVXBsb2FkSWQsXG4gICAgICAgICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgICAgICAgc2VuZERvdWJsZU9wdEluLFxuICAgICAgICAgICAgICAgIHRhcmdldEdyb3VwSWRzOiBsaXN0SWRzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgaW50bC5mb3JtYXRNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmVycm9yLmRlZmF1bHRNZXNzYWdlXCIsXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgICAgICAgXCJBbiBlcnJvciBvY2N1cmVkIGR1cmluZyB0aGUgaW1wb3J0LiBQbGVhc2UgdHJ5IGFnYWluIGluIGEgd2hpbGUgb3IgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IgaWYgdGhlIGVycm9yIHBlcnNpc3RzLlwiLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0YS5zdGFydEJyZXZvQ29udGFjdEltcG9ydDtcbiAgICB9XG5cbiAgICBjb25zdCBzYXZlRXJyb3JGaWxlID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBmYWlsZWRDb2x1bW5zID0gaW1wb3J0SW5mb3JtYXRpb24/LmZhaWxlZENvbHVtbnM7XG4gICAgICAgIGlmICghZmFpbGVkQ29sdW1ucyB8fCBmYWlsZWRDb2x1bW5zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGludGwuZm9ybWF0TWVzc2FnZSh7IGlkOiBcImV4cG9ydFwiLCBkZWZhdWx0TWVzc2FnZTogXCJObyBmYWlsZWQgY29sdW1ucyB0byBzYXZlXCIgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGVycm9yRGF0YSA9IFwiXCI7XG5cbiAgICAgICAgLy8gQWRkIGhlYWRlcnMgdG8gdGhlIGZpbGUgd2l0aG91dCB0cmFpbGluZyBzZW1pY29sb25cbiAgICAgICAgY29uc3QgaGVhZGVycyA9IE9iamVjdC5rZXlzKGZhaWxlZENvbHVtbnNbMF0pO1xuICAgICAgICBjb25zdCBoZWFkZXJTdHIgPSBoZWFkZXJzLmpvaW4oXCI7XCIpO1xuICAgICAgICBlcnJvckRhdGEgPSBgJHtoZWFkZXJTdHIucmVwbGFjZSgvOyskLywgXCJcIil9XFxuYDsgLy8gUmVtb3ZlIHRyYWlsaW5nIHNlbWljb2xvbiBmcm9tIHRoZSBoZWFkZXJcblxuICAgICAgICAvLyBBZGQgZWFjaCByb3cgb2YgZmFpbGVkIGNvbHVtbnMgZGF0YVxuICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBmYWlsZWRDb2x1bW5zKSB7XG4gICAgICAgICAgICAvLyBVc2UgT2JqZWN0LnZhbHVlcyB0byBnZXQgdGhlIHZhbHVlcyBvZiBlYWNoIGNvbHVtblxuICAgICAgICAgICAgY29uc3Qgcm93ID0gT2JqZWN0LnZhbHVlcyhjb2x1bW4pOyAvLyBObyBuZWVkIHRvIGNoZWNrIGZvciB1bmRlZmluZWQvbnVsbFxuXG4gICAgICAgICAgICAvLyBKb2luIHJvdyB2YWx1ZXMgYW5kIHJlbW92ZSB0aGUgdHJhaWxpbmcgc2VtaWNvbG9uIGlmIG5vdCBuZWVkZWRcbiAgICAgICAgICAgIGNvbnN0IHJvd1N0ciA9IHJvdy5qb2luKFwiO1wiKTtcbiAgICAgICAgICAgIGVycm9yRGF0YSArPSBgJHtyb3dTdHIucmVwbGFjZSgvOyskLywgXCJcIil9XFxuYDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENyZWF0ZSBhbmQgZG93bmxvYWQgdGhlIGZpbGVcbiAgICAgICAgY29uc3QgZmlsZSA9IG5ldyBCbG9iKFtlcnJvckRhdGFdLCB7IHR5cGU6IFwidGV4dC9jc3Y7Y2hhcnNldD11dGYtOFwiIH0pO1xuICAgICAgICBzYXZlQXMoZmlsZSwgYGVycm9yLWxvZy0ke25ldyBEYXRlKCkudG9JU09TdHJpbmcoKX0uY3N2YCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHNhdmVCbGFja2xpc3RlZENvbnRhY3RzRmlsZSA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgYmxhY2tsaXN0ZWRDb250YWN0c0NvbHVtbnMgPSBpbXBvcnRJbmZvcm1hdGlvbj8uYmxhY2tsaXN0ZWRDb2x1bW5zO1xuICAgICAgICBpZiAoIWJsYWNrbGlzdGVkQ29udGFjdHNDb2x1bW5zIHx8IGJsYWNrbGlzdGVkQ29udGFjdHNDb2x1bW5zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGludGwuZm9ybWF0TWVzc2FnZSh7IGlkOiBcImV4cG9ydFwiLCBkZWZhdWx0TWVzc2FnZTogXCJObyBmYWlsZWQgY29sdW1ucyB0byBzYXZlXCIgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGJsYWNrbGlzdGVkQ29udGFjdHNEYXRhID0gXCJcIjtcblxuICAgICAgICAvLyBBZGQgaGVhZGVycyB0byB0aGUgZmlsZSB3aXRob3V0IHRyYWlsaW5nIHNlbWljb2xvblxuICAgICAgICBjb25zdCBoZWFkZXJzID0gT2JqZWN0LmtleXMoYmxhY2tsaXN0ZWRDb250YWN0c0NvbHVtbnNbMF0pO1xuICAgICAgICBjb25zdCBoZWFkZXJTdHIgPSBoZWFkZXJzLmpvaW4oXCI7XCIpO1xuICAgICAgICBibGFja2xpc3RlZENvbnRhY3RzRGF0YSA9IGAke2hlYWRlclN0ci5yZXBsYWNlKC87KyQvLCBcIlwiKX1cXG5gOyAvLyBSZW1vdmUgdHJhaWxpbmcgc2VtaWNvbG9uIGZyb20gdGhlIGhlYWRlclxuXG4gICAgICAgIC8vIEFkZCBlYWNoIHJvdyBvZiBmYWlsZWQgY29sdW1ucyBkYXRhXG4gICAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGJsYWNrbGlzdGVkQ29udGFjdHNDb2x1bW5zKSB7XG4gICAgICAgICAgICAvLyBVc2UgT2JqZWN0LnZhbHVlcyB0byBnZXQgdGhlIHZhbHVlcyBvZiBlYWNoIGNvbHVtblxuICAgICAgICAgICAgY29uc3Qgcm93ID0gT2JqZWN0LnZhbHVlcyhjb2x1bW4pOyAvLyBObyBuZWVkIHRvIGNoZWNrIGZvciB1bmRlZmluZWQvbnVsbFxuXG4gICAgICAgICAgICAvLyBKb2luIHJvdyB2YWx1ZXMgYW5kIHJlbW92ZSB0aGUgdHJhaWxpbmcgc2VtaWNvbG9uIGlmIG5vdCBuZWVkZWRcbiAgICAgICAgICAgIGNvbnN0IHJvd1N0ciA9IHJvdy5qb2luKFwiO1wiKTtcbiAgICAgICAgICAgIGJsYWNrbGlzdGVkQ29udGFjdHNEYXRhICs9IGAke3Jvd1N0ci5yZXBsYWNlKC87KyQvLCBcIlwiKX1cXG5gO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIGFuZCBkb3dubG9hZCB0aGUgZmlsZVxuICAgICAgICBjb25zdCBmaWxlID0gbmV3IEJsb2IoW2JsYWNrbGlzdGVkQ29udGFjdHNEYXRhXSwgeyB0eXBlOiBcInRleHQvY3N2O2NoYXJzZXQ9dXRmLThcIiB9KTtcbiAgICAgICAgc2F2ZUFzKGZpbGUsIGBibGFja2xpc3RlZC1jb250YWN0LWxvZy0ke25ldyBEYXRlKCkudG9JU09TdHJpbmcoKX0uY3N2YCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHsgZ2V0SW5wdXRQcm9wcyB9ID0gdXNlRHJvcHpvbmUoe1xuICAgICAgICBhY2NlcHQ6IHsgXCJ0ZXh0L2NzdlwiOiBbXSB9LFxuICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgIG9uRHJvcDogYXN5bmMgKGFjY2VwdGVkRmlsZXM6IEZpbGVbXSkgPT4ge1xuICAgICAgICAgICAgc2V0SW1wb3J0aW5nQ3N2KHRydWUpO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBhY2NlcHRlZEZpbGVzWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB1cGxvYWQoZmlsZSwgc2NvcGUsIHRhcmdldEdyb3VwSWQgPyBbdGFyZ2V0R3JvdXBJZF0gOiBbXSk7XG4gICAgICAgICAgICAgICAgYXBvbGxvQ2xpZW50LnJlZmV0Y2hRdWVyaWVzKHsgaW5jbHVkZTogcmVmZXRjaFF1ZXJpZXMgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRJbXBvcnRpbmdDc3YoZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmVycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEaWFsb2c/LnNob3dFcnJvcih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IDxGb3JtYXR0ZWRNZXNzYWdlIHsuLi5tZXNzYWdlcy5lcnJvcn0gLz4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlck1lc3NhZ2U6IGRhdGEuZXJyb3JNZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBkYXRhLmVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW1wb3J0SW5mb3JtYXRpb24oZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBzZXRJbXBvcnRpbmdDc3YoZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdXNlck1lc3NhZ2UgPSAoXG4gICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5lcnJvci5kZWZhdWx0TWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIkFuIGVycm9yIG9jY3VyZWQgZHVyaW5nIHRoZSBpbXBvcnQuIFBsZWFzZSB0cnkgYWdhaW4gaW4gYSB3aGlsZSBvciBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvciBpZiB0aGUgZXJyb3IgcGVyc2lzdHMuXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZXJyb3JEaWFsb2c/LnNob3dFcnJvcih7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiA8Rm9ybWF0dGVkTWVzc2FnZSB7Li4ubWVzc2FnZXMuZXJyb3J9IC8+LFxuICAgICAgICAgICAgICAgICAgICB1c2VyTWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IFN0cmluZyhlKSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBoaWRkZW4gey4uLmdldElucHV0UHJvcHMoKX0gcmVmPXtmaWxlSW5wdXRSZWZ9IC8+XG4gICAgICAgICAgICA8RGlhbG9nIG9wZW49e2RpYWxvZ09wZW59PlxuICAgICAgICAgICAgICAgIDxEaWFsb2dUaXRsZT5cbiAgICAgICAgICAgICAgICAgICAge2ltcG9ydGluZ0NzdiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5pbXBvcnRpbmcudGl0bGVcIiBkZWZhdWx0TWVzc2FnZT1cIkltcG9ydGluZyBjb250YWN0cyBmcm9tIENTVi4uLlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIHtpbXBvcnRJbmZvcm1hdGlvbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5pbXBvcnRTdWNjZXNzZnVsLnRpdGxlXCIgZGVmYXVsdE1lc3NhZ2U9XCJJbXBvcnQgc3VjY2Vzc2Z1bFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9EaWFsb2dUaXRsZT5cbiAgICAgICAgICAgICAgICA8RGlhbG9nQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAge2ltcG9ydGluZ0NzdiAmJiA8TG9hZGluZyAvPn1cbiAgICAgICAgICAgICAgICAgICAge2ltcG9ydEluZm9ybWF0aW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ltcG9ydEluZm9ybWF0aW9uLmNyZWF0ZWQgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmltcG9ydFN1Y2Nlc3NmdWwuY29udGFjdHNJbXBvcnRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cInthbW91bnR9IGNvbnRhY3QocykgaGF2ZSBiZWVuIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgYW1vdW50OiBpbXBvcnRJbmZvcm1hdGlvbi5jcmVhdGVkIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW1wb3J0SW5mb3JtYXRpb24udXBkYXRlZCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldEJyZXZvTW9kdWxlLnVzZUNvbnRhY3RJbXBvcnQuaW1wb3J0U3VjY2Vzc2Z1bC5jb250YWN0c1VwZGF0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJ7YW1vdW50fSBjb250YWN0KHMpIGhhdmUgYmVlbiB1cGRhdGVkLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgYW1vdW50OiBpbXBvcnRJbmZvcm1hdGlvbi51cGRhdGVkIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpbXBvcnRJbmZvcm1hdGlvbi5mYWlsZWQgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveCBtdD17Mn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWxlcnQgc2V2ZXJpdHk9XCJlcnJvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmVycm9yLmNvbnRhY3RzQ291bGROb3RCZUltcG9ydGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJ7YW1vdW50fSBjb250YWN0KHMpIGNvdWxkIG5vdCBiZSBpbXBvcnRlZC4gPGxpbms+RG93bmxvYWQgdGhpcyBmaWxlPC9saW5rPiB0byBnZXQgdGhlIGZhaWxpbmcgcm93KHMpLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBpbXBvcnRJbmZvcm1hdGlvbi5mYWlsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiAoY2h1bmtzOiBSZWFjdE5vZGUpID0+IDxDc3ZEb3dubG9hZExpbmsgb25DbGljaz17c2F2ZUVycm9yRmlsZX0+e2NodW5rc308L0NzdkRvd25sb2FkTGluaz4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWxlcnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW1wb3J0SW5mb3JtYXRpb24uYmxhY2tsaXN0ZWQgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveCBtdD17Mn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWxlcnQgc2V2ZXJpdHk9XCJlcnJvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmVycm9yLmNvbnRhY3RzQXJlQmxhY2tsaXN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cInthbW91bnR9IGNvbnRhY3RzIGNvdWxkIG5vdCBiZSBpbXBvcnRlZCBhcyB0aGV5IGFyZSBibGFja2xpc3RlZC4gIDxsaW5rPkRvd25sb2FkIHRoaXMgZmlsZTwvbGluaz4gdG8gZ2V0IHRoZSBibGFja2xpc3RlZCBjb250YWN0KHMpLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBpbXBvcnRJbmZvcm1hdGlvbi5ibGFja2xpc3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IChjaHVua3M6IFJlYWN0Tm9kZSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDc3ZEb3dubG9hZExpbmsgb25DbGljaz17c2F2ZUJsYWNrbGlzdGVkQ29udGFjdHNGaWxlfT57Y2h1bmtzfTwvQ3N2RG93bmxvYWRMaW5rPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoaW1wb3J0SW5mb3JtYXRpb24uY3JlYXRlZCA+IDAgfHwgaW1wb3J0SW5mb3JtYXRpb24udXBkYXRlZCA+IDApICYmIHNlbmREb3VibGVPcHRJbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3ggbXQ9ezJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IHNldmVyaXR5PVwid2FybmluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmltcG9ydFN1Y2Nlc3NmdWwuZG9pTm90aWNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJDb250YWN0cyB3aG8gaGF2ZSBub3QgeWV0IGNvbmZpcm1lZCB0aGVpciBzdWJzY3JpcHRpb24gd2lsbCByZWNlaXZlIGEgZG91YmxlIG9wdC1pbiBlbWFpbCB0byBjb21wbGV0ZSB0aGUgcHJvY2Vzcy4gVGhlc2UgY29udGFjdHMgd2lsbCBub3QgYXBwZWFyIGluIHRoaXMgbGlzdCB1bnRpbCB0aGV5IGNvbmZpcm0gdGhlaXIgc3Vic2NyaXB0aW9uLiBPbmNlIGNvbmZpcm1lZCwgdGhleSB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgYWRkZWQgdG8gdGhlIGFwcHJvcHJpYXRlIHRhcmdldCBncm91cChzKS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9EaWFsb2dDb250ZW50PlxuICAgICAgICAgICAgICAgIDxEaWFsb2dBY3Rpb25zPlxuICAgICAgICAgICAgICAgICAgICB7aW1wb3J0SW5mb3JtYXRpb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBzZXRJbXBvcnRJbmZvcm1hdGlvbihudWxsKX0gdmFyaWFudD1cInByaW1hcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSB7Li4ubWVzc2FnZXMub2t9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0RpYWxvZ0FjdGlvbnM+XG4gICAgICAgICAgICA8L0RpYWxvZz5cbiAgICAgICAgPC8+XG4gICAgKTtcbn07XG5cbmNvbnN0IENzdkRvd25sb2FkTGluayA9IHN0eWxlZChcInNwYW5cIilgXG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucGFsZXR0ZS5pbmZvLm1haW59O1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbmA7XG4iXX0= */"));
462
+ }, ";text-decoration:underline;cursor:pointer;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vY29udGFjdEltcG9ydC91c2VDb250YWN0SW1wb3J0RnJvbUNzdi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNlhzQyIsImZpbGUiOiIuLi8uLi8uLi9zcmMvY29tbW9uL2NvbnRhY3RJbXBvcnQvdXNlQ29udGFjdEltcG9ydEZyb21Dc3YudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQXBvbGxvQ2xpZW50IH0gZnJvbSBcIkBhcG9sbG8vY2xpZW50XCI7XG5pbXBvcnQgeyB0eXBlIFJlZmV0Y2hRdWVyaWVzSW5jbHVkZSB9IGZyb20gXCJAYXBvbGxvL2NsaWVudC9jb3JlL3R5cGVzXCI7XG5pbXBvcnQgeyBBbGVydCwgQnV0dG9uLCBDaGVja2JveEZpZWxkLCBEaWFsb2csIGRvd25sb2FkRmlsZSwgRmluYWxGb3JtLCBMb2FkaW5nLCBtZXNzYWdlcywgdXNlRXJyb3JEaWFsb2cgfSBmcm9tIFwiQGNvbWV0L2FkbWluXCI7XG5pbXBvcnQgeyBVcGxvYWQgfSBmcm9tIFwiQGNvbWV0L2FkbWluLWljb25zXCI7XG5pbXBvcnQgeyBCb3gsIERpYWxvZ0FjdGlvbnMsIERpYWxvZ0NvbnRlbnQsIERpYWxvZ1RpdGxlLCB0eXBlIE1lbnVJdGVtIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHsgdHlwZSBDb21wb25lbnRQcm9wcywgdHlwZSBSZWFjdE5vZGUsIHR5cGUgUmVmT2JqZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEcm9wem9uZSB9IGZyb20gXCJyZWFjdC1kcm9wem9uZVwiO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdXNlSW50bCB9IGZyb20gXCJyZWFjdC1pbnRsXCI7XG5cbmltcG9ydCB7IHR5cGUgR1FMQ3N2SW1wb3J0SW5mb3JtYXRpb24sIHR5cGUgR1FMRW1haWxDYW1wYWlnbkNvbnRlbnRTY29wZUlucHV0IH0gZnJvbSBcIi4uLy4uL2dyYXBocWwuZ2VuZXJhdGVkXCI7XG5pbXBvcnQgeyB1c2VCcmV2b0NvbmZpZyB9IGZyb20gXCIuLi9CcmV2b0NvbmZpZ1Byb3ZpZGVyXCI7XG5pbXBvcnQgeyBzdGFydEJyZXZvQ29udGFjdEltcG9ydE11dGF0aW9uIH0gZnJvbSBcIi4vdXNlQ29udGFjdEltcG9ydEZyb21Dc3YuZ3FsXCI7XG5pbXBvcnQgeyB0eXBlIEdRTFN0YXJ0QnJldm9Db250YWN0SW1wb3J0TXV0YXRpb24sIHR5cGUgR1FMU3RhcnRCcmV2b0NvbnRhY3RJbXBvcnRNdXRhdGlvblZhcmlhYmxlcyB9IGZyb20gXCIuL3VzZUNvbnRhY3RJbXBvcnRGcm9tQ3N2LmdxbC5nZW5lcmF0ZWRcIjtcblxuaW50ZXJmYWNlIFVzZUNvbnRhY3RJbXBvcnRQcm9wcyB7XG4gICAgc2NvcGU6IEdRTEVtYWlsQ2FtcGFpZ25Db250ZW50U2NvcGVJbnB1dDtcbiAgICBzZW5kRG91YmxlT3B0SW46IGJvb2xlYW47XG4gICAgdGFyZ2V0R3JvdXBJZD86IHN0cmluZztcbiAgICByZWZldGNoUXVlcmllcz86IFJlZmV0Y2hRdWVyaWVzSW5jbHVkZTtcbn1cblxudHlwZSBDb250YWN0SW1wb3J0RnJvbUNzdkZvcm0gPSB7XG4gICAgc2VuZERvdWJsZU9wdEluOiBib29sZWFuO1xufTtcblxuaW50ZXJmYWNlIEFjdGlvbkl0ZW0gZXh0ZW5kcyBDb21wb25lbnRQcm9wczx0eXBlb2YgTWVudUl0ZW0+IHtcbiAgICB0eXBlOiBcImFjdGlvblwiO1xuICAgIGxhYmVsOiBSZWFjdE5vZGU7XG4gICAgc3RhcnRBZG9ybm1lbnQ/OiBSZWFjdE5vZGU7XG59XG5cbmV4cG9ydCBjb25zdCB1c2VDb250YWN0SW1wb3J0RnJvbUNzdiA9ICh7IHNjb3BlLCB0YXJnZXRHcm91cElkLCByZWZldGNoUXVlcmllcyB9OiBVc2VDb250YWN0SW1wb3J0UHJvcHMpOiBbQWN0aW9uSXRlbSwgUmVhY3ROb2RlXSA9PiB7XG4gICAgY29uc3QgZmlsZUlucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbc2VuZERvdWJsZU9wdEluLCBzZXRTZW5kRG91YmxlT3B0SW5dID0gdXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgeyBhbGxvd0FkZGluZ0NvbnRhY3RzV2l0aG91dERvaSB9ID0gdXNlQnJldm9Db25maWcoKTtcblxuICAgIGNvbnN0IG1vcmVBY3Rpb25zTWVudUl0ZW06IEFjdGlvbkl0ZW0gPSB1c2VNZW1vKFxuICAgICAgICAoKSA9PiAoe1xuICAgICAgICAgICAgdHlwZTogXCJhY3Rpb25cIixcbiAgICAgICAgICAgIGxhYmVsOiAoXG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldEJyZXZvTW9kdWxlLnRhcmdldEdyb3VwLmFzc2lnbmVkQ29udGFjdHMuYWN0aW9ucy5pbXBvcnRGcm9tQ3N2XCJcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJJbXBvcnQgY29udGFjdHMgZnJvbSBDU1ZcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhcnRBZG9ybm1lbnQ6IDxVcGxvYWQgLz4sXG4gICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiBzZXRPcGVuKHRydWUpLFxuICAgICAgICB9KSxcbiAgICAgICAgW10sXG4gICAgKTtcblxuICAgIGNvbnN0IGhhbmRsZUNsb3NlID0gKCkgPT4gc2V0T3BlbihmYWxzZSk7XG5cbiAgICBjb25zdCBkaWFsb2cgPSAoXG4gICAgICAgIDxEaWFsb2cgb3Blbj17b3Blbn0gb25DbG9zZT17aGFuZGxlQ2xvc2V9PlxuICAgICAgICAgICAgPERpYWxvZ1RpdGxlPlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXRCcmV2b01vZHVsZS5jb250YWN0SW1wb3J0LnRpdGxlXCIgZGVmYXVsdE1lc3NhZ2U9XCJJbXBvcnRpbmcgY29udGFjdHMgZnJvbSBDU1ZcIiAvPlxuICAgICAgICAgICAgPC9EaWFsb2dUaXRsZT5cbiAgICAgICAgICAgIDxEaWFsb2dDb250ZW50PlxuICAgICAgICAgICAgICAgIDxGaW5hbEZvcm08Q29udGFjdEltcG9ydEZyb21Dc3ZGb3JtPlxuICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdD17KHZhbHVlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIG1vZGU9XCJhZGRcIlxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsVmFsdWVzPXt7IHNlbmREb3VibGVPcHRJbjogdHJ1ZSB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgeyh7IHZhbHVlcyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTZW5kRG91YmxlT3B0SW4odmFsdWVzLnNlbmREb3VibGVPcHRJbik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZhbHVlcy5zZW5kRG91YmxlT3B0SW4gPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWxlcnQgc2V2ZXJpdHk9XCJ3YXJuaW5nXCIgc3g9e3sgbWFyZ2luQm90dG9tOiA1IH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS5jb250YWN0SW1wb3J0LmNvbnRhY3RBZGRBbGVydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiVGhlIGNvbnRhY3Qgd2lsbCBnZXQgYSBkb3VibGUgb3B0LWluIGVtYWlsIHRvIGNvbmZpcm0gdGhlIHN1YnNjcmlwdGlvbi4gQWZ0ZXIgdGhlIGNvbnRhY3QncyBjb25maXJtYXRpb24sIHRoZSBjb250YWN0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdGFyZ2V0IGdyb3VwcyBpbiB0aGlzIHNjb3BlIGRlcGVuZGluZyBvbiB0aGUgY29udGFjdCdzIGF0dHJpYnV0ZXMuIEJlZm9yZSB0aGUgY29uZmlybWF0aW9uIHRoZSBjb250YWN0IHdpbGwgbm90IGJlIHNob3duIG9uIHRoZSBjb250YWN0cyBwYWdlLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWxlcnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWxlcnQgc2V2ZXJpdHk9XCJlcnJvclwiIHN4PXt7IG1hcmdpbkJvdHRvbTogNSB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0QnJldm9Nb2R1bGUuY29udGFjdEltcG9ydC5jb250YWN0Tm9PcHRJbkFsZXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJObyBEb3VibGUgT3B0LUluIGVtYWlsIHdpbGwgYmUgc2VudC4gUGxlYXNlIGVuc3VyZSByZWNpcGllbnRzIGhhdmUgZ2l2ZW4gdGhlaXIgY29uc2VudCBiZWZvcmUgcHJvY2VlZGluZy5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7YWxsb3dBZGRpbmdDb250YWN0c1dpdGhvdXREb2kgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrYm94RmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwic2VuZERvdWJsZU9wdEluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0QnJldm9Nb2R1bGUuY29udGFjdEltcG9ydC5zZW5kRG91YmxlT3B0SW5NYWlsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiU2VuZCBkb3VibGUgb3B0LWluIGVtYWlsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L0ZpbmFsRm9ybT5cbiAgICAgICAgICAgIDwvRGlhbG9nQ29udGVudD5cbiAgICAgICAgICAgIDxEaWFsb2dBY3Rpb25zPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gb25DbGljaz17aGFuZGxlQ2xvc2V9PlxuICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSB7Li4ubWVzc2FnZXMuY2FuY2VsfSAvPlxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cInByaW1hcnlcIiBvbkNsaWNrPXsoKSA9PiBmaWxlSW5wdXRSZWYuY3VycmVudD8uY2xpY2soKX0+XG4gICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXRCcmV2b01vZHVsZS5jb250YWN0SW1wb3J0LmltcG9ydENvbnRhY3RzXCIgZGVmYXVsdE1lc3NhZ2U9XCJJbXBvcnQgQ29udGFjdHNcIiAvPlxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPC9EaWFsb2dBY3Rpb25zPlxuICAgICAgICA8L0RpYWxvZz5cbiAgICApO1xuXG4gICAgY29uc3QgY29tcG9uZW50ID0gdXNlTWVtbyhcbiAgICAgICAgKCkgPT4gKFxuICAgICAgICAgICAgPENvbnRhY3RJbXBvcnRDb21wb25lbnRcbiAgICAgICAgICAgICAgICBzY29wZT17c2NvcGV9XG4gICAgICAgICAgICAgICAgdGFyZ2V0R3JvdXBJZD17dGFyZ2V0R3JvdXBJZH1cbiAgICAgICAgICAgICAgICBmaWxlSW5wdXRSZWY9e2ZpbGVJbnB1dFJlZn1cbiAgICAgICAgICAgICAgICBzZW5kRG91YmxlT3B0SW49e3NlbmREb3VibGVPcHRJbn1cbiAgICAgICAgICAgICAgICByZWZldGNoUXVlcmllcz17cmVmZXRjaFF1ZXJpZXN9XG4gICAgICAgICAgICAvPlxuICAgICAgICApLFxuICAgICAgICBbcmVmZXRjaFF1ZXJpZXMsIHNjb3BlLCB0YXJnZXRHcm91cElkLCBzZW5kRG91YmxlT3B0SW5dLFxuICAgICk7XG5cbiAgICByZXR1cm4gW1xuICAgICAgICBtb3JlQWN0aW9uc01lbnVJdGVtLFxuICAgICAgICA8PlxuICAgICAgICAgICAge2RpYWxvZ31cbiAgICAgICAgICAgIHtjb21wb25lbnR9XG4gICAgICAgIDwvPixcbiAgICBdO1xufTtcblxuaW50ZXJmYWNlIFVzZUNvbnRhY3RDb21wb25lbnRQcm9wcyBleHRlbmRzIFVzZUNvbnRhY3RJbXBvcnRQcm9wcyB7XG4gICAgZmlsZUlucHV0UmVmOiBSZWZPYmplY3Q8SFRNTElucHV0RWxlbWVudCB8IG51bGw+O1xufVxuXG5jb25zdCBDb250YWN0SW1wb3J0Q29tcG9uZW50ID0gKHsgc2NvcGUsIHRhcmdldEdyb3VwSWQsIGZpbGVJbnB1dFJlZiwgc2VuZERvdWJsZU9wdEluLCByZWZldGNoUXVlcmllcyB9OiBVc2VDb250YWN0Q29tcG9uZW50UHJvcHMpID0+IHtcbiAgICBjb25zdCBhcG9sbG9DbGllbnQgPSB1c2VBcG9sbG9DbGllbnQoKTtcbiAgICBjb25zdCBbaW1wb3J0aW5nQ3N2LCBzZXRJbXBvcnRpbmdDc3ZdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpbXBvcnRJbmZvcm1hdGlvbiwgc2V0SW1wb3J0SW5mb3JtYXRpb25dID0gdXNlU3RhdGU8R1FMQ3N2SW1wb3J0SW5mb3JtYXRpb24gfCBudWxsPihudWxsKTtcbiAgICBjb25zdCBkaWFsb2dPcGVuID0gaW1wb3J0aW5nQ3N2IHx8ICEhaW1wb3J0SW5mb3JtYXRpb247XG4gICAgY29uc3QgZXJyb3JEaWFsb2cgPSB1c2VFcnJvckRpYWxvZygpO1xuICAgIGNvbnN0IGNvbmZpZyA9IHVzZUJyZXZvQ29uZmlnKCk7XG4gICAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgICBjb25zdCBjbGllbnQgPSB1c2VBcG9sbG9DbGllbnQoKTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHVwbG9hZChmaWxlOiBGaWxlLCBzY29wZTogR1FMRW1haWxDYW1wYWlnbkNvbnRlbnRTY29wZUlucHV0LCBsaXN0SWRzPzogc3RyaW5nW10pOiBQcm9taXNlPEdRTENzdkltcG9ydEluZm9ybWF0aW9uPiB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChcImZpbGVcIiwgZmlsZSk7XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtjb25maWcuYXBpVXJsfS9maWxlLXVwbG9hZHMvdXBsb2FkYCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgaW50bC5mb3JtYXRNZXNzYWdlKHsgaWQ6IFwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmVycm9yLmZpbGVVcGxvYWRcIiwgZGVmYXVsdE1lc3NhZ2U6IFwiQ291bGQgbm90IHVwbG9hZCBmaWxlXCIgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsZVVwbG9hZElkID0gKGF3YWl0IHJlc3BvbnNlLmpzb24oKSkuaWQ7XG5cbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBjbGllbnQubXV0YXRlPEdRTFN0YXJ0QnJldm9Db250YWN0SW1wb3J0TXV0YXRpb24sIEdRTFN0YXJ0QnJldm9Db250YWN0SW1wb3J0TXV0YXRpb25WYXJpYWJsZXM+KHtcbiAgICAgICAgICAgIG11dGF0aW9uOiBzdGFydEJyZXZvQ29udGFjdEltcG9ydE11dGF0aW9uLFxuICAgICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICAgICAgZmlsZUlkOiBmaWxlVXBsb2FkSWQsXG4gICAgICAgICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgICAgICAgc2VuZERvdWJsZU9wdEluLFxuICAgICAgICAgICAgICAgIHRhcmdldEdyb3VwSWRzOiBsaXN0SWRzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgaW50bC5mb3JtYXRNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmVycm9yLmRlZmF1bHRNZXNzYWdlXCIsXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgICAgICAgXCJBbiBlcnJvciBvY2N1cmVkIGR1cmluZyB0aGUgaW1wb3J0LiBQbGVhc2UgdHJ5IGFnYWluIGluIGEgd2hpbGUgb3IgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IgaWYgdGhlIGVycm9yIHBlcnNpc3RzLlwiLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0YS5zdGFydEJyZXZvQ29udGFjdEltcG9ydDtcbiAgICB9XG5cbiAgICBjb25zdCBzYXZlRXJyb3JGaWxlID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBmYWlsZWRDb2x1bW5zID0gaW1wb3J0SW5mb3JtYXRpb24/LmZhaWxlZENvbHVtbnM7XG4gICAgICAgIGlmICghZmFpbGVkQ29sdW1ucyB8fCBmYWlsZWRDb2x1bW5zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGludGwuZm9ybWF0TWVzc2FnZSh7IGlkOiBcImV4cG9ydFwiLCBkZWZhdWx0TWVzc2FnZTogXCJObyBmYWlsZWQgY29sdW1ucyB0byBzYXZlXCIgfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGVycm9yRGF0YSA9IFwiXCI7XG5cbiAgICAgICAgLy8gQWRkIGhlYWRlcnMgdG8gdGhlIGZpbGUgd2l0aG91dCB0cmFpbGluZyBzZW1pY29sb25cbiAgICAgICAgY29uc3QgaGVhZGVycyA9IE9iamVjdC5rZXlzKGZhaWxlZENvbHVtbnNbMF0pO1xuICAgICAgICBjb25zdCBoZWFkZXJTdHIgPSBoZWFkZXJzLmpvaW4oXCI7XCIpO1xuICAgICAgICBlcnJvckRhdGEgPSBgJHtoZWFkZXJTdHIucmVwbGFjZSgvOyskLywgXCJcIil9XFxuYDsgLy8gUmVtb3ZlIHRyYWlsaW5nIHNlbWljb2xvbiBmcm9tIHRoZSBoZWFkZXJcblxuICAgICAgICAvLyBBZGQgZWFjaCByb3cgb2YgZmFpbGVkIGNvbHVtbnMgZGF0YVxuICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBmYWlsZWRDb2x1bW5zKSB7XG4gICAgICAgICAgICAvLyBVc2UgT2JqZWN0LnZhbHVlcyB0byBnZXQgdGhlIHZhbHVlcyBvZiBlYWNoIGNvbHVtblxuICAgICAgICAgICAgY29uc3Qgcm93ID0gT2JqZWN0LnZhbHVlcyhjb2x1bW4pOyAvLyBObyBuZWVkIHRvIGNoZWNrIGZvciB1bmRlZmluZWQvbnVsbFxuXG4gICAgICAgICAgICAvLyBKb2luIHJvdyB2YWx1ZXMgYW5kIHJlbW92ZSB0aGUgdHJhaWxpbmcgc2VtaWNvbG9uIGlmIG5vdCBuZWVkZWRcbiAgICAgICAgICAgIGNvbnN0IHJvd1N0ciA9IHJvdy5qb2luKFwiO1wiKTtcbiAgICAgICAgICAgIGVycm9yRGF0YSArPSBgJHtyb3dTdHIucmVwbGFjZSgvOyskLywgXCJcIil9XFxuYDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENyZWF0ZSBhbmQgZG93bmxvYWQgdGhlIGZpbGVcbiAgICAgICAgZG93bmxvYWRGaWxlKG5ldyBCbG9iKFtlcnJvckRhdGFdLCB7IHR5cGU6IFwidGV4dC9jc3Y7Y2hhcnNldD11dGYtOFwiIH0pLCBgZXJyb3ItbG9nLSR7bmV3IERhdGUoKS50b0lTT1N0cmluZygpfS5jc3ZgKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc2F2ZUJsYWNrbGlzdGVkQ29udGFjdHNGaWxlID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBibGFja2xpc3RlZENvbnRhY3RzQ29sdW1ucyA9IGltcG9ydEluZm9ybWF0aW9uPy5ibGFja2xpc3RlZENvbHVtbnM7XG4gICAgICAgIGlmICghYmxhY2tsaXN0ZWRDb250YWN0c0NvbHVtbnMgfHwgYmxhY2tsaXN0ZWRDb250YWN0c0NvbHVtbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoaW50bC5mb3JtYXRNZXNzYWdlKHsgaWQ6IFwiZXhwb3J0XCIsIGRlZmF1bHRNZXNzYWdlOiBcIk5vIGZhaWxlZCBjb2x1bW5zIHRvIHNhdmVcIiB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYmxhY2tsaXN0ZWRDb250YWN0c0RhdGEgPSBcIlwiO1xuXG4gICAgICAgIC8vIEFkZCBoZWFkZXJzIHRvIHRoZSBmaWxlIHdpdGhvdXQgdHJhaWxpbmcgc2VtaWNvbG9uXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBPYmplY3Qua2V5cyhibGFja2xpc3RlZENvbnRhY3RzQ29sdW1uc1swXSk7XG4gICAgICAgIGNvbnN0IGhlYWRlclN0ciA9IGhlYWRlcnMuam9pbihcIjtcIik7XG4gICAgICAgIGJsYWNrbGlzdGVkQ29udGFjdHNEYXRhID0gYCR7aGVhZGVyU3RyLnJlcGxhY2UoLzsrJC8sIFwiXCIpfVxcbmA7IC8vIFJlbW92ZSB0cmFpbGluZyBzZW1pY29sb24gZnJvbSB0aGUgaGVhZGVyXG5cbiAgICAgICAgLy8gQWRkIGVhY2ggcm93IG9mIGZhaWxlZCBjb2x1bW5zIGRhdGFcbiAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgYmxhY2tsaXN0ZWRDb250YWN0c0NvbHVtbnMpIHtcbiAgICAgICAgICAgIC8vIFVzZSBPYmplY3QudmFsdWVzIHRvIGdldCB0aGUgdmFsdWVzIG9mIGVhY2ggY29sdW1uXG4gICAgICAgICAgICBjb25zdCByb3cgPSBPYmplY3QudmFsdWVzKGNvbHVtbik7IC8vIE5vIG5lZWQgdG8gY2hlY2sgZm9yIHVuZGVmaW5lZC9udWxsXG5cbiAgICAgICAgICAgIC8vIEpvaW4gcm93IHZhbHVlcyBhbmQgcmVtb3ZlIHRoZSB0cmFpbGluZyBzZW1pY29sb24gaWYgbm90IG5lZWRlZFxuICAgICAgICAgICAgY29uc3Qgcm93U3RyID0gcm93LmpvaW4oXCI7XCIpO1xuICAgICAgICAgICAgYmxhY2tsaXN0ZWRDb250YWN0c0RhdGEgKz0gYCR7cm93U3RyLnJlcGxhY2UoLzsrJC8sIFwiXCIpfVxcbmA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDcmVhdGUgYW5kIGRvd25sb2FkIHRoZSBmaWxlXG4gICAgICAgIGRvd25sb2FkRmlsZShcbiAgICAgICAgICAgIG5ldyBCbG9iKFtibGFja2xpc3RlZENvbnRhY3RzRGF0YV0sIHsgdHlwZTogXCJ0ZXh0L2NzdjtjaGFyc2V0PXV0Zi04XCIgfSksXG4gICAgICAgICAgICBgYmxhY2tsaXN0ZWQtY29udGFjdC1sb2ctJHtuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9LmNzdmAsXG4gICAgICAgICk7XG4gICAgfTtcblxuICAgIGNvbnN0IHsgZ2V0SW5wdXRQcm9wcyB9ID0gdXNlRHJvcHpvbmUoe1xuICAgICAgICBhY2NlcHQ6IHsgXCJ0ZXh0L2NzdlwiOiBbXSB9LFxuICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgIG9uRHJvcDogYXN5bmMgKGFjY2VwdGVkRmlsZXM6IEZpbGVbXSkgPT4ge1xuICAgICAgICAgICAgc2V0SW1wb3J0aW5nQ3N2KHRydWUpO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBhY2NlcHRlZEZpbGVzWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB1cGxvYWQoZmlsZSwgc2NvcGUsIHRhcmdldEdyb3VwSWQgPyBbdGFyZ2V0R3JvdXBJZF0gOiBbXSk7XG4gICAgICAgICAgICAgICAgYXBvbGxvQ2xpZW50LnJlZmV0Y2hRdWVyaWVzKHsgaW5jbHVkZTogcmVmZXRjaFF1ZXJpZXMgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRJbXBvcnRpbmdDc3YoZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmVycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEaWFsb2c/LnNob3dFcnJvcih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IDxGb3JtYXR0ZWRNZXNzYWdlIHsuLi5tZXNzYWdlcy5lcnJvcn0gLz4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlck1lc3NhZ2U6IGRhdGEuZXJyb3JNZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBkYXRhLmVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW1wb3J0SW5mb3JtYXRpb24oZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBzZXRJbXBvcnRpbmdDc3YoZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdXNlck1lc3NhZ2UgPSAoXG4gICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5lcnJvci5kZWZhdWx0TWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIkFuIGVycm9yIG9jY3VyZWQgZHVyaW5nIHRoZSBpbXBvcnQuIFBsZWFzZSB0cnkgYWdhaW4gaW4gYSB3aGlsZSBvciBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvciBpZiB0aGUgZXJyb3IgcGVyc2lzdHMuXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZXJyb3JEaWFsb2c/LnNob3dFcnJvcih7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiA8Rm9ybWF0dGVkTWVzc2FnZSB7Li4ubWVzc2FnZXMuZXJyb3J9IC8+LFxuICAgICAgICAgICAgICAgICAgICB1c2VyTWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IFN0cmluZyhlKSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBoaWRkZW4gey4uLmdldElucHV0UHJvcHMoKX0gcmVmPXtmaWxlSW5wdXRSZWZ9IC8+XG4gICAgICAgICAgICA8RGlhbG9nIG9wZW49e2RpYWxvZ09wZW59PlxuICAgICAgICAgICAgICAgIDxEaWFsb2dUaXRsZT5cbiAgICAgICAgICAgICAgICAgICAge2ltcG9ydGluZ0NzdiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5pbXBvcnRpbmcudGl0bGVcIiBkZWZhdWx0TWVzc2FnZT1cIkltcG9ydGluZyBjb250YWN0cyBmcm9tIENTVi4uLlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIHtpbXBvcnRJbmZvcm1hdGlvbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0QnJldm9Nb2R1bGUudXNlQ29udGFjdEltcG9ydC5pbXBvcnRTdWNjZXNzZnVsLnRpdGxlXCIgZGVmYXVsdE1lc3NhZ2U9XCJJbXBvcnQgc3VjY2Vzc2Z1bFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9EaWFsb2dUaXRsZT5cbiAgICAgICAgICAgICAgICA8RGlhbG9nQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAge2ltcG9ydGluZ0NzdiAmJiA8TG9hZGluZyAvPn1cbiAgICAgICAgICAgICAgICAgICAge2ltcG9ydEluZm9ybWF0aW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ltcG9ydEluZm9ybWF0aW9uLmNyZWF0ZWQgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmltcG9ydFN1Y2Nlc3NmdWwuY29udGFjdHNJbXBvcnRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cInthbW91bnR9IGNvbnRhY3QocykgaGF2ZSBiZWVuIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgYW1vdW50OiBpbXBvcnRJbmZvcm1hdGlvbi5jcmVhdGVkIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW1wb3J0SW5mb3JtYXRpb24udXBkYXRlZCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldEJyZXZvTW9kdWxlLnVzZUNvbnRhY3RJbXBvcnQuaW1wb3J0U3VjY2Vzc2Z1bC5jb250YWN0c1VwZGF0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJ7YW1vdW50fSBjb250YWN0KHMpIGhhdmUgYmVlbiB1cGRhdGVkLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgYW1vdW50OiBpbXBvcnRJbmZvcm1hdGlvbi51cGRhdGVkIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpbXBvcnRJbmZvcm1hdGlvbi5mYWlsZWQgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveCBtdD17Mn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWxlcnQgc2V2ZXJpdHk9XCJlcnJvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmVycm9yLmNvbnRhY3RzQ291bGROb3RCZUltcG9ydGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJ7YW1vdW50fSBjb250YWN0KHMpIGNvdWxkIG5vdCBiZSBpbXBvcnRlZC4gPGxpbms+RG93bmxvYWQgdGhpcyBmaWxlPC9saW5rPiB0byBnZXQgdGhlIGZhaWxpbmcgcm93KHMpLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBpbXBvcnRJbmZvcm1hdGlvbi5mYWlsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiAoY2h1bmtzOiBSZWFjdE5vZGUpID0+IDxDc3ZEb3dubG9hZExpbmsgb25DbGljaz17c2F2ZUVycm9yRmlsZX0+e2NodW5rc308L0NzdkRvd25sb2FkTGluaz4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWxlcnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW1wb3J0SW5mb3JtYXRpb24uYmxhY2tsaXN0ZWQgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveCBtdD17Mn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWxlcnQgc2V2ZXJpdHk9XCJlcnJvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmVycm9yLmNvbnRhY3RzQXJlQmxhY2tsaXN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cInthbW91bnR9IGNvbnRhY3RzIGNvdWxkIG5vdCBiZSBpbXBvcnRlZCBhcyB0aGV5IGFyZSBibGFja2xpc3RlZC4gIDxsaW5rPkRvd25sb2FkIHRoaXMgZmlsZTwvbGluaz4gdG8gZ2V0IHRoZSBibGFja2xpc3RlZCBjb250YWN0KHMpLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBpbXBvcnRJbmZvcm1hdGlvbi5ibGFja2xpc3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IChjaHVua3M6IFJlYWN0Tm9kZSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDc3ZEb3dubG9hZExpbmsgb25DbGljaz17c2F2ZUJsYWNrbGlzdGVkQ29udGFjdHNGaWxlfT57Y2h1bmtzfTwvQ3N2RG93bmxvYWRMaW5rPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoaW1wb3J0SW5mb3JtYXRpb24uY3JlYXRlZCA+IDAgfHwgaW1wb3J0SW5mb3JtYXRpb24udXBkYXRlZCA+IDApICYmIHNlbmREb3VibGVPcHRJbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3ggbXQ9ezJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IHNldmVyaXR5PVwid2FybmluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXRCcmV2b01vZHVsZS51c2VDb250YWN0SW1wb3J0LmltcG9ydFN1Y2Nlc3NmdWwuZG9pTm90aWNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJDb250YWN0cyB3aG8gaGF2ZSBub3QgeWV0IGNvbmZpcm1lZCB0aGVpciBzdWJzY3JpcHRpb24gd2lsbCByZWNlaXZlIGEgZG91YmxlIG9wdC1pbiBlbWFpbCB0byBjb21wbGV0ZSB0aGUgcHJvY2Vzcy4gVGhlc2UgY29udGFjdHMgd2lsbCBub3QgYXBwZWFyIGluIHRoaXMgbGlzdCB1bnRpbCB0aGV5IGNvbmZpcm0gdGhlaXIgc3Vic2NyaXB0aW9uLiBPbmNlIGNvbmZpcm1lZCwgdGhleSB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgYWRkZWQgdG8gdGhlIGFwcHJvcHJpYXRlIHRhcmdldCBncm91cChzKS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9EaWFsb2dDb250ZW50PlxuICAgICAgICAgICAgICAgIDxEaWFsb2dBY3Rpb25zPlxuICAgICAgICAgICAgICAgICAgICB7aW1wb3J0SW5mb3JtYXRpb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBzZXRJbXBvcnRJbmZvcm1hdGlvbihudWxsKX0gdmFyaWFudD1cInByaW1hcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSB7Li4ubWVzc2FnZXMub2t9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0RpYWxvZ0FjdGlvbnM+XG4gICAgICAgICAgICA8L0RpYWxvZz5cbiAgICAgICAgPC8+XG4gICAgKTtcbn07XG5cbmNvbnN0IENzdkRvd25sb2FkTGluayA9IHN0eWxlZChcInNwYW5cIilgXG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucGFsZXR0ZS5pbmZvLm1haW59O1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbmA7XG4iXX0= */"));
@@ -1,5 +1,5 @@
1
1
  import { type ContentScope } from "@comet/cms-admin";
2
- import { type PropsWithChildren } from "react";
2
+ import { type JSX, type PropsWithChildren } from "react";
3
3
  interface ConfigCheckProps {
4
4
  scope: ContentScope;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigVerification.d.ts","sourceRoot":"","sources":["../../src/configVerification/ConfigVerification.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAM/C,UAAU,gBAAgB;IACtB,KAAK,EAAE,YAAY,CAAC;CACvB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC,OAAO,CA0BxG"}
1
+ {"version":3,"file":"ConfigVerification.d.ts","sourceRoot":"","sources":["../../src/configVerification/ConfigVerification.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAMzD,UAAU,gBAAgB;IACtB,KAAK,EAAE,YAAY,CAAC;CACvB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC,OAAO,CA0BxG"}
@@ -1,2 +1,2 @@
1
- export declare const brevoConfigCheckQuery: import("@apollo/client").DocumentNode;
1
+ export declare const brevoConfigCheckQuery: import("graphql").DocumentNode;
2
2
  //# sourceMappingURL=ConfigVerification.gql.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigVerification.gql.d.ts","sourceRoot":"","sources":["../../src/configVerification/ConfigVerification.gql.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,uCAMjC,CAAC"}
1
+ {"version":3,"file":"ConfigVerification.gql.d.ts","sourceRoot":"","sources":["../../src/configVerification/ConfigVerification.gql.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,gCAMjC,CAAC"}
@@ -1,10 +1,4 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.namedOperations = void 0;
7
- var namedOperations = exports.namedOperations = {
1
+ export var namedOperations = {
8
2
  Query: {
9
3
  BrevoConfigCheck: 'BrevoConfigCheck'
10
4
  }
@@ -1,10 +1,4 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.brevoConfigCheckQuery = void 0;
7
- var _client = require("@apollo/client");
8
1
  var _templateObject;
9
2
  function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
10
- var brevoConfigCheckQuery = exports.brevoConfigCheckQuery = (0, _client.gql)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n query BrevoConfigCheck($scope: EmailCampaignContentScopeInput!) {\n brevoConfig(scope: $scope) {\n id\n }\n }\n"])));
3
+ import { gql } from "@apollo/client";
4
+ export var brevoConfigCheckQuery = gql(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n query BrevoConfigCheck($scope: EmailCampaignContentScopeInput!) {\n brevoConfig(scope: $scope) {\n id\n }\n }\n"])));
@@ -1,19 +1,13 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.ConfigVerification = ConfigVerification;
7
- var _client = require("@apollo/client");
8
- var _admin = require("@comet/admin");
9
- var _reactIntl = require("react-intl");
10
- var _ConfigVerification = require("./ConfigVerification.gql");
11
- var _jsxRuntime = require("react/jsx-runtime");
12
- function ConfigVerification(_ref) {
1
+ import { useQuery } from "@apollo/client";
2
+ import { Alert, Loading, MainContent } from "@comet/admin";
3
+ import { FormattedMessage } from "react-intl";
4
+ import { brevoConfigCheckQuery } from "./ConfigVerification.gql";
5
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
6
+ export function ConfigVerification(_ref) {
13
7
  var _data$brevoConfig;
14
8
  var scope = _ref.scope,
15
9
  children = _ref.children;
16
- var _useQuery = (0, _client.useQuery)(_ConfigVerification.brevoConfigCheckQuery, {
10
+ var _useQuery = useQuery(brevoConfigCheckQuery, {
17
11
  variables: {
18
12
  scope: scope
19
13
  },
@@ -24,22 +18,22 @@ function ConfigVerification(_ref) {
24
18
  loading = _useQuery.loading;
25
19
  if (error) throw error;
26
20
  if (loading) {
27
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Loading, {
21
+ return /*#__PURE__*/_jsx(Loading, {
28
22
  behavior: "fillPageHeight"
29
23
  });
30
24
  }
31
25
  if (!(data !== null && data !== void 0 && (_data$brevoConfig = data.brevoConfig) !== null && _data$brevoConfig !== void 0 && _data$brevoConfig.id)) {
32
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.MainContent, {
33
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_admin.Alert, {
26
+ return /*#__PURE__*/_jsx(MainContent, {
27
+ children: /*#__PURE__*/_jsx(Alert, {
34
28
  severity: "error",
35
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.FormattedMessage, {
29
+ children: /*#__PURE__*/_jsx(FormattedMessage, {
36
30
  id: "cometBrevoModule.missingConfig",
37
31
  defaultMessage: "Missing brevo config! Configure brevo via the config page."
38
32
  })
39
33
  })
40
34
  });
41
35
  }
42
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
36
+ return /*#__PURE__*/_jsx(_Fragment, {
43
37
  children: children
44
38
  });
45
39
  }
@@ -1,10 +1,4 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.namedOperations = void 0;
7
- var namedOperations = exports.namedOperations = {
1
+ export var namedOperations = {
8
2
  Query: {
9
3
  EmailCampaignsGrid: 'EmailCampaignsGrid'
10
4
  },