kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
169 lines (168 loc) • 30.1 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.StyledInputLabel = exports.StyleSharingUrl = exports.SharingUrl = void 0;
exports["default"] = ShareMapUrlModalFactory;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
var _react = _interopRequireWildcard(require("react"));
var _styledComponents = _interopRequireWildcard(require("styled-components"));
var _reactCopyToClipboard = require("react-copy-to-clipboard");
var _styles = require("@kepler.gl/styles");
var _imageModalContainer = _interopRequireDefault(require("./image-modal-container"));
var _styledComponents2 = require("../common/styled-components");
var _statusPanel = _interopRequireDefault(require("./status-panel"));
var _localization = require("@kepler.gl/localization");
var _useCloudListProvider2 = require("../hooks/use-cloud-list-provider");
var _providerSelect = require("./cloud-components/provider-select");
var _constants = require("@kepler.gl/constants");
var _templateObject, _templateObject2, _templateObject3, _templateObject4; // SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
var StyledInputLabel = exports.StyledInputLabel = _styledComponents["default"].label(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n font-size: 12px;\n color: ", ";\n letter-spacing: 0.2px;\n"])), function (props) {
return props.theme.textColorLT;
});
var StyleSharingUrl = exports.StyleSharingUrl = _styledComponents["default"].div.attrs({
className: 'sharing-url'
})(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n display: flex;\n margin-bottom: 14px;\n flex-direction: column;\n\n input {\n border-right: 0;\n }\n\n .button {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n"])));
var SharingUrl = exports.SharingUrl = function SharingUrl(_ref) {
var url = _ref.url,
_ref$message = _ref.message,
message = _ref$message === void 0 ? '' : _ref$message;
var _useState = (0, _react.useState)(false),
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
copied = _useState2[0],
setCopy = _useState2[1];
return /*#__PURE__*/_react["default"].createElement(StyleSharingUrl, null, /*#__PURE__*/_react["default"].createElement(StyledInputLabel, null, message), /*#__PURE__*/_react["default"].createElement("div", {
style: {
display: 'flex'
}
}, /*#__PURE__*/_react["default"].createElement(_styledComponents2.InputLight, {
type: "text",
value: url,
readOnly: true
}), /*#__PURE__*/_react["default"].createElement(_reactCopyToClipboard.CopyToClipboard, {
text: url,
onCopy: function onCopy() {
return setCopy(true);
}
}, /*#__PURE__*/_react["default"].createElement(_styledComponents2.Button, {
width: "80px"
}, copied ? 'Copied!' : 'Copy'))));
};
var nop = function nop() {
return;
};
var StyledShareMapModal = (0, _styledComponents["default"])(_styledComponents2.StyledModalContent)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 24px 72px 40px 72px;\n margin: 0 -72px -40px -72px;\n display: flex;\n flex-direction: column;\n"])));
var StyledInnerDiv = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n min-height: 500px;\n"])));
var UNDERLINE_TEXT_DECORATION_STYLE = {
textDecoration: 'underline'
};
var ShareMapHeader = function ShareMapHeader(_ref2) {
var cloudProviders = _ref2.cloudProviders;
var shareableCloudProviders = (0, _react.useMemo)(function () {
return cloudProviders.filter(function (cp) {
return cp.hasSharingUrl();
});
}, [cloudProviders]);
return /*#__PURE__*/_react["default"].createElement(_styledComponents2.StyledExportSection, null, /*#__PURE__*/_react["default"].createElement("div", {
className: "description"
}, /*#__PURE__*/_react["default"].createElement("div", {
className: "title"
}, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
id: 'modal.shareMap.title'
}))), /*#__PURE__*/_react["default"].createElement(_providerSelect.ProviderSelect, {
cloudProviders: shareableCloudProviders
}));
};
function ShareMapUrlModalFactory() {
var ShareMapUrlModal = function ShareMapUrlModal(_ref3) {
var _ref3$isProviderLoadi = _ref3.isProviderLoading,
isProviderLoading = _ref3$isProviderLoadi === void 0 ? false : _ref3$isProviderLoadi,
_ref3$onExport = _ref3.onExport,
onExport = _ref3$onExport === void 0 ? nop : _ref3$onExport,
_ref3$providerError = _ref3.providerError,
providerError = _ref3$providerError === void 0 ? null : _ref3$providerError,
_ref3$successInfo = _ref3.successInfo,
successInfo = _ref3$successInfo === void 0 ? {} : _ref3$successInfo,
_ref3$onUpdateImageSe = _ref3.onUpdateImageSetting,
onUpdateImageSetting = _ref3$onUpdateImageSe === void 0 ? nop : _ref3$onUpdateImageSe,
cleanupExportImage = _ref3.cleanupExportImage;
var _useCloudListProvider = (0, _useCloudListProvider2.useCloudListProvider)(),
provider = _useCloudListProvider.provider,
cloudProviders = _useCloudListProvider.cloudProviders;
var shareUrl = successInfo.shareUrl,
folderLink = successInfo.folderLink;
(0, _react.useEffect)(function () {
if (provider) {
onExport(provider);
}
}, [onExport, provider]);
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
theme: _styles.themeLT
}, /*#__PURE__*/_react["default"].createElement(_imageModalContainer["default"], {
provider: provider,
onUpdateImageSetting: onUpdateImageSetting,
cleanupExportImage: cleanupExportImage
}, /*#__PURE__*/_react["default"].createElement(StyledShareMapModal, {
className: "export-cloud-modal"
}, /*#__PURE__*/_react["default"].createElement(ShareMapHeader, {
cloudProviders: cloudProviders
}), provider !== null && provider !== void 0 && provider.hasSharingUrl() ? /*#__PURE__*/_react["default"].createElement(StyledInnerDiv, {
"data-testid": _constants.dataTestIds.providerShareMap
}, /*#__PURE__*/_react["default"].createElement(_styledComponents2.StyledExportSection, null, /*#__PURE__*/_react["default"].createElement("div", {
className: "description"
}, /*#__PURE__*/_react["default"].createElement("div", {
className: "title"
}, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
id: 'modal.shareMap.shareUriTitle'
})), /*#__PURE__*/_react["default"].createElement("div", {
className: "subtitle"
}, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
id: 'modal.shareMap.shareUriSubtitle'
}))), /*#__PURE__*/_react["default"].createElement("div", {
className: "selection"
}, /*#__PURE__*/_react["default"].createElement("div", {
className: "title warning"
}, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
id: 'modal.shareMap.shareDisclaimer'
})))), /*#__PURE__*/_react["default"].createElement(_styledComponents2.StyledExportSection, {
disabled: isProviderLoading
}, /*#__PURE__*/_react["default"].createElement("div", {
className: "description"
}, /*#__PURE__*/_react["default"].createElement("div", {
className: "title"
}, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
id: 'modal.shareMap.cloudTitle'
})), /*#__PURE__*/_react["default"].createElement("div", {
className: "subtitle"
}, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
id: 'modal.shareMap.cloudSubtitle'
})))), isProviderLoading || providerError ? /*#__PURE__*/_react["default"].createElement(_statusPanel["default"], {
isLoading: isProviderLoading,
error: providerError,
providerIcon: provider.icon
}) : null, shareUrl && /*#__PURE__*/_react["default"].createElement(_styledComponents2.StyledExportSection, null, /*#__PURE__*/_react["default"].createElement("div", {
className: "description"
}, /*#__PURE__*/_react["default"].createElement("div", {
className: "title"
}, "Share Url")), /*#__PURE__*/_react["default"].createElement("div", {
className: "selection"
}, /*#__PURE__*/_react["default"].createElement(SharingUrl, {
key: 0,
url: shareUrl
}), provider && folderLink && /*#__PURE__*/_react["default"].createElement("a", {
key: 1,
href: folderLink,
target: "_blank",
rel: "noopener noreferrer",
style: UNDERLINE_TEXT_DECORATION_STYLE
}, provider.name)))) : null)));
};
return ShareMapUrlModal;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yZWFjdENvcHlUb0NsaXBib2FyZCIsIl9zdHlsZXMiLCJfaW1hZ2VNb2RhbENvbnRhaW5lciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfc3RhdHVzUGFuZWwiLCJfbG9jYWxpemF0aW9uIiwiX3VzZUNsb3VkTGlzdFByb3ZpZGVyMiIsIl9wcm92aWRlclNlbGVjdCIsIl9jb25zdGFudHMiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJTdHlsZWRJbnB1dExhYmVsIiwiZXhwb3J0cyIsInN0eWxlZCIsImxhYmVsIiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwidGV4dENvbG9yTFQiLCJTdHlsZVNoYXJpbmdVcmwiLCJkaXYiLCJhdHRycyIsImNsYXNzTmFtZSIsIlNoYXJpbmdVcmwiLCJfcmVmIiwidXJsIiwiX3JlZiRtZXNzYWdlIiwibWVzc2FnZSIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsImNvcGllZCIsInNldENvcHkiLCJjcmVhdGVFbGVtZW50Iiwic3R5bGUiLCJkaXNwbGF5IiwiSW5wdXRMaWdodCIsInR5cGUiLCJ2YWx1ZSIsInJlYWRPbmx5IiwiQ29weVRvQ2xpcGJvYXJkIiwidGV4dCIsIm9uQ29weSIsIkJ1dHRvbiIsIndpZHRoIiwibm9wIiwiU3R5bGVkU2hhcmVNYXBNb2RhbCIsIlN0eWxlZE1vZGFsQ29udGVudCIsIlN0eWxlZElubmVyRGl2IiwiVU5ERVJMSU5FX1RFWFRfREVDT1JBVElPTl9TVFlMRSIsInRleHREZWNvcmF0aW9uIiwiU2hhcmVNYXBIZWFkZXIiLCJfcmVmMiIsImNsb3VkUHJvdmlkZXJzIiwic2hhcmVhYmxlQ2xvdWRQcm92aWRlcnMiLCJ1c2VNZW1vIiwiZmlsdGVyIiwiY3AiLCJoYXNTaGFyaW5nVXJsIiwiU3R5bGVkRXhwb3J0U2VjdGlvbiIsIkZvcm1hdHRlZE1lc3NhZ2UiLCJpZCIsIlByb3ZpZGVyU2VsZWN0IiwiU2hhcmVNYXBVcmxNb2RhbEZhY3RvcnkiLCJTaGFyZU1hcFVybE1vZGFsIiwiX3JlZjMiLCJfcmVmMyRpc1Byb3ZpZGVyTG9hZGkiLCJpc1Byb3ZpZGVyTG9hZGluZyIsIl9yZWYzJG9uRXhwb3J0Iiwib25FeHBvcnQiLCJfcmVmMyRwcm92aWRlckVycm9yIiwicHJvdmlkZXJFcnJvciIsIl9yZWYzJHN1Y2Nlc3NJbmZvIiwic3VjY2Vzc0luZm8iLCJfcmVmMyRvblVwZGF0ZUltYWdlU2UiLCJvblVwZGF0ZUltYWdlU2V0dGluZyIsImNsZWFudXBFeHBvcnRJbWFnZSIsIl91c2VDbG91ZExpc3RQcm92aWRlciIsInVzZUNsb3VkTGlzdFByb3ZpZGVyIiwicHJvdmlkZXIiLCJzaGFyZVVybCIsImZvbGRlckxpbmsiLCJ1c2VFZmZlY3QiLCJUaGVtZVByb3ZpZGVyIiwidGhlbWVMVCIsImRhdGFUZXN0SWRzIiwicHJvdmlkZXJTaGFyZU1hcCIsImRpc2FibGVkIiwiaXNMb2FkaW5nIiwiZXJyb3IiLCJwcm92aWRlckljb24iLCJpY29uIiwia2V5IiwiaHJlZiIsInRhcmdldCIsInJlbCIsIm5hbWUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kYWxzL3NoYXJlLW1hcC1tb2RhbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VTdGF0ZSwgdXNlTWVtb30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCwge1RoZW1lUHJvdmlkZXJ9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7Q29weVRvQ2xpcGJvYXJkfSBmcm9tICdyZWFjdC1jb3B5LXRvLWNsaXBib2FyZCc7XG5pbXBvcnQge3RoZW1lTFR9IGZyb20gJ0BrZXBsZXIuZ2wvc3R5bGVzJztcbmltcG9ydCBJbWFnZU1vZGFsQ29udGFpbmVyLCB7SW1hZ2VNb2RhbENvbnRhaW5lclByb3BzfSBmcm9tICcuL2ltYWdlLW1vZGFsLWNvbnRhaW5lcic7XG5cbmltcG9ydCB7XG4gIFN0eWxlZE1vZGFsQ29udGVudCxcbiAgU3R5bGVkRXhwb3J0U2VjdGlvbixcbiAgSW5wdXRMaWdodCxcbiAgQnV0dG9uXG59IGZyb20gJy4uL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgU3RhdHVzUGFuZWwgZnJvbSAnLi9zdGF0dXMtcGFuZWwnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdAa2VwbGVyLmdsL2xvY2FsaXphdGlvbic7XG5pbXBvcnQge3VzZUNsb3VkTGlzdFByb3ZpZGVyfSBmcm9tICcuLi9ob29rcy91c2UtY2xvdWQtbGlzdC1wcm92aWRlcic7XG5pbXBvcnQge1Byb3ZpZGVyU2VsZWN0fSBmcm9tICcuL2Nsb3VkLWNvbXBvbmVudHMvcHJvdmlkZXItc2VsZWN0JztcbmltcG9ydCB7UHJvdmlkZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvY2xvdWQtcHJvdmlkZXJzJztcbmltcG9ydCB7Y2xlYW51cEV4cG9ydEltYWdlIGFzIGNsZWFudXBFeHBvcnRJbWFnZUFjdGlvbn0gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB7ZGF0YVRlc3RJZHN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuZXhwb3J0IGNvbnN0IFN0eWxlZElucHV0TGFiZWwgPSBzdHlsZWQubGFiZWxgXG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yTFR9O1xuICBsZXR0ZXItc3BhY2luZzogMC4ycHg7XG5gO1xuXG5leHBvcnQgY29uc3QgU3R5bGVTaGFyaW5nVXJsID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ3NoYXJpbmctdXJsJ1xufSlgXG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBtYXJnaW4tYm90dG9tOiAxNHB4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIGlucHV0IHtcbiAgICBib3JkZXItcmlnaHQ6IDA7XG4gIH1cblxuICAuYnV0dG9uIHtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gIH1cbmA7XG5cbmludGVyZmFjZSBTaGFyaW5nVXJsUHJvcHMge1xuICB1cmw6IHN0cmluZztcbiAgbWVzc2FnZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IFNoYXJpbmdVcmw6IFJlYWN0LkZDPFNoYXJpbmdVcmxQcm9wcz4gPSAoe3VybCwgbWVzc2FnZSA9ICcnfSkgPT4ge1xuICBjb25zdCBbY29waWVkLCBzZXRDb3B5XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVTaGFyaW5nVXJsPlxuICAgICAgPFN0eWxlZElucHV0TGFiZWw+e21lc3NhZ2V9PC9TdHlsZWRJbnB1dExhYmVsPlxuICAgICAgPGRpdiBzdHlsZT17e2Rpc3BsYXk6ICdmbGV4J319PlxuICAgICAgICA8SW5wdXRMaWdodCB0eXBlPVwidGV4dFwiIHZhbHVlPXt1cmx9IHJlYWRPbmx5IC8+XG4gICAgICAgIDxDb3B5VG9DbGlwYm9hcmQgdGV4dD17dXJsfSBvbkNvcHk9eygpID0+IHNldENvcHkodHJ1ZSl9PlxuICAgICAgICAgIDxCdXR0b24gd2lkdGg9XCI4MHB4XCI+e2NvcGllZCA/ICdDb3BpZWQhJyA6ICdDb3B5J308L0J1dHRvbj5cbiAgICAgICAgPC9Db3B5VG9DbGlwYm9hcmQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L1N0eWxlU2hhcmluZ1VybD5cbiAgKTtcbn07XG5jb25zdCBub3AgPSAoKSA9PiB7XG4gIHJldHVybjtcbn07XG5cbmNvbnN0IFN0eWxlZFNoYXJlTWFwTW9kYWwgPSBzdHlsZWQoU3R5bGVkTW9kYWxDb250ZW50KWBcbiAgcGFkZGluZzogMjRweCA3MnB4IDQwcHggNzJweDtcbiAgbWFyZ2luOiAwIC03MnB4IC00MHB4IC03MnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuYDtcblxuY29uc3QgU3R5bGVkSW5uZXJEaXYgPSBzdHlsZWQuZGl2YFxuICBtaW4taGVpZ2h0OiA1MDBweDtcbmA7XG5cbmNvbnN0IFVOREVSTElORV9URVhUX0RFQ09SQVRJT05fU1RZTEUgPSB7dGV4dERlY29yYXRpb246ICd1bmRlcmxpbmUnfTtcblxuY29uc3QgU2hhcmVNYXBIZWFkZXIgPSAoe2Nsb3VkUHJvdmlkZXJzfSkgPT4ge1xuICBjb25zdCBzaGFyZWFibGVDbG91ZFByb3ZpZGVycyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gY2xvdWRQcm92aWRlcnMuZmlsdGVyKGNwID0+IGNwLmhhc1NoYXJpbmdVcmwoKSksXG4gICAgW2Nsb3VkUHJvdmlkZXJzXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZEV4cG9ydFNlY3Rpb24+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGl0bGVcIj5cbiAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J21vZGFsLnNoYXJlTWFwLnRpdGxlJ30gLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxQcm92aWRlclNlbGVjdCBjbG91ZFByb3ZpZGVycz17c2hhcmVhYmxlQ2xvdWRQcm92aWRlcnN9IC8+XG4gICAgPC9TdHlsZWRFeHBvcnRTZWN0aW9uPlxuICApO1xufTtcblxuaW50ZXJmYWNlIFNoYXJlTWFwVXJsTW9kYWxGYWN0b3J5UHJvcHMge1xuICBpc1Byb3ZpZGVyTG9hZGluZz86IGJvb2xlYW47XG4gIG9uRXhwb3J0PzogKHByb3ZpZGVyOiBQcm92aWRlcikgPT4gdm9pZDtcbiAgcHJvdmlkZXJFcnJvcj86IHN0cmluZztcbiAgc3VjY2Vzc0luZm8/OiB7c2hhcmVVcmw/OiBzdHJpbmc7IGZvbGRlckxpbms/OiBzdHJpbmd9O1xuICBvblVwZGF0ZUltYWdlU2V0dGluZzogSW1hZ2VNb2RhbENvbnRhaW5lclByb3BzWydvblVwZGF0ZUltYWdlU2V0dGluZyddO1xuICBjbGVhbnVwRXhwb3J0SW1hZ2U6IHR5cGVvZiBjbGVhbnVwRXhwb3J0SW1hZ2VBY3Rpb247XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNoYXJlTWFwVXJsTW9kYWxGYWN0b3J5KCkge1xuICBjb25zdCBTaGFyZU1hcFVybE1vZGFsOiBSZWFjdC5GQzxTaGFyZU1hcFVybE1vZGFsRmFjdG9yeVByb3BzPiA9ICh7XG4gICAgaXNQcm92aWRlckxvYWRpbmcgPSBmYWxzZSxcbiAgICBvbkV4cG9ydCA9IG5vcCxcbiAgICBwcm92aWRlckVycm9yID0gbnVsbCxcbiAgICBzdWNjZXNzSW5mbyA9IHt9LFxuICAgIG9uVXBkYXRlSW1hZ2VTZXR0aW5nID0gbm9wLFxuICAgIGNsZWFudXBFeHBvcnRJbWFnZVxuICB9KSA9PiB7XG4gICAgY29uc3Qge3Byb3ZpZGVyLCBjbG91ZFByb3ZpZGVyc30gPSB1c2VDbG91ZExpc3RQcm92aWRlcigpO1xuICAgIGNvbnN0IHtzaGFyZVVybCwgZm9sZGVyTGlua30gPSBzdWNjZXNzSW5mbztcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAocHJvdmlkZXIpIHtcbiAgICAgICAgb25FeHBvcnQocHJvdmlkZXIpO1xuICAgICAgfVxuICAgIH0sIFtvbkV4cG9ydCwgcHJvdmlkZXJdKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWVMVH0+XG4gICAgICAgIDxJbWFnZU1vZGFsQ29udGFpbmVyXG4gICAgICAgICAgcHJvdmlkZXI9e3Byb3ZpZGVyfVxuICAgICAgICAgIG9uVXBkYXRlSW1hZ2VTZXR0aW5nPXtvblVwZGF0ZUltYWdlU2V0dGluZ31cbiAgICAgICAgICBjbGVhbnVwRXhwb3J0SW1hZ2U9e2NsZWFudXBFeHBvcnRJbWFnZX1cbiAgICAgICAgPlxuICAgICAgICAgIDxTdHlsZWRTaGFyZU1hcE1vZGFsIGNsYXNzTmFtZT1cImV4cG9ydC1jbG91ZC1tb2RhbFwiPlxuICAgICAgICAgICAgPFNoYXJlTWFwSGVhZGVyIGNsb3VkUHJvdmlkZXJzPXtjbG91ZFByb3ZpZGVyc30gLz5cbiAgICAgICAgICAgIHtwcm92aWRlcj8uaGFzU2hhcmluZ1VybCgpID8gKFxuICAgICAgICAgICAgICA8U3R5bGVkSW5uZXJEaXYgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWRzLnByb3ZpZGVyU2hhcmVNYXB9PlxuICAgICAgICAgICAgICAgIDxTdHlsZWRFeHBvcnRTZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9eydtb2RhbC5zaGFyZU1hcC5zaGFyZVVyaVRpdGxlJ30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3VidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J21vZGFsLnNoYXJlTWFwLnNoYXJlVXJpU3VidGl0bGUnfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzZWxlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aXRsZSB3YXJuaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9eydtb2RhbC5zaGFyZU1hcC5zaGFyZURpc2NsYWltZXInfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkRXhwb3J0U2VjdGlvbj5cbiAgICAgICAgICAgICAgICA8U3R5bGVkRXhwb3J0U2VjdGlvbiBkaXNhYmxlZD17aXNQcm92aWRlckxvYWRpbmd9PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9eydtb2RhbC5zaGFyZU1hcC5jbG91ZFRpdGxlJ30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3VidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J21vZGFsLnNoYXJlTWFwLmNsb3VkU3VidGl0bGUnfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkRXhwb3J0U2VjdGlvbj5cbiAgICAgICAgICAgICAgICB7aXNQcm92aWRlckxvYWRpbmcgfHwgcHJvdmlkZXJFcnJvciA/IChcbiAgICAgICAgICAgICAgICAgIDxTdGF0dXNQYW5lbFxuICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc9e2lzUHJvdmlkZXJMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgICBlcnJvcj17cHJvdmlkZXJFcnJvcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXJJY29uPXtwcm92aWRlci5pY29ufVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICB7c2hhcmVVcmwgJiYgKFxuICAgICAgICAgICAgICAgICAgPFN0eWxlZEV4cG9ydFNlY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpdGxlXCI+U2hhcmUgVXJsPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNlbGVjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxTaGFyaW5nVXJsIGtleT17MH0gdXJsPXtzaGFyZVVybH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICB7cHJvdmlkZXIgJiYgZm9sZGVyTGluayAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e2ZvbGRlckxpbmt9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17VU5ERVJMSU5FX1RFWFRfREVDT1JBVElPTl9TVFlMRX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3ZpZGVyLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZEV4cG9ydFNlY3Rpb24+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9TdHlsZWRJbm5lckRpdj5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvU3R5bGVkU2hhcmVNYXBNb2RhbD5cbiAgICAgICAgPC9JbWFnZU1vZGFsQ29udGFpbmVyPlxuICAgICAgPC9UaGVtZVByb3ZpZGVyPlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIFNoYXJlTWFwVXJsTW9kYWw7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUYsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLHFCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxvQkFBQSxHQUFBQyxzQkFBQSxDQUFBTCxPQUFBO0FBRUEsSUFBQU0sa0JBQUEsR0FBQU4sT0FBQTtBQU1BLElBQUFPLFlBQUEsR0FBQUYsc0JBQUEsQ0FBQUwsT0FBQTtBQUNBLElBQUFRLGFBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLHNCQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxlQUFBLEdBQUFWLE9BQUE7QUFHQSxJQUFBVyxVQUFBLEdBQUFYLE9BQUE7QUFBaUQsSUFBQVksZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQXJCakQ7QUFDQTtBQUFBLFNBQUFD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