ng-easycommerce 1.1.2 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/README.md +10 -0
  2. package/assets/ec-i18n/ct.json +2 -0
  3. package/assets/ec-i18n/en.json +2 -0
  4. package/assets/ec-i18n/es.json +2 -0
  5. package/assets/ec-i18n/fr.json +2 -0
  6. package/assets/ec-i18n/gl.json +2 -0
  7. package/assets/ec-i18n/pr.json +2 -0
  8. package/bundles/ng-easycommerce.umd.js +5663 -4057
  9. package/bundles/ng-easycommerce.umd.js.map +1 -1
  10. package/bundles/ng-easycommerce.umd.min.js +1 -1
  11. package/bundles/ng-easycommerce.umd.min.js.map +1 -1
  12. package/esm2015/lib/api/connection.service.js +2 -2
  13. package/esm2015/lib/core.consts.js +4 -5
  14. package/esm2015/lib/ec-component/cart-bootstrap-navigation.js +27 -0
  15. package/esm2015/lib/ec-component/cart-ec/cart-ec.component.js +11 -1
  16. package/esm2015/lib/ec-component/checkout-ec/checkout-ec.component.js +23 -2
  17. package/esm2015/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.js +185 -13
  18. package/esm2015/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.js +3 -1
  19. package/esm2015/lib/ec-component/checkout-ec/shipment-ec/shipment-ec.component.js +4 -2
  20. package/esm2015/lib/ec-component/coupon-ec/coupon-ec.component.js +6 -1
  21. package/esm2015/lib/guards/able-buyer-guard.service.js +2 -2
  22. package/esm2015/lib/guards/auth-guard.service.js +2 -2
  23. package/esm2015/lib/guards/checkout-ready.service.js +3 -3
  24. package/esm2015/lib/guards/loggedin-guard.service.js +2 -2
  25. package/esm2015/lib/guards/user-role-guard.service.js +2 -2
  26. package/esm2015/lib/services/account/orders.service.js +6 -4
  27. package/esm2015/lib/services/auth.service.js +4 -3
  28. package/esm2015/lib/services/captcha.service.js +6 -4
  29. package/esm2015/lib/services/cart.service.js +1186 -74
  30. package/esm2015/lib/services/channel-config.service.js +4 -6
  31. package/esm2015/lib/services/checkout/addressing.service.js +65 -9
  32. package/esm2015/lib/services/checkout/checkout.service.js +56 -9
  33. package/esm2015/lib/services/checkout/error-handler.service.js +4 -3
  34. package/esm2015/lib/services/checkout/payment.service.js +35 -15
  35. package/esm2015/lib/services/checkout/shipment.service.js +54 -3
  36. package/esm2015/lib/services/concatenated-associations.service.js +4 -3
  37. package/esm2015/lib/services/currency.service.js +5 -3
  38. package/esm2015/lib/services/filters.service.js +2 -2
  39. package/esm2015/lib/services/footer/footer.service.js +4 -3
  40. package/esm2015/lib/services/gift-card.service.js +56 -5
  41. package/esm2015/lib/services/parameters.service.js +5 -3
  42. package/esm2015/lib/services/reviews.service.js +5 -4
  43. package/esm2015/lib/services/seo.service.js +4 -5
  44. package/esm2015/lib/services/stores.service.js +4 -3
  45. package/esm2015/lib/services/wishlist.service.js +3 -4
  46. package/esm2015/lib/utils/analytics/google-analytics.service.js +1 -1
  47. package/esm2015/lib/utils/price-presentation.service.js +2 -3
  48. package/esm2015/lib/utils/shipping-price-display.service.js +2 -3
  49. package/esm5/lib/api/connection.service.js +2 -2
  50. package/esm5/lib/core.consts.js +4 -5
  51. package/esm5/lib/ec-component/cart-bootstrap-navigation.js +27 -0
  52. package/esm5/lib/ec-component/cart-ec/cart-ec.component.js +11 -1
  53. package/esm5/lib/ec-component/checkout-ec/checkout-ec.component.js +23 -2
  54. package/esm5/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.js +206 -12
  55. package/esm5/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.js +3 -1
  56. package/esm5/lib/ec-component/checkout-ec/shipment-ec/shipment-ec.component.js +5 -3
  57. package/esm5/lib/ec-component/coupon-ec/coupon-ec.component.js +6 -1
  58. package/esm5/lib/guards/able-buyer-guard.service.js +2 -2
  59. package/esm5/lib/guards/auth-guard.service.js +2 -2
  60. package/esm5/lib/guards/checkout-ready.service.js +3 -3
  61. package/esm5/lib/guards/loggedin-guard.service.js +2 -2
  62. package/esm5/lib/guards/user-role-guard.service.js +2 -2
  63. package/esm5/lib/services/account/orders.service.js +6 -4
  64. package/esm5/lib/services/auth.service.js +4 -3
  65. package/esm5/lib/services/captcha.service.js +6 -4
  66. package/esm5/lib/services/cart.service.js +1231 -94
  67. package/esm5/lib/services/channel-config.service.js +4 -6
  68. package/esm5/lib/services/checkout/addressing.service.js +65 -9
  69. package/esm5/lib/services/checkout/checkout.service.js +63 -12
  70. package/esm5/lib/services/checkout/error-handler.service.js +4 -3
  71. package/esm5/lib/services/checkout/payment.service.js +29 -11
  72. package/esm5/lib/services/checkout/shipment.service.js +58 -7
  73. package/esm5/lib/services/concatenated-associations.service.js +4 -3
  74. package/esm5/lib/services/currency.service.js +5 -3
  75. package/esm5/lib/services/filters.service.js +2 -2
  76. package/esm5/lib/services/footer/footer.service.js +4 -3
  77. package/esm5/lib/services/gift-card.service.js +59 -5
  78. package/esm5/lib/services/parameters.service.js +5 -3
  79. package/esm5/lib/services/reviews.service.js +5 -4
  80. package/esm5/lib/services/seo.service.js +4 -5
  81. package/esm5/lib/services/stores.service.js +4 -3
  82. package/esm5/lib/services/wishlist.service.js +3 -4
  83. package/esm5/lib/utils/analytics/google-analytics.service.js +1 -1
  84. package/esm5/lib/utils/price-presentation.service.js +2 -3
  85. package/esm5/lib/utils/shipping-price-display.service.js +2 -3
  86. package/fesm2015/ng-easycommerce.js +3966 -2412
  87. package/fesm2015/ng-easycommerce.js.map +1 -1
  88. package/fesm5/ng-easycommerce.js +5667 -4061
  89. package/fesm5/ng-easycommerce.js.map +1 -1
  90. package/lib/ec-component/cart-bootstrap-navigation.d.ts +7 -0
  91. package/lib/ec-component/cart-ec/cart-ec.component.d.ts +5 -2
  92. package/lib/ec-component/checkout-ec/checkout-ec.component.d.ts +5 -0
  93. package/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.d.ts +27 -3
  94. package/lib/services/cart.service.d.ts +120 -7
  95. package/lib/services/checkout/addressing.service.d.ts +1 -1
  96. package/lib/services/checkout/checkout.service.d.ts +3 -0
  97. package/lib/services/checkout/shipment.service.d.ts +2 -2
  98. package/lib/services/gift-card.service.d.ts +1 -0
  99. package/ng-easycommerce.metadata.json +1 -1
  100. package/package.json +1 -1
@@ -48,7 +48,7 @@ var ConnectionService = /** @class */ (function () {
48
48
  return this.http.get(api).pipe(take(1));
49
49
  };
50
50
  ConnectionService.prototype.getErrorNotHandler = function (api) {
51
- return this.http.get(this.url + api).pipe(take(1));
51
+ return this.http.get(this.formUrl(api)).pipe(take(1));
52
52
  };
53
53
  ConnectionService.prototype.getOutsiderWithParams = function (api, data) {
54
54
  return this.http.get(api, { params: __assign({}, data) });
@@ -87,4 +87,4 @@ var ConnectionService = /** @class */ (function () {
87
87
  return ConnectionService;
88
88
  }());
89
89
  export { ConnectionService };
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXZELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLHlCQUF5QixDQUFDO0FBR2pDO0lBSUssMkJBQW9CLElBQWdCLEVBQVUsU0FBMkIsRUFDNUQsTUFBaUI7UUFEOUIsaUJBR0M7UUFIbUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzVELFdBQU0sR0FBTixNQUFNLENBQVc7UUEwRDlCLFlBQU8sR0FBRyxVQUFDLEdBQUc7WUFDVCxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLFFBQVEsSUFBSSxDQUFDLEtBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDN0ksQ0FBQyxDQUFBO1FBM0RJLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxD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SyxDQUFDLENBQUM7UUFDdkMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQU0sSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsRUFBRSxNQUFNLFFBQUEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxVQUFVO0lBQ1YsK0JBQUcsR0FBSCxVQUFJLEdBQVcsRUFBRSxJQUFJO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQU0sSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxhQUFhO0lBQ2Isa0NBQU0sR0FBTixVQUFPLEdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFNLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7O2dCQXpEeUIsVUFBVTtnQkFBcUIsZ0JBQWdCO2dCQUNwRCxTQUFTOztJQUx0QixpQkFBaUI7UUFEN0IsVUFBVSxFQUFFO09BQ0EsaUJBQWlCLENBa0U3QjtJQUFELHdCQUFDO0NBQUEsQUFsRUQsSUFrRUM7U0FsRVksaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zLCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi9jb3JlLmNvbnN0cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBGaWx0ZXJPcHRpb24sIEZpbHRlck9wdGlvblR5cGVzLCBGaWx0ZXJPcHRpb25WYWx1ZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY2hvb3NlLW9wdGlvbnMvZmlsdGVyLW9wdGlvbic7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9jYXRjaCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb25uZWN0aW9uU2VydmljZSB7XG5cbiAgICAgcHJpdmF0ZSB1cmw7XG5cbiAgICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgICBwcml2YXRlIGNvbnN0czogQ29uc3RhbnRzKSB7XG4gICAgICAgICAgdGhpcy51cmwgPSB0aGlzLmNvbnN0cy5nZXRVcmxCYXNlKCk7XG4gICAgIH1cblxuICAgICAvKiogUE9TVCAqL1xuICAgICBwb3N0KGFwaTogc3RyaW5nLCBkYXRhPyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4odGhpcy51cmwgKyBhcGksIGRhdGEgfHwge30pLnBpcGUodGFrZSgxKSk7XG4gICAgIH1cblxuICAgICBwb3N0T3V0c2lkZXIoYXBpOiBzdHJpbmcsIGRhdGEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGFwaSwgZGF0YSkucGlwZSh0YWtlKDEpKTtcbiAgICAgfVxuXG4gICAgIC8qKiBHRVQgKi9cbiAgICAgZ2V0KGFwaTogc3RyaW5nLCBkYXRhPyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55Pih0aGlzLmZvcm1VcmwoYXBpKSwgeyBwYXJhbXM6IHsgLi4uZGF0YSB9IH0pLmNhdGNoKGVyciA9PiBvZihudWxsKSkucGlwZSh0YWtlKDEpKTtcbiAgICAgfVxuXG4gICAgIGdldE91dHNpZGVyKGFwaTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYXBpKS5waXBlKHRha2UoMSkpO1xuICAgICB9XG5cbiAgICBnZXRFcnJvck5vdEhhbmRsZXIoYXBpOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHRoaXMudXJsICsgYXBpKS5waXBlKHRha2UoMSkpO1xuICAgIH1cblxuICAgICBnZXRPdXRzaWRlcldpdGhQYXJhbXMoYXBpOiBzdHJpbmcsIGRhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihhcGksIHsgcGFyYW1zOiB7IC4uLmRhdGEgfX0pO1xuICAgICB9XG5cbiAgICAgZ2V0SFRNTChhcGk6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgICAgbGV0IGh0dHBIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHsgQWNjZXB0OiAndGV4dC9wbGFpbiwgdGV4dC9odG1sJyB9KTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnVybCArIGFwaSwgeyByZXNwb25zZVR5cGU6ICd0ZXh0JywgaGVhZGVyczogaHR0cEhlYWRlcnMgfSkucGlwZSh0YWtlKDEpKTtcbiAgICAgfVxuXG4gICAgIGdldFdpdGhMaW1pdChhcGk6IHN0cmluZywgbGltaXQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnbGltaXQnLCBsaW1pdCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55Pih0aGlzLnVybCArIGFwaSwgeyBwYXJhbXMgfSkucGlwZSh0YWtlKDEpKTtcbiAgICAgfVxuXG4gICAgIGdldFBhZ2luYXRlZChhcGk6IHN0cmluZywgbGltaXQ6IHN0cmluZywgcGFnZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdsaW1pdCcsIGxpbWl0KTtcbiAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwYWdlJywgcGFnZSk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55Pih0aGlzLnVybCArIGFwaSwgeyBwYXJhbXMgfSkucGlwZSh0YWtlKDEpKTtcbiAgICAgfVxuXG4gICAgIC8qKiBQVVQgKi9cbiAgICAgcHV0KGFwaTogc3RyaW5nLCBkYXRhKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxhbnk+KHRoaXMudXJsICsgYXBpLCBkYXRhKS5waXBlKHRha2UoMSkpO1xuICAgICB9XG5cbiAgICAgLyoqIERFTEVURSAqL1xuICAgICBkZWxldGUoYXBpOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPGFueT4odGhpcy51cmwgKyBhcGkpLnBpcGUodGFrZSgxKSk7XG4gICAgIH1cblxuICAgICBmb3JtVXJsID0gKGFwaSkgPT4ge1xuICAgICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgPT0gJ2h0dHBzOicgJiYgIXRoaXMudXJsLmluY2x1ZGVzKCdodHRwcycpID8gKHRoaXMudXJsLnJlcGxhY2UoJ2h0dHAnLCAnaHR0cHMnKSkgKyBhcGkgOiB0aGlzLnVybCArIGFwaTtcbiAgICAgfVxufSJdfQ==
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXZELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLHlCQUF5QixDQUFDO0FBR2pDO0lBSUssMkJBQW9CLElBQWdCLEVBQVUsU0FBMkIsRUFDNUQsTUFBaUI7UUFEOUIsaUJBR0M7UUFIbUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzVELFdBQU0sR0FBTixNQUFNLENBQVc7UUEwRDlCLFlBQU8sR0FBRyxVQUFDLEdBQUc7WUFDVCxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLFFBQVEsSUFBSSxDQUFDLEtBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDN0ksQ0FBQyxDQUFBO1FBM0RJLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxD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RSxLQUFLLENBQUMsQ0FBQztRQUN2QyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBTSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxFQUFFLE1BQU0sUUFBQSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELFVBQVU7SUFDViwrQkFBRyxHQUFILFVBQUksR0FBVyxFQUFFLElBQUk7UUFDaEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBTSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELGFBQWE7SUFDYixrQ0FBTSxHQUFOLFVBQU8sR0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQU0sSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQzs7Z0JBekR5QixVQUFVO2dCQUFxQixnQkFBZ0I7Z0JBQ3BELFNBQVM7O0lBTHRCLGlCQUFpQjtRQUQ3QixVQUFVLEVBQUU7T0FDQSxpQkFBaUIsQ0FrRTdCO0lBQUQsd0JBQUM7Q0FBQSxBQWxFRCxJQWtFQztTQWxFWSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uL2NvcmUuY29uc3RzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEZpbHRlck9wdGlvbiwgRmlsdGVyT3B0aW9uVHlwZXMsIEZpbHRlck9wdGlvblZhbHVlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jaG9vc2Utb3B0aW9ucy9maWx0ZXItb3B0aW9uJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgJ3J4anMvYWRkL29wZXJhdG9yL2NhdGNoJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbm5lY3Rpb25TZXJ2aWNlIHtcblxuICAgICBwcml2YXRlIHVybDtcblxuICAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgIHByaXZhdGUgY29uc3RzOiBDb25zdGFudHMpIHtcbiAgICAgICAgICB0aGlzLnVybCA9IHRoaXMuY29uc3RzLmdldFVybEJhc2UoKTtcbiAgICAgfVxuXG4gICAgIC8qKiBQT1NUICovXG4gICAgIHBvc3QoYXBpOiBzdHJpbmcsIGRhdGE/KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55Pih0aGlzLnVybCArIGFwaSwgZGF0YSB8fCB7fSkucGlwZSh0YWtlKDEpKTtcbiAgICAgfVxuXG4gICAgIHBvc3RPdXRzaWRlcihhcGk6IHN0cmluZywgZGF0YSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYXBpLCBkYXRhKS5waXBlKHRha2UoMSkpO1xuICAgICB9XG5cbiAgICAgLyoqIEdFVCAqL1xuICAgICBnZXQoYXBpOiBzdHJpbmcsIGRhdGE/KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHRoaXMuZm9ybVVybChhcGkpLCB7IHBhcmFtczogeyAuLi5kYXRhIH0gfSkuY2F0Y2goZXJyID0+IG9mKG51bGwpKS5waXBlKHRha2UoMSkpO1xuICAgICB9XG5cbiAgICAgZ2V0T3V0c2lkZXIoYXBpOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihhcGkpLnBpcGUodGFrZSgxKSk7XG4gICAgIH1cblxuICAgIGdldEVycm9yTm90SGFuZGxlcihhcGk6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4odGhpcy5mb3JtVXJsKGFwaSkpLnBpcGUodGFrZSgxKSk7XG4gICAgfVxuXG4gICAgIGdldE91dHNpZGVyV2l0aFBhcmFtcyhhcGk6IHN0cmluZywgZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGFwaSwgeyBwYXJhbXM6IHsgLi4uZGF0YSB9fSk7XG4gICAgIH1cblxuICAgICBnZXRIVE1MKGFwaTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgICBsZXQgaHR0cEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoeyBBY2NlcHQ6ICd0ZXh0L3BsYWluLCB0ZXh0L2h0bWwnIH0pO1xuICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMudXJsICsgYXBpLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnLCBoZWFkZXJzOiBodHRwSGVhZGVycyB9KS5waXBlKHRha2UoMSkpO1xuICAgICB9XG5cbiAgICAgZ2V0V2l0aExpbWl0KGFwaTogc3RyaW5nLCBsaW1pdDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdsaW1pdCcsIGxpbWl0KTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHRoaXMudXJsICsgYXBpLCB7IHBhcmFtcyB9KS5waXBlKHRha2UoMSkpO1xuICAgICB9XG5cbiAgICAgZ2V0UGFnaW5hdGVkKGFwaTogc3RyaW5nLCBsaW1pdDogc3RyaW5nLCBwYWdlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ2xpbWl0JywgbGltaXQpO1xuICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3BhZ2UnLCBwYWdlKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHRoaXMudXJsICsgYXBpLCB7IHBhcmFtcyB9KS5waXBlKHRha2UoMSkpO1xuICAgICB9XG5cbiAgICAgLyoqIFBVVCAqL1xuICAgICBwdXQoYXBpOiBzdHJpbmcsIGRhdGEpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0PGFueT4odGhpcy51cmwgKyBhcGksIGRhdGEpLnBpcGUodGFrZSgxKSk7XG4gICAgIH1cblxuICAgICAvKiogREVMRVRFICovXG4gICAgIGRlbGV0ZShhcGk6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8YW55Pih0aGlzLnVybCArIGFwaSkucGlwZSh0YWtlKDEpKTtcbiAgICAgfVxuXG4gICAgIGZvcm1VcmwgPSAoYXBpKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCA9PSAnaHR0cHM6JyAmJiAhdGhpcy51cmwuaW5jbHVkZXMoJ2h0dHBzJykgPyAodGhpcy51cmwucmVwbGFjZSgnaHR0cCcsICdodHRwcycpKSArIGFwaSA6IHRoaXMudXJsICsgYXBpO1xuICAgICB9XG59XG4iXX0=
@@ -23,9 +23,8 @@ import { Router } from '@angular/router';
23
23
  import { TranslateService } from '@ngx-translate/core';
24
24
  import { BehaviorSubject, ReplaySubject } from 'rxjs';
25
25
  import * as i0 from "@angular/core";
26
- import * as i1 from "../public-api";
27
- import * as i2 from "@ngx-translate/core";
28
- import * as i3 from "@angular/router";
26
+ import * as i1 from "@ngx-translate/core";
27
+ import * as i2 from "@angular/router";
29
28
  var Constants = /** @class */ (function () {
30
29
  function Constants(translate, router, env) {
31
30
  var _this = this;
@@ -438,7 +437,7 @@ var Constants = /** @class */ (function () {
438
437
  { type: Router },
439
438
  { type: undefined, decorators: [{ type: Inject, args: ['env',] }] }
440
439
  ]; };
441
- Constants.ɵprov = i0.ɵɵdefineInjectable({ factory: function Constants_Factory() { return new i1.Constants(i0.ɵɵinject(i2.TranslateService), i0.ɵɵinject(i3.Router), i0.ɵɵinject("env")); }, token: i1.Constants, providedIn: "root" });
440
+ Constants.ɵprov = i0.ɵɵdefineInjectable({ factory: function Constants_Factory() { return new Constants(i0.ɵɵinject(i1.TranslateService), i0.ɵɵinject(i2.Router), i0.ɵɵinject("env")); }, token: Constants, providedIn: "root" });
442
441
  Constants = __decorate([
443
442
  Injectable({
444
443
  providedIn: 'root'
@@ -448,4 +447,4 @@ var Constants = /** @class */ (function () {
448
447
  return Constants;
449
448
  }());
450
449
  export { Constants };
451
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5jb25zdHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvY29yZS5jb25zdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBYXREO0lBRUksbUJBQW1CLFNBQTJCLEVBQVUsTUFBYyxFQUF5QixHQUFHO1FBQWxHLGlCQUF1RztRQUFwRixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBeUIsUUFBRyxHQUFILEdBQUcsQ0FBQTtRQUVqRixXQUFNLEdBQUcsUUFBUSxDQUFDO1FBQ2xCLFlBQU8sR0FBRyxTQUFTLENBQUM7UUFDOUIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFFeEIseUJBQW9CLEdBQUcsSUFBSSxhQUFhLEVBQU8sQ0FBQztRQUNqRCxtQkFBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV6RCxxQkFBZ0IsR0FBRyxVQUFDLE9BQU8sSUFBSyxPQUFBLFlBQVksR0FBRyxPQUFPLEdBQUcsU0FBUyxFQUFsQyxDQUFrQyxDQUFDO1FBRW5FLGtCQUFhLEdBQVcsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUNyQyxxQkFBZ0IsR0FBVyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVyRSxnRkFBZ0Y7UUFDeEUsWUFBTyxHQUFXLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFD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QUksS0FBSyxDQUFDLElBQUksSUFBSSxRQUFRLEVBQXBFLENBQW9FLENBQUMsQ0FBQTtJQUVwRyxDQUFDO0lBQUEsQ0FBQztJQWtJRix3Q0FBb0IsR0FBcEIsVUFBcUIsV0FBbUI7UUFDcEMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLG1DQUFtQyxFQUFFLENBQUM7SUFDcEksQ0FBQzs7Z0JBNWQ2QixnQkFBZ0I7Z0JBQWtCLE1BQU07Z0RBQUcsTUFBTSxTQUFDLEtBQUs7OztJQUY1RSxTQUFTO1FBSHJCLFVBQVUsQ0FBQztZQUNSLFVBQVUsRUFBRSxNQUFNO1NBQ3JCLENBQUM7UUFHMkUsV0FBQSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7T0FGN0UsU0FBUyxDQStkckI7b0JBaGZEO0NBZ2ZDLEFBL2RELElBK2RDO1NBL2RZLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3VycmVuY3lDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvY3VycmVuY3lDb25maWcnO1xuaW1wb3J0IHsgRGVmYXVsdEZpbHRlciwgRmlsdGVyQ29uZmlnIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2ZpbHRlcic7XG5pbXBvcnQgeyBQYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BhcmFtc0ludGVyZmFjZXMvcGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCc7XG50eXBlIGN1cnJlbmN5VHlwZSA9ICdFVVInIHwgJ0FSRycgfCAnVVNEJyB8ICdQWUcnIHwgJ1BFTicgfCAnU0VLJyB8ICdDVVNUT00nO1xudHlwZSBwb3NpdGlvblR5cGUgPSAnTCcgfCAnUic7XG50eXBlIGNoYW5uZWxUeXBlcyA9ICdiMmInIHwgJ2IyYjJjJyB8ICdiMmMnO1xuZXhwb3J0IHR5cGUgQ2hlY2tvdXRWaWV3VHlwZSA9ICdsZWdhY3knIHwgJ3NpbmdsZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ29uc3RhbnRzIHtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIEBJbmplY3QoJ2VudicpIHByaXZhdGUgZW52KSB7IH1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgTE9DQUxFID0gJ0xPQ0FMRSc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBDSEFOTkVMID0gJ0NIQU5ORUwnO1xuICAgIHB1YmxpYyBzZWFyY2hWYWx1ZTogc3RyaW5nID0gJyc7XG5cbiAgICBwcml2YXRlIGNoYW5uZWxDb25maWdTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8YW55PigpO1xuICAgIHB1YmxpYyBjaGFubmVsQ29uZmlnJCA9IHRoaXMuY2hhbm5lbENvbmZpZ1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBwcml2YXRlIGNoYW5uZWxDb25maWdBUEkgPSAoY2hhbm5lbCkgPT4gJy9zaG9wLWFwaS8nICsgY2hhbm5lbCArICdjaGFubmVsJztcblxuICAgIHByaXZhdGUgYnJvd3NlcldpbmRvdzogb2JqZWN0ID0gd2luZG93IHx8IHt9O1xuICAgIHByaXZhdGUgYnJvd3NlcldpbmRvd0Vudjogb2JqZWN0ID0gdGhpcy5icm93c2VyV2luZG93WydfX2VudiddIHx8IHt9O1xuXG4gICAgLy8gICAgIHByaXZhdGUgdXJsQmFzZTogc3RyaW5nID0gJ2h0dHA6Ly90ZXN0aW5nLmJhY2tlbmQuZWFzeWNvbW1lcmNldGVjaC5jb20vJztcbiAgICBwcml2YXRlIHVybEJhc2U6IHN0cmluZyA9IHRoaXMuYnJvd3NlcldpbmRvd0VudlsnYXBpVXJsJ10gPyB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ2FwaVVybCddIDogKHRoaXMuZW52LmFwaVVybCB8fCAnaHR0cDovL2JhY2tlbmQuZWFzeWNvbW1lcmNlLmRldnAvJyk7XG4gICAgcHJpdmF0ZSB1cmxBc3NldHM6IHN0cmluZyA9IHRoaXMuYnJvd3NlcldpbmRvd0VudlsndXJsQXNzZXRzJ10gPyB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ3VybEFzc2V0cyddIDogKHRoaXMuZW52LnVybEFzc2V0cyB8fCB0aGlzLnVybEJhc2UpO1xuICAgIHByaXZhdGUgdXJsRnJvbnRlbmQ6IHN0cmluZyA9IHRoaXMuYnJvd3NlcldpbmRvd0VudlsndXJsRnJvbnRlbmQnXSA/IHRoaXMuYnJvd3NlcldpbmRvd0VudlsndXJsRnJvbnRlbmQnXSA6ICh0aGlzLmVudi51cmxGcm9udGVuZCB8fCAnaHR0cHM6Ly9lbGRlbi5lYXN5Y29tbWVyY2V0ZWNoLmNvbS8nKTtcbiAgICBwcml2YXRlIGxvY2FsZTogc3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5MT0NBTEUpID8gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5MT0NBTEUpIDogdGhpcy5icm93c2VyV2luZG93RW52Wydsb2NhbGUnXSA/IHRoaXMuYnJvd3NlcldpbmRvd0VudlsnbG9jYWxlJ10gOiAodGhpcy5lbnYubG9jYWxlIHx8ICdlc19BUicpO1xuICAgIHByaXZhdGUgY2hhbm5lbDogc3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5DSEFOTkVMKSA/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuQ0hBTk5FTCkgOiB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ2NoYW5uZWwnXSA/IHRoaXMuYnJvd3NlcldpbmRvd0VudlsnY2hhbm5lbCddIDogKHRoaXMuZW52LmNoYW5uZWwgfHwgJ21pbm9yaXN0YScpXG4gICAgcHJpdmF0ZSBibG9ja3NDYWNoZVRpbWU6IHN0cmluZyA9IHRoaXMuYnJvd3NlcldpbmRvd0VudlsnYmxvY2tzQ2FjaGVUaW1lJ10gPyB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ2Jsb2Nrc0NhY2hlVGltZSddIDogKHRoaXMuZW52LmJsb2Nrc0NhY2hlVGltZSB8fCBudWxsKTtcbiAgICBwcml2YXRlIGNoZWNrb3V0VmlldzogQ2hlY2tvdXRWaWV3VHlwZSA9ICdsZWdhY3knO1xuICAgIHByaXZhdGUgY2hlY2tvdXRWaWV3U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2hlY2tvdXRWaWV3VHlwZT4odGhpcy5jaGVja291dFZpZXcpO1xuICAgIHB1YmxpYyBjaGVja291dFZpZXckID0gdGhpcy5jaGVja291dFZpZXdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHJpdmF0ZSBtb2RhbENvbmZpZyA9IHsgdGl0bGU6ICdFeGFtcGxlJywgY2xhc3M6ICdtb2RhbC14bCBtb2RhbC1kaWFsb2ctY2VudGVyZWQnLCBrZXlib2FyZDogZmFsc2UgfTtcbiAgICBzZXRNb2RhbENvbmZpZyA9IChjb25maWc6IGFueSkgPT4gdGhpcy5tb2RhbENvbmZpZyA9IGNvbmZpZztcbiAgICBnZXRNb2RhbENvbmZpZyA9ICgpID0+IHRoaXMubW9kYWxDb25maWc7XG5cbiAgICBwcml2YXRlIHZlcnNpb246IHN0cmluZyA9ICd2MSc7XG5cbiAgICBwcml2YXRlIHJvdXRlcyA9IFsvXmhvbWUkL2csIC9eKFxcLz8pY29sbGVjdGlvbihcXC8/KShbXFx3XFwuXFwvXFw/XSopJC9nLCAvXmNvbnRhY3QkL2ddO1xuXG4gICAgLyogR2V0IHJpZCBvZiB0aGlzIEFTQVAhICovXG4gICAgcHJpdmF0ZSBtYXN0ZXJDaGFubmVsID0gbnVsbFxuXG4gICAgcHVibGljIGdldE1hc3RlckNoYW5uZWwgPSAoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5tYXN0ZXJDaGFubmVsKSB0aGlzLm1hc3RlckNoYW5uZWwgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnTUFTVEVSX0NIQU5ORUwnKVxuICAgICAgICByZXR1cm4gdGhpcy5tYXN0ZXJDaGFubmVsXG4gICAgfVxuXG4gICAgcHVibGljIHNldE1hc3RlckNoYW5uZWwgPSBjaGFubmVsID0+IHtcbiAgICAgICAgdGhpcy5tYXN0ZXJDaGFubmVsID0gY2hhbm5lbFxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnTUFTVEVSX0NIQU5ORUwnLCBjaGFubmVsKVxuICAgIH1cblxuICAgIHByaXZhdGUgaXNQcm9kdWN0aW9uID0gKCkgPT4gdGhpcy5icm93c2VyV2luZG93RW52Wydwcm9kdWN0aW9uJ10gPyB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ3Byb2R1Y3Rpb24nXSA6ICh0aGlzLmVudi5wcm9kdWN0aW9uIHx8IGZhbHNlKTtcblxuICAgIHNldFVybEJhc2UgPSAodXJsKSA9PiB0aGlzLnVybEJhc2UgPSB1cmw7XG4gICAgc2V0VXJsQXNzZXRzID0gKHVybCkgPT4gdGhpcy51cmxBc3NldHMgPSB1cmw7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gbmV4dCBGdW5jdGlvbiB0byBleGVjdXRlXG4gICAgICogQHBhcmFtIHBhcmFtcyBUaGF0IGZ1bmN0aW9uIG5lZWRzXG4gICAgICpcbiAgICAgKiBFeGVjdXRlIHRoZSBmdW5jdGlvbiBwYXNzZWQgYXMgcGFyYW1zLCBpZiB0aGUgZnJvbnRlbmQgaXMgaW4gcHJvZHVjdGlvbiBtb2RlXG4gICAgICovXG4gICAgb25seUlmUHJvZHVjdGlvbiA9IChuZXh0LCBwYXJhbXMpID0+IHRoaXMuaXNQcm9kdWN0aW9uKCkgJiYgbmV4dChwYXJhbXMpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIERldnVlbHZlIGxhIHVybCBiYXNlIGRvbmRlIHNlIGFsb2phbiBsb3MgYXJjaGl2b3MgbXVsdGltZWRpYVxuICAgICAqIEBwYXJhbSBwb3N0TWVkaWEgY2FycGV0YSBkb25kZSBzZSBndWFyZGFuIGxvcyBhcmNoaXZvc1xuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgbWVkaWFVcmwgPSAocG9zdE1lZGlhPzogc3RyaW5nKSA9PiB0aGlzLnVybEFzc2V0cyArICh0aGlzLnVybEFzc2V0cyA9PSB0aGlzLnVybEJhc2UgPyAnbWVkaWEvJyA6ICcnKSArIChwb3N0TWVkaWEgPyBwb3N0TWVkaWEgOiBcImltYWdlL1wiKTtcbiAgICBtZWRpYUJhbm5lclVybCA9ICgpID0+IHRoaXMudXJsQXNzZXRzICsgKHRoaXMudXJsQXNzZXRzID09IHRoaXMudXJsQmFzZSA/ICdtZWRpYS8nIDogJycpICsgXCJiYW5uZXItaW1hZ2UvXCI7XG4gICAgbWVkaWFTdG9yZVVybCA9ICgpID0+IHRoaXMudXJsQXNzZXRzICsgKHRoaXMudXJsQXNzZXRzID09IHRoaXMudXJsQmFzZSA/ICdtZWRpYS8nIDogJycpICsgXCJzdG9yZS1pbWFnZS9cIjtcblxuICAgIGdldFByb2R1Y3RzTGlzdFJvdXRlID0gKCkgPT4gJ2NvbGxlY3Rpb24vJztcblxuICAgIGdldFNlY3Rpb25zUm91dGUgPSAoKSA9PiAnc2VjdGlvbi8nO1xuXG4gICAgZ2V0VXJsQmFzZSA9ICgpID0+IHRoaXMudXJsQmFzZTtcbiAgICBnZXRVcmxGcm9udGVuZCA9ICgpID0+IHRoaXMudXJsRnJvbnRlbmQ7XG5cbiAgICBnZXRCbG9ja3NDYWNoZVRpbWUgPSAoKTogbnVtYmVyID0+IHRoaXMuYmxvY2tzQ2FjaGVUaW1lICYmIHBhcnNlSW50KHRoaXMuYmxvY2tzQ2FjaGVUaW1lKTtcblxuICAgIC8vIGdldExvY2FsZSA9ICgpID0+IHRoaXMubG9jYWxlO1xuICAgIC8vIHNldExvY2FsZSA9IChsb2NhbGUpID0+IHRoaXMubG9jYWxlID0gbG9jYWxlO1xuXG4gICAgZ2V0TG9jYWxlID0gKCkgPT4ge1xuICAgICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5MT0NBTEUpKSB7XG4gICAgICAgICAgICB0aGlzLmxvY2FsZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuTE9DQUxFKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZVxuICAgIH1cblxuICAgIGdldExvY2FsZVRyYW5zbGF0ZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TG9jYWxlKCkuc3BsaXQoJ18nKVswXVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRMb2NhbGUgPSBsb2NhbGUgPT4ge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkxPQ0FMRSwgbG9jYWxlKVxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS51c2UobG9jYWxlLnNwbGl0KCdfJylbMF0pXG4gICAgICAgIHRoaXMubG9jYWxlID0gbG9jYWxlXG4gICAgfVxuXG4gICAgZ2V0Q2hhbm5lbCA9ICgpID0+IHtcbiAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuQ0hBTk5FTCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbm5lbCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuQ0hBTk5FTClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jaGFubmVsXG4gICAgfVxuXG4gICAgcHVibGljIHNldENoYW5uZWwgPSBjaGFubmVsID0+IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5DSEFOTkVMLCBjaGFubmVsKVxuICAgICAgICB0aGlzLmNoYW5uZWwgPSBjaGFubmVsXG4gICAgfVxuXG4gICAgZ2V0Q2hlY2tvdXRWaWV3ID0gKCk6IENoZWNrb3V0Vmlld1R5cGUgPT4gdGhpcy5jaGVja291dFZpZXc7XG5cbiAgICBwcml2YXRlIHNldENoZWNrb3V0VmlldyA9ICh2aWV3OiBDaGVja291dFZpZXdUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQ6IENoZWNrb3V0Vmlld1R5cGUgPSB2aWV3ID09PSAnc2luZ2xlJyA/ICdzaW5nbGUnIDogJ2xlZ2FjeSc7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRWaWV3ID0gbm9ybWFsaXplZDtcbiAgICAgICAgdGhpcy5jaGVja291dFZpZXdTdWJqZWN0Lm5leHQobm9ybWFsaXplZCk7XG4gICAgfVxuXG4gICAgZ2V0VmVyc2lvbiA9ICgpID0+IHRoaXMudmVyc2lvbjtcblxuICAgIGxvZ2luRXh0cmFEYXRhID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2xpZW50X2lkOiAnZGVtb19jbGllbnQnLFxuICAgICAgICAgICAgY2xpZW50X3NlY3JldDogJ3NlY3JldF9kZW1vX2NsaWVudCcsXG4gICAgICAgICAgICBncmFudF90eXBlOiAncGFzc3dvcmQnXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0NvbGxlY3Rpb24gPSAocGF0aCkgPT4gKC9eKFxcLz8pY29sbGVjdGlvbihcXC8/KShbXFx3XFwuXFwvXFw/XSopJC9nKS50ZXN0KHBhdGgpO1xuXG4gICAgLyoqXG4gICAgICogVXRpbGl0aWVzXG4gICAgICovXG5cbiAgICBtb2JpbGUgPSAoKSA9PiB3aW5kb3cuaW5uZXJXaWR0aCA8IDc1MDtcblxuICAgIHN0cmljdFR5cGVDaGFubmVsID0gKCkgPT4gdGhpcy5lbnYuc3RyaWN0VHlwZUNoYW5uZWwgfHwgJ2IyYjJjJztcblxuICAgIHRvRGVjaW1hbCA9ICh0b3RhbCkgPT4gKHRvdGFsIC0gTWF0aC5mbG9vcih0b3RhbCkgPT0gMCkgPyB0b3RhbCAvIDEwMCA6IHRvdGFsO1xuXG4gICAgLyoqXG4gICAgICogRWxlbWVudG9zIHBhcmEgbWFuZWpvIGRlIGxpc3RhIGRlIHJ1dGFzIHJldXRpbGl6YWJsZXNcbiAgICAgKi9cblxuICAgIGFkZFJvdXRlVG9SZXVzZSA9IChyb3V0ZTogUmVnRXhwKSA9PiByb3V0ZSAmJiB0aGlzLnJvdXRlcy5wdXNoKHJvdXRlKTtcblxuICAgIHJlbW92ZVJvdXRlVG9SZXVzZSA9IChyb3V0ZTogUmVnRXhwKSA9PiB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yb3V0ZXMuaW5kZXhPZihyb3V0ZSk7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0Um91dGVzVG9SZXVzZSA9ICgpOiBSZWdFeHBbXSA9PiB0aGlzLnJvdXRlcztcblxuXG5cbiAgICAvKipcbiAgICAgKiAgQHB1YmxpYyBlamVtcGxvIGRlIHVzbyA8aW1nICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbnN0cy5nZXRSYXRpbmdTdGFyKHByb2R1Y3QucmF0aW5nLCdhc3NldHMvaW1hZ2VzL3N0YXIucG5nJywnYXNzZXRzL2ltYWdlcy9ub3RTdGFyLnBuZycpXCIgW3NyY109XCJpdGVtXCI+XG4gICAgICogIEBkZXNjcmlwdGlvbiBmdW5jaW9uIHF1ZSBkYWRvIHVuIHZhbG9yIGVudHJlIDEgLi4gNSwgeSBzdGFyOiBub3RTdGFyOlxuICAgICAqICAgICAgKGRlYmVuIHNlciBlbCBwYXRoIGRlbCBhcmNoaXZvIGxvY2FsIGEgbGEgaW1wbGVtZW50YWNpb24pLlxuICAgICAqICAgICAgcmV0b3JuYSB1biBhcnJlZ2xvIGNvbiBjb24gbGEgdmFsb3JhY2lvbiBjb3JyZXNwb25kaWVudGUuXG4gICAgICovXG4gICAgZ2V0UmF0aW5nU3RhciA9IChyYXRpbmc6IGFueSwgc3RhcjogU3RyaW5nLCBub3RTdGFyOiBTdHJpbmcpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCB1cmxTdGFyID0gW107XG4gICAgICAgICAgICBsZXQgY2FudFN0YXIgPSBOdW1iZXIocmF0aW5nKSB8fCAwO1xuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDU7IGluZGV4KyspIHtcbiAgICAgICAgICAgICAgICB1cmxTdGFyLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIGNhbnRTdGFyID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzdGFyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG5vdFN0YXJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNhbnRTdGFyLS07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdXJsU3RhcjtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJnZXRSYXRpbmdTdGFyIHByb2R1am8gdW4gZXJyb3IgLT4gXCIsIGVycm9yKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqICBAcHVibGljIGVqZW1wbG8gZGUgdXNvIChrZXlwcmVzcyk9XCJpbnB1dFZhbGlkYXRpb25CeUV4cHJlc3Npb25zKCRldmVudCwnWzAtOV17MSw5fScpXCIgZW4gZWwgRE9NLlxuICAgICAqICBAZGVzY3JpcHRpb24gZnVuY2lvbiBxdWUgZGFkbyB1biBtYW5lamFuZG9yIGRlIGV2ZW50bywgeSB1bmEgZXhwcmVzaW9uIHJlZ3VsYXIgZXN0YSBlc1xuICAgICAqICAgICAgICAgIGV2YWx1YWRhIHNvYnJlIGxvcyB2YWxvcmVzIHF1ZSBlbCBtYW5lamFkb3IgZGUgZXZlbnRvcyBub3MgZW52aWEuXG4gICAgICogICAgICAgICAgRW4gZWwgY2FzbyBlbiBlbCBxdWUgc2UgZW52aWUgZWwgcGFyYW1ldHJvICdjb25kaXRpb24nIGVzdGUgcHVlZGUgc2VyIHBhcmFcbiAgICAgKiAgICAgICAgICBhbnVsYXIgZWwgZXZlbnRvIGNvbW8gY29uZGljaW9uIGFkaWNpb25hbCBhIGxhIGV2YWx1YWNpb24gZGUgbGEgZW50cmFkYS5cbiAgICAgKi9cbiAgICBpbnB1dFZhbGlkYXRpb25CeUV4cHJlc3Npb25zID0gKGUsIHBhdHJvbiwgY29uZGl0aW9uID0gbnVsbCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IHRlY2xhID0gKGRvY3VtZW50KSA/IGUua2V5Q29kZSA6IGUud2hpY2g7XG4gICAgICAgICAgICBpZiAodGVjbGEgPT0gOCkgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBsZXQgcGF0cm9uUmVnID0gbmV3IFJlZ0V4cChwYXRyb24pXG4gICAgICAgICAgICBsZXQgdGVjbGFfZmluYWwgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHRlY2xhKTtcbiAgICAgICAgICAgIGlmIChjb25kaXRpb24gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXRyb25SZWcudGVzdCh0ZWNsYV9maW5hbCkgJiYgY29uZGl0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhdHJvblJlZy50ZXN0KHRlY2xhX2ZpbmFsKVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcImlucHV0VmFsaWRhdGlvbkJ5RXhwcmVzc2lvbnMgcHJvZHVqbyB1biBlcnJvciAtPiBcIiwgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBuZWVkbGVzIChhZ3VqYXMpIG9iamVjdCBjb24gY2xhdmVzIHZhbG9yIGEgZmlsdHJhclxuICAgICAqIEBwYXJhbSBoYXlzdGFjayAocGFqYXIpIG9iamVjdG8gZW4gZWwgcXVlIGJ1c2NhclxuICAgICAqXG4gICAgICogQGRlc2NyaXB0aW9uIGZ1bmNpb24gcXVlIGJ1c2NhIGVuIGVsIGhheXN0YWNrIChwYWphcikgdG9kb3MgbG9zIG9iamV0b3MgcXVlIGNvbnRlbnRhblxuICAgICAqIHRvZGFzIGxhcyBjbGF2ZXMgZGUgbG9zIG5lZWRsZXMoYWd1amFzKSBxdWUgY29udGVuZ2FuIGVsIG1pc21vIHZhbG9yXG4gICAgICovXG4gICAgY29udGFpbnNBbGwobmVlZGxlczogb2JqZWN0LCBoYXlzdGFjazogb2JqZWN0KTogYm9vbGVhbiB7XG4gICAgICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgICAgIGlmICghIW5lZWRsZXMgJiYgISFoYXlzdGFjaykge1xuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMobmVlZGxlcykuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCEoaGF5c3RhY2suaGFzT3duUHJvcGVydHkodmFsdWVbMF0pICYmIGhheXN0YWNrW3ZhbHVlWzBdXSA9PSB2YWx1ZVsxXSkpIHJlc3VsdCA9IGZhbHNlXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvcGllZGFkIHF1ZSBzZSB1dGlsaXphIHBhcmEgdG9tYXIgY29tbyBjb25maWd1cmFjacOzbiBwYXJhIGVsIHRpcG8gZGUgbW9uZWRhIHF1ZSBzZSB1dGlsaXphIGVuIGVsIHNpdGlvLlxuICAgICAqIEVzdG9zIHZhbG9yZXMgc29uIHV0aWxpemFkb3MgcGFyYSBlbCBwaXBlIGN1cnJlbmN5UHJpY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgY3VycmVuY3k6IEN1cnJlbmN5Q29uZmlnID0ge1xuICAgICAgICBjb2RlOiAnQVJHJyxcbiAgICAgICAgc3ltYm9sOiAnJCcsXG4gICAgICAgIHBvc2l0aW9uOiAnTGVmdCcsXG4gICAgICAgIHdpdGhvdXREZWNpbWFsOiBmYWxzZVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFycmVnbG8gZGUgdmFsb3JlcyB1c2Fkb3MgcGFyYSBlbCBwaXBlIGN1cnJlbmN5UHJpY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgY3VycmVuY3lUeXBlQ29uZmlnOiBDdXJyZW5jeUNvbmZpZ1tdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBjb2RlOiAnRVVSJyxcbiAgICAgICAgICAgIHN5bWJvbDogJ+KCrCcsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ1JpZ2h0JyxcbiAgICAgICAgICAgIHdpdGhvdXREZWNpbWFsOiBmYWxzZVxuXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6ICdBUkcnLFxuICAgICAgICAgICAgc3ltYm9sOiAnJCcsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ0xlZnQnLFxuICAgICAgICAgICAgd2l0aG91dERlY2ltYWw6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6ICdBUlMnLFxuICAgICAgICAgICAgc3ltYm9sOiAnJCcsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ0xlZnQnLFxuICAgICAgICAgICAgd2l0aG91dERlY2ltYWw6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6ICdVU0QnLFxuICAgICAgICAgICAgc3ltYm9sOiAnJCcsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ0xlZnQnLFxuICAgICAgICAgICAgd2l0aG91dERlY2ltYWw6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6ICdQWUcnLFxuICAgICAgICAgICAgc3ltYm9sOiAnR3MuJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnTGVmdCcsXG4gICAgICAgICAgICB3aXRob3V0RGVjaW1hbDogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY29kZTogJ1BFTicsXG4gICAgICAgICAgICBzeW1ib2w6ICdTLycsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ0xlZnQnLFxuICAgICAgICAgICAgd2l0aG91dERlY2ltYWw6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6ICdTRUsnLFxuICAgICAgICAgICAgc3ltYm9sOiAnU0VLJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnUmlnaHQnLFxuICAgICAgICAgICAgd2l0aG91dERlY2ltYWw6IHRydWVcbiAgICAgICAgfSxcbiAgICBdXG5cbiAgICBwdWJsaWMgc2V0Q3VycmVuY3lUeXBlQ29uZmlnID0gKGN1cnJlbmN5VHlwZUNvbmZpZzogQ3VycmVuY3lDb25maWdbXSkgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbmN5VHlwZUNvbmZpZyA9IGN1cnJlbmN5VHlwZUNvbmZpZztcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWVtcGxhemEgbG9zIHZhbG9yZXMgZGUgdW5hIG1vbmVkYS5cbiAgICAgKiBAcGFyYW0gY3VycmVuY3lUeXBlRmluZCBUaXBvIGRlIGN1cnJlbmN5IHF1ZSBzZSBkZXNlYSBtb2RpZmljYXJcbiAgICAgKiBAcGFyYW0gY3VzdG9tVHlwZSBMb3MgbnVldm9zIHZhbG9yZXMuIFRvZGFzIGxhcyBrZXkgc29uIG9wY2lvbmFsZXNcbiAgICAgKiBAZXhhbXBsZSBjdXN0b21UeXBlID0geyBjb2RlOiAnQVJHJywgc3ltYm9sOiAnJCcsIHBvc2l0aW9uOiAnTGVmdCcgLCB3aXRob3V0RGVjaW1hbDogZmFsc2UgfVxuICAgICAqL1xuICAgIHB1YmxpYyByZXBsYWNlQ3VycmVuY3lUeXBlQ29uZmlnID0gKGN1cnJlbmN5VHlwZUZpbmQ6IGN1cnJlbmN5VHlwZSwgY3VzdG9tVHlwZTogQ3VycmVuY3lDb25maWcpID0+IHtcbiAgICAgICAgbGV0IGN1cnJlbmN5VHlwZSA9IHRoaXMuY3VycmVuY3lUeXBlQ29uZmlnLmZpbmQodHlwZSA9PiB0eXBlLmNvZGUgPT0gY3VycmVuY3lUeXBlRmluZClcbiAgICAgICAgaWYgKGN1cnJlbmN5VHlwZSkge1xuICAgICAgICAgICAgY3VycmVuY3lUeXBlLnN5bWJvbCA9IGN1c3RvbVR5cGU/LnN5bWJvbCB8fCBjdXJyZW5jeVR5cGUuc3ltYm9sXG4gICAgICAgICAgICBjdXJyZW5jeVR5cGUuY29kZSA9IGN1c3RvbVR5cGU/LmNvZGUgfHwgY3VycmVuY3lUeXBlLmNvZGVcbiAgICAgICAgICAgIGN1cnJlbmN5VHlwZS5wb3NpdGlvbiA9IGN1c3RvbVR5cGU/LnBvc2l0aW9uIHx8IGN1cnJlbmN5VHlwZS5wb3NpdGlvblxuICAgICAgICAgICAgY3VycmVuY3lUeXBlLndpdGhvdXREZWNpbWFsID0gY3VzdG9tVHlwZT8ud2l0aG91dERlY2ltYWwgfHwgY3VycmVuY3lUeXBlLndpdGhvdXREZWNpbWFsXG4gICAgICAgIH1cbiAgICAgICAgLy9SZXZlZXIgZW4gZWwgZnV0dXJvIHNpIHNlIGVtcGllemFuIGEgYWdyZWdhciBvdHJvIHRpcG9zIGRlIG1vbmVkYXNcbiAgICAgICAgLyogZWxzZXtcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3lUeXBlQ29uZmlnLnB1c2goey4uLmN1c3RvbVR5cGUgfSlcbiAgICAgICAgfSAqL1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIGN1cnJlbmN5VHlwZUZpbmQgRGVmaW5pciBlbCBjb2RlIGRlbCB0aXBvIGRlIG1vbmVkYSBxdWUgc2UgcXVpZXJhIHV0aWxpemFyLlxuICAgICAqIFNpIGVsIHRpcG8gZXMgQ1VTVE9NIHNlIHRvbWFuIGxvcyB2YWxvcmVzIGRlbCBzZWd1bmRvIHBhcmFtZXRybyBkb25kZSBzZSBwdWVkZSBkZWZpbmlyIGxhIHNpbWJvbG9nw61hIHkgcG9zZXNpw7NuIHF1ZSBzZSBxdWllcmEuXG4gICAgICogQHBhcmFtIGN1c3RvbVR5cGUgRm9ybWF0byBkZWwgcGFyw6FtZXRybyBlamVtcGxvIHsgY29kZTogJ0FSRycsIHN5bWJvbDogJyQnLCBwb3NpdGlvbjogJ0wnICwgd2l0aG91dERlY2ltYWxzOiBmYWxzZSB9ICxcbiAgICAgKiB0b2RhcyBsYXMga2V5IHNvbiBvcGNpb25hbGVzIHkgcG9yIGRlZmVjdG8gc2UgdG9tYW4gbG9zIHZhbG9yZXMgZGVsIGVqZW1wbG8uXG4gICAgICogQHJldHVybnMgc2UgcmV0b3JuYSBsYSBjb25maWd1cmFjacOzbiBxdWUgc2Ugc2V0ZW8gYSBsYSBwcm9waWVkYWQgY3VycmVuY3kgZGVsIHNlcnZpY2lvLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRDdXJyZW5jeSA9IChjdXJyZW5jeVR5cGVGaW5kOiBjdXJyZW5jeVR5cGUsIGN1c3RvbVR5cGU/OiBDdXJyZW5jeUNvbmZpZykgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbmN5ID0gdGhpcy5jdXJyZW5jeVR5cGVDb25maWcuZmluZChjdCA9PiBjdC5jb2RlID09IGN1cnJlbmN5VHlwZUZpbmQudG9VcHBlckNhc2UoKSkgfHwgdGhpcy5jdXJyZW5jeVxuICAgICAgICBjdXN0b21UeXBlICYmICh0aGlzLmN1cnJlbmN5ID0geyAuLi50aGlzLmN1cnJlbmN5LCAuLi5jdXN0b21UeXBlIH0pXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbmN5O1xuICAgIH07XG5cblxuICAgIC8qKlxuICAgICAqIGRldnVlbHZlIHRydWUgc2kgZXhpc3RlIGVsIGVsZW1lbnRvIFwic2VhcmNoXCIgZW4gZWwgYXJyYXkgZGUgcGFyYW1ldHJvcyBcInBhcmFtc1wiXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFyYW1zIEFycmF5IGRlIHBhcmFtZXRyb3MgZW50cmUgbG9zIHF1ZSBidXNjYXJcbiAgICAgKiBAcGFyYW0gc2VhcmNoZWQgRWxlbWVudG8gcXVlIGJ1c2NhclxuICAgICAqIEBwYXJhbSBwcmVmaXggcHJlZmlqbyBkZWwgc3RyaW5nIGEgYnVzY2FyIChlamVtcGxvOiBcImxpbmtfXCIpXG4gICAgICogQHBhcmFtIHN1ZmZpeCBzdWZpam8gZGVsIHN0cmluZyBhIGJ1c2NhciAoZWplbXBsbzogXCJsaW5rX1wiKVxuICAgICAqIEBwYXJhbSBjYXNlc2Vuc2l0aXZlIGRldGVybWluYSBzaSBzZSBldmFsdWEgY29uIHNlbnNpYmlsaWRhZCBlbnRyZSBtYXl1c2N1bGEgeSBtaW51c2N1bGFcbiAgICAgKiBAcmV0dXJucyByZXRvcm5hIHRydWUgbyBmYWxzZSBzaSBzZSBlbmNvbnRybyBvIG5vIGVsIHBhcmFtZXRybyBlbiBlbCBhcnJheVxuICAgICAqL1xuICAgIHB1YmxpYyBoYXNQYXJhbXMoXG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgc2VhcmNoZWQsXG4gICAgICAgIHByZWZpeCA9ICcnLFxuICAgICAgICBzdWZmaXggPSAnJyxcbiAgICAgICAgY2FzZXNlbnNpdGl2ZSA9IGZhbHNlKTogYm9vbGVhbiB7XG5cblxuICAgICAgICByZXR1cm4gY2FzZXNlbnNpdGl2ZSA/IHBhcmFtcy5maW5kKHBhcmFtID0+IChwYXJhbS5jb2RlKS50b0xvd2VyQ2FzZSgpID09IChwcmVmaXggKyBzZWFyY2hlZCArIHN1ZmZpeCkudG9Mb3dlckNhc2UoKSB8fCAocGFyYW0uY29kZSkudG9Mb3dlckNhc2UoKSA9PSAoc2VhcmNoZWQpLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICA6IHBhcmFtcy5maW5kKHBhcmFtID0+IHBhcmFtLmNvZGUgPT0gKHByZWZpeCArIHNlYXJjaGVkICsgc3VmZml4KSB8fCBwYXJhbS5jb2RlID09IHNlYXJjaGVkKVxuXG4gICAgfTtcblxuICAgIHB1YmxpYyBtb2RpZnlDaGFubmVsQ29uZmlnID0gY2hhbm5lbENvbmZpZyA9PiB7XG4gICAgICAgIGlmIChjaGFubmVsQ29uZmlnLmNoYW5uZWwgfHwgY2hhbm5lbENvbmZpZy5jb2RlKVxuICAgICAgICAgICAgdGhpcy5zZXRDaGFubmVsKGNoYW5uZWxDb25maWcuY2hhbm5lbCB8fCBjaGFubmVsQ29uZmlnLmNvZGUpXG5cbiAgICAgICAgaWYgKGNoYW5uZWxDb25maWcubG9jYWxlIHx8IChjaGFubmVsQ29uZmlnLmxvY2FsZXMgJiYgY2hhbm5lbENvbmZpZy5sb2NhbGVzLmNvZGUpKVxuICAgICAgICAgICAgdGhpcy5zZXRMb2NhbGUoY2hhbm5lbENvbmZpZy5sb2NhbGUgfHwgY2hhbm5lbENvbmZpZy5sb2NhbGVzLmNvZGUpXG5cbiAgICAgICAgaWYgKGNoYW5uZWxDb25maWcuY3VycmVuY3kgfHwgY2hhbm5lbENvbmZpZy5iYXNlQ3VycmVuY3kpXG4gICAgICAgICAgICB0aGlzLnNldEN1cnJlbmN5KGNoYW5uZWxDb25maWcuY3VycmVuY3kgfHwgY2hhbm5lbENvbmZpZy5iYXNlQ3VycmVuY3kpXG5cbiAgICAgICAgaWYgKGNoYW5uZWxDb25maWcuY2hlY2tvdXRWaWV3ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Q2hlY2tvdXRWaWV3KGNoYW5uZWxDb25maWcuY2hlY2tvdXRWaWV3IGFzIENoZWNrb3V0Vmlld1R5cGUpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2hhbm5lbENvbmZpZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNlIHV0aWxpemEgcGFyYSBjb25maWd1cmFyIGxvcyBmaWx0cm9zIHBvciBkZWZlY3RvIHF1ZSBzZSBhcGxpY2FyYW4gZW4gbGEgc2VjY2lvbiAnQ29sbGVjdGlvbidcbiAgICAgKiBjdWFuZG8gc2UgaW5ncmVzYSBhIGxhIG1pc21hLlxuICAgICAqL1xuICAgIHByaXZhdGUgZGVmYXVsdEZpbHRlcnM6IERlZmF1bHRGaWx0ZXJbXSA9IFtdXG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU2V0dGVhIGVsIHZhbG9yIGRlIGxhIHZhcmlhYmxlIGRlZmF1bEZpbHRlcnMuXG4gICAgICogQHBhcmFtIGZpbHRlcnNcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0RGVmYXVsdEZpbHRlcnMgPSAoZmlsdGVyczogRGVmYXVsdEZpbHRlcltdKSA9PiB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEZpbHRlcnMgPSBmaWx0ZXJzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREZWZhdWx0RmlsdGVycyA9ICgpOiBEZWZhdWx0RmlsdGVyW10gPT4gdGhpcy5kZWZhdWx0RmlsdGVyc1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNlIHV0aWxpemEgcGFyYSBjb25maWd1cmFyIHRhbnRvIGxvcyBmaWx0cm9zIHBvciBkZWZlY3RvcyBxdWUgeWEgc2VyYW4gYXBsaWNhZG9zLCBjb21vIHRhbWJpZW5cbiAgICAgKiBsb3MgZmlsdHJvcyBxdWUgc2UgbW9zdHJhcmFuIGVuIGxhIHNlY2Npb24gY29sbGVjdGlvbiwgc3Ugb3JkZW4sIGV0Yy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGZpbHRlckNvbmZpZzogRmlsdGVyQ29uZmlnID0ge1xuICAgICAgICBkZWZhdWx0RmlsdGVyczogW10sXG4gICAgICAgIGZpbHRlcnM6IFsnY2F0ZWdvcnknLCAnYXR0cmlidXRlcycsICdkeW5hbWljcycsICdwcmljZV9yYW5nZSddXG4gICAgfVxuXG4gICAgcHVibGljIHNldEZpbHRlckNvbmZpZyA9IChmaWx0ZXJDb25maWc6IEZpbHRlckNvbmZpZykgPT4ge1xuICAgICAgICBmaWx0ZXJDb25maWcuZGVmYXVsdEZpbHRlcnMgPyB0aGlzLmZpbHRlckNvbmZpZy5kZWZhdWx0RmlsdGVycyA9IGZpbHRlckNvbmZpZy5kZWZhdWx0RmlsdGVycyA6IG51bGxcbiAgICAgICAgZmlsdGVyQ29uZmlnLmZpbHRlcnMgPyB0aGlzLmZpbHRlckNvbmZpZy5maWx0ZXJzID0gZmlsdGVyQ29uZmlnLmZpbHRlcnMgOiBudWxsXG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpbHRlckNvbmZpZyA9ICgpID0+IHRoaXMuZmlsdGVyQ29uZmlnLmZpbHRlcnNcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBjb250aWVuZSB1biBhcnJlZ2xvIGRlIHN0cmluZyBjdXlvIGNvbnRlbmlkbyBzb24gbG9zIGNvZGlnb3MgZGUgbG9zIHBhaXNlcy5cbiAgICAgKiBAZXhhbXBsZSBbJ0FSJywnRVMnLCdHQiddXG4gICAgICovXG4gICAgcHJpdmF0ZSBjb3VudHJpZXM6IHN0cmluZ1tdID0gW11cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gY29udGllbmUgdW4gYXJyZWdsbyBkZSBzdHJpbmcgY3V5byBjb250ZW5pZG8gc29uIGxvcyBjb2RpZ29zIGRlIGxvcyBwYWlzZXMgYSBleGNsdWlyLlxuICAgICAqIEBleGFtcGxlIFsnR0InXVxuICAgICAqL1xuICAgIHB1YmxpYyBleGNsdWRlZENvdW50cmllczogc3RyaW5nW10gPSBbXVxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvdW50cmllcyBkZWJlIGNvbnRlbmVyIGxvcyBjb2RpZ29zIGRlIGxvcyBwYWlzZXMgcXVlIHNlIHF1aWVyZSBtb3N0cmFyXG4gICAgICogQGV4YW1wbGUgWydBUicsJ0VTJywnR0InXVxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgcHVibGljIHNldENvdW50cmllcyA9IChjb3VudHJpZXM6IHN0cmluZ1tdKSA9PiB0aGlzLmNvdW50cmllcyA9IGNvdW50cmllcztcblxuICAgIHB1YmxpYyBnZXRDb3VudHJpZXMgPSAoKSA9PiB0aGlzLmNvdW50cmllcztcblxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIGVzdGEgdmFyaWFibGUgc2UgdXRpbGl6YSBwYXJhIGNvbmZpZ3VyYXIgbG9zIHBhcmFtZXRyb3MgY3VhbmRvIHNlIGRlc2VhIG1vc3RyYXJcbiAgICAgKiB2YXJpYW50ZXMgZWwgbGlzdGFkbyBkZSBwcm9kdWN0b3MuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9dHlwZSB0aXBvIGRlIG9wdGlvbnNcbiAgICAgKiBAcGFyYW0ge3N0cmluZ31jb2RlIGNvZGlnbyBkZSBvcHRpb25zXG4gICAgICogQHBhcmFtIHtib29sZWFufWRlZmF1bHRGaXJzdE9wdGlvbiBgdHJ1ZWAgdG9tYSBlbCBwcmltZXIgb3B0aW9uIGRlbCBwcm9kdWN0byBlbiBnZW5lcmFsXG4gICAgICogQHBhcmFtIHtib29sZWFufWNoZWNrSWZTdG9jayBgdHJ1ZWAgc2UgcmVhbGl6YSB1biBjaGVxdWVvIGRlIHNpIGxhIHZhcmlhbnRlIHRpZW5lIHN0b2NrIHBhcmEgbW9zdHJhcmxhXG4gICAgICogQGV4YW1wbGUgIGBgYGphdmFzY3JpcHRcbiAgICAgKiB7XG4gICAgICAgIHR5cGU6ICdjb2xvcicsXG4gICAgICAgIGNvZGU6ICdjb2xvcicsXG4gICAgICAgIGRlZmF1bHRGaXJzdE9wdGlvbjogZmFsc2UgLFxuICAgICAgICBjaGVja0lmU3RvY2s6dHJ1ZVxuICAgICAgICB9IGBgYFxuICAgICAqL1xuICAgIHByaXZhdGUgcGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudDogUGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCA9IHtcbiAgICAgICAgdHlwZTogJ2NvbG9yJyxcbiAgICAgICAgY29kZTogJ2NvbG9yJyxcbiAgICAgICAgZGVmYXVsdEZpcnN0T3B0aW9uOiBmYWxzZSxcbiAgICAgICAgY2hlY2tJZlN0b2NrOiB0cnVlXG4gICAgfVxuXG4gICAgc2V0UGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCA9ICh2YWx1ZTogUGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCkgPT4ge1xuICAgICAgICB0aGlzLnBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgPSB7XG4gICAgICAgICAgICAuLi50aGlzLnBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQsXG4gICAgICAgICAgICAuLi52YWx1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0UGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCA9ICgpID0+IHRoaXMucGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudFxuXG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gc2UgdXRpbGl6YSBwYXJhIGNvbmZpZ3VyYXIgcXVlIGZpbHRyb3MgZGVsIHRpcG8gYFNvcnRGaWx0ZXJgIHNlIHF1aWVyZSBtb3N0cmFyIGVuIGxhIHZpc3RhLlxuICAgICAqIFNlIHVzYW4gbG9zIGNvZGlnbyBkZSBsb3MgZmlsdHJvcyBwYXJhIGluZGljYXIgY3VhbGVzIHNlIGRlYmVuIG1vc3RyYXIuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzb3J0RmlsdGVyczogc3RyaW5nW10gPSBbJ3ByaWNlJywgJ29yZGVyLWFscGgnLCAncmVjZW50J11cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbHRlcnNDb2RlIGFycmVnbG8gZGUgc3RyaW5ncyBjb24gbG9zIGNvZGlnb3MgZGUgbG9zIGZpbHRyb3MuXG4gICAgICogU2kgc2UgbGUgcGFzYSBlbCBwYXJhbWV0cm8gKiphbGwqKiBlc3RlIG1vc3RyYXJhIHRvZG9zLlxuICAgICAqIEBleGFtcGxlIHByaWNlIHwgb3JkZXItYWxwaCB8IHJlY2VudCB8IHVwZGF0ZSB8IGFsbFxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgc2V0U29ydEZpbHRlcnMgPSAoZmlsdGVyc0NvZGU6IHN0cmluZ1tdID0gWydhbGwnXSkgPT4gdGhpcy5zb3J0RmlsdGVycyA9IGZpbHRlcnNDb2RlO1xuXG4gICAgZ2V0U29ydEZpbHRlcnMgPSAoKSA9PiB0aGlzLnNvcnRGaWx0ZXJzO1xuXG4gICAgcHJpdmF0ZSBwb3N0YWxDb2RlUGF0dGVybnM6IHsgW2tleTogc3RyaW5nXTogeyBwYXR0ZXJuOiBSZWdFeHAsIGVycm9yS2V5OiBzdHJpbmcgfSB9ID0ge1xuICAgICAgICAnQVInOiB7IHBhdHRlcm46IC9eWzAtOV17NH0kLywgZXJyb3JLZXk6IFwicG9zdGFsLWNvZGUtcGF0dGVybi1lcnJvci5hclwiIH0sXG4gICAgICAgICdVWSc6IHsgcGF0dGVybjogL15bMC05XXs1fSQvLCBlcnJvcktleTogXCJwb3N0YWwtY29kZS1wYXR0ZXJuLWVycm9yLnV5XCIgfSxcbiAgICAgICAgJ0dCJzogeyBwYXR0ZXJuOiAvXltBLVpdezEsMn1bMC05XVtBLVowLTldP1xccz9bMC05XVtBLVpdezJ9JC8sIGVycm9yS2V5OiBcInBvc3RhbC1jb2RlLXBhdHRlcm4tZXJyb3IuZ2JcIiB9LFxuICAgICAgICAnRVMnOiB7IHBhdHRlcm46IC9eKD86MFsxLTldfFsxLTRdXFxkfDVbMC0yXSlcXGR7M30kLywgZXJyb3JLZXk6IFwicG9zdGFsLWNvZGUtcGF0dGVybi1lcnJvci5lc1wiIH0sXG4gICAgICAgICdCUic6IHsgcGF0dGVybjogL15bMC05XXs1fS1bMC05XXszfSQvLCBlcnJvcktleTogXCJwb3N0YWwtY29kZS1wYXR0ZXJuLWVycm9yLmJyXCIgfSxcbiAgICAgICAgJ0ZSJzogeyBwYXR0ZXJuOiAvXlswLTldezV9JC8sIGVycm9yS2V5OiBcInBvc3RhbC1jb2RlLXBhdHRlcm4tZXJyb3IuZnJcIiB9LFxuICAgICAgICAnUFQnOiB7IHBhdHRlcm46IC9eWzAtOV17NH0tWzAtOV17M30kLywgZXJyb3JLZXk6IFwicG9zdGFsLWNvZGUtcGF0dGVybi1lcnJvci5wdFwiIH0sXG4gICAgfTtcblxuICAgIGdldFBvc3RhbENvZGVQYXR0ZXJuKGNvdW50cnlDb2RlOiBzdHJpbmcpOiB7IHBhdHRlcm46IFJlZ0V4cCwgZXJyb3JLZXk6IHN0cmluZyB9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zdGFsQ29kZVBhdHRlcm5zW2NvdW50cnlDb2RlXSB8fCB7IHBhdHRlcm46IC9eW0EtWmEtejAtOVxcc1xcLV0rJC8sIGVycm9yS2V5OiBcInBvc3RhbC1jb2RlLXBhdHRlcm4tZXJyb3IuZGVmYXVsdFwiIH07XG4gICAgfVxufVxuIl19
450
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5jb25zdHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvY29yZS5jb25zdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFhdEQ7SUFFSSxtQkFBbUIsU0FBMkIsRUFBVSxNQUFjLEVBQXlCLEdBQUc7UUFBbEcsaUJBQXVHO1FBQXBGLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUF5QixRQUFHLEdBQUgsR0FBRyxDQUFBO1FBRWpGLFdBQU0sR0FBRyxRQUFRLENBQUM7UUFDbEIsWUFBTyxHQUFHLFNBQVMsQ0FBQztRQUM5QixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUV4Qix5QkFBb0IsR0FBRyxJQUFJLGFBQWEsRUFBTyxDQUFDO1FBQ2pELG1CQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXpELHFCQUFnQixHQUFHLFVBQUMsT0FBTyxJQUFLLE9BQUEsWUFBWSxHQUFHLE9BQU8sR0FBRyxTQUFTLEVBQWxDLENBQWtDLENBQUM7UUFFbkUsa0JBQWEsR0FBVyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQ3JDLHFCQUFnQixHQUFXLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXJFLGdGQUFnRjtRQUN4RSxZQUFPLEdBQVcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMs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SSxLQUFLLENBQUMsSUFBSSxJQUFJLFFBQVEsRUFBcEUsQ0FBb0UsQ0FBQyxDQUFBO0lBRXBHLENBQUM7SUFBQSxDQUFDO0lBa0lGLHdDQUFvQixHQUFwQixVQUFxQixXQUFtQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsbUNBQW1DLEVBQUUsQ0FBQztJQUNwSSxDQUFDOztnQkE1ZDZCLGdCQUFnQjtnQkFBa0IsTUFBTTtnREFBRyxNQUFNLFNBQUMsS0FBSzs7O0lBRjVFLFNBQVM7UUFIckIsVUFBVSxDQUFDO1lBQ1IsVUFBVSxFQUFFLE1BQU07U0FDckIsQ0FBQztRQUcyRSxXQUFBLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtPQUY3RSxTQUFTLENBK2RyQjtvQkFoZkQ7Q0FnZkMsQUEvZEQsSUErZEM7U0EvZFksU0FBUyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4vYXBpL2Nvbm5lY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDdXJyZW5jeUNvbmZpZyB9IGZyb20gJy4vaW50ZXJmYWNlcy9jdXJyZW5jeUNvbmZpZyc7XG5pbXBvcnQgeyBEZWZhdWx0RmlsdGVyLCBGaWx0ZXJDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvZmlsdGVyJztcbmltcG9ydCB7IFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgfSBmcm9tICcuL2ludGVyZmFjZXMvcGFyYW1zSW50ZXJmYWNlcy9wYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50JztcbnR5cGUgY3VycmVuY3lUeXBlID0gJ0VVUicgfCAnQVJHJyB8ICdVU0QnIHwgJ1BZRycgfCAnUEVOJyB8ICdTRUsnIHwgJ0NVU1RPTSc7XG50eXBlIHBvc2l0aW9uVHlwZSA9ICdMJyB8ICdSJztcbnR5cGUgY2hhbm5lbFR5cGVzID0gJ2IyYicgfCAnYjJiMmMnIHwgJ2IyYyc7XG5leHBvcnQgdHlwZSBDaGVja291dFZpZXdUeXBlID0gJ2xlZ2FjeScgfCAnc2luZ2xlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb25zdGFudHMge1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgQEluamVjdCgnZW52JykgcHJpdmF0ZSBlbnYpIHsgfVxuXG4gICAgcHJpdmF0ZSByZWFkb25seSBMT0NBTEUgPSAnTE9DQUxFJztcbiAgICBwcml2YXRlIHJlYWRvbmx5IENIQU5ORUwgPSAnQ0hBTk5FTCc7XG4gICAgcHVibGljIHNlYXJjaFZhbHVlOiBzdHJpbmcgPSAnJztcblxuICAgIHByaXZhdGUgY2hhbm5lbENvbmZpZ1N1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxhbnk+KCk7XG4gICAgcHVibGljIGNoYW5uZWxDb25maWckID0gdGhpcy5jaGFubmVsQ29uZmlnU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIHByaXZhdGUgY2hhbm5lbENvbmZpZ0FQSSA9IChjaGFubmVsKSA9PiAnL3Nob3AtYXBpLycgKyBjaGFubmVsICsgJ2NoYW5uZWwnO1xuXG4gICAgcHJpdmF0ZSBicm93c2VyV2luZG93OiBvYmplY3QgPSB3aW5kb3cgfHwge307XG4gICAgcHJpdmF0ZSBicm93c2VyV2luZG93RW52OiBvYmplY3QgPSB0aGlzLmJyb3dzZXJXaW5kb3dbJ19fZW52J10gfHwge307XG5cbiAgICAvLyAgICAgcHJpdmF0ZSB1cmxCYXNlOiBzdHJpbmcgPSAnaHR0cDovL3Rlc3RpbmcuYmFja2VuZC5lYXN5Y29tbWVyY2V0ZWNoLmNvbS8nO1xuICAgIHByaXZhdGUgdXJsQmFzZTogc3RyaW5nID0gdGhpcy5icm93c2VyV2luZG93RW52WydhcGlVcmwnXSA/IHRoaXMuYnJvd3NlcldpbmRvd0VudlsnYXBpVXJsJ10gOiAodGhpcy5lbnYuYXBpVXJsIHx8ICdodHRwOi8vYmFja2VuZC5lYXN5Y29tbWVyY2UuZGV2cC8nKTtcbiAgICBwcml2YXRlIHVybEFzc2V0czogc3RyaW5nID0gdGhpcy5icm93c2VyV2luZG93RW52Wyd1cmxBc3NldHMnXSA/IHRoaXMuYnJvd3NlcldpbmRvd0VudlsndXJsQXNzZXRzJ10gOiAodGhpcy5lbnYudXJsQXNzZXRzIHx8IHRoaXMudXJsQmFzZSk7XG4gICAgcHJpdmF0ZSB1cmxGcm9udGVuZDogc3RyaW5nID0gdGhpcy5icm93c2VyV2luZG93RW52Wyd1cmxGcm9udGVuZCddID8gdGhpcy5icm93c2VyV2luZG93RW52Wyd1cmxGcm9udGVuZCddIDogKHRoaXMuZW52LnVybEZyb250ZW5kIHx8ICdodHRwczovL2VsZGVuLmVhc3ljb21tZXJjZXRlY2guY29tLycpO1xuICAgIHByaXZhdGUgbG9jYWxlOiBzdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkxPQ0FMRSkgPyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkxPQ0FMRSkgOiB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ2xvY2FsZSddID8gdGhpcy5icm93c2VyV2luZG93RW52Wydsb2NhbGUnXSA6ICh0aGlzLmVudi5sb2NhbGUgfHwgJ2VzX0FSJyk7XG4gICAgcHJpdmF0ZSBjaGFubmVsOiBzdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkNIQU5ORUwpID8gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5DSEFOTkVMKSA6IHRoaXMuYnJvd3NlcldpbmRvd0VudlsnY2hhbm5lbCddID8gdGhpcy5icm93c2VyV2luZG93RW52WydjaGFubmVsJ10gOiAodGhpcy5lbnYuY2hhbm5lbCB8fCAnbWlub3Jpc3RhJylcbiAgICBwcml2YXRlIGJsb2Nrc0NhY2hlVGltZTogc3RyaW5nID0gdGhpcy5icm93c2VyV2luZG93RW52WydibG9ja3NDYWNoZVRpbWUnXSA/IHRoaXMuYnJvd3NlcldpbmRvd0VudlsnYmxvY2tzQ2FjaGVUaW1lJ10gOiAodGhpcy5lbnYuYmxvY2tzQ2FjaGVUaW1lIHx8IG51bGwpO1xuICAgIHByaXZhdGUgY2hlY2tvdXRWaWV3OiBDaGVja291dFZpZXdUeXBlID0gJ2xlZ2FjeSc7XG4gICAgcHJpdmF0ZSBjaGVja291dFZpZXdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDaGVja291dFZpZXdUeXBlPih0aGlzLmNoZWNrb3V0Vmlldyk7XG4gICAgcHVibGljIGNoZWNrb3V0VmlldyQgPSB0aGlzLmNoZWNrb3V0Vmlld1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBwcml2YXRlIG1vZGFsQ29uZmlnID0geyB0aXRsZTogJ0V4YW1wbGUnLCBjbGFzczogJ21vZGFsLXhsIG1vZGFsLWRpYWxvZy1jZW50ZXJlZCcsIGtleWJvYXJkOiBmYWxzZSB9O1xuICAgIHNldE1vZGFsQ29uZmlnID0gKGNvbmZpZzogYW55KSA9PiB0aGlzLm1vZGFsQ29uZmlnID0gY29uZmlnO1xuICAgIGdldE1vZGFsQ29uZmlnID0gKCkgPT4gdGhpcy5tb2RhbENvbmZpZztcblxuICAgIHByaXZhdGUgdmVyc2lvbjogc3RyaW5nID0gJ3YxJztcblxuICAgIHByaXZhdGUgcm91dGVzID0gWy9eaG9tZSQvZywgL14oXFwvPyljb2xsZWN0aW9uKFxcLz8pKFtcXHdcXC5cXC9cXD9dKikkL2csIC9eY29udGFjdCQvZ107XG5cbiAgICAvKiBHZXQgcmlkIG9mIHRoaXMgQVNBUCEgKi9cbiAgICBwcml2YXRlIG1hc3RlckNoYW5uZWwgPSBudWxsXG5cbiAgICBwdWJsaWMgZ2V0TWFzdGVyQ2hhbm5lbCA9ICgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLm1hc3RlckNoYW5uZWwpIHRoaXMubWFzdGVyQ2hhbm5lbCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdNQVNURVJfQ0hBTk5FTCcpXG4gICAgICAgIHJldHVybiB0aGlzLm1hc3RlckNoYW5uZWxcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0TWFzdGVyQ2hhbm5lbCA9IGNoYW5uZWwgPT4ge1xuICAgICAgICB0aGlzLm1hc3RlckNoYW5uZWwgPSBjaGFubmVsXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdNQVNURVJfQ0hBTk5FTCcsIGNoYW5uZWwpXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1Byb2R1Y3Rpb24gPSAoKSA9PiB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ3Byb2R1Y3Rpb24nXSA/IHRoaXMuYnJvd3NlcldpbmRvd0VudlsncHJvZHVjdGlvbiddIDogKHRoaXMuZW52LnByb2R1Y3Rpb24gfHwgZmFsc2UpO1xuXG4gICAgc2V0VXJsQmFzZSA9ICh1cmwpID0+IHRoaXMudXJsQmFzZSA9IHVybDtcbiAgICBzZXRVcmxBc3NldHMgPSAodXJsKSA9PiB0aGlzLnVybEFzc2V0cyA9IHVybDtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBuZXh0IEZ1bmN0aW9uIHRvIGV4ZWN1dGVcbiAgICAgKiBAcGFyYW0gcGFyYW1zIFRoYXQgZnVuY3Rpb24gbmVlZHNcbiAgICAgKlxuICAgICAqIEV4ZWN1dGUgdGhlIGZ1bmN0aW9uIHBhc3NlZCBhcyBwYXJhbXMsIGlmIHRoZSBmcm9udGVuZCBpcyBpbiBwcm9kdWN0aW9uIG1vZGVcbiAgICAgKi9cbiAgICBvbmx5SWZQcm9kdWN0aW9uID0gKG5leHQsIHBhcmFtcykgPT4gdGhpcy5pc1Byb2R1Y3Rpb24oKSAmJiBuZXh0KHBhcmFtcyk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRGV2dWVsdmUgbGEgdXJsIGJhc2UgZG9uZGUgc2UgYWxvamFuIGxvcyBhcmNoaXZvcyBtdWx0aW1lZGlhXG4gICAgICogQHBhcmFtIHBvc3RNZWRpYSBjYXJwZXRhIGRvbmRlIHNlIGd1YXJkYW4gbG9zIGFyY2hpdm9zXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBtZWRpYVVybCA9IChwb3N0TWVkaWE/OiBzdHJpbmcpID0+IHRoaXMudXJsQXNzZXRzICsgKHRoaXMudXJsQXNzZXRzID09IHRoaXMudXJsQmFzZSA/ICdtZWRpYS8nIDogJycpICsgKHBvc3RNZWRpYSA/IHBvc3RNZWRpYSA6IFwiaW1hZ2UvXCIpO1xuICAgIG1lZGlhQmFubmVyVXJsID0gKCkgPT4gdGhpcy51cmxBc3NldHMgKyAodGhpcy51cmxBc3NldHMgPT0gdGhpcy51cmxCYXNlID8gJ21lZGlhLycgOiAnJykgKyBcImJhbm5lci1pbWFnZS9cIjtcbiAgICBtZWRpYVN0b3JlVXJsID0gKCkgPT4gdGhpcy51cmxBc3NldHMgKyAodGhpcy51cmxBc3NldHMgPT0gdGhpcy51cmxCYXNlID8gJ21lZGlhLycgOiAnJykgKyBcInN0b3JlLWltYWdlL1wiO1xuXG4gICAgZ2V0UHJvZHVjdHNMaXN0Um91dGUgPSAoKSA9PiAnY29sbGVjdGlvbi8nO1xuXG4gICAgZ2V0U2VjdGlvbnNSb3V0ZSA9ICgpID0+ICdzZWN0aW9uLyc7XG5cbiAgICBnZXRVcmxCYXNlID0gKCkgPT4gdGhpcy51cmxCYXNlO1xuICAgIGdldFVybEZyb250ZW5kID0gKCkgPT4gdGhpcy51cmxGcm9udGVuZDtcblxuICAgIGdldEJsb2Nrc0NhY2hlVGltZSA9ICgpOiBudW1iZXIgPT4gdGhpcy5ibG9ja3NDYWNoZVRpbWUgJiYgcGFyc2VJbnQodGhpcy5ibG9ja3NDYWNoZVRpbWUpO1xuXG4gICAgLy8gZ2V0TG9jYWxlID0gKCkgPT4gdGhpcy5sb2NhbGU7XG4gICAgLy8gc2V0TG9jYWxlID0gKGxvY2FsZSkgPT4gdGhpcy5sb2NhbGUgPSBsb2NhbGU7XG5cbiAgICBnZXRMb2NhbGUgPSAoKSA9PiB7XG4gICAgICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkxPQ0FMRSkpIHtcbiAgICAgICAgICAgIHRoaXMubG9jYWxlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5MT0NBTEUpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlXG4gICAgfVxuXG4gICAgZ2V0TG9jYWxlVHJhbnNsYXRlID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRMb2NhbGUoKS5zcGxpdCgnXycpWzBdXG4gICAgfVxuXG4gICAgcHVibGljIHNldExvY2FsZSA9IGxvY2FsZSA9PiB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuTE9DQUxFLCBsb2NhbGUpXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLnVzZShsb2NhbGUuc3BsaXQoJ18nKVswXSlcbiAgICAgICAgdGhpcy5sb2NhbGUgPSBsb2NhbGVcbiAgICB9XG5cbiAgICBnZXRDaGFubmVsID0gKCkgPT4ge1xuICAgICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5DSEFOTkVMKSkge1xuICAgICAgICAgICAgdGhpcy5jaGFubmVsID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5DSEFOTkVMKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNoYW5uZWxcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0Q2hhbm5lbCA9IGNoYW5uZWwgPT4ge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkNIQU5ORUwsIGNoYW5uZWwpXG4gICAgICAgIHRoaXMuY2hhbm5lbCA9IGNoYW5uZWxcbiAgICB9XG5cbiAgICBnZXRDaGVja291dFZpZXcgPSAoKTogQ2hlY2tvdXRWaWV3VHlwZSA9PiB0aGlzLmNoZWNrb3V0VmlldztcblxuICAgIHByaXZhdGUgc2V0Q2hlY2tvdXRWaWV3ID0gKHZpZXc6IENoZWNrb3V0Vmlld1R5cGUpID0+IHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZDogQ2hlY2tvdXRWaWV3VHlwZSA9IHZpZXcgPT09ICdzaW5nbGUnID8gJ3NpbmdsZScgOiAnbGVnYWN5JztcbiAgICAgICAgdGhpcy5jaGVja291dFZpZXcgPSBub3JtYWxpemVkO1xuICAgICAgICB0aGlzLmNoZWNrb3V0Vmlld1N1YmplY3QubmV4dChub3JtYWxpemVkKTtcbiAgICB9XG5cbiAgICBnZXRWZXJzaW9uID0gKCkgPT4gdGhpcy52ZXJzaW9uO1xuXG4gICAgbG9naW5FeHRyYURhdGEgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjbGllbnRfaWQ6ICdkZW1vX2NsaWVudCcsXG4gICAgICAgICAgICBjbGllbnRfc2VjcmV0OiAnc2VjcmV0X2RlbW9fY2xpZW50JyxcbiAgICAgICAgICAgIGdyYW50X3R5cGU6ICdwYXNzd29yZCdcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzQ29sbGVjdGlvbiA9IChwYXRoKSA9PiAoL14oXFwvPyljb2xsZWN0aW9uKFxcLz8pKFtcXHdcXC5cXC9cXD9dKikkL2cpLnRlc3QocGF0aCk7XG5cbiAgICAvKipcbiAgICAgKiBVdGlsaXRpZXNcbiAgICAgKi9cblxuICAgIG1vYmlsZSA9ICgpID0+IHdpbmRvdy5pbm5lcldpZHRoIDwgNzUwO1xuXG4gICAgc3RyaWN0VHlwZUNoYW5uZWwgPSAoKSA9PiB0aGlzLmVudi5zdHJpY3RUeXBlQ2hhbm5lbCB8fCAnYjJiMmMnO1xuXG4gICAgdG9EZWNpbWFsID0gKHRvdGFsKSA9PiAodG90YWwgLSBNYXRoLmZsb29yKHRvdGFsKSA9PSAwKSA/IHRvdGFsIC8gMTAwIDogdG90YWw7XG5cbiAgICAvKipcbiAgICAgKiBFbGVtZW50b3MgcGFyYSBtYW5lam8gZGUgbGlzdGEgZGUgcnV0YXMgcmV1dGlsaXphYmxlc1xuICAgICAqL1xuXG4gICAgYWRkUm91dGVUb1JldXNlID0gKHJvdXRlOiBSZWdFeHApID0+IHJvdXRlICYmIHRoaXMucm91dGVzLnB1c2gocm91dGUpO1xuXG4gICAgcmVtb3ZlUm91dGVUb1JldXNlID0gKHJvdXRlOiBSZWdFeHApID0+IHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnJvdXRlcy5pbmRleE9mKHJvdXRlKTtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRSb3V0ZXNUb1JldXNlID0gKCk6IFJlZ0V4cFtdID0+IHRoaXMucm91dGVzO1xuXG5cblxuICAgIC8qKlxuICAgICAqICBAcHVibGljIGVqZW1wbG8gZGUgdXNvIDxpbWcgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29uc3RzLmdldFJhdGluZ1N0YXIocHJvZHVjdC5yYXRpbmcsJ2Fzc2V0cy9pbWFnZXMvc3Rhci5wbmcnLCdhc3NldHMvaW1hZ2VzL25vdFN0YXIucG5nJylcIiBbc3JjXT1cIml0ZW1cIj5cbiAgICAgKiAgQGRlc2NyaXB0aW9uIGZ1bmNpb24gcXVlIGRhZG8gdW4gdmFsb3IgZW50cmUgMSAuLiA1LCB5IHN0YXI6IG5vdFN0YXI6XG4gICAgICogICAgICAoZGViZW4gc2VyIGVsIHBhdGggZGVsIGFyY2hpdm8gbG9jYWwgYSBsYSBpbXBsZW1lbnRhY2lvbikuXG4gICAgICogICAgICByZXRvcm5hIHVuIGFycmVnbG8gY29uIGNvbiBsYSB2YWxvcmFjaW9uIGNvcnJlc3BvbmRpZW50ZS5cbiAgICAgKi9cbiAgICBnZXRSYXRpbmdTdGFyID0gKHJhdGluZzogYW55LCBzdGFyOiBTdHJpbmcsIG5vdFN0YXI6IFN0cmluZykgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IHVybFN0YXIgPSBbXTtcbiAgICAgICAgICAgIGxldCBjYW50U3RhciA9IE51bWJlcihyYXRpbmcpIHx8IDA7XG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgNTsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIHVybFN0YXIucHVzaChcbiAgICAgICAgICAgICAgICAgICAgY2FudFN0YXIgPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHN0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbm90U3RhclxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY2FudFN0YXItLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1cmxTdGFyO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcImdldFJhdGluZ1N0YXIgcHJvZHVqbyB1biBlcnJvciAtPiBcIiwgZXJyb3IpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogIEBwdWJsaWMgZWplbXBsbyBkZSB1c28gKGtleXByZXNzKT1cImlucHV0VmFsaWRhdGlvbkJ5RXhwcmVzc2lvbnMoJGV2ZW50LCdbMC05XXsxLDl9JylcIiBlbiBlbCBET00uXG4gICAgICogIEBkZXNjcmlwdGlvbiBmdW5jaW9uIHF1ZSBkYWRvIHVuIG1hbmVqYW5kb3IgZGUgZXZlbnRvLCB5IHVuYSBleHByZXNpb24gcmVndWxhciBlc3RhIGVzXG4gICAgICogICAgICAgICAgZXZhbHVhZGEgc29icmUgbG9zIHZhbG9yZXMgcXVlIGVsIG1hbmVqYWRvciBkZSBldmVudG9zIG5vcyBlbnZpYS5cbiAgICAgKiAgICAgICAgICBFbiBlbCBjYXNvIGVuIGVsIHF1ZSBzZSBlbnZpZSBlbCBwYXJhbWV0cm8gJ2NvbmRpdGlvbicgZXN0ZSBwdWVkZSBzZXIgcGFyYVxuICAgICAqICAgICAgICAgIGFudWxhciBlbCBldmVudG8gY29tbyBjb25kaWNpb24gYWRpY2lvbmFsIGEgbGEgZXZhbHVhY2lvbiBkZSBsYSBlbnRyYWRhLlxuICAgICAqL1xuICAgIGlucHV0VmFsaWRhdGlvbkJ5RXhwcmVzc2lvbnMgPSAoZSwgcGF0cm9uLCBjb25kaXRpb24gPSBudWxsKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgdGVjbGEgPSAoZG9jdW1lbnQpID8gZS5rZXlDb2RlIDogZS53aGljaDtcbiAgICAgICAgICAgIGlmICh0ZWNsYSA9PSA4KSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGxldCBwYXRyb25SZWcgPSBuZXcgUmVnRXhwKHBhdHJvbilcbiAgICAgICAgICAgIGxldCB0ZWNsYV9maW5hbCA9IFN0cmluZy5mcm9tQ2hhckNvZGUodGVjbGEpO1xuICAgICAgICAgICAgaWYgKGNvbmRpdGlvbiAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhdHJvblJlZy50ZXN0KHRlY2xhX2ZpbmFsKSAmJiBjb25kaXRpb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGF0cm9uUmVnLnRlc3QodGVjbGFfZmluYWwpXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiaW5wdXRWYWxpZGF0aW9uQnlFeHByZXNzaW9ucyBwcm9kdWpvIHVuIGVycm9yIC0+IFwiLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIG5lZWRsZXMgKGFndWphcykgb2JqZWN0IGNvbiBjbGF2ZXMgdmFsb3IgYSBmaWx0cmFyXG4gICAgICogQHBhcmFtIGhheXN0YWNrIChwYWphcikgb2JqZWN0byBlbiBlbCBxdWUgYnVzY2FyXG4gICAgICpcbiAgICAgKiBAZGVzY3JpcHRpb24gZnVuY2lvbiBxdWUgYnVzY2EgZW4gZWwgaGF5c3RhY2sgKHBhamFyKSB0b2RvcyBsb3Mgb2JqZXRvcyBxdWUgY29udGVudGFuXG4gICAgICogdG9kYXMgbGFzIGNsYXZlcyBkZSBsb3MgbmVlZGxlcyhhZ3VqYXMpIHF1ZSBjb250ZW5nYW4gZWwgbWlzbW8gdmFsb3JcbiAgICAgKi9cbiAgICBjb250YWluc0FsbChuZWVkbGVzOiBvYmplY3QsIGhheXN0YWNrOiBvYmplY3QpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAgICAgaWYgKCEhbmVlZGxlcyAmJiAhIWhheXN0YWNrKSB7XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhuZWVkbGVzKS5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIShoYXlzdGFjay5oYXNPd25Qcm9wZXJ0eSh2YWx1ZVswXSkgJiYgaGF5c3RhY2tbdmFsdWVbMF1dID09IHZhbHVlWzFdKSkgcmVzdWx0ID0gZmFsc2VcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9waWVkYWQgcXVlIHNlIHV0aWxpemEgcGFyYSB0b21hciBjb21vIGNvbmZpZ3VyYWNpw7NuIHBhcmEgZWwgdGlwbyBkZSBtb25lZGEgcXVlIHNlIHV0aWxpemEgZW4gZWwgc2l0aW8uXG4gICAgICogRXN0b3MgdmFsb3JlcyBzb24gdXRpbGl6YWRvcyBwYXJhIGVsIHBpcGUgY3VycmVuY3lQcmljZVxuICAgICAqL1xuICAgIHB1YmxpYyBjdXJyZW5jeTogQ3VycmVuY3lDb25maWcgPSB7XG4gICAgICAgIGNvZGU6ICdBUkcnLFxuICAgICAgICBzeW1ib2w6ICckJyxcbiAgICAgICAgcG9zaXRpb246ICdMZWZ0JyxcbiAgICAgICAgd2l0aG91dERlY2ltYWw6IGZhbHNlXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXJyZWdsbyBkZSB2YWxvcmVzIHVzYWRvcyBwYXJhIGVsIHBpcGUgY3VycmVuY3lQcmljZVxuICAgICAqL1xuICAgIHB1YmxpYyBjdXJyZW5jeVR5cGVDb25maWc6IEN1cnJlbmN5Q29uZmlnW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6ICdFVVInLFxuICAgICAgICAgICAgc3ltYm9sOiAn4oKsJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnUmlnaHQnLFxuICAgICAgICAgICAgd2l0aG91dERlY2ltYWw6IGZhbHNlXG5cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY29kZTogJ0FSRycsXG4gICAgICAgICAgICBzeW1ib2w6ICckJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnTGVmdCcsXG4gICAgICAgICAgICB3aXRob3V0RGVjaW1hbDogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY29kZTogJ0FSUycsXG4gICAgICAgICAgICBzeW1ib2w6ICckJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnTGVmdCcsXG4gICAgICAgICAgICB3aXRob3V0RGVjaW1hbDogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY29kZTogJ1VTRCcsXG4gICAgICAgICAgICBzeW1ib2w6ICckJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnTGVmdCcsXG4gICAgICAgICAgICB3aXRob3V0RGVjaW1hbDogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY29kZTogJ1BZRycsXG4gICAgICAgICAgICBzeW1ib2w6ICdHcy4nLFxuICAgICAgICAgICAgcG9zaXRpb246ICdMZWZ0JyxcbiAgICAgICAgICAgIHdpdGhvdXREZWNpbWFsOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBjb2RlOiAnUEVOJyxcbiAgICAgICAgICAgIHN5bWJvbDogJ1MvJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnTGVmdCcsXG4gICAgICAgICAgICB3aXRob3V0RGVjaW1hbDogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY29kZTogJ1NFSycsXG4gICAgICAgICAgICBzeW1ib2w6ICdTRUsnLFxuICAgICAgICAgICAgcG9zaXRpb246ICdSaWdodCcsXG4gICAgICAgICAgICB3aXRob3V0RGVjaW1hbDogdHJ1ZVxuICAgICAgICB9LFxuICAgIF1cblxuICAgIHB1YmxpYyBzZXRDdXJyZW5jeVR5cGVDb25maWcgPSAoY3VycmVuY3lUeXBlQ29uZmlnOiBDdXJyZW5jeUNvbmZpZ1tdKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVuY3lUeXBlQ29uZmlnID0gY3VycmVuY3lUeXBlQ29uZmlnO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlZW1wbGF6YSBsb3MgdmFsb3JlcyBkZSB1bmEgbW9uZWRhLlxuICAgICAqIEBwYXJhbSBjdXJyZW5jeVR5cGVGaW5kIFRpcG8gZGUgY3VycmVuY3kgcXVlIHNlIGRlc2VhIG1vZGlmaWNhclxuICAgICAqIEBwYXJhbSBjdXN0b21UeXBlIExvcyBudWV2b3MgdmFsb3Jlcy4gVG9kYXMgbGFzIGtleSBzb24gb3BjaW9uYWxlc1xuICAgICAqIEBleGFtcGxlIGN1c3RvbVR5cGUgPSB7IGNvZGU6ICdBUkcnLCBzeW1ib2w6ICckJywgcG9zaXRpb246ICdMZWZ0JyAsIHdpdGhvdXREZWNpbWFsOiBmYWxzZSB9XG4gICAgICovXG4gICAgcHVibGljIHJlcGxhY2VDdXJyZW5jeVR5cGVDb25maWcgPSAoY3VycmVuY3lUeXBlRmluZDogY3VycmVuY3lUeXBlLCBjdXN0b21UeXBlOiBDdXJyZW5jeUNvbmZpZykgPT4ge1xuICAgICAgICBsZXQgY3VycmVuY3lUeXBlID0gdGhpcy5jdXJyZW5jeVR5cGVDb25maWcuZmluZCh0eXBlID0+IHR5cGUuY29kZSA9PSBjdXJyZW5jeVR5cGVGaW5kKVxuICAgICAgICBpZiAoY3VycmVuY3lUeXBlKSB7XG4gICAgICAgICAgICBjdXJyZW5jeVR5cGUuc3ltYm9sID0gY3VzdG9tVHlwZT8uc3ltYm9sIHx8IGN1cnJlbmN5VHlwZS5zeW1ib2xcbiAgICAgICAgICAgIGN1cnJlbmN5VHlwZS5jb2RlID0gY3VzdG9tVHlwZT8uY29kZSB8fCBjdXJyZW5jeVR5cGUuY29kZVxuICAgICAgICAgICAgY3VycmVuY3lUeXBlLnBvc2l0aW9uID0gY3VzdG9tVHlwZT8ucG9zaXRpb24gfHwgY3VycmVuY3lUeXBlLnBvc2l0aW9uXG4gICAgICAgICAgICBjdXJyZW5jeVR5cGUud2l0aG91dERlY2ltYWwgPSBjdXN0b21UeXBlPy53aXRob3V0RGVjaW1hbCB8fCBjdXJyZW5jeVR5cGUud2l0aG91dERlY2ltYWxcbiAgICAgICAgfVxuICAgICAgICAvL1JldmVlciBlbiBlbCBmdXR1cm8gc2kgc2UgZW1waWV6YW4gYSBhZ3JlZ2FyIG90cm8gdGlwb3MgZGUgbW9uZWRhc1xuICAgICAgICAvKiBlbHNle1xuICAgICAgICAgICAgdGhpcy5jdXJyZW5jeVR5cGVDb25maWcucHVzaCh7Li4uY3VzdG9tVHlwZSB9KVxuICAgICAgICB9ICovXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY3VycmVuY3lUeXBlRmluZCBEZWZpbmlyIGVsIGNvZGUgZGVsIHRpcG8gZGUgbW9uZWRhIHF1ZSBzZSBxdWllcmEgdXRpbGl6YXIuXG4gICAgICogU2kgZWwgdGlwbyBlcyBDVVNUT00gc2UgdG9tYW4gbG9zIHZhbG9yZXMgZGVsIHNlZ3VuZG8gcGFyYW1ldHJvIGRvbmRlIHNlIHB1ZWRlIGRlZmluaXIgbGEgc2ltYm9sb2fDrWEgeSBwb3Nlc2nDs24gcXVlIHNlIHF1aWVyYS5cbiAgICAgKiBAcGFyYW0gY3VzdG9tVHlwZSBGb3JtYXRvIGRlbCBwYXLDoW1ldHJvIGVqZW1wbG8geyBjb2RlOiAnQVJHJywgc3ltYm9sOiAnJCcsIHBvc2l0aW9uOiAnTCcgLCB3aXRob3V0RGVjaW1hbHM6IGZhbHNlIH0gLFxuICAgICAqIHRvZGFzIGxhcyBrZXkgc29uIG9wY2lvbmFsZXMgeSBwb3IgZGVmZWN0byBzZSB0b21hbiBsb3MgdmFsb3JlcyBkZWwgZWplbXBsby5cbiAgICAgKiBAcmV0dXJucyBzZSByZXRvcm5hIGxhIGNvbmZpZ3VyYWNpw7NuIHF1ZSBzZSBzZXRlbyBhIGxhIHByb3BpZWRhZCBjdXJyZW5jeSBkZWwgc2VydmljaW8uXG4gICAgICovXG4gICAgcHVibGljIHNldEN1cnJlbmN5ID0gKGN1cnJlbmN5VHlwZUZpbmQ6IGN1cnJlbmN5VHlwZSwgY3VzdG9tVHlwZT86IEN1cnJlbmN5Q29uZmlnKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVuY3kgPSB0aGlzLmN1cnJlbmN5VHlwZUNvbmZpZy5maW5kKGN0ID0+IGN0LmNvZGUgPT0gY3VycmVuY3lUeXBlRmluZC50b1VwcGVyQ2FzZSgpKSB8fCB0aGlzLmN1cnJlbmN5XG4gICAgICAgIGN1c3RvbVR5cGUgJiYgKHRoaXMuY3VycmVuY3kgPSB7IC4uLnRoaXMuY3VycmVuY3ksIC4uLmN1c3RvbVR5cGUgfSlcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVuY3k7XG4gICAgfTtcblxuXG4gICAgLyoqXG4gICAgICogZGV2dWVsdmUgdHJ1ZSBzaSBleGlzdGUgZWwgZWxlbWVudG8gXCJzZWFyY2hcIiBlbiBlbCBhcnJheSBkZSBwYXJhbWV0cm9zIFwicGFyYW1zXCJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJhbXMgQXJyYXkgZGUgcGFyYW1ldHJvcyBlbnRyZSBsb3MgcXVlIGJ1c2NhclxuICAgICAqIEBwYXJhbSBzZWFyY2hlZCBFbGVtZW50byBxdWUgYnVzY2FyXG4gICAgICogQHBhcmFtIHByZWZpeCBwcmVmaWpvIGRlbCBzdHJpbmcgYSBidXNjYXIgKGVqZW1wbG86IFwibGlua19cIilcbiAgICAgKiBAcGFyYW0gc3VmZml4IHN1ZmlqbyBkZWwgc3RyaW5nIGEgYnVzY2FyIChlamVtcGxvOiBcImxpbmtfXCIpXG4gICAgICogQHBhcmFtIGNhc2VzZW5zaXRpdmUgZGV0ZXJtaW5hIHNpIHNlIGV2YWx1YSBjb24gc2Vuc2liaWxpZGFkIGVudHJlIG1heXVzY3VsYSB5IG1pbnVzY3VsYVxuICAgICAqIEByZXR1cm5zIHJldG9ybmEgdHJ1ZSBvIGZhbHNlIHNpIHNlIGVuY29udHJvIG8gbm8gZWwgcGFyYW1ldHJvIGVuIGVsIGFycmF5XG4gICAgICovXG4gICAgcHVibGljIGhhc1BhcmFtcyhcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICBzZWFyY2hlZCxcbiAgICAgICAgcHJlZml4ID0gJycsXG4gICAgICAgIHN1ZmZpeCA9ICcnLFxuICAgICAgICBjYXNlc2Vuc2l0aXZlID0gZmFsc2UpOiBib29sZWFuIHtcblxuXG4gICAgICAgIHJldHVybiBjYXNlc2Vuc2l0aXZlID8gcGFyYW1zLmZpbmQocGFyYW0gPT4gKHBhcmFtLmNvZGUpLnRvTG93ZXJDYXNlKCkgPT0gKHByZWZpeCArIHNlYXJjaGVkICsgc3VmZml4KS50b0xvd2VyQ2FzZSgpIHx8IChwYXJhbS5jb2RlKS50b0xvd2VyQ2FzZSgpID09IChzZWFyY2hlZCkudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgIDogcGFyYW1zLmZpbmQocGFyYW0gPT4gcGFyYW0uY29kZSA9PSAocHJlZml4ICsgc2VhcmNoZWQgKyBzdWZmaXgpIHx8IHBhcmFtLmNvZGUgPT0gc2VhcmNoZWQpXG5cbiAgICB9O1xuXG4gICAgcHVibGljIG1vZGlmeUNoYW5uZWxDb25maWcgPSBjaGFubmVsQ29uZmlnID0+IHtcbiAgICAgICAgaWYgKGNoYW5uZWxDb25maWcuY2hhbm5lbCB8fCBjaGFubmVsQ29uZmlnLmNvZGUpXG4gICAgICAgICAgICB0aGlzLnNldENoYW5uZWwoY2hhbm5lbENvbmZpZy5jaGFubmVsIHx8IGNoYW5uZWxDb25maWcuY29kZSlcblxuICAgICAgICBpZiAoY2hhbm5lbENvbmZpZy5sb2NhbGUgfHwgKGNoYW5uZWxDb25maWcubG9jYWxlcyAmJiBjaGFubmVsQ29uZmlnLmxvY2FsZXMuY29kZSkpXG4gICAgICAgICAgICB0aGlzLnNldExvY2FsZShjaGFubmVsQ29uZmlnLmxvY2FsZSB8fCBjaGFubmVsQ29uZmlnLmxvY2FsZXMuY29kZSlcblxuICAgICAgICBpZiAoY2hhbm5lbENvbmZpZy5jdXJyZW5jeSB8fCBjaGFubmVsQ29uZmlnLmJhc2VDdXJyZW5jeSlcbiAgICAgICAgICAgIHRoaXMuc2V0Q3VycmVuY3koY2hhbm5lbENvbmZpZy5jdXJyZW5jeSB8fCBjaGFubmVsQ29uZmlnLmJhc2VDdXJyZW5jeSlcblxuICAgICAgICBpZiAoY2hhbm5lbENvbmZpZy5jaGVja291dFZpZXcgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5zZXRDaGVja291dFZpZXcoY2hhbm5lbENvbmZpZy5jaGVja291dFZpZXcgYXMgQ2hlY2tvdXRWaWV3VHlwZSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjaGFubmVsQ29uZmlnO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU2UgdXRpbGl6YSBwYXJhIGNvbmZpZ3VyYXIgbG9zIGZpbHRyb3MgcG9yIGRlZmVjdG8gcXVlIHNlIGFwbGljYXJhbiBlbiBsYSBzZWNjaW9uICdDb2xsZWN0aW9uJ1xuICAgICAqIGN1YW5kbyBzZSBpbmdyZXNhIGEgbGEgbWlzbWEuXG4gICAgICovXG4gICAgcHJpdmF0ZSBkZWZhdWx0RmlsdGVyczogRGVmYXVsdEZpbHRlcltdID0gW11cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZXR0ZWEgZWwgdmFsb3IgZGUgbGEgdmFyaWFibGUgZGVmYXVsRmlsdGVycy5cbiAgICAgKiBAcGFyYW0gZmlsdGVyc1xuICAgICAqL1xuICAgIHB1YmxpYyBzZXREZWZhdWx0RmlsdGVycyA9IChmaWx0ZXJzOiBEZWZhdWx0RmlsdGVyW10pID0+IHtcbiAgICAgICAgdGhpcy5kZWZhdWx0RmlsdGVycyA9IGZpbHRlcnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERlZmF1bHRGaWx0ZXJzID0gKCk6IERlZmF1bHRGaWx0ZXJbXSA9PiB0aGlzLmRlZmF1bHRGaWx0ZXJzXG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU2UgdXRpbGl6YSBwYXJhIGNvbmZpZ3VyYXIgdGFudG8gbG9zIGZpbHRyb3MgcG9yIGRlZmVjdG9zIHF1ZSB5YSBzZXJhbiBhcGxpY2Fkb3MsIGNvbW8gdGFtYmllblxuICAgICAqIGxvcyBmaWx0cm9zIHF1ZSBzZSBtb3N0cmFyYW4gZW4gbGEgc2VjY2lvbiBjb2xsZWN0aW9uLCBzdSBvcmRlbiwgZXRjLlxuICAgICAqL1xuICAgIHByaXZhdGUgZmlsdGVyQ29uZmlnOiBGaWx0ZXJDb25maWcgPSB7XG4gICAgICAgIGRlZmF1bHRGaWx0ZXJzOiBbXSxcbiAgICAgICAgZmlsdGVyczogWydjYXRlZ29yeScsICdhdHRyaWJ1dGVzJywgJ2R5bmFtaWNzJywgJ3ByaWNlX3JhbmdlJ11cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RmlsdGVyQ29uZmlnID0gKGZpbHRlckNvbmZpZzogRmlsdGVyQ29uZmlnKSA9PiB7XG4gICAgICAgIGZpbHRlckNvbmZpZy5kZWZhdWx0RmlsdGVycyA/IHRoaXMuZmlsdGVyQ29uZmlnLmRlZmF1bHRGaWx0ZXJzID0gZmlsdGVyQ29uZmlnLmRlZmF1bHRGaWx0ZXJzIDogbnVsbFxuICAgICAgICBmaWx0ZXJDb25maWcuZmlsdGVycyA/IHRoaXMuZmlsdGVyQ29uZmlnLmZpbHRlcnMgPSBmaWx0ZXJDb25maWcuZmlsdGVycyA6IG51bGxcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmlsdGVyQ29uZmlnID0gKCkgPT4gdGhpcy5maWx0ZXJDb25maWcuZmlsdGVyc1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIGNvbnRpZW5lIHVuIGFycmVnbG8gZGUgc3RyaW5nIGN1eW8gY29udGVuaWRvIHNvbiBsb3MgY29kaWdvcyBkZSBsb3MgcGFpc2VzLlxuICAgICAqIEBleGFtcGxlIFsnQVInLCdFUycsJ0dCJ11cbiAgICAgKi9cbiAgICBwcml2YXRlIGNvdW50cmllczogc3RyaW5nW10gPSBbXVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBjb250aWVuZSB1biBhcnJlZ2xvIGRlIHN0cmluZyBjdXlvIGNvbnRlbmlkbyBzb24gbG9zIGNvZGlnb3MgZGUgbG9zIHBhaXNlcyBhIGV4Y2x1aXIuXG4gICAgICogQGV4YW1wbGUgWydHQiddXG4gICAgICovXG4gICAgcHVibGljIGV4Y2x1ZGVkQ291bnRyaWVzOiBzdHJpbmdbXSA9IFtdXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY291bnRyaWVzIGRlYmUgY29udGVuZXIgbG9zIGNvZGlnb3MgZGUgbG9zIHBhaXNlcyBxdWUgc2UgcXVpZXJlIG1vc3RyYXJcbiAgICAgKiBAZXhhbXBsZSBbJ0FSJywnRVMnLCdHQiddXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0Q291bnRyaWVzID0gKGNvdW50cmllczogc3RyaW5nW10pID0+IHRoaXMuY291bnRyaWVzID0gY291bnRyaWVzO1xuXG4gICAgcHVibGljIGdldENvdW50cmllcyA9ICgpID0+IHRoaXMuY291bnRyaWVzO1xuXG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gZXN0YSB2YXJpYWJsZSBzZSB1dGlsaXphIHBhcmEgY29uZmlndXJhciBsb3MgcGFyYW1ldHJvcyBjdWFuZG8gc2UgZGVzZWEgbW9zdHJhclxuICAgICAqIHZhcmlhbnRlcyBlbCBsaXN0YWRvIGRlIHByb2R1Y3Rvcy5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ310eXBlIHRpcG8gZGUgb3B0aW9uc1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfWNvZGUgY29kaWdvIGRlIG9wdGlvbnNcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59ZGVmYXVsdEZpcnN0T3B0aW9uIGB0cnVlYCB0b21hIGVsIHByaW1lciBvcHRpb24gZGVsIHByb2R1Y3RvIGVuIGdlbmVyYWxcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59Y2hlY2tJZlN0b2NrIGB0cnVlYCBzZSByZWFsaXphIHVuIGNoZXF1ZW8gZGUgc2kgbGEgdmFyaWFudGUgdGllbmUgc3RvY2sgcGFyYSBtb3N0cmFybGFcbiAgICAgKiBAZXhhbXBsZSAgYGBgamF2YXNjcmlwdFxuICAgICAqIHtcbiAgICAgICAgdHlwZTogJ2NvbG9yJyxcbiAgICAgICAgY29kZTogJ2NvbG9yJyxcbiAgICAgICAgZGVmYXVsdEZpcnN0T3B0aW9uOiBmYWxzZSAsXG4gICAgICAgIGNoZWNrSWZTdG9jazp0cnVlXG4gICAgICAgIH0gYGBgXG4gICAgICovXG4gICAgcHJpdmF0ZSBwYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50OiBQYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50ID0ge1xuICAgICAgICB0eXBlOiAnY29sb3InLFxuICAgICAgICBjb2RlOiAnY29sb3InLFxuICAgICAgICBkZWZhdWx0Rmlyc3RPcHRpb246IGZhbHNlLFxuICAgICAgICBjaGVja0lmU3RvY2s6IHRydWVcbiAgICB9XG5cbiAgICBzZXRQYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50ID0gKHZhbHVlOiBQYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50KSA9PiB7XG4gICAgICAgIHRoaXMucGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMucGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCxcbiAgICAgICAgICAgIC4uLnZhbHVlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRQYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50ID0gKCkgPT4gdGhpcy5wYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50XG5cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBzZSB1dGlsaXphIHBhcmEgY29uZmlndXJhciBxdWUgZmlsdHJvcyBkZWwgdGlwbyBgU29ydEZpbHRlcmAgc2UgcXVpZXJlIG1vc3RyYXIgZW4gbGEgdmlzdGEuXG4gICAgICogU2UgdXNhbiBsb3MgY29kaWdvIGRlIGxvcyBmaWx0cm9zIHBhcmEgaW5kaWNhciBjdWFsZXMgc2UgZGViZW4gbW9zdHJhci5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNvcnRGaWx0ZXJzOiBzdHJpbmdbXSA9IFsncHJpY2UnLCAnb3JkZXItYWxwaCcsICdyZWNlbnQnXVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsdGVyc0NvZGUgYXJyZWdsbyBkZSBzdHJpbmdzIGNvbiBsb3MgY29kaWdvcyBkZSBsb3MgZmlsdHJvcy5cbiAgICAgKiBTaSBzZSBsZSBwYXNhIGVsIHBhcmFtZXRybyAqKmFsbCoqIGVzdGUgbW9zdHJhcmEgdG9kb3MuXG4gICAgICogQGV4YW1wbGUgcHJpY2UgfCBvcmRlci1hbHBoIHwgcmVjZW50IHwgdXBkYXRlIHwgYWxsXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBzZXRTb3J0RmlsdGVycyA9IChmaWx0ZXJzQ29kZTogc3RyaW5nW10gPSBbJ2FsbCddKSA9PiB0aGlzLnNvcnRGaWx0ZXJzID0gZmlsdGVyc0NvZGU7XG5cbiAgICBnZXRTb3J0RmlsdGVycyA9ICgpID0+IHRoaXMuc29ydEZpbHRlcnM7XG5cbiAgICBwcml2YXRlIHBvc3RhbENvZGVQYXR0ZXJuczogeyBba2V5OiBzdHJpbmddOiB7IHBhdHRlcm46IFJlZ0V4cCwgZXJyb3JLZXk6IHN0cmluZyB9IH0gPSB7XG4gICAgICAgICdBUic6IHsgcGF0dGVybjogL15bMC05XXs0fSQvLCBlcnJvcktleTogXCJwb3N0YWwtY29kZS1wYXR0ZXJuLWVycm9yLmFyXCIgfSxcbiAgICAgICAgJ1VZJzogeyBwYXR0ZXJuOiAvXlswLTldezV9JC8sIGVycm9yS2V5OiBcInBvc3RhbC1jb2RlLXBhdHRlcm4tZXJyb3IudXlcIiB9LFxuICAgICAgICAnR0InOiB7IHBhdHRlcm46IC9eW0EtWl17MSwyfVswLTldW0EtWjAtOV0/XFxzP1swLTldW0EtWl17Mn0kLywgZXJyb3JLZXk6IFwicG9zdGFsLWNvZGUtcGF0dGVybi1lcnJvci5nYlwiIH0sXG4gICAgICAgICdFUyc6IHsgcGF0dGVybjogL14oPzowWzEtOV18WzEtNF1cXGR8NVswLTJdKVxcZHszfSQvLCBlcnJvcktleTogXCJwb3N0YWwtY29kZS1wYXR0ZXJuLWVycm9yLmVzXCIgfSxcbiAgICAgICAgJ0JSJzogeyBwYXR0ZXJuOiAvXlswLTldezV9LVswLTldezN9JC8sIGVycm9yS2V5OiBcInBvc3RhbC1jb2RlLXBhdHRlcm4tZXJyb3IuYnJcIiB9LFxuICAgICAgICAnRlInOiB7IHBhdHRlcm46IC9eWzAtOV17NX0kLywgZXJyb3JLZXk6IFwicG9zdGFsLWNvZGUtcGF0dGVybi1lcnJvci5mclwiIH0sXG4gICAgICAgICdQVCc6IHsgcGF0dGVybjogL15bMC05XXs0fS1bMC05XXszfSQvLCBlcnJvcktleTogXCJwb3N0YWwtY29kZS1wYXR0ZXJuLWVycm9yLnB0XCIgfSxcbiAgICB9O1xuXG4gICAgZ2V0UG9zdGFsQ29kZVBhdHRlcm4oY291bnRyeUNvZGU6IHN0cmluZyk6IHsgcGF0dGVybjogUmVnRXhwLCBlcnJvcktleTogc3RyaW5nIH0ge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3N0YWxDb2RlUGF0dGVybnNbY291bnRyeUNvZGVdIHx8IHsgcGF0dGVybjogL15bQS1aYS16MC05XFxzXFwtXSskLywgZXJyb3JLZXk6IFwicG9zdGFsLWNvZGUtcGF0dGVybi1lcnJvci5kZWZhdWx0XCIgfTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,27 @@
1
+ /** Identifica las rutas del core que deben salir al inicio tras reemplazar un token inactivo. */
2
+ export var cartBootstrapRecoveryRoute = function (url) {
3
+ var path = (url || '').split(/[?#]/)[0].replace(/\/+$/, '') || '/';
4
+ if (path === '/cart')
5
+ return 'cart';
6
+ if (path === '/checkout' || path === '/cart/checkout')
7
+ return 'checkout';
8
+ return null;
9
+ };
10
+ /** Ejecuta la navegación solo desde la ruta core correspondiente al consumidor. */
11
+ export var navigateHomeAfterCartBootstrapRecovery = function (url, expectedRoute, consumeRecovery, navigateHome) {
12
+ if (cartBootstrapRecoveryRoute(url) !== expectedRoute)
13
+ return false;
14
+ if (!consumeRecovery())
15
+ return false;
16
+ navigateHome();
17
+ return true;
18
+ };
19
+ /** Invalida el estado local y sale únicamente de una ruta de checkout. */
20
+ export var handleInvalidatedCheckoutNavigation = function (url, invalidateCheckout, navigateHome) {
21
+ if (cartBootstrapRecoveryRoute(url) !== 'checkout')
22
+ return false;
23
+ invalidateCheckout();
24
+ navigateHome();
25
+ return true;
26
+ };
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC1ib290c3RyYXAtbmF2aWdhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9lYy1jb21wb25lbnQvY2FydC1ib290c3RyYXAtbmF2aWdhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxpR0FBaUc7QUFDakcsTUFBTSxDQUFDLElBQU0sMEJBQTBCLEdBQUcsVUFBQyxHQUFXO0lBQ2xELElBQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQztJQUNyRSxJQUFJLElBQUksS0FBSyxPQUFPO1FBQUUsT0FBTyxNQUFNLENBQUM7SUFDcEMsSUFBSSxJQUFJLEtBQUssV0FBVyxJQUFJLElBQUksS0FBSyxnQkFBZ0I7UUFBRSxPQUFPLFVBQVUsQ0FBQztJQUN6RSxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixtRkFBbUY7QUFDbkYsTUFBTSxDQUFDLElBQU0sc0NBQXNDLEdBQUcsVUFDbEQsR0FBVyxFQUNYLGFBQXdELEVBQ3hELGVBQThCLEVBQzlCLFlBQXVCO0lBRXZCLElBQUksMEJBQTBCLENBQUMsR0FBRyxDQUFDLEtBQUssYUFBYTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3BFLElBQUksQ0FBQyxlQUFlLEVBQUU7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNyQyxZQUFZLEVBQUUsQ0FBQztJQUNmLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLDBFQUEwRTtBQUMxRSxNQUFNLENBQUMsSUFBTSxtQ0FBbUMsR0FBRyxVQUMvQyxHQUFXLEVBQ1gsa0JBQThCLEVBQzlCLFlBQXVCO0lBRXZCLElBQUksMEJBQTBCLENBQUMsR0FBRyxDQUFDLEtBQUssVUFBVTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ2pFLGtCQUFrQixFQUFFLENBQUM7SUFDckIsWUFBWSxFQUFFLENBQUM7SUFDZixPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBDYXJ0Qm9vdHN0cmFwUmVjb3ZlcnlSb3V0ZSA9ICdjYXJ0JyB8ICdjaGVja291dCcgfCBudWxsO1xuXG4vKiogSWRlbnRpZmljYSBsYXMgcnV0YXMgZGVsIGNvcmUgcXVlIGRlYmVuIHNhbGlyIGFsIGluaWNpbyB0cmFzIHJlZW1wbGF6YXIgdW4gdG9rZW4gaW5hY3Rpdm8uICovXG5leHBvcnQgY29uc3QgY2FydEJvb3RzdHJhcFJlY292ZXJ5Um91dGUgPSAodXJsOiBzdHJpbmcpOiBDYXJ0Qm9vdHN0cmFwUmVjb3ZlcnlSb3V0ZSA9PiB7XG4gICAgY29uc3QgcGF0aCA9ICh1cmwgfHwgJycpLnNwbGl0KC9bPyNdLylbMF0ucmVwbGFjZSgvXFwvKyQvLCAnJykgfHwgJy8nO1xuICAgIGlmIChwYXRoID09PSAnL2NhcnQnKSByZXR1cm4gJ2NhcnQnO1xuICAgIGlmIChwYXRoID09PSAnL2NoZWNrb3V0JyB8fCBwYXRoID09PSAnL2NhcnQvY2hlY2tvdXQnKSByZXR1cm4gJ2NoZWNrb3V0JztcbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbi8qKiBFamVjdXRhIGxhIG5hdmVnYWNpw7NuIHNvbG8gZGVzZGUgbGEgcnV0YSBjb3JlIGNvcnJlc3BvbmRpZW50ZSBhbCBjb25zdW1pZG9yLiAqL1xuZXhwb3J0IGNvbnN0IG5hdmlnYXRlSG9tZUFmdGVyQ2FydEJvb3RzdHJhcFJlY292ZXJ5ID0gKFxuICAgIHVybDogc3RyaW5nLFxuICAgIGV4cGVjdGVkUm91dGU6IEV4Y2x1ZGU8Q2FydEJvb3RzdHJhcFJlY292ZXJ5Um91dGUsIG51bGw+LFxuICAgIGNvbnN1bWVSZWNvdmVyeTogKCkgPT4gYm9vbGVhbixcbiAgICBuYXZpZ2F0ZUhvbWU6ICgpID0+IGFueVxuKTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKGNhcnRCb290c3RyYXBSZWNvdmVyeVJvdXRlKHVybCkgIT09IGV4cGVjdGVkUm91dGUpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIWNvbnN1bWVSZWNvdmVyeSgpKSByZXR1cm4gZmFsc2U7XG4gICAgbmF2aWdhdGVIb21lKCk7XG4gICAgcmV0dXJuIHRydWU7XG59O1xuXG4vKiogSW52YWxpZGEgZWwgZXN0YWRvIGxvY2FsIHkgc2FsZSDDum5pY2FtZW50ZSBkZSB1bmEgcnV0YSBkZSBjaGVja291dC4gKi9cbmV4cG9ydCBjb25zdCBoYW5kbGVJbnZhbGlkYXRlZENoZWNrb3V0TmF2aWdhdGlvbiA9IChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBpbnZhbGlkYXRlQ2hlY2tvdXQ6ICgpID0+IHZvaWQsXG4gICAgbmF2aWdhdGVIb21lOiAoKSA9PiBhbnlcbik6IGJvb2xlYW4gPT4ge1xuICAgIGlmIChjYXJ0Qm9vdHN0cmFwUmVjb3ZlcnlSb3V0ZSh1cmwpICE9PSAnY2hlY2tvdXQnKSByZXR1cm4gZmFsc2U7XG4gICAgaW52YWxpZGF0ZUNoZWNrb3V0KCk7XG4gICAgbmF2aWdhdGVIb21lKCk7XG4gICAgcmV0dXJuIHRydWU7XG59O1xuIl19