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>

221 lines 31.5 kB
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); } 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 _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), 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 _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } import React, { Component } from "react"; import { mount } from "enzyme"; import TestRenderer from "react-test-renderer"; import DatePicker from ".."; import { convertDateToString } from "../core"; import { act } from "react-dom/test-utils"; var DatePickerMounter = function (_Component) { function DatePickerMounter() { var _this; _classCallCheck(this, DatePickerMounter); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _callSuper(this, DatePickerMounter, [].concat(args)); _this.state = { component: null, value: new Date(), visible: true }; return _this; } _inherits(DatePickerMounter, _Component); return _createClass(DatePickerMounter, [{ key: "render", value: function render() { var _this2 = this; var _this$state = this.state, value = _this$state.value, visible = _this$state.visible; return React.createElement(DatePicker, _extends({ shortcuts: [{ label: "祖国生日", value: new Date("2020-10-01") }], ref: function ref(component) { if (!_this2.state.component) { _this2.setState({ component: component }); } }, closeOnSelect: true, value: value, visible: visible, onChange: function onChange(val) { return _this2.setState({ value: val }); }, onVisibleChange: function onVisibleChange(bool) { return _this2.setState({ visible: bool }); } }, this.props)); } }]); }(Component); describe("DatePicker", function () { beforeAll(function () { jest.useFakeTimers(); }); afterAll(function () { jest.useRealTimers(); }); it("是否正确渲染", function () { var wrapper = TestRenderer.create(React.createElement(DatePicker, null)); expect(wrapper).toMatchSnapshot(); }); it("内部驱动", function () { var val = new Date(); var wrapper = mount(React.createElement(DatePicker, { defaultValue: val, defaultVisible: false, closeOnSelect: true })); expect(wrapper.find("input").at(0).props().value).toBe(convertDateToString(val)); wrapper.find("input").simulate("focus"); expect(wrapper.find("Popover").at(0).props().visible).toBe(true); wrapper.find("input").simulate("change", { target: { value: "" } }); expect(wrapper.find("input").props().value).toBe(""); wrapper.find("input").simulate("change", { target: { value: "2020-02-22" } }); expect(wrapper.find("input").props().value).toBe("2020-02-22"); act(function () { wrapper.find("input").simulate("keydown", { key: "enter", keyCode: 13 }); jest.runAllTimers(); wrapper.update(); expect(wrapper.find("Popover").at(0).props().visible).toBe(false); }); act(function () { wrapper.find(".adui-date-day").at(14).simulate("click"); var expectedVal = convertDateToString(new Date(wrapper.find(".adui-date-day").at(14).props()["aria-label"])); jest.advanceTimersByTime(350); wrapper.update(); expect(wrapper.find("input").at(0).props().value).toBe(expectedVal); expect(wrapper.find("Popover").at(0).props().visible).toBe(false); }); }); it("外部控制", function () { var val = new Date(); var wrapper = mount(React.createElement(DatePicker, { value: new Date(), visible: true, closeOnSelect: true })); expect(wrapper.find("input").at(0).props().value).toBe(convertDateToString(val)); expect(wrapper.find("Popover").at(0).props().visible).toBe(true); act(function () { wrapper.find(".adui-date-day").at(14).simulate("click"); jest.advanceTimersByTime(350); wrapper.update(); expect(wrapper.find("input").at(0).props().value).toBe(convertDateToString(val)); }); act(function () { wrapper.find(".adui-date-day").at(15).simulate("click"); jest.advanceTimersByTime(350); wrapper.update(); expect(wrapper.find("input").at(0).props().value).toBe(convertDateToString(val)); expect(wrapper.find("Popover").at(0).props().visible).toBe(true); }); var mounter = mount(React.createElement(DatePickerMounter, null)); var today = convertDateToString(new Date()); mounter.find("input").simulate("change", { target: { value: "2020-02-22" } }); expect(convertDateToString(mounter.state().value)).toBe("2020-02-22"); mounter.find("input").simulate("change", { target: { value: "2020-02-31" } }); expect(convertDateToString(mounter.state().value)).toBe("2020-02-22"); mounter.find("input").simulate("change", { target: { value: "" } }); expect(convertDateToString(mounter.state().value)).toBe(""); expect(mounter.find("Popover").at(0).props().visible).toBe(true); act(function () { mounter.find(".adui-date-day").at(15).simulate("click"); jest.runAllTimers(); mounter.update(); expect(mounter.find("Popover").at(0).props().visible).toBe(false); }); }); it("DayPicker 操作", function () { var today = new Date(); var wrapper = mount(React.createElement(DatePickerMounter, null)); wrapper.find("button").at(0).simulate("click"); act(function () { wrapper.find(".adui-date-day").at(15).simulate("click"); jest.runAllTimers(); wrapper.update(); if (today.getFullYear() > wrapper.state().value.getFullYear()) { expect(today.getMonth() - wrapper.state().value.getMonth()).toBe(-11); } else { expect(today.getMonth() - wrapper.state().value.getMonth()).toBe(1); } }); act(function () { wrapper.find(".adui-date-shortcut").at(0).simulate("click"); jest.runAllTimers(); wrapper.update(); expect(convertDateToString(wrapper.state().value)).toBe("2020-10-01"); }); var wrapperForCoverage0 = mount(React.createElement(DatePickerMounter, { disabled: true })); wrapperForCoverage0.state().component.handleVisibleChange(false); jest.runAllTimers(); }); it("DayPicker 年月切换", function () { var wrapper = mount(React.createElement(DatePickerMounter, null)); act(function () { wrapper.find("select").at(0).simulate("change", { target: { value: "2018" } }); wrapper.find("select").at(1).simulate("change", { target: { value: "1" } }); jest.runAllTimers(); wrapper.update(); wrapper.find(".adui-date-day").at(14).simulate("click"); jest.runAllTimers(); wrapper.update(); }); }); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkNvbXBvbmVudCIsIm1vdW50IiwiVGVzdFJlbmRlcmVyIiwiRGF0ZVBpY2tlciIsImNvbnZlcnREYXRlVG9TdHJpbmciLCJhY3QiLCJEYXRlUGlja2VyTW91bnRlciIsIl9Db21wb25lbnQiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjayIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiX2NhbGxTdXBlciIsImNvbmNhdCIsInN0YXRlIiwiY29tcG9uZW50IiwidmFsdWUiLCJEYXRlIiwidmlzaWJsZSIsIl9pbmhlcml0cyIsIl9jcmVhdGVDbGFzcyIsImtleSIsInJlbmRlciIsIl90aGlzMiIsIl90aGlzJHN0YXRlIiwiY3JlYXRlRWxlbWVudCIsIl9leHRlbmRzIiwic2hvcnRjdXRzIiwibGFiZWwiLCJyZWYiLCJzZXRTdGF0ZSIsImNsb3NlT25TZWxlY3QiLCJvbkNoYW5nZSIsInZhbCIsIm9uVmlzaWJsZUNoYW5nZSIsImJvb2wiLCJwcm9wcyIsImRlc2NyaWJlIiwiYmVmb3JlQWxsIiwiamVzdCIsInVzZUZha2VUaW1lcnMiLCJhZnRlckFsbCIsInVzZVJlYWxUaW1lcnMiLCJpdCIsIndyYXBwZXIiLCJjcmVhdGUiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiLCJkZWZhdWx0VmFsdWUiLCJkZWZhdWx0VmlzaWJsZSIsImZpbmQiLCJhdCIsInRvQmUiLCJzaW11bGF0ZSIsInRhcmdldCIsImtleUNvZGUiLCJydW5BbGxUaW1lcnMiLCJ1cGRhdGUiLCJleHBlY3RlZFZhbCIsImFkdmFuY2VUaW1lcnNCeVRpbWUiLCJtb3VudGVyIiwidG9kYXkiLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwid3JhcHBlckZvckNvdmVyYWdlMCIsImRpc2FibGVkIiwiaGFuZGxlVmlzaWJsZUNoYW5nZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvZGF0ZS1waWNrZXIvX190ZXN0c19fL0RhdGVQaWNrZXIudGVzdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cbi8vIEB0cy1ub2NoZWNrXG5pbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IG1vdW50IH0gZnJvbSBcImVuenltZVwiXG5pbXBvcnQgVGVzdFJlbmRlcmVyIGZyb20gXCJyZWFjdC10ZXN0LXJlbmRlcmVyXCJcbmltcG9ydCBEYXRlUGlja2VyIGZyb20gXCIuLlwiXG5pbXBvcnQgeyBjb252ZXJ0RGF0ZVRvU3RyaW5nIH0gZnJvbSBcIi4uL2NvcmVcIlxuaW1wb3J0IHsgYWN0IH0gZnJvbSBcInJlYWN0LWRvbS90ZXN0LXV0aWxzXCJcblxuY2xhc3MgRGF0ZVBpY2tlck1vdW50ZXIgZXh0ZW5kcyBDb21wb25lbnQge1xuICBzdGF0ZSA9IHtcbiAgICBjb21wb25lbnQ6IG51bGwsXG4gICAgdmFsdWU6IG5ldyBEYXRlKCksXG4gICAgdmlzaWJsZTogdHJ1ZSxcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IHZhbHVlLCB2aXNpYmxlIH0gPSB0aGlzLnN0YXRlXG4gICAgcmV0dXJuIChcbiAgICAgIDxEYXRlUGlja2VyXG4gICAgICAgIHNob3J0Y3V0cz17W1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiBcIuelluWbveeUn+aXpVwiLFxuICAgICAgICAgICAgdmFsdWU6IG5ldyBEYXRlKFwiMjAyMC0xMC0wMVwiKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdfVxuICAgICAgICByZWY9eyhjb21wb25lbnQpID0+IHtcbiAgICAgICAgICBpZiAoIXRoaXMuc3RhdGUuY29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgY29tcG9uZW50IH0pXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICBjbG9zZU9uU2VsZWN0XG4gICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgdmlzaWJsZT17dmlzaWJsZX1cbiAgICAgICAgb25DaGFuZ2U9eyh2YWwpID0+IHRoaXMuc2V0U3RhdGUoeyB2YWx1ZTogdmFsIH0pfVxuICAgICAgICBvblZpc2libGVDaGFuZ2U9eyhib29sKSA9PiB0aGlzLnNldFN0YXRlKHsgdmlzaWJsZTogYm9vbCB9KX1cbiAgICAgICAgey4uLnRoaXMucHJvcHN9XG4gICAgICAvPlxuICAgIClcbiAgfVxufVxuXG5kZXNjcmliZShcIkRhdGVQaWNrZXJcIiwgKCkgPT4ge1xuICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgIGplc3QudXNlRmFrZVRpbWVycygpXG4gIH0pXG5cbiAgYWZ0ZXJBbGwoKCkgPT4ge1xuICAgIGplc3QudXNlUmVhbFRpbWVycygpXG4gIH0pXG5cbiAgaXQoXCLmmK/lkKbmraPnoa7muLLmn5NcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBUZXN0UmVuZGVyZXIuY3JlYXRlKDxEYXRlUGlja2VyIC8+KVxuICAgIGV4cGVjdCh3cmFwcGVyKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxuXG4gIGl0KFwi5YaF6YOo6amx5YqoXCIsICgpID0+IHtcbiAgICBjb25zdCB2YWwgPSBuZXcgRGF0ZSgpXG4gICAgY29uc3Qgd3JhcHBlciA9IG1vdW50KFxuICAgICAgPERhdGVQaWNrZXIgZGVmYXVsdFZhbHVlPXt2YWx9IGRlZmF1bHRWaXNpYmxlPXtmYWxzZX0gY2xvc2VPblNlbGVjdCAvPlxuICAgIClcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiaW5wdXRcIikuYXQoMCkucHJvcHMoKS52YWx1ZSkudG9CZShcbiAgICAgIGNvbnZlcnREYXRlVG9TdHJpbmcodmFsKVxuICAgIClcblxuICAgIHdyYXBwZXIuZmluZChcImlucHV0XCIpLnNpbXVsYXRlKFwiZm9jdXNcIilcblxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJQb3BvdmVyXCIpLmF0KDApLnByb3BzKCkudmlzaWJsZSkudG9CZSh0cnVlKVxuXG4gICAgd3JhcHBlci5maW5kKFwiaW5wdXRcIikuc2ltdWxhdGUoXCJjaGFuZ2VcIiwgeyB0YXJnZXQ6IHsgdmFsdWU6IFwiXCIgfSB9KVxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKS5wcm9wcygpLnZhbHVlKS50b0JlKFwiXCIpXG5cbiAgICB3cmFwcGVyXG4gICAgICAuZmluZChcImlucHV0XCIpXG4gICAgICAuc2ltdWxhdGUoXCJjaGFuZ2VcIiwgeyB0YXJnZXQ6IHsgdmFsdWU6IFwiMjAyMC0wMi0yMlwiIH0gfSlcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiaW5wdXRcIikucHJvcHMoKS52YWx1ZSkudG9CZShcIjIwMjAtMDItMjJcIilcblxuICAgIGFjdCgoKSA9PiB7XG4gICAgICB3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKS5zaW11bGF0ZShcImtleWRvd25cIiwgeyBrZXk6IFwiZW50ZXJcIiwga2V5Q29kZTogMTMgfSlcbiAgICAgIGplc3QucnVuQWxsVGltZXJzKClcbiAgICAgIHdyYXBwZXIudXBkYXRlKClcbiAgICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJQb3BvdmVyXCIpLmF0KDApLnByb3BzKCkudmlzaWJsZSkudG9CZShmYWxzZSlcbiAgICB9KVxuXG4gICAgYWN0KCgpID0+IHtcbiAgICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLWRhdGUtZGF5XCIpLmF0KDE0KS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgICBjb25zdCBleHBlY3RlZFZhbCA9IGNvbnZlcnREYXRlVG9TdHJpbmcoXG4gICAgICAgIG5ldyBEYXRlKHdyYXBwZXIuZmluZChcIi5hZHVpLWRhdGUtZGF5XCIpLmF0KDE0KS5wcm9wcygpW1wiYXJpYS1sYWJlbFwiXSlcbiAgICAgIClcbiAgICAgIC8vIOetieW+hSAzNTBtc1xuICAgICAgamVzdC5hZHZhbmNlVGltZXJzQnlUaW1lKDM1MClcbiAgICAgIHdyYXBwZXIudXBkYXRlKClcbiAgICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKS5hdCgwKS5wcm9wcygpLnZhbHVlKS50b0JlKGV4cGVjdGVkVmFsKVxuICAgICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIlBvcG92ZXJcIikuYXQoMCkucHJvcHMoKS52aXNpYmxlKS50b0JlKGZhbHNlKVxuICAgIH0pXG4gIH0pXG5cbiAgaXQoXCLlpJbpg6jmjqfliLZcIiwgKCkgPT4ge1xuICAgIC8qKlxuICAgICAqIOS7peS4i+mDveaYr+mqjOivgeWklumDqOaOp+WItuaXtuWGhemDqOeahOWkseaViFxuICAgICAqL1xuICAgIGNvbnN0IHZhbCA9IG5ldyBEYXRlKClcbiAgICBjb25zdCB3cmFwcGVyID0gbW91bnQoXG4gICAgICA8RGF0ZVBpY2tlciB2YWx1ZT17bmV3IERhdGUoKX0gdmlzaWJsZSBjbG9zZU9uU2VsZWN0IC8+XG4gICAgKVxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKS5hdCgwKS5wcm9wcygpLnZhbHVlKS50b0JlKFxuICAgICAgY29udmVydERhdGVUb1N0cmluZyh2YWwpXG4gICAgKVxuXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIlBvcG92ZXJcIikuYXQoMCkucHJvcHMoKS52aXNpYmxlKS50b0JlKHRydWUpXG5cbiAgICBhY3QoKCkgPT4ge1xuICAgICAgd3JhcHBlci5maW5kKFwiLmFkdWktZGF0ZS1kYXlcIikuYXQoMTQpLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICAgIC8vIOetieW+hSAzNTBtc1xuICAgICAgamVzdC5hZHZhbmNlVGltZXJzQnlUaW1lKDM1MClcbiAgICAgIHdyYXBwZXIudXBkYXRlKClcbiAgICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKS5hdCgwKS5wcm9wcygpLnZhbHVlKS50b0JlKFxuICAgICAgICBjb252ZXJ0RGF0ZVRvU3RyaW5nKHZhbClcbiAgICAgIClcbiAgICB9KVxuXG4gICAgYWN0KCgpID0+IHtcbiAgICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLWRhdGUtZGF5XCIpLmF0KDE1KS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgICAvLyDnrYnlvoUgMzUwbXNcbiAgICAgIGplc3QuYWR2YW5jZVRpbWVyc0J5VGltZSgzNTApXG4gICAgICB3cmFwcGVyLnVwZGF0ZSgpXG4gICAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiaW5wdXRcIikuYXQoMCkucHJvcHMoKS52YWx1ZSkudG9CZShcbiAgICAgICAgY29udmVydERhdGVUb1N0cmluZyh2YWwpXG4gICAgICApXG4gICAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiUG9wb3ZlclwiKS5hdCgwKS5wcm9wcygpLnZpc2libGUpLnRvQmUodHJ1ZSlcbiAgICB9KVxuXG4gICAgLyoqXG4gICAgICog5Lul5LiL5piv6aqM6K+B5aSW6YOo5o6n5Yi25pe2IGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyDnmoTmnInmlYhcbiAgICAgKi9cbiAgICBjb25zdCBtb3VudGVyID0gbW91bnQoPERhdGVQaWNrZXJNb3VudGVyIC8+KVxuICAgIGNvbnN0IHRvZGF5ID0gY29udmVydERhdGVUb1N0cmluZyhuZXcgRGF0ZSgpKVxuICAgIG1vdW50ZXJcbiAgICAgIC5maW5kKFwiaW5wdXRcIilcbiAgICAgIC5zaW11bGF0ZShcImNoYW5nZVwiLCB7IHRhcmdldDogeyB2YWx1ZTogXCIyMDIwLTAyLTIyXCIgfSB9KVxuICAgIGV4cGVjdChjb252ZXJ0RGF0ZVRvU3RyaW5nKG1vdW50ZXIuc3RhdGUoKS52YWx1ZSkpLnRvQmUoXCIyMDIwLTAyLTIyXCIpXG4gICAgbW91bnRlclxuICAgICAgLmZpbmQoXCJpbnB1dFwiKVxuICAgICAgLnNpbXVsYXRlKFwiY2hhbmdlXCIsIHsgdGFyZ2V0OiB7IHZhbHVlOiBcIjIwMjAtMDItMzFcIiB9IH0pXG4gICAgZXhwZWN0KGNvbnZlcnREYXRlVG9TdHJpbmcobW91bnRlci5zdGF0ZSgpLnZhbHVlKSkudG9CZShcIjIwMjAtMDItMjJcIilcbiAgICBtb3VudGVyLmZpbmQoXCJpbnB1dFwiKS5zaW11bGF0ZShcImNoYW5nZVwiLCB7IHRhcmdldDogeyB2YWx1ZTogXCJcIiB9IH0pXG4gICAgZXhwZWN0KGNvbnZlcnREYXRlVG9TdHJpbmcobW91bnRlci5zdGF0ZSgpLnZhbHVlKSkudG9CZShcIlwiKVxuICAgIGV4cGVjdChtb3VudGVyLmZpbmQoXCJQb3BvdmVyXCIpLmF0KDApLnByb3BzKCkudmlzaWJsZSkudG9CZSh0cnVlKVxuICAgIGFjdCgoKSA9PiB7XG4gICAgICBtb3VudGVyLmZpbmQoXCIuYWR1aS1kYXRlLWRheVwiKS5hdCgxNSkuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgICAgamVzdC5ydW5BbGxUaW1lcnMoKVxuICAgICAgbW91bnRlci51cGRhdGUoKVxuICAgICAgZXhwZWN0KG1vdW50ZXIuZmluZChcIlBvcG92ZXJcIikuYXQoMCkucHJvcHMoKS52aXNpYmxlKS50b0JlKGZhbHNlKVxuICAgIH0pXG4gIH0pXG5cbiAgaXQoXCJEYXlQaWNrZXIg5pON5L2cXCIsICgpID0+IHtcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKClcbiAgICBjb25zdCB3cmFwcGVyID0gbW91bnQoPERhdGVQaWNrZXJNb3VudGVyIC8+KVxuICAgIHdyYXBwZXIuZmluZChcImJ1dHRvblwiKS5hdCgwKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgYWN0KCgpID0+IHtcbiAgICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLWRhdGUtZGF5XCIpLmF0KDE1KS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgICBqZXN0LnJ1bkFsbFRpbWVycygpXG4gICAgICB3cmFwcGVyLnVwZGF0ZSgpXG4gICAgICBpZiAodG9kYXkuZ2V0RnVsbFllYXIoKSA+IHdyYXBwZXIuc3RhdGUoKS52YWx1ZS5nZXRGdWxsWWVhcigpKSB7XG4gICAgICAgIGV4cGVjdCh0b2RheS5nZXRNb250aCgpIC0gd3JhcHBlci5zdGF0ZSgpLnZhbHVlLmdldE1vbnRoKCkpLnRvQmUoLTExKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhwZWN0KHRvZGF5LmdldE1vbnRoKCkgLSB3cmFwcGVyLnN0YXRlKCkudmFsdWUuZ2V0TW9udGgoKSkudG9CZSgxKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBhY3QoKCkgPT4ge1xuICAgICAgd3JhcHBlci5maW5kKFwiLmFkdWktZGF0ZS1zaG9ydGN1dFwiKS5hdCgwKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgICBqZXN0LnJ1bkFsbFRpbWVycygpXG4gICAgICB3cmFwcGVyLnVwZGF0ZSgpXG4gICAgICBleHBlY3QoY29udmVydERhdGVUb1N0cmluZyh3cmFwcGVyLnN0YXRlKCkudmFsdWUpKS50b0JlKFwiMjAyMC0xMC0wMVwiKVxuICAgIH0pXG5cbiAgICBjb25zdCB3cmFwcGVyRm9yQ292ZXJhZ2UwID0gbW91bnQoPERhdGVQaWNrZXJNb3VudGVyIGRpc2FibGVkIC8+KVxuICAgIHdyYXBwZXJGb3JDb3ZlcmFnZTAuc3RhdGUoKS5jb21wb25lbnQuaGFuZGxlVmlzaWJsZUNoYW5nZShmYWxzZSlcbiAgICBqZXN0LnJ1bkFsbFRpbWVycygpXG4gIH0pXG5cbiAgaXQoXCJEYXlQaWNrZXIg5bm05pyI5YiH5o2iXCIsICgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyID0gbW91bnQoPERhdGVQaWNrZXJNb3VudGVyIC8+KVxuICAgIGFjdCgoKSA9PiB7XG4gICAgICB3cmFwcGVyXG4gICAgICAgIC5maW5kKFwic2VsZWN0XCIpXG4gICAgICAgIC5hdCgwKVxuICAgICAgICAuc2ltdWxhdGUoXCJjaGFuZ2VcIiwgeyB0YXJnZXQ6IHsgdmFsdWU6IFwiMjAxOFwiIH0gfSlcbiAgICAgIHdyYXBwZXJcbiAgICAgICAgLmZpbmQoXCJzZWxlY3RcIilcbiAgICAgICAgLmF0KDEpXG4gICAgICAgIC5zaW11bGF0ZShcImNoYW5nZVwiLCB7IHRhcmdldDogeyB2YWx1ZTogXCIxXCIgfSB9KVxuICAgICAgamVzdC5ydW5BbGxUaW1lcnMoKVxuICAgICAgd3JhcHBlci51cGRhdGUoKVxuICAgICAgd3JhcHBlci5maW5kKFwiLmFkdWktZGF0ZS1kYXlcIikuYXQoMTQpLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICAgIGplc3QucnVuQWxsVGltZXJzKClcbiAgICAgIHdyYXBwZXIudXBkYXRlKClcbiAgICB9KVxuICB9KVxufSlcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFFQSxPQUFPQSxLQUFLLElBQUlDLFNBQVMsUUFBUSxPQUFPO0FBQ3hDLFNBQVNDLEtBQUssUUFBUSxRQUFRO0FBQzlCLE9BQU9DLFlBQVksTUFBTSxxQkFBcUI7QUFDOUMsT0FBT0MsVUFBVSxNQUFNLElBQUk7QUFDM0IsU0FBU0MsbUJBQW1CLFFBQVEsU0FBUztBQUM3QyxTQUFTQyxHQUFHLFFBQVEsc0JBQXNCO0FBQUEsSUFFcENDLGlCQUFpQixhQUFBQyxVQUFBO0VBQUEsU0FBQUQsa0JBQUE7SUFBQSxJQUFBRSxLQUFBO0lBQUFDLGVBQUEsT0FBQUgsaUJBQUE7SUFBQSxTQUFBSSxJQUFBLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxFQUFBQyxJQUFBLE9BQUFDLEtBQUEsQ0FBQUosSUFBQSxHQUFBSyxJQUFBLE1BQUFBLElBQUEsR0FBQUwsSUFBQSxFQUFBSyxJQUFBO01BQUFGLElBQUEsQ0FBQUUsSUFBQSxJQUFBSixTQUFBLENBQUFJLElBQUE7SUFBQTtJQUFBUCxLQUFBLEdBQUFRLFVBQUEsT0FBQVYsaUJBQUEsS0FBQVcsTUFBQSxDQUFBSixJQUFBO0lBQUFMLEtBQUEsQ0FDckJVLEtBQUssR0FBRztNQUNOQyxTQUFTLEVBQUUsSUFBSTtNQUNmQyxLQUFLLEVBQUUsSUFBSUMsSUFBSSxDQUFDLENBQUM7TUFDakJDLE9BQU8sRUFBRTtJQUNYLENBQUM7SUFBQSxPQUFBZCxLQUFBO0VBQUE7RUFBQWUsU0FBQSxDQUFBakIsaUJBQUEsRUFBQUMsVUFBQTtFQUFBLE9BQUFpQixZQUFBLENBQUFsQixpQkFBQTtJQUFBbUIsR0FBQTtJQUFBTCxLQUFBLEVBRUQsU0FBQU0sTUFBTUEsQ0FBQSxFQUFHO01BQUEsSUFBQUMsTUFBQTtNQUNQLElBQUFDLFdBQUEsR0FBMkIsSUFBSSxDQUFDVixLQUFLO1FBQTdC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