@stemy/ngx-utils 13.2.1 → 13.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -114,4 +114,4 @@ export const GLOBAL_TEMPLATES = new InjectionToken("global-templates");
114
114
  // --- Valued promise ---
115
115
  export class ValuedPromise extends Promise {
116
116
  }
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25neC11dGlscy9jb21tb24tdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGNBQWMsRUFBOEIsV0FBVyxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBSTFHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFTakQsTUFBTSxPQUFPLFdBQVc7SUFDcEIsWUFBbUIsQ0FBUyxFQUFTLENBQVMsRUFBUyxDQUFTLEVBQVMsSUFBWSxHQUFHO1FBQXJFLE1BQUMsR0FBRCxDQUFDLENBQVE7UUFBUyxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQVMsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUFTLE1BQUMsR0FBRCxDQUFDLENBQWM7SUFFeEYsQ0FBQztDQUNKO0FBU0QsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFpQyxJQUFJLGNBQWMsQ0FBZSxjQUFjLENBQUMsQ0FBQztBQW9DM0csTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQXFDLElBQUksY0FBYyxDQUFtQixrQkFBa0IsQ0FBQyxDQUFDO0FBb0IzSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQWlDLElBQUksY0FBYyxDQUFlLGNBQWMsQ0FBQyxDQUFDO0FBbUIzRywwQkFBMEI7QUFDMUIsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNuQiwrQ0FBSyxDQUFBO0lBQ0wsbURBQU8sQ0FBQTtBQUNYLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QjtBQVVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBb0MsSUFBSSxjQUFjLENBQWtCLGlCQUFpQixDQUFDLENBQUM7QUFjdkgsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFrQixpQkFBaUIsQ0FBQyxDQUFD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LEdBQUcsSUFBSSxjQUFjLENBQWlCLGdCQUFnQixDQUFDLENBQUM7QUFFbkYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFpQixhQUFhLENBQUMsQ0FBQztBQUU3RSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQU0sZUFBZSxDQUFDLENBQUM7QUFFdEUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFnQyxJQUFJLGNBQWMsQ0FBYyxrQkFBa0IsQ0FBQyxDQUFDO0FBSzdHLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBdUIsd0JBQXdCLENBQUMsQ0FBQztBQWNoRyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBdUIsa0JBQWtCLENBQUMsQ0FBQztBQWtCN0YseUJBQXlCO0FBQ3pCLE1BQU0sT0FBTyxhQUFpQixTQUFRLE9BQVU7Q0FFL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0V2ZW50RW1pdHRlciwgSW5qZWN0aW9uVG9rZW4sIEluamVjdG9yLCBOZ1pvbmUsIFByb3ZpZGVyLCBUZW1wbGF0ZVJlZiwgVHlwZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnN9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlU25hcHNob3QsIERhdGEsIFJvdXRlLCBVcmxUcmVlfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7UmVxdWVzdH0gZnJvbSBcImV4cHJlc3NcIjtcclxuaW1wb3J0IHtSZWZsZWN0VXRpbHN9IGZyb20gXCIuL3V0aWxzL3JlZmxlY3QudXRpbHNcIjtcclxuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4vdXRpbHMvb2JqZWN0LnV0aWxzXCI7XHJcblxyXG4vLyAtLS0gVXRpbHNcclxuZXhwb3J0IGludGVyZmFjZSBJUmVzb2x2ZUZhY3Rvcnkge1xyXG4gICAgZnVuYzogRnVuY3Rpb247XHJcbiAgICB0eXBlPzogYW55O1xyXG4gICAgcGFyYW1zPzogYW55W107XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDYW52YXNDb2xvciB7XHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcjogbnVtYmVyLCBwdWJsaWMgZzogbnVtYmVyLCBwdWJsaWMgYjogbnVtYmVyLCBwdWJsaWMgYTogbnVtYmVyID0gMjU1KSB7XHJcblxyXG4gICAgfVxyXG59XHJcblxyXG4vLyAtLS0gSWNvbiBzZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElJY29uU2VydmljZSB7XHJcbiAgICBpc0Rpc2FibGVkOiBib29sZWFuO1xyXG4gICAgaWNvbnNMb2FkZWQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gICAgZ2V0SWNvbihpY29uOiBzdHJpbmcsIGFjdGl2ZUljb246IHN0cmluZywgYWN0aXZlOiBib29sZWFuKTogUHJvbWlzZTxzdHJpbmc+O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgSUNPTl9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJSWNvblNlcnZpY2U+ID0gbmV3IEluamVjdGlvblRva2VuPElJY29uU2VydmljZT4oXCJpY29uLXNlcnZpY2VcIik7XHJcblxyXG4vLyAtLS0gTGFuZ3VhZ2Ugc2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJVHJhbnNsYXRpb24ge1xyXG4gICAgbGFuZzogc3RyaW5nO1xyXG4gICAgdHJhbnNsYXRpb246IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVHJhbnNsYXRpb25zIHtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTGFuZ3VhZ2VTZXR0aW5ncyB7XHJcbiAgICBsYW5ndWFnZXM6IHN0cmluZ1tdO1xyXG4gICAgZGV2TGFuZ3VhZ2VzOiBzdHJpbmdbXTtcclxuICAgIGRlZmF1bHRMYW5ndWFnZTogc3RyaW5nO1xyXG4gICAgc2V0dGluZ3M/OiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUxhbmd1YWdlU2VydmljZSB7XHJcbiAgICBjdXJyZW50TGFuZ3VhZ2U6IHN0cmluZztcclxuICAgIGVkaXRMYW5ndWFnZTogc3RyaW5nO1xyXG4gICAgZGlzYWJsZVRyYW5zbGF0aW9uczogYm9vbGVhbjtcclxuICAgIGRlZmF1bHRMYW5ndWFnZTogc3RyaW5nO1xyXG4gICAgZGljdGlvbmFyeTogSVRyYW5zbGF0aW9ucztcclxuICAgIHJlYWRvbmx5IGxhbmd1YWdlczogUmVhZG9ubHlBcnJheTxzdHJpbmc+O1xyXG4gICAgcmVhZG9ubHkgaHR0cENsaWVudDogSHR0cENsaWVudDtcclxuICAgIHJlcGxhY2VMYW5ndWFnZXMobGFuZ3VhZ2VzOiBzdHJpbmdbXSk6IHZvaWQ7XHJcbiAgICBhZGRMYW5ndWFnZXMobGFuZ3VhZ2VzOiBzdHJpbmdbXSk6IHZvaWQ7XHJcbiAgICBnZXRUcmFuc2xhdGlvblN5bmMoa2V5OiBzdHJpbmcsIHBhcmFtcz86IGFueSk6IHN0cmluZztcclxuICAgIGdldFRyYW5zbGF0aW9uKGtleTogc3RyaW5nLCBwYXJhbXM/OiBhbnkpOiBQcm9taXNlPHN0cmluZz47XHJcbiAgICBnZXRUcmFuc2xhdGlvbnMoLi4ua2V5czogc3RyaW5nW10pOiBQcm9taXNlPElUcmFuc2xhdGlvbnM+O1xyXG4gICAgZ2V0VHJhbnNsYXRpb25Gcm9tT2JqZWN0KHRyYW5zbGF0aW9uczogSVRyYW5zbGF0aW9ucywgcGFyYW1zPzogYW55LCBsYW5nPzogc3RyaW5nKTogc3RyaW5nO1xyXG4gICAgZ2V0VHJhbnNsYXRpb25Gcm9tQXJyYXkodHJhbnNsYXRpb25zOiBJVHJhbnNsYXRpb25bXSwgcGFyYW1zPzogYW55LCBsYW5nPzogc3RyaW5nKTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgTEFOR1VBR0VfU0VSVklDRTogSW5qZWN0aW9uVG9rZW48SUxhbmd1YWdlU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SUxhbmd1YWdlU2VydmljZT4oXCJsYW5ndWFnZS1zZXJ2aWNlXCIpO1xyXG5cclxuLy8gLS0tIEF1dGggU2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJQXV0aFNlcnZpY2Uge1xyXG4gICAgaXNBdXRoZW50aWNhdGVkOiBib29sZWFuO1xyXG4gICAgdXNlckNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gICAgY2hlY2tBdXRoZW50aWNhdGVkKCk6IFByb21pc2U8Ym9vbGVhbj47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFJvdXRlVmFsaWRhdG9yID0gKGF1dGg6IElBdXRoU2VydmljZSwgcm91dGU/OiBJUm91dGUsIG5leHQ/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSA9PiBQcm9taXNlPGJvb2xlYW4+O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUm91dGVEYXRhIGV4dGVuZHMgRGF0YSB7XHJcbiAgICByZXR1cm5TdGF0ZT86IHN0cmluZ1tdO1xyXG4gICAgZ3VhcmRzPzogQXJyYXk8SVJlc29sdmVGYWN0b3J5IHwgUm91dGVWYWxpZGF0b3I+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0ZSBleHRlbmRzIFJvdXRlIHtcclxuICAgIGRhdGE/OiBJUm91dGVEYXRhO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQVVUSF9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJQXV0aFNlcnZpY2U+ID0gbmV3IEluamVjdGlvblRva2VuPElBdXRoU2VydmljZT4oXCJhdXRoLXNlcnZpY2VcIik7XHJcblxyXG4vLyAtLS0gQWNsIFNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFjbENvbXBvbmVudCB7XHJcbiAgICBvblVzZXJJbml0aWFsaXplZCgpOiB2b2lkO1xyXG4gICAgb25Vc2VyQ2hhbmdlZCgpOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0ZVN0YXRlSW5mbyB7XHJcbiAgICByb3V0ZTogSVJvdXRlO1xyXG4gICAgZ3VhcmQ6IGFueTtcclxuICAgIGRpcnR5OiBib29sZWFuO1xyXG4gICAgZmlyc3Q6IGJvb2xlYW47XHJcbiAgICBjb21wb25lbnQ/OiBhbnk7XHJcbn1cclxuXHJcbi8vIC0tLSBTdGF0ZSBTZXJ2aWNlIC0tLVxyXG5leHBvcnQgdHlwZSBOYXZpZ2F0aW9uVXJsUGFyYW0gPSBhbnlbXSB8IHN0cmluZyB8IFVybFRyZWU7XHJcblxyXG4vLyAtLS0gU3RvcmFnZSBTZXJ2aWNlIC0tLVxyXG5leHBvcnQgZW51bSBTdG9yYWdlTW9kZSB7XHJcbiAgICBMb2NhbCxcclxuICAgIFNlc3Npb25cclxufVxyXG5cclxuLy8gLS0tIFRvYXN0ZXIgU2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJVG9hc3RlclNlcnZpY2Uge1xyXG4gICAgZXJyb3IobWVzc2FnZTogc3RyaW5nLCBwYXJhbXM/OiBhbnksIHRpdGxlPzogc3RyaW5nKTogdm9pZDtcclxuICAgIGluZm8obWVzc2FnZTogc3RyaW5nLCBwYXJhbXM/OiBhbnksIHRpdGxlPzogc3RyaW5nKTogdm9pZDtcclxuICAgIHN1Y2Nlc3MobWVzc2FnZTogc3RyaW5nLCBwYXJhbXM/OiBhbnksIHRpdGxlPzogc3RyaW5nKTogdm9pZDtcclxuICAgIHdhcm5pbmcobWVzc2FnZTogc3RyaW5nLCBwYXJhbXM/OiBhbnksIHRpdGxlPzogc3RyaW5nKTogdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFRPQVNURVJfU0VSVklDRTogSW5qZWN0aW9uVG9rZW48SVRvYXN0ZXJTZXJ2aWNlPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJVG9hc3RlclNlcnZpY2U+KFwidG9hc3Rlci1zZXJ2aWNlXCIpO1xyXG5cclxuLy8gLS0tIFByb21pc2UgU2VydmljZSAtLS1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVByb21pc2VTZXJ2aWNlIHtcclxuICAgIHpvbmU6IE5nWm9uZTtcclxuICAgIGNvdW50OiBudW1iZXI7XHJcbiAgICBvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+O1xyXG4gICAgY3JlYXRlPFQ+KGV4ZWN1dG9yOiAocmVzb2x2ZTogKHZhbHVlPzogVCB8IFByb21pc2VMaWtlPFQ+KSA9PiB2b2lkLCByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQpID0+IHZvaWQpOiBQcm9taXNlPFQ+O1xyXG4gICAgYWxsKHByb21pc2VzOiBQcm9taXNlPGFueT5bXSk6IFByb21pc2U8YW55PjtcclxuICAgIHJlc29sdmU8VD4odmFsdWU6IFQgfCBQcm9taXNlTGlrZTxUPik6IFByb21pc2U8VD47XHJcbiAgICByZWplY3Q8VD4odmFsdWU6IFQgfCBQcm9taXNlTGlrZTxUPik6IFByb21pc2U8VD47XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBQUk9NSVNFX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48SVByb21pc2VTZXJ2aWNlPihcInByb21pc2Utc2VydmljZVwiKTtcclxuXHJcbi8vIC0tLSBBc3luYyBtZXRob2QgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFzeW5jTWVzc2FnZSB7XHJcbiAgICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgICBjb250ZXh0PzogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBBc3luY01ldGhvZCA9IChjb250ZXh0PzogYW55KSA9PiBQcm9taXNlPElBc3luY01lc3NhZ2U+O1xyXG5cclxuLy8gLS0tIFVub3JkZXJlZCBsaXN0IC0tLVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVW5vcmVkZXJlZExpc3RUZW1wbGF0ZSBleHRlbmRzIFRlbXBsYXRlUmVmPGFueT4ge1xyXG4gICAgYWJzdHJhY3QgdHlwZTogc3RyaW5nO1xyXG4gICAgYWJzdHJhY3Qgc2VsZWN0b3I6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBVbm9yZGVyZWRMaXN0VGVtcGxhdGVzIHtcclxuICAgIFt0eXBlOiBzdHJpbmddOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBVbm9yZGVyZWRMaXN0U3R5bGUgPSBcInRhYmxlXCIgfCBcImxpc3RcIjtcclxuXHJcbi8vIC0tLSBBamF4IHJlcXVlc3QgIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElBamF4UmVxdWVzdERldGFpbHMge1xyXG4gICAgcmVxdWVzdDogWE1MSHR0cFJlcXVlc3QsXHJcbiAgICBtZXRob2Q6IHN0cmluZztcclxuICAgIHVybDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBBamF4UmVxdWVzdENhbGxiYWNrID0gKGRldGFpbHM6IElBamF4UmVxdWVzdERldGFpbHMsIHBhcmFtczogYW55KSA9PiB2b2lkO1xyXG5cclxuLy8gLS0tIExvYWRlciB1dGlscyAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJU2NyaXB0UHJvbWlzZXMge1xyXG4gICAgW3NyYzogc3RyaW5nXTogUHJvbWlzZTxIVE1MU2NyaXB0RWxlbWVudD47XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBJU3R5bGVQcm9taXNlcyB7XHJcbiAgICBbc3JjOiBzdHJpbmddOiBQcm9taXNlPEhUTUxMaW5rRWxlbWVudD47XHJcbn1cclxuXHJcbi8vIC0tLSBPYnNlcnZhYmxlIHV0aWxzIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElTZWFyY2hPYnNlcnZhYmxlIHtcclxuICAgIHNlYXJjaDogc3RyaW5nO1xyXG4gICAgZ2V0U2VhcmNoUmVzdWx0cyh0b2tlbjogc3RyaW5nKTogUHJvbWlzZTxhbnlbXT47XHJcbn1cclxuXHJcbi8vIC0tLSBSZWZsZWN0IHV0aWxzIC0tLVxyXG5leHBvcnQgZnVuY3Rpb24gRmFjdG9yeURlcGVuZGVuY2llcyguLi5kZXBlbmRlbmNpZXM6IEFycmF5PEluamVjdGlvblRva2VuPGFueT4gfCBQcm92aWRlcj4pOiBNZXRob2REZWNvcmF0b3Ige1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IGFueSwgbWV0aG9kOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBSZWZsZWN0VXRpbHMuZGVmaW5lTWV0YWRhdGEoXCJmYWN0b3J5RGVwZW5kZW5jaWVzXCIsIGRlcGVuZGVuY2llcywgdGFyZ2V0LCBtZXRob2QpO1xyXG4gICAgfTtcclxufVxyXG5cclxuLy8gLS0tIFRpbWVyIHV0aWxzIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElUaW1lciB7XHJcbiAgICBpZD86IGFueTtcclxuICAgIGZ1bmM/OiBGdW5jdGlvbjtcclxuICAgIHRpbWU/OiBudW1iZXI7XHJcbiAgICBydW4/OiAoKSA9PiB2b2lkO1xyXG4gICAgc2V0PzogKGZ1bmM6IEZ1bmN0aW9uLCB0aW1lOiBudW1iZXIpID0+IHZvaWQ7XHJcbiAgICBjbGVhcj86ICgpID0+IHZvaWQ7XHJcbn1cclxuXHJcbi8vIC0tLSBFeHRyYUl0ZW1Qcm9wZXJ0aWVzIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElFeHRyYVByb3BlcnRpZXMge1xyXG4gICAgW3Byb3A6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuLy8gLS0tIEdyb3VwIGJ5IC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElHcm91cE1hcCB7XHJcbiAgICBbY29sdW1uOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbi8vIC0tLSBUcmFuc2xhdGUgLS0tXHJcbmV4cG9ydCB0eXBlIFRyYW5zbGF0aW9uUXVlcnkgPSBzdHJpbmcgfCBJVHJhbnNsYXRpb25zIHwgSVRyYW5zbGF0aW9uW107XHJcblxyXG4vLyAtLS0gUGFnaW5hdGlvbiAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJUGFnZUluZm8ge1xyXG4gICAgdGV4dDogc3RyaW5nO1xyXG4gICAgbnVtYmVyOiBudW1iZXI7XHJcbiAgICBhY3RpdmU6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBhZ2luYXRpb25EYXRhIHtcclxuICAgIHRvdGFsOiBudW1iZXI7XHJcbiAgICBpdGVtczogYW55W107XHJcbiAgICBtZXRhPzogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQYWdpbmF0aW9uRGF0YUxvYWRlciA9IChwYWdlOiBudW1iZXIsIGl0ZW1zUGVyUGFnZTogbnVtYmVyKSA9PiBQcm9taXNlPElQYWdpbmF0aW9uRGF0YT47XHJcblxyXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbkl0ZW1Db250ZXh0IHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgaXRlbTogYW55LCBwdWJsaWMgcGFyYWxsZWxJdGVtOiBhbnksIHB1YmxpYyBjb3VudDogbnVtYmVyLCBwdWJsaWMgaW5kZXg6IG51bWJlciwgcHVibGljIGRhdGFJbmRleDogbnVtYmVyKSB7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGZpcnN0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4ID09PSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBsYXN0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4ID09PSB0aGlzLmNvdW50IC0gMTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZXZlbigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbmRleCAlIDIgPT09IDA7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG9kZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIXRoaXMuZXZlbjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTdXBwb3J0IGZvciBvbGQgZHluYW1pYyB0YWJsZSBpbXBsZW1lbnRhdGlvblxyXG4gICAgZ2V0IHJvdygpOiBhbnkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiRHluYW1pY1RhYmxlIHJvdyBpcyBkZXByZWNhdGVkIHVzZSBpdGVtIGluc3RlYWRcIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTdXBwb3J0IGZvciBvbGQgZHluYW1pYyB0YWJsZSBpbXBsZW1lbnRhdGlvblxyXG4gICAgZ2V0IHBhcmFsbGVsUm93KCk6IGFueSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJEeW5hbWljVGFibGUgcGFyYWxsZWxSb3cgaXMgZGVwcmVjYXRlZCB1c2UgcGFyYWxsZWxJdGVtIGluc3RlYWRcIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyYWxsZWxJdGVtO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlcihmaWx0ZXJSeDogUmVnRXhwKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuaXRlbSk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuaXRlbVtrZXldO1xyXG4gICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNOdWxsT3JVbmRlZmluZWQodmFsdWUpIHx8IE9iamVjdFV0aWxzLmlzT2JqZWN0KHZhbHVlKSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGNvbnN0IHRlc3RWYWx1ZSA9IE9iamVjdFV0aWxzLmlzU3RyaW5nKHZhbHVlKSA/IHZhbHVlIDogdmFsdWUudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgaWYgKHRlc3RWYWx1ZS5tYXRjaChmaWx0ZXJSeCkpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8vIC0tLSBIdHRwIHNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUh0dHBIZWFkZXJzIHtcclxuICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwUGFyYW1zIHtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUmVxdWVzdE9wdGlvbnMge1xyXG4gICAgbWV0aG9kPzogc3RyaW5nO1xyXG4gICAgYm9keT86IGFueTtcclxuICAgIGhlYWRlcnM/OiBJSHR0cEhlYWRlcnMgfCBIdHRwSGVhZGVycztcclxuICAgIG9yaWdpbmFsSGVhZGVycz86IElIdHRwSGVhZGVycztcclxuICAgIHBhcmFtcz86IElIdHRwUGFyYW1zO1xyXG4gICAgb2JzZXJ2ZT86IFwiYm9keVwiIHwgXCJyZXNwb25zZVwiO1xyXG4gICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xyXG4gICAgcmVzcG9uc2VUeXBlPzogXCJhcnJheWJ1ZmZlclwiIHwgXCJibG9iXCIgfCBcImpzb25cIiB8IFwidGV4dFwiO1xyXG4gICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcclxuICAgIHRpbWVvdXQ/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUlzc3VlQ29udGV4dCB7XHJcbiAgICB1cmw6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUHJvZ3Jlc3Mge1xyXG4gICAgcGVyY2VudGFnZT86IG51bWJlcjtcclxuICAgIGxvYWRlZD86IG51bWJlcjtcclxuICAgIHRvdGFsPzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQcm9ncmVzc0xpc3RlbmVyID0gKHByb2dyZXNzOiBJUHJvZ3Jlc3MpID0+IHZvaWQ7XHJcblxyXG5leHBvcnQgdHlwZSBQcm9taXNlRXhlY3V0b3IgPSAocmVzb2x2ZTogKHZhbHVlPzogYW55IHwgUHJvbWlzZUxpa2U8YW55PikgPT4gdm9pZCwgcmVqZWN0OiAocmVhc29uPzogYW55KSA9PiB2b2lkKSA9PiB2b2lkO1xyXG5cclxuZXhwb3J0IGNsYXNzIEh0dHBQcm9taXNlIGV4dGVuZHMgUHJvbWlzZTxhbnk+IHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgcmVqZWN0SGFuZGxlcjogKHJlYXNvbj86IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB2b2lkO1xyXG4gICAgcHJvdGVjdGVkIGhhc1JlamVjdEhhbmRsZXI6IGJvb2xlYW47XHJcbiAgICBwcm90ZWN0ZWQgYXR0YWNoQ291bnQ6IG51bWJlcjtcclxuICAgIHByb3RlY3RlZCBydW5Db3VudDogbnVtYmVyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlamVjdEhhbmRsZXI6IChyZWFzb24/OiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdm9pZCwgZXhlY3V0b3I6IFByb21pc2VFeGVjdXRvcikge1xyXG4gICAgICAgIHN1cGVyKGV4ZWN1dG9yKTtcclxuICAgICAgICB0aGlzLnJlamVjdEhhbmRsZXIgPSByZWplY3RIYW5kbGVyO1xyXG4gICAgICAgIHRoaXMuYXR0YWNoQ291bnQgPSAwO1xyXG4gICAgICAgIHRoaXMucnVuQ291bnQgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHRoZW48VFJlc3VsdDEsIFRSZXN1bHQyPihvbkZ1bGZpbGxlZD86ICgodmFsdWU6IGFueSkgPT4gKFByb21pc2VMaWtlPFRSZXN1bHQxPiB8IFRSZXN1bHQxKSkgfCBudWxsIHwgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVqZWN0ZWQ/OiAoKHJlYXNvbjogSHR0cEVycm9yUmVzcG9uc2UpID0+IChQcm9taXNlTGlrZTxUUmVzdWx0Mj4gfCBUUmVzdWx0MikpIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFByb21pc2U8VFJlc3VsdDEgfCBUUmVzdWx0Mj4ge1xyXG4gICAgICAgIHRoaXMuYXR0YWNoQ291bnQrKztcclxuICAgICAgICByZXR1cm4gc3VwZXIudGhlbih2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucnVuQ291bnQrKztcclxuICAgICAgICAgICAgcmV0dXJuIG9uRnVsZmlsbGVkID8gb25GdWxmaWxsZWQodmFsdWUpIDogbnVsbDtcclxuICAgICAgICB9LCAocmVhc29uOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IG9uUmVqZWN0ZWQgPyBvblJlamVjdGVkKHJlYXNvbikgOiBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLmhhc1JlamVjdEhhbmRsZXIgPSB0aGlzLmhhc1JlamVjdEhhbmRsZXIgfHwgKG9uUmVqZWN0ZWQgJiYgcmVzdWx0ICE9PSBmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMucnVuQ291bnQrKztcclxuICAgICAgICAgICAgdGhpcy5yZWplY3RIYW5kbGVyKHRoaXMucnVuQ291bnQgPT0gdGhpcy5hdHRhY2hDb3VudCAmJiAhdGhpcy5oYXNSZWplY3RIYW5kbGVyID8gcmVhc29uIDogbnVsbCk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2F0Y2g8VFJlc3VsdCA9IG5ldmVyPihvblJlamVjdGVkPzogKChyZWFzb246IEh0dHBFcnJvclJlc3BvbnNlKSA9PiAoUHJvbWlzZUxpa2U8VFJlc3VsdD4gfCBUUmVzdWx0KSkgfCBudWxsIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxhbnkgfCBUUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGhlbihudWxsLCBvblJlamVjdGVkKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJSHR0cFNlcnZpY2Uge1xyXG4gICAgbGFuZ3VhZ2U6IElMYW5ndWFnZVNlcnZpY2U7XHJcbiAgICB1cmwodXJsOiBzdHJpbmcpOiBzdHJpbmc7XHJcbiAgICBtYWtlTGlzdFBhcmFtcyhwYWdlOiBudW1iZXIsIGl0ZW1zUGVyUGFnZTogbnVtYmVyLCBvcmRlckJ5Pzogc3RyaW5nLCBvcmRlckRlc2NlbmRpbmc/OiBib29sZWFuLCBmaWx0ZXI/OiBzdHJpbmcpOiBJSHR0cFBhcmFtcztcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IEVYUFJFU1NfUkVRVUVTVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZXF1ZXN0PihcImV4cHJlc3MtcmVxdWVzdFwiKTtcclxuXHJcbi8vIC0tLSBBcGkgc2VydmljZSAtLS1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFwaVNlcnZpY2UgZXh0ZW5kcyBJSHR0cFNlcnZpY2Uge1xyXG4gICAgY2FjaGU6IGFueTtcclxuICAgIGNsaWVudDogSHR0cENsaWVudDtcclxuICAgIGdldCh1cmw6IHN0cmluZywgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIGRlbGV0ZSh1cmw6IHN0cmluZywgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIHBvc3QodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XHJcbiAgICBwdXQodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XHJcbiAgICBwYXRjaCh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIHVwbG9hZCh1cmw6IHN0cmluZywgYm9keTogYW55LCBsaXN0ZW5lcj86IFByb2dyZXNzTGlzdGVuZXIsIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XHJcbiAgICBsaXN0KHVybDogc3RyaW5nLCBwYXJhbXM6IElIdHRwUGFyYW1zKTogUHJvbWlzZTxJUGFnaW5hdGlvbkRhdGE+O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQVBJX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPElBcGlTZXJ2aWNlPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJQXBpU2VydmljZT4oXCJhcGktc2VydmljZVwiKTtcclxuXHJcbi8vIC0tLSBPcGVuQXBpIHNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSB7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgdHlwZT86IHN0cmluZztcclxuICAgIGZvcm1hdD86IHN0cmluZztcclxuICAgIGNvbHVtbj86IGJvb2xlYW47XHJcbiAgICBhZGRpdGlvbmFsUHJvcGVydGllcz86IGFueTtcclxuICAgICRyZWY/OiBzdHJpbmc7XHJcbiAgICBhbGxPZj86IFJlYWRvbmx5QXJyYXk8eyRyZWY/OiBzdHJpbmd9PlxyXG4gICAgaXRlbXM/OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5O1xyXG4gICAgZW51bT86IHN0cmluZ1tdO1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElPcGVuQXBpU2NoZW1hIHtcclxuICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgICBbbmFtZTogc3RyaW5nXTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eTtcclxuICAgIH07XHJcbiAgICByZXF1aXJlZDogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU9wZW5BcGlTY2hlbWFzIHtcclxuICAgIFtuYW1lOiBzdHJpbmddOiBJT3BlbkFwaVNjaGVtYTtcclxufVxyXG5cclxuLy8gLS0tIER5bmFtaWMgdGFibGUgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlQ29sdW1ucyB7XHJcbiAgICBbY29sdW1uOiBzdHJpbmddOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlVGVtcGxhdGUge1xyXG4gICAgY29sdW1uOiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICAgIHB1cmU6IGJvb2xlYW47XHJcbiAgICByZWY6IFRlbXBsYXRlUmVmPGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlVGVtcGxhdGVzIHtcclxuICAgIFtjb2x1bW46IHN0cmluZ106IElUYWJsZVRlbXBsYXRlO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBUYWJsZURhdGFMb2FkZXIgPSAocGFnZTogbnVtYmVyLCByb3dzUGVyUGFnZTogbnVtYmVyLCBvcmRlckJ5OiBzdHJpbmcsIG9yZGVyRGVzY2VuZGluZzogYm9vbGVhbiwgZmlsdGVyOiBzdHJpbmcpID0+IFByb21pc2U8SVBhZ2luYXRpb25EYXRhPjtcclxuXHJcbi8vIC0tLSBSZXNvdXJjZSBpZiAtLS1cclxuZXhwb3J0IGNsYXNzIFJlc291cmNlSWZDb250ZXh0IHtcclxuICAgIHJlc291cmNlOiBzdHJpbmc7XHJcbiAgICB1cmw6IHN0cmluZztcclxufVxyXG5cclxuLy8gLS0tIENvbmZpZ1NlcnZpY2UgLS0tXHJcbmV4cG9ydCBjb25zdCBBUFBfQkFTRV9VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPihcImFwcC1iYXNlLXVybFwiKTtcclxuXHJcbmV4cG9ydCBjbGFzcyBJQ29uZmlndXJhdGlvbiB7XHJcbiAgICBiYXNlVXJsPzogc3RyaW5nO1xyXG4gICAgYmFzZURvbWFpbj86IHN0cmluZztcclxuICAgIHRyYW5zbGF0aW9uVXJsPzogc3RyaW5nO1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDb25maWdTZXJ2aWNlIHtcclxuICAgIGNvbmZpZzogSUNvbmZpZ3VyYXRpb247XHJcbiAgICByZWFkb25seSBsb2FkOiAoKSA9PiBQcm9taXNlPElDb25maWd1cmF0aW9uPjtcclxuICAgIHByZXBhcmVVcmwodXJsOiBzdHJpbmcsIGVuZGluZzogc3RyaW5nKTogc3RyaW5nO1xyXG4gICAgZ2V0Q29uZmlnVmFsdWUoa2V5OiBzdHJpbmcpOiBhbnk7XHJcbiAgICBnZXRRdWVyeVBhcmFtZXRlcihuYW1lOiBzdHJpbmcsIHVybD86IHN0cmluZyk6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IENPTkZJR19TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPElDb25maWdTZXJ2aWNlPihcImNvbmZpZy1zZXJ2aWNlXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IEJBU0VfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPElDb25maWd1cmF0aW9uPihcImJhc2UtY29uZmlnXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IFNDUklQVF9QQVJBTVMgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55PihcInNjcmlwdC1wYXJhbXNcIik7XHJcblxyXG5leHBvcnQgY29uc3QgUk9PVF9FTEVNRU5UOiBJbmplY3Rpb25Ub2tlbjxIVE1MRWxlbWVudD4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SFRNTEVsZW1lbnQ+KFwiYXBwLXJvb3QtZWxlbWVudFwiKTtcclxuXHJcbi8vIC0tLSBFcnJvciBoYW5kbGVyIHNlcnZpY2UgLS0tXHJcbmV4cG9ydCB0eXBlIEVycm9ySGFuZGxlckNhbGxiYWNrID0gKGVycm9yOiBzdHJpbmcpID0+IGFueTtcclxuXHJcbmV4cG9ydCBjb25zdCBFUlJPUl9IQU5ETEVSID0gbmV3IEluamVjdGlvblRva2VuPEVycm9ySGFuZGxlckNhbGxiYWNrPihcImVycm9yLWhhbmRsZXItY2FsbGJhY2tcIik7XHJcblxyXG4vLyAtLS0gR2xvYmFsIHRlbXBsYXRlcyBzZXJ2aWNlXHJcblxyXG5leHBvcnQgdHlwZSBHbG9iYWxDb21wb25lbnRNb2RpZmllciA9IChjb21wb25lbnQ6IGFueSkgPT4gYW55O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJR2xvYmFsVGVtcGxhdGVzIHtcclxuICAgIHJlYWRvbmx5IHRlbXBsYXRlc1VwZGF0ZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPjtcclxuICAgIGdldChpZDogc3RyaW5nLCBjb21wb25lbnQ/OiBhbnkpOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gICAgYWRkKGlkOiBzdHJpbmcsIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KTogdm9pZDtcclxuICAgIHJlbW92ZShpZDogc3RyaW5nKTogdm9pZDtcclxuICAgIGFkZENvbXBvbmVudE1vZGlmaWVyKGlkOiBzdHJpbmcsIG1vZGlmaWVyOiBHbG9iYWxDb21wb25lbnRNb2RpZmllcik6IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBHTE9CQUxfVEVNUExBVEVTID0gbmV3IEluamVjdGlvblRva2VuPEVycm9ySGFuZGxlckNhbGxiYWNrPihcImdsb2JhbC10ZW1wbGF0ZXNcIik7XHJcblxyXG4vLyAtLS0gTW9kdWxlIC0tLVxyXG5leHBvcnQgdHlwZSBBcHBJbml0aWFsaXplckZ1bmMgPSAoKSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU1vZHVsZUNvbmZpZyB7XHJcbiAgICBhcGlTZXJ2aWNlPzogVHlwZTxJQXBpU2VydmljZT5cclxuICAgIGF1dGhTZXJ2aWNlPzogVHlwZTxJQXV0aFNlcnZpY2U+O1xyXG4gICAgaWNvblNlcnZpY2U/OiBUeXBlPElJY29uU2VydmljZT47XHJcbiAgICBsYW5ndWFnZVNlcnZpY2U/OiBUeXBlPElMYW5ndWFnZVNlcnZpY2U+O1xyXG4gICAgdG9hc3RlclNlcnZpY2U/OiBUeXBlPElUb2FzdGVyU2VydmljZT47XHJcbiAgICBwcm9taXNlU2VydmljZT86IFR5cGU8SVByb21pc2VTZXJ2aWNlPjtcclxuICAgIGNvbmZpZ1NlcnZpY2U/OiBUeXBlPElDb25maWdTZXJ2aWNlPjtcclxuICAgIGdsb2JhbFRlbXBsYXRlcz86IFR5cGU8SUdsb2JhbFRlbXBsYXRlcz47XHJcbiAgICBpbml0aWFsaXplQXBwPzogKGluamVjdG9yOiBJbmplY3RvcikgPT4gQXBwSW5pdGlhbGl6ZXJGdW5jO1xyXG4gICAgYmFzZVVybD86IChpbmplY3RvcjogSW5qZWN0b3IpID0+IHN0cmluZztcclxufVxyXG5cclxuLy8gLS0tIFZhbHVlZCBwcm9taXNlIC0tLVxyXG5leHBvcnQgY2xhc3MgVmFsdWVkUHJvbWlzZTxUPiBleHRlbmRzIFByb21pc2U8VD4ge1xyXG4gICAgdmFsdWU6IFQ7XHJcbn1cclxuIl19
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25neC11dGlscy9jb21tb24tdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGNBQWMsRUFBOEIsV0FBVyxFQUFPLE1BQU0sZUFBZSxDQUFDO0FBSTFHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFTakQsTUFBTSxPQUFPLFdBQVc7SUFDcEIsWUFBbUIsQ0FBUyxFQUFTLENBQVMsRUFBUyxDQUFTLEVBQVMsSUFBWSxHQUFHO1FBQXJFLE1BQUMsR0FBRCxDQUFDLENBQVE7UUFBUyxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQVMsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUFTLE1BQUMsR0FBRCxDQUFDLENBQWM7SUFFeEYsQ0FBQztDQUNKO0FBU0QsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFpQyxJQUFJLGNBQWMsQ0FBZSxjQUFjLENBQUMsQ0FBQztBQW9DM0csTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQXFDLElBQUksY0FBYyxDQUFtQixrQkFBa0IsQ0FBQyxDQUFDO0FBb0IzSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQWlDLElBQUksY0FBYyxDQUFlLGNBQWMsQ0FBQyxDQUFDO0FBbUIzRywwQkFBMEI7QUFDMUIsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNuQiwrQ0FBSyxDQUFBO0lBQ0wsbURBQU8sQ0FBQTtBQUNYLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QjtBQVVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBb0MsSUFBSSxjQUFjLENBQWtCLGlCQUFpQixDQUFDLENBQUM7QUFjdkgsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFrQixpQkFBaUIsQ0FBQyxDQUFD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LEdBQUcsSUFBSSxjQUFjLENBQWlCLGdCQUFnQixDQUFDLENBQUM7QUFFbkYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFpQixhQUFhLENBQUMsQ0FBQztBQUU3RSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQU0sZUFBZSxDQUFDLENBQUM7QUFFdEUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFnQyxJQUFJLGNBQWMsQ0FBYyxrQkFBa0IsQ0FBQyxDQUFDO0FBSzdHLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBdUIsd0JBQXdCLENBQUMsQ0FBQztBQWNoRyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBdUIsa0JBQWtCLENBQUMsQ0FBQztBQWtCN0YseUJBQXlCO0FBQ3pCLE1BQU0sT0FBTyxhQUFpQixTQUFRLE9BQVU7Q0FFL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0V2ZW50RW1pdHRlciwgSW5qZWN0aW9uVG9rZW4sIEluamVjdG9yLCBOZ1pvbmUsIFByb3ZpZGVyLCBUZW1wbGF0ZVJlZiwgVHlwZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnN9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlU25hcHNob3QsIERhdGEsIFJvdXRlLCBVcmxUcmVlfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7UmVxdWVzdH0gZnJvbSBcImV4cHJlc3NcIjtcclxuaW1wb3J0IHtSZWZsZWN0VXRpbHN9IGZyb20gXCIuL3V0aWxzL3JlZmxlY3QudXRpbHNcIjtcclxuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4vdXRpbHMvb2JqZWN0LnV0aWxzXCI7XHJcblxyXG4vLyAtLS0gVXRpbHNcclxuZXhwb3J0IGludGVyZmFjZSBJUmVzb2x2ZUZhY3Rvcnkge1xyXG4gICAgZnVuYzogRnVuY3Rpb247XHJcbiAgICB0eXBlPzogYW55O1xyXG4gICAgcGFyYW1zPzogYW55W107XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDYW52YXNDb2xvciB7XHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcjogbnVtYmVyLCBwdWJsaWMgZzogbnVtYmVyLCBwdWJsaWMgYjogbnVtYmVyLCBwdWJsaWMgYTogbnVtYmVyID0gMjU1KSB7XHJcblxyXG4gICAgfVxyXG59XHJcblxyXG4vLyAtLS0gSWNvbiBzZXJ2aWNlIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElJY29uU2VydmljZSB7XHJcbiAgICBpc0Rpc2FibGVkOiBib29sZWFuO1xyXG4gICAgaWNvbnNMb2FkZWQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gICAgZ2V0SWNvbihpY29uOiBzdHJpbmcsIGFjdGl2ZUljb246IHN0cmluZywgYWN0aXZlOiBib29sZWFuKTogUHJvbWlzZTxzdHJpbmc+O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgSUNPTl9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJSWNvblNlcnZpY2U+ID0gbmV3IEluamVjdGlvblRva2VuPElJY29uU2VydmljZT4oXCJpY29uLXNlcnZpY2VcIik7XHJcblxyXG4vLyAtLS0gTGFuZ3VhZ2Ugc2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJVHJhbnNsYXRpb24ge1xyXG4gICAgbGFuZzogc3RyaW5nO1xyXG4gICAgdHJhbnNsYXRpb246IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVHJhbnNsYXRpb25zIHtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTGFuZ3VhZ2VTZXR0aW5ncyB7XHJcbiAgICBsYW5ndWFnZXM6IHN0cmluZ1tdO1xyXG4gICAgZGV2TGFuZ3VhZ2VzOiBzdHJpbmdbXTtcclxuICAgIGRlZmF1bHRMYW5ndWFnZTogc3RyaW5nO1xyXG4gICAgc2V0dGluZ3M/OiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUxhbmd1YWdlU2VydmljZSB7XHJcbiAgICBjdXJyZW50TGFuZ3VhZ2U6IHN0cmluZztcclxuICAgIGVkaXRMYW5ndWFnZTogc3RyaW5nO1xyXG4gICAgZGlzYWJsZVRyYW5zbGF0aW9uczogYm9vbGVhbjtcclxuICAgIGRlZmF1bHRMYW5ndWFnZTogc3RyaW5nO1xyXG4gICAgZGljdGlvbmFyeTogSVRyYW5zbGF0aW9ucztcclxuICAgIHJlYWRvbmx5IGxhbmd1YWdlczogUmVhZG9ubHlBcnJheTxzdHJpbmc+O1xyXG4gICAgcmVhZG9ubHkgaHR0cENsaWVudDogSHR0cENsaWVudDtcclxuICAgIHJlcGxhY2VMYW5ndWFnZXMobGFuZ3VhZ2VzOiBzdHJpbmdbXSk6IHZvaWQ7XHJcbiAgICBhZGRMYW5ndWFnZXMobGFuZ3VhZ2VzOiBzdHJpbmdbXSk6IHZvaWQ7XHJcbiAgICBnZXRUcmFuc2xhdGlvblN5bmMoa2V5OiBzdHJpbmcsIHBhcmFtcz86IGFueSk6IHN0cmluZztcclxuICAgIGdldFRyYW5zbGF0aW9uKGtleTogc3RyaW5nLCBwYXJhbXM/OiBhbnkpOiBQcm9taXNlPHN0cmluZz47XHJcbiAgICBnZXRUcmFuc2xhdGlvbnMoLi4ua2V5czogc3RyaW5nW10pOiBQcm9taXNlPElUcmFuc2xhdGlvbnM+O1xyXG4gICAgZ2V0VHJhbnNsYXRpb25Gcm9tT2JqZWN0KHRyYW5zbGF0aW9uczogSVRyYW5zbGF0aW9ucywgcGFyYW1zPzogYW55LCBsYW5nPzogc3RyaW5nKTogc3RyaW5nO1xyXG4gICAgZ2V0VHJhbnNsYXRpb25Gcm9tQXJyYXkodHJhbnNsYXRpb25zOiBJVHJhbnNsYXRpb25bXSwgcGFyYW1zPzogYW55LCBsYW5nPzogc3RyaW5nKTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgTEFOR1VBR0VfU0VSVklDRTogSW5qZWN0aW9uVG9rZW48SUxhbmd1YWdlU2VydmljZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SUxhbmd1YWdlU2VydmljZT4oXCJsYW5ndWFnZS1zZXJ2aWNlXCIpO1xyXG5cclxuLy8gLS0tIEF1dGggU2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJQXV0aFNlcnZpY2Uge1xyXG4gICAgaXNBdXRoZW50aWNhdGVkOiBib29sZWFuO1xyXG4gICAgdXNlckNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gICAgY2hlY2tBdXRoZW50aWNhdGVkKCk6IFByb21pc2U8Ym9vbGVhbj47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFJvdXRlVmFsaWRhdG9yID0gKGF1dGg6IElBdXRoU2VydmljZSwgcm91dGU/OiBJUm91dGUsIG5leHQ/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSA9PiBQcm9taXNlPGJvb2xlYW4+O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUm91dGVEYXRhIGV4dGVuZHMgRGF0YSB7XHJcbiAgICByZXR1cm5TdGF0ZT86IHN0cmluZ1tdO1xyXG4gICAgZ3VhcmRzPzogQXJyYXk8SVJlc29sdmVGYWN0b3J5IHwgUm91dGVWYWxpZGF0b3I+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0ZSBleHRlbmRzIFJvdXRlIHtcclxuICAgIGRhdGE/OiBJUm91dGVEYXRhO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQVVUSF9TRVJWSUNFOiBJbmplY3Rpb25Ub2tlbjxJQXV0aFNlcnZpY2U+ID0gbmV3IEluamVjdGlvblRva2VuPElBdXRoU2VydmljZT4oXCJhdXRoLXNlcnZpY2VcIik7XHJcblxyXG4vLyAtLS0gQWNsIFNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFjbENvbXBvbmVudCB7XHJcbiAgICBvblVzZXJJbml0aWFsaXplZCgpOiB2b2lkO1xyXG4gICAgb25Vc2VyQ2hhbmdlZCgpOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0ZVN0YXRlSW5mbyB7XHJcbiAgICByb3V0ZTogSVJvdXRlO1xyXG4gICAgZ3VhcmQ6IGFueTtcclxuICAgIGRpcnR5OiBib29sZWFuO1xyXG4gICAgZmlyc3Q6IGJvb2xlYW47XHJcbiAgICBjb21wb25lbnQ/OiBhbnk7XHJcbn1cclxuXHJcbi8vIC0tLSBTdGF0ZSBTZXJ2aWNlIC0tLVxyXG5leHBvcnQgdHlwZSBOYXZpZ2F0aW9uVXJsUGFyYW0gPSBhbnlbXSB8IHN0cmluZyB8IFVybFRyZWU7XHJcblxyXG4vLyAtLS0gU3RvcmFnZSBTZXJ2aWNlIC0tLVxyXG5leHBvcnQgZW51bSBTdG9yYWdlTW9kZSB7XHJcbiAgICBMb2NhbCxcclxuICAgIFNlc3Npb25cclxufVxyXG5cclxuLy8gLS0tIFRvYXN0ZXIgU2VydmljZSAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJVG9hc3RlclNlcnZpY2Uge1xyXG4gICAgZXJyb3IobWVzc2FnZTogc3RyaW5nLCBwYXJhbXM/OiBhbnksIHRpdGxlPzogc3RyaW5nKTogdm9pZDtcclxuICAgIGluZm8obWVzc2FnZTogc3RyaW5nLCBwYXJhbXM/OiBhbnksIHRpdGxlPzogc3RyaW5nKTogdm9pZDtcclxuICAgIHN1Y2Nlc3MobWVzc2FnZTogc3RyaW5nLCBwYXJhbXM/OiBhbnksIHRpdGxlPzogc3RyaW5nKTogdm9pZDtcclxuICAgIHdhcm5pbmcobWVzc2FnZTogc3RyaW5nLCBwYXJhbXM/OiBhbnksIHRpdGxlPzogc3RyaW5nKTogdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFRPQVNURVJfU0VSVklDRTogSW5qZWN0aW9uVG9rZW48SVRvYXN0ZXJTZXJ2aWNlPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJVG9hc3RlclNlcnZpY2U+KFwidG9hc3Rlci1zZXJ2aWNlXCIpO1xyXG5cclxuLy8gLS0tIFByb21pc2UgU2VydmljZSAtLS1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVByb21pc2VTZXJ2aWNlIHtcclxuICAgIHpvbmU6IE5nWm9uZTtcclxuICAgIGNvdW50OiBudW1iZXI7XHJcbiAgICBvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+O1xyXG4gICAgY3JlYXRlPFQ+KGV4ZWN1dG9yOiAocmVzb2x2ZTogKHZhbHVlPzogVCB8IFByb21pc2VMaWtlPFQ+KSA9PiB2b2lkLCByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQpID0+IHZvaWQpOiBQcm9taXNlPFQ+O1xyXG4gICAgYWxsKHByb21pc2VzOiBQcm9taXNlPGFueT5bXSk6IFByb21pc2U8YW55PjtcclxuICAgIHJlc29sdmU8VD4odmFsdWU6IFQgfCBQcm9taXNlTGlrZTxUPik6IFByb21pc2U8VD47XHJcbiAgICByZWplY3Q8VD4odmFsdWU6IFQgfCBQcm9taXNlTGlrZTxUPik6IFByb21pc2U8VD47XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBQUk9NSVNFX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48SVByb21pc2VTZXJ2aWNlPihcInByb21pc2Utc2VydmljZVwiKTtcclxuXHJcbi8vIC0tLSBBc3luYyBtZXRob2QgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFzeW5jTWVzc2FnZSB7XHJcbiAgICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgICBjb250ZXh0PzogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBBc3luY01ldGhvZCA9IChjb250ZXh0PzogYW55KSA9PiBQcm9taXNlPElBc3luY01lc3NhZ2U+O1xyXG5cclxuLy8gLS0tIFVub3JkZXJlZCBsaXN0IC0tLVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVW5vcmVkZXJlZExpc3RUZW1wbGF0ZSBleHRlbmRzIFRlbXBsYXRlUmVmPGFueT4ge1xyXG4gICAgYWJzdHJhY3QgdHlwZTogc3RyaW5nO1xyXG4gICAgYWJzdHJhY3Qgc2VsZWN0b3I6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBVbm9yZGVyZWRMaXN0VGVtcGxhdGVzIHtcclxuICAgIFt0eXBlOiBzdHJpbmddOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBVbm9yZGVyZWRMaXN0U3R5bGUgPSBcInRhYmxlXCIgfCBcImxpc3RcIjtcclxuXHJcbi8vIC0tLSBBamF4IHJlcXVlc3QgIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElBamF4UmVxdWVzdERldGFpbHMge1xyXG4gICAgcmVxdWVzdDogWE1MSHR0cFJlcXVlc3QsXHJcbiAgICBtZXRob2Q6IHN0cmluZztcclxuICAgIHVybDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBBamF4UmVxdWVzdENhbGxiYWNrID0gKGRldGFpbHM6IElBamF4UmVxdWVzdERldGFpbHMsIHBhcmFtczogYW55KSA9PiB2b2lkO1xyXG5cclxuLy8gLS0tIExvYWRlciB1dGlscyAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJU2NyaXB0UHJvbWlzZXMge1xyXG4gICAgW3NyYzogc3RyaW5nXTogUHJvbWlzZTxIVE1MU2NyaXB0RWxlbWVudD47XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBJU3R5bGVQcm9taXNlcyB7XHJcbiAgICBbc3JjOiBzdHJpbmddOiBQcm9taXNlPEhUTUxMaW5rRWxlbWVudD47XHJcbn1cclxuXHJcbi8vIC0tLSBPYnNlcnZhYmxlIHV0aWxzIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElTZWFyY2hPYnNlcnZhYmxlIHtcclxuICAgIHNlYXJjaDogc3RyaW5nO1xyXG4gICAgZ2V0U2VhcmNoUmVzdWx0cyh0b2tlbjogc3RyaW5nKTogUHJvbWlzZTxhbnlbXT47XHJcbn1cclxuXHJcbi8vIC0tLSBSZWZsZWN0IHV0aWxzIC0tLVxyXG5leHBvcnQgZnVuY3Rpb24gRmFjdG9yeURlcGVuZGVuY2llcyguLi5kZXBlbmRlbmNpZXM6IEFycmF5PEluamVjdGlvblRva2VuPGFueT4gfCBQcm92aWRlcj4pOiBNZXRob2REZWNvcmF0b3Ige1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IGFueSwgbWV0aG9kOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBSZWZsZWN0VXRpbHMuZGVmaW5lTWV0YWRhdGEoXCJmYWN0b3J5RGVwZW5kZW5jaWVzXCIsIGRlcGVuZGVuY2llcywgdGFyZ2V0LCBtZXRob2QpO1xyXG4gICAgfTtcclxufVxyXG5cclxuLy8gLS0tIFRpbWVyIHV0aWxzIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElUaW1lciB7XHJcbiAgICBpZD86IGFueTtcclxuICAgIGZ1bmM/OiBGdW5jdGlvbjtcclxuICAgIHRpbWU/OiBudW1iZXI7XHJcbiAgICBydW4/OiAoKSA9PiB2b2lkO1xyXG4gICAgc2V0PzogKGZ1bmM6IEZ1bmN0aW9uLCB0aW1lOiBudW1iZXIpID0+IHZvaWQ7XHJcbiAgICBjbGVhcj86ICgpID0+IHZvaWQ7XHJcbn1cclxuXHJcbi8vIC0tLSBFeHRyYUl0ZW1Qcm9wZXJ0aWVzIC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElFeHRyYVByb3BlcnRpZXMge1xyXG4gICAgW3Byb3A6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuLy8gLS0tIEdyb3VwIGJ5IC0tLVxyXG5leHBvcnQgaW50ZXJmYWNlIElHcm91cE1hcCB7XHJcbiAgICBbY29sdW1uOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbi8vIC0tLSBUcmFuc2xhdGUgLS0tXHJcbmV4cG9ydCB0eXBlIFRyYW5zbGF0aW9uUXVlcnkgPSBzdHJpbmcgfCBJVHJhbnNsYXRpb25zIHwgSVRyYW5zbGF0aW9uW107XHJcblxyXG4vLyAtLS0gUGFnaW5hdGlvbiAtLS1cclxuZXhwb3J0IGludGVyZmFjZSBJUGFnZUluZm8ge1xyXG4gICAgdGV4dDogc3RyaW5nO1xyXG4gICAgbnVtYmVyOiBudW1iZXI7XHJcbiAgICBhY3RpdmU6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBhZ2luYXRpb25EYXRhIHtcclxuICAgIHRvdGFsOiBudW1iZXI7XHJcbiAgICBpdGVtczogYW55W107XHJcbiAgICBtZXRhPzogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQYWdpbmF0aW9uRGF0YUxvYWRlciA9IChwYWdlOiBudW1iZXIsIGl0ZW1zUGVyUGFnZTogbnVtYmVyKSA9PiBQcm9taXNlPElQYWdpbmF0aW9uRGF0YT47XHJcblxyXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbkl0ZW1Db250ZXh0IHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgaXRlbTogYW55LCBwdWJsaWMgcGFyYWxsZWxJdGVtOiBhbnksIHB1YmxpYyBjb3VudDogbnVtYmVyLCBwdWJsaWMgaW5kZXg6IG51bWJlciwgcHVibGljIGRhdGFJbmRleDogbnVtYmVyKSB7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGZpcnN0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4ID09PSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBsYXN0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4ID09PSB0aGlzLmNvdW50IC0gMTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZXZlbigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbmRleCAlIDIgPT09IDA7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG9kZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIXRoaXMuZXZlbjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTdXBwb3J0IGZvciBvbGQgZHluYW1pYyB0YWJsZSBpbXBsZW1lbnRhdGlvblxyXG4gICAgZ2V0IHJvdygpOiBhbnkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiRHluYW1pY1RhYmxlIHJvdyBpcyBkZXByZWNhdGVkIHVzZSBpdGVtIGluc3RlYWRcIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTdXBwb3J0IGZvciBvbGQgZHluYW1pYyB0YWJsZSBpbXBsZW1lbnRhdGlvblxyXG4gICAgZ2V0IHBhcmFsbGVsUm93KCk6IGFueSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJEeW5hbWljVGFibGUgcGFyYWxsZWxSb3cgaXMgZGVwcmVjYXRlZCB1c2UgcGFyYWxsZWxJdGVtIGluc3RlYWRcIik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyYWxsZWxJdGVtO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlcihmaWx0ZXJSeDogUmVnRXhwKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuaXRlbSk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuaXRlbVtrZXldO1xyXG4gICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNOdWxsT3JVbmRlZmluZWQodmFsdWUpIHx8IE9iamVjdFV0aWxzLmlzT2JqZWN0KHZhbHVlKSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGNvbnN0IHRlc3RWYWx1ZSA9IE9iamVjdFV0aWxzLmlzU3RyaW5nKHZhbHVlKSA/IHZhbHVlIDogdmFsdWUudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgaWYgKHRlc3RWYWx1ZS5tYXRjaChmaWx0ZXJSeCkpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8vIC0tLSBIdHRwIHNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUh0dHBIZWFkZXJzIHtcclxuICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwUGFyYW1zIHtcclxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUmVxdWVzdE9wdGlvbnMge1xyXG4gICAgbWV0aG9kPzogc3RyaW5nO1xyXG4gICAgYm9keT86IGFueTtcclxuICAgIGhlYWRlcnM/OiBJSHR0cEhlYWRlcnMgfCBIdHRwSGVhZGVycztcclxuICAgIG9yaWdpbmFsSGVhZGVycz86IElIdHRwSGVhZGVycztcclxuICAgIHBhcmFtcz86IElIdHRwUGFyYW1zO1xyXG4gICAgb2JzZXJ2ZT86IFwiYm9keVwiIHwgXCJyZXNwb25zZVwiO1xyXG4gICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xyXG4gICAgcmVzcG9uc2VUeXBlPzogXCJhcnJheWJ1ZmZlclwiIHwgXCJibG9iXCIgfCBcImpzb25cIiB8IFwidGV4dFwiO1xyXG4gICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcclxuICAgIHRpbWVvdXQ/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUlzc3VlQ29udGV4dCB7XHJcbiAgICB1cmw6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUHJvZ3Jlc3Mge1xyXG4gICAgcGVyY2VudGFnZT86IG51bWJlcjtcclxuICAgIGxvYWRlZD86IG51bWJlcjtcclxuICAgIHRvdGFsPzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQcm9ncmVzc0xpc3RlbmVyID0gKHByb2dyZXNzOiBJUHJvZ3Jlc3MpID0+IHZvaWQ7XHJcblxyXG5leHBvcnQgdHlwZSBQcm9taXNlRXhlY3V0b3IgPSAocmVzb2x2ZTogKHZhbHVlPzogYW55IHwgUHJvbWlzZUxpa2U8YW55PikgPT4gdm9pZCwgcmVqZWN0OiAocmVhc29uPzogYW55KSA9PiB2b2lkKSA9PiB2b2lkO1xyXG5cclxuZXhwb3J0IGNsYXNzIEh0dHBQcm9taXNlIGV4dGVuZHMgUHJvbWlzZTxhbnk+IHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgcmVqZWN0SGFuZGxlcjogKHJlYXNvbj86IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB2b2lkO1xyXG4gICAgcHJvdGVjdGVkIGhhc1JlamVjdEhhbmRsZXI6IGJvb2xlYW47XHJcbiAgICBwcm90ZWN0ZWQgYXR0YWNoQ291bnQ6IG51bWJlcjtcclxuICAgIHByb3RlY3RlZCBydW5Db3VudDogbnVtYmVyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlamVjdEhhbmRsZXI6IChyZWFzb24/OiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdm9pZCwgZXhlY3V0b3I6IFByb21pc2VFeGVjdXRvcikge1xyXG4gICAgICAgIHN1cGVyKGV4ZWN1dG9yKTtcclxuICAgICAgICB0aGlzLnJlamVjdEhhbmRsZXIgPSByZWplY3RIYW5kbGVyO1xyXG4gICAgICAgIHRoaXMuYXR0YWNoQ291bnQgPSAwO1xyXG4gICAgICAgIHRoaXMucnVuQ291bnQgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHRoZW48VFJlc3VsdDEsIFRSZXN1bHQyPihvbkZ1bGZpbGxlZD86ICgodmFsdWU6IGFueSkgPT4gKFByb21pc2VMaWtlPFRSZXN1bHQxPiB8IFRSZXN1bHQxKSkgfCBudWxsIHwgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVqZWN0ZWQ/OiAoKHJlYXNvbjogSHR0cEVycm9yUmVzcG9uc2UpID0+IChQcm9taXNlTGlrZTxUUmVzdWx0Mj4gfCBUUmVzdWx0MikpIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFByb21pc2U8VFJlc3VsdDEgfCBUUmVzdWx0Mj4ge1xyXG4gICAgICAgIHRoaXMuYXR0YWNoQ291bnQrKztcclxuICAgICAgICByZXR1cm4gc3VwZXIudGhlbih2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucnVuQ291bnQrKztcclxuICAgICAgICAgICAgcmV0dXJuIG9uRnVsZmlsbGVkID8gb25GdWxmaWxsZWQodmFsdWUpIDogbnVsbDtcclxuICAgICAgICB9LCAocmVhc29uOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IG9uUmVqZWN0ZWQgPyBvblJlamVjdGVkKHJlYXNvbikgOiBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLmhhc1JlamVjdEhhbmRsZXIgPSB0aGlzLmhhc1JlamVjdEhhbmRsZXIgfHwgKG9uUmVqZWN0ZWQgJiYgcmVzdWx0ICE9PSBmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMucnVuQ291bnQrKztcclxuICAgICAgICAgICAgdGhpcy5yZWplY3RIYW5kbGVyKHRoaXMucnVuQ291bnQgPT0gdGhpcy5hdHRhY2hDb3VudCAmJiAhdGhpcy5oYXNSZWplY3RIYW5kbGVyID8gcmVhc29uIDogbnVsbCk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2F0Y2g8VFJlc3VsdCA9IG5ldmVyPihvblJlamVjdGVkPzogKChyZWFzb246IEh0dHBFcnJvclJlc3BvbnNlKSA9PiAoUHJvbWlzZUxpa2U8VFJlc3VsdD4gfCBUUmVzdWx0KSkgfCBudWxsIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxhbnkgfCBUUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGhlbihudWxsLCBvblJlamVjdGVkKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJSHR0cFNlcnZpY2Uge1xyXG4gICAgbGFuZ3VhZ2U6IElMYW5ndWFnZVNlcnZpY2U7XHJcbiAgICB1cmwodXJsOiBzdHJpbmcpOiBzdHJpbmc7XHJcbiAgICBtYWtlTGlzdFBhcmFtcyhwYWdlOiBudW1iZXIsIGl0ZW1zUGVyUGFnZTogbnVtYmVyLCBvcmRlckJ5Pzogc3RyaW5nLCBvcmRlckRlc2NlbmRpbmc/OiBib29sZWFuLCBmaWx0ZXI/OiBzdHJpbmcpOiBJSHR0cFBhcmFtcztcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IEVYUFJFU1NfUkVRVUVTVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZXF1ZXN0PihcImV4cHJlc3MtcmVxdWVzdFwiKTtcclxuXHJcbi8vIC0tLSBBcGkgc2VydmljZSAtLS1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFwaVNlcnZpY2UgZXh0ZW5kcyBJSHR0cFNlcnZpY2Uge1xyXG4gICAgY2FjaGU6IGFueTtcclxuICAgIGNsaWVudDogSHR0cENsaWVudDtcclxuICAgIGdldCh1cmw6IHN0cmluZywgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIGRlbGV0ZSh1cmw6IHN0cmluZywgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIHBvc3QodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XHJcbiAgICBwdXQodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XHJcbiAgICBwYXRjaCh1cmw6IHN0cmluZywgYm9keT86IGFueSwgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PjtcclxuICAgIHVwbG9hZCh1cmw6IHN0cmluZywgYm9keTogYW55LCBsaXN0ZW5lcj86IFByb2dyZXNzTGlzdGVuZXIsIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPGFueT47XHJcbiAgICBsaXN0KHVybDogc3RyaW5nLCBwYXJhbXM6IElIdHRwUGFyYW1zKTogUHJvbWlzZTxJUGFnaW5hdGlvbkRhdGE+O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQVBJX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPElBcGlTZXJ2aWNlPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJQXBpU2VydmljZT4oXCJhcGktc2VydmljZVwiKTtcclxuXHJcbi8vIC0tLSBPcGVuQXBpIHNlcnZpY2UgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSB7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgdHlwZT86IHN0cmluZztcclxuICAgIGZvcm1hdD86IHN0cmluZztcclxuICAgIGNvbHVtbj86IGJvb2xlYW47XHJcbiAgICBhZGRpdGlvbmFsUHJvcGVydGllcz86IGFueTtcclxuICAgICRyZWY/OiBzdHJpbmc7XHJcbiAgICBhbGxPZj86IFJlYWRvbmx5QXJyYXk8eyRyZWY/OiBzdHJpbmd9PlxyXG4gICAgaXRlbXM/OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5O1xyXG4gICAgZW51bT86IHN0cmluZ1tdO1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElPcGVuQXBpU2NoZW1hIHtcclxuICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgICBbbmFtZTogc3RyaW5nXTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eTtcclxuICAgIH07XHJcbiAgICByZXF1aXJlZDogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU9wZW5BcGlTY2hlbWFzIHtcclxuICAgIFtuYW1lOiBzdHJpbmddOiBJT3BlbkFwaVNjaGVtYTtcclxufVxyXG5cclxuLy8gLS0tIER5bmFtaWMgdGFibGUgLS0tXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlQ29sdW1ucyB7XHJcbiAgICBbY29sdW1uOiBzdHJpbmddOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlVGVtcGxhdGUge1xyXG4gICAgY29sdW1uOiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICAgIHB1cmU6IGJvb2xlYW47XHJcbiAgICByZWY6IFRlbXBsYXRlUmVmPGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlVGVtcGxhdGVzIHtcclxuICAgIFtjb2x1bW46IHN0cmluZ106IElUYWJsZVRlbXBsYXRlO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBUYWJsZURhdGFMb2FkZXIgPSAocGFnZTogbnVtYmVyLCByb3dzUGVyUGFnZTogbnVtYmVyLCBvcmRlckJ5OiBzdHJpbmcsIG9yZGVyRGVzY2VuZGluZzogYm9vbGVhbiwgZmlsdGVyOiBzdHJpbmcpID0+IFByb21pc2U8SVBhZ2luYXRpb25EYXRhPjtcclxuXHJcbi8vIC0tLSBSZXNvdXJjZSBpZiAtLS1cclxuZXhwb3J0IGNsYXNzIFJlc291cmNlSWZDb250ZXh0IHtcclxuICAgIHJlc291cmNlOiBzdHJpbmc7XHJcbiAgICB1cmw6IHN0cmluZztcclxufVxyXG5cclxuLy8gLS0tIENvbmZpZ1NlcnZpY2UgLS0tXHJcbmV4cG9ydCBjb25zdCBBUFBfQkFTRV9VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPihcImFwcC1iYXNlLXVybFwiKTtcclxuXHJcbmV4cG9ydCBjbGFzcyBJQ29uZmlndXJhdGlvbiB7XHJcbiAgICBiYXNlVXJsPzogc3RyaW5nO1xyXG4gICAgYmFzZURvbWFpbj86IHN0cmluZztcclxuICAgIHRyYW5zbGF0aW9uVXJsPzogc3RyaW5nO1xyXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDb25maWdTZXJ2aWNlIHtcclxuICAgIHJlYWRvbmx5IGNvbmZpZzogSUNvbmZpZ3VyYXRpb247XHJcbiAgICByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3I7XHJcbiAgICByZWFkb25seSBsb2FkOiAoKSA9PiBQcm9taXNlPElDb25maWd1cmF0aW9uPjtcclxuICAgIHByZXBhcmVVcmwodXJsOiBzdHJpbmcsIGVuZGluZzogc3RyaW5nKTogc3RyaW5nO1xyXG4gICAgZ2V0Q29uZmlnVmFsdWUoa2V5OiBzdHJpbmcpOiBhbnk7XHJcbiAgICBnZXRRdWVyeVBhcmFtZXRlcihuYW1lOiBzdHJpbmcsIHVybD86IHN0cmluZyk6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IENPTkZJR19TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPElDb25maWdTZXJ2aWNlPihcImNvbmZpZy1zZXJ2aWNlXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IEJBU0VfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPElDb25maWd1cmF0aW9uPihcImJhc2UtY29uZmlnXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IFNDUklQVF9QQVJBTVMgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55PihcInNjcmlwdC1wYXJhbXNcIik7XHJcblxyXG5leHBvcnQgY29uc3QgUk9PVF9FTEVNRU5UOiBJbmplY3Rpb25Ub2tlbjxIVE1MRWxlbWVudD4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SFRNTEVsZW1lbnQ+KFwiYXBwLXJvb3QtZWxlbWVudFwiKTtcclxuXHJcbi8vIC0tLSBFcnJvciBoYW5kbGVyIHNlcnZpY2UgLS0tXHJcbmV4cG9ydCB0eXBlIEVycm9ySGFuZGxlckNhbGxiYWNrID0gKGVycm9yOiBzdHJpbmcpID0+IGFueTtcclxuXHJcbmV4cG9ydCBjb25zdCBFUlJPUl9IQU5ETEVSID0gbmV3IEluamVjdGlvblRva2VuPEVycm9ySGFuZGxlckNhbGxiYWNrPihcImVycm9yLWhhbmRsZXItY2FsbGJhY2tcIik7XHJcblxyXG4vLyAtLS0gR2xvYmFsIHRlbXBsYXRlcyBzZXJ2aWNlXHJcblxyXG5leHBvcnQgdHlwZSBHbG9iYWxDb21wb25lbnRNb2RpZmllciA9IChjb21wb25lbnQ6IGFueSkgPT4gYW55O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJR2xvYmFsVGVtcGxhdGVzIHtcclxuICAgIHJlYWRvbmx5IHRlbXBsYXRlc1VwZGF0ZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPjtcclxuICAgIGdldChpZDogc3RyaW5nLCBjb21wb25lbnQ/OiBhbnkpOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gICAgYWRkKGlkOiBzdHJpbmcsIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KTogdm9pZDtcclxuICAgIHJlbW92ZShpZDogc3RyaW5nKTogdm9pZDtcclxuICAgIGFkZENvbXBvbmVudE1vZGlmaWVyKGlkOiBzdHJpbmcsIG1vZGlmaWVyOiBHbG9iYWxDb21wb25lbnRNb2RpZmllcik6IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBHTE9CQUxfVEVNUExBVEVTID0gbmV3IEluamVjdGlvblRva2VuPEVycm9ySGFuZGxlckNhbGxiYWNrPihcImdsb2JhbC10ZW1wbGF0ZXNcIik7XHJcblxyXG4vLyAtLS0gTW9kdWxlIC0tLVxyXG5leHBvcnQgdHlwZSBBcHBJbml0aWFsaXplckZ1bmMgPSAoKSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU1vZHVsZUNvbmZpZyB7XHJcbiAgICBhcGlTZXJ2aWNlPzogVHlwZTxJQXBpU2VydmljZT5cclxuICAgIGF1dGhTZXJ2aWNlPzogVHlwZTxJQXV0aFNlcnZpY2U+O1xyXG4gICAgaWNvblNlcnZpY2U/OiBUeXBlPElJY29uU2VydmljZT47XHJcbiAgICBsYW5ndWFnZVNlcnZpY2U/OiBUeXBlPElMYW5ndWFnZVNlcnZpY2U+O1xyXG4gICAgdG9hc3RlclNlcnZpY2U/OiBUeXBlPElUb2FzdGVyU2VydmljZT47XHJcbiAgICBwcm9taXNlU2VydmljZT86IFR5cGU8SVByb21pc2VTZXJ2aWNlPjtcclxuICAgIGNvbmZpZ1NlcnZpY2U/OiBUeXBlPElDb25maWdTZXJ2aWNlPjtcclxuICAgIGdsb2JhbFRlbXBsYXRlcz86IFR5cGU8SUdsb2JhbFRlbXBsYXRlcz47XHJcbiAgICBpbml0aWFsaXplQXBwPzogKGluamVjdG9yOiBJbmplY3RvcikgPT4gQXBwSW5pdGlhbGl6ZXJGdW5jO1xyXG4gICAgYmFzZVVybD86IChpbmplY3RvcjogSW5qZWN0b3IpID0+IHN0cmluZztcclxufVxyXG5cclxuLy8gLS0tIFZhbHVlZCBwcm9taXNlIC0tLVxyXG5leHBvcnQgY2xhc3MgVmFsdWVkUHJvbWlzZTxUPiBleHRlbmRzIFByb21pc2U8VD4ge1xyXG4gICAgdmFsdWU6IFQ7XHJcbn1cclxuIl19
@@ -1,8 +1,9 @@
1
1
  import { Pipe } from "@angular/core";
2
+ import { ObjectUtils } from "../utils/object.utils";
2
3
  import * as i0 from "@angular/core";
3
4
  export class ReplacePipe {
4
5
  transform(value, from, to) {
5
- return value ? value.replace(from, to) : value;
6
+ return ObjectUtils.isDefined(value) ? `${value}`.replace(from, to) : ``;
6
7
  }
7
8
  }
8
9
  ReplacePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ReplacePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
@@ -13,4 +14,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
13
14
  name: "replace"
14
15
  }]
15
16
  }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy9waXBlcy9yZXBsYWNlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBZ0IsTUFBTSxlQUFlLENBQUM7O0FBS2xELE1BQU0sT0FBTyxXQUFXO0lBRXBCLFNBQVMsQ0FBQyxLQUFhLEVBQUUsSUFBcUIsRUFBRSxFQUFVO1FBQ3RELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ25ELENBQUM7O3dHQUpRLFdBQVc7c0dBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQUh2QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxTQUFTO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBQaXBlKHtcclxuICAgIG5hbWU6IFwicmVwbGFjZVwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXBsYWNlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBmcm9tOiBzdHJpbmcgfCBSZWdFeHAsIHRvOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZSA/IHZhbHVlLnJlcGxhY2UoZnJvbSwgdG8pIDogdmFsdWU7XHJcbiAgICB9XHJcbn1cclxuIl19
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy9waXBlcy9yZXBsYWNlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHVCQUF1QixDQUFDOztBQUtsRCxNQUFNLE9BQU8sV0FBVztJQUNwQixTQUFTLENBQUMsS0FBYSxFQUFFLElBQXFCLEVBQUUsRUFBVTtRQUN0RCxPQUFPLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzVFLENBQUM7O3dHQUhRLFdBQVc7c0dBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQUh2QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxTQUFTO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4uL3V0aWxzL29iamVjdC51dGlsc1wiO1xyXG5cclxuQFBpcGUoe1xyXG4gICAgbmFtZTogXCJyZXBsYWNlXCJcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlcGxhY2VQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgZnJvbTogc3RyaW5nIHwgUmVnRXhwLCB0bzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuaXNEZWZpbmVkKHZhbHVlKSA/IGAke3ZhbHVlfWAucmVwbGFjZShmcm9tLCB0bykgOiBgYDtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -11,7 +11,7 @@ export class UniversalService {
11
11
  this.platformId = platformId;
12
12
  this.dds = dds;
13
13
  const info = this.dds.getDeviceInfo();
14
- this.crawler = /(bot|google|baidu|bing|msn|duckduckbot|teoma|slurp|yandex|lighthouse|angular-universal|PTST)/gi.test(info.userAgent);
14
+ this.crawler = /(bot|google|baidu|bing|msn|duckduckbot|teoma|slurp|yandex|lighthouse|angular-universal|PTST|PostmanRuntime)/gi.test(info.userAgent);
15
15
  }
16
16
  get isBrowser() {
17
17
  return isPlatformBrowser(this.platformId);
@@ -75,4 +75,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
75
75
  type: Inject,
76
76
  args: [PLATFORM_ID]
77
77
  }] }, { type: i1.DeviceDetectorService }]; } });
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdmVyc2FsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL3VuaXZlcnNhbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBQUMscUJBQXFCLEVBQWEsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBRXRFOztHQUVHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtJQXVFekIsWUFBeUMsVUFBa0IsRUFBVSxHQUEwQjtRQUF0RCxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBdUI7UUFDM0YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsT0FBTyxHQUFHLGdHQUFnRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekksQ0FBQztJQXhFRCxJQUFJLFNBQVM7UUFDVCxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVE7WUFDaEIsQ0FBQyxDQUFDO2dCQUNFLFNBQVMsRUFBRSxtQkFBbUI7Z0JBQzlCLEVBQUUsRUFBRSxTQUFTO2dCQUNiLE9BQU8sRUFBRSxNQUFNO2dCQUNmLE1BQU0sRUFBRSxNQUFNO2dCQUNkLFVBQVUsRUFBRSxTQUFTO2dCQUNyQixlQUFlLEVBQUUsU0FBUztnQkFDMUIsVUFBVSxFQUFFLFNBQVM7Z0JBQ3JCLFdBQVcsRUFBRSxXQUFXO2FBQ3BCO1lBQ1IsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksY0FBYztRQUNkLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLFNBQVMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksU0FBUyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7OzZHQW5FUSxnQkFBZ0Isa0JBdUVMLFdBQVc7aUhBdkV0QixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVTs7MEJBd0VNLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtpc1BsYXRmb3JtQnJvd3NlciwgaXNQbGF0Zm9ybVNlcnZlcn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge0RldmljZURldGVjdG9yU2VydmljZSwgRGV2aWNlSW5mb30gZnJvbSBcIm5neC1kZXZpY2UtZGV0ZWN0b3JcIjtcclxuXHJcbi8qKlxyXG4gKiBVc2UgdGhpcyBzZXJ2aWNlIHRvIGRldGVybWluZSB3aGljaCBpcyB0aGUgY3VycmVudCBlbnZpcm9ubWVudFxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVW5pdmVyc2FsU2VydmljZSB7XHJcblxyXG4gICAgZ2V0IGlzQnJvd3NlcigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNTZXJ2ZXIoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGlzUGxhdGZvcm1TZXJ2ZXIodGhpcy5wbGF0Zm9ybUlkKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZGV2aWNlSW5mbygpOiBEZXZpY2VJbmZvIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc1NlcnZlclxyXG4gICAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICAgIHVzZXJBZ2VudDogXCJhbmd1bGFyLXVuaXZlcnNhbFwiLFxyXG4gICAgICAgICAgICAgICAgb3M6IFwidW5rbm93blwiLFxyXG4gICAgICAgICAgICAgICAgYnJvd3NlcjogXCJub2RlXCIsXHJcbiAgICAgICAgICAgICAgICBkZXZpY2U6IFwibm9kZVwiLFxyXG4gICAgICAgICAgICAgICAgb3NfdmVyc2lvbjogXCJ1bmtub3duXCIsXHJcbiAgICAgICAgICAgICAgICBicm93c2VyX3ZlcnNpb246IFwidW5rbm93blwiLFxyXG4gICAgICAgICAgICAgICAgZGV2aWNlVHlwZTogXCJ1bmtub3duXCIsXHJcbiAgICAgICAgICAgICAgICBvcmllbnRhdGlvbjogXCJsYW5kc2NhcGVcIlxyXG4gICAgICAgICAgICB9IGFzIGFueVxyXG4gICAgICAgICAgICA6IHRoaXMuZGRzLmdldERldmljZUluZm8oKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYnJvd3Nlck5hbWUoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZHMuYnJvd3NlcjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYnJvd3NlclZlcnNpb24oKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZHMuYnJvd3Nlcl92ZXJzaW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc0V4cGxvcmVyKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRkcy5icm93c2VyID09IFwiaWVcIjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNFZGdlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRkcy5icm93c2VyID09IFwibXMtZWRnZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc0Nocm9tZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZHMuYnJvd3NlciA9PSBcImNocm9tZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc0ZpcmVmb3goKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGRzLmJyb3dzZXIgPT0gXCJmaXJlZm94XCI7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGlzU2FmYXJpKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRkcy5icm93c2VyID09IFwic2FmYXJpXCI7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGlzVGFibGV0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRkcy5pc1RhYmxldCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc01vYmlsZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZHMuaXNNb2JpbGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNEZXNrdG9wKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRkcy5pc0Rlc2t0b3AoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNDcmF3bGVyKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNyYXdsZXI7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmF3bGVyOiBib29sZWFuO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogc3RyaW5nLCBwcml2YXRlIGRkczogRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlKSB7XHJcbiAgICAgICAgY29uc3QgaW5mbyA9IHRoaXMuZGRzLmdldERldmljZUluZm8oKTtcclxuICAgICAgICB0aGlzLmNyYXdsZXIgPSAvKGJvdHxnb29nbGV8YmFpZHV8YmluZ3xtc258ZHVja2R1Y2tib3R8dGVvbWF8c2x1cnB8eWFuZGV4fGxpZ2h0aG91c2V8YW5ndWxhci11bml2ZXJzYWx8UFRTVCkvZ2kudGVzdChpbmZvLnVzZXJBZ2VudCk7XHJcbiAgICB9XHJcbn1cclxuIl19
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdmVyc2FsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL3VuaXZlcnNhbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBQUMscUJBQXFCLEVBQWEsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBRXRFOztHQUVHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtJQXVFekIsWUFBeUMsVUFBa0IsRUFBVSxHQUEwQjtRQUF0RCxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBdUI7UUFDM0YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsT0FBTyxHQUFHLCtHQUErRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEosQ0FBQztJQXhFRCxJQUFJLFNBQVM7UUFDVCxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVE7WUFDaEIsQ0FBQyxDQUFDO2dCQUNFLFNBQVMsRUFBRSxtQkFBbUI7Z0JBQzlCLEVBQUUsRUFBRSxTQUFTO2dCQUNiLE9BQU8sRUFBRSxNQUFNO2dCQUNmLE1BQU0sRUFBRSxNQUFNO2dCQUNkLFVBQVUsRUFBRSxTQUFTO2dCQUNyQixlQUFlLEVBQUUsU0FBUztnQkFDMUIsVUFBVSxFQUFFLFNBQVM7Z0JBQ3JCLFdBQVcsRUFBRSxXQUFXO2FBQ3BCO1lBQ1IsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksY0FBYztRQUNkLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLFNBQVMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksU0FBUyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7OzZHQW5FUSxnQkFBZ0Isa0JBdUVMLFdBQVc7aUhBdkV0QixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVTs7MEJBd0VNLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtpc1BsYXRmb3JtQnJvd3NlciwgaXNQbGF0Zm9ybVNlcnZlcn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge0RldmljZURldGVjdG9yU2VydmljZSwgRGV2aWNlSW5mb30gZnJvbSBcIm5neC1kZXZpY2UtZGV0ZWN0b3JcIjtcclxuXHJcbi8qKlxyXG4gKiBVc2UgdGhpcyBzZXJ2aWNlIHRvIGRldGVybWluZSB3aGljaCBpcyB0aGUgY3VycmVudCBlbnZpcm9ubWVudFxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVW5pdmVyc2FsU2VydmljZSB7XHJcblxyXG4gICAgZ2V0IGlzQnJvd3NlcigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNTZXJ2ZXIoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGlzUGxhdGZvcm1TZXJ2ZXIodGhpcy5wbGF0Zm9ybUlkKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZGV2aWNlSW5mbygpOiBEZXZpY2VJbmZvIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc1NlcnZlclxyXG4gICAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICAgIHVzZXJBZ2VudDogXCJhbmd1bGFyLXVuaXZlcnNhbFwiLFxyXG4gICAgICAgICAgICAgICAgb3M6IFwidW5rbm93blwiLFxyXG4gICAgICAgICAgICAgICAgYnJvd3NlcjogXCJub2RlXCIsXHJcbiAgICAgICAgICAgICAgICBkZXZpY2U6IFwibm9kZVwiLFxyXG4gICAgICAgICAgICAgICAgb3NfdmVyc2lvbjogXCJ1bmtub3duXCIsXHJcbiAgICAgICAgICAgICAgICBicm93c2VyX3ZlcnNpb246IFwidW5rbm93blwiLFxyXG4gICAgICAgICAgICAgICAgZGV2aWNlVHlwZTogXCJ1bmtub3duXCIsXHJcbiAgICAgICAgICAgICAgICBvcmllbnRhdGlvbjogXCJsYW5kc2NhcGVcIlxyXG4gICAgICAgICAgICB9IGFzIGFueVxyXG4gICAgICAgICAgICA6IHRoaXMuZGRzLmdldERldmljZUluZm8oKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYnJvd3Nlck5hbWUoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZHMuYnJvd3NlcjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYnJvd3NlclZlcnNpb24oKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZHMuYnJvd3Nlcl92ZXJzaW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc0V4cGxvcmVyKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRkcy5icm93c2VyID09IFwiaWVcIjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNFZGdlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRkcy5icm93c2VyID09IFwibXMtZWRnZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc0Nocm9tZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZHMuYnJvd3NlciA9PSBcImNocm9tZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc0ZpcmVmb3goKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGRzLmJyb3dzZXIgPT0gXCJmaXJlZm94XCI7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGlzU2FmYXJpKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRkcy5icm93c2VyID09IFwic2FmYXJpXCI7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGlzVGFibGV0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRkcy5pc1RhYmxldCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc01vYmlsZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kZHMuaXNNb2JpbGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNEZXNrdG9wKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRkcy5pc0Rlc2t0b3AoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNDcmF3bGVyKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNyYXdsZXI7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmF3bGVyOiBib29sZWFuO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogc3RyaW5nLCBwcml2YXRlIGRkczogRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlKSB7XHJcbiAgICAgICAgY29uc3QgaW5mbyA9IHRoaXMuZGRzLmdldERldmljZUluZm8oKTtcclxuICAgICAgICB0aGlzLmNyYXdsZXIgPSAvKGJvdHxnb29nbGV8YmFpZHV8YmluZ3xtc258ZHVja2R1Y2tib3R8dGVvbWF8c2x1cnB8eWFuZGV4fGxpZ2h0aG91c2V8YW5ndWxhci11bml2ZXJzYWx8UFRTVHxQb3N0bWFuUnVudGltZSkvZ2kudGVzdChpbmZvLnVzZXJBZ2VudCk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -1,4 +1,4 @@
1
- import * as moment from "moment";
1
+ import moment from "moment";
2
2
  export class DateUtils {
3
3
  static isHoliday(date) {
4
4
  return moment(date).isoWeekday() > 5;
@@ -9,13 +9,14 @@ export class DateUtils {
9
9
  static add(date, amount, unit) {
10
10
  return moment(date).add(amount, unit).toDate();
11
11
  }
12
- static businessAdd(date, amount, unit) {
12
+ static businessAdd(date, amount, unit, freeDays = []) {
13
13
  const signal = amount < 0 ? -1 : 1;
14
+ const freeMoments = freeDays.map(d => moment(d));
14
15
  let remaining = Math.abs(amount);
15
16
  let day = date;
16
17
  while (remaining) {
17
18
  day = DateUtils.add(day, signal, unit);
18
- if (DateUtils.isBusinessDay(day)) {
19
+ if (DateUtils.isBusinessDay(day) && !freeMoments.some(m => m.isSame(day, "day"))) {
19
20
  remaining--;
20
21
  }
21
22
  }
@@ -25,4 +26,4 @@ export class DateUtils {
25
26
  return DateUtils.businessAdd(date, -amount, unit);
26
27
  }
27
28
  }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvdXRpbHMvZGF0ZS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUVqQyxNQUFNLE9BQU8sU0FBUztJQUVsQixNQUFNLENBQUMsU0FBUyxDQUFDLElBQVU7UUFDdkIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYSxDQUFDLElBQVU7UUFDM0IsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRyxDQUFDLElBQVUsRUFBRSxNQUEwQixFQUFFLElBQXdCO1FBQ3ZFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBVSxFQUFFLE1BQWMsRUFBRSxJQUF3QjtRQUNuRSxNQUFNLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25DLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ2YsT0FBTyxTQUFTLEVBQUU7WUFDZCxHQUFHLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLElBQUksU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDOUIsU0FBUyxFQUFFLENBQUM7YUFDZjtTQUNKO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQVUsRUFBRSxNQUFjLEVBQUUsSUFBd0I7UUFDeEUsT0FBTyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0R1cmF0aW9uSW5wdXRBcmcxLCBEdXJhdGlvbklucHV0QXJnMn0gZnJvbSBcIm1vbWVudFwiO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIERhdGVVdGlscyB7XHJcblxyXG4gICAgc3RhdGljIGlzSG9saWRheShkYXRlOiBEYXRlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIG1vbWVudChkYXRlKS5pc29XZWVrZGF5KCkgPiA1O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0J1c2luZXNzRGF5KGRhdGU6IERhdGUpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gbW9tZW50KGRhdGUpLmlzb1dlZWtkYXkoKSA8IDY7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGFkZChkYXRlOiBEYXRlLCBhbW91bnQ/OiBEdXJhdGlvbklucHV0QXJnMSwgdW5pdD86IER1cmF0aW9uSW5wdXRBcmcyKTogRGF0ZSB7XHJcbiAgICAgICAgcmV0dXJuIG1vbWVudChkYXRlKS5hZGQoYW1vdW50LCB1bml0KS50b0RhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYnVzaW5lc3NBZGQoZGF0ZTogRGF0ZSwgYW1vdW50OiBudW1iZXIsIHVuaXQ/OiBEdXJhdGlvbklucHV0QXJnMik6IERhdGUge1xyXG4gICAgICAgIGNvbnN0IHNpZ25hbCA9IGFtb3VudCA8IDAgPyAtMSA6IDE7XHJcbiAgICAgICAgbGV0IHJlbWFpbmluZyA9IE1hdGguYWJzKGFtb3VudCk7XHJcbiAgICAgICAgbGV0IGRheSA9IGRhdGU7XHJcbiAgICAgICAgd2hpbGUgKHJlbWFpbmluZykge1xyXG4gICAgICAgICAgICBkYXkgPSBEYXRlVXRpbHMuYWRkKGRheSwgc2lnbmFsLCB1bml0KTtcclxuICAgICAgICAgICAgaWYgKERhdGVVdGlscy5pc0J1c2luZXNzRGF5KGRheSkpIHtcclxuICAgICAgICAgICAgICAgIHJlbWFpbmluZy0tO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkYXk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGJ1c2luZXNzU3VidHJhY3QoZGF0ZTogRGF0ZSwgYW1vdW50OiBudW1iZXIsIHVuaXQ/OiBEdXJhdGlvbklucHV0QXJnMik6IERhdGUge1xyXG4gICAgICAgIHJldHVybiBEYXRlVXRpbHMuYnVzaW5lc3NBZGQoZGF0ZSwgLWFtb3VudCwgdW5pdCk7XHJcbiAgICB9XHJcbn1cclxuIl19
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvdXRpbHMvZGF0ZS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsTUFBTSxPQUFPLFNBQVM7SUFFbEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFVO1FBQ3ZCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFVO1FBQzNCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFVLEVBQUUsTUFBMEIsRUFBRSxJQUF3QjtRQUN2RSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQVUsRUFBRSxNQUFjLEVBQUUsSUFBd0IsRUFBRSxXQUFtQixFQUFFO1FBQzFGLE1BQU0sTUFBTSxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pELElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ2YsT0FBTyxTQUFTLEVBQUU7WUFDZCxHQUFHLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLElBQUksU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUM5RSxTQUFTLEVBQUUsQ0FBQzthQUNmO1NBQ0o7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBVSxFQUFFLE1BQWMsRUFBRSxJQUF3QjtRQUN4RSxPQUFPLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RHVyYXRpb25JbnB1dEFyZzEsIER1cmF0aW9uSW5wdXRBcmcyfSBmcm9tIFwibW9tZW50XCI7XHJcbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIERhdGVVdGlscyB7XHJcblxyXG4gICAgc3RhdGljIGlzSG9saWRheShkYXRlOiBEYXRlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIG1vbWVudChkYXRlKS5pc29XZWVrZGF5KCkgPiA1O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0J1c2luZXNzRGF5KGRhdGU6IERhdGUpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gbW9tZW50KGRhdGUpLmlzb1dlZWtkYXkoKSA8IDY7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGFkZChkYXRlOiBEYXRlLCBhbW91bnQ/OiBEdXJhdGlvbklucHV0QXJnMSwgdW5pdD86IER1cmF0aW9uSW5wdXRBcmcyKTogRGF0ZSB7XHJcbiAgICAgICAgcmV0dXJuIG1vbWVudChkYXRlKS5hZGQoYW1vdW50LCB1bml0KS50b0RhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYnVzaW5lc3NBZGQoZGF0ZTogRGF0ZSwgYW1vdW50OiBudW1iZXIsIHVuaXQ/OiBEdXJhdGlvbklucHV0QXJnMiwgZnJlZURheXM6IERhdGVbXSA9IFtdKTogRGF0ZSB7XHJcbiAgICAgICAgY29uc3Qgc2lnbmFsID0gYW1vdW50IDwgMCA/IC0xIDogMTtcclxuICAgICAgICBjb25zdCBmcmVlTW9tZW50cyA9IGZyZWVEYXlzLm1hcChkID0+IG1vbWVudChkKSk7XHJcbiAgICAgICAgbGV0IHJlbWFpbmluZyA9IE1hdGguYWJzKGFtb3VudCk7XHJcbiAgICAgICAgbGV0IGRheSA9IGRhdGU7XHJcbiAgICAgICAgd2hpbGUgKHJlbWFpbmluZykge1xyXG4gICAgICAgICAgICBkYXkgPSBEYXRlVXRpbHMuYWRkKGRheSwgc2lnbmFsLCB1bml0KTtcclxuICAgICAgICAgICAgaWYgKERhdGVVdGlscy5pc0J1c2luZXNzRGF5KGRheSkgJiYgIWZyZWVNb21lbnRzLnNvbWUobSA9PiBtLmlzU2FtZShkYXksIFwiZGF5XCIpKSkge1xyXG4gICAgICAgICAgICAgICAgcmVtYWluaW5nLS07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRheTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYnVzaW5lc3NTdWJ0cmFjdChkYXRlOiBEYXRlLCBhbW91bnQ6IG51bWJlciwgdW5pdD86IER1cmF0aW9uSW5wdXRBcmcyKTogRGF0ZSB7XHJcbiAgICAgICAgcmV0dXJuIERhdGVVdGlscy5idXNpbmVzc0FkZChkYXRlLCAtYW1vdW50LCB1bml0KTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,6 +1,6 @@
1
1
  const defaultPredicate = () => true;
2
- const hasBlob = typeof Blob !== "undefined";
3
- const hasFile = typeof File !== "undefined";
2
+ const hasBlob = typeof Blob !== "undefined" && !!Blob;
3
+ const hasFile = typeof File !== "undefined" && !!File;
4
4
  export class ObjectUtils {
5
5
  static compare(a, b) {
6
6
  if ((a === null || b === null) || (typeof a != typeof b)) {
@@ -269,4 +269,4 @@ export class ObjectUtils {
269
269
  return copies.get(source);
270
270
  }
271
271
  }
272
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy91dGlscy9vYmplY3QudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxnQkFBZ0IsR0FBb0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQ3JELE1BQU0sT0FBTyxHQUFHLE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQztBQUM1QyxNQUFNLE9BQU8sR0FBRyxPQUFPLElBQUksS0FBSyxXQUFXLENBQUM7QUFFNUMsTUFBTSxPQUFPLFdBQVc7SUFFcEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFNLEVBQUUsQ0FBTTtRQUN6QixJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFO1lBQ3RELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRTtZQUN2QixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQy9CO2FBQU07WUFDSCxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUU7Z0JBQ25CLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2hCLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDbkI7WUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ1AsT0FBTyxDQUFDLENBQUM7YUFDWjtpQkFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2QsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUNiO1lBQ0QsT0FBTyxDQUFDLENBQUM7U0FDWjtJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQVE7UUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxR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QUFDLENBQUM7Z0JBQ25DLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUMzQixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQzt3QkFBRSxPQUFPO29CQUN6RCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDekYsQ0FBQyxDQUFDLENBQUM7YUFDTjtTQUNKO1FBQ0QsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEZpbHRlclByZWRpY2F0ZSA9ICh2YWx1ZTogYW55LCBrZXk/OiBhbnksIHRhcmdldD86IGFueSwgc291cmNlPzogYW55KSA9PiBib29sZWFuO1xyXG5leHBvcnQgdHlwZSBJdGVyYXRlQ2FsbGJhY2sgPSAodmFsdWU6IGFueSwga2V5PzogYW55KSA9PiB2b2lkO1xyXG5cclxuY29uc3QgZGVmYXVsdFByZWRpY2F0ZTogRmlsdGVyUHJlZGljYXRlID0gKCkgPT4gdHJ1ZTtcclxuY29uc3QgaGFzQmxvYiA9IHR5cGVvZiBCbG9iICE9PSBcInVuZGVmaW5lZFwiO1xyXG5jb25zdCBoYXNGaWxlID0gdHlwZW9mIEZpbGUgIT09IFwidW5kZWZpbmVkXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgT2JqZWN0VXRpbHMge1xyXG5cclxuICAgIHN0YXRpYyBjb21wYXJlKGE6IGFueSwgYjogYW55KTogbnVtYmVyIHtcclxuICAgICAgICBpZiAoKGEgPT09IG51bGwgfHwgYiA9PT0gbnVsbCkgfHwgKHR5cGVvZiBhICE9IHR5cGVvZiBiKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiBhID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoYSkubG9jYWxlQ29tcGFyZShiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgICAgICAgICAgIGEgPSBhLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgICAgIGIgPSBiLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYSA+IGIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGEgPCBiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRQcm9wZXJ0aWVzKG9iajogYW55KTogc3RyaW5nW10ge1xyXG4gICAgICAgIGlmICghT2JqZWN0VXRpbHMuaXNPYmplY3Qob2JqKSAmJiAhT2JqZWN0VXRpbHMuaXNGdW5jdGlvbihvYmopKSByZXR1cm4gW107XHJcbiAgICAgICAgY29uc3QgcHJvcHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuICAgICAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2gocCA9PiBwcm9wcy5hZGQocCkpO1xyXG4gICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikuZm9yRWFjaChwID0+IHByb3BzLmFkZChwKSk7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20ocHJvcHMpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBlcXVhbHMoYTogYW55LCBiOiBhbnksIHZpc2l0ZWQ6IFNldDxhbnk+ID0gbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHZpc2l0ZWQgPSB2aXNpdGVkIHx8IG5ldyBTZXQoKTtcclxuICAgICAgICBpZiAodmlzaXRlZC5oYXMoYSkgJiYgdmlzaXRlZC5oYXMoYikpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmIChhID09PSBiKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAoYSA9PT0gbnVsbCB8fCBiID09PSBudWxsKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKGEgIT09IGEgJiYgYiAhPT0gYikgcmV0dXJuIHRydWU7IC8vIE5hTiA9PT0gTmFOXHJcbiAgICAgICAgY29uc3QgYXQgPSB0eXBlb2YgYSwgYnQgPSB0eXBlb2YgYjtcclxuICAgICAgICBsZXQgbGVuZ3RoOiBudW1iZXIsIGtleTogYW55LCBrZXlTZXQ6IGFueTtcclxuICAgICAgICBpZiAoYXQgPT0gYnQgJiYgYXQgPT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgICAgICB2aXNpdGVkLmFkZChhKTtcclxuICAgICAgICAgICAgdmlzaXRlZC5hZGQoYik7XHJcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGEpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYikpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmICgobGVuZ3RoID0gYS5sZW5ndGgpID09IGIubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChrZXkgPSAwOyBrZXkgPCBsZW5ndGg7IGtleSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghT2JqZWN0VXRpbHMuZXF1YWxzKGFba2V5XSwgYltrZXldLCB2aXNpdGVkKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAga2V5U2V0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgICAgICAgICAgICAgIGZvciAoa2V5IGluIGEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghT2JqZWN0VXRpbHMuZXF1YWxzKGFba2V5XSwgYltrZXldLCB2aXNpdGVkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleVNldFtrZXldID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBmb3IgKGtleSBpbiBiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGIuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAhKGtleSBpbiBrZXlTZXQpICYmIHR5cGVvZiBiW2tleV0gIT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZXZhbHVhdGUoZXhwcjogc3RyaW5nLCBjb250ZXh0OiBhbnkgPSB7fSwgcmVzOiBhbnkgPSB7fSk6IGFueSB7XHJcbiAgICAgICAgZXhwciA9IE9iamVjdC5rZXlzKGNvbnRleHQpLnJlZHVjZSgocmVzLCBrZXkpID0+IGB2YXIgJHtrZXl9ID0gdGhpc1snJHtrZXl9J107XFxuJHtyZXN9YCwgZXhwcik7XHJcbiAgICAgICAgY29uc3QgbGluZXMgPSBleHByLnNwbGl0KFwiXFxuXCIpO1xyXG4gICAgICAgIGNvbnN0IGxhc3RMaW5lID0gXCJyZXR1cm4gXCIgKyBsaW5lcy5wb3AoKS5yZXBsYWNlKFwicmV0dXJuIFwiLCBcIlwiKTtcclxuICAgICAgICBsaW5lcy5wdXNoKGxhc3RMaW5lKTtcclxuICAgICAgICBleHByID0gbGluZXMuam9pbihcIlxcblwiKTtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXN1bHQgPSBuZXcgRnVuY3Rpb24oZXhwcikuY2FsbChjb250ZXh0KTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHJlcy5leGNlcHRpb24gPSBlO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIHBhcnNlIGV4cHJlc3Npb246ICR7ZS5tZXNzYWdlfWAsIGV4cHIsIGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXMucmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGVtcHR5KG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICFvYmogfHwgT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT0gMDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXRlcmF0ZShvYmo6IGFueSwgY2I6IEl0ZXJhdGVDYWxsYmFjayk6IHZvaWQge1xyXG4gICAgICAgIGlmICghb2JqKSByZXR1cm47XHJcbiAgICAgICAgY29uc3Qga2V5czogYW55W10gPSBBcnJheS5pc0FycmF5KG9iaikgPyBBcnJheS5mcm9tKG9iai5rZXlzKCkpIDogT2JqZWN0LmtleXMob2JqKTtcclxuICAgICAgICBrZXlzLmZvckVhY2goXHJcbiAgICAgICAgICAgIC8vIEBkeW5hbWljXHJcbiAgICAgICAgICAgIGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjYihvYmpba2V5XSwga2V5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGdldFZhbHVlKG9iajogYW55LCBrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogYW55LCB0cmVlRmFsbGJhY2s6IGJvb2xlYW4gPSBmYWxzZSk6IGFueSB7XHJcbiAgICAgICAga2V5ID0ga2V5IHx8IFwiXCI7XHJcbiAgICAgICAgY29uc3Qga2V5cyA9IGtleS5zcGxpdChcIi5cIik7XHJcbiAgICAgICAgbGV0IGN1cktleSA9IFwiXCI7XHJcbiAgICAgICAgZG8ge1xyXG4gICAgICAgICAgICBjdXJLZXkgKz0ga2V5cy5zaGlmdCgpO1xyXG4gICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNEZWZpbmVkKG9iaikgJiYgT2JqZWN0VXRpbHMuaXNEZWZpbmVkKG9ialtjdXJLZXldKSAmJiAodHlwZW9mIG9ialtjdXJLZXldID09PSBcIm9iamVjdFwiIHx8ICFrZXlzLmxlbmd0aCkpIHtcclxuICAgICAgICAgICAgICAgIG9iaiA9IG9ialtjdXJLZXldO1xyXG4gICAgICAgICAgICAgICAgY3VyS2V5ID0gXCJcIjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICgha2V5cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IHR5cGVvZiBkZWZhdWx0VmFsdWUgPT0gXCJ1bmRlZmluZWRcIiA/IGtleS5yZXBsYWNlKG5ldyBSZWdFeHAoYCR7Y3VyS2V5fSRgKSwgYHske2N1cktleX19YCkgOiBkZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgICAgICAgICBvYmogPSB0cmVlRmFsbGJhY2sgPyBvYmogfHwgZGVmYXVsdFZhbHVlIDogZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY3VyS2V5ICs9IFwiLlwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSB3aGlsZSAoa2V5cy5sZW5ndGgpO1xyXG4gICAgICAgIHJldHVybiBvYmo7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIG1hcFRvUGF0aCh0YXJnZXQ6IGFueSwgc291cmNlOiBhbnksIHBhdGg6IHN0cmluZ1tdKTogYW55IHtcclxuICAgICAgICBpZiAodHlwZW9mIHNvdXJjZSA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIHRhcmdldDtcclxuICAgICAgICBpZiAocGF0aC5sZW5ndGggPT0gMCkgcmV0dXJuIHNvdXJjZTtcclxuICAgICAgICBjb25zdCBrZXk6IGFueSA9IHBhdGguc2hpZnQoKTtcclxuICAgICAgICBpZiAoa2V5ID09IFwiKlwiKSB7XHJcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc0FycmF5KHNvdXJjZSkpIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldCA9IE9iamVjdFV0aWxzLmlzQXJyYXkodGFyZ2V0KSA/IHRhcmdldCA6IFtdO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLm1hcFRvUGF0aCh0YXJnZXRbaW5kZXhdLCBpdGVtLCBBcnJheS5mcm9tKHBhdGgpKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc09iamVjdChzb3VyY2UpKSB7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQgPSBPYmplY3RVdGlscy5pc09iamVjdCh0YXJnZXQpID8gdGFyZ2V0IDoge307XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoc291cmNlKS5yZWR1Y2UoKHJlc3VsdCwga2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBPYmplY3RVdGlscy5tYXBUb1BhdGgodGFyZ2V0W2tleV0sIHNvdXJjZVtrZXldLCBBcnJheS5mcm9tKHBhdGgpKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgfSwge30pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBPYmplY3RVdGlscy5pc051bGxPclVuZGVmaW5lZCh0YXJnZXQpID8gbnVsbCA6IHRhcmdldDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaXNBcnJheSA9IE9iamVjdFV0aWxzLmlzQXJyYXkodGFyZ2V0KTtcclxuICAgICAgICB0YXJnZXQgPSBPYmplY3RVdGlscy5pc09iamVjdCh0YXJnZXQpIHx8IGlzQXJyYXkgPyB0YXJnZXQgOiB7fTtcclxuICAgICAgICB0YXJnZXRba2V5XSA9IE9iamVjdFV0aWxzLm1hcFRvUGF0aCh0YXJnZXRba2V5XSwgc291cmNlLCBBcnJheS5mcm9tKHBhdGgpKTtcclxuICAgICAgICByZXR1cm4gaXNOYU4oa2V5KSB8fCBpc0FycmF5ID8gdGFyZ2V0IDogT2JqZWN0LnZhbHVlcyh0YXJnZXQpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBmaWx0ZXIob2JqOiBhbnksIHByZWRpY2F0ZTogRmlsdGVyUHJlZGljYXRlKTogYW55IHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuY29weVJlY3Vyc2l2ZShudWxsLCBvYmosIHByZWRpY2F0ZSwgbmV3IE1hcCgpKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgY29weTxUPihvYmo6IFQpOiBUIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuY29weVJlY3Vyc2l2ZShudWxsLCBvYmosIG51bGwsIG5ldyBNYXAoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGFzc2lnbjxUPih0YXJnZXQ6IFQsIHNvdXJjZTogYW55LCBwcmVkaWNhdGU/OiBGaWx0ZXJQcmVkaWNhdGUpOiBUIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuY29weVJlY3Vyc2l2ZSh0YXJnZXQsIHNvdXJjZSwgcHJlZGljYXRlLCBuZXcgTWFwKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRUeXBlKG9iajogYW55KTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoXCJcXFxccyhbYS16QS1aXSspXCIpO1xyXG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKS5tYXRjaChyZWdleClbMV0udG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNQcmltaXRpdmUodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlID09IG51bGwgfHwgKHR5cGUgIT09IFwib2JqZWN0XCIgJiYgdHlwZSAhPT0gXCJmdW5jdGlvblwiKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNPYmplY3QodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBPYmplY3RVdGlscy5nZXRUeXBlKHZhbHVlKSA9PT0gXCJvYmplY3RcIjtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNEZWZpbmVkKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlICE9PSBcInVuZGVmaW5lZFwiICYmIHZhbHVlICE9PSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc051bGxPclVuZGVmaW5lZCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSBcInVuZGVmaW5lZFwiIHx8IHZhbHVlID09IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzU3RyaW5nKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCI7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzRnVuY3Rpb24odmFsdWU6IGFueSk6IHZhbHVlIGlzIEZ1bmN0aW9uIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCI7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzRGF0ZSh2YWx1ZTogYW55KTogdmFsdWUgaXMgRGF0ZSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGwgIT09IHZhbHVlICYmICFpc05hTih2YWx1ZSkgJiYgXCJ1bmRlZmluZWRcIiAhPT0gdHlwZW9mIHZhbHVlLmdldERhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzQmxvYih2YWx1ZTogYW55KTogdmFsdWUgaXMgQmxvYiB7XHJcbiAgICAgICAgcmV0dXJuIChoYXNCbG9iICYmIHZhbHVlIGluc3RhbmNlb2YgQmxvYikgfHwgKGhhc0ZpbGUgJiYgdmFsdWUgaW5zdGFuY2VvZiBGaWxlKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNCb29sZWFuKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mKHZhbHVlKSA9PSB0eXBlb2YodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzTnVtYmVyKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBudW1iZXIge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwibnVtYmVyXCIpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBjb25zdCBudW0gPSArdmFsdWU7XHJcbiAgICAgICAgaWYgKChudW0gLSBudW0pICE9PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG51bSA9PT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0FycmF5KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBBcnJheTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzU2V0KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBTZXQ8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgU2V0O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBjaGVja0ludGVyZmFjZShvYmo6IGFueSwgaW50ZXJGYWNlT2JqZWN0OiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuaXNJbnRlcmZhY2Uob2JqLCBpbnRlckZhY2VPYmplY3QpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0ludGVyZmFjZShvYmo6IGFueSwgaW50ZXJGYWNlT2JqZWN0OiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIW9iaiB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiIHx8IE9iamVjdFV0aWxzLmlzQXJyYXkob2JqKSB8fCAhT2JqZWN0VXRpbHMuaXNPYmplY3QoaW50ZXJGYWNlT2JqZWN0KSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhpbnRlckZhY2VPYmplY3QpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcclxuICAgICAgICAgICAgbGV0IHR5cGUgPSBpbnRlckZhY2VPYmplY3Rba2V5XSB8fCBcIlwiO1xyXG4gICAgICAgICAgICBpZiAodHlwZS5zdGFydHNXaXRoKFwiKlwiKSkge1xyXG4gICAgICAgICAgICAgICAgdHlwZSA9IHR5cGUuc3Vic3RyKDEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIE9iamVjdFV0aWxzLmdldFR5cGUob2JqW2tleV0pICE9PSB0eXBlKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIW9iai5oYXNPd25Qcm9wZXJ0eShrZXkpIHx8IE9iamVjdFV0aWxzLmdldFR5cGUob2JqW2tleV0pICE9PSB0eXBlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHBhZChvYmo6IGFueSwgd2lkdGg6IG51bWJlciwgY2hyOiBzdHJpbmcgPSBcIjBcIik6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3Qgc3RyID0gT2JqZWN0VXRpbHMuaXNEZWZpbmVkKG9iaikgPyBvYmoudG9TdHJpbmcoKSA6IFwiXCI7XHJcbiAgICAgICAgcmV0dXJuIHN0ci5sZW5ndGggPj0gd2lkdGggPyBzdHIgOiBuZXcgQXJyYXkod2lkdGggLSBzdHIubGVuZ3RoICsgMSkuam9pbihjaHIpICsgc3RyO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIGNvcHlSZWN1cnNpdmUodGFyZ2V0OiBhbnksIHNvdXJjZTogYW55LCBwcmVkaWNhdGU6IEZpbHRlclByZWRpY2F0ZSwgY29waWVzOiBNYXA8YW55LCBhbnk+KTogYW55IHtcclxuICAgICAgICBwcmVkaWNhdGUgPSBwcmVkaWNhdGUgfHwgZGVmYXVsdFByZWRpY2F0ZTtcclxuICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNQcmltaXRpdmUoc291cmNlKSB8fCBPYmplY3RVdGlscy5pc0RhdGUoc291cmNlKSB8fCBPYmplY3RVdGlscy5pc0Jsb2Ioc291cmNlKSB8fCBPYmplY3RVdGlscy5pc0Z1bmN0aW9uKHNvdXJjZSkpIHJldHVybiBzb3VyY2U7XHJcbiAgICAgICAgaWYgKCFjb3BpZXMuaGFzKHNvdXJjZSkpIHtcclxuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzQXJyYXkoc291cmNlKSkge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0ID0gT2JqZWN0VXRpbHMuaXNBcnJheSh0YXJnZXQpID8gQXJyYXkuZnJvbSh0YXJnZXQpIDogW107XHJcbiAgICAgICAgICAgICAgICBjb3BpZXMuc2V0KHNvdXJjZSwgdGFyZ2V0KTtcclxuICAgICAgICAgICAgICAgIHNvdXJjZS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcHJlZGljYXRlKGl0ZW0sIGluZGV4LCB0YXJnZXQsIHNvdXJjZSkpIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0Lmxlbmd0aCA+IGluZGV4KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRbaW5kZXhdID0gT2JqZWN0VXRpbHMuY29weVJlY3Vyc2l2ZSh0YXJnZXRbaW5kZXhdLCBpdGVtLCBwcmVkaWNhdGUsIGNvcGllcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQucHVzaChPYmplY3RVdGlscy5jb3B5UmVjdXJzaXZlKG51bGwsIGl0ZW0sIHByZWRpY2F0ZSwgY29waWVzKSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldCA9IE9iamVjdC5hc3NpZ24oe30sIHRhcmdldCk7XHJcbiAgICAgICAgICAgICAgICBjb3BpZXMuc2V0KHNvdXJjZSwgdGFyZ2V0KTtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHNvdXJjZSkuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmVkaWNhdGUoc291cmNlW2tleV0sIGtleSwgdGFyZ2V0LCBzb3VyY2UpKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBPYmplY3RVdGlscy5jb3B5UmVjdXJzaXZlKHRhcmdldFtrZXldLCBzb3VyY2Vba2V5XSwgcHJlZGljYXRlLCBjb3BpZXMpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNvcGllcy5nZXQoc291cmNlKTtcclxuICAgIH1cclxufVxyXG4iXX0=
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy91dGlscy9vYmplY3QudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxnQkFBZ0IsR0FBb0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQ3JELE1BQU0sT0FBTyxHQUFHLE9BQU8sSUFBSSxLQUFLLFdBQVcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3RELE1BQU0sT0FBTyxHQUFHLE9BQU8sSUFBSSxLQUFLLFdBQVcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO0FBRXRELE1BQU0sT0FBTyxXQUFXO0lBRXBCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBTSxFQUFFLENBQU07UUFDekIsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRTtZQUN0RCxPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUU7WUFDdkIsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvQjthQUFNO1lBQ0gsSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFO2dCQUNuQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNoQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ25CO1lBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNQLE9BQU8sQ0FBQyxDQUFDO2FBQ1o7aUJBQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNkLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDYjtZQUNELE9BQU8sQ0FBQyxDQUFDO1NBQ1o7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLGFB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QUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNuQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDM0IsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7d0JBQUUsT0FBTztvQkFDekQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ3pGLENBQUMsQ0FBQyxDQUFDO2FBQ047U0FDSjtRQUNELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBGaWx0ZXJQcmVkaWNhdGUgPSAodmFsdWU6IGFueSwga2V5PzogYW55LCB0YXJnZXQ/OiBhbnksIHNvdXJjZT86IGFueSkgPT4gYm9vbGVhbjtcclxuZXhwb3J0IHR5cGUgSXRlcmF0ZUNhbGxiYWNrID0gKHZhbHVlOiBhbnksIGtleT86IGFueSkgPT4gdm9pZDtcclxuXHJcbmNvbnN0IGRlZmF1bHRQcmVkaWNhdGU6IEZpbHRlclByZWRpY2F0ZSA9ICgpID0+IHRydWU7XHJcbmNvbnN0IGhhc0Jsb2IgPSB0eXBlb2YgQmxvYiAhPT0gXCJ1bmRlZmluZWRcIiAmJiAhIUJsb2I7XHJcbmNvbnN0IGhhc0ZpbGUgPSB0eXBlb2YgRmlsZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiAhIUZpbGU7XHJcblxyXG5leHBvcnQgY2xhc3MgT2JqZWN0VXRpbHMge1xyXG5cclxuICAgIHN0YXRpYyBjb21wYXJlKGE6IGFueSwgYjogYW55KTogbnVtYmVyIHtcclxuICAgICAgICBpZiAoKGEgPT09IG51bGwgfHwgYiA9PT0gbnVsbCkgfHwgKHR5cGVvZiBhICE9IHR5cGVvZiBiKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiBhID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoYSkubG9jYWxlQ29tcGFyZShiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgICAgICAgICAgIGEgPSBhLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgICAgIGIgPSBiLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYSA+IGIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGEgPCBiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRQcm9wZXJ0aWVzKG9iajogYW55KTogc3RyaW5nW10ge1xyXG4gICAgICAgIGlmICghT2JqZWN0VXRpbHMuaXNPYmplY3Qob2JqKSAmJiAhT2JqZWN0VXRpbHMuaXNGdW5jdGlvbihvYmopKSByZXR1cm4gW107XHJcbiAgICAgICAgY29uc3QgcHJvcHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuICAgICAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2gocCA9PiBwcm9wcy5hZGQocCkpO1xyXG4gICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikuZm9yRWFjaChwID0+IHByb3BzLmFkZChwKSk7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20ocHJvcHMpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBlcXVhbHMoYTogYW55LCBiOiBhbnksIHZpc2l0ZWQ6IFNldDxhbnk+ID0gbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHZpc2l0ZWQgPSB2aXNpdGVkIHx8IG5ldyBTZXQoKTtcclxuICAgICAgICBpZiAodmlzaXRlZC5oYXMoYSkgJiYgdmlzaXRlZC5oYXMoYikpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmIChhID09PSBiKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAoYSA9PT0gbnVsbCB8fCBiID09PSBudWxsKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKGEgIT09IGEgJiYgYiAhPT0gYikgcmV0dXJuIHRydWU7IC8vIE5hTiA9PT0gTmFOXHJcbiAgICAgICAgY29uc3QgYXQgPSB0eXBlb2YgYSwgYnQgPSB0eXBlb2YgYjtcclxuICAgICAgICBsZXQgbGVuZ3RoOiBudW1iZXIsIGtleTogYW55LCBrZXlTZXQ6IGFueTtcclxuICAgICAgICBpZiAoYXQgPT0gYnQgJiYgYXQgPT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgICAgICB2aXNpdGVkLmFkZChhKTtcclxuICAgICAgICAgICAgdmlzaXRlZC5hZGQoYik7XHJcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGEpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYikpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmICgobGVuZ3RoID0gYS5sZW5ndGgpID09IGIubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChrZXkgPSAwOyBrZXkgPCBsZW5ndGg7IGtleSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghT2JqZWN0VXRpbHMuZXF1YWxzKGFba2V5XSwgYltrZXldLCB2aXNpdGVkKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAga2V5U2V0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgICAgICAgICAgICAgIGZvciAoa2V5IGluIGEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghT2JqZWN0VXRpbHMuZXF1YWxzKGFba2V5XSwgYltrZXldLCB2aXNpdGVkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleVNldFtrZXldID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBmb3IgKGtleSBpbiBiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGIuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAhKGtleSBpbiBrZXlTZXQpICYmIHR5cGVvZiBiW2tleV0gIT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZXZhbHVhdGUoZXhwcjogc3RyaW5nLCBjb250ZXh0OiBhbnkgPSB7fSwgcmVzOiBhbnkgPSB7fSk6IGFueSB7XHJcbiAgICAgICAgZXhwciA9IE9iamVjdC5rZXlzKGNvbnRleHQpLnJlZHVjZSgocmVzLCBrZXkpID0+IGB2YXIgJHtrZXl9ID0gdGhpc1snJHtrZXl9J107XFxuJHtyZXN9YCwgZXhwcik7XHJcbiAgICAgICAgY29uc3QgbGluZXMgPSBleHByLnNwbGl0KFwiXFxuXCIpO1xyXG4gICAgICAgIGNvbnN0IGxhc3RMaW5lID0gXCJyZXR1cm4gXCIgKyBsaW5lcy5wb3AoKS5yZXBsYWNlKFwicmV0dXJuIFwiLCBcIlwiKTtcclxuICAgICAgICBsaW5lcy5wdXNoKGxhc3RMaW5lKTtcclxuICAgICAgICBleHByID0gbGluZXMuam9pbihcIlxcblwiKTtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXN1bHQgPSBuZXcgRnVuY3Rpb24oZXhwcikuY2FsbChjb250ZXh0KTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHJlcy5leGNlcHRpb24gPSBlO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIHBhcnNlIGV4cHJlc3Npb246ICR7ZS5tZXNzYWdlfWAsIGV4cHIsIGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXMucmVzdWx0ID0gcmVzdWx0O1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGVtcHR5KG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICFvYmogfHwgT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT0gMDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXRlcmF0ZShvYmo6IGFueSwgY2I6IEl0ZXJhdGVDYWxsYmFjayk6IHZvaWQge1xyXG4gICAgICAgIGlmICghb2JqKSByZXR1cm47XHJcbiAgICAgICAgY29uc3Qga2V5czogYW55W10gPSBBcnJheS5pc0FycmF5KG9iaikgPyBBcnJheS5mcm9tKG9iai5rZXlzKCkpIDogT2JqZWN0LmtleXMob2JqKTtcclxuICAgICAgICBrZXlzLmZvckVhY2goXHJcbiAgICAgICAgICAgIC8vIEBkeW5hbWljXHJcbiAgICAgICAgICAgIGtleSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjYihvYmpba2V5XSwga2V5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGdldFZhbHVlKG9iajogYW55LCBrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogYW55LCB0cmVlRmFsbGJhY2s6IGJvb2xlYW4gPSBmYWxzZSk6IGFueSB7XHJcbiAgICAgICAga2V5ID0ga2V5IHx8IFwiXCI7XHJcbiAgICAgICAgY29uc3Qga2V5cyA9IGtleS5zcGxpdChcIi5cIik7XHJcbiAgICAgICAgbGV0IGN1cktleSA9IFwiXCI7XHJcbiAgICAgICAgZG8ge1xyXG4gICAgICAgICAgICBjdXJLZXkgKz0ga2V5cy5zaGlmdCgpO1xyXG4gICAgICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNEZWZpbmVkKG9iaikgJiYgT2JqZWN0VXRpbHMuaXNEZWZpbmVkKG9ialtjdXJLZXldKSAmJiAodHlwZW9mIG9ialtjdXJLZXldID09PSBcIm9iamVjdFwiIHx8ICFrZXlzLmxlbmd0aCkpIHtcclxuICAgICAgICAgICAgICAgIG9iaiA9IG9ialtjdXJLZXldO1xyXG4gICAgICAgICAgICAgICAgY3VyS2V5ID0gXCJcIjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICgha2V5cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IHR5cGVvZiBkZWZhdWx0VmFsdWUgPT0gXCJ1bmRlZmluZWRcIiA/IGtleS5yZXBsYWNlKG5ldyBSZWdFeHAoYCR7Y3VyS2V5fSRgKSwgYHske2N1cktleX19YCkgOiBkZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgICAgICAgICBvYmogPSB0cmVlRmFsbGJhY2sgPyBvYmogfHwgZGVmYXVsdFZhbHVlIDogZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY3VyS2V5ICs9IFwiLlwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSB3aGlsZSAoa2V5cy5sZW5ndGgpO1xyXG4gICAgICAgIHJldHVybiBvYmo7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIG1hcFRvUGF0aCh0YXJnZXQ6IGFueSwgc291cmNlOiBhbnksIHBhdGg6IHN0cmluZ1tdKTogYW55IHtcclxuICAgICAgICBpZiAodHlwZW9mIHNvdXJjZSA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIHRhcmdldDtcclxuICAgICAgICBpZiAocGF0aC5sZW5ndGggPT0gMCkgcmV0dXJuIHNvdXJjZTtcclxuICAgICAgICBjb25zdCBrZXk6IGFueSA9IHBhdGguc2hpZnQoKTtcclxuICAgICAgICBpZiAoa2V5ID09IFwiKlwiKSB7XHJcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc0FycmF5KHNvdXJjZSkpIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldCA9IE9iamVjdFV0aWxzLmlzQXJyYXkodGFyZ2V0KSA/IHRhcmdldCA6IFtdO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLm1hcFRvUGF0aCh0YXJnZXRbaW5kZXhdLCBpdGVtLCBBcnJheS5mcm9tKHBhdGgpKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlscy5pc09iamVjdChzb3VyY2UpKSB7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQgPSBPYmplY3RVdGlscy5pc09iamVjdCh0YXJnZXQpID8gdGFyZ2V0IDoge307XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoc291cmNlKS5yZWR1Y2UoKHJlc3VsdCwga2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBPYmplY3RVdGlscy5tYXBUb1BhdGgodGFyZ2V0W2tleV0sIHNvdXJjZVtrZXldLCBBcnJheS5mcm9tKHBhdGgpKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgfSwge30pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBPYmplY3RVdGlscy5pc051bGxPclVuZGVmaW5lZCh0YXJnZXQpID8gbnVsbCA6IHRhcmdldDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaXNBcnJheSA9IE9iamVjdFV0aWxzLmlzQXJyYXkodGFyZ2V0KTtcclxuICAgICAgICB0YXJnZXQgPSBPYmplY3RVdGlscy5pc09iamVjdCh0YXJnZXQpIHx8IGlzQXJyYXkgPyB0YXJnZXQgOiB7fTtcclxuICAgICAgICB0YXJnZXRba2V5XSA9IE9iamVjdFV0aWxzLm1hcFRvUGF0aCh0YXJnZXRba2V5XSwgc291cmNlLCBBcnJheS5mcm9tKHBhdGgpKTtcclxuICAgICAgICByZXR1cm4gaXNOYU4oa2V5KSB8fCBpc0FycmF5ID8gdGFyZ2V0IDogT2JqZWN0LnZhbHVlcyh0YXJnZXQpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBmaWx0ZXIob2JqOiBhbnksIHByZWRpY2F0ZTogRmlsdGVyUHJlZGljYXRlKTogYW55IHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuY29weVJlY3Vyc2l2ZShudWxsLCBvYmosIHByZWRpY2F0ZSwgbmV3IE1hcCgpKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgY29weTxUPihvYmo6IFQpOiBUIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuY29weVJlY3Vyc2l2ZShudWxsLCBvYmosIG51bGwsIG5ldyBNYXAoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGFzc2lnbjxUPih0YXJnZXQ6IFQsIHNvdXJjZTogYW55LCBwcmVkaWNhdGU/OiBGaWx0ZXJQcmVkaWNhdGUpOiBUIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuY29weVJlY3Vyc2l2ZSh0YXJnZXQsIHNvdXJjZSwgcHJlZGljYXRlLCBuZXcgTWFwKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRUeXBlKG9iajogYW55KTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoXCJcXFxccyhbYS16QS1aXSspXCIpO1xyXG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKS5tYXRjaChyZWdleClbMV0udG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNQcmltaXRpdmUodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlID09IG51bGwgfHwgKHR5cGUgIT09IFwib2JqZWN0XCIgJiYgdHlwZSAhPT0gXCJmdW5jdGlvblwiKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNPYmplY3QodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBPYmplY3RVdGlscy5nZXRUeXBlKHZhbHVlKSA9PT0gXCJvYmplY3RcIjtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNEZWZpbmVkKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlICE9PSBcInVuZGVmaW5lZFwiICYmIHZhbHVlICE9PSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc051bGxPclVuZGVmaW5lZCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSBcInVuZGVmaW5lZFwiIHx8IHZhbHVlID09IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzU3RyaW5nKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCI7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzRnVuY3Rpb24odmFsdWU6IGFueSk6IHZhbHVlIGlzIEZ1bmN0aW9uIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCI7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzRGF0ZSh2YWx1ZTogYW55KTogdmFsdWUgaXMgRGF0ZSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGwgIT09IHZhbHVlICYmICFpc05hTih2YWx1ZSkgJiYgXCJ1bmRlZmluZWRcIiAhPT0gdHlwZW9mIHZhbHVlLmdldERhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzQmxvYih2YWx1ZTogYW55KTogdmFsdWUgaXMgQmxvYiB7XHJcbiAgICAgICAgcmV0dXJuIChoYXNCbG9iICYmIHZhbHVlIGluc3RhbmNlb2YgQmxvYikgfHwgKGhhc0ZpbGUgJiYgdmFsdWUgaW5zdGFuY2VvZiBGaWxlKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNCb29sZWFuKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mKHZhbHVlKSA9PSB0eXBlb2YodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzTnVtYmVyKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBudW1iZXIge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwibnVtYmVyXCIpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBjb25zdCBudW0gPSArdmFsdWU7XHJcbiAgICAgICAgaWYgKChudW0gLSBudW0pICE9PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG51bSA9PT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0FycmF5KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBBcnJheTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzU2V0KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBTZXQ8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgU2V0O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBjaGVja0ludGVyZmFjZShvYmo6IGFueSwgaW50ZXJGYWNlT2JqZWN0OiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuaXNJbnRlcmZhY2Uob2JqLCBpbnRlckZhY2VPYmplY3QpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0ludGVyZmFjZShvYmo6IGFueSwgaW50ZXJGYWNlT2JqZWN0OiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIW9iaiB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiIHx8IE9iamVjdFV0aWxzLmlzQXJyYXkob2JqKSB8fCAhT2JqZWN0VXRpbHMuaXNPYmplY3QoaW50ZXJGYWNlT2JqZWN0KSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhpbnRlckZhY2VPYmplY3QpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcclxuICAgICAgICAgICAgbGV0IHR5cGUgPSBpbnRlckZhY2VPYmplY3Rba2V5XSB8fCBcIlwiO1xyXG4gICAgICAgICAgICBpZiAodHlwZS5zdGFydHNXaXRoKFwiKlwiKSkge1xyXG4gICAgICAgICAgICAgICAgdHlwZSA9IHR5cGUuc3Vic3RyKDEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIE9iamVjdFV0aWxzLmdldFR5cGUob2JqW2tleV0pICE9PSB0eXBlKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIW9iai5oYXNPd25Qcm9wZXJ0eShrZXkpIHx8IE9iamVjdFV0aWxzLmdldFR5cGUob2JqW2tleV0pICE9PSB0eXBlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHBhZChvYmo6IGFueSwgd2lkdGg6IG51bWJlciwgY2hyOiBzdHJpbmcgPSBcIjBcIik6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3Qgc3RyID0gT2JqZWN0VXRpbHMuaXNEZWZpbmVkKG9iaikgPyBvYmoudG9TdHJpbmcoKSA6IFwiXCI7XHJcbiAgICAgICAgcmV0dXJuIHN0ci5sZW5ndGggPj0gd2lkdGggPyBzdHIgOiBuZXcgQXJyYXkod2lkdGggLSBzdHIubGVuZ3RoICsgMSkuam9pbihjaHIpICsgc3RyO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIGNvcHlSZWN1cnNpdmUodGFyZ2V0OiBhbnksIHNvdXJjZTogYW55LCBwcmVkaWNhdGU6IEZpbHRlclByZWRpY2F0ZSwgY29waWVzOiBNYXA8YW55LCBhbnk+KTogYW55IHtcclxuICAgICAgICBwcmVkaWNhdGUgPSBwcmVkaWNhdGUgfHwgZGVmYXVsdFByZWRpY2F0ZTtcclxuICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNQcmltaXRpdmUoc291cmNlKSB8fCBPYmplY3RVdGlscy5pc0RhdGUoc291cmNlKSB8fCBPYmplY3RVdGlscy5pc0Jsb2Ioc291cmNlKSB8fCBPYmplY3RVdGlscy5pc0Z1bmN0aW9uKHNvdXJjZSkpIHJldHVybiBzb3VyY2U7XHJcbiAgICAgICAgaWYgKCFjb3BpZXMuaGFzKHNvdXJjZSkpIHtcclxuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzQXJyYXkoc291cmNlKSkge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0ID0gT2JqZWN0VXRpbHMuaXNBcnJheSh0YXJnZXQpID8gQXJyYXkuZnJvbSh0YXJnZXQpIDogW107XHJcbiAgICAgICAgICAgICAgICBjb3BpZXMuc2V0KHNvdXJjZSwgdGFyZ2V0KTtcclxuICAgICAgICAgICAgICAgIHNvdXJjZS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcHJlZGljYXRlKGl0ZW0sIGluZGV4LCB0YXJnZXQsIHNvdXJjZSkpIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0Lmxlbmd0aCA+IGluZGV4KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRbaW5kZXhdID0gT2JqZWN0VXRpbHMuY29weVJlY3Vyc2l2ZSh0YXJnZXRbaW5kZXhdLCBpdGVtLCBwcmVkaWNhdGUsIGNvcGllcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQucHVzaChPYmplY3RVdGlscy5jb3B5UmVjdXJzaXZlKG51bGwsIGl0ZW0sIHByZWRpY2F0ZSwgY29waWVzKSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldCA9IE9iamVjdC5hc3NpZ24oe30sIHRhcmdldCk7XHJcbiAgICAgICAgICAgICAgICBjb3BpZXMuc2V0KHNvdXJjZSwgdGFyZ2V0KTtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHNvdXJjZSkuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmVkaWNhdGUoc291cmNlW2tleV0sIGtleSwgdGFyZ2V0LCBzb3VyY2UpKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBPYmplY3RVdGlscy5jb3B5UmVjdXJzaXZlKHRhcmdldFtrZXldLCBzb3VyY2Vba2V5XSwgcHJlZGljYXRlLCBjb3BpZXMpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNvcGllcy5nZXQoc291cmNlKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,6 +1,6 @@
1
- import { InjectionToken, TemplateRef, Injectable, Inject, PLATFORM_ID, Injector, NgZone, Optional, EventEmitter, isDevMode, ErrorHandler, Pipe, ChangeDetectorRef, Input, Output, HostBinding, HostListener, Directive, ElementRef, Renderer2, ViewContainerRef, Component, ContentChildren, ViewChild, ContentChild, APP_INITIALIZER, NgModule } from '@angular/core';
1
+ import { InjectionToken, TemplateRef, Injectable, Inject, PLATFORM_ID, Injector, NgZone, Optional, EventEmitter, isDevMode, ErrorHandler, Pipe, ChangeDetectorRef, Directive, Input, Output, HostBinding, HostListener, ElementRef, Renderer2, ViewContainerRef, Component, ContentChildren, ViewChild, ContentChild, APP_INITIALIZER, NgModule } from '@angular/core';
2
2
  import 'reflect-metadata';
3
- import { utc } from 'moment';
3
+ import moment from 'moment';
4
4
  import { first, skipWhile, mergeMap, timeout, map } from 'rxjs/operators';
5
5
  import { Subject, BehaviorSubject, Observable, Subscription, from, TimeoutError, combineLatest } from 'rxjs';
6
6
  import { Invokable } from 'invokable';
@@ -15,8 +15,8 @@ import { FormsModule } from '@angular/forms';
15
15
 
16
16
  const defaultPredicate = () => true;
17
17
  const ɵ0 = defaultPredicate;
18
- const hasBlob = typeof Blob !== "undefined";
19
- const hasFile = typeof File !== "undefined";
18
+ const hasBlob = typeof Blob !== "undefined" && !!Blob;
19
+ const hasFile = typeof File !== "undefined" && !!File;
20
20
  class ObjectUtils {
21
21
  static compare(a, b) {
22
22
  if ((a === null || b === null) || (typeof a != typeof b)) {
@@ -472,21 +472,22 @@ AjaxRequestHandler.isOverridden = false;
472
472
 
473
473
  class DateUtils {
474
474
  static isHoliday(date) {
475
- return utc(date).isoWeekday() > 5;
475
+ return moment(date).isoWeekday() > 5;
476
476
  }
477
477
  static isBusinessDay(date) {
478
- return utc(date).isoWeekday() < 6;
478
+ return moment(date).isoWeekday() < 6;
479
479
  }
480
480
  static add(date, amount, unit) {
481
- return utc(date).add(amount, unit).toDate();
481
+ return moment(date).add(amount, unit).toDate();
482
482
  }
483
- static businessAdd(date, amount, unit) {
483
+ static businessAdd(date, amount, unit, freeDays = []) {
484
484
  const signal = amount < 0 ? -1 : 1;
485
+ const freeMoments = freeDays.map(d => moment(d));
485
486
  let remaining = Math.abs(amount);
486
487
  let day = date;
487
488
  while (remaining) {
488
489
  day = DateUtils.add(day, signal, unit);
489
- if (DateUtils.isBusinessDay(day)) {
490
+ if (DateUtils.isBusinessDay(day) && !freeMoments.some(m => m.isSame(day, "day"))) {
490
491
  remaining--;
491
492
  }
492
493
  }
@@ -1273,7 +1274,7 @@ class UniversalService {
1273
1274
  this.platformId = platformId;
1274
1275
  this.dds = dds;
1275
1276
  const info = this.dds.getDeviceInfo();
1276
- this.crawler = /(bot|google|baidu|bing|msn|duckduckbot|teoma|slurp|yandex|lighthouse|angular-universal|PTST)/gi.test(info.userAgent);
1277
+ this.crawler = /(bot|google|baidu|bing|msn|duckduckbot|teoma|slurp|yandex|lighthouse|angular-universal|PTST|PostmanRuntime)/gi.test(info.userAgent);
1277
1278
  }
1278
1279
  get isBrowser() {
1279
1280
  return isPlatformBrowser(this.platformId);
@@ -3705,7 +3706,7 @@ RemapPipe.decorators = [
3705
3706
 
3706
3707
  class ReplacePipe {
3707
3708
  transform(value, from, to) {
3708
- return value ? value.replace(from, to) : value;
3709
+ return ObjectUtils.isDefined(value) ? `${value}`.replace(from, to) : ``;
3709
3710
  }
3710
3711
  }
3711
3712
  ReplacePipe.decorators = [
@@ -3907,6 +3908,9 @@ class AsyncMethodBase {
3907
3908
  get isLoading() {
3908
3909
  return this.loading;
3909
3910
  }
3911
+ getMethod() {
3912
+ return null;
3913
+ }
3910
3914
  click() {
3911
3915
  if (this.disabled)
3912
3916
  return;
@@ -3938,6 +3942,14 @@ class AsyncMethodBase {
3938
3942
  return true;
3939
3943
  }
3940
3944
  }
3945
+ AsyncMethodBase.decorators = [
3946
+ { type: Directive, args: [{
3947
+ selector: "[_abstract_asyncMethodBase]"
3948
+ },] }
3949
+ ];
3950
+ AsyncMethodBase.ctorParameters = () => [
3951
+ { type: undefined, decorators: [{ type: Inject, args: [TOASTER_SERVICE,] }] }
3952
+ ];
3941
3953
  AsyncMethodBase.propDecorators = {
3942
3954
  disabled: [{ type: Input }],
3943
3955
  context: [{ type: Input }],
@@ -3949,9 +3961,6 @@ AsyncMethodBase.propDecorators = {
3949
3961
  };
3950
3962
 
3951
3963
  class AsyncMethodDirective extends AsyncMethodBase {
3952
- constructor(toaster) {
3953
- super(toaster);
3954
- }
3955
3964
  getMethod() {
3956
3965
  return this.method;
3957
3966
  }
@@ -3962,9 +3971,6 @@ AsyncMethodDirective.decorators = [
3962
3971
  exportAs: "async-method"
3963
3972
  },] }
3964
3973
  ];
3965
- AsyncMethodDirective.ctorParameters = () => [
3966
- { type: undefined, decorators: [{ type: Inject, args: [TOASTER_SERVICE,] }] }
3967
- ];
3968
3974
  AsyncMethodDirective.propDecorators = {
3969
3975
  method: [{ type: Input, args: ["async-method",] }]
3970
3976
  };
@@ -4397,6 +4403,39 @@ StickyDirective.propDecorators = {
4397
4403
  updateSticky: [{ type: HostListener, args: ["window:resize",] }, { type: HostListener, args: ["window:scroll",] }]
4398
4404
  };
4399
4405
 
4406
+ class StickyClassDirective {
4407
+ constructor(events, element, renderer) {
4408
+ this.events = events;
4409
+ this.element = element;
4410
+ this.renderer = renderer;
4411
+ }
4412
+ ngOnInit() {
4413
+ this.stickyUpdated = this.events.stickyUpdated.subscribe(() => {
4414
+ if (this.events.isSticky) {
4415
+ this.renderer.addClass(this.element.nativeElement, this.stickyClass || "sticky-sibling");
4416
+ return;
4417
+ }
4418
+ this.renderer.removeClass(this.element.nativeElement, this.stickyClass || "sticky-sibling");
4419
+ });
4420
+ }
4421
+ ngOnDestroy() {
4422
+ this.stickyUpdated.unsubscribe();
4423
+ }
4424
+ }
4425
+ StickyClassDirective.decorators = [
4426
+ { type: Directive, args: [{
4427
+ selector: "[stickyClass]"
4428
+ },] }
4429
+ ];
4430
+ StickyClassDirective.ctorParameters = () => [
4431
+ { type: EventsService },
4432
+ { type: ElementRef },
4433
+ { type: Renderer2 }
4434
+ ];
4435
+ StickyClassDirective.propDecorators = {
4436
+ stickyClass: [{ type: Input }]
4437
+ };
4438
+
4400
4439
  class UnorderedListItemDirective {
4401
4440
  constructor(elementRef, renderer, viewContainer) {
4402
4441
  this.elementRef = elementRef;
@@ -4762,39 +4801,6 @@ PaginationMenuComponent.propDecorators = {
4762
4801
  boundaryLinks: [{ type: Input }]
4763
4802
  };
4764
4803
 
4765
- class StickyClassDirective {
4766
- constructor(events, element, renderer) {
4767
- this.events = events;
4768
- this.element = element;
4769
- this.renderer = renderer;
4770
- }
4771
- ngOnInit() {
4772
- this.stickyUpdated = this.events.stickyUpdated.subscribe(() => {
4773
- if (this.events.isSticky) {
4774
- this.renderer.addClass(this.element.nativeElement, this.stickyClass || "sticky-sibling");
4775
- return;
4776
- }
4777
- this.renderer.removeClass(this.element.nativeElement, this.stickyClass || "sticky-sibling");
4778
- });
4779
- }
4780
- ngOnDestroy() {
4781
- this.stickyUpdated.unsubscribe();
4782
- }
4783
- }
4784
- StickyClassDirective.decorators = [
4785
- { type: Directive, args: [{
4786
- selector: "[stickyClass]"
4787
- },] }
4788
- ];
4789
- StickyClassDirective.ctorParameters = () => [
4790
- { type: EventsService },
4791
- { type: ElementRef },
4792
- { type: Renderer2 }
4793
- ];
4794
- StickyClassDirective.propDecorators = {
4795
- stickyClass: [{ type: Input }]
4796
- };
4797
-
4798
4804
  // --- Pipes ---
4799
4805
  const pipes = [
4800
4806
  ChunkPipe,
@@ -4827,6 +4833,7 @@ const pipes = [
4827
4833
  ];
4828
4834
  // --- Directives ---
4829
4835
  const directives = [
4836
+ AsyncMethodBase,
4830
4837
  AsyncMethodDirective,
4831
4838
  BackgroundDirective,
4832
4839
  DynamicTableTemplateDirective,
@@ -4970,5 +4977,5 @@ NgxUtilsModule.decorators = [
4970
4977
  * Generated bundle index. Do not edit.
4971
4978
  */
4972
4979
 
4973
- export { API_SERVICE, AUTH_SERVICE, AclService, AjaxRequestHandler, ApiService, ArrayUtils, AsyncMethodBase, AsyncMethodDirective, AuthGuard, BASE_CONFIG, BackgroundDirective, BaseHttpClient, BaseHttpService, CONFIG_SERVICE, CanvasColor, CanvasUtils, ChunkPipe, Circle, ConfigService, ConsoleToasterService, DateUtils, DynamicTableComponent, DynamicTableTemplateDirective, ERROR_HANDLER, EXPRESS_REQUEST, EntriesPipe, ErrorHandlerService, EventsService, ExtraItemPropertiesPipe, FactoryDependencies, FileSystemEntry, FileUtils, FilterPipe, FindPipe, FormatNumberPipe, FormatterService, GLOBAL_TEMPLATES, GenericValue, GetOffsetPipe, GetTypePipe, GlobalTemplateDirective, GlobalTemplatePipe, GlobalTemplateService, GroupByPipe, HttpPromise, ICON_SERVICE, IConfiguration, IconDirective, IconService, Initializer, IsTypePipe, JoinPipe, KeysPipe, LANGUAGE_SERVICE, LanguageService, LoaderUtils, MapPipe, MathUtils, MaxPipe, MinPipe, NgxTemplateOutletDirective, NgxUtilsModule, ObjectUtils, ObservableUtils, OpenApiService, PROMISE_SERVICE, PaginationDirective, PaginationItemContext, PaginationItemDirective, PaginationMenuComponent, Point, PopPipe, PromiseService, ROOT_ELEMENT, Rect, ReducePipe, ReflectUtils, RemapPipe, ReplacePipe, ResizeEventPlugin, ResourceIfContext, ResourceIfDirective, ReversePipe, RoundPipe, SCRIPT_PARAMS, SafeHtmlPipe, ScrollEventPlugin, SetUtils, ShiftPipe, SplitPipe, StateService, StaticAuthService, StaticLanguageService, StickyDirective, StorageMode, StorageService, StringUtils, TOASTER_SERVICE, TimerUtils, TranslatePipe, TranslatedUrlSerializer, UniqueUtils, UniversalService, UnorderedListComponent, UnorderedListItemDirective, UnorderedListTemplateDirective, UnorederedListTemplate, ValuedPromise, ValuesPipe, Vector, pipes as ɵa, directives as ɵb, components as ɵc, providers as ɵd, loadConfig as ɵe, StickyClassDirective as ɵf };
4980
+ export { API_SERVICE, AUTH_SERVICE, AclService, AjaxRequestHandler, ApiService, ArrayUtils, AsyncMethodBase, AsyncMethodDirective, AuthGuard, BASE_CONFIG, BackgroundDirective, BaseHttpClient, BaseHttpService, CONFIG_SERVICE, CanvasColor, CanvasUtils, ChunkPipe, Circle, ConfigService, ConsoleToasterService, DateUtils, DynamicTableComponent, DynamicTableTemplateDirective, ERROR_HANDLER, EXPRESS_REQUEST, EntriesPipe, ErrorHandlerService, EventsService, ExtraItemPropertiesPipe, FactoryDependencies, FileSystemEntry, FileUtils, FilterPipe, FindPipe, FormatNumberPipe, FormatterService, GLOBAL_TEMPLATES, GenericValue, GetOffsetPipe, GetTypePipe, GlobalTemplateDirective, GlobalTemplatePipe, GlobalTemplateService, GroupByPipe, HttpPromise, ICON_SERVICE, IConfiguration, IconDirective, IconService, Initializer, IsTypePipe, JoinPipe, KeysPipe, LANGUAGE_SERVICE, LanguageService, LoaderUtils, MapPipe, MathUtils, MaxPipe, MinPipe, NgxTemplateOutletDirective, NgxUtilsModule, ObjectUtils, ObservableUtils, OpenApiService, PROMISE_SERVICE, PaginationDirective, PaginationItemContext, PaginationItemDirective, PaginationMenuComponent, Point, PopPipe, PromiseService, ROOT_ELEMENT, Rect, ReducePipe, ReflectUtils, RemapPipe, ReplacePipe, ResizeEventPlugin, ResourceIfContext, ResourceIfDirective, ReversePipe, RoundPipe, SCRIPT_PARAMS, SafeHtmlPipe, ScrollEventPlugin, SetUtils, ShiftPipe, SplitPipe, StateService, StaticAuthService, StaticLanguageService, StickyClassDirective, StickyDirective, StorageMode, StorageService, StringUtils, TOASTER_SERVICE, TimerUtils, TranslatePipe, TranslatedUrlSerializer, UniqueUtils, UniversalService, UnorderedListComponent, UnorderedListItemDirective, UnorderedListTemplateDirective, UnorederedListTemplate, ValuedPromise, ValuesPipe, Vector, pipes as ɵa, directives as ɵb, components as ɵc, providers as ɵd, loadConfig as ɵe };
4974
4981
  //# sourceMappingURL=stemy-ngx-utils.js.map