@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.
- package/lib/blocks/NewsletterImageBlock.d.ts +7 -3
- package/lib/blocks/NewsletterImageBlock.d.ts.map +1 -1
- package/lib/blocks/NewsletterImageBlock.js +8 -14
- package/lib/blocks.generated.js +1 -5
- package/lib/brevoConfiguration/BrevoConfigForm.generated.js +1 -5
- package/lib/brevoConfiguration/BrevoConfigForm.gql.d.ts +7 -7
- package/lib/brevoConfiguration/BrevoConfigForm.gql.d.ts.map +1 -1
- package/lib/brevoConfiguration/BrevoConfigForm.gql.generated.js +1 -7
- package/lib/brevoConfiguration/BrevoConfigForm.gql.js +8 -14
- package/lib/brevoConfiguration/BrevoConfigForm.js +53 -59
- package/lib/brevoConfiguration/BrevoConfigPage.d.ts +1 -0
- package/lib/brevoConfiguration/BrevoConfigPage.d.ts.map +1 -1
- package/lib/brevoConfiguration/BrevoConfigPage.js +8 -14
- package/lib/brevoContacts/BrevoContactsGrid.generated.js +1 -7
- package/lib/brevoContacts/BrevoContactsGrid.js +45 -51
- package/lib/brevoContacts/BrevoContactsPage.d.ts +1 -1
- package/lib/brevoContacts/BrevoContactsPage.d.ts.map +1 -1
- package/lib/brevoContacts/BrevoContactsPage.js +24 -29
- package/lib/brevoContacts/form/BrevoContactForm.generated.js +1 -7
- package/lib/brevoContacts/form/BrevoContactForm.gql.generated.js +1 -7
- package/lib/brevoContacts/form/BrevoContactForm.gql.js +7 -13
- package/lib/brevoContacts/form/BrevoContactForm.js +58 -64
- package/lib/brevoTestContacts/BrevoTestContactsGrid.generated.js +1 -7
- package/lib/brevoTestContacts/BrevoTestContactsGrid.js +40 -46
- package/lib/brevoTestContacts/BrevoTestContactsPage.d.ts +1 -1
- package/lib/brevoTestContacts/BrevoTestContactsPage.d.ts.map +1 -1
- package/lib/brevoTestContacts/BrevoTestContactsPage.js +24 -29
- package/lib/brevoTestContacts/form/BrevoTestContactForm.generated.js +1 -7
- package/lib/brevoTestContacts/form/BrevoTestContactForm.gql.generated.js +1 -7
- package/lib/brevoTestContacts/form/BrevoTestContactForm.gql.js +7 -13
- package/lib/brevoTestContacts/form/BrevoTestContactForm.js +42 -48
- package/lib/common/BrevoConfigProvider.js +9 -15
- package/lib/common/contactImport/useContactImportFromCsv.d.ts.map +1 -1
- package/lib/common/contactImport/useContactImportFromCsv.gql.d.ts +1 -1
- package/lib/common/contactImport/useContactImportFromCsv.gql.d.ts.map +1 -1
- package/lib/common/contactImport/useContactImportFromCsv.gql.generated.js +1 -7
- package/lib/common/contactImport/useContactImportFromCsv.gql.js +2 -8
- package/lib/common/contactImport/useContactImportFromCsv.js +81 -91
- package/lib/configVerification/ConfigVerification.d.ts +1 -1
- package/lib/configVerification/ConfigVerification.d.ts.map +1 -1
- package/lib/configVerification/ConfigVerification.gql.d.ts +1 -1
- package/lib/configVerification/ConfigVerification.gql.d.ts.map +1 -1
- package/lib/configVerification/ConfigVerification.gql.generated.js +1 -7
- package/lib/configVerification/ConfigVerification.gql.js +2 -8
- package/lib/configVerification/ConfigVerification.js +12 -18
- package/lib/emailCampaigns/EmailCampaignsGrid.generated.js +1 -7
- package/lib/emailCampaigns/EmailCampaignsGrid.js +47 -53
- package/lib/emailCampaigns/EmailCampaignsPage.d.ts +1 -0
- package/lib/emailCampaigns/EmailCampaignsPage.d.ts.map +1 -1
- package/lib/emailCampaigns/EmailCampaignsPage.js +29 -35
- package/lib/emailCampaigns/SendingStateColumn.js +24 -30
- package/lib/emailCampaigns/form/ConfigFields.js +11 -17
- package/lib/emailCampaigns/form/EmailCampaignForm.gql.d.ts +5 -5
- package/lib/emailCampaigns/form/EmailCampaignForm.gql.d.ts.map +1 -1
- package/lib/emailCampaigns/form/EmailCampaignForm.gql.generated.js +1 -7
- package/lib/emailCampaigns/form/EmailCampaignForm.gql.js +6 -12
- package/lib/emailCampaigns/form/EmailCampaignForm.js +65 -71
- package/lib/emailCampaigns/form/SendEmailCampaignNowDialog.js +16 -21
- package/lib/emailCampaigns/form/SendManagerFields.gql.d.ts +2 -2
- package/lib/emailCampaigns/form/SendManagerFields.gql.d.ts.map +1 -1
- package/lib/emailCampaigns/form/SendManagerFields.gql.generated.js +1 -7
- package/lib/emailCampaigns/form/SendManagerFields.gql.js +4 -10
- package/lib/emailCampaigns/form/SendManagerFields.js +37 -43
- package/lib/emailCampaigns/form/SendManagerWrapper.gql.d.ts +1 -1
- package/lib/emailCampaigns/form/SendManagerWrapper.gql.d.ts.map +1 -1
- package/lib/emailCampaigns/form/SendManagerWrapper.gql.generated.js +1 -7
- package/lib/emailCampaigns/form/SendManagerWrapper.gql.js +2 -8
- package/lib/emailCampaigns/form/SendManagerWrapper.js +13 -19
- package/lib/emailCampaigns/form/TestEmailCampaignForm.generated.js +1 -7
- package/lib/emailCampaigns/form/TestEmailCampaignForm.gql.d.ts +1 -1
- package/lib/emailCampaigns/form/TestEmailCampaignForm.gql.d.ts.map +1 -1
- package/lib/emailCampaigns/form/TestEmailCampaignForm.gql.generated.js +1 -7
- package/lib/emailCampaigns/form/TestEmailCampaignForm.gql.js +2 -8
- package/lib/emailCampaigns/form/TestEmailCampaignForm.js +33 -39
- package/lib/emailCampaigns/statistics/EmailCampaignStatistics.gql.d.ts +1 -1
- package/lib/emailCampaigns/statistics/EmailCampaignStatistics.gql.d.ts.map +1 -1
- package/lib/emailCampaigns/statistics/EmailCampaignStatistics.gql.generated.js +1 -7
- package/lib/emailCampaigns/statistics/EmailCampaignStatistics.gql.js +2 -8
- package/lib/emailCampaigns/statistics/EmailCampaignStatistics.js +40 -46
- package/lib/emailCampaigns/statistics/PercentageCard.js +29 -35
- package/lib/emailCampaigns/view/EmailCampaignView.gql.d.ts +1 -1
- package/lib/emailCampaigns/view/EmailCampaignView.gql.d.ts.map +1 -1
- package/lib/emailCampaigns/view/EmailCampaignView.gql.generated.js +1 -7
- package/lib/emailCampaigns/view/EmailCampaignView.gql.js +2 -8
- package/lib/emailCampaigns/view/EmailCampaignView.js +31 -37
- package/lib/graphql.generated.js +1 -5
- package/lib/index.js +7 -60
- package/lib/targetGroups/TargetGroupDialog.gql.d.ts +1 -1
- package/lib/targetGroups/TargetGroupDialog.gql.d.ts.map +1 -1
- package/lib/targetGroups/TargetGroupDialog.gql.generated.js +1 -7
- package/lib/targetGroups/TargetGroupDialog.gql.js +2 -8
- package/lib/targetGroups/TargetGroupDialog.js +13 -19
- package/lib/targetGroups/TargetGroupForm.gql.generated.js +1 -7
- package/lib/targetGroups/TargetGroupForm.gql.js +8 -14
- package/lib/targetGroups/TargetGroupForm.js +49 -61
- package/lib/targetGroups/TargetGroupsGrid.d.ts.map +1 -1
- package/lib/targetGroups/TargetGroupsGrid.generated.js +1 -7
- package/lib/targetGroups/TargetGroupsGrid.js +40 -48
- package/lib/targetGroups/TargetGroupsPage.d.ts +1 -1
- package/lib/targetGroups/TargetGroupsPage.d.ts.map +1 -1
- package/lib/targetGroups/TargetGroupsPage.js +21 -27
- package/lib/targetGroups/addContacts/AddContactsGridSelect.gql.d.ts +4 -4
- package/lib/targetGroups/addContacts/AddContactsGridSelect.gql.d.ts.map +1 -1
- package/lib/targetGroups/addContacts/AddContactsGridSelect.gql.generated.js +1 -7
- package/lib/targetGroups/addContacts/AddContactsGridSelect.gql.js +6 -12
- package/lib/targetGroups/addContacts/AddContactsGridSelect.js +64 -70
- package/lib/targetGroups/allAssignedContacts/AllAssignedContactsGrid.gql.d.ts +1 -1
- package/lib/targetGroups/allAssignedContacts/AllAssignedContactsGrid.gql.d.ts.map +1 -1
- package/lib/targetGroups/allAssignedContacts/AllAssignedContactsGrid.gql.generated.js +1 -7
- package/lib/targetGroups/allAssignedContacts/AllAssignedContactsGrid.gql.js +3 -9
- package/lib/targetGroups/allAssignedContacts/AllAssignedContactsGrid.js +17 -23
- 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
|
-
|
|
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 =
|
|
42
|
-
var _useState =
|
|
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 =
|
|
38
|
+
var _useState3 = useState(true),
|
|
47
39
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
48
40
|
sendDoubleOptIn = _useState4[0],
|
|
49
41
|
setSendDoubleOptIn = _useState4[1];
|
|
50
|
-
var _useBrevoConfig =
|
|
42
|
+
var _useBrevoConfig = useBrevoConfig(),
|
|
51
43
|
allowAddingContactsWithoutDoi = _useBrevoConfig.allowAddingContactsWithoutDoi;
|
|
52
|
-
var moreActionsMenuItem =
|
|
44
|
+
var moreActionsMenuItem = useMemo(function () {
|
|
53
45
|
return {
|
|
54
46
|
type: "action",
|
|
55
|
-
label: /*#__PURE__*/(
|
|
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__*/(
|
|
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__*/(
|
|
60
|
+
var dialog = /*#__PURE__*/_jsxs(Dialog, {
|
|
69
61
|
open: open,
|
|
70
62
|
onClose: handleClose,
|
|
71
|
-
children: [/*#__PURE__*/(
|
|
72
|
-
children: /*#__PURE__*/(
|
|
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__*/(
|
|
77
|
-
children: /*#__PURE__*/(
|
|
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__*/(
|
|
90
|
-
children: [values.sendDoubleOptIn ? /*#__PURE__*/(
|
|
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__*/(
|
|
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__*/(
|
|
91
|
+
}) : /*#__PURE__*/_jsx(Alert, {
|
|
100
92
|
severity: "error",
|
|
101
93
|
sx: {
|
|
102
94
|
marginBottom: 5
|
|
103
95
|
},
|
|
104
|
-
children: /*#__PURE__*/(
|
|
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__*/(
|
|
100
|
+
}), allowAddingContactsWithoutDoi && /*#__PURE__*/_jsx(CheckboxField, {
|
|
109
101
|
name: "sendDoubleOptIn",
|
|
110
|
-
label: /*#__PURE__*/(
|
|
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__*/(
|
|
120
|
-
children: [/*#__PURE__*/(
|
|
111
|
+
}), /*#__PURE__*/_jsxs(DialogActions, {
|
|
112
|
+
children: [/*#__PURE__*/_jsx(Button, {
|
|
121
113
|
onClick: handleClose,
|
|
122
|
-
children: /*#__PURE__*/(
|
|
123
|
-
}), /*#__PURE__*/(
|
|
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__*/(
|
|
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 =
|
|
137
|
-
return /*#__PURE__*/(
|
|
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__*/(
|
|
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 =
|
|
156
|
-
var _useState5 =
|
|
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 =
|
|
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 =
|
|
166
|
-
var config =
|
|
167
|
-
var intl =
|
|
168
|
-
var client =
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
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__*/(
|
|
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__*/(
|
|
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__*/(
|
|
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__*/(
|
|
376
|
-
children: [/*#__PURE__*/(
|
|
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__*/(
|
|
371
|
+
})), /*#__PURE__*/_jsxs(Dialog, {
|
|
382
372
|
open: dialogOpen,
|
|
383
|
-
children: [/*#__PURE__*/(
|
|
384
|
-
children: [importingCsv && /*#__PURE__*/(
|
|
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__*/(
|
|
377
|
+
}), importInformation && /*#__PURE__*/_jsx(FormattedMessage, {
|
|
388
378
|
id: "cometBrevoModule.useContactImport.importSuccessful.title",
|
|
389
379
|
defaultMessage: "Import successful"
|
|
390
380
|
})]
|
|
391
|
-
}), /*#__PURE__*/(
|
|
392
|
-
children: [importingCsv && /*#__PURE__*/(
|
|
393
|
-
children: [importInformation.created > 0 && /*#__PURE__*/(
|
|
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__*/(
|
|
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__*/(
|
|
395
|
+
}), importInformation.failed > 0 && /*#__PURE__*/_jsx(Box, {
|
|
406
396
|
mt: 2,
|
|
407
|
-
children: /*#__PURE__*/(
|
|
397
|
+
children: /*#__PURE__*/_jsx(Alert, {
|
|
408
398
|
severity: "error",
|
|
409
|
-
children: /*#__PURE__*/(
|
|
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__*/(
|
|
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__*/(
|
|
413
|
+
}), importInformation.blacklisted > 0 && /*#__PURE__*/_jsx(Box, {
|
|
424
414
|
mt: 2,
|
|
425
|
-
children: /*#__PURE__*/(
|
|
415
|
+
children: /*#__PURE__*/_jsx(Alert, {
|
|
426
416
|
severity: "error",
|
|
427
|
-
children: /*#__PURE__*/(
|
|
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__*/(
|
|
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__*/(
|
|
431
|
+
}), (importInformation.created > 0 || importInformation.updated > 0) && sendDoubleOptIn && /*#__PURE__*/_jsx(Box, {
|
|
442
432
|
mt: 2,
|
|
443
|
-
children: /*#__PURE__*/(
|
|
433
|
+
children: /*#__PURE__*/_jsx(Alert, {
|
|
444
434
|
severity: "warning",
|
|
445
|
-
children: /*#__PURE__*/(
|
|
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__*/(
|
|
453
|
-
children: importInformation && /*#__PURE__*/(
|
|
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__*/(
|
|
448
|
+
children: /*#__PURE__*/_jsx(FormattedMessage, _objectSpread({}, messages.ok))
|
|
459
449
|
})
|
|
460
450
|
})]
|
|
461
451
|
})]
|
|
462
452
|
});
|
|
463
453
|
};
|
|
464
|
-
var CsvDownloadLink = /*#__PURE__*/
|
|
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 +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;
|
|
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("
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
|
|
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 =
|
|
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__*/(
|
|
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__*/(
|
|
33
|
-
children: /*#__PURE__*/(
|
|
26
|
+
return /*#__PURE__*/_jsx(MainContent, {
|
|
27
|
+
children: /*#__PURE__*/_jsx(Alert, {
|
|
34
28
|
severity: "error",
|
|
35
|
-
children: /*#__PURE__*/(
|
|
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__*/(
|
|
36
|
+
return /*#__PURE__*/_jsx(_Fragment, {
|
|
43
37
|
children: children
|
|
44
38
|
});
|
|
45
39
|
}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
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
|
},
|