UNPKG

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>

214 lines (181 loc) 23.9 kB
"use strict"; function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } var React = _interopRequireWildcard(require("react")); var _reactTestRenderer = _interopRequireDefault(require("react-test-renderer")); var _testUtils = require("react-dom/test-utils"); var _enzyme = require("enzyme"); var _ = _interopRequireDefault(require("..")); function _interopRequireDefault(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 _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(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 = {}; 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; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var TimePickerTest = function (_React$Component) { _inherits(TimePickerTest, _React$Component); var _super = _createSuper(TimePickerTest); function TimePickerTest() { var _this; _classCallCheck(this, TimePickerTest); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _super.call.apply(_super, [this].concat(args)); _this.state = { value: "09:00" }; return _this; } _createClass(TimePickerTest, [{ key: "render", value: function render() { var _this2 = this; var value = this.state.value; return React.createElement("div", null, React.createElement(_["default"], { closeOnSelect: true, value: value, onChange: function onChange(val) { return _this2.setState({ value: val }); }, minTime: "08:40", maxTime: "09:20", ref: function ref(node) { if (node) { _this2.picker = node; } return null; } })); } }]); return TimePickerTest; }(React.Component); function timeout(ms) { return function (done) { setTimeout(done, ms); }; } describe("TimePicker", function () { beforeAll(function () { jest.useFakeTimers(); }); afterAll(function () { jest.useRealTimers(); }); it("是否正确渲染", function () { var wrapper = _reactTestRenderer["default"].create(React.createElement(_["default"], null)); expect(wrapper).toMatchSnapshot(); }); it("各种情况快照核对", function () { var wrapper0 = _reactTestRenderer["default"].create(React.createElement(_["default"], { size: "mini", theme: "light", onlyHour: true, disabled: true })); expect(wrapper0).toMatchSnapshot(); }); it("输入事件", function () { var wrapper = (0, _enzyme.mount)(React.createElement(_["default"], null)); var input = wrapper.find("input"); input.simulate("focus"); expect(wrapper.find("Popover").props().visible).toEqual(true); input.simulate("change", { target: { value: " " } }); input.simulate("change", { target: { value: "16:07" } }); expect(wrapper.find("Input").props().value).toEqual("16:07"); input.simulate("keydown", { keyCode: 13 }); expect(wrapper.find("Popover").props().visible).toEqual(false); }); it("点击事件", function () { var wrapper = (0, _enzyme.mount)(React.createElement(TimePickerTest, null)); expect(wrapper.find("Popover").props().visible).toEqual(false); wrapper.find("input").simulate("focus"); expect(wrapper.find("Popover").props().visible).toEqual(true); (0, _testUtils.act)(function () { wrapper.find(".adui-time-item").at(0).simulate("click"); jest.advanceTimersByTime(50); wrapper.update(); expect(wrapper.find("Input").props().value).toEqual("08:40"); wrapper.find(".adui-time-item").at(42).simulate("click"); wrapper.update(); jest.advanceTimersByTime(50); expect(wrapper.find("Input").props().value).toEqual("08:40"); wrapper.find("input").simulate("change", { target: { value: "07:40" } }); wrapper.find("input").simulate("change", { target: { value: "08:4" } }); wrapper.update(); expect(wrapper.find("Input").props().value).toEqual("08:40"); }); }); it("内部驱动", function () { var wrapper = (0, _enzyme.mount)(React.createElement(_["default"], { defaultValue: "09:20" })); var input = wrapper.find("input"); input.simulate("focus"); expect(wrapper.find("Popover").props().visible).toEqual(true); wrapper.find(".adui-time-item").at(0).simulate("click"); expect(wrapper.find("Input").props().value).toEqual("00:20"); }); it("外部控制", function () { var wrapper = (0, _enzyme.mount)(React.createElement(_["default"], { value: "09:00", onlyHour: true })); var input = wrapper.find("input"); input.simulate("focus"); expect(wrapper.find("Popover").props().visible).toEqual(true); wrapper.find(".adui-time-item").at(0).simulate("click"); expect(wrapper.find("Input").props().value).toEqual("09:00"); }); it("测试禁用", function () { var wrapper = (0, _enzyme.mount)(React.createElement(_["default"], { disabled: true })); var input = wrapper.find("input"); input.simulate("click"); expect(wrapper.find("Popover").props().visible).toEqual(false); }); it("测试最大时间和最小时间", function () { var wrapper = (0, _enzyme.mount)(React.createElement(_["default"], { minTime: "09:00", maxTime: "09:20", defaultValue: "09:10" })); var input = wrapper.find("input"); input.simulate("change", { target: { value: "09:30" } }); input.simulate("focus"); expect(wrapper.find("Popover").props().visible).toEqual(true); }); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUaW1lUGlja2VyVGVzdCIsInN0YXRlIiwidmFsdWUiLCJ2YWwiLCJzZXRTdGF0ZSIsIm5vZGUiLCJwaWNrZXIiLCJSZWFjdCIsIkNvbXBvbmVudCIsInRpbWVvdXQiLCJtcyIsImRvbmUiLCJzZXRUaW1lb3V0IiwiZGVzY3JpYmUiLCJiZWZvcmVBbGwiLCJqZXN0IiwidXNlRmFrZVRpbWVycyIsImFmdGVyQWxsIiwidXNlUmVhbFRpbWVycyIsIml0Iiwid3JhcHBlciIsIlRlc3RSZW5kZXJlciIsImNyZWF0ZSIsImV4cGVjdCIsInRvTWF0Y2hTbmFwc2hvdCIsIndyYXBwZXIwIiwibW91bnQiLCJpbnB1dCIsImZpbmQiLCJzaW11bGF0ZSIsInByb3BzIiwidmlzaWJsZSIsInRvRXF1YWwiLCJ0YXJnZXQiLCJrZXlDb2RlIiwiYWN0IiwiYXQiLCJhZHZhbmNlVGltZXJzQnlUaW1lIiwidXBkYXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vY29tcG9uZW50cy90aW1lLXBpY2tlci9fX3Rlc3RzX18vaW5kZXgudGVzdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLW5vY2hlY2tcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgVGVzdFJlbmRlcmVyIGZyb20gXCJyZWFjdC10ZXN0LXJlbmRlcmVyXCJcbmltcG9ydCB7IGFjdCB9IGZyb20gXCJyZWFjdC1kb20vdGVzdC11dGlsc1wiXG5pbXBvcnQgeyBtb3VudCB9IGZyb20gXCJlbnp5bWVcIlxuaW1wb3J0IGFzeW5jIGZyb20gXCJhc3luY1wiXG5pbXBvcnQgVGltZVBpY2tlciBmcm9tIFwiLi5cIlxuXG5jbGFzcyBUaW1lUGlja2VyVGVzdCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRlID0ge1xuICAgIHZhbHVlOiBcIjA5OjAwXCIsXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gdGhpcy5zdGF0ZVxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2PlxuICAgICAgICA8VGltZVBpY2tlclxuICAgICAgICAgIGNsb3NlT25TZWxlY3RcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9eyh2YWwpID0+IHRoaXMuc2V0U3RhdGUoeyB2YWx1ZTogdmFsIH0pfVxuICAgICAgICAgIG1pblRpbWU9XCIwODo0MFwiXG4gICAgICAgICAgbWF4VGltZT1cIjA5OjIwXCJcbiAgICAgICAgICByZWY9eyhub2RlKSA9PiB7XG4gICAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgICB0aGlzLnBpY2tlciA9IG5vZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxufVxuXG5mdW5jdGlvbiB0aW1lb3V0KG1zOiBudW1iZXIpIHtcbiAgcmV0dXJuIChkb25lOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgc2V0VGltZW91dChkb25lLCBtcylcbiAgfVxufVxuXG5kZXNjcmliZShcIlRpbWVQaWNrZXJcIiwgKCkgPT4ge1xuICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgIGplc3QudXNlRmFrZVRpbWVycygpXG4gIH0pXG5cbiAgYWZ0ZXJBbGwoKCkgPT4ge1xuICAgIGplc3QudXNlUmVhbFRpbWVycygpXG4gIH0pXG5cbiAgaXQoXCLmmK/lkKbmraPnoa7muLLmn5NcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBUZXN0UmVuZGVyZXIuY3JlYXRlKDxUaW1lUGlja2VyIC8+KVxuICAgIGV4cGVjdCh3cmFwcGVyKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxuXG4gIGl0KFwi5ZCE56eN5oOF5Ya15b+r54Wn5qC45a+5XCIsICgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyMCA9IFRlc3RSZW5kZXJlci5jcmVhdGUoXG4gICAgICA8VGltZVBpY2tlciBzaXplPVwibWluaVwiIHRoZW1lPVwibGlnaHRcIiBvbmx5SG91ciBkaXNhYmxlZCAvPlxuICAgIClcbiAgICBleHBlY3Qod3JhcHBlcjApLnRvTWF0Y2hTbmFwc2hvdCgpXG4gIH0pXG5cbiAgaXQoXCLovpPlhaXkuovku7ZcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBtb3VudCg8VGltZVBpY2tlciAvPilcbiAgICBjb25zdCBpbnB1dCA9IHdyYXBwZXIuZmluZChcImlucHV0XCIpXG4gICAgaW5wdXQuc2ltdWxhdGUoXCJmb2N1c1wiKVxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJQb3BvdmVyXCIpLnByb3BzKCkudmlzaWJsZSkudG9FcXVhbCh0cnVlKVxuICAgIGlucHV0LnNpbXVsYXRlKFwiY2hhbmdlXCIsIHsgdGFyZ2V0OiB7IHZhbHVlOiBcIiBcIiB9IH0pXG4gICAgaW5wdXQuc2ltdWxhdGUoXCJjaGFuZ2VcIiwgeyB0YXJnZXQ6IHsgdmFsdWU6IFwiMTY6MDdcIiB9IH0pXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIklucHV0XCIpLnByb3BzKCkudmFsdWUpLnRvRXF1YWwoXCIxNjowN1wiKVxuICAgIGlucHV0LnNpbXVsYXRlKFwia2V5ZG93blwiLCB7IGtleUNvZGU6IDEzIH0pXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIlBvcG92ZXJcIikucHJvcHMoKS52aXNpYmxlKS50b0VxdWFsKGZhbHNlKVxuICB9KVxuXG4gIGl0KFwi54K55Ye75LqL5Lu2XCIsICgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyID0gbW91bnQoPFRpbWVQaWNrZXJUZXN0IC8+KVxuXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIlBvcG92ZXJcIikucHJvcHMoKS52aXNpYmxlKS50b0VxdWFsKGZhbHNlKVxuXG4gICAgd3JhcHBlci5maW5kKFwiaW5wdXRcIikuc2ltdWxhdGUoXCJmb2N1c1wiKVxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJQb3BvdmVyXCIpLnByb3BzKCkudmlzaWJsZSkudG9FcXVhbCh0cnVlKVxuXG4gICAgYWN0KCgpID0+IHtcbiAgICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLXRpbWUtaXRlbVwiKS5hdCgwKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgICBqZXN0LmFkdmFuY2VUaW1lcnNCeVRpbWUoNTApXG4gICAgICB3cmFwcGVyLnVwZGF0ZSgpXG4gICAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiSW5wdXRcIikucHJvcHMoKS52YWx1ZSkudG9FcXVhbChcIjA4OjQwXCIpXG5cbiAgICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLXRpbWUtaXRlbVwiKS5hdCg0Mikuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgICAgd3JhcHBlci51cGRhdGUoKVxuICAgICAgamVzdC5hZHZhbmNlVGltZXJzQnlUaW1lKDUwKVxuICAgICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIklucHV0XCIpLnByb3BzKCkudmFsdWUpLnRvRXF1YWwoXCIwODo0MFwiKVxuXG4gICAgICB3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKS5zaW11bGF0ZShcImNoYW5nZVwiLCB7IHRhcmdldDogeyB2YWx1ZTogXCIwNzo0MFwiIH0gfSlcbiAgICAgIHdyYXBwZXIuZmluZChcImlucHV0XCIpLnNpbXVsYXRlKFwiY2hhbmdlXCIsIHsgdGFyZ2V0OiB7IHZhbHVlOiBcIjA4OjRcIiB9IH0pXG4gICAgICB3cmFwcGVyLnVwZGF0ZSgpXG4gICAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiSW5wdXRcIikucHJvcHMoKS52YWx1ZSkudG9FcXVhbChcIjA4OjQwXCIpXG4gICAgfSlcblxuICAgIC8vIGFjdCgoKSA9PiB7XG4gICAgLy8gICB3cmFwcGVyXG4gICAgLy8gICAgIC5maW5kKFwiLmFkdWktdGltZS1pdGVtXCIpXG4gICAgLy8gICAgIC5hdCgxKVxuICAgIC8vICAgICAuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIC8vICAgd3JhcHBlci51cGRhdGUoKVxuICAgIC8vICAgamVzdC5hZHZhbmNlVGltZXJzQnlUaW1lKDM1MClcbiAgICAvLyAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJJbnB1dFwiKS5wcm9wcygpLnZhbHVlKS50b0VxdWFsKFwiMDk6MjBcIilcbiAgICAvLyAgIGRvbmUoKVxuICAgIC8vIH0pXG5cbiAgICAvLyBhY3QoKCkgPT4ge1xuICAgIC8vICAgd3JhcHBlclxuICAgIC8vICAgICAuZmluZChcIi5hZHVpLXRpbWUtaXRlbVwiKVxuICAgIC8vICAgICAuYXQoMSlcbiAgICAvLyAgICAgLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICAvLyAgIHdyYXBwZXIudXBkYXRlKClcbiAgICAvLyAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJJbnB1dFwiKS5wcm9wcygpLnZhbHVlKS50b0VxdWFsKFwiMDk6MjBcIilcbiAgICAvLyB9KVxuXG4gICAgLy8gYWN0KCgpID0+IHtcbiAgICAvLyAgIHdyYXBwZXJcbiAgICAvLyAgICAgLmZpbmQoXCIuYWR1aS10aW1lLWl0ZW1cIilcbiAgICAvLyAgICAgLmF0KDApXG4gICAgLy8gICAgIC5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgLy8gICB3cmFwcGVyLnVwZGF0ZSgpXG4gICAgLy8gICBleHBlY3Qod3JhcHBlci5maW5kKFwiSW5wdXRcIikucHJvcHMoKS52YWx1ZSkudG9FcXVhbChcIjA4OjQwXCIpXG4gICAgLy8gfSlcbiAgfSlcblxuICBpdChcIuWGhemDqOmpseWKqFwiLCAoKSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlciA9IG1vdW50KDxUaW1lUGlja2VyIGRlZmF1bHRWYWx1ZT1cIjA5OjIwXCIgLz4pXG4gICAgY29uc3QgaW5wdXQgPSB3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKVxuICAgIGlucHV0LnNpbXVsYXRlKFwiZm9jdXNcIilcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiUG9wb3ZlclwiKS5wcm9wcygpLnZpc2libGUpLnRvRXF1YWwodHJ1ZSlcbiAgICB3cmFwcGVyLmZpbmQoXCIuYWR1aS10aW1lLWl0ZW1cIikuYXQoMCkuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJJbnB1dFwiKS5wcm9wcygpLnZhbHVlKS50b0VxdWFsKFwiMDA6MjBcIilcbiAgfSlcblxuICBpdChcIuWklumDqOaOp+WItlwiLCAoKSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlciA9IG1vdW50KDxUaW1lUGlja2VyIHZhbHVlPVwiMDk6MDBcIiBvbmx5SG91ciAvPilcbiAgICBjb25zdCBpbnB1dCA9IHdyYXBwZXIuZmluZChcImlucHV0XCIpXG4gICAgaW5wdXQuc2ltdWxhdGUoXCJmb2N1c1wiKVxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJQb3BvdmVyXCIpLnByb3BzKCkudmlzaWJsZSkudG9FcXVhbCh0cnVlKVxuICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLXRpbWUtaXRlbVwiKS5hdCgwKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIklucHV0XCIpLnByb3BzKCkudmFsdWUpLnRvRXF1YWwoXCIwOTowMFwiKVxuICB9KVxuXG4gIGl0KFwi5rWL6K+V56aB55SoXCIsICgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyID0gbW91bnQoPFRpbWVQaWNrZXIgZGlzYWJsZWQgLz4pXG4gICAgY29uc3QgaW5wdXQgPSB3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKVxuICAgIGlucHV0LnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiUG9wb3ZlclwiKS5wcm9wcygpLnZpc2libGUpLnRvRXF1YWwoZmFsc2UpXG4gIH0pXG5cbiAgaXQoXCLmtYvor5XmnIDlpKfml7bpl7TlkozmnIDlsI/ml7bpl7RcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBtb3VudChcbiAgICAgIDxUaW1lUGlja2VyIG1pblRpbWU9XCIwOTowMFwiIG1heFRpbWU9XCIwOToyMFwiIGRlZmF1bHRWYWx1ZT1cIjA5OjEwXCIgLz5cbiAgICApXG4gICAgY29uc3QgaW5wdXQgPSB3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKVxuICAgIGlucHV0LnNpbXVsYXRlKFwiY2hhbmdlXCIsIHsgdGFyZ2V0OiB7IHZhbHVlOiBcIjA5OjMwXCIgfSB9KVxuICAgIGlucHV0LnNpbXVsYXRlKFwiZm9jdXNcIilcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiUG9wb3ZlclwiKS5wcm9wcygpLnZpc2libGUpLnRvRXF1YWwodHJ1ZSlcbiAgfSlcbn0pXG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVNQSxjOzs7Ozs7Ozs7Ozs7Ozs7VUFDSkMsSyxHQUFRO01BQ05DLEtBQUssRUFBRTtJQURELEM7Ozs7OztXQUlSLGtCQUFTO01BQUE7O01BQ1AsSUFBUUEsS0FBUixHQUFrQixLQUFLRCxLQUF2QixDQUFRQyxLQUFSO01BQ0EsT0FDRSxpQ0FDRSxvQkFBQyxZQUFEO1FBQ0UsYUFBYSxNQURmO1FBRUUsS0FBSyxFQUFFQSxLQUZUO1FBR0UsUUFBUSxFQUFFLGtCQUFDQyxHQUFEO1VBQUEsT0FBUyxNQUFJLENBQUNDLFFBQUwsQ0FBYztZQUFFRixLQUFLLEVBQUVDO1VBQVQsQ0FBZCxDQUFUO1FBQUEsQ0FIWjtRQUlFLE9BQU8sRUFBQyxPQUpWO1FBS0UsT0FBTyxFQUFDLE9BTFY7UUFNRSxHQUFHLEVBQUUsYUFBQ0UsSUFBRCxFQUFVO1VBQ2IsSUFBSUEsSUFBSixFQUFVO1lBQ1IsTUFBSSxDQUFDQyxNQUFMLEdBQWNELElBQWQ7VUFDRDs7VUFDRCxPQUFPLElBQVA7UUFDRDtNQVhILEVBREYsQ0FERjtJQWlCRDs7OztFQXhCMEJFLEtBQUssQ0FBQ0MsUzs7QUEyQm5DLFNBQVNDLE9BQVQsQ0FBaUJDLEVBQWpCLEVBQTZCO0VBQzNCLE9BQU8sVUFBQ0MsSUFBRCxFQUFzQjtJQUMzQkMsVUFBVSxDQUFDRCxJQUFELEVBQU9ELEVBQVAsQ0FBVjtFQUNELENBRkQ7QUFHRDs7QUFFREcsUUFBUSxDQUFDLFlBQUQsRUFBZSxZQUFN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