@decaf-ts/for-nest 0.11.2-refactor → 0.11.2-refactor.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/for-nest.cjs +157 -139
- package/dist/for-nest.js +166 -148
- package/lib/cjs/auth/AuthInterceptor.cjs +5 -3
- package/lib/cjs/auth/constants.cjs +4 -3
- package/lib/cjs/cli-module.cjs +19 -4
- package/lib/cjs/constants.cjs +3 -4
- package/lib/cjs/controllers.cjs +5 -9
- package/lib/cjs/decaf-model/DecafModelModule.cjs +7 -3
- package/lib/cjs/decaf-model/FromModelController.cjs +22 -5
- package/lib/cjs/decaf-model/decorators/decorators.cjs +4 -4
- package/lib/cjs/decaf-model/index.cjs +2 -2
- package/lib/cjs/index.cjs +3 -3
- package/lib/cjs/interceptors/DecafRequestHandlerInterceptor.cjs +2 -4
- package/lib/cjs/module.cjs +3 -2
- package/lib/esm/auth/AuthInterceptor.js +5 -3
- package/lib/esm/auth/constants.js +2 -1
- package/lib/esm/cli-module.js +18 -3
- package/lib/esm/constants.js +1 -2
- package/lib/esm/controllers.js +4 -8
- package/lib/esm/decaf-model/DecafModelModule.js +6 -2
- package/lib/esm/decaf-model/FromModelController.js +22 -5
- package/lib/esm/decaf-model/decorators/decorators.js +2 -2
- package/lib/esm/decaf-model/index.js +1 -1
- package/lib/esm/index.js +3 -3
- package/lib/esm/interceptors/DecafRequestHandlerInterceptor.js +1 -3
- package/lib/esm/module.js +2 -1
- package/lib/types/auth/constants.d.cts +1 -0
- package/lib/types/auth/constants.d.mts +1 -0
- package/lib/types/constants.d.cts +0 -1
- package/lib/types/constants.d.mts +0 -1
- package/lib/types/decaf-model/FromModelController.d.cts +1 -1
- package/lib/types/decaf-model/FromModelController.d.mts +1 -1
- package/lib/types/decaf-model/decorators/decorators.d.cts +1 -1
- package/lib/types/decaf-model/decorators/decorators.d.mts +1 -1
- package/lib/types/decaf-model/index.d.cts +1 -0
- package/lib/types/decaf-model/index.d.mts +1 -0
- package/lib/types/index.d.cts +3 -3
- package/lib/types/index.d.mts +3 -3
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Auth = void 0;
|
|
4
|
-
var
|
|
5
|
-
Object.defineProperty(exports, "Auth", { enumerable: true, get: function () { return
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
var decorators_js_1 = require("./../../auth/decorators.cjs");
|
|
5
|
+
Object.defineProperty(exports, "Auth", { enumerable: true, get: function () { return decorators_js_1.Auth; } });
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kZWNhZi1tb2RlbC9kZWNvcmF0b3JzL2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxtQ0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBBdXRoIH0gZnJvbSBcIi4uLy4uL2F1dGgvZGVjb3JhdG9yc1wiO1xuIl19
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRlY29yYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNERBQWtEO0FBQXpDLHFHQUFBLElBQUksT0FBQTtBQUNiLDBYQUEwWCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEF1dGggfSBmcm9tIFwiLi8uLi8uLi9hdXRoL2RlY29yYXRvcnMuanNcIjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpHVmpiM0poZEc5eWN5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwzTnlZeTlrWldOaFppMXRiMlJsYkM5a1pXTnZjbUYwYjNKekwyUmxZMjl5WVhSdmNuTXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhGUVVGRkxFbEJRVWtzUlVGQlJTeHRRMEZCT0VJaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SmxlSEJ2Y25RZ2V5QkJkWFJvSUgwZ1puSnZiU0JjSWk0dUx5NHVMMkYxZEdndlpHVmpiM0poZEc5eWMxd2lPMXh1SWwxOSJdfQ==
|
|
@@ -26,5 +26,5 @@ var DecafModelModule_js_1 = require("./DecafModelModule.cjs");
|
|
|
26
26
|
Object.defineProperty(exports, "getModuleFor", { enumerable: true, get: function () { return DecafModelModule_js_1.getModuleFor; } });
|
|
27
27
|
var FromModelController_js_1 = require("./FromModelController.cjs");
|
|
28
28
|
Object.defineProperty(exports, "FromModelController", { enumerable: true, get: function () { return FromModelController_js_1.FromModelController; } });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVjYWYtbW9kZWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHFCQUFxQixFQUNyQix5QkFBeUIsR0FDMUIsOENBQTJDO0FBQzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSwyQ0FBd0M7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxrQ0FBK0I7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxvQ0FBaUM7QUFFdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSwrQkFBNEI7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLDBDQUF1QztBQUNsRSxPQUFPLEVBQUUsSUFBSSxFQUFFLG1DQUFnQztBQUMvQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLHdCQUF3QixHQUN6QixtQkFBZ0I7QUFDakIsT0FBTyxFQUFFLFlBQVksRUFBRSw4QkFBMkI7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlDQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIEFwaU9wZXJhdGlvbkZyb21Nb2RlbCxcbiAgQnVsa0FwaU9wZXJhdGlvbkZyb21Nb2RlbCxcbn0gZnJvbSBcIi4vZGVjb3JhdG9ycy9BcGlPcGVyYXRpb25Gcm9tTW9kZWxcIjtcbmV4cG9ydCB7IEFwaVBhcmFtc0Zyb21Nb2RlbCB9IGZyb20gXCIuL2RlY29yYXRvcnMvQXBpUGFyYW1zRnJvbU1vZGVsXCI7XG5leHBvcnQgeyBEZWNhZkJvZHkgfSBmcm9tIFwiLi9kZWNvcmF0b3JzL0RlY2FmQm9keVwiO1xuZXhwb3J0IHsgRGVjYWZQYXJhbXMgfSBmcm9tIFwiLi9kZWNvcmF0b3JzL0RlY2FmUGFyYW1zXCI7XG5leHBvcnQgdHlwZSB7IERlY2FmUGFyYW1Qcm9wcyB9IGZyb20gXCIuL2RlY29yYXRvcnMvdHlwZXNcIjtcbmV4cG9ydCB7IGV4cG9zZSB9IGZyb20gXCIuL2RlY29yYXRvcnMvZXhwb3NlXCI7XG5leHBvcnQgeyBjb250cm9sbGVyQ29uZmlnIH0gZnJvbSBcIi4vZGVjb3JhdG9ycy9jb250cm9sbGVyLWNvbmZpZ1wiO1xuZXhwb3J0IHsgQXV0aCB9IGZyb20gXCIuL2RlY29yYXRvcnMvZGVjb3JhdG9yc1wiO1xuZXhwb3J0IHtcbiAgYXBwbHlBcGlEZWNvcmF0b3JzLFxuICBjcmVhdGVSb3V0ZUhhbmRsZXIsXG4gIGRlZmluZVJvdXRlTWV0aG9kLFxuICBnZXRBcGlEZWNvcmF0b3JzLFxuICByZXNvbHZlUGVyc2lzdGVuY2VNZXRob2QsXG59IGZyb20gXCIuL3V0aWxzXCI7XG5leHBvcnQgeyBnZXRNb2R1bGVGb3IgfSBmcm9tIFwiLi9EZWNhZk1vZGVsTW9kdWxlXCI7XG5leHBvcnQgeyBGcm9tTW9kZWxDb250cm9sbGVyIH0gZnJvbSBcIi4vRnJvbU1vZGVsQ29udHJvbGxlclwiO1xuIl19
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxrRkFBMEc7QUFBakcsaUlBQUEscUJBQXFCLE9BQUE7QUFBRSxxSUFBQSx5QkFBeUIsT0FBQTtBQUN6RCw0RUFBd0U7QUFBL0QsMkhBQUEsa0JBQWtCLE9BQUE7QUFDM0IsMERBQXNEO0FBQTdDLHlHQUFBLFNBQVMsT0FBQTtBQUNsQiw4REFBMEQ7QUFBakQsNkdBQUEsV0FBVyxPQUFBO0FBQ3BCLG9EQUFnRDtBQUF2QyxtR0FBQSxNQUFNLE9BQUE7QUFDZiwwRUFBcUU7QUFBNUQsd0hBQUEsZ0JBQWdCLE9BQUE7QUFDekIsNERBQWtEO0FBQXpDLHFHQUFBLElBQUksT0FBQTtBQUNiLHVDQUFvSTtBQUEzSCw4R0FBQSxrQkFBa0IsT0FBQTtBQUFFLDhHQUFBLGtCQUFrQixPQUFBO0FBQUUsNkdBQUEsaUJBQWlCLE9BQUE7QUFBRSw0R0FBQSxnQkFBZ0IsT0FBQTtBQUFFLG9IQUFBLHdCQUF3QixPQUFBO0FBQzlHLDZEQUFxRDtBQUE1QyxtSEFBQSxZQUFZLE9BQUE7QUFDckIsbUVBQStEO0FBQXRELDZIQUFBLG1CQUFtQixPQUFBO0FBQzVCLHN6REFBc3pEIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQXBpT3BlcmF0aW9uRnJvbU1vZGVsLCBCdWxrQXBpT3BlcmF0aW9uRnJvbU1vZGVsLCB9IGZyb20gXCIuL2RlY29yYXRvcnMvQXBpT3BlcmF0aW9uRnJvbU1vZGVsLmpzXCI7XG5leHBvcnQgeyBBcGlQYXJhbXNGcm9tTW9kZWwgfSBmcm9tIFwiLi9kZWNvcmF0b3JzL0FwaVBhcmFtc0Zyb21Nb2RlbC5qc1wiO1xuZXhwb3J0IHsgRGVjYWZCb2R5IH0gZnJvbSBcIi4vZGVjb3JhdG9ycy9EZWNhZkJvZHkuanNcIjtcbmV4cG9ydCB7IERlY2FmUGFyYW1zIH0gZnJvbSBcIi4vZGVjb3JhdG9ycy9EZWNhZlBhcmFtcy5qc1wiO1xuZXhwb3J0IHsgZXhwb3NlIH0gZnJvbSBcIi4vZGVjb3JhdG9ycy9leHBvc2UuanNcIjtcbmV4cG9ydCB7IGNvbnRyb2xsZXJDb25maWcgfSBmcm9tIFwiLi9kZWNvcmF0b3JzL2NvbnRyb2xsZXItY29uZmlnLmpzXCI7XG5leHBvcnQgeyBBdXRoIH0gZnJvbSBcIi4vZGVjb3JhdG9ycy9kZWNvcmF0b3JzLmpzXCI7XG5leHBvcnQgeyBhcHBseUFwaURlY29yYXRvcnMsIGNyZWF0ZVJvdXRlSGFuZGxlciwgZGVmaW5lUm91dGVNZXRob2QsIGdldEFwaURlY29yYXRvcnMsIHJlc29sdmVQZXJzaXN0ZW5jZU1ldGhvZCwgfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuZXhwb3J0IHsgZ2V0TW9kdWxlRm9yIH0gZnJvbSBcIi4vRGVjYWZNb2RlbE1vZHVsZS5qc1wiO1xuZXhwb3J0IHsgRnJvbU1vZGVsQ29udHJvbGxlciB9IGZyb20gXCIuL0Zyb21Nb2RlbENvbnRyb2xsZXIuanNcIjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFXNWtaWGd1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk4dUxpOXpjbU12WkdWallXWXRiVzlrWld3dmFXNWtaWGd1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRXNUMEZCVHl4RlFVTk1MSEZDUVVGeFFpeEZRVU55UWl4NVFrRkJlVUlzUjBGRE1VSXNPRU5CUVRKRE8wRkJRelZETEU5QlFVOHNSVUZCUlN4clFrRkJhMElzUlVGQlJTd3lRMEZCZDBNN1FVRkRja1VzVDBGQlR5eEZRVUZGTEZOQlFWTXNSVUZCUlN4clEwRkJLMEk3UVVGRGJrUXNUMEZCVHl4RlFVRkZMRmRCUVZjc1JVRkJSU3h2UTBGQmFVTTdRVUZGZGtRc1QwRkJUeXhGUVVGRkxFMUJRVTBzUlVGQlJTd3JRa0ZCTkVJN1FVRkROME1zVDBGQlR5eEZRVUZGTEdkQ1FVRm5RaXhGUVVGRkxEQkRRVUYxUXp0QlFVTnNSU3hQUVVGUExFVkJRVVVzU1VGQlNTeEZRVUZGTEcxRFFVRm5RenRCUVVNdlF5eFBRVUZQTEVWQlEwd3NhMEpCUVd0Q0xFVkJRMnhDTEd0Q1FVRnJRaXhGUVVOc1FpeHBRa0ZCYVVJc1JVRkRha0lzWjBKQlFXZENMRVZCUTJoQ0xIZENRVUYzUWl4SFFVTjZRaXh0UWtGQlowSTdRVUZEYWtJc1QwRkJUeXhGUVVGRkxGbEJRVmtzUlVGQlJTdzRRa0ZCTWtJN1FVRkRiRVFzVDBGQlR5eEZRVUZGTEcxQ1FVRnRRaXhGUVVGRkxHbERRVUU0UWlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltVjRjRzl5ZENCN1hHNGdJRUZ3YVU5d1pYSmhkR2x2YmtaeWIyMU5iMlJsYkN4Y2JpQWdRblZzYTBGd2FVOXdaWEpoZEdsdmJrWnliMjFOYjJSbGJDeGNibjBnWm5KdmJTQmNJaTR2WkdWamIzSmhkRzl5Y3k5QmNHbFBjR1Z5WVhScGIyNUdjbTl0VFc5a1pXeGNJanRjYm1WNGNHOXlkQ0I3SUVGd2FWQmhjbUZ0YzBaeWIyMU5iMlJsYkNCOUlHWnliMjBnWENJdUwyUmxZMjl5WVhSdmNuTXZRWEJwVUdGeVlXMXpSbkp2YlUxdlpHVnNYQ0k3WEc1bGVIQnZjblFnZXlCRVpXTmhaa0p2WkhrZ2ZTQm1jbTl0SUZ3aUxpOWtaV052Y21GMGIzSnpMMFJsWTJGbVFtOWtlVndpTzF4dVpYaHdiM0owSUhzZ1JHVmpZV1pRWVhKaGJYTWdmU0JtY205dElGd2lMaTlrWldOdmNtRjBiM0p6TDBSbFkyRm1VR0Z5WVcxelhDSTdYRzVsZUhCdmNuUWdkSGx3WlNCN0lFUmxZMkZtVUdGeVlXMVFjbTl3Y3lCOUlHWnliMjBnWENJdUwyUmxZMjl5WVhSdmNuTXZkSGx3WlhOY0lqdGNibVY0Y0c5eWRDQjdJR1Y0Y0c5elpTQjlJR1p5YjIwZ1hDSXVMMlJsWTI5eVlYUnZjbk12Wlhod2IzTmxYQ0k3WEc1bGVIQnZjblFnZXlCamIyNTBjbTlzYkdWeVEyOXVabWxuSUgwZ1puSnZiU0JjSWk0dlpHVmpiM0poZEc5eWN5OWpiMjUwY205c2JHVnlMV052Ym1acFoxd2lPMXh1Wlhod2IzSjBJSHNnUVhWMGFDQjlJR1p5YjIwZ1hDSXVMMlJsWTI5eVlYUnZjbk12WkdWamIzSmhkRzl5YzF3aU8xeHVaWGh3YjNKMElIdGNiaUFnWVhCd2JIbEJjR2xFWldOdmNtRjBiM0p6TEZ4dUlDQmpjbVZoZEdWU2IzVjBaVWhoYm1Sc1pYSXNYRzRnSUdSbFptbHVaVkp2ZFhSbFRXVjBhRzlrTEZ4dUlDQm5aWFJCY0dsRVpXTnZjbUYwYjNKekxGeHVJQ0J5WlhOdmJIWmxVR1Z5YzJsemRHVnVZMlZOWlhSb2IyUXNYRzU5SUdaeWIyMGdYQ0l1TDNWMGFXeHpYQ0k3WEc1bGVIQnZjblFnZXlCblpYUk5iMlIxYkdWR2IzSWdmU0JtY205dElGd2lMaTlFWldOaFprMXZaR1ZzVFc5a2RXeGxYQ0k3WEc1bGVIQnZjblFnZXlCR2NtOXRUVzlrWld4RGIyNTBjbTlzYkdWeUlIMGdabkp2YlNCY0lpNHZSbkp2YlUxdlpHVnNRMjl1ZEhKdmJHeGxjbHdpTzF4dUlsMTkiXX0=
|
package/lib/cjs/index.cjs
CHANGED
|
@@ -60,21 +60,21 @@ __exportStar(require("./events-module/index.cjs"), exports);
|
|
|
60
60
|
* @constant
|
|
61
61
|
* @type {string}
|
|
62
62
|
*/
|
|
63
|
-
exports.VERSION = "0.11.2";
|
|
63
|
+
exports.VERSION = "0.11.2-refactor.2";
|
|
64
64
|
/**
|
|
65
65
|
* @description Represents the current commit hash of the module build.
|
|
66
66
|
* @summary Stores the current git commit hash for the package. The build replaces
|
|
67
67
|
* the placeholder with the actual commit hash at publish time.
|
|
68
68
|
* @const COMMIT
|
|
69
69
|
*/
|
|
70
|
-
exports.COMMIT = "
|
|
70
|
+
exports.COMMIT = "85f1cec";
|
|
71
71
|
/**
|
|
72
72
|
* @description Represents the full version string of the module.
|
|
73
73
|
* @summary Stores the semver version and commit hash for the package.
|
|
74
74
|
* The build replaces the placeholder with the actual `<version>-<commit>` value at publish time.
|
|
75
75
|
* @const FULL_VERSION
|
|
76
76
|
*/
|
|
77
|
-
exports.FULL_VERSION = "0.11.2-
|
|
77
|
+
exports.FULL_VERSION = "0.11.2-refactor.2-85f1cec";
|
|
78
78
|
exports.PACKAGE_NAME = "@decaf-ts/for-nest";
|
|
79
79
|
decoration_1.Metadata.allowReregistration(true);
|
|
80
80
|
decoration_1.Metadata.registerLibrary(exports.PACKAGE_NAME, exports.VERSION);
|
|
@@ -19,7 +19,6 @@ var DecafRequestHandlerInterceptor_1;
|
|
|
19
19
|
const common_1 = require("@nestjs/common");
|
|
20
20
|
const index_js_1 = require("./../request/index.cjs");
|
|
21
21
|
const core_1 = require("@decaf-ts/core");
|
|
22
|
-
const constants_js_1 = require("./../constants.cjs");
|
|
23
22
|
require("./../overrides/index.cjs");
|
|
24
23
|
const logging_1 = require("@decaf-ts/logging");
|
|
25
24
|
/**
|
|
@@ -79,7 +78,6 @@ let DecafRequestHandlerInterceptor = DecafRequestHandlerInterceptor_1 = class De
|
|
|
79
78
|
headers: headers,
|
|
80
79
|
overrides: {},
|
|
81
80
|
};
|
|
82
|
-
Object.assign(flags.overrides, req?.[constants_js_1.DECAF_ADAPTER_OPTIONS] ?? {});
|
|
83
81
|
const ip = extractIp(req);
|
|
84
82
|
const logger = logging_1.Logging.get().for({ ip });
|
|
85
83
|
this.requestContext.accumulate(Object.assign({}, core_1.DefaultAdapterFlags, {
|
|
@@ -123,5 +121,5 @@ function extractIp(req) {
|
|
|
123
121
|
parseIpHeader(headers?.["X-Real-IP"]) ??
|
|
124
122
|
req.ip);
|
|
125
123
|
}
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjYWZSZXF1ZXN0SGFuZGxlckludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiRGVjYWZSZXF1ZXN0SGFuZGxlckludGVyY2VwdG9yLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQUksVUFBVSxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUk7SUFDakYsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3SCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLE9BQU8sQ0FBQyxRQUFRLEtBQUssVUFBVTtRQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDOztRQUMxSCxLQUFLLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQUUsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENB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QUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9DLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNyQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hCLENBQUM7QUFDRCxrOVJBQWs5UiIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2RlY29yYXRlID0gKHRoaXMgJiYgdGhpcy5fX2RlY29yYXRlKSB8fCBmdW5jdGlvbiAoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufTtcbnZhciBfX21ldGFkYXRhID0gKHRoaXMgJiYgdGhpcy5fX21ldGFkYXRhKSB8fCBmdW5jdGlvbiAoaywgdikge1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShrLCB2KTtcbn07XG52YXIgRGVjYWZSZXF1ZXN0SGFuZGxlckludGVyY2VwdG9yXzE7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBTY29wZSwgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IERlY2FmSGFuZGxlckV4ZWN1dG9yLCBEZWNhZlJlcXVlc3RDb250ZXh0IH0gZnJvbSBcIi4vLi4vcmVxdWVzdC9pbmRleC5qc1wiO1xuaW1wb3J0IHsgRGVmYXVsdEFkYXB0ZXJGbGFncyB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgREVDQUZfQURBUFRFUl9PUFRJT05TLCB9IGZyb20gXCIuLy4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IFwiLi8uLi9vdmVycmlkZXMvaW5kZXguanNcIjtcbmltcG9ydCB7IExvZ2dpbmcgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBJbnRlcmNlcHRvciByZXNwb25zaWJsZSBmb3IgZXhlY3V0aW5nIGFsbCByZWdpc3RlcmVkIERlY2FmIHJlcXVlc3QgaGFuZGxlcnNcbiAqIGJlZm9yZSB0aGUgY29udHJvbGxlciBtZXRob2QgaXMgaW52b2tlZC5cbiAqXG4gKiBAc3VtbWFyeVxuICogVGhlIHtAbGluayBEZWNhZlJlcXVlc3RIYW5kbGVySW50ZXJjZXB0b3J9IGludGVncmF0ZXMgdGhlIERlY2FmIHJlcXVlc3QtaGFuZGxpbmcgcGlwZWxpbmVcbiAqIGludG8gTmVzdEpTJyBpbnRlcmNlcHRvciBtZWNoYW5pc20uIEJlZm9yZSBwYXNzaW5nIGV4ZWN1dGlvbiB0byB0aGUgbmV4dCBoYW5kbGVyIGluIHRoZVxuICogTmVzdEpTIGNoYWluLCBpdCBkZWxlZ2F0ZXMgcmVxdWVzdCBwcm9jZXNzaW5nIHRvIHRoZSB7QGxpbmsgRGVjYWZIYW5kbGVyRXhlY3V0b3J9LCB3aGljaFxuICogc2VxdWVudGlhbGx5IHJ1bnMgYWxsIHJlZ2lzdGVyZWQge0BsaW5rIERlY2FmUmVxdWVzdEhhbmRsZXJ9IGluc3RhbmNlcy4gVGhpcyBhbGxvd3NcbiAqIGJlaGF2aW9ycyBzdWNoIGFzIGF1dGhlbnRpY2F0aW9uLCBsb2dnaW5nLCB0ZW5hbnQgcmVzb2x1dGlvbiwgb3IgbWV0YWRhdGEgZW5yaWNobWVudFxuICogdG8gb2NjdXIgcHJpb3IgdG8gY29udHJvbGxlciBleGVjdXRpb24uXG4gKlxuICogQGNsYXNzIERlY2FmUmVxdWVzdEhhbmRsZXJJbnRlcmNlcHRvclxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gQXBwbHkgZ2xvYmFsbHk6XG4gKiBhcHAudXNlR2xvYmFsSW50ZXJjZXB0b3JzKG5ldyBEZWNhZlJlcXVlc3RIYW5kbGVySW50ZXJjZXB0b3IoZXhlY3V0b3IpKTtcbiAqXG4gKiAvLyBPciBpbiBhIG1vZHVsZTpcbiAqIEBNb2R1bGUoe1xuICogICBwcm92aWRlcnM6IFtcbiAqICAgICBEZWNhZkhhbmRsZXJFeGVjdXRvcixcbiAqICAgICB7XG4gKiAgICAgICBwcm92aWRlOiBBUFBfSU5URVJDRVBUT1IsXG4gKiAgICAgICB1c2VDbGFzczogRGVjYWZSZXF1ZXN0SGFuZGxlckludGVyY2VwdG9yLFxuICogICAgIH0sXG4gKiAgIF0sXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIEFwcE1vZHVsZSB7fVxuICogYGBgXG4gKlxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICAgIHBhcnRpY2lwYW50IENsaWVudFxuICogICAgIHBhcnRpY2lwYW50IEludGVyY2VwdG9yXG4gKiAgICAgcGFydGljaXBhbnQgRXhlY3V0b3JcbiAqICAgICBwYXJ0aWNpcGFudCBDb250cm9sbGVyXG4gKlxuICogICAgIENsaWVudC0+PkludGVyY2VwdG9yOiBIVFRQIFJlcXVlc3RcbiAqICAgICBJbnRlcmNlcHRvci0+PkV4ZWN1dG9yOiBleGVjKHJlcXVlc3QpXG4gKiAgICAgRXhlY3V0b3ItLT4+SW50ZXJjZXB0b3I6IGhhbmRsZXJzIGNvbXBsZXRlZFxuICogICAgIEludGVyY2VwdG9yLT4+Q29udHJvbGxlcjogbmV4dC5oYW5kbGUoKVxuICogICAgIENvbnRyb2xsZXItLT4+Q2xpZW50OiBSZXNwb25zZVxuICovXG5sZXQgRGVjYWZSZXF1ZXN0SGFuZGxlckludGVyY2VwdG9yID0gRGVjYWZSZXF1ZXN0SGFuZGxlckludGVyY2VwdG9yXzEgPSBjbGFzcyBEZWNhZlJlcXVlc3RIYW5kbGVySW50ZXJjZXB0b3Ige1xuICAgIGNvbnN0cnVjdG9yKHJlcXVlc3RDb250ZXh0LCBleGVjdXRvcikge1xuICAgICAgICB0aGlzLnJlcXVlc3RDb250ZXh0ID0gcmVxdWVzdENvbnRleHQ7XG4gICAgICAgIHRoaXMuZXhlY3V0b3IgPSBleGVjdXRvcjtcbiAgICB9XG4gICAgYXN5bmMgY29udGV4dHVhbGl6ZShyZXEpIHtcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IHJlcS5oZWFkZXJzO1xuICAgICAgICBjb25zdCBmbGFncyA9IHtcbiAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICBvdmVycmlkZXM6IHt9LFxuICAgICAgICB9O1xuICAgICAgICBPYmplY3QuYXNzaWduKGZsYWdzLm92ZXJyaWRlcywgcmVxPy5bREVDQUZfQURBUFRFUl9PUFRJT05TXSA/PyB7fSk7XG4gICAgICAgIGNvbnN0IGlwID0gZXh0cmFjdElwKHJlcSk7XG4gICAgICAgIGNvbnN0IGxvZ2dlciA9IExvZ2dpbmcuZ2V0KCkuZm9yKHsgaXAgfSk7XG4gICAgICAgIHRoaXMucmVxdWVzdENvbnRleHQuYWNjdW11bGF0ZShPYmplY3QuYXNzaWduKHt9LCBEZWZhdWx0QWRhcHRlckZsYWdzLCB7XG4gICAgICAgICAgICBsb2dnZXIsXG4gICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICBvcGVyYXRpb246IGAke3JlcS5tZXRob2R9ICR7cmVxLnVybH1gLFxuICAgICAgICB9LCBmbGFncykpO1xuICAgIH1cbiAgICBhc3luYyBpbnRlcmNlcHQoY29udGV4dCwgbmV4dCkge1xuICAgICAgICBjb25zdCByZXEgPSBjb250ZXh0LnN3aXRjaFRvSHR0cCgpLmdldFJlcXVlc3QoKTtcbiAgICAgICAgY29uc3QgcmVzID0gY29udGV4dC5zd2l0Y2hUb0h0dHAoKS5nZXRSZXNwb25zZSgpO1xuICAgICAgICBjb25zdCBsb2cgPSBMb2dnaW5nLmZvcihEZWNhZlJlcXVlc3RIYW5kbGVySW50ZXJjZXB0b3JfMSkuZm9yKHRoaXMuaW50ZXJjZXB0KTtcbiAgICAgICAgbG9nLmRlYnVnKGBDT05URVhUICR7dGhpcy5yZXF1ZXN0Q29udGV4dC51dWlkfSAtIHJlcXVlc3Q6ICR7cmVxLm1ldGhvZH0gJHtyZXEudXJsfWApO1xuICAgICAgICBhd2FpdCB0aGlzLmNvbnRleHR1YWxpemUocmVxKTtcbiAgICAgICAgbG9nLmRlYnVnKGBDT05URVhUICR7dGhpcy5yZXF1ZXN0Q29udGV4dC51dWlkfSBjb250ZXh0dWFsaXplZCAtIHJlcXVlc3Q6ICR7cmVxLm1ldGhvZH0gJHtyZXEudXJsfWApO1xuICAgICAgICBhd2FpdCB0aGlzLmV4ZWN1dG9yLmV4ZWMocmVxLCByZXMpO1xuICAgICAgICBsb2cuZGVidWcoYENPTlRFWFQgJHt0aGlzLnJlcXVlc3RDb250ZXh0LnV1aWR9IGV4ZWN1dG9ycyBmaW5pc2hlZCAtIHJlcXVlc3Q6ICR7cmVxLm1ldGhvZH0gJHtyZXEudXJsfWApO1xuICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUoKTtcbiAgICB9XG59O1xuRGVjYWZSZXF1ZXN0SGFuZGxlckludGVyY2VwdG9yID0gRGVjYWZSZXF1ZXN0SGFuZGxlckludGVyY2VwdG9yXzEgPSBfX2RlY29yYXRlKFtcbiAgICBJbmplY3RhYmxlKHsgc2NvcGU6IFNjb3BlLlJFUVVFU1QgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjpwYXJhbXR5cGVzXCIsIFtEZWNhZlJlcXVlc3RDb250ZXh0LFxuICAgICAgICBEZWNhZkhhbmRsZXJFeGVjdXRvcl0pXG5dLCBEZWNhZlJlcXVlc3RIYW5kbGVySW50ZXJjZXB0b3IpO1xuZXhwb3J0IHsgRGVjYWZSZXF1ZXN0SGFuZGxlckludGVyY2VwdG9yIH07XG5mdW5jdGlvbiBleHRyYWN0SXAocmVxKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHJlcS5oZWFkZXJzO1xuICAgIGZ1bmN0aW9uIHBhcnNlSXBIZWFkZXIodmFsdWUpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSlcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWVbMF0gOiB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZVxuICAgICAgICAgICAgLnNwbGl0KFwiLFwiKVxuICAgICAgICAgICAgLm1hcCgoc2VnbWVudCkgPT4gc2VnbWVudC50cmltKCkpXG4gICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pWzBdO1xuICAgIH1cbiAgICByZXR1cm4gKHBhcnNlSXBIZWFkZXIoaGVhZGVycz8uW1wieC1mb3J3YXJkZWQtZm9yXCJdKSA/P1xuICAgICAgICBwYXJzZUlwSGVhZGVyKGhlYWRlcnM/LltcIngtcmVhbC1pcFwiXSkgPz9cbiAgICAgICAgcGFyc2VJcEhlYWRlcihoZWFkZXJzPy5bXCJYLUZvcndhcmRlZC1Gb3JcIl0pID8/XG4gICAgICAgIHBhcnNlSXBIZWFkZXIoaGVhZGVycz8uW1wiWC1SZWFsLUlQXCJdKSA/P1xuICAgICAgICByZXEuaXApO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pUkdWallXWlNaWEYxWlhOMFNHRnVaR3hsY2tsdWRHVnlZMlZ3ZEc5eUxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZMaTR2YzNKakwybHVkR1Z5WTJWd2RHOXljeTlFWldOaFpsSmxjWFZsYzNSSVlXNWtiR1Z5U1c1MFpYSmpaWEIwYjNJdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN096dEJRVUZCTEU5QlFVOHNSVUZIVEN4VlFVRlZMRVZCUlZZc1MwRkJTeXhIUVVOT0xFMUJRVTBzWjBKQlFXZENMRU5CUVVNN1FVRkRlRUlzVDBGQlR5eEZRVUZGTEc5Q1FVRnZRaXhGUVVGRkxHMUNRVUZ0UWl4RlFVRkZMRGhDUVVGdFFqdEJRVU4yUlN4UFFVRlBMRVZCUVVVc2JVSkJRVzFDTEVWQlFVVXNUVUZCVFN4blFrRkJaMElzUTBGQlF6dEJRVU55UkN4UFFVRlBMRVZCUTB3c2NVSkJRWEZDTEVkQlJYUkNMREJDUVVGeFFqdEJRVU4wUWl4cFEwRkJjMEk3UVVGRGRFSXNUMEZCVHl4RlFVRkZMRTlCUVU4c1JVRkJSU3hOUVVGTkxHMUNRVUZ0UWl4RFFVRkRPMEZCUlRWRE96czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN1IwRTJRMGM3UVVGRlNTeEpRVUZOTERoQ1FVRTRRaXh6UTBGQmNFTXNUVUZCVFN3NFFrRkJPRUk3U1VGRGVrTXNXVUZEY1VJc1kwRkJiVU1zUlVGRGJrTXNVVUZCT0VJN1VVRkVPVUlzYlVKQlFXTXNSMEZCWkN4alFVRmpMRU5CUVhGQ08xRkJRMjVETEdGQlFWRXNSMEZCVWl4UlFVRlJMRU5CUVhOQ08wbEJRMmhFTEVOQlFVTTdTVUZGVFN4TFFVRkxMRU5CUVVNc1lVRkJZU3hEUVVGRExFZEJRVkU3VVVGRGNFTXNUVUZCVFN4UFFVRlBMRWRCUVVjc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF6dFJRVU0xUWl4TlFVRk5MRXRCUVVzc1IwRkJjVUk3V1VGRE9VSXNUMEZCVHl4RlFVRkZMRTlCUVU4N1dVRkRhRUlzVTBGQlV5eEZRVUZGTEVWQlFVVTdVMEZEVUN4RFFVRkRPMUZCUTFRc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNVMEZCVXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRmJrVXNUVUZCVFN4RlFVRkZMRWRCUVVjc1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlF6RkNMRTFCUVUwc1RVRkJUU3hIUVVGSExFOUJRVThzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzFGQlJYcERMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zVlVGQlZTeERRVU0xUWl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVOWUxFVkJRVVVzUlVGRFJpeHRRa0ZCYlVJc1JVRkRia0k3V1VGRFJTeE5RVUZOTzFsQlEwNHNVMEZCVXl4RlFVRkZMRWxCUVVrc1NVRkJTU3hGUVVGRk8xbEJRM0pDTEZOQlFWTXNSVUZCUlN4SFFVRkhMRWRCUVVjc1EwRkJReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eERRVUZETEVkQlFVY3NSVUZCUlR0VFFVTjBReXhGUVVORUxFdEJRVXNzUTBGRFRpeERRVU5HTEVOQlFVTTdTVUZEU2l4RFFVRkRPMGxCUlVRc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF5eFBRVUY1UWl4RlFVRkZMRWxCUVdsQ08xRkJRekZFTEUxQlFVMHNSMEZCUnl4SFFVRkhMRTlCUVU4c1EwRkJReXhaUVVGWkxFVkJRVVVzUTBGQlF5eFZRVUZWTEVWQlFVVXNRMEZCUXp0UlFVTm9SQ3hOUVVGTkxFZEJRVWNzUjBGQlJ5eFBRVUZQTEVOQlFVTXNXVUZCV1N4RlFVRkZMRU5CUVVNc1YwRkJWeXhGUVVGRkxFTkJRVU03VVVGRGFrUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eG5RMEZCT0VJc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1VVRkROVVVzUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZEVUN4WFFVRlhMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zU1VGQlNTeGxRVUZsTEVkQlFVY3NRMEZCUXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVU14UlN4RFFVRkRPMUZCUTBZc1RVRkJUU3hKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUXpsQ0xFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlExQXNWMEZCVnl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFbEJRVWtzT0VKQlFUaENMRWRCUVVjc1EwRkJReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVTjZSaXhEUVVGRE8xRkJSVVlzVFVGQlRTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEYmtNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGRFVDeFhRVUZYTEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1NVRkJTU3hyUTBGQmEwTXNSMEZCUnl4RFFVRkRMRTFCUVUwc1NVRkJTU3hIUVVGSExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlF6ZEdMRU5CUVVNN1VVRkRSaXhQUVVGUExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXp0SlFVTjJRaXhEUVVGRE8wTkJRMFlzUTBGQlFUdEJRV3BFV1N3NFFrRkJPRUk3U1VGRU1VTXNWVUZCVlN4RFFVRkRMRVZCUVVVc1MwRkJTeXhGUVVGRkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0eFEwRkhSU3h0UWtGQmJVSTdVVUZEZWtJc2IwSkJRVzlDTzBkQlNIaERMRGhDUVVFNFFpeERRV2xFTVVNN08wRkJSVVFzVTBGQlV5eFRRVUZUTEVOQlFVTXNSMEZCVVR0SlFVTjZRaXhOUVVGTkxFOUJRVThzUjBGQlJ5eEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRPMGxCUXpWQ0xGTkJRVk1zWVVGQllTeERRVUZETEV0QlFYbENPMUZCUXpsRExFbEJRVWtzUTBGQlF5eExRVUZMTzFsQlFVVXNUMEZCVHl4VFFVRlRMRU5CUVVNN1VVRkROMElzVFVGQlRTeFRRVUZUTEVkQlFVY3NTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTTdVVUZETVVRc1QwRkJUeXhUUVVGVE8yRkJRMklzUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXp0aFFVTldMRWRCUVVjc1EwRkJReXhEUVVGRExFOUJRVThzUlVGQlJTeEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRE8yRkJRMmhETEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU40UWl4RFFVRkRPMGxCUTBRc1QwRkJUeXhEUVVOTUxHRkJRV0VzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETzFGQlF6TkRMR0ZCUVdFc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0UlFVTnlReXhoUVVGaExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zUTBGQlF6dFJRVU16UXl4aFFVRmhMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTTdVVUZEY2tNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGRFVDeERRVUZETzBGQlEwb3NRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN1hHNGdJRU5oYkd4SVlXNWtiR1Z5TEZ4dUlDQkZlR1ZqZFhScGIyNURiMjUwWlhoMExGeHVJQ0JKYm1wbFkzUmhZbXhsTEZ4dUlDQk9aWE4wU1c1MFpYSmpaWEIwYjNJc1hHNGdJRk5qYjNCbExGeHVmU0JtY205dElGd2lRRzVsYzNScWN5OWpiMjF0YjI1Y0lqdGNibWx0Y0c5eWRDQjdJRVJsWTJGbVNHRnVaR3hsY2tWNFpXTjFkRzl5TENCRVpXTmhabEpsY1hWbGMzUkRiMjUwWlhoMElIMGdabkp2YlNCY0lpNHVMM0psY1hWbGMzUmNJanRjYm1sdGNHOXlkQ0I3SUVSbFptRjFiSFJCWkdGd2RHVnlSbXhoWjNNZ2ZTQm1jbTl0SUZ3aVFHUmxZMkZtTFhSekwyTnZjbVZjSWp0Y2JtbHRjRzl5ZENCN1hHNGdJRVJGUTBGR1gwRkVRVkJVUlZKZlQxQlVTVTlPVXl4Y2JpQWdSR1ZqWVdaVFpYSjJaWEpHYkdGbmN5eGNibjBnWm5KdmJTQmNJaTR1TDJOdmJuTjBZVzUwYzF3aU8xeHVhVzF3YjNKMElGd2lMaTR2YjNabGNuSnBaR1Z6WENJN1hHNXBiWEJ2Y25RZ2V5Qk1iMmRuYVc1bklIMGdabkp2YlNCY0lrQmtaV05oWmkxMGN5OXNiMmRuYVc1blhDSTdYRzVjYmk4cUtseHVJQ29nUUdSbGMyTnlhWEIwYVc5dVhHNGdLaUJKYm5SbGNtTmxjSFJ2Y2lCeVpYTndiMjV6YVdKc1pTQm1iM0lnWlhobFkzVjBhVzVuSUdGc2JDQnlaV2RwYzNSbGNtVmtJRVJsWTJGbUlISmxjWFZsYzNRZ2FHRnVaR3hsY25OY2JpQXFJR0psWm05eVpTQjBhR1VnWTI5dWRISnZiR3hsY2lCdFpYUm9iMlFnYVhNZ2FXNTJiMnRsWkM1Y2JpQXFYRzRnS2lCQWMzVnRiV0Z5ZVZ4dUlDb2dWR2hsSUh0QWJHbHVheUJFWldOaFpsSmxjWFZsYzNSSVlXNWtiR1Z5U1c1MFpYSmpaWEIwYjNKOUlHbHVkR1ZuY21GMFpYTWdkR2hsSUVSbFkyRm1JSEpsY1hWbGMzUXRhR0Z1Wkd4cGJtY2djR2x3Wld4cGJtVmNiaUFxSUdsdWRHOGdUbVZ6ZEVwVEp5QnBiblJsY21ObGNIUnZjaUJ0WldOb1lXNXBjMjB1SUVKbFptOXlaU0J3WVhOemFXNW5JR1Y0WldOMWRHbHZiaUIwYnlCMGFHVWdibVY0ZENCb1lXNWtiR1Z5SUdsdUlIUm9aVnh1SUNvZ1RtVnpkRXBUSUdOb1lXbHVMQ0JwZENCa1pXeGxaMkYwWlhNZ2NtVnhkV1Z6ZENCd2NtOWpaWE56YVc1bklIUnZJSFJvWlNCN1FHeHBibXNnUkdWallXWklZVzVrYkdWeVJYaGxZM1YwYjNKOUxDQjNhR2xqYUZ4dUlDb2djMlZ4ZFdWdWRHbGhiR3g1SUhKMWJuTWdZV3hzSUhKbFoybHpkR1Z5WldRZ2UwQnNhVzVySUVSbFkyRm1VbVZ4ZFdWemRFaGhibVJzWlhKOUlHbHVjM1JoYm1ObGN5NGdWR2hwY3lCaGJHeHZkM05jYmlBcUlHSmxhR0YyYVc5eWN5QnpkV05vSUdGeklHRjFkR2hsYm5ScFkyRjBhVzl1TENCc2IyZG5hVzVuTENCMFpXNWhiblFnY21WemIyeDFkR2x2Yml3Z2IzSWdiV1YwWVdSaGRHRWdaVzV5YVdOb2JXVnVkRnh1SUNvZ2RHOGdiMk5qZFhJZ2NISnBiM0lnZEc4Z1kyOXVkSEp2Ykd4bGNpQmxlR1ZqZFhScGIyNHVYRzRnS2x4dUlDb2dRR05zWVhOeklFUmxZMkZtVW1WeGRXVnpkRWhoYm1Sc1pYSkpiblJsY21ObGNIUnZjbHh1SUNwY2JpQXFJRUJsZUdGdGNHeGxYRzRnS2lCZ1lHQjBjMXh1SUNvZ0x5OGdRWEJ3YkhrZ1oyeHZZbUZzYkhrNlhHNGdLaUJoY0hBdWRYTmxSMnh2WW1Gc1NXNTBaWEpqWlhCMGIzSnpLRzVsZHlCRVpXTmhabEpsY1hWbGMzUklZVzVrYkdWeVNXNTBaWEpqWlhCMGIzSW9aWGhsWTNWMGIzSXBLVHRjYmlBcVhHNGdLaUF2THlCUGNpQnBiaUJoSUcxdlpIVnNaVHBjYmlBcUlFQk5iMlIxYkdVb2UxeHVJQ29nSUNCd2NtOTJhV1JsY25NNklGdGNiaUFxSUNBZ0lDQkVaV05oWmtoaGJtUnNaWEpGZUdWamRYUnZjaXhjYmlBcUlDQWdJQ0I3WEc0Z0tpQWdJQ0FnSUNCd2NtOTJhV1JsT2lCQlVGQmZTVTVVUlZKRFJWQlVUMUlzWEc0Z0tpQWdJQ0FnSUNCMWMyVkRiR0Z6Y3pvZ1JHVmpZV1pTWlhGMVpYTjBTR0Z1Wkd4bGNrbHVkR1Z5WTJWd2RHOXlMRnh1SUNvZ0lDQWdJSDBzWEc0Z0tpQWdJRjBzWEc0Z0tpQjlLVnh1SUNvZ1pYaHdiM0owSUdOc1lYTnpJRUZ3Y0UxdlpIVnNaU0I3ZlZ4dUlDb2dZR0JnWEc0Z0tseHVJQ29nUUcxbGNtMWhhV1JjYmlBcUlITmxjWFZsYm1ObFJHbGhaM0poYlZ4dUlDb2dJQ0FnSUhCaGNuUnBZMmx3WVc1MElFTnNhV1Z1ZEZ4dUlDb2dJQ0FnSUhCaGNuUnBZMmx3WVc1MElFbHVkR1Z5WTJWd2RHOXlYRzRnS2lBZ0lDQWdjR0Z5ZEdsamFYQmhiblFnUlhobFkzVjBiM0pjYmlBcUlDQWdJQ0J3WVhKMGFXTnBjR0Z1ZENCRGIyNTBjbTlzYkdWeVhHNGdLbHh1SUNvZ0lDQWdJRU5zYVdWdWRDMCtQa2x1ZEdWeVkyVndkRzl5T2lCSVZGUlFJRkpsY1hWbGMzUmNiaUFxSUNBZ0lDQkpiblJsY21ObGNIUnZjaTArUGtWNFpXTjFkRzl5T2lCbGVHVmpLSEpsY1hWbGMzUXBYRzRnS2lBZ0lDQWdSWGhsWTNWMGIzSXRMVDQrU1c1MFpYSmpaWEIwYjNJNklHaGhibVJzWlhKeklHTnZiWEJzWlhSbFpGeHVJQ29nSUNBZ0lFbHVkR1Z5WTJWd2RHOXlMVDQrUTI5dWRISnZiR3hsY2pvZ2JtVjRkQzVvWVc1a2JHVW9LVnh1SUNvZ0lDQWdJRU52Ym5SeWIyeHNaWEl0TFQ0K1EyeHBaVzUwT2lCU1pYTndiMjV6WlZ4dUlDb3ZYRzVBU1c1cVpXTjBZV0pzWlNoN0lITmpiM0JsT2lCVFkyOXdaUzVTUlZGVlJWTlVJSDBwWEc1bGVIQnZjblFnWTJ4aGMzTWdSR1ZqWVdaU1pYRjFaWE4wU0dGdVpHeGxja2x1ZEdWeVkyVndkRzl5SUdsdGNHeGxiV1Z1ZEhNZ1RtVnpkRWx1ZEdWeVkyVndkRzl5SUh0Y2JpQWdZMjl1YzNSeWRXTjBiM0lvWEc0Z0lDQWdjSEp2ZEdWamRHVmtJSEpsWVdSdmJteDVJSEpsY1hWbGMzUkRiMjUwWlhoME9pQkVaV05oWmxKbGNYVmxjM1JEYjI1MFpYaDBMRnh1SUNBZ0lIQnliM1JsWTNSbFpDQnlaV0ZrYjI1c2VTQmxlR1ZqZFhSdmNqb2dSR1ZqWVdaSVlXNWtiR1Z5UlhobFkzVjBiM0pjYmlBZ0tTQjdmVnh1WEc0Z0lIQnliM1JsWTNSbFpDQmhjM2x1WXlCamIyNTBaWGgwZFdGc2FYcGxLSEpsY1RvZ1lXNTVLVG9nVUhKdmJXbHpaVHgyYjJsa1BpQjdYRzRnSUNBZ1kyOXVjM1FnYUdWaFpHVnljeUE5SUhKbGNTNW9aV0ZrWlhKek8xeHVJQ0FnSUdOdmJuTjBJR1pzWVdkek9pQkVaV05oWmxObGNuWmxja1pzWVdkeklEMGdlMXh1SUNBZ0lDQWdhR1ZoWkdWeWN6b2dhR1ZoWkdWeWN5eGNiaUFnSUNBZ0lHOTJaWEp5YVdSbGN6b2dlMzBzWEc0Z0lDQWdmU0JoY3lCaGJuazdYRzRnSUNBZ1QySnFaV04wTG1GemMybG5iaWhtYkdGbmN5NXZkbVZ5Y21sa1pYTXNJSEpsY1Q4dVcwUkZRMEZHWDBGRVFWQlVSVkpmVDFCVVNVOU9VMTBnUHo4Z2UzMHBPMXh1WEc0Z0lDQWdZMjl1YzNRZ2FYQWdQU0JsZUhSeVlXTjBTWEFvY21WeEtUdGNiaUFnSUNCamIyNXpkQ0JzYjJkblpYSWdQU0JNYjJkbmFXNW5MbWRsZENncExtWnZjaWg3SUdsd0lIMHBPMXh1WEc0Z0lDQWdkR2hwY3k1eVpYRjFaWE4wUTI5dWRHVjRkQzVoWTJOMWJYVnNZWFJsS0Z4dUlDQWdJQ0FnVDJKcVpXTjBMbUZ6YzJsbmJpaGNiaUFnSUNBZ0lDQWdlMzBzWEc0Z0lDQWdJQ0FnSUVSbFptRjFiSFJCWkdGd2RHVnlSbXhoWjNNc1hHNGdJQ0FnSUNBZ0lIdGNiaUFnSUNBZ0lDQWdJQ0JzYjJkblpYSXNYRzRnSUNBZ0lDQWdJQ0FnZEdsdFpYTjBZVzF3T2lCdVpYY2dSR0YwWlNncExGeHVJQ0FnSUNBZ0lDQWdJRzl3WlhKaGRHbHZiam9nWUNSN2NtVnhMbTFsZEdodlpIMGdKSHR5WlhFdWRYSnNmV0FzWEc0Z0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNBZ0lHWnNZV2R6WEc0Z0lDQWdJQ0FwWEc0Z0lDQWdLVHRjYmlBZ2ZWeHVYRzRnSUdGemVXNWpJR2x1ZEdWeVkyVndkQ2hqYjI1MFpYaDBPaUJGZUdWamRYUnBiMjVEYjI1MFpYaDBMQ0J1WlhoME9pQkRZV3hzU0dGdVpHeGxjaWtnZTF4dUlDQWdJR052Ym5OMElISmxjU0E5SUdOdmJuUmxlSFF1YzNkcGRHTm9WRzlJZEhSd0tDa3VaMlYwVW1WeGRXVnpkQ2dwTzF4dUlDQWdJR052Ym5OMElISmxjeUE5SUdOdmJuUmxlSFF1YzNkcGRHTm9WRzlJZEhSd0tDa3VaMlYwVW1WemNHOXVjMlVvS1R0Y2JpQWdJQ0JqYjI1emRDQnNiMmNnUFNCTWIyZG5hVzVuTG1admNpaEVaV05oWmxKbGNYVmxjM1JJWVc1a2JHVnlTVzUwWlhKalpYQjBiM0lwTG1admNpaDBhR2x6TG1sdWRHVnlZMlZ3ZENrN1hHNGdJQ0FnYkc5bkxtUmxZblZuS0Z4dUlDQWdJQ0FnWUVOUFRsUkZXRlFnSkh0MGFHbHpMbkpsY1hWbGMzUkRiMjUwWlhoMExuVjFhV1I5SUMwZ2NtVnhkV1Z6ZERvZ0pIdHlaWEV1YldWMGFHOWtmU0FrZTNKbGNTNTFjbXg5WUZ4dUlDQWdJQ2s3WEc0Z0lDQWdZWGRoYVhRZ2RHaHBjeTVqYjI1MFpYaDBkV0ZzYVhwbEtISmxjU2s3WEc0Z0lDQWdiRzluTG1SbFluVm5LRnh1SUNBZ0lDQWdZRU5QVGxSRldGUWdKSHQwYUdsekxuSmxjWFZsYzNSRGIyNTBaWGgwTG5WMWFXUjlJR052Ym5SbGVIUjFZV3hwZW1Wa0lDMGdjbVZ4ZFdWemREb2dKSHR5WlhFdWJXVjBhRzlrZlNBa2UzSmxjUzUxY214OVlGeHVJQ0FnSUNrN1hHNWNiaUFnSUNCaGQyRnBkQ0IwYUdsekxtVjRaV04xZEc5eUxtVjRaV01vY21WeExDQnlaWE1wTzF4dUlDQWdJR3h2Wnk1a1pXSjFaeWhjYmlBZ0lDQWdJR0JEVDA1VVJWaFVJQ1I3ZEdocGN5NXlaWEYxWlhOMFEyOXVkR1Y0ZEM1MWRXbGtmU0JsZUdWamRYUnZjbk1nWm1sdWFYTm9aV1FnTFNCeVpYRjFaWE4wT2lBa2UzSmxjUzV0WlhSb2IyUjlJQ1I3Y21WeExuVnliSDFnWEc0Z0lDQWdLVHRjYmlBZ0lDQnlaWFIxY200Z2JtVjRkQzVvWVc1a2JHVW9LVHRjYmlBZ2ZWeHVmVnh1WEc1bWRXNWpkR2x2YmlCbGVIUnlZV04wU1hBb2NtVnhPaUJoYm5rcE9pQnpkSEpwYm1jZ2ZDQjFibVJsWm1sdVpXUWdlMXh1SUNCamIyNXpkQ0JvWldGa1pYSnpJRDBnY21WeExtaGxZV1JsY25NN1hHNGdJR1oxYm1OMGFXOXVJSEJoY25ObFNYQklaV0ZrWlhJb2RtRnNkV1UvT2lCemRISnBibWNnZkNCemRISnBibWRiWFNrNklITjBjbWx1WnlCOElIVnVaR1ZtYVc1bFpDQjdYRzRnSUNBZ2FXWWdLQ0YyWVd4MVpTa2djbVYwZFhKdUlIVnVaR1ZtYVc1bFpEdGNiaUFnSUNCamIyNXpkQ0JqWVc1a2FXUmhkR1VnUFNCQmNuSmhlUzVwYzBGeWNtRjVLSFpoYkhWbEtTQS9JSFpoYkhWbFd6QmRJRG9nZG1Gc2RXVTdYRzRnSUNBZ2NtVjBkWEp1SUdOaGJtUnBaR0YwWlZ4dUlDQWdJQ0FnTG5Od2JHbDBLRndpTEZ3aUtWeHVJQ0FnSUNBZ0xtMWhjQ2dvYzJWbmJXVnVkQ2tnUFQ0Z2MyVm5iV1Z1ZEM1MGNtbHRLQ2twWEc0Z0lDQWdJQ0F1Wm1sc2RHVnlLRUp2YjJ4bFlXNHBXekJkTzF4dUlDQjlYRzRnSUhKbGRIVnliaUFvWEc0Z0lDQWdjR0Z5YzJWSmNFaGxZV1JsY2lob1pXRmtaWEp6UHk1YlhDSjRMV1p2Y25kaGNtUmxaQzFtYjNKY0lsMHBJRDgvWEc0Z0lDQWdjR0Z5YzJWSmNFaGxZV1JsY2lob1pXRmtaWEp6UHk1YlhDSjRMWEpsWVd3dGFYQmNJbDBwSUQ4L1hHNGdJQ0FnY0dGeWMyVkpjRWhsWVdSbGNpaG9aV0ZrWlhKelB5NWJYQ0pZTFVadmNuZGhjbVJsWkMxR2IzSmNJbDBwSUQ4L1hHNGdJQ0FnY0dGeWMyVkpjRWhsWVdSbGNpaG9aV0ZrWlhKelB5NWJYQ0pZTFZKbFlXd3RTVkJjSWwwcElEOC9YRzRnSUNBZ2NtVnhMbWx3WEc0Z0lDazdYRzU5WEc0aVhYMD0iXX0=
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjYWZSZXF1ZXN0SGFuZGxlckludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ludGVyY2VwdG9ycy9EZWNhZlJlcXVlc3RIYW5kbGVySW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFHTCxVQUFVLEVBRVYsS0FBSyxHQUNOLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLDhCQUFtQjtBQUN2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRCxpQ0FBc0I7QUFDdEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTVDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Q0c7QUFFSSxJQUFNLDhCQUE4QixzQ0FBcEMsTUFBTSw4QkFBOEI7SUFDekMsWUFDcUIsY0FBbUMsRUFDbkMsUUFBOEI7UUFEOUIsbUJBQWMsR0FBZCxjQUFjLENBQXFCO1FBQ25DLGFBQVEsR0FBUixRQUFRLENBQXNCO0lBQ2hELENBQUM7SUFFTSxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQVE7UUFDcEMsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUM1QixNQUFNLEtBQUssR0FBcUI7WUFDOUIsT0FBTyxFQUFFLE9BQU87WUFDaEIsU0FBUyxFQUFFLEVBQUU7U0FDUCxDQUFDO1FBRVQsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXpDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUM1QixNQUFNLENBQUMsTUFBTSxDQUNYLEVBQUUsRUFDRixtQkFBbUIsRUFDbkI7WUFDRSxNQUFNO1lBQ04sU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFO1lBQ3JCLFNBQVMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRTtTQUN0QyxFQUNELEtBQUssQ0FDTixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUF5QixFQUFFLElBQWlCO1FBQzFELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoRCxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakQsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQ0FBOEIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUUsR0FBRyxDQUFDLEtBQUssQ0FDUCxXQUFXLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxlQUFlLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUMxRSxDQUFDO1FBQ0YsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLEdBQUcsQ0FBQyxLQUFLLENBQ1AsV0FBVyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksOEJBQThCLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUN6RixDQUFDO1FBRUYsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbkMsR0FBRyxDQUFDLEtBQUssQ0FDUCxXQUFXLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxrQ0FBa0MsR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQzdGLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN2QixDQUFDO0NBQ0YsQ0FBQTtBQWhEWSw4QkFBOEI7SUFEMUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztxQ0FHRSxtQkFBbUI7UUFDekIsb0JBQW9CO0dBSHhDLDhCQUE4QixDQWdEMUM7O0FBRUQsU0FBUyxTQUFTLENBQUMsR0FBUTtJQUN6QixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO0lBQzVCLFNBQVMsYUFBYSxDQUFDLEtBQXlCO1FBQzlDLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDN0IsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDMUQsT0FBTyxTQUFTO2FBQ2IsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsT0FBTyxDQUNMLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNyQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckMsR0FBRyxDQUFDLEVBQUUsQ0FDUCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENhbGxIYW5kbGVyLFxuICBFeGVjdXRpb25Db250ZXh0LFxuICBJbmplY3RhYmxlLFxuICBOZXN0SW50ZXJjZXB0b3IsXG4gIFNjb3BlLFxufSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IERlY2FmSGFuZGxlckV4ZWN1dG9yLCBEZWNhZlJlcXVlc3RDb250ZXh0IH0gZnJvbSBcIi4uL3JlcXVlc3RcIjtcbmltcG9ydCB7IERlZmF1bHRBZGFwdGVyRmxhZ3MgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IERlY2FmU2VydmVyRmxhZ3MgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgXCIuLi9vdmVycmlkZXNcIjtcbmltcG9ydCB7IExvZ2dpbmcgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEludGVyY2VwdG9yIHJlc3BvbnNpYmxlIGZvciBleGVjdXRpbmcgYWxsIHJlZ2lzdGVyZWQgRGVjYWYgcmVxdWVzdCBoYW5kbGVyc1xuICogYmVmb3JlIHRoZSBjb250cm9sbGVyIG1ldGhvZCBpcyBpbnZva2VkLlxuICpcbiAqIEBzdW1tYXJ5XG4gKiBUaGUge0BsaW5rIERlY2FmUmVxdWVzdEhhbmRsZXJJbnRlcmNlcHRvcn0gaW50ZWdyYXRlcyB0aGUgRGVjYWYgcmVxdWVzdC1oYW5kbGluZyBwaXBlbGluZVxuICogaW50byBOZXN0SlMnIGludGVyY2VwdG9yIG1lY2hhbmlzbS4gQmVmb3JlIHBhc3NpbmcgZXhlY3V0aW9uIHRvIHRoZSBuZXh0IGhhbmRsZXIgaW4gdGhlXG4gKiBOZXN0SlMgY2hhaW4sIGl0IGRlbGVnYXRlcyByZXF1ZXN0IHByb2Nlc3NpbmcgdG8gdGhlIHtAbGluayBEZWNhZkhhbmRsZXJFeGVjdXRvcn0sIHdoaWNoXG4gKiBzZXF1ZW50aWFsbHkgcnVucyBhbGwgcmVnaXN0ZXJlZCB7QGxpbmsgRGVjYWZSZXF1ZXN0SGFuZGxlcn0gaW5zdGFuY2VzLiBUaGlzIGFsbG93c1xuICogYmVoYXZpb3JzIHN1Y2ggYXMgYXV0aGVudGljYXRpb24sIGxvZ2dpbmcsIHRlbmFudCByZXNvbHV0aW9uLCBvciBtZXRhZGF0YSBlbnJpY2htZW50XG4gKiB0byBvY2N1ciBwcmlvciB0byBjb250cm9sbGVyIGV4ZWN1dGlvbi5cbiAqXG4gKiBAY2xhc3MgRGVjYWZSZXF1ZXN0SGFuZGxlckludGVyY2VwdG9yXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyBBcHBseSBnbG9iYWxseTpcbiAqIGFwcC51c2VHbG9iYWxJbnRlcmNlcHRvcnMobmV3IERlY2FmUmVxdWVzdEhhbmRsZXJJbnRlcmNlcHRvcihleGVjdXRvcikpO1xuICpcbiAqIC8vIE9yIGluIGEgbW9kdWxlOlxuICogQE1vZHVsZSh7XG4gKiAgIHByb3ZpZGVyczogW1xuICogICAgIERlY2FmSGFuZGxlckV4ZWN1dG9yLFxuICogICAgIHtcbiAqICAgICAgIHByb3ZpZGU6IEFQUF9JTlRFUkNFUFRPUixcbiAqICAgICAgIHVzZUNsYXNzOiBEZWNhZlJlcXVlc3RIYW5kbGVySW50ZXJjZXB0b3IsXG4gKiAgICAgfSxcbiAqICAgXSxcbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwTW9kdWxlIHt9XG4gKiBgYGBcbiAqXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgICAgcGFydGljaXBhbnQgQ2xpZW50XG4gKiAgICAgcGFydGljaXBhbnQgSW50ZXJjZXB0b3JcbiAqICAgICBwYXJ0aWNpcGFudCBFeGVjdXRvclxuICogICAgIHBhcnRpY2lwYW50IENvbnRyb2xsZXJcbiAqXG4gKiAgICAgQ2xpZW50LT4+SW50ZXJjZXB0b3I6IEhUVFAgUmVxdWVzdFxuICogICAgIEludGVyY2VwdG9yLT4+RXhlY3V0b3I6IGV4ZWMocmVxdWVzdClcbiAqICAgICBFeGVjdXRvci0tPj5JbnRlcmNlcHRvcjogaGFuZGxlcnMgY29tcGxldGVkXG4gKiAgICAgSW50ZXJjZXB0b3ItPj5Db250cm9sbGVyOiBuZXh0LmhhbmRsZSgpXG4gKiAgICAgQ29udHJvbGxlci0tPj5DbGllbnQ6IFJlc3BvbnNlXG4gKi9cbkBJbmplY3RhYmxlKHsgc2NvcGU6IFNjb3BlLlJFUVVFU1QgfSlcbmV4cG9ydCBjbGFzcyBEZWNhZlJlcXVlc3RIYW5kbGVySW50ZXJjZXB0b3IgaW1wbGVtZW50cyBOZXN0SW50ZXJjZXB0b3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVxdWVzdENvbnRleHQ6IERlY2FmUmVxdWVzdENvbnRleHQsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGV4ZWN1dG9yOiBEZWNhZkhhbmRsZXJFeGVjdXRvclxuICApIHt9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGNvbnRleHR1YWxpemUocmVxOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBoZWFkZXJzID0gcmVxLmhlYWRlcnM7XG4gICAgY29uc3QgZmxhZ3M6IERlY2FmU2VydmVyRmxhZ3MgPSB7XG4gICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgb3ZlcnJpZGVzOiB7fSxcbiAgICB9IGFzIGFueTtcblxuICAgIGNvbnN0IGlwID0gZXh0cmFjdElwKHJlcSk7XG4gICAgY29uc3QgbG9nZ2VyID0gTG9nZ2luZy5nZXQoKS5mb3IoeyBpcCB9KTtcblxuICAgIHRoaXMucmVxdWVzdENvbnRleHQuYWNjdW11bGF0ZShcbiAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgIHt9LFxuICAgICAgICBEZWZhdWx0QWRhcHRlckZsYWdzLFxuICAgICAgICB7XG4gICAgICAgICAgbG9nZ2VyLFxuICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcbiAgICAgICAgICBvcGVyYXRpb246IGAke3JlcS5tZXRob2R9ICR7cmVxLnVybH1gLFxuICAgICAgICB9LFxuICAgICAgICBmbGFnc1xuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBpbnRlcmNlcHQoY29udGV4dDogRXhlY3V0aW9uQ29udGV4dCwgbmV4dDogQ2FsbEhhbmRsZXIpIHtcbiAgICBjb25zdCByZXEgPSBjb250ZXh0LnN3aXRjaFRvSHR0cCgpLmdldFJlcXVlc3QoKTtcbiAgICBjb25zdCByZXMgPSBjb250ZXh0LnN3aXRjaFRvSHR0cCgpLmdldFJlc3BvbnNlKCk7XG4gICAgY29uc3QgbG9nID0gTG9nZ2luZy5mb3IoRGVjYWZSZXF1ZXN0SGFuZGxlckludGVyY2VwdG9yKS5mb3IodGhpcy5pbnRlcmNlcHQpO1xuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIGBDT05URVhUICR7dGhpcy5yZXF1ZXN0Q29udGV4dC51dWlkfSAtIHJlcXVlc3Q6ICR7cmVxLm1ldGhvZH0gJHtyZXEudXJsfWBcbiAgICApO1xuICAgIGF3YWl0IHRoaXMuY29udGV4dHVhbGl6ZShyZXEpO1xuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIGBDT05URVhUICR7dGhpcy5yZXF1ZXN0Q29udGV4dC51dWlkfSBjb250ZXh0dWFsaXplZCAtIHJlcXVlc3Q6ICR7cmVxLm1ldGhvZH0gJHtyZXEudXJsfWBcbiAgICApO1xuXG4gICAgYXdhaXQgdGhpcy5leGVjdXRvci5leGVjKHJlcSwgcmVzKTtcbiAgICBsb2cuZGVidWcoXG4gICAgICBgQ09OVEVYVCAke3RoaXMucmVxdWVzdENvbnRleHQudXVpZH0gZXhlY3V0b3JzIGZpbmlzaGVkIC0gcmVxdWVzdDogJHtyZXEubWV0aG9kfSAke3JlcS51cmx9YFxuICAgICk7XG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZXh0cmFjdElwKHJlcTogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgaGVhZGVycyA9IHJlcS5oZWFkZXJzO1xuICBmdW5jdGlvbiBwYXJzZUlwSGVhZGVyKHZhbHVlPzogc3RyaW5nIHwgc3RyaW5nW10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghdmFsdWUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgY2FuZGlkYXRlID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZVswXSA6IHZhbHVlO1xuICAgIHJldHVybiBjYW5kaWRhdGVcbiAgICAgIC5zcGxpdChcIixcIilcbiAgICAgIC5tYXAoKHNlZ21lbnQpID0+IHNlZ21lbnQudHJpbSgpKVxuICAgICAgLmZpbHRlcihCb29sZWFuKVswXTtcbiAgfVxuICByZXR1cm4gKFxuICAgIHBhcnNlSXBIZWFkZXIoaGVhZGVycz8uW1wieC1mb3J3YXJkZWQtZm9yXCJdKSA/P1xuICAgIHBhcnNlSXBIZWFkZXIoaGVhZGVycz8uW1wieC1yZWFsLWlwXCJdKSA/P1xuICAgIHBhcnNlSXBIZWFkZXIoaGVhZGVycz8uW1wiWC1Gb3J3YXJkZWQtRm9yXCJdKSA/P1xuICAgIHBhcnNlSXBIZWFkZXIoaGVhZGVycz8uW1wiWC1SZWFsLUlQXCJdKSA/P1xuICAgIHJlcS5pcFxuICApO1xufVxuIl19
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjYWZSZXF1ZXN0SGFuZGxlckludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiRGVjYWZSZXF1ZXN0SGFuZGxlckludGVyY2VwdG9yLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQUksVUFBVSxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUk7SUFDakYsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3SCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLE9BQU8sQ0FBQyxRQUFRLEtBQUssVUFBVTtRQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDOztRQUMxSCxLQUFLLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQUUsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENB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QyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNyQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEIsQ0FBQztBQUNELDBwUkFBMHBSIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZGVjb3JhdGUgPSAodGhpcyAmJiB0aGlzLl9fZGVjb3JhdGUpIHx8IGZ1bmN0aW9uIChkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XG59O1xudmFyIF9fbWV0YWRhdGEgPSAodGhpcyAmJiB0aGlzLl9fbWV0YWRhdGEpIHx8IGZ1bmN0aW9uIChrLCB2KSB7XG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKGssIHYpO1xufTtcbnZhciBEZWNhZlJlcXVlc3RIYW5kbGVySW50ZXJjZXB0b3JfMTtcbmltcG9ydCB7IEluamVjdGFibGUsIFNjb3BlLCB9IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuaW1wb3J0IHsgRGVjYWZIYW5kbGVyRXhlY3V0b3IsIERlY2FmUmVxdWVzdENvbnRleHQgfSBmcm9tIFwiLi8uLi9yZXF1ZXN0L2luZGV4LmpzXCI7XG5pbXBvcnQgeyBEZWZhdWx0QWRhcHRlckZsYWdzIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgXCIuLy4uL292ZXJyaWRlcy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgTG9nZ2luZyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEludGVyY2VwdG9yIHJlc3BvbnNpYmxlIGZvciBleGVjdXRpbmcgYWxsIHJlZ2lzdGVyZWQgRGVjYWYgcmVxdWVzdCBoYW5kbGVyc1xuICogYmVmb3JlIHRoZSBjb250cm9sbGVyIG1ldGhvZCBpcyBpbnZva2VkLlxuICpcbiAqIEBzdW1tYXJ5XG4gKiBUaGUge0BsaW5rIERlY2FmUmVxdWVzdEhhbmRsZXJJbnRlcmNlcHRvcn0gaW50ZWdyYXRlcyB0aGUgRGVjYWYgcmVxdWVzdC1oYW5kbGluZyBwaXBlbGluZVxuICogaW50byBOZXN0SlMnIGludGVyY2VwdG9yIG1lY2hhbmlzbS4gQmVmb3JlIHBhc3NpbmcgZXhlY3V0aW9uIHRvIHRoZSBuZXh0IGhhbmRsZXIgaW4gdGhlXG4gKiBOZXN0SlMgY2hhaW4sIGl0IGRlbGVnYXRlcyByZXF1ZXN0IHByb2Nlc3NpbmcgdG8gdGhlIHtAbGluayBEZWNhZkhhbmRsZXJFeGVjdXRvcn0sIHdoaWNoXG4gKiBzZXF1ZW50aWFsbHkgcnVucyBhbGwgcmVnaXN0ZXJlZCB7QGxpbmsgRGVjYWZSZXF1ZXN0SGFuZGxlcn0gaW5zdGFuY2VzLiBUaGlzIGFsbG93c1xuICogYmVoYXZpb3JzIHN1Y2ggYXMgYXV0aGVudGljYXRpb24sIGxvZ2dpbmcsIHRlbmFudCByZXNvbHV0aW9uLCBvciBtZXRhZGF0YSBlbnJpY2htZW50XG4gKiB0byBvY2N1ciBwcmlvciB0byBjb250cm9sbGVyIGV4ZWN1dGlvbi5cbiAqXG4gKiBAY2xhc3MgRGVjYWZSZXF1ZXN0SGFuZGxlckludGVyY2VwdG9yXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyBBcHBseSBnbG9iYWxseTpcbiAqIGFwcC51c2VHbG9iYWxJbnRlcmNlcHRvcnMobmV3IERlY2FmUmVxdWVzdEhhbmRsZXJJbnRlcmNlcHRvcihleGVjdXRvcikpO1xuICpcbiAqIC8vIE9yIGluIGEgbW9kdWxlOlxuICogQE1vZHVsZSh7XG4gKiAgIHByb3ZpZGVyczogW1xuICogICAgIERlY2FmSGFuZGxlckV4ZWN1dG9yLFxuICogICAgIHtcbiAqICAgICAgIHByb3ZpZGU6IEFQUF9JTlRFUkNFUFRPUixcbiAqICAgICAgIHVzZUNsYXNzOiBEZWNhZlJlcXVlc3RIYW5kbGVySW50ZXJjZXB0b3IsXG4gKiAgICAgfSxcbiAqICAgXSxcbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwTW9kdWxlIHt9XG4gKiBgYGBcbiAqXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgICAgcGFydGljaXBhbnQgQ2xpZW50XG4gKiAgICAgcGFydGljaXBhbnQgSW50ZXJjZXB0b3JcbiAqICAgICBwYXJ0aWNpcGFudCBFeGVjdXRvclxuICogICAgIHBhcnRpY2lwYW50IENvbnRyb2xsZXJcbiAqXG4gKiAgICAgQ2xpZW50LT4+SW50ZXJjZXB0b3I6IEhUVFAgUmVxdWVzdFxuICogICAgIEludGVyY2VwdG9yLT4+RXhlY3V0b3I6IGV4ZWMocmVxdWVzdClcbiAqICAgICBFeGVjdXRvci0tPj5JbnRlcmNlcHRvcjogaGFuZGxlcnMgY29tcGxldGVkXG4gKiAgICAgSW50ZXJjZXB0b3ItPj5Db250cm9sbGVyOiBuZXh0LmhhbmRsZSgpXG4gKiAgICAgQ29udHJvbGxlci0tPj5DbGllbnQ6IFJlc3BvbnNlXG4gKi9cbmxldCBEZWNhZlJlcXVlc3RIYW5kbGVySW50ZXJjZXB0b3IgPSBEZWNhZlJlcXVlc3RIYW5kbGVySW50ZXJjZXB0b3JfMSA9IGNsYXNzIERlY2FmUmVxdWVzdEhhbmRsZXJJbnRlcmNlcHRvciB7XG4gICAgY29uc3RydWN0b3IocmVxdWVzdENvbnRleHQsIGV4ZWN1dG9yKSB7XG4gICAgICAgIHRoaXMucmVxdWVzdENvbnRleHQgPSByZXF1ZXN0Q29udGV4dDtcbiAgICAgICAgdGhpcy5leGVjdXRvciA9IGV4ZWN1dG9yO1xuICAgIH1cbiAgICBhc3luYyBjb250ZXh0dWFsaXplKHJlcSkge1xuICAgICAgICBjb25zdCBoZWFkZXJzID0gcmVxLmhlYWRlcnM7XG4gICAgICAgIGNvbnN0IGZsYWdzID0ge1xuICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgIG92ZXJyaWRlczoge30sXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGlwID0gZXh0cmFjdElwKHJlcSk7XG4gICAgICAgIGNvbnN0IGxvZ2dlciA9IExvZ2dpbmcuZ2V0KCkuZm9yKHsgaXAgfSk7XG4gICAgICAgIHRoaXMucmVxdWVzdENvbnRleHQuYWNjdW11bGF0ZShPYmplY3QuYXNzaWduKHt9LCBEZWZhdWx0QWRhcHRlckZsYWdzLCB7XG4gICAgICAgICAgICBsb2dnZXIsXG4gICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICBvcGVyYXRpb246IGAke3JlcS5tZXRob2R9ICR7cmVxLnVybH1gLFxuICAgICAgICB9LCBmbGFncykpO1xuICAgIH1cbiAgICBhc3luYyBpbnRlcmNlcHQoY29udGV4dCwgbmV4dCkge1xuICAgICAgICBjb25zdCByZXEgPSBjb250ZXh0LnN3aXRjaFRvSHR0cCgpLmdldFJlcXVlc3QoKTtcbiAgICAgICAgY29uc3QgcmVzID0gY29udGV4dC5zd2l0Y2hUb0h0dHAoKS5nZXRSZXNwb25zZSgpO1xuICAgICAgICBjb25zdCBsb2cgPSBMb2dnaW5nLmZvcihEZWNhZlJlcXVlc3RIYW5kbGVySW50ZXJjZXB0b3JfMSkuZm9yKHRoaXMuaW50ZXJjZXB0KTtcbiAgICAgICAgbG9nLmRlYnVnKGBDT05URVhUICR7dGhpcy5yZXF1ZXN0Q29udGV4dC51dWlkfSAtIHJlcXVlc3Q6ICR7cmVxLm1ldGhvZH0gJHtyZXEudXJsfWApO1xuICAgICAgICBhd2FpdCB0aGlzLmNvbnRleHR1YWxpemUocmVxKTtcbiAgICAgICAgbG9nLmRlYnVnKGBDT05URVhUICR7dGhpcy5yZXF1ZXN0Q29udGV4dC51dWlkfSBjb250ZXh0dWFsaXplZCAtIHJlcXVlc3Q6ICR7cmVxLm1ldGhvZH0gJHtyZXEudXJsfWApO1xuICAgICAgICBhd2FpdCB0aGlzLmV4ZWN1dG9yLmV4ZWMocmVxLCByZXMpO1xuICAgICAgICBsb2cuZGVidWcoYENPTlRFWFQgJHt0aGlzLnJlcXVlc3RDb250ZXh0LnV1aWR9IGV4ZWN1dG9ycyBmaW5pc2hlZCAtIHJlcXVlc3Q6ICR7cmVxLm1ldGhvZH0gJHtyZXEudXJsfWApO1xuICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUoKTtcbiAgICB9XG59O1xuRGVjYWZSZXF1ZXN0SGFuZGxlckludGVyY2VwdG9yID0gRGVjYWZSZXF1ZXN0SGFuZGxlckludGVyY2VwdG9yXzEgPSBfX2RlY29yYXRlKFtcbiAgICBJbmplY3RhYmxlKHsgc2NvcGU6IFNjb3BlLlJFUVVFU1QgfSksXG4gICAgX19tZXRhZGF0YShcImRlc2lnbjpwYXJhbXR5cGVzXCIsIFtEZWNhZlJlcXVlc3RDb250ZXh0LFxuICAgICAgICBEZWNhZkhhbmRsZXJFeGVjdXRvcl0pXG5dLCBEZWNhZlJlcXVlc3RIYW5kbGVySW50ZXJjZXB0b3IpO1xuZXhwb3J0IHsgRGVjYWZSZXF1ZXN0SGFuZGxlckludGVyY2VwdG9yIH07XG5mdW5jdGlvbiBleHRyYWN0SXAocmVxKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHJlcS5oZWFkZXJzO1xuICAgIGZ1bmN0aW9uIHBhcnNlSXBIZWFkZXIodmFsdWUpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSlcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWVbMF0gOiB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZVxuICAgICAgICAgICAgLnNwbGl0KFwiLFwiKVxuICAgICAgICAgICAgLm1hcCgoc2VnbWVudCkgPT4gc2VnbWVudC50cmltKCkpXG4gICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pWzBdO1xuICAgIH1cbiAgICByZXR1cm4gKHBhcnNlSXBIZWFkZXIoaGVhZGVycz8uW1wieC1mb3J3YXJkZWQtZm9yXCJdKSA/P1xuICAgICAgICBwYXJzZUlwSGVhZGVyKGhlYWRlcnM/LltcIngtcmVhbC1pcFwiXSkgPz9cbiAgICAgICAgcGFyc2VJcEhlYWRlcihoZWFkZXJzPy5bXCJYLUZvcndhcmRlZC1Gb3JcIl0pID8/XG4gICAgICAgIHBhcnNlSXBIZWFkZXIoaGVhZGVycz8uW1wiWC1SZWFsLUlQXCJdKSA/P1xuICAgICAgICByZXEuaXApO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pUkdWallXWlNaWEYxWlhOMFNHRnVaR3hsY2tsdWRHVnlZMlZ3ZEc5eUxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZMaTR2YzNKakwybHVkR1Z5WTJWd2RHOXljeTlFWldOaFpsSmxjWFZsYzNSSVlXNWtiR1Z5U1c1MFpYSmpaWEIwYjNJdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN096dEJRVUZCTEU5QlFVOHNSVUZIVEN4VlFVRlZMRVZCUlZZc1MwRkJTeXhIUVVOT0xFMUJRVTBzWjBKQlFXZENMRU5CUVVNN1FVRkRlRUlzVDBGQlR5eEZRVUZGTEc5Q1FVRnZRaXhGUVVGRkxHMUNRVUZ0UWl4RlFVRkZMRGhDUVVGdFFqdEJRVU4yUlN4UFFVRlBMRVZCUVVVc2JVSkJRVzFDTEVWQlFVVXNUVUZCVFN4blFrRkJaMElzUTBGQlF6dEJRVVZ5UkN4cFEwRkJjMEk3UVVGRGRFSXNUMEZCVHl4RlFVRkZMRTlCUVU4c1JVRkJSU3hOUVVGTkxHMUNRVUZ0UWl4RFFVRkRPMEZCUlRWRE96czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN1IwRTJRMGM3UVVGRlNTeEpRVUZOTERoQ1FVRTRRaXh6UTBGQmNFTXNUVUZCVFN3NFFrRkJPRUk3U1VGRGVrTXNXVUZEY1VJc1kwRkJiVU1zUlVGRGJrTXNVVUZCT0VJN1VVRkVPVUlzYlVKQlFXTXNSMEZCWkN4alFVRmpMRU5CUVhGQ08xRkJRMjVETEdGQlFWRXNSMEZCVWl4UlFVRlJMRU5CUVhOQ08wbEJRMmhFTEVOQlFVTTdTVUZGVFN4TFFVRkxMRU5CUVVNc1lVRkJZU3hEUVVGRExFZEJRVkU3VVVGRGNFTXNUVUZCVFN4UFFVRlBMRWRCUVVjc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF6dFJRVU0xUWl4TlFVRk5MRXRCUVVzc1IwRkJjVUk3V1VGRE9VSXNUMEZCVHl4RlFVRkZMRTlCUVU4N1dVRkRhRUlzVTBGQlV5eEZRVUZGTEVWQlFVVTdVMEZEVUN4RFFVRkRPMUZCUlZRc1RVRkJUU3hGUVVGRkxFZEJRVWNzVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUXpGQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEU5QlFVOHNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUlhwRExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNWVUZCVlN4RFFVTTFRaXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVU5ZTEVWQlFVVXNSVUZEUml4dFFrRkJiVUlzUlVGRGJrSTdXVUZEUlN4TlFVRk5PMWxCUTA0c1UwRkJVeXhGUVVGRkxFbEJRVWtzU1VGQlNTeEZRVUZGTzFsQlEzSkNMRk5CUVZNc1JVRkJSU3hIUVVGSExFZEJRVWNzUTBGQlF5eE5RVUZOTEVsQlFVa3NSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSVHRUUVVOMFF5eEZRVU5FTEV0QlFVc3NRMEZEVGl4RFFVTkdMRU5CUVVNN1NVRkRTaXhEUVVGRE8wbEJSVVFzUzBGQlN5eERRVUZETEZOQlFWTXNRMEZCUXl4UFFVRjVRaXhGUVVGRkxFbEJRV2xDTzFGQlF6RkVMRTFCUVUwc1IwRkJSeXhIUVVGSExFOUJRVThzUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJRenRSUVVOb1JDeE5RVUZOTEVkQlFVY3NSMEZCUnl4UFFVRlBMRU5CUVVNc1dVRkJXU3hGUVVGRkxFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTTdVVUZEYWtRc1RVRkJUU3hIUVVGSExFZEJRVWNzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4blEwRkJPRUlzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03VVVGRE5VVXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkRVQ3hYUVVGWExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNTVUZCU1N4bFFVRmxMRWRCUVVjc1EwRkJReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVTXhSU3hEUVVGRE8xRkJRMFlzVFVGQlRTeEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRemxDTEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUTFBc1YwRkJWeXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEVsQlFVa3NPRUpCUVRoQ0xFZEJRVWNzUTBGQlF5eE5RVUZOTEVsQlFVa3NSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVONlJpeERRVUZETzFGQlJVWXNUVUZCVFN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRia01zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZEVUN4WFFVRlhMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zU1VGQlNTeHJRMEZCYTBNc1IwRkJSeXhEUVVGRExFMUJRVTBzU1VGQlNTeEhRVUZITEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUXpkR0xFTkJRVU03VVVGRFJpeFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRKUVVOMlFpeERRVUZETzBOQlEwWXNRMEZCUVR0QlFXaEVXU3c0UWtGQk9FSTdTVUZFTVVNc1ZVRkJWU3hEUVVGRExFVkJRVVVzUzBGQlN5eEZRVUZGTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenR4UTBGSFJTeHRRa0ZCYlVJN1VVRkRla0lzYjBKQlFXOUNPMGRCU0hoRExEaENRVUU0UWl4RFFXZEVNVU03TzBGQlJVUXNVMEZCVXl4VFFVRlRMRU5CUVVNc1IwRkJVVHRKUVVONlFpeE5RVUZOTEU5QlFVOHNSMEZCUnl4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRE8wbEJRelZDTEZOQlFWTXNZVUZCWVN4RFFVRkRMRXRCUVhsQ08xRkJRemxETEVsQlFVa3NRMEZCUXl4TFFVRkxPMWxCUVVVc1QwRkJUeXhUUVVGVExFTkJRVU03VVVGRE4wSXNUVUZCVFN4VFFVRlRMRWRCUVVjc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNN1VVRkRNVVFzVDBGQlR5eFRRVUZUTzJGQlEySXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJRenRoUVVOV0xFZEJRVWNzUTBGQlF5eERRVUZETEU5QlFVOHNSVUZCUlN4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETzJGQlEyaERMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjRRaXhEUVVGRE8wbEJRMFFzVDBGQlR5eERRVU5NTEdGQlFXRXNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4RFFVRkRPMUZCUXpORExHRkJRV0VzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJRenRSUVVOeVF5eGhRVUZoTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNRMEZCUXp0UlFVTXpReXhoUVVGaExFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNN1VVRkRja01zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZEVUN4RFFVRkRPMEZCUTBvc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0I3WEc0Z0lFTmhiR3hJWVc1a2JHVnlMRnh1SUNCRmVHVmpkWFJwYjI1RGIyNTBaWGgwTEZ4dUlDQkpibXBsWTNSaFlteGxMRnh1SUNCT1pYTjBTVzUwWlhKalpYQjBiM0lzWEc0Z0lGTmpiM0JsTEZ4dWZTQm1jbTl0SUZ3aVFHNWxjM1JxY3k5amIyMXRiMjVjSWp0Y2JtbHRjRzl5ZENCN0lFUmxZMkZtU0dGdVpHeGxja1Y0WldOMWRHOXlMQ0JFWldOaFpsSmxjWFZsYzNSRGIyNTBaWGgwSUgwZ1puSnZiU0JjSWk0dUwzSmxjWFZsYzNSY0lqdGNibWx0Y0c5eWRDQjdJRVJsWm1GMWJIUkJaR0Z3ZEdWeVJteGhaM01nZlNCbWNtOXRJRndpUUdSbFkyRm1MWFJ6TDJOdmNtVmNJanRjYm1sdGNHOXlkQ0I3SUVSbFkyRm1VMlZ5ZG1WeVJteGhaM01nZlNCbWNtOXRJRndpTGk0dlkyOXVjM1JoYm5SelhDSTdYRzVwYlhCdmNuUWdYQ0l1TGk5dmRtVnljbWxrWlhOY0lqdGNibWx0Y0c5eWRDQjdJRXh2WjJkcGJtY2dmU0JtY205dElGd2lRR1JsWTJGbUxYUnpMMnh2WjJkcGJtZGNJanRjYmx4dUx5b3FYRzRnS2lCQVpHVnpZM0pwY0hScGIyNWNiaUFxSUVsdWRHVnlZMlZ3ZEc5eUlISmxjM0J2Ym5OcFlteGxJR1p2Y2lCbGVHVmpkWFJwYm1jZ1lXeHNJSEpsWjJsemRHVnlaV1FnUkdWallXWWdjbVZ4ZFdWemRDQm9ZVzVrYkdWeWMxeHVJQ29nWW1WbWIzSmxJSFJvWlNCamIyNTBjbTlzYkdWeUlHMWxkR2h2WkNCcGN5QnBiblp2YTJWa0xseHVJQ3BjYmlBcUlFQnpkVzF0WVhKNVhHNGdLaUJVYUdVZ2UwQnNhVzVySUVSbFkyRm1VbVZ4ZFdWemRFaGhibVJzWlhKSmJuUmxjbU5sY0hSdmNuMGdhVzUwWldkeVlYUmxjeUIwYUdVZ1JHVmpZV1lnY21WeGRXVnpkQzFvWVc1a2JHbHVaeUJ3YVhCbGJHbHVaVnh1SUNvZ2FXNTBieUJPWlhOMFNsTW5JR2x1ZEdWeVkyVndkRzl5SUcxbFkyaGhibWx6YlM0Z1FtVm1iM0psSUhCaGMzTnBibWNnWlhobFkzVjBhVzl1SUhSdklIUm9aU0J1WlhoMElHaGhibVJzWlhJZ2FXNGdkR2hsWEc0Z0tpQk9aWE4wU2xNZ1kyaGhhVzRzSUdsMElHUmxiR1ZuWVhSbGN5QnlaWEYxWlhOMElIQnliMk5sYzNOcGJtY2dkRzhnZEdobElIdEFiR2x1YXlCRVpXTmhaa2hoYm1Sc1pYSkZlR1ZqZFhSdmNuMHNJSGRvYVdOb1hHNGdLaUJ6WlhGMVpXNTBhV0ZzYkhrZ2NuVnVjeUJoYkd3Z2NtVm5hWE4wWlhKbFpDQjdRR3hwYm1zZ1JHVmpZV1pTWlhGMVpYTjBTR0Z1Wkd4bGNuMGdhVzV6ZEdGdVkyVnpMaUJVYUdseklHRnNiRzkzYzF4dUlDb2dZbVZvWVhacGIzSnpJSE4xWTJnZ1lYTWdZWFYwYUdWdWRHbGpZWFJwYjI0c0lHeHZaMmRwYm1jc0lIUmxibUZ1ZENCeVpYTnZiSFYwYVc5dUxDQnZjaUJ0WlhSaFpHRjBZU0JsYm5KcFkyaHRaVzUwWEc0Z0tpQjBieUJ2WTJOMWNpQndjbWx2Y2lCMGJ5QmpiMjUwY205c2JHVnlJR1Y0WldOMWRHbHZiaTVjYmlBcVhHNGdLaUJBWTJ4aGMzTWdSR1ZqWVdaU1pYRjFaWE4wU0dGdVpHeGxja2x1ZEdWeVkyVndkRzl5WEc0Z0tseHVJQ29nUUdWNFlXMXdiR1ZjYmlBcUlHQmdZSFJ6WEc0Z0tpQXZMeUJCY0hCc2VTQm5iRzlpWVd4c2VUcGNiaUFxSUdGd2NDNTFjMlZIYkc5aVlXeEpiblJsY21ObGNIUnZjbk1vYm1WM0lFUmxZMkZtVW1WeGRXVnpkRWhoYm1Sc1pYSkpiblJsY21ObGNIUnZjaWhsZUdWamRYUnZjaWtwTzF4dUlDcGNiaUFxSUM4dklFOXlJR2x1SUdFZ2JXOWtkV3hsT2x4dUlDb2dRRTF2WkhWc1pTaDdYRzRnS2lBZ0lIQnliM1pwWkdWeWN6b2dXMXh1SUNvZ0lDQWdJRVJsWTJGbVNHRnVaR3hsY2tWNFpXTjFkRzl5TEZ4dUlDb2dJQ0FnSUh0Y2JpQXFJQ0FnSUNBZ0lIQnliM1pwWkdVNklFRlFVRjlKVGxSRlVrTkZVRlJQVWl4Y2JpQXFJQ0FnSUNBZ0lIVnpaVU5zWVhOek9pQkVaV05oWmxKbGNYVmxjM1JJWVc1a2JHVnlTVzUwWlhKalpYQjBiM0lzWEc0Z0tpQWdJQ0FnZlN4Y2JpQXFJQ0FnWFN4Y2JpQXFJSDBwWEc0Z0tpQmxlSEJ2Y25RZ1kyeGhjM01nUVhCd1RXOWtkV3hsSUh0OVhHNGdLaUJnWUdCY2JpQXFYRzRnS2lCQWJXVnliV0ZwWkZ4dUlDb2djMlZ4ZFdWdVkyVkVhV0ZuY21GdFhHNGdLaUFnSUNBZ2NHRnlkR2xqYVhCaGJuUWdRMnhwWlc1MFhHNGdLaUFnSUNBZ2NHRnlkR2xqYVhCaGJuUWdTVzUwWlhKalpYQjBiM0pjYmlBcUlDQWdJQ0J3WVhKMGFXTnBjR0Z1ZENCRmVHVmpkWFJ2Y2x4dUlDb2dJQ0FnSUhCaGNuUnBZMmx3WVc1MElFTnZiblJ5YjJ4c1pYSmNiaUFxWEc0Z0tpQWdJQ0FnUTJ4cFpXNTBMVDQrU1c1MFpYSmpaWEIwYjNJNklFaFVWRkFnVW1WeGRXVnpkRnh1SUNvZ0lDQWdJRWx1ZEdWeVkyVndkRzl5TFQ0K1JYaGxZM1YwYjNJNklHVjRaV01vY21WeGRXVnpkQ2xjYmlBcUlDQWdJQ0JGZUdWamRYUnZjaTB0UGo1SmJuUmxjbU5sY0hSdmNqb2dhR0Z1Wkd4bGNuTWdZMjl0Y0d4bGRHVmtYRzRnS2lBZ0lDQWdTVzUwWlhKalpYQjBiM0l0UGo1RGIyNTBjbTlzYkdWeU9pQnVaWGgwTG1oaGJtUnNaU2dwWEc0Z0tpQWdJQ0FnUTI5dWRISnZiR3hsY2kwdFBqNURiR2xsYm5RNklGSmxjM0J2Ym5ObFhHNGdLaTljYmtCSmJtcGxZM1JoWW14bEtIc2djMk52Y0dVNklGTmpiM0JsTGxKRlVWVkZVMVFnZlNsY2JtVjRjRzl5ZENCamJHRnpjeUJFWldOaFpsSmxjWFZsYzNSSVlXNWtiR1Z5U1c1MFpYSmpaWEIwYjNJZ2FXMXdiR1Z0Wlc1MGN5Qk9aWE4wU1c1MFpYSmpaWEIwYjNJZ2UxeHVJQ0JqYjI1emRISjFZM1J2Y2loY2JpQWdJQ0J3Y205MFpXTjBaV1FnY21WaFpHOXViSGtnY21WeGRXVnpkRU52Ym5SbGVIUTZJRVJsWTJGbVVtVnhkV1Z6ZEVOdmJuUmxlSFFzWEc0Z0lDQWdjSEp2ZEdWamRHVmtJSEpsWVdSdmJteDVJR1Y0WldOMWRHOXlPaUJFWldOaFpraGhibVJzWlhKRmVHVmpkWFJ2Y2x4dUlDQXBJSHQ5WEc1Y2JpQWdjSEp2ZEdWamRHVmtJR0Z6ZVc1aklHTnZiblJsZUhSMVlXeHBlbVVvY21WeE9pQmhibmtwT2lCUWNtOXRhWE5sUEhadmFXUStJSHRjYmlBZ0lDQmpiMjV6ZENCb1pXRmtaWEp6SUQwZ2NtVnhMbWhsWVdSbGNuTTdYRzRnSUNBZ1kyOXVjM1FnWm14aFozTTZJRVJsWTJGbVUyVnlkbVZ5Um14aFozTWdQU0I3WEc0Z0lDQWdJQ0JvWldGa1pYSnpPaUJvWldGa1pYSnpMRnh1SUNBZ0lDQWdiM1psY25KcFpHVnpPaUI3ZlN4Y2JpQWdJQ0I5SUdGeklHRnVlVHRjYmx4dUlDQWdJR052Ym5OMElHbHdJRDBnWlhoMGNtRmpkRWx3S0hKbGNTazdYRzRnSUNBZ1kyOXVjM1FnYkc5bloyVnlJRDBnVEc5bloybHVaeTVuWlhRb0tTNW1iM0lvZXlCcGNDQjlLVHRjYmx4dUlDQWdJSFJvYVhNdWNtVnhkV1Z6ZEVOdmJuUmxlSFF1WVdOamRXMTFiR0YwWlNoY2JpQWdJQ0FnSUU5aWFtVmpkQzVoYzNOcFoyNG9YRzRnSUNBZ0lDQWdJSHQ5TEZ4dUlDQWdJQ0FnSUNCRVpXWmhkV3gwUVdSaGNIUmxja1pzWVdkekxGeHVJQ0FnSUNBZ0lDQjdYRzRnSUNBZ0lDQWdJQ0FnYkc5bloyVnlMRnh1SUNBZ0lDQWdJQ0FnSUhScGJXVnpkR0Z0Y0RvZ2JtVjNJRVJoZEdVb0tTeGNiaUFnSUNBZ0lDQWdJQ0J2Y0dWeVlYUnBiMjQ2SUdBa2UzSmxjUzV0WlhSb2IyUjlJQ1I3Y21WeExuVnliSDFnTEZ4dUlDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQm1iR0ZuYzF4dUlDQWdJQ0FnS1Z4dUlDQWdJQ2s3WEc0Z0lIMWNibHh1SUNCaGMzbHVZeUJwYm5SbGNtTmxjSFFvWTI5dWRHVjRkRG9nUlhobFkzVjBhVzl1UTI5dWRHVjRkQ3dnYm1WNGREb2dRMkZzYkVoaGJtUnNaWElwSUh0Y2JpQWdJQ0JqYjI1emRDQnlaWEVnUFNCamIyNTBaWGgwTG5OM2FYUmphRlJ2U0hSMGNDZ3BMbWRsZEZKbGNYVmxjM1FvS1R0Y2JpQWdJQ0JqYjI1emRDQnlaWE1nUFNCamIyNTBaWGgwTG5OM2FYUmphRlJ2U0hSMGNDZ3BMbWRsZEZKbGMzQnZibk5sS0NrN1hHNGdJQ0FnWTI5dWMzUWdiRzluSUQwZ1RHOW5aMmx1Wnk1bWIzSW9SR1ZqWVdaU1pYRjFaWE4wU0dGdVpHeGxja2x1ZEdWeVkyVndkRzl5S1M1bWIzSW9kR2hwY3k1cGJuUmxjbU5sY0hRcE8xeHVJQ0FnSUd4dlp5NWtaV0oxWnloY2JpQWdJQ0FnSUdCRFQwNVVSVmhVSUNSN2RHaHBjeTV5WlhGMVpYTjBRMjl1ZEdWNGRDNTFkV2xrZlNBdElISmxjWFZsYzNRNklDUjdjbVZ4TG0xbGRHaHZaSDBnSkh0eVpYRXVkWEpzZldCY2JpQWdJQ0FwTzF4dUlDQWdJR0YzWVdsMElIUm9hWE11WTI5dWRHVjRkSFZoYkdsNlpTaHlaWEVwTzF4dUlDQWdJR3h2Wnk1a1pXSjFaeWhjYmlBZ0lDQWdJR0JEVDA1VVJWaFVJQ1I3ZEdocGN5NXlaWEYxWlhOMFEyOXVkR1Y0ZEM1MWRXbGtmU0JqYjI1MFpYaDBkV0ZzYVhwbFpDQXRJSEpsY1hWbGMzUTZJQ1I3Y21WeExtMWxkR2h2WkgwZ0pIdHlaWEV1ZFhKc2ZXQmNiaUFnSUNBcE8xeHVYRzRnSUNBZ1lYZGhhWFFnZEdocGN5NWxlR1ZqZFhSdmNpNWxlR1ZqS0hKbGNTd2djbVZ6S1R0Y2JpQWdJQ0JzYjJjdVpHVmlkV2NvWEc0Z0lDQWdJQ0JnUTA5T1ZFVllWQ0FrZTNSb2FYTXVjbVZ4ZFdWemRFTnZiblJsZUhRdWRYVnBaSDBnWlhobFkzVjBiM0p6SUdacGJtbHphR1ZrSUMwZ2NtVnhkV1Z6ZERvZ0pIdHlaWEV1YldWMGFHOWtmU0FrZTNKbGNTNTFjbXg5WUZ4dUlDQWdJQ2s3WEc0Z0lDQWdjbVYwZFhKdUlHNWxlSFF1YUdGdVpHeGxLQ2s3WEc0Z0lIMWNibjFjYmx4dVpuVnVZM1JwYjI0Z1pYaDBjbUZqZEVsd0tISmxjVG9nWVc1NUtUb2djM1J5YVc1bklId2dkVzVrWldacGJtVmtJSHRjYmlBZ1kyOXVjM1FnYUdWaFpHVnljeUE5SUhKbGNTNW9aV0ZrWlhKek8xeHVJQ0JtZFc1amRHbHZiaUJ3WVhKelpVbHdTR1ZoWkdWeUtIWmhiSFZsUHpvZ2MzUnlhVzVuSUh3Z2MzUnlhVzVuVzEwcE9pQnpkSEpwYm1jZ2ZDQjFibVJsWm1sdVpXUWdlMXh1SUNBZ0lHbG1JQ2doZG1Gc2RXVXBJSEpsZEhWeWJpQjFibVJsWm1sdVpXUTdYRzRnSUNBZ1kyOXVjM1FnWTJGdVpHbGtZWFJsSUQwZ1FYSnlZWGt1YVhOQmNuSmhlU2gyWVd4MVpTa2dQeUIyWVd4MVpWc3dYU0E2SUhaaGJIVmxPMXh1SUNBZ0lISmxkSFZ5YmlCallXNWthV1JoZEdWY2JpQWdJQ0FnSUM1emNHeHBkQ2hjSWl4Y0lpbGNiaUFnSUNBZ0lDNXRZWEFvS0hObFoyMWxiblFwSUQwK0lITmxaMjFsYm5RdWRISnBiU2dwS1Z4dUlDQWdJQ0FnTG1acGJIUmxjaWhDYjI5c1pXRnVLVnN3WFR0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnS0Z4dUlDQWdJSEJoY25ObFNYQklaV0ZrWlhJb2FHVmhaR1Z5Y3o4dVcxd2llQzFtYjNKM1lYSmtaV1F0Wm05eVhDSmRLU0EvUDF4dUlDQWdJSEJoY25ObFNYQklaV0ZrWlhJb2FHVmhaR1Z5Y3o4dVcxd2llQzF5WldGc0xXbHdYQ0pkS1NBL1AxeHVJQ0FnSUhCaGNuTmxTWEJJWldGa1pYSW9hR1ZoWkdWeWN6OHVXMXdpV0MxR2IzSjNZWEprWldRdFJtOXlYQ0pkS1NBL1AxeHVJQ0FnSUhCaGNuTmxTWEJJWldGa1pYSW9hR1ZoWkdWeWN6OHVXMXdpV0MxU1pXRnNMVWxRWENKZEtTQS9QMXh1SUNBZ0lISmxjUzVwY0Z4dUlDQXBPMXh1ZlZ4dUlsMTkiXX0=
|
package/lib/cjs/module.cjs
CHANGED
|
@@ -32,6 +32,7 @@ let DecafModule = DecafModule_1 = class DecafModule {
|
|
|
32
32
|
autoServices,
|
|
33
33
|
controllerExposure: options.controllerExposure,
|
|
34
34
|
controllerConfig: options.controllerConfig,
|
|
35
|
+
aggregations: options.aggregations,
|
|
35
36
|
}));
|
|
36
37
|
});
|
|
37
38
|
}
|
|
@@ -49,5 +50,5 @@ exports.DecafModule = DecafModule = DecafModule_1 = __decorate([
|
|
|
49
50
|
(0, common_1.Module)({})
|
|
50
51
|
], DecafModule);
|
|
51
52
|
async function runMigrations() { }
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibW9kdWxlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTBDQSxzQ0FBeUM7QUExQ3pDLElBQUksVUFBVSxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUk7SUFDakYsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3SCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLE9BQU8sQ0FBQyxRQUFRLEtBQUssVUFBVTtRQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDOztRQUMxSCxLQUFLLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQUUsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xKLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsRSxDQUFDLENBQUM7QUFDRixJQUFJLGFBQWEsQ0FBQztBQUNsQiwyQ0FBd0M7QUFDeEMscURBQW1EO0FBQ25ELHFEQUFzRDtBQUN0RCx1REFBNkQ7QUFDN0Q7O0dBRUc7QUFDSCxJQUFJLFdBQVcsR0FBRyxhQUFhLEdBQUcsTUFBTSxXQUFXO0lBQy9DLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU87UUFDN0IsTUFBTSxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDbEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxnQ0FBZSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRSxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxnQ0FBZSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ25ELElBQUksZUFBZSxFQUFFLENBQUM7WUFDbEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUN6QixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUEsdUJBQVksRUFBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO29CQUNoRCxZQUFZO29CQUNaLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxrQkFBa0I7b0JBQzlDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxnQkFBZ0I7aUJBQzdDLENBQUMsQ0FBQyxDQUFDO1lBQ1IsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsZUFBZSxFQUFFLG9CQUFvQixFQUFFLENBQUM7WUFDaEQsT0FBTyxDQUFDLElBQUksQ0FBQyw0QkFBaUIsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3RHLENBQUM7UUFDRCxPQUFPO1lBQ0gsTUFBTSxFQUFFLGFBQWE7WUFDckIsT0FBTyxFQUFFLE9BQU87U0FDbkIsQ0FBQztJQUNOLENBQUM7Q0FDSixDQUFDO0FBSU8sa0NBQVc7QUFIcEIsc0JBQUEsV0FBVyxHQUFHLGFBQWEsR0FBRyxVQUFVLENBQUM7SUFDckMsSUFBQSxlQUFNLEVBQUMsRUFBRSxDQUFDO0NBQ2IsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUVULEtBQUssVUFBVSxhQUFhLEtBQUssQ0FBQztBQUN6QyxzMkhBQXMySCIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2RlY29yYXRlID0gKHRoaXMgJiYgdGhpcy5fX2RlY29yYXRlKSB8fCBmdW5jdGlvbiAoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufTtcbnZhciBEZWNhZk1vZHVsZV8xO1xuaW1wb3J0IHsgTW9kdWxlIH0gZnJvbSBcIkBuZXN0anMvY29tbW9uXCI7XG5pbXBvcnQgeyBEZWNhZkNvcmVNb2R1bGUgfSBmcm9tIFwiLi9jb3JlLW1vZHVsZS5qc1wiO1xuaW1wb3J0IHsgZ2V0TW9kdWxlRm9yIH0gZnJvbSBcIi4vZGVjYWYtbW9kZWwvaW5kZXguanNcIjtcbmltcG9ydCB7IERlY2FmU3RyZWFtTW9kdWxlIH0gZnJvbSBcIi4vZXZlbnRzLW1vZHVsZS9pbmRleC5qc1wiO1xuLyoqXG4gKiBAcHVibGljQXBpXG4gKi9cbmxldCBEZWNhZk1vZHVsZSA9IERlY2FmTW9kdWxlXzEgPSBjbGFzcyBEZWNhZk1vZHVsZSB7XG4gICAgc3RhdGljIGFzeW5jIGZvclJvb3RBc3luYyhvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHsgYXV0b0NvbnRyb2xsZXJzLCBhdXRvU2VydmljZXMgfSA9IG9wdGlvbnM7XG4gICAgICAgIGNvbnN0IGFkYXB0ZXJzID0gYXdhaXQgRGVjYWZDb3JlTW9kdWxlLmJvb3RQZXJzaXN0ZW5jZShvcHRpb25zKTtcbiAgICAgICAgY29uc3QgZmxhdm91cnMgPSBhZGFwdGVycy5tYXAoKGFkYXB0ZXIpID0+IGFkYXB0ZXIuZmxhdm91cik7XG4gICAgICAgIGNvbnN0IGltcG9ydHMgPSBbRGVjYWZDb3JlTW9kdWxlLmZvclJvb3Qob3B0aW9ucyldO1xuICAgICAgICBpZiAoYXV0b0NvbnRyb2xsZXJzKSB7XG4gICAgICAgICAgICBmbGF2b3Vycy5mb3JFYWNoKChmbGF2b3VyKSA9PiB7XG4gICAgICAgICAgICAgICAgaW1wb3J0cy5wdXNoKGdldE1vZHVsZUZvcihmbGF2b3VyKS5mb3JSb290KGZsYXZvdXIsIHtcbiAgICAgICAgICAgICAgICAgICAgYXV0b1NlcnZpY2VzLFxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyRXhwb3N1cmU6IG9wdGlvbnMuY29udHJvbGxlckV4cG9zdXJlLFxuICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyQ29uZmlnOiBvcHRpb25zLmNvbnRyb2xsZXJDb25maWcsXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMub2JzZXJ2ZXJPcHRpb25zPy5lbmFibGVPYnNlcnZlckV2ZW50cykge1xuICAgICAgICAgICAgaW1wb3J0cy5wdXNoKERlY2FmU3RyZWFtTW9kdWxlLmZvckZsYXZvdXJzKG9wdGlvbnMub2JzZXJ2ZXJPcHRpb25zLm9ic2VydmVyRmxhdm91cnMgfHwgZmxhdm91cnMpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbW9kdWxlOiBEZWNhZk1vZHVsZV8xLFxuICAgICAgICAgICAgaW1wb3J0czogaW1wb3J0cyxcbiAgICAgICAgfTtcbiAgICB9XG59O1xuRGVjYWZNb2R1bGUgPSBEZWNhZk1vZHVsZV8xID0gX19kZWNvcmF0ZShbXG4gICAgTW9kdWxlKHt9KVxuXSwgRGVjYWZNb2R1bGUpO1xuZXhwb3J0IHsgRGVjYWZNb2R1bGUgfTtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5NaWdyYXRpb25zKCkgeyB9XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liVzlrZFd4bExtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZjM0pqTDIxdlpIVnNaUzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN096czdPMEZCUVVFc1QwRkJUeXhGUVVGdFF5eE5RVUZOTEVWQlFWRXNUVUZCVFN4blFrRkJaMElzUTBGQlF6dEJRVVV2UlN4UFFVRlBMRVZCUVVVc1pVRkJaU3hGUVVGRkxIbENRVUZ6UWp0QlFVVm9SQ3hQUVVGUExFVkJRVVVzV1VGQldTeEZRVUZGTEN0Q1FVRTBRanRCUVVOdVJDeFBRVUZQTEVWQlFVVXNhVUpCUVdsQ0xFVkJRVVVzYVVOQlFYZENPMEZCUlhCRU96dEhRVVZITzBGQlJVa3NTVUZCVFN4WFFVRlhMRzFDUVVGcVFpeE5RVUZOTEZkQlFWYzdTVUZEZEVJc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eFpRVUZaTEVOQlEzWkNMRTlCUVRKQ08xRkJSVE5DTEUxQlFVMHNSVUZCUlN4bFFVRmxMRVZCUVVVc1dVRkJXU3hGUVVGRkxFZEJRVWNzVDBGQlR5eERRVUZETzFGQlJXeEVMRTFCUVUwc1VVRkJVU3hIUVVOYUxFMUJRVTBzWlVGQlpTeERRVUZETEdWQlFXVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVOcVJDeE5RVUZOTEZGQlFWRXNSMEZCUnl4UlFVRlJMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zVDBGQlR5eEZRVUZGTEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGRk5VUXNUVUZCVFN4UFFVRlBMRWRCVDBjc1EwRkJReXhsUVVGbExFTkJRVU1zVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZia1FzU1VGQlNTeGxRVUZsTEVWQlFVVXNRMEZCUXp0WlFVTnNRaXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNUMEZCVHl4RlFVRkZMRVZCUVVVN1owSkJRek5DTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUTFZc1dVRkJXU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4UFFVRlBMRVZCUVVVN2IwSkJRM0pETEZsQlFWazdiMEpCUTFvc2EwSkJRV3RDTEVWQlFVVXNUMEZCVHl4RFFVRkRMR3RDUVVGclFqdHZRa0ZET1VNc1owSkJRV2RDTEVWQlFVVXNUMEZCVHl4RFFVRkRMR2RDUVVGblFqdHBRa0ZETTBNc1EwRkJReXhEUVVOSUxFTkJRVU03V1VGRFNpeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTk1MRU5CUVVNN1VVRkZTQ3hKUVVGSkxFOUJRVThzUTBGQlF5eGxRVUZsTEVWQlFVVXNiMEpCUVc5Q0xFVkJRVVVzUTBGQlF6dFpRVU5zUkN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVOV0xHbENRVUZwUWl4RFFVRkRMRmRCUVZjc1EwRkRNMElzVDBGQlR5eERRVUZETEdWQlFXVXNRMEZCUXl4blFrRkJaMElzU1VGQlNTeFJRVUZSTEVOQlEzSkVMRU5CUTBZc1EwRkJRenRSUVVOS0xFTkJRVU03VVVGRlJDeFBRVUZQTzFsQlEwd3NUVUZCVFN4RlFVRkZMR0ZCUVZjN1dVRkRia0lzVDBGQlR5eEZRVUZGTEU5QlFVODdVMEZEYWtJc1EwRkJRenRKUVVOS0xFTkJRVU03UTBGRFJpeERRVUZCTzBGQk5VTlpMRmRCUVZjN1NVRkVka0lzVFVGQlRTeERRVUZETEVWQlFVVXNRMEZCUXp0SFFVTkZMRmRCUVZjc1EwRTBRM1pDT3p0QlFVVkVMRTFCUVUwc1EwRkJReXhMUVVGTExGVkJRVlVzWVVGQllTeExRVUZ0UWl4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHNnUkhsdVlXMXBZMDF2WkhWc1pTd2dSbTl5ZDJGeVpGSmxabVZ5Wlc1alpTd2dUVzlrZFd4bExDQlVlWEJsSUgwZ1puSnZiU0JjSWtCdVpYTjBhbk12WTI5dGJXOXVYQ0k3WEc1cGJYQnZjblFnZXlCRVpXTmhaazF2WkhWc1pVOXdkR2x2Ym5NZ2ZTQm1jbTl0SUZ3aUxpOTBlWEJsYzF3aU8xeHVhVzF3YjNKMElIc2dSR1ZqWVdaRGIzSmxUVzlrZFd4bElIMGdabkp2YlNCY0lpNHZZMjl5WlMxdGIyUjFiR1ZjSWp0Y2JtbHRjRzl5ZENCN0lFRmtZWEIwWlhJZ2ZTQm1jbTl0SUZ3aVFHUmxZMkZtTFhSekwyTnZjbVZjSWp0Y2JtbHRjRzl5ZENCN0lHZGxkRTF2WkhWc1pVWnZjaUI5SUdaeWIyMGdYQ0l1TDJSbFkyRm1MVzF2WkdWc0wybHVaR1Y0WENJN1hHNXBiWEJ2Y25RZ2V5QkVaV05oWmxOMGNtVmhiVTF2WkhWc1pTQjlJR1p5YjIwZ1hDSXVMMlYyWlc1MGN5MXRiMlIxYkdWY0lqdGNibHh1THlvcVhHNGdLaUJBY0hWaWJHbGpRWEJwWEc0Z0tpOWNia0JOYjJSMWJHVW9lMzBwWEc1bGVIQnZjblFnWTJ4aGMzTWdSR1ZqWVdaTmIyUjFiR1VnZTF4dUlDQnpkR0YwYVdNZ1lYTjVibU1nWm05eVVtOXZkRUZ6ZVc1aktGeHVJQ0FnSUc5d2RHbHZibk02SUVSbFkyRm1UVzlrZFd4bFQzQjBhVzl1YzF4dUlDQXBPaUJRY205dGFYTmxQRVI1Ym1GdGFXTk5iMlIxYkdVK0lIdGNiaUFnSUNCamIyNXpkQ0I3SUdGMWRHOURiMjUwY205c2JHVnljeXdnWVhWMGIxTmxjblpwWTJWeklIMGdQU0J2Y0hScGIyNXpPMXh1WEc0Z0lDQWdZMjl1YzNRZ1lXUmhjSFJsY25NNklFRmtZWEIwWlhJOFlXNTVMQ0JoYm5rc0lHRnVlU3dnWVc1NVBsdGRJRDFjYmlBZ0lDQWdJR0YzWVdsMElFUmxZMkZtUTI5eVpVMXZaSFZzWlM1aWIyOTBVR1Z5YzJsemRHVnVZMlVvYjNCMGFXOXVjeWs3WEc0Z0lDQWdZMjl1YzNRZ1pteGhkbTkxY25NZ1BTQmhaR0Z3ZEdWeWN5NXRZWEFvS0dGa1lYQjBaWElwSUQwK0lHRmtZWEIwWlhJdVpteGhkbTkxY2lrN1hHNWNiaUFnSUNCamIyNXpkQ0JwYlhCdmNuUnpPbHh1SUNBZ0lDQWdmQ0FvWEc0Z0lDQWdJQ0FnSUNBZ2ZDQkVlVzVoYldsalRXOWtkV3hsWEc0Z0lDQWdJQ0FnSUNBZ2ZDQlVlWEJsUEdGdWVUNWNiaUFnSUNBZ0lDQWdJQ0I4SUZCeWIyMXBjMlU4UkhsdVlXMXBZMDF2WkhWc1pUNWNiaUFnSUNBZ0lDQWdJQ0I4SUVadmNuZGhjbVJTWldabGNtVnVZMlU4WVc1NVBseHVJQ0FnSUNBZ0lDQXBXMTFjYmlBZ0lDQWdJSHdnZFc1a1pXWnBibVZrSUQwZ1cwUmxZMkZtUTI5eVpVMXZaSFZzWlM1bWIzSlNiMjkwS0c5d2RHbHZibk1wWFR0Y2JseHVJQ0FnSUdsbUlDaGhkWFJ2UTI5dWRISnZiR3hsY25NcElIdGNiaUFnSUNBZ0lDQWdabXhoZG05MWNuTXVabTl5UldGamFDZ29abXhoZG05MWNpa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lHbHRjRzl5ZEhNdWNIVnphQ2hjYmlBZ0lDQWdJQ0FnSUNBZ0lHZGxkRTF2WkhWc1pVWnZjaWhtYkdGMmIzVnlLUzVtYjNKU2IyOTBLR1pzWVhadmRYSXNJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdZWFYwYjFObGNuWnBZMlZ6TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1MGNtOXNiR1Z5Ulhod2IzTjFjbVU2SUc5d2RHbHZibk11WTI5dWRISnZiR3hsY2tWNGNHOXpkWEpsTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1MGNtOXNiR1Z5UTI5dVptbG5PaUJ2Y0hScGIyNXpMbU52Ym5SeWIyeHNaWEpEYjI1bWFXY3NYRzRnSUNBZ0lDQWdJQ0FnSUNCOUtWeHVJQ0FnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLRzl3ZEdsdmJuTXViMkp6WlhKMlpYSlBjSFJwYjI1elB5NWxibUZpYkdWUFluTmxjblpsY2tWMlpXNTBjeWtnZTF4dUlDQWdJQ0FnYVcxd2IzSjBjeTV3ZFhOb0tGeHVJQ0FnSUNBZ0lDQkVaV05oWmxOMGNtVmhiVTF2WkhWc1pTNW1iM0pHYkdGMmIzVnljeWhjYmlBZ0lDQWdJQ0FnSUNCdmNIUnBiMjV6TG05aWMyVnlkbVZ5VDNCMGFXOXVjeTV2WW5ObGNuWmxja1pzWVhadmRYSnpJSHg4SUdac1lYWnZkWEp6WEc0Z0lDQWdJQ0FnSUNsY2JpQWdJQ0FnSUNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJSHRjYmlBZ0lDQWdJRzF2WkhWc1pUb2dSR1ZqWVdaTmIyUjFiR1VzWEc0Z0lDQWdJQ0JwYlhCdmNuUnpPaUJwYlhCdmNuUnpMRnh1SUNBZ0lIMDdYRzRnSUgxY2JuMWNibHh1Wlhod2IzSjBJR0Z6ZVc1aklHWjFibU4wYVc5dUlISjFiazFwWjNKaGRHbHZibk1vS1RvZ1VISnZiV2x6WlR4MmIybGtQaUI3ZlZ4dUlsMTkiXX0=
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsT0FBTyxFQUFtQyxNQUFNLEVBQVEsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLHlCQUFzQjtBQUVoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLCtCQUE0QjtBQUNuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsaUNBQXdCO0FBRXBEOztHQUVHO0FBRUksSUFBTSxXQUFXLG1CQUFqQixNQUFNLFdBQVc7SUFDdEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQ3ZCLE9BQTJCO1FBRTNCLE1BQU0sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBRWxELE1BQU0sUUFBUSxHQUNaLE1BQU0sZUFBZSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFNUQsTUFBTSxPQUFPLEdBT0csQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFbkQsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNsQixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQ1YsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7b0JBQ3JDLFlBQVk7b0JBQ1osa0JBQWtCLEVBQUUsT0FBTyxDQUFDLGtCQUFrQjtvQkFDOUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLGdCQUFnQjtvQkFDMUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZO2lCQUNuQyxDQUFDLENBQ0gsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVILElBQUksT0FBTyxDQUFDLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxDQUFDO1lBQ2xELE9BQU8sQ0FBQyxJQUFJLENBQ1YsaUJBQWlCLENBQUMsV0FBVyxDQUMzQixPQUFPLENBQUMsZUFBZSxDQUFDLGdCQUFnQixJQUFJLFFBQVEsQ0FDckQsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU87WUFDTCxNQUFNLEVBQUUsYUFBVztZQUNuQixPQUFPLEVBQUUsT0FBTztTQUNqQixDQUFDO0lBQ0osQ0FBQztDQUNGLENBQUE7QUE3Q1ksV0FBVztJQUR2QixNQUFNLENBQUMsRUFBRSxDQUFDO0dBQ0UsV0FBVyxDQTZDdkI7O0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxhQUFhLEtBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEeW5hbWljTW9kdWxlLCBGb3J3YXJkUmVmZXJlbmNlLCBNb2R1bGUsIFR5cGUgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IERlY2FmTW9kdWxlT3B0aW9ucyB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBEZWNhZkNvcmVNb2R1bGUgfSBmcm9tIFwiLi9jb3JlLW1vZHVsZVwiO1xuaW1wb3J0IHsgQWRhcHRlciB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgZ2V0TW9kdWxlRm9yIH0gZnJvbSBcIi4vZGVjYWYtbW9kZWwvaW5kZXhcIjtcbmltcG9ydCB7IERlY2FmU3RyZWFtTW9kdWxlIH0gZnJvbSBcIi4vZXZlbnRzLW1vZHVsZVwiO1xuXG4vKipcbiAqIEBwdWJsaWNBcGlcbiAqL1xuQE1vZHVsZSh7fSlcbmV4cG9ydCBjbGFzcyBEZWNhZk1vZHVsZSB7XG4gIHN0YXRpYyBhc3luYyBmb3JSb290QXN5bmMoXG4gICAgb3B0aW9uczogRGVjYWZNb2R1bGVPcHRpb25zXG4gICk6IFByb21pc2U8RHluYW1pY01vZHVsZT4ge1xuICAgIGNvbnN0IHsgYXV0b0NvbnRyb2xsZXJzLCBhdXRvU2VydmljZXMgfSA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCBhZGFwdGVyczogQWRhcHRlcjxhbnksIGFueSwgYW55LCBhbnk+W10gPVxuICAgICAgYXdhaXQgRGVjYWZDb3JlTW9kdWxlLmJvb3RQZXJzaXN0ZW5jZShvcHRpb25zKTtcbiAgICBjb25zdCBmbGF2b3VycyA9IGFkYXB0ZXJzLm1hcCgoYWRhcHRlcikgPT4gYWRhcHRlci5mbGF2b3VyKTtcblxuICAgIGNvbnN0IGltcG9ydHM6XG4gICAgICB8IChcbiAgICAgICAgICB8IER5bmFtaWNNb2R1bGVcbiAgICAgICAgICB8IFR5cGU8YW55PlxuICAgICAgICAgIHwgUHJvbWlzZTxEeW5hbWljTW9kdWxlPlxuICAgICAgICAgIHwgRm9yd2FyZFJlZmVyZW5jZTxhbnk+XG4gICAgICAgIClbXVxuICAgICAgfCB1bmRlZmluZWQgPSBbRGVjYWZDb3JlTW9kdWxlLmZvclJvb3Qob3B0aW9ucyldO1xuXG4gICAgaWYgKGF1dG9Db250cm9sbGVycykge1xuICAgICAgICBmbGF2b3Vycy5mb3JFYWNoKChmbGF2b3VyKSA9PiB7XG4gICAgICAgICAgaW1wb3J0cy5wdXNoKFxuICAgICAgICAgICAgZ2V0TW9kdWxlRm9yKGZsYXZvdXIpLmZvclJvb3QoZmxhdm91ciwge1xuICAgICAgICAgICAgICBhdXRvU2VydmljZXMsXG4gICAgICAgICAgICAgIGNvbnRyb2xsZXJFeHBvc3VyZTogb3B0aW9ucy5jb250cm9sbGVyRXhwb3N1cmUsXG4gICAgICAgICAgICAgIGNvbnRyb2xsZXJDb25maWc6IG9wdGlvbnMuY29udHJvbGxlckNvbmZpZyxcbiAgICAgICAgICAgICAgYWdncmVnYXRpb25zOiBvcHRpb25zLmFnZ3JlZ2F0aW9ucyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5vYnNlcnZlck9wdGlvbnM/LmVuYWJsZU9ic2VydmVyRXZlbnRzKSB7XG4gICAgICBpbXBvcnRzLnB1c2goXG4gICAgICAgIERlY2FmU3RyZWFtTW9kdWxlLmZvckZsYXZvdXJzKFxuICAgICAgICAgIG9wdGlvbnMub2JzZXJ2ZXJPcHRpb25zLm9ic2VydmVyRmxhdm91cnMgfHwgZmxhdm91cnNcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbW9kdWxlOiBEZWNhZk1vZHVsZSxcbiAgICAgIGltcG9ydHM6IGltcG9ydHMsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuTWlncmF0aW9ucygpOiBQcm9taXNlPHZvaWQ+IHt9XG4iXX0=
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibW9kdWxlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTJDQSxzQ0FBeUM7QUEzQ3pDLElBQUksVUFBVSxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUk7SUFDakYsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3SCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLE9BQU8sQ0FBQyxRQUFRLEtBQUssVUFBVTtRQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDOztRQUMxSCxLQUFLLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQUUsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xKLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsRSxDQUFDLENBQUM7QUFDRixJQUFJLGFBQWEsQ0FBQztBQUNsQiwyQ0FBd0M7QUFDeEMscURBQW1EO0FBQ25ELHFEQUFzRDtBQUN0RCx1REFBNkQ7QUFDN0Q7O0dBRUc7QUFDSCxJQUFJLFdBQVcsR0FBRyxhQUFhLEdBQUcsTUFBTSxXQUFXO0lBQy9DLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU87UUFDN0IsTUFBTSxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDbEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxnQ0FBZSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRSxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxnQ0FBZSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ25ELElBQUksZUFBZSxFQUFFLENBQUM7WUFDbEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUN6QixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUEsdUJBQVksRUFBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO29CQUNoRCxZQUFZO29CQUNaLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxrQkFBa0I7b0JBQzlDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxnQkFBZ0I7b0JBQzFDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtpQkFDckMsQ0FBQyxDQUFDLENBQUM7WUFDUixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQztZQUNoRCxPQUFPLENBQUMsSUFBSSxDQUFDLDRCQUFpQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLGdCQUFnQixJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDdEcsQ0FBQztRQUNELE9BQU87WUFDSCxNQUFNLEVBQUUsYUFBYTtZQUNyQixPQUFPLEVBQUUsT0FBTztTQUNuQixDQUFDO0lBQ04sQ0FBQztDQUNKLENBQUM7QUFJTyxrQ0FBVztBQUhwQixzQkFBQSxXQUFXLEdBQUcsYUFBYSxHQUFHLFVBQVUsQ0FBQztJQUNyQyxJQUFBLGVBQU0sRUFBQyxFQUFFLENBQUM7Q0FDYixFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRVQsS0FBSyxVQUFVLGFBQWEsS0FBSyxDQUFDO0FBQ3pDLHM5SEFBczlIIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZGVjb3JhdGUgPSAodGhpcyAmJiB0aGlzLl9fZGVjb3JhdGUpIHx8IGZ1bmN0aW9uIChkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XG59O1xudmFyIERlY2FmTW9kdWxlXzE7XG5pbXBvcnQgeyBNb2R1bGUgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IERlY2FmQ29yZU1vZHVsZSB9IGZyb20gXCIuL2NvcmUtbW9kdWxlLmpzXCI7XG5pbXBvcnQgeyBnZXRNb2R1bGVGb3IgfSBmcm9tIFwiLi9kZWNhZi1tb2RlbC9pbmRleC5qc1wiO1xuaW1wb3J0IHsgRGVjYWZTdHJlYW1Nb2R1bGUgfSBmcm9tIFwiLi9ldmVudHMtbW9kdWxlL2luZGV4LmpzXCI7XG4vKipcbiAqIEBwdWJsaWNBcGlcbiAqL1xubGV0IERlY2FmTW9kdWxlID0gRGVjYWZNb2R1bGVfMSA9IGNsYXNzIERlY2FmTW9kdWxlIHtcbiAgICBzdGF0aWMgYXN5bmMgZm9yUm9vdEFzeW5jKG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgeyBhdXRvQ29udHJvbGxlcnMsIGF1dG9TZXJ2aWNlcyB9ID0gb3B0aW9ucztcbiAgICAgICAgY29uc3QgYWRhcHRlcnMgPSBhd2FpdCBEZWNhZkNvcmVNb2R1bGUuYm9vdFBlcnNpc3RlbmNlKG9wdGlvbnMpO1xuICAgICAgICBjb25zdCBmbGF2b3VycyA9IGFkYXB0ZXJzLm1hcCgoYWRhcHRlcikgPT4gYWRhcHRlci5mbGF2b3VyKTtcbiAgICAgICAgY29uc3QgaW1wb3J0cyA9IFtEZWNhZkNvcmVNb2R1bGUuZm9yUm9vdChvcHRpb25zKV07XG4gICAgICAgIGlmIChhdXRvQ29udHJvbGxlcnMpIHtcbiAgICAgICAgICAgIGZsYXZvdXJzLmZvckVhY2goKGZsYXZvdXIpID0+IHtcbiAgICAgICAgICAgICAgICBpbXBvcnRzLnB1c2goZ2V0TW9kdWxlRm9yKGZsYXZvdXIpLmZvclJvb3QoZmxhdm91ciwge1xuICAgICAgICAgICAgICAgICAgICBhdXRvU2VydmljZXMsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXJFeHBvc3VyZTogb3B0aW9ucy5jb250cm9sbGVyRXhwb3N1cmUsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXJDb25maWc6IG9wdGlvbnMuY29udHJvbGxlckNvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgYWdncmVnYXRpb25zOiBvcHRpb25zLmFnZ3JlZ2F0aW9ucyxcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5vYnNlcnZlck9wdGlvbnM/LmVuYWJsZU9ic2VydmVyRXZlbnRzKSB7XG4gICAgICAgICAgICBpbXBvcnRzLnB1c2goRGVjYWZTdHJlYW1Nb2R1bGUuZm9yRmxhdm91cnMob3B0aW9ucy5vYnNlcnZlck9wdGlvbnMub2JzZXJ2ZXJGbGF2b3VycyB8fCBmbGF2b3VycykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtb2R1bGU6IERlY2FmTW9kdWxlXzEsXG4gICAgICAgICAgICBpbXBvcnRzOiBpbXBvcnRzLFxuICAgICAgICB9O1xuICAgIH1cbn07XG5EZWNhZk1vZHVsZSA9IERlY2FmTW9kdWxlXzEgPSBfX2RlY29yYXRlKFtcbiAgICBNb2R1bGUoe30pXG5dLCBEZWNhZk1vZHVsZSk7XG5leHBvcnQgeyBEZWNhZk1vZHVsZSB9O1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bk1pZ3JhdGlvbnMoKSB7IH1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJXOWtkV3hsTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dmMzSmpMMjF2WkhWc1pTNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3pzN08wRkJRVUVzVDBGQlR5eEZRVUZ0UXl4TlFVRk5MRVZCUVZFc1RVRkJUU3huUWtGQlowSXNRMEZCUXp0QlFVVXZSU3hQUVVGUExFVkJRVVVzWlVGQlpTeEZRVUZGTEhsQ1FVRnpRanRCUVVWb1JDeFBRVUZQTEVWQlFVVXNXVUZCV1N4RlFVRkZMQ3RDUVVFMFFqdEJRVU51UkN4UFFVRlBMRVZCUVVVc2FVSkJRV2xDTEVWQlFVVXNhVU5CUVhkQ08wRkJSWEJFT3p0SFFVVkhPMEZCUlVrc1NVRkJUU3hYUVVGWExHMUNRVUZxUWl4TlFVRk5MRmRCUVZjN1NVRkRkRUlzVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4WlFVRlpMRU5CUTNaQ0xFOUJRVEpDTzFGQlJUTkNMRTFCUVUwc1JVRkJSU3hsUVVGbExFVkJRVVVzV1VGQldTeEZRVUZGTEVkQlFVY3NUMEZCVHl4RFFVRkRPMUZCUld4RUxFMUJRVTBzVVVGQlVTeEhRVU5hTEUxQlFVMHNaVUZCWlN4RFFVRkRMR1ZCUVdVc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFJRVU5xUkN4TlFVRk5MRkZCUVZFc1IwRkJSeXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNUMEZCVHl4RlFVRkZMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdVVUZGTlVRc1RVRkJUU3hQUVVGUExFZEJUMGNzUTBGQlF5eGxRVUZsTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU03VVVGRmJrUXNTVUZCU1N4bFFVRmxMRVZCUVVVc1EwRkJRenRaUVVOc1FpeFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1QwRkJUeXhGUVVGRkxFVkJRVVU3WjBKQlF6TkNMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRMVlzV1VGQldTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhQUVVGUExFVkJRVVU3YjBKQlEzSkRMRmxCUVZrN2IwSkJRMW9zYTBKQlFXdENMRVZCUVVVc1QwRkJUeXhEUVVGRExHdENRVUZyUWp0dlFrRkRPVU1zWjBKQlFXZENMRVZCUVVVc1QwRkJUeXhEUVVGRExHZENRVUZuUWp0dlFrRkRNVU1zV1VGQldTeEZRVUZGTEU5QlFVOHNRMEZCUXl4WlFVRlpPMmxDUVVOdVF5eERRVUZETEVOQlEwZ3NRMEZCUXp0WlFVTktMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMHdzUTBGQlF6dFJRVVZJTEVsQlFVa3NUMEZCVHl4RFFVRkRMR1ZCUVdVc1JVRkJSU3h2UWtGQmIwSXNSVUZCUlN4RFFVRkRPMWxCUTJ4RUxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlExWXNhVUpCUVdsQ0xFTkJRVU1zVjBGQlZ5eERRVU16UWl4UFFVRlBMRU5CUVVNc1pVRkJaU3hEUVVGRExHZENRVUZuUWl4SlFVRkpMRkZCUVZFc1EwRkRja1FzUTBGRFJpeERRVUZETzFGQlEwb3NRMEZCUXp0UlFVVkVMRTlCUVU4N1dVRkRUQ3hOUVVGTkxFVkJRVVVzWVVGQlZ6dFpRVU51UWl4UFFVRlBMRVZCUVVVc1QwRkJUenRUUVVOcVFpeERRVUZETzBsQlEwb3NRMEZCUXp0RFFVTkdMRU5CUVVFN1FVRTNRMWtzVjBGQlZ6dEpRVVIyUWl4TlFVRk5MRU5CUVVNc1JVRkJSU3hEUVVGRE8wZEJRMFVzVjBGQlZ5eERRVFpEZGtJN08wRkJSVVFzVFVGQlRTeERRVUZETEV0QlFVc3NWVUZCVlN4aFFVRmhMRXRCUVcxQ0xFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZXlCRWVXNWhiV2xqVFc5a2RXeGxMQ0JHYjNKM1lYSmtVbVZtWlhKbGJtTmxMQ0JOYjJSMWJHVXNJRlI1Y0dVZ2ZTQm1jbTl0SUZ3aVFHNWxjM1JxY3k5amIyMXRiMjVjSWp0Y2JtbHRjRzl5ZENCN0lFUmxZMkZtVFc5a2RXeGxUM0IwYVc5dWN5QjlJR1p5YjIwZ1hDSXVMM1I1Y0dWelhDSTdYRzVwYlhCdmNuUWdleUJFWldOaFprTnZjbVZOYjJSMWJHVWdmU0JtY205dElGd2lMaTlqYjNKbExXMXZaSFZzWlZ3aU8xeHVhVzF3YjNKMElIc2dRV1JoY0hSbGNpQjlJR1p5YjIwZ1hDSkFaR1ZqWVdZdGRITXZZMjl5WlZ3aU8xeHVhVzF3YjNKMElIc2daMlYwVFc5a2RXeGxSbTl5SUgwZ1puSnZiU0JjSWk0dlpHVmpZV1l0Ylc5a1pXd3ZhVzVrWlhoY0lqdGNibWx0Y0c5eWRDQjdJRVJsWTJGbVUzUnlaV0Z0VFc5a2RXeGxJSDBnWm5KdmJTQmNJaTR2WlhabGJuUnpMVzF2WkhWc1pWd2lPMXh1WEc0dktpcGNiaUFxSUVCd2RXSnNhV05CY0dsY2JpQXFMMXh1UUUxdlpIVnNaU2g3ZlNsY2JtVjRjRzl5ZENCamJHRnpjeUJFWldOaFprMXZaSFZzWlNCN1hHNGdJSE4wWVhScFl5QmhjM2x1WXlCbWIzSlNiMjkwUVhONWJtTW9YRzRnSUNBZ2IzQjBhVzl1Y3pvZ1JHVmpZV1pOYjJSMWJHVlBjSFJwYjI1elhHNGdJQ2s2SUZCeWIyMXBjMlU4UkhsdVlXMXBZMDF2WkhWc1pUNGdlMXh1SUNBZ0lHTnZibk4wSUhzZ1lYVjBiME52Ym5SeWIyeHNaWEp6TENCaGRYUnZVMlZ5ZG1salpYTWdmU0E5SUc5d2RHbHZibk03WEc1Y2JpQWdJQ0JqYjI1emRDQmhaR0Z3ZEdWeWN6b2dRV1JoY0hSbGNqeGhibmtzSUdGdWVTd2dZVzU1TENCaGJuaytXMTBnUFZ4dUlDQWdJQ0FnWVhkaGFYUWdSR1ZqWVdaRGIzSmxUVzlrZFd4bExtSnZiM1JRWlhKemFYTjBaVzVqWlNodmNIUnBiMjV6S1R0Y2JpQWdJQ0JqYjI1emRDQm1iR0YyYjNWeWN5QTlJR0ZrWVhCMFpYSnpMbTFoY0Nnb1lXUmhjSFJsY2lrZ1BUNGdZV1JoY0hSbGNpNW1iR0YyYjNWeUtUdGNibHh1SUNBZ0lHTnZibk4wSUdsdGNHOXlkSE02WEc0Z0lDQWdJQ0I4SUNoY2JpQWdJQ0FnSUNBZ0lDQjhJRVI1Ym1GdGFXTk5iMlIxYkdWY2JpQWdJQ0FnSUNBZ0lDQjhJRlI1Y0dVOFlXNTVQbHh1SUNBZ0lDQWdJQ0FnSUh3Z1VISnZiV2x6WlR4RWVXNWhiV2xqVFc5a2RXeGxQbHh1SUNBZ0lDQWdJQ0FnSUh3Z1JtOXlkMkZ5WkZKbFptVnlaVzVqWlR4aGJuaytYRzRnSUNBZ0lDQWdJQ2xiWFZ4dUlDQWdJQ0FnZkNCMWJtUmxabWx1WldRZ1BTQmJSR1ZqWVdaRGIzSmxUVzlrZFd4bExtWnZjbEp2YjNRb2IzQjBhVzl1Y3lsZE8xeHVYRzRnSUNBZ2FXWWdLR0YxZEc5RGIyNTBjbTlzYkdWeWN5a2dlMXh1SUNBZ0lDQWdJQ0JtYkdGMmIzVnljeTVtYjNKRllXTm9LQ2htYkdGMmIzVnlLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdhVzF3YjNKMGN5NXdkWE5vS0Z4dUlDQWdJQ0FnSUNBZ0lDQWdaMlYwVFc5a2RXeGxSbTl5S0dac1lYWnZkWElwTG1admNsSnZiM1FvWm14aGRtOTFjaXdnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JoZFhSdlUyVnlkbWxqWlhNc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuUnliMnhzWlhKRmVIQnZjM1Z5WlRvZ2IzQjBhVzl1Y3k1amIyNTBjbTlzYkdWeVJYaHdiM04xY21Vc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuUnliMnhzWlhKRGIyNW1hV2M2SUc5d2RHbHZibk11WTI5dWRISnZiR3hsY2tOdmJtWnBaeXhjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdZV2RuY21WbllYUnBiMjV6T2lCdmNIUnBiMjV6TG1GblozSmxaMkYwYVc5dWN5eGNiaUFnSUNBZ0lDQWdJQ0FnSUgwcFhHNGdJQ0FnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNCcFppQW9iM0IwYVc5dWN5NXZZbk5sY25abGNrOXdkR2x2Ym5NL0xtVnVZV0pzWlU5aWMyVnlkbVZ5UlhabGJuUnpLU0I3WEc0Z0lDQWdJQ0JwYlhCdmNuUnpMbkIxYzJnb1hHNGdJQ0FnSUNBZ0lFUmxZMkZtVTNSeVpXRnRUVzlrZFd4bExtWnZja1pzWVhadmRYSnpLRnh1SUNBZ0lDQWdJQ0FnSUc5d2RHbHZibk11YjJKelpYSjJaWEpQY0hScGIyNXpMbTlpYzJWeWRtVnlSbXhoZG05MWNuTWdmSHdnWm14aGRtOTFjbk5jYmlBZ0lDQWdJQ0FnS1Z4dUlDQWdJQ0FnS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdlMXh1SUNBZ0lDQWdiVzlrZFd4bE9pQkVaV05oWmsxdlpIVnNaU3hjYmlBZ0lDQWdJR2x0Y0c5eWRITTZJR2x0Y0c5eWRITXNYRzRnSUNBZ2ZUdGNiaUFnZlZ4dWZWeHVYRzVsZUhCdmNuUWdZWE41Ym1NZ1puVnVZM1JwYjI0Z2NuVnVUV2xuY21GMGFXOXVjeWdwT2lCUWNtOXRhWE5sUEhadmFXUStJSHQ5WEc0aVhYMD0iXX0=
|
|
@@ -14,7 +14,7 @@ import { Injectable, Inject, Optional, Scope, } from "@nestjs/common";
|
|
|
14
14
|
import { Reflector } from "@nestjs/core";
|
|
15
15
|
import { Logging } from "@decaf-ts/logging";
|
|
16
16
|
import { Adapter } from "@decaf-ts/core";
|
|
17
|
-
import { AUTH_HANDLER, AUTH_META_KEY, IS_PUBLIC_KEY, REQUIRED_ROLES_KEY } from "./constants.js";
|
|
17
|
+
import { AUTH_HANDLER, AUTH_META_KEY, IS_PUBLIC_KEY, REQUIRED_ROLES_KEY, SKIP_MODEL_ROLES_KEY } from "./constants.js";
|
|
18
18
|
import { DecafRequestContext } from "./../request/DecafRequestContext.js";
|
|
19
19
|
let AuthInterceptor = class AuthInterceptor {
|
|
20
20
|
constructor(reflector, requestContext, authHandler) {
|
|
@@ -31,12 +31,14 @@ let AuthInterceptor = class AuthInterceptor {
|
|
|
31
31
|
const modelName = this.reflector.get(AUTH_META_KEY, ctx.getHandler()) ??
|
|
32
32
|
this.reflector.get(AUTH_META_KEY, ctx.getClass());
|
|
33
33
|
const requiredRoles = this.reflector.getAllAndOverride(REQUIRED_ROLES_KEY, [ctx.getHandler(), ctx.getClass()]);
|
|
34
|
+
const skipModelRoles = this.reflector.getAllAndOverride(SKIP_MODEL_ROLES_KEY, [ctx.getHandler(), ctx.getClass()]);
|
|
35
|
+
const effectiveModel = skipModelRoles ? undefined : modelName;
|
|
34
36
|
log.verbose(`Intercepted request${modelName ? ` for ${modelName}` : ""}`);
|
|
35
37
|
if (isPublic) {
|
|
36
38
|
log.debug(`Public route — skipping auth`);
|
|
37
39
|
}
|
|
38
40
|
else if (this.authHandler) {
|
|
39
|
-
await this.authHandler.authorize(ctx,
|
|
41
|
+
await this.authHandler.authorize(ctx, effectiveModel, requiredRoles, this.requestContext);
|
|
40
42
|
}
|
|
41
43
|
else {
|
|
42
44
|
log.debug(`No auth handler registered`);
|
|
@@ -76,4 +78,4 @@ AuthInterceptor = __decorate([
|
|
|
76
78
|
DecafRequestContext, Object])
|
|
77
79
|
], AuthInterceptor);
|
|
78
80
|
export { AuthInterceptor };
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXV0aEludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F1dGgvQXV0aEludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxVQUFVLEVBSVYsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEdBQ04sTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBSXpDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHekMsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLHVCQUFvQjtBQUVuSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsNENBQXVDO0FBRzlELElBQU0sZUFBZSxHQUFyQixNQUFNLGVBQWU7SUFDMUIsWUFDbUIsU0FBb0IsRUFDbEIsY0FBbUMsRUFDSCxXQUF5QjtRQUYzRCxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ2xCLG1CQUFjLEdBQWQsY0FBYyxDQUFxQjtRQUNILGdCQUFXLEdBQVgsV0FBVyxDQUFjO0lBQzNFLENBQUM7SUFFSixLQUFLLENBQUMsU0FBUyxDQUNiLEdBQXFCLEVBQ3JCLElBQWlCO1FBRWpCLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBVyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV6RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFVLGFBQWEsRUFBRTtZQUN4RSxHQUFHLENBQUMsVUFBVSxFQUFFO1lBQ2hCLEdBQUcsQ0FBQyxRQUFRLEVBQUU7U0FDZixDQUFDLENBQUM7UUFFSCxNQUFNLFNBQVMsR0FD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M0IsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUtoQyxXQUFBLFFBQVEsRUFBRSxDQUFBO0lBQUUsV0FBQSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7cUNBRkwsU0FBUztRQUNGLG1CQUFtQjtHQUg3QyxlQUFlLENBaUYzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdGFibGUsXG4gIE5lc3RJbnRlcmNlcHRvcixcbiAgRXhlY3V0aW9uQ29udGV4dCxcbiAgQ2FsbEhhbmRsZXIsXG4gIEluamVjdCxcbiAgT3B0aW9uYWwsXG4gIFNjb3BlLFxufSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IFJlZmxlY3RvciB9IGZyb20gXCJAbmVzdGpzL2NvcmVcIjtcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuXG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHsgTG9nZ2luZyB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgQWRhcHRlciB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgUmVxdWVzdFRvQ29udGV4dFRyYW5zZm9ybWVyIH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItaHR0cC9zZXJ2ZXJcIjtcblxuaW1wb3J0IHsgQVVUSF9IQU5ETEVSLCBBVVRIX01FVEFfS0VZLCBJU19QVUJMSUNfS0VZLCBSRVFVSVJFRF9ST0xFU19LRVksIFNLSVBfTU9ERUxfUk9MRVNfS0VZIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgdHlwZSB7IEF1dGhIYW5kbGVyIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBEZWNhZlJlcXVlc3RDb250ZXh0IH0gZnJvbSBcIi4uL3JlcXVlc3QvRGVjYWZSZXF1ZXN0Q29udGV4dFwiO1xuXG5ASW5qZWN0YWJsZSh7IHNjb3BlOiBTY29wZS5SRVFVRVNUIH0pXG5leHBvcnQgY2xhc3MgQXV0aEludGVyY2VwdG9yIGltcGxlbWVudHMgTmVzdEludGVyY2VwdG9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByZWZsZWN0b3I6IFJlZmxlY3RvcixcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVxdWVzdENvbnRleHQ6IERlY2FmUmVxdWVzdENvbnRleHQsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChBVVRIX0hBTkRMRVIpIHByaXZhdGUgcmVhZG9ubHkgYXV0aEhhbmRsZXI/OiBBdXRoSGFuZGxlclxuICApIHt9XG5cbiAgYXN5bmMgaW50ZXJjZXB0KFxuICAgIGN0eDogRXhlY3V0aW9uQ29udGV4dCxcbiAgICBuZXh0OiBDYWxsSGFuZGxlclxuICApOiBQcm9taXNlPE9ic2VydmFibGU8YW55Pj4ge1xuICAgIGNvbnN0IGxvZyA9IExvZ2dpbmcuZm9yKHRoaXMgYXMgYW55KS5mb3IodGhpcy5pbnRlcmNlcHQpO1xuXG4gICAgY29uc3QgaXNQdWJsaWMgPSB0aGlzLnJlZmxlY3Rvci5nZXRBbGxBbmRPdmVycmlkZTxib29sZWFuPihJU19QVUJMSUNfS0VZLCBbXG4gICAgICBjdHguZ2V0SGFuZGxlcigpLFxuICAgICAgY3R4LmdldENsYXNzKCksXG4gICAgXSk7XG5cbiAgICBjb25zdCBtb2RlbE5hbWUgPVxuICAgICAgdGhpcy5yZWZsZWN0b3IuZ2V0PHN0cmluZyB8IENvbnN0cnVjdG9yPihcbiAgICAgICAgQVVUSF9NRVRBX0tFWSxcbiAgICAgICAgY3R4LmdldEhhbmRsZXIoKVxuICAgICAgKSA/P1xuICAgICAgdGhpcy5yZWZsZWN0b3IuZ2V0PHN0cmluZyB8IENvbnN0cnVjdG9yPihBVVRIX01FVEFfS0VZLCBjdHguZ2V0Q2xhc3MoKSk7XG5cbiAgICBjb25zdCByZXF1aXJlZFJvbGVzID0gdGhpcy5yZWZsZWN0b3IuZ2V0QWxsQW5kT3ZlcnJpZGU8c3RyaW5nW10+KFxuICAgICAgUkVRVUlSRURfUk9MRVNfS0VZLFxuICAgICAgW2N0eC5nZXRIYW5kbGVyKCksIGN0eC5nZXRDbGFzcygpXVxuICAgICk7XG5cbiAgICBjb25zdCBza2lwTW9kZWxSb2xlcyA9IHRoaXMucmVmbGVjdG9yLmdldEFsbEFuZE92ZXJyaWRlPGJvb2xlYW4+KFxuICAgICAgU0tJUF9NT0RFTF9ST0xFU19LRVksXG4gICAgICBbY3R4LmdldEhhbmRsZXIoKSwgY3R4LmdldENsYXNzKCldXG4gICAgKTtcblxuICAgIGNvbnN0IGVmZmVjdGl2ZU1vZGVsID0gc2tpcE1vZGVsUm9sZXMgPyB1bmRlZmluZWQgOiBtb2RlbE5hbWU7XG5cbiAgICBsb2cudmVyYm9zZShgSW50ZXJjZXB0ZWQgcmVxdWVzdCR7bW9kZWxOYW1lID8gYCBmb3IgJHttb2RlbE5hbWV9YCA6IFwiXCJ9YCk7XG5cbiAgICBpZiAoaXNQdWJsaWMpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgUHVibGljIHJvdXRlIOKAlCBza2lwcGluZyBhdXRoYCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmF1dGhIYW5kbGVyKSB7XG4gICAgICBhd2FpdCB0aGlzLmF1dGhIYW5kbGVyLmF1dGhvcml6ZShcbiAgICAgICAgY3R4LFxuICAgICAgICBlZmZlY3RpdmVNb2RlbCBhcyBzdHJpbmcgfCBDb25zdHJ1Y3RvcixcbiAgICAgICAgcmVxdWlyZWRSb2xlcyxcbiAgICAgICAgdGhpcy5yZXF1ZXN0Q29udGV4dFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmRlYnVnKGBObyBhdXRoIGhhbmRsZXIgcmVnaXN0ZXJlZGApO1xuICAgIH1cblxuICAgIC8vIFRyYW5zZm9ybWVycyBydW4gQUZURVIgYXV0aCBzbyB0aGV5IGNhbiByZWFkIGF1dGgtcG9wdWxhdGVkIGZpZWxkc1xuICAgIC8vIChlLmcuIGB1c2VyYCkgZnJvbSB0aGUgY29udGV4dCBhbmQgbWFwIHRoZW0gdG8gYWRhcHRlci1zcGVjaWZpYyBrZXlzXG4gICAgLy8gKGUuZy4gYFVVSURgIGZvciBSYW1BZGFwdGVyJ3MgQGNyZWF0ZWRCeS9AdXBkYXRlZEJ5IGhhbmRsZXJzKS5cbiAgICBhd2FpdCB0aGlzLmFwcGx5VHJhbnNmb3JtZXJzKCk7XG5cbiAgICBjb25zdCB1c2VyID0gdGhpcy5yZXF1ZXN0Q29udGV4dC5nZXRPclVuZGVmaW5lZChcInVzZXJcIiBhcyBhbnkpO1xuICAgIGNvbnN0IG9yZ2FuaXphdGlvbiA9IHRoaXMucmVxdWVzdENvbnRleHQuZ2V0T3JVbmRlZmluZWQoXCJvcmdhbml6YXRpb25cIiBhcyBhbnkpO1xuICAgIGlmICh1c2VyIHx8IG9yZ2FuaXphdGlvbikge1xuICAgICAgY29uc3QgY3VycmVudExvZyA9IHRoaXMucmVxdWVzdENvbnRleHQuZ2V0KFwibG9nZ2VyXCIgYXMgYW55KTtcbiAgICAgIGNvbnN0IGNoaWxkTG9nID0gY3VycmVudExvZy5mb3IoeyB1c2VyLCBvcmdhbml6YXRpb24gfSk7XG4gICAgICB0aGlzLnJlcXVlc3RDb250ZXh0LmFjY3VtdWxhdGUoeyBsb2dnZXI6IGNoaWxkTG9nIH0gYXMgYW55KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dC5oYW5kbGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBhcHBseVRyYW5zZm9ybWVycygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmbGF2b3VycyA9IEFkYXB0ZXIuZmxhdm91cnNUb1RyYW5zZm9ybSgpO1xuICAgIGlmICghZmxhdm91cnMpIHJldHVybjtcblxuICAgIGZvciAoY29uc3QgZmxhdm91ciBvZiBmbGF2b3Vycykge1xuICAgICAgY29uc3QgdHJhbnNmb3JtZXIgPSBBZGFwdGVyLnRyYW5zZm9ybWVyRm9yKFxuICAgICAgICBmbGF2b3VyXG4gICAgICApIGFzIFJlcXVlc3RUb0NvbnRleHRUcmFuc2Zvcm1lcjxhbnk+O1xuICAgICAgaWYgKCF0cmFuc2Zvcm1lcikgY29udGludWU7XG4gICAgICBjb25zdCBmcm9tID0gYXdhaXQgdHJhbnNmb3JtZXIuZnJvbSh0aGlzLnJlcXVlc3RDb250ZXh0KTtcbiAgICAgIGlmIChmcm9tKSB0aGlzLnJlcXVlc3RDb250ZXh0LmFjY3VtdWxhdGUoZnJvbSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -2,4 +2,5 @@ export const AUTH_HANDLER = Symbol("AUTH_HANDLER");
|
|
|
2
2
|
export const AUTH_META_KEY = "auth:meta";
|
|
3
3
|
export const IS_PUBLIC_KEY = "isPublic";
|
|
4
4
|
export const REQUIRED_ROLES_KEY = "requiredRoles";
|
|
5
|
-
|
|
5
|
+
export const SKIP_MODEL_ROLES_KEY = "skipModelRoles";
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F1dGgvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDbkQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQztBQUN6QyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLGVBQWUsQ0FBQztBQUNsRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBVVRIX0hBTkRMRVIgPSBTeW1ib2woXCJBVVRIX0hBTkRMRVJcIik7XG5leHBvcnQgY29uc3QgQVVUSF9NRVRBX0tFWSA9IFwiYXV0aDptZXRhXCI7XG5leHBvcnQgY29uc3QgSVNfUFVCTElDX0tFWSA9IFwiaXNQdWJsaWNcIjtcbmV4cG9ydCBjb25zdCBSRVFVSVJFRF9ST0xFU19LRVkgPSBcInJlcXVpcmVkUm9sZXNcIjtcbmV4cG9ydCBjb25zdCBTS0lQX01PREVMX1JPTEVTX0tFWSA9IFwic2tpcE1vZGVsUm9sZXNcIjtcbiJdfQ==
|
package/lib/esm/cli-module.js
CHANGED
|
@@ -134,7 +134,7 @@ const migrateCommand = new Command()
|
|
|
134
134
|
const { input, config } = resolveMigrateCommandConfig(options, pkg);
|
|
135
135
|
let app;
|
|
136
136
|
try {
|
|
137
|
-
app = await NestFactory.create(await normalizeImport(import(path.join(process.cwd(), input))), { logger: false });
|
|
137
|
+
app = await NestFactory.create(resolveNestModule(await normalizeImport(import(path.join(process.cwd(), input)))), { logger: false });
|
|
138
138
|
await app.init();
|
|
139
139
|
log.info(`App booted`);
|
|
140
140
|
const cache = Adapter["_cache"];
|
|
@@ -196,6 +196,21 @@ const migrateCommand = new Command()
|
|
|
196
196
|
}
|
|
197
197
|
});
|
|
198
198
|
export { migrateCommand };
|
|
199
|
+
function resolveNestModule(mod) {
|
|
200
|
+
if (typeof mod === "function")
|
|
201
|
+
return mod;
|
|
202
|
+
if (mod?.default && typeof mod.default === "function")
|
|
203
|
+
return mod.default;
|
|
204
|
+
if (mod && typeof mod === "object") {
|
|
205
|
+
const classes = Object.values(mod).filter((v) => typeof v === "function");
|
|
206
|
+
if (classes.length === 1)
|
|
207
|
+
return classes[0];
|
|
208
|
+
const named = mod[Object.keys(mod).find((k) => /Module$/.test(k)) || ""];
|
|
209
|
+
if (typeof named === "function")
|
|
210
|
+
return named;
|
|
211
|
+
}
|
|
212
|
+
return mod;
|
|
213
|
+
}
|
|
199
214
|
const exportApiCommand = new Command()
|
|
200
215
|
.name("export-api")
|
|
201
216
|
.description("boots the app context headlessly, extracts the OpenAPI spec, and writes it to a JSON file")
|
|
@@ -210,7 +225,7 @@ const exportApiCommand = new Command()
|
|
|
210
225
|
const input = resolveInputPath(options.input);
|
|
211
226
|
let app;
|
|
212
227
|
try {
|
|
213
|
-
app = await NestFactory.create(await normalizeImport(import(path.join(process.cwd(), input))), { logger: false });
|
|
228
|
+
app = await NestFactory.create(resolveNestModule(await normalizeImport(import(path.join(process.cwd(), input)))), { logger: false });
|
|
214
229
|
await app.init();
|
|
215
230
|
log.info(`App booted from ${input}`);
|
|
216
231
|
const config = new DocumentBuilder()
|
|
@@ -244,4 +259,4 @@ nestCmd.addCommand(exportApiCommand);
|
|
|
244
259
|
export default function nest() {
|
|
245
260
|
return nestCmd;
|
|
246
261
|
}
|
|
247
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGktbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU1QyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBRXZDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDaEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRSxNQUFNLHNCQUFzQixHQUFHO0lBQzdCLHNCQUFzQjtJQUN0QixxQkFBcUI7SUFDckIscUJBQXFCO0NBQ3RCLENBQUM7QUFFRixTQUFTLHNCQUFzQixDQUFDLFNBQWlCO0lBQy9DLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLEtBQWMsRUFDZCxTQUF5QyxzQkFBc0IsRUFDL0QsVUFBVSxHQUFHLHNCQUFzQjtJQUVuQyxJQUFJLEtBQUs7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUN4QixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNoRSxPQUFPLEtBQUssSUFBSSxxQkFBcUIsQ0FBQztBQUN4QyxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLE1BT25DO0lBQ0MsTUFBTSxFQUNKLFNBQVMsRUFDVCxPQUFPLEVBQ1AsSUFBSSxFQUNKLFFBQVEsRUFDUixhQUFhLEdBQUcsS0FBSyxFQUNyQixPQUFPLEdBQ1IsR0FBRyxNQUFNLENBQUM7SUFDWCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQztJQUMvQixNQUFNLGlCQUFpQixHQUFHLFFBQVEsSUFBSSxJQUFJLElBQUksY0FBYyxJQUFJLEtBQUssQ0FBQztJQUN0RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbEQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDcEQsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEQsTUFBTSxZQUFZLEdBQUcsT0FBTyxJQUFJLEtBQUssQ0FBQztJQUN0QyxNQUFNLE1BQU0sR0FBRyxhQUFhLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDN0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLFlBQVksR0FBRyxNQUFNLE9BQU8sQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxLQUFjO0lBQy9CLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDdEIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUN0QixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDakIsS0FBSyxDQUFDLEdBQUcsQ0FBQztTQUNWLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzVCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFjO0lBQ3RDLElBQUksS0FBSyxLQUFLLFNBQVM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUMxQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFNBQVM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUU3QyxNQUFNLFVBQVUsR0FBRyxHQUFHLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ25ELElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDakUsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNuRSxNQUFNLElBQUksYUFBYSxDQUFDLCtCQUErQixLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFRCxTQUFTLE1BQU0sQ0FBQyxNQUFnQjtJQUM5QixPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFRCxNQUFNLFVBQVUsMkJBQTJCLENBQ3pDLFVBQW1DLEVBQUUsRUFDckMsTUFBVyxFQUFFO0lBWWIsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsSUFBSSxFQUFFLENBQUM7SUFDckQsTUFBTSxLQUFLLEdBQ1IsT0FBTyxDQUFDLEtBQTRCO1FBQ3JDLGdCQUFnQixDQUFDLEtBQUs7UUFDdEIscUJBQXFCLENBQUM7SUFDeEIsTUFBTSxTQUFTLEdBQ1osT0FBTyxDQUFDLEVBQXlCO1FBQ2xDLGdCQUFnQixDQUFDLFNBQVM7UUFDMUIsR0FBRyxFQUFFLE9BQU87UUFDWixPQUFPLENBQUM7SUFDVixNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEUsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUMvQixnQkFBZ0IsQ0FBQyxPQUFPLElBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUN0RCxDQUFDO0lBQ0YsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3hGLE1BQU0sVUFBVSxHQUNiLE9BQU8sQ0FBQyxVQUFpQyxJQUFJLGdCQUFnQixDQUFDLFVBQVUsQ0FBQztJQUM1RSxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUUvRSxPQUFPO1FBQ0wsS0FBSztRQUNMLE1BQU0sRUFBRTtZQUNOLFNBQVM7WUFDVCxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7WUFDekUsTUFBTSxFQUFFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1lBQ25FLFFBQVE7WUFDUixVQUFVO1lBQ1YsVUFBVTtTQUNYO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQ3RDLFVBQWtCLEVBQ2xCLFFBQXVDO0lBRXZDLE1BQU0sUUFBUSxHQUF3QixFQUFFLENBQUM7SUFDekMsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzVCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsS0FBSyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2pFLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRztZQUNoQiwrRUFBK0U7WUFDL0UsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLFFBQWMsRUFBRSxHQUFHLEtBQVksRUFBRSxFQUFFO2dCQUM3RCxJQUFJLENBQUM7b0JBQ0gsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQ3hCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO3dCQUNoRCxPQUFPLENBQUMsSUFBSSxTQUFTLENBQUM7b0JBQ3hCLENBQUM7Z0JBQ0gsQ0FBQztnQkFBQyxNQUFNLENBQUM7b0JBQ1AsMEJBQTBCO2dCQUM1QixDQUFDO2dCQUNELE9BQU8sU0FBUyxDQUFDO1lBQ25CLENBQUM7WUFDRCxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsT0FBZSxFQUFFLFFBQWMsRUFBRSxHQUFHLEtBQVksRUFBRSxFQUFFO2dCQUM1RSxFQUFFLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUM5QyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDM0MsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELE1BQU0sY0FBYyxHQUFHLElBQUksT0FBTyxFQUFFO0tBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUM7S0FDZixXQUFXLENBQ1Ysd0VBQXdFLENBQ3pFO0tBQ0EsTUFBTSxDQUFDLGtCQUFrQixFQUFFLHFDQUFxQyxDQUFDO0tBQ2pFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsMEJBQTBCLENBQUM7S0FDbkQsTUFBTSxDQUFDLG9CQUFvQixFQUFFLG9DQUFvQyxDQUFDO0tBQ2xFLE1BQU0sQ0FDTCxvQkFBb0IsRUFDcEIseUVBQXlFLENBQzFFO0tBQ0EsTUFBTSxDQUNMLHVCQUF1QixFQUN2QixzRUFBc0UsQ0FDdkU7S0FDQSxNQUFNLENBQ0wscUJBQXFCLEVBQ3JCLDhFQUE4RSxDQUMvRTtLQUNBLE1BQU0sQ0FDTCx3QkFBd0IsRUFDeEIsdUZBQXVGO0lBQ3JGLDJGQUEyRjtJQUMzRiw4REFBOEQsQ0FDakU7S0FDQSxNQUFNLENBQ0wsc0JBQXNCLEVBQ3RCLHlGQUF5RjtJQUN2Riw2RUFBNkU7SUFDN0UsOERBQThELENBQ2pFO0tBQ0EsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFZLEVBQUUsRUFBRTtJQUM3QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUNwQixFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLGNBQWMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUNuRSxDQUFDO0lBQ0YsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLDJCQUEyQixDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwRSxJQUFJLEdBQWlDLENBQUM7SUFDdEMsSUFBSSxDQUFDO1FBQ0gsR0FBRyxHQUFHLE1BQU0sV0FBVyxDQUFDLE1BQU0sQ0FDNUIsTUFBTSxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDOUQsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQ2xCLENBQUM7UUFDRixNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQixHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXZCLE1BQU0sS0FBSyxHQUFJLE9BQWUsQ0FBQyxRQUFRLENBQWdELENBQUM7UUFDeEYsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUMvQixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2pELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLFdBQWdCLENBQUM7UUFDckIsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDO2dCQUNILFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1AsaUJBQWlCO1lBQ25CLENBQUM7WUFDRCxJQUFJLENBQUMsV0FBVztnQkFDZCxNQUFNLElBQUksYUFBYSxDQUNyQixxRkFBcUYsQ0FDdEYsQ0FBQztRQUNOLENBQUM7UUFFRCw4RUFBOEU7UUFDOUUsMEVBQTBFO1FBQzFFLE1BQU0sZ0JBQWdCLEdBQ25CLFdBQW1CLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLO1lBQzNDLFdBQW1CLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUM7UUFDakQsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCO1lBQ3RDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxPQUFPLEtBQUssZ0JBQWdCLENBQUM7WUFDeEYsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUViLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVO1lBQ2hDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLGVBQWUsQ0FBQztZQUM5RCxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWQsSUFBSSxNQUFNLENBQUMsVUFBVTtZQUNuQixHQUFHLENBQUMsSUFBSSxDQUFDLHFCQUFxQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7O1lBRWpFLEdBQUcsQ0FBQyxJQUFJLENBQUMsdUVBQXVFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXRHLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNO1lBQzFCLEdBQUcsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV2RSxNQUFNLFVBQVUsR0FBRyxNQUFNLGdCQUFnQixDQUFDLGVBQWUsQ0FDdkQsZUFBZSxFQUNmO1lBQ0UsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1lBQzNCLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtZQUN6QixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07WUFDckIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUNsRSxXQUFXO1lBQ1gsUUFBUTtZQUNSLFVBQVUsRUFBRSxJQUFJLHlCQUF5QixFQUFFO1lBQzNDLFVBQVUsRUFDUixNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDL0QsQ0FDRixDQUFDO1FBRUYsS0FBSyxNQUFNLGdCQUFnQixJQUFJLFVBQVUsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNoRCxNQUFNLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pDLENBQUM7UUFFRCxHQUFHLENBQUMsSUFBSSxDQUNOLHNCQUFzQixPQUFPLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsT0FBTyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUMvRixDQUFDO0lBQ0osQ0FBQztJQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7UUFDcEIsTUFBTSxJQUFJLGFBQWEsQ0FBQyxDQUFVLENBQUMsQ0FBQztJQUN0QyxDQUFDO1lBQVMsQ0FBQztRQUNULElBQUksR0FBRztZQUFFLE1BQU0sR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQztBQUVMLE9BQU8sRUFBRSxjQUFjLEVBQUUsQ0FBQztBQUUxQixNQUFNLGdCQUFnQixHQUFHLElBQUksT0FBTyxFQUFFO0tBQ25DLElBQUksQ0FBQyxZQUFZLENBQUM7S0FDbEIsV0FBVyxDQUNWLDJGQUEyRixDQUM1RjtLQUNBLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxxQ0FBcUMsQ0FBQztLQUNqRSxNQUFNLENBQUMsbUJBQW1CLEVBQUUsNENBQTRDLEVBQUUsSUFBSSxDQUFDO0tBQy9FLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxzQ0FBc0MsRUFBRSxTQUFTLENBQUM7S0FDaEYsTUFBTSxDQUFDLGtCQUFrQixFQUFFLHdCQUF3QixFQUFFLFdBQVcsQ0FBQztLQUNqRSxNQUFNLENBQUMsd0JBQXdCLEVBQUUsOEJBQThCLEVBQUUsc0NBQXNDLENBQUM7S0FDeEcsTUFBTSxDQUFDLG9CQUFvQixFQUFFLDBCQUEwQixDQUFDO0tBQ3hELE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBWSxFQUFFLEVBQUU7SUFDN0IsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyQyxNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsSUFBSSxHQUFpQyxDQUFDO0lBQ3RDLElBQUksQ0FBQztRQUNILEdBQUcsR0FBRyxNQUFNLFdBQVcsQ0FBQyxNQUFNLENBQzVCLE1BQU0sZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQzlELEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUNsQixDQUFDO1FBQ0YsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakIsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUVyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBRTthQUNqQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQzthQUN2QixjQUFjLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQzthQUNuQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUM7YUFDdEMsYUFBYSxFQUFFO2FBQ2YsS0FBSyxFQUFFLENBQUM7UUFFWCxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUzRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsT0FBTyxDQUFDLENBQUM7UUFDcEUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXpFLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDM0QsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDM0UsR0FBRyxDQUFDLElBQUksQ0FBQywyQkFBMkIsVUFBVSxLQUFLLFNBQVMsV0FBVyxXQUFXLFdBQVcsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFBQyxPQUFPLENBQVUsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sSUFBSSxhQUFhLENBQUMsQ0FBVSxDQUFDLENBQUM7SUFDdEMsQ0FBQztZQUFTLENBQUM7UUFDVCxJQUFJLEdBQUc7WUFBRSxNQUFNLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixDQUFDO0FBQ0gsQ0FBQyxDQUFDLENBQUM7QUFFTCxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRTtLQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDO0tBQ1osV0FBVyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7QUFFL0UsT0FBTyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUNuQyxPQUFPLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFckMsTUFBTSxDQUFDLE9BQU8sVUFBVSxJQUFJO0lBQzFCLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dnaW5nIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5cbmNvbnN0IGxvZ2dlciA9IExvZ2dpbmcuZm9yKFwiZm9yLW5lc3RcIik7XG5cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgQWRhcHRlciwgbm9ybWFsaXplSW1wb3J0LCBTZXJ2aWNlLCBUYXNrTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IFNlbXZlck1pZ3JhdGlvblZlcnNpb25pbmcgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmUvbWlncmF0aW9ucy9TZW12ZXJNaWdyYXRpb25WZXJzaW9uaW5nXCI7XG5pbXBvcnQgeyBNaWdyYXRpb25TZXJ2aWNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlL21pZ3JhdGlvbnNcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IE5lc3RGYWN0b3J5IH0gZnJvbSBcIkBuZXN0anMvY29yZVwiO1xuaW1wb3J0IHsgSU5lc3RBcHBsaWNhdGlvbiB9IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuaW1wb3J0IHsgRG9jdW1lbnRCdWlsZGVyLCBTd2FnZ2VyTW9kdWxlIH0gZnJvbSBcIkBuZXN0anMvc3dhZ2dlclwiO1xuXG5jb25zdCBkZWZhdWx0SW5wdXRDYW5kaWRhdGVzID0gW1xuICBcIi4vbGliL2FwcC5tb2R1bGUuY2pzXCIsXG4gIFwiLi9saWIvYXBwLm1vZHVsZS5qc1wiLFxuICBcIi4vc3JjL2FwcC5tb2R1bGUudHNcIixcbl07XG5cbmZ1bmN0aW9uIGRlZmF1bHRDYW5kaWRhdGVFeGlzdHMoY2FuZGlkYXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGZzLmV4aXN0c1N5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIGNhbmRpZGF0ZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUlucHV0UGF0aChcbiAgaW5wdXQ/OiBzdHJpbmcsXG4gIGV4aXN0czogKGNhbmRpZGF0ZTogc3RyaW5nKSA9PiBib29sZWFuID0gZGVmYXVsdENhbmRpZGF0ZUV4aXN0cyxcbiAgY2FuZGlkYXRlcyA9IGRlZmF1bHRJbnB1dENhbmRpZGF0ZXNcbik6IHN0cmluZyB7XG4gIGlmIChpbnB1dCkgcmV0dXJuIGlucHV0O1xuICBjb25zdCBmb3VuZCA9IGNhbmRpZGF0ZXMuZmluZCgoY2FuZGlkYXRlKSA9PiBleGlzdHMoY2FuZGlkYXRlKSk7XG4gIHJldHVybiBmb3VuZCB8fCBcIi4vc3JjL2FwcC5tb2R1bGUudHNcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkT3V0cHV0RmlsZVBhdGgocGFyYW1zOiB7XG4gIG91dHB1dERpcjogc3RyaW5nO1xuICBwa2dOYW1lPzogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICBmaWxlTmFtZT86IHN0cmluZztcbiAgYXBwZW5kVmVyc2lvbj86IGJvb2xlYW47XG4gIHZlcnNpb24/OiBzdHJpbmc7XG59KTogc3RyaW5nIHtcbiAgY29uc3Qge1xuICAgIG91dHB1dERpcixcbiAgICBwa2dOYW1lLFxuICAgIG5hbWUsXG4gICAgZmlsZU5hbWUsXG4gICAgYXBwZW5kVmVyc2lvbiA9IGZhbHNlLFxuICAgIHZlcnNpb24sXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGJhc2VEaXIgPSBwYXRoLnJlc29sdmUob3V0cHV0RGlyKTtcbiAgY29uc3QgZGVmYXVsdFBrZ05hbWUgPSBwa2dOYW1lO1xuICBjb25zdCByZXNvbHZlZFJhd1NvdXJjZSA9IGZpbGVOYW1lIHx8IG5hbWUgfHwgZGVmYXVsdFBrZ05hbWUgfHwgXCJhcGlcIjtcbiAgY29uc3QgYmFzZU5hbWUgPSBwYXRoLmJhc2VuYW1lKHJlc29sdmVkUmF3U291cmNlKTtcbiAgY29uc3QgcmVzb2x2ZWRSYXcgPSBiYXNlTmFtZS5yZXBsYWNlKC9bXFxcXC9dL2csIFwiX1wiKTtcbiAgY29uc3QgdHJpbW1lZCA9IHJlc29sdmVkUmF3LnJlcGxhY2UoL15bLl9dKy8sIFwiXCIpO1xuICBjb25zdCByZXNvbHZlZE5hbWUgPSB0cmltbWVkIHx8IFwiYXBpXCI7XG4gIGNvbnN0IHN1ZmZpeCA9IGFwcGVuZFZlcnNpb24gJiYgdmVyc2lvbiA/IGAtJHt2ZXJzaW9ufWAgOiBcIlwiO1xuICByZXR1cm4gcGF0aC5qb2luKGJhc2VEaXIsIGAke3Jlc29sdmVkTmFtZX0ke3N1ZmZpeH0uanNvbmApO1xufVxuXG5mdW5jdGlvbiBwYXJzZUxpc3QodmFsdWU6IHVua25vd24pOiBzdHJpbmdbXSB7XG4gIGlmICghdmFsdWUpIHJldHVybiBbXTtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKVxuICAgIHJldHVybiB2YWx1ZS5mbGF0TWFwKChlbnRyeSkgPT4gcGFyc2VMaXN0KGVudHJ5KSkuZmlsdGVyKEJvb2xlYW4pO1xuICByZXR1cm4gU3RyaW5nKHZhbHVlKVxuICAgIC5zcGxpdChcIixcIilcbiAgICAubWFwKChlbnRyeSkgPT4gZW50cnkudHJpbSgpKVxuICAgIC5maWx0ZXIoQm9vbGVhbik7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQm9vbGVhbkZsYWcodmFsdWU6IHVua25vd24pOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiB1bmRlZmluZWQ7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gdmFsdWU7XG5cbiAgY29uc3Qgbm9ybWFsaXplZCA9IGAke3ZhbHVlfWAudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChbXCIxXCIsIFwidHJ1ZVwiLCBcInllc1wiLCBcIm9uXCJdLmluY2x1ZGVzKG5vcm1hbGl6ZWQpKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKFtcIjBcIiwgXCJmYWxzZVwiLCBcIm5vXCIsIFwib2ZmXCJdLmluY2x1ZGVzKG5vcm1hbGl6ZWQpKSByZXR1cm4gZmFsc2U7XG4gIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBJbnZhbGlkIGJvb2xlYW4gZmxhZyB2YWx1ZTogJHt2YWx1ZX1gKTtcbn1cblxuZnVuY3Rpb24gdW5pcXVlKHZhbHVlczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gIHJldHVybiBbLi4ubmV3IFNldCh2YWx1ZXMpXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVNaWdyYXRlQ29tbWFuZENvbmZpZyhcbiAgb3B0aW9uczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fSxcbiAgcGtnOiBhbnkgPSB7fVxuKToge1xuICBpbnB1dDogc3RyaW5nO1xuICBjb25maWc6IHtcbiAgICB0b1ZlcnNpb246IHN0cmluZztcbiAgICB0YXNrTW9kZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICBkcnlSdW46IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgZmxhdm91cnM6IHN0cmluZ1tdO1xuICAgIHZlcnNpb25EaXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICByZWZlcmVuY2VzOiBzdHJpbmdbXTtcbiAgfTtcbn0ge1xuICBjb25zdCBwYWNrYWdlTWlncmF0aW9uID0gcGtnPy5kZWNhZj8ubWlncmF0aW9uID8/IHt9O1xuICBjb25zdCBpbnB1dCA9XG4gICAgKG9wdGlvbnMuaW5wdXQgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKSB8fFxuICAgIHBhY2thZ2VNaWdyYXRpb24uaW5wdXQgfHxcbiAgICBcIi4vc3JjL2FwcC5tb2R1bGUudHNcIjtcbiAgY29uc3QgdG9WZXJzaW9uID1cbiAgICAob3B0aW9ucy50byBhcyBzdHJpbmcgfCB1bmRlZmluZWQpIHx8XG4gICAgcGFja2FnZU1pZ3JhdGlvbi50b1ZlcnNpb24gfHxcbiAgICBwa2c/LnZlcnNpb24gfHxcbiAgICBcIjAuMC4wXCI7XG4gIGNvbnN0IGNsaUZsYXZvdXJzID0gcGFyc2VMaXN0KG9wdGlvbnMuZmxhdm91ciA/PyBvcHRpb25zLmFkYXB0ZXIpO1xuICBjb25zdCBwYWNrYWdlRmxhdm91cnMgPSBwYXJzZUxpc3QoXG4gICAgcGFja2FnZU1pZ3JhdGlvbi5mbGF2b3VyID8/IHBhY2thZ2VNaWdyYXRpb24uZmxhdm91cnNcbiAgKTtcbiAgY29uc3QgZmxhdm91cnMgPSBjbGlGbGF2b3Vycy5sZW5ndGggPiAwID8gdW5pcXVlKGNsaUZsYXZvdXJzKSA6IHVuaXF1ZShwYWNrYWdlRmxhdm91cnMpO1xuICBjb25zdCB2ZXJzaW9uRGlyID1cbiAgICAob3B0aW9ucy52ZXJzaW9uRGlyIGFzIHN0cmluZyB8IHVuZGVmaW5lZCkgfHwgcGFja2FnZU1pZ3JhdGlvbi52ZXJzaW9uRGlyO1xuICBjb25zdCByZWZlcmVuY2VzID0gcGFyc2VMaXN0KG9wdGlvbnMucmVmZXJlbmNlID8/IHBhY2thZ2VNaWdyYXRpb24ucmVmZXJlbmNlcyk7XG5cbiAgcmV0dXJuIHtcbiAgICBpbnB1dCxcbiAgICBjb25maWc6IHtcbiAgICAgIHRvVmVyc2lvbixcbiAgICAgIHRhc2tNb2RlOiBwYXJzZUJvb2xlYW5GbGFnKG9wdGlvbnMudGFza01vZGUgPz8gcGFja2FnZU1pZ3JhdGlvbi50YXNrTW9kZSksXG4gICAgICBkcnlSdW46IHBhcnNlQm9vbGVhbkZsYWcob3B0aW9ucy5kcnlSdW4gPz8gcGFja2FnZU1pZ3JhdGlvbi5kcnlSdW4pLFxuICAgICAgZmxhdm91cnMsXG4gICAgICB2ZXJzaW9uRGlyLFxuICAgICAgcmVmZXJlbmNlcyxcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRGaWxlVmVyc2lvbkhhbmRsZXJzKFxuICB2ZXJzaW9uRGlyOiBzdHJpbmcsXG4gIGFkYXB0ZXJzOiBBZGFwdGVyPGFueSwgYW55LCBhbnksIGFueT5bXVxuKTogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gIGNvbnN0IGhhbmRsZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIGZvciAoY29uc3QgYWRhcHRlciBvZiBhZGFwdGVycykge1xuICAgIGNvbnN0IGFsaWFzID0gYWRhcHRlci5hbGlhcztcbiAgICBjb25zdCBmaWxlID0gcGF0aC5qb2luKHZlcnNpb25EaXIsIGAke2FsaWFzfS5taWdyYXRpb24udmVyc2lvbmApO1xuICAgIGhhbmRsZXJzW2FsaWFzXSA9IHtcbiAgICAgIC8vIGFkYXB0ZXIgYW5kIGN0eEFyZ3MgYXJlIGF2YWlsYWJsZSBidXQgbm90IG5lZWRlZCDigJQgdmVyc2lvbiBsaXZlcyBpbiB0aGUgZmlsZVxuICAgICAgcmV0cmlldmVMYXN0VmVyc2lvbjogYXN5bmMgKF9hZGFwdGVyPzogYW55LCAuLi5fYXJnczogYW55W10pID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhmaWxlKSkge1xuICAgICAgICAgICAgY29uc3QgdiA9IGZzLnJlYWRGaWxlU3luYyhmaWxlLCBcInV0Zi04XCIpLnRyaW0oKTtcbiAgICAgICAgICAgIHJldHVybiB2IHx8IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIG5vIGZpbGUgeWV0IOKGkiBmaXJzdCBydW5cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfSxcbiAgICAgIHNldEN1cnJlbnRWZXJzaW9uOiBhc3luYyAodmVyc2lvbjogc3RyaW5nLCBfYWRhcHRlcj86IGFueSwgLi4uX2FyZ3M6IGFueVtdKSA9PiB7XG4gICAgICAgIGZzLm1rZGlyU3luYyh2ZXJzaW9uRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhmaWxlLCB2ZXJzaW9uLCBcInV0Zi04XCIpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG4gIHJldHVybiBoYW5kbGVycztcbn1cblxuY29uc3QgbWlncmF0ZUNvbW1hbmQgPSBuZXcgQ29tbWFuZCgpXG4gIC5uYW1lKFwibWlncmF0ZVwiKVxuICAuZGVzY3JpcHRpb24oXG4gICAgXCJib290cyB0aGUgYXBwIGNvbnRleHQgaGVhZGxlc3NseSwgZXhlY3V0ZXMgZGVjYWYgbWlncmF0aW9ucywgYW5kIGV4aXRzXCJcbiAgKVxuICAub3B0aW9uKFwiLS1pbnB1dCA8U3RyaW5nPlwiLCBcInBhdGggdG8gYXBwIG1vZHVsZSAodHMgb3IgY29tcGlsZWQpXCIpXG4gIC5vcHRpb24oXCItLXRvIDxTdHJpbmc+XCIsIFwidGFyZ2V0IG1pZ3JhdGlvbiB2ZXJzaW9uXCIpXG4gIC5vcHRpb24oXCItLWZsYXZvdXIgPFN0cmluZz5cIiwgXCJ0YXJnZXQgZmxhdm91cihzKSwgY29tbWEtc2VwYXJhdGVkXCIpXG4gIC5vcHRpb24oXG4gICAgXCItLWFkYXB0ZXIgPFN0cmluZz5cIixcbiAgICBcImFkYXB0ZXIgZmxhdm91ciBhbGlhcyhlcyksIGNvbW1hLXNlcGFyYXRlZCAoc2FtZSBiZWhhdmlvciBhcyAtLWZsYXZvdXIpXCJcbiAgKVxuICAub3B0aW9uKFxuICAgIFwiLS10YXNrLW1vZGUgW0Jvb2xlYW5dXCIsXG4gICAgXCJydW5zIG1pZ3JhdGlvbiB2aWEgdGFzayBtb2RlICh0cnVlL2ZhbHNlKS4gYWNjZXB0cyBiYXJlIGZsYWcgYXMgdHJ1ZVwiXG4gIClcbiAgLm9wdGlvbihcbiAgICBcIi0tZHJ5LXJ1biBbQm9vbGVhbl1cIixcbiAgICBcInJ1bnMgbWlncmF0aW9ucyB3aXRoIGRyeS1ydW4gY29udGV4dCAodHJ1ZS9mYWxzZSkuIGFjY2VwdHMgYmFyZSBmbGFnIGFzIHRydWVcIlxuICApXG4gIC5vcHRpb24oXG4gICAgXCItLXZlcnNpb24tZGlyIDxTdHJpbmc+XCIsXG4gICAgXCJkaXJlY3Rvcnkgd2hlcmUgcGVyLWFkYXB0ZXIgdmVyc2lvbiBmaWxlcyBhcmUgcGVyc2lzdGVkIChlLmcuIGEgRG9ja2VyIHZvbHVtZSBwYXRoKS4gXCIgK1xuICAgICAgXCJFYWNoIGFkYXB0ZXIgd3JpdGVzIGl0cyBsYXN0LW1pZ3JhdGVkIHZlcnNpb24gdG8gPHZlcnNpb25EaXI+LzxhbGlhcz4ubWlncmF0aW9uLnZlcnNpb24uIFwiICtcbiAgICAgIFwiQ2FuIGFsc28gYmUgc2V0IHZpYSBwYWNrYWdlLmpzb24gZGVjYWYubWlncmF0aW9uLnZlcnNpb25EaXIuXCJcbiAgKVxuICAub3B0aW9uKFxuICAgIFwiLS1yZWZlcmVuY2UgPFN0cmluZz5cIixcbiAgICBcInJ1biBvbmx5IHRoZSBuYW1lZCBtaWdyYXRpb24gcmVmZXJlbmNlKHMpLCBjb21tYS1zZXBhcmF0ZWQgKGUuZy4gJ3Byb2R1Y3QtbWlncmF0aW9uJykuIFwiICtcbiAgICAgIFwiQnlwYXNzZXMgdmVyc2lvbiByYW5nZSBmaWx0ZXJpbmcg4oCUIHVzZSBmb3IgemVyby1kYXkgb3Igb25lLW9mZiBtaWdyYXRpb25zLiBcIiArXG4gICAgICBcIkNhbiBhbHNvIGJlIHNldCB2aWEgcGFja2FnZS5qc29uIGRlY2FmLm1pZ3JhdGlvbi5yZWZlcmVuY2VzLlwiXG4gIClcbiAgLmFjdGlvbihhc3luYyAob3B0aW9uczogYW55KSA9PiB7XG4gICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShcbiAgICAgIGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJwYWNrYWdlLmpzb25cIiksIFwidXRmLThcIilcbiAgICApO1xuICAgIGNvbnN0IGxvZyA9IGxvZ2dlci5mb3IoXCJtaWdyYXRlXCIpO1xuICAgIGNvbnN0IHsgaW5wdXQsIGNvbmZpZyB9ID0gcmVzb2x2ZU1pZ3JhdGVDb21tYW5kQ29uZmlnKG9wdGlvbnMsIHBrZyk7XG4gICAgbGV0IGFwcDogSU5lc3RBcHBsaWNhdGlvbiB8IHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgYXBwID0gYXdhaXQgTmVzdEZhY3RvcnkuY3JlYXRlKFxuICAgICAgICBhd2FpdCBub3JtYWxpemVJbXBvcnQoaW1wb3J0KHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBpbnB1dCkpKSxcbiAgICAgICAgeyBsb2dnZXI6IGZhbHNlIH1cbiAgICAgICk7XG4gICAgICBhd2FpdCBhcHAuaW5pdCgpO1xuICAgICAgbG9nLmluZm8oYEFwcCBib290ZWRgKTtcblxuICAgICAgY29uc3QgY2FjaGUgPSAoQWRhcHRlciBhcyBhbnkpW1wiX2NhY2hlXCJdIGFzIFJlY29yZDxzdHJpbmcsIEFkYXB0ZXI8YW55LCBhbnksIGFueSwgYW55Pj47XG4gICAgICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICBjb25zdCBhZGFwdGVycyA9IE9iamVjdC52YWx1ZXMoY2FjaGUpLmZpbHRlcigoYSkgPT4ge1xuICAgICAgICBpZiAoc2Vlbi5oYXMoYS5hbGlhcykpIHJldHVybiBmYWxzZTtcbiAgICAgICAgc2Vlbi5hZGQoYS5hbGlhcyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG5cbiAgICAgIGxldCB0YXNrU2VydmljZTogYW55O1xuICAgICAgaWYgKGNvbmZpZy50YXNrTW9kZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRhc2tTZXJ2aWNlID0gU2VydmljZS5nZXQoVGFza01vZGVsKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gbm90IHJlZ2lzdGVyZWRcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRhc2tTZXJ2aWNlKVxuICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgYHRhc2stbW9kZSByZXF1ZXN0ZWQgYnV0IG5vIFRhc2tTZXJ2aWNlIGlzIHJlZ2lzdGVyZWQgKGV4cGVjdGVkIEBzZXJ2aWNlKFRhc2tNb2RlbCkpYFxuICAgICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIEV4Y2x1ZGUgdGhlIHRhc2sgZW5naW5lJ3MgYWRhcHRlciBmcm9tIG1pZ3JhdGlvbiB0YXJnZXRzIOKAlCBNaWdyYXRpb25TZXJ2aWNlXG4gICAgICAvLyB3aWxsIHRocm93IGlmIGl0IGFwcGVhcnMgaW4gdGhlIGFkYXB0ZXIgbGlzdCBhbG9uZ3NpZGUgY2ZnLnRhc2tTZXJ2aWNlLlxuICAgICAgY29uc3QgdGFza0FkYXB0ZXJBbGlhczogc3RyaW5nIHwgdW5kZWZpbmVkID1cbiAgICAgICAgKHRhc2tTZXJ2aWNlIGFzIGFueSk/LmNsaWVudD8uYWRhcHRlcj8uYWxpYXMgfHxcbiAgICAgICAgKHRhc2tTZXJ2aWNlIGFzIGFueSk/LmNsaWVudD8uYWRhcHRlcj8uZmxhdm91cjtcbiAgICAgIGNvbnN0IG1pZ3JhdGVBZGFwdGVycyA9IHRhc2tBZGFwdGVyQWxpYXNcbiAgICAgICAgPyBhZGFwdGVycy5maWx0ZXIoKGEpID0+IGEuYWxpYXMgIT09IHRhc2tBZGFwdGVyQWxpYXMgJiYgYS5mbGF2b3VyICE9PSB0YXNrQWRhcHRlckFsaWFzKVxuICAgICAgICA6IGFkYXB0ZXJzO1xuXG4gICAgICBjb25zdCBoYW5kbGVycyA9IGNvbmZpZy52ZXJzaW9uRGlyXG4gICAgICAgID8gYnVpbGRGaWxlVmVyc2lvbkhhbmRsZXJzKGNvbmZpZy52ZXJzaW9uRGlyLCBtaWdyYXRlQWRhcHRlcnMpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoY29uZmlnLnZlcnNpb25EaXIpXG4gICAgICAgIGxvZy5pbmZvKGBWZXJzaW9uIHRyYWNraW5nOiAke3BhdGgucmVzb2x2ZShjb25maWcudmVyc2lvbkRpcil9YCk7XG4gICAgICBlbHNlXG4gICAgICAgIGxvZy53YXJuKGBObyAtLXZlcnNpb24tZGlyIHNldCDigJQgZXZlcnkgcnVuIHdpbGwgcmUtYXBwbHkgYWxsIG1pZ3JhdGlvbnMgdXAgdG8gJHtjb25maWcudG9WZXJzaW9ufWApO1xuXG4gICAgICBpZiAoY29uZmlnLnJlZmVyZW5jZXMubGVuZ3RoKVxuICAgICAgICBsb2cuaW5mbyhgUnVubmluZyBvbmx5IHJlZmVyZW5jZXM6ICR7Y29uZmlnLnJlZmVyZW5jZXMuam9pbihcIiwgXCIpfWApO1xuXG4gICAgICBjb25zdCBtaWdyYXRpb25zID0gYXdhaXQgTWlncmF0aW9uU2VydmljZS5taWdyYXRlQWRhcHRlcnMoXG4gICAgICAgIG1pZ3JhdGVBZGFwdGVycyxcbiAgICAgICAge1xuICAgICAgICAgIHRvVmVyc2lvbjogY29uZmlnLnRvVmVyc2lvbixcbiAgICAgICAgICB0YXNrTW9kZTogY29uZmlnLnRhc2tNb2RlLFxuICAgICAgICAgIGRyeVJ1bjogY29uZmlnLmRyeVJ1bixcbiAgICAgICAgICBmbGF2b3VyczogY29uZmlnLmZsYXZvdXJzLmxlbmd0aCA+IDAgPyBjb25maWcuZmxhdm91cnMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgdGFza1NlcnZpY2UsXG4gICAgICAgICAgaGFuZGxlcnMsXG4gICAgICAgICAgdmVyc2lvbmluZzogbmV3IFNlbXZlck1pZ3JhdGlvblZlcnNpb25pbmcoKSxcbiAgICAgICAgICByZWZlcmVuY2VzOlxuICAgICAgICAgICAgY29uZmlnLnJlZmVyZW5jZXMubGVuZ3RoID4gMCA/IGNvbmZpZy5yZWZlcmVuY2VzIDogdW5kZWZpbmVkLFxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBmb3IgKGNvbnN0IG1pZ3JhdGlvblNlcnZpY2Ugb2YgbWlncmF0aW9ucyB8fCBbXSkge1xuICAgICAgICBhd2FpdCBtaWdyYXRpb25TZXJ2aWNlLnRyYWNrKCk7XG4gICAgICB9XG5cbiAgICAgIGxvZy5pbmZvKFxuICAgICAgICBgTWlncmF0aW9uIGNvbXBsZXRlZCR7b3B0aW9ucy50byB8fCBwa2cudmVyc2lvbiA/IGAgdXAgdG8gJHtvcHRpb25zLnRvIHx8IHBrZy52ZXJzaW9ufWAgOiBcIlwifWBcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoZSBhcyBFcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChhcHApIGF3YWl0IGFwcC5jbG9zZSgpO1xuICAgIH1cbiAgfSk7XG5cbmV4cG9ydCB7IG1pZ3JhdGVDb21tYW5kIH07XG5cbmNvbnN0IGV4cG9ydEFwaUNvbW1hbmQgPSBuZXcgQ29tbWFuZCgpXG4gIC5uYW1lKFwiZXhwb3J0LWFwaVwiKVxuICAuZGVzY3JpcHRpb24oXG4gICAgXCJib290cyB0aGUgYXBwIGNvbnRleHQgaGVhZGxlc3NseSwgZXh0cmFjdHMgdGhlIE9wZW5BUEkgc3BlYywgYW5kIHdyaXRlcyBpdCB0byBhIEpTT04gZmlsZVwiXG4gIClcbiAgLm9wdGlvbihcIi0taW5wdXQgPFN0cmluZz5cIiwgXCJwYXRoIHRvIGFwcCBtb2R1bGUgKHRzIG9yIGNvbXBpbGVkKVwiKVxuICAub3B0aW9uKFwiLS1vdXRwdXQgPFN0cmluZz5cIiwgXCJvdXRwdXQgZGlyZWN0b3J5IGZvciB0aGUgT3BlbkFQSSBKU09OIGZpbGVcIiwgXCIuL1wiKVxuICAub3B0aW9uKFwiLS1maWxlTmFtZSA8U3RyaW5nPlwiLCBcIm91dHB1dCBmaWxlIG5hbWUgKHdpdGhvdXQgZXh0ZW5zaW9uKVwiLCBcIm9wZW5hcGlcIilcbiAgLm9wdGlvbihcIi0tdGl0bGUgPFN0cmluZz5cIiwgXCJPcGVuQVBJIGRvY3VtZW50IHRpdGxlXCIsIFwiREVDQUYgQVBJXCIpXG4gIC5vcHRpb24oXCItLWRlc2NyaXB0aW9uIDxTdHJpbmc+XCIsIFwiT3BlbkFQSSBkb2N1bWVudCBkZXNjcmlwdGlvblwiLCBcIkF1dG8tZ2VuZXJhdGVkIE9wZW5BUEkgc3BlY2lmaWNhdGlvblwiKVxuICAub3B0aW9uKFwiLS12ZXJzaW9uIDxTdHJpbmc+XCIsIFwiT3BlbkFQSSBkb2N1bWVudCB2ZXJzaW9uXCIpXG4gIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnM6IGFueSkgPT4ge1xuICAgIGNvbnN0IGxvZyA9IGxvZ2dlci5mb3IoXCJleHBvcnQtYXBpXCIpO1xuICAgIGNvbnN0IGlucHV0ID0gcmVzb2x2ZUlucHV0UGF0aChvcHRpb25zLmlucHV0KTtcbiAgICBsZXQgYXBwOiBJTmVzdEFwcGxpY2F0aW9uIHwgdW5kZWZpbmVkO1xuICAgIHRyeSB7XG4gICAgICBhcHAgPSBhd2FpdCBOZXN0RmFjdG9yeS5jcmVhdGUoXG4gICAgICAgIGF3YWl0IG5vcm1hbGl6ZUltcG9ydChpbXBvcnQocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIGlucHV0KSkpLFxuICAgICAgICB7IGxvZ2dlcjogZmFsc2UgfVxuICAgICAgKTtcbiAgICAgIGF3YWl0IGFwcC5pbml0KCk7XG4gICAgICBsb2cuaW5mbyhgQXBwIGJvb3RlZCBmcm9tICR7aW5wdXR9YCk7XG5cbiAgICAgIGNvbnN0IGNvbmZpZyA9IG5ldyBEb2N1bWVudEJ1aWxkZXIoKVxuICAgICAgICAuc2V0VGl0bGUob3B0aW9ucy50aXRsZSlcbiAgICAgICAgLnNldERlc2NyaXB0aW9uKG9wdGlvbnMuZGVzY3JpcHRpb24pXG4gICAgICAgIC5zZXRWZXJzaW9uKG9wdGlvbnMudmVyc2lvbiB8fCBcIjEuMC4wXCIpXG4gICAgICAgIC5hZGRCZWFyZXJBdXRoKClcbiAgICAgICAgLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IGRvY3VtZW50ID0gU3dhZ2dlck1vZHVsZS5jcmVhdGVEb2N1bWVudChhcHAsIGNvbmZpZyk7XG5cbiAgICAgIGNvbnN0IG91dHB1dERpciA9IHBhdGgucmVzb2x2ZShvcHRpb25zLm91dHB1dCk7XG4gICAgICBmcy5ta2RpclN5bmMob3V0cHV0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGNvbnN0IG91dHB1dEZpbGUgPSBwYXRoLmpvaW4ob3V0cHV0RGlyLCBgJHtvcHRpb25zLmZpbGVOYW1lfS5qc29uYCk7XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKG91dHB1dEZpbGUsIEpTT04uc3RyaW5naWZ5KGRvY3VtZW50LCBudWxsLCAyKSwgXCJ1dGYtOFwiKTtcblxuICAgICAgY29uc3QgcGF0aENvdW50ID0gT2JqZWN0LmtleXMoZG9jdW1lbnQucGF0aHMgfHwge30pLmxlbmd0aDtcbiAgICAgIGNvbnN0IHNjaGVtYUNvdW50ID0gT2JqZWN0LmtleXMoZG9jdW1lbnQuY29tcG9uZW50cz8uc2NoZW1hcyB8fCB7fSkubGVuZ3RoO1xuICAgICAgbG9nLmluZm8oYE9wZW5BUEkgc3BlYyB3cml0dGVuIHRvICR7b3V0cHV0RmlsZX0gKCR7cGF0aENvdW50fSBwYXRocywgJHtzY2hlbWFDb3VudH0gc2NoZW1hcylgKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihlIGFzIEVycm9yKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKGFwcCkgYXdhaXQgYXBwLmNsb3NlKCk7XG4gICAgfVxuICB9KTtcblxuY29uc3QgbmVzdENtZCA9IG5ldyBDb21tYW5kKClcbiAgLm5hbWUoXCJuZXN0XCIpXG4gIC5kZXNjcmlwdGlvbihcImV4cG9zZXMgdmFyaW91cyBjb21tYW5kcyB0byBoZWxwIG1hbmFnZSB0aGUgbmVzdCBpbnRlZ3JhdGlvblwiKTtcblxubmVzdENtZC5hZGRDb21tYW5kKG1pZ3JhdGVDb21tYW5kKTtcbm5lc3RDbWQuYWRkQ29tbWFuZChleHBvcnRBcGlDb21tYW5kKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbmVzdCgpIHtcbiAgcmV0dXJuIG5lc3RDbWQ7XG59XG4iXX0=
|
|
262
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGktbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU1QyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBRXZDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDaEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRSxNQUFNLHNCQUFzQixHQUFHO0lBQzdCLHNCQUFzQjtJQUN0QixxQkFBcUI7SUFDckIscUJBQXFCO0NBQ3RCLENBQUM7QUFFRixTQUFTLHNCQUFzQixDQUFDLFNBQWlCO0lBQy9DLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLEtBQWMsRUFDZCxTQUF5QyxzQkFBc0IsRUFDL0QsVUFBVSxHQUFHLHNCQUFzQjtJQUVu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QUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXpFLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDM0QsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDM0UsR0FBRyxDQUFDLElBQUksQ0FBQywyQkFBMkIsVUFBVSxLQUFLLFNBQVMsV0FBVyxXQUFXLFdBQVcsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFBQyxPQUFPLENBQVUsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sSUFBSSxhQUFhLENBQUMsQ0FBVSxDQUFDLENBQUM7SUFDdEMsQ0FBQztZQUFTLENBQUM7UUFDVCxJQUFJLEdBQUc7WUFBRSxNQUFNLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixDQUFDO0FBQ0gsQ0FBQyxDQUFDLENBQUM7QUFFTCxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRTtLQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDO0tBQ1osV0FBVyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7QUFFL0UsT0FBTyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUNuQyxPQUFPLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFckMsTUFBTSxDQUFDLE9BQU8sVUFBVSxJQUFJO0lBQzFCLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dnaW5nIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5cbmNvbnN0IGxvZ2dlciA9IExvZ2dpbmcuZm9yKFwiZm9yLW5lc3RcIik7XG5cbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgQWRhcHRlciwgbm9ybWFsaXplSW1wb3J0LCBTZXJ2aWNlLCBUYXNrTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IFNlbXZlck1pZ3JhdGlvblZlcnNpb25pbmcgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmUvbWlncmF0aW9ucy9TZW12ZXJNaWdyYXRpb25WZXJzaW9uaW5nXCI7XG5pbXBvcnQgeyBNaWdyYXRpb25TZXJ2aWNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlL21pZ3JhdGlvbnNcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IE5lc3RGYWN0b3J5IH0gZnJvbSBcIkBuZXN0anMvY29yZVwiO1xuaW1wb3J0IHsgSU5lc3RBcHBsaWNhdGlvbiB9IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuaW1wb3J0IHsgRG9jdW1lbnRCdWlsZGVyLCBTd2FnZ2VyTW9kdWxlIH0gZnJvbSBcIkBuZXN0anMvc3dhZ2dlclwiO1xuXG5jb25zdCBkZWZhdWx0SW5wdXRDYW5kaWRhdGVzID0gW1xuICBcIi4vbGliL2FwcC5tb2R1bGUuY2pzXCIsXG4gIFwiLi9saWIvYXBwLm1vZHVsZS5qc1wiLFxuICBcIi4vc3JjL2FwcC5tb2R1bGUudHNcIixcbl07XG5cbmZ1bmN0aW9uIGRlZmF1bHRDYW5kaWRhdGVFeGlzdHMoY2FuZGlkYXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGZzLmV4aXN0c1N5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIGNhbmRpZGF0ZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUlucHV0UGF0aChcbiAgaW5wdXQ/OiBzdHJpbmcsXG4gIGV4aXN0czogKGNhbmRpZGF0ZTogc3RyaW5nKSA9PiBib29sZWFuID0gZGVmYXVsdENhbmRpZGF0ZUV4aXN0cyxcbiAgY2FuZGlkYXRlcyA9IGRlZmF1bHRJbnB1dENhbmRpZGF0ZXNcbik6IHN0cmluZyB7XG4gIGlmIChpbnB1dCkgcmV0dXJuIGlucHV0O1xuICBjb25zdCBmb3VuZCA9IGNhbmRpZGF0ZXMuZmluZCgoY2FuZGlkYXRlKSA9PiBleGlzdHMoY2FuZGlkYXRlKSk7XG4gIHJldHVybiBmb3VuZCB8fCBcIi4vc3JjL2FwcC5tb2R1bGUudHNcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkT3V0cHV0RmlsZVBhdGgocGFyYW1zOiB7XG4gIG91dHB1dERpcjogc3RyaW5nO1xuICBwa2dOYW1lPzogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICBmaWxlTmFtZT86IHN0cmluZztcbiAgYXBwZW5kVmVyc2lvbj86IGJvb2xlYW47XG4gIHZlcnNpb24/OiBzdHJpbmc7XG59KTogc3RyaW5nIHtcbiAgY29uc3Qge1xuICAgIG91dHB1dERpcixcbiAgICBwa2dOYW1lLFxuICAgIG5hbWUsXG4gICAgZmlsZU5hbWUsXG4gICAgYXBwZW5kVmVyc2lvbiA9IGZhbHNlLFxuICAgIHZlcnNpb24sXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGJhc2VEaXIgPSBwYXRoLnJlc29sdmUob3V0cHV0RGlyKTtcbiAgY29uc3QgZGVmYXVsdFBrZ05hbWUgPSBwa2dOYW1lO1xuICBjb25zdCByZXNvbHZlZFJhd1NvdXJjZSA9IGZpbGVOYW1lIHx8IG5hbWUgfHwgZGVmYXVsdFBrZ05hbWUgfHwgXCJhcGlcIjtcbiAgY29uc3QgYmFzZU5hbWUgPSBwYXRoLmJhc2VuYW1lKHJlc29sdmVkUmF3U291cmNlKTtcbiAgY29uc3QgcmVzb2x2ZWRSYXcgPSBiYXNlTmFtZS5yZXBsYWNlKC9bXFxcXC9dL2csIFwiX1wiKTtcbiAgY29uc3QgdHJpbW1lZCA9IHJlc29sdmVkUmF3LnJlcGxhY2UoL15bLl9dKy8sIFwiXCIpO1xuICBjb25zdCByZXNvbHZlZE5hbWUgPSB0cmltbWVkIHx8IFwiYXBpXCI7XG4gIGNvbnN0IHN1ZmZpeCA9IGFwcGVuZFZlcnNpb24gJiYgdmVyc2lvbiA/IGAtJHt2ZXJzaW9ufWAgOiBcIlwiO1xuICByZXR1cm4gcGF0aC5qb2luKGJhc2VEaXIsIGAke3Jlc29sdmVkTmFtZX0ke3N1ZmZpeH0uanNvbmApO1xufVxuXG5mdW5jdGlvbiBwYXJzZUxpc3QodmFsdWU6IHVua25vd24pOiBzdHJpbmdbXSB7XG4gIGlmICghdmFsdWUpIHJldHVybiBbXTtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKVxuICAgIHJldHVybiB2YWx1ZS5mbGF0TWFwKChlbnRyeSkgPT4gcGFyc2VMaXN0KGVudHJ5KSkuZmlsdGVyKEJvb2xlYW4pO1xuICByZXR1cm4gU3RyaW5nKHZhbHVlKVxuICAgIC5zcGxpdChcIixcIilcbiAgICAubWFwKChlbnRyeSkgPT4gZW50cnkudHJpbSgpKVxuICAgIC5maWx0ZXIoQm9vbGVhbik7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQm9vbGVhbkZsYWcodmFsdWU6IHVua25vd24pOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiB1bmRlZmluZWQ7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gdmFsdWU7XG5cbiAgY29uc3Qgbm9ybWFsaXplZCA9IGAke3ZhbHVlfWAudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChbXCIxXCIsIFwidHJ1ZVwiLCBcInllc1wiLCBcIm9uXCJdLmluY2x1ZGVzKG5vcm1hbGl6ZWQpKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKFtcIjBcIiwgXCJmYWxzZVwiLCBcIm5vXCIsIFwib2ZmXCJdLmluY2x1ZGVzKG5vcm1hbGl6ZWQpKSByZXR1cm4gZmFsc2U7XG4gIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBJbnZhbGlkIGJvb2xlYW4gZmxhZyB2YWx1ZTogJHt2YWx1ZX1gKTtcbn1cblxuZnVuY3Rpb24gdW5pcXVlKHZhbHVlczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gIHJldHVybiBbLi4ubmV3IFNldCh2YWx1ZXMpXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVNaWdyYXRlQ29tbWFuZENvbmZpZyhcbiAgb3B0aW9uczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fSxcbiAgcGtnOiBhbnkgPSB7fVxuKToge1xuICBpbnB1dDogc3RyaW5nO1xuICBjb25maWc6IHtcbiAgICB0b1ZlcnNpb246IHN0cmluZztcbiAgICB0YXNrTW9kZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICBkcnlSdW46IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgZmxhdm91cnM6IHN0cmluZ1tdO1xuICAgIHZlcnNpb25EaXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICByZWZlcmVuY2VzOiBzdHJpbmdbXTtcbiAgfTtcbn0ge1xuICBjb25zdCBwYWNrYWdlTWlncmF0aW9uID0gcGtnPy5kZWNhZj8ubWlncmF0aW9uID8/IHt9O1xuICBjb25zdCBpbnB1dCA9XG4gICAgKG9wdGlvbnMuaW5wdXQgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKSB8fFxuICAgIHBhY2thZ2VNaWdyYXRpb24uaW5wdXQgfHxcbiAgICBcIi4vc3JjL2FwcC5tb2R1bGUudHNcIjtcbiAgY29uc3QgdG9WZXJzaW9uID1cbiAgICAob3B0aW9ucy50byBhcyBzdHJpbmcgfCB1bmRlZmluZWQpIHx8XG4gICAgcGFja2FnZU1pZ3JhdGlvbi50b1ZlcnNpb24gfHxcbiAgICBwa2c/LnZlcnNpb24gfHxcbiAgICBcIjAuMC4wXCI7XG4gIGNvbnN0IGNsaUZsYXZvdXJzID0gcGFyc2VMaXN0KG9wdGlvbnMuZmxhdm91ciA/PyBvcHRpb25zLmFkYXB0ZXIpO1xuICBjb25zdCBwYWNrYWdlRmxhdm91cnMgPSBwYXJzZUxpc3QoXG4gICAgcGFja2FnZU1pZ3JhdGlvbi5mbGF2b3VyID8/IHBhY2thZ2VNaWdyYXRpb24uZmxhdm91cnNcbiAgKTtcbiAgY29uc3QgZmxhdm91cnMgPSBjbGlGbGF2b3Vycy5sZW5ndGggPiAwID8gdW5pcXVlKGNsaUZsYXZvdXJzKSA6IHVuaXF1ZShwYWNrYWdlRmxhdm91cnMpO1xuICBjb25zdCB2ZXJzaW9uRGlyID1cbiAgICAob3B0aW9ucy52ZXJzaW9uRGlyIGFzIHN0cmluZyB8IHVuZGVmaW5lZCkgfHwgcGFja2FnZU1pZ3JhdGlvbi52ZXJzaW9uRGlyO1xuICBjb25zdCByZWZlcmVuY2VzID0gcGFyc2VMaXN0KG9wdGlvbnMucmVmZXJlbmNlID8/IHBhY2thZ2VNaWdyYXRpb24ucmVmZXJlbmNlcyk7XG5cbiAgcmV0dXJuIHtcbiAgICBpbnB1dCxcbiAgICBjb25maWc6IHtcbiAgICAgIHRvVmVyc2lvbixcbiAgICAgIHRhc2tNb2RlOiBwYXJzZUJvb2xlYW5GbGFnKG9wdGlvbnMudGFza01vZGUgPz8gcGFja2FnZU1pZ3JhdGlvbi50YXNrTW9kZSksXG4gICAgICBkcnlSdW46IHBhcnNlQm9vbGVhbkZsYWcob3B0aW9ucy5kcnlSdW4gPz8gcGFja2FnZU1pZ3JhdGlvbi5kcnlSdW4pLFxuICAgICAgZmxhdm91cnMsXG4gICAgICB2ZXJzaW9uRGlyLFxuICAgICAgcmVmZXJlbmNlcyxcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRGaWxlVmVyc2lvbkhhbmRsZXJzKFxuICB2ZXJzaW9uRGlyOiBzdHJpbmcsXG4gIGFkYXB0ZXJzOiBBZGFwdGVyPGFueSwgYW55LCBhbnksIGFueT5bXVxuKTogUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gIGNvbnN0IGhhbmRsZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIGZvciAoY29uc3QgYWRhcHRlciBvZiBhZGFwdGVycykge1xuICAgIGNvbnN0IGFsaWFzID0gYWRhcHRlci5hbGlhcztcbiAgICBjb25zdCBmaWxlID0gcGF0aC5qb2luKHZlcnNpb25EaXIsIGAke2FsaWFzfS5taWdyYXRpb24udmVyc2lvbmApO1xuICAgIGhhbmRsZXJzW2FsaWFzXSA9IHtcbiAgICAgIC8vIGFkYXB0ZXIgYW5kIGN0eEFyZ3MgYXJlIGF2YWlsYWJsZSBidXQgbm90IG5lZWRlZCDigJQgdmVyc2lvbiBsaXZlcyBpbiB0aGUgZmlsZVxuICAgICAgcmV0cmlldmVMYXN0VmVyc2lvbjogYXN5bmMgKF9hZGFwdGVyPzogYW55LCAuLi5fYXJnczogYW55W10pID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhmaWxlKSkge1xuICAgICAgICAgICAgY29uc3QgdiA9IGZzLnJlYWRGaWxlU3luYyhmaWxlLCBcInV0Zi04XCIpLnRyaW0oKTtcbiAgICAgICAgICAgIHJldHVybiB2IHx8IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIG5vIGZpbGUgeWV0IOKGkiBmaXJzdCBydW5cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfSxcbiAgICAgIHNldEN1cnJlbnRWZXJzaW9uOiBhc3luYyAodmVyc2lvbjogc3RyaW5nLCBfYWRhcHRlcj86IGFueSwgLi4uX2FyZ3M6IGFueVtdKSA9PiB7XG4gICAgICAgIGZzLm1rZGlyU3luYyh2ZXJzaW9uRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhmaWxlLCB2ZXJzaW9uLCBcInV0Zi04XCIpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG4gIHJldHVybiBoYW5kbGVycztcbn1cblxuY29uc3QgbWlncmF0ZUNvbW1hbmQgPSBuZXcgQ29tbWFuZCgpXG4gIC5uYW1lKFwibWlncmF0ZVwiKVxuICAuZGVzY3JpcHRpb24oXG4gICAgXCJib290cyB0aGUgYXBwIGNvbnRleHQgaGVhZGxlc3NseSwgZXhlY3V0ZXMgZGVjYWYgbWlncmF0aW9ucywgYW5kIGV4aXRzXCJcbiAgKVxuICAub3B0aW9uKFwiLS1pbnB1dCA8U3RyaW5nPlwiLCBcInBhdGggdG8gYXBwIG1vZHVsZSAodHMgb3IgY29tcGlsZWQpXCIpXG4gIC5vcHRpb24oXCItLXRvIDxTdHJpbmc+XCIsIFwidGFyZ2V0IG1pZ3JhdGlvbiB2ZXJzaW9uXCIpXG4gIC5vcHRpb24oXCItLWZsYXZvdXIgPFN0cmluZz5cIiwgXCJ0YXJnZXQgZmxhdm91cihzKSwgY29tbWEtc2VwYXJhdGVkXCIpXG4gIC5vcHRpb24oXG4gICAgXCItLWFkYXB0ZXIgPFN0cmluZz5cIixcbiAgICBcImFkYXB0ZXIgZmxhdm91ciBhbGlhcyhlcyksIGNvbW1hLXNlcGFyYXRlZCAoc2FtZSBiZWhhdmlvciBhcyAtLWZsYXZvdXIpXCJcbiAgKVxuICAub3B0aW9uKFxuICAgIFwiLS10YXNrLW1vZGUgW0Jvb2xlYW5dXCIsXG4gICAgXCJydW5zIG1pZ3JhdGlvbiB2aWEgdGFzayBtb2RlICh0cnVlL2ZhbHNlKS4gYWNjZXB0cyBiYXJlIGZsYWcgYXMgdHJ1ZVwiXG4gIClcbiAgLm9wdGlvbihcbiAgICBcIi0tZHJ5LXJ1biBbQm9vbGVhbl1cIixcbiAgICBcInJ1bnMgbWlncmF0aW9ucyB3aXRoIGRyeS1ydW4gY29udGV4dCAodHJ1ZS9mYWxzZSkuIGFjY2VwdHMgYmFyZSBmbGFnIGFzIHRydWVcIlxuICApXG4gIC5vcHRpb24oXG4gICAgXCItLXZlcnNpb24tZGlyIDxTdHJpbmc+XCIsXG4gICAgXCJkaXJlY3Rvcnkgd2hlcmUgcGVyLWFkYXB0ZXIgdmVyc2lvbiBmaWxlcyBhcmUgcGVyc2lzdGVkIChlLmcuIGEgRG9ja2VyIHZvbHVtZSBwYXRoKS4gXCIgK1xuICAgICAgXCJFYWNoIGFkYXB0ZXIgd3JpdGVzIGl0cyBsYXN0LW1pZ3JhdGVkIHZlcnNpb24gdG8gPHZlcnNpb25EaXI+LzxhbGlhcz4ubWlncmF0aW9uLnZlcnNpb24uIFwiICtcbiAgICAgIFwiQ2FuIGFsc28gYmUgc2V0IHZpYSBwYWNrYWdlLmpzb24gZGVjYWYubWlncmF0aW9uLnZlcnNpb25EaXIuXCJcbiAgKVxuICAub3B0aW9uKFxuICAgIFwiLS1yZWZlcmVuY2UgPFN0cmluZz5cIixcbiAgICBcInJ1biBvbmx5IHRoZSBuYW1lZCBtaWdyYXRpb24gcmVmZXJlbmNlKHMpLCBjb21tYS1zZXBhcmF0ZWQgKGUuZy4gJ3Byb2R1Y3QtbWlncmF0aW9uJykuIFwiICtcbiAgICAgIFwiQnlwYXNzZXMgdmVyc2lvbiByYW5nZSBmaWx0ZXJpbmcg4oCUIHVzZSBmb3IgemVyby1kYXkgb3Igb25lLW9mZiBtaWdyYXRpb25zLiBcIiArXG4gICAgICBcIkNhbiBhbHNvIGJlIHNldCB2aWEgcGFja2FnZS5qc29uIGRlY2FmLm1pZ3JhdGlvbi5yZWZlcmVuY2VzLlwiXG4gIClcbiAgLmFjdGlvbihhc3luYyAob3B0aW9uczogYW55KSA9PiB7XG4gICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShcbiAgICAgIGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJwYWNrYWdlLmpzb25cIiksIFwidXRmLThcIilcbiAgICApO1xuICAgIGNvbnN0IGxvZyA9IGxvZ2dlci5mb3IoXCJtaWdyYXRlXCIpO1xuICAgIGNvbnN0IHsgaW5wdXQsIGNvbmZpZyB9ID0gcmVzb2x2ZU1pZ3JhdGVDb21tYW5kQ29uZmlnKG9wdGlvbnMsIHBrZyk7XG4gICAgbGV0IGFwcDogSU5lc3RBcHBsaWNhdGlvbiB8IHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgYXBwID0gYXdhaXQgTmVzdEZhY3RvcnkuY3JlYXRlKFxuICAgICAgICByZXNvbHZlTmVzdE1vZHVsZShhd2FpdCBub3JtYWxpemVJbXBvcnQoaW1wb3J0KHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBpbnB1dCkpKSksXG4gICAgICAgIHsgbG9nZ2VyOiBmYWxzZSB9XG4gICAgICApO1xuICAgICAgYXdhaXQgYXBwLmluaXQoKTtcbiAgICAgIGxvZy5pbmZvKGBBcHAgYm9vdGVkYCk7XG5cbiAgICAgIGNvbnN0IGNhY2hlID0gKEFkYXB0ZXIgYXMgYW55KVtcIl9jYWNoZVwiXSBhcyBSZWNvcmQ8c3RyaW5nLCBBZGFwdGVyPGFueSwgYW55LCBhbnksIGFueT4+O1xuICAgICAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgY29uc3QgYWRhcHRlcnMgPSBPYmplY3QudmFsdWVzKGNhY2hlKS5maWx0ZXIoKGEpID0+IHtcbiAgICAgICAgaWYgKHNlZW4uaGFzKGEuYWxpYXMpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHNlZW4uYWRkKGEuYWxpYXMpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuXG4gICAgICBsZXQgdGFza1NlcnZpY2U6IGFueTtcbiAgICAgIGlmIChjb25maWcudGFza01vZGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0YXNrU2VydmljZSA9IFNlcnZpY2UuZ2V0KFRhc2tNb2RlbCk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIG5vdCByZWdpc3RlcmVkXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0YXNrU2VydmljZSlcbiAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgIGB0YXNrLW1vZGUgcmVxdWVzdGVkIGJ1dCBubyBUYXNrU2VydmljZSBpcyByZWdpc3RlcmVkIChleHBlY3RlZCBAc2VydmljZShUYXNrTW9kZWwpKWBcbiAgICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBFeGNsdWRlIHRoZSB0YXNrIGVuZ2luZSdzIGFkYXB0ZXIgZnJvbSBtaWdyYXRpb24gdGFyZ2V0cyDigJQgTWlncmF0aW9uU2VydmljZVxuICAgICAgLy8gd2lsbCB0aHJvdyBpZiBpdCBhcHBlYXJzIGluIHRoZSBhZGFwdGVyIGxpc3QgYWxvbmdzaWRlIGNmZy50YXNrU2VydmljZS5cbiAgICAgIGNvbnN0IHRhc2tBZGFwdGVyQWxpYXM6IHN0cmluZyB8IHVuZGVmaW5lZCA9XG4gICAgICAgICh0YXNrU2VydmljZSBhcyBhbnkpPy5jbGllbnQ/LmFkYXB0ZXI/LmFsaWFzIHx8XG4gICAgICAgICh0YXNrU2VydmljZSBhcyBhbnkpPy5jbGllbnQ/LmFkYXB0ZXI/LmZsYXZvdXI7XG4gICAgICBjb25zdCBtaWdyYXRlQWRhcHRlcnMgPSB0YXNrQWRhcHRlckFsaWFzXG4gICAgICAgID8gYWRhcHRlcnMuZmlsdGVyKChhKSA9PiBhLmFsaWFzICE9PSB0YXNrQWRhcHRlckFsaWFzICYmIGEuZmxhdm91ciAhPT0gdGFza0FkYXB0ZXJBbGlhcylcbiAgICAgICAgOiBhZGFwdGVycztcblxuICAgICAgY29uc3QgaGFuZGxlcnMgPSBjb25maWcudmVyc2lvbkRpclxuICAgICAgICA/IGJ1aWxkRmlsZVZlcnNpb25IYW5kbGVycyhjb25maWcudmVyc2lvbkRpciwgbWlncmF0ZUFkYXB0ZXJzKVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKGNvbmZpZy52ZXJzaW9uRGlyKVxuICAgICAgICBsb2cuaW5mbyhgVmVyc2lvbiB0cmFja2luZzogJHtwYXRoLnJlc29sdmUoY29uZmlnLnZlcnNpb25EaXIpfWApO1xuICAgICAgZWxzZVxuICAgICAgICBsb2cud2FybihgTm8gLS12ZXJzaW9uLWRpciBzZXQg4oCUIGV2ZXJ5IHJ1biB3aWxsIHJlLWFwcGx5IGFsbCBtaWdyYXRpb25zIHVwIHRvICR7Y29uZmlnLnRvVmVyc2lvbn1gKTtcblxuICAgICAgaWYgKGNvbmZpZy5yZWZlcmVuY2VzLmxlbmd0aClcbiAgICAgICAgbG9nLmluZm8oYFJ1bm5pbmcgb25seSByZWZlcmVuY2VzOiAke2NvbmZpZy5yZWZlcmVuY2VzLmpvaW4oXCIsIFwiKX1gKTtcblxuICAgICAgY29uc3QgbWlncmF0aW9ucyA9IGF3YWl0IE1pZ3JhdGlvblNlcnZpY2UubWlncmF0ZUFkYXB0ZXJzKFxuICAgICAgICBtaWdyYXRlQWRhcHRlcnMsXG4gICAgICAgIHtcbiAgICAgICAgICB0b1ZlcnNpb246IGNvbmZpZy50b1ZlcnNpb24sXG4gICAgICAgICAgdGFza01vZGU6IGNvbmZpZy50YXNrTW9kZSxcbiAgICAgICAgICBkcnlSdW46IGNvbmZpZy5kcnlSdW4sXG4gICAgICAgICAgZmxhdm91cnM6IGNvbmZpZy5mbGF2b3Vycy5sZW5ndGggPiAwID8gY29uZmlnLmZsYXZvdXJzIDogdW5kZWZpbmVkLFxuICAgICAgICAgIHRhc2tTZXJ2aWNlLFxuICAgICAgICAgIGhhbmRsZXJzLFxuICAgICAgICAgIHZlcnNpb25pbmc6IG5ldyBTZW12ZXJNaWdyYXRpb25WZXJzaW9uaW5nKCksXG4gICAgICAgICAgcmVmZXJlbmNlczpcbiAgICAgICAgICAgIGNvbmZpZy5yZWZlcmVuY2VzLmxlbmd0aCA+IDAgPyBjb25maWcucmVmZXJlbmNlcyA6IHVuZGVmaW5lZCxcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgZm9yIChjb25zdCBtaWdyYXRpb25TZXJ2aWNlIG9mIG1pZ3JhdGlvbnMgfHwgW10pIHtcbiAgICAgICAgYXdhaXQgbWlncmF0aW9uU2VydmljZS50cmFjaygpO1xuICAgICAgfVxuXG4gICAgICBsb2cuaW5mbyhcbiAgICAgICAgYE1pZ3JhdGlvbiBjb21wbGV0ZWQke29wdGlvbnMudG8gfHwgcGtnLnZlcnNpb24gPyBgIHVwIHRvICR7b3B0aW9ucy50byB8fCBwa2cudmVyc2lvbn1gIDogXCJcIn1gXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGUgYXMgRXJyb3IpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoYXBwKSBhd2FpdCBhcHAuY2xvc2UoKTtcbiAgICB9XG4gIH0pO1xuXG5leHBvcnQgeyBtaWdyYXRlQ29tbWFuZCB9O1xuXG5mdW5jdGlvbiByZXNvbHZlTmVzdE1vZHVsZShtb2Q6IGFueSk6IGFueSB7XG4gIGlmICh0eXBlb2YgbW9kID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBtb2Q7XG4gIGlmIChtb2Q/LmRlZmF1bHQgJiYgdHlwZW9mIG1vZC5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBtb2QuZGVmYXVsdDtcbiAgaWYgKG1vZCAmJiB0eXBlb2YgbW9kID09PSBcIm9iamVjdFwiKSB7XG4gICAgY29uc3QgY2xhc3NlcyA9IE9iamVjdC52YWx1ZXMobW9kKS5maWx0ZXIoKHYpID0+IHR5cGVvZiB2ID09PSBcImZ1bmN0aW9uXCIpO1xuICAgIGlmIChjbGFzc2VzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIGNsYXNzZXNbMF07XG4gICAgY29uc3QgbmFtZWQgPSAobW9kIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW1xuICAgICAgT2JqZWN0LmtleXMobW9kKS5maW5kKChrKSA9PiAvTW9kdWxlJC8udGVzdChrKSkgfHwgXCJcIlxuICAgIF07XG4gICAgaWYgKHR5cGVvZiBuYW1lZCA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbmFtZWQ7XG4gIH1cbiAgcmV0dXJuIG1vZDtcbn1cblxuY29uc3QgZXhwb3J0QXBpQ29tbWFuZCA9IG5ldyBDb21tYW5kKClcbiAgLm5hbWUoXCJleHBvcnQtYXBpXCIpXG4gIC5kZXNjcmlwdGlvbihcbiAgICBcImJvb3RzIHRoZSBhcHAgY29udGV4dCBoZWFkbGVzc2x5LCBleHRyYWN0cyB0aGUgT3BlbkFQSSBzcGVjLCBhbmQgd3JpdGVzIGl0IHRvIGEgSlNPTiBmaWxlXCJcbiAgKVxuICAub3B0aW9uKFwiLS1pbnB1dCA8U3RyaW5nPlwiLCBcInBhdGggdG8gYXBwIG1vZHVsZSAodHMgb3IgY29tcGlsZWQpXCIpXG4gIC5vcHRpb24oXCItLW91dHB1dCA8U3RyaW5nPlwiLCBcIm91dHB1dCBkaXJlY3RvcnkgZm9yIHRoZSBPcGVuQVBJIEpTT04gZmlsZVwiLCBcIi4vXCIpXG4gIC5vcHRpb24oXCItLWZpbGVOYW1lIDxTdHJpbmc+XCIsIFwib3V0cHV0IGZpbGUgbmFtZSAod2l0aG91dCBleHRlbnNpb24pXCIsIFwib3BlbmFwaVwiKVxuICAub3B0aW9uKFwiLS10aXRsZSA8U3RyaW5nPlwiLCBcIk9wZW5BUEkgZG9jdW1lbnQgdGl0bGVcIiwgXCJERUNBRiBBUElcIilcbiAgLm9wdGlvbihcIi0tZGVzY3JpcHRpb24gPFN0cmluZz5cIiwgXCJPcGVuQVBJIGRvY3VtZW50IGRlc2NyaXB0aW9uXCIsIFwiQXV0by1nZW5lcmF0ZWQgT3BlbkFQSSBzcGVjaWZpY2F0aW9uXCIpXG4gIC5vcHRpb24oXCItLXZlcnNpb24gPFN0cmluZz5cIiwgXCJPcGVuQVBJIGRvY3VtZW50IHZlcnNpb25cIilcbiAgLmFjdGlvbihhc3luYyAob3B0aW9uczogYW55KSA9PiB7XG4gICAgY29uc3QgbG9nID0gbG9nZ2VyLmZvcihcImV4cG9ydC1hcGlcIik7XG4gICAgY29uc3QgaW5wdXQgPSByZXNvbHZlSW5wdXRQYXRoKG9wdGlvbnMuaW5wdXQpO1xuICAgIGxldCBhcHA6IElOZXN0QXBwbGljYXRpb24gfCB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgIGFwcCA9IGF3YWl0IE5lc3RGYWN0b3J5LmNyZWF0ZShcbiAgICAgICAgcmVzb2x2ZU5lc3RNb2R1bGUoYXdhaXQgbm9ybWFsaXplSW1wb3J0KGltcG9ydChwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgaW5wdXQpKSkpLFxuICAgICAgICB7IGxvZ2dlcjogZmFsc2UgfVxuICAgICAgKTtcbiAgICAgIGF3YWl0IGFwcC5pbml0KCk7XG4gICAgICBsb2cuaW5mbyhgQXBwIGJvb3RlZCBmcm9tICR7aW5wdXR9YCk7XG5cbiAgICAgIGNvbnN0IGNvbmZpZyA9IG5ldyBEb2N1bWVudEJ1aWxkZXIoKVxuICAgICAgICAuc2V0VGl0bGUob3B0aW9ucy50aXRsZSlcbiAgICAgICAgLnNldERlc2NyaXB0aW9uKG9wdGlvbnMuZGVzY3JpcHRpb24pXG4gICAgICAgIC5zZXRWZXJzaW9uKG9wdGlvbnMudmVyc2lvbiB8fCBcIjEuMC4wXCIpXG4gICAgICAgIC5hZGRCZWFyZXJBdXRoKClcbiAgICAgICAgLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IGRvY3VtZW50ID0gU3dhZ2dlck1vZHVsZS5jcmVhdGVEb2N1bWVudChhcHAsIGNvbmZpZyk7XG5cbiAgICAgIGNvbnN0IG91dHB1dERpciA9IHBhdGgucmVzb2x2ZShvcHRpb25zLm91dHB1dCk7XG4gICAgICBmcy5ta2RpclN5bmMob3V0cHV0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGNvbnN0IG91dHB1dEZpbGUgPSBwYXRoLmpvaW4ob3V0cHV0RGlyLCBgJHtvcHRpb25zLmZpbGVOYW1lfS5qc29uYCk7XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKG91dHB1dEZpbGUsIEpTT04uc3RyaW5naWZ5KGRvY3VtZW50LCBudWxsLCAyKSwgXCJ1dGYtOFwiKTtcblxuICAgICAgY29uc3QgcGF0aENvdW50ID0gT2JqZWN0LmtleXMoZG9jdW1lbnQucGF0aHMgfHwge30pLmxlbmd0aDtcbiAgICAgIGNvbnN0IHNjaGVtYUNvdW50ID0gT2JqZWN0LmtleXMoZG9jdW1lbnQuY29tcG9uZW50cz8uc2NoZW1hcyB8fCB7fSkubGVuZ3RoO1xuICAgICAgbG9nLmluZm8oYE9wZW5BUEkgc3BlYyB3cml0dGVuIHRvICR7b3V0cHV0RmlsZX0gKCR7cGF0aENvdW50fSBwYXRocywgJHtzY2hlbWFDb3VudH0gc2NoZW1hcylgKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihlIGFzIEVycm9yKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKGFwcCkgYXdhaXQgYXBwLmNsb3NlKCk7XG4gICAgfVxuICB9KTtcblxuY29uc3QgbmVzdENtZCA9IG5ldyBDb21tYW5kKClcbiAgLm5hbWUoXCJuZXN0XCIpXG4gIC5kZXNjcmlwdGlvbihcImV4cG9zZXMgdmFyaW91cyBjb21tYW5kcyB0byBoZWxwIG1hbmFnZSB0aGUgbmVzdCBpbnRlZ3JhdGlvblwiKTtcblxubmVzdENtZC5hZGRDb21tYW5kKG1pZ3JhdGVDb21tYW5kKTtcbm5lc3RDbWQuYWRkQ29tbWFuZChleHBvcnRBcGlDb21tYW5kKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbmVzdCgpIHtcbiAgcmV0dXJuIG5lc3RDbWQ7XG59XG4iXX0=
|