UNPKG

payload

Version:

Node, React and MongoDB Headless CMS and Application Framework

206 lines (205 loc) 23.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _default; } }); const _modal = require("@faceless-ui/modal"); const _react = /*#__PURE__*/ _interop_require_wildcard(require("react")); const _reacti18next = require("react-i18next"); const _reacttoastify = require("react-toastify"); const _ = require("../.."); const _api = require("../../../api"); const _context = require("../../forms/Form/context"); const _Config = require("../../utilities/Config"); const _DocumentInfo = require("../../utilities/DocumentInfo"); const _Locale = require("../../utilities/Locale"); const _Button = /*#__PURE__*/ _interop_require_default(require("../Button")); require("./index.scss"); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interop_require_wildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = { __proto__: null }; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for(var key in obj){ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } const baseClass = 'status'; const Status = ()=>{ const { id, collection, docPermissions, getVersions, global, publishedDoc, unpublishedVersions } = (0, _DocumentInfo.useDocumentInfo)(); const { toggleModal } = (0, _modal.useModal)(); const { routes: { api }, serverURL } = (0, _Config.useConfig)(); const [processing, setProcessing] = (0, _react.useState)(false); const { reset: resetForm } = (0, _context.useForm)(); const { code: locale } = (0, _Locale.useLocale)(); const { i18n, t } = (0, _reacti18next.useTranslation)('version'); const unPublishModalSlug = `confirm-un-publish-${id}`; const revertModalSlug = `confirm-revert-${id}`; let statusToRender; if (unpublishedVersions?.docs?.length > 0 && publishedDoc) { statusToRender = 'changed'; } else if (!publishedDoc) { statusToRender = 'draft'; } else if (publishedDoc && unpublishedVersions?.docs?.length <= 1) { statusToRender = 'published'; } const performAction = (0, _react.useCallback)(async (action)=>{ let url; let method; let body; setProcessing(true); if (action === 'unpublish') { body = { _status: 'draft' }; } if (action === 'revert') { body = publishedDoc; } if (collection) { url = `${serverURL}${api}/${collection.slug}/${id}?locale=${locale}&fallback-locale=null`; method = 'patch'; } if (global) { url = `${serverURL}${api}/globals/${global.slug}?locale=${locale}&fallback-locale=null`; method = 'post'; } const res = await _api.requests[method](url, { body: JSON.stringify(body), headers: { 'Accept-Language': i18n.language, 'Content-Type': 'application/json' } }); if (res.status === 200) { let data; let fields; const json = await res.json(); if (global) { data = json.result; fields = global.fields; } if (collection) { data = json.doc; fields = collection.fields; } resetForm(fields, data); _reacttoastify.toast.success(json.message); getVersions(); } else { _reacttoastify.toast.error(t('error:unPublishingDocument')); } setProcessing(false); if (action === 'revert') { toggleModal(revertModalSlug); } if (action === 'unpublish') { toggleModal(unPublishModalSlug); } }, [ collection, global, publishedDoc, serverURL, api, id, i18n, locale, resetForm, getVersions, t, toggleModal, revertModalSlug, unPublishModalSlug ]); const canUpdate = docPermissions?.update?.permission; if (statusToRender) { return /*#__PURE__*/ _react.default.createElement("div", { className: baseClass, title: `${t('status')}: ${t(statusToRender)}` }, /*#__PURE__*/ _react.default.createElement("div", { className: `${baseClass}__value-wrap` }, /*#__PURE__*/ _react.default.createElement("span", { className: `${baseClass}__label` }, t('status'), ": "), /*#__PURE__*/ _react.default.createElement("span", { className: `${baseClass}__value` }, t(statusToRender)), canUpdate && statusToRender === 'published' && /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, " — ", /*#__PURE__*/ _react.default.createElement(_Button.default, { buttonStyle: "none", className: `${baseClass}__action`, onClick: ()=>toggleModal(unPublishModalSlug) }, t('unpublish')), /*#__PURE__*/ _react.default.createElement(_modal.Modal, { className: `${baseClass}__modal`, slug: unPublishModalSlug }, /*#__PURE__*/ _react.default.createElement(_.MinimalTemplate, { className: `${baseClass}__modal-template` }, /*#__PURE__*/ _react.default.createElement("h1", null, t('confirmUnpublish')), /*#__PURE__*/ _react.default.createElement("p", null, t('aboutToUnpublish')), /*#__PURE__*/ _react.default.createElement(_Button.default, { buttonStyle: "secondary", onClick: processing ? undefined : ()=>toggleModal(unPublishModalSlug), type: "button" }, t('general:cancel')), /*#__PURE__*/ _react.default.createElement(_Button.default, { onClick: processing ? undefined : ()=>performAction('unpublish') }, t(processing ? 'unpublishing' : 'general:confirm'))))), canUpdate && statusToRender === 'changed' && /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, " — ", /*#__PURE__*/ _react.default.createElement(_Button.default, { buttonStyle: "none", className: `${baseClass}__action`, id: "action-revert-to-published", onClick: ()=>toggleModal(revertModalSlug) }, t('revertToPublished')), /*#__PURE__*/ _react.default.createElement(_modal.Modal, { className: `${baseClass}__modal`, slug: revertModalSlug }, /*#__PURE__*/ _react.default.createElement(_.MinimalTemplate, { className: `${baseClass}__modal-template` }, /*#__PURE__*/ _react.default.createElement("h1", null, t('confirmRevertToSaved')), /*#__PURE__*/ _react.default.createElement("p", null, t('aboutToRevertToPublished')), /*#__PURE__*/ _react.default.createElement(_Button.default, { buttonStyle: "secondary", onClick: processing ? undefined : ()=>toggleModal(revertModalSlug), type: "button" }, t('general:cancel')), /*#__PURE__*/ _react.default.createElement(_Button.default, { id: "action-revert-to-published-confirm", onClick: processing ? undefined : ()=>performAction('revert') }, t(processing ? 'reverting' : 'general:confirm'))))))); } return null; }; const _default = Status; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2VsZW1lbnRzL1N0YXR1cy9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kYWwsIHVzZU1vZGFsIH0gZnJvbSAnQGZhY2VsZXNzLXVpL21vZGFsJ1xuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdG9hc3QgfSBmcm9tICdyZWFjdC10b2FzdGlmeSdcblxuaW1wb3J0IHR5cGUgeyBGaWVsZCB9IGZyb20gJy4uLy4uLy4uLy4uL2ZpZWxkcy9jb25maWcvdHlwZXMnXG5cbmltcG9ydCB7IE1pbmltYWxUZW1wbGF0ZSB9IGZyb20gJy4uLy4uJ1xuaW1wb3J0IHsgcmVxdWVzdHMgfSBmcm9tICcuLi8uLi8uLi9hcGknXG5pbXBvcnQgeyB1c2VGb3JtIH0gZnJvbSAnLi4vLi4vZm9ybXMvRm9ybS9jb250ZXh0J1xuaW1wb3J0IHsgdXNlQ29uZmlnIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0NvbmZpZydcbmltcG9ydCB7IHVzZURvY3VtZW50SW5mbyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9Eb2N1bWVudEluZm8nXG5pbXBvcnQgeyB1c2VMb2NhbGUgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvTG9jYWxlJ1xuaW1wb3J0IEJ1dHRvbiBmcm9tICcuLi9CdXR0b24nXG5pbXBvcnQgJy4vaW5kZXguc2NzcydcblxuY29uc3QgYmFzZUNsYXNzID0gJ3N0YXR1cydcblxuY29uc3QgU3RhdHVzOiBSZWFjdC5GQyA9ICgpID0+IHtcbiAgY29uc3QgeyBpZCwgY29sbGVjdGlvbiwgZG9jUGVybWlzc2lvbnMsIGdldFZlcnNpb25zLCBnbG9iYWwsIHB1Ymxpc2hlZERvYywgdW5wdWJsaXNoZWRWZXJzaW9ucyB9ID1cbiAgICB1c2VEb2N1bWVudEluZm8oKVxuICBjb25zdCB7IHRvZ2dsZU1vZGFsIH0gPSB1c2VNb2RhbCgpXG4gIGNvbnN0IHtcbiAgICByb3V0ZXM6IHsgYXBpIH0sXG4gICAgc2VydmVyVVJMLFxuICB9ID0gdXNlQ29uZmlnKClcbiAgY29uc3QgW3Byb2Nlc3NpbmcsIHNldFByb2Nlc3NpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHsgcmVzZXQ6IHJlc2V0Rm9ybSB9ID0gdXNlRm9ybSgpXG4gIGNvbnN0IHsgY29kZTogbG9jYWxlIH0gPSB1c2VMb2NhbGUoKVxuICBjb25zdCB7IGkxOG4sIHQgfSA9IHVzZVRyYW5zbGF0aW9uKCd2ZXJzaW9uJylcblxuICBjb25zdCB1blB1Ymxpc2hNb2RhbFNsdWcgPSBgY29uZmlybS11bi1wdWJsaXNoLSR7aWR9YFxuICBjb25zdCByZXZlcnRNb2RhbFNsdWcgPSBgY29uZmlybS1yZXZlcnQtJHtpZH1gXG5cbiAgbGV0IHN0YXR1c1RvUmVuZGVyXG5cbiAgaWYgKHVucHVibGlzaGVkVmVyc2lvbnM/LmRvY3M/Lmxlbmd0aCA+IDAgJiYgcHVibGlzaGVkRG9jKSB7XG4gICAgc3RhdHVzVG9SZW5kZXIgPSAnY2hhbmdlZCdcbiAgfSBlbHNlIGlmICghcHVibGlzaGVkRG9jKSB7XG4gICAgc3RhdHVzVG9SZW5kZXIgPSAnZHJhZnQnXG4gIH0gZWxzZSBpZiAocHVibGlzaGVkRG9jICYmIHVucHVibGlzaGVkVmVyc2lvbnM/LmRvY3M/Lmxlbmd0aCA8PSAxKSB7XG4gICAgc3RhdHVzVG9SZW5kZXIgPSAncHVibGlzaGVkJ1xuICB9XG5cbiAgY29uc3QgcGVyZm9ybUFjdGlvbiA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChhY3Rpb246ICdyZXZlcnQnIHwgJ3VucHVibGlzaCcpID0+IHtcbiAgICAgIGxldCB1cmxcbiAgICAgIGxldCBtZXRob2RcbiAgICAgIGxldCBib2R5XG5cbiAgICAgIHNldFByb2Nlc3NpbmcodHJ1ZSlcblxuICAgICAgaWYgKGFjdGlvbiA9PT0gJ3VucHVibGlzaCcpIHtcbiAgICAgICAgYm9keSA9IHtcbiAgICAgICAgICBfc3RhdHVzOiAnZHJhZnQnLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhY3Rpb24gPT09ICdyZXZlcnQnKSB7XG4gICAgICAgIGJvZHkgPSBwdWJsaXNoZWREb2NcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbGxlY3Rpb24pIHtcbiAgICAgICAgdXJsID0gYCR7c2VydmVyVVJMfSR7YXBpfS8ke2NvbGxlY3Rpb24uc2x1Z30vJHtpZH0/bG9jYWxlPSR7bG9jYWxlfSZmYWxsYmFjay1sb2NhbGU9bnVsbGBcbiAgICAgICAgbWV0aG9kID0gJ3BhdGNoJ1xuICAgICAgfVxuICAgICAgaWYgKGdsb2JhbCkge1xuICAgICAgICB1cmwgPSBgJHtzZXJ2ZXJVUkx9JHthcGl9L2dsb2JhbHMvJHtnbG9iYWwuc2x1Z30/bG9jYWxlPSR7bG9jYWxlfSZmYWxsYmFjay1sb2NhbGU9bnVsbGBcbiAgICAgICAgbWV0aG9kID0gJ3Bvc3QnXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHJlcXVlc3RzW21ldGhvZF0odXJsLCB7XG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJvZHkpLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6IGkxOG4ubGFuZ3VhZ2UsXG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgfSxcbiAgICAgIH0pXG5cbiAgICAgIGlmIChyZXMuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgbGV0IGRhdGFcbiAgICAgICAgbGV0IGZpZWxkczogRmllbGRbXVxuICAgICAgICBjb25zdCBqc29uID0gYXdhaXQgcmVzLmpzb24oKVxuXG4gICAgICAgIGlmIChnbG9iYWwpIHtcbiAgICAgICAgICBkYXRhID0ganNvbi5yZXN1bHRcbiAgICAgICAgICBmaWVsZHMgPSBnbG9iYWwuZmllbGRzXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29sbGVjdGlvbikge1xuICAgICAgICAgIGRhdGEgPSBqc29uLmRvY1xuICAgICAgICAgIGZpZWxkcyA9IGNvbGxlY3Rpb24uZmllbGRzXG4gICAgICAgIH1cblxuICAgICAgICByZXNldEZvcm0oZmllbGRzLCBkYXRhKVxuICAgICAgICB0b2FzdC5zdWNjZXNzKGpzb24ubWVzc2FnZSlcbiAgICAgICAgZ2V0VmVyc2lvbnMoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdG9hc3QuZXJyb3IodCgnZXJyb3I6dW5QdWJsaXNoaW5nRG9jdW1lbnQnKSlcbiAgICAgIH1cblxuICAgICAgc2V0UHJvY2Vzc2luZyhmYWxzZSlcbiAgICAgIGlmIChhY3Rpb24gPT09ICdyZXZlcnQnKSB7XG4gICAgICAgIHRvZ2dsZU1vZGFsKHJldmVydE1vZGFsU2x1ZylcbiAgICAgIH1cblxuICAgICAgaWYgKGFjdGlvbiA9PT0gJ3VucHVibGlzaCcpIHtcbiAgICAgICAgdG9nZ2xlTW9kYWwodW5QdWJsaXNoTW9kYWxTbHVnKVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgY29sbGVjdGlvbixcbiAgICAgIGdsb2JhbCxcbiAgICAgIHB1Ymxpc2hlZERvYyxcbiAgICAgIHNlcnZlclVSTCxcbiAgICAgIGFwaSxcbiAgICAgIGlkLFxuICAgICAgaTE4bixcbiAgICAgIGxvY2FsZSxcbiAgICAgIHJlc2V0Rm9ybSxcbiAgICAgIGdldFZlcnNpb25zLFxuICAgICAgdCxcbiAgICAgIHRvZ2dsZU1vZGFsLFxuICAgICAgcmV2ZXJ0TW9kYWxTbHVnLFxuICAgICAgdW5QdWJsaXNoTW9kYWxTbHVnLFxuICAgIF0sXG4gIClcblxuICBjb25zdCBjYW5VcGRhdGUgPSBkb2NQZXJtaXNzaW9ucz8udXBkYXRlPy5wZXJtaXNzaW9uXG5cbiAgaWYgKHN0YXR1c1RvUmVuZGVyKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtiYXNlQ2xhc3N9IHRpdGxlPXtgJHt0KCdzdGF0dXMnKX06ICR7dChzdGF0dXNUb1JlbmRlcil9YH0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X192YWx1ZS13cmFwYH0+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19sYWJlbGB9Pnt0KCdzdGF0dXMnKX06Jm5ic3A7PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fdmFsdWVgfT57dChzdGF0dXNUb1JlbmRlcil9PC9zcGFuPlxuICAgICAgICAgIHtjYW5VcGRhdGUgJiYgc3RhdHVzVG9SZW5kZXIgPT09ICdwdWJsaXNoZWQnICYmIChcbiAgICAgICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgJm5ic3A7Jm1kYXNoOyZuYnNwO1xuICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgYnV0dG9uU3R5bGU9XCJub25lXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2FjdGlvbmB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdG9nZ2xlTW9kYWwodW5QdWJsaXNoTW9kYWxTbHVnKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KCd1bnB1Ymxpc2gnKX1cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxNb2RhbCBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX21vZGFsYH0gc2x1Zz17dW5QdWJsaXNoTW9kYWxTbHVnfT5cbiAgICAgICAgICAgICAgICA8TWluaW1hbFRlbXBsYXRlIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fbW9kYWwtdGVtcGxhdGVgfT5cbiAgICAgICAgICAgICAgICAgIDxoMT57dCgnY29uZmlybVVucHVibGlzaCcpfTwvaDE+XG4gICAgICAgICAgICAgICAgICA8cD57dCgnYWJvdXRUb1VucHVibGlzaCcpfTwvcD5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uU3R5bGU9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtwcm9jZXNzaW5nID8gdW5kZWZpbmVkIDogKCkgPT4gdG9nZ2xlTW9kYWwodW5QdWJsaXNoTW9kYWxTbHVnKX1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt0KCdnZW5lcmFsOmNhbmNlbCcpfVxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e3Byb2Nlc3NpbmcgPyB1bmRlZmluZWQgOiAoKSA9PiBwZXJmb3JtQWN0aW9uKCd1bnB1Ymxpc2gnKX0+XG4gICAgICAgICAgICAgICAgICAgIHt0KHByb2Nlc3NpbmcgPyAndW5wdWJsaXNoaW5nJyA6ICdnZW5lcmFsOmNvbmZpcm0nKX1cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvTWluaW1hbFRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L01vZGFsPlxuICAgICAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtjYW5VcGRhdGUgJiYgc3RhdHVzVG9SZW5kZXIgPT09ICdjaGFuZ2VkJyAmJiAoXG4gICAgICAgICAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICZuYnNwOyZtZGFzaDsmbmJzcDtcbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIGJ1dHRvblN0eWxlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19hY3Rpb25gfVxuICAgICAgICAgICAgICAgIGlkPVwiYWN0aW9uLXJldmVydC10by1wdWJsaXNoZWRcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRvZ2dsZU1vZGFsKHJldmVydE1vZGFsU2x1Zyl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dCgncmV2ZXJ0VG9QdWJsaXNoZWQnKX1cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxNb2RhbCBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX21vZGFsYH0gc2x1Zz17cmV2ZXJ0TW9kYWxTbHVnfT5cbiAgICAgICAgICAgICAgICA8TWluaW1hbFRlbXBsYXRlIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fbW9kYWwtdGVtcGxhdGVgfT5cbiAgICAgICAgICAgICAgICAgIDxoMT57dCgnY29uZmlybVJldmVydFRvU2F2ZWQnKX08L2gxPlxuICAgICAgICAgICAgICAgICAgPHA+e3QoJ2Fib3V0VG9SZXZlcnRUb1B1Ymxpc2hlZCcpfTwvcD5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uU3R5bGU9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtwcm9jZXNzaW5nID8gdW5kZWZpbmVkIDogKCkgPT4gdG9nZ2xlTW9kYWwocmV2ZXJ0TW9kYWxTbHVnKX1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt0KCdnZW5lcmFsOmNhbmNlbCcpfVxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiYWN0aW9uLXJldmVydC10by1wdWJsaXNoZWQtY29uZmlybVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3Byb2Nlc3NpbmcgPyB1bmRlZmluZWQgOiAoKSA9PiBwZXJmb3JtQWN0aW9uKCdyZXZlcnQnKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3QocHJvY2Vzc2luZyA/ICdyZXZlcnRpbmcnIDogJ2dlbmVyYWw6Y29uZmlybScpfVxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgPC9NaW5pbWFsVGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvTW9kYWw+XG4gICAgICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGRlZmF1bHQgU3RhdHVzXG4iXSwibmFtZXMiOlsiYmFzZUNsYXNzIiwiU3RhdHVzIiwiaWQiLCJjb2xsZWN0aW9uIiwiZG9jUGVybWlzc2lvbnMiLCJnZXRWZXJzaW9ucyIsImdsb2JhbCIsInB1Ymxpc2hlZERvYyIsInVucHVibGlzaGVkVmVyc2lvbnMiLCJ1c2VEb2N1bWVudEluZm8iLCJ0b2dnbGVNb2RhbCIsInVzZU1vZGFsIiwicm91dGVzIiwiYXBpIiwic2VydmVyVVJMIiwidXNlQ29uZmlnIiwicHJvY2Vzc2luZyIsInNldFByb2Nlc3NpbmciLCJ1c2VTdGF0ZSIsInJlc2V0IiwicmVzZXRGb3JtIiwidXNlRm9ybSIsImNvZGUiLCJsb2NhbGUiLCJ1c2VMb2NhbGUiLCJpMThuIiwidCIsInVzZVRyYW5zbGF0aW9uIiwidW5QdWJsaXNoTW9kYWxTbHVnIiwicmV2ZXJ0TW9kYWxTbHVnIiwic3RhdHVzVG9SZW5kZXIiLCJkb2NzIiwibGVuZ3RoIiwicGVyZm9ybUFjdGlvbiIsInVzZUNhbGxiYWNrIiwiYWN0aW9uIiwidXJsIiwibWV0aG9kIiwiYm9keSIsIl9zdGF0dXMiLCJzbHVnIiwicmVzIiwicmVxdWVzdHMiLCJKU09OIiwic3RyaW5naWZ5IiwiaGVhZGVycyIsImxhbmd1YWdlIiwic3RhdHVzIiwiZGF0YSIsImZpZWxkcyIsImpzb24iLCJyZXN1bHQiLCJkb2MiLCJ0b2FzdCIsInN1Y2Nlc3MiLCJtZXNzYWdlIiwiZXJyb3IiLCJjYW5VcGRhdGUiLCJ1cGRhdGUiLCJwZXJtaXNzaW9uIiwiZGl2IiwiY2xhc3NOYW1lIiwidGl0bGUiLCJzcGFuIiwiUmVhY3QiLCJGcmFnbWVudCIsIkJ1dHRvbiIsImJ1dHRvblN0eWxlIiwib25DbGljayIsIk1vZGFsIiwiTWluaW1hbFRlbXBsYXRlIiwiaDEiLCJwIiwidW5kZWZpbmVkIiwidHlwZSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkE0TUE7OztlQUFBOzs7dUJBNU1nQzsrREFDYTs4QkFDZDsrQkFDVDtrQkFJVTtxQkFDUDt5QkFDRDt3QkFDRTs4QkFDTTt3QkFDTjsrREFDUDtRQUNaOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVQLE1BQU1BLFlBQVk7QUFFbEIsTUFBTUMsU0FBbUI7SUFDdkIsTUFBTSxFQUFFQyxFQUFFLEVBQUVDLFVBQVUsRUFBRUMsY0FBYyxFQUFFQyxXQUFXLEVBQUVDLE1BQU0sRUFBRUMsWUFBWSxFQUFFQyxtQkFBbUIsRUFBRSxHQUM5RkMsSUFBQUEsNkJBQWU7SUFDakIsTUFBTSxFQUFFQyxXQUFXLEVBQUUsR0FBR0MsSUFBQUEsZUFBUTtJQUNoQyxNQUFNLEVBQ0pDLFFBQVEsRUFBRUMsR0FBRyxFQUFFLEVBQ2ZDLFNBQVMsRUFDVixHQUFHQyxJQUFBQSxpQkFBUztJQUNiLE1BQU0sQ0FBQ0MsWUFBWUMsY0FBYyxHQUFHQyxJQUFBQSxlQUFRLEVBQUM7SUFDN0MsTUFBTSxFQUFFQyxPQUFPQyxTQUFTLEVBQUUsR0FBR0MsSUFBQUEsZ0JBQU87SUFDcEMsTUFBTSxFQUFFQyxNQUFNQyxNQUFNLEVBQUUsR0FBR0MsSUFBQUEsaUJBQVM7SUFDbEMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLENBQUMsRUFBRSxHQUFHQyxJQUFBQSw0QkFBYyxFQUFDO0lBRW5DLE1BQU1DLHFCQUFxQixDQUFDLG1CQUFtQixFQUFFMUIsR0FBRyxDQUFDO0lBQ3JELE1BQU0yQixrQkFBa0IsQ0FBQyxlQUFlLEVB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