nsc-react-component 1.2.3 → 1.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,548 +0,0 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2
-
3
- import "antd/es/table/style/css";
4
- import _Table from "antd/es/table";
5
- import "antd/es/popover/style/css";
6
- import _Popover from "antd/es/popover";
7
- import "antd/es/tooltip/style/css";
8
- import _Tooltip from "antd/es/tooltip";
9
- import "antd/es/checkbox/style/css";
10
- import _Checkbox from "antd/es/checkbox";
11
- var _excluded = ["listeners"];
12
-
13
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
14
-
15
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
16
-
17
- 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."); }
18
-
19
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
20
-
21
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
22
-
23
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
24
-
25
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
26
-
27
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
28
-
29
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
30
-
31
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
32
-
33
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
34
-
35
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
36
-
37
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
38
-
39
- function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
40
-
41
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
42
-
43
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
44
-
45
- 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); } }
46
-
47
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
48
-
49
- 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 } }); if (superClass) _setPrototypeOf(subClass, superClass); }
50
-
51
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
52
-
53
- 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); }; }
54
-
55
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
56
-
57
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
58
-
59
- 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; } }
60
-
61
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
62
-
63
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
64
-
65
- /*
66
- * @Descripttion:
67
- * @version:
68
- * @Author: rxzhu
69
- * @Date: 2021-03-23 08:46:20
70
- * @LastEditors: rxzhu
71
- * @LastEditTime: 2021-03-23 10:30:42
72
- */
73
- import { AppstoreOutlined } from "@ant-design/icons";
74
- import { isEmptyObj } from "@bj-nsc/functions";
75
- import Store, { PageStore } from "@bj-nsc/msn";
76
- import { utils } from "@bj-nsc/msn/lib/utils";
77
- import * as React from "react";
78
- import { DndProvider } from "react-dnd";
79
- import BodyRow, { DndContextType, IBodyRowProps } from "../common/BodyRow";
80
- import treeUtils from "../treeUtils";
81
- import styles from "./index.less";
82
- var BodyRowComponent = BodyRow.BodyRowComponent,
83
- HTML5Backend = BodyRow.HTML5Backend;
84
- import withZhLocale from "../common/withZhLocale";
85
- import { NoData } from "..";
86
- export { DndContextType, IBodyRowProps };
87
-
88
- var NSCNormalTable = /*#__PURE__*/function (_React$Component) {
89
- _inherits(NSCNormalTable, _React$Component);
90
-
91
- var _super = _createSuper(NSCNormalTable);
92
-
93
- function NSCNormalTable(props) {
94
- var _this2;
95
-
96
- _classCallCheck(this, NSCNormalTable);
97
-
98
- _this2 = _super.call(this, props);
99
-
100
- _defineProperty(_assertThisInitialized(_this2), "store", {});
101
-
102
- _defineProperty(_assertThisInitialized(_this2), "thIconRef", /*#__PURE__*/React.createRef());
103
-
104
- _defineProperty(_assertThisInitialized(_this2), "state", {
105
- dataSource: [],
106
- columns: [],
107
- loading: false,
108
- pagination: {},
109
- activeIndex: -1,
110
- //搜索文本
111
- searchText: null,
112
- fieldOption: null,
113
- searchColor: null,
114
- cols: []
115
- });
116
-
117
- _defineProperty(_assertThisInitialized(_this2), "listeners", {
118
- onBeforeLoad: null,
119
- load: null
120
- });
121
-
122
- _defineProperty(_assertThisInitialized(_this2), "moveRow", function (dragIndex, hoverIndex, drag, target) {
123
- var _this = _assertThisInitialized(_this2);
124
-
125
- var dragNode = drag.record;
126
- var targetNode = target.record;
127
- dragNode.moveArray(dragNode, targetNode);
128
- var ids = dragNode.parentNode.getChildNodeIds();
129
- var params = {
130
- id: dragNode.id,
131
- parentId: dragNode.attribute.parentId,
132
- ids: ids
133
- };
134
-
135
- if (_this2.props.moveRow) {
136
- _this2.props.moveRow(params);
137
- } else {
138
- _this2.store.reload();
139
- } // request("http://demo.javasvn.com/api/admin/menus/drag", {
140
- // method: "PATCH",
141
- // data: params,
142
- // callback: function (data) {
143
- // this.store.reload();
144
- // },
145
- // });
146
-
147
- });
148
-
149
- if (props.store instanceof Store) {
150
- _this2.store = props.store;
151
- } else {
152
- var _ref = props.store || {},
153
- _ref$listeners = _ref.listeners,
154
- listenersProps = _ref$listeners === void 0 ? {} : _ref$listeners,
155
- restStore = _objectWithoutProperties(_ref, _excluded);
156
-
157
- var storeProps = _objectSpread(_objectSpread({
158
- model: "model",
159
- component: _assertThisInitialized(_this2),
160
- listeners: {
161
- onBeforeLoad: function onBeforeLoad(store, options) {
162
- _this2.setState({
163
- loading: true
164
- });
165
-
166
- utils.callback(listenersProps.onBeforeLoad, _assertThisInitialized(_this2), [store, options]);
167
- },
168
- dataChanged: function dataChanged(data, modelData, store) {
169
- var paging = !(_this2.props.pagination === false);
170
-
171
- if (paging && !_this2.props.dataSource) {
172
- _this2.setState({
173
- dataSource: modelData,
174
- pagination: store.getPagination(),
175
- loading: false,
176
- activeIndex: -1
177
- });
178
- } else {
179
- _this2.setState({
180
- dataSource: modelData,
181
- loading: false
182
- });
183
- }
184
-
185
- utils.callback(listenersProps.dataChanged, _assertThisInitialized(_this2), [data, modelData, store, paging]);
186
- },
187
- load: function load(data, modelData, store) {
188
- utils.callback(listenersProps.load, _assertThisInitialized(_this2), [data, modelData, store]);
189
- },
190
- onErrorLoad: function onErrorLoad(err, response) {
191
- _this2.setState({
192
- loading: false
193
- });
194
-
195
- utils.callback(listenersProps.onErrorLoad, _assertThisInitialized(_this2), [err, response]);
196
- }
197
- },
198
- data: restStore.data ? restStore.data : props.dataSource ? props.dataSource : null
199
- }, restStore), {}, {
200
- autoLoad: restStore.autoLoad === false ? false : true
201
- });
202
-
203
- _this2.store = new PageStore(Object.assign({}, storeProps, {
204
- pagination: _this2.props.pagination
205
- }));
206
- }
207
-
208
- return _this2;
209
- }
210
-
211
- _createClass(NSCNormalTable, [{
212
- key: "componentDidMount",
213
- value: function componentDidMount() {
214
- var _this$props$resizeCol = this.props.resizeColumn,
215
- resizeColumn = _this$props$resizeCol === void 0 ? false : _this$props$resizeCol; //resizeColumn 为false 走原有逻辑
216
-
217
- if (!resizeColumn) {
218
- this.setState({
219
- columns: _toConsumableArray(this.props.columns)
220
- });
221
- var store = this.props.store;
222
-
223
- if (store && store.data) {
224
- this.store.setData(store.data);
225
- }
226
- } else {}
227
- }
228
- }, {
229
- key: "componentDidUpdate",
230
- value: function componentDidUpdate(prevProps) {
231
- if (this.props.columns !== prevProps.columns) {
232
- this.setState({
233
- columns: this.props.columns
234
- });
235
- }
236
- }
237
- /**
238
- * 清除选中颜色
239
- */
240
-
241
- }, {
242
- key: "clearSelectColor",
243
- value: function clearSelectColor() {
244
- this.setState({
245
- activeIndex: -1
246
- });
247
- return this;
248
- }
249
- }, {
250
- key: "getPaginationByStore",
251
- value: function getPaginationByStore() {
252
- return this.store.getPagination();
253
- }
254
- }, {
255
- key: "onChange",
256
- value: function onChange(pagination, filters, sorter, extra) {
257
- var _this3 = this;
258
-
259
- var _this$props = this.props,
260
- autoOnChange = _this$props.autoOnChange,
261
- autoSort = _this$props.autoSort,
262
- autoPagination = _this$props.autoPagination,
263
- onChange = _this$props.onChange;
264
-
265
- if (autoOnChange === false) {
266
- onChange && onChange(pagination, filters, sorter, extra);
267
- return;
268
- }
269
-
270
- var handlePagination = function handlePagination() {
271
- var params = {};
272
- var paging = _this3.getPaginationByStore() || {};
273
-
274
- if (!isEmptyObj(pagination)) {
275
- var _p;
276
-
277
- var p = (_p = {}, _defineProperty(_p, paging.currentKey || "current", pagination.current), _defineProperty(_p, paging.pageSizeKey || "size", pagination.pageSize), _p);
278
- Object.assign(params, p);
279
- }
280
-
281
- if (autoSort === true && !isEmptyObj(sorter)) {
282
- if (sorter.order == "ascend") {
283
- params.ascs = sorter.column.sortField || sorter.column.field || sorter.field;
284
- params.descs = "";
285
- }
286
-
287
- if (sorter.order == "descend") {
288
- params.descs = sorter.column.sortField || sorter.column.field || sorter.field;
289
- params.ascs = "";
290
- }
291
- }
292
-
293
- _this3.store.reload({
294
- params: params
295
- });
296
- };
297
-
298
- var onChangeFn = this.props.onChange; // 用户传了onChange保留用户自主处理表格变化的权力
299
-
300
- if (onChangeFn) {
301
- utils.callback(onChangeFn, this, [pagination, filters, sorter, extra]);
302
- }
303
-
304
- if (this.props.autoPagination) {
305
- handlePagination();
306
- }
307
- }
308
- }, {
309
- key: "getStore",
310
- value: function getStore() {
311
- return this.store;
312
- }
313
- /**
314
- * 获取数据模型对象
315
- */
316
-
317
- }, {
318
- key: "getModel",
319
- value: function getModel() {
320
- return this.store.getModel();
321
- }
322
- /**
323
- * 菜单搜索过滤显示
324
- * @param {String} val
325
- */
326
-
327
- }, {
328
- key: "handleSearch",
329
- value: function handleSearch(val, fieldOption, searchColor) {
330
- this.setState({
331
- searchText: val,
332
- fieldOption: fieldOption,
333
- searchColor: searchColor
334
- });
335
- }
336
- /**
337
- * 模块列表移动排序
338
- */
339
-
340
- }, {
341
- key: "filterColumn",
342
- value: function filterColumn(checkedValue) {
343
- var filterColumns = this.props.columns.map(function (col) {
344
- var newCol = _objectSpread({}, col);
345
-
346
- if (checkedValue.includes(col.dataIndex)) {
347
- newCol.initShow = true;
348
- } else {
349
- newCol.initShow = false;
350
- }
351
-
352
- return newCol;
353
- });
354
- this.setState({
355
- columns: filterColumns
356
- });
357
- }
358
- }, {
359
- key: "getColumns",
360
- value: function getColumns() {
361
- var _this4 = this;
362
-
363
- var columns = this.state.columns;
364
- var colLists = this.props.columns;
365
- var defaultShowCols = columns.filter(function (cols) {
366
- return cols.initShow !== false;
367
- });
368
- var content = /*#__PURE__*/React.createElement(_Checkbox.Group, {
369
- onChange: this.filterColumn.bind(this),
370
- options: colLists.map(function (col) {
371
- return {
372
- label: col.title,
373
- value: col.dataIndex
374
- };
375
- }),
376
- defaultValue: defaultShowCols.map(function (col) {
377
- return col.dataIndex;
378
- })
379
- });
380
- var cols = defaultShowCols.map(function (col) {
381
- if (col.ellipsis && !col.render) {
382
- col.ellipsis = {
383
- showTitle: false
384
- };
385
-
386
- col.render = function (text) {
387
- return /*#__PURE__*/React.createElement(_Tooltip, {
388
- placement: "topLeft",
389
- title: text
390
- }, text);
391
- };
392
- }
393
-
394
- return col;
395
- });
396
- var IconAction = {
397
- title: /*#__PURE__*/React.createElement("div", {
398
- className: styles["th-icon"],
399
- ref: this.thIconRef
400
- }, /*#__PURE__*/React.createElement(_Popover, {
401
- title: "\u9009\u62E9\u663E\u793A\u7684\u5217",
402
- content: content,
403
- placement: "bottomRight",
404
- trigger: "click",
405
- overlayStyle: {
406
- minWidth: 410,
407
- maxWidth: 450
408
- },
409
- getPopupContainer: function getPopupContainer() {
410
- return _this4.thIconRef.current;
411
- }
412
- }, /*#__PURE__*/React.createElement(AppstoreOutlined, {
413
- size: 24,
414
- className: styles["app-store-icon"]
415
- }))),
416
- dataIndex: "icon-menu",
417
- key: "icon-menu",
418
- width: 50,
419
- align: "center"
420
- };
421
-
422
- if (this.props.filterColumn) {
423
- cols.push(IconAction);
424
- }
425
-
426
- return cols;
427
- }
428
- }, {
429
- key: "render",
430
- value: function render() {
431
- var _this5 = this;
432
-
433
- var _this = this,
434
- _this$state = this.state,
435
- loading = _this$state.loading,
436
- dataSource = _this$state.dataSource,
437
- _this$state$paginatio = _this$state.pagination,
438
- pagination = _this$state$paginatio === void 0 ? {} : _this$state$paginatio,
439
- searchText = _this$state.searchText,
440
- fieldOption = _this$state.fieldOption,
441
- searchColor = _this$state.searchColor,
442
- props = utils.omit(this.props, ["store", "onChange", "columns"], {
443
- rowKey: "id",
444
- clickChangeColor: false
445
- });
446
-
447
- if (props.pagination !== false) {
448
- props.pagination = _objectSpread(_objectSpread({
449
- position: ["bottomRight"],
450
- showSizeChanger: true,
451
- showQuickJumper: true
452
- }, props.pagination), pagination);
453
-
454
- if (props.showTotal == true) {
455
- props.pagination.showTotal = function (total, _ref2) {
456
- var _ref3 = _slicedToArray(_ref2, 2),
457
- from = _ref3[0],
458
- to = _ref3[1];
459
-
460
- // return "显示 " + from + " - " + to + "条,共 " + total + " 条";
461
- return "共 " + total + " 条";
462
- };
463
- }
464
- }
465
-
466
- props.onChange = function (pagination, filters, sorter, extra) {
467
- _this.onChange(pagination, filters, sorter, extra);
468
- };
469
-
470
- if (props.clickChangeColor) {
471
- var onRowFn = props.onRow;
472
-
473
- props.onRow = function (record, index) {
474
- var custom = onRowFn ? onRowFn(record, index) : {};
475
- var onClickFn = custom.onClick;
476
-
477
- custom.onClick = function (event) {
478
- _this.setState({
479
- activeIndex: index //获取点击行的索引
480
-
481
- });
482
-
483
- utils.callback(onClickFn, _this, [event]);
484
- };
485
-
486
- return custom;
487
- };
488
-
489
- props.rowClassName = function (record, index) {
490
- return index === _this.state.activeIndex ? "".concat(styles.clickRowStyle) : "";
491
- };
492
- }
493
-
494
- var newDataSource = [];
495
-
496
- if (searchText) {
497
- var data = treeUtils.getSearchMenuDatas(this, searchText, fieldOption, searchColor);
498
- newDataSource = data.treeDatas;
499
- props.expandedRowKeys = data.openKeys;
500
- } else {
501
- newDataSource = dataSource;
502
- }
503
-
504
- props.store = props.store || {};
505
- props.store.autoLoad = props.store.autoLoad === false ? false : true;
506
- var dragable = _this.props.dragable;
507
- var dragableProps = dragable === true ? {
508
- components: BodyRowComponent,
509
- onRow: function onRow(record, index) {
510
- return {
511
- index: index,
512
- record: record,
513
- moveRow: _this5.moveRow
514
- };
515
- }
516
- } : {};
517
- var DefaultTable = /*#__PURE__*/React.createElement(_Table, _extends({
518
- childrenColumnName: "childNodes",
519
- dataSource: newDataSource,
520
- columns: this.getColumns(),
521
- loading: loading,
522
- className: styles["nsc-table"],
523
- locale: {
524
- emptyText: /*#__PURE__*/React.createElement(NoData, null)
525
- }
526
- }, props, dragableProps));
527
- return dragable === true ? /*#__PURE__*/React.createElement(DndProvider, {
528
- backend: HTML5Backend
529
- }, DefaultTable) : DefaultTable;
530
- }
531
- }]);
532
-
533
- return NSCNormalTable;
534
- }(React.Component);
535
-
536
- _defineProperty(NSCNormalTable, "defaultProps", {
537
- disableColumns: [],
538
- dragable: false,
539
- showTotal: true,
540
- filterColumn: true,
541
- dragUrl: "",
542
- autoPagination: true,
543
- autoSort: true,
544
- autoOnChange: true
545
- });
546
-
547
- export default withZhLocale(NSCNormalTable);
548
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3RhYmxlL05vcm1hbFRhYmwudHN4Il0sIm5hbWVzIjpbIkFwcHN0b3JlT3V0bGluZWQiLCJpc0VtcHR5T2JqIiwiU3RvcmUiLCJQYWdlU3RvcmUiLCJ1dGlscyIsIlJlYWN0IiwiRG5kUHJvdmlkZXIiLCJCb2R5Um93IiwiRG5kQ29udGV4dFR5cGUiLCJJQm9keVJvd1Byb3BzIiwidHJlZVV0aWxzIiwic3R5bGVzIiwiQm9keVJvd0NvbXBvbmVudCIsIkhUTUw1QmFja2VuZCIsIndpdGhaaExvY2FsZSIsIk5vRGF0YSIsIk5TQ05vcm1hbFRhYmxlIiwicHJvcHMiLCJjcmVhdGVSZWYiLCJkYXRhU291cmNlIiwiY29sdW1ucyIsImxvYWRpbmciLCJwYWdpbmF0aW9uIiwiYWN0aXZlSW5kZXgiLCJzZWFyY2hUZXh0IiwiZmllbGRPcHRpb24iLCJzZWFyY2hDb2xvciIsImNvbHMiLCJvbkJlZm9yZUxvYWQiLCJsb2FkIiwiZHJhZ0luZGV4IiwiaG92ZXJJbmRleCIsImRyYWciLCJ0YXJnZXQiLCJfdGhpcyIsImRyYWdOb2RlIiwicmVjb3JkIiwidGFyZ2V0Tm9kZSIsIm1vdmVBcnJheSIsImlkcyIsInBhcmVudE5vZGUiLCJnZXRDaGlsZE5vZGVJZHMiLCJwYXJhbXMiLCJpZCIsInBhcmVudElkIiwiYXR0cmlidXRlIiwibW92ZVJvdyIsInN0b3JlIiwicmVsb2FkIiwibGlzdGVuZXJzIiwibGlzdGVuZXJzUHJvcHMiLCJyZXN0U3RvcmUiLCJzdG9yZVByb3BzIiwibW9kZWwiLCJjb21wb25lbnQiLCJvcHRpb25zIiwic2V0U3RhdGUiLCJjYWxsYmFjayIsImRhdGFDaGFuZ2VkIiwiZGF0YSIsIm1vZGVsRGF0YSIsInBhZ2luZyIsImdldFBhZ2luYXRpb24iLCJvbkVycm9yTG9hZCIsImVyciIsInJlc3BvbnNlIiwiYXV0b0xvYWQiLCJPYmplY3QiLCJhc3NpZ24iLCJyZXNpemVDb2x1bW4iLCJzZXREYXRhIiwicHJldlByb3BzIiwiZmlsdGVycyIsInNvcnRlciIsImV4dHJhIiwiYXV0b09uQ2hhbmdlIiwiYXV0b1NvcnQiLCJhdXRvUGFnaW5hdGlvbiIsIm9uQ2hhbmdlIiwiaGFuZGxlUGFnaW5hdGlvbiIsImdldFBhZ2luYXRpb25CeVN0b3JlIiwicCIsImN1cnJlbnRLZXkiLCJjdXJyZW50IiwicGFnZVNpemVLZXkiLCJwYWdlU2l6ZSIsIm9yZGVyIiwiYXNjcyIsImNvbHVtbiIsInNvcnRGaWVsZCIsImZpZWxkIiwiZGVzY3MiLCJvbkNoYW5nZUZuIiwiZ2V0TW9kZWwiLCJ2YWwiLCJjaGVja2VkVmFsdWUiLCJmaWx0ZXJDb2x1bW5zIiwibWFwIiwiY29sIiwibmV3Q29sIiwiaW5jbHVkZXMiLCJkYXRhSW5kZXgiLCJpbml0U2hvdyIsInN0YXRlIiwiY29sTGlzdHMiLCJkZWZhdWx0U2hvd0NvbHMiLCJmaWx0ZXIiLCJjb250ZW50IiwiZmlsdGVyQ29sdW1uIiwiYmluZCIsImxhYmVsIiwidGl0bGUiLCJ2YWx1ZSIsImVsbGlwc2lzIiwicmVuZGVyIiwic2hvd1RpdGxlIiwidGV4dCIsIkljb25BY3Rpb24iLCJ0aEljb25SZWYiLCJtaW5XaWR0aCIsIm1heFdpZHRoIiwia2V5Iiwid2lkdGgiLCJhbGlnbiIsInB1c2giLCJvbWl0Iiwicm93S2V5IiwiY2xpY2tDaGFuZ2VDb2xvciIsInBvc2l0aW9uIiwic2hvd1NpemVDaGFuZ2VyIiwic2hvd1F1aWNrSnVtcGVyIiwic2hvd1RvdGFsIiwidG90YWwiLCJmcm9tIiwidG8iLCJvblJvd0ZuIiwib25Sb3ciLCJpbmRleCIsImN1c3RvbSIsIm9uQ2xpY2tGbiIsIm9uQ2xpY2siLCJldmVudCIsInJvd0NsYXNzTmFtZSIsImNsaWNrUm93U3R5bGUiLCJuZXdEYXRhU291cmNlIiwiZ2V0U2VhcmNoTWVudURhdGFzIiwidHJlZURhdGFzIiwiZXhwYW5kZWRSb3dLZXlzIiwib3BlbktleXMiLCJkcmFnYWJsZSIsImRyYWdhYmxlUHJvcHMiLCJjb21wb25lbnRzIiwiRGVmYXVsdFRhYmxlIiwiZ2V0Q29sdW1ucyIsImVtcHR5VGV4dCIsIkNvbXBvbmVudCIsImRpc2FibGVDb2x1bW5zIiwiZHJhZ1VybCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxnQkFBVCxRQUFpQyxtQkFBakM7QUFDQSxTQUFTQyxVQUFULFFBQTJCLG1CQUEzQjtBQUNBLE9BQU9DLEtBQVAsSUFBZ0JDLFNBQWhCLFFBQTZDLGFBQTdDO0FBQ0EsU0FBU0MsS0FBVCxRQUFzQix1QkFBdEI7QUFVQSxPQUFPLEtBQUtDLEtBQVosTUFBdUIsT0FBdkI7QUFDQSxTQUFTQyxXQUFULFFBQTRCLFdBQTVCO0FBQ0EsT0FBT0MsT0FBUCxJQUFrQkMsY0FBbEIsRUFBa0NDLGFBQWxDLFFBQXVELG1CQUF2RDtBQUNBLE9BQU9DLFNBQVAsTUFBc0IsY0FBdEI7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLGNBQW5CO0FBQ0EsSUFBUUMsZ0JBQVIsR0FBMkNMLE9BQTNDLENBQVFLLGdCQUFSO0FBQUEsSUFBMEJDLFlBQTFCLEdBQTJDTixPQUEzQyxDQUEwQk0sWUFBMUI7QUFDQSxPQUFPQyxZQUFQLE1BQXlCLHdCQUF6QjtBQUNBLFNBQVNDLE1BQVQsUUFBdUIsSUFBdkI7QUFpQ0EsU0FBU1AsY0FBVCxFQUF5QkMsYUFBekI7O0lBQ01PLGM7Ozs7O0FBaUNKLDBCQUFZQyxLQUFaLEVBQW1CO0FBQUE7O0FBQUE7O0FBQ2pCLCtCQUFNQSxLQUFOOztBQURpQiw2REFyQlgsRUFxQlc7O0FBQUEsOEVBcEJQWixLQUFLLENBQUNhLFNBQU4sRUFvQk87O0FBQUEsNkRBbEJYO0FBQ05DLE1BQUFBLFVBQVUsRUFBRSxFQUROO0FBRU5DLE1BQUFBLE9BQU8sRUFBRSxFQUZIO0FBR05DLE1BQUFBLE9BQU8sRUFBRSxLQUhIO0FBSU5DLE1BQUFBLFVBQVUsRUFB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QUxBLEtBRHlCO0FBRXpCckcsWUFBQUEsTUFBTSxFQUFOQSxNQUZ5QjtBQUd6QlUsWUFBQUEsT0FBTyxFQUFFLE1BQUksQ0FBQ0E7QUFIVyxXQUFwQjtBQUFBO0FBRlQsT0FESixHQVNJLEVBVk47QUFXQSxVQUFNMEcsWUFBWSxnQkFDaEI7QUFDRSxRQUFBLGtCQUFrQixFQUFDLFlBRHJCO0FBRUUsUUFBQSxVQUFVLEVBQUVSLGFBRmQ7QUFHRSxRQUFBLE9BQU8sRUFBRSxLQUFLUyxVQUFMLEVBSFg7QUFJRSxRQUFBLE9BQU8sRUFBRXBJLE9BSlg7QUFLRSxRQUFBLFNBQVMsRUFBRVYsTUFBTSxDQUFDLFdBQUQsQ0FMbkI7QUFNRSxRQUFBLE1BQU0sRUFBRTtBQUFFK0ksVUFBQUEsU0FBUyxlQUFFLG9CQUFDLE1BQUQ7QUFBYjtBQU5WLFNBT016SSxLQVBOLEVBUU1xSSxhQVJOLEVBREY7QUFhQSxhQUFPRCxRQUFRLEtBQUssSUFBYixnQkFDTCxvQkFBQyxXQUFEO0FBQWEsUUFBQSxPQUFPLEVBQUV4STtBQUF0QixTQUFxQzJJLFlBQXJDLENBREssR0FHTEEsWUFIRjtBQUtEOzs7O0VBaFowQm5KLEtBQUssQ0FBQ3NKLFM7O2dCQUE3QjNJLGMsa0JBQ2tCO0FBQ3BCNEksRUFBQUEsY0FBYyxFQUFFLEVBREk7QUFFcEJQLEVBQUFBLFFBQVEsRUFBRSxLQUZVO0FBR3BCbEIsRUFBQUEsU0FBUyxFQUFFLElBSFM7QUFJcEJ2QixFQUFBQSxZQUFZLEVBQUUsSUFKTTtBQUtwQmlELEVBQUFBLE9BQU8sRUFBRSxFQUxXO0FBTXBCaEYsRUFBQUEsY0FBYyxFQUFFLElBTkk7QUFPcEJELEVBQUFBLFFBQVEsRUFBRSxJQVBVO0FBUXBCRCxFQUFBQSxZQUFZLEVBQUU7QUFSTSxDOztBQWtaeEIsZUFBZTdELFlBQVksQ0FBQ0UsY0FBRCxDQUEzQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBEZXNjcmlwdHRpb246XHJcbiAqIEB2ZXJzaW9uOlxyXG4gKiBAQXV0aG9yOiByeHpodVxyXG4gKiBARGF0ZTogMjAyMS0wMy0yMyAwODo0NjoyMFxyXG4gKiBATGFzdEVkaXRvcnM6IHJ4emh1XHJcbiAqIEBMYXN0RWRpdFRpbWU6IDIwMjEtMDMtMjMgMTA6MzA6NDJcclxuICovXHJcbmltcG9ydCB7IEFwcHN0b3JlT3V0bGluZWQgfSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIENoZWNrYm94LFxyXG4gIENoZWNrYm94T3B0aW9uVHlwZSxcclxuICBQb3BvdmVyLFxyXG4gIFRhYmxlLFxyXG4gIFRhYmxlUHJvcHMsXHJcbiAgVG9vbHRpcCxcclxufSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgeyBDb2x1bW5UeXBlLCBUYWJsZVBhZ2luYXRpb25Db25maWcgfSBmcm9tIFwiYW50ZC9saWIvdGFibGVcIjtcclxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IERuZFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LWRuZFwiO1xyXG5pbXBvcnQgQm9keVJvdywgeyBEbmRDb250ZXh0VHlwZSwgSUJvZHlSb3dQcm9wcyB9IGZyb20gXCIuLi9jb21tb24vQm9keVJvd1wiO1xyXG5pbXBvcnQgdHJlZVV0aWxzIGZyb20gXCIuLi90cmVlVXRpbHNcIjtcclxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9pbmRleC5sZXNzXCI7XHJcbmNvbnN0IHsgQm9keVJvd0NvbXBvbmVudCwgSFRNTDVCYWNrZW5kIH0gPSBCb2R5Um93O1xyXG5pbXBvcnQgd2l0aFpoTG9jYWxlIGZyb20gXCIuLi9jb21tb24vd2l0aFpoTG9jYWxlXCI7XHJcbmltcG9ydCB7IE5vRGF0YSB9IGZyb20gXCIuLlwiO1xyXG5cclxuaW50ZXJmYWNlIElEcmFnUGFyYW1zIHtcclxuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIGlkczogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPjtcclxuICBwYXJlbnRJZDogc3RyaW5nIHwgbnVtYmVyO1xyXG59XHJcbi8vIGludGVyZmFjZSBTdG9yZVByb3BzIHt9XHJcblxyXG5leHBvcnQgdHlwZSBTdG9yZVR5cGUgPSBcIlBhZ2VTdG9yZVwiIHwgXCJUcmVlU3RvcmVcIiB8IFwiQmFzZVN0b3JlXCI7XHJcblxyXG5pbnRlcmZhY2UgTlNDVGFibGVQYWdpbmF0aW9uIGV4dGVuZHMgVGFibGVQYWdpbmF0aW9uQ29uZmlnIHtcclxuICB0b3RhbEtleT86IHN0cmluZztcclxuICBwYWdlU2l6ZUtleT86IHN0cmluZztcclxuICBjdXJyZW50S2V5Pzogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgTlNDVGFibGVQcm9wcyBleHRlbmRzIFRhYmxlUHJvcHM8YW55PiB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dUb3RhbD86IGJvb2xlYW47IC8vIOaYr+WQpuaYvuekuuaAu+adoeaVsOS/oeaBr++8jOm7mOiupHRydWVcclxuICBkaXNhYmxlQ29sdW1ucz86IHN0cmluZ1tdOyAvLyDkuI3lj6/pmpDol4/lv4XpobvmmL7npLrnmoTliJdcclxuICBkcmFnYWJsZT86IGJvb2xlYW47IC8vIOaYr+WQpuWPr+aLluWKqCwg6buY6K6kZmFsc2VcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvLyDmmK/lkKbmlK/mjIHov4fmu6TmmL7npLrooajmoLzliJcsIOm7mOiupHRydWVcclxuICBtb3ZlUm93PzogKHBhcmFtczogSURyYWdQYXJhbXMpID0+IHZvaWQ7IC8vIOaLluaLveWujOaIkOWQjueahOWbnuiwg1xyXG4gIGRyYWdVcmw/OiBzdHJpbmc7IC8vIOS/neWtmOaLluaLveaOkuW6j+eahOaOpeWPo1xyXG4gIHBhZ2luYXRpb24/OiBmYWxzZSB8IE5TQ1RhYmxlUGFnaW5hdGlvbjtcclxuICBhdXRvUGFnaW5hdGlvbj86IGJvb2xlYW47IC8vIOe7hOS7tuaYr+WQpuiHquWKqOWkhOeQhuWIhumhtVxyXG4gIGF1dG9Tb3J0PzogYm9vbGVhbjsgLy/nu4Tku7bmmK/lkKboh6rliqjlpITnkIbmjpLluo9cclxuICBhdXRvT25DaGFuZ2U/OiBib29sZWFuOyAvLyDnu4Tku7bmmK/lkKboh6rliqhvbkNoYW5nZSwgZmFsc2XliJnkuI3lgZrku7vkvZXlpITnkIblhajpg6jkuqTnu5nosIPnlKjmlrlcclxuICByZXNpemVDb2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaUr+aMgeihqOagvOWIl+aLluWKqOaUueWPmOWuveW6pizpu5jorqRmYWxzZVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBJTlNDVGFibGVQcm9wcyA9IHR5cGVvZiBOU0NOb3JtYWxUYWJsZS5kZWZhdWx0UHJvcHMgJiBOU0NUYWJsZVByb3BzO1xyXG5leHBvcnQgeyBEbmRDb250ZXh0VHlwZSwgSUJvZHlSb3dQcm9wcyB9O1xyXG5jbGFzcyBOU0NOb3JtYWxUYWJsZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJTlNDVGFibGVQcm9wcz4ge1xyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICBkaXNhYmxlQ29sdW1uczogW10sXHJcbiAgICBkcmFnYWJsZTogZmFsc2UsXHJcbiAgICBzaG93VG90YWw6IHRydWUsXHJcbiAgICBmaWx0ZXJDb2x1bW46IHRydWUsXHJcbiAgICBkcmFnVXJsOiBcIlwiLFxyXG4gICAgYXV0b1BhZ2luYXRpb246IHRydWUsXHJcbiAgICBhdXRvU29ydDogdHJ1ZSxcclxuICAgIGF1dG9PbkNoYW5nZTogdHJ1ZSxcclxuICB9O1xyXG5cclxuICBzdG9yZSA9IHt9IGFzIFN0b3JlUHJvcHM7XHJcbiAgdGhJY29uUmVmID0gUmVhY3QuY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xyXG5cclxuICBzdGF0ZSA9IHtcclxuICAgIGRhdGFTb3VyY2U6IFtdLFxyXG4gICAgY29sdW1uczogW10sXHJcbiAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgIHBhZ2luYXRpb246IHt9LFxyXG4gICAgYWN0aXZlSW5kZXg6IC0xLFxyXG4gICAgLy/mkJzntKLmlofmnKxcclxuICAgIHNlYXJjaFRleHQ6IG51bGwsXHJcbiAgICBmaWVsZE9wdGlvbjogbnVsbCxcclxuICAgIHNlYXJjaENvbG9yOiBudWxsLFxyXG4gICAgY29sczogW10sXHJcbiAgfTtcclxuXHJcbiAgbGlzdGVuZXJzID0ge1xyXG4gICAgb25CZWZvcmVMb2FkOiBudWxsLFxyXG4gICAgbG9hZDogbnVsbCxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgaWYgKHByb3BzLnN0b3JlIGluc3RhbmNlb2YgU3RvcmUpIHtcclxuICAgICAgdGhpcy5zdG9yZSA9IHByb3BzLnN0b3JlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgeyBsaXN0ZW5lcnM6IGxpc3RlbmVyc1Byb3BzID0ge30sIC4uLnJlc3RTdG9yZSB9ID1cclxuICAgICAgICBwcm9wcy5zdG9yZSB8fCB7fTtcclxuICAgICAgY29uc3Qgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICBtb2RlbDogXCJtb2RlbFwiLFxyXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICBsaXN0ZW5lcnM6IHtcclxuICAgICAgICAgIG9uQmVmb3JlTG9hZDogKHN0b3JlLCBvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5vbkJlZm9yZUxvYWQsIHRoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRhdGFDaGFuZ2VkOiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgcGFnaW5nID0gISh0aGlzLnByb3BzLnBhZ2luYXRpb24gPT09IGZhbHNlKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwYWdpbmcgJiYgIXRoaXMucHJvcHMuZGF0YVNvdXJjZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogbW9kZWxEYXRhLFxyXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbjogc3RvcmUuZ2V0UGFnaW5hdGlvbigpLFxyXG4gICAgICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBhY3RpdmVJbmRleDogLTEsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGRhdGFTb3VyY2U6IG1vZGVsRGF0YSwgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLmRhdGFDaGFuZ2VkLCB0aGlzLCBbXHJcbiAgICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgICBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgc3RvcmUsXHJcbiAgICAgICAgICAgICAgcGFnaW5nLFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBsb2FkOiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkgPT4ge1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5sb2FkLCB0aGlzLCBbZGF0YSwgbW9kZWxEYXRhLCBzdG9yZV0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG9uRXJyb3JMb2FkOiAoZXJyLCByZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLm9uRXJyb3JMb2FkLCB0aGlzLCBbZXJyLCByZXNwb25zZV0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRhdGE6IHJlc3RTdG9yZS5kYXRhXHJcbiAgICAgICAgICA/IHJlc3RTdG9yZS5kYXRhXHJcbiAgICAgICAgICA6IHByb3BzLmRhdGFTb3VyY2VcclxuICAgICAgICAgID8gcHJvcHMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgOiBudWxsLFxyXG4gICAgICAgIC4uLnJlc3RTdG9yZSxcclxuICAgICAgICBhdXRvTG9hZDogcmVzdFN0b3JlLmF1dG9Mb2FkID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZSxcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHRoaXMuc3RvcmUgPSBuZXcgUGFnZVN0b3JlKFxyXG4gICAgICAgIE9iamVjdC5hc3NpZ24oe30sIHN0b3JlUHJvcHMsIHtcclxuICAgICAgICAgIHBhZ2luYXRpb246IHRoaXMucHJvcHMucGFnaW5hdGlvbixcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiA9IGZhbHNlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgLy9yZXNpemVDb2x1bW4gIOS4umZhbHNlIOi1sOWOn+aciemAu+i+kVxyXG4gICAgaWYgKCFyZXNpemVDb2x1bW4pIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHVtbnM6IFsuLi50aGlzLnByb3BzLmNvbHVtbnNdIH0pO1xyXG4gICAgICBjb25zdCBzdG9yZSA9IHRoaXMucHJvcHMuc3RvcmU7XHJcbiAgICAgIGlmIChzdG9yZSAmJiBzdG9yZS5kYXRhKSB7XHJcbiAgICAgICAgdGhpcy5zdG9yZS5zZXREYXRhKHN0b3JlLmRhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xyXG4gICAgaWYgKHRoaXMucHJvcHMuY29sdW1ucyAhPT0gcHJldlByb3BzLmNvbHVtbnMpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHVtbnM6IHRoaXMucHJvcHMuY29sdW1ucyB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOa4hemZpOmAieS4reminOiJslxyXG4gICAqL1xyXG4gIGNsZWFyU2VsZWN0Q29sb3IoKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgYWN0aXZlSW5kZXg6IC0xIH0pO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBnZXRQYWdpbmF0aW9uQnlTdG9yZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLmdldFBhZ2luYXRpb24oKTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpIHtcclxuICAgIGNvbnN0IHsgYXV0b09uQ2hhbmdlLCBhdXRvU29ydCwgYXV0b1BhZ2luYXRpb24sIG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKGF1dG9PbkNoYW5nZSA9PT0gZmFsc2UpIHtcclxuICAgICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBoYW5kbGVQYWdpbmF0aW9uID0gKCkgPT4ge1xyXG4gICAgICBsZXQgcGFyYW1zID0ge30gYXMge1xyXG4gICAgICAgIHNpemU/OiBzdHJpbmc7XHJcbiAgICAgICAgcGFnZVNpemU/OiBzdHJpbmc7XHJcbiAgICAgICAgYXNjcz86IHN0cmluZztcclxuICAgICAgICBkZXNjcz86IHN0cmluZztcclxuICAgICAgICBbcHJvcE5hbWU6IHN0cmluZ106IHN0cmluZztcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGNvbnN0IHBhZ2luZyA9IHRoaXMuZ2V0UGFnaW5hdGlvbkJ5U3RvcmUoKSB8fCB7fTtcclxuXHJcbiAgICAgIGlmICghaXNFbXB0eU9iaihwYWdpbmF0aW9uKSkge1xyXG4gICAgICAgIGNvbnN0IHAgPSB7XHJcbiAgICAgICAgICBbcGFnaW5nLmN1cnJlbnRLZXkgfHwgXCJjdXJyZW50XCJdOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICBbcGFnaW5nLnBhZ2VTaXplS2V5IHx8IFwic2l6ZVwiXTogcGFnaW5hdGlvbi5wYWdlU2l6ZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGFyYW1zLCBwKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGF1dG9Tb3J0ID09PSB0cnVlICYmICFpc0VtcHR5T2JqKHNvcnRlcikpIHtcclxuICAgICAgICBpZiAoc29ydGVyLm9yZGVyID09IFwiYXNjZW5kXCIpIHtcclxuICAgICAgICAgIHBhcmFtcy5hc2NzID1cclxuICAgICAgICAgICAgc29ydGVyLmNvbHVtbi5zb3J0RmllbGQgfHwgc29ydGVyLmNvbHVtbi5maWVsZCB8fCBzb3J0ZXIuZmllbGQ7XHJcbiAgICAgICAgICBwYXJhbXMuZGVzY3MgPSBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc29ydGVyLm9yZGVyID09IFwiZGVzY2VuZFwiKSB7XHJcbiAgICAgICAgICBwYXJhbXMuZGVzY3MgPVxyXG4gICAgICAgICAgICBzb3J0ZXIuY29sdW1uLnNvcnRGaWVsZCB8fCBzb3J0ZXIuY29sdW1uLmZpZWxkIHx8IHNvcnRlci5maWVsZDtcclxuICAgICAgICAgIHBhcmFtcy5hc2NzID0gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zdG9yZS5yZWxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG9uQ2hhbmdlRm4gPSB0aGlzLnByb3BzLm9uQ2hhbmdlO1xyXG4gICAgLy8g55So5oi35Lyg5LqGb25DaGFuZ2Xkv53nlZnnlKjmiLfoh6rkuLvlpITnkIbooajmoLzlj5jljJbnmoTmnYPliptcclxuICAgIGlmIChvbkNoYW5nZUZuKSB7XHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2hhbmdlRm4sIHRoaXMsIFtwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhXSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcm9wcy5hdXRvUGFnaW5hdGlvbikge1xyXG4gICAgICBoYW5kbGVQYWdpbmF0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+W5pWw5o2u5qih5Z6L5a+56LGhXHJcbiAgICovXHJcbiAgZ2V0TW9kZWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRNb2RlbCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I+c5Y2V5pCc57Si6L+H5ruk5pi+56S6XHJcbiAgICogQHBhcmFtIHtTdHJpbmd9IHZhbFxyXG4gICAqL1xyXG4gIGhhbmRsZVNlYXJjaCh2YWwsIGZpZWxkT3B0aW9uLCBzZWFyY2hDb2xvcikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlYXJjaFRleHQ6IHZhbCxcclxuICAgICAgZmllbGRPcHRpb246IGZpZWxkT3B0aW9uLFxyXG4gICAgICBzZWFyY2hDb2xvcjogc2VhcmNoQ29sb3IsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaooeWdl+WIl+ihqOenu+WKqOaOkuW6j1xyXG4gICAqL1xyXG4gIG1vdmVSb3cgPSAoZHJhZ0luZGV4LCBob3ZlckluZGV4LCBkcmFnLCB0YXJnZXQpID0+IHtcclxuICAgIGNvbnN0IF90aGlzID0gdGhpcztcclxuICAgIGxldCBkcmFnTm9kZSA9IGRyYWcucmVjb3JkO1xyXG4gICAgbGV0IHRhcmdldE5vZGUgPSB0YXJnZXQucmVjb3JkO1xyXG4gICAgZHJhZ05vZGUubW92ZUFycmF5KGRyYWdOb2RlLCB0YXJnZXROb2RlKTtcclxuICAgIGxldCBpZHMgPSBkcmFnTm9kZS5wYXJlbnROb2RlLmdldENoaWxkTm9kZUlkcygpO1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgaWQ6IGRyYWdOb2RlLmlkLFxyXG4gICAgICBwYXJlbnRJZDogZHJhZ05vZGUuYXR0cmlidXRlLnBhcmVudElkLFxyXG4gICAgICBpZHM6IGlkcyxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMucHJvcHMubW92ZVJvdykge1xyXG4gICAgICB0aGlzLnByb3BzLm1vdmVSb3cocGFyYW1zKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3RvcmUucmVsb2FkKCk7XHJcbiAgICB9XHJcbiAgICAvLyByZXF1ZXN0KFwiaHR0cDovL2RlbW8uamF2YXN2bi5jb20vYXBpL2FkbWluL21lbnVzL2RyYWdcIiwge1xyXG4gICAgLy8gICBtZXRob2Q6IFwiUEFUQ0hcIixcclxuICAgIC8vICAgZGF0YTogcGFyYW1zLFxyXG4gICAgLy8gICBjYWxsYmFjazogZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgIC8vICAgICB0aGlzLnN0b3JlLnJlbG9hZCgpO1xyXG4gICAgLy8gICB9LFxyXG4gICAgLy8gfSk7XHJcbiAgfTtcclxuXHJcbiAgZmlsdGVyQ29sdW1uKGNoZWNrZWRWYWx1ZSkge1xyXG4gICAgY29uc3QgZmlsdGVyQ29sdW1ucyA9IHRoaXMucHJvcHMuY29sdW1ucy5tYXAoKGNvbDogQ29sdW1uVHlwZTx7fT4pID0+IHtcclxuICAgICAgY29uc3QgbmV3Q29sID0geyAuLi5jb2wgfSBhcyBDb2x1bW5UeXBlPHt9PiAmIHsgaW5pdFNob3c6IGJvb2xlYW4gfTtcclxuICAgICAgaWYgKGNoZWNrZWRWYWx1ZS5pbmNsdWRlcyhjb2wuZGF0YUluZGV4KSkge1xyXG4gICAgICAgIG5ld0NvbC5pbml0U2hvdyA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3Q29sLmluaXRTaG93ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG5ld0NvbDtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHVtbnM6IGZpbHRlckNvbHVtbnMgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRDb2x1bW5zKCkge1xyXG4gICAgY29uc3QgeyBjb2x1bW5zIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBjb2x1bW5zOiBjb2xMaXN0cyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGRlZmF1bHRTaG93Q29scyA9IGNvbHVtbnMuZmlsdGVyKChjb2xzKSA9PiBjb2xzLmluaXRTaG93ICE9PSBmYWxzZSk7XHJcbiAgICBjb25zdCBjb250ZW50ID0gKFxyXG4gICAgICA8Q2hlY2tib3guR3JvdXBcclxuICAgICAgICBvbkNoYW5nZT17dGhpcy5maWx0ZXJDb2x1bW4uYmluZCh0aGlzKX1cclxuICAgICAgICBvcHRpb25zPXtjb2xMaXN0cy5tYXAoXHJcbiAgICAgICAgICAoY29sOiBDb2x1bW5UeXBlPHt9PikgPT5cclxuICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICBsYWJlbDogY29sLnRpdGxlLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiBjb2wuZGF0YUluZGV4LFxyXG4gICAgICAgICAgICB9IGFzIENoZWNrYm94T3B0aW9uVHlwZSlcclxuICAgICAgICApfVxyXG4gICAgICAgIGRlZmF1bHRWYWx1ZT17ZGVmYXVsdFNob3dDb2xzLm1hcCgoY29sKSA9PiBjb2wuZGF0YUluZGV4KX1cclxuICAgICAgPjwvQ2hlY2tib3guR3JvdXA+XHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGNvbHMgPSBkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wpID0+IHtcclxuICAgICAgaWYgKGNvbC5lbGxpcHNpcyAmJiAhY29sLnJlbmRlcikge1xyXG4gICAgICAgIGNvbC5lbGxpcHNpcyA9IHtcclxuICAgICAgICAgIHNob3dUaXRsZTogZmFsc2UsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb2wucmVuZGVyID0gKHRleHQpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxUb29sdGlwIHBsYWNlbWVudD1cInRvcExlZnRcIiB0aXRsZT17dGV4dH0+XHJcbiAgICAgICAgICAgICAge3RleHR9XHJcbiAgICAgICAgICAgIDwvVG9vbHRpcD5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gY29sO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgSWNvbkFjdGlvbjogQ29sdW1uVHlwZTx7fT4gPSB7XHJcbiAgICAgIHRpdGxlOiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcInRoLWljb25cIl19IHJlZj17dGhpcy50aEljb25SZWZ9PlxyXG4gICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgdGl0bGU9XCLpgInmi6nmmL7npLrnmoTliJdcIlxyXG4gICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21SaWdodFwiXHJcbiAgICAgICAgICAgIHRyaWdnZXI9XCJjbGlja1wiXHJcbiAgICAgICAgICAgIG92ZXJsYXlTdHlsZT17eyBtaW5XaWR0aDogNDEwLCBtYXhXaWR0aDogNDUwIH19XHJcbiAgICAgICAgICAgIGdldFBvcHVwQ29udGFpbmVyPXsoKSA9PiB0aGlzLnRoSWNvblJlZi5jdXJyZW50fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8QXBwc3RvcmVPdXRsaW5lZCBzaXplPXsyNH0gY2xhc3NOYW1lPXtzdHlsZXNbXCJhcHAtc3RvcmUtaWNvblwiXX0gLz5cclxuICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgKSxcclxuICAgICAgZGF0YUluZGV4OiBcImljb24tbWVudVwiLFxyXG4gICAgICBrZXk6IFwiaWNvbi1tZW51XCIsXHJcbiAgICAgIHdpZHRoOiA1MCxcclxuICAgICAgYWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMucHJvcHMuZmlsdGVyQ29sdW1uKSB7XHJcbiAgICAgIGNvbHMucHVzaChJY29uQWN0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29scztcclxuICB9XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXMsXHJcbiAgICAgIHtcclxuICAgICAgICBsb2FkaW5nLFxyXG4gICAgICAgIGRhdGFTb3VyY2UsXHJcbiAgICAgICAgcGFnaW5hdGlvbiA9IHt9LFxyXG4gICAgICAgIHNlYXJjaFRleHQsXHJcbiAgICAgICAgZmllbGRPcHRpb24sXHJcbiAgICAgICAgc2VhcmNoQ29sb3IsXHJcbiAgICAgIH0gPSB0aGlzLnN0YXRlLFxyXG4gICAgICBwcm9wcyA9IHV0aWxzLm9taXQodGhpcy5wcm9wcywgW1wic3RvcmVcIiwgXCJvbkNoYW5nZVwiLCBcImNvbHVtbnNcIl0sIHtcclxuICAgICAgICByb3dLZXk6IFwiaWRcIixcclxuICAgICAgICBjbGlja0NoYW5nZUNvbG9yOiBmYWxzZSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgaWYgKHByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlKSB7XHJcbiAgICAgIHByb3BzLnBhZ2luYXRpb24gPSB7XHJcbiAgICAgICAgcG9zaXRpb246IFtcImJvdHRvbVJpZ2h0XCJdLFxyXG4gICAgICAgIHNob3dTaXplQ2hhbmdlcjogdHJ1ZSxcclxuICAgICAgICBzaG93UXVpY2tKdW1wZXI6IHRydWUsXHJcbiAgICAgICAgLi4ucHJvcHMucGFnaW5hdGlvbixcclxuICAgICAgICAuLi5wYWdpbmF0aW9uLFxyXG4gICAgICB9O1xyXG4gICAgICBpZiAocHJvcHMuc2hvd1RvdGFsID09IHRydWUpIHtcclxuICAgICAgICBwcm9wcy5wYWdpbmF0aW9uLnNob3dUb3RhbCA9IGZ1bmN0aW9uICh0b3RhbCwgW2Zyb20sIHRvXSkge1xyXG4gICAgICAgICAgLy8gcmV0dXJuIFwi5pi+56S6IFwiICsgZnJvbSArIFwiIC0gXCIgKyB0byArIFwi5p2h77yM5YWxIFwiICsgdG90YWwgKyBcIiDmnaFcIjtcclxuICAgICAgICAgIHJldHVybiBcIuWFsSBcIiArIHRvdGFsICsgXCIg5p2hXCI7XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3BzLm9uQ2hhbmdlID0gZnVuY3Rpb24gKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpIHtcclxuICAgICAgX3RoaXMub25DaGFuZ2UocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSk7XHJcbiAgICB9O1xyXG4gICAgaWYgKHByb3BzLmNsaWNrQ2hhbmdlQ29sb3IpIHtcclxuICAgICAgY29uc3Qgb25Sb3dGbiA9IHByb3BzLm9uUm93O1xyXG4gICAgICBwcm9wcy5vblJvdyA9IGZ1bmN0aW9uIChyZWNvcmQsIGluZGV4KSB7XHJcbiAgICAgICAgdmFyIGN1c3RvbSA9IG9uUm93Rm4gPyBvblJvd0ZuKHJlY29yZCwgaW5kZXgpIDoge307XHJcbiAgICAgICAgY29uc3Qgb25DbGlja0ZuID0gY3VzdG9tLm9uQ2xpY2s7XHJcbiAgICAgICAgY3VzdG9tLm9uQ2xpY2sgPSAoZXZlbnQpID0+IHtcclxuICAgICAgICAgIF90aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgYWN0aXZlSW5kZXg6IGluZGV4LCAvL+iOt+WPlueCueWHu+ihjOeahOe0ouW8lVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB1dGlscy5jYWxsYmFjayhvbkNsaWNrRm4sIF90aGlzLCBbZXZlbnRdKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBjdXN0b207XHJcbiAgICAgIH07XHJcbiAgICAgIHByb3BzLnJvd0NsYXNzTmFtZSA9IGZ1bmN0aW9uIChyZWNvcmQsIGluZGV4KSB7XHJcbiAgICAgICAgcmV0dXJuIGluZGV4ID09PSBfdGhpcy5zdGF0ZS5hY3RpdmVJbmRleFxyXG4gICAgICAgICAgPyBgJHtzdHlsZXMuY2xpY2tSb3dTdHlsZX1gXHJcbiAgICAgICAgICA6IFwiXCI7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBsZXQgbmV3RGF0YVNvdXJjZSA9IFtdO1xyXG4gICAgaWYgKHNlYXJjaFRleHQpIHtcclxuICAgICAgY29uc3QgZGF0YSA9IHRyZWVVdGlscy5nZXRTZWFyY2hNZW51RGF0YXMoXHJcbiAgICAgICAgdGhpcyxcclxuICAgICAgICBzZWFyY2hUZXh0LFxyXG4gICAgICAgIGZpZWxkT3B0aW9uLFxyXG4gICAgICAgIHNlYXJjaENvbG9yXHJcbiAgICAgICk7XHJcbiAgICAgIG5ld0RhdGFTb3VyY2UgPSBkYXRhLnRyZWVEYXRhcztcclxuICAgICAgcHJvcHMuZXhwYW5kZWRSb3dLZXlzID0gZGF0YS5vcGVuS2V5cztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5ld0RhdGFTb3VyY2UgPSBkYXRhU291cmNlO1xyXG4gICAgfVxyXG4gICAgcHJvcHMuc3RvcmUgPSBwcm9wcy5zdG9yZSB8fCB7fTtcclxuICAgIHByb3BzLnN0b3JlLmF1dG9Mb2FkID0gcHJvcHMuc3RvcmUuYXV0b0xvYWQgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgY29uc3QgeyBkcmFnYWJsZSB9ID0gX3RoaXMucHJvcHM7XHJcbiAgICBjb25zdCBkcmFnYWJsZVByb3BzID1cclxuICAgICAgZHJhZ2FibGUgPT09IHRydWVcclxuICAgICAgICA/IHtcclxuICAgICAgICAgICAgY29tcG9uZW50czogQm9keVJvd0NvbXBvbmVudCxcclxuICAgICAgICAgICAgb25Sb3c6IChyZWNvcmQsIGluZGV4KSA9PiAoe1xyXG4gICAgICAgICAgICAgIGluZGV4LFxyXG4gICAgICAgICAgICAgIHJlY29yZCxcclxuICAgICAgICAgICAgICBtb3ZlUm93OiB0aGlzLm1vdmVSb3csXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDoge307XHJcbiAgICBjb25zdCBEZWZhdWx0VGFibGUgPSAoXHJcbiAgICAgIDxUYWJsZVxyXG4gICAgICAgIGNoaWxkcmVuQ29sdW1uTmFtZT1cImNoaWxkTm9kZXNcIlxyXG4gICAgICAgIGRhdGFTb3VyY2U9e25ld0RhdGFTb3VyY2V9XHJcbiAgICAgICAgY29sdW1ucz17dGhpcy5nZXRDb2x1bW5zKCl9XHJcbiAgICAgICAgbG9hZGluZz17bG9hZGluZ31cclxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1tcIm5zYy10YWJsZVwiXX1cclxuICAgICAgICBsb2NhbGU9e3sgZW1wdHlUZXh0OiA8Tm9EYXRhIC8+IH19XHJcbiAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgIHsuLi5kcmFnYWJsZVByb3BzfVxyXG4gICAgICAvPlxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gZHJhZ2FibGUgPT09IHRydWUgPyAoXHJcbiAgICAgIDxEbmRQcm92aWRlciBiYWNrZW5kPXtIVE1MNUJhY2tlbmR9PntEZWZhdWx0VGFibGV9PC9EbmRQcm92aWRlcj5cclxuICAgICkgOiAoXHJcbiAgICAgIERlZmF1bHRUYWJsZVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHdpdGhaaExvY2FsZShOU0NOb3JtYWxUYWJsZSk7XHJcbiJdfQ==
@@ -1,16 +0,0 @@
1
- import React from "react";
2
- import "./resize.less";
3
- declare class ResizeColumnTable extends React.PureComponent<any, any> {
4
- constructor(props: any);
5
- components: {
6
- header: {
7
- cell: (props: any) => JSX.Element;
8
- };
9
- };
10
- componentDidMount(): void;
11
- componentDidUpdate(preProps: any, preState: any): void;
12
- handleResize: (index: any) => (e: any, { size }: any) => void;
13
- resetColumn(): void;
14
- render(): React.ReactNode;
15
- }
16
- export default ResizeColumnTable;