@clickview/lite 0.0.26-rc.4 → 0.0.26
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/dist/css/41.chunk.css +2 -4
- package/dist/css/42.chunk.css +4 -2
- package/dist/css/44.chunk.css +2 -17
- package/dist/css/lite-app.css +1 -1
- package/dist/en.json +1 -1
- package/dist/scripts/{0-004d866401.chunk.js → 0-2405b7970a.chunk.js} +1 -1
- package/dist/scripts/{1-ae308c6da3.chunk.js → 1-8e288b8ae6.chunk.js} +3 -3
- package/dist/scripts/{10-6b4a0e90a4.chunk.js → 10-bf84274b08.chunk.js} +1 -1
- package/dist/scripts/{11-3df31d8083.chunk.js → 11-dad763ff35.chunk.js} +1 -1
- package/dist/scripts/{12-bcb72003bf.chunk.js → 12-80ed0d7582.chunk.js} +1 -1
- package/dist/scripts/{15-b9df9ea752.chunk.js → 15-b003f5ae37.chunk.js} +1 -1
- package/dist/scripts/{16-f7b130c780.chunk.js → 16-090126d17e.chunk.js} +1 -1
- package/dist/scripts/{17-2f9d7c8c58.chunk.js → 17-b3c554e304.chunk.js} +1 -1
- package/dist/scripts/{18-12643afff6.chunk.js → 18-a54ebb23f4.chunk.js} +1 -1
- package/dist/scripts/{19-a06e4b6a2e.chunk.js → 19-39fbb9099a.chunk.js} +1 -1
- package/dist/scripts/{2-0559f34352.chunk.js → 2-ccb1cf2c9e.chunk.js} +1 -1
- package/dist/scripts/{20-f2419e332f.chunk.js → 20-d43060f12a.chunk.js} +1 -1
- package/dist/scripts/{21-666fa8d073.chunk.js → 21-2604302526.chunk.js} +1 -1
- package/dist/scripts/{22-8a217c9095.chunk.js → 22-b7d1802ab4.chunk.js} +1 -1
- package/dist/scripts/{23-db88bc3f56.chunk.js → 23-8b3a17a4cb.chunk.js} +1 -1
- package/dist/scripts/{24-87c1795d91.chunk.js → 24-c089e3c048.chunk.js} +1 -1
- package/dist/scripts/{25-029b9d7d26.chunk.js → 25-62661b0bd4.chunk.js} +1 -1
- package/dist/scripts/{26-9027ea8f4b.chunk.js → 26-f94078ba97.chunk.js} +1 -1
- package/dist/scripts/{27-e38c2c7e4b.chunk.js → 27-9596576ccd.chunk.js} +1 -1
- package/dist/scripts/{28-1e03657ae0.chunk.js → 28-e55f4c3d84.chunk.js} +1 -1
- package/dist/scripts/{29-9dca7dadd3.chunk.js → 29-6033f8a5c7.chunk.js} +1 -1
- package/dist/scripts/{3-16941962e0.chunk.js → 3-addac9f80e.chunk.js} +1 -1
- package/dist/scripts/{30-bba9ec6693.chunk.js → 30-52688805f9.chunk.js} +1 -1
- package/dist/scripts/{31-1e0a801335.chunk.js → 31-0a561a644d.chunk.js} +1 -1
- package/dist/scripts/{32-481e7eb156.chunk.js → 32-b86d323be2.chunk.js} +1 -1
- package/dist/scripts/{33-97b892975f.chunk.js → 33-4ae2e55192.chunk.js} +1 -1
- package/dist/scripts/{34-3a90fac201.chunk.js → 34-66a3331516.chunk.js} +2 -2
- package/dist/scripts/{35-844774859e.chunk.js → 35-e6b8e5fda6.chunk.js} +1 -1
- package/dist/scripts/{36-ae3869a4be.chunk.js → 36-9dab159a2b.chunk.js} +1 -1
- package/dist/scripts/{37-e27013c5bd.chunk.js → 37-e7544c9d41.chunk.js} +1 -1
- package/dist/scripts/{38-122dd6ef10.chunk.js → 38-69984ab44d.chunk.js} +1 -1
- package/dist/scripts/{39-c5b76dcf22.chunk.js → 39-39f7fd5750.chunk.js} +1 -1
- package/dist/scripts/{4-590abf17a5.chunk.js → 4-749f6ba282.chunk.js} +1 -1
- package/dist/scripts/{40-90c0688144.chunk.js → 40-9fe2788063.chunk.js} +1 -1
- package/dist/scripts/41-a38e3fb8ee.chunk.js +1 -0
- package/dist/scripts/{41-267845366e.chunk.js → 42-14fe8cd5cc.chunk.js} +1 -1
- package/dist/scripts/{42-64bec0d220.chunk.js → 43-b199e9f46e.chunk.js} +1 -1
- package/dist/scripts/{43-6c6cea8876.chunk.js → 44-09af9a8506.chunk.js} +1 -1
- package/dist/scripts/{44-f806b7189b.chunk.js → 45-f0eb10f1fc.chunk.js} +1 -1
- package/dist/scripts/{45-43589a9d17.chunk.js → 46-c57bf1dad9.chunk.js} +1 -1
- package/dist/scripts/{46-e4e67bfff3.chunk.js → 47-412f4fc70e.chunk.js} +1 -1
- package/dist/scripts/{47-32910c60aa.chunk.js → 48-fa3c7d9a7a.chunk.js} +1 -1
- package/dist/scripts/{49-49b1e0ddc0.chunk.js → 49-b1aa378420.chunk.js} +1 -1
- package/dist/scripts/{5-19196537d8.chunk.js → 5-5b7e6b3ba6.chunk.js} +1 -1
- package/dist/scripts/{50-e061229358.chunk.js → 50-aa552a208a.chunk.js} +1 -1
- package/dist/scripts/{51-ed76b35af8.chunk.js → 51-23c1030505.chunk.js} +1 -1
- package/dist/scripts/{52-98bd6697fb.chunk.js → 52-d288aa2bc5.chunk.js} +2 -2
- package/dist/scripts/{53-ac56c2d54b.chunk.js → 53-bde623c6e2.chunk.js} +1 -1
- package/dist/scripts/{54-f8143bd64b.chunk.js → 54-898ad3dfa2.chunk.js} +1 -1
- package/dist/scripts/{55-8a3f908ecc.chunk.js → 55-12f2852c3e.chunk.js} +1 -1
- package/dist/scripts/{56-6fb91e4ac3.chunk.js → 56-87a34981cd.chunk.js} +1 -1
- package/dist/scripts/{57-1b9840a44b.chunk.js → 57-a475c19dc1.chunk.js} +1 -1
- package/dist/scripts/{58-02499585d7.chunk.js → 58-dc84669a3a.chunk.js} +1 -1
- package/dist/scripts/{59-c9505384f4.chunk.js → 59-550c7a51af.chunk.js} +1 -1
- package/dist/scripts/{6-2dc102a1d3.chunk.js → 6-46cbbe1f2c.chunk.js} +1 -1
- package/dist/scripts/{60-bf4ddd069e.chunk.js → 60-6ebd193ff3.chunk.js} +1 -1
- package/dist/scripts/{61-e41ea37a1c.chunk.js → 61-c2a6ce50b4.chunk.js} +1 -1
- package/dist/scripts/{62-d40f8ca6d5.chunk.js → 62-107a5375ef.chunk.js} +1 -1
- package/dist/scripts/{63-425dd670f8.chunk.js → 63-fecfb8d1d3.chunk.js} +1 -1
- package/dist/scripts/{64-878effe192.chunk.js → 64-6a6a94d17f.chunk.js} +1 -1
- package/dist/scripts/{65-778672f8b6.chunk.js → 65-4f6a41cbf2.chunk.js} +1 -1
- package/dist/scripts/{66-b4b607ce83.chunk.js → 66-47d1aedadf.chunk.js} +1 -1
- package/dist/scripts/{67-57b223dc2a.chunk.js → 67-08448a35ba.chunk.js} +1 -1
- package/dist/scripts/{68-9a0b0d474d.chunk.js → 68-ba4d561d39.chunk.js} +1 -1
- package/dist/scripts/69-39e0ed1371.chunk.js +1 -0
- package/dist/scripts/{7-d948078165.chunk.js → 7-c530022f63.chunk.js} +1 -1
- package/dist/scripts/{70-9cbc598890.chunk.js → 70-e314033468.chunk.js} +1 -1
- package/dist/scripts/{71-36cb3e95e0.chunk.js → 71-76d8517e16.chunk.js} +1 -1
- package/dist/scripts/{72-d8cf57b73f.chunk.js → 72-2771f761f3.chunk.js} +1 -1
- package/dist/scripts/{73-155922cc32.chunk.js → 73-df14d918e5.chunk.js} +1 -1
- package/dist/scripts/{74-d84337df82.chunk.js → 74-c39668aa27.chunk.js} +1 -1
- package/dist/scripts/{75-d119a1b61f.chunk.js → 75-f057d8fa3b.chunk.js} +1 -1
- package/dist/scripts/{76-b105cb4db7.chunk.js → 76-f4a5c8a3d0.chunk.js} +1 -1
- package/dist/scripts/{77-07216ab858.chunk.js → 77-12a96c05f0.chunk.js} +1 -1
- package/dist/scripts/{78-ce650b00d9.chunk.js → 78-fd6ca64dbe.chunk.js} +1 -1
- package/dist/scripts/{79-b60e3b417c.chunk.js → 79-9c9e71a736.chunk.js} +1 -1
- package/dist/scripts/{8-85461b9074.chunk.js → 8-1202e004a5.chunk.js} +1 -1
- package/dist/scripts/{80-1a28cee4de.chunk.js → 80-6ed295130b.chunk.js} +1 -1
- package/dist/scripts/{9-e976c2b658.chunk.js → 9-6256fcc368.chunk.js} +1 -1
- package/dist/scripts/{bundle-0e2da1167c.min.js → bundle-f63797e268.min.js} +2 -2
- package/dist/scripts/bundles.json +1 -1
- package/package.json +3 -3
- package/dist/css/11.chunk.css +0 -40
- package/dist/css/12.chunk.css +0 -50
- package/dist/css/13.chunk.css +0 -23
- package/dist/css/14.chunk.css +0 -84
- package/dist/css/34.chunk.css +0 -72
- package/dist/css/36.chunk.css +0 -15
- package/dist/css/37.chunk.css +0 -43
- package/dist/css/40.chunk.css +0 -15
- package/dist/css/45.chunk.css +0 -4
- package/dist/css/46.chunk.css +0 -4
- package/dist/css/47.chunk.css +0 -12
- package/dist/css/48.chunk.css +0 -4
- package/dist/css/50.chunk.css +0 -38
- package/dist/css/51.chunk.css +0 -24
- package/dist/css/52.chunk.css +0 -15
- package/dist/css/56.chunk.css +0 -12
- package/dist/css/58.chunk.css +0 -16
- package/dist/css/68.chunk.css +0 -41
- package/dist/css/69.chunk.css +0 -3
- package/dist/css/95.chunk.css +0 -24
- package/dist/css/96.chunk.css +0 -78
- package/dist/css/97.chunk.css +0 -3
- package/dist/scripts/0.chunk.js +0 -219
- package/dist/scripts/1.chunk.js +0 -1034
- package/dist/scripts/10.chunk.js +0 -90
- package/dist/scripts/11.chunk.js +0 -50
- package/dist/scripts/12.chunk.js +0 -150
- package/dist/scripts/13.chunk.js +0 -121
- package/dist/scripts/14.chunk.js +0 -104
- package/dist/scripts/15.chunk.js +0 -105
- package/dist/scripts/16.chunk.js +0 -80
- package/dist/scripts/17.chunk.js +0 -89
- package/dist/scripts/18.chunk.js +0 -56
- package/dist/scripts/19.chunk.js +0 -91
- package/dist/scripts/2.chunk.js +0 -1508
- package/dist/scripts/20.chunk.js +0 -83
- package/dist/scripts/21.chunk.js +0 -83
- package/dist/scripts/22.chunk.js +0 -74
- package/dist/scripts/23.chunk.js +0 -67
- package/dist/scripts/24.chunk.js +0 -35
- package/dist/scripts/25.chunk.js +0 -426
- package/dist/scripts/26.chunk.js +0 -414
- package/dist/scripts/27.chunk.js +0 -242
- package/dist/scripts/28.chunk.js +0 -251
- package/dist/scripts/29.chunk.js +0 -238
- package/dist/scripts/3.chunk.js +0 -111
- package/dist/scripts/30-dd541bb14b.chunk.js +0 -1
- package/dist/scripts/30.chunk.js +0 -150
- package/dist/scripts/31.chunk.js +0 -160
- package/dist/scripts/32.chunk.js +0 -174
- package/dist/scripts/33.chunk.js +0 -112
- package/dist/scripts/34.chunk.js +0 -104
- package/dist/scripts/35.chunk.js +0 -65
- package/dist/scripts/36.chunk.js +0 -66
- package/dist/scripts/37.chunk.js +0 -79
- package/dist/scripts/38.chunk.js +0 -89
- package/dist/scripts/39.chunk.js +0 -81
- package/dist/scripts/4.chunk.js +0 -210
- package/dist/scripts/40.chunk.js +0 -81
- package/dist/scripts/41.chunk.js +0 -81
- package/dist/scripts/42.chunk.js +0 -42
- package/dist/scripts/43.chunk.js +0 -84
- package/dist/scripts/44.chunk.js +0 -73
- package/dist/scripts/45.chunk.js +0 -67
- package/dist/scripts/46.chunk.js +0 -58
- package/dist/scripts/47.chunk.js +0 -58
- package/dist/scripts/48-46ee75001f.chunk.js +0 -1
- package/dist/scripts/48.chunk.js +0 -73
- package/dist/scripts/49.chunk.js +0 -50
- package/dist/scripts/5.chunk.js +0 -113
- package/dist/scripts/50.chunk.js +0 -41
- package/dist/scripts/51.chunk.js +0 -50
- package/dist/scripts/52.chunk.js +0 -51
- package/dist/scripts/53.chunk.js +0 -51
- package/dist/scripts/54.chunk.js +0 -43
- package/dist/scripts/55.chunk.js +0 -43
- package/dist/scripts/56.chunk.js +0 -34
- package/dist/scripts/57.chunk.js +0 -34
- package/dist/scripts/58.chunk.js +0 -34
- package/dist/scripts/59.chunk.js +0 -43
- package/dist/scripts/6.chunk.js +0 -72
- package/dist/scripts/60.chunk.js +0 -33
- package/dist/scripts/61.chunk.js +0 -35
- package/dist/scripts/62.chunk.js +0 -26
- package/dist/scripts/63.chunk.js +0 -34
- package/dist/scripts/64.chunk.js +0 -27
- package/dist/scripts/65.chunk.js +0 -27
- package/dist/scripts/66.chunk.js +0 -27
- package/dist/scripts/67.chunk.js +0 -18
- package/dist/scripts/68.chunk.js +0 -18
- package/dist/scripts/69-13425467aa.chunk.js +0 -1
- package/dist/scripts/69.chunk.js +0 -19
- package/dist/scripts/7.chunk.js +0 -80
- package/dist/scripts/70.chunk.js +0 -19
- package/dist/scripts/71.chunk.js +0 -19
- package/dist/scripts/72.chunk.js +0 -19
- package/dist/scripts/73.chunk.js +0 -19
- package/dist/scripts/74.chunk.js +0 -19
- package/dist/scripts/75.chunk.js +0 -19
- package/dist/scripts/76.chunk.js +0 -19
- package/dist/scripts/77.chunk.js +0 -19
- package/dist/scripts/78.chunk.js +0 -19
- package/dist/scripts/79.chunk.js +0 -11
- package/dist/scripts/8.chunk.js +0 -123
- package/dist/scripts/80.chunk.js +0 -11
- package/dist/scripts/81.chunk.js +0 -11
- package/dist/scripts/82.chunk.js +0 -11
- package/dist/scripts/83.chunk.js +0 -11
- package/dist/scripts/84.chunk.js +0 -11
- package/dist/scripts/85.chunk.js +0 -11
- package/dist/scripts/86.chunk.js +0 -11
- package/dist/scripts/87.chunk.js +0 -11
- package/dist/scripts/88.chunk.js +0 -11
- package/dist/scripts/89.chunk.js +0 -11
- package/dist/scripts/9-f17d5c8234.chunk.js +0 -1
- package/dist/scripts/9.chunk.js +0 -269
- package/dist/scripts/90.chunk.js +0 -11
- package/dist/scripts/91.chunk.js +0 -11
- package/dist/scripts/92.chunk.js +0 -10
- package/dist/scripts/93.chunk.js +0 -10
- package/dist/scripts/94.chunk.js +0 -11
- package/dist/scripts/95.chunk.js +0 -27
- package/dist/scripts/96.chunk.js +0 -43
- package/dist/scripts/97.chunk.js +0 -67
- package/dist/scripts/bundle-b52a7fc868.min.js +0 -31
- package/dist/scripts/bundle.js +0 -8762
- package/dist/scripts/pdf.worker.entry.worker.js +0 -110
- package/dist/scripts/polyfills.js +0 -2865
package/dist/scripts/90.chunk.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
(window["webpackJsonp_clickview_lite"] = window["webpackJsonp_clickview_lite"] || []).push([[90],{
|
|
2
|
-
|
|
3
|
-
/***/ "./src/apps/user-manager/views/edit-user/EditUserView.tsx":
|
|
4
|
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
5
|
-
|
|
6
|
-
"use strict";
|
|
7
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EditUserView\", function() { return EditUserView; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"react-redux\");\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"../../libs/common/src/backbone/services/LanguageService.tsx\");\n/* harmony import */ var libs_common_flight__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"../../libs/common/src/react/index.ts\");\n/* harmony import */ var libs_shared_components_popup_Popup__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\"../../libs/shared/src/components/popup/Popup.tsx\");\n/* harmony import */ var libs_shared_hooks_UseAlerts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\"../../libs/shared/src/hooks/UseAlerts.ts\");\n/* harmony import */ var libs_shared_flight_requests_UserRequests__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\"../../libs/shared/src/flight-requests/UserRequests.ts\");\n/* harmony import */ var libs_analytics_AnalyticsHelper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(\"../../libs/analytics/src/AnalyticsHelper.ts\");\n/* harmony import */ var apps_user_manager_flight_requests_SchoolUserRequests__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(\"./src/apps/user-manager/flight-requests/SchoolUserRequests.ts\");\n/* harmony import */ var apps_user_manager_components_edit_user_details_EditUserDetails__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(\"./src/apps/user-manager/components/edit-user-details/EditUserDetails.tsx\");\n\n\n\n\n\n\n\n\n\n\nvar getPhrase = libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_2__[\"LanguageService\"].encloseNamespace('userManager.editUser');\nfunction EditUserView(props) {\n var alerts = Object(libs_shared_hooks_UseAlerts__WEBPACK_IMPORTED_MODULE_5__[\"useAlerts\"])();\n var dispatch = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__[\"useDispatch\"])();\n var user = libs_common_flight__WEBPACK_IMPORTED_MODULE_3__[\"Flight\"].useBasicFetch(apps_user_manager_flight_requests_SchoolUserRequests__WEBPACK_IMPORTED_MODULE_8__[\"SchoolUserRequests\"].getUser(props.id));\n var currentUser = libs_common_flight__WEBPACK_IMPORTED_MODULE_3__[\"Flight\"].useBasicFetch(libs_shared_flight_requests_UserRequests__WEBPACK_IMPORTED_MODULE_6__[\"UserRequests\"].currentUser());\n var yearGroups = libs_common_flight__WEBPACK_IMPORTED_MODULE_3__[\"Flight\"].useBasicFetch(currentUser.data && apps_user_manager_flight_requests_SchoolUserRequests__WEBPACK_IMPORTED_MODULE_8__[\"SchoolUserRequests\"].yearGroups(currentUser.data.customerId));\n\n var saveUser = function saveUser(user) {\n libs_common_flight__WEBPACK_IMPORTED_MODULE_3__[\"Flight\"].fetch(dispatch, apps_user_manager_flight_requests_SchoolUserRequests__WEBPACK_IMPORTED_MODULE_8__[\"SchoolUserRequests\"].updateUser(user, currentUser.data.id, function () {\n libs_analytics_AnalyticsHelper__WEBPACK_IMPORTED_MODULE_7__[\"AnalyticsHelper\"].logUserAction(user, props.analyticsOptions);\n alerts.success(getPhrase('success'));\n }, function () {\n alerts.error(getPhrase('error'));\n }, function () {\n props.closePopup();\n }));\n };\n\n var isLoaded = !!user.data && !!currentUser.data && !!yearGroups.data;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(libs_shared_components_popup_Popup__WEBPACK_IMPORTED_MODULE_4__[\"Popup\"], {\n closePopup: props.closePopup,\n title: getPhrase('popupTitle'),\n showLoadingSpinner: !isLoaded\n }, isLoaded && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(apps_user_manager_components_edit_user_details_EditUserDetails__WEBPACK_IMPORTED_MODULE_9__[\"EditUserDetails\"], {\n userType: props.userType,\n yearGroups: yearGroups.data,\n initialValues: {\n userId: user.data.id,\n firstName: user.data.name,\n surname: user.data.surname,\n userType: user.data.userType,\n customerId: currentUser.data.customerId,\n email: user.data.email,\n yearGroup: user.data.yearGroup,\n masterYearGroup: user.data.masterYearGroup,\n username: user.data.username,\n masterRole: user.data.role,\n roleId: user.data.roleId,\n isPrimaryContact: user.data.isPrimaryContact\n },\n saveUser: saveUser,\n onClickCancel: props.closePopup\n }));\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXBwcy91c2VyLW1hbmFnZXIvdmlld3MvZWRpdC11c2VyL0VkaXRVc2VyVmlldy50c3guanMiLCJzb3VyY2VzIjpbImZpbGU6Ly9DOi9DbGlja1ZpZXcgUHJvamVjdHMvY2xpY2t2aWV3L3BhY2thZ2VzL3Byb2plY3RzL2xpdGUvc3JjL2FwcHMvdXNlci1tYW5hZ2VyL3ZpZXdzL2VkaXQtdXNlci9FZGl0VXNlclZpZXcudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xyXG5cclxuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnbGlicy9jb21tb24vYmFja2JvbmUvc2VydmljZXMvTGFuZ3VhZ2VTZXJ2aWNlJztcclxuaW1wb3J0IHsgRmxpZ2h0IH0gZnJvbSAnbGlicy9jb21tb24vZmxpZ2h0JztcclxuXHJcbmltcG9ydCB7IFByb3BzV2l0aFBvcHVwVmlld1Byb3BzLCBQcm9wc1dpdGhBbmFseXRpY3NPcHRpb25zLCBVc2VyLCBDdXJyZW50VXNlciwgWWVhckdyb3VwIH0gZnJvbSAnbGlicy9zaGFyZWQvaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnbGlicy9zaGFyZWQvY29tcG9uZW50cy9wb3B1cC9Qb3B1cCc7XHJcbmltcG9ydCB7IHVzZUFsZXJ0cyB9IGZyb20gJ2xpYnMvc2hhcmVkL2hvb2tzL1VzZUFsZXJ0cyc7XHJcbmltcG9ydCB7IFVzZXJSZXF1ZXN0cyB9IGZyb20gJ2xpYnMvc2hhcmVkL2ZsaWdodC1yZXF1ZXN0cy9Vc2VyUmVxdWVzdHMnO1xyXG5pbXBvcnQgeyBVc2VyR3JvdXAgfSBmcm9tICdsaWJzL3NoYXJlZC9lbnVtcy9Vc2VyR3JvdXAnO1xyXG5cclxuaW1wb3J0IHsgQW5hbHl0aWNzSGVscGVyIH0gZnJvbSAnbGlicy9hbmFseXRpY3MvQW5hbHl0aWNzSGVscGVyJztcclxuXHJcbmltcG9ydCB7IFNjaG9vbFVzZXJSZXF1ZXN0cyB9IGZyb20gJ2FwcHMvdXNlci1tYW5hZ2VyL2ZsaWdodC1yZXF1ZXN0cy9TY2hvb2xVc2VyUmVxdWVzdHMnO1xyXG5pbXBvcnQgeyBFZGl0VXNlclJlcXVlc3QgfSBmcm9tICdhcHBzL3VzZXItbWFuYWdlci9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgRWRpdFVzZXJEZXRhaWxzIH0gZnJvbSAnYXBwcy91c2VyLW1hbmFnZXIvY29tcG9uZW50cy9lZGl0LXVzZXItZGV0YWlscy9FZGl0VXNlckRldGFpbHMnO1xyXG5cclxuY29uc3QgZ2V0UGhyYXNlID0gTGFuZ3VhZ2VTZXJ2aWNlLmVuY2xvc2VOYW1lc3BhY2UoJ3VzZXJNYW5hZ2VyLmVkaXRVc2VyJyk7XHJcblxyXG50eXBlIEVkaXRVc2VyVmlld1Byb3BzID0gUHJvcHNXaXRoUG9wdXBWaWV3UHJvcHM8UHJvcHNXaXRoQW5hbHl0aWNzT3B0aW9uczx7XHJcbiAgaWQ6IHN0cmluZztcclxuICB1c2VyVHlwZTogVXNlckdyb3VwXHJcbn0+PjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBFZGl0VXNlclZpZXcocHJvcHM6IEVkaXRVc2VyVmlld1Byb3BzKTogUmVhY3QuUmVhY3RFbGVtZW50IHtcclxuICBjb25zdCBhbGVydHMgPSB1c2VBbGVydHMoKTtcclxuXHJcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xyXG5cclxuICBjb25zdCB1c2VyID0gRmxpZ2h0LnVzZUJhc2ljRmV0Y2g8VXNlcj4oU2Nob29sVXNlclJlcXVlc3RzLmdldFVzZXIocHJvcHMuaWQpKTtcclxuICBjb25zdCBjdXJyZW50VXNlciA9IEZsaWdodC51c2VCYXNpY0ZldGNoPEN1cnJlbnRVc2VyPihVc2VyUmVxdWVzdHMuY3VycmVudFVzZXIoKSk7XHJcbiAgY29uc3QgeWVhckdyb3VwcyA9IEZsaWdodC51c2VCYXNpY0ZldGNoPFllYXJHcm91cFtdPihjdXJyZW50VXNlci5kYXRhICYmXHJcbiAgICBTY2hvb2xVc2VyUmVxdWVzdHMueWVhckdyb3VwcyhjdXJyZW50VXNlci5kYXRhLmN1c3RvbWVySWQpKTtcclxuXHJcbiAgY29uc3Qgc2F2ZVVzZXIgPSAodXNlcjogRWRpdFVzZXJSZXF1ZXN0KSA9PiB7XHJcbiAgICBGbGlnaHQuZmV0Y2goZGlzcGF0Y2gsIFNjaG9vbFVzZXJSZXF1ZXN0cy51cGRhdGVVc2VyKHVzZXIsIGN1cnJlbnRVc2VyLmRhdGEuaWQsICgpID0+IHtcclxuICAgICAgQW5hbHl0aWNzSGVscGVyLmxvZ1VzZXJBY3Rpb24odXNlciwgcHJvcHMuYW5hbHl0aWNzT3B0aW9ucyk7XHJcblxyXG4gICAgICBhbGVydHMuc3VjY2VzcyhnZXRQaHJhc2UoJ3N1Y2Nlc3MnKSk7XHJcbiAgICB9LCAoKSA9PiB7XHJcbiAgICAgIGFsZXJ0cy5lcnJvcihnZXRQaHJhc2UoJ2Vycm9yJykpO1xyXG4gICAgfSwgKCkgPT4ge1xyXG4gICAgICBwcm9wcy5jbG9zZVBvcHVwKCk7XHJcbiAgICB9KSk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgaXNMb2FkZWQgPSAhIXVzZXIuZGF0YSAmJiAhIWN1cnJlbnRVc2VyLmRhdGEgJiYgISF5ZWFyR3JvdXBzLmRhdGE7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8UG9wdXAgY2xvc2VQb3B1cD17cHJvcHMuY2xvc2VQb3B1cH0gdGl0bGU9e2dldFBocmFzZSgncG9wdXBUaXRsZScpfSBzaG93TG9hZGluZ1NwaW5uZXI9eyFpc0xvYWRlZH0+XHJcbiAgICAgIHtpc0xvYWRlZCAmJiAoXHJcbiAgICAgICAgPEVkaXRVc2VyRGV0YWlsc1xyXG4gICAgICAgICAgdXNlclR5cGU9e3Byb3BzLnVzZXJUeXBlfVxyXG4gICAgICAgICAgeWVhckdyb3Vwcz17eWVhckdyb3Vwcy5kYXRhfVxyXG4gICAgICAgICAgaW5pdGlhbFZhbHVlcz17e1xyXG4gICAgICAgICAgICB1c2VySWQ6IHVzZXIuZGF0YS5pZCxcclxuICAgICAgICAgICAgZmlyc3ROYW1lOiB1c2VyLmRhdGEubmFtZSxcclxuICAgICAgICAgICAgc3VybmFtZTogdXNlci5kYXRhLnN1cm5hbWUsXHJcbiAgICAgICAgICAgIHVzZXJUeXBlOiB1c2VyLmRhdGEudXNlclR5cGUsXHJcbiAgICAgICAgICAgIGN1c3RvbWVySWQ6IGN1cnJlbnRVc2VyLmRhdGEuY3VzdG9tZXJJZCxcclxuICAgICAgICAgICAgZW1haWw6IHVzZXIuZGF0YS5lbWFpbCxcclxuICAgICAgICAgICAgeWVhckdyb3VwOiB1c2VyLmRhdGEueWVhckdyb3VwLFxyXG4gICAgICAgICAgICBtYXN0ZXJZZWFyR3JvdXA6IHVzZXIuZGF0YS5tYXN0ZXJZZWFyR3JvdXAsXHJcbiAgICAgICAgICAgIHVzZXJuYW1lOiB1c2VyLmRhdGEudXNlcm5hbWUsXHJcbiAgICAgICAgICAgIG1hc3RlclJvbGU6IHVzZXIuZGF0YS5yb2xlLFxyXG4gICAgICAgICAgICByb2xlSWQ6IHVzZXIuZGF0YS5yb2xlSWQsXHJcbiAgICAgICAgICAgIGlzUHJpbWFyeUNvbnRhY3Q6IHVzZXIuZGF0YS5pc1ByaW1hcnlDb250YWN0XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgc2F2ZVVzZXI9e3NhdmVVc2VyfVxyXG4gICAgICAgICAgb25DbGlja0NhbmNlbD17cHJvcHMuY2xvc2VQb3B1cH1cclxuICAgICAgICAvPlxyXG4gICAgICApfVxyXG4gICAgPC9Qb3B1cD5cclxuICApO1xyXG59Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUVBO0FBRUE7QUFFQTtBQU9BO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVpBO0FBY0E7QUFDQTtBQWxCQTtBQXVCQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/apps/user-manager/views/edit-user/EditUserView.tsx\n");
|
|
8
|
-
|
|
9
|
-
/***/ })
|
|
10
|
-
|
|
11
|
-
}]);
|
package/dist/scripts/91.chunk.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
(window["webpackJsonp_clickview_lite"] = window["webpackJsonp_clickview_lite"] || []).push([[91],{
|
|
2
|
-
|
|
3
|
-
/***/ "./src/shared/views/edit-video/EditVideoView.tsx":
|
|
4
|
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
5
|
-
|
|
6
|
-
"use strict";
|
|
7
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EditVideoView\", function() { return EditVideoView; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"react-redux\");\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var libs_common_flight__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"../../libs/common/src/react/index.ts\");\n/* harmony import */ var libs_common_react_hooks_UseService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"../../libs/common/src/react/hooks/UseService.ts\");\n/* harmony import */ var libs_shared_components_popup_Popup__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\"../../libs/shared/src/components/popup/Popup.tsx\");\n/* harmony import */ var libs_shared_components_edit_video_details_EditVideoDetails__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\"../../libs/shared/src/components/edit-video-details/EditVideoDetails.tsx\");\n/* harmony import */ var libs_analytics_AnalyticsHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\"../../libs/analytics/src/AnalyticsHelper.ts\");\n/* harmony import */ var libs_analytics_interfaces__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(\"../../libs/analytics/src/interfaces/index.ts\");\n/* harmony import */ var shared_flight_requests_VideoRequests__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(\"./src/shared/flight-requests/VideoRequests.ts\");\n\n\n\n\n\n\n\n\n\nfunction EditVideoView(props) {\n var id = props.id,\n closePopup = props.closePopup;\n var combinedUploadService = Object(libs_common_react_hooks_UseService__WEBPACK_IMPORTED_MODULE_3__[\"useService\"])('combine:uploads:service');\n var video = libs_common_flight__WEBPACK_IMPORTED_MODULE_2__[\"Flight\"].useBasicFetch(shared_flight_requests_VideoRequests__WEBPACK_IMPORTED_MODULE_8__[\"VideoRequests\"].video(id));\n var dispatch = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__[\"useDispatch\"])();\n\n var saveVideo = function saveVideo(data) {\n var request = shared_flight_requests_VideoRequests__WEBPACK_IMPORTED_MODULE_8__[\"VideoRequests\"].updateVideo(props.id, data, function () {\n combinedUploadService.updateUploadMetadata(props.id, data.name);\n libs_analytics_AnalyticsHelper__WEBPACK_IMPORTED_MODULE_6__[\"AnalyticsHelper\"].logUserAction(data, {\n location: libs_analytics_interfaces__WEBPACK_IMPORTED_MODULE_7__[\"LocationContext\"].Popup,\n actionType: libs_analytics_interfaces__WEBPACK_IMPORTED_MODULE_7__[\"UserAction\"].Edit,\n workflowPhase: libs_analytics_interfaces__WEBPACK_IMPORTED_MODULE_7__[\"WorkflowPhase\"].Complete,\n entity: libs_analytics_interfaces__WEBPACK_IMPORTED_MODULE_7__[\"EntityType\"].Video\n });\n closePopup();\n });\n libs_common_flight__WEBPACK_IMPORTED_MODULE_2__[\"Flight\"].fetch(dispatch, request);\n };\n\n if (!video.data) return react__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"](react__WEBPACK_IMPORTED_MODULE_0__[\"Fragment\"], null);\n return react__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"](libs_shared_components_popup_Popup__WEBPACK_IMPORTED_MODULE_4__[\"Popup\"], {\n closePopup: closePopup,\n title: 'Edit video details'\n }, react__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"](libs_shared_components_edit_video_details_EditVideoDetails__WEBPACK_IMPORTED_MODULE_5__[\"EditVideoDetails\"], {\n video: video.data,\n saveVideo: saveVideo,\n onClickCancel: closePopup\n }));\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc2hhcmVkL3ZpZXdzL2VkaXQtdmlkZW8vRWRpdFZpZGVvVmlldy50c3guanMiLCJzb3VyY2VzIjpbImZpbGU6Ly9DOi9DbGlja1ZpZXcgUHJvamVjdHMvY2xpY2t2aWV3L3BhY2thZ2VzL3Byb2plY3RzL2xpdGUvc3JjL3NoYXJlZC92aWV3cy9lZGl0LXZpZGVvL0VkaXRWaWRlb1ZpZXcudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tICdyZWFjdC1yZWR1eCc7XHJcblxyXG5pbXBvcnQgeyBGbGlnaHQgfSBmcm9tICdsaWJzL2NvbW1vbi9mbGlnaHQnO1xyXG5pbXBvcnQgeyB1c2VTZXJ2aWNlIH0gZnJvbSAnbGlicy9jb21tb24vcmVhY3QvaG9va3MvVXNlU2VydmljZSc7XHJcbmltcG9ydCB7IFZpZGVvLCBQb3B1cFZpZXdQcm9wcywgVXBkYXRlVmlkZW9SZXF1ZXN0IH0gZnJvbSAnbGlicy9zaGFyZWQvaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnbGlicy9zaGFyZWQvY29tcG9uZW50cy9wb3B1cC9Qb3B1cCc7XHJcbmltcG9ydCB7IEVkaXRWaWRlb0RldGFpbHMgfSBmcm9tICdsaWJzL3NoYXJlZC9jb21wb25lbnRzL2VkaXQtdmlkZW8tZGV0YWlscy9FZGl0VmlkZW9EZXRhaWxzJztcclxuaW1wb3J0IHsgQW5hbHl0aWNzSGVscGVyIH0gZnJvbSAnbGlicy9hbmFseXRpY3MvQW5hbHl0aWNzSGVscGVyJztcclxuaW1wb3J0IHsgTG9jYXRpb25Db250ZXh0LCBVc2VyQWN0aW9uLCBXb3JrZmxvd1BoYXNlLCBFbnRpdHlUeXBlIH0gZnJvbSAnbGlicy9hbmFseXRpY3MvaW50ZXJmYWNlcyc7XHJcblxyXG5pbXBvcnQgeyBWaWRlb1JlcXVlc3RzIH0gZnJvbSAnc2hhcmVkL2ZsaWdodC1yZXF1ZXN0cy9WaWRlb1JlcXVlc3RzJztcclxuaW1wb3J0IHsgQ29tYmluZVVwbG9hZHNTZXJ2aWNlIH0gZnJvbSAnYXBwcy91cGxvYWQvc2VydmljZXMvQ29tYmluZVVwbG9hZHNTZXJ2aWNlJztcclxuXHJcbmludGVyZmFjZSBFZGl0VmlkZW9WaWV3UHJvcHMge1xyXG4gIGlkOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBFZGl0VmlkZW9WaWV3KHByb3BzOiBFZGl0VmlkZW9WaWV3UHJvcHMgJiBQb3B1cFZpZXdQcm9wcyk6IEpTWC5FbGVtZW50IHtcclxuICBjb25zdCB7IGlkLCBjbG9zZVBvcHVwIH0gPSBwcm9wcztcclxuXHJcbiAgY29uc3QgY29tYmluZWRVcGxvYWRTZXJ2aWNlID0gdXNlU2VydmljZTxDb21iaW5lVXBsb2Fkc1NlcnZpY2U+KCdjb21iaW5lOnVwbG9hZHM6c2VydmljZScpO1xyXG4gIGNvbnN0IHZpZGVvID0gRmxpZ2h0LnVzZUJhc2ljRmV0Y2g8VmlkZW8+KFZpZGVvUmVxdWVzdHMudmlkZW8oaWQpKTtcclxuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XHJcblxyXG4gIGNvbnN0IHNhdmVWaWRlbyA9IChkYXRhOiBVcGRhdGVWaWRlb1JlcXVlc3QpID0+IHtcclxuICAgIGNvbnN0IHJlcXVlc3QgPSBWaWRlb1JlcXVlc3RzLnVwZGF0ZVZpZGVvKHByb3BzLmlkLCBkYXRhLCAoKSA9PiB7XHJcbiAgICAgIGNvbWJpbmVkVXBsb2FkU2VydmljZS51cGRhdGVVcGxvYWRNZXRhZGF0YShwcm9wcy5pZCwgZGF0YS5uYW1lKTtcclxuXHJcbiAgICAgIEFuYWx5dGljc0hlbHBlci5sb2dVc2VyQWN0aW9uKGRhdGEsIHtcclxuICAgICAgICBsb2NhdGlvbjogTG9jYXRpb25Db250ZXh0LlBvcHVwLFxyXG4gICAgICAgIGFjdGlvblR5cGU6IFVzZXJBY3Rpb24uRWRpdCxcclxuICAgICAgICB3b3JrZmxvd1BoYXNlOiBXb3JrZmxvd1BoYXNlLkNvbXBsZXRlLFxyXG4gICAgICAgIGVudGl0eTogRW50aXR5VHlwZS5WaWRlb1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNsb3NlUG9wdXAoKTtcclxuICAgIH0pO1xyXG4gICAgRmxpZ2h0LmZldGNoKGRpc3BhdGNoLCByZXF1ZXN0KTtcclxuICB9O1xyXG5cclxuICBpZiAoIXZpZGVvLmRhdGEpXHJcbiAgICByZXR1cm4gPD48Lz47XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8UG9wdXAgY2xvc2VQb3B1cD17Y2xvc2VQb3B1cH0gdGl0bGU9eydFZGl0IHZpZGVvIGRldGFpbHMnfT5cclxuICAgICAgPEVkaXRWaWRlb0RldGFpbHNcclxuICAgICAgICB2aWRlbz17dmlkZW8uZGF0YX1cclxuICAgICAgICBzYXZlVmlkZW89e3NhdmVWaWRlb31cclxuICAgICAgICBvbkNsaWNrQ2FuY2VsPXtjbG9zZVBvcHVwfSAvPlxyXG4gICAgPC9Qb3B1cD5cclxuICApO1xyXG59Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQU9BO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFIQTtBQU1BIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/shared/views/edit-video/EditVideoView.tsx\n");
|
|
8
|
-
|
|
9
|
-
/***/ })
|
|
10
|
-
|
|
11
|
-
}]);
|
package/dist/scripts/92.chunk.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
(window["webpackJsonp_clickview_lite"] = window["webpackJsonp_clickview_lite"] || []).push([[92],{
|
|
2
|
-
|
|
3
|
-
/***/ "../../../node_modules/intersection-observer/intersection-observer.js":
|
|
4
|
-
/***/ (function(module, exports) {
|
|
5
|
-
|
|
6
|
-
eval("/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n */\n(function() {\n'use strict';\n\n// Exit early if we're not running in a browser.\nif (typeof window !== 'object') {\n return;\n}\n\n// Exit early if all IntersectionObserver and IntersectionObserverEntry\n// features are natively supported.\nif ('IntersectionObserver' in window &&\n 'IntersectionObserverEntry' in window &&\n 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype,\n 'isIntersecting', {\n get: function () {\n return this.intersectionRatio > 0;\n }\n });\n }\n return;\n}\n\n/**\n * Returns the embedding frame element, if any.\n * @param {!Document} doc\n * @return {!Element}\n */\nfunction getFrameElement(doc) {\n try {\n return doc.defaultView && doc.defaultView.frameElement || null;\n } catch (e) {\n // Ignore the error.\n return null;\n }\n}\n\n/**\n * A local reference to the root document.\n */\nvar document = (function(startDoc) {\n var doc = startDoc;\n var frame = getFrameElement(doc);\n while (frame) {\n doc = frame.ownerDocument;\n frame = getFrameElement(doc);\n }\n return doc;\n})(window.document);\n\n/**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observing a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\nvar registry = [];\n\n/**\n * The signal updater for cross-origin intersection. When not null, it means\n * that the polyfill is configured to work in a cross-origin mode.\n * @type {function(DOMRect|ClientRect, DOMRect|ClientRect)}\n */\nvar crossOriginUpdater = null;\n\n/**\n * The current cross-origin intersection. Only used in the cross-origin mode.\n * @type {DOMRect|ClientRect}\n */\nvar crossOriginRect = null;\n\n\n/**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\nfunction IntersectionObserverEntry(entry) {\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = ensureDOMRect(entry.rootBounds);\n this.boundingClientRect = ensureDOMRect(entry.boundingClientRect);\n this.intersectionRect = ensureDOMRect(entry.intersectionRect || getEmptyRect());\n this.isIntersecting = !!entry.intersectionRect;\n\n // Calculates the intersection ratio.\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height;\n\n // Sets intersection ratio.\n if (targetArea) {\n // Round the intersection ratio to avoid floating point math issues:\n // https://github.com/w3c/IntersectionObserver/issues/324\n this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));\n } else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n}\n\n\n/**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\nfunction IntersectionObserver(callback, opt_options) {\n\n var options = opt_options || {};\n\n if (typeof callback != 'function') {\n throw new Error('callback must be a function');\n }\n\n if (options.root && options.root.nodeType != 1) {\n throw new Error('root must be an Element');\n }\n\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(\n this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function(margin) {\n return margin.value + margin.unit;\n }).join(' ');\n\n /** @private @const {!Array<!Document>} */\n this._monitoringDocuments = [];\n /** @private @const {!Array<function()>} */\n this._monitoringUnsubscribes = [];\n}\n\n\n/**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\nIntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n\n\n/**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\nIntersectionObserver.prototype.POLL_INTERVAL = null;\n\n/**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\nIntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n\n\n/**\n * Sets up the polyfill in the cross-origin mode. The result is the\n * updater function that accepts two arguments: `boundingClientRect` and\n * `intersectionRect` - just as these fields would be available to the\n * parent via `IntersectionObserverEntry`. This function should be called\n * each time the iframe receives intersection information from the parent\n * window, e.g. via messaging.\n * @return {function(DOMRect|ClientRect, DOMRect|ClientRect)}\n */\nIntersectionObserver._setupCrossOriginUpdater = function() {\n if (!crossOriginUpdater) {\n /**\n * @param {DOMRect|ClientRect} boundingClientRect\n * @param {DOMRect|ClientRect} intersectionRect\n */\n crossOriginUpdater = function(boundingClientRect, intersectionRect) {\n if (!boundingClientRect || !intersectionRect) {\n crossOriginRect = getEmptyRect();\n } else {\n crossOriginRect = convertFromParentRect(boundingClientRect, intersectionRect);\n }\n registry.forEach(function(observer) {\n observer._checkForIntersections();\n });\n };\n }\n return crossOriginUpdater;\n};\n\n\n/**\n * Resets the cross-origin mode.\n */\nIntersectionObserver._resetCrossOriginUpdater = function() {\n crossOriginUpdater = null;\n crossOriginRect = null;\n};\n\n\n/**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.observe = function(target) {\n var isTargetAlreadyObserved = this._observationTargets.some(function(item) {\n return item.element == target;\n });\n\n if (isTargetAlreadyObserved) {\n return;\n }\n\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n\n this._registerInstance();\n this._observationTargets.push({element: target, entry: null});\n this._monitorIntersections(target.ownerDocument);\n this._checkForIntersections();\n};\n\n\n/**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.unobserve = function(target) {\n this._observationTargets =\n this._observationTargets.filter(function(item) {\n return item.element != target;\n });\n this._unmonitorIntersections(target.ownerDocument);\n if (this._observationTargets.length == 0) {\n this._unregisterInstance();\n }\n};\n\n\n/**\n * Stops observing all target elements for intersection changes.\n */\nIntersectionObserver.prototype.disconnect = function() {\n this._observationTargets = [];\n this._unmonitorAllIntersections();\n this._unregisterInstance();\n};\n\n\n/**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\nIntersectionObserver.prototype.takeRecords = function() {\n var records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n};\n\n\n/**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\nIntersectionObserver.prototype._initThresholds = function(opt_threshold) {\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\n\n return threshold.sort().filter(function(t, i, a) {\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n return t !== a[i - 1];\n });\n};\n\n\n/**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array<Object>} An array of margin objects with the keys\n * value and unit.\n */\nIntersectionObserver.prototype._parseRootMargin = function(opt_rootMargin) {\n var marginString = opt_rootMargin || '0px';\n var margins = marginString.split(/\\s+/).map(function(margin) {\n var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n return {value: parseFloat(parts[1]), unit: parts[2]};\n });\n\n // Handles shorthand.\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n\n return margins;\n};\n\n\n/**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibility state is visible.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._monitorIntersections = function(doc) {\n var win = doc.defaultView;\n if (!win) {\n // Already destroyed.\n return;\n }\n if (this._monitoringDocuments.indexOf(doc) != -1) {\n // Already monitoring.\n return;\n }\n\n // Private state for monitoring.\n var callback = this._checkForIntersections;\n var monitoringInterval = null;\n var domObserver = null;\n\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n monitoringInterval = win.setInterval(callback, this.POLL_INTERVAL);\n } else {\n addEvent(win, 'resize', callback, true);\n addEvent(doc, 'scroll', callback, true);\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in win) {\n domObserver = new win.MutationObserver(callback);\n domObserver.observe(doc, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n\n this._monitoringDocuments.push(doc);\n this._monitoringUnsubscribes.push(function() {\n // Get the window object again. When a friendly iframe is destroyed, it\n // will be null.\n var win = doc.defaultView;\n\n if (win) {\n if (monitoringInterval) {\n win.clearInterval(monitoringInterval);\n }\n removeEvent(win, 'resize', callback, true);\n }\n\n removeEvent(doc, 'scroll', callback, true);\n if (domObserver) {\n domObserver.disconnect();\n }\n });\n\n // Also monitor the parent.\n if (doc != (this.root && this.root.ownerDocument || document)) {\n var frame = getFrameElement(doc);\n if (frame) {\n this._monitorIntersections(frame.ownerDocument);\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._unmonitorIntersections = function(doc) {\n var index = this._monitoringDocuments.indexOf(doc);\n if (index == -1) {\n return;\n }\n\n var rootDoc = (this.root && this.root.ownerDocument || document);\n\n // Check if any dependent targets are still remaining.\n var hasDependentTargets =\n this._observationTargets.some(function(item) {\n var itemDoc = item.element.ownerDocument;\n // Target is in this context.\n if (itemDoc == doc) {\n return true;\n }\n // Target is nested in this context.\n while (itemDoc && itemDoc != rootDoc) {\n var frame = getFrameElement(itemDoc);\n itemDoc = frame && frame.ownerDocument;\n if (itemDoc == doc) {\n return true;\n }\n }\n return false;\n });\n if (hasDependentTargets) {\n return;\n }\n\n // Unsubscribe.\n var unsubscribe = this._monitoringUnsubscribes[index];\n this._monitoringDocuments.splice(index, 1);\n this._monitoringUnsubscribes.splice(index, 1);\n unsubscribe();\n\n // Also unmonitor the parent.\n if (doc != rootDoc) {\n var frame = getFrameElement(doc);\n if (frame) {\n this._unmonitorIntersections(frame.ownerDocument);\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._unmonitorAllIntersections = function() {\n var unsubscribes = this._monitoringUnsubscribes.slice(0);\n this._monitoringDocuments.length = 0;\n this._monitoringUnsubscribes.length = 0;\n for (var i = 0; i < unsubscribes.length; i++) {\n unsubscribes[i]();\n }\n};\n\n\n/**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\nIntersectionObserver.prototype._checkForIntersections = function() {\n if (!this.root && crossOriginUpdater && !crossOriginRect) {\n // Cross origin monitoring, but no initial data available yet.\n return;\n }\n\n var rootIsInDom = this._rootIsInDom();\n var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n\n this._observationTargets.forEach(function(item) {\n var target = item.element;\n var targetRect = getBoundingClientRect(target);\n var rootContainsTarget = this._rootContainsTarget(target);\n var oldEntry = item.entry;\n var intersectionRect = rootIsInDom && rootContainsTarget &&\n this._computeTargetAndRootIntersection(target, targetRect, rootRect);\n\n var newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: crossOriginUpdater && !this.root ? null : rootRect,\n intersectionRect: intersectionRect\n });\n\n if (!oldEntry) {\n this._queuedEntries.push(newEntry);\n } else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry);\n }\n } else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry);\n }\n }\n }, this);\n\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this);\n }\n};\n\n\n/**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} targetRect The bounding rect of the target.\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\nIntersectionObserver.prototype._computeTargetAndRootIntersection =\n function(target, targetRect, rootRect) {\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\n\n var intersectionRect = targetRect;\n var parent = getParentNode(target);\n var atRoot = false;\n\n while (!atRoot && parent) {\n var parentRect = null;\n var parentComputedStyle = parent.nodeType == 1 ?\n window.getComputedStyle(parent) : {};\n\n // If the parent isn't displayed, an intersection can't happen.\n if (parentComputedStyle.display == 'none') return null;\n\n if (parent == this.root || parent.nodeType == /* DOCUMENT */ 9) {\n atRoot = true;\n if (parent == this.root || parent == document) {\n if (crossOriginUpdater && !this.root) {\n if (!crossOriginRect ||\n crossOriginRect.width == 0 && crossOriginRect.height == 0) {\n // A 0-size cross-origin intersection means no-intersection.\n parent = null;\n parentRect = null;\n intersectionRect = null;\n } else {\n parentRect = crossOriginRect;\n }\n } else {\n parentRect = rootRect;\n }\n } else {\n // Check if there's a frame that can be navigated to.\n var frame = getParentNode(parent);\n var frameRect = frame && getBoundingClientRect(frame);\n var frameIntersect =\n frame &&\n this._computeTargetAndRootIntersection(frame, frameRect, rootRect);\n if (frameRect && frameIntersect) {\n parent = frame;\n parentRect = convertFromParentRect(frameRect, frameIntersect);\n } else {\n parent = null;\n intersectionRect = null;\n }\n }\n } else {\n // If the element has a non-visible overflow, and it's not the <body>\n // or <html> element, update the intersection rect.\n // Note: <body> and <html> cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n var doc = parent.ownerDocument;\n if (parent != doc.body &&\n parent != doc.documentElement &&\n parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n }\n\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n }\n if (!intersectionRect) break;\n parent = parent && getParentNode(parent);\n }\n return intersectionRect;\n};\n\n\n/**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {ClientRect} The expanded root rect.\n * @private\n */\nIntersectionObserver.prototype._getRootRect = function() {\n var rootRect;\n if (this.root) {\n rootRect = getBoundingClientRect(this.root);\n } else {\n // Use <html>/<body> instead of window since scroll bars affect size.\n var html = document.documentElement;\n var body = document.body;\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n };\n }\n return this._expandRectByRootMargin(rootRect);\n};\n\n\n/**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {DOMRect|ClientRect} rect The rect object to expand.\n * @return {ClientRect} The expanded rect.\n * @private\n */\nIntersectionObserver.prototype._expandRectByRootMargin = function(rect) {\n var margins = this._rootMarginValues.map(function(margin, i) {\n return margin.unit == 'px' ? margin.value :\n margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\n var newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n };\n newRect.width = newRect.right - newRect.left;\n newRect.height = newRect.bottom - newRect.top;\n\n return newRect;\n};\n\n\n/**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\nIntersectionObserver.prototype._hasCrossedThreshold =\n function(oldEntry, newEntry) {\n\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n var oldRatio = oldEntry && oldEntry.isIntersecting ?\n oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ?\n newEntry.intersectionRatio || 0 : -1;\n\n // Ignore unchanged ratios\n if (oldRatio === newRatio) return;\n\n for (var i = 0; i < this.thresholds.length; i++) {\n var threshold = this.thresholds[i];\n\n // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n if (threshold == oldRatio || threshold == newRatio ||\n threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\n};\n\n\n/**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\nIntersectionObserver.prototype._rootIsInDom = function() {\n return !this.root || containsDeep(document, this.root);\n};\n\n\n/**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\nIntersectionObserver.prototype._rootContainsTarget = function(target) {\n return containsDeep(this.root || document, target) &&\n (!this.root || this.root.ownerDocument == target.ownerDocument);\n};\n\n\n/**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\nIntersectionObserver.prototype._registerInstance = function() {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n};\n\n\n/**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\nIntersectionObserver.prototype._unregisterInstance = function() {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\n};\n\n\n/**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\nfunction now() {\n return window.performance && performance.now && performance.now();\n}\n\n\n/**\n * Throttles a function and delays its execution, so it's only called at most\n * once within a given time period.\n * @param {Function} fn The function to throttle.\n * @param {number} timeout The amount of time that must pass before the\n * function can be called again.\n * @return {Function} The throttled function.\n */\nfunction throttle(fn, timeout) {\n var timer = null;\n return function () {\n if (!timer) {\n timer = setTimeout(function() {\n fn();\n timer = null;\n }, timeout);\n }\n };\n}\n\n\n/**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\nfunction addEvent(node, event, fn, opt_useCapture) {\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\nfunction removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.detatchEvent == 'function') {\n node.detatchEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object|?ClientRect} The intersection rect or undefined if no\n * intersection is found.\n */\nfunction computeRectIntersection(rect1, rect2) {\n var top = Math.max(rect1.top, rect2.top);\n var bottom = Math.min(rect1.bottom, rect2.bottom);\n var left = Math.max(rect1.left, rect2.left);\n var right = Math.min(rect1.right, rect2.right);\n var width = right - left;\n var height = bottom - top;\n\n return (width >= 0 && height >= 0) && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n } || null;\n}\n\n\n/**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {DOMRect|ClientRect} The (possibly shimmed) rect of the element.\n */\nfunction getBoundingClientRect(el) {\n var rect;\n\n try {\n rect = el.getBoundingClientRect();\n } catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n\n if (!rect) return getEmptyRect();\n\n // Older IE\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return rect;\n}\n\n\n/**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {ClientRect} The empty rect.\n */\nfunction getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n}\n\n\n/**\n * Ensure that the result has all of the necessary fields of the DOMRect.\n * Specifically this ensures that `x` and `y` fields are set.\n *\n * @param {?DOMRect|?ClientRect} rect\n * @return {?DOMRect}\n */\nfunction ensureDOMRect(rect) {\n // A `DOMRect` object has `x` and `y` fields.\n if (!rect || 'x' in rect) {\n return rect;\n }\n // A IE's `ClientRect` type does not have `x` and `y`. The same is the case\n // for internally calculated Rect objects. For the purposes of\n // `IntersectionObserver`, it's sufficient to simply mirror `left` and `top`\n // for these fields.\n return {\n top: rect.top,\n y: rect.top,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n right: rect.right,\n width: rect.width,\n height: rect.height\n };\n}\n\n\n/**\n * Inverts the intersection and bounding rect from the parent (frame) BCR to\n * the local BCR space.\n * @param {DOMRect|ClientRect} parentBoundingRect The parent's bound client rect.\n * @param {DOMRect|ClientRect} parentIntersectionRect The parent's own intersection rect.\n * @return {ClientRect} The local root bounding rect for the parent's children.\n */\nfunction convertFromParentRect(parentBoundingRect, parentIntersectionRect) {\n var top = parentIntersectionRect.top - parentBoundingRect.top;\n var left = parentIntersectionRect.left - parentBoundingRect.left;\n return {\n top: top,\n left: left,\n height: parentIntersectionRect.height,\n width: parentIntersectionRect.width,\n bottom: top + parentIntersectionRect.height,\n right: left + parentIntersectionRect.width\n };\n}\n\n\n/**\n * Checks to see if a parent element contains a child element (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\nfunction containsDeep(parent, child) {\n var node = child;\n while (node) {\n if (node == parent) return true;\n\n node = getParentNode(node);\n }\n return false;\n}\n\n\n/**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\nfunction getParentNode(node) {\n var parent = node.parentNode;\n\n if (node.nodeType == /* DOCUMENT */ 9 && node != document) {\n // If this node is a document node, look for the embedding frame.\n return getFrameElement(node);\n }\n\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host;\n }\n\n if (parent && parent.assignedSlot) {\n // If the parent is distributed in a <slot>, return the parent of a slot.\n return parent.assignedSlot.parentNode;\n }\n\n return parent;\n}\n\n\n// Exposes the constructors globally.\nwindow.IntersectionObserver = IntersectionObserver;\nwindow.IntersectionObserverEntry = IntersectionObserverEntry;\n\n}());\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIuanMuanMiLCJzb3VyY2VzIjpbImZpbGU6Ly9DOi9DbGlja1ZpZXcgUHJvamVjdHMvY2xpY2t2aWV3L25vZGVfbW9kdWxlcy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW50ZXJzZWN0aW9uLW9ic2VydmVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgVzNDIFNPRlRXQVJFIEFORCBET0NVTUVOVCBOT1RJQ0UgQU5EIExJQ0VOU0UuXG4gKlxuICogIGh0dHBzOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLzIwMTUvY29weXJpZ2h0LXNvZnR3YXJlLWFuZC1kb2N1bWVudFxuICpcbiAqL1xuKGZ1bmN0aW9uKCkge1xuJ3VzZSBzdHJpY3QnO1xuXG4vLyBFeGl0IGVhcmx5IGlmIHdlJ3JlIG5vdCBydW5uaW5nIGluIGEgYnJvd3Nlci5cbmlmICh0eXBlb2Ygd2luZG93ICE9PSAnb2JqZWN0Jykge1xuICByZXR1cm47XG59XG5cbi8vIEV4aXQgZWFybHkgaWYgYWxsIEludGVyc2VjdGlvbk9ic2VydmVyIGFuZCBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5XG4vLyBmZWF0dXJlcyBhcmUgbmF0aXZlbHkgc3VwcG9ydGVkLlxuaWYgKCdJbnRlcnNlY3Rpb25PYnNlcnZlcicgaW4gd2luZG93ICYmXG4gICAgJ0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnknIGluIHdpbmRvdyAmJlxuICAgICdpbnRlcnNlY3Rpb25SYXRpbycgaW4gd2luZG93LkludGVyc2VjdGlvbk9ic2VydmVyRW50cnkucHJvdG90eXBlKSB7XG5cbiAgLy8gTWluaW1hbCBwb2x5ZmlsbCBmb3IgRWRnZSAxNSdzIGxhY2sgb2YgYGlzSW50ZXJzZWN0aW5nYFxuICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS93M2MvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIvaXNzdWVzLzIxMVxuICBpZiAoISgnaXNJbnRlcnNlY3RpbmcnIGluIHdpbmRvdy5JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LnByb3RvdHlwZSkpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LkludGVyc2VjdGlvbk9ic2VydmVyRW50cnkucHJvdG90eXBlLFxuICAgICAgJ2lzSW50ZXJzZWN0aW5nJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVyc2VjdGlvblJhdGlvID4gMDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm47XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZW1iZWRkaW5nIGZyYW1lIGVsZW1lbnQsIGlmIGFueS5cbiAqIEBwYXJhbSB7IURvY3VtZW50fSBkb2NcbiAqIEByZXR1cm4geyFFbGVtZW50fVxuICovXG5mdW5jdGlvbiBnZXRGcmFtZUVsZW1lbnQoZG9jKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGRvYy5kZWZhdWx0VmlldyAmJiBkb2MuZGVmYXVsdFZpZXcuZnJhbWVFbGVtZW50IHx8IG51bGw7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBJZ25vcmUgdGhlIGVycm9yLlxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogQSBsb2NhbCByZWZlcmVuY2UgdG8gdGhlIHJvb3QgZG9jdW1lbnQuXG4gKi9cbnZhciBkb2N1bWVudCA9IChmdW5jdGlvbihzdGFydERvYykge1xuICB2YXIgZG9jID0gc3RhcnREb2M7XG4gIHZhciBmcmFtZSA9IGdldEZyYW1lRWxlbWVudChkb2MpO1xuICB3aGlsZSAoZnJhbWUpIHtcbiAgICBkb2MgPSBmcmFtZS5vd25lckRvY3VtZW50O1xuICAgIGZyYW1lID0gZ2V0RnJhbWVFbGVtZW50KGRvYyk7XG4gIH1cbiAgcmV0dXJuIGRvYztcbn0pKHdpbmRvdy5kb2N1bWVudCk7XG5cbi8qKlxuICogQW4gSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgcmVnaXN0cnkuIFRoaXMgcmVnaXN0cnkgZXhpc3RzIHRvIGhvbGQgYSBzdHJvbmdcbiAqIHJlZmVyZW5jZSB0byBJbnRlcnNlY3Rpb25PYnNlcnZlciBpbnN0YW5jZXMgY3VycmVudGx5IG9ic2VydmluZyBhIHRhcmdldFxuICogZWxlbWVudC4gV2l0aG91dCB0aGlzIHJlZ2lzdHJ5LCBpbnN0YW5jZXMgd2l0aG91dCBhbm90aGVyIHJlZmVyZW5jZSBtYXkgYmVcbiAqIGdhcmJhZ2UgY29sbGVjdGVkLlxuICovXG52YXIgcmVnaXN0cnkgPSBbXTtcblxuLyoqXG4gKiBUaGUgc2lnbmFsIHVwZGF0ZXIgZm9yIGNyb3NzLW9yaWdpbiBpbnRlcnNlY3Rpb24uIFdoZW4gbm90IG51bGwsIGl0IG1lYW5zXG4gKiB0aGF0IHRoZSBwb2x5ZmlsbCBpcyBjb25maWd1cmVkIHRvIHdvcmsgaW4gYSBjcm9zcy1vcmlnaW4gbW9kZS5cbiAqIEB0eXBlIHtmdW5jdGlvbihET01SZWN0fENsaWVudFJlY3QsIERPTVJlY3R8Q2xpZW50UmVjdCl9XG4gKi9cbnZhciBjcm9zc09yaWdpblVwZGF0ZXIgPSBudWxsO1xuXG4vKipcbiAqIFRoZSBjdXJyZW50IGNyb3NzLW9yaWdpbiBpbnRlcnNlY3Rpb24uIE9ubHkgdXNlZCBpbiB0aGUgY3Jvc3Mtb3JpZ2luIG1vZGUuXG4gKiBAdHlwZSB7RE9NUmVjdHxDbGllbnRSZWN0fVxuICovXG52YXIgY3Jvc3NPcmlnaW5SZWN0ID0gbnVsbDtcblxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGdsb2JhbCBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5IGNvbnN0cnVjdG9yLlxuICogaHR0cHM6Ly93M2MuZ2l0aHViLmlvL0ludGVyc2VjdGlvbk9ic2VydmVyLyNpbnRlcnNlY3Rpb24tb2JzZXJ2ZXItZW50cnlcbiAqIEBwYXJhbSB7T2JqZWN0fSBlbnRyeSBBIGRpY3Rpb25hcnkgb2YgaW5zdGFuY2UgcHJvcGVydGllcy5cbiAqIEBjb25zdHJ1Y3RvclxuICovXG5mdW5jdGlvbiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5KGVudHJ5KSB7XG4gIHRoaXMudGltZSA9IGVudHJ5LnRpbWU7XG4gIHRoaXMudGFyZ2V0ID0gZW50cnkudGFyZ2V0O1xuICB0aGlzLnJvb3RCb3VuZHMgPSBlbnN1cmVET01SZWN0KGVudHJ5LnJvb3RCb3VuZHMpO1xuICB0aGlzLmJvdW5kaW5nQ2xpZW50UmVjdCA9IGVuc3VyZURPTVJlY3QoZW50cnkuYm91bmRpbmdDbGllbnRSZWN0KTtcbiAgdGhpcy5pbnRlcnNlY3Rpb25SZWN0ID0gZW5zdXJlRE9NUmVjdChlbnRyeS5pbnRlcnNlY3Rpb25SZWN0IHx8IGdldEVtcHR5UmVjdCgpKTtcbiAgdGhpcy5pc0ludGVyc2VjdGluZyA9ICEhZW50cnkuaW50ZXJzZWN0aW9uUmVjdDtcblxuICAvLyBDYWxjdWxhdGVzIHRoZSBpbnRlcnNlY3Rpb24gcmF0aW8uXG4gIHZhciB0YXJnZXRSZWN0ID0gdGhpcy5ib3VuZGluZ0NsaWVudFJlY3Q7XG4gIHZhciB0YXJnZXRBcmVhID0gdGFyZ2V0UmVjdC53aWR0aCAqIHRhcmdldFJlY3QuaGVpZ2h0O1xuICB2YXIgaW50ZXJzZWN0aW9uUmVjdCA9IHRoaXMuaW50ZXJzZWN0aW9uUmVjdDtcbiAgdmFyIGludGVyc2VjdGlvbkFyZWEgPSBpbnRlcnNlY3Rpb25SZWN0LndpZHRoICogaW50ZXJzZWN0aW9uUmVjdC5oZWlnaHQ7XG5cbiAgLy8gU2V0cyBpbnRlcnNlY3Rpb24gcmF0aW8uXG4gIGlmICh0YXJnZXRBcmVhKSB7XG4gICAgLy8gUm91bmQgdGhlIGludGVyc2VjdGlvbiByYXRpbyB0byBhdm9pZCBmbG9hdGluZyBwb2ludCBtYXRoIGlzc3VlczpcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdzNjL0ludGVyc2VjdGlvbk9ic2VydmVyL2lzc3Vlcy8zMjRcbiAgICB0aGlzLmludGVyc2VjdGlvblJhdGlvID0gTnVtYmVyKChpbnRlcnNlY3Rpb25BcmVhIC8gdGFyZ2V0QXJlYSkudG9GaXhlZCg0KSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gSWYgYXJlYSBpcyB6ZXJvIGFuZCBpcyBpbnRlcnNlY3RpbmcsIHNldHMgdG8gMSwgb3RoZXJ3aXNlIHRvIDBcbiAgICB0aGlzLmludGVyc2VjdGlvblJhdGlvID0gdGhpcy5pc0ludGVyc2VjdGluZyA/IDEgOiAwO1xuICB9XG59XG5cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBnbG9iYWwgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgY29uc3RydWN0b3IuXG4gKiBodHRwczovL3czYy5naXRodWIuaW8vSW50ZXJzZWN0aW9uT2JzZXJ2ZXIvI2ludGVyc2VjdGlvbi1vYnNlcnZlci1pbnRlcmZhY2VcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0byBiZSBpbnZva2VkIGFmdGVyIGludGVyc2VjdGlvblxuICogICAgIGNoYW5nZXMgaGF2ZSBxdWV1ZWQuIFRoZSBmdW5jdGlvbiBpcyBub3QgaW52b2tlZCBpZiB0aGUgcXVldWUgaGFzXG4gKiAgICAgYmVlbiBlbXB0aWVkIGJ5IGNhbGxpbmcgdGhlIGB0YWtlUmVjb3Jkc2AgbWV0aG9kLlxuICogQHBhcmFtIHtPYmplY3Q9fSBvcHRfb3B0aW9ucyBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZnVuY3Rpb24gSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoY2FsbGJhY2ssIG9wdF9vcHRpb25zKSB7XG5cbiAgdmFyIG9wdGlvbnMgPSBvcHRfb3B0aW9ucyB8fCB7fTtcblxuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMucm9vdCAmJiBvcHRpb25zLnJvb3Qubm9kZVR5cGUgIT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncm9vdCBtdXN0IGJlIGFuIEVsZW1lbnQnKTtcbiAgfVxuXG4gIC8vIEJpbmRzIGFuZCB0aHJvdHRsZXMgYHRoaXMuX2NoZWNrRm9ySW50ZXJzZWN0aW9uc2AuXG4gIHRoaXMuX2NoZWNrRm9ySW50ZXJzZWN0aW9ucyA9IHRocm90dGxlKFxuICAgICAgdGhpcy5fY2hlY2tGb3JJbnRlcnNlY3Rpb25zLmJpbmQodGhpcyksIHRoaXMuVEhST1RUTEVfVElNRU9VVCk7XG5cbiAgLy8gUHJpdmF0ZSBwcm9wZXJ0aWVzLlxuICB0aGlzLl9jYWxsYmFjayA9IGNhbGxiYWNrO1xuICB0aGlzLl9vYnNlcnZhdGlvblRhcmdldHMgPSBbXTtcbiAgdGhpcy5fcXVldWVkRW50cmllcyA9IFtdO1xuICB0aGlzLl9yb290TWFyZ2luVmFsdWVzID0gdGhpcy5fcGFyc2VSb290TWFyZ2luKG9wdGlvbnMucm9vdE1hcmdpbik7XG5cbiAgLy8gUHVibGljIHByb3BlcnRpZXMuXG4gIHRoaXMudGhyZXNob2xkcyA9IHRoaXMuX2luaXRUaHJlc2hvbGRzKG9wdGlvbnMudGhyZXNob2xkKTtcbiAgdGhpcy5yb290ID0gb3B0aW9ucy5yb290IHx8IG51bGw7XG4gIHRoaXMucm9vdE1hcmdpbiA9IHRoaXMuX3Jvb3RNYXJnaW5WYWx1ZXMubWFwKGZ1bmN0aW9uKG1hcmdpbikge1xuICAgIHJldHVybiBtYXJnaW4udmFsdWUgKyBtYXJnaW4udW5pdDtcbiAgfSkuam9pbignICcpO1xuXG4gIC8qKiBAcHJpdmF0ZSBAY29uc3QgeyFBcnJheTwhRG9jdW1lbnQ+fSAqL1xuICB0aGlzLl9tb25pdG9yaW5nRG9jdW1lbnRzID0gW107XG4gIC8qKiBAcHJpdmF0ZSBAY29uc3QgeyFBcnJheTxmdW5jdGlvbigpPn0gKi9cbiAgdGhpcy5fbW9uaXRvcmluZ1Vuc3Vic2NyaWJlcyA9IFtdO1xufVxuXG5cbi8qKlxuICogVGhlIG1pbmltdW0gaW50ZXJ2YWwgd2l0aGluIHdoaWNoIHRoZSBkb2N1bWVudCB3aWxsIGJlIGNoZWNrZWQgZm9yXG4gKiBpbnRlcnNlY3Rpb24gY2hhbmdlcy5cbiAqL1xuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIucHJvdG90eXBlLlRIUk9UVExFX1RJTUVPVVQgPSAxMDA7XG5cblxuLyoqXG4gKiBUaGUgZnJlcXVlbmN5IGluIHdoaWNoIHRoZSBwb2x5ZmlsbCBwb2xscyBmb3IgaW50ZXJzZWN0aW9uIGNoYW5nZXMuXG4gKiB0aGlzIGNhbiBiZSB1cGRhdGVkIG9uIGEgcGVyIGluc3RhbmNlIGJhc2lzIGFuZCBtdXN0IGJlIHNldCBwcmlvciB0b1xuICogY2FsbGluZyBgb2JzZXJ2ZWAgb24gdGhlIGZpcnN0IHRhcmdldC5cbiAqL1xuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIucHJvdG90eXBlLlBPTExfSU5URVJWQUwgPSBudWxsO1xuXG4vKipcbiAqIFVzZSBhIG11dGF0aW9uIG9ic2VydmVyIG9uIHRoZSByb290IGVsZW1lbnRcbiAqIHRvIGRldGVjdCBpbnRlcnNlY3Rpb24gY2hhbmdlcy5cbiAqL1xuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIucHJvdG90eXBlLlVTRV9NVVRBVElPTl9PQlNFUlZFUiA9IHRydWU7XG5cblxuLyoqXG4gKiBTZXRzIHVwIHRoZSBwb2x5ZmlsbCBpbiB0aGUgY3Jvc3Mtb3JpZ2luIG1vZGUuIFRoZSByZXN1bHQgaXMgdGhlXG4gKiB1cGRhdGVyIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0d28gYXJndW1lbnRzOiBgYm91bmRpbmdDbGllbnRSZWN0YCBhbmRcbiAqIGBpbnRlcnNlY3Rpb25SZWN0YCAtIGp1c3QgYXMgdGhlc2UgZmllbGRzIHdvdWxkIGJlIGF2YWlsYWJsZSB0byB0aGVcbiAqIHBhcmVudCB2aWEgYEludGVyc2VjdGlvbk9ic2VydmVyRW50cnlgLiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWRcbiAqIGVhY2ggdGltZSB0aGUgaWZyYW1lIHJlY2VpdmVzIGludGVyc2VjdGlvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBwYXJlbnRcbiAqIHdpbmRvdywgZS5nLiB2aWEgbWVzc2FnaW5nLlxuICogQHJldHVybiB7ZnVuY3Rpb24oRE9NUmVjdHxDbGllbnRSZWN0LCBET01SZWN0fENsaWVudFJlY3QpfVxuICovXG5JbnRlcnNlY3Rpb25PYnNlcnZlci5fc2V0dXBDcm9zc09yaWdpblVwZGF0ZXIgPSBmdW5jdGlvbigpIHtcbiAgaWYgKCFjcm9zc09yaWdpblVwZGF0ZXIpIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge0RPTVJlY3R8Q2xpZW50UmVjdH0gYm91bmRpbmdDbGllbnRSZWN0XG4gICAgICogQHBhcmFtIHtET01SZWN0fENsaWVudFJlY3R9IGludGVyc2VjdGlvblJlY3RcbiAgICAgKi9cbiAgICBjcm9zc09yaWdpblVwZGF0ZXIgPSBmdW5jdGlvbihib3VuZGluZ0NsaWVudFJlY3QsIGludGVyc2VjdGlvblJlY3QpIHtcbiAgICAgIGlmICghYm91bmRpbmdDbGllbnRSZWN0IHx8ICFpbnRlcnNlY3Rpb25SZWN0KSB7XG4gICAgICAgIGNyb3NzT3JpZ2luUmVjdCA9IGdldEVtcHR5UmVjdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3Jvc3NPcmlnaW5SZWN0ID0gY29udmVydEZyb21QYXJlbnRSZWN0KGJvdW5kaW5nQ2xpZW50UmVjdCwgaW50ZXJzZWN0aW9uUmVjdCk7XG4gICAgICB9XG4gICAgICByZWdpc3RyeS5mb3JFYWNoKGZ1bmN0aW9uKG9ic2VydmVyKSB7XG4gICAgICAgIG9ic2VydmVyLl9jaGVja0ZvckludGVyc2VjdGlvbnMoKTtcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGNyb3NzT3JpZ2luVXBkYXRlcjtcbn07XG5cblxuLyoqXG4gKiBSZXNldHMgdGhlIGNyb3NzLW9yaWdpbiBtb2RlLlxuICovXG5JbnRlcnNlY3Rpb25PYnNlcnZlci5fcmVzZXRDcm9zc09yaWdpblVwZGF0ZXIgPSBmdW5jdGlvbigpIHtcbiAgY3Jvc3NPcmlnaW5VcGRhdGVyID0gbnVsbDtcbiAgY3Jvc3NPcmlnaW5SZWN0ID0gbnVsbDtcbn07XG5cblxuLyoqXG4gKiBTdGFydHMgb2JzZXJ2aW5nIGEgdGFyZ2V0IGVsZW1lbnQgZm9yIGludGVyc2VjdGlvbiBjaGFuZ2VzIGJhc2VkIG9uXG4gKiB0aGUgdGhyZXNob2xkcyB2YWx1ZXMuXG4gKiBAcGFyYW0ge0VsZW1lbnR9IHRhcmdldCBUaGUgRE9NIGVsZW1lbnQgdG8gb2JzZXJ2ZS5cbiAqL1xuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIucHJvdG90eXBlLm9ic2VydmUgPSBmdW5jdGlvbih0YXJnZXQpIHtcbiAgdmFyIGlzVGFyZ2V0QWxyZWFkeU9ic2VydmVkID0gdGhpcy5fb2JzZXJ2YXRpb25UYXJnZXRzLnNvbWUoZnVuY3Rpb24oaXRlbSkge1xuICAgIHJldHVybiBpdGVtLmVsZW1lbnQgPT0gdGFyZ2V0O1xuICB9KTtcblxuICBpZiAoaXNUYXJnZXRBbHJlYWR5T2JzZXJ2ZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoISh0YXJnZXQgJiYgdGFyZ2V0Lm5vZGVUeXBlID09IDEpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd0YXJnZXQgbXVzdCBiZSBhbiBFbGVtZW50Jyk7XG4gIH1cblxuICB0aGlzLl9yZWdpc3Rlckluc3RhbmNlKCk7XG4gIHRoaXMuX29ic2VydmF0aW9uVGFyZ2V0cy5wdXNoKHtlbGVtZW50OiB0YXJnZXQsIGVudHJ5OiBudWxsfSk7XG4gIHRoaXMuX21vbml0b3JJbnRlcnNlY3Rpb25zKHRhcmdldC5vd25lckRvY3VtZW50KTtcbiAgdGhpcy5fY2hlY2tGb3JJbnRlcnNlY3Rpb25zKCk7XG59O1xuXG5cbi8qKlxuICogU3RvcHMgb2JzZXJ2aW5nIGEgdGFyZ2V0IGVsZW1lbnQgZm9yIGludGVyc2VjdGlvbiBjaGFuZ2VzLlxuICogQHBhcmFtIHtFbGVtZW50fSB0YXJnZXQgVGhlIERPTSBlbGVtZW50IHRvIG9ic2VydmUuXG4gKi9cbkludGVyc2VjdGlvbk9ic2VydmVyLnByb3RvdHlwZS51bm9ic2VydmUgPSBmdW5jdGlvbih0YXJnZXQpIHtcbiAgdGhpcy5fb2JzZXJ2YXRpb25UYXJnZXRzID1cbiAgICAgIHRoaXMuX29ic2VydmF0aW9uVGFyZ2V0cy5maWx0ZXIoZnVuY3Rpb24oaXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbS5lbGVtZW50ICE9IHRhcmdldDtcbiAgICAgIH0pO1xuICB0aGlzLl91bm1vbml0b3JJbnRlcnNlY3Rpb25zKHRhcmdldC5vd25lckRvY3VtZW50KTtcbiAgaWYgKHRoaXMuX29ic2VydmF0aW9uVGFyZ2V0cy5sZW5ndGggPT0gMCkge1xuICAgIHRoaXMuX3VucmVnaXN0ZXJJbnN0YW5jZSgpO1xuICB9XG59O1xuXG5cbi8qKlxuICogU3RvcHMgb2JzZXJ2aW5nIGFsbCB0YXJnZXQgZWxlbWVudHMgZm9yIGludGVyc2VjdGlvbiBjaGFuZ2VzLlxuICovXG5JbnRlcnNlY3Rpb25PYnNlcnZlci5wcm90b3R5cGUuZGlzY29ubmVjdCA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLl9vYnNlcnZhdGlvblRhcmdldHMgPSBbXTtcbiAgdGhpcy5fdW5tb25pdG9yQWxsSW50ZXJzZWN0aW9ucygpO1xuICB0aGlzLl91bnJlZ2lzdGVySW5zdGFuY2UoKTtcbn07XG5cblxuLyoqXG4gKiBSZXR1cm5zIGFueSBxdWV1ZSBlbnRyaWVzIHRoYXQgaGF2ZSBub3QgeWV0IGJlZW4gcmVwb3J0ZWQgdG8gdGhlXG4gKiBjYWxsYmFjayBhbmQgY2xlYXJzIHRoZSBxdWV1ZS4gVGhpcyBjYW4gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZVxuICogY2FsbGJhY2sgdG8gb2J0YWluIHRoZSBhYnNvbHV0ZSBtb3N0IHVwLXRvLWRhdGUgaW50ZXJzZWN0aW9uIGluZm9ybWF0aW9uLlxuICogQHJldHVybiB7QXJyYXl9IFRoZSBjdXJyZW50bHkgcXVldWVkIGVudHJpZXMuXG4gKi9cbkludGVyc2VjdGlvbk9ic2VydmVyLnByb3RvdHlwZS50YWtlUmVjb3JkcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcmVjb3JkcyA9IHRoaXMuX3F1ZXVlZEVudHJpZXMuc2xpY2UoKTtcbiAgdGhpcy5fcXVldWVkRW50cmllcyA9IFtdO1xuICByZXR1cm4gcmVjb3Jkcztcbn07XG5cblxuLyoqXG4gKiBBY2NlcHRzIHRoZSB0aHJlc2hvbGQgdmFsdWUgZnJvbSB0aGUgdXNlciBjb25maWd1cmF0aW9uIG9iamVjdCBhbmRcbiAqIHJldHVybnMgYSBzb3J0ZWQgYXJyYXkgb2YgdW5pcXVlIHRocmVzaG9sZCB2YWx1ZXMuIElmIGEgdmFsdWUgaXMgbm90XG4gKiBiZXR3ZWVuIDAgYW5kIDEgYW5kIGVycm9yIGlzIHRocm93bi5cbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fG51bWJlcj19IG9wdF90aHJlc2hvbGQgQW4gb3B0aW9uYWwgdGhyZXNob2xkIHZhbHVlIG9yXG4gKiAgICAgYSBsaXN0IG9mIHRocmVzaG9sZCB2YWx1ZXMsIGRlZmF1bHRpbmcgdG8gWzBdLlxuICogQHJldHVybiB7QXJyYXl9IEEgc29ydGVkIGxpc3Qgb2YgdW5pcXVlIGFuZCB2YWxpZCB0aHJlc2hvbGQgdmFsdWVzLlxuICovXG5JbnRlcnNlY3Rpb25PYnNlcnZlci5wcm90b3R5cGUuX2luaXRUaHJlc2hvbGRzID0gZnVuY3Rpb24ob3B0X3RocmVzaG9sZCkge1xuICB2YXIgdGhyZXNob2xkID0gb3B0X3RocmVzaG9sZCB8fCBbMF07XG4gIGlmICghQXJyYXkuaXNBcnJheSh0aHJlc2hvbGQpKSB0aHJlc2hvbGQgPSBbdGhyZXNob2xkXTtcblxuICByZXR1cm4gdGhyZXNob2xkLnNvcnQoKS5maWx0ZXIoZnVuY3Rpb24odCwgaSwgYSkge1xuICAgIGlmICh0eXBlb2YgdCAhPSAnbnVtYmVyJyB8fCBpc05hTih0KSB8fCB0IDwgMCB8fCB0ID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0aHJlc2hvbGQgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEgaW5jbHVzaXZlbHknKTtcbiAgICB9XG4gICAgcmV0dXJuIHQgIT09IGFbaSAtIDFdO1xuICB9KTtcbn07XG5cblxuLyoqXG4gKiBBY2NlcHRzIHRoZSByb290TWFyZ2luIHZhbHVlIGZyb20gdGhlIHVzZXIgY29uZmlndXJhdGlvbiBvYmplY3RcbiAqIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHRoZSBmb3VyIG1hcmdpbiB2YWx1ZXMgYXMgYW4gb2JqZWN0IGNvbnRhaW5pbmdcbiAqIHRoZSB2YWx1ZSBhbmQgdW5pdCBwcm9wZXJ0aWVzLiBJZiBhbnkgb2YgdGhlIHZhbHVlcyBhcmUgbm90IHByb3Blcmx5XG4gKiBmb3JtYXR0ZWQgb3IgdXNlIGEgdW5pdCBvdGhlciB0aGFuIHB4IG9yICUsIGFuZCBlcnJvciBpcyB0aHJvd24uXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmc9fSBvcHRfcm9vdE1hcmdpbiBBbiBvcHRpb25hbCByb290TWFyZ2luIHZhbHVlLFxuICogICAgIGRlZmF1bHRpbmcgdG8gJzBweCcuXG4gKiBAcmV0dXJuIHtBcnJheTxPYmplY3Q+fSBBbiBhcnJheSBvZiBtYXJnaW4gb2JqZWN0cyB3aXRoIHRoZSBrZXlzXG4gKiAgICAgdmFsdWUgYW5kIHVuaXQuXG4gKi9cbkludGVyc2VjdGlvbk9ic2VydmVyLnByb3RvdHlwZS5fcGFyc2VSb290TWFyZ2luID0gZnVuY3Rpb24ob3B0X3Jvb3RNYXJnaW4pIHtcbiAgdmFyIG1hcmdpblN0cmluZyA9IG9wdF9yb290TWFyZ2luIHx8ICcwcHgnO1xuICB2YXIgbWFyZ2lucyA9IG1hcmdpblN0cmluZy5zcGxpdCgvXFxzKy8pLm1hcChmdW5jdGlvbihtYXJnaW4pIHtcbiAgICB2YXIgcGFydHMgPSAvXigtP1xcZCpcXC4/XFxkKykocHh8JSkkLy5leGVjKG1hcmdpbik7XG4gICAgaWYgKCFwYXJ0cykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdyb290TWFyZ2luIG11c3QgYmUgc3BlY2lmaWVkIGluIHBpeGVscyBvciBwZXJjZW50Jyk7XG4gICAgfVxuICAgIHJldHVybiB7dmFsdWU6IHBhcnNlRmxvYXQocGFydHNbMV0pLCB1bml0OiBwYXJ0c1syXX07XG4gIH0pO1xuXG4gIC8vIEhhbmRsZXMgc2hvcnRoYW5kLlxuICBtYXJnaW5zWzFdID0gbWFyZ2luc1sxXSB8fCBtYXJnaW5zWzBdO1xuICBtYXJnaW5zWzJdID0gbWFyZ2luc1syXSB8fCBtYXJnaW5zWzBdO1xuICBtYXJnaW5zWzNdID0gbWFyZ2luc1szXSB8fCBtYXJnaW5zWzFdO1xuXG4gIHJldHVybiBtYXJnaW5zO1xufTtcblxuXG4vKipcbiAqIFN0YXJ0cyBwb2xsaW5nIGZvciBpbnRlcnNlY3Rpb24gY2hhbmdlcyBpZiB0aGUgcG9sbGluZyBpcyBub3QgYWxyZWFkeVxuICogaGFwcGVuaW5nLCBhbmQgaWYgdGhlIHBhZ2UncyB2aXNpYmlsaXR5IHN0YXRlIGlzIHZpc2libGUuXG4gKiBAcGFyYW0geyFEb2N1bWVudH0gZG9jXG4gKiBAcHJpdmF0ZVxuICovXG5JbnRlcnNlY3Rpb25PYnNlcnZlci5wcm90b3R5cGUuX21vbml0b3JJbnRlcnNlY3Rpb25zID0gZnVuY3Rpb24oZG9jKSB7XG4gIHZhciB3aW4gPSBkb2MuZGVmYXVsdFZpZXc7XG4gIGlmICghd2luKSB7XG4gICAgLy8gQWxyZWFkeSBkZXN0cm95ZWQuXG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICh0aGlzLl9tb25pdG9yaW5nRG9jdW1lbnRzLmluZGV4T2YoZG9jKSAhPSAtMSkge1xuICAgIC8vIEFscmVhZHkgbW9uaXRvcmluZy5cbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBQcml2YXRlIHN0YXRlIGZvciBtb25pdG9yaW5nLlxuICB2YXIgY2FsbGJhY2sgPSB0aGlzLl9jaGVja0ZvckludGVyc2VjdGlvbnM7XG4gIHZhciBtb25pdG9yaW5nSW50ZXJ2YWwgPSBudWxsO1xuICB2YXIgZG9tT2JzZXJ2ZXIgPSBudWxsO1xuXG4gIC8vIElmIGEgcG9sbCBpbnRlcnZhbCBpcyBzZXQsIHVzZSBwb2xsaW5nIGluc3RlYWQgb2YgbGlzdGVuaW5nIHRvXG4gIC8vIHJlc2l6ZSBhbmQgc2Nyb2xsIGV2ZW50cyBvciBET00gbXV0YXRpb25zLlxuICBpZiAodGhpcy5QT0xMX0lOVEVSVkFMKSB7XG4gICAgbW9uaXRvcmluZ0ludGVydmFsID0gd2luLnNldEludGVydmFsKGNhbGxiYWNrLCB0aGlzLlBPTExfSU5URVJWQUwpO1xuICB9IGVsc2Uge1xuICAgIGFkZEV2ZW50KHdpbiwgJ3Jlc2l6ZScsIGNhbGxiYWNrLCB0cnVlKTtcbiAgICBhZGRFdmVudChkb2MsICdzY3JvbGwnLCBjYWxsYmFjaywgdHJ1ZSk7XG4gICAgaWYgKHRoaXMuVVNFX01VVEFUSU9OX09CU0VSVkVSICYmICdNdXRhdGlvbk9ic2VydmVyJyBpbiB3aW4pIHtcbiAgICAgIGRvbU9ic2VydmVyID0gbmV3IHdpbi5NdXRhdGlvbk9ic2VydmVyKGNhbGxiYWNrKTtcbiAgICAgIGRvbU9ic2VydmVyLm9ic2VydmUoZG9jLCB7XG4gICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgICAgY2hhcmFjdGVyRGF0YTogdHJ1ZSxcbiAgICAgICAgc3VidHJlZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdGhpcy5fbW9uaXRvcmluZ0RvY3VtZW50cy5wdXNoKGRvYyk7XG4gIHRoaXMuX21vbml0b3JpbmdVbnN1YnNjcmliZXMucHVzaChmdW5jdGlvbigpIHtcbiAgICAvLyBHZXQgdGhlIHdpbmRvdyBvYmplY3QgYWdhaW4uIFdoZW4gYSBmcmllbmRseSBpZnJhbWUgaXMgZGVzdHJveWVkLCBpdFxuICAgIC8vIHdpbGwgYmUgbnVsbC5cbiAgICB2YXIgd2luID0gZG9jLmRlZmF1bHRWaWV3O1xuXG4gICAgaWYgKHdpbikge1xuICAgICAgaWYgKG1vbml0b3JpbmdJbnRlcnZhbCkge1xuICAgICAgICB3aW4uY2xlYXJJbnRlcnZhbChtb25pdG9yaW5nSW50ZXJ2YWwpO1xuICAgICAgfVxuICAgICAgcmVtb3ZlRXZlbnQod2luLCAncmVzaXplJywgY2FsbGJhY2ssIHRydWUpO1xuICAgIH1cblxuICAgIHJlbW92ZUV2ZW50KGRvYywgJ3Njcm9sbCcsIGNhbGxiYWNrLCB0cnVlKTtcbiAgICBpZiAoZG9tT2JzZXJ2ZXIpIHtcbiAgICAgIGRvbU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIEFsc28gbW9uaXRvciB0aGUgcGFyZW50LlxuICBpZiAoZG9jICE9ICh0aGlzLnJvb3QgJiYgdGhpcy5yb290Lm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQpKSB7XG4gICAgdmFyIGZyYW1lID0gZ2V0RnJhbWVFbGVtZW50KGRvYyk7XG4gICAgaWYgKGZyYW1lKSB7XG4gICAgICB0aGlzLl9tb25pdG9ySW50ZXJzZWN0aW9ucyhmcmFtZS5vd25lckRvY3VtZW50KTtcbiAgICB9XG4gIH1cbn07XG5cblxuLyoqXG4gKiBTdG9wcyBwb2xsaW5nIGZvciBpbnRlcnNlY3Rpb24gY2hhbmdlcy5cbiAqIEBwYXJhbSB7IURvY3VtZW50fSBkb2NcbiAqIEBwcml2YXRlXG4gKi9cbkludGVyc2VjdGlvbk9ic2VydmVyLnByb3RvdHlwZS5fdW5tb25pdG9ySW50ZXJzZWN0aW9ucyA9IGZ1bmN0aW9uKGRvYykge1xuICB2YXIgaW5kZXggPSB0aGlzLl9tb25pdG9yaW5nRG9jdW1lbnRzLmluZGV4T2YoZG9jKTtcbiAgaWYgKGluZGV4ID09IC0xKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHJvb3REb2MgPSAodGhpcy5yb290ICYmIHRoaXMucm9vdC5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50KTtcblxuICAvLyBDaGVjayBpZiBhbnkgZGVwZW5kZW50IHRhcmdldHMgYXJlIHN0aWxsIHJlbWFpbmluZy5cbiAgdmFyIGhhc0RlcGVuZGVudFRhcmdldHMgPVxuICAgICAgdGhpcy5fb2JzZXJ2YXRpb25UYXJnZXRzLnNvbWUoZnVuY3Rpb24oaXRlbSkge1xuICAgICAgICB2YXIgaXRlbURvYyA9IGl0ZW0uZWxlbWVudC5vd25lckRvY3VtZW50O1xuICAgICAgICAvLyBUYXJnZXQgaXMgaW4gdGhpcyBjb250ZXh0LlxuICAgICAgICBpZiAoaXRlbURvYyA9PSBkb2MpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUYXJnZXQgaXMgbmVzdGVkIGluIHRoaXMgY29udGV4dC5cbiAgICAgICAgd2hpbGUgKGl0ZW1Eb2MgJiYgaXRlbURvYyAhPSByb290RG9jKSB7XG4gICAgICAgICAgdmFyIGZyYW1lID0gZ2V0RnJhbWVFbGVtZW50KGl0ZW1Eb2MpO1xuICAgICAgICAgIGl0ZW1Eb2MgPSBmcmFtZSAmJiBmcmFtZS5vd25lckRvY3VtZW50O1xuICAgICAgICAgIGlmIChpdGVtRG9jID09IGRvYykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICBpZiAoaGFzRGVwZW5kZW50VGFyZ2V0cykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIFVuc3Vic2NyaWJlLlxuICB2YXIgdW5zdWJzY3JpYmUgPSB0aGlzLl9tb25pdG9yaW5nVW5zdWJzY3JpYmVzW2luZGV4XTtcbiAgdGhpcy5fbW9uaXRvcmluZ0RvY3VtZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xuICB0aGlzLl9tb25pdG9yaW5nVW5zdWJzY3JpYmVzLnNwbGljZShpbmRleCwgMSk7XG4gIHVuc3Vic2NyaWJlKCk7XG5cbiAgLy8gQWxzbyB1bm1vbml0b3IgdGhlIHBhcmVudC5cbiAgaWYgKGRvYyAhPSByb290RG9jKSB7XG4gICAgdmFyIGZyYW1lID0gZ2V0RnJhbWVFbGVtZW50KGRvYyk7XG4gICAgaWYgKGZyYW1lKSB7XG4gICAgICB0aGlzLl91bm1vbml0b3JJbnRlcnNlY3Rpb25zKGZyYW1lLm93bmVyRG9jdW1lbnQpO1xuICAgIH1cbiAgfVxufTtcblxuXG4vKipcbiAqIFN0b3BzIHBvbGxpbmcgZm9yIGludGVyc2VjdGlvbiBjaGFuZ2VzLlxuICogQHBhcmFtIHshRG9jdW1lbnR9IGRvY1xuICogQHByaXZhdGVcbiAqL1xuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIucHJvdG90eXBlLl91bm1vbml0b3JBbGxJbnRlcnNlY3Rpb25zID0gZnVuY3Rpb24oKSB7XG4gIHZhciB1bnN1YnNjcmliZXMgPSB0aGlzLl9tb25pdG9yaW5nVW5zdWJzY3JpYmVzLnNsaWNlKDApO1xuICB0aGlzLl9tb25pdG9yaW5nRG9jdW1lbnRzLmxlbmd0aCA9IDA7XG4gIHRoaXMuX21vbml0b3JpbmdVbnN1YnNjcmliZXMubGVuZ3RoID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB1bnN1YnNjcmliZXMubGVuZ3RoOyBpKyspIHtcbiAgICB1bnN1YnNjcmliZXNbaV0oKTtcbiAgfVxufTtcblxuXG4vKipcbiAqIFNjYW5zIGVhY2ggb2JzZXJ2YXRpb24gdGFyZ2V0IGZvciBpbnRlcnNlY3Rpb24gY2hhbmdlcyBhbmQgYWRkcyB0aGVtXG4gKiB0byB0aGUgaW50ZXJuYWwgZW50cmllcyBxdWV1ZS4gSWYgbmV3IGVudHJpZXMgYXJlIGZvdW5kLCBpdFxuICogc2NoZWR1bGVzIHRoZSBjYWxsYmFjayB0byBiZSBpbnZva2VkLlxuICogQHByaXZhdGVcbiAqL1xuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIucHJvdG90eXBlLl9jaGVja0ZvckludGVyc2VjdGlvbnMgPSBmdW5jdGlvbigpIHtcbiAgaWYgKCF0aGlzLnJvb3QgJiYgY3Jvc3NPcmlnaW5VcGRhdGVyICYmICFjcm9zc09yaWdpblJlY3QpIHtcbiAgICAvLyBDcm9zcyBvcmlnaW4gbW9uaXRvcmluZywgYnV0IG5vIGluaXRpYWwgZGF0YSBhdmFpbGFibGUgeWV0LlxuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciByb290SXNJbkRvbSA9IHRoaXMuX3Jvb3RJc0luRG9tKCk7XG4gIHZhciByb290UmVjdCA9IHJvb3RJc0luRG9tID8gdGhpcy5fZ2V0Um9vdFJlY3QoKSA6IGdldEVtcHR5UmVjdCgpO1xuXG4gIHRoaXMuX29ic2VydmF0aW9uVGFyZ2V0cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICB2YXIgdGFyZ2V0ID0gaXRlbS5lbGVtZW50O1xuICAgIHZhciB0YXJnZXRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHRhcmdldCk7XG4gICAgdmFyIHJvb3RDb250YWluc1RhcmdldCA9IHRoaXMuX3Jvb3RDb250YWluc1RhcmdldCh0YXJnZXQpO1xuICAgIHZhciBvbGRFbnRyeSA9IGl0ZW0uZW50cnk7XG4gICAgdmFyIGludGVyc2VjdGlvblJlY3QgPSByb290SXNJbkRvbSAmJiByb290Q29udGFpbnNUYXJnZXQgJiZcbiAgICAgICAgdGhpcy5fY29tcHV0ZVRhcmdldEFuZFJvb3RJbnRlcnNlY3Rpb24odGFyZ2V0LCB0YXJnZXRSZWN0LCByb290UmVjdCk7XG5cbiAgICB2YXIgbmV3RW50cnkgPSBpdGVtLmVudHJ5ID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkoe1xuICAgICAgdGltZTogbm93KCksXG4gICAgICB0YXJnZXQ6IHRhcmdldCxcbiAgICAgIGJvdW5kaW5nQ2xpZW50UmVjdDogdGFyZ2V0UmVjdCxcbiAgICAgIHJvb3RCb3VuZHM6IGNyb3NzT3JpZ2luVXBkYXRlciAmJiAhdGhpcy5yb290ID8gbnVsbCA6IHJvb3RSZWN0LFxuICAgICAgaW50ZXJzZWN0aW9uUmVjdDogaW50ZXJzZWN0aW9uUmVjdFxuICAgIH0pO1xuXG4gICAgaWYgKCFvbGRFbnRyeSkge1xuICAgICAgdGhpcy5fcXVldWVkRW50cmllcy5wdXNoKG5ld0VudHJ5KTtcbiAgICB9IGVsc2UgaWYgKHJvb3RJc0luRG9tICYmIHJvb3RDb250YWluc1RhcmdldCkge1xuICAgICAgLy8gSWYgdGhlIG5ldyBlbnRyeSBpbnRlcnNlY3Rpb24gcmF0aW8gaGFzIGNyb3NzZWQgYW55IG9mIHRoZVxuICAgICAgLy8gdGhyZXNob2xkcywgYWRkIGEgbmV3IGVudHJ5LlxuICAgICAgaWYgKHRoaXMuX2hhc0Nyb3NzZWRUaHJlc2hvbGQob2xkRW50cnksIG5ld0VudHJ5KSkge1xuICAgICAgICB0aGlzLl9xdWV1ZWRFbnRyaWVzLnB1c2gobmV3RW50cnkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiB0aGUgcm9vdCBpcyBub3QgaW4gdGhlIERPTSBvciB0YXJnZXQgaXMgbm90IGNvbnRhaW5lZCB3aXRoaW5cbiAgICAgIC8vIHJvb3QgYnV0IHRoZSBwcmV2aW91cyBlbnRyeSBmb3IgdGhpcyB0YXJnZXQgaGFkIGFuIGludGVyc2VjdGlvbixcbiAgICAgIC8vIGFkZCBhIG5ldyByZWNvcmQgaW5kaWNhdGluZyByZW1vdmFsLlxuICAgICAgaWYgKG9sZEVudHJ5ICYmIG9sZEVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgIHRoaXMuX3F1ZXVlZEVudHJpZXMucHVzaChuZXdFbnRyeSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB0aGlzKTtcblxuICBpZiAodGhpcy5fcXVldWVkRW50cmllcy5sZW5ndGgpIHtcbiAgICB0aGlzLl9jYWxsYmFjayh0aGlzLnRha2VSZWNvcmRzKCksIHRoaXMpO1xuICB9XG59O1xuXG5cbi8qKlxuICogQWNjZXB0cyBhIHRhcmdldCBhbmQgcm9vdCByZWN0IGNvbXB1dGVzIHRoZSBpbnRlcnNlY3Rpb24gYmV0d2VlbiB0aGVuXG4gKiBmb2xsb3dpbmcgdGhlIGFsZ29yaXRobSBpbiB0aGUgc3BlYy5cbiAqIFRPRE8ocGhpbGlwd2FsdG9uKTogYXQgdGhpcyB0aW1lIGNsaXAtcGF0aCBpcyBub3QgY29uc2lkZXJlZC5cbiAqIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9JbnRlcnNlY3Rpb25PYnNlcnZlci8jY2FsY3VsYXRlLWludGVyc2VjdGlvbi1yZWN0LWFsZ29cbiAqIEBwYXJhbSB7RWxlbWVudH0gdGFyZ2V0IFRoZSB0YXJnZXQgRE9NIGVsZW1lbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSB0YXJnZXRSZWN0IFRoZSBib3VuZGluZyByZWN0IG9mIHRoZSB0YXJnZXQuXG4gKiBAcGFyYW0ge09iamVjdH0gcm9vdFJlY3QgVGhlIGJvdW5kaW5nIHJlY3Qgb2YgdGhlIHJvb3QgYWZ0ZXIgYmVpbmdcbiAqICAgICBleHBhbmRlZCBieSB0aGUgcm9vdE1hcmdpbiB2YWx1ZS5cbiAqIEByZXR1cm4gez9PYmplY3R9IFRoZSBmaW5hbCBpbnRlcnNlY3Rpb24gcmVjdCBvYmplY3Qgb3IgdW5kZWZpbmVkIGlmIG5vXG4gKiAgICAgaW50ZXJzZWN0aW9uIGlzIGZvdW5kLlxuICogQHByaXZhdGVcbiAqL1xuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIucHJvdG90eXBlLl9jb21wdXRlVGFyZ2V0QW5kUm9vdEludGVyc2VjdGlvbiA9XG4gICAgZnVuY3Rpb24odGFyZ2V0LCB0YXJnZXRSZWN0LCByb290UmVjdCkge1xuICAvLyBJZiB0aGUgZWxlbWVudCBpc24ndCBkaXNwbGF5ZWQsIGFuIGludGVyc2VjdGlvbiBjYW4ndCBoYXBwZW4uXG4gIGlmICh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0YXJnZXQpLmRpc3BsYXkgPT0gJ25vbmUnKSByZXR1cm47XG5cbiAgdmFyIGludGVyc2VjdGlvblJlY3QgPSB0YXJnZXRSZWN0O1xuICB2YXIgcGFyZW50ID0gZ2V0UGFyZW50Tm9kZSh0YXJnZXQpO1xuICB2YXIgYXRSb290ID0gZmFsc2U7XG5cbiAgd2hpbGUgKCFhdFJvb3QgJiYgcGFyZW50KSB7XG4gICAgdmFyIHBhcmVudFJlY3QgPSBudWxsO1xuICAgIHZhciBwYXJlbnRDb21wdXRlZFN0eWxlID0gcGFyZW50Lm5vZGVUeXBlID09IDEgP1xuICAgICAgICB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnQpIDoge307XG5cbiAgICAvLyBJZiB0aGUgcGFyZW50IGlzbid0IGRpc3BsYXllZCwgYW4gaW50ZXJzZWN0aW9uIGNhbid0IGhhcHBlbi5cbiAgICBpZiAocGFyZW50Q29tcHV0ZWRTdHlsZS5kaXNwbGF5ID09ICdub25lJykgcmV0dXJuIG51bGw7XG5cbiAgICBpZiAocGFyZW50ID09IHRoaXMucm9vdCB8fCBwYXJlbnQubm9kZVR5cGUgPT0gLyogRE9DVU1FTlQgKi8gOSkge1xuICAgICAgYXRSb290ID0gdHJ1ZTtcbiAgICAgIGlmIChwYXJlbnQgPT0gdGhpcy5yb290IHx8IHBhcmVudCA9PSBkb2N1bWVudCkge1xuICAgICAgICBpZiAoY3Jvc3NPcmlnaW5VcGRhdGVyICYmICF0aGlzLnJvb3QpIHtcbiAgICAgICAgICBpZiAoIWNyb3NzT3JpZ2luUmVjdCB8fFxuICAgICAgICAgICAgICBjcm9zc09yaWdpblJlY3Qud2lkdGggPT0gMCAmJiBjcm9zc09yaWdpblJlY3QuaGVpZ2h0ID09IDApIHtcbiAgICAgICAgICAgIC8vIEEgMC1zaXplIGNyb3NzLW9yaWdpbiBpbnRlcnNlY3Rpb24gbWVhbnMgbm8taW50ZXJzZWN0aW9uLlxuICAgICAgICAgICAgcGFyZW50ID0gbnVsbDtcbiAgICAgICAgICAgIHBhcmVudFJlY3QgPSBudWxsO1xuICAgICAgICAgICAgaW50ZXJzZWN0aW9uUmVjdCA9IG51bGw7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhcmVudFJlY3QgPSBjcm9zc09yaWdpblJlY3Q7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhcmVudFJlY3QgPSByb290UmVjdDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBhIGZyYW1lIHRoYXQgY2FuIGJlIG5hdmlnYXRlZCB0by5cbiAgICAgICAgdmFyIGZyYW1lID0gZ2V0UGFyZW50Tm9kZShwYXJlbnQpO1xuICAgICAgICB2YXIgZnJhbWVSZWN0ID0gZnJhbWUgJiYgZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGZyYW1lKTtcbiAgICAgICAgdmFyIGZyYW1lSW50ZXJzZWN0ID1cbiAgICAgICAgICAgIGZyYW1lICYmXG4gICAgICAgICAgICB0aGlzLl9jb21wdXRlVGFyZ2V0QW5kUm9vdEludGVyc2VjdGlvbihmcmFtZSwgZnJhbWVSZWN0LCByb290UmVjdCk7XG4gICAgICAgIGlmIChmcmFtZVJlY3QgJiYgZnJhbWVJbnRlcnNlY3QpIHtcbiAgICAgICAgICBwYXJlbnQgPSBmcmFtZTtcbiAgICAgICAgICBwYXJlbnRSZWN0ID0gY29udmVydEZyb21QYXJlbnRSZWN0KGZyYW1lUmVjdCwgZnJhbWVJbnRlcnNlY3QpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhcmVudCA9IG51bGw7XG4gICAgICAgICAgaW50ZXJzZWN0aW9uUmVjdCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaGFzIGEgbm9uLXZpc2libGUgb3ZlcmZsb3csIGFuZCBpdCdzIG5vdCB0aGUgPGJvZHk+XG4gICAgICAvLyBvciA8aHRtbD4gZWxlbWVudCwgdXBkYXRlIHRoZSBpbnRlcnNlY3Rpb24gcmVjdC5cbiAgICAgIC8vIE5vdGU6IDxib2R5PiBhbmQgPGh0bWw+IGNhbm5vdCBiZSBjbGlwcGVkIHRvIGEgcmVjdCB0aGF0J3Mgbm90IGFsc29cbiAgICAgIC8vIHRoZSBkb2N1bWVudCByZWN0LCBzbyBubyBuZWVkIHRvIGNvbXB1dGUgYSBuZXcgaW50ZXJzZWN0aW9uLlxuICAgICAgdmFyIGRvYyA9IHBhcmVudC5vd25lckRvY3VtZW50O1xuICAgICAgaWYgKHBhcmVudCAhPSBkb2MuYm9keSAmJlxuICAgICAgICAgIHBhcmVudCAhPSBkb2MuZG9jdW1lbnRFbGVtZW50ICYmXG4gICAgICAgICAgcGFyZW50Q29tcHV0ZWRTdHlsZS5vdmVyZmxvdyAhPSAndmlzaWJsZScpIHtcbiAgICAgICAgcGFyZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChwYXJlbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIGVpdGhlciBvZiB0aGUgYWJvdmUgY29uZGl0aW9uYWxzIHNldCBhIG5ldyBwYXJlbnRSZWN0LFxuICAgIC8vIGNhbGN1bGF0ZSBuZXcgaW50ZXJzZWN0aW9uIGRhdGEuXG4gICAgaWYgKHBhcmVudFJlY3QpIHtcbiAgICAgIGludGVyc2VjdGlvblJlY3QgPSBjb21wdXRlUmVjdEludGVyc2VjdGlvbihwYXJlbnRSZWN0LCBpbnRlcnNlY3Rpb25SZWN0KTtcbiAgICB9XG4gICAgaWYgKCFpbnRlcnNlY3Rpb25SZWN0KSBicmVhaztcbiAgICBwYXJlbnQgPSBwYXJlbnQgJiYgZ2V0UGFyZW50Tm9kZShwYXJlbnQpO1xuICB9XG4gIHJldHVybiBpbnRlcnNlY3Rpb25SZWN0O1xufTtcblxuXG4vKipcbiAqIFJldHVybnMgdGhlIHJvb3QgcmVjdCBhZnRlciBiZWluZyBleHBhbmRlZCBieSB0aGUgcm9vdE1hcmdpbiB2YWx1ZS5cbiAqIEByZXR1cm4ge0NsaWVudFJlY3R9IFRoZSBleHBhbmRlZCByb290IHJlY3QuXG4gKiBAcHJpdmF0ZVxuICovXG5JbnRlcnNlY3Rpb25PYnNlcnZlci5wcm90b3R5cGUuX2dldFJvb3RSZWN0ID0gZnVuY3Rpb24oKSB7XG4gIHZhciByb290UmVjdDtcbiAgaWYgKHRoaXMucm9vdCkge1xuICAgIHJvb3RSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHRoaXMucm9vdCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVXNlIDxodG1sPi88Ym9keT4gaW5zdGVhZCBvZiB3aW5kb3cgc2luY2Ugc2Nyb2xsIGJhcnMgYWZmZWN0IHNpemUuXG4gICAgdmFyIGh0bWwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgdmFyIGJvZHkgPSBkb2N1bWVudC5ib2R5O1xuICAgIHJvb3RSZWN0ID0ge1xuICAgICAgdG9wOiAwLFxuICAgICAgbGVmdDogMCxcbiAgICAgIHJpZ2h0OiBodG1sLmNsaWVudFdpZHRoIHx8IGJvZHkuY2xpZW50V2lkdGgsXG4gICAgICB3aWR0aDogaHRtbC5jbGllbnRXaWR0aCB8fCBib2R5LmNsaWVudFdpZHRoLFxuICAgICAgYm90dG9tOiBodG1sLmNsaWVudEhlaWdodCB8fCBib2R5LmNsaWVudEhlaWdodCxcbiAgICAgIGhlaWdodDogaHRtbC5jbGllbnRIZWlnaHQgfHwgYm9keS5jbGllbnRIZWlnaHRcbiAgICB9O1xuICB9XG4gIHJldHVybiB0aGlzLl9leHBhbmRSZWN0QnlSb290TWFyZ2luKHJvb3RSZWN0KTtcbn07XG5cblxuLyoqXG4gKiBBY2NlcHRzIGEgcmVjdCBhbmQgZXhwYW5kcyBpdCBieSB0aGUgcm9vdE1hcmdpbiB2YWx1ZS5cbiAqIEBwYXJhbSB7RE9NUmVjdHxDbGllbnRSZWN0fSByZWN0IFRoZSByZWN0IG9iamVjdCB0byBleHBhbmQuXG4gKiBAcmV0dXJuIHtDbGllbnRSZWN0fSBUaGUgZXhwYW5kZWQgcmVjdC5cbiAqIEBwcml2YXRlXG4gKi9cbkludGVyc2VjdGlvbk9ic2VydmVyLnByb3RvdHlwZS5fZXhwYW5kUmVjdEJ5Um9vdE1hcmdpbiA9IGZ1bmN0aW9uKHJlY3QpIHtcbiAgdmFyIG1hcmdpbnMgPSB0aGlzLl9yb290TWFyZ2luVmFsdWVzLm1hcChmdW5jdGlvbihtYXJnaW4sIGkpIHtcbiAgICByZXR1cm4gbWFyZ2luLnVuaXQgPT0gJ3B4JyA/IG1hcmdpbi52YWx1ZSA6XG4gICAgICAgIG1hcmdpbi52YWx1ZSAqIChpICUgMiA/IHJlY3Qud2lkdGggOiByZWN0LmhlaWdodCkgLyAxMDA7XG4gIH0pO1xuICB2YXIgbmV3UmVjdCA9IHtcbiAgICB0b3A6IHJlY3QudG9wIC0gbWFyZ2luc1swXSxcbiAgICByaWdodDogcmVjdC5yaWdodCArIG1hcmdpbnNbMV0sXG4gICAgYm90dG9tOiByZWN0LmJvdHRvbSArIG1hcmdpbnNbMl0sXG4gICAgbGVmdDogcmVjdC5sZWZ0IC0gbWFyZ2luc1szXVxuICB9O1xuICBuZXdSZWN0LndpZHRoID0gbmV3UmVjdC5yaWdodCAtIG5ld1JlY3QubGVmdDtcbiAgbmV3UmVjdC5oZWlnaHQgPSBuZXdSZWN0LmJvdHRvbSAtIG5ld1JlY3QudG9wO1xuXG4gIHJldHVybiBuZXdSZWN0O1xufTtcblxuXG4vKipcbiAqIEFjY2VwdHMgYW4gb2xkIGFuZCBuZXcgZW50cnkgYW5kIHJldHVybnMgdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgb2YgdGhlXG4gKiB0aHJlc2hvbGQgdmFsdWVzIGhhcyBiZWVuIGNyb3NzZWQuXG4gKiBAcGFyYW0gez9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5fSBvbGRFbnRyeSBUaGUgcHJldmlvdXMgZW50cnkgZm9yIGFcbiAqICAgIHBhcnRpY3VsYXIgdGFyZ2V0IGVsZW1lbnQgb3IgbnVsbCBpZiBubyBwcmV2aW91cyBlbnRyeSBleGlzdHMuXG4gKiBAcGFyYW0ge0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnl9IG5ld0VudHJ5IFRoZSBjdXJyZW50IGVudHJ5IGZvciBhXG4gKiAgICBwYXJ0aWN1bGFyIHRhcmdldCBlbGVtZW50LlxuICogQHJldHVybiB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIGEgYW55IHRocmVzaG9sZCBoYXMgYmVlbiBjcm9zc2VkLlxuICogQHByaXZhdGVcbiAqL1xuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIucHJvdG90eXBlLl9oYXNDcm9zc2VkVGhyZXNob2xkID1cbiAgICBmdW5jdGlvbihvbGRFbnRyeSwgbmV3RW50cnkpIHtcblxuICAvLyBUbyBtYWtlIGNvbXBhcmluZyBlYXNpZXIsIGFuIGVudHJ5IHRoYXQgaGFzIGEgcmF0aW8gb2YgMFxuICAvLyBidXQgZG9lcyBub3QgYWN0dWFsbHkgaW50ZXJzZWN0IGlzIGdpdmVuIGEgdmFsdWUgb2YgLTFcbiAgdmFyIG9sZFJhdGlvID0gb2xkRW50cnkgJiYgb2xkRW50cnkuaXNJbnRlcnNlY3RpbmcgP1xuICAgICAgb2xkRW50cnkuaW50ZXJzZWN0aW9uUmF0aW8gfHwgMCA6IC0xO1xuICB2YXIgbmV3UmF0aW8gPSBuZXdFbnRyeS5pc0ludGVyc2VjdGluZyA/XG4gICAgICBuZXdFbnRyeS5pbnRlcnNlY3Rpb25SYXRpbyB8fCAwIDogLTE7XG5cbiAgLy8gSWdub3JlIHVuY2hhbmdlZCByYXRpb3NcbiAgaWYgKG9sZFJhdGlvID09PSBuZXdSYXRpbykgcmV0dXJuO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy50aHJlc2hvbGRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHRocmVzaG9sZCA9IHRoaXMudGhyZXNob2xkc1tpXTtcblxuICAgIC8vIFJldHVybiB0cnVlIGlmIGFuIGVudHJ5IG1hdGNoZXMgYSB0aHJlc2hvbGQgb3IgaWYgdGhlIG5ldyByYXRpb1xuICAgIC8vIGFuZCB0aGUgb2xkIHJhdGlvIGFyZSBvbiB0aGUgb3Bwb3NpdGUgc2lkZXMgb2YgYSB0aHJlc2hvbGQuXG4gICAgaWYgKHRocmVzaG9sZCA9PSBvbGRSYXRpbyB8fCB0aHJlc2hvbGQgPT0gbmV3UmF0aW8gfHxcbiAgICAgICAgdGhyZXNob2xkIDwgb2xkUmF0aW8gIT09IHRocmVzaG9sZCA8IG5ld1JhdGlvKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbn07XG5cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSByb290IGVsZW1lbnQgaXMgYW4gZWxlbWVudCBhbmQgaXMgaW4gdGhlIERPTS5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIHJvb3QgZWxlbWVudCBpcyBhbiBlbGVtZW50IGFuZCBpcyBpbiB0aGUgRE9NLlxuICogQHByaXZhdGVcbiAqL1xuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIucHJvdG90eXBlLl9yb290SXNJbkRvbSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gIXRoaXMucm9vdCB8fCBjb250YWluc0RlZXAoZG9jdW1lbnQsIHRoaXMucm9vdCk7XG59O1xuXG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgdGFyZ2V0IGVsZW1lbnQgaXMgYSBjaGlsZCBvZiByb290LlxuICogQHBhcmFtIHtFbGVtZW50fSB0YXJnZXQgVGhlIHRhcmdldCBlbGVtZW50IHRvIGNoZWNrLlxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgdGFyZ2V0IGVsZW1lbnQgaXMgYSBjaGlsZCBvZiByb290LlxuICogQHByaXZhdGVcbiAqL1xuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIucHJvdG90eXBlLl9yb290Q29udGFpbnNUYXJnZXQgPSBmdW5jdGlvbih0YXJnZXQpIHtcbiAgcmV0dXJuIGNvbnRhaW5zRGVlcCh0aGlzLnJvb3QgfHwgZG9jdW1lbnQsIHRhcmdldCkgJiZcbiAgICAoIXRoaXMucm9vdCB8fCB0aGlzLnJvb3Qub3duZXJEb2N1bWVudCA9PSB0YXJnZXQub3duZXJEb2N1bWVudCk7XG59O1xuXG5cbi8qKlxuICogQWRkcyB0aGUgaW5zdGFuY2UgdG8gdGhlIGdsb2JhbCBJbnRlcnNlY3Rpb25PYnNlcnZlciByZWdpc3RyeSBpZiBpdCBpc24ndFxuICogYWxyZWFkeSBwcmVzZW50LlxuICogQHByaXZhdGVcbiAqL1xuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIucHJvdG90eXBlLl9yZWdpc3Rlckluc3RhbmNlID0gZnVuY3Rpb24oKSB7XG4gIGlmIChyZWdpc3RyeS5pbmRleE9mKHRoaXMpIDwgMCkge1xuICAgIHJlZ2lzdHJ5LnB1c2godGhpcyk7XG4gIH1cbn07XG5cblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBpbnN0YW5jZSBmcm9tIHRoZSBnbG9iYWwgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgcmVnaXN0cnkuXG4gKiBAcHJpdmF0ZVxuICovXG5JbnRlcnNlY3Rpb25PYnNlcnZlci5wcm90b3R5cGUuX3VucmVnaXN0ZXJJbnN0YW5jZSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaW5kZXggPSByZWdpc3RyeS5pbmRleE9mKHRoaXMpO1xuICBpZiAoaW5kZXggIT0gLTEpIHJlZ2lzdHJ5LnNwbGljZShpbmRleCwgMSk7XG59O1xuXG5cbi8qKlxuICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBwZXJmb3JtYW5jZS5ub3coKSBtZXRob2Qgb3IgbnVsbCBpbiBicm93c2Vyc1xuICogdGhhdCBkb24ndCBzdXBwb3J0IHRoZSBBUEkuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBlbGFwc2VkIHRpbWUgc2luY2UgdGhlIHBhZ2Ugd2FzIHJlcXVlc3RlZC5cbiAqL1xuZnVuY3Rpb24gbm93KCkge1xuICByZXR1cm4gd2luZG93LnBlcmZvcm1hbmNlICYmIHBlcmZvcm1hbmNlLm5vdyAmJiBwZXJmb3JtYW5jZS5ub3coKTtcbn1cblxuXG4vKipcbiAqIFRocm90dGxlcyBhIGZ1bmN0aW9uIGFuZCBkZWxheXMgaXRzIGV4ZWN1dGlvbiwgc28gaXQncyBvbmx5IGNhbGxlZCBhdCBtb3N0XG4gKiBvbmNlIHdpdGhpbiBhIGdpdmVuIHRpbWUgcGVyaW9kLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9uIHRvIHRocm90dGxlLlxuICogQHBhcmFtIHtudW1iZXJ9IHRpbWVvdXQgVGhlIGFtb3VudCBvZiB0aW1lIHRoYXQgbXVzdCBwYXNzIGJlZm9yZSB0aGVcbiAqICAgICBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGFnYWluLlxuICogQHJldHVybiB7RnVuY3Rpb259IFRoZSB0aHJvdHRsZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIHRocm90dGxlKGZuLCB0aW1lb3V0KSB7XG4gIHZhciB0aW1lciA9IG51bGw7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCF0aW1lcikge1xuICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICBmbigpO1xuICAgICAgICB0aW1lciA9IG51bGw7XG4gICAgICB9LCB0aW1lb3V0KTtcbiAgICB9XG4gIH07XG59XG5cblxuLyoqXG4gKiBBZGRzIGFuIGV2ZW50IGhhbmRsZXIgdG8gYSBET00gbm9kZSBlbnN1cmluZyBjcm9zcy1icm93c2VyIGNvbXBhdGliaWxpdHkuXG4gKiBAcGFyYW0ge05vZGV9IG5vZGUgVGhlIERPTSBub2RlIHRvIGFkZCB0aGUgZXZlbnQgaGFuZGxlciB0by5cbiAqIEBwYXJhbSB7c3RyaW5nfSBldmVudCBUaGUgZXZlbnQgbmFtZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBldmVudCBoYW5kbGVyIHRvIGFkZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0X3VzZUNhcHR1cmUgT3B0aW9uYWxseSBhZGRzIHRoZSBldmVuIHRvIHRoZSBjYXB0dXJlXG4gKiAgICAgcGhhc2UuIE5vdGU6IHRoaXMgb25seSB3b3JrcyBpbiBtb2Rlcm4gYnJvd3NlcnMuXG4gKi9cbmZ1bmN0aW9uIGFkZEV2ZW50KG5vZGUsIGV2ZW50LCBmbiwgb3B0X3VzZUNhcHR1cmUpIHtcbiAgaWYgKHR5cGVvZiBub2RlLmFkZEV2ZW50TGlzdGVuZXIgPT0gJ2Z1bmN0aW9uJykge1xuICAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgZm4sIG9wdF91c2VDYXB0dXJlIHx8IGZhbHNlKTtcbiAgfVxuICBlbHNlIGlmICh0eXBlb2Ygbm9kZS5hdHRhY2hFdmVudCA9PSAnZnVuY3Rpb24nKSB7XG4gICAgbm9kZS5hdHRhY2hFdmVudCgnb24nICsgZXZlbnQsIGZuKTtcbiAgfVxufVxuXG5cbi8qKlxuICogUmVtb3ZlcyBhIHByZXZpb3VzbHkgYWRkZWQgZXZlbnQgaGFuZGxlciBmcm9tIGEgRE9NIG5vZGUuXG4gKiBAcGFyYW0ge05vZGV9IG5vZGUgVGhlIERPTSBub2RlIHRvIHJlbW92ZSB0aGUgZXZlbnQgaGFuZGxlciBmcm9tLlxuICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50IFRoZSBldmVudCBuYW1lLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGV2ZW50IGhhbmRsZXIgdG8gcmVtb3ZlLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRfdXNlQ2FwdHVyZSBJZiB0aGUgZXZlbnQgaGFuZGxlciB3YXMgYWRkZWQgd2l0aCB0aGlzXG4gKiAgICAgZmxhZyBzZXQgdG8gdHJ1ZSwgaXQgc2hvdWxkIGJlIHNldCB0byB0cnVlIGhlcmUgaW4gb3JkZXIgdG8gcmVtb3ZlIGl0LlxuICovXG5mdW5jdGlvbiByZW1vdmVFdmVudChub2RlLCBldmVudCwgZm4sIG9wdF91c2VDYXB0dXJlKSB7XG4gIGlmICh0eXBlb2Ygbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyID09ICdmdW5jdGlvbicpIHtcbiAgICBub2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGZuLCBvcHRfdXNlQ2FwdHVyZSB8fCBmYWxzZSk7XG4gIH1cbiAgZWxzZSBpZiAodHlwZW9mIG5vZGUuZGV0YXRjaEV2ZW50ID09ICdmdW5jdGlvbicpIHtcbiAgICBub2RlLmRldGF0Y2hFdmVudCgnb24nICsgZXZlbnQsIGZuKTtcbiAgfVxufVxuXG5cbi8qKlxuICogUmV0dXJucyB0aGUgaW50ZXJzZWN0aW9uIGJldHdlZW4gdHdvIHJlY3Qgb2JqZWN0cy5cbiAqIEBwYXJhbSB7T2JqZWN0fSByZWN0MSBUaGUgZmlyc3QgcmVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSByZWN0MiBUaGUgc2Vjb25kIHJlY3QuXG4gKiBAcmV0dXJuIHs/T2JqZWN0fD9DbGllbnRSZWN0fSBUaGUgaW50ZXJzZWN0aW9uIHJlY3Qgb3IgdW5kZWZpbmVkIGlmIG5vXG4gKiAgICAgaW50ZXJzZWN0aW9uIGlzIGZvdW5kLlxuICovXG5mdW5jdGlvbiBjb21wdXRlUmVjdEludGVyc2VjdGlvbihyZWN0MSwgcmVjdDIpIHtcbiAgdmFyIHRvcCA9IE1hdGgubWF4KHJlY3QxLnRvcCwgcmVjdDIudG9wKTtcbiAgdmFyIGJvdHRvbSA9IE1hdGgubWluKHJlY3QxLmJvdHRvbSwgcmVjdDIuYm90dG9tKTtcbiAgdmFyIGxlZnQgPSBNYXRoLm1heChyZWN0MS5sZWZ0LCByZWN0Mi5sZWZ0KTtcbiAgdmFyIHJpZ2h0ID0gTWF0aC5taW4ocmVjdDEucmlnaHQsIHJlY3QyLnJpZ2h0KTtcbiAgdmFyIHdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuICB2YXIgaGVpZ2h0ID0gYm90dG9tIC0gdG9wO1xuXG4gIHJldHVybiAod2lkdGggPj0gMCAmJiBoZWlnaHQgPj0gMCkgJiYge1xuICAgIHRvcDogdG9wLFxuICAgIGJvdHRvbTogYm90dG9tLFxuICAgIGxlZnQ6IGxlZnQsXG4gICAgcmlnaHQ6IHJpZ2h0LFxuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodFxuICB9IHx8IG51bGw7XG59XG5cblxuLyoqXG4gKiBTaGltcyB0aGUgbmF0aXZlIGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIElFLlxuICogQHBhcmFtIHtFbGVtZW50fSBlbCBUaGUgZWxlbWVudCB3aG9zZSBib3VuZGluZyByZWN0IHRvIGdldC5cbiAqIEByZXR1cm4ge0RPTVJlY3R8Q2xpZW50UmVjdH0gVGhlIChwb3NzaWJseSBzaGltbWVkKSByZWN0IG9mIHRoZSBlbGVtZW50LlxuICovXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWwpIHtcbiAgdmFyIHJlY3Q7XG5cbiAgdHJ5IHtcbiAgICByZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIElnbm9yZSBXaW5kb3dzIDcgSUUxMSBcIlVuc3BlY2lmaWVkIGVycm9yXCJcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdzNjL0ludGVyc2VjdGlvbk9ic2VydmVyL3B1bGwvMjA1XG4gIH1cblxuICBpZiAoIXJlY3QpIHJldHVybiBnZXRFbXB0eVJlY3QoKTtcblxuICAvLyBPbGRlciBJRVxuICBpZiAoIShyZWN0LndpZHRoICYmIHJlY3QuaGVpZ2h0KSkge1xuICAgIHJlY3QgPSB7XG4gICAgICB0b3A6IHJlY3QudG9wLFxuICAgICAgcmlnaHQ6IHJlY3QucmlnaHQsXG4gICAgICBib3R0b206IHJlY3QuYm90dG9tLFxuICAgICAgbGVmdDogcmVjdC5sZWZ0LFxuICAgICAgd2lkdGg6IHJlY3QucmlnaHQgLSByZWN0LmxlZnQsXG4gICAgICBoZWlnaHQ6IHJlY3QuYm90dG9tIC0gcmVjdC50b3BcbiAgICB9O1xuICB9XG4gIHJldHVybiByZWN0O1xufVxuXG5cbi8qKlxuICogUmV0dXJucyBhbiBlbXB0eSByZWN0IG9iamVjdC4gQW4gZW1wdHkgcmVjdCBpcyByZXR1cm5lZCB3aGVuIGFuIGVsZW1lbnRcbiAqIGlzIG5vdCBpbiB0aGUgRE9NLlxuICogQHJldHVybiB7Q2xpZW50UmVjdH0gVGhlIGVtcHR5IHJlY3QuXG4gKi9cbmZ1bmN0aW9uIGdldEVtcHR5UmVjdCgpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IDAsXG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwXG4gIH07XG59XG5cblxuLyoqXG4gKiBFbnN1cmUgdGhhdCB0aGUgcmVzdWx0IGhhcyBhbGwgb2YgdGhlIG5lY2Vzc2FyeSBmaWVsZHMgb2YgdGhlIERPTVJlY3QuXG4gKiBTcGVjaWZpY2FsbHkgdGhpcyBlbnN1cmVzIHRoYXQgYHhgIGFuZCBgeWAgZmllbGRzIGFyZSBzZXQuXG4gKlxuICogQHBhcmFtIHs/RE9NUmVjdHw/Q2xpZW50UmVjdH0gcmVjdFxuICogQHJldHVybiB7P0RPTVJlY3R9XG4gKi9cbmZ1bmN0aW9uIGVuc3VyZURPTVJlY3QocmVjdCkge1xuICAvLyBBIGBET01SZWN0YCBvYmplY3QgaGFzIGB4YCBhbmQgYHlgIGZpZWxkcy5cbiAgaWYgKCFyZWN0IHx8ICd4JyBpbiByZWN0KSB7XG4gICAgcmV0dXJuIHJlY3Q7XG4gIH1cbiAgLy8gQSBJRSdzIGBDbGllbnRSZWN0YCB0eXBlIGRvZXMgbm90IGhhdmUgYHhgIGFuZCBgeWAuIFRoZSBzYW1lIGlzIHRoZSBjYXNlXG4gIC8vIGZvciBpbnRlcm5hbGx5IGNhbGN1bGF0ZWQgUmVjdCBvYmplY3RzLiBGb3IgdGhlIHB1cnBvc2VzIG9mXG4gIC8vIGBJbnRlcnNlY3Rpb25PYnNlcnZlcmAsIGl0J3Mgc3VmZmljaWVudCB0byBzaW1wbHkgbWlycm9yIGBsZWZ0YCBhbmQgYHRvcGBcbiAgLy8gZm9yIHRoZXNlIGZpZWxkcy5cbiAgcmV0dXJuIHtcbiAgICB0b3A6IHJlY3QudG9wLFxuICAgIHk6IHJlY3QudG9wLFxuICAgIGJvdHRvbTogcmVjdC5ib3R0b20sXG4gICAgbGVmdDogcmVjdC5sZWZ0LFxuICAgIHg6IHJlY3QubGVmdCxcbiAgICByaWdodDogcmVjdC5yaWdodCxcbiAgICB3aWR0aDogcmVjdC53aWR0aCxcbiAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0XG4gIH07XG59XG5cblxuLyoqXG4gKiBJbnZlcnRzIHRoZSBpbnRlcnNlY3Rpb24gYW5kIGJvdW5kaW5nIHJlY3QgZnJvbSB0aGUgcGFyZW50IChmcmFtZSkgQkNSIHRvXG4gKiB0aGUgbG9jYWwgQkNSIHNwYWNlLlxuICogQHBhcmFtIHtET01SZWN0fENsaWVudFJlY3R9IHBhcmVudEJvdW5kaW5nUmVjdCBUaGUgcGFyZW50J3MgYm91bmQgY2xpZW50IHJlY3QuXG4gKiBAcGFyYW0ge0RPTVJlY3R8Q2xpZW50UmVjdH0gcGFyZW50SW50ZXJzZWN0aW9uUmVjdCBUaGUgcGFyZW50J3Mgb3duIGludGVyc2VjdGlvbiByZWN0LlxuICogQHJldHVybiB7Q2xpZW50UmVjdH0gVGhlIGxvY2FsIHJvb3QgYm91bmRpbmcgcmVjdCBmb3IgdGhlIHBhcmVudCdzIGNoaWxkcmVuLlxuICovXG5mdW5jdGlvbiBjb252ZXJ0RnJvbVBhcmVudFJlY3QocGFyZW50Qm91bmRpbmdSZWN0LCBwYXJlbnRJbnRlcnNlY3Rpb25SZWN0KSB7XG4gIHZhciB0b3AgPSBwYXJlbnRJbnRlcnNlY3Rpb25SZWN0LnRvcCAtIHBhcmVudEJvdW5kaW5nUmVjdC50b3A7XG4gIHZhciBsZWZ0ID0gcGFyZW50SW50ZXJzZWN0aW9uUmVjdC5sZWZ0IC0gcGFyZW50Qm91bmRpbmdSZWN0LmxlZnQ7XG4gIHJldHVybiB7XG4gICAgdG9wOiB0b3AsXG4gICAgbGVmdDogbGVmdCxcbiAgICBoZWlnaHQ6IHBhcmVudEludGVyc2VjdGlvblJlY3QuaGVpZ2h0LFxuICAgIHdpZHRoOiBwYXJlbnRJbnRlcnNlY3Rpb25SZWN0LndpZHRoLFxuICAgIGJvdHRvbTogdG9wICsgcGFyZW50SW50ZXJzZWN0aW9uUmVjdC5oZWlnaHQsXG4gICAgcmlnaHQ6IGxlZnQgKyBwYXJlbnRJbnRlcnNlY3Rpb25SZWN0LndpZHRoXG4gIH07XG59XG5cblxuLyoqXG4gKiBDaGVja3MgdG8gc2VlIGlmIGEgcGFyZW50IGVsZW1lbnQgY29udGFpbnMgYSBjaGlsZCBlbGVtZW50IChpbmNsdWRpbmcgaW5zaWRlXG4gKiBzaGFkb3cgRE9NKS5cbiAqIEBwYXJhbSB7Tm9kZX0gcGFyZW50IFRoZSBwYXJlbnQgZWxlbWVudC5cbiAqIEBwYXJhbSB7Tm9kZX0gY2hpbGQgVGhlIGNoaWxkIGVsZW1lbnQuXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBwYXJlbnQgbm9kZSBjb250YWlucyB0aGUgY2hpbGQgbm9kZS5cbiAqL1xuZnVuY3Rpb24gY29udGFpbnNEZWVwKHBhcmVudCwgY2hpbGQpIHtcbiAgdmFyIG5vZGUgPSBjaGlsZDtcbiAgd2hpbGUgKG5vZGUpIHtcbiAgICBpZiAobm9kZSA9PSBwYXJlbnQpIHJldHVybiB0cnVlO1xuXG4gICAgbm9kZSA9IGdldFBhcmVudE5vZGUobm9kZSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5cbi8qKlxuICogR2V0cyB0aGUgcGFyZW50IG5vZGUgb2YgYW4gZWxlbWVudCBvciBpdHMgaG9zdCBlbGVtZW50IGlmIHRoZSBwYXJlbnQgbm9kZVxuICogaXMgYSBzaGFkb3cgcm9vdC5cbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSBUaGUgbm9kZSB3aG9zZSBwYXJlbnQgdG8gZ2V0LlxuICogQHJldHVybiB7Tm9kZXxudWxsfSBUaGUgcGFyZW50IG5vZGUgb3IgbnVsbCBpZiBubyBwYXJlbnQgZXhpc3RzLlxuICovXG5mdW5jdGlvbiBnZXRQYXJlbnROb2RlKG5vZGUpIHtcbiAgdmFyIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZTtcblxuICBpZiAobm9kZS5ub2RlVHlwZSA9PSAvKiBET0NVTUVOVCAqLyA5ICYmIG5vZGUgIT0gZG9jdW1lbnQpIHtcbiAgICAvLyBJZiB0aGlzIG5vZGUgaXMgYSBkb2N1bWVudCBub2RlLCBsb29rIGZvciB0aGUgZW1iZWRkaW5nIGZyYW1lLlxuICAgIHJldHVybiBnZXRGcmFtZUVsZW1lbnQobm9kZSk7XG4gIH1cblxuICBpZiAocGFyZW50ICYmIHBhcmVudC5ub2RlVHlwZSA9PSAxMSAmJiBwYXJlbnQuaG9zdCkge1xuICAgIC8vIElmIHRoZSBwYXJlbnQgaXMgYSBzaGFkb3cgcm9vdCwgcmV0dXJuIHRoZSBob3N0IGVsZW1lbnQuXG4gICAgcmV0dXJuIHBhcmVudC5ob3N0O1xuICB9XG5cbiAgaWYgKHBhcmVudCAmJiBwYXJlbnQuYXNzaWduZWRTbG90KSB7XG4gICAgLy8gSWYgdGhlIHBhcmVudCBpcyBkaXN0cmlidXRlZCBpbiBhIDxzbG90PiwgcmV0dXJuIHRoZSBwYXJlbnQgb2YgYSBzbG90LlxuICAgIHJldHVybiBwYXJlbnQuYXNzaWduZWRTbG90LnBhcmVudE5vZGU7XG4gIH1cblxuICByZXR1cm4gcGFyZW50O1xufVxuXG5cbi8vIEV4cG9zZXMgdGhlIGNvbnN0cnVjdG9ycyBnbG9iYWxseS5cbndpbmRvdy5JbnRlcnNlY3Rpb25PYnNlcnZlciA9IEludGVyc2VjdGlvbk9ic2VydmVyO1xud2luZG93LkludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgPSBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5O1xuXG59KCkpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/intersection-observer/intersection-observer.js\n");
|
|
7
|
-
|
|
8
|
-
/***/ })
|
|
9
|
-
|
|
10
|
-
}]);
|
package/dist/scripts/93.chunk.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
(window["webpackJsonp_clickview_lite"] = window["webpackJsonp_clickview_lite"] || []).push([[93],{
|
|
2
|
-
|
|
3
|
-
/***/ "../../../node_modules/papaparse/papaparse.min.js":
|
|
4
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
5
|
-
|
|
6
|
-
eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* @license\nPapa Parse\nv5.2.0\nhttps://github.com/mholt/PapaParse\nLicense: MIT\n*/\n!function(e,t){ true?!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (t),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)):undefined}(this,function s(){\"use strict\";var f=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==f?f:{};var n=!f.document&&!!f.postMessage,o=n&&/blob:/i.test((f.location||{}).protocol),a={},h=0,b={parse:function(e,t){var i=(t=t||{}).dynamicTyping||!1;U(i)&&(t.dynamicTypingFunction=i,i={});if(t.dynamicTyping=i,t.transform=!!U(t.transform)&&t.transform,t.worker&&b.WORKERS_SUPPORTED){var r=function(){if(!b.WORKERS_SUPPORTED)return!1;var e=(i=f.URL||f.webkitURL||null,r=s.toString(),b.BLOB_URL||(b.BLOB_URL=i.createObjectURL(new Blob([\"(\",r,\")();\"],{type:\"text/javascript\"})))),t=new f.Worker(e);var i,r;return t.onmessage=_,t.id=h++,a[t.id]=t}();return r.userStep=t.step,r.userChunk=t.chunk,r.userComplete=t.complete,r.userError=t.error,t.step=U(t.step),t.chunk=U(t.chunk),t.complete=U(t.complete),t.error=U(t.error),delete t.worker,void r.postMessage({input:e,config:t,workerId:r.id})}var n=null;b.NODE_STREAM_INPUT,\"string\"==typeof e?n=t.download?new l(t):new p(t):!0===e.readable&&U(e.read)&&U(e.on)?n=new g(t):(f.File&&e instanceof File||e instanceof Object)&&(n=new c(t));return n.stream(e)},unparse:function(e,t){var n=!1,_=!0,m=\",\",v=\"\\r\\n\",s='\"',a=s+s,i=!1,r=null;!function(){if(\"object\"!=typeof t)return;\"string\"!=typeof t.delimiter||b.BAD_DELIMITERS.filter(function(e){return-1!==t.delimiter.indexOf(e)}).length||(m=t.delimiter);(\"boolean\"==typeof t.quotes||\"function\"==typeof t.quotes||Array.isArray(t.quotes))&&(n=t.quotes);\"boolean\"!=typeof t.skipEmptyLines&&\"string\"!=typeof t.skipEmptyLines||(i=t.skipEmptyLines);\"string\"==typeof t.newline&&(v=t.newline);\"string\"==typeof t.quoteChar&&(s=t.quoteChar);\"boolean\"==typeof t.header&&(_=t.header);if(Array.isArray(t.columns)){if(0===t.columns.length)throw new Error(\"Option columns is empty\");r=t.columns}void 0!==t.escapeChar&&(a=t.escapeChar+s)}();var o=new RegExp(q(s),\"g\");\"string\"==typeof e&&(e=JSON.parse(e));if(Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return u(null,e,i);if(\"object\"==typeof e[0])return u(r||h(e[0]),e,i)}else if(\"object\"==typeof e)return\"string\"==typeof e.data&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||(e.fields=e.meta&&e.meta.fields),e.fields||(e.fields=Array.isArray(e.data[0])?e.fields:h(e.data[0])),Array.isArray(e.data[0])||\"object\"==typeof e.data[0]||(e.data=[e.data])),u(e.fields||[],e.data||[],i);throw new Error(\"Unable to serialize unrecognized input\");function h(e){if(\"object\"!=typeof e)return[];var t=[];for(var i in e)t.push(i);return t}function u(e,t,i){var r=\"\";\"string\"==typeof e&&(e=JSON.parse(e)),\"string\"==typeof t&&(t=JSON.parse(t));var n=Array.isArray(e)&&0<e.length,s=!Array.isArray(t[0]);if(n&&_){for(var a=0;a<e.length;a++)0<a&&(r+=m),r+=y(e[a],a);0<t.length&&(r+=v)}for(var o=0;o<t.length;o++){var h=n?e.length:t[o].length,u=!1,f=n?0===Object.keys(t[o]).length:0===t[o].length;if(i&&!n&&(u=\"greedy\"===i?\"\"===t[o].join(\"\").trim():1===t[o].length&&0===t[o][0].length),\"greedy\"===i&&n){for(var d=[],l=0;l<h;l++){var c=s?e[l]:l;d.push(t[o][c])}u=\"\"===d.join(\"\").trim()}if(!u){for(var p=0;p<h;p++){0<p&&!f&&(r+=m);var g=n&&s?e[p]:p;r+=y(t[o][g],p)}o<t.length-1&&(!i||0<h&&!f)&&(r+=v)}}return r}function y(e,t){if(null==e)return\"\";if(e.constructor===Date)return JSON.stringify(e).slice(1,25);var i=e.toString().replace(o,a),r=\"boolean\"==typeof n&&n||\"function\"==typeof n&&n(e,t)||Array.isArray(n)&&n[t]||function(e,t){for(var i=0;i<t.length;i++)if(-1<e.indexOf(t[i]))return!0;return!1}(i,b.BAD_DELIMITERS)||-1<i.indexOf(m)||\" \"===i.charAt(0)||\" \"===i.charAt(i.length-1);return r?s+i+s:i}}};if(b.RECORD_SEP=String.fromCharCode(30),b.UNIT_SEP=String.fromCharCode(31),b.BYTE_ORDER_MARK=\"\\ufeff\",b.BAD_DELIMITERS=[\"\\r\",\"\\n\",'\"',b.BYTE_ORDER_MARK],b.WORKERS_SUPPORTED=!n&&!!f.Worker,b.NODE_STREAM_INPUT=1,b.LocalChunkSize=10485760,b.RemoteChunkSize=5242880,b.DefaultDelimiter=\",\",b.Parser=w,b.ParserHandle=i,b.NetworkStreamer=l,b.FileStreamer=c,b.StringStreamer=p,b.ReadableStreamStreamer=g,f.jQuery){var d=f.jQuery;d.fn.parse=function(o){var i=o.config||{},h=[];return this.each(function(e){if(!(\"INPUT\"===d(this).prop(\"tagName\").toUpperCase()&&\"file\"===d(this).attr(\"type\").toLowerCase()&&f.FileReader)||!this.files||0===this.files.length)return!0;for(var t=0;t<this.files.length;t++)h.push({file:this.files[t],inputElem:this,instanceConfig:d.extend({},i)})}),e(),this;function e(){if(0!==h.length){var e,t,i,r,n=h[0];if(U(o.before)){var s=o.before(n.file,n.inputElem);if(\"object\"==typeof s){if(\"abort\"===s.action)return e=\"AbortError\",t=n.file,i=n.inputElem,r=s.reason,void(U(o.error)&&o.error({name:e},t,i,r));if(\"skip\"===s.action)return void u();\"object\"==typeof s.config&&(n.instanceConfig=d.extend(n.instanceConfig,s.config))}else if(\"skip\"===s)return void u()}var a=n.instanceConfig.complete;n.instanceConfig.complete=function(e){U(a)&&a(e,n.file,n.inputElem),u()},b.parse(n.file,n.instanceConfig)}else U(o.complete)&&o.complete()}function u(){h.splice(0,1),e()}}}function u(e){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine=\"\",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},function(e){var t=E(e);t.chunkSize=parseInt(t.chunkSize),e.step||e.chunk||(t.chunkSize=null);this._handle=new i(t),(this._handle.streamer=this)._config=t}.call(this,e),this.parseChunk=function(e,t){if(this.isFirstChunk&&U(this._config.beforeFirstChunk)){var i=this._config.beforeFirstChunk(e);void 0!==i&&(e=i)}this.isFirstChunk=!1,this._halted=!1;var r=this._partialLine+e;this._partialLine=\"\";var n=this._handle.parse(r,this._baseIndex,!this._finished);if(!this._handle.paused()&&!this._handle.aborted()){var s=n.meta.cursor;this._finished||(this._partialLine=r.substring(s-this._baseIndex),this._baseIndex=s),n&&n.data&&(this._rowCount+=n.data.length);var a=this._finished||this._config.preview&&this._rowCount>=this._config.preview;if(o)f.postMessage({results:n,workerId:b.WORKER_ID,finished:a});else if(U(this._config.chunk)&&!t){if(this._config.chunk(n,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);n=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(n.data),this._completeResults.errors=this._completeResults.errors.concat(n.errors),this._completeResults.meta=n.meta),this._completed||!a||!U(this._config.complete)||n&&n.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),a||n&&n.meta.paused||this._nextChunk(),n}this._halted=!0},this._sendError=function(e){U(this._config.error)?this._config.error(e):o&&this._config.error&&f.postMessage({workerId:b.WORKER_ID,error:e,finished:!1})}}function l(e){var r;(e=e||{}).chunkSize||(e.chunkSize=b.RemoteChunkSize),u.call(this,e),this._nextChunk=n?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(r=new XMLHttpRequest,this._config.withCredentials&&(r.withCredentials=this._config.withCredentials),n||(r.onload=y(this._chunkLoaded,this),r.onerror=y(this._chunkError,this)),r.open(this._config.downloadRequestBody?\"POST\":\"GET\",this._input,!n),this._config.downloadRequestHeaders){var e=this._config.downloadRequestHeaders;for(var t in e)r.setRequestHeader(t,e[t])}if(this._config.chunkSize){var i=this._start+this._config.chunkSize-1;r.setRequestHeader(\"Range\",\"bytes=\"+this._start+\"-\"+i)}try{r.send(this._config.downloadRequestBody)}catch(e){this._chunkError(e.message)}n&&0===r.status&&this._chunkError()}},this._chunkLoaded=function(){4===r.readyState&&(r.status<200||400<=r.status?this._chunkError():(this._start+=this._config.chunkSize?this._config.chunkSize:r.responseText.length,this._finished=!this._config.chunkSize||this._start>=function(e){var t=e.getResponseHeader(\"Content-Range\");if(null===t)return-1;return parseInt(t.substring(t.lastIndexOf(\"/\")+1))}(r),this.parseChunk(r.responseText)))},this._chunkError=function(e){var t=r.statusText||e;this._sendError(new Error(t))}}function c(e){var r,n;(e=e||{}).chunkSize||(e.chunkSize=b.LocalChunkSize),u.call(this,e);var s=\"undefined\"!=typeof FileReader;this.stream=function(e){this._input=e,n=e.slice||e.webkitSlice||e.mozSlice,s?((r=new FileReader).onload=y(this._chunkLoaded,this),r.onerror=y(this._chunkError,this)):r=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input;if(this._config.chunkSize){var t=Math.min(this._start+this._config.chunkSize,this._input.size);e=n.call(e,this._start,t)}var i=r.readAsText(e,this._config.encoding);s||this._chunkLoaded({target:{result:i}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(r.error)}}function p(e){var i;u.call(this,e=e||{}),this.stream=function(e){return i=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e,t=this._config.chunkSize;return t?(e=i.substring(0,t),i=i.substring(t)):(e=i,i=\"\"),this._finished=!i,this.parseChunk(e)}}}function g(e){u.call(this,e=e||{});var t=[],i=!0,r=!1;this.pause=function(){u.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){u.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on(\"data\",this._streamData),this._input.on(\"end\",this._streamEnd),this._input.on(\"error\",this._streamError)},this._checkIsFinished=function(){r&&1===t.length&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):i=!0},this._streamData=y(function(e){try{t.push(\"string\"==typeof e?e:e.toString(this._config.encoding)),i&&(i=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}},this),this._streamError=y(function(e){this._streamCleanUp(),this._sendError(e)},this),this._streamEnd=y(function(){this._streamCleanUp(),r=!0,this._streamData(\"\")},this),this._streamCleanUp=y(function(){this._input.removeListener(\"data\",this._streamData),this._input.removeListener(\"end\",this._streamEnd),this._input.removeListener(\"error\",this._streamError)},this)}function i(m){var a,o,h,r=Math.pow(2,53),n=-r,s=/^\\s*-?(\\d+\\.?|\\.\\d+|\\d+\\.\\d+)(e[-+]?\\d+)?\\s*$/,u=/(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))/,t=this,i=0,f=0,d=!1,e=!1,l=[],c={data:[],errors:[],meta:{}};if(U(m.step)){var p=m.step;m.step=function(e){if(c=e,_())g();else{if(g(),0===c.data.length)return;i+=e.data.length,m.preview&&i>m.preview?o.abort():(c.data=c.data[0],p(c,t))}}}function v(e){return\"greedy\"===m.skipEmptyLines?\"\"===e.join(\"\").trim():1===e.length&&0===e[0].length}function g(){if(c&&h&&(k(\"Delimiter\",\"UndetectableDelimiter\",\"Unable to auto-detect delimiting character; defaulted to '\"+b.DefaultDelimiter+\"'\"),h=!1),m.skipEmptyLines)for(var e=0;e<c.data.length;e++)v(c.data[e])&&c.data.splice(e--,1);return _()&&function(){if(!c)return;function e(e){U(m.transformHeader)&&(e=m.transformHeader(e)),l.push(e)}if(Array.isArray(c.data[0])){for(var t=0;_()&&t<c.data.length;t++)c.data[t].forEach(e);c.data.splice(0,1)}else c.data.forEach(e)}(),function(){if(!c||!m.header&&!m.dynamicTyping&&!m.transform)return c;function e(e,t){var i,r=m.header?{}:[];for(i=0;i<e.length;i++){var n=i,s=e[i];m.header&&(n=i>=l.length?\"__parsed_extra\":l[i]),m.transform&&(s=m.transform(s,n)),s=y(n,s),\"__parsed_extra\"===n?(r[n]=r[n]||[],r[n].push(s)):r[n]=s}return m.header&&(i>l.length?k(\"FieldMismatch\",\"TooManyFields\",\"Too many fields: expected \"+l.length+\" fields but parsed \"+i,f+t):i<l.length&&k(\"FieldMismatch\",\"TooFewFields\",\"Too few fields: expected \"+l.length+\" fields but parsed \"+i,f+t)),r}var t=1;!c.data.length||Array.isArray(c.data[0])?(c.data=c.data.map(e),t=c.data.length):c.data=e(c.data,0);m.header&&c.meta&&(c.meta.fields=l);return f+=t,c}()}function _(){return m.header&&0===l.length}function y(e,t){return i=e,m.dynamicTypingFunction&&void 0===m.dynamicTyping[i]&&(m.dynamicTyping[i]=m.dynamicTypingFunction(i)),!0===(m.dynamicTyping[i]||m.dynamicTyping)?\"true\"===t||\"TRUE\"===t||\"false\"!==t&&\"FALSE\"!==t&&(function(e){if(s.test(e)){var t=parseFloat(e);if(n<t&&t<r)return!0}return!1}(t)?parseFloat(t):u.test(t)?new Date(t):\"\"===t?null:t):t;var i}function k(e,t,i,r){var n={type:e,code:t,message:i};void 0!==r&&(n.row=r),c.errors.push(n)}this.parse=function(e,t,i){var r=m.quoteChar||'\"';if(m.newline||(m.newline=function(e,t){e=e.substring(0,1048576);var i=new RegExp(q(t)+\"([^]*?)\"+q(t),\"gm\"),r=(e=e.replace(i,\"\")).split(\"\\r\"),n=e.split(\"\\n\"),s=1<n.length&&n[0].length<r[0].length;if(1===r.length||s)return\"\\n\";for(var a=0,o=0;o<r.length;o++)\"\\n\"===r[o][0]&&a++;return a>=r.length/2?\"\\r\\n\":\"\\r\"}(e,r)),h=!1,m.delimiter)U(m.delimiter)&&(m.delimiter=m.delimiter(e),c.meta.delimiter=m.delimiter);else{var n=function(e,t,i,r,n){var s,a,o,h;n=n||[\",\",\"\\t\",\"|\",\";\",b.RECORD_SEP,b.UNIT_SEP];for(var u=0;u<n.length;u++){var f=n[u],d=0,l=0,c=0;o=void 0;for(var p=new w({comments:r,delimiter:f,newline:t,preview:10}).parse(e),g=0;g<p.data.length;g++)if(i&&v(p.data[g]))c++;else{var _=p.data[g].length;l+=_,void 0!==o?0<_&&(d+=Math.abs(_-o),o=_):o=_}0<p.data.length&&(l/=p.data.length-c),(void 0===a||d<=a)&&(void 0===h||h<l)&&1.99<l&&(a=d,s=f,h=l)}return{successful:!!(m.delimiter=s),bestDelimiter:s}}(e,m.newline,m.skipEmptyLines,m.comments,m.delimitersToGuess);n.successful?m.delimiter=n.bestDelimiter:(h=!0,m.delimiter=b.DefaultDelimiter),c.meta.delimiter=m.delimiter}var s=E(m);return m.preview&&m.header&&s.preview++,a=e,o=new w(s),c=o.parse(a,t,i),g(),d?{meta:{paused:!0}}:c||{meta:{paused:!1}}},this.paused=function(){return d},this.pause=function(){d=!0,o.abort(),a=U(m.chunk)?\"\":a.substring(o.getCharIndex())},this.resume=function(){t.streamer._halted?(d=!1,t.streamer.parseChunk(a,!0)):setTimeout(t.resume,3)},this.aborted=function(){return e},this.abort=function(){e=!0,o.abort(),c.meta.aborted=!0,U(m.complete)&&m.complete(c),a=\"\"}}function q(e){return e.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}function w(e){var O,D=(e=e||{}).delimiter,I=e.newline,T=e.comments,A=e.step,L=e.preview,F=e.fastMode,z=O=void 0===e.quoteChar?'\"':e.quoteChar;if(void 0!==e.escapeChar&&(z=e.escapeChar),(\"string\"!=typeof D||-1<b.BAD_DELIMITERS.indexOf(D))&&(D=\",\"),T===D)throw new Error(\"Comment character same as delimiter\");!0===T?T=\"#\":(\"string\"!=typeof T||-1<b.BAD_DELIMITERS.indexOf(T))&&(T=!1),\"\\n\"!==I&&\"\\r\"!==I&&\"\\r\\n\"!==I&&(I=\"\\n\");var M=0,j=!1;this.parse=function(a,t,i){if(\"string\"!=typeof a)throw new Error(\"Input must be a string\");var r=a.length,e=D.length,n=I.length,s=T.length,o=U(A),h=[],u=[],f=[],d=M=0;if(!a)return R();if(F||!1!==F&&-1===a.indexOf(O)){for(var l=a.split(I),c=0;c<l.length;c++){if(f=l[c],M+=f.length,c!==l.length-1)M+=I.length;else if(i)return R();if(!T||f.substring(0,s)!==T){if(o){if(h=[],b(f.split(D)),S(),j)return R()}else b(f.split(D));if(L&&L<=c)return h=h.slice(0,L),R(!0)}}return R()}for(var p=a.indexOf(D,M),g=a.indexOf(I,M),_=new RegExp(q(z)+q(O),\"g\"),m=a.indexOf(O,M);;)if(a[M]!==O)if(T&&0===f.length&&a.substring(M,M+s)===T){if(-1===g)return R();M=g+n,g=a.indexOf(I,M),p=a.indexOf(D,M)}else{if(-1!==p&&(p<g||-1===g)){if(!(p<m)){f.push(a.substring(M,p)),M=p+e,p=a.indexOf(D,M);continue}var v=x(p,m,g);if(v&&void 0!==v.nextDelim){p=v.nextDelim,m=v.quoteSearch,f.push(a.substring(M,p)),M=p+e,p=a.indexOf(D,M);continue}}if(-1===g)break;if(f.push(a.substring(M,g)),C(g+n),o&&(S(),j))return R();if(L&&h.length>=L)return R(!0)}else for(m=M,M++;;){if(-1===(m=a.indexOf(O,m+1)))return i||u.push({type:\"Quotes\",code:\"MissingQuotes\",message:\"Quoted field unterminated\",row:h.length,index:M}),E();if(m===r-1)return E(a.substring(M,m).replace(_,O));if(O!==z||a[m+1]!==z){if(O===z||0===m||a[m-1]!==z){-1!==p&&p<m+1&&(p=a.indexOf(D,m+1)),-1!==g&&g<m+1&&(g=a.indexOf(I,m+1));var y=w(-1===g?p:Math.min(p,g));if(a[m+1+y]===D){f.push(a.substring(M,m).replace(_,O)),a[M=m+1+y+e]!==O&&(m=a.indexOf(O,M)),p=a.indexOf(D,M),g=a.indexOf(I,M);break}var k=w(g);if(a.substring(m+1+k,m+1+k+n)===I){if(f.push(a.substring(M,m).replace(_,O)),C(m+1+k+n),p=a.indexOf(D,M),m=a.indexOf(O,M),o&&(S(),j))return R();if(L&&h.length>=L)return R(!0);break}u.push({type:\"Quotes\",code:\"InvalidQuotes\",message:\"Trailing quote on quoted field is malformed\",row:h.length,index:M}),m++}}else m++}return E();function b(e){h.push(e),d=M}function w(e){var t=0;if(-1!==e){var i=a.substring(m+1,e);i&&\"\"===i.trim()&&(t=i.length)}return t}function E(e){return i||(void 0===e&&(e=a.substring(M)),f.push(e),M=r,b(f),o&&S()),R()}function C(e){M=e,b(f),f=[],g=a.indexOf(I,M)}function R(e){return{data:h,errors:u,meta:{delimiter:D,linebreak:I,aborted:j,truncated:!!e,cursor:d+(t||0)}}}function S(){A(R()),h=[],u=[]}function x(e,t,i){var r={nextDelim:void 0,quoteSearch:void 0},n=a.indexOf(O,t+1);if(t<e&&e<n&&(n<i||-1===i)){var s=a.indexOf(D,n);if(-1===s)return r;n<s&&(n=a.indexOf(O,n+1)),r=x(s,n,i)}else r={nextDelim:e,quoteSearch:t};return r}},this.abort=function(){j=!0},this.getCharIndex=function(){return M}}function _(e){var t=e.data,i=a[t.workerId],r=!1;if(t.error)i.userError(t.error,t.file);else if(t.results&&t.results.data){var n={abort:function(){r=!0,m(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:v,resume:v};if(U(i.userStep)){for(var s=0;s<t.results.data.length&&(i.userStep({data:t.results.data[s],errors:t.results.errors,meta:t.results.meta},n),!r);s++);delete t.results}else U(i.userChunk)&&(i.userChunk(t.results,n,t.file),delete t.results)}t.finished&&!r&&m(t.workerId,t.results)}function m(e,t){var i=a[e];U(i.userComplete)&&i.userComplete(t),i.terminate(),delete a[e]}function v(){throw new Error(\"Not implemented.\")}function E(e){if(\"object\"!=typeof e||null===e)return e;var t=Array.isArray(e)?[]:{};for(var i in e)t[i]=E(e[i]);return t}function y(e,t){return function(){e.apply(t,arguments)}}function U(e){return\"function\"==typeof e}return o&&(f.onmessage=function(e){var t=e.data;void 0===b.WORKER_ID&&t&&(b.WORKER_ID=t.workerId);if(\"string\"==typeof t.input)f.postMessage({workerId:b.WORKER_ID,results:b.parse(t.input,t.config),finished:!0});else if(f.File&&t.input instanceof File||t.input instanceof Object){var i=b.parse(t.input,t.config);i&&f.postMessage({workerId:b.WORKER_ID,results:i,finished:!0})}}),(l.prototype=Object.create(u.prototype)).constructor=l,(c.prototype=Object.create(u.prototype)).constructor=c,(p.prototype=Object.create(p.prototype)).constructor=p,(g.prototype=Object.create(u.prototype)).constructor=g,b});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3BhcGFwYXJzZS9wYXBhcGFyc2UubWluLmpzLmpzIiwic291cmNlcyI6WyJmaWxlOi8vQzovQ2xpY2tWaWV3IFByb2plY3RzL2NsaWNrdmlldy9ub2RlX21vZHVsZXMvcGFwYXBhcnNlL3BhcGFwYXJzZS5taW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogQGxpY2Vuc2VcblBhcGEgUGFyc2VcbnY1LjIuMFxuaHR0cHM6Ly9naXRodWIuY29tL21ob2x0L1BhcGFQYXJzZVxuTGljZW5zZTogTUlUXG4qL1xuIWZ1bmN0aW9uKGUsdCl7XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbXSx0KTpcIm9iamVjdFwiPT10eXBlb2YgbW9kdWxlJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz10KCk6ZS5QYXBhPXQoKX0odGhpcyxmdW5jdGlvbiBzKCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIGY9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/c2VsZjpcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp2b2lkIDAhPT1mP2Y6e307dmFyIG49IWYuZG9jdW1lbnQmJiEhZi5wb3N0TWVzc2FnZSxvPW4mJi9ibG9iOi9pLnRlc3QoKGYubG9jYXRpb258fHt9KS5wcm90b2NvbCksYT17fSxoPTAsYj17cGFyc2U6ZnVuY3Rpb24oZSx0KXt2YXIgaT0odD10fHx7fSkuZHluYW1pY1R5cGluZ3x8ITE7VShpKSYmKHQuZHluYW1pY1R5cGluZ0Z1bmN0aW9uPWksaT17fSk7aWYodC5keW5hbWljVHlwaW5nPWksdC50cmFuc2Zvcm09ISFVKHQudHJhbnNmb3JtKSYmdC50cmFuc2Zvcm0sdC53b3JrZXImJmIuV09SS0VSU19TVVBQT1JURUQpe3ZhciByPWZ1bmN0aW9uKCl7aWYoIWIuV09SS0VSU19TVVBQT1JURUQpcmV0dXJuITE7dmFyIGU9KGk9Zi5VUkx8fGYud2Via2l0VVJMfHxudWxsLHI9cy50b1N0cmluZygpLGIuQkxPQl9VUkx8fChiLkJMT0JfVVJMPWkuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtcIihcIixyLFwiKSgpO1wiXSx7dHlwZTpcInRleHQvamF2YXNjcmlwdFwifSkpKSksdD1uZXcgZi5Xb3JrZXIoZSk7dmFyIGkscjtyZXR1cm4gdC5vbm1lc3NhZ2U9Xyx0LmlkPWgrKyxhW3QuaWRdPXR9KCk7cmV0dXJuIHIudXNlclN0ZXA9dC5zdGVwLHIudXNlckNodW5rPXQuY2h1bmssci51c2VyQ29tcGxldGU9dC5jb21wbGV0ZSxyLnVzZXJFcnJvcj10LmVycm9yLHQuc3RlcD1VKHQuc3RlcCksdC5jaHVuaz1VKHQuY2h1bmspLHQuY29tcGxldGU9VSh0LmNvbXBsZXRlKSx0LmVycm9yPVUodC5lcnJvciksZGVsZXRlIHQud29ya2VyLHZvaWQgci5wb3N0TWVzc2FnZSh7aW5wdXQ6ZSxjb25maWc6dCx3b3JrZXJJZDpyLmlkfSl9dmFyIG49bnVsbDtiLk5PREVfU1RSRUFNX0lOUFVULFwic3RyaW5nXCI9PXR5cGVvZiBlP249dC5kb3dubG9hZD9uZXcgbCh0KTpuZXcgcCh0KTohMD09PWUucmVhZGFibGUmJlUoZS5yZWFkKSYmVShlLm9uKT9uPW5ldyBnKHQpOihmLkZpbGUmJmUgaW5zdGFuY2VvZiBGaWxlfHxlIGluc3RhbmNlb2YgT2JqZWN0KSYmKG49bmV3IGModCkpO3JldHVybiBuLnN0cmVhbShlKX0sdW5wYXJzZTpmdW5jdGlvbihlLHQpe3ZhciBuPSExLF89ITAsbT1cIixcIix2PVwiXFxyXFxuXCIscz0nXCInLGE9cytzLGk9ITEscj1udWxsOyFmdW5jdGlvbigpe2lmKFwib2JqZWN0XCIhPXR5cGVvZiB0KXJldHVybjtcInN0cmluZ1wiIT10eXBlb2YgdC5kZWxpbWl0ZXJ8fGIuQkFEX0RFTElNSVRFUlMuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybi0xIT09dC5kZWxpbWl0ZXIuaW5kZXhPZihlKX0pLmxlbmd0aHx8KG09dC5kZWxpbWl0ZXIpOyhcImJvb2xlYW5cIj09dHlwZW9mIHQucXVvdGVzfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LnF1b3Rlc3x8QXJyYXkuaXNBcnJheSh0LnF1b3RlcykpJiYobj10LnF1b3Rlcyk7XCJib29sZWFuXCIhPXR5cGVvZiB0LnNraXBFbXB0eUxpbmVzJiZcInN0cmluZ1wiIT10eXBlb2YgdC5za2lwRW1wdHlMaW5lc3x8KGk9dC5za2lwRW1wdHlMaW5lcyk7XCJzdHJpbmdcIj09dHlwZW9mIHQubmV3bGluZSYmKHY9dC5uZXdsaW5lKTtcInN0cmluZ1wiPT10eXBlb2YgdC5xdW90ZUNoYXImJihzPXQucXVvdGVDaGFyKTtcImJvb2xlYW5cIj09dHlwZW9mIHQuaGVhZGVyJiYoXz10LmhlYWRlcik7aWYoQXJyYXkuaXNBcnJheSh0LmNvbHVtbnMpKXtpZigwPT09dC5jb2x1bW5zLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJPcHRpb24gY29sdW1ucyBpcyBlbXB0eVwiKTtyPXQuY29sdW1uc312b2lkIDAhPT10LmVzY2FwZUNoYXImJihhPXQuZXNjYXBlQ2hhcitzKX0oKTt2YXIgbz1uZXcgUmVnRXhwKHEocyksXCJnXCIpO1wic3RyaW5nXCI9PXR5cGVvZiBlJiYoZT1KU09OLnBhcnNlKGUpKTtpZihBcnJheS5pc0FycmF5KGUpKXtpZighZS5sZW5ndGh8fEFycmF5LmlzQXJyYXkoZVswXSkpcmV0dXJuIHUobnVsbCxlLGkpO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBlWzBdKXJldHVybiB1KHJ8fGgoZVswXSksZSxpKX1lbHNlIGlmKFwib2JqZWN0XCI9PXR5cGVvZiBlKXJldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlLmRhdGEmJihlLmRhdGE9SlNPTi5wYXJzZShlLmRhdGEpKSxBcnJheS5pc0FycmF5KGUuZGF0YSkmJihlLmZpZWxkc3x8KGUuZmllbGRzPWUubWV0YSYmZS5tZXRhLmZpZWxkcyksZS5maWVsZHN8fChlLmZpZWxkcz1BcnJheS5pc0FycmF5KGUuZGF0YVswXSk/ZS5maWVsZHM6aChlLmRhdGFbMF0pKSxBcnJheS5pc0FycmF5KGUuZGF0YVswXSl8fFwib2JqZWN0XCI9PXR5cGVvZiBlLmRhdGFbMF18fChlLmRhdGE9W2UuZGF0YV0pKSx1KGUuZmllbGRzfHxbXSxlLmRhdGF8fFtdLGkpO3Rocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBzZXJpYWxpemUgdW5yZWNvZ25pemVkIGlucHV0XCIpO2Z1bmN0aW9uIGgoZSl7aWYoXCJvYmplY3RcIiE9dHlwZW9mIGUpcmV0dXJuW107dmFyIHQ9W107Zm9yKHZhciBpIGluIGUpdC5wdXNoKGkpO3JldHVybiB0fWZ1bmN0aW9uIHUoZSx0LGkpe3ZhciByPVwiXCI7XCJzdHJpbmdcIj09dHlwZW9mIGUmJihlPUpTT04ucGFyc2UoZSkpLFwic3RyaW5nXCI9PXR5cGVvZiB0JiYodD1KU09OLnBhcnNlKHQpKTt2YXIgbj1BcnJheS5pc0FycmF5KGUpJiYwPGUubGVuZ3RoLHM9IUFycmF5LmlzQXJyYXkodFswXSk7aWYobiYmXyl7Zm9yKHZhciBhPTA7YTxlLmxlbmd0aDthKyspMDxhJiYocis9bSkscis9eShlW2FdLGEpOzA8dC5sZW5ndGgmJihyKz12KX1mb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIGg9bj9lLmxlbmd0aDp0W29dLmxlbmd0aCx1PSExLGY9bj8wPT09T2JqZWN0LmtleXModFtvXSkubGVuZ3RoOjA9PT10W29dLmxlbmd0aDtpZihpJiYhbiYmKHU9XCJncmVlZHlcIj09PWk/XCJcIj09PXRbb10uam9pbihcIlwiKS50cmltKCk6MT09PXRbb10ubGVuZ3RoJiYwPT09dFtvXVswXS5sZW5ndGgpLFwiZ3JlZWR5XCI9PT1pJiZuKXtmb3IodmFyIGQ9W10sbD0wO2w8aDtsKyspe3ZhciBjPXM/ZVtsXTpsO2QucHVzaCh0W29dW2NdKX11PVwiXCI9PT1kLmpvaW4oXCJcIikudHJpbSgpfWlmKCF1KXtmb3IodmFyIHA9MDtwPGg7cCsrKXswPHAmJiFmJiYocis9bSk7dmFyIGc9biYmcz9lW3BdOnA7cis9eSh0W29dW2ddLHApfW88dC5sZW5ndGgtMSYmKCFpfHwwPGgmJiFmKSYmKHIrPXYpfX1yZXR1cm4gcn1mdW5jdGlvbiB5KGUsdCl7aWYobnVsbD09ZSlyZXR1cm5cIlwiO2lmKGUuY29uc3RydWN0b3I9PT1EYXRlKXJldHVybiBKU09OLnN0cmluZ2lmeShlKS5zbGljZSgxLDI1KTt2YXIgaT1lLnRvU3RyaW5nKCkucmVwbGFjZShvLGEpLHI9XCJib29sZWFuXCI9PXR5cGVvZiBuJiZufHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBuJiZuKGUsdCl8fEFycmF5LmlzQXJyYXkobikmJm5bdF18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspaWYoLTE8ZS5pbmRleE9mKHRbaV0pKXJldHVybiEwO3JldHVybiExfShpLGIuQkFEX0RFTElNSVRFUlMpfHwtMTxpLmluZGV4T2YobSl8fFwiIFwiPT09aS5jaGFyQXQoMCl8fFwiIFwiPT09aS5jaGFyQXQoaS5sZW5ndGgtMSk7cmV0dXJuIHI/cytpK3M6aX19fTtpZihiLlJFQ09SRF9TRVA9U3RyaW5nLmZyb21DaGFyQ29kZSgzMCksYi5VTklUX1NFUD1TdHJpbmcuZnJvbUNoYXJDb2RlKDMxKSxiLkJZVEVfT1JERVJfTUFSSz1cIlxcdWZlZmZcIixiLkJBRF9ERUxJTUlURVJTPVtcIlxcclwiLFwiXFxuXCIsJ1wiJyxiLkJZVEVfT1JERVJfTUFSS10sYi5XT1JLRVJTX1NVUFBPUlRFRD0hbiYmISFmLldvcmtlcixiLk5PREVfU1RSRUFNX0lOUFVUPTEsYi5Mb2NhbENodW5rU2l6ZT0xMDQ4NTc2MCxiLlJlbW90ZUNodW5rU2l6ZT01MjQyODgwLGIuRGVmYXVsdERlbGltaXRlcj1cIixcIixiLlBhcnNlcj13LGIuUGFyc2VySGFuZGxlPWksYi5OZXR3b3JrU3RyZWFtZXI9bCxiLkZpbGVTdHJlYW1lcj1jLGIuU3RyaW5nU3RyZWFtZXI9cCxiLlJlYWRhYmxlU3RyZWFtU3RyZWFtZXI9ZyxmLmpRdWVyeSl7dmFyIGQ9Zi5qUXVlcnk7ZC5mbi5wYXJzZT1mdW5jdGlvbihvKXt2YXIgaT1vLmNvbmZpZ3x8e30saD1bXTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe2lmKCEoXCJJTlBVVFwiPT09ZCh0aGlzKS5wcm9wKFwidGFnTmFtZVwiKS50b1VwcGVyQ2FzZSgpJiZcImZpbGVcIj09PWQodGhpcykuYXR0cihcInR5cGVcIikudG9Mb3dlckNhc2UoKSYmZi5GaWxlUmVhZGVyKXx8IXRoaXMuZmlsZXN8fDA9PT10aGlzLmZpbGVzLmxlbmd0aClyZXR1cm4hMDtmb3IodmFyIHQ9MDt0PHRoaXMuZmlsZXMubGVuZ3RoO3QrKyloLnB1c2goe2ZpbGU6dGhpcy5maWxlc1t0XSxpbnB1dEVsZW06dGhpcyxpbnN0YW5jZUNvbmZpZzpkLmV4dGVuZCh7fSxpKX0pfSksZSgpLHRoaXM7ZnVuY3Rpb24gZSgpe2lmKDAhPT1oLmxlbmd0aCl7dmFyIGUsdCxpLHIsbj1oWzBdO2lmKFUoby5iZWZvcmUpKXt2YXIgcz1vLmJlZm9yZShuLmZpbGUsbi5pbnB1dEVsZW0pO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBzKXtpZihcImFib3J0XCI9PT1zLmFjdGlvbilyZXR1cm4gZT1cIkFib3J0RXJyb3JcIix0PW4uZmlsZSxpPW4uaW5wdXRFbGVtLHI9cy5yZWFzb24sdm9pZChVKG8uZXJyb3IpJiZvLmVycm9yKHtuYW1lOmV9LHQsaSxyKSk7aWYoXCJza2lwXCI9PT1zLmFjdGlvbilyZXR1cm4gdm9pZCB1KCk7XCJvYmplY3RcIj09dHlwZW9mIHMuY29uZmlnJiYobi5pbnN0YW5jZUNvbmZpZz1kLmV4dGVuZChuLmluc3RhbmNlQ29uZmlnLHMuY29uZmlnKSl9ZWxzZSBpZihcInNraXBcIj09PXMpcmV0dXJuIHZvaWQgdSgpfXZhciBhPW4uaW5zdGFuY2VDb25maWcuY29tcGxldGU7bi5pbnN0YW5jZUNvbmZpZy5jb21wbGV0ZT1mdW5jdGlvbihlKXtVKGEpJiZhKGUsbi5maWxlLG4uaW5wdXRFbGVtKSx1KCl9LGIucGFyc2Uobi5maWxlLG4uaW5zdGFuY2VDb25maWcpfWVsc2UgVShvLmNvbXBsZXRlKSYmby5jb21wbGV0ZSgpfWZ1bmN0aW9uIHUoKXtoLnNwbGljZSgwLDEpLGUoKX19fWZ1bmN0aW9uIHUoZSl7dGhpcy5faGFuZGxlPW51bGwsdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fY29tcGxldGVkPSExLHRoaXMuX2hhbHRlZD0hMSx0aGlzLl9pbnB1dD1udWxsLHRoaXMuX2Jhc2VJbmRleD0wLHRoaXMuX3BhcnRpYWxMaW5lPVwiXCIsdGhpcy5fcm93Q291bnQ9MCx0aGlzLl9zdGFydD0wLHRoaXMuX25leHRDaHVuaz1udWxsLHRoaXMuaXNGaXJzdENodW5rPSEwLHRoaXMuX2NvbXBsZXRlUmVzdWx0cz17ZGF0YTpbXSxlcnJvcnM6W10sbWV0YTp7fX0sZnVuY3Rpb24oZSl7dmFyIHQ9RShlKTt0LmNodW5rU2l6ZT1wYXJzZUludCh0LmNodW5rU2l6ZSksZS5zdGVwfHxlLmNodW5rfHwodC5jaHVua1NpemU9bnVsbCk7dGhpcy5faGFuZGxlPW5ldyBpKHQpLCh0aGlzLl9oYW5kbGUuc3RyZWFtZXI9dGhpcykuX2NvbmZpZz10fS5jYWxsKHRoaXMsZSksdGhpcy5wYXJzZUNodW5rPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5pc0ZpcnN0Q2h1bmsmJlUodGhpcy5fY29uZmlnLmJlZm9yZUZpcnN0Q2h1bmspKXt2YXIgaT10aGlzLl9jb25maWcuYmVmb3JlRmlyc3RDaHVuayhlKTt2b2lkIDAhPT1pJiYoZT1pKX10aGlzLmlzRmlyc3RDaHVuaz0hMSx0aGlzLl9oYWx0ZWQ9ITE7dmFyIHI9dGhpcy5fcGFydGlhbExpbmUrZTt0aGlzLl9wYXJ0aWFsTGluZT1cIlwiO3ZhciBuPXRoaXMuX2hhbmRsZS5wYXJzZShyLHRoaXMuX2Jhc2VJbmRleCwhdGhpcy5fZmluaXNoZWQpO2lmKCF0aGlzLl9oYW5kbGUucGF1c2VkKCkmJiF0aGlzLl9oYW5kbGUuYWJvcnRlZCgpKXt2YXIgcz1uLm1ldGEuY3Vyc29yO3RoaXMuX2ZpbmlzaGVkfHwodGhpcy5fcGFydGlhbExpbmU9ci5zdWJzdHJpbmcocy10aGlzLl9iYXNlSW5kZXgpLHRoaXMuX2Jhc2VJbmRleD1zKSxuJiZuLmRhdGEmJih0aGlzLl9yb3dDb3VudCs9bi5kYXRhLmxlbmd0aCk7dmFyIGE9dGhpcy5fZmluaXNoZWR8fHRoaXMuX2NvbmZpZy5wcmV2aWV3JiZ0aGlzLl9yb3dDb3VudD49dGhpcy5fY29uZmlnLnByZXZpZXc7aWYobylmLnBvc3RNZXNzYWdlKHtyZXN1bHRzOm4sd29ya2VySWQ6Yi5XT1JLRVJfSUQsZmluaXNoZWQ6YX0pO2Vsc2UgaWYoVSh0aGlzLl9jb25maWcuY2h1bmspJiYhdCl7aWYodGhpcy5fY29uZmlnLmNodW5rKG4sdGhpcy5faGFuZGxlKSx0aGlzLl9oYW5kbGUucGF1c2VkKCl8fHRoaXMuX2hhbmRsZS5hYm9ydGVkKCkpcmV0dXJuIHZvaWQodGhpcy5faGFsdGVkPSEwKTtuPXZvaWQgMCx0aGlzLl9jb21wbGV0ZVJlc3VsdHM9dm9pZCAwfXJldHVybiB0aGlzLl9jb25maWcuc3RlcHx8dGhpcy5fY29uZmlnLmNodW5rfHwodGhpcy5fY29tcGxldGVSZXN1bHRzLmRhdGE9dGhpcy5fY29tcGxldGVSZXN1bHRzLmRhdGEuY29uY2F0KG4uZGF0YSksdGhpcy5fY29tcGxldGVSZXN1bHRzLmVycm9ycz10aGlzLl9jb21wbGV0ZVJlc3VsdHMuZXJyb3JzLmNvbmNhdChuLmVycm9ycyksdGhpcy5fY29tcGxldGVSZXN1bHRzLm1ldGE9bi5tZXRhKSx0aGlzLl9jb21wbGV0ZWR8fCFhfHwhVSh0aGlzLl9jb25maWcuY29tcGxldGUpfHxuJiZuLm1ldGEuYWJvcnRlZHx8KHRoaXMuX2NvbmZpZy5jb21wbGV0ZSh0aGlzLl9jb21wbGV0ZVJlc3VsdHMsdGhpcy5faW5wdXQpLHRoaXMuX2NvbXBsZXRlZD0hMCksYXx8biYmbi5tZXRhLnBhdXNlZHx8dGhpcy5fbmV4dENodW5rKCksbn10aGlzLl9oYWx0ZWQ9ITB9LHRoaXMuX3NlbmRFcnJvcj1mdW5jdGlvbihlKXtVKHRoaXMuX2NvbmZpZy5lcnJvcik/dGhpcy5fY29uZmlnLmVycm9yKGUpOm8mJnRoaXMuX2NvbmZpZy5lcnJvciYmZi5wb3N0TWVzc2FnZSh7d29ya2VySWQ6Yi5XT1JLRVJfSUQsZXJyb3I6ZSxmaW5pc2hlZDohMX0pfX1mdW5jdGlvbiBsKGUpe3ZhciByOyhlPWV8fHt9KS5jaHVua1NpemV8fChlLmNodW5rU2l6ZT1iLlJlbW90ZUNodW5rU2l6ZSksdS5jYWxsKHRoaXMsZSksdGhpcy5fbmV4dENodW5rPW4/ZnVuY3Rpb24oKXt0aGlzLl9yZWFkQ2h1bmsoKSx0aGlzLl9jaHVua0xvYWRlZCgpfTpmdW5jdGlvbigpe3RoaXMuX3JlYWRDaHVuaygpfSx0aGlzLnN0cmVhbT1mdW5jdGlvbihlKXt0aGlzLl9pbnB1dD1lLHRoaXMuX25leHRDaHVuaygpfSx0aGlzLl9yZWFkQ2h1bms9ZnVuY3Rpb24oKXtpZih0aGlzLl9maW5pc2hlZCl0aGlzLl9jaHVua0xvYWRlZCgpO2Vsc2V7aWYocj1uZXcgWE1MSHR0cFJlcXVlc3QsdGhpcy5fY29uZmlnLndpdGhDcmVkZW50aWFscyYmKHIud2l0aENyZWRlbnRpYWxzPXRoaXMuX2NvbmZpZy53aXRoQ3JlZGVudGlhbHMpLG58fChyLm9ubG9hZD15KHRoaXMuX2NodW5rTG9hZGVkLHRoaXMpLHIub25lcnJvcj15KHRoaXMuX2NodW5rRXJyb3IsdGhpcykpLHIub3Blbih0aGlzLl9jb25maWcuZG93bmxvYWRSZXF1ZXN0Qm9keT9cIlBPU1RcIjpcIkdFVFwiLHRoaXMuX2lucHV0LCFuKSx0aGlzLl9jb25maWcuZG93bmxvYWRSZXF1ZXN0SGVhZGVycyl7dmFyIGU9dGhpcy5fY29uZmlnLmRvd25sb2FkUmVxdWVzdEhlYWRlcnM7Zm9yKHZhciB0IGluIGUpci5zZXRSZXF1ZXN0SGVhZGVyKHQsZVt0XSl9aWYodGhpcy5fY29uZmlnLmNodW5rU2l6ZSl7dmFyIGk9dGhpcy5fc3RhcnQrdGhpcy5fY29uZmlnLmNodW5rU2l6ZS0xO3Iuc2V0UmVxdWVzdEhlYWRlcihcIlJhbmdlXCIsXCJieXRlcz1cIit0aGlzLl9zdGFydCtcIi1cIitpKX10cnl7ci5zZW5kKHRoaXMuX2NvbmZpZy5kb3dubG9hZFJlcXVlc3RCb2R5KX1jYXRjaChlKXt0aGlzLl9jaHVua0Vycm9yKGUubWVzc2FnZSl9biYmMD09PXIuc3RhdHVzJiZ0aGlzLl9jaHVua0Vycm9yKCl9fSx0aGlzLl9jaHVua0xvYWRlZD1mdW5jdGlvbigpezQ9PT1yLnJlYWR5U3RhdGUmJihyLnN0YXR1czwyMDB8fDQwMDw9ci5zdGF0dXM/dGhpcy5fY2h1bmtFcnJvcigpOih0aGlzLl9zdGFydCs9dGhpcy5fY29uZmlnLmNodW5rU2l6ZT90aGlzLl9jb25maWcuY2h1bmtTaXplOnIucmVzcG9uc2VUZXh0Lmxlbmd0aCx0aGlzLl9maW5pc2hlZD0hdGhpcy5fY29uZmlnLmNodW5rU2l6ZXx8dGhpcy5fc3RhcnQ+PWZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0UmVzcG9uc2VIZWFkZXIoXCJDb250ZW50LVJhbmdlXCIpO2lmKG51bGw9PT10KXJldHVybi0xO3JldHVybiBwYXJzZUludCh0LnN1YnN0cmluZyh0Lmxhc3RJbmRleE9mKFwiL1wiKSsxKSl9KHIpLHRoaXMucGFyc2VDaHVuayhyLnJlc3BvbnNlVGV4dCkpKX0sdGhpcy5fY2h1bmtFcnJvcj1mdW5jdGlvbihlKXt2YXIgdD1yLnN0YXR1c1RleHR8fGU7dGhpcy5fc2VuZEVycm9yKG5ldyBFcnJvcih0KSl9fWZ1bmN0aW9uIGMoZSl7dmFyIHIsbjsoZT1lfHx7fSkuY2h1bmtTaXplfHwoZS5jaHVua1NpemU9Yi5Mb2NhbENodW5rU2l6ZSksdS5jYWxsKHRoaXMsZSk7dmFyIHM9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIEZpbGVSZWFkZXI7dGhpcy5zdHJlYW09ZnVuY3Rpb24oZSl7dGhpcy5faW5wdXQ9ZSxuPWUuc2xpY2V8fGUud2Via2l0U2xpY2V8fGUubW96U2xpY2Uscz8oKHI9bmV3IEZpbGVSZWFkZXIpLm9ubG9hZD15KHRoaXMuX2NodW5rTG9hZGVkLHRoaXMpLHIub25lcnJvcj15KHRoaXMuX2NodW5rRXJyb3IsdGhpcykpOnI9bmV3IEZpbGVSZWFkZXJTeW5jLHRoaXMuX25leHRDaHVuaygpfSx0aGlzLl9uZXh0Q2h1bms9ZnVuY3Rpb24oKXt0aGlzLl9maW5pc2hlZHx8dGhpcy5fY29uZmlnLnByZXZpZXcmJiEodGhpcy5fcm93Q291bnQ8dGhpcy5fY29uZmlnLnByZXZpZXcpfHx0aGlzLl9yZWFkQ2h1bmsoKX0sdGhpcy5fcmVhZENodW5rPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5faW5wdXQ7aWYodGhpcy5fY29uZmlnLmNodW5rU2l6ZSl7dmFyIHQ9TWF0aC5taW4odGhpcy5fc3RhcnQrdGhpcy5fY29uZmlnLmNodW5rU2l6ZSx0aGlzLl9pbnB1dC5zaXplKTtlPW4uY2FsbChlLHRoaXMuX3N0YXJ0LHQpfXZhciBpPXIucmVhZEFzVGV4dChlLHRoaXMuX2NvbmZpZy5lbmNvZGluZyk7c3x8dGhpcy5fY2h1bmtMb2FkZWQoe3RhcmdldDp7cmVzdWx0Oml9fSl9LHRoaXMuX2NodW5rTG9hZGVkPWZ1bmN0aW9uKGUpe3RoaXMuX3N0YXJ0Kz10aGlzLl9jb25maWcuY2h1bmtTaXplLHRoaXMuX2ZpbmlzaGVkPSF0aGlzLl9jb25maWcuY2h1bmtTaXplfHx0aGlzLl9zdGFydD49dGhpcy5faW5wdXQuc2l6ZSx0aGlzLnBhcnNlQ2h1bmsoZS50YXJnZXQucmVzdWx0KX0sdGhpcy5fY2h1bmtFcnJvcj1mdW5jdGlvbigpe3RoaXMuX3NlbmRFcnJvcihyLmVycm9yKX19ZnVuY3Rpb24gcChlKXt2YXIgaTt1LmNhbGwodGhpcyxlPWV8fHt9KSx0aGlzLnN0cmVhbT1mdW5jdGlvbihlKXtyZXR1cm4gaT1lLHRoaXMuX25leHRDaHVuaygpfSx0aGlzLl9uZXh0Q2h1bms9ZnVuY3Rpb24oKXtpZighdGhpcy5fZmluaXNoZWQpe3ZhciBlLHQ9dGhpcy5fY29uZmlnLmNodW5rU2l6ZTtyZXR1cm4gdD8oZT1pLnN1YnN0cmluZygwLHQpLGk9aS5zdWJzdHJpbmcodCkpOihlPWksaT1cIlwiKSx0aGlzLl9maW5pc2hlZD0haSx0aGlzLnBhcnNlQ2h1bmsoZSl9fX1mdW5jdGlvbiBnKGUpe3UuY2FsbCh0aGlzLGU9ZXx8e30pO3ZhciB0PVtdLGk9ITAscj0hMTt0aGlzLnBhdXNlPWZ1bmN0aW9uKCl7dS5wcm90b3R5cGUucGF1c2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX2lucHV0LnBhdXNlKCl9LHRoaXMucmVzdW1lPWZ1bmN0aW9uKCl7dS5wcm90b3R5cGUucmVzdW1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9pbnB1dC5yZXN1bWUoKX0sdGhpcy5zdHJlYW09ZnVuY3Rpb24oZSl7dGhpcy5faW5wdXQ9ZSx0aGlzLl9pbnB1dC5vbihcImRhdGFcIix0aGlzLl9zdHJlYW1EYXRhKSx0aGlzLl9pbnB1dC5vbihcImVuZFwiLHRoaXMuX3N0cmVhbUVuZCksdGhpcy5faW5wdXQub24oXCJlcnJvclwiLHRoaXMuX3N0cmVhbUVycm9yKX0sdGhpcy5fY2hlY2tJc0ZpbmlzaGVkPWZ1bmN0aW9uKCl7ciYmMT09PXQubGVuZ3RoJiYodGhpcy5fZmluaXNoZWQ9ITApfSx0aGlzLl9uZXh0Q2h1bms9ZnVuY3Rpb24oKXt0aGlzLl9jaGVja0lzRmluaXNoZWQoKSx0Lmxlbmd0aD90aGlzLnBhcnNlQ2h1bmsodC5zaGlmdCgpKTppPSEwfSx0aGlzLl9zdHJlYW1EYXRhPXkoZnVuY3Rpb24oZSl7dHJ5e3QucHVzaChcInN0cmluZ1wiPT10eXBlb2YgZT9lOmUudG9TdHJpbmcodGhpcy5fY29uZmlnLmVuY29kaW5nKSksaSYmKGk9ITEsdGhpcy5fY2hlY2tJc0ZpbmlzaGVkKCksdGhpcy5wYXJzZUNodW5rKHQuc2hpZnQoKSkpfWNhdGNoKGUpe3RoaXMuX3N0cmVhbUVycm9yKGUpfX0sdGhpcyksdGhpcy5fc3RyZWFtRXJyb3I9eShmdW5jdGlvbihlKXt0aGlzLl9zdHJlYW1DbGVhblVwKCksdGhpcy5fc2VuZEVycm9yKGUpfSx0aGlzKSx0aGlzLl9zdHJlYW1FbmQ9eShmdW5jdGlvbigpe3RoaXMuX3N0cmVhbUNsZWFuVXAoKSxyPSEwLHRoaXMuX3N0cmVhbURhdGEoXCJcIil9LHRoaXMpLHRoaXMuX3N0cmVhbUNsZWFuVXA9eShmdW5jdGlvbigpe3RoaXMuX2lucHV0LnJlbW92ZUxpc3RlbmVyKFwiZGF0YVwiLHRoaXMuX3N0cmVhbURhdGEpLHRoaXMuX2lucHV0LnJlbW92ZUxpc3RlbmVyKFwiZW5kXCIsdGhpcy5fc3RyZWFtRW5kKSx0aGlzLl9pbnB1dC5yZW1vdmVMaXN0ZW5lcihcImVycm9yXCIsdGhpcy5fc3RyZWFtRXJyb3IpfSx0aGlzKX1mdW5jdGlvbiBpKG0pe3ZhciBhLG8saCxyPU1hdGgucG93KDIsNTMpLG49LXIscz0vXlxccyotPyhcXGQrXFwuP3xcXC5cXGQrfFxcZCtcXC5cXGQrKShlWy0rXT9cXGQrKT9cXHMqJC8sdT0vKFxcZHs0fS1bMDFdXFxkLVswLTNdXFxkVFswLTJdXFxkOlswLTVdXFxkOlswLTVdXFxkXFwuXFxkKyhbKy1dWzAtMl1cXGQ6WzAtNV1cXGR8WikpfChcXGR7NH0tWzAxXVxcZC1bMC0zXVxcZFRbMC0yXVxcZDpbMC01XVxcZDpbMC01XVxcZChbKy1dWzAtMl1cXGQ6WzAtNV1cXGR8WikpfChcXGR7NH0tWzAxXVxcZC1bMC0zXVxcZFRbMC0yXVxcZDpbMC01XVxcZChbKy1dWzAtMl1cXGQ6WzAtNV1cXGR8WikpLyx0PXRoaXMsaT0wLGY9MCxkPSExLGU9ITEsbD1bXSxjPXtkYXRhOltdLGVycm9yczpbXSxtZXRhOnt9fTtpZihVKG0uc3RlcCkpe3ZhciBwPW0uc3RlcDttLnN0ZXA9ZnVuY3Rpb24oZSl7aWYoYz1lLF8oKSlnKCk7ZWxzZXtpZihnKCksMD09PWMuZGF0YS5sZW5ndGgpcmV0dXJuO2krPWUuZGF0YS5sZW5ndGgsbS5wcmV2aWV3JiZpPm0ucHJldmlldz9vLmFib3J0KCk6KGMuZGF0YT1jLmRhdGFbMF0scChjLHQpKX19fWZ1bmN0aW9uIHYoZSl7cmV0dXJuXCJncmVlZHlcIj09PW0uc2tpcEVtcHR5TGluZXM/XCJcIj09PWUuam9pbihcIlwiKS50cmltKCk6MT09PWUubGVuZ3RoJiYwPT09ZVswXS5sZW5ndGh9ZnVuY3Rpb24gZygpe2lmKGMmJmgmJihrKFwiRGVsaW1pdGVyXCIsXCJVbmRldGVjdGFibGVEZWxpbWl0ZXJcIixcIlVuYWJsZSB0byBhdXRvLWRldGVjdCBkZWxpbWl0aW5nIGNoYXJhY3RlcjsgZGVmYXVsdGVkIHRvICdcIitiLkRlZmF1bHREZWxpbWl0ZXIrXCInXCIpLGg9ITEpLG0uc2tpcEVtcHR5TGluZXMpZm9yKHZhciBlPTA7ZTxjLmRhdGEubGVuZ3RoO2UrKyl2KGMuZGF0YVtlXSkmJmMuZGF0YS5zcGxpY2UoZS0tLDEpO3JldHVybiBfKCkmJmZ1bmN0aW9uKCl7aWYoIWMpcmV0dXJuO2Z1bmN0aW9uIGUoZSl7VShtLnRyYW5zZm9ybUhlYWRlcikmJihlPW0udHJhbnNmb3JtSGVhZGVyKGUpKSxsLnB1c2goZSl9aWYoQXJyYXkuaXNBcnJheShjLmRhdGFbMF0pKXtmb3IodmFyIHQ9MDtfKCkmJnQ8Yy5kYXRhLmxlbmd0aDt0KyspYy5kYXRhW3RdLmZvckVhY2goZSk7Yy5kYXRhLnNwbGljZSgwLDEpfWVsc2UgYy5kYXRhLmZvckVhY2goZSl9KCksZnVuY3Rpb24oKXtpZighY3x8IW0uaGVhZGVyJiYhbS5keW5hbWljVHlwaW5nJiYhbS50cmFuc2Zvcm0pcmV0dXJuIGM7ZnVuY3Rpb24gZShlLHQpe3ZhciBpLHI9bS5oZWFkZXI/e306W107Zm9yKGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIG49aSxzPWVbaV07bS5oZWFkZXImJihuPWk+PWwubGVuZ3RoP1wiX19wYXJzZWRfZXh0cmFcIjpsW2ldKSxtLnRyYW5zZm9ybSYmKHM9bS50cmFuc2Zvcm0ocyxuKSkscz15KG4scyksXCJfX3BhcnNlZF9leHRyYVwiPT09bj8ocltuXT1yW25dfHxbXSxyW25dLnB1c2gocykpOnJbbl09c31yZXR1cm4gbS5oZWFkZXImJihpPmwubGVuZ3RoP2soXCJGaWVsZE1pc21hdGNoXCIsXCJUb29NYW55RmllbGRzXCIsXCJUb28gbWFueSBmaWVsZHM6IGV4cGVjdGVkIFwiK2wubGVuZ3RoK1wiIGZpZWxkcyBidXQgcGFyc2VkIFwiK2ksZit0KTppPGwubGVuZ3RoJiZrKFwiRmllbGRNaXNtYXRjaFwiLFwiVG9vRmV3RmllbGRzXCIsXCJUb28gZmV3IGZpZWxkczogZXhwZWN0ZWQgXCIrbC5sZW5ndGgrXCIgZmllbGRzIGJ1dCBwYXJzZWQgXCIraSxmK3QpKSxyfXZhciB0PTE7IWMuZGF0YS5sZW5ndGh8fEFycmF5LmlzQXJyYXkoYy5kYXRhWzBdKT8oYy5kYXRhPWMuZGF0YS5tYXAoZSksdD1jLmRhdGEubGVuZ3RoKTpjLmRhdGE9ZShjLmRhdGEsMCk7bS5oZWFkZXImJmMubWV0YSYmKGMubWV0YS5maWVsZHM9bCk7cmV0dXJuIGYrPXQsY30oKX1mdW5jdGlvbiBfKCl7cmV0dXJuIG0uaGVhZGVyJiYwPT09bC5sZW5ndGh9ZnVuY3Rpb24geShlLHQpe3JldHVybiBpPWUsbS5keW5hbWljVHlwaW5nRnVuY3Rpb24mJnZvaWQgMD09PW0uZHluYW1pY1R5cGluZ1tpXSYmKG0uZHluYW1pY1R5cGluZ1tpXT1tLmR5bmFtaWNUeXBpbmdGdW5jdGlvbihpKSksITA9PT0obS5keW5hbWljVHlwaW5nW2ldfHxtLmR5bmFtaWNUeXBpbmcpP1widHJ1ZVwiPT09dHx8XCJUUlVFXCI9PT10fHxcImZhbHNlXCIhPT10JiZcIkZBTFNFXCIhPT10JiYoZnVuY3Rpb24oZSl7aWYocy50ZXN0KGUpKXt2YXIgdD1wYXJzZUZsb2F0KGUpO2lmKG48dCYmdDxyKXJldHVybiEwfXJldHVybiExfSh0KT9wYXJzZUZsb2F0KHQpOnUudGVzdCh0KT9uZXcgRGF0ZSh0KTpcIlwiPT09dD9udWxsOnQpOnQ7dmFyIGl9ZnVuY3Rpb24gayhlLHQsaSxyKXt2YXIgbj17dHlwZTplLGNvZGU6dCxtZXNzYWdlOml9O3ZvaWQgMCE9PXImJihuLnJvdz1yKSxjLmVycm9ycy5wdXNoKG4pfXRoaXMucGFyc2U9ZnVuY3Rpb24oZSx0LGkpe3ZhciByPW0ucXVvdGVDaGFyfHwnXCInO2lmKG0ubmV3bGluZXx8KG0ubmV3bGluZT1mdW5jdGlvbihlLHQpe2U9ZS5zdWJzdHJpbmcoMCwxMDQ4NTc2KTt2YXIgaT1uZXcgUmVnRXhwKHEodCkrXCIoW15dKj8pXCIrcSh0KSxcImdtXCIpLHI9KGU9ZS5yZXBsYWNlKGksXCJcIikpLnNwbGl0KFwiXFxyXCIpLG49ZS5zcGxpdChcIlxcblwiKSxzPTE8bi5sZW5ndGgmJm5bMF0ubGVuZ3RoPHJbMF0ubGVuZ3RoO2lmKDE9PT1yLmxlbmd0aHx8cylyZXR1cm5cIlxcblwiO2Zvcih2YXIgYT0wLG89MDtvPHIubGVuZ3RoO28rKylcIlxcblwiPT09cltvXVswXSYmYSsrO3JldHVybiBhPj1yLmxlbmd0aC8yP1wiXFxyXFxuXCI6XCJcXHJcIn0oZSxyKSksaD0hMSxtLmRlbGltaXRlcilVKG0uZGVsaW1pdGVyKSYmKG0uZGVsaW1pdGVyPW0uZGVsaW1pdGVyKGUpLGMubWV0YS5kZWxpbWl0ZXI9bS5kZWxpbWl0ZXIpO2Vsc2V7dmFyIG49ZnVuY3Rpb24oZSx0LGkscixuKXt2YXIgcyxhLG8saDtuPW58fFtcIixcIixcIlxcdFwiLFwifFwiLFwiO1wiLGIuUkVDT1JEX1NFUCxiLlVOSVRfU0VQXTtmb3IodmFyIHU9MDt1PG4ubGVuZ3RoO3UrKyl7dmFyIGY9blt1XSxkPTAsbD0wLGM9MDtvPXZvaWQgMDtmb3IodmFyIHA9bmV3IHcoe2NvbW1lbnRzOnIsZGVsaW1pdGVyOmYsbmV3bGluZTp0LHByZXZpZXc6MTB9KS5wYXJzZShlKSxnPTA7ZzxwLmRhdGEubGVuZ3RoO2crKylpZihpJiZ2KHAuZGF0YVtnXSkpYysrO2Vsc2V7dmFyIF89cC5kYXRhW2ddLmxlbmd0aDtsKz1fLHZvaWQgMCE9PW8/MDxfJiYoZCs9TWF0aC5hYnMoXy1vKSxvPV8pOm89X30wPHAuZGF0YS5sZW5ndGgmJihsLz1wLmRhdGEubGVuZ3RoLWMpLCh2b2lkIDA9PT1hfHxkPD1hKSYmKHZvaWQgMD09PWh8fGg8bCkmJjEuOTk8bCYmKGE9ZCxzPWYsaD1sKX1yZXR1cm57c3VjY2Vzc2Z1bDohIShtLmRlbGltaXRlcj1zKSxiZXN0RGVsaW1pdGVyOnN9fShlLG0ubmV3bGluZSxtLnNraXBFbXB0eUxpbmVzLG0uY29tbWVudHMsbS5kZWxpbWl0ZXJzVG9HdWVzcyk7bi5zdWNjZXNzZnVsP20uZGVsaW1pdGVyPW4uYmVzdERlbGltaXRlcjooaD0hMCxtLmRlbGltaXRlcj1iLkRlZmF1bHREZWxpbWl0ZXIpLGMubWV0YS5kZWxpbWl0ZXI9bS5kZWxpbWl0ZXJ9dmFyIHM9RShtKTtyZXR1cm4gbS5wcmV2aWV3JiZtLmhlYWRlciYmcy5wcmV2aWV3KyssYT1lLG89bmV3IHcocyksYz1vLnBhcnNlKGEsdCxpKSxnKCksZD97bWV0YTp7cGF1c2VkOiEwfX06Y3x8e21ldGE6e3BhdXNlZDohMX19fSx0aGlzLnBhdXNlZD1mdW5jdGlvbigpe3JldHVybiBkfSx0aGlzLnBhdXNlPWZ1bmN0aW9uKCl7ZD0hMCxvLmFib3J0KCksYT1VKG0uY2h1bmspP1wiXCI6YS5zdWJzdHJpbmcoby5nZXRDaGFySW5kZXgoKSl9LHRoaXMucmVzdW1lPWZ1bmN0aW9uKCl7dC5zdHJlYW1lci5faGFsdGVkPyhkPSExLHQuc3RyZWFtZXIucGFyc2VDaHVuayhhLCEwKSk6c2V0VGltZW91dCh0LnJlc3VtZSwzKX0sdGhpcy5hYm9ydGVkPWZ1bmN0aW9uKCl7cmV0dXJuIGV9LHRoaXMuYWJvcnQ9ZnVuY3Rpb24oKXtlPSEwLG8uYWJvcnQoKSxjLm1ldGEuYWJvcnRlZD0hMCxVKG0uY29tcGxldGUpJiZtLmNvbXBsZXRlKGMpLGE9XCJcIn19ZnVuY3Rpb24gcShlKXtyZXR1cm4gZS5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZyxcIlxcXFwkJlwiKX1mdW5jdGlvbiB3KGUpe3ZhciBPLEQ9KGU9ZXx8e30pLmRlbGltaXRlcixJPWUubmV3bGluZSxUPWUuY29tbWVudHMsQT1lLnN0ZXAsTD1lLnByZXZpZXcsRj1lLmZhc3RNb2RlLHo9Tz12b2lkIDA9PT1lLnF1b3RlQ2hhcj8nXCInOmUucXVvdGVDaGFyO2lmKHZvaWQgMCE9PWUuZXNjYXBlQ2hhciYmKHo9ZS5lc2NhcGVDaGFyKSwoXCJzdHJpbmdcIiE9dHlwZW9mIER8fC0xPGIuQkFEX0RFTElNSVRFUlMuaW5kZXhPZihEKSkmJihEPVwiLFwiKSxUPT09RCl0aHJvdyBuZXcgRXJyb3IoXCJDb21tZW50IGNoYXJhY3RlciBzYW1lIGFzIGRlbGltaXRlclwiKTshMD09PVQ/VD1cIiNcIjooXCJzdHJpbmdcIiE9dHlwZW9mIFR8fC0xPGIuQkFEX0RFTElNSVRFUlMuaW5kZXhPZihUKSkmJihUPSExKSxcIlxcblwiIT09SSYmXCJcXHJcIiE9PUkmJlwiXFxyXFxuXCIhPT1JJiYoST1cIlxcblwiKTt2YXIgTT0wLGo9ITE7dGhpcy5wYXJzZT1mdW5jdGlvbihhLHQsaSl7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGEpdGhyb3cgbmV3IEVycm9yKFwiSW5wdXQgbXVzdCBiZSBhIHN0cmluZ1wiKTt2YXIgcj1hLmxlbmd0aCxlPUQubGVuZ3RoLG49SS5sZW5ndGgscz1ULmxlbmd0aCxvPVUoQSksaD1bXSx1PVtdLGY9W10sZD1NPTA7aWYoIWEpcmV0dXJuIFIoKTtpZihGfHwhMSE9PUYmJi0xPT09YS5pbmRleE9mKE8pKXtmb3IodmFyIGw9YS5zcGxpdChJKSxjPTA7YzxsLmxlbmd0aDtjKyspe2lmKGY9bFtjXSxNKz1mLmxlbmd0aCxjIT09bC5sZW5ndGgtMSlNKz1JLmxlbmd0aDtlbHNlIGlmKGkpcmV0dXJuIFIoKTtpZighVHx8Zi5zdWJzdHJpbmcoMCxzKSE9PVQpe2lmKG8pe2lmKGg9W10sYihmLnNwbGl0KEQpKSxTKCksailyZXR1cm4gUigpfWVsc2UgYihmLnNwbGl0KEQpKTtpZihMJiZMPD1jKXJldHVybiBoPWguc2xpY2UoMCxMKSxSKCEwKX19cmV0dXJuIFIoKX1mb3IodmFyIHA9YS5pbmRleE9mKEQsTSksZz1hLmluZGV4T2YoSSxNKSxfPW5ldyBSZWdFeHAocSh6KStxKE8pLFwiZ1wiKSxtPWEuaW5kZXhPZihPLE0pOzspaWYoYVtNXSE9PU8paWYoVCYmMD09PWYubGVuZ3RoJiZhLnN1YnN0cmluZyhNLE0rcyk9PT1UKXtpZigtMT09PWcpcmV0dXJuIFIoKTtNPWcrbixnPWEuaW5kZXhPZihJLE0pLHA9YS5pbmRleE9mKEQsTSl9ZWxzZXtpZigtMSE9PXAmJihwPGd8fC0xPT09Zykpe2lmKCEocDxtKSl7Zi5wdXNoKGEuc3Vic3RyaW5nKE0scCkpLE09cCtlLHA9YS5pbmRleE9mKEQsTSk7Y29udGludWV9dmFyIHY9eChwLG0sZyk7aWYodiYmdm9pZCAwIT09di5uZXh0RGVsaW0pe3A9di5uZXh0RGVsaW0sbT12LnF1b3RlU2VhcmNoLGYucHVzaChhLnN1YnN0cmluZyhNLHApKSxNPXArZSxwPWEuaW5kZXhPZihELE0pO2NvbnRpbnVlfX1pZigtMT09PWcpYnJlYWs7aWYoZi5wdXNoKGEuc3Vic3RyaW5nKE0sZykpLEMoZytuKSxvJiYoUygpLGopKXJldHVybiBSKCk7aWYoTCYmaC5sZW5ndGg+PUwpcmV0dXJuIFIoITApfWVsc2UgZm9yKG09TSxNKys7Oyl7aWYoLTE9PT0obT1hLmluZGV4T2YoTyxtKzEpKSlyZXR1cm4gaXx8dS5wdXNoKHt0eXBlOlwiUXVvdGVzXCIsY29kZTpcIk1pc3NpbmdRdW90ZXNcIixtZXNzYWdlOlwiUXVvdGVkIGZpZWxkIHVudGVybWluYXRlZFwiLHJvdzpoLmxlbmd0aCxpbmRleDpNfSksRSgpO2lmKG09PT1yLTEpcmV0dXJuIEUoYS5zdWJzdHJpbmcoTSxtKS5yZXBsYWNlKF8sTykpO2lmKE8hPT16fHxhW20rMV0hPT16KXtpZihPPT09enx8MD09PW18fGFbbS0xXSE9PXopey0xIT09cCYmcDxtKzEmJihwPWEuaW5kZXhPZihELG0rMSkpLC0xIT09ZyYmZzxtKzEmJihnPWEuaW5kZXhPZihJLG0rMSkpO3ZhciB5PXcoLTE9PT1nP3A6TWF0aC5taW4ocCxnKSk7aWYoYVttKzEreV09PT1EKXtmLnB1c2goYS5zdWJzdHJpbmcoTSxtKS5yZXBsYWNlKF8sTykpLGFbTT1tKzEreStlXSE9PU8mJihtPWEuaW5kZXhPZihPLE0pKSxwPWEuaW5kZXhPZihELE0pLGc9YS5pbmRleE9mKEksTSk7YnJlYWt9dmFyIGs9dyhnKTtpZihhLnN1YnN0cmluZyhtKzErayxtKzEraytuKT09PUkpe2lmKGYucHVzaChhLnN1YnN0cmluZyhNLG0pLnJlcGxhY2UoXyxPKSksQyhtKzEraytuKSxwPWEuaW5kZXhPZihELE0pLG09YS5pbmRleE9mKE8sTSksbyYmKFMoKSxqKSlyZXR1cm4gUigpO2lmKEwmJmgubGVuZ3RoPj1MKXJldHVybiBSKCEwKTticmVha311LnB1c2goe3R5cGU6XCJRdW90ZXNcIixjb2RlOlwiSW52YWxpZFF1b3Rlc1wiLG1lc3NhZ2U6XCJUcmFpbGluZyBxdW90ZSBvbiBxdW90ZWQgZmllbGQgaXMgbWFsZm9ybWVkXCIscm93OmgubGVuZ3RoLGluZGV4Ok19KSxtKyt9fWVsc2UgbSsrfXJldHVybiBFKCk7ZnVuY3Rpb24gYihlKXtoLnB1c2goZSksZD1NfWZ1bmN0aW9uIHcoZSl7dmFyIHQ9MDtpZigtMSE9PWUpe3ZhciBpPWEuc3Vic3RyaW5nKG0rMSxlKTtpJiZcIlwiPT09aS50cmltKCkmJih0PWkubGVuZ3RoKX1yZXR1cm4gdH1mdW5jdGlvbiBFKGUpe3JldHVybiBpfHwodm9pZCAwPT09ZSYmKGU9YS5zdWJzdHJpbmcoTSkpLGYucHVzaChlKSxNPXIsYihmKSxvJiZTKCkpLFIoKX1mdW5jdGlvbiBDKGUpe009ZSxiKGYpLGY9W10sZz1hLmluZGV4T2YoSSxNKX1mdW5jdGlvbiBSKGUpe3JldHVybntkYXRhOmgsZXJyb3JzOnUsbWV0YTp7ZGVsaW1pdGVyOkQsbGluZWJyZWFrOkksYWJvcnRlZDpqLHRydW5jYXRlZDohIWUsY3Vyc29yOmQrKHR8fDApfX19ZnVuY3Rpb24gUygpe0EoUigpKSxoPVtdLHU9W119ZnVuY3Rpb24geChlLHQsaSl7dmFyIHI9e25leHREZWxpbTp2b2lkIDAscXVvdGVTZWFyY2g6dm9pZCAwfSxuPWEuaW5kZXhPZihPLHQrMSk7aWYodDxlJiZlPG4mJihuPGl8fC0xPT09aSkpe3ZhciBzPWEuaW5kZXhPZihELG4pO2lmKC0xPT09cylyZXR1cm4gcjtuPHMmJihuPWEuaW5kZXhPZihPLG4rMSkpLHI9eChzLG4saSl9ZWxzZSByPXtuZXh0RGVsaW06ZSxxdW90ZVNlYXJjaDp0fTtyZXR1cm4gcn19LHRoaXMuYWJvcnQ9ZnVuY3Rpb24oKXtqPSEwfSx0aGlzLmdldENoYXJJbmRleD1mdW5jdGlvbigpe3JldHVybiBNfX1mdW5jdGlvbiBfKGUpe3ZhciB0PWUuZGF0YSxpPWFbdC53b3JrZXJJZF0scj0hMTtpZih0LmVycm9yKWkudXNlckVycm9yKHQuZXJyb3IsdC5maWxlKTtlbHNlIGlmKHQucmVzdWx0cyYmdC5yZXN1bHRzLmRhdGEpe3ZhciBuPXthYm9ydDpmdW5jdGlvbigpe3I9ITAsbSh0LndvcmtlcklkLHtkYXRhOltdLGVycm9yczpbXSxtZXRhOnthYm9ydGVkOiEwfX0pfSxwYXVzZTp2LHJlc3VtZTp2fTtpZihVKGkudXNlclN0ZXApKXtmb3IodmFyIHM9MDtzPHQucmVzdWx0cy5kYXRhLmxlbmd0aCYmKGkudXNlclN0ZXAoe2RhdGE6dC5yZXN1bHRzLmRhdGFbc10sZXJyb3JzOnQucmVzdWx0cy5lcnJvcnMsbWV0YTp0LnJlc3VsdHMubWV0YX0sbiksIXIpO3MrKyk7ZGVsZXRlIHQucmVzdWx0c31lbHNlIFUoaS51c2VyQ2h1bmspJiYoaS51c2VyQ2h1bmsodC5yZXN1bHRzLG4sdC5maWxlKSxkZWxldGUgdC5yZXN1bHRzKX10LmZpbmlzaGVkJiYhciYmbSh0LndvcmtlcklkLHQucmVzdWx0cyl9ZnVuY3Rpb24gbShlLHQpe3ZhciBpPWFbZV07VShpLnVzZXJDb21wbGV0ZSkmJmkudXNlckNvbXBsZXRlKHQpLGkudGVybWluYXRlKCksZGVsZXRlIGFbZV19ZnVuY3Rpb24gdigpe3Rocm93IG5ldyBFcnJvcihcIk5vdCBpbXBsZW1lbnRlZC5cIil9ZnVuY3Rpb24gRShlKXtpZihcIm9iamVjdFwiIT10eXBlb2YgZXx8bnVsbD09PWUpcmV0dXJuIGU7dmFyIHQ9QXJyYXkuaXNBcnJheShlKT9bXTp7fTtmb3IodmFyIGkgaW4gZSl0W2ldPUUoZVtpXSk7cmV0dXJuIHR9ZnVuY3Rpb24geShlLHQpe3JldHVybiBmdW5jdGlvbigpe2UuYXBwbHkodCxhcmd1bWVudHMpfX1mdW5jdGlvbiBVKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGV9cmV0dXJuIG8mJihmLm9ubWVzc2FnZT1mdW5jdGlvbihlKXt2YXIgdD1lLmRhdGE7dm9pZCAwPT09Yi5XT1JLRVJfSUQmJnQmJihiLldPUktFUl9JRD10LndvcmtlcklkKTtpZihcInN0cmluZ1wiPT10eXBlb2YgdC5pbnB1dClmLnBvc3RNZXNzYWdlKHt3b3JrZXJJZDpiLldPUktFUl9JRCxyZXN1bHRzOmIucGFyc2UodC5pbnB1dCx0LmNvbmZpZyksZmluaXNoZWQ6ITB9KTtlbHNlIGlmKGYuRmlsZSYmdC5pbnB1dCBpbnN0YW5jZW9mIEZpbGV8fHQuaW5wdXQgaW5zdGFuY2VvZiBPYmplY3Qpe3ZhciBpPWIucGFyc2UodC5pbnB1dCx0LmNvbmZpZyk7aSYmZi5wb3N0TWVzc2FnZSh7d29ya2VySWQ6Yi5XT1JLRVJfSUQscmVzdWx0czppLGZpbmlzaGVkOiEwfSl9fSksKGwucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodS5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1sLChjLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHUucHJvdG90eXBlKSkuY29uc3RydWN0b3I9YywocC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShwLnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPXAsKGcucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodS5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1nLGJ9KTsiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/papaparse/papaparse.min.js\n");
|
|
7
|
-
|
|
8
|
-
/***/ })
|
|
9
|
-
|
|
10
|
-
}]);
|
package/dist/scripts/94.chunk.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
(window["webpackJsonp_clickview_lite"] = window["webpackJsonp_clickview_lite"] || []).push([[94],{
|
|
2
|
-
|
|
3
|
-
/***/ "../../../node_modules/redux-devtools-extension/index.js":
|
|
4
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
5
|
-
|
|
6
|
-
"use strict";
|
|
7
|
-
eval("\n\nvar compose = __webpack_require__(\"redux\").compose;\n\nexports.__esModule = true;\nexports.composeWithDevTools = (\n typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ?\n window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ :\n function() {\n if (arguments.length === 0) return undefined;\n if (typeof arguments[0] === 'object') return compose;\n return compose.apply(null, arguments);\n }\n);\n\nexports.devToolsEnhancer = (\n typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__ ?\n window.__REDUX_DEVTOOLS_EXTENSION__ :\n function() { return function(noop) { return noop; } }\n);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlZHV4LWRldnRvb2xzLWV4dGVuc2lvbi9pbmRleC5qcy5qcyIsInNvdXJjZXMiOlsiZmlsZTovL0M6L0NsaWNrVmlldyBQcm9qZWN0cy9jbGlja3ZpZXcvbm9kZV9tb2R1bGVzL3JlZHV4LWRldnRvb2xzLWV4dGVuc2lvbi9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxudmFyIGNvbXBvc2UgPSByZXF1aXJlKCdyZWR1eCcpLmNvbXBvc2U7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLmNvbXBvc2VXaXRoRGV2VG9vbHMgPSAoXG4gIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5fX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9DT01QT1NFX18gP1xuICAgIHdpbmRvdy5fX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9DT01QT1NFX18gOlxuICAgIGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICBpZiAodHlwZW9mIGFyZ3VtZW50c1swXSA9PT0gJ29iamVjdCcpIHJldHVybiBjb21wb3NlO1xuICAgICAgcmV0dXJuIGNvbXBvc2UuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICB9XG4pO1xuXG5leHBvcnRzLmRldlRvb2xzRW5oYW5jZXIgPSAoXG4gIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5fX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9fID9cbiAgICB3aW5kb3cuX19SRURVWF9ERVZUT09MU19FWFRFTlNJT05fXyA6XG4gICAgZnVuY3Rpb24oKSB7IHJldHVybiBmdW5jdGlvbihub29wKSB7IHJldHVybiBub29wOyB9IH1cbik7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/redux-devtools-extension/index.js\n");
|
|
8
|
-
|
|
9
|
-
/***/ })
|
|
10
|
-
|
|
11
|
-
}]);
|
package/dist/scripts/95.chunk.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
(window["webpackJsonp_clickview_lite"] = window["webpackJsonp_clickview_lite"] || []).push([[95],{
|
|
2
|
-
|
|
3
|
-
/***/ "./src/apps/user-manager/components/user-duplicates-table/UserDuplicatesRow.tsx":
|
|
4
|
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
5
|
-
|
|
6
|
-
"use strict";
|
|
7
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UserDuplicatesRow\", function() { return UserDuplicatesRow; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var libs_shared_components_svg_container_SvgContainer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"../../libs/shared/src/components/svg-container/SvgContainer.tsx\");\n/* harmony import */ var libs_shared_utils_SvgHelper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"../../libs/shared/src/utils/SvgHelper.ts\");\n/* harmony import */ var libs_shared_components_div_button_DivButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"../../libs/shared/src/components/div-button/DivButton.tsx\");\n/* harmony import */ var apps_user_manager_enums_UserValidationCode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\"./src/apps/user-manager/enums/UserValidationCode.ts\");\n\n\n\n\n\nfunction UserDuplicatesRow(props) {\n var user = props.user,\n error = props.error,\n onClickEdit = props.onClickEdit,\n onClickDelete = props.onClickDelete,\n transformYValue = props.transformYValue;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"tr\", {\n className: 'bg-light',\n style: {\n transform: \"translateY(\".concat(transformYValue, \"px)\")\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"td\", {\n className: 'p-2 text-wrap'\n }, user.firstName), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"td\", {\n className: 'p-2 text-wrap'\n }, user.surname), error === apps_user_manager_enums_UserValidationCode__WEBPACK_IMPORTED_MODULE_4__[\"UserValidationCode\"].EmailAlreadyExisted ? react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"td\", {\n className: 'p-2 text-danger font-weight-bold'\n }, user.email) : react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"td\", {\n className: 'p-2 text-wrap'\n }, user.email), error === apps_user_manager_enums_UserValidationCode__WEBPACK_IMPORTED_MODULE_4__[\"UserValidationCode\"].UsernameAlreadyExisted ? react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"td\", {\n className: 'p-2 text-danger font-weight-bold'\n }, user.username) : react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"td\", {\n className: 'p-2 text-wrap'\n }, user.username), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"td\", {\n className: 'p-2 d-flex justify-content-end'\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(libs_shared_components_div_button_DivButton__WEBPACK_IMPORTED_MODULE_3__[\"DivButton\"], {\n className: 'mr-2 cursor-pointer',\n onClick: function onClick() {\n return onClickEdit(user);\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(libs_shared_components_svg_container_SvgContainer__WEBPACK_IMPORTED_MODULE_1__[\"SvgContainer\"], {\n svgName: libs_shared_utils_SvgHelper__WEBPACK_IMPORTED_MODULE_2__[\"cvSvgLibrary\"].Edit\n })), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(libs_shared_components_div_button_DivButton__WEBPACK_IMPORTED_MODULE_3__[\"DivButton\"], {\n className: 'cursor-pointer',\n onClick: function onClick() {\n return onClickDelete(user);\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(libs_shared_components_svg_container_SvgContainer__WEBPACK_IMPORTED_MODULE_1__[\"SvgContainer\"], {\n svgName: libs_shared_utils_SvgHelper__WEBPACK_IMPORTED_MODULE_2__[\"cvSvgLibrary\"].Delete\n }))));\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXBwcy91c2VyLW1hbmFnZXIvY29tcG9uZW50cy91c2VyLWR1cGxpY2F0ZXMtdGFibGUvVXNlckR1cGxpY2F0ZXNSb3cudHN4LmpzIiwic291cmNlcyI6WyJmaWxlOi8vQzovQ2xpY2tWaWV3IFByb2plY3RzL2NsaWNrdmlldy9wYWNrYWdlcy9wcm9qZWN0cy9saXRlL3NyYy9hcHBzL3VzZXItbWFuYWdlci9jb21wb25lbnRzL3VzZXItZHVwbGljYXRlcy10YWJsZS9Vc2VyRHVwbGljYXRlc1Jvdy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcclxuXHJcbmltcG9ydCB7IFN2Z0NvbnRhaW5lciB9IGZyb20gJ2xpYnMvc2hhcmVkL2NvbXBvbmVudHMvc3ZnLWNvbnRhaW5lci9TdmdDb250YWluZXInO1xyXG5pbXBvcnQgeyBjdlN2Z0xpYnJhcnkgfSBmcm9tICdsaWJzL3NoYXJlZC91dGlscy9TdmdIZWxwZXInO1xyXG5pbXBvcnQgeyBEaXZCdXR0b24gfSBmcm9tICdsaWJzL3NoYXJlZC9jb21wb25lbnRzL2Rpdi1idXR0b24vRGl2QnV0dG9uJztcclxuXHJcbmltcG9ydCB7IEVkaXRVc2VyUmVxdWVzdCB9IGZyb20gJ2FwcHMvdXNlci1tYW5hZ2VyL2ludGVyZmFjZXMnO1xyXG5cclxuaW1wb3J0IHsgVXNlclZhbGlkYXRpb25Db2RlIH0gZnJvbSAnYXBwcy91c2VyLW1hbmFnZXIvZW51bXMvVXNlclZhbGlkYXRpb25Db2RlJztcclxuXHJcbmludGVyZmFjZSBVc2VyRHVwbGljYXRlc1Jvd1Byb3BzIHtcclxuICB1c2VyOiBFZGl0VXNlclJlcXVlc3Q7XHJcbiAgZXJyb3I6IFVzZXJWYWxpZGF0aW9uQ29kZTtcclxuICBvbkNsaWNrRWRpdDogKHVzZXI6IEVkaXRVc2VyUmVxdWVzdCkgPT4gdm9pZDtcclxuICBvbkNsaWNrRGVsZXRlOiAodXNlcjogRWRpdFVzZXJSZXF1ZXN0KSA9PiB2b2lkO1xyXG4gIHRyYW5zZm9ybVlWYWx1ZTogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gVXNlckR1cGxpY2F0ZXNSb3cocHJvcHM6IFVzZXJEdXBsaWNhdGVzUm93UHJvcHMpOiBKU1guRWxlbWVudCB7XHJcbiAgY29uc3QgeyB1c2VyLCBlcnJvciwgb25DbGlja0VkaXQsIG9uQ2xpY2tEZWxldGUsIHRyYW5zZm9ybVlWYWx1ZSB9ID0gcHJvcHM7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8dHIgY2xhc3NOYW1lPSdiZy1saWdodCcgc3R5bGU9e3sgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWSgke3RyYW5zZm9ybVlWYWx1ZX1weClgIH19PlxyXG4gICAgICA8dGQgY2xhc3NOYW1lPSdwLTIgdGV4dC13cmFwJz57dXNlci5maXJzdE5hbWV9PC90ZD5cclxuICAgICAgPHRkIGNsYXNzTmFtZT0ncC0yIHRleHQtd3JhcCc+e3VzZXIuc3VybmFtZX08L3RkPlxyXG4gICAgICB7ZXJyb3IgPT09IFVzZXJWYWxpZGF0aW9uQ29kZS5FbWFpbEFscmVhZHlFeGlzdGVkXHJcbiAgICAgICAgPyA8dGQgY2xhc3NOYW1lPSdwLTIgdGV4dC1kYW5nZXIgZm9udC13ZWlnaHQtYm9sZCc+e3VzZXIuZW1haWx9PC90ZD5cclxuICAgICAgICA6IDx0ZCBjbGFzc05hbWU9J3AtMiB0ZXh0LXdyYXAnPnt1c2VyLmVtYWlsfTwvdGQ+XHJcbiAgICAgIH1cclxuICAgICAge2Vycm9yID09PSBVc2VyVmFsaWRhdGlvbkNvZGUuVXNlcm5hbWVBbHJlYWR5RXhpc3RlZFxyXG4gICAgICAgID8gPHRkIGNsYXNzTmFtZT0ncC0yIHRleHQtZGFuZ2VyIGZvbnQtd2VpZ2h0LWJvbGQnPnt1c2VyLnVzZXJuYW1lfTwvdGQ+XHJcbiAgICAgICAgOiA8dGQgY2xhc3NOYW1lPSdwLTIgdGV4dC13cmFwJz57dXNlci51c2VybmFtZX08L3RkPlxyXG4gICAgICB9XHJcblxyXG4gICAgICA8dGQgY2xhc3NOYW1lPSdwLTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQnPlxyXG4gICAgICAgIDxEaXZCdXR0b24gY2xhc3NOYW1lPSdtci0yIGN1cnNvci1wb2ludGVyJyBvbkNsaWNrPXsoKSA9PiBvbkNsaWNrRWRpdCh1c2VyKX0+XHJcbiAgICAgICAgICA8U3ZnQ29udGFpbmVyIHN2Z05hbWU9e2N2U3ZnTGlicmFyeS5FZGl0fSAvPlxyXG4gICAgICAgIDwvRGl2QnV0dG9uPlxyXG4gICAgICAgIDxEaXZCdXR0b24gY2xhc3NOYW1lPSdjdXJzb3ItcG9pbnRlcicgb25DbGljaz17KCkgPT4gb25DbGlja0RlbGV0ZSh1c2VyKX0+XHJcbiAgICAgICAgICA8U3ZnQ29udGFpbmVyIHN2Z05hbWU9e2N2U3ZnTGlicmFyeS5EZWxldGV9IC8+XHJcbiAgICAgICAgPC9EaXZCdXR0b24+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICA8L3RyPlxyXG4gICk7XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFJQTtBQVVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUFBO0FBQ0E7QUFBQTtBQUdBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBS0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/apps/user-manager/components/user-duplicates-table/UserDuplicatesRow.tsx\n");
|
|
8
|
-
|
|
9
|
-
/***/ }),
|
|
10
|
-
|
|
11
|
-
/***/ "./src/apps/user-manager/components/user-duplicates-table/UserDuplicatesTable.tsx":
|
|
12
|
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
13
|
-
|
|
14
|
-
"use strict";
|
|
15
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UserDuplicatesTable\", function() { return UserDuplicatesTable; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var libs_shared_components_text_Text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"../../libs/shared/src/components/text/Text.tsx\");\n/* harmony import */ var _UserDuplicatesRow__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"./src/apps/user-manager/components/user-duplicates-table/UserDuplicatesRow.tsx\");\n\n\n\nvar namespace = 'userManager.userDuplicatesTable';\nvar ROW_SET_SPACING = 20; // Spacing between each duplicate set in pixels.\n\nfunction UserDuplicatesTable(props) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(libs_shared_components_text_Text__WEBPACK_IMPORTED_MODULE_1__[\"LanguageNamespaceContext\"].Provider, {\n value: namespace\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"table\", {\n className: 'w-100'\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"thead\", {\n className: 'border-bottom'\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"tr\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"th\", {\n className: 'p-2 text-nowrap'\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(libs_shared_components_text_Text__WEBPACK_IMPORTED_MODULE_1__[\"Text\"], {\n phrase: 'firstName'\n })), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"th\", {\n className: 'p-2 text-nowrap'\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(libs_shared_components_text_Text__WEBPACK_IMPORTED_MODULE_1__[\"Text\"], {\n phrase: 'lastName'\n })), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"th\", {\n className: 'p-2 text-nowrap'\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(libs_shared_components_text_Text__WEBPACK_IMPORTED_MODULE_1__[\"Text\"], {\n phrase: 'email'\n })), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"th\", {\n className: 'p-2 text-nowrap'\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(libs_shared_components_text_Text__WEBPACK_IMPORTED_MODULE_1__[\"Text\"], {\n phrase: 'username'\n })), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"th\", {\n className: 'p-2 text-nowrap'\n }, \"\\xA0\"))), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"tbody\", null, props.duplicateSets.map(function (set, setIndex) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, {\n key: setIndex\n }, set.users.map(function (u) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_UserDuplicatesRow__WEBPACK_IMPORTED_MODULE_2__[\"UserDuplicatesRow\"], {\n key: u.lookupId,\n user: u,\n error: set.errorCodes[0],\n onClickEdit: props.onClickEdit,\n onClickDelete: props.onClickDelete,\n transformYValue: setIndex * ROW_SET_SPACING\n });\n }));\n }))));\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXBwcy91c2VyLW1hbmFnZXIvY29tcG9uZW50cy91c2VyLWR1cGxpY2F0ZXMtdGFibGUvVXNlckR1cGxpY2F0ZXNUYWJsZS50c3guanMiLCJzb3VyY2VzIjpbImZpbGU6Ly9DOi9DbGlja1ZpZXcgUHJvamVjdHMvY2xpY2t2aWV3L3BhY2thZ2VzL3Byb2plY3RzL2xpdGUvc3JjL2FwcHMvdXNlci1tYW5hZ2VyL2NvbXBvbmVudHMvdXNlci1kdXBsaWNhdGVzLXRhYmxlL1VzZXJEdXBsaWNhdGVzVGFibGUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XHJcblxyXG5pbXBvcnQgeyBMYW5ndWFnZU5hbWVzcGFjZUNvbnRleHQsIFRleHQgfSBmcm9tICdsaWJzL3NoYXJlZC9jb21wb25lbnRzL3RleHQvVGV4dCc7XHJcblxyXG5pbXBvcnQgeyBFZGl0VXNlclJlcXVlc3QgfSBmcm9tICdhcHBzL3VzZXItbWFuYWdlci9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgRXJyb3JlZFVzZXJzIH0gZnJvbSAnYXBwcy91c2VyLW1hbmFnZXIvaW50ZXJmYWNlcy9CdWxrVmFsaWRhdGVVc2Vyc1Jlc3BvbnNlJztcclxuaW1wb3J0IHsgVXNlckR1cGxpY2F0ZXNSb3cgfSBmcm9tICcuL1VzZXJEdXBsaWNhdGVzUm93JztcclxuXHJcbmNvbnN0IG5hbWVzcGFjZSA9ICd1c2VyTWFuYWdlci51c2VyRHVwbGljYXRlc1RhYmxlJztcclxuXHJcbmNvbnN0IFJPV19TRVRfU1BBQ0lORyA9IDIwOyAvLyBTcGFjaW5nIGJldHdlZW4gZWFjaCBkdXBsaWNhdGUgc2V0IGluIHBpeGVscy5cclxuXHJcbmludGVyZmFjZSBVc2VyRHVwbGljYXRlc1RhYmxlUHJvcHMge1xyXG4gIGR1cGxpY2F0ZVNldHM6IEVycm9yZWRVc2VycztcclxuXHJcbiAgb25DbGlja0VkaXQ6ICh1c2VyOiBFZGl0VXNlclJlcXVlc3QpID0+IHZvaWQ7XHJcbiAgb25DbGlja0RlbGV0ZTogKHVzZXI6IEVkaXRVc2VyUmVxdWVzdCkgPT4gdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFVzZXJEdXBsaWNhdGVzVGFibGUocHJvcHM6IFVzZXJEdXBsaWNhdGVzVGFibGVQcm9wcyk6IEpTWC5FbGVtZW50IHtcclxuICByZXR1cm4gKFxyXG4gICAgPExhbmd1YWdlTmFtZXNwYWNlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17bmFtZXNwYWNlfT5cclxuICAgICAgPHRhYmxlIGNsYXNzTmFtZT0ndy0xMDAnPlxyXG4gICAgICAgIDx0aGVhZCBjbGFzc05hbWU9J2JvcmRlci1ib3R0b20nPlxyXG4gICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8dGggY2xhc3NOYW1lPSdwLTIgdGV4dC1ub3dyYXAnPjxUZXh0IHBocmFzZT0nZmlyc3ROYW1lJyAvPjwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBjbGFzc05hbWU9J3AtMiB0ZXh0LW5vd3JhcCc+PFRleHQgcGhyYXNlPSdsYXN0TmFtZScgLz48L3RoPlxyXG4gICAgICAgICAgICA8dGggY2xhc3NOYW1lPSdwLTIgdGV4dC1ub3dyYXAnPjxUZXh0IHBocmFzZT0nZW1haWwnIC8+PC90aD5cclxuICAgICAgICAgICAgPHRoIGNsYXNzTmFtZT0ncC0yIHRleHQtbm93cmFwJz48VGV4dCBwaHJhc2U9J3VzZXJuYW1lJyAvPjwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBjbGFzc05hbWU9J3AtMiB0ZXh0LW5vd3JhcCc+Jm5ic3A7PC90aD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90aGVhZD5cclxuXHJcbiAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAge3Byb3BzLmR1cGxpY2F0ZVNldHMubWFwKChzZXQsIHNldEluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPFJlYWN0LkZyYWdtZW50IGtleT17c2V0SW5kZXh9PlxyXG4gICAgICAgICAgICAgICAge3NldC51c2Vycy5tYXAodSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgIDxVc2VyRHVwbGljYXRlc1Jvd1xyXG4gICAgICAgICAgICAgICAgICAgIGtleT17dS5sb29rdXBJZH1cclxuICAgICAgICAgICAgICAgICAgICB1c2VyPXt1fVxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yPXtzZXQuZXJyb3JDb2Rlc1swXX1cclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrRWRpdD17cHJvcHMub25DbGlja0VkaXR9XHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGlja0RlbGV0ZT17cHJvcHMub25DbGlja0RlbGV0ZX1cclxuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1ZVmFsdWU9e3NldEluZGV4ICogUk9XX1NFVF9TUEFDSU5HfVxyXG4gICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0pfVxyXG4gICAgICAgIDwvdGJvZHk+XHJcbiAgICAgIDwvdGFibGU+XHJcbiAgICA8L0xhbmd1YWdlTmFtZXNwYWNlQ29udGV4dC5Qcm92aWRlcj5cclxuICApO1xyXG59Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBSUE7QUFFQTtBQUVBO0FBQ0E7QUFRQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBTUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQURBO0FBWUE7QUFLQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/apps/user-manager/components/user-duplicates-table/UserDuplicatesTable.tsx\n");
|
|
16
|
-
|
|
17
|
-
/***/ }),
|
|
18
|
-
|
|
19
|
-
/***/ "./src/apps/user-manager/views/bulk-user-upload/duplicates/BulkUserUploadDuplicatesView.tsx":
|
|
20
|
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
21
|
-
|
|
22
|
-
"use strict";
|
|
23
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BulkUserUploadDuplicatesView\", function() { return BulkUserUploadDuplicatesView; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"react-redux\");\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_bootstrap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"react-bootstrap\");\n/* harmony import */ var react_bootstrap__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var libs_common_react_hooks_UseViewModel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"../../libs/common/src/react/hooks/UseViewModel.ts\");\n/* harmony import */ var libs_common_flight__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\"../../libs/common/src/react/index.ts\");\n/* harmony import */ var libs_common_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\"../../libs/common/src/backbone/index.ts\");\n/* harmony import */ var libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\"../../libs/common/src/backbone/services/LanguageService.tsx\");\n/* harmony import */ var libs_shared_hooks_UseAlerts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(\"../../libs/shared/src/hooks/UseAlerts.ts\");\n/* harmony import */ var libs_shared_enums_UserGroup__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(\"../../libs/shared/src/enums/UserGroup.ts\");\n/* harmony import */ var libs_shared_flight_requests_UserRequests__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(\"../../libs/shared/src/flight-requests/UserRequests.ts\");\n/* harmony import */ var libs_shared_components_text_Text__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(\"../../libs/shared/src/components/text/Text.tsx\");\n/* harmony import */ var libs_analytics_AnalyticsHelper__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(\"../../libs/analytics/src/AnalyticsHelper.ts\");\n/* harmony import */ var libs_analytics_interfaces__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(\"../../libs/analytics/src/interfaces/index.ts\");\n/* harmony import */ var shared_constants_LiteViewModels__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(\"./src/shared/constants/LiteViewModels.ts\");\n/* harmony import */ var shared_constants_LiteRadioChannels__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(\"./src/shared/constants/LiteRadioChannels.ts\");\n/* harmony import */ var shared_constants_LiteActions__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(\"./src/shared/constants/LiteActions.ts\");\n/* harmony import */ var shared_hooks_useNavLock__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(\"./src/shared/hooks/useNavLock.tsx\");\n/* harmony import */ var apps_user_manager_flight_requests_SchoolUserRequests__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(\"./src/apps/user-manager/flight-requests/SchoolUserRequests.ts\");\n/* harmony import */ var apps_user_manager_components_user_duplicates_table_UserDuplicatesTable__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(\"./src/apps/user-manager/components/user-duplicates-table/UserDuplicatesTable.tsx\");\n/* harmony import */ var apps_user_manager_utils_UserManagerHelper__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(\"./src/apps/user-manager/utils/UserManagerHelper.ts\");\n/* harmony import */ var apps_user_manager_components_edit_uploaded_user_popup_EditUploadedUserPopup__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(\"./src/apps/user-manager/components/edit-uploaded-user-popup/EditUploadedUserPopup.tsx\");\n/* harmony import */ var apps_user_manager_components_delete_uploaded_user_popup_DeleteUploadedUserPopup__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(\"./src/apps/user-manager/components/delete-uploaded-user-popup/DeleteUploadedUserPopup.tsx\");\n/* harmony import */ var apps_user_manager_reducers_UserUploadReducer__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(\"./src/apps/user-manager/reducers/UserUploadReducer.ts\");\n/* harmony import */ var libs_common_backbone_utils_LocalStorageHelper__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(\"../../libs/common/src/backbone/utils/LocalStorageHelper.ts\");\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar NAV_LOCK_ID = 'user-upload-duplicates';\nfunction BulkUserUploadDuplicatesView(props) {\n var _a;\n\n var _useViewModel = Object(libs_common_react_hooks_UseViewModel__WEBPACK_IMPORTED_MODULE_3__[\"useViewModel\"])(shared_constants_LiteViewModels__WEBPACK_IMPORTED_MODULE_13__[\"ViewModelKeys\"].BULK_USER_UPLOAD),\n _useViewModel2 = _slicedToArray(_useViewModel, 2),\n users = _useViewModel2[0],\n setUsers = _useViewModel2[1];\n\n var namespace = props.userType === libs_shared_enums_UserGroup__WEBPACK_IMPORTED_MODULE_8__[\"UserGroup\"].Learner ? 'userManager.bulkStudentUploadDuplicates' : 'userManager.bulkStaffUploadDuplicates';\n var getPhrase = libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_6__[\"LanguageService\"].encloseNamespace(namespace);\n\n var _React$useState = react__WEBPACK_IMPORTED_MODULE_0___default.a.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n showSpinner = _React$useState2[0],\n setShowSpinner = _React$useState2[1];\n\n var _React$useState3 = react__WEBPACK_IMPORTED_MODULE_0___default.a.useState(false),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n hadDuplicates = _React$useState4[0],\n setHadDuplicates = _React$useState4[1];\n\n var _React$useState5 = react__WEBPACK_IMPORTED_MODULE_0___default.a.useState([]),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n duplicates = _React$useState6[0],\n setDuplicates = _React$useState6[1];\n\n var _React$useState7 = react__WEBPACK_IMPORTED_MODULE_0___default.a.useState(),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n deletingUser = _React$useState8[0],\n setDeletingUser = _React$useState8[1];\n\n var _React$useState9 = react__WEBPACK_IMPORTED_MODULE_0___default.a.useState(),\n _React$useState10 = _slicedToArray(_React$useState9, 2),\n editingUser = _React$useState10[0],\n setEditingUser = _React$useState10[1];\n\n var _React$useReducer = react__WEBPACK_IMPORTED_MODULE_0___default.a.useReducer(apps_user_manager_reducers_UserUploadReducer__WEBPACK_IMPORTED_MODULE_22__[\"UserUploadReducer\"], null),\n _React$useReducer2 = _slicedToArray(_React$useReducer, 2),\n state = _React$useReducer2[0],\n dispatch = _React$useReducer2[1];\n\n var navLock = Object(shared_hooks_useNavLock__WEBPACK_IMPORTED_MODULE_16__[\"useNavLock\"])();\n var currentUser = libs_common_flight__WEBPACK_IMPORTED_MODULE_4__[\"Flight\"].useBasicFetch(libs_shared_flight_requests_UserRequests__WEBPACK_IMPORTED_MODULE_9__[\"UserRequests\"].currentUser());\n var yearGroups = libs_common_flight__WEBPACK_IMPORTED_MODULE_4__[\"Flight\"].useBasicFetch(currentUser.data && apps_user_manager_flight_requests_SchoolUserRequests__WEBPACK_IMPORTED_MODULE_17__[\"SchoolUserRequests\"].yearGroups(currentUser.data.customerId));\n var flightDispatch = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__[\"useDispatch\"])();\n var alerts = Object(libs_shared_hooks_UseAlerts__WEBPACK_IMPORTED_MODULE_7__[\"useAlerts\"])(); // Run a validation and lock navigation on first load\n\n react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () {\n if (!(users === null || users === void 0 ? void 0 : users.length)) {\n libs_common_core__WEBPACK_IMPORTED_MODULE_5__[\"Core\"].AppLinkHelper.trigger({\n application: shared_constants_LiteRadioChannels__WEBPACK_IMPORTED_MODULE_14__[\"AppChannels\"].USER_MANAGER,\n action: shared_constants_LiteActions__WEBPACK_IMPORTED_MODULE_15__[\"Actions\"].UserManager[props.userType === libs_shared_enums_UserGroup__WEBPACK_IMPORTED_MODULE_8__[\"UserGroup\"].Learner ? 'STUDENTS' : 'STAFF']\n });\n return;\n }\n\n navLock.lock({\n id: NAV_LOCK_ID,\n title: getPhrase('navLockTitle'),\n text: getPhrase('navLockBody'),\n onConfirmUnlock: function onConfirmUnlock() {\n libs_analytics_AnalyticsHelper__WEBPACK_IMPORTED_MODULE_11__[\"AnalyticsHelper\"].logUserAction({}, libs_analytics_AnalyticsHelper__WEBPACK_IMPORTED_MODULE_11__[\"AnalyticsHelper\"].mergeOptions(props.analyticsOptions, {\n workflowPhase: libs_analytics_interfaces__WEBPACK_IMPORTED_MODULE_12__[\"WorkflowPhase\"].Discard,\n descriptor: libs_analytics_interfaces__WEBPACK_IMPORTED_MODULE_12__[\"OperationDescriptor\"].Bulk\n }));\n }\n });\n dispatch({\n type: 'init',\n payload: {\n users: users,\n invalidUsers: []\n }\n });\n setUsers(null);\n }, []);\n react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () {\n if (!(state === null || state === void 0 ? void 0 : state.users)) return;\n validate();\n }, [state === null || state === void 0 ? void 0 : state.users]);\n\n function onClickCancel() {\n libs_common_core__WEBPACK_IMPORTED_MODULE_5__[\"Core\"].AppLinkHelper.trigger({\n application: shared_constants_LiteRadioChannels__WEBPACK_IMPORTED_MODULE_14__[\"AppChannels\"].USER_MANAGER,\n action: props.userType === libs_shared_enums_UserGroup__WEBPACK_IMPORTED_MODULE_8__[\"UserGroup\"].Learner ? shared_constants_LiteActions__WEBPACK_IMPORTED_MODULE_15__[\"Actions\"].UserManager.STUDENTS : shared_constants_LiteActions__WEBPACK_IMPORTED_MODULE_15__[\"Actions\"].UserManager.STAFF\n });\n }\n\n function onClickEdit(user) {\n setEditingUser(user);\n }\n\n function onCloseEditPopup() {\n setEditingUser(null);\n props.closePopup();\n }\n\n function onClickDelete(user) {\n setDeletingUser(user);\n }\n\n function onCloseDeletePopup() {\n props.closePopup();\n setDeletingUser(null);\n }\n\n function onClickReupload(e) {\n e.preventDefault();\n\n if (e.target.getAttribute('href').includes('cv://user-manager-reupload')) {\n navLock.unlock(NAV_LOCK_ID);\n libs_common_core__WEBPACK_IMPORTED_MODULE_5__[\"Core\"].AppLinkHelper.trigger({\n application: shared_constants_LiteRadioChannels__WEBPACK_IMPORTED_MODULE_14__[\"AppChannels\"].USER_MANAGER,\n action: shared_constants_LiteActions__WEBPACK_IMPORTED_MODULE_15__[\"Actions\"].UserManager.BULK_USER_UPLOAD_POPUP,\n params: {\n userType: props.userType\n }\n });\n }\n }\n\n function validate() {\n setShowSpinner(true);\n var newDuplicates = apps_user_manager_utils_UserManagerHelper__WEBPACK_IMPORTED_MODULE_19__[\"UserManagerHelper\"].getNewDuplicates(state.users);\n\n if (newDuplicates.length) {\n setShowSpinner(false);\n setDuplicates(newDuplicates);\n if (!hadDuplicates) setHadDuplicates(true);\n return;\n } // If this passed on the first try, we save immediately.\n // If it didn't pass first try, we will trigger an applink to see a final list review page.\n\n\n if (!hadDuplicates) {\n saveUsers();\n return;\n }\n\n setDuplicates([]);\n setUsers(state.users);\n libs_common_backbone_utils_LocalStorageHelper__WEBPACK_IMPORTED_MODULE_23__[\"LocalStorageHelper\"].set(shared_constants_LiteViewModels__WEBPACK_IMPORTED_MODULE_13__[\"ViewModelKeys\"].BULK_USER_UPLOAD, props.userType);\n navLock.unlock(NAV_LOCK_ID);\n libs_common_core__WEBPACK_IMPORTED_MODULE_5__[\"Core\"].AppLinkHelper.trigger({\n application: shared_constants_LiteRadioChannels__WEBPACK_IMPORTED_MODULE_14__[\"AppChannels\"].USER_MANAGER,\n action: shared_constants_LiteActions__WEBPACK_IMPORTED_MODULE_15__[\"Actions\"].UserManager.BULK_USER_UPLOAD_REVIEW\n });\n }\n\n function saveUsers() {\n var request = apps_user_manager_utils_UserManagerHelper__WEBPACK_IMPORTED_MODULE_19__[\"UserManagerHelper\"].formatCreateUserRequest(state.users, props.userType, currentUser.data.customerId);\n libs_common_flight__WEBPACK_IMPORTED_MODULE_4__[\"Flight\"].fetch(flightDispatch, apps_user_manager_flight_requests_SchoolUserRequests__WEBPACK_IMPORTED_MODULE_17__[\"SchoolUserRequests\"].createUsers(request, function () {\n alerts.success(getPhrase('success'));\n libs_analytics_AnalyticsHelper__WEBPACK_IMPORTED_MODULE_11__[\"AnalyticsHelper\"].logUserAction({\n count: state.users.length\n }, libs_analytics_AnalyticsHelper__WEBPACK_IMPORTED_MODULE_11__[\"AnalyticsHelper\"].mergeOptions(props.analyticsOptions, {\n workflowPhase: libs_analytics_interfaces__WEBPACK_IMPORTED_MODULE_12__[\"WorkflowPhase\"].Complete,\n descriptor: libs_analytics_interfaces__WEBPACK_IMPORTED_MODULE_12__[\"OperationDescriptor\"].Bulk\n }));\n navLock.unlock(NAV_LOCK_ID);\n libs_common_core__WEBPACK_IMPORTED_MODULE_5__[\"Core\"].AppLinkHelper.trigger({\n application: shared_constants_LiteRadioChannels__WEBPACK_IMPORTED_MODULE_14__[\"AppChannels\"].USER_MANAGER,\n action: props.userType === libs_shared_enums_UserGroup__WEBPACK_IMPORTED_MODULE_8__[\"UserGroup\"].Learner ? shared_constants_LiteActions__WEBPACK_IMPORTED_MODULE_15__[\"Actions\"].UserManager.STUDENTS : shared_constants_LiteActions__WEBPACK_IMPORTED_MODULE_15__[\"Actions\"].UserManager.STAFF\n });\n }, function () {\n alerts.error(getPhrase('error'));\n }));\n }\n\n if (!((_a = state === null || state === void 0 ? void 0 : state.users) === null || _a === void 0 ? void 0 : _a.length) || !currentUser.data || !yearGroups.data || showSpinner) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: 'd-flex justify-content-center py-5 mt-5'\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__[\"Spinner\"], {\n as: 'div',\n animation: 'border',\n role: 'status'\n }));\n }\n\n if (!duplicates.length) return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null);\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(libs_shared_components_text_Text__WEBPACK_IMPORTED_MODULE_10__[\"LanguageNamespaceContext\"].Provider, {\n value: namespace\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(apps_user_manager_reducers_UserUploadReducer__WEBPACK_IMPORTED_MODULE_22__[\"UserUploadContext\"].Provider, {\n value: {\n state: state,\n dispatch: dispatch\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: 'px-3'\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: 'd-flex justify-content-between align-items-center'\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h1\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(libs_shared_components_text_Text__WEBPACK_IMPORTED_MODULE_10__[\"Text\"], {\n phrase: 'heading'\n })), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: 'd-flex align-items-center'\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", {\n className: 'btn btn-link mr-2',\n onClick: onClickCancel\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(libs_shared_components_text_Text__WEBPACK_IMPORTED_MODULE_10__[\"Text\"], {\n phrase: 'cancel'\n })), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", {\n className: \"btn btn-dark \".concat(duplicates.length ? 'disabled cursor-default' : ''),\n onClick: validate\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(libs_shared_components_text_Text__WEBPACK_IMPORTED_MODULE_10__[\"Text\"], {\n phrase: 'next'\n })))), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"main\", {\n className: 'pt-2 pb-3'\n }, duplicates.length && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h2\", {\n onClick: onClickReupload,\n className: 'font-size-normal font-weight-500'\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(libs_shared_components_text_Text__WEBPACK_IMPORTED_MODULE_10__[\"Text\"], {\n phrase: 'subheading',\n options: {\n highlightClass: 'text-danger',\n linkClass: 'info-link'\n }\n })), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(apps_user_manager_components_user_duplicates_table_UserDuplicatesTable__WEBPACK_IMPORTED_MODULE_18__[\"UserDuplicatesTable\"], {\n duplicateSets: duplicates,\n onClickEdit: onClickEdit,\n onClickDelete: onClickDelete\n }))), !!editingUser && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(apps_user_manager_components_edit_uploaded_user_popup_EditUploadedUserPopup__WEBPACK_IMPORTED_MODULE_20__[\"EditUploadedUserPopup\"], {\n user: editingUser,\n closePopup: onCloseEditPopup,\n title: getPhrase('editUser'),\n userType: props.userType,\n analyticsOptions: libs_analytics_AnalyticsHelper__WEBPACK_IMPORTED_MODULE_11__[\"AnalyticsHelper\"].mergeOptions(props.analyticsOptions, {\n actionType: libs_analytics_interfaces__WEBPACK_IMPORTED_MODULE_12__[\"UserAction\"].Edit\n }),\n currentUser: currentUser.data,\n yearGroups: yearGroups.data\n }), !!deletingUser && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(apps_user_manager_components_delete_uploaded_user_popup_DeleteUploadedUserPopup__WEBPACK_IMPORTED_MODULE_21__[\"DeleteUploadedUserPopup\"], {\n user: deletingUser,\n closePopup: onCloseDeletePopup,\n analyticsOptions: props.analyticsOptions\n }))));\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXBwcy91c2VyLW1hbmFnZXIvdmlld3MvYnVsay11c2VyLXVwbG9hZC9kdXBsaWNhdGVzL0J1bGtVc2VyVXBsb2FkRHVwbGljYXRlc1ZpZXcudHN4LmpzIiwic291cmNlcyI6WyJmaWxlOi8vQzovQ2xpY2tWaWV3IFByb2plY3RzL2NsaWNrdmlldy9wYWNrYWdlcy9wcm9qZWN0cy9saXRlL3NyYy9hcHBzL3VzZXItbWFuYWdlci92aWV3cy9idWxrLXVzZXItdXBsb2FkL2R1cGxpY2F0ZXMvQnVsa1VzZXJVcGxvYWREdXBsaWNhdGVzVmlldy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tICdyZWFjdC1yZWR1eCc7XHJcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICdyZWFjdC1ib290c3RyYXAnO1xyXG5cclxuaW1wb3J0IHsgdXNlVmlld01vZGVsIH0gZnJvbSAnbGlicy9jb21tb24vcmVhY3QvaG9va3MvVXNlVmlld01vZGVsJztcclxuaW1wb3J0IHsgRmxpZ2h0IH0gZnJvbSAnbGlicy9jb21tb24vZmxpZ2h0JztcclxuaW1wb3J0IHsgQ29yZSB9IGZyb20gJ2xpYnMvY29tbW9uL2NvcmUnO1xyXG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdsaWJzL2NvbW1vbi9iYWNrYm9uZS9zZXJ2aWNlcy9MYW5ndWFnZVNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgdXNlQWxlcnRzIH0gZnJvbSAnbGlicy9zaGFyZWQvaG9va3MvVXNlQWxlcnRzJztcclxuaW1wb3J0IHsgVXNlckdyb3VwIH0gZnJvbSAnbGlicy9zaGFyZWQvZW51bXMvVXNlckdyb3VwJztcclxuaW1wb3J0IHsgQ3VycmVudFVzZXIsIFByb3BzV2l0aEFuYWx5dGljc09wdGlvbnMsIFByb3BzV2l0aFBvcHVwVmlld1Byb3BzLCBZZWFyR3JvdXAgfSBmcm9tICdsaWJzL3NoYXJlZC9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgVXNlclJlcXVlc3RzIH0gZnJvbSAnbGlicy9zaGFyZWQvZmxpZ2h0LXJlcXVlc3RzL1VzZXJSZXF1ZXN0cyc7XHJcbmltcG9ydCB7IExhbmd1YWdlTmFtZXNwYWNlQ29udGV4dCwgVGV4dCB9IGZyb20gJ2xpYnMvc2hhcmVkL2NvbXBvbmVudHMvdGV4dC9UZXh0JztcclxuXHJcbmltcG9ydCB7IEFuYWx5dGljc0hlbHBlciB9IGZyb20gJ2xpYnMvYW5hbHl0aWNzL0FuYWx5dGljc0hlbHBlcic7XHJcbmltcG9ydCB7IFdvcmtmbG93UGhhc2UsIE9wZXJhdGlvbkRlc2NyaXB0b3IsIFVzZXJBY3Rpb24gfSBmcm9tICdsaWJzL2FuYWx5dGljcy9pbnRlcmZhY2VzJztcclxuXHJcbmltcG9ydCB7IFZpZXdNb2RlbEtleXMgfSBmcm9tICdzaGFyZWQvY29uc3RhbnRzL0xpdGVWaWV3TW9kZWxzJztcclxuaW1wb3J0IHsgQXBwQ2hhbm5lbHMgfSBmcm9tICdzaGFyZWQvY29uc3RhbnRzL0xpdGVSYWRpb0NoYW5uZWxzJztcclxuaW1wb3J0IHsgQWN0aW9ucyB9IGZyb20gJ3NoYXJlZC9jb25zdGFudHMvTGl0ZUFjdGlvbnMnO1xyXG5pbXBvcnQgeyB1c2VOYXZMb2NrIH0gZnJvbSAnc2hhcmVkL2hvb2tzL3VzZU5hdkxvY2snO1xyXG5cclxuaW1wb3J0IHsgRWRpdFVzZXJSZXF1ZXN0IH0gZnJvbSAnYXBwcy91c2VyLW1hbmFnZXIvaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFNjaG9vbFVzZXJSZXF1ZXN0cyB9IGZyb20gJ2FwcHMvdXNlci1tYW5hZ2VyL2ZsaWdodC1yZXF1ZXN0cy9TY2hvb2xVc2VyUmVxdWVzdHMnO1xyXG5pbXBvcnQgeyBVc2VyRHVwbGljYXRlc1RhYmxlIH0gZnJvbSAnYXBwcy91c2VyLW1hbmFnZXIvY29tcG9uZW50cy91c2VyLWR1cGxpY2F0ZXMtdGFibGUvVXNlckR1cGxpY2F0ZXNUYWJsZSc7XHJcbmltcG9ydCB7IEVycm9yZWRVc2VycyB9IGZyb20gJ2FwcHMvdXNlci1tYW5hZ2VyL2ludGVyZmFjZXMvQnVsa1ZhbGlkYXRlVXNlcnNSZXNwb25zZSc7XHJcbmltcG9ydCB7IFVzZXJNYW5hZ2VySGVscGVyIH0gZnJvbSAnYXBwcy91c2VyLW1hbmFnZXIvdXRpbHMvVXNlck1hbmFnZXJIZWxwZXInO1xyXG5pbXBvcnQgeyBFZGl0VXBsb2FkZWRVc2VyUG9wdXAgfSBmcm9tICdhcHBzL3VzZXItbWFuYWdlci9jb21wb25lbnRzL2VkaXQtdXBsb2FkZWQtdXNlci1wb3B1cC9FZGl0VXBsb2FkZWRVc2VyUG9wdXAnO1xyXG5pbXBvcnQgeyBEZWxldGVVcGxvYWRlZFVzZXJQb3B1cCB9IGZyb20gJ2FwcHMvdXNlci1tYW5hZ2VyL2NvbXBvbmVudHMvZGVsZXRlLXVwbG9hZGVkLXVzZXItcG9wdXAvRGVsZXRlVXBsb2FkZWRVc2VyUG9wdXAnO1xyXG5pbXBvcnQgeyBVc2VyVXBsb2FkQ29udGV4dCwgVXNlclVwbG9hZFJlZHVjZXIgfSBmcm9tICdhcHBzL3VzZXItbWFuYWdlci9yZWR1Y2Vycy9Vc2VyVXBsb2FkUmVkdWNlcic7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZUhlbHBlciB9IGZyb20gJ2xpYnMvY29tbW9uL2JhY2tib25lL3V0aWxzL0xvY2FsU3RvcmFnZUhlbHBlcic7XHJcblxyXG5jb25zdCBOQVZfTE9DS19JRCA9ICd1c2VyLXVwbG9hZC1kdXBsaWNhdGVzJztcclxuXHJcbnR5cGUgQnVsa1VzZXJVcGxvYWREdXBsaWNhdGVzVmlld1Byb3BzID0gUHJvcHNXaXRoQW5hbHl0aWNzT3B0aW9uczxQcm9wc1dpdGhQb3B1cFZpZXdQcm9wczx7XHJcbiAgdXNlclR5cGU6IFVzZXJHcm91cDtcclxufT4+O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEJ1bGtVc2VyVXBsb2FkRHVwbGljYXRlc1ZpZXcocHJvcHM6IEJ1bGtVc2VyVXBsb2FkRHVwbGljYXRlc1ZpZXdQcm9wcyk6IEpTWC5FbGVtZW50IHtcclxuICBjb25zdCBbIHVzZXJzLCBzZXRVc2VycyBdID0gdXNlVmlld01vZGVsPEVkaXRVc2VyUmVxdWVzdFtdPihWaWV3TW9kZWxLZXlzLkJVTEtfVVNFUl9VUExPQUQpO1xyXG5cclxuICBjb25zdCBuYW1lc3BhY2UgPSBwcm9wcy51c2VyVHlwZSA9PT0gVXNlckdyb3VwLkxlYXJuZXJcclxuICAgID8gJ3VzZXJNYW5hZ2VyLmJ1bGtTdHVkZW50VXBsb2FkRHVwbGljYXRlcydcclxuICAgIDogJ3VzZXJNYW5hZ2VyLmJ1bGtTdGFmZlVwbG9hZER1cGxpY2F0ZXMnO1xyXG5cclxuICBjb25zdCBnZXRQaHJhc2UgPSBMYW5ndWFnZVNlcnZpY2UuZW5jbG9zZU5hbWVzcGFjZShuYW1lc3BhY2UpO1xyXG5cclxuICBjb25zdCBbIHNob3dTcGlubmVyLCBzZXRTaG93U3Bpbm5lciBdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG4gIGNvbnN0IFsgaGFkRHVwbGljYXRlcywgc2V0SGFkRHVwbGljYXRlcyBdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG5cclxuICBjb25zdCBbIGR1cGxpY2F0ZXMsIHNldER1cGxpY2F0ZXMgXSA9IFJlYWN0LnVzZVN0YXRlPEVycm9yZWRVc2Vycz4oW10pO1xyXG5cclxuICBjb25zdCBbIGRlbGV0aW5nVXNlciwgc2V0RGVsZXRpbmdVc2VyIF0gPSBSZWFjdC51c2VTdGF0ZTxFZGl0VXNlclJlcXVlc3Q+KCk7XHJcbiAgY29uc3QgWyBlZGl0aW5nVXNlciwgc2V0RWRpdGluZ1VzZXIgXSA9IFJlYWN0LnVzZVN0YXRlPEVkaXRVc2VyUmVxdWVzdD4oKTtcclxuXHJcbiAgY29uc3QgWyBzdGF0ZSwgZGlzcGF0Y2ggXSA9IFJlYWN0LnVzZVJlZHVjZXIoVXNlclVwbG9hZFJlZHVjZXIsIG51bGwpO1xyXG5cclxuICBjb25zdCBuYXZMb2NrID0gdXNlTmF2TG9jaygpO1xyXG5cclxuICBjb25zdCBjdXJyZW50VXNlciA9IEZsaWdodC51c2VCYXNpY0ZldGNoPEN1cnJlbnRVc2VyPihVc2VyUmVxdWVzdHMuY3VycmVudFVzZXIoKSk7XHJcbiAgY29uc3QgeWVhckdyb3VwcyA9IEZsaWdodC51c2VCYXNpY0ZldGNoPFllYXJHcm91cFtdPihcclxuICAgIGN1cnJlbnRVc2VyLmRhdGEgJiYgU2Nob29sVXNlclJlcXVlc3RzLnllYXJHcm91cHMoY3VycmVudFVzZXIuZGF0YS5jdXN0b21lcklkKSk7XHJcblxyXG4gIGNvbnN0IGZsaWdodERpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcclxuICBjb25zdCBhbGVydHMgPSB1c2VBbGVydHMoKTtcclxuXHJcbiAgLy8gUnVuIGEgdmFsaWRhdGlvbiBhbmQgbG9jayBuYXZpZ2F0aW9uIG9uIGZpcnN0IGxvYWRcclxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgaWYgKCF1c2Vycz8ubGVuZ3RoKSB7XHJcbiAgICAgIENvcmUuQXBwTGlua0hlbHBlci50cmlnZ2VyKHtcclxuICAgICAgICBhcHBsaWNhdGlvbjogQXBwQ2hhbm5lbHMuVVNFUl9NQU5BR0VSLFxyXG4gICAgICAgIGFjdGlvbjogQWN0aW9ucy5Vc2VyTWFuYWdlcltwcm9wcy51c2VyVHlwZSA9PT0gVXNlckdyb3VwLkxlYXJuZXIgPyAnU1RVREVOVFMnIDogJ1NUQUZGJ11cclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbmF2TG9jay5sb2NrKHtcclxuICAgICAgaWQ6IE5BVl9MT0NLX0lELFxyXG4gICAgICB0aXRsZTogZ2V0UGhyYXNlKCduYXZMb2NrVGl0bGUnKSxcclxuICAgICAgdGV4dDogZ2V0UGhyYXNlKCduYXZMb2NrQm9keScpLFxyXG4gICAgICBvbkNvbmZpcm1VbmxvY2s6ICgpID0+IHtcclxuICAgICAgICBBbmFseXRpY3NIZWxwZXIubG9nVXNlckFjdGlvbih7fSwgQW5hbHl0aWNzSGVscGVyLm1lcmdlT3B0aW9ucyhwcm9wcy5hbmFseXRpY3NPcHRpb25zLCB7XHJcbiAgICAgICAgICB3b3JrZmxvd1BoYXNlOiBXb3JrZmxvd1BoYXNlLkRpc2NhcmQsXHJcbiAgICAgICAgICBkZXNjcmlwdG9yOiBPcGVyYXRpb25EZXNjcmlwdG9yLkJ1bGtcclxuICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGRpc3BhdGNoKHtcclxuICAgICAgdHlwZTogJ2luaXQnLFxyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgdXNlcnMsXHJcbiAgICAgICAgaW52YWxpZFVzZXJzOiBbXVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBzZXRVc2VycyhudWxsKTtcclxuICB9LCBbXSk7XHJcblxyXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBpZiAoIXN0YXRlPy51c2VycylcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHZhbGlkYXRlKCk7XHJcbiAgfSwgW3N0YXRlPy51c2Vyc10pO1xyXG5cclxuICBmdW5jdGlvbiBvbkNsaWNrQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgQ29yZS5BcHBMaW5rSGVscGVyLnRyaWdnZXIoe1xyXG4gICAgICBhcHBsaWNhdGlvbjogQXBwQ2hhbm5lbHMuVVNFUl9NQU5BR0VSLFxyXG4gICAgICBhY3Rpb246IHByb3BzLnVzZXJUeXBlID09PSBVc2VyR3JvdXAuTGVhcm5lciA/IEFjdGlvbnMuVXNlck1hbmFnZXIuU1RVREVOVFM6IEFjdGlvbnMuVXNlck1hbmFnZXIuU1RBRkZcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gb25DbGlja0VkaXQodXNlcjogRWRpdFVzZXJSZXF1ZXN0KTogdm9pZCB7XHJcbiAgICBzZXRFZGl0aW5nVXNlcih1c2VyKTtcclxuICB9XHJcblxyXG4gIGZ1bmN0aW9uIG9uQ2xvc2VFZGl0UG9wdXAoKTogdm9pZCB7XHJcbiAgICBzZXRFZGl0aW5nVXNlcihudWxsKTtcclxuICAgIHByb3BzLmNsb3NlUG9wdXAoKTtcclxuICB9XHJcblxyXG4gIGZ1bmN0aW9uIG9uQ2xpY2tEZWxldGUodXNlcjogRWRpdFVzZXJSZXF1ZXN0KTogdm9pZCB7XHJcbiAgICBzZXREZWxldGluZ1VzZXIodXNlcik7XHJcbiAgfVxyXG5cclxuICBmdW5jdGlvbiBvbkNsb3NlRGVsZXRlUG9wdXAoKTogdm9pZCB7XHJcbiAgICBwcm9wcy5jbG9zZVBvcHVwKCk7XHJcbiAgICBzZXREZWxldGluZ1VzZXIobnVsbCk7XHJcbiAgfVxyXG5cclxuICBmdW5jdGlvbiBvbkNsaWNrUmV1cGxvYWQoZTogUmVhY3QuTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIGlmICgoZS50YXJnZXQgYXMgSFRNTEFuY2hvckVsZW1lbnQpLmdldEF0dHJpYnV0ZSgnaHJlZicpLmluY2x1ZGVzKCdjdjovL3VzZXItbWFuYWdlci1yZXVwbG9hZCcpKSB7XHJcbiAgICAgIG5hdkxvY2sudW5sb2NrKE5BVl9MT0NLX0lEKTtcclxuXHJcbiAgICAgIENvcmUuQXBwTGlua0hlbHBlci50cmlnZ2VyKHtcclxuICAgICAgICBhcHBsaWNhdGlvbjogQXBwQ2hhbm5lbHMuVVNFUl9NQU5BR0VSLFxyXG4gICAgICAgIGFjdGlvbjogQWN0aW9ucy5Vc2VyTWFuYWdlci5CVUxLX1VTRVJfVVBMT0FEX1BPUFVQLFxyXG4gICAgICAgIHBhcmFtczogeyB1c2VyVHlwZTogcHJvcHMudXNlclR5cGUgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZ1bmN0aW9uIHZhbGlkYXRlKCk6IHZvaWQge1xyXG4gICAgc2V0U2hvd1NwaW5uZXIodHJ1ZSk7XHJcblxyXG4gICAgY29uc3QgbmV3RHVwbGljYXRlcyA9IFVzZXJNYW5hZ2VySGVscGVyLmdldE5ld0R1cGxpY2F0ZXMoc3RhdGUudXNlcnMpO1xyXG5cclxuICAgIGlmIChuZXdEdXBsaWNhdGVzLmxlbmd0aCkge1xyXG4gICAgICBzZXRTaG93U3Bpbm5lcihmYWxzZSk7XHJcbiAgICAgIHNldER1cGxpY2F0ZXMobmV3RHVwbGljYXRlcyk7XHJcblxyXG4gICAgICBpZiAoIWhhZER1cGxpY2F0ZXMpXHJcbiAgICAgICAgc2V0SGFkRHVwbGljYXRlcyh0cnVlKTtcclxuXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBJZiB0aGlzIHBhc3NlZCBvbiB0aGUgZmlyc3QgdHJ5LCB3ZSBzYXZlIGltbWVkaWF0ZWx5LlxyXG4gICAgLy8gSWYgaXQgZGlkbid0IHBhc3MgZmlyc3QgdHJ5LCB3ZSB3aWxsIHRyaWdnZXIgYW4gYXBwbGluayB0byBzZWUgYSBmaW5hbCBsaXN0IHJldmlldyBwYWdlLlxyXG4gICAgaWYgKCFoYWREdXBsaWNhdGVzKSB7XHJcbiAgICAgIHNhdmVVc2VycygpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RHVwbGljYXRlcyhbXSk7XHJcbiAgICBzZXRVc2VycyhzdGF0ZS51c2Vycyk7XHJcbiAgICBMb2NhbFN0b3JhZ2VIZWxwZXIuc2V0KFZpZXdNb2RlbEtleXMuQlVMS19VU0VSX1VQTE9BRCwgcHJvcHMudXNlclR5cGUpO1xyXG5cclxuICAgIG5hdkxvY2sudW5sb2NrKE5BVl9MT0NLX0lEKTtcclxuXHJcbiAgICBDb3JlLkFwcExpbmtIZWxwZXIudHJpZ2dlcih7XHJcbiAgICAgIGFwcGxpY2F0aW9uOiBBcHBDaGFubmVscy5VU0VSX01BTkFHRVIsXHJcbiAgICAgIGFjdGlvbjogQWN0aW9ucy5Vc2VyTWFuYWdlci5CVUxLX1VTRVJfVVBMT0FEX1JFVklFV1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmdW5jdGlvbiBzYXZlVXNlcnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCByZXF1ZXN0ID0gVXNlck1hbmFnZXJIZWxwZXIuZm9ybWF0Q3JlYXRlVXNlclJlcXVlc3Qoc3RhdGUudXNlcnMsIHByb3BzLnVzZXJUeXBlLCBjdXJyZW50VXNlci5kYXRhLmN1c3RvbWVySWQpO1xyXG5cclxuICAgIEZsaWdodC5mZXRjaChmbGlnaHREaXNwYXRjaCwgU2Nob29sVXNlclJlcXVlc3RzLmNyZWF0ZVVzZXJzKHJlcXVlc3QsICgpID0+IHtcclxuICAgICAgYWxlcnRzLnN1Y2Nlc3MoZ2V0UGhyYXNlKCdzdWNjZXNzJykpO1xyXG5cclxuICAgICAgQW5hbHl0aWNzSGVscGVyLmxvZ1VzZXJBY3Rpb24oe1xyXG4gICAgICAgIGNvdW50OiBzdGF0ZS51c2Vycy5sZW5ndGhcclxuICAgICAgfSwgQW5hbHl0aWNzSGVscGVyLm1lcmdlT3B0aW9ucyhwcm9wcy5hbmFseXRpY3NPcHRpb25zLCB7XHJcbiAgICAgICAgd29ya2Zsb3dQaGFzZTogV29ya2Zsb3dQaGFzZS5Db21wbGV0ZSxcclxuICAgICAgICBkZXNjcmlwdG9yOiBPcGVyYXRpb25EZXNjcmlwdG9yLkJ1bGtcclxuICAgICAgfSkpO1xyXG4gXHJcbiAgICAgIG5hdkxvY2sudW5sb2NrKE5BVl9MT0NLX0lEKTtcclxuXHJcbiAgICAgIENvcmUuQXBwTGlua0hlbHBlci50cmlnZ2VyKHtcclxuICAgICAgICBhcHBsaWNhdGlvbjogQXBwQ2hhbm5lbHMuVVNFUl9NQU5BR0VSLFxyXG4gICAgICAgIGFjdGlvbjogcHJvcHMudXNlclR5cGUgPT09IFVzZXJHcm91cC5MZWFybmVyID8gQWN0aW9ucy5Vc2VyTWFuYWdlci5TVFVERU5UUyA6IEFjdGlvbnMuVXNlck1hbmFnZXIuU1RBRkZcclxuICAgICAgfSk7XHJcbiAgICB9LCAoKSA9PiB7XHJcbiAgICAgIGFsZXJ0cy5lcnJvcihnZXRQaHJhc2UoJ2Vycm9yJykpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgaWYgKCFzdGF0ZT8udXNlcnM/Lmxlbmd0aCB8fCAhY3VycmVudFVzZXIuZGF0YSB8fCAheWVhckdyb3Vwcy5kYXRhIHx8IHNob3dTcGlubmVyKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT0nZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgcHktNSBtdC01Jz5cclxuICAgICAgICA8U3Bpbm5lciBhcz0nZGl2JyBhbmltYXRpb249J2JvcmRlcicgcm9sZT0nc3RhdHVzJyAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpZiAoIWR1cGxpY2F0ZXMubGVuZ3RoKVxyXG4gICAgcmV0dXJuIDw+PC8+O1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPExhbmd1YWdlTmFtZXNwYWNlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17bmFtZXNwYWNlfT5cclxuICAgICAgPFVzZXJVcGxvYWRDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt7IHN0YXRlLCBkaXNwYXRjaCB9fT5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ncHgtMyc+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlcic+XHJcbiAgICAgICAgICAgIDxoMT48VGV4dCBwaHJhc2U9J2hlYWRpbmcnIC8+PC9oMT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9J2QtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXInPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYnRuIGJ0bi1saW5rIG1yLTInXHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkNsaWNrQ2FuY2VsfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxUZXh0IHBocmFzZT0nY2FuY2VsJyAvPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGJ0biBidG4tZGFyayAke2R1cGxpY2F0ZXMubGVuZ3RoID8gJ2Rpc2FibGVkIGN1cnNvci1kZWZhdWx0JyA6ICcnfWB9XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXt2YWxpZGF0ZX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8VGV4dCBwaHJhc2U9J25leHQnIC8+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPG1haW4gY2xhc3NOYW1lPSdwdC0yIHBiLTMnPlxyXG4gICAgICAgICAgICB7ZHVwbGljYXRlcy5sZW5ndGggJiYgKFxyXG4gICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICA8aDIgb25DbGljaz17b25DbGlja1JldXBsb2FkfSBjbGFzc05hbWU9J2ZvbnQtc2l6ZS1ub3JtYWwgZm9udC13ZWlnaHQtNTAwJz5cclxuICAgICAgICAgICAgICAgICAgPFRleHRcclxuICAgICAgICAgICAgICAgICAgICBwaHJhc2U9J3N1YmhlYWRpbmcnXHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0Q2xhc3M6ICd0ZXh0LWRhbmdlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICBsaW5rQ2xhc3M6ICdpbmZvLWxpbmsnXHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICA8VXNlckR1cGxpY2F0ZXNUYWJsZVxyXG4gICAgICAgICAgICAgICAgICBkdXBsaWNhdGVTZXRzPXtkdXBsaWNhdGVzfVxyXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrRWRpdD17b25DbGlja0VkaXR9XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2tEZWxldGU9e29uQ2xpY2tEZWxldGV9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgPC9tYWluPlxyXG5cclxuICAgICAgICAgIHshIWVkaXRpbmdVc2VyICYmIChcclxuICAgICAgICAgICAgPEVkaXRVcGxvYWRlZFVzZXJQb3B1cFxyXG4gICAgICAgICAgICAgIHVzZXI9e2VkaXRpbmdVc2VyfVxyXG4gICAgICAgICAgICAgIGNsb3NlUG9wdXA9e29uQ2xvc2VFZGl0UG9wdXB9XHJcbiAgICAgICAgICAgICAgdGl0bGU9e2dldFBocmFzZSgnZWRpdFVzZXInKX1cclxuICAgICAgICAgICAgICB1c2VyVHlwZT17cHJvcHMudXNlclR5cGV9XHJcbiAgICAgICAgICAgICAgYW5hbHl0aWNzT3B0aW9ucz17QW5hbHl0aWNzSGVscGVyLm1lcmdlT3B0aW9ucyhwcm9wcy5hbmFseXRpY3NPcHRpb25zLCB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb25UeXBlOiBVc2VyQWN0aW9uLkVkaXRcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICBjdXJyZW50VXNlcj17Y3VycmVudFVzZXIuZGF0YX1cclxuICAgICAgICAgICAgICB5ZWFyR3JvdXBzPXt5ZWFyR3JvdXBzLmRhdGF9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgIHshIWRlbGV0aW5nVXNlciAmJiAoXHJcbiAgICAgICAgICAgIDxEZWxldGVVcGxvYWRlZFVzZXJQb3B1cFxyXG4gICAgICAgICAgICAgIHVzZXI9e2RlbGV0aW5nVXNlcn1cclxuICAgICAgICAgICAgICBjbG9zZVBvcHVwPXtvbkNsb3NlRGVsZXRlUG9wdXB9XHJcbiAgICAgICAgICAgICAgYW5hbHl0aWNzT3B0aW9ucz17cHJvcHMuYW5hbHl0aWNzT3B0aW9uc31cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvVXNlclVwbG9hZENvbnRleHQuUHJvdmlkZXI+XHJcbiAgICA8L0xhbmd1YWdlTmFtZXNwYWNlQ29udGV4dC5Qcm92aWRlcj5cclxuICApO1xyXG59Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBTUE7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUlBO0FBQ0E7QUFSQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFrQkE7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFUQTtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUZBO0FBUUE7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBRkE7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFGQTtBQUlBO0FBQUE7QUFHQTtBQUNBO0FBRkE7QUFJQTtBQUFBO0FBS0E7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFGQTtBQVNBO0FBQ0E7QUFDQTtBQUhBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBVEE7QUFlQTtBQUNBO0FBQ0E7QUFIQTtBQVVBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/apps/user-manager/views/bulk-user-upload/duplicates/BulkUserUploadDuplicatesView.tsx\n");
|
|
24
|
-
|
|
25
|
-
/***/ })
|
|
26
|
-
|
|
27
|
-
}]);
|