@blinkk/root-password-protect 3.0.2 → 3.0.4
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/bin/root-password-protect.js +1 -1
- package/dist/cli/cli.d.ts +6 -0
- package/dist/cli/generate-hash.d.ts +1 -0
- package/dist/cli.js +1 -1
- package/dist/components/PasswordPage/PasswordPage.css.d.ts +1 -0
- package/dist/components/PasswordPage/PasswordPage.d.ts +5 -0
- package/dist/core/core.d.ts +1 -0
- package/dist/core/csp.d.ts +3 -0
- package/dist/core/password.d.ts +6 -0
- package/dist/core.js +1 -1
- package/dist/{plugin.d.ts → plugin/plugin.d.ts} +6 -9
- package/dist/plugin.js +2 -2
- package/package.json +11 -10
- package/dist/core.d.ts +0 -8
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function generateHash(password: string): Promise<void>;
|
package/dist/cli.js
CHANGED
|
@@ -71,4 +71,4 @@ var CliRunner = class {
|
|
|
71
71
|
export {
|
|
72
72
|
CliRunner
|
|
73
73
|
};
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2NsaS9jbGkudHMiLCAiLi4vc3JjL2NvcmUvcGFzc3dvcmQudHMiLCAiLi4vc3JjL2NsaS9nZW5lcmF0ZS1oYXNoLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge0NvbW1hbmR9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQge2JnR3JlZW4sIGJsYWNrfSBmcm9tICdrbGV1ci9jb2xvcnMnO1xuaW1wb3J0IHtnZW5lcmF0ZUhhc2h9IGZyb20gJy4vZ2VuZXJhdGUtaGFzaC5qcyc7XG5cbmV4cG9ydCBjbGFzcyBDbGlSdW5uZXIge1xuICBwcml2YXRlIG5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmVyc2lvbiA9IHZlcnNpb247XG4gIH1cblxuICBhc3luYyBydW4oYXJndjogc3RyaW5nW10pIHtcbiAgICBjb25zdCBwcm9ncmFtID0gbmV3IENvbW1hbmQodGhpcy5uYW1lKTtcbiAgICBwcm9ncmFtLnZlcnNpb24odGhpcy52ZXJzaW9uKTtcbiAgICBwcm9ncmFtLm9wdGlvbignLXEsIC0tcXVpZXQnLCAncXVpZXQnKTtcbiAgICBwcm9ncmFtLmhvb2soJ3ByZUFjdGlvbicsIChjbWQpID0+IHtcbiAgICAgIGlmICghY21kLm9wdHMoKS5xdWlldCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBgXHVEODNFXHVERDU1ICR7YmdHcmVlbihibGFjayhgICR7dGhpcy5uYW1lfSBgKSl9IHYke3RoaXMudmVyc2lvbn1cXG5gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcHJvZ3JhbVxuICAgICAgLmNvbW1hbmQoJ2dlbmVyYXRlLWhhc2ggPHBhc3N3b3JkPicpXG4gICAgICAuZGVzY3JpcHRpb24oJ2dlbmVyYXRlcyBhIGhhc2gvc2FsdCBwYWlyIGZyb20gYSBwbGFpbi10ZXh0IHBhc3N3b3JkJylcbiAgICAgIC5hY3Rpb24oZ2VuZXJhdGVIYXNoKTtcbiAgICBhd2FpdCBwcm9ncmFtLnBhcnNlQXN5bmMoYXJndik7XG4gIH1cbn1cbiIsICJpbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5cbmNvbnN0IFBBU1NXT1JEX0lURVJBVElPTlMgPSAxMDAwMDtcbmNvbnN0IFBBU1NXT1JEX0hBU0hfTEVOR1RIID0gNjQ7XG5jb25zdCBQQVNTV09SRF9ESUdFU1QgPSAnc2hhMjU2JztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhc2hQYXNzd29yZChcbiAgcGFzc3dvcmQ6IHN0cmluZ1xuKTogUHJvbWlzZTx7aGFzaDogc3RyaW5nOyBzYWx0OiBzdHJpbmd9PiB7XG4gIGNvbnN0IHNhbHQgPSBjcnlwdG8ucmFuZG9tQnl0ZXMoMTYpLnRvU3RyaW5nKCdoZXgnKTtcbiAgY29uc3QgaGFzaCA9IGF3YWl0IGdlbmVyYXRlSGFzaChwYXNzd29yZCwgc2FsdCk7XG4gIHJldHVybiB7aGFzaCwgc2FsdH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJpZnlQYXNzd29yZChcbiAgcGFzc3dvcmQ6IHN0cmluZyxcbiAgaGFzaDogc3RyaW5nLFxuICBzYWx0OiBzdHJpbmdcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBnZW5lcmF0ZWRIYXNoID0gYXdhaXQgZ2VuZXJhdGVIYXNoKHBhc3N3b3JkLCBzYWx0KTtcbiAgcmV0dXJuIGhhc2ggPT09IGdlbmVyYXRlZEhhc2g7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUhhc2gocGFzc3dvcmQ6IHN0cmluZywgc2FsdDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjcnlwdG8ucGJrZGYyKFxuICAgICAgcGFzc3dvcmQsXG4gICAgICBzYWx0LFxuICAgICAgUEFTU1dPUkRfSVRFUkFUSU9OUyxcbiAgICAgIFBBU1NXT1JEX0hBU0hfTEVOR1RILFxuICAgICAgUEFTU1dPUkRfRElHRVNULFxuICAgICAgKGVyciwgZGVyaXZlZEtleSkgPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcigncGFzc3dvcmQgaGFzaGluZyBmYWlsZWQnKTtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGhhc2ggPSBkZXJpdmVkS2V5LnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgICAgcmVzb2x2ZShoYXNoKTtcbiAgICAgIH1cbiAgICApO1xuICB9KTtcbn1cbiIsICJpbXBvcnQge2hhc2hQYXNzd29yZH0gZnJvbSAnLi4vY29yZS9wYXNzd29yZC5qcyc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUhhc2gocGFzc3dvcmQ6IHN0cmluZykge1xuICBjb25zdCB7aGFzaCwgc2FsdH0gPSBhd2FpdCBoYXNoUGFzc3dvcmQocGFzc3dvcmQpO1xuICBjb25zb2xlLmxvZygnLy8gR2VuZXJhdGVkIGJ5OiBgcm9vdC1wYXNzd29yZC1wcm90ZWN0IGdlbmVyYXRlLWhhc2ggXCIuLi5cImAuJyk7XG4gIGNvbnNvbGUubG9nKCdwYXNzd29yZDogeycpO1xuICBjb25zb2xlLmxvZyhgICBoYXNoOiAnJHtoYXNofScsYCk7XG4gIGNvbnNvbGUubG9nKGAgIHNhbHQ6ICcke3NhbHR9JyxgKTtcbiAgY29uc29sZS5sb2coJ30nKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBQSxTQUFRLGVBQWM7QUFDdEIsU0FBUSxTQUFTLGFBQVk7OztBQ0Q3QixPQUFPLFlBQVk7QUFFbkIsSUFBTSxzQkFBc0I7QUFDNUIsSUFBTSx1QkFBdUI7QUFDN0IsSUFBTSxrQkFBa0I7QUFFeEIsZUFBc0IsYUFDcEIsVUFDdUM7QUFDdkMsUUFBTSxPQUFPLE9BQU8sWUFBWSxFQUFFLEVBQUUsU0FBUyxLQUFLO0FBQ2xELFFBQU0sT0FBTyxNQUFNLGFBQWEsVUFBVSxJQUFJO0FBQzlDLFNBQU8sRUFBQyxNQUFNLEtBQUk7QUFDcEI7QUFXTyxTQUFTLGFBQWEsVUFBa0IsTUFBK0I7QUFDNUUsU0FBTyxJQUFJLFFBQVEsQ0FBQyxTQUFTLFdBQVc7QUFDdEMsV0FBTztBQUFBLE1BQ0w7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQSxDQUFDLEtBQUssZUFBZTtBQUNuQixZQUFJLEtBQUs7QUFDUCxrQkFBUSxNQUFNLHlCQUF5QjtBQUN2QyxrQkFBUSxNQUFNLEdBQUc7QUFDakIsaUJBQU8sR0FBRztBQUNWO0FBQUEsUUFDRjtBQUNBLGNBQU0sT0FBTyxXQUFXLFNBQVMsS0FBSztBQUN0QyxnQkFBUSxJQUFJO0FBQUEsTUFDZDtBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUM7QUFDSDs7O0FDekNBLGVBQXNCQSxjQUFhLFVBQWtCO0FBQ25ELFFBQU0sRUFBQyxNQUFNLEtBQUksSUFBSSxNQUFNLGFBQWEsUUFBUTtBQUNoRCxVQUFRLElBQUksK0RBQStEO0FBQzNFLFVBQVEsSUFBSSxhQUFhO0FBQ3pCLFVBQVEsSUFBSSxZQUFZLElBQUksSUFBSTtBQUNoQyxVQUFRLElBQUksWUFBWSxJQUFJLElBQUk7QUFDaEMsVUFBUSxJQUFJLEdBQUc7QUFDakI7OztBRkxPLElBQU0sWUFBTixNQUFnQjtBQUFBLEVBQ2I7QUFBQSxFQUNBO0FBQUEsRUFFUixZQUFZLE1BQWMsU0FBaUI7QUFDekMsU0FBSyxPQUFPO0FBQ1osU0FBSyxVQUFVO0FBQUEsRUFDakI7QUFBQSxFQUVBLE1BQU0sSUFBSSxNQUFnQjtBQUN4QixVQUFNLFVBQVUsSUFBSSxRQUFRLEtBQUssSUFBSTtBQUNyQyxZQUFRLFFBQVEsS0FBSyxPQUFPO0FBQzVCLFlBQVEsT0FBTyxlQUFlLE9BQU87QUFDckMsWUFBUSxLQUFLLGFBQWEsQ0FBQyxRQUFRO0FBQ2pDLFVBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxPQUFPO0FBQ3JCLGdCQUFRO0FBQUEsVUFDTixhQUFNLFFBQVEsTUFBTSxJQUFJLEtBQUssSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLEtBQUssT0FBTztBQUFBO0FBQUEsUUFDekQ7QUFBQSxNQUNGO0FBQUEsSUFDRixDQUFDO0FBQ0QsWUFDRyxRQUFRLDBCQUEwQixFQUNsQyxZQUFZLHVEQUF1RCxFQUNuRSxPQUFPQyxhQUFZO0FBQ3RCLFVBQU0sUUFBUSxXQUFXLElBQUk7QUFBQSxFQUMvQjtBQUNGOyIsCiAgIm5hbWVzIjogWyJnZW5lcmF0ZUhhc2giLCAiZ2VuZXJhdGVIYXNoIl0KfQo=
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2NsaS9jbGkudHMiLCAiLi4vc3JjL2NvcmUvcGFzc3dvcmQudHMiLCAiLi4vc3JjL2NsaS9nZW5lcmF0ZS1oYXNoLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge0NvbW1hbmR9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQge2JnR3JlZW4sIGJsYWNrfSBmcm9tICdrbGV1ci9jb2xvcnMnO1xuaW1wb3J0IHtnZW5lcmF0ZUhhc2h9IGZyb20gJy4vZ2VuZXJhdGUtaGFzaC5qcyc7XG5cbmV4cG9ydCBjbGFzcyBDbGlSdW5uZXIge1xuICBwcml2YXRlIG5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMudmVyc2lvbiA9IHZlcnNpb247XG4gIH1cblxuICBhc3luYyBydW4oYXJndjogc3RyaW5nW10pIHtcbiAgICBjb25zdCBwcm9ncmFtID0gbmV3IENvbW1hbmQodGhpcy5uYW1lKTtcbiAgICBwcm9ncmFtLnZlcnNpb24odGhpcy52ZXJzaW9uKTtcbiAgICBwcm9ncmFtLm9wdGlvbignLXEsIC0tcXVpZXQnLCAncXVpZXQnKTtcbiAgICBwcm9ncmFtLmhvb2soJ3ByZUFjdGlvbicsIChjbWQpID0+IHtcbiAgICAgIGlmICghY21kLm9wdHMoKS5xdWlldCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBgXHVEODNFXHVERDU1ICR7YmdHcmVlbihibGFjayhgICR7dGhpcy5uYW1lfSBgKSl9IHYke3RoaXMudmVyc2lvbn1cXG5gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcHJvZ3JhbVxuICAgICAgLmNvbW1hbmQoJ2dlbmVyYXRlLWhhc2ggPHBhc3N3b3JkPicpXG4gICAgICAuZGVzY3JpcHRpb24oJ2dlbmVyYXRlcyBhIGhhc2gvc2FsdCBwYWlyIGZyb20gYSBwbGFpbi10ZXh0IHBhc3N3b3JkJylcbiAgICAgIC5hY3Rpb24oZ2VuZXJhdGVIYXNoKTtcbiAgICBhd2FpdCBwcm9ncmFtLnBhcnNlQXN5bmMoYXJndik7XG4gIH1cbn1cbiIsICJpbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5cbmNvbnN0IFBBU1NXT1JEX0lURVJBVElPTlMgPSAxMDAwMDtcbmNvbnN0IFBBU1NXT1JEX0hBU0hfTEVOR1RIID0gNjQ7XG5jb25zdCBQQVNTV09SRF9ESUdFU1QgPSAnc2hhMjU2JztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhc2hQYXNzd29yZChcbiAgcGFzc3dvcmQ6IHN0cmluZ1xuKTogUHJvbWlzZTx7aGFzaDogc3RyaW5nOyBzYWx0OiBzdHJpbmd9PiB7XG4gIGNvbnN0IHNhbHQgPSBjcnlwdG8ucmFuZG9tQnl0ZXMoMTYpLnRvU3RyaW5nKCdoZXgnKTtcbiAgY29uc3QgaGFzaCA9IGF3YWl0IGdlbmVyYXRlSGFzaChwYXNzd29yZCwgc2FsdCk7XG4gIHJldHVybiB7aGFzaCwgc2FsdH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJpZnlQYXNzd29yZChcbiAgcGFzc3dvcmQ6IHN0cmluZyxcbiAgaGFzaDogc3RyaW5nLFxuICBzYWx0OiBzdHJpbmdcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBnZW5lcmF0ZWRIYXNoID0gYXdhaXQgZ2VuZXJhdGVIYXNoKHBhc3N3b3JkLCBzYWx0KTtcbiAgcmV0dXJuIGhhc2ggPT09IGdlbmVyYXRlZEhhc2g7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUhhc2gocGFzc3dvcmQ6IHN0cmluZywgc2FsdDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjcnlwdG8ucGJrZGYyKFxuICAgICAgcGFzc3dvcmQsXG4gICAgICBzYWx0LFxuICAgICAgUEFTU1dPUkRfSVRFUkFUSU9OUyxcbiAgICAgIFBBU1NXT1JEX0hBU0hfTEVOR1RILFxuICAgICAgUEFTU1dPUkRfRElHRVNULFxuICAgICAgKGVyciwgZGVyaXZlZEtleSkgPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcigncGFzc3dvcmQgaGFzaGluZyBmYWlsZWQnKTtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGhhc2ggPSBkZXJpdmVkS2V5LnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgICAgcmVzb2x2ZShoYXNoKTtcbiAgICAgIH1cbiAgICApO1xuICB9KTtcbn1cbiIsICJpbXBvcnQge2hhc2hQYXNzd29yZH0gZnJvbSAnLi4vY29yZS9wYXNzd29yZC5qcyc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUhhc2gocGFzc3dvcmQ6IHN0cmluZykge1xuICBjb25zdCB7aGFzaCwgc2FsdH0gPSBhd2FpdCBoYXNoUGFzc3dvcmQocGFzc3dvcmQpO1xuICBjb25zb2xlLmxvZygnLy8gR2VuZXJhdGVkIGJ5OiBgcm9vdC1wYXNzd29yZC1wcm90ZWN0IGdlbmVyYXRlLWhhc2ggXCIuLi5cImAuJyk7XG4gIGNvbnNvbGUubG9nKCdwYXNzd29yZDogeycpO1xuICBjb25zb2xlLmxvZyhgICBoYXNoOiAnJHtoYXNofScsYCk7XG4gIGNvbnNvbGUubG9nKGAgIHNhbHQ6ICcke3NhbHR9JyxgKTtcbiAgY29uc29sZS5sb2coJ30nKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBQSxTQUFRLGVBQWM7QUFDdEIsU0FBUSxTQUFTLGFBQVk7OztBQ0Q3QixPQUFPLFlBQVk7QUFFbkIsSUFBTSxzQkFBc0I7QUFDNUIsSUFBTSx1QkFBdUI7QUFDN0IsSUFBTSxrQkFBa0I7QUFFeEIsZUFBc0IsYUFDcEIsVUFDdUM7QUFDdkMsUUFBTSxPQUFPLE9BQU8sWUFBWSxFQUFFLEVBQUUsU0FBUyxLQUFLO0FBQ2xELFFBQU0sT0FBTyxNQUFNLGFBQWEsVUFBVSxJQUFJO0FBQzlDLFNBQU8sRUFBQyxNQUFNLEtBQUk7QUFDcEI7QUFXTyxTQUFTLGFBQWEsVUFBa0IsTUFBK0I7QUFDNUUsU0FBTyxJQUFJLFFBQVEsQ0FBQyxTQUFTLFdBQVc7QUFDdEMsV0FBTztBQUFBLE1BQ0w7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQSxDQUFDLEtBQUssZUFBZTtBQUNuQixZQUFJLEtBQUs7QUFDUCxrQkFBUSxNQUFNLHlCQUF5QjtBQUN2QyxrQkFBUSxNQUFNLEdBQUc7QUFDakIsaUJBQU8sR0FBRztBQUNWO0FBQUEsUUFDRjtBQUNBLGNBQU0sT0FBTyxXQUFXLFNBQVMsS0FBSztBQUN0QyxnQkFBUSxJQUFJO0FBQUEsTUFDZDtBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUM7QUFDSDs7O0FDekNBLGVBQXNCQSxjQUFhLFVBQWtCO0FBQ25ELFFBQU0sRUFBQyxNQUFNLEtBQUksSUFBSSxNQUFNLGFBQWEsUUFBUTtBQUNoRCxVQUFRLElBQUksK0RBQStEO0FBQzNFLFVBQVEsSUFBSSxhQUFhO0FBQ3pCLFVBQVEsSUFBSSxZQUFZLElBQUksSUFBSTtBQUNoQyxVQUFRLElBQUksWUFBWSxJQUFJLElBQUk7QUFDaEMsVUFBUSxJQUFJLEdBQUc7QUFDakI7OztBRkxPLElBQU0sWUFBTixNQUFnQjtBQUFBLEVBQ2I7QUFBQSxFQUNBO0FBQUEsRUFFUixZQUFZLE1BQWMsU0FBaUI7QUFDekMsU0FBSyxPQUFPO0FBQ1osU0FBSyxVQUFVO0FBQUEsRUFDakI7QUFBQSxFQUVBLE1BQU0sSUFBSSxNQUFnQjtBQUN4QixVQUFNLFVBQVUsSUFBSSxRQUFRLEtBQUssSUFBSTtBQUNyQyxZQUFRLFFBQVEsS0FBSyxPQUFPO0FBQzVCLFlBQVEsT0FBTyxlQUFlLE9BQU87QUFDckMsWUFBUSxLQUFLLGFBQWEsQ0FBQyxRQUFRO0FBQ2pDLFVBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxPQUFPO0FBQ3JCLGdCQUFRO0FBQUEsVUFDTixhQUFNLFFBQVEsTUFBTSxJQUFJLEtBQUssSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLEtBQUssT0FBTztBQUFBO0FBQUEsUUFDekQ7QUFBQSxNQUNGO0FBQUEsSUFDRixDQUFDO0FBQ0QsWUFDRyxRQUFRLDBCQUEwQixFQUNsQyxZQUFZLHVEQUF1RCxFQUNuRSxPQUFPQyxhQUFZO0FBQ3RCLFVBQU0sUUFBUSxXQUFXLElBQUk7QUFBQSxFQUMvQjtBQUNGOyIsCiAgIm5hbWVzIjogWyJnZW5lcmF0ZUhhc2giLCAiZ2VuZXJhdGVIYXNoIl0KfQo=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const CSS = "\n.signin {\n font-family: 'Inter', system-ui, sans-serif;\n text-align: center;\n padding: 48px 20px;\n color: #3c4043;\n}\n\n.signin__headline {\n margin-bottom: 40px;\n}\n\n.signin__headline__icon {\n margin-bottom: 20px;\n}\n\n.signin__headline__icon svg {\n width: 72px;\n height: 72px;\n}\n\n.signin__headline__title {\n font-size: 36px;\n line-height: 1.3;\n font-weight: 500;\n margin-bottom: 20px;\n}\n\n.signin__headline__body {\n font-size: 18px;\n line-height: 1.5;\n font-weight: 500;\n}\n\n.signin__form {\n display: flex;\n gap: 8px;\n justify-content: center;\n}\n\n.signin__form__password {\n box-sizing: border-box;\n border: 1px solid #dadce0;\n border-radius: 4px;\n height: 40px;\n font-family: inherit;\n font-size: 14px;\n line-height: 1;\n letter-spacing: .25px;\n padding: 0 12px;\n min-width: 250px;\n transition: all 0.218s ease;\n}\n\n.signin__form__password:focus {\n border-color: #d2e3fc;\n background-color: rgba(66, 133, 244, 0.04);\n}\n\n.signin__button {\n align-items: center;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n display: inline-flex;\n align-items: center;\n text-align: center;\n gap: 12px;\n padding: 8px 11px;\n background: white;\n border: 1px solid #dadce0;\n border-radius: 4px;\n cursor: pointer;\n font-family: inherit;\n padding: 0 12px;\n height: 40px;\n box-sizing: border-box;\n transition: all 0.218s ease;\n}\n\n.signin__button:hover {\n border-color: #d2e3fc;\n background-color: rgba(66, 133, 244, 0.04);\n}\n\n.signin__button__icon {\n width: 18px;\n height: 18px;\n background-color: white;\n}\n\n.signin__button__label {\n font-size: 14px;\n line-height: 1;\n letter-spacing: .25px;\n font-weight: 500;\n color: #3c4043;\n}\n\n.signin__error {\n color: red;\n font-weight: bold;\n text-align: center;\n max-width: 60ch;\n margin: 20px auto 0;\n}\n";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './password.js';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function hashPassword(password: string): Promise<{
|
|
2
|
+
hash: string;
|
|
3
|
+
salt: string;
|
|
4
|
+
}>;
|
|
5
|
+
export declare function verifyPassword(password: string, hash: string, salt: string): Promise<boolean>;
|
|
6
|
+
export declare function generateHash(password: string, salt: string): Promise<string>;
|
package/dist/core.js
CHANGED
|
@@ -38,4 +38,4 @@ export {
|
|
|
38
38
|
hashPassword,
|
|
39
39
|
verifyPassword
|
|
40
40
|
};
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2NvcmUvcGFzc3dvcmQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcblxuY29uc3QgUEFTU1dPUkRfSVRFUkFUSU9OUyA9IDEwMDAwO1xuY29uc3QgUEFTU1dPUkRfSEFTSF9MRU5HVEggPSA2NDtcbmNvbnN0IFBBU1NXT1JEX0RJR0VTVCA9ICdzaGEyNTYnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFzaFBhc3N3b3JkKFxuICBwYXNzd29yZDogc3RyaW5nXG4pOiBQcm9taXNlPHtoYXNoOiBzdHJpbmc7IHNhbHQ6IHN0cmluZ30+IHtcbiAgY29uc3Qgc2FsdCA9IGNyeXB0by5yYW5kb21CeXRlcygxNikudG9TdHJpbmcoJ2hleCcpO1xuICBjb25zdCBoYXNoID0gYXdhaXQgZ2VuZXJhdGVIYXNoKHBhc3N3b3JkLCBzYWx0KTtcbiAgcmV0dXJuIHtoYXNoLCBzYWx0fTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZlcmlmeVBhc3N3b3JkKFxuICBwYXNzd29yZDogc3RyaW5nLFxuICBoYXNoOiBzdHJpbmcsXG4gIHNhbHQ6IHN0cmluZ1xuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IGdlbmVyYXRlZEhhc2ggPSBhd2FpdCBnZW5lcmF0ZUhhc2gocGFzc3dvcmQsIHNhbHQpO1xuICByZXR1cm4gaGFzaCA9PT0gZ2VuZXJhdGVkSGFzaDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlSGFzaChwYXNzd29yZDogc3RyaW5nLCBzYWx0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNyeXB0by5wYmtkZjIoXG4gICAgICBwYXNzd29yZCxcbiAgICAgIHNhbHQsXG4gICAgICBQQVNTV09SRF9JVEVSQVRJT05TLFxuICAgICAgUEFTU1dPUkRfSEFTSF9MRU5HVEgsXG4gICAgICBQQVNTV09SRF9ESUdFU1QsXG4gICAgICAoZXJyLCBkZXJpdmVkS2V5KSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdwYXNzd29yZCBoYXNoaW5nIGZhaWxlZCcpO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGFzaCA9IGRlcml2ZWRLZXkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgICByZXNvbHZlKGhhc2gpO1xuICAgICAgfVxuICAgICk7XG4gIH0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUFBLE9BQU8sWUFBWTtBQUVuQixJQUFNLHNCQUFzQjtBQUM1QixJQUFNLHVCQUF1QjtBQUM3QixJQUFNLGtCQUFrQjtBQUV4QixlQUFzQixhQUNwQixVQUN1QztBQUN2QyxRQUFNLE9BQU8sT0FBTyxZQUFZLEVBQUUsRUFBRSxTQUFTLEtBQUs7QUFDbEQsUUFBTSxPQUFPLE1BQU0sYUFBYSxVQUFVLElBQUk7QUFDOUMsU0FBTyxFQUFDLE1BQU0sS0FBSTtBQUNwQjtBQUVBLGVBQXNCLGVBQ3BCLFVBQ0EsTUFDQSxNQUNrQjtBQUNsQixRQUFNLGdCQUFnQixNQUFNLGFBQWEsVUFBVSxJQUFJO0FBQ3ZELFNBQU8sU0FBUztBQUNsQjtBQUVPLFNBQVMsYUFBYSxVQUFrQixNQUErQjtBQUM1RSxTQUFPLElBQUksUUFBUSxDQUFDLFNBQVMsV0FBVztBQUN0QyxXQUFPO0FBQUEsTUFDTDtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBLENBQUMsS0FBSyxlQUFlO0FBQ25CLFlBQUksS0FBSztBQUNQLGtCQUFRLE1BQU0seUJBQXlCO0FBQ3ZDLGtCQUFRLE1BQU0sR0FBRztBQUNqQixpQkFBTyxHQUFHO0FBQ1Y7QUFBQSxRQUNGO0FBQ0EsY0FBTSxPQUFPLFdBQVcsU0FBUyxLQUFLO0FBQ3RDLGdCQUFRLElBQUk7QUFBQSxNQUNkO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQztBQUNIOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2NvcmUvcGFzc3dvcmQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcblxuY29uc3QgUEFTU1dPUkRfSVRFUkFUSU9OUyA9IDEwMDAwO1xuY29uc3QgUEFTU1dPUkRfSEFTSF9MRU5HVEggPSA2NDtcbmNvbnN0IFBBU1NXT1JEX0RJR0VTVCA9ICdzaGEyNTYnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFzaFBhc3N3b3JkKFxuICBwYXNzd29yZDogc3RyaW5nXG4pOiBQcm9taXNlPHtoYXNoOiBzdHJpbmc7IHNhbHQ6IHN0cmluZ30+IHtcbiAgY29uc3Qgc2FsdCA9IGNyeXB0by5yYW5kb21CeXRlcygxNikudG9TdHJpbmcoJ2hleCcpO1xuICBjb25zdCBoYXNoID0gYXdhaXQgZ2VuZXJhdGVIYXNoKHBhc3N3b3JkLCBzYWx0KTtcbiAgcmV0dXJuIHtoYXNoLCBzYWx0fTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZlcmlmeVBhc3N3b3JkKFxuICBwYXNzd29yZDogc3RyaW5nLFxuICBoYXNoOiBzdHJpbmcsXG4gIHNhbHQ6IHN0cmluZ1xuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IGdlbmVyYXRlZEhhc2ggPSBhd2FpdCBnZW5lcmF0ZUhhc2gocGFzc3dvcmQsIHNhbHQpO1xuICByZXR1cm4gaGFzaCA9PT0gZ2VuZXJhdGVkSGFzaDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlSGFzaChwYXNzd29yZDogc3RyaW5nLCBzYWx0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNyeXB0by5wYmtkZjIoXG4gICAgICBwYXNzd29yZCxcbiAgICAgIHNhbHQsXG4gICAgICBQQVNTV09SRF9JVEVSQVRJT05TLFxuICAgICAgUEFTU1dPUkRfSEFTSF9MRU5HVEgsXG4gICAgICBQQVNTV09SRF9ESUdFU1QsXG4gICAgICAoZXJyLCBkZXJpdmVkS2V5KSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdwYXNzd29yZCBoYXNoaW5nIGZhaWxlZCcpO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGFzaCA9IGRlcml2ZWRLZXkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgICByZXNvbHZlKGhhc2gpO1xuICAgICAgfVxuICAgICk7XG4gIH0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUFBLE9BQU8sWUFBWTtBQUVuQixJQUFNLHNCQUFzQjtBQUM1QixJQUFNLHVCQUF1QjtBQUM3QixJQUFNLGtCQUFrQjtBQUV4QixlQUFzQixhQUNwQixVQUN1QztBQUN2QyxRQUFNLE9BQU8sT0FBTyxZQUFZLEVBQUUsRUFBRSxTQUFTLEtBQUs7QUFDbEQsUUFBTSxPQUFPLE1BQU0sYUFBYSxVQUFVLElBQUk7QUFDOUMsU0FBTyxFQUFDLE1BQU0sS0FBSTtBQUNwQjtBQUVBLGVBQXNCLGVBQ3BCLFVBQ0EsTUFDQSxNQUNrQjtBQUNsQixRQUFNLGdCQUFnQixNQUFNLGFBQWEsVUFBVSxJQUFJO0FBQ3ZELFNBQU8sU0FBUztBQUNsQjtBQUVPLFNBQVMsYUFBYSxVQUFrQixNQUErQjtBQUM1RSxTQUFPLElBQUksUUFBUSxDQUFDLFNBQVMsV0FBVztBQUN0QyxXQUFPO0FBQUEsTUFDTDtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBLENBQUMsS0FBSyxlQUFlO0FBQ25CLFlBQUksS0FBSztBQUNQLGtCQUFRLE1BQU0seUJBQXlCO0FBQ3ZDLGtCQUFRLE1BQU0sR0FBRztBQUNqQixpQkFBTyxHQUFHO0FBQ1Y7QUFBQSxRQUNGO0FBQ0EsY0FBTSxPQUFPLFdBQVcsU0FBUyxLQUFLO0FBQ3RDLGdCQUFRLElBQUk7QUFBQSxNQUNkO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQztBQUNIOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
declare enum PasswordProtectError {
|
|
1
|
+
import { Request, Response, Plugin } from '@blinkk/root';
|
|
2
|
+
export declare enum PasswordProtectError {
|
|
4
3
|
UNKNOWN = "UNKNOWN",
|
|
5
4
|
PASSWORD_REQUIRED = "PASSWORD_REQUIRED",
|
|
6
5
|
PASSWORD_INVALID = "PASSWORD_INVALID"
|
|
7
6
|
}
|
|
8
|
-
interface PasswordProtectedRoute {
|
|
7
|
+
export interface PasswordProtectedRoute {
|
|
9
8
|
/**
|
|
10
9
|
* URL glob pattern to match (regex not supported yet).
|
|
11
10
|
*/
|
|
@@ -33,15 +32,13 @@ interface PasswordProtectedRoute {
|
|
|
33
32
|
salt: string;
|
|
34
33
|
};
|
|
35
34
|
}
|
|
36
|
-
interface PasswordProtectPluginOptions {
|
|
35
|
+
export interface PasswordProtectPluginOptions {
|
|
37
36
|
protectedRoutes: PasswordProtectedRoute[];
|
|
38
37
|
}
|
|
39
|
-
declare function passwordProtectPlugin(options: PasswordProtectPluginOptions): Plugin;
|
|
38
|
+
export declare function passwordProtectPlugin(options: PasswordProtectPluginOptions): Plugin;
|
|
40
39
|
/**
|
|
41
40
|
* Renders the login page to a response.
|
|
42
41
|
*/
|
|
43
|
-
declare function renderPasswordPage(req: Request, res: Response, options?: {
|
|
42
|
+
export declare function renderPasswordPage(req: Request, res: Response, options?: {
|
|
44
43
|
error?: PasswordProtectError;
|
|
45
44
|
}): Promise<void>;
|
|
46
|
-
|
|
47
|
-
export { PasswordProtectError, type PasswordProtectPluginOptions, type PasswordProtectedRoute, passwordProtectPlugin, renderPasswordPage };
|
package/dist/plugin.js
CHANGED
|
@@ -190,7 +190,7 @@ function ShieldIcon() {
|
|
|
190
190
|
}
|
|
191
191
|
|
|
192
192
|
// src/core/csp.ts
|
|
193
|
-
import crypto from "crypto";
|
|
193
|
+
import crypto from "node:crypto";
|
|
194
194
|
function generateNonce() {
|
|
195
195
|
return crypto.randomBytes(16).toString("base64");
|
|
196
196
|
}
|
|
@@ -374,4 +374,4 @@ export {
|
|
|
374
374
|
passwordProtectPlugin,
|
|
375
375
|
renderPasswordPage
|
|
376
376
|
};
|
|
377
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3BsdWdpbi9wbHVnaW4udHN4IiwgIi4uL3NyYy9jb21wb25lbnRzL1Bhc3N3b3JkUGFnZS9QYXNzd29yZFBhZ2UuY3NzLnRzIiwgIi4uL3NyYy9jb21wb25lbnRzL1Bhc3N3b3JkUGFnZS9QYXNzd29yZFBhZ2UudHN4IiwgIi4uL3NyYy9jb3JlL2NzcC50cyIsICIuLi9zcmMvY29yZS9wYXNzd29yZC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtSZXF1ZXN0LCBSZXNwb25zZSwgTmV4dEZ1bmN0aW9uLCBQbHVnaW4sIFNlcnZlcn0gZnJvbSAnQGJsaW5ray9yb290JztcbmltcG9ydCB7cmVuZGVySnN4VG9TdHJpbmd9IGZyb20gJ0BibGlua2svcm9vdC9qc3gnO1xuaW1wb3J0IGJvZHlQYXJzZXIgZnJvbSAnYm9keS1wYXJzZXInO1xuaW1wb3J0IG1pY3JvbWF0Y2ggZnJvbSAnbWljcm9tYXRjaCc7XG5pbXBvcnQge1Bhc3N3b3JkUGFnZX0gZnJvbSAnLi4vY29tcG9uZW50cy9QYXNzd29yZFBhZ2UvUGFzc3dvcmRQYWdlLmpzJztcbmltcG9ydCB7Z2VuZXJhdGVOb25jZSwgc2V0U2VjdXJpdHlIZWFkZXJzfSBmcm9tICcuLi9jb3JlL2NzcC5qcyc7XG5pbXBvcnQge2hhc2hQYXNzd29yZCwgdmVyaWZ5UGFzc3dvcmR9IGZyb20gJy4uL2NvcmUvcGFzc3dvcmQuanMnO1xuXG5jb25zdCBTRVNTSU9OX0NPT0tJRV9IQVNIID0gJ3Bhc3N3b3JkX3Byb3RlY3QuaGFzaCc7XG5jb25zdCBTRVNTSU9OX0NPT0tJRV9TQUxUID0gJ3Bhc3N3b3JkX3Byb3RlY3Quc2FsdCc7XG5cbmV4cG9ydCBlbnVtIFBhc3N3b3JkUHJvdGVjdEVycm9yIHtcbiAgVU5LTk9XTiA9ICdVTktOT1dOJyxcbiAgUEFTU1dPUkRfUkVRVUlSRUQgPSAnUEFTU1dPUkRfUkVRVUlSRUQnLFxuICBQQVNTV09SRF9JTlZBTElEID0gJ1BBU1NXT1JEX0lOVkFMSUQnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhc3N3b3JkUHJvdGVjdGVkUm91dGUge1xuICAvKipcbiAgICogVVJMIGdsb2IgcGF0dGVybiB0byBtYXRjaCAocmVnZXggbm90IHN1cHBvcnRlZCB5ZXQpLlxuICAgKi9cbiAgc291cmNlOiBzdHJpbmc7XG5cbiAgcGFzc3dvcmQ6IHtcbiAgICAvKipcbiAgICAgKiBBIGhhc2ggb2YgdGhlIHBhc3N3b3JkLiBOb3RlOiBhIHBsYWluLXRleHQgcGFzc3dvcmQgc2hvdWxkIG5ldmVyIGJlXG4gICAgICogc3RvcmVkIGluIGNvZGUuIENvbnNpZGVyIHN0b3JpbmcgdGhpcyB2YWx1ZSBpbiBhIGAuZW52YCBmaWxlIGZvciBleHRyYVxuICAgICAqIHNlY3VyaXR5LlxuICAgICAqXG4gICAgICogR2VuZXJhdGUgdGhpcyBieSBydW5uaW5nOlxuICAgICAqIGBgYFxuICAgICAqIHJvb3QtcGFzc3dvcmQtcHJvdGVjdCBnZW5lcmF0ZS1oYXNoIFwiTVlfUEFTU1dPUkRcIlxuICAgICAqIGBgYGBcbiAgICAgKi9cbiAgICBoYXNoOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBBIHJhbmRvbSBzdHJpbmcgdXNlZCB0byBnZW5lcmF0ZSB0aGUgcGFzc3dvcmQgaGFzaC5cbiAgICAgKlxuICAgICAqIEdlbmVyYXRlIHRoaXMgYnkgcnVubmluZzpcbiAgICAgKiBgYGBcbiAgICAgKiByb290LXBhc3N3b3JkLXByb3RlY3QgZ2VuZXJhdGUtaGFzaCBcIk1ZX1BBU1NXT1JEXCJcbiAgICAgKiBgYGBgXG4gICAgICovXG4gICAgc2FsdDogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhc3N3b3JkUHJvdGVjdFBsdWdpbk9wdGlvbnMge1xuICBwcm90ZWN0ZWRSb3V0ZXM6IFBhc3N3b3JkUHJvdGVjdGVkUm91dGVbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhc3N3b3JkUHJvdGVjdFBsdWdpbihcbiAgb3B0aW9uczogUGFzc3dvcmRQcm90ZWN0UGx1Z2luT3B0aW9uc1xuKTogUGx1Z2luIHtcbiAgY29uc3QgcHJvdGVjdGVkUm91dGVzVXNlckNvbmZpZyA9IG9wdGlvbnMucHJvdGVjdGVkUm91dGVzIHx8IFtdO1xuICBjb25zdCBwcm90ZWN0ZWRSb3V0ZXMgPSBwcm90ZWN0ZWRSb3V0ZXNVc2VyQ29uZmlnLmZpbHRlcigocHJvdGVjdGVkUm91dGUpID0+IHtcbiAgICByZXR1cm4gQm9vbGVhbihcbiAgICAgIHByb3RlY3RlZFJvdXRlLnNvdXJjZSAmJlxuICAgICAgICBwcm90ZWN0ZWRSb3V0ZS5wYXNzd29yZCAmJlxuICAgICAgICBwcm90ZWN0ZWRSb3V0ZS5wYXNzd29yZC5oYXNoICYmXG4gICAgICAgIHByb3RlY3RlZFJvdXRlLnBhc3N3b3JkLnNhbHRcbiAgICApO1xuICB9KTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZmlyc3QgcGFzc3dvcmQtcHJvdGVjdGVkIHJvdXRlIHRoYXQgbWF0Y2hlcy5cbiAgICovXG4gIGZ1bmN0aW9uIGdldFByb3RlY3RlZFJvdXRlQ29uZmlnKFxuICAgIHJlcTogUmVxdWVzdFxuICApOiBQYXNzd29yZFByb3RlY3RlZFJvdXRlIHwgbnVsbCB7XG4gICAgZm9yIChjb25zdCBwcm90ZWN0ZWRSb3V0ZSBvZiBwcm90ZWN0ZWRSb3V0ZXMpIHtcbiAgICAgIGlmIChtaWNyb21hdGNoLmlzTWF0Y2gocmVxLnBhdGgsIHByb3RlY3RlZFJvdXRlLnNvdXJjZSkpIHtcbiAgICAgICAgcmV0dXJuIHByb3RlY3RlZFJvdXRlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3Jvb3QtcGFzc3dvcmQtcHJvdGVjdCcsXG4gICAgY29uZmlndXJlU2VydmVyOiAoc2VydmVyOiBTZXJ2ZXIpID0+IHtcbiAgICAgIGlmIChwcm90ZWN0ZWRSb3V0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHNlcnZlci51c2UoYm9keVBhcnNlci51cmxlbmNvZGVkKHtleHRlbmRlZDogdHJ1ZX0pKTtcbiAgICAgIHNlcnZlci51c2UoYXN5bmMgKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb3RlY3RlZFJvdXRlID0gZ2V0UHJvdGVjdGVkUm91dGVDb25maWcocmVxKTtcbiAgICAgICAgaWYgKHByb3RlY3RlZFJvdXRlKSB7XG4gICAgICAgICAgYXdhaXQgaGFuZGxlUHJvdGVjdGVkUm91dGUocHJvdGVjdGVkUm91dGUsIHJlcSwgcmVzLCBuZXh0KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbmV4dCgpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlUHJvdGVjdGVkUm91dGUoXG4gIHByb3RlY3RlZFJvdXRlOiBQYXNzd29yZFByb3RlY3RlZFJvdXRlLFxuICByZXE6IFJlcXVlc3QsXG4gIHJlczogUmVzcG9uc2UsXG4gIG5leHQ6IE5leHRGdW5jdGlvblxuKSB7XG4gIGlmIChyZXEubWV0aG9kID09PSAnUE9TVCcpIHtcbiAgICAvLyBWZXJpZnkgcGFzc3dvcmQgYW5kIGlmIHZhbGlkIHNldCBhIHNlc3Npb24gY29va2llLlxuICAgIGlmIChcbiAgICAgIHJlcS5nZXQoJ2NvbnRlbnQtdHlwZScpICE9PSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyB8fFxuICAgICAgIXJlcS5ib2R5IHx8XG4gICAgICAhcmVxLmJvZHkucGFzc3dvcmRcbiAgICApIHtcbiAgICAgIHJlcy5zdGF0dXMoNDAwKTtcbiAgICAgIHJldHVybiByZW5kZXJQYXNzd29yZFBhZ2UocmVxLCByZXMsIHtcbiAgICAgICAgZXJyb3I6IFBhc3N3b3JkUHJvdGVjdEVycm9yLlBBU1NXT1JEX1JFUVVJUkVELFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFzc3dvcmQgPSByZXEuYm9keS5wYXNzd29yZCBhcyBzdHJpbmc7XG4gICAgY29uc3QgaXNWYWxpZCA9IGF3YWl0IHZlcmlmeVBhc3N3b3JkKFxuICAgICAgcGFzc3dvcmQsXG4gICAgICBwcm90ZWN0ZWRSb3V0ZS5wYXNzd29yZC5oYXNoLFxuICAgICAgcHJvdGVjdGVkUm91dGUucGFzc3dvcmQuc2FsdFxuICAgICk7XG4gICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gcmVuZGVyUGFzc3dvcmRQYWdlKHJlcSwgcmVzLCB7XG4gICAgICAgIGVycm9yOiBQYXNzd29yZFByb3RlY3RFcnJvci5QQVNTV09SRF9JTlZBTElELFxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIFNldCBhIHNlc3Npb24gY29va2llIHZhbHVlIHRvIHZlcmlmeSBzdWJzZXF1ZW50IHJlcXVlc3RzLlxuICAgIGF3YWl0IHNldFNlc3Npb25Db29raWUocHJvdGVjdGVkUm91dGUsIHJlcyk7XG4gICAgcmV0dXJuIG5leHQoKTtcbiAgfVxuXG4gIC8vIElmIHByZXZpb3VzbHkgbG9nZ2VkIGluLCBjaGVjayB0aGUgc2Vzc2lvbiBjb29raWUgYWdhaW5zdCB0aGUgY3VycmVudFxuICAvLyBwYXNzd29yZCBoYXNoLlxuICBjb25zdCBpc1ZhbGlkID0gYXdhaXQgdmVyaWZ5U2Vzc2lvbkNvb2tpZShwcm90ZWN0ZWRSb3V0ZSwgcmVxKTtcbiAgaWYgKGlzVmFsaWQpIHtcbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgcmV0dXJuIHJlbmRlclBhc3N3b3JkUGFnZShyZXEsIHJlcyk7XG59XG5cbi8qKlxuICogU2F2ZXMgYSB2ZXJpZmljYXRpb24gdG9rZW4gdG8gdGhlIHNlc3Npb24gY29va2llIGZvciBzdWJzZXF1ZW50IHJlcXVlc3RzLlxuICovXG5hc3luYyBmdW5jdGlvbiBzZXRTZXNzaW9uQ29va2llKFxuICBwcm90ZWN0ZWRSb3V0ZTogUGFzc3dvcmRQcm90ZWN0ZWRSb3V0ZSxcbiAgcmVzOiBSZXNwb25zZVxuKSB7XG4gIGNvbnN0IHtoYXNoLCBzYWx0fSA9IGF3YWl0IGhhc2hQYXNzd29yZChwcm90ZWN0ZWRSb3V0ZS5wYXNzd29yZC5oYXNoKTtcbiAgcmVzLnNlc3Npb24uc2V0SXRlbShTRVNTSU9OX0NPT0tJRV9IQVNILCBoYXNoKTtcbiAgcmVzLnNlc3Npb24uc2V0SXRlbShTRVNTSU9OX0NPT0tJRV9TQUxULCBzYWx0KTtcbiAgcmVzLnNhdmVTZXNzaW9uKCk7XG59XG5cbi8qKlxuICogVmVyaWZpZXMgdGhlIHNlc3Npb24gY29va2llIHZhbHVlIGlzIHZhbGlkLlxuICovXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlTZXNzaW9uQ29va2llKFxuICBwcm90ZWN0ZWRSb3V0ZTogUGFzc3dvcmRQcm90ZWN0ZWRSb3V0ZSxcbiAgcmVxOiBSZXF1ZXN0XG4pIHtcbiAgY29uc3QgaGFzaCA9IHJlcS5zZXNzaW9uLmdldEl0ZW0oU0VTU0lPTl9DT09LSUVfSEFTSCk7XG4gIGNvbnN0IHNhbHQgPSByZXEuc2Vzc2lvbi5nZXRJdGVtKFNFU1NJT05fQ09PS0lFX1NBTFQpO1xuICBpZiAoIWhhc2ggfHwgIXNhbHQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHZlcmlmeVBhc3N3b3JkKHByb3RlY3RlZFJvdXRlLnBhc3N3b3JkLmhhc2gsIGhhc2gsIHNhbHQpO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgdGhlIGxvZ2luIHBhZ2UgdG8gYSByZXNwb25zZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlclBhc3N3b3JkUGFnZShcbiAgcmVxOiBSZXF1ZXN0LFxuICByZXM6IFJlc3BvbnNlLFxuICBvcHRpb25zPzoge2Vycm9yPzogUGFzc3dvcmRQcm90ZWN0RXJyb3J9XG4pIHtcbiAgLy8gSWYgdGhlcmUncyBubyBgLzQwMWAgcm91dGUsIGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBwYXNzd29yZCBwYWdlLlxuICBjb25zdCBkZWZhdWx0SGFuZGxlciA9ICgpID0+IHtcbiAgICBjb25zdCBub25jZSA9IGdlbmVyYXRlTm9uY2UoKTtcbiAgICByZXMuc2V0SGVhZGVyKCdjb250ZW50LXR5cGUnLCAndGV4dC9odG1sJyk7XG4gICAgcmVzLnN0YXR1cyg0MDEpO1xuICAgIHNldFNlY3VyaXR5SGVhZGVycyhyZXMsIG5vbmNlKTtcbiAgICBjb25zdCBlcnJvck1zZyA9IGdldEVycm9yTWVzc2FnZShvcHRpb25zPy5lcnJvcik7XG4gICAgY29uc3QgbWFpbkh0bWwgPSByZW5kZXJKc3hUb1N0cmluZyhcbiAgICAgIDxQYXNzd29yZFBhZ2UgZXJyb3I9e2Vycm9yTXNnfSBub25jZT17bm9uY2V9IC8+XG4gICAgKTtcbiAgICBjb25zdCBodG1sID0gYDwhZG9jdHlwZSBodG1sPlxcbiR7bWFpbkh0bWx9YDtcbiAgICByZXMuc2VuZChodG1sKTtcbiAgfTtcblxuICAvLyBJZiB0aGUgYXBwIGRlZmluZXMgYHJvdXRlcy80MDEudHN4YCwgcmVuZGVyIHRoYXQgcGFnZS5cbiAgaWYgKHJlcS5yZW5kZXJlcikge1xuICAgIGNvbnN0IFtyb3V0ZSwgcm91dGVQYXJhbXNdID0gcmVxLnJlbmRlcmVyLmdldFJvdXRlKCcvNDAxJyk7XG4gICAgaWYgKHJvdXRlKSB7XG4gICAgICAvLyBBZGQgdGhlIGVycm9yIHR5cGUgdG8gdGhlIHJlcSBvYmplY3QuIFJvdXRlcyB0aGF0IGRlZmluZSBhIGBoYW5kbGUoKWBcbiAgICAgIC8vIG1ldGhvZCBzaG91bGQgYmUgYWJsZSB0byByZWFkIGZyb20gaXQgdG8gY29uc3RydWN0IGFuIGFwcHJvcHJpYXRlXG4gICAgICAvLyBlcnJvciBtZXNzYWdlIGZvciB0aGUgcGFnZS5cbiAgICAgIChyZXEgYXMgYW55KS5wYXNzd29yZFByb3RlY3QgPSB7ZXJyb3I6IG9wdGlvbnM/LmVycm9yfTtcbiAgICAgIHJldHVybiByZXEucmVuZGVyZXIuaGFuZGxlUm91dGUocmVxLCByZXMsIGRlZmF1bHRIYW5kbGVyLCByb3V0ZSwge1xuICAgICAgICBkZWZhdWx0U3RhdHVzQ29kZTogNDAxLFxuICAgICAgICByb3V0ZVBhcmFtczogcm91dGVQYXJhbXMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRIYW5kbGVyKCk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBgUGFzc3dvcmRQcm90ZWN0RXJyb3JgIHRvIGEgdXNlci1mcmllbmRseSBlcnJvciBtZXNzYWdlLlxuICovXG5mdW5jdGlvbiBnZXRFcnJvck1lc3NhZ2UoZXJyb3I/OiBQYXNzd29yZFByb3RlY3RFcnJvcikge1xuICBpZiAoIWVycm9yKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoZXJyb3IgPT09IFBhc3N3b3JkUHJvdGVjdEVycm9yLlBBU1NXT1JEX1JFUVVJUkVEKSB7XG4gICAgcmV0dXJuICdCYWQgcmVxdWVzdCAobm8gcGFzc3dvcmQpLic7XG4gIH1cbiAgaWYgKGVycm9yID09PSBQYXNzd29yZFByb3RlY3RFcnJvci5QQVNTV09SRF9JTlZBTElEKSB7XG4gICAgcmV0dXJuICdJbmNvcnJlY3QgcGFzc3dvcmQuJztcbiAgfVxuICByZXR1cm4gJ1Vua25vd24gZXJyb3IuJztcbn1cbiIsICJleHBvcnQgY29uc3QgQ1NTID0gYFxuLnNpZ25pbiB7XG4gIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzeXN0ZW0tdWksIHNhbnMtc2VyaWY7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZzogNDhweCAyMHB4O1xuICBjb2xvcjogIzNjNDA0Mztcbn1cblxuLnNpZ25pbl9faGVhZGxpbmUge1xuICBtYXJnaW4tYm90dG9tOiA0MHB4O1xufVxuXG4uc2lnbmluX19oZWFkbGluZV9faWNvbiB7XG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XG59XG5cbi5zaWduaW5fX2hlYWRsaW5lX19pY29uIHN2ZyB7XG4gIHdpZHRoOiA3MnB4O1xuICBoZWlnaHQ6IDcycHg7XG59XG5cbi5zaWduaW5fX2hlYWRsaW5lX190aXRsZSB7XG4gIGZvbnQtc2l6ZTogMzZweDtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cblxuLnNpZ25pbl9faGVhZGxpbmVfX2JvZHkge1xuICBmb250LXNpemU6IDE4cHg7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi5zaWduaW5fX2Zvcm0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDhweDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5zaWduaW5fX2Zvcm1fX3Bhc3N3b3JkIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RhZGNlMDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBsZXR0ZXItc3BhY2luZzogLjI1cHg7XG4gIHBhZGRpbmc6IDAgMTJweDtcbiAgbWluLXdpZHRoOiAyNTBweDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMjE4cyBlYXNlO1xufVxuXG4uc2lnbmluX19mb3JtX19wYXNzd29yZDpmb2N1cyB7XG4gIGJvcmRlci1jb2xvcjogI2QyZTNmYztcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg2NiwgMTMzLCAyNDQsIDAuMDQpO1xufVxuXG4uc2lnbmluX19idXR0b24ge1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZ2FwOiAxMnB4O1xuICBwYWRkaW5nOiA4cHggMTFweDtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkYWRjZTA7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgcGFkZGluZzogMCAxMnB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHRyYW5zaXRpb246IGFsbCAwLjIxOHMgZWFzZTtcbn1cblxuLnNpZ25pbl9fYnV0dG9uOmhvdmVyIHtcbiAgYm9yZGVyLWNvbG9yOiAjZDJlM2ZjO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDY2LCAxMzMsIDI0NCwgMC4wNCk7XG59XG5cbi5zaWduaW5fX2J1dHRvbl9faWNvbiB7XG4gIHdpZHRoOiAxOHB4O1xuICBoZWlnaHQ6IDE4cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuXG4uc2lnbmluX19idXR0b25fX2xhYmVsIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMTtcbiAgbGV0dGVyLXNwYWNpbmc6IC4yNXB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogIzNjNDA0Mztcbn1cblxuLnNpZ25pbl9fZXJyb3Ige1xuICBjb2xvcjogcmVkO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXgtd2lkdGg6IDYwY2g7XG4gIG1hcmdpbjogMjBweCBhdXRvIDA7XG59XG5gO1xuIiwgImltcG9ydCB7Q1NTfSBmcm9tICcuL1Bhc3N3b3JkUGFnZS5jc3MuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhc3N3b3JkUGFnZVByb3BzIHtcbiAgbm9uY2U6IHN0cmluZztcbiAgZXJyb3I/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBQYXNzd29yZFBhZ2UocHJvcHM6IFBhc3N3b3JkUGFnZVByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGh0bWwgbGFuZz1cImVuXCI+XG4gICAgICA8aGVhZD5cbiAgICAgICAgPG1ldGEgY2hhcnNldD1cInV0Zi04XCIgLz5cbiAgICAgICAgPHRpdGxlPlByb3RlY3RlZDwvdGl0bGU+XG4gICAgICAgIDxsaW5rXG4gICAgICAgICAgcmVsPVwiaWNvblwiXG4gICAgICAgICAgaHJlZj1cImh0dHBzOi8vbGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS9paks1MFRmUWxWX3lKdzNpLUNNbG5ENm9zSDRQYm9aQklMWnJKY1dob05NRW1veUNENWUxYkF4WGJhT1BlNXc0Z0dfU2NmMzdFWHJtWjZwOHNQMmx1ZTVmTFo0MTltNUp5TE1zPWUzODUtdzI1NlwiXG4gICAgICAgICAgdHlwZT1cImltYWdlL3BuZ1wiXG4gICAgICAgIC8+XG4gICAgICAgIDxsaW5rXG4gICAgICAgICAgaHJlZj1cImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9SW50ZXI6d2dodEA0MDA7NTAwOzYwMDs3MDA7OTAwXCJcbiAgICAgICAgICByZWw9XCJzdHlsZXNoZWV0XCJcbiAgICAgICAgICBub25jZT17cHJvcHMubm9uY2V9XG4gICAgICAgIC8+XG4gICAgICAgIDxzdHlsZSBub25jZT17cHJvcHMubm9uY2V9PntDU1N9PC9zdHlsZT5cbiAgICAgIDwvaGVhZD5cbiAgICAgIDxib2R5PlxuICAgICAgICA8ZGl2IGlkPVwicm9vdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2lnbmluXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNpZ25pbl9faGVhZGxpbmVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzaWduaW5fX2hlYWRsaW5lX19pY29uXCI+XG4gICAgICAgICAgICAgICAgPFNoaWVsZEljb24gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxoMT5UaGlzIHBhZ2UgaXMgcHJvdGVjdGVkLjwvaDE+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInNpZ25pbl9faGVhZGxpbmVfX2JvZHlcIj5cbiAgICAgICAgICAgICAgICBFbnRlciB0aGUgcGFzc3dvcmQgYmVsb3cgdG8gY29udGludWU6XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGZvcm0gY2xhc3NOYW1lPVwic2lnbmluX19mb3JtXCIgbWV0aG9kPVwiUE9TVFwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBpZD1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzaWduaW5fX2Zvcm1fX3Bhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgYXV0b0ZvY3VzPXt0cnVlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInNpZ25pbl9fYnV0dG9uXCIgdHlwZT1cInN1Ym1pdFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2lnbmluX19idXR0b25fX2xhYmVsXCI+U3VibWl0PC9kaXY+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAge3Byb3BzLmVycm9yICYmIDxwIGNsYXNzTmFtZT1cInNpZ25pbl9fZXJyb3JcIj57cHJvcHMuZXJyb3J9PC9wPn1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2JvZHk+XG4gICAgPC9odG1sPlxuICApO1xufVxuXG5mdW5jdGlvbiBTaGllbGRJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgd2lkdGg9XCIzNlwiXG4gICAgICBoZWlnaHQ9XCIzNlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICBzdHJva2U9XCIjZmY0NTAwXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgID5cbiAgICAgIDxwYXRoIHN0cm9rZT1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTEuOTk4IDJsLjExOCAuMDA3bC4wNTkgLjAwOGwuMDYxIC4wMTNsLjExMSAuMDM0YS45OTMgLjk5MyAwIDAgMSAuMjE3IC4xMTJsLjEwNCAuMDgybC4yNTUgLjIxOGExMSAxMSAwIDAgMCA3LjE4OSAyLjUzN2wuMzQyIC0uMDFhMSAxIDAgMCAxIDEuMDA1IC43MTdhMTMgMTMgMCAwIDEgLTkuMjA4IDE2LjI1YTEgMSAwIDAgMSAtLjUwMiAwYTEzIDEzIDAgMCAxIC05LjIwOSAtMTYuMjVhMSAxIDAgMCAxIDEuMDA1IC0uNzE3YTExIDExIDAgMCAwIDcuNTMxIC0yLjUyN2wuMjYzIC0uMjI1bC4wOTYgLS4wNzVhLjk5MyAuOTkzIDAgMCAxIC4yMTcgLS4xMTJsLjExMiAtLjAzNGEuOTcgLjk3IDAgMCAxIC4xMTkgLS4wMjFsLjExNSAtLjAwN3ptLjAwMiA3YTIgMiAwIDAgMCAtMS45OTUgMS44NWwtLjAwNSAuMTVsLjAwNSAuMTVhMiAyIDAgMCAwIC45OTUgMS41ODF2MS43NjlsLjAwNyAuMTE3YTEgMSAwIDAgMCAxLjk5MyAtLjExN2wuMDAxIC0xLjc2OGEyIDIgMCAwIDAgLTEuMDAxIC0zLjczMnpcIlxuICAgICAgICBzdHJva2Utd2lkdGg9XCIwXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwgImltcG9ydCBjcnlwdG8gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0IHtSZXNwb25zZX0gZnJvbSAnQGJsaW5ray9yb290JztcblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlTm9uY2UoKSB7XG4gIHJldHVybiBjcnlwdG8ucmFuZG9tQnl0ZXMoMTYpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFNlY3VyaXR5SGVhZGVycyhyZXM6IFJlc3BvbnNlLCBub25jZTogc3RyaW5nKSB7XG4gIHJlcy5zZXRIZWFkZXIoJ3gtZnJhbWUtb3B0aW9ucycsICdTQU1FT1JJR0lOJyk7XG4gIHJlcy5zZXRIZWFkZXIoXG4gICAgJ3N0cmljdC10cmFuc3BvcnQtc2VjdXJpdHknLFxuICAgICdtYXgtYWdlPTYzMDcyMDAwOyBpbmNsdWRlU3ViZG9tYWluczsgcHJlbG9hZCdcbiAgKTtcbiAgcmVzLnNldEhlYWRlcigneC1jb250ZW50LXR5cGUtb3B0aW9ucycsICdub3NuaWZmJyk7XG4gIHJlcy5zZXRIZWFkZXIoJ3gteHNzLXByb3RlY3Rpb24nLCAnMTsgbW9kZT1ibG9jaycpO1xuXG4gIC8vIGh0dHBzOi8vY3NwLndpdGhnb29nbGUuY29tL2RvY3Mvc3RyaWN0LWNzcC5odG1sXG4gIGNvbnN0IGRpcmVjdGl2ZXMgPSBbXG4gICAgXCJiYXNlLXVyaSAnbm9uZSdcIixcbiAgICBcIm9iamVjdC1zcmMgJ25vbmUnXCIsXG4gICAgYHNjcmlwdC1zcmMgJ25vbmNlLSR7bm9uY2V9JyAndW5zYWZlLWlubGluZScgJ3Vuc2FmZS1ldmFsJyAnc3RyaWN0LWR5bmFtaWMnIGh0dHBzOiBodHRwOmAsXG4gIF07XG4gIHJlcy5zZXRIZWFkZXIoJ2NvbnRlbnQtc2VjdXJpdHktcG9saWN5LXJlcG9ydC1vbmx5JywgZGlyZWN0aXZlcy5qb2luKCc7JykpO1xufVxuIiwgImltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcblxuY29uc3QgUEFTU1dPUkRfSVRFUkFUSU9OUyA9IDEwMDAwO1xuY29uc3QgUEFTU1dPUkRfSEFTSF9MRU5HVEggPSA2NDtcbmNvbnN0IFBBU1NXT1JEX0RJR0VTVCA9ICdzaGEyNTYnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFzaFBhc3N3b3JkKFxuICBwYXNzd29yZDogc3RyaW5nXG4pOiBQcm9taXNlPHtoYXNoOiBzdHJpbmc7IHNhbHQ6IHN0cmluZ30+IHtcbiAgY29uc3Qgc2FsdCA9IGNyeXB0by5yYW5kb21CeXRlcygxNikudG9TdHJpbmcoJ2hleCcpO1xuICBjb25zdCBoYXNoID0gYXdhaXQgZ2VuZXJhdGVIYXNoKHBhc3N3b3JkLCBzYWx0KTtcbiAgcmV0dXJuIHtoYXNoLCBzYWx0fTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZlcmlmeVBhc3N3b3JkKFxuICBwYXNzd29yZDogc3RyaW5nLFxuICBoYXNoOiBzdHJpbmcsXG4gIHNhbHQ6IHN0cmluZ1xuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IGdlbmVyYXRlZEhhc2ggPSBhd2FpdCBnZW5lcmF0ZUhhc2gocGFzc3dvcmQsIHNhbHQpO1xuICByZXR1cm4gaGFzaCA9PT0gZ2VuZXJhdGVkSGFzaDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlSGFzaChwYXNzd29yZDogc3RyaW5nLCBzYWx0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNyeXB0by5wYmtkZjIoXG4gICAgICBwYXNzd29yZCxcbiAgICAgIHNhbHQsXG4gICAgICBQQVNTV09SRF9JVEVSQVRJT05TLFxuICAgICAgUEFTU1dPUkRfSEFTSF9MRU5HVEgsXG4gICAgICBQQVNTV09SRF9ESUdFU1QsXG4gICAgICAoZXJyLCBkZXJpdmVkS2V5KSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdwYXNzd29yZCBoYXNoaW5nIGZhaWxlZCcpO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGFzaCA9IGRlcml2ZWRLZXkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgICByZXNvbHZlKGhhc2gpO1xuICAgICAgfVxuICAgICk7XG4gIH0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUNBLFNBQVEseUJBQXdCO0FBQ2hDLE9BQU8sZ0JBQWdCO0FBQ3ZCLE9BQU8sZ0JBQWdCOzs7QUNIaEIsSUFBTSxNQUFNO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7OztBQ1ViLFNBQ0UsS0FERjtBQUhDLFNBQVMsYUFBYSxPQUEwQjtBQUNyRCxTQUNFLHFCQUFDLFVBQUssTUFBSyxNQUNUO0FBQUEseUJBQUMsVUFDQztBQUFBLDBCQUFDLFVBQUssU0FBUSxTQUFRO0FBQUEsTUFDdEIsb0JBQUMsV0FB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LEtBQ0E7QUFDQSxRQUFNLEVBQUMsTUFBTSxLQUFJLElBQUksTUFBTSxhQUFhLGVBQWUsU0FBUyxJQUFJO0FBQ3BFLE1BQUksUUFBUSxRQUFRLHFCQUFxQixJQUFJO0FBQzdDLE1BQUksUUFBUSxRQUFRLHFCQUFxQixJQUFJO0FBQzdDLE1BQUksWUFBWTtBQUNsQjtBQUtBLGVBQWUsb0JBQ2IsZ0JBQ0EsS0FDQTtBQUNBLFFBQU0sT0FBTyxJQUFJLFFBQVEsUUFBUSxtQkFBbUI7QUFDcEQsUUFBTSxPQUFPLElBQUksUUFBUSxRQUFRLG1CQUFtQjtBQUNwRCxNQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDbEIsV0FBTztBQUFBLEVBQ1Q7QUFDQSxTQUFPLE1BQU0sZUFBZSxlQUFlLFNBQVMsTUFBTSxNQUFNLElBQUk7QUFDdEU7QUFLQSxlQUFzQixtQkFDcEIsS0FDQSxLQUNBLFNBQ0E7QUFFQSxRQUFNLGlCQUFpQixNQUFNO0FBQzNCLFVBQU0sUUFBUSxjQUFjO0FBQzVCLFFBQUksVUFBVSxnQkFBZ0IsV0FBVztBQUN6QyxRQUFJLE9BQU8sR0FBRztBQUNkLHVCQUFtQixLQUFLLEtBQUs7QUFDN0IsVUFBTSxXQUFXLGdCQUFnQixTQUFTLEtBQUs7QUFDL0MsVUFBTSxXQUFXO0FBQUEsTUFDZixnQkFBQUYsS0FBQyxnQkFBYSxPQUFPLFVBQVUsT0FBYztBQUFBLElBQy9DO0FBQ0EsVUFBTSxPQUFPO0FBQUEsRUFBb0IsUUFBUTtBQUN6QyxRQUFJLEtBQUssSUFBSTtBQUFBLEVBQ2Y7QUFHQSxNQUFJLElBQUksVUFBVTtBQUNoQixVQUFNLENBQUMsT0FBTyxXQUFXLElBQUksSUFBSSxTQUFTLFNBQVMsTUFBTTtBQUN6RCxRQUFJLE9BQU87QUFJVCxNQUFDLElBQVksa0JBQWtCLEVBQUMsT0FBTyxTQUFTLE1BQUs7QUFDckQsYUFBTyxJQUFJLFNBQVMsWUFBWSxLQUFLLEtBQUssZ0JBQWdCLE9BQU87QUFBQSxRQUMvRCxtQkFBbUI7QUFBQSxRQUNuQjtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGO0FBQ0EsU0FBTyxlQUFlO0FBQ3hCO0FBS0EsU0FBUyxnQkFBZ0IsT0FBOEI7QUFDckQsTUFBSSxDQUFDLE9BQU87QUFDVixXQUFPO0FBQUEsRUFDVDtBQUNBLE1BQUksVUFBVSw2Q0FBd0M7QUFDcEQsV0FBTztBQUFBLEVBQ1Q7QUFDQSxNQUFJLFVBQVUsMkNBQXVDO0FBQ25ELFdBQU87QUFBQSxFQUNUO0FBQ0EsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogWyJjcnlwdG8iLCAianN4IiwgIlBhc3N3b3JkUHJvdGVjdEVycm9yIiwgImlzVmFsaWQiXQp9Cg==
|
|
377
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3BsdWdpbi9wbHVnaW4udHN4IiwgIi4uL3NyYy9jb21wb25lbnRzL1Bhc3N3b3JkUGFnZS9QYXNzd29yZFBhZ2UuY3NzLnRzIiwgIi4uL3NyYy9jb21wb25lbnRzL1Bhc3N3b3JkUGFnZS9QYXNzd29yZFBhZ2UudHN4IiwgIi4uL3NyYy9jb3JlL2NzcC50cyIsICIuLi9zcmMvY29yZS9wYXNzd29yZC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtSZXF1ZXN0LCBSZXNwb25zZSwgTmV4dEZ1bmN0aW9uLCBQbHVnaW4sIFNlcnZlcn0gZnJvbSAnQGJsaW5ray9yb290JztcbmltcG9ydCB7cmVuZGVySnN4VG9TdHJpbmd9IGZyb20gJ0BibGlua2svcm9vdC9qc3gnO1xuaW1wb3J0IGJvZHlQYXJzZXIgZnJvbSAnYm9keS1wYXJzZXInO1xuaW1wb3J0IG1pY3JvbWF0Y2ggZnJvbSAnbWljcm9tYXRjaCc7XG5pbXBvcnQge1Bhc3N3b3JkUGFnZX0gZnJvbSAnLi4vY29tcG9uZW50cy9QYXNzd29yZFBhZ2UvUGFzc3dvcmRQYWdlLmpzJztcbmltcG9ydCB7Z2VuZXJhdGVOb25jZSwgc2V0U2VjdXJpdHlIZWFkZXJzfSBmcm9tICcuLi9jb3JlL2NzcC5qcyc7XG5pbXBvcnQge2hhc2hQYXNzd29yZCwgdmVyaWZ5UGFzc3dvcmR9IGZyb20gJy4uL2NvcmUvcGFzc3dvcmQuanMnO1xuXG5jb25zdCBTRVNTSU9OX0NPT0tJRV9IQVNIID0gJ3Bhc3N3b3JkX3Byb3RlY3QuaGFzaCc7XG5jb25zdCBTRVNTSU9OX0NPT0tJRV9TQUxUID0gJ3Bhc3N3b3JkX3Byb3RlY3Quc2FsdCc7XG5cbmV4cG9ydCBlbnVtIFBhc3N3b3JkUHJvdGVjdEVycm9yIHtcbiAgVU5LTk9XTiA9ICdVTktOT1dOJyxcbiAgUEFTU1dPUkRfUkVRVUlSRUQgPSAnUEFTU1dPUkRfUkVRVUlSRUQnLFxuICBQQVNTV09SRF9JTlZBTElEID0gJ1BBU1NXT1JEX0lOVkFMSUQnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhc3N3b3JkUHJvdGVjdGVkUm91dGUge1xuICAvKipcbiAgICogVVJMIGdsb2IgcGF0dGVybiB0byBtYXRjaCAocmVnZXggbm90IHN1cHBvcnRlZCB5ZXQpLlxuICAgKi9cbiAgc291cmNlOiBzdHJpbmc7XG5cbiAgcGFzc3dvcmQ6IHtcbiAgICAvKipcbiAgICAgKiBBIGhhc2ggb2YgdGhlIHBhc3N3b3JkLiBOb3RlOiBhIHBsYWluLXRleHQgcGFzc3dvcmQgc2hvdWxkIG5ldmVyIGJlXG4gICAgICogc3RvcmVkIGluIGNvZGUuIENvbnNpZGVyIHN0b3JpbmcgdGhpcyB2YWx1ZSBpbiBhIGAuZW52YCBmaWxlIGZvciBleHRyYVxuICAgICAqIHNlY3VyaXR5LlxuICAgICAqXG4gICAgICogR2VuZXJhdGUgdGhpcyBieSBydW5uaW5nOlxuICAgICAqIGBgYFxuICAgICAqIHJvb3QtcGFzc3dvcmQtcHJvdGVjdCBnZW5lcmF0ZS1oYXNoIFwiTVlfUEFTU1dPUkRcIlxuICAgICAqIGBgYGBcbiAgICAgKi9cbiAgICBoYXNoOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBBIHJhbmRvbSBzdHJpbmcgdXNlZCB0byBnZW5lcmF0ZSB0aGUgcGFzc3dvcmQgaGFzaC5cbiAgICAgKlxuICAgICAqIEdlbmVyYXRlIHRoaXMgYnkgcnVubmluZzpcbiAgICAgKiBgYGBcbiAgICAgKiByb290LXBhc3N3b3JkLXByb3RlY3QgZ2VuZXJhdGUtaGFzaCBcIk1ZX1BBU1NXT1JEXCJcbiAgICAgKiBgYGBgXG4gICAgICovXG4gICAgc2FsdDogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhc3N3b3JkUHJvdGVjdFBsdWdpbk9wdGlvbnMge1xuICBwcm90ZWN0ZWRSb3V0ZXM6IFBhc3N3b3JkUHJvdGVjdGVkUm91dGVbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhc3N3b3JkUHJvdGVjdFBsdWdpbihcbiAgb3B0aW9uczogUGFzc3dvcmRQcm90ZWN0UGx1Z2luT3B0aW9uc1xuKTogUGx1Z2luIHtcbiAgY29uc3QgcHJvdGVjdGVkUm91dGVzVXNlckNvbmZpZyA9IG9wdGlvbnMucHJvdGVjdGVkUm91dGVzIHx8IFtdO1xuICBjb25zdCBwcm90ZWN0ZWRSb3V0ZXMgPSBwcm90ZWN0ZWRSb3V0ZXNVc2VyQ29uZmlnLmZpbHRlcigocHJvdGVjdGVkUm91dGUpID0+IHtcbiAgICByZXR1cm4gQm9vbGVhbihcbiAgICAgIHByb3RlY3RlZFJvdXRlLnNvdXJjZSAmJlxuICAgICAgcHJvdGVjdGVkUm91dGUucGFzc3dvcmQgJiZcbiAgICAgIHByb3RlY3RlZFJvdXRlLnBhc3N3b3JkLmhhc2ggJiZcbiAgICAgIHByb3RlY3RlZFJvdXRlLnBhc3N3b3JkLnNhbHRcbiAgICApO1xuICB9KTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZmlyc3QgcGFzc3dvcmQtcHJvdGVjdGVkIHJvdXRlIHRoYXQgbWF0Y2hlcy5cbiAgICovXG4gIGZ1bmN0aW9uIGdldFByb3RlY3RlZFJvdXRlQ29uZmlnKFxuICAgIHJlcTogUmVxdWVzdFxuICApOiBQYXNzd29yZFByb3RlY3RlZFJvdXRlIHwgbnVsbCB7XG4gICAgZm9yIChjb25zdCBwcm90ZWN0ZWRSb3V0ZSBvZiBwcm90ZWN0ZWRSb3V0ZXMpIHtcbiAgICAgIGlmIChtaWNyb21hdGNoLmlzTWF0Y2gocmVxLnBhdGgsIHByb3RlY3RlZFJvdXRlLnNvdXJjZSkpIHtcbiAgICAgICAgcmV0dXJuIHByb3RlY3RlZFJvdXRlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3Jvb3QtcGFzc3dvcmQtcHJvdGVjdCcsXG4gICAgY29uZmlndXJlU2VydmVyOiAoc2VydmVyOiBTZXJ2ZXIpID0+IHtcbiAgICAgIGlmIChwcm90ZWN0ZWRSb3V0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHNlcnZlci51c2UoYm9keVBhcnNlci51cmxlbmNvZGVkKHtleHRlbmRlZDogdHJ1ZX0pKTtcbiAgICAgIHNlcnZlci51c2UoYXN5bmMgKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb3RlY3RlZFJvdXRlID0gZ2V0UHJvdGVjdGVkUm91dGVDb25maWcocmVxKTtcbiAgICAgICAgaWYgKHByb3RlY3RlZFJvdXRlKSB7XG4gICAgICAgICAgYXdhaXQgaGFuZGxlUHJvdGVjdGVkUm91dGUocHJvdGVjdGVkUm91dGUsIHJlcSwgcmVzLCBuZXh0KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbmV4dCgpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlUHJvdGVjdGVkUm91dGUoXG4gIHByb3RlY3RlZFJvdXRlOiBQYXNzd29yZFByb3RlY3RlZFJvdXRlLFxuICByZXE6IFJlcXVlc3QsXG4gIHJlczogUmVzcG9uc2UsXG4gIG5leHQ6IE5leHRGdW5jdGlvblxuKSB7XG4gIGlmIChyZXEubWV0aG9kID09PSAnUE9TVCcpIHtcbiAgICAvLyBWZXJpZnkgcGFzc3dvcmQgYW5kIGlmIHZhbGlkIHNldCBhIHNlc3Npb24gY29va2llLlxuICAgIGlmIChcbiAgICAgIHJlcS5nZXQoJ2NvbnRlbnQtdHlwZScpICE9PSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyB8fFxuICAgICAgIXJlcS5ib2R5IHx8XG4gICAgICAhcmVxLmJvZHkucGFzc3dvcmRcbiAgICApIHtcbiAgICAgIHJlcy5zdGF0dXMoNDAwKTtcbiAgICAgIHJldHVybiByZW5kZXJQYXNzd29yZFBhZ2UocmVxLCByZXMsIHtcbiAgICAgICAgZXJyb3I6IFBhc3N3b3JkUHJvdGVjdEVycm9yLlBBU1NXT1JEX1JFUVVJUkVELFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFzc3dvcmQgPSByZXEuYm9keS5wYXNzd29yZCBhcyBzdHJpbmc7XG4gICAgY29uc3QgaXNWYWxpZCA9IGF3YWl0IHZlcmlmeVBhc3N3b3JkKFxuICAgICAgcGFzc3dvcmQsXG4gICAgICBwcm90ZWN0ZWRSb3V0ZS5wYXNzd29yZC5oYXNoLFxuICAgICAgcHJvdGVjdGVkUm91dGUucGFzc3dvcmQuc2FsdFxuICAgICk7XG4gICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICByZXR1cm4gcmVuZGVyUGFzc3dvcmRQYWdlKHJlcSwgcmVzLCB7XG4gICAgICAgIGVycm9yOiBQYXNzd29yZFByb3RlY3RFcnJvci5QQVNTV09SRF9JTlZBTElELFxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIFNldCBhIHNlc3Npb24gY29va2llIHZhbHVlIHRvIHZlcmlmeSBzdWJzZXF1ZW50IHJlcXVlc3RzLlxuICAgIGF3YWl0IHNldFNlc3Npb25Db29raWUocHJvdGVjdGVkUm91dGUsIHJlcyk7XG4gICAgcmV0dXJuIG5leHQoKTtcbiAgfVxuXG4gIC8vIElmIHByZXZpb3VzbHkgbG9nZ2VkIGluLCBjaGVjayB0aGUgc2Vzc2lvbiBjb29raWUgYWdhaW5zdCB0aGUgY3VycmVudFxuICAvLyBwYXNzd29yZCBoYXNoLlxuICBjb25zdCBpc1ZhbGlkID0gYXdhaXQgdmVyaWZ5U2Vzc2lvbkNvb2tpZShwcm90ZWN0ZWRSb3V0ZSwgcmVxKTtcbiAgaWYgKGlzVmFsaWQpIHtcbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgcmV0dXJuIHJlbmRlclBhc3N3b3JkUGFnZShyZXEsIHJlcyk7XG59XG5cbi8qKlxuICogU2F2ZXMgYSB2ZXJpZmljYXRpb24gdG9rZW4gdG8gdGhlIHNlc3Npb24gY29va2llIGZvciBzdWJzZXF1ZW50IHJlcXVlc3RzLlxuICovXG5hc3luYyBmdW5jdGlvbiBzZXRTZXNzaW9uQ29va2llKFxuICBwcm90ZWN0ZWRSb3V0ZTogUGFzc3dvcmRQcm90ZWN0ZWRSb3V0ZSxcbiAgcmVzOiBSZXNwb25zZVxuKSB7XG4gIGNvbnN0IHtoYXNoLCBzYWx0fSA9IGF3YWl0IGhhc2hQYXNzd29yZChwcm90ZWN0ZWRSb3V0ZS5wYXNzd29yZC5oYXNoKTtcbiAgcmVzLnNlc3Npb24uc2V0SXRlbShTRVNTSU9OX0NPT0tJRV9IQVNILCBoYXNoKTtcbiAgcmVzLnNlc3Npb24uc2V0SXRlbShTRVNTSU9OX0NPT0tJRV9TQUxULCBzYWx0KTtcbiAgcmVzLnNhdmVTZXNzaW9uKCk7XG59XG5cbi8qKlxuICogVmVyaWZpZXMgdGhlIHNlc3Npb24gY29va2llIHZhbHVlIGlzIHZhbGlkLlxuICovXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlTZXNzaW9uQ29va2llKFxuICBwcm90ZWN0ZWRSb3V0ZTogUGFzc3dvcmRQcm90ZWN0ZWRSb3V0ZSxcbiAgcmVxOiBSZXF1ZXN0XG4pIHtcbiAgY29uc3QgaGFzaCA9IHJlcS5zZXNzaW9uLmdldEl0ZW0oU0VTU0lPTl9DT09LSUVfSEFTSCk7XG4gIGNvbnN0IHNhbHQgPSByZXEuc2Vzc2lvbi5nZXRJdGVtKFNFU1NJT05fQ09PS0lFX1NBTFQpO1xuICBpZiAoIWhhc2ggfHwgIXNhbHQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHZlcmlmeVBhc3N3b3JkKHByb3RlY3RlZFJvdXRlLnBhc3N3b3JkLmhhc2gsIGhhc2gsIHNhbHQpO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgdGhlIGxvZ2luIHBhZ2UgdG8gYSByZXNwb25zZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlclBhc3N3b3JkUGFnZShcbiAgcmVxOiBSZXF1ZXN0LFxuICByZXM6IFJlc3BvbnNlLFxuICBvcHRpb25zPzoge2Vycm9yPzogUGFzc3dvcmRQcm90ZWN0RXJyb3J9XG4pIHtcbiAgLy8gSWYgdGhlcmUncyBubyBgLzQwMWAgcm91dGUsIGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBwYXNzd29yZCBwYWdlLlxuICBjb25zdCBkZWZhdWx0SGFuZGxlciA9ICgpID0+IHtcbiAgICBjb25zdCBub25jZSA9IGdlbmVyYXRlTm9uY2UoKTtcbiAgICByZXMuc2V0SGVhZGVyKCdjb250ZW50LXR5cGUnLCAndGV4dC9odG1sJyk7XG4gICAgcmVzLnN0YXR1cyg0MDEpO1xuICAgIHNldFNlY3VyaXR5SGVhZGVycyhyZXMsIG5vbmNlKTtcbiAgICBjb25zdCBlcnJvck1zZyA9IGdldEVycm9yTWVzc2FnZShvcHRpb25zPy5lcnJvcik7XG4gICAgY29uc3QgbWFpbkh0bWwgPSByZW5kZXJKc3hUb1N0cmluZyhcbiAgICAgIDxQYXNzd29yZFBhZ2UgZXJyb3I9e2Vycm9yTXNnfSBub25jZT17bm9uY2V9IC8+XG4gICAgKTtcbiAgICBjb25zdCBodG1sID0gYDwhZG9jdHlwZSBodG1sPlxcbiR7bWFpbkh0bWx9YDtcbiAgICByZXMuc2VuZChodG1sKTtcbiAgfTtcblxuICAvLyBJZiB0aGUgYXBwIGRlZmluZXMgYHJvdXRlcy80MDEudHN4YCwgcmVuZGVyIHRoYXQgcGFnZS5cbiAgaWYgKHJlcS5yZW5kZXJlcikge1xuICAgIGNvbnN0IFtyb3V0ZSwgcm91dGVQYXJhbXNdID0gcmVxLnJlbmRlcmVyLmdldFJvdXRlKCcvNDAxJyk7XG4gICAgaWYgKHJvdXRlKSB7XG4gICAgICAvLyBBZGQgdGhlIGVycm9yIHR5cGUgdG8gdGhlIHJlcSBvYmplY3QuIFJvdXRlcyB0aGF0IGRlZmluZSBhIGBoYW5kbGUoKWBcbiAgICAgIC8vIG1ldGhvZCBzaG91bGQgYmUgYWJsZSB0byByZWFkIGZyb20gaXQgdG8gY29uc3RydWN0IGFuIGFwcHJvcHJpYXRlXG4gICAgICAvLyBlcnJvciBtZXNzYWdlIGZvciB0aGUgcGFnZS5cbiAgICAgIChyZXEgYXMgYW55KS5wYXNzd29yZFByb3RlY3QgPSB7ZXJyb3I6IG9wdGlvbnM/LmVycm9yfTtcbiAgICAgIHJldHVybiByZXEucmVuZGVyZXIuaGFuZGxlUm91dGUocmVxLCByZXMsIGRlZmF1bHRIYW5kbGVyLCByb3V0ZSwge1xuICAgICAgICBkZWZhdWx0U3RhdHVzQ29kZTogNDAxLFxuICAgICAgICByb3V0ZVBhcmFtczogcm91dGVQYXJhbXMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRIYW5kbGVyKCk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBgUGFzc3dvcmRQcm90ZWN0RXJyb3JgIHRvIGEgdXNlci1mcmllbmRseSBlcnJvciBtZXNzYWdlLlxuICovXG5mdW5jdGlvbiBnZXRFcnJvck1lc3NhZ2UoZXJyb3I/OiBQYXNzd29yZFByb3RlY3RFcnJvcikge1xuICBpZiAoIWVycm9yKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoZXJyb3IgPT09IFBhc3N3b3JkUHJvdGVjdEVycm9yLlBBU1NXT1JEX1JFUVVJUkVEKSB7XG4gICAgcmV0dXJuICdCYWQgcmVxdWVzdCAobm8gcGFzc3dvcmQpLic7XG4gIH1cbiAgaWYgKGVycm9yID09PSBQYXNzd29yZFByb3RlY3RFcnJvci5QQVNTV09SRF9JTlZBTElEKSB7XG4gICAgcmV0dXJuICdJbmNvcnJlY3QgcGFzc3dvcmQuJztcbiAgfVxuICByZXR1cm4gJ1Vua25vd24gZXJyb3IuJztcbn1cbiIsICJleHBvcnQgY29uc3QgQ1NTID0gYFxuLnNpZ25pbiB7XG4gIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzeXN0ZW0tdWksIHNhbnMtc2VyaWY7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZzogNDhweCAyMHB4O1xuICBjb2xvcjogIzNjNDA0Mztcbn1cblxuLnNpZ25pbl9faGVhZGxpbmUge1xuICBtYXJnaW4tYm90dG9tOiA0MHB4O1xufVxuXG4uc2lnbmluX19oZWFkbGluZV9faWNvbiB7XG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XG59XG5cbi5zaWduaW5fX2hlYWRsaW5lX19pY29uIHN2ZyB7XG4gIHdpZHRoOiA3MnB4O1xuICBoZWlnaHQ6IDcycHg7XG59XG5cbi5zaWduaW5fX2hlYWRsaW5lX190aXRsZSB7XG4gIGZvbnQtc2l6ZTogMzZweDtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cblxuLnNpZ25pbl9faGVhZGxpbmVfX2JvZHkge1xuICBmb250LXNpemU6IDE4cHg7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi5zaWduaW5fX2Zvcm0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDhweDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5zaWduaW5fX2Zvcm1fX3Bhc3N3b3JkIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RhZGNlMDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBsZXR0ZXItc3BhY2luZzogLjI1cHg7XG4gIHBhZGRpbmc6IDAgMTJweDtcbiAgbWluLXdpZHRoOiAyNTBweDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMjE4cyBlYXNlO1xufVxuXG4uc2lnbmluX19mb3JtX19wYXNzd29yZDpmb2N1cyB7XG4gIGJvcmRlci1jb2xvcjogI2QyZTNmYztcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg2NiwgMTMzLCAyNDQsIDAuMDQpO1xufVxuXG4uc2lnbmluX19idXR0b24ge1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZ2FwOiAxMnB4O1xuICBwYWRkaW5nOiA4cHggMTFweDtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkYWRjZTA7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgcGFkZGluZzogMCAxMnB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHRyYW5zaXRpb246IGFsbCAwLjIxOHMgZWFzZTtcbn1cblxuLnNpZ25pbl9fYnV0dG9uOmhvdmVyIHtcbiAgYm9yZGVyLWNvbG9yOiAjZDJlM2ZjO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDY2LCAxMzMsIDI0NCwgMC4wNCk7XG59XG5cbi5zaWduaW5fX2J1dHRvbl9faWNvbiB7XG4gIHdpZHRoOiAxOHB4O1xuICBoZWlnaHQ6IDE4cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuXG4uc2lnbmluX19idXR0b25fX2xhYmVsIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMTtcbiAgbGV0dGVyLXNwYWNpbmc6IC4yNXB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogIzNjNDA0Mztcbn1cblxuLnNpZ25pbl9fZXJyb3Ige1xuICBjb2xvcjogcmVkO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXgtd2lkdGg6IDYwY2g7XG4gIG1hcmdpbjogMjBweCBhdXRvIDA7XG59XG5gO1xuIiwgImltcG9ydCB7Q1NTfSBmcm9tICcuL1Bhc3N3b3JkUGFnZS5jc3MuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhc3N3b3JkUGFnZVByb3BzIHtcbiAgbm9uY2U6IHN0cmluZztcbiAgZXJyb3I/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBQYXNzd29yZFBhZ2UocHJvcHM6IFBhc3N3b3JkUGFnZVByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGh0bWwgbGFuZz1cImVuXCI+XG4gICAgICA8aGVhZD5cbiAgICAgICAgPG1ldGEgY2hhcnNldD1cInV0Zi04XCIgLz5cbiAgICAgICAgPHRpdGxlPlByb3RlY3RlZDwvdGl0bGU+XG4gICAgICAgIDxsaW5rXG4gICAgICAgICAgcmVsPVwiaWNvblwiXG4gICAgICAgICAgaHJlZj1cImh0dHBzOi8vbGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS9paks1MFRmUWxWX3lKdzNpLUNNbG5ENm9zSDRQYm9aQklMWnJKY1dob05NRW1veUNENWUxYkF4WGJhT1BlNXc0Z0dfU2NmMzdFWHJtWjZwOHNQMmx1ZTVmTFo0MTltNUp5TE1zPWUzODUtdzI1NlwiXG4gICAgICAgICAgdHlwZT1cImltYWdlL3BuZ1wiXG4gICAgICAgIC8+XG4gICAgICAgIDxsaW5rXG4gICAgICAgICAgaHJlZj1cImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9SW50ZXI6d2dodEA0MDA7NTAwOzYwMDs3MDA7OTAwXCJcbiAgICAgICAgICByZWw9XCJzdHlsZXNoZWV0XCJcbiAgICAgICAgICBub25jZT17cHJvcHMubm9uY2V9XG4gICAgICAgIC8+XG4gICAgICAgIDxzdHlsZSBub25jZT17cHJvcHMubm9uY2V9PntDU1N9PC9zdHlsZT5cbiAgICAgIDwvaGVhZD5cbiAgICAgIDxib2R5PlxuICAgICAgICA8ZGl2IGlkPVwicm9vdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2lnbmluXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNpZ25pbl9faGVhZGxpbmVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzaWduaW5fX2hlYWRsaW5lX19pY29uXCI+XG4gICAgICAgICAgICAgICAgPFNoaWVsZEljb24gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxoMT5UaGlzIHBhZ2UgaXMgcHJvdGVjdGVkLjwvaDE+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInNpZ25pbl9faGVhZGxpbmVfX2JvZHlcIj5cbiAgICAgICAgICAgICAgICBFbnRlciB0aGUgcGFzc3dvcmQgYmVsb3cgdG8gY29udGludWU6XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGZvcm0gY2xhc3NOYW1lPVwic2lnbmluX19mb3JtXCIgbWV0aG9kPVwiUE9TVFwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBpZD1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzaWduaW5fX2Zvcm1fX3Bhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgYXV0b0ZvY3VzPXt0cnVlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInNpZ25pbl9fYnV0dG9uXCIgdHlwZT1cInN1Ym1pdFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2lnbmluX19idXR0b25fX2xhYmVsXCI+U3VibWl0PC9kaXY+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAge3Byb3BzLmVycm9yICYmIDxwIGNsYXNzTmFtZT1cInNpZ25pbl9fZXJyb3JcIj57cHJvcHMuZXJyb3J9PC9wPn1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2JvZHk+XG4gICAgPC9odG1sPlxuICApO1xufVxuXG5mdW5jdGlvbiBTaGllbGRJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgd2lkdGg9XCIzNlwiXG4gICAgICBoZWlnaHQ9XCIzNlwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICBzdHJva2U9XCIjZmY0NTAwXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgID5cbiAgICAgIDxwYXRoIHN0cm9rZT1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTEuOTk4IDJsLjExOCAuMDA3bC4wNTkgLjAwOGwuMDYxIC4wMTNsLjExMSAuMDM0YS45OTMgLjk5MyAwIDAgMSAuMjE3IC4xMTJsLjEwNCAuMDgybC4yNTUgLjIxOGExMSAxMSAwIDAgMCA3LjE4OSAyLjUzN2wuMzQyIC0uMDFhMSAxIDAgMCAxIDEuMDA1IC43MTdhMTMgMTMgMCAwIDEgLTkuMjA4IDE2LjI1YTEgMSAwIDAgMSAtLjUwMiAwYTEzIDEzIDAgMCAxIC05LjIwOSAtMTYuMjVhMSAxIDAgMCAxIDEuMDA1IC0uNzE3YTExIDExIDAgMCAwIDcuNTMxIC0yLjUyN2wuMjYzIC0uMjI1bC4wOTYgLS4wNzVhLjk5MyAuOTkzIDAgMCAxIC4yMTcgLS4xMTJsLjExMiAtLjAzNGEuOTcgLjk3IDAgMCAxIC4xMTkgLS4wMjFsLjExNSAtLjAwN3ptLjAwMiA3YTIgMiAwIDAgMCAtMS45OTUgMS44NWwtLjAwNSAuMTVsLjAwNSAuMTVhMiAyIDAgMCAwIC45OTUgMS41ODF2MS43NjlsLjAwNyAuMTE3YTEgMSAwIDAgMCAxLjk5MyAtLjExN2wuMDAxIC0xLjc2OGEyIDIgMCAwIDAgLTEuMDAxIC0zLjczMnpcIlxuICAgICAgICBzdHJva2Utd2lkdGg9XCIwXCJcbiAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIiwgImltcG9ydCBjcnlwdG8gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0IHtSZXNwb25zZX0gZnJvbSAnQGJsaW5ray9yb290JztcblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlTm9uY2UoKSB7XG4gIHJldHVybiBjcnlwdG8ucmFuZG9tQnl0ZXMoMTYpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFNlY3VyaXR5SGVhZGVycyhyZXM6IFJlc3BvbnNlLCBub25jZTogc3RyaW5nKSB7XG4gIHJlcy5zZXRIZWFkZXIoJ3gtZnJhbWUtb3B0aW9ucycsICdTQU1FT1JJR0lOJyk7XG4gIHJlcy5zZXRIZWFkZXIoXG4gICAgJ3N0cmljdC10cmFuc3BvcnQtc2VjdXJpdHknLFxuICAgICdtYXgtYWdlPTYzMDcyMDAwOyBpbmNsdWRlU3ViZG9tYWluczsgcHJlbG9hZCdcbiAgKTtcbiAgcmVzLnNldEhlYWRlcigneC1jb250ZW50LXR5cGUtb3B0aW9ucycsICdub3NuaWZmJyk7XG4gIHJlcy5zZXRIZWFkZXIoJ3gteHNzLXByb3RlY3Rpb24nLCAnMTsgbW9kZT1ibG9jaycpO1xuXG4gIC8vIGh0dHBzOi8vY3NwLndpdGhnb29nbGUuY29tL2RvY3Mvc3RyaWN0LWNzcC5odG1sXG4gIGNvbnN0IGRpcmVjdGl2ZXMgPSBbXG4gICAgXCJiYXNlLXVyaSAnbm9uZSdcIixcbiAgICBcIm9iamVjdC1zcmMgJ25vbmUnXCIsXG4gICAgYHNjcmlwdC1zcmMgJ25vbmNlLSR7bm9uY2V9JyAndW5zYWZlLWlubGluZScgJ3Vuc2FmZS1ldmFsJyAnc3RyaWN0LWR5bmFtaWMnIGh0dHBzOiBodHRwOmAsXG4gIF07XG4gIHJlcy5zZXRIZWFkZXIoJ2NvbnRlbnQtc2VjdXJpdHktcG9saWN5LXJlcG9ydC1vbmx5JywgZGlyZWN0aXZlcy5qb2luKCc7JykpO1xufVxuIiwgImltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcblxuY29uc3QgUEFTU1dPUkRfSVRFUkFUSU9OUyA9IDEwMDAwO1xuY29uc3QgUEFTU1dPUkRfSEFTSF9MRU5HVEggPSA2NDtcbmNvbnN0IFBBU1NXT1JEX0RJR0VTVCA9ICdzaGEyNTYnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFzaFBhc3N3b3JkKFxuICBwYXNzd29yZDogc3RyaW5nXG4pOiBQcm9taXNlPHtoYXNoOiBzdHJpbmc7IHNhbHQ6IHN0cmluZ30+IHtcbiAgY29uc3Qgc2FsdCA9IGNyeXB0by5yYW5kb21CeXRlcygxNikudG9TdHJpbmcoJ2hleCcpO1xuICBjb25zdCBoYXNoID0gYXdhaXQgZ2VuZXJhdGVIYXNoKHBhc3N3b3JkLCBzYWx0KTtcbiAgcmV0dXJuIHtoYXNoLCBzYWx0fTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZlcmlmeVBhc3N3b3JkKFxuICBwYXNzd29yZDogc3RyaW5nLFxuICBoYXNoOiBzdHJpbmcsXG4gIHNhbHQ6IHN0cmluZ1xuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IGdlbmVyYXRlZEhhc2ggPSBhd2FpdCBnZW5lcmF0ZUhhc2gocGFzc3dvcmQsIHNhbHQpO1xuICByZXR1cm4gaGFzaCA9PT0gZ2VuZXJhdGVkSGFzaDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlSGFzaChwYXNzd29yZDogc3RyaW5nLCBzYWx0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNyeXB0by5wYmtkZjIoXG4gICAgICBwYXNzd29yZCxcbiAgICAgIHNhbHQsXG4gICAgICBQQVNTV09SRF9JVEVSQVRJT05TLFxuICAgICAgUEFTU1dPUkRfSEFTSF9MRU5HVEgsXG4gICAgICBQQVNTV09SRF9ESUdFU1QsXG4gICAgICAoZXJyLCBkZXJpdmVkS2V5KSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdwYXNzd29yZCBoYXNoaW5nIGZhaWxlZCcpO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGFzaCA9IGRlcml2ZWRLZXkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgICByZXNvbHZlKGhhc2gpO1xuICAgICAgfVxuICAgICk7XG4gIH0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUNBLFNBQVEseUJBQXdCO0FBQ2hDLE9BQU8sZ0JBQWdCO0FBQ3ZCLE9BQU8sZ0JBQWdCOzs7QUNIaEIsSUFBTSxNQUFNO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7OztBQ1ViLFNBQ0UsS0FERjtBQUhDLFNBQVMsYUFBYSxPQUEwQjtBQUNyRCxTQUNFLHFCQUFDLFVBQUssTUFBSyxNQUNUO0FBQUEseUJBQUMsVUFDQztBQUFBLDBCQUFDLFVBQUssU0FBUSxTQUFRO0FBQUEsTUFDdEIsb0JBQUMsV0FBTSx1QkFB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QUFDQSxRQUFNLEVBQUMsTUFBTSxLQUFJLElBQUksTUFBTSxhQUFhLGVBQWUsU0FBUyxJQUFJO0FBQ3BFLE1BQUksUUFBUSxRQUFRLHFCQUFxQixJQUFJO0FBQzdDLE1BQUksUUFBUSxRQUFRLHFCQUFxQixJQUFJO0FBQzdDLE1BQUksWUFBWTtBQUNsQjtBQUtBLGVBQWUsb0JBQ2IsZ0JBQ0EsS0FDQTtBQUNBLFFBQU0sT0FBTyxJQUFJLFFBQVEsUUFBUSxtQkFBbUI7QUFDcEQsUUFBTSxPQUFPLElBQUksUUFBUSxRQUFRLG1CQUFtQjtBQUNwRCxNQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07QUFDbEIsV0FBTztBQUFBLEVBQ1Q7QUFDQSxTQUFPLE1BQU0sZUFBZSxlQUFlLFNBQVMsTUFBTSxNQUFNLElBQUk7QUFDdEU7QUFLQSxlQUFzQixtQkFDcEIsS0FDQSxLQUNBLFNBQ0E7QUFFQSxRQUFNLGlCQUFpQixNQUFNO0FBQzNCLFVBQU0sUUFBUSxjQUFjO0FBQzVCLFFBQUksVUFBVSxnQkFBZ0IsV0FBVztBQUN6QyxRQUFJLE9BQU8sR0FBRztBQUNkLHVCQUFtQixLQUFLLEtBQUs7QUFDN0IsVUFBTSxXQUFXLGdCQUFnQixTQUFTLEtBQUs7QUFDL0MsVUFBTSxXQUFXO0FBQUEsTUFDZixnQkFBQUYsS0FBQyxnQkFBYSxPQUFPLFVBQVUsT0FBYztBQUFBLElBQy9DO0FBQ0EsVUFBTSxPQUFPO0FBQUEsRUFBb0IsUUFBUTtBQUN6QyxRQUFJLEtBQUssSUFBSTtBQUFBLEVBQ2Y7QUFHQSxNQUFJLElBQUksVUFBVTtBQUNoQixVQUFNLENBQUMsT0FBTyxXQUFXLElBQUksSUFBSSxTQUFTLFNBQVMsTUFBTTtBQUN6RCxRQUFJLE9BQU87QUFJVCxNQUFDLElBQVksa0JBQWtCLEVBQUMsT0FBTyxTQUFTLE1BQUs7QUFDckQsYUFBTyxJQUFJLFNBQVMsWUFBWSxLQUFLLEtBQUssZ0JBQWdCLE9BQU87QUFBQSxRQUMvRCxtQkFBbUI7QUFBQSxRQUNuQjtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGO0FBQ0EsU0FBTyxlQUFlO0FBQ3hCO0FBS0EsU0FBUyxnQkFBZ0IsT0FBOEI7QUFDckQsTUFBSSxDQUFDLE9BQU87QUFDVixXQUFPO0FBQUEsRUFDVDtBQUNBLE1BQUksVUFBVSw2Q0FBd0M7QUFDcEQsV0FBTztBQUFBLEVBQ1Q7QUFDQSxNQUFJLFVBQVUsMkNBQXVDO0FBQ25ELFdBQU87QUFBQSxFQUNUO0FBQ0EsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogWyJjcnlwdG8iLCAianN4IiwgIlBhc3N3b3JkUHJvdGVjdEVycm9yIiwgImlzVmFsaWQiXQp9Cg==
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blinkk/root-password-protect",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.4",
|
|
4
4
|
"author": "s@blinkk.com",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"engines": {
|
|
7
|
-
"node": ">=
|
|
7
|
+
"node": ">=22.0.0"
|
|
8
8
|
},
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
@@ -19,14 +19,14 @@
|
|
|
19
19
|
},
|
|
20
20
|
"type": "module",
|
|
21
21
|
"module": "./dist/core.js",
|
|
22
|
-
"types": "./dist/core.d.ts",
|
|
22
|
+
"types": "./dist/core/core.d.ts",
|
|
23
23
|
"exports": {
|
|
24
24
|
".": {
|
|
25
|
-
"types": "./dist/core.d.ts",
|
|
25
|
+
"types": "./dist/core/core.d.ts",
|
|
26
26
|
"import": "./dist/core.js"
|
|
27
27
|
},
|
|
28
28
|
"./plugin": {
|
|
29
|
-
"types": "./dist/plugin.d.ts",
|
|
29
|
+
"types": "./dist/plugin/plugin.d.ts",
|
|
30
30
|
"import": "./dist/plugin.js"
|
|
31
31
|
}
|
|
32
32
|
},
|
|
@@ -37,19 +37,20 @@
|
|
|
37
37
|
"micromatch": "4.0.5"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
|
-
"@blinkk/root": "3.0.
|
|
40
|
+
"@blinkk/root": "3.0.4",
|
|
41
41
|
"preact": ">=10"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@types/body-parser": "1.19.3",
|
|
45
45
|
"@types/micromatch": "4.0.6",
|
|
46
|
-
"@types/node": "
|
|
46
|
+
"@types/node": "25.9.1",
|
|
47
|
+
"esbuild": "0.28.0",
|
|
47
48
|
"preact": "10.27.1",
|
|
48
|
-
"
|
|
49
|
-
"@blinkk/root": "3.0.
|
|
49
|
+
"typescript": "6.0.3",
|
|
50
|
+
"@blinkk/root": "3.0.4"
|
|
50
51
|
},
|
|
51
52
|
"scripts": {
|
|
52
|
-
"build": "
|
|
53
|
+
"build": "node ../../scripts/build-esbuild.mjs ./esbuild.config.json",
|
|
53
54
|
"dev": "pnpm build --watch",
|
|
54
55
|
"test": "pnpm build"
|
|
55
56
|
}
|
package/dist/core.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
declare function hashPassword(password: string): Promise<{
|
|
2
|
-
hash: string;
|
|
3
|
-
salt: string;
|
|
4
|
-
}>;
|
|
5
|
-
declare function verifyPassword(password: string, hash: string, salt: string): Promise<boolean>;
|
|
6
|
-
declare function generateHash(password: string, salt: string): Promise<string>;
|
|
7
|
-
|
|
8
|
-
export { generateHash, hashPassword, verifyPassword };
|