adui
Version:
<div> <img src="https://wxa.wxs.qq.com/mpweb/delivery/legacy/wxadtouch/upload/t1/od834zef_52939fc6.png" style="margin:40px 0 0 -8px; background-color: #fcfcfc; box-shadow: none;" /> </div>
182 lines • 27.9 kB
JavaScript
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); }
var _excluded = ["className", "disabled", "hoverOperations", "icon", "onIconClick", "onUpload", "previewDisabled", "progress", "src"],
_excluded2 = ["text"];
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
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; }
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; } }
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
import React, { forwardRef, useImperativeHandle, useMemo, useRef, useState } from "react";
import PropTypes from "prop-types";
import classNames from "classnames";
import getScrollBarSize from "rc-util/lib/getScrollBarSize";
import Icon from "../icon";
import "./style";
var prefix = "adui-upload-img";
var Img = forwardRef(function (_ref, ref) {
var className = _ref.className,
disabled = _ref.disabled,
hoverOperations = _ref.hoverOperations,
icon = _ref.icon,
onIconClick = _ref.onIconClick,
onUpload = _ref.onUpload,
previewDisabled = _ref.previewDisabled,
progress = _ref.progress,
src = _ref.src,
otherProps = _objectWithoutProperties(_ref, _excluded);
var _useState = useState(false),
_useState2 = _slicedToArray(_useState, 2),
previewing = _useState2[0],
setPreviewing = _useState2[1];
var uploadElementRef = useRef(null);
var scrollbarWidth = useMemo(getScrollBarSize, []);
var hasOperation = hoverOperations === null || hoverOperations === void 0 ? void 0 : hoverOperations.length;
var classSet = classNames(className, "".concat(prefix), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(prefix, "-hasOperation"), hasOperation), "".concat(prefix, "-uploaded"), src), "".concat(prefix, "-progressing"), progress !== null), "".concat(prefix, "-noIcon"), icon === null), "".concat(prefix, "-disabled"), disabled));
var handleClick = function handleClick() {
if (!src && onUpload && !disabled) {
onUpload();
}
};
var resetScrollbarPadding = function resetScrollbarPadding() {
document.body.style.overflow = "";
document.body.style.paddingRight = "";
};
var setScrollbarPadding = function setScrollbarPadding() {
var _window = window,
innerWidth = _window.innerWidth;
var bodyIsOverflowing = document.body.clientWidth < innerWidth;
if (bodyIsOverflowing && !document.body.style.paddingRight && scrollbarWidth !== undefined) {
document.body.style.paddingRight = "".concat(scrollbarWidth, "px");
}
document.body.style.overflow = "hidden";
};
var handleCancelPreview = function handleCancelPreview() {
setPreviewing(false);
resetScrollbarPadding();
};
var _handleKeyDown = function handleKeyDown(_ref2) {
var key = _ref2.key;
if (key === "Escape") {
handleCancelPreview();
window.removeEventListener("keydown", _handleKeyDown);
}
};
var handlePreview = function handlePreview() {
setPreviewing(true);
setScrollbarPadding();
window.addEventListener("keydown", _handleKeyDown);
};
useImperativeHandle(ref, function () {
return {
uploadElement: uploadElementRef.current,
handlePreview: handlePreview,
handleCancelPreview: handleCancelPreview
};
});
return React.createElement("div", _extends({
role: "none",
className: classSet
}, otherProps), React.createElement("div", {
className: "".concat(prefix, "-uploaded-inner")
}, React.createElement("img", {
className: "".concat(prefix, "-file"),
src: src,
alt: "img"
}), React.createElement("div", {
role: "none",
className: "".concat(prefix, "-cover"),
onClick: function onClick() {
if (!previewDisabled) {
handlePreview();
}
}
}), hoverOperations !== null && hoverOperations !== void 0 && hoverOperations.length ? React.createElement("div", {
className: "".concat(prefix, "-operations")
}, hoverOperations.map(function (_ref3, i) {
var text = _ref3.text,
others = _objectWithoutProperties(_ref3, _excluded2);
return React.createElement(React.Fragment, {
key: i
}, React.createElement("div", _extends({
className: "".concat(prefix, "-operations-item")
}, others), text), i !== hoverOperations.length - 1 && React.createElement("i", {
className: "".concat(prefix, "-operations-divider")
}));
})) : React.createElement("div", {
className: "".concat(prefix, "-remove")
}, React.createElement(Icon, {
icon: icon || "delete-outlined",
onClick: function onClick(e) {
if (onIconClick) {
onIconClick(e);
}
}
}))), React.createElement("div", {
className: "".concat(prefix, "-unuploaded-inner")
}, React.createElement("div", {
role: "none",
className: "".concat(prefix, "-upload-element"),
onClick: handleClick,
ref: uploadElementRef
}, React.createElement(Icon, {
icon: "add",
className: "".concat(prefix, "-icon")
})), React.createElement("div", {
className: "".concat(prefix, "-progress")
}, React.createElement("i", {
style: {
width: "".concat(progress, "%")
}
}))), React.createElement("div", {
className: classNames("".concat(prefix, "-preview"), _defineProperty({}, "".concat(prefix, "-preview-show"), previewing)),
onClick: handleCancelPreview,
role: "none"
}, React.createElement("div", {
className: "".concat(prefix, "-preview-inner")
}, React.createElement("img", {
alt: "img",
className: "".concat(prefix, "-preview-file"),
src: src,
onClick: function onClick(e) {
return e.stopPropagation();
},
role: "none"
}), React.createElement(Icon, {
size: 36,
icon: "cancel",
color: "#fff",
interactive: true
}))));
});
Img.displayName = "Img";
Img.propTypes = {
className: PropTypes.string,
disabled: PropTypes.bool,
hoverOperations: PropTypes.any,
icon: PropTypes.any,
onIconClick: PropTypes.func,
onUpload: PropTypes.func,
previewDisabled: PropTypes.bool,
progress: PropTypes.number,
src: PropTypes.string
};
Img.defaultProps = {
className: "",
disabled: false,
hoverOperations: undefined,
icon: "delete-outlined",
onIconClick: function onIconClick() {},
onUpload: function onUpload() {},
previewDisabled: false,
progress: null,
src: ""
};
export default Img;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZvcndhcmRSZWYiLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwidXNlTWVtbyIsInVzZVJlZiIsInVzZVN0YXRlIiwiUHJvcFR5cGVzIiwiY2xhc3NOYW1lcyIsImdldFNjcm9sbEJhclNpemUiLCJJY29uIiwicHJlZml4IiwiSW1nIiwiX3JlZiIsInJlZiIsImNsYXNzTmFtZSIsImRpc2FibGVkIiwiaG92ZXJPcGVyYXRpb25zIiwiaWNvbiIsIm9uSWNvbkNsaWNrIiwib25VcGxvYWQiLCJwcmV2aWV3RGlzYWJsZWQiLCJwcm9ncmVzcyIsInNyYyIsIm90aGVyUHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJwcmV2aWV3aW5nIiwic2V0UHJldmlld2luZyIsInVwbG9hZEVsZW1lbnRSZWYiLCJzY3JvbGxiYXJXaWR0aCIsImhhc09wZXJhdGlvbiIsImxlbmd0aCIsImNsYXNzU2V0IiwiY29uY2F0IiwiX2RlZmluZVByb3BlcnR5IiwiaGFuZGxlQ2xpY2siLCJyZXNldFNjcm9sbGJhclBhZGRpbmciLCJkb2N1bWVudCIsImJvZHkiLCJzdHlsZSIsIm92ZXJmbG93IiwicGFkZGluZ1JpZ2h0Iiwic2V0U2Nyb2xsYmFyUGFkZGluZyIsIl93aW5kb3ciLCJ3aW5kb3ciLCJpbm5lcldpZHRoIiwiYm9keUlzT3ZlcmZsb3dpbmciLCJjbGllbnRXaWR0aCIsInVuZGVmaW5lZCIsImhhbmRsZUNhbmNlbFByZXZpZXciLCJoYW5kbGVLZXlEb3duIiwiX3JlZjIiLCJrZXkiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlUHJldmlldyIsImFkZEV2ZW50TGlzdGVuZXIiLCJ1cGxvYWRFbGVtZW50IiwiY3VycmVudCIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kcyIsInJvbGUiLCJhbHQiLCJvbkNsaWNrIiwibWFwIiwiX3JlZjMiLCJpIiwidGV4dCIsIm90aGVycyIsIl9leGNsdWRlZDIiLCJGcmFnbWVudCIsImUiLCJ3aWR0aCIsInN0b3BQcm9wYWdhdGlvbiIsInNpemUiLCJjb2xvciIsImludGVyYWN0aXZlIiwiZGlzcGxheU5hbWUiLCJwcm9wVHlwZXMiLCJzdHJpbmciLCJib29sIiwiYW55IiwiZnVuYyIsIm51bWJlciIsImRlZmF1bHRQcm9wcyJdLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvdXBsb2FkL0ltZy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5ICovXG5pbXBvcnQgUmVhY3QsIHtcbiAgZm9yd2FyZFJlZixcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IGdldFNjcm9sbEJhclNpemUgZnJvbSBcInJjLXV0aWwvbGliL2dldFNjcm9sbEJhclNpemVcIlxuaW1wb3J0IEljb24sIHsgSWNvbk5hbWVzIH0gZnJvbSBcIi4uL2ljb25cIlxuaW1wb3J0IFwiLi9zdHlsZVwiXG5cbmNvbnN0IHByZWZpeCA9IFwiYWR1aS11cGxvYWQtaW1nXCJcblxuZXhwb3J0IGludGVyZmFjZSBJSW1nUHJvcHMge1xuICBba2V5OiBzdHJpbmddOiBhbnlcbiAgLyoqXG4gICAqIOmZhOWKoOexu+WQjVxuICAgKi9cbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiDpvKDmoIcgaG92ZXIg5pe255qE5pON5L2c5pi+56S6XG4gICAqL1xuICBob3Zlck9wZXJhdGlvbnM/OiB7XG4gICAgW2tleTogc3RyaW5nXTogYW55XG4gICAgdGV4dDogc3RyaW5nXG4gICAgb25DbGljazogKGU6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB2b2lkXG4gIH1bXVxuICAvKipcbiAgICog5piv5ZCm56aB55SoXG4gICAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOaMh+WumuWPs+S4iuinkuWbvuagh1xuICAgKi9cbiAgaWNvbj86IEljb25OYW1lcyB8IG51bGxcbiAgLyoqXG4gICAqIOWPs+S4iuinkuWbvuagh+eCueWHu+aXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkljb25DbGljaz86IChlOiBSZWFjdC5Nb3VzZUV2ZW50PFNWR1NWR0VsZW1lbnQ+KSA9PiB2b2lkXG4gIC8qKlxuICAgKiDop6blj5HkuIrkvKBcbiAgICovXG4gIG9uVXBsb2FkPzogKCkgPT4gdm9pZFxuICAvKipcbiAgICog56aB5q2i54K55Ye75Zu+54mH6aKE6KeIXG4gICAqL1xuICBwcmV2aWV3RGlzYWJsZWQ/OiBib29sZWFuXG4gIC8qKlxuICAgKiDov5vluqbvvIzkvKDlhaUgbnVsbCDml7booajnpLrkuI3mmL7npLrov5vluqbmnaFcbiAgICovXG4gIHByb2dyZXNzPzogbnVtYmVyIHwgbnVsbFxuICAvKipcbiAgICog5LiK5Lyg5oiQ5Yqf5ZCO55qE5Zu+54mH5Zyw5Z2AXG4gICAqL1xuICBzcmM/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSW1nU3RhdGUge1xuICBwcmV2aWV3aW5nOiBib29sZWFuXG59XG5cbi8qKlxuICog5peL6L2s5Yqg6L2955So5LqO5ZGK55+l55So5oi35L+h5oGv5YaF5a6555qE5Yqg6L2954q25oCB77yM6YCa5bi45piv5Y2z5pe244CB55+t5pe255qE44CCXG4gKi9cbmNvbnN0IEltZzogUmVhY3QuRm9yd2FyZFJlZkV4b3RpY0NvbXBvbmVudDxcbiAgSUltZ1Byb3BzICYgUmVhY3QuUmVmQXR0cmlidXRlczxhbnk+XG4+ID0gZm9yd2FyZFJlZihcbiAgKFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgaG92ZXJPcGVyYXRpb25zLFxuICAgICAgaWNvbixcbiAgICAgIG9uSWNvbkNsaWNrLFxuICAgICAgb25VcGxvYWQsXG4gICAgICBwcmV2aWV3RGlzYWJsZWQsXG4gICAgICBwcm9ncmVzcyxcbiAgICAgIHNyYyxcbiAgICAgIC4uLm90aGVyUHJvcHNcbiAgICB9OiBJSW1nUHJvcHMsXG4gICAgcmVmXG4gICkgPT4ge1xuICAgIGNvbnN0IFtwcmV2aWV3aW5nLCBzZXRQcmV2aWV3aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gICAgY29uc3QgdXBsb2FkRWxlbWVudFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICAgIGNvbnN0IHNjcm9sbGJhcldpZHRoID0gdXNlTWVtbyhnZXRTY3JvbGxCYXJTaXplLCBbXSlcblxuICAgIGNvbnN0IGhhc09wZXJhdGlvbiA9IGhvdmVyT3BlcmF0aW9ucz8ubGVuZ3RoXG5cbiAgICBjb25zdCBjbGFzc1NldCA9IGNsYXNzTmFtZXMoY2xhc3NOYW1lLCBgJHtwcmVmaXh9YCwge1xuICAgICAgW2Ake3ByZWZpeH0taGFzT3BlcmF0aW9uYF06IGhhc09wZXJhdGlvbixcbiAgICAgIFtgJHtwcmVmaXh9LXVwbG9hZGVkYF06IHNyYyxcbiAgICAgIFtgJHtwcmVmaXh9LXByb2dyZXNzaW5nYF06IHByb2dyZXNzICE9PSBudWxsLFxuICAgICAgW2Ake3ByZWZpeH0tbm9JY29uYF06IGljb24gPT09IG51bGwsXG4gICAgICBbYCR7cHJlZml4fS1kaXNhYmxlZGBdOiBkaXNhYmxlZCxcbiAgICB9KVxuXG4gICAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoIXNyYyAmJiBvblVwbG9hZCAmJiAhZGlzYWJsZWQpIHtcbiAgICAgICAgb25VcGxvYWQoKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHJlc2V0U2Nyb2xsYmFyUGFkZGluZyA9ICgpID0+IHtcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSBcIlwiXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodCA9IFwiXCJcbiAgICB9XG5cbiAgICBjb25zdCBzZXRTY3JvbGxiYXJQYWRkaW5nID0gKCkgPT4ge1xuICAgICAgY29uc3QgeyBpbm5lcldpZHRoIH0gPSB3aW5kb3dcbiAgICAgIGNvbnN0IGJvZHlJc092ZXJmbG93aW5nID0gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCA8IGlubmVyV2lkdGhcbiAgICAgIGlmIChcbiAgICAgICAgYm9keUlzT3ZlcmZsb3dpbmcgJiZcbiAgICAgICAgIWRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0ICYmXG4gICAgICAgIHNjcm9sbGJhcldpZHRoICE9PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodCA9IGAke3Njcm9sbGJhcldpZHRofXB4YFxuICAgICAgfVxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCJcbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVDYW5jZWxQcmV2aWV3ID0gKCkgPT4ge1xuICAgICAgc2V0UHJldmlld2luZyhmYWxzZSlcbiAgICAgIHJlc2V0U2Nyb2xsYmFyUGFkZGluZygpXG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9ICh7IGtleSB9OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBpZiAoa2V5ID09PSBcIkVzY2FwZVwiKSB7XG4gICAgICAgIGhhbmRsZUNhbmNlbFByZXZpZXcoKVxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5RG93bilcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVQcmV2aWV3ID0gKCkgPT4ge1xuICAgICAgc2V0UHJldmlld2luZyh0cnVlKVxuICAgICAgc2V0U2Nyb2xsYmFyUGFkZGluZygpXG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5RG93bilcbiAgICB9XG5cbiAgICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4gKHtcbiAgICAgIHVwbG9hZEVsZW1lbnQ6IHVwbG9hZEVsZW1lbnRSZWYuY3VycmVudCxcbiAgICAgIGhhbmRsZVByZXZpZXcsXG4gICAgICBoYW5kbGVDYW5jZWxQcmV2aWV3LFxuICAgIH0pKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgcm9sZT1cIm5vbmVcIiBjbGFzc05hbWU9e2NsYXNzU2V0fSB7Li4ub3RoZXJQcm9wc30+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LXVwbG9hZGVkLWlubmVyYH0+XG4gICAgICAgICAgPGltZyBjbGFzc05hbWU9e2Ake3ByZWZpeH0tZmlsZWB9IHNyYz17c3JjfSBhbHQ9XCJpbWdcIiAvPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHJvbGU9XCJub25lXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7cHJlZml4fS1jb3ZlcmB9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghcHJldmlld0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlUHJldmlldygpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7aG92ZXJPcGVyYXRpb25zPy5sZW5ndGggPyAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7cHJlZml4fS1vcGVyYXRpb25zYH0+XG4gICAgICAgICAgICAgIHtob3Zlck9wZXJhdGlvbnMubWFwKCh7IHRleHQsIC4uLm90aGVycyB9LCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgPFJlYWN0LkZyYWdtZW50IGtleT17aX0+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7cHJlZml4fS1vcGVyYXRpb25zLWl0ZW1gfSB7Li4ub3RoZXJzfT5cbiAgICAgICAgICAgICAgICAgICAge3RleHR9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIHtpICE9PSBob3Zlck9wZXJhdGlvbnMubGVuZ3RoIC0gMSAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT17YCR7cHJlZml4fS1vcGVyYXRpb25zLWRpdmlkZXJgfSAvPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7cHJlZml4fS1yZW1vdmVgfT5cbiAgICAgICAgICAgICAgPEljb25cbiAgICAgICAgICAgICAgICBpY29uPXtpY29uIHx8IFwiZGVsZXRlLW91dGxpbmVkXCJ9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChvbkljb25DbGljaykge1xuICAgICAgICAgICAgICAgICAgICBvbkljb25DbGljayhlKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake3ByZWZpeH0tdW51cGxvYWRlZC1pbm5lcmB9PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHJvbGU9XCJub25lXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7cHJlZml4fS11cGxvYWQtZWxlbWVudGB9XG4gICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDbGlja31cbiAgICAgICAgICAgIHJlZj17dXBsb2FkRWxlbWVudFJlZn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SWNvbiBpY29uPVwiYWRkXCIgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWljb25gfSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LXByb2dyZXNzYH0+XG4gICAgICAgICAgICA8aSBzdHlsZT17eyB3aWR0aDogYCR7cHJvZ3Jlc3N9JWAgfX0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoYCR7cHJlZml4fS1wcmV2aWV3YCwge1xuICAgICAgICAgICAgW2Ake3ByZWZpeH0tcHJldmlldy1zaG93YF06IHByZXZpZXdpbmcsXG4gICAgICAgICAgfSl9XG4gICAgICAgICAgb25DbGljaz17aGFuZGxlQ2FuY2VsUHJldmlld31cbiAgICAgICAgICByb2xlPVwibm9uZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7cHJlZml4fS1wcmV2aWV3LWlubmVyYH0+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIGFsdD1cImltZ1wiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7cHJlZml4fS1wcmV2aWV3LWZpbGVgfVxuICAgICAgICAgICAgICBzcmM9e3NyY31cbiAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICAgICAgICAgIHJvbGU9XCJub25lXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8SWNvbiBzaXplPXszNn0gaWNvbj1cImNhbmNlbFwiIGNvbG9yPVwiI2ZmZlwiIGludGVyYWN0aXZlIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG4pXG5cbkltZy5kaXNwbGF5TmFtZSA9IFwiSW1nXCJcblxuSW1nLnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIOmZhOWKoOexu+WQjVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICog5piv5ZCm56aB55SoXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiDpvKDmoIcgaG92ZXIg5pe255qE5pON5L2c5pi+56S6XG4gICAqL1xuICBob3Zlck9wZXJhdGlvbnM6IFByb3BUeXBlcy5hbnksXG4gIC8qKlxuICAgKiDmjIflrprlj7PkuIrop5Llm77moIdcbiAgICovXG4gIGljb246IFByb3BUeXBlcy5hbnksXG4gIC8qKlxuICAgKiDlj7PkuIrop5Llm77moIfngrnlh7vml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25JY29uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICog6Kem5Y+R5LiK5LygXG4gICAqL1xuICBvblVwbG9hZDogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiDnpoHmraLngrnlh7vlm77niYfpooTop4hcbiAgICovXG4gIHByZXZpZXdEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiDov5vluqbvvIzkvKDlhaUgbnVsbCDml7booajnpLrkuI3mmL7npLrov5vluqbmnaFcbiAgICovXG4gIHByb2dyZXNzOiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICog5LiK5Lyg5oiQ5Yqf5ZCO55qE5Zu+54mH5Zyw5Z2AXG4gICAqL1xuICBzcmM6IFByb3BUeXBlcy5zdHJpbmcsXG59XG5cbkltZy5kZWZhdWx0UHJvcHMgPSB7XG4gIGNsYXNzTmFtZTogXCJcIixcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBob3Zlck9wZXJhdGlvbnM6IHVuZGVmaW5lZCxcbiAgaWNvbjogXCJkZWxldGUtb3V0bGluZWRcIixcbiAgb25JY29uQ2xpY2s6ICgpID0+IHt9LFxuICBvblVwbG9hZDogKCkgPT4ge30sXG4gIHByZXZpZXdEaXNhYmxlZDogZmFsc2UsXG4gIHByb2dyZXNzOiBudWxsLFxuICBzcmM6IFwiXCIs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