@osovitny/anatoly 3.17.160 → 3.19.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/fesm2022/osovitny-anatoly.mjs +569 -532
  2. package/fesm2022/osovitny-anatoly.mjs.map +1 -1
  3. package/lib/billing/utils.d.ts +2 -1
  4. package/lib/core/converts/convert.d.ts +1 -1
  5. package/lib/core/guid.d.ts +1 -1
  6. package/lib/core/is.d.ts +5 -5
  7. package/lib/ui/components/base/components/component.d.ts +1 -1
  8. package/lib/ui/components/base/components/edit.component.d.ts +1 -1
  9. package/lib/ui/components/base/components/enum-edit.component.d.ts +1 -1
  10. package/lib/ui/components/data-grid/control-panel.component.d.ts +6 -5
  11. package/lib/ui/components/dropdownlists/country/country.dropdownlist.d.ts +1 -3
  12. package/lib/ui/components/identity/signin-button.component.d.ts +0 -1
  13. package/lib/ui/components/identity/signout-button.component.d.ts +0 -1
  14. package/lib/ui/components/identity/signup-button.component.d.ts +0 -1
  15. package/lib/ui/directives/index.d.ts +1 -1
  16. package/lib/ui/directives/replacer/replacer.base.directive.d.ts +2 -1
  17. package/package.json +58 -60
  18. package/esm2022/lib/anatoly.module.mjs +0 -62
  19. package/esm2022/lib/billing/billing.module.mjs +0 -81
  20. package/esm2022/lib/billing/components/buttons/buyaccess-button.component.mjs +0 -104
  21. package/esm2022/lib/billing/components/buttons/subscribe-plan-button.component.mjs +0 -113
  22. package/esm2022/lib/billing/components/exports.mjs +0 -28
  23. package/esm2022/lib/billing/components/index.mjs +0 -31
  24. package/esm2022/lib/billing/components/order-summary/order-summary.component.mjs +0 -154
  25. package/esm2022/lib/billing/components/payment-methods/payment-methods.component.mjs +0 -106
  26. package/esm2022/lib/billing/components/payment-options/payment-options.component.mjs +0 -97
  27. package/esm2022/lib/billing/components/pm/braintree/braintree.component.mjs +0 -155
  28. package/esm2022/lib/billing/components/pm/paypal/paypal-button.component.mjs +0 -159
  29. package/esm2022/lib/billing/components/pm/paypal/paypal-subscribe-button.component.mjs +0 -149
  30. package/esm2022/lib/billing/components/pm/paypal/paypal.component.mjs +0 -317
  31. package/esm2022/lib/billing/components/pm/stripe/stripe.component.mjs +0 -109
  32. package/esm2022/lib/billing/exports.mjs +0 -19
  33. package/esm2022/lib/billing/models/paypal-models.mjs +0 -16
  34. package/esm2022/lib/billing/services/payments.service.mjs +0 -170
  35. package/esm2022/lib/billing/services/paypal-script.service.mjs +0 -90
  36. package/esm2022/lib/billing/utils.mjs +0 -28
  37. package/esm2022/lib/core/browser.mjs +0 -24
  38. package/esm2022/lib/core/consts/app-settings.mjs +0 -55
  39. package/esm2022/lib/core/consts/core-settings.mjs +0 -29
  40. package/esm2022/lib/core/consts/formats.mjs +0 -27
  41. package/esm2022/lib/core/consts/ga.mjs +0 -26
  42. package/esm2022/lib/core/consts/storageKeys.mjs +0 -23
  43. package/esm2022/lib/core/converts/convert.mjs +0 -103
  44. package/esm2022/lib/core/converts/dateConvert.mjs +0 -60
  45. package/esm2022/lib/core/converts/tz/tzParseTimezone.mjs +0 -122
  46. package/esm2022/lib/core/converts/tz/tzTokenizeDate.mjs +0 -101
  47. package/esm2022/lib/core/converts/xmlFormatter.mjs +0 -34
  48. package/esm2022/lib/core/core.module.mjs +0 -112
  49. package/esm2022/lib/core/dom.mjs +0 -153
  50. package/esm2022/lib/core/enums/billing.mjs +0 -56
  51. package/esm2022/lib/core/enums/enums.mjs +0 -35
  52. package/esm2022/lib/core/enums/index.mjs +0 -17
  53. package/esm2022/lib/core/exports.mjs +0 -67
  54. package/esm2022/lib/core/go/apps-go.service.mjs +0 -88
  55. package/esm2022/lib/core/go/go.service.mjs +0 -86
  56. package/esm2022/lib/core/guards/once-import.guard.mjs +0 -21
  57. package/esm2022/lib/core/guards/starter.guard.mjs +0 -46
  58. package/esm2022/lib/core/guid.mjs +0 -22
  59. package/esm2022/lib/core/interceptors/httpInterceptor.mjs +0 -161
  60. package/esm2022/lib/core/is.mjs +0 -98
  61. package/esm2022/lib/core/localization/localization.module.mjs +0 -45
  62. package/esm2022/lib/core/localization/localization.service.mjs +0 -164
  63. package/esm2022/lib/core/localization/localize.pipe.mjs +0 -83
  64. package/esm2022/lib/core/localization/settings.module.mjs +0 -103
  65. package/esm2022/lib/core/localization/utils.mjs +0 -41
  66. package/esm2022/lib/core/logging/globalErrorHandler.mjs +0 -41
  67. package/esm2022/lib/core/logging/logging.service.mjs +0 -40
  68. package/esm2022/lib/core/models/qs.mjs +0 -17
  69. package/esm2022/lib/core/notifications/alerts.mjs +0 -116
  70. package/esm2022/lib/core/notifications/interfaces/notification.mjs +0 -17
  71. package/esm2022/lib/core/notifications/services/notification-service.mjs +0 -83
  72. package/esm2022/lib/core/performance/stopwatch.mjs +0 -50
  73. package/esm2022/lib/core/services/appcontext.service.mjs +0 -186
  74. package/esm2022/lib/core/services/dm.service.mjs +0 -69
  75. package/esm2022/lib/core/services/google-analytics.service.mjs +0 -75
  76. package/esm2022/lib/core/services/idle.service.mjs +0 -77
  77. package/esm2022/lib/core/services/loading.service.mjs +0 -67
  78. package/esm2022/lib/core/services/script.service.mjs +0 -77
  79. package/esm2022/lib/core/services/starter.service.mjs +0 -85
  80. package/esm2022/lib/core/services/web-storage.service.mjs +0 -66
  81. package/esm2022/lib/core/subs.mjs +0 -31
  82. package/esm2022/lib/core/utils/qsutils.mjs +0 -84
  83. package/esm2022/lib/core/utils/utils.mjs +0 -112
  84. package/esm2022/lib/data/base/api.service.mjs +0 -94
  85. package/esm2022/lib/data/base/grid/grid-edit.service.mjs +0 -80
  86. package/esm2022/lib/data/base/grid/grid-read.service.mjs +0 -60
  87. package/esm2022/lib/data/data.module.mjs +0 -66
  88. package/esm2022/lib/data/exports.mjs +0 -29
  89. package/esm2022/lib/data/services/billing/currencies-api.service.mjs +0 -41
  90. package/esm2022/lib/data/services/billing/currencies-storage.service.mjs +0 -92
  91. package/esm2022/lib/data/services/billing/discountcodes-api.service.mjs +0 -37
  92. package/esm2022/lib/data/services/billing/payments-api.service.mjs +0 -64
  93. package/esm2022/lib/data/services/billing/subscriptions-api.service.mjs +0 -61
  94. package/esm2022/lib/data/services/billing/transactions-api.service.mjs +0 -43
  95. package/esm2022/lib/data/services/core-api.service.mjs +0 -44
  96. package/esm2022/lib/data/services/emails-api.service.mjs +0 -47
  97. package/esm2022/lib/external/fa.module.mjs +0 -45
  98. package/esm2022/lib/external/kendo.module.mjs +0 -179
  99. package/esm2022/lib/iam/b2c/b2c.mjs +0 -40
  100. package/esm2022/lib/iam/b2c/consts.mjs +0 -25
  101. package/esm2022/lib/iam/b2c/index.mjs +0 -21
  102. package/esm2022/lib/iam/configs.mjs +0 -109
  103. package/esm2022/lib/iam/consts.mjs +0 -22
  104. package/esm2022/lib/iam/exports.mjs +0 -22
  105. package/esm2022/lib/iam/guards/admin.guard.mjs +0 -46
  106. package/esm2022/lib/iam/guards/authentication.guard.mjs +0 -30
  107. package/esm2022/lib/iam/guards/index.mjs +0 -20
  108. package/esm2022/lib/iam/iam-pages.module.mjs +0 -57
  109. package/esm2022/lib/iam/iam-pages.routes.mjs +0 -45
  110. package/esm2022/lib/iam/iam.module.mjs +0 -84
  111. package/esm2022/lib/iam/pages/signin.page.mjs +0 -40
  112. package/esm2022/lib/iam/pages/signout.page.mjs +0 -40
  113. package/esm2022/lib/iam/pages/signup.page.mjs +0 -40
  114. package/esm2022/lib/iam/redirect.mjs +0 -29
  115. package/esm2022/lib/iam/services/auth.service.mjs +0 -436
  116. package/esm2022/lib/iam/storage.mjs +0 -42
  117. package/esm2022/lib/iam/utils.mjs +0 -49
  118. package/esm2022/lib/ui/components/base/components/component.mjs +0 -76
  119. package/esm2022/lib/ui/components/base/components/edit.component.mjs +0 -146
  120. package/esm2022/lib/ui/components/base/components/enum-edit.component.mjs +0 -92
  121. package/esm2022/lib/ui/components/base/dialog.mjs +0 -71
  122. package/esm2022/lib/ui/components/base/list.mjs +0 -100
  123. package/esm2022/lib/ui/components/base/pages/edit.page.mjs +0 -32
  124. package/esm2022/lib/ui/components/base/pages/page.mjs +0 -32
  125. package/esm2022/lib/ui/components/base/pages/paged.page.mjs +0 -68
  126. package/esm2022/lib/ui/components/card/card-body.component.mjs +0 -37
  127. package/esm2022/lib/ui/components/card/card-footer.component.mjs +0 -37
  128. package/esm2022/lib/ui/components/card/card-header.component.mjs +0 -51
  129. package/esm2022/lib/ui/components/card/card.component.mjs +0 -41
  130. package/esm2022/lib/ui/components/check-icon/check-icon.component.mjs +0 -43
  131. package/esm2022/lib/ui/components/copy-2-clipboard/copy-2-clipboard.component.mjs +0 -57
  132. package/esm2022/lib/ui/components/data-grid/control-panel.component.mjs +0 -201
  133. package/esm2022/lib/ui/components/datapager/datapager.component.mjs +0 -95
  134. package/esm2022/lib/ui/components/dropdownlists/country/country.dropdownlist.mjs +0 -96
  135. package/esm2022/lib/ui/components/dropdownlists/moderationstatus/moderationstatus.dropdownlist.mjs +0 -88
  136. package/esm2022/lib/ui/components/dropdownlists/publishstatus/publishstatus.dropdownlist.mjs +0 -88
  137. package/esm2022/lib/ui/components/dropdownlists/timezone/timezone.dropdownlist.mjs +0 -112
  138. package/esm2022/lib/ui/components/exports.mjs +0 -53
  139. package/esm2022/lib/ui/components/feature-will-be-ready/feature-will-be-ready.component.mjs +0 -55
  140. package/esm2022/lib/ui/components/html-editor/base-editor.component.mjs +0 -94
  141. package/esm2022/lib/ui/components/html-editor/defaultoptions.mjs +0 -87
  142. package/esm2022/lib/ui/components/html-editor/html-editor.component.mjs +0 -114
  143. package/esm2022/lib/ui/components/identity/signin-button.component.mjs +0 -105
  144. package/esm2022/lib/ui/components/identity/signout-button.component.mjs +0 -105
  145. package/esm2022/lib/ui/components/identity/signup-button.component.mjs +0 -105
  146. package/esm2022/lib/ui/components/index.mjs +0 -57
  147. package/esm2022/lib/ui/components/no-mobile-support/no-mobile-support.component.mjs +0 -45
  148. package/esm2022/lib/ui/components/nodata/nodata.component.mjs +0 -76
  149. package/esm2022/lib/ui/components/spinners/loading/loading.component.mjs +0 -53
  150. package/esm2022/lib/ui/components/spinners/pagespinner/pagespinner.component.mjs +0 -85
  151. package/esm2022/lib/ui/components/spinners/pagespinner/spinkits.mjs +0 -12
  152. package/esm2022/lib/ui/components/urlslug/urlslug.component.mjs +0 -130
  153. package/esm2022/lib/ui/components/you-agree-to-our-terms/you-agree-to-our-terms.component.mjs +0 -63
  154. package/esm2022/lib/ui/dialogs/contact-us/contact-us.dialog.mjs +0 -78
  155. package/esm2022/lib/ui/dialogs/exports.mjs +0 -16
  156. package/esm2022/lib/ui/dialogs/index.mjs +0 -19
  157. package/esm2022/lib/ui/directives/exports.mjs +0 -19
  158. package/esm2022/lib/ui/directives/hover.directive.mjs +0 -50
  159. package/esm2022/lib/ui/directives/index.mjs +0 -22
  160. package/esm2022/lib/ui/directives/native-element.directive.mjs +0 -37
  161. package/esm2022/lib/ui/directives/replacer/a-replacer.directive.mjs +0 -48
  162. package/esm2022/lib/ui/directives/replacer/image-replacer.directive.mjs +0 -44
  163. package/esm2022/lib/ui/directives/replacer/replacer.base.directive.mjs +0 -44
  164. package/esm2022/lib/ui/exports.mjs +0 -22
  165. package/esm2022/lib/ui/forms/components/address/address.component.mjs +0 -240
  166. package/esm2022/lib/ui/forms/components/company/company.component.mjs +0 -138
  167. package/esm2022/lib/ui/forms/contact-us/contact-us.mjs +0 -213
  168. package/esm2022/lib/ui/forms/exports.mjs +0 -20
  169. package/esm2022/lib/ui/forms/index.mjs +0 -21
  170. package/esm2022/lib/ui/pipes/exports.mjs +0 -19
  171. package/esm2022/lib/ui/pipes/filesize.pipe.mjs +0 -42
  172. package/esm2022/lib/ui/pipes/index.mjs +0 -22
  173. package/esm2022/lib/ui/pipes/replace-text.pipe.mjs +0 -37
  174. package/esm2022/lib/ui/pipes/safeHtml.pipe.mjs +0 -34
  175. package/esm2022/lib/ui/ui.module.mjs +0 -122
  176. package/esm2022/lib/ui/validation/exports.mjs +0 -19
  177. package/esm2022/lib/ui/validation/form-validation-summary.component.mjs +0 -90
  178. package/esm2022/lib/ui/validation/index.mjs +0 -21
  179. package/esm2022/lib/ui/validation/item-validation-summary.component.mjs +0 -53
  180. package/esm2022/lib/ui/validation/validation-summary.component.mjs +0 -124
  181. package/esm2022/osovitny-anatoly.mjs +0 -5
  182. package/esm2022/public-api.mjs +0 -22
@@ -1,170 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny vadim.osovitny@osovitny.com
8
- Dhruv Agarwal dhruv.agarwal@osovitny.com
9
-
10
- Created:
11
- 11 Aug 2024
12
-
13
- Details:
14
- https://blog.thoughtram.io/angular/2017/02/21/using-zones-in-angular-for-better-performance.html
15
-
16
- Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
17
- </file>
18
- */
19
- //Node
20
- import { Injectable } from '@angular/core';
21
- import { Subject } from 'rxjs';
22
- //App
23
- import { GABillingEvents } from '../../core/consts/ga';
24
- import { PaymentMethod, PaymentStage } from '../../core/enums/billing';
25
- import * as i0 from "@angular/core";
26
- import * as i1 from "../../data/services/billing/payments-api.service";
27
- import * as i2 from "../../core/notifications/services/notification-service";
28
- import * as i3 from "../../core/services/google-analytics.service";
29
- export class PaymentsService {
30
- constructor(zone, api, ns, ga) {
31
- this.zone = zone;
32
- this.api = api;
33
- this.ns = ns;
34
- this.ga = ga;
35
- this.paymentInProgress = false;
36
- this.isPaymentFailed = false;
37
- this.subtotal = 0;
38
- this.discountCode = null;
39
- this.discountPercentage = null;
40
- this.discountAmount = null;
41
- this.total = 0;
42
- this.currency = 'USD';
43
- //Private Streams
44
- this._discountCodeApplied = new Subject();
45
- this._paymentAdded = new Subject();
46
- this._showStripeDialog = new Subject();
47
- this._showBraintreeDialog = new Subject();
48
- //Public Streams
49
- this.discountCodeApplied$ = this._discountCodeApplied.asObservable();
50
- this.paymentAdded$ = this._paymentAdded.asObservable();
51
- this.showStripeDialog$ = this._showStripeDialog.asObservable();
52
- this.showBraintreeDialog$ = this._showBraintreeDialog.asObservable();
53
- }
54
- setDefaults() {
55
- }
56
- setValues() {
57
- }
58
- //fires
59
- fireDiscountCodeApplied() {
60
- this._discountCodeApplied.next(this.discountCode);
61
- }
62
- firePaymentAdded(paymentId) {
63
- this._paymentAdded.next(paymentId);
64
- }
65
- //Public
66
- init() {
67
- this.setDefaults();
68
- this.setValues();
69
- }
70
- resetState() {
71
- this.subtotal = 0;
72
- this.total = 0;
73
- }
74
- getTotal() {
75
- let subtotal = this.subtotal;
76
- if (this.discountAmount != 0) {
77
- subtotal = subtotal - this.discountAmount;
78
- }
79
- else if (this.discountPercentage != 0) {
80
- subtotal = subtotal - (subtotal * (this.discountPercentage / 100));
81
- subtotal = +subtotal.toFixed(2);
82
- }
83
- return subtotal > 0 ? subtotal : 0;
84
- }
85
- //DiscountCode
86
- applyDiscountCode(discountCode, data) {
87
- if (!data) {
88
- return;
89
- }
90
- this.discountCode = discountCode;
91
- if (data.amount) {
92
- this.discountPercentage = 0;
93
- this.discountAmount = parseInt(data.amount);
94
- }
95
- else if (data.percentage) {
96
- this.discountPercentage = parseInt(data.percentage);
97
- this.discountAmount = 0;
98
- }
99
- this.fireDiscountCodeApplied();
100
- }
101
- getDiscountCodeAsString() {
102
- if (this.discountAmount > 0) {
103
- return "$" + this.discountAmount;
104
- }
105
- else if (this.discountPercentage > 0) {
106
- return this.discountPercentage + "%";
107
- }
108
- return '$0';
109
- }
110
- openStripePaymentDialog() {
111
- this._showStripeDialog.next(true);
112
- }
113
- openBraintreePaymentDialog() {
114
- this._showBraintreeDialog.next(true);
115
- }
116
- closeBraintreePaymentDialog() {
117
- this._showBraintreeDialog.next(false);
118
- }
119
- createStripeSession(title, description, image) {
120
- const amount = this.getTotal();
121
- const currency = this.currency;
122
- return this.api.createStripeSession(amount, currency, title, description, image);
123
- }
124
- createBraintreeToken() {
125
- return this.api.createBraintreeToken();
126
- }
127
- pay(paidFor, pmId, pmStatus, pmDetails) {
128
- //GA
129
- this.ga.event(GABillingEvents.payment);
130
- let paymentMethod = this.selectedPaymentMethod;
131
- let paidForAsString = JSON.stringify(paidFor);
132
- let payType = this.selectedPaymentType;
133
- //Amount
134
- let subtotal = this.subtotal;
135
- let promoCode = this.discountCode;
136
- let total = this.getTotal();
137
- let currency = this.currency;
138
- if (total == 0) {
139
- paymentMethod = PaymentMethod.None;
140
- }
141
- this.zone.run(() => {
142
- this.api.pay(paymentMethod, paidForAsString,
143
- //Amount
144
- subtotal, promoCode, total, currency,
145
- //Payment method details (PayPal/Stripe/Braintree)
146
- pmId, pmStatus, pmDetails, (data) => {
147
- if (!data || !data?.isPaymentValid) {
148
- this.paymentFailed(PaymentStage.External);
149
- return;
150
- }
151
- this.paymentInProgress = false;
152
- this.firePaymentAdded(data.paymentId);
153
- }, () => {
154
- this.paymentFailed(PaymentStage.External);
155
- });
156
- });
157
- }
158
- paymentFailed(stage) {
159
- this.paymentStage = stage;
160
- this.paymentInProgress = false;
161
- this.isPaymentFailed = true;
162
- this.ns.error("Payment Failed");
163
- }
164
- static { this.ɵfac = function PaymentsService_Factory(t) { return new (t || PaymentsService)(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.PaymentsApiService), i0.ɵɵinject(i2.NotificationService), i0.ɵɵinject(i3.GoogleAnalyticsService)); }; }
165
- static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PaymentsService, factory: PaymentsService.ɵfac }); }
166
- }
167
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaymentsService, [{
168
- type: Injectable
169
- }], () => [{ type: i0.NgZone }, { type: i1.PaymentsApiService }, { type: i2.NotificationService }, { type: i3.GoogleAnalyticsService }], null); })();
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuYXRvbHkvc3JjL2xpYi9iaWxsaW5nL3NlcnZpY2VzL3BheW1lbnRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUJFO0FBRUYsTUFBTTtBQUNOLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixLQUFLO0FBQ0wsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7O0FBTXZFLE1BQU0sT0FBTyxlQUFlO0lBMkIxQixZQUNVLElBQVksRUFDWixHQUF1QixFQUN2QixFQUF1QixFQUN2QixFQUEwQjtRQUgxQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osUUFBRyxHQUFILEdBQUcsQ0FBb0I7UUFDdkIsT0FBRSxHQUFGLEVBQUUsQ0FBcUI7UUFDdkIsT0FBRSxHQUFGLEVBQUUsQ0FBd0I7UUE1QnBDLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUl4QixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDcEIsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQzFCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLFVBQUssR0FBRyxDQUFDLENBQUM7UUFDVixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGlCQUFpQjtRQUNULHlCQUFvQixHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFDMUMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFDO1FBQ25DLHNCQUFpQixHQUFH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QUFDO1FBRTVCLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDbEMsQ0FBQztnRkFqTFUsZUFBZTt1RUFBZixlQUFlLFdBQWYsZUFBZTs7aUZBQWYsZUFBZTtjQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbS5vc292aXRueUBvc292aXRueS5jb21cclxuICAgIERocnV2IEFnYXJ3YWwgZGhydXYuYWdhcndhbEBvc292aXRueS5jb21cclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDExIEF1ZyAyMDI0XHJcblxyXG4gIERldGFpbHM6XHJcbiAgICBodHRwczovL2Jsb2cudGhvdWdodHJhbS5pby9hbmd1bGFyLzIwMTcvMDIvMjEvdXNpbmctem9uZXMtaW4tYW5ndWxhci1mb3ItYmV0dGVyLXBlcmZvcm1hbmNlLmh0bWxcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjUgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG4vL05vZGVcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbi8vQXBwXHJcbmltcG9ydCB7IEdBQmlsbGluZ0V2ZW50cyB9IGZyb20gJy4uLy4uL2NvcmUvY29uc3RzL2dhJztcclxuaW1wb3J0IHsgUGF5bWVudE1ldGhvZCwgUGF5bWVudFN0YWdlIH0gZnJvbSAnLi4vLi4vY29yZS9lbnVtcy9iaWxsaW5nJztcclxuaW1wb3J0IHsgUGF5bWVudHNBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZGF0YS9zZXJ2aWNlcy9iaWxsaW5nL3BheW1lbnRzLWFwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvbm90aWZpY2F0aW9ucy9zZXJ2aWNlcy9ub3RpZmljYXRpb24tc2VydmljZSc7XHJcbmltcG9ydCB7IEdvb2dsZUFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2dvb2dsZS1hbmFseXRpY3Muc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBQYXltZW50c1NlcnZpY2Uge1xyXG4gIC8vUGF5bWVudFxyXG4gIHBheW1lbnRTdGFnZTtcclxuICBwYXltZW50SW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gIGlzUGF5bWVudEZhaWxlZCA9IGZhbHNlO1xyXG5cclxuICBzZWxlY3RlZFBheW1lbnRUeXBlO1xyXG4gIHNlbGVjdGVkUGF5bWVudE1ldGhvZDtcclxuICBzdWJ0b3RhbCA9IDA7XHJcbiAgZGlzY291bnRDb2RlID0gbnVsbDtcclxuICBkaXNjb3VudFBlcmNlbnRhZ2UgPSBudWxsO1xyXG4gIGRpc2NvdW50QW1vdW50ID0gbnVsbDtcclxuICB0b3RhbCA9IDA7XHJcbiAgY3VycmVuY3kgPSAnVVNEJztcclxuXHJcbiAgLy9Qcml2YXRlIFN0cmVhbXNcclxuICBwcml2YXRlIF9kaXNjb3VudENvZGVBcHBsaWVkID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG4gIHByaXZhdGUgX3BheW1lbnRBZGRlZCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuICBwcml2YXRlIF9zaG93U3RyaXBlRGlhbG9nID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG4gIHByaXZhdGUgX3Nob3dCcmFpbnRyZWVEaWFsb2cgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcblxyXG4gIC8vUHVibGljIFN0cmVhbXNcclxuICByZWFkb25seSBkaXNjb3VudENvZGVBcHBsaWVkJCA9IHRoaXMuX2Rpc2NvdW50Q29kZUFwcGxpZWQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgcmVhZG9ubHkgcGF5bWVudEFkZGVkJCA9IHRoaXMuX3BheW1lbnRBZGRlZC5hc09ic2VydmFibGUoKTtcclxuICByZWFkb25seSBzaG93U3RyaXBlRGlhbG9nJCA9IHRoaXMuX3Nob3dTdHJpcGVEaWFsb2cuYXNPYnNlcnZhYmxlKCk7XHJcbiAgcmVhZG9ubHkgc2hvd0JyYWludHJlZURpYWxvZyQgPSB0aGlzLl9zaG93QnJhaW50cmVlRGlhbG9nLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSBhcGk6IFBheW1lbnRzQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgbnM6IE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdhOiBHb29nbGVBbmFseXRpY3NTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldERlZmF1bHRzKCkge1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRWYWx1ZXMoKSB7XHJcbiAgfVxyXG5cclxuICAvL2ZpcmVzXHJcbiAgcHJpdmF0ZSBmaXJlRGlzY291bnRDb2RlQXBwbGllZCgpIHtcclxuICAgIHRoaXMuX2Rpc2NvdW50Q29kZUFwcGxpZWQubmV4dCh0aGlzLmRpc2NvdW50Q29kZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpcmVQYXltZW50QWRkZWQocGF5bWVudElkKSB7XHJcbiAgICB0aGlzLl9wYXltZW50QWRkZWQubmV4dChwYXltZW50SWQpO1xyXG4gIH1cclxuXHJcbiAgLy9QdWJsaWNcclxuICBpbml0KCkge1xyXG4gICAgdGhpcy5zZXREZWZhdWx0cygpO1xyXG4gICAgdGhpcy5zZXRWYWx1ZXMoKTtcclxuICB9XHJcblxyXG4gIHJlc2V0U3RhdGUoKSB7XHJcbiAgICB0aGlzLnN1YnRvdGFsID0gMDtcclxuICAgIHRoaXMudG90YWwgPSAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0VG90YWwoKSB7XHJcbiAgICBsZXQgc3VidG90YWwgPSB0aGlzLnN1YnRvdGFsO1xyXG5cclxuICAgIGlmICh0aGlzLmRpc2NvdW50QW1vdW50ICE9IDApIHtcclxuICAgICAgc3VidG90YWwgPSBzdWJ0b3RhbCAtIHRoaXMuZGlzY291bnRBbW91bnQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLmRpc2NvdW50UGVyY2VudGFnZSAhPSAwKSB7XHJcbiAgICAgIHN1YnRvdGFsID0gc3VidG90YWwgLSAoc3VidG90YWwgKiAodGhpcy5kaXNjb3VudFBlcmNlbnRhZ2UgLyAxMDApKTtcclxuICAgICAgc3VidG90YWwgPSArc3VidG90YWwudG9GaXhlZCgyKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3VidG90YWwgPiAwID8gc3VidG90YWwgOiAwO1xyXG4gIH1cclxuXHJcbiAgLy9EaXNjb3VudENvZGVcclxuICBhcHBseURpc2NvdW50Q29kZShkaXNjb3VudENvZGUsIGRhdGEpIHtcclxuICAgIGlmICghZGF0YSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kaXNjb3VudENvZGUgPSBkaXNjb3VudENvZGU7XHJcblxyXG4gICAgaWYgKGRhdGEuYW1vdW50KSB7XHJcbiAgICAgIHRoaXMuZGlzY291bnRQZXJjZW50YWdlID0gMDtcclxuICAgICAgdGhpcy5kaXNjb3VudEFtb3VudCA9IHBhcnNlSW50KGRhdGEuYW1vdW50KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGRhdGEucGVyY2VudGFnZSkge1xyXG4gICAgICB0aGlzLmRpc2NvdW50UGVyY2VudGFnZSA9IHBhcnNlSW50KGRhdGEucGVyY2VudGFnZSk7XHJcbiAgICAgIHRoaXMuZGlzY291bnRBbW91bnQgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZmlyZURpc2NvdW50Q29kZUFwcGxpZWQoKTtcclxuICB9XHJcblxyXG4gIGdldERpc2NvdW50Q29kZUFzU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5kaXNjb3VudEFtb3VudCA+IDApIHtcclxuICAgICAgcmV0dXJuIFwiJFwiICsgdGhpcy5kaXNjb3VudEFtb3VudDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuZGlzY291bnRQZXJjZW50YWdlID4gMCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5kaXNjb3VudFBlcmNlbnRhZ2UgKyBcIiVcIjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gJyQwJztcclxuICB9XHJcblxyXG4gIG9wZW5TdHJpcGVQYXltZW50RGlhbG9nKCkge1xyXG4gICAgdGhpcy5fc2hvd1N0cmlwZURpYWxvZy5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgb3BlbkJyYWludHJlZVBheW1lbnREaWFsb2coKSB7XHJcbiAgICB0aGlzLl9zaG93QnJhaW50cmVlRGlhbG9nLm5leHQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZUJyYWludHJlZVBheW1lbnREaWFsb2coKSB7XHJcbiAgICB0aGlzLl9zaG93QnJhaW50cmVlRGlhbG9nLm5leHQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlU3RyaXBlU2Vzc2lvbih0aXRsZSwgZGVzY3JpcHRpb24sIGltYWdlKSB7XHJcbiAgICBjb25zdCBhbW91bnQgPSB0aGlzLmdldFRvdGFsKCk7XHJcbiAgICBjb25zdCBjdXJyZW5jeSA9IHRoaXMuY3VycmVuY3k7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYXBpLmNyZWF0ZVN0cmlwZVNlc3Npb24oYW1vdW50LCBjdXJyZW5jeSwgdGl0bGUsIGRlc2NyaXB0aW9uLCBpbWFnZSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVCcmFpbnRyZWVUb2tlbigpIHtcclxuICAgIHJldHVybiB0aGlzLmFwaS5jcmVhdGVCcmFpbnRyZWVUb2tlbigpO1xyXG4gIH1cclxuXHJcbiAgcGF5KHBhaWRGb3IsIHBtSWQsIHBtU3RhdHVzLCBwbURldGFpbHMpIHtcclxuICAgIC8vR0FcclxuICAgIHRoaXMuZ2EuZXZlbnQoR0FCaWxsaW5nRXZlbnRzLnBheW1lbnQpO1xyXG5cclxuICAgIGxldCBwYXltZW50TWV0aG9kID0gdGhpcy5zZWxlY3RlZFBheW1lbnRNZXRob2Q7XHJcbiAgICBsZXQgcGFpZEZvckFzU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkocGFpZEZvcik7XHJcbiAgICBsZXQgcGF5VHlwZSA9IHRoaXMuc2VsZWN0ZWRQYXltZW50VHlwZTsgICAgXHJcblxyXG4gICAgLy9BbW91bnRcclxuICAgIGxldCBzdWJ0b3RhbCA9IHRoaXMuc3VidG90YWw7XHJcbiAgICBsZXQgcHJvbW9Db2RlID0gdGhpcy5kaXNjb3VudENvZGU7XHJcbiAgICBsZXQgdG90YWwgPSB0aGlzLmdldFRvdGFsKCk7XHJcbiAgICBsZXQgY3VycmVuY3kgPSB0aGlzLmN1cnJlbmN5O1xyXG5cclxuICAgIGlmICh0b3RhbCA9PSAwKSB7XHJcbiAgICAgIHBheW1lbnRNZXRob2QgPSBQYXltZW50TWV0aG9kLk5vbmU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgIHRoaXMuYXBpLnBheShcclxuICAgICAgICBwYXltZW50TWV0aG9kLCBwYWlkRm9yQXNTdHJpbmcsIFxyXG5cclxuICAgICAgICAvL0Ftb3VudFxyXG4gICAgICAgIHN1YnRvdGFsLCBwcm9tb0NvZGUsIHRvdGFsLCBjdXJyZW5jeSxcclxuXHJcbiAgICAgICAgLy9QYXltZW50IG1ldGhvZCBkZXRhaWxzIChQYXlQYWwvU3RyaXBlL0JyYWludHJlZSlcclxuICAgICAgICBwbUlkLCBwbVN0YXR1cywgcG1EZXRhaWxzLFxyXG5cclxuICAgICAgICAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFkYXRhIHx8ICFkYXRhPy5pc1BheW1lbnRWYWxpZCkge1xyXG4gICAgICAgICAgICB0aGlzLnBheW1lbnRGYWlsZWQoUGF5bWVudFN0YWdlLkV4dGVybmFsKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMucGF5bWVudEluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZmlyZVBheW1lbnRBZGRlZChkYXRhLnBheW1lbnRJZCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBheW1lbnRGYWlsZWQoUGF5bWVudFN0YWdlLkV4dGVybmFsKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcGF5bWVudEZhaWxlZChzdGFnZTogUGF5bWVudFN0YWdlKSB7XHJcbiAgICB0aGlzLnBheW1lbnRTdGFnZSA9IHN0YWdlO1xyXG4gICAgdGhpcy5wYXltZW50SW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc1BheW1lbnRGYWlsZWQgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMubnMuZXJyb3IoXCJQYXltZW50IEZhaWxlZFwiKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,90 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny vadim.osovitny@osovitny.com
8
-
9
- Created:
10
- 14 Jun 2024
11
-
12
- Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
13
- </file>
14
- */
15
- //Node
16
- import { Injectable } from '@angular/core';
17
- import * as i0 from "@angular/core";
18
- import * as i1 from "../../core/services/script.service";
19
- export class PayPalScriptService {
20
- constructor(ss) {
21
- this.ss = ss;
22
- this.paypalWindowName = 'paypal';
23
- }
24
- registerPayPalScript(config, onReady) {
25
- this.ss.registerScript(this.getUrlForConfig(config), this.paypalWindowName, onReady);
26
- }
27
- destroyPayPalScript() {
28
- this.ss.cleanup(this.paypalWindowName);
29
- }
30
- getUrlForConfig(config) {
31
- const params = [
32
- {
33
- name: 'client-id',
34
- value: config.clientId
35
- }
36
- ];
37
- if (config.locale) {
38
- params.push({
39
- name: 'locale',
40
- value: config.locale
41
- });
42
- }
43
- if (config.currency) {
44
- params.push({
45
- name: 'currency',
46
- value: config.currency
47
- });
48
- }
49
- if (config.commit) {
50
- params.push({
51
- name: 'commit',
52
- value: config.commit
53
- });
54
- }
55
- if (config.vault) {
56
- params.push({
57
- name: 'vault',
58
- value: config.vault
59
- });
60
- }
61
- if (config.intent) {
62
- params.push({
63
- name: 'intent',
64
- value: config.intent
65
- });
66
- }
67
- if (config.funding) {
68
- params.push({
69
- name: 'components',
70
- value: 'buttons,funding-eligibility'
71
- });
72
- }
73
- if (config.extraParams) {
74
- params.push(...config.extraParams);
75
- }
76
- if (config.debug) {
77
- params.push({
78
- name: 'debug',
79
- value: config.debug ? 'true' : 'false'
80
- });
81
- }
82
- return `https://www.paypal.com/sdk/js${this.ss.getQueryString(params)}`;
83
- }
84
- static { this.ɵfac = function PayPalScriptService_Factory(t) { return new (t || PayPalScriptService)(i0.ɵɵinject(i1.ScriptService)); }; }
85
- static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PayPalScriptService, factory: PayPalScriptService.ɵfac }); }
86
- }
87
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PayPalScriptService, [{
88
- type: Injectable
89
- }], () => [{ type: i1.ScriptService }], null); })();
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5cGFsLXNjcmlwdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL2JpbGxpbmcvc2VydmljZXMvcGF5cGFsLXNjcmlwdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0VBYUU7QUFFRixNQUFNO0FBQ04sT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBUTNDLE1BQU0sT0FBTyxtQkFBbUI7SUFHOUIsWUFBc0IsRUFBaUI7UUFBakIsT0FBRSxHQUFGLEVBQUUsQ0FBZTtRQUZ0QixxQkFBZ0IsR0FBRyxRQUFRLENBQUM7SUFHN0MsQ0FBQztJQUVELG9CQUFvQixDQUFDLE1BQXdCLEVBQUUsT0FBaUM7UUFDOUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU8sZUFBZSxDQUFDLE1BQXdCO1FBQzlDLE1BQU0sTUFBTSxHQUFrQjtZQUMxQjtnQkFDSSxJQUFJLEVBQUUsV0FBVztnQkFDakIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxRQUFRO2FBQ3pCO1NBQ0osQ0FBQztRQUVGLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ1IsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNO2FBQ3ZCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNSLElBQUksRUFBRSxVQUFVO2dCQUNoQixLQUFLLEVBQUUsTUFBTSxDQUFDLFFBQVE7YUFDekIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUVELElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ1IsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNO2FBQ3ZCLENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ1IsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2FBQ3RCLENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNSLElBQUksRUFBRSxRQUFRO2dCQUNkLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTTthQUN2QixDQUFDLENBQUM7UUFDUCxDQUFDO1FBRUQsSUFBRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDVixJQUFJLEVBQUMsWUFBWTtnQkFDakIsS0FBSyxFQUFFLDZCQUE2QjthQUNyQyxDQUFDLENBQUE7UUFDSixDQUFDO1FBRUQsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBRUQsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakIsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDUixJQUFJLEVBQUUsT0FBTztnQkFDYixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPO2FBQ3pDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLGdDQUFnQyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0lBQzFFLENBQUM7b0ZBNUVVLG1CQUFtQjt1RUFBbkIsbUJBQW1CLFdBQW5CLG1CQUFtQjs7aUZBQW5CLG1CQUFtQjtjQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbS5vc292aXRueUBvc292aXRueS5jb21cclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDE0IEp1biAyMDI0XHJcblxyXG4gIENvcHlyaWdodCAoYykgMjAxNi0yMDI1IE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuLy9Ob2RlXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8vQXBwXHJcbmltcG9ydCB7IElQYXlQYWxVcmxDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvcGF5cGFsLW1vZGVscyc7XHJcbmltcG9ydCB7IFNjcmlwdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL3NjcmlwdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSVF1ZXJ5UGFyYW0gfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9xcyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBQYXlQYWxTY3JpcHRTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IHBheXBhbFdpbmRvd05hbWUgPSAncGF5cGFsJztcclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHNzOiBTY3JpcHRTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICByZWdpc3RlclBheVBhbFNjcmlwdChjb25maWc6IElQYXlQYWxVcmxDb25maWcsIG9uUmVhZHk6IChwYXlQYWxBcGk6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5zcy5yZWdpc3RlclNjcmlwdCh0aGlzLmdldFVybEZvckNvbmZpZyhjb25maWcpLCB0aGlzLnBheXBhbFdpbmRvd05hbWUsIG9uUmVhZHkpO1xyXG4gIH1cclxuXHJcbiAgZGVzdHJveVBheVBhbFNjcmlwdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3MuY2xlYW51cCh0aGlzLnBheXBhbFdpbmRvd05hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRVcmxGb3JDb25maWcoY29uZmlnOiBJUGF5UGFsVXJsQ29uZmlnKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHBhcmFtczogSVF1ZXJ5UGFyYW1bXSA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdjbGllbnQtaWQnLFxyXG4gICAgICAgICAgICB2YWx1ZTogY29uZmlnLmNsaWVudElkXHJcbiAgICAgICAgfVxyXG4gICAgXTtcclxuXHJcbiAgICBpZiAoY29uZmlnLmxvY2FsZSkge1xyXG4gICAgICBwYXJhbXMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiAnbG9jYWxlJyxcclxuICAgICAgICAgIHZhbHVlOiBjb25maWcubG9jYWxlXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb25maWcuY3VycmVuY3kpIHtcclxuICAgICAgICBwYXJhbXMucHVzaCh7XHJcbiAgICAgICAgICAgIG5hbWU6ICdjdXJyZW5jeScsXHJcbiAgICAgICAgICAgIHZhbHVlOiBjb25maWcuY3VycmVuY3lcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29uZmlnLmNvbW1pdCkge1xyXG4gICAgICAgIHBhcmFtcy5wdXNoKHtcclxuICAgICAgICAgICAgbmFtZTogJ2NvbW1pdCcsXHJcbiAgICAgICAgICAgIHZhbHVlOiBjb25maWcuY29tbWl0XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbmZpZy52YXVsdCkge1xyXG4gICAgICAgIHBhcmFtcy5wdXNoKHtcclxuICAgICAgICAgICAgbmFtZTogJ3ZhdWx0JyxcclxuICAgICAgICAgICAgdmFsdWU6IGNvbmZpZy52YXVsdFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb25maWcuaW50ZW50KSB7XHJcbiAgICAgICAgcGFyYW1zLnB1c2goe1xyXG4gICAgICAgICAgICBuYW1lOiAnaW50ZW50JyxcclxuICAgICAgICAgICAgdmFsdWU6IGNvbmZpZy5pbnRlbnRcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZihjb25maWcuZnVuZGluZykge1xyXG4gICAgICBwYXJhbXMucHVzaCh7XHJcbiAgICAgICAgbmFtZTonY29tcG9uZW50cycsXHJcbiAgICAgICAgdmFsdWU6ICdidXR0b25zLGZ1bmRpbmctZWxpZ2liaWxpdHknXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbmZpZy5leHRyYVBhcmFtcykge1xyXG4gICAgICAgIHBhcmFtcy5wdXNoKC4uLmNvbmZpZy5leHRyYVBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbmZpZy5kZWJ1Zykge1xyXG4gICAgICBwYXJhbXMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiAnZGVidWcnLFxyXG4gICAgICAgICAgdmFsdWU6IGNvbmZpZy5kZWJ1ZyA/ICd0cnVlJyA6ICdmYWxzZSdcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGBodHRwczovL3d3dy5wYXlwYWwuY29tL3Nkay9qcyR7dGhpcy5zcy5nZXRRdWVyeVN0cmluZyhwYXJhbXMpfWA7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,28 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- Atlas Cross
5
-
6
- Authors:
7
- Leon Malyan leon.malyan@osovitny.com
8
-
9
- Created:
10
- 25 May 2024
11
-
12
- Copyright (c) 2023-2024 Atlas Cross Inc. All rights reserved.
13
- </file>
14
- */
15
- export class BillingUtils {
16
- static convert2AmountWithCurrency(amount, currency) {
17
- switch (currency) {
18
- case 'GBP':
19
- return '£' + amount;
20
- case 'EUR':
21
- return '€' + amount;
22
- case 'USD':
23
- return '$' + amount;
24
- }
25
- return amount;
26
- }
27
- }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvYmlsbGluZy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7OztFQWFFO0FBRUYsTUFBTSxPQUFPLFlBQVk7SUFDaEIsTUFBTSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxRQUFRO1FBQ3ZELFFBQVEsUUFBUSxFQUFFLENBQUM7WUFDakIsS0FBSyxLQUFLO2dCQUNSLE9BQU8sR0FBRyxHQUFHLE1BQU0sQ0FBQztZQUV0QixLQUFLLEtBQUs7Z0JBQ1IsT0FBTyxHQUFHLEdBQUcsTUFBTSxDQUFDO1lBRXRCLEtBQUssS0FBSztnQkFDUixPQUFPLEdBQUcsR0FBRyxNQUFNLENBQUM7UUFDeEIsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbjxmaWxlPlxyXG4gIFByb2plY3Q6XHJcbiAgICBBdGxhcyBDcm9zc1xyXG5cclxuICBBdXRob3JzOlxyXG4gICAgTGVvbiBNYWx5YW4gbGVvbi5tYWx5YW5Ab3Nvdml0bnkuY29tXHJcblxyXG4gIENyZWF0ZWQ6XHJcbiAgICAyNSBNYXkgMjAyNFxyXG5cclxuICBDb3B5cmlnaHQgKGMpIDIwMjMtMjAyNCBBdGxhcyBDcm9zcyBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbjwvZmlsZT5cclxuKi9cclxuXHJcbmV4cG9ydCBjbGFzcyBCaWxsaW5nVXRpbHMge1xyXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydDJBbW91bnRXaXRoQ3VycmVuY3koYW1vdW50LCBjdXJyZW5jeSkge1xyXG4gICAgc3dpdGNoIChjdXJyZW5jeSkge1xyXG4gICAgICBjYXNlICdHQlAnOlxyXG4gICAgICAgIHJldHVybiAnwqMnICsgYW1vdW50O1xyXG5cclxuICAgICAgY2FzZSAnRVVSJzpcclxuICAgICAgICByZXR1cm4gJ+KCrCcgKyBhbW91bnQ7XHJcblxyXG4gICAgICBjYXNlICdVU0QnOlxyXG4gICAgICAgIHJldHVybiAnJCcgKyBhbW91bnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGFtb3VudDtcclxuICB9XHJcbn1cclxuIl19
@@ -1,24 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny vadim.osovitny@osovitny.com
8
- Anatoly Osovitny anatoly.osovitny@osovitny.com
9
-
10
- Created:
11
- 2 May 2023
12
-
13
- Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
14
- </file>
15
- */
16
- export class Browser {
17
- static isIE() {
18
- return window.navigator.userAgent.indexOf("MSIE ") > -1 || window.navigator.userAgent.indexOf("Trident/") > -1;
19
- }
20
- static isIframe() {
21
- return window !== window.parent && !window.opener;
22
- }
23
- }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuYXRvbHkvc3JjL2xpYi9jb3JlL2Jyb3dzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixNQUFNLE9BQU8sT0FBTztJQUNYLE1BQU0sQ0FBQyxJQUFJO1FBQ2hCLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqSCxDQUFDO0lBRU0sTUFBTSxDQUFDLFFBQVE7UUFDcEIsT0FBTyxNQUFNLEtBQUssTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDcEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbS5vc292aXRueUBvc292aXRueS5jb21cclxuICAgIEFuYXRvbHkgT3Nvdml0bnkgYW5hdG9seS5vc292aXRueUBvc292aXRueS5jb21cclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDIgTWF5IDIwMjNcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjUgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG5leHBvcnQgY2xhc3MgQnJvd3NlciB7XHJcbiAgcHVibGljIHN0YXRpYyBpc0lFKCkge1xyXG4gICAgcmV0dXJuIHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoXCJNU0lFIFwiKSA+IC0xIHx8IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoXCJUcmlkZW50L1wiKSA+IC0xO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBpc0lmcmFtZSgpIHtcclxuICAgIHJldHVybiB3aW5kb3cgIT09IHdpbmRvdy5wYXJlbnQgJiYgIXdpbmRvdy5vcGVuZXI7XHJcbiAgfVxyXG59XHJcblxyXG4iXX0=
@@ -1,55 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny vadim.osovitny@osovitny.com
8
- Anatoly Osovitny anatoly.osovitny@osovitny.com
9
-
10
- Created:
11
- 1 Apr 2024
12
-
13
- Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
14
- </file>
15
- */
16
- import { ClientApps } from "./core-settings";
17
- export function getAppSettingsById(id) {
18
- let apps = ClientApps;
19
- if (apps && id) {
20
- for (let i = 0; i < apps.length; i++) {
21
- let app = apps[i];
22
- if (app.id == id) {
23
- return app;
24
- }
25
- }
26
- }
27
- return null;
28
- }
29
- export function getAppSettingsByName(name) {
30
- let apps = ClientApps;
31
- if (apps && name) {
32
- for (let i = 0; i < apps.length; i++) {
33
- let app = apps[i];
34
- if (app.name == name) {
35
- return app;
36
- }
37
- }
38
- }
39
- return null;
40
- }
41
- export function getCurrentApp() {
42
- if (!AppSettings) {
43
- return null;
44
- }
45
- let appOne = getAppSettingsById(1);
46
- return {
47
- type: AppSettings.id,
48
- root: AppSettings.root,
49
- one: appOne,
50
- oneUrl: appOne?.baseUrl + appOne?.root
51
- };
52
- }
53
- export const AppName = document.getElementById('appName').getAttribute('data-appname');
54
- export const AppSettings = getAppSettingsByName(AppName);
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXNldHRpbmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL2NvcmUvY29uc3RzL2FwcC1zZXR0aW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxNQUFNLFVBQVUsa0JBQWtCLENBQUMsRUFBRTtJQUNuQyxJQUFJLElBQUksR0FBRyxVQUFVLENBQUM7SUFFdEIsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLENBQUM7UUFDZixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3JDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVsQixJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ2pCLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLElBQUk7SUFDdkMsSUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDO0lBRXRCLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDckMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWxCLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDckIsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFXRCxNQUFNLFVBQVUsYUFBYTtJQUMzQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsT0FBTztRQUNMLElBQUksRUFBRSxXQUFXLENBQUMsRUFBRTtRQUNwQixJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUk7UUFFdEIsR0FBRyxFQUFFLE1BQU07UUFDWCxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sR0FBRyxNQUFNLEVBQUUsSUFBSTtLQUN2QyxDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBSSxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBc0IsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDN0csTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbS5vc292aXRueUBvc292aXRueS5jb21cclxuICAgIEFuYXRvbHkgT3Nvdml0bnkgYW5hdG9seS5vc292aXRueUBvc292aXRueS5jb21cclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDEgQXByIDIwMjRcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjUgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG5pbXBvcnQgeyBDbGllbnRBcHBzIH0gZnJvbSBcIi4vY29yZS1zZXR0aW5nc1wiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEFwcFNldHRpbmdzQnlJZChpZCkge1xyXG4gIGxldCBhcHBzID0gQ2xpZW50QXBwcztcclxuXHJcbiAgaWYgKGFwcHMgJiYgaWQpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXBwcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgYXBwID0gYXBwc1tpXTtcclxuXHJcbiAgICAgIGlmIChhcHAuaWQgPT0gaWQpIHtcclxuICAgICAgICByZXR1cm4gYXBwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gbnVsbDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEFwcFNldHRpbmdzQnlOYW1lKG5hbWUpIHtcclxuICBsZXQgYXBwcyA9IENsaWVudEFwcHM7XHJcblxyXG4gIGlmIChhcHBzICYmIG5hbWUpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXBwcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgYXBwID0gYXBwc1tpXTtcclxuXHJcbiAgICAgIGlmIChhcHAubmFtZSA9PSBuYW1lKSB7XHJcbiAgICAgICAgcmV0dXJuIGFwcDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIG51bGw7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUN1cnJlbnRBcHAge1xyXG4gIHR5cGU6IG51bWJlcjtcclxuICByb290OiBzdHJpbmc7XHJcblxyXG4gIC8vQXBwbGljYXRpb25PbmVcclxuICBvbmU6IGFueTtcclxuICBvbmVVcmw6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEN1cnJlbnRBcHAoKTogSUN1cnJlbnRBcHAge1xyXG4gIGlmICghQXBwU2V0dGluZ3MpIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgbGV0IGFwcE9uZSA9IGdldEFwcFNldHRpbmdzQnlJZCgxKTtcclxuICByZXR1cm4ge1xyXG4gICAgdHlwZTogQXBwU2V0dGluZ3MuaWQsXHJcbiAgICByb290OiBBcHBTZXR0aW5ncy5yb290LFxyXG5cclxuICAgIG9uZTogYXBwT25lLFxyXG4gICAgb25lVXJsOiBhcHBPbmU/LmJhc2VVcmwgKyBhcHBPbmU/LnJvb3RcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBBcHBOYW1lID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcHBOYW1lJykgYXMgSFRNTElucHV0RWxlbWVudCkuZ2V0QXR0cmlidXRlKCdkYXRhLWFwcG5hbWUnKTtcclxuZXhwb3J0IGNvbnN0IEFwcFNldHRpbmdzID0gZ2V0QXBwU2V0dGluZ3NCeU5hbWUoQXBwTmFtZSk7XHJcbiJdfQ==
@@ -1,29 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny vadim.osovitny@osovitny.com
8
- Anatoly Osovitny anatoly.osovitny@osovitny.com
9
-
10
- Created:
11
- 26 Jun 2020
12
-
13
- Examples:
14
- https://github.com/microsoft/TypeScript/blob/main/src/server/editorServices.ts
15
- https://github.com/microsoft/TypeScript/blob/main/src/compiler/core.ts
16
-
17
- Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
18
- </file>
19
- */
20
- export const AppCoreSettings = JSON.parse((document.getElementById('appCoreSettings')).getAttribute('data-appcoresettings'));
21
- //WebApp
22
- let isDevMode = `${AppCoreSettings?.isDevMode}`;
23
- export const AppVersion = `${AppCoreSettings?.version}`;
24
- export const IsDevMode = (isDevMode && (isDevMode == 'True' || isDevMode == 'true'));
25
- export const IsProdMode = !IsDevMode;
26
- export const ClientApps = AppCoreSettings?.clientApps;
27
- //Api
28
- export const ApiUrl = `${AppCoreSettings?.api.url}`;
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1zZXR0aW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuYXRvbHkvc3JjL2xpYi9jb3JlL2NvbnN0cy9jb3JlLXNldHRpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFrQkU7QUFFRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDdEMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQXNCLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQ3hHLENBQUM7QUFFRixRQUFRO0FBQ1IsSUFBSSxTQUFTLEdBQUcsR0FBRyxlQUFlLEVBQUUsU0FBUyxFQUFFLENBQUM7QUFFaEQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEdBQUcsZUFBZSxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQ3hELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBWSxDQUFDLFNBQVMsSUFBSSxDQUFDLFNBQVMsSUFBSSxNQUFNLElBQUksU0FBUyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDOUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFZLENBQUMsU0FBUyxDQUFDO0FBQzlDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxlQUFlLEVBQUUsVUFBVSxDQUFDO0FBRXRELEtBQUs7QUFDTCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsR0FBRyxlQUFlLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbS5vc292aXRueUBvc292aXRueS5jb21cclxuICAgIEFuYXRvbHkgT3Nvdml0bnkgYW5hdG9seS5vc292aXRueUBvc292aXRueS5jb21cclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDI2IEp1biAyMDIwXHJcblxyXG4gIEV4YW1wbGVzOlxyXG4gICAgaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2Jsb2IvbWFpbi9zcmMvc2VydmVyL2VkaXRvclNlcnZpY2VzLnRzXHJcbiAgICBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvYmxvYi9tYWluL3NyYy9jb21waWxlci9jb3JlLnRzXHJcblxyXG4gIENvcHlyaWdodCAoYykgMjAxNi0yMDI1IE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuZXhwb3J0IGNvbnN0IEFwcENvcmVTZXR0aW5ncyA9IEpTT04ucGFyc2UoXHJcbiAgKChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXBwQ29yZVNldHRpbmdzJykpIGFzIEhUTUxJbnB1dEVsZW1lbnQpLmdldEF0dHJpYnV0ZSgnZGF0YS1hcHBjb3Jlc2V0dGluZ3MnKVxyXG4pO1xyXG5cclxuLy9XZWJBcHBcclxubGV0IGlzRGV2TW9kZSA9IGAke0FwcENvcmVTZXR0aW5ncz8uaXNEZXZNb2RlfWA7XHJcblxyXG5leHBvcnQgY29uc3QgQXBwVmVyc2lvbiA9IGAke0FwcENvcmVTZXR0aW5ncz8udmVyc2lvbn1gO1xyXG5leHBvcnQgY29uc3QgSXNEZXZNb2RlOiBib29sZWFuID0gKGlzRGV2TW9kZSAmJiAoaXNEZXZNb2RlID09ICdUcnVlJyB8fCBpc0Rldk1vZGUgPT0gJ3RydWUnKSk7XHJcbmV4cG9ydCBjb25zdCBJc1Byb2RNb2RlOiBib29sZWFuID0gIUlzRGV2TW9kZTtcclxuZXhwb3J0IGNvbnN0IENsaWVudEFwcHMgPSBBcHBDb3JlU2V0dGluZ3M/LmNsaWVudEFwcHM7XHJcblxyXG4vL0FwaVxyXG5leHBvcnQgY29uc3QgQXBpVXJsID0gYCR7QXBwQ29yZVNldHRpbmdzPy5hcGkudXJsfWA7Il19
@@ -1,27 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny vadim.osovitny@osovitny.com
8
- Anatoly Osovitny anatoly.osovitny@osovitny.com
9
-
10
- Created:
11
- 1 Apr 2024
12
-
13
- Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
14
- </file>
15
- */
16
- export const dateTimeFormats = {
17
- medium: 'dd MMM yyyy HH:mm'
18
- };
19
- export const dateFormats = {
20
- medium: "dd MMM yyyy",
21
- short: "dd/MM/yyyy"
22
- };
23
- export const timeFormats = {
24
- medium: "HH:mm:ss",
25
- short: "HH:mm"
26
- };
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuYXRvbHkvc3JjL2xpYi9jb3JlL2NvbnN0cy9mb3JtYXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzdCLE1BQU0sRUFBRSxtQkFBbUI7Q0FDNUIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixNQUFNLEVBQUUsYUFBYTtJQUNyQixLQUFLLEVBQUUsWUFBWTtDQUNwQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHO0lBQ3pCLE1BQU0sRUFBRSxVQUFVO0lBQ2xCLEtBQUssRUFBRSxPQUFPO0NBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbjxmaWxlPlxyXG4gIFByb2plY3Q6XHJcbiAgICBAb3Nvdml0bnkvYW5hdG9seVxyXG5cclxuICBBdXRob3JzOlxyXG4gICAgVmFkaW0gT3Nvdml0bnkgdmFkaW0ub3Nvdml0bnlAb3Nvdml0bnkuY29tXHJcbiAgICBBbmF0b2x5IE9zb3ZpdG55IGFuYXRvbHkub3Nvdml0bnlAb3Nvdml0bnkuY29tXHJcblxyXG4gIENyZWF0ZWQ6XHJcbiAgICAxIEFwciAyMDI0XHJcblxyXG4gIENvcHlyaWdodCAoYykgMjAxNi0yMDI1IE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuZXhwb3J0IGNvbnN0IGRhdGVUaW1lRm9ybWF0cyA9IHtcclxuICBtZWRpdW06ICdkZCBNTU0geXl5eSBISDptbSdcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBkYXRlRm9ybWF0cyA9IHtcclxuICBtZWRpdW06IFwiZGQgTU1NIHl5eXlcIixcclxuICBzaG9ydDogXCJkZC9NTS95eXl5XCJcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCB0aW1lRm9ybWF0cyA9IHtcclxuICBtZWRpdW06IFwiSEg6bW06c3NcIixcclxuICBzaG9ydDogXCJISDptbVwiXHJcbn07XHJcbiJdfQ==
@@ -1,26 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny vadim.osovitny@osovitny.com
8
-
9
- Created:
10
- 11 Nov 2024
11
-
12
- Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
13
- </file>
14
- */
15
- export const GAEvents = {
16
- login: {
17
- signin: 'osa_login_signin',
18
- signin_success: 'osa_login_signin_success',
19
- signup: 'osa_login_signup',
20
- signup_success: 'osa_login_signup_success'
21
- }
22
- };
23
- export const GABillingEvents = {
24
- payment: 'osa_billing_payment'
25
- };
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9jb25zdHMvZ2EudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7Ozs7Ozs7Ozs7RUFhRTtBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRztJQUN0QixLQUFLLEVBQUU7UUFDTCxNQUFNLEVBQUUsa0JBQWtCO1FBQzFCLGNBQWMsRUFBRSwwQkFBMEI7UUFDMUMsTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixjQUFjLEVBQUUsMEJBQTBCO0tBQzNDO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUM3QixPQUFPLEVBQUUscUJBQXFCO0NBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuXHJcbi8qXHJcbjxmaWxlPlxyXG4gIFByb2plY3Q6XHJcbiAgICBAb3Nvdml0bnkvYW5hdG9seVxyXG5cclxuICBBdXRob3JzOlxyXG4gICAgVmFkaW0gT3Nvdml0bnkgdmFkaW0ub3Nvdml0bnlAb3Nvdml0bnkuY29tXHJcblxyXG4gIENyZWF0ZWQ6XHJcbiAgICAxMSBOb3YgMjAyNFxyXG5cclxuICBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyNSBPc292aXRueSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbjwvZmlsZT5cclxuKi9cclxuXHJcbmV4cG9ydCBjb25zdCBHQUV2ZW50cyA9IHtcclxuICBsb2dpbjoge1xyXG4gICAgc2lnbmluOiAnb3NhX2xvZ2luX3NpZ25pbicsXHJcbiAgICBzaWduaW5fc3VjY2VzczogJ29zYV9sb2dpbl9zaWduaW5fc3VjY2VzcycsXHJcbiAgICBzaWdudXA6ICdvc2FfbG9naW5fc2lnbnVwJyxcclxuICAgIHNpZ251cF9zdWNjZXNzOiAnb3NhX2xvZ2luX3NpZ251cF9zdWNjZXNzJ1xyXG4gIH1cclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBHQUJpbGxpbmdFdmVudHMgPSB7XHJcbiAgcGF5bWVudDogJ29zYV9iaWxsaW5nX3BheW1lbnQnXHJcbn07XHJcblxyXG4iXX0=
@@ -1,23 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny vadim.osovitny@osovitny.com
8
- Anatoly Osovitny anatoly.osovitny@osovitny.com
9
-
10
- Created:
11
- 28 Apr 2024
12
-
13
- Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
14
- </file>
15
- */
16
- export const AppContextStorageKeys = {
17
- version: 'version',
18
- currency: 'currency',
19
- //Lists
20
- countries: 'countries',
21
- languages: 'languages'
22
- };
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZUtleXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9jb25zdHMvc3RvcmFnZUtleXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRztJQUNuQyxPQUFPLEVBQUUsU0FBUztJQUNsQixRQUFRLEVBQUUsVUFBVTtJQUVwQixPQUFPO0lBQ1AsU0FBUyxFQUFFLFdBQVc7SUFDdEIsU0FBUyxFQUFFLFdBQVc7Q0FDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbjxmaWxlPlxyXG4gIFByb2plY3Q6XHJcbiAgICBAb3Nvdml0bnkvYW5hdG9seVxyXG5cclxuICBBdXRob3JzOlxyXG4gICAgVmFkaW0gT3Nvdml0bnkgdmFkaW0ub3Nvdml0bnlAb3Nvdml0bnkuY29tXHJcbiAgICBBbmF0b2x5IE9zb3ZpdG55IGFuYXRvbHkub3Nvdml0bnlAb3Nvdml0bnkuY29tXHJcblxyXG4gIENyZWF0ZWQ6XHJcbiAgICAyOCBBcHIgMjAyNFxyXG5cclxuICBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyNSBPc292aXRueSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbjwvZmlsZT5cclxuKi9cclxuXHJcbmV4cG9ydCBjb25zdCBBcHBDb250ZXh0U3RvcmFnZUtleXMgPSB7XHJcbiAgdmVyc2lvbjogJ3ZlcnNpb24nLFxyXG4gIGN1cnJlbmN5OiAnY3VycmVuY3knLFxyXG5cclxuICAvL0xpc3RzXHJcbiAgY291bnRyaWVzOiAnY291bnRyaWVzJyxcclxuICBsYW5ndWFnZXM6ICdsYW5ndWFnZXMnXHJcbn07XHJcbiJdfQ==
@@ -1,103 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny vadim.osovitny@osovitny.com
8
-
9
- Created:
10
- 29 June 2020
11
-
12
- Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
13
- </file>
14
- */
15
- import { is } from "../is";
16
- export class Convert {
17
- static pad(number) {
18
- if (number < 10) {
19
- return '0' + number;
20
- }
21
- return number;
22
- }
23
- static enumToString(enumeration, value) {
24
- for (let k in enumeration)
25
- if (enumeration[k] == value)
26
- return k;
27
- return null;
28
- }
29
- static enumToArray(enumeration, valueAsInt = true, notIncludes) {
30
- const notIncludeFiler = (value) => {
31
- if (isNaN(Number(value))) {
32
- return false;
33
- }
34
- if (notIncludes) {
35
- for (let i in notIncludes) {
36
- if (notIncludes[i] == value)
37
- return false;
38
- }
39
- }
40
- return true;
41
- };
42
- if (valueAsInt) {
43
- return Object.keys(enumeration)
44
- .filter(notIncludeFiler)
45
- .map(key => ({
46
- value: parseInt(key),
47
- text: enumeration[key]
48
- }));
49
- }
50
- else {
51
- return Object.keys(enumeration)
52
- .filter(notIncludeFiler)
53
- .map(key => ({
54
- value: key,
55
- text: enumeration[key]
56
- }));
57
- }
58
- }
59
- static stringToArray(str, separator = ',') {
60
- if (str) {
61
- return str.split(separator).filter(element => element);
62
- }
63
- return [];
64
- }
65
- static stringToIntArray(str, separator = ',') {
66
- if (str) {
67
- return str.split(separator).filter(element => element).map(value => parseInt(value));
68
- }
69
- return [];
70
- }
71
- static company2String(comp) {
72
- let company = JSON.parse(comp);
73
- if (company) {
74
- return `${company.name} ${company.phone} ${company.email} ${company.websiteUrl}`;
75
- }
76
- }
77
- static address2String(adr) {
78
- let address = JSON.parse(adr);
79
- return `${address.street} ${address.street2} ${address.city} ${address.stateOrRegion} ${address.zipcode} ${address.country}`;
80
- }
81
- static stringToBoolean(value) {
82
- if (value) {
83
- if (is.boolean(value)) {
84
- return value;
85
- }
86
- if (is.string(value)) {
87
- switch (value.toLowerCase().trim()) {
88
- case "true":
89
- case "yes":
90
- case "1":
91
- return true;
92
- case "false":
93
- case "no":
94
- case "0":
95
- case null:
96
- return false;
97
- }
98
- }
99
- }
100
- return false;
101
- }
102
- }
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuYXRvbHkvc3JjL2xpYi9jb3JlL2NvbnZlcnRzL2NvbnZlcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7RUFhRTtBQUVGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFFM0IsTUFBTSxPQUFPLE9BQU87SUFDVixNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU07UUFDdkIsSUFBSSxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDaEIsT0FBTyxHQUFHLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsS0FBSztRQUMzQyxLQUFLLElBQUksQ0FBQyxJQUFJLFdBQVc7WUFBRSxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLO2dCQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWpFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLE1BQU0sQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLFVBQVUsR0FBRyxJQUFJLEVBQUUsV0FBWTtRQUNwRSxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2hDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pCLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUVELElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2hCLEtBQUssSUFBSSxDQUFDLElBQUksV0FBVyxFQUFFLENBQUM7b0JBQzFCLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUs7d0JBQ3pCLE9BQU8sS0FBSyxDQUFDO2dCQUNqQixDQUFDO1lBQ0gsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFD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b0JBQ1QsS0FBSyxJQUFJO3dCQUNQLE9BQU8sS0FBSyxDQUFDO2dCQUNqQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbjxmaWxlPlxyXG4gIFByb2plY3Q6XHJcbiAgICBAb3Nvdml0bnkvYW5hdG9seVxyXG5cclxuICBBdXRob3JzOlxyXG4gICAgVmFkaW0gT3Nvdml0bnkgdmFkaW0ub3Nvdml0bnlAb3Nvdml0bnkuY29tXHJcblxyXG4gIENyZWF0ZWQ6XHJcbiAgICAyOSBKdW5lIDIwMjBcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjUgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG5pbXBvcnQgeyBpcyB9IGZyb20gXCIuLi9pc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIENvbnZlcnQge1xyXG4gIHByaXZhdGUgc3RhdGljIHBhZChudW1iZXIpIHtcclxuICAgIGlmIChudW1iZXIgPCAxMCkge1xyXG4gICAgICByZXR1cm4gJzAnICsgbnVtYmVyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bWJlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZW51bVRvU3RyaW5nKGVudW1lcmF0aW9uLCB2YWx1ZSkge1xyXG4gICAgZm9yIChsZXQgayBpbiBlbnVtZXJhdGlvbikgaWYgKGVudW1lcmF0aW9uW2tdID09IHZhbHVlKSByZXR1cm4gaztcclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZW51bVRvQXJyYXkoZW51bWVyYXRpb24sIHZhbHVlQXNJbnQgPSB0cnVlLCBub3RJbmNsdWRlcz8pIHtcclxuICAgIGNvbnN0IG5vdEluY2x1ZGVGaWxlciA9ICh2YWx1ZSkgPT4ge1xyXG4gICAgICBpZiAoaXNOYU4oTnVtYmVyKHZhbHVlKSkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChub3RJbmNsdWRlcykge1xyXG4gICAgICAgIGZvciAobGV0IGkgaW4gbm90SW5jbHVkZXMpIHtcclxuICAgICAgICAgIGlmIChub3RJbmNsdWRlc1tpXSA9PSB2YWx1ZSlcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZhbHVlQXNJbnQpIHtcclxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGVudW1lcmF0aW9uKVxyXG4gICAgICAgICAgICAgICAgICAgLmZpbHRlcihub3RJbmNsdWRlRmlsZXIpXHJcbiAgICAgICAgICAgICAgICAgICAubWFwKGtleSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcGFyc2VJbnQoa2V5KSxcclxuICAgICAgICAgICAgICAgICAgICAgdGV4dDogZW51bWVyYXRpb25ba2V5XVxyXG4gICAgICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhlbnVtZXJhdGlvbilcclxuICAgICAgICAgICAgICAgICAgIC5maWx0ZXIobm90SW5jbHVkZUZpbGVyKVxyXG4gICAgICAgICAgICAgICAgICAgLm1hcChrZXkgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGtleSxcclxuICAgICAgICAgICAgICAgICAgICAgdGV4dDogZW51bWVyYXRpb25ba2V5XVxyXG4gICAgICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBzdHJpbmdUb0FycmF5KHN0cjogc3RyaW5nLCBzZXBhcmF0b3I6IHN0cmluZyA9ICcsJykge1xyXG4gICAgaWYgKHN0cikge1xyXG4gICAgICByZXR1cm4gc3RyLnNwbGl0KHNlcGFyYXRvcikuZmlsdGVyKGVsZW1lbnQgPT4gZWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBzdHJpbmdUb0ludEFycmF5KHN0cjogc3RyaW5nLCBzZXBhcmF0b3I6IHN0cmluZyA9ICcsJykge1xyXG4gICAgaWYgKHN0cikge1xyXG4gICAgICByZXR1cm4gc3RyLnNwbGl0KHNlcGFyYXRvcikuZmlsdGVyKGVsZW1lbnQgPT4gZWxlbWVudCkubWFwKHZhbHVlID0+IHBhcnNlSW50KHZhbHVlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBjb21wYW55MlN0cmluZyhjb21wOmFueSk6c3RyaW5nIHtcclxuICAgIGxldCBjb21wYW55ID0gSlNPTi5wYXJzZShjb21wKTtcclxuICAgIGlmKGNvbXBhbnkpXHJcbiAgICB7XHJcbiAgICAgIHJldHVybiBgJHtjb21wYW55Lm5hbWV9ICR7Y29tcGFueS5waG9uZX0gJHtjb21wYW55LmVtYWlsfSAke2NvbXBhbnkud2Vic2l0ZVVybH1gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBhZGRyZXNzMlN0cmluZyhhZHI6YW55KTpzdHJpbmcge1xyXG4gICAgbGV0IGFkZHJlc3MgPSBKU09OLnBhcnNlKGFkcik7XHJcbiAgICByZXR1cm4gYCR7YWRkcmVzcy5zdHJlZXR9ICR7YWRkcmVzcy5zdHJlZXQyfSAke2FkZHJlc3MuY2l0eX0gJHthZGRyZXNzLnN0YXRlT3JSZWdpb259ICR7YWRkcmVzcy56aXBjb2RlfSAke2FkZHJlc3MuY291bnRyeX1gO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBzdHJpbmdUb0Jvb2xlYW4odmFsdWUpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBpZiAoaXMuYm9vbGVhbih2YWx1ZSkpe1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGlzLnN0cmluZyh2YWx1ZSkpe1xyXG4gICAgICAgIHN3aXRjaCAodmFsdWUudG9Mb3dlckNhc2UoKS50cmltKCkpIHtcclxuICAgICAgICAgIGNhc2UgXCJ0cnVlXCI6XHJcbiAgICAgICAgICBjYXNlIFwieWVzXCI6XHJcbiAgICAgICAgICBjYXNlIFwiMVwiOlxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIFxyXG4gICAgICAgICAgY2FzZSBcImZhbHNlXCI6XHJcbiAgICAgICAgICBjYXNlIFwibm9cIjpcclxuICAgICAgICAgIGNhc2UgXCIwXCI6XHJcbiAgICAgICAgICBjYXNlIG51bGw6XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiJdfQ==