@kepler.gl/duckdb 3.1.7 → 3.1.8
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.
|
@@ -112,7 +112,7 @@ var SqlPanel = exports.SqlPanel = function SqlPanel(_ref) {
|
|
|
112
112
|
window.history.replaceState({}, '', currentUrl.toString());
|
|
113
113
|
}, [sql]);
|
|
114
114
|
var runQuery = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
115
|
-
var adjustedQuery, db, connection, tempTableName, sqlStatements, arrowResult, tableDuckDBTypes, _iterator, _step, statement, isLastQuery, duckDbColumns,
|
|
115
|
+
var adjustedQuery, db, connection, tempTableName, sqlStatements, arrowResult, tableDuckDBTypes, _iterator, _step, statement, isLastQuery, duckDbColumns, _adjustedQuery;
|
|
116
116
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
117
117
|
while (1) switch (_context.prev = _context.next) {
|
|
118
118
|
case 0:
|
|
@@ -148,7 +148,7 @@ var SqlPanel = exports.SqlPanel = function SqlPanel(_ref) {
|
|
|
148
148
|
_iterator.s();
|
|
149
149
|
case 20:
|
|
150
150
|
if ((_step = _iterator.n()).done) {
|
|
151
|
-
_context.next =
|
|
151
|
+
_context.next = 48;
|
|
152
152
|
break;
|
|
153
153
|
}
|
|
154
154
|
statement = _step.value;
|
|
@@ -164,7 +164,7 @@ var SqlPanel = exports.SqlPanel = function SqlPanel(_ref) {
|
|
|
164
164
|
_context.t0 = _context.sent;
|
|
165
165
|
case 28:
|
|
166
166
|
if (!_context.t0) {
|
|
167
|
-
_context.next =
|
|
167
|
+
_context.next = 44;
|
|
168
168
|
break;
|
|
169
169
|
}
|
|
170
170
|
_context.next = 31;
|
|
@@ -175,39 +175,40 @@ var SqlPanel = exports.SqlPanel = function SqlPanel(_ref) {
|
|
|
175
175
|
case 33:
|
|
176
176
|
duckDbColumns = _context.sent;
|
|
177
177
|
tableDuckDBTypes = (0, _duckdbTableUtils.getDuckDBColumnTypesMap)(duckDbColumns);
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
178
|
+
|
|
179
|
+
// 3) cast GEOMETRY columns to WKB and BigInt to double.
|
|
180
|
+
_adjustedQuery = (0, _duckdbTableUtils.castDuckDBTypesForKepler)(tempTableName, duckDbColumns);
|
|
181
|
+
_context.next = 38;
|
|
181
182
|
return connection.query(_adjustedQuery);
|
|
182
|
-
case
|
|
183
|
+
case 38:
|
|
183
184
|
arrowResult = _context.sent;
|
|
184
185
|
// 4) set geoarrow extension for the arrow table as DuckDB doesn't support the geoarrow extension.
|
|
185
186
|
(0, _duckdbTableUtils.setGeoArrowWKBExtension)(arrowResult, duckDbColumns);
|
|
186
187
|
|
|
187
188
|
// 5) remove temp table
|
|
188
|
-
_context.next =
|
|
189
|
+
_context.next = 42;
|
|
189
190
|
return connection.query("DROP TABLE ".concat(tempTableName, ";"));
|
|
190
|
-
case
|
|
191
|
-
_context.next =
|
|
191
|
+
case 42:
|
|
192
|
+
_context.next = 46;
|
|
192
193
|
break;
|
|
193
|
-
case
|
|
194
|
-
_context.next =
|
|
194
|
+
case 44:
|
|
195
|
+
_context.next = 46;
|
|
195
196
|
return connection.query(statement);
|
|
196
|
-
case
|
|
197
|
+
case 46:
|
|
197
198
|
_context.next = 20;
|
|
198
199
|
break;
|
|
199
|
-
case
|
|
200
|
-
_context.next =
|
|
200
|
+
case 48:
|
|
201
|
+
_context.next = 53;
|
|
201
202
|
break;
|
|
202
|
-
case
|
|
203
|
-
_context.prev =
|
|
203
|
+
case 50:
|
|
204
|
+
_context.prev = 50;
|
|
204
205
|
_context.t1 = _context["catch"](18);
|
|
205
206
|
_iterator.e(_context.t1);
|
|
206
|
-
case
|
|
207
|
-
_context.prev =
|
|
207
|
+
case 53:
|
|
208
|
+
_context.prev = 53;
|
|
208
209
|
_iterator.f();
|
|
209
|
-
return _context.finish(
|
|
210
|
-
case
|
|
210
|
+
return _context.finish(53);
|
|
211
|
+
case 56:
|
|
211
212
|
// Show preview only for the result of the last query
|
|
212
213
|
if (arrowResult) {
|
|
213
214
|
setResult({
|
|
@@ -216,27 +217,27 @@ var SqlPanel = exports.SqlPanel = function SqlPanel(_ref) {
|
|
|
216
217
|
});
|
|
217
218
|
setError(null);
|
|
218
219
|
}
|
|
219
|
-
_context.next =
|
|
220
|
+
_context.next = 59;
|
|
220
221
|
return connection.close();
|
|
221
|
-
case
|
|
222
|
-
_context.next =
|
|
222
|
+
case 59:
|
|
223
|
+
_context.next = 64;
|
|
223
224
|
break;
|
|
224
|
-
case
|
|
225
|
-
_context.prev =
|
|
225
|
+
case 61:
|
|
226
|
+
_context.prev = 61;
|
|
226
227
|
_context.t2 = _context["catch"](1);
|
|
227
228
|
setError(_context.t2);
|
|
228
|
-
case
|
|
229
|
-
_context.prev =
|
|
229
|
+
case 64:
|
|
230
|
+
_context.prev = 64;
|
|
230
231
|
setIsRunning(false);
|
|
231
|
-
return _context.finish(
|
|
232
|
-
case
|
|
232
|
+
return _context.finish(64);
|
|
233
|
+
case 67:
|
|
233
234
|
// Indicate that there may be a possible change in DuckDB.
|
|
234
235
|
setSchemaUpdateTrigger(Date.now());
|
|
235
|
-
case
|
|
236
|
+
case 68:
|
|
236
237
|
case "end":
|
|
237
238
|
return _context.stop();
|
|
238
239
|
}
|
|
239
|
-
}, _callee, null, [[1,
|
|
240
|
+
}, _callee, null, [[1, 61, 64, 67], [18, 50, 53, 56]]);
|
|
240
241
|
})), [sql]);
|
|
241
242
|
var onChange = (0, _react.useCallback)(function (value) {
|
|
242
243
|
setSql(value);
|
|
@@ -392,4 +393,4 @@ var SqlPanel = exports.SqlPanel = function SqlPanel(_ref) {
|
|
|
392
393
|
onAddResultToMap: onAddResultToMap
|
|
393
394
|
})) : null))))));
|
|
394
395
|
};
|
|
395
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RSZWR1eCIsIl9zdHlsZWRDb21wb25lbnRzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZWFjdFJlc2l6YWJsZVBhbmVscyIsIl9hY3Rpb25zIiwiX2NvbW1vblV0aWxzIiwiX2NvbXBvbmVudHMiLCJfcHJvY2Vzc29ycyIsIl9zdHlsZXMiLCJfdXRpbHMiLCJfbW9uYWNvRWRpdG9yIiwiX3NjaGVtYVBhbmVsIiwiX3ByZXZpZXdEYXRhUGFuZWwiLCJfZHVja2RiVGFibGVVdGlscyIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfdGVtcGxhdGVPYmplY3QzIiwiX3RlbXBsYXRlT2JqZWN0NCIsIl90ZW1wbGF0ZU9iamVjdDUiLCJfdGVtcGxhdGVPYmplY3Q2IiwiX3RlbXBsYXRlT2JqZWN0NyIsIl90ZW1wbGF0ZU9iamVjdDgiLCJfdGVtcGxhdGVPYmplY3Q5IiwiX3RlbXBsYXRlT2JqZWN0MTAiLCJfdGVtcGxhdGVPYmplY3QxMSIsIl90ZW1wbGF0ZU9iamVjdDEyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIlN0eWxlZFNxbFBhbmVsIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJzaWRlUGFuZWxCZyIsIlN0eWxlZFNxbEFjdGlvbnMiLCJTdHlsZWRTcWxFZGl0b3IiLCJTdHlsZWRFZGl0b3JQYW5lbCIsIlN0eWxlZERhdGFQYW5lbCIsIlN0eWxlZEVkaXRvciIsInByb3BzIiwiaXNSdW5uaW5nIiwiU3R5bGVkUmVzdWx0QWN0aW9ucyIsIlN0eWxlZFJlc2l6ZUhhbmRsZSIsIlBhbmVsUmVzaXplSGFuZGxlIiwicGFuZWxCb3JkZXJDb2xvciIsIlN0eWxlZFZlcnRpY2FsUmVzaXplSGFuZGxlIiwiU3R5bGVkTG9hZGluZ0NvbnRhaW5lciIsIlN0eWxlZEVycm9yQ29udGFpbmVyIiwicHJlIiwiU3R5bGVkRmlsZURyb3BBcmVhIiwiRmlsZURyb3AiLCJkcmFnT3ZlciIsInRoZW1lIiwic3VidGV4dENvbG9yTFQiLCJTQ0hFTUFfUEFORUxfU1RZTEUiLCJvdmVyZmxvdyIsIlNxbFBhbmVsIiwiZXhwb3J0cyIsIl9yZWYiLCJfcmVmJGluaXRpYWxTcWwiLCJpbml0aWFsU3FsIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJwYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInNlYXJjaCIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzcWwiLCJzZXRTcWwiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImRyb3BwZWRGaWxlIiwic2V0RHJvcHBlZEZpbGUiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImRyYWdTdGF0ZSIsInNldERyYWdTdGF0ZSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwicmVzdWx0Iiwic2V0UmVzdWx0IiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTEwIiwic2NoZW1hVXBkYXRlVHJpZ2dlciIsInNldFNjaGVtYVVwZGF0ZVRyaWdnZXIiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwiZXJyb3IiLCJzZXRFcnJvciIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJjb3VudGVyIiwic2V0Q291bnRlciIsIl91c2VTdGF0ZTE1IiwiX3VzZVN0YXRlMTYiLCJ0YWJsZVNjaGVtYSIsInNldFRhYmxlU2NoZW1hIiwiX3VzZVN0YXRlMTciLCJfdXNlU3RhdGUxOCIsInNldElzUnVubmluZyIsIl91c2VTdGF0ZTE5IiwiaXNBcHBsZURldmljZSIsIl91c2VTdGF0ZTIwIiwiaXNNYWMiLCJkaXNwYXRjaCIsInVzZURpc3BhdGNoIiwiZHJvcHBlZEZpbGVBcmVhUmVmIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiY3VycmVudFVybCIsIlVSTCIsImhyZWYiLCJzZWFyY2hQYXJhbXMiLCJoaXN0b3J5IiwicmVwbGFjZVN0YXRlIiwicnVuUXVlcnkiLCJ1c2VDYWxsYmFjayIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiYWRqdXN0ZWRRdWVyeSIsImRiIiwiY29ubmVjdGlvbiIsInRlbXBUYWJsZU5hbWUiLCJzcWxTdGF0ZW1lbnRzIiwiYXJyb3dSZXN1bHQiLCJ0YWJsZUR1Y2tEQlR5cGVzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJzdGF0ZW1lbnQiLCJpc0xhc3RRdWVyeSIsImR1Y2tEYkNvbHVtbnMiLCJjb2x1bW5zVG9Db252ZXJ0VG9XS0IiLCJfYWRqdXN0ZWRRdWVyeSIsIndyYXAiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicHJldiIsInJlbW92ZVNRTENvbW1lbnRzIiwiRXJyb3IiLCJhYnJ1cHQiLCJnZXRBcHBsaWNhdGlvbkNvbmZpZyIsImRhdGFiYXNlIiwiY29ubmVjdCIsInNlbnQiLCJzcGxpdFNxbFN0YXRlbWVudHMiLCJ0MCIsImNoZWNrSXNTZWxlY3RRdWVyeSIsInF1ZXJ5IiwiY29uY2F0IiwiZ2V0RHVja0RCQ29sdW1uVHlwZXMiLCJnZXREdWNrREJDb2x1bW5UeXBlc01hcCIsImdldEdlb21ldHJ5Q29sdW1ucyIsImNvbnN0cnVjdFNUX2FzV0tCUXVlcnkiLCJzZXRHZW9BcnJvd1dLQkV4dGVuc2lvbiIsInQxIiwiZmluaXNoIiwidGFibGUiLCJjbG9zZSIsInQyIiwiRGF0ZSIsIm5vdyIsInN0b3AiLCJvbkNoYW5nZSIsIm9uQWRkUmVzdWx0VG9NYXAiLCJrZXBsZXJGaWVsZHMiLCJhcnJvd1NjaGVtYVRvRmllbGRzIiwiZGF0YXNldFRvQWRkIiwiZGF0YSIsImZpZWxkcyIsInJvd3MiLCJpbmZvIiwiaWQiLCJnZW5lcmF0ZUhhc2hJZCIsImxhYmVsIiwiZm9ybWF0IiwiYWRkRGF0YVRvTWFwIiwiZGF0YXNldHMiLCJpc1ZhbGlkRmlsZVR5cGUiLCJmaWxlbmFtZSIsImZpbGVFeHQiLCJTVVBQT1JURURfRFVDS0RCX0RST1BfRVhURU5TSU9OUyIsImZpbmQiLCJleHQiLCJlbmRzV2l0aCIsIkJvb2xlYW4iLCJjcmVhdGVUYWJsZUZyb21Ecm9wcGVkRmlsZSIsIl9yZWYzIiwiX2NhbGxlZTIiLCJfZXJyb3IiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJ0YWJsZUZyb21GaWxlIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImhhbmRsZUZpbGVJbnB1dCIsImZpbGVMaXN0IiwiZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsImZpbGVzIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImZpbHRlciIsImRpc2FibGVFeHRlbnNpb25GaWx0ZXIiLCJmaWxlc1RvTG9hZCIsImVycm9yRmlsZXMiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiZmlsZSIsInB1c2giLCJlcnIiLCJqb2luIiwiY3JlYXRlRWxlbWVudCIsIlBhbmVsR3JvdXAiLCJkaXJlY3Rpb24iLCJQYW5lbCIsImRlZmF1bHRTaXplIiwibWluU2l6ZSIsInN0eWxlIiwiY2xhc3NOYW1lIiwib25EcmFnT3ZlciIsIm9uRHJhZ0xlYXZlIiwiZnJhbWUiLCJjdXJyZW50IiwiZG9jdW1lbnQiLCJvbkRyb3AiLCJTY2hlbWFQYW5lbCIsIkljb25CdXR0b24iLCJvbkNsaWNrIiwiZGlzYWJsZWQiLCJJY29ucyIsIlBsYXkiLCJoZWlnaHQiLCJUb29sdGlwIiwicGxhY2UiLCJlZmZlY3QiLCJpc1JlYWRPbmx5Iiwib25SdW5RdWVyeSIsImNvZGUiLCJMb2FkaW5nU3Bpbm5lciIsIm1lc3NhZ2UiLCJCdXR0b24iLCJzZWNvbmRhcnkiLCJudW1Sb3dzIiwiUHJldmlld0RhdGFQYW5lbCIsImRhdGFUYWJsZVN0eWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvc3FsLXBhbmVsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgKiBhcyBhcnJvdyBmcm9tICdhcGFjaGUtYXJyb3cnO1xuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHt1c2VEaXNwYXRjaH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge1BhbmVsLCBQYW5lbEdyb3VwLCBQYW5lbFJlc2l6ZUhhbmRsZX0gZnJvbSAncmVhY3QtcmVzaXphYmxlLXBhbmVscyc7XG5cbmltcG9ydCB7YWRkRGF0YVRvTWFwfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtnZW5lcmF0ZUhhc2hJZH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtCdXR0b24sIEZpbGVEcm9wLCBJY29uQnV0dG9uLCBJY29ucywgTG9hZGluZ1NwaW5uZXIsIFRvb2x0aXB9IGZyb20gJ0BrZXBsZXIuZ2wvY29tcG9uZW50cyc7XG5pbXBvcnQge2Fycm93U2NoZW1hVG9GaWVsZHN9IGZyb20gJ0BrZXBsZXIuZ2wvcHJvY2Vzc29ycyc7XG5pbXBvcnQge3NpZGVQYW5lbEJnLCBwYW5lbEJvcmRlckNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL3N0eWxlcyc7XG5pbXBvcnQge2lzQXBwbGVEZXZpY2UsIGdldEFwcGxpY2F0aW9uQ29uZmlnfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuaW1wb3J0IE1vbmFjb0VkaXRvciBmcm9tICcuL21vbmFjby1lZGl0b3InO1xuaW1wb3J0IHtTY2hlbWFQYW5lbCwgU2NoZW1hU3VnZ2VzdGlvbn0gZnJvbSAnLi9zY2hlbWEtcGFuZWwnO1xuaW1wb3J0IHtQcmV2aWV3RGF0YVBhbmVsLCBRdWVyeVJlc3VsdH0gZnJvbSAnLi9wcmV2aWV3LWRhdGEtcGFuZWwnO1xuXG5pbXBvcnQge1xuICBjb25zdHJ1Y3RTVF9hc1dLQlF1ZXJ5LFxuICBnZXREdWNrREJDb2x1bW5UeXBlcyxcbiAgZ2V0RHVja0RCQ29sdW1uVHlwZXNNYXAsXG4gIGdldEdlb21ldHJ5Q29sdW1ucyxcbiAgc2V0R2VvQXJyb3dXS0JFeHRlbnNpb24sXG4gIHNwbGl0U3FsU3RhdGVtZW50cyxcbiAgY2hlY2tJc1NlbGVjdFF1ZXJ5LFxuICByZW1vdmVTUUxDb21tZW50cyxcbiAgdGFibGVGcm9tRmlsZSxcbiAgU1VQUE9SVEVEX0RVQ0tEQl9EUk9QX0VYVEVOU0lPTlNcbn0gZnJvbSAnLi4vdGFibGUvZHVja2RiLXRhYmxlLXV0aWxzJztcblxuY29uc3QgU3R5bGVkU3FsUGFuZWwgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7c2lkZVBhbmVsQmd9O1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICMzMzM7XG5gO1xuXG5jb25zdCBTdHlsZWRTcWxBY3Rpb25zID0gc3R5bGVkLmRpdmBcbiAgZmxleDogMCAwIDUwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmctdG9wOiAxMnB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMzMzO1xuYDtcblxuY29uc3QgU3R5bGVkU3FsRWRpdG9yID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgZmxleDogMTtcbiAgbWluLXdpZHRoOiAwOyAvLyBQcmV2ZW50cyBmbGV4IGNoaWxkIGZyb20gb3ZlcmZsb3dpbmdcbiAgaGVpZ2h0OiAxMDAlO1xuYDtcblxuY29uc3QgU3R5bGVkRWRpdG9yUGFuZWwgPSBzdHlsZWQuZGl2YFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3NpZGVQYW5lbEJnfTtcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBnYXA6IDVweDtcbiAgZmxleC1ncm93OiAxO1xuYDtcblxuY29uc3QgU3R5bGVkRGF0YVBhbmVsID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbmA7XG5cbmNvbnN0IFN0eWxlZEVkaXRvciA9IHN0eWxlZC5kaXY8e2lzUnVubmluZzogYm9vbGVhbn0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nOiAxMnB4IDEycHggMTJweCAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMzAsIDMwLCAzMCk7XG4gIG9wYWNpdHk6ICR7cHJvcHMgPT4gKHByb3BzLmlzUnVubmluZyA/IDAuNSA6IDEpfTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgbWluLWhlaWdodDogMDsgLy8gUHJldmVudHMgZmxleCBjaGlsZCBmcm9tIG92ZXJmbG93aW5nXG5gO1xuXG5jb25zdCBTdHlsZWRSZXN1bHRBY3Rpb25zID0gc3R5bGVkLmRpdmBcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIHBhZGRpbmc6IDJweCAxMnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMTJweDtcbmA7XG5cbmNvbnN0IFN0eWxlZFJlc2l6ZUhhbmRsZSA9IHN0eWxlZChQYW5lbFJlc2l6ZUhhbmRsZSlgXG4gIGJhY2tncm91bmQtY29sb3I6ICR7cGFuZWxCb3JkZXJDb2xvcn07XG4gIHdpZHRoOiA0cHg7XG4gIGN1cnNvcjogY29sLXJlc2l6ZTtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU1O1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRWZXJ0aWNhbFJlc2l6ZUhhbmRsZSA9IHN0eWxlZChQYW5lbFJlc2l6ZUhhbmRsZSlgXG4gIGJhY2tncm91bmQtY29sb3I6ICR7cGFuZWxCb3JkZXJDb2xvcn07XG4gIGhlaWdodDogNHB4O1xuICBjdXJzb3I6IHJvdy1yZXNpemU7XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NTtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkTG9hZGluZ0NvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBoZWlnaHQ6IDEwMCU7XG5gO1xuXG5jb25zdCBTdHlsZWRFcnJvckNvbnRhaW5lciA9IHN0eWxlZC5wcmVgXG4gIHBhZGRpbmc6IDEycHg7XG4gIGNvbG9yOiByZWQ7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtzaWRlUGFuZWxCZ307XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3c6IGF1dG87XG5gO1xuXG5pbnRlcmZhY2UgU3R5bGVkRHJhZ1BhbmVsUHJvcHMge1xuICBkcmFnT3Zlcj86IGJvb2xlYW47XG59XG5cbmNvbnN0IFN0eWxlZEZpbGVEcm9wQXJlYSA9IHN0eWxlZChGaWxlRHJvcCk8U3R5bGVkRHJhZ1BhbmVsUHJvcHM+YFxuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci13aWR0aDogMXB4O1xuICBib3JkZXI6IDFweCAke3Byb3BzID0+IChwcm9wcy5kcmFnT3ZlciA/ICdzb2xpZCcgOiAnZGFzaGVkJyl9XG4gICAgJHtwcm9wcyA9PiAocHJvcHMuZHJhZ092ZXIgPyBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3JMVCA6ICd0cmFuc3BhcmVudCcpfTtcbiAgLmZpbGUtZHJvcC10YXJnZXQge1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuYDtcblxudHlwZSBTcWxQYW5lbFByb3BzID0ge1xuICBpbml0aWFsU3FsPzogc3RyaW5nO1xufTtcblxuY29uc3QgU0NIRU1BX1BBTkVMX1NUWUxFID0ge292ZXJmbG93OiAnYXV0byd9O1xuXG5leHBvcnQgY29uc3QgU3FsUGFuZWw6IFJlYWN0LkZDPFNxbFBhbmVsUHJvcHM+ID0gKHtpbml0aWFsU3FsID0gJyd9KSA9PiB7XG4gIGNvbnN0IFtzcWwsIHNldFNxbF0gPSB1c2VTdGF0ZSgoKSA9PiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICByZXR1cm4gcGFyYW1zLmdldCgnc3FsJykgfHwgaW5pdGlhbFNxbDtcbiAgfSk7XG4gIGNvbnN0IFtkcm9wcGVkRmlsZSwgc2V0RHJvcHBlZEZpbGVdID0gdXNlU3RhdGU8RmlsZSB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbZHJhZ1N0YXRlLCBzZXREcmFnU3RhdGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbcmVzdWx0LCBzZXRSZXN1bHRdID0gdXNlU3RhdGU8bnVsbCB8IFF1ZXJ5UmVzdWx0PihudWxsKTtcbiAgY29uc3QgW3NjaGVtYVVwZGF0ZVRyaWdnZXIsIHNldFNjaGVtYVVwZGF0ZVRyaWdnZXJdID0gdXNlU3RhdGU8bnVtYmVyPigwKTtcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxFcnJvciB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbY291bnRlciwgc2V0Q291bnRlcl0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3QgW3RhYmxlU2NoZW1hLCBzZXRUYWJsZVNjaGVtYV0gPSB1c2VTdGF0ZTxTY2hlbWFTdWdnZXN0aW9uW10+KFtdKTtcbiAgY29uc3QgW2lzUnVubmluZywgc2V0SXNSdW5uaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2lzTWFjXSA9IHVzZVN0YXRlKCgpID0+IGlzQXBwbGVEZXZpY2UoKSk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICBjb25zdCBkcm9wcGVkRmlsZUFyZWFSZWYgPSB1c2VSZWYobnVsbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50VXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgaWYgKHNxbCkge1xuICAgICAgY3VycmVudFVybC5zZWFyY2hQYXJhbXMuc2V0KCdzcWwnLCBzcWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50VXJsLnNlYXJjaFBhcmFtcy5kZWxldGUoJ3NxbCcpO1xuICAgIH1cbiAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sICcnLCBjdXJyZW50VXJsLnRvU3RyaW5nKCkpO1xuICB9LCBbc3FsXSk7XG5cbiAgY29uc3QgcnVuUXVlcnkgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgc2V0SXNSdW5uaW5nKHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhZGp1c3RlZFF1ZXJ5ID0gc3FsID8gcmVtb3ZlU1FMQ29tbWVudHMoc3FsKSA6IG51bGw7XG4gICAgICBpZiAoIWFkanVzdGVkUXVlcnkpIHtcbiAgICAgICAgc2V0RXJyb3IobmV3IEVycm9yKCdRdWVyeSBpcyBlbXB0eScpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkYiA9IGdldEFwcGxpY2F0aW9uQ29uZmlnKCkuZGF0YWJhc2U7XG4gICAgICBpZiAoIWRiKSB7XG4gICAgICAgIHNldEVycm9yKG5ldyBFcnJvcignVGhlIGRhdGFiYXNlIGlzIG5vdCBjb25maWd1cmVkIHByb3Blcmx5LicpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgY29ubmVjdGlvbiA9IGF3YWl0IGRiLmNvbm5lY3QoKTtcblxuICAgICAgLy8gVE9ETyBmaW5kIGEgY2hlYXAgd2F5IHRvIGdldCBEdWNrRGIgdHlwZXMgd2l0aCBhIHNpbmdsZSBxdWVyeSB0byBhIHJlbW90ZSByZXNvdXJjZSAtIHRlbXAgdGFibGU/IGN0ZT9cbiAgICAgIGNvbnN0IHRlbXBUYWJsZU5hbWUgPSAndGVtcF9rZXBsZXJnbF90YWJsZSc7XG5cbiAgICAgIC8vIHJlbW92ZSBjb21tZW50c1xuICAgICAgY29uc3Qgc3FsU3RhdGVtZW50cyA9IHNwbGl0U3FsU3RhdGVtZW50cyhhZGp1c3RlZFF1ZXJ5KTtcblxuICAgICAgbGV0IGFycm93UmVzdWx0OiBhcnJvdy5UYWJsZSB8IG51bGwgPSBudWxsO1xuICAgICAgbGV0IHRhYmxlRHVja0RCVHlwZXMgPSB7fTtcblxuICAgICAgZm9yIChjb25zdCBzdGF0ZW1lbnQgb2Ygc3FsU3RhdGVtZW50cykge1xuICAgICAgICBjb25zdCBpc0xhc3RRdWVyeSA9IHN0YXRlbWVudCA9PT0gc3FsU3RhdGVtZW50c1tzcWxTdGF0ZW1lbnRzLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAoaXNMYXN0UXVlcnkgJiYgKGF3YWl0IGNoZWNrSXNTZWxlY3RRdWVyeShjb25uZWN0aW9uLCBzdGF0ZW1lbnQpKSkge1xuICAgICAgICAgIC8vIDEpIGNyZWF0ZSB0ZW1wIHRhYmxlIGZyb20gdGhlIG9yaWdpbmFsIHF1ZXJ5LlxuICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoYENSRUFURSBPUiBSRVBMQUNFIFRBQkxFICcke3RlbXBUYWJsZU5hbWV9JyBBUyAke3N0YXRlbWVudH1gKTtcblxuICAgICAgICAgIC8vIDIpIHF1ZXJ5IGR1Y2tkYiB0eXBlcyBhbmQgZGV0ZWN0IGNhbmRpZGF0ZSBjb2x1bW5zIGZvciBTVF9hc1dLQiB0cmFuc2Zvcm0uXG4gICAgICAgICAgY29uc3QgZHVja0RiQ29sdW1ucyA9IGF3YWl0IGdldER1Y2tEQkNvbHVtblR5cGVzKGNvbm5lY3Rpb24sIHRlbXBUYWJsZU5hbWUpO1xuICAgICAgICAgIHRhYmxlRHVja0RCVHlwZXMgPSBnZXREdWNrREJDb2x1bW5UeXBlc01hcChkdWNrRGJDb2x1bW5zKTtcbiAgICAgICAgICBjb25zdCBjb2x1bW5zVG9Db252ZXJ0VG9XS0IgPSBnZXRHZW9tZXRyeUNvbHVtbnMoZHVja0RiQ29sdW1ucyk7XG5cbiAgICAgICAgICAvLyAzKSBxdWVyeSBHRU9NRVRSWSBjb2x1bW5zIGFzIFdLQi5cbiAgICAgICAgICBjb25zdCBhZGp1c3RlZFF1ZXJ5ID0gY29uc3RydWN0U1RfYXNXS0JRdWVyeSh0ZW1wVGFibGVOYW1lLCBjb2x1bW5zVG9Db252ZXJ0VG9XS0IpO1xuICAgICAgICAgIGFycm93UmVzdWx0ID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShhZGp1c3RlZFF1ZXJ5KTtcblxuICAgICAgICAgIC8vIDQpIHNldCBnZW9hcnJvdyBleHRlbnNpb24gZm9yIHRoZSBhcnJvdyB0YWJsZSBhcyBEdWNrREIgZG9lc24ndCBzdXBwb3J0IHRoZSBnZW9hcnJvdyBleHRlbnNpb24uXG4gICAgICAgICAgc2V0R2VvQXJyb3dXS0JFeHRlbnNpb24oYXJyb3dSZXN1bHQsIGR1Y2tEYkNvbHVtbnMpO1xuXG4gICAgICAgICAgLy8gNSkgcmVtb3ZlIHRlbXAgdGFibGVcbiAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KGBEUk9QIFRBQkxFICR7dGVtcFRhYmxlTmFtZX07YCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5xdWVyeShzdGF0ZW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFNob3cgcHJldmlldyBvbmx5IGZvciB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0IHF1ZXJ5XG4gICAgICBpZiAoYXJyb3dSZXN1bHQpIHtcbiAgICAgICAgc2V0UmVzdWx0KHt0YWJsZTogYXJyb3dSZXN1bHQsIHRhYmxlRHVja0RCVHlwZXN9KTtcbiAgICAgICAgc2V0RXJyb3IobnVsbCk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IGNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBzZXRFcnJvcihlIGFzIEVycm9yKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0SXNSdW5uaW5nKGZhbHNlKTtcbiAgICB9XG5cbiAgICAvLyBJbmRpY2F0ZSB0aGF0IHRoZXJlIG1heSBiZSBhIHBvc3NpYmxlIGNoYW5nZSBpbiBEdWNrREIuXG4gICAgc2V0U2NoZW1hVXBkYXRlVHJpZ2dlcihEYXRlLm5vdygpKTtcbiAgfSwgW3NxbF0pO1xuXG4gIGNvbnN0IG9uQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgdmFsdWUgPT4ge1xuICAgICAgc2V0U3FsKHZhbHVlKTtcbiAgICB9LFxuICAgIFtzZXRTcWxdXG4gICk7XG5cbiAgY29uc3Qgb25BZGRSZXN1bHRUb01hcCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXJlc3VsdCkgcmV0dXJuO1xuXG4gICAgY29uc3Qga2VwbGVyRmllbGRzID0gYXJyb3dTY2hlbWFUb0ZpZWxkcyhyZXN1bHQudGFibGUsIHJlc3VsdC50YWJsZUR1Y2tEQlR5cGVzKTtcblxuICAgIGNvbnN0IGRhdGFzZXRUb0FkZCA9IHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZmllbGRzOiBrZXBsZXJGaWVsZHMsXG4gICAgICAgIC8vIFRPRE8gdHlwZSBBZGREYXRhVG9NYXBQYXlsb2FkIC0+IHJvd3MgLT4gKyBhcnJvdy5UYWJsZVxuICAgICAgICByb3dzOiByZXN1bHQudGFibGUgYXMgYW55XG4gICAgICB9LFxuICAgICAgaW5mbzoge1xuICAgICAgICBpZDogZ2VuZXJhdGVIYXNoSWQoKSxcbiAgICAgICAgbGFiZWw6IGBxdWVyeV9yZXN1bHQke2NvdW50ZXIgPiAwID8gYF8ke2NvdW50ZXJ9YCA6ICcnfWAsXG4gICAgICAgIGZvcm1hdDogJ2Fycm93J1xuICAgICAgfVxuICAgIH07XG5cbiAgICBkaXNwYXRjaChhZGREYXRhVG9NYXAoe2RhdGFzZXRzOiBbZGF0YXNldFRvQWRkXX0pKTtcbiAgICBzZXRDb3VudGVyKGNvdW50ZXIgKyAxKTtcbiAgfSwgW3Jlc3VsdCwgY291bnRlciwgZGlzcGF0Y2hdKTtcblxuICBjb25zdCBpc1ZhbGlkRmlsZVR5cGUgPSB1c2VDYWxsYmFjayhmaWxlbmFtZSA9PiB7XG4gICAgY29uc3QgZmlsZUV4dCA9IFNVUFBPUlRFRF9EVUNLREJfRFJPUF9FWFRFTlNJT05TLmZpbmQoZXh0ID0+IGZpbGVuYW1lLmVuZHNXaXRoKGV4dCkpO1xuICAgIHJldHVybiBCb29sZWFuKGZpbGVFeHQpO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgY3JlYXRlVGFibGVGcm9tRHJvcHBlZEZpbGUgPSB1c2VDYWxsYmFjayhhc3luYyAoZHJvcHBlZEZpbGU6IEZpbGUgfCBudWxsKSA9PiB7XG4gICAgaWYgKGRyb3BwZWRGaWxlKSB7XG4gICAgICBjb25zdCBlcnJvciA9IGF3YWl0IHRhYmxlRnJvbUZpbGUoZHJvcHBlZEZpbGUpO1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHNldEVycm9yKGVycm9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVycm9yKG51bGwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHNldERyb3BwZWRGaWxlKG51bGwpO1xuICAgIHNldERyYWdTdGF0ZShmYWxzZSk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNyZWF0ZVRhYmxlRnJvbURyb3BwZWRGaWxlKGRyb3BwZWRGaWxlKTtcbiAgfSwgW2Ryb3BwZWRGaWxlLCBjcmVhdGVUYWJsZUZyb21Ecm9wcGVkRmlsZV0pO1xuXG4gIGNvbnN0IGhhbmRsZUZpbGVJbnB1dCA9IHVzZUNhbGxiYWNrKFxuICAgIChmaWxlTGlzdDogRmlsZUxpc3QsIGV2ZW50OiBEcmFnRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlsZXMgPSBbLi4uZmlsZUxpc3RdLmZpbHRlcihCb29sZWFuKTtcblxuICAgICAgY29uc3QgZGlzYWJsZUV4dGVuc2lvbkZpbHRlciA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBmaWxlc1RvTG9hZDogRmlsZVtdID0gW107XG4gICAgICBjb25zdCBlcnJvckZpbGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgIGlmIChkaXNhYmxlRXh0ZW5zaW9uRmlsdGVyIHx8IGlzVmFsaWRGaWxlVHlwZShmaWxlLm5hbWUpKSB7XG4gICAgICAgICAgZmlsZXNUb0xvYWQucHVzaChmaWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlcnJvckZpbGVzLnB1c2goZmlsZS5uYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZmlsZXNUb0xvYWQubGVuZ3RoID4gMCkge1xuICAgICAgICBzZXREcm9wcGVkRmlsZShmaWxlc1RvTG9hZFswXSk7XG4gICAgICB9IGVsc2UgaWYgKGVycm9yRmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBzZXRFcnJvcihuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGZpbGUgZm9ybWF0czogJHtlcnJvckZpbGVzLmpvaW4oJywgJyl9YCkpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2lzVmFsaWRGaWxlVHlwZV1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRTcWxQYW5lbD5cbiAgICAgIDxQYW5lbEdyb3VwIGRpcmVjdGlvbj1cImhvcml6b250YWxcIj5cbiAgICAgICAgPFBhbmVsIGRlZmF1bHRTaXplPXsyMH0gbWluU2l6ZT17MTV9IHN0eWxlPXtTQ0hFTUFfUEFORUxfU1RZTEV9IGNsYXNzTmFtZT1cInNjaGVtYS1wYW5lbFwiPlxuICAgICAgICAgIDxTdHlsZWRGaWxlRHJvcEFyZWFcbiAgICAgICAgICAgIGRyYWdPdmVyPXtkcmFnU3RhdGV9XG4gICAgICAgICAgICBvbkRyYWdPdmVyPXsoKSA9PiBzZXREcmFnU3RhdGUodHJ1ZSl9XG4gICAgICAgICAgICBvbkRyYWdMZWF2ZT17KCkgPT4gc2V0RHJhZ1N0YXRlKGZhbHNlKX1cbiAgICAgICAgICAgIGZyYW1lPXtkcm9wcGVkRmlsZUFyZWFSZWYuY3VycmVudCB8fCBkb2N1bWVudH1cbiAgICAgICAgICAgIG9uRHJvcD17aGFuZGxlRmlsZUlucHV0fVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmlsZS11cGxvYWRlcl9fZmlsZS1kcm9wXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U2NoZW1hUGFuZWxcbiAgICAgICAgICAgICAgc2V0VGFibGVTY2hlbWE9e3NldFRhYmxlU2NoZW1hfVxuICAgICAgICAgICAgICBkcm9wcGVkRmlsZT17ZHJvcHBlZEZpbGV9XG4gICAgICAgICAgICAgIHNjaGVtYVVwZGF0ZVRyaWdnZXI9e3NjaGVtYVVwZGF0ZVRyaWdnZXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3R5bGVkRmlsZURyb3BBcmVhPlxuICAgICAgICA8L1BhbmVsPlxuXG4gICAgICAgIDxTdHlsZWRSZXNpemVIYW5kbGUgLz5cblxuICAgICAgICA8UGFuZWwgbWluU2l6ZT17NDB9PlxuICAgICAgICAgIDxTdHlsZWRTcWxFZGl0b3I+XG4gICAgICAgICAgICA8UGFuZWxHcm91cCBkaXJlY3Rpb249XCJ2ZXJ0aWNhbFwiPlxuICAgICAgICAgICAgICA8UGFuZWwgZGVmYXVsdFNpemU9ezMwfSBjbGFzc05hbWU9XCJlZGl0b3ItcGFuZWxcIj5cbiAgICAgICAgICAgICAgICA8U3R5bGVkRWRpdG9yUGFuZWw+XG4gICAgICAgICAgICAgICAgICA8U3R5bGVkU3FsQWN0aW9ucz5cbiAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRpcFxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZm9yPVwicnVuLXF1ZXJ5LXRvb2x0aXBcIlxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3J1blF1ZXJ5fVxuICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc1J1bm5pbmcgfHwgIXNxbH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxJY29ucy5QbGF5IGhlaWdodD1cIjE4cHhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwIGlkPVwicnVuLXF1ZXJ5LXRvb2x0aXBcIiBwbGFjZT1cInRvcFwiIGVmZmVjdD1cInNvbGlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBSdW4gUXVlcnkgKHtpc01hYyA/ICfijJhFbnRlcicgOiAnQ3RybCtFbnRlcid9IG9yIFNoaWZ0K0VudGVyKVxuICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWRTcWxBY3Rpb25zPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZEVkaXRvciBpc1J1bm5pbmc9e2lzUnVubmluZ30+XG4gICAgICAgICAgICAgICAgICAgIDxNb25hY29FZGl0b3JcbiAgICAgICAgICAgICAgICAgICAgICBpc1JlYWRPbmx5PXtpc1J1bm5pbmd9XG4gICAgICAgICAgICAgICAgICAgICAgb25SdW5RdWVyeT17cnVuUXVlcnl9XG4gICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYmxlU2NoZW1hPXt0YWJsZVNjaGVtYX1cbiAgICAgICAgICAgICAgICAgICAgICBjb2RlPXtzcWx9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZEVkaXRvcj5cbiAgICAgICAgICAgICAgICA8L1N0eWxlZEVkaXRvclBhbmVsPlxuICAgICAgICAgICAgICA8L1BhbmVsPlxuXG4gICAgICAgICAgICAgIDxTdHlsZWRWZXJ0aWNhbFJlc2l6ZUhhbmRsZSAvPlxuICAgICAgICAgICAgICA8UGFuZWwgY2xhc3NOYW1lPVwicHJldmlldy1wYW5lbFwiPlxuICAgICAgICAgICAgICAgIHtpc1J1bm5pbmcgPyAoXG4gICAgICAgICAgICAgICAgICA8U3R5bGVkTG9hZGluZ0NvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZExvYWRpbmdDb250YWluZXI+XG4gICAgICAgICAgICAgICAgKSA6IGVycm9yID8gKFxuICAgICAgICAgICAgICAgICAgPFN0eWxlZEVycm9yQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PntlcnJvci5tZXNzYWdlfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWRFcnJvckNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICApIDogcmVzdWx0ID8gKFxuICAgICAgICAgICAgICAgICAgPFN0eWxlZERhdGFQYW5lbD5cbiAgICAgICAgICAgICAgICAgICAgPFN0eWxlZFJlc3VsdEFjdGlvbnM+XG4gICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBzZWNvbmRhcnkgb25DbGljaz17b25BZGRSZXN1bHRUb01hcH0+XG4gICAgICAgICAgICAgICAgICAgICAgICBBZGQgdG8gTWFwXG4gICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj57cmVzdWx0LnRhYmxlLm51bVJvd3N9IHJvd3M8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRSZXN1bHRBY3Rpb25zPlxuICAgICAgICAgICAgICAgICAgICA8UHJldmlld0RhdGFQYW5lbFxuICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD17cmVzdWx0fVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFUYWJsZVN0eWxlPXt7fX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkFkZFJlc3VsdFRvTWFwPXtvbkFkZFJlc3VsdFRvTWFwfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWREYXRhUGFuZWw+XG4gICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDwvUGFuZWw+XG4gICAgICAgICAgICA8L1BhbmVsR3JvdXA+XG4gICAgICAgICAgPC9TdHlsZWRTcWxFZGl0b3I+XG4gICAgICAgIDwvUGFuZWw+XG4gICAgICA8L1BhbmVsR3JvdXA+XG4gICAgPC9TdHlsZWRTcWxQYW5lbD5cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFJQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxXQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUkscUJBQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLFFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFlBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFdBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLFdBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLE9BQUEsR0FBQVQsT0FBQTtB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
|
|
396
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RSZWR1eCIsIl9zdHlsZWRDb21wb25lbnRzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZWFjdFJlc2l6YWJsZVBhbmVscyIsIl9hY3Rpb25zIiwiX2NvbW1vblV0aWxzIiwiX2NvbXBvbmVudHMiLCJfcHJvY2Vzc29ycyIsIl9zdHlsZXMiLCJfdXRpbHMiLCJfbW9uYWNvRWRpdG9yIiwiX3NjaGVtYVBhbmVsIiwiX3ByZXZpZXdEYXRhUGFuZWwiLCJfZHVja2RiVGFibGVVdGlscyIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfdGVtcGxhdGVPYmplY3QzIiwiX3RlbXBsYXRlT2JqZWN0NCIsIl90ZW1wbGF0ZU9iamVjdDUiLCJfdGVtcGxhdGVPYmplY3Q2IiwiX3RlbXBsYXRlT2JqZWN0NyIsIl90ZW1wbGF0ZU9iamVjdDgiLCJfdGVtcGxhdGVPYmplY3Q5IiwiX3RlbXBsYXRlT2JqZWN0MTAiLCJfdGVtcGxhdGVPYmplY3QxMSIsIl90ZW1wbGF0ZU9iamVjdDEyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIlN0eWxlZFNxbFBhbmVsIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJzaWRlUGFuZWxCZyIsIlN0eWxlZFNxbEFjdGlvbnMiLCJTdHlsZWRTcWxFZGl0b3IiLCJTdHlsZWRFZGl0b3JQYW5lbCIsIlN0eWxlZERhdGFQYW5lbCIsIlN0eWxlZEVkaXRvciIsInByb3BzIiwiaXNSdW5uaW5nIiwiU3R5bGVkUmVzdWx0QWN0aW9ucyIsIlN0eWxlZFJlc2l6ZUhhbmRsZSIsIlBhbmVsUmVzaXplSGFuZGxlIiwicGFuZWxCb3JkZXJDb2xvciIsIlN0eWxlZFZlcnRpY2FsUmVzaXplSGFuZGxlIiwiU3R5bGVkTG9hZGluZ0NvbnRhaW5lciIsIlN0eWxlZEVycm9yQ29udGFpbmVyIiwicHJlIiwiU3R5bGVkRmlsZURyb3BBcmVhIiwiRmlsZURyb3AiLCJkcmFnT3ZlciIsInRoZW1lIiwic3VidGV4dENvbG9yTFQiLCJTQ0hFTUFfUEFORUxfU1RZTEUiLCJvdmVyZmxvdyIsIlNxbFBhbmVsIiwiZXhwb3J0cyIsIl9yZWYiLCJfcmVmJGluaXRpYWxTcWwiLCJpbml0aWFsU3FsIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJwYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInNlYXJjaCIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzcWwiLCJzZXRTcWwiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImRyb3BwZWRGaWxlIiwic2V0RHJvcHBlZEZpbGUiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImRyYWdTdGF0ZSIsInNldERyYWdTdGF0ZSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwicmVzdWx0Iiwic2V0UmVzdWx0IiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTEwIiwic2NoZW1hVXBkYXRlVHJpZ2dlciIsInNldFNjaGVtYVVwZGF0ZVRyaWdnZXIiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwiZXJyb3IiLCJzZXRFcnJvciIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJjb3VudGVyIiwic2V0Q291bnRlciIsIl91c2VTdGF0ZTE1IiwiX3VzZVN0YXRlMTYiLCJ0YWJsZVNjaGVtYSIsInNldFRhYmxlU2NoZW1hIiwiX3VzZVN0YXRlMTciLCJfdXNlU3RhdGUxOCIsInNldElzUnVubmluZyIsIl91c2VTdGF0ZTE5IiwiaXNBcHBsZURldmljZSIsIl91c2VTdGF0ZTIwIiwiaXNNYWMiLCJkaXNwYXRjaCIsInVzZURpc3BhdGNoIiwiZHJvcHBlZEZpbGVBcmVhUmVmIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiY3VycmVudFVybCIsIlVSTCIsImhyZWYiLCJzZWFyY2hQYXJhbXMiLCJoaXN0b3J5IiwicmVwbGFjZVN0YXRlIiwicnVuUXVlcnkiLCJ1c2VDYWxsYmFjayIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiYWRqdXN0ZWRRdWVyeSIsImRiIiwiY29ubmVjdGlvbiIsInRlbXBUYWJsZU5hbWUiLCJzcWxTdGF0ZW1lbnRzIiwiYXJyb3dSZXN1bHQiLCJ0YWJsZUR1Y2tEQlR5cGVzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJzdGF0ZW1lbnQiLCJpc0xhc3RRdWVyeSIsImR1Y2tEYkNvbHVtbnMiLCJfYWRqdXN0ZWRRdWVyeSIsIndyYXAiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicHJldiIsInJlbW92ZVNRTENvbW1lbnRzIiwiRXJyb3IiLCJhYnJ1cHQiLCJnZXRBcHBsaWNhdGlvbkNvbmZpZyIsImRhdGFiYXNlIiwiY29ubmVjdCIsInNlbnQiLCJzcGxpdFNxbFN0YXRlbWVudHMiLCJ0MCIsImNoZWNrSXNTZWxlY3RRdWVyeSIsInF1ZXJ5IiwiY29uY2F0IiwiZ2V0RHVja0RCQ29sdW1uVHlwZXMiLCJnZXREdWNrREJDb2x1bW5UeXBlc01hcCIsImNhc3REdWNrREJUeXBlc0ZvcktlcGxlciIsInNldEdlb0Fycm93V0tCRXh0ZW5zaW9uIiwidDEiLCJmaW5pc2giLCJ0YWJsZSIsImNsb3NlIiwidDIiLCJEYXRlIiwibm93Iiwic3RvcCIsIm9uQ2hhbmdlIiwib25BZGRSZXN1bHRUb01hcCIsImtlcGxlckZpZWxkcyIsImFycm93U2NoZW1hVG9GaWVsZHMiLCJkYXRhc2V0VG9BZGQiLCJkYXRhIiwiZmllbGRzIiwicm93cyIsImluZm8iLCJpZCIsImdlbmVyYXRlSGFzaElkIiwibGFiZWwiLCJmb3JtYXQiLCJhZGREYXRhVG9NYXAiLCJkYXRhc2V0cyIsImlzVmFsaWRGaWxlVHlwZSIsImZpbGVuYW1lIiwiZmlsZUV4dCIsIlNVUFBPUlRFRF9EVUNLREJfRFJPUF9FWFRFTlNJT05TIiwiZmluZCIsImV4dCIsImVuZHNXaXRoIiwiQm9vbGVhbiIsImNyZWF0ZVRhYmxlRnJvbURyb3BwZWRGaWxlIiwiX3JlZjMiLCJfY2FsbGVlMiIsIl9lcnJvciIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInRhYmxlRnJvbUZpbGUiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwiaGFuZGxlRmlsZUlucHV0IiwiZmlsZUxpc3QiLCJldmVudCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiZmlsZXMiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiZmlsdGVyIiwiZGlzYWJsZUV4dGVuc2lvbkZpbHRlciIsImZpbGVzVG9Mb2FkIiwiZXJyb3JGaWxlcyIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJmaWxlIiwicHVzaCIsImVyciIsImpvaW4iLCJjcmVhdGVFbGVtZW50IiwiUGFuZWxHcm91cCIsImRpcmVjdGlvbiIsIlBhbmVsIiwiZGVmYXVsdFNpemUiLCJtaW5TaXplIiwic3R5bGUiLCJjbGFzc05hbWUiLCJvbkRyYWdPdmVyIiwib25EcmFnTGVhdmUiLCJmcmFtZSIsImN1cnJlbnQiLCJkb2N1bWVudCIsIm9uRHJvcCIsIlNjaGVtYVBhbmVsIiwiSWNvbkJ1dHRvbiIsIm9uQ2xpY2siLCJkaXNhYmxlZCIsIkljb25zIiwiUGxheSIsImhlaWdodCIsIlRvb2x0aXAiLCJwbGFjZSIsImVmZmVjdCIsImlzUmVhZE9ubHkiLCJvblJ1blF1ZXJ5IiwiY29kZSIsIkxvYWRpbmdTcGlubmVyIiwibWVzc2FnZSIsIkJ1dHRvbiIsInNlY29uZGFyeSIsIm51bVJvd3MiLCJQcmV2aWV3RGF0YVBhbmVsIiwiZGF0YVRhYmxlU3R5bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9zcWwtcGFuZWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCAqIGFzIGFycm93IGZyb20gJ2FwYWNoZS1hcnJvdyc7XG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3VzZURpc3BhdGNofSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7UGFuZWwsIFBhbmVsR3JvdXAsIFBhbmVsUmVzaXplSGFuZGxlfSBmcm9tICdyZWFjdC1yZXNpemFibGUtcGFuZWxzJztcblxuaW1wb3J0IHthZGREYXRhVG9NYXB9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge2dlbmVyYXRlSGFzaElkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge0J1dHRvbiwgRmlsZURyb3AsIEljb25CdXR0b24sIEljb25zLCBMb2FkaW5nU3Bpbm5lciwgVG9vbHRpcH0gZnJvbSAnQGtlcGxlci5nbC9jb21wb25lbnRzJztcbmltcG9ydCB7YXJyb3dTY2hlbWFUb0ZpZWxkc30gZnJvbSAnQGtlcGxlci5nbC9wcm9jZXNzb3JzJztcbmltcG9ydCB7c2lkZVBhbmVsQmcsIHBhbmVsQm9yZGVyQ29sb3J9IGZyb20gJ0BrZXBsZXIuZ2wvc3R5bGVzJztcbmltcG9ydCB7aXNBcHBsZURldmljZSwgZ2V0QXBwbGljYXRpb25Db25maWd9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG5pbXBvcnQgTW9uYWNvRWRpdG9yIGZyb20gJy4vbW9uYWNvLWVkaXRvcic7XG5pbXBvcnQge1NjaGVtYVBhbmVsLCBTY2hlbWFTdWdnZXN0aW9ufSBmcm9tICcuL3NjaGVtYS1wYW5lbCc7XG5pbXBvcnQge1ByZXZpZXdEYXRhUGFuZWwsIFF1ZXJ5UmVzdWx0fSBmcm9tICcuL3ByZXZpZXctZGF0YS1wYW5lbCc7XG5cbmltcG9ydCB7XG4gIGNhc3REdWNrREJUeXBlc0ZvcktlcGxlcixcbiAgZ2V0RHVja0RCQ29sdW1uVHlwZXMsXG4gIGdldER1Y2tEQkNvbHVtblR5cGVzTWFwLFxuICBzZXRHZW9BcnJvd1dLQkV4dGVuc2lvbixcbiAgc3BsaXRTcWxTdGF0ZW1lbnRzLFxuICBjaGVja0lzU2VsZWN0UXVlcnksXG4gIHJlbW92ZVNRTENvbW1lbnRzLFxuICB0YWJsZUZyb21GaWxlLFxuICBTVVBQT1JURURfRFVDS0RCX0RST1BfRVhURU5TSU9OU1xufSBmcm9tICcuLi90YWJsZS9kdWNrZGItdGFibGUtdXRpbHMnO1xuXG5jb25zdCBTdHlsZWRTcWxQYW5lbCA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtzaWRlUGFuZWxCZ307XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgIzMzMztcbmA7XG5cbmNvbnN0IFN0eWxlZFNxbEFjdGlvbnMgPSBzdHlsZWQuZGl2YFxuICBmbGV4OiAwIDAgNTBweDtcbiAgZGlzcGxheTogZmxleDtcbiAgcGFkZGluZy10b3A6IDEycHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMzMzM7XG5gO1xuXG5jb25zdCBTdHlsZWRTcWxFZGl0b3IgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBmbGV4OiAxO1xuICBtaW4td2lkdGg6IDA7IC8vIFByZXZlbnRzIGZsZXggY2hpbGQgZnJvbSBvdmVyZmxvd2luZ1xuICBoZWlnaHQ6IDEwMCU7XG5gO1xuXG5jb25zdCBTdHlsZWRFZGl0b3JQYW5lbCA9IHN0eWxlZC5kaXZgXG4gIGJhY2tncm91bmQtY29sb3I6ICR7c2lkZVBhbmVsQmd9O1xuICBkaXNwbGF5OiBmbGV4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGdhcDogNXB4O1xuICBmbGV4LWdyb3c6IDE7XG5gO1xuXG5jb25zdCBTdHlsZWREYXRhUGFuZWwgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuYDtcblxuY29uc3QgU3R5bGVkRWRpdG9yID0gc3R5bGVkLmRpdjx7aXNSdW5uaW5nOiBib29sZWFufT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmc6IDEycHggMTJweCAxMnB4IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigzMCwgMzAsIDMwKTtcbiAgb3BhY2l0eTogJHtwcm9wcyA9PiAocHJvcHMuaXNSdW5uaW5nID8gMC41IDogMSl9O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtaW4taGVpZ2h0OiAwOyAvLyBQcmV2ZW50cyBmbGV4IGNoaWxkIGZyb20gb3ZlcmZsb3dpbmdcbmA7XG5cbmNvbnN0IFN0eWxlZFJlc3VsdEFjdGlvbnMgPSBzdHlsZWQuZGl2YFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgcGFkZGluZzogMnB4IDEycHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxMnB4O1xuYDtcblxuY29uc3QgU3R5bGVkUmVzaXplSGFuZGxlID0gc3R5bGVkKFBhbmVsUmVzaXplSGFuZGxlKWBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwYW5lbEJvcmRlckNvbG9yfTtcbiAgd2lkdGg6IDRweDtcbiAgY3Vyc29yOiBjb2wtcmVzaXplO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1NTU7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZFZlcnRpY2FsUmVzaXplSGFuZGxlID0gc3R5bGVkKFBhbmVsUmVzaXplSGFuZGxlKWBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwYW5lbEJvcmRlckNvbG9yfTtcbiAgaGVpZ2h0OiA0cHg7XG4gIGN1cnNvcjogcm93LXJlc2l6ZTtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU1O1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRMb2FkaW5nQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGhlaWdodDogMTAwJTtcbmA7XG5cbmNvbnN0IFN0eWxlZEVycm9yQ29udGFpbmVyID0gc3R5bGVkLnByZWBcbiAgcGFkZGluZzogMTJweDtcbiAgY29sb3I6IHJlZDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3NpZGVQYW5lbEJnfTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdzogYXV0bztcbmA7XG5cbmludGVyZmFjZSBTdHlsZWREcmFnUGFuZWxQcm9wcyB7XG4gIGRyYWdPdmVyPzogYm9vbGVhbjtcbn1cblxuY29uc3QgU3R5bGVkRmlsZURyb3BBcmVhID0gc3R5bGVkKEZpbGVEcm9wKTxTdHlsZWREcmFnUGFuZWxQcm9wcz5gXG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XG4gIGJvcmRlcjogMXB4ICR7cHJvcHMgPT4gKHByb3BzLmRyYWdPdmVyID8gJ3NvbGlkJyA6ICdkYXNoZWQnKX1cbiAgICAke3Byb3BzID0+IChwcm9wcy5kcmFnT3ZlciA/IHByb3BzLnRoZW1lLnN1YnRleHRDb2xvckxUIDogJ3RyYW5zcGFyZW50Jyl9O1xuICAuZmlsZS1kcm9wLXRhcmdldCB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG5gO1xuXG50eXBlIFNxbFBhbmVsUHJvcHMgPSB7XG4gIGluaXRpYWxTcWw/OiBzdHJpbmc7XG59O1xuXG5jb25zdCBTQ0hFTUFfUEFORUxfU1RZTEUgPSB7b3ZlcmZsb3c6ICdhdXRvJ307XG5cbmV4cG9ydCBjb25zdCBTcWxQYW5lbDogUmVhY3QuRkM8U3FsUGFuZWxQcm9wcz4gPSAoe2luaXRpYWxTcWwgPSAnJ30pID0+IHtcbiAgY29uc3QgW3NxbCwgc2V0U3FsXSA9IHVzZVN0YXRlKCgpID0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgIHJldHVybiBwYXJhbXMuZ2V0KCdzcWwnKSB8fCBpbml0aWFsU3FsO1xuICB9KTtcbiAgY29uc3QgW2Ryb3BwZWRGaWxlLCBzZXREcm9wcGVkRmlsZV0gPSB1c2VTdGF0ZTxGaWxlIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFtkcmFnU3RhdGUsIHNldERyYWdTdGF0ZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtyZXN1bHQsIHNldFJlc3VsdF0gPSB1c2VTdGF0ZTxudWxsIHwgUXVlcnlSZXN1bHQ+KG51bGwpO1xuICBjb25zdCBbc2NoZW1hVXBkYXRlVHJpZ2dlciwgc2V0U2NoZW1hVXBkYXRlVHJpZ2dlcl0gPSB1c2VTdGF0ZTxudW1iZXI+KDApO1xuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlPEVycm9yIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFtjb3VudGVyLCBzZXRDb3VudGVyXSA9IHVzZVN0YXRlKDApO1xuICBjb25zdCBbdGFibGVTY2hlbWEsIHNldFRhYmxlU2NoZW1hXSA9IHVzZVN0YXRlPFNjaGVtYVN1Z2dlc3Rpb25bXT4oW10pO1xuICBjb25zdCBbaXNSdW5uaW5nLCBzZXRJc1J1bm5pbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbaXNNYWNdID0gdXNlU3RhdGUoKCkgPT4gaXNBcHBsZURldmljZSgpKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIGNvbnN0IGRyb3BwZWRGaWxlQXJlYVJlZiA9IHVzZVJlZihudWxsKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRVcmwgPSBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgICBpZiAoc3FsKSB7XG4gICAgICBjdXJyZW50VXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3NxbCcsIHNxbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRVcmwuc2VhcmNoUGFyYW1zLmRlbGV0ZSgnc3FsJyk7XG4gICAgfVxuICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSwgJycsIGN1cnJlbnRVcmwudG9TdHJpbmcoKSk7XG4gIH0sIFtzcWxdKTtcblxuICBjb25zdCBydW5RdWVyeSA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRJc1J1bm5pbmcodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGFkanVzdGVkUXVlcnkgPSBzcWwgPyByZW1vdmVTUUxDb21tZW50cyhzcWwpIDogbnVsbDtcbiAgICAgIGlmICghYWRqdXN0ZWRRdWVyeSkge1xuICAgICAgICBzZXRFcnJvcihuZXcgRXJyb3IoJ1F1ZXJ5IGlzIGVtcHR5JykpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRiID0gZ2V0QXBwbGljYXRpb25Db25maWcoKS5kYXRhYmFzZTtcbiAgICAgIGlmICghZGIpIHtcbiAgICAgICAgc2V0RXJyb3IobmV3IEVycm9yKCdUaGUgZGF0YWJhc2UgaXMgbm90IGNvbmZpZ3VyZWQgcHJvcGVybHkuJykpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBjb25uZWN0aW9uID0gYXdhaXQgZGIuY29ubmVjdCgpO1xuXG4gICAgICAvLyBUT0RPIGZpbmQgYSBjaGVhcCB3YXkgdG8gZ2V0IER1Y2tEYiB0eXBlcyB3aXRoIGEgc2luZ2xlIHF1ZXJ5IHRvIGEgcmVtb3RlIHJlc291cmNlIC0gdGVtcCB0YWJsZT8gY3RlP1xuICAgICAgY29uc3QgdGVtcFRhYmxlTmFtZSA9ICd0ZW1wX2tlcGxlcmdsX3RhYmxlJztcblxuICAgICAgLy8gcmVtb3ZlIGNvbW1lbnRzXG4gICAgICBjb25zdCBzcWxTdGF0ZW1lbnRzID0gc3BsaXRTcWxTdGF0ZW1lbnRzKGFkanVzdGVkUXVlcnkpO1xuXG4gICAgICBsZXQgYXJyb3dSZXN1bHQ6IGFycm93LlRhYmxlIHwgbnVsbCA9IG51bGw7XG4gICAgICBsZXQgdGFibGVEdWNrREJUeXBlcyA9IHt9O1xuXG4gICAgICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiBzcWxTdGF0ZW1lbnRzKSB7XG4gICAgICAgIGNvbnN0IGlzTGFzdFF1ZXJ5ID0gc3RhdGVtZW50ID09PSBzcWxTdGF0ZW1lbnRzW3NxbFN0YXRlbWVudHMubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmIChpc0xhc3RRdWVyeSAmJiAoYXdhaXQgY2hlY2tJc1NlbGVjdFF1ZXJ5KGNvbm5lY3Rpb24sIHN0YXRlbWVudCkpKSB7XG4gICAgICAgICAgLy8gMSkgY3JlYXRlIHRlbXAgdGFibGUgZnJvbSB0aGUgb3JpZ2luYWwgcXVlcnkuXG4gICAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5xdWVyeShgQ1JFQVRFIE9SIFJFUExBQ0UgVEFCTEUgJyR7dGVtcFRhYmxlTmFtZX0nIEFTICR7c3RhdGVtZW50fWApO1xuXG4gICAgICAgICAgLy8gMikgcXVlcnkgZHVja2RiIHR5cGVzIGFuZCBkZXRlY3QgY2FuZGlkYXRlIGNvbHVtbnMgZm9yIFNUX2FzV0tCIHRyYW5zZm9ybS5cbiAgICAgICAgICBjb25zdCBkdWNrRGJDb2x1bW5zID0gYXdhaXQgZ2V0RHVja0RCQ29sdW1uVHlwZXMoY29ubmVjdGlvbiwgdGVtcFRhYmxlTmFtZSk7XG4gICAgICAgICAgdGFibGVEdWNrREJUeXBlcyA9IGdldER1Y2tEQkNvbHVtblR5cGVzTWFwKGR1Y2tEYkNvbHVtbnMpO1xuXG4gICAgICAgICAgLy8gMykgY2FzdCBHRU9NRVRSWSBjb2x1bW5zIHRvIFdLQiBhbmQgQmlnSW50IHRvIGRvdWJsZS5cbiAgICAgICAgICBjb25zdCBhZGp1c3RlZFF1ZXJ5ID0gY2FzdER1Y2tEQlR5cGVzRm9yS2VwbGVyKHRlbXBUYWJsZU5hbWUsIGR1Y2tEYkNvbHVtbnMpO1xuICAgICAgICAgIGFycm93UmVzdWx0ID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShhZGp1c3RlZFF1ZXJ5KTtcblxuICAgICAgICAgIC8vIDQpIHNldCBnZW9hcnJvdyBleHRlbnNpb24gZm9yIHRoZSBhcnJvdyB0YWJsZSBhcyBEdWNrREIgZG9lc24ndCBzdXBwb3J0IHRoZSBnZW9hcnJvdyBleHRlbnNpb24uXG4gICAgICAgICAgc2V0R2VvQXJyb3dXS0JFeHRlbnNpb24oYXJyb3dSZXN1bHQsIGR1Y2tEYkNvbHVtbnMpO1xuXG4gICAgICAgICAgLy8gNSkgcmVtb3ZlIHRlbXAgdGFibGVcbiAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KGBEUk9QIFRBQkxFICR7dGVtcFRhYmxlTmFtZX07YCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5xdWVyeShzdGF0ZW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFNob3cgcHJldmlldyBvbmx5IGZvciB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0IHF1ZXJ5XG4gICAgICBpZiAoYXJyb3dSZXN1bHQpIHtcbiAgICAgICAgc2V0UmVzdWx0KHt0YWJsZTogYXJyb3dSZXN1bHQsIHRhYmxlRHVja0RCVHlwZXN9KTtcbiAgICAgICAgc2V0RXJyb3IobnVsbCk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IGNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBzZXRFcnJvcihlIGFzIEVycm9yKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0SXNSdW5uaW5nKGZhbHNlKTtcbiAgICB9XG5cbiAgICAvLyBJbmRpY2F0ZSB0aGF0IHRoZXJlIG1heSBiZSBhIHBvc3NpYmxlIGNoYW5nZSBpbiBEdWNrREIuXG4gICAgc2V0U2NoZW1hVXBkYXRlVHJpZ2dlcihEYXRlLm5vdygpKTtcbiAgfSwgW3NxbF0pO1xuXG4gIGNvbnN0IG9uQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgdmFsdWUgPT4ge1xuICAgICAgc2V0U3FsKHZhbHVlKTtcbiAgICB9LFxuICAgIFtzZXRTcWxdXG4gICk7XG5cbiAgY29uc3Qgb25BZGRSZXN1bHRUb01hcCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXJlc3VsdCkgcmV0dXJuO1xuXG4gICAgY29uc3Qga2VwbGVyRmllbGRzID0gYXJyb3dTY2hlbWFUb0ZpZWxkcyhyZXN1bHQudGFibGUsIHJlc3VsdC50YWJsZUR1Y2tEQlR5cGVzKTtcblxuICAgIGNvbnN0IGRhdGFzZXRUb0FkZCA9IHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZmllbGRzOiBrZXBsZXJGaWVsZHMsXG4gICAgICAgIC8vIFRPRE8gdHlwZSBBZGREYXRhVG9NYXBQYXlsb2FkIC0+IHJvd3MgLT4gKyBhcnJvdy5UYWJsZVxuICAgICAgICByb3dzOiByZXN1bHQudGFibGUgYXMgYW55XG4gICAgICB9LFxuICAgICAgaW5mbzoge1xuICAgICAgICBpZDogZ2VuZXJhdGVIYXNoSWQoKSxcbiAgICAgICAgbGFiZWw6IGBxdWVyeV9yZXN1bHQke2NvdW50ZXIgPiAwID8gYF8ke2NvdW50ZXJ9YCA6ICcnfWAsXG4gICAgICAgIGZvcm1hdDogJ2Fycm93J1xuICAgICAgfVxuICAgIH07XG5cbiAgICBkaXNwYXRjaChhZGREYXRhVG9NYXAoe2RhdGFzZXRzOiBbZGF0YXNldFRvQWRkXX0pKTtcbiAgICBzZXRDb3VudGVyKGNvdW50ZXIgKyAxKTtcbiAgfSwgW3Jlc3VsdCwgY291bnRlciwgZGlzcGF0Y2hdKTtcblxuICBjb25zdCBpc1ZhbGlkRmlsZVR5cGUgPSB1c2VDYWxsYmFjayhmaWxlbmFtZSA9PiB7XG4gICAgY29uc3QgZmlsZUV4dCA9IFNVUFBPUlRFRF9EVUNLREJfRFJPUF9FWFRFTlNJT05TLmZpbmQoZXh0ID0+IGZpbGVuYW1lLmVuZHNXaXRoKGV4dCkpO1xuICAgIHJldHVybiBCb29sZWFuKGZpbGVFeHQpO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgY3JlYXRlVGFibGVGcm9tRHJvcHBlZEZpbGUgPSB1c2VDYWxsYmFjayhhc3luYyAoZHJvcHBlZEZpbGU6IEZpbGUgfCBudWxsKSA9PiB7XG4gICAgaWYgKGRyb3BwZWRGaWxlKSB7XG4gICAgICBjb25zdCBlcnJvciA9IGF3YWl0IHRhYmxlRnJvbUZpbGUoZHJvcHBlZEZpbGUpO1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHNldEVycm9yKGVycm9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVycm9yKG51bGwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHNldERyb3BwZWRGaWxlKG51bGwpO1xuICAgIHNldERyYWdTdGF0ZShmYWxzZSk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNyZWF0ZVRhYmxlRnJvbURyb3BwZWRGaWxlKGRyb3BwZWRGaWxlKTtcbiAgfSwgW2Ryb3BwZWRGaWxlLCBjcmVhdGVUYWJsZUZyb21Ecm9wcGVkRmlsZV0pO1xuXG4gIGNvbnN0IGhhbmRsZUZpbGVJbnB1dCA9IHVzZUNhbGxiYWNrKFxuICAgIChmaWxlTGlzdDogRmlsZUxpc3QsIGV2ZW50OiBEcmFnRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlsZXMgPSBbLi4uZmlsZUxpc3RdLmZpbHRlcihCb29sZWFuKTtcblxuICAgICAgY29uc3QgZGlzYWJsZUV4dGVuc2lvbkZpbHRlciA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBmaWxlc1RvTG9hZDogRmlsZVtdID0gW107XG4gICAgICBjb25zdCBlcnJvckZpbGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgIGlmIChkaXNhYmxlRXh0ZW5zaW9uRmlsdGVyIHx8IGlzVmFsaWRGaWxlVHlwZShmaWxlLm5hbWUpKSB7XG4gICAgICAgICAgZmlsZXNUb0xvYWQucHVzaChmaWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlcnJvckZpbGVzLnB1c2goZmlsZS5uYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZmlsZXNUb0xvYWQubGVuZ3RoID4gMCkge1xuICAgICAgICBzZXREcm9wcGVkRmlsZShmaWxlc1RvTG9hZFswXSk7XG4gICAgICB9IGVsc2UgaWYgKGVycm9yRmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBzZXRFcnJvcihuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGZpbGUgZm9ybWF0czogJHtlcnJvckZpbGVzLmpvaW4oJywgJyl9YCkpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2lzVmFsaWRGaWxlVHlwZV1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRTcWxQYW5lbD5cbiAgICAgIDxQYW5lbEdyb3VwIGRpcmVjdGlvbj1cImhvcml6b250YWxcIj5cbiAgICAgICAgPFBhbmVsIGRlZmF1bHRTaXplPXsyMH0gbWluU2l6ZT17MTV9IHN0eWxlPXtTQ0hFTUFfUEFORUxfU1RZTEV9IGNsYXNzTmFtZT1cInNjaGVtYS1wYW5lbFwiPlxuICAgICAgICAgIDxTdHlsZWRGaWxlRHJvcEFyZWFcbiAgICAgICAgICAgIGRyYWdPdmVyPXtkcmFnU3RhdGV9XG4gICAgICAgICAgICBvbkRyYWdPdmVyPXsoKSA9PiBzZXREcmFnU3RhdGUodHJ1ZSl9XG4gICAgICAgICAgICBvbkRyYWdMZWF2ZT17KCkgPT4gc2V0RHJhZ1N0YXRlKGZhbHNlKX1cbiAgICAgICAgICAgIGZyYW1lPXtkcm9wcGVkRmlsZUFyZWFSZWYuY3VycmVudCB8fCBkb2N1bWVudH1cbiAgICAgICAgICAgIG9uRHJvcD17aGFuZGxlRmlsZUlucHV0fVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmlsZS11cGxvYWRlcl9fZmlsZS1kcm9wXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U2NoZW1hUGFuZWxcbiAgICAgICAgICAgICAgc2V0VGFibGVTY2hlbWE9e3NldFRhYmxlU2NoZW1hfVxuICAgICAgICAgICAgICBkcm9wcGVkRmlsZT17ZHJvcHBlZEZpbGV9XG4gICAgICAgICAgICAgIHNjaGVtYVVwZGF0ZVRyaWdnZXI9e3NjaGVtYVVwZGF0ZVRyaWdnZXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3R5bGVkRmlsZURyb3BBcmVhPlxuICAgICAgICA8L1BhbmVsPlxuXG4gICAgICAgIDxTdHlsZWRSZXNpemVIYW5kbGUgLz5cblxuICAgICAgICA8UGFuZWwgbWluU2l6ZT17NDB9PlxuICAgICAgICAgIDxTdHlsZWRTcWxFZGl0b3I+XG4gICAgICAgICAgICA8UGFuZWxHcm91cCBkaXJlY3Rpb249XCJ2ZXJ0aWNhbFwiPlxuICAgICAgICAgICAgICA8UGFuZWwgZGVmYXVsdFNpemU9ezMwfSBjbGFzc05hbWU9XCJlZGl0b3ItcGFuZWxcIj5cbiAgICAgICAgICAgICAgICA8U3R5bGVkRWRpdG9yUGFuZWw+XG4gICAgICAgICAgICAgICAgICA8U3R5bGVkU3FsQWN0aW9ucz5cbiAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRpcFxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZm9yPVwicnVuLXF1ZXJ5LXRvb2x0aXBcIlxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3J1blF1ZXJ5fVxuICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc1J1bm5pbmcgfHwgIXNxbH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxJY29ucy5QbGF5IGhlaWdodD1cIjE4cHhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwIGlkPVwicnVuLXF1ZXJ5LXRvb2x0aXBcIiBwbGFjZT1cInRvcFwiIGVmZmVjdD1cInNvbGlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBSdW4gUXVlcnkgKHtpc01hYyA/ICfijJhFbnRlcicgOiAnQ3RybCtFbnRlcid9IG9yIFNoaWZ0K0VudGVyKVxuICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWRTcWxBY3Rpb25zPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZEVkaXRvciBpc1J1bm5pbmc9e2lzUnVubmluZ30+XG4gICAgICAgICAgICAgICAgICAgIDxNb25hY29FZGl0b3JcbiAgICAgICAgICAgICAgICAgICAgICBpc1JlYWRPbmx5PXtpc1J1bm5pbmd9XG4gICAgICAgICAgICAgICAgICAgICAgb25SdW5RdWVyeT17cnVuUXVlcnl9XG4gICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYmxlU2NoZW1hPXt0YWJsZVNjaGVtYX1cbiAgICAgICAgICAgICAgICAgICAgICBjb2RlPXtzcWx9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZEVkaXRvcj5cbiAgICAgICAgICAgICAgICA8L1N0eWxlZEVkaXRvclBhbmVsPlxuICAgICAgICAgICAgICA8L1BhbmVsPlxuXG4gICAgICAgICAgICAgIDxTdHlsZWRWZXJ0aWNhbFJlc2l6ZUhhbmRsZSAvPlxuICAgICAgICAgICAgICA8UGFuZWwgY2xhc3NOYW1lPVwicHJldmlldy1wYW5lbFwiPlxuICAgICAgICAgICAgICAgIHtpc1J1bm5pbmcgPyAoXG4gICAgICAgICAgICAgICAgICA8U3R5bGVkTG9hZGluZ0NvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZExvYWRpbmdDb250YWluZXI+XG4gICAgICAgICAgICAgICAgKSA6IGVycm9yID8gKFxuICAgICAgICAgICAgICAgICAgPFN0eWxlZEVycm9yQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PntlcnJvci5tZXNzYWdlfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWRFcnJvckNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICApIDogcmVzdWx0ID8gKFxuICAgICAgICAgICAgICAgICAgPFN0eWxlZERhdGFQYW5lbD5cbiAgICAgICAgICAgICAgICAgICAgPFN0eWxlZFJlc3VsdEFjdGlvbnM+XG4gICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBzZWNvbmRhcnkgb25DbGljaz17b25BZGRSZXN1bHRUb01hcH0+XG4gICAgICAgICAgICAgICAgICAgICAgICBBZGQgdG8gTWFwXG4gICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj57cmVzdWx0LnRhYmxlLm51bVJvd3N9IHJvd3M8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRSZXN1bHRBY3Rpb25zPlxuICAgICAgICAgICAgICAgICAgICA8UHJldmlld0RhdGFQYW5lbFxuICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD17cmVzdWx0fVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFUYWJsZVN0eWxlPXt7fX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkFkZFJlc3VsdFRvTWFwPXtvbkFkZFJlc3VsdFRvTWFwfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWREYXRhUGFuZWw+XG4gICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDwvUGFuZWw+XG4gICAgICAgICAgICA8L1BhbmVsR3JvdXA+XG4gICAgICAgICAgPC9TdHlsZWRTcWxFZGl0b3I+XG4gICAgICAgIDwvUGFuZWw+XG4gICAgICA8L1BhbmVsR3JvdXA+XG4gICAgPC9TdHlsZWRTcWxQYW5lbD5cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFJQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxXQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUkscUJBQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLFFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFlBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFdBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLFdBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLE9BQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLE1BQUEsR0FBQVYsT0FBQTtBQUVBLElBQUFXLGFBQUEsR0FBQVIsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFZLFlBQUEsR0FBQVosT0FBQTtBQUNBLElBQUFhLGlCQUFBLEdBQUFiLE9BQUE7QUFFQSxJ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RUFBTyxHQUFDLGFBQzlDLEVBQUNwSSxLQUFLLEdBQUcsUUFBUSxHQUFHLFlBQVksRUFBQyxrQkFDckMsQ0FDQyxDQUNJLENBQUMsZUFDbkJySixNQUFBLFlBQUFrUSxhQUFBLENBQUNqTCxZQUFZO0lBQUNFLFNBQVMsRUFBRUE7RUFBVSxnQkFDakNuRixNQUFBLFlBQUFrUSxhQUFBLENBQUNyUCxhQUFBLFdBQVk7SUFDWDZRLFVBQVUsRUFBRXZNLFNBQVU7SUFDdEJ3TSxVQUFVLEVBQUUxSCxRQUFTO0lBQ3JCK0MsUUFBUSxFQUFFQSxRQUFTO0lBQ25CbkUsV0FBVyxFQUFFQSxXQUFZO0lBQ3pCK0ksSUFBSSxFQUFFM0s7RUFBSSxDQUNYLENBQ1csQ0FDRyxDQUNkLENBQUMsZUFFUmpILE1BQUEsWUFBQWtRLGFBQUEsQ0FBQzFLLDBCQUEwQixNQUFFLENBQUMsZUFDOUJ4RixNQUFBLFlBQUFrUSxhQUFBLENBQUM1UCxxQkFBQSxDQUFBK1AsS0FBSztJQUFDSSxTQUFTLEVBQUM7RUFBZSxHQUM3QnRMLFNBQVMsZ0JBQ1JuRixNQUFBLFlBQUFrUSxhQUFBLENBQUN6SyxzQkFBc0IscUJBQ3JCekYsTUFBQSxZQUFBa1EsYUFBQSxDQUFDelAsV0FBQSxDQUFBb1IsY0FBYyxNQUFFLENBQ0ssQ0FBQyxHQUN2QnhKLEtBQUssZ0JBQ1BySSxNQUFBLFlBQUFrUSxhQUFBLENBQUN4SyxvQkFBb0IscUJBQ25CMUYsTUFBQSxZQUFBa1EsYUFBQSxjQUFNN0gsS0FBSyxDQUFDeUosT0FBYSxDQUNMLENBQUMsR0FDckJqSyxNQUFNLGdCQUNSN0gsTUFBQSxZQUFBa1EsYUFBQSxDQUFDbEwsZUFBZSxxQkFDZGhGLE1BQUEsWUFBQWtRLGFBQUEsQ0FBQzlLLG1CQUFtQixxQkFDbEJwRixNQUFBLFlBQUFrUSxhQUFBLENBQUN6UCxXQUFBLENBQUFzUixNQUFNO0lBQUNDLFNBQVM7SUFBQ2QsT0FBTyxFQUFFakU7RUFBaUIsR0FBQyxZQUVyQyxDQUFDLGVBQ1RqTixNQUFBLFlBQUFrUSxhQUFBLGNBQU1ySSxNQUFNLENBQUM2RSxLQUFLLENBQUN1RixPQUFPLEVBQUMsT0FBVSxDQUNsQixDQUFDLGVBQ3RCalMsTUFBQSxZQUFBa1EsYUFBQSxDQUFDblAsaUJBQUEsQ0FBQW1SLGdCQUFnQjtJQUNmckssTUFBTSxFQUFFQSxNQUFPO0lBQ2ZzSyxjQUFjLEVBQUUsQ0FBQyxDQUFFO0lBQ25CbEYsZ0JBQWdCLEVBQUVBO0VBQWlCLENBQ3BDLENBQ2MsQ0FBQyxHQUNoQixJQUNDLENBQ0csQ0FDRyxDQUNaLENBQ0csQ0FDRSxDQUFDO0FBRXJCLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -22,18 +22,17 @@ export declare function getDuckDBColumnTypes(connection: DatabaseConnection, tab
|
|
|
22
22
|
export declare function getDuckDBColumnTypesMap(columns: DuckDBColumnDesc[]): Record<string, string>;
|
|
23
23
|
/**
|
|
24
24
|
* Constructs an SQL query to select all columns from a given table,
|
|
25
|
-
* converting specified columns to Well-Known Binary (WKB) format using ST_AsWKB
|
|
25
|
+
* converting specified columns to Well-Known Binary (WKB) format using ST_AsWKB,
|
|
26
|
+
* and casting BIGINT columns to DOUBLE if specified.
|
|
26
27
|
* @param tableName The name of the table from which to select data.
|
|
27
|
-
* @param
|
|
28
|
+
* @param columns An array of column descriptors, each with a type and name.
|
|
29
|
+
* @param options Optional parameters to control the conversion behavior.
|
|
28
30
|
* @returns The constructed SQL query.
|
|
29
31
|
*/
|
|
30
|
-
export declare function
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
* @returns An array of column names that are of type GEOMETRY.
|
|
35
|
-
*/
|
|
36
|
-
export declare function getGeometryColumns(columns: DuckDBColumnDesc[]): string[];
|
|
32
|
+
export declare function castDuckDBTypesForKepler(tableName: string, columns: DuckDBColumnDesc[], options?: {
|
|
33
|
+
geometryToWKB: boolean;
|
|
34
|
+
bigIntToDouble: boolean;
|
|
35
|
+
}): string;
|
|
37
36
|
/**
|
|
38
37
|
* Sets the GeoArrow WKB extension metadata for columns of type GEOMETRY in an Arrow table.
|
|
39
38
|
* @param table The Apache Arrow table whose schema fields will be modified.
|
|
@@ -6,12 +6,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.SUPPORTED_DUCKDB_DROP_EXTENSIONS = void 0;
|
|
9
|
+
exports.castDuckDBTypesForKepler = castDuckDBTypesForKepler;
|
|
9
10
|
exports.checkIsSelectQuery = checkIsSelectQuery;
|
|
10
|
-
exports.constructST_asWKBQuery = constructST_asWKBQuery;
|
|
11
11
|
exports.dropTableIfExists = void 0;
|
|
12
12
|
exports.getDuckDBColumnTypes = getDuckDBColumnTypes;
|
|
13
13
|
exports.getDuckDBColumnTypesMap = getDuckDBColumnTypesMap;
|
|
14
|
-
exports.getGeometryColumns = getGeometryColumns;
|
|
15
14
|
exports.isGeoArrowLineString = isGeoArrowLineString;
|
|
16
15
|
exports.isGeoArrowMultiLineString = isGeoArrowMultiLineString;
|
|
17
16
|
exports.isGeoArrowMultiPoint = isGeoArrowMultiPoint;
|
|
@@ -97,30 +96,29 @@ function getDuckDBColumnTypesMap(columns) {
|
|
|
97
96
|
|
|
98
97
|
/**
|
|
99
98
|
* Constructs an SQL query to select all columns from a given table,
|
|
100
|
-
* converting specified columns to Well-Known Binary (WKB) format using ST_AsWKB
|
|
99
|
+
* converting specified columns to Well-Known Binary (WKB) format using ST_AsWKB,
|
|
100
|
+
* and casting BIGINT columns to DOUBLE if specified.
|
|
101
101
|
* @param tableName The name of the table from which to select data.
|
|
102
|
-
* @param
|
|
102
|
+
* @param columns An array of column descriptors, each with a type and name.
|
|
103
|
+
* @param options Optional parameters to control the conversion behavior.
|
|
103
104
|
* @returns The constructed SQL query.
|
|
104
105
|
*/
|
|
105
|
-
function
|
|
106
|
-
var
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
return columns.filter(function (column) {
|
|
120
|
-
return column.type === 'GEOMETRY';
|
|
121
|
-
}).map(function (column) {
|
|
122
|
-
return column.name;
|
|
106
|
+
function castDuckDBTypesForKepler(tableName, columns) {
|
|
107
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
|
|
108
|
+
geometryToWKB: true,
|
|
109
|
+
bigIntToDouble: true
|
|
110
|
+
};
|
|
111
|
+
var modifiedColumns = columns.map(function (column) {
|
|
112
|
+
var name = column.name,
|
|
113
|
+
type = column.type;
|
|
114
|
+
if (type === 'GEOMETRY' && options.geometryToWKB) {
|
|
115
|
+
return "ST_AsWKB(".concat(name, ") as ").concat(name);
|
|
116
|
+
} else if (type === 'BIGINT' && options.bigIntToDouble) {
|
|
117
|
+
return "CAST(".concat(name, " AS DOUBLE) as ").concat(name);
|
|
118
|
+
}
|
|
119
|
+
return name;
|
|
123
120
|
});
|
|
121
|
+
return "SELECT ".concat(modifiedColumns.join(', '), " FROM '").concat(tableName, "'");
|
|
124
122
|
}
|
|
125
123
|
|
|
126
124
|
/**
|
|
@@ -604,4 +602,4 @@ function sanitizeDuckDBTableName(fileName) {
|
|
|
604
602
|
}
|
|
605
603
|
return name || 'default_table';
|
|
606
604
|
}
|
|
607
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl90eXBlIiwiX2R1Y2tkYldhc20iLCJfY29uc3RhbnRzIiwiX3V0aWxzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiU1VQUE9SVEVEX0RVQ0tEQl9EUk9QX0VYVEVOU0lPTlMiLCJleHBvcnRzIiwiZ2V0RHVja0RCQ29sdW1uVHlwZXMiLCJfeCIsIl94MiIsIl9nZXREdWNrREJDb2x1bW5UeXBlcyIsImFwcGx5IiwiYXJndW1lbnRzIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUyIiwiY29ubmVjdGlvbiIsInRhYmxlTmFtZSIsInJlc0Rlc2NyaWJlIiwiZHVja0RiVHlwZXMiLCJudW1Sb3dzIiwiX3Jlc0Rlc2NyaWJlJGdldENoaWxkIiwiX3Jlc0Rlc2NyaWJlJGdldENoaWxkMiIsImNvbHVtbk5hbWUiLCJjb2x1bW5UeXBlIiwid3JhcCIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInByZXYiLCJuZXh0IiwicXVlcnkiLCJjb25jYXQiLCJzZW50IiwiZ2V0Q2hpbGRBdCIsInB1c2giLCJuYW1lIiwidHlwZSIsImFicnVwdCIsInN0b3AiLCJnZXREdWNrREJDb2x1bW5UeXBlc01hcCIsImNvbHVtbnMiLCJyZWR1Y2UiLCJhY2MiLCJ2YWx1ZSIsImNvbnN0cnVjdFNUX2FzV0tCUXVlcnkiLCJjb2x1bW5zVG9Db252ZXJ0VG9XS0IiLCJleGNsdWRlIiwibGVuZ3RoIiwiam9pbiIsImFzV0tCIiwibWFwIiwiY29sdW1uIiwiZ2V0R2VvbWV0cnlDb2x1bW5zIiwiZmlsdGVyIiwic2V0R2VvQXJyb3dXS0JFeHRlbnNpb24iLCJ0YWJsZSIsInNjaGVtYSIsImZpZWxkcyIsImZvckVhY2giLCJmaWVsZCIsImluZm8iLCJmaW5kIiwibWV0YWRhdGEiLCJHRU9BUlJPV19NRVRBREFUQV9LRVkiLCJHRU9BUlJPV19FWFRFTlNJT05TIiwiV0tCIiwicmVzdG9yZUFycm93VGFibGUiLCJhcnJvd1NjaGVtYSIsImNyZWFPcHRzIiwiaW5kZXgiLCJUYWJsZSIsInJlbW92ZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyIsInJlbW92ZWRNZXRhZGF0YSIsImV4dGVuc2lvbiIsInN0YXJ0c1dpdGgiLCJyZXN0b3JlVW5zdXBwb3J0ZWRFeHRlbnNpb25zIiwicmVtb3ZlZEV4dGVuc2lvbnMiLCJpc0dlb0Fycm93UG9pbnQiLCJEYXRhVHlwZSIsImlzRml4ZWRTaXplTGlzdCIsImluY2x1ZGVzIiwibGlzdFNpemUiLCJpc0Zsb2F0IiwiY2hpbGRyZW4iLCJpc0dlb0Fycm93TGluZVN0cmluZyIsImlzTGlzdCIsImlzR2VvQXJyb3dQb2x5Z29uIiwiaXNHZW9BcnJvd011bHRpUG9pbnQiLCJpc0dlb0Fycm93TXVsdGlMaW5lU3RyaW5nIiwiaXNHZW9BcnJvd011bHRpUG9seWdvbiIsImNoZWNrSXNTZWxlY3RRdWVyeSIsIl94MyIsIl94NCIsIl9jaGVja0lzU2VsZWN0UXVlcnkiLCJfY2FsbGVlMyIsInJlc3VsdCIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsInQwIiwic3BsaXRTcWxTdGF0ZW1lbnRzIiwiaW5wdXQiLCJxdWVyaWVzIiwiY3VycmVudFF1ZXJ5IiwiaW5TaW5nbGVRdW90ZSIsImluRG91YmxlUXVvdGUiLCJpbkxpbmVDb21tZW50IiwiaW5CbG9ja0NvbW1lbnQiLCJjaGFyIiwidHJpbW1lZCIsInRyaW0iLCJyZW1vdmVTUUxDb21tZW50cyIsInNxbCIsInJlcGxhY2UiLCJkcm9wVGFibGVJZkV4aXN0cyIsIl9yZWYiLCJfY2FsbGVlIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsImNvbnNvbGUiLCJlcnJvciIsIl94NSIsIl94NiIsInRhYmxlRnJvbUZpbGUiLCJfeDciLCJfdGFibGVGcm9tRmlsZSIsIl9jYWxsZWU0IiwiZmlsZSIsImZpbGVFeHQiLCJkYiIsImMiLCJzb3VyY2VOYW1lIiwiYXJyYXlCdWZmZXIiLCJ1aW50OEFycmF5IiwiYXJyb3dUYWJsZSIsIm1lc3NhZ2UiLCJfY2FsbGVlNCQiLCJfY29udGV4dDQiLCJFcnJvciIsImV4dCIsImVuZHNXaXRoIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJkYXRhYmFzZSIsImNvbm5lY3QiLCJzYW5pdGl6ZUR1Y2tEQlRhYmxlTmFtZSIsIlVpbnQ4QXJyYXkiLCJ0YWJsZUZyb21JUEMiLCJpbnNlcnRBcnJvd1RhYmxlIiwicmVnaXN0ZXJGaWxlSGFuZGxlIiwiRHVja0RCRGF0YVByb3RvY29sIiwiQlJPV1NFUl9GSUxFUkVBREVSIiwiY2xvc2UiLCJmaWxlTmFtZSIsInRlc3QiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFibGUvZHVja2RiLXRhYmxlLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbi8vIGxvYWRlcnMuZ2xcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCAoYykgdmlzLmdsIGNvbnRyaWJ1dG9yc1xuXG4vLyBDb3BpZWQgZnJvbSBsb2FkZXJzLmdsL2dlb2Fycm93XG5cbi8vIFRPRE86IFJlbW92ZSBpc0dlb0Fycm93KiBvbmNlIEtlcGxlci5nbCBpcyB1cGdyYWRlZCB0byBsb2FkZXJzLmdsIDQuNCtcblxuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcbmltcG9ydCB7RGF0YVR5cGV9IGZyb20gJ2FwYWNoZS1hcnJvdy90eXBlJztcbmltcG9ydCB7RHVja0RCRGF0YVByb3RvY29sfSBmcm9tICdAZHVja2RiL2R1Y2tkYi13YXNtJztcblxuaW1wb3J0IHtHRU9BUlJPV19FWFRFTlNJT05TLCBHRU9BUlJPV19NRVRBREFUQV9LRVl9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7UHJvdG9EYXRhc2V0RmllbGR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtEYXRhYmFzZUNvbm5lY3Rpb24sIGdldEFwcGxpY2F0aW9uQ29uZmlnfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9EVUNLREJfRFJPUF9FWFRFTlNJT05TID0gWydhcnJvdycsICdjc3YnLCAnZ2VvanNvbicsICdqc29uJywgJ3BhcnF1ZXQnXTtcblxuZXhwb3J0IHR5cGUgRHVja0RCQ29sdW1uRGVzYyA9IHtuYW1lOiBzdHJpbmc7IHR5cGU6IHN0cmluZ307XG5cbi8qKlxuICogUXVlcmllcyBhIER1Y2tEQiB0YWJsZSBmb3IgdGhlIHNjaGVtYSBkZXNjcmlwdGlvbi5cbiAqIEBwYXJhbSBjb25uZWN0aW9uIEFuIGFjdGl2ZSBEdWNrREIgY29ubmVjdGlvbi5cbiAqIEBwYXJhbSB0YWJsZU5hbWUgQSBuYW1lIG9mIER1Y2tEQiB0YWJsZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGNvbHVtbiBuYW1lcyBhbmQgRHVja0RCIHR5cGVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RHVja0RCQ29sdW1uVHlwZXMoXG4gIGNvbm5lY3Rpb246IERhdGFiYXNlQ29ubmVjdGlvbixcbiAgdGFibGVOYW1lOiBzdHJpbmdcbik6IFByb21pc2U8RHVja0RCQ29sdW1uRGVzY1tdPiB7XG4gIGNvbnN0IHJlc0Rlc2NyaWJlID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShgREVTQ1JJQkUgXCIke3RhYmxlTmFtZX1cImApO1xuXG4gIGNvbnN0IGR1Y2tEYlR5cGVzOiBEdWNrREJDb2x1bW5EZXNjW10gPSBbXTtcbiAgY29uc3QgbnVtUm93cyA9IHJlc0Rlc2NyaWJlLm51bVJvd3M7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtUm93czsgKytpKSB7XG4gICAgY29uc3QgY29sdW1uTmFtZSA9IHJlc0Rlc2NyaWJlLmdldENoaWxkQXQoMCk/LmdldChpKTtcbiAgICBjb25zdCBjb2x1bW5UeXBlID0gcmVzRGVzY3JpYmUuZ2V0Q2hpbGRBdCgxKT8uZ2V0KGkpO1xuXG4gICAgZHVja0RiVHlwZXMucHVzaCh7XG4gICAgICBuYW1lOiBjb2x1bW5OYW1lLFxuICAgICAgdHlwZTogY29sdW1uVHlwZVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGR1Y2tEYlR5cGVzO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIG1hcHBpbmcgb2YgY29sdW1uIG5hbWVzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgRHVja0RCIGRhdGEgdHlwZXMuXG4gKiBAcGFyYW0gY29sdW1ucyBBbiBhcnJheSBvZiBjb2x1bW4gZGVzY3JpcHRpb25zIGZyb20gRHVja0RCLiBDaGVjayBnZXREdWNrREJDb2x1bW5UeXBlcy5cbiAqIEByZXR1cm5zIEEgcmVjb3JkIHdoZXJlIGtleXMgYXJlIGNvbHVtbiBuYW1lcyBhbmQgdmFsdWVzIGFyZSB0aGVpciBkYXRhIHR5cGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RHVja0RCQ29sdW1uVHlwZXNNYXAoY29sdW1uczogRHVja0RCQ29sdW1uRGVzY1tdKSB7XG4gIHJldHVybiBjb2x1bW5zLnJlZHVjZSgoYWNjLCB2YWx1ZSkgPT4ge1xuICAgIGFjY1t2YWx1ZS5uYW1lXSA9IHZhbHVlLnR5cGU7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPik7XG59XG5cbi8qKlxuICogQ29uc3RydWN0cyBhbiBTUUwgcXVlcnkgdG8gc2VsZWN0IGFsbCBjb2x1bW5zIGZyb20gYSBnaXZlbiB0YWJsZSxcbiAqIGNvbnZlcnRpbmcgc3BlY2lmaWVkIGNvbHVtbnMgdG8gV2VsbC1Lbm93biBCaW5hcnkgKFdLQikgZm9ybWF0IHVzaW5nIFNUX0FzV0tCLlxuICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgZnJvbSB3aGljaCB0byBzZWxlY3QgZGF0YS5cbiAqIEBwYXJhbSBjb2x1bW5zVG9Db252ZXJ0VG9XS0IgQW4gYXJyYXkgb2YgY29sdW1uIG5hbWVzIHRoYXQgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBXS0IgZm9ybWF0LlxuICogQHJldHVybnMgVGhlIGNvbnN0cnVjdGVkIFNRTCBxdWVyeS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdFNUX2FzV0tCUXVlcnkodGFibGVOYW1lOiBzdHJpbmcsIGNvbHVtbnNUb0NvbnZlcnRUb1dLQjogc3RyaW5nW10pOiBzdHJpbmcge1xuICBjb25zdCBleGNsdWRlID1cbiAgICBjb2x1bW5zVG9Db252ZXJ0VG9XS0IubGVuZ3RoID4gMCA/IGBFWENMVURFICR7Y29sdW1uc1RvQ29udmVydFRvV0tCLmpvaW4oJywgJyl9YCA6ICcnO1xuICBjb25zdCBhc1dLQiA9XG4gICAgY29sdW1uc1RvQ29udmVydFRvV0tCLmxlbmd0aCA+IDBcbiAgICAgID8gYCwgJHtjb2x1bW5zVG9Db252ZXJ0VG9XS0IubWFwKGNvbHVtbiA9PiBgU1RfQXNXS0IoJHtjb2x1bW59KSBhcyAke2NvbHVtbn1gKS5qb2luKCcsICcpfWBcbiAgICAgIDogJyc7XG4gIHJldHVybiBgU0VMRUNUICogJHtleGNsdWRlfSAke2FzV0tCfSBGUk9NICcke3RhYmxlTmFtZX0nYDtcbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgbmFtZXMgb2YgY29sdW1ucyB0aGF0IGhhdmUgYSBHRU9NRVRSWSB0eXBlLlxuICogQHBhcmFtIGNvbHVtbnMgQW4gYXJyYXkgb2YgY29sdW1uIGRlc2NyaXB0b3JzIGZyb20gYSBEdWNrREIgdGFibGUuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBjb2x1bW4gbmFtZXMgdGhhdCBhcmUgb2YgdHlwZSBHRU9NRVRSWS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdlb21ldHJ5Q29sdW1ucyhjb2x1bW5zOiBEdWNrREJDb2x1bW5EZXNjW10pOiBzdHJpbmdbXSB7XG4gIHJldHVybiBjb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnR5cGUgPT09ICdHRU9NRVRSWScpLm1hcChjb2x1bW4gPT4gY29sdW1uLm5hbWUpO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIEdlb0Fycm93IFdLQiBleHRlbnNpb24gbWV0YWRhdGEgZm9yIGNvbHVtbnMgb2YgdHlwZSBHRU9NRVRSWSBpbiBhbiBBcnJvdyB0YWJsZS5cbiAqIEBwYXJhbSB0YWJsZSBUaGUgQXBhY2hlIEFycm93IHRhYmxlIHdob3NlIHNjaGVtYSBmaWVsZHMgd2lsbCBiZSBtb2RpZmllZC5cbiAqIEBwYXJhbSBjb2x1bW5zIEFuIGFycmF5IG9mIGNvbHVtbiBkZXNjcmlwdG9ycyBmcm9tIGEgRHVja0RCIHRhYmxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0R2VvQXJyb3dXS0JFeHRlbnNpb24odGFibGU6IGFycm93LlRhYmxlLCBjb2x1bW5zOiBEdWNrREJDb2x1bW5EZXNjW10pIHtcbiAgdGFibGUuc2NoZW1hLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICBjb25zdCBpbmZvID0gY29sdW1ucy5maW5kKHQgPT4gdC5uYW1lID09PSBmaWVsZC5uYW1lKTtcbiAgICBpZiAoaW5mbz8udHlwZSA9PT0gJ0dFT01FVFJZJykge1xuICAgICAgZmllbGQubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgR0VPQVJST1dfRVhURU5TSU9OUy5XS0IpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJvdyB0YWJsZSBmcm9tIGFuIGFycmF5IG9mIGFycm93IHZlY3RvcnMgYW5kIGZpZWxkcy5cbiAqIEBwYXJhbSBjb2x1bW5zIEFuIGFycmF5IG9mIGFycm93IHZlY3RvcnMuXG4gKiBAcGFyYW0gZmllbGRzIEFuIGFycmF5IG9mIGZpZWxkcyBwZXIgYXJyb3cgdmVjdG9yLlxuICogQHBhcmFtIGFycm93U2NoZW1hIE9wdGlvbmFsIGFycm93IHRhYmxlIHNjaGVtYSB3aGVuIGF2YWlsYWJsZS5cbiAqIEByZXR1cm5zIEFuIGFycm93IHRhYmxlLlxuICovXG5leHBvcnQgY29uc3QgcmVzdG9yZUFycm93VGFibGUgPSAoXG4gIGNvbHVtbnM6IGFycm93LlZlY3RvcltdLFxuICBmaWVsZHM6IFByb3RvRGF0YXNldEZpZWxkW10sXG4gIGFycm93U2NoZW1hPzogYXJyb3cuU2NoZW1hXG4pID0+IHtcbiAgY29uc3QgY3JlYU9wdHMgPSB7fTtcbiAgZmllbGRzLm1hcCgoZmllbGQsIGluZGV4KSA9PiB7XG4gICAgY3JlYU9wdHNbZmllbGQubmFtZV0gPSBjb2x1bW5zW2luZGV4XTtcbiAgfSk7XG5cbiAgcmV0dXJuIGFycm93U2NoZW1hID8gbmV3IGFycm93LlRhYmxlKGFycm93U2NoZW1hLCBjcmVhT3B0cykgOiBuZXcgYXJyb3cuVGFibGUoY3JlYU9wdHMpO1xufTtcblxuLyoqXG4gKiBEdWNrRGIgdGhyb3dzIHdoZW4gZ2VvYXJyb3cgZXh0ZW5zaW9ucyBhcmUgcHJlc2VudCBpbiBtZXRhZGF0YS5cbiAqIEBwYXJhbSB0YWJsZSBBbiBhcnJvdyB0YWJsZSB0byBjbGVhciBmcm9tIGV4dGVuc2lvbnMuXG4gKiBAcmV0dXJucyBBIG1hcCBvZiByZW1vdmVkIHBlciBmaWVsZCBnZW9hcnJvdyBleHRlbnNpb25zLlxuICovXG5leHBvcnQgY29uc3QgcmVtb3ZlVW5zdXBwb3J0ZWRFeHRlbnNpb25zID0gKHRhYmxlOiBhcnJvdy5UYWJsZSk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPT4ge1xuICBjb25zdCByZW1vdmVkTWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgdGFibGUuc2NoZW1hLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICBjb25zdCBleHRlbnNpb24gPSBmaWVsZC5tZXRhZGF0YS5nZXQoR0VPQVJST1dfTUVUQURBVEFfS0VZKTtcbiAgICBpZiAoZXh0ZW5zaW9uPy5zdGFydHNXaXRoKCdnZW9hcnJvdycpKSB7XG4gICAgICByZW1vdmVkTWV0YWRhdGFbZmllbGQubmFtZV0gPSBleHRlbnNpb247XG4gICAgICBmaWVsZC5tZXRhZGF0YS5kZWxldGUoR0VPQVJST1dfTUVUQURBVEFfS0VZKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVtb3ZlZE1ldGFkYXRhO1xufTtcblxuLyoqXG4gKiBSZXN0b3JlIHJlbW92ZWQgbWV0YWRhdGEgZXh0ZW5zaW9ucyBhZnRlciBhIGNhbGwgdG8gcmVtb3ZlVW5zdXBwb3J0ZWRFeHRlbnNpb25zLlxuICogQHBhcmFtIHRhYmxlIEFuIGFycm93IHRhYmxlIHRvIHJlc3RvcmUgZ2VvYXJyb3cgZXh0ZW5zaW9ucy5cbiAqIEBwYXJhbSByZW1vdmVkRXh0ZW5zaW9ucyBBIG1hcCBvZiBwZXIgZmllbGQgZ2VvYXJyb3cgZXh0ZW5zaW9ucyB0byByZXN0b3JlLlxuICovXG5leHBvcnQgY29uc3QgcmVzdG9yZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyA9IChcbiAgdGFibGU6IGFycm93LlRhYmxlLFxuICByZW1vdmVkRXh0ZW5zaW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuKSA9PiB7XG4gIHRhYmxlLnNjaGVtYS5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gcmVtb3ZlZEV4dGVuc2lvbnNbZmllbGQubmFtZV07XG4gICAgaWYgKGV4dGVuc2lvbikge1xuICAgICAgZmllbGQubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgZXh0ZW5zaW9uKTtcbiAgICB9XG4gIH0pO1xufTtcblxuLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBBcGFjaGUgQXJyb3cgSlMgdHlwZSBpcyBhIFBvaW50IGRhdGEgdHlwZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzR2VvQXJyb3dQb2ludCh0eXBlOiBEYXRhVHlwZSkge1xuICBpZiAoRGF0YVR5cGUuaXNGaXhlZFNpemVMaXN0KHR5cGUpKSB7XG4gICAgLy8gQ2hlY2sgbGlzdCBzaXplXG4gICAgaWYgKCFbMiwgMywgNF0uaW5jbHVkZXModHlwZS5saXN0U2l6ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBjaGlsZCBvZiBGaXhlZFNpemVMaXN0IGlzIGZsb2F0aW5nIHR5cGVcbiAgICBpZiAoIURhdGFUeXBlLmlzRmxvYXQodHlwZS5jaGlsZHJlblswXSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBBcGFjaGUgQXJyb3cgSlMgdHlwZSBpcyBhIFBvaW50IGRhdGEgdHlwZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzR2VvQXJyb3dMaW5lU3RyaW5nKHR5cGU6IERhdGFUeXBlKSB7XG4gIC8vIENoZWNrIHRoZSBvdXRlciB0eXBlIGlzIGEgTGlzdFxuICBpZiAoIURhdGFUeXBlLmlzTGlzdCh0eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIHRoZSBjaGlsZCBpcyBhIHBvaW50IHR5cGVcbiAgaWYgKCFpc0dlb0Fycm93UG9pbnQodHlwZS5jaGlsZHJlblswXS50eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIEFwYWNoZSBBcnJvdyBKUyB0eXBlIGlzIGEgUG9seWdvbiBkYXRhIHR5cGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0dlb0Fycm93UG9seWdvbih0eXBlOiBEYXRhVHlwZSkge1xuICAvLyBDaGVjayB0aGUgb3V0ZXIgdmVjdG9yIGlzIGEgTGlzdFxuICBpZiAoIURhdGFUeXBlLmlzTGlzdCh0eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIHRoZSBjaGlsZCBpcyBhIGxpbmVzdHJpbmcgdmVjdG9yXG4gIGlmICghaXNHZW9BcnJvd0xpbmVTdHJpbmcodHlwZS5jaGlsZHJlblswXS50eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIEFwYWNoZSBBcnJvdyBKUyB0eXBlIGlzIGEgUG9seWdvbiBkYXRhIHR5cGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0dlb0Fycm93TXVsdGlQb2ludCh0eXBlOiBEYXRhVHlwZSkge1xuICAvLyBDaGVjayB0aGUgb3V0ZXIgdmVjdG9yIGlzIGEgTGlzdFxuICBpZiAoIURhdGFUeXBlLmlzTGlzdCh0eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIHRoZSBjaGlsZCBpcyBhIHBvaW50IHZlY3RvclxuICBpZiAoIWlzR2VvQXJyb3dQb2ludCh0eXBlLmNoaWxkcmVuWzBdLnR5cGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gQXBhY2hlIEFycm93IEpTIHR5cGUgaXMgYSBQb2x5Z29uIGRhdGEgdHlwZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzR2VvQXJyb3dNdWx0aUxpbmVTdHJpbmcodHlwZTogRGF0YVR5cGUpIHtcbiAgLy8gQ2hlY2sgdGhlIG91dGVyIHZlY3RvciBpcyBhIExpc3RcbiAgaWYgKCFEYXRhVHlwZS5pc0xpc3QodHlwZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBDaGVjayB0aGUgY2hpbGQgaXMgYSBsaW5lc3RyaW5nIHZlY3RvclxuICBpZiAoIWlzR2VvQXJyb3dMaW5lU3RyaW5nKHR5cGUuY2hpbGRyZW5bMF0udHlwZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBBcGFjaGUgQXJyb3cgSlMgdHlwZSBpcyBhIFBvbHlnb24gZGF0YSB0eXBlICovXG5leHBvcnQgZnVuY3Rpb24gaXNHZW9BcnJvd011bHRpUG9seWdvbih0eXBlOiBEYXRhVHlwZSkge1xuICAvLyBDaGVjayB0aGUgb3V0ZXIgdmVjdG9yIGlzIGEgTGlzdFxuICBpZiAoIURhdGFUeXBlLmlzTGlzdCh0eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIHRoZSBjaGlsZCBpcyBhIHBvbHlnb24gdmVjdG9yXG4gIGlmICghaXNHZW9BcnJvd1BvbHlnb24odHlwZS5jaGlsZHJlblswXS50eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gU1FMIHF1ZXJ5IGlzIGEgU0VMRUNUIHF1ZXJ5IGJ5IHVzaW5nIHRoZSBFWFBMQUlOIGNvbW1hbmQuXG4gKiBAcGFyYW0gY29ubmVjdGlvbiBUaGUgRHVja0RCIGNvbm5lY3Rpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcXVlcnkgVGhlIFNRTCBxdWVyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFJlc29sdmVzIHRvIGB0cnVlYCBpZiB0aGUgcXVlcnkgaXMgYSBTRUxFQ1Qgc3RhdGVtZW50LCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNoZWNrSXNTZWxlY3RRdWVyeShcbiAgY29ubmVjdGlvbjogRGF0YWJhc2VDb25uZWN0aW9uLFxuICBxdWVyeTogc3RyaW5nXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KGBFWFBMQUlOICgke3F1ZXJ5fSlgKTtcbiAgICByZXR1cm4gcmVzdWx0Lm51bVJvd3MgPiAwO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFNwbGl0IGEgc3RyaW5nIHdpdGggcG90ZW50aWFsbHkgbXVsdGlwbGUgU1FMIHF1ZXJpZXMgKHNlcGFyYXRlZCBhcyB1c3VhbCBieSAnOycpIGludG8gYW4gYXJyYXkgb2YgcXVlcmllcy5cbiAqIFRoaXMgaW1wbGVtZW50YXRpb246XG4gKiAgLSBIYW5kbGVzIHNpbmdsZSBhbmQgZG91YmxlIHF1b3RlZCBzdHJpbmdzIHdpdGggcHJvcGVyIGVzY2FwaW5nXG4gKiAgLSBJZ25vcmVzIHNlbWljb2xvbnMgaW4gbGluZSBjb21tZW50cyAoLS0pIGFuZCBibG9jayBjb21tZW50cyAoc2xhc2ggYXN0ZXJpc2spXG4gKiAgLSBUcmltcyB3aGl0ZXNwYWNlIGZyb20gcXVlcmllc1xuICogIC0gSGFuZGxlcyBTUUwtc3R5bGUgZXNjYXBlZCBxdW90ZXMgKCcnIGluc2lkZSBzdHJpbmdzKVxuICogIC0gUmV0dXJucyBvbmx5IG5vbi1lbXB0eSBxdWVyaWVzXG4gKiBAcGFyYW0gaW5wdXQgQSBzdHJpbmcgd2l0aCBwb3RlbnRpYWxseSBtdWx0aXBsZSBTUUwgcXVlcmllcy5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHF1ZXJpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdFNxbFN0YXRlbWVudHMoaW5wdXQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcXVlcmllczogc3RyaW5nW10gPSBbXTtcbiAgbGV0IGN1cnJlbnRRdWVyeSA9ICcnO1xuICBsZXQgaW5TaW5nbGVRdW90ZSA9IGZhbHNlO1xuICBsZXQgaW5Eb3VibGVRdW90ZSA9IGZhbHNlO1xuICBsZXQgaW5MaW5lQ29tbWVudCA9IGZhbHNlO1xuICBsZXQgaW5CbG9ja0NvbW1lbnQgPSBmYWxzZTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY2hhciA9IGlucHV0W2ldO1xuXG4gICAgaWYgKGluTGluZUNvbW1lbnQpIHtcbiAgICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyO1xuICAgICAgaWYgKGNoYXIgPT09ICdcXG4nKSB7XG4gICAgICAgIGluTGluZUNvbW1lbnQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChpbkJsb2NrQ29tbWVudCkge1xuICAgICAgY3VycmVudFF1ZXJ5ICs9IGNoYXI7XG4gICAgICBpZiAoY2hhciA9PT0gJyonICYmIGlucHV0W2kgKyAxXSA9PT0gJy8nKSB7XG4gICAgICAgIGluQmxvY2tDb21tZW50ID0gZmFsc2U7XG4gICAgICAgIGN1cnJlbnRRdWVyeSArPSBpbnB1dFsrK2ldOyAvLyBDb25zdW1lICcvJ1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGluU2luZ2xlUXVvdGUpIHtcbiAgICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyO1xuICAgICAgaWYgKGNoYXIgPT09IFwiJ1wiKSB7XG4gICAgICAgIC8vIEhhbmRsZSBlc2NhcGVkIHNpbmdsZSBxdW90ZXMgaW4gU1FMXG4gICAgICAgIGlmIChpICsgMSA8IGlucHV0Lmxlbmd0aCAmJiBpbnB1dFtpICsgMV0gPT09IFwiJ1wiKSB7XG4gICAgICAgICAgY3VycmVudFF1ZXJ5ICs9IGlucHV0WysraV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5TaW5nbGVRdW90ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoaW5Eb3VibGVRdW90ZSkge1xuICAgICAgY3VycmVudFF1ZXJ5ICs9IGNoYXI7XG4gICAgICBpZiAoY2hhciA9PT0gJ1wiJykge1xuICAgICAgICAvLyBIYW5kbGUgZXNjYXBlZCBkb3VibGUgcXVvdGVzXG4gICAgICAgIGlmIChpICsgMSA8IGlucHV0Lmxlbmd0aCAmJiBpbnB1dFtpICsgMV0gPT09ICdcIicpIHtcbiAgICAgICAgICBjdXJyZW50UXVlcnkgKz0gaW5wdXRbKytpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbkRvdWJsZVF1b3RlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBjb21tZW50IHN0YXJ0c1xuICAgIGlmIChjaGFyID09PSAnLScgJiYgaW5wdXRbaSArIDFdID09PSAnLScpIHtcbiAgICAgIGluTGluZUNvbW1lbnQgPSB0cnVlO1xuICAgICAgY3VycmVudFF1ZXJ5ICs9IGNoYXIgKyBpbnB1dFsrK2ldO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGNoYXIgPT09ICcvJyAmJiBpbnB1dFtpICsgMV0gPT09ICcqJykge1xuICAgICAgaW5CbG9ja0NvbW1lbnQgPSB0cnVlO1xuICAgICAgY3VycmVudFF1ZXJ5ICs9IGNoYXIgKyBpbnB1dFsrK2ldO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9yIHF1b3RlIHN0YXJ0c1xuICAgIGlmIChjaGFyID09PSBcIidcIikge1xuICAgICAgaW5TaW5nbGVRdW90ZSA9IHRydWU7XG4gICAgICBjdXJyZW50UXVlcnkgKz0gY2hhcjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjaGFyID09PSAnXCInKSB7XG4gICAgICBpbkRvdWJsZVF1b3RlID0gdHJ1ZTtcbiAgICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHF1ZXJ5IHNlcGFyYXRvclxuICAgIGlmIChjaGFyID09PSAnOycpIHtcbiAgICAgIGNvbnN0IHRyaW1tZWQgPSBjdXJyZW50UXVlcnkudHJpbSgpO1xuICAgICAgaWYgKHRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgICBxdWVyaWVzLnB1c2godHJpbW1lZCk7XG4gICAgICB9XG4gICAgICBjdXJyZW50UXVlcnkgPSAnJztcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyO1xuICB9XG5cbiAgLy8gQWRkIHRoZSBmaW5hbCBxdWVyeVxuICBjb25zdCB0cmltbWVkID0gY3VycmVudFF1ZXJ5LnRyaW0oKTtcbiAgaWYgKHRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgIHF1ZXJpZXMucHVzaCh0cmltbWVkKTtcbiAgfVxuXG4gIHJldHVybiBxdWVyaWVzO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgU1FMIGNvbW1lbnRzIGZyb20gYSBnaXZlbiBTUUwgc3RyaW5nLlxuICogQHBhcmFtIHNxbCBUaGUgU1FMIHF1ZXJ5IHN0cmluZyBmcm9tIHdoaWNoIGNvbW1lbnRzIHNob3VsZCBiZSByZW1vdmVkLlxuICogQHJldHVybnMgVGhlIGNsZWFuZWQgU1FMIHN0cmluZyB3aXRob3V0IGNvbW1lbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlU1FMQ29tbWVudHMoc3FsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBSZW1vdmUgbXVsdGktbGluZSBjb21tZW50cyAoLyogLi4uICovKVxuICBzcWwgPSBzcWwucmVwbGFjZSgvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy9nLCAnJyk7XG4gIC8vIFJlbW92ZSBzaW5nbGUtbGluZSBjb21tZW50cyAoLS0gLi4uKVxuICBzcWwgPSBzcWwucmVwbGFjZSgvLS0uKiQvZ20sICcnKTtcbiAgcmV0dXJuIHNxbC50cmltKCk7XG59XG5cbi8qKlxuICogRHJvcHMgYSB0YWJsZSBpZiBpdCBleGlzdHMgaW4gdGhlIER1Y2tEQiBkYXRhYmFzZS5cbiAqIEBwYXJhbSBjb25uZWN0aW9uIFRoZSBEdWNrREIgY29ubmVjdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSB0YWJsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGRyb3AuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGUuXG4gKiBAdGhyb3dzIExvZ3MgYW4gZXJyb3IgaWYgdGhlIHRhYmxlIGRyb3Agb3BlcmF0aW9uIGZhaWxzLlxuICovXG5leHBvcnQgY29uc3QgZHJvcFRhYmxlSWZFeGlzdHMgPSBhc3luYyAoY29ubmVjdGlvbjogRGF0YWJhc2VDb25uZWN0aW9uLCB0YWJsZU5hbWU6IHN0cmluZykgPT4ge1xuICB0cnkge1xuICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoYERST1AgVEFCTEUgSUYgRVhJU1RTIFwiJHt0YWJsZU5hbWV9XCI7YCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignRHJvcHBpbmcgdGFibGUgZmFpbGVkJywgdGFibGVOYW1lLCBlcnJvcik7XG4gIH1cbn07XG5cbi8qKlxuICogSW1wb3J0cyBhIGZpbGUgaW50byBEdWNrREIgYXMgYSB0YWJsZSwgc3VwcG9ydGluZyBtdWx0aXBsZSBmb3JtYXRzIGZyb20gU1VQUE9SVEVEX0RVQ0tEQl9EUk9QX0VYVEVOU0lPTlMuXG4gKiBAcGFyYW0gZmlsZSBUaGUgZmlsZSB0byBiZSBpbXBvcnRlZC5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZpbGUgaGFzIGJlZW4gcHJvY2Vzc2VkIGludG8gYSBEdWNrREIgdGFibGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0YWJsZUZyb21GaWxlKGZpbGU6IEZpbGUgfCBudWxsKTogUHJvbWlzZTxudWxsIHwgRXJyb3I+IHtcbiAgaWYgKCFmaWxlKSByZXR1cm4gbmV3IEVycm9yKCdGaWxlIERyYWcgJiBEcm9wOiBObyBmaWxlJyk7XG5cbiAgY29uc3QgZmlsZUV4dCA9IFNVUFBPUlRFRF9EVUNLREJfRFJPUF9FWFRFTlNJT05TLmZpbmQoZXh0ID0+IGZpbGUubmFtZS5lbmRzV2l0aChleHQpKTtcbiAgaWYgKCFmaWxlRXh0KSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcihcIkZpbGUgRHJhZyAmIERyb3A6IEZpbGUgZXh0ZW5zaW9uIGlzbid0IHN1cHBvcnRlZFwiKTtcbiAgfVxuXG4gIGNvbnN0IGRiID0gYXdhaXQgZ2V0QXBwbGljYXRpb25Db25maWcoKS5kYXRhYmFzZTtcbiAgaWYgKCFkYikge1xuICAgIHJldHVybiBuZXcgRXJyb3IoJ1RoZSBkYXRhYmFzZSBpcyBub3QgY29uZmlndXJlZCBwcm9wZXJseS4nKTtcbiAgfVxuICBjb25zdCBjID0gYXdhaXQgZGIuY29ubmVjdCgpO1xuXG4gIGxldCBlcnJvcjogRXJyb3IgfCBudWxsID0gbnVsbDtcblxuICB0cnkge1xuICAgIGNvbnN0IHRhYmxlTmFtZSA9IHNhbml0aXplRHVja0RCVGFibGVOYW1lKGZpbGUubmFtZSk7XG4gICAgY29uc3Qgc291cmNlTmFtZSA9ICd0ZW1wX2ZpbGVfaGFuZGxlJztcblxuICAgIGMucXVlcnkoYGluc3RhbGwgc3BhdGlhbDtcbiAgICAgIGxvYWQgc3BhdGlhbDtgKTtcblxuICAgIGlmIChmaWxlRXh0ID09PSAnYXJyb3cnKSB7XG4gICAgICBjb25zdCBhcnJheUJ1ZmZlciA9IGF3YWl0IGZpbGUuYXJyYXlCdWZmZXIoKTtcbiAgICAgIGNvbnN0IHVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcik7XG4gICAgICBjb25zdCBhcnJvd1RhYmxlID0gYXJyb3cudGFibGVGcm9tSVBDKHVpbnQ4QXJyYXkpO1xuXG4gICAgICBhd2FpdCBjLmluc2VydEFycm93VGFibGUoYXJyb3dUYWJsZSwge25hbWU6IHRhYmxlTmFtZX0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBkYi5yZWdpc3RlckZpbGVIYW5kbGUoc291cmNlTmFtZSwgZmlsZSwgRHVja0RCRGF0YVByb3RvY29sLkJST1dTRVJfRklMRVJFQURFUiwgdHJ1ZSk7XG5cbiAgICAgIGlmIChmaWxlRXh0ID09PSAnY3N2Jykge1xuICAgICAgICBhd2FpdCBjLnF1ZXJ5KGBcbiAgICAgICAgICAgIENSRUFURSBUQUJMRSAnJHt0YWJsZU5hbWV9JyBBU1xuICAgICAgICAgICAgU0VMRUNUICpcbiAgICAgICAgICAgIEZST00gcmVhZF9jc3YoJyR7c291cmNlTmFtZX0nLCBoZWFkZXIgPSB0cnVlLCBhdXRvX2RldGVjdCA9IHRydWUsIHNhbXBsZV9zaXplID0gLTEpO1xuICAgICAgICAgIGApO1xuICAgICAgfSBlbHNlIGlmIChmaWxlRXh0ID09PSAnanNvbicpIHtcbiAgICAgICAgYXdhaXQgYy5xdWVyeShgXG4gICAgICAgICAgICBDUkVBVEUgVEFCTEUgJyR7dGFibGVOYW1lfScgQVNcbiAgICAgICAgICAgIFNFTEVDVCAqXG4gICAgICAgICAgICBGUk9NIHJlYWRfanNvbl9hdXRvKCcke3NvdXJjZU5hbWV9Jyk7XG4gICAgICAgICAgYCk7XG4gICAgICB9IGVsc2UgaWYgKGZpbGVFeHQgPT09ICdnZW9qc29uJykge1xuICAgICAgICBhd2FpdCBjLnF1ZXJ5KGBcbiAgICAgICAgICAgIENSRUFURSBUQUJMRSAnJHt0YWJsZU5hbWV9JyBBU1xuICAgICAgICAgICAgU0VMRUNUICpcbiAgICAgICAgICAgIEZST00gU1RfUkVBRCgnJHtzb3VyY2VOYW1lfScsIGtlZXBfd2tiID0gVFJVRSk7XG4gICAgICAgICAgYCk7XG4gICAgICB9IGVsc2UgaWYgKGZpbGVFeHQgPT09ICdwYXJxdWV0Jykge1xuICAgICAgICBhd2FpdCBjLnF1ZXJ5KGBcbiAgICAgICAgICAgIENSRUFURSBUQUJMRSAnJHt0YWJsZU5hbWV9JyBBU1xuICAgICAgICAgICAgU0VMRUNUICpcbiAgICAgICAgICAgIEZST00gcmVhZF9wYXJxdWV0KCcke3NvdXJjZU5hbWV9JylcbiAgICAgICAgICBgKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yRGF0YSkge1xuICAgIGlmIChlcnJvckRhdGEgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGVycm9yRGF0YS5tZXNzYWdlIHx8ICcnO1xuICAgICAgLy8gb3V0cHV0IG1vcmUgcmVhZGFibGUgZXJyb3JzIGZvciBrbm93biBpc3N1ZXNcbiAgICAgIGlmIChtZXNzYWdlLmluY2x1ZGVzKCdBcnJvdyBUeXBlIHdpdGggZXh0ZW5zaW9uIG5hbWU6IGdlb2Fycm93JykpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1RoZSBHZW9BcnJvdyBleHRlbnNpb25zIGFyZSBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbm5lY3RlZCBEdWNrREIgdmVyc2lvbi4nXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoXCJHZW9wYXJxdWV0IGNvbHVtbiAnZ2VvbWV0cnknIGRvZXMgbm90IGhhdmUgZ2VvbWV0cnkgdHlwZXNcIikpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgYEludmFsaWQgSW5wdXQgRXJyb3I6IEdlb3BhcnF1ZXQgY29sdW1uICdnZW9tZXRyeScgZG9lcyBub3QgaGF2ZSBnZW9tZXRyeSB0eXBlcy5cblBvc3NpYmxlIHJlYXNvbnM6XG4gIC0gT2xkIC5wYXJxdWV0IGZpbGVzIHRoYXQgZG9uJ3QgbWF0Y2ggdGhlIFBhcnF1ZXQgZm9ybWF0IHNwZWNpZmljYXRpb24uXG4gIC0gVW5zdXBwb3J0ZWQgY29tcHJlc3Npb24uYFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghZXJyb3IpIHtcbiAgICAgIGVycm9yID0gZXJyb3JEYXRhIGFzIEVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGF3YWl0IGMuY2xvc2UoKTtcblxuICByZXR1cm4gZXJyb3I7XG59XG5cbi8qKlxuICogU2FuaXRpemVzIGEgZmlsZSBuYW1lIHRvIGJlIGEgdmFsaWQgRHVja0RCIHRhYmxlIG5hbWUuXG4gKiBAcGFyYW0gZmlsZU5hbWUgVGhlIGlucHV0IGZpbGUgbmFtZSB0byBiZSBzYW5pdGl6ZWQuXG4gKiBAcmV0dXJucyBBIHZhbGlkIER1Y2tEQiB0YWJsZSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2FuaXRpemVEdWNrREJUYWJsZU5hbWUoZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFJlcGxhY2UgaW52YWxpZCBjaGFyYWN0ZXJzIHdpdGggdW5kZXJzY29yZXNcbiAgbGV0IG5hbWUgPSBmaWxlTmFtZS5yZXBsYWNlKC9bXmEtekEtWjAtOV9dL2csICdfJyk7XG4gIC8vIEVuc3VyZSBpdCBkb2Vzbid0IHN0YXJ0IHdpdGggYSBkaWdpdFxuICBpZiAoL15cXGQvLnRlc3QobmFtZSkpIHtcbiAgICBuYW1lID0gYHRfJHtuYW1lfWA7XG4gIH1cbiAgcmV0dXJuIG5hbWUgfHwgJ2RlZmF1bHRfdGFibGUnO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV0EsSUFBQUEsS0FBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsV0FBQSxHQUFBRixPQUFBO0FBRUEsSUFBQUcsVUFBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBQTBFLFNBQUFLLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBUCx3QkFBQU8sQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFB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QTNHLElBQUE7VUFBQSxPQUN4Qm9HLENBQUMsQ0FBQ25HLEtBQUssZ0NBQUFDLE1BQUEsQ0FDT2QsU0FBUyxpRUFBQWMsTUFBQSxDQUVKbUcsVUFBVSxtQkFDaEMsQ0FBQztRQUFBO1VBQUFNLFNBQUEsQ0FBQTNHLElBQUE7VUFBQTtRQUFBO1VBQUEyRyxTQUFBLENBQUE1RyxJQUFBO1VBQUE0RyxTQUFBLENBQUF0QyxFQUFBLEdBQUFzQyxTQUFBO1VBSVIsSUFBSUEsU0FBQSxDQUFBdEMsRUFBQSxZQUFxQnVDLEtBQUssRUFBRTtZQUN4QkgsT0FBTyxHQUFHRSxTQUFBLENBQUF0QyxFQUFBLENBQVVvQyxPQUFPLElBQUksRUFBRSxFQUN2QztZQUNBLElBQUlBLE9BQU8sQ0FBQ3RELFFBQVEsQ0FBQywwQ0FBMEMsQ0FBQyxFQUFFO2NBQ2hFdUMsS0FBSyxHQUFHLElBQUlrQixLQUFLLENBQ2YsOEVBQ0YsQ0FBQztZQUNILENBQUMsTUFBTSxJQUFJSCxPQUFPLENBQUN0RCxRQUFRLENBQUMsMkRBQTJELENBQUMsRUFBRTtjQUN4RnVDLEtBQUssR0FBRyxJQUFJa0IsS0FBSyw4TUFLakIsQ0FBQztZQUNIO1VBQ0Y7VUFFQSxJQUFJLENBQUNsQixLQUFLLEVBQUU7WUFDVkEsS0FBSyxHQUFBaUIsU0FBQSxDQUFBdEMsRUFBcUI7VUFDNUI7UUFBQztVQUFBc0MsU0FBQSxDQUFBM0csSUFBQTtVQUFBLE9BR0dvRyxDQUFDLENBQUNxQixLQUFLLENBQUMsQ0FBQztRQUFBO1VBQUEsT0FBQWQsU0FBQSxDQUFBbkcsTUFBQSxXQUVSa0YsS0FBSztRQUFBO1FBQUE7VUFBQSxPQUFBaUIsU0FBQSxDQUFBbEcsSUFBQTtNQUFBO0lBQUEsR0FBQXVGLFFBQUE7RUFBQSxDQUNiO0VBQUEsT0FBQUQsY0FBQSxDQUFBbEgsS0FBQSxPQUFBQyxTQUFBO0FBQUE7QUFPTSxTQUFTb0ksdUJBQXVCQSxDQUFDUSxRQUFnQixFQUFVO0VBQ2hFO0VBQ0EsSUFBSXBILElBQUksR0FBR29ILFFBQVEsQ0FBQ3ZDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUM7RUFDbEQ7RUFDQSxJQUFJLEtBQUssQ0FBQ3dDLElBQUksQ0FBQ3JILElBQUksQ0FBQyxFQUFFO0lBQ3BCQSxJQUFJLFFBQUFKLE1BQUEsQ0FBUUksSUFBSSxDQUFFO0VBQ3BCO0VBQ0EsT0FBT0EsSUFBSSxJQUFJLGVBQWU7QUFDaEMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
605
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl90eXBlIiwiX2R1Y2tkYldhc20iLCJfY29uc3RhbnRzIiwiX3V0aWxzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiU1VQUE9SVEVEX0RVQ0tEQl9EUk9QX0VYVEVOU0lPTlMiLCJleHBvcnRzIiwiZ2V0RHVja0RCQ29sdW1uVHlwZXMiLCJfeCIsIl94MiIsIl9nZXREdWNrREJDb2x1bW5UeXBlcyIsImFwcGx5IiwiYXJndW1lbnRzIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUyIiwiY29ubmVjdGlvbiIsInRhYmxlTmFtZSIsInJlc0Rlc2NyaWJlIiwiZHVja0RiVHlwZXMiLCJudW1Sb3dzIiwiX3Jlc0Rlc2NyaWJlJGdldENoaWxkIiwiX3Jlc0Rlc2NyaWJlJGdldENoaWxkMiIsImNvbHVtbk5hbWUiLCJjb2x1bW5UeXBlIiwid3JhcCIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInByZXYiLCJuZXh0IiwicXVlcnkiLCJjb25jYXQiLCJzZW50IiwiZ2V0Q2hpbGRBdCIsInB1c2giLCJuYW1lIiwidHlwZSIsImFicnVwdCIsInN0b3AiLCJnZXREdWNrREJDb2x1bW5UeXBlc01hcCIsImNvbHVtbnMiLCJyZWR1Y2UiLCJhY2MiLCJ2YWx1ZSIsImNhc3REdWNrREJUeXBlc0ZvcktlcGxlciIsIm9wdGlvbnMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJnZW9tZXRyeVRvV0tCIiwiYmlnSW50VG9Eb3VibGUiLCJtb2RpZmllZENvbHVtbnMiLCJtYXAiLCJjb2x1bW4iLCJqb2luIiwic2V0R2VvQXJyb3dXS0JFeHRlbnNpb24iLCJ0YWJsZSIsInNjaGVtYSIsImZpZWxkcyIsImZvckVhY2giLCJmaWVsZCIsImluZm8iLCJmaW5kIiwibWV0YWRhdGEiLCJHRU9BUlJPV19NRVRBREFUQV9LRVkiLCJHRU9BUlJPV19FWFRFTlNJT05TIiwiV0tCIiwicmVzdG9yZUFycm93VGFibGUiLCJhcnJvd1NjaGVtYSIsImNyZWFPcHRzIiwiaW5kZXgiLCJUYWJsZSIsInJlbW92ZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyIsInJlbW92ZWRNZXRhZGF0YSIsImV4dGVuc2lvbiIsInN0YXJ0c1dpdGgiLCJyZXN0b3JlVW5zdXBwb3J0ZWRFeHRlbnNpb25zIiwicmVtb3ZlZEV4dGVuc2lvbnMiLCJpc0dlb0Fycm93UG9pbnQiLCJEYXRhVHlwZSIsImlzRml4ZWRTaXplTGlzdCIsImluY2x1ZGVzIiwibGlzdFNpemUiLCJpc0Zsb2F0IiwiY2hpbGRyZW4iLCJpc0dlb0Fycm93TGluZVN0cmluZyIsImlzTGlzdCIsImlzR2VvQXJyb3dQb2x5Z29uIiwiaXNHZW9BcnJvd011bHRpUG9pbnQiLCJpc0dlb0Fycm93TXVsdGlMaW5lU3RyaW5nIiwiaXNHZW9BcnJvd011bHRpUG9seWdvbiIsImNoZWNrSXNTZWxlY3RRdWVyeSIsIl94MyIsIl94NCIsIl9jaGVja0lzU2VsZWN0UXVlcnkiLCJfY2FsbGVlMyIsInJlc3VsdCIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsInQwIiwic3BsaXRTcWxTdGF0ZW1lbnRzIiwiaW5wdXQiLCJxdWVyaWVzIiwiY3VycmVudFF1ZXJ5IiwiaW5TaW5nbGVRdW90ZSIsImluRG91YmxlUXVvdGUiLCJpbkxpbmVDb21tZW50IiwiaW5CbG9ja0NvbW1lbnQiLCJjaGFyIiwidHJpbW1lZCIsInRyaW0iLCJyZW1vdmVTUUxDb21tZW50cyIsInNxbCIsInJlcGxhY2UiLCJkcm9wVGFibGVJZkV4aXN0cyIsIl9yZWYiLCJfY2FsbGVlIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsImNvbnNvbGUiLCJlcnJvciIsIl94NSIsIl94NiIsInRhYmxlRnJvbUZpbGUiLCJfeDciLCJfdGFibGVGcm9tRmlsZSIsIl9jYWxsZWU0IiwiZmlsZSIsImZpbGVFeHQiLCJkYiIsImMiLCJzb3VyY2VOYW1lIiwiYXJyYXlCdWZmZXIiLCJ1aW50OEFycmF5IiwiYXJyb3dUYWJsZSIsIm1lc3NhZ2UiLCJfY2FsbGVlNCQiLCJfY29udGV4dDQiLCJFcnJvciIsImV4dCIsImVuZHNXaXRoIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJkYXRhYmFzZSIsImNvbm5lY3QiLCJzYW5pdGl6ZUR1Y2tEQlRhYmxlTmFtZSIsIlVpbnQ4QXJyYXkiLCJ0YWJsZUZyb21JUEMiLCJpbnNlcnRBcnJvd1RhYmxlIiwicmVnaXN0ZXJGaWxlSGFuZGxlIiwiRHVja0RCRGF0YVByb3RvY29sIiwiQlJPV1NFUl9GSUxFUkVBREVSIiwiY2xvc2UiLCJmaWxlTmFtZSIsInRlc3QiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFibGUvZHVja2RiLXRhYmxlLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbi8vIGxvYWRlcnMuZ2xcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCAoYykgdmlzLmdsIGNvbnRyaWJ1dG9yc1xuXG4vLyBDb3BpZWQgZnJvbSBsb2FkZXJzLmdsL2dlb2Fycm93XG5cbi8vIFRPRE86IFJlbW92ZSBpc0dlb0Fycm93KiBvbmNlIEtlcGxlci5nbCBpcyB1cGdyYWRlZCB0byBsb2FkZXJzLmdsIDQuNCtcblxuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcbmltcG9ydCB7RGF0YVR5cGV9IGZyb20gJ2FwYWNoZS1hcnJvdy90eXBlJztcbmltcG9ydCB7RHVja0RCRGF0YVByb3RvY29sfSBmcm9tICdAZHVja2RiL2R1Y2tkYi13YXNtJztcblxuaW1wb3J0IHtHRU9BUlJPV19FWFRFTlNJT05TLCBHRU9BUlJPV19NRVRBREFUQV9LRVl9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7UHJvdG9EYXRhc2V0RmllbGR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtEYXRhYmFzZUNvbm5lY3Rpb24sIGdldEFwcGxpY2F0aW9uQ29uZmlnfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9EVUNLREJfRFJPUF9FWFRFTlNJT05TID0gWydhcnJvdycsICdjc3YnLCAnZ2VvanNvbicsICdqc29uJywgJ3BhcnF1ZXQnXTtcblxuZXhwb3J0IHR5cGUgRHVja0RCQ29sdW1uRGVzYyA9IHtuYW1lOiBzdHJpbmc7IHR5cGU6IHN0cmluZ307XG5cbi8qKlxuICogUXVlcmllcyBhIER1Y2tEQiB0YWJsZSBmb3IgdGhlIHNjaGVtYSBkZXNjcmlwdGlvbi5cbiAqIEBwYXJhbSBjb25uZWN0aW9uIEFuIGFjdGl2ZSBEdWNrREIgY29ubmVjdGlvbi5cbiAqIEBwYXJhbSB0YWJsZU5hbWUgQSBuYW1lIG9mIER1Y2tEQiB0YWJsZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGNvbHVtbiBuYW1lcyBhbmQgRHVja0RCIHR5cGVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RHVja0RCQ29sdW1uVHlwZXMoXG4gIGNvbm5lY3Rpb246IERhdGFiYXNlQ29ubmVjdGlvbixcbiAgdGFibGVOYW1lOiBzdHJpbmdcbik6IFByb21pc2U8RHVja0RCQ29sdW1uRGVzY1tdPiB7XG4gIGNvbnN0IHJlc0Rlc2NyaWJlID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShgREVTQ1JJQkUgXCIke3RhYmxlTmFtZX1cImApO1xuXG4gIGNvbnN0IGR1Y2tEYlR5cGVzOiBEdWNrREJDb2x1bW5EZXNjW10gPSBbXTtcbiAgY29uc3QgbnVtUm93cyA9IHJlc0Rlc2NyaWJlLm51bVJvd3M7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtUm93czsgKytpKSB7XG4gICAgY29uc3QgY29sdW1uTmFtZSA9IHJlc0Rlc2NyaWJlLmdldENoaWxkQXQoMCk/LmdldChpKTtcbiAgICBjb25zdCBjb2x1bW5UeXBlID0gcmVzRGVzY3JpYmUuZ2V0Q2hpbGRBdCgxKT8uZ2V0KGkpO1xuXG4gICAgZHVja0RiVHlwZXMucHVzaCh7XG4gICAgICBuYW1lOiBjb2x1bW5OYW1lLFxuICAgICAgdHlwZTogY29sdW1uVHlwZVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGR1Y2tEYlR5cGVzO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIG1hcHBpbmcgb2YgY29sdW1uIG5hbWVzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgRHVja0RCIGRhdGEgdHlwZXMuXG4gKiBAcGFyYW0gY29sdW1ucyBBbiBhcnJheSBvZiBjb2x1bW4gZGVzY3JpcHRpb25zIGZyb20gRHVja0RCLiBDaGVjayBnZXREdWNrREJDb2x1bW5UeXBlcy5cbiAqIEByZXR1cm5zIEEgcmVjb3JkIHdoZXJlIGtleXMgYXJlIGNvbHVtbiBuYW1lcyBhbmQgdmFsdWVzIGFyZSB0aGVpciBkYXRhIHR5cGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RHVja0RCQ29sdW1uVHlwZXNNYXAoY29sdW1uczogRHVja0RCQ29sdW1uRGVzY1tdKSB7XG4gIHJldHVybiBjb2x1bW5zLnJlZHVjZSgoYWNjLCB2YWx1ZSkgPT4ge1xuICAgIGFjY1t2YWx1ZS5uYW1lXSA9IHZhbHVlLnR5cGU7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPik7XG59XG5cbi8qKlxuICogQ29uc3RydWN0cyBhbiBTUUwgcXVlcnkgdG8gc2VsZWN0IGFsbCBjb2x1bW5zIGZyb20gYSBnaXZlbiB0YWJsZSxcbiAqIGNvbnZlcnRpbmcgc3BlY2lmaWVkIGNvbHVtbnMgdG8gV2VsbC1Lbm93biBCaW5hcnkgKFdLQikgZm9ybWF0IHVzaW5nIFNUX0FzV0tCLFxuICogYW5kIGNhc3RpbmcgQklHSU5UIGNvbHVtbnMgdG8gRE9VQkxFIGlmIHNwZWNpZmllZC5cbiAqIEBwYXJhbSB0YWJsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIGZyb20gd2hpY2ggdG8gc2VsZWN0IGRhdGEuXG4gKiBAcGFyYW0gY29sdW1ucyBBbiBhcnJheSBvZiBjb2x1bW4gZGVzY3JpcHRvcnMsIGVhY2ggd2l0aCBhIHR5cGUgYW5kIG5hbWUuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBwYXJhbWV0ZXJzIHRvIGNvbnRyb2wgdGhlIGNvbnZlcnNpb24gYmVoYXZpb3IuXG4gKiBAcmV0dXJucyBUaGUgY29uc3RydWN0ZWQgU1FMIHF1ZXJ5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FzdER1Y2tEQlR5cGVzRm9yS2VwbGVyKFxuICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgY29sdW1uczogRHVja0RCQ29sdW1uRGVzY1tdLFxuICBvcHRpb25zID0ge2dlb21ldHJ5VG9XS0I6IHRydWUsIGJpZ0ludFRvRG91YmxlOiB0cnVlfVxuKTogc3RyaW5nIHtcbiAgY29uc3QgbW9kaWZpZWRDb2x1bW5zID0gY29sdW1ucy5tYXAoY29sdW1uID0+IHtcbiAgICBjb25zdCB7bmFtZSwgdHlwZX0gPSBjb2x1bW47XG4gICAgaWYgKHR5cGUgPT09ICdHRU9NRVRSWScgJiYgb3B0aW9ucy5nZW9tZXRyeVRvV0tCKSB7XG4gICAgICByZXR1cm4gYFNUX0FzV0tCKCR7bmFtZX0pIGFzICR7bmFtZX1gO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ0JJR0lOVCcgJiYgb3B0aW9ucy5iaWdJbnRUb0RvdWJsZSkge1xuICAgICAgcmV0dXJuIGBDQVNUKCR7bmFtZX0gQVMgRE9VQkxFKSBhcyAke25hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIG5hbWU7XG4gIH0pO1xuXG4gIHJldHVybiBgU0VMRUNUICR7bW9kaWZpZWRDb2x1bW5zLmpvaW4oJywgJyl9IEZST00gJyR7dGFibGVOYW1lfSdgO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIEdlb0Fycm93IFdLQiBleHRlbnNpb24gbWV0YWRhdGEgZm9yIGNvbHVtbnMgb2YgdHlwZSBHRU9NRVRSWSBpbiBhbiBBcnJvdyB0YWJsZS5cbiAqIEBwYXJhbSB0YWJsZSBUaGUgQXBhY2hlIEFycm93IHRhYmxlIHdob3NlIHNjaGVtYSBmaWVsZHMgd2lsbCBiZSBtb2RpZmllZC5cbiAqIEBwYXJhbSBjb2x1bW5zIEFuIGFycmF5IG9mIGNvbHVtbiBkZXNjcmlwdG9ycyBmcm9tIGEgRHVja0RCIHRhYmxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0R2VvQXJyb3dXS0JFeHRlbnNpb24odGFibGU6IGFycm93LlRhYmxlLCBjb2x1bW5zOiBEdWNrREJDb2x1bW5EZXNjW10pIHtcbiAgdGFibGUuc2NoZW1hLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICBjb25zdCBpbmZvID0gY29sdW1ucy5maW5kKHQgPT4gdC5uYW1lID09PSBmaWVsZC5uYW1lKTtcbiAgICBpZiAoaW5mbz8udHlwZSA9PT0gJ0dFT01FVFJZJykge1xuICAgICAgZmllbGQubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgR0VPQVJST1dfRVhURU5TSU9OUy5XS0IpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJvdyB0YWJsZSBmcm9tIGFuIGFycmF5IG9mIGFycm93IHZlY3RvcnMgYW5kIGZpZWxkcy5cbiAqIEBwYXJhbSBjb2x1bW5zIEFuIGFycmF5IG9mIGFycm93IHZlY3RvcnMuXG4gKiBAcGFyYW0gZmllbGRzIEFuIGFycmF5IG9mIGZpZWxkcyBwZXIgYXJyb3cgdmVjdG9yLlxuICogQHBhcmFtIGFycm93U2NoZW1hIE9wdGlvbmFsIGFycm93IHRhYmxlIHNjaGVtYSB3aGVuIGF2YWlsYWJsZS5cbiAqIEByZXR1cm5zIEFuIGFycm93IHRhYmxlLlxuICovXG5leHBvcnQgY29uc3QgcmVzdG9yZUFycm93VGFibGUgPSAoXG4gIGNvbHVtbnM6IGFycm93LlZlY3RvcltdLFxuICBmaWVsZHM6IFByb3RvRGF0YXNldEZpZWxkW10sXG4gIGFycm93U2NoZW1hPzogYXJyb3cuU2NoZW1hXG4pID0+IHtcbiAgY29uc3QgY3JlYU9wdHMgPSB7fTtcbiAgZmllbGRzLm1hcCgoZmllbGQsIGluZGV4KSA9PiB7XG4gICAgY3JlYU9wdHNbZmllbGQubmFtZV0gPSBjb2x1bW5zW2luZGV4XTtcbiAgfSk7XG5cbiAgcmV0dXJuIGFycm93U2NoZW1hID8gbmV3IGFycm93LlRhYmxlKGFycm93U2NoZW1hLCBjcmVhT3B0cykgOiBuZXcgYXJyb3cuVGFibGUoY3JlYU9wdHMpO1xufTtcblxuLyoqXG4gKiBEdWNrRGIgdGhyb3dzIHdoZW4gZ2VvYXJyb3cgZXh0ZW5zaW9ucyBhcmUgcHJlc2VudCBpbiBtZXRhZGF0YS5cbiAqIEBwYXJhbSB0YWJsZSBBbiBhcnJvdyB0YWJsZSB0byBjbGVhciBmcm9tIGV4dGVuc2lvbnMuXG4gKiBAcmV0dXJucyBBIG1hcCBvZiByZW1vdmVkIHBlciBmaWVsZCBnZW9hcnJvdyBleHRlbnNpb25zLlxuICovXG5leHBvcnQgY29uc3QgcmVtb3ZlVW5zdXBwb3J0ZWRFeHRlbnNpb25zID0gKHRhYmxlOiBhcnJvdy5UYWJsZSk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPT4ge1xuICBjb25zdCByZW1vdmVkTWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgdGFibGUuc2NoZW1hLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICBjb25zdCBleHRlbnNpb24gPSBmaWVsZC5tZXRhZGF0YS5nZXQoR0VPQVJST1dfTUVUQURBVEFfS0VZKTtcbiAgICBpZiAoZXh0ZW5zaW9uPy5zdGFydHNXaXRoKCdnZW9hcnJvdycpKSB7XG4gICAgICByZW1vdmVkTWV0YWRhdGFbZmllbGQubmFtZV0gPSBleHRlbnNpb247XG4gICAgICBmaWVsZC5tZXRhZGF0YS5kZWxldGUoR0VPQVJST1dfTUVUQURBVEFfS0VZKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVtb3ZlZE1ldGFkYXRhO1xufTtcblxuLyoqXG4gKiBSZXN0b3JlIHJlbW92ZWQgbWV0YWRhdGEgZXh0ZW5zaW9ucyBhZnRlciBhIGNhbGwgdG8gcmVtb3ZlVW5zdXBwb3J0ZWRFeHRlbnNpb25zLlxuICogQHBhcmFtIHRhYmxlIEFuIGFycm93IHRhYmxlIHRvIHJlc3RvcmUgZ2VvYXJyb3cgZXh0ZW5zaW9ucy5cbiAqIEBwYXJhbSByZW1vdmVkRXh0ZW5zaW9ucyBBIG1hcCBvZiBwZXIgZmllbGQgZ2VvYXJyb3cgZXh0ZW5zaW9ucyB0byByZXN0b3JlLlxuICovXG5leHBvcnQgY29uc3QgcmVzdG9yZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyA9IChcbiAgdGFibGU6IGFycm93LlRhYmxlLFxuICByZW1vdmVkRXh0ZW5zaW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuKSA9PiB7XG4gIHRhYmxlLnNjaGVtYS5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gcmVtb3ZlZEV4dGVuc2lvbnNbZmllbGQubmFtZV07XG4gICAgaWYgKGV4dGVuc2lvbikge1xuICAgICAgZmllbGQubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgZXh0ZW5zaW9uKTtcbiAgICB9XG4gIH0pO1xufTtcblxuLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBBcGFjaGUgQXJyb3cgSlMgdHlwZSBpcyBhIFBvaW50IGRhdGEgdHlwZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzR2VvQXJyb3dQb2ludCh0eXBlOiBEYXRhVHlwZSkge1xuICBpZiAoRGF0YVR5cGUuaXNGaXhlZFNpemVMaXN0KHR5cGUpKSB7XG4gICAgLy8gQ2hlY2sgbGlzdCBzaXplXG4gICAgaWYgKCFbMiwgMywgNF0uaW5jbHVkZXModHlwZS5saXN0U2l6ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBjaGlsZCBvZiBGaXhlZFNpemVMaXN0IGlzIGZsb2F0aW5nIHR5cGVcbiAgICBpZiAoIURhdGFUeXBlLmlzRmxvYXQodHlwZS5jaGlsZHJlblswXSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBBcGFjaGUgQXJyb3cgSlMgdHlwZSBpcyBhIFBvaW50IGRhdGEgdHlwZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzR2VvQXJyb3dMaW5lU3RyaW5nKHR5cGU6IERhdGFUeXBlKSB7XG4gIC8vIENoZWNrIHRoZSBvdXRlciB0eXBlIGlzIGEgTGlzdFxuICBpZiAoIURhdGFUeXBlLmlzTGlzdCh0eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIHRoZSBjaGlsZCBpcyBhIHBvaW50IHR5cGVcbiAgaWYgKCFpc0dlb0Fycm93UG9pbnQodHlwZS5jaGlsZHJlblswXS50eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIEFwYWNoZSBBcnJvdyBKUyB0eXBlIGlzIGEgUG9seWdvbiBkYXRhIHR5cGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0dlb0Fycm93UG9seWdvbih0eXBlOiBEYXRhVHlwZSkge1xuICAvLyBDaGVjayB0aGUgb3V0ZXIgdmVjdG9yIGlzIGEgTGlzdFxuICBpZiAoIURhdGFUeXBlLmlzTGlzdCh0eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIHRoZSBjaGlsZCBpcyBhIGxpbmVzdHJpbmcgdmVjdG9yXG4gIGlmICghaXNHZW9BcnJvd0xpbmVTdHJpbmcodHlwZS5jaGlsZHJlblswXS50eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIEFwYWNoZSBBcnJvdyBKUyB0eXBlIGlzIGEgUG9seWdvbiBkYXRhIHR5cGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0dlb0Fycm93TXVsdGlQb2ludCh0eXBlOiBEYXRhVHlwZSkge1xuICAvLyBDaGVjayB0aGUgb3V0ZXIgdmVjdG9yIGlzIGEgTGlzdFxuICBpZiAoIURhdGFUeXBlLmlzTGlzdCh0eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIHRoZSBjaGlsZCBpcyBhIHBvaW50IHZlY3RvclxuICBpZiAoIWlzR2VvQXJyb3dQb2ludCh0eXBlLmNoaWxkcmVuWzBdLnR5cGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gQXBhY2hlIEFycm93IEpTIHR5cGUgaXMgYSBQb2x5Z29uIGRhdGEgdHlwZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzR2VvQXJyb3dNdWx0aUxpbmVTdHJpbmcodHlwZTogRGF0YVR5cGUpIHtcbiAgLy8gQ2hlY2sgdGhlIG91dGVyIHZlY3RvciBpcyBhIExpc3RcbiAgaWYgKCFEYXRhVHlwZS5pc0xpc3QodHlwZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBDaGVjayB0aGUgY2hpbGQgaXMgYSBsaW5lc3RyaW5nIHZlY3RvclxuICBpZiAoIWlzR2VvQXJyb3dMaW5lU3RyaW5nKHR5cGUuY2hpbGRyZW5bMF0udHlwZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBBcGFjaGUgQXJyb3cgSlMgdHlwZSBpcyBhIFBvbHlnb24gZGF0YSB0eXBlICovXG5leHBvcnQgZnVuY3Rpb24gaXNHZW9BcnJvd011bHRpUG9seWdvbih0eXBlOiBEYXRhVHlwZSkge1xuICAvLyBDaGVjayB0aGUgb3V0ZXIgdmVjdG9yIGlzIGEgTGlzdFxuICBpZiAoIURhdGFUeXBlLmlzTGlzdCh0eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIENoZWNrIHRoZSBjaGlsZCBpcyBhIHBvbHlnb24gdmVjdG9yXG4gIGlmICghaXNHZW9BcnJvd1BvbHlnb24odHlwZS5jaGlsZHJlblswXS50eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gU1FMIHF1ZXJ5IGlzIGEgU0VMRUNUIHF1ZXJ5IGJ5IHVzaW5nIHRoZSBFWFBMQUlOIGNvbW1hbmQuXG4gKiBAcGFyYW0gY29ubmVjdGlvbiBUaGUgRHVja0RCIGNvbm5lY3Rpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcXVlcnkgVGhlIFNRTCBxdWVyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFJlc29sdmVzIHRvIGB0cnVlYCBpZiB0aGUgcXVlcnkgaXMgYSBTRUxFQ1Qgc3RhdGVtZW50LCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNoZWNrSXNTZWxlY3RRdWVyeShcbiAgY29ubmVjdGlvbjogRGF0YWJhc2VDb25uZWN0aW9uLFxuICBxdWVyeTogc3RyaW5nXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KGBFWFBMQUlOICgke3F1ZXJ5fSlgKTtcbiAgICByZXR1cm4gcmVzdWx0Lm51bVJvd3MgPiAwO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFNwbGl0IGEgc3RyaW5nIHdpdGggcG90ZW50aWFsbHkgbXVsdGlwbGUgU1FMIHF1ZXJpZXMgKHNlcGFyYXRlZCBhcyB1c3VhbCBieSAnOycpIGludG8gYW4gYXJyYXkgb2YgcXVlcmllcy5cbiAqIFRoaXMgaW1wbGVtZW50YXRpb246XG4gKiAgLSBIYW5kbGVzIHNpbmdsZSBhbmQgZG91YmxlIHF1b3RlZCBzdHJpbmdzIHdpdGggcHJvcGVyIGVzY2FwaW5nXG4gKiAgLSBJZ25vcmVzIHNlbWljb2xvbnMgaW4gbGluZSBjb21tZW50cyAoLS0pIGFuZCBibG9jayBjb21tZW50cyAoc2xhc2ggYXN0ZXJpc2spXG4gKiAgLSBUcmltcyB3aGl0ZXNwYWNlIGZyb20gcXVlcmllc1xuICogIC0gSGFuZGxlcyBTUUwtc3R5bGUgZXNjYXBlZCBxdW90ZXMgKCcnIGluc2lkZSBzdHJpbmdzKVxuICogIC0gUmV0dXJucyBvbmx5IG5vbi1lbXB0eSBxdWVyaWVzXG4gKiBAcGFyYW0gaW5wdXQgQSBzdHJpbmcgd2l0aCBwb3RlbnRpYWxseSBtdWx0aXBsZSBTUUwgcXVlcmllcy5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHF1ZXJpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdFNxbFN0YXRlbWVudHMoaW5wdXQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcXVlcmllczogc3RyaW5nW10gPSBbXTtcbiAgbGV0IGN1cnJlbnRRdWVyeSA9ICcnO1xuICBsZXQgaW5TaW5nbGVRdW90ZSA9IGZhbHNlO1xuICBsZXQgaW5Eb3VibGVRdW90ZSA9IGZhbHNlO1xuICBsZXQgaW5MaW5lQ29tbWVudCA9IGZhbHNlO1xuICBsZXQgaW5CbG9ja0NvbW1lbnQgPSBmYWxzZTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY2hhciA9IGlucHV0W2ldO1xuXG4gICAgaWYgKGluTGluZUNvbW1lbnQpIHtcbiAgICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyO1xuICAgICAgaWYgKGNoYXIgPT09ICdcXG4nKSB7XG4gICAgICAgIGluTGluZUNvbW1lbnQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChpbkJsb2NrQ29tbWVudCkge1xuICAgICAgY3VycmVudFF1ZXJ5ICs9IGNoYXI7XG4gICAgICBpZiAoY2hhciA9PT0gJyonICYmIGlucHV0W2kgKyAxXSA9PT0gJy8nKSB7XG4gICAgICAgIGluQmxvY2tDb21tZW50ID0gZmFsc2U7XG4gICAgICAgIGN1cnJlbnRRdWVyeSArPSBpbnB1dFsrK2ldOyAvLyBDb25zdW1lICcvJ1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGluU2luZ2xlUXVvdGUpIHtcbiAgICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyO1xuICAgICAgaWYgKGNoYXIgPT09IFwiJ1wiKSB7XG4gICAgICAgIC8vIEhhbmRsZSBlc2NhcGVkIHNpbmdsZSBxdW90ZXMgaW4gU1FMXG4gICAgICAgIGlmIChpICsgMSA8IGlucHV0Lmxlbmd0aCAmJiBpbnB1dFtpICsgMV0gPT09IFwiJ1wiKSB7XG4gICAgICAgICAgY3VycmVudFF1ZXJ5ICs9IGlucHV0WysraV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5TaW5nbGVRdW90ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoaW5Eb3VibGVRdW90ZSkge1xuICAgICAgY3VycmVudFF1ZXJ5ICs9IGNoYXI7XG4gICAgICBpZiAoY2hhciA9PT0gJ1wiJykge1xuICAgICAgICAvLyBIYW5kbGUgZXNjYXBlZCBkb3VibGUgcXVvdGVzXG4gICAgICAgIGlmIChpICsgMSA8IGlucHV0Lmxlbmd0aCAmJiBpbnB1dFtpICsgMV0gPT09ICdcIicpIHtcbiAgICAgICAgICBjdXJyZW50UXVlcnkgKz0gaW5wdXRbKytpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbkRvdWJsZVF1b3RlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBjb21tZW50IHN0YXJ0c1xuICAgIGlmIChjaGFyID09PSAnLScgJiYgaW5wdXRbaSArIDFdID09PSAnLScpIHtcbiAgICAgIGluTGluZUNvbW1lbnQgPSB0cnVlO1xuICAgICAgY3VycmVudFF1ZXJ5ICs9IGNoYXIgKyBpbnB1dFsrK2ldO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGNoYXIgPT09ICcvJyAmJiBpbnB1dFtpICsgMV0gPT09ICcqJykge1xuICAgICAgaW5CbG9ja0NvbW1lbnQgPSB0cnVlO1xuICAgICAgY3VycmVudFF1ZXJ5ICs9IGNoYXIgKyBpbnB1dFsrK2ldO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9yIHF1b3RlIHN0YXJ0c1xuICAgIGlmIChjaGFyID09PSBcIidcIikge1xuICAgICAgaW5TaW5nbGVRdW90ZSA9IHRydWU7XG4gICAgICBjdXJyZW50UXVlcnkgKz0gY2hhcjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjaGFyID09PSAnXCInKSB7XG4gICAgICBpbkRvdWJsZVF1b3RlID0gdHJ1ZTtcbiAgICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHF1ZXJ5IHNlcGFyYXRvclxuICAgIGlmIChjaGFyID09PSAnOycpIHtcbiAgICAgIGNvbnN0IHRyaW1tZWQgPSBjdXJyZW50UXVlcnkudHJpbSgpO1xuICAgICAgaWYgKHRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgICAgICBxdWVyaWVzLnB1c2godHJpbW1lZCk7XG4gICAgICB9XG4gICAgICBjdXJyZW50UXVlcnkgPSAnJztcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGN1cnJlbnRRdWVyeSArPSBjaGFyO1xuICB9XG5cbiAgLy8gQWRkIHRoZSBmaW5hbCBxdWVyeVxuICBjb25zdCB0cmltbWVkID0gY3VycmVudFF1ZXJ5LnRyaW0oKTtcbiAgaWYgKHRyaW1tZWQubGVuZ3RoID4gMCkge1xuICAgIHF1ZXJpZXMucHVzaCh0cmltbWVkKTtcbiAgfVxuXG4gIHJldHVybiBxdWVyaWVzO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgU1FMIGNvbW1lbnRzIGZyb20gYSBnaXZlbiBTUUwgc3RyaW5nLlxuICogQHBhcmFtIHNxbCBUaGUgU1FMIHF1ZXJ5IHN0cmluZyBmcm9tIHdoaWNoIGNvbW1lbnRzIHNob3VsZCBiZSByZW1vdmVkLlxuICogQHJldHVybnMgVGhlIGNsZWFuZWQgU1FMIHN0cmluZyB3aXRob3V0IGNvbW1lbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlU1FMQ29tbWVudHMoc3FsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBSZW1vdmUgbXVsdGktbGluZSBjb21tZW50cyAoLyogLi4uICovKVxuICBzcWwgPSBzcWwucmVwbGFjZSgvXFwvXFwqW1xcc1xcU10qP1xcKlxcLy9nLCAnJyk7XG4gIC8vIFJlbW92ZSBzaW5nbGUtbGluZSBjb21tZW50cyAoLS0gLi4uKVxuICBzcWwgPSBzcWwucmVwbGFjZSgvLS0uKiQvZ20sICcnKTtcbiAgcmV0dXJuIHNxbC50cmltKCk7XG59XG5cbi8qKlxuICogRHJvcHMgYSB0YWJsZSBpZiBpdCBleGlzdHMgaW4gdGhlIER1Y2tEQiBkYXRhYmFzZS5cbiAqIEBwYXJhbSBjb25uZWN0aW9uIFRoZSBEdWNrREIgY29ubmVjdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSB0YWJsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGRyb3AuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGUuXG4gKiBAdGhyb3dzIExvZ3MgYW4gZXJyb3IgaWYgdGhlIHRhYmxlIGRyb3Agb3BlcmF0aW9uIGZhaWxzLlxuICovXG5leHBvcnQgY29uc3QgZHJvcFRhYmxlSWZFeGlzdHMgPSBhc3luYyAoY29ubmVjdGlvbjogRGF0YWJhc2VDb25uZWN0aW9uLCB0YWJsZU5hbWU6IHN0cmluZykgPT4ge1xuICB0cnkge1xuICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoYERST1AgVEFCTEUgSUYgRVhJU1RTIFwiJHt0YWJsZU5hbWV9XCI7YCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignRHJvcHBpbmcgdGFibGUgZmFpbGVkJywgdGFibGVOYW1lLCBlcnJvcik7XG4gIH1cbn07XG5cbi8qKlxuICogSW1wb3J0cyBhIGZpbGUgaW50byBEdWNrREIgYXMgYSB0YWJsZSwgc3VwcG9ydGluZyBtdWx0aXBsZSBmb3JtYXRzIGZyb20gU1VQUE9SVEVEX0RVQ0tEQl9EUk9QX0VYVEVOU0lPTlMuXG4gKiBAcGFyYW0gZmlsZSBUaGUgZmlsZSB0byBiZSBpbXBvcnRlZC5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZpbGUgaGFzIGJlZW4gcHJvY2Vzc2VkIGludG8gYSBEdWNrREIgdGFibGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0YWJsZUZyb21GaWxlKGZpbGU6IEZpbGUgfCBudWxsKTogUHJvbWlzZTxudWxsIHwgRXJyb3I+IHtcbiAgaWYgKCFmaWxlKSByZXR1cm4gbmV3IEVycm9yKCdGaWxlIERyYWcgJiBEcm9wOiBObyBmaWxlJyk7XG5cbiAgY29uc3QgZmlsZUV4dCA9IFNVUFBPUlRFRF9EVUNLREJfRFJPUF9FWFRFTlNJT05TLmZpbmQoZXh0ID0+IGZpbGUubmFtZS5lbmRzV2l0aChleHQpKTtcbiAgaWYgKCFmaWxlRXh0KSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcihcIkZpbGUgRHJhZyAmIERyb3A6IEZpbGUgZXh0ZW5zaW9uIGlzbid0IHN1cHBvcnRlZFwiKTtcbiAgfVxuXG4gIGNvbnN0IGRiID0gYXdhaXQgZ2V0QXBwbGljYXRpb25Db25maWcoKS5kYXRhYmFzZTtcbiAgaWYgKCFkYikge1xuICAgIHJldHVybiBuZXcgRXJyb3IoJ1RoZSBkYXRhYmFzZSBpcyBub3QgY29uZmlndXJlZCBwcm9wZXJseS4nKTtcbiAgfVxuICBjb25zdCBjID0gYXdhaXQgZGIuY29ubmVjdCgpO1xuXG4gIGxldCBlcnJvcjogRXJyb3IgfCBudWxsID0gbnVsbDtcblxuICB0cnkge1xuICAgIGNvbnN0IHRhYmxlTmFtZSA9IHNhbml0aXplRHVja0RCVGFibGVOYW1lKGZpbGUubmFtZSk7XG4gICAgY29uc3Qgc291cmNlTmFtZSA9ICd0ZW1wX2ZpbGVfaGFuZGxlJztcblxuICAgIGMucXVlcnkoYGluc3RhbGwgc3BhdGlhbDtcbiAgICAgIGxvYWQgc3BhdGlhbDtgKTtcblxuICAgIGlmIChmaWxlRXh0ID09PSAnYXJyb3cnKSB7XG4gICAgICBjb25zdCBhcnJheUJ1ZmZlciA9IGF3YWl0IGZpbGUuYXJyYXlCdWZmZXIoKTtcbiAgICAgIGNvbnN0IHVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcik7XG4gICAgICBjb25zdCBhcnJvd1RhYmxlID0gYXJyb3cudGFibGVGcm9tSVBDKHVpbnQ4QXJyYXkpO1xuXG4gICAgICBhd2FpdCBjLmluc2VydEFycm93VGFibGUoYXJyb3dUYWJsZSwge25hbWU6IHRhYmxlTmFtZX0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBkYi5yZWdpc3RlckZpbGVIYW5kbGUoc291cmNlTmFtZSwgZmlsZSwgRHVja0RCRGF0YVByb3RvY29sLkJST1dTRVJfRklMRVJFQURFUiwgdHJ1ZSk7XG5cbiAgICAgIGlmIChmaWxlRXh0ID09PSAnY3N2Jykge1xuICAgICAgICBhd2FpdCBjLnF1ZXJ5KGBcbiAgICAgICAgICAgIENSRUFURSBUQUJMRSAnJHt0YWJsZU5hbWV9JyBBU1xuICAgICAgICAgICAgU0VMRUNUICpcbiAgICAgICAgICAgIEZST00gcmVhZF9jc3YoJyR7c291cmNlTmFtZX0nLCBoZWFkZXIgPSB0cnVlLCBhdXRvX2RldGVjdCA9IHRydWUsIHNhbXBsZV9zaXplID0gLTEpO1xuICAgICAgICAgIGApO1xuICAgICAgfSBlbHNlIGlmIChmaWxlRXh0ID09PSAnanNvbicpIHtcbiAgICAgICAgYXdhaXQgYy5xdWVyeShgXG4gICAgICAgICAgICBDUkVBVEUgVEFCTEUgJyR7dGFibGVOYW1lfScgQVNcbiAgICAgICAgICAgIFNFTEVDVCAqXG4gICAgICAgICAgICBGUk9NIHJlYWRfanNvbl9hdXRvKCcke3NvdXJjZU5hbWV9Jyk7XG4gICAgICAgICAgYCk7XG4gICAgICB9IGVsc2UgaWYgKGZpbGVFeHQgPT09ICdnZW9qc29uJykge1xuICAgICAgICBhd2FpdCBjLnF1ZXJ5KGBcbiAgICAgICAgICAgIENSRUFURSBUQUJMRSAnJHt0YWJsZU5hbWV9JyBBU1xuICAgICAgICAgICAgU0VMRUNUICpcbiAgICAgICAgICAgIEZST00gU1RfUkVBRCgnJHtzb3VyY2VOYW1lfScsIGtlZXBfd2tiID0gVFJVRSk7XG4gICAgICAgICAgYCk7XG4gICAgICB9IGVsc2UgaWYgKGZpbGVFeHQgPT09ICdwYXJxdWV0Jykge1xuICAgICAgICBhd2FpdCBjLnF1ZXJ5KGBcbiAgICAgICAgICAgIENSRUFURSBUQUJMRSAnJHt0YWJsZU5hbWV9JyBBU1xuICAgICAgICAgICAgU0VMRUNUICpcbiAgICAgICAgICAgIEZST00gcmVhZF9wYXJxdWV0KCcke3NvdXJjZU5hbWV9JylcbiAgICAgICAgICBgKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yRGF0YSkge1xuICAgIGlmIChlcnJvckRhdGEgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGVycm9yRGF0YS5tZXNzYWdlIHx8ICcnO1xuICAgICAgLy8gb3V0cHV0IG1vcmUgcmVhZGFibGUgZXJyb3JzIGZvciBrbm93biBpc3N1ZXNcbiAgICAgIGlmIChtZXNzYWdlLmluY2x1ZGVzKCdBcnJvdyBUeXBlIHdpdGggZXh0ZW5zaW9uIG5hbWU6IGdlb2Fycm93JykpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1RoZSBHZW9BcnJvdyBleHRlbnNpb25zIGFyZSBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbm5lY3RlZCBEdWNrREIgdmVyc2lvbi4nXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoXCJHZW9wYXJxdWV0IGNvbHVtbiAnZ2VvbWV0cnknIGRvZXMgbm90IGhhdmUgZ2VvbWV0cnkgdHlwZXNcIikpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgYEludmFsaWQgSW5wdXQgRXJyb3I6IEdlb3BhcnF1ZXQgY29sdW1uICdnZW9tZXRyeScgZG9lcyBub3QgaGF2ZSBnZW9tZXRyeSB0eXBlcy5cblBvc3NpYmxlIHJlYXNvbnM6XG4gIC0gT2xkIC5wYXJxdWV0IGZpbGVzIHRoYXQgZG9uJ3QgbWF0Y2ggdGhlIFBhcnF1ZXQgZm9ybWF0IHNwZWNpZmljYXRpb24uXG4gIC0gVW5zdXBwb3J0ZWQgY29tcHJlc3Npb24uYFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghZXJyb3IpIHtcbiAgICAgIGVycm9yID0gZXJyb3JEYXRhIGFzIEVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGF3YWl0IGMuY2xvc2UoKTtcblxuICByZXR1cm4gZXJyb3I7XG59XG5cbi8qKlxuICogU2FuaXRpemVzIGEgZmlsZSBuYW1lIHRvIGJlIGEgdmFsaWQgRHVja0RCIHRhYmxlIG5hbWUuXG4gKiBAcGFyYW0gZmlsZU5hbWUgVGhlIGlucHV0IGZpbGUgbmFtZSB0byBiZSBzYW5pdGl6ZWQuXG4gKiBAcmV0dXJucyBBIHZhbGlkIER1Y2tEQiB0YWJsZSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2FuaXRpemVEdWNrREJUYWJsZU5hbWUoZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFJlcGxhY2UgaW52YWxpZCBjaGFyYWN0ZXJzIHdpdGggdW5kZXJzY29yZXNcbiAgbGV0IG5hbWUgPSBmaWxlTmFtZS5yZXBsYWNlKC9bXmEtekEtWjAtOV9dL2csICdfJyk7XG4gIC8vIEVuc3VyZSBpdCBkb2Vzbid0IHN0YXJ0IHdpdGggYSBkaWdpdFxuICBpZiAoL15cXGQvLnRlc3QobmFtZSkpIHtcbiAgICBuYW1lID0gYHRfJHtuYW1lfWA7XG4gIH1cbiAgcmV0dXJuIG5hbWUgfHwgJ2RlZmF1bHRfdGFibGUnO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXQSxJQUFBQSxLQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxXQUFBLEdBQUFGLE9BQUE7QUFFQSxJQUFBRyxVQUFBLEdBQUFILE9BQUE7QUFFQSxJQUFBSSxNQUFBLEdBQUFKLE9BQUE7QUFBMEUsU0FBQUsseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFQLHdCQUFBTyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFHLEdBQUEsQ0FBQU4sQ0FBQSxVQUFBRyxDQUFBLENBQUFJLEdBQUEsQ0FBQVAsQ0FBQSxPQUFBUSxDQUFBLEtBQUFDLFNBQUEsVUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxDQUFBLElBQUFkLENBQUEsb0JBQUFjLENBQUEsT0FBQUMsY0FB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
|
|
@@ -88,13 +88,14 @@ var KeplerGlDuckDbTable = exports.KeplerGlDuckDbTable = /*#__PURE__*/function (_
|
|
|
88
88
|
_context.next = 10;
|
|
89
89
|
return c.query(createTableSql);
|
|
90
90
|
case 10:
|
|
91
|
-
_context.next =
|
|
91
|
+
_context.next = 16;
|
|
92
92
|
break;
|
|
93
93
|
case 12:
|
|
94
94
|
_context.prev = 12;
|
|
95
95
|
_context.t0 = _context["catch"](1);
|
|
96
96
|
console.log('importRowData', _context.t0);
|
|
97
|
-
|
|
97
|
+
throw _context.t0;
|
|
98
|
+
case 16:
|
|
98
99
|
case "end":
|
|
99
100
|
return _context.stop();
|
|
100
101
|
}
|
|
@@ -123,18 +124,19 @@ var KeplerGlDuckDbTable = exports.KeplerGlDuckDbTable = /*#__PURE__*/function (_
|
|
|
123
124
|
_context2.next = 8;
|
|
124
125
|
return c.query(createTableSql);
|
|
125
126
|
case 8:
|
|
126
|
-
_context2.next =
|
|
127
|
+
_context2.next = 14;
|
|
127
128
|
break;
|
|
128
129
|
case 10:
|
|
129
130
|
_context2.prev = 10;
|
|
130
131
|
_context2.t0 = _context2["catch"](1);
|
|
131
132
|
console.error('importGeoJsonData', _context2.t0);
|
|
132
|
-
|
|
133
|
+
throw _context2.t0;
|
|
134
|
+
case 14:
|
|
133
135
|
return _context2.abrupt("return", {
|
|
134
136
|
// _geojson column is created from geometry with keep_wkb flag and contains valid WKB data.
|
|
135
137
|
geoarrowMetadata: (0, _defineProperty2["default"])({}, KEPLER_GEOM_FROM_GEOJSON_COLUMN, _constants.GEOARROW_EXTENSIONS.WKB)
|
|
136
138
|
});
|
|
137
|
-
case
|
|
139
|
+
case 15:
|
|
138
140
|
case "end":
|
|
139
141
|
return _context2.stop();
|
|
140
142
|
}
|
|
@@ -171,7 +173,7 @@ var KeplerGlDuckDbTable = exports.KeplerGlDuckDbTable = /*#__PURE__*/function (_
|
|
|
171
173
|
case 10:
|
|
172
174
|
// restore unsupported extensions that throw exceptions in DuckDb
|
|
173
175
|
(0, _duckdbTableUtils2.restoreUnsupportedExtensions)(arrowTable, adjustedMetadata);
|
|
174
|
-
_context3.next =
|
|
176
|
+
_context3.next = 17;
|
|
175
177
|
break;
|
|
176
178
|
case 13:
|
|
177
179
|
_context3.prev = 13;
|
|
@@ -179,13 +181,14 @@ var KeplerGlDuckDbTable = exports.KeplerGlDuckDbTable = /*#__PURE__*/function (_
|
|
|
179
181
|
// Known issues:
|
|
180
182
|
// 1) Arrow Type with extension name: geoarrow.point and format: +w:2 is not currently supported in DuckDB.
|
|
181
183
|
console.error('importArrowData', _context3.t0);
|
|
182
|
-
|
|
184
|
+
throw _context3.t0;
|
|
185
|
+
case 17:
|
|
183
186
|
return _context3.abrupt("return", {
|
|
184
187
|
geoarrowMetadata: _objectSpread(_objectSpread({}, SUGGESTED_GEOM_COLUMNS), adjustedMetadata),
|
|
185
188
|
// use fields generated from the created arrow table
|
|
186
189
|
useNewFields: true
|
|
187
190
|
});
|
|
188
|
-
case
|
|
191
|
+
case 18:
|
|
189
192
|
case "end":
|
|
190
193
|
return _context3.stop();
|
|
191
194
|
}
|
|
@@ -205,7 +208,7 @@ var KeplerGlDuckDbTable = exports.KeplerGlDuckDbTable = /*#__PURE__*/function (_
|
|
|
205
208
|
key: "createTableAndGetArrow",
|
|
206
209
|
value: (function () {
|
|
207
210
|
var _createTableAndGetArrow = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(data) {
|
|
208
|
-
var db, c, tableName, format, _data$rows, _data$rows2, _data$rows3, _data$cols, importDetails, fields, cols, _data$fields, _ref4, _ref4$geoarrowMetadat, geoarrowMetadata, _ref4$useNewFields, useNewFields, duckDbColumns, tableDuckDBTypes,
|
|
211
|
+
var db, c, tableName, format, _data$rows, _data$rows2, _data$rows3, _data$cols, importDetails, fields, cols, _data$fields, _ref4, _ref4$geoarrowMetadat, geoarrowMetadata, _ref4$useNewFields, useNewFields, duckDbColumns, tableDuckDBTypes, adjustedQuery, arrowResult;
|
|
209
212
|
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
210
213
|
while (1) switch (_context4.prev = _context4.next) {
|
|
211
214
|
case 0:
|
|
@@ -297,11 +300,10 @@ var KeplerGlDuckDbTable = exports.KeplerGlDuckDbTable = /*#__PURE__*/function (_
|
|
|
297
300
|
case 38:
|
|
298
301
|
duckDbColumns = _context4.sent;
|
|
299
302
|
tableDuckDBTypes = (0, _duckdbTableUtils2.getDuckDBColumnTypesMap)(duckDbColumns);
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
_context4.next = 44;
|
|
303
|
+
adjustedQuery = (0, _duckdbTableUtils2.castDuckDBTypesForKepler)(tableName, duckDbColumns);
|
|
304
|
+
_context4.next = 43;
|
|
303
305
|
return c.query(adjustedQuery);
|
|
304
|
-
case
|
|
306
|
+
case 43:
|
|
305
307
|
arrowResult = _context4.sent;
|
|
306
308
|
// TODO if format is an arrow table then just use the original one, instead of the new table from the query?
|
|
307
309
|
|
|
@@ -314,10 +316,11 @@ var KeplerGlDuckDbTable = exports.KeplerGlDuckDbTable = /*#__PURE__*/function (_
|
|
|
314
316
|
});
|
|
315
317
|
_context4.next = 53;
|
|
316
318
|
break;
|
|
317
|
-
case
|
|
318
|
-
_context4.prev =
|
|
319
|
+
case 49:
|
|
320
|
+
_context4.prev = 49;
|
|
319
321
|
_context4.t0 = _context4["catch"](34);
|
|
320
322
|
console.error('DuckDB table: createTableAndGetArrow', _context4.t0);
|
|
323
|
+
throw _context4.t0;
|
|
321
324
|
case 53:
|
|
322
325
|
_context4.next = 55;
|
|
323
326
|
return c.close();
|
|
@@ -330,7 +333,7 @@ var KeplerGlDuckDbTable = exports.KeplerGlDuckDbTable = /*#__PURE__*/function (_
|
|
|
330
333
|
case "end":
|
|
331
334
|
return _context4.stop();
|
|
332
335
|
}
|
|
333
|
-
}, _callee4, this, [[34,
|
|
336
|
+
}, _callee4, this, [[34, 49]]);
|
|
334
337
|
}));
|
|
335
338
|
function createTableAndGetArrow(_x4) {
|
|
336
339
|
return _createTableAndGetArrow.apply(this, arguments);
|
|
@@ -474,4 +477,4 @@ var restoreGeoarrowMetadata = exports.restoreGeoarrowMetadata = function restore
|
|
|
474
477
|
}
|
|
475
478
|
});
|
|
476
479
|
};
|
|
477
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9jb25zdGFudHMiLCJfcHJvY2Vzc29ycyIsIl90YWJsZSIsIl91dGlscyIsIl9kYXRhUHJvY2Vzc29yIiwiX2R1Y2tkYlRhYmxlVXRpbHMiLCJfZHVja2RiVGFibGVVdGlsczIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YzIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJfc3VwZXJQcm9wR2V0IiwicCIsIl9nZXQyIiwiRFVDS0RCX0dFT01fQ09MVU1OIiwiRFVDS0RCX1dLQl9DT0xVTU4iLCJLRVBMRVJfR0VPTV9GUk9NX0dFT0pTT05fQ09MVU1OIiwiU1VHR0VTVEVEX0dFT01fQ09MVU1OUyIsIkdFT0FSUk9XX0VYVEVOU0lPTlMiLCJXS0IiLCJLZXBsZXJHbER1Y2tEYlRhYmxlIiwiZXhwb3J0cyIsIl9LZXBsZXJUYWJsZSIsInByb3BzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJfaW1wb3J0Um93RGF0YSIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiX3JlZiIsImRhdGEiLCJkYiIsImMiLCJmaWVsZHMiLCJyb3dzIiwicm93c0ZvckRiIiwiY29sdW1ucyIsImNyZWF0ZVRhYmxlU3FsIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsInJvdyIsIm5ld1JvdyIsImluZGV4IiwibmFtZSIsInJlZ2lzdGVyRmlsZVRleHQiLCJpZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZWR1Y2UiLCJhY2MiLCJmaWVsZCIsImNvbmNhdCIsImR1Y2tEQkNvbHVtblR5cGUiLCJsYWJlbCIsInF1ZXJ5IiwidDAiLCJjb25zb2xlIiwibG9nIiwic3RvcCIsImltcG9ydFJvd0RhdGEiLCJfeCIsIl9pbXBvcnRHZW9Kc29uRGF0YSIsIl9jYWxsZWUyIiwiX3JlZjIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJlcnJvciIsImFicnVwdCIsImdlb2Fycm93TWV0YWRhdGEiLCJpbXBvcnRHZW9Kc29uRGF0YSIsIl94MiIsIl9pbXBvcnRBcnJvd0RhdGEiLCJfY2FsbGVlMyIsIl9yZWYzIiwiYWRqdXN0ZWRNZXRhZGF0YSIsImFycm93VGFibGUiLCJzZXR1cFNxbCIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsIlRhYmxlIiwicmVzdG9yZUFycm93VGFibGUiLCJjb2xzIiwiYXJyb3dTY2hlbWEiLCJyZW1vdmVVbnN1cHBvcnRlZEV4dGVuc2lvbnMiLCJpbnNlcnRBcnJvd1RhYmxlIiwicmVzdG9yZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyIsInVzZU5ld0ZpZWxkcyIsImltcG9ydEFycm93RGF0YSIsIl94MyIsIl9jcmVhdGVUYWJsZUFuZEdldEFycm93IiwiX2NhbGxlZTQiLCJ0YWJsZU5hbWUiLCJmb3JtYXQiLCJfZGF0YSRyb3dzIiwiX2RhdGEkcm93czIiLCJfZGF0YSRyb3dzMyIsIl9kYXRhJGNvbHMiLCJpbXBvcnREZXRhaWxzIiwiX2RhdGEkZmllbGRzIiwiX3JlZjQiLCJfcmVmNCRnZW9hcnJvd01ldGFkYXQiLCJfcmVmNCR1c2VOZXdGaWVsZHMiLCJkdWNrRGJDb2x1bW5zIiwidGFibGVEdWNrREJUeXBlcyIsImNvbHVtbnNUb0NvbnZlcnRUb1dLQiIsImFkanVzdGVkUXVlcnkiLCJhcnJvd1Jlc3VsdCIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiZGF0YWJhc2UiLCJzZW50IiwiY29ubmVjdCIsImRyb3BUYWJsZUlmRXhpc3RzIiwibWV0YWRhdGEiLCJfdHlwZW9mMiIsIkRBVEFTRVRfRk9STUFUUyIsInR5cGUiLCJnZW9qc29uIiwiVmVjdG9yIiwiZ2V0RHVja0RCQ29sdW1uVHlwZXMiLCJnZXREdWNrREJDb2x1bW5UeXBlc01hcCIsImdldEdlb21ldHJ5Q29sdW1ucyIsImNvbnN0cnVjdFNUX2FzV0tCUXVlcnkiLCJyZXN0b3JlR2VvYXJyb3dNZXRhZGF0YSIsImFycm93U2NoZW1hVG9GaWVsZHMiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwibnVtQ29scyIsImdldENoaWxkQXQiLCJjb2wiLCJjbG9zZSIsImNyZWF0ZVRhYmxlQW5kR2V0QXJyb3ciLCJfeDQiLCJfaW1wb3J0RGF0YSIsIl9jYWxsZWU1IiwiX3JlZjUiLCJfeWllbGQkdGhpcyRjcmVhdGVUYWIiLCJfY2FsbGVlNSQiLCJfY29udGV4dDUiLCJEYXRhc2V0VHlwZSIsIlZFQ1RPUl9USUxFIiwiaW1wb3J0RGF0YSIsIl94NSIsIl91cGRhdGUiLCJfY2FsbGVlNiIsIl95aWVsZCR0aGlzJGNyZWF0ZVRhYjIiLCJfY2FsbGVlNiQiLCJfY29udGV4dDYiLCJ1cGRhdGUiLCJfeDYiLCJLZXBsZXJUYWJsZSIsImlucHV0Rm9ybWF0IiwicHJvY2Vzc29yIiwiaXNBcnJvd0RhdGEiLCJwcm9jZXNzQXJyb3dCYXRjaGVzIiwia2VwbGVyZ2wiLCJpc0tlcGxlckdsTWFwIiwicHJvY2Vzc0tlcGxlcmdsSlNPTmZvckR1Y2tEYiIsImlzUm93T2JqZWN0IiwicHJvY2Vzc0NzdlJvd09iamVjdCIsImlzR2VvSnNvbiIsInByb2Nlc3NHZW9qc29uIiwiZCIsInNjaGVtYSIsImYiLCJEYXRhVHlwZSIsImlzQmluYXJ5IiwiR0VPQVJST1dfTUVUQURBVEFfS0VZIiwiaXNHZW9BcnJvd1BvaW50IiwiUE9JTlQiLCJpc0dlb0Fycm93TGluZVN0cmluZyIsIkxJTkVTVFJJTkciLCJpc0dlb0Fycm93UG9seWdvbiIsIlBPTFlHT04iLCJpc0dlb0Fycm93TXVsdGlQb2ludCIsIk1VTFRJUE9JTlQiLCJpc0dlb0Fycm93TXVsdGlMaW5lU3RyaW5nIiwiTVVMVElMSU5FU1RSSU5HIiwiaXNHZW9BcnJvd011bHRpUG9seWdvbiIsIk1VTFRJUE9MWUdPTiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YWJsZS9kdWNrZGItdGFibGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcblxuaW1wb3J0IHtcbiAgRGF0YXNldFR5cGUsXG4gIERBVEFTRVRfRk9STUFUUyxcbiAgR0VPQVJST1dfRVhURU5TSU9OUyxcbiAgR0VPQVJST1dfTUVUQURBVEFfS0VZXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIGFycm93U2NoZW1hVG9GaWVsZHMsXG4gIGlzQXJyb3dEYXRhLFxuICBpc0dlb0pzb24sXG4gIGlzS2VwbGVyR2xNYXAsXG4gIGlzUm93T2JqZWN0LFxuICBwcm9jZXNzQXJyb3dCYXRjaGVzXG59IGZyb20gJ0BrZXBsZXIuZ2wvcHJvY2Vzc29ycyc7XG5pbXBvcnQge0tlcGxlclRhYmxlfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7RmllbGR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtnZXRBcHBsaWNhdGlvbkNvbmZpZywgRGF0YWJhc2VBZGFwdGVyLCBEYXRhYmFzZUNvbm5lY3Rpb259IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG5pbXBvcnQge1xuICBwcm9jZXNzQ3N2Um93T2JqZWN0LFxuICBwcm9jZXNzR2VvanNvbixcbiAgcHJvY2Vzc0tlcGxlcmdsSlNPTmZvckR1Y2tEYixcbiAgUHJvY2Vzc29yUmVzdWx0XG59IGZyb20gJy4uL3Byb2Nlc3NvcnMvZGF0YS1wcm9jZXNzb3InO1xuXG5pbXBvcnQge1xuICBpc0dlb0Fycm93UG9pbnQsXG4gIGlzR2VvQXJyb3dMaW5lU3RyaW5nLFxuICBpc0dlb0Fycm93UG9seWdvbixcbiAgaXNHZW9BcnJvd011bHRpUG9pbnQsXG4gIGlzR2VvQXJyb3dNdWx0aUxpbmVTdHJpbmcsXG4gIGlzR2VvQXJyb3dNdWx0aVBvbHlnb25cbn0gZnJvbSAnLi9kdWNrZGItdGFibGUtdXRpbHMnO1xuXG5pbXBvcnQge1xuICBjb25zdHJ1Y3RTVF9hc1dLQlF1ZXJ5LFxuICBkcm9wVGFibGVJZkV4aXN0cyxcbiAgZ2V0RHVja0RCQ29sdW1uVHlwZXMsXG4gIGdldER1Y2tEQkNvbHVtblR5cGVzTWFwLFxuICBnZXRHZW9tZXRyeUNvbHVtbnMsXG4gIHJlbW92ZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyxcbiAgcmVzdG9yZUFycm93VGFibGUsXG4gIHJlc3RvcmVVbnN1cHBvcnRlZEV4dGVuc2lvbnNcbn0gZnJvbSAnLi4vdGFibGUvZHVja2RiLXRhYmxlLXV0aWxzJztcblxuLy8gVE9ETyB1c2UgZmlsZXMgZnJvbSBkaXNrIG9yIHVybCBkaXJlY3RseSwgd2l0aG91dCBwYXJzaW5nIGJ5IGxvYWRlcnMgYW5kIHRoZW4gaW5nZWN0aW9uIGludG8gRGVja0RiXG5cbi8qKlxuICogRGVmYXVsdCBEdWNrRGIgZ2VvbWV0cnkgY29sdW1ucyBjcmVhdGVkIGJ5IFNUX1JFQURcbiAqL1xuY29uc3QgRFVDS0RCX0dFT01fQ09MVU1OID0gJ2dlb20nO1xuY29uc3QgRFVDS0RCX1dLQl9DT0xVTU4gPSAnd2tiX2dlb21ldHJ5JztcblxuLyoqXG4gRGVmYXVsdCBjb2x1bW4gbmFtZSBmb3IgcHJvY2Vzc2VkIGdlb2pzb24gaW4gS2VwbGVyLlxuIFVzZSB0aGlzIG5hbWUgdG8gcmVuYW1lIGRlZmF1bHQgJ2dlb20nIGNvbHVtbiBmcm9tIER1Y2tEYlxuIGluIG9yZGVyIHRvIHN1cHBvcnQgS2VwbGVyIG1hcHMgc2F2ZWQgYmVmb3JlIGludHJvZHVjdGlvbiBvZiBEdWNrRGIgcGx1Z2luLlxuICovXG5jb25zdCBLRVBMRVJfR0VPTV9GUk9NX0dFT0pTT05fQ09MVU1OID0gJ19nZW9qc29uJztcblxuLyoqXG4gKiBOYW1lcyBvZiBjb2x1bW5zIHRoYXQgbW9zdCBsaWtlbHkgY29udGFpbiBiaW5hcnkgd2tiIGdlb21ldHJ5XG4gKi9cbmNvbnN0IFNVR0dFU1RFRF9HRU9NX0NPTFVNTlMgPSB7XG4gIFtLRVBMRVJfR0VPTV9GUk9NX0dFT0pTT05fQ09MVU1OXTogR0VPQVJST1dfRVhURU5TSU9OUy5XS0IsXG4gIFtEVUNLREJfR0VPTV9DT0xVTU5dOiBHRU9BUlJPV19FWFRFTlNJT05TLldLQixcbiAgZ2VvbWV0cnk6IEdFT0FSUk9XX0VYVEVOU0lPTlMuV0tCXG59O1xuXG50eXBlIEltcG9ydERhdGFUb0R1Y2tQcm9wcyA9IHtcbiAgZGF0YTogUHJvY2Vzc29yUmVzdWx0ICYge2Fycm93U2NoZW1hOiBhcnJvdy5TY2hlbWF9O1xuICBkYjogRGF0YWJhc2VBZGFwdGVyO1xuICBjOiBEYXRhYmFzZUNvbm5lY3Rpb247XG59O1xuXG50eXBlIEltcG9ydERhdGFUb0R1Y2tSZXN1bHQgPSB7XG4gIC8vIER1Y2tEYiBkcm9wcyBnZW9hcnJvdyBtZXRhZGF0YSwgc28gdHJ5IHRvIHByZXNlcnZlIGFuZCB0aGVuIHJlc3RvcmUgdGhlIGV4dGVuc2lvbiBuYW1lXG4gIGdlb2Fycm93TWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAvLyBVc2UgZmllbGRzIGZyb20gYXJyb3cgdGFibGUgZXZlbiBpZiBmaWVsZHMgYXJlIHByb3ZpZGVkXG4gIHVzZU5ld0ZpZWxkcz86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY2xhc3MgS2VwbGVyR2xEdWNrRGJUYWJsZSBleHRlbmRzIEtlcGxlclRhYmxlIHtcbiAgZGVjbGFyZSByZWFkb25seSBpZDogc3RyaW5nO1xuICBkZWNsYXJlIGxhYmVsOiBzdHJpbmc7XG4gIGRlY2xhcmUgdHlwZTogc3RyaW5nO1xuICBkZWNsYXJlIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICB9XG5cbiAgYXN5bmMgaW1wb3J0Um93RGF0YSh7ZGF0YSwgZGIsIGN9OiBJbXBvcnREYXRhVG9EdWNrUHJvcHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge2ZpZWxkcywgcm93c30gPSBkYXRhO1xuXG4gICAgICAvLyBEQVRBU0VUX0ZPUk1BVFMua2VwbGVyZ2wgbG9hZHMgZGF0YSBhcyBhbnlbXVtdIGluc3RlYWQgb2YgW3t9XVxuICAgICAgLy8gVE9ETyBwb3RlbnRpYWwgbWVtb3J5IHVzYWdlIGV4cGxvc2lvbjogb3JpZ2luYWwgZGF0YSwgbmV3IG9iamVjdCBhbmQgdGhlbiBEdWNrRGIgdGFibGVcbiAgICAgIGNvbnN0IHJvd3NGb3JEYiA9IEFycmF5LmlzQXJyYXkocm93c1swXSlcbiAgICAgICAgPyByb3dzLm1hcChyb3cgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3Um93ID0ge307XG4gICAgICAgICAgICByb3cuZm9yRWFjaCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIG5ld1Jvd1tmaWVsZHNbaW5kZXhdLm5hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBuZXdSb3c7XG4gICAgICAgICAgfSlcbiAgICAgICAgOiByb3dzO1xuXG4gICAgICBhd2FpdCBkYi5yZWdpc3RlckZpbGVUZXh0KHRoaXMuaWQsIEpTT04uc3RyaW5naWZ5KHJvd3NGb3JEYikpO1xuXG4gICAgICBjb25zdCBjb2x1bW5zID0gZmllbGRzLnJlZHVjZSgoYWNjLCBmaWVsZCwgaW5kZXgpID0+IHtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPIGV4dGVuZCBmaWVsZHMgdG8gY29udGFpbiBkdWNrREJDb2x1bW5UeXBlXG4gICAgICAgIHJldHVybiBgJHthY2N9JHtpbmRleCA+IDAgPyAnLCcgOiAnJ30gJyR7ZmllbGQubmFtZX0nOiAnJHtmaWVsZC5kdWNrREJDb2x1bW5UeXBlfSdgO1xuICAgICAgfSwgJycpO1xuXG4gICAgICBjb25zdCBjcmVhdGVUYWJsZVNxbCA9IGBcbiAgICAgICAgQ1JFQVRFIFRBQkxFICcke3RoaXMubGFiZWx9JyBBU1xuICAgICAgICBTRUxFQ1QgKlxuICAgICAgICBGUk9NIHJlYWRfanNvbignJHt0aGlzLmlkfScsXG4gICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMgPSB7JHtjb2x1bW5zfX0pO1xuICAgICAgYDtcbiAgICAgIGF3YWl0IGMucXVlcnkoY3JlYXRlVGFibGVTcWwpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZygnaW1wb3J0Um93RGF0YScsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpbXBvcnRHZW9Kc29uRGF0YSh7ZGF0YSwgZGIsIGN9OiBJbXBvcnREYXRhVG9EdWNrUHJvcHMpOiBQcm9taXNlPEltcG9ydERhdGFUb0R1Y2tSZXN1bHQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge3Jvd3N9ID0gZGF0YTtcbiAgICAgIGF3YWl0IGRiLnJlZ2lzdGVyRmlsZVRleHQodGhpcy5pZCwgSlNPTi5zdHJpbmdpZnkocm93cykpO1xuXG4gICAgICBjb25zdCBjcmVhdGVUYWJsZVNxbCA9IGBcbiAgICAgICAgaW5zdGFsbCBzcGF0aWFsO1xuICAgICAgICBsb2FkIHNwYXRpYWw7XG4gICAgICAgIENSRUFURSBUQUJMRSAnJHt0aGlzLmxhYmVsfScgQVMgXG4gICAgICAgIFNFTEVDVCAqXG4gICAgICAgIEZST00gU1RfUkVBRCgnJHt0aGlzLmlkfScsIGtlZXBfd2tiID0gVFJVRSk7XG4gICAgICAgIEFMVEVSIFRBQkxFICcke3RoaXMubGFiZWx9JyBSRU5BTUUgJyR7RFVDS0RCX1dLQl9DT0xVTU59JyBUTyAnJHtLRVBMRVJfR0VPTV9GUk9NX0dFT0pTT05fQ09MVU1OfSc7XG4gICAgICBgO1xuICAgICAgYXdhaXQgYy5xdWVyeShjcmVhdGVUYWJsZVNxbCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2ltcG9ydEdlb0pzb25EYXRhJywgZXJyb3IpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAvLyBfZ2VvanNvbiBjb2x1bW4gaXMgY3JlYXRlZCBmcm9tIGdlb21ldHJ5IHdpdGgga2VlcF93a2IgZmxhZyBhbmQgY29udGFpbnMgdmFsaWQgV0tCIGRhdGEuXG4gICAgICBnZW9hcnJvd01ldGFkYXRhOiB7W0tFUExFUl9HRU9NX0ZST01fR0VPSlNPTl9DT0xVTU5dOiBHRU9BUlJPV19FWFRFTlNJT05TLldLQn1cbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgaW1wb3J0QXJyb3dEYXRhKHtkYXRhLCBjfTogSW1wb3J0RGF0YVRvRHVja1Byb3BzKTogUHJvbWlzZTxJbXBvcnREYXRhVG9EdWNrUmVzdWx0PiB7XG4gICAgbGV0IGFkanVzdGVkTWV0YWRhdGEgPSB7fTtcbiAgICB0cnkge1xuICAgICAgLy8gMSkgZGF0YS5yb3dzIGNvbnRhaW5zIGFuIGFycm93IHRhYmxlIGNyZWF0ZWQgYnkgQWRkIHRvIE1hcCBkYXRhIGZyb20gRHVja0RiIHF1ZXJ5LlxuICAgICAgLy8gMikgYXJyb3cgdGFibGUgaXMgaW4gY29scyAmIGZpZWxkcyB3aGVuIGEgZmlsZSBpcyBkcmFnZ2VkICYgZHJvcHBlZCBpbnRvIEFkZCBEYXRhIFRvIE1hcCBkaWFsb2cuXG4gICAgICBjb25zdCBhcnJvd1RhYmxlID1cbiAgICAgICAgZGF0YS5yb3dzIGluc3RhbmNlb2YgYXJyb3cuVGFibGVcbiAgICAgICAgICA/IGRhdGEucm93c1xuICAgICAgICAgIDogcmVzdG9yZUFycm93VGFibGUoZGF0YS5jb2xzIHx8IFtdLCBkYXRhLmZpZWxkcywgZGF0YS5hcnJvd1NjaGVtYSk7XG5cbiAgICAgIC8vIHJlbW92ZSB1bnN1cHBvcnRlZCBleHRlbnNpb25zIGZyb20gYW4gYXJyb3cgdGFibGUgdGhhdCB0aHJvdyBleGNlcHRpb25zIGluIER1Y2tEQi5cbiAgICAgIGFkanVzdGVkTWV0YWRhdGEgPSByZW1vdmVVbnN1cHBvcnRlZEV4dGVuc2lvbnMoYXJyb3dUYWJsZSk7XG5cbiAgICAgIGNvbnN0IHNldHVwU3FsID0gYFxuICAgICAgICBpbnN0YWxsIHNwYXRpYWw7XG4gICAgICAgIGxvYWQgc3BhdGlhbDtcbiAgICAgIGA7XG4gICAgICBhd2FpdCBjLnF1ZXJ5KHNldHVwU3FsKTtcbiAgICAgIGF3YWl0IGMuaW5zZXJ0QXJyb3dUYWJsZShhcnJvd1RhYmxlLCB7bmFtZTogdGhpcy5sYWJlbH0pO1xuXG4gICAgICAvLyByZXN0b3JlIHVuc3VwcG9ydGVkIGV4dGVuc2lvbnMgdGhhdCB0aHJvdyBleGNlcHRpb25zIGluIER1Y2tEYlxuICAgICAgcmVzdG9yZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyhhcnJvd1RhYmxlLCBhZGp1c3RlZE1ldGFkYXRhKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gS25vd24gaXNzdWVzOlxuICAgICAgLy8gMSkgQXJyb3cgVHlwZSB3aXRoIGV4dGVuc2lvbiBuYW1lOiBnZW9hcnJvdy5wb2ludCBhbmQgZm9ybWF0OiArdzoyIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGluIER1Y2tEQi5cbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2ltcG9ydEFycm93RGF0YScsIGVycm9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ2VvYXJyb3dNZXRhZGF0YTogey4uLlNVR0dFU1RFRF9HRU9NX0NPTFVNTlMsIC4uLmFkanVzdGVkTWV0YWRhdGF9LFxuICAgICAgLy8gdXNlIGZpZWxkcyBnZW5lcmF0ZWQgZnJvbSB0aGUgY3JlYXRlZCBhcnJvdyB0YWJsZVxuICAgICAgdXNlTmV3RmllbGRzOiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdGFibGUgZnJvbSBkYXRhLCByZXR1cm5zIGFuIGFycm93IHRhYmxlIHdpdGggdGhlIGRhdGFcbiAgICogQHBhcmFtIGRhdGFcbiAgICogQHJldHVybnMge1Byb21pc2U8e2ZpZWxkczogRmllbGRbXSwgY29sczogYW55W119Pn1cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBjcmVhdGVUYWJsZUFuZEdldEFycm93KGRhdGEpOiBQcm9taXNlPHtmaWVsZHM6IGFueVtdOyBjb2xzOiBhcnJvdy5WZWN0b3JbXX0+IHtcbiAgICBjb25zdCBkYiA9IGF3YWl0IGdldEFwcGxpY2F0aW9uQ29uZmlnKCkuZGF0YWJhc2U7XG4gICAgaWYgKCFkYikge1xuICAgICAgY29uc29sZS5lcnJvcignVGhlIGRhdGFiYXNlIGlzIG5vdCBjb25maWd1cmVkIHByb3Blcmx5LicpO1xuICAgICAgcmV0dXJuIHtmaWVsZHM6IFtdLCBjb2xzOiBbXX07XG4gICAgfVxuICAgIGNvbnN0IGMgPSBhd2FpdCBkYi5jb25uZWN0KCk7XG5cbiAgICBjb25zdCB0YWJsZU5hbWUgPSB0aGlzLmxhYmVsO1xuICAgIGF3YWl0IGRyb3BUYWJsZUlmRXhpc3RzKGMsIHRhYmxlTmFtZSk7XG5cbiAgICBsZXQgZm9ybWF0ID0gdGhpcy5tZXRhZGF0YS5mb3JtYXQ7XG4gICAgaWYgKCFmb3JtYXQpIHtcbiAgICAgIC8vIGZvcm1hdCBpcyBtaXNzaW5nIHdoZW4gd2UgbG9hZCBLZXBsZXIuZ2wgZXhhbXBsZXNcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEucm93cz8uWzBdKSB8fCB0eXBlb2YgZGF0YS5yb3dzPy5bMF0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGZvcm1hdCA9IERBVEFTRVRfRk9STUFUUy5yb3c7XG4gICAgICB9IGVsc2UgaWYgKGRhdGEucm93cz8udHlwZSA9PT0gJ0ZlYXR1cmVDb2xsZWN0aW9uJykge1xuICAgICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMuZ2VvanNvbjtcbiAgICAgIH0gZWxzZSBpZiAoZGF0YS5jb2xzPy5bMF0gaW5zdGFuY2VvZiBhcnJvdy5WZWN0b3IpIHtcbiAgICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLmFycm93O1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBpbXBvcnREZXRhaWxzOiBJbXBvcnREYXRhVG9EdWNrUmVzdWx0IHwgdW5kZWZpbmVkO1xuICAgIGlmIChmb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5yb3cpIHtcbiAgICAgIGF3YWl0IHRoaXMuaW1wb3J0Um93RGF0YSh7ZGF0YSwgZGIsIGN9KTtcbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmdlb2pzb24pIHtcbiAgICAgIGltcG9ydERldGFpbHMgPSBhd2FpdCB0aGlzLmltcG9ydEdlb0pzb25EYXRhKHtkYXRhLCBkYiwgY30pO1xuICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSBEQVRBU0VUX0ZPUk1BVFMuYXJyb3cpIHtcbiAgICAgIGltcG9ydERldGFpbHMgPSBhd2FpdCB0aGlzLmltcG9ydEFycm93RGF0YSh7ZGF0YSwgZGIsIGN9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignVW5yZWNvZ25pemVkIGZvcm1hdCcsIGZvcm1hdCk7XG4gICAgfVxuXG4gICAgbGV0IGZpZWxkczogRmllbGRbXSA9IFtdO1xuICAgIGxldCBjb2xzOiBhcnJvdy5WZWN0b3JbXSA9IFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHtnZW9hcnJvd01ldGFkYXRhID0ge30sIHVzZU5ld0ZpZWxkcyA9IGZhbHNlfSA9IGltcG9ydERldGFpbHMgfHwge307XG5cbiAgICAgIGNvbnN0IGR1Y2tEYkNvbHVtbnMgPSBhd2FpdCBnZXREdWNrREJDb2x1bW5UeXBlcyhjLCB0YWJsZU5hbWUpO1xuICAgICAgY29uc3QgdGFibGVEdWNrREJUeXBlcyA9IGdldER1Y2tEQkNvbHVtblR5cGVzTWFwKGR1Y2tEYkNvbHVtbnMpO1xuICAgICAgY29uc3QgY29sdW1uc1RvQ29udmVydFRvV0tCID0gZ2V0R2VvbWV0cnlDb2x1bW5zKGR1Y2tEYkNvbHVtbnMpO1xuICAgICAgY29uc3QgYWRqdXN0ZWRRdWVyeSA9IGNvbnN0cnVjdFNUX2FzV0tCUXVlcnkodGFibGVOYW1lLCBjb2x1bW5zVG9Db252ZXJ0VG9XS0IpO1xuICAgICAgY29uc3QgYXJyb3dSZXN1bHQgPSBhd2FpdCBjLnF1ZXJ5KGFkanVzdGVkUXVlcnkpO1xuXG4gICAgICAvLyBUT0RPIGlmIGZvcm1hdCBpcyBhbiBhcnJvdyB0YWJsZSB0aGVuIGp1c3QgdXNlIHRoZSBvcmlnaW5hbCBvbmUsIGluc3RlYWQgb2YgdGhlIG5ldyB0YWJsZSBmcm9tIHRoZSBxdWVyeT9cblxuICAgICAgcmVzdG9yZUdlb2Fycm93TWV0YWRhdGEoYXJyb3dSZXN1bHQsIGdlb2Fycm93TWV0YWRhdGEpO1xuXG4gICAgICBmaWVsZHMgPSB1c2VOZXdGaWVsZHNcbiAgICAgICAgPyBhcnJvd1NjaGVtYVRvRmllbGRzKGFycm93UmVzdWx0LCB0YWJsZUR1Y2tEQlR5cGVzKVxuICAgICAgICA6IGRhdGEuZmllbGRzID8/IGFycm93U2NoZW1hVG9GaWVsZHMoYXJyb3dSZXN1bHQsIHRhYmxlRHVja0RCVHlwZXMpO1xuICAgICAgY29scyA9IFsuLi5BcnJheShhcnJvd1Jlc3VsdC5udW1Db2xzKS5rZXlzKCldXG4gICAgICAgIC5tYXAoaSA9PiBhcnJvd1Jlc3VsdC5nZXRDaGlsZEF0KGkpKVxuICAgICAgICAuZmlsdGVyKGNvbCA9PiBjb2wpIGFzIGFycm93LlZlY3RvcltdO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdEdWNrREIgdGFibGU6IGNyZWF0ZVRhYmxlQW5kR2V0QXJyb3cnLCBlcnJvcik7XG4gICAgfVxuXG4gICAgYXdhaXQgYy5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIHtmaWVsZHMsIGNvbHN9O1xuICB9XG5cbiAgYXN5bmMgaW1wb3J0RGF0YSh7ZGF0YX06IHtkYXRhOiBQcm9jZXNzb3JSZXN1bHR9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gVmVjdG9yVGlsZSBpcyBhIHNwZWNpYWwgY2FzZSwgaWdub3JlIGZvciBub3dcbiAgICBpZiAodGhpcy50eXBlID09PSBEYXRhc2V0VHlwZS5WRUNUT1JfVElMRSkge1xuICAgICAgc3VwZXIuaW1wb3J0RGF0YSh7ZGF0YTogey4uLmRhdGEsIHJvd3M6IFtdfX0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHtmaWVsZHMsIGNvbHN9ID0gYXdhaXQgdGhpcy5jcmVhdGVUYWJsZUFuZEdldEFycm93KGRhdGEpO1xuXG4gICAgc3VwZXIuaW1wb3J0RGF0YSh7ZGF0YToge2ZpZWxkcywgY29scywgcm93czogW119fSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGUoZGF0YSkge1xuICAgIC8vIFZlY3RvclRpbGUgaXMgYSBzcGVjaWFsIGNhc2UsIGlnbm9yZSBmb3Igbm93XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gRGF0YXNldFR5cGUuVkVDVE9SX1RJTEUpIHtcbiAgICAgIHN1cGVyLmltcG9ydERhdGEoe2RhdGF9KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGNvbnN0IHtjb2xzfSA9IGF3YWl0IHRoaXMuY3JlYXRlVGFibGVBbmRHZXRBcnJvdyhkYXRhKTtcblxuICAgIHJldHVybiBzdXBlci51cGRhdGUoe2NvbHMsIHJvd3M6IFtdLCBmaWVsZHM6IFtdfSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0RmlsZVByb2Nlc3NvciA9IGZ1bmN0aW9uIChkYXRhOiBhbnksIGlucHV0Rm9ybWF0Pzogc3RyaW5nKSB7XG4gICAgbGV0IHByb2Nlc3NvcjtcbiAgICBsZXQgZm9ybWF0O1xuICAgIGlmIChpbnB1dEZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmFycm93IHx8IGlzQXJyb3dEYXRhKGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMuYXJyb3c7XG4gICAgICBwcm9jZXNzb3IgPSBwcm9jZXNzQXJyb3dCYXRjaGVzO1xuICAgIH0gZWxzZSBpZiAoaW5wdXRGb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5rZXBsZXJnbCB8fCBpc0tlcGxlckdsTWFwKGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMua2VwbGVyZ2w7XG4gICAgICBwcm9jZXNzb3IgPSBwcm9jZXNzS2VwbGVyZ2xKU09OZm9yRHVja0RiO1xuICAgIH0gZWxzZSBpZiAoaW5wdXRGb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5yb3cgfHwgaXNSb3dPYmplY3QoZGF0YSkpIHtcbiAgICAgIC8vIGNzdiBmaWxlIGdvZXMgaGVyZVxuICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLnJvdztcbiAgICAgIHByb2Nlc3NvciA9IHByb2Nlc3NDc3ZSb3dPYmplY3Q7IC8vIGRpcmVjdGx5IGltcG9ydCBqc29uIG9iamVjdCBpbnRvIGR1Y2tkYi13YXNtXG4gICAgfSBlbHNlIGlmIChpbnB1dEZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmdlb2pzb24gfHwgaXNHZW9Kc29uKGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMuZ2VvanNvbjtcbiAgICAgIHByb2Nlc3NvciA9IHByb2Nlc3NHZW9qc29uO1xuICAgIH1cbiAgICByZXR1cm4ge3Byb2Nlc3NvciwgZm9ybWF0fTtcbiAgfTtcblxuICBzdGF0aWMgZ2V0SW5wdXREYXRhVmFsaWRhdG9yID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIEluIER1Y2tEQiBtb2RlIGRhdGEgaXMgdmFsaWRhdGVkIGxhdGVyIGR1cmluZyBpbXBvcnQuXG4gICAgcmV0dXJuIGQgPT4gZDtcbiAgfTtcbn1cblxuLyoqXG4gKiBUcnkgdG8gcmVzdG9yZSBnZW9hcnJvdyBtZXRhZGF0YSBsb3N0IGR1cmluZyBEdWNrRGIgaW5nZXN0aW9uLlxuICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gY2FuIGdlbmVyYXRlIHdyb25nIGdlb21ldHJ5IHR5cGVzLlxuICogQHBhcmFtIGFycm93VGFibGUgQXJyb3cgdGFibGUgdG8gdXBkYXRlLlxuICogQHBhcmFtIGdlb2Fycm93TWV0YWRhdGEgQSBtYXAgd2l0aCBmaWVsZCBuYW1lcyB0aGF0IHVzdWFsbHkgdXNlZCB0byBzdG9yZSBnZW9hcnJvdyBnZW9tZXRyeS5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlc3RvcmVHZW9hcnJvd01ldGFkYXRhID0gKFxuICBhcnJvd1RhYmxlOiBhcnJvdy5UYWJsZSxcbiAgZ2VvYXJyb3dNZXRhZGF0YTogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuKSA9PiB7XG4gIGFycm93VGFibGUuc2NoZW1hLmZpZWxkcy5mb3JFYWNoKGYgPT4ge1xuICAgIGlmIChhcnJvdy5EYXRhVHlwZS5pc0JpbmFyeShmLnR5cGUpICYmIGdlb2Fycm93TWV0YWRhdGFbZi5uYW1lXSkge1xuICAgICAgZi5tZXRhZGF0YS5zZXQoR0VPQVJST1dfTUVUQURBVEFfS0VZLCBnZW9hcnJvd01ldGFkYXRhW2YubmFtZV0pO1xuICAgIH0gZWxzZSBpZiAoaXNHZW9BcnJvd1BvaW50KGYudHlwZSkpIHtcbiAgICAgIGYubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgR0VPQVJST1dfRVhURU5TSU9OUy5QT0lOVCk7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93TGluZVN0cmluZyhmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuTElORVNUUklORyk7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93UG9seWdvbihmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuUE9MWUdPTik7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93TXVsdGlQb2ludChmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuTVVMVElQT0lOVCk7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93TXVsdGlMaW5lU3RyaW5nKGYudHlwZSkpIHtcbiAgICAgIGYubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgR0VPQVJST1dfRVhURU5TSU9OUy5NVUxUSUxJTkVTVFJJTkcpO1xuICAgIH0gZWxzZSBpZiAoaXNHZW9BcnJvd011bHRpUG9seWdvbihmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuTVVMVElQT0xZR09OKTtcbiAgICB9XG4gIH0pO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQU1BLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQVFBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLGNBQUEsR0FBQUwsT0FBQTtBQU9BLElBQUFNLGlCQUFBLEdBQUFOLE9BQUE7QUFTQSxJQUFBTyxr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
|
|
480
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9jb25zdGFudHMiLCJfcHJvY2Vzc29ycyIsIl90YWJsZSIsIl91dGlscyIsIl9kYXRhUHJvY2Vzc29yIiwiX2R1Y2tkYlRhYmxlVXRpbHMiLCJfZHVja2RiVGFibGVVdGlsczIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YzIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJfc3VwZXJQcm9wR2V0IiwicCIsIl9nZXQyIiwiRFVDS0RCX0dFT01fQ09MVU1OIiwiRFVDS0RCX1dLQl9DT0xVTU4iLCJLRVBMRVJfR0VPTV9GUk9NX0dFT0pTT05fQ09MVU1OIiwiU1VHR0VTVEVEX0dFT01fQ09MVU1OUyIsIkdFT0FSUk9XX0VYVEVOU0lPTlMiLCJXS0IiLCJLZXBsZXJHbER1Y2tEYlRhYmxlIiwiZXhwb3J0cyIsIl9LZXBsZXJUYWJsZSIsInByb3BzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJfaW1wb3J0Um93RGF0YSIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiX3JlZiIsImRhdGEiLCJkYiIsImMiLCJmaWVsZHMiLCJyb3dzIiwicm93c0ZvckRiIiwiY29sdW1ucyIsImNyZWF0ZVRhYmxlU3FsIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsInJvdyIsIm5ld1JvdyIsImluZGV4IiwibmFtZSIsInJlZ2lzdGVyRmlsZVRleHQiLCJpZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZWR1Y2UiLCJhY2MiLCJmaWVsZCIsImNvbmNhdCIsImR1Y2tEQkNvbHVtblR5cGUiLCJsYWJlbCIsInF1ZXJ5IiwidDAiLCJjb25zb2xlIiwibG9nIiwic3RvcCIsImltcG9ydFJvd0RhdGEiLCJfeCIsIl9pbXBvcnRHZW9Kc29uRGF0YSIsIl9jYWxsZWUyIiwiX3JlZjIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJlcnJvciIsImFicnVwdCIsImdlb2Fycm93TWV0YWRhdGEiLCJpbXBvcnRHZW9Kc29uRGF0YSIsIl94MiIsIl9pbXBvcnRBcnJvd0RhdGEiLCJfY2FsbGVlMyIsIl9yZWYzIiwiYWRqdXN0ZWRNZXRhZGF0YSIsImFycm93VGFibGUiLCJzZXR1cFNxbCIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsIlRhYmxlIiwicmVzdG9yZUFycm93VGFibGUiLCJjb2xzIiwiYXJyb3dTY2hlbWEiLCJyZW1vdmVVbnN1cHBvcnRlZEV4dGVuc2lvbnMiLCJpbnNlcnRBcnJvd1RhYmxlIiwicmVzdG9yZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyIsInVzZU5ld0ZpZWxkcyIsImltcG9ydEFycm93RGF0YSIsIl94MyIsIl9jcmVhdGVUYWJsZUFuZEdldEFycm93IiwiX2NhbGxlZTQiLCJ0YWJsZU5hbWUiLCJmb3JtYXQiLCJfZGF0YSRyb3dzIiwiX2RhdGEkcm93czIiLCJfZGF0YSRyb3dzMyIsIl9kYXRhJGNvbHMiLCJpbXBvcnREZXRhaWxzIiwiX2RhdGEkZmllbGRzIiwiX3JlZjQiLCJfcmVmNCRnZW9hcnJvd01ldGFkYXQiLCJfcmVmNCR1c2VOZXdGaWVsZHMiLCJkdWNrRGJDb2x1bW5zIiwidGFibGVEdWNrREJUeXBlcyIsImFkanVzdGVkUXVlcnkiLCJhcnJvd1Jlc3VsdCIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiZGF0YWJhc2UiLCJzZW50IiwiY29ubmVjdCIsImRyb3BUYWJsZUlmRXhpc3RzIiwibWV0YWRhdGEiLCJfdHlwZW9mMiIsIkRBVEFTRVRfRk9STUFUUyIsInR5cGUiLCJnZW9qc29uIiwiVmVjdG9yIiwiZ2V0RHVja0RCQ29sdW1uVHlwZXMiLCJnZXREdWNrREJDb2x1bW5UeXBlc01hcCIsImNhc3REdWNrREJUeXBlc0ZvcktlcGxlciIsInJlc3RvcmVHZW9hcnJvd01ldGFkYXRhIiwiYXJyb3dTY2hlbWFUb0ZpZWxkcyIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJudW1Db2xzIiwiZ2V0Q2hpbGRBdCIsImNvbCIsImNsb3NlIiwiY3JlYXRlVGFibGVBbmRHZXRBcnJvdyIsIl94NCIsIl9pbXBvcnREYXRhIiwiX2NhbGxlZTUiLCJfcmVmNSIsIl95aWVsZCR0aGlzJGNyZWF0ZVRhYiIsIl9jYWxsZWU1JCIsIl9jb250ZXh0NSIsIkRhdGFzZXRUeXBlIiwiVkVDVE9SX1RJTEUiLCJpbXBvcnREYXRhIiwiX3g1IiwiX3VwZGF0ZSIsIl9jYWxsZWU2IiwiX3lpZWxkJHRoaXMkY3JlYXRlVGFiMiIsIl9jYWxsZWU2JCIsIl9jb250ZXh0NiIsInVwZGF0ZSIsIl94NiIsIktlcGxlclRhYmxlIiwiaW5wdXRGb3JtYXQiLCJwcm9jZXNzb3IiLCJpc0Fycm93RGF0YSIsInByb2Nlc3NBcnJvd0JhdGNoZXMiLCJrZXBsZXJnbCIsImlzS2VwbGVyR2xNYXAiLCJwcm9jZXNzS2VwbGVyZ2xKU09OZm9yRHVja0RiIiwiaXNSb3dPYmplY3QiLCJwcm9jZXNzQ3N2Um93T2JqZWN0IiwiaXNHZW9Kc29uIiwicHJvY2Vzc0dlb2pzb24iLCJkIiwic2NoZW1hIiwiZiIsIkRhdGFUeXBlIiwiaXNCaW5hcnkiLCJHRU9BUlJPV19NRVRBREFUQV9LRVkiLCJpc0dlb0Fycm93UG9pbnQiLCJQT0lOVCIsImlzR2VvQXJyb3dMaW5lU3RyaW5nIiwiTElORVNUUklORyIsImlzR2VvQXJyb3dQb2x5Z29uIiwiUE9MWUdPTiIsImlzR2VvQXJyb3dNdWx0aVBvaW50IiwiTVVMVElQT0lOVCIsImlzR2VvQXJyb3dNdWx0aUxpbmVTdHJpbmciLCJNVUxUSUxJTkVTVFJJTkciLCJpc0dlb0Fycm93TXVsdGlQb2x5Z29uIiwiTVVMVElQT0xZR09OIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RhYmxlL2R1Y2tkYi10YWJsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgKiBhcyBhcnJvdyBmcm9tICdhcGFjaGUtYXJyb3cnO1xuXG5pbXBvcnQge1xuICBEYXRhc2V0VHlwZSxcbiAgREFUQVNFVF9GT1JNQVRTLFxuICBHRU9BUlJPV19FWFRFTlNJT05TLFxuICBHRU9BUlJPV19NRVRBREFUQV9LRVlcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgYXJyb3dTY2hlbWFUb0ZpZWxkcyxcbiAgaXNBcnJvd0RhdGEsXG4gIGlzR2VvSnNvbixcbiAgaXNLZXBsZXJHbE1hcCxcbiAgaXNSb3dPYmplY3QsXG4gIHByb2Nlc3NBcnJvd0JhdGNoZXNcbn0gZnJvbSAnQGtlcGxlci5nbC9wcm9jZXNzb3JzJztcbmltcG9ydCB7S2VwbGVyVGFibGV9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtGaWVsZH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge2dldEFwcGxpY2F0aW9uQ29uZmlnLCBEYXRhYmFzZUFkYXB0ZXIsIERhdGFiYXNlQ29ubmVjdGlvbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmltcG9ydCB7XG4gIHByb2Nlc3NDc3ZSb3dPYmplY3QsXG4gIHByb2Nlc3NHZW9qc29uLFxuICBwcm9jZXNzS2VwbGVyZ2xKU09OZm9yRHVja0RiLFxuICBQcm9jZXNzb3JSZXN1bHRcbn0gZnJvbSAnLi4vcHJvY2Vzc29ycy9kYXRhLXByb2Nlc3Nvcic7XG5cbmltcG9ydCB7XG4gIGlzR2VvQXJyb3dQb2ludCxcbiAgaXNHZW9BcnJvd0xpbmVTdHJpbmcsXG4gIGlzR2VvQXJyb3dQb2x5Z29uLFxuICBpc0dlb0Fycm93TXVsdGlQb2ludCxcbiAgaXNHZW9BcnJvd011bHRpTGluZVN0cmluZyxcbiAgaXNHZW9BcnJvd011bHRpUG9seWdvblxufSBmcm9tICcuL2R1Y2tkYi10YWJsZS11dGlscyc7XG5cbmltcG9ydCB7XG4gIGNhc3REdWNrREJUeXBlc0ZvcktlcGxlcixcbiAgZHJvcFRhYmxlSWZFeGlzdHMsXG4gIGdldER1Y2tEQkNvbHVtblR5cGVzLFxuICBnZXREdWNrREJDb2x1bW5UeXBlc01hcCxcbiAgcmVtb3ZlVW5zdXBwb3J0ZWRFeHRlbnNpb25zLFxuICByZXN0b3JlQXJyb3dUYWJsZSxcbiAgcmVzdG9yZVVuc3VwcG9ydGVkRXh0ZW5zaW9uc1xufSBmcm9tICcuLi90YWJsZS9kdWNrZGItdGFibGUtdXRpbHMnO1xuXG4vLyBUT0RPIHVzZSBmaWxlcyBmcm9tIGRpc2sgb3IgdXJsIGRpcmVjdGx5LCB3aXRob3V0IHBhcnNpbmcgYnkgbG9hZGVycyBhbmQgdGhlbiBpbmdlY3Rpb24gaW50byBEZWNrRGJcblxuLyoqXG4gKiBEZWZhdWx0IER1Y2tEYiBnZW9tZXRyeSBjb2x1bW5zIGNyZWF0ZWQgYnkgU1RfUkVBRFxuICovXG5jb25zdCBEVUNLREJfR0VPTV9DT0xVTU4gPSAnZ2VvbSc7XG5jb25zdCBEVUNLREJfV0tCX0NPTFVNTiA9ICd3a2JfZ2VvbWV0cnknO1xuXG4vKipcbiBEZWZhdWx0IGNvbHVtbiBuYW1lIGZvciBwcm9jZXNzZWQgZ2VvanNvbiBpbiBLZXBsZXIuXG4gVXNlIHRoaXMgbmFtZSB0byByZW5hbWUgZGVmYXVsdCAnZ2VvbScgY29sdW1uIGZyb20gRHVja0RiXG4gaW4gb3JkZXIgdG8gc3VwcG9ydCBLZXBsZXIgbWFwcyBzYXZlZCBiZWZvcmUgaW50cm9kdWN0aW9uIG9mIER1Y2tEYiBwbHVnaW4uXG4gKi9cbmNvbnN0IEtFUExFUl9HRU9NX0ZST01fR0VPSlNPTl9DT0xVTU4gPSAnX2dlb2pzb24nO1xuXG4vKipcbiAqIE5hbWVzIG9mIGNvbHVtbnMgdGhhdCBtb3N0IGxpa2VseSBjb250YWluIGJpbmFyeSB3a2IgZ2VvbWV0cnlcbiAqL1xuY29uc3QgU1VHR0VTVEVEX0dFT01fQ09MVU1OUyA9IHtcbiAgW0tFUExFUl9HRU9NX0ZST01fR0VPSlNPTl9DT0xVTU5dOiBHRU9BUlJPV19FWFRFTlNJT05TLldLQixcbiAgW0RVQ0tEQl9HRU9NX0NPTFVNTl06IEdFT0FSUk9XX0VYVEVOU0lPTlMuV0tCLFxuICBnZW9tZXRyeTogR0VPQVJST1dfRVhURU5TSU9OUy5XS0Jcbn07XG5cbnR5cGUgSW1wb3J0RGF0YVRvRHVja1Byb3BzID0ge1xuICBkYXRhOiBQcm9jZXNzb3JSZXN1bHQgJiB7YXJyb3dTY2hlbWE6IGFycm93LlNjaGVtYX07XG4gIGRiOiBEYXRhYmFzZUFkYXB0ZXI7XG4gIGM6IERhdGFiYXNlQ29ubmVjdGlvbjtcbn07XG5cbnR5cGUgSW1wb3J0RGF0YVRvRHVja1Jlc3VsdCA9IHtcbiAgLy8gRHVja0RiIGRyb3BzIGdlb2Fycm93IG1ldGFkYXRhLCBzbyB0cnkgdG8gcHJlc2VydmUgYW5kIHRoZW4gcmVzdG9yZSB0aGUgZXh0ZW5zaW9uIG5hbWVcbiAgZ2VvYXJyb3dNZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8vIFVzZSBmaWVsZHMgZnJvbSBhcnJvdyB0YWJsZSBldmVuIGlmIGZpZWxkcyBhcmUgcHJvdmlkZWRcbiAgdXNlTmV3RmllbGRzPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjbGFzcyBLZXBsZXJHbER1Y2tEYlRhYmxlIGV4dGVuZHMgS2VwbGVyVGFibGUge1xuICBkZWNsYXJlIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIGRlY2xhcmUgbGFiZWw6IHN0cmluZztcbiAgZGVjbGFyZSB0eXBlOiBzdHJpbmc7XG4gIGRlY2xhcmUgbWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gIH1cblxuICBhc3luYyBpbXBvcnRSb3dEYXRhKHtkYXRhLCBkYiwgY306IEltcG9ydERhdGFUb0R1Y2tQcm9wcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7ZmllbGRzLCByb3dzfSA9IGRhdGE7XG5cbiAgICAgIC8vIERBVEFTRVRfRk9STUFUUy5rZXBsZXJnbCBsb2FkcyBkYXRhIGFzIGFueVtdW10gaW5zdGVhZCBvZiBbe31dXG4gICAgICAvLyBUT0RPIHBvdGVudGlhbCBtZW1vcnkgdXNhZ2UgZXhwbG9zaW9uOiBvcmlnaW5hbCBkYXRhLCBuZXcgb2JqZWN0IGFuZCB0aGVuIER1Y2tEYiB0YWJsZVxuICAgICAgY29uc3Qgcm93c0ZvckRiID0gQXJyYXkuaXNBcnJheShyb3dzWzBdKVxuICAgICAgICA/IHJvd3MubWFwKHJvdyA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdSb3cgPSB7fTtcbiAgICAgICAgICAgIHJvdy5mb3JFYWNoKCh2YWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgbmV3Um93W2ZpZWxkc1tpbmRleF0ubmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIG5ld1JvdztcbiAgICAgICAgICB9KVxuICAgICAgICA6IHJvd3M7XG5cbiAgICAgIGF3YWl0IGRiLnJlZ2lzdGVyRmlsZVRleHQodGhpcy5pZCwgSlNPTi5zdHJpbmdpZnkocm93c0ZvckRiKSk7XG5cbiAgICAgIGNvbnN0IGNvbHVtbnMgPSBmaWVsZHMucmVkdWNlKChhY2MsIGZpZWxkLCBpbmRleCkgPT4ge1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE8gZXh0ZW5kIGZpZWxkcyB0byBjb250YWluIGR1Y2tEQkNvbHVtblR5cGVcbiAgICAgICAgcmV0dXJuIGAke2FjY30ke2luZGV4ID4gMCA/ICcsJyA6ICcnfSAnJHtmaWVsZC5uYW1lfSc6ICcke2ZpZWxkLmR1Y2tEQkNvbHVtblR5cGV9J2A7XG4gICAgICB9LCAnJyk7XG5cbiAgICAgIGNvbnN0IGNyZWF0ZVRhYmxlU3FsID0gYFxuICAgICAgICBDUkVBVEUgVEFCTEUgJyR7dGhpcy5sYWJlbH0nIEFTXG4gICAgICAgIFNFTEVDVCAqXG4gICAgICAgIEZST00gcmVhZF9qc29uKCcke3RoaXMuaWR9JyxcbiAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucyA9IHske2NvbHVtbnN9fSk7XG4gICAgICBgO1xuICAgICAgYXdhaXQgYy5xdWVyeShjcmVhdGVUYWJsZVNxbCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdpbXBvcnRSb3dEYXRhJywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaW1wb3J0R2VvSnNvbkRhdGEoe2RhdGEsIGRiLCBjfTogSW1wb3J0RGF0YVRvRHVja1Byb3BzKTogUHJvbWlzZTxJbXBvcnREYXRhVG9EdWNrUmVzdWx0PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHtyb3dzfSA9IGRhdGE7XG4gICAgICBhd2FpdCBkYi5yZWdpc3RlckZpbGVUZXh0KHRoaXMuaWQsIEpTT04uc3RyaW5naWZ5KHJvd3MpKTtcblxuICAgICAgY29uc3QgY3JlYXRlVGFibGVTcWwgPSBgXG4gICAgICAgIGluc3RhbGwgc3BhdGlhbDtcbiAgICAgICAgbG9hZCBzcGF0aWFsO1xuICAgICAgICBDUkVBVEUgVEFCTEUgJyR7dGhpcy5sYWJlbH0nIEFTIFxuICAgICAgICBTRUxFQ1QgKlxuICAgICAgICBGUk9NIFNUX1JFQUQoJyR7dGhpcy5pZH0nLCBrZWVwX3drYiA9IFRSVUUpO1xuICAgICAgICBBTFRFUiBUQUJMRSAnJHt0aGlzLmxhYmVsfScgUkVOQU1FICcke0RVQ0tEQl9XS0JfQ09MVU1OfScgVE8gJyR7S0VQTEVSX0dFT01fRlJPTV9HRU9KU09OX0NPTFVNTn0nO1xuICAgICAgYDtcblxuICAgICAgYXdhaXQgYy5xdWVyeShjcmVhdGVUYWJsZVNxbCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2ltcG9ydEdlb0pzb25EYXRhJywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIF9nZW9qc29uIGNvbHVtbiBpcyBjcmVhdGVkIGZyb20gZ2VvbWV0cnkgd2l0aCBrZWVwX3drYiBmbGFnIGFuZCBjb250YWlucyB2YWxpZCBXS0IgZGF0YS5cbiAgICAgIGdlb2Fycm93TWV0YWRhdGE6IHtbS0VQTEVSX0dFT01fRlJPTV9HRU9KU09OX0NPTFVNTl06IEdFT0FSUk9XX0VYVEVOU0lPTlMuV0tCfVxuICAgIH07XG4gIH1cblxuICBhc3luYyBpbXBvcnRBcnJvd0RhdGEoe2RhdGEsIGN9OiBJbXBvcnREYXRhVG9EdWNrUHJvcHMpOiBQcm9taXNlPEltcG9ydERhdGFUb0R1Y2tSZXN1bHQ+IHtcbiAgICBsZXQgYWRqdXN0ZWRNZXRhZGF0YSA9IHt9O1xuICAgIHRyeSB7XG4gICAgICAvLyAxKSBkYXRhLnJvd3MgY29udGFpbnMgYW4gYXJyb3cgdGFibGUgY3JlYXRlZCBieSBBZGQgdG8gTWFwIGRhdGEgZnJvbSBEdWNrRGIgcXVlcnkuXG4gICAgICAvLyAyKSBhcnJvdyB0YWJsZSBpcyBpbiBjb2xzICYgZmllbGRzIHdoZW4gYSBmaWxlIGlzIGRyYWdnZWQgJiBkcm9wcGVkIGludG8gQWRkIERhdGEgVG8gTWFwIGRpYWxvZy5cbiAgICAgIGNvbnN0IGFycm93VGFibGUgPVxuICAgICAgICBkYXRhLnJvd3MgaW5zdGFuY2VvZiBhcnJvdy5UYWJsZVxuICAgICAgICAgID8gZGF0YS5yb3dzXG4gICAgICAgICAgOiByZXN0b3JlQXJyb3dUYWJsZShkYXRhLmNvbHMgfHwgW10sIGRhdGEuZmllbGRzLCBkYXRhLmFycm93U2NoZW1hKTtcblxuICAgICAgLy8gcmVtb3ZlIHVuc3VwcG9ydGVkIGV4dGVuc2lvbnMgZnJvbSBhbiBhcnJvdyB0YWJsZSB0aGF0IHRocm93IGV4Y2VwdGlvbnMgaW4gRHVja0RCLlxuICAgICAgYWRqdXN0ZWRNZXRhZGF0YSA9IHJlbW92ZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyhhcnJvd1RhYmxlKTtcblxuICAgICAgY29uc3Qgc2V0dXBTcWwgPSBgXG4gICAgICAgIGluc3RhbGwgc3BhdGlhbDtcbiAgICAgICAgbG9hZCBzcGF0aWFsO1xuICAgICAgYDtcbiAgICAgIGF3YWl0IGMucXVlcnkoc2V0dXBTcWwpO1xuICAgICAgYXdhaXQgYy5pbnNlcnRBcnJvd1RhYmxlKGFycm93VGFibGUsIHtuYW1lOiB0aGlzLmxhYmVsfSk7XG5cbiAgICAgIC8vIHJlc3RvcmUgdW5zdXBwb3J0ZWQgZXh0ZW5zaW9ucyB0aGF0IHRocm93IGV4Y2VwdGlvbnMgaW4gRHVja0RiXG4gICAgICByZXN0b3JlVW5zdXBwb3J0ZWRFeHRlbnNpb25zKGFycm93VGFibGUsIGFkanVzdGVkTWV0YWRhdGEpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBLbm93biBpc3N1ZXM6XG4gICAgICAvLyAxKSBBcnJvdyBUeXBlIHdpdGggZXh0ZW5zaW9uIG5hbWU6IGdlb2Fycm93LnBvaW50IGFuZCBmb3JtYXQ6ICt3OjIgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgaW4gRHVja0RCLlxuICAgICAgY29uc29sZS5lcnJvcignaW1wb3J0QXJyb3dEYXRhJywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGdlb2Fycm93TWV0YWRhdGE6IHsuLi5TVUdHRVNURURfR0VPTV9DT0xVTU5TLCAuLi5hZGp1c3RlZE1ldGFkYXRhfSxcbiAgICAgIC8vIHVzZSBmaWVsZHMgZ2VuZXJhdGVkIGZyb20gdGhlIGNyZWF0ZWQgYXJyb3cgdGFibGVcbiAgICAgIHVzZU5ld0ZpZWxkczogdHJ1ZVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHRhYmxlIGZyb20gZGF0YSwgcmV0dXJucyBhbiBhcnJvdyB0YWJsZSB3aXRoIHRoZSBkYXRhXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHtmaWVsZHM6IEZpZWxkW10sIGNvbHM6IGFueVtdfT59XG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgY3JlYXRlVGFibGVBbmRHZXRBcnJvdyhkYXRhKTogUHJvbWlzZTx7ZmllbGRzOiBhbnlbXTsgY29sczogYXJyb3cuVmVjdG9yW119PiB7XG4gICAgY29uc3QgZGIgPSBhd2FpdCBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmRhdGFiYXNlO1xuICAgIGlmICghZGIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSBkYXRhYmFzZSBpcyBub3QgY29uZmlndXJlZCBwcm9wZXJseS4nKTtcbiAgICAgIHJldHVybiB7ZmllbGRzOiBbXSwgY29sczogW119O1xuICAgIH1cbiAgICBjb25zdCBjID0gYXdhaXQgZGIuY29ubmVjdCgpO1xuXG4gICAgY29uc3QgdGFibGVOYW1lID0gdGhpcy5sYWJlbDtcbiAgICBhd2FpdCBkcm9wVGFibGVJZkV4aXN0cyhjLCB0YWJsZU5hbWUpO1xuXG4gICAgbGV0IGZvcm1hdCA9IHRoaXMubWV0YWRhdGEuZm9ybWF0O1xuICAgIGlmICghZm9ybWF0KSB7XG4gICAgICAvLyBmb3JtYXQgaXMgbWlzc2luZyB3aGVuIHdlIGxvYWQgS2VwbGVyLmdsIGV4YW1wbGVzXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhLnJvd3M/LlswXSkgfHwgdHlwZW9mIGRhdGEucm93cz8uWzBdID09PSAnb2JqZWN0Jykge1xuICAgICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMucm93O1xuICAgICAgfSBlbHNlIGlmIChkYXRhLnJvd3M/LnR5cGUgPT09ICdGZWF0dXJlQ29sbGVjdGlvbicpIHtcbiAgICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLmdlb2pzb247XG4gICAgICB9IGVsc2UgaWYgKGRhdGEuY29scz8uWzBdIGluc3RhbmNlb2YgYXJyb3cuVmVjdG9yKSB7XG4gICAgICAgIGZvcm1hdCA9IERBVEFTRVRfRk9STUFUUy5hcnJvdztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgaW1wb3J0RGV0YWlsczogSW1wb3J0RGF0YVRvRHVja1Jlc3VsdCB8IHVuZGVmaW5lZDtcbiAgICBpZiAoZm9ybWF0ID09PSBEQVRBU0VUX0ZPUk1BVFMucm93KSB7XG4gICAgICBhd2FpdCB0aGlzLmltcG9ydFJvd0RhdGEoe2RhdGEsIGRiLCBjfSk7XG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5nZW9qc29uKSB7XG4gICAgICBpbXBvcnREZXRhaWxzID0gYXdhaXQgdGhpcy5pbXBvcnRHZW9Kc29uRGF0YSh7ZGF0YSwgZGIsIGN9KTtcbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmFycm93KSB7XG4gICAgICBpbXBvcnREZXRhaWxzID0gYXdhaXQgdGhpcy5pbXBvcnRBcnJvd0RhdGEoe2RhdGEsIGRiLCBjfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1VucmVjb2duaXplZCBmb3JtYXQnLCBmb3JtYXQpO1xuICAgIH1cblxuICAgIGxldCBmaWVsZHM6IEZpZWxkW10gPSBbXTtcbiAgICBsZXQgY29sczogYXJyb3cuVmVjdG9yW10gPSBbXTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7Z2VvYXJyb3dNZXRhZGF0YSA9IHt9LCB1c2VOZXdGaWVsZHMgPSBmYWxzZX0gPSBpbXBvcnREZXRhaWxzIHx8IHt9O1xuXG4gICAgICBjb25zdCBkdWNrRGJDb2x1bW5zID0gYXdhaXQgZ2V0RHVja0RCQ29sdW1uVHlwZXMoYywgdGFibGVOYW1lKTtcbiAgICAgIGNvbnN0IHRhYmxlRHVja0RCVHlwZXMgPSBnZXREdWNrREJDb2x1bW5UeXBlc01hcChkdWNrRGJDb2x1bW5zKTtcbiAgICAgIGNvbnN0IGFkanVzdGVkUXVlcnkgPSBjYXN0RHVja0RCVHlwZXNGb3JLZXBsZXIodGFibGVOYW1lLCBkdWNrRGJDb2x1bW5zKTtcbiAgICAgIGNvbnN0IGFycm93UmVzdWx0ID0gYXdhaXQgYy5xdWVyeShhZGp1c3RlZFF1ZXJ5KTtcblxuICAgICAgLy8gVE9ETyBpZiBmb3JtYXQgaXMgYW4gYXJyb3cgdGFibGUgdGhlbiBqdXN0IHVzZSB0aGUgb3JpZ2luYWwgb25lLCBpbnN0ZWFkIG9mIHRoZSBuZXcgdGFibGUgZnJvbSB0aGUgcXVlcnk/XG5cbiAgICAgIHJlc3RvcmVHZW9hcnJvd01ldGFkYXRhKGFycm93UmVzdWx0LCBnZW9hcnJvd01ldGFkYXRhKTtcblxuICAgICAgZmllbGRzID0gdXNlTmV3RmllbGRzXG4gICAgICAgID8gYXJyb3dTY2hlbWFUb0ZpZWxkcyhhcnJvd1Jlc3VsdCwgdGFibGVEdWNrREJUeXBlcylcbiAgICAgICAgOiBkYXRhLmZpZWxkcyA/PyBhcnJvd1NjaGVtYVRvRmllbGRzKGFycm93UmVzdWx0LCB0YWJsZUR1Y2tEQlR5cGVzKTtcbiAgICAgIGNvbHMgPSBbLi4uQXJyYXkoYXJyb3dSZXN1bHQubnVtQ29scykua2V5cygpXVxuICAgICAgICAubWFwKGkgPT4gYXJyb3dSZXN1bHQuZ2V0Q2hpbGRBdChpKSlcbiAgICAgICAgLmZpbHRlcihjb2wgPT4gY29sKSBhcyBhcnJvdy5WZWN0b3JbXTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRHVja0RCIHRhYmxlOiBjcmVhdGVUYWJsZUFuZEdldEFycm93JywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgYXdhaXQgYy5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIHtmaWVsZHMsIGNvbHN9O1xuICB9XG5cbiAgYXN5bmMgaW1wb3J0RGF0YSh7ZGF0YX06IHtkYXRhOiBQcm9jZXNzb3JSZXN1bHR9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gVmVjdG9yVGlsZSBpcyBhIHNwZWNpYWwgY2FzZSwgaWdub3JlIGZvciBub3dcbiAgICBpZiAodGhpcy50eXBlID09PSBEYXRhc2V0VHlwZS5WRUNUT1JfVElMRSkge1xuICAgICAgc3VwZXIuaW1wb3J0RGF0YSh7ZGF0YTogey4uLmRhdGEsIHJvd3M6IFtdfX0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHtmaWVsZHMsIGNvbHN9ID0gYXdhaXQgdGhpcy5jcmVhdGVUYWJsZUFuZEdldEFycm93KGRhdGEpO1xuXG4gICAgc3VwZXIuaW1wb3J0RGF0YSh7ZGF0YToge2ZpZWxkcywgY29scywgcm93czogW119fSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGUoZGF0YSkge1xuICAgIC8vIFZlY3RvclRpbGUgaXMgYSBzcGVjaWFsIGNhc2UsIGlnbm9yZSBmb3Igbm93XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gRGF0YXNldFR5cGUuVkVDVE9SX1RJTEUpIHtcbiAgICAgIHN1cGVyLmltcG9ydERhdGEoe2RhdGF9KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGNvbnN0IHtjb2xzfSA9IGF3YWl0IHRoaXMuY3JlYXRlVGFibGVBbmRHZXRBcnJvdyhkYXRhKTtcblxuICAgIHJldHVybiBzdXBlci51cGRhdGUoe2NvbHMsIHJvd3M6IFtdLCBmaWVsZHM6IFtdfSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0RmlsZVByb2Nlc3NvciA9IGZ1bmN0aW9uIChkYXRhOiBhbnksIGlucHV0Rm9ybWF0Pzogc3RyaW5nKSB7XG4gICAgbGV0IHByb2Nlc3NvcjtcbiAgICBsZXQgZm9ybWF0O1xuICAgIGlmIChpbnB1dEZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmFycm93IHx8IGlzQXJyb3dEYXRhKGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMuYXJyb3c7XG4gICAgICBwcm9jZXNzb3IgPSBwcm9jZXNzQXJyb3dCYXRjaGVzO1xuICAgIH0gZWxzZSBpZiAoaW5wdXRGb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5rZXBsZXJnbCB8fCBpc0tlcGxlckdsTWFwKGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMua2VwbGVyZ2w7XG4gICAgICBwcm9jZXNzb3IgPSBwcm9jZXNzS2VwbGVyZ2xKU09OZm9yRHVja0RiO1xuICAgIH0gZWxzZSBpZiAoaW5wdXRGb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5yb3cgfHwgaXNSb3dPYmplY3QoZGF0YSkpIHtcbiAgICAgIC8vIGNzdiBmaWxlIGdvZXMgaGVyZVxuICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLnJvdztcbiAgICAgIHByb2Nlc3NvciA9IHByb2Nlc3NDc3ZSb3dPYmplY3Q7IC8vIGRpcmVjdGx5IGltcG9ydCBqc29uIG9iamVjdCBpbnRvIGR1Y2tkYi13YXNtXG4gICAgfSBlbHNlIGlmIChpbnB1dEZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmdlb2pzb24gfHwgaXNHZW9Kc29uKGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMuZ2VvanNvbjtcbiAgICAgIHByb2Nlc3NvciA9IHByb2Nlc3NHZW9qc29uO1xuICAgIH1cbiAgICByZXR1cm4ge3Byb2Nlc3NvciwgZm9ybWF0fTtcbiAgfTtcblxuICBzdGF0aWMgZ2V0SW5wdXREYXRhVmFsaWRhdG9yID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIEluIER1Y2tEQiBtb2RlIGRhdGEgaXMgdmFsaWRhdGVkIGxhdGVyIGR1cmluZyBpbXBvcnQuXG4gICAgcmV0dXJuIGQgPT4gZDtcbiAgfTtcbn1cblxuLyoqXG4gKiBUcnkgdG8gcmVzdG9yZSBnZW9hcnJvdyBtZXRhZGF0YSBsb3N0IGR1cmluZyBEdWNrRGIgaW5nZXN0aW9uLlxuICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gY2FuIGdlbmVyYXRlIHdyb25nIGdlb21ldHJ5IHR5cGVzLlxuICogQHBhcmFtIGFycm93VGFibGUgQXJyb3cgdGFibGUgdG8gdXBkYXRlLlxuICogQHBhcmFtIGdlb2Fycm93TWV0YWRhdGEgQSBtYXAgd2l0aCBmaWVsZCBuYW1lcyB0aGF0IHVzdWFsbHkgdXNlZCB0byBzdG9yZSBnZW9hcnJvdyBnZW9tZXRyeS5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlc3RvcmVHZW9hcnJvd01ldGFkYXRhID0gKFxuICBhcnJvd1RhYmxlOiBhcnJvdy5UYWJsZSxcbiAgZ2VvYXJyb3dNZXRhZGF0YTogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuKSA9PiB7XG4gIGFycm93VGFibGUuc2NoZW1hLmZpZWxkcy5mb3JFYWNoKGYgPT4ge1xuICAgIGlmIChhcnJvdy5EYXRhVHlwZS5pc0JpbmFyeShmLnR5cGUpICYmIGdlb2Fycm93TWV0YWRhdGFbZi5uYW1lXSkge1xuICAgICAgZi5tZXRhZGF0YS5zZXQoR0VPQVJST1dfTUVUQURBVEFfS0VZLCBnZW9hcnJvd01ldGFkYXRhW2YubmFtZV0pO1xuICAgIH0gZWxzZSBpZiAoaXNHZW9BcnJvd1BvaW50KGYudHlwZSkpIHtcbiAgICAgIGYubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgR0VPQVJST1dfRVhURU5TSU9OUy5QT0lOVCk7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93TGluZVN0cmluZyhmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuTElORVNUUklORyk7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93UG9seWdvbihmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuUE9MWUdPTik7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93TXVsdGlQb2ludChmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuTVVMVElQT0lOVCk7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93TXVsdGlMaW5lU3RyaW5nKGYudHlwZSkpIHtcbiAgICAgIGYubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgR0VPQVJST1dfRVhURU5TSU9OUy5NVUxUSUxJTkVTVFJJTkcpO1xuICAgIH0gZWxzZSBpZiAoaXNHZW9BcnJvd011bHRpUG9seWdvbihmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuTVVMVElQT0xZR09OKTtcbiAgICB9XG4gIH0pO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQU1BLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQVFBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLGNBQUEsR0FBQUwsT0FBQTtBQU9BLElBQUFNLGlCQUFBLEdBQUFOLE9BQUE7QUFTQSxJQUFBTyxrQkFBQSxHQUFBUCxPQUFBO0FBUXFDLFNBQUFRLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBVix3QkFBQVUsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxRQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxDQUFBLFNBQUFHLENBQUEsR0FBQVAsQ0FBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFiLENBQUEsRUFBQWMsQ0FBQSxVQUFBRyxDQUFBLEtBQUFBLENBQUEsQ0FBQVYsR0FBQSxJQUFBVSxDQUFBLENBQUFDLEdBQUEsSUFBQVAsTUFBQSxDQUFBQyxjQUFBLENBQUFKLENBQUEsRUFBQU0sQ0FBQSxFQUFBRyxDQUFBLElBQUFULENBQUEsQ0FBQU0sQ0FBQSxJQUFBZCxDQUFBLENBQUFjLENBQUEsWUFBQU4sQ0FBQSxjQUFBUixDQUFBLEVBQUFHLENBQUEsSUFBQUEsQ0FBQSxDQUFBZSxHQUFBLENBQUFsQixDQUFBLEVBQUFRLENBQUEsR0FBQUEsQ0FBQTtBQUFBLFNBQUFXLFFBQUFuQixDQUFBLEVBQUFFLENBQUEsUUFBQUMsQ0FBQSxHQUFBUSxNQUFBLENBQUFTLElBQUEsQ0FBQXBCLENBQUEsT0FBQVcsTUFBQSxDQUFBVSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFYLE1BQUEsQ0FBQVUscUJBQUEsQ0FBQXJCLENBQUEsR0FBQUUsQ0FBQSxLQUFBb0IsQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQXJCLENBQUEsV0FBQVMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBYixDQUFBLEVBQUFFLENBQUEsRUFBQXNCLFVBQUEsT0FBQXJCLENBQUEsQ0FBQXNCLElBQUEsQ0FBQUMsS0FBQSxDQUFBdkIsQ0FBQSxFQUFBbUIsQ0FBQSxZQUFBbkIsQ0FBQTtBQUFBLFNBQUF3QixjQUFBM0IsQ0FBQSxhQUFBRSxDQUFBLE1BQUFBLENBQUEsR0FBQTBCLFNBQUEsQ0FBQUMsTUFBQSxFQUFBM0IsQ0FBQSxVQUFBQyxDQUFBLFdBQUF5QixTQUFBLENBQUExQixDQUFBLElBQUEwQixTQUFBLENBQUExQixDQUFBLFFBQUFBLENBQUEsT0FBQWlCLE9BQUEsQ0FBQVIsTUFBQSxDQUFBUixDQUFBLE9BQUEyQixPQUFBLFdBQUE1QixDQUFBLFFBQUE2QixnQkFBQSxhQUFBL0IsQ0FBQSxFQUFBRSxDQUFBLEVBQUFDLENBQUEsQ0FBQUQsQ0FBQSxTQUFBUyxNQUFBLENBQUFxQix5QkFBQSxHQUFBckIsTUFBQSxDQUFBc0IsZ0JBQUEsQ0FBQWpDLENBQUEsRUFBQVcsTUFBQSxDQUFBcUIseUJBQUEsQ0FBQTdCLENBQUEsS0FBQWdCLE9BQUEsQ0FBQVIsTUFBQSxDQUFBUixDQUFBLEdBQUEyQixPQUFBLFdBQUE1QixDQUFBLElBQUFTLE1BQUEsQ0FBQUMsY0FBQSxDQUFBWixDQUFBLEVBQUFFLENBQUEsRUFBQVMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBVixDQUFBLEVBQUFELENBQUEsaUJBQUFGLENBQUE7QUFBQSxTQUFBa0MsV0FBQS9CLENBQUEsRUFBQW1CLENBQUEsRUFBQXRCLENBQUEsV0FBQXNCLENBQUEsT0FBQWEsZ0JBQUEsYUFBQWIsQ0FBQSxPQUFBYywyQkFBQSxhQUFBakMsQ0FBQSxFQUFBa0MseUJBQUEsS0FBQUMsT0FBQSxDQUFBQyxTQUFBLENBQUFqQixDQUFBLEVBQUF0QixDQUFBLFlBQUFtQyxnQkFBQSxhQUFBaEMsQ0FBQSxFQUFBcUMsV0FBQSxJQUFBbEIsQ0FBQSxDQUFBSSxLQUFBLENBQUF2QixDQUFBLEVBQUFILENBQUE7QUFBQSxTQUFBcUMsMEJBQUEsY0FBQWxDLENBQUEsSUFBQXNDLE9BQUEsQ0FBQUMsU0FBQSxDQUFBQyxPQUFBLENBQUEzQixJQUFBLENBQUFzQixPQUFBLENBQUFDLFNBQUEsQ0FBQUUsT0FBQSxpQ0FBQXRDLENBQUEsYUFBQWtDLHlCQUFBLFlBQUFBLDBCQUFBLGFBQUFsQyxDQUFBO0FBQUEsU0FBQXlDLGNBQUF6QyxDQUFBLEVBQUFILENBQUEsRUFBQUUsQ0FBQSxFQUFBb0IsQ0FBQSxRQUFBdUIsQ0FBQSxPQUFBQyxLQUFBLGlCQUFBWCxnQkFBQSxpQkFBQWIsQ0FBQSxHQUFBbkIsQ0FBQSxDQUFBdUMsU0FBQSxHQUFBdkMsQ0FBQSxHQUFBSCxDQUFBLEVBQUFFLENBQUEsY0FBQW9CLENBQUEsYUFBQW5CLENBQUEsV0FBQTBDLENBQUEsQ0FBQW5CLEtBQUEsQ0FBQXhCLENBQUEsRUFBQUMsQ0FBQSxPQUFBMEMsQ0FBQSxJQS9DckM7QUFDQTtBQWdEQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFNRSxrQkFBa0IsR0FBRyxNQUFNO0FBQ2pDLElBQU1DLGlCQUFpQixHQUFHLGNBQWM7O0FBRXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNQywrQkFBK0IsR0FBRyxVQUFVOztBQUVsRDtBQUNBO0FBQ0E7QUFDQSxJQUFNQyxzQkFBc0IsT0FBQW5CLGdCQUFBLGlCQUFBQSxnQkFBQSxpQkFBQUEsZ0JBQUEsaUJBQ3pCa0IsK0JBQStCLEVBQUdFLDhCQUFtQixDQUFDQyxHQUFHLEdBQ3pETCxrQkFBa0IsRUFBR0ksOEJBQW1CLENBQUNDLEdBQUcsZUFDbkNELDhCQUFtQixDQUFDQyxHQUFHLENBQ2xDO0FBQUMsSUFlV0MsbUJBQW1CLEdBQUFDLE9BQUEsQ0FBQUQsbUJBQUEsMEJBQUFFLFlBQUE7RUFNOUIsU0FBQUYsb0JBQVlHLEtBQUssRUFBRTtJQUFBLElBQUFDLGdCQUFBLG1CQUFBSixtQkFBQTtJQUFBLE9BQUFuQixVQUFBLE9BQUFtQixtQkFBQSxHQUNYRyxLQUFLO0VBQ2I7RUFBQyxJQUFBRSxVQUFBLGFBQUFMLG1CQUFBLEVBQUFFLFlBQUE7RUFBQSxXQUFBSSxhQUFBLGFBQUFOLG1CQUFBO0lBQUFPLEdBQUE7SUFBQUMsS0FBQTtNQUFBLElBQUFDLGNBQUEsT0FBQUMsa0JBQUEsMkJBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQUVELFNBQUFDLFFBQUFDLElBQUE7UUFBQSxJQUFBQyxJQUFBLEVBQUFDLEVBQUEsRUFBQUMsQ0FBQSxFQUFBQyxNQUFBLEVBQUFDLElBQUEsRUFBQUMsU0FBQSxFQUFBQyxPQUFBLEVBQUFDLGNBQUE7UUFBQSxPQUFBWCxZQUFBLFlBQUFZLElBQUEsVUFBQUMsU0FBQUMsUUFBQTtVQUFBLGtCQUFBQSxRQUFBLENBQUFDLElBQUEsR0FBQUQsUUFBQSxDQUFBRSxJQUFBO1lBQUE7Y0FBcUJaLElBQUksR0FBQUQsSUFBQSxDQUFKQyxJQUFJLEVBQUVDLEVBQUUsR0FBQUYsSUFBQSxDQUFGRSxFQUFFLEVBQUVDLENBQUMsR0FBQUgsSUFBQSxDQUFERyxDQUFDO2NBQUFRLFFBQUEsQ0FBQUMsSUFBQTtjQUVyQlIsTUFBTSxHQUFVSCxJQUFJLENBQXBCRyxNQUFNLEVBQUVDLElBQUksR0FBSUosSUFBSSxDQUFaSSxJQUFJLEVBRW5CO2NBQ0E7Y0FDTUMsU0FBUyxHQUFHUSxLQUFLLENBQUNDLE9BQU8sQ0FBQ1YsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQ3BDQSxJQUFJLENBQUNXLEdBQUcsQ0FBQyxVQUFBQyxHQUFHLEVBQUk7Z0JBQ2QsSUFBTUMsTUFBTSxHQUFHLENBQUMsQ0FBQztnQkFDakJELEdBQUcsQ0FBQ3RELE9BQU8sQ0FBQyxVQUFDK0IsS0FBSyxFQUFFeUIsS0FBSyxFQUFLO2tCQUM1QkQsTUFBTSxDQUFDZCxNQUFNLENBQUNlLEtBQUssQ0FBQyxDQUFDQyxJQUFJLENBQUMsR0FBRzFCLEtBQUs7Z0JBQ3BDLENBQUMsQ0FBQztnQkFDRixPQUFPd0IsTUFBTTtjQUNmLENBQUMsQ0FBQyxHQUNGYixJQUFJO2NBQUFNLFFBQUEsQ0FBQUUsSUFBQTtjQUFBLE9BRUZYLEVBQUUsQ0FBQ21CLGdCQUFnQixDQUFDLElBQUksQ0FBQ0MsRUFBRSxFQUFFQyxJQUFJLENBQUNDLFNBQVMsQ0FBQ2xCLFNBQVMsQ0FBQyxDQUFDO1lBQUE7Y0FFdkRDLE9BQU8sR0FBR0gsTUFBTSxDQUFDcUIsTUFBTSxDQUFDLFVBQUNDLEdBQUcsRUFBRUMsS0FBSyxFQUFFUixLQUFLLEVBQUs7Z0JBQ25EO2dCQUNBLFVBQUFTLE1BQUEsQ0FBVUYsR0FBRyxFQUFBRSxNQUFBLENBQUdULEtBQUssR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsUUFBQVMsTUFBQSxDQUFLRCxLQUFLLENBQUNQLElBQUksVUFBQVEsTUFBQSxDQUFPRCxLQUFLLENBQUNFLGdCQUFnQjtjQUNsRixDQUFDLEVBQUUsRUFBRSxDQUFDO2NBRUFyQixjQUFjLDhCQUFBb0IsTUFBQSxDQUNGLElBQUksQ0FBQ0UsS0FBSyxzREFBQUYsTUFBQSxDQUVSLElBQUksQ0FBQ04sRUFBRSw0Q0FBQU0sTUFBQSxDQUNHckIsT0FBTztjQUFBSSxRQUFBLENBQUFFLElBQUE7Y0FBQSxPQUUvQlYsQ0FBQyxDQUFDNEIsS0FBSyxDQUFDdkIsY0FBYyxDQUFDO1lBQUE7Y0FBQUcsUUFBQSxDQUFBRSxJQUFBO2NBQUE7WUFBQTtjQUFBRixRQUFBLENBQUFDLElBQUE7Y0FBQUQsUUFBQSxDQUFBcUIsRUFBQSxHQUFBckIsUUFBQTtjQUU3QnNCLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLGVBQWUsRUFBQXZCLFFBQUEsQ0FBQXFCLEVBQU8sQ0FBQztjQUFDLE1BQUFyQixRQUFBLENBQUFxQixFQUFBO1lBQUE7WUFBQTtjQUFBLE9BQUFyQixRQUFBLENBQUF3QixJQUFBO1VBQUE7UUFBQSxHQUFBcEMsT0FBQTtNQUFBLENBR3ZDO01BQUEsU0FsQ0txQyxhQUFhQSxDQUFBQyxFQUFBO1FBQUEsT0FBQTFDLGNBQUEsQ0FBQXBDLEtBQUEsT0FBQUUsU0FBQTtNQUFBO01BQUEsT0FBYjJFLGFBQWE7SUFBQTtFQUFBO0lBQUEzQyxHQUFBO0lBQUFDLEtBQUE7TUFBQSxJQUFBNEMsa0JBQUEsT0FBQTFDLGtCQUFBLDJCQUFBQyxZQUFBLFlBQUFDLElBQUEsQ0FvQ25CLFNBQUF5QyxTQUFBQyxLQUFBO1FBQUEsSUFBQXZDLElBQUEsRUFBQUMsRUFBQSxFQUFBQyxDQUFBLEVBQUFFLElBQUEsRUFBQUcsY0FBQTtRQUFBLE9BQUFYLFlBQUEsWUFBQVksSUFBQSxVQUFBZ0MsVUFBQUMsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUE5QixJQUFBLEdBQUE4QixTQUFBLENBQUE3QixJQUFBO1lBQUE7Y0FBeUJaLElBQUksR0FBQXVDLEtBQUEsQ0FBSnZDLElBQUksRUFBRUMsRUFBRSxHQUFBc0MsS0FBQSxDQUFGdEMsRUFBRSxFQUFFQyxDQUFDLEdBQUFxQyxLQUFBLENBQURyQyxDQUFDO2NBQUF1QyxTQUFBLENBQUE5QixJQUFBO2NBRXpCUCxJQUFJLEdBQUlKLElBQUksQ0FBWkksSUFBSTtjQUFBcUMsU0FBQSxDQUFBN0IsSUFBQTtjQUFBLE9BQ0xYLEVBQUUsQ0FBQ21CLGdCQUFnQixDQUFDLElBQUksQ0FBQ0MsRUFBRSxFQUFFQyxJQUFJLENBQUNDLFNBQVMsQ0FBQ25CLElBQUksQ0FBQyxDQUFDO1lBQUE7Y0FFbERHLGNBQWMsK0VBQUFvQixNQUFBLENBR0YsSUFBSSxDQUFDRSxLQUFLLHFEQUFBRixNQUFBLENBRVYsSUFBSSxDQUFDTixFQUFFLGlEQUFBTSxNQUFBLENBQ1IsSUFBSSxDQUFDRSxLQUFLLGdCQUFBRixNQUFBLENBQWEvQyxpQkFBaUIsWUFBQStDLE1BQUEsQ0FBUzlDLCtCQUErQjtjQUFBNEQsU0FBQSxDQUFBN0IsSUFBQTtjQUFBLE9BRzNGVixDQUFDLENBQUM0QixLQUFLLENBQUN2QixjQUFjLENBQUM7WUFBQTtjQUFBa0MsU0FBQSxDQUFBN0IsSUFBQTtjQUFBO1lBQUE7Y0FBQTZCLFNBQUEsQ0FBQTlCLElBQUE7Y0FBQThCLFNBQUEsQ0FBQVYsRUFBQSxHQUFBVSxTQUFBO2NBRTdCVCxPQUFPLENBQUNVLEtBQUssQ0FBQyxtQkFBbUIsRUFBQUQsU0FBQSxDQUFBVixFQUFPLENBQUM7Y0FBQyxNQUFBVSxTQUFBLENBQUFWLEVBQUE7WUFBQTtjQUFBLE9BQUFVLFNBQUEsQ0FBQUUsTUFBQSxXQUlyQztnQkFDTDtnQkFDQUMsZ0JBQWdCLE1BQUFqRixnQkFBQSxpQkFBSWtCLCtCQUErQixFQUFHRSw4QkFBbUIsQ0FBQ0MsR0FBRztjQUMvRSxDQUFDO1lBQUE7WUFBQTtjQUFBLE9BQUF5RCxTQUFBLENBQUFQLElBQUE7VUFBQTtRQUFBLEdBQUFJLFFBQUE7TUFBQSxDQUNGO01BQUEsU0F4QktPLGlCQUFpQkEsQ0FBQUMsR0FBQTtRQUFBLE9BQUFULGtCQUFBLENBQUEvRSxLQUFBLE9BQUFFLFNBQUE7TUFBQTtNQUFBLE9BQWpCcUYsaUJBQWlCO0lBQUE7RUFBQTtJQUFBckQsR0FBQTtJQUFBQyxLQUFBO01BQUEsSUFBQXNELGdCQUFBLE9BQUFwRCxrQkFBQSwyQkFBQUMsWUFBQSxZQUFBQyxJQUFBLENBMEJ2QixTQUFBbUQsU0FBQUMsS0FBQTtRQUFBLElBQUFqRCxJQUFBLEVBQUFFLENBQUEsRUFBQWdELGdCQUFBLEVBQUFDLFVBQUEsRUFBQUMsUUFBQTtRQUFBLE9BQUF4RCxZQUFBLFlBQUFZLElBQUEsVUFBQTZDLFVBQUFDLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBM0MsSUFBQSxHQUFBMkMsU0FBQSxDQUFBMUMsSUFBQTtZQUFBO2NBQXVCWixJQUFJLEdBQUFpRCxLQUFBLENBQUpqRCxJQUFJLEVBQUVFLENBQUMsR0FBQStDLEtBQUEsQ0FBRC9DLENBQUM7Y0FDeEJnRCxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7Y0FBQUksU0FBQSxDQUFBM0MsSUFBQTtjQUV2QjtjQUNBO2NBQ013QyxVQUFVLEdBQ2RuRCxJQUFJLENBQUNJLElBQUksWUFBWW5GLEtBQUssQ0FBQ3NJLEtBQUssR0FDNUJ2RCxJQUFJLENBQUNJLElBQUksR0FDVCxJQUFBb0Qsb0NBQWlCLEVBQUN4RCxJQUFJLENBQUN5RCxJQUFJLElBQUksRUFBRSxFQUFFekQsSUFBSSxDQUFDRyxNQUFNLEVBQUVILElBQUksQ0FBQzBELFdBQVcsQ0FBQyxFQUV2RTtjQUNBUixnQkFBZ0IsR0FBRyxJQUFBUyw4Q0FBMkIsRUFBQ1IsVUFBVSxDQUFDO2NBRXBEQyxRQUFRO2NBQUFFLFNBQUEsQ0FBQTFDLElBQUE7Y0FBQSxPQUlSVixDQUFDLENBQUM0QixLQUFLLENBQUNzQixRQUFRLENBQUM7WUFBQTtjQUFBRSxTQUFBLENBQUExQyxJQUFBO2NBQUEsT0FDakJWLENBQUMsQ0FBQzBELGdCQUFnQixDQUFDVCxVQUFVLEVBQUU7Z0JBQUNoQyxJQUFJLEVBQUUsSUFBSSxDQUFDVTtjQUFLLENBQUMsQ0FBQztZQUFBO2NBRXhEO2NBQ0EsSUFBQWdDLCtDQUE0QixFQUFDVixVQUFVLEVBQUVELGdCQUFnQixDQUFDO2NBQUNJLFNBQUEsQ0FBQTFDLElBQUE7Y0FBQTtZQUFBO2NBQUEwQyxTQUFBLENBQUEzQyxJQUFBO2NBQUEyQyxTQUFBLENBQUF2QixFQUFBLEdBQUF1QixTQUFBO2NBRTNEO2NBQ0E7Y0FDQXRCLE9BQU8sQ0FBQ1UsS0FBSyxDQUFDLGlCQUFpQixFQUFBWSxTQUFBLENBQUF2QixFQUFPLENBQUM7Y0FBQyxNQUFBdUIsU0FBQSxDQUFBdkIsRUFBQTtZQUFBO2NBQUEsT0FBQXVCLFNBQUEsQ0FBQVgsTUFBQSxXQUluQztnQkFDTEMsZ0JBQWdCLEVBQUFyRixhQUFBLENBQUFBLGFBQUEsS0FBTXVCLHNCQUFzQixHQUFLb0UsZ0JBQWdCLENBQUM7Z0JBQ2xFO2dCQUNBWSxZQUFZLEVBQUU7Y0FDaEIsQ0FBQztZQUFBO1lBQUE7Y0FBQSxPQUFBUixTQUFBLENBQUFwQixJQUFBO1VBQUE7UUFBQSxHQUFBYyxRQUFBO01BQUEsQ0FDRjtNQUFBLFNBbENLZSxlQUFlQSxDQUFBQyxHQUFBO1FBQUEsT0FBQWpCLGdCQUFBLENBQUF6RixLQUFBLE9BQUFFLFNBQUE7TUFBQTtNQUFBLE9BQWZ1RyxlQUFlO0lBQUE7SUFvQ3JCO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7RUFKRTtJQUFBdkUsR0FBQTtJQUFBQyxLQUFBO01BQUEsSUFBQXdFLHVCQUFBLE9BQUF0RSxrQkFBQSwyQkFBQUMsWUFBQSxZQUFBQyxJQUFBLENBS0EsU0FBQXFFLFNBQXVDbEUsSUFBSTtRQUFBLElBQUFDLEVBQUEsRUFBQUMsQ0FBQSxFQUFBaUUsU0FBQSxFQUFBQyxNQUFBLEVBQUFDLFVBQUEsRUFBQUMsV0FBQSxFQUFBQyxXQUFBLEVBQUFDLFVBQUEsRUFBQUMsYUFBQSxFQUFBdEUsTUFBQSxFQUFBc0QsSUFBQSxFQUFBaUIsWUFBQSxFQUFBQyxLQUFBLEVBQUFDLHFCQUFBLEVBQUFoQyxnQkFBQSxFQUFBaUMsa0JBQUEsRUFBQWYsWUFBQSxFQUFBZ0IsYUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxhQUFBLEVBQUFDLFdBQUE7UUFBQSxPQUFBckYsWUFBQSxZQUFBWSxJQUFBLFVBQUEwRSxVQUFBQyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQXhFLElBQUEsR0FBQXdFLFNBQUEsQ0FBQXZFLElBQUE7WUFBQTtjQUFBdUUsU0FBQSxDQUFBdkUsSUFBQTtjQUFBLE9BQ3hCLElBQUF3RSwyQkFBb0IsRUFBQyxDQUFDLENBQUNDLFFBQVE7WUFBQTtjQUExQ3BGLEVBQUUsR0FBQWtGLFNBQUEsQ0FBQUcsSUFBQTtjQUFBLElBQ0hyRixFQUFFO2dCQUFBa0YsU0FBQSxDQUFBdkUsSUFBQTtnQkFBQTtjQUFBO2NBQ0xvQixPQUFPLENBQUNVLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQztjQUFDLE9BQUF5QyxTQUFBLENBQUF4QyxNQUFBLFdBQ25EO2dCQUFDeEMsTUFBTSxFQUFFLEVBQUU7Z0JBQUVzRCxJQUFJLEVBQUU7Y0FBRSxDQUFDO1lBQUE7Y0FBQTBCLFNBQUEsQ0FBQXZFLElBQUE7Y0FBQSxPQUVmWCxFQUFFLENBQUNzRixPQUFPLENBQUMsQ0FBQztZQUFBO2NBQXRCckYsQ0FBQyxHQUFBaUYsU0FBQSxDQUFBRyxJQUFBO2NBRURuQixTQUFTLEdBQUcsSUFBSSxDQUFDdEMsS0FBSztjQUFBc0QsU0FBQSxDQUFBdkUsSUFBQTtjQUFBLE9BQ3RCLElBQUE0RSxvQ0FBaUIsRUFBQ3RGLENBQUMsRUFBRWlFLFNBQVMsQ0FBQztZQUFBO2NBRWpDQyxNQUFNLEdBQUcsSUFBSSxDQUFDcUIsUUFBUSxDQUFDckIsTUFBTTtjQUNqQyxJQUFJLENBQUNBLE1BQU0sRUFBRTtnQkFDWDtnQkFDQSxJQUFJdkQsS0FBSyxDQUFDQyxPQUFPLEVBQUF1RCxVQUFBLEdBQUNyRSxJQUFJLENBQUNJLElBQUksY0FBQWlFLFVBQUEsdUJBQVRBLFVBQUEsQ0FBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUFxQixRQUFBLGNBQUFwQixXQUFBLEdBQU90RSxJQUFJLENBQUNJLElBQUksY0FBQWtFLFdBQUEsdUJBQVRBLFdBQUEsQ0FBWSxDQUFDLENBQUMsTUFBSyxRQUFRLEVBQUU7a0JBQ3ZFRixNQUFNLEdBQUd1QiwwQkFBZSxDQUFDM0UsR0FBRztnQkFDOUIsQ0FBQyxNQUFNLElBQUksRUFBQXVELFdBQUEsR0FBQXZFLElBQUksQ0FBQ0ksSUFBSSxjQUFBbUUsV0FBQSx1QkFBVEEsV0FBQSxDQUFXcUIsSUFBSSxNQUFLLG1CQUFtQixFQUFFO2tCQUNsRHhCLE1BQU0sR0FBR3VCLDBCQUFlLENBQUNFLE9BQU87Z0JBQ2xDLENBQUMsTUFBTSxJQUFJLEVBQUFyQixVQUFBLEdBQUF4RSxJQUFJLENBQUN5RCxJQUFJLGNBQUFlLFVBQUEsdUJBQVRBLFVBQUEsQ0FBWSxDQUFDLENBQUMsYUFBWXZKLEtBQUssQ0FBQzZLLE1BQU0sRUFBRTtrQkFDakQxQixNQUFNLEdBQUd1QiwwQkFBZSxDQUFDMUssS0FBSztnQkFDaEM7Y0FDRjtjQUFDLE1BR0dtSixNQUFNLEtBQUt1QiwwQkFBZSxDQUFDM0UsR0FBRztnQkFBQW1FLFNBQUEsQ0FBQXZFLElBQUE7Z0JBQUE7Y0FBQTtjQUFBdUUsU0FBQSxDQUFBdkUsSUFBQTtjQUFBLE9BQzFCLElBQUksQ0FBQ3VCLGFBQWEsQ0FBQztnQkFBQ25DLElBQUksRUFBSkEsSUFBSTtnQkFBRUMsRUFBRSxFQUFGQSxFQUFFO2dCQUFFQyxDQUFDLEVBQURBO2NBQUMsQ0FBQyxDQUFDO1lBQUE7Y0FBQWlGLFNBQUEsQ0FBQXZFLElBQUE7Y0FBQTtZQUFBO2NBQUEsTUFDOUJ3RCxNQUFNLEtBQUt1QiwwQkFBZSxDQUFDRSxPQUFPO2dCQUFBVixTQUFBLENBQUF2RSxJQUFBO2dCQUFBO2NBQUE7Y0FBQXVFLFNBQUEsQ0FBQXZFLElBQUE7Y0FBQSxPQUNyQixJQUFJLENBQUNpQyxpQkFBaUIsQ0FBQztnQkFBQzdDLElBQUksRUFBSkEsSUFBSTtnQkFBRUMsRUFBRSxFQUFGQSxFQUFFO2dCQUFFQyxDQUFDLEVBQURBO2NBQUMsQ0FBQyxDQUFDO1lBQUE7Y0FBM0R1RSxhQUFhLEdBQUFVLFNBQUEsQ0FBQUcsSUFBQTtjQUFBSCxTQUFBLENBQUF2RSxJQUFBO2NBQUE7WUFBQTtjQUFBLE1BQ0p3RCxNQUFNLEtBQUt1QiwwQkFBZSxDQUFDMUssS0FBSztnQkFBQWtLLFNBQUEsQ0FBQXZFLElBQUE7Z0JBQUE7Y0FBQTtjQUFBdUUsU0FBQSxDQUFBdkUsSUFBQTtjQUFBLE9BQ25CLElBQUksQ0FBQ21ELGVBQWUsQ0FBQztnQkFBQy9ELElBQUksRUFBSkEsSUFBSTtnQkFBRUMsRUFBRSxFQUFGQSxFQUFFO2dCQUFFQyxDQUFDLEVBQURBO2NBQUMsQ0FBQyxDQUFDO1lBQUE7Y0FBekR1RSxhQUFhLEdBQUFVLFNBQUEsQ0FBQUcsSUFBQTtjQUFBSCxTQUFBLENBQUF2RSxJQUFBO2NBQUE7WUFBQTtjQUVib0IsT0FBTyxDQUFDVSxLQUFLLENBQUMscUJBQXFCLEVBQUUwQixNQUFNLENBQUM7WUFBQztjQUczQ2pFLE1BQWUsR0FBRyxFQUFFO2NBQ3BCc0QsSUFBb0IsR0FBRyxFQUFFO2NBQUEwQixTQUFBLENBQUF4RSxJQUFBO2NBQUFnRSxLQUFBLEdBRzJCRixhQUFhLElBQUksQ0FBQyxDQUFDLEVBQUFHLHFCQUFBLEdBQUFELEtBQUEsQ0FBbEUvQixnQkFBZ0IsRUFBaEJBLGdCQUFnQixHQUFBZ0MscUJBQUEsY0FBRyxDQUFDLENBQUMsR0FBQUEscUJBQUEsRUFBQUMsa0JBQUEsR0FBQUYsS0FBQSxDQUFFYixZQUFZLEVBQVpBLFlBQVksR0FBQWUsa0JBQUEsY0FBRyxLQUFLLEdBQUFBLGtCQUFBO2NBQUFNLFNBQUEsQ0FBQXZFLElBQUE7Y0FBQSxPQUV0QixJQUFBbUYsdUNBQW9CLEVBQUM3RixDQUFDLEVBQUVpRSxTQUFTLENBQUM7WUFBQTtjQUF4RFcsYUFBYSxHQUFBSyxTQUFBLENBQUFHLElBQUE7Y0FDYlAsZ0JBQWdCLEdBQUcsSUFBQWlCLDBDQUF1QixFQUFDbEIsYUFBYSxDQUFDO2NBQ3pERSxhQUFhLEdBQUcsSUFBQWlCLDJDQUF3QixFQUFDOUIsU0FBUyxFQUFFVyxhQUFhLENBQUM7Y0FBQUssU0FBQSxDQUFBdkUsSUFBQTtjQUFBLE9BQzlDVixDQUFDLENBQUM0QixLQUFLLENBQUNrRCxhQUFhLENBQUM7WUFBQTtjQUExQ0MsV0FBVyxHQUFBRSxTQUFBLENBQUFHLElBQUE7Y0FFakI7O2NBRUFZLHVCQUF1QixDQUFDakIsV0FBVyxFQUFFckMsZ0JBQWdCLENBQUM7Y0FFdER6QyxNQUFNLEdBQUcyRCxZQUFZLEdBQ2pCLElBQUFxQywrQkFBbUIsRUFBQ2xCLFdBQVcsRUFBRUYsZ0JBQWdCLENBQUMsSUFBQUwsWUFBQSxHQUNsRDFFLElBQUksQ0FBQ0csTUFBTSxjQUFBdUUsWUFBQSxjQUFBQSxZQUFBLEdBQUksSUFBQXlCLCtCQUFtQixFQUFDbEIsV0FBVyxFQUFFRixnQkFBZ0IsQ0FBQztjQUNyRXRCLElBQUksR0FBRyxJQUFBMkMsbUJBQUEsYUFBSXZGLEtBQUssQ0FBQ29FLFdBQVcsQ0FBQ29CLE9BQU8sQ0FBQyxDQUFDckosSUFBSSxDQUFDLENBQUMsRUFDekMrRCxHQUFHLENBQUMsVUFBQWxFLENBQUM7Z0JBQUEsT0FBSW9JLFdBQVcsQ0FBQ3FCLFVBQVUsQ0FBQ3pKLENBQUMsQ0FBQztjQUFBLEVBQUMsQ0FDbkNNLE1BQU0sQ0FBQyxVQUFBb0osR0FBRztnQkFBQSxPQUFJQSxHQUFHO2NBQUEsRUFBbUI7Y0FBQ3BCLFNBQUEsQ0FBQXZFLElBQUE7Y0FBQTtZQUFBO2NBQUF1RSxTQUFBLENBQUF4RSxJQUFBO2NBQUF3RSxTQUFBLENBQUFwRCxFQUFBLEdBQUFvRCxTQUFBO2NBRXhDbkQsT0FBTyxDQUFDVSxLQUFLLENBQUMsc0NBQXNDLEVBQUF5QyxTQUFBLENBQUFwRCxFQUFPLENBQUM7Y0FBQyxNQUFBb0QsU0FBQSxDQUFBcEQsRUFBQTtZQUFBO2NBQUFvRCxTQUFBLENBQUF2RSxJQUFBO2NBQUEsT0FJekRWLENBQUMsQ0FBQ3NHLEtBQUssQ0FBQyxDQUFDO1lBQUE7Y0FBQSxPQUFBckIsU0FBQSxDQUFBeEMsTUFBQSxXQUVSO2dCQUFDeEMsTUFBTSxFQUFOQSxNQUFNO2dCQUFFc0QsSUFBSSxFQUFKQTtjQUFJLENBQUM7WUFBQTtZQUFBO2NBQUEsT0FBQTBCLFNBQUEsQ0FBQWpELElBQUE7VUFBQTtRQUFBLEdBQUFnQyxRQUFBO01BQUEsQ0FDdEI7TUFBQSxTQS9EZXVDLHNCQUFzQkEsQ0FBQUMsR0FBQTtRQUFBLE9BQUF6Qyx1QkFBQSxDQUFBM0csS0FBQSxPQUFBRSxTQUFBO01BQUE7TUFBQSxPQUF0QmlKLHNCQUFzQjtJQUFBO0VBQUE7SUFBQWpILEdBQUE7SUFBQUMsS0FBQTtNQUFBLElBQUFrSCxXQUFBLE9BQUFoSCxrQkFBQSwyQkFBQUMsWUFBQSxZQUFBQyxJQUFBLENBaUV0QyxTQUFBK0csU0FBQUMsS0FBQTtRQUFBLElBQUE3RyxJQUFBLEVBQUE4RyxxQkFBQSxFQUFBM0csTUFBQSxFQUFBc0QsSUFBQTtRQUFBLE9BQUE3RCxZQUFBLFlBQUFZLElBQUEsVUFBQXVHLFVBQUFDLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBckcsSUFBQSxHQUFBcUcsU0FBQSxDQUFBcEcsSUFBQTtZQUFBO2NBQWtCWixJQUFJLEdBQUE2RyxLQUFBLENBQUo3RyxJQUFJO2NBQUEsTUFFaEIsSUFBSSxDQUFDNEYsSUFBSSxLQUFLcUIsc0JBQVcsQ0FBQ0MsV0FBVztnQkFBQUYsU0FBQSxDQUFBcEcsSUFBQTtnQkFBQTtjQUFBO2NBQ3ZDcEMsYUFBQSxDQUFBUyxtQkFBQSwwQkFBaUI7Z0JBQUNlLElBQUksRUFBQXpDLGFBQUEsQ0FBQUEsYUFBQSxLQUFNeUMsSUFBSTtrQkFBRUksSUFBSSxFQUFFO2dCQUFFO2NBQUMsQ0FBQztjQUFFLE9BQUE0RyxTQUFBLENBQUFyRSxNQUFBO1lBQUE7Y0FBQXFFLFNBQUEsQ0FBQXBHLElBQUE7Y0FBQSxPQUluQixJQUFJLENBQUM2RixzQkFBc0IsQ0FBQ3pHLElBQUksQ0FBQztZQUFBO2NBQUE4RyxxQkFBQSxHQUFBRSxTQUFBLENBQUExQixJQUFBO2NBQXZEbkYsTUFBTSxHQUFBMkcscUJBQUEsQ0FBTjNHLE1BQU07Y0FBRXNELElBQUksR0FBQXFELHFCQUFBLENBQUpyRCxJQUFJO2NBRW5CakYsYUFBQSxDQUFBUyxtQkFBQSwwQkFBaUI7Z0JBQUNlLElBQUksRUFBRTtrQkFBQ0csTUFBTSxFQUFOQSxNQUFNO2tCQUFFc0QsSUFBSSxFQUFKQSxJQUFJO2tCQUFFckQsSUFBSSxFQUFFO2dCQUFFO2NBQUMsQ0FBQztZQUFFO1lBQUE7Y0FBQSxPQUFBNEcsU0FBQSxDQUFBOUUsSUFBQTtVQUFBO1FBQUEsR0FBQTBFLFFBQUE7TUFBQSxDQUNwRDtNQUFBLFNBVktPLFVBQVVBLENBQUFDLEdBQUE7UUFBQSxPQUFBVCxXQUFBLENBQUFySixLQUFBLE9BQUFFLFNBQUE7TUFBQTtNQUFBLE9BQVYySixVQUFVO0lBQUE7RUFBQTtJQUFBM0gsR0FBQTtJQUFBQyxLQUFBO01BQUEsSUFBQTRILE9BQUEsT0FBQTFILGtCQUFBLDJCQUFBQyxZQUFBLFlBQUFDLElBQUEsQ0FZaEIsU0FBQXlILFNBQWF0SCxJQUFJO1FBQUEsSUFBQXVILHNCQUFBLEVBQUE5RCxJQUFBO1FBQUEsT0FBQTdELFlBQUEsWUFBQVksSUFBQSxVQUFBZ0gsVUFBQUMsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUE5RyxJQUFBLEdBQUE4RyxTQUFBLENBQUE3RyxJQUFBO1lBQUE7Y0FBQSxNQUVYLElBQUksQ0FBQ2dGLElBQUksS0FBS3FCLHNCQUFXLENBQUNDLFdBQVc7Z0JBQUFPLFNBQUEsQ0FBQTdHLElBQUE7Z0JBQUE7Y0FBQTtjQUN2Q3BDLGFBQUEsQ0FBQVMsbUJBQUEsMEJBQWlCO2dCQUFDZSxJQUFJLEVBQUpBO2NBQUksQ0FBQztjQUFFLE9BQUF5SCxTQUFBLENBQUE5RSxNQUFBLFdBQ2xCLElBQUk7WUFBQTtjQUFBOEUsU0FBQSxDQUFBN0csSUFBQTtjQUFBLE9BR1EsSUFBSSxDQUFDNkYsc0JBQXNCLENBQUN6RyxJQUFJLENBQUM7WUFBQTtjQUFBdUgsc0JBQUEsR0FBQUUsU0FBQSxDQUFBbkMsSUFBQTtjQUEvQzdCLElBQUksR0FBQThELHNCQUFBLENBQUo5RCxJQUFJO2NBQUEsT0FBQWdFLFNBQUEsQ0FBQTlFLE1BQUEsV0FBQW5FLGFBQUEsQ0FBQVMsbUJBQUEsc0JBRVM7Z0JBQUN3RSxJQUFJLEVBQUpBLElBQUk7Z0JBQUVyRCxJQUFJLEVBQUUsRUFBRTtnQkFBRUQsTUFBTSxFQUFFO2NBQUUsQ0FBQztZQUFBO1lBQUE7Y0FBQSxPQUFBc0gsU0FBQSxDQUFBdkYsSUFBQTtVQUFBO1FBQUEsR0FBQW9GLFFBQUE7TUFBQSxDQUNqRDtNQUFBLFNBVktJLE1BQU1BLENBQUFDLEdBQUE7UUFBQSxPQUFBTixPQUFBLENBQUEvSixLQUFBLE9BQUFFLFNBQUE7TUFBQTtNQUFBLE9BQU5rSyxNQUFNO0lBQUE7RUFBQTtBQUFBLEVBOUwyQkUsa0JBQVc7QUFvT3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBLElBQUFqSyxnQkFBQSxhQXBPYXNCLG1CQUFtQixzQkEwTUosVUFBVWUsSUFBUyxFQUFFNkgsV0FBb0IsRUFBRTtFQUNuRSxJQUFJQyxTQUFTO0VBQ2IsSUFBSTFELE1BQU07RUFDVixJQUFJeUQsV0FBVyxLQUFLbEMsMEJBQWUsQ0FBQzFLLEtBQUssSUFBSSxJQUFBOE0sdUJBQVcsRUFBQy9ILElBQUksQ0FBQyxFQUFFO0lBQzlEb0UsTUFBTSxHQUFHdUIsMEJBQWUsQ0FBQzFLLEtBQUs7SUFDOUI2TSxTQUFTLEdBQUdFLCtCQUFtQjtFQUNqQyxDQUFDLE1BQU0sSUFBSUgsV0FBVyxLQUFLbEMsMEJBQWUsQ0FBQ3NDLFFBQVEsSUFBSSxJQUFBQyx5QkFBYSxFQUFDbEksSUFBSSxDQUFDLEVBQUU7SUFDMUVvRSxNQUFNLEdBQUd1QiwwQkFBZSxDQUFDc0MsUUFBUTtJQUNqQ0gsU0FBUyxHQUFHSywyQ0FBNEI7RUFDMUMsQ0FBQyxNQUFNLElBQUlOLFdBQVcsS0FBS2xDLDBCQUFlLENBQUMzRSxHQUFHLElBQUksSUFBQW9ILHVCQUFXLEVBQUNwSSxJQUFJLENBQUMsRUFBRTtJQUNuRTtJQUNBb0UsTUFBTSxHQUFHdUIsMEJBQWUsQ0FBQzNFLEdBQUc7SUFDNUI4RyxTQUFTLEdBQUdPLGtDQUFtQixDQUFDLENBQUM7RUFDbkMsQ0FBQyxNQUFNLElBQUlSLFdBQVcsS0FBS2xDLDBCQUFlLENBQUNFLE9BQU8sSUFBSSxJQUFBeUMscUJBQVMsRUFBQ3RJLElBQUksQ0FBQyxFQUFFO0lBQ3JFb0UsTUFBTSxHQUFHdUIsMEJBQWUsQ0FBQ0UsT0FBTztJQUNoQ2lDLFNBQVMsR0FBR1MsNkJBQWM7RUFDNUI7RUFDQSxPQUFPO0lBQUNULFNBQVMsRUFBVEEsU0FBUztJQUFFMUQsTUFBTSxFQUFOQTtFQUFNLENBQUM7QUFDNUIsQ0FBQztBQUFBLElBQUF6RyxnQkFBQSxhQTVOVXNCLG1CQUFtQiwyQkE4TkMsWUFBWTtFQUN6QztFQUNBLE9BQU8sVUFBQXVKLENBQUM7SUFBQSxPQUFJQSxDQUFDO0VBQUE7QUFDZixDQUFDO0FBU0ksSUFBTXRDLHVCQUF1QixHQUFBaEgsT0FBQSxDQUFBZ0gsdUJBQUEsR0FBRyxTQUExQkEsdUJBQXVCQSxDQUNsQy9DLFVBQXVCLEVBQ3ZCUCxnQkFBd0MsRUFDckM7RUFDSE8sVUFBVSxDQUFDc0YsTUFBTSxDQUFDdEksTUFBTSxDQUFDekMsT0FBTyxDQUFDLFVBQUFnTCxDQUFDLEVBQUk7SUFDcEMsSUFBSXpOLEtBQUssQ0FBQzBOLFFBQVEsQ0FBQ0MsUUFBUSxDQUFDRixDQUFDLENBQUM5QyxJQUFJLENBQUMsSUFBSWhELGdCQUFnQixDQUFDOEYsQ0FBQyxDQUFDdkgsSUFBSSxDQUFDLEVBQUU7TUFDL0R1SCxDQUFDLENBQUNqRCxRQUFRLENBQUMzSSxHQUFHLENBQUMrTCxnQ0FBcUIsRUFBRWpHLGdCQUFnQixDQUFDOEYsQ0FBQyxDQUFDdkgsSUFBSSxDQUFDLENBQUM7SUFDakUsQ0FBQyxNQUFNLElBQUksSUFBQTJILGlDQUFlLEVBQUNKLENBQUMsQ0FBQzlDLElBQUksQ0FBQyxFQUFFO01BQ2xDOEMsQ0FBQyxDQUFDakQsUUFBUSxDQUFDM0ksR0FBRyxDQUFDK0wsZ0NBQXFCLEVBQUU5Siw4QkFBbUIsQ0FBQ2dLLEtBQUssQ0FBQztJQUNsRSxDQUFDLE1BQU0sSUFBSSxJQUFBQyxzQ0FBb0IsRUFBQ04sQ0FBQyxDQUFDOUMsSUFBSSxDQUFDLEVBQUU7TUFDdkM4QyxDQUFDLENBQUNqRCxRQUFRLENBQUMzSSxHQUFHLENBQUMrTCxnQ0FBcUIsRUFBRTlKLDhCQUFtQixDQUFDa0ssVUFBVSxDQUFDO0lBQ3ZFLENBQUMsTUFBTSxJQUFJLElBQUFDLG1DQUFpQixFQUFDUixDQUFDLENBQUM5QyxJQUFJLENBQUMsRUFBRTtNQUNwQzhDLENBQUMsQ0FBQ2pELFFBQVEsQ0FBQzNJLEdBQUcsQ0FBQytMLGdDQUFxQixFQUFFOUosOEJBQW1CLENBQUNvSyxPQUFPLENBQUM7SUFDcEUsQ0FBQyxNQUFNLElBQUksSUFBQUMsc0NBQW9CLEVBQUNWLENBQUMsQ0FBQzlDLElBQUksQ0FBQyxFQUFFO01BQ3ZDOEMsQ0FBQyxDQUFDakQsUUFBUSxDQUFDM0ksR0FBRyxDQUFDK0wsZ0NBQXFCLEVBQUU5Siw4QkFBbUIsQ0FBQ3NLLFVBQVUsQ0FBQztJQUN2RSxDQUFDLE1BQU0sSUFBSSxJQUFBQywyQ0FBeUIsRUFBQ1osQ0FBQyxDQUFDOUMsSUFBSSxDQUFDLEVBQUU7TUFDNUM4QyxDQUFDLENBQUNqRCxRQUFRLENBQUMzSSxHQUFHLENBQUMrTCxnQ0FBcUIsRUFBRTlKLDhCQUFtQixDQUFDd0ssZUFBZSxDQUFDO0lBQzVFLENBQUMsTUFBTSxJQUFJLElBQUFDLHdDQUFzQixFQUFDZCxDQUFDLENBQUM5QyxJQUFJLENBQUMsRUFBRTtNQUN6QzhDLENBQUMsQ0FBQ2pELFFBQVEsQ0FBQzNJLEdBQUcsQ0FBQytMLGdDQUFxQixFQUFFOUosOEJBQW1CLENBQUMwSyxZQUFZLENBQUM7SUFDekU7RUFDRixDQUFDLENBQUM7QUFDSixDQUFDIiwiaWdub3JlTGlzdCI6W119
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kepler.gl/duckdb",
|
|
3
3
|
"author": "Shan He <heshan0131@gmail.com>",
|
|
4
|
-
"version": "3.1.
|
|
4
|
+
"version": "3.1.8",
|
|
5
5
|
"description": "DuckDB plugin for Kepler.gl",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -26,11 +26,11 @@
|
|
|
26
26
|
],
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@duckdb/duckdb-wasm": "^1.28.0",
|
|
29
|
-
"@kepler.gl/common-utils": "3.1.
|
|
30
|
-
"@kepler.gl/constants": "3.1.
|
|
31
|
-
"@kepler.gl/processors": "3.1.
|
|
32
|
-
"@kepler.gl/table": "3.1.
|
|
33
|
-
"@kepler.gl/types": "3.1.
|
|
29
|
+
"@kepler.gl/common-utils": "3.1.8",
|
|
30
|
+
"@kepler.gl/constants": "3.1.8",
|
|
31
|
+
"@kepler.gl/processors": "3.1.8",
|
|
32
|
+
"@kepler.gl/table": "3.1.8",
|
|
33
|
+
"@kepler.gl/types": "3.1.8",
|
|
34
34
|
"@monaco-editor/react": "^4.6.0",
|
|
35
35
|
"@radix-ui/react-collapsible": "^1.1.0",
|
|
36
36
|
"apache-arrow": ">=15.0.0",
|