@infrab4a/connect-angular 2.0.6-beta.6 → 2.0.6-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -37,7 +37,7 @@ export class CheckoutService {
37
37
  return of();
38
38
  }
39
39
  calcDiscount(coupon) {
40
- return this.getCheckout().pipe(concatMap((checkout) => this.couponService.calcDiscountShopping(coupon, checkout).pipe()));
40
+ return this.getCheckout().pipe(concatMap((checkout) => this.couponService.calcDiscountShopping(coupon, checkout)));
41
41
  }
42
42
  checkCoupon(nickname, checkoutType) {
43
43
  return this.getCheckout().pipe(concatMap((checkout) => {
@@ -72,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImpo
72
72
  type: Inject,
73
73
  args: [DEFAULT_SHOP]
74
74
  }] }]; } });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2hlY2tvdXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUNMLFFBQVEsRUFFUixhQUFhLEVBRWIsS0FBSyxFQUNMLGFBQWEsRUFFYixJQUFJLEVBQ0osS0FBSyxFQUdOLE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxNQUFNLE1BQU0sV0FBVyxDQUFBO0FBQzlCLE9BQU8sRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7Ozs7QUFJaEQsTUFBTSxPQUFPLGVBQWU7SUFDMUIsWUFDbUIsYUFBNEIsRUFDRSxrQkFBc0MsRUFDekMsZUFBZ0MsRUFDakMsY0FBOEIsRUFDbEMsV0FBa0I7UUFKeEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDRSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3pDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDbEMsZ0JBQVcsR0FBWCxXQUFXLENBQU87SUFDeEQsQ0FBQztJQUVKLFdBQVcsQ0FBQyxZQUFtQztRQUM3QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBRTNDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTyxJQUFJLENB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LENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUN0RSxJQUFJLEVBQUUsQ0FBQSxZQUFZLGFBQVosWUFBWSx1QkFBWixZQUFZLENBQUUsSUFBSSxLQUFJLElBQUksQ0FBQyxXQUFXLElBQzVDLENBQUE7WUFFRixNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7WUFFckMsT0FBTyxRQUFRLENBQUE7UUFDakIsQ0FBQztLQUFBOzs2R0F6RVUsZUFBZSwrQ0FHaEIsb0JBQW9CLGFBQ3BCLGlCQUFpQixhQUNqQixnQkFBZ0IsYUFDaEIsWUFBWTtpSEFOWCxlQUFlOzRGQUFmLGVBQWU7a0JBRDNCLFVBQVU7OzBCQUlOLE1BQU07MkJBQUMsb0JBQW9COzswQkFDM0IsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLGdCQUFnQjs7MEJBQ3ZCLE1BQU07MkJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7XHJcbiAgQ2hlY2tvdXQsXHJcbiAgQ2hlY2tvdXRSZXBvc2l0b3J5LFxyXG4gIENoZWNrb3V0VHlwZXMsXHJcbiAgQ291cG9uLFxyXG4gIGlzTmlsLFxyXG4gIE5vdEZvdW5kRXJyb3IsXHJcbiAgT3JkZXJSZXBvc2l0b3J5LFxyXG4gIHBpY2ssXHJcbiAgU2hvcHMsXHJcbiAgVXNlcixcclxuICBVc2VyUmVwb3NpdG9yeVxyXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xyXG5pbXBvcnQgY29va2llIGZyb20gJ2pzLWNvb2tpZSdcclxuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBjb25jYXRNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcclxuXHJcbmltcG9ydCB7IERFRkFVTFRfU0hPUCB9IGZyb20gJy4uL2NvbnN0cydcclxuXHJcbmltcG9ydCB7IENvdXBvblNlcnZpY2UgfSBmcm9tICcuL2NvdXBvbi5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBSZXF1aXJlZENoZWNrb3V0RGF0YSB9IGZyb20gJy4vdHlwZXMnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDaGVja291dFNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3Vwb25TZXJ2aWNlOiBDb3Vwb25TZXJ2aWNlLFxyXG4gICAgQEluamVjdCgnQ2hlY2tvdXRSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjaGVja291dFJlcG9zaXRvcnk6IENoZWNrb3V0UmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoJ09yZGVyUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgb3JkZXJSZXBvc2l0b3J5OiBPcmRlclJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KCdVc2VyUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgdXNlclJlcG9zaXRvcnk6IFVzZXJSZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdChERUZBVUxUX1NIT1ApIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFNob3A6IFNob3BzLFxyXG4gICkge31cclxuXHJcbiAgZ2V0Q2hlY2tvdXQoY2hlY2tvdXREYXRhPzogUmVxdWlyZWRDaGVja291dERhdGEpOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XHJcbiAgICBjb25zdCBjaGVja291dElkID0gY29va2llLmdldCgnY2hlY2tvdXRJZCcpXHJcblxyXG4gICAgaWYgKCFpc05pbChjaGVja291dElkKSkgcmV0dXJuIGZyb20odGhpcy5jaGVja291dFJlcG9zaXRvcnkuZ2V0KHsgaWQ6IGNoZWNrb3V0SWQgfSkpXHJcblxyXG4gICAgcmV0dXJuIGZyb20odGhpcy5jcmVhdGVDaGVja291dChjaGVja291dERhdGEpKVxyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckJ5Q2hlY2tvdXQoY2hlY2tvdXRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxVc2VyPiB7XHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLmNoZWNrb3V0UmVwb3NpdG9yeS5nZXQoeyBpZDogY2hlY2tvdXRJZCB9KSkucGlwZShcclxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT5cclxuICAgICAgICBjaGVja291dD8udXNlcj8uaWQgPyBvZihjaGVja291dC51c2VyKSA6IGZyb20odGhpcy51c2VyUmVwb3NpdG9yeS5nZXQoeyBpZDogY2hlY2tvdXQudXNlci5pZCB9KSksXHJcbiAgICAgICksXHJcbiAgICAgIGNvbmNhdE1hcCgodXNlcikgPT4gb2YodXNlcikgfHwgdGhyb3dFcnJvcigoKSA9PiBuZXcgTm90Rm91bmRFcnJvcignVXNlciBpcyBub3QgZm91bmQnKSkpLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ2hlY2tvdXRMaW5lSXRlbXMoY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+KTogT2JzZXJ2YWJsZTxDaGVja291dD4ge1xyXG4gICAgcmV0dXJuIGZyb20odGhpcy5jaGVja291dFJlcG9zaXRvcnkudXBkYXRlKENoZWNrb3V0LnRvSW5zdGFuY2UoeyBpZDogY2hlY2tvdXQuaWQsIGxpbmVJdGVtczogY2hlY2tvdXQubGluZUl0ZW1zIH0pKSlcclxuICB9XHJcblxyXG4gIHVwZGF0ZUNoZWNrb3V0VXNlcihjaGVja291dDogUGFydGlhbDxDaGVja291dD4pOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLmNoZWNrb3V0UmVwb3NpdG9yeS51cGRhdGUoQ2hlY2tvdXQudG9JbnN0YW5jZSh7IGlkOiBjaGVja291dC5pZCwgdXNlcjogY2hlY2tvdXQudXNlciB9KSkpXHJcbiAgfVxyXG5cclxuICBjbGVhckNoZWNrb3V0RnJvbVNlc3Npb24oKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICBjb29raWUucmVtb3ZlKCdjaGVja291dElkJylcclxuXHJcbiAgICByZXR1cm4gb2YoKVxyXG4gIH1cclxuXHJcbiAgY2FsY0Rpc2NvdW50KGNvdXBvbjogQ291cG9uKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja291dCgpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+IHRoaXMuY291cG9uU2VydmljZS5jYWxjRGlzY291bnRTaG9wcGluZyhjb3Vwb24sIGNoZWNrb3V0KS5waXBlKCkpLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgY2hlY2tDb3Vwb24obmlja25hbWU6IHN0cmluZywgY2hlY2tvdXRUeXBlOiBDaGVja291dFR5cGVzKTogT2JzZXJ2YWJsZTxDb3Vwb24+IHtcclxuICAgIHJldHVybiB0aGlzLmdldENoZWNrb3V0KCkucGlwZShcclxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT5cclxuICAgICAgICB0aGlzLmNvdXBvblNlcnZpY2VcclxuICAgICAgICAgIC5jaGVja0NvdXBvbihcclxuICAgICAgICAgICAgbmlja25hbWUsXHJcbiAgICAgICAgICAgIGNoZWNrb3V0LnVzZXI/LmVtYWlsLFxyXG4gICAgICAgICAgICBDaGVja291dFR5cGVzLkVDT01NRVJDRSxcclxuICAgICAgICAgICAgY2hlY2tvdXQudXNlci5zdWJzY3JpcHRpb25QbGFuLFxyXG4gICAgICAgICAgICBjaGVja291dCxcclxuICAgICAgICAgICAgZmFsc2VcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5waXBlKCksXHJcbiAgICAgICksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZUNoZWNrb3V0KGNoZWNrb3V0RGF0YT86IFJlcXVpcmVkQ2hlY2tvdXREYXRhKTogUHJvbWlzZTxDaGVja291dD4ge1xyXG4gICAgY29uc3QgY2hlY2tvdXQgPSBhd2FpdCB0aGlzLmNoZWNrb3V0UmVwb3NpdG9yeS5jcmVhdGUoe1xyXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCksXHJcbiAgICAgIC4uLkNoZWNrb3V0LnRvSW5zdGFuY2UocGljayhjaGVja291dERhdGEsIFsndXNlcicsICdzaG9wJ10pKS50b1BsYWluKCksXHJcbiAgICAgIHNob3A6IGNoZWNrb3V0RGF0YT8uc2hvcCB8fCB0aGlzLmRlZmF1bHRTaG9wLFxyXG4gICAgfSlcclxuXHJcbiAgICBjb29raWUuc2V0KCdjaGVja291dElkJywgY2hlY2tvdXQuaWQpXHJcblxyXG4gICAgcmV0dXJuIGNoZWNrb3V0XHJcbiAgfVxyXG59XHJcbiJdfQ==
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2hlY2tvdXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUNMLFFBQVEsRUFFUixhQUFhLEVBRWIsS0FBSyxFQUNMLGFBQWEsRUFFYixJQUFJLEVBQ0osS0FBSyxFQUdOLE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxNQUFNLE1BQU0sV0FBVyxDQUFBO0FBQzlCLE9BQU8sRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7Ozs7QUFJaEQsTUFBTSxPQUFPLGVBQWU7SUFDMUIsWUFDbUIsYUFBNEIsRUFDRSxrQkFBc0MsRUFDekMsZUFBZ0MsRUFDakMsY0FBOEIsRUFDbEMsV0FBa0I7UUFKeEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDRSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3pDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDbEMsZ0JBQVcsR0FBWCxXQUFXLENBQU87SUFDeEQsQ0FBQztJQUVKLFdBQVcsQ0FBQyxZQUFtQztRQUM3QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBRTNDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQUUsT0FBTyxJQUFJLENB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LElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUN0RSxJQUFJLEVBQUUsQ0FBQSxZQUFZLGFBQVosWUFBWSx1QkFBWixZQUFZLENBQUUsSUFBSSxLQUFJLElBQUksQ0FBQyxXQUFXLElBQzVDLENBQUE7WUFFRixNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7WUFFckMsT0FBTyxRQUFRLENBQUE7UUFDakIsQ0FBQztLQUFBOzs2R0F6RVUsZUFBZSwrQ0FHaEIsb0JBQW9CLGFBQ3BCLGlCQUFpQixhQUNqQixnQkFBZ0IsYUFDaEIsWUFBWTtpSEFOWCxlQUFlOzRGQUFmLGVBQWU7a0JBRDNCLFVBQVU7OzBCQUlOLE1BQU07MkJBQUMsb0JBQW9COzswQkFDM0IsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLGdCQUFnQjs7MEJBQ3ZCLE1BQU07MkJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7XHJcbiAgQ2hlY2tvdXQsXHJcbiAgQ2hlY2tvdXRSZXBvc2l0b3J5LFxyXG4gIENoZWNrb3V0VHlwZXMsXHJcbiAgQ291cG9uLFxyXG4gIGlzTmlsLFxyXG4gIE5vdEZvdW5kRXJyb3IsXHJcbiAgT3JkZXJSZXBvc2l0b3J5LFxyXG4gIHBpY2ssXHJcbiAgU2hvcHMsXHJcbiAgVXNlcixcclxuICBVc2VyUmVwb3NpdG9yeVxyXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xyXG5pbXBvcnQgY29va2llIGZyb20gJ2pzLWNvb2tpZSdcclxuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBjb25jYXRNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcclxuXHJcbmltcG9ydCB7IERFRkFVTFRfU0hPUCB9IGZyb20gJy4uL2NvbnN0cydcclxuXHJcbmltcG9ydCB7IENvdXBvblNlcnZpY2UgfSBmcm9tICcuL2NvdXBvbi5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBSZXF1aXJlZENoZWNrb3V0RGF0YSB9IGZyb20gJy4vdHlwZXMnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDaGVja291dFNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3Vwb25TZXJ2aWNlOiBDb3Vwb25TZXJ2aWNlLFxyXG4gICAgQEluamVjdCgnQ2hlY2tvdXRSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjaGVja291dFJlcG9zaXRvcnk6IENoZWNrb3V0UmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoJ09yZGVyUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgb3JkZXJSZXBvc2l0b3J5OiBPcmRlclJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KCdVc2VyUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgdXNlclJlcG9zaXRvcnk6IFVzZXJSZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdChERUZBVUxUX1NIT1ApIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFNob3A6IFNob3BzLFxyXG4gICkge31cclxuXHJcbiAgZ2V0Q2hlY2tvdXQoY2hlY2tvdXREYXRhPzogUmVxdWlyZWRDaGVja291dERhdGEpOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XHJcbiAgICBjb25zdCBjaGVja291dElkID0gY29va2llLmdldCgnY2hlY2tvdXRJZCcpXHJcblxyXG4gICAgaWYgKCFpc05pbChjaGVja291dElkKSkgcmV0dXJuIGZyb20odGhpcy5jaGVja291dFJlcG9zaXRvcnkuZ2V0KHsgaWQ6IGNoZWNrb3V0SWQgfSkpXHJcblxyXG4gICAgcmV0dXJuIGZyb20odGhpcy5jcmVhdGVDaGVja291dChjaGVja291dERhdGEpKVxyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckJ5Q2hlY2tvdXQoY2hlY2tvdXRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxVc2VyPiB7XHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLmNoZWNrb3V0UmVwb3NpdG9yeS5nZXQoeyBpZDogY2hlY2tvdXRJZCB9KSkucGlwZShcclxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT5cclxuICAgICAgICBjaGVja291dD8udXNlcj8uaWQgPyBvZihjaGVja291dC51c2VyKSA6IGZyb20odGhpcy51c2VyUmVwb3NpdG9yeS5nZXQoeyBpZDogY2hlY2tvdXQudXNlci5pZCB9KSksXHJcbiAgICAgICksXHJcbiAgICAgIGNvbmNhdE1hcCgodXNlcikgPT4gb2YodXNlcikgfHwgdGhyb3dFcnJvcigoKSA9PiBuZXcgTm90Rm91bmRFcnJvcignVXNlciBpcyBub3QgZm91bmQnKSkpLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ2hlY2tvdXRMaW5lSXRlbXMoY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+KTogT2JzZXJ2YWJsZTxDaGVja291dD4ge1xyXG4gICAgcmV0dXJuIGZyb20odGhpcy5jaGVja291dFJlcG9zaXRvcnkudXBkYXRlKENoZWNrb3V0LnRvSW5zdGFuY2UoeyBpZDogY2hlY2tvdXQuaWQsIGxpbmVJdGVtczogY2hlY2tvdXQubGluZUl0ZW1zIH0pKSlcclxuICB9XHJcblxyXG4gIHVwZGF0ZUNoZWNrb3V0VXNlcihjaGVja291dDogUGFydGlhbDxDaGVja291dD4pOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLmNoZWNrb3V0UmVwb3NpdG9yeS51cGRhdGUoQ2hlY2tvdXQudG9JbnN0YW5jZSh7IGlkOiBjaGVja291dC5pZCwgdXNlcjogY2hlY2tvdXQudXNlciB9KSkpXHJcbiAgfVxyXG5cclxuICBjbGVhckNoZWNrb3V0RnJvbVNlc3Npb24oKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICBjb29raWUucmVtb3ZlKCdjaGVja291dElkJylcclxuXHJcbiAgICByZXR1cm4gb2YoKVxyXG4gIH1cclxuXHJcbiAgY2FsY0Rpc2NvdW50KGNvdXBvbjogQ291cG9uKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja291dCgpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+IHRoaXMuY291cG9uU2VydmljZS5jYWxjRGlzY291bnRTaG9wcGluZyhjb3Vwb24sIGNoZWNrb3V0KSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBjaGVja0NvdXBvbihuaWNrbmFtZTogc3RyaW5nLCBjaGVja291dFR5cGU6IENoZWNrb3V0VHlwZXMpOiBPYnNlcnZhYmxlPENvdXBvbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2hlY2tvdXQoKS5waXBlKFxyXG4gICAgICBjb25jYXRNYXAoKGNoZWNrb3V0KSA9PlxyXG4gICAgICAgIHRoaXMuY291cG9uU2VydmljZVxyXG4gICAgICAgICAgLmNoZWNrQ291cG9uKFxyXG4gICAgICAgICAgICBuaWNrbmFtZSxcclxuICAgICAgICAgICAgY2hlY2tvdXQudXNlcj8uZW1haWwsXHJcbiAgICAgICAgICAgIENoZWNrb3V0VHlwZXMuRUNPTU1FUkNFLFxyXG4gICAgICAgICAgICBjaGVja291dC51c2VyLnN1YnNjcmlwdGlvblBsYW4sXHJcbiAgICAgICAgICAgIGNoZWNrb3V0LFxyXG4gICAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLnBpcGUoKSxcclxuICAgICAgKSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgY3JlYXRlQ2hlY2tvdXQoY2hlY2tvdXREYXRhPzogUmVxdWlyZWRDaGVja291dERhdGEpOiBQcm9taXNlPENoZWNrb3V0PiB7XHJcbiAgICBjb25zdCBjaGVja291dCA9IGF3YWl0IHRoaXMuY2hlY2tvdXRSZXBvc2l0b3J5LmNyZWF0ZSh7XHJcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKSxcclxuICAgICAgLi4uQ2hlY2tvdXQudG9JbnN0YW5jZShwaWNrKGNoZWNrb3V0RGF0YSwgWyd1c2VyJywgJ3Nob3AnXSkpLnRvUGxhaW4oKSxcclxuICAgICAgc2hvcDogY2hlY2tvdXREYXRhPy5zaG9wIHx8IHRoaXMuZGVmYXVsdFNob3AsXHJcbiAgICB9KVxyXG5cclxuICAgIGNvb2tpZS5zZXQoJ2NoZWNrb3V0SWQnLCBjaGVja291dC5pZClcclxuXHJcbiAgICByZXR1cm4gY2hlY2tvdXRcclxuICB9XHJcbn1cclxuIl19
@@ -108,7 +108,7 @@ export class CouponService {
108
108
  console.log('hasProductCategories', hasProductCategories);
109
109
  // Se não tem produtos elegíveis, retorna erro
110
110
  if (!hasProductCategories)
111
- return throwError('Seu carrinho não possui produtos elegíveis para desconto.');
111
+ throw new InvalidCouponError('Seu carrinho não possui produtos elegíveis para desconto.');
112
112
  return coupon;
113
113
  });
114
114
  }
@@ -122,44 +122,49 @@ export class CouponService {
122
122
  return of(discount);
123
123
  }
124
124
  calcDiscountShopping(coupon, checkout) {
125
- let discount = 0;
126
- switch (coupon.type) {
127
- case CouponTypes.ABSOLUTE: {
128
- discount = coupon.discount;
129
- break;
130
- }
131
- case CouponTypes.PERCENTAGE: {
132
- discount = this.calcShoppingPercentageDiscount(coupon, checkout);
133
- break;
125
+ return __awaiter(this, void 0, void 0, function* () {
126
+ let discount = 0;
127
+ switch (coupon.type) {
128
+ case CouponTypes.ABSOLUTE: {
129
+ discount = coupon.discount;
130
+ break;
131
+ }
132
+ case CouponTypes.PERCENTAGE: {
133
+ discount = yield this.calcShoppingPercentageDiscount(coupon, checkout);
134
+ break;
135
+ }
134
136
  }
135
- }
136
- return of(discount);
137
+ return of(discount);
138
+ });
137
139
  }
138
140
  calcShoppingPercentageDiscount(coupon, checkout) {
139
141
  var _a;
140
- let discount = 0;
141
- const shop = checkout.shop;
142
- let lineItensDiscount = [];
143
- if (coupon.productsCategories && coupon.productsCategories.length) {
144
- lineItensDiscount = (_a = checkout.lineItems) === null || _a === void 0 ? void 0 : _a.filter((i) => {
145
- var _a;
146
- if ((_a = i.categories) === null || _a === void 0 ? void 0 : _a.length) {
147
- return i.categories.some((c) => coupon.productsCategories.includes(c));
148
- }
149
- return true;
150
- });
151
- }
152
- else {
153
- lineItensDiscount = checkout.lineItems;
154
- }
155
- const subTotal = lineItensDiscount.reduce((acc, curr) => {
156
- var _a, _b, _c;
157
- return ((_a = checkout.user) === null || _a === void 0 ? void 0 : _a.isSubscriber) && ((_b = curr.price[shop]) === null || _b === void 0 ? void 0 : _b.subscriberPrice)
158
- ? acc + ((_c = curr.price[shop]) === null || _c === void 0 ? void 0 : _c.subscriberPrice) * curr.quantity
159
- : acc + curr.pricePaid * curr.quantity;
160
- }, 0) || 0;
161
- discount = subTotal * (coupon.discount / 100);
162
- return discount;
142
+ return __awaiter(this, void 0, void 0, function* () {
143
+ let discount = 0;
144
+ const shop = checkout.shop;
145
+ let lineItensDiscount = [];
146
+ const couponCategories = yield this.getCouponCategoriesId(coupon);
147
+ if (coupon.productsCategories && coupon.productsCategories.length) {
148
+ lineItensDiscount = (_a = checkout.lineItems) === null || _a === void 0 ? void 0 : _a.filter((i) => {
149
+ var _a;
150
+ if ((_a = i.categories) === null || _a === void 0 ? void 0 : _a.length) {
151
+ return i.categories.some((c) => couponCategories.some(cat => (cat.id == c || cat.firestoreId == c)));
152
+ }
153
+ return true;
154
+ });
155
+ }
156
+ else {
157
+ lineItensDiscount = checkout.lineItems;
158
+ }
159
+ const subTotal = lineItensDiscount.reduce((acc, curr) => {
160
+ var _a, _b, _c;
161
+ return ((_a = checkout.user) === null || _a === void 0 ? void 0 : _a.isSubscriber) && ((_b = curr.price[shop]) === null || _b === void 0 ? void 0 : _b.subscriberPrice)
162
+ ? acc + ((_c = curr.price[shop]) === null || _c === void 0 ? void 0 : _c.subscriberPrice) * curr.quantity
163
+ : acc + curr.pricePaid * curr.quantity;
164
+ }, 0) || 0;
165
+ discount = subTotal * (coupon.discount / 100);
166
+ return discount;
167
+ });
163
168
  }
164
169
  hasMinSubTotal(coupon, checkout) {
165
170
  var _a;
@@ -183,25 +188,18 @@ export class CouponService {
183
188
  console.log('não possui categories');
184
189
  return true;
185
190
  }
186
- const hasCategories = (_a = checkout.lineItems) === null || _a === void 0 ? void 0 : _a.filter((i) => __awaiter(this, void 0, void 0, function* () {
187
- var _b;
188
- if (!i.categories || !((_b = i.categories) === null || _b === void 0 ? void 0 : _b.length)) {
191
+ const couponCategories = yield this.getCouponCategoriesId(coupon);
192
+ console.log('couponCategories', couponCategories.length, couponCategories);
193
+ const hasCategories = (_a = checkout.lineItems) === null || _a === void 0 ? void 0 : _a.filter(i => {
194
+ var _a;
195
+ console.log('entrou no filter');
196
+ if (!i.categories || !((_a = i.categories) === null || _a === void 0 ? void 0 : _a.length)) {
189
197
  console.log('produto não tem categorias');
190
198
  return true;
191
199
  }
192
- let couponCategories = [];
193
- for (let index = 0; index < coupon.productsCategories.length; index++) {
194
- let c = yield this.categoryRepository.get({ id: coupon.productsCategories[index] });
195
- couponCategories.push({ id: c.id, firestoreId: c.firestoreId });
196
- }
197
- console.log('couponCategories', couponCategories.length, couponCategories);
198
200
  return i.categories.some((c) => {
199
- console.log('some 1 ', c);
200
- return couponCategories.some(cat => {
201
- console.log('some 2', cat, cat.id == c, cat.firestoreId);
202
- if (cat.id == c || cat.firestoreId)
203
- return true;
204
- });
201
+ console.log('entrou no some 1', c);
202
+ return couponCategories.some(cat => (cat.id == c || cat.firestoreId == c));
205
203
  });
206
204
  // return i.categories.some(async (c) => {
207
205
  // console.log('some category c', c)
@@ -211,7 +209,7 @@ export class CouponService {
211
209
  // console.log('validation', (coupon.productsCategories.includes(categoria.id) || coupon.productsCategories.includes(categoria.firestoreId)) && !i.isGift)
212
210
  // return (coupon.productsCategories.includes(categoria.id) || coupon.productsCategories.includes(categoria.firestoreId)) && !i.isGift
213
211
  // })
214
- }));
212
+ });
215
213
  console.log('final return', hasCategories, hasCategories.length);
216
214
  return hasCategories.length ? true : false;
217
215
  });
@@ -252,6 +250,16 @@ export class CouponService {
252
250
  return true;
253
251
  });
254
252
  }
253
+ getCouponCategoriesId(coupon) {
254
+ return __awaiter(this, void 0, void 0, function* () {
255
+ let couponCategories = [];
256
+ for (let index = 0; index < coupon.productsCategories.length; index++) {
257
+ let c = yield this.categoryRepository.get({ id: coupon.productsCategories[index] });
258
+ couponCategories.push({ id: c.id, firestoreId: c.firestoreId });
259
+ }
260
+ return couponCategories;
261
+ });
262
+ }
255
263
  }
256
264
  CouponService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CouponService, deps: [{ token: 'CouponRepository' }, { token: DEFAULT_SHOP }, { token: 'OrderRepository' }, { token: 'SubscriptionRepository' }, { token: 'CategoryRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
257
265
  CouponService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CouponService, providedIn: 'root' });
@@ -276,4 +284,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.12", ngImpo
276
284
  type: Inject,
277
285
  args: ['CategoryRepository']
278
286
  }] }]; } });
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NvdXBvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBS0wsYUFBYSxFQUNiLE1BQU0sRUFFTixXQUFXLEVBQ1gsYUFBYSxFQUdiLEtBQUssRUFDTCxNQUFNLEVBRU4sS0FBSyxFQUNOLE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUE7OztBQUs3QyxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUMrQyxnQkFBa0MsRUFDeEMsV0FBa0IsRUFDYixlQUFnQyxFQUN6QixzQkFBOEMsRUFDbEQsa0JBQXNDO1FBSnhDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDeEMsZ0JBQVcsR0FBWCxXQUFXLENBQU87UUFDYixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDekIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUNsRCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBMEIvRSw0QkFBdUIsR0FBRyxDQUFDLFNBQWlCLEVBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUEsQ0FBQTtRQW1SNUYseUJBQW9CLEdBQUcsQ0FDN0Is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bkIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLHdCQUF3Qjs7MEJBQy9CLE1BQU07MkJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHtcclxuICBDYXRlZ29yeSxcclxuICBDYXRlZ29yeVJlcG9zaXRvcnksXHJcbiAgQ2hlY2tvdXQsXHJcbiAgQ2hlY2tvdXRTdWJzY3JpcHRpb24sXHJcbiAgQ2hlY2tvdXRUeXBlcyxcclxuICBDb3Vwb24sXHJcbiAgQ291cG9uUmVwb3NpdG9yeSxcclxuICBDb3Vwb25UeXBlcyxcclxuICBFeGNsdXNpdml0aWVzLFxyXG4gIExpbmVJdGVtLFxyXG4gIE9yZGVyUmVwb3NpdG9yeSxcclxuICBTaG9wcyxcclxuICBTdGF0dXMsXHJcbiAgU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcclxuICBXaGVyZVxyXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xyXG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IGNvbmNhdE1hcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcblxyXG5pbXBvcnQgeyBERUZBVUxUX1NIT1AgfSBmcm9tICcuLi9jb25zdHMnXHJcblxyXG5pbXBvcnQgeyBJbnZhbGlkQ291cG9uRXJyb3IgfSBmcm9tICcuL2Vycm9ycydcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3Vwb25TZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoJ0NvdXBvblJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IGNvdXBvblJlcG9zaXRvcnk6IENvdXBvblJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KERFRkFVTFRfU0hPUCkgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0U2hvcDogU2hvcHMsXHJcbiAgICBASW5qZWN0KCdPcmRlclJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IG9yZGVyUmVwb3NpdG9yeTogT3JkZXJSZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdCgnU3Vic2NyaXB0aW9uUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgc3Vic2NyaXB0aW9uUmVwb3NpdG9yeTogU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoJ0NhdGVnb3J5UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgY2F0ZWdvcnlSZXBvc2l0b3J5OiBDYXRlZ29yeVJlcG9zaXRvcnksXHJcbiAgKSB7fVxyXG5cclxuICBjaGVja0NvdXBvbihcclxuICAgIG5pY2tuYW1lOiBzdHJpbmcsXHJcbiAgICB1c2VyRW1haWw6IHN0cmluZyxcclxuICAgIGNoZWNrb3V0VHlwZTogQ2hlY2tvdXRUeXBlcyxcclxuICAgIHBsYW4/OiBzdHJpbmcsXHJcbiAgICBjaGVja291dD86IFBhcnRpYWw8Q2hlY2tvdXQ+LFxyXG4gICAgaXNTdWJzY3JpcHRpb24/OiBib29sZWFuLFxyXG4gICk6IE9ic2VydmFibGU8Q291cG9uPiB7XHJcbiAgICByZXR1cm4gZnJvbShcclxuICAgICAgdGhpcy5jb3Vwb25SZXBvc2l0b3J5LmZpbmQoe1xyXG4gICAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICAgIG5pY2tuYW1lOiB7IG9wZXJhdG9yOiBXaGVyZS5FUVVBTFMsIHZhbHVlOiBuaWNrbmFtZSB9LFxyXG4gICAgICAgICAgYWN0aXZlOiB7IG9wZXJhdG9yOiBXaGVyZS5FUVVBTFMsIHZhbHVlOiB0cnVlIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgfSksXHJcbiAgICApLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgoY291cG9ucykgPT4gdGhpcy5jaGVja0NvdXBvblJ1bGVzKGNvdXBvbnMsIGNoZWNrb3V0VHlwZSwgcGxhbiwgY2hlY2tvdXQsIGlzU3Vic2NyaXB0aW9uKSksXHJcbiAgICAgIGNvbmNhdE1hcCgoY291cG9uOiBDb3Vwb24pID0+IHRoaXMuY2hlY2tDb3Vwb25Vc2VBbmRMaW1pdChjb3Vwb24sIHVzZXJFbWFpbCwgY2hlY2tvdXQpKSxcclxuICAgICAgbWFwKChjb3Vwb246IENvdXBvbikgPT4gdGhpcy5pc1ZhbGlkQ291cG9uKGNvdXBvbiwgdXNlckVtYWlsKSksXHJcbiAgICAgIG1hcCgoY291cG9uOiBDb3Vwb24pID0+IGNvdXBvbiksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtYWlsSXNGcm9tQ29sbGFib3JhdG9yID0gKHVzZXJFbWFpbDogc3RyaW5nKTogYm9vbGVhbiA9PiAhIXVzZXJFbWFpbD8ubWF0Y2goL0BiNGEuY29tLmJyL2cpXHJcblxyXG4gIHByaXZhdGUgY2hlY2tDb3Vwb25SdWxlcyhcclxuICAgIGNvdXBvbnMsXHJcbiAgICBjaGVja291dFR5cGU6IENoZWNrb3V0VHlwZXMsXHJcbiAgICBwbGFuPzogc3RyaW5nLFxyXG4gICAgY2hlY2tvdXQ/OiBQYXJ0aWFsPENoZWNrb3V0PixcclxuICAgIGlzU3Vic2NyaXB0aW9uPzogYm9vbGVhbixcclxuICApIHtcclxuICAgIC8vIENhc28gbsOjbyBhY2hlIG5lbmh1bSBjdXBvbSwgcmV0b3JuYSBlcnJvXHJcbiAgICBpZiAoY291cG9ucy5jb3VudCA8IDEpIHtcclxuICAgICAgcmV0dXJuIHRocm93RXJyb3IoJ0N1cG9tIGludsOhbGlkby4nKVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEdldCBQcmltZWlybyBDdXBvbSAobyBmaW5kIGRvIHJlcG9zaXRvcnkgcmV0b3JuYSB1bSBhcnJheSlcclxuICAgIGNvbnN0IGNvdXBvbjogQ291cG9uID0gY291cG9ucy5kYXRhLnNoaWZ0KClcclxuICAgIC8vIFZlcmlmaWNhIHNlIG8gY3Vwb20gw6kgYXBsaWNhdmVsIG5hIGxvamFcclxuICAgIGNvbnN0IGlzSW5TaG9wID0gY291cG9uLnNob3BBdmFpbGFiaWxpdHkgPT09IFNob3BzLkFMTCB8fCBjb3Vwb24uc2hvcEF2YWlsYWJpbGl0eSA9PT0gdGhpcy5kZWZhdWx0U2hvcFxyXG5cclxuICAgIC8vIEN1cG9uIG7Do28gYXBsaWNhdmVsIGEgbG9qYSByZXRvcm5hIGVycm9cclxuICAgIGlmICghaXNJblNob3ApIHJldHVybiB0aHJvd0Vycm9yKCdDdXBvbSBpbnbDoWxpZG8gcGFyYSBsb2phLicpXHJcblxyXG4gICAgLy8gVmVyaWZpY2Egc2UgbyBjb3Vwb24gw6kgYXBsaWNhZG8gbm8gY2hlY2tvdXQgcXVlIGVzdMOhIHNlbmRvIHJlYWxpemFkb1xyXG4gICAgY29uc3QgaXNDaGVja291dFR5cGUgPSBjb3Vwb24uY2hlY2tvdXRUeXBlID09PSBDaGVja291dFR5cGVzLkFMTCB8fCBjb3Vwb24uY2hlY2tvdXRUeXBlID09PSBjaGVja291dFR5cGVcclxuXHJcbiAgICAvLyBDdXBvbiBuw6NvIGFwbGljYXZlbCBhbyBjaGVja291dCByZXRvcm5hIGVycm9cclxuICAgIGlmICghaXNDaGVja291dFR5cGUpIHJldHVybiB0aHJvd0Vycm9yKCdDdXBvbSBpbnbDoWxpZG8uIEVycm8gZGUgY2hlY2tvdXQuJylcclxuXHJcbiAgICAvLyBWZXJpZmljYSBzZSBvIGN1cG9tIMOpIG91IHBvZGUgc2VyIGFwbGljYWRvIHBhcmEgc3Vic2NyaXB0aW9uXHJcbiAgICBpZiAoY2hlY2tvdXRUeXBlID09PSBDaGVja291dFR5cGVzLkFMTCB8fCBjaGVja291dFR5cGUgPT09IENoZWNrb3V0VHlwZXMuU1VCU0NSSVBUSU9OKSB7XHJcbiAgICAgIC8vIFNlIG8gY3Vwb20gdGl2ZXIgdW0gcGxhbm8gYXNzb2NpYWRvLCB2ZXJpZmljYSBzZSDDqSBvIG1lc21vIHBsYW5vIGRvIGNoZWNrb3V0IGRhIGFzc2luYXR1cmFcclxuICAgICAgaWYgKGNvdXBvbi5wbGFuICYmIGNvdXBvbi5wbGFuLnRvVXBwZXJDYXNlKCkgIT09IHBsYW4udG9VcHBlckNhc2UoKSlcclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcignQ3Vwb20gaW52w6FsaWRvIHBhcmEgc3VhIGFzc2luYXR1cmEuJylcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaXNTdWJzY3JpcHRpb24pIHJldHVybiBvZihjb3Vwb24pXHJcblxyXG4gICAgLy8gVmVyaWZpY2Egc2UgcG9zc3VpIG8gdmFsb3IgbWluaW1vIGRlIGNvbXByYSBwYXJhIHV0aWxpemHDp8OjbyBkbyBjdXBvbVxyXG4gICAgY29uc3QgaGFzTWluU3ViVG90YWwgPSB0aGlzLmhhc01pblN1YlRvdGFsKGNvdXBvbiwgY2hlY2tvdXQpXHJcblxyXG4gICAgLy8gU2UgbsOjbyB0ZW0gdmFsb3IgbcOtbmltbyBhdGluZ2lkbywgcmV0b3JuYSBlcnJvXHJcbiAgICBpZiAoIWhhc01pblN1YlRvdGFsKSByZXR1cm4gdGhyb3dFcnJvcignVmFsb3IgbcOtbmltbyBuw6NvIGF0aW5naWRvJylcclxuXHJcbiAgICByZXR1cm4gb2YoY291cG9uKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1ZhbGlkQ291cG9uKGNvdXBvbjogQ291cG9uLCB1c2VyRW1haWw6IHN0cmluZyk6IENvdXBvbiB7XHJcbiAgICAvLyBWZXJpZmljYSBhIGRhdGEgZGUgaW5pY2lvIGRlIHZhbGlkYWRlIGRvIGN1cG9tXHJcbiAgICBpZiAoY291cG9uPy5iZWdpbkF0ID4gbmV3IERhdGUoKSkgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignQ3Vwb20gYWluZGEgbsOjbyBsaWJlcmFkby4nKVxyXG5cclxuICAgIC8vIFZlcmlmaWNhIGEgZGF0YSBkZSB2YWxpZGFkZSBkbyBjdXBvbVxyXG4gICAgaWYgKGNvdXBvbj8uZXhwaXJlc0luIDwgbmV3IERhdGUoKSkgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignQ3Vwb20gZXhwaXJhZG8uJylcclxuXHJcbiAgICByZXR1cm4gY291cG9uXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNoZWNrQ291cG9uVXNlQW5kTGltaXQoY291cG9uOiBDb3Vwb24sIHVzZXJFbWFpbDogc3RyaW5nLCBjaGVja291dCkge1xyXG4gICAgLy8gQnVzY2Egb3JkZXJzIHF1ZSBwb3NzdWVtIG8gY3Vwb20gZSBxdWUgZXN0w6NvIHBhZ2FzXHJcbiAgICBjb25zdCBvcmRlcnMgPSBhd2FpdCB0aGlzLm9yZGVyUmVwb3NpdG9yeS5maW5kKHtcclxuICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgIGNvdXBvbjogeyBpZDogY291cG9uLmlkIH0sXHJcbiAgICAgICAgcGF5bWVudDogeyBzdGF0dXM6ICdwYWlkJyB9LFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuXHJcbiAgICAvLyBvcmRlcnMgcXVlIHVzdWFyaW8gamEgZmV6IGNvbSBvIGN1cG9tXHJcbiAgICBjb25zdCBvcmRlcnNVc2VyQ291cG9uID0gb3JkZXJzLmRhdGEuZmlsdGVyKChvKSA9PiBvLnVzZXIuZW1haWwgPT0gdXNlckVtYWlsKVxyXG5cclxuICAgIC8vIFZlcmlmaWNhIG8gbGltaXRlIGRlIHVzbyBkZSBjdXBvbSBwb3IgdXN1YXJpb1xyXG4gICAgaWYgKGNvdXBvbi51c2VMaW1pdFBlclVzZXIgJiYgb3JkZXJzVXNlckNvdXBvbi5sZW5ndGgpXHJcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ0xpbWl0ZSBkZSB1c28gcG9yIHVzdcOhcmlvIGF0aW5naWRvLicpXHJcblxyXG4gICAgLy8gVmVyaWZpY2EgbyBsaW1pdGUgZGUgdXNvIGdlcmFsIHBvciB1c3VhcmlvXHJcbiAgICBpZiAoY291cG9uLnVzZUxpbWl0ICYmIG9yZGVycy5kYXRhLmxlbmd0aCA+PSBjb3Vwb24udXNlTGltaXQpXHJcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ0xpbWl0ZSBkZSB1c28gYXRpbmdpZG8uJylcclxuXHJcbiAgICBjb25zdCB2YWxpZFVzZXIgPSBhd2FpdCB0aGlzLnVzZXJWYWxpZGF0aW9uQW5kU3Vic2NyaXB0aW9uU3RhdHVzKGNvdXBvbiwgdXNlckVtYWlsKVxyXG4gICAgaWYgKCF2YWxpZFVzZXIpIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ1VzdcOhcmlvIG7Do28gZWxlZ8OtdmVsLicpXHJcblxyXG4gICAgIC8vIFZlcmlmaWNhIHNlIGEgY29tcHJhIHBvc3N1aSBwcm9kdXRvcyBlbGVnw612ZWlzIHBhcmEgZGVzY29udG9cclxuICAgIGNvbnN0IGhhc1Byb2R1Y3RDYXRlZ29yaWVzID0gYXdhaXQgdGhpcy5oYXNQcm9kdWN0Q2F0ZWdvcmllcyhjb3Vwb24sIGNoZWNrb3V0KVxyXG4gICAgY29uc29sZS5sb2coJ2hhc1Byb2R1Y3RDYXRlZ29yaWVzJywgaGFzUHJvZHVjdENhdGVnb3JpZXMpXHJcbiAgICAvLyBTZSBuw6NvIHRlbSBwcm9kdXRvcyBlbGVnw612ZWlzLCByZXRvcm5hIGVycm9cclxuICAgIGlmICghaGFzUHJvZHVjdENhdGVnb3JpZXMpIHJldHVybiB0aHJvd0Vycm9yKCdTZXUgY2FycmluaG8gbsOjbyBwb3NzdWkgcHJvZHV0b3MgZWxlZ8OtdmVpcyBwYXJhIGRlc2NvbnRvLicpXHJcbiAgICBcclxuICAgIHJldHVybiBjb3Vwb25cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYWxjRGlzY291bnRTdWJzY3JpcHRpb24oY291cG9uOiBDb3Vwb24sIGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0U3Vic2NyaXB0aW9uPik6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcbiAgICAvL1xyXG4gICAgbGV0IGRpc2NvdW50ID0gMFxyXG5cclxuICAgIGlmIChjb3Vwb24udHlwZSA9PT0gQ291cG9uVHlwZXMuQUJTT0xVVEUpIGRpc2NvdW50ID0gY291cG9uLmRpc2NvdW50XHJcbiAgICBlbHNlIGlmIChjb3Vwb24udHlwZSA9PT0gQ291cG9uVHlwZXMuUEVSQ0VOVEFHRSlcclxuICAgICAgZGlzY291bnQgPSBjaGVja291dC5zdWJzY3JpcHRpb25QbGFuLnJlY3VycmVuY2VQcmljZSAqIChjb3Vwb24uZGlzY291bnQgLyAxMDApXHJcblxyXG4gICAgcmV0dXJuIG9mKGRpc2NvdW50KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbGNEaXNjb3VudFNob3BwaW5nKGNvdXBvbjogQ291cG9uLCBjaGVja291dDogUGFydGlhbDxDaGVja291dD4pOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gICAgbGV0IGRpc2NvdW50ID0gMFxyXG5cclxuICAgIHN3aXRjaCAoY291cG9uLnR5cGUpIHtcclxuICAgICAgY2FzZSBDb3Vwb25UeXBlcy5BQlNPTFVURToge1xyXG4gICAgICAgIGRpc2NvdW50ID0gY291cG9uLmRpc2NvdW50XHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG5cclxuICAgICAgY2FzZSBDb3Vwb25UeXBlcy5QRVJDRU5UQUdFOiB7XHJcbiAgICAgICAgZGlzY291bnQgPSB0aGlzLmNhbGNTaG9wcGluZ1BlcmNlbnRhZ2VEaXNjb3VudChjb3Vwb24sIGNoZWNrb3V0KVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gb2YoZGlzY291bnQpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGNTaG9wcGluZ1BlcmNlbnRhZ2VEaXNjb3VudChjb3Vwb246IENvdXBvbiwgY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+KTogbnVtYmVyIHtcclxuICAgIGxldCBkaXNjb3VudCA9IDBcclxuICAgIGNvbnN0IHNob3AgPSBjaGVja291dC5zaG9wXHJcbiAgICBsZXQgbGluZUl0ZW5zRGlzY291bnQgPSBbXVxyXG5cclxuICAgIGlmIChjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzICYmIGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMubGVuZ3RoKSB7XHJcbiAgICAgIGxpbmVJdGVuc0Rpc2NvdW50ID0gY2hlY2tvdXQubGluZUl0ZW1zPy5maWx0ZXIoKGkpID0+IHtcclxuICAgICAgICBpZiAoaS5jYXRlZ29yaWVzPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHJldHVybiBpLmNhdGVnb3JpZXMuc29tZSgoYykgPT4gY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5pbmNsdWRlcyhjKSlcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWVcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxpbmVJdGVuc0Rpc2NvdW50ID0gY2hlY2tvdXQubGluZUl0ZW1zXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc3ViVG90YWwgPVxyXG4gICAgICBsaW5lSXRlbnNEaXNjb3VudC5yZWR1Y2UoXHJcbiAgICAgICAgKGFjYywgY3VycjogTGluZUl0ZW0pID0+XHJcbiAgICAgICAgICBjaGVja291dC51c2VyPy5pc1N1YnNjcmliZXIgJiYgY3Vyci5wcmljZVtzaG9wXT8uc3Vic2NyaWJlclByaWNlXHJcbiAgICAgICAgICAgID8gYWNjICsgY3Vyci5wcmljZVtzaG9wXT8uc3Vic2NyaWJlclByaWNlICogY3Vyci5xdWFudGl0eVxyXG4gICAgICAgICAgICA6IGFjYyArIGN1cnIucHJpY2VQYWlkICogY3Vyci5xdWFudGl0eSxcclxuICAgICAgICAwLFxyXG4gICAgICApIHx8IDBcclxuXHJcbiAgICBkaXNjb3VudCA9IHN1YlRvdGFsICogKGNvdXBvbi5kaXNjb3VudCAvIDEwMClcclxuXHJcbiAgICByZXR1cm4gZGlzY291bnRcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzTWluU3ViVG90YWwoY291cG9uOiBDb3Vwb24sIGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0Pik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFjb3Vwb24ubWluU3ViVG90YWxWYWx1ZSkgcmV0dXJuIHRydWVcclxuXHJcbiAgICBjb25zdCBzaG9wID0gY2hlY2tvdXQuc2hvcFxyXG5cclxuICAgIGxldCBzdWJUb3RhbCA9XHJcbiAgICAgIGNoZWNrb3V0LmxpbmVJdGVtcz8ucmVkdWNlKFxyXG4gICAgICAgIChhY2MsIGN1cnIpID0+XHJcbiAgICAgICAgICBjaGVja291dC51c2VyPy5pc1N1YnNjcmliZXIgJiYgY3Vyci5wcmljZVtzaG9wXT8uc3Vic2NyaWJlclByaWNlXHJcbiAgICAgICAgICAgID8gYWNjICsgY3Vyci5wcmljZVtzaG9wXT8uc3Vic2NyaWJlclByaWNlICogY3Vyci5xdWFudGl0eVxyXG4gICAgICAgICAgICA6IGFjYyArIGN1cnIucHJpY2VQYWlkICogY3Vyci5xdWFudGl0eSxcclxuICAgICAgICAwLFxyXG4gICAgICApIHx8IDBcclxuXHJcbiAgICBpZiAoY291cG9uLm1pblN1YlRvdGFsVmFsdWUgPD0gc3ViVG90YWwpIHJldHVybiB0cnVlXHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgaGFzUHJvZHVjdENhdGVnb3JpZXMoY291cG9uOiBDb3Vwb24sIGNoZWNrb3V0OiBQYXJ0aWFsPENoZWNrb3V0Pik6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG5cclxuICAgIGlmICghY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcyAmJiAhY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5sZW5ndGgpIHtcclxuICAgICAgY29uc29sZS5sb2coJ27Do28gcG9zc3VpIGNhdGVnb3JpZXMnKVxyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgICBcclxuICAgIGNvbnN0IGhhc0NhdGVnb3JpZXMgPSBjaGVja291dC5saW5lSXRlbXM/LmZpbHRlcihhc3luYyAoaSkgPT4ge1xyXG5cclxuICAgICAgaWYgKCFpLmNhdGVnb3JpZXMgfHwgIWkuY2F0ZWdvcmllcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ3Byb2R1dG8gbsOjbyB0ZW0gY2F0ZWdvcmlhcycpXHJcbiAgICAgICAgcmV0dXJuIHRydWVcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGNvdXBvbkNhdGVnb3JpZXM6IHsgaWQ6IHN0cmluZywgZmlyZXN0b3JlSWQ6IHN0cmluZyB9W10gPSBbXVxyXG5cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgbGV0IGM6IENhdGVnb3J5ICYgeyBmaXJlc3RvcmVJZD86IHN0cmluZyB9ID0gYXdhaXQgdGhpcy5jYXRlZ29yeVJlcG9zaXRvcnkuZ2V0KHsgaWQ6IGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXNbaW5kZXhdIH0pICAgIFxyXG4gICAgICAgIGNvdXBvbkNhdGVnb3JpZXMucHVzaCh7IGlkOiBjLmlkLCBmaXJlc3RvcmVJZDogYy5maXJlc3RvcmVJZH0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKCdjb3Vwb25DYXRlZ29yaWVzJywgY291cG9uQ2F0ZWdvcmllcy5sZW5ndGgsIGNvdXBvbkNhdGVnb3JpZXMpXHJcblxyXG4gICAgICByZXR1cm4gaS5jYXRlZ29yaWVzLnNvbWUoKGMpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZygnc29tZSAxICcsIGMpXHJcblxyXG4gICAgICAgIHJldHVybiBjb3Vwb25DYXRlZ29yaWVzLnNvbWUoY2F0ID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdzb21lIDInLCBjYXQsIGNhdC5pZCA9PSBjLCBjYXQuZmlyZXN0b3JlSWQpXHJcbiAgICAgICAgICBpZiAoY2F0LmlkID09IGMgfHwgY2F0LmZpcmVzdG9yZUlkKSByZXR1cm4gdHJ1ZVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICAvLyByZXR1cm4gaS5jYXRlZ29yaWVzLnNvbWUoYXN5bmMgKGMpID0+IHtcclxuXHJcbiAgICAgIC8vICAgY29uc29sZS5sb2coJ3NvbWUgY2F0ZWdvcnkgYycsIGMpXHJcbiAgICAgIC8vICAgY29uc3QgY2F0ZWdvcmlhOiBDYXRlZ29yeSAmIHsgZmlyZXN0b3JlSWQ/OiBzdHJpbmcgfSA9IGF3YWl0IHRoaXMuY2F0ZWdvcnlSZXBvc2l0b3J5LmdldCh7aWQ6IGN9KSAgICAgICAgICBcclxuICAgICAgLy8gICBjb25zb2xlLmxvZyhjYXRlZ29yaWEpXHJcbiAgICAgIC8vICAgY29uc29sZS5sb2coY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5pbmNsdWRlcyhjYXRlZ29yaWEuaWQpLCBjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmluY2x1ZGVzKGNhdGVnb3JpYS5maXJlc3RvcmVJZCksIGkuaXNHaWZ0KVxyXG4gICAgICAvLyAgIGNvbnNvbGUubG9nKCd2YWxpZGF0aW9uJywgKGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmlkKSB8fCBjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmluY2x1ZGVzKGNhdGVnb3JpYS5maXJlc3RvcmVJZCkpICYmICFpLmlzR2lmdClcclxuICAgICAgLy8gICByZXR1cm4gKGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmlkKSB8fCBjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmluY2x1ZGVzKGNhdGVnb3JpYS5maXJlc3RvcmVJZCkpICYmICFpLmlzR2lmdFxyXG4gICAgICBcclxuICAgICAgLy8gfSlcclxuICAgIH0pXHJcbiAgICBjb25zb2xlLmxvZygnZmluYWwgcmV0dXJuJywgaGFzQ2F0ZWdvcmllcywgaGFzQ2F0ZWdvcmllcy5sZW5ndGgpXHJcbiAgICByZXR1cm4gaGFzQ2F0ZWdvcmllcy5sZW5ndGggPyB0cnVlIDogZmFsc2VcclxuXHJcblxyXG4gICAgLy8gaWYgKGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMgJiYgY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5sZW5ndGgpIHtcclxuICAgIC8vICAgY29uc3QgaGFzQ2F0ZWdvcmllcyA9IGNoZWNrb3V0LmxpbmVJdGVtcz8uZmlsdGVyKChpKSA9PiB7XHJcbiAgICAvLyAgICAgaWYgKGkuY2F0ZWdvcmllcz8ubGVuZ3RoKSB7XHJcbiBcclxuICAgIC8vICAgICAgIHJldHVybiBpLmNhdGVnb3JpZXMuc29tZShhc3luYyAoYykgPT4ge1xyXG4gICAgLy8gICAgICAgICBjb25zdCBjYXRlZ29yaWE6IENhdGVnb3J5ICYgeyBmaXJlc3RvcmVJZD86IHN0cmluZyB9ID0gYXdhaXQgdGhpcy5jYXRlZ29yeVJlcG9zaXRvcnkuZ2V0KHtpZDogY30pICAgICAgICAgIFxyXG4gICAgLy8gICAgICAgICBjb25zb2xlLmxvZyhjYXRlZ29yaWEpXHJcbiAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmlkKSwgY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5pbmNsdWRlcyhjYXRlZ29yaWEuZmlyZXN0b3JlSWQpLCBpLmlzR2lmdClcclxuICAgIC8vICAgICAgICAgY29uc29sZS5sb2coJ3ZhbGlkYXRpb24nLCAoY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5pbmNsdWRlcyhjYXRlZ29yaWEuaWQpIHx8IGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmZpcmVzdG9yZUlkKSkgJiYgIWkuaXNHaWZ0KVxyXG4gICAgLy8gICAgICAgICByZXR1cm4gKGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmlkKSB8fCBjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmluY2x1ZGVzKGNhdGVnb3JpYS5maXJlc3RvcmVJZCkpICYmICFpLmlzR2lmdFxyXG4gICAgLy8gICAgICAgfSlcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgcmV0dXJuIHRydWVcclxuICAgIC8vICAgfSlcclxuICAgIC8vICAgcmV0dXJuIGhhc0NhdGVnb3JpZXMubGVuZ3RoID8gdHJ1ZSA6IGZhbHNlXHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICByZXR1cm4gdHJ1ZVxyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyB1c2VyVmFsaWRhdGlvbkFuZFN1YnNjcmlwdGlvblN0YXR1cyhjb3Vwb246IENvdXBvbiwgdXNlckVtYWlsOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIC8vIFZlcmlmaWNhIHNlIG8gZW1haWwgZG8gdXN1w6FyaW8gw6kgY29vcnBvcmF0aXZvXHJcbiAgICBpZiAoIXRoaXMuZW1haWxJc0Zyb21Db2xsYWJvcmF0b3IodXNlckVtYWlsKSAmJiBjb3Vwb24uZXhjbHVzaXZpdHlUeXBlID09PSBFeGNsdXNpdml0aWVzLkNPTExBQk9SQVRPUlMpXHJcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ1ZvY8OqIG7Do28gw6kgY29sYWJvcmFkb3IuJylcclxuXHJcbiAgICAvLyBWZXJpZmljYSBzZSBvIGVtYWlsIGRvIHVzdcOhcmlvIMOpIGFzc29jaWFkbyBhbyBjdXBvbSBkZSB1c28gcG9yIHVzdWFyaW9cclxuICAgIGlmIChjb3Vwb24uZXhjbHVzaXZpdHlUeXBlID09PSBFeGNsdXNpdml0aWVzLlNQRUNJRklDX1VTRVIgJiYgY291cG9uLnVzZXJFeGNsdXNpdmVFbWFpbCAhPT0gdXNlckVtYWlsKVxyXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZENvdXBvbkVycm9yKCdDdXBvbSBuw6NvIMOpIHbDoWxpZG8gcGFyYSBlc3RlIHVzdcOhcmlvLicpXHJcblxyXG4gICAgY29uc3QgY291cG9uUnVsZVN1YnNjcmlwdGlvbiA9XHJcbiAgICAgIGNvdXBvbi5leGNsdXNpdml0eVR5cGUgPT09IEV4Y2x1c2l2aXRpZXMuQUNUSVZFX1NVQlNDUklCRVIgfHxcclxuICAgICAgY291cG9uLmV4Y2x1c2l2aXR5VHlwZSA9PT0gRXhjbHVzaXZpdGllcy5JTkFDVElWRV9TVUJTQ1JJQkVSIHx8XHJcbiAgICAgIGNvdXBvbi5leGNsdXNpdml0eVR5cGUgPT09IEV4Y2x1c2l2aXRpZXMuTk9OX1NVQlNDUklCRVJcclxuXHJcbiAgICBpZiAoY291cG9uUnVsZVN1YnNjcmlwdGlvbiAmJiB1c2VyRW1haWwpIHtcclxuICAgICAgY29uc3Qgc3ViID0gYXdhaXQgdGhpcy5zdWJzY3JpcHRpb25SZXBvc2l0b3J5XHJcbiAgICAgICAgLmZpbmQoe1xyXG4gICAgICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgICAgICB1c2VyOiB7XHJcbiAgICAgICAgICAgICAgZW1haWw6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IHVzZXJFbWFpbCB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KVxyXG4gICAgICAgIC50aGVuKChzdWIpID0+IHN1Yi5kYXRhKVxyXG5cclxuICAgICAgY29uc3QgYWN0aXZlU3VicyA9IHN1Yj8uZmlsdGVyKChzKSA9PiBzLnN0YXR1cyA9PT0gU3RhdHVzLkFDVElWRSlcclxuXHJcbiAgICAgIHN3aXRjaCAoY291cG9uLmV4Y2x1c2l2aXR5VHlwZSkge1xyXG4gICAgICAgIGNhc2UgRXhjbHVzaXZpdGllcy5BQ1RJVkVfU1VCU0NSSUJFUjpcclxuICAgICAgICAgIHJldHVybiBhY3RpdmVTdWJzLmxlbmd0aCA+IDBcclxuICAgICAgICBjYXNlIEV4Y2x1c2l2aXRpZXMuSU5BQ1RJVkVfU1VCU0NSSUJFUjpcclxuICAgICAgICAgIHJldHVybiBhY3RpdmVTdWJzLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgIGNhc2UgRXhjbHVzaXZpdGllcy5OT05fU1VCU0NSSUJFUjpcclxuICAgICAgICAgIHJldHVybiBzdWIubGVuZ3RoID09PSAwXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2VwYXJhdGVWYWxpZENvdXBvbnMgPSAoXHJcbiAgICBjb3Vwb25zOiBDb3Vwb25bXSxcclxuICAgIHVzZXJFbWFpbDogc3RyaW5nLFxyXG4gICk6IHsgdmFsaWRzOiBDb3Vwb25bXTsgaW52YWxpZHM6IEludmFsaWRDb3Vwb25FcnJvcltdIH0gPT5cclxuICAgIGNvdXBvbnNcclxuICAgICAgLm1hcCgoY291cG9uKSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGlmICghKGNvdXBvbiBpbnN0YW5jZW9mIENvdXBvbikpIHRocm93IG5ldyBJbnZhbGlkQ291cG9uRXJyb3IoJ0N1cG9tIGludsOhbGlkby4nKVxyXG4gICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZENvdXBvbihjb3Vwb24sIHVzZXJFbWFpbCkpIHJldHVybiBjb3Vwb25cclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgcmV0dXJuIGVycm9yIGFzIEludmFsaWRDb3Vwb25FcnJvclxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLnJlZHVjZShcclxuICAgICAgICAoY3VycmVudCwgY291cG9uKSA9PiAoe1xyXG4gICAgICAgICAgLi4uY3VycmVudCxcclxuICAgICAgICAgIC4uLihjb3Vwb24gaW5zdGFuY2VvZiBDb3Vwb25cclxuICAgICAgICAgICAgPyB7IHZhbGlkczogWy4uLmN1cnJlbnQudmFsaWRzLCBjb3Vwb25dIH1cclxuICAgICAgICAgICAgOiB7IGludmFsaWRzOiBbLi4uY3VycmVudC5pbnZhbGlkcywgY291cG9uXSB9KSxcclxuICAgICAgICB9KSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB2YWxpZHM6IFtdIGFzIENvdXBvbltdLFxyXG4gICAgICAgICAgaW52YWxpZHM6IFtdIGFzIEludmFsaWRDb3Vwb25FcnJvcltdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIClcclxufVxyXG4iXX0=
287
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NvdXBvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBS0wsYUFBYSxFQUNiLE1BQU0sRUFFTixXQUFXLEVBQ1gsYUFBYSxFQUdiLEtBQUssRUFDTCxNQUFNLEVBRU4sS0FBSyxFQUNOLE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUE7OztBQUs3QyxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUMrQyxnQkFBa0MsRUFDeEMsV0FBa0IsRUFDYixlQUFnQyxFQUN6QixzQkFBOEMsRUFDbEQsa0JBQXNDO1FBSnhDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDeEMsZ0JBQVcsR0FBWCxXQUFXLENBQU87UUFDYixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDekIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUNsRCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBMEIvRSw0QkFBdUIsR0FBRyxDQUFDLFNBQWlCLEVBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUEsQ0FBQTtRQXNSNUYseUJBQW9CLEdBQUcsQ0FDN0Is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YSxrQkFFZCxrQkFBa0IsYUFDbEIsWUFBWSxhQUNaLGlCQUFpQixhQUNqQix3QkFBd0IsYUFDeEIsb0JBQW9COytHQU5uQixhQUFhLGNBRlosTUFBTTs0RkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBR0ksTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUN6QixNQUFNOzJCQUFDLFlBQVk7OzBCQUNuQixNQUFNOzJCQUFDLGlCQUFpQjs7MEJBQ3hCLE1BQU07MkJBQUMsd0JBQXdCOzswQkFDL0IsTUFBTTsyQkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQge1xyXG4gIENhdGVnb3J5LFxyXG4gIENhdGVnb3J5UmVwb3NpdG9yeSxcclxuICBDaGVja291dCxcclxuICBDaGVja291dFN1YnNjcmlwdGlvbixcclxuICBDaGVja291dFR5cGVzLFxyXG4gIENvdXBvbixcclxuICBDb3Vwb25SZXBvc2l0b3J5LFxyXG4gIENvdXBvblR5cGVzLFxyXG4gIEV4Y2x1c2l2aXRpZXMsXHJcbiAgTGluZUl0ZW0sXHJcbiAgT3JkZXJSZXBvc2l0b3J5LFxyXG4gIFNob3BzLFxyXG4gIFN0YXR1cyxcclxuICBTdWJzY3JpcHRpb25SZXBvc2l0b3J5LFxyXG4gIFdoZXJlXHJcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgY29uY2F0TWFwLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcclxuXHJcbmltcG9ydCB7IERFRkFVTFRfU0hPUCB9IGZyb20gJy4uL2NvbnN0cydcclxuXHJcbmltcG9ydCB7IEludmFsaWRDb3Vwb25FcnJvciB9IGZyb20gJy4vZXJyb3JzJ1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvdXBvblNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnQ291cG9uUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgY291cG9uUmVwb3NpdG9yeTogQ291cG9uUmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoREVGQVVMVF9TSE9QKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRTaG9wOiBTaG9wcyxcclxuICAgIEBJbmplY3QoJ09yZGVyUmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgb3JkZXJSZXBvc2l0b3J5OiBPcmRlclJlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KCdTdWJzY3JpcHRpb25SZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBzdWJzY3JpcHRpb25SZXBvc2l0b3J5OiBTdWJzY3JpcHRpb25SZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdCgnQ2F0ZWdvcnlSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVJlcG9zaXRvcnk6IENhdGVnb3J5UmVwb3NpdG9yeSxcclxuICApIHt9XHJcblxyXG4gIGNoZWNrQ291cG9uKFxyXG4gICAgbmlja25hbWU6IHN0cmluZyxcclxuICAgIHVzZXJFbWFpbDogc3RyaW5nLFxyXG4gICAgY2hlY2tvdXRUeXBlOiBDaGVja291dFR5cGVzLFxyXG4gICAgcGxhbj86IHN0cmluZyxcclxuICAgIGNoZWNrb3V0PzogUGFydGlhbDxDaGVja291dD4sXHJcbiAgICBpc1N1YnNjcmlwdGlvbj86IGJvb2xlYW4sXHJcbiAgKTogT2JzZXJ2YWJsZTxDb3Vwb24+IHtcclxuICAgIHJldHVybiBmcm9tKFxyXG4gICAgICB0aGlzLmNvdXBvblJlcG9zaXRvcnkuZmluZCh7XHJcbiAgICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgICAgbmlja25hbWU6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IG5pY2tuYW1lIH0sXHJcbiAgICAgICAgICBhY3RpdmU6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IHRydWUgfSxcclxuICAgICAgICB9LFxyXG4gICAgICB9KSxcclxuICAgICkucGlwZShcclxuICAgICAgY29uY2F0TWFwKChjb3Vwb25zKSA9PiB0aGlzLmNoZWNrQ291cG9uUnVsZXMoY291cG9ucywgY2hlY2tvdXRUeXBlLCBwbGFuLCBjaGVja291dCwgaXNTdWJzY3JpcHRpb24pKSxcclxuICAgICAgY29uY2F0TWFwKChjb3Vwb246IENvdXBvbikgPT4gdGhpcy5jaGVja0NvdXBvblVzZUFuZExpbWl0KGNvdXBvbiwgdXNlckVtYWlsLCBjaGVja291dCkpLFxyXG4gICAgICBtYXAoKGNvdXBvbjogQ291cG9uKSA9PiB0aGlzLmlzVmFsaWRDb3Vwb24oY291cG9uLCB1c2VyRW1haWwpKSxcclxuICAgICAgbWFwKChjb3Vwb246IENvdXBvbikgPT4gY291cG9uKSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1haWxJc0Zyb21Db2xsYWJvcmF0b3IgPSAodXNlckVtYWlsOiBzdHJpbmcpOiBib29sZWFuID0+ICEhdXNlckVtYWlsPy5tYXRjaCgvQGI0YS5jb20uYnIvZylcclxuXHJcbiAgcHJpdmF0ZSBjaGVja0NvdXBvblJ1bGVzKFxyXG4gICAgY291cG9ucyxcclxuICAgIGNoZWNrb3V0VHlwZTogQ2hlY2tvdXRUeXBlcyxcclxuICAgIHBsYW4/OiBzdHJpbmcsXHJcbiAgICBjaGVja291dD86IFBhcnRpYWw8Q2hlY2tvdXQ+LFxyXG4gICAgaXNTdWJzY3JpcHRpb24/OiBib29sZWFuLFxyXG4gICkge1xyXG4gICAgLy8gQ2FzbyBuw6NvIGFjaGUgbmVuaHVtIGN1cG9tLCByZXRvcm5hIGVycm9cclxuICAgIGlmIChjb3Vwb25zLmNvdW50IDwgMSkge1xyXG4gICAgICByZXR1cm4gdGhyb3dFcnJvcignQ3Vwb20gaW52w6FsaWRvLicpXHJcbiAgICB9XHJcblxyXG4gICAgLy8gR2V0IFByaW1laXJvIEN1cG9tIChvIGZpbmQgZG8gcmVwb3NpdG9yeSByZXRvcm5hIHVtIGFycmF5KVxyXG4gICAgY29uc3QgY291cG9uOiBDb3Vwb24gPSBjb3Vwb25zLmRhdGEuc2hpZnQoKVxyXG4gICAgLy8gVmVyaWZpY2Egc2UgbyBjdXBvbSDDqSBhcGxpY2F2ZWwgbmEgbG9qYVxyXG4gICAgY29uc3QgaXNJblNob3AgPSBjb3Vwb24uc2hvcEF2YWlsYWJpbGl0eSA9PT0gU2hvcHMuQUxMIHx8IGNvdXBvbi5zaG9wQXZhaWxhYmlsaXR5ID09PSB0aGlzLmRlZmF1bHRTaG9wXHJcblxyXG4gICAgLy8gQ3Vwb24gbsOjbyBhcGxpY2F2ZWwgYSBsb2phIHJldG9ybmEgZXJyb1xyXG4gICAgaWYgKCFpc0luU2hvcCkgcmV0dXJuIHRocm93RXJyb3IoJ0N1cG9tIGludsOhbGlkbyBwYXJhIGxvamEuJylcclxuXHJcbiAgICAvLyBWZXJpZmljYSBzZSBvIGNvdXBvbiDDqSBhcGxpY2FkbyBubyBjaGVja291dCBxdWUgZXN0w6Egc2VuZG8gcmVhbGl6YWRvXHJcbiAgICBjb25zdCBpc0NoZWNrb3V0VHlwZSA9IGNvdXBvbi5jaGVja291dFR5cGUgPT09IENoZWNrb3V0VHlwZXMuQUxMIHx8IGNvdXBvbi5jaGVja291dFR5cGUgPT09IGNoZWNrb3V0VHlwZVxyXG5cclxuICAgIC8vIEN1cG9uIG7Do28gYXBsaWNhdmVsIGFvIGNoZWNrb3V0IHJldG9ybmEgZXJyb1xyXG4gICAgaWYgKCFpc0NoZWNrb3V0VHlwZSkgcmV0dXJuIHRocm93RXJyb3IoJ0N1cG9tIGludsOhbGlkby4gRXJybyBkZSBjaGVja291dC4nKVxyXG5cclxuICAgIC8vIFZlcmlmaWNhIHNlIG8gY3Vwb20gw6kgb3UgcG9kZSBzZXIgYXBsaWNhZG8gcGFyYSBzdWJzY3JpcHRpb25cclxuICAgIGlmIChjaGVja291dFR5cGUgPT09IENoZWNrb3V0VHlwZXMuQUxMIHx8IGNoZWNrb3V0VHlwZSA9PT0gQ2hlY2tvdXRUeXBlcy5TVUJTQ1JJUFRJT04pIHtcclxuICAgICAgLy8gU2UgbyBjdXBvbSB0aXZlciB1bSBwbGFubyBhc3NvY2lhZG8sIHZlcmlmaWNhIHNlIMOpIG8gbWVzbW8gcGxhbm8gZG8gY2hlY2tvdXQgZGEgYXNzaW5hdHVyYVxyXG4gICAgICBpZiAoY291cG9uLnBsYW4gJiYgY291cG9uLnBsYW4udG9VcHBlckNhc2UoKSAhPT0gcGxhbi50b1VwcGVyQ2FzZSgpKVxyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCdDdXBvbSBpbnbDoWxpZG8gcGFyYSBzdWEgYXNzaW5hdHVyYS4nKVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChpc1N1YnNjcmlwdGlvbikgcmV0dXJuIG9mKGNvdXBvbilcclxuXHJcbiAgICAvLyBWZXJpZmljYSBzZSBwb3NzdWkgbyB2YWxvciBtaW5pbW8gZGUgY29tcHJhIHBhcmEgdXRpbGl6YcOnw6NvIGRvIGN1cG9tXHJcbiAgICBjb25zdCBoYXNNaW5TdWJUb3RhbCA9IHRoaXMuaGFzTWluU3ViVG90YWwoY291cG9uLCBjaGVja291dClcclxuXHJcbiAgICAvLyBTZSBuw6NvIHRlbSB2YWxvciBtw61uaW1vIGF0aW5naWRvLCByZXRvcm5hIGVycm9cclxuICAgIGlmICghaGFzTWluU3ViVG90YWwpIHJldHVybiB0aHJvd0Vycm9yKCdWYWxvciBtw61uaW1vIG7Do28gYXRpbmdpZG8nKVxyXG5cclxuICAgIHJldHVybiBvZihjb3Vwb24pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzVmFsaWRDb3Vwb24oY291cG9uOiBDb3Vwb24sIHVzZXJFbWFpbDogc3RyaW5nKTogQ291cG9uIHtcclxuICAgIC8vIFZlcmlmaWNhIGEgZGF0YSBkZSBpbmljaW8gZGUgdmFsaWRhZGUgZG8gY3Vwb21cclxuICAgIGlmIChjb3Vwb24/LmJlZ2luQXQgPiBuZXcgRGF0ZSgpKSB0aHJvdyBuZXcgSW52YWxpZENvdXBvbkVycm9yKCdDdXBvbSBhaW5kYSBuw6NvIGxpYmVyYWRvLicpXHJcblxyXG4gICAgLy8gVmVyaWZpY2EgYSBkYXRhIGRlIHZhbGlkYWRlIGRvIGN1cG9tXHJcbiAgICBpZiAoY291cG9uPy5leHBpcmVzSW4gPCBuZXcgRGF0ZSgpKSB0aHJvdyBuZXcgSW52YWxpZENvdXBvbkVycm9yKCdDdXBvbSBleHBpcmFkby4nKVxyXG5cclxuICAgIHJldHVybiBjb3Vwb25cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgY2hlY2tDb3Vwb25Vc2VBbmRMaW1pdChjb3Vwb246IENvdXBvbiwgdXNlckVtYWlsOiBzdHJpbmcsIGNoZWNrb3V0KSB7XHJcbiAgICAvLyBCdXNjYSBvcmRlcnMgcXVlIHBvc3N1ZW0gbyBjdXBvbSBlIHF1ZSBlc3TDo28gcGFnYXNcclxuICAgIGNvbnN0IG9yZGVycyA9IGF3YWl0IHRoaXMub3JkZXJSZXBvc2l0b3J5LmZpbmQoe1xyXG4gICAgICBmaWx0ZXJzOiB7XHJcbiAgICAgICAgY291cG9uOiB7IGlkOiBjb3Vwb24uaWQgfSxcclxuICAgICAgICBwYXltZW50OiB7IHN0YXR1czogJ3BhaWQnIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG5cclxuICAgIC8vIG9yZGVycyBxdWUgdXN1YXJpbyBqYSBmZXogY29tIG8gY3Vwb21cclxuICAgIGNvbnN0IG9yZGVyc1VzZXJDb3Vwb24gPSBvcmRlcnMuZGF0YS5maWx0ZXIoKG8pID0+IG8udXNlci5lbWFpbCA9PSB1c2VyRW1haWwpXHJcblxyXG4gICAgLy8gVmVyaWZpY2EgbyBsaW1pdGUgZGUgdXNvIGRlIGN1cG9tIHBvciB1c3VhcmlvXHJcbiAgICBpZiAoY291cG9uLnVzZUxpbWl0UGVyVXNlciAmJiBvcmRlcnNVc2VyQ291cG9uLmxlbmd0aClcclxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignTGltaXRlIGRlIHVzbyBwb3IgdXN1w6FyaW8gYXRpbmdpZG8uJylcclxuXHJcbiAgICAvLyBWZXJpZmljYSBvIGxpbWl0ZSBkZSB1c28gZ2VyYWwgcG9yIHVzdWFyaW9cclxuICAgIGlmIChjb3Vwb24udXNlTGltaXQgJiYgb3JkZXJzLmRhdGEubGVuZ3RoID49IGNvdXBvbi51c2VMaW1pdClcclxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignTGltaXRlIGRlIHVzbyBhdGluZ2lkby4nKVxyXG5cclxuICAgIGNvbnN0IHZhbGlkVXNlciA9IGF3YWl0IHRoaXMudXNlclZhbGlkYXRpb25BbmRTdWJzY3JpcHRpb25TdGF0dXMoY291cG9uLCB1c2VyRW1haWwpXHJcbiAgICBpZiAoIXZhbGlkVXNlcikgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignVXN1w6FyaW8gbsOjbyBlbGVnw612ZWwuJylcclxuXHJcbiAgICAgLy8gVmVyaWZpY2Egc2UgYSBjb21wcmEgcG9zc3VpIHByb2R1dG9zIGVsZWfDrXZlaXMgcGFyYSBkZXNjb250b1xyXG4gICAgY29uc3QgaGFzUHJvZHVjdENhdGVnb3JpZXMgPSBhd2FpdCB0aGlzLmhhc1Byb2R1Y3RDYXRlZ29yaWVzKGNvdXBvbiwgY2hlY2tvdXQpXHJcbiAgICBjb25zb2xlLmxvZygnaGFzUHJvZHVjdENhdGVnb3JpZXMnLCBoYXNQcm9kdWN0Q2F0ZWdvcmllcylcclxuICAgIC8vIFNlIG7Do28gdGVtIHByb2R1dG9zIGVsZWfDrXZlaXMsIHJldG9ybmEgZXJyb1xyXG4gICAgaWYgKCFoYXNQcm9kdWN0Q2F0ZWdvcmllcykgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignU2V1IGNhcnJpbmhvIG7Do28gcG9zc3VpIHByb2R1dG9zIGVsZWfDrXZlaXMgcGFyYSBkZXNjb250by4nKVxyXG4gICAgXHJcbiAgICByZXR1cm4gY291cG9uXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FsY0Rpc2NvdW50U3Vic2NyaXB0aW9uKGNvdXBvbjogQ291cG9uLCBjaGVja291dDogUGFydGlhbDxDaGVja291dFN1YnNjcmlwdGlvbj4pOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gICAgLy9cclxuICAgIGxldCBkaXNjb3VudCA9IDBcclxuXHJcbiAgICBpZiAoY291cG9uLnR5cGUgPT09IENvdXBvblR5cGVzLkFCU09MVVRFKSBkaXNjb3VudCA9IGNvdXBvbi5kaXNjb3VudFxyXG4gICAgZWxzZSBpZiAoY291cG9uLnR5cGUgPT09IENvdXBvblR5cGVzLlBFUkNFTlRBR0UpXHJcbiAgICAgIGRpc2NvdW50ID0gY2hlY2tvdXQuc3Vic2NyaXB0aW9uUGxhbi5yZWN1cnJlbmNlUHJpY2UgKiAoY291cG9uLmRpc2NvdW50IC8gMTAwKVxyXG5cclxuICAgIHJldHVybiBvZihkaXNjb3VudClcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBjYWxjRGlzY291bnRTaG9wcGluZyhjb3Vwb246IENvdXBvbiwgY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+KTogUHJvbWlzZTxPYnNlcnZhYmxlPG51bWJlcj4+IHtcclxuICAgIGxldCBkaXNjb3VudCA9IDBcclxuXHJcbiAgICBzd2l0Y2ggKGNvdXBvbi50eXBlKSB7XHJcbiAgICAgIGNhc2UgQ291cG9uVHlwZXMuQUJTT0xVVEU6IHtcclxuICAgICAgICBkaXNjb3VudCA9IGNvdXBvbi5kaXNjb3VudFxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBDb3Vwb25UeXBlcy5QRVJDRU5UQUdFOiB7XHJcbiAgICAgICAgZGlzY291bnQgPSBhd2FpdCB0aGlzLmNhbGNTaG9wcGluZ1BlcmNlbnRhZ2VEaXNjb3VudChjb3Vwb24sIGNoZWNrb3V0KVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gb2YoZGlzY291bnQpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNhbGNTaG9wcGluZ1BlcmNlbnRhZ2VEaXNjb3VudChjb3Vwb246IENvdXBvbiwgY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+KTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgIGxldCBkaXNjb3VudCA9IDBcclxuICAgIGNvbnN0IHNob3AgPSBjaGVja291dC5zaG9wXHJcbiAgICBsZXQgbGluZUl0ZW5zRGlzY291bnQgPSBbXVxyXG4gICAgY29uc3QgY291cG9uQ2F0ZWdvcmllcyA9IGF3YWl0IHRoaXMuZ2V0Q291cG9uQ2F0ZWdvcmllc0lkKGNvdXBvbilcclxuXHJcbiAgICBpZiAoY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcyAmJiBjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmxlbmd0aCkge1xyXG4gICAgICBsaW5lSXRlbnNEaXNjb3VudCA9IGNoZWNrb3V0LmxpbmVJdGVtcz8uZmlsdGVyKChpKSA9PiB7XHJcbiAgICAgICAgaWYgKGkuY2F0ZWdvcmllcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXR1cm4gaS5jYXRlZ29yaWVzLnNvbWUoKGMpID0+IGNvdXBvbkNhdGVnb3JpZXMuc29tZShjYXQgPT4gKGNhdC5pZCA9PSBjIHx8IGNhdC5maXJlc3RvcmVJZCA9PSBjKSkpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlXHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsaW5lSXRlbnNEaXNjb3VudCA9IGNoZWNrb3V0LmxpbmVJdGVtc1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHN1YlRvdGFsID1cclxuICAgICAgbGluZUl0ZW5zRGlzY291bnQucmVkdWNlKFxyXG4gICAgICAgIChhY2MsIGN1cnI6IExpbmVJdGVtKSA9PlxyXG4gICAgICAgICAgY2hlY2tvdXQudXNlcj8uaXNTdWJzY3JpYmVyICYmIGN1cnIucHJpY2Vbc2hvcF0/LnN1YnNjcmliZXJQcmljZVxyXG4gICAgICAgICAgICA/IGFjYyArIGN1cnIucHJpY2Vbc2hvcF0/LnN1YnNjcmliZXJQcmljZSAqIGN1cnIucXVhbnRpdHlcclxuICAgICAgICAgICAgOiBhY2MgKyBjdXJyLnByaWNlUGFpZCAqIGN1cnIucXVhbnRpdHksXHJcbiAgICAgICAgMCxcclxuICAgICAgKSB8fCAwXHJcblxyXG4gICAgZGlzY291bnQgPSBzdWJUb3RhbCAqIChjb3Vwb24uZGlzY291bnQgLyAxMDApXHJcblxyXG4gICAgcmV0dXJuIGRpc2NvdW50XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc01pblN1YlRvdGFsKGNvdXBvbjogQ291cG9uLCBjaGVja291dDogUGFydGlhbDxDaGVja291dD4pOiBib29sZWFuIHtcclxuICAgIGlmICghY291cG9uLm1pblN1YlRvdGFsVmFsdWUpIHJldHVybiB0cnVlXHJcblxyXG4gICAgY29uc3Qgc2hvcCA9IGNoZWNrb3V0LnNob3BcclxuXHJcbiAgICBsZXQgc3ViVG90YWwgPVxyXG4gICAgICBjaGVja291dC5saW5lSXRlbXM/LnJlZHVjZShcclxuICAgICAgICAoYWNjLCBjdXJyKSA9PlxyXG4gICAgICAgICAgY2hlY2tvdXQudXNlcj8uaXNTdWJzY3JpYmVyICYmIGN1cnIucHJpY2Vbc2hvcF0/LnN1YnNjcmliZXJQcmljZVxyXG4gICAgICAgICAgICA/IGFjYyArIGN1cnIucHJpY2Vbc2hvcF0/LnN1YnNjcmliZXJQcmljZSAqIGN1cnIucXVhbnRpdHlcclxuICAgICAgICAgICAgOiBhY2MgKyBjdXJyLnByaWNlUGFpZCAqIGN1cnIucXVhbnRpdHksXHJcbiAgICAgICAgMCxcclxuICAgICAgKSB8fCAwXHJcblxyXG4gICAgaWYgKGNvdXBvbi5taW5TdWJUb3RhbFZhbHVlIDw9IHN1YlRvdGFsKSByZXR1cm4gdHJ1ZVxyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGhhc1Byb2R1Y3RDYXRlZ29yaWVzKGNvdXBvbjogQ291cG9uLCBjaGVja291dDogUGFydGlhbDxDaGVja291dD4pOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuXHJcbiAgICBpZiAoIWNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMgJiYgIWNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCduw6NvIHBvc3N1aSBjYXRlZ29yaWVzJylcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb3Vwb25DYXRlZ29yaWVzID0gYXdhaXQgdGhpcy5nZXRDb3Vwb25DYXRlZ29yaWVzSWQoY291cG9uKVxyXG4gICAgXHJcbiAgICBjb25zb2xlLmxvZygnY291cG9uQ2F0ZWdvcmllcycsIGNvdXBvbkNhdGVnb3JpZXMubGVuZ3RoLCBjb3Vwb25DYXRlZ29yaWVzKVxyXG5cclxuICAgIGNvbnN0IGhhc0NhdGVnb3JpZXMgPSBjaGVja291dC5saW5lSXRlbXM/LmZpbHRlcihpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coJ2VudHJvdSBubyBmaWx0ZXInKVxyXG4gICAgICBpZiAoIWkuY2F0ZWdvcmllcyB8fCAhaS5jYXRlZ29yaWVzPy5sZW5ndGgpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygncHJvZHV0byBuw6NvIHRlbSBjYXRlZ29yaWFzJylcclxuICAgICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gaS5jYXRlZ29yaWVzLnNvbWUoKGMpID0+IHtcclxuICAgICAgICAgY29uc29sZS5sb2coJ2VudHJvdSBubyBzb21lIDEnLCBjKVxyXG4gICAgICAgIHJldHVybiBjb3Vwb25DYXRlZ29yaWVzLnNvbWUoY2F0ID0+IChjYXQuaWQgPT0gYyB8fCBjYXQuZmlyZXN0b3JlSWQgPT0gYykpXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICAvLyByZXR1cm4gaS5jYXRlZ29yaWVzLnNvbWUoYXN5bmMgKGMpID0+IHtcclxuICAgICAgLy8gICBjb25zb2xlLmxvZygnc29tZSBjYXRlZ29yeSBjJywgYylcclxuICAgICAgLy8gICBjb25zdCBjYXRlZ29yaWE6IENhdGVnb3J5ICYgeyBmaXJlc3RvcmVJZD86IHN0cmluZyB9ID0gYXdhaXQgdGhpcy5jYXRlZ29yeVJlcG9zaXRvcnkuZ2V0KHtpZDogY30pICAgICAgICAgIFxyXG4gICAgICAvLyAgIGNvbnNvbGUubG9nKGNhdGVnb3JpYSlcclxuICAgICAgLy8gICBjb25zb2xlLmxvZyhjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmluY2x1ZGVzKGNhdGVnb3JpYS5pZCksIGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmZpcmVzdG9yZUlkKSwgaS5pc0dpZnQpXHJcbiAgICAgIC8vICAgY29uc29sZS5sb2coJ3ZhbGlkYXRpb24nLCAoY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5pbmNsdWRlcyhjYXRlZ29yaWEuaWQpIHx8IGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmZpcmVzdG9yZUlkKSkgJiYgIWkuaXNHaWZ0KVxyXG4gICAgICAvLyAgIHJldHVybiAoY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5pbmNsdWRlcyhjYXRlZ29yaWEuaWQpIHx8IGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmZpcmVzdG9yZUlkKSkgJiYgIWkuaXNHaWZ0XHJcbiAgICAgIFxyXG4gICAgICAvLyB9KVxyXG4gICAgfSlcclxuXHJcblxyXG4gICAgY29uc29sZS5sb2coJ2ZpbmFsIHJldHVybicsIGhhc0NhdGVnb3JpZXMsIGhhc0NhdGVnb3JpZXMubGVuZ3RoKVxyXG4gICAgcmV0dXJuIGhhc0NhdGVnb3JpZXMubGVuZ3RoID8gdHJ1ZSA6IGZhbHNlXHJcblxyXG5cclxuICAgIC8vIGlmIChjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzICYmIGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMubGVuZ3RoKSB7XHJcbiAgICAvLyAgIGNvbnN0IGhhc0NhdGVnb3JpZXMgPSBjaGVja291dC5saW5lSXRlbXM/LmZpbHRlcigoaSkgPT4ge1xyXG4gICAgLy8gICAgIGlmIChpLmNhdGVnb3JpZXM/Lmxlbmd0aCkge1xyXG4gXHJcbiAgICAvLyAgICAgICByZXR1cm4gaS5jYXRlZ29yaWVzLnNvbWUoYXN5bmMgKGMpID0+IHtcclxuICAgIC8vICAgICAgICAgY29uc3QgY2F0ZWdvcmlhOiBDYXRlZ29yeSAmIHsgZmlyZXN0b3JlSWQ/OiBzdHJpbmcgfSA9IGF3YWl0IHRoaXMuY2F0ZWdvcnlSZXBvc2l0b3J5LmdldCh7aWQ6IGN9KSAgICAgICAgICBcclxuICAgIC8vICAgICAgICAgY29uc29sZS5sb2coY2F0ZWdvcmlhKVxyXG4gICAgLy8gICAgICAgICBjb25zb2xlLmxvZyhjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmluY2x1ZGVzKGNhdGVnb3JpYS5pZCksIGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmZpcmVzdG9yZUlkKSwgaS5pc0dpZnQpXHJcbiAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKCd2YWxpZGF0aW9uJywgKGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMuaW5jbHVkZXMoY2F0ZWdvcmlhLmlkKSB8fCBjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmluY2x1ZGVzKGNhdGVnb3JpYS5maXJlc3RvcmVJZCkpICYmICFpLmlzR2lmdClcclxuICAgIC8vICAgICAgICAgcmV0dXJuIChjb3Vwb24ucHJvZHVjdHNDYXRlZ29yaWVzLmluY2x1ZGVzKGNhdGVnb3JpYS5pZCkgfHwgY291cG9uLnByb2R1Y3RzQ2F0ZWdvcmllcy5pbmNsdWRlcyhjYXRlZ29yaWEuZmlyZXN0b3JlSWQpKSAmJiAhaS5pc0dpZnRcclxuICAgIC8vICAgICAgIH0pXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIHJldHVybiB0cnVlXHJcbiAgICAvLyAgIH0pXHJcbiAgICAvLyAgIHJldHVybiBoYXNDYXRlZ29yaWVzLmxlbmd0aCA/IHRydWUgOiBmYWxzZVxyXG4gICAgLy8gfSBlbHNlIHtcclxuICAgIC8vICAgcmV0dXJuIHRydWVcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgdXNlclZhbGlkYXRpb25BbmRTdWJzY3JpcHRpb25TdGF0dXMoY291cG9uOiBDb3Vwb24sIHVzZXJFbWFpbDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAvLyBWZXJpZmljYSBzZSBvIGVtYWlsIGRvIHVzdcOhcmlvIMOpIGNvb3Jwb3JhdGl2b1xyXG4gICAgaWYgKCF0aGlzLmVtYWlsSXNGcm9tQ29sbGFib3JhdG9yKHVzZXJFbWFpbCkgJiYgY291cG9uLmV4Y2x1c2l2aXR5VHlwZSA9PT0gRXhjbHVzaXZpdGllcy5DT0xMQUJPUkFUT1JTKVxyXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZENvdXBvbkVycm9yKCdWb2PDqiBuw6NvIMOpIGNvbGFib3JhZG9yLicpXHJcblxyXG4gICAgLy8gVmVyaWZpY2Egc2UgbyBlbWFpbCBkbyB1c3XDoXJpbyDDqSBhc3NvY2lhZG8gYW8gY3Vwb20gZGUgdXNvIHBvciB1c3VhcmlvXHJcbiAgICBpZiAoY291cG9uLmV4Y2x1c2l2aXR5VHlwZSA9PT0gRXhjbHVzaXZpdGllcy5TUEVDSUZJQ19VU0VSICYmIGNvdXBvbi51c2VyRXhjbHVzaXZlRW1haWwgIT09IHVzZXJFbWFpbClcclxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignQ3Vwb20gbsOjbyDDqSB2w6FsaWRvIHBhcmEgZXN0ZSB1c3XDoXJpby4nKVxyXG5cclxuICAgIGNvbnN0IGNvdXBvblJ1bGVTdWJzY3JpcHRpb24gPVxyXG4gICAgICBjb3Vwb24uZXhjbHVzaXZpdHlUeXBlID09PSBFeGNsdXNpdml0aWVzLkFDVElWRV9TVUJTQ1JJQkVSIHx8XHJcbiAgICAgIGNvdXBvbi5leGNsdXNpdml0eVR5cGUgPT09IEV4Y2x1c2l2aXRpZXMuSU5BQ1RJVkVfU1VCU0NSSUJFUiB8fFxyXG4gICAgICBjb3Vwb24uZXhjbHVzaXZpdHlUeXBlID09PSBFeGNsdXNpdml0aWVzLk5PTl9TVUJTQ1JJQkVSXHJcblxyXG4gICAgaWYgKGNvdXBvblJ1bGVTdWJzY3JpcHRpb24gJiYgdXNlckVtYWlsKSB7XHJcbiAgICAgIGNvbnN0IHN1YiA9IGF3YWl0IHRoaXMuc3Vic2NyaXB0aW9uUmVwb3NpdG9yeVxyXG4gICAgICAgIC5maW5kKHtcclxuICAgICAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICAgICAgdXNlcjoge1xyXG4gICAgICAgICAgICAgIGVtYWlsOiB7IG9wZXJhdG9yOiBXaGVyZS5FUVVBTFMsIHZhbHVlOiB1c2VyRW1haWwgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSlcclxuICAgICAgICAudGhlbigoc3ViKSA9PiBzdWIuZGF0YSlcclxuXHJcbiAgICAgIGNvbnN0IGFjdGl2ZVN1YnMgPSBzdWI/LmZpbHRlcigocykgPT4gcy5zdGF0dXMgPT09IFN0YXR1cy5BQ1RJVkUpXHJcblxyXG4gICAgICBzd2l0Y2ggKGNvdXBvbi5leGNsdXNpdml0eVR5cGUpIHtcclxuICAgICAgICBjYXNlIEV4Y2x1c2l2aXRpZXMuQUNUSVZFX1NVQlNDUklCRVI6XHJcbiAgICAgICAgICByZXR1cm4gYWN0aXZlU3Vicy5sZW5ndGggPiAwXHJcbiAgICAgICAgY2FzZSBFeGNsdXNpdml0aWVzLklOQUNUSVZFX1NVQlNDUklCRVI6XHJcbiAgICAgICAgICByZXR1cm4gYWN0aXZlU3Vicy5sZW5ndGggPT09IDBcclxuICAgICAgICBjYXNlIEV4Y2x1c2l2aXRpZXMuTk9OX1NVQlNDUklCRVI6XHJcbiAgICAgICAgICByZXR1cm4gc3ViLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2VcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGdldENvdXBvbkNhdGVnb3JpZXNJZChjb3Vwb24pIHtcclxuXHJcbiAgICAgbGV0IGNvdXBvbkNhdGVnb3JpZXM6IHsgaWQ6IHN0cmluZywgZmlyZXN0b3JlSWQ6IHN0cmluZyB9W10gPSBbXVxyXG5cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgbGV0IGM6IENhdGVnb3J5ICYgeyBmaXJlc3RvcmVJZD86IHN0cmluZyB9ID0gYXdhaXQgdGhpcy5jYXRlZ29yeVJlcG9zaXRvcnkuZ2V0KHsgaWQ6IGNvdXBvbi5wcm9kdWN0c0NhdGVnb3JpZXNbaW5kZXhdIH0pICAgIFxyXG4gICAgICAgIGNvdXBvbkNhdGVnb3JpZXMucHVzaCh7IGlkOiBjLmlkLCBmaXJlc3RvcmVJZDogYy5maXJlc3RvcmVJZH0pXHJcbiAgICAgIH1cclxuICAgIFxyXG4gICAgICByZXR1cm4gY291cG9uQ2F0ZWdvcmllc1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXBhcmF0ZVZhbGlkQ291cG9ucyA9IChcclxuICAgIGNvdXBvbnM6IENvdXBvbltdLFxyXG4gICAgdXNlckVtYWlsOiBzdHJpbmcsXHJcbiAgKTogeyB2YWxpZHM6IENvdXBvbltdOyBpbnZhbGlkczogSW52YWxpZENvdXBvbkVycm9yW10gfSA9PlxyXG4gICAgY291cG9uc1xyXG4gICAgICAubWFwKChjb3Vwb24pID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgaWYgKCEoY291cG9uIGluc3RhbmNlb2YgQ291cG9uKSkgdGhyb3cgbmV3IEludmFsaWRDb3Vwb25FcnJvcignQ3Vwb20gaW52w6FsaWRvLicpXHJcbiAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkQ291cG9uKGNvdXBvbiwgdXNlckVtYWlsKSkgcmV0dXJuIGNvdXBvblxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICByZXR1cm4gZXJyb3IgYXMgSW52YWxpZENvdXBvbkVycm9yXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAucmVkdWNlKFxyXG4gICAgICAgIChjdXJyZW50LCBjb3Vwb24pID0+ICh7XHJcbiAgICAgICAgICAuLi5jdXJyZW50LFxyXG4gICAgICAgICAgLi4uKGNvdXBvbiBpbnN0YW5jZW9mIENvdXBvblxyXG4gICAgICAgICAgICA/IHsgdmFsaWRzOiBbLi4uY3VycmVudC52YWxpZHMsIGNvdXBvbl0gfVxyXG4gICAgICAgICAgICA6IHsgaW52YWxpZHM6IFsuLi5jdXJyZW50LmludmFsaWRzLCBjb3Vwb25dIH0pLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHZhbGlkczogW10gYXMgQ291cG9uW10sXHJcbiAgICAgICAgICBpbnZhbGlkczogW10gYXMgSW52YWxpZENvdXBvbkVycm9yW10sXHJcbiAgICAgICAgfSxcclxuICAgICAgKVxyXG59XHJcbiJdfQ==
@@ -170,7 +170,7 @@ class CouponService {
170
170
  console.log('hasProductCategories', hasProductCategories);
171
171
  // Se não tem produtos elegíveis, retorna erro
172
172
  if (!hasProductCategories)
173
- return throwError('Seu carrinho não possui produtos elegíveis para desconto.');
173
+ throw new InvalidCouponError('Seu carrinho não possui produtos elegíveis para desconto.');
174
174
  return coupon;
175
175
  });
176
176
  }
@@ -184,44 +184,49 @@ class CouponService {
184
184
  return of(discount);
185
185
  }
186
186
  calcDiscountShopping(coupon, checkout) {
187
- let discount = 0;
188
- switch (coupon.type) {
189
- case CouponTypes.ABSOLUTE: {
190
- discount = coupon.discount;
191
- break;
192
- }
193
- case CouponTypes.PERCENTAGE: {
194
- discount = this.calcShoppingPercentageDiscount(coupon, checkout);
195
- break;
187
+ return __awaiter(this, void 0, void 0, function* () {
188
+ let discount = 0;
189
+ switch (coupon.type) {
190
+ case CouponTypes.ABSOLUTE: {
191
+ discount = coupon.discount;
192
+ break;
193
+ }
194
+ case CouponTypes.PERCENTAGE: {
195
+ discount = yield this.calcShoppingPercentageDiscount(coupon, checkout);
196
+ break;
197
+ }
196
198
  }
197
- }
198
- return of(discount);
199
+ return of(discount);
200
+ });
199
201
  }
200
202
  calcShoppingPercentageDiscount(coupon, checkout) {
201
203
  var _a;
202
- let discount = 0;
203
- const shop = checkout.shop;
204
- let lineItensDiscount = [];
205
- if (coupon.productsCategories && coupon.productsCategories.length) {
206
- lineItensDiscount = (_a = checkout.lineItems) === null || _a === void 0 ? void 0 : _a.filter((i) => {
207
- var _a;
208
- if ((_a = i.categories) === null || _a === void 0 ? void 0 : _a.length) {
209
- return i.categories.some((c) => coupon.productsCategories.includes(c));
210
- }
211
- return true;
212
- });
213
- }
214
- else {
215
- lineItensDiscount = checkout.lineItems;
216
- }
217
- const subTotal = lineItensDiscount.reduce((acc, curr) => {
218
- var _a, _b, _c;
219
- return ((_a = checkout.user) === null || _a === void 0 ? void 0 : _a.isSubscriber) && ((_b = curr.price[shop]) === null || _b === void 0 ? void 0 : _b.subscriberPrice)
220
- ? acc + ((_c = curr.price[shop]) === null || _c === void 0 ? void 0 : _c.subscriberPrice) * curr.quantity
221
- : acc + curr.pricePaid * curr.quantity;
222
- }, 0) || 0;
223
- discount = subTotal * (coupon.discount / 100);
224
- return discount;
204
+ return __awaiter(this, void 0, void 0, function* () {
205
+ let discount = 0;
206
+ const shop = checkout.shop;
207
+ let lineItensDiscount = [];
208
+ const couponCategories = yield this.getCouponCategoriesId(coupon);
209
+ if (coupon.productsCategories && coupon.productsCategories.length) {
210
+ lineItensDiscount = (_a = checkout.lineItems) === null || _a === void 0 ? void 0 : _a.filter((i) => {
211
+ var _a;
212
+ if ((_a = i.categories) === null || _a === void 0 ? void 0 : _a.length) {
213
+ return i.categories.some((c) => couponCategories.some(cat => (cat.id == c || cat.firestoreId == c)));
214
+ }
215
+ return true;
216
+ });
217
+ }
218
+ else {
219
+ lineItensDiscount = checkout.lineItems;
220
+ }
221
+ const subTotal = lineItensDiscount.reduce((acc, curr) => {
222
+ var _a, _b, _c;
223
+ return ((_a = checkout.user) === null || _a === void 0 ? void 0 : _a.isSubscriber) && ((_b = curr.price[shop]) === null || _b === void 0 ? void 0 : _b.subscriberPrice)
224
+ ? acc + ((_c = curr.price[shop]) === null || _c === void 0 ? void 0 : _c.subscriberPrice) * curr.quantity
225
+ : acc + curr.pricePaid * curr.quantity;
226
+ }, 0) || 0;
227
+ discount = subTotal * (coupon.discount / 100);
228
+ return discount;
229
+ });
225
230
  }
226
231
  hasMinSubTotal(coupon, checkout) {
227
232
  var _a;
@@ -245,25 +250,18 @@ class CouponService {
245
250
  console.log('não possui categories');
246
251
  return true;
247
252
  }
248
- const hasCategories = (_a = checkout.lineItems) === null || _a === void 0 ? void 0 : _a.filter((i) => __awaiter(this, void 0, void 0, function* () {
249
- var _b;
250
- if (!i.categories || !((_b = i.categories) === null || _b === void 0 ? void 0 : _b.length)) {
253
+ const couponCategories = yield this.getCouponCategoriesId(coupon);
254
+ console.log('couponCategories', couponCategories.length, couponCategories);
255
+ const hasCategories = (_a = checkout.lineItems) === null || _a === void 0 ? void 0 : _a.filter(i => {
256
+ var _a;
257
+ console.log('entrou no filter');
258
+ if (!i.categories || !((_a = i.categories) === null || _a === void 0 ? void 0 : _a.length)) {
251
259
  console.log('produto não tem categorias');
252
260
  return true;
253
261
  }
254
- let couponCategories = [];
255
- for (let index = 0; index < coupon.productsCategories.length; index++) {
256
- let c = yield this.categoryRepository.get({ id: coupon.productsCategories[index] });
257
- couponCategories.push({ id: c.id, firestoreId: c.firestoreId });
258
- }
259
- console.log('couponCategories', couponCategories.length, couponCategories);
260
262
  return i.categories.some((c) => {
261
- console.log('some 1 ', c);
262
- return couponCategories.some(cat => {
263
- console.log('some 2', cat, cat.id == c, cat.firestoreId);
264
- if (cat.id == c || cat.firestoreId)
265
- return true;
266
- });
263
+ console.log('entrou no some 1', c);
264
+ return couponCategories.some(cat => (cat.id == c || cat.firestoreId == c));
267
265
  });
268
266
  // return i.categories.some(async (c) => {
269
267
  // console.log('some category c', c)
@@ -273,7 +271,7 @@ class CouponService {
273
271
  // console.log('validation', (coupon.productsCategories.includes(categoria.id) || coupon.productsCategories.includes(categoria.firestoreId)) && !i.isGift)
274
272
  // return (coupon.productsCategories.includes(categoria.id) || coupon.productsCategories.includes(categoria.firestoreId)) && !i.isGift
275
273
  // })
276
- }));
274
+ });
277
275
  console.log('final return', hasCategories, hasCategories.length);
278
276
  return hasCategories.length ? true : false;
279
277
  });
@@ -314,6 +312,16 @@ class CouponService {
314
312
  return true;
315
313
  });
316
314
  }
315
+ getCouponCategoriesId(coupon) {
316
+ return __awaiter(this, void 0, void 0, function* () {
317
+ let couponCategories = [];
318
+ for (let index = 0; index < coupon.productsCategories.length; index++) {
319
+ let c = yield this.categoryRepository.get({ id: coupon.productsCategories[index] });
320
+ couponCategories.push({ id: c.id, firestoreId: c.firestoreId });
321
+ }
322
+ return couponCategories;
323
+ });
324
+ }
317
325
  }
318
326
  CouponService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CouponService, deps: [{ token: 'CouponRepository' }, { token: DEFAULT_SHOP }, { token: 'OrderRepository' }, { token: 'SubscriptionRepository' }, { token: 'CategoryRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
319
327
  CouponService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.12", ngImport: i0, type: CouponService, providedIn: 'root' });
@@ -367,7 +375,7 @@ class CheckoutService {
367
375
  return of();
368
376
  }
369
377
  calcDiscount(coupon) {
370
- return this.getCheckout().pipe(concatMap((checkout) => this.couponService.calcDiscountShopping(coupon, checkout).pipe()));
378
+ return this.getCheckout().pipe(concatMap((checkout) => this.couponService.calcDiscountShopping(coupon, checkout)));
371
379
  }
372
380
  checkCoupon(nickname, checkoutType) {
373
381
  return this.getCheckout().pipe(concatMap((checkout) => {