@lifeready/core 1.0.21 → 1.0.22

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 (228) hide show
  1. package/bundles/lifeready-core.umd.js +9745 -9700
  2. package/bundles/lifeready-core.umd.js.map +1 -1
  3. package/bundles/lifeready-core.umd.min.js +2 -2
  4. package/bundles/lifeready-core.umd.min.js.map +1 -1
  5. package/esm2015/lib/_common/run-outside-angular.js +2 -2
  6. package/esm2015/lib/_common/types.js +1 -1
  7. package/esm2015/lib/api/lr-apollo.service.js +3 -3
  8. package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +3 -3
  9. package/esm2015/lib/api/query-processor/common-processors.service.js +3 -3
  10. package/esm2015/lib/api/query-processor/query-processor.service.js +4 -4
  11. package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +6 -5
  12. package/esm2015/lib/api/types/lr-graphql.types.js +1 -1
  13. package/esm2015/lib/auth/auth.gql.js +1 -28
  14. package/esm2015/lib/auth/auth.types.js +1 -1
  15. package/esm2015/lib/auth/life-ready-auth.service.js +32 -31
  16. package/esm2015/lib/category/category.gql.js +1 -1
  17. package/esm2015/lib/category/category.service.js +6 -6
  18. package/esm2015/lib/contact-card/contact-card.gql.js +79 -0
  19. package/esm2015/lib/contact-card/contact-card.service.js +154 -0
  20. package/esm2015/lib/contact-card/contact-card2.gql.js +29 -0
  21. package/esm2015/lib/contact-card/contact-card2.service.js +103 -0
  22. package/esm2015/lib/encryption/encryption.service.js +189 -0
  23. package/esm2015/lib/file-upload/file-upload.service.js +74 -0
  24. package/esm2015/lib/file-upload/file-upload.types.js +1 -0
  25. package/esm2015/lib/{auth → idle}/idle.service.js +7 -7
  26. package/esm2015/lib/{auth → idle}/idle.types.js +1 -1
  27. package/esm2015/lib/items2/item2.service.js +20 -20
  28. package/esm2015/lib/key/key-factory.service.js +237 -0
  29. package/esm2015/lib/{cryptography → key}/key-graph.service.js +10 -10
  30. package/esm2015/lib/key/key-meta.service.js +200 -0
  31. package/esm2015/lib/key/key.service.js +124 -0
  32. package/esm2015/lib/key/key.types.js +11 -0
  33. package/esm2015/lib/key-exchange/key-exchange.gql.js +188 -0
  34. package/esm2015/lib/key-exchange/key-exchange.service.js +443 -0
  35. package/esm2015/lib/key-exchange/key-exchange.types.js +7 -0
  36. package/esm2015/lib/key-exchange/key-exchange2.gql.js +171 -0
  37. package/esm2015/lib/key-exchange/key-exchange2.service.js +500 -0
  38. package/esm2015/lib/lbop/lbop.service.js +355 -0
  39. package/esm2015/lib/life-ready.module.js +2 -27
  40. package/esm2015/lib/lock/lock.gql.js +40 -0
  41. package/esm2015/lib/lock/lock.service.js +64 -0
  42. package/esm2015/lib/message/message.gql.js +32 -0
  43. package/esm2015/lib/message/message.service.js +116 -0
  44. package/esm2015/lib/message/message.types.js +1 -0
  45. package/esm2015/lib/password/password.gql.js +28 -0
  46. package/esm2015/lib/password/password.service.js +315 -0
  47. package/esm2015/lib/persist/persist.service.js +180 -0
  48. package/esm2015/lib/profile/profile-details.service.js +214 -0
  49. package/esm2015/lib/profile/profile.gql.js +97 -0
  50. package/esm2015/lib/profile/profile.service.js +169 -0
  51. package/esm2015/lib/profile/profile.types.js +34 -0
  52. package/esm2015/lib/record/record-attachment.service.js +15 -15
  53. package/esm2015/lib/record/record.service.js +3 -3
  54. package/esm2015/lib/register/register.service.js +172 -0
  55. package/esm2015/lib/scenario/scenario.controller.js +2 -2
  56. package/esm2015/lib/scenario/{scenario.gql.private.js → scenario.private.gql.js} +1 -1
  57. package/esm2015/lib/scenario/scenario.service.js +9 -9
  58. package/esm2015/lib/scenario/scenario.types.js +1 -1
  59. package/esm2015/lib/shared-contact-card/shared-contact-card.service.js +119 -0
  60. package/esm2015/lib/shared-contact-card/shared-contact-card2.gql.js +41 -0
  61. package/esm2015/lib/shared-contact-card/shared-contact-card2.service.js +117 -0
  62. package/esm2015/lib/slip39/slip39.service.js +169 -0
  63. package/esm2015/lib/time/time.service.js +146 -0
  64. package/esm2015/lib/tp-assembly/tp-assembly.js +365 -0
  65. package/esm2015/lib/tp-assembly/tp-assembly.private.gql.js +22 -0
  66. package/esm2015/lib/tp-assembly/tp-assembly.types.js +1 -0
  67. package/esm2015/lib/tp-password-reset/tp-password-reset-request.service.js +100 -0
  68. package/esm2015/lib/tp-password-reset/tp-password-reset-user.service.js +117 -0
  69. package/esm2015/lib/tp-password-reset/tp-password-reset.constants.js +4 -0
  70. package/esm2015/lib/tp-password-reset/tp-password-reset.controller.js +34 -0
  71. package/esm2015/lib/tp-password-reset/tp-password-reset.gql.js +74 -0
  72. package/esm2015/lib/tp-password-reset/tp-password-reset.private.gql.js +165 -0
  73. package/esm2015/lib/tp-password-reset/tp-password-reset.private.service.js +54 -0
  74. package/esm2015/lib/tp-password-reset/tp-password-reset.service.js +92 -0
  75. package/esm2015/lib/tp-password-reset/tp-password-reset.types.js +1 -0
  76. package/esm2015/lib/trusted-party/trusted-party.gql.js +148 -0
  77. package/esm2015/lib/trusted-party/trusted-party.service.js +326 -0
  78. package/esm2015/lib/trusted-party/trusted-party.types.js +41 -0
  79. package/esm2015/lib/trusted-party/trusted-party2.gql.js +64 -0
  80. package/esm2015/lib/trusted-party/trusted-party2.gql.private.js +25 -0
  81. package/esm2015/lib/trusted-party/trusted-party2.service.js +224 -0
  82. package/esm2015/lib/trusted-party/trusted-party2.types.js +1 -0
  83. package/esm2015/lib/two-factor/two-factor.service.js +74 -0
  84. package/esm2015/lib/user/user.gql.js +60 -0
  85. package/esm2015/lib/user/user.service.js +79 -0
  86. package/esm2015/lib/user/user.types.js +1 -0
  87. package/esm2015/lib/web-crypto/web-crypto.service.js +29 -0
  88. package/esm2015/lifeready-core.js +15 -13
  89. package/esm2015/public-api.js +49 -51
  90. package/fesm2015/lifeready-core.js +9232 -9214
  91. package/fesm2015/lifeready-core.js.map +1 -1
  92. package/lib/_common/types.d.ts +3 -1
  93. package/lib/api/lr-apollo.service.d.ts +1 -1
  94. package/lib/api/lr-graphql/lr-graphql.service.d.ts +1 -1
  95. package/lib/api/query-processor/common-processors.service.d.ts +1 -1
  96. package/lib/api/query-processor/query-processor.service.d.ts +1 -1
  97. package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +1 -1
  98. package/lib/api/types/lr-graphql.types.d.ts +11 -0
  99. package/lib/auth/auth.gql.d.ts +0 -3
  100. package/lib/auth/auth.types.d.ts +2 -2
  101. package/lib/auth/life-ready-auth.service.d.ts +12 -12
  102. package/lib/category/category.gql.d.ts +1 -1
  103. package/lib/category/category.service.d.ts +2 -2
  104. package/lib/{api → contact-card}/contact-card.service.d.ts +9 -9
  105. package/lib/contact-card/contact-card2.gql.d.ts +25 -0
  106. package/lib/{api → contact-card}/contact-card2.service.d.ts +11 -12
  107. package/lib/{cryptography → encryption}/encryption.service.d.ts +2 -2
  108. package/lib/{api/file.service.d.ts → file-upload/file-upload.service.d.ts} +3 -7
  109. package/lib/file-upload/file-upload.types.d.ts +5 -0
  110. package/lib/{auth → idle}/idle.service.d.ts +4 -4
  111. package/lib/items2/item2.service.d.ts +11 -11
  112. package/lib/{cryptography → key}/key-factory.service.d.ts +2 -2
  113. package/lib/{cryptography → key}/key-graph.service.d.ts +5 -5
  114. package/lib/{cryptography → key}/key-meta.service.d.ts +1 -1
  115. package/lib/{cryptography → key}/key.service.d.ts +2 -2
  116. package/lib/{cryptography/cryptography.types.d.ts → key/key.types.d.ts} +9 -13
  117. package/lib/{api → key-exchange}/key-exchange.service.d.ts +5 -5
  118. package/lib/{api → key-exchange}/key-exchange.types.d.ts +4 -4
  119. package/lib/{api → key-exchange}/key-exchange2.gql.d.ts +1 -1
  120. package/lib/{api → key-exchange}/key-exchange2.service.d.ts +71 -18
  121. package/lib/{auth → lbop}/lbop.service.d.ts +7 -7
  122. package/lib/{api → lock}/lock.gql.d.ts +1 -1
  123. package/lib/{api → lock}/lock.service.d.ts +1 -1
  124. package/lib/message/message.gql.d.ts +13 -0
  125. package/lib/message/message.service.d.ts +29 -0
  126. package/lib/message/message.types.d.ts +12 -0
  127. package/lib/password/password.gql.d.ts +3 -0
  128. package/lib/{auth → password}/password.service.d.ts +8 -8
  129. package/lib/{api → persist}/persist.service.d.ts +3 -3
  130. package/lib/{users → profile}/profile-details.service.d.ts +3 -3
  131. package/lib/{users → profile}/profile.gql.d.ts +2 -2
  132. package/lib/{users → profile}/profile.service.d.ts +6 -6
  133. package/lib/{users → profile}/profile.types.d.ts +1 -1
  134. package/lib/record/record-attachment.service.d.ts +6 -6
  135. package/lib/record/record.service.d.ts +1 -1
  136. package/lib/{auth → register}/register.service.d.ts +4 -4
  137. package/lib/scenario/scenario.controller.d.ts +1 -1
  138. package/lib/scenario/scenario.service.d.ts +2 -2
  139. package/lib/scenario/scenario.types.d.ts +1 -1
  140. package/lib/{api → shared-contact-card}/shared-contact-card.service.d.ts +9 -9
  141. package/lib/{api → shared-contact-card}/shared-contact-card2.gql.d.ts +1 -1
  142. package/lib/{api → shared-contact-card}/shared-contact-card2.service.d.ts +6 -6
  143. package/lib/{trusted-parties → tp-assembly}/tp-assembly.d.ts +7 -7
  144. package/lib/{trusted-parties → tp-assembly}/tp-assembly.types.d.ts +1 -1
  145. package/lib/{trusted-parties → tp-password-reset}/tp-password-reset-request.service.d.ts +4 -8
  146. package/lib/{trusted-parties → tp-password-reset}/tp-password-reset-user.service.d.ts +7 -13
  147. package/lib/{trusted-parties → tp-password-reset}/tp-password-reset.controller.d.ts +1 -1
  148. package/lib/tp-password-reset/tp-password-reset.gql.d.ts +63 -0
  149. package/lib/{trusted-parties/tp-password-reset.gql.d.ts → tp-password-reset/tp-password-reset.private.gql.d.ts} +1 -63
  150. package/lib/tp-password-reset/tp-password-reset.private.service.d.ts +59 -0
  151. package/lib/{trusted-parties → tp-password-reset}/tp-password-reset.service.d.ts +6 -89
  152. package/lib/tp-password-reset/tp-password-reset.types.d.ts +40 -0
  153. package/lib/{trusted-parties → trusted-party}/trusted-party.service.d.ts +7 -7
  154. package/lib/{trusted-parties → trusted-party}/trusted-party.types.d.ts +2 -3
  155. package/lib/{trusted-parties → trusted-party}/trusted-party2.gql.d.ts +0 -22
  156. package/lib/trusted-party/trusted-party2.gql.private.d.ts +23 -0
  157. package/lib/{trusted-parties → trusted-party}/trusted-party2.service.d.ts +11 -35
  158. package/lib/trusted-party/trusted-party2.types.d.ts +12 -0
  159. package/lib/{users → user}/user.gql.d.ts +1 -1
  160. package/lib/{users → user}/user.types.d.ts +1 -1
  161. package/lifeready-core.d.ts +14 -12
  162. package/lifeready-core.metadata.json +1 -1
  163. package/package.json +1 -1
  164. package/public-api.d.ts +48 -50
  165. package/esm2015/lib/api/contact-card.gql.js +0 -79
  166. package/esm2015/lib/api/contact-card.service.js +0 -154
  167. package/esm2015/lib/api/contact-card2.gql.js +0 -60
  168. package/esm2015/lib/api/contact-card2.service.js +0 -103
  169. package/esm2015/lib/api/file.service.js +0 -74
  170. package/esm2015/lib/api/key-exchange.gql.js +0 -188
  171. package/esm2015/lib/api/key-exchange.service.js +0 -442
  172. package/esm2015/lib/api/key-exchange.types.js +0 -7
  173. package/esm2015/lib/api/key-exchange2.gql.js +0 -171
  174. package/esm2015/lib/api/key-exchange2.service.js +0 -480
  175. package/esm2015/lib/api/lock.gql.js +0 -40
  176. package/esm2015/lib/api/lock.service.js +0 -64
  177. package/esm2015/lib/api/message.service.js +0 -138
  178. package/esm2015/lib/api/persist.service.js +0 -181
  179. package/esm2015/lib/api/shared-contact-card.service.js +0 -119
  180. package/esm2015/lib/api/shared-contact-card2.gql.js +0 -41
  181. package/esm2015/lib/api/shared-contact-card2.service.js +0 -117
  182. package/esm2015/lib/api/time.service.js +0 -146
  183. package/esm2015/lib/auth/lbop.service.js +0 -355
  184. package/esm2015/lib/auth/password.service.js +0 -315
  185. package/esm2015/lib/auth/register.service.js +0 -172
  186. package/esm2015/lib/auth/two-factor.service.js +0 -74
  187. package/esm2015/lib/cryptography/cryptography.types.js +0 -11
  188. package/esm2015/lib/cryptography/encryption.service.js +0 -189
  189. package/esm2015/lib/cryptography/key-factory.service.js +0 -237
  190. package/esm2015/lib/cryptography/key-meta.service.js +0 -200
  191. package/esm2015/lib/cryptography/key.service.js +0 -124
  192. package/esm2015/lib/cryptography/slip39.service.js +0 -169
  193. package/esm2015/lib/cryptography/web-crypto.service.js +0 -29
  194. package/esm2015/lib/trusted-parties/tp-assembly.gql.private.js +0 -22
  195. package/esm2015/lib/trusted-parties/tp-assembly.js +0 -365
  196. package/esm2015/lib/trusted-parties/tp-assembly.types.js +0 -1
  197. package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +0 -113
  198. package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +0 -129
  199. package/esm2015/lib/trusted-parties/tp-password-reset.constants.js +0 -4
  200. package/esm2015/lib/trusted-parties/tp-password-reset.controller.js +0 -34
  201. package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +0 -237
  202. package/esm2015/lib/trusted-parties/tp-password-reset.service.js +0 -95
  203. package/esm2015/lib/trusted-parties/trusted-party.gql.js +0 -148
  204. package/esm2015/lib/trusted-parties/trusted-party.service.js +0 -326
  205. package/esm2015/lib/trusted-parties/trusted-party.types.js +0 -41
  206. package/esm2015/lib/trusted-parties/trusted-party2.gql.js +0 -87
  207. package/esm2015/lib/trusted-parties/trusted-party2.service.js +0 -218
  208. package/esm2015/lib/users/profile-details.service.js +0 -214
  209. package/esm2015/lib/users/profile.gql.js +0 -97
  210. package/esm2015/lib/users/profile.service.js +0 -169
  211. package/esm2015/lib/users/profile.types.js +0 -34
  212. package/esm2015/lib/users/user.gql.js +0 -60
  213. package/esm2015/lib/users/user.service.js +0 -79
  214. package/esm2015/lib/users/user.types.js +0 -1
  215. package/lib/api/contact-card2.gql.d.ts +0 -34
  216. package/lib/api/message.service.d.ts +0 -59
  217. /package/lib/{api → contact-card}/contact-card.gql.d.ts +0 -0
  218. /package/lib/{auth → idle}/idle.types.d.ts +0 -0
  219. /package/lib/{api → key-exchange}/key-exchange.gql.d.ts +0 -0
  220. /package/lib/scenario/{scenario.gql.private.d.ts → scenario.private.gql.d.ts} +0 -0
  221. /package/lib/{cryptography → slip39}/slip39.service.d.ts +0 -0
  222. /package/lib/{api → time}/time.service.d.ts +0 -0
  223. /package/lib/{trusted-parties/tp-assembly.gql.private.d.ts → tp-assembly/tp-assembly.private.gql.d.ts} +0 -0
  224. /package/lib/{trusted-parties → tp-password-reset}/tp-password-reset.constants.d.ts +0 -0
  225. /package/lib/{trusted-parties → trusted-party}/trusted-party.gql.d.ts +0 -0
  226. /package/lib/{auth → two-factor}/two-factor.service.d.ts +0 -0
  227. /package/lib/{users → user}/user.service.d.ts +0 -0
  228. /package/lib/{cryptography → web-crypto}/web-crypto.service.d.ts +0 -0
@@ -0,0 +1,355 @@
1
+ import { __awaiter } from "tslib";
2
+ import { HttpClient } from '@angular/common/http';
3
+ import { Inject, Injectable } from '@angular/core';
4
+ import { AuthClass } from '@aws-amplify/auth/lib-esm/Auth';
5
+ import gql from 'graphql-tag';
6
+ import { Slip39Helper } from 'slip39';
7
+ import { LrApolloService } from '../api/lr-apollo.service';
8
+ import { LifeReadyAuthService } from '../auth/life-ready-auth.service';
9
+ import { EncryptionService } from '../encryption/encryption.service';
10
+ import { KeyFactoryService as KFS } from '../key/key-factory.service';
11
+ import { KeyGraphService } from '../key/key-graph.service';
12
+ import { KeyService } from '../key/key.service';
13
+ import { LR_CONFIG } from '../life-ready.config';
14
+ import { PasswordService } from '../password/password.service';
15
+ import { LrBadLogicException, LrException } from '../_common/exceptions';
16
+ import * as i0 from "@angular/core";
17
+ import * as i1 from "../life-ready.config";
18
+ import * as i2 from "@angular/common/http";
19
+ import * as i3 from "../api/lr-apollo.service";
20
+ import * as i4 from "@aws-amplify/auth/lib-esm/Auth";
21
+ import * as i5 from "../auth/life-ready-auth.service";
22
+ import * as i6 from "../key/key-factory.service";
23
+ import * as i7 from "../key/key.service";
24
+ import * as i8 from "../encryption/encryption.service";
25
+ import * as i9 from "../key/key-graph.service";
26
+ import * as i10 from "../password/password.service";
27
+ export const CreateLbopQuery = gql `
28
+ mutation CreateLbop($input: CreateLbopInput!) {
29
+ createLbop(input: $input) {
30
+ lbop {
31
+ id
32
+ }
33
+ }
34
+ }
35
+ `;
36
+ export const DeleteLbopQuery = gql `
37
+ mutation DeleteLbop($input: DeleteLbopInput!) {
38
+ deleteLbop(input: $input) {
39
+ id
40
+ }
41
+ }
42
+ `;
43
+ export const UpdateLbopQuery = gql `
44
+ mutation UpdateLbop($input: UpdateLbopInput!) {
45
+ updateLbop(input: $input) {
46
+ lbop {
47
+ id
48
+ }
49
+ }
50
+ }
51
+ `;
52
+ export const LbopQuery = gql `
53
+ query Lbop($id: LrRelayIdInput!) {
54
+ lbop(id: $id) {
55
+ id
56
+ cipherMeta
57
+ }
58
+ }
59
+ `;
60
+ export const LbopsQuery = gql `
61
+ query Lbops {
62
+ lbops {
63
+ edges {
64
+ node {
65
+ id
66
+ cipherMeta
67
+ }
68
+ }
69
+ }
70
+ }
71
+ `;
72
+ export class LbopService {
73
+ constructor(config, http, lrApollo, auth, authService, keyFactory, keyService, encryptionService, keyGraph, passwordService) {
74
+ this.config = config;
75
+ this.http = http;
76
+ this.lrApollo = lrApollo;
77
+ this.auth = auth;
78
+ this.authService = authService;
79
+ this.keyFactory = keyFactory;
80
+ this.keyService = keyService;
81
+ this.encryptionService = encryptionService;
82
+ this.keyGraph = keyGraph;
83
+ this.passwordService = passwordService;
84
+ this.CLIENT_NONCE_LENGTH = 32;
85
+ // There are 1024 words (10 bits), so 25 words should give ~256 bits of entropy.
86
+ this.LBOP_WORDS = 25;
87
+ }
88
+ getPartial(lbopString) {
89
+ return lbopString.split(' ')[0];
90
+ }
91
+ remove(id) {
92
+ return __awaiter(this, void 0, void 0, function* () {
93
+ const res = yield this.lrApollo.mutate({
94
+ mutation: DeleteLbopQuery,
95
+ variables: {
96
+ input: {
97
+ id,
98
+ },
99
+ },
100
+ });
101
+ return res.deleteLbop.id;
102
+ });
103
+ }
104
+ update({ id, name }) {
105
+ return __awaiter(this, void 0, void 0, function* () {
106
+ const lbop = yield this.get(id);
107
+ lbop.name = name;
108
+ const masterKey = yield this.keyService.getCurrentMasterKey();
109
+ const cipherMeta = yield this.encryptionService.encrypt(masterKey.jwk, lbop);
110
+ const res = yield this.lrApollo.mutate({
111
+ mutation: UpdateLbopQuery,
112
+ variables: {
113
+ input: {
114
+ id,
115
+ cipherMeta: JSON.stringify(cipherMeta),
116
+ },
117
+ },
118
+ });
119
+ return res.updateLbop;
120
+ });
121
+ }
122
+ get(id) {
123
+ return __awaiter(this, void 0, void 0, function* () {
124
+ const res = yield this.lrApollo.query({
125
+ query: LbopQuery,
126
+ variables: {
127
+ id,
128
+ },
129
+ });
130
+ const masterKey = yield this.keyService.getCurrentMasterKey();
131
+ const plainCipherMeta = yield this.encryptionService.decrypt(masterKey.jwk, JSON.parse(res.lbop.cipherMeta));
132
+ return Object.assign({ id: res.id }, plainCipherMeta);
133
+ });
134
+ }
135
+ list() {
136
+ return __awaiter(this, void 0, void 0, function* () {
137
+ const res = yield this.lrApollo.query({
138
+ query: LbopsQuery,
139
+ });
140
+ const masterKey = yield this.keyService.getCurrentMasterKey();
141
+ return Promise.all(res.lbops.edges.map((edge) => __awaiter(this, void 0, void 0, function* () {
142
+ const plainCipherMeta = yield this.encryptionService.decrypt(masterKey.jwk, JSON.parse(edge.node.cipherMeta));
143
+ return Object.assign({ id: edge.node.id }, plainCipherMeta);
144
+ })));
145
+ });
146
+ }
147
+ create({ name }) {
148
+ return __awaiter(this, void 0, void 0, function* () {
149
+ if (Slip39Helper.WORD_LIST.length !== 1024) {
150
+ throw new LrBadLogicException('Slip39Helper.WORD_LIST.length != 1024');
151
+ }
152
+ // Get existing to make sure there are not duplicate first words
153
+ const lbops = yield this.list();
154
+ // Generate new one
155
+ let lbopString;
156
+ while (true) {
157
+ lbopString = this.keyFactory
158
+ .randomChoices(Slip39Helper.WORD_LIST, this.LBOP_WORDS)
159
+ .join(' ');
160
+ const partial = this.getPartial(lbopString);
161
+ if (!lbops.some((lbop) => lbop.partial === partial)) {
162
+ break;
163
+ }
164
+ }
165
+ const lbopKeyParams = yield this.keyFactory.createLbopKeyParams();
166
+ const lbopKey = (yield this.keyFactory.deriveLbopKey(Object.assign({ password: lbopString }, lbopKeyParams))).jwk;
167
+ const lbopKeyVerifier = yield this.keyFactory.createSignKey();
168
+ const wrappedLbopKeyVerifier = yield this.encryptionService.encrypt(lbopKey, lbopKeyVerifier.toJSON(true));
169
+ // Re-encrypt master key with new key
170
+ const currentUser = yield this.authService.getUser();
171
+ const masterKey = yield this.keyGraph.getKey(currentUser.currentUserKey.masterKey.id);
172
+ const wrappedMasterKey = yield this.encryptionService.encrypt(lbopKey, masterKey.jwk.toJSON(true));
173
+ const meta = Object.assign(Object.assign({}, (name && { name })), { partial: this.getPartial(lbopString) });
174
+ const cipherMeta = yield this.encryptionService.encrypt(masterKey.jwk, meta);
175
+ const res = yield this.lrApollo.mutate({
176
+ mutation: CreateLbopQuery,
177
+ variables: {
178
+ input: {
179
+ cipherMeta: JSON.stringify(cipherMeta),
180
+ lbopKeyParams: JSON.stringify(lbopKeyParams),
181
+ lbopKeyVerifier: JSON.stringify(lbopKeyVerifier.toJSON(true)),
182
+ wrappedLbopKeyVerifier: JSON.stringify(wrappedLbopKeyVerifier),
183
+ masterKeyId: currentUser.currentUserKey.masterKey.id,
184
+ wrappedMasterKey: JSON.stringify(wrappedMasterKey),
185
+ },
186
+ },
187
+ });
188
+ return Object.assign(Object.assign({}, res.createLbop.lbop), { lbopString });
189
+ });
190
+ }
191
+ // --------------------------------------------------------------------------------------------------------------------
192
+ // --------------------------------------------------------------------------------------------------------------------
193
+ // Flow below are for password reset via LBOP
194
+ //
195
+ // --Potential Failure Point xxx--
196
+ //
197
+ // Look for the above and you can test by interrupting at these points.
198
+ //
199
+ // The LBOP reset process can be restarted at any point before the call to "set-password/". Once "set-password/" has been
200
+ // called, we assume the client has a short period of time to change the Idp password to the one they've chosen. The "set-password/"
201
+ // will set the Idp password to a temporary random password. The user can no longer login using their current password. If the Idp
202
+ // password change process does not complete or takes longer than the lockout period, the account will not be accessible and a new
203
+ // LBOP password reset must be carried out.
204
+ // --------------------------------------------------------------------------------------------------------------------
205
+ // --------------------------------------------------------------------------------------------------------------------
206
+ verifyLbops(challengeResult, lbopString) {
207
+ return __awaiter(this, void 0, void 0, function* () {
208
+ const clientNonce = this.keyFactory.randomString(this.CLIENT_NONCE_LENGTH);
209
+ for (const lbop of challengeResult.lbops) {
210
+ const lbopKey = (yield this.keyFactory.deriveLbopKey(Object.assign({ password: lbopString }, lbop.lbopKeyParams))).jwk;
211
+ // If decoding successful then it's the correct lbop
212
+ try {
213
+ const lbopKeyVerifier = (yield this.encryptionService.decrypt(lbopKey, lbop.wrappedLbopKeyVerifier));
214
+ // Force a bad signature.
215
+ // const serverNonce = challengeResult.challenge.serverNonce + "1",
216
+ const serverNonce = challengeResult.challenge.serverNonce;
217
+ const signedChallenge = yield this.encryptionService.sign(lbopKeyVerifier, {
218
+ serverNonce,
219
+ clientNonce,
220
+ });
221
+ return {
222
+ lbop,
223
+ signedChallenge,
224
+ lbopKey,
225
+ };
226
+ }
227
+ catch (error) {
228
+ continue;
229
+ }
230
+ }
231
+ throw new LrException({
232
+ source: 'LBOP',
233
+ code: 'INVALID_PASSPHRASE',
234
+ message: 'Invalid passphrase.',
235
+ });
236
+ });
237
+ }
238
+ verifyContact(params) {
239
+ return __awaiter(this, void 0, void 0, function* () {
240
+ const ret = this.http
241
+ .post(`${this.config.authUrl}users/lbop-reset/verify-contact/`, params)
242
+ .toPromise();
243
+ // --Potential Failure Point 1 --
244
+ // The contact verifications are throttled. But otherwise harmless.
245
+ return ret;
246
+ });
247
+ }
248
+ confirmContact(params) {
249
+ return __awaiter(this, void 0, void 0, function* () {
250
+ return this.http
251
+ .post(`${this.config.authUrl}cove/respond/`, {
252
+ claim_id: params.claimId,
253
+ v_code: params.vCode,
254
+ })
255
+ .toPromise();
256
+ // --Potential Failure Point 2 --
257
+ // A verified claim for a contact does not prevent new ones from being generated. So it should be fine to just start again.
258
+ });
259
+ }
260
+ verify(params) {
261
+ return __awaiter(this, void 0, void 0, function* () {
262
+ const challengeResult = yield this.http
263
+ .post(`${this.config.authUrl}users/lbop-reset/get-challenge/`, {
264
+ claimId: params.claimId,
265
+ claimToken: params.claimToken,
266
+ })
267
+ .toPromise();
268
+ // --Potential Failure Point 3 --
269
+ // This does not lock anything. A second call to "get-challenge/" will create a new challenge amd invalidate the first one.
270
+ const { signedChallenge, lbop, lbopKey } = yield this.verifyLbops(challengeResult, params.lbop);
271
+ const res = yield this.http
272
+ .post(`${this.config.authUrl}users/lbop-reset/verify-challenge/`, {
273
+ lbopId: lbop.lbopId,
274
+ signedChallenge,
275
+ })
276
+ .toPromise();
277
+ // --Potential Failure Point 4 --
278
+ // This does not lock anything. So ok to restart.
279
+ return {
280
+ lbopId: lbop.lbopId,
281
+ verifiedToken: res.verifiedToken,
282
+ masterKeyId: res.masterKeyId,
283
+ masterKey: yield KFS.asKey(yield this.encryptionService.decrypt(lbopKey, res.wrappedMasterKey)),
284
+ };
285
+ });
286
+ }
287
+ setPassword(params) {
288
+ return __awaiter(this, void 0, void 0, function* () {
289
+ // Generate the new password derived keys
290
+ const passKeyBundle = yield this.passwordService.createPassKeyBundle(params.newPassword);
291
+ // Re-encrypt master key with new key
292
+ const newWrappedMasterKey = yield this.encryptionService.encrypt(passKeyBundle.passKey, params.masterKey.toJSON(true));
293
+ const result = yield this.http
294
+ .post(`${this.config.authUrl}users/lbop-reset/set-password/`, {
295
+ lbopId: params.lbopId,
296
+ verifiedToken: params.verifiedToken,
297
+ masterKeyId: params.masterKeyId,
298
+ newWrappedMasterKey,
299
+ newPassKey: {
300
+ passKeyParams: passKeyBundle.passKeyParams,
301
+ passIdpParams: passKeyBundle.passIdpParams,
302
+ passIdpVerifierPbk: passKeyBundle.passIdpVerifier.toJSON(),
303
+ wrappedPassIdpVerifierPrk: passKeyBundle.wrappedPassIdpVerifierPrk,
304
+ },
305
+ })
306
+ .toPromise();
307
+ // --Potential Failure Point 5 --
308
+ // A timed mutex is locked. The Idp password change must occur within a period of time.
309
+ // If interrupted here, the user can not login with their old password again. They must
310
+ // start the whole LBOP password reset process again.
311
+ // This call will go through the LR proxy which is OK since the LR server knows
312
+ // the temporary password anyway.
313
+ let user = yield this.auth.signIn(result.username, result.idpPassword, {
314
+ noProxy: 'true',
315
+ });
316
+ if (user.challengeName !== 'NEW_PASSWORD_REQUIRED') {
317
+ throw new LrException({
318
+ message: 'Internal error. Expecting Cognito to have done a password reset.',
319
+ });
320
+ }
321
+ // --Potential Failure Point 6 --
322
+ // Must restart the LBOP password reset process again.
323
+ // Set new password on Idp
324
+ user = yield this.auth.completeNewPassword(user, this.passwordService.getPassIdpString(passKeyBundle.passIdp), {});
325
+ // --Potential Failure Point 7 --
326
+ // Must restart the LBOP password reset process again.
327
+ yield this.auth.signOut();
328
+ return yield this.http
329
+ .post(`${this.config.authUrl}users/lbop-reset/complete/`, {
330
+ lbopId: params.lbopId,
331
+ setPasswordToken: result.setPasswordToken,
332
+ })
333
+ .toPromise();
334
+ });
335
+ }
336
+ }
337
+ LbopService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LbopService_Factory() { return new LbopService(i0.ɵɵinject(i1.LR_CONFIG), i0.ɵɵinject(i2.HttpClient), i0.ɵɵinject(i3.LrApolloService), i0.ɵɵinject(i4.AuthClass), i0.ɵɵinject(i5.LifeReadyAuthService), i0.ɵɵinject(i6.KeyFactoryService), i0.ɵɵinject(i7.KeyService), i0.ɵɵinject(i8.EncryptionService), i0.ɵɵinject(i9.KeyGraphService), i0.ɵɵinject(i10.PasswordService)); }, token: LbopService, providedIn: "root" });
338
+ LbopService.decorators = [
339
+ { type: Injectable, args: [{
340
+ providedIn: 'root',
341
+ },] }
342
+ ];
343
+ LbopService.ctorParameters = () => [
344
+ { type: undefined, decorators: [{ type: Inject, args: [LR_CONFIG,] }] },
345
+ { type: HttpClient },
346
+ { type: LrApolloService },
347
+ { type: AuthClass },
348
+ { type: LifeReadyAuthService },
349
+ { type: KFS },
350
+ { type: KeyService },
351
+ { type: EncryptionService },
352
+ { type: KeyGraphService },
353
+ { type: PasswordService }
354
+ ];
355
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGJvcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9vcHQvYXRsYXNzaWFuL3BpcGVsaW5lcy9hZ2VudC9idWlsZC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9sYm9wL2xib3Auc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRCxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUM7QUFFOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixJQUFJLEdBQUcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFtQixTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7Ozs7QUF5RXpFLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7O0NBUWpDLENBQUM7QUFNRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Q0FNakMsQ0FBQztBQVdGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7O0NBUWpDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFBOzs7Ozs7O0NBTzNCLENBQUM7QUFNRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7OztDQVc1QixDQUFDO0FBS0YsTUFBTSxPQUFPLFdBQVc7SUFLdEIsWUFDNkIsTUFBdUIsRUFDMUMsSUFBZ0IsRUFDaEIsUUFBeUIsRUFDekIsSUFBZSxFQUNmLFdBQWlDLEVBQ2pDLFVBQWUsRUFDZixVQUFzQixFQUN0QixpQkFBb0MsRUFDcEMsUUFBeUIsRUFDekIsZUFBZ0M7UUFUYixXQUFNLEdBQU4sTUFBTSxDQUFpQjtRQUMxQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLFNBQUksR0FBSixJQUFJLENBQVc7UUFDZixnQkFBVyxHQUFYLFdBQVcsQ0FBc0I7UUFDakMsZUFBVSxHQUFWLFVBQVUsQ0FBSztRQUNmLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFkekIsd0JBQW1CLEdBQUcsRUFBRSxDQUFDO1FBQzFDLGdGQUFnRjtRQUMvRCxlQUFVLEdBQUcsRUFBRSxDQUFDO0lBYTlCLENBQUM7SUFFSSxVQUFVLENBQUMsVUFBa0I7UUFDbkMsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFWSxNQUFNLENBQUMsRUFBVTs7WUFDNUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBTTtnQkFDMUMsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLFNBQVMsRUFBRTtvQkFDVCxLQUFLLEVBQUU7d0JBQ0wsRUFBRTtxQkFDSDtpQkFDRjthQUNGLENBQUMsQ0FBQztZQUVILE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDM0IsQ0FBQztLQUFBO0lBRVksTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBb0I7O1lBQ2hELE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUVqQixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM5RCxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQ3JELFNBQVMsQ0FBQyxHQUFHLEVBQ2IsSUFBSSxDQUNMLENBQUM7WUFFRixNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFrQjtnQkFDdEQsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLFNBQVMsRUFBRTtvQkFDVCxLQUFLLEVBQUU7d0JBQ0wsRUFBRTt3QkFDRixVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7cUJBQ3ZDO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDO1FBQ3hCLENBQUM7S0FBQTtJQUVZLEdBQUcsQ0FBQyxFQUFVOztZQUN6QixNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFNO2dCQUN6QyxLQUFLLEVBQUUsU0FBUztnQkFDaEIsU0FBUyxFQUFFO29CQUNULEVBQUU7aUJBQ0g7YUFDRixDQUFDLENBQUM7WUFFSCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUU5RCxNQUFNLGVBQWUsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQzFELFNBQVMsQ0FBQyxHQUFHLEVBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUNoQyxDQUFDO1lBRUYsdUJBQ0UsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQ1AsZUFBZSxFQUNsQjtRQUNKLENBQUM7S0FBQTtJQUVZLElBQUk7O1lBQ2YsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBYTtnQkFDaEQsS0FBSyxFQUFFLFVBQVU7YUFDbEIsQ0FBQyxDQUFDO1lBRUgsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFFOUQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUNoQixHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBTyxJQUFJLEVBQUUsRUFBRTtnQkFDakMsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUMxRCxTQUFTLENBQUMsR0FBRyxFQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FDakMsQ0FBQztnQkFDRix1QkFDRSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQ2IsZUFBZSxFQUNsQjtZQUNKLENBQUMsQ0FBQSxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7S0FBQTtJQUVZLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBb0I7O1lBQzVDLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssSUFBSSxFQUFFO2dCQUMxQyxNQUFNLElBQUksbUJBQW1CLENBQUMsdUNBQXVDLENBQUMsQ0FBQzthQUN4RTtZQUVELGdFQUFnRTtZQUNoRSxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVoQyxtQkFBbUI7WUFDbkIsSUFBSSxVQUFVLENBQUM7WUFDZixPQUFPLElBQUksRUFBRTtnQkFDWCxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVU7cUJBQ3pCLGFBQWEsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUM7cUJBQ3RELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDYixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUU1QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxPQUFPLENBQUMsRUFBRTtvQkFDbkQsTUFBTTtpQkFDUDthQUNGO1lBRUQsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDbEUsTUFBTSxPQUFPLEdBQUcsQ0FDZCxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxpQkFDakMsUUFBUSxFQUFFLFVBQVUsSUFDakIsYUFBYSxFQUNoQixDQUNILENBQUMsR0FBRyxDQUFDO1lBRU4sTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzlELE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUNqRSxPQUFPLEVBQ1AsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDN0IsQ0FBQztZQUVGLHFDQUFxQztZQUNyQyxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDckQsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FDMUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUN4QyxDQUFDO1lBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQzNELE9BQU8sRUFDUCxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDM0IsQ0FBQztZQUVGLE1BQU0sSUFBSSxtQ0FDTCxDQUFDLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLEtBQ3JCLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUNyQyxDQUFDO1lBQ0YsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUNyRCxTQUFTLENBQUMsR0FBRyxFQUNiLElBQUksQ0FDTCxDQUFDO1lBRUYsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBa0I7Z0JBQ3RELFFBQVEsRUFBRSxlQUFlO2dCQUN6QixTQUFTLEVBQUU7b0JBQ1QsS0FBSyxFQUFFO3dCQUNMLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQzt3QkFDdEMsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDO3dCQUM1QyxlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUM3RCxzQkFBc0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDO3dCQUM5RCxXQUFXLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBRTt3QkFDcEQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztxQkFDbkQ7aUJBQ0Y7YUFDRixDQUFDLENBQUM7WUFFSCx1Q0FDSyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksS0FDdEIsVUFBVSxJQUNWO1FBQ0osQ0FBQztLQUFBO0lBRUQsdUhBQXVIO0lBQ3ZILHVIQUF1SDtJQUN2SCw2Q0FBNkM7SUFDN0MsRUFBRTtJQUNGLGtDQUFrQztJQUNsQyxFQUFFO0lBQ0YsdUVBQXVFO0lBQ3ZFLEVBQUU7SUFDRix5SEFBeUg7SUFDekgsb0lBQW9JO0lBQ3BJLGtJQUFrSTtJQUNsSSxrSUFBa0k7SUFDbEksMkNBQTJDO0lBQzNDLHVIQUF1SDtJQUN2SCx1SEFBdUg7SUFDekcsV0FBVyxDQUN2QixlQUFnQyxFQUNoQyxVQUFrQjs7WUFFbEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFFM0UsS0FBSyxNQUFNLElBQUksSUFBSSxlQUFlLENBQUMsS0FBSyxFQUFFO2dCQUN4QyxNQUFNLE9BQU8sR0FBRyxDQUNkLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLGlCQUNqQyxRQUFRLEVBQUUsVUFBVSxJQUNqQixJQUFJLENBQUMsYUFBYSxFQUNyQixDQUNILENBQUMsR0FBRyxDQUFDO2dCQUVOLG9EQUFvRDtnQkFDcEQsSUFBSTtvQkFDRixNQUFNLGVBQWUsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FDM0QsT0FBTyxFQUNQLElBQUksQ0FBQyxzQkFBc0IsQ0FDNUIsQ0FBUSxDQUFDO29CQUVWLHlCQUF5QjtvQkFDekIsbUVBQW1FO29CQUVuRSxNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztvQkFFMUQsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUN2RCxlQUFlLEVBQ2Y7d0JBQ0UsV0FBVzt3QkFDWCxXQUFXO3FCQUNaLENBQ0YsQ0FBQztvQkFFRixPQUFPO3dCQUNMLElBQUk7d0JBQ0osZUFBZTt3QkFDZixPQUFPO3FCQUNSLENBQUM7aUJBQ0g7Z0JBQUMsT0FBTyxLQUFLLEVBQUU7b0JBQ2QsU0FBUztpQkFDVjthQUNGO1lBQ0QsTUFBTSxJQUFJLFdBQVcsQ0FBQztnQkFDcEIsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsSUFBSSxFQUFFLG9CQUFvQjtnQkFDMUIsT0FBTyxFQUFFLHFCQUFxQjthQUMvQixDQUFDLENBQUM7UUFDTCxDQUFDO0tBQUE7SUFFWSxhQUFhLENBQ3hCLE1BQTJCOztZQUUzQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSTtpQkFDbEIsSUFBSSxDQUNILEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLGtDQUFrQyxFQUN4RCxNQUFNLENBQ1A7aUJBQ0EsU0FBUyxFQUFFLENBQUM7WUFFZixpQ0FBaUM7WUFDakMsbUVBQW1FO1lBRW5FLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztLQUFBO0lBRVksY0FBYyxDQUN6QixNQUE0Qjs7WUFFNUIsT0FBTyxJQUFJLENBQUMsSUFBSTtpQkFDYixJQUFJLENBQXVCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLGVBQWUsRUFBRTtnQkFDakUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPO2dCQUN4QixNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUs7YUFDckIsQ0FBQztpQkFDRCxTQUFTLEVBQUUsQ0FBQztZQUVmLGlDQUFpQztZQUNqQywySEFBMkg7UUFDN0gsQ0FBQztLQUFBO0lBRVksTUFBTSxDQUFDLE1BQW9COztZQUN0QyxNQUFNLGVBQWUsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJO2lCQUNwQyxJQUFJLENBQ0gsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8saUNBQWlDLEVBQ3ZEO2dCQUNFLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztnQkFDdkIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO2FBQzlCLENBQ0Y7aUJBQ0EsU0FBUyxFQUFFLENBQUM7WUFFZixpQ0FBaUM7WUFDakMsMkhBQTJIO1lBQzNILE1BQU0sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FDL0QsZUFBZSxFQUNmLE1BQU0sQ0FBQyxJQUFJLENBQ1osQ0FBQztZQUVGLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUk7aUJBQ3hCLElBQUksQ0FBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxvQ0FBb0MsRUFBRTtnQkFDckUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixlQUFlO2FBQ2hCLENBQUM7aUJBQ0QsU0FBUyxFQUFFLENBQUM7WUFFZixpQ0FBaUM7WUFDakMsaURBQWlEO1lBRWpELE9BQU87Z0JBQ0wsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixhQUFhLEVBQUUsR0FBRyxDQUFDLGFBQWE7Z0JBQ2hDLFdBQVcsRUFBRSxHQUFHLENBQUMsV0FBVztnQkFDNUIsU0FBUyxFQUFFLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FDeEIsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FDcEU7YUFDRixDQUFDO1FBQ0osQ0FBQztLQUFBO0lBRVksV0FBVyxDQUFDLE1BQXlCOztZQUNoRCx5Q0FBeUM7WUFDekMsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLG1CQUFtQixDQUNsRSxNQUFNLENBQUMsV0FBVyxDQUNuQixDQUFDO1lBRUYscUNBQXFDO1lBQ3JDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUM5RCxhQUFhLENBQUMsT0FBTyxFQUNyQixNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDOUIsQ0FBQztZQUVGLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUk7aUJBQzNCLElBQUksQ0FDSCxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxnQ0FBZ0MsRUFDdEQ7Z0JBQ0UsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO2dCQUNyQixhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWE7Z0JBQ25DLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztnQkFDL0IsbUJBQW1CO2dCQUNuQixVQUFVLEVBQUU7b0JBQ1YsYUFBYSxFQUFFLGFBQWEsQ0FBQyxhQUFhO29CQUMxQyxhQUFhLEVBQUUsYUFBYSxDQUFDLGFBQWE7b0JBQzFDLGtCQUFrQixFQUFFLGFBQWEsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFO29CQUMxRCx5QkFBeUIsRUFBRSxhQUFhLENBQUMseUJBQXlCO2lCQUNuRTthQUNGLENBQ0Y7aUJBQ0EsU0FBUyxFQUFFLENBQUM7WUFFZixpQ0FBaUM7WUFDakMsdUZBQXVGO1lBQ3ZGLHVGQUF1RjtZQUN2RixxREFBcUQ7WUFFckQsK0VBQStFO1lBQy9FLGlDQUFpQztZQUNqQyxJQUFJLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFdBQVcsRUFBRTtnQkFDckUsT0FBTyxFQUFFLE1BQU07YUFDaEIsQ0FBQyxDQUFDO1lBRUgsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLHVCQUF1QixFQUFFO2dCQUNsRCxNQUFNLElBQUksV0FBVyxDQUFDO29CQUNwQixPQUFPLEVBQ0wsa0VBQWtFO2lCQUNyRSxDQUFDLENBQUM7YUFDSjtZQUVELGlDQUFpQztZQUNqQyxzREFBc0Q7WUFFdEQsMEJBQTBCO1lBQzFCLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQ3hDLElBQUksRUFDSixJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFDNUQsRUFBRSxDQUNILENBQUM7WUFFRixpQ0FBaUM7WUFDakMsc0RBQXNEO1lBRXRELE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUUxQixPQUFPLE1BQU0sSUFBSSxDQUFDLElBQUk7aUJBQ25CLElBQUksQ0FBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyw0QkFBNEIsRUFBRTtnQkFDN0QsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO2dCQUNyQixnQkFBZ0IsRUFBRSxNQUFNLENBQUMsZ0JBQWdCO2FBQzFDLENBQUM7aUJBQ0QsU0FBUyxFQUFFLENBQUM7UUFDakIsQ0FBQztLQUFBOzs7O1lBM1hGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7OzRDQU9JLE1BQU0sU0FBQyxTQUFTO1lBbktaLFVBQVU7WUFNVixlQUFlO1lBSmYsU0FBUztZQUtULG9CQUFvQjtZQUVDLEdBQUc7WUFFeEIsVUFBVTtZQUhWLGlCQUFpQjtZQUVqQixlQUFlO1lBR2YsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF1dGhDbGFzcyB9IGZyb20gJ0Bhd3MtYW1wbGlmeS9hdXRoL2xpYi1lc20vQXV0aCc7XG5pbXBvcnQgZ3FsIGZyb20gJ2dyYXBocWwtdGFnJztcbmltcG9ydCB7IEpXSyB9IGZyb20gJ25vZGUtam9zZSc7XG5pbXBvcnQgeyBTbGlwMzlIZWxwZXIgfSBmcm9tICdzbGlwMzknO1xuaW1wb3J0IHsgTHJBcG9sbG9TZXJ2aWNlIH0gZnJvbSAnLi4vYXBpL2xyLWFwb2xsby5zZXJ2aWNlJztcbmltcG9ydCB7IExpZmVSZWFkeUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aC9saWZlLXJlYWR5LWF1dGguc2VydmljZSc7XG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4uL2VuY3J5cHRpb24vZW5jcnlwdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIGFzIEtGUyB9IGZyb20gJy4uL2tleS9rZXktZmFjdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUdyYXBoU2VydmljZSB9IGZyb20gJy4uL2tleS9rZXktZ3JhcGguc2VydmljZSc7XG5pbXBvcnQgeyBLZXlTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS5zZXJ2aWNlJztcbmltcG9ydCB7IExpZmVSZWFkeUNvbmZpZywgTFJfQ09ORklHIH0gZnJvbSAnLi4vbGlmZS1yZWFkeS5jb25maWcnO1xuaW1wb3J0IHsgUGFzc3dvcmRTZXJ2aWNlIH0gZnJvbSAnLi4vcGFzc3dvcmQvcGFzc3dvcmQuc2VydmljZSc7XG5pbXBvcnQgeyBMckJhZExvZ2ljRXhjZXB0aW9uLCBMckV4Y2VwdGlvbiB9IGZyb20gJy4uL19jb21tb24vZXhjZXB0aW9ucyc7XG5cbmludGVyZmFjZSBTZXRQYXNzd29yZEFwaVJlc3VsdCB7XG4gIHVzZXJuYW1lOiBzdHJpbmc7XG4gIGlkcFBhc3N3b3JkOiBzdHJpbmc7XG4gIHNldFBhc3N3b3JkVG9rZW46IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXRQYXNzd29yZFBhcmFtcyB7XG4gIGxib3BJZDogc3RyaW5nO1xuICBuZXdQYXNzd29yZDogc3RyaW5nO1xuICB2ZXJpZmllZFRva2VuOiBzdHJpbmc7XG4gIG1hc3RlcktleUlkOiBzdHJpbmc7XG4gIG1hc3RlcktleTogSldLLktleTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWZXJpZnlDb250YWN0UGFyYW1zIHtcbiAgZW1haWw/OiBzdHJpbmc7XG4gIHBob25lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZlcmlmeUNvbnRhY3RSZXN1bHQge1xuICAvLyBUaGUgY2xhaW1faWQgaWRlbnRpZmllcyB0aGUgRW1haWwvU01TIGNvbmZpcm1hdGlvblxuICBjbGFpbUlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybUNvbnRhY3RQYXJhbXMge1xuICBjbGFpbUlkOiBzdHJpbmc7XG4gIHZDb2RlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybUNvbnRhY3RSZXN1bHQge1xuICAvLyBUaGUgdG9rZW4gdG8gcHJvdmUgdGhlIGNsaWVudCBoYWQgdGhlIGNvcnJlY3QgY29uZmlybWF0aW9uIGNvZGUuXG4gIHRva2VuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVyaWZ5UGFyYW1zIHtcbiAgY2xhaW1JZDogc3RyaW5nO1xuICBjbGFpbVRva2VuOiBzdHJpbmc7XG4gIGxib3A6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWZXJpZnlSZXN1bHQge1xuICAvLyB1c2VySWQ6IHN0cmluZztcbiAgbGJvcElkOiBzdHJpbmc7XG4gIHZlcmlmaWVkVG9rZW46IHN0cmluZztcbiAgbWFzdGVyS2V5SWQ6IHN0cmluZztcbiAgbWFzdGVyS2V5OiBKV0suS2V5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYWxsZW5nZVJlc3VsdCB7XG4gIGNoYWxsZW5nZTogYW55O1xuICBsYm9wczogYW55O1xuICAvLyB1c2VySWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYm9wIHtcbiAgaWQ6IHN0cmluZztcbiAgcGFydGlhbD86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgbGJvcFN0cmluZz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVMYm9wUGFyYW1zIHtcbiAgbmFtZT86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIENyZWF0ZUxib3BRdWVyeSB7XG4gIGNyZWF0ZUxib3A6IHtcbiAgICBsYm9wOiBMYm9wO1xuICB9O1xufVxuXG5leHBvcnQgY29uc3QgQ3JlYXRlTGJvcFF1ZXJ5ID0gZ3FsYFxuICBtdXRhdGlvbiBDcmVhdGVMYm9wKCRpbnB1dDogQ3JlYXRlTGJvcElucHV0ISkge1xuICAgIGNyZWF0ZUxib3AoaW5wdXQ6ICRpbnB1dCkge1xuICAgICAgbGJvcCB7XG4gICAgICAgIGlkXG4gICAgICB9XG4gICAgfVxuICB9XG5gO1xuXG5pbnRlcmZhY2UgRGVsZXRlTGJvcFF1ZXJ5IHtcbiAgZGVsZXRlTGJvcDogTGJvcDtcbn1cblxuZXhwb3J0IGNvbnN0IERlbGV0ZUxib3BRdWVyeSA9IGdxbGBcbiAgbXV0YXRpb24gRGVsZXRlTGJvcCgkaW5wdXQ6IERlbGV0ZUxib3BJbnB1dCEpIHtcbiAgICBkZWxldGVMYm9wKGlucHV0OiAkaW5wdXQpIHtcbiAgICAgIGlkXG4gICAgfVxuICB9XG5gO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUxib3BQYXJhbXMge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBVcGRhdGVMYm9wUXVlcnkge1xuICB1cGRhdGVMYm9wOiBMYm9wO1xufVxuXG5leHBvcnQgY29uc3QgVXBkYXRlTGJvcFF1ZXJ5ID0gZ3FsYFxuICBtdXRhdGlvbiBVcGRhdGVMYm9wKCRpbnB1dDogVXBkYXRlTGJvcElucHV0ISkge1xuICAgIHVwZGF0ZUxib3AoaW5wdXQ6ICRpbnB1dCkge1xuICAgICAgbGJvcCB7XG4gICAgICAgIGlkXG4gICAgICB9XG4gICAgfVxuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgTGJvcFF1ZXJ5ID0gZ3FsYFxuICBxdWVyeSBMYm9wKCRpZDogTHJSZWxheUlkSW5wdXQhKSB7XG4gICAgbGJvcChpZDogJGlkKSB7XG4gICAgICBpZFxuICAgICAgY2lwaGVyTWV0YVxuICAgIH1cbiAgfVxuYDtcblxuaW50ZXJmYWNlIExib3BzUXVlcnkge1xuICBsYm9wczogYW55O1xufVxuXG5leHBvcnQgY29uc3QgTGJvcHNRdWVyeSA9IGdxbGBcbiAgcXVlcnkgTGJvcHMge1xuICAgIGxib3BzIHtcbiAgICAgIGVkZ2VzIHtcbiAgICAgICAgbm9kZSB7XG4gICAgICAgICAgaWRcbiAgICAgICAgICBjaXBoZXJNZXRhXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbmA7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBMYm9wU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgQ0xJRU5UX05PTkNFX0xFTkdUSCA9IDMyO1xuICAvLyBUaGVyZSBhcmUgMTAyNCB3b3JkcyAoMTAgYml0cyksIHNvIDI1IHdvcmRzIHNob3VsZCBnaXZlIH4yNTYgYml0cyBvZiBlbnRyb3B5LlxuICBwcml2YXRlIHJlYWRvbmx5IExCT1BfV09SRFMgPSAyNTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KExSX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IExpZmVSZWFkeUNvbmZpZyxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBsckFwb2xsbzogTHJBcG9sbG9TZXJ2aWNlLFxuICAgIHByaXZhdGUgYXV0aDogQXV0aENsYXNzLFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IExpZmVSZWFkeUF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5RmFjdG9yeTogS0ZTLFxuICAgIHByaXZhdGUga2V5U2VydmljZTogS2V5U2VydmljZSxcbiAgICBwcml2YXRlIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYXNzd29yZFNlcnZpY2U6IFBhc3N3b3JkU2VydmljZVxuICApIHt9XG5cbiAgcHJpdmF0ZSBnZXRQYXJ0aWFsKGxib3BTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGxib3BTdHJpbmcuc3BsaXQoJyAnKVswXTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZW1vdmUoaWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGU8YW55Pih7XG4gICAgICBtdXRhdGlvbjogRGVsZXRlTGJvcFF1ZXJ5LFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgaWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlcy5kZWxldGVMYm9wLmlkO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZSh7IGlkLCBuYW1lIH06IFVwZGF0ZUxib3BQYXJhbXMpOiBQcm9taXNlPExib3A+IHtcbiAgICBjb25zdCBsYm9wID0gYXdhaXQgdGhpcy5nZXQoaWQpO1xuICAgIGxib3AubmFtZSA9IG5hbWU7XG5cbiAgICBjb25zdCBtYXN0ZXJLZXkgPSBhd2FpdCB0aGlzLmtleVNlcnZpY2UuZ2V0Q3VycmVudE1hc3RlcktleSgpO1xuICAgIGNvbnN0IGNpcGhlck1ldGEgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHQoXG4gICAgICBtYXN0ZXJLZXkuandrLFxuICAgICAgbGJvcFxuICAgICk7XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZTxVcGRhdGVMYm9wUXVlcnk+KHtcbiAgICAgIG11dGF0aW9uOiBVcGRhdGVMYm9wUXVlcnksXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBpZCxcbiAgICAgICAgICBjaXBoZXJNZXRhOiBKU09OLnN0cmluZ2lmeShjaXBoZXJNZXRhKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzLnVwZGF0ZUxib3A7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0KGlkOiBzdHJpbmcpOiBQcm9taXNlPExib3A+IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmxyQXBvbGxvLnF1ZXJ5PGFueT4oe1xuICAgICAgcXVlcnk6IExib3BRdWVyeSxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpZCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBtYXN0ZXJLZXkgPSBhd2FpdCB0aGlzLmtleVNlcnZpY2UuZ2V0Q3VycmVudE1hc3RlcktleSgpO1xuXG4gICAgY29uc3QgcGxhaW5DaXBoZXJNZXRhID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5kZWNyeXB0KFxuICAgICAgbWFzdGVyS2V5Lmp3ayxcbiAgICAgIEpTT04ucGFyc2UocmVzLmxib3AuY2lwaGVyTWV0YSlcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiByZXMuaWQsXG4gICAgICAuLi5wbGFpbkNpcGhlck1ldGEsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsaXN0KCk6IFByb21pc2U8TGJvcFtdPiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxMYm9wc1F1ZXJ5Pih7XG4gICAgICBxdWVyeTogTGJvcHNRdWVyeSxcbiAgICB9KTtcblxuICAgIGNvbnN0IG1hc3RlcktleSA9IGF3YWl0IHRoaXMua2V5U2VydmljZS5nZXRDdXJyZW50TWFzdGVyS2V5KCk7XG5cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICByZXMubGJvcHMuZWRnZXMubWFwKGFzeW5jIChlZGdlKSA9PiB7XG4gICAgICAgIGNvbnN0IHBsYWluQ2lwaGVyTWV0YSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZGVjcnlwdChcbiAgICAgICAgICBtYXN0ZXJLZXkuandrLFxuICAgICAgICAgIEpTT04ucGFyc2UoZWRnZS5ub2RlLmNpcGhlck1ldGEpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaWQ6IGVkZ2Uubm9kZS5pZCxcbiAgICAgICAgICAuLi5wbGFpbkNpcGhlck1ldGEsXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlKHsgbmFtZSB9OiBDcmVhdGVMYm9wUGFyYW1zKTogUHJvbWlzZTxMYm9wPiB7XG4gICAgaWYgKFNsaXAzOUhlbHBlci5XT1JEX0xJU1QubGVuZ3RoICE9PSAxMDI0KSB7XG4gICAgICB0aHJvdyBuZXcgTHJCYWRMb2dpY0V4Y2VwdGlvbignU2xpcDM5SGVscGVyLldPUkRfTElTVC5sZW5ndGggIT0gMTAyNCcpO1xuICAgIH1cblxuICAgIC8vIEdldCBleGlzdGluZyB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vdCBkdXBsaWNhdGUgZmlyc3Qgd29yZHNcbiAgICBjb25zdCBsYm9wcyA9IGF3YWl0IHRoaXMubGlzdCgpO1xuXG4gICAgLy8gR2VuZXJhdGUgbmV3IG9uZVxuICAgIGxldCBsYm9wU3RyaW5nO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBsYm9wU3RyaW5nID0gdGhpcy5rZXlGYWN0b3J5XG4gICAgICAgIC5yYW5kb21DaG9pY2VzKFNsaXAzOUhlbHBlci5XT1JEX0xJU1QsIHRoaXMuTEJPUF9XT1JEUylcbiAgICAgICAgLmpvaW4oJyAnKTtcbiAgICAgIGNvbnN0IHBhcnRpYWwgPSB0aGlzLmdldFBhcnRpYWwobGJvcFN0cmluZyk7XG5cbiAgICAgIGlmICghbGJvcHMuc29tZSgobGJvcCkgPT4gbGJvcC5wYXJ0aWFsID09PSBwYXJ0aWFsKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBsYm9wS2V5UGFyYW1zID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUxib3BLZXlQYXJhbXMoKTtcbiAgICBjb25zdCBsYm9wS2V5ID0gKFxuICAgICAgYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmRlcml2ZUxib3BLZXkoe1xuICAgICAgICBwYXNzd29yZDogbGJvcFN0cmluZyxcbiAgICAgICAgLi4ubGJvcEtleVBhcmFtcyxcbiAgICAgIH0pXG4gICAgKS5qd2s7XG5cbiAgICBjb25zdCBsYm9wS2V5VmVyaWZpZXIgPSBhd2FpdCB0aGlzLmtleUZhY3RvcnkuY3JlYXRlU2lnbktleSgpO1xuICAgIGNvbnN0IHdyYXBwZWRMYm9wS2V5VmVyaWZpZXIgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHQoXG4gICAgICBsYm9wS2V5LFxuICAgICAgbGJvcEtleVZlcmlmaWVyLnRvSlNPTih0cnVlKVxuICAgICk7XG5cbiAgICAvLyBSZS1lbmNyeXB0IG1hc3RlciBrZXkgd2l0aCBuZXcga2V5XG4gICAgY29uc3QgY3VycmVudFVzZXIgPSBhd2FpdCB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXIoKTtcbiAgICBjb25zdCBtYXN0ZXJLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEtleShcbiAgICAgIGN1cnJlbnRVc2VyLmN1cnJlbnRVc2VyS2V5Lm1hc3RlcktleS5pZFxuICAgICk7XG4gICAgY29uc3Qgd3JhcHBlZE1hc3RlcktleSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdChcbiAgICAgIGxib3BLZXksXG4gICAgICBtYXN0ZXJLZXkuandrLnRvSlNPTih0cnVlKVxuICAgICk7XG5cbiAgICBjb25zdCBtZXRhID0ge1xuICAgICAgLi4uKG5hbWUgJiYgeyBuYW1lIH0pLFxuICAgICAgcGFydGlhbDogdGhpcy5nZXRQYXJ0aWFsKGxib3BTdHJpbmcpLFxuICAgIH07XG4gICAgY29uc3QgY2lwaGVyTWV0YSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdChcbiAgICAgIG1hc3RlcktleS5qd2ssXG4gICAgICBtZXRhXG4gICAgKTtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMubHJBcG9sbG8ubXV0YXRlPENyZWF0ZUxib3BRdWVyeT4oe1xuICAgICAgbXV0YXRpb246IENyZWF0ZUxib3BRdWVyeSxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGNpcGhlck1ldGE6IEpTT04uc3RyaW5naWZ5KGNpcGhlck1ldGEpLFxuICAgICAgICAgIGxib3BLZXlQYXJhbXM6IEpTT04uc3RyaW5naWZ5KGxib3BLZXlQYXJhbXMpLFxuICAgICAgICAgIGxib3BLZXlWZXJpZmllcjogSlNPTi5zdHJpbmdpZnkobGJvcEtleVZlcmlmaWVyLnRvSlNPTih0cnVlKSksXG4gICAgICAgICAgd3JhcHBlZExib3BLZXlWZXJpZmllcjogSlNPTi5zdHJpbmdpZnkod3JhcHBlZExib3BLZXlWZXJpZmllciksXG4gICAgICAgICAgbWFzdGVyS2V5SWQ6IGN1cnJlbnRVc2VyLmN1cnJlbnRVc2VyS2V5Lm1hc3RlcktleS5pZCxcbiAgICAgICAgICB3cmFwcGVkTWFzdGVyS2V5OiBKU09OLnN0cmluZ2lmeSh3cmFwcGVkTWFzdGVyS2V5KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucmVzLmNyZWF0ZUxib3AubGJvcCxcbiAgICAgIGxib3BTdHJpbmcsXG4gICAgfTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEZsb3cgYmVsb3cgYXJlIGZvciBwYXNzd29yZCByZXNldCB2aWEgTEJPUFxuICAvL1xuICAvLyAtLVBvdGVudGlhbCBGYWlsdXJlIFBvaW50IHh4eC0tXG4gIC8vXG4gIC8vIExvb2sgZm9yIHRoZSBhYm92ZSBhbmQgeW91IGNhbiB0ZXN0IGJ5IGludGVycnVwdGluZyBhdCB0aGVzZSBwb2ludHMuXG4gIC8vXG4gIC8vIFRoZSBMQk9QIHJlc2V0IHByb2Nlc3MgY2FuIGJlIHJlc3RhcnRlZCBhdCBhbnkgcG9pbnQgYmVmb3JlIHRoZSBjYWxsIHRvIFwic2V0LXBhc3N3b3JkL1wiLiBPbmNlIFwic2V0LXBhc3N3b3JkL1wiIGhhcyBiZWVuXG4gIC8vIGNhbGxlZCwgd2UgYXNzdW1lIHRoZSBjbGllbnQgaGFzIGEgc2hvcnQgcGVyaW9kIG9mIHRpbWUgdG8gY2hhbmdlIHRoZSBJZHAgcGFzc3dvcmQgdG8gdGhlIG9uZSB0aGV5J3ZlIGNob3Nlbi4gVGhlIFwic2V0LXBhc3N3b3JkL1wiXG4gIC8vIHdpbGwgc2V0IHRoZSBJZHAgcGFzc3dvcmQgdG8gYSB0ZW1wb3JhcnkgcmFuZG9tIHBhc3N3b3JkLiBUaGUgdXNlciBjYW4gbm8gbG9uZ2VyIGxvZ2luIHVzaW5nIHRoZWlyIGN1cnJlbnQgcGFzc3dvcmQuIElmIHRoZSBJZHBcbiAgLy8gcGFzc3dvcmQgY2hhbmdlIHByb2Nlc3MgZG9lcyBub3QgY29tcGxldGUgb3IgdGFrZXMgbG9uZ2VyIHRoYW4gdGhlIGxvY2tvdXQgcGVyaW9kLCB0aGUgYWNjb3VudCB3aWxsIG5vdCBiZSBhY2Nlc3NpYmxlIGFuZCBhIG5ld1xuICAvLyBMQk9QIHBhc3N3b3JkIHJlc2V0IG11c3QgYmUgY2FycmllZCBvdXQuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIHByaXZhdGUgYXN5bmMgdmVyaWZ5TGJvcHMoXG4gICAgY2hhbGxlbmdlUmVzdWx0OiBDaGFsbGVuZ2VSZXN1bHQsXG4gICAgbGJvcFN0cmluZzogc3RyaW5nXG4gICk6IFByb21pc2U8eyBsYm9wOiBhbnk7IHNpZ25lZENoYWxsZW5nZTogYW55OyBsYm9wS2V5OiBKV0suS2V5IH0+IHtcbiAgICBjb25zdCBjbGllbnROb25jZSA9IHRoaXMua2V5RmFjdG9yeS5yYW5kb21TdHJpbmcodGhpcy5DTElFTlRfTk9OQ0VfTEVOR1RIKTtcblxuICAgIGZvciAoY29uc3QgbGJvcCBvZiBjaGFsbGVuZ2VSZXN1bHQubGJvcHMpIHtcbiAgICAgIGNvbnN0IGxib3BLZXkgPSAoXG4gICAgICAgIGF3YWl0IHRoaXMua2V5RmFjdG9yeS5kZXJpdmVMYm9wS2V5KHtcbiAgICAgICAgICBwYXNzd29yZDogbGJvcFN0cmluZyxcbiAgICAgICAgICAuLi5sYm9wLmxib3BLZXlQYXJhbXMsXG4gICAgICAgIH0pXG4gICAgICApLmp3aztcblxuICAgICAgLy8gSWYgZGVjb2Rpbmcgc3VjY2Vzc2Z1bCB0aGVuIGl0J3MgdGhlIGNvcnJlY3QgbGJvcFxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbGJvcEtleVZlcmlmaWVyID0gKGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZGVjcnlwdChcbiAgICAgICAgICBsYm9wS2V5LFxuICAgICAgICAgIGxib3Aud3JhcHBlZExib3BLZXlWZXJpZmllclxuICAgICAgICApKSBhcyBhbnk7XG5cbiAgICAgICAgLy8gRm9yY2UgYSBiYWQgc2lnbmF0dXJlLlxuICAgICAgICAvLyBjb25zdCBzZXJ2ZXJOb25jZSA9IGNoYWxsZW5nZVJlc3VsdC5jaGFsbGVuZ2Uuc2VydmVyTm9uY2UgKyBcIjFcIixcblxuICAgICAgICBjb25zdCBzZXJ2ZXJOb25jZSA9IGNoYWxsZW5nZVJlc3VsdC5jaGFsbGVuZ2Uuc2VydmVyTm9uY2U7XG5cbiAgICAgICAgY29uc3Qgc2lnbmVkQ2hhbGxlbmdlID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5zaWduKFxuICAgICAgICAgIGxib3BLZXlWZXJpZmllcixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZXJ2ZXJOb25jZSxcbiAgICAgICAgICAgIGNsaWVudE5vbmNlLFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxib3AsXG4gICAgICAgICAgc2lnbmVkQ2hhbGxlbmdlLFxuICAgICAgICAgIGxib3BLZXksXG4gICAgICAgIH07XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IExyRXhjZXB0aW9uKHtcbiAgICAgIHNvdXJjZTogJ0xCT1AnLFxuICAgICAgY29kZTogJ0lOVkFMSURfUEFTU1BIUkFTRScsXG4gICAgICBtZXNzYWdlOiAnSW52YWxpZCBwYXNzcGhyYXNlLicsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdmVyaWZ5Q29udGFjdChcbiAgICBwYXJhbXM6IFZlcmlmeUNvbnRhY3RQYXJhbXNcbiAgKTogUHJvbWlzZTxWZXJpZnlDb250YWN0UmVzdWx0PiB7XG4gICAgY29uc3QgcmV0ID0gdGhpcy5odHRwXG4gICAgICAucG9zdDxWZXJpZnlDb250YWN0UmVzdWx0PihcbiAgICAgICAgYCR7dGhpcy5jb25maWcuYXV0aFVybH11c2Vycy9sYm9wLXJlc2V0L3ZlcmlmeS1jb250YWN0L2AsXG4gICAgICAgIHBhcmFtc1xuICAgICAgKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuXG4gICAgLy8gLS1Qb3RlbnRpYWwgRmFpbHVyZSBQb2ludCAxIC0tXG4gICAgLy8gVGhlIGNvbnRhY3QgdmVyaWZpY2F0aW9ucyBhcmUgdGhyb3R0bGVkLiBCdXQgb3RoZXJ3aXNlIGhhcm1sZXNzLlxuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjb25maXJtQ29udGFjdChcbiAgICBwYXJhbXM6IENvbmZpcm1Db250YWN0UGFyYW1zXG4gICk6IFByb21pc2U8Q29uZmlybUNvbnRhY3RSZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdDxDb25maXJtQ29udGFjdFJlc3VsdD4oYCR7dGhpcy5jb25maWcuYXV0aFVybH1jb3ZlL3Jlc3BvbmQvYCwge1xuICAgICAgICBjbGFpbV9pZDogcGFyYW1zLmNsYWltSWQsXG4gICAgICAgIHZfY29kZTogcGFyYW1zLnZDb2RlLFxuICAgICAgfSlcbiAgICAgIC50b1Byb21pc2UoKTtcblxuICAgIC8vIC0tUG90ZW50aWFsIEZhaWx1cmUgUG9pbnQgMiAtLVxuICAgIC8vIEEgdmVyaWZpZWQgY2xhaW0gZm9yIGEgY29udGFjdCBkb2VzIG5vdCBwcmV2ZW50IG5ldyBvbmVzIGZyb20gYmVpbmcgZ2VuZXJhdGVkLiBTbyBpdCBzaG91bGQgYmUgZmluZSB0byBqdXN0IHN0YXJ0IGFnYWluLlxuICB9XG5cbiAgcHVibGljIGFzeW5jIHZlcmlmeShwYXJhbXM6IFZlcmlmeVBhcmFtcyk6IFByb21pc2U8VmVyaWZ5UmVzdWx0PiB7XG4gICAgY29uc3QgY2hhbGxlbmdlUmVzdWx0ID0gYXdhaXQgdGhpcy5odHRwXG4gICAgICAucG9zdDxDaGFsbGVuZ2VSZXN1bHQ+KFxuICAgICAgICBgJHt0aGlzLmNvbmZpZy5hdXRoVXJsfXVzZXJzL2xib3AtcmVzZXQvZ2V0LWNoYWxsZW5nZS9gLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhaW1JZDogcGFyYW1zLmNsYWltSWQsXG4gICAgICAgICAgY2xhaW1Ub2tlbjogcGFyYW1zLmNsYWltVG9rZW4sXG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIC50b1Byb21pc2UoKTtcblxuICAgIC8vIC0tUG90ZW50aWFsIEZhaWx1cmUgUG9pbnQgMyAtLVxuICAgIC8vIFRoaXMgZG9lcyBub3QgbG9jayBhbnl0aGluZy4gQSBzZWNvbmQgY2FsbCB0byBcImdldC1jaGFsbGVuZ2UvXCIgd2lsbCBjcmVhdGUgYSBuZXcgY2hhbGxlbmdlIGFtZCBpbnZhbGlkYXRlIHRoZSBmaXJzdCBvbmUuXG4gICAgY29uc3QgeyBzaWduZWRDaGFsbGVuZ2UsIGxib3AsIGxib3BLZXkgfSA9IGF3YWl0IHRoaXMudmVyaWZ5TGJvcHMoXG4gICAgICBjaGFsbGVuZ2VSZXN1bHQsXG4gICAgICBwYXJhbXMubGJvcFxuICAgICk7XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PGFueT4oYCR7dGhpcy5jb25maWcuYXV0aFVybH11c2Vycy9sYm9wLXJlc2V0L3ZlcmlmeS1jaGFsbGVuZ2UvYCwge1xuICAgICAgICBsYm9wSWQ6IGxib3AubGJvcElkLFxuICAgICAgICBzaWduZWRDaGFsbGVuZ2UsXG4gICAgICB9KVxuICAgICAgLnRvUHJvbWlzZSgpO1xuXG4gICAgLy8gLS1Qb3RlbnRpYWwgRmFpbHVyZSBQb2ludCA0IC0tXG4gICAgLy8gVGhpcyBkb2VzIG5vdCBsb2NrIGFueXRoaW5nLiBTbyBvayB0byByZXN0YXJ0LlxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxib3BJZDogbGJvcC5sYm9wSWQsXG4gICAgICB2ZXJpZmllZFRva2VuOiByZXMudmVyaWZpZWRUb2tlbixcbiAgICAgIG1hc3RlcktleUlkOiByZXMubWFzdGVyS2V5SWQsXG4gICAgICBtYXN0ZXJLZXk6IGF3YWl0IEtGUy5hc0tleShcbiAgICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5kZWNyeXB0KGxib3BLZXksIHJlcy53cmFwcGVkTWFzdGVyS2V5KVxuICAgICAgKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNldFBhc3N3b3JkKHBhcmFtczogU2V0UGFzc3dvcmRQYXJhbXMpOiBQcm9taXNlPGFueT4ge1xuICAgIC8vIEdlbmVyYXRlIHRoZSBuZXcgcGFzc3dvcmQgZGVyaXZlZCBrZXlzXG4gICAgY29uc3QgcGFzc0tleUJ1bmRsZSA9IGF3YWl0IHRoaXMucGFzc3dvcmRTZXJ2aWNlLmNyZWF0ZVBhc3NLZXlCdW5kbGUoXG4gICAgICBwYXJhbXMubmV3UGFzc3dvcmRcbiAgICApO1xuXG4gICAgLy8gUmUtZW5jcnlwdCBtYXN0ZXIga2V5IHdpdGggbmV3IGtleVxuICAgIGNvbnN0IG5ld1dyYXBwZWRNYXN0ZXJLZXkgPSBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHQoXG4gICAgICBwYXNzS2V5QnVuZGxlLnBhc3NLZXksXG4gICAgICBwYXJhbXMubWFzdGVyS2V5LnRvSlNPTih0cnVlKVxuICAgICk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PFNldFBhc3N3b3JkQXBpUmVzdWx0PihcbiAgICAgICAgYCR7dGhpcy5jb25maWcuYXV0aFVybH11c2Vycy9sYm9wLXJlc2V0L3NldC1wYXNzd29yZC9gLFxuICAgICAgICB7XG4gICAgICAgICAgbGJvcElkOiBwYXJhbXMubGJvcElkLFxuICAgICAgICAgIHZlcmlmaWVkVG9rZW46IHBhcmFtcy52ZXJpZmllZFRva2VuLFxuICAgICAgICAgIG1hc3RlcktleUlkOiBwYXJhbXMubWFzdGVyS2V5SWQsXG4gICAgICAgICAgbmV3V3JhcHBlZE1hc3RlcktleSxcbiAgICAgICAgICBuZXdQYXNzS2V5OiB7XG4gICAgICAgICAgICBwYXNzS2V5UGFyYW1zOiBwYXNzS2V5QnVuZGxlLnBhc3NLZXlQYXJhbXMsXG4gICAgICAgICAgICBwYXNzSWRwUGFyYW1zOiBwYXNzS2V5QnVuZGxlLnBhc3NJZHBQYXJhbXMsXG4gICAgICAgICAgICBwYXNzSWRwVmVyaWZpZXJQYms6IHBhc3NLZXlCdW5kbGUucGFzc0lkcFZlcmlmaWVyLnRvSlNPTigpLFxuICAgICAgICAgICAgd3JhcHBlZFBhc3NJZHBWZXJpZmllclByazogcGFzc0tleUJ1bmRsZS53cmFwcGVkUGFzc0lkcFZlcmlmaWVyUHJrLFxuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIC50b1Byb21pc2UoKTtcblxuICAgIC8vIC0tUG90ZW50aWFsIEZhaWx1cmUgUG9pbnQgNSAtLVxuICAgIC8vIEEgdGltZWQgbXV0ZXggaXMgbG9ja2VkLiBUaGUgSWRwIHBhc3N3b3JkIGNoYW5nZSBtdXN0IG9jY3VyIHdpdGhpbiBhIHBlcmlvZCBvZiB0aW1lLlxuICAgIC8vIElmIGludGVycnVwdGVkIGhlcmUsIHRoZSB1c2VyIGNhbiBub3QgbG9naW4gd2l0aCB0aGVpciBvbGQgcGFzc3dvcmQgYWdhaW4uIFRoZXkgbXVzdFxuICAgIC8vIHN0YXJ0IHRoZSB3aG9sZSBMQk9QIHBhc3N3b3JkIHJlc2V0IHByb2Nlc3MgYWdhaW4uXG5cbiAgICAvLyBUaGlzIGNhbGwgd2lsbCBnbyB0aHJvdWdoIHRoZSBMUiBwcm94eSB3aGljaCBpcyBPSyBzaW5jZSB0aGUgTFIgc2VydmVyIGtub3dzXG4gICAgLy8gdGhlIHRlbXBvcmFyeSBwYXNzd29yZCBhbnl3YXkuXG4gICAgbGV0IHVzZXIgPSBhd2FpdCB0aGlzLmF1dGguc2lnbkluKHJlc3VsdC51c2VybmFtZSwgcmVzdWx0LmlkcFBhc3N3b3JkLCB7XG4gICAgICBub1Byb3h5OiAndHJ1ZScsXG4gICAgfSk7XG5cbiAgICBpZiAodXNlci5jaGFsbGVuZ2VOYW1lICE9PSAnTkVXX1BBU1NXT1JEX1JFUVVJUkVEJykge1xuICAgICAgdGhyb3cgbmV3IExyRXhjZXB0aW9uKHtcbiAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAnSW50ZXJuYWwgZXJyb3IuIEV4cGVjdGluZyBDb2duaXRvIHRvIGhhdmUgZG9uZSBhIHBhc3N3b3JkIHJlc2V0LicsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyAtLVBvdGVudGlhbCBGYWlsdXJlIFBvaW50IDYgLS1cbiAgICAvLyBNdXN0IHJlc3RhcnQgdGhlIExCT1AgcGFzc3dvcmQgcmVzZXQgcHJvY2VzcyBhZ2Fpbi5cblxuICAgIC8vIFNldCBuZXcgcGFzc3dvcmQgb24gSWRwXG4gICAgdXNlciA9IGF3YWl0IHRoaXMuYXV0aC5jb21wbGV0ZU5ld1Bhc3N3b3JkKFxuICAgICAgdXNlcixcbiAgICAgIHRoaXMucGFzc3dvcmRTZXJ2aWNlLmdldFBhc3NJZHBTdHJpbmcocGFzc0tleUJ1bmRsZS5wYXNzSWRwKSxcbiAgICAgIHt9XG4gICAgKTtcblxuICAgIC8vIC0tUG90ZW50aWFsIEZhaWx1cmUgUG9pbnQgNyAtLVxuICAgIC8vIE11c3QgcmVzdGFydCB0aGUgTEJPUCBwYXNzd29yZCByZXNldCBwcm9jZXNzIGFnYWluLlxuXG4gICAgYXdhaXQgdGhpcy5hdXRoLnNpZ25PdXQoKTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PGFueT4oYCR7dGhpcy5jb25maWcuYXV0aFVybH11c2Vycy9sYm9wLXJlc2V0L2NvbXBsZXRlL2AsIHtcbiAgICAgICAgbGJvcElkOiBwYXJhbXMubGJvcElkLFxuICAgICAgICBzZXRQYXNzd29yZFRva2VuOiByZXN1bHQuc2V0UGFzc3dvcmRUb2tlbixcbiAgICAgIH0pXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -2,22 +2,11 @@ import { HttpClientModule } from '@angular/common/http';
2
2
  import { APP_INITIALIZER, NgModule } from '@angular/core';
3
3
  import Auth from '@aws-amplify/auth';
4
4
  import { AuthClass } from '@aws-amplify/auth/lib-esm/Auth';
5
+ import { NgIdleKeepaliveModule } from '@ng-idle/keepalive';
5
6
  import { APOLLO_OPTIONS } from 'apollo-angular';
6
- import { CookieService } from 'ngx-cookie-service';
7
- import { FileService } from './api/file.service';
8
- import { ProfileService } from './users/profile.service';
9
7
  import { configureAmplifyAuth } from './auth/auth.config';
10
8
  import { initialiseAuth, LifeReadyAuthService, } from './auth/life-ready-auth.service';
11
- import { PasswordService } from './auth/password.service';
12
- import { RegisterService } from './auth/register.service';
13
- import { EncryptionService } from './cryptography/encryption.service';
14
- import { KeyGraphService } from './cryptography/key-graph.service';
15
- import { KeyService } from './cryptography/key.service';
16
- import { KeyFactoryService } from './cryptography/key-factory.service';
17
- import { WebCryptoService } from './cryptography/web-crypto.service';
18
9
  import { configureApollo, LR_CONFIG, } from './life-ready.config';
19
- import { TimeService } from './api/time.service';
20
- import { NgIdleKeepaliveModule } from '@ng-idle/keepalive';
21
10
  export class LifeReadyModule {
22
11
  static forRoot(config) {
23
12
  return {
@@ -55,20 +44,6 @@ export class LifeReadyModule {
55
44
  LifeReadyModule.decorators = [
56
45
  { type: NgModule, args: [{
57
46
  imports: [HttpClientModule, NgIdleKeepaliveModule.forRoot()],
58
- providers: [
59
- CookieService,
60
- TimeService,
61
- FileService,
62
- ProfileService,
63
- RegisterService,
64
- LifeReadyAuthService,
65
- PasswordService,
66
- WebCryptoService,
67
- EncryptionService,
68
- KeyGraphService,
69
- KeyService,
70
- KeyFactoryService,
71
- ],
72
47
  },] }
73
48
  ];
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZS1yZWFkeS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiL29wdC9hdGxhc3NpYW4vcGlwZWxpbmVzL2FnZW50L2J1aWxkL3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL2xpZmUtcmVhZHkubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLElBQUksTUFBTSxtQkFBbUIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFELE9BQU8sRUFDTCxjQUFjLEVBQ2Qsb0JBQW9CLEdBQ3JCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFDTCxlQUFlLEVBRWYsU0FBUyxHQUNWLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBbUIzRCxNQUFNLE9BQU8sZUFBZTtJQUNuQixNQUFNLENBQUMsT0FBTyxDQUNuQixNQUF1QjtRQUV2QixPQUFPO1lBQ0wsUUFBUSxFQUFFLGVBQWU7WUFDekIsU0FBUyxFQUFFO2dCQUNUO29CQUNFLE9BQU8sRUFBRSxTQUFTO29CQUNsQixRQUFRLEVBQUUsTUFBTTtpQkFDakI7Z0JBQ0Q7b0JBQ0UsT0FBTyxFQUFFLFNBQVM7b0JBQ2xCLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2dCQUNEO29CQUNFLE9BQU8sRUFBRSxlQUFlO29CQUN4QixVQUFVLEVBQUUsb0JBQW9CO29CQUNoQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDO29CQUM1QixLQUFLLEVBQUUsSUFBSTtpQkFDWjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsZUFBZTtvQkFDeEIsVUFBVSxFQUFFLGNBQWM7b0JBQzFCLElBQUksRUFBRSxDQUFDLG9CQUFvQixDQUFDO29CQUM1QixLQUFLLEVBQUUsSUFBSTtpQkFDWjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsY0FBYztvQkFDdkIsVUFBVSxFQUFFLGVBQWU7b0JBQzNCLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUM7aUJBQzdCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7O1lBbkRGLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDNUQsU0FBUyxFQUFFO29CQUNULGFBQWE7b0JBQ2IsV0FBVztvQkFDWCxXQUFXO29CQUNYLGNBQWM7b0JBQ2QsZUFBZTtvQkFDZixvQkFBb0I7b0JBQ3BCLGVBQWU7b0JBQ2YsZ0JBQWdCO29CQUNoQixpQkFBaUI7b0JBQ2pCLGVBQWU7b0JBQ2YsVUFBVTtvQkFDVixpQkFBaUI7aUJBQ2xCO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IEF1dGggZnJvbSAnQGF3cy1hbXBsaWZ5L2F1dGgnO1xuaW1wb3J0IHsgQXV0aENsYXNzIH0gZnJvbSAnQGF3cy1hbXBsaWZ5L2F1dGgvbGliLWVzbS9BdXRoJztcbmltcG9ydCB7IEFQT0xMT19PUFRJT05TIH0gZnJvbSAnYXBvbGxvLWFuZ3VsYXInO1xuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJ25neC1jb29raWUtc2VydmljZSc7XG5pbXBvcnQgeyBGaWxlU2VydmljZSB9IGZyb20gJy4vYXBpL2ZpbGUuc2VydmljZSc7XG5pbXBvcnQgeyBQcm9maWxlU2VydmljZSB9IGZyb20gJy4vdXNlcnMvcHJvZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IGNvbmZpZ3VyZUFtcGxpZnlBdXRoIH0gZnJvbSAnLi9hdXRoL2F1dGguY29uZmlnJztcbmltcG9ydCB7XG4gIGluaXRpYWxpc2VBdXRoLFxuICBMaWZlUmVhZHlBdXRoU2VydmljZSxcbn0gZnJvbSAnLi9hdXRoL2xpZmUtcmVhZHktYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IFBhc3N3b3JkU2VydmljZSB9IGZyb20gJy4vYXV0aC9wYXNzd29yZC5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZ2lzdGVyU2VydmljZSB9IGZyb20gJy4vYXV0aC9yZWdpc3Rlci5zZXJ2aWNlJztcbmltcG9ydCB7IEVuY3J5cHRpb25TZXJ2aWNlIH0gZnJvbSAnLi9jcnlwdG9ncmFwaHkvZW5jcnlwdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUdyYXBoU2VydmljZSB9IGZyb20gJy4vY3J5cHRvZ3JhcGh5L2tleS1ncmFwaC5zZXJ2aWNlJztcbmltcG9ydCB7IEtleVNlcnZpY2UgfSBmcm9tICcuL2NyeXB0b2dyYXBoeS9rZXkuc2VydmljZSc7XG5pbXBvcnQgeyBLZXlGYWN0b3J5U2VydmljZSB9IGZyb20gJy4vY3J5cHRvZ3JhcGh5L2tleS1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgV2ViQ3J5cHRvU2VydmljZSB9IGZyb20gJy4vY3J5cHRvZ3JhcGh5L3dlYi1jcnlwdG8uc2VydmljZSc7XG5pbXBvcnQge1xuICBjb25maWd1cmVBcG9sbG8sXG4gIExpZmVSZWFkeUNvbmZpZyxcbiAgTFJfQ09ORklHLFxufSBmcm9tICcuL2xpZmUtcmVhZHkuY29uZmlnJztcbmltcG9ydCB7IFRpbWVTZXJ2aWNlIH0gZnJvbSAnLi9hcGkvdGltZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5nSWRsZUtlZXBhbGl2ZU1vZHVsZSB9IGZyb20gJ0BuZy1pZGxlL2tlZXBhbGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtIdHRwQ2xpZW50TW9kdWxlLCBOZ0lkbGVLZWVwYWxpdmVNb2R1bGUuZm9yUm9vdCgpXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgQ29va2llU2VydmljZSxcbiAgICBUaW1lU2VydmljZSxcbiAgICBGaWxlU2VydmljZSxcbiAgICBQcm9maWxlU2VydmljZSxcbiAgICBSZWdpc3RlclNlcnZpY2UsXG4gICAgTGlmZVJlYWR5QXV0aFNlcnZpY2UsXG4gICAgUGFzc3dvcmRTZXJ2aWNlLFxuICAgIFdlYkNyeXB0b1NlcnZpY2UsXG4gICAgRW5jcnlwdGlvblNlcnZpY2UsXG4gICAgS2V5R3JhcGhTZXJ2aWNlLFxuICAgIEtleVNlcnZpY2UsXG4gICAgS2V5RmFjdG9yeVNlcnZpY2UsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIExpZmVSZWFkeU1vZHVsZSB7XG4gIHB1YmxpYyBzdGF0aWMgZm9yUm9vdChcbiAgICBjb25maWc6IExpZmVSZWFkeUNvbmZpZ1xuICApOiBNb2R1bGVXaXRoUHJvdmlkZXJzPExpZmVSZWFkeU1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogTGlmZVJlYWR5TW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBMUl9DT05GSUcsXG4gICAgICAgICAgdXNlVmFsdWU6IGNvbmZpZyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IEF1dGhDbGFzcyxcbiAgICAgICAgICB1c2VWYWx1ZTogQXV0aCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgICAgICB1c2VGYWN0b3J5OiBjb25maWd1cmVBbXBsaWZ5QXV0aCxcbiAgICAgICAgICBkZXBzOiBbTFJfQ09ORklHLCBBdXRoQ2xhc3NdLFxuICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IGluaXRpYWxpc2VBdXRoLFxuICAgICAgICAgIGRlcHM6IFtMaWZlUmVhZHlBdXRoU2VydmljZV0sXG4gICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBBUE9MTE9fT1BUSU9OUyxcbiAgICAgICAgICB1c2VGYWN0b3J5OiBjb25maWd1cmVBcG9sbG8sXG4gICAgICAgICAgZGVwczogW0xSX0NPTkZJRywgQXV0aENsYXNzXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxufVxuIl19
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZS1yZWFkeS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiL29wdC9hdGxhc3NpYW4vcGlwZWxpbmVzL2FnZW50L2J1aWxkL3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL2xpZmUtcmVhZHkubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLElBQUksTUFBTSxtQkFBbUIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFELE9BQU8sRUFDTCxjQUFjLEVBQ2Qsb0JBQW9CLEdBQ3JCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUNMLGVBQWUsRUFFZixTQUFTLEdBQ1YsTUFBTSxxQkFBcUIsQ0FBQztBQUs3QixNQUFNLE9BQU8sZUFBZTtJQUNuQixNQUFNLENBQUMsT0FBTyxDQUNuQixNQUF1QjtRQUV2QixPQUFPO1lBQ0wsUUFBUSxFQUFFLGVBQWU7WUFDekIsU0FBUyxFQUFFO2dCQUNUO29CQUNFLE9BQU8sRUFBRSxTQUFTO29CQUNsQixRQUFRLEVBQUUsTUFBTTtpQkFDakI7Z0JBQ0Q7b0JBQ0UsT0FBTyxFQUFFLFNBQVM7b0JBQ2xCLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2dCQUNEO29CQUNFLE9BQU8sRUFBRSxlQUFlO29CQUN4QixVQUFVLEVBQUUsb0JBQW9CO29CQUNoQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDO29CQUM1QixLQUFLLEVBQUUsSUFBSTtpQkFDWjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsZUFBZTtvQkFDeEIsVUFBVSxFQUFFLGNBQWM7b0JBQzFCLElBQUksRUFBRSxDQUFDLG9CQUFvQixDQUFDO29CQUM1QixLQUFLLEVBQUUsSUFBSTtpQkFDWjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsY0FBYztvQkFDdkIsVUFBVSxFQUFFLGVBQWU7b0JBQzNCLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUM7aUJBQzdCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7O1lBckNGLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUM3RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBBUFBfSU5JVElBTElaRVIsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgQXV0aCBmcm9tICdAYXdzLWFtcGxpZnkvYXV0aCc7XG5pbXBvcnQgeyBBdXRoQ2xhc3MgfSBmcm9tICdAYXdzLWFtcGxpZnkvYXV0aC9saWItZXNtL0F1dGgnO1xuaW1wb3J0IHsgTmdJZGxlS2VlcGFsaXZlTW9kdWxlIH0gZnJvbSAnQG5nLWlkbGUva2VlcGFsaXZlJztcbmltcG9ydCB7IEFQT0xMT19PUFRJT05TIH0gZnJvbSAnYXBvbGxvLWFuZ3VsYXInO1xuaW1wb3J0IHsgY29uZmlndXJlQW1wbGlmeUF1dGggfSBmcm9tICcuL2F1dGgvYXV0aC5jb25maWcnO1xuaW1wb3J0IHtcbiAgaW5pdGlhbGlzZUF1dGgsXG4gIExpZmVSZWFkeUF1dGhTZXJ2aWNlLFxufSBmcm9tICcuL2F1dGgvbGlmZS1yZWFkeS1hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgY29uZmlndXJlQXBvbGxvLFxuICBMaWZlUmVhZHlDb25maWcsXG4gIExSX0NPTkZJRyxcbn0gZnJvbSAnLi9saWZlLXJlYWR5LmNvbmZpZyc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtIdHRwQ2xpZW50TW9kdWxlLCBOZ0lkbGVLZWVwYWxpdmVNb2R1bGUuZm9yUm9vdCgpXSxcbn0pXG5leHBvcnQgY2xhc3MgTGlmZVJlYWR5TW9kdWxlIHtcbiAgcHVibGljIHN0YXRpYyBmb3JSb290KFxuICAgIGNvbmZpZzogTGlmZVJlYWR5Q29uZmlnXG4gICk6IE1vZHVsZVdpdGhQcm92aWRlcnM8TGlmZVJlYWR5TW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBMaWZlUmVhZHlNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IExSX0NPTkZJRyxcbiAgICAgICAgICB1c2VWYWx1ZTogY29uZmlnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQXV0aENsYXNzLFxuICAgICAgICAgIHVzZVZhbHVlOiBBdXRoLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IGNvbmZpZ3VyZUFtcGxpZnlBdXRoLFxuICAgICAgICAgIGRlcHM6IFtMUl9DT05GSUcsIEF1dGhDbGFzc10sXG4gICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICAgICAgdXNlRmFjdG9yeTogaW5pdGlhbGlzZUF1dGgsXG4gICAgICAgICAgZGVwczogW0xpZmVSZWFkeUF1dGhTZXJ2aWNlXSxcbiAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IEFQT0xMT19PUFRJT05TLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IGNvbmZpZ3VyZUFwb2xsbyxcbiAgICAgICAgICBkZXBzOiBbTFJfQ09ORklHLCBBdXRoQ2xhc3NdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,40 @@
1
+ import { gqlTyped } from '../_common/ast';
2
+ export const LockFragment = gqlTyped `
3
+ fragment LockFragment on LockField {
4
+ created
5
+ modified
6
+ version
7
+ expiryTime
8
+ state
9
+ }`;
10
+ export const UpdateLockMutation = gqlTyped `
11
+ mutation UpdateLockMutation($input: UpdateLockInput!) {
12
+ updateLock(input: $input) {
13
+ lock {
14
+ ...LockFragment
15
+ }
16
+ }
17
+ }
18
+ ${LockFragment}
19
+ `;
20
+ export const AcquireLockMutation = gqlTyped `
21
+ mutation AcquireLockMutation($input: AcquireLockInput!) {
22
+ acquireLock(input: $input) {
23
+ lock {
24
+ ...LockFragment
25
+ }
26
+ }
27
+ }
28
+ ${LockFragment}
29
+ `;
30
+ export const ReleaseLockMutation = gqlTyped `
31
+ mutation ReleaseLockMutation($input: ReleaseLockInput!) {
32
+ releaseLock(input: $input) {
33
+ lock {
34
+ ...LockFragment
35
+ }
36
+ }
37
+ }
38
+ ${LockFragment}
39
+ `;
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jay5ncWwuanMiLCJzb3VyY2VSb290IjoiL29wdC9hdGxhc3NpYW4vcGlwZWxpbmVzL2FnZW50L2J1aWxkL3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL2xvY2svbG9jay5ncWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUzFDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxRQUFRLENBQW9COzs7Ozs7O0VBT3RELENBQUM7QUFPSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQTBCOzs7Ozs7OztFQVFsRSxZQUFZO0NBQ2IsQ0FBQztBQU9GLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLFFBQVEsQ0FBMkI7Ozs7Ozs7O0VBUXBFLFlBQVk7Q0FDYixDQUFDO0FBT0YsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUEyQjs7Ozs7Ozs7RUFRcEUsWUFBWTtDQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlVGltZSwgTG9ja1N0YXRlLCBVVUlEIH0gZnJvbSAnLi4vYXBpL3R5cGVzJztcbmltcG9ydCB7IGdxbFR5cGVkIH0gZnJvbSAnLi4vX2NvbW1vbi9hc3QnO1xuXG5leHBvcnQgaW50ZXJmYWNlIExvY2tGcmFnbWVudFJlc3VsdCB7XG4gIGNyZWF0ZWQ6IERhdGVUaW1lO1xuICBtb2RpZmllZDogRGF0ZVRpbWU7XG4gIHZlcnNpb24/OiBVVUlEO1xuICBleHBpcnlUaW1lOiBEYXRlVGltZTtcbiAgc3RhdGU6IExvY2tTdGF0ZTtcbn1cbmV4cG9ydCBjb25zdCBMb2NrRnJhZ21lbnQgPSBncWxUeXBlZDxMb2NrRnJhZ21lbnRSZXN1bHQ+YFxuZnJhZ21lbnQgTG9ja0ZyYWdtZW50IG9uIExvY2tGaWVsZCB7XG4gIGNyZWF0ZWRcbiAgbW9kaWZpZWRcbiAgdmVyc2lvblxuICBleHBpcnlUaW1lXG4gIHN0YXRlXG59YDtcblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVMb2NrTXV0YXRpb25SZXN1bHQge1xuICB1cGRhdGVMb2NrOiB7XG4gICAgbG9jazogTG9ja0ZyYWdtZW50UmVzdWx0O1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IFVwZGF0ZUxvY2tNdXRhdGlvbiA9IGdxbFR5cGVkPFVwZGF0ZUxvY2tNdXRhdGlvblJlc3VsdD5gXG5tdXRhdGlvbiBVcGRhdGVMb2NrTXV0YXRpb24oJGlucHV0OiBVcGRhdGVMb2NrSW5wdXQhKSB7XG4gIHVwZGF0ZUxvY2soaW5wdXQ6ICRpbnB1dCkge1xuICAgIGxvY2sge1xuICAgICAgLi4uTG9ja0ZyYWdtZW50XG4gICAgfVxuICB9XG59XG4ke0xvY2tGcmFnbWVudH1cbmA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWNxdWlyZUxvY2tNdXRhdGlvblJlc3VsdCB7XG4gIGFjcXVpcmVMb2NrOiB7XG4gICAgbG9jazogTG9ja0ZyYWdtZW50UmVzdWx0O1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IEFjcXVpcmVMb2NrTXV0YXRpb24gPSBncWxUeXBlZDxBY3F1aXJlTG9ja011dGF0aW9uUmVzdWx0PmBcbm11dGF0aW9uIEFjcXVpcmVMb2NrTXV0YXRpb24oJGlucHV0OiBBY3F1aXJlTG9ja0lucHV0ISkge1xuICBhY3F1aXJlTG9jayhpbnB1dDogJGlucHV0KSB7XG4gICAgbG9jayB7XG4gICAgICAuLi5Mb2NrRnJhZ21lbnRcbiAgICB9XG4gIH1cbn1cbiR7TG9ja0ZyYWdtZW50fVxuYDtcblxuZXhwb3J0IGludGVyZmFjZSBSZWxlYXNlTG9ja011dGF0aW9uUmVzdWx0IHtcbiAgcmVsZWFzZUxvY2s6IHtcbiAgICBsb2NrOiBMb2NrRnJhZ21lbnRSZXN1bHQ7XG4gIH07XG59XG5leHBvcnQgY29uc3QgUmVsZWFzZUxvY2tNdXRhdGlvbiA9IGdxbFR5cGVkPFJlbGVhc2VMb2NrTXV0YXRpb25SZXN1bHQ+YFxubXV0YXRpb24gUmVsZWFzZUxvY2tNdXRhdGlvbigkaW5wdXQ6IFJlbGVhc2VMb2NrSW5wdXQhKSB7XG4gIHJlbGVhc2VMb2NrKGlucHV0OiAkaW5wdXQpIHtcbiAgICBsb2NrIHtcbiAgICAgIC4uLkxvY2tGcmFnbWVudFxuICAgIH1cbiAgfVxufVxuJHtMb2NrRnJhZ21lbnR9XG5gO1xuIl19
@@ -0,0 +1,64 @@
1
+ import { __decorate } from "tslib";
2
+ import { Injectable, Injector, NgZone } from '@angular/core';
3
+ import { LrMutation, LrService } from '../api/lr-graphql';
4
+ import { RunOutsideAngular } from '../_common/run-outside-angular';
5
+ import { AcquireLockMutation, ReleaseLockMutation, UpdateLockMutation, } from './lock.gql';
6
+ import * as i0 from "@angular/core";
7
+ let LockService = class LockService extends LrService {
8
+ constructor(ngZone, injector) {
9
+ super(injector);
10
+ this.ngZone = ngZone;
11
+ this.injector = injector;
12
+ }
13
+ // Updating the lock version is always to be down along with another mutation.
14
+ updateLockMutation(options) {
15
+ return new LrMutation({
16
+ mutation: UpdateLockMutation,
17
+ variables: {
18
+ input: {
19
+ resourceId: options.resourceId,
20
+ version: options.version,
21
+ },
22
+ },
23
+ });
24
+ }
25
+ acquireLockMutation(options) {
26
+ return new LrMutation({
27
+ mutation: AcquireLockMutation,
28
+ variables: {
29
+ input: {
30
+ resourceId: options.resourceId,
31
+ timeoutMs: options.timeoutMs,
32
+ },
33
+ },
34
+ });
35
+ }
36
+ releaseLockMutation(options) {
37
+ return new LrMutation({
38
+ mutation: ReleaseLockMutation,
39
+ variables: {
40
+ input: {
41
+ resourceId: options.resourceId,
42
+ version: options.version,
43
+ },
44
+ },
45
+ });
46
+ }
47
+ };
48
+ LockService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LockService_Factory() { return new LockService(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i0.INJECTOR)); }, token: LockService, providedIn: "root" });
49
+ LockService.decorators = [
50
+ { type: Injectable, args: [{
51
+ providedIn: 'root',
52
+ },] }
53
+ ];
54
+ LockService.ctorParameters = () => [
55
+ { type: NgZone },
56
+ { type: Injector }
57
+ ];
58
+ LockService = __decorate([
59
+ RunOutsideAngular({
60
+ ngZoneName: 'ngZone',
61
+ })
62
+ ], LockService);
63
+ export { LockService };
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9vcHQvYXRsYXNzaWFuL3BpcGVsaW5lcy9hZ2VudC9idWlsZC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9sb2NrL2xvY2suc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsa0JBQWtCLEdBQ25CLE1BQU0sWUFBWSxDQUFDOztJQVFQLFdBQVcsU0FBWCxXQUFZLFNBQVEsU0FBUztJQUN4QyxZQUFvQixNQUFjLEVBQVUsUUFBa0I7UUFDNUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBREUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVU7SUFFOUQsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxrQkFBa0IsQ0FBQyxPQUFpRDtRQUNsRSxPQUFPLElBQUksVUFBVSxDQUFDO1lBQ3BCLFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsU0FBUyxFQUFFO2dCQUNULEtBQUssRUFBRTtvQkFDTCxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7b0JBQzlCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztpQkFDekI7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxPQUFtRDtRQUNyRSxPQUFPLElBQUksVUFBVSxDQUFDO1lBQ3BCLFFBQVEsRUFBRSxtQkFBbUI7WUFDN0IsU0FBUyxFQUFFO2dCQUNULEtBQUssRUFBRTtvQkFDTCxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7b0JBQzlCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztpQkFDN0I7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxPQUFnRDtRQUNsRSxPQUFPLElBQUksVUFBVSxDQUFDO1lBQ3BCLFFBQVEsRUFBRSxtQkFBbUI7WUFDN0IsU0FBUyxFQUFFO2dCQUNULEtBQUssRUFBRTtvQkFDTCxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7b0JBQzlCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztpQkFDekI7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFBOzs7WUE1Q0EsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFkOEIsTUFBTTtZQUFoQixRQUFROztBQWVoQixXQUFXO0lBTnZCLGlCQUFpQixDQUFDO1FBQ2pCLFVBQVUsRUFBRSxRQUFRO0tBQ3JCLENBQUM7R0FJVyxXQUFXLENBeUN2QjtTQXpDWSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTHJNdXRhdGlvbiwgTHJTZXJ2aWNlIH0gZnJvbSAnLi4vYXBpL2xyLWdyYXBocWwnO1xuaW1wb3J0IHsgUnVuT3V0c2lkZUFuZ3VsYXIgfSBmcm9tICcuLi9fY29tbW9uL3J1bi1vdXRzaWRlLWFuZ3VsYXInO1xuaW1wb3J0IHtcbiAgQWNxdWlyZUxvY2tNdXRhdGlvbixcbiAgUmVsZWFzZUxvY2tNdXRhdGlvbixcbiAgVXBkYXRlTG9ja011dGF0aW9uLFxufSBmcm9tICcuL2xvY2suZ3FsJztcblxuQFJ1bk91dHNpZGVBbmd1bGFyKHtcbiAgbmdab25lTmFtZTogJ25nWm9uZScsXG59KVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExvY2tTZXJ2aWNlIGV4dGVuZHMgTHJTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gIH1cblxuICAvLyBVcGRhdGluZyB0aGUgbG9jayB2ZXJzaW9uIGlzIGFsd2F5cyB0byBiZSBkb3duIGFsb25nIHdpdGggYW5vdGhlciBtdXRhdGlvbi5cbiAgdXBkYXRlTG9ja011dGF0aW9uKG9wdGlvbnM6IHsgcmVzb3VyY2VJZD86IHN0cmluZzsgdmVyc2lvbjogc3RyaW5nIH0pIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IFVwZGF0ZUxvY2tNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIHJlc291cmNlSWQ6IG9wdGlvbnMucmVzb3VyY2VJZCxcbiAgICAgICAgICB2ZXJzaW9uOiBvcHRpb25zLnZlcnNpb24sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYWNxdWlyZUxvY2tNdXRhdGlvbihvcHRpb25zOiB7IHJlc291cmNlSWQ/OiBzdHJpbmc7IHRpbWVvdXRNczogbnVtYmVyIH0pIHtcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IEFjcXVpcmVMb2NrTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICByZXNvdXJjZUlkOiBvcHRpb25zLnJlc291cmNlSWQsXG4gICAgICAgICAgdGltZW91dE1zOiBvcHRpb25zLnRpbWVvdXRNcyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByZWxlYXNlTG9ja011dGF0aW9uKG9wdGlvbnM6IHsgcmVzb3VyY2VJZDogc3RyaW5nOyB2ZXJzaW9uOiBzdHJpbmcgfSkge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogUmVsZWFzZUxvY2tNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIHJlc291cmNlSWQ6IG9wdGlvbnMucmVzb3VyY2VJZCxcbiAgICAgICAgICB2ZXJzaW9uOiBvcHRpb25zLnZlcnNpb24sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,32 @@
1
+ import { gqlTyped } from '../_common/ast';
2
+ export const SendMessageMutation = gqlTyped `
3
+ mutation SendMessageMutation($input: SendMessageInput!) {
4
+ sendMessage(input: $input) {
5
+ message {
6
+ id
7
+ }
8
+ }
9
+ }
10
+ `;
11
+ export const MessageQuery = gqlTyped `
12
+ query MessageQuery($id: LrRelayIdInput!) {
13
+ message(id: $id) {
14
+ id
15
+ sender {
16
+ username
17
+ }
18
+ receiver {
19
+ username
20
+ }
21
+ plainMessage
22
+ signedCipherMessage
23
+ sharedKey {
24
+ id
25
+ }
26
+ senderSigPbk {
27
+ id
28
+ }
29
+ }
30
+ }
31
+ `;
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5ncWwuanMiLCJzb3VyY2VSb290IjoiL29wdC9hdGxhc3NpYW4vcGlwZWxpbmVzL2FnZW50L2J1aWxkL3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL21lc3NhZ2UvbWVzc2FnZS5ncWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUzFDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLFFBQVEsQ0FBMkI7Ozs7Ozs7O0NBUXJFLENBQUM7QUFLRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FvQnZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJRCwgTWVzc2FnZU5vZGUgfSBmcm9tICcuLi9hcGkvdHlwZXMnO1xuaW1wb3J0IHsgZ3FsVHlwZWQgfSBmcm9tICcuLi9fY29tbW9uL2FzdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VuZE1lc3NhZ2VNdXRhdGlvblJlc3VsdCB7XG4gIHNlbmRNZXNzYWdlOiB7XG4gICAgbWVzc2FnZToge1xuICAgICAgaWQ6IElEO1xuICAgIH07XG4gIH07XG59XG5leHBvcnQgY29uc3QgU2VuZE1lc3NhZ2VNdXRhdGlvbiA9IGdxbFR5cGVkPFNlbmRNZXNzYWdlTXV0YXRpb25SZXN1bHQ+YFxubXV0YXRpb24gU2VuZE1lc3NhZ2VNdXRhdGlvbigkaW5wdXQ6IFNlbmRNZXNzYWdlSW5wdXQhKSB7XG4gIHNlbmRNZXNzYWdlKGlucHV0OiAkaW5wdXQpIHtcbiAgICBtZXNzYWdlIHtcbiAgICAgIGlkXG4gICAgfVxuICB9XG59XG5gO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2VRdWVyeVJlc3VsdCB7XG4gIG1lc3NhZ2U6IE1lc3NhZ2VOb2RlO1xufVxuZXhwb3J0IGNvbnN0IE1lc3NhZ2VRdWVyeSA9IGdxbFR5cGVkPE1lc3NhZ2VRdWVyeVJlc3VsdD5gXG5xdWVyeSBNZXNzYWdlUXVlcnkoJGlkOiBMclJlbGF5SWRJbnB1dCEpIHtcbiAgbWVzc2FnZShpZDogJGlkKSB7XG4gICAgaWRcbiAgICBzZW5kZXIge1xuICAgICAgdXNlcm5hbWVcbiAgICB9XG4gICAgcmVjZWl2ZXIge1xuICAgICAgdXNlcm5hbWVcbiAgICB9XG4gICAgcGxhaW5NZXNzYWdlXG4gICAgc2lnbmVkQ2lwaGVyTWVzc2FnZVxuICAgIHNoYXJlZEtleSB7XG4gICAgICBpZFxuICAgIH1cbiAgICBzZW5kZXJTaWdQYmsge1xuICAgICAgaWRcbiAgICB9XG4gIH1cbn1cbmA7XG4iXX0=