common-header-lib 0.0.1

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 (195) hide show
  1. package/README.md +24 -0
  2. package/assets/.gitkeep +0 -0
  3. package/assets/i18n/ar.json +83 -0
  4. package/assets/i18n/de.json +83 -0
  5. package/assets/i18n/en.json +83 -0
  6. package/assets/i18n/es.json +83 -0
  7. package/assets/i18n/fr.json +83 -0
  8. package/assets/i18n/hi.json +83 -0
  9. package/assets/i18n/ja.json +83 -0
  10. package/assets/i18n/ko.json +83 -0
  11. package/assets/images/APP019.svg +6 -0
  12. package/assets/images/APP020.svg +4 -0
  13. package/assets/images/APP021.svg +6 -0
  14. package/assets/images/APP022.svg +6 -0
  15. package/assets/images/APP023.svg +11 -0
  16. package/assets/images/APP024.svg +9 -0
  17. package/assets/images/APP025.svg +8 -0
  18. package/assets/images/APP026.svg +4 -0
  19. package/assets/images/APP027.svg +5 -0
  20. package/assets/images/APP028.svg +6 -0
  21. package/assets/images/APP029.svg +12 -0
  22. package/assets/images/APP030.svg +20 -0
  23. package/assets/images/APP031.svg +14 -0
  24. package/assets/images/APP032.svg +17 -0
  25. package/assets/images/Frame.svg +104 -0
  26. package/assets/images/apps-1.svg +22 -0
  27. package/assets/images/bell-icon.svg +3 -0
  28. package/assets/images/check_circle.svg +3 -0
  29. package/assets/images/close copy.svg +5 -0
  30. package/assets/images/close.svg +5 -0
  31. package/assets/images/copy-img.svg +3 -0
  32. package/assets/images/cross-search.svg +4 -0
  33. package/assets/images/domain_img.svg +3 -0
  34. package/assets/images/east.svg +3 -0
  35. package/assets/images/error.svg +3 -0
  36. package/assets/images/filepath.svg +8 -0
  37. package/assets/images/flag1.svg +3 -0
  38. package/assets/images/gc-mail.svg +3 -0
  39. package/assets/images/grey-arrow.svg +3 -0
  40. package/assets/images/info.svg +3 -0
  41. package/assets/images/local.svg +3 -0
  42. package/assets/images/lock-pass.svg +3 -0
  43. package/assets/images/lock1.svg +3 -0
  44. package/assets/images/login-bg/default_bg.svg +448 -0
  45. package/assets/images/login-bg/visibility.svg +3 -0
  46. package/assets/images/login-bg/visibility_off.svg +3 -0
  47. package/assets/images/logo.png +0 -0
  48. package/assets/images/logout.svg +3 -0
  49. package/assets/images/mail-icon.svg +3 -0
  50. package/assets/images/marker-pin.svg +4 -0
  51. package/assets/images/noti_ticket.svg +3 -0
  52. package/assets/images/pass-img.svg +3 -0
  53. package/assets/images/refresh-1.svg +3 -0
  54. package/assets/images/schedule.svg +1 -0
  55. package/assets/images/search-filter.svg +3 -0
  56. package/assets/images/search-icon.svg +3 -0
  57. package/assets/images/settings.svg +3 -0
  58. package/assets/images/successful.svg +10 -0
  59. package/assets/images/user-name.svg +3 -0
  60. package/assets/scss/_sidebar.scss +267 -0
  61. package/assets/scss/styles.scss +577 -0
  62. package/esm2020/common-header-lib.mjs +5 -0
  63. package/esm2020/lib/Validators/noSpaceAllowed.mjs +16 -0
  64. package/esm2020/lib/common-header-lib.component.mjs +612 -0
  65. package/esm2020/lib/common-header-lib.module.mjs +208 -0
  66. package/esm2020/lib/common-header-lib.service.mjs +200 -0
  67. package/esm2020/lib/components/confirm-dialog/confirm-dialog.component.mjs +49 -0
  68. package/esm2020/lib/components/general-configuration/general-configuration.component.mjs +402 -0
  69. package/esm2020/lib/components/general-configuration/landingpg-config/landingpg-config.component.mjs +124 -0
  70. package/esm2020/lib/components/general-configuration/timezone-configuration/timezone-configuration.component.mjs +138 -0
  71. package/esm2020/lib/components/grid-pagination/grid-pagination.component.mjs +39 -0
  72. package/esm2020/lib/components/ng-translation/ng-translation.component.mjs +65 -0
  73. package/esm2020/lib/components/no-service-my-access-pg/no-service-my-access-pg.component.mjs +19 -0
  74. package/esm2020/lib/components/notification-sidebar/notification-sidebar.component.mjs +40 -0
  75. package/esm2020/lib/components/side-popup/side-popup.component.mjs +34 -0
  76. package/esm2020/lib/components/user-mailbox/user-mailbox.component.mjs +173 -0
  77. package/esm2020/lib/components/user-sidebar/user-sidebar.component.mjs +279 -0
  78. package/esm2020/lib/components/viewpassword-popup/viewpassword-popup.component.mjs +196 -0
  79. package/esm2020/lib/model/data_model.mjs +217 -0
  80. package/esm2020/lib/pipes/custome-dateformat.pipe.mjs +27 -0
  81. package/esm2020/lib/pipes/date-diff.pipe.mjs +56 -0
  82. package/esm2020/lib/pipes/slice-to-two.pipe.mjs +34 -0
  83. package/esm2020/lib/services/EncrypDecryp_RSA.service.mjs +100 -0
  84. package/esm2020/lib/services/async-passwordcheck.service.mjs +72 -0
  85. package/esm2020/lib/services/cookie-storage-manager.service.mjs +78 -0
  86. package/esm2020/lib/services/encrpdata.service.mjs +55 -0
  87. package/esm2020/lib/services/encrydecrydata.service.mjs +207 -0
  88. package/esm2020/lib/services/event.service.mjs +133 -0
  89. package/esm2020/lib/services/http/http-common.service.mjs +216 -0
  90. package/esm2020/lib/services/http/http-general-config.service.mjs +84 -0
  91. package/esm2020/lib/services/rest-login-form.service.mjs +296 -0
  92. package/esm2020/lib/services/rest-signalr.service.mjs +100 -0
  93. package/esm2020/lib/services/storage.service.mjs +33 -0
  94. package/esm2020/lib/services/toast-msg.service.mjs +95 -0
  95. package/esm2020/lib/services/vapt-validation.service.mjs +31 -0
  96. package/esm2020/public-api.mjs +13 -0
  97. package/fesm2015/common-header-lib.mjs +4165 -0
  98. package/fesm2015/common-header-lib.mjs.map +1 -0
  99. package/fesm2020/common-header-lib.mjs +4146 -0
  100. package/fesm2020/common-header-lib.mjs.map +1 -0
  101. package/index.d.ts +5 -0
  102. package/lib/Validators/noSpaceAllowed.d.ts +2 -0
  103. package/lib/common-header-lib.component.d.ts +148 -0
  104. package/lib/common-header-lib.module.d.ts +43 -0
  105. package/lib/common-header-lib.service.d.ts +25 -0
  106. package/lib/components/confirm-dialog/confirm-dialog.component.d.ts +13 -0
  107. package/lib/components/general-configuration/general-configuration.component.d.ts +86 -0
  108. package/lib/components/general-configuration/landingpg-config/landingpg-config.component.d.ts +37 -0
  109. package/lib/components/general-configuration/timezone-configuration/timezone-configuration.component.d.ts +38 -0
  110. package/lib/components/grid-pagination/grid-pagination.component.d.ts +20 -0
  111. package/lib/components/ng-translation/ng-translation.component.d.ts +22 -0
  112. package/lib/components/no-service-my-access-pg/no-service-my-access-pg.component.d.ts +8 -0
  113. package/lib/components/notification-sidebar/notification-sidebar.component.d.ts +16 -0
  114. package/lib/components/side-popup/side-popup.component.d.ts +14 -0
  115. package/lib/components/user-mailbox/user-mailbox.component.d.ts +40 -0
  116. package/lib/components/user-sidebar/user-sidebar.component.d.ts +61 -0
  117. package/lib/components/viewpassword-popup/viewpassword-popup.component.d.ts +47 -0
  118. package/lib/model/data_model.d.ts +184 -0
  119. package/lib/pipes/custome-dateformat.pipe.d.ts +8 -0
  120. package/lib/pipes/date-diff.pipe.d.ts +9 -0
  121. package/lib/pipes/slice-to-two.pipe.d.ts +7 -0
  122. package/lib/services/EncrypDecryp_RSA.service.d.ts +15 -0
  123. package/lib/services/async-passwordcheck.service.d.ts +18 -0
  124. package/lib/services/cookie-storage-manager.service.d.ts +16 -0
  125. package/lib/services/encrpdata.service.d.ts +12 -0
  126. package/lib/services/encrydecrydata.service.d.ts +33 -0
  127. package/lib/services/event.service.d.ts +30 -0
  128. package/lib/services/http/http-common.service.d.ts +30 -0
  129. package/lib/services/http/http-general-config.service.d.ts +15 -0
  130. package/lib/services/rest-login-form.service.d.ts +39 -0
  131. package/lib/services/rest-signalr.service.d.ts +23 -0
  132. package/lib/services/storage.service.d.ts +11 -0
  133. package/lib/services/toast-msg.service.d.ts +21 -0
  134. package/lib/services/vapt-validation.service.d.ts +7 -0
  135. package/package.json +49 -0
  136. package/public-api.d.ts +8 -0
  137. package/src/assets/i18n/ar.json +83 -0
  138. package/src/assets/i18n/de.json +83 -0
  139. package/src/assets/i18n/en.json +83 -0
  140. package/src/assets/i18n/es.json +83 -0
  141. package/src/assets/i18n/fr.json +83 -0
  142. package/src/assets/i18n/hi.json +83 -0
  143. package/src/assets/i18n/ja.json +83 -0
  144. package/src/assets/i18n/ko.json +83 -0
  145. package/src/assets/images/APP019.svg +6 -0
  146. package/src/assets/images/APP020.svg +4 -0
  147. package/src/assets/images/APP021.svg +6 -0
  148. package/src/assets/images/APP022.svg +6 -0
  149. package/src/assets/images/APP023.svg +11 -0
  150. package/src/assets/images/APP024.svg +9 -0
  151. package/src/assets/images/APP025.svg +8 -0
  152. package/src/assets/images/APP026.svg +4 -0
  153. package/src/assets/images/APP027.svg +5 -0
  154. package/src/assets/images/APP028.svg +6 -0
  155. package/src/assets/images/APP029.svg +12 -0
  156. package/src/assets/images/APP030.svg +20 -0
  157. package/src/assets/images/APP031.svg +14 -0
  158. package/src/assets/images/APP032.svg +17 -0
  159. package/src/assets/images/Frame.svg +104 -0
  160. package/src/assets/images/apps-1.svg +22 -0
  161. package/src/assets/images/bell-icon.svg +3 -0
  162. package/src/assets/images/check_circle.svg +3 -0
  163. package/src/assets/images/close copy.svg +5 -0
  164. package/src/assets/images/close.svg +5 -0
  165. package/src/assets/images/copy-img.svg +3 -0
  166. package/src/assets/images/cross-search.svg +4 -0
  167. package/src/assets/images/domain_img.svg +3 -0
  168. package/src/assets/images/east.svg +3 -0
  169. package/src/assets/images/error.svg +3 -0
  170. package/src/assets/images/filepath.svg +8 -0
  171. package/src/assets/images/flag1.svg +3 -0
  172. package/src/assets/images/gc-mail.svg +3 -0
  173. package/src/assets/images/grey-arrow.svg +3 -0
  174. package/src/assets/images/info.svg +3 -0
  175. package/src/assets/images/local.svg +3 -0
  176. package/src/assets/images/lock-pass.svg +3 -0
  177. package/src/assets/images/lock1.svg +3 -0
  178. package/src/assets/images/login-bg/default_bg.svg +448 -0
  179. package/src/assets/images/login-bg/visibility.svg +3 -0
  180. package/src/assets/images/login-bg/visibility_off.svg +3 -0
  181. package/src/assets/images/logo.png +0 -0
  182. package/src/assets/images/logout.svg +3 -0
  183. package/src/assets/images/mail-icon.svg +3 -0
  184. package/src/assets/images/marker-pin.svg +4 -0
  185. package/src/assets/images/noti_ticket.svg +3 -0
  186. package/src/assets/images/pass-img.svg +3 -0
  187. package/src/assets/images/refresh-1.svg +3 -0
  188. package/src/assets/images/schedule.svg +1 -0
  189. package/src/assets/images/search-filter.svg +3 -0
  190. package/src/assets/images/search-icon.svg +3 -0
  191. package/src/assets/images/settings.svg +3 -0
  192. package/src/assets/images/successful.svg +10 -0
  193. package/src/assets/images/user-name.svg +3 -0
  194. package/src/assets/scss/_sidebar.scss +267 -0
  195. package/src/assets/scss/styles.scss +577 -0
@@ -0,0 +1,34 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class SliceToTwoPipe {
4
+ transform(textName) {
5
+ if (textName === null || textName === '') {
6
+ return 'NA';
7
+ }
8
+ textName = textName?.trim();
9
+ let result = '';
10
+ if (textName && textName.includes(' ')) {
11
+ let splitStringArr = textName.split(' ');
12
+ result =
13
+ splitStringArr[0][0] + splitStringArr[splitStringArr.length - 1][0];
14
+ }
15
+ else if (textName && textName.includes('_')) {
16
+ let splitStringArr = textName.split('_');
17
+ result =
18
+ splitStringArr[0][0] + splitStringArr[splitStringArr.length - 1][0];
19
+ }
20
+ else {
21
+ result = textName[0] + textName[1];
22
+ }
23
+ return result.toLocaleUpperCase();
24
+ }
25
+ }
26
+ SliceToTwoPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SliceToTwoPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
27
+ SliceToTwoPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: SliceToTwoPipe, name: "sliceToTwo" });
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: SliceToTwoPipe, decorators: [{
29
+ type: Pipe,
30
+ args: [{
31
+ name: 'sliceToTwo',
32
+ }]
33
+ }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2UtdG8tdHdvLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24taGVhZGVyLWxpYi9zcmMvbGliL3BpcGVzL3NsaWNlLXRvLXR3by5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUtwRCxNQUFNLE9BQU8sY0FBYztJQUN6QixTQUFTLENBQUMsUUFBZ0I7UUFDeEIsSUFBSSxRQUFRLEtBQUssSUFBSSxJQUFJLFFBQVEsS0FBSyxFQUFFLEVBQUU7WUFDeEMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELFFBQVEsR0FBRyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDNUIsSUFBSSxNQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdEMsSUFBSSxjQUFjLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QyxNQUFNO2dCQUNKLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2RTthQUFNLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDN0MsSUFBSSxjQUFjLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QyxNQUFNO2dCQUNKLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2RTthQUFNO1lBQ0wsTUFBTSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ3BDLENBQUM7OzJHQW5CVSxjQUFjO3lHQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFIMUIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsWUFBWTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ3NsaWNlVG9Ud28nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2xpY2VUb1R3b1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICB0cmFuc2Zvcm0odGV4dE5hbWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICBpZiAodGV4dE5hbWUgPT09IG51bGwgfHwgdGV4dE5hbWUgPT09ICcnKSB7XHJcbiAgICAgIHJldHVybiAnTkEnO1xyXG4gICAgfVxyXG4gICAgdGV4dE5hbWUgPSB0ZXh0TmFtZT8udHJpbSgpO1xyXG4gICAgbGV0IHJlc3VsdDogc3RyaW5nID0gJyc7XHJcbiAgICBpZiAodGV4dE5hbWUgJiYgdGV4dE5hbWUuaW5jbHVkZXMoJyAnKSkge1xyXG4gICAgICBsZXQgc3BsaXRTdHJpbmdBcnIgPSB0ZXh0TmFtZS5zcGxpdCgnICcpO1xyXG4gICAgICByZXN1bHQgPVxyXG4gICAgICAgIHNwbGl0U3RyaW5nQXJyWzBdWzBdICsgc3BsaXRTdHJpbmdBcnJbc3BsaXRTdHJpbmdBcnIubGVuZ3RoIC0gMV1bMF07XHJcbiAgICB9IGVsc2UgaWYgKHRleHROYW1lICYmIHRleHROYW1lLmluY2x1ZGVzKCdfJykpIHtcclxuICAgICAgbGV0IHNwbGl0U3RyaW5nQXJyID0gdGV4dE5hbWUuc3BsaXQoJ18nKTtcclxuICAgICAgcmVzdWx0ID1cclxuICAgICAgICBzcGxpdFN0cmluZ0FyclswXVswXSArIHNwbGl0U3RyaW5nQXJyW3NwbGl0U3RyaW5nQXJyLmxlbmd0aCAtIDFdWzBdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmVzdWx0ID0gdGV4dE5hbWVbMF0gKyB0ZXh0TmFtZVsxXTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQudG9Mb2NhbGVVcHBlckNhc2UoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,100 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as CryptoJS from 'crypto-js';
3
+ import JSEncrypt from 'jsencrypt';
4
+ import * as i0 from "@angular/core";
5
+ export class EncrydecryRSAdataService {
6
+ generateAESKey() {
7
+ const publicKey = this.getPublicKey();
8
+ const symmetricKey = this.generateKeyAndIV();
9
+ const gkey = symmetricKey.key.toString();
10
+ const giv = symmetricKey.iv.toString();
11
+ const key = gkey + ',' + giv;
12
+ const encryptedSymmetricKey = this.encryptSymmetricKey(gkey, publicKey);
13
+ const encryptedSymmetriciv = this.encryptSymmetricKey(giv, publicKey);
14
+ return String(encryptedSymmetricKey + ',' + encryptedSymmetriciv);
15
+ }
16
+ encryptViaRSA(simpleText) {
17
+ const { symmKey, symmIV } = this.getRSAsymmetricKeyIV();
18
+ const encryptedText = this.encryptText(simpleText, symmKey, symmIV);
19
+ return encryptedText;
20
+ }
21
+ decryptViaRSA(encrpyText) {
22
+ const { symmKey, symmIV } = this.getRSAsymmetricKeyIV();
23
+ const decryptedText = this.decryptText(encrpyText, symmKey, symmIV);
24
+ return decryptedText;
25
+ }
26
+ generateKeyAndIV() {
27
+ const key = CryptoJS.lib.WordArray.random(32); // 32 bytes for AES-256
28
+ const iv = CryptoJS.lib.WordArray.random(16); // 16 bytes IV
29
+ return { key, iv };
30
+ }
31
+ encryptText(plaintext, hkey, hiv) {
32
+ //* If the data is Object then converting the object into JSON.stringify()
33
+ if (typeof plaintext === 'object' && plaintext !== null) {
34
+ plaintext = JSON.stringify(plaintext);
35
+ }
36
+ const key = CryptoJS.enc.Hex.parse(hkey);
37
+ const iv = CryptoJS.enc.Hex.parse(hiv);
38
+ const encrypted = CryptoJS.AES.encrypt(plaintext, key, {
39
+ iv: iv,
40
+ mode: CryptoJS.mode.CBC,
41
+ padding: CryptoJS.pad.Pkcs7,
42
+ });
43
+ return encrypted.toString();
44
+ }
45
+ encryptSymmetricKey(key, publicKey) {
46
+ try {
47
+ const rsa = new JSEncrypt();
48
+ rsa.setPublicKey(publicKey);
49
+ const encryptedKey = rsa.encrypt(key);
50
+ if (!encryptedKey)
51
+ throw new Error('Encryption failed. The key might be improperly formatted.');
52
+ return encryptedKey;
53
+ }
54
+ catch (error) {
55
+ console.error(`Encryption error: ${error.message}`);
56
+ return '';
57
+ }
58
+ }
59
+ decryptText(encryptedBase64, hkey, hiv) {
60
+ const key = CryptoJS.enc.Hex.parse(hkey);
61
+ const iv = CryptoJS.enc.Hex.parse(hiv);
62
+ const decrypted = CryptoJS.AES.decrypt(encryptedBase64, key, {
63
+ iv: iv,
64
+ mode: CryptoJS.mode.CBC,
65
+ padding: CryptoJS.pad.Pkcs7,
66
+ });
67
+ return decrypted.toString(CryptoJS.enc.Utf8);
68
+ }
69
+ getPublicKey() {
70
+ const publicKey = this.base64ToPem(localStorage.getItem('001-SAC-GEC') || '');
71
+ return publicKey;
72
+ }
73
+ getRSAsymmetricKeyIV() {
74
+ let symmKey = '';
75
+ let symmIV = '';
76
+ const key = localStorage.getItem('001-SAC-GEC');
77
+ if (key?.includes(',')) {
78
+ const syymArr = key.split(',');
79
+ symmKey = syymArr[0];
80
+ symmIV = syymArr[1];
81
+ }
82
+ return { symmKey, symmIV };
83
+ }
84
+ base64ToPem(base64Key) {
85
+ const pemHeader = '-----BEGIN PUBLIC KEY-----';
86
+ const pemFooter = '-----END PUBLIC KEY-----';
87
+ const chunkSize = 64; // Standard line length for PEM files
88
+ const formattedKey = base64Key.match(new RegExp(`.{1,${chunkSize}}`, 'g'))?.join('\n') || '';
89
+ return `${pemHeader}\n${formattedKey}\n${pemFooter}`;
90
+ }
91
+ }
92
+ EncrydecryRSAdataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EncrydecryRSAdataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
93
+ EncrydecryRSAdataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EncrydecryRSAdataService, providedIn: 'root' });
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EncrydecryRSAdataService, decorators: [{
95
+ type: Injectable,
96
+ args: [{
97
+ providedIn: 'root',
98
+ }]
99
+ }] });
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW5jcnlwRGVjcnlwX1JTQS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uLWhlYWRlci1saWIvc3JjL2xpYi9zZXJ2aWNlcy9FbmNyeXBEZWNyeXBfUlNBLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUM7O0FBS2xDLE1BQU0sT0FBTyx3QkFBd0I7SUFDNUIsY0FBYztRQUNuQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QyxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBRTdCLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN4RSxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDdEUsT0FBTyxNQUFNLENBQUMscUJBQXFCLEdBQUcsR0FBRyxHQUFHLG9CQUFvQixDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVNLGFBQWEsQ0FBQyxVQUFlO1FBQ2xDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDeEQsTUFBTSxh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QzFFLE9BQU8sR0FBRyxTQUFTLEtBQUssWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO0lBQ3ZELENBQUM7O3FIQXBHVSx3QkFBd0I7eUhBQXhCLHdCQUF3QixjQUZ2QixNQUFNOzJGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIENyeXB0b0pTIGZyb20gJ2NyeXB0by1qcyc7XHJcbmltcG9ydCBKU0VuY3J5cHQgZnJvbSAnanNlbmNyeXB0JztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbmNyeWRlY3J5UlNBZGF0YVNlcnZpY2Uge1xyXG4gIHB1YmxpYyBnZW5lcmF0ZUFFU0tleSgpIHtcclxuICAgIGNvbnN0IHB1YmxpY0tleSA9IHRoaXMuZ2V0UHVibGljS2V5KCk7XHJcbiAgICBjb25zdCBzeW1tZXRyaWNLZXkgPSB0aGlzLmdlbmVyYXRlS2V5QW5kSVYoKTtcclxuICAgIGNvbnN0IGdrZXkgPSBzeW1tZXRyaWNLZXkua2V5LnRvU3RyaW5nKCk7XHJcbiAgICBjb25zdCBnaXYgPSBzeW1tZXRyaWNLZXkuaXYudG9TdHJpbmcoKTtcclxuICAgIGNvbnN0IGtleSA9IGdrZXkgKyAnLCcgKyBnaXY7XHJcblxyXG4gICAgY29uc3QgZW5jcnlwdGVkU3ltbWV0cmljS2V5ID0gdGhpcy5lbmNyeXB0U3ltbWV0cmljS2V5KGdrZXksIHB1YmxpY0tleSk7XHJcbiAgICBjb25zdCBlbmNyeXB0ZWRTeW1tZXRyaWNpdiA9IHRoaXMuZW5jcnlwdFN5bW1ldHJpY0tleShnaXYsIHB1YmxpY0tleSk7XHJcbiAgICByZXR1cm4gU3RyaW5nKGVuY3J5cHRlZFN5bW1ldHJpY0tleSArICcsJyArIGVuY3J5cHRlZFN5bW1ldHJpY2l2KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlbmNyeXB0VmlhUlNBKHNpbXBsZVRleHQ6IGFueSkge1xyXG4gICAgY29uc3QgeyBzeW1tS2V5LCBzeW1tSVYgfSA9IHRoaXMuZ2V0UlNBc3ltbWV0cmljS2V5SVYoKTtcclxuICAgIGNvbnN0IGVuY3J5cHRlZFRleHQgPSB0aGlzLmVuY3J5cHRUZXh0KHNpbXBsZVRleHQsIHN5bW1LZXksIHN5bW1JVik7XHJcbiAgICByZXR1cm4gZW5jcnlwdGVkVGV4dDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWNyeXB0VmlhUlNBKGVuY3JweVRleHQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgeyBzeW1tS2V5LCBzeW1tSVYgfSA9IHRoaXMuZ2V0UlNBc3ltbWV0cmljS2V5SVYoKTtcclxuICAgIGNvbnN0IGRlY3J5cHRlZFRleHQgPSB0aGlzLmRlY3J5cHRUZXh0KGVuY3JweVRleHQsIHN5bW1LZXksIHN5bW1JVik7XHJcbiAgICByZXR1cm4gZGVjcnlwdGVkVGV4dDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2VuZXJhdGVLZXlBbmRJVigpIHtcclxuICAgIGNvbnN0IGtleSA9IENyeXB0b0pTLmxpYi5Xb3JkQXJyYXkucmFuZG9tKDMyKTsgLy8gMzIgYnl0ZXMgZm9yIEFFUy0yNTZcclxuICAgIGNvbnN0IGl2ID0gQ3J5cHRvSlMubGliLldvcmRBcnJheS5yYW5kb20oMTYpOyAvLyAxNiBieXRlcyBJVlxyXG4gICAgcmV0dXJuIHsga2V5LCBpdiB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbmNyeXB0VGV4dChwbGFpbnRleHQ6IGFueSwgaGtleTogc3RyaW5nLCBoaXY6IHN0cmluZykge1xyXG4gICAgLy8qIElmIHRoZSBkYXRhIGlzIE9iamVjdCB0aGVuIGNvbnZlcnRpbmcgdGhlIG9iamVjdCBpbnRvIEpTT04uc3RyaW5naWZ5KClcclxuICAgIGlmICh0eXBlb2YgcGxhaW50ZXh0ID09PSAnb2JqZWN0JyAmJiBwbGFpbnRleHQgIT09IG51bGwpIHtcclxuICAgICAgcGxhaW50ZXh0ID0gSlNPTi5zdHJpbmdpZnkocGxhaW50ZXh0KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBrZXkgPSBDcnlwdG9KUy5lbmMuSGV4LnBhcnNlKGhrZXkpO1xyXG4gICAgY29uc3QgaXYgPSBDcnlwdG9KUy5lbmMuSGV4LnBhcnNlKGhpdik7XHJcbiAgICBjb25zdCBlbmNyeXB0ZWQgPSBDcnlwdG9KUy5BRVMuZW5jcnlwdChwbGFpbnRleHQsIGtleSwge1xyXG4gICAgICBpdjogaXYsXHJcbiAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDLFxyXG4gICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczcsXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBlbmNyeXB0ZWQudG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW5jcnlwdFN5bW1ldHJpY0tleShrZXk6IHN0cmluZywgcHVibGljS2V5OiBzdHJpbmcpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJzYSA9IG5ldyBKU0VuY3J5cHQoKTtcclxuICAgICAgcnNhLnNldFB1YmxpY0tleShwdWJsaWNLZXkpO1xyXG4gICAgICBjb25zdCBlbmNyeXB0ZWRLZXkgPSByc2EuZW5jcnlwdChrZXkpO1xyXG4gICAgICBpZiAoIWVuY3J5cHRlZEtleSlcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAnRW5jcnlwdGlvbiBmYWlsZWQuIFRoZSBrZXkgbWlnaHQgYmUgaW1wcm9wZXJseSBmb3JtYXR0ZWQuJ1xyXG4gICAgICAgICk7XHJcbiAgICAgIHJldHVybiBlbmNyeXB0ZWRLZXk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGBFbmNyeXB0aW9uIGVycm9yOiAkeyhlcnJvciBhcyBFcnJvcikubWVzc2FnZX1gKTtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZWNyeXB0VGV4dChlbmNyeXB0ZWRCYXNlNjQ6IHN0cmluZywgaGtleTogc3RyaW5nLCBoaXY6IHN0cmluZykge1xyXG4gICAgY29uc3Qga2V5ID0gQ3J5cHRvSlMuZW5jLkhleC5wYXJzZShoa2V5KTtcclxuICAgIGNvbnN0IGl2ID0gQ3J5cHRvSlMuZW5jLkhleC5wYXJzZShoaXYpO1xyXG4gICAgY29uc3QgZGVjcnlwdGVkID0gQ3J5cHRvSlMuQUVTLmRlY3J5cHQoZW5jcnlwdGVkQmFzZTY0LCBrZXksIHtcclxuICAgICAgaXY6IGl2LFxyXG4gICAgICBtb2RlOiBDcnlwdG9KUy5tb2RlLkNCQyxcclxuICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3LFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGVjcnlwdGVkLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UHVibGljS2V5KCkge1xyXG4gICAgY29uc3QgcHVibGljS2V5ID0gdGhpcy5iYXNlNjRUb1BlbShcclxuICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJzAwMS1TQUMtR0VDJykgfHwgJydcclxuICAgICk7XHJcbiAgICByZXR1cm4gcHVibGljS2V5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSU0FzeW1tZXRyaWNLZXlJVigpIHtcclxuICAgIGxldCBzeW1tS2V5ID0gJyc7XHJcbiAgICBsZXQgc3ltbUlWID0gJyc7XHJcbiAgICBjb25zdCBrZXkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnMDAxLVNBQy1HRUMnKTtcclxuICAgIGlmIChrZXk/LmluY2x1ZGVzKCcsJykpIHtcclxuICAgICAgY29uc3Qgc3l5bUFyciA9IGtleS5zcGxpdCgnLCcpO1xyXG4gICAgICBzeW1tS2V5ID0gc3l5bUFyclswXTtcclxuICAgICAgc3ltbUlWID0gc3l5bUFyclsxXTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IHN5bW1LZXksIHN5bW1JViB9O1xyXG4gIH1cclxuXHJcbiAgYmFzZTY0VG9QZW0oYmFzZTY0S2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcGVtSGVhZGVyID0gJy0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tJztcclxuICAgIGNvbnN0IHBlbUZvb3RlciA9ICctLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0nO1xyXG4gICAgY29uc3QgY2h1bmtTaXplID0gNjQ7IC8vIFN0YW5kYXJkIGxpbmUgbGVuZ3RoIGZvciBQRU0gZmlsZXNcclxuICAgIGNvbnN0IGZvcm1hdHRlZEtleSA9XHJcbiAgICAgIGJhc2U2NEtleS5tYXRjaChuZXcgUmVnRXhwKGAuezEsJHtjaHVua1NpemV9fWAsICdnJykpPy5qb2luKCdcXG4nKSB8fCAnJztcclxuICAgIHJldHVybiBgJHtwZW1IZWFkZXJ9XFxuJHtmb3JtYXR0ZWRLZXl9XFxuJHtwZW1Gb290ZXJ9YDtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,72 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { catchError, debounceTime, switchMap, take, map } from 'rxjs/operators';
3
+ import { Subject, of } from 'rxjs';
4
+ import { EncrydecryRSAdataService } from './EncrypDecryp_RSA.service';
5
+ import { HttpCommonService } from './http/http-common.service';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "./http/http-common.service";
8
+ import * as i2 from "./EncrypDecryp_RSA.service";
9
+ export class ASYNCPasswordcheckService {
10
+ constructor(httpCommonService, encryptService) {
11
+ this.httpCommonService = httpCommonService;
12
+ this.encryptService = encryptService;
13
+ this.pwdErrorMsg = '';
14
+ this.pwdValidation = new Subject();
15
+ }
16
+ createValidator() {
17
+ return (control) => {
18
+ //For AES Encrp/Dec
19
+ const userPassword = this.encryptService.encryptViaRSA(control.value);
20
+ let useDetails = {
21
+ userARCXWD: userPassword,
22
+ // userId: LoggedInUserInfo.userId,
23
+ // userName: LoggedInUserInfo.userName,
24
+ };
25
+ return control.valueChanges.pipe(debounceTime(500), take(1), switchMap((_) => this.httpCommonService.validatePassword(useDetails).pipe(map((data) => {
26
+ if (data['success']) {
27
+ this.pwdErrorMsg = data['message'];
28
+ // console.log(this.pwdErrorMsg);
29
+ this.emitValidationMsg(this.pwdErrorMsg);
30
+ return null;
31
+ }
32
+ else {
33
+ this.pwdErrorMsg = data['errorMessage'];
34
+ this.emitValidationMsg(this.pwdErrorMsg);
35
+ // console.log(this.pwdErrorMsg);
36
+ return { pwdInvalid: true };
37
+ }
38
+ }), catchError(() => of({ pwdInvalid: true })))));
39
+ };
40
+ }
41
+ emitValidationMsg(msg) {
42
+ this.pwdValidation.next(msg);
43
+ }
44
+ listValidationMsg() {
45
+ return this.pwdValidation.asObservable();
46
+ }
47
+ }
48
+ ASYNCPasswordcheckService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ASYNCPasswordcheckService, deps: [{ token: i1.HttpCommonService }, { token: i2.EncrydecryRSAdataService }], target: i0.ɵɵFactoryTarget.Injectable });
49
+ ASYNCPasswordcheckService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ASYNCPasswordcheckService, providedIn: 'root' });
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ASYNCPasswordcheckService, decorators: [{
51
+ type: Injectable,
52
+ args: [{
53
+ providedIn: 'root',
54
+ }]
55
+ }], ctorParameters: function () { return [{ type: i1.HttpCommonService }, { type: i2.EncrydecryRSAdataService }]; } });
56
+ export function ConfirmedValidator(controlName, matchingControlName) {
57
+ return (formGroup) => {
58
+ const control = formGroup.controls[controlName];
59
+ const matchingControl = formGroup.controls[matchingControlName];
60
+ if (matchingControl.errors &&
61
+ !matchingControl.errors['confirmedValidator']) {
62
+ return;
63
+ }
64
+ if (control.value !== matchingControl.value) {
65
+ matchingControl.setErrors({ confirmedValidator: true });
66
+ }
67
+ else {
68
+ matchingControl.setErrors(null);
69
+ }
70
+ };
71
+ }
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtcGFzc3dvcmRjaGVjay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uLWhlYWRlci1saWIvc3JjL2xpYi9zZXJ2aWNlcy9hc3luYy1wYXNzd29yZGNoZWNrLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hGLE9BQU8sRUFBYyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBSy9ELE1BQU0sT0FBTyx5QkFBeUI7SUFJcEMsWUFDbUIsaUJBQW9DLEVBQ3BDLGNBQXdDO1FBRHhDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsbUJBQWMsR0FBZCxjQUFjLENBQTBCO1FBTDNELGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ2pCLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUszQyxDQUFDO0lBRUosZUFBZTtRQUNiLE9BQU8sQ0FDTCxPQUF3QixFQUNtQixFQUFFO1lBQzdDLG1CQUFtQjtZQUNuQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFdEUsSUFBSSxVQUFVLEdBQUc7Z0JBQ2YsVUFBVSxFQUFFLFlBQVk7Z0JBQ3hCLG1DQUFtQztnQkFDbkMsdUNBQXVDO2FBQ3hDLENBQUM7WUFDRixPQUFPLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUM5QixZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNkLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQ3RELEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUNoQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ25DLGlDQUFpQztvQkFDakMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDekMsT0FBTyxJQUFJLENBQUM7aUJBQ2I7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQ3hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQ3pDLGlDQUFpQztvQkFDakMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztpQkFDN0I7WUFDSCxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FDM0MsQ0FDRixDQUNGLENBQUM7UUFDSixDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBVztRQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLENBQUM7O3NIQXBEVSx5QkFBeUI7MEhBQXpCLHlCQUF5QixjQUZ4QixNQUFNOzJGQUVQLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBd0RELE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsV0FBbUIsRUFDbkIsbUJBQTJCO0lBRTNCLE9BQU8sQ0FBQyxTQUFvQixFQUFFLEVBQUU7UUFDOUIsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRCxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDaEUsSUFDRSxlQUFlLENBQUMsTUFBTTtZQUN0QixDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsRUFDN0M7WUFDQSxPQUFPO1NBQ1I7UUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssZUFBZSxDQUFDLEtBQUssRUFBRTtZQUMzQyxlQUFlLENBQUMsU0FBUyxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUN6RDthQUFNO1lBQ0wsZUFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFzeW5jVmFsaWRhdG9yRm4sIEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsIHN3aXRjaE1hcCwgdGFrZSwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFbmNyeWRlY3J5UlNBZGF0YVNlcnZpY2UgfSBmcm9tICcuL0VuY3J5cERlY3J5cF9SU0Euc2VydmljZSc7XHJcbmltcG9ydCB7IEh0dHBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi9odHRwL2h0dHAtY29tbW9uLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFTWU5DUGFzc3dvcmRjaGVja1NlcnZpY2Uge1xyXG4gIHB3ZEVycm9yTXNnOiBzdHJpbmcgPSAnJztcclxuICBwcml2YXRlIHB3ZFZhbGlkYXRpb24gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwQ29tbW9uU2VydmljZTogSHR0cENvbW1vblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVuY3J5cHRTZXJ2aWNlOiBFbmNyeWRlY3J5UlNBZGF0YVNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIGNyZWF0ZVZhbGlkYXRvcigpOiBBc3luY1ZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbFxyXG4gICAgKTogT2JzZXJ2YWJsZTx7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgbnVsbD4gPT4ge1xyXG4gICAgICAvL0ZvciBBRVMgRW5jcnAvRGVjXHJcbiAgICAgIGNvbnN0IHVzZXJQYXNzd29yZCA9IHRoaXMuZW5jcnlwdFNlcnZpY2UuZW5jcnlwdFZpYVJTQShjb250cm9sLnZhbHVlKTtcclxuXHJcbiAgICAgIGxldCB1c2VEZXRhaWxzID0ge1xyXG4gICAgICAgIHVzZXJBUkNYV0Q6IHVzZXJQYXNzd29yZCxcclxuICAgICAgICAvLyB1c2VySWQ6IExvZ2dlZEluVXNlckluZm8udXNlcklkLFxyXG4gICAgICAgIC8vIHVzZXJOYW1lOiBMb2dnZWRJblVzZXJJbmZvLnVzZXJOYW1lLFxyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm4gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcclxuICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgIHN3aXRjaE1hcCgoXykgPT5cclxuICAgICAgICAgIHRoaXMuaHR0cENvbW1vblNlcnZpY2UudmFsaWRhdGVQYXNzd29yZCh1c2VEZXRhaWxzKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChkYXRhWydzdWNjZXNzJ10pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHdkRXJyb3JNc2cgPSBkYXRhWydtZXNzYWdlJ107XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnB3ZEVycm9yTXNnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZW1pdFZhbGlkYXRpb25Nc2codGhpcy5wd2RFcnJvck1zZyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wd2RFcnJvck1zZyA9IGRhdGFbJ2Vycm9yTWVzc2FnZSddO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0VmFsaWRhdGlvbk1zZyh0aGlzLnB3ZEVycm9yTXNnKTtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMucHdkRXJyb3JNc2cpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgcHdkSW52YWxpZDogdHJ1ZSB9O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoeyBwd2RJbnZhbGlkOiB0cnVlIH0pKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBlbWl0VmFsaWRhdGlvbk1zZyhtc2c6IHN0cmluZykge1xyXG4gICAgdGhpcy5wd2RWYWxpZGF0aW9uLm5leHQobXNnKTtcclxuICB9XHJcblxyXG4gIGxpc3RWYWxpZGF0aW9uTXNnKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucHdkVmFsaWRhdGlvbi5hc09ic2VydmFibGUoKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBDb25maXJtZWRWYWxpZGF0b3IoXHJcbiAgY29udHJvbE5hbWU6IHN0cmluZyxcclxuICBtYXRjaGluZ0NvbnRyb2xOYW1lOiBzdHJpbmdcclxuKSB7XHJcbiAgcmV0dXJuIChmb3JtR3JvdXA6IEZvcm1Hcm91cCkgPT4ge1xyXG4gICAgY29uc3QgY29udHJvbCA9IGZvcm1Hcm91cC5jb250cm9sc1tjb250cm9sTmFtZV07XHJcbiAgICBjb25zdCBtYXRjaGluZ0NvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNbbWF0Y2hpbmdDb250cm9sTmFtZV07XHJcbiAgICBpZiAoXHJcbiAgICAgIG1hdGNoaW5nQ29udHJvbC5lcnJvcnMgJiZcclxuICAgICAgIW1hdGNoaW5nQ29udHJvbC5lcnJvcnNbJ2NvbmZpcm1lZFZhbGlkYXRvciddXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGNvbnRyb2wudmFsdWUgIT09IG1hdGNoaW5nQ29udHJvbC52YWx1ZSkge1xyXG4gICAgICBtYXRjaGluZ0NvbnRyb2wuc2V0RXJyb3JzKHsgY29uZmlybWVkVmFsaWRhdG9yOiB0cnVlIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbWF0Y2hpbmdDb250cm9sLnNldEVycm9ycyhudWxsKTtcclxuICAgIH1cclxuICB9O1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,78 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { CookieService } from 'ngx-cookie-service';
3
+ import { HttpClient } from '@angular/common/http';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "ngx-cookie-service";
6
+ import * as i2 from "@angular/common/http";
7
+ export class CookieStorageManagerService {
8
+ constructor(cookie, _http) {
9
+ this.cookie = cookie;
10
+ this._http = _http;
11
+ }
12
+ //Check if cookies is set or not
13
+ checksetCookies(cookiesParam1) {
14
+ let status = this.cookie.check(cookiesParam1);
15
+ if (status) {
16
+ return true;
17
+ }
18
+ else {
19
+ return false;
20
+ }
21
+ }
22
+ //get cookies value
23
+ getCookieValue(cookiesParam) {
24
+ let status = this.cookie.check(cookiesParam);
25
+ if (status) {
26
+ let cookieValue = this.cookie.get(cookiesParam);
27
+ return cookieValue;
28
+ }
29
+ //What if cookies not found
30
+ else {
31
+ return '';
32
+ }
33
+ }
34
+ //Set cookies value
35
+ setCookiesValue(key, value) {
36
+ this.cookie.set(key, value);
37
+ }
38
+ //Delete a specific cookie
39
+ deleteCookie(cookieKey) {
40
+ this.cookie.delete(cookieKey);
41
+ }
42
+ //Delete All cookie
43
+ clearAllCookies() {
44
+ const cookies = this.cookie.getAll();
45
+ for (const cookieName in cookies) {
46
+ if (cookies.hasOwnProperty(cookieName)) {
47
+ this.cookie.delete(cookieName);
48
+ }
49
+ }
50
+ }
51
+ //Delete All cookie
52
+ // clearCookiesByAPI(payload: any) {
53
+ // const delCookieEndpoint = `${GlobalConstants.baseURL}/xaccess/api/SecureAccess/cookiesUpdation`;
54
+ // return this._http.post(delCookieEndpoint, payload).pipe(map((response:any)=>{
55
+ // if (response && response['success']) {
56
+ // return response['result'];
57
+ // } else {
58
+ // return null;
59
+ // }
60
+ // }));
61
+ // }
62
+ //Set Long cookies
63
+ setLongCookie(name, value, maxChunkSize) {
64
+ for (let i = 0; i < Math.ceil(value.length / maxChunkSize); i++) {
65
+ const chunk = value.substring(i * maxChunkSize, (i + 1) * maxChunkSize);
66
+ this.setCookiesValue(`${name}_${i}`, chunk);
67
+ }
68
+ }
69
+ }
70
+ CookieStorageManagerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CookieStorageManagerService, deps: [{ token: i1.CookieService }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
71
+ CookieStorageManagerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CookieStorageManagerService, providedIn: 'root' });
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CookieStorageManagerService, decorators: [{
73
+ type: Injectable,
74
+ args: [{
75
+ providedIn: 'root',
76
+ }]
77
+ }], ctorParameters: function () { return [{ type: i1.CookieService }, { type: i2.HttpClient }]; } });
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLXN0b3JhZ2UtbWFuYWdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uLWhlYWRlci1saWIvc3JjL2xpYi9zZXJ2aWNlcy9jb29raWUtc3RvcmFnZS1tYW5hZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbkQsT0FBTyxFQUFFLFVBQVUsRUFBYyxNQUFNLHNCQUFzQixDQUFDOzs7O0FBTTlELE1BQU0sT0FBTywyQkFBMkI7SUFDdEMsWUFBb0IsTUFBcUIsRUFBVSxLQUFpQjtRQUFoRCxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBWTtJQUFHLENBQUM7SUFFeEUsZ0NBQWdDO0lBQ2hDLGVBQWUsQ0FBQyxhQUFrQjtRQUNoQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5QyxJQUFJLE1BQU0sRUFBRTtZQUNWLE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLGNBQWMsQ0FBQyxZQUFpQjtRQUM5QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM3QyxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2hELE9BQU8sV0FBVyxDQUFDO1NBQ3BCO1FBQ0QsMkJBQTJCO2FBQ3RCO1lBQ0gsT0FBTyxFQUFFLENBQUM7U0FDWDtJQUNILENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsZUFBZSxDQUFDLEdBQVEsRUFBRSxLQUFVO1FBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsMEJBQTBCO0lBQzFCLFlBQVksQ0FBQyxTQUFpQjtRQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLGVBQWU7UUFDYixNQUFNLE9BQU8sR0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3pDLEtBQUssTUFBTSxVQUFVLElBQUksT0FBTyxFQUFFO1lBQ2hDLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDaEM7U0FDRjtJQUNILENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsb0NBQW9DO0lBQ3BDLHFHQUFxRztJQUNyRyxrRkFBa0Y7SUFDbEYsNkNBQTZDO0lBQzdDLG1DQUFtQztJQUNuQyxlQUFlO0lBQ2YscUJBQXFCO0lBQ3JCLFFBQVE7SUFDUixTQUFTO0lBQ1QsSUFBSTtJQUVKLGtCQUFrQjtJQUNsQixhQUFhLENBQUMsSUFBWSxFQUFFLEtBQWEsRUFBRSxZQUFvQjtRQUM3RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQy9ELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFlBQVksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQzs7d0hBaEVVLDJCQUEyQjs0SEFBM0IsMkJBQTJCLGNBRjFCLE1BQU07MkZBRVAsMkJBQTJCO2tCQUh2QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJ25neC1jb29raWUtc2VydmljZSc7XHJcbmltcG9ydCB7IEdsb2JhbENvbnN0YW50cyB9IGZyb20gJy4uL21vZGVsL2RhdGFfbW9kZWwnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29va2llU3RvcmFnZU1hbmFnZXJTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvb2tpZTogQ29va2llU2VydmljZSwgcHJpdmF0ZSBfaHR0cDogSHR0cENsaWVudCkge31cclxuXHJcbiAgLy9DaGVjayBpZiBjb29raWVzIGlzIHNldCBvciBub3RcclxuICBjaGVja3NldENvb2tpZXMoY29va2llc1BhcmFtMTogYW55KSB7XHJcbiAgICBsZXQgc3RhdHVzID0gdGhpcy5jb29raWUuY2hlY2soY29va2llc1BhcmFtMSk7XHJcbiAgICBpZiAoc3RhdHVzKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9nZXQgY29va2llcyB2YWx1ZVxyXG4gIGdldENvb2tpZVZhbHVlKGNvb2tpZXNQYXJhbTogYW55KSB7XHJcbiAgICBsZXQgc3RhdHVzID0gdGhpcy5jb29raWUuY2hlY2soY29va2llc1BhcmFtKTtcclxuICAgIGlmIChzdGF0dXMpIHtcclxuICAgICAgbGV0IGNvb2tpZVZhbHVlID0gdGhpcy5jb29raWUuZ2V0KGNvb2tpZXNQYXJhbSk7XHJcbiAgICAgIHJldHVybiBjb29raWVWYWx1ZTtcclxuICAgIH1cclxuICAgIC8vV2hhdCBpZiBjb29raWVzIG5vdCBmb3VuZFxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vU2V0IGNvb2tpZXMgdmFsdWVcclxuICBzZXRDb29raWVzVmFsdWUoa2V5OiBhbnksIHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuY29va2llLnNldChrZXksIHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8vRGVsZXRlIGEgc3BlY2lmaWMgY29va2llXHJcbiAgZGVsZXRlQ29va2llKGNvb2tpZUtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvb2tpZS5kZWxldGUoY29va2llS2V5KTtcclxuICB9XHJcblxyXG4gIC8vRGVsZXRlIEFsbCBjb29raWVcclxuICBjbGVhckFsbENvb2tpZXMoKSB7XHJcbiAgICBjb25zdCBjb29raWVzOiB7fSA9IHRoaXMuY29va2llLmdldEFsbCgpO1xyXG4gICAgZm9yIChjb25zdCBjb29raWVOYW1lIGluIGNvb2tpZXMpIHtcclxuICAgICAgaWYgKGNvb2tpZXMuaGFzT3duUHJvcGVydHkoY29va2llTmFtZSkpIHtcclxuICAgICAgICB0aGlzLmNvb2tpZS5kZWxldGUoY29va2llTmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vRGVsZXRlIEFsbCBjb29raWVcclxuICAvLyBjbGVhckNvb2tpZXNCeUFQSShwYXlsb2FkOiBhbnkpIHtcclxuICAvLyAgIGNvbnN0IGRlbENvb2tpZUVuZHBvaW50ID0gYCR7R2xvYmFsQ29uc3RhbnRzLmJhc2VVUkx9L3hhY2Nlc3MvYXBpL1NlY3VyZUFjY2Vzcy9jb29raWVzVXBkYXRpb25gO1xyXG4gIC8vICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdChkZWxDb29raWVFbmRwb2ludCwgcGF5bG9hZCkucGlwZShtYXAoKHJlc3BvbnNlOmFueSk9PntcclxuICAvLyAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlWydzdWNjZXNzJ10pIHtcclxuICAvLyAgICAgICByZXR1cm4gcmVzcG9uc2VbJ3Jlc3VsdCddO1xyXG4gIC8vICAgICB9IGVsc2Uge1xyXG4gIC8vICAgICAgIHJldHVybiBudWxsO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KSk7XHJcbiAgLy8gfVxyXG5cclxuICAvL1NldCBMb25nIGNvb2tpZXNcclxuICBzZXRMb25nQ29va2llKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgbWF4Q2h1bmtTaXplOiBudW1iZXIpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTWF0aC5jZWlsKHZhbHVlLmxlbmd0aCAvIG1heENodW5rU2l6ZSk7IGkrKykge1xyXG4gICAgICBjb25zdCBjaHVuayA9IHZhbHVlLnN1YnN0cmluZyhpICogbWF4Q2h1bmtTaXplLCAoaSArIDEpICogbWF4Q2h1bmtTaXplKTtcclxuICAgICAgdGhpcy5zZXRDb29raWVzVmFsdWUoYCR7bmFtZX1fJHtpfWAsIGNodW5rKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,55 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { LoggedInUserInfo } from '../model/data_model';
3
+ import * as i0 from "@angular/core";
4
+ export class EncrpdataService {
5
+ constructor() {
6
+ // private publicKey: string =
7
+ // '10234186980819816859565723471972110581900468266056266385607156653250136308259057583501560583440295112186917105135474383769292631464432088817050933329522683,65537';
8
+ this.privateKey = "";
9
+ }
10
+ getASCIIValue(text) {
11
+ let charCodeArr = [];
12
+ for (let i = 0; i < text.length; i++) {
13
+ let code = text.charCodeAt(i);
14
+ charCodeArr.push(BigInt(code));
15
+ }
16
+ return charCodeArr;
17
+ }
18
+ getModuleValue(arr, num1, num2) {
19
+ let numArr = [];
20
+ for (let i = 0; i < arr.length; i++) {
21
+ let code = arr[i] ** num2 % num1;
22
+ numArr.push(code);
23
+ }
24
+ return numArr;
25
+ }
26
+ getEncrpytedData(text) {
27
+ this.privateKey = LoggedInUserInfo.privateKey;
28
+ let key = this.privateKey.split(',');
29
+ const num1 = BigInt(key[0]);
30
+ const num2 = BigInt(key[1]);
31
+ //1. Convert string to phiN
32
+ let asciiValue = this.getASCIIValue(text);
33
+ //2. Get Mod of All Value
34
+ let ModValue = this.getModuleValue(asciiValue, num1, num2);
35
+ //3. Convert Arr to String
36
+ // let encodedText = ModValue.join('-');
37
+ const encodedText = ModValue.map(b => b.toString()).join('-');
38
+ return encodedText;
39
+ }
40
+ encodeToBase64(text) {
41
+ return btoa(text);
42
+ }
43
+ decodeToBase64(text) {
44
+ return atob(text);
45
+ }
46
+ }
47
+ EncrpdataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EncrpdataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
48
+ EncrpdataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EncrpdataService, providedIn: 'root' });
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EncrpdataService, decorators: [{
50
+ type: Injectable,
51
+ args: [{
52
+ providedIn: 'root',
53
+ }]
54
+ }], ctorParameters: function () { return []; } });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnBkYXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24taGVhZGVyLWxpYi9zcmMvbGliL3NlcnZpY2VzL2VuY3JwZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBS3ZELE1BQU0sT0FBTyxnQkFBZ0I7SUFJM0I7UUFIQSw4QkFBOEI7UUFDOUIseUtBQXlLO1FBQ2pLLGVBQVUsR0FBUyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRWhCLGFBQWEsQ0FBQyxJQUFZO1FBQ3hCLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUNyQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNwQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDaEM7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBR0QsY0FBYyxDQUFDLEdBQVEsRUFBRSxJQUFZLEVBQUUsSUFBWTtRQUNqRCxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbkMsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNuQjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFZO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxDQUFDO1FBQzlDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxHQUFXLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxNQUFNLElBQUksR0FBVyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEMsNEJBQTRCO1FBQzVCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFMUMseUJBQXlCO1FBQ3pCLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUzRCwwQkFBMEI7UUFDMUIsd0NBQXdDO1FBQ3ZDLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFTO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBUztRQUN0QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDOzs2R0FqRFUsZ0JBQWdCO2lIQUFoQixnQkFBZ0IsY0FGZixNQUFNOzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExvZ2dlZEluVXNlckluZm8gfSBmcm9tICcuLi9tb2RlbC9kYXRhX21vZGVsJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbmNycGRhdGFTZXJ2aWNlIHtcclxuICAvLyBwcml2YXRlIHB1YmxpY0tleTogc3RyaW5nID1cclxuICAvLyAgICcxMDIzNDE4Njk4MDgxOTgxNjg1OTU2NTcyMzQ3MTk3MjExMDU4MTkwMDQ2ODI2NjA1NjI2NjM4NTYwNzE1NjY1MzI1MDEzNjMwODI1OTA1NzU4MzUwMTU2MDU4MzQ0MDI5NTExMjE4NjkxNzEwNTEzNTQ3NDM4Mzc2OTI5MjYzMTQ2NDQzMjA4ODgxNzA1MDkzMzMyOTUyMjY4Myw2NTUzNyc7XHJcbiAgcHJpdmF0ZSBwcml2YXRlS2V5OiBzdHJpbmc9XCJcIjtcclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIGdldEFTQ0lJVmFsdWUodGV4dDogc3RyaW5nKSB7XHJcbiAgICBsZXQgY2hhckNvZGVBcnIgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgY29kZSA9IHRleHQuY2hhckNvZGVBdChpKTtcclxuICAgICAgY2hhckNvZGVBcnIucHVzaChCaWdJbnQoY29kZSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNoYXJDb2RlQXJyO1xyXG4gIH1cclxuICBcclxuXHJcbiAgZ2V0TW9kdWxlVmFsdWUoYXJyOiBhbnksIG51bTE6IGJpZ2ludCwgbnVtMjogYmlnaW50KSB7XHJcbiAgICBsZXQgbnVtQXJyID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgY29kZSA9IGFycltpXSAqKiBudW0yICUgbnVtMTtcclxuICAgICAgbnVtQXJyLnB1c2goY29kZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVtQXJyO1xyXG4gIH1cclxuXHJcbiAgZ2V0RW5jcnB5dGVkRGF0YSh0ZXh0OiBzdHJpbmcpIHtcclxuICAgIHRoaXMucHJpdmF0ZUtleSA9IExvZ2dlZEluVXNlckluZm8ucHJpdmF0ZUtleTtcclxuICAgIGxldCBrZXkgPSB0aGlzLnByaXZhdGVLZXkuc3BsaXQoJywnKTtcclxuICAgIGNvbnN0IG51bTE6IGJpZ2ludCA9IEJpZ0ludChrZXlbMF0pO1xyXG4gICAgY29uc3QgbnVtMjogYmlnaW50ID0gQmlnSW50KGtleVsxXSk7XHJcblxyXG4gICAgLy8xLiBDb252ZXJ0IHN0cmluZyB0byBwaGlOIFxyXG4gICAgbGV0IGFzY2lpVmFsdWUgPSB0aGlzLmdldEFTQ0lJVmFsdWUodGV4dCk7XHJcblxyXG4gICAgLy8yLiBHZXQgTW9kIG9mIEFsbCBWYWx1ZVxyXG4gICAgbGV0IE1vZFZhbHVlID0gdGhpcy5nZXRNb2R1bGVWYWx1ZShhc2NpaVZhbHVlLCBudW0xLCBudW0yKTtcclxuXHJcbiAgICAvLzMuIENvbnZlcnQgQXJyIHRvIFN0cmluZ1xyXG4gICAgLy8gbGV0IGVuY29kZWRUZXh0ID0gTW9kVmFsdWUuam9pbignLScpO1xyXG4gICAgIGNvbnN0IGVuY29kZWRUZXh0ID0gTW9kVmFsdWUubWFwKGIgPT4gYi50b1N0cmluZygpKS5qb2luKCctJyk7XHJcbiAgICByZXR1cm4gZW5jb2RlZFRleHQ7XHJcbiAgfVxyXG5cclxuICBlbmNvZGVUb0Jhc2U2NCh0ZXh0OiBhbnkpIHtcclxuICAgIHJldHVybiBidG9hKHRleHQpO1xyXG4gIH1cclxuXHJcbiAgZGVjb2RlVG9CYXNlNjQodGV4dDogYW55KSB7XHJcbiAgICByZXR1cm4gYXRvYih0ZXh0KTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,207 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { StorageService } from './storage.service';
3
+ import { COOKIECONSTANT, LoggedInUserInfo } from '../model/data_model';
4
+ import * as bigintCryptoUtils from 'bigint-crypto-utils';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "./storage.service";
7
+ export class EncrydecrydataService {
8
+ constructor(_storageService) {
9
+ this._storageService = _storageService;
10
+ this.phiN = BigInt('1439652808780798693078119762209596147168096953796219172262910821317967061987350219660913015278464376519592636923598633193936864497263640780784805168728449');
11
+ this.m = BigInt('1439652808780798693078119762209596147168096953796219172262910821317967061987270868696269635759315523684521986922202953647194318017157636815317250179926320');
12
+ this.Genrator = 5;
13
+ this.min = 10000000;
14
+ this.max = 10000000 * 10000000;
15
+ }
16
+ generate() {
17
+ this.randomPrime = this.generateRandomPrime(this.min, this.max);
18
+ let code = bigintCryptoUtils.modPow(this.Genrator, BigInt(this.randomPrime), this.phiN);
19
+ return code;
20
+ }
21
+ process(key) {
22
+ let secretcode = bigintCryptoUtils.modPow(BigInt(key), BigInt(this.randomPrime), this.phiN);
23
+ // console.log('Private Pro Key: ', secretcode);
24
+ this._storageService.saveData(COOKIECONSTANT.ERRORCODE, secretcode.toString());
25
+ }
26
+ encryptViaCrypto(normalText) {
27
+ const code = this.getSecretCode();
28
+ const encryptedMessagedata = this.encryptMessage(normalText, code);
29
+ return encryptedMessagedata;
30
+ }
31
+ decryptViaCrypto(cipherText) {
32
+ const decryptedData = this.base64ToUint8Array(cipherText);
33
+ const code = this.getSecretCode();
34
+ let decryptdata = this.decrypt(decryptedData, code);
35
+ let decryptdatastr = this.bytesToString(decryptdata);
36
+ return decryptdatastr;
37
+ }
38
+ decryptResponseViaCrypto(cipherText) {
39
+ const code = String(this.getPublicKey());
40
+ const decryptdata = this.decrypt123(cipherText, code);
41
+ return decryptdata;
42
+ }
43
+ //todo amit
44
+ // private decrypt123(messageme: string, key: string): string {
45
+ // let bigKey: bigint = BigInt(key);
46
+ // let bytes: string = atob(messageme);
47
+ // let decryptedBytes: number[] = [];
48
+ // for (let i = 0; i < bytes.length; i++) {
49
+ // let byteValue: bigint = BigInt(bytes.charCodeAt(i));
50
+ // byteValue = (byteValue - bigKey) % 256n;
51
+ // if (byteValue < 0n) {
52
+ // byteValue = 256n + byteValue;
53
+ // }
54
+ // decryptedBytes.push(Number(byteValue));
55
+ // }
56
+ // let decryptedMessage: string = String.fromCharCode.apply(
57
+ // null,
58
+ // decryptedBytes
59
+ // );
60
+ // return decryptedMessage;
61
+ // }
62
+ //new amit
63
+ decrypt123(messageme, key) {
64
+ const bigKey = BigInt(key);
65
+ const bytes = atob(messageme);
66
+ const decryptedBytes = [];
67
+ for (let i = 0; i < bytes.length; i++) {
68
+ let byteValue = BigInt(bytes.charCodeAt(i));
69
+ byteValue = (byteValue - bigKey) % BigInt(256);
70
+ if (byteValue < BigInt(0)) {
71
+ byteValue = BigInt(256) + byteValue;
72
+ }
73
+ decryptedBytes.push(Number(byteValue));
74
+ }
75
+ return String.fromCharCode(...decryptedBytes);
76
+ }
77
+ encryptMessage(message, sharedSecret) {
78
+ const messageBytes = new TextEncoder().encode(message);
79
+ const encryptedMessage = this.encrypt(messageBytes, sharedSecret);
80
+ // console.log(encryptedMessage);
81
+ return this.encryptMessageToBase64(encryptedMessage);
82
+ //return encryptedMessage;
83
+ }
84
+ base64ToUint8Array(base64String) {
85
+ const decodedString = atob(base64String);
86
+ const uint8Array = new Uint8Array(decodedString.length);
87
+ for (let i = 0; i < decodedString.length; i++) {
88
+ uint8Array[i] = decodedString.charCodeAt(i);
89
+ }
90
+ return uint8Array;
91
+ }
92
+ bytesToString(bytes) {
93
+ let str = '';
94
+ for (let i = 0; i < bytes.length; i++) {
95
+ str += String.fromCharCode(bytes[i]);
96
+ }
97
+ return str;
98
+ }
99
+ encryptMessageToBase64(encryptedMessage) {
100
+ const encryptedArray = Array.from(encryptedMessage);
101
+ const messageString = String.fromCharCode.apply(null, encryptedArray);
102
+ const base64String = btoa(messageString);
103
+ return base64String;
104
+ }
105
+ bigintToBytes(key) {
106
+ const hexString = key.toString(16);
107
+ const byteLength = Math.ceil(hexString.length / 2);
108
+ const bytes = new Uint8Array(byteLength);
109
+ let i = hexString.length;
110
+ let j = 0;
111
+ while (i > 0) {
112
+ bytes[j++] = parseInt(hexString.substring(Math.max(i - 2, 0), i), 16);
113
+ i -= 2;
114
+ }
115
+ return bytes;
116
+ }
117
+ encrypt(data, key) {
118
+ const keyBytes = this.bigintToBytes(key);
119
+ const encryptedData = new Uint8Array(data.length);
120
+ for (let i = 0; i < data.length; i++) {
121
+ encryptedData[i] = data[i] ^ keyBytes[i % keyBytes.length];
122
+ }
123
+ return encryptedData;
124
+ }
125
+ decrypt(data, key) {
126
+ return this.encrypt(data, key);
127
+ }
128
+ generateRandomPrime(min, max) {
129
+ const isPrime = (num) => {
130
+ if (num <= 1)
131
+ return false;
132
+ if (num <= 3)
133
+ return true;
134
+ if (num % 2 === 0 || num % 3 === 0)
135
+ return false;
136
+ let i = 5;
137
+ while (i * i <= num) {
138
+ if (num % i === 0 || num % (i + 2) === 0)
139
+ return false;
140
+ i += 6;
141
+ }
142
+ return true;
143
+ };
144
+ let prime;
145
+ do {
146
+ prime = Math.floor(Math.random() * (max - min + 1)) + min;
147
+ } while (!isPrime(prime));
148
+ return prime;
149
+ }
150
+ getSecretCode() {
151
+ //todo Amit -
152
+ // const key = this._storageService.getData(COOKIECONSTANT.ERRORCODE);
153
+ const key = this._storageService.getData(COOKIECONSTANT.ERRORCODE) ?? '0000';
154
+ return this.convertToBigInt(key);
155
+ }
156
+ convertToBigInt(value) {
157
+ try {
158
+ return BigInt(value);
159
+ }
160
+ catch {
161
+ return BigInt('0000');
162
+ }
163
+ }
164
+ getPublicKey() {
165
+ const publicKey = LoggedInUserInfo.privateKey;
166
+ // Check if publicKey is undefined, null, or empty
167
+ if (!publicKey) {
168
+ console.error('Public key is missing.');
169
+ return this.convertToBigInt('0');
170
+ }
171
+ const KeyArr = publicKey.split(',');
172
+ if (KeyArr.length === 0 || !KeyArr[0]) {
173
+ return this.convertToBigInt('0');
174
+ }
175
+ const keySegment = KeyArr[0];
176
+ // const keySegment = KeyArr[0].slice(0, 10);
177
+ // const keySegment = this.getSlicePublicKey(KeyArr[0]);
178
+ if (!keySegment) {
179
+ return this.convertToBigInt('0');
180
+ }
181
+ try {
182
+ return this.convertToBigInt(keySegment);
183
+ }
184
+ catch (error) {
185
+ return this.convertToBigInt('0');
186
+ }
187
+ }
188
+ getSlicePublicKey(key) {
189
+ const subString = key.length >= 20 ? key.substring(0, 20) : key;
190
+ const uniqueKey = this.getUniqueLetter(subString);
191
+ return uniqueKey;
192
+ }
193
+ getUniqueLetter(text) {
194
+ const textSet = new Set(text);
195
+ const uniqueString = [...textSet].join('');
196
+ return uniqueString;
197
+ }
198
+ }
199
+ EncrydecrydataService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EncrydecrydataService, deps: [{ token: i1.StorageService }], target: i0.ɵɵFactoryTarget.Injectable });
200
+ EncrydecrydataService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EncrydecrydataService, providedIn: 'root' });
201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EncrydecrydataService, decorators: [{
202
+ type: Injectable,
203
+ args: [{
204
+ providedIn: 'root',
205
+ }]
206
+ }], ctorParameters: function () { return [{ type: i1.StorageService }]; } });
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlkZWNyeWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbi1oZWFkZXItbGliL3NyYy9saWIvc2VydmljZXMvZW5jcnlkZWNyeWRhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkUsT0FBTyxLQUFLLGlCQUFpQixNQUFNLHFCQUFxQixDQUFDOzs7QUFLekQsTUFBTSxPQUFPLHFCQUFxQjtJQVloQyxZQUFvQixlQUErQjtRQUEvQixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFYbkQsU0FBSSxHQUFHLE1BQU0sQ0FDWCw0SkFBNEosQ0FDN0osQ0FBQztRQUNGLE1BQUMsR0FBRyxNQUFNLENBQ1IsNEpBQTRKLENBQzdKLENBQUM7UUFDRixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsUUFBRyxHQUFHLFFBQVEsQ0FBQztRQUNmLFFBQUcsR0FBRyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBRzRCLENBQUM7SUFFaEQsUUFBUTtRQUNiLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hFLElBQUksSUFBSSxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FDakMsSUFBSSxDQUFDLFFBQVEsRUFDYixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUN4QixJQUFJLENBQUMsSUFBSSxDQUNWLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxPQUFPLENBQUMsR0FBVztRQUN4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O0lBQ0gsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEdBQVc7UUFDbkMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDaEUsTUFBTSxTQUFTLEdBQVcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8sZUFBZSxDQUFDLElBQVk7UUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzQyxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDOztrSEExT1UscUJBQXFCO3NIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTsyRkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ09PS0lFQ09OU1RBTlQsIExvZ2dlZEluVXNlckluZm8gfSBmcm9tICcuLi9tb2RlbC9kYXRhX21vZGVsJztcclxuaW1wb3J0ICogYXMgYmlnaW50Q3J5cHRvVXRpbHMgZnJvbSAnYmlnaW50LWNyeXB0by11dGlscyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRW5jcnlkZWNyeWRhdGFTZXJ2aWNlIHtcclxuICBwaGlOID0gQmlnSW50KFxyXG4gICAgJzE0Mzk2NTI4MDg3ODA3OTg2OTMwNzgxMTk3NjIyMDk1OTYxNDcxNjgwOTY5NTM3OTYyMTkxNzIyNjI5MTA4MjEzMTc5NjcwNjE5ODczNTAyMTk2NjA5MTMwMTUyNzg0NjQzNzY1MTk1OTI2MzY5MjM1OTg2MzMxOTM5MzY4NjQ0OTcyNjM2NDA3ODA3ODQ4MDUxNjg3Mjg0NDknXHJcbiAgKTtcclxuICBtID0gQmlnSW50KFxyXG4gICAgJzE0Mzk2NTI4MDg3ODA3OTg2OTMwNzgxMTk3NjIyMDk1OTYxNDcxNjgwOTY5NTM3OTYyMTkxNzIyNjI5MTA4MjEzMTc5NjcwNjE5ODcyNzA4Njg2OTYyNjk2MzU3NTkzMTU1MjM2ODQ1MjE5ODY5MjIyMDI5NTM2NDcxOTQzMTgwMTcxNTc2MzY4MTUzMTcyNTAxNzk5MjYzMjAnXHJcbiAgKTtcclxuICBHZW5yYXRvciA9IDU7XHJcbiAgbWluID0gMTAwMDAwMDA7XHJcbiAgbWF4ID0gMTAwMDAwMDAgKiAxMDAwMDAwMDtcclxuICByYW5kb21QcmltZTogYW55O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UpIHt9XHJcblxyXG4gIHB1YmxpYyBnZW5lcmF0ZSgpIHtcclxuICAgIHRoaXMucmFuZG9tUHJpbWUgPSB0aGlzLmdlbmVyYXRlUmFuZG9tUHJpbWUodGhpcy5taW4sIHRoaXMubWF4KTtcclxuICAgIGxldCBjb2RlID0gYmlnaW50Q3J5cHRvVXRpbHMubW9kUG93KFxyXG4gICAgICB0aGlzLkdlbnJhdG9yLFxyXG4gICAgICBCaWdJbnQodGhpcy5yYW5kb21QcmltZSksXHJcbiAgICAgIHRoaXMucGhpTlxyXG4gICAgKTtcclxuICAgIHJldHVybiBjb2RlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHByb2Nlc3Moa2V5OiBzdHJpbmcpIHtcclxuICAgIGxldCBzZWNyZXRjb2RlID0gYmlnaW50Q3J5cHRvVXRpbHMubW9kUG93KFxyXG4gICAgICBCaWdJbnQoa2V5KSxcclxuICAgICAgQmlnSW50KHRoaXMucmFuZG9tUHJpbWUpLFxyXG4gICAgICB0aGlzLnBoaU5cclxuICAgICk7XHJcblxyXG4gICAgLy8gY29uc29sZS5sb2coJ1ByaXZhdGUgUHJvIEtleTogJywgc2VjcmV0Y29kZSk7XHJcbiAgICB0aGlzLl9zdG9yYWdlU2VydmljZS5zYXZlRGF0YShcclxuICAgICAgQ09PS0lFQ09OU1RBTlQuRVJST1JDT0RFLFxyXG4gICAgICBzZWNyZXRjb2RlLnRvU3RyaW5nKClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW5jcnlwdFZpYUNyeXB0byhub3JtYWxUZXh0OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGNvZGUgPSB0aGlzLmdldFNlY3JldENvZGUoKTtcclxuICAgIGNvbnN0IGVuY3J5cHRlZE1lc3NhZ2VkYXRhID0gdGhpcy5lbmNyeXB0TWVzc2FnZShub3JtYWxUZXh0LCBjb2RlKTtcclxuICAgIHJldHVybiBlbmNyeXB0ZWRNZXNzYWdlZGF0YTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWNyeXB0VmlhQ3J5cHRvKGNpcGhlclRleHQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgZGVjcnlwdGVkRGF0YSA9IHRoaXMuYmFzZTY0VG9VaW50OEFycmF5KGNpcGhlclRleHQpO1xyXG4gICAgY29uc3QgY29kZSA9IHRoaXMuZ2V0U2VjcmV0Q29kZSgpO1xyXG4gICAgbGV0IGRlY3J5cHRkYXRhID0gdGhpcy5kZWNyeXB0KGRlY3J5cHRlZERhdGEsIGNvZGUpO1xyXG4gICAgbGV0IGRlY3J5cHRkYXRhc3RyID0gdGhpcy5ieXRlc1RvU3RyaW5nKGRlY3J5cHRkYXRhKTtcclxuICAgIHJldHVybiBkZWNyeXB0ZGF0YXN0cjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWNyeXB0UmVzcG9uc2VWaWFDcnlwdG8oY2lwaGVyVGV4dDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBjb2RlOiBzdHJpbmcgPSBTdHJpbmcodGhpcy5nZXRQdWJsaWNLZXkoKSk7XHJcbiAgICBjb25zdCBkZWNyeXB0ZGF0YSA9IHRoaXMuZGVjcnlwdDEyMyhjaXBoZXJUZXh0LCBjb2RlKTtcclxuICAgIHJldHVybiBkZWNyeXB0ZGF0YTtcclxuICB9XHJcblxyXG4gIC8vdG9kbyBhbWl0XHJcbiAgLy8gcHJpdmF0ZSBkZWNyeXB0MTIzKG1lc3NhZ2VtZTogc3RyaW5nLCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgLy8gICBsZXQgYmlnS2V5OiBiaWdpbnQgPSBCaWdJbnQoa2V5KTtcclxuICAvLyAgIGxldCBieXRlczogc3RyaW5nID0gYXRvYihtZXNzYWdlbWUpO1xyXG4gIC8vICAgbGV0IGRlY3J5cHRlZEJ5dGVzOiBudW1iZXJbXSA9IFtdO1xyXG4gIC8vICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkrKykge1xyXG4gIC8vICAgICBsZXQgYnl0ZVZhbHVlOiBiaWdpbnQgPSBCaWdJbnQoYnl0ZXMuY2hhckNvZGVBdChpKSk7XHJcbiAgLy8gICAgIGJ5dGVWYWx1ZSA9IChieXRlVmFsdWUgLSBiaWdLZXkpICUgMjU2bjtcclxuICAvLyAgICAgaWYgKGJ5dGVWYWx1ZSA8IDBuKSB7XHJcbiAgLy8gICAgICAgYnl0ZVZhbHVlID0gMjU2biArIGJ5dGVWYWx1ZTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgICBkZWNyeXB0ZWRCeXRlcy5wdXNoKE51bWJlcihieXRlVmFsdWUpKTtcclxuICAvLyAgIH1cclxuICAvLyAgIGxldCBkZWNyeXB0ZWRNZXNzYWdlOiBzdHJpbmcgPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFxyXG4gIC8vICAgICBudWxsLFxyXG4gIC8vICAgICBkZWNyeXB0ZWRCeXRlc1xyXG4gIC8vICAgKTtcclxuICAvLyAgIHJldHVybiBkZWNyeXB0ZWRNZXNzYWdlO1xyXG4gIC8vIH1cclxuXHJcbiAgLy9uZXcgYW1pdFxyXG4gIHByaXZhdGUgZGVjcnlwdDEyMyhtZXNzYWdlbWU6IHN0cmluZywga2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgYmlnS2V5ID0gQmlnSW50KGtleSk7XHJcbiAgICBjb25zdCBieXRlcyA9IGF0b2IobWVzc2FnZW1lKTtcclxuICAgIGNvbnN0IGRlY3J5cHRlZEJ5dGVzOiBudW1iZXJbXSA9IFtdO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGJ5dGVWYWx1ZSA9IEJpZ0ludChieXRlcy5jaGFyQ29kZUF0KGkpKTtcclxuICAgICAgYnl0ZVZhbHVlID0gKGJ5dGVWYWx1ZSAtIGJpZ0tleSkgJSBCaWdJbnQoMjU2KTtcclxuICAgICAgaWYgKGJ5dGVWYWx1ZSA8IEJpZ0ludCgwKSkge1xyXG4gICAgICAgIGJ5dGVWYWx1ZSA9IEJpZ0ludCgyNTYpICsgYnl0ZVZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGRlY3J5cHRlZEJ5dGVzLnB1c2goTnVtYmVyKGJ5dGVWYWx1ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLmRlY3J5cHRlZEJ5dGVzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW5jcnlwdE1lc3NhZ2UobWVzc2FnZTogc3RyaW5nLCBzaGFyZWRTZWNyZXQ6IGJpZ2ludCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBtZXNzYWdlQnl0ZXMgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUobWVzc2FnZSk7XHJcblxyXG4gICAgY29uc3QgZW5jcnlwdGVkTWVzc2FnZSA9IHRoaXMuZW5jcnlwdChtZXNzYWdlQnl0ZXMsIHNoYXJlZFNlY3JldCk7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhlbmNyeXB0ZWRNZXNzYWdlKTtcclxuICAgIHJldHVybiB0aGlzLmVuY3J5cHRNZXNzYWdlVG9CYXNlNjQoZW5jcnlwdGVkTWVzc2FnZSk7XHJcbiAgICAvL3JldHVybiBlbmNyeXB0ZWRNZXNzYWdlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBiYXNlNjRUb1VpbnQ4QXJyYXkoYmFzZTY0U3RyaW5nOiBzdHJpbmcpOiBVaW50OEFycmF5IHtcclxuICAgIGNvbnN0IGRlY29kZWRTdHJpbmcgPSBhdG9iKGJhc2U2NFN0cmluZyk7XHJcblxyXG4gICAgY29uc3QgdWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KGRlY29kZWRTdHJpbmcubGVuZ3RoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVjb2RlZFN0cmluZy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB1aW50OEFycmF5W2ldID0gZGVjb2RlZFN0cmluZy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB1aW50OEFycmF5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBieXRlc1RvU3RyaW5nKGJ5dGVzOiBVaW50OEFycmF5KTogc3RyaW5nIHtcclxuICAgIGxldCBzdHIgPSAnJztcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0cjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW5jcnlwdE1lc3NhZ2VUb0Jhc2U2NChlbmNyeXB0ZWRNZXNzYWdlOiBVaW50OEFycmF5KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGVuY3J5cHRlZEFycmF5ID0gQXJyYXkuZnJvbShlbmNyeXB0ZWRNZXNzYWdlKTtcclxuICAgIGNvbnN0IG1lc3NhZ2VTdHJpbmcgPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIGVuY3J5cHRlZEFycmF5KTtcclxuICAgIGNvbnN0IGJhc2U2NFN0cmluZyA9IGJ0b2EobWVzc2FnZVN0cmluZyk7XHJcbiAgICByZXR1cm4gYmFzZTY0U3RyaW5nO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBiaWdpbnRUb0J5dGVzKGtleTogYmlnaW50KTogVWludDhBcnJheSB7XHJcbiAgICBjb25zdCBoZXhTdHJpbmcgPSBrZXkudG9TdHJpbmcoMTYpO1xyXG4gICAgY29uc3QgYnl0ZUxlbmd0aCA9IE1hdGguY2VpbChoZXhTdHJpbmcubGVuZ3RoIC8gMik7XHJcbiAgICBjb25zdCBieXRlcyA9IG5ldyBVaW50OEFycmF5KGJ5dGVMZW5ndGgpO1xyXG4gICAgbGV0IGkgPSBoZXhTdHJpbmcubGVuZ3RoO1xyXG4gICAgbGV0IGogPSAwO1xyXG4gICAgd2hpbGUgKGkgPiAwKSB7XHJcbiAgICAgIGJ5dGVzW2orK10gPSBwYXJzZUludChoZXhTdHJpbmcuc3Vic3RyaW5nKE1hdGgubWF4KGkgLSAyLCAwKSwgaSksIDE2KTtcclxuICAgICAgaSAtPSAyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJ5dGVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbmNyeXB0KGRhdGE6IFVpbnQ4QXJyYXksIGtleTogYmlnaW50KTogVWludDhBcnJheSB7XHJcbiAgICBjb25zdCBrZXlCeXRlcyA9IHRoaXMuYmlnaW50VG9CeXRlcyhrZXkpO1xyXG4gICAgY29uc3QgZW5jcnlwdGVkRGF0YSA9IG5ldyBVaW50OEFycmF5KGRhdGEubGVuZ3RoKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZW5jcnlwdGVkRGF0YVtpXSA9IGRhdGFbaV0gXiBrZXlCeXRlc1tpICUga2V5Qnl0ZXMubGVuZ3RoXTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZW5jcnlwdGVkRGF0YTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVjcnlwdChkYXRhOiBVaW50OEFycmF5LCBrZXk6IGJpZ2ludCk6IFVpbnQ4QXJyYXkge1xyXG4gICAgcmV0dXJuIHRoaXMuZW5jcnlwdChkYXRhLCBrZXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZVJhbmRvbVByaW1lKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBjb25zdCBpc1ByaW1lID0gKG51bTogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGlmIChudW0gPD0gMSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBpZiAobnVtIDw9IDMpIHJldHVybiB0cnVlO1xyXG4gICAgICBpZiAobnVtICUgMiA9PT0gMCB8fCBudW0gJSAzID09PSAwKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgIGxldCBpID0gNTtcclxuICAgICAgd2hpbGUgKGkgKiBpIDw9IG51bSkge1xyXG4gICAgICAgIGlmIChudW0gJSBpID09PSAwIHx8IG51bSAlIChpICsgMikgPT09IDApIHJldHVybiBmYWxzZTtcclxuICAgICAgICBpICs9IDY7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG5cclxuICAgIGxldCBwcmltZTtcclxuICAgIGRvIHtcclxuICAgICAgcHJpbWUgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkpICsgbWluO1xyXG4gICAgfSB3aGlsZSAoIWlzUHJpbWUocHJpbWUpKTtcclxuICAgIHJldHVybiBwcmltZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U2VjcmV0Q29kZSgpOiBiaWdpbnQge1xyXG4gICAgLy90b2RvIEFtaXQgLVxyXG4gICAgLy8gY29uc3Qga2V5ID0gdGhpcy5fc3RvcmFnZVNlcnZpY2UuZ2V0RGF0YShDT09LSUVDT05TVEFOVC5FUlJPUkNPREUpO1xyXG4gICAgY29uc3Qga2V5ID1cclxuICAgICAgdGhpcy5fc3RvcmFnZVNlcnZpY2UuZ2V0RGF0YShDT09LSUVDT05TVEFOVC5FUlJPUkNPREUpID8/ICcwMDAwJztcclxuICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0JpZ0ludChrZXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb252ZXJ0VG9CaWdJbnQodmFsdWU6IHN0cmluZyk6IGJpZ2ludCB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gQmlnSW50KHZhbHVlKTtcclxuICAgIH0gY2F0Y2gge1xyXG4gICAgICByZXR1cm4gQmlnSW50KCcwMDAwJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFB1YmxpY0tleSgpIHtcclxuICAgIGNvbnN0IHB1YmxpY0tleTogc3RyaW5nIHwgdW5kZWZpbmVkID0gTG9nZ2VkSW5Vc2VySW5mby5wcml2YXRlS2V5O1xyXG5cclxuICAgIC8vIENoZWNrIGlmIHB1YmxpY0tleSBpcyB1bmRlZmluZWQsIG51bGwsIG9yIGVtcHR5XHJcbiAgICBpZiAoIXB1YmxpY0tleSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdQdWJsaWMga2V5IGlzIG1pc3NpbmcuJyk7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0JpZ0ludCgnMCcpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgS2V5QXJyID0gcHVibGljS2V5LnNwbGl0KCcsJyk7XHJcblxyXG4gICAgaWYgKEtleUFyci5sZW5ndGggPT09IDAgfHwgIUtleUFyclswXSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9CaWdJbnQoJzAnKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBrZXlTZWdtZW50ID0gS2V5QXJyWzBdO1xyXG4gICAgLy8gY29uc3Qga2V5U2VnbWVudCA9IEtleUFyclswXS5zbGljZSgwLCAxMCk7XHJcbiAgICAvLyBjb25zdCBrZXlTZWdtZW50ID0gdGhpcy5nZXRTbGljZVB1YmxpY0tleShLZXlBcnJbMF0pO1xyXG5cclxuICAgIGlmICgha2V5U2VnbWVudCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9CaWdJbnQoJzAnKTtcclxuICAgIH1cclxuXHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9CaWdJbnQoa2V5U2VnbWVudCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9CaWdJbnQoJzAnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U2xpY2VQdWJsaWNLZXkoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc3ViU3RyaW5nID0ga2V5Lmxlbmd0aCA+PSAyMCA/IGtleS5zdWJzdHJpbmcoMCwgMjApIDoga2V5O1xyXG4gICAgY29uc3QgdW5pcXVlS2V5OiBzdHJpbmcgPSB0aGlzLmdldFVuaXF1ZUxldHRlcihzdWJTdHJpbmcpO1xyXG4gICAgcmV0dXJuIHVuaXF1ZUtleTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VW5pcXVlTGV0dGVyKHRleHQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgdGV4dFNldCA9IG5ldyBTZXQodGV4dCk7XHJcbiAgICBjb25zdCB1bmlxdWVTdHJpbmcgPSBbLi4udGV4dFNldF0uam9pbignJyk7XHJcbiAgICByZXR1cm4gdW5pcXVlU3RyaW5nO1xyXG4gIH1cclxufVxyXG4iXX0=