nsc-react-component 2.10.31 → 2.10.32
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/base/upload/index.d.ts +4 -1
- package/lib/base/upload/index.js +121 -73
- package/package.json +3 -2
|
@@ -26,6 +26,9 @@ export default class NscUpload extends React.PureComponent<IUploadProps, any> {
|
|
|
26
26
|
fileListStore: any[];
|
|
27
27
|
fileNames: any[];
|
|
28
28
|
};
|
|
29
|
+
uploadIngSize: number;
|
|
30
|
+
uploadSize: number;
|
|
31
|
+
uploadIngList: any[];
|
|
29
32
|
componentDidMount(): void;
|
|
30
33
|
convertFileList(list?: Array<Object>): void;
|
|
31
34
|
componentDidUpdate(preProps: any, preState: any): void;
|
|
@@ -34,7 +37,7 @@ export default class NscUpload extends React.PureComponent<IUploadProps, any> {
|
|
|
34
37
|
beforeUpload(file: any, ofileList: any): Promise<boolean>;
|
|
35
38
|
checkFileType(file: any): boolean;
|
|
36
39
|
onProcess({ percent, file }: any): void;
|
|
37
|
-
onComplete(
|
|
40
|
+
onComplete(files: any): Promise<void>;
|
|
38
41
|
customRequest: (options: any) => Promise<void>;
|
|
39
42
|
onDelete(file: any): void;
|
|
40
43
|
render(): React.ReactNode;
|
package/lib/base/upload/index.js
CHANGED
|
@@ -85,9 +85,15 @@ var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
85
85
|
fileNames: []
|
|
86
86
|
});
|
|
87
87
|
|
|
88
|
+
_defineProperty(_assertThisInitialized(_this), "uploadIngSize", 0);
|
|
89
|
+
|
|
90
|
+
_defineProperty(_assertThisInitialized(_this), "uploadSize", 0);
|
|
91
|
+
|
|
92
|
+
_defineProperty(_assertThisInitialized(_this), "uploadIngList", []);
|
|
93
|
+
|
|
88
94
|
_defineProperty(_assertThisInitialized(_this), "customRequest", /*#__PURE__*/function () {
|
|
89
95
|
var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(options) {
|
|
90
|
-
var file, _this$props, onComplete, onProcess, sliceSize, onProgress, res, fileId;
|
|
96
|
+
var file, _this$props, onComplete, onProcess, sliceSize, onProgress, res, fileId, ImgRes;
|
|
91
97
|
|
|
92
98
|
return regeneratorRuntime.wrap(function _callee$(_context) {
|
|
93
99
|
while (1) {
|
|
@@ -118,56 +124,82 @@ var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
118
124
|
file: file,
|
|
119
125
|
onProgress: onProgress,
|
|
120
126
|
partSize: sliceSize
|
|
121
|
-
});
|
|
127
|
+
}, _this.props.requestConfig);
|
|
122
128
|
|
|
123
129
|
case 6:
|
|
124
130
|
res = _context.sent;
|
|
131
|
+
_this.uploadIngSize = _this.uploadIngSize + 1;
|
|
125
132
|
fileId = null;
|
|
133
|
+
ImgRes = null;
|
|
126
134
|
|
|
127
|
-
if (res.code == 200) {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
} else {
|
|
131
|
-
options.onError();
|
|
135
|
+
if (!(res.code == 200)) {
|
|
136
|
+
_context.next = 19;
|
|
137
|
+
break;
|
|
132
138
|
}
|
|
133
139
|
|
|
134
|
-
|
|
140
|
+
fileId = res.data.attachId;
|
|
141
|
+
options.onSuccess();
|
|
142
|
+
|
|
143
|
+
if (!(_this.props.listType == "picture-card" && _this.props.newVersion)) {
|
|
144
|
+
_context.next = 17;
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
_context.next = 16;
|
|
149
|
+
return previewImage(fileId, _this.props.requestConfig);
|
|
150
|
+
|
|
151
|
+
case 16:
|
|
152
|
+
ImgRes = _context.sent;
|
|
153
|
+
|
|
154
|
+
case 17:
|
|
155
|
+
_context.next = 20;
|
|
156
|
+
break;
|
|
157
|
+
|
|
158
|
+
case 19:
|
|
159
|
+
options.onError();
|
|
160
|
+
|
|
161
|
+
case 20:
|
|
162
|
+
_this.uploadIngList.push({
|
|
135
163
|
file: options.file,
|
|
136
164
|
fileId: fileId,
|
|
137
|
-
status: res.code == 200 ? "success" : "error"
|
|
165
|
+
status: res.code == 200 ? "success" : "error",
|
|
166
|
+
url: ImgRes ? ImgRes.data : null
|
|
138
167
|
});
|
|
139
168
|
|
|
169
|
+
if (_this.uploadSize == _this.uploadIngSize) {
|
|
170
|
+
_this.onComplete(_this.uploadIngList);
|
|
171
|
+
}
|
|
172
|
+
|
|
140
173
|
onComplete && onComplete({
|
|
141
174
|
file: options.file,
|
|
142
175
|
fileId: fileId,
|
|
143
176
|
status: res.code == 200 ? "success" : "error"
|
|
144
177
|
});
|
|
145
|
-
_context.next =
|
|
178
|
+
_context.next = 29;
|
|
146
179
|
break;
|
|
147
180
|
|
|
148
|
-
case
|
|
149
|
-
_context.prev =
|
|
181
|
+
case 25:
|
|
182
|
+
_context.prev = 25;
|
|
150
183
|
_context.t0 = _context["catch"](3);
|
|
151
184
|
|
|
152
|
-
_this.
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
}
|
|
185
|
+
if (_this.uploadSize == _this.uploadIngSize) {
|
|
186
|
+
_this.onComplete(_this.uploadIngList);
|
|
187
|
+
|
|
188
|
+
options.onError();
|
|
189
|
+
}
|
|
157
190
|
|
|
158
191
|
onComplete && onComplete({
|
|
159
192
|
file: options.file,
|
|
160
193
|
fileId: "",
|
|
161
194
|
status: "error"
|
|
162
195
|
});
|
|
163
|
-
options.onError();
|
|
164
196
|
|
|
165
|
-
case
|
|
197
|
+
case 29:
|
|
166
198
|
case "end":
|
|
167
199
|
return _context.stop();
|
|
168
200
|
}
|
|
169
201
|
}
|
|
170
|
-
}, _callee, null, [[3,
|
|
202
|
+
}, _callee, null, [[3, 25]]);
|
|
171
203
|
}));
|
|
172
204
|
|
|
173
205
|
return function (_x) {
|
|
@@ -204,7 +236,8 @@ var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
204
236
|
status: item.status,
|
|
205
237
|
name: item.name || item.fileName,
|
|
206
238
|
type: item.type,
|
|
207
|
-
size: item.size
|
|
239
|
+
size: item.size,
|
|
240
|
+
url: item.url
|
|
208
241
|
});
|
|
209
242
|
newFileList.push(temp);
|
|
210
243
|
|
|
@@ -230,7 +263,8 @@ var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
230
263
|
value: function componentDidUpdate(preProps, preState) {
|
|
231
264
|
if (this.props.fileList) {
|
|
232
265
|
if (JSON.stringify(this.props.fileList) !== JSON.stringify(this.state.fileListStore)) {
|
|
233
|
-
this.
|
|
266
|
+
console.log("componentDidUpdate", JSON.parse(JSON.stringify(this.props.fileList)));
|
|
267
|
+
this.convertFileList(this.props.fileList);
|
|
234
268
|
}
|
|
235
269
|
}
|
|
236
270
|
}
|
|
@@ -374,8 +408,9 @@ var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
374
408
|
this.setState({
|
|
375
409
|
fileList: newList
|
|
376
410
|
});
|
|
411
|
+
this.uploadSize = ofileList.length;
|
|
377
412
|
|
|
378
|
-
case
|
|
413
|
+
case 30:
|
|
379
414
|
case "end":
|
|
380
415
|
return _context4.stop();
|
|
381
416
|
}
|
|
@@ -427,60 +462,83 @@ var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
427
462
|
}, {
|
|
428
463
|
key: "onComplete",
|
|
429
464
|
value: function () {
|
|
430
|
-
var _onComplete = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function
|
|
431
|
-
var fileList, _this$props4, newVersion, _this$props4$requestC, requestConfig, newList,
|
|
465
|
+
var _onComplete = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7(files) {
|
|
466
|
+
var fileList, _this$props4, newVersion, _this$props4$requestC, requestConfig, newList, onListChange;
|
|
432
467
|
|
|
433
|
-
return regeneratorRuntime.wrap(function
|
|
468
|
+
return regeneratorRuntime.wrap(function _callee7$(_context7) {
|
|
434
469
|
while (1) {
|
|
435
|
-
switch (
|
|
470
|
+
switch (_context7.prev = _context7.next) {
|
|
436
471
|
case 0:
|
|
472
|
+
this.uploadIngSize = 0;
|
|
473
|
+
this.uploadSize = 0;
|
|
474
|
+
this.uploadIngList = [];
|
|
437
475
|
fileList = this.state.fileList;
|
|
438
476
|
_this$props4 = this.props, newVersion = _this$props4.newVersion, _this$props4$requestC = _this$props4.requestConfig, requestConfig = _this$props4$requestC === void 0 ? {} : _this$props4$requestC;
|
|
439
477
|
newList = [];
|
|
440
|
-
fileList.map(function (
|
|
441
|
-
var
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
478
|
+
fileList.map( /*#__PURE__*/function () {
|
|
479
|
+
var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(item, index) {
|
|
480
|
+
var newFile;
|
|
481
|
+
return regeneratorRuntime.wrap(function _callee6$(_context6) {
|
|
482
|
+
while (1) {
|
|
483
|
+
switch (_context6.prev = _context6.next) {
|
|
484
|
+
case 0:
|
|
485
|
+
newFile = _objectSpread({}, item);
|
|
486
|
+
files.map( /*#__PURE__*/function () {
|
|
487
|
+
var _ref6 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(file) {
|
|
488
|
+
var url;
|
|
489
|
+
return regeneratorRuntime.wrap(function _callee5$(_context5) {
|
|
490
|
+
while (1) {
|
|
491
|
+
switch (_context5.prev = _context5.next) {
|
|
492
|
+
case 0:
|
|
493
|
+
if (file.file.uid == item.uid) {
|
|
494
|
+
newFile.status = file.status == "success" ? "done" : file.status;
|
|
495
|
+
newFile.fileId = file.fileId;
|
|
496
|
+
newFile.url = file.url;
|
|
497
|
+
|
|
498
|
+
if (!newVersion) {
|
|
499
|
+
url = "/jquick-resource/oss/endpoint/download-files?attachId=".concat(file.fileId, "&_tpk=").concat(window.localStorage.getItem("token"));
|
|
500
|
+
newFile.url = requestConfig.prefix ? requestConfig.prefix + url : "/api" + url;
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
case 1:
|
|
505
|
+
case "end":
|
|
506
|
+
return _context5.stop();
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
}, _callee5);
|
|
510
|
+
}));
|
|
511
|
+
|
|
512
|
+
return function (_x10) {
|
|
513
|
+
return _ref6.apply(this, arguments);
|
|
514
|
+
};
|
|
515
|
+
}());
|
|
516
|
+
newList.push(newFile);
|
|
466
517
|
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
518
|
+
case 3:
|
|
519
|
+
case "end":
|
|
520
|
+
return _context6.stop();
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
}, _callee6);
|
|
524
|
+
}));
|
|
470
525
|
|
|
471
|
-
|
|
526
|
+
return function (_x8, _x9) {
|
|
527
|
+
return _ref5.apply(this, arguments);
|
|
528
|
+
};
|
|
529
|
+
}());
|
|
472
530
|
this.setState({
|
|
473
|
-
fileList: newList
|
|
531
|
+
fileList: [].concat(newList)
|
|
474
532
|
});
|
|
475
533
|
onListChange = this.props.onListChange;
|
|
476
534
|
onListChange && onListChange(newList);
|
|
477
535
|
|
|
478
|
-
case
|
|
536
|
+
case 10:
|
|
479
537
|
case "end":
|
|
480
|
-
return
|
|
538
|
+
return _context7.stop();
|
|
481
539
|
}
|
|
482
540
|
}
|
|
483
|
-
},
|
|
541
|
+
}, _callee7, this);
|
|
484
542
|
}));
|
|
485
543
|
|
|
486
544
|
function onComplete(_x7) {
|
|
@@ -612,17 +670,7 @@ var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
612
670
|
|
|
613
671
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Upload, _extends({}, defaultProps, newprops, {
|
|
614
672
|
beforeUpload: this.beforeUpload.bind(this),
|
|
615
|
-
fileList: this.state.fileList
|
|
616
|
-
// console.log("onChangefile", file);
|
|
617
|
-
// console.log("onChangefileList", fileList);
|
|
618
|
-
// const { onChange, onListChange } = this.props;
|
|
619
|
-
// this.setState({
|
|
620
|
-
// fileList: fileList,
|
|
621
|
-
// });
|
|
622
|
-
// onListChange && onListChange(fileList);
|
|
623
|
-
// onChange && onChange({ file, fileList, event });
|
|
624
|
-
// }}
|
|
625
|
-
|
|
673
|
+
fileList: this.state.fileList
|
|
626
674
|
})));
|
|
627
675
|
}
|
|
628
676
|
}]);
|
|
@@ -633,4 +681,4 @@ var NscUpload = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
633
681
|
_defineProperty(NscUpload, "Dragger", NscUploadDragger);
|
|
634
682
|
|
|
635
683
|
export { NscUpload as default };
|
|
636
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdXBsb2FkL2luZGV4LnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsImZpbGUiLCJtZXNzYWdlIiwib21pdCIsImdldExlc3MiLCJzdHlsZXMiLCJjbHMiLCJGaWxlSWNvbiIsIkRlbGV0ZU91dGxpbmVkIiwiRG93bmxvYWRPdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiTnNjVXBsb2FkRHJhZ2dlciIsInVwbG9hZCIsImRvd25sb2FkIiwicHJldmlld0RvY3VtZW50IiwicHJldmlld0ltYWdlIiwiTnNjVXBsb2FkIiwiZmlsZUxpc3QiLCJ2aWV3SWQiLCJmaWxlTGlzdFN0b3JlIiwiZmlsZU5hbWVzIiwib3B0aW9ucyIsInByb3BzIiwib25Db21wbGV0ZSIsIm9uUHJvY2VzcyIsInNsaWNlU2l6ZSIsIm9uUHJvZ3Jlc3MiLCJ0b3RhbFByb2dyZXNzIiwicGVyY2VudCIsInBhcnRTaXplIiwicmVzIiwiZmlsZUlkIiwiY29kZSIsImRhdGEiLCJhdHRhY2hJZCIsIm9uU3VjY2VzcyIsIm9uRXJyb3IiLCJzdGF0dXMiLCJjb252ZXJ0RmlsZUxpc3QiLCJsaXN0IiwibGlzdFR5cGUiLCJuZXdGaWxlTGlzdCIsIm9sZExpc3QiLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJ0ZW1wIiwibmFtZSIsImZpbGVOYW1lIiwidHlwZSIsInNpemUiLCJwdXNoIiwic2V0U3RhdGUiLCJwcmVQcm9wcyIsInByZVN0YXRlIiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YXRlIiwib2ZpbGVMaXN0IiwibWF4U2l6ZSIsImFsbG93RmlsZVN1ZmZpeCIsImNoZWNrU2FtZUZpbGUiLCJtYXhDb3VudCIsInNob3dVcGxvYWRMaXN0IiwicHJvcHNMaXN0Iiwib25MaXN0Q2hhbmdlIiwiY2hlY2tGaWxlVHlwZSIsImVycm9yIiwiY2hlY2tMaXN0IiwiaW5kZXhPZiIsImJlZm9yZVVwbG9hZCIsIm5ld0xpc3QiLCJ1aWQiLCJsZW5ndGgiLCJpIiwic3BsaWNlIiwibmFtZXMiLCJzcGxpdCIsInN1ZmZpeCIsIm5ld0ZpbGUiLCJuZXdWZXJzaW9uIiwicmVxdWVzdENvbmZpZyIsInJlcXVlc3RJZCIsImZpbGVJbmRleCIsInVybCIsIndpbmRvdyIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJwcmVmaXgiLCJmaWxlUmVzIiwiZmlsZUNhcmQiLCJzaG93RG93bmxvYWRJY29uIiwic2hvd1ByZXZpZXdJY29uIiwic2hvd1JlbW92ZUljb24iLCJkb3dubG9hZEljb24iLCJyZW1vdmVJY29uIiwicHJldmlld0ljb24iLCJuZXdwcm9wcyIsImRlZmF1bHRQcm9wcyIsImN1c3RvbVJlcXVlc3QiLCJiaW5kIiwibXVsdGlwbGUiLCJpdGVtUmVuZGVyIiwib3JpZ2luTm9kZSIsImN1cnJGaWxlTGlzdCIsIm9uUHJldmlldyIsImN1cnNvciIsIm9uRG93bmxvYWQiLCJvblJlbW92ZSIsIm9uRGVsZXRlIiwid2lkdGgiLCJQdXJlQ29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLQSxLQUFaLE1BQXVCLE9BQXZCO0FBRUEsT0FBT0MsSUFBUCxNQUFpQixVQUFqQjtBQUNBLE9BQU9DLE9BQVAsTUFBb0IsWUFBcEI7QUFFQSxPQUFPQyxJQUFQLE1BQWlCLFNBQWpCO0FBQ0EsU0FBU0MsT0FBVCxRQUF3QixhQUF4QjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsY0FBbkI7QUFDQSxPQUFPQyxHQUFQLE1BQWdCLFlBQWhCO0FBQ0EsT0FBT0MsUUFBUCxNQUFxQixvQkFBckI7QUFDQSxTQUNFQyxjQURGLEVBRUVDLGdCQUZGLEVBR0VDLFdBSEYsUUFJTyxtQkFKUDtBQU1BLE9BQU9DLGdCQUFQLE1BQTZCLFdBQTdCO0FBQ0EsSUFBUUMsTUFBUixHQUE0RFgsSUFBNUQsQ0FBUVcsTUFBUjtBQUFBLElBQWdCQyxRQUFoQixHQUE0RFosSUFBNUQsQ0FBZ0JZLFFBQWhCO0FBQUEsSUFBMEJDLGVBQTFCLEdBQTREYixJQUE1RCxDQUEwQmEsZUFBMUI7QUFBQSxJQUEyQ0MsWUFBM0MsR0FBNERkLElBQTVELENBQTJDYyxZQUEzQzs7SUFlcUJDLFM7Ozs7Ozs7Ozs7Ozs7Ozs7NERBRVg7QUFBRUMsTUFBQUEsUUFBUSxFQUFFLEVBQVo7QUFBZ0JDLE1BQUFBLE1BQU0sRUFBRSxFQUF4QjtBQUE0QkMsTUFBQUEsYUFBYSxFQUFFLEVBQTNDO0FBQStDQyxNQUFBQSxTQUFTLEVBQUU7QUFBMUQsSzs7O3lFQXFMUSxpQkFBT0MsT0FBUDtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ1JwQixnQkFBQUEsSUFEUSxHQUNEb0IsT0FBTyxDQUFDcEIsSUFEUDtBQUFBLDhCQUUrQixNQUFLcUIsS0FGcEMsRUFFTkMsVUFGTSxlQUVOQSxVQUZNLEVBRU1DLFNBRk4sZUFFTUEsU0FGTixFQUVpQkMsU0FGakIsZUFFaUJBLFNBRmpCOztBQUdSQyxnQkFBQUEsVUFIUSxHQUdLLFNBQWJBLFVBQWEsQ0FBQ0MsYUFBRCxFQUF3QjtBQUN6Q04sa0JBQUFBLE9BQU8sQ0FBQ0ssVUFBUixDQUFtQjtBQUFFRSxvQkFBQUEsT0FBTyxFQUFFRDtBQUFYLG1CQUFuQixFQUErQzFCLElBQS9DOztBQUNBLHdCQUFLdUIsU0FBTCxDQUFlO0FBQUVJLG9CQUFBQSxPQUFPLEVBQUVELGFBQVg7QUFBMEIxQixvQkFBQUEsSUFBSSxFQUFFQTtBQUFoQyxtQkFBZjs7QUFDQXVCLGtCQUFBQSxTQUFTLElBQUlBLFNBQVMsQ0FBQztBQUFFSSxvQkFBQUEsT0FBTyxFQUFFRCxhQUFYO0FBQTBCMUIsb0JBQUFBLElBQUksRUFBRUE7QUFBaEMsbUJBQUQsQ0FBdEI7QUFDRCxpQkFQYTs7QUFBQTtBQUFBO0FBQUEsdUJBU1dXLE1BQU0sQ0FBQztBQUM1Qlgsa0JBQUFBLElBQUksRUFBRUEsSUFEc0I7QUFFNUJ5QixrQkFBQUEsVUFBVSxFQUFFQSxVQUZnQjtBQUc1Qkcsa0JBQUFBLFFBQVEsRUFBRUo7QUFIa0IsaUJBQUQsQ0FUakI7O0FBQUE7QUFTTkssZ0JBQUFBLEdBVE07QUFjUkMsZ0JBQUFBLE1BZFEsR0FjQyxJQWREOztBQWVaLG9CQUFJRCxHQUFHLENBQUNFLElBQUosSUFBWSxHQUFoQixFQUFxQjtBQUNuQkQsa0JBQUFBLE1BQU0sR0FBR0QsR0FBRyxDQUFDRyxJQUFKLENBQVNDLFFBQWxCO0FBQ0FiLGtCQUFBQSxPQUFPLENBQUNjLFNBQVI7QUFDRCxpQkFIRCxNQUdPO0FBQ0xkLGtCQUFBQSxPQUFPLENBQUNlLE9BQVI7QUFDRDs7QUFDRCxzQkFBS2IsVUFBTCxDQUFnQjtBQUNkdEIsa0JBQUFBLElBQUksRUFBRW9CLE9BQU8sQ0FBQ3BCLElBREE7QUFFZDhCLGtCQUFBQSxNQUFNLEVBQUVBLE1BRk07QUFHZE0sa0JBQUFBLE1BQU0sRUFBRVAsR0FBRyxDQUFDRSxJQUFKLElBQVksR0FBWixHQUFrQixTQUFsQixHQUE4QjtBQUh4QixpQkFBaEI7O0FBS0FULGdCQUFBQSxVQUFVLElBQ1JBLFVBQVUsQ0FBQztBQUNUdEIsa0JBQUFBLElBQUksRUFBRW9CLE9BQU8sQ0FBQ3BCLElBREw7QUFFVDhCLGtCQUFBQSxNQUFNLEVBQUVBLE1BRkM7QUFHVE0sa0JBQUFBLE1BQU0sRUFBRVAsR0FBRyxDQUFDRSxJQUFKLElBQVksR0FBWixHQUFrQixTQUFsQixHQUE4QjtBQUg3QixpQkFBRCxDQURaO0FBMUJZO0FBQUE7O0FBQUE7QUFBQTtBQUFBOztBQWlDWixzQkFBS1QsVUFBTCxDQUFnQjtBQUNkdEIsa0JBQUFBLElBQUksRUFBRW9CLE9BQU8sQ0FBQ3BCLElBREE7QUFFZDhCLGtCQUFBQSxNQUFNLEVBQUUsRUFGTTtBQUdkTSxrQkFBQUEsTUFBTSxFQUFFO0FBSE0saUJBQWhCOztBQUtBZCxnQkFBQUEsVUFBVSxJQUNSQSxVQUFVLENBQUM7QUFBRXRCLGtCQUFBQSxJQUFJLEVBQUVvQixPQUFPLENBQUNwQixJQUFoQjtBQUFzQjhCLGtCQUFBQSxNQUFNLEVBQUUsRUFBOUI7QUFBa0NNLGtCQUFBQSxNQUFNLEVBQUU7QUFBMUMsaUJBQUQsQ0FEWjtBQUVBaEIsZ0JBQUFBLE9BQU8sQ0FBQ2UsT0FBUjs7QUF4Q1k7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTzs7Ozs7Ozs7Ozs7O1dBcExoQiw2QkFBb0I7QUFDbEIsVUFBSSxLQUFLZCxLQUFMLENBQVdMLFFBQWYsRUFBeUI7QUFDdkIsYUFBS3FCLGVBQUw7QUFDRDtBQUNGOzs7V0FDRCx5QkFBZ0JDLElBQWhCLEVBQXNDO0FBQ3BDLHlCQUErQixLQUFLakIsS0FBcEM7QUFBQSxVQUFRTCxRQUFSLGdCQUFRQSxRQUFSO0FBQUEsVUFBa0J1QixRQUFsQixnQkFBa0JBLFFBQWxCO0FBRUEsVUFBTUMsV0FBVyxHQUFHLEVBQXBCO0FBQ0EsVUFBSUMsT0FBTyxHQUFHSCxJQUFJLEdBQUdBLElBQUgsR0FBVXRCLFFBQTVCO0FBQ0F5QixNQUFBQSxPQUFPLENBQUNDLEdBQVI7QUFBQSw0RUFBWSxrQkFBT0MsSUFBUCxFQUFrQkMsS0FBbEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ05DLGtCQUFBQSxJQURNLG1DQUVMRixJQUZLO0FBR1JQLG9CQUFBQSxNQUFNLEVBQUVPLElBQUksQ0FBQ1AsTUFITDtBQUlSVSxvQkFBQUEsSUFBSSxFQUFFSCxJQUFJLENBQUNHLElBQUwsSUFBYUgsSUFBSSxDQUFDSSxRQUpoQjtBQUtSQyxvQkFBQUEsSUFBSSxFQUFFTCxJQUFJLENBQUNLLElBTEg7QUFNUkMsb0JBQUFBLElBQUksRUFBRU4sSUFBSSxDQUFDTTtBQU5IO0FBU1ZULGtCQUFBQSxXQUFXLENBQUNVLElBQVosQ0FBaUJMLElBQWpCOztBQVRVO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFNBQVo7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQSxXQUFLTSxRQUFMLENBQWM7QUFDWm5DLFFBQUFBLFFBQVEsWUFBTXdCLFdBQU4sQ0FESTtBQUVadEIsUUFBQUEsYUFBYSxxQkFBTUYsUUFBTjtBQUZELE9BQWQ7QUFJRDs7O1dBQ0QsNEJBQW1Cb0MsUUFBbkIsRUFBNkJDLFFBQTdCLEVBQXVDO0FBQ3JDLFVBQUksS0FBS2hDLEtBQUwsQ0FBV0wsUUFBZixFQUF5QjtBQUN2QixZQUNFc0MsSUFBSSxDQUFDQyxTQUFMLENBQWUsS0FBS2xDLEtBQUwsQ0FBV0wsUUFBMUIsTUFDQXNDLElBQUksQ0FBQ0MsU0FBTCxDQUFlLEtBQUtDLEtBQUwsQ0FBV3RDLGFBQTFCLENBRkYsRUFHRTtBQUNBLGVBQUttQixlQUFMO0FBQ0Q7QUFDRjtBQUNGOzs7V0FDRCx1QkFBYztBQUNaLGFBQU8sS0FBS21CLEtBQUwsQ0FBV3hDLFFBQWxCO0FBQ0Q7OztXQUNELHFCQUFZQSxRQUFaLEVBQXFDO0FBQ25DLFdBQUtxQixlQUFMLENBQXFCckIsUUFBckI7QUFDRDs7OztrRkFDRCxrQkFBbUJoQixJQUFuQixFQUF5QnlELFNBQXpCO0FBQUE7O0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwrQkFTTSxLQUFLcEMsS0FUWCxzQ0FFSXFDLE9BRkosRUFFSUEsT0FGSixxQ0FFYyxHQUZkLHlCQUdJQyxlQUhKLGdCQUdJQSxlQUhKLHVDQUlJQyxhQUpKLEVBSUlBLGFBSkosc0NBSW9CLElBSnBCLDBCQUtJQyxRQUxKLGdCQUtJQSxRQUxKLEVBTUlDLGNBTkosZ0JBTUlBLGNBTkosRUFPY0MsU0FQZCxnQkFPSS9DLFFBUEosRUFRSWdELFlBUkosZ0JBUUlBLFlBUko7QUFBQSw4QkFVb0MsS0FBS1IsS0FWekMsRUFVUXhDLFFBVlIsZUFVUUEsUUFWUixFQVVrQkUsYUFWbEIsZUFVa0JBLGFBVmxCOztBQUFBLHNCQVlNeUMsZUFBZSxJQUFJLENBQUMsS0FBS00sYUFBTCxDQUFtQmpFLElBQW5CLENBWjFCO0FBQUE7QUFBQTtBQUFBOztBQWFJQyxnQkFBQUEsT0FBTyxDQUFDaUUsS0FBUixXQUNLbEUsSUFBSSxDQUFDOEMsSUFEViw2R0FDaUNhLGVBRGpDO0FBYkosa0RBZ0JXLEtBaEJYOztBQUFBO0FBQUEsc0JBa0JNRCxPQUFPLEtBQUssS0FsQmxCO0FBQUE7QUFBQTtBQUFBOztBQW1CSSxvQkFBSUEsT0FBTyxLQUFLLElBQWhCLEVBQXNCO0FBQ3BCQSxrQkFBQUEsT0FBTyxHQUFHLEdBQVY7QUFDRDs7QUFDRFQsZ0JBQUFBLElBQUksR0FBR1MsT0FBTyxHQUFHLElBQVYsR0FBaUIsSUFBeEI7O0FBdEJKLHNCQXVCUVQsSUFBSSxHQUFHakQsSUFBSSxDQUFDaUQsSUF2QnBCO0FBQUE7QUFBQTtBQUFBOztBQXdCTWhELGdCQUFBQSxPQUFPLENBQUNpRSxLQUFSLFdBQWlCbEUsSUFBSSxDQUFDOEMsSUFBdEIsaURBQW1DWSxPQUFuQztBQXhCTixrREF5QmEsS0F6QmI7O0FBQUE7QUE0Qk12QyxnQkFBQUEsU0E1Qk4sR0E0QmtCLEVBNUJsQjs7QUFBQSxxQkE2Qk15QyxhQTdCTjtBQUFBO0FBQUE7QUFBQTs7QUE4QlVPLGdCQUFBQSxTQTlCVixHQThCc0IsS0FBSzlDLEtBQUwsQ0FBV0wsUUFBWCxHQUFzQkUsYUFBdEIsR0FBc0NGLFFBOUI1RDtBQStCSW1ELGdCQUFBQSxTQUFTLENBQUN6QixHQUFWLENBQWMsVUFBQ0MsSUFBRCxFQUFVO0FBQ3RCeEIsa0JBQUFBLFNBQVMsQ0FBQytCLElBQVYsQ0FBZVAsSUFBSSxDQUFDRyxJQUFMLElBQWFILElBQUksQ0FBQ0ksUUFBakM7QUFDRCxpQkFGRDs7QUEvQkosc0JBbUNRNUIsU0FBUyxDQUFDaUQsT0FBVixDQUFrQnBFLElBQUksQ0FBQzhDLElBQXZCLElBQStCLENBQUMsQ0FBaEMsSUFBcUNnQixjQUFjLEtBQUssS0FuQ2hFO0FBQUE7QUFBQTtBQUFBOztBQW9DTTdELGdCQUFBQSxPQUFPLENBQUNpRSxLQUFSLHVCQUFtQmxFLElBQUksQ0FBQzhDLElBQXhCO0FBcENOLGtEQXFDYSxLQXJDYjs7QUFBQTtBQUFBLHFCQXlDTSxLQUFLekIsS0FBTCxDQUFXZ0QsWUF6Q2pCO0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUEsdUJBMENzQixLQUFLaEQsS0FBTCxDQUFXZ0QsWUFBWCxDQUF3QnJFLElBQXhCLEVBQThCeUQsU0FBOUIsQ0ExQ3RCOztBQUFBO0FBMENVNUIsZ0JBQUFBLEdBMUNWOztBQUFBLHNCQTJDUUEsR0FBRyxLQUFLLEtBM0NoQjtBQUFBO0FBQUE7QUFBQTs7QUFBQSxrREE0Q2EsS0E1Q2I7O0FBQUE7QUErQ1F5QyxnQkFBQUEsT0EvQ1Isc0JBK0NzQnRELFFBL0N0QjtBQWdERXlDLGdCQUFBQSxTQUFTLENBQUNmLEdBQVY7QUFBQSxzRkFBYyxrQkFBT0MsSUFBUDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDWixnQ0FDRSxFQUNHZ0IsZUFBZSxJQUFJLENBQUMsTUFBSSxDQUFDTSxhQUFMLENBQW1CdEIsSUFBbkIsQ0FBckIsSUFDQU0sSUFBSSxHQUFHTixJQUFJLENBQUNNLElBRFosSUFFQ1csYUFBYSxJQUFJekMsU0FBUyxDQUFDaUQsT0FBVixDQUFrQnpCLElBQUksQ0FBQ0csSUFBdkIsSUFBK0IsQ0FBQyxDQUhwRCxDQURGLEVBTUU7QUFDTUQsOEJBQUFBLElBRE4sR0FDYTtBQUNYRSxnQ0FBQUEsUUFBUSxFQUFFSixJQUFJLENBQUNHLElBREo7QUFFWG5CLGdDQUFBQSxPQUFPLEVBQUUsQ0FGRTtBQUdYUyxnQ0FBQUEsTUFBTSxFQUFFLFdBSEc7QUFJWG1DLGdDQUFBQSxHQUFHLEVBQUU1QixJQUFJLENBQUM0QixHQUpDO0FBS1h6QixnQ0FBQUEsSUFBSSxFQUFFSCxJQUFJLENBQUNHLElBTEE7QUFNWEUsZ0NBQUFBLElBQUksRUFBRUwsSUFBSSxDQUFDSyxJQU5BO0FBT1hDLGdDQUFBQSxJQUFJLEVBQUVOLElBQUksQ0FBQ007QUFQQSwrQkFEYjtBQVVBcUIsOEJBQUFBLE9BQU8sQ0FBQ3BCLElBQVIsQ0FBYUwsSUFBYjtBQUNEOztBQWxCVztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFBZDs7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFxQkEsb0JBQUlnQixRQUFRLElBQUlTLE9BQU8sQ0FBQ0UsTUFBUixHQUFpQlgsUUFBakMsRUFBMkM7QUFDckNXLGtCQUFBQSxNQURxQyxHQUM1QkYsT0FBTyxDQUFDRSxNQUFSLEdBQWlCWCxRQURXOztBQUV6Qyx1QkFBU1ksQ0FBVCxHQUFhLENBQWIsRUFBZ0JBLENBQUMsR0FBR0QsTUFBcEIsRUFBNEJDLENBQUMsRUFBN0IsRUFBaUM7QUFDL0JILG9CQUFBQSxPQUFPLENBQUNJLE1BQVIsQ0FBZSxDQUFmLEVBQWtCLENBQWxCO0FBQ0Q7QUFDRjs7QUFDRFYsZ0JBQUFBLFlBQVksSUFBSUEsWUFBWSxDQUFDTSxPQUFELENBQTVCO0FBQ0EscUJBQUtuQixRQUFMLENBQWM7QUFBRW5DLGtCQUFBQSxRQUFRLEVBQUVzRDtBQUFaLGlCQUFkOztBQTVFRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPOzs7Ozs7Ozs7O1dBOEVBLHVCQUFjdEUsSUFBZCxFQUFvQjtBQUNsQixVQUFRMkQsZUFBUixHQUE0QixLQUFLdEMsS0FBakMsQ0FBUXNDLGVBQVI7QUFDQSxVQUFNZ0IsS0FBSyxHQUFHM0UsSUFBSSxDQUFDOEMsSUFBTCxDQUFVOEIsS0FBVixDQUFnQixHQUFoQixDQUFkO0FBQ0EsVUFBTUMsTUFBTSxHQUFHRixLQUFLLENBQUNBLEtBQUssQ0FBQ0gsTUFBTixHQUFlLENBQWhCLENBQXBCOztBQUNBLFVBQUliLGVBQWUsQ0FBQ1MsT0FBaEIsQ0FBd0JTLE1BQXhCLElBQWtDLENBQUMsQ0FBdkMsRUFBMEM7QUFDeEMsZUFBTyxJQUFQO0FBQ0Q7O0FBQ0QsYUFBTyxLQUFQO0FBQ0Q7OztXQUNELDBCQUFrQztBQUFBLFVBQXRCbEQsT0FBc0IsU0FBdEJBLE9BQXNCO0FBQUEsVUFBYjNCLElBQWEsU0FBYkEsSUFBYTtBQUNoQyxVQUFRZ0IsUUFBUixHQUFxQixLQUFLd0MsS0FBMUIsQ0FBUXhDLFFBQVI7QUFDQSxVQUFRZ0QsWUFBUixHQUF5QixLQUFLM0MsS0FBOUIsQ0FBUTJDLFlBQVI7QUFDQSxVQUFNTSxPQUFZLEdBQUcsRUFBckI7QUFDQXRELE1BQUFBLFFBQVEsQ0FBQzBCLEdBQVQsQ0FBYSxVQUFDQyxJQUFELEVBQWU7QUFDMUIsWUFBTW1DLE9BQU8scUJBQVFuQyxJQUFSLENBQWI7O0FBQ0EsWUFBSTNDLElBQUksQ0FBQ3VFLEdBQUwsSUFBWTVCLElBQUksQ0FBQzRCLEdBQXJCLEVBQTBCO0FBQ3hCTyxVQUFBQSxPQUFPLENBQUNuRCxPQUFSLEdBQWtCQSxPQUFsQjtBQUNEOztBQUNEMkMsUUFBQUEsT0FBTyxDQUFDcEIsSUFBUixDQUFhNEIsT0FBYjtBQUNELE9BTkQ7QUFPQSxXQUFLM0IsUUFBTCxDQUFjO0FBQ1puQyxRQUFBQSxRQUFRLEVBQUVzRDtBQURFLE9BQWQ7QUFHQU4sTUFBQUEsWUFBWSxJQUFJQSxZQUFZLENBQUNoRCxRQUFELENBQTVCO0FBQ0Q7Ozs7Z0ZBQ0Qsa0JBQWlCaEIsSUFBakI7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNVZ0IsZ0JBQUFBLFFBRFYsR0FDdUIsS0FBS3dDLEtBRDVCLENBQ1V4QyxRQURWO0FBQUEsK0JBRTZDLEtBQUtLLEtBRmxELEVBRVUwRCxVQUZWLGdCQUVVQSxVQUZWLHVDQUVzQkMsYUFGdEIsRUFFc0JBLGFBRnRCLHNDQUVzQyxFQUZ0QztBQUdRVixnQkFBQUEsT0FIUixHQUd1QixFQUh2QjtBQU1FdEQsZ0JBQUFBLFFBQVEsQ0FBQzBCLEdBQVQsQ0FBYSxVQUFDQyxJQUFELEVBQVlDLEtBQVosRUFBc0I7QUFDakMsc0JBQU1rQyxPQUFPLHFCQUFRbkMsSUFBUixDQUFiOztBQUNBLHNCQUFJM0MsSUFBSSxDQUFDQSxJQUFMLENBQVV1RSxHQUFWLElBQWlCNUIsSUFBSSxDQUFDNEIsR0FBMUIsRUFBK0I7QUFDN0JPLG9CQUFBQSxPQUFPLENBQUMxQyxNQUFSLEdBQWlCcEMsSUFBSSxDQUFDb0MsTUFBTCxJQUFlLFNBQWYsR0FBMkIsTUFBM0IsR0FBb0NwQyxJQUFJLENBQUNvQyxNQUExRDtBQUNBMEMsb0JBQUFBLE9BQU8sQ0FBQ2hELE1BQVIsR0FBaUI5QixJQUFJLENBQUM4QixNQUF0Qjs7QUFDQSx3QkFBSWlELFVBQUosRUFBZ0I7QUFDZEUsc0JBQUFBLFNBQVMsR0FBR2pGLElBQUksQ0FBQzhCLE1BQWpCO0FBQ0FvRCxzQkFBQUEsU0FBUyxHQUFHdEMsS0FBWjtBQUNELHFCQUhELE1BR087QUFDTCwwQkFBSXVDLEdBQUcsbUVBQ0xuRixJQUFJLENBQUM4QixNQURBLG1CQUVFc0QsTUFBTSxDQUFDQyxZQUFQLENBQW9CQyxPQUFwQixDQUE0QixPQUE1QixDQUZGLENBQVA7QUFHQVIsc0JBQUFBLE9BQU8sQ0FBQ0ssR0FBUixHQUFjSCxhQUFhLENBQUNPLE1BQWQsR0FDVlAsYUFBYSxDQUFDTyxNQUFkLEdBQXVCSixHQURiLEdBRVYsU0FBU0EsR0FGYjtBQUdEO0FBQ0Y7O0FBQ0RiLGtCQUFBQSxPQUFPLENBQUNwQixJQUFSLENBQWE0QixPQUFiO0FBQ0QsaUJBbEJEOztBQU5GLHFCQXlCTUcsU0F6Qk47QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQSx1QkEwQitCbkUsWUFBWSxDQUFDbUUsU0FBRCxFQUFXRCxhQUFYLENBMUIzQzs7QUFBQTtBQTBCVVEsZ0JBQUFBLE9BMUJWO0FBMkJJbEIsZ0JBQUFBLE9BQU8sQ0FBQ1ksU0FBRCxDQUFQLENBQW1CQyxHQUFuQixHQUF5QkssT0FBTyxDQUFDeEQsSUFBakM7O0FBM0JKO0FBNkJFLHFCQUFLbUIsUUFBTCxDQUFjO0FBQ1puQyxrQkFBQUEsUUFBUSxFQUFFc0Q7QUFERSxpQkFBZDtBQUdRTixnQkFBQUEsWUFoQ1YsR0FnQzJCLEtBQUszQyxLQWhDaEMsQ0FnQ1UyQyxZQWhDVjtBQWlDRUEsZ0JBQUFBLFlBQVksSUFBSUEsWUFBWSxDQUFDTSxPQUFELENBQTVCOztBQWpDRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxPOzs7Ozs7Ozs7O1dBOEVBLGtCQUFTdEUsSUFBVCxFQUFlO0FBQ2IsVUFBUWdCLFFBQVIsR0FBcUIsS0FBS3dDLEtBQTFCLENBQVF4QyxRQUFSO0FBQ0EsVUFBUWdELFlBQVIsR0FBeUIsS0FBSzNDLEtBQTlCLENBQVEyQyxZQUFSO0FBQ0EsVUFBTU0sT0FBWSxHQUFHLEVBQXJCO0FBQ0F0RCxNQUFBQSxRQUFRLENBQUMwQixHQUFULENBQWEsVUFBQ0MsSUFBRCxFQUFlO0FBQzFCO0FBQ0EsWUFDRUEsSUFBSSxDQUFDRyxJQUFMLEtBQWM5QyxJQUFJLENBQUM4QyxJQUFuQixJQUNBSCxJQUFJLENBQUNiLE1BQUwsS0FBZ0I5QixJQUFJLENBQUM4QixNQURyQixJQUVBYSxJQUFJLENBQUM0QixHQUFMLEtBQWF2RSxJQUFJLENBQUN1RSxHQUhwQixFQUlFO0FBQ0FELFVBQUFBLE9BQU8sQ0FBQ3BCLElBQVIsQ0FBYVAsSUFBYjtBQUNEO0FBQ0YsT0FURDtBQVVBLFdBQUtRLFFBQUwsQ0FBYztBQUNabkMsUUFBQUEsUUFBUSxFQUFFc0Q7QUFERSxPQUFkO0FBR0FOLE1BQUFBLFlBQVksSUFBSUEsWUFBWSxDQUFDTSxPQUFELENBQTVCO0FBQ0Q7OztXQUNELGtCQUEwQjtBQUFBOztBQUN4Qix5QkFZSSxLQUFLakQsS0FaVDtBQUFBLFVBQ0VMLFFBREYsZ0JBQ0VBLFFBREY7QUFBQSxVQUVFeUUsUUFGRixnQkFFRUEsUUFGRjtBQUFBLCtDQUdFM0IsY0FIRjtBQUFBLFVBR0VBLGNBSEYsc0NBR21CO0FBQ2Y0QixRQUFBQSxnQkFBZ0IsRUFBRSxJQURIO0FBRWZDLFFBQUFBLGVBQWUsRUFBRSxLQUZGO0FBR2ZDLFFBQUFBLGNBQWMsRUFBRSxJQUhEO0FBSWZDLFFBQUFBLFlBQVksRUFBRSxJQUpDO0FBS2ZDLFFBQUFBLFVBQVUsRUFBRSxJQUxHO0FBTWZDLFFBQUFBLFdBQVcsRUFBRTtBQU5FLE9BSG5CO0FBQUEsK0NBV0VmLGFBWEY7QUFBQSxVQVdFQSxhQVhGLHNDQVdrQixFQVhsQjtBQWFBLFVBQU1nQixRQUFRLEdBQUc5RixJQUFJLENBQUMsS0FBS21CLEtBQU4sRUFBYSxDQUNoQyxXQURnQyxFQUVoQyxTQUZnQyxFQUdoQyxZQUhnQyxFQUloQyxXQUpnQyxFQUtoQyxpQkFMZ0MsRUFNaEMsZ0JBTmdDLEVBT2hDLFVBUGdDLEVBUWhDLGNBUmdDLEVBU2hDLFlBVGdDLEVBVWhDLGVBVmdDLENBQWIsQ0FBckI7QUFZQSxVQUFJNEUsWUFBWSxHQUFHO0FBQ2pCQyxRQUFBQSxhQUFhLEVBQUUsS0FBS0EsYUFBTCxDQUFtQkMsSUFBbkIsQ0FBd0IsSUFBeEIsQ0FERTtBQUVqQkMsUUFBQUEsUUFBUSxFQUFFO0FBRk8sT0FBbkI7O0FBSUEsVUFBSVgsUUFBSixFQUFjO0FBQ1pRLFFBQUFBLFlBQVksbUNBQ1BBLFlBRE87QUFFVkksVUFBQUEsVUFBVSxFQUFFLG9CQUFDQyxVQUFELEVBQWF0RyxJQUFiLEVBQXdCdUcsWUFBeEIsRUFBeUM7QUFDbkQsZ0JBQU16RCxJQUFJLEdBQUc5QyxJQUFJLENBQUM4QyxJQUFMLElBQWE5QyxJQUFJLENBQUMrQyxRQUEvQjtBQUNBLGdCQUFNNEIsS0FBSyxHQUFHN0IsSUFBSCxhQUFHQSxJQUFILHVCQUFHQSxJQUFJLENBQUU4QixLQUFOLENBQVksR0FBWixDQUFkO0FBQ0EsZ0JBQU1DLE1BQU0sR0FBR0YsS0FBSyxHQUFHQSxLQUFLLENBQUNBLEtBQUssQ0FBQ0gsTUFBTixHQUFlLENBQWhCLENBQVIsR0FBNkIsRUFBakQ7QUFDQSxnQ0FDRTtBQUFLLGNBQUEsU0FBUyxFQUFFckUsT0FBTyxDQUFDQyxNQUFELEVBQVMsV0FBVDtBQUF2Qiw0QkFDRTtBQUNFLGNBQUEsU0FBUyxFQUFFQyxHQUFHLENBQUNGLE9BQU8sQ0FBQ0MsTUFBRCxFQUFTLFNBQVQsQ0FBUixzQkFDWEQsT0FBTyxDQUFDQyxNQUFELEVBQVMsZUFBVCxDQURJLEVBQ3dCSixJQUFJLENBQUNvQyxNQUFMLElBQWUsT0FEdkM7QUFEaEIsNEJBS0U7QUFBSyxjQUFBLFNBQVMsRUFBRWpDLE9BQU8sQ0FBQ0MsTUFBRCxFQUFTLGNBQVQ7QUFBdkIsNEJBQ0Usb0JBQUMsUUFBRDtBQUFVLGNBQUEsTUFBTSxFQUFFeUUsTUFBbEI7QUFBMEIsY0FBQSxNQUFNLEVBQUU3RSxJQUFJLENBQUM4QjtBQUF2QyxjQURGLENBTEYsZUFRRTtBQUFLLGNBQUEsU0FBUyxFQUFFM0IsT0FBTyxDQUFDQyxNQUFELEVBQVMsTUFBVDtBQUF2QixlQUNHSixJQUFJLENBQUM4QyxJQUFMLElBQWE5QyxJQUFJLENBQUMrQyxRQURyQixDQVJGLGVBV0U7QUFBSyxjQUFBLFNBQVMsRUFBRTVDLE9BQU8sQ0FBQ0MsTUFBRCxFQUFTLE1BQVQ7QUFBdkIsZUFDRzBELGNBQWMsQ0FBQzZCLGVBQWYsSUFBa0MzRixJQUFJLENBQUNvQyxNQUFMLElBQWUsTUFBakQsaUJBQ0M7QUFDRSxjQUFBLE9BQU8sRUFBRSxtQkFBTTtBQUNiLG9CQUFJLE1BQUksQ0FBQ2YsS0FBTCxDQUFXbUYsU0FBZixFQUEwQjtBQUN4QixrQkFBQSxNQUFJLENBQUNuRixLQUFMLENBQVdtRixTQUFYLENBQXFCeEcsSUFBckI7QUFDRCxpQkFGRCxNQUVPO0FBQ0xhLGtCQUFBQSxlQUFlLENBQUNiLElBQUksQ0FBQzhCLE1BQU4sRUFBY2tELGFBQWQsQ0FBZjtBQUNEO0FBQ0YsZUFQSDtBQVFFLGNBQUEsS0FBSyxFQUFFO0FBQUV5QixnQkFBQUEsTUFBTSxFQUFFO0FBQVY7QUFSVCxlQVVHM0MsY0FBYyxDQUFDK0IsWUFBZixHQUNDL0IsY0FBYyxDQUFDK0IsWUFEaEIsZ0JBR0Msb0JBQUMsV0FBRCxPQWJKLENBRkosRUFtQkcvQixjQUFjLENBQUM0QixnQkFBZixJQUFtQzFGLElBQUksQ0FBQ29DLE1BQUwsSUFBZSxNQUFsRCxpQkFDQztBQUNFLGNBQUEsT0FBTyxFQUFFLG1CQUFNO0FBQ2Isb0JBQUksTUFBSSxDQUFDZixLQUFMLENBQVdxRixVQUFmLEVBQTJCO0FBQ3pCLGtCQUFBLE1BQUksQ0FBQ3JGLEtBQUwsQ0FBV3FGLFVBQVgsQ0FBc0IxRyxJQUF0QjtBQUNELGlCQUZELE1BRU87QUFDTFksa0JBQUFBLFFBQVEsQ0FBQ1osSUFBSSxDQUFDOEIsTUFBTixFQUFjLElBQWQsRUFBb0JrRCxhQUFwQixDQUFSO0FBQ0Q7QUFDRixlQVBIO0FBUUUsY0FBQSxLQUFLLEVBQUU7QUFBRXlCLGdCQUFBQSxNQUFNLEVBQUU7QUFBVjtBQVJULGVBVUczQyxjQUFjLENBQUMrQixZQUFmLEdBQ0MvQixjQUFjLENBQUMrQixZQURoQixnQkFHQyxvQkFBQyxnQkFBRCxPQWJKLENBcEJKLEVBcUNHL0IsY0FBYyxDQUFDOEIsY0FBZixpQkFDQztBQUNFLGNBQUEsT0FBTyxFQUFFLG1CQUFNO0FBQ2Isb0JBQUksTUFBSSxDQUFDdkUsS0FBTCxDQUFXc0YsUUFBZixFQUF5QjtBQUN2QixrQkFBQSxNQUFJLENBQUN0RixLQUFMLENBQVdzRixRQUFYLENBQW9CM0csSUFBcEI7QUFDRCxpQkFGRCxNQUVPO0FBQ0wsa0JBQUEsTUFBSSxDQUFDNEcsUUFBTCxDQUFjNUcsSUFBZDtBQUNEO0FBQ0YsZUFQSDtBQVFFLGNBQUEsS0FBSyxFQUFFO0FBQUV5RyxnQkFBQUEsTUFBTSxFQUFFO0FBQVY7QUFSVCxlQVVHM0MsY0FBYyxDQUFDK0IsWUFBZixHQUNDL0IsY0FBYyxDQUFDK0IsWUFEaEIsZ0JBR0Msb0JBQUMsY0FBRCxPQWJKLENBdENKLENBWEYsQ0FERixFQXFFRzdGLElBQUksQ0FBQ29DLE1BQUwsSUFBZSxXQUFmLGlCQUNDO0FBQUssY0FBQSxTQUFTLEVBQUVqQyxPQUFPLENBQUNDLE1BQUQsRUFBUyxTQUFUO0FBQXZCLDRCQUNFO0FBQ0UsY0FBQSxTQUFTLEVBQUVELE9BQU8sQ0FBQ0MsTUFBRCxFQUFTLFNBQVQsQ0FEcEI7QUFFRSxjQUFBLEtBQUssRUFBRTtBQUFFeUcsZ0JBQUFBLEtBQUssRUFBRTdHLElBQUksQ0FBQzJCLE9BQUwsR0FBZTtBQUF4QjtBQUZULGNBREYsQ0F0RUosQ0FERjtBQWdGRDtBQXRGUyxVQUFaO0FBd0ZELE9BekZELE1BeUZPO0FBQ0xzRSxRQUFBQSxZQUFZLG1DQUNQQSxZQURPO0FBRVZTLFVBQUFBLFVBQVUsRUFBRSxvQkFBQzFHLElBQUQsRUFBZTtBQUN6QlksWUFBQUEsUUFBUSxDQUFDWixJQUFJLENBQUM4QixNQUFOLEVBQWMsSUFBZCxFQUFvQmtELGFBQXBCLENBQVI7QUFDRCxXQUpTO0FBS1YyQixVQUFBQSxRQUFRLEVBQUUsa0JBQUMzRyxJQUFELEVBQVU7QUFDbEIsWUFBQSxNQUFJLENBQUM0RyxRQUFMLENBQWM1RyxJQUFkO0FBQ0QsV0FQUztBQVFWd0csVUFBQUEsU0FBUyxFQUFFLG1CQUFDeEcsSUFBRCxFQUFlO0FBQ3hCLGdCQUFJQSxJQUFKLGFBQUlBLElBQUosZUFBSUEsSUFBSSxDQUFFOEIsTUFBVixFQUFrQjtBQUNoQmpCLGNBQUFBLGVBQWUsQ0FBQ2IsSUFBSSxDQUFDOEIsTUFBTixFQUFja0QsYUFBZCxDQUFmO0FBQ0Q7QUFDRixXQVpTO0FBYVZsQixVQUFBQSxjQUFjLG9CQUFPQSxjQUFQO0FBYkosVUFBWjtBQWVEOztBQUNELDBCQUNFLHVEQUNFLDBDQUNNbUMsWUFETixFQUVNRCxRQUZOO0FBR0UsUUFBQSxZQUFZLEVBQUUsS0FBSzNCLFlBQUwsQ0FBa0I4QixJQUFsQixDQUF1QixJQUF2QixDQUhoQjtBQUlFLFFBQUEsUUFBUSxFQUFFLEtBQUszQyxLQUFMLENBQVd4QyxRQUp2QixDQUtFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQWRGLFNBREYsQ0FERjtBQW9CRDs7OztFQWpab0NqQixLQUFLLENBQUMrRyxhOztnQkFBeEIvRixTLGFBQ0ZMLGdCOztTQURFSyxTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFVwbG9hZCwgVXBsb2FkUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgZmlsZSBmcm9tIFwibnNjLWZpbGVcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uL21lc3NhZ2VcIjtcclxuaW1wb3J0IHdpdGhaaExvY2FsZSBmcm9tIFwiLi4vY29tbW9uL3dpdGhaaExvY2FsZVwiO1xyXG5pbXBvcnQgb21pdCBmcm9tIFwib21pdC5qc1wiO1xyXG5pbXBvcnQgeyBnZXRMZXNzIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBGaWxlSWNvbiBmcm9tIFwiLi4vY29tbW9uL0ZpbGVJY29uXCI7XHJcbmltcG9ydCB7XHJcbiAgRGVsZXRlT3V0bGluZWQsXHJcbiAgRG93bmxvYWRPdXRsaW5lZCxcclxuICBFeWVPdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IFBkZlZpZXdlciBmcm9tIFwiLi4vcGRmdml3ZXJcIjtcclxuaW1wb3J0IE5zY1VwbG9hZERyYWdnZXIgZnJvbSBcIi4vRHJhZ2dlclwiO1xyXG5jb25zdCB7IHVwbG9hZCwgZG93bmxvYWQsIHByZXZpZXdEb2N1bWVudCwgcHJldmlld0ltYWdlIH0gPSBmaWxlO1xyXG5cclxuaW50ZXJmYWNlIElVcGxvYWRQcm9wcyBleHRlbmRzIFVwbG9hZFByb3BzIHtcclxuICBzbGljZVNpemU/OiBudW1iZXI7XHJcbiAgbWF4U2l6ZT86IG51bWJlciB8IGJvb2xlYW47XHJcbiAgb25Qcm9jZXNzPzogKHByb2Nlc3MpID0+IHZvaWQ7XHJcbiAgb25Db21wbGV0ZT86ICh7IGZpbGUsIGZpbGVJZCwgc3RhdHVzIH0pID0+IHZvaWQ7XHJcbiAgYWxsb3dGaWxlU3VmZml4PzogQXJyYXk8U3RyaW5nPjsgLy/lhYHorrjkuIrkvKDmianlsZXlkI0s5LiN5bimLlxyXG4gIHVzZURlZmF1bHRMaXN0PzogYm9vbGVhbjsgLy/mmK/lkKbkvb/nlKjpu5jorqTnmoRmaWxlTGlzdFxyXG4gIGZpbGVDYXJkPzogYm9vbGVhbjtcclxuICBvbkxpc3RDaGFuZ2U/OiBhbnk7XHJcbiAgY2hlY2tTYW1lRmlsZT86IGJvb2xlYW47XHJcbiAgcmVxdWVzdENvbmZpZz86IGFueTtcclxuICBuZXdWZXJzaW9uPzogYm9vbGVhbjtcclxufVxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOc2NVcGxvYWQgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50PElVcGxvYWRQcm9wcywgYW55PiB7XHJcbiAgc3RhdGljIERyYWdnZXIgPSBOc2NVcGxvYWREcmFnZ2VyO1xyXG4gIHN0YXRlID0geyBmaWxlTGlzdDogW10sIHZpZXdJZDogXCJcIiwgZmlsZUxpc3RTdG9yZTogW10sIGZpbGVOYW1lczogW10gfTtcclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGlmICh0aGlzLnByb3BzLmZpbGVMaXN0KSB7XHJcbiAgICAgIHRoaXMuY29udmVydEZpbGVMaXN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbnZlcnRGaWxlTGlzdChsaXN0PzogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCwgbGlzdFR5cGUgfSA9IHRoaXMucHJvcHM7XHJcblxyXG4gICAgY29uc3QgbmV3RmlsZUxpc3QgPSBbXTtcclxuICAgIGxldCBvbGRMaXN0ID0gbGlzdCA/IGxpc3QgOiBmaWxlTGlzdDtcclxuICAgIG9sZExpc3QubWFwKGFzeW5jIChpdGVtOiBhbnksIGluZGV4KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0ge1xyXG4gICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgc3RhdHVzOiBpdGVtLnN0YXR1cyxcclxuICAgICAgICBuYW1lOiBpdGVtLm5hbWUgfHwgaXRlbS5maWxlTmFtZSxcclxuICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXHJcbiAgICAgICAgc2l6ZTogaXRlbS5zaXplLFxyXG4gICAgICB9IGFzIGFueTtcclxuXHJcbiAgICAgIG5ld0ZpbGVMaXN0LnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBmaWxlTGlzdDogWy4uLm5ld0ZpbGVMaXN0XSxcclxuICAgICAgZmlsZUxpc3RTdG9yZTogWy4uLmZpbGVMaXN0XSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBjb21wb25lbnREaWRVcGRhdGUocHJlUHJvcHMsIHByZVN0YXRlKSB7XHJcbiAgICBpZiAodGhpcy5wcm9wcy5maWxlTGlzdCkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wcy5maWxlTGlzdCkgIT09XHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5zdGF0ZS5maWxlTGlzdFN0b3JlKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmNvbnZlcnRGaWxlTGlzdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldEZpbGVMaXN0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuZmlsZUxpc3Q7XHJcbiAgfVxyXG4gIHNldEZpbGVMaXN0KGZpbGVMaXN0OiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICB0aGlzLmNvbnZlcnRGaWxlTGlzdChmaWxlTGlzdCk7XHJcbiAgfVxyXG4gIGFzeW5jIGJlZm9yZVVwbG9hZChmaWxlLCBvZmlsZUxpc3QpIHtcclxuICAgIGxldCB7XHJcbiAgICAgIG1heFNpemUgPSAxMDAsXHJcbiAgICAgIGFsbG93RmlsZVN1ZmZpeCxcclxuICAgICAgY2hlY2tTYW1lRmlsZSA9IHRydWUsXHJcbiAgICAgIG1heENvdW50LFxyXG4gICAgICBzaG93VXBsb2FkTGlzdCxcclxuICAgICAgZmlsZUxpc3Q6IHByb3BzTGlzdCxcclxuICAgICAgb25MaXN0Q2hhbmdlLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgeyBmaWxlTGlzdCwgZmlsZUxpc3RTdG9yZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCBzaXplOiBudW1iZXI7XHJcbiAgICBpZiAoYWxsb3dGaWxlU3VmZml4ICYmICF0aGlzLmNoZWNrRmlsZVR5cGUoZmlsZSkpIHtcclxuICAgICAgbWVzc2FnZS5lcnJvcihcclxuICAgICAgICBgJHtmaWxlLm5hbWV95paH5Lu257G75Z6L5LiN5YWB6K645LiK5Lyg77yM6K+35LiK5Lyg5ZCO57yA5Li6JHthbGxvd0ZpbGVTdWZmaXh955qE57G75Z6L5paH5Lu277yBYFxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAobWF4U2l6ZSAhPT0gZmFsc2UpIHtcclxuICAgICAgaWYgKG1heFNpemUgPT09IHRydWUpIHtcclxuICAgICAgICBtYXhTaXplID0gMTAwO1xyXG4gICAgICB9XHJcbiAgICAgIHNpemUgPSBtYXhTaXplICogMTAyNCAqIDEwMjQ7XHJcbiAgICAgIGlmIChzaXplIDwgZmlsZS5zaXplKSB7XHJcbiAgICAgICAgbWVzc2FnZS5lcnJvcihgJHtmaWxlLm5hbWV95paH5Lu25aSn5bCP6LaF6L+HJHttYXhTaXplfU3vvIzor7fph43mlrDkuIrkvKDvvIFgKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBmaWxlTmFtZXMgPSBbXTtcclxuICAgIGlmIChjaGVja1NhbWVGaWxlKSB7XHJcbiAgICAgIGNvbnN0IGNoZWNrTGlzdCA9IHRoaXMucHJvcHMuZmlsZUxpc3QgPyBmaWxlTGlzdFN0b3JlIDogZmlsZUxpc3Q7XHJcbiAgICAgIGNoZWNrTGlzdC5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBmaWxlTmFtZXMucHVzaChpdGVtLm5hbWUgfHwgaXRlbS5maWxlTmFtZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKGZpbGVOYW1lcy5pbmRleE9mKGZpbGUubmFtZSkgPiAtMSAmJiBzaG93VXBsb2FkTGlzdCAhPT0gZmFsc2UpIHtcclxuICAgICAgICBtZXNzYWdlLmVycm9yKGDmlofku7Yke2ZpbGUubmFtZX3lt7LlnKjkuIrkvKDliJfooajkuK3vvIzor7fph43mlrDpgInmi6nmlofku7bvvIFgKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5wcm9wcy5iZWZvcmVVcGxvYWQpIHtcclxuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5wcm9wcy5iZWZvcmVVcGxvYWQoZmlsZSwgb2ZpbGVMaXN0KTtcclxuICAgICAgaWYgKHJlcyA9PT0gZmFsc2UpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IG5ld0xpc3QgPSBbLi4uZmlsZUxpc3RdO1xyXG4gICAgb2ZpbGVMaXN0Lm1hcChhc3luYyAoaXRlbSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIShcclxuICAgICAgICAgIChhbGxvd0ZpbGVTdWZmaXggJiYgIXRoaXMuY2hlY2tGaWxlVHlwZShpdGVtKSkgfHxcclxuICAgICAgICAgIHNpemUgPCBpdGVtLnNpemUgfHxcclxuICAgICAgICAgIChjaGVja1NhbWVGaWxlICYmIGZpbGVOYW1lcy5pbmRleE9mKGl0ZW0ubmFtZSkgPiAtMSlcclxuICAgICAgICApXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IHRlbXAgPSB7XHJcbiAgICAgICAgICBmaWxlTmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICAgICAgcGVyY2VudDogMCxcclxuICAgICAgICAgIHN0YXR1czogXCJ1cGxvYWRpbmdcIixcclxuICAgICAgICAgIHVpZDogaXRlbS51aWQsXHJcbiAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXHJcbiAgICAgICAgICBzaXplOiBpdGVtLnNpemUsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBuZXdMaXN0LnB1c2godGVtcCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChtYXhDb3VudCAmJiBuZXdMaXN0Lmxlbmd0aCA+IG1heENvdW50KSB7XHJcbiAgICAgIGxldCBsZW5ndGggPSBuZXdMaXN0Lmxlbmd0aCAtIG1heENvdW50O1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbmV3TGlzdC5zcGxpY2UoMCwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgZmlsZUxpc3Q6IG5ld0xpc3QgfSk7XHJcbiAgfVxyXG4gIGNoZWNrRmlsZVR5cGUoZmlsZSkge1xyXG4gICAgY29uc3QgeyBhbGxvd0ZpbGVTdWZmaXggfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBuYW1lcyA9IGZpbGUubmFtZS5zcGxpdChcIi5cIik7XHJcbiAgICBjb25zdCBzdWZmaXggPSBuYW1lc1tuYW1lcy5sZW5ndGggLSAxXTtcclxuICAgIGlmIChhbGxvd0ZpbGVTdWZmaXguaW5kZXhPZihzdWZmaXgpID4gLTEpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIG9uUHJvY2Vzcyh7IHBlcmNlbnQsIGZpbGUgfTogYW55KSB7XHJcbiAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBvbkxpc3RDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBuZXdMaXN0OiBhbnkgPSBbXTtcclxuICAgIGZpbGVMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0ZpbGUgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgaWYgKGZpbGUudWlkID09IGl0ZW0udWlkKSB7XHJcbiAgICAgICAgbmV3RmlsZS5wZXJjZW50ID0gcGVyY2VudDtcclxuICAgICAgfVxyXG4gICAgICBuZXdMaXN0LnB1c2gobmV3RmlsZSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBmaWxlTGlzdDogbmV3TGlzdCxcclxuICAgIH0pO1xyXG4gICAgb25MaXN0Q2hhbmdlICYmIG9uTGlzdENoYW5nZShmaWxlTGlzdCk7XHJcbiAgfVxyXG4gIGFzeW5jIG9uQ29tcGxldGUoZmlsZSkge1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgbmV3VmVyc2lvbiwgcmVxdWVzdENvbmZpZyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcbiAgICBsZXQgcmVxdWVzdElkO1xyXG4gICAgbGV0IGZpbGVJbmRleDtcclxuICAgIGZpbGVMaXN0Lm1hcCgoaXRlbTogYW55LCBpbmRleCkgPT4ge1xyXG4gICAgICBjb25zdCBuZXdGaWxlID0geyAuLi5pdGVtIH07XHJcbiAgICAgIGlmIChmaWxlLmZpbGUudWlkID09IGl0ZW0udWlkKSB7XHJcbiAgICAgICAgbmV3RmlsZS5zdGF0dXMgPSBmaWxlLnN0YXR1cyA9PSBcInN1Y2Nlc3NcIiA/IFwiZG9uZVwiIDogZmlsZS5zdGF0dXM7XHJcbiAgICAgICAgbmV3RmlsZS5maWxlSWQgPSBmaWxlLmZpbGVJZDtcclxuICAgICAgICBpZiAobmV3VmVyc2lvbikge1xyXG4gICAgICAgICAgcmVxdWVzdElkID0gZmlsZS5maWxlSWQ7XHJcbiAgICAgICAgICBmaWxlSW5kZXggPSBpbmRleDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGV0IHVybCA9IGAvanF1aWNrLXJlc291cmNlL29zcy9lbmRwb2ludC9kb3dubG9hZC1maWxlcz9hdHRhY2hJZD0ke1xyXG4gICAgICAgICAgICBmaWxlLmZpbGVJZFxyXG4gICAgICAgICAgfSZfdHBrPSR7d2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidG9rZW5cIil9YDtcclxuICAgICAgICAgIG5ld0ZpbGUudXJsID0gcmVxdWVzdENvbmZpZy5wcmVmaXhcclxuICAgICAgICAgICAgPyByZXF1ZXN0Q29uZmlnLnByZWZpeCArIHVybFxyXG4gICAgICAgICAgICA6IFwiL2FwaVwiICsgdXJsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBuZXdMaXN0LnB1c2gobmV3RmlsZSk7XHJcbiAgICB9KTtcclxuICAgIGlmIChyZXF1ZXN0SWQpIHtcclxuICAgICAgY29uc3QgZmlsZVJlczogYW55ID0gYXdhaXQgcHJldmlld0ltYWdlKHJlcXVlc3RJZCxyZXF1ZXN0Q29uZmlnKTtcclxuICAgICAgbmV3TGlzdFtmaWxlSW5kZXhdLnVybCA9IGZpbGVSZXMuZGF0YTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBmaWxlTGlzdDogbmV3TGlzdCxcclxuICAgIH0pO1xyXG4gICAgY29uc3QgeyBvbkxpc3RDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKG5ld0xpc3QpO1xyXG4gIH1cclxuICBjdXN0b21SZXF1ZXN0ID0gYXN5bmMgKG9wdGlvbnMpID0+IHtcclxuICAgIGNvbnN0IGZpbGUgPSBvcHRpb25zLmZpbGU7XHJcbiAgICBjb25zdCB7IG9uQ29tcGxldGUsIG9uUHJvY2Vzcywgc2xpY2VTaXplIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qgb25Qcm9ncmVzcyA9ICh0b3RhbFByb2dyZXNzOiBhbnkpID0+IHtcclxuICAgICAgb3B0aW9ucy5vblByb2dyZXNzKHsgcGVyY2VudDogdG90YWxQcm9ncmVzcyB9LCBmaWxlKTtcclxuICAgICAgdGhpcy5vblByb2Nlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzLCBmaWxlOiBmaWxlIH0pO1xyXG4gICAgICBvblByb2Nlc3MgJiYgb25Qcm9jZXNzKHsgcGVyY2VudDogdG90YWxQcm9ncmVzcywgZmlsZTogZmlsZSB9KTtcclxuICAgIH07XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXM6IGFueSA9IGF3YWl0IHVwbG9hZCh7XHJcbiAgICAgICAgZmlsZTogZmlsZSxcclxuICAgICAgICBvblByb2dyZXNzOiBvblByb2dyZXNzLFxyXG4gICAgICAgIHBhcnRTaXplOiBzbGljZVNpemUsXHJcbiAgICAgIH0pO1xyXG4gICAgICBsZXQgZmlsZUlkID0gbnVsbDtcclxuICAgICAgaWYgKHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgIGZpbGVJZCA9IHJlcy5kYXRhLmF0dGFjaElkO1xyXG4gICAgICAgIG9wdGlvbnMub25TdWNjZXNzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgb3B0aW9ucy5vbkVycm9yKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5vbkNvbXBsZXRlKHtcclxuICAgICAgICBmaWxlOiBvcHRpb25zLmZpbGUsXHJcbiAgICAgICAgZmlsZUlkOiBmaWxlSWQsXHJcbiAgICAgICAgc3RhdHVzOiByZXMuY29kZSA9PSAyMDAgPyBcInN1Y2Nlc3NcIiA6IFwiZXJyb3JcIixcclxuICAgICAgfSk7XHJcbiAgICAgIG9uQ29tcGxldGUgJiZcclxuICAgICAgICBvbkNvbXBsZXRlKHtcclxuICAgICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICAgIGZpbGVJZDogZmlsZUlkLFxyXG4gICAgICAgICAgc3RhdHVzOiByZXMuY29kZSA9PSAyMDAgPyBcInN1Y2Nlc3NcIiA6IFwiZXJyb3JcIixcclxuICAgICAgICB9KTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgdGhpcy5vbkNvbXBsZXRlKHtcclxuICAgICAgICBmaWxlOiBvcHRpb25zLmZpbGUsXHJcbiAgICAgICAgZmlsZUlkOiBcIlwiLFxyXG4gICAgICAgIHN0YXR1czogXCJlcnJvclwiLFxyXG4gICAgICB9KTtcclxuICAgICAgb25Db21wbGV0ZSAmJlxyXG4gICAgICAgIG9uQ29tcGxldGUoeyBmaWxlOiBvcHRpb25zLmZpbGUsIGZpbGVJZDogXCJcIiwgc3RhdHVzOiBcImVycm9yXCIgfSk7XHJcbiAgICAgIG9wdGlvbnMub25FcnJvcigpO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgb25EZWxldGUoZmlsZSkge1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgb25MaXN0Q2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcbiAgICBmaWxlTGlzdC5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAvL+mAmui/h+aWh+S7tuWQjeWIpOaWre+8jOS4iuS8oOaYr+aWh+S7tuWQjeaYr+WUr+S4gOeahFxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgaXRlbS5uYW1lICE9PSBmaWxlLm5hbWUgfHxcclxuICAgICAgICBpdGVtLmZpbGVJZCAhPT0gZmlsZS5maWxlSWQgfHxcclxuICAgICAgICBpdGVtLnVpZCAhPT0gZmlsZS51aWRcclxuICAgICAgKSB7XHJcbiAgICAgICAgbmV3TGlzdC5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBmaWxlTGlzdDogbmV3TGlzdCxcclxuICAgIH0pO1xyXG4gICAgb25MaXN0Q2hhbmdlICYmIG9uTGlzdENoYW5nZShuZXdMaXN0KTtcclxuICB9XHJcbiAgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XHJcbiAgICBsZXQge1xyXG4gICAgICBmaWxlTGlzdCxcclxuICAgICAgZmlsZUNhcmQsXHJcbiAgICAgIHNob3dVcGxvYWRMaXN0ID0ge1xyXG4gICAgICAgIHNob3dEb3dubG9hZEljb246IHRydWUsXHJcbiAgICAgICAgc2hvd1ByZXZpZXdJY29uOiBmYWxzZSxcclxuICAgICAgICBzaG93UmVtb3ZlSWNvbjogdHJ1ZSxcclxuICAgICAgICBkb3dubG9hZEljb246IG51bGwsXHJcbiAgICAgICAgcmVtb3ZlSWNvbjogbnVsbCxcclxuICAgICAgICBwcmV2aWV3SWNvbjogbnVsbCxcclxuICAgICAgfSBhcyBhbnksXHJcbiAgICAgIHJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3cHJvcHMgPSBvbWl0KHRoaXMucHJvcHMsIFtcclxuICAgICAgXCJzbGljZVNpemVcIixcclxuICAgICAgXCJtYXhTaXplXCIsXHJcbiAgICAgIFwib25Db21wbGV0ZVwiLFxyXG4gICAgICBcIm9uUHJvY2Vzc1wiLFxyXG4gICAgICBcImFsbG93RmlsZVN1ZmZpeFwiLFxyXG4gICAgICBcInVzZURlZmF1bHRMaXN0XCIsXHJcbiAgICAgIFwiZmlsZUNhcmRcIixcclxuICAgICAgXCJvbkxpc3RDaGFuZ2VcIixcclxuICAgICAgXCJuZXdWZXJzaW9uXCIsXHJcbiAgICAgIFwicmVxdWVzdENvbmZpZ1wiLFxyXG4gICAgXSk7XHJcbiAgICBsZXQgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgICBjdXN0b21SZXF1ZXN0OiB0aGlzLmN1c3RvbVJlcXVlc3QuYmluZCh0aGlzKSxcclxuICAgICAgbXVsdGlwbGU6IHRydWUsXHJcbiAgICB9IGFzIElVcGxvYWRQcm9wcztcclxuICAgIGlmIChmaWxlQ2FyZCkge1xyXG4gICAgICBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICAgICAgLi4uZGVmYXVsdFByb3BzLFxyXG4gICAgICAgIGl0ZW1SZW5kZXI6IChvcmlnaW5Ob2RlLCBmaWxlOiBhbnksIGN1cnJGaWxlTGlzdCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgbmFtZSA9IGZpbGUubmFtZSB8fCBmaWxlLmZpbGVOYW1lO1xyXG4gICAgICAgICAgY29uc3QgbmFtZXMgPSBuYW1lPy5zcGxpdChcIi5cIik7XHJcbiAgICAgICAgICBjb25zdCBzdWZmaXggPSBuYW1lcyA/IG5hbWVzW25hbWVzLmxlbmd0aCAtIDFdIDogXCJcIjtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJmaWxlLWl0ZW1cIil9PlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcImNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcImNvbnRlbnRfZXJyb3JcIildOiBmaWxlLnN0YXR1cyA9PSBcImVycm9yXCIsXHJcbiAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibWFyay1waWN0dXJlXCIpfT5cclxuICAgICAgICAgICAgICAgICAgPEZpbGVJY29uIHN1ZmZpeD17c3VmZml4fSBmaWxlSWQ9e2ZpbGUuZmlsZUlkfSAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibmFtZVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIHtmaWxlLm5hbWUgfHwgZmlsZS5maWxlTmFtZX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImljb25cIil9PlxyXG4gICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd1ByZXZpZXdJY29uICYmIGZpbGUuc3RhdHVzID09IFwiZG9uZVwiICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uUHJldmlldykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25QcmV2aWV3KGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpZXdEb2N1bWVudChmaWxlLmZpbGVJZCwgcmVxdWVzdENvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvbiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RXllT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5zaG93RG93bmxvYWRJY29uICYmIGZpbGUuc3RhdHVzID09IFwiZG9uZVwiICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uRG93bmxvYWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uRG93bmxvYWQoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQoZmlsZS5maWxlSWQsIHRydWUsIHJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb24gPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPERvd25sb2FkT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5zaG93UmVtb3ZlSWNvbiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJlbW92ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25SZW1vdmUoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkRlbGV0ZShmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxEZWxldGVPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIHtmaWxlLnN0YXR1cyA9PSBcInVwbG9hZGluZ1wiICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJwcm9jZXNzXCIpfT5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwicGVyY2VudFwiKX1cclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogZmlsZS5wZXJjZW50ICsgXCIlXCIgfX1cclxuICAgICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICAgICAgLi4uZGVmYXVsdFByb3BzLFxyXG4gICAgICAgIG9uRG93bmxvYWQ6IChmaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGRvd25sb2FkKGZpbGUuZmlsZUlkLCB0cnVlLCByZXF1ZXN0Q29uZmlnKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uUmVtb3ZlOiAoZmlsZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vbkRlbGV0ZShmaWxlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uUHJldmlldzogKGZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZpbGU/LmZpbGVJZCkge1xyXG4gICAgICAgICAgICBwcmV2aWV3RG9jdW1lbnQoZmlsZS5maWxlSWQsIHJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2hvd1VwbG9hZExpc3Q6IHsgLi4uc2hvd1VwbG9hZExpc3QgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDw+XHJcbiAgICAgICAgPFVwbG9hZFxyXG4gICAgICAgICAgey4uLmRlZmF1bHRQcm9wc31cclxuICAgICAgICAgIHsuLi5uZXdwcm9wc31cclxuICAgICAgICAgIGJlZm9yZVVwbG9hZD17dGhpcy5iZWZvcmVVcGxvYWQuYmluZCh0aGlzKX1cclxuICAgICAgICAgIGZpbGVMaXN0PXt0aGlzLnN0YXRlLmZpbGVMaXN0fVxyXG4gICAgICAgICAgLy8gb25DaGFuZ2U9eyh7IGZpbGUsIGZpbGVMaXN0LCBldmVudCB9KSA9PiB7XHJcbiAgICAgICAgICAvLyAgIGNvbnNvbGUubG9nKFwib25DaGFuZ2VmaWxlXCIsIGZpbGUpO1xyXG4gICAgICAgICAgLy8gICBjb25zb2xlLmxvZyhcIm9uQ2hhbmdlZmlsZUxpc3RcIiwgZmlsZUxpc3QpO1xyXG4gICAgICAgICAgLy8gICBjb25zdCB7IG9uQ2hhbmdlLCBvbkxpc3RDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgICAvLyAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgLy8gICAgIGZpbGVMaXN0OiBmaWxlTGlzdCxcclxuICAgICAgICAgIC8vICAgfSk7XHJcbiAgICAgICAgICAvLyAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UoZmlsZUxpc3QpO1xyXG4gICAgICAgICAgLy8gICBvbkNoYW5nZSAmJiBvbkNoYW5nZSh7IGZpbGUsIGZpbGVMaXN0LCBldmVudCB9KTtcclxuICAgICAgICAgIC8vIH19XHJcbiAgICAgICAgLz5cclxuICAgICAgPC8+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
684
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdXBsb2FkL2luZGV4LnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsImZpbGUiLCJtZXNzYWdlIiwib21pdCIsImdldExlc3MiLCJzdHlsZXMiLCJjbHMiLCJGaWxlSWNvbiIsIkRlbGV0ZU91dGxpbmVkIiwiRG93bmxvYWRPdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiTnNjVXBsb2FkRHJhZ2dlciIsInVwbG9hZCIsImRvd25sb2FkIiwicHJldmlld0RvY3VtZW50IiwicHJldmlld0ltYWdlIiwiTnNjVXBsb2FkIiwiZmlsZUxpc3QiLCJ2aWV3SWQiLCJmaWxlTGlzdFN0b3JlIiwiZmlsZU5hbWVzIiwib3B0aW9ucyIsInByb3BzIiwib25Db21wbGV0ZSIsIm9uUHJvY2VzcyIsInNsaWNlU2l6ZSIsIm9uUHJvZ3Jlc3MiLCJ0b3RhbFByb2dyZXNzIiwicGVyY2VudCIsInBhcnRTaXplIiwicmVxdWVzdENvbmZpZyIsInJlcyIsInVwbG9hZEluZ1NpemUiLCJmaWxlSWQiLCJJbWdSZXMiLCJjb2RlIiwiZGF0YSIsImF0dGFjaElkIiwib25TdWNjZXNzIiwibGlzdFR5cGUiLCJuZXdWZXJzaW9uIiwib25FcnJvciIsInVwbG9hZEluZ0xpc3QiLCJwdXNoIiwic3RhdHVzIiwidXJsIiwidXBsb2FkU2l6ZSIsImNvbnZlcnRGaWxlTGlzdCIsImxpc3QiLCJuZXdGaWxlTGlzdCIsIm9sZExpc3QiLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJ0ZW1wIiwibmFtZSIsImZpbGVOYW1lIiwidHlwZSIsInNpemUiLCJzZXRTdGF0ZSIsInByZVByb3BzIiwicHJlU3RhdGUiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhdGUiLCJjb25zb2xlIiwibG9nIiwicGFyc2UiLCJvZmlsZUxpc3QiLCJtYXhTaXplIiwiYWxsb3dGaWxlU3VmZml4IiwiY2hlY2tTYW1lRmlsZSIsIm1heENvdW50Iiwic2hvd1VwbG9hZExpc3QiLCJwcm9wc0xpc3QiLCJvbkxpc3RDaGFuZ2UiLCJjaGVja0ZpbGVUeXBlIiwiZXJyb3IiLCJjaGVja0xpc3QiLCJpbmRleE9mIiwiYmVmb3JlVXBsb2FkIiwibmV3TGlzdCIsInVpZCIsImxlbmd0aCIsImkiLCJzcGxpY2UiLCJuYW1lcyIsInNwbGl0Iiwic3VmZml4IiwibmV3RmlsZSIsImZpbGVzIiwid2luZG93IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsInByZWZpeCIsImZpbGVDYXJkIiwic2hvd0Rvd25sb2FkSWNvbiIsInNob3dQcmV2aWV3SWNvbiIsInNob3dSZW1vdmVJY29uIiwiZG93bmxvYWRJY29uIiwicmVtb3ZlSWNvbiIsInByZXZpZXdJY29uIiwibmV3cHJvcHMiLCJkZWZhdWx0UHJvcHMiLCJjdXN0b21SZXF1ZXN0IiwiYmluZCIsIm11bHRpcGxlIiwiaXRlbVJlbmRlciIsIm9yaWdpbk5vZGUiLCJjdXJyRmlsZUxpc3QiLCJvblByZXZpZXciLCJjdXJzb3IiLCJvbkRvd25sb2FkIiwib25SZW1vdmUiLCJvbkRlbGV0ZSIsIndpZHRoIiwiUHVyZUNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBS0EsS0FBWixNQUF1QixPQUF2QjtBQUVBLE9BQU9DLElBQVAsTUFBaUIsVUFBakI7QUFDQSxPQUFPQyxPQUFQLE1BQW9CLFlBQXBCO0FBRUEsT0FBT0MsSUFBUCxNQUFpQixTQUFqQjtBQUNBLFNBQVNDLE9BQVQsUUFBd0IsYUFBeEI7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLGNBQW5CO0FBQ0EsT0FBT0MsR0FBUCxNQUFnQixZQUFoQjtBQUNBLE9BQU9DLFFBQVAsTUFBcUIsb0JBQXJCO0FBQ0EsU0FDRUMsY0FERixFQUVFQyxnQkFGRixFQUdFQyxXQUhGLFFBSU8sbUJBSlA7QUFNQSxPQUFPQyxnQkFBUCxNQUE2QixXQUE3QjtBQUVBLElBQVFDLE1BQVIsR0FBNERYLElBQTVELENBQVFXLE1B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QUFTLEVBQUUsbUJBQUM3RyxJQUFELEVBQWU7QUFDeEIsZ0JBQUlBLElBQUosYUFBSUEsSUFBSixlQUFJQSxJQUFJLENBQUVnQyxNQUFWLEVBQWtCO0FBQ2hCbkIsY0FBQUEsZUFBZSxDQUFDYixJQUFJLENBQUNnQyxNQUFOLEVBQWNILGFBQWQsQ0FBZjtBQUNEO0FBQ0YsV0FaUztBQWFWMkMsVUFBQUEsY0FBYyxvQkFBT0EsY0FBUDtBQWJKLFVBQVo7QUFlRDs7QUFDRCwwQkFDRSx1REFDRSwwQ0FDTThCLFlBRE4sRUFFTUQsUUFGTjtBQUdFLFFBQUEsWUFBWSxFQUFFLEtBQUt0QixZQUFMLENBQWtCeUIsSUFBbEIsQ0FBdUIsSUFBdkIsQ0FIaEI7QUFJRSxRQUFBLFFBQVEsRUFBRSxLQUFLekMsS0FBTCxDQUFXL0M7QUFKdkIsU0FERixDQURGO0FBVUQ7Ozs7RUE3Wm9DakIsS0FBSyxDQUFDb0gsYTs7Z0JBQXhCcEcsUyxhQUNGTCxnQjs7U0FERUssUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBVcGxvYWQsIFVwbG9hZFByb3BzIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IGZpbGUgZnJvbSBcIm5zYy1maWxlXCI7XHJcbmltcG9ydCBtZXNzYWdlIGZyb20gXCIuLi9tZXNzYWdlXCI7XHJcbmltcG9ydCB3aXRoWmhMb2NhbGUgZnJvbSBcIi4uL2NvbW1vbi93aXRoWmhMb2NhbGVcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lmxlc3NcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgRmlsZUljb24gZnJvbSBcIi4uL2NvbW1vbi9GaWxlSWNvblwiO1xyXG5pbXBvcnQge1xyXG4gIERlbGV0ZU91dGxpbmVkLFxyXG4gIERvd25sb2FkT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCBQZGZWaWV3ZXIgZnJvbSBcIi4uL3BkZnZpd2VyXCI7XHJcbmltcG9ydCBOc2NVcGxvYWREcmFnZ2VyIGZyb20gXCIuL0RyYWdnZXJcIjtcclxuaW1wb3J0IHsgcGFyc2UgfSBmcm9tIFwiQGJhYmVsL2NvcmVcIjtcclxuY29uc3QgeyB1cGxvYWQsIGRvd25sb2FkLCBwcmV2aWV3RG9jdW1lbnQsIHByZXZpZXdJbWFnZSB9ID0gZmlsZTtcclxuXHJcbmludGVyZmFjZSBJVXBsb2FkUHJvcHMgZXh0ZW5kcyBVcGxvYWRQcm9wcyB7XHJcbiAgc2xpY2VTaXplPzogbnVtYmVyO1xyXG4gIG1heFNpemU/OiBudW1iZXIgfCBib29sZWFuO1xyXG4gIG9uUHJvY2Vzcz86IChwcm9jZXNzKSA9PiB2b2lkO1xyXG4gIG9uQ29tcGxldGU/OiAoeyBmaWxlLCBmaWxlSWQsIHN0YXR1cyB9KSA9PiB2b2lkO1xyXG4gIGFsbG93RmlsZVN1ZmZpeD86IEFycmF5PFN0cmluZz47IC8v5YWB6K645LiK5Lyg5omp5bGV5ZCNLOS4jeW4pi5cclxuICB1c2VEZWZhdWx0TGlzdD86IGJvb2xlYW47IC8v5piv5ZCm5L2/55So6buY6K6k55qEZmlsZUxpc3RcclxuICBmaWxlQ2FyZD86IGJvb2xlYW47XHJcbiAgb25MaXN0Q2hhbmdlPzogYW55O1xyXG4gIGNoZWNrU2FtZUZpbGU/OiBib29sZWFuO1xyXG4gIHJlcXVlc3RDb25maWc/OiBhbnk7XHJcbiAgbmV3VmVyc2lvbj86IGJvb2xlYW47XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTnNjVXBsb2FkIGV4dGVuZHMgUmVhY3QuUHVyZUNvbXBvbmVudDxJVXBsb2FkUHJvcHMsIGFueT4ge1xyXG4gIHN0YXRpYyBEcmFnZ2VyID0gTnNjVXBsb2FkRHJhZ2dlcjtcclxuICBzdGF0ZSA9IHtcclxuICAgIGZpbGVMaXN0OiBbXSxcclxuICAgIHZpZXdJZDogXCJcIixcclxuICAgIGZpbGVMaXN0U3RvcmU6IFtdLFxyXG4gICAgZmlsZU5hbWVzOiBbXSxcclxuICB9O1xyXG4gIHVwbG9hZEluZ1NpemUgPSAwO1xyXG4gIHVwbG9hZFNpemUgPSAwO1xyXG4gIHVwbG9hZEluZ0xpc3QgPSBbXTtcclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGlmICh0aGlzLnByb3BzLmZpbGVMaXN0KSB7XHJcbiAgICAgIHRoaXMuY29udmVydEZpbGVMaXN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbnZlcnRGaWxlTGlzdChsaXN0PzogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCwgbGlzdFR5cGUgfSA9IHRoaXMucHJvcHM7XHJcblxyXG4gICAgY29uc3QgbmV3RmlsZUxpc3QgPSBbXTtcclxuICAgIGxldCBvbGRMaXN0ID0gbGlzdCA/IGxpc3QgOiBmaWxlTGlzdDtcclxuICAgIG9sZExpc3QubWFwKGFzeW5jIChpdGVtOiBhbnksIGluZGV4KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0ge1xyXG4gICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgc3RhdHVzOiBpdGVtLnN0YXR1cyxcclxuICAgICAgICBuYW1lOiBpdGVtLm5hbWUgfHwgaXRlbS5maWxlTmFtZSxcclxuICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXHJcbiAgICAgICAgc2l6ZTogaXRlbS5zaXplLFxyXG4gICAgICAgIHVybDogaXRlbS51cmwsXHJcbiAgICAgIH0gYXMgYW55O1xyXG4gICAgICBuZXdGaWxlTGlzdC5wdXNoKHRlbXApO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZmlsZUxpc3Q6IFsuLi5uZXdGaWxlTGlzdF0sXHJcbiAgICAgIGZpbGVMaXN0U3RvcmU6IFsuLi5maWxlTGlzdF0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZVByb3BzLCBwcmVTdGF0ZSkge1xyXG4gICAgaWYgKHRoaXMucHJvcHMuZmlsZUxpc3QpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMucHJvcHMuZmlsZUxpc3QpICE9PVxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuc3RhdGUuZmlsZUxpc3RTdG9yZSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgICBcImNvbXBvbmVudERpZFVwZGF0ZVwiLFxyXG4gICAgICAgICAgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BzLmZpbGVMaXN0KSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuY29udmVydEZpbGVMaXN0KHRoaXMucHJvcHMuZmlsZUxpc3QpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldEZpbGVMaXN0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuZmlsZUxpc3Q7XHJcbiAgfVxyXG4gIHNldEZpbGVMaXN0KGZpbGVMaXN0OiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICB0aGlzLmNvbnZlcnRGaWxlTGlzdChmaWxlTGlzdCk7XHJcbiAgfVxyXG4gIGFzeW5jIGJlZm9yZVVwbG9hZChmaWxlLCBvZmlsZUxpc3QpIHtcclxuICAgIGxldCB7XHJcbiAgICAgIG1heFNpemUgPSAxMDAsXHJcbiAgICAgIGFsbG93RmlsZVN1ZmZpeCxcclxuICAgICAgY2hlY2tTYW1lRmlsZSA9IHRydWUsXHJcbiAgICAgIG1heENvdW50LFxyXG4gICAgICBzaG93VXBsb2FkTGlzdCxcclxuICAgICAgZmlsZUxpc3Q6IHByb3BzTGlzdCxcclxuICAgICAgb25MaXN0Q2hhbmdlLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgeyBmaWxlTGlzdCwgZmlsZUxpc3RTdG9yZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCBzaXplOiBudW1iZXI7XHJcbiAgICBpZiAoYWxsb3dGaWxlU3VmZml4ICYmICF0aGlzLmNoZWNrRmlsZVR5cGUoZmlsZSkpIHtcclxuICAgICAgbWVzc2FnZS5lcnJvcihcclxuICAgICAgICBgJHtmaWxlLm5hbWV95paH5Lu257G75Z6L5LiN5YWB6K645LiK5Lyg77yM6K+35LiK5Lyg5ZCO57yA5Li6JHthbGxvd0ZpbGVTdWZmaXh955qE57G75Z6L5paH5Lu277yBYFxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAobWF4U2l6ZSAhPT0gZmFsc2UpIHtcclxuICAgICAgaWYgKG1heFNpemUgPT09IHRydWUpIHtcclxuICAgICAgICBtYXhTaXplID0gMTAwO1xyXG4gICAgICB9XHJcbiAgICAgIHNpemUgPSBtYXhTaXplICogMTAyNCAqIDEwMjQ7XHJcbiAgICAgIGlmIChzaXplIDwgZmlsZS5zaXplKSB7XHJcbiAgICAgICAgbWVzc2FnZS5lcnJvcihgJHtmaWxlLm5hbWV95paH5Lu25aSn5bCP6LaF6L+HJHttYXhTaXplfU3vvIzor7fph43mlrDkuIrkvKDvvIFgKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBmaWxlTmFtZXMgPSBbXTtcclxuICAgIGlmIChjaGVja1NhbWVGaWxlKSB7XHJcbiAgICAgIGNvbnN0IGNoZWNrTGlzdCA9IHRoaXMucHJvcHMuZmlsZUxpc3QgPyBmaWxlTGlzdFN0b3JlIDogZmlsZUxpc3Q7XHJcbiAgICAgIGNoZWNrTGlzdC5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBmaWxlTmFtZXMucHVzaChpdGVtLm5hbWUgfHwgaXRlbS5maWxlTmFtZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKGZpbGVOYW1lcy5pbmRleE9mKGZpbGUubmFtZSkgPiAtMSAmJiBzaG93VXBsb2FkTGlzdCAhPT0gZmFsc2UpIHtcclxuICAgICAgICBtZXNzYWdlLmVycm9yKGDmlofku7Yke2ZpbGUubmFtZX3lt7LlnKjkuIrkvKDliJfooajkuK3vvIzor7fph43mlrDpgInmi6nmlofku7bvvIFgKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5wcm9wcy5iZWZvcmVVcGxvYWQpIHtcclxuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5wcm9wcy5iZWZvcmVVcGxvYWQoZmlsZSwgb2ZpbGVMaXN0KTtcclxuICAgICAgaWYgKHJlcyA9PT0gZmFsc2UpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IG5ld0xpc3QgPSBbLi4uZmlsZUxpc3RdO1xyXG4gICAgb2ZpbGVMaXN0Lm1hcChhc3luYyAoaXRlbSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIShcclxuICAgICAgICAgIChhbGxvd0ZpbGVTdWZmaXggJiYgIXRoaXMuY2hlY2tGaWxlVHlwZShpdGVtKSkgfHxcclxuICAgICAgICAgIHNpemUgPCBpdGVtLnNpemUgfHxcclxuICAgICAgICAgIChjaGVja1NhbWVGaWxlICYmIGZpbGVOYW1lcy5pbmRleE9mKGl0ZW0ubmFtZSkgPiAtMSlcclxuICAgICAgICApXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IHRlbXAgPSB7XHJcbiAgICAgICAgICBmaWxlTmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICAgICAgcGVyY2VudDogMCxcclxuICAgICAgICAgIHN0YXR1czogXCJ1cGxvYWRpbmdcIixcclxuICAgICAgICAgIHVpZDogaXRlbS51aWQsXHJcbiAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXHJcbiAgICAgICAgICBzaXplOiBpdGVtLnNpemUsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBuZXdMaXN0LnB1c2godGVtcCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChtYXhDb3VudCAmJiBuZXdMaXN0Lmxlbmd0aCA+IG1heENvdW50KSB7XHJcbiAgICAgIGxldCBsZW5ndGggPSBuZXdMaXN0Lmxlbmd0aCAtIG1heENvdW50O1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbmV3TGlzdC5zcGxpY2UoMCwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgZmlsZUxpc3Q6IG5ld0xpc3QgfSk7XHJcbiAgICB0aGlzLnVwbG9hZFNpemUgPSBvZmlsZUxpc3QubGVuZ3RoO1xyXG4gIH1cclxuICBjaGVja0ZpbGVUeXBlKGZpbGUpIHtcclxuICAgIGNvbnN0IHsgYWxsb3dGaWxlU3VmZml4IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmFtZXMgPSBmaWxlLm5hbWUuc3BsaXQoXCIuXCIpO1xyXG4gICAgY29uc3Qgc3VmZml4ID0gbmFtZXNbbmFtZXMubGVuZ3RoIC0gMV07XHJcbiAgICBpZiAoYWxsb3dGaWxlU3VmZml4LmluZGV4T2Yoc3VmZml4KSA+IC0xKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBvblByb2Nlc3MoeyBwZXJjZW50LCBmaWxlIH06IGFueSkge1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgb25MaXN0Q2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcbiAgICBmaWxlTGlzdC5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBuZXdGaWxlID0geyAuLi5pdGVtIH07XHJcbiAgICAgIGlmIChmaWxlLnVpZCA9PSBpdGVtLnVpZCkge1xyXG4gICAgICAgIG5ld0ZpbGUucGVyY2VudCA9IHBlcmNlbnQ7XHJcbiAgICAgIH1cclxuICAgICAgbmV3TGlzdC5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZmlsZUxpc3Q6IG5ld0xpc3QsXHJcbiAgICB9KTtcclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UoZmlsZUxpc3QpO1xyXG4gIH1cclxuICBhc3luYyBvbkNvbXBsZXRlKGZpbGVzKSB7XHJcbiAgICB0aGlzLnVwbG9hZEluZ1NpemUgPSAwO1xyXG4gICAgdGhpcy51cGxvYWRTaXplID0gMDtcclxuICAgIHRoaXMudXBsb2FkSW5nTGlzdCA9IFtdO1xyXG4gICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgbmV3VmVyc2lvbiwgcmVxdWVzdENvbmZpZyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcblxyXG4gICAgZmlsZUxpc3QubWFwKGFzeW5jIChpdGVtOiBhbnksIGluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0ZpbGUgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgZmlsZXMubWFwKGFzeW5jIChmaWxlKSA9PiB7XHJcbiAgICAgICAgaWYgKGZpbGUuZmlsZS51aWQgPT0gaXRlbS51aWQpIHtcclxuICAgICAgICAgIG5ld0ZpbGUuc3RhdHVzID0gZmlsZS5zdGF0dXMgPT0gXCJzdWNjZXNzXCIgPyBcImRvbmVcIiA6IGZpbGUuc3RhdHVzO1xyXG4gICAgICAgICAgbmV3RmlsZS5maWxlSWQgPSBmaWxlLmZpbGVJZDtcclxuICAgICAgICAgIG5ld0ZpbGUudXJsID0gZmlsZS51cmw7XHJcbiAgICAgICAgICBpZiAoIW5ld1ZlcnNpb24pIHtcclxuICAgICAgICAgICAgbGV0IHVybCA9IGAvanF1aWNrLXJlc291cmNlL29zcy9lbmRwb2ludC9kb3dubG9hZC1maWxlcz9hdHRhY2hJZD0ke1xyXG4gICAgICAgICAgICAgIGZpbGUuZmlsZUlkXHJcbiAgICAgICAgICAgIH0mX3Rwaz0ke3dpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInRva2VuXCIpfWA7XHJcbiAgICAgICAgICAgIG5ld0ZpbGUudXJsID0gcmVxdWVzdENvbmZpZy5wcmVmaXhcclxuICAgICAgICAgICAgICA/IHJlcXVlc3RDb25maWcucHJlZml4ICsgdXJsXHJcbiAgICAgICAgICAgICAgOiBcIi9hcGlcIiArIHVybDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBuZXdMaXN0LnB1c2gobmV3RmlsZSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBmaWxlTGlzdDogWy4uLm5ld0xpc3RdLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgeyBvbkxpc3RDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKG5ld0xpc3QpO1xyXG4gIH1cclxuICBjdXN0b21SZXF1ZXN0ID0gYXN5bmMgKG9wdGlvbnMpID0+IHtcclxuICAgIGNvbnN0IGZpbGUgPSBvcHRpb25zLmZpbGU7XHJcbiAgICBjb25zdCB7IG9uQ29tcGxldGUsIG9uUHJvY2Vzcywgc2xpY2VTaXplIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qgb25Qcm9ncmVzcyA9ICh0b3RhbFByb2dyZXNzOiBhbnkpID0+IHtcclxuICAgICAgb3B0aW9ucy5vblByb2dyZXNzKHsgcGVyY2VudDogdG90YWxQcm9ncmVzcyB9LCBmaWxlKTtcclxuICAgICAgdGhpcy5vblByb2Nlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzLCBmaWxlOiBmaWxlIH0pO1xyXG4gICAgICBvblByb2Nlc3MgJiYgb25Qcm9jZXNzKHsgcGVyY2VudDogdG90YWxQcm9ncmVzcywgZmlsZTogZmlsZSB9KTtcclxuICAgIH07XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXM6IGFueSA9IGF3YWl0IHVwbG9hZChcclxuICAgICAgICB7XHJcbiAgICAgICAgICBmaWxlOiBmaWxlLFxyXG4gICAgICAgICAgb25Qcm9ncmVzczogb25Qcm9ncmVzcyxcclxuICAgICAgICAgIHBhcnRTaXplOiBzbGljZVNpemUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB0aGlzLnByb3BzLnJlcXVlc3RDb25maWdcclxuICAgICAgKTtcclxuICAgICAgdGhpcy51cGxvYWRJbmdTaXplID0gdGhpcy51cGxvYWRJbmdTaXplICsgMTtcclxuICAgICAgbGV0IGZpbGVJZCA9IG51bGw7XHJcbiAgICAgIGxldCBJbWdSZXMgPSBudWxsO1xyXG4gICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgZmlsZUlkID0gcmVzLmRhdGEuYXR0YWNoSWQ7XHJcbiAgICAgICAgb3B0aW9ucy5vblN1Y2Nlc3MoKTtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5saXN0VHlwZSA9PSBcInBpY3R1cmUtY2FyZFwiICYmIHRoaXMucHJvcHMubmV3VmVyc2lvbikge1xyXG4gICAgICAgICAgSW1nUmVzID0gYXdhaXQgcHJldmlld0ltYWdlKGZpbGVJZCwgdGhpcy5wcm9wcy5yZXF1ZXN0Q29uZmlnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgb3B0aW9ucy5vbkVycm9yKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51cGxvYWRJbmdMaXN0LnB1c2goe1xyXG4gICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICBmaWxlSWQ6IGZpbGVJZCxcclxuICAgICAgICBzdGF0dXM6IHJlcy5jb2RlID09IDIwMCA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiLFxyXG4gICAgICAgIHVybDogSW1nUmVzID8gSW1nUmVzLmRhdGEgOiBudWxsLFxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHRoaXMudXBsb2FkU2l6ZSA9PSB0aGlzLnVwbG9hZEluZ1NpemUpIHtcclxuICAgICAgICB0aGlzLm9uQ29tcGxldGUodGhpcy51cGxvYWRJbmdMaXN0KTtcclxuICAgICAgfVxyXG4gICAgICBvbkNvbXBsZXRlICYmXHJcbiAgICAgICAgb25Db21wbGV0ZSh7XHJcbiAgICAgICAgICBmaWxlOiBvcHRpb25zLmZpbGUsXHJcbiAgICAgICAgICBmaWxlSWQ6IGZpbGVJZCxcclxuICAgICAgICAgIHN0YXR1czogcmVzLmNvZGUgPT0gMjAwID8gXCJzdWNjZXNzXCIgOiBcImVycm9yXCIsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGlmICh0aGlzLnVwbG9hZFNpemUgPT0gdGhpcy51cGxvYWRJbmdTaXplKSB7XHJcbiAgICAgICAgdGhpcy5vbkNvbXBsZXRlKHRoaXMudXBsb2FkSW5nTGlzdCk7XHJcbiAgICAgICAgb3B0aW9ucy5vbkVycm9yKCk7XHJcbiAgICAgIH1cclxuICAgICAgb25Db21wbGV0ZSAmJlxyXG4gICAgICAgIG9uQ29tcGxldGUoeyBmaWxlOiBvcHRpb25zLmZpbGUsIGZpbGVJZDogXCJcIiwgc3RhdHVzOiBcImVycm9yXCIgfSk7XHJcbiAgICB9XHJcbiAgfTtcclxuICBvbkRlbGV0ZShmaWxlKSB7XHJcbiAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBvbkxpc3RDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBuZXdMaXN0OiBhbnkgPSBbXTtcclxuICAgIGZpbGVMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIC8v6YCa6L+H5paH5Lu25ZCN5Yik5pat77yM5LiK5Lyg5piv5paH5Lu25ZCN5piv5ZSv5LiA55qEXHJcbiAgICAgIGlmIChcclxuICAgICAgICBpdGVtLm5hbWUgIT09IGZpbGUubmFtZSB8fFxyXG4gICAgICAgIGl0ZW0uZmlsZUlkICE9PSBmaWxlLmZpbGVJZCB8fFxyXG4gICAgICAgIGl0ZW0udWlkICE9PSBmaWxlLnVpZFxyXG4gICAgICApIHtcclxuICAgICAgICBuZXdMaXN0LnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGZpbGVMaXN0OiBuZXdMaXN0LFxyXG4gICAgfSk7XHJcbiAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKG5ld0xpc3QpO1xyXG4gIH1cclxuICByZW5kZXIoKTogUmVhY3QuUmVhY3ROb2RlIHtcclxuICAgIGxldCB7XHJcbiAgICAgIGZpbGVMaXN0LFxyXG4gICAgICBmaWxlQ2FyZCxcclxuICAgICAgc2hvd1VwbG9hZExpc3QgPSB7XHJcbiAgICAgICAgc2hvd0Rvd25sb2FkSWNvbjogdHJ1ZSxcclxuICAgICAgICBzaG93UHJldmlld0ljb246IGZhbHNlLFxyXG4gICAgICAgIHNob3dSZW1vdmVJY29uOiB0cnVlLFxyXG4gICAgICAgIGRvd25sb2FkSWNvbjogbnVsbCxcclxuICAgICAgICByZW1vdmVJY29uOiBudWxsLFxyXG4gICAgICAgIHByZXZpZXdJY29uOiBudWxsLFxyXG4gICAgICB9IGFzIGFueSxcclxuICAgICAgcmVxdWVzdENvbmZpZyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBuZXdwcm9wcyA9IG9taXQodGhpcy5wcm9wcywgW1xyXG4gICAgICBcInNsaWNlU2l6ZVwiLFxyXG4gICAgICBcIm1heFNpemVcIixcclxuICAgICAgXCJvbkNvbXBsZXRlXCIsXHJcbiAgICAgIFwib25Qcm9jZXNzXCIsXHJcbiAgICAgIFwiYWxsb3dGaWxlU3VmZml4XCIsXHJcbiAgICAgIFwidXNlRGVmYXVsdExpc3RcIixcclxuICAgICAgXCJmaWxlQ2FyZFwiLFxyXG4gICAgICBcIm9uTGlzdENoYW5nZVwiLFxyXG4gICAgICBcIm5ld1ZlcnNpb25cIixcclxuICAgICAgXCJyZXF1ZXN0Q29uZmlnXCIsXHJcbiAgICBdKTtcclxuICAgIGxldCBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICAgIGN1c3RvbVJlcXVlc3Q6IHRoaXMuY3VzdG9tUmVxdWVzdC5iaW5kKHRoaXMpLFxyXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgIH0gYXMgSVVwbG9hZFByb3BzO1xyXG4gICAgaWYgKGZpbGVDYXJkKSB7XHJcbiAgICAgIGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgICAuLi5kZWZhdWx0UHJvcHMsXHJcbiAgICAgICAgaXRlbVJlbmRlcjogKG9yaWdpbk5vZGUsIGZpbGU6IGFueSwgY3VyckZpbGVMaXN0KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBuYW1lID0gZmlsZS5uYW1lIHx8IGZpbGUuZmlsZU5hbWU7XHJcbiAgICAgICAgICBjb25zdCBuYW1lcyA9IG5hbWU/LnNwbGl0KFwiLlwiKTtcclxuICAgICAgICAgIGNvbnN0IHN1ZmZpeCA9IG5hbWVzID8gbmFtZXNbbmFtZXMubGVuZ3RoIC0gMV0gOiBcIlwiO1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImZpbGUtaXRlbVwiKX0+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwiY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwiY29udGVudF9lcnJvclwiKV06IGZpbGUuc3RhdHVzID09IFwiZXJyb3JcIixcclxuICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJtYXJrLXBpY3R1cmVcIil9PlxyXG4gICAgICAgICAgICAgICAgICA8RmlsZUljb24gc3VmZml4PXtzdWZmaXh9IGZpbGVJZD17ZmlsZS5maWxlSWR9IC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuYW1lXCIpfT5cclxuICAgICAgICAgICAgICAgICAge2ZpbGUubmFtZSB8fCBmaWxlLmZpbGVOYW1lfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5zaG93UHJldmlld0ljb24gJiYgZmlsZS5zdGF0dXMgPT0gXCJkb25lXCIgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25QcmV2aWV3KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblByZXZpZXcoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlld0RvY3VtZW50KGZpbGUuZmlsZUlkLCByZXF1ZXN0Q29uZmlnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxFeWVPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LnNob3dEb3dubG9hZEljb24gJiYgZmlsZS5zdGF0dXMgPT0gXCJkb25lXCIgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25Eb3dubG9hZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25Eb3dubG9hZChmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkb3dubG9hZChmaWxlLmZpbGVJZCwgdHJ1ZSwgcmVxdWVzdENvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvbiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RG93bmxvYWRPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LnNob3dSZW1vdmVJY29uICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uUmVtb3ZlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblJlbW92ZShmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb24gPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZU91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAge2ZpbGUuc3RhdHVzID09IFwidXBsb2FkaW5nXCIgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInByb2Nlc3NcIil9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJwZXJjZW50XCIpfVxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiBmaWxlLnBlcmNlbnQgKyBcIiVcIiB9fVxyXG4gICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgICAuLi5kZWZhdWx0UHJvcHMsXHJcbiAgICAgICAgb25Eb3dubG9hZDogKGZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgZG93bmxvYWQoZmlsZS5maWxlSWQsIHRydWUsIHJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25SZW1vdmU6IChmaWxlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uRGVsZXRlKGZpbGUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25QcmV2aWV3OiAoZmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmlsZT8uZmlsZUlkKSB7XHJcbiAgICAgICAgICAgIHByZXZpZXdEb2N1bWVudChmaWxlLmZpbGVJZCwgcmVxdWVzdENvbmZpZyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaG93VXBsb2FkTGlzdDogeyAuLi5zaG93VXBsb2FkTGlzdCB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPD5cclxuICAgICAgICA8VXBsb2FkXHJcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxyXG4gICAgICAgICAgey4uLm5ld3Byb3BzfVxyXG4gICAgICAgICAgYmVmb3JlVXBsb2FkPXt0aGlzLmJlZm9yZVVwbG9hZC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgZmlsZUxpc3Q9e3RoaXMuc3RhdGUuZmlsZUxpc3R9XHJcbiAgICAgICAgLz5cclxuICAgICAgPC8+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nsc-react-component",
|
|
3
|
-
"version": "2.10.
|
|
3
|
+
"version": "2.10.32",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"compile": "webpack --config ./webpack.config.js",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"@ant-design/icons": "^4.6.2",
|
|
67
67
|
"@babel/runtime": "^7.13.17",
|
|
68
68
|
"@babel/runtime-corejs3": "^7.13.17",
|
|
69
|
-
"@bj-nsc/functions": "^1.
|
|
69
|
+
"@bj-nsc/functions": "^1.4.4",
|
|
70
70
|
"classnames": "^2.2.6",
|
|
71
71
|
"clone-deep": "^4.0.1",
|
|
72
72
|
"core-js": "3",
|
|
@@ -76,6 +76,7 @@
|
|
|
76
76
|
"html-to-draftjs": "^1.5.0",
|
|
77
77
|
"md5": "^2.3.0",
|
|
78
78
|
"nsc-react-component": "^2.10.15",
|
|
79
|
+
"nsc-request": "^3.1.7",
|
|
79
80
|
"omit.js": "^2.0.2",
|
|
80
81
|
"pdf.js": "^0.1.0",
|
|
81
82
|
"pinyin-match": "^1.2.2",
|