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>
191 lines (190 loc) • 36.2 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); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
var _getScrollBarSize = _interopRequireDefault(require("rc-util/lib/getScrollBarSize"));
var _icon = _interopRequireDefault(require("../icon"));
require("./style");
var _excluded = ["className", "disabled", "hoverOperations", "icon", "onIconClick", "onUpload", "previewDisabled", "progress", "src"],
_excluded2 = ["text"];
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
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; }
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; }
var prefix = "adui-upload-img";
var Img = (0, _react.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 = (0, _react.useState)(false),
_useState2 = _slicedToArray(_useState, 2),
previewing = _useState2[0],
setPreviewing = _useState2[1];
var uploadElementRef = (0, _react.useRef)(null);
var scrollbarWidth = (0, _react.useMemo)(_getScrollBarSize["default"], []);
var hasOperation = hoverOperations === null || hoverOperations === void 0 ? void 0 : hoverOperations.length;
var classSet = (0, _classnames["default"])(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);
};
(0, _react.useImperativeHandle)(ref, function () {
return {
uploadElement: uploadElementRef.current,
handlePreview: handlePreview,
handleCancelPreview: handleCancelPreview
};
});
return _react["default"].createElement("div", _extends({
role: "none",
className: classSet
}, otherProps), _react["default"].createElement("div", {
className: "".concat(prefix, "-uploaded-inner")
}, _react["default"].createElement("img", {
className: "".concat(prefix, "-file"),
src: src,
alt: "img"
}), _react["default"].createElement("div", {
role: "none",
className: "".concat(prefix, "-cover"),
onClick: function onClick() {
if (!previewDisabled) {
handlePreview();
}
}
}), hoverOperations !== null && hoverOperations !== void 0 && hoverOperations.length ? _react["default"].createElement("div", {
className: "".concat(prefix, "-operations")
}, hoverOperations.map(function (_ref3, i) {
var text = _ref3.text,
others = _objectWithoutProperties(_ref3, _excluded2);
return _react["default"].createElement(_react["default"].Fragment, {
key: i
}, _react["default"].createElement("div", _extends({
className: "".concat(prefix, "-operations-item")
}, others), text), i !== hoverOperations.length - 1 && _react["default"].createElement("i", {
className: "".concat(prefix, "-operations-divider")
}));
})) : _react["default"].createElement("div", {
className: "".concat(prefix, "-remove")
}, _react["default"].createElement(_icon["default"], {
icon: icon || "delete-outlined",
onClick: function onClick(e) {
if (onIconClick) {
onIconClick(e);
}
}
}))), _react["default"].createElement("div", {
className: "".concat(prefix, "-unuploaded-inner")
}, _react["default"].createElement("div", {
role: "none",
className: "".concat(prefix, "-upload-element"),
onClick: handleClick,
ref: uploadElementRef
}, _react["default"].createElement(_icon["default"], {
icon: "add",
className: "".concat(prefix, "-icon")
})), _react["default"].createElement("div", {
className: "".concat(prefix, "-progress")
}, _react["default"].createElement("i", {
style: {
width: "".concat(progress, "%")
}
}))), _react["default"].createElement("div", {
className: (0, _classnames["default"])("".concat(prefix, "-preview"), _defineProperty({}, "".concat(prefix, "-preview-show"), previewing)),
onClick: handleCancelPreview,
role: "none"
}, _react["default"].createElement("div", {
className: "".concat(prefix, "-preview-inner")
}, _react["default"].createElement("img", {
alt: "img",
className: "".concat(prefix, "-preview-file"),
src: src,
onClick: function onClick(e) {
return e.stopPropagation();
},
role: "none"
}), _react["default"].createElement(_icon["default"], {
size: 36,
icon: "cancel",
color: "#fff",
interactive: true
}))));
});
Img.displayName = "Img";
Img.propTypes = {
className: _propTypes["default"].string,
disabled: _propTypes["default"].bool,
hoverOperations: _propTypes["default"].any,
icon: _propTypes["default"].any,
onIconClick: _propTypes["default"].func,
onUpload: _propTypes["default"].func,
previewDisabled: _propTypes["default"].bool,
progress: _propTypes["default"].number,
src: _propTypes["default"].string
};
Img.defaultProps = {
className: "",
disabled: false,
hoverOperations: undefined,
icon: "delete-outlined",
onIconClick: function onIconClick() {},
onUpload: function onUpload() {},
previewDisabled: false,
progress: null,
src: ""
};
var _default = exports["default"] = Img;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jbGFzc25hbWVzIiwiX2dldFNjcm9sbEJhclNpemUiLCJfaWNvbiIsIl9leGNsdWRlZCIsIl9leGNsdWRlZDIiLCJlIiwiX19lc01vZHVsZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIldlYWtNYXAiLCJyIiwidCIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfZXh0ZW5kcyIsImFzc2lnbiIsImJpbmQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcHBseSIsIl9kZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5IiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIl9zbGljZWRUb0FycmF5IiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJsIiwiaXRlcmF0b3IiLCJmIiwibyIsIm5leHQiLCJkb25lIiwicHVzaCIsImlzQXJyYXkiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInMiLCJpbmNsdWRlcyIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwicHJlZml4IiwiSW1nIiwiZm9yd2FyZFJlZiIsIl9yZWYiLCJyZWYiLCJjbGFzc05hbWUiLCJkaXNhYmxlZCIsImhvdmVyT3BlcmF0aW9ucyIsImljb24iLCJvbkljb25DbGljayIsIm9uVXBsb2FkIiwicHJldmlld0Rpc2FibGVkIiwicHJvZ3Jlc3MiLCJzcmMiLCJvdGhlclByb3BzIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwicHJldmlld2luZyIsInNldFByZXZpZXdpbmciLCJ1cGxvYWRFbGVtZW50UmVmIiwidXNlUmVmIiwic2Nyb2xsYmFyV2lkdGgiLCJ1c2VNZW1vIiwiZ2V0U2Nyb2xsQmFyU2l6ZSIsImhhc09wZXJhdGlvbiIsImNsYXNzU2V0IiwiY2xhc3NOYW1lcyIsImNvbmNhdCIsImhhbmRsZUNsaWNrIiwicmVzZXRTY3JvbGxiYXJQYWRkaW5nIiwiZG9jdW1lbnQiLCJib2R5Iiwic3R5bGUiLCJvdmVyZmxvdyIsInBhZGRpbmdSaWdodCIsInNldFNjcm9sbGJhclBhZGRpbmciLCJfd2luZG93Iiwid2luZG93IiwiaW5uZXJXaWR0aCIsImJvZHlJc092ZXJmbG93aW5nIiwiY2xpZW50V2lkdGgiLCJ1bmRlZmluZWQiLCJoYW5kbGVDYW5jZWxQcmV2aWV3IiwiaGFuZGxlS2V5RG93biIsIl9yZWYyIiwia2V5IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZVByZXZpZXciLCJhZGRFdmVudExpc3RlbmVyIiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsInVwbG9hZEVsZW1lbnQiLCJjdXJyZW50IiwiY3JlYXRlRWxlbWVudCIsInJvbGUiLCJhbHQiLCJvbkNsaWNrIiwibWFwIiwiX3JlZjMiLCJ0ZXh0Iiwib3RoZXJzIiwiRnJhZ21lbnQiLCJ3aWR0aCIsInN0b3BQcm9wYWdhdGlvbiIsInNpemUiLCJjb2xvciIsImludGVyYWN0aXZlIiwiZGlzcGxheU5hbWUiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJib29sIiwiYW55IiwiZnVuYyIsIm51bWJlciIsImRlZmF1bHRQcm9wcyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvdXBsb2FkL0ltZy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5ICovXG5pbXBvcnQgUmVhY3QsIHtcbiAgZm9yd2FyZFJlZixcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IGdldFNjcm9sbEJhclNpemUgZnJvbSBcInJjLXV0aWwvbGliL2dldFNjcm9sbEJhclNpemVcIlxuaW1wb3J0IEljb24sIHsgSWNvbk5hbWVzIH0gZnJvbSBcIi4uL2ljb25cIlxuaW1wb3J0IFwiLi9zdHlsZVwiXG5cbmNvbnN0IHByZWZpeCA9IFwiYWR1aS11cGxvYWQtaW1nXCJcblxuZXhwb3J0IGludGVyZmFjZSBJSW1nUHJvcHMge1xuICBba2V5OiBzdHJpbmddOiBhbnlcbiAgLyoqXG4gICAqIOmZhOWKoOexu+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+IHt9LFxuICBvblVwbG9hZDogKCkgPT4ge30sXG4gIHByZXZpZXdEaXNhYmxlZDogZmFsc2UsXG4gIHByb2dyZXNzOiBudWxsLFxuICBzcmM6IFwiXCIsXG59XG5cbmV4cG9ydCBkZWZhdWx0IEltZ1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBT0Es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
;