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>
204 lines • 29 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 = ["align", "className", "current", "defaultCurrent", "disabled", "hideWhenSinglePage", "onChange", "pageSize", "showButtonJumper", "showInputJumper", "size", "theme", "total"];
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, { useContext, useState } from "react";
import PropTypes from "prop-types";
import classNames from "classnames";
import warning from "../_util/warning";
import { ConfigContext, getComputedSize } from "../config-provider";
import Button from "../button";
import Input from "../input";
import "./style";
var noop = function noop() {};
var prefix = "adui-pagination";
var Pagination = function Pagination(_ref) {
var align = _ref.align,
className = _ref.className,
currentProp = _ref.current,
defaultCurrent = _ref.defaultCurrent,
disabled = _ref.disabled,
hideWhenSinglePage = _ref.hideWhenSinglePage,
onChange = _ref.onChange,
pageSize = _ref.pageSize,
showButtonJumper = _ref.showButtonJumper,
showInputJumper = _ref.showInputJumper,
sizeProp = _ref.size,
theme = _ref.theme,
total = _ref.total,
otherProps = _objectWithoutProperties(_ref, _excluded);
var _useState = useState((currentProp !== null ? currentProp : defaultCurrent) || 1),
_useState2 = _slicedToArray(_useState, 2),
current = _useState2[0],
setCurrent = _useState2[1];
var _useState3 = useState(""),
_useState4 = _slicedToArray(_useState3, 2),
inputValue = _useState4[0],
setInputValue = _useState4[1];
if (currentProp !== null && currentProp !== undefined && current !== currentProp) {
setCurrent(currentProp);
}
var _useContext = useContext(ConfigContext),
sizeContext = _useContext.size;
var size = getComputedSize(sizeProp, sizeContext);
var classSet = classNames(className, "".concat(prefix, "-base"), "".concat(prefix, "-").concat(size), _defineProperty({}, "".concat(prefix, "-").concat(align), align));
warning(Number.isInteger(current), "Pagination", "current 值需要是正整数");
warning(!(current < 1 || current > Math.ceil((total || 0) / (pageSize || 10)) && current !== 1), "Pagination", "current \u9700\u8981\u65F6\u5728\u6B63\u786E\u8303\u56F4\u5185\u7684\u6B63\u6574\u6570\uFF0Ctotal: ".concat(total, "\uFF0CpageSize\uFF1A").concat(pageSize));
var pageNumber = 1;
if (total && pageSize) {
pageNumber = Math.max(Math.ceil(total / pageSize), 1);
}
var prevDisabled = current === 1;
var nextDisabled = current === pageNumber;
if (pageNumber === 1 && hideWhenSinglePage) {
return null;
}
var handleJump = function handleJump(type) {
var newPage;
switch (type) {
case "first":
newPage = 1;
break;
case "prev":
newPage = current - 1;
break;
case "next":
newPage = current + 1;
break;
case "last":
if (total && pageSize) {
newPage = Math.max(Math.ceil(total / pageSize), 1);
}
break;
default:
}
if (newPage && pageSize) {
if (currentProp === null) {
setCurrent(newPage);
}
if (onChange) {
onChange(newPage, pageSize);
}
}
};
var handleInputJump = function handleInputJump() {
var parsevalue = parseInt(inputValue, 10);
if (isNaN(parsevalue)) {
return;
}
var value = Math.max(parsevalue, 1);
if (total && pageSize) {
value = Math.min(value, Math.max(Math.ceil(total / pageSize), 1));
}
if (currentProp === null) {
setCurrent(value);
}
if (onChange) {
onChange(value, pageSize);
}
};
return React.createElement("div", _extends({
className: classSet,
"data-current": current
}, otherProps), showButtonJumper && React.createElement(Button, {
disabled: disabled,
style: {
marginRight: "8px"
},
leftIcon: "arrow-left-first",
size: size,
theme: theme,
onClick: function onClick() {
if (!prevDisabled) handleJump("first");
}
}), React.createElement(Button, {
disabled: disabled,
leftIcon: "arrow-left",
size: size,
theme: theme,
onClick: function onClick() {
if (!prevDisabled) handleJump("prev");
}
}), React.createElement("span", {
className: "".concat(prefix, "-text")
}, current, " / ", pageNumber), React.createElement(Button, {
disabled: disabled,
leftIcon: "arrow-right",
size: size,
theme: theme,
onClick: function onClick() {
if (!nextDisabled) handleJump("next");
}
}), showButtonJumper && React.createElement(Button, {
disabled: disabled,
style: {
marginLeft: "8px"
},
leftIcon: "arrow-right-last",
size: size,
theme: theme,
onClick: function onClick() {
if (!nextDisabled) handleJump("last");
}
}), showInputJumper && [React.createElement(Input, {
disabled: disabled,
key: 0,
className: "".concat(prefix, "-input"),
placeholder: "\u9875\u7801",
size: size,
theme: theme,
onChange: function onChange(e) {
return setInputValue(e.target.value);
},
onPressEnter: handleInputJump
}), React.createElement(Button, {
disabled: disabled,
key: 1,
size: size,
theme: theme,
onClick: handleInputJump
}, "\u8DF3\u8F6C")]);
};
Pagination.displayName = "Pagination";
Pagination.propTypes = {
align: PropTypes.oneOf(["left", "center", "right"]),
className: PropTypes.string,
current: PropTypes.number,
defaultCurrent: PropTypes.number,
disabled: PropTypes.bool,
hideWhenSinglePage: PropTypes.bool,
onChange: PropTypes.func,
pageSize: PropTypes.number,
showButtonJumper: PropTypes.bool,
showInputJumper: PropTypes.bool,
size: PropTypes.oneOf(["mini", "small", "medium", "large"]),
theme: PropTypes.oneOf([null, "light"]),
total: PropTypes.number
};
Pagination.defaultProps = {
align: undefined,
className: undefined,
current: null,
defaultCurrent: 1,
disabled: false,
hideWhenSinglePage: true,
onChange: noop,
pageSize: 10,
showButtonJumper: false,
showInputJumper: false,
size: "small",
theme: null,
total: 0
};
export default Pagination;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNvbnRleHQiLCJ1c2VTdGF0ZSIsIlByb3BUeXBlcyIsImNsYXNzTmFtZXMiLCJ3YXJuaW5nIiwiQ29uZmlnQ29udGV4dCIsImdldENvbXB1dGVkU2l6ZSIsIkJ1dHRvbiIsIklucHV0Iiwibm9vcCIsInByZWZpeCIsIlBhZ2luYXRpb24iLCJfcmVmIiwiYWxpZ24iLCJjbGFzc05hbWUiLCJjdXJyZW50UHJvcCIsImN1cnJlbnQiLCJkZWZhdWx0Q3VycmVudCIsImRpc2FibGVkIiwiaGlkZVdoZW5TaW5nbGVQYWdlIiwib25DaGFuZ2UiLCJwYWdlU2l6ZSIsInNob3dCdXR0b25KdW1wZXIiLCJzaG93SW5wdXRKdW1wZXIiLCJzaXplUHJvcCIsInNpemUiLCJ0aGVtZSIsInRvdGFsIiwib3RoZXJQcm9wcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNldEN1cnJlbnQiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlucHV0VmFsdWUiLCJzZXRJbnB1dFZhbHVlIiwidW5kZWZpbmVkIiwiX3VzZUNvbnRleHQiLCJzaXplQ29udGV4dCIsImNsYXNzU2V0IiwiY29uY2F0IiwiX2RlZmluZVByb3BlcnR5IiwiTnVtYmVyIiwiaXNJbnRlZ2VyIiwiTWF0aCIsImNlaWwiLCJwYWdlTnVtYmVyIiwibWF4IiwicHJldkRpc2FibGVkIiwibmV4dERpc2FibGVkIiwiaGFuZGxlSnVtcCIsInR5cGUiLCJuZXdQYWdlIiwiaGFuZGxlSW5wdXRKdW1wIiwicGFyc2V2YWx1ZSIsInBhcnNlSW50IiwiaXNOYU4iLCJ2YWx1ZSIsIm1pbiIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kcyIsInN0eWxlIiwibWFyZ2luUmlnaHQiLCJsZWZ0SWNvbiIsIm9uQ2xpY2siLCJtYXJnaW5MZWZ0Iiwia2V5IiwicGxhY2Vob2xkZXIiLCJlIiwidGFyZ2V0Iiwib25QcmVzc0VudGVyIiwiZGlzcGxheU5hbWUiLCJwcm9wVHlwZXMiLCJvbmVPZiIsInN0cmluZyIsIm51bWJlciIsImJvb2wiLCJmdW5jIiwiZGVmYXVsdFByb3BzIl0sInNvdXJjZXMiOlsiLi4vLi4vY29tcG9uZW50cy9wYWdpbmF0aW9uL1BhZ2luYXRpb24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VDb250ZXh0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCJcbmltcG9ydCB3YXJuaW5nIGZyb20gXCIuLi9fdXRpbC93YXJuaW5nXCJcbmltcG9ydCB7IENvbmZpZ0NvbnRleHQsIGdldENvbXB1dGVkU2l6ZSB9IGZyb20gXCIuLi9jb25maWctcHJvdmlkZXJcIlxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vYnV0dG9uXCJcbmltcG9ydCBJbnB1dCBmcm9tIFwiLi4vaW5wdXRcIlxuaW1wb3J0IFwiLi9zdHlsZVwiXG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fVxuY29uc3QgcHJlZml4ID0gXCJhZHVpLXBhZ2luYXRpb25cIlxuXG5leHBvcnQgaW50ZXJmYWNlIElQYWdpbmF0aW9uUHJvcHMge1xuICBba2V5OiBzdHJpbmddOiBhbnlcbiAgLyoqXG4gICAqIOWvuem9kOaWueW8j1xuICAgKi9cbiAgYWxpZ24/OiBcImxlZnRcIiB8IFwiY2VudGVyXCIgfCBcInJpZ2h0XCJcbiAgLyoqXG4gICAqIOmZhOWKoOexu+WQjVxuICAgKi9cbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiDlvZPliY3pobXmlbBcbiAgICovXG4gIGN1cnJlbnQ/OiBudW1iZXIgfCBudWxsXG4gIC8qKlxuICAgKiDpu5jorqTnmoTlvZPliY3pobXmlbBcbiAgICovXG4gIGRlZmF1bHRDdXJyZW50PzogbnVtYmVyXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKhcbiAgICovXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICAvKipcbiAgICog5Y+q5pyJ5LiA6aG15pe2IHJldHVybiBudWxsXG4gICAqL1xuICBoaWRlV2hlblNpbmdsZVBhZ2U/OiBib29sZWFuXG4gIC8qKlxuICAgKiDlvZPliY3pobXlj5jljJbml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25DaGFuZ2U/OiAobmV3UGFnZTogbnVtYmVyLCBwYWdlU2l6ZT86IG51bWJlcikgPT4gdm9pZFxuICAvKipcbiAgICog6K6+572u5q+P6aG15p2h5pWw77yM6buY6K6kIDEwIOadoVxuICAgKi9cbiAgcGFnZVNpemU/OiBudW1iZXJcbiAgLyoqXG4gICAqIOaYr+WQpuaYvuekuummlumhteWwvumhtei3s+i9rOaMiemSrlxuICAgKi9cbiAgc2hvd0J1dHRvbkp1bXBlcj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOaYr+WQpuaYvuekuui3s+i9rOi+k+WFpeahhlxuICAgKi9cbiAgc2hvd0lucHV0SnVtcGVyPzogYm9vbGVhblxuICAvKipcbiAgICog6K6+572u5bC65a+4XG4gICAqL1xuICBzaXplPzogXCJtaW5pXCIgfCBcInNtYWxsXCIgfCBcIm1lZGl1bVwiIHwgXCJsYXJnZVwiXG4gIC8qKlxuICAgKiDorr7nva7kuLvpophcbiAgICovXG4gIHRoZW1lPzogbnVsbCB8IFwibGlnaHRcIlxuICAvKipcbiAgICog5pWw5o2u5oC75pWwXG4gICAqL1xuICB0b3RhbD86IG51bWJlclxufVxuXG4vKipcbiAqIOWIhumhteWZqOeUqOS6juWwhuWkp+mHj+WGheWuueS7peWIhumhteW9ouW8j+mXtOmalO+8jOWIh+aNoumAieaLqeafpeeci+OAglxuICovXG5jb25zdCBQYWdpbmF0aW9uOiBSZWFjdC5GQzxJUGFnaW5hdGlvblByb3BzPiA9ICh7XG4gIGFsaWduLFxuICBjbGFzc05hbWUsXG4gIGN1cnJlbnQ6IGN1cnJlbnRQcm9wLFxuICBkZWZhdWx0Q3VycmVudCxcbiAgZGlzYWJsZWQsXG4gIGhpZGVXaGVuU2luZ2xlUGFnZSxcbiAgb25DaGFuZ2UsXG4gIHBhZ2VTaXplLFxuICBzaG93QnV0dG9uSnVtcGVyLFxuICBzaG93SW5wdXRKdW1wZXIsXG4gIHNpemU6IHNpemVQcm9wLFxuICB0aGVtZSxcbiAgdG90YWwsXG4gIC4uLm90aGVyUHJvcHNcbn06IElQYWdpbmF0aW9uUHJvcHMpID0+IHtcbiAgY29uc3QgW2N1cnJlbnQsIHNldEN1cnJlbnRdID0gdXNlU3RhdGU8bnVtYmVyPihcbiAgICAoY3VycmVudFByb3AgIT09IG51bGwgPyBjdXJyZW50UHJvcCA6IGRlZmF1bHRDdXJyZW50KSB8fCAxXG4gIClcbiAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gdXNlU3RhdGUoXCJcIilcblxuICAvLyDnm7jlvZPkuo7nlJ/lkb3lkajmnJ8gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXG4gIGlmIChcbiAgICBjdXJyZW50UHJvcCAhPT0gbnVsbCAmJlxuICAgIGN1cnJlbnRQcm9wICE9PSB1bmRlZmluZWQgJiZcbiAgICBjdXJyZW50ICE9PSBjdXJyZW50UHJvcFxuICApIHtcbiAgICBzZXRDdXJyZW50KGN1cnJlbnRQcm9wKVxuICB9XG5cbiAgY29uc3QgeyBzaXplOiBzaXplQ29udGV4dCB9ID0gdXNlQ29udGV4dChDb25maWdDb250ZXh0KVxuICBjb25zdCBzaXplID0gZ2V0Q29tcHV0ZWRTaXplKHNpemVQcm9wLCBzaXplQ29udGV4dClcblxuICBjb25zdCBjbGFzc1NldCA9IGNsYXNzTmFtZXMoXG4gICAgY2xhc3NOYW1lLFxuICAgIGAke3ByZWZpeH0tYmFzZWAsXG4gICAgYCR7cHJlZml4fS0ke3NpemV9YCxcbiAgICB7XG4gICAgICBbYCR7cHJlZml4fS0ke2FsaWdufWBdOiBhbGlnbixcbiAgICB9XG4gIClcblxuICB3YXJuaW5nKE51bWJlci5pc0ludGVnZXIoY3VycmVudCksIFwiUGFnaW5hdGlvblwiLCBcImN1cnJlbnQg5YC86ZyA6KaB5piv5q2j5pW05pWwXCIpXG5cbiAgd2FybmluZyhcbiAgICAhKFxuICAgICAgY3VycmVudCA8IDEgfHxcbiAgICAgIChjdXJyZW50ID4gTWF0aC5jZWlsKCh0b3RhbCB8fCAwKSAvIChwYWdlU2l6ZSB8fCAxMCkpICYmIGN1cnJlbnQgIT09IDEpXG4gICAgKSxcbiAgICBcIlBhZ2luYXRpb25cIixcbiAgICBgY3VycmVudCDpnIDopoHml7blnKjmraPnoa7ojIPlm7TlhoXnmoTmraPmlbTmlbDvvIx0b3RhbDogJHt0b3RhbH3vvIxwYWdlU2l6Ze+8miR7cGFnZVNpemV9YFxuICApXG5cbiAgbGV0IHBhZ2VOdW1iZXIgPSAxXG4gIGlmICh0b3RhbCAmJiBwYWdlU2l6ZSkge1xuICAgIHBhZ2VOdW1iZXIgPSBNYXRoLm1heChNYXRoLmNlaWwodG90YWwgLyBwYWdlU2l6ZSksIDEpXG4gIH1cbiAgY29uc3QgcHJldkRpc2FibGVkID0gY3VycmVudCA9PT0gMVxuICBjb25zdCBuZXh0RGlzYWJsZWQgPSBjdXJyZW50ID09PSBwYWdlTnVtYmVyXG5cbiAgaWYgKHBhZ2VOdW1iZXIgPT09IDEgJiYgaGlkZVdoZW5TaW5nbGVQYWdlKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUp1bXAgPSAodHlwZTogc3RyaW5nKSA9PiB7XG4gICAgbGV0IG5ld1BhZ2VcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgXCJmaXJzdFwiOlxuICAgICAgICBuZXdQYWdlID0gMVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBcInByZXZcIjpcbiAgICAgICAgbmV3UGFnZSA9IGN1cnJlbnQgLSAxXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFwibmV4dFwiOlxuICAgICAgICBuZXdQYWdlID0gY3VycmVudCArIDFcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJsYXN0XCI6XG4gICAgICAgIGlmICh0b3RhbCAmJiBwYWdlU2l6ZSkge1xuICAgICAgICAgIG5ld1BhZ2UgPSBNYXRoLm1heChNYXRoLmNlaWwodG90YWwgLyBwYWdlU2l6ZSksIDEpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgfVxuXG4gICAgaWYgKG5ld1BhZ2UgJiYgcGFnZVNpemUpIHtcbiAgICAgIGlmIChjdXJyZW50UHJvcCA9PT0gbnVsbCkge1xuICAgICAgICBzZXRDdXJyZW50KG5ld1BhZ2UpXG4gICAgICB9XG4gICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2UobmV3UGFnZSwgcGFnZVNpemUpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRKdW1wID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcnNldmFsdWUgPSBwYXJzZUludChpbnB1dFZhbHVlLCAxMClcbiAgICBpZiAoaXNOYU4ocGFyc2V2YWx1ZSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBsZXQgdmFsdWUgPSBNYXRoLm1heChwYXJzZXZhbHVlLCAxKVxuICAgIGlmICh0b3RhbCAmJiBwYWdlU2l6ZSkge1xuICAgICAgdmFsdWUgPSBNYXRoLm1pbih2YWx1ZSwgTWF0aC5tYXgoTWF0aC5jZWlsKHRvdGFsIC8gcGFnZVNpemUpLCAxKSlcbiAgICB9XG4gICAgaWYgKGN1cnJlbnRQcm9wID09PSBudWxsKSB7XG4gICAgICBzZXRDdXJyZW50KHZhbHVlKVxuICAgIH1cbiAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgIG9uQ2hhbmdlKHZhbHVlLCBwYWdlU2l6ZSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc1NldH0gZGF0YS1jdXJyZW50PXtjdXJyZW50fSB7Li4ub3RoZXJQcm9wc30+XG4gICAgICB7c2hvd0J1dHRvbkp1bXBlciAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IFwiOHB4XCIgfX1cbiAgICAgICAgICBsZWZ0SWNvbj1cImFycm93LWxlZnQtZmlyc3RcIlxuICAgICAgICAgIHNpemU9e3NpemV9XG4gICAgICAgICAgdGhlbWU9e3RoZW1lfVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIGlmICghcHJldkRpc2FibGVkKSBoYW5kbGVKdW1wKFwiZmlyc3RcIilcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxCdXR0b25cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICBsZWZ0SWNvbj1cImFycm93LWxlZnRcIlxuICAgICAgICBzaXplPXtzaXplfVxuICAgICAgICB0aGVtZT17dGhlbWV9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICBpZiAoIXByZXZEaXNhYmxlZCkgaGFuZGxlSnVtcChcInByZXZcIilcbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2Ake3ByZWZpeH0tdGV4dGB9PlxuICAgICAgICB7Y3VycmVudH0gLyB7cGFnZU51bWJlcn1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICBsZWZ0SWNvbj1cImFycm93LXJpZ2h0XCJcbiAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgdGhlbWU9e3RoZW1lfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgaWYgKCFuZXh0RGlzYWJsZWQpIGhhbmRsZUp1bXAoXCJuZXh0XCIpXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgICAge3Nob3dCdXR0b25KdW1wZXIgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IFwiOHB4XCIgfX1cbiAgICAgICAgICBsZWZ0SWNvbj1cImFycm93LXJpZ2h0LWxhc3RcIlxuICAgICAgICAgIHNpemU9e3NpemV9XG4gICAgICAgICAgdGhlbWU9e3RoZW1lfVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIGlmICghbmV4dERpc2FibGVkKSBoYW5kbGVKdW1wKFwibGFzdFwiKVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAge3Nob3dJbnB1dEp1bXBlciAmJiBbXG4gICAgICAgIDxJbnB1dFxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICBrZXk9ezB9XG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWlucHV0YH1cbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIumhteeggVwiXG4gICAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgICB0aGVtZT17dGhlbWV9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT5cbiAgICAgICAgICAgIHNldElucHV0VmFsdWUoZS50YXJnZXQudmFsdWUpXG4gICAgICAgICAgfVxuICAgICAgICAgIG9uUHJlc3NFbnRlcj17aGFuZGxlSW5wdXRKdW1wfVxuICAgICAgICAvPixcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICBrZXk9ezF9XG4gICAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgICB0aGVtZT17dGhlbWV9XG4gICAgICAgICAgb25DbGljaz17aGFuZGxlSW5wdXRKdW1wfVxuICAgICAgICA+XG4gICAgICAgICAg6Lez6L2sXG4gICAgICAgIDwvQnV0dG9uPixcbiAgICAgIF19XG4gICAgPC9kaXY+XG4gIClcbn1cblxuUGFnaW5hdGlvbi5kaXNwbGF5TmFtZSA9IFwiUGFnaW5hdGlvblwiXG5cblBhZ2luYXRpb24ucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICog5a+56b2Q5pa55byPXG4gICAqL1xuICBhbGlnbjogUHJvcFR5cGVzLm9uZU9mKFtcImxlZnRcIiwgXCJjZW50ZXJcIiwgXCJyaWdodFwiXSksXG4gIC8qKlxuICAgKiDpmYTliqDnsbvlkI1cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIOW9k+WJjemhteaVsFxuICAgKi9cbiAgY3VycmVudDogUHJvcFR5cGVzLm51bWJlcixcbiAgLyoqXG4gICAqIOm7mOiupOeahOW9k+WJjemhteaVsFxuICAgKi9cbiAgZGVmYXVsdEN1cnJlbnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKhcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIOWPquacieS4gOmhteaXtiByZXR1cm4gbnVsbFxuICAgKi9cbiAgaGlkZVdoZW5TaW5nbGVQYWdlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIOW9k+WJjemhteWPmOWMluaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiDorr7nva7mr4/pobXmnaHmlbDvvIzpu5jorqQgMTAg5p2hXG4gICAqL1xuICBwYWdlU2l6ZTogUHJvcFR5cGVzLm51bWJlcixcbiAgLyoqXG4gICAqIOaYr+WQpuaYvuekuummlumhteWwvumhtei3s+i9rOaMiemSrlxuICAgKi9cbiAgc2hvd0J1dHRvbkp1bXBlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiDmmK/lkKbmmL7npLrot7PovazovpPlhaXmoYZcbiAgICovXG4gIHNob3dJbnB1dEp1bXBlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiDorr7nva7lsLrlr7hcbiAgICovXG4gIHNpemU6IFByb3BUeXBlcy5vbmVPZihbXCJtaW5pXCIsIFwic21hbGxcIiwgXCJtZWRpdW1cIiwgXCJsYXJnZVwiXSksXG4gIC8qKlxuICAgKiDorr7nva7kuLvpophcbiAgICovXG4gIHRoZW1lOiBQcm9wVHlwZXMub25lT2YoW251bGwsIFwibGlnaHRcIl0pLFxuICAvKipcbiAgICog5pWw5o2u5oC75pWwXG4gICAqL1xuICB0b3RhbDogUHJvcFR5cGVzLm51bWJlcixcbn1cblxuUGFnaW5hdGlvbi5kZWZhdWx0UHJvcHMgPSB7XG4gIGFsaWduOiB1bmRlZmluZWQsXG4gIGNsYXNzTmFtZTogdW5kZWZpbmVkLFxuICBjdXJyZW50OiBudWxsLFxuICBkZWZhdWx0Q3VycmVudDogMSxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBoaWRlV2hlblNpbmdsZVBhZ2U6IHRydWUsXG4gIG9uQ2hhbmdlOiBub29wLFxuICBwYWdlU2l6ZTogMTAsXG4gIHNob3dCdXR0b25KdW1wZXI6IGZhbHNlLFxuICBzaG93SW5wdXRKdW1wZXI6IGZhbHNlLFxuICBzaXplOiBcInNtYWxsXCIsXG4gIHRoZW1lOiBudWxsLFxuICB0b3RhbDogMCxcbn1cblxuZXhwb3J0IGRlZmF1bHQgUGFnaW5hdGlvblxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsVUFBVSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNuRCxPQUFPQyxTQUFTLE1BQU0sWUFBWTtBQUNsQyxPQUFPQyxVQUFVLE1BQU0sWUFBWTtBQUNuQyxPQUFPQyxPQUFPLE1BQU0sa0JBQWtCO0FBQ3RDLFNBQVNDLGFBQWEsRUFBRUMsZUFBZSxRQUFRLG9CQUFvQjtBQUNuRSxPQUFPQyxNQUFNLE1BQU0sV0FBVztBQUM5QixPQUFPQyxLQUFLLE1BQU0sVUFBVTtBQUM1QixPQUFPLFNBQVM7QUFFaEIsSUFBTUMsSUFBSSxHQUFHLFNBQVBBLElBQUlBLENBQUEsRUFBUyxDQUFDLENBQUM7QUFDckIsSUFBTUMsTUFBTSxHQUFHLGlCQUFpQjtBQTZEaEMsSUFBTUMsVUFBc0MsR0FBRyxTQUF6Q0EsVUFBc0NBLENBQUFDLElBQUEsRUFlcEI7RUFBQSxJQWR0QkMsS0FBSyxHQUFBRCxJQUFBLENBQUxDLEtBQUs7SUFDTEMsU0FBUyxHQUFBRixJQUFB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