verdaccio 5.15.2 → 5.15.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/build/api/middleware.js +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
### [5.15.3](https://github.com/verdaccio/verdaccio/compare/v5.15.2...v5.15.3) (2022-09-07)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* remove stringify with space responses ([#3364](https://github.com/verdaccio/verdaccio/issues/3364)) ([90e7cfd](https://github.com/verdaccio/verdaccio/commit/90e7cfd1edcd7e7111ff742e001e454c54bc6efd))
|
|
11
|
+
|
|
5
12
|
### [5.15.2](https://github.com/verdaccio/verdaccio/compare/v5.15.1...v5.15.2) (2022-09-05)
|
|
6
13
|
|
|
7
14
|
|
package/build/api/middleware.js
CHANGED
|
@@ -240,7 +240,7 @@ function final(body, req, res, next) {
|
|
|
240
240
|
res.locals._verdaccio_error = body.error;
|
|
241
241
|
}
|
|
242
242
|
|
|
243
|
-
body = JSON.stringify(body
|
|
243
|
+
body = JSON.stringify(body);
|
|
244
244
|
} // don't send etags with errors
|
|
245
245
|
|
|
246
246
|
|
|
@@ -424,4 +424,4 @@ function errorReportingMiddleware(req, res, next) {
|
|
|
424
424
|
|
|
425
425
|
next();
|
|
426
426
|
}
|
|
427
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZWJ1ZyIsImJ1aWxkRGVidWciLCJtYXRjaCIsInJlZ2V4cCIsInJlcSIsInJlcyIsIm5leHQiLCJ2YWx1ZSIsImV4ZWMiLCJzZXJ2ZUZhdmljb24iLCJjb25maWciLCJsb2dvQ29uZiIsIndlYiIsImZhdmljb24iLCJzdGF0dXMiLCJfIiwiaXNFbXB0eSIsInZhbGlkYXRvciIsImlzVVJMIiwicmVxdWlyZV9ob3N0IiwicmVxdWlyZV92YWxpZF9wcm90b2NvbCIsInJlZGlyZWN0IiwiZmF2aWNvblBhdGgiLCJwYXRoIiwibm9ybWFsaXplIiwiZnMiLCJhY2Nlc3MiLCJjb25zdGFudHMiLCJSX09LIiwiZXJyIiwibWVzc2FnZSIsIkhUVFBfU1RBVFVTIiwiTk9UX0ZPVU5EIiwiZW5kIiwic2V0SGVhZGVyIiwiY3JlYXRlUmVhZFN0cmVhbSIsInBpcGUiLCJwb3NpeCIsImpvaW4iLCJfX2Rpcm5hbWUiLCJzZXRTZWN1cml0eVdlYkhlYWRlcnMiLCJoZWFkZXIiLCJIRUFERVJTIiwiRlJBTUVTX09QVElPTlMiLCJDU1AiLCJDVE8iLCJYU1MiLCJ2YWxpZGF0ZU5hbWUiLCJuYW1lIiwidXRpbFZhbGlkYXRlTmFtZSIsIkVycm9yQ29kZSIsImdldEZvcmJpZGRlbiIsInZhbGlkYXRlUGFja2FnZSIsInV0aWxWYWxpZGF0ZVBhY2thZ2UiLCJtZWRpYSIsImV4cGVjdCIsImhlYWRlcnMiLCJIRUFERVJfVFlQRSIsIkNPTlRFTlRfVFlQRSIsImdldENvZGUiLCJVTlNVUFBPUlRFRF9NRURJQSIsImdldCIsImVuY29kZVNjb3BlUGFja2FnZSIsInVybCIsImluZGV4T2YiLCJyZXBsYWNlIiwiZXhwZWN0SnNvbiIsImlzT2JqZWN0IiwiYm9keSIsImdldEJhZFJlcXVlc3QiLCJhbnRpTG9vcCIsInZpYSIsImFyciIsInNwbGl0IiwiaSIsImxlbmd0aCIsIm0iLCJzZXJ2ZXJfaWQiLCJMT09QX0RFVEVDVEVEIiwiYWxsb3ciLCJhdXRoIiwiYWN0aW9uIiwicGF1c2UiLCJwYWNrYWdlTmFtZSIsInBhcmFtcyIsInNjb3BlIiwicGFja2FnZSIsInBhY2thZ2VWZXJzaW9uIiwidW5kZWZpbmVkIiwiZmlsZW5hbWUiLCJnZXRWZXJzaW9uRnJvbVRhcmJhbGwiLCJ2ZXJzaW9ucyIsIk9iamVjdCIsImtleXMiLCJyZW1vdGUiLCJyZW1vdGVfdXNlciIsImVycm9yIiwiYWxsb3dlZCIsInJlc3VtZSIsImdldEludGVybmFsRXJyb3IiLCJBUElfRVJST1IiLCJQTFVHSU5fRVJST1IiLCJmaW5hbCIsInN0YXR1c0NvZGUiLCJVTkFVVEhPUklaRUQiLCJnZXRIZWFkZXIiLCJXV1dfQVVUSCIsIlRPS0VOX0JBU0lDIiwiVE9LRU5fQkVBUkVSIiwiaXNTdHJpbmciLCJKU09OIiwiaXNOaWwiLCJsb2NhbHMiLCJfdmVyZGFjY2lvX2Vycm9yIiwic3RyaW5naWZ5IiwiT0siLCJNVUxUSVBMRV9DSE9JQ0VTIiwiRVRBRyIsInN0cmluZ1RvTUQ1Iiwic29ja2V0IiwiZGVzdHJveSIsInNlbmQiLCJMT0dfU1RBVFVTX01FU1NBR0UiLCJMT0dfVkVSREFDQ0lPX0VSUk9SIiwiTE9HX1ZFUkRBQ0NJT19CWVRFUyIsImxvZyIsIl9hdXRoIiwiYXV0aG9yaXphdGlvbiIsIl9jb29raWUiLCJjb29raWUiLCJvcmlnaW5hbFVybCIsImxvZ2dlciIsImh0dHAiLCJpcCIsImJ5dGVzaW4iLCJleHBlcmltZW50cyIsImJ5dGVzaW5fb2ZmIiwib24iLCJjaHVuayIsImJ5dGVzb3V0IiwiX3dyaXRlIiwid3JpdGUiLCJidWYiLCJhcHBseSIsImFyZ3VtZW50cyIsImxvZ0hhc0JlZW5DYWxsZWQiLCJmb3J3YXJkZWRGb3IiLCJyZW1vdGVBZGRyZXNzIiwiY29ubmVjdGlvbiIsInJlbW90ZUlQIiwicmVxdWVzdCIsIm1ldGhvZCIsInVzZXIiLCJieXRlcyIsImluIiwib3V0IiwiX2VuZCIsImVycm9yUmVwb3J0aW5nTWlkZGxld2FyZSIsInJlcG9ydF9lcnJvciIsIkJBRF9SRVFVRVNUIiwiaGVhZGVyc1NlbnQiLCJVTktOT1dOX0VSUk9SIiwiSU5URVJOQUxfRVJST1IiLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL21pZGRsZXdhcmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJ1aWxkRGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB2YWxpZGF0b3IgZnJvbSAndmFsaWRhdG9yJztcblxuaW1wb3J0IHsgVmVyZGFjY2lvRXJyb3IgfSBmcm9tICdAdmVyZGFjY2lvL2NvbW1vbnMtYXBpJztcbmltcG9ydCB7IENvbmZpZywgUGFja2FnZSwgUmVtb3RlVXNlciB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kLCBJQXV0aCB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEFQSV9FUlJPUiwgSEVBREVSUywgSEVBREVSX1RZUEUsIEhUVFBfU1RBVFVTLCBUT0tFTl9CQVNJQywgVE9LRU5fQkVBUkVSIH0gZnJvbSAnLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBzdHJpbmdUb01ENSB9IGZyb20gJy4uL2xpYi9jcnlwdG8tdXRpbHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vbGliL2xvZ2dlcic7XG5pbXBvcnQgeyBFcnJvckNvZGUsIGdldFZlcnNpb25Gcm9tVGFyYmFsbCwgaXNPYmplY3QsIHZhbGlkYXRlTmFtZSBhcyB1dGlsVmFsaWRhdGVOYW1lLCB2YWxpZGF0ZVBhY2thZ2UgYXMgdXRpbFZhbGlkYXRlUGFja2FnZSB9IGZyb20gJy4uL2xpYi91dGlscyc7XG5cbmNvbnN0IGRlYnVnID0gYnVpbGREZWJ1ZygndmVyZGFjY2lvJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaChyZWdleHA6IFJlZ0V4cCk6IGFueSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAocmVnZXhwLmV4ZWModmFsdWUpKSB7XG4gICAgICBuZXh0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHQoJ3JvdXRlJyk7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VydmVGYXZpY29uKGNvbmZpZzogQ29uZmlnKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpIHtcbiAgICB0cnkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgbG9nb0NvbmY6IHN0cmluZyA9IGNvbmZpZz8ud2ViPy5mYXZpY29uIGFzIHN0cmluZztcbiAgICAgIGlmIChsb2dvQ29uZiA9PT0gJycpIHtcbiAgICAgICAgZGVidWcoJ2Zhdmljb24gZGlzYWJsZWQnKTtcbiAgICAgICAgcmVzLnN0YXR1cyg0MDQpO1xuICAgICAgfSBlbHNlIGlmICghXy5pc0VtcHR5KGxvZ29Db25mKSkge1xuICAgICAgICBkZWJ1ZygnY3VzdG9tIGZhdmljb24nKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHZhbGlkYXRvci5pc1VSTChsb2dvQ29uZiwge1xuICAgICAgICAgICAgcmVxdWlyZV9ob3N0OiB0cnVlLFxuICAgICAgICAgICAgcmVxdWlyZV92YWxpZF9wcm90b2NvbDogdHJ1ZSxcbiAgICAgICAgICB9KVxuICAgICAgICApIHtcbiAgICAgICAgICBkZWJ1ZygncmVkaXJlY3QgdG8gJW8nLCBsb2dvQ29uZik7XG4gICAgICAgICAgcmVzLnJlZGlyZWN0KGxvZ29Db25mKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZmF2aWNvblBhdGggPSBwYXRoLm5vcm1hbGl6ZShsb2dvQ29uZik7XG4gICAgICAgICAgZGVidWcoJ3NlcnZpbmcgZmF2aWNvbiBmcm9tICVvJywgZmF2aWNvblBhdGgpO1xuICAgICAgICAgIGZzLmFjY2VzcyhmYXZpY29uUGF0aCwgZnMuY29uc3RhbnRzLlJfT0ssIChlcnIpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgZGVidWcoJ25vIHJlYWQgcGVybWlzc2lvbnMgdG8gcmVhZDogJW8sIHJlYXNvbjonLCBsb2dvQ29uZiwgZXJyPy5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuTk9UX0ZPVU5EKS5lbmQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ2NvbnRlbnQtdHlwZScsICdpbWFnZS94LWljb24nKTtcbiAgICAgICAgICAgICAgZnMuY3JlYXRlUmVhZFN0cmVhbShmYXZpY29uUGF0aCkucGlwZShyZXMpO1xuICAgICAgICAgICAgICBkZWJ1ZygncmVuZGVyZWQgY3VzdG9tIGljbycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXMuc2V0SGVhZGVyKCdjb250ZW50LXR5cGUnLCAnaW1hZ2UveC1pY29uJyk7XG4gICAgICAgIGZzLmNyZWF0ZVJlYWRTdHJlYW0ocGF0aC5wb3NpeC5qb2luKF9fZGlybmFtZSwgJy4vd2ViL2h0bWwvZmF2aWNvbi5pY28nKSkucGlwZShyZXMpO1xuICAgICAgICBkZWJ1ZygncmVuZGVyZWQgaWNvJyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBkZWJ1ZygnZXJyb3IgdHJpZ2dlcmVkLCBmYXZpY29uIG5vdCBmb3VuZCcpO1xuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5OT1RfRk9VTkQpLmVuZCgpO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFNlY3VyaXR5V2ViSGVhZGVycyhyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAvLyBkaXNhYmxlIGxvYWRpbmcgaW4gZnJhbWVzIChjbGlja2phY2tpbmcsIGV0Yy4pXG4gIHJlcy5oZWFkZXIoSEVBREVSUy5GUkFNRVNfT1BUSU9OUywgJ2RlbnknKTtcbiAgLy8gYXZvaWQgc3RhYmxpc2ggY29ubmVjdGlvbnMgb3V0c2lkZSBvZiBkb21haW5cbiAgcmVzLmhlYWRlcihIRUFERVJTLkNTUCwgXCJjb25uZWN0LXNyYyAnc2VsZidcIik7XG4gIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE4MzM3NjMwL3doYXQtaXMteC1jb250ZW50LXR5cGUtb3B0aW9ucy1ub3NuaWZmXG4gIHJlcy5oZWFkZXIoSEVBREVSUy5DVE8sICdub3NuaWZmJyk7XG4gIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzkwOTA1Nzcvd2hhdC1pcy10aGUtaHR0cC1oZWFkZXIteC14c3MtcHJvdGVjdGlvblxuICByZXMuaGVhZGVyKEhFQURFUlMuWFNTLCAnMTsgbW9kZT1ibG9jaycpO1xuICBuZXh0KCk7XG59XG5cbi8vIGZsb3c6IGV4cHJlc3MgZG9lcyBub3QgbWF0Y2ggcHJvcGVybHlcbi8vIGZsb3cgaW5mbyBodHRwczovL2dpdGh1Yi5jb20vZmxvd3R5cGUvZmxvdy10eXBlZC9pc3N1ZXM/dXRmOD0lRTIlOUMlOTMmcT1pcyUzQWlzc3VlK2lzJTNBb3BlbitleHByZXNzXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVOYW1lKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyLCB2YWx1ZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKHZhbHVlID09PSAnLScpIHtcbiAgICAvLyBzcGVjaWFsIGNhc2UgaW4gY291Y2hkYiB1c3VhbGx5XG4gICAgbmV4dCgncm91dGUnKTtcbiAgfSBlbHNlIGlmICh1dGlsVmFsaWRhdGVOYW1lKHZhbHVlKSkge1xuICAgIG5leHQoKTtcbiAgfSBlbHNlIHtcbiAgICBuZXh0KEVycm9yQ29kZS5nZXRGb3JiaWRkZW4oJ2ludmFsaWQgJyArIG5hbWUpKTtcbiAgfVxufVxuXG4vLyBmbG93OiBleHByZXNzIGRvZXMgbm90IG1hdGNoIHByb3Blcmx5XG4vLyBmbG93IGluZm8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb3d0eXBlL2Zsb3ctdHlwZWQvaXNzdWVzP3V0Zjg9JUUyJTlDJTkzJnE9aXMlM0Fpc3N1ZStpcyUzQW9wZW4rZXhwcmVzc1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUGFja2FnZShyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlciwgdmFsdWU6IHN0cmluZywgbmFtZTogc3RyaW5nKTogdm9pZCB7XG4gIGlmICh2YWx1ZSA9PT0gJy0nKSB7XG4gICAgLy8gc3BlY2lhbCBjYXNlIGluIGNvdWNoZGIgdXN1YWxseVxuICAgIG5leHQoJ3JvdXRlJyk7XG4gIH0gZWxzZSBpZiAodXRpbFZhbGlkYXRlUGFja2FnZSh2YWx1ZSkpIHtcbiAgICBuZXh0KCk7XG4gIH0gZWxzZSB7XG4gICAgbmV4dChFcnJvckNvZGUuZ2V0Rm9yYmlkZGVuKCdpbnZhbGlkICcgKyBuYW1lKSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lZGlhKGV4cGVjdDogc3RyaW5nIHwgbnVsbCk6IGFueSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBpZiAocmVxLmhlYWRlcnNbSEVBREVSX1RZUEUuQ09OVEVOVF9UWVBFXSAhPT0gZXhwZWN0KSB7XG4gICAgICBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLlVOU1VQUE9SVEVEX01FRElBLCAnd3JvbmcgY29udGVudC10eXBlLCBleHBlY3Q6ICcgKyBleHBlY3QgKyAnLCBnb3Q6ICcgKyByZXEuZ2V0KEhFQURFUl9UWVBFLkNPTlRFTlRfVFlQRSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dCgpO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVNjb3BlUGFja2FnZShyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICBpZiAocmVxLnVybC5pbmRleE9mKCdAJykgIT09IC0xKSB7XG4gICAgLy8gZS5nLjogL0BvcmcvcGtnLzEuMi4zIC0+IC9Ab3JnJTJGcGtnLzEuMi4zLCAvQG9yZyUyRnBrZy8xLjIuMyAtPiAvQG9yZyUyRnBrZy8xLjIuM1xuICAgIHJlcS51cmwgPSByZXEudXJsLnJlcGxhY2UoL14oXFwvQFteXFwvJV0rKVxcLyg/ISQpLywgJyQxJTJGJyk7XG4gIH1cbiAgbmV4dCgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwZWN0SnNvbihyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICBpZiAoIWlzT2JqZWN0KHJlcS5ib2R5KSkge1xuICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRCYWRSZXF1ZXN0KFwiY2FuJ3QgcGFyc2UgaW5jb21pbmcganNvblwiKSk7XG4gIH1cbiAgbmV4dCgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYW50aUxvb3AoY29uZmlnOiBDb25maWcpOiBGdW5jdGlvbiB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBpZiAocmVxPy5oZWFkZXJzPy52aWEgIT0gbnVsbCkge1xuICAgICAgY29uc3QgYXJyID0gcmVxLmhlYWRlcnMudmlhLnNwbGl0KCcsJyk7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG0gPSBhcnJbaV0ubWF0Y2goL1xccyooXFxTKylcXHMrKFxcUyspLyk7XG4gICAgICAgIGlmIChtICYmIG1bMl0gPT09IGNvbmZpZy5zZXJ2ZXJfaWQpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0Q29kZShIVFRQX1NUQVRVUy5MT09QX0RFVEVDVEVELCAnbG9vcCBkZXRlY3RlZCcpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBuZXh0KCk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGxvdyhhdXRoOiBJQXV0aCk6IEZ1bmN0aW9uIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhY3Rpb246IHN0cmluZyk6IEZ1bmN0aW9uIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICByZXEucGF1c2UoKTtcbiAgICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5zY29wZSA/IGBAJHtyZXEucGFyYW1zLnNjb3BlfS8ke3JlcS5wYXJhbXMucGFja2FnZX1gIDogcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgICAgbGV0IHBhY2thZ2VWZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgICBpZiAocmVxLnBhcmFtcy5maWxlbmFtZSkge1xuICAgICAgICBwYWNrYWdlVmVyc2lvbiA9IGdldFZlcnNpb25Gcm9tVGFyYmFsbChyZXEucGFyYW1zLmZpbGVuYW1lKSB8fCB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiByZXEuYm9keS52ZXJzaW9ucyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcGFja2FnZVZlcnNpb24gPSBPYmplY3Qua2V5cyhyZXEuYm9keS52ZXJzaW9ucylbMF07XG4gICAgICB9XG4gICAgICBjb25zdCByZW1vdGU6IFJlbW90ZVVzZXIgPSByZXEucmVtb3RlX3VzZXI7XG4gICAgICBkZWJ1ZygnW21pZGRsZXdhcmUvYWxsb3ddWyVvXSBhbGxvdyBmb3IgJW8nLCBhY3Rpb24sIHJlbW90ZT8ubmFtZSk7XG4gICAgICBhdXRoWydhbGxvd18nICsgYWN0aW9uXSh7IHBhY2thZ2VOYW1lLCBwYWNrYWdlVmVyc2lvbiB9LCByZW1vdGUsIGZ1bmN0aW9uIChlcnJvciwgYWxsb3dlZCk6IHZvaWQge1xuICAgICAgICByZXEucmVzdW1lKCk7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIG5leHQoZXJyb3IpO1xuICAgICAgICB9IGVsc2UgaWYgKGFsbG93ZWQpIHtcbiAgICAgICAgICBuZXh0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gbGFzdCBwbHVnaW4gKHRoYXQncyBvdXIgYnVpbHQtaW4gb25lKSByZXR1cm5zIGVpdGhlclxuICAgICAgICAgIC8vIGNiKGVycikgb3IgY2IobnVsbCwgdHJ1ZSksIHNvIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlblxuICAgICAgICAgIHRocm93IEVycm9yQ29kZS5nZXRJbnRlcm5hbEVycm9yKEFQSV9FUlJPUi5QTFVHSU5fRVJST1IpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pZGRsZXdhcmVFcnJvciB7XG4gIGVycm9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEZpbmFsQm9keSA9IFBhY2thZ2UgfCBNaWRkbGV3YXJlRXJyb3IgfCBzdHJpbmc7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5hbChib2R5OiBGaW5hbEJvZHksIHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gIGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gSFRUUF9TVEFUVVMuVU5BVVRIT1JJWkVEICYmICFyZXMuZ2V0SGVhZGVyKEhFQURFUlMuV1dXX0FVVEgpKSB7XG4gICAgLy8gdGhleSBzYXkgaXQncyByZXF1aXJlZCBmb3IgNDAxLCBzby4uLlxuICAgIHJlcy5oZWFkZXIoSEVBREVSUy5XV1dfQVVUSCwgYCR7VE9LRU5fQkFTSUN9LCAke1RPS0VOX0JFQVJFUn1gKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKF8uaXNTdHJpbmcoYm9keSkgfHwgXy5pc09iamVjdChib2R5KSkge1xuICAgICAgaWYgKCFyZXMuZ2V0SGVhZGVyKEhFQURFUlMuQ09OVEVOVF9UWVBFKSkge1xuICAgICAgICByZXMuaGVhZGVyKEhFQURFUlMuQ09OVEVOVF9UWVBFLCBIRUFERVJTLkpTT04pO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGJvZHkgPT09ICdvYmplY3QnICYmIF8uaXNOaWwoYm9keSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgKGJvZHkgYXMgTWlkZGxld2FyZUVycm9yKS5lcnJvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXMubG9jYWxzLl92ZXJkYWNjaW9fZXJyb3IgPSAoYm9keSBhcyBNaWRkbGV3YXJlRXJyb3IpLmVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGJvZHkgPSBKU09OLnN0cmluZ2lmeShib2R5LCB1bmRlZmluZWQsICcgICcpICsgJ1xcbic7XG4gICAgICB9XG5cbiAgICAgIC8vIGRvbid0IHNlbmQgZXRhZ3Mgd2l0aCBlcnJvcnNcbiAgICAgIGlmICghcmVzLnN0YXR1c0NvZGUgfHwgKHJlcy5zdGF0dXNDb2RlID49IEhUVFBfU1RBVFVTLk9LICYmIHJlcy5zdGF0dXNDb2RlIDwgSFRUUF9TVEFUVVMuTVVMVElQTEVfQ0hPSUNFUykpIHtcbiAgICAgICAgcmVzLmhlYWRlcihIRUFERVJTLkVUQUcsICdcIicgKyBzdHJpbmdUb01ENShib2R5IGFzIHN0cmluZykgKyAnXCInKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gc2VuZChudWxsKSwgc2VuZCgyMDQpLCBldGMuXG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBpZiB2ZXJkYWNjaW8gc2VuZHMgaGVhZGVycyBmaXJzdCwgYW5kIHRoZW4gY2FsbHMgcmVzLnNlbmQoKVxuICAgIC8vIGFzIGFuIGVycm9yIGhhbmRsZXIsIHdlIGNhbid0IHJlcG9ydCBlcnJvciBwcm9wZXJseSxcbiAgICAvLyBhbmQgc2hvdWxkIGp1c3QgY2xvc2Ugc29ja2V0XG4gICAgaWYgKGVyci5tZXNzYWdlLm1hdGNoKC9zZXQgaGVhZGVycyBhZnRlciB0aGV5IGFyZSBzZW50LykpIHtcbiAgICAgIGlmIChfLmlzTmlsKHJlcy5zb2NrZXQpID09PSBmYWxzZSkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJlcy5zb2NrZXQuZGVzdHJveSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aHJvdyBlcnI7XG4gIH1cblxuICByZXMuc2VuZChib2R5KTtcbn1cblxuZXhwb3J0IGNvbnN0IExPR19TVEFUVVNfTUVTU0FHRSA9IFwiQHtzdGF0dXN9LCB1c2VyOiBAe3VzZXJ9KEB7cmVtb3RlSVB9KSwgcmVxOiAnQHtyZXF1ZXN0Lm1ldGhvZH0gQHtyZXF1ZXN0LnVybH0nXCI7XG5leHBvcnQgY29uc3QgTE9HX1ZFUkRBQ0NJT19FUlJPUiA9IGAke0xPR19TVEFUVVNfTUVTU0FHRX0sIGVycm9yOiBAeyFlcnJvcn1gO1xuZXhwb3J0IGNvbnN0IExPR19WRVJEQUNDSU9fQllURVMgPSBgJHtMT0dfU1RBVFVTX01FU1NBR0V9LCBieXRlczogQHtieXRlcy5pbn0vQHtieXRlcy5vdXR9YDtcblxuZXhwb3J0IGZ1bmN0aW9uIGxvZyhjb25maWc6IENvbmZpZykge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgX2F1dGggPSByZXEuaGVhZGVycy5hdXRob3JpemF0aW9uO1xuICAgIGlmIChfLmlzTmlsKF9hdXRoKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24gPSAnPENsYXNzaWZpZWQ+JztcbiAgICB9XG5cbiAgICBjb25zdCBfY29va2llID0gcmVxLmdldCgnY29va2llJyk7XG4gICAgaWYgKF8uaXNOaWwoX2Nvb2tpZSkgPT09IGZhbHNlKSB7XG4gICAgICByZXEuaGVhZGVycy5jb29raWUgPSAnPENsYXNzaWZpZWQ+JztcbiAgICB9XG5cbiAgICByZXEudXJsID0gcmVxLm9yaWdpbmFsVXJsO1xuICAgIC8vIGF2b2lkIGxvZyBub2lzZSBkYXRhIGZyb20gc3RhdGljIGNvbnRlbnRcbiAgICBpZiAocmVxLm9yaWdpbmFsVXJsLm1hdGNoKC9zdGF0aWMvKSA9PT0gbnVsbCkge1xuICAgICAgbG9nZ2VyLmh0dHAoeyByZXE6IHJlcSwgaXA6IHJlcS5pcCB9LCBcIkB7aXB9IHJlcXVlc3RlZCAnQHtyZXEubWV0aG9kfSBAe3JlcS51cmx9J1wiKTtcbiAgICB9XG4gICAgcmVxLm9yaWdpbmFsVXJsID0gcmVxLnVybDtcblxuICAgIGlmIChfLmlzTmlsKF9hdXRoKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24gPSBfYXV0aDtcbiAgICB9XG5cbiAgICBpZiAoXy5pc05pbChfY29va2llKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJlcS5oZWFkZXJzLmNvb2tpZSA9IF9jb29raWU7XG4gICAgfVxuXG4gICAgbGV0IGJ5dGVzaW4gPSAwO1xuICAgIGlmIChjb25maWc/LmV4cGVyaW1lbnRzPy5ieXRlc2luX29mZiAhPT0gdHJ1ZSkge1xuICAgICAgcmVxLm9uKCdkYXRhJywgZnVuY3Rpb24gKGNodW5rKTogdm9pZCB7XG4gICAgICAgIGJ5dGVzaW4gKz0gY2h1bmsubGVuZ3RoO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgbGV0IGJ5dGVzb3V0ID0gMDtcbiAgICBjb25zdCBfd3JpdGUgPSByZXMud3JpdGU7XG4gICAgLy8gRklYTUU6IHJlcy53cml0ZSBzaG91bGQgcmV0dXJuIGJvb2xlYW5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmVzLndyaXRlID0gZnVuY3Rpb24gKGJ1Zik6IGJvb2xlYW4ge1xuICAgICAgYnl0ZXNvdXQgKz0gYnVmLmxlbmd0aDtcbiAgICAgIC8qIGVzbGludCBwcmVmZXItcmVzdC1wYXJhbXM6IFwib2ZmXCIgKi9cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIF93cml0ZS5hcHBseShyZXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcblxuICAgIGxldCBsb2dIYXNCZWVuQ2FsbGVkID0gZmFsc2U7XG4gICAgY29uc3QgbG9nID0gZnVuY3Rpb24gKCk6IHZvaWQge1xuICAgICAgaWYgKGxvZ0hhc0JlZW5DYWxsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbG9nSGFzQmVlbkNhbGxlZCA9IHRydWU7XG5cbiAgICAgIGNvbnN0IGZvcndhcmRlZEZvciA9IHJlcS5nZXQoJ3gtZm9yd2FyZGVkLWZvcicpO1xuICAgICAgY29uc3QgcmVtb3RlQWRkcmVzcyA9IHJlcS5jb25uZWN0aW9uLnJlbW90ZUFkZHJlc3M7XG4gICAgICBjb25zdCByZW1vdGVJUCA9IGZvcndhcmRlZEZvciA/IGAke2ZvcndhcmRlZEZvcn0gdmlhICR7cmVtb3RlQWRkcmVzc31gIDogcmVtb3RlQWRkcmVzcztcbiAgICAgIGxldCBtZXNzYWdlO1xuICAgICAgaWYgKHJlcy5sb2NhbHMuX3ZlcmRhY2Npb19lcnJvcikge1xuICAgICAgICBtZXNzYWdlID0gTE9HX1ZFUkRBQ0NJT19FUlJPUjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lc3NhZ2UgPSBMT0dfVkVSREFDQ0lPX0JZVEVTO1xuICAgICAgfVxuXG4gICAgICByZXEudXJsID0gcmVxLm9yaWdpbmFsVXJsO1xuICAgICAgLy8gYXZvaWQgbG9nIG5vaXNlIGRhdGEgZnJvbSBzdGF0aWMgY29udGVudFxuICAgICAgaWYgKHJlcS51cmwubWF0Y2goL3N0YXRpYy8pID09PSBudWxsKSB7XG4gICAgICAgIGxvZ2dlci5odHRwKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlcXVlc3Q6IHtcbiAgICAgICAgICAgICAgbWV0aG9kOiByZXEubWV0aG9kLFxuICAgICAgICAgICAgICB1cmw6IHJlcS51cmwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXNlcjogKHJlcS5yZW1vdGVfdXNlciAmJiByZXEucmVtb3RlX3VzZXIubmFtZSkgfHwgbnVsbCxcbiAgICAgICAgICAgIHJlbW90ZUlQLFxuICAgICAgICAgICAgc3RhdHVzOiByZXMuc3RhdHVzQ29kZSxcbiAgICAgICAgICAgIGVycm9yOiByZXMubG9jYWxzLl92ZXJkYWNjaW9fZXJyb3IsXG4gICAgICAgICAgICBieXRlczoge1xuICAgICAgICAgICAgICBpbjogYnl0ZXNpbixcbiAgICAgICAgICAgICAgb3V0OiBieXRlc291dCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtZXNzYWdlXG4gICAgICAgICk7XG4gICAgICAgIHJlcS5vcmlnaW5hbFVybCA9IHJlcS51cmw7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJlcS5vbignY2xvc2UnLCBmdW5jdGlvbiAoKTogdm9pZCB7XG4gICAgICBsb2coKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IF9lbmQgPSByZXMuZW5kO1xuICAgIHJlcy5lbmQgPSBmdW5jdGlvbiAoYnVmKTogdm9pZCB7XG4gICAgICBpZiAoYnVmKSB7XG4gICAgICAgIGJ5dGVzb3V0ICs9IGJ1Zi5sZW5ndGg7XG4gICAgICB9XG4gICAgICAvKiBlc2xpbnQgcHJlZmVyLXJlc3QtcGFyYW1zOiBcIm9mZlwiICovXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBfZW5kLmFwcGx5KHJlcywgYXJndW1lbnRzKTtcbiAgICAgIGxvZygpO1xuICAgIH07XG4gICAgbmV4dCgpO1xuICB9O1xufVxuXG4vLyBNaWRkbGV3YXJlXG5leHBvcnQgZnVuY3Rpb24gZXJyb3JSZXBvcnRpbmdNaWRkbGV3YXJlKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gIHJlcy5sb2NhbHMucmVwb3J0X2Vycm9yID1cbiAgICByZXMubG9jYWxzLnJlcG9ydF9lcnJvciB8fFxuICAgIGZ1bmN0aW9uIChlcnI6IFZlcmRhY2Npb0Vycm9yKTogdm9pZCB7XG4gICAgICBpZiAoZXJyLnN0YXR1cyAmJiBlcnIuc3RhdHVzID49IEhUVFBfU1RBVFVTLkJBRF9SRVFVRVNUICYmIGVyci5zdGF0dXMgPCA2MDApIHtcbiAgICAgICAgaWYgKCFyZXMuaGVhZGVyc1NlbnQpIHtcbiAgICAgICAgICByZXMuc3RhdHVzKGVyci5zdGF0dXMpO1xuICAgICAgICAgIG5leHQoeyBlcnJvcjogZXJyLm1lc3NhZ2UgfHwgQVBJX0VSUk9SLlVOS05PV05fRVJST1IgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcih7IGVycjogZXJyIH0sICd1bmV4cGVjdGVkIGVycm9yOiBAeyFlcnIubWVzc2FnZX1cXG5Ae2Vyci5zdGFja30nKTtcbiAgICAgICAgaWYgKCFyZXMuc3RhdHVzIHx8ICFyZXMuc2VuZCkge1xuICAgICAgICAgIGxvZ2dlci5lcnJvcigndGhpcyBpcyBhbiBlcnJvciBpbiBleHByZXNzLmpzLCBwbGVhc2UgcmVwb3J0IHRoaXMnKTtcbiAgICAgICAgICByZXMuZGVzdHJveSgpO1xuICAgICAgICB9IGVsc2UgaWYgKCFyZXMuaGVhZGVyc1NlbnQpIHtcbiAgICAgICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLklOVEVSTkFMX0VSUk9SKTtcbiAgICAgICAgICBuZXh0KHsgZXJyb3I6IEFQSV9FUlJPUi5JTlRFUk5BTF9TRVJWRVJfRVJST1IgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gc29ja2V0IHNob3VsZCBiZSBhbHJlYWR5IGNsb3NlZFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICBuZXh0KCk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBTUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFFQSxNQUFNQSxLQUFLLEdBQUcsSUFBQUMsY0FBQSxFQUFXLFdBQVgsQ0FBZDs7QUFFTyxTQUFTQyxLQUFULENBQWVDLE1BQWYsRUFBb0M7RUFDekMsT0FBTyxVQUFVQyxHQUFWLEVBQStCQyxHQUEvQixFQUFxREMsSUFBckQsRUFBNkVDLEtBQTdFLEVBQWtHO0lBQ3ZHLElBQUlKLE1BQU0sQ0FBQ0ssSUFBUCxDQUFZRCxLQUFaLENBQUosRUFBd0I7TUFDdEJELElBQUk7SUFDTCxDQUZELE1BRU87TUFDTEEsSUFBSSxDQUFDLE9BQUQsQ0FBSjtJQUNEO0VBQ0YsQ0FORDtBQU9EOztBQUVNLFNBQVNHLFlBQVQsQ0FBc0JDLE1BQXRCLEVBQXNDO0VBQzNDLE9BQU8sVUFBVU4sR0FBVixFQUErQkMsR0FBL0IsRUFBcURDLElBQXJELEVBQTZFO0lBQ2xGLElBQUk7TUFBQTs7TUFDRjtNQUNBLE1BQU1LLFFBQWdCLEdBQUdELE1BQUgsYUFBR0EsTUFBSCxzQ0FBR0EsTUFBTSxDQUFFRSxHQUFYLGdEQUFHLFlBQWFDLE9BQXRDOztNQUNBLElBQUlGLFFBQVEsS0FBSyxFQUFqQixFQUFxQjtRQUNuQlgsS0FBSyxDQUFDLGtCQUFELENBQUw7UUFDQUssR0FBRyxDQUFDUyxNQUFKLENBQVcs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
|
|
427
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZWJ1ZyIsImJ1aWxkRGVidWciLCJtYXRjaCIsInJlZ2V4cCIsInJlcSIsInJlcyIsIm5leHQiLCJ2YWx1ZSIsImV4ZWMiLCJzZXJ2ZUZhdmljb24iLCJjb25maWciLCJsb2dvQ29uZiIsIndlYiIsImZhdmljb24iLCJzdGF0dXMiLCJfIiwiaXNFbXB0eSIsInZhbGlkYXRvciIsImlzVVJMIiwicmVxdWlyZV9ob3N0IiwicmVxdWlyZV92YWxpZF9wcm90b2NvbCIsInJlZGlyZWN0IiwiZmF2aWNvblBhdGgiLCJwYXRoIiwibm9ybWFsaXplIiwiZnMiLCJhY2Nlc3MiLCJjb25zdGFudHMiLCJSX09LIiwiZXJyIiwibWVzc2FnZSIsIkhUVFBfU1RBVFVTIiwiTk9UX0ZPVU5EIiwiZW5kIiwic2V0SGVhZGVyIiwiY3JlYXRlUmVhZFN0cmVhbSIsInBpcGUiLCJwb3NpeCIsImpvaW4iLCJfX2Rpcm5hbWUiLCJzZXRTZWN1cml0eVdlYkhlYWRlcnMiLCJoZWFkZXIiLCJIRUFERVJTIiwiRlJBTUVTX09QVElPTlMiLCJDU1AiLCJDVE8iLCJYU1MiLCJ2YWxpZGF0ZU5hbWUiLCJuYW1lIiwidXRpbFZhbGlkYXRlTmFtZSIsIkVycm9yQ29kZSIsImdldEZvcmJpZGRlbiIsInZhbGlkYXRlUGFja2FnZSIsInV0aWxWYWxpZGF0ZVBhY2thZ2UiLCJtZWRpYSIsImV4cGVjdCIsImhlYWRlcnMiLCJIRUFERVJfVFlQRSIsIkNPTlRFTlRfVFlQRSIsImdldENvZGUiLCJVTlNVUFBPUlRFRF9NRURJQSIsImdldCIsImVuY29kZVNjb3BlUGFja2FnZSIsInVybCIsImluZGV4T2YiLCJyZXBsYWNlIiwiZXhwZWN0SnNvbiIsImlzT2JqZWN0IiwiYm9keSIsImdldEJhZFJlcXVlc3QiLCJhbnRpTG9vcCIsInZpYSIsImFyciIsInNwbGl0IiwiaSIsImxlbmd0aCIsIm0iLCJzZXJ2ZXJfaWQiLCJMT09QX0RFVEVDVEVEIiwiYWxsb3ciLCJhdXRoIiwiYWN0aW9uIiwicGF1c2UiLCJwYWNrYWdlTmFtZSIsInBhcmFtcyIsInNjb3BlIiwicGFja2FnZSIsInBhY2thZ2VWZXJzaW9uIiwidW5kZWZpbmVkIiwiZmlsZW5hbWUiLCJnZXRWZXJzaW9uRnJvbVRhcmJhbGwiLCJ2ZXJzaW9ucyIsIk9iamVjdCIsImtleXMiLCJyZW1vdGUiLCJyZW1vdGVfdXNlciIsImVycm9yIiwiYWxsb3dlZCIsInJlc3VtZSIsImdldEludGVybmFsRXJyb3IiLCJBUElfRVJST1IiLCJQTFVHSU5fRVJST1IiLCJmaW5hbCIsInN0YXR1c0NvZGUiLCJVTkFVVEhPUklaRUQiLCJnZXRIZWFkZXIiLCJXV1dfQVVUSCIsIlRPS0VOX0JBU0lDIiwiVE9LRU5fQkVBUkVSIiwiaXNTdHJpbmciLCJKU09OIiwiaXNOaWwiLCJsb2NhbHMiLCJfdmVyZGFjY2lvX2Vycm9yIiwic3RyaW5naWZ5IiwiT0siLCJNVUxUSVBMRV9DSE9JQ0VTIiwiRVRBRyIsInN0cmluZ1RvTUQ1Iiwic29ja2V0IiwiZGVzdHJveSIsInNlbmQiLCJMT0dfU1RBVFVTX01FU1NBR0UiLCJMT0dfVkVSREFDQ0lPX0VSUk9SIiwiTE9HX1ZFUkRBQ0NJT19CWVRFUyIsImxvZyIsIl9hdXRoIiwiYXV0aG9yaXphdGlvbiIsIl9jb29raWUiLCJjb29raWUiLCJvcmlnaW5hbFVybCIsImxvZ2dlciIsImh0dHAiLCJpcCIsImJ5dGVzaW4iLCJleHBlcmltZW50cyIsImJ5dGVzaW5fb2ZmIiwib24iLCJjaHVuayIsImJ5dGVzb3V0IiwiX3dyaXRlIiwid3JpdGUiLCJidWYiLCJhcHBseSIsImFyZ3VtZW50cyIsImxvZ0hhc0JlZW5DYWxsZWQiLCJmb3J3YXJkZWRGb3IiLCJyZW1vdGVBZGRyZXNzIiwiY29ubmVjdGlvbiIsInJlbW90ZUlQIiwicmVxdWVzdCIsIm1ldGhvZCIsInVzZXIiLCJieXRlcyIsImluIiwib3V0IiwiX2VuZCIsImVycm9yUmVwb3J0aW5nTWlkZGxld2FyZSIsInJlcG9ydF9lcnJvciIsIkJBRF9SRVFVRVNUIiwiaGVhZGVyc1NlbnQiLCJVTktOT1dOX0VSUk9SIiwiSU5URVJOQUxfRVJST1IiLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL21pZGRsZXdhcmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJ1aWxkRGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB2YWxpZGF0b3IgZnJvbSAndmFsaWRhdG9yJztcblxuaW1wb3J0IHsgVmVyZGFjY2lvRXJyb3IgfSBmcm9tICdAdmVyZGFjY2lvL2NvbW1vbnMtYXBpJztcbmltcG9ydCB7IENvbmZpZywgUGFja2FnZSwgUmVtb3RlVXNlciB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kLCBJQXV0aCB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEFQSV9FUlJPUiwgSEVBREVSUywgSEVBREVSX1RZUEUsIEhUVFBfU1RBVFVTLCBUT0tFTl9CQVNJQywgVE9LRU5fQkVBUkVSIH0gZnJvbSAnLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBzdHJpbmdUb01ENSB9IGZyb20gJy4uL2xpYi9jcnlwdG8tdXRpbHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vbGliL2xvZ2dlcic7XG5pbXBvcnQgeyBFcnJvckNvZGUsIGdldFZlcnNpb25Gcm9tVGFyYmFsbCwgaXNPYmplY3QsIHZhbGlkYXRlTmFtZSBhcyB1dGlsVmFsaWRhdGVOYW1lLCB2YWxpZGF0ZVBhY2thZ2UgYXMgdXRpbFZhbGlkYXRlUGFja2FnZSB9IGZyb20gJy4uL2xpYi91dGlscyc7XG5cbmNvbnN0IGRlYnVnID0gYnVpbGREZWJ1ZygndmVyZGFjY2lvJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaChyZWdleHA6IFJlZ0V4cCk6IGFueSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAocmVnZXhwLmV4ZWModmFsdWUpKSB7XG4gICAgICBuZXh0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHQoJ3JvdXRlJyk7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VydmVGYXZpY29uKGNvbmZpZzogQ29uZmlnKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpIHtcbiAgICB0cnkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgbG9nb0NvbmY6IHN0cmluZyA9IGNvbmZpZz8ud2ViPy5mYXZpY29uIGFzIHN0cmluZztcbiAgICAgIGlmIChsb2dvQ29uZiA9PT0gJycpIHtcbiAgICAgICAgZGVidWcoJ2Zhdmljb24gZGlzYWJsZWQnKTtcbiAgICAgICAgcmVzLnN0YXR1cyg0MDQpO1xuICAgICAgfSBlbHNlIGlmICghXy5pc0VtcHR5KGxvZ29Db25mKSkge1xuICAgICAgICBkZWJ1ZygnY3VzdG9tIGZhdmljb24nKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHZhbGlkYXRvci5pc1VSTChsb2dvQ29uZiwge1xuICAgICAgICAgICAgcmVxdWlyZV9ob3N0OiB0cnVlLFxuICAgICAgICAgICAgcmVxdWlyZV92YWxpZF9wcm90b2NvbDogdHJ1ZSxcbiAgICAgICAgICB9KVxuICAgICAgICApIHtcbiAgICAgICAgICBkZWJ1ZygncmVkaXJlY3QgdG8gJW8nLCBsb2dvQ29uZik7XG4gICAgICAgICAgcmVzLnJlZGlyZWN0KGxvZ29Db25mKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZmF2aWNvblBhdGggPSBwYXRoLm5vcm1hbGl6ZShsb2dvQ29uZik7XG4gICAgICAgICAgZGVidWcoJ3NlcnZpbmcgZmF2aWNvbiBmcm9tICVvJywgZmF2aWNvblBhdGgpO1xuICAgICAgICAgIGZzLmFjY2VzcyhmYXZpY29uUGF0aCwgZnMuY29uc3RhbnRzLlJfT0ssIChlcnIpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgZGVidWcoJ25vIHJlYWQgcGVybWlzc2lvbnMgdG8gcmVhZDogJW8sIHJlYXNvbjonLCBsb2dvQ29uZiwgZXJyPy5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuTk9UX0ZPVU5EKS5lbmQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ2NvbnRlbnQtdHlwZScsICdpbWFnZS94LWljb24nKTtcbiAgICAgICAgICAgICAgZnMuY3JlYXRlUmVhZFN0cmVhbShmYXZpY29uUGF0aCkucGlwZShyZXMpO1xuICAgICAgICAgICAgICBkZWJ1ZygncmVuZGVyZWQgY3VzdG9tIGljbycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXMuc2V0SGVhZGVyKCdjb250ZW50LXR5cGUnLCAnaW1hZ2UveC1pY29uJyk7XG4gICAgICAgIGZzLmNyZWF0ZVJlYWRTdHJlYW0ocGF0aC5wb3NpeC5qb2luKF9fZGlybmFtZSwgJy4vd2ViL2h0bWwvZmF2aWNvbi5pY28nKSkucGlwZShyZXMpO1xuICAgICAgICBkZWJ1ZygncmVuZGVyZWQgaWNvJyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBkZWJ1ZygnZXJyb3IgdHJpZ2dlcmVkLCBmYXZpY29uIG5vdCBmb3VuZCcpO1xuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5OT1RfRk9VTkQpLmVuZCgpO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFNlY3VyaXR5V2ViSGVhZGVycyhyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAvLyBkaXNhYmxlIGxvYWRpbmcgaW4gZnJhbWVzIChjbGlja2phY2tpbmcsIGV0Yy4pXG4gIHJlcy5oZWFkZXIoSEVBREVSUy5GUkFNRVNfT1BUSU9OUywgJ2RlbnknKTtcbiAgLy8gYXZvaWQgc3RhYmxpc2ggY29ubmVjdGlvbnMgb3V0c2lkZSBvZiBkb21haW5cbiAgcmVzLmhlYWRlcihIRUFERVJTLkNTUCwgXCJjb25uZWN0LXNyYyAnc2VsZidcIik7XG4gIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE4MzM3NjMwL3doYXQtaXMteC1jb250ZW50LXR5cGUtb3B0aW9ucy1ub3NuaWZmXG4gIHJlcy5oZWFkZXIoSEVBREVSUy5DVE8sICdub3NuaWZmJyk7XG4gIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzkwOTA1Nzcvd2hhdC1pcy10aGUtaHR0cC1oZWFkZXIteC14c3MtcHJvdGVjdGlvblxuICByZXMuaGVhZGVyKEhFQURFUlMuWFNTLCAnMTsgbW9kZT1ibG9jaycpO1xuICBuZXh0KCk7XG59XG5cbi8vIGZsb3c6IGV4cHJlc3MgZG9lcyBub3QgbWF0Y2ggcHJvcGVybHlcbi8vIGZsb3cgaW5mbyBodHRwczovL2dpdGh1Yi5jb20vZmxvd3R5cGUvZmxvdy10eXBlZC9pc3N1ZXM/dXRmOD0lRTIlOUMlOTMmcT1pcyUzQWlzc3VlK2lzJTNBb3BlbitleHByZXNzXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVOYW1lKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyLCB2YWx1ZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKHZhbHVlID09PSAnLScpIHtcbiAgICAvLyBzcGVjaWFsIGNhc2UgaW4gY291Y2hkYiB1c3VhbGx5XG4gICAgbmV4dCgncm91dGUnKTtcbiAgfSBlbHNlIGlmICh1dGlsVmFsaWRhdGVOYW1lKHZhbHVlKSkge1xuICAgIG5leHQoKTtcbiAgfSBlbHNlIHtcbiAgICBuZXh0KEVycm9yQ29kZS5nZXRGb3JiaWRkZW4oJ2ludmFsaWQgJyArIG5hbWUpKTtcbiAgfVxufVxuXG4vLyBmbG93OiBleHByZXNzIGRvZXMgbm90IG1hdGNoIHByb3Blcmx5XG4vLyBmbG93IGluZm8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb3d0eXBlL2Zsb3ctdHlwZWQvaXNzdWVzP3V0Zjg9JUUyJTlDJTkzJnE9aXMlM0Fpc3N1ZStpcyUzQW9wZW4rZXhwcmVzc1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUGFja2FnZShyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlciwgdmFsdWU6IHN0cmluZywgbmFtZTogc3RyaW5nKTogdm9pZCB7XG4gIGlmICh2YWx1ZSA9PT0gJy0nKSB7XG4gICAgLy8gc3BlY2lhbCBjYXNlIGluIGNvdWNoZGIgdXN1YWxseVxuICAgIG5leHQoJ3JvdXRlJyk7XG4gIH0gZWxzZSBpZiAodXRpbFZhbGlkYXRlUGFja2FnZSh2YWx1ZSkpIHtcbiAgICBuZXh0KCk7XG4gIH0gZWxzZSB7XG4gICAgbmV4dChFcnJvckNvZGUuZ2V0Rm9yYmlkZGVuKCdpbnZhbGlkICcgKyBuYW1lKSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lZGlhKGV4cGVjdDogc3RyaW5nIHwgbnVsbCk6IGFueSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBpZiAocmVxLmhlYWRlcnNbSEVBREVSX1RZUEUuQ09OVEVOVF9UWVBFXSAhPT0gZXhwZWN0KSB7XG4gICAgICBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLlVOU1VQUE9SVEVEX01FRElBLCAnd3JvbmcgY29udGVudC10eXBlLCBleHBlY3Q6ICcgKyBleHBlY3QgKyAnLCBnb3Q6ICcgKyByZXEuZ2V0KEhFQURFUl9UWVBFLkNPTlRFTlRfVFlQRSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dCgpO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVNjb3BlUGFja2FnZShyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICBpZiAocmVxLnVybC5pbmRleE9mKCdAJykgIT09IC0xKSB7XG4gICAgLy8gZS5nLjogL0BvcmcvcGtnLzEuMi4zIC0+IC9Ab3JnJTJGcGtnLzEuMi4zLCAvQG9yZyUyRnBrZy8xLjIuMyAtPiAvQG9yZyUyRnBrZy8xLjIuM1xuICAgIHJlcS51cmwgPSByZXEudXJsLnJlcGxhY2UoL14oXFwvQFteXFwvJV0rKVxcLyg/ISQpLywgJyQxJTJGJyk7XG4gIH1cbiAgbmV4dCgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwZWN0SnNvbihyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICBpZiAoIWlzT2JqZWN0KHJlcS5ib2R5KSkge1xuICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRCYWRSZXF1ZXN0KFwiY2FuJ3QgcGFyc2UgaW5jb21pbmcganNvblwiKSk7XG4gIH1cbiAgbmV4dCgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYW50aUxvb3AoY29uZmlnOiBDb25maWcpOiBGdW5jdGlvbiB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBpZiAocmVxPy5oZWFkZXJzPy52aWEgIT0gbnVsbCkge1xuICAgICAgY29uc3QgYXJyID0gcmVxLmhlYWRlcnMudmlhLnNwbGl0KCcsJyk7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG0gPSBhcnJbaV0ubWF0Y2goL1xccyooXFxTKylcXHMrKFxcUyspLyk7XG4gICAgICAgIGlmIChtICYmIG1bMl0gPT09IGNvbmZpZy5zZXJ2ZXJfaWQpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0Q29kZShIVFRQX1NUQVRVUy5MT09QX0RFVEVDVEVELCAnbG9vcCBkZXRlY3RlZCcpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBuZXh0KCk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGxvdyhhdXRoOiBJQXV0aCk6IEZ1bmN0aW9uIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhY3Rpb246IHN0cmluZyk6IEZ1bmN0aW9uIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICByZXEucGF1c2UoKTtcbiAgICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5zY29wZSA/IGBAJHtyZXEucGFyYW1zLnNjb3BlfS8ke3JlcS5wYXJhbXMucGFja2FnZX1gIDogcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgICAgbGV0IHBhY2thZ2VWZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgICBpZiAocmVxLnBhcmFtcy5maWxlbmFtZSkge1xuICAgICAgICBwYWNrYWdlVmVyc2lvbiA9IGdldFZlcnNpb25Gcm9tVGFyYmFsbChyZXEucGFyYW1zLmZpbGVuYW1lKSB8fCB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiByZXEuYm9keS52ZXJzaW9ucyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcGFja2FnZVZlcnNpb24gPSBPYmplY3Qua2V5cyhyZXEuYm9keS52ZXJzaW9ucylbMF07XG4gICAgICB9XG4gICAgICBjb25zdCByZW1vdGU6IFJlbW90ZVVzZXIgPSByZXEucmVtb3RlX3VzZXI7XG4gICAgICBkZWJ1ZygnW21pZGRsZXdhcmUvYWxsb3ddWyVvXSBhbGxvdyBmb3IgJW8nLCBhY3Rpb24sIHJlbW90ZT8ubmFtZSk7XG4gICAgICBhdXRoWydhbGxvd18nICsgYWN0aW9uXSh7IHBhY2thZ2VOYW1lLCBwYWNrYWdlVmVyc2lvbiB9LCByZW1vdGUsIGZ1bmN0aW9uIChlcnJvciwgYWxsb3dlZCk6IHZvaWQge1xuICAgICAgICByZXEucmVzdW1lKCk7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIG5leHQoZXJyb3IpO1xuICAgICAgICB9IGVsc2UgaWYgKGFsbG93ZWQpIHtcbiAgICAgICAgICBuZXh0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gbGFzdCBwbHVnaW4gKHRoYXQncyBvdXIgYnVpbHQtaW4gb25lKSByZXR1cm5zIGVpdGhlclxuICAgICAgICAgIC8vIGNiKGVycikgb3IgY2IobnVsbCwgdHJ1ZSksIHNvIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlblxuICAgICAgICAgIHRocm93IEVycm9yQ29kZS5nZXRJbnRlcm5hbEVycm9yKEFQSV9FUlJPUi5QTFVHSU5fRVJST1IpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pZGRsZXdhcmVFcnJvciB7XG4gIGVycm9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEZpbmFsQm9keSA9IFBhY2thZ2UgfCBNaWRkbGV3YXJlRXJyb3IgfCBzdHJpbmc7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5hbChib2R5OiBGaW5hbEJvZHksIHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gIGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gSFRUUF9TVEFUVVMuVU5BVVRIT1JJWkVEICYmICFyZXMuZ2V0SGVhZGVyKEhFQURFUlMuV1dXX0FVVEgpKSB7XG4gICAgLy8gdGhleSBzYXkgaXQncyByZXF1aXJlZCBmb3IgNDAxLCBzby4uLlxuICAgIHJlcy5oZWFkZXIoSEVBREVSUy5XV1dfQVVUSCwgYCR7VE9LRU5fQkFTSUN9LCAke1RPS0VOX0JFQVJFUn1gKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKF8uaXNTdHJpbmcoYm9keSkgfHwgXy5pc09iamVjdChib2R5KSkge1xuICAgICAgaWYgKCFyZXMuZ2V0SGVhZGVyKEhFQURFUlMuQ09OVEVOVF9UWVBFKSkge1xuICAgICAgICByZXMuaGVhZGVyKEhFQURFUlMuQ09OVEVOVF9UWVBFLCBIRUFERVJTLkpTT04pO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGJvZHkgPT09ICdvYmplY3QnICYmIF8uaXNOaWwoYm9keSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgKGJvZHkgYXMgTWlkZGxld2FyZUVycm9yKS5lcnJvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXMubG9jYWxzLl92ZXJkYWNjaW9fZXJyb3IgPSAoYm9keSBhcyBNaWRkbGV3YXJlRXJyb3IpLmVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGJvZHkgPSBKU09OLnN0cmluZ2lmeShib2R5KTtcbiAgICAgIH1cblxuICAgICAgLy8gZG9uJ3Qgc2VuZCBldGFncyB3aXRoIGVycm9yc1xuICAgICAgaWYgKCFyZXMuc3RhdHVzQ29kZSB8fCAocmVzLnN0YXR1c0NvZGUgPj0gSFRUUF9TVEFUVVMuT0sgJiYgcmVzLnN0YXR1c0NvZGUgPCBIVFRQX1NUQVRVUy5NVUxUSVBMRV9DSE9JQ0VTKSkge1xuICAgICAgICByZXMuaGVhZGVyKEhFQURFUlMuRVRBRywgJ1wiJyArIHN0cmluZ1RvTUQ1KGJvZHkgYXMgc3RyaW5nKSArICdcIicpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBzZW5kKG51bGwpLCBzZW5kKDIwNCksIGV0Yy5cbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIGlmIHZlcmRhY2NpbyBzZW5kcyBoZWFkZXJzIGZpcnN0LCBhbmQgdGhlbiBjYWxscyByZXMuc2VuZCgpXG4gICAgLy8gYXMgYW4gZXJyb3IgaGFuZGxlciwgd2UgY2FuJ3QgcmVwb3J0IGVycm9yIHByb3Blcmx5LFxuICAgIC8vIGFuZCBzaG91bGQganVzdCBjbG9zZSBzb2NrZXRcbiAgICBpZiAoZXJyLm1lc3NhZ2UubWF0Y2goL3NldCBoZWFkZXJzIGFmdGVyIHRoZXkgYXJlIHNlbnQvKSkge1xuICAgICAgaWYgKF8uaXNOaWwocmVzLnNvY2tldCkgPT09IGZhbHNlKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmVzLnNvY2tldC5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRocm93IGVycjtcbiAgfVxuXG4gIHJlcy5zZW5kKGJvZHkpO1xufVxuXG5leHBvcnQgY29uc3QgTE9HX1NUQVRVU19NRVNTQUdFID0gXCJAe3N0YXR1c30sIHVzZXI6IEB7dXNlcn0oQHtyZW1vdGVJUH0pLCByZXE6ICdAe3JlcXVlc3QubWV0aG9kfSBAe3JlcXVlc3QudXJsfSdcIjtcbmV4cG9ydCBjb25zdCBMT0dfVkVSREFDQ0lPX0VSUk9SID0gYCR7TE9HX1NUQVRVU19NRVNTQUdFfSwgZXJyb3I6IEB7IWVycm9yfWA7XG5leHBvcnQgY29uc3QgTE9HX1ZFUkRBQ0NJT19CWVRFUyA9IGAke0xPR19TVEFUVVNfTUVTU0FHRX0sIGJ5dGVzOiBAe2J5dGVzLmlufS9Ae2J5dGVzLm91dH1gO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9nKGNvbmZpZzogQ29uZmlnKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBfYXV0aCA9IHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb247XG4gICAgaWYgKF8uaXNOaWwoX2F1dGgpID09PSBmYWxzZSkge1xuICAgICAgcmVxLmhlYWRlcnMuYXV0aG9yaXphdGlvbiA9ICc8Q2xhc3NpZmllZD4nO1xuICAgIH1cblxuICAgIGNvbnN0IF9jb29raWUgPSByZXEuZ2V0KCdjb29raWUnKTtcbiAgICBpZiAoXy5pc05pbChfY29va2llKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJlcS5oZWFkZXJzLmNvb2tpZSA9ICc8Q2xhc3NpZmllZD4nO1xuICAgIH1cblxuICAgIHJlcS51cmwgPSByZXEub3JpZ2luYWxVcmw7XG4gICAgLy8gYXZvaWQgbG9nIG5vaXNlIGRhdGEgZnJvbSBzdGF0aWMgY29udGVudFxuICAgIGlmIChyZXEub3JpZ2luYWxVcmwubWF0Y2goL3N0YXRpYy8pID09PSBudWxsKSB7XG4gICAgICBsb2dnZXIuaHR0cCh7IHJlcTogcmVxLCBpcDogcmVxLmlwIH0sIFwiQHtpcH0gcmVxdWVzdGVkICdAe3JlcS5tZXRob2R9IEB7cmVxLnVybH0nXCIpO1xuICAgIH1cbiAgICByZXEub3JpZ2luYWxVcmwgPSByZXEudXJsO1xuXG4gICAgaWYgKF8uaXNOaWwoX2F1dGgpID09PSBmYWxzZSkge1xuICAgICAgcmVxLmhlYWRlcnMuYXV0aG9yaXphdGlvbiA9IF9hdXRoO1xuICAgIH1cblxuICAgIGlmIChfLmlzTmlsKF9jb29raWUpID09PSBmYWxzZSkge1xuICAgICAgcmVxLmhlYWRlcnMuY29va2llID0gX2Nvb2tpZTtcbiAgICB9XG5cbiAgICBsZXQgYnl0ZXNpbiA9IDA7XG4gICAgaWYgKGNvbmZpZz8uZXhwZXJpbWVudHM/LmJ5dGVzaW5fb2ZmICE9PSB0cnVlKSB7XG4gICAgICByZXEub24oJ2RhdGEnLCBmdW5jdGlvbiAoY2h1bmspOiB2b2lkIHtcbiAgICAgICAgYnl0ZXNpbiArPSBjaHVuay5sZW5ndGg7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBsZXQgYnl0ZXNvdXQgPSAwO1xuICAgIGNvbnN0IF93cml0ZSA9IHJlcy53cml0ZTtcbiAgICAvLyBGSVhNRTogcmVzLndyaXRlIHNob3VsZCByZXR1cm4gYm9vbGVhblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXMud3JpdGUgPSBmdW5jdGlvbiAoYnVmKTogYm9vbGVhbiB7XG4gICAgICBieXRlc291dCArPSBidWYubGVuZ3RoO1xuICAgICAgLyogZXNsaW50IHByZWZlci1yZXN0LXBhcmFtczogXCJvZmZcIiAqL1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgX3dyaXRlLmFwcGx5KHJlcywgYXJndW1lbnRzKTtcbiAgICB9O1xuXG4gICAgbGV0IGxvZ0hhc0JlZW5DYWxsZWQgPSBmYWxzZTtcbiAgICBjb25zdCBsb2cgPSBmdW5jdGlvbiAoKTogdm9pZCB7XG4gICAgICBpZiAobG9nSGFzQmVlbkNhbGxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsb2dIYXNCZWVuQ2FsbGVkID0gdHJ1ZTtcblxuICAgICAgY29uc3QgZm9yd2FyZGVkRm9yID0gcmVxLmdldCgneC1mb3J3YXJkZWQtZm9yJyk7XG4gICAgICBjb25zdCByZW1vdGVBZGRyZXNzID0gcmVxLmNvbm5lY3Rpb24ucmVtb3RlQWRkcmVzcztcbiAgICAgIGNvbnN0IHJlbW90ZUlQID0gZm9yd2FyZGVkRm9yID8gYCR7Zm9yd2FyZGVkRm9yfSB2aWEgJHtyZW1vdGVBZGRyZXNzfWAgOiByZW1vdGVBZGRyZXNzO1xuICAgICAgbGV0IG1lc3NhZ2U7XG4gICAgICBpZiAocmVzLmxvY2Fscy5fdmVyZGFjY2lvX2Vycm9yKSB7XG4gICAgICAgIG1lc3NhZ2UgPSBMT0dfVkVSREFDQ0lPX0VSUk9SO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVzc2FnZSA9IExPR19WRVJEQUNDSU9fQllURVM7XG4gICAgICB9XG5cbiAgICAgIHJlcS51cmwgPSByZXEub3JpZ2luYWxVcmw7XG4gICAgICAvLyBhdm9pZCBsb2cgbm9pc2UgZGF0YSBmcm9tIHN0YXRpYyBjb250ZW50XG4gICAgICBpZiAocmVxLnVybC5tYXRjaCgvc3RhdGljLykgPT09IG51bGwpIHtcbiAgICAgICAgbG9nZ2VyLmh0dHAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgcmVxdWVzdDoge1xuICAgICAgICAgICAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgICAgICAgICAgIHVybDogcmVxLnVybCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1c2VyOiAocmVxLnJlbW90ZV91c2VyICYmIHJlcS5yZW1vdGVfdXNlci5uYW1lKSB8fCBudWxsLFxuICAgICAgICAgICAgcmVtb3RlSVAsXG4gICAgICAgICAgICBzdGF0dXM6IHJlcy5zdGF0dXNDb2RlLFxuICAgICAgICAgICAgZXJyb3I6IHJlcy5sb2NhbHMuX3ZlcmRhY2Npb19lcnJvcixcbiAgICAgICAgICAgIGJ5dGVzOiB7XG4gICAgICAgICAgICAgIGluOiBieXRlc2luLFxuICAgICAgICAgICAgICBvdXQ6IGJ5dGVzb3V0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1lc3NhZ2VcbiAgICAgICAgKTtcbiAgICAgICAgcmVxLm9yaWdpbmFsVXJsID0gcmVxLnVybDtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmVxLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpOiB2b2lkIHtcbiAgICAgIGxvZygpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgX2VuZCA9IHJlcy5lbmQ7XG4gICAgcmVzLmVuZCA9IGZ1bmN0aW9uIChidWYpOiB2b2lkIHtcbiAgICAgIGlmIChidWYpIHtcbiAgICAgICAgYnl0ZXNvdXQgKz0gYnVmLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIC8qIGVzbGludCBwcmVmZXItcmVzdC1wYXJhbXM6IFwib2ZmXCIgKi9cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIF9lbmQuYXBwbHkocmVzLCBhcmd1bWVudHMpO1xuICAgICAgbG9nKCk7XG4gICAgfTtcbiAgICBuZXh0KCk7XG4gIH07XG59XG5cbi8vIE1pZGRsZXdhcmVcbmV4cG9ydCBmdW5jdGlvbiBlcnJvclJlcG9ydGluZ01pZGRsZXdhcmUocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgcmVzLmxvY2Fscy5yZXBvcnRfZXJyb3IgPVxuICAgIHJlcy5sb2NhbHMucmVwb3J0X2Vycm9yIHx8XG4gICAgZnVuY3Rpb24gKGVycjogVmVyZGFjY2lvRXJyb3IpOiB2b2lkIHtcbiAgICAgIGlmIChlcnIuc3RhdHVzICYmIGVyci5zdGF0dXMgPj0gSFRUUF9TVEFUVVMuQkFEX1JFUVVFU1QgJiYgZXJyLnN0YXR1cyA8IDYwMCkge1xuICAgICAgICBpZiAoIXJlcy5oZWFkZXJzU2VudCkge1xuICAgICAgICAgIHJlcy5zdGF0dXMoZXJyLnN0YXR1cyk7XG4gICAgICAgICAgbmV4dCh7IGVycm9yOiBlcnIubWVzc2FnZSB8fCBBUElfRVJST1IuVU5LTk9XTl9FUlJPUiB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKHsgZXJyOiBlcnIgfSwgJ3VuZXhwZWN0ZWQgZXJyb3I6IEB7IWVyci5tZXNzYWdlfVxcbkB7ZXJyLnN0YWNrfScpO1xuICAgICAgICBpZiAoIXJlcy5zdGF0dXMgfHwgIXJlcy5zZW5kKSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKCd0aGlzIGlzIGFuIGVycm9yIGluIGV4cHJlc3MuanMsIHBsZWFzZSByZXBvcnQgdGhpcycpO1xuICAgICAgICAgIHJlcy5kZXN0cm95KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXJlcy5oZWFkZXJzU2VudCkge1xuICAgICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuSU5URVJOQUxfRVJST1IpO1xuICAgICAgICAgIG5leHQoeyBlcnJvcjogQVBJX0VSUk9SLklOVEVSTkFMX1NFUlZFUl9FUlJPUiB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBzb2NrZXQgc2hvdWxkIGJlIGFscmVhZHkgY2xvc2VkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gIG5leHQoKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFNQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUVBLE1BQU1BLEtBQUssR0FBRyxJQUFBQyxjQUFBLEVBQVcsV0FBWCxDQUFkOztBQUVPLFNBQVNDLEtBQVQsQ0FBZUMsTUFBZixFQUFvQztFQUN6QyxPQUFPLFVBQVVDLEdBQVYsRUFBK0JDLEdBQS9CLEVBQXFEQyxJQUFyRCxFQUE2RUMsS0FBN0UsRUFBa0c7SUFDdkcsSUFBSUosTUFBTSxDQUFDSyxJQUFQLENBQVlELEtBQVosQ0FBSixFQUF3QjtNQUN0QkQsSUFBSTtJQUNMLENBRkQsTUFFTztNQUNMQSxJQUFJLENBQUMsT0FBRCxDQUFKO0lBQ0Q7RUFDRixDQU5EO0FBT0Q7O0FBRU0sU0FBU0csWUFBVCxDQUFzQkMsTUFBdEIsRUFBc0M7RUFDM0MsT0FBTyxVQUFVTixHQUFWLEVBQStCQyxHQUEvQixFQUFxREMsSUFBckQsRUFBNkU7SUFDbEYsSUFBSTtNQUFBOztNQUNGO01BQ0EsTUFBTUssUUFBZ0IsR0FBR0QsTUFBSCxhQUFHQSxNQUFILHNDQUFHQSxNQUFNLENBQUVFLEdBQVgsZ0RBQUcsWUFBYUMsT0FBdEM7O01BQ0EsSUFBSUYsUUFBUSxLQUFLLEVBQWpCLEVBQXFCO1FBQ25CWCxLQUFLLENBQUMsa0JBQUQsQ0FBTDtRQUNBSyxHQUFHLENBQUNTLE1BQUosQ0FBVyxHQUFYO01BQ0QsQ0FIRCxNQUdPLElBQUks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
|