nsc-react-component 2.4.2 → 2.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,14 @@
1
1
  import * as React from "react";
2
2
  import { DrawerProps } from "antd";
3
- export default class NscDrawer extends React.PureComponent<DrawerProps, any> {
3
+ interface formExpand {
4
+ change?: boolean;
5
+ valid?: boolean;
6
+ expand?: boolean;
7
+ }
8
+ interface NscDrawerProps extends DrawerProps, DrawerProps {
9
+ formExpand?: formExpand;
10
+ }
11
+ export default class NscDrawer extends React.PureComponent<NscDrawerProps, any> {
4
12
  render(): React.ReactNode;
5
13
  }
14
+ export {};
@@ -1,7 +1,6 @@
1
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
2
 
3
- import "antd/es/drawer/style/css";
4
- import _Drawer from "antd/es/drawer";
3
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
5
4
 
6
5
  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; }
7
6
 
@@ -30,7 +29,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
30
29
  function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
31
30
 
32
31
  import * as React from "react";
33
- import config from "../../config";
32
+ import Modal from "../modal";
34
33
 
35
34
  var NscDrawer = /*#__PURE__*/function (_React$PureComponent) {
36
35
  _inherits(NscDrawer, _React$PureComponent);
@@ -48,18 +47,9 @@ var NscDrawer = /*#__PURE__*/function (_React$PureComponent) {
48
47
  value: function render() {
49
48
  var props = _objectSpread({}, this.props);
50
49
 
51
- var _config = config(),
52
- mountElementId = _config.mountElementId;
53
-
54
- if (mountElementId) {
55
- props = _objectSpread(_objectSpread({}, props), {}, {
56
- getContainer: function getContainer() {
57
- return document.getElementById(mountElementId);
58
- }
59
- });
60
- }
61
-
62
- return /*#__PURE__*/React.createElement(_Drawer, props);
50
+ return /*#__PURE__*/React.createElement(Modal, _extends({}, this.props, {
51
+ type: "drawer"
52
+ }));
63
53
  }
64
54
  }]);
65
55
 
@@ -67,4 +57,4 @@ var NscDrawer = /*#__PURE__*/function (_React$PureComponent) {
67
57
  }(React.PureComponent);
68
58
 
69
59
  export { NscDrawer as default };
70
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvZHJhd2VyL2luZGV4LnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsImNvbmZpZyIsIk5zY0RyYXdlciIsInByb3BzIiwibW91bnRFbGVtZW50SWQiLCJnZXRDb250YWluZXIiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiUHVyZUNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBS0EsS0FBWixNQUF1QixPQUF2QjtBQUVBLE9BQU9DLE1BQVAsTUFBbUIsY0FBbkI7O0lBQ3FCQyxTOzs7Ozs7Ozs7Ozs7O1dBQ25CLGtCQUEwQjtBQUN4QixVQUFJQyxLQUFVLHFCQUFRLEtBQUtBLEtBQWIsQ0FBZDs7QUFDQSxvQkFBeUJGLE1BQU0sRUFBL0I7QUFBQSxVQUFNRyxjQUFOLFdBQU1BLGNBQU47O0FBQ0EsVUFBSUEsY0FBSixFQUFvQjtBQUNsQkQsUUFBQUEsS0FBSyxtQ0FDQUEsS0FEQTtBQUVIRSxVQUFBQSxZQUFZLEVBQUU7QUFBQSxtQkFBTUMsUUFBUSxDQUFDQyxjQUFULENBQXdCSCxjQUF4QixDQUFOO0FBQUE7QUFGWCxVQUFMO0FBSUQ7O0FBQ0QsMEJBQU8sNkJBQVlELEtBQVosQ0FBUDtBQUNEOzs7O0VBWG9DSCxLQUFLLENBQUNRLGE7O1NBQXhCTixTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IERyYXdlciwgRHJhd2VyUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTnNjRHJhd2VyIGV4dGVuZHMgUmVhY3QuUHVyZUNvbXBvbmVudDxEcmF3ZXJQcm9wcywgYW55PiB7XHJcbiAgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XHJcbiAgICBsZXQgcHJvcHM6IGFueSA9IHsgLi4udGhpcy5wcm9wcyB9O1xyXG4gICAgbGV0IHsgbW91bnRFbGVtZW50SWQgfSA9IGNvbmZpZygpO1xyXG4gICAgaWYgKG1vdW50RWxlbWVudElkKSB7XHJcbiAgICAgIHByb3BzID0ge1xyXG4gICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgIGdldENvbnRhaW5lcjogKCkgPT4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobW91bnRFbGVtZW50SWQpLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIDxEcmF3ZXIgey4uLnByb3BzfSAvPjtcclxuICB9XHJcbn1cclxuIl19
60
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvZHJhd2VyL2luZGV4LnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsIk1vZGFsIiwiTnNjRHJhd2VyIiwicHJvcHMiLCJQdXJlQ29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUtBLEtBQVosTUFBdUIsT0FBdkI7QUFHQSxPQUFPQyxLQUFQLE1BQWtCLFVBQWxCOztJQVVxQkMsUzs7Ozs7Ozs7Ozs7OztXQUluQixrQkFBMEI7QUFDeEIsVUFBSUMsS0FBVSxxQkFBUSxLQUFLQSxLQUFiLENBQWQ7O0FBQ0EsMEJBQU8sb0JBQUMsS0FBRCxlQUFXLEtBQUtBLEtBQWhCO0FBQXVCLFFBQUEsSUFBSSxFQUFDO0FBQTVCLFNBQVA7QUFDRDs7OztFQVBvQ0gsS0FBSyxDQUFDSSxhOztTQUF4QkYsUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBEcmF3ZXIsIERyYXdlclByb3BzIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcbmltcG9ydCBNb2RhbCBmcm9tIFwiLi4vbW9kYWxcIjtcclxuaW50ZXJmYWNlIGZvcm1FeHBhbmQge1xyXG4gIGNoYW5nZT86IGJvb2xlYW47XHJcbiAgdmFsaWQ/OiBib29sZWFuO1xyXG4gIGV4cGFuZD86IGJvb2xlYW47XHJcbn1cclxuaW50ZXJmYWNlIE5zY0RyYXdlclByb3BzIGV4dGVuZHMgRHJhd2VyUHJvcHMsIERyYXdlclByb3BzIHtcclxuICBmb3JtRXhwYW5kPzogZm9ybUV4cGFuZDtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTnNjRHJhd2VyIGV4dGVuZHMgUmVhY3QuUHVyZUNvbXBvbmVudDxcclxuICBOc2NEcmF3ZXJQcm9wcyxcclxuICBhbnlcclxuPiB7XHJcbiAgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XHJcbiAgICBsZXQgcHJvcHM6IGFueSA9IHsgLi4udGhpcy5wcm9wcyB9O1xyXG4gICAgcmV0dXJuIDxNb2RhbCB7Li4udGhpcy5wcm9wc30gdHlwZT1cImRyYXdlclwiIC8+O1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,42 @@
1
+ .footer {
2
+ display: flex;
3
+ flex-direction: row-reverse;
4
+ .button-margin {
5
+ margin-right: 15px;
6
+ }
7
+ :global {
8
+ .ant-btn {
9
+ border-radius: 4px;
10
+ min-width: 80px;
11
+ min-height: 35px;
12
+ }
13
+ }
14
+ }
15
+ .title {
16
+ display: flex;
17
+ flex-direction: row-reverse;
18
+ .icons {
19
+ display: flex;
20
+ margin-left: 15px;
21
+ .icon {
22
+ cursor: pointer;
23
+ margin-right: 10px;
24
+ }
25
+ }
26
+ .title-content {
27
+ flex: 1;
28
+ display: flex;
29
+ }
30
+ }
31
+
32
+ .allsreen {
33
+ :global {
34
+ .ant-modal-content {
35
+ height: 100vh;
36
+ }
37
+ .ant-modal-body {
38
+ height: calc(100vh - 150px);
39
+ }
40
+ }
41
+ }
42
+
@@ -11,6 +11,7 @@ interface IFormProps extends FormProps {
11
11
  url?: string;
12
12
  encryptFields?: Array<String>;
13
13
  changeValid?: boolean;
14
+ loading?: boolean;
14
15
  }
15
16
  declare class NscForm extends PureComponent<IFormProps> {
16
17
  formRef: React.RefObject<FormInstance<any>>;
@@ -1,11 +1,7 @@
1
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
2
 
3
- import "antd/es/drawer/style/css";
4
- import _Drawer from "antd/es/drawer";
5
3
  import "antd/es/form/style/css";
6
4
  import _Form from "antd/es/form";
7
- import "antd/es/modal/style/css";
8
- import _Modal from "antd/es/modal";
9
5
  import "antd/es/message/style/css";
10
6
  import _message from "antd/es/message";
11
7
  var _excluded = ["data", "encryptFields"];
@@ -51,12 +47,10 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
51
47
  * @LastEditTime: 2021-04-23 15:23:54
52
48
  */
53
49
  import React, { PureComponent } from "react";
50
+ import Modal from "../modal";
54
51
  import { request } from "@bj-nsc/msn/lib/utils";
55
52
  import omit from "omit.js";
56
- import Button from "../button";
57
- import styles from "./index.less";
58
- import { getLess } from "../../utils";
59
- import { PlusCircleOutlined, CloseCircleOutlined, CloseOutlined, ExpandOutlined, CompressOutlined } from "@ant-design/icons";
53
+ import Spin from "../spin";
60
54
 
61
55
  var NscForm = /*#__PURE__*/function (_PureComponent) {
62
56
  _inherits(NscForm, _PureComponent);
@@ -257,10 +251,7 @@ var NscForm = /*#__PURE__*/function (_PureComponent) {
257
251
  }, {
258
252
  key: "hide",
259
253
  value: function hide(e) {
260
- var isChange = this.state.isChange;
261
254
  var _this$props2 = this.props,
262
- _this$props2$changeVa = _this$props2.changeValid,
263
- changeValid = _this$props2$changeVa === void 0 ? true : _this$props2$changeVa,
264
255
  showModel = _this$props2.showModel,
265
256
  _this$props2$modalPro = _this$props2.modalProps,
266
257
  modalProps = _this$props2$modalPro === void 0 ? {} : _this$props2$modalPro,
@@ -272,30 +263,12 @@ var NscForm = /*#__PURE__*/function (_PureComponent) {
272
263
  var onCancel = modalProps.onCancel;
273
264
  var onClose = drawerProps.onClose;
274
265
 
275
- if (changeValid && isChange) {
276
- _Modal.confirm({
277
- title: "当前记录已修改尚未保存,确定要放弃修改吗?",
278
- cancelText: "取消",
279
- okText: "确定",
280
- centered: true,
281
- onOk: function onOk() {
282
- if (showModel == "drawer" && onClose) {
283
- onClose(e);
284
- } else if (showModel == "modal" && onCancel) {
285
- onCancel(e);
286
- } else {
287
- _this.hideForm();
288
- }
289
- }
290
- });
266
+ if (showModel == "drawer" && onClose) {
267
+ onClose(e);
268
+ } else if (showModel == "modal" && onCancel) {
269
+ onCancel(e);
291
270
  } else {
292
- if (showModel == "drawer" && onClose) {
293
- onClose(e);
294
- } else if (showModel == "modal" && onCancel) {
295
- onCancel(e);
296
- } else {
297
- _this.hideForm();
298
- }
271
+ _this.hideForm();
299
272
  }
300
273
  }
301
274
  }, {
@@ -375,16 +348,14 @@ var NscForm = /*#__PURE__*/function (_PureComponent) {
375
348
  }, {
376
349
  key: "renderPanel",
377
350
  value: function renderPanel(newChildren, props) {
378
- var _this5 = this;
379
-
380
351
  var _this$props3 = this.props,
381
352
  showModel = _this$props3.showModel,
382
353
  _this$props3$drawerPr = _this$props3.drawerProps,
383
354
  drawerProps = _this$props3$drawerPr === void 0 ? {} : _this$props3$drawerPr,
384
355
  _this$props3$modalPro = _this$props3.modalProps,
385
356
  modalProps = _this$props3$modalPro === void 0 ? {} : _this$props3$modalPro,
386
- _this$props3$changeVa = _this$props3.changeValid,
387
- changeValid = _this$props3$changeVa === void 0 ? true : _this$props3$changeVa;
357
+ _this$props3$loading = _this$props3.loading,
358
+ loading = _this$props3$loading === void 0 ? false : _this$props3$loading;
388
359
  var formVisible = this.state.formVisible;
389
360
  var layout = {
390
361
  labelCol: {
@@ -394,105 +365,60 @@ var NscForm = /*#__PURE__*/function (_PureComponent) {
394
365
  span: 20
395
366
  }
396
367
  };
397
- var orgtitle = showModel == "modal" ? modalProps.title : drawerProps.title;
398
- var closable = showModel == "modal" ? modalProps.closable : drawerProps.closable;
399
- var okButtonProps = showModel == "modal" ? modalProps.okButtonProps || {} : drawerProps.okButtonProps || {};
400
- var title = /*#__PURE__*/React.createElement("div", {
401
- className: getLess(styles, "title")
402
- }, /*#__PURE__*/React.createElement("div", {
403
- className: getLess(styles, "icons")
404
- }, !this.state.expand && /*#__PURE__*/React.createElement("div", {
405
- onClick: function onClick() {
406
- _this5.setState({
407
- expand: true
368
+
369
+ if (showModel) {
370
+ var newModalProps = omit(modalProps, ["visible"]);
371
+ newModalProps = _objectSpread({}, newModalProps);
372
+ var newDrawerProps = omit(drawerProps, ["visible", "onOk", "okButtonProps"]);
373
+ var defaultprops = {
374
+ maskClosable: !this.state.isChange,
375
+ formExpand: {
376
+ expand: true,
377
+ valid: this.props.changeValid,
378
+ change: this.state.isChange
379
+ },
380
+ type: showModel
381
+ };
382
+
383
+ var modalprops = _objectSpread({}, defaultprops);
384
+
385
+ if (showModel == "modal") {
386
+ modalprops = _objectSpread(_objectSpread(_objectSpread({}, newModalProps), defaultprops), {}, {
387
+ onCancel: this.hide.bind(this)
408
388
  });
409
- },
410
- className: getLess(styles, "icon")
411
- }, /*#__PURE__*/React.createElement(ExpandOutlined, null)), this.state.expand && /*#__PURE__*/React.createElement("div", {
412
- onClick: function onClick() {
413
- _this5.setState({
414
- expand: false
389
+ } else if (showModel == "drawer") {
390
+ modalprops = _objectSpread(_objectSpread(_objectSpread({}, newDrawerProps), defaultprops), {}, {
391
+ onClose: this.hide.bind(this)
415
392
  });
416
- },
417
- className: getLess(styles, "icon")
418
- }, /*#__PURE__*/React.createElement(CompressOutlined, null)), closable !== false && /*#__PURE__*/React.createElement("div", {
419
- onClick: this.hide.bind(this),
420
- className: getLess(styles, "icon"),
421
- style: {
422
- marginRight: 0
423
393
  }
424
- }, /*#__PURE__*/React.createElement(CloseOutlined, null))), /*#__PURE__*/React.createElement("div", {
425
- className: getLess(styles, "title-content")
426
- }, orgtitle));
427
- var footer = /*#__PURE__*/React.createElement("div", {
428
- className: getLess(styles, "footer")
429
- }, /*#__PURE__*/React.createElement(Button, _extends({
430
- type: "primary",
431
- onClick: function onClick() {
432
- var _this5$formRef$curren;
433
-
434
- var formValue = (_this5$formRef$curren = _this5.formRef.current) === null || _this5$formRef$curren === void 0 ? void 0 : _this5$formRef$curren.getFieldsValue();
435
-
436
- if (showModel == "modal") {
437
- modalProps.onOk && modalProps.onOk(formValue);
438
- } else {
439
- drawerProps.onOk && drawerProps.onOk(formValue);
440
- }
441
- },
442
- icon: /*#__PURE__*/React.createElement(PlusCircleOutlined, null)
443
- }, okButtonProps), "\u4FDD\u5B58"), /*#__PURE__*/React.createElement(Button, {
444
- onClick: this.hide.bind(this),
445
- className: getLess(styles, "button-margin"),
446
- icon: /*#__PURE__*/React.createElement(CloseCircleOutlined, null)
447
- }, "\u53D6\u6D88"));
448
-
449
- if (showModel && showModel == "modal") {
450
- var newModalProps = omit(modalProps, ["visible"]);
451
- newModalProps = _objectSpread({
452
- centered: true,
453
- footer: footer
454
- }, newModalProps);
455
- return /*#__PURE__*/React.createElement(_Modal, _extends({
456
- visible: formVisible,
457
- footer: footer
458
- }, newModalProps, {
459
- onCancel: this.hide.bind(this),
460
- maskClosable: !this.state.isChange,
461
- title: title,
462
- closable: false,
463
- className: this.state.expand ? getLess(styles, "allsreen") : "",
464
- width: this.state.expand ? "100vw" : newModalProps.width,
465
- style: {
466
- maxWidth: "100vw"
467
- }
468
- }), /*#__PURE__*/React.createElement(_Form, _extends({
394
+
395
+ return /*#__PURE__*/React.createElement(Modal, _extends({
396
+ visible: formVisible
397
+ }, modalprops), loading ? /*#__PURE__*/React.createElement(Spin, {
398
+ spinning: loading
399
+ }, /*#__PURE__*/React.createElement(_Form, _extends({
469
400
  ref: this.formRef
470
401
  }, layout, props, {
471
402
  onValuesChange: this.onValuesChange.bind(this),
472
403
  preserve: false
473
- })));
474
- } else if (showModel && showModel == "drawer") {
475
- var newDrawerProps = omit(drawerProps, ["visible", "onOk", "okButtonProps"]);
476
- return /*#__PURE__*/React.createElement(_Drawer, _extends({
477
- visible: formVisible,
478
- footer: footer
479
- }, newDrawerProps, {
480
- onClose: this.hide.bind(this),
481
- maskClosable: !this.state.isChange,
482
- title: title,
483
- closable: false,
484
- width: this.state.expand ? "100vw" : newDrawerProps.width
485
- }), /*#__PURE__*/React.createElement(_Form, _extends({
404
+ }))) : /*#__PURE__*/React.createElement(_Form, _extends({
486
405
  ref: this.formRef
487
406
  }, layout, props, {
488
- onValuesChange: this.onValuesChange.bind(this)
407
+ onValuesChange: this.onValuesChange.bind(this),
408
+ preserve: false
489
409
  })));
490
410
  } else {
491
- return /*#__PURE__*/React.createElement(_Form, _extends({
411
+ return /*#__PURE__*/React.createElement(React.Fragment, null, loading ? /*#__PURE__*/React.createElement(Spin, {
412
+ spinning: loading
413
+ }, /*#__PURE__*/React.createElement(_Form, _extends({
414
+ ref: this.formRef
415
+ }, layout, props, {
416
+ onValuesChange: this.onValuesChange.bind(this)
417
+ }))) : /*#__PURE__*/React.createElement(_Form, _extends({
492
418
  ref: this.formRef
493
419
  }, layout, props, {
494
420
  onValuesChange: this.onValuesChange.bind(this)
495
- }));
421
+ })));
496
422
  }
497
423
  }
498
424
  }, {
@@ -546,4 +472,4 @@ var NscForm = /*#__PURE__*/function (_PureComponent) {
546
472
  }(PureComponent);
547
473
 
548
474
  export default NscForm;
549
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvZm9ybS9Gb3JtLnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJyZXF1ZXN0Iiwib21pdCIsIkJ1dHRvbiIsInN0eWxlcyIsImdldExlc3MiLCJQbHVzQ2lyY2xlT3V0bGluZWQiLCJDbG9zZUNpcmNsZU91dGxpbmVkIiwiQ2xvc2VPdXRsaW5lZCIsIkV4cGFuZE91dGxpbmVkIiwiQ29tcHJlc3NPdXRsaW5lZCIsIk5zY0Zvcm0iLCJwcm9wcyIsImNyZWF0ZVJlZiIsImZvcm1WaXNpYmxlIiwiZm9ybU1vZGFsUHJvcHMiLCJmb3JtRHJhd2VyUHJvcHMiLCJpc0NoYW5nZSIsImV4cGFuZCIsIm5hbWUiLCJmb3JtUmVmIiwiY3VycmVudCIsImdldEZpZWxkRXJyb3IiLCJnZXRGaWVsZEluc3RhbmNlIiwiZ2V0RmllbGRzRXJyb3IiLCJnZXRGaWVsZHNWYWx1ZSIsImdldEZpZWxkVmFsdWUiLCJpc0ZpZWxkc1RvdWNoZWQiLCJpc0ZpZWxkVG91Y2hlZCIsImlzRmllbGRWYWxpZGF0aW5nIiwicmVzZXRGaWVsZHMiLCJvcHRpb25zIiwic2Nyb2xsVG9GaWVsZCIsImZpbGRzIiwic2V0RmllbGRzIiwidmFsdWVzIiwic2V0RmllbGRzVmFsdWUiLCJzdWJtaXQiLCJ1cmwiLCJjYWxsYmFjayIsIm1zZyIsInByb3BzVXJsIiwiZW5jcnlwdEZpZWxkcyIsImVuY3J5cHRQcm9wcHMiLCJFcnJvciIsIm1ldGhvZCIsInJlcXVlc3RVcmwiLCJyZXF1ZXN0RGF0YSIsInJlcXVlc3RFbmNyeXB0IiwicmVxdWVzdFBhcmFtIiwiZGF0YSIsInBhcmFtcyIsInRvTG93ZXJDYXNlIiwidGhlbiIsInJlcyIsImNvZGUiLCJzdWNjZXNzIiwiZXJyb3IiLCJjYXRjaCIsImNvbnNvbGUiLCJsb2ciLCJ2YWxpZGF0ZUZpZWxkcyIsImUiLCJzdGF0ZSIsImNoYW5nZVZhbGlkIiwic2hvd01vZGVsIiwibW9kYWxQcm9wcyIsImRyYXdlclByb3BzIiwiX3RoaXMiLCJvbkNhbmNlbCIsIm9uQ2xvc2UiLCJjb25maXJtIiwidGl0bGUiLCJjYW5jZWxUZXh0Iiwib2tUZXh0IiwiY2VudGVyZWQiLCJvbk9rIiwiaGlkZUZvcm0iLCJyZXNldFZhbHVlIiwic2V0U3RhdGUiLCJ2YWx1ZSIsIml0ZW0iLCJpbmRleCIsImtleSIsImNoaWxkcmVuIiwiQXJyYXkiLCJpc0FycmF5IiwiQ2hpbGRyZW4iLCJtYXAiLCJjaGlsZCIsImNsb25lRWxlbWVudCIsInZhbCIsImFsbFZhbCIsIm9uVmFsdWVzQ2hhbmdlIiwibmV3Q2hpbGRyZW4iLCJsYXlvdXQiLCJsYWJlbENvbCIsInNwYW4iLCJ3cmFwcGVyQ29sIiwib3JndGl0bGUiLCJjbG9zYWJsZSIsIm9rQnV0dG9uUHJvcHMiLCJoaWRlIiwiYmluZCIsIm1hcmdpblJpZ2h0IiwiZm9vdGVyIiwiZm9ybVZhbHVlIiwibmV3TW9kYWxQcm9wcyIsIndpZHRoIiwibWF4V2lkdGgiLCJuZXdEcmF3ZXJQcm9wcyIsInJlbmRlclBhbmVsIiwibmV4dFByb3BzIiwicHJldlN0YXRlIiwiT2JqZWN0IiwiaXMiLCJuZXdTdGF0ZSIsInZpc2libGUiLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU9BLEtBQVAsSUFBZ0JDLGFBQWhCLFFBQXFDLE9BQXJDO0FBV0EsU0FBU0MsT0FBVCxRQUF3Qix1QkFBeEI7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLFNBQWpCO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixXQUFuQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsY0FBbkI7QUFDQSxTQUFTQyxPQUFULFFBQXdCLGFBQXhCO0FBQ0EsU0FDRUMsa0JBREYsRUFFRUMsbUJBRkYsRUFHRUMsYUFIRixFQUlFQyxjQUpGLEVBS0VDLGdCQUxGLFFBTU8sbUJBTlA7O0lBaUJNQyxPOzs7OztBQVVKLG1CQUFZQyxLQUFaLEVBQW1CO0FBQUE7O0FBQUE7O0FBQ2pCLCtCQUFNQSxLQUFOOztBQURpQiw0RUFUVGIsS0FBSyxDQUFDYyxTQUFOLEVBU1M7O0FBQUEsNkRBUlg7QUFDTkMsTUFBQUEsV0FBVyxFQUFFLEtBRFA7QUFFTkMsTUFBQUEsY0FBYyxFQUFFLEVBRlY7QUFHTkMsTUFBQUEsZUFBZSxFQUFFLEVBSFg7QUFJTkMsTUFBQUEsUUFBUSxFQUFFLEtBSko7QUFLTkMsTUFBQUEsTUFBTSxFQUFFO0FBTEYsS0FRVzs7QUFBQTtBQUVsQjs7OztXQWtDRDtBQUNBLDJCQUFjQyxJQUFkLEVBQW9CO0FBQUE7O0FBQ2xCLHNDQUFPLEtBQUtDLE9BQUwsQ0FBYUMsT0FBcEIsMERBQU8sc0JBQXNCQyxhQUF0QixDQUFvQ0gsSUFBcEMsQ0FBUDtBQUNELEssQ0FFRDs7OztXQUNBLDBCQUFpQkEsSUFBakIsRUFBdUI7QUFBQTs7QUFDckIsdUNBQU8sS0FBS0MsT0FBTCxDQUFhQyxPQUFwQiwyREFBTyx1QkFBc0JFLGdCQUF0QixDQUF1Q0osSUFBdkMsQ0FBUDtBQUNELEssQ0FFRDs7OztXQUNBLDBCQUFpQjtBQUFBOztBQUNmLHVDQUFPLEtBQUtDLE9BQUwsQ0FBYUMsT0FBcEIsMkRBQU8sdUJBQXNCRyxjQUF0QixFQUFQO0FBQ0QsSyxDQUVEOzs7O1dBQ0EsMEJBQWlCO0FBQUE7O0FBQ2YsdUNBQU8sS0FBS0osT0FBTCxDQUFhQyxPQUFwQiwyREFBTyx1QkFBc0JJLGNBQXRCLEVBQVA7QUFDRCxLLENBRUQ7Ozs7V0FDQSx1QkFBY04sSUFBZCxFQUFvQjtBQUFBOztBQUNsQix1Q0FBTyxLQUFLQyxPQUFMLENBQWFDLE9BQXBCLDJEQUFPLHVCQUFzQkssYUFBdEIsQ0FBb0NQLElBQXBDLENBQVA7QUFDRCxLLENBRUQ7Ozs7V0FDQSwyQkFBa0I7QUFBQTs7QUFDaEIsdUNBQU8sS0FBS0MsT0FBTCxDQUFhQyxPQUFwQiwyREFBTyx1QkFBc0JNLGVBQXRCLEVBQVA7QUFDRCxLLENBRUQ7Ozs7V0FDQSx3QkFBZVIsSUFBZixFQUFxQjtBQUFBOztBQUNuQix1Q0FBTyxLQUFLQyxPQUFMLENBQWFDLE9BQXBCLDJEQUFPLHVCQUFzQk8sY0FBdEIsQ0FBcUNULElBQXJDLENBQVA7QUFDRCxLLENBRUQ7Ozs7V0FDQSwyQkFBa0JBLElBQWxCLEVBQXdCO0FBQUE7O0FBQ3RCLHVDQUFPLEtBQUtDLE9BQUwsQ0FBYUMsT0FBcEIsMkRBQU8sdUJBQXNCUSxpQkFBdEIsQ0FBd0NWLElBQXhDLENBQVA7QUFDRCxLLENBRUQ7Ozs7V0FDQSx1QkFBYztBQUFBOztBQUNaLHFDQUFLQyxPQUFMLENBQWFDLE9BQWIsa0ZBQXNCUyxXQUF0QjtBQUNEOzs7V0FFRCx1QkFBY1gsSUFBZCxFQUFvQlksT0FBcEIsRUFBNkI7QUFBQTs7QUFDM0Isc0NBQUtYLE9BQUwsQ0FBYUMsT0FBYixvRkFBc0JXLGFBQXRCLENBQW9DYixJQUFwQyxFQUEwQ1ksT0FBMUM7QUFDRDs7O1dBRUQsbUJBQVVFLEtBQVYsRUFBaUI7QUFBQTs7QUFDZixzQ0FBS2IsT0FBTCxDQUFhQyxPQUFiLG9GQUFzQmEsU0FBdEIsQ0FBZ0NELEtBQWhDO0FBQ0Q7OztXQUVELHdCQUFlRSxNQUFmLEVBQXVCO0FBQUE7O0FBQ3JCLHNDQUFLZixPQUFMLENBQWFDLE9BQWIsb0ZBQXNCZSxjQUF0QixDQUFxQ0QsTUFBckM7QUFDRDs7O1dBRUQsa0JBQVM7QUFBQTs7QUFDUCxzQ0FBS2YsT0FBTCxDQUFhQyxPQUFiLG9GQUFzQmdCLE1BQXRCO0FBQ0Q7OztXQUVELGtCQUNFQyxHQURGLEVBRUVQLE9BRkYsRUFHRVEsUUFIRixFQUlFQyxHQUpGLEVBS0U7QUFDQSx3QkFBNkQsS0FBSzVCLEtBQWxFO0FBQUEsVUFBYTZCLFFBQWIsZUFBUUgsR0FBUjtBQUFBLDhDQUF1QkksYUFBdkI7QUFBQSxVQUFzQ0MsYUFBdEMsc0NBQXNELEVBQXREOztBQUNBLFVBQUksQ0FBQ0wsR0FBRCxJQUFRLENBQUNHLFFBQWIsRUFBdUI7QUFDckIsY0FBTSxJQUFJRyxLQUFKLENBQVUsV0FBVixDQUFOO0FBQ0Q7O0FBQ0QsNEJBQTRCYixPQUE1QixDQUFRYyxNQUFSO0FBQUEsVUFBUUEsTUFBUixnQ0FBaUIsTUFBakI7QUFDQSxVQUFJQyxVQUFVLEdBQUdSLEdBQUcsR0FBR0EsR0FBSCxHQUFTRyxRQUE3QjtBQUNBLFVBQUlNLFdBQVcsR0FBRyxLQUFLM0IsT0FBTCxDQUFhQyxPQUFiLENBQXFCSSxjQUFyQixFQUFsQjtBQUNBLFVBQUl1QixjQUFjLEdBQUdMLGFBQXJCO0FBQ0EsVUFBSU0sWUFBWSxHQUFHO0FBQUVKLFFBQUFBLE1BQU0sRUFBRUEsTUFBVjtBQUFrQkssUUFBQUEsSUFBSSxFQUFFSDtBQUF4QixPQUFuQjs7QUFDQSxVQUFJaEIsT0FBSixFQUFhO0FBQ1gsWUFBUW1CLElBQVIsR0FBMkNuQixPQUEzQyxDQUFRbUIsSUFBUjtBQUFBLFlBQWNSLGFBQWQsR0FBMkNYLE9BQTNDLENBQWNXLGFBQWQ7QUFBQSxZQUFnQ1MsTUFBaEMsNEJBQTJDcEIsT0FBM0M7O0FBQ0FrQixRQUFBQSxZQUFZLG1DQUFRQSxZQUFSLEdBQXlCRSxNQUF6QixDQUFaOztBQUNBLFlBQUlELElBQUosRUFBVTtBQUNSLGlCQUFPRCxZQUFZLENBQUNDLElBQXBCOztBQUNBLGNBQUlMLE1BQU0sQ0FBQ08sV0FBUCxNQUF3QixLQUE1QixFQUFtQztBQUNqQ0gsWUFBQUEsWUFBWSxpREFBUUEsWUFBUixHQUF5QkUsTUFBekI7QUFBaUNBLGNBQUFBLE1BQU0sRUFBRUQ7QUFBekMsY0FBWjtBQUNELFdBRkQsTUFFTztBQUNMRCxZQUFBQSxZQUFZLGlEQUFRQSxZQUFSLEdBQXlCRSxNQUF6QjtBQUFpQ0QsY0FBQUEsSUFBSSxFQUFFQTtBQUF2QyxjQUFaO0FBQ0Q7QUFDRjs7QUFDRCxZQUFJUixhQUFKLEVBQW1CO0FBQ2pCTSxVQUFBQSxjQUFjLEdBQUdOLGFBQWpCO0FBQ0Q7QUFDRjs7QUFFRHpDLE1BQUFBLE9BQU8sQ0FBQzZDLFVBQUQsa0NBQ0ZHLFlBREU7QUFFTFAsUUFBQUEsYUFBYSxFQUFFTTtBQUZWLFNBQVAsQ0FJR0ssSUFKSCxDQUlRLFVBQVVDLEdBQVYsRUFBb0I7QUFDeEIsWUFBUUMsSUFBUixHQUFpQkQsR0FBakIsQ0FBUUMsSUFBUjs7QUFDQSxZQUFJZixHQUFKLEVBQVM7QUFDUCxjQUFJZSxJQUFJLEtBQUssR0FBYixFQUFrQjtBQUNoQixxQkFBUUMsT0FBUixDQUFnQixNQUFoQjtBQUNELFdBRkQsTUFFTztBQUNMLHFCQUFRQyxLQUFSLENBQWMsTUFBZDtBQUNEO0FBQ0Y7O0FBQ0RsQixRQUFBQSxRQUFRLElBQUlBLFFBQVEsQ0FBQ2UsR0FBRCxDQUFwQjtBQUNELE9BZEgsRUFlR0ksS0FmSCxDQWVTLFVBQVVELEtBQVYsRUFBc0I7QUFDM0JFLFFBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLE9BQVosRUFBcUJILEtBQXJCO0FBQ0QsT0FqQkg7QUFrQkQ7OztXQUVELHdCQUFldEMsSUFBZixFQUFxQjtBQUNuQixhQUFPLEtBQUtDLE9BQUwsQ0FBYUMsT0FBYixDQUFxQndDLGNBQXJCLENBQW9DMUMsSUFBcEMsQ0FBUDtBQUNEOzs7V0FFRCxjQUFLMkMsQ0FBTCxFQUFRO0FBQ04sVUFBUTdDLFFBQVIsR0FBcUIsS0FBSzhDLEtBQTFCLENBQVE5QyxRQUFSO0FBQ0EseUJBS0ksS0FBS0wsS0FMVDtBQUFBLCtDQUNFb0QsV0FERjtBQUFBLFVBQ0VBLFdBREYsc0NBQ2dCLElBRGhCO0FBQUEsVUFFRUMsU0FGRixnQkFFRUEsU0FGRjtBQUFBLCtDQUdFQyxVQUhGO0FBQUEsVUFHRUEsVUFIRixzQ0FHZSxFQUhmO0FBQUEsK0NBSUVDLFdBSkY7QUFBQSxVQUlFQSxXQUpGLHNDQUlnQixFQUpoQjs7QUFNQSxVQUFJQyxLQUFLLEdBQUcsSUFBWjs7QUFDQSxVQUFRQyxRQUFSLEdBQXFCSCxVQUFyQixDQUFRRyxRQUFSO0FBQ0EsVUFBUUMsT0FBUixHQUFvQkgsV0FBcEIsQ0FBUUcsT0FBUjs7QUFDQSxVQUFJTixXQUFXLElBQUkvQyxRQUFuQixFQUE2QjtBQUMzQixlQUFNc0QsT0FBTixDQUFjO0FBQ1pDLFVBQUFBLEtBQUssRUFBRSx1QkFESztBQUVaQyxVQUFBQSxVQUFVLEVBQUUsSUFGQTtBQUdaQyxVQUFBQSxNQUFNLEVBQUUsSUFISTtBQUlaQyxVQUFBQSxRQUFRLEVBQUUsSUFKRTtBQUtaQyxVQUFBQSxJQUxZLGtCQUtMO0FBQ0wsZ0JBQUlYLFNBQVMsSUFBSSxRQUFiLElBQXlCSyxPQUE3QixFQUFzQztBQUNwQ0EsY0FBQUEsT0FBTyxDQUFDUixDQUFELENBQVA7QUFDRCxhQUZELE1BRU8sSUFBSUcsU0FBUyxJQUFJLE9BQWIsSUFBd0JJLFFBQTVCLEVBQXNDO0FBQzNDQSxjQUFBQSxRQUFRLENBQUNQLENBQUQsQ0FBUjtBQUNELGFBRk0sTUFFQTtBQUNMTSxjQUFBQSxLQUFLLENBQUNTLFFBQU47QUFDRDtBQUNGO0FBYlcsU0FBZDtBQWVELE9BaEJELE1BZ0JPO0FBQ0wsWUFBSVosU0FBUyxJQUFJLFFBQWIsSUFBeUJLLE9BQTdCLEVBQXNDO0FBQ3BDQSxVQUFBQSxPQUFPLENBQUNSLENBQUQsQ0FBUDtBQUNELFNBRkQsTUFFTyxJQUFJRyxTQUFTLElBQUksT0FBYixJQUF3QkksUUFBNUIsRUFBc0M7QUFDM0NBLFVBQUFBLFFBQVEsQ0FBQ1AsQ0FBRCxDQUFSO0FBQ0QsU0FGTSxNQUVBO0FBQ0xNLFVBQUFBLEtBQUssQ0FBQ1MsUUFBTjtBQUNEO0FBQ0Y7QUFDRjs7O1dBRUQsb0JBQTRCO0FBQUE7O0FBQUEsVUFBbkJDLFVBQW1CLHVFQUFOLElBQU07QUFDMUIsV0FBS0MsUUFBTCxDQUNFO0FBQ0VqRSxRQUFBQSxXQUFXLEVBQUUsS0FEZjtBQUVFRyxRQUFBQSxRQUFRLEVBQUU7QUFGWixPQURGLEVBS0UsWUFBTTtBQUNKLFlBQUk2RCxVQUFKLEVBQWdCO0FBQUE7O0FBQ2QsbUNBQUEsTUFBSSxDQUFDMUQsT0FBTCxDQUFhQyxPQUFiLGdGQUFzQlMsV0FBdEI7QUFDRDtBQUNGLE9BVEg7QUFXRDs7O1dBRUQsa0JBQVNrRCxLQUFULEVBQXlDO0FBQUE7O0FBQUEsVUFBbkJGLFVBQW1CLHVFQUFOLElBQU07QUFDdkMsV0FBS0MsUUFBTCxDQUNFO0FBQ0VqRSxRQUFBQSxXQUFXLEVBQUUsSUFEZjtBQUVFRyxRQUFBQSxRQUFRLEVBQUU7QUFGWixPQURGLEVBS0UsWUFBTTtBQUNKLFlBQUkrRCxLQUFKLEVBQVc7QUFBQTs7QUFDVCxtQ0FBQSxNQUFJLENBQUM1RCxPQUFMLENBQWFDLE9BQWIsZ0ZBQXNCZSxjQUF0QixDQUFxQzRDLEtBQXJDO0FBQ0QsU0FGRCxNQUVPO0FBQUE7O0FBQ0wsY0FBSUYsVUFBSixFQUFnQiwwQkFBQSxNQUFJLENBQUMxRCxPQUFMLENBQWFDLE9BQWIsa0ZBQXNCUyxXQUF0QjtBQUNqQjtBQUNGLE9BWEg7QUFhRDs7O1dBRUQsc0JBQWFtRCxJQUFiLEVBQThCO0FBQUEsVUFBWEMsS0FBVyx1RUFBSCxDQUFHOztBQUM1QixVQUFJZCxLQUFLLEdBQUcsSUFBWjs7QUFDQSxVQUFJLE9BQU9hLElBQVAsSUFBZSxRQUFuQixFQUE2QixPQUFPQSxJQUFQO0FBQzdCLFVBQUlyRSxLQUFLLEdBQUcsRUFBWjtBQUNBQSxNQUFBQSxLQUFLLENBQUN1RSxHQUFOLEdBQVlELEtBQVo7O0FBQ0EsVUFBSTtBQUNGLFlBQUlELElBQUksQ0FBQ3JFLEtBQUwsSUFBY3FFLElBQUksQ0FBQ3JFLEtBQUwsQ0FBV3dFLFFBQTdCLEVBQXVDO0FBQ3JDLGNBQUlDLEtBQUssQ0FBQ0MsT0FBTixDQUFjTCxJQUFJLENBQUNyRSxLQUFMLENBQVd3RSxRQUF6QixDQUFKLEVBQXdDO0FBQ3RDeEUsWUFBQUEsS0FBSyxDQUFDd0UsUUFBTixHQUFpQnJGLEtBQUssQ0FBQ3dGLFFBQU4sQ0FBZUMsR0FBZixDQUNmUCxJQUFJLENBQUNyRSxLQUFMLENBQVd3RSxRQURJLEVBRWYsVUFBVUssS0FBVixFQUFpQlAsS0FBakIsRUFBd0I7QUFDdEIscUJBQU9kLEtBQUssQ0FBQ3NCLFlBQU4sQ0FBbUJELEtBQW5CLEVBQTBCUCxLQUExQixDQUFQO0FBQ0QsYUFKYyxDQUFqQjtBQU1ELFdBUEQsTUFPTztBQUNMdEUsWUFBQUEsS0FBSyxDQUFDd0UsUUFBTixHQUFpQixLQUFLTSxZQUFMLENBQWtCVCxJQUFJLENBQUNyRSxLQUFMLENBQVd3RSxRQUE3QixFQUF1QyxDQUF2QyxDQUFqQjtBQUNEO0FBQ0Y7O0FBQ0QsNEJBQU9yRixLQUFLLENBQUMyRixZQUFOLENBQW1CVCxJQUFuQixFQUF5QnJFLEtBQXpCLENBQVA7QUFDRCxPQWRELENBY0UsT0FBT2tELENBQVAsRUFBVTtBQUNWLGVBQU8sSUFBUDtBQUNEO0FBQ0Y7OztXQUNELHdCQUFlNkIsR0FBZixFQUFvQkMsTUFBcEIsRUFBNEI7QUFDMUIsVUFBUUMsY0FBUixHQUEyQixLQUFLakYsS0FBaEMsQ0FBUWlGLGNBQVI7QUFDQSxXQUFLZCxRQUFMLENBQWM7QUFDWjlELFFBQUFBLFFBQVEsRUFBRTtBQURFLE9BQWQ7QUFHQTRFLE1BQUFBLGNBQWMsSUFBSUEsY0FBYyxDQUFDRixHQUFELEVBQU1DLE1BQU4sQ0FBaEM7QUFDRDs7O1dBQ0QscUJBQVlFLFdBQVosRUFBeUJsRixLQUF6QixFQUFnQztBQUFBOztBQUM5Qix5QkFLSSxLQUFLQSxLQUxUO0FBQUEsVUFDRXFELFNBREYsZ0JBQ0VBLFNBREY7QUFBQSwrQ0FFRUUsV0FGRjtBQUFBLFVBRUVBLFdBRkYsc0NBRWdCLEVBRmhCO0FBQUEsK0NBR0VELFVBSEY7QUFBQSxVQUdFQSxVQUhGLHNDQUdlLEVBSGY7QUFBQSwrQ0FJRUYsV0FKRjtBQUFBLFVBSUVBLFdBSkYsc0NBSWdCLElBSmhCO0FBTUEsVUFBUWxELFdBQVIsR0FBd0IsS0FBS2lELEtBQTdCLENBQVFqRCxXQUFSO0FBQ0EsVUFBTWlGLE1BQU0sR0FBRztBQUNiQyxRQUFBQSxRQUFRLEVBQUU7QUFBRUMsVUFBQUEsSUFBSSxFQUFFO0FBQVIsU0FERztBQUViQyxRQUFBQSxVQUFVLEVBQUU7QUFBRUQsVUFBQUEsSUFBSSxFQUFFO0FBQVI7QUFGQyxPQUFmO0FBSUEsVUFBSUUsUUFBUSxHQUFHbEMsU0FBUyxJQUFJLE9BQWIsR0FBdUJDLFVBQVUsQ0FBQ00sS0FBbEMsR0FBMENMLFdBQVcsQ0FBQ0ssS0FBckU7QUFDQSxVQUFNNEIsUUFBUSxHQUNabkMsU0FBUyxJQUFJLE9BQWIsR0FBdUJDLFVBQVUsQ0FBQ2tDLFFBQWxDLEdBQTZDakMsV0FBVyxDQUFDaUMsUUFEM0Q7QUFFQSxVQUFNQyxhQUFhLEdBQ2pCcEMsU0FBUyxJQUFJLE9BQWIsR0FDSUMsVUFBVSxDQUFDbUMsYUFBWCxJQUE0QixFQURoQyxHQUVJbEMsV0FBVyxDQUFDa0MsYUFBWixJQUE2QixFQUhuQztBQUlBLFVBQU03QixLQUFLLGdCQUNUO0FBQUssUUFBQSxTQUFTLEVBQUVuRSxPQUFPLENBQUNELE1BQUQsRUFBUyxPQUFUO0FBQXZCLHNCQUNFO0FBQUssUUFBQSxTQUFTLEVBQUVDLE9BQU8sQ0FBQ0QsTUFBRCxFQUFTLE9BQVQ7QUFBdkIsU0FDRyxDQUFDLEtBQUsyRCxLQUFMLENBQVc3QyxNQUFaLGlCQUNDO0FBQ0UsUUFBQSxPQUFPLEVBQUUsbUJBQU07QUFDYixVQUFBLE1BQUksQ0FBQzZELFFBQUwsQ0FBYztBQUFFN0QsWUFBQUEsTUFBTSxFQUFFO0FBQVYsV0FBZDtBQUNELFNBSEg7QUFJRSxRQUFBLFNBQVMsRUFBRWIsT0FBTyxDQUFDRCxNQUFELEVBQVMsTUFBVDtBQUpwQixzQkFNRSxvQkFBQyxjQUFELE9BTkYsQ0FGSixFQVdHLEtBQUsyRCxLQUFMLENBQVc3QyxNQUFYLGlCQUNDO0FBQ0UsUUFBQSxPQUFPLEVBQUUsbUJBQU07QUFDYixVQUFBLE1BQUksQ0FBQzZELFFBQUwsQ0FBYztBQUFFN0QsWUFBQUEsTUFBTSxFQUFFO0FBQVYsV0FBZDtBQUNELFNBSEg7QUFJRSxRQUFBLFNBQVMsRUFBRWIsT0FBTyxDQUFDRCxNQUFELEVBQVMsTUFBVDtBQUpwQixzQkFNRSxvQkFBQyxnQkFBRCxPQU5GLENBWkosRUFxQkdnRyxRQUFRLEtBQUssS0FBYixpQkFDQztBQUNFLFFBQUEsT0FBTyxFQUFFLEtBQUtFLElBQUwsQ0FBVUMsSUFBVixDQUFlLElBQWYsQ0FEWDtBQUVFLFFBQUEsU0FBUyxFQUFFbEcsT0FBTyxDQUFDRCxNQUFELEVBQVMsTUFBVCxDQUZwQjtBQUdFLFFBQUEsS0FBSyxFQUFFO0FBQUVvRyxVQUFBQSxXQUFXLEVBQUU7QUFBZjtBQUhULHNCQUtFLG9CQUFDLGFBQUQsT0FMRixDQXRCSixDQURGLGVBZ0NFO0FBQUssUUFBQSxTQUFTLEVBQUVuRyxPQUFPLENBQUNELE1BQUQsRUFBUyxlQUFUO0FBQXZCLFNBQW1EK0YsUUFBbkQsQ0FoQ0YsQ0FERjtBQW9DQSxVQUFNTSxNQUFNLGdCQUNWO0FBQUssUUFBQSxTQUFTLEVBQUVwRyxPQUFPLENBQUNELE1BQUQsRUFBUyxRQUFUO0FBQXZCLHNCQUNFLG9CQUFDLE1BQUQ7QUFDRSxRQUFBLElBQUksRUFBQyxTQURQO0FBRUUsUUFBQSxPQUFPLEVBQUUsbUJBQU07QUFBQTs7QUFDYixjQUFNc0csU0FBUyw0QkFBRyxNQUFJLENBQUN0RixPQUFMLENBQWFDLE9BQWhCLDBEQUFHLHNCQUFzQkksY0FBdEIsRUFBbEI7O0FBQ0EsY0FBSXdDLFNBQVMsSUFBSSxPQUFqQixFQUEwQjtBQUN4QkMsWUFBQUEsVUFBVSxDQUFDVSxJQUFYLElBQW1CVixVQUFVLENBQUNVLElBQVgsQ0FBZ0I4QixTQUFoQixDQUFuQjtBQUNELFdBRkQsTUFFTztBQUNMdkMsWUFBQUEsV0FBVyxDQUFDUyxJQUFaLElBQW9CVCxXQUFXLENBQUNTLElBQVosQ0FBaUI4QixTQUFqQixDQUFwQjtBQUNEO0FBQ0YsU0FUSDtBQVVFLFFBQUEsSUFBSSxlQUFFLG9CQUFDLGtCQUFEO0FBVlIsU0FXTUwsYUFYTixrQkFERixlQWlCRSxvQkFBQyxNQUFEO0FBQ0UsUUFBQSxPQUFPLEVBQUUsS0FBS0MsSUFBTCxDQUFVQyxJQUFWLENBQWUsSUFBZixDQURYO0FBRUUsUUFBQSxTQUFTLEVBQUVsRyxPQUFPLENBQUNELE1BQUQsRUFBUyxlQUFULENBRnBCO0FBR0UsUUFBQSxJQUFJLGVBQUUsb0JBQUMsbUJBQUQ7QUFIUix3QkFqQkYsQ0FERjs7QUEyQkEsVUFBSTZELFNBQVMsSUFBSUEsU0FBUyxJQUFJLE9BQTlCLEVBQXVDO0FBQ3JDLFlBQUkwQyxhQUFhLEdBQUd6RyxJQUFJLENBQUNnRSxVQUFELEVBQWEsQ0FBQyxTQUFELENBQWIsQ0FBeEI7QUFDQXlDLFFBQUFBLGFBQWE7QUFBS2hDLFVBQUFBLFFBQVEsRUFBRSxJQUFmO0FBQXFCOEIsVUFBQUEsTUFBTSxFQUFOQTtBQUFyQixXQUFnQ0UsYUFBaEMsQ0FBYjtBQUNBLDRCQUNFO0FBQ0UsVUFBQSxPQUFPLEVBQUU3RixXQURYO0FBRUUsVUFBQSxNQUFNLEVBQUUyRjtBQUZWLFdBR01FLGFBSE47QUFJRSxVQUFBLFFBQVEsRUFBRSxLQUFLTCxJQUFMLENBQVVDLElBQVYsQ0FBZSxJQUFmLENBSlo7QUFLRSxVQUFBLFlBQVksRUFBRSxDQUFDLEtBQUt4QyxLQUFMLENBQVc5QyxRQUw1QjtBQU1FLFVBQUEsS0FBSyxFQUFFdUQsS0FOVDtBQU9FLFVBQUEsUUFBUSxFQUFFLEtBUFo7QUFRRSxVQUFBLFNBQVMsRUFBRSxLQUFLVCxLQUFMLENBQVc3QyxNQUFYLEdBQW9CYixPQUFPLENBQUNELE1BQUQsRUFBUyxVQUFULENBQTNCLEdBQWtELEVBUi9EO0FBU0UsVUFBQSxLQUFLLEVBQUUsS0FBSzJELEtBQUwsQ0FBVzdDLE1BQVgsR0FBb0IsT0FBcEIsR0FBOEJ5RixhQUFhLENBQUNDLEtBVHJEO0FBVUUsVUFBQSxLQUFLLEVBQUU7QUFBRUMsWUFBQUEsUUFBUSxFQUFFO0FBQVo7QUFWVCx5QkFZRTtBQUNFLFVBQUEsR0FBRyxFQUFFLEtBQUt6RjtBQURaLFdBRU0yRSxNQUZOLEVBR01uRixLQUhOO0FBSUUsVUFBQSxjQUFjLEVBQUUsS0FBS2lGLGNBQUwsQ0FBb0JVLElBQXBCLENBQXlCLElBQXpCLENBSmxCO0FBS0UsVUFBQSxRQUFRLEVBQUU7QUFMWixXQVpGLENBREY7QUFzQkQsT0F6QkQsTUF5Qk8sSUFBSXRDLFNBQVMsSUFBSUEsU0FBUyxJQUFJLFFBQTlCLEVBQXdDO0FBQzdDLFlBQUk2QyxjQUFjLEdBQUc1RyxJQUFJLENBQUNpRSxXQUFELEVBQWMsQ0FDckMsU0FEcUMsRUFFckMsTUFGcUMsRUFHckMsZUFIcUMsQ0FBZCxDQUF6QjtBQUtBLDRCQUNFO0FBQ0UsVUFBQSxPQUFPLEVBQUVyRCxXQURYO0FBRUUsVUFBQSxNQUFNLEVBQUUyRjtBQUZWLFdBR01LLGNBSE47QUFJRSxVQUFBLE9BQU8sRUFBRSxLQUFLUixJQUFMLENBQVVDLElBQVYsQ0FBZSxJQUFmLENBSlg7QUFLRSxVQUFBLFlBQVksRUFBRSxDQUFDLEtBQUt4QyxLQUFMLENBQVc5QyxRQUw1QjtBQU1FLFVBQUEsS0FBSyxFQUFFdUQsS0FOVDtBQU9FLFVBQUEsUUFBUSxFQUFFLEtBUFo7QUFRRSxVQUFBLEtBQUssRUFBRSxLQUFLVCxLQUFMLENBQVc3QyxNQUFYLEdBQW9CLE9BQXBCLEdBQThCNEYsY0FBYyxDQUFDRjtBQVJ0RCx5QkFVRTtBQUNFLFVBQUEsR0FBRyxFQUFFLEtBQUt4RjtBQURaLFdBRU0yRSxNQUZOLEVBR01uRixLQUhOO0FBSUUsVUFBQSxjQUFjLEVBQUUsS0FBS2lGLGNBQUwsQ0FBb0JVLElBQXBCLENBQXlCLElBQXpCO0FBSmxCLFdBVkYsQ0FERjtBQW1CRCxPQXpCTSxNQXlCQTtBQUNMLDRCQUNFO0FBQ0UsVUFBQSxHQUFHLEVBQUUsS0FBS25GO0FBRFosV0FFTTJFLE1BRk4sRUFHTW5GLEtBSE47QUFJRSxVQUFBLGNBQWMsRUFBRSxLQUFLaUYsY0FBTCxDQUFvQlUsSUFBcEIsQ0FBeUIsSUFBekI7QUFKbEIsV0FERjtBQVFEO0FBQ0Y7OztXQUNELGtCQUFTO0FBQ1AsVUFBTTNGLEtBQUssR0FBR1YsSUFBSSxDQUFDLEtBQUtVLEtBQU4sRUFBYSxDQUM3QixNQUQ2QixFQUU3QixXQUY2QixFQUc3QixZQUg2QixFQUk3QixhQUo2QixFQUs3QixLQUw2QixFQU03QixlQU42QixFQU83QixhQVA2QixDQUFiLENBQWxCO0FBVUEsMEJBQU8sMENBQUcsS0FBS21HLFdBQUwsQ0FBaUJuRyxLQUFLLENBQUN3RSxRQUF2QixFQUFpQ3hFLEtBQWpDLENBQUgsQ0FBUDtBQUNEOzs7V0FqWkQsa0NBQWdDb0csU0FBaEMsRUFBMkNDLFNBQTNDLEVBQXNEO0FBQ3BELFVBQVEvQyxVQUFSLEdBQStDOEMsU0FBL0MsQ0FBUTlDLFVBQVI7QUFBQSxVQUFvQkMsV0FBcEIsR0FBK0M2QyxTQUEvQyxDQUFvQjdDLFdBQXBCO0FBQUEsVUFBaUNGLFNBQWpDLEdBQStDK0MsU0FBL0MsQ0FBaUMvQyxTQUFqQztBQUNBLFVBQVFsRCxjQUFSLEdBQTRDa0csU0FBNUMsQ0FBUWxHLGNBQVI7QUFBQSxVQUF3QkMsZUFBeEIsR0FBNENpRyxTQUE1QyxDQUF3QmpHLGVBQXhCOztBQUNBLFVBQUlpRCxTQUFTLElBQUksT0FBakIsRUFBMEI7QUFDeEI7QUFDQSxZQUFJLENBQUNpRCxNQUFNLENBQUNDLEVBQVAsQ0FBVXBHLGNBQVYsRUFBMEJtRCxVQUExQixDQUFMLEVBQTRDO0FBQzFDLGNBQUlrRCxRQUFRLEdBQUc7QUFDYnBHLFlBQUFBLGVBQWUsRUFBRWtEO0FBREosV0FBZjs7QUFHQSxjQUFJLENBQUFBLFVBQVUsU0FBVixJQUFBQSxVQUFVLFdBQVYsWUFBQUEsVUFBVSxDQUFFbUQsT0FBWixNQUF3QixJQUF4QixJQUFnQyxDQUFBbkQsVUFBVSxTQUFWLElBQUFBLFVBQVUsV0FBVixZQUFBQSxVQUFVLENBQUVtRCxPQUFaLE1BQXdCQyxTQUE1RCxFQUF1RTtBQUNyRUYsWUFBQUEsUUFBUSxDQUFDdEcsV0FBVCxHQUF1Qm9ELFVBQXZCLGFBQXVCQSxVQUF2Qix1QkFBdUJBLFVBQVUsQ0FBRW1ELE9BQW5DO0FBQ0Q7O0FBQ0QsaUJBQU9ELFFBQVA7QUFDRDtBQUNGLE9BWEQsTUFXTyxJQUFJbkQsU0FBUyxJQUFJLFFBQWpCLEVBQTJCO0FBQ2hDO0FBQ0EsWUFBSSxDQUFDaUQsTUFBTSxDQUFDQyxFQUFQLENBQVVuRyxlQUFWLEVBQTJCbUQsV0FBM0IsQ0FBTCxFQUE4QztBQUM1QyxjQUFJaUQsU0FBUSxHQUFHO0FBQ2JwRyxZQUFBQSxlQUFlLEVBQUVtRDtBQURKLFdBQWY7O0FBR0EsY0FDRSxDQUFBQSxXQUFXLFNBQVgsSUFBQUEsV0FBVyxXQUFYLFlBQUFBLFdBQVcsQ0FBRWtELE9BQWIsTUFBeUIsSUFBekIsSUFDQSxDQUFBbEQsV0FBVyxTQUFYLElBQUFBLFdBQVcsV0FBWCxZQUFBQSxXQUFXLENBQUVrRCxPQUFiLE1BQXlCQyxTQUYzQixFQUdFO0FBQ0FGLFlBQUFBLFNBQVEsQ0FBQ3RHLFdBQVQsR0FBdUJxRCxXQUF2QixhQUF1QkEsV0FBdkIsdUJBQXVCQSxXQUFXLENBQUVrRCxPQUFwQztBQUNEOztBQUNELGlCQUFPRCxTQUFQO0FBQ0Q7QUFDRjs7QUFDRCxhQUFPLElBQVA7QUFDRDs7OztFQTVDbUJwSCxhOztBQWlhdEIsZUFBZVcsT0FBZiIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBEZXNjcmlwdHRpb2466KGo5Y2V57uE5Lu2XHJcbiAqIEB2ZXJzaW9uOlxyXG4gKiBAQXV0aG9yOiByeHpodVxyXG4gKiBARGF0ZTogMjAyMS0wNC0wOSAwOToxODozNFxyXG4gKiBATGFzdEVkaXRvcnM6IHJ4emh1XHJcbiAqIEBMYXN0RWRpdFRpbWU6IDIwMjEtMDQtMjMgMTU6MjM6NTRcclxuICovXHJcbmltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7XHJcbiAgRm9ybSxcclxuICBGb3JtUHJvcHMsXHJcbiAgTW9kYWwsXHJcbiAgRHJhd2VyLFxyXG4gIE1vZGFsUHJvcHMsXHJcbiAgRHJhd2VyUHJvcHMsXHJcbiAgbWVzc2FnZSxcclxufSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgeyBGb3JtSW5zdGFuY2UgfSBmcm9tIFwiYW50ZC9saWIvZm9ybVwiO1xyXG5pbXBvcnQgeyByZXF1ZXN0IH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQgb21pdCBmcm9tIFwib21pdC5qc1wiO1xyXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi9idXR0b25cIjtcclxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9pbmRleC5sZXNzXCI7XHJcbmltcG9ydCB7IGdldExlc3MgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBQbHVzQ2lyY2xlT3V0bGluZWQsXHJcbiAgQ2xvc2VDaXJjbGVPdXRsaW5lZCxcclxuICBDbG9zZU91dGxpbmVkLFxyXG4gIEV4cGFuZE91dGxpbmVkLFxyXG4gIENvbXByZXNzT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCBQb3Bjb25maXJtIGZyb20gXCIuLi9wb3Bjb25maXJtXCI7XHJcbmludGVyZmFjZSBJRm9ybVByb3BzIGV4dGVuZHMgRm9ybVByb3BzIHtcclxuICBzaG93TW9kZWw/OiBcIm1vZGFsXCIgfCBcImRyYXdlclwiO1xyXG4gIG1vZGFsUHJvcHM/OiBNb2RhbFByb3BzO1xyXG4gIGRyYXdlclByb3BzPzogRHJhd2VyUHJvcHMgJiB7IG9uT2s/OiBhbnk7IG9rQnV0dG9uUHJvcHM/OiBPYmplY3QgfTtcclxuICB1cmw/OiBzdHJpbmc7XHJcbiAgZW5jcnlwdEZpZWxkcz86IEFycmF5PFN0cmluZz47XHJcbiAgY2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+aVsOaNruS/ruaUueWFs+mXreagoemqjFxyXG59XHJcblxyXG5jbGFzcyBOc2NGb3JtIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxJRm9ybVByb3BzPiB7XHJcbiAgZm9ybVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxGb3JtSW5zdGFuY2U+KCk7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBmb3JtVmlzaWJsZTogZmFsc2UsXHJcbiAgICBmb3JtTW9kYWxQcm9wczoge30sXHJcbiAgICBmb3JtRHJhd2VyUHJvcHM6IHt9LFxyXG4gICAgaXNDaGFuZ2U6IGZhbHNlLFxyXG4gICAgZXhwYW5kOiBmYWxzZSxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhuZXh0UHJvcHMsIHByZXZTdGF0ZSkge1xyXG4gICAgY29uc3QgeyBtb2RhbFByb3BzLCBkcmF3ZXJQcm9wcywgc2hvd01vZGVsIH0gPSBuZXh0UHJvcHM7XHJcbiAgICBjb25zdCB7IGZvcm1Nb2RhbFByb3BzLCBmb3JtRHJhd2VyUHJvcHMgfSA9IHByZXZTdGF0ZTtcclxuICAgIGlmIChzaG93TW9kZWwgPT0gXCJtb2RhbFwiKSB7XHJcbiAgICAgIC8vIEpTT04uc3RyaW5naWZ5KGZvcm1Nb2RhbFByb3BzKSAhPT0gSlNPTi5zdHJpbmdpZnkobW9kYWxQcm9wcylcclxuICAgICAgaWYgKCFPYmplY3QuaXMoZm9ybU1vZGFsUHJvcHMsIG1vZGFsUHJvcHMpKSB7XHJcbiAgICAgICAgbGV0IG5ld1N0YXRlID0ge1xyXG4gICAgICAgICAgZm9ybURyYXdlclByb3BzOiBtb2RhbFByb3BzLFxyXG4gICAgICAgIH0gYXMgYW55O1xyXG4gICAgICAgIGlmIChtb2RhbFByb3BzPy52aXNpYmxlICE9PSBudWxsICYmIG1vZGFsUHJvcHM/LnZpc2libGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgbmV3U3RhdGUuZm9ybVZpc2libGUgPSBtb2RhbFByb3BzPy52aXNpYmxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3U3RhdGU7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoc2hvd01vZGVsID09IFwiZHJhd2VyXCIpIHtcclxuICAgICAgLy8gSlNPTi5zdHJpbmdpZnkoZm9ybURyYXdlclByb3BzKSAhPT0gSlNPTi5zdHJpbmdpZnkoZHJhd2VyUHJvcHMpXHJcbiAgICAgIGlmICghT2JqZWN0LmlzKGZvcm1EcmF3ZXJQcm9wcywgZHJhd2VyUHJvcHMpKSB7XHJcbiAgICAgICAgbGV0IG5ld1N0YXRlID0ge1xyXG4gICAgICAgICAgZm9ybURyYXdlclByb3BzOiBkcmF3ZXJQcm9wcyxcclxuICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBkcmF3ZXJQcm9wcz8udmlzaWJsZSAhPT0gbnVsbCAmJlxyXG4gICAgICAgICAgZHJhd2VyUHJvcHM/LnZpc2libGUgIT09IHVuZGVmaW5lZFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgbmV3U3RhdGUuZm9ybVZpc2libGUgPSBkcmF3ZXJQcm9wcz8udmlzaWJsZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5ld1N0YXRlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8v6I635Y+W5a+55bqU5a2X5q615ZCN55qE6ZSZ6K+v5L+h5oGvXHJcbiAgZ2V0RmllbGRFcnJvcihuYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkRXJyb3IobmFtZSk7XHJcbiAgfVxyXG5cclxuICAvL+iOt+WPluWvueW6lOWtl+auteWunuS+i1xyXG4gIGdldEZpZWxkSW5zdGFuY2UobmFtZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZEluc3RhbmNlKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLy/ojrflj5bkuIDnu4TlrZfmrrXlkI3lr7nlupTnmoTplJnor6/kv6Hmga/vvIzov5Tlm57kuLrmlbDnu4TlvaLlvI9cclxuICBnZXRGaWVsZHNFcnJvcigpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRzRXJyb3IoKTtcclxuICB9XHJcblxyXG4gIC8v6I635Y+W5LiA57uE5a2X5q615ZCN5a+55bqU55qE5YC877yM5Lya5oyJ54Wn5a+55bqU57uT5p6E6L+U5ZueXHJcbiAgZ2V0RmllbGRzVmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICAvL+iOt+WPluWvueW6lOWtl+auteWQjeeahOWAvFxyXG4gIGdldEZpZWxkVmFsdWUobmFtZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZFZhbHVlKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLy/mo4Dmn6XkuIDnu4TlrZfmrrXmmK/lkKbooqvnlKjmiLfmk43kvZzov4dcclxuICBpc0ZpZWxkc1RvdWNoZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmlzRmllbGRzVG91Y2hlZCgpO1xyXG4gIH1cclxuXHJcbiAgLy/mo4Dmn6Xlr7nlupTlrZfmrrXmmK/lkKbooqvnlKjmiLfmk43kvZzov4dcclxuICBpc0ZpZWxkVG91Y2hlZChuYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmlzRmllbGRUb3VjaGVkKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLy/mo4Dmn6XkuIDnu4TlrZfmrrXmmK/lkKbmraPlnKjmoKHpqoxcclxuICBpc0ZpZWxkVmFsaWRhdGluZyhuYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmlzRmllbGRWYWxpZGF0aW5nKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLy/ph43nva7kuIDnu4TlrZfmrrXliLBcclxuICByZXNldEZpZWxkcygpIHtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVG9GaWVsZChuYW1lLCBvcHRpb25zKSB7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2Nyb2xsVG9GaWVsZChuYW1lLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHNldEZpZWxkcyhmaWxkcykge1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNldEZpZWxkcyhmaWxkcyk7XHJcbiAgfVxyXG5cclxuICBzZXRGaWVsZHNWYWx1ZSh2YWx1ZXMpIHtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZSh2YWx1ZXMpO1xyXG4gIH1cclxuXHJcbiAgc3VibWl0KCkge1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnN1Ym1pdCgpO1xyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoXHJcbiAgICB1cmw/OiBzdHJpbmcsXHJcbiAgICBvcHRpb25zPzogYW55LFxyXG4gICAgY2FsbGJhY2s/OiAocmVzPzogYW55KSA9PiB2b2lkLFxyXG4gICAgbXNnPzogYm9vbGVhblxyXG4gICkge1xyXG4gICAgY29uc3QgeyB1cmw6IHByb3BzVXJsLCBlbmNyeXB0RmllbGRzOiBlbmNyeXB0UHJvcHBzID0gW10gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXVybCAmJiAhcHJvcHNVcmwpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwi5rKh5pyJ5LiK5Lyg55qEdXJsIVwiKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgbWV0aG9kID0gXCJwb3N0XCIgfSA9IG9wdGlvbnM7XHJcbiAgICBsZXQgcmVxdWVzdFVybCA9IHVybCA/IHVybCA6IHByb3BzVXJsO1xyXG4gICAgbGV0IHJlcXVlc3REYXRhID0gdGhpcy5mb3JtUmVmLmN1cnJlbnQuZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIGxldCByZXF1ZXN0RW5jcnlwdCA9IGVuY3J5cHRQcm9wcHM7XHJcbiAgICBsZXQgcmVxdWVzdFBhcmFtID0geyBtZXRob2Q6IG1ldGhvZCwgZGF0YTogcmVxdWVzdERhdGEgfSBhcyB7IGRhdGE6IGFueSB9O1xyXG4gICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgY29uc3QgeyBkYXRhLCBlbmNyeXB0RmllbGRzLCAuLi5wYXJhbXMgfSA9IG9wdGlvbnM7XHJcbiAgICAgIHJlcXVlc3RQYXJhbSA9IHsgLi4ucmVxdWVzdFBhcmFtLCAuLi5wYXJhbXMgfTtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICBkZWxldGUgcmVxdWVzdFBhcmFtLmRhdGE7XHJcbiAgICAgICAgaWYgKG1ldGhvZC50b0xvd2VyQ2FzZSgpID09IFwiZ2V0XCIpIHtcclxuICAgICAgICAgIHJlcXVlc3RQYXJhbSA9IHsgLi4ucmVxdWVzdFBhcmFtLCAuLi5wYXJhbXMsIHBhcmFtczogZGF0YSB9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXF1ZXN0UGFyYW0gPSB7IC4uLnJlcXVlc3RQYXJhbSwgLi4ucGFyYW1zLCBkYXRhOiBkYXRhIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChlbmNyeXB0RmllbGRzKSB7XHJcbiAgICAgICAgcmVxdWVzdEVuY3J5cHQgPSBlbmNyeXB0RmllbGRzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVxdWVzdChyZXF1ZXN0VXJsLCB7XHJcbiAgICAgIC4uLnJlcXVlc3RQYXJhbSxcclxuICAgICAgZW5jcnlwdEZpZWxkczogcmVxdWVzdEVuY3J5cHQsXHJcbiAgICB9KVxyXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzOiBhbnkpIHtcclxuICAgICAgICBjb25zdCB7IGNvZGUgfSA9IHJlcztcclxuICAgICAgICBpZiAobXNnKSB7XHJcbiAgICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhcIuaPkOS6pOaIkOWKn1wiKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLmj5DkuqTlpLHotKVcIik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKHJlcyk7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlRmllbGRzKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudC52YWxpZGF0ZUZpZWxkcyhuYW1lKTtcclxuICB9XHJcblxyXG4gIGhpZGUoZSkge1xyXG4gICAgY29uc3QgeyBpc0NoYW5nZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHtcclxuICAgICAgY2hhbmdlVmFsaWQgPSB0cnVlLFxyXG4gICAgICBzaG93TW9kZWwsXHJcbiAgICAgIG1vZGFsUHJvcHMgPSB7fSxcclxuICAgICAgZHJhd2VyUHJvcHMgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGNvbnN0IHsgb25DYW5jZWwgfSA9IG1vZGFsUHJvcHM7XHJcbiAgICBjb25zdCB7IG9uQ2xvc2UgfSA9IGRyYXdlclByb3BzO1xyXG4gICAgaWYgKGNoYW5nZVZhbGlkICYmIGlzQ2hhbmdlKSB7XHJcbiAgICAgIE1vZGFsLmNvbmZpcm0oe1xyXG4gICAgICAgIHRpdGxlOiBcIuW9k+WJjeiusOW9leW3suS/ruaUueWwmuacquS/neWtmO+8jOehruWumuimgeaUvuW8g+S/ruaUueWQl++8n1wiLFxyXG4gICAgICAgIGNhbmNlbFRleHQ6IFwi5Y+W5raIXCIsXHJcbiAgICAgICAgb2tUZXh0OiBcIuehruWumlwiLFxyXG4gICAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICAgIG9uT2soKSB7XHJcbiAgICAgICAgICBpZiAoc2hvd01vZGVsID09IFwiZHJhd2VyXCIgJiYgb25DbG9zZSkge1xyXG4gICAgICAgICAgICBvbkNsb3NlKGUpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChzaG93TW9kZWwgPT0gXCJtb2RhbFwiICYmIG9uQ2FuY2VsKSB7XHJcbiAgICAgICAgICAgIG9uQ2FuY2VsKGUpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgX3RoaXMuaGlkZUZvcm0oKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChzaG93TW9kZWwgPT0gXCJkcmF3ZXJcIiAmJiBvbkNsb3NlKSB7XHJcbiAgICAgICAgb25DbG9zZShlKTtcclxuICAgICAgfSBlbHNlIGlmIChzaG93TW9kZWwgPT0gXCJtb2RhbFwiICYmIG9uQ2FuY2VsKSB7XHJcbiAgICAgICAgb25DYW5jZWwoZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgX3RoaXMuaGlkZUZvcm0oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGlkZUZvcm0ocmVzZXRWYWx1ZSA9IHRydWUpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgIHtcclxuICAgICAgICBmb3JtVmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgaXNDaGFuZ2U6IGZhbHNlLFxyXG4gICAgICB9LFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc2V0VmFsdWUpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNob3dGb3JtKHZhbHVlPzogYW55LCByZXNldFZhbHVlID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAge1xyXG4gICAgICAgIGZvcm1WaXNpYmxlOiB0cnVlLFxyXG4gICAgICAgIGlzQ2hhbmdlOiBmYWxzZSxcclxuICAgICAgfSxcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNldEZpZWxkc1ZhbHVlKHZhbHVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHJlc2V0VmFsdWUpIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNsb25lRWxlbWVudChpdGVtLCBpbmRleCA9IDApIHtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBpZiAodHlwZW9mIGl0ZW0gPT0gXCJzdHJpbmdcIikgcmV0dXJuIGl0ZW07XHJcbiAgICBsZXQgcHJvcHMgPSB7fSBhcyB7IGtleTogbnVtYmVyOyBjaGlsZHJlbjogYW55IH07XHJcbiAgICBwcm9wcy5rZXkgPSBpbmRleDtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChpdGVtLnByb3BzICYmIGl0ZW0ucHJvcHMuY2hpbGRyZW4pIHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtLnByb3BzLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgcHJvcHMuY2hpbGRyZW4gPSBSZWFjdC5DaGlsZHJlbi5tYXAoXHJcbiAgICAgICAgICAgIGl0ZW0ucHJvcHMuY2hpbGRyZW4sXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChjaGlsZCwgaW5kZXgpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuY2xvbmVFbGVtZW50KGNoaWxkLCBpbmRleCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHByb3BzLmNoaWxkcmVuID0gdGhpcy5jbG9uZUVsZW1lbnQoaXRlbS5wcm9wcy5jaGlsZHJlbiwgMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQoaXRlbSwgcHJvcHMpO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcbiAgb25WYWx1ZXNDaGFuZ2UodmFsLCBhbGxWYWwpIHtcclxuICAgIGNvbnN0IHsgb25WYWx1ZXNDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgaXNDaGFuZ2U6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIG9uVmFsdWVzQ2hhbmdlICYmIG9uVmFsdWVzQ2hhbmdlKHZhbCwgYWxsVmFsKTtcclxuICB9XHJcbiAgcmVuZGVyUGFuZWwobmV3Q2hpbGRyZW4sIHByb3BzKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHNob3dNb2RlbCxcclxuICAgICAgZHJhd2VyUHJvcHMgPSB7fSxcclxuICAgICAgbW9kYWxQcm9wcyA9IHt9LFxyXG4gICAgICBjaGFuZ2VWYWxpZCA9IHRydWUsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgZm9ybVZpc2libGUgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBsYXlvdXQgPSB7XHJcbiAgICAgIGxhYmVsQ29sOiB7IHNwYW46IDQgfSxcclxuICAgICAgd3JhcHBlckNvbDogeyBzcGFuOiAyMCB9LFxyXG4gICAgfTtcclxuICAgIGxldCBvcmd0aXRsZSA9IHNob3dNb2RlbCA9PSBcIm1vZGFsXCIgPyBtb2RhbFByb3BzLnRpdGxlIDogZHJhd2VyUHJvcHMudGl0bGU7XHJcbiAgICBjb25zdCBjbG9zYWJsZSA9XHJcbiAgICAgIHNob3dNb2RlbCA9PSBcIm1vZGFsXCIgPyBtb2RhbFByb3BzLmNsb3NhYmxlIDogZHJhd2VyUHJvcHMuY2xvc2FibGU7XHJcbiAgICBjb25zdCBva0J1dHRvblByb3BzID1cclxuICAgICAgc2hvd01vZGVsID09IFwibW9kYWxcIlxyXG4gICAgICAgID8gbW9kYWxQcm9wcy5va0J1dHRvblByb3BzIHx8IHt9XHJcbiAgICAgICAgOiBkcmF3ZXJQcm9wcy5va0J1dHRvblByb3BzIHx8IHt9O1xyXG4gICAgY29uc3QgdGl0bGUgPSAoXHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0aXRsZVwiKX0+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImljb25zXCIpfT5cclxuICAgICAgICAgIHshdGhpcy5zdGF0ZS5leHBhbmQgJiYgKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGV4cGFuZDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiaWNvblwiKX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxFeHBhbmRPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICB7dGhpcy5zdGF0ZS5leHBhbmQgJiYgKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGV4cGFuZDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImljb25cIil9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8Q29tcHJlc3NPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICB7Y2xvc2FibGUgIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGlkZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiaWNvblwiKX1cclxuICAgICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5SaWdodDogMCB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPENsb3NlT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0aXRsZS1jb250ZW50XCIpfT57b3JndGl0bGV9PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICAgIGNvbnN0IGZvb3RlciA9IChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImZvb3RlclwiKX0+XHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgICAgICAgICAgaWYgKHNob3dNb2RlbCA9PSBcIm1vZGFsXCIpIHtcclxuICAgICAgICAgICAgICBtb2RhbFByb3BzLm9uT2sgJiYgbW9kYWxQcm9wcy5vbk9rKGZvcm1WYWx1ZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgZHJhd2VyUHJvcHMub25PayAmJiBkcmF3ZXJQcm9wcy5vbk9rKGZvcm1WYWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBpY29uPXs8UGx1c0NpcmNsZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgey4uLm9rQnV0dG9uUHJvcHN9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAg5L+d5a2YXHJcbiAgICAgICAgPC9CdXR0b24+XHJcblxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGlkZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJidXR0b24tbWFyZ2luXCIpfVxyXG4gICAgICAgICAgaWNvbj17PENsb3NlQ2lyY2xlT3V0bGluZWQgLz59XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAg5Y+W5raIXHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICAgIGlmIChzaG93TW9kZWwgJiYgc2hvd01vZGVsID09IFwibW9kYWxcIikge1xyXG4gICAgICBsZXQgbmV3TW9kYWxQcm9wcyA9IG9taXQobW9kYWxQcm9wcywgW1widmlzaWJsZVwiXSk7XHJcbiAgICAgIG5ld01vZGFsUHJvcHMgPSB7IGNlbnRlcmVkOiB0cnVlLCBmb290ZXIsIC4uLm5ld01vZGFsUHJvcHMgfTtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8TW9kYWxcclxuICAgICAgICAgIHZpc2libGU9e2Zvcm1WaXNpYmxlfVxyXG4gICAgICAgICAgZm9vdGVyPXtmb290ZXJ9XHJcbiAgICAgICAgICB7Li4ubmV3TW9kYWxQcm9wc31cclxuICAgICAgICAgIG9uQ2FuY2VsPXt0aGlzLmhpZGUuYmluZCh0aGlzKX1cclxuICAgICAgICAgIG1hc2tDbG9zYWJsZT17IXRoaXMuc3RhdGUuaXNDaGFuZ2V9XHJcbiAgICAgICAgICB0aXRsZT17dGl0bGV9XHJcbiAgICAgICAgICBjbG9zYWJsZT17ZmFsc2V9XHJcbiAgICAgICAgICBjbGFzc05hbWU9e3RoaXMuc3RhdGUuZXhwYW5kID8gZ2V0TGVzcyhzdHlsZXMsIFwiYWxsc3JlZW5cIikgOiBcIlwifVxyXG4gICAgICAgICAgd2lkdGg9e3RoaXMuc3RhdGUuZXhwYW5kID8gXCIxMDB2d1wiIDogbmV3TW9kYWxQcm9wcy53aWR0aH1cclxuICAgICAgICAgIHN0eWxlPXt7IG1heFdpZHRoOiBcIjEwMHZ3XCIgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICA8Rm9ybVxyXG4gICAgICAgICAgICByZWY9e3RoaXMuZm9ybVJlZn1cclxuICAgICAgICAgICAgey4uLmxheW91dH1cclxuICAgICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICBwcmVzZXJ2ZT17ZmFsc2V9XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvTW9kYWw+XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2UgaWYgKHNob3dNb2RlbCAmJiBzaG93TW9kZWwgPT0gXCJkcmF3ZXJcIikge1xyXG4gICAgICBsZXQgbmV3RHJhd2VyUHJvcHMgPSBvbWl0KGRyYXdlclByb3BzLCBbXHJcbiAgICAgICAgXCJ2aXNpYmxlXCIsXHJcbiAgICAgICAgXCJvbk9rXCIsXHJcbiAgICAgICAgXCJva0J1dHRvblByb3BzXCIsXHJcbiAgICAgIF0pO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxEcmF3ZXJcclxuICAgICAgICAgIHZpc2libGU9e2Zvcm1WaXNpYmxlfVxyXG4gICAgICAgICAgZm9vdGVyPXtmb290ZXJ9XHJcbiAgICAgICAgICB7Li4ubmV3RHJhd2VyUHJvcHN9XHJcbiAgICAgICAgICBvbkNsb3NlPXt0aGlzLmhpZGUuYmluZCh0aGlzKX1cclxuICAgICAgICAgIG1hc2tDbG9zYWJsZT17IXRoaXMuc3RhdGUuaXNDaGFuZ2V9XHJcbiAgICAgICAgICB0aXRsZT17dGl0bGV9XHJcbiAgICAgICAgICBjbG9zYWJsZT17ZmFsc2V9XHJcbiAgICAgICAgICB3aWR0aD17dGhpcy5zdGF0ZS5leHBhbmQgPyBcIjEwMHZ3XCIgOiBuZXdEcmF3ZXJQcm9wcy53aWR0aH1cclxuICAgICAgICA+XHJcbiAgICAgICAgICA8Rm9ybVxyXG4gICAgICAgICAgICByZWY9e3RoaXMuZm9ybVJlZn1cclxuICAgICAgICAgICAgey4uLmxheW91dH1cclxuICAgICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L0RyYXdlcj5cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPEZvcm1cclxuICAgICAgICAgIHJlZj17dGhpcy5mb3JtUmVmfVxyXG4gICAgICAgICAgey4uLmxheW91dH1cclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgIG9uVmFsdWVzQ2hhbmdlPXt0aGlzLm9uVmFsdWVzQ2hhbmdlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgLz5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3QgcHJvcHMgPSBvbWl0KHRoaXMucHJvcHMsIFtcclxuICAgICAgXCJmb3JtXCIsXHJcbiAgICAgIFwic2hvd01vZGVsXCIsXHJcbiAgICAgIFwibW9kYWxQcm9wc1wiLFxyXG4gICAgICBcImRyYXdlclByb3BzXCIsXHJcbiAgICAgIFwidXJsXCIsXHJcbiAgICAgIFwiZW5jcnlwdEZpZWxkc1wiLFxyXG4gICAgICBcImNoYW5nZVZhbGlkXCIsXHJcbiAgICBdKTtcclxuXHJcbiAgICByZXR1cm4gPD57dGhpcy5yZW5kZXJQYW5lbChwcm9wcy5jaGlsZHJlbiwgcHJvcHMpfTwvPjtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgTnNjRm9ybTtcclxuIl19
475
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvZm9ybS9Gb3JtLnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJNb2RhbCIsInJlcXVlc3QiLCJvbWl0IiwiU3BpbiIsIk5zY0Zvcm0iLCJwcm9wcyIsImNyZWF0ZVJlZiIsImZvcm1WaXNpYmxlIiwiZm9ybU1vZGFsUHJvcHMiLCJmb3JtRHJhd2VyUHJvcHMiLCJpc0NoYW5nZSIsImV4cGFuZCIsIm5hbWUiLCJmb3JtUmVmIiwiY3VycmVudCIsImdldEZpZWxkRXJyb3IiLCJnZXRGaWVsZEluc3RhbmNlIiwiZ2V0RmllbGRzRXJyb3IiLCJnZXRGaWVsZHNWYWx1ZSIsImdldEZpZWxkVmFsdWUiLCJpc0ZpZWxkc1RvdWNoZWQiLCJpc0ZpZWxkVG91Y2hlZCIsImlzRmllbGRWYWxpZGF0aW5nIiwicmVzZXRGaWVsZHMiLCJvcHRpb25zIiwic2Nyb2xsVG9GaWVsZCIsImZpbGRzIiwic2V0RmllbGRzIiwidmFsdWVzIiwic2V0RmllbGRzVmFsdWUiLCJzdWJtaXQiLCJ1cmwiLCJjYWxsYmFjayIsIm1zZyIsInByb3BzVXJsIiwiZW5jcnlwdEZpZWxkcyIsImVuY3J5cHRQcm9wcHMiLCJFcnJvciIsIm1ldGhvZCIsInJlcXVlc3RVcmwiLCJyZXF1ZXN0RGF0YSIsInJlcXVlc3RFbmNyeXB0IiwicmVxdWVzdFBhcmFtIiwiZGF0YSIsInBhcmFtcyIsInRvTG93ZXJDYXNlIiwidGhlbiIsInJlcyIsImNvZGUiLCJzdWNjZXNzIiwiZXJyb3IiLCJjYXRjaCIsImNvbnNvbGUiLCJsb2ciLCJ2YWxpZGF0ZUZpZWxkcyIsImUiLCJzaG93TW9kZWwiLCJtb2RhbFByb3BzIiwiZHJhd2VyUHJvcHMiLCJfdGhpcyIsIm9uQ2FuY2VsIiwib25DbG9zZSIsImhpZGVGb3JtIiwicmVzZXRWYWx1ZSIsInNldFN0YXRlIiwidmFsdWUiLCJpdGVtIiwiaW5kZXgiLCJrZXkiLCJjaGlsZHJlbiIsIkFycmF5IiwiaXNBcnJheSIsIkNoaWxkcmVuIiwibWFwIiwiY2hpbGQiLCJjbG9uZUVsZW1lbnQiLCJ2YWwiLCJhbGxWYWwiLCJvblZhbHVlc0NoYW5nZSIsIm5ld0NoaWxkcmVuIiwibG9hZGluZyIsInN0YXRlIiwibGF5b3V0IiwibGFiZWxDb2wiLCJzcGFuIiwid3JhcHBlckNvbCIsIm5ld01vZGFsUHJvcHMiLCJuZXdEcmF3ZXJQcm9wcyIsImRlZmF1bHRwcm9wcyIsIm1hc2tDbG9zYWJsZSIsImZvcm1FeHBhbmQiLCJ2YWxpZCIsImNoYW5nZVZhbGlkIiwiY2hhbmdlIiwidHlwZSIsIm1vZGFscHJvcHMiLCJoaWRlIiwiYmluZCIsInJlbmRlclBhbmVsIiwibmV4dFByb3BzIiwicHJldlN0YXRlIiwiT2JqZWN0IiwiaXMiLCJuZXdTdGF0ZSIsInZpc2libGUiLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBT0EsS0FBUCxJQUFnQkMsYUFBaEIsUUFBcUMsT0FBckM7QUFTQSxPQUFPQyxLQUFQLE1BQWtCLFVBQWxCO0FBRUEsU0FBU0MsT0FBVCxRQUF3Qix1QkFBeEI7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLFNBQWpCO0FBWUEsT0FBT0MsSUFBUCxNQUFpQixTQUFqQjs7SUFXTUMsTzs7Ozs7QUFVSixtQkFBWUMsS0FBWixFQUFtQjtBQUFBOztBQUFBOztBQUNqQiwrQkFBTUEsS0FBTjs7QUFEaUIsNEVBVFRQLEtBQUssQ0FBQ1EsU0FBTixFQVNTOztBQUFBLDZEQVJYO0FBQ05DLE1BQUFBLFdBQVcsRUFBRSxLQURQO0FBRU5DLE1BQUFBLGNBQWMsRUFBRSxFQUZWO0FBR05DLE1BQUFBLGVBQWUsRUFBRSxFQUhYO0FBSU5DLE1BQUFBLFFBQVEsRUFBRSxLQUpKO0FBS05DLE1BQUFBLE1BQU0sRUFBRTtBQUxGLEtBUVc7O0FBQUE7QUFFbEI7Ozs7V0Fr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QVU3RixlQUFWLEVBQTJCaUQsV0FBM0IsQ0FBTCxFQUE4QztBQUM1QyxjQUFJNkMsU0FBUSxHQUFHO0FBQ2I5RixZQUFBQSxlQUFlLEVBQUVpRDtBQURKLFdBQWY7O0FBR0EsY0FDRSxDQUFBQSxXQUFXLFNBQVgsSUFBQUEsV0FBVyxXQUFYLFlBQUFBLFdBQVcsQ0FBRThDLE9BQWIsTUFBeUIsSUFBekIsSUFDQSxDQUFBOUMsV0FBVyxTQUFYLElBQUFBLFdBQVcsV0FBWCxZQUFBQSxXQUFXLENBQUU4QyxPQUFiLE1BQXlCQyxTQUYzQixFQUdFO0FBQ0FGLFlBQUFBLFNBQVEsQ0FBQ2hHLFdBQVQsR0FBdUJtRCxXQUF2QixhQUF1QkEsV0FBdkIsdUJBQXVCQSxXQUFXLENBQUU4QyxPQUFwQztBQUNEOztBQUNELGlCQUFPRCxTQUFQO0FBQ0Q7QUFDRjs7QUFDRCxhQUFPLElBQVA7QUFDRDs7OztFQTVDbUJ4RyxhOztBQW9WdEIsZUFBZUssT0FBZiIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBEZXNjcmlwdHRpb2466KGo5Y2V57uE5Lu2XHJcbiAqIEB2ZXJzaW9uOlxyXG4gKiBAQXV0aG9yOiByeHpodVxyXG4gKiBARGF0ZTogMjAyMS0wNC0wOSAwOToxODozNFxyXG4gKiBATGFzdEVkaXRvcnM6IHJ4emh1XHJcbiAqIEBMYXN0RWRpdFRpbWU6IDIwMjEtMDQtMjMgMTU6MjM6NTRcclxuICovXHJcbmltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7XHJcbiAgRm9ybSxcclxuICBGb3JtUHJvcHMsXHJcbiAgRHJhd2VyLFxyXG4gIE1vZGFsUHJvcHMsXHJcbiAgRHJhd2VyUHJvcHMsXHJcbiAgbWVzc2FnZSxcclxufSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgTW9kYWwgZnJvbSBcIi4uL21vZGFsXCI7XHJcbmltcG9ydCB7IEZvcm1JbnN0YW5jZSB9IGZyb20gXCJhbnRkL2xpYi9mb3JtXCI7XHJcbmltcG9ydCB7IHJlcXVlc3QgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uL2J1dHRvblwiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lmxlc3NcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIFBsdXNDaXJjbGVPdXRsaW5lZCxcclxuICBDbG9zZUNpcmNsZU91dGxpbmVkLFxyXG4gIENsb3NlT3V0bGluZWQsXHJcbiAgRXhwYW5kT3V0bGluZWQsXHJcbiAgQ29tcHJlc3NPdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IFBvcGNvbmZpcm0gZnJvbSBcIi4uL3BvcGNvbmZpcm1cIjtcclxuaW1wb3J0IFNwaW4gZnJvbSBcIi4uL3NwaW5cIjtcclxuaW50ZXJmYWNlIElGb3JtUHJvcHMgZXh0ZW5kcyBGb3JtUHJvcHMge1xyXG4gIHNob3dNb2RlbD86IFwibW9kYWxcIiB8IFwiZHJhd2VyXCI7XHJcbiAgbW9kYWxQcm9wcz86IE1vZGFsUHJvcHM7XHJcbiAgZHJhd2VyUHJvcHM/OiBEcmF3ZXJQcm9wcyAmIHsgb25Paz86IGFueTsgb2tCdXR0b25Qcm9wcz86IE9iamVjdCB9O1xyXG4gIHVybD86IHN0cmluZztcclxuICBlbmNyeXB0RmllbGRzPzogQXJyYXk8U3RyaW5nPjtcclxuICBjaGFuZ2VWYWxpZD86IGJvb2xlYW47IC8v5pWw5o2u5L+u5pS55YWz6Zet5qCh6aqMXHJcbiAgbG9hZGluZz86IGJvb2xlYW47IC8v6KGo5Y2V5Yqg6L2954q25oCBXHJcbn1cclxuXHJcbmNsYXNzIE5zY0Zvcm0gZXh0ZW5kcyBQdXJlQ29tcG9uZW50PElGb3JtUHJvcHM+IHtcclxuICBmb3JtUmVmID0gUmVhY3QuY3JlYXRlUmVmPEZvcm1JbnN0YW5jZT4oKTtcclxuICBzdGF0ZSA9IHtcclxuICAgIGZvcm1WaXNpYmxlOiBmYWxzZSxcclxuICAgIGZvcm1Nb2RhbFByb3BzOiB7fSxcclxuICAgIGZvcm1EcmF3ZXJQcm9wczoge30sXHJcbiAgICBpc0NoYW5nZTogZmFsc2UsXHJcbiAgICBleHBhbmQ6IGZhbHNlLFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKG5leHRQcm9wcywgcHJldlN0YXRlKSB7XHJcbiAgICBjb25zdCB7IG1vZGFsUHJvcHMsIGRyYXdlclByb3BzLCBzaG93TW9kZWwgfSA9IG5leHRQcm9wcztcclxuICAgIGNvbnN0IHsgZm9ybU1vZGFsUHJvcHMsIGZvcm1EcmF3ZXJQcm9wcyB9ID0gcHJldlN0YXRlO1xyXG4gICAgaWYgKHNob3dNb2RlbCA9PSBcIm1vZGFsXCIpIHtcclxuICAgICAgLy8gSlNPTi5zdHJpbmdpZnkoZm9ybU1vZGFsUHJvcHMpICE9PSBKU09OLnN0cmluZ2lmeShtb2RhbFByb3BzKVxyXG4gICAgICBpZiAoIU9iamVjdC5pcyhmb3JtTW9kYWxQcm9wcywgbW9kYWxQcm9wcykpIHtcclxuICAgICAgICBsZXQgbmV3U3RhdGUgPSB7XHJcbiAgICAgICAgICBmb3JtRHJhd2VyUHJvcHM6IG1vZGFsUHJvcHMsXHJcbiAgICAgICAgfSBhcyBhbnk7XHJcbiAgICAgICAgaWYgKG1vZGFsUHJvcHM/LnZpc2libGUgIT09IG51bGwgJiYgbW9kYWxQcm9wcz8udmlzaWJsZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBuZXdTdGF0ZS5mb3JtVmlzaWJsZSA9IG1vZGFsUHJvcHM/LnZpc2libGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXdTdGF0ZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChzaG93TW9kZWwgPT0gXCJkcmF3ZXJcIikge1xyXG4gICAgICAvLyBKU09OLnN0cmluZ2lmeShmb3JtRHJhd2VyUHJvcHMpICE9PSBKU09OLnN0cmluZ2lmeShkcmF3ZXJQcm9wcylcclxuICAgICAgaWYgKCFPYmplY3QuaXMoZm9ybURyYXdlclByb3BzLCBkcmF3ZXJQcm9wcykpIHtcclxuICAgICAgICBsZXQgbmV3U3RhdGUgPSB7XHJcbiAgICAgICAgICBmb3JtRHJhd2VyUHJvcHM6IGRyYXdlclByb3BzLFxyXG4gICAgICAgIH0gYXMgYW55O1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGRyYXdlclByb3BzPy52aXNpYmxlICE9PSBudWxsICYmXHJcbiAgICAgICAgICBkcmF3ZXJQcm9wcz8udmlzaWJsZSAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBuZXdTdGF0ZS5mb3JtVmlzaWJsZSA9IGRyYXdlclByb3BzPy52aXNpYmxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3U3RhdGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy/ojrflj5blr7nlupTlrZfmrrXlkI3nmoTplJnor6/kv6Hmga9cclxuICBnZXRGaWVsZEVycm9yKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRFcnJvcihuYW1lKTtcclxuICB9XHJcblxyXG4gIC8v6I635Y+W5a+55bqU5a2X5q615a6e5L6LXHJcbiAgZ2V0RmllbGRJbnN0YW5jZShuYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkSW5zdGFuY2UobmFtZSk7XHJcbiAgfVxyXG5cclxuICAvL+iOt+WPluS4gOe7hOWtl+auteWQjeWvueW6lOeahOmUmeivr+S/oeaBr++8jOi/lOWbnuS4uuaVsOe7hOW9ouW8j1xyXG4gIGdldEZpZWxkc0Vycm9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZHNFcnJvcigpO1xyXG4gIH1cclxuXHJcbiAgLy/ojrflj5bkuIDnu4TlrZfmrrXlkI3lr7nlupTnmoTlgLzvvIzkvJrmjInnhaflr7nlupTnu5PmnoTov5Tlm55cclxuICBnZXRGaWVsZHNWYWx1ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8v6I635Y+W5a+55bqU5a2X5q615ZCN55qE5YC8XHJcbiAgZ2V0RmllbGRWYWx1ZShuYW1lKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkVmFsdWUobmFtZSk7XHJcbiAgfVxyXG5cclxuICAvL+ajgOafpeS4gOe7hOWtl+auteaYr+WQpuiiq+eUqOaIt+aTjeS9nOi/h1xyXG4gIGlzRmllbGRzVG91Y2hlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uaXNGaWVsZHNUb3VjaGVkKCk7XHJcbiAgfVxyXG5cclxuICAvL+ajgOafpeWvueW6lOWtl+auteaYr+WQpuiiq+eUqOaIt+aTjeS9nOi/h1xyXG4gIGlzRmllbGRUb3VjaGVkKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uaXNGaWVsZFRvdWNoZWQobmFtZSk7XHJcbiAgfVxyXG5cclxuICAvL+ajgOafpeS4gOe7hOWtl+auteaYr+WQpuato+WcqOagoemqjFxyXG4gIGlzRmllbGRWYWxpZGF0aW5nKG5hbWUpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uaXNGaWVsZFZhbGlkYXRpbmcobmFtZSk7XHJcbiAgfVxyXG5cclxuICAvL+mHjee9ruS4gOe7hOWtl+auteWIsFxyXG4gIHJlc2V0RmllbGRzKCkge1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgfVxyXG5cclxuICBzY3JvbGxUb0ZpZWxkKG5hbWUsIG9wdGlvbnMpIHtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zY3JvbGxUb0ZpZWxkKG5hbWUsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgc2V0RmllbGRzKGZpbGRzKSB7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzKGZpbGRzKTtcclxuICB9XHJcblxyXG4gIHNldEZpZWxkc1ZhbHVlKHZhbHVlcykge1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNldEZpZWxkc1ZhbHVlKHZhbHVlcyk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXQoKSB7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc3VibWl0KCk7XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdChcclxuICAgIHVybD86IHN0cmluZyxcclxuICAgIG9wdGlvbnM/OiBhbnksXHJcbiAgICBjYWxsYmFjaz86IChyZXM/OiBhbnkpID0+IHZvaWQsXHJcbiAgICBtc2c/OiBib29sZWFuXHJcbiAgKSB7XHJcbiAgICBjb25zdCB7IHVybDogcHJvcHNVcmwsIGVuY3J5cHRGaWVsZHM6IGVuY3J5cHRQcm9wcHMgPSBbXSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghdXJsICYmICFwcm9wc1VybCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCLmsqHmnInkuIrkvKDnmoR1cmwhXCIpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBtZXRob2QgPSBcInBvc3RcIiB9ID0gb3B0aW9ucztcclxuICAgIGxldCByZXF1ZXN0VXJsID0gdXJsID8gdXJsIDogcHJvcHNVcmw7XHJcbiAgICBsZXQgcmVxdWVzdERhdGEgPSB0aGlzLmZvcm1SZWYuY3VycmVudC5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gICAgbGV0IHJlcXVlc3RFbmNyeXB0ID0gZW5jcnlwdFByb3BwcztcclxuICAgIGxldCByZXF1ZXN0UGFyYW0gPSB7IG1ldGhvZDogbWV0aG9kLCBkYXRhOiByZXF1ZXN0RGF0YSB9IGFzIHsgZGF0YTogYW55IH07XHJcbiAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICBjb25zdCB7IGRhdGEsIGVuY3J5cHRGaWVsZHMsIC4uLnBhcmFtcyB9ID0gb3B0aW9ucztcclxuICAgICAgcmVxdWVzdFBhcmFtID0geyAuLi5yZXF1ZXN0UGFyYW0sIC4uLnBhcmFtcyB9O1xyXG4gICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgIGRlbGV0ZSByZXF1ZXN0UGFyYW0uZGF0YTtcclxuICAgICAgICBpZiAobWV0aG9kLnRvTG93ZXJDYXNlKCkgPT0gXCJnZXRcIikge1xyXG4gICAgICAgICAgcmVxdWVzdFBhcmFtID0geyAuLi5yZXF1ZXN0UGFyYW0sIC4uLnBhcmFtcywgcGFyYW1zOiBkYXRhIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlcXVlc3RQYXJhbSA9IHsgLi4ucmVxdWVzdFBhcmFtLCAuLi5wYXJhbXMsIGRhdGE6IGRhdGEgfTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGVuY3J5cHRGaWVsZHMpIHtcclxuICAgICAgICByZXF1ZXN0RW5jcnlwdCA9IGVuY3J5cHRGaWVsZHM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXF1ZXN0KHJlcXVlc3RVcmwsIHtcclxuICAgICAgLi4ucmVxdWVzdFBhcmFtLFxyXG4gICAgICBlbmNyeXB0RmllbGRzOiByZXF1ZXN0RW5jcnlwdCxcclxuICAgIH0pXHJcbiAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXM6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xyXG4gICAgICAgIGlmIChtc2cpIHtcclxuICAgICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKFwi5o+Q5Lqk5oiQ5YqfXCIpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbWVzc2FnZS5lcnJvcihcIuaPkOS6pOWksei0pVwiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2socmVzKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVGaWVsZHMobmFtZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVJlZi5jdXJyZW50LnZhbGlkYXRlRmllbGRzKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgaGlkZShlKSB7XHJcbiAgICBjb25zdCB7IHNob3dNb2RlbCwgbW9kYWxQcm9wcyA9IHt9LCBkcmF3ZXJQcm9wcyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGNvbnN0IHsgb25DYW5jZWwgfSA9IG1vZGFsUHJvcHM7XHJcbiAgICBjb25zdCB7IG9uQ2xvc2UgfSA9IGRyYXdlclByb3BzO1xyXG4gICAgaWYgKHNob3dNb2RlbCA9PSBcImRyYXdlclwiICYmIG9uQ2xvc2UpIHtcclxuICAgICAgb25DbG9zZShlKTtcclxuICAgIH0gZWxzZSBpZiAoc2hvd01vZGVsID09IFwibW9kYWxcIiAmJiBvbkNhbmNlbCkge1xyXG4gICAgICBvbkNhbmNlbChlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIF90aGlzLmhpZGVGb3JtKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoaWRlRm9ybShyZXNldFZhbHVlID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAge1xyXG4gICAgICAgIGZvcm1WaXNpYmxlOiBmYWxzZSxcclxuICAgICAgICBpc0NoYW5nZTogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICBpZiAocmVzZXRWYWx1ZSkge1xyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc2hvd0Zvcm0odmFsdWU/OiBhbnksIHJlc2V0VmFsdWUgPSB0cnVlKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICB7XHJcbiAgICAgICAgZm9ybVZpc2libGU6IHRydWUsXHJcbiAgICAgICAgaXNDaGFuZ2U6IGZhbHNlLFxyXG4gICAgICB9LFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUodmFsdWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAocmVzZXRWYWx1ZSkgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY2xvbmVFbGVtZW50KGl0ZW0sIGluZGV4ID0gMCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGlmICh0eXBlb2YgaXRlbSA9PSBcInN0cmluZ1wiKSByZXR1cm4gaXRlbTtcclxuICAgIGxldCBwcm9wcyA9IHt9IGFzIHsga2V5OiBudW1iZXI7IGNoaWxkcmVuOiBhbnkgfTtcclxuICAgIHByb3BzLmtleSA9IGluZGV4O1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGl0ZW0ucHJvcHMgJiYgaXRlbS5wcm9wcy5jaGlsZHJlbikge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0ucHJvcHMuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICBwcm9wcy5jaGlsZHJlbiA9IFJlYWN0LkNoaWxkcmVuLm1hcChcclxuICAgICAgICAgICAgaXRlbS5wcm9wcy5jaGlsZHJlbixcclxuICAgICAgICAgICAgZnVuY3Rpb24gKGNoaWxkLCBpbmRleCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBfdGhpcy5jbG9uZUVsZW1lbnQoY2hpbGQsIGluZGV4KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcHJvcHMuY2hpbGRyZW4gPSB0aGlzLmNsb25lRWxlbWVudChpdGVtLnByb3BzLmNoaWxkcmVuLCAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChpdGVtLCBwcm9wcyk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuICBvblZhbHVlc0NoYW5nZSh2YWwsIGFsbFZhbCkge1xyXG4gICAgY29uc3QgeyBvblZhbHVlc0NoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBpc0NoYW5nZTogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgb25WYWx1ZXNDaGFuZ2UgJiYgb25WYWx1ZXNDaGFuZ2UodmFsLCBhbGxWYWwpO1xyXG4gIH1cclxuICByZW5kZXJQYW5lbChuZXdDaGlsZHJlbiwgcHJvcHMpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgc2hvd01vZGVsLFxyXG4gICAgICBkcmF3ZXJQcm9wcyA9IHt9LFxyXG4gICAgICBtb2RhbFByb3BzID0ge30sXHJcbiAgICAgIGxvYWRpbmcgPSBmYWxzZSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBmb3JtVmlzaWJsZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGxheW91dCA9IHtcclxuICAgICAgbGFiZWxDb2w6IHsgc3BhbjogNCB9LFxyXG4gICAgICB3cmFwcGVyQ29sOiB7IHNwYW46IDIwIH0sXHJcbiAgICB9O1xyXG4gICAgaWYgKHNob3dNb2RlbCkge1xyXG4gICAgICBsZXQgbmV3TW9kYWxQcm9wcyA9IG9taXQobW9kYWxQcm9wcywgW1widmlzaWJsZVwiXSk7XHJcbiAgICAgIG5ld01vZGFsUHJvcHMgPSB7IC4uLm5ld01vZGFsUHJvcHMgfTtcclxuICAgICAgbGV0IG5ld0RyYXdlclByb3BzID0gb21pdChkcmF3ZXJQcm9wcywgW1xyXG4gICAgICAgIFwidmlzaWJsZVwiLFxyXG4gICAgICAgIFwib25Pa1wiLFxyXG4gICAgICAgIFwib2tCdXR0b25Qcm9wc1wiLFxyXG4gICAgICBdKTtcclxuICAgICAgbGV0IGRlZmF1bHRwcm9wcyA9IHtcclxuICAgICAgICBtYXNrQ2xvc2FibGU6ICF0aGlzLnN0YXRlLmlzQ2hhbmdlLFxyXG4gICAgICAgIGZvcm1FeHBhbmQ6IHtcclxuICAgICAgICAgIGV4cGFuZDogdHJ1ZSxcclxuICAgICAgICAgIHZhbGlkOiB0aGlzLnByb3BzLmNoYW5nZVZhbGlkLFxyXG4gICAgICAgICAgY2hhbmdlOiB0aGlzLnN0YXRlLmlzQ2hhbmdlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHlwZTogc2hvd01vZGVsLFxyXG4gICAgICB9IGFzIGFueTtcclxuICAgICAgbGV0IG1vZGFscHJvcHMgPSB7IC4uLmRlZmF1bHRwcm9wcyB9O1xyXG4gICAgICBpZiAoc2hvd01vZGVsID09IFwibW9kYWxcIikge1xyXG4gICAgICAgIG1vZGFscHJvcHMgPSB7XHJcbiAgICAgICAgICAuLi5uZXdNb2RhbFByb3BzLFxyXG4gICAgICAgICAgLi4uZGVmYXVsdHByb3BzLFxyXG4gICAgICAgICAgb25DYW5jZWw6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSBpZiAoc2hvd01vZGVsID09IFwiZHJhd2VyXCIpIHtcclxuICAgICAgICBtb2RhbHByb3BzID0ge1xyXG4gICAgICAgICAgLi4ubmV3RHJhd2VyUHJvcHMsXHJcbiAgICAgICAgICAuLi5kZWZhdWx0cHJvcHMsXHJcbiAgICAgICAgICBvbkNsb3NlOiB0aGlzLmhpZGUuYmluZCh0aGlzKSxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPE1vZGFsIHZpc2libGU9e2Zvcm1WaXNpYmxlfSB7Li4ubW9kYWxwcm9wc30+XHJcbiAgICAgICAgICB7bG9hZGluZyA/IChcclxuICAgICAgICAgICAgPFNwaW4gc3Bpbm5pbmc9e2xvYWRpbmd9PlxyXG4gICAgICAgICAgICAgIDxGb3JtXHJcbiAgICAgICAgICAgICAgICByZWY9e3RoaXMuZm9ybVJlZn1cclxuICAgICAgICAgICAgICAgIHsuLi5sYXlvdXR9XHJcbiAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgcHJlc2VydmU9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvU3Bpbj5cclxuICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgIDxGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgICAgICAgey4uLmxheW91dH1cclxuICAgICAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICAgICAgb25WYWx1ZXNDaGFuZ2U9e3RoaXMub25WYWx1ZXNDaGFuZ2UuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICBwcmVzZXJ2ZT17ZmFsc2V9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgIDwvTW9kYWw+XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICB7bG9hZGluZyA/IChcclxuICAgICAgICAgICAgPFNwaW4gc3Bpbm5pbmc9e2xvYWRpbmd9PlxyXG4gICAgICAgICAgICAgIDxGb3JtXHJcbiAgICAgICAgICAgICAgICByZWY9e3RoaXMuZm9ybVJlZn1cclxuICAgICAgICAgICAgICAgIHsuLi5sYXlvdXR9XHJcbiAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICAgICAgICBvblZhbHVlc0NoYW5nZT17dGhpcy5vblZhbHVlc0NoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvU3Bpbj5cclxuICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgIDxGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgICAgICAgey4uLmxheW91dH1cclxuICAgICAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICAgICAgb25WYWx1ZXNDaGFuZ2U9e3RoaXMub25WYWx1ZXNDaGFuZ2UuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgPC8+XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHByb3BzID0gb21pdCh0aGlzLnByb3BzLCBbXHJcbiAgICAgIFwiZm9ybVwiLFxyXG4gICAgICBcInNob3dNb2RlbFwiLFxyXG4gICAgICBcIm1vZGFsUHJvcHNcIixcclxuICAgICAgXCJkcmF3ZXJQcm9wc1wiLFxyXG4gICAgICBcInVybFwiLFxyXG4gICAgICBcImVuY3J5cHRGaWVsZHNcIixcclxuICAgICAgXCJjaGFuZ2VWYWxpZFwiLFxyXG4gICAgXSk7XHJcblxyXG4gICAgcmV0dXJuIDw+e3RoaXMucmVuZGVyUGFuZWwocHJvcHMuY2hpbGRyZW4sIHByb3BzKX08Lz47XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IE5zY0Zvcm07XHJcbiJdfQ==
@@ -3,13 +3,20 @@ import { ImageProps } from "antd";
3
3
  interface IImageProps extends ImageProps {
4
4
  fileId?: string;
5
5
  src?: string;
6
+ clickPreview?: boolean;
7
+ showDownloadIcon?: boolean;
6
8
  }
7
9
  export default class NscImage extends React.PureComponent<IImageProps, any> {
10
+ defaultImg: string;
8
11
  state: {
9
12
  imgData: string;
13
+ visible: boolean;
14
+ mask: boolean;
15
+ loading: boolean;
10
16
  };
11
17
  getImgData(): Promise<void>;
12
18
  blobToBase64(blob: any): Promise<unknown>;
19
+ componentDidUpdate(prevProps: any): void;
13
20
  componentDidMount(): void;
14
21
  render(): React.ReactNode;
15
22
  }