nsc-react-component 2.12.2 → 2.13.0
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.
- package/lib/Interface.js +1 -1
- package/lib/Interface.js.map +1 -0
- package/lib/base/affix/index.js +5 -46
- package/lib/base/affix/index.js.map +1 -0
- package/lib/base/alert/index.js +5 -46
- package/lib/base/alert/index.js.map +1 -0
- package/lib/base/anchor/index.js +8 -49
- package/lib/base/anchor/index.js.map +1 -0
- package/lib/base/avatar/index.js +8 -49
- package/lib/base/avatar/index.js.map +1 -0
- package/lib/base/backTop/index.js +5 -46
- package/lib/base/backTop/index.js.map +1 -0
- package/lib/base/badge/index.js +8 -49
- package/lib/base/badge/index.js.map +1 -0
- package/lib/base/breadcrumb/index.js +5 -46
- package/lib/base/breadcrumb/index.js.map +1 -0
- package/lib/base/button/index.d.ts +1 -1
- package/lib/base/button/index.js +93 -134
- package/lib/base/button/index.js.map +1 -0
- package/lib/base/calendar/index.js +5 -46
- package/lib/base/calendar/index.js.map +1 -0
- package/lib/base/card/index.js +8 -50
- package/lib/base/card/index.js.map +1 -0
- package/lib/base/carousel/index.js +5 -46
- package/lib/base/carousel/index.js.map +1 -0
- package/lib/base/cascader/index.d.ts +3 -3
- package/lib/base/cascader/index.js +150 -221
- package/lib/base/cascader/index.js.map +1 -0
- package/lib/base/chart/index.d.ts +2 -2
- package/lib/base/chart/index.js +178 -287
- package/lib/base/chart/index.js.map +1 -0
- package/lib/base/checkbox/CheckboxGroup.d.ts +3 -3
- package/lib/base/checkbox/CheckboxGroup.js +165 -258
- package/lib/base/checkbox/CheckboxGroup.js.map +1 -0
- package/lib/base/checkbox/index.d.ts +2 -2
- package/lib/base/checkbox/index.js +8 -48
- package/lib/base/checkbox/index.js.map +1 -0
- package/lib/base/collapse/index.js +8 -49
- package/lib/base/collapse/index.js.map +1 -0
- package/lib/base/comment/index.js +5 -46
- package/lib/base/comment/index.js.map +1 -0
- package/lib/base/common/BodyRow/index.js +48 -102
- package/lib/base/common/BodyRow/index.js.map +1 -0
- package/lib/base/common/EllipseCell/index.d.ts +1 -1
- package/lib/base/common/EllipseCell/index.js +16 -57
- package/lib/base/common/EllipseCell/index.js.map +1 -0
- package/lib/base/common/FileIcon.d.ts +2 -2
- package/lib/base/common/FileIcon.js +86 -132
- package/lib/base/common/FileIcon.js.map +1 -0
- package/lib/base/common/Icon.d.ts +2 -2
- package/lib/base/common/Icon.js +42 -96
- package/lib/base/common/Icon.js.map +1 -0
- package/lib/base/common/IconData.js +2 -2
- package/lib/base/common/IconData.js.map +1 -0
- package/lib/base/common/IconFont.d.ts +2 -2
- package/lib/base/common/IconFont.js +6 -8
- package/lib/base/common/IconFont.js.map +1 -0
- package/lib/base/common/NoAuthority.d.ts +2 -2
- package/lib/base/common/NoAuthority.js +13 -53
- package/lib/base/common/NoAuthority.js.map +1 -0
- package/lib/base/common/NoData.d.ts +2 -2
- package/lib/base/common/NoData.js +34 -74
- package/lib/base/common/NoData.js.map +1 -0
- package/lib/base/common/NoMessage.d.ts +2 -2
- package/lib/base/common/NoMessage.js +30 -70
- package/lib/base/common/NoMessage.js.map +1 -0
- package/lib/base/common/NoNetWork.d.ts +2 -2
- package/lib/base/common/NoNetWork.js +30 -70
- package/lib/base/common/NoNetWork.js.map +1 -0
- package/lib/base/common/Page404.d.ts +2 -2
- package/lib/base/common/Page404.js +30 -70
- package/lib/base/common/Page404.js.map +1 -0
- package/lib/base/common/PageRequest.js +91 -154
- package/lib/base/common/PageRequest.js.map +1 -0
- package/lib/base/common/TreePanel.d.ts +1 -1
- package/lib/base/common/TreePanel.js +133 -212
- package/lib/base/common/TreePanel.js.map +1 -0
- package/lib/base/common/iconfontalibaba.js +15 -22
- package/lib/base/common/iconfontalibaba.js.map +1 -0
- package/lib/base/common/withZhLocale.d.ts +1 -1
- package/lib/base/common/withZhLocale.js +3 -7
- package/lib/base/common/withZhLocale.js.map +1 -0
- package/lib/base/configProvider/index.js +8 -49
- package/lib/base/configProvider/index.js.map +1 -0
- package/lib/base/datepick/Rangepicker.d.ts +3 -3
- package/lib/base/datepick/Rangepicker.js +229 -325
- package/lib/base/datepick/Rangepicker.js.map +1 -0
- package/lib/base/datepick/index.d.ts +2 -2
- package/lib/base/datepick/index.js +56 -113
- package/lib/base/datepick/index.js.map +1 -0
- package/lib/base/descriptions/index.js +8 -49
- package/lib/base/descriptions/index.js.map +1 -0
- package/lib/base/divider/index.js +5 -46
- package/lib/base/divider/index.js.map +1 -0
- package/lib/base/download/index.js +42 -84
- package/lib/base/download/index.js.map +1 -0
- package/lib/base/drawer/index.js +14 -57
- package/lib/base/drawer/index.js.map +1 -0
- package/lib/base/dropdown/index.js +19 -65
- package/lib/base/dropdown/index.js.map +1 -0
- package/lib/base/editor/index.d.ts +1 -1
- package/lib/base/editor/index.js +83 -128
- package/lib/base/editor/index.js.map +1 -0
- package/lib/base/errorboundary/index.js +19 -63
- package/lib/base/errorboundary/index.js.map +1 -0
- package/lib/base/form/Form.d.ts +2 -2
- package/lib/base/form/Form.js +314 -427
- package/lib/base/form/Form.js.map +1 -0
- package/lib/base/form/filed/Cascader.d.ts +2 -2
- package/lib/base/form/filed/Cascader.js +6 -45
- package/lib/base/form/filed/Cascader.js.map +1 -0
- package/lib/base/form/filed/Checkbox.d.ts +2 -2
- package/lib/base/form/filed/Checkbox.js +6 -45
- package/lib/base/form/filed/Checkbox.js.map +1 -0
- package/lib/base/form/filed/DatePicker.d.ts +2 -2
- package/lib/base/form/filed/DatePicker.js +6 -45
- package/lib/base/form/filed/DatePicker.js.map +1 -0
- package/lib/base/form/filed/FormItem.d.ts +2 -2
- package/lib/base/form/filed/FormItem.js +65 -127
- package/lib/base/form/filed/FormItem.js.map +1 -0
- package/lib/base/form/filed/Input.d.ts +2 -2
- package/lib/base/form/filed/Input.js +14 -51
- package/lib/base/form/filed/Input.js.map +1 -0
- package/lib/base/form/filed/InputEamil.d.ts +2 -2
- package/lib/base/form/filed/InputEamil.js +5 -44
- package/lib/base/form/filed/InputEamil.js.map +1 -0
- package/lib/base/form/filed/InputNumber.d.ts +2 -2
- package/lib/base/form/filed/InputNumber.js +5 -44
- package/lib/base/form/filed/InputNumber.js.map +1 -0
- package/lib/base/form/filed/InputPassword.d.ts +2 -2
- package/lib/base/form/filed/InputPassword.js +5 -44
- package/lib/base/form/filed/InputPassword.js.map +1 -0
- package/lib/base/form/filed/Item.d.ts +3 -3
- package/lib/base/form/filed/Item.js +91 -163
- package/lib/base/form/filed/Item.js.map +1 -0
- package/lib/base/form/filed/Radio.d.ts +2 -2
- package/lib/base/form/filed/Radio.js +7 -45
- package/lib/base/form/filed/Radio.js.map +1 -0
- package/lib/base/form/filed/RangerPicker.d.ts +2 -2
- package/lib/base/form/filed/RangerPicker.js +6 -45
- package/lib/base/form/filed/RangerPicker.js.map +1 -0
- package/lib/base/form/filed/Rate.d.ts +2 -2
- package/lib/base/form/filed/Rate.js +6 -46
- package/lib/base/form/filed/Rate.js.map +1 -0
- package/lib/base/form/filed/Select.d.ts +2 -2
- package/lib/base/form/filed/Select.js +9 -49
- package/lib/base/form/filed/Select.js.map +1 -0
- package/lib/base/form/filed/Slider.d.ts +2 -2
- package/lib/base/form/filed/Slider.js +6 -46
- package/lib/base/form/filed/Slider.js.map +1 -0
- package/lib/base/form/filed/Switch.d.ts +2 -2
- package/lib/base/form/filed/Switch.js +6 -46
- package/lib/base/form/filed/Switch.js.map +1 -0
- package/lib/base/form/filed/TagSelect.d.ts +2 -2
- package/lib/base/form/filed/TagSelect.js +6 -45
- package/lib/base/form/filed/TagSelect.js.map +1 -0
- package/lib/base/form/filed/TextArea.d.ts +2 -2
- package/lib/base/form/filed/TextArea.js +5 -44
- package/lib/base/form/filed/TextArea.js.map +1 -0
- package/lib/base/form/filed/Upload.d.ts +2 -2
- package/lib/base/form/filed/Upload.js +9 -45
- package/lib/base/form/filed/Upload.js.map +1 -0
- package/lib/base/form/index.js +17 -58
- package/lib/base/form/index.js.map +1 -0
- package/lib/base/grid/Col.js +5 -46
- package/lib/base/grid/Col.js.map +1 -0
- package/lib/base/grid/Row.js +5 -46
- package/lib/base/grid/Row.js.map +1 -0
- package/lib/base/grid/index.js +1 -1
- package/lib/base/grid/index.js.map +1 -0
- package/lib/base/iframe/index.d.ts +1 -1
- package/lib/base/iframe/index.js +44 -93
- package/lib/base/iframe/index.js.map +1 -0
- package/lib/base/image/index.js +163 -261
- package/lib/base/image/index.js.map +1 -0
- package/lib/base/input/Email.d.ts +2 -2
- package/lib/base/input/Email.js +55 -103
- package/lib/base/input/Email.js.map +1 -0
- package/lib/base/input/Number.d.ts +1 -1
- package/lib/base/input/Number.js +48 -104
- package/lib/base/input/Number.js.map +1 -0
- package/lib/base/input/Password.d.ts +1 -1
- package/lib/base/input/Password.js +48 -104
- package/lib/base/input/Password.js.map +1 -0
- package/lib/base/input/Search.d.ts +1 -1
- package/lib/base/input/Search.js +46 -102
- package/lib/base/input/Search.js.map +1 -0
- package/lib/base/input/TextArea.d.ts +1 -1
- package/lib/base/input/TextArea.js +64 -123
- package/lib/base/input/TextArea.js.map +1 -0
- package/lib/base/input/index.d.ts +2 -2
- package/lib/base/input/index.js +121 -195
- package/lib/base/input/index.js.map +1 -0
- package/lib/base/layout/index.js +14 -56
- package/lib/base/layout/index.js.map +1 -0
- package/lib/base/list/index.js +8 -49
- package/lib/base/list/index.js.map +1 -0
- package/lib/base/menu/index.d.ts +5 -5
- package/lib/base/menu/index.js +100 -164
- package/lib/base/menu/index.js.map +1 -0
- package/lib/base/message/index.js +5 -47
- package/lib/base/message/index.js.map +1 -0
- package/lib/base/modal/Confirm.js +14 -18
- package/lib/base/modal/Confirm.js.map +1 -0
- package/lib/base/modal/index.d.ts +1 -1
- package/lib/base/modal/index.js +274 -359
- package/lib/base/modal/index.js.map +1 -0
- package/lib/base/notification/index.js +5 -47
- package/lib/base/notification/index.js.map +1 -0
- package/lib/base/pageHeader/index.js +5 -46
- package/lib/base/pageHeader/index.js.map +1 -0
- package/lib/base/pagination/index.js +5 -46
- package/lib/base/pagination/index.js.map +1 -0
- package/lib/base/pdfviwer/index.d.ts +1 -1
- package/lib/base/pdfviwer/index.js +67 -92
- package/lib/base/pdfviwer/index.js.map +1 -0
- package/lib/base/popconfirm/index.js +5 -46
- package/lib/base/popconfirm/index.js.map +1 -0
- package/lib/base/popover/index.js +19 -65
- package/lib/base/popover/index.js.map +1 -0
- package/lib/base/progress/index.js +5 -46
- package/lib/base/progress/index.js.map +1 -0
- package/lib/base/radio/RadioGroup.d.ts +1 -1
- package/lib/base/radio/RadioGroup.js +198 -295
- package/lib/base/radio/RadioGroup.js.map +1 -0
- package/lib/base/radio/index.d.ts +1 -1
- package/lib/base/radio/index.js +8 -50
- package/lib/base/radio/index.js.map +1 -0
- package/lib/base/result/index.js +5 -46
- package/lib/base/result/index.js.map +1 -0
- package/lib/base/select/index.d.ts +4 -4
- package/lib/base/select/index.js +358 -475
- package/lib/base/select/index.js.map +1 -0
- package/lib/base/skeleton/index.js +5 -46
- package/lib/base/skeleton/index.js.map +1 -0
- package/lib/base/space/index.js +5 -46
- package/lib/base/space/index.js.map +1 -0
- package/lib/base/spin/index.js +5 -46
- package/lib/base/spin/index.js.map +1 -0
- package/lib/base/statistic/index.js +8 -49
- package/lib/base/statistic/index.js.map +1 -0
- package/lib/base/steps/index.js +8 -49
- package/lib/base/steps/index.js.map +1 -0
- package/lib/base/switch/index.js +5 -46
- package/lib/base/switch/index.js.map +1 -0
- package/lib/base/table/index.d.ts +8 -8
- package/lib/base/table/index.js +743 -927
- package/lib/base/table/index.js.map +1 -0
- package/lib/base/tabs/Tabpane.d.ts +1 -1
- package/lib/base/tabs/Tabpane.js +22 -58
- package/lib/base/tabs/Tabpane.js.map +1 -0
- package/lib/base/tabs/index.d.ts +1 -1
- package/lib/base/tabs/index.js +110 -156
- package/lib/base/tabs/index.js.map +1 -0
- package/lib/base/tagSelect/TagSelect.d.ts +3 -3
- package/lib/base/tagSelect/TagSelect.js +124 -213
- package/lib/base/tagSelect/TagSelect.js.map +1 -0
- package/lib/base/tagSelect/index.d.ts +3 -3
- package/lib/base/tagSelect/index.js +90 -145
- package/lib/base/tagSelect/index.js.map +1 -0
- package/lib/base/timeline/index.js +8 -49
- package/lib/base/timeline/index.js.map +1 -0
- package/lib/base/tooltip/index.js +19 -65
- package/lib/base/tooltip/index.js.map +1 -0
- package/lib/base/transfer/index.js +5 -46
- package/lib/base/transfer/index.js.map +1 -0
- package/lib/base/tree/TreeSearch.d.ts +3 -3
- package/lib/base/tree/TreeSearch.js +119 -186
- package/lib/base/tree/TreeSearch.js.map +1 -0
- package/lib/base/tree/index.d.ts +2 -2
- package/lib/base/tree/index.js +169 -241
- package/lib/base/tree/index.js.map +1 -0
- package/lib/base/treeselect/index.js +5 -46
- package/lib/base/treeselect/index.js.map +1 -0
- package/lib/base/typography/index.js +5 -46
- package/lib/base/typography/index.js.map +1 -0
- package/lib/base/upload/Dragger.js +370 -605
- package/lib/base/upload/Dragger.js.map +1 -0
- package/lib/base/upload/Upload.js +352 -529
- package/lib/base/upload/Upload.js.map +1 -0
- package/lib/base/upload/index copy.d.ts +1 -1
- package/lib/base/upload/index copy.js +315 -431
- package/lib/base/upload/index copy.js.map +1 -0
- package/lib/base/upload/index.js +367 -640
- package/lib/base/upload/index.js.map +1 -0
- package/lib/config.d.ts +2 -0
- package/lib/config.js +7 -9
- package/lib/config.js.map +1 -0
- package/lib/constants.js +2 -2
- package/lib/constants.js.map +1 -0
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -0
- package/lib/page/BasePage/Form.d.ts +1 -1
- package/lib/page/BasePage/Form.js +253 -360
- package/lib/page/BasePage/Form.js.map +1 -0
- package/lib/page/BasePage/index.d.ts +9 -4
- package/lib/page/BasePage/index.js +864 -962
- package/lib/page/BasePage/index.js.map +1 -0
- package/lib/page/BasePage/index.module copy.less +144 -0
- package/lib/page/BasePage/index.module.less +92 -58
- package/lib/page/HeaderSearch/index.d.ts +1 -1
- package/lib/page/HeaderSearch/index.js +196 -272
- package/lib/page/HeaderSearch/index.js.map +1 -0
- package/lib/page/PasswordCheck/index.d.ts +1 -1
- package/lib/page/PasswordCheck/index.js +53 -109
- package/lib/page/PasswordCheck/index.js.map +1 -0
- package/lib/treeUtils.js +45 -58
- package/lib/treeUtils.js.map +1 -0
- package/lib/utils.d.ts +2 -2
- package/lib/utils.js +48 -61
- package/lib/utils.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,52 +1,11 @@
|
|
|
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
1
|
import "antd/es/upload/style/css";
|
|
4
2
|
import _Upload from "antd/es/upload";
|
|
5
|
-
|
|
6
|
-
function
|
|
7
|
-
|
|
8
|
-
function
|
|
9
|
-
|
|
10
|
-
function
|
|
11
|
-
|
|
12
|
-
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); }
|
|
13
|
-
|
|
14
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
15
|
-
|
|
16
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
17
|
-
|
|
18
|
-
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; }
|
|
19
|
-
|
|
20
|
-
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; }
|
|
21
|
-
|
|
22
|
-
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; }
|
|
23
|
-
|
|
24
|
-
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
25
|
-
|
|
26
|
-
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
27
|
-
|
|
28
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
29
|
-
|
|
30
|
-
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); } }
|
|
31
|
-
|
|
32
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
33
|
-
|
|
34
|
-
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); }
|
|
35
|
-
|
|
36
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
37
|
-
|
|
38
|
-
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); }; }
|
|
39
|
-
|
|
40
|
-
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
|
41
|
-
|
|
42
|
-
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
43
|
-
|
|
44
|
-
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; } }
|
|
45
|
-
|
|
46
|
-
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
47
|
-
|
|
48
|
-
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; }
|
|
49
|
-
|
|
3
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }
|
|
4
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
5
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
6
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
7
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
8
|
+
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); }
|
|
50
9
|
import * as React from "react";
|
|
51
10
|
import file from "nsc-file";
|
|
52
11
|
import message from "../message";
|
|
@@ -56,594 +15,400 @@ import styles from "./index.less";
|
|
|
56
15
|
import cls from "classnames";
|
|
57
16
|
import FileIcon from "../common/FileIcon";
|
|
58
17
|
import { DeleteOutlined, DownloadOutlined, EyeOutlined } from "@ant-design/icons";
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
_classCallCheck(this, NscUploadDragger);
|
|
73
|
-
|
|
74
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
75
|
-
args[_key] = arguments[_key];
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
_this = _super.call.apply(_super, [this].concat(args));
|
|
79
|
-
|
|
80
|
-
_defineProperty(_assertThisInitialized(_this), "state", {
|
|
18
|
+
const {
|
|
19
|
+
upload,
|
|
20
|
+
download,
|
|
21
|
+
previewDocument
|
|
22
|
+
} = file;
|
|
23
|
+
const {
|
|
24
|
+
Dragger
|
|
25
|
+
} = _Upload;
|
|
26
|
+
export default class NscUploadDragger extends React.PureComponent {
|
|
27
|
+
constructor() {
|
|
28
|
+
super(...arguments);
|
|
29
|
+
_defineProperty(this, "state", {
|
|
81
30
|
fileList: [],
|
|
82
31
|
viewId: "",
|
|
83
32
|
fileListStore: [],
|
|
84
33
|
fileNames: []
|
|
85
34
|
});
|
|
86
|
-
|
|
87
|
-
_defineProperty(
|
|
88
|
-
|
|
89
|
-
_defineProperty(
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
_this.onProcess({
|
|
110
|
-
percent: totalProgress,
|
|
111
|
-
file: file
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
onProcess && onProcess({
|
|
115
|
-
percent: totalProgress,
|
|
116
|
-
file: file
|
|
117
|
-
});
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
_context.prev = 3;
|
|
121
|
-
_context.next = 6;
|
|
122
|
-
return upload({
|
|
123
|
-
file: file,
|
|
124
|
-
onProgress: onProgress,
|
|
125
|
-
partSize: sliceSize
|
|
126
|
-
}, _this.props.requestConfig);
|
|
127
|
-
|
|
128
|
-
case 6:
|
|
129
|
-
res = _context.sent;
|
|
130
|
-
_this.uploadIngSize = _this.uploadIngSize + 1;
|
|
131
|
-
fileId = null;
|
|
132
|
-
ImgRes = null;
|
|
133
|
-
|
|
134
|
-
if (res.code == 200) {
|
|
135
|
-
fileId = res.data.attachId;
|
|
136
|
-
options.onSuccess();
|
|
137
|
-
} else {
|
|
138
|
-
options.onError();
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
_this.uploadIngList.push({
|
|
142
|
-
file: options.file,
|
|
143
|
-
fileId: fileId,
|
|
144
|
-
status: res.code == 200 ? "success" : "error",
|
|
145
|
-
url: ImgRes ? ImgRes.data : null
|
|
146
|
-
});
|
|
147
|
-
|
|
148
|
-
if (_this.uploadSize == _this.uploadIngSize) {
|
|
149
|
-
_this.onComplete(_this.uploadIngList);
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
onComplete && onComplete({
|
|
153
|
-
file: options.file,
|
|
154
|
-
fileId: fileId,
|
|
155
|
-
status: res.code == 200 ? "success" : "error"
|
|
156
|
-
});
|
|
157
|
-
_context.next = 20;
|
|
158
|
-
break;
|
|
159
|
-
|
|
160
|
-
case 16:
|
|
161
|
-
_context.prev = 16;
|
|
162
|
-
_context.t0 = _context["catch"](3);
|
|
163
|
-
|
|
164
|
-
if (_this.uploadSize == _this.uploadIngSize) {
|
|
165
|
-
_this.onComplete(_this.uploadIngList);
|
|
166
|
-
|
|
167
|
-
options.onError();
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
onComplete && onComplete({
|
|
171
|
-
file: options.file,
|
|
172
|
-
fileId: "",
|
|
173
|
-
status: "error"
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
case 20:
|
|
177
|
-
case "end":
|
|
178
|
-
return _context.stop();
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
}, _callee, null, [[3, 16]]);
|
|
182
|
-
}));
|
|
183
|
-
|
|
184
|
-
return function (_x) {
|
|
185
|
-
return _ref.apply(this, arguments);
|
|
35
|
+
_defineProperty(this, "uploadIngSize", 0);
|
|
36
|
+
_defineProperty(this, "uploadSize", 0);
|
|
37
|
+
_defineProperty(this, "uploadIngList", []);
|
|
38
|
+
_defineProperty(this, "customRequest", async options => {
|
|
39
|
+
const file = options.file;
|
|
40
|
+
const {
|
|
41
|
+
onComplete,
|
|
42
|
+
onProcess,
|
|
43
|
+
sliceSize
|
|
44
|
+
} = this.props;
|
|
45
|
+
const onProgress = totalProgress => {
|
|
46
|
+
options.onProgress({
|
|
47
|
+
percent: totalProgress
|
|
48
|
+
}, file);
|
|
49
|
+
this.onProcess({
|
|
50
|
+
percent: totalProgress,
|
|
51
|
+
file: file
|
|
52
|
+
});
|
|
53
|
+
onProcess && onProcess({
|
|
54
|
+
percent: totalProgress,
|
|
55
|
+
file: file
|
|
56
|
+
});
|
|
186
57
|
};
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
58
|
+
try {
|
|
59
|
+
const res = await upload({
|
|
60
|
+
file: file,
|
|
61
|
+
onProgress: onProgress,
|
|
62
|
+
partSize: sliceSize
|
|
63
|
+
}, this.props.requestConfig);
|
|
64
|
+
this.uploadIngSize = this.uploadIngSize + 1;
|
|
65
|
+
let fileId = null;
|
|
66
|
+
let ImgRes = null;
|
|
67
|
+
if (res.code == 200) {
|
|
68
|
+
fileId = res.data.attachId;
|
|
69
|
+
options.onSuccess();
|
|
70
|
+
} else {
|
|
71
|
+
options.onError();
|
|
72
|
+
}
|
|
73
|
+
this.uploadIngList.push({
|
|
74
|
+
file: options.file,
|
|
75
|
+
fileId: fileId,
|
|
76
|
+
status: res.code == 200 ? "success" : "error",
|
|
77
|
+
url: ImgRes ? ImgRes.data : null
|
|
78
|
+
});
|
|
79
|
+
if (this.uploadSize == this.uploadIngSize) {
|
|
80
|
+
this.onComplete(this.uploadIngList);
|
|
81
|
+
}
|
|
82
|
+
onComplete && onComplete({
|
|
83
|
+
file: options.file,
|
|
84
|
+
fileId: fileId,
|
|
85
|
+
status: res.code == 200 ? "success" : "error"
|
|
86
|
+
});
|
|
87
|
+
} catch (e) {
|
|
88
|
+
if (this.uploadSize == this.uploadIngSize) {
|
|
89
|
+
this.onComplete(this.uploadIngList);
|
|
90
|
+
options.onError();
|
|
91
|
+
}
|
|
92
|
+
onComplete && onComplete({
|
|
93
|
+
file: options.file,
|
|
94
|
+
fileId: "",
|
|
95
|
+
status: "error"
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
componentDidMount() {
|
|
101
|
+
if (this.props.fileList) {
|
|
102
|
+
this.convertFileList();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
convertFileList(list) {
|
|
106
|
+
const {
|
|
107
|
+
fileList
|
|
108
|
+
} = this.props;
|
|
109
|
+
const newFileList = [];
|
|
110
|
+
let oldList = list ? list : fileList;
|
|
111
|
+
oldList.map(item => {
|
|
112
|
+
let temp = _objectSpread(_objectSpread({}, item), {}, {
|
|
113
|
+
name: item.name || item.fileName,
|
|
114
|
+
type: item.type,
|
|
115
|
+
size: item.size
|
|
116
|
+
});
|
|
117
|
+
newFileList.push(temp);
|
|
118
|
+
});
|
|
119
|
+
this.setState({
|
|
120
|
+
fileList: newFileList,
|
|
121
|
+
fileListStore: fileList
|
|
122
|
+
});
|
|
190
123
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
value: function componentDidMount() {
|
|
195
|
-
if (this.props.fileList) {
|
|
124
|
+
componentDidUpdate(preProps, preState) {
|
|
125
|
+
if (this.props.fileList) {
|
|
126
|
+
if (JSON.stringify(this.props.fileList) !== JSON.stringify(this.state.fileListStore)) {
|
|
196
127
|
this.convertFileList();
|
|
197
128
|
}
|
|
198
129
|
}
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
130
|
+
}
|
|
131
|
+
getFileList() {
|
|
132
|
+
return this.state.fileList;
|
|
133
|
+
}
|
|
134
|
+
setFileList(fileList) {
|
|
135
|
+
this.convertFileList(fileList);
|
|
136
|
+
}
|
|
137
|
+
async beforeUpload(file, ofileList) {
|
|
138
|
+
let {
|
|
139
|
+
maxSize = 100,
|
|
140
|
+
allowFileSuffix,
|
|
141
|
+
checkSameFile = true,
|
|
142
|
+
maxCount,
|
|
143
|
+
showUploadList,
|
|
144
|
+
fileList: propsList,
|
|
145
|
+
onListChange
|
|
146
|
+
} = this.props;
|
|
147
|
+
let {
|
|
148
|
+
fileList,
|
|
149
|
+
fileListStore
|
|
150
|
+
} = this.state;
|
|
151
|
+
let size;
|
|
152
|
+
if (allowFileSuffix && !this.checkFileType(file)) {
|
|
153
|
+
message.error("".concat(file.name, "\u6587\u4EF6\u7C7B\u578B\u4E0D\u5141\u8BB8\u4E0A\u4F20\uFF0C\u8BF7\u4E0A\u4F20\u540E\u7F00\u4E3A").concat(allowFileSuffix, "\u7684\u7C7B\u578B\u6587\u4EF6\uFF01"));
|
|
154
|
+
return false;
|
|
218
155
|
}
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
156
|
+
if (maxSize !== false) {
|
|
157
|
+
if (maxSize === true) {
|
|
158
|
+
maxSize = 100;
|
|
159
|
+
}
|
|
160
|
+
size = maxSize * 1024 * 1024;
|
|
161
|
+
if (size < file.size) {
|
|
162
|
+
message.error("".concat(file.name, "\u6587\u4EF6\u5927\u5C0F\u8D85\u8FC7").concat(maxSize, "M\uFF0C\u8BF7\u91CD\u65B0\u4E0A\u4F20\uFF01"));
|
|
163
|
+
return false;
|
|
226
164
|
}
|
|
227
165
|
}
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
166
|
+
let fileNames = [];
|
|
167
|
+
if (checkSameFile) {
|
|
168
|
+
const checkList = this.props.fileList ? fileListStore : fileList;
|
|
169
|
+
checkList.map(item => {
|
|
170
|
+
fileNames.push(item.name || item.fileName);
|
|
171
|
+
});
|
|
172
|
+
if (fileNames.indexOf(file.name) > -1 && showUploadList !== false) {
|
|
173
|
+
message.error("\u6587\u4EF6".concat(file.name, "\u5DF2\u5728\u4E0A\u4F20\u5217\u8868\u4E2D\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9\u6587\u4EF6\uFF01"));
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
232
176
|
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
177
|
+
if (this.props.beforeUpload) {
|
|
178
|
+
const res = await this.props.beforeUpload(file, ofileList);
|
|
179
|
+
if (res === false) {
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
237
182
|
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
_this$state = this.state, fileList = _this$state.fileList, fileListStore = _this$state.fileListStore;
|
|
252
|
-
|
|
253
|
-
if (!(allowFileSuffix && !this.checkFileType(file))) {
|
|
254
|
-
_context3.next = 5;
|
|
255
|
-
break;
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
message.error("".concat(file.name, "\u6587\u4EF6\u7C7B\u578B\u4E0D\u5141\u8BB8\u4E0A\u4F20\uFF0C\u8BF7\u4E0A\u4F20\u540E\u7F00\u4E3A").concat(allowFileSuffix, "\u7684\u7C7B\u578B\u6587\u4EF6\uFF01"));
|
|
259
|
-
return _context3.abrupt("return", false);
|
|
260
|
-
|
|
261
|
-
case 5:
|
|
262
|
-
if (!(maxSize !== false)) {
|
|
263
|
-
_context3.next = 11;
|
|
264
|
-
break;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
if (maxSize === true) {
|
|
268
|
-
maxSize = 100;
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
size = maxSize * 1024 * 1024;
|
|
272
|
-
|
|
273
|
-
if (!(size < file.size)) {
|
|
274
|
-
_context3.next = 11;
|
|
275
|
-
break;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
message.error("".concat(file.name, "\u6587\u4EF6\u5927\u5C0F\u8D85\u8FC7").concat(maxSize, "M\uFF0C\u8BF7\u91CD\u65B0\u4E0A\u4F20\uFF01"));
|
|
279
|
-
return _context3.abrupt("return", false);
|
|
280
|
-
|
|
281
|
-
case 11:
|
|
282
|
-
fileNames = [];
|
|
283
|
-
|
|
284
|
-
if (!checkSameFile) {
|
|
285
|
-
_context3.next = 18;
|
|
286
|
-
break;
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
checkList = this.props.fileList ? fileListStore : fileList;
|
|
290
|
-
checkList.map(function (item) {
|
|
291
|
-
fileNames.push(item.name || item.fileName);
|
|
292
|
-
});
|
|
293
|
-
|
|
294
|
-
if (!(fileNames.indexOf(file.name) > -1 && showUploadList !== false)) {
|
|
295
|
-
_context3.next = 18;
|
|
296
|
-
break;
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
message.error("\u6587\u4EF6".concat(file.name, "\u5DF2\u5728\u4E0A\u4F20\u5217\u8868\u4E2D\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9\u6587\u4EF6\uFF01"));
|
|
300
|
-
return _context3.abrupt("return", false);
|
|
301
|
-
|
|
302
|
-
case 18:
|
|
303
|
-
if (!this.props.beforeUpload) {
|
|
304
|
-
_context3.next = 24;
|
|
305
|
-
break;
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
_context3.next = 21;
|
|
309
|
-
return this.props.beforeUpload(file, ofileList);
|
|
310
|
-
|
|
311
|
-
case 21:
|
|
312
|
-
res = _context3.sent;
|
|
313
|
-
|
|
314
|
-
if (!(res === false)) {
|
|
315
|
-
_context3.next = 24;
|
|
316
|
-
break;
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
return _context3.abrupt("return", false);
|
|
320
|
-
|
|
321
|
-
case 24:
|
|
322
|
-
newList = _toConsumableArray(fileList);
|
|
323
|
-
ofileList.map( /*#__PURE__*/function () {
|
|
324
|
-
var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(item) {
|
|
325
|
-
var temp;
|
|
326
|
-
return regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
327
|
-
while (1) {
|
|
328
|
-
switch (_context2.prev = _context2.next) {
|
|
329
|
-
case 0:
|
|
330
|
-
if (!(allowFileSuffix && !_this2.checkFileType(item) || size < item.size || checkSameFile && fileNames.indexOf(item.name) > -1)) {
|
|
331
|
-
temp = {
|
|
332
|
-
fileName: item.name,
|
|
333
|
-
percent: 0,
|
|
334
|
-
status: "uploading",
|
|
335
|
-
uid: item.uid,
|
|
336
|
-
name: item.name,
|
|
337
|
-
type: item.type,
|
|
338
|
-
size: item.size
|
|
339
|
-
};
|
|
340
|
-
newList.push(temp);
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
case 1:
|
|
344
|
-
case "end":
|
|
345
|
-
return _context2.stop();
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
}, _callee2);
|
|
349
|
-
}));
|
|
350
|
-
|
|
351
|
-
return function (_x4) {
|
|
352
|
-
return _ref2.apply(this, arguments);
|
|
353
|
-
};
|
|
354
|
-
}());
|
|
355
|
-
|
|
356
|
-
if (maxCount && newList.length > maxCount) {
|
|
357
|
-
length = newList.length - maxCount;
|
|
358
|
-
|
|
359
|
-
for (i = 0; i < length; i++) {
|
|
360
|
-
newList.splice(0, 1);
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
onListChange && onListChange(newList);
|
|
365
|
-
this.setState({
|
|
366
|
-
fileList: newList
|
|
367
|
-
});
|
|
368
|
-
this.uploadSize = ofileList.length;
|
|
369
|
-
|
|
370
|
-
case 30:
|
|
371
|
-
case "end":
|
|
372
|
-
return _context3.stop();
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
}, _callee3, this);
|
|
376
|
-
}));
|
|
377
|
-
|
|
378
|
-
function beforeUpload(_x2, _x3) {
|
|
379
|
-
return _beforeUpload.apply(this, arguments);
|
|
183
|
+
const newList = [...fileList];
|
|
184
|
+
ofileList.map(async item => {
|
|
185
|
+
if (!(allowFileSuffix && !this.checkFileType(item) || size < item.size || checkSameFile && fileNames.indexOf(item.name) > -1)) {
|
|
186
|
+
const temp = {
|
|
187
|
+
fileName: item.name,
|
|
188
|
+
percent: 0,
|
|
189
|
+
status: "uploading",
|
|
190
|
+
uid: item.uid,
|
|
191
|
+
name: item.name,
|
|
192
|
+
type: item.type,
|
|
193
|
+
size: item.size
|
|
194
|
+
};
|
|
195
|
+
newList.push(temp);
|
|
380
196
|
}
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
value: function checkFileType(file) {
|
|
387
|
-
var allowFileSuffix = this.props.allowFileSuffix;
|
|
388
|
-
var names = file.name.split(".");
|
|
389
|
-
var suffix = names[names.length - 1];
|
|
390
|
-
|
|
391
|
-
if (allowFileSuffix.indexOf(suffix) > -1) {
|
|
392
|
-
return true;
|
|
197
|
+
});
|
|
198
|
+
if (maxCount && newList.length > maxCount) {
|
|
199
|
+
let length = newList.length - maxCount;
|
|
200
|
+
for (let i = 0; i < length; i++) {
|
|
201
|
+
newList.splice(0, 1);
|
|
393
202
|
}
|
|
394
|
-
|
|
395
|
-
return false;
|
|
396
203
|
}
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
newList.push(newFile);
|
|
413
|
-
});
|
|
414
|
-
this.setState({
|
|
415
|
-
fileList: newList
|
|
416
|
-
});
|
|
417
|
-
onListChange && onListChange(fileList);
|
|
204
|
+
onListChange && onListChange(newList);
|
|
205
|
+
this.setState({
|
|
206
|
+
fileList: newList
|
|
207
|
+
});
|
|
208
|
+
this.uploadSize = ofileList.length;
|
|
209
|
+
}
|
|
210
|
+
checkFileType(file) {
|
|
211
|
+
const {
|
|
212
|
+
allowFileSuffix
|
|
213
|
+
} = this.props;
|
|
214
|
+
const names = file.name.split(".");
|
|
215
|
+
const suffix = names[names.length - 1];
|
|
216
|
+
if (allowFileSuffix.indexOf(suffix) > -1) {
|
|
217
|
+
return true;
|
|
418
218
|
}
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
var newFile;
|
|
438
|
-
return regeneratorRuntime.wrap(function _callee5$(_context5) {
|
|
439
|
-
while (1) {
|
|
440
|
-
switch (_context5.prev = _context5.next) {
|
|
441
|
-
case 0:
|
|
442
|
-
newFile = _objectSpread({}, item);
|
|
443
|
-
files.map( /*#__PURE__*/function () {
|
|
444
|
-
var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(file) {
|
|
445
|
-
var url;
|
|
446
|
-
return regeneratorRuntime.wrap(function _callee4$(_context4) {
|
|
447
|
-
while (1) {
|
|
448
|
-
switch (_context4.prev = _context4.next) {
|
|
449
|
-
case 0:
|
|
450
|
-
if (file.file.uid == item.uid) {
|
|
451
|
-
newFile.status = file.status == "success" ? "done" : file.status;
|
|
452
|
-
newFile.fileId = file.fileId;
|
|
453
|
-
newFile.url = file.url;
|
|
454
|
-
|
|
455
|
-
if (!newVersion) {
|
|
456
|
-
url = "/jquick-resource/oss/endpoint/download-files?attachId=".concat(file.fileId, "&_tpk=").concat(window.localStorage.getItem("token"));
|
|
457
|
-
newFile.url = requestConfig.prefix ? requestConfig.prefix + url : "/api" + url;
|
|
458
|
-
}
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
case 1:
|
|
462
|
-
case "end":
|
|
463
|
-
return _context4.stop();
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
}, _callee4);
|
|
467
|
-
}));
|
|
468
|
-
|
|
469
|
-
return function (_x8) {
|
|
470
|
-
return _ref5.apply(this, arguments);
|
|
471
|
-
};
|
|
472
|
-
}());
|
|
473
|
-
newList.push(newFile);
|
|
474
|
-
|
|
475
|
-
case 3:
|
|
476
|
-
case "end":
|
|
477
|
-
return _context5.stop();
|
|
478
|
-
}
|
|
479
|
-
}
|
|
480
|
-
}, _callee5);
|
|
481
|
-
}));
|
|
482
|
-
|
|
483
|
-
return function (_x6, _x7) {
|
|
484
|
-
return _ref4.apply(this, arguments);
|
|
485
|
-
};
|
|
486
|
-
}());
|
|
487
|
-
this.setState({
|
|
488
|
-
fileList: [].concat(newList)
|
|
489
|
-
});
|
|
490
|
-
onListChange = this.props.onListChange;
|
|
491
|
-
onListChange && onListChange(newList);
|
|
492
|
-
|
|
493
|
-
case 10:
|
|
494
|
-
case "end":
|
|
495
|
-
return _context6.stop();
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
|
-
}, _callee6, this);
|
|
499
|
-
}));
|
|
500
|
-
|
|
501
|
-
function onComplete(_x5) {
|
|
502
|
-
return _onComplete.apply(this, arguments);
|
|
219
|
+
return false;
|
|
220
|
+
}
|
|
221
|
+
onProcess(_ref) {
|
|
222
|
+
let {
|
|
223
|
+
percent,
|
|
224
|
+
file
|
|
225
|
+
} = _ref;
|
|
226
|
+
const {
|
|
227
|
+
fileList
|
|
228
|
+
} = this.state;
|
|
229
|
+
const {
|
|
230
|
+
onListChange
|
|
231
|
+
} = this.props;
|
|
232
|
+
const newList = [];
|
|
233
|
+
fileList.map(item => {
|
|
234
|
+
const newFile = _objectSpread({}, item);
|
|
235
|
+
if (file.uid == item.uid) {
|
|
236
|
+
newFile.percent = percent;
|
|
503
237
|
}
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
238
|
+
newList.push(newFile);
|
|
239
|
+
});
|
|
240
|
+
this.setState({
|
|
241
|
+
fileList: newList
|
|
242
|
+
});
|
|
243
|
+
onListChange && onListChange(fileList);
|
|
244
|
+
}
|
|
245
|
+
async onComplete(files) {
|
|
246
|
+
this.uploadIngSize = 0;
|
|
247
|
+
this.uploadSize = 0;
|
|
248
|
+
this.uploadIngList = [];
|
|
249
|
+
const {
|
|
250
|
+
fileList
|
|
251
|
+
} = this.state;
|
|
252
|
+
const {
|
|
253
|
+
newVersion,
|
|
254
|
+
requestConfig = {}
|
|
255
|
+
} = this.props;
|
|
256
|
+
const newList = [];
|
|
257
|
+
fileList.map(async (item, index) => {
|
|
258
|
+
const newFile = _objectSpread({}, item);
|
|
259
|
+
files.map(async file => {
|
|
260
|
+
if (file.file.uid == item.uid) {
|
|
261
|
+
newFile.status = file.status == "success" ? "done" : file.status;
|
|
262
|
+
newFile.fileId = file.fileId;
|
|
263
|
+
newFile.url = file.url;
|
|
264
|
+
if (!newVersion) {
|
|
265
|
+
let url = "/jquick-resource/oss/endpoint/download-files?attachId=".concat(file.fileId, "&_tpk=").concat(window.localStorage.getItem("token"));
|
|
266
|
+
newFile.url = requestConfig.prefix ? requestConfig.prefix + url : "/api" + url;
|
|
267
|
+
}
|
|
517
268
|
}
|
|
518
269
|
});
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
270
|
+
newList.push(newFile);
|
|
271
|
+
});
|
|
272
|
+
this.setState({
|
|
273
|
+
fileList: [...newList]
|
|
274
|
+
});
|
|
275
|
+
const {
|
|
276
|
+
onListChange
|
|
277
|
+
} = this.props;
|
|
278
|
+
onListChange && onListChange(newList);
|
|
279
|
+
}
|
|
280
|
+
onDelete(file) {
|
|
281
|
+
const {
|
|
282
|
+
fileList
|
|
283
|
+
} = this.state;
|
|
284
|
+
const {
|
|
285
|
+
onListChange
|
|
286
|
+
} = this.props;
|
|
287
|
+
const newList = [];
|
|
288
|
+
fileList.map(item => {
|
|
289
|
+
//通过文件名判断,上传是文件名是唯一的
|
|
290
|
+
if (item.name !== file.name || item.fileId !== file.fileId || item.uid !== file.uid) {
|
|
291
|
+
newList.push(item);
|
|
292
|
+
}
|
|
293
|
+
});
|
|
294
|
+
this.setState({
|
|
295
|
+
fileList: newList
|
|
296
|
+
});
|
|
297
|
+
onListChange && onListChange(newList);
|
|
298
|
+
}
|
|
299
|
+
render() {
|
|
300
|
+
let {
|
|
301
|
+
fileList,
|
|
302
|
+
fileCard,
|
|
303
|
+
showUploadList = {
|
|
534
304
|
showDownloadIcon: true,
|
|
535
305
|
showPreviewIcon: false,
|
|
536
306
|
showRemoveIcon: true,
|
|
537
307
|
downloadIcon: null,
|
|
538
308
|
removeIcon: null,
|
|
539
309
|
previewIcon: null
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
}
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
}
|
|
575
|
-
},
|
|
576
|
-
style: {
|
|
577
|
-
cursor: "pointer"
|
|
310
|
+
},
|
|
311
|
+
requestConfig = {}
|
|
312
|
+
} = this.props;
|
|
313
|
+
const newprops = omit(this.props, ["sliceSize", "maxSize", "onComplete", "onProcess", "allowFileSuffix", "useDefaultList", "fileCard", "onListChange", "newVersion", "requestConfig"]);
|
|
314
|
+
let defaultProps = {
|
|
315
|
+
customRequest: this.customRequest.bind(this),
|
|
316
|
+
multiple: true
|
|
317
|
+
};
|
|
318
|
+
if (fileCard) {
|
|
319
|
+
defaultProps = _objectSpread(_objectSpread({}, defaultProps), {}, {
|
|
320
|
+
itemRender: (originNode, file, currFileList) => {
|
|
321
|
+
const name = file.name || file.fileName;
|
|
322
|
+
const names = name === null || name === void 0 ? void 0 : name.split(".");
|
|
323
|
+
const suffix = names ? names[names.length - 1] : "";
|
|
324
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
325
|
+
className: getLess(styles, "file-item")
|
|
326
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
327
|
+
className: cls(getLess(styles, "content"), {
|
|
328
|
+
[getLess(styles, "content_error")]: file.status == "error"
|
|
329
|
+
})
|
|
330
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
331
|
+
className: getLess(styles, "mark-picture")
|
|
332
|
+
}, /*#__PURE__*/React.createElement(FileIcon, {
|
|
333
|
+
suffix: suffix,
|
|
334
|
+
fileId: file.fileId
|
|
335
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
336
|
+
className: getLess(styles, "name")
|
|
337
|
+
}, file.name || file.fileName), /*#__PURE__*/React.createElement("div", {
|
|
338
|
+
className: getLess(styles, "icon")
|
|
339
|
+
}, showUploadList.showPreviewIcon && file.status == "done" && /*#__PURE__*/React.createElement("div", {
|
|
340
|
+
onClick: () => {
|
|
341
|
+
if (this.props.onPreview) {
|
|
342
|
+
this.props.onPreview(file);
|
|
343
|
+
} else {
|
|
344
|
+
previewDocument(file.fileId, this.props.requestConfig || {});
|
|
578
345
|
}
|
|
579
|
-
},
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
}
|
|
590
|
-
}, showUploadList.downloadIcon ? showUploadList.downloadIcon : /*#__PURE__*/React.createElement(DownloadOutlined, null)), showUploadList.showRemoveIcon && /*#__PURE__*/React.createElement("div", {
|
|
591
|
-
onClick: function onClick() {
|
|
592
|
-
if (_this3.props.onRemove) {
|
|
593
|
-
_this3.props.onRemove(file);
|
|
594
|
-
} else {
|
|
595
|
-
_this3.onDelete(file);
|
|
596
|
-
}
|
|
597
|
-
},
|
|
598
|
-
style: {
|
|
599
|
-
cursor: "pointer"
|
|
346
|
+
},
|
|
347
|
+
style: {
|
|
348
|
+
cursor: "pointer"
|
|
349
|
+
}
|
|
350
|
+
}, showUploadList.downloadIcon ? showUploadList.downloadIcon : /*#__PURE__*/React.createElement(EyeOutlined, null)), showUploadList.showDownloadIcon && file.status == "done" && /*#__PURE__*/React.createElement("div", {
|
|
351
|
+
onClick: () => {
|
|
352
|
+
if (this.props.onDownload) {
|
|
353
|
+
this.props.onDownload(file);
|
|
354
|
+
} else {
|
|
355
|
+
download(file.fileId, true, requestConfig);
|
|
600
356
|
}
|
|
601
|
-
},
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
357
|
+
},
|
|
358
|
+
style: {
|
|
359
|
+
cursor: "pointer"
|
|
360
|
+
}
|
|
361
|
+
}, showUploadList.downloadIcon ? showUploadList.downloadIcon : /*#__PURE__*/React.createElement(DownloadOutlined, null)), showUploadList.showRemoveIcon && /*#__PURE__*/React.createElement("div", {
|
|
362
|
+
onClick: () => {
|
|
363
|
+
if (this.props.onRemove) {
|
|
364
|
+
this.props.onRemove(file);
|
|
365
|
+
} else {
|
|
366
|
+
this.onDelete(file);
|
|
607
367
|
}
|
|
608
|
-
}
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
} else {
|
|
612
|
-
defaultProps = _objectSpread(_objectSpread({}, defaultProps), {}, {
|
|
613
|
-
onDownload: function onDownload(file) {
|
|
614
|
-
download(file.fileId, true, requestConfig);
|
|
615
|
-
},
|
|
616
|
-
onRemove: function onRemove(file) {
|
|
617
|
-
_this3.onDelete(file);
|
|
618
|
-
},
|
|
619
|
-
onPreview: function onPreview(file) {
|
|
620
|
-
if (file !== null && file !== void 0 && file.fileId) {
|
|
621
|
-
previewDocument(file.fileId, requestConfig);
|
|
368
|
+
},
|
|
369
|
+
style: {
|
|
370
|
+
cursor: "pointer"
|
|
622
371
|
}
|
|
623
|
-
},
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
372
|
+
}, showUploadList.downloadIcon ? showUploadList.downloadIcon : /*#__PURE__*/React.createElement(DeleteOutlined, null)))), file.status == "uploading" && /*#__PURE__*/React.createElement("div", {
|
|
373
|
+
className: getLess(styles, "process")
|
|
374
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
375
|
+
className: getLess(styles, "percent"),
|
|
376
|
+
style: {
|
|
377
|
+
width: file.percent + "%"
|
|
378
|
+
}
|
|
379
|
+
})));
|
|
380
|
+
}
|
|
381
|
+
});
|
|
382
|
+
} else {
|
|
383
|
+
defaultProps = _objectSpread(_objectSpread({}, defaultProps), {}, {
|
|
384
|
+
onDownload: file => {
|
|
385
|
+
download(file.fileId, true, requestConfig);
|
|
386
|
+
},
|
|
387
|
+
onRemove: file => {
|
|
388
|
+
this.onDelete(file);
|
|
389
|
+
},
|
|
390
|
+
onPreview: file => {
|
|
391
|
+
if (file !== null && file !== void 0 && file.fileId) {
|
|
392
|
+
previewDocument(file.fileId, requestConfig);
|
|
393
|
+
}
|
|
394
|
+
},
|
|
395
|
+
showUploadList: _objectSpread({}, showUploadList)
|
|
396
|
+
});
|
|
642
397
|
}
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
}
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdXBsb2FkL0RyYWdnZXIudHN4Il0sIm5hbWVzIjpbIlJlYWN0IiwiZmlsZSIsIm1lc3NhZ2UiLCJvbWl0IiwiZ2V0TGVzcyIsInN0eWxlcyIsImNscyIsIkZpbGVJY29uIiwiRGVsZXRlT3V0bGluZWQiLCJEb3dubG9hZE91dGxpbmVkIiwiRXllT3V0bGluZWQiLCJ1cGxvYWQiLCJkb3dubG9hZCIsInByZXZpZXdEb2N1bWVudCIsIkRyYWdnZXIiLCJOc2NVcGxvYWREcmFnZ2VyIiwiZmlsZUxpc3QiLCJ2aWV3SWQiLCJmaWxlTGlzdFN0b3JlIiwiZmlsZU5hbWVzIiwib3B0aW9ucyIsInByb3BzIiwib25Db21wbGV0ZSIsIm9uUHJvY2VzcyIsInNsaWNlU2l6ZSIsIm9uUHJvZ3Jlc3MiLCJ0b3RhbFByb2dyZXNzIiwicGVyY2VudCIsInBhcnRTaXplIiwicmVxdWVzdENvbmZpZyIsInJlcyIsInVwbG9hZEluZ1NpemUiLCJmaWxlSWQiLCJJbWdSZXMiLCJjb2RlIiwiZGF0YSIsImF0dGFjaElkIiwib25TdWNjZXNzIiwib25FcnJvciIsInVwbG9hZEluZ0xpc3QiLCJwdXNoIiwic3RhdHVzIiwidXJsIiwidXBsb2FkU2l6ZSIsImNvbnZlcnRGaWxlTGlzdCIsImxpc3QiLCJuZXdGaWxlTGlzdCIsIm9sZExpc3QiLCJtYXAiLCJpdGVtIiwidGVtcCIsIm5hbWUiLCJmaWxlTmFtZSIsInR5cGUiLCJzaXplIiwic2V0U3RhdGUiLCJwcmVQcm9wcyIsInByZVN0YXRlIiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YXRlIiwib2ZpbGVMaXN0IiwibWF4U2l6ZSIsImFsbG93RmlsZVN1ZmZpeCIsImNoZWNrU2FtZUZpbGUiLCJtYXhDb3VudCIsInNob3dVcGxvYWRMaXN0IiwicHJvcHNMaXN0Iiwib25MaXN0Q2hhbmdlIiwiY2hlY2tGaWxlVHlwZSIsImVycm9yIiwiY2hlY2tMaXN0IiwiaW5kZXhPZiIsImJlZm9yZVVwbG9hZCIsIm5ld0xpc3QiLCJ1aWQiLCJsZW5ndGgiLCJpIiwic3BsaWNlIiwibmFtZXMiLCJzcGxpdCIsInN1ZmZpeCIsIm5ld0ZpbGUiLCJmaWxlcyIsIm5ld1ZlcnNpb24iLCJpbmRleCIsIndpbmRvdyIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJwcmVmaXgiLCJmaWxlQ2FyZCIsInNob3dEb3dubG9hZEljb24iLCJzaG93UHJldmlld0ljb24iLCJzaG93UmVtb3ZlSWNvbiIsImRvd25sb2FkSWNvbiIsInJlbW92ZUljb24iLCJwcmV2aWV3SWNvbiIsIm5ld3Byb3BzIiwiZGVmYXVsdFByb3BzIiwiY3VzdG9tUmVxdWVzdCIsImJpbmQiLCJtdWx0aXBsZSIsIml0ZW1SZW5kZXIiLCJvcmlnaW5Ob2RlIiwiY3VyckZpbGVMaXN0Iiwib25QcmV2aWV3IiwiY3Vyc29yIiwib25Eb3dubG9hZCIsIm9uUmVtb3ZlIiwib25EZWxldGUiLCJ3aWR0aCIsIlB1cmVDb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUtBLEtBQVosTUFBdUIsT0FBdkI7QUFFQSxPQUFPQyxJQUFQLE1BQWlCLFVBQWpCO0FBQ0EsT0FBT0MsT0FBUCxNQUFvQixZQUFwQjtBQUVBLE9BQU9DLElBQVAsTUFBaUIsU0FBakI7QUFDQSxTQUFTQyxPQUFULFFBQXdCLGFBQXhCO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixjQUFuQjtBQUNBLE9BQU9DLEdBQVAsTUFBZ0IsWUFBaEI7QUFDQSxPQUFPQyxRQUFQLE1BQXFCLG9CQUFyQjtBQUNBLFNBQ0VDLGNBREYsRUFFRUMsZ0JBRkYsRUFHRUMsV0FIRixRQUlPLG1CQUpQO0FBTUEsSUFBUUMsTUFBUixHQUE4Q1YsSUFBOUMsQ0FBUVUsTUFBUjtBQUFBLElBQWdCQyxRQUFoQixHQUE4Q1gsSUFBOUMsQ0FBZ0JXLFFBQWhCO0FBQUEsSUFBMEJDLGVBQTFCLEdBQThDWixJQUE5QyxD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Q0x1RSxRQUFBQSxZQUFZLG1DQUNQQSxZQURPO0FBRVZTLFVBQUFBLFVBQVUsRUFBRSxvQkFBQzFHLElBQUQsRUFBZTtBQUN6QlcsWUFBQUEsUUFBUSxDQUFDWCxJQUFJLENBQUMrQixNQUFOLEVBQWMsSUFBZCxFQUFvQkgsYUFBcEIsQ0FBUjtBQUNELFdBSlM7QUFLVitFLFVBQUFBLFFBQVEsRUFBRSxrQkFBQzNHLElBQUQsRUFBVTtBQUNsQixZQUFBLE1BQUksQ0FBQzRHLFFBQUwsQ0FBYzVHLElBQWQ7QUFDRCxXQVBTO0FBUVZ3RyxVQUFBQSxTQUFTLEVBQUUsbUJBQUN4RyxJQUFELEVBQWU7QUFDeEIsZ0JBQUlBLElBQUosYUFBSUEsSUFBSixlQUFJQSxJQUFJLENBQUUrQixNQUFWLEVBQWtCO0FBQ2hCbkIsY0FBQUEsZUFBZSxDQUFDWixJQUFJLENBQUMrQixNQUFOLEVBQWNILGFBQWQsQ0FBZjtBQUNEO0FBQ0YsV0FaUztBQWFWcUMsVUFBQUEsY0FBYyxvQkFBT0EsY0FBUDtBQWJKLFVBQVo7QUFlRDs7QUFDRCwwQkFDRSx1REFDRSxvQkFBQyxPQUFELGVBQ01nQyxZQUROLEVBRU1ELFFBRk47QUFHRSxRQUFBLFlBQVksRUFBRSxLQUFLeEIsWUFBTCxDQUFrQjJCLElBQWxCLENBQXVCLElBQXZCLENBSGhCO0FBSUUsUUFBQSxRQUFRLEVBQUUsS0FBS3hDLEtBQUwsQ0FBVzVDLFFBSnZCLENBS0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBZEYsU0FERixDQURGO0FBb0JEOzs7O0VBN1oyQ2hCLEtBQUssQ0FBQytHLGE7O1NBQS9CaEcsZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgVXBsb2FkLCBVcGxvYWRQcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCBmaWxlIGZyb20gXCJuc2MtZmlsZVwiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vbWVzc2FnZVwiO1xyXG5pbXBvcnQgd2l0aFpoTG9jYWxlIGZyb20gXCIuLi9jb21tb24vd2l0aFpoTG9jYWxlXCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCB7IGdldExlc3MgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9pbmRleC5sZXNzXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IEZpbGVJY29uIGZyb20gXCIuLi9jb21tb24vRmlsZUljb25cIjtcclxuaW1wb3J0IHtcclxuICBEZWxldGVPdXRsaW5lZCxcclxuICBEb3dubG9hZE91dGxpbmVkLFxyXG4gIEV5ZU91dGxpbmVkLFxyXG59IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgUGRmVmlld2VyIGZyb20gXCIuLi9wZGZ2aXdlclwiO1xyXG5jb25zdCB7IHVwbG9hZCwgZG93bmxvYWQsIHByZXZpZXdEb2N1bWVudCB9ID0gZmlsZTtcclxuY29uc3QgeyBEcmFnZ2VyIH0gPSBVcGxvYWQ7XHJcbmludGVyZmFjZSBJVXBsb2FkUHJvcHMgZXh0ZW5kcyBVcGxvYWRQcm9wcyB7XHJcbiAgc2xpY2VTaXplPzogbnVtYmVyO1xyXG4gIG1heFNpemU/OiBudW1iZXIgfCBib29sZWFuO1xyXG4gIG9uUHJvY2Vzcz86IChwcm9jZXNzKSA9PiB2b2lkO1xyXG4gIG9uQ29tcGxldGU/OiAoeyBmaWxlLCBmaWxlSWQsIHN0YXR1cyB9KSA9PiB2b2lkO1xyXG4gIGFsbG93RmlsZVN1ZmZpeD86IEFycmF5PFN0cmluZz47IC8v5YWB6K645LiK5Lyg5omp5bGV5ZCNLOS4jeW4pi5cclxuICB1c2VEZWZhdWx0TGlzdD86IGJvb2xlYW47IC8v5piv5ZCm5L2/55So6buY6K6k55qEZmlsZUxpc3RcclxuICBmaWxlQ2FyZD86IGJvb2xlYW47XHJcbiAgb25MaXN0Q2hhbmdlPzogYW55O1xyXG4gIGNoZWNrU2FtZUZpbGU/OiBib29sZWFuO1xyXG4gIHJlcXVlc3RDb25maWc/OiBhbnk7XHJcbiAgbmV3VmVyc2lvbj86IGJvb2xlYW47XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTnNjVXBsb2FkRHJhZ2dlciBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQ8XHJcbiAgSVVwbG9hZFByb3BzLFxyXG4gIGFueVxyXG4+IHtcclxuICBzdGF0ZSA9IHsgZmlsZUxpc3Q6IFtdLCB2aWV3SWQ6IFwiXCIsIGZpbGVMaXN0U3RvcmU6IFtdLCBmaWxlTmFtZXM6IFtdIH07XHJcbiAgdXBsb2FkSW5nU2l6ZSA9IDA7XHJcbiAgdXBsb2FkU2l6ZSA9IDA7XHJcbiAgdXBsb2FkSW5nTGlzdCA9IFtdO1xyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgaWYgKHRoaXMucHJvcHMuZmlsZUxpc3QpIHtcclxuICAgICAgdGhpcy5jb252ZXJ0RmlsZUxpc3QoKTtcclxuICAgIH1cclxuICB9XHJcbiAgY29udmVydEZpbGVMaXN0KGxpc3Q/OiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3RmlsZUxpc3QgPSBbXTtcclxuICAgIGxldCBvbGRMaXN0ID0gbGlzdCA/IGxpc3QgOiBmaWxlTGlzdDtcclxuICAgIG9sZExpc3QubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgbGV0IHRlbXAgPSB7XHJcbiAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICBuYW1lOiBpdGVtLm5hbWUgfHwgaXRlbS5maWxlTmFtZSxcclxuICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXHJcbiAgICAgICAgc2l6ZTogaXRlbS5zaXplLFxyXG4gICAgICB9O1xyXG4gICAgICBuZXdGaWxlTGlzdC5wdXNoKHRlbXApO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZmlsZUxpc3Q6IG5ld0ZpbGVMaXN0LFxyXG4gICAgICBmaWxlTGlzdFN0b3JlOiBmaWxlTGlzdCxcclxuICAgIH0pO1xyXG4gIH1cclxuICBjb21wb25lbnREaWRVcGRhdGUocHJlUHJvcHMsIHByZVN0YXRlKSB7XHJcbiAgICBpZiAodGhpcy5wcm9wcy5maWxlTGlzdCkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wcy5maWxlTGlzdCkgIT09XHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5zdGF0ZS5maWxlTGlzdFN0b3JlKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmNvbnZlcnRGaWxlTGlzdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldEZpbGVMaXN0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuZmlsZUxpc3Q7XHJcbiAgfVxyXG4gIHNldEZpbGVMaXN0KGZpbGVMaXN0OiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICB0aGlzLmNvbnZlcnRGaWxlTGlzdChmaWxlTGlzdCk7XHJcbiAgfVxyXG4gIGFzeW5jIGJlZm9yZVVwbG9hZChmaWxlLCBvZmlsZUxpc3QpIHtcclxuICAgIGxldCB7XHJcbiAgICAgIG1heFNpemUgPSAxMDAsXHJcbiAgICAgIGFsbG93RmlsZVN1ZmZpeCxcclxuICAgICAgY2hlY2tTYW1lRmlsZSA9IHRydWUsXHJcbiAgICAgIG1heENvdW50LFxyXG4gICAgICBzaG93VXBsb2FkTGlzdCxcclxuICAgICAgZmlsZUxpc3Q6IHByb3BzTGlzdCxcclxuICAgICAgb25MaXN0Q2hhbmdlLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgeyBmaWxlTGlzdCwgZmlsZUxpc3RTdG9yZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCBzaXplOiBudW1iZXI7XHJcbiAgICBpZiAoYWxsb3dGaWxlU3VmZml4ICYmICF0aGlzLmNoZWNrRmlsZVR5cGUoZmlsZSkpIHtcclxuICAgICAgbWVzc2FnZS5lcnJvcihcclxuICAgICAgICBgJHtmaWxlLm5hbWV95paH5Lu257G75Z6L5LiN5YWB6K645LiK5Lyg77yM6K+35LiK5Lyg5ZCO57yA5Li6JHthbGxvd0ZpbGVTdWZmaXh955qE57G75Z6L5paH5Lu277yBYFxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAobWF4U2l6ZSAhPT0gZmFsc2UpIHtcclxuICAgICAgaWYgKG1heFNpemUgPT09IHRydWUpIHtcclxuICAgICAgICBtYXhTaXplID0gMTAwO1xyXG4gICAgICB9XHJcbiAgICAgIHNpemUgPSBtYXhTaXplICogMTAyNCAqIDEwMjQ7XHJcbiAgICAgIGlmIChzaXplIDwgZmlsZS5zaXplKSB7XHJcbiAgICAgICAgbWVzc2FnZS5lcnJvcihgJHtmaWxlLm5hbWV95paH5Lu25aSn5bCP6LaF6L+HJHttYXhTaXplfU3vvIzor7fph43mlrDkuIrkvKDvvIFgKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBmaWxlTmFtZXMgPSBbXTtcclxuICAgIGlmIChjaGVja1NhbWVGaWxlKSB7XHJcbiAgICAgIGNvbnN0IGNoZWNrTGlzdCA9IHRoaXMucHJvcHMuZmlsZUxpc3QgPyBmaWxlTGlzdFN0b3JlIDogZmlsZUxpc3Q7XHJcbiAgICAgIGNoZWNrTGlzdC5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBmaWxlTmFtZXMucHVzaChpdGVtLm5hbWUgfHwgaXRlbS5maWxlTmFtZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKGZpbGVOYW1lcy5pbmRleE9mKGZpbGUubmFtZSkgPiAtMSAmJiBzaG93VXBsb2FkTGlzdCAhPT0gZmFsc2UpIHtcclxuICAgICAgICBtZXNzYWdlLmVycm9yKGDmlofku7Yke2ZpbGUubmFtZX3lt7LlnKjkuIrkvKDliJfooajkuK3vvIzor7fph43mlrDpgInmi6nmlofku7bvvIFgKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5wcm9wcy5iZWZvcmVVcGxvYWQpIHtcclxuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5wcm9wcy5iZWZvcmVVcGxvYWQoZmlsZSwgb2ZpbGVMaXN0KTtcclxuICAgICAgaWYgKHJlcyA9PT0gZmFsc2UpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IG5ld0xpc3QgPSBbLi4uZmlsZUxpc3RdO1xyXG4gICAgb2ZpbGVMaXN0Lm1hcChhc3luYyAoaXRlbSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIShcclxuICAgICAgICAgIChhbGxvd0ZpbGVTdWZmaXggJiYgIXRoaXMuY2hlY2tGaWxlVHlwZShpdGVtKSkgfHxcclxuICAgICAgICAgIHNpemUgPCBpdGVtLnNpemUgfHxcclxuICAgICAgICAgIChjaGVja1NhbWVGaWxlICYmIGZpbGVOYW1lcy5pbmRleE9mKGl0ZW0ubmFtZSkgPiAtMSlcclxuICAgICAgICApXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IHRlbXAgPSB7XHJcbiAgICAgICAgICBmaWxlTmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICAgICAgcGVyY2VudDogMCxcclxuICAgICAgICAgIHN0YXR1czogXCJ1cGxvYWRpbmdcIixcclxuICAgICAgICAgIHVpZDogaXRlbS51aWQsXHJcbiAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXHJcbiAgICAgICAgICBzaXplOiBpdGVtLnNpemUsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBuZXdMaXN0LnB1c2godGVtcCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChtYXhDb3VudCAmJiBuZXdMaXN0Lmxlbmd0aCA+IG1heENvdW50KSB7XHJcbiAgICAgIGxldCBsZW5ndGggPSBuZXdMaXN0Lmxlbmd0aCAtIG1heENvdW50O1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbmV3TGlzdC5zcGxpY2UoMCwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgZmlsZUxpc3Q6IG5ld0xpc3QgfSk7XHJcbiAgICB0aGlzLnVwbG9hZFNpemUgPSBvZmlsZUxpc3QubGVuZ3RoO1xyXG4gIH1cclxuICBjaGVja0ZpbGVUeXBlKGZpbGUpIHtcclxuICAgIGNvbnN0IHsgYWxsb3dGaWxlU3VmZml4IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmFtZXMgPSBmaWxlLm5hbWUuc3BsaXQoXCIuXCIpO1xyXG4gICAgY29uc3Qgc3VmZml4ID0gbmFtZXNbbmFtZXMubGVuZ3RoIC0gMV07XHJcbiAgICBpZiAoYWxsb3dGaWxlU3VmZml4LmluZGV4T2Yoc3VmZml4KSA+IC0xKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBvblByb2Nlc3MoeyBwZXJjZW50LCBmaWxlIH06IGFueSkge1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgb25MaXN0Q2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcbiAgICBmaWxlTGlzdC5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBuZXdGaWxlID0geyAuLi5pdGVtIH07XHJcbiAgICAgIGlmIChmaWxlLnVpZCA9PSBpdGVtLnVpZCkge1xyXG4gICAgICAgIG5ld0ZpbGUucGVyY2VudCA9IHBlcmNlbnQ7XHJcbiAgICAgIH1cclxuICAgICAgbmV3TGlzdC5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZmlsZUxpc3Q6IG5ld0xpc3QsXHJcbiAgICB9KTtcclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UoZmlsZUxpc3QpO1xyXG4gIH1cclxuICBhc3luYyBvbkNvbXBsZXRlKGZpbGVzKSB7XHJcbiAgICB0aGlzLnVwbG9hZEluZ1NpemUgPSAwO1xyXG4gICAgdGhpcy51cGxvYWRTaXplID0gMDtcclxuICAgIHRoaXMudXBsb2FkSW5nTGlzdCA9IFtdO1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgbmV3VmVyc2lvbiwgcmVxdWVzdENvbmZpZyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcblxyXG4gICAgZmlsZUxpc3QubWFwKGFzeW5jIChpdGVtOiBhbnksIGluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0ZpbGUgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgZmlsZXMubWFwKGFzeW5jIChmaWxlKSA9PiB7XHJcbiAgICAgICAgaWYgKGZpbGUuZmlsZS51aWQgPT0gaXRlbS51aWQpIHtcclxuICAgICAgICAgIG5ld0ZpbGUuc3RhdHVzID0gZmlsZS5zdGF0dXMgPT0gXCJzdWNjZXNzXCIgPyBcImRvbmVcIiA6IGZpbGUuc3RhdHVzO1xyXG4gICAgICAgICAgbmV3RmlsZS5maWxlSWQgPSBmaWxlLmZpbGVJZDtcclxuICAgICAgICAgIG5ld0ZpbGUudXJsID0gZmlsZS51cmw7XHJcbiAgICAgICAgICBpZiAoIW5ld1ZlcnNpb24pIHtcclxuICAgICAgICAgICAgbGV0IHVybCA9IGAvanF1aWNrLXJlc291cmNlL29zcy9lbmRwb2ludC9kb3dubG9hZC1maWxlcz9hdHRhY2hJZD0ke1xyXG4gICAgICAgICAgICAgIGZpbGUuZmlsZUlkXHJcbiAgICAgICAgICAgIH0mX3Rwaz0ke3dpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInRva2VuXCIpfWA7XHJcbiAgICAgICAgICAgIG5ld0ZpbGUudXJsID0gcmVxdWVzdENvbmZpZy5wcmVmaXhcclxuICAgICAgICAgICAgICA/IHJlcXVlc3RDb25maWcucHJlZml4ICsgdXJsXHJcbiAgICAgICAgICAgICAgOiBcIi9hcGlcIiArIHVybDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBuZXdMaXN0LnB1c2gobmV3RmlsZSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBmaWxlTGlzdDogWy4uLm5ld0xpc3RdLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgeyBvbkxpc3RDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKG5ld0xpc3QpO1xyXG4gIH1cclxuICBjdXN0b21SZXF1ZXN0ID0gYXN5bmMgKG9wdGlvbnMpID0+IHtcclxuICAgIGNvbnN0IGZpbGUgPSBvcHRpb25zLmZpbGU7XHJcbiAgICBjb25zdCB7IG9uQ29tcGxldGUsIG9uUHJvY2Vzcywgc2xpY2VTaXplIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qgb25Qcm9ncmVzcyA9ICh0b3RhbFByb2dyZXNzOiBhbnkpID0+IHtcclxuICAgICAgb3B0aW9ucy5vblByb2dyZXNzKHsgcGVyY2VudDogdG90YWxQcm9ncmVzcyB9LCBmaWxlKTtcclxuICAgICAgdGhpcy5vblByb2Nlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzLCBmaWxlOiBmaWxlIH0pO1xyXG4gICAgICBvblByb2Nlc3MgJiYgb25Qcm9jZXNzKHsgcGVyY2VudDogdG90YWxQcm9ncmVzcywgZmlsZTogZmlsZSB9KTtcclxuICAgIH07XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXM6IGFueSA9IGF3YWl0IHVwbG9hZChcclxuICAgICAgICB7XHJcbiAgICAgICAgICBmaWxlOiBmaWxlLFxyXG4gICAgICAgICAgb25Qcm9ncmVzczogb25Qcm9ncmVzcyxcclxuICAgICAgICAgIHBhcnRTaXplOiBzbGljZVNpemUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB0aGlzLnByb3BzLnJlcXVlc3RDb25maWdcclxuICAgICAgKTtcclxuICAgICAgdGhpcy51cGxvYWRJbmdTaXplID0gdGhpcy51cGxvYWRJbmdTaXplICsgMTtcclxuICAgICAgbGV0IGZpbGVJZCA9IG51bGw7XHJcbiAgICAgIGxldCBJbWdSZXMgPSBudWxsO1xyXG4gICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgZmlsZUlkID0gcmVzLmRhdGEuYXR0YWNoSWQ7XHJcbiAgICAgICAgb3B0aW9ucy5vblN1Y2Nlc3MoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVwbG9hZEluZ0xpc3QucHVzaCh7XHJcbiAgICAgICAgZmlsZTogb3B0aW9ucy5maWxlLFxyXG4gICAgICAgIGZpbGVJZDogZmlsZUlkLFxyXG4gICAgICAgIHN0YXR1czogcmVzLmNvZGUgPT0gMjAwID8gXCJzdWNjZXNzXCIgOiBcImVycm9yXCIsXHJcbiAgICAgICAgdXJsOiBJbWdSZXMgPyBJbWdSZXMuZGF0YSA6IG51bGwsXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAodGhpcy51cGxvYWRTaXplID09IHRoaXMudXBsb2FkSW5nU2l6ZSkge1xyXG4gICAgICAgIHRoaXMub25Db21wbGV0ZSh0aGlzLnVwbG9hZEluZ0xpc3QpO1xyXG4gICAgICB9XHJcbiAgICAgIG9uQ29tcGxldGUgJiZcclxuICAgICAgICBvbkNvbXBsZXRlKHtcclxuICAgICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICAgIGZpbGVJZDogZmlsZUlkLFxyXG4gICAgICAgICAgc3RhdHVzOiByZXMuY29kZSA9PSAyMDAgPyBcInN1Y2Nlc3NcIiA6IFwiZXJyb3JcIixcclxuICAgICAgICB9KTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgaWYgKHRoaXMudXBsb2FkU2l6ZSA9PSB0aGlzLnVwbG9hZEluZ1NpemUpIHtcclxuICAgICAgICB0aGlzLm9uQ29tcGxldGUodGhpcy51cGxvYWRJbmdMaXN0KTtcclxuICAgICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgICAgfVxyXG4gICAgICBvbkNvbXBsZXRlICYmXHJcbiAgICAgICAgb25Db21wbGV0ZSh7IGZpbGU6IG9wdGlvbnMuZmlsZSwgZmlsZUlkOiBcIlwiLCBzdGF0dXM6IFwiZXJyb3JcIiB9KTtcclxuICAgIH1cclxuICB9O1xyXG4gIG9uRGVsZXRlKGZpbGUpIHtcclxuICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5ld0xpc3Q6IGFueSA9IFtdO1xyXG4gICAgZmlsZUxpc3QubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgLy/pgJrov4fmlofku7blkI3liKTmlq3vvIzkuIrkvKDmmK/mlofku7blkI3mmK/llK/kuIDnmoRcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGl0ZW0ubmFtZSAhPT0gZmlsZS5uYW1lIHx8XHJcbiAgICAgICAgaXRlbS5maWxlSWQgIT09IGZpbGUuZmlsZUlkIHx8XHJcbiAgICAgICAgaXRlbS51aWQgIT09IGZpbGUudWlkXHJcbiAgICAgICkge1xyXG4gICAgICAgIG5ld0xpc3QucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZmlsZUxpc3Q6IG5ld0xpc3QsXHJcbiAgICB9KTtcclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgfVxyXG4gIHJlbmRlcigpOiBSZWFjdC5SZWFjdE5vZGUge1xyXG4gICAgbGV0IHtcclxuICAgICAgZmlsZUxpc3QsXHJcbiAgICAgIGZpbGVDYXJkLFxyXG4gICAgICBzaG93VXBsb2FkTGlzdCA9IHtcclxuICAgICAgICBzaG93RG93bmxvYWRJY29uOiB0cnVlLFxyXG4gICAgICAgIHNob3dQcmV2aWV3SWNvbjogZmFsc2UsXHJcbiAgICAgICAgc2hvd1JlbW92ZUljb246IHRydWUsXHJcbiAgICAgICAgZG93bmxvYWRJY29uOiBudWxsLFxyXG4gICAgICAgIHJlbW92ZUljb246IG51bGwsXHJcbiAgICAgICAgcHJldmlld0ljb246IG51bGwsXHJcbiAgICAgIH0gYXMgYW55LFxyXG4gICAgICByZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5ld3Byb3BzID0gb21pdCh0aGlzLnByb3BzLCBbXHJcbiAgICAgIFwic2xpY2VTaXplXCIsXHJcbiAgICAgIFwibWF4U2l6ZVwiLFxyXG4gICAgICBcIm9uQ29tcGxldGVcIixcclxuICAgICAgXCJvblByb2Nlc3NcIixcclxuICAgICAgXCJhbGxvd0ZpbGVTdWZmaXhcIixcclxuICAgICAgXCJ1c2VEZWZhdWx0TGlzdFwiLFxyXG4gICAgICBcImZpbGVDYXJkXCIsXHJcbiAgICAgIFwib25MaXN0Q2hhbmdlXCIsXHJcbiAgICAgIFwibmV3VmVyc2lvblwiLFxyXG4gICAgICBcInJlcXVlc3RDb25maWdcIixcclxuICAgIF0pO1xyXG4gICAgbGV0IGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgY3VzdG9tUmVxdWVzdDogdGhpcy5jdXN0b21SZXF1ZXN0LmJpbmQodGhpcyksXHJcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgfSBhcyBJVXBsb2FkUHJvcHM7XHJcbiAgICBpZiAoZmlsZUNhcmQpIHtcclxuICAgICAgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcclxuICAgICAgICBpdGVtUmVuZGVyOiAob3JpZ2luTm9kZSwgZmlsZTogYW55LCBjdXJyRmlsZUxpc3QpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG5hbWUgPSBmaWxlLm5hbWUgfHwgZmlsZS5maWxlTmFtZTtcclxuICAgICAgICAgIGNvbnN0IG5hbWVzID0gbmFtZT8uc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgICAgY29uc3Qgc3VmZml4ID0gbmFtZXMgPyBuYW1lc1tuYW1lcy5sZW5ndGggLSAxXSA6IFwiXCI7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZmlsZS1pdGVtXCIpfT5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50X2Vycm9yXCIpXTogZmlsZS5zdGF0dXMgPT0gXCJlcnJvclwiLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm1hcmstcGljdHVyZVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxGaWxlSWNvbiBzdWZmaXg9e3N1ZmZpeH0gZmlsZUlkPXtmaWxlLmZpbGVJZH0gLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5hbWVcIil9PlxyXG4gICAgICAgICAgICAgICAgICB7ZmlsZS5uYW1lIHx8IGZpbGUuZmlsZU5hbWV9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LnNob3dQcmV2aWV3SWNvbiAmJiBmaWxlLnN0YXR1cyA9PSBcImRvbmVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblByZXZpZXcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUHJldmlldyhmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aWV3RG9jdW1lbnQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLmZpbGVJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMucmVxdWVzdENvbmZpZyB8fCB7fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvbiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RXllT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5zaG93RG93bmxvYWRJY29uICYmIGZpbGUuc3RhdHVzID09IFwiZG9uZVwiICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uRG93bmxvYWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uRG93bmxvYWQoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQoZmlsZS5maWxlSWQsIHRydWUsIHJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb24gPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPERvd25sb2FkT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5zaG93UmVtb3ZlSWNvbiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJlbW92ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25SZW1vdmUoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkRlbGV0ZShmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxEZWxldGVPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIHtmaWxlLnN0YXR1cyA9PSBcInVwbG9hZGluZ1wiICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJwcm9jZXNzXCIpfT5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwicGVyY2VudFwiKX1cclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogZmlsZS5wZXJjZW50ICsgXCIlXCIgfX1cclxuICAgICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICAgICAgLi4uZGVmYXVsdFByb3BzLFxyXG4gICAgICAgIG9uRG93bmxvYWQ6IChmaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGRvd25sb2FkKGZpbGUuZmlsZUlkLCB0cnVlLCByZXF1ZXN0Q29uZmlnKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uUmVtb3ZlOiAoZmlsZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vbkRlbGV0ZShmaWxlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uUHJldmlldzogKGZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZpbGU/LmZpbGVJZCkge1xyXG4gICAgICAgICAgICBwcmV2aWV3RG9jdW1lbnQoZmlsZS5maWxlSWQsIHJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2hvd1VwbG9hZExpc3Q6IHsgLi4uc2hvd1VwbG9hZExpc3QgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDw+XHJcbiAgICAgICAgPERyYWdnZXJcclxuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XHJcbiAgICAgICAgICB7Li4ubmV3cHJvcHN9XHJcbiAgICAgICAgICBiZWZvcmVVcGxvYWQ9e3RoaXMuYmVmb3JlVXBsb2FkLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICBmaWxlTGlzdD17dGhpcy5zdGF0ZS5maWxlTGlzdH1cclxuICAgICAgICAgIC8vIG9uQ2hhbmdlPXsoeyBmaWxlLCBmaWxlTGlzdCwgZXZlbnQgfSkgPT4ge1xyXG4gICAgICAgICAgLy8gICBjb25zb2xlLmxvZyhcIm9uQ2hhbmdlZmlsZVwiLCBmaWxlKTtcclxuICAgICAgICAgIC8vICAgY29uc29sZS5sb2coXCJvbkNoYW5nZWZpbGVMaXN0XCIsIGZpbGVMaXN0KTtcclxuICAgICAgICAgIC8vICAgY29uc3QgeyBvbkNoYW5nZSwgb25MaXN0Q2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgLy8gICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIC8vICAgICBmaWxlTGlzdDogZmlsZUxpc3QsXHJcbiAgICAgICAgICAvLyAgIH0pO1xyXG4gICAgICAgICAgLy8gICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKGZpbGVMaXN0KTtcclxuICAgICAgICAgIC8vICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UoeyBmaWxlLCBmaWxlTGlzdCwgZXZlbnQgfSk7XHJcbiAgICAgICAgICAvLyB9fVxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19
|
|
398
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Dragger, _extends({}, defaultProps, newprops, {
|
|
399
|
+
beforeUpload: this.beforeUpload.bind(this),
|
|
400
|
+
fileList: this.state.fileList
|
|
401
|
+
// onChange={({ file, fileList, event }) => {
|
|
402
|
+
// console.log("onChangefile", file);
|
|
403
|
+
// console.log("onChangefileList", fileList);
|
|
404
|
+
// const { onChange, onListChange } = this.props;
|
|
405
|
+
// this.setState({
|
|
406
|
+
// fileList: fileList,
|
|
407
|
+
// });
|
|
408
|
+
// onListChange && onListChange(fileList);
|
|
409
|
+
// onChange && onChange({ file, fileList, event });
|
|
410
|
+
// }}
|
|
411
|
+
})));
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZpbGUiLCJtZXNzYWdlIiwib21pdCIsImdldExlc3MiLCJzdHlsZXMiLCJjbHMiLCJGaWxlSWNvbiIsIkRlbGV0ZU91dGxpbmVkIiwiRG93bmxvYWRPdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwidXBsb2FkIiwiZG93bmxvYWQiLCJwcmV2aWV3RG9jdW1lbnQiLCJEcmFnZ2VyIiwiX1VwbG9hZCIsIk5zY1VwbG9hZERyYWdnZXIiLCJQdXJlQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJhcmd1bWVudHMiLCJfZGVmaW5lUHJvcGVydHkiLCJmaWxlTGlzdCIsInZpZXdJZCIsImZpbGVMaXN0U3RvcmUiLCJmaWxlTmFtZXMiLCJvcHRpb25zIiwib25Db21wbGV0ZSIsIm9uUHJvY2VzcyIsInNsaWNlU2l6ZSIsInByb3BzIiwib25Qcm9ncmVzcyIsInRvdGFsUHJvZ3Jlc3MiLCJwZXJjZW50IiwicmVzIiwicGFydFNpemUiLCJyZXF1ZXN0Q29uZmlnIiwidXBsb2FkSW5nU2l6ZSIsImZpbGVJZCIsIkltZ1JlcyIsImNvZGUiLCJkYXRhIiwiYXR0YWNoSWQiLCJvblN1Y2Nlc3MiLCJvbkVycm9yIiwidXBsb2FkSW5nTGlzdCIsInB1c2giLCJzdGF0dXMiLCJ1cmwiLCJ1cGxvYWRTaXplIiwiZSIsImNvbXBvbmVudERpZE1vdW50IiwiY29udmVydEZpbGVMaXN0IiwibGlzdCIsIm5ld0ZpbGVMaXN0Iiwib2xkTGlzdCIsIm1hcCIsIml0ZW0iLCJ0ZW1wIiwiX29iamVjdFNwcmVhZCIsIm5hbWUiLCJmaWxlTmFtZSIsInR5cGUiLCJzaXplIiwic2V0U3RhdGUiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmVQcm9wcyIsInByZVN0YXRlIiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YXRlIiwiZ2V0RmlsZUxpc3QiLCJzZXRGaWxlTGlzdCIsImJlZm9yZVVwbG9hZCIsIm9maWxlTGlzdCIsIm1heFNpemUiLCJhbGxvd0ZpbGVTdWZmaXgiLCJjaGVja1NhbWVGaWxlIiwibWF4Q291bnQiLCJzaG93VXBsb2FkTGlzdCIsInByb3BzTGlzdCIsIm9uTGlzdENoYW5nZSIsImNoZWNrRmlsZVR5cGUiLCJlcnJvciIsImNvbmNhdCIsImNoZWNrTGlzdCIsImluZGV4T2YiLCJuZXdMaXN0IiwidWlkIiwibGVuZ3RoIiwiaSIsInNwbGljZSIsIm5hbWVzIiwic3BsaXQiLCJzdWZmaXgiLCJfcmVmIiwibmV3RmlsZSIsImZpbGVzIiwibmV3VmVyc2lvbiIsImluZGV4Iiwid2luZG93IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsInByZWZpeCIsIm9uRGVsZXRlIiwicmVuZGVyIiwiZmlsZUNhcmQiLCJzaG93RG93bmxvYWRJY29uIiwic2hvd1ByZXZpZXdJY29uIiwic2hvd1JlbW92ZUljb24iLCJkb3dubG9hZEljb24iLCJyZW1vdmVJY29uIiwicHJldmlld0ljb24iLCJuZXdwcm9wcyIsImRlZmF1bHRQcm9wcyIsImN1c3RvbVJlcXVlc3QiLCJiaW5kIiwibXVsdGlwbGUiLCJpdGVtUmVuZGVyIiwib3JpZ2luTm9kZSIsImN1cnJGaWxlTGlzdCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwib25QcmV2aWV3Iiwic3R5bGUiLCJjdXJzb3IiLCJvbkRvd25sb2FkIiwib25SZW1vdmUiLCJ3aWR0aCIsIkZyYWdtZW50IiwiX2V4dGVuZHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9iYXNlL3VwbG9hZC9EcmFnZ2VyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgVXBsb2FkLCBVcGxvYWRQcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCBmaWxlIGZyb20gXCJuc2MtZmlsZVwiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vbWVzc2FnZVwiO1xyXG5pbXBvcnQgd2l0aFpoTG9jYWxlIGZyb20gXCIuLi9jb21tb24vd2l0aFpoTG9jYWxlXCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCB7IGdldExlc3MgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9pbmRleC5sZXNzXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IEZpbGVJY29uIGZyb20gXCIuLi9jb21tb24vRmlsZUljb25cIjtcclxuaW1wb3J0IHtcclxuICBEZWxldGVPdXRsaW5lZCxcclxuICBEb3dubG9hZE91dGxpbmVkLFxyXG4gIEV5ZU91dGxpbmVkLFxyXG59IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgUGRmVmlld2VyIGZyb20gXCIuLi9wZGZ2aXdlclwiO1xyXG5jb25zdCB7IHVwbG9hZCwgZG93bmxvYWQsIHByZXZpZXdEb2N1bWVudCB9ID0gZmlsZTtcclxuY29uc3QgeyBEcmFnZ2VyIH0gPSBVcGxvYWQ7XHJcbmludGVyZmFjZSBJVXBsb2FkUHJvcHMgZXh0ZW5kcyBVcGxvYWRQcm9wcyB7XHJcbiAgc2xpY2VTaXplPzogbnVtYmVyO1xyXG4gIG1heFNpemU/OiBudW1iZXIgfCBib29sZWFuO1xyXG4gIG9uUHJvY2Vzcz86IChwcm9jZXNzKSA9PiB2b2lkO1xyXG4gIG9uQ29tcGxldGU/OiAoeyBmaWxlLCBmaWxlSWQsIHN0YXR1cyB9KSA9PiB2b2lkO1xyXG4gIGFsbG93RmlsZVN1ZmZpeD86IEFycmF5PFN0cmluZz47IC8v5YWB6K645LiK5Lyg5omp5bGV5ZCNLOS4jeW4pi5cclxuICB1c2VEZWZhdWx0TGlzdD86IGJvb2xlYW47IC8v5piv5ZCm5L2/55So6buY6K6k55qEZmlsZUxpc3RcclxuICBmaWxlQ2FyZD86IGJvb2xlYW47XHJcbiAgb25MaXN0Q2hhbmdlPzogYW55O1xyXG4gIGNoZWNrU2FtZUZpbGU/OiBib29sZWFuO1xyXG4gIHJlcXVlc3RDb25maWc/OiBhbnk7XHJcbiAgbmV3VmVyc2lvbj86IGJvb2xlYW47XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTnNjVXBsb2FkRHJhZ2dlciBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQ8XHJcbiAgSVVwbG9hZFByb3BzLFxyXG4gIGFueVxyXG4+IHtcclxuICBzdGF0ZSA9IHsgZmlsZUxpc3Q6IFtdLCB2aWV3SWQ6IFwiXCIsIGZpbGVMaXN0U3RvcmU6IFtdLCBmaWxlTmFtZXM6IFtdIH07XHJcbiAgdXBsb2FkSW5nU2l6ZSA9IDA7XHJcbiAgdXBsb2FkU2l6ZSA9IDA7XHJcbiAgdXBsb2FkSW5nTGlzdCA9IFtdO1xyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgaWYgKHRoaXMucHJvcHMuZmlsZUxpc3QpIHtcclxuICAgICAgdGhpcy5jb252ZXJ0RmlsZUxpc3QoKTtcclxuICAgIH1cclxuICB9XHJcbiAgY29udmVydEZpbGVMaXN0KGxpc3Q/OiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3RmlsZUxpc3QgPSBbXTtcclxuICAgIGxldCBvbGRMaXN0ID0gbGlzdCA/IGxpc3QgOiBmaWxlTGlzdDtcclxuICAgIG9sZExpc3QubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgbGV0IHRlbXAgPSB7XHJcbiAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICBuYW1lOiBpdGVtLm5hbWUgfHwgaXRlbS5maWxlTmFtZSxcclxuICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXHJcbiAgICAgICAgc2l6ZTogaXRlbS5zaXplLFxyXG4gICAgICB9O1xyXG4gICAgICBuZXdGaWxlTGlzdC5wdXNoKHRlbXApO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZmlsZUxpc3Q6IG5ld0ZpbGVMaXN0LFxyXG4gICAgICBmaWxlTGlzdFN0b3JlOiBmaWxlTGlzdCxcclxuICAgIH0pO1xyXG4gIH1cclxuICBjb21wb25lbnREaWRVcGRhdGUocHJlUHJvcHMsIHByZVN0YXRlKSB7XHJcbiAgICBpZiAodGhpcy5wcm9wcy5maWxlTGlzdCkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wcy5maWxlTGlzdCkgIT09XHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5zdGF0ZS5maWxlTGlzdFN0b3JlKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmNvbnZlcnRGaWxlTGlzdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldEZpbGVMaXN0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuZmlsZUxpc3Q7XHJcbiAgfVxyXG4gIHNldEZpbGVMaXN0KGZpbGVMaXN0OiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICB0aGlzLmNvbnZlcnRGaWxlTGlzdChmaWxlTGlzdCk7XHJcbiAgfVxyXG4gIGFzeW5jIGJlZm9yZVVwbG9hZChmaWxlLCBvZmlsZUxpc3QpIHtcclxuICAgIGxldCB7XHJcbiAgICAgIG1heFNpemUgPSAxMDAsXHJcbiAgICAgIGFsbG93RmlsZVN1ZmZpeCxcclxuICAgICAgY2hlY2tTYW1lRmlsZSA9IHRydWUsXHJcbiAgICAgIG1heENvdW50LFxyXG4gICAgICBzaG93VXBsb2FkTGlzdCxcclxuICAgICAgZmlsZUxpc3Q6IHByb3BzTGlzdCxcclxuICAgICAgb25MaXN0Q2hhbmdlLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgeyBmaWxlTGlzdCwgZmlsZUxpc3RTdG9yZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCBzaXplOiBudW1iZXI7XHJcbiAgICBpZiAoYWxsb3dGaWxlU3VmZml4ICYmICF0aGlzLmNoZWNrRmlsZVR5cGUoZmlsZSkpIHtcclxuICAgICAgbWVzc2FnZS5lcnJvcihcclxuICAgICAgICBgJHtmaWxlLm5hbWV95paH5Lu257G75Z6L5LiN5YWB6K645LiK5Lyg77yM6K+35LiK5Lyg5ZCO57yA5Li6JHthbGxvd0ZpbGVTdWZmaXh955qE57G75Z6L5paH5Lu277yBYFxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAobWF4U2l6ZSAhPT0gZmFsc2UpIHtcclxuICAgICAgaWYgKG1heFNpemUgPT09IHRydWUpIHtcclxuICAgICAgICBtYXhTaXplID0gMTAwO1xyXG4gICAgICB9XHJcbiAgICAgIHNpemUgPSBtYXhTaXplICogMTAyNCAqIDEwMjQ7XHJcbiAgICAgIGlmIChzaXplIDwgZmlsZS5zaXplKSB7XHJcbiAgICAgICAgbWVzc2FnZS5lcnJvcihgJHtmaWxlLm5hbWV95paH5Lu25aSn5bCP6LaF6L+HJHttYXhTaXplfU3vvIzor7fph43mlrDkuIrkvKDvvIFgKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBmaWxlTmFtZXMgPSBbXTtcclxuICAgIGlmIChjaGVja1NhbWVGaWxlKSB7XHJcbiAgICAgIGNvbnN0IGNoZWNrTGlzdCA9IHRoaXMucHJvcHMuZmlsZUxpc3QgPyBmaWxlTGlzdFN0b3JlIDogZmlsZUxpc3Q7XHJcbiAgICAgIGNoZWNrTGlzdC5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBmaWxlTmFtZXMucHVzaChpdGVtLm5hbWUgfHwgaXRlbS5maWxlTmFtZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKGZpbGVOYW1lcy5pbmRleE9mKGZpbGUubmFtZSkgPiAtMSAmJiBzaG93VXBsb2FkTGlzdCAhPT0gZmFsc2UpIHtcclxuICAgICAgICBtZXNzYWdlLmVycm9yKGDmlofku7Yke2ZpbGUubmFtZX3lt7LlnKjkuIrkvKDliJfooajkuK3vvIzor7fph43mlrDpgInmi6nmlofku7bvvIFgKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5wcm9wcy5iZWZvcmVVcGxvYWQpIHtcclxuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5wcm9wcy5iZWZvcmVVcGxvYWQoZmlsZSwgb2ZpbGVMaXN0KTtcclxuICAgICAgaWYgKHJlcyA9PT0gZmFsc2UpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IG5ld0xpc3QgPSBbLi4uZmlsZUxpc3RdO1xyXG4gICAgb2ZpbGVMaXN0Lm1hcChhc3luYyAoaXRlbSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIShcclxuICAgICAgICAgIChhbGxvd0ZpbGVTdWZmaXggJiYgIXRoaXMuY2hlY2tGaWxlVHlwZShpdGVtKSkgfHxcclxuICAgICAgICAgIHNpemUgPCBpdGVtLnNpemUgfHxcclxuICAgICAgICAgIChjaGVja1NhbWVGaWxlICYmIGZpbGVOYW1lcy5pbmRleE9mKGl0ZW0ubmFtZSkgPiAtMSlcclxuICAgICAgICApXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IHRlbXAgPSB7XHJcbiAgICAgICAgICBmaWxlTmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICAgICAgcGVyY2VudDogMCxcclxuICAgICAgICAgIHN0YXR1czogXCJ1cGxvYWRpbmdcIixcclxuICAgICAgICAgIHVpZDogaXRlbS51aWQsXHJcbiAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXHJcbiAgICAgICAgICBzaXplOiBpdGVtLnNpemUsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBuZXdMaXN0LnB1c2godGVtcCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChtYXhDb3VudCAmJiBuZXdMaXN0Lmxlbmd0aCA+IG1heENvdW50KSB7XHJcbiAgICAgIGxldCBsZW5ndGggPSBuZXdMaXN0Lmxlbmd0aCAtIG1heENvdW50O1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbmV3TGlzdC5zcGxpY2UoMCwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgZmlsZUxpc3Q6IG5ld0xpc3QgfSk7XHJcbiAgICB0aGlzLnVwbG9hZFNpemUgPSBvZmlsZUxpc3QubGVuZ3RoO1xyXG4gIH1cclxuICBjaGVja0ZpbGVUeXBlKGZpbGUpIHtcclxuICAgIGNvbnN0IHsgYWxsb3dGaWxlU3VmZml4IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmFtZXMgPSBmaWxlLm5hbWUuc3BsaXQoXCIuXCIpO1xyXG4gICAgY29uc3Qgc3VmZml4ID0gbmFtZXNbbmFtZXMubGVuZ3RoIC0gMV07XHJcbiAgICBpZiAoYWxsb3dGaWxlU3VmZml4LmluZGV4T2Yoc3VmZml4KSA+IC0xKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBvblByb2Nlc3MoeyBwZXJjZW50LCBmaWxlIH06IGFueSkge1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgb25MaXN0Q2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcbiAgICBmaWxlTGlzdC5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBuZXdGaWxlID0geyAuLi5pdGVtIH07XHJcbiAgICAgIGlmIChmaWxlLnVpZCA9PSBpdGVtLnVpZCkge1xyXG4gICAgICAgIG5ld0ZpbGUucGVyY2VudCA9IHBlcmNlbnQ7XHJcbiAgICAgIH1cclxuICAgICAgbmV3TGlzdC5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZmlsZUxpc3Q6IG5ld0xpc3QsXHJcbiAgICB9KTtcclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UoZmlsZUxpc3QpO1xyXG4gIH1cclxuICBhc3luYyBvbkNvbXBsZXRlKGZpbGVzKSB7XHJcbiAgICB0aGlzLnVwbG9hZEluZ1NpemUgPSAwO1xyXG4gICAgdGhpcy51cGxvYWRTaXplID0gMDtcclxuICAgIHRoaXMudXBsb2FkSW5nTGlzdCA9IFtdO1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgbmV3VmVyc2lvbiwgcmVxdWVzdENvbmZpZyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcblxyXG4gICAgZmlsZUxpc3QubWFwKGFzeW5jIChpdGVtOiBhbnksIGluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0ZpbGUgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgZmlsZXMubWFwKGFzeW5jIChmaWxlKSA9PiB7XHJcbiAgICAgICAgaWYgKGZpbGUuZmlsZS51aWQgPT0gaXRlbS51aWQpIHtcclxuICAgICAgICAgIG5ld0ZpbGUuc3RhdHVzID0gZmlsZS5zdGF0dXMgPT0gXCJzdWNjZXNzXCIgPyBcImRvbmVcIiA6IGZpbGUuc3RhdHVzO1xyXG4gICAgICAgICAgbmV3RmlsZS5maWxlSWQgPSBmaWxlLmZpbGVJZDtcclxuICAgICAgICAgIG5ld0ZpbGUudXJsID0gZmlsZS51cmw7XHJcbiAgICAgICAgICBpZiAoIW5ld1ZlcnNpb24pIHtcclxuICAgICAgICAgICAgbGV0IHVybCA9IGAvanF1aWNrLXJlc291cmNlL29zcy9lbmRwb2ludC9kb3dubG9hZC1maWxlcz9hdHRhY2hJZD0ke1xyXG4gICAgICAgICAgICAgIGZpbGUuZmlsZUlkXHJcbiAgICAgICAgICAgIH0mX3Rwaz0ke3dpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInRva2VuXCIpfWA7XHJcbiAgICAgICAgICAgIG5ld0ZpbGUudXJsID0gcmVxdWVzdENvbmZpZy5wcmVmaXhcclxuICAgICAgICAgICAgICA/IHJlcXVlc3RDb25maWcucHJlZml4ICsgdXJsXHJcbiAgICAgICAgICAgICAgOiBcIi9hcGlcIiArIHVybDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBuZXdMaXN0LnB1c2gobmV3RmlsZSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBmaWxlTGlzdDogWy4uLm5ld0xpc3RdLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgeyBvbkxpc3RDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKG5ld0xpc3QpO1xyXG4gIH1cclxuICBjdXN0b21SZXF1ZXN0ID0gYXN5bmMgKG9wdGlvbnMpID0+IHtcclxuICAgIGNvbnN0IGZpbGUgPSBvcHRpb25zLmZpbGU7XHJcbiAgICBjb25zdCB7IG9uQ29tcGxldGUsIG9uUHJvY2Vzcywgc2xpY2VTaXplIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qgb25Qcm9ncmVzcyA9ICh0b3RhbFByb2dyZXNzOiBhbnkpID0+IHtcclxuICAgICAgb3B0aW9ucy5vblByb2dyZXNzKHsgcGVyY2VudDogdG90YWxQcm9ncmVzcyB9LCBmaWxlKTtcclxuICAgICAgdGhpcy5vblByb2Nlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzLCBmaWxlOiBmaWxlIH0pO1xyXG4gICAgICBvblByb2Nlc3MgJiYgb25Qcm9jZXNzKHsgcGVyY2VudDogdG90YWxQcm9ncmVzcywgZmlsZTogZmlsZSB9KTtcclxuICAgIH07XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXM6IGFueSA9IGF3YWl0IHVwbG9hZChcclxuICAgICAgICB7XHJcbiAgICAgICAgICBmaWxlOiBmaWxlLFxyXG4gICAgICAgICAgb25Qcm9ncmVzczogb25Qcm9ncmVzcyxcclxuICAgICAgICAgIHBhcnRTaXplOiBzbGljZVNpemUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB0aGlzLnByb3BzLnJlcXVlc3RDb25maWdcclxuICAgICAgKTtcclxuICAgICAgdGhpcy51cGxvYWRJbmdTaXplID0gdGhpcy51cGxvYWRJbmdTaXplICsgMTtcclxuICAgICAgbGV0IGZpbGVJZCA9IG51bGw7XHJcbiAgICAgIGxldCBJbWdSZXMgPSBudWxsO1xyXG4gICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgZmlsZUlkID0gcmVzLmRhdGEuYXR0YWNoSWQ7XHJcbiAgICAgICAgb3B0aW9ucy5vblN1Y2Nlc3MoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVwbG9hZEluZ0xpc3QucHVzaCh7XHJcbiAgICAgICAgZmlsZTogb3B0aW9ucy5maWxlLFxyXG4gICAgICAgIGZpbGVJZDogZmlsZUlkLFxyXG4gICAgICAgIHN0YXR1czogcmVzLmNvZGUgPT0gMjAwID8gXCJzdWNjZXNzXCIgOiBcImVycm9yXCIsXHJcbiAgICAgICAgdXJsOiBJbWdSZXMgPyBJbWdSZXMuZGF0YSA6IG51bGwsXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAodGhpcy51cGxvYWRTaXplID09IHRoaXMudXBsb2FkSW5nU2l6ZSkge1xyXG4gICAgICAgIHRoaXMub25Db21wbGV0ZSh0aGlzLnVwbG9hZEluZ0xpc3QpO1xyXG4gICAgICB9XHJcbiAgICAgIG9uQ29tcGxldGUgJiZcclxuICAgICAgICBvbkNvbXBsZXRlKHtcclxuICAgICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICAgIGZpbGVJZDogZmlsZUlkLFxyXG4gICAgICAgICAgc3RhdHVzOiByZXMuY29kZSA9PSAyMDAgPyBcInN1Y2Nlc3NcIiA6IFwiZXJyb3JcIixcclxuICAgICAgICB9KTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgaWYgKHRoaXMudXBsb2FkU2l6ZSA9PSB0aGlzLnVwbG9hZEluZ1NpemUpIHtcclxuICAgICAgICB0aGlzLm9uQ29tcGxldGUodGhpcy51cGxvYWRJbmdMaXN0KTtcclxuICAgICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgICAgfVxyXG4gICAgICBvbkNvbXBsZXRlICYmXHJcbiAgICAgICAgb25Db21wbGV0ZSh7IGZpbGU6IG9wdGlvbnMuZmlsZSwgZmlsZUlkOiBcIlwiLCBzdGF0dXM6IFwiZXJyb3JcIiB9KTtcclxuICAgIH1cclxuICB9O1xyXG4gIG9uRGVsZXRlKGZpbGUpIHtcclxuICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5ld0xpc3Q6IGFueSA9IFtdO1xyXG4gICAgZmlsZUxpc3QubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgLy/pgJrov4fmlofku7blkI3liKTmlq3vvIzkuIrkvKDmmK/mlofku7blkI3mmK/llK/kuIDnmoRcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGl0ZW0ubmFtZSAhPT0gZmlsZS5uYW1lIHx8XHJcbiAgICAgICAgaXRlbS5maWxlSWQgIT09IGZpbGUuZmlsZUlkIHx8XHJcbiAgICAgICAgaXRlbS51aWQgIT09IGZpbGUudWlkXHJcbiAgICAgICkge1xyXG4gICAgICAgIG5ld0xpc3QucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZmlsZUxpc3Q6IG5ld0xpc3QsXHJcbiAgICB9KTtcclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgfVxyXG4gIHJlbmRlcigpOiBSZWFjdC5SZWFjdE5vZGUge1xyXG4gICAgbGV0IHtcclxuICAgICAgZmlsZUxpc3QsXHJcbiAgICAgIGZpbGVDYXJkLFxyXG4gICAgICBzaG93VXBsb2FkTGlzdCA9IHtcclxuICAgICAgICBzaG93RG93bmxvYWRJY29uOiB0cnVlLFxyXG4gICAgICAgIHNob3dQcmV2aWV3SWNvbjogZmFsc2UsXHJcbiAgICAgICAgc2hvd1JlbW92ZUljb246IHRydWUsXHJcbiAgICAgICAgZG93bmxvYWRJY29uOiBudWxsLFxyXG4gICAgICAgIHJlbW92ZUljb246IG51bGwsXHJcbiAgICAgICAgcHJldmlld0ljb246IG51bGwsXHJcbiAgICAgIH0gYXMgYW55LFxyXG4gICAgICByZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5ld3Byb3BzID0gb21pdCh0aGlzLnByb3BzLCBbXHJcbiAgICAgIFwic2xpY2VTaXplXCIsXHJcbiAgICAgIFwibWF4U2l6ZVwiLFxyXG4gICAgICBcIm9uQ29tcGxldGVcIixcclxuICAgICAgXCJvblByb2Nlc3NcIixcclxuICAgICAgXCJhbGxvd0ZpbGVTdWZmaXhcIixcclxuICAgICAgXCJ1c2VEZWZhdWx0TGlzdFwiLFxyXG4gICAgICBcImZpbGVDYXJkXCIsXHJcbiAgICAgIFwib25MaXN0Q2hhbmdlXCIsXHJcbiAgICAgIFwibmV3VmVyc2lvblwiLFxyXG4gICAgICBcInJlcXVlc3RDb25maWdcIixcclxuICAgIF0pO1xyXG4gICAgbGV0IGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgY3VzdG9tUmVxdWVzdDogdGhpcy5jdXN0b21SZXF1ZXN0LmJpbmQodGhpcyksXHJcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxyXG4gICAgfSBhcyBJVXBsb2FkUHJvcHM7XHJcbiAgICBpZiAoZmlsZUNhcmQpIHtcclxuICAgICAgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcclxuICAgICAgICBpdGVtUmVuZGVyOiAob3JpZ2luTm9kZSwgZmlsZTogYW55LCBjdXJyRmlsZUxpc3QpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG5hbWUgPSBmaWxlLm5hbWUgfHwgZmlsZS5maWxlTmFtZTtcclxuICAgICAgICAgIGNvbnN0IG5hbWVzID0gbmFtZT8uc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgICAgY29uc3Qgc3VmZml4ID0gbmFtZXMgPyBuYW1lc1tuYW1lcy5sZW5ndGggLSAxXSA6IFwiXCI7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZmlsZS1pdGVtXCIpfT5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50X2Vycm9yXCIpXTogZmlsZS5zdGF0dXMgPT0gXCJlcnJvclwiLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm1hcmstcGljdHVyZVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxGaWxlSWNvbiBzdWZmaXg9e3N1ZmZpeH0gZmlsZUlkPXtmaWxlLmZpbGVJZH0gLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5hbWVcIil9PlxyXG4gICAgICAgICAgICAgICAgICB7ZmlsZS5uYW1lIHx8IGZpbGUuZmlsZU5hbWV9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LnNob3dQcmV2aWV3SWNvbiAmJiBmaWxlLnN0YXR1cyA9PSBcImRvbmVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblByZXZpZXcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUHJldmlldyhmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aWV3RG9jdW1lbnQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLmZpbGVJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMucmVxdWVzdENvbmZpZyB8fCB7fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvbiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RXllT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5zaG93RG93bmxvYWRJY29uICYmIGZpbGUuc3RhdHVzID09IFwiZG9uZVwiICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uRG93bmxvYWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uRG93bmxvYWQoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQoZmlsZS5maWxlSWQsIHRydWUsIHJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb24gPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPERvd25sb2FkT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5zaG93UmVtb3ZlSWNvbiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJlbW92ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25SZW1vdmUoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkRlbGV0ZShmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxEZWxldGVPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIHtmaWxlLnN0YXR1cyA9PSBcInVwbG9hZGluZ1wiICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJwcm9jZXNzXCIpfT5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwicGVyY2VudFwiKX1cclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogZmlsZS5wZXJjZW50ICsgXCIlXCIgfX1cclxuICAgICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICAgICAgLi4uZGVmYXVsdFByb3BzLFxyXG4gICAgICAgIG9uRG93bmxvYWQ6IChmaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGRvd25sb2FkKGZpbGUuZmlsZUlkLCB0cnVlLCByZXF1ZXN0Q29uZmlnKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uUmVtb3ZlOiAoZmlsZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vbkRlbGV0ZShmaWxlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uUHJldmlldzogKGZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZpbGU/LmZpbGVJZCkge1xyXG4gICAgICAgICAgICBwcmV2aWV3RG9jdW1lbnQoZmlsZS5maWxlSWQsIHJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2hvd1VwbG9hZExpc3Q6IHsgLi4uc2hvd1VwbG9hZExpc3QgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDw+XHJcbiAgICAgICAgPERyYWdnZXJcclxuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XHJcbiAgICAgICAgICB7Li4ubmV3cHJvcHN9XHJcbiAgICAgICAgICBiZWZvcmVVcGxvYWQ9e3RoaXMuYmVmb3JlVXBsb2FkLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICBmaWxlTGlzdD17dGhpcy5zdGF0ZS5maWxlTGlzdH1cclxuICAgICAgICAgIC8vIG9uQ2hhbmdlPXsoeyBmaWxlLCBmaWxlTGlzdCwgZXZlbnQgfSkgPT4ge1xyXG4gICAgICAgICAgLy8gICBjb25zb2xlLmxvZyhcIm9uQ2hhbmdlZmlsZVwiLCBmaWxlKTtcclxuICAgICAgICAgIC8vICAgY29uc29sZS5sb2coXCJvbkNoYW5nZWZpbGVMaXN0XCIsIGZpbGVMaXN0KTtcclxuICAgICAgICAgIC8vICAgY29uc3QgeyBvbkNoYW5nZSwgb25MaXN0Q2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgLy8gICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIC8vICAgICBmaWxlTGlzdDogZmlsZUxpc3QsXHJcbiAgICAgICAgICAvLyAgIH0pO1xyXG4gICAgICAgICAgLy8gICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKGZpbGVMaXN0KTtcclxuICAgICAgICAgIC8vICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UoeyBmaWxlLCBmaWxlTGlzdCwgZXZlbnQgfSk7XHJcbiAgICAgICAgICAvLyB9fVxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLE9BQU8sS0FBS0EsS0FBSyxNQUFNLE9BQU87QUFFOUIsT0FBT0MsSUFBSSxNQUFNLFVBQVU7QUFDM0IsT0FBT0MsT0FBTyxNQUFNLFlBQVk7QUFFaEMsT0FBT0MsSUFBSSxNQUFNLFNBQVM7QUFDMUIsU0FBU0MsT0FBTyxRQUFRLGFBQWE7QUFDckMsT0FBT0MsTUFBTSxNQUFNLGNBQWM7QUFDakMsT0FBT0MsR0FBRyxNQUFNLFlBQVk7QUFDNUIsT0FBT0MsUUFBUSxNQUFNLG9CQUFvQjtBQUN6QyxTQUNFQyxjQUFjLEVBQ2RDLGdCQUFnQixFQUNoQkMsV0FBVyxRQUNOLG1CQUFtQjtBQUUxQixNQUFNO0VBQUVDLE1BQU07RUFBRUMsUUFBUTtFQUFFQztBQUFnQixDQUFDLEdBQUdaLElBQUk7QUFDbEQsTUFBTTtFQUFFYTtBQUFRLENBQUMsR0FBQUMsT0FBUztBQWMxQixlQUFlLE1BQU1DLGdCQUFnQixTQUFTaEIsS0FBSyxDQUFDaUIsYUFBYSxDQUcvRDtFQUFBQyxZQUFBO0lBQUEsU0FBQUMsU0FBQTtJQUFBQyxlQUFBLGdCQUNRO01BQUVDLFFBQVEsRUFBRSxFQUFFO01BQUVDLE1B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
|