@appius-fr/apx 2.2.2
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/APX.mjs +117 -0
- package/README.md +115 -0
- package/dist/APX.dev.mjs +1637 -0
- package/dist/APX.mjs +1 -0
- package/dist/APX.prod.mjs +1 -0
- package/modules/common.mjs +18 -0
- package/modules/dialog/README.md +195 -0
- package/modules/dialog/css/dialog.css +118 -0
- package/modules/dialog/dialog.mjs +211 -0
- package/modules/dialog/html/dialog.html +8 -0
- package/modules/listen/listen.mjs +166 -0
- package/modules/tristate/README.md +95 -0
- package/modules/tristate/css/tristate.css +25 -0
- package/modules/tristate/tristate.mjs +172 -0
- package/package.json +80 -0
package/dist/APX.dev.mjs
ADDED
|
@@ -0,0 +1,1637 @@
|
|
|
1
|
+
/******/ var __webpack_modules__ = ({
|
|
2
|
+
|
|
3
|
+
/***/ "./node_modules/css-loader/dist/cjs.js!./modules/dialog/css/dialog.css":
|
|
4
|
+
/*!*****************************************************************************!*\
|
|
5
|
+
!*** ./node_modules/css-loader/dist/cjs.js!./modules/dialog/css/dialog.css ***!
|
|
6
|
+
\*****************************************************************************/
|
|
7
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
8
|
+
|
|
9
|
+
__webpack_require__.r(__webpack_exports__);
|
|
10
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
11
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
12
|
+
/* harmony export */ });
|
|
13
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
|
|
14
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
15
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
|
|
16
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
17
|
+
// Imports
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
|
21
|
+
// Module
|
|
22
|
+
___CSS_LOADER_EXPORT___.push([module.id, `/* Dialog styling */
|
|
23
|
+
.APX-dialog {
|
|
24
|
+
display: none;
|
|
25
|
+
position: fixed;
|
|
26
|
+
z-index: 1002;
|
|
27
|
+
left: 0;
|
|
28
|
+
top: 0;
|
|
29
|
+
width: 100%;
|
|
30
|
+
height: 100%;
|
|
31
|
+
overflow: auto;
|
|
32
|
+
background-color: rgba(0, 0, 0, 0.4);
|
|
33
|
+
/* Dimmed background for focus on dialog */
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.APX-dialog-content {
|
|
37
|
+
background-color: #fefefe;
|
|
38
|
+
padding: 40px;
|
|
39
|
+
border: none;
|
|
40
|
+
width: auto;
|
|
41
|
+
min-width: 300px;
|
|
42
|
+
max-width: 80%;
|
|
43
|
+
margin: auto;
|
|
44
|
+
border-radius: 8px;
|
|
45
|
+
box-shadow: 0px 6px 20px rgba(0, 0, 0, 0.1);
|
|
46
|
+
font-family: 'Helvetica Neue', Arial, sans-serif;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
h2.APX-dialog-title{
|
|
50
|
+
margin-top:0;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.APX-close-dialog {
|
|
54
|
+
color: #aaa;
|
|
55
|
+
float: right;
|
|
56
|
+
font-size: 24px;
|
|
57
|
+
margin-top: -10px;
|
|
58
|
+
/* Adjust positioning */
|
|
59
|
+
margin-right: -10px;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.APX-close-dialog:hover,
|
|
63
|
+
.APX-close-dialog:focus {
|
|
64
|
+
color: #333;
|
|
65
|
+
/* Darker color on hover/focus */
|
|
66
|
+
cursor: pointer;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/* Input fields styling */
|
|
70
|
+
.APX-dialog-content input[type="text"],
|
|
71
|
+
.APX-dialog-content input[type="number"],
|
|
72
|
+
.APX-dialog-content input[type="date"],
|
|
73
|
+
.APX-dialog-content input[type="datetime-local"] {
|
|
74
|
+
width: 100%;
|
|
75
|
+
padding: 10px;
|
|
76
|
+
margin-bottom: 20px;
|
|
77
|
+
border: 1px solid #ccc;
|
|
78
|
+
border-radius: 4px;
|
|
79
|
+
font-family: 'Helvetica Neue', Arial, sans-serif;
|
|
80
|
+
font-size: 16px;
|
|
81
|
+
box-sizing: border-box;
|
|
82
|
+
transition: border-color 0.3s;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.APX-dialog-content input[type="text"]:focus,
|
|
86
|
+
.APX-dialog-content input[type="number"]:focus,
|
|
87
|
+
.APX-dialog-content input[type="date"]:focus,
|
|
88
|
+
.APX-dialog-content input[type="datetime-local"]:focus {
|
|
89
|
+
border-color: #2C3E50;
|
|
90
|
+
/* Deep Blue Color */
|
|
91
|
+
outline: none;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/* Button in the dialog */
|
|
95
|
+
.APX-dialog-button-container button {
|
|
96
|
+
background-color: #2C3E50;
|
|
97
|
+
color: #ECF0F1;
|
|
98
|
+
border: none;
|
|
99
|
+
padding: 10px 20px;
|
|
100
|
+
border-radius: 5px;
|
|
101
|
+
font-size: 16px;
|
|
102
|
+
cursor: pointer;
|
|
103
|
+
transition: background-color 0.3s;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.APX-dialog-button-container button:hover {
|
|
107
|
+
background-color: #34495E;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.APX-dialog-button-container {
|
|
111
|
+
display: flex;
|
|
112
|
+
gap: 10px;
|
|
113
|
+
margin-top:1em;
|
|
114
|
+
/* spacing between buttons */
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/* Loading indicator */
|
|
118
|
+
.APX-dialog-loading-indicator {
|
|
119
|
+
display: flex;
|
|
120
|
+
justify-content: center;
|
|
121
|
+
align-items: center;
|
|
122
|
+
height: 100px;
|
|
123
|
+
width: 100%;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.APX-dialog-loading-indicator::before {
|
|
127
|
+
content: '';
|
|
128
|
+
width: 40px;
|
|
129
|
+
height: 40px;
|
|
130
|
+
border: 4px solid #f3f3f3;
|
|
131
|
+
border-top: 4px solid #2C3E50;
|
|
132
|
+
border-radius: 50%;
|
|
133
|
+
animation: APX-dialog-spin 1s linear infinite;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
@keyframes APX-dialog-spin {
|
|
137
|
+
0% { transform: rotate(0deg); }
|
|
138
|
+
100% { transform: rotate(360deg); }
|
|
139
|
+
}`, "",{"version":3,"sources":["webpack://./modules/dialog/css/dialog.css"],"names":[],"mappings":"AAAA,mBAAmB;AACnB;IACI,aAAa;IACb,eAAe;IACf,aAAa;IACb,OAAO;IACP,MAAM;IACN,WAAW;IACX,YAAY;IACZ,cAAc;IACd,oCAAoC;IACpC,0CAA0C;AAC9C;;AAEA;IACI,yBAAyB;IACzB,aAAa;IACb,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,cAAc;IACd,YAAY;IACZ,kBAAkB;IAClB,2CAA2C;IAC3C,gDAAgD;AACpD;;AAEA;IACI,YAAY;AAChB;;AAEA;IACI,WAAW;IACX,YAAY;IACZ,eAAe;IACf,iBAAiB;IACjB,uBAAuB;IACvB,mBAAmB;AACvB;;AAEA;;IAEI,WAAW;IACX,gCAAgC;IAChC,eAAe;AACnB;;AAEA,yBAAyB;AACzB;;;;IAII,WAAW;IACX,aAAa;IACb,mBAAmB;IACnB,sBAAsB;IACtB,kBAAkB;IAClB,gDAAgD;IAChD,eAAe;IACf,sBAAsB;IACtB,6BAA6B;AACjC;;AAEA;;;;IAII,qBAAqB;IACrB,oBAAoB;IACpB,aAAa;AACjB;;AAEA,yBAAyB;AACzB;IACI,yBAAyB;IACzB,cAAc;IACd,YAAY;IACZ,kBAAkB;IAClB,kBAAkB;IAClB,eAAe;IACf,eAAe;IACf,iCAAiC;AACrC;;AAEA;IACI,yBAAyB;AAC7B;;AAEA;IACI,aAAa;IACb,SAAS;IACT,cAAc;IACd,4BAA4B;AAChC;;AAEA,sBAAsB;AACtB;IACI,aAAa;IACb,uBAAuB;IACvB,mBAAmB;IACnB,aAAa;IACb,WAAW;AACf;;AAEA;IACI,WAAW;IACX,WAAW;IACX,YAAY;IACZ,yBAAyB;IACzB,6BAA6B;IAC7B,kBAAkB;IAClB,6CAA6C;AACjD;;AAEA;IACI,KAAK,uBAAuB,EAAE;IAC9B,OAAO,yBAAyB,EAAE;AACtC","sourcesContent":["/* Dialog styling */\r\n.APX-dialog {\r\n display: none;\r\n position: fixed;\r\n z-index: 1002;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n overflow: auto;\r\n background-color: rgba(0, 0, 0, 0.4);\r\n /* Dimmed background for focus on dialog */\r\n}\r\n\r\n.APX-dialog-content {\r\n background-color: #fefefe;\r\n padding: 40px;\r\n border: none;\r\n width: auto;\r\n min-width: 300px;\r\n max-width: 80%;\r\n margin: auto;\r\n border-radius: 8px;\r\n box-shadow: 0px 6px 20px rgba(0, 0, 0, 0.1);\r\n font-family: 'Helvetica Neue', Arial, sans-serif;\r\n}\r\n\r\nh2.APX-dialog-title{\r\n margin-top:0;\r\n}\r\n\r\n.APX-close-dialog {\r\n color: #aaa;\r\n float: right;\r\n font-size: 24px;\r\n margin-top: -10px;\r\n /* Adjust positioning */\r\n margin-right: -10px;\r\n}\r\n\r\n.APX-close-dialog:hover,\r\n.APX-close-dialog:focus {\r\n color: #333;\r\n /* Darker color on hover/focus */\r\n cursor: pointer;\r\n}\r\n\r\n/* Input fields styling */\r\n.APX-dialog-content input[type=\"text\"],\r\n.APX-dialog-content input[type=\"number\"],\r\n.APX-dialog-content input[type=\"date\"],\r\n.APX-dialog-content input[type=\"datetime-local\"] {\r\n width: 100%;\r\n padding: 10px;\r\n margin-bottom: 20px;\r\n border: 1px solid #ccc;\r\n border-radius: 4px;\r\n font-family: 'Helvetica Neue', Arial, sans-serif;\r\n font-size: 16px;\r\n box-sizing: border-box;\r\n transition: border-color 0.3s;\r\n}\r\n\r\n.APX-dialog-content input[type=\"text\"]:focus,\r\n.APX-dialog-content input[type=\"number\"]:focus,\r\n.APX-dialog-content input[type=\"date\"]:focus,\r\n.APX-dialog-content input[type=\"datetime-local\"]:focus {\r\n border-color: #2C3E50;\r\n /* Deep Blue Color */\r\n outline: none;\r\n}\r\n\r\n/* Button in the dialog */\r\n.APX-dialog-button-container button {\r\n background-color: #2C3E50;\r\n color: #ECF0F1;\r\n border: none;\r\n padding: 10px 20px;\r\n border-radius: 5px;\r\n font-size: 16px;\r\n cursor: pointer;\r\n transition: background-color 0.3s;\r\n}\r\n\r\n.APX-dialog-button-container button:hover {\r\n background-color: #34495E;\r\n}\r\n\r\n.APX-dialog-button-container {\r\n display: flex;\r\n gap: 10px;\r\n margin-top:1em;\r\n /* spacing between buttons */\r\n}\r\n\r\n/* Loading indicator */\r\n.APX-dialog-loading-indicator {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n height: 100px;\r\n width: 100%;\r\n}\r\n\r\n.APX-dialog-loading-indicator::before {\r\n content: '';\r\n width: 40px;\r\n height: 40px;\r\n border: 4px solid #f3f3f3;\r\n border-top: 4px solid #2C3E50;\r\n border-radius: 50%;\r\n animation: APX-dialog-spin 1s linear infinite;\r\n}\r\n\r\n@keyframes APX-dialog-spin {\r\n 0% { transform: rotate(0deg); }\r\n 100% { transform: rotate(360deg); }\r\n}"],"sourceRoot":""}]);
|
|
140
|
+
// Exports
|
|
141
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
/***/ }),
|
|
145
|
+
|
|
146
|
+
/***/ "./node_modules/css-loader/dist/cjs.js!./modules/tristate/css/tristate.css":
|
|
147
|
+
/*!*********************************************************************************!*\
|
|
148
|
+
!*** ./node_modules/css-loader/dist/cjs.js!./modules/tristate/css/tristate.css ***!
|
|
149
|
+
\*********************************************************************************/
|
|
150
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
151
|
+
|
|
152
|
+
__webpack_require__.r(__webpack_exports__);
|
|
153
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
154
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
155
|
+
/* harmony export */ });
|
|
156
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
|
|
157
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
158
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
|
|
159
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
160
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/getUrl.js */ "./node_modules/css-loader/dist/runtime/getUrl.js");
|
|
161
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);
|
|
162
|
+
// Imports
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
var ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20%20fill%3D%22%23cccccc%22%20d%3D%22M25.107%2032.030h-18.214c-3.456%200-6.268-2.81-6.268-6.264v-19.529c0-3.456%202.812-6.268%206.268-6.268h18.214c3.456%200%206.268%202.812%206.268%206.268v19.529c0%203.452-2.812%206.264-6.268%206.264zM6.893%201.85c-2.419%200-4.386%201.967-4.386%204.386v19.529c0%202.417%201.967%204.382%204.386%204.382h18.214c2.419%200%204.386-1.965%204.386-4.382v-19.529c0-2.419-1.967-4.386-4.386-4.386h-18.214z%22%3E%3C/path%3E%3C/svg%3E */ "data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20%20fill%3D%22%23cccccc%22%20d%3D%22M25.107%2032.030h-18.214c-3.456%200-6.268-2.81-6.268-6.264v-19.529c0-3.456%202.812-6.268%206.268-6.268h18.214c3.456%200%206.268%202.812%206.268%206.268v19.529c0%203.452-2.812%206.264-6.268%206.264zM6.893%201.85c-2.419%200-4.386%201.967-4.386%204.386v19.529c0%202.417%201.967%204.382%204.386%204.382h18.214c2.419%200%204.386-1.965%204.386-4.382v-19.529c0-2.419-1.967-4.386-4.386-4.386h-18.214z%22%3E%3C/path%3E%3C/svg%3E"), __webpack_require__.b);
|
|
167
|
+
var ___CSS_LOADER_URL_IMPORT_1___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20fill%3D%22%230654ba%22%20d%3D%22M0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705zM5.313%2017.587l7.039%206.839%2013.831-13.439-2.636-2.561-10.929%2010.62-4.442-4.317-2.862%202.858z%22%3E%3C/path%3E%3C/svg%3E */ "data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20fill%3D%22%230654ba%22%20d%3D%22M0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705zM5.313%2017.587l7.039%206.839%2013.831-13.439-2.636-2.561-10.929%2010.62-4.442-4.317-2.862%202.858z%22%3E%3C/path%3E%3C/svg%3E"), __webpack_require__.b);
|
|
168
|
+
var ___CSS_LOADER_URL_IMPORT_2___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20viewBox%3D%220%200%2032%2032%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22m0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705z%22%20fill%3D%22%23f00%22%2F%3E%3Cpath%20d%3D%22m8%208%2016%2016%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3Cpath%20d%3D%22M24%208L8%2024%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E */ "data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20viewBox%3D%220%200%2032%2032%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22m0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705z%22%20fill%3D%22%23f00%22%2F%3E%3Cpath%20d%3D%22m8%208%2016%2016%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3Cpath%20d%3D%22M24%208L8%2024%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E"), __webpack_require__.b);
|
|
169
|
+
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
|
170
|
+
var ___CSS_LOADER_URL_REPLACEMENT_0___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);
|
|
171
|
+
var ___CSS_LOADER_URL_REPLACEMENT_1___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_1___);
|
|
172
|
+
var ___CSS_LOADER_URL_REPLACEMENT_2___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_2___);
|
|
173
|
+
// Module
|
|
174
|
+
___CSS_LOADER_EXPORT___.push([module.id, `.apx-tristate {
|
|
175
|
+
display: inline-block;
|
|
176
|
+
vertical-align: middle;
|
|
177
|
+
text-align: center;
|
|
178
|
+
cursor: pointer;
|
|
179
|
+
position: relative;
|
|
180
|
+
min-width:13px;
|
|
181
|
+
min-height:13px;
|
|
182
|
+
background-size: contain;
|
|
183
|
+
background-color: white;
|
|
184
|
+
border-radius:3px;
|
|
185
|
+
}
|
|
186
|
+
.apx-tristate.unchecked {
|
|
187
|
+
background-image: url(${___CSS_LOADER_URL_REPLACEMENT_0___});
|
|
188
|
+
}
|
|
189
|
+
.apx-tristate.checked {
|
|
190
|
+
background-image: url(${___CSS_LOADER_URL_REPLACEMENT_1___});
|
|
191
|
+
background-repeat: no-repeat;
|
|
192
|
+
background-position: center;
|
|
193
|
+
}
|
|
194
|
+
.apx-tristate.crossed {
|
|
195
|
+
background-image: url(${___CSS_LOADER_URL_REPLACEMENT_2___});
|
|
196
|
+
background-repeat: no-repeat;
|
|
197
|
+
background-position: center;
|
|
198
|
+
}`, "",{"version":3,"sources":["webpack://./modules/tristate/css/tristate.css"],"names":[],"mappings":"AAAA;IACI,qBAAqB;IACrB,sBAAsB;IACtB,kBAAkB;IAClB,eAAe;IACf,kBAAkB;IAClB,cAAc;IACd,eAAe;IACf,wBAAwB;IACxB,uBAAuB;IACvB,iBAAiB;AACrB;AACA;IACI,yDAAylB;AAC7lB;AACA;IACI,yDAA6e;IAC7e,4BAA4B;IAC5B,2BAA2B;AAC/B;AACA;IACI,yDAAsnB;IACtnB,4BAA4B;IAC5B,2BAA2B;AAC/B","sourcesContent":[".apx-tristate {\r\n display: inline-block;\r\n vertical-align: middle;\r\n text-align: center;\r\n cursor: pointer;\r\n position: relative;\r\n min-width:13px;\r\n min-height:13px;\r\n background-size: contain;\r\n background-color: white;\r\n border-radius:3px;\r\n}\r\n.apx-tristate.unchecked {\r\n background-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20%20fill%3D%22%23cccccc%22%20d%3D%22M25.107%2032.030h-18.214c-3.456%200-6.268-2.81-6.268-6.264v-19.529c0-3.456%202.812-6.268%206.268-6.268h18.214c3.456%200%206.268%202.812%206.268%206.268v19.529c0%203.452-2.812%206.264-6.268%206.264zM6.893%201.85c-2.419%200-4.386%201.967-4.386%204.386v19.529c0%202.417%201.967%204.382%204.386%204.382h18.214c2.419%200%204.386-1.965%204.386-4.382v-19.529c0-2.419-1.967-4.386-4.386-4.386h-18.214z%22%3E%3C/path%3E%3C/svg%3E');\r\n}\r\n.apx-tristate.checked {\r\n background-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20fill%3D%22%230654ba%22%20d%3D%22M0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705zM5.313%2017.587l7.039%206.839%2013.831-13.439-2.636-2.561-10.929%2010.62-4.442-4.317-2.862%202.858z%22%3E%3C/path%3E%3C/svg%3E');\r\n background-repeat: no-repeat;\r\n background-position: center;\r\n}\r\n.apx-tristate.crossed {\r\n background-image: url('data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20viewBox%3D%220%200%2032%2032%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22m0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705z%22%20fill%3D%22%23f00%22%2F%3E%3Cpath%20d%3D%22m8%208%2016%2016%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3Cpath%20d%3D%22M24%208L8%2024%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E');\r\n background-repeat: no-repeat;\r\n background-position: center;\r\n}"],"sourceRoot":""}]);
|
|
199
|
+
// Exports
|
|
200
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
/***/ }),
|
|
204
|
+
|
|
205
|
+
/***/ "./node_modules/css-loader/dist/runtime/api.js":
|
|
206
|
+
/*!*****************************************************!*\
|
|
207
|
+
!*** ./node_modules/css-loader/dist/runtime/api.js ***!
|
|
208
|
+
\*****************************************************/
|
|
209
|
+
/***/ ((module) => {
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
/*
|
|
214
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
215
|
+
Author Tobias Koppers @sokra
|
|
216
|
+
*/
|
|
217
|
+
module.exports = function (cssWithMappingToString) {
|
|
218
|
+
var list = [];
|
|
219
|
+
|
|
220
|
+
// return the list of modules as css string
|
|
221
|
+
list.toString = function toString() {
|
|
222
|
+
return this.map(function (item) {
|
|
223
|
+
var content = "";
|
|
224
|
+
var needLayer = typeof item[5] !== "undefined";
|
|
225
|
+
if (item[4]) {
|
|
226
|
+
content += "@supports (".concat(item[4], ") {");
|
|
227
|
+
}
|
|
228
|
+
if (item[2]) {
|
|
229
|
+
content += "@media ".concat(item[2], " {");
|
|
230
|
+
}
|
|
231
|
+
if (needLayer) {
|
|
232
|
+
content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {");
|
|
233
|
+
}
|
|
234
|
+
content += cssWithMappingToString(item);
|
|
235
|
+
if (needLayer) {
|
|
236
|
+
content += "}";
|
|
237
|
+
}
|
|
238
|
+
if (item[2]) {
|
|
239
|
+
content += "}";
|
|
240
|
+
}
|
|
241
|
+
if (item[4]) {
|
|
242
|
+
content += "}";
|
|
243
|
+
}
|
|
244
|
+
return content;
|
|
245
|
+
}).join("");
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
// import a list of modules into the list
|
|
249
|
+
list.i = function i(modules, media, dedupe, supports, layer) {
|
|
250
|
+
if (typeof modules === "string") {
|
|
251
|
+
modules = [[null, modules, undefined]];
|
|
252
|
+
}
|
|
253
|
+
var alreadyImportedModules = {};
|
|
254
|
+
if (dedupe) {
|
|
255
|
+
for (var k = 0; k < this.length; k++) {
|
|
256
|
+
var id = this[k][0];
|
|
257
|
+
if (id != null) {
|
|
258
|
+
alreadyImportedModules[id] = true;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
for (var _k = 0; _k < modules.length; _k++) {
|
|
263
|
+
var item = [].concat(modules[_k]);
|
|
264
|
+
if (dedupe && alreadyImportedModules[item[0]]) {
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
if (typeof layer !== "undefined") {
|
|
268
|
+
if (typeof item[5] === "undefined") {
|
|
269
|
+
item[5] = layer;
|
|
270
|
+
} else {
|
|
271
|
+
item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}");
|
|
272
|
+
item[5] = layer;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
if (media) {
|
|
276
|
+
if (!item[2]) {
|
|
277
|
+
item[2] = media;
|
|
278
|
+
} else {
|
|
279
|
+
item[1] = "@media ".concat(item[2], " {").concat(item[1], "}");
|
|
280
|
+
item[2] = media;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
if (supports) {
|
|
284
|
+
if (!item[4]) {
|
|
285
|
+
item[4] = "".concat(supports);
|
|
286
|
+
} else {
|
|
287
|
+
item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}");
|
|
288
|
+
item[4] = supports;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
list.push(item);
|
|
292
|
+
}
|
|
293
|
+
};
|
|
294
|
+
return list;
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
/***/ }),
|
|
298
|
+
|
|
299
|
+
/***/ "./node_modules/css-loader/dist/runtime/getUrl.js":
|
|
300
|
+
/*!********************************************************!*\
|
|
301
|
+
!*** ./node_modules/css-loader/dist/runtime/getUrl.js ***!
|
|
302
|
+
\********************************************************/
|
|
303
|
+
/***/ ((module) => {
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
module.exports = function (url, options) {
|
|
308
|
+
if (!options) {
|
|
309
|
+
options = {};
|
|
310
|
+
}
|
|
311
|
+
if (!url) {
|
|
312
|
+
return url;
|
|
313
|
+
}
|
|
314
|
+
url = String(url.__esModule ? url.default : url);
|
|
315
|
+
|
|
316
|
+
// If url is already wrapped in quotes, remove them
|
|
317
|
+
if (/^['"].*['"]$/.test(url)) {
|
|
318
|
+
url = url.slice(1, -1);
|
|
319
|
+
}
|
|
320
|
+
if (options.hash) {
|
|
321
|
+
url += options.hash;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
// Should url be wrapped?
|
|
325
|
+
// See https://drafts.csswg.org/css-values-3/#urls
|
|
326
|
+
if (/["'() \t\n]|(%20)/.test(url) || options.needQuotes) {
|
|
327
|
+
return "\"".concat(url.replace(/"/g, '\\"').replace(/\n/g, "\\n"), "\"");
|
|
328
|
+
}
|
|
329
|
+
return url;
|
|
330
|
+
};
|
|
331
|
+
|
|
332
|
+
/***/ }),
|
|
333
|
+
|
|
334
|
+
/***/ "./node_modules/css-loader/dist/runtime/sourceMaps.js":
|
|
335
|
+
/*!************************************************************!*\
|
|
336
|
+
!*** ./node_modules/css-loader/dist/runtime/sourceMaps.js ***!
|
|
337
|
+
\************************************************************/
|
|
338
|
+
/***/ ((module) => {
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
module.exports = function (item) {
|
|
343
|
+
var content = item[1];
|
|
344
|
+
var cssMapping = item[3];
|
|
345
|
+
if (!cssMapping) {
|
|
346
|
+
return content;
|
|
347
|
+
}
|
|
348
|
+
if (typeof btoa === "function") {
|
|
349
|
+
var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));
|
|
350
|
+
var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64);
|
|
351
|
+
var sourceMapping = "/*# ".concat(data, " */");
|
|
352
|
+
return [content].concat([sourceMapping]).join("\n");
|
|
353
|
+
}
|
|
354
|
+
return [content].join("\n");
|
|
355
|
+
};
|
|
356
|
+
|
|
357
|
+
/***/ }),
|
|
358
|
+
|
|
359
|
+
/***/ "./modules/dialog/html/dialog.html?raw":
|
|
360
|
+
/*!*********************************************!*\
|
|
361
|
+
!*** ./modules/dialog/html/dialog.html?raw ***!
|
|
362
|
+
\*********************************************/
|
|
363
|
+
/***/ ((module) => {
|
|
364
|
+
|
|
365
|
+
// Module
|
|
366
|
+
var code = "<div class=\"APX-dialog\">\r\n <div class=\"APX-dialog-content\">\r\n <span class=\"APX-close-dialog\">×</span>\r\n <h2 class=\"APX-dialog-title\"></h2>\r\n <div class=\"APX-dialog-dynamic-content\"></div>\r\n <div class=\"APX-dialog-button-container\"></div>\r\n </div>\r\n</div>";
|
|
367
|
+
// Exports
|
|
368
|
+
module.exports = code;
|
|
369
|
+
|
|
370
|
+
/***/ }),
|
|
371
|
+
|
|
372
|
+
/***/ "./modules/dialog/css/dialog.css":
|
|
373
|
+
/*!***************************************!*\
|
|
374
|
+
!*** ./modules/dialog/css/dialog.css ***!
|
|
375
|
+
\***************************************/
|
|
376
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
377
|
+
|
|
378
|
+
__webpack_require__.r(__webpack_exports__);
|
|
379
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
380
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
381
|
+
/* harmony export */ });
|
|
382
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
|
|
383
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
384
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");
|
|
385
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
386
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");
|
|
387
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
|
|
388
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
|
|
389
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
|
|
390
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");
|
|
391
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
|
|
392
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");
|
|
393
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
|
|
394
|
+
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_dialog_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../node_modules/css-loader/dist/cjs.js!./dialog.css */ "./node_modules/css-loader/dist/cjs.js!./modules/dialog/css/dialog.css");
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
var options = {};
|
|
407
|
+
|
|
408
|
+
options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
|
|
409
|
+
options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
|
|
410
|
+
|
|
411
|
+
options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
|
|
412
|
+
|
|
413
|
+
options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
|
|
414
|
+
options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
|
|
415
|
+
|
|
416
|
+
var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_dialog_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);
|
|
417
|
+
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
|
|
421
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_dialog_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_dialog_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_dialog_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
/***/ }),
|
|
425
|
+
|
|
426
|
+
/***/ "./modules/tristate/css/tristate.css":
|
|
427
|
+
/*!*******************************************!*\
|
|
428
|
+
!*** ./modules/tristate/css/tristate.css ***!
|
|
429
|
+
\*******************************************/
|
|
430
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
431
|
+
|
|
432
|
+
__webpack_require__.r(__webpack_exports__);
|
|
433
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
434
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
435
|
+
/* harmony export */ });
|
|
436
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
|
|
437
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
438
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");
|
|
439
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
440
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");
|
|
441
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
|
|
442
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
|
|
443
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
|
|
444
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");
|
|
445
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
|
|
446
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");
|
|
447
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
|
|
448
|
+
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_tristate_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../node_modules/css-loader/dist/cjs.js!./tristate.css */ "./node_modules/css-loader/dist/cjs.js!./modules/tristate/css/tristate.css");
|
|
449
|
+
|
|
450
|
+
|
|
451
|
+
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
var options = {};
|
|
461
|
+
|
|
462
|
+
options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
|
|
463
|
+
options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
|
|
464
|
+
|
|
465
|
+
options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
|
|
466
|
+
|
|
467
|
+
options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
|
|
468
|
+
options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
|
|
469
|
+
|
|
470
|
+
var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_tristate_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
|
|
475
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_tristate_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_tristate_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_tristate_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
|
|
476
|
+
|
|
477
|
+
|
|
478
|
+
/***/ }),
|
|
479
|
+
|
|
480
|
+
/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":
|
|
481
|
+
/*!****************************************************************************!*\
|
|
482
|
+
!*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
|
|
483
|
+
\****************************************************************************/
|
|
484
|
+
/***/ ((module) => {
|
|
485
|
+
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
var stylesInDOM = [];
|
|
489
|
+
function getIndexByIdentifier(identifier) {
|
|
490
|
+
var result = -1;
|
|
491
|
+
for (var i = 0; i < stylesInDOM.length; i++) {
|
|
492
|
+
if (stylesInDOM[i].identifier === identifier) {
|
|
493
|
+
result = i;
|
|
494
|
+
break;
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
return result;
|
|
498
|
+
}
|
|
499
|
+
function modulesToDom(list, options) {
|
|
500
|
+
var idCountMap = {};
|
|
501
|
+
var identifiers = [];
|
|
502
|
+
for (var i = 0; i < list.length; i++) {
|
|
503
|
+
var item = list[i];
|
|
504
|
+
var id = options.base ? item[0] + options.base : item[0];
|
|
505
|
+
var count = idCountMap[id] || 0;
|
|
506
|
+
var identifier = "".concat(id, " ").concat(count);
|
|
507
|
+
idCountMap[id] = count + 1;
|
|
508
|
+
var indexByIdentifier = getIndexByIdentifier(identifier);
|
|
509
|
+
var obj = {
|
|
510
|
+
css: item[1],
|
|
511
|
+
media: item[2],
|
|
512
|
+
sourceMap: item[3],
|
|
513
|
+
supports: item[4],
|
|
514
|
+
layer: item[5]
|
|
515
|
+
};
|
|
516
|
+
if (indexByIdentifier !== -1) {
|
|
517
|
+
stylesInDOM[indexByIdentifier].references++;
|
|
518
|
+
stylesInDOM[indexByIdentifier].updater(obj);
|
|
519
|
+
} else {
|
|
520
|
+
var updater = addElementStyle(obj, options);
|
|
521
|
+
options.byIndex = i;
|
|
522
|
+
stylesInDOM.splice(i, 0, {
|
|
523
|
+
identifier: identifier,
|
|
524
|
+
updater: updater,
|
|
525
|
+
references: 1
|
|
526
|
+
});
|
|
527
|
+
}
|
|
528
|
+
identifiers.push(identifier);
|
|
529
|
+
}
|
|
530
|
+
return identifiers;
|
|
531
|
+
}
|
|
532
|
+
function addElementStyle(obj, options) {
|
|
533
|
+
var api = options.domAPI(options);
|
|
534
|
+
api.update(obj);
|
|
535
|
+
var updater = function updater(newObj) {
|
|
536
|
+
if (newObj) {
|
|
537
|
+
if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {
|
|
538
|
+
return;
|
|
539
|
+
}
|
|
540
|
+
api.update(obj = newObj);
|
|
541
|
+
} else {
|
|
542
|
+
api.remove();
|
|
543
|
+
}
|
|
544
|
+
};
|
|
545
|
+
return updater;
|
|
546
|
+
}
|
|
547
|
+
module.exports = function (list, options) {
|
|
548
|
+
options = options || {};
|
|
549
|
+
list = list || [];
|
|
550
|
+
var lastIdentifiers = modulesToDom(list, options);
|
|
551
|
+
return function update(newList) {
|
|
552
|
+
newList = newList || [];
|
|
553
|
+
for (var i = 0; i < lastIdentifiers.length; i++) {
|
|
554
|
+
var identifier = lastIdentifiers[i];
|
|
555
|
+
var index = getIndexByIdentifier(identifier);
|
|
556
|
+
stylesInDOM[index].references--;
|
|
557
|
+
}
|
|
558
|
+
var newLastIdentifiers = modulesToDom(newList, options);
|
|
559
|
+
for (var _i = 0; _i < lastIdentifiers.length; _i++) {
|
|
560
|
+
var _identifier = lastIdentifiers[_i];
|
|
561
|
+
var _index = getIndexByIdentifier(_identifier);
|
|
562
|
+
if (stylesInDOM[_index].references === 0) {
|
|
563
|
+
stylesInDOM[_index].updater();
|
|
564
|
+
stylesInDOM.splice(_index, 1);
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
lastIdentifiers = newLastIdentifiers;
|
|
568
|
+
};
|
|
569
|
+
};
|
|
570
|
+
|
|
571
|
+
/***/ }),
|
|
572
|
+
|
|
573
|
+
/***/ "./node_modules/style-loader/dist/runtime/insertBySelector.js":
|
|
574
|
+
/*!********************************************************************!*\
|
|
575
|
+
!*** ./node_modules/style-loader/dist/runtime/insertBySelector.js ***!
|
|
576
|
+
\********************************************************************/
|
|
577
|
+
/***/ ((module) => {
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
|
|
581
|
+
var memo = {};
|
|
582
|
+
|
|
583
|
+
/* istanbul ignore next */
|
|
584
|
+
function getTarget(target) {
|
|
585
|
+
if (typeof memo[target] === "undefined") {
|
|
586
|
+
var styleTarget = document.querySelector(target);
|
|
587
|
+
|
|
588
|
+
// Special case to return head of iframe instead of iframe itself
|
|
589
|
+
if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
|
|
590
|
+
try {
|
|
591
|
+
// This will throw an exception if access to iframe is blocked
|
|
592
|
+
// due to cross-origin restrictions
|
|
593
|
+
styleTarget = styleTarget.contentDocument.head;
|
|
594
|
+
} catch (e) {
|
|
595
|
+
// istanbul ignore next
|
|
596
|
+
styleTarget = null;
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
memo[target] = styleTarget;
|
|
600
|
+
}
|
|
601
|
+
return memo[target];
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
/* istanbul ignore next */
|
|
605
|
+
function insertBySelector(insert, style) {
|
|
606
|
+
var target = getTarget(insert);
|
|
607
|
+
if (!target) {
|
|
608
|
+
throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
|
|
609
|
+
}
|
|
610
|
+
target.appendChild(style);
|
|
611
|
+
}
|
|
612
|
+
module.exports = insertBySelector;
|
|
613
|
+
|
|
614
|
+
/***/ }),
|
|
615
|
+
|
|
616
|
+
/***/ "./node_modules/style-loader/dist/runtime/insertStyleElement.js":
|
|
617
|
+
/*!**********************************************************************!*\
|
|
618
|
+
!*** ./node_modules/style-loader/dist/runtime/insertStyleElement.js ***!
|
|
619
|
+
\**********************************************************************/
|
|
620
|
+
/***/ ((module) => {
|
|
621
|
+
|
|
622
|
+
|
|
623
|
+
|
|
624
|
+
/* istanbul ignore next */
|
|
625
|
+
function insertStyleElement(options) {
|
|
626
|
+
var element = document.createElement("style");
|
|
627
|
+
options.setAttributes(element, options.attributes);
|
|
628
|
+
options.insert(element, options.options);
|
|
629
|
+
return element;
|
|
630
|
+
}
|
|
631
|
+
module.exports = insertStyleElement;
|
|
632
|
+
|
|
633
|
+
/***/ }),
|
|
634
|
+
|
|
635
|
+
/***/ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":
|
|
636
|
+
/*!**********************************************************************************!*\
|
|
637
|
+
!*** ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js ***!
|
|
638
|
+
\**********************************************************************************/
|
|
639
|
+
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
640
|
+
|
|
641
|
+
|
|
642
|
+
|
|
643
|
+
/* istanbul ignore next */
|
|
644
|
+
function setAttributesWithoutAttributes(styleElement) {
|
|
645
|
+
var nonce = true ? __webpack_require__.nc : 0;
|
|
646
|
+
if (nonce) {
|
|
647
|
+
styleElement.setAttribute("nonce", nonce);
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
module.exports = setAttributesWithoutAttributes;
|
|
651
|
+
|
|
652
|
+
/***/ }),
|
|
653
|
+
|
|
654
|
+
/***/ "./node_modules/style-loader/dist/runtime/styleDomAPI.js":
|
|
655
|
+
/*!***************************************************************!*\
|
|
656
|
+
!*** ./node_modules/style-loader/dist/runtime/styleDomAPI.js ***!
|
|
657
|
+
\***************************************************************/
|
|
658
|
+
/***/ ((module) => {
|
|
659
|
+
|
|
660
|
+
|
|
661
|
+
|
|
662
|
+
/* istanbul ignore next */
|
|
663
|
+
function apply(styleElement, options, obj) {
|
|
664
|
+
var css = "";
|
|
665
|
+
if (obj.supports) {
|
|
666
|
+
css += "@supports (".concat(obj.supports, ") {");
|
|
667
|
+
}
|
|
668
|
+
if (obj.media) {
|
|
669
|
+
css += "@media ".concat(obj.media, " {");
|
|
670
|
+
}
|
|
671
|
+
var needLayer = typeof obj.layer !== "undefined";
|
|
672
|
+
if (needLayer) {
|
|
673
|
+
css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {");
|
|
674
|
+
}
|
|
675
|
+
css += obj.css;
|
|
676
|
+
if (needLayer) {
|
|
677
|
+
css += "}";
|
|
678
|
+
}
|
|
679
|
+
if (obj.media) {
|
|
680
|
+
css += "}";
|
|
681
|
+
}
|
|
682
|
+
if (obj.supports) {
|
|
683
|
+
css += "}";
|
|
684
|
+
}
|
|
685
|
+
var sourceMap = obj.sourceMap;
|
|
686
|
+
if (sourceMap && typeof btoa !== "undefined") {
|
|
687
|
+
css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
// For old IE
|
|
691
|
+
/* istanbul ignore if */
|
|
692
|
+
options.styleTagTransform(css, styleElement, options.options);
|
|
693
|
+
}
|
|
694
|
+
function removeStyleElement(styleElement) {
|
|
695
|
+
// istanbul ignore if
|
|
696
|
+
if (styleElement.parentNode === null) {
|
|
697
|
+
return false;
|
|
698
|
+
}
|
|
699
|
+
styleElement.parentNode.removeChild(styleElement);
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
/* istanbul ignore next */
|
|
703
|
+
function domAPI(options) {
|
|
704
|
+
if (typeof document === "undefined") {
|
|
705
|
+
return {
|
|
706
|
+
update: function update() {},
|
|
707
|
+
remove: function remove() {}
|
|
708
|
+
};
|
|
709
|
+
}
|
|
710
|
+
var styleElement = options.insertStyleElement(options);
|
|
711
|
+
return {
|
|
712
|
+
update: function update(obj) {
|
|
713
|
+
apply(styleElement, options, obj);
|
|
714
|
+
},
|
|
715
|
+
remove: function remove() {
|
|
716
|
+
removeStyleElement(styleElement);
|
|
717
|
+
}
|
|
718
|
+
};
|
|
719
|
+
}
|
|
720
|
+
module.exports = domAPI;
|
|
721
|
+
|
|
722
|
+
/***/ }),
|
|
723
|
+
|
|
724
|
+
/***/ "./node_modules/style-loader/dist/runtime/styleTagTransform.js":
|
|
725
|
+
/*!*********************************************************************!*\
|
|
726
|
+
!*** ./node_modules/style-loader/dist/runtime/styleTagTransform.js ***!
|
|
727
|
+
\*********************************************************************/
|
|
728
|
+
/***/ ((module) => {
|
|
729
|
+
|
|
730
|
+
|
|
731
|
+
|
|
732
|
+
/* istanbul ignore next */
|
|
733
|
+
function styleTagTransform(css, styleElement) {
|
|
734
|
+
if (styleElement.styleSheet) {
|
|
735
|
+
styleElement.styleSheet.cssText = css;
|
|
736
|
+
} else {
|
|
737
|
+
while (styleElement.firstChild) {
|
|
738
|
+
styleElement.removeChild(styleElement.firstChild);
|
|
739
|
+
}
|
|
740
|
+
styleElement.appendChild(document.createTextNode(css));
|
|
741
|
+
}
|
|
742
|
+
}
|
|
743
|
+
module.exports = styleTagTransform;
|
|
744
|
+
|
|
745
|
+
/***/ }),
|
|
746
|
+
|
|
747
|
+
/***/ "data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20viewBox%3D%220%200%2032%2032%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22m0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705z%22%20fill%3D%22%23f00%22%2F%3E%3Cpath%20d%3D%22m8%208%2016%2016%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3Cpath%20d%3D%22M24%208L8%2024%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E":
|
|
748
|
+
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
|
|
749
|
+
!*** data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20viewBox%3D%220%200%2032%2032%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22m0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705z%22%20fill%3D%22%23f00%22%2F%3E%3Cpath%20d%3D%22m8%208%2016%2016%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3Cpath%20d%3D%22M24%208L8%2024%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E ***!
|
|
750
|
+
\*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
|
|
751
|
+
/***/ ((module) => {
|
|
752
|
+
|
|
753
|
+
module.exports = "data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%3Csvg%20viewBox%3D%220%200%2032%2032%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22m0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705z%22%20fill%3D%22%23f00%22%2F%3E%3Cpath%20d%3D%22m8%208%2016%2016%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3Cpath%20d%3D%22M24%208L8%2024%22%20stroke%3D%22%23fff%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E";
|
|
754
|
+
|
|
755
|
+
/***/ }),
|
|
756
|
+
|
|
757
|
+
/***/ "data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20%20fill%3D%22%23cccccc%22%20d%3D%22M25.107%2032.030h-18.214c-3.456%200-6.268-2.81-6.268-6.264v-19.529c0-3.456%202.812-6.268%206.268-6.268h18.214c3.456%200%206.268%202.812%206.268%206.268v19.529c0%203.452-2.812%206.264-6.268%206.264zM6.893%201.85c-2.419%200-4.386%201.967-4.386%204.386v19.529c0%202.417%201.967%204.382%204.386%204.382h18.214c2.419%200%204.386-1.965%204.386-4.382v-19.529c0-2.419-1.967-4.386-4.386-4.386h-18.214z%22%3E%3C/path%3E%3C/svg%3E":
|
|
758
|
+
/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
|
|
759
|
+
!*** data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20%20fill%3D%22%23cccccc%22%20d%3D%22M25.107%2032.030h-18.214c-3.456%200-6.268-2.81-6.268-6.264v-19.529c0-3.456%202.812-6.268%206.268-6.268h18.214c3.456%200%206.268%202.812%206.268%206.268v19.529c0%203.452-2.812%206.264-6.268%206.264zM6.893%201.85c-2.419%200-4.386%201.967-4.386%204.386v19.529c0%202.417%201.967%204.382%204.386%204.382h18.214c2.419%200%204.386-1.965%204.386-4.382v-19.529c0-2.419-1.967-4.386-4.386-4.386h-18.214z%22%3E%3C/path%3E%3C/svg%3E ***!
|
|
760
|
+
\********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
|
|
761
|
+
/***/ ((module) => {
|
|
762
|
+
|
|
763
|
+
module.exports = "data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20%20fill%3D%22%23cccccc%22%20d%3D%22M25.107%2032.030h-18.214c-3.456%200-6.268-2.81-6.268-6.264v-19.529c0-3.456%202.812-6.268%206.268-6.268h18.214c3.456%200%206.268%202.812%206.268%206.268v19.529c0%203.452-2.812%206.264-6.268%206.264zM6.893%201.85c-2.419%200-4.386%201.967-4.386%204.386v19.529c0%202.417%201.967%204.382%204.386%204.382h18.214c2.419%200%204.386-1.965%204.386-4.382v-19.529c0-2.419-1.967-4.386-4.386-4.386h-18.214z%22%3E%3C/path%3E%3C/svg%3E";
|
|
764
|
+
|
|
765
|
+
/***/ }),
|
|
766
|
+
|
|
767
|
+
/***/ "data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20fill%3D%22%230654ba%22%20d%3D%22M0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705zM5.313%2017.587l7.039%206.839%2013.831-13.439-2.636-2.561-10.929%2010.62-4.442-4.317-2.862%202.858z%22%3E%3C/path%3E%3C/svg%3E":
|
|
768
|
+
/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
|
|
769
|
+
!*** data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20fill%3D%22%230654ba%22%20d%3D%22M0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705zM5.313%2017.587l7.039%206.839%2013.831-13.439-2.636-2.561-10.929%2010.62-4.442-4.317-2.862%202.858z%22%3E%3C/path%3E%3C/svg%3E ***!
|
|
770
|
+
\********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
|
|
771
|
+
/***/ ((module) => {
|
|
772
|
+
|
|
773
|
+
module.exports = "data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2732%27%20height%3D%2732%27%3E%3Cpath%20fill%3D%22%230654ba%22%20d%3D%22M0.543%205.647c0-3.119%202.531-5.647%205.65-5.647h19.309c3.12%200%205.65%202.511%205.65%205.647v20.705c0%203.119-2.531%205.647-5.65%205.647h-19.309c-3.12%200-5.65-2.511-5.65-5.647v-20.705zM5.313%2017.587l7.039%206.839%2013.831-13.439-2.636-2.561-10.929%2010.62-4.442-4.317-2.862%202.858z%22%3E%3C/path%3E%3C/svg%3E";
|
|
774
|
+
|
|
775
|
+
/***/ }),
|
|
776
|
+
|
|
777
|
+
/***/ "./modules/common.mjs":
|
|
778
|
+
/*!****************************!*\
|
|
779
|
+
!*** ./modules/common.mjs ***!
|
|
780
|
+
\****************************/
|
|
781
|
+
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
782
|
+
|
|
783
|
+
__webpack_require__.r(__webpack_exports__);
|
|
784
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
785
|
+
/* harmony export */ loadCss: () => (/* binding */ loadCss)
|
|
786
|
+
/* harmony export */ });
|
|
787
|
+
// Function to load the CSS from a given URL
|
|
788
|
+
function loadCss(url) {
|
|
789
|
+
return fetch(url)
|
|
790
|
+
.then(response => response.text())
|
|
791
|
+
.then(css => {
|
|
792
|
+
const styleSheet = document.createElement("style");
|
|
793
|
+
styleSheet.type = "text/css";
|
|
794
|
+
styleSheet.textContent = css; // Use textContent instead of innerText
|
|
795
|
+
document.head.appendChild(styleSheet);
|
|
796
|
+
})
|
|
797
|
+
.catch(error => {
|
|
798
|
+
console.error("Failed to load CSS:", error);
|
|
799
|
+
});
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
|
|
803
|
+
|
|
804
|
+
/***/ }),
|
|
805
|
+
|
|
806
|
+
/***/ "./modules/dialog/dialog.mjs":
|
|
807
|
+
/*!***********************************!*\
|
|
808
|
+
!*** ./modules/dialog/dialog.mjs ***!
|
|
809
|
+
\***********************************/
|
|
810
|
+
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
811
|
+
|
|
812
|
+
__webpack_require__.r(__webpack_exports__);
|
|
813
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
814
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
815
|
+
/* harmony export */ });
|
|
816
|
+
/* harmony import */ var _css_dialog_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./css/dialog.css */ "./modules/dialog/css/dialog.css");
|
|
817
|
+
/* harmony import */ var _html_dialog_html_raw__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./html/dialog.html?raw */ "./modules/dialog/html/dialog.html?raw");
|
|
818
|
+
// Importing the CSS and HTML templates
|
|
819
|
+
|
|
820
|
+
|
|
821
|
+
|
|
822
|
+
const createDialog = (options) => {
|
|
823
|
+
const dialogDefaults = {
|
|
824
|
+
title: '',
|
|
825
|
+
content: '',
|
|
826
|
+
contentURI: '',
|
|
827
|
+
buttons: [],
|
|
828
|
+
size: 'medium',
|
|
829
|
+
showLoadingIndicator: false
|
|
830
|
+
};
|
|
831
|
+
|
|
832
|
+
const { title, content, contentURI, buttons, size, showLoadingIndicator } = { ...dialogDefaults, ...options };
|
|
833
|
+
|
|
834
|
+
const wrapper = document.createElement('div');
|
|
835
|
+
wrapper.innerHTML = _html_dialog_html_raw__WEBPACK_IMPORTED_MODULE_1__.trim();
|
|
836
|
+
const dialogElement = wrapper.firstChild;
|
|
837
|
+
|
|
838
|
+
// Lifecycle event management
|
|
839
|
+
const lifecycleResolvers = {};
|
|
840
|
+
const lifecycleEvents = {};
|
|
841
|
+
|
|
842
|
+
// Define lifecycle promises as properties
|
|
843
|
+
['opening', 'opened', 'closing', 'closed', 'contentLoading', 'contentLoaded'].forEach((event) => {
|
|
844
|
+
lifecycleEvents[event] = new Promise((resolve) => {
|
|
845
|
+
lifecycleResolvers[event] = resolve;
|
|
846
|
+
});
|
|
847
|
+
});
|
|
848
|
+
|
|
849
|
+
const triggerEvent = (event) => {
|
|
850
|
+
if (lifecycleResolvers[event]) {
|
|
851
|
+
lifecycleResolvers[event]();
|
|
852
|
+
} else {
|
|
853
|
+
console.warn(`No resolver found for lifecycle event: ${event}`);
|
|
854
|
+
}
|
|
855
|
+
};
|
|
856
|
+
|
|
857
|
+
const dialog = {
|
|
858
|
+
element: dialogElement,
|
|
859
|
+
buttons: {},
|
|
860
|
+
isClosed: false,
|
|
861
|
+
lifecycle: lifecycleEvents, // Lifecycle promises directly exposed here
|
|
862
|
+
open: async () => {
|
|
863
|
+
try {
|
|
864
|
+
triggerEvent('opening');
|
|
865
|
+
await dialog.lifecycle.opening;
|
|
866
|
+
|
|
867
|
+
// If loading indicator is enabled and we're fetching content, show dialog first
|
|
868
|
+
if (showLoadingIndicator && contentURI) {
|
|
869
|
+
// Append dialog to the DOM and display it first
|
|
870
|
+
document.body.appendChild(dialogElement);
|
|
871
|
+
dialogElement.style.display = "flex";
|
|
872
|
+
|
|
873
|
+
// Show loading indicator
|
|
874
|
+
dialogElement.querySelector(".APX-dialog-dynamic-content").innerHTML = '<div class="APX-dialog-loading-indicator"></div>';
|
|
875
|
+
|
|
876
|
+
// Load content after dialog is visible
|
|
877
|
+
await fetchAndInsertContent();
|
|
878
|
+
} else {
|
|
879
|
+
// Default behavior: load content first, then show dialog
|
|
880
|
+
await fetchAndInsertContent();
|
|
881
|
+
|
|
882
|
+
// Append dialog to the DOM and display it
|
|
883
|
+
document.body.appendChild(dialogElement);
|
|
884
|
+
dialogElement.style.display = "flex";
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
triggerEvent('opened');
|
|
888
|
+
await dialog.lifecycle.opened;
|
|
889
|
+
} catch (error) {
|
|
890
|
+
console.error('Error opening dialog:', error);
|
|
891
|
+
}
|
|
892
|
+
return dialog; // Return for daisy-chaining
|
|
893
|
+
},
|
|
894
|
+
close: async () => {
|
|
895
|
+
try {
|
|
896
|
+
triggerEvent('closing');
|
|
897
|
+
await dialog.lifecycle.closing;
|
|
898
|
+
|
|
899
|
+
// Cleanup and remove dialog
|
|
900
|
+
closeDialogAndCleanup();
|
|
901
|
+
|
|
902
|
+
triggerEvent('closed');
|
|
903
|
+
await dialog.lifecycle.closed;
|
|
904
|
+
} catch (error) {
|
|
905
|
+
console.error('Error during dialog closing:', error);
|
|
906
|
+
}
|
|
907
|
+
return dialog; // Return for daisy-chaining
|
|
908
|
+
}
|
|
909
|
+
};
|
|
910
|
+
|
|
911
|
+
const closeDialogAndCleanup = () => {
|
|
912
|
+
if (dialog.isClosed) return;
|
|
913
|
+
|
|
914
|
+
dialog.isClosed = true;
|
|
915
|
+
dialogElement.style.display = "none";
|
|
916
|
+
if (document.body.contains(dialogElement)) {
|
|
917
|
+
document.body.removeChild(dialogElement);
|
|
918
|
+
}
|
|
919
|
+
};
|
|
920
|
+
|
|
921
|
+
const setDialogSize = () => {
|
|
922
|
+
const dialogContent = dialogElement.querySelector(".APX-dialog-content");
|
|
923
|
+
const sizes = {
|
|
924
|
+
small: { width: '300px', height: '200px' },
|
|
925
|
+
medium: { width: '500px', height: '400px' },
|
|
926
|
+
large: { width: '800px', height: '600px' }
|
|
927
|
+
};
|
|
928
|
+
|
|
929
|
+
if (size === 'auto') return;
|
|
930
|
+
|
|
931
|
+
const selectedSize = sizes[size] || (typeof size === 'object' && size);
|
|
932
|
+
if (selectedSize) {
|
|
933
|
+
dialogContent.style.minWidth = selectedSize.width || '500px';
|
|
934
|
+
dialogContent.style.minHeight = selectedSize.height || '400px';
|
|
935
|
+
}
|
|
936
|
+
};
|
|
937
|
+
|
|
938
|
+
const addButtons = () => {
|
|
939
|
+
const buttonContainer = dialogElement.querySelector(".APX-dialog-button-container");
|
|
940
|
+
|
|
941
|
+
buttons.forEach(({ key, label, order = 0, align = 'flex-end', closeOnClick = true }) => {
|
|
942
|
+
const button = document.createElement('button');
|
|
943
|
+
button.textContent = label;
|
|
944
|
+
button.style.order = order;
|
|
945
|
+
|
|
946
|
+
if (closeOnClick) {
|
|
947
|
+
// Handle as a one-time Promise
|
|
948
|
+
let firstClickResolved = false;
|
|
949
|
+
|
|
950
|
+
const firstClickPromise = new Promise((resolve) => {
|
|
951
|
+
button.onclick = () => {
|
|
952
|
+
if (!firstClickResolved) {
|
|
953
|
+
firstClickResolved = true;
|
|
954
|
+
resolve(dialog); // Resolve the Promise
|
|
955
|
+
dialog.close(); // Close the dialog
|
|
956
|
+
}
|
|
957
|
+
};
|
|
958
|
+
});
|
|
959
|
+
|
|
960
|
+
// Assign the promise for chaining with `.then`
|
|
961
|
+
dialog.buttons[key] = firstClickPromise;
|
|
962
|
+
} else {
|
|
963
|
+
// Handle as a repeated event handler
|
|
964
|
+
let handlers = []; // Store handlers for `.then()`
|
|
965
|
+
|
|
966
|
+
const clickPromise = {
|
|
967
|
+
then: (callback) => {
|
|
968
|
+
if (typeof callback === 'function') {
|
|
969
|
+
handlers.push(callback); // Add to handlers
|
|
970
|
+
}
|
|
971
|
+
return clickPromise; // Allow chaining
|
|
972
|
+
},
|
|
973
|
+
};
|
|
974
|
+
|
|
975
|
+
button.onclick = () => {
|
|
976
|
+
handlers.forEach((handler) => handler(dialog)); // Call all registered handlers
|
|
977
|
+
};
|
|
978
|
+
|
|
979
|
+
dialog.buttons[key] = clickPromise; // Assign the "fake" promise
|
|
980
|
+
}
|
|
981
|
+
|
|
982
|
+
buttonContainer.appendChild(button);
|
|
983
|
+
buttonContainer.style.justifyContent = align;
|
|
984
|
+
});
|
|
985
|
+
};
|
|
986
|
+
|
|
987
|
+
const fetchAndInsertContent = async () => {
|
|
988
|
+
const originalCursor = document.body.style.cursor;
|
|
989
|
+
document.body.style.cursor = 'wait';
|
|
990
|
+
const dynamicContent = dialogElement.querySelector(".APX-dialog-dynamic-content");
|
|
991
|
+
|
|
992
|
+
try {
|
|
993
|
+
triggerEvent('contentLoading');
|
|
994
|
+
await dialog.lifecycle.contentLoading;
|
|
995
|
+
|
|
996
|
+
const contentHtml = contentURI
|
|
997
|
+
? await fetchContent(contentURI)
|
|
998
|
+
: content;
|
|
999
|
+
|
|
1000
|
+
dynamicContent.innerHTML = contentHtml;
|
|
1001
|
+
|
|
1002
|
+
triggerEvent('contentLoaded');
|
|
1003
|
+
await dialog.lifecycle.contentLoaded;
|
|
1004
|
+
} catch (error) {
|
|
1005
|
+
console.error('Error loading content:', error);
|
|
1006
|
+
} finally {
|
|
1007
|
+
document.body.style.cursor = originalCursor;
|
|
1008
|
+
}
|
|
1009
|
+
};
|
|
1010
|
+
|
|
1011
|
+
const fetchContent = async (uri) => {
|
|
1012
|
+
const response = await fetch(uri);
|
|
1013
|
+
if (!response.ok) throw new Error(`Failed to fetch content: ${response.statusText}`);
|
|
1014
|
+
return response.text();
|
|
1015
|
+
};
|
|
1016
|
+
|
|
1017
|
+
// Initialize dialog
|
|
1018
|
+
setDialogSize();
|
|
1019
|
+
addButtons();
|
|
1020
|
+
|
|
1021
|
+
// Set title and close button handler
|
|
1022
|
+
dialogElement.querySelector(".APX-dialog-title").textContent = title;
|
|
1023
|
+
dialogElement.querySelector('.APX-close-dialog').onclick = dialog.close;
|
|
1024
|
+
|
|
1025
|
+
return dialog;
|
|
1026
|
+
};
|
|
1027
|
+
|
|
1028
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (createDialog);
|
|
1029
|
+
|
|
1030
|
+
|
|
1031
|
+
/***/ }),
|
|
1032
|
+
|
|
1033
|
+
/***/ "./modules/listen/listen.mjs":
|
|
1034
|
+
/*!***********************************!*\
|
|
1035
|
+
!*** ./modules/listen/listen.mjs ***!
|
|
1036
|
+
\***********************************/
|
|
1037
|
+
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
1038
|
+
|
|
1039
|
+
__webpack_require__.r(__webpack_exports__);
|
|
1040
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1041
|
+
/* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)
|
|
1042
|
+
/* harmony export */ });
|
|
1043
|
+
let counter = 0;
|
|
1044
|
+
const doCallbacks = {};
|
|
1045
|
+
const timeouts = {};
|
|
1046
|
+
|
|
1047
|
+
/**
|
|
1048
|
+
* This function adds an event listener to the elements and returns an object with a do method to add callback functions.
|
|
1049
|
+
* @param {Object} apx - The apx object to augment with the listen function.
|
|
1050
|
+
* @returns {Object} - The augmented apx object.
|
|
1051
|
+
*/
|
|
1052
|
+
/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(apx) {
|
|
1053
|
+
let elements = apx.elements;
|
|
1054
|
+
|
|
1055
|
+
/**
|
|
1056
|
+
* Adds an event listener to the elements and returns an object with a do method to add callback functions.
|
|
1057
|
+
* @param {string} eventType - The type of event to listen for (e.g. 'click', 'keydown', etc.).
|
|
1058
|
+
* @param {string} [selector] - The CSS selector to use for event delegation (optional).
|
|
1059
|
+
* @returns {Object} - An object with a do method to add callback functions.
|
|
1060
|
+
* @example
|
|
1061
|
+
* apx.listen('click', '.my-button').do((event) => {
|
|
1062
|
+
* console.log('Button clicked!', event.target);
|
|
1063
|
+
* });
|
|
1064
|
+
*/
|
|
1065
|
+
apx.listen = function (eventTypes, secondArgument, thirdArgument) {
|
|
1066
|
+
let selector;
|
|
1067
|
+
let options = {};
|
|
1068
|
+
// Determine if the second argument is a selector or options
|
|
1069
|
+
if (typeof secondArgument === 'string') {
|
|
1070
|
+
selector = secondArgument;
|
|
1071
|
+
options = thirdArgument || {};
|
|
1072
|
+
} else {
|
|
1073
|
+
options = secondArgument || {};
|
|
1074
|
+
}
|
|
1075
|
+
|
|
1076
|
+
const uniqueId = generateUniqueId();
|
|
1077
|
+
const timeoutDuration = options.timeout || 0;
|
|
1078
|
+
|
|
1079
|
+
if (!Array.isArray(eventTypes)) {
|
|
1080
|
+
eventTypes = [eventTypes]; // Ensure eventTypes is an array
|
|
1081
|
+
}
|
|
1082
|
+
|
|
1083
|
+
eventTypes.forEach((eventType) => {
|
|
1084
|
+
elements.forEach((element) => {
|
|
1085
|
+
element.addEventListener(eventType, (event) => {
|
|
1086
|
+
executeCallbacks(event, uniqueId, timeoutDuration, selector, element);
|
|
1087
|
+
});
|
|
1088
|
+
});
|
|
1089
|
+
});
|
|
1090
|
+
|
|
1091
|
+
return {
|
|
1092
|
+
/**
|
|
1093
|
+
* Adds a callback function to the doCallbacks object for the current event listener.
|
|
1094
|
+
* @param {Function} doCallback - The callback function to execute when the event is triggered.
|
|
1095
|
+
* @returns {Object} - Returns the current object to allow for chained calls.
|
|
1096
|
+
* @example
|
|
1097
|
+
* apx.listen('click', '.my-button').do((event) => {
|
|
1098
|
+
* console.log('Button clicked!', event.target);
|
|
1099
|
+
* }).do((event) => {
|
|
1100
|
+
* console.log('Another callback function!');
|
|
1101
|
+
* });
|
|
1102
|
+
*/
|
|
1103
|
+
do: function (doCallback) {
|
|
1104
|
+
if (!doCallbacks[uniqueId]) {
|
|
1105
|
+
doCallbacks[uniqueId] = [];
|
|
1106
|
+
}
|
|
1107
|
+
doCallbacks[uniqueId].push(doCallback);
|
|
1108
|
+
return this; // Return the object to allow for chained calls
|
|
1109
|
+
},
|
|
1110
|
+
};
|
|
1111
|
+
};
|
|
1112
|
+
|
|
1113
|
+
/**
|
|
1114
|
+
* Manually triggers the registered callbacks for a given event type on all elements or creates a new event if a string is provided.
|
|
1115
|
+
* @param {string|Event} event - The event to trigger. This can be an event type string (like 'click') or an actual Event object.
|
|
1116
|
+
*/
|
|
1117
|
+
apx.trigger = function (event) {
|
|
1118
|
+
let eventType;
|
|
1119
|
+
if (typeof event === 'string') {
|
|
1120
|
+
eventType = event;
|
|
1121
|
+
event = new Event(event, { bubbles: true, cancelable: true });
|
|
1122
|
+
} else if (event instanceof Event) {
|
|
1123
|
+
eventType = event.type;
|
|
1124
|
+
} else {
|
|
1125
|
+
console.error('Invalid event type provided to apx.trigger. It must be either a string or Event object.');
|
|
1126
|
+
return;
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1129
|
+
apx.elements.forEach((element) => {
|
|
1130
|
+
element.dispatchEvent(event); // This will allow the event to bubble up naturally.
|
|
1131
|
+
});
|
|
1132
|
+
|
|
1133
|
+
// Handle event delegation manually by executing callbacks if the target matches the selector
|
|
1134
|
+
Object.keys(doCallbacks).forEach((uniqueId) => {
|
|
1135
|
+
const callbackDetails = doCallbacks[uniqueId];
|
|
1136
|
+
if (callbackDetails && callbackDetails.eventType === eventType) {
|
|
1137
|
+
// Check if the event target matches the selector used during listener registration
|
|
1138
|
+
const { selector } = callbackDetails;
|
|
1139
|
+
if (!selector || event.target.matches(selector)) {
|
|
1140
|
+
executeCallbacks(event, uniqueId, 0, selector, event.target); // Immediate execution, no timeout
|
|
1141
|
+
}
|
|
1142
|
+
}
|
|
1143
|
+
});
|
|
1144
|
+
};
|
|
1145
|
+
|
|
1146
|
+
return apx;
|
|
1147
|
+
};
|
|
1148
|
+
|
|
1149
|
+
|
|
1150
|
+
function executeCallbacks(event, uniqueId, timeoutDuration, selector = '', element) {
|
|
1151
|
+
const matchedElement = selector ? closest(event.target, selector) : element;
|
|
1152
|
+
if (!matchedElement) {
|
|
1153
|
+
return;
|
|
1154
|
+
}
|
|
1155
|
+
|
|
1156
|
+
// Clear any previous timeout for this uniqueId to prevent unintended behavior
|
|
1157
|
+
clearTimeout(timeouts[uniqueId]);
|
|
1158
|
+
|
|
1159
|
+
// Function to handle the execution of callbacks
|
|
1160
|
+
function handleCallbackExecution() {
|
|
1161
|
+
if (doCallbacks[uniqueId]) {
|
|
1162
|
+
doCallbacks[uniqueId].reduce((prevPromise, doCallback) => {
|
|
1163
|
+
return prevPromise.then(() => {
|
|
1164
|
+
return new Promise((resolve, reject) => {
|
|
1165
|
+
try {
|
|
1166
|
+
const result = doCallback.bind(matchedElement)(event);
|
|
1167
|
+
if (result instanceof Promise) {
|
|
1168
|
+
result.then(resolve).catch(reject);
|
|
1169
|
+
} else {
|
|
1170
|
+
resolve(result);
|
|
1171
|
+
}
|
|
1172
|
+
} catch (error) {
|
|
1173
|
+
reject(error);
|
|
1174
|
+
}
|
|
1175
|
+
});
|
|
1176
|
+
});
|
|
1177
|
+
}, Promise.resolve()).catch(error => {
|
|
1178
|
+
console.error('Error in callback chain:', error);
|
|
1179
|
+
});
|
|
1180
|
+
}
|
|
1181
|
+
}
|
|
1182
|
+
|
|
1183
|
+
// Check if timeoutDuration is zero to decide whether to delay the callback execution or not
|
|
1184
|
+
if (timeoutDuration === 0) {
|
|
1185
|
+
handleCallbackExecution();
|
|
1186
|
+
} else {
|
|
1187
|
+
timeouts[uniqueId] = setTimeout(handleCallbackExecution, timeoutDuration);
|
|
1188
|
+
}
|
|
1189
|
+
}
|
|
1190
|
+
|
|
1191
|
+
|
|
1192
|
+
function generateUniqueId() {
|
|
1193
|
+
const randomPart = Math.random().toString(36).substr(2, 9); // More randomness
|
|
1194
|
+
const uniqueId = `${Date.now()}_${randomPart}_${counter}`;
|
|
1195
|
+
counter = (counter + 1) % 1000; // Reset counter to avoid overflow
|
|
1196
|
+
|
|
1197
|
+
return uniqueId;
|
|
1198
|
+
}
|
|
1199
|
+
|
|
1200
|
+
function closest(element, selector) {
|
|
1201
|
+
while (element && element.nodeType === 1) {
|
|
1202
|
+
if (element.matches(selector)) {
|
|
1203
|
+
return element;
|
|
1204
|
+
}
|
|
1205
|
+
element = element.parentNode;
|
|
1206
|
+
}
|
|
1207
|
+
return null;
|
|
1208
|
+
}
|
|
1209
|
+
|
|
1210
|
+
|
|
1211
|
+
/***/ }),
|
|
1212
|
+
|
|
1213
|
+
/***/ "./modules/tristate/tristate.mjs":
|
|
1214
|
+
/*!***************************************!*\
|
|
1215
|
+
!*** ./modules/tristate/tristate.mjs ***!
|
|
1216
|
+
\***************************************/
|
|
1217
|
+
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
1218
|
+
|
|
1219
|
+
__webpack_require__.r(__webpack_exports__);
|
|
1220
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1221
|
+
/* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)
|
|
1222
|
+
/* harmony export */ });
|
|
1223
|
+
/* harmony import */ var _css_tristate_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./css/tristate.css */ "./modules/tristate/css/tristate.css");
|
|
1224
|
+
|
|
1225
|
+
|
|
1226
|
+
/**
|
|
1227
|
+
* Creates a tri-state checkbox for each checkbox element in the apx.elements array.
|
|
1228
|
+
* @param {Array<HTMLElement>} apx - An array of HTMLElements which is returned by APX()
|
|
1229
|
+
* @example
|
|
1230
|
+
* // Call the tristate function on an array of checkbox elements
|
|
1231
|
+
* apx.tristate();
|
|
1232
|
+
*/
|
|
1233
|
+
/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(apx) {
|
|
1234
|
+
apx.tristate = function (options = {}){
|
|
1235
|
+
apx.elements.forEach((element) => {
|
|
1236
|
+
if (element.type === 'checkbox') {
|
|
1237
|
+
const [originalCheckbox, tristateDom, hiddenInput] = createTriStateCheckbox(element,options);
|
|
1238
|
+
//If there is a "options.callbacks.after" callback in options call it
|
|
1239
|
+
if(options.callbacks && options.callbacks.after && typeof options.callbacks.after === 'function') {
|
|
1240
|
+
options.callbacks.after(originalCheckbox, tristateDom, hiddenInput);
|
|
1241
|
+
}
|
|
1242
|
+
}
|
|
1243
|
+
});
|
|
1244
|
+
}
|
|
1245
|
+
}
|
|
1246
|
+
|
|
1247
|
+
function toggleTriStateCheckboxState(customCheckbox, actualCheckbox, hiddenInput) {
|
|
1248
|
+
if (customCheckbox.classList.contains('checked')) {
|
|
1249
|
+
customCheckbox.classList.remove('checked');
|
|
1250
|
+
customCheckbox.classList.add('crossed');
|
|
1251
|
+
actualCheckbox.checked = false;
|
|
1252
|
+
hiddenInput.value = 'false';
|
|
1253
|
+
} else if (customCheckbox.classList.contains('crossed')) {
|
|
1254
|
+
customCheckbox.classList.remove('crossed');
|
|
1255
|
+
customCheckbox.classList.add('unchecked');
|
|
1256
|
+
hiddenInput.removeAttribute('name'); // Ensure the hidden input doesn't post any value
|
|
1257
|
+
hiddenInput.removeAttribute('value'); // Ensure the hidden input doesn't post any value
|
|
1258
|
+
} else {
|
|
1259
|
+
customCheckbox.classList.remove('unchecked');
|
|
1260
|
+
customCheckbox.classList.add('checked');
|
|
1261
|
+
actualCheckbox.checked = true;
|
|
1262
|
+
hiddenInput.value = 'true';
|
|
1263
|
+
hiddenInput.setAttribute('name', actualCheckbox.dataset.name); // Restore the name for posting
|
|
1264
|
+
}
|
|
1265
|
+
}
|
|
1266
|
+
|
|
1267
|
+
function createTriStateCheckbox(checkboxElement, options) {
|
|
1268
|
+
|
|
1269
|
+
//get the checkbox margins including browser default
|
|
1270
|
+
const checkboxStyle = window.getComputedStyle(checkboxElement);
|
|
1271
|
+
// Hide the original checkbox
|
|
1272
|
+
checkboxElement.style.display = 'none';
|
|
1273
|
+
|
|
1274
|
+
// Create the custom checkbox div and set its initial state
|
|
1275
|
+
const tristateDom = document.createElement('div');
|
|
1276
|
+
tristateDom.classList.add('apx-tristate');
|
|
1277
|
+
if (options.size) {
|
|
1278
|
+
if (options.size.width) {
|
|
1279
|
+
tristateDom.style.width = options.size.width + 'px';
|
|
1280
|
+
}
|
|
1281
|
+
if (options.size.height) {
|
|
1282
|
+
tristateDom.style.height = options.size.height + 'px';
|
|
1283
|
+
}
|
|
1284
|
+
}
|
|
1285
|
+
if(options.classes) tristateDom.classList.add(...computeClasses(options.classes));
|
|
1286
|
+
|
|
1287
|
+
tristateDom.style.margin = checkboxStyle.margin;
|
|
1288
|
+
|
|
1289
|
+
if (checkboxElement.checked) {
|
|
1290
|
+
tristateDom.classList.add('checked');
|
|
1291
|
+
} else {
|
|
1292
|
+
tristateDom.classList.add('unchecked');
|
|
1293
|
+
}
|
|
1294
|
+
|
|
1295
|
+
// Create the hidden input field
|
|
1296
|
+
const hiddenInput = document.createElement('input');
|
|
1297
|
+
hiddenInput.type = 'hidden';
|
|
1298
|
+
hiddenInput.name = checkboxElement.name; // Copy the name from the original checkbox
|
|
1299
|
+
checkboxElement.dataset.name = checkboxElement.name; // Store the name in a data attribute for later use
|
|
1300
|
+
checkboxElement.removeAttribute('name'); // Remove the name from the original checkbox to avoid double posting
|
|
1301
|
+
|
|
1302
|
+
if (options.defaultState) setDefaultState(options, tristateDom, hiddenInput);
|
|
1303
|
+
else{
|
|
1304
|
+
// Set the initial value for the hidden input based on the checkbox's state
|
|
1305
|
+
if (checkboxElement.checked) {
|
|
1306
|
+
hiddenInput.value = 'true';
|
|
1307
|
+
} else {
|
|
1308
|
+
hiddenInput.name = ''; // Ensure the hidden input doesn't post any value
|
|
1309
|
+
hiddenInput.value = '';
|
|
1310
|
+
}
|
|
1311
|
+
}
|
|
1312
|
+
|
|
1313
|
+
//handle accessibility, set the tabindex to the same as the checkbox
|
|
1314
|
+
tristateDom.tabIndex = checkboxElement.tabIndex;
|
|
1315
|
+
|
|
1316
|
+
// Insert the hidden input inside the custom checkbox div
|
|
1317
|
+
tristateDom.appendChild(hiddenInput);
|
|
1318
|
+
|
|
1319
|
+
// Insert it next to the actual checkbox
|
|
1320
|
+
checkboxElement.parentNode.insertBefore(tristateDom, checkboxElement.nextSibling);
|
|
1321
|
+
|
|
1322
|
+
// Add event listener
|
|
1323
|
+
tristateDom.addEventListener('click', function (e) {
|
|
1324
|
+
toggleTriStateCheckboxState(tristateDom, checkboxElement, hiddenInput);
|
|
1325
|
+
bubbleEventsToOriginalCheckbox(options, checkboxElement, tristateDom, hiddenInput, e);
|
|
1326
|
+
});
|
|
1327
|
+
tristateDom.addEventListener('keyup', onkeyup.bind(null, checkboxElement));
|
|
1328
|
+
|
|
1329
|
+
return [checkboxElement, tristateDom, hiddenInput];
|
|
1330
|
+
}
|
|
1331
|
+
|
|
1332
|
+
function setDefaultState(options, tristateDom, hiddenInput) {
|
|
1333
|
+
//for all values possible for defaultState, set the initial state of the checkbox
|
|
1334
|
+
if (options.defaultState === 'checked') {
|
|
1335
|
+
tristateDom.classList.remove('unchecked');
|
|
1336
|
+
tristateDom.classList.add('checked');
|
|
1337
|
+
hiddenInput.value = 'true';
|
|
1338
|
+
}
|
|
1339
|
+
else if (options.defaultState === 'unchecked') {
|
|
1340
|
+
tristateDom.classList.remove('checked');
|
|
1341
|
+
tristateDom.classList.add('unchecked');
|
|
1342
|
+
hiddenInput.removeAttribute('name'); // Ensure the hidden input doesn't post any value
|
|
1343
|
+
hiddenInput.removeAttribute('value'); // Ensure the hidden input doesn't post any value
|
|
1344
|
+
}
|
|
1345
|
+
else if (options.defaultState === 'crossed') {
|
|
1346
|
+
tristateDom.classList.remove('checked');
|
|
1347
|
+
tristateDom.classList.add('crossed');
|
|
1348
|
+
hiddenInput.value = 'false';
|
|
1349
|
+
}
|
|
1350
|
+
}
|
|
1351
|
+
|
|
1352
|
+
function computeClasses(classes) {
|
|
1353
|
+
let computedClasses = [];
|
|
1354
|
+
if(typeof classes === 'string') {
|
|
1355
|
+
//replace multiple white spaces with a single space
|
|
1356
|
+
classes = classes.replace(/\s\s+/g, ' ');
|
|
1357
|
+
if(classes.indexOf(' ') > -1)
|
|
1358
|
+
computedClasses = classes.split(' ');
|
|
1359
|
+
else if(classes.indexOf(',') > -1)
|
|
1360
|
+
computedClasses = classes.split(',');
|
|
1361
|
+
else
|
|
1362
|
+
computedClasses = [classes];
|
|
1363
|
+
}
|
|
1364
|
+
else if(Array.isArray(classes)) {
|
|
1365
|
+
computedClasses = classes;
|
|
1366
|
+
}
|
|
1367
|
+
return computedClasses;
|
|
1368
|
+
}
|
|
1369
|
+
|
|
1370
|
+
function bubbleEventsToOriginalCheckbox(options, checkboxElement, tristateDom, hiddenInput, event) {
|
|
1371
|
+
//if options.callbacks.change is set, call it
|
|
1372
|
+
if(options.callbacks && options.callbacks.change && typeof options.callbacks.change === 'function') {
|
|
1373
|
+
options.callbacks.change(checkboxElement, tristateDom, hiddenInput);
|
|
1374
|
+
}
|
|
1375
|
+
|
|
1376
|
+
if(!options.bubbleEvents) return;
|
|
1377
|
+
|
|
1378
|
+
if(event.type === 'click') {
|
|
1379
|
+
checkboxElement.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true }));
|
|
1380
|
+
}
|
|
1381
|
+
else if(event.type === 'keyup') {
|
|
1382
|
+
checkboxElement.dispatchEvent(new KeyboardEvent('keyup', { key: ' ', bubbles: true, cancelable: true }));
|
|
1383
|
+
}
|
|
1384
|
+
else if(event.type === 'change') {
|
|
1385
|
+
checkboxElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));
|
|
1386
|
+
}
|
|
1387
|
+
}
|
|
1388
|
+
|
|
1389
|
+
function onkeyup(checkboxElement, event) {
|
|
1390
|
+
if (event.keyCode === 32) {
|
|
1391
|
+
bubbleEventsToOriginalCheckbox(checkboxElement, event);
|
|
1392
|
+
event.preventDefault();
|
|
1393
|
+
event.target.click();
|
|
1394
|
+
}
|
|
1395
|
+
}
|
|
1396
|
+
|
|
1397
|
+
/***/ })
|
|
1398
|
+
|
|
1399
|
+
/******/ });
|
|
1400
|
+
/************************************************************************/
|
|
1401
|
+
/******/ // The module cache
|
|
1402
|
+
/******/ var __webpack_module_cache__ = {};
|
|
1403
|
+
/******/
|
|
1404
|
+
/******/ // The require function
|
|
1405
|
+
/******/ function __webpack_require__(moduleId) {
|
|
1406
|
+
/******/ // Check if module is in cache
|
|
1407
|
+
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
|
1408
|
+
/******/ if (cachedModule !== undefined) {
|
|
1409
|
+
/******/ return cachedModule.exports;
|
|
1410
|
+
/******/ }
|
|
1411
|
+
/******/ // Create a new module (and put it into the cache)
|
|
1412
|
+
/******/ var module = __webpack_module_cache__[moduleId] = {
|
|
1413
|
+
/******/ id: moduleId,
|
|
1414
|
+
/******/ // no module.loaded needed
|
|
1415
|
+
/******/ exports: {}
|
|
1416
|
+
/******/ };
|
|
1417
|
+
/******/
|
|
1418
|
+
/******/ // Execute the module function
|
|
1419
|
+
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
|
1420
|
+
/******/
|
|
1421
|
+
/******/ // Return the exports of the module
|
|
1422
|
+
/******/ return module.exports;
|
|
1423
|
+
/******/ }
|
|
1424
|
+
/******/
|
|
1425
|
+
/******/ // expose the modules object (__webpack_modules__)
|
|
1426
|
+
/******/ __webpack_require__.m = __webpack_modules__;
|
|
1427
|
+
/******/
|
|
1428
|
+
/************************************************************************/
|
|
1429
|
+
/******/ /* webpack/runtime/compat get default export */
|
|
1430
|
+
/******/ (() => {
|
|
1431
|
+
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|
1432
|
+
/******/ __webpack_require__.n = (module) => {
|
|
1433
|
+
/******/ var getter = module && module.__esModule ?
|
|
1434
|
+
/******/ () => (module['default']) :
|
|
1435
|
+
/******/ () => (module);
|
|
1436
|
+
/******/ __webpack_require__.d(getter, { a: getter });
|
|
1437
|
+
/******/ return getter;
|
|
1438
|
+
/******/ };
|
|
1439
|
+
/******/ })();
|
|
1440
|
+
/******/
|
|
1441
|
+
/******/ /* webpack/runtime/define property getters */
|
|
1442
|
+
/******/ (() => {
|
|
1443
|
+
/******/ // define getter functions for harmony exports
|
|
1444
|
+
/******/ __webpack_require__.d = (exports, definition) => {
|
|
1445
|
+
/******/ for(var key in definition) {
|
|
1446
|
+
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
1447
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
1448
|
+
/******/ }
|
|
1449
|
+
/******/ }
|
|
1450
|
+
/******/ };
|
|
1451
|
+
/******/ })();
|
|
1452
|
+
/******/
|
|
1453
|
+
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
1454
|
+
/******/ (() => {
|
|
1455
|
+
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
|
1456
|
+
/******/ })();
|
|
1457
|
+
/******/
|
|
1458
|
+
/******/ /* webpack/runtime/make namespace object */
|
|
1459
|
+
/******/ (() => {
|
|
1460
|
+
/******/ // define __esModule on exports
|
|
1461
|
+
/******/ __webpack_require__.r = (exports) => {
|
|
1462
|
+
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
1463
|
+
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
1464
|
+
/******/ }
|
|
1465
|
+
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
1466
|
+
/******/ };
|
|
1467
|
+
/******/ })();
|
|
1468
|
+
/******/
|
|
1469
|
+
/******/ /* webpack/runtime/jsonp chunk loading */
|
|
1470
|
+
/******/ (() => {
|
|
1471
|
+
/******/ __webpack_require__.b = document.baseURI || self.location.href;
|
|
1472
|
+
/******/
|
|
1473
|
+
/******/ // object to store loaded and loading chunks
|
|
1474
|
+
/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
|
|
1475
|
+
/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
|
|
1476
|
+
/******/ var installedChunks = {
|
|
1477
|
+
/******/ "main": 0
|
|
1478
|
+
/******/ };
|
|
1479
|
+
/******/
|
|
1480
|
+
/******/ // no chunk on demand loading
|
|
1481
|
+
/******/
|
|
1482
|
+
/******/ // no prefetching
|
|
1483
|
+
/******/
|
|
1484
|
+
/******/ // no preloaded
|
|
1485
|
+
/******/
|
|
1486
|
+
/******/ // no HMR
|
|
1487
|
+
/******/
|
|
1488
|
+
/******/ // no HMR manifest
|
|
1489
|
+
/******/
|
|
1490
|
+
/******/ // no on chunks loaded
|
|
1491
|
+
/******/
|
|
1492
|
+
/******/ // no jsonp function
|
|
1493
|
+
/******/ })();
|
|
1494
|
+
/******/
|
|
1495
|
+
/******/ /* webpack/runtime/nonce */
|
|
1496
|
+
/******/ (() => {
|
|
1497
|
+
/******/ __webpack_require__.nc = undefined;
|
|
1498
|
+
/******/ })();
|
|
1499
|
+
/******/
|
|
1500
|
+
/************************************************************************/
|
|
1501
|
+
var __webpack_exports__ = {};
|
|
1502
|
+
// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
|
|
1503
|
+
(() => {
|
|
1504
|
+
/*!*****************!*\
|
|
1505
|
+
!*** ./APX.mjs ***!
|
|
1506
|
+
\*****************/
|
|
1507
|
+
__webpack_require__.r(__webpack_exports__);
|
|
1508
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1509
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
1510
|
+
/* harmony export */ });
|
|
1511
|
+
/* harmony import */ var _modules_listen_listen_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modules/listen/listen.mjs */ "./modules/listen/listen.mjs");
|
|
1512
|
+
/* harmony import */ var _modules_tristate_tristate_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules/tristate/tristate.mjs */ "./modules/tristate/tristate.mjs");
|
|
1513
|
+
/* harmony import */ var _modules_dialog_dialog_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/dialog/dialog.mjs */ "./modules/dialog/dialog.mjs");
|
|
1514
|
+
/* harmony import */ var _modules_common_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modules/common.mjs */ "./modules/common.mjs");
|
|
1515
|
+
|
|
1516
|
+
|
|
1517
|
+
|
|
1518
|
+
|
|
1519
|
+
|
|
1520
|
+
/**
|
|
1521
|
+
* Creates an APX object that wraps one or more HTML elements.
|
|
1522
|
+
* @param {string|HTMLElement|NodeList|HTMLCollection|Array<HTMLElement>|jQuery|Function} input - The input to create the APX object from.
|
|
1523
|
+
* @returns {Object} The APX object.
|
|
1524
|
+
* @throws {Error} If the input type is invalid.
|
|
1525
|
+
* @example
|
|
1526
|
+
* // XPath
|
|
1527
|
+
* const apx1 = APX('//div[@class="example"]');
|
|
1528
|
+
*
|
|
1529
|
+
* // CSS selector
|
|
1530
|
+
* const apx2 = APX('.example');
|
|
1531
|
+
*
|
|
1532
|
+
* // Single element
|
|
1533
|
+
* const element = document.querySelector('.example');
|
|
1534
|
+
* const apx3 = APX(element);
|
|
1535
|
+
*
|
|
1536
|
+
* // NodeList or HTMLCollection
|
|
1537
|
+
* const nodeList = document.querySelectorAll('.example');
|
|
1538
|
+
* const apx4 = APX(nodeList);
|
|
1539
|
+
*
|
|
1540
|
+
* // Array of elements
|
|
1541
|
+
* const elements = [document.querySelector('.example1'), document.querySelector('.example2')];
|
|
1542
|
+
* const apx5 = APX(elements);
|
|
1543
|
+
*
|
|
1544
|
+
* // jQuery object
|
|
1545
|
+
* const $example = $('.example');
|
|
1546
|
+
* const apx6 = APX($example);
|
|
1547
|
+
*
|
|
1548
|
+
* // Function returning an APX object
|
|
1549
|
+
* const apx7 = APX(() => APX('.example'));
|
|
1550
|
+
*/
|
|
1551
|
+
const APX = function (input, context = document) {
|
|
1552
|
+
let elements;
|
|
1553
|
+
|
|
1554
|
+
// Validate context
|
|
1555
|
+
if (typeof context === 'string') {
|
|
1556
|
+
context = document.querySelector(context);
|
|
1557
|
+
}
|
|
1558
|
+
else if (APX.isAPXObject(context)) {
|
|
1559
|
+
context = context.first();
|
|
1560
|
+
} else if (!(context instanceof HTMLElement || context instanceof Document)) {
|
|
1561
|
+
throw new Error('Invalid context for APX');
|
|
1562
|
+
}
|
|
1563
|
+
|
|
1564
|
+
if (typeof input === 'string' && input.startsWith('//')) {
|
|
1565
|
+
// XPath with context
|
|
1566
|
+
elements = document.evaluate(input, context, null, XPathResult.ANY_TYPE, null);
|
|
1567
|
+
let nodes = [];
|
|
1568
|
+
let node = elements.iterateNext();
|
|
1569
|
+
while (node) {
|
|
1570
|
+
nodes.push(node);
|
|
1571
|
+
node = elements.iterateNext();
|
|
1572
|
+
}
|
|
1573
|
+
elements = nodes;
|
|
1574
|
+
} else if (typeof input === 'string') {
|
|
1575
|
+
// CSS selector with context
|
|
1576
|
+
elements = context.querySelectorAll(input);
|
|
1577
|
+
} else if (input instanceof HTMLElement) {
|
|
1578
|
+
// Single element within context
|
|
1579
|
+
elements = context.contains(input) ? [input] : [];
|
|
1580
|
+
} else if (input instanceof NodeList || input instanceof HTMLCollection) {
|
|
1581
|
+
// NodeList or HTMLCollection within context
|
|
1582
|
+
elements = Array.from(input).filter(el => context.contains(el));
|
|
1583
|
+
} else if (Array.isArray(input) && input.every(el => el instanceof HTMLElement)) {
|
|
1584
|
+
// Array of elements within context
|
|
1585
|
+
elements = input.filter(el => context.contains(el));
|
|
1586
|
+
} else if (typeof jQuery != 'undefined' && input instanceof jQuery) {
|
|
1587
|
+
// jQuery object within context
|
|
1588
|
+
elements = Array.from(input.get()).filter(el => context.contains(el));
|
|
1589
|
+
} else if (typeof input === 'function') {
|
|
1590
|
+
// Function returning an APX object with context
|
|
1591
|
+
elements = APX(input(), context);
|
|
1592
|
+
} else {
|
|
1593
|
+
throw new Error('Invalid input type for APX');
|
|
1594
|
+
}
|
|
1595
|
+
|
|
1596
|
+
var apx = {
|
|
1597
|
+
elements: elements,
|
|
1598
|
+
_isAPXObject: true
|
|
1599
|
+
};
|
|
1600
|
+
apx.length = elements.length;
|
|
1601
|
+
apx.each = function (callback) {
|
|
1602
|
+
if (this.elements instanceof Array) this.elements.forEach(callback);
|
|
1603
|
+
if (this.elements instanceof NodeList) Array.from(this.elements).forEach(callback);
|
|
1604
|
+
return this;
|
|
1605
|
+
};
|
|
1606
|
+
apx.get = function (index) {
|
|
1607
|
+
return this.elements[index];
|
|
1608
|
+
};
|
|
1609
|
+
apx.all = function () {
|
|
1610
|
+
if (this.elements instanceof Array) return this.elements;
|
|
1611
|
+
if (this.elements instanceof NodeList) return Array.from(this.elements);
|
|
1612
|
+
return this;
|
|
1613
|
+
};
|
|
1614
|
+
apx.first = function () {
|
|
1615
|
+
return this.get(0);
|
|
1616
|
+
};
|
|
1617
|
+
(0,_modules_listen_listen_mjs__WEBPACK_IMPORTED_MODULE_0__["default"])(apx);
|
|
1618
|
+
(0,_modules_tristate_tristate_mjs__WEBPACK_IMPORTED_MODULE_1__["default"])(apx);
|
|
1619
|
+
return apx;
|
|
1620
|
+
};
|
|
1621
|
+
|
|
1622
|
+
APX.loadCss = _modules_common_mjs__WEBPACK_IMPORTED_MODULE_3__.loadCss;
|
|
1623
|
+
APX.dialog = _modules_dialog_dialog_mjs__WEBPACK_IMPORTED_MODULE_2__["default"];
|
|
1624
|
+
APX.isAPXObject = function (obj) {
|
|
1625
|
+
return obj && obj._isAPXObject === true;
|
|
1626
|
+
}
|
|
1627
|
+
APX.is_numeric = (n) => {
|
|
1628
|
+
return !isNaN(n - parseFloat(n));
|
|
1629
|
+
}
|
|
1630
|
+
|
|
1631
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (APX);
|
|
1632
|
+
})();
|
|
1633
|
+
|
|
1634
|
+
var __webpack_exports__default = __webpack_exports__["default"];
|
|
1635
|
+
export { __webpack_exports__default as default };
|
|
1636
|
+
|
|
1637
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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TTtBQUNOO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksc0VBQWlCO0FBQ3JCLElBQUksMEVBQW1CO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLGNBQWMsd0RBQU87QUFDckIsYUFBYSxrRUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFlLEdBQUcsRSIsInNvdXJjZXMiOlsid2VicGFjazovL0BhcHBpdXMtZnIvYXB4Ly4vbW9kdWxlcy9kaWFsb2cvY3NzL2RpYWxvZy5jc3MiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvLi9tb2R1bGVzL3RyaXN0YXRlL2Nzcy90cmlzdGF0ZS5jc3MiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzIiwid2VicGFjazovL0BhcHBpdXMtZnIvYXB4Ly4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2dldFVybC5qcyIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzIiwid2VicGFjazovL0BhcHBpdXMtZnIvYXB4Ly4vbW9kdWxlcy9kaWFsb2cvaHRtbC9kaWFsb2cuaHRtbCIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC8uL21vZHVsZXMvZGlhbG9nL2Nzcy9kaWFsb2cuY3NzP2E1NjciLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvLi9tb2R1bGVzL3RyaXN0YXRlL2Nzcy90cmlzdGF0ZS5jc3M/YTA5NCIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qcyIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanMiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qcyIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzIiwid2VicGFjazovL0BhcHBpdXMtZnIvYXB4Ly4vbW9kdWxlcy9jb21tb24ubWpzIiwid2VicGFjazovL0BhcHBpdXMtZnIvYXB4Ly4vbW9kdWxlcy9kaWFsb2cvZGlhbG9nLm1qcyIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC8uL21vZHVsZXMvbGlzdGVuL2xpc3Rlbi5tanMiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvLi9tb2R1bGVzL3RyaXN0YXRlL3RyaXN0YXRlLm1qcyIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vQGFwcGl1cy1mci9hcHgvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL0BhcHBpdXMtZnIvYXB4L3dlYnBhY2svcnVudGltZS9qc29ucCBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL0BhcHBpdXMtZnIvYXB4L3dlYnBhY2svcnVudGltZS9ub25jZSIsIndlYnBhY2s6Ly9AYXBwaXVzLWZyL2FweC8uL0FQWC5tanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgYC8qIERpYWxvZyBzdHlsaW5nICovXHJcbi5BUFgtZGlhbG9nIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB6LWluZGV4OiAxMDAyO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHRvcDogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNCk7XHJcbiAgICAvKiBEaW1tZWQgYmFja2dyb3VuZCBmb3IgZm9jdXMgb24gZGlhbG9nICovXHJcbn1cclxuXHJcbi5BUFgtZGlhbG9nLWNvbnRlbnQge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZlZmVmZTtcclxuICAgIHBhZGRpbmc6IDQwcHg7XHJcbiAgICBib3JkZXI6IG5vbmU7XHJcbiAgICB3aWR0aDogYXV0bztcclxuICAgIG1pbi13aWR0aDogMzAwcHg7XHJcbiAgICBtYXgtd2lkdGg6IDgwJTtcclxuICAgIG1hcmdpbjogYXV0bztcclxuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcclxuICAgIGJveC1zaGFkb3c6IDBweCA2cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbiAgICBmb250LWZhbWlseTogJ0hlbHZldGljYSBOZXVlJywgQXJpYWwsIHNhbnMtc2VyaWY7XHJcbn1cclxuXHJcbmgyLkFQWC1kaWFsb2ctdGl0bGV7XHJcbiAgICBtYXJnaW4tdG9wOjA7XHJcbn1cclxuXHJcbi5BUFgtY2xvc2UtZGlhbG9nIHtcclxuICAgIGNvbG9yOiAjYWFhO1xyXG4gICAgZmxvYXQ6IHJpZ2h0O1xyXG4gICAgZm9udC1zaXplOiAyNHB4O1xyXG4gICAgbWFyZ2luLXRvcDogLTEwcHg7XHJcbiAgICAvKiBBZGp1c3QgcG9zaXRpb25pbmcgKi9cclxuICAgIG1hcmdpbi1yaWdodDogLTEwcHg7XHJcbn1cclxuXHJcbi5BUFgtY2xvc2UtZGlhbG9nOmhvdmVyLFxyXG4uQVBYLWNsb3NlLWRpYWxvZzpmb2N1cyB7XHJcbiAgICBjb2xvcjogIzMzMztcclxuICAgIC8qIERhcmtlciBjb2xvciBvbiBob3Zlci9mb2N1cyAqL1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4vKiBJbnB1dCBmaWVsZHMgc3R5bGluZyAqL1xyXG4uQVBYLWRpYWxvZy1jb250ZW50IGlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxyXG4uQVBYLWRpYWxvZy1jb250ZW50IGlucHV0W3R5cGU9XCJudW1iZXJcIl0sXHJcbi5BUFgtZGlhbG9nLWNvbnRlbnQgaW5wdXRbdHlwZT1cImRhdGVcIl0sXHJcbi5BUFgtZGlhbG9nLWNvbnRlbnQgaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgcGFkZGluZzogMTBweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgZm9udC1mYW1pbHk6ICdIZWx2ZXRpY2EgTmV1ZScsIEFyaWFsLCBzYW5zLXNlcmlmO1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjNzO1xyXG59XHJcblxyXG4uQVBYLWRpYWxvZy1jb250ZW50IGlucHV0W3R5cGU9XCJ0ZXh0XCJdOmZvY3VzLFxyXG4uQVBYLWRpYWxvZy1jb250ZW50IGlucHV0W3R5cGU9XCJudW1iZXJcIl06Zm9jdXMsXHJcbi5BUFgtZGlhbG9nLWNvbnRlbnQgaW5wdXRbdHlwZT1cImRhdGVcIl06Zm9jdXMsXHJcbi5BUFgtZGlhbG9nLWNvbnRlbnQgaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdOmZvY3VzIHtcclxuICAgIGJvcmRlci1jb2xvcjogIzJDM0U1MDtcclxuICAgIC8qIERlZXAgQmx1ZSBDb2xvciAqL1xyXG4gICAgb3V0bGluZTogbm9uZTtcclxufVxyXG5cclxuLyogQnV0dG9uIGluIHRoZSBkaWFsb2cgKi9cclxuLkFQWC1kaWFsb2ctYnV0dG9uLWNvbnRhaW5lciBidXR0b24ge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzJDM0U1MDtcclxuICAgIGNvbG9yOiAjRUNGMEYxO1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgcGFkZGluZzogMTBweCAyMHB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzO1xyXG59XHJcblxyXG4uQVBYLWRpYWxvZy1idXR0b24tY29udGFpbmVyIGJ1dHRvbjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQ0OTVFO1xyXG59XHJcblxyXG4uQVBYLWRpYWxvZy1idXR0b24tY29udGFpbmVyIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBnYXA6IDEwcHg7XHJcbiAgICBtYXJnaW4tdG9wOjFlbTtcclxuICAgIC8qIHNwYWNpbmcgYmV0d2VlbiBidXR0b25zICovXHJcbn1cclxuXHJcbi8qIExvYWRpbmcgaW5kaWNhdG9yICovXHJcbi5BUFgtZGlhbG9nLWxvYWRpbmctaW5kaWNhdG9yIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBoZWlnaHQ6IDEwMHB4O1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5BUFgtZGlhbG9nLWxvYWRpbmctaW5kaWNhdG9yOjpiZWZvcmUge1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICB3aWR0aDogNDBweDtcclxuICAgIGhlaWdodDogNDBweDtcclxuICAgIGJvcmRlcjogNHB4IHNvbGlkICNmM2YzZjM7XHJcbiAgICBib3JkZXItdG9wOiA0cHggc29saWQgIzJDM0U1MDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgIGFuaW1hdGlvbjogQVBYLWRpYWxvZy1zcGluIDFzIGxpbmVhciBpbmZpbml0ZTtcclxufVxyXG5cclxuQGtleWZyYW1lcyBBUFgtZGlhbG9nLXNwaW4ge1xyXG4gICAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxyXG4gICAgMTAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cclxufWAsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbW9kdWxlcy9kaWFsb2cvY3NzL2RpYWxvZy5jc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsbUJBQW1CO0FBQ25CO0lBQ0ksYUFBYTtJQUNiLGVBQWU7SUFDZixhQUFhO0lBQ2IsT0FBTztJQUNQLE1BQU07SUFDTixXQUFXO0lBQ1gsWUFBWTtJQUNaLGNBQWM7SUFDZCxvQ0FBb0M7SUFDcEMsMENBQTBDO0FBQzlDOztBQUVBO0lBQ0kseUJBQXlCO0lBQ3pCLGFBQWE7SUFDYixZQUFZO0lBQ1osV0FBVztJQUNYLGdCQUFnQjtJQUNoQixjQUFjO0lBQ2QsWUFBWTtJQUNaLGtCQUFrQjtJQUNsQiwyQ0FBMkM7SUFDM0MsZ0RBQWdEO0FBQ3BEOztBQUVBO0lBQ0ksWUFBWTtBQUNoQjs7QUFFQTtJQUNJLFdBQVc7SUFDWCxZQUFZO0lBQ1osZUFBZTtJQUNmLGlCQUFpQjtJQUNqQix1QkFBdUI7SUFDdkIsbUJBQW1CO0FBQ3ZCOztBQUVBOztJQUVJLFdBQVc7SUFDWCxnQ0FBZ0M7SUFDaEMsZUFBZTtBQUNuQjs7QUFFQSx5QkFBeUI7QUFDekI7Ozs7SUFJSSxXQUFXO0lBQ1gsYUFBYTtJQUNiLG1CQUFtQjtJQUNuQixzQkFBc0I7SUFDdEIsa0JBQWtCO0lBQ2xCLGdEQUFnRDtJQUNoRCxlQUFlO0lBQ2Ysc0JBQXNCO0lBQ3RCLDZCQUE2QjtBQUNqQzs7QUFFQTs7OztJQUlJLHFCQUFxQjtJQUNyQixvQkFBb0I7SUFDcEIsYUFBYTtBQUNqQjs7QUFFQSx5QkFBeUI7QUFDekI7SUFDSSx5QkFBeUI7SUFDekIsY0FBYztJQUNkLFlBQVk7SUFDWixrQkFBa0I7SUFDbEIsa0JBQWtCO0lBQ2xCLGVBQWU7SUFDZixlQUFlO0lBQ2YsaUNBQWlDO0FBQ3JDOztBQUVBO0lBQ0kseUJBQXlCO0FBQzdCOztBQUVBO0lBQ0ksYUFBYTtJQUNiLFNBQVM7SUFDVCxjQUFjO0lBQ2QsNEJBQTRCO0FBQ2hDOztBQUVBLHNCQUFzQjtBQUN0QjtJQUNJLGFBQWE7SUFDYix1QkFBdUI7SUFDdkIsbUJBQW1CO0lBQ25CLGFBQWE7SUFDYixXQUFXO0FBQ2Y7O0FBRUE7SUFDSSxXQUFXO0lBQ1gsV0FBVztJQUNYLFlBQVk7SUFDWix5QkFBeUI7SUFDekIsNkJBQTZCO0lBQzdCLGtCQUFrQjtJQUNsQiw2Q0FBNkM7QUFDakQ7O0FBRUE7SUFDSSxLQUFLLHVCQUF1QixFQUFFO0lBQzlCLE9BQU8seUJBQXlCLEVBQUU7QUFDdENcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLyogRGlhbG9nIHN0eWxpbmcgKi9cXHJcXG4uQVBYLWRpYWxvZyB7XFxyXFxuICAgIGRpc3BsYXk6IG5vbmU7XFxyXFxuICAgIHBvc2l0aW9uOiBmaXhlZDtcXHJcXG4gICAgei1pbmRleDogMTAwMjtcXHJcXG4gICAgbGVmdDogMDtcXHJcXG4gICAgdG9wOiAwO1xcclxcbiAgICB3aWR0aDogMTAwJTtcXHJcXG4gICAgaGVpZ2h0OiAxMDAlO1xcclxcbiAgICBvdmVyZmxvdzogYXV0bztcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQpO1xcclxcbiAgICAvKiBEaW1tZWQgYmFja2dyb3VuZCBmb3IgZm9jdXMgb24gZGlhbG9nICovXFxyXFxufVxcclxcblxcclxcbi5BUFgtZGlhbG9nLWNvbnRlbnQge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmZWZlO1xcclxcbiAgICBwYWRkaW5nOiA0MHB4O1xcclxcbiAgICBib3JkZXI6IG5vbmU7XFxyXFxuICAgIHdpZHRoOiBhdXRvO1xcclxcbiAgICBtaW4td2lkdGg6IDMwMHB4O1xcclxcbiAgICBtYXgtd2lkdGg6IDgwJTtcXHJcXG4gICAgbWFyZ2luOiBhdXRvO1xcclxcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XFxyXFxuICAgIGJveC1zaGFkb3c6IDBweCA2cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XFxyXFxuICAgIGZvbnQtZmFtaWx5OiAnSGVsdmV0aWNhIE5ldWUnLCBBcmlhbCwgc2Fucy1zZXJpZjtcXHJcXG59XFxyXFxuXFxyXFxuaDIuQVBYLWRpYWxvZy10aXRsZXtcXHJcXG4gICAgbWFyZ2luLXRvcDowO1xcclxcbn1cXHJcXG5cXHJcXG4uQVBYLWNsb3NlLWRpYWxvZyB7XFxyXFxuICAgIGNvbG9yOiAjYWFhO1xcclxcbiAgICBmbG9hdDogcmlnaHQ7XFxyXFxuICAgIGZvbnQtc2l6ZTogMjRweDtcXHJcXG4gICAgbWFyZ2luLXRvcDogLTEwcHg7XFxyXFxuICAgIC8qIEFkanVzdCBwb3NpdGlvbmluZyAqL1xcclxcbiAgICBtYXJnaW4tcmlnaHQ6IC0xMHB4O1xcclxcbn1cXHJcXG5cXHJcXG4uQVBYLWNsb3NlLWRpYWxvZzpob3ZlcixcXHJcXG4uQVBYLWNsb3NlLWRpYWxvZzpmb2N1cyB7XFxyXFxuICAgIGNvbG9yOiAjMzMzO1xcclxcbiAgICAvKiBEYXJrZXIgY29sb3Igb24gaG92ZXIvZm9jdXMgKi9cXHJcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcclxcbn1cXHJcXG5cXHJcXG4vKiBJbnB1dCBmaWVsZHMgc3R5bGluZyAqL1xcclxcbi5BUFgtZGlhbG9nLWNvbnRlbnQgaW5wdXRbdHlwZT1cXFwidGV4dFxcXCJdLFxcclxcbi5BUFgtZGlhbG9nLWNvbnRlbnQgaW5wdXRbdHlwZT1cXFwibnVtYmVyXFxcIl0sXFxyXFxuLkFQWC1kaWFsb2ctY29udGVudCBpbnB1dFt0eXBlPVxcXCJkYXRlXFxcIl0sXFxyXFxuLkFQWC1kaWFsb2ctY29udGVudCBpbnB1dFt0eXBlPVxcXCJkYXRldGltZS1sb2NhbFxcXCJdIHtcXHJcXG4gICAgd2lkdGg6IDEwMCU7XFxyXFxuICAgIHBhZGRpbmc6IDEwcHg7XFxyXFxuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XFxyXFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcXHJcXG4gICAgZm9udC1mYW1pbHk6ICdIZWx2ZXRpY2EgTmV1ZScsIEFyaWFsLCBzYW5zLXNlcmlmO1xcclxcbiAgICBmb250LXNpemU6IDE2cHg7XFxyXFxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxyXFxuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjNzO1xcclxcbn1cXHJcXG5cXHJcXG4uQVBYLWRpYWxvZy1jb250ZW50IGlucHV0W3R5cGU9XFxcInRleHRcXFwiXTpmb2N1cyxcXHJcXG4uQVBYLWRpYWxvZy1jb250ZW50IGlucHV0W3R5cGU9XFxcIm51bWJlclxcXCJdOmZvY3VzLFxcclxcbi5BUFgtZGlhbG9nLWNvbnRlbnQgaW5wdXRbdHlwZT1cXFwiZGF0ZVxcXCJdOmZvY3VzLFxcclxcbi5BUFgtZGlhbG9nLWNvbnRlbnQgaW5wdXRbdHlwZT1cXFwiZGF0ZXRpbWUtbG9jYWxcXFwiXTpmb2N1cyB7XFxyXFxuICAgIGJvcmRlci1jb2xvcjogIzJDM0U1MDtcXHJcXG4gICAgLyogRGVlcCBCbHVlIENvbG9yICovXFxyXFxuICAgIG91dGxpbmU6IG5vbmU7XFxyXFxufVxcclxcblxcclxcbi8qIEJ1dHRvbiBpbiB0aGUgZGlhbG9nICovXFxyXFxuLkFQWC1kaWFsb2ctYnV0dG9uLWNvbnRhaW5lciBidXR0b24ge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMkMzRTUwO1xcclxcbiAgICBjb2xvcjogI0VDRjBGMTtcXHJcXG4gICAgYm9yZGVyOiBub25lO1xcclxcbiAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcXHJcXG4gICAgZm9udC1zaXplOiAxNnB4O1xcclxcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxyXFxuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcztcXHJcXG59XFxyXFxuXFxyXFxuLkFQWC1kaWFsb2ctYnV0dG9uLWNvbnRhaW5lciBidXR0b246aG92ZXIge1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQ0OTVFO1xcclxcbn1cXHJcXG5cXHJcXG4uQVBYLWRpYWxvZy1idXR0b24tY29udGFpbmVyIHtcXHJcXG4gICAgZGlzcGxheTogZmxleDtcXHJcXG4gICAgZ2FwOiAxMHB4O1xcclxcbiAgICBtYXJnaW4tdG9wOjFlbTtcXHJcXG4gICAgLyogc3BhY2luZyBiZXR3ZWVuIGJ1dHRvbnMgKi9cXHJcXG59XFxyXFxuXFxyXFxuLyogTG9hZGluZyBpbmRpY2F0b3IgKi9cXHJcXG4uQVBYLWRpYWxvZy1sb2FkaW5nLWluZGljYXRvciB7XFxyXFxuICAgIGRpc3BsYXk6IGZsZXg7XFxyXFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcclxcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcclxcbiAgICBoZWlnaHQ6IDEwMHB4O1xcclxcbiAgICB3aWR0aDogMTAwJTtcXHJcXG59XFxyXFxuXFxyXFxuLkFQWC1kaWFsb2ctbG9hZGluZy1pbmRpY2F0b3I6OmJlZm9yZSB7XFxyXFxuICAgIGNvbnRlbnQ6ICcnO1xcclxcbiAgICB3aWR0aDogNDBweDtcXHJcXG4gICAgaGVpZ2h0OiA0MHB4O1xcclxcbiAgICBib3JkZXI6IDRweCBzb2xpZCAjZjNmM2YzO1xcclxcbiAgICBib3JkZXItdG9wOiA0cHggc29saWQgIzJDM0U1MDtcXHJcXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xcclxcbiAgICBhbmltYXRpb246IEFQWC1kaWFsb2ctc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7XFxyXFxufVxcclxcblxcclxcbkBrZXlmcmFtZXMgQVBYLWRpYWxvZy1zcGluIHtcXHJcXG4gICAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxcclxcbiAgICAxMDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfVxcclxcbn1cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2dldFVybC5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8wX19fID0gbmV3IFVSTChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB4bWxucyUzRCUyN2h0dHAlM0EvL3d3dy53My5vcmcvMjAwMC9zdmclMjclMjB3aWR0aCUzRCUyNzMyJTI3JTIwaGVpZ2h0JTNEJTI3MzIlMjclM0UlM0NwYXRoJTIwJTIwZmlsbCUzRCUyMiUyM2NjY2NjYyUyMiUyMGQlM0QlMjJNMjUuMTA3JTIwMzIuMDMwaC0xOC4yMTRjLTMuNDU2JTIwMC02LjI2OC0yLjgxLTYuMjY4LTYuMjY0di0xOS41MjljMC0zLjQ1NiUyMDIuODEyLTYuMjY4JTIwNi4yNjgtNi4yNjhoMTguMjE0YzMuNDU2JTIwMCUyMDYuMjY4JTIwMi44MTIlMjA2LjI2OCUyMDYuMjY4djE5LjUyOWMwJTIwMy40NTItMi44MTIlMjA2LjI2NC02LjI2OCUyMDYuMjY0ek02Ljg5MyUyMDEuODVjLTIuNDE5JTIwMC00LjM4NiUyMDEuOTY3LTQuMzg2JTIwNC4zODZ2MTkuNTI5YzAlMjAyLjQxNyUyMDEuOTY3JTIwNC4zODIlMjA0LjM4NiUyMDQuMzgyaDE4LjIxNGMyLjQxOSUyMDAlMjA0LjM4Ni0xLjk2NSUyMDQuMzg2LTQuMzgydi0xOS41MjljMC0yLjQxOS0xLjk2Ny00LjM4Ni00LjM4Ni00LjM4NmgtMTguMjE0eiUyMiUzRSUzQy9wYXRoJTNFJTNDL3N2ZyUzRVwiLCBpbXBvcnQubWV0YS51cmwpO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8xX19fID0gbmV3IFVSTChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB4bWxucyUzRCUyN2h0dHAlM0EvL3d3dy53My5vcmcvMjAwMC9zdmclMjclMjB3aWR0aCUzRCUyNzMyJTI3JTIwaGVpZ2h0JTNEJTI3MzIlMjclM0UlM0NwYXRoJTIwZmlsbCUzRCUyMiUyMzA2NTRiYSUyMiUyMGQlM0QlMjJNMC41NDMlMjA1LjY0N2MwLTMuMTE5JTIwMi41MzEtNS42NDclMjA1LjY1LTUuNjQ3aDE5LjMwOWMzLjEyJTIwMCUyMDUuNjUlMjAyLjUxMSUyMDUuNjUlMjA1LjY0N3YyMC43MDVjMCUyMDMuMTE5LTIuNTMxJTIwNS42NDctNS42NSUyMDUuNjQ3aC0xOS4zMDljLTMuMTIlMjAwLTUuNjUtMi41MTEtNS42NS01LjY0N3YtMjAuNzA1ek01LjMxMyUyMDE3LjU4N2w3LjAzOSUyMDYuODM5JTIwMTMuODMxLTEzLjQzOS0yLjYzNi0yLjU2MS0xMC45MjklMjAxMC42Mi00LjQ0Mi00LjMxNy0yLjg2MiUyMDIuODU4eiUyMiUzRSUzQy9wYXRoJTNFJTNDL3N2ZyUzRVwiLCBpbXBvcnQubWV0YS51cmwpO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8yX19fID0gbmV3IFVSTChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0MlM0Z4bWwlMjB2ZXJzaW9uJTNEJTIyMS4wJTIyJTIwZW5jb2RpbmclM0QlMjJVVEYtOCUyMiUzRiUzRSUzQ3N2ZyUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDMyJTIwMzIlMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUzQ3BhdGglMjBkJTNEJTIybTAuNTQzJTIwNS42NDdjMC0zLjExOSUyMDIuNTMxLTUuNjQ3JTIwNS42NS01LjY0N2gxOS4zMDljMy4xMiUyMDAlMjA1LjY1JTIwMi41MTElMjA1LjY1JTIwNS42NDd2MjAuNzA1YzAlMjAzLjExOS0yLjUzMSUyMDUuNjQ3LTUuNjUlMjA1LjY0N2gtMTkuMzA5Yy0zLjEyJTIwMC01LjY1LTIuNTExLTUuNjUtNS42NDd2LTIwLjcwNXolMjIlMjBmaWxsJTNEJTIyJTIzZjAwJTIyJTJGJTNFJTNDcGF0aCUyMGQlM0QlMjJtOCUyMDglMjAxNiUyMDE2JTIyJTIwc3Ryb2tlJTNEJTIyJTIzZmZmJTIyJTIwc3Ryb2tlLXdpZHRoJTNEJTIyMiUyMiUyRiUzRSUzQ3BhdGglMjBkJTNEJTIyTTI0JTIwOEw4JTIwMjQlMjIlMjBzdHJva2UlM0QlMjIlMjNmZmYlMjIlMjBzdHJva2Utd2lkdGglM0QlMjIyJTIyJTJGJTNFJTNDJTJGc3ZnJTNFXCIsIGltcG9ydC5tZXRhLnVybCk7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18pO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzFfX18gPSBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8xX19fKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8yX19fID0gX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMl9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgYC5hcHgtdHJpc3RhdGUge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIG1pbi13aWR0aDoxM3B4O1xyXG4gICAgbWluLWhlaWdodDoxM3B4O1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICBib3JkZXItcmFkaXVzOjNweDtcclxufVxyXG4uYXB4LXRyaXN0YXRlLnVuY2hlY2tlZCB7XHJcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJHtfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19ffSk7XHJcbn1cclxuLmFweC10cmlzdGF0ZS5jaGVja2VkIHtcclxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgke19fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzFfX199KTtcclxuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XHJcbn1cclxuLmFweC10cmlzdGF0ZS5jcm9zc2VkIHtcclxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgke19fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzJfX199KTtcclxuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XHJcbn1gLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL21vZHVsZXMvdHJpc3RhdGUvY3NzL3RyaXN0YXRlLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTtJQUNJLHFCQUFxQjtJQUNyQixzQkFBc0I7SUFDdEIsa0JBQWtCO0lBQ2xCLGVBQWU7SUFDZixrQkFBa0I7SUFDbEIsY0FBYztJQUNkLGVBQWU7SUFDZix3QkFBd0I7SUFDeEIsdUJBQXVCO0lBQ3ZCLGlCQUFpQjtBQUNyQjtBQUNBO0lBQ0kseURBQXlsQjtBQUM3bEI7QUFDQTtJQUNJLHlEQUE2ZTtJQUM3ZSw0QkFBNEI7SUFDNUIsMkJBQTJCO0FBQy9CO0FBQ0E7SUFDSSx5REFBc25CO0lBQ3RuQiw0QkFBNEI7SUFDNUIsMkJBQTJCO0FBQy9CXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5hcHgtdHJpc3RhdGUge1xcclxcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxyXFxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxyXFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXHJcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcclxcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxyXFxuICAgIG1pbi13aWR0aDoxM3B4O1xcclxcbiAgICBtaW4taGVpZ2h0OjEzcHg7XFxyXFxuICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcXHJcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6M3B4O1xcclxcbn1cXHJcXG4uYXB4LXRyaXN0YXRlLnVuY2hlY2tlZCB7XFxyXFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zJTNEJTI3aHR0cCUzQS8vd3d3LnczLm9yZy8yMDAwL3N2ZyUyNyUyMHdpZHRoJTNEJTI3MzIlMjclMjBoZWlnaHQlM0QlMjczMiUyNyUzRSUzQ3BhdGglMjAlMjBmaWxsJTNEJTIyJTIzY2NjY2NjJTIyJTIwZCUzRCUyMk0yNS4xMDclMjAzMi4wMzBoLTE4LjIxNGMtMy40NTYlMjAwLTYuMjY4LTIuODEtNi4yNjgtNi4yNjR2LTE5LjUyOWMwLTMuNDU2JTIwMi44MTItNi4yNjglMjA2LjI2OC02LjI2OGgxOC4yMTRjMy40NTYlMjAwJTIwNi4yNjglMjAyLjgxMiUyMDYuMjY4JTIwNi4yNjh2MTkuNTI5YzAlMjAzLjQ1Mi0yLjgxMiUyMDYuMjY0LTYuMjY4JTIwNi4yNjR6TTYuODkzJTIwMS44NWMtMi40MTklMjAwLTQuMzg2JTIwMS45NjctNC4zODYlMjA0LjM4NnYxOS41MjljMCUyMDIuNDE3JTIwMS45NjclMjA0LjM4MiUyMDQuMzg2JTIwNC4zODJoMTguMjE0YzIuNDE5JTIwMCUyMDQuMzg2LTEuOTY1JTIwNC4zODYtNC4zODJ2LTE5LjUyOWMwLTIuNDE5LTEuOTY3LTQuMzg2LTQuMzg2LTQuMzg2aC0xOC4yMTR6JTIyJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFJyk7XFxyXFxufVxcclxcbi5hcHgtdHJpc3RhdGUuY2hlY2tlZCB7XFxyXFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyUyMHhtbG5zJTNEJTI3aHR0cCUzQS8vd3d3LnczLm9yZy8yMDAwL3N2ZyUyNyUyMHdpZHRoJTNEJTI3MzIlMjclMjBoZWlnaHQlM0QlMjczMiUyNyUzRSUzQ3BhdGglMjBmaWxsJTNEJTIyJTIzMDY1NGJhJTIyJTIwZCUzRCUyMk0wLjU0MyUyMDUuNjQ3YzAtMy4xMTklMjAyLjUzMS01LjY0NyUyMDUuNjUtNS42NDdoMTkuMzA5YzMuMTIlMjAwJTIwNS42NSUyMDIuNTExJTIwNS42NSUyMDUuNjQ3djIwLjcwNWMwJTIwMy4xMTktMi41MzElMjA1LjY0Ny01LjY1JTIwNS42NDdoLTE5LjMwOWMtMy4xMiUyMDAtNS42NS0yLjUxMS01LjY1LTUuNjQ3di0yMC43MDV6TTUuMzEzJTIwMTcuNTg3bDcuMDM5JTIwNi44MzklMjAxMy44MzEtMTMuNDM5LTIuNjM2LTIuNTYxLTEwLjkyOSUyMDEwLjYyLTQuNDQyLTQuMzE3LTIuODYyJTIwMi44NTh6JTIyJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFJyk7XFxyXFxuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxyXFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcXHJcXG59XFxyXFxuLmFweC10cmlzdGF0ZS5jcm9zc2VkIHtcXHJcXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsJTNDJTNGeG1sJTIwdmVyc2lvbiUzRCUyMjEuMCUyMiUyMGVuY29kaW5nJTNEJTIyVVRGLTglMjIlM0YlM0UlM0NzdmclMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAzMiUyMDMyJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlM0NwYXRoJTIwZCUzRCUyMm0wLjU0MyUyMDUuNjQ3YzAtMy4xMTklMjAyLjUzMS01LjY0NyUyMDUuNjUtNS42NDdoMTkuMzA5YzMuMTIlMjAwJTIwNS42NSUyMDIuNTExJTIwNS42NSUyMDUuNjQ3djIwLjcwNWMwJTIwMy4xMTktMi41MzElMjA1LjY0Ny01LjY1JTIwNS42NDdoLTE5LjMwOWMtMy4xMiUyMDAtNS42NS0yLjUxMS01LjY1LTUuNjQ3di0yMC43MDV6JTIyJTIwZmlsbCUzRCUyMiUyM2YwMCUyMiUyRiUzRSUzQ3BhdGglMjBkJTNEJTIybTglMjA4JTIwMTYlMjAxNiUyMiUyMHN0cm9rZSUzRCUyMiUyM2ZmZiUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjIlMjIlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk0yNCUyMDhMOCUyMDI0JTIyJTIwc3Ryb2tlJTNEJTIyJTIzZmZmJTIyJTIwc3Ryb2tlLXdpZHRoJTNEJTIyMiUyMiUyRiUzRSUzQyUyRnN2ZyUzRScpO1xcclxcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcclxcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XFxyXFxufVwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTtcblxuICAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICAgIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2YgaXRlbVs1XSAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIik7XG4gICAgICB9XG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKTtcbiAgICAgIH1cbiAgICAgIGNvbnRlbnQgKz0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKTtcbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTtcblxuICAvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuICBsaXN0LmkgPSBmdW5jdGlvbiBpKG1vZHVsZXMsIG1lZGlhLCBkZWR1cGUsIHN1cHBvcnRzLCBsYXllcikge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgdW5kZWZpbmVkXV07XG4gICAgfVxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgIHZhciBpZCA9IHRoaXNba11bMF07XG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAodmFyIF9rID0gMDsgX2sgPCBtb2R1bGVzLmxlbmd0aDsgX2srKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfa10pO1xuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBsYXllciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW1bNV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChtZWRpYSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc3VwcG9ydHMpIHtcbiAgICAgICAgaWYgKCFpdGVtWzRdKSB7XG4gICAgICAgICAgaXRlbVs0XSA9IFwiXCIuY29uY2F0KHN1cHBvcnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNF0gPSBzdXBwb3J0cztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh1cmwsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGlmICghdXJsKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuICB1cmwgPSBTdHJpbmcodXJsLl9fZXNNb2R1bGUgPyB1cmwuZGVmYXVsdCA6IHVybCk7XG5cbiAgLy8gSWYgdXJsIGlzIGFscmVhZHkgd3JhcHBlZCBpbiBxdW90ZXMsIHJlbW92ZSB0aGVtXG4gIGlmICgvXlsnXCJdLipbJ1wiXSQvLnRlc3QodXJsKSkge1xuICAgIHVybCA9IHVybC5zbGljZSgxLCAtMSk7XG4gIH1cbiAgaWYgKG9wdGlvbnMuaGFzaCkge1xuICAgIHVybCArPSBvcHRpb25zLmhhc2g7XG4gIH1cblxuICAvLyBTaG91bGQgdXJsIGJlIHdyYXBwZWQ/XG4gIC8vIFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy0zLyN1cmxzXG4gIGlmICgvW1wiJygpIFxcdFxcbl18KCUyMCkvLnRlc3QodXJsKSB8fCBvcHRpb25zLm5lZWRRdW90ZXMpIHtcbiAgICByZXR1cm4gXCJcXFwiXCIuY29uY2F0KHVybC5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJykucmVwbGFjZSgvXFxuL2csIFwiXFxcXG5cIiksIFwiXFxcIlwiKTtcbiAgfVxuICByZXR1cm4gdXJsO1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlbSkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV07XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcbiAgaWYgKCFjc3NNYXBwaW5nKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cbiAgaWYgKHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY3NzTWFwcGluZykpKSk7XG4gICAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbihcIlxcblwiKTtcbiAgfVxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsIi8vIE1vZHVsZVxudmFyIGNvZGUgPSBcIjxkaXYgY2xhc3M9XFxcIkFQWC1kaWFsb2dcXFwiPlxcclxcbiAgICA8ZGl2IGNsYXNzPVxcXCJBUFgtZGlhbG9nLWNvbnRlbnRcXFwiPlxcclxcbiAgICAgICAgPHNwYW4gY2xhc3M9XFxcIkFQWC1jbG9zZS1kaWFsb2dcXFwiPiZ0aW1lczs8L3NwYW4+XFxyXFxuICAgICAgICA8aDIgY2xhc3M9XFxcIkFQWC1kaWFsb2ctdGl0bGVcXFwiPjwvaDI+XFxyXFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJBUFgtZGlhbG9nLWR5bmFtaWMtY29udGVudFxcXCI+PC9kaXY+XFxyXFxuICAgICAgICA8ZGl2IGNsYXNzPVxcXCJBUFgtZGlhbG9nLWJ1dHRvbi1jb250YWluZXJcXFwiPjwvZGl2PlxcclxcbiAgICA8L2Rpdj5cXHJcXG48L2Rpdj5cIjtcbi8vIEV4cG9ydHNcbm1vZHVsZS5leHBvcnRzID0gY29kZTsiLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vZGlhbG9nLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vZGlhbG9nLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi90cmlzdGF0ZS5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3RyaXN0YXRlLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgc3R5bGVzSW5ET00gPSBbXTtcbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRE9NLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRE9NW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXhCeUlkZW50aWZpZXIgPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM10sXG4gICAgICBzdXBwb3J0czogaXRlbVs0XSxcbiAgICAgIGxheWVyOiBpdGVtWzVdXG4gICAgfTtcbiAgICBpZiAoaW5kZXhCeUlkZW50aWZpZXIgIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHVwZGF0ZXIgPSBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMuYnlJbmRleCA9IGk7XG4gICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoaSwgMCwge1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiB1cGRhdGVyLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5mdW5jdGlvbiBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBhcGkgPSBvcHRpb25zLmRvbUFQSShvcHRpb25zKTtcbiAgYXBpLnVwZGF0ZShvYmopO1xuICB2YXIgdXBkYXRlciA9IGZ1bmN0aW9uIHVwZGF0ZXIobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCAmJiBuZXdPYmouc3VwcG9ydHMgPT09IG9iai5zdXBwb3J0cyAmJiBuZXdPYmoubGF5ZXIgPT09IG9iai5sYXllcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBhcGkudXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiB1cGRhdGVyO1xufVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG4gICAgICBpZiAoc3R5bGVzSW5ET01bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRE9NW19pbmRleF0udXBkYXRlcigpO1xuICAgICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIG1lbW8gPSB7fTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBnZXRUYXJnZXQodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpO1xuXG4gICAgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcbiAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICB9XG4gIHJldHVybiBtZW1vW3RhcmdldF07XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0QnlTZWxlY3RvcihpbnNlcnQsIHN0eWxlKSB7XG4gIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQoaW5zZXJ0KTtcbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICB9XG4gIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydEJ5U2VsZWN0b3I7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIG9wdGlvbnMuc2V0QXR0cmlidXRlcyhlbGVtZW50LCBvcHRpb25zLmF0dHJpYnV0ZXMpO1xuICBvcHRpb25zLmluc2VydChlbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xuICByZXR1cm4gZWxlbWVudDtcbn1cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0U3R5bGVFbGVtZW50OyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcyhzdHlsZUVsZW1lbnQpIHtcbiAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSBcInVuZGVmaW5lZFwiID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuICBpZiAobm9uY2UpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgbm9uY2UpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlczsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gXCJcIjtcbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KG9iai5zdXBwb3J0cywgXCIpIHtcIik7XG4gIH1cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpO1xuICB9XG4gIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2Ygb2JqLmxheWVyICE9PSBcInVuZGVmaW5lZFwiO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwiQGxheWVyXCIuY29uY2F0KG9iai5sYXllci5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KG9iai5sYXllcikgOiBcIlwiLCBcIiB7XCIpO1xuICB9XG4gIGNzcyArPSBvYmouY3NzO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9XG5cbiAgLy8gRm9yIG9sZCBJRVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG4gIG9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG59XG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGVFbGVtZW50LnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KTtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBkb21BUEkob3B0aW9ucykge1xuICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKCkge30sXG4gICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHt9XG4gICAgfTtcbiAgfVxuICB2YXIgc3R5bGVFbGVtZW50ID0gb3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gIHJldHVybiB7XG4gICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUob2JqKSB7XG4gICAgICBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaik7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpO1xuICAgIH1cbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZG9tQVBJOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50KSB7XG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gc3R5bGVUYWdUcmFuc2Zvcm07IiwiLy8gRnVuY3Rpb24gdG8gbG9hZCB0aGUgQ1NTIGZyb20gYSBnaXZlbiBVUkxcclxuZnVuY3Rpb24gbG9hZENzcyh1cmwpIHtcclxuICAgIHJldHVybiBmZXRjaCh1cmwpXHJcbiAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UudGV4dCgpKVxyXG4gICAgICAgIC50aGVuKGNzcyA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0eWxlU2hlZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XHJcbiAgICAgICAgICAgIHN0eWxlU2hlZXQudHlwZSA9IFwidGV4dC9jc3NcIjtcclxuICAgICAgICAgICAgc3R5bGVTaGVldC50ZXh0Q29udGVudCA9IGNzczsgIC8vIFVzZSB0ZXh0Q29udGVudCBpbnN0ZWFkIG9mIGlubmVyVGV4dFxyXG4gICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlU2hlZXQpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBsb2FkIENTUzpcIiwgZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQge1xyXG4gICAgbG9hZENzc1xyXG59IiwiLy8gSW1wb3J0aW5nIHRoZSBDU1MgYW5kIEhUTUwgdGVtcGxhdGVzXHJcbmltcG9ydCAnLi9jc3MvZGlhbG9nLmNzcyc7XHJcbmltcG9ydCBkaWFsb2dUZW1wbGF0ZSBmcm9tICcuL2h0bWwvZGlhbG9nLmh0bWw/cmF3JztcclxuXHJcbmNvbnN0IGNyZWF0ZURpYWxvZyA9IChvcHRpb25zKSA9PiB7XHJcbiAgICBjb25zdCBkaWFsb2dEZWZhdWx0cyA9IHtcclxuICAgICAgICB0aXRsZTogJycsXHJcbiAgICAgICAgY29udGVudDogJycsXHJcbiAgICAgICAgY29udGVudFVSSTogJycsXHJcbiAgICAgICAgYnV0dG9uczogW10sXHJcbiAgICAgICAgc2l6ZTogJ21lZGl1bScsXHJcbiAgICAgICAgc2hvd0xvYWRpbmdJbmRpY2F0b3I6IGZhbHNlXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHsgdGl0bGUsIGNvbnRlbnQsIGNvbnRlbnRVUkksIGJ1dHRvbnMsIHNpemUsIHNob3dMb2FkaW5nSW5kaWNhdG9yIH0gPSB7IC4uLmRpYWxvZ0RlZmF1bHRzLCAuLi5vcHRpb25zIH07XHJcblxyXG4gICAgY29uc3Qgd3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgd3JhcHBlci5pbm5lckhUTUwgPSBkaWFsb2dUZW1wbGF0ZS50cmltKCk7XHJcbiAgICBjb25zdCBkaWFsb2dFbGVtZW50ID0gd3JhcHBlci5maXJzdENoaWxkO1xyXG5cclxuICAgIC8vIExpZmVjeWNsZSBldmVudCBtYW5hZ2VtZW50XHJcbiAgICBjb25zdCBsaWZlY3ljbGVSZXNvbHZlcnMgPSB7fTtcclxuICAgIGNvbnN0IGxpZmVjeWNsZUV2ZW50cyA9IHt9O1xyXG5cclxuICAgIC8vIERlZmluZSBsaWZlY3ljbGUgcHJvbWlzZXMgYXMgcHJvcGVydGllc1xyXG4gICAgWydvcGVuaW5nJywgJ29wZW5lZCcsICdjbG9zaW5nJywgJ2Nsb3NlZCcsICdjb250ZW50TG9hZGluZycsICdjb250ZW50TG9hZGVkJ10uZm9yRWFjaCgoZXZlbnQpID0+IHtcclxuICAgICAgICBsaWZlY3ljbGVFdmVudHNbZXZlbnRdID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgICAgICAgbGlmZWN5Y2xlUmVzb2x2ZXJzW2V2ZW50XSA9IHJlc29sdmU7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCB0cmlnZ2VyRXZlbnQgPSAoZXZlbnQpID0+IHtcclxuICAgICAgICBpZiAobGlmZWN5Y2xlUmVzb2x2ZXJzW2V2ZW50XSkge1xyXG4gICAgICAgICAgICBsaWZlY3ljbGVSZXNvbHZlcnNbZXZlbnRdKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKGBObyByZXNvbHZlciBmb3VuZCBmb3IgbGlmZWN5Y2xlIGV2ZW50OiAke2V2ZW50fWApO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZGlhbG9nID0ge1xyXG4gICAgICAgIGVsZW1lbnQ6IGRpYWxvZ0VsZW1lbnQsXHJcbiAgICAgICAgYnV0dG9uczoge30sXHJcbiAgICAgICAgaXNDbG9zZWQ6IGZhbHNlLFxyXG4gICAgICAgIGxpZmVjeWNsZTogbGlmZWN5Y2xlRXZlbnRzLCAvLyBMaWZlY3ljbGUgcHJvbWlzZXMgZGlyZWN0bHkgZXhwb3NlZCBoZXJlXHJcbiAgICAgICAgb3BlbjogYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgdHJpZ2dlckV2ZW50KCdvcGVuaW5nJyk7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBkaWFsb2cubGlmZWN5Y2xlLm9wZW5pbmc7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gSWYgbG9hZGluZyBpbmRpY2F0b3IgaXMgZW5hYmxlZCBhbmQgd2UncmUgZmV0Y2hpbmcgY29udGVudCwgc2hvdyBkaWFsb2cgZmlyc3RcclxuICAgICAgICAgICAgICAgIGlmIChzaG93TG9hZGluZ0luZGljYXRvciAmJiBjb250ZW50VVJJKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQXBwZW5kIGRpYWxvZyB0byB0aGUgRE9NIGFuZCBkaXNwbGF5IGl0IGZpcnN0XHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaWFsb2dFbGVtZW50KTtcclxuICAgICAgICAgICAgICAgICAgICBkaWFsb2dFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBcImZsZXhcIjtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAvLyBTaG93IGxvYWRpbmcgaW5kaWNhdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgZGlhbG9nRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLkFQWC1kaWFsb2ctZHluYW1pYy1jb250ZW50XCIpLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPVwiQVBYLWRpYWxvZy1sb2FkaW5nLWluZGljYXRvclwiPjwvZGl2Pic7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gTG9hZCBjb250ZW50IGFmdGVyIGRpYWxvZyBpcyB2aXNpYmxlXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZmV0Y2hBbmRJbnNlcnRDb250ZW50KCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgYmVoYXZpb3I6IGxvYWQgY29udGVudCBmaXJzdCwgdGhlbiBzaG93IGRpYWxvZ1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGZldGNoQW5kSW5zZXJ0Q29udGVudCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIEFwcGVuZCBkaWFsb2cgdG8gdGhlIERPTSBhbmQgZGlzcGxheSBpdFxyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGlhbG9nRWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlhbG9nRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gXCJmbGV4XCI7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdHJpZ2dlckV2ZW50KCdvcGVuZWQnKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGRpYWxvZy5saWZlY3ljbGUub3BlbmVkO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igb3BlbmluZyBkaWFsb2c6JywgZXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBkaWFsb2c7IC8vIFJldHVybiBmb3IgZGFpc3ktY2hhaW5pbmdcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsb3NlOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoJ2Nsb3NpbmcnKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGRpYWxvZy5saWZlY3ljbGUuY2xvc2luZztcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBDbGVhbnVwIGFuZCByZW1vdmUgZGlhbG9nXHJcbiAgICAgICAgICAgICAgICBjbG9zZURpYWxvZ0FuZENsZWFudXAoKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoJ2Nsb3NlZCcpO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgZGlhbG9nLmxpZmVjeWNsZS5jbG9zZWQ7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkdXJpbmcgZGlhbG9nIGNsb3Npbmc6JywgZXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBkaWFsb2c7IC8vIFJldHVybiBmb3IgZGFpc3ktY2hhaW5pbmdcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGNsb3NlRGlhbG9nQW5kQ2xlYW51cCA9ICgpID0+IHtcclxuICAgICAgICBpZiAoZGlhbG9nLmlzQ2xvc2VkKSByZXR1cm47XHJcblxyXG4gICAgICAgIGRpYWxvZy5pc0Nsb3NlZCA9IHRydWU7XHJcbiAgICAgICAgZGlhbG9nRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcbiAgICAgICAgaWYgKGRvY3VtZW50LmJvZHkuY29udGFpbnMoZGlhbG9nRWxlbWVudCkpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaWFsb2dFbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHNldERpYWxvZ1NpemUgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGlhbG9nQ29udGVudCA9IGRpYWxvZ0VsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5BUFgtZGlhbG9nLWNvbnRlbnRcIik7XHJcbiAgICAgICAgY29uc3Qgc2l6ZXMgPSB7XHJcbiAgICAgICAgICAgIHNtYWxsOiB7IHdpZHRoOiAnMzAwcHgnLCBoZWlnaHQ6ICcyMDBweCcgfSxcclxuICAgICAgICAgICAgbWVkaXVtOiB7IHdpZHRoOiAnNTAwcHgnLCBoZWlnaHQ6ICc0MDBweCcgfSxcclxuICAgICAgICAgICAgbGFyZ2U6IHsgd2lkdGg6ICc4MDBweCcsIGhlaWdodDogJzYwMHB4JyB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKHNpemUgPT09ICdhdXRvJykgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBzZWxlY3RlZFNpemUgPSBzaXplc1tzaXplXSB8fCAodHlwZW9mIHNpemUgPT09ICdvYmplY3QnICYmIHNpemUpO1xyXG4gICAgICAgIGlmIChzZWxlY3RlZFNpemUpIHtcclxuICAgICAgICAgICAgZGlhbG9nQ29udGVudC5zdHlsZS5taW5XaWR0aCA9IHNlbGVjdGVkU2l6ZS53aWR0aCB8fCAnNTAwcHgnO1xyXG4gICAgICAgICAgICBkaWFsb2dDb250ZW50LnN0eWxlLm1pbkhlaWdodCA9IHNlbGVjdGVkU2l6ZS5oZWlnaHQgfHwgJzQwMHB4JztcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGFkZEJ1dHRvbnMgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgYnV0dG9uQ29udGFpbmVyID0gZGlhbG9nRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLkFQWC1kaWFsb2ctYnV0dG9uLWNvbnRhaW5lclwiKTtcclxuXHJcbiAgICAgICAgYnV0dG9ucy5mb3JFYWNoKCh7IGtleSwgbGFiZWwsIG9yZGVyID0gMCwgYWxpZ24gPSAnZmxleC1lbmQnLCBjbG9zZU9uQ2xpY2sgPSB0cnVlIH0pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XHJcbiAgICAgICAgICAgIGJ1dHRvbi50ZXh0Q29udGVudCA9IGxhYmVsO1xyXG4gICAgICAgICAgICBidXR0b24uc3R5bGUub3JkZXIgPSBvcmRlcjtcclxuXHJcbiAgICAgICAgICAgIGlmIChjbG9zZU9uQ2xpY2spIHtcclxuICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBhcyBhIG9uZS10aW1lIFByb21pc2VcclxuICAgICAgICAgICAgICAgIGxldCBmaXJzdENsaWNrUmVzb2x2ZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdENsaWNrUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uLm9uY2xpY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmlyc3RDbGlja1Jlc29sdmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdENsaWNrUmVzb2x2ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkaWFsb2cpOyAvLyBSZXNvbHZlIHRoZSBQcm9taXNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFsb2cuY2xvc2UoKTsgLy8gQ2xvc2UgdGhlIGRpYWxvZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIEFzc2lnbiB0aGUgcHJvbWlzZSBmb3IgY2hhaW5pbmcgd2l0aCBgLnRoZW5gXHJcbiAgICAgICAgICAgICAgICBkaWFsb2cuYnV0dG9uc1trZXldID0gZmlyc3RDbGlja1Byb21pc2U7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBIYW5kbGUgYXMgYSByZXBlYXRlZCBldmVudCBoYW5kbGVyXHJcbiAgICAgICAgICAgICAgICBsZXQgaGFuZGxlcnMgPSBbXTsgLy8gU3RvcmUgaGFuZGxlcnMgZm9yIGAudGhlbigpYFxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGNsaWNrUHJvbWlzZSA9IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGVuOiAoY2FsbGJhY2spID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnMucHVzaChjYWxsYmFjayk7IC8vIEFkZCB0byBoYW5kbGVyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGlja1Byb21pc2U7IC8vIEFsbG93IGNoYWluaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgYnV0dG9uLm9uY2xpY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnMuZm9yRWFjaCgoaGFuZGxlcikgPT4gaGFuZGxlcihkaWFsb2cpKTsgLy8gQ2FsbCBhbGwgcmVnaXN0ZXJlZCBoYW5kbGVyc1xyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBkaWFsb2cuYnV0dG9uc1trZXldID0gY2xpY2tQcm9taXNlOyAvLyBBc3NpZ24gdGhlIFwiZmFrZVwiIHByb21pc2VcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgYnV0dG9uQ29udGFpbmVyLmFwcGVuZENoaWxkKGJ1dHRvbik7XHJcbiAgICAgICAgICAgIGJ1dHRvbkNvbnRhaW5lci5zdHlsZS5qdXN0aWZ5Q29udGVudCA9IGFsaWduO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBmZXRjaEFuZEluc2VydENvbnRlbnQgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxDdXJzb3IgPSBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvcjtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICd3YWl0JztcclxuICAgICAgICBjb25zdCBkeW5hbWljQ29udGVudCA9IGRpYWxvZ0VsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5BUFgtZGlhbG9nLWR5bmFtaWMtY29udGVudFwiKTtcclxuICAgICAgICBcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB0cmlnZ2VyRXZlbnQoJ2NvbnRlbnRMb2FkaW5nJyk7XHJcbiAgICAgICAgICAgIGF3YWl0IGRpYWxvZy5saWZlY3ljbGUuY29udGVudExvYWRpbmc7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBjb250ZW50SHRtbCA9IGNvbnRlbnRVUklcclxuICAgICAgICAgICAgICAgID8gYXdhaXQgZmV0Y2hDb250ZW50KGNvbnRlbnRVUkkpXHJcbiAgICAgICAgICAgICAgICA6IGNvbnRlbnQ7XHJcblxyXG4gICAgICAgICAgICBkeW5hbWljQ29udGVudC5pbm5lckhUTUwgPSBjb250ZW50SHRtbDtcclxuXHJcbiAgICAgICAgICAgIHRyaWdnZXJFdmVudCgnY29udGVudExvYWRlZCcpO1xyXG4gICAgICAgICAgICBhd2FpdCBkaWFsb2cubGlmZWN5Y2xlLmNvbnRlbnRMb2FkZWQ7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBjb250ZW50OicsIGVycm9yKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9IG9yaWdpbmFsQ3Vyc29yO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZmV0Y2hDb250ZW50ID0gYXN5bmMgKHVyaSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJpKTtcclxuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBmZXRjaCBjb250ZW50OiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gSW5pdGlhbGl6ZSBkaWFsb2dcclxuICAgIHNldERpYWxvZ1NpemUoKTtcclxuICAgIGFkZEJ1dHRvbnMoKTtcclxuXHJcbiAgICAvLyBTZXQgdGl0bGUgYW5kIGNsb3NlIGJ1dHRvbiBoYW5kbGVyXHJcbiAgICBkaWFsb2dFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuQVBYLWRpYWxvZy10aXRsZVwiKS50ZXh0Q29udGVudCA9IHRpdGxlO1xyXG4gICAgZGlhbG9nRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuQVBYLWNsb3NlLWRpYWxvZycpLm9uY2xpY2sgPSBkaWFsb2cuY2xvc2U7XHJcblxyXG4gICAgcmV0dXJuIGRpYWxvZztcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZURpYWxvZztcclxuIiwibGV0IGNvdW50ZXIgPSAwO1xyXG5jb25zdCBkb0NhbGxiYWNrcyA9IHt9O1xyXG5jb25zdCB0aW1lb3V0cyA9IHt9O1xyXG5cclxuLyoqXHJcbiAqIFRoaXMgZnVuY3Rpb24gYWRkcyBhbiBldmVudCBsaXN0ZW5lciB0byB0aGUgZWxlbWVudHMgYW5kIHJldHVybnMgYW4gb2JqZWN0IHdpdGggYSBkbyBtZXRob2QgdG8gYWRkIGNhbGxiYWNrIGZ1bmN0aW9ucy5cclxuICogQHBhcmFtIHtPYmplY3R9IGFweCAtIFRoZSBhcHggb2JqZWN0IHRvIGF1Z21lbnQgd2l0aCB0aGUgbGlzdGVuIGZ1bmN0aW9uLlxyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSAtIFRoZSBhdWdtZW50ZWQgYXB4IG9iamVjdC5cclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChhcHgpIHtcclxuICAgIGxldCBlbGVtZW50cyA9IGFweC5lbGVtZW50cztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYW4gZXZlbnQgbGlzdGVuZXIgdG8gdGhlIGVsZW1lbnRzIGFuZCByZXR1cm5zIGFuIG9iamVjdCB3aXRoIGEgZG8gbWV0aG9kIHRvIGFkZCBjYWxsYmFjayBmdW5jdGlvbnMuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRUeXBlIC0gVGhlIHR5cGUgb2YgZXZlbnQgdG8gbGlzdGVuIGZvciAoZS5nLiAnY2xpY2snLCAna2V5ZG93bicsIGV0Yy4pLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzZWxlY3Rvcl0gLSBUaGUgQ1NTIHNlbGVjdG9yIHRvIHVzZSBmb3IgZXZlbnQgZGVsZWdhdGlvbiAob3B0aW9uYWwpLlxyXG4gICAgICogQHJldHVybnMge09iamVjdH0gLSBBbiBvYmplY3Qgd2l0aCBhIGRvIG1ldGhvZCB0byBhZGQgY2FsbGJhY2sgZnVuY3Rpb25zLlxyXG4gICAgICogQGV4YW1wbGVcclxuICAgICAqIGFweC5saXN0ZW4oJ2NsaWNrJywgJy5teS1idXR0b24nKS5kbygoZXZlbnQpID0+IHtcclxuICAgICAqICAgY29uc29sZS5sb2coJ0J1dHRvbiBjbGlja2VkIScsIGV2ZW50LnRhcmdldCk7XHJcbiAgICAgKiB9KTtcclxuICAgICAqL1xyXG4gICAgYXB4Lmxpc3RlbiA9IGZ1bmN0aW9uIChldmVudFR5cGVzLCBzZWNvbmRBcmd1bWVudCwgdGhpcmRBcmd1bWVudCkge1xyXG4gICAgICAgIGxldCBzZWxlY3RvcjtcclxuICAgICAgICBsZXQgb3B0aW9ucyA9IHt9O1xyXG4gICAgICAgIC8vIERldGVybWluZSBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGEgc2VsZWN0b3Igb3Igb3B0aW9uc1xyXG4gICAgICAgIGlmICh0eXBlb2Ygc2Vjb25kQXJndW1lbnQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHNlbGVjdG9yID0gc2Vjb25kQXJndW1lbnQ7XHJcbiAgICAgICAgICAgIG9wdGlvbnMgPSB0aGlyZEFyZ3VtZW50IHx8IHt9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnMgPSBzZWNvbmRBcmd1bWVudCB8fCB7fTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHVuaXF1ZUlkID0gZ2VuZXJhdGVVbmlxdWVJZCgpO1xyXG4gICAgICAgIGNvbnN0IHRpbWVvdXREdXJhdGlvbiA9IG9wdGlvbnMudGltZW91dCB8fCAwO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShldmVudFR5cGVzKSkge1xyXG4gICAgICAgICAgICBldmVudFR5cGVzID0gW2V2ZW50VHlwZXNdOyAvLyBFbnN1cmUgZXZlbnRUeXBlcyBpcyBhbiBhcnJheVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBldmVudFR5cGVzLmZvckVhY2goKGV2ZW50VHlwZSkgPT4ge1xyXG4gICAgICAgICAgICBlbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCAoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBleGVjdXRlQ2FsbGJhY2tzKGV2ZW50LCB1bmlxdWVJZCwgdGltZW91dER1cmF0aW9uLCBzZWxlY3RvciwgZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBBZGRzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gdGhlIGRvQ2FsbGJhY2tzIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgZXZlbnQgbGlzdGVuZXIuXHJcbiAgICAgICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGRvQ2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gZXhlY3V0ZSB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXHJcbiAgICAgICAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9IC0gUmV0dXJucyB0aGUgY3VycmVudCBvYmplY3QgdG8gYWxsb3cgZm9yIGNoYWluZWQgY2FsbHMuXHJcbiAgICAgICAgICAgICAqIEBleGFtcGxlXHJcbiAgICAgICAgICAgICAqIGFweC5saXN0ZW4oJ2NsaWNrJywgJy5teS1idXR0b24nKS5kbygoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICogICBjb25zb2xlLmxvZygnQnV0dG9uIGNsaWNrZWQhJywgZXZlbnQudGFyZ2V0KTtcclxuICAgICAgICAgICAgICogfSkuZG8oKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAqICAgY29uc29sZS5sb2coJ0Fub3RoZXIgY2FsbGJhY2sgZnVuY3Rpb24hJyk7XHJcbiAgICAgICAgICAgICAqIH0pO1xyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgZG86IGZ1bmN0aW9uIChkb0NhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWRvQ2FsbGJhY2tzW3VuaXF1ZUlkXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRvQ2FsbGJhY2tzW3VuaXF1ZUlkXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZG9DYWxsYmFja3NbdW5pcXVlSWRdLnB1c2goZG9DYWxsYmFjayk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsgLy8gUmV0dXJuIHRoZSBvYmplY3QgdG8gYWxsb3cgZm9yIGNoYWluZWQgY2FsbHNcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1hbnVhbGx5IHRyaWdnZXJzIHRoZSByZWdpc3RlcmVkIGNhbGxiYWNrcyBmb3IgYSBnaXZlbiBldmVudCB0eXBlIG9uIGFsbCBlbGVtZW50cyBvciBjcmVhdGVzIGEgbmV3IGV2ZW50IGlmIGEgc3RyaW5nIGlzIHByb3ZpZGVkLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd8RXZlbnR9IGV2ZW50IC0gVGhlIGV2ZW50IHRvIHRyaWdnZXIuIFRoaXMgY2FuIGJlIGFuIGV2ZW50IHR5cGUgc3RyaW5nIChsaWtlICdjbGljaycpIG9yIGFuIGFjdHVhbCBFdmVudCBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIGFweC50cmlnZ2VyID0gZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgbGV0IGV2ZW50VHlwZTtcclxuICAgICAgICBpZiAodHlwZW9mIGV2ZW50ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBldmVudFR5cGUgPSBldmVudDtcclxuICAgICAgICAgICAgZXZlbnQgPSBuZXcgRXZlbnQoZXZlbnQsIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSB9KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgRXZlbnQpIHtcclxuICAgICAgICAgICAgZXZlbnRUeXBlID0gZXZlbnQudHlwZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdJbnZhbGlkIGV2ZW50IHR5cGUgcHJvdmlkZWQgdG8gYXB4LnRyaWdnZXIuIEl0IG11c3QgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIEV2ZW50IG9iamVjdC4nKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYXB4LmVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICAgICAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsgIC8vIFRoaXMgd2lsbCBhbGxvdyB0aGUgZXZlbnQgdG8gYnViYmxlIHVwIG5hdHVyYWxseS5cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gSGFuZGxlIGV2ZW50IGRlbGVnYXRpb24gbWFudWFsbHkgYnkgZXhlY3V0aW5nIGNhbGxiYWNrcyBpZiB0aGUgdGFyZ2V0IG1hdGNoZXMgdGhlIHNlbGVjdG9yXHJcbiAgICAgICAgT2JqZWN0LmtleXMoZG9DYWxsYmFja3MpLmZvckVhY2goKHVuaXF1ZUlkKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrRGV0YWlscyA9IGRvQ2FsbGJhY2tzW3VuaXF1ZUlkXTtcclxuICAgICAgICAgICAgaWYgKGNhbGxiYWNrRGV0YWlscyAmJiBjYWxsYmFja0RldGFpbHMuZXZlbnRUeXBlID09PSBldmVudFR5cGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBldmVudCB0YXJnZXQgbWF0Y2hlcyB0aGUgc2VsZWN0b3IgdXNlZCBkdXJpbmcgbGlzdGVuZXIgcmVnaXN0cmF0aW9uXHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHNlbGVjdG9yIH0gPSBjYWxsYmFja0RldGFpbHM7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yIHx8IGV2ZW50LnRhcmdldC5tYXRjaGVzKHNlbGVjdG9yKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVDYWxsYmFja3MoZXZlbnQsIHVuaXF1ZUlkLCAwLCBzZWxlY3RvciwgZXZlbnQudGFyZ2V0KTsgIC8vIEltbWVkaWF0ZSBleGVjdXRpb24sIG5vIHRpbWVvdXRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIFxyXG4gICAgcmV0dXJuIGFweDtcclxufTtcclxuXHJcblxyXG5mdW5jdGlvbiBleGVjdXRlQ2FsbGJhY2tzKGV2ZW50LCB1bmlxdWVJZCwgdGltZW91dER1cmF0aW9uLCBzZWxlY3RvciA9ICcnLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBtYXRjaGVkRWxlbWVudCA9IHNlbGVjdG9yID8gY2xvc2VzdChldmVudC50YXJnZXQsIHNlbGVjdG9yKSA6IGVsZW1lbnQ7XHJcbiAgICBpZiAoIW1hdGNoZWRFbGVtZW50KSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENsZWFyIGFueSBwcmV2aW91cyB0aW1lb3V0IGZvciB0aGlzIHVuaXF1ZUlkIHRvIHByZXZlbnQgdW5pbnRlbmRlZCBiZWhhdmlvclxyXG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRzW3VuaXF1ZUlkXSk7XHJcblxyXG4gICAgLy8gRnVuY3Rpb24gdG8gaGFuZGxlIHRoZSBleGVjdXRpb24gb2YgY2FsbGJhY2tzXHJcbiAgICBmdW5jdGlvbiBoYW5kbGVDYWxsYmFja0V4ZWN1dGlvbigpIHtcclxuICAgICAgICBpZiAoZG9DYWxsYmFja3NbdW5pcXVlSWRdKSB7XHJcbiAgICAgICAgICAgIGRvQ2FsbGJhY2tzW3VuaXF1ZUlkXS5yZWR1Y2UoKHByZXZQcm9taXNlLCBkb0NhbGxiYWNrKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldlByb21pc2UudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGRvQ2FsbGJhY2suYmluZChtYXRjaGVkRWxlbWVudCkoZXZlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQudGhlbihyZXNvbHZlKS5jYXRjaChyZWplY3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIGNhbGxiYWNrIGNoYWluOicsIGVycm9yKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIENoZWNrIGlmIHRpbWVvdXREdXJhdGlvbiBpcyB6ZXJvIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGRlbGF5IHRoZSBjYWxsYmFjayBleGVjdXRpb24gb3Igbm90XHJcbiAgICBpZiAodGltZW91dER1cmF0aW9uID09PSAwKSB7XHJcbiAgICAgICAgaGFuZGxlQ2FsbGJhY2tFeGVjdXRpb24oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGltZW91dHNbdW5pcXVlSWRdID0gc2V0VGltZW91dChoYW5kbGVDYWxsYmFja0V4ZWN1dGlvbiwgdGltZW91dER1cmF0aW9uKTtcclxuICAgIH1cclxufVxyXG5cclxuXHJcbmZ1bmN0aW9uIGdlbmVyYXRlVW5pcXVlSWQoKSB7XHJcbiAgICBjb25zdCByYW5kb21QYXJ0ID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDkpOyAvLyBNb3JlIHJhbmRvbW5lc3NcclxuICAgIGNvbnN0IHVuaXF1ZUlkID0gYCR7RGF0ZS5ub3coKX1fJHtyYW5kb21QYXJ0fV8ke2NvdW50ZXJ9YDtcclxuICAgIGNvdW50ZXIgPSAoY291bnRlciArIDEpICUgMTAwMDsgLy8gUmVzZXQgY291bnRlciB0byBhdm9pZCBvdmVyZmxvd1xyXG5cclxuICAgIHJldHVybiB1bmlxdWVJZDtcclxufVxyXG5cclxuZnVuY3Rpb24gY2xvc2VzdChlbGVtZW50LCBzZWxlY3Rvcikge1xyXG4gICAgd2hpbGUgKGVsZW1lbnQgJiYgZWxlbWVudC5ub2RlVHlwZSA9PT0gMSkge1xyXG4gICAgICAgIGlmIChlbGVtZW50Lm1hdGNoZXMoc2VsZWN0b3IpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5wYXJlbnROb2RlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn1cclxuIiwiaW1wb3J0ICcuL2Nzcy90cmlzdGF0ZS5jc3MnO1xyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgYSB0cmktc3RhdGUgY2hlY2tib3ggZm9yIGVhY2ggY2hlY2tib3ggZWxlbWVudCBpbiB0aGUgYXB4LmVsZW1lbnRzIGFycmF5LlxyXG4gKiBAcGFyYW0ge0FycmF5PEhUTUxFbGVtZW50Pn0gYXB4IC0gQW4gYXJyYXkgb2YgSFRNTEVsZW1lbnRzIHdoaWNoIGlzIHJldHVybmVkIGJ5IEFQWCgpXHJcbiAqIEBleGFtcGxlXHJcbiAqIC8vIENhbGwgdGhlIHRyaXN0YXRlIGZ1bmN0aW9uIG9uIGFuIGFycmF5IG9mIGNoZWNrYm94IGVsZW1lbnRzXHJcbiAqIGFweC50cmlzdGF0ZSgpO1xyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKGFweCkge1xyXG4gICAgYXB4LnRyaXN0YXRlID0gZnVuY3Rpb24gKG9wdGlvbnMgPSB7fSl7XHJcbiAgICAgICAgYXB4LmVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgW29yaWdpbmFsQ2hlY2tib3gsIHRyaXN0YXRlRG9tLCBoaWRkZW5JbnB1dF0gPSBjcmVhdGVUcmlTdGF0ZUNoZWNrYm94KGVsZW1lbnQsb3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICAvL0lmIHRoZXJlIGlzIGEgXCJvcHRpb25zLmNhbGxiYWNrcy5hZnRlclwiIGNhbGxiYWNrIGluIG9wdGlvbnMgY2FsbCBpdFxyXG4gICAgICAgICAgICAgICAgaWYob3B0aW9ucy5jYWxsYmFja3MgJiYgb3B0aW9ucy5jYWxsYmFja3MuYWZ0ZXIgJiYgdHlwZW9mIG9wdGlvbnMuY2FsbGJhY2tzLmFmdGVyID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5jYWxsYmFja3MuYWZ0ZXIob3JpZ2luYWxDaGVja2JveCwgdHJpc3RhdGVEb20sIGhpZGRlbklucHV0KTtcclxuICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB0b2dnbGVUcmlTdGF0ZUNoZWNrYm94U3RhdGUoY3VzdG9tQ2hlY2tib3gsIGFjdHVhbENoZWNrYm94LCBoaWRkZW5JbnB1dCkge1xyXG4gICAgaWYgKGN1c3RvbUNoZWNrYm94LmNsYXNzTGlzdC5jb250YWlucygnY2hlY2tlZCcpKSB7XHJcbiAgICAgICAgY3VzdG9tQ2hlY2tib3guY2xhc3NMaXN0LnJlbW92ZSgnY2hlY2tlZCcpO1xyXG4gICAgICAgIGN1c3RvbUNoZWNrYm94LmNsYXNzTGlzdC5hZGQoJ2Nyb3NzZWQnKTtcclxuICAgICAgICBhY3R1YWxDaGVja2JveC5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgaGlkZGVuSW5wdXQudmFsdWUgPSAnZmFsc2UnO1xyXG4gICAgfSBlbHNlIGlmIChjdXN0b21DaGVja2JveC5jbGFzc0xpc3QuY29udGFpbnMoJ2Nyb3NzZWQnKSkge1xyXG4gICAgICAgIGN1c3RvbUNoZWNrYm94LmNsYXNzTGlzdC5yZW1vdmUoJ2Nyb3NzZWQnKTtcclxuICAgICAgICBjdXN0b21DaGVja2JveC5jbGFzc0xpc3QuYWRkKCd1bmNoZWNrZWQnKTtcclxuICAgICAgICBoaWRkZW5JbnB1dC5yZW1vdmVBdHRyaWJ1dGUoJ25hbWUnKTsgLy8gRW5zdXJlIHRoZSBoaWRkZW4gaW5wdXQgZG9lc24ndCBwb3N0IGFueSB2YWx1ZVxyXG4gICAgICAgIGhpZGRlbklucHV0LnJlbW92ZUF0dHJpYnV0ZSgndmFsdWUnKTsgLy8gRW5zdXJlIHRoZSBoaWRkZW4gaW5wdXQgZG9lc24ndCBwb3N0IGFueSB2YWx1ZVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBjdXN0b21DaGVja2JveC5jbGFzc0xpc3QucmVtb3ZlKCd1bmNoZWNrZWQnKTtcclxuICAgICAgICBjdXN0b21DaGVja2JveC5jbGFzc0xpc3QuYWRkKCdjaGVja2VkJyk7XHJcbiAgICAgICAgYWN0dWFsQ2hlY2tib3guY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgaGlkZGVuSW5wdXQudmFsdWUgPSAndHJ1ZSc7XHJcbiAgICAgICAgaGlkZGVuSW5wdXQuc2V0QXR0cmlidXRlKCduYW1lJywgYWN0dWFsQ2hlY2tib3guZGF0YXNldC5uYW1lKTsgLy8gUmVzdG9yZSB0aGUgbmFtZSBmb3IgcG9zdGluZ1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVUcmlTdGF0ZUNoZWNrYm94KGNoZWNrYm94RWxlbWVudCwgb3B0aW9ucykge1xyXG4gICAgXHJcbiAgICAvL2dldCB0aGUgY2hlY2tib3ggbWFyZ2lucyBpbmNsdWRpbmcgYnJvd3NlciBkZWZhdWx0XHJcbiAgICBjb25zdCBjaGVja2JveFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoY2hlY2tib3hFbGVtZW50KTtcclxuICAgIC8vIEhpZGUgdGhlIG9yaWdpbmFsIGNoZWNrYm94XHJcbiAgICBjaGVja2JveEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuXHJcbiAgICAvLyBDcmVhdGUgdGhlIGN1c3RvbSBjaGVja2JveCBkaXYgYW5kIHNldCBpdHMgaW5pdGlhbCBzdGF0ZVxyXG4gICAgY29uc3QgdHJpc3RhdGVEb20gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHRyaXN0YXRlRG9tLmNsYXNzTGlzdC5hZGQoJ2FweC10cmlzdGF0ZScpO1xyXG4gICAgaWYgKG9wdGlvbnMuc2l6ZSkge1xyXG4gICAgICAgIGlmIChvcHRpb25zLnNpemUud2lkdGgpIHtcclxuICAgICAgICAgICAgdHJpc3RhdGVEb20uc3R5bGUud2lkdGggPSBvcHRpb25zLnNpemUud2lkdGggKyAncHgnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob3B0aW9ucy5zaXplLmhlaWdodCkge1xyXG4gICAgICAgICAgICB0cmlzdGF0ZURvbS5zdHlsZS5oZWlnaHQgPSBvcHRpb25zLnNpemUuaGVpZ2h0ICsgJ3B4JztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZihvcHRpb25zLmNsYXNzZXMpIHRyaXN0YXRlRG9tLmNsYXNzTGlzdC5hZGQoLi4uY29tcHV0ZUNsYXNzZXMob3B0aW9ucy5jbGFzc2VzKSk7XHJcblxyXG4gICAgdHJpc3RhdGVEb20uc3R5bGUubWFyZ2luID0gY2hlY2tib3hTdHlsZS5tYXJnaW47XHJcblxyXG4gICAgaWYgKGNoZWNrYm94RWxlbWVudC5jaGVja2VkKSB7XHJcbiAgICAgICAgdHJpc3RhdGVEb20uY2xhc3NMaXN0LmFkZCgnY2hlY2tlZCcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICB0cmlzdGF0ZURvbS5jbGFzc0xpc3QuYWRkKCd1bmNoZWNrZWQnKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDcmVhdGUgdGhlIGhpZGRlbiBpbnB1dCBmaWVsZFxyXG4gICAgY29uc3QgaGlkZGVuSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xyXG4gICAgaGlkZGVuSW5wdXQudHlwZSA9ICdoaWRkZW4nO1xyXG4gICAgaGlkZGVuSW5wdXQubmFtZSA9IGNoZWNrYm94RWxlbWVudC5uYW1lOyAvLyBDb3B5IHRoZSBuYW1lIGZyb20gdGhlIG9yaWdpbmFsIGNoZWNrYm94XHJcbiAgICBjaGVja2JveEVsZW1lbnQuZGF0YXNldC5uYW1lID0gY2hlY2tib3hFbGVtZW50Lm5hbWU7IC8vIFN0b3JlIHRoZSBuYW1lIGluIGEgZGF0YSBhdHRyaWJ1dGUgZm9yIGxhdGVyIHVzZVxyXG4gICAgY2hlY2tib3hFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnbmFtZScpOyAvLyBSZW1vdmUgdGhlIG5hbWUgZnJvbSB0aGUgb3JpZ2luYWwgY2hlY2tib3ggdG8gYXZvaWQgZG91YmxlIHBvc3RpbmdcclxuXHJcbiAgICBpZiAob3B0aW9ucy5kZWZhdWx0U3RhdGUpIHNldERlZmF1bHRTdGF0ZShvcHRpb25zLCB0cmlzdGF0ZURvbSwgaGlkZGVuSW5wdXQpO1xyXG4gICAgZWxzZXtcclxuICAgICAgICAvLyBTZXQgdGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSBoaWRkZW4gaW5wdXQgYmFzZWQgb24gdGhlIGNoZWNrYm94J3Mgc3RhdGVcclxuICAgICAgICBpZiAoY2hlY2tib3hFbGVtZW50LmNoZWNrZWQpIHtcclxuICAgICAgICAgICAgaGlkZGVuSW5wdXQudmFsdWUgPSAndHJ1ZSc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaGlkZGVuSW5wdXQubmFtZSA9ICcnOyAvLyBFbnN1cmUgdGhlIGhpZGRlbiBpbnB1dCBkb2Vzbid0IHBvc3QgYW55IHZhbHVlXHJcbiAgICAgICAgICAgIGhpZGRlbklucHV0LnZhbHVlID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vaGFuZGxlIGFjY2Vzc2liaWxpdHksIHNldCB0aGUgdGFiaW5kZXggdG8gdGhlIHNhbWUgYXMgdGhlIGNoZWNrYm94XHJcbiAgICB0cmlzdGF0ZURvbS50YWJJbmRleCA9IGNoZWNrYm94RWxlbWVudC50YWJJbmRleDtcclxuXHJcbiAgICAvLyBJbnNlcnQgdGhlIGhpZGRlbiBpbnB1dCBpbnNpZGUgdGhlIGN1c3RvbSBjaGVja2JveCBkaXZcclxuICAgIHRyaXN0YXRlRG9tLmFwcGVuZENoaWxkKGhpZGRlbklucHV0KTtcclxuXHJcbiAgICAvLyBJbnNlcnQgaXQgbmV4dCB0byB0aGUgYWN0dWFsIGNoZWNrYm94XHJcbiAgICBjaGVja2JveEVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodHJpc3RhdGVEb20sIGNoZWNrYm94RWxlbWVudC5uZXh0U2libGluZyk7XHJcblxyXG4gICAgLy8gQWRkIGV2ZW50IGxpc3RlbmVyXHJcbiAgICB0cmlzdGF0ZURvbS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgdG9nZ2xlVHJpU3RhdGVDaGVja2JveFN0YXRlKHRyaXN0YXRlRG9tLCBjaGVja2JveEVsZW1lbnQsIGhpZGRlbklucHV0KTtcclxuICAgICAgICBidWJibGVFdmVudHNUb09yaWdpbmFsQ2hlY2tib3gob3B0aW9ucywgY2hlY2tib3hFbGVtZW50LCB0cmlzdGF0ZURvbSwgaGlkZGVuSW5wdXQsIGUpO1xyXG4gICAgfSk7XHJcbiAgICB0cmlzdGF0ZURvbS5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIG9ua2V5dXAuYmluZChudWxsLCBjaGVja2JveEVsZW1lbnQpKTtcclxuXHJcbiAgICByZXR1cm4gW2NoZWNrYm94RWxlbWVudCwgdHJpc3RhdGVEb20sIGhpZGRlbklucHV0XTtcclxufVxyXG5cclxuZnVuY3Rpb24gc2V0RGVmYXVsdFN0YXRlKG9wdGlvbnMsIHRyaXN0YXRlRG9tLCBoaWRkZW5JbnB1dCkge1xyXG4gICAgLy9mb3IgYWxsIHZhbHVlcyBwb3NzaWJsZSBmb3IgZGVmYXVsdFN0YXRlLCBzZXQgdGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIGNoZWNrYm94XHJcbiAgICBpZiAob3B0aW9ucy5kZWZhdWx0U3RhdGUgPT09ICdjaGVja2VkJykge1xyXG4gICAgICAgIHRyaXN0YXRlRG9tLmNsYXNzTGlzdC5yZW1vdmUoJ3VuY2hlY2tlZCcpO1xyXG4gICAgICAgIHRyaXN0YXRlRG9tLmNsYXNzTGlzdC5hZGQoJ2NoZWNrZWQnKTtcclxuICAgICAgICBoaWRkZW5JbnB1dC52YWx1ZSA9ICd0cnVlJztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG9wdGlvbnMuZGVmYXVsdFN0YXRlID09PSAndW5jaGVja2VkJykge1xyXG4gICAgICAgIHRyaXN0YXRlRG9tLmNsYXNzTGlzdC5yZW1vdmUoJ2NoZWNrZWQnKTtcclxuICAgICAgICB0cmlzdGF0ZURvbS5jbGFzc0xpc3QuYWRkKCd1bmNoZWNrZWQnKTtcclxuICAgICAgICBoaWRkZW5JbnB1dC5yZW1vdmVBdHRyaWJ1dGUoJ25hbWUnKTsgLy8gRW5zdXJlIHRoZSBoaWRkZW4gaW5wdXQgZG9lc24ndCBwb3N0IGFueSB2YWx1ZVxyXG4gICAgICAgIGhpZGRlbklucHV0LnJlbW92ZUF0dHJpYnV0ZSgndmFsdWUnKTsgLy8gRW5zdXJlIHRoZSBoaWRkZW4gaW5wdXQgZG9lc24ndCBwb3N0IGFueSB2YWx1ZVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAob3B0aW9ucy5kZWZhdWx0U3RhdGUgPT09ICdjcm9zc2VkJykge1xyXG4gICAgICAgIHRyaXN0YXRlRG9tLmNsYXNzTGlzdC5yZW1vdmUoJ2NoZWNrZWQnKTtcclxuICAgICAgICB0cmlzdGF0ZURvbS5jbGFzc0xpc3QuYWRkKCdjcm9zc2VkJyk7XHJcbiAgICAgICAgaGlkZGVuSW5wdXQudmFsdWUgPSAnZmFsc2UnO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBjb21wdXRlQ2xhc3NlcyhjbGFzc2VzKSB7XHJcbiAgICBsZXQgY29tcHV0ZWRDbGFzc2VzID0gW107XHJcbiAgICBpZih0eXBlb2YgY2xhc3NlcyA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAvL3JlcGxhY2UgbXVsdGlwbGUgd2hpdGUgc3BhY2VzIHdpdGggYSBzaW5nbGUgc3BhY2VcclxuICAgICAgICBjbGFzc2VzID0gY2xhc3Nlcy5yZXBsYWNlKC9cXHNcXHMrL2csICcgJyk7XHJcbiAgICAgICAgaWYoY2xhc3Nlcy5pbmRleE9mKCcgJykgPiAtMSlcclxuICAgICAgICAgICAgY29tcHV0ZWRDbGFzc2VzID0gY2xhc3Nlcy5zcGxpdCgnICcpO1xyXG4gICAgICAgIGVsc2UgaWYoY2xhc3Nlcy5pbmRleE9mKCcsJykgPiAtMSlcclxuICAgICAgICAgICAgY29tcHV0ZWRDbGFzc2VzID0gY2xhc3Nlcy5zcGxpdCgnLCcpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgY29tcHV0ZWRDbGFzc2VzID0gW2NsYXNzZXNdO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihBcnJheS5pc0FycmF5KGNsYXNzZXMpKSB7XHJcbiAgICAgICAgY29tcHV0ZWRDbGFzc2VzID0gY2xhc3NlcztcclxuICAgIH1cclxuICAgIHJldHVybiBjb21wdXRlZENsYXNzZXM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGJ1YmJsZUV2ZW50c1RvT3JpZ2luYWxDaGVja2JveChvcHRpb25zLCBjaGVja2JveEVsZW1lbnQsIHRyaXN0YXRlRG9tLCBoaWRkZW5JbnB1dCwgZXZlbnQpIHtcclxuICAgIC8vaWYgb3B0aW9ucy5jYWxsYmFja3MuY2hhbmdlIGlzIHNldCwgY2FsbCBpdFxyXG4gICAgaWYob3B0aW9ucy5jYWxsYmFja3MgJiYgb3B0aW9ucy5jYWxsYmFja3MuY2hhbmdlICYmIHR5cGVvZiBvcHRpb25zLmNhbGxiYWNrcy5jaGFuZ2UgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICBvcHRpb25zLmNhbGxiYWNrcy5jaGFuZ2UoY2hlY2tib3hFbGVtZW50LCB0cmlzdGF0ZURvbSwgaGlkZGVuSW5wdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKCFvcHRpb25zLmJ1YmJsZUV2ZW50cykgcmV0dXJuO1xyXG5cclxuICAgIGlmKGV2ZW50LnR5cGUgPT09ICdjbGljaycpIHtcclxuICAgICAgICBjaGVja2JveEVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnY2xpY2snLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUgfSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihldmVudC50eXBlID09PSAna2V5dXAnKSB7XHJcbiAgICAgICAgY2hlY2tib3hFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoJ2tleXVwJywgeyBrZXk6ICcgJywgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSB9KSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKGV2ZW50LnR5cGUgPT09ICdjaGFuZ2UnKSB7XHJcbiAgICAgICAgY2hlY2tib3hFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUgfSkpO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBvbmtleXVwKGNoZWNrYm94RWxlbWVudCwgZXZlbnQpIHtcclxuICAgIGlmIChldmVudC5rZXlDb2RlID09PSAzMikge1xyXG4gICAgICAgIGJ1YmJsZUV2ZW50c1RvT3JpZ2luYWxDaGVja2JveChjaGVja2JveEVsZW1lbnQsIGV2ZW50KTtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnRhcmdldC5jbGljaygpO1xyXG4gICAgfVxyXG59IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmIgPSBkb2N1bWVudC5iYXNlVVJJIHx8IHNlbGYubG9jYXRpb24uaHJlZjtcblxuLy8gb2JqZWN0IHRvIHN0b3JlIGxvYWRlZCBhbmQgbG9hZGluZyBjaHVua3Ncbi8vIHVuZGVmaW5lZCA9IGNodW5rIG5vdCBsb2FkZWQsIG51bGwgPSBjaHVuayBwcmVsb2FkZWQvcHJlZmV0Y2hlZFxuLy8gW3Jlc29sdmUsIHJlamVjdCwgUHJvbWlzZV0gPSBjaHVuayBsb2FkaW5nLCAwID0gY2h1bmsgbG9hZGVkXG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHRcIm1haW5cIjogMFxufTtcblxuLy8gbm8gY2h1bmsgb24gZGVtYW5kIGxvYWRpbmdcblxuLy8gbm8gcHJlZmV0Y2hpbmdcblxuLy8gbm8gcHJlbG9hZGVkXG5cbi8vIG5vIEhNUlxuXG4vLyBubyBITVIgbWFuaWZlc3RcblxuLy8gbm8gb24gY2h1bmtzIGxvYWRlZFxuXG4vLyBubyBqc29ucCBmdW5jdGlvbiIsIl9fd2VicGFja19yZXF1aXJlX18ubmMgPSB1bmRlZmluZWQ7IiwiaW1wb3J0IGF1Z21lbnRXaXRoTGlzdGVuIGZyb20gJy4vbW9kdWxlcy9saXN0ZW4vbGlzdGVuLm1qcyc7XHJcbmltcG9ydCBhdWdtZW50V2l0aFRyaXN0YXRlIGZyb20gJy4vbW9kdWxlcy90cmlzdGF0ZS90cmlzdGF0ZS5tanMnO1xyXG5pbXBvcnQgZGlhbG9nIGZyb20gJy4vbW9kdWxlcy9kaWFsb2cvZGlhbG9nLm1qcyc7XHJcbmltcG9ydCB7IGxvYWRDc3MgfSBmcm9tICcuL21vZHVsZXMvY29tbW9uLm1qcyc7XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhbiBBUFggb2JqZWN0IHRoYXQgd3JhcHMgb25lIG9yIG1vcmUgSFRNTCBlbGVtZW50cy5cclxuICogQHBhcmFtIHtzdHJpbmd8SFRNTEVsZW1lbnR8Tm9kZUxpc3R8SFRNTENvbGxlY3Rpb258QXJyYXk8SFRNTEVsZW1lbnQ+fGpRdWVyeXxGdW5jdGlvbn0gaW5wdXQgLSBUaGUgaW5wdXQgdG8gY3JlYXRlIHRoZSBBUFggb2JqZWN0IGZyb20uXHJcbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBBUFggb2JqZWN0LlxyXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGlucHV0IHR5cGUgaXMgaW52YWxpZC5cclxuICogQGV4YW1wbGVcclxuICogLy8gWFBhdGhcclxuICogY29uc3QgYXB4MSA9IEFQWCgnLy9kaXZbQGNsYXNzPVwiZXhhbXBsZVwiXScpO1xyXG4gKlxyXG4gKiAvLyBDU1Mgc2VsZWN0b3JcclxuICogY29uc3QgYXB4MiA9IEFQWCgnLmV4YW1wbGUnKTtcclxuICpcclxuICogLy8gU2luZ2xlIGVsZW1lbnRcclxuICogY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5leGFtcGxlJyk7XHJcbiAqIGNvbnN0IGFweDMgPSBBUFgoZWxlbWVudCk7XHJcbiAqXHJcbiAqIC8vIE5vZGVMaXN0IG9yIEhUTUxDb2xsZWN0aW9uXHJcbiAqIGNvbnN0IG5vZGVMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmV4YW1wbGUnKTtcclxuICogY29uc3QgYXB4NCA9IEFQWChub2RlTGlzdCk7XHJcbiAqXHJcbiAqIC8vIEFycmF5IG9mIGVsZW1lbnRzXHJcbiAqIGNvbnN0IGVsZW1lbnRzID0gW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5leGFtcGxlMScpLCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZXhhbXBsZTInKV07XHJcbiAqIGNvbnN0IGFweDUgPSBBUFgoZWxlbWVudHMpO1xyXG4gKlxyXG4gKiAvLyBqUXVlcnkgb2JqZWN0XHJcbiAqIGNvbnN0ICRleGFtcGxlID0gJCgnLmV4YW1wbGUnKTtcclxuICogY29uc3QgYXB4NiA9IEFQWCgkZXhhbXBsZSk7XHJcbiAqXHJcbiAqIC8vIEZ1bmN0aW9uIHJldHVybmluZyBhbiBBUFggb2JqZWN0XHJcbiAqIGNvbnN0IGFweDcgPSBBUFgoKCkgPT4gQVBYKCcuZXhhbXBsZScpKTtcclxuICovXHJcbmNvbnN0IEFQWCA9IGZ1bmN0aW9uIChpbnB1dCwgY29udGV4dCA9IGRvY3VtZW50KSB7XHJcbiAgICBsZXQgZWxlbWVudHM7XHJcblxyXG4gICAgLy8gVmFsaWRhdGUgY29udGV4dFxyXG4gICAgaWYgKHR5cGVvZiBjb250ZXh0ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGNvbnRleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoQVBYLmlzQVBYT2JqZWN0KGNvbnRleHQpKSB7XHJcbiAgICAgICAgY29udGV4dCA9IGNvbnRleHQuZmlyc3QoKTtcclxuICAgIH0gZWxzZSBpZiAoIShjb250ZXh0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgY29udGV4dCBpbnN0YW5jZW9mIERvY3VtZW50KSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb250ZXh0IGZvciBBUFgnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJyAmJiBpbnB1dC5zdGFydHNXaXRoKCcvLycpKSB7XHJcbiAgICAgICAgLy8gWFBhdGggd2l0aCBjb250ZXh0XHJcbiAgICAgICAgZWxlbWVudHMgPSBkb2N1bWVudC5ldmFsdWF0ZShpbnB1dCwgY29udGV4dCwgbnVsbCwgWFBhdGhSZXN1bHQuQU5ZX1RZUEUsIG51bGwpO1xyXG4gICAgICAgIGxldCBub2RlcyA9IFtdO1xyXG4gICAgICAgIGxldCBub2RlID0gZWxlbWVudHMuaXRlcmF0ZU5leHQoKTtcclxuICAgICAgICB3aGlsZSAobm9kZSkge1xyXG4gICAgICAgICAgICBub2Rlcy5wdXNoKG5vZGUpO1xyXG4gICAgICAgICAgICBub2RlID0gZWxlbWVudHMuaXRlcmF0ZU5leHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxlbWVudHMgPSBub2RlcztcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIC8vIENTUyBzZWxlY3RvciB3aXRoIGNvbnRleHRcclxuICAgICAgICBlbGVtZW50cyA9IGNvbnRleHQucXVlcnlTZWxlY3RvckFsbChpbnB1dCk7XHJcbiAgICB9IGVsc2UgaWYgKGlucHV0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcclxuICAgICAgICAvLyBTaW5nbGUgZWxlbWVudCB3aXRoaW4gY29udGV4dFxyXG4gICAgICAgIGVsZW1lbnRzID0gY29udGV4dC5jb250YWlucyhpbnB1dCkgPyBbaW5wdXRdIDogW107XHJcbiAgICB9IGVsc2UgaWYgKGlucHV0IGluc3RhbmNlb2YgTm9kZUxpc3QgfHwgaW5wdXQgaW5zdGFuY2VvZiBIVE1MQ29sbGVjdGlvbikge1xyXG4gICAgICAgIC8vIE5vZGVMaXN0IG9yIEhUTUxDb2xsZWN0aW9uIHdpdGhpbiBjb250ZXh0XHJcbiAgICAgICAgZWxlbWVudHMgPSBBcnJheS5mcm9tKGlucHV0KS5maWx0ZXIoZWwgPT4gY29udGV4dC5jb250YWlucyhlbCkpO1xyXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGlucHV0KSAmJiBpbnB1dC5ldmVyeShlbCA9PiBlbCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkge1xyXG4gICAgICAgIC8vIEFycmF5IG9mIGVsZW1lbnRzIHdpdGhpbiBjb250ZXh0XHJcbiAgICAgICAgZWxlbWVudHMgPSBpbnB1dC5maWx0ZXIoZWwgPT4gY29udGV4dC5jb250YWlucyhlbCkpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgalF1ZXJ5ICE9ICd1bmRlZmluZWQnICYmIGlucHV0IGluc3RhbmNlb2YgalF1ZXJ5KSB7XHJcbiAgICAgICAgLy8galF1ZXJ5IG9iamVjdCB3aXRoaW4gY29udGV4dFxyXG4gICAgICAgIGVsZW1lbnRzID0gQXJyYXkuZnJvbShpbnB1dC5nZXQoKSkuZmlsdGVyKGVsID0+IGNvbnRleHQuY29udGFpbnMoZWwpKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGlucHV0ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgLy8gRnVuY3Rpb24gcmV0dXJuaW5nIGFuIEFQWCBvYmplY3Qgd2l0aCBjb250ZXh0XHJcbiAgICAgICAgZWxlbWVudHMgPSBBUFgoaW5wdXQoKSwgY29udGV4dCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBpbnB1dCB0eXBlIGZvciBBUFgnKTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgYXB4ID0ge1xyXG4gICAgICAgIGVsZW1lbnRzOiBlbGVtZW50cyxcclxuICAgICAgICBfaXNBUFhPYmplY3Q6IHRydWVcclxuICAgIH07XHJcbiAgICBhcHgubGVuZ3RoID0gZWxlbWVudHMubGVuZ3RoO1xyXG4gICAgYXB4LmVhY2ggPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcclxuICAgICAgICBpZiAodGhpcy5lbGVtZW50cyBpbnN0YW5jZW9mIEFycmF5KSB0aGlzLmVsZW1lbnRzLmZvckVhY2goY2FsbGJhY2spO1xyXG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnRzIGluc3RhbmNlb2YgTm9kZUxpc3QpIEFycmF5LmZyb20odGhpcy5lbGVtZW50cykuZm9yRWFjaChjYWxsYmFjayk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9O1xyXG4gICAgYXB4LmdldCA9IGZ1bmN0aW9uIChpbmRleCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRzW2luZGV4XTtcclxuICAgIH07XHJcbiAgICBhcHguYWxsID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnRzIGluc3RhbmNlb2YgQXJyYXkpIHJldHVybiB0aGlzLmVsZW1lbnRzO1xyXG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnRzIGluc3RhbmNlb2YgTm9kZUxpc3QpIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZWxlbWVudHMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfTtcclxuICAgIGFweC5maXJzdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXQoMCk7XHJcbiAgICB9O1xyXG4gICAgYXVnbWVudFdpdGhMaXN0ZW4oYXB4KTtcclxuICAgIGF1Z21lbnRXaXRoVHJpc3RhdGUoYXB4KTtcclxuICAgIHJldHVybiBhcHg7XHJcbn07XHJcblxyXG5BUFgubG9hZENzcyA9IGxvYWRDc3M7XHJcbkFQWC5kaWFsb2cgPSBkaWFsb2c7XHJcbkFQWC5pc0FQWE9iamVjdCA9IGZ1bmN0aW9uIChvYmopIHtcclxuICAgIHJldHVybiBvYmogJiYgb2JqLl9pc0FQWE9iamVjdCA9PT0gdHJ1ZTtcclxufVxyXG5BUFguaXNfbnVtZXJpYyA9IChuKSA9PiB7XHJcbiAgICByZXR1cm4gIWlzTmFOKG4gLSBwYXJzZUZsb2F0KG4pKTtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgQVBYOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
|