@wallfree-dev/angular-core 0.0.59-beta.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 (623) hide show
  1. package/README.md +60 -0
  2. package/esm2022/lib/airgap-angular-core.module.mjs +63 -0
  3. package/esm2022/lib/base/base.component.mjs +38 -0
  4. package/esm2022/lib/base/base.facade.mjs +37 -0
  5. package/esm2022/lib/capacitor-plugins/definitions.mjs +15 -0
  6. package/esm2022/lib/capacitor-plugins/injection-tokens.mjs +11 -0
  7. package/esm2022/lib/capacitor-plugins/isolated-modules/isolated-modules.plugin-wrapper.mjs +67 -0
  8. package/esm2022/lib/capacitor-plugins/isolated-modules/isolated-modules.plugin.mjs +247 -0
  9. package/esm2022/lib/components/account-item/account-item.component.mjs +30 -0
  10. package/esm2022/lib/components/account-selection/account-selection.component.mjs +61 -0
  11. package/esm2022/lib/components/components.module.mjs +97 -0
  12. package/esm2022/lib/components/currency-symbol/currency-symbol.component.mjs +45 -0
  13. package/esm2022/lib/components/currency-symbol/currency-symbol.facade.mjs +8 -0
  14. package/esm2022/lib/components/currency-symbol/currency-symbol.types.mjs +2 -0
  15. package/esm2022/lib/components/from-to/from-to.component.mjs +100 -0
  16. package/esm2022/lib/components/iac-qr/iac-qr.component.mjs +192 -0
  17. package/esm2022/lib/components/identicon/identicon.component.mjs +51 -0
  18. package/esm2022/lib/components/isolated-modules-badges/isolated-modules-badges.component.mjs +16 -0
  19. package/esm2022/lib/components/isolated-modules-details/isolated-modules-details.component.mjs +43 -0
  20. package/esm2022/lib/components/isolated-modules-details/isolated-modules-details.facade.mjs +7 -0
  21. package/esm2022/lib/components/isolated-modules-list/isolated-modules-list.component.mjs +50 -0
  22. package/esm2022/lib/components/isolated-modules-list/isolated-modules-list.facade.mjs +7 -0
  23. package/esm2022/lib/components/isolated-modules-onboarding/isolated-modules-onboarding.component.mjs +12 -0
  24. package/esm2022/lib/components/network-badge/network-badge.component.mjs +19 -0
  25. package/esm2022/lib/components/qr/qr.component.mjs +36 -0
  26. package/esm2022/lib/components/qr-settings/qr-settings.component.mjs +30 -0
  27. package/esm2022/lib/components/titled-address/titled-address.component.mjs +31 -0
  28. package/esm2022/lib/components/titled-text/titled-text.component.mjs +28 -0
  29. package/esm2022/lib/config/app-config.mjs +3 -0
  30. package/esm2022/lib/pages/isolated-modules-list/isolated-modules-list.facade.mjs +7 -0
  31. package/esm2022/lib/pipes/amount-converter/amount-converter.pipe.mjs +82 -0
  32. package/esm2022/lib/pipes/fee-converter/fee-converter.pipe.mjs +36 -0
  33. package/esm2022/lib/pipes/pipes.module.mjs +19 -0
  34. package/esm2022/lib/pipes/wallet-filter/wallet-filter.pipe.mjs +36 -0
  35. package/esm2022/lib/protocol/adapter/protocol-v0-adapter.mjs +880 -0
  36. package/esm2022/lib/protocol/isolated/base-isolated.mjs +27 -0
  37. package/esm2022/lib/protocol/isolated/block-explorer-isolated.mjs +32 -0
  38. package/esm2022/lib/protocol/isolated/protocol-offline-isolated.mjs +37 -0
  39. package/esm2022/lib/protocol/isolated/protocol-online-isolated.mjs +52 -0
  40. package/esm2022/lib/protocol/isolated/v3-serializer-companion-isolated.mjs +35 -0
  41. package/esm2022/lib/services/address/address.service.mjs +78 -0
  42. package/esm2022/lib/services/clipboard/clipboard.service.mjs +48 -0
  43. package/esm2022/lib/services/deeplink/deeplink.service.mjs +73 -0
  44. package/esm2022/lib/services/environment/base-environment.service.mjs +6 -0
  45. package/esm2022/lib/services/filesystem/filesystem.service.mjs +291 -0
  46. package/esm2022/lib/services/iac/base.iac.service.mjs +155 -0
  47. package/esm2022/lib/services/iac/message-handler-single.mjs +48 -0
  48. package/esm2022/lib/services/iac/message-handler.mjs +22 -0
  49. package/esm2022/lib/services/iac/qr-generator.mjs +17 -0
  50. package/esm2022/lib/services/image/fetcher/image-direct.fetcher.mjs +16 -0
  51. package/esm2022/lib/services/image/fetcher/image-proxy.fetcher.mjs +45 -0
  52. package/esm2022/lib/services/image/image.service.mjs +39 -0
  53. package/esm2022/lib/services/key-pair/key-pair.service.mjs +57 -0
  54. package/esm2022/lib/services/language/language.service.mjs +47 -0
  55. package/esm2022/lib/services/modules/base-modules.service.mjs +157 -0
  56. package/esm2022/lib/services/modules/controller/base-modules.controller.mjs +2 -0
  57. package/esm2022/lib/services/modules/controller/integral/integral-modules.controller.mjs +91 -0
  58. package/esm2022/lib/services/modules/controller/isolated/isolated-modules.controller.mjs +190 -0
  59. package/esm2022/lib/services/modules/controller/modules.controller.mjs +85 -0
  60. package/esm2022/lib/services/permissions/permissions.service.mjs +140 -0
  61. package/esm2022/lib/services/protocol/defaults.mjs +55 -0
  62. package/esm2022/lib/services/protocol/protocol.service.mjs +230 -0
  63. package/esm2022/lib/services/protocol/store/base-protocol-store.service.mjs +63 -0
  64. package/esm2022/lib/services/protocol/store/main/main-protocol-store.service.mjs +91 -0
  65. package/esm2022/lib/services/protocol/store/sub/sub-protocol-store.service.mjs +174 -0
  66. package/esm2022/lib/services/qr/qr-generators/bc-ur-generator.mjs +127 -0
  67. package/esm2022/lib/services/qr/qr-generators/metamask-generator.mjs +117 -0
  68. package/esm2022/lib/services/qr/qr-generators/output-descriptor-generator.mjs +49 -0
  69. package/esm2022/lib/services/qr/qr-generators/serializer-v2-generator.mjs +30 -0
  70. package/esm2022/lib/services/qr/qr-generators/serializer-v3-generator.mjs +45 -0
  71. package/esm2022/lib/services/qr/qr-generators/xpub-generator.mjs +38 -0
  72. package/esm2022/lib/services/qr/qr-handler/serializer-v2-handler.mjs +114 -0
  73. package/esm2022/lib/services/qr/qr-handler/serializer-v3-handler.mjs +274 -0
  74. package/esm2022/lib/services/qr-scanner/qr-scanner.service.mjs +61 -0
  75. package/esm2022/lib/services/serializer/serializer.service.mjs +181 -0
  76. package/esm2022/lib/services/storage/base.storage.mjs +30 -0
  77. package/esm2022/lib/services/storage/storage.service.mjs +33 -0
  78. package/esm2022/lib/services/token/token.service.mjs +52 -0
  79. package/esm2022/lib/services/transaction/transaction.service.mjs +67 -0
  80. package/esm2022/lib/services/ui-event/ui-event.service.mjs +198 -0
  81. package/esm2022/lib/services/ui-event-elements/ui-event-elements.service.mjs +122 -0
  82. package/esm2022/lib/services/uri/uri.service.mjs +51 -0
  83. package/esm2022/lib/translation/AirGapTranslateLoader.mjs +26 -0
  84. package/esm2022/lib/types/Either.mjs +2 -0
  85. package/esm2022/lib/types/ExternalAliasResolver.mjs +2 -0
  86. package/esm2022/lib/types/RuntimeMode.mjs +6 -0
  87. package/esm2022/lib/types/SupportedLanguage.mjs +2 -0
  88. package/esm2022/lib/types/Token.mjs +2 -0
  89. package/esm2022/lib/types/isolated-modules/IsolatedModule.mjs +2 -0
  90. package/esm2022/lib/types/isolated-modules/IsolatedModuleManifest.mjs +2 -0
  91. package/esm2022/lib/types/isolated-modules/IsolatedModuleMetadata.mjs +2 -0
  92. package/esm2022/lib/types/ui/UIAction.mjs +6 -0
  93. package/esm2022/lib/types/ui/UIResource.mjs +8 -0
  94. package/esm2022/lib/utils/ExposedPromise.mjs +103 -0
  95. package/esm2022/lib/utils/airgap-transaction.mjs +23 -0
  96. package/esm2022/lib/utils/array.mjs +32 -0
  97. package/esm2022/lib/utils/modules/isolated/isolated-modules-metadata.mjs +10 -0
  98. package/esm2022/lib/utils/modules/load-protocol.mjs +19 -0
  99. package/esm2022/lib/utils/not-initialized.mjs +7 -0
  100. package/esm2022/lib/utils/protocol/delegation.mjs +33 -0
  101. package/esm2022/lib/utils/protocol/protocol-identifier.mjs +4 -0
  102. package/esm2022/lib/utils/protocol/protocol-network-identifier.mjs +18 -0
  103. package/esm2022/lib/utils/protocol/protocol-options.mjs +114 -0
  104. package/esm2022/lib/utils/protocol/protocol-v0-adapter.mjs +390 -0
  105. package/esm2022/lib/utils/utils.mjs +80 -0
  106. package/esm2022/lib/utils/worker.mjs +28 -0
  107. package/esm2022/public-api.mjs +102 -0
  108. package/esm2022/wallfree-dev-angular-core.mjs +5 -0
  109. package/fesm2022/wallfree-dev-angular-core.mjs +6933 -0
  110. package/fesm2022/wallfree-dev-angular-core.mjs.map +1 -0
  111. package/index.d.ts +6 -0
  112. package/lib/airgap-angular-core.module.d.ts +25 -0
  113. package/lib/airgap-angular-core.module.d.ts.map +1 -0
  114. package/lib/base/base.component.d.ts +18 -0
  115. package/lib/base/base.component.d.ts.map +1 -0
  116. package/lib/base/base.facade.d.ts +16 -0
  117. package/lib/base/base.facade.d.ts.map +1 -0
  118. package/lib/capacitor-plugins/definitions.d.ts +122 -0
  119. package/lib/capacitor-plugins/definitions.d.ts.map +1 -0
  120. package/lib/capacitor-plugins/injection-tokens.d.ts +18 -0
  121. package/lib/capacitor-plugins/injection-tokens.d.ts.map +1 -0
  122. package/lib/capacitor-plugins/isolated-modules/isolated-modules.plugin-wrapper.d.ts +20 -0
  123. package/lib/capacitor-plugins/isolated-modules/isolated-modules.plugin-wrapper.d.ts.map +1 -0
  124. package/lib/capacitor-plugins/isolated-modules/isolated-modules.plugin.d.ts +38 -0
  125. package/lib/capacitor-plugins/isolated-modules/isolated-modules.plugin.d.ts.map +1 -0
  126. package/lib/components/account-item/account-item.component.d.ts +15 -0
  127. package/lib/components/account-item/account-item.component.d.ts.map +1 -0
  128. package/lib/components/account-selection/account-selection.component.d.ts +23 -0
  129. package/lib/components/account-selection/account-selection.component.d.ts.map +1 -0
  130. package/lib/components/components.module.d.ts +28 -0
  131. package/lib/components/components.module.d.ts.map +1 -0
  132. package/lib/components/currency-symbol/currency-symbol.component.d.ts +20 -0
  133. package/lib/components/currency-symbol/currency-symbol.component.d.ts.map +1 -0
  134. package/lib/components/currency-symbol/currency-symbol.facade.d.ts +16 -0
  135. package/lib/components/currency-symbol/currency-symbol.facade.d.ts.map +1 -0
  136. package/lib/components/currency-symbol/currency-symbol.types.d.ts +35 -0
  137. package/lib/components/currency-symbol/currency-symbol.types.d.ts.map +1 -0
  138. package/lib/components/from-to/from-to.component.d.ts +33 -0
  139. package/lib/components/from-to/from-to.component.d.ts.map +1 -0
  140. package/lib/components/iac-qr/iac-qr.component.d.ts +45 -0
  141. package/lib/components/iac-qr/iac-qr.component.d.ts.map +1 -0
  142. package/lib/components/identicon/identicon.component.d.ts +14 -0
  143. package/lib/components/identicon/identicon.component.d.ts.map +1 -0
  144. package/lib/components/isolated-modules-badges/isolated-modules-badges.component.d.ts +8 -0
  145. package/lib/components/isolated-modules-badges/isolated-modules-badges.component.d.ts.map +1 -0
  146. package/lib/components/isolated-modules-details/isolated-modules-details.component.d.ts +17 -0
  147. package/lib/components/isolated-modules-details/isolated-modules-details.component.d.ts.map +1 -0
  148. package/lib/components/isolated-modules-details/isolated-modules-details.facade.d.ts +17 -0
  149. package/lib/components/isolated-modules-details/isolated-modules-details.facade.d.ts.map +1 -0
  150. package/lib/components/isolated-modules-list/isolated-modules-list.component.d.ts +20 -0
  151. package/lib/components/isolated-modules-list/isolated-modules-list.component.d.ts.map +1 -0
  152. package/lib/components/isolated-modules-list/isolated-modules-list.facade.d.ts +15 -0
  153. package/lib/components/isolated-modules-list/isolated-modules-list.facade.d.ts.map +1 -0
  154. package/lib/components/isolated-modules-onboarding/isolated-modules-onboarding.component.d.ts +6 -0
  155. package/lib/components/isolated-modules-onboarding/isolated-modules-onboarding.component.d.ts.map +1 -0
  156. package/lib/components/network-badge/network-badge.component.d.ts +9 -0
  157. package/lib/components/network-badge/network-badge.component.d.ts.map +1 -0
  158. package/lib/components/qr/qr.component.d.ts +16 -0
  159. package/lib/components/qr/qr.component.d.ts.map +1 -0
  160. package/lib/components/qr-settings/qr-settings.component.d.ts +12 -0
  161. package/lib/components/qr-settings/qr-settings.component.d.ts.map +1 -0
  162. package/lib/components/titled-address/titled-address.component.d.ts +13 -0
  163. package/lib/components/titled-address/titled-address.component.d.ts.map +1 -0
  164. package/lib/components/titled-text/titled-text.component.d.ts +11 -0
  165. package/lib/components/titled-text/titled-text.component.d.ts.map +1 -0
  166. package/lib/config/app-config.d.ts +15 -0
  167. package/lib/config/app-config.d.ts.map +1 -0
  168. package/lib/pages/isolated-modules-list/isolated-modules-list.facade.d.ts +16 -0
  169. package/lib/pages/isolated-modules-list/isolated-modules-list.facade.d.ts.map +1 -0
  170. package/lib/pipes/amount-converter/amount-converter.pipe.d.ts +29 -0
  171. package/lib/pipes/amount-converter/amount-converter.pipe.d.ts.map +1 -0
  172. package/lib/pipes/fee-converter/fee-converter.pipe.d.ts +20 -0
  173. package/lib/pipes/fee-converter/fee-converter.pipe.d.ts.map +1 -0
  174. package/lib/pipes/pipes.module.d.ts +10 -0
  175. package/lib/pipes/pipes.module.d.ts.map +1 -0
  176. package/lib/pipes/wallet-filter/wallet-filter.pipe.d.ts +15 -0
  177. package/lib/pipes/wallet-filter/wallet-filter.pipe.d.ts.map +1 -0
  178. package/lib/protocol/adapter/protocol-v0-adapter.d.ts +231 -0
  179. package/lib/protocol/adapter/protocol-v0-adapter.d.ts.map +1 -0
  180. package/lib/protocol/isolated/base-isolated.d.ts +11 -0
  181. package/lib/protocol/isolated/base-isolated.d.ts.map +1 -0
  182. package/lib/protocol/isolated/block-explorer-isolated.d.ts +14 -0
  183. package/lib/protocol/isolated/block-explorer-isolated.d.ts.map +1 -0
  184. package/lib/protocol/isolated/protocol-offline-isolated.d.ts +17 -0
  185. package/lib/protocol/isolated/protocol-offline-isolated.d.ts.map +1 -0
  186. package/lib/protocol/isolated/protocol-online-isolated.d.ts +21 -0
  187. package/lib/protocol/isolated/protocol-online-isolated.d.ts.map +1 -0
  188. package/lib/protocol/isolated/v3-serializer-companion-isolated.d.ts +17 -0
  189. package/lib/protocol/isolated/v3-serializer-companion-isolated.d.ts.map +1 -0
  190. package/lib/services/address/address.service.d.ts +26 -0
  191. package/lib/services/address/address.service.d.ts.map +1 -0
  192. package/lib/services/clipboard/clipboard.service.d.ts +14 -0
  193. package/lib/services/clipboard/clipboard.service.d.ts.map +1 -0
  194. package/lib/services/deeplink/deeplink.service.d.ts +18 -0
  195. package/lib/services/deeplink/deeplink.service.d.ts.map +1 -0
  196. package/lib/services/environment/base-environment.service.d.ts +6 -0
  197. package/lib/services/environment/base-environment.service.d.ts.map +1 -0
  198. package/lib/services/filesystem/filesystem.service.d.ts +42 -0
  199. package/lib/services/filesystem/filesystem.service.d.ts.map +1 -0
  200. package/lib/services/iac/base.iac.service.d.ts +41 -0
  201. package/lib/services/iac/base.iac.service.d.ts.map +1 -0
  202. package/lib/services/iac/message-handler-single.d.ts +20 -0
  203. package/lib/services/iac/message-handler-single.d.ts.map +1 -0
  204. package/lib/services/iac/message-handler.d.ts +34 -0
  205. package/lib/services/iac/message-handler.d.ts.map +1 -0
  206. package/lib/services/iac/qr-generator.d.ts +13 -0
  207. package/lib/services/iac/qr-generator.d.ts.map +1 -0
  208. package/lib/services/image/fetcher/image-direct.fetcher.d.ts +9 -0
  209. package/lib/services/image/fetcher/image-direct.fetcher.d.ts.map +1 -0
  210. package/lib/services/image/fetcher/image-proxy.fetcher.d.ts +9 -0
  211. package/lib/services/image/fetcher/image-proxy.fetcher.d.ts.map +1 -0
  212. package/lib/services/image/image.service.d.ts +20 -0
  213. package/lib/services/image/image.service.d.ts.map +1 -0
  214. package/lib/services/key-pair/key-pair.service.d.ts +14 -0
  215. package/lib/services/key-pair/key-pair.service.d.ts.map +1 -0
  216. package/lib/services/language/language.service.d.ts +21 -0
  217. package/lib/services/language/language.service.d.ts.map +1 -0
  218. package/lib/services/modules/base-modules.service.d.ts +34 -0
  219. package/lib/services/modules/base-modules.service.d.ts.map +1 -0
  220. package/lib/services/modules/controller/base-modules.controller.d.ts +19 -0
  221. package/lib/services/modules/controller/base-modules.controller.d.ts.map +1 -0
  222. package/lib/services/modules/controller/integral/integral-modules.controller.d.ts +22 -0
  223. package/lib/services/modules/controller/integral/integral-modules.controller.d.ts.map +1 -0
  224. package/lib/services/modules/controller/isolated/isolated-modules.controller.d.ts +32 -0
  225. package/lib/services/modules/controller/isolated/isolated-modules.controller.d.ts.map +1 -0
  226. package/lib/services/modules/controller/modules.controller.d.ts +27 -0
  227. package/lib/services/modules/controller/modules.controller.d.ts.map +1 -0
  228. package/lib/services/permissions/permissions.service.d.ts +39 -0
  229. package/lib/services/permissions/permissions.service.d.ts.map +1 -0
  230. package/lib/services/protocol/defaults.d.ts +6 -0
  231. package/lib/services/protocol/defaults.d.ts.map +1 -0
  232. package/lib/services/protocol/protocol.service.d.ts +47 -0
  233. package/lib/services/protocol/protocol.service.d.ts.map +1 -0
  234. package/lib/services/protocol/store/base-protocol-store.service.d.ts +36 -0
  235. package/lib/services/protocol/store/base-protocol-store.service.d.ts.map +1 -0
  236. package/lib/services/protocol/store/main/main-protocol-store.service.d.ts +21 -0
  237. package/lib/services/protocol/store/main/main-protocol-store.service.d.ts.map +1 -0
  238. package/lib/services/protocol/store/sub/sub-protocol-store.service.d.ts +31 -0
  239. package/lib/services/protocol/store/sub/sub-protocol-store.service.d.ts.map +1 -0
  240. package/lib/services/qr/qr-generators/bc-ur-generator.d.ts +16 -0
  241. package/lib/services/qr/qr-generators/bc-ur-generator.d.ts.map +1 -0
  242. package/lib/services/qr/qr-generators/metamask-generator.d.ts +16 -0
  243. package/lib/services/qr/qr-generators/metamask-generator.d.ts.map +1 -0
  244. package/lib/services/qr/qr-generators/output-descriptor-generator.d.ts +13 -0
  245. package/lib/services/qr/qr-generators/output-descriptor-generator.d.ts.map +1 -0
  246. package/lib/services/qr/qr-generators/serializer-v2-generator.d.ts +13 -0
  247. package/lib/services/qr/qr-generators/serializer-v2-generator.d.ts.map +1 -0
  248. package/lib/services/qr/qr-generators/serializer-v3-generator.d.ts +12 -0
  249. package/lib/services/qr/qr-generators/serializer-v3-generator.d.ts.map +1 -0
  250. package/lib/services/qr/qr-generators/xpub-generator.d.ts +12 -0
  251. package/lib/services/qr/qr-generators/xpub-generator.d.ts.map +1 -0
  252. package/lib/services/qr/qr-handler/serializer-v2-handler.d.ts +20 -0
  253. package/lib/services/qr/qr-handler/serializer-v2-handler.d.ts.map +1 -0
  254. package/lib/services/qr/qr-handler/serializer-v3-handler.d.ts +23 -0
  255. package/lib/services/qr/qr-handler/serializer-v3-handler.d.ts.map +1 -0
  256. package/lib/services/qr-scanner/qr-scanner.service.d.ts +23 -0
  257. package/lib/services/qr-scanner/qr-scanner.service.d.ts.map +1 -0
  258. package/lib/services/serializer/serializer.service.d.ts +34 -0
  259. package/lib/services/serializer/serializer.service.d.ts.map +1 -0
  260. package/lib/services/storage/base.storage.d.ts +15 -0
  261. package/lib/services/storage/base.storage.d.ts.map +1 -0
  262. package/lib/services/storage/storage.service.d.ts +28 -0
  263. package/lib/services/storage/storage.service.d.ts.map +1 -0
  264. package/lib/services/token/token.service.d.ts +11 -0
  265. package/lib/services/token/token.service.d.ts.map +1 -0
  266. package/lib/services/transaction/transaction.service.d.ts +21 -0
  267. package/lib/services/transaction/transaction.service.d.ts.map +1 -0
  268. package/lib/services/ui-event/ui-event.service.d.ts +58 -0
  269. package/lib/services/ui-event/ui-event.service.d.ts.map +1 -0
  270. package/lib/services/ui-event-elements/ui-event-elements.service.d.ts +16 -0
  271. package/lib/services/ui-event-elements/ui-event-elements.service.d.ts.map +1 -0
  272. package/lib/services/uri/uri.service.d.ts +15 -0
  273. package/lib/services/uri/uri.service.d.ts.map +1 -0
  274. package/lib/translation/AirGapTranslateLoader.d.ts +15 -0
  275. package/lib/translation/AirGapTranslateLoader.d.ts.map +1 -0
  276. package/lib/types/Either.d.ts +2 -0
  277. package/lib/types/Either.d.ts.map +1 -0
  278. package/lib/types/ExternalAliasResolver.d.ts +6 -0
  279. package/lib/types/ExternalAliasResolver.d.ts.map +1 -0
  280. package/lib/types/RuntimeMode.d.ts +5 -0
  281. package/lib/types/RuntimeMode.d.ts.map +1 -0
  282. package/lib/types/SupportedLanguage.d.ts +2 -0
  283. package/lib/types/SupportedLanguage.d.ts.map +1 -0
  284. package/lib/types/Token.d.ts +9 -0
  285. package/lib/types/Token.d.ts.map +1 -0
  286. package/lib/types/isolated-modules/IsolatedModule.d.ts +28 -0
  287. package/lib/types/isolated-modules/IsolatedModule.d.ts.map +1 -0
  288. package/lib/types/isolated-modules/IsolatedModuleManifest.d.ts +24 -0
  289. package/lib/types/isolated-modules/IsolatedModuleManifest.d.ts.map +1 -0
  290. package/lib/types/isolated-modules/IsolatedModuleMetadata.d.ts +21 -0
  291. package/lib/types/isolated-modules/IsolatedModuleMetadata.d.ts.map +1 -0
  292. package/lib/types/ui/UIAction.d.ts +10 -0
  293. package/lib/types/ui/UIAction.d.ts.map +1 -0
  294. package/lib/types/ui/UIResource.d.ts +11 -0
  295. package/lib/types/ui/UIResource.d.ts.map +1 -0
  296. package/lib/utils/ExposedPromise.d.ts +40 -0
  297. package/lib/utils/ExposedPromise.d.ts.map +1 -0
  298. package/lib/utils/airgap-transaction.d.ts +4 -0
  299. package/lib/utils/airgap-transaction.d.ts.map +1 -0
  300. package/lib/utils/array.d.ts +6 -0
  301. package/lib/utils/array.d.ts.map +1 -0
  302. package/lib/utils/modules/isolated/isolated-modules-metadata.d.ts +3 -0
  303. package/lib/utils/modules/isolated/isolated-modules-metadata.d.ts.map +1 -0
  304. package/lib/utils/modules/load-protocol.d.ts +4 -0
  305. package/lib/utils/modules/load-protocol.d.ts.map +1 -0
  306. package/lib/utils/not-initialized.d.ts +2 -0
  307. package/lib/utils/not-initialized.d.ts.map +1 -0
  308. package/lib/utils/protocol/delegation.d.ts +6 -0
  309. package/lib/utils/protocol/delegation.d.ts.map +1 -0
  310. package/lib/utils/protocol/protocol-identifier.d.ts +3 -0
  311. package/lib/utils/protocol/protocol-identifier.d.ts.map +1 -0
  312. package/lib/utils/protocol/protocol-network-identifier.d.ts +8 -0
  313. package/lib/utils/protocol/protocol-network-identifier.d.ts.map +1 -0
  314. package/lib/utils/protocol/protocol-options.d.ts +6 -0
  315. package/lib/utils/protocol/protocol-options.d.ts.map +1 -0
  316. package/lib/utils/protocol/protocol-v0-adapter.d.ts +75 -0
  317. package/lib/utils/protocol/protocol-v0-adapter.d.ts.map +1 -0
  318. package/lib/utils/utils.d.ts +9 -0
  319. package/lib/utils/utils.d.ts.map +1 -0
  320. package/lib/utils/worker.d.ts +11 -0
  321. package/lib/utils/worker.d.ts.map +1 -0
  322. package/package.json +88 -0
  323. package/public-api.d.ts +87 -0
  324. package/public-api.d.ts.map +1 -0
  325. package/src/assets/i18n-common/de.json +112 -0
  326. package/src/assets/i18n-common/en.json +112 -0
  327. package/src/assets/i18n-common/es.json +112 -0
  328. package/src/assets/i18n-common/fr.json +112 -0
  329. package/src/assets/i18n-common/pt_BR.json +112 -0
  330. package/src/assets/i18n-common/ru.json +112 -0
  331. package/src/assets/i18n-common/zh_CN.json +112 -0
  332. package/src/assets/img/identicon_placeholder.png +0 -0
  333. package/src/assets/native/isolated_modules/isolated-modules.js-engine-android.js +34 -0
  334. package/src/assets/native/isolated_modules/isolated-modules.script.js +304 -0
  335. package/src/assets/symbols/abt.svg +1 -0
  336. package/src/assets/symbols/adx.svg +1 -0
  337. package/src/assets/symbols/ae.svg +17 -0
  338. package/src/assets/symbols/agi.svg +1 -0
  339. package/src/assets/symbols/aion.svg +1 -0
  340. package/src/assets/symbols/amb.svg +1 -0
  341. package/src/assets/symbols/ampl.svg +7 -0
  342. package/src/assets/symbols/ant.svg +1 -0
  343. package/src/assets/symbols/aoa.svg +7 -0
  344. package/src/assets/symbols/appc.svg +1 -0
  345. package/src/assets/symbols/aqua.svg +5 -0
  346. package/src/assets/symbols/arn.svg +1 -0
  347. package/src/assets/symbols/ary.svg +1 -0
  348. package/src/assets/symbols/ast.svg +1 -0
  349. package/src/assets/symbols/astr.png +0 -0
  350. package/src/assets/symbols/atm.svg +1 -0
  351. package/src/assets/symbols/atom.svg +1 -0
  352. package/src/assets/symbols/auto.svg +1 -0
  353. package/src/assets/symbols/bal.svg +7 -0
  354. package/src/assets/symbols/band.svg +7 -0
  355. package/src/assets/symbols/bat.svg +1 -0
  356. package/src/assets/symbols/bcbc.svg +1 -0
  357. package/src/assets/symbols/bcpt.svg +1 -0
  358. package/src/assets/symbols/bix.svg +1 -0
  359. package/src/assets/symbols/blz.svg +1 -0
  360. package/src/assets/symbols/bnb.svg +1 -0
  361. package/src/assets/symbols/bnt.svg +1 -0
  362. package/src/assets/symbols/bnty.svg +1 -0
  363. package/src/assets/symbols/bpt.svg +1 -0
  364. package/src/assets/symbols/brc.svg +7 -0
  365. package/src/assets/symbols/brd.svg +1 -0
  366. package/src/assets/symbols/btc.svg +1 -0
  367. package/src/assets/symbols/btctz.png +0 -0
  368. package/src/assets/symbols/btm.svg +1 -0
  369. package/src/assets/symbols/busd.svg +7 -0
  370. package/src/assets/symbols/bytom.svg +7 -0
  371. package/src/assets/symbols/cacu.svg +1 -0
  372. package/src/assets/symbols/cdt.svg +1 -0
  373. package/src/assets/symbols/cel.svg +7 -0
  374. package/src/assets/symbols/cennz.svg +7 -0
  375. package/src/assets/symbols/cfx.svg +1 -0
  376. package/src/assets/symbols/chsb.svg +7 -0
  377. package/src/assets/symbols/chz.svg +7 -0
  378. package/src/assets/symbols/ckbtc.png +0 -0
  379. package/src/assets/symbols/cmt.svg +1 -0
  380. package/src/assets/symbols/cnd.svg +1 -0
  381. package/src/assets/symbols/cob.svg +1 -0
  382. package/src/assets/symbols/comp.svg +7 -0
  383. package/src/assets/symbols/coreum.png +0 -0
  384. package/src/assets/symbols/cred.svg +1 -0
  385. package/src/assets/symbols/cro.svg +7 -0
  386. package/src/assets/symbols/crpt.svg +1 -0
  387. package/src/assets/symbols/crv.svg +7 -0
  388. package/src/assets/symbols/cs.svg +1 -0
  389. package/src/assets/symbols/ctez.svg +1 -0
  390. package/src/assets/symbols/ctr.svg +1 -0
  391. package/src/assets/symbols/ctxc.svg +1 -0
  392. package/src/assets/symbols/cusdc.svg +7 -0
  393. package/src/assets/symbols/cvc.svg +1 -0
  394. package/src/assets/symbols/cvt.svg +7 -0
  395. package/src/assets/symbols/czrx.svg +7 -0
  396. package/src/assets/symbols/dai.svg +7 -0
  397. package/src/assets/symbols/dat.svg +1 -0
  398. package/src/assets/symbols/data.svg +1 -0
  399. package/src/assets/symbols/dcn.svg +1 -0
  400. package/src/assets/symbols/deez.svg +1 -0
  401. package/src/assets/symbols/dent.svg +1 -0
  402. package/src/assets/symbols/dew.svg +1 -0
  403. package/src/assets/symbols/dgd.svg +1 -0
  404. package/src/assets/symbols/dia.svg +7 -0
  405. package/src/assets/symbols/divx.svg +7 -0
  406. package/src/assets/symbols/dlt.svg +1 -0
  407. package/src/assets/symbols/dnt.svg +1 -0
  408. package/src/assets/symbols/dock.svg +1 -0
  409. package/src/assets/symbols/doga.png +0 -0
  410. package/src/assets/symbols/dot.svg +14 -0
  411. package/src/assets/symbols/drgn.svg +1 -0
  412. package/src/assets/symbols/drop.svg +1 -0
  413. package/src/assets/symbols/dth.svg +1 -0
  414. package/src/assets/symbols/dtr.svg +1 -0
  415. package/src/assets/symbols/dx.svg +7 -0
  416. package/src/assets/symbols/edg.svg +1 -0
  417. package/src/assets/symbols/edo.svg +1 -0
  418. package/src/assets/symbols/elf.svg +1 -0
  419. package/src/assets/symbols/elix.svg +1 -0
  420. package/src/assets/symbols/eng.svg +1 -0
  421. package/src/assets/symbols/enj.svg +1 -0
  422. package/src/assets/symbols/entrp.svg +1 -0
  423. package/src/assets/symbols/eos.svg +1 -0
  424. package/src/assets/symbols/eth.svg +1 -0
  425. package/src/assets/symbols/ethtz.png +0 -0
  426. package/src/assets/symbols/eurc.svg +8 -0
  427. package/src/assets/symbols/evx.svg +1 -0
  428. package/src/assets/symbols/fet.svg +7 -0
  429. package/src/assets/symbols/frax.svg +26 -0
  430. package/src/assets/symbols/fsn.svg +1 -0
  431. package/src/assets/symbols/ftc.svg +1 -0
  432. package/src/assets/symbols/ftm.svg +7 -0
  433. package/src/assets/symbols/fuel.svg +1 -0
  434. package/src/assets/symbols/fun.svg +1 -0
  435. package/src/assets/symbols/gbx.svg +1 -0
  436. package/src/assets/symbols/generic-coin.svg +1 -0
  437. package/src/assets/symbols/glmr.svg +1 -0
  438. package/src/assets/symbols/gno.svg +1 -0
  439. package/src/assets/symbols/gnt.svg +1 -0
  440. package/src/assets/symbols/grs.svg +1 -0
  441. package/src/assets/symbols/gsc.svg +1 -0
  442. package/src/assets/symbols/gto.svg +1 -0
  443. package/src/assets/symbols/gup.svg +1 -0
  444. package/src/assets/symbols/gusd.svg +1 -0
  445. package/src/assets/symbols/gvt.svg +1 -0
  446. package/src/assets/symbols/gzr.svg +1 -0
  447. package/src/assets/symbols/hedg.svg +7 -0
  448. package/src/assets/symbols/hodl.svg +1 -0
  449. package/src/assets/symbols/hot.svg +7 -0
  450. package/src/assets/symbols/hpb.svg +1 -0
  451. package/src/assets/symbols/ht.svg +1 -0
  452. package/src/assets/symbols/husd.svg +7 -0
  453. package/src/assets/symbols/icn.svg +1 -0
  454. package/src/assets/symbols/icp.svg +16 -0
  455. package/src/assets/symbols/icx.svg +1 -0
  456. package/src/assets/symbols/inb.svg +7 -0
  457. package/src/assets/symbols/ino.svg +7 -0
  458. package/src/assets/symbols/ins.svg +1 -0
  459. package/src/assets/symbols/iost.svg +1 -0
  460. package/src/assets/symbols/iotx.svg +1 -0
  461. package/src/assets/symbols/itc.svg +1 -0
  462. package/src/assets/symbols/jnt.svg +1 -0
  463. package/src/assets/symbols/kcs.svg +7 -0
  464. package/src/assets/symbols/kin.svg +1 -0
  465. package/src/assets/symbols/knc.svg +1 -0
  466. package/src/assets/symbols/ksm.svg +1 -0
  467. package/src/assets/symbols/kusd.svg +1 -0
  468. package/src/assets/symbols/ldo.svg +97 -0
  469. package/src/assets/symbols/lend.svg +1 -0
  470. package/src/assets/symbols/leo.svg +7 -0
  471. package/src/assets/symbols/link.svg +7 -0
  472. package/src/assets/symbols/loom.svg +1 -0
  473. package/src/assets/symbols/lpt.svg +1 -0
  474. package/src/assets/symbols/lrc.svg +1 -0
  475. package/src/assets/symbols/lun.svg +1 -0
  476. package/src/assets/symbols/mana.svg +1 -0
  477. package/src/assets/symbols/matic.svg +7 -0
  478. package/src/assets/symbols/mcap.svg +1 -0
  479. package/src/assets/symbols/mco.svg +1 -0
  480. package/src/assets/symbols/mda.svg +1 -0
  481. package/src/assets/symbols/mds.svg +1 -0
  482. package/src/assets/symbols/mkr.svg +1 -0
  483. package/src/assets/symbols/mln.svg +7 -0
  484. package/src/assets/symbols/mnw.svg +1 -0
  485. package/src/assets/symbols/mod.svg +1 -0
  486. package/src/assets/symbols/movr.svg +10 -0
  487. package/src/assets/symbols/mth.svg +1 -0
  488. package/src/assets/symbols/mtl.svg +1 -0
  489. package/src/assets/symbols/mxc.svg +7 -0
  490. package/src/assets/symbols/nas.svg +1 -0
  491. package/src/assets/symbols/ncash.svg +1 -0
  492. package/src/assets/symbols/neu.svg +1 -0
  493. package/src/assets/symbols/nexo.svg +1 -0
  494. package/src/assets/symbols/ngc.svg +1 -0
  495. package/src/assets/symbols/nio.svg +1 -0
  496. package/src/assets/symbols/nmr.svg +7 -0
  497. package/src/assets/symbols/noah.svg +7 -0
  498. package/src/assets/symbols/npxs.svg +1 -0
  499. package/src/assets/symbols/nuls.svg +1 -0
  500. package/src/assets/symbols/nxm.svg +7 -0
  501. package/src/assets/symbols/oax.svg +1 -0
  502. package/src/assets/symbols/ocean.svg +7 -0
  503. package/src/assets/symbols/okb.svg +7 -0
  504. package/src/assets/symbols/omg.svg +1 -0
  505. package/src/assets/symbols/ong.svg +1 -0
  506. package/src/assets/symbols/op.svg +21 -0
  507. package/src/assets/symbols/ost.svg +1 -0
  508. package/src/assets/symbols/pax.svg +1 -0
  509. package/src/assets/symbols/paxg.svg +7 -0
  510. package/src/assets/symbols/pay.svg +1 -0
  511. package/src/assets/symbols/plenty.svg +1 -0
  512. package/src/assets/symbols/plr.svg +1 -0
  513. package/src/assets/symbols/pnk.svg +7 -0
  514. package/src/assets/symbols/poe.svg +1 -0
  515. package/src/assets/symbols/poly.svg +1 -0
  516. package/src/assets/symbols/powr.svg +1 -0
  517. package/src/assets/symbols/ppp.svg +1 -0
  518. package/src/assets/symbols/ppt.svg +1 -0
  519. package/src/assets/symbols/prl.svg +1 -0
  520. package/src/assets/symbols/qash.svg +1 -0
  521. package/src/assets/symbols/qnt.svg +7 -0
  522. package/src/assets/symbols/qrl.svg +1 -0
  523. package/src/assets/symbols/qsp.svg +1 -0
  524. package/src/assets/symbols/qtum.svg +1 -0
  525. package/src/assets/symbols/quipu.png +0 -0
  526. package/src/assets/symbols/r.svg +1 -0
  527. package/src/assets/symbols/rcn.svg +1 -0
  528. package/src/assets/symbols/rdn.svg +1 -0
  529. package/src/assets/symbols/ren.svg +7 -0
  530. package/src/assets/symbols/rep.svg +1 -0
  531. package/src/assets/symbols/repv2.svg +7 -0
  532. package/src/assets/symbols/req.svg +1 -0
  533. package/src/assets/symbols/rev.svg +7 -0
  534. package/src/assets/symbols/rhoc.svg +1 -0
  535. package/src/assets/symbols/rlc.svg +1 -0
  536. package/src/assets/symbols/rsr.svg +7 -0
  537. package/src/assets/symbols/sai.svg +7 -0
  538. package/src/assets/symbols/salt.svg +1 -0
  539. package/src/assets/symbols/san.svg +1 -0
  540. package/src/assets/symbols/sdn.svg +1 -0
  541. package/src/assets/symbols/shx.svg +32 -0
  542. package/src/assets/symbols/sirs.svg +1 -0
  543. package/src/assets/symbols/smart.svg +1 -0
  544. package/src/assets/symbols/sngls.svg +1 -0
  545. package/src/assets/symbols/snm.svg +1 -0
  546. package/src/assets/symbols/snt.svg +1 -0
  547. package/src/assets/symbols/snx.svg +7 -0
  548. package/src/assets/symbols/soc.svg +1 -0
  549. package/src/assets/symbols/sol.svg +1 -0
  550. package/src/assets/symbols/spank.svg +1 -0
  551. package/src/assets/symbols/sphtx.svg +1 -0
  552. package/src/assets/symbols/srm.svg +7 -0
  553. package/src/assets/symbols/srn.svg +1 -0
  554. package/src/assets/symbols/stake.svg +7 -0
  555. package/src/assets/symbols/stellar.png +0 -0
  556. package/src/assets/symbols/storj.svg +1 -0
  557. package/src/assets/symbols/storm.svg +1 -0
  558. package/src/assets/symbols/stq.svg +1 -0
  559. package/src/assets/symbols/stxtz.svg +18 -0
  560. package/src/assets/symbols/sub.svg +1 -0
  561. package/src/assets/symbols/sushi.svg +7 -0
  562. package/src/assets/symbols/sxp.svg +7 -0
  563. package/src/assets/symbols/sxtz.svg +6 -0
  564. package/src/assets/symbols/taas.svg +1 -0
  565. package/src/assets/symbols/tau.svg +1 -0
  566. package/src/assets/symbols/tbx.svg +1 -0
  567. package/src/assets/symbols/tel.svg +1 -0
  568. package/src/assets/symbols/ten.svg +1 -0
  569. package/src/assets/symbols/theta.svg +1 -0
  570. package/src/assets/symbols/tix.svg +1 -0
  571. package/src/assets/symbols/tkn.svg +1 -0
  572. package/src/assets/symbols/tnt.svg +1 -0
  573. package/src/assets/symbols/tomo.svg +1 -0
  574. package/src/assets/symbols/trac.svg +7 -0
  575. package/src/assets/symbols/trb.svg +7 -0
  576. package/src/assets/symbols/trx.svg +1 -0
  577. package/src/assets/symbols/tusd.svg +1 -0
  578. package/src/assets/symbols/tzbtc.svg +1 -0
  579. package/src/assets/symbols/ubt.svg +7 -0
  580. package/src/assets/symbols/ubtc.svg +1 -0
  581. package/src/assets/symbols/udefi.svg +1 -0
  582. package/src/assets/symbols/uma.svg +7 -0
  583. package/src/assets/symbols/usdc.svg +1 -0
  584. package/src/assets/symbols/usdt.png +0 -0
  585. package/src/assets/symbols/usdt.svg +1 -0
  586. package/src/assets/symbols/usdtz.svg +17 -0
  587. package/src/assets/symbols/ust.svg +1 -0
  588. package/src/assets/symbols/utk.svg +1 -0
  589. package/src/assets/symbols/uusd.svg +1 -0
  590. package/src/assets/symbols/uxtz.svg +1 -0
  591. package/src/assets/symbols/velo.svg +5 -0
  592. package/src/assets/symbols/ven.svg +7 -0
  593. package/src/assets/symbols/veri.svg +1 -0
  594. package/src/assets/symbols/verse.svg +1 -0
  595. package/src/assets/symbols/vest.svg +7 -0
  596. package/src/assets/symbols/vib.svg +1 -0
  597. package/src/assets/symbols/vibe.svg +1 -0
  598. package/src/assets/symbols/wabi.svg +1 -0
  599. package/src/assets/symbols/wax.svg +1 -0
  600. package/src/assets/symbols/wbtc.svg +7 -0
  601. package/src/assets/symbols/weth.svg +18 -0
  602. package/src/assets/symbols/wic.svg +7 -0
  603. package/src/assets/symbols/wings.svg +1 -0
  604. package/src/assets/symbols/wnxm.svg +7 -0
  605. package/src/assets/symbols/wpr.svg +1 -0
  606. package/src/assets/symbols/wrap.png +0 -0
  607. package/src/assets/symbols/wtc.svg +1 -0
  608. package/src/assets/symbols/wusdc.png +0 -0
  609. package/src/assets/symbols/xchf.svg +1 -0
  610. package/src/assets/symbols/xdce.svg +7 -0
  611. package/src/assets/symbols/xin.svg +7 -0
  612. package/src/assets/symbols/xpa.svg +1 -0
  613. package/src/assets/symbols/xpl.svg +1 -0
  614. package/src/assets/symbols/xtz.svg +5 -0
  615. package/src/assets/symbols/yfi.svg +7 -0
  616. package/src/assets/symbols/you.svg +1 -0
  617. package/src/assets/symbols/yoyow.svg +1 -0
  618. package/src/assets/symbols/ytez.svg +1 -0
  619. package/src/assets/symbols/zb.svg +7 -0
  620. package/src/assets/symbols/zil.svg +1 -0
  621. package/src/assets/symbols/zrx.svg +1 -0
  622. package/src/assets/workers/airgap-coin-lib.js +119 -0
  623. package/wallfree-dev-angular-core.d.ts.map +1 -0
@@ -0,0 +1,16 @@
1
+ import { RemoteDataFactory } from '@wallfree-dev/coinlib-core/utils/remote-data/RemoteDataFactory';
2
+ export class ImageDirectFetcher {
3
+ constructor(uriService) {
4
+ this.uriService = uriService;
5
+ this.remoteDataFactory = new RemoteDataFactory();
6
+ }
7
+ async fetch(uri) {
8
+ const remoteData = this.remoteDataFactory.create(uri, {});
9
+ const rawData = await remoteData?.getRaw();
10
+ if (!rawData) {
11
+ return undefined;
12
+ }
13
+ return this.uriService.data(rawData.bytes.toString('base64'), rawData.contentType, true);
14
+ }
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZGlyZWN0LmZldGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ltYWdlL2ZldGNoZXIvaW1hZ2UtZGlyZWN0LmZldGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0VBQWdFLENBQUE7QUFJbEcsTUFBTSxPQUFPLGtCQUFrQjtJQUc3QixZQUE2QixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ2pELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUE7SUFDbEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBVztRQUM1QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUN6RCxNQUFNLE9BQU8sR0FBd0IsTUFBTSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUE7UUFDL0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxTQUFTLENBQUE7UUFDbEIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMxRixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSYXdEYXRhIH0gZnJvbSAnQHdhbGxmcmVlLWRldi9jb2lubGliLWNvcmUvdXRpbHMvcmVtb3RlLWRhdGEvUmVtb3RlRGF0YSdcbmltcG9ydCB7IFJlbW90ZURhdGFGYWN0b3J5IH0gZnJvbSAnQHdhbGxmcmVlLWRldi9jb2lubGliLWNvcmUvdXRpbHMvcmVtb3RlLWRhdGEvUmVtb3RlRGF0YUZhY3RvcnknXG5pbXBvcnQgeyBVcmlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXJpL3VyaS5zZXJ2aWNlJ1xuaW1wb3J0IHsgSW1hZ2VGZXRjaGVyIH0gZnJvbSAnLi4vaW1hZ2Uuc2VydmljZSdcblxuZXhwb3J0IGNsYXNzIEltYWdlRGlyZWN0RmV0Y2hlciBpbXBsZW1lbnRzIEltYWdlRmV0Y2hlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVtb3RlRGF0YUZhY3Rvcnk6IFJlbW90ZURhdGFGYWN0b3J5XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB1cmlTZXJ2aWNlOiBVcmlTZXJ2aWNlKSB7XG4gICAgdGhpcy5yZW1vdGVEYXRhRmFjdG9yeSA9IG5ldyBSZW1vdGVEYXRhRmFjdG9yeSgpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZmV0Y2godXJpOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJlbW90ZURhdGEgPSB0aGlzLnJlbW90ZURhdGFGYWN0b3J5LmNyZWF0ZSh1cmksIHt9KVxuICAgIGNvbnN0IHJhd0RhdGE6IFJhd0RhdGEgfCB1bmRlZmluZWQgPSBhd2FpdCByZW1vdGVEYXRhPy5nZXRSYXcoKVxuICAgIGlmICghcmF3RGF0YSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnVyaVNlcnZpY2UuZGF0YShyYXdEYXRhLmJ5dGVzLnRvU3RyaW5nKCdiYXNlNjQnKSwgcmF3RGF0YS5jb250ZW50VHlwZSwgdHJ1ZSlcbiAgfVxufVxuIl19
@@ -0,0 +1,45 @@
1
+ import axios from 'axios';
2
+ function isApiResponseSuccess(response) {
3
+ return response.result !== undefined;
4
+ }
5
+ function isApiResponseError(response) {
6
+ return response.error !== undefined;
7
+ }
8
+ const API_URL = 'https://imgproxy-prod.cryptonomic-infra.tech';
9
+ const API_KEY = ''; // TODO: set apikey
10
+ export class ImageProxyFetcher {
11
+ constructor(apiUrl = API_URL, apiKey = API_KEY) {
12
+ this.apiUrl = apiUrl;
13
+ this.apiKey = apiKey;
14
+ }
15
+ async fetch(uri) {
16
+ const result = await this.send('img_proxy_fetch', {
17
+ // eslint-disable-next-line @typescript-eslint/naming-convention
18
+ response_type: 'Raw',
19
+ url: uri,
20
+ force: false
21
+ });
22
+ return result.data;
23
+ }
24
+ async send(method, params) {
25
+ const response = await axios.post(this.apiUrl, {
26
+ jsonrpc: '1.0.0',
27
+ method,
28
+ params
29
+ }, {
30
+ headers: {
31
+ apikey: this.apiKey,
32
+ // eslint-disable-next-line @typescript-eslint/naming-convention
33
+ 'Content-Type': 'application/json'
34
+ }
35
+ });
36
+ if (isApiResponseError(response.data)) {
37
+ throw response.data.error;
38
+ }
39
+ if (isApiResponseSuccess(response.data)) {
40
+ return response.data.result;
41
+ }
42
+ throw new Error('Unknown error');
43
+ }
44
+ }
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcHJveHkuZmV0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvaW1hZ2UvZmV0Y2hlci9pbWFnZS1wcm94eS5mZXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBd0IsTUFBTSxPQUFPLENBQUE7QUFjNUMsU0FBUyxvQkFBb0IsQ0FBSSxRQUF3QjtJQUN2RCxPQUFRLFFBQTJDLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQTtBQUMxRSxDQUFDO0FBV0QsU0FBUyxrQkFBa0IsQ0FBSSxRQUF3QjtJQUNyRCxPQUFRLFFBQXNDLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQTtBQUNwRSxDQUFDO0FBdUJELE1BQU0sT0FBTyxHQUFHLDhDQUE4QyxDQUFBO0FBQzlELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQSxDQUFDLG1CQUFtQjtBQUV0QyxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFlBQTZCLFNBQWlCLE9BQU8sRUFBbUIsU0FBaUIsT0FBTztRQUFuRSxXQUFNLEdBQU4sTUFBTSxDQUFrQjtRQUFtQixXQUFNLEdBQU4sTUFBTSxDQUFrQjtJQUFHLENBQUM7SUFFN0YsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFXO1FBQzVCLE1BQU0sTUFBTSxHQUF3QixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDckUsZ0VBQWdFO1lBQ2hFLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLEdBQUcsRUFBRSxHQUFHO1lBQ1IsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUE7UUFFRixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUE7SUFDcEIsQ0FBQztJQUVPLEtBQUssQ0FBQyxJQUFJLENBQXNCLE1BQVMsRUFBRSxNQUFvQjtRQUNyRSxNQUFNLFFBQVEsR0FBNkMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUN6RSxJQUFJLENBQUMsTUFBTSxFQUNYO1lBQ0UsT0FBTyxFQUFFLE9BQU87WUFDaEIsTUFBTTtZQUNOLE1BQU07U0FDUCxFQUNEO1lBQ0UsT0FBTyxFQUFFO2dCQUNQLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsZ0VBQWdFO2dCQUNoRSxjQUFjLEVBQUUsa0JBQWtCO2FBQ25DO1NBQ0YsQ0FDRixDQUFBO1FBRUQsSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxNQUFNLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFBO1FBQzNCLENBQUM7UUFFRCxJQUFJLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUE7UUFDN0IsQ0FBQztRQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUE7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGF4aW9zLCB7IEF4aW9zUmVzcG9uc2UgfSBmcm9tICdheGlvcydcbmltcG9ydCB7IEltYWdlRmV0Y2hlciB9IGZyb20gJy4uL2ltYWdlLnNlcnZpY2UnXG5cbmludGVyZmFjZSBBcGlSZXNwb25zZUJhc2Uge1xuICBqc29ucnBjOiBzdHJpbmdcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICBycGNfc3RhdHVzOiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIEFwaVJlc3BvbnNlU3VjY2VzczxUPiBleHRlbmRzIEFwaVJlc3BvbnNlQmFzZSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpZC1ibGFja2xpc3RcbiAgcmVzdWx0OiBUXG59XG5cbmZ1bmN0aW9uIGlzQXBpUmVzcG9uc2VTdWNjZXNzPFQ+KHJlc3BvbnNlOiBBcGlSZXNwb25zZTxUPik6IHJlc3BvbnNlIGlzIEFwaVJlc3BvbnNlU3VjY2VzczxUPiB7XG4gIHJldHVybiAocmVzcG9uc2UgYXMgUGFydGlhbDxBcGlSZXNwb25zZVN1Y2Nlc3M8VD4+KS5yZXN1bHQgIT09IHVuZGVmaW5lZFxufVxuXG5pbnRlcmZhY2UgQXBpUmVzcG9uc2VFcnJvciBleHRlbmRzIEFwaVJlc3BvbnNlQmFzZSB7XG4gIGVycm9yOiB7XG4gICAgY29kZTogbnVtYmVyXG4gICAgcmVhc29uOiBzdHJpbmdcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgcmVxdWVzdF9pZDogc3RyaW5nXG4gIH1cbn1cblxuZnVuY3Rpb24gaXNBcGlSZXNwb25zZUVycm9yPFQ+KHJlc3BvbnNlOiBBcGlSZXNwb25zZTxUPik6IHJlc3BvbnNlIGlzIEFwaVJlc3BvbnNlRXJyb3Ige1xuICByZXR1cm4gKHJlc3BvbnNlIGFzIFBhcnRpYWw8QXBpUmVzcG9uc2VFcnJvcj4pLmVycm9yICE9PSB1bmRlZmluZWRcbn1cblxudHlwZSBBcGlSZXNwb25zZTxUPiA9IEFwaVJlc3BvbnNlU3VjY2VzczxUPiB8IEFwaVJlc3BvbnNlRXJyb3JcblxuaW50ZXJmYWNlIEltZ1Byb3h5RmV0Y2hQYXJhbXMge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gIHJlc3BvbnNlX3R5cGU6ICdSYXcnIHwgJ0pzb24nXG4gIHVybDogc3RyaW5nXG4gIGZvcmNlOiBib29sZWFuXG59XG5cbmludGVyZmFjZSBJbWdQcm94eUZldGNoUmVzdWx0IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICBtb2RlcmF0aW9uX3N0YXR1czogc3RyaW5nXG4gIGNhdGVnb3JpZXM6IHN0cmluZ1tdXG4gIGRhdGE6IHN0cmluZ1xufVxuXG50eXBlIEFwaU1ldGhvZCA9ICdpbWdfcHJveHlfZmV0Y2gnXG5cbnR5cGUgQXBpUGFyYW1zPFQgZXh0ZW5kcyBBcGlNZXRob2Q+ID0gVCBleHRlbmRzICdpbWdfcHJveHlfZmV0Y2gnID8gSW1nUHJveHlGZXRjaFBhcmFtcyA6IG5ldmVyXG50eXBlIEFwaVJlc3VsdDxUIGV4dGVuZHMgQXBpTWV0aG9kPiA9IFQgZXh0ZW5kcyAnaW1nX3Byb3h5X2ZldGNoJyA/IEltZ1Byb3h5RmV0Y2hSZXN1bHQgOiBuZXZlclxuXG5jb25zdCBBUElfVVJMID0gJ2h0dHBzOi8vaW1ncHJveHktcHJvZC5jcnlwdG9ub21pYy1pbmZyYS50ZWNoJ1xuY29uc3QgQVBJX0tFWSA9ICcnIC8vIFRPRE86IHNldCBhcGlrZXlcblxuZXhwb3J0IGNsYXNzIEltYWdlUHJveHlGZXRjaGVyIGltcGxlbWVudHMgSW1hZ2VGZXRjaGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhcGlVcmw6IHN0cmluZyA9IEFQSV9VUkwsIHByaXZhdGUgcmVhZG9ubHkgYXBpS2V5OiBzdHJpbmcgPSBBUElfS0VZKSB7fVxuXG4gIHB1YmxpYyBhc3luYyBmZXRjaCh1cmk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcmVzdWx0OiBJbWdQcm94eUZldGNoUmVzdWx0ID0gYXdhaXQgdGhpcy5zZW5kKCdpbWdfcHJveHlfZmV0Y2gnLCB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgICByZXNwb25zZV90eXBlOiAnUmF3JyxcbiAgICAgIHVybDogdXJpLFxuICAgICAgZm9yY2U6IGZhbHNlXG4gICAgfSlcblxuICAgIHJldHVybiByZXN1bHQuZGF0YVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kPFQgZXh0ZW5kcyBBcGlNZXRob2Q+KG1ldGhvZDogVCwgcGFyYW1zOiBBcGlQYXJhbXM8VD4pOiBQcm9taXNlPEFwaVJlc3VsdDxUPj4ge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBBeGlvc1Jlc3BvbnNlPEFwaVJlc3BvbnNlPEFwaVJlc3VsdDxUPj4+ID0gYXdhaXQgYXhpb3MucG9zdChcbiAgICAgIHRoaXMuYXBpVXJsLFxuICAgICAge1xuICAgICAgICBqc29ucnBjOiAnMS4wLjAnLFxuICAgICAgICBtZXRob2QsXG4gICAgICAgIHBhcmFtc1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIGFwaWtleTogdGhpcy5hcGlLZXksXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgfVxuICAgICAgfVxuICAgIClcblxuICAgIGlmIChpc0FwaVJlc3BvbnNlRXJyb3IocmVzcG9uc2UuZGF0YSkpIHtcbiAgICAgIHRocm93IHJlc3BvbnNlLmRhdGEuZXJyb3JcbiAgICB9XG5cbiAgICBpZiAoaXNBcGlSZXNwb25zZVN1Y2Nlc3MocmVzcG9uc2UuZGF0YSkpIHtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLnJlc3VsdFxuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBlcnJvcicpXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,39 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { ImageDirectFetcher } from './fetcher/image-direct.fetcher';
3
+ import { ImageProxyFetcher } from './fetcher/image-proxy.fetcher';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../uri/uri.service";
6
+ const DEFAULT_FETCH_OPTIONS = {
7
+ useProxy: false
8
+ };
9
+ export class ImageService {
10
+ constructor(uriService) {
11
+ this.uriService = uriService;
12
+ }
13
+ async fetch(uri, options = DEFAULT_FETCH_OPTIONS) {
14
+ return this.getFetcher(options).fetch(uri);
15
+ }
16
+ getFetcher(options) {
17
+ if (options.useProxy) {
18
+ const proxyFetcher = this.proxyFetcher ?? new ImageProxyFetcher();
19
+ if (!this.proxyFetcher) {
20
+ this.proxyFetcher = proxyFetcher;
21
+ }
22
+ return proxyFetcher;
23
+ }
24
+ const directFetcher = this.directFetcher ?? new ImageDirectFetcher(this.uriService);
25
+ if (!this.directFetcher) {
26
+ this.directFetcher = directFetcher;
27
+ }
28
+ return directFetcher;
29
+ }
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageService, deps: [{ token: i1.UriService }], target: i0.ɵɵFactoryTarget.Injectable }); }
31
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageService, providedIn: 'root' }); }
32
+ }
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageService, decorators: [{
34
+ type: Injectable,
35
+ args: [{
36
+ providedIn: 'root'
37
+ }]
38
+ }], ctorParameters: () => [{ type: i1.UriService }] });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvaW1hZ2UvaW1hZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFBOzs7QUFVakUsTUFBTSxxQkFBcUIsR0FBaUI7SUFDMUMsUUFBUSxFQUFFLEtBQUs7Q0FDaEIsQ0FBQTtBQUtELE1BQU0sT0FBTyxZQUFZO0lBSXZCLFlBQTZCLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7SUFBRyxDQUFDO0lBRWhELEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBVyxFQUFFLFVBQXdCLHFCQUFxQjtRQUMzRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzVDLENBQUM7SUFFTyxVQUFVLENBQUMsT0FBcUI7UUFDdEMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDckIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLGlCQUFpQixFQUFFLENBQUE7WUFDakUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUE7WUFDbEMsQ0FBQztZQUVELE9BQU8sWUFBWSxDQUFBO1FBQ3JCLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ25GLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7UUFDcEMsQ0FBQztRQUVELE9BQU8sYUFBYSxDQUFBO0lBQ3RCLENBQUM7K0dBMUJVLFlBQVk7bUhBQVosWUFBWSxjQUZYLE1BQU07OzRGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBVcmlTZXJ2aWNlIH0gZnJvbSAnLi4vdXJpL3VyaS5zZXJ2aWNlJ1xuaW1wb3J0IHsgSW1hZ2VEaXJlY3RGZXRjaGVyIH0gZnJvbSAnLi9mZXRjaGVyL2ltYWdlLWRpcmVjdC5mZXRjaGVyJ1xuaW1wb3J0IHsgSW1hZ2VQcm94eUZldGNoZXIgfSBmcm9tICcuL2ZldGNoZXIvaW1hZ2UtcHJveHkuZmV0Y2hlcidcblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZUZldGNoZXIge1xuICBmZXRjaCh1cmk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPlxufVxuXG5pbnRlcmZhY2UgRmV0Y2hPcHRpb25zIHtcbiAgdXNlUHJveHk6IGJvb2xlYW5cbn1cblxuY29uc3QgREVGQVVMVF9GRVRDSF9PUFRJT05TOiBGZXRjaE9wdGlvbnMgPSB7XG4gIHVzZVByb3h5OiBmYWxzZVxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBJbWFnZVNlcnZpY2Uge1xuICBwcml2YXRlIGRpcmVjdEZldGNoZXI6IEltYWdlRGlyZWN0RmV0Y2hlciB8IHVuZGVmaW5lZFxuICBwcml2YXRlIHByb3h5RmV0Y2hlcjogSW1hZ2VQcm94eUZldGNoZXIgfCB1bmRlZmluZWRcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHVyaVNlcnZpY2U6IFVyaVNlcnZpY2UpIHt9XG5cbiAgcHVibGljIGFzeW5jIGZldGNoKHVyaTogc3RyaW5nLCBvcHRpb25zOiBGZXRjaE9wdGlvbnMgPSBERUZBVUxUX0ZFVENIX09QVElPTlMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmdldEZldGNoZXIob3B0aW9ucykuZmV0Y2godXJpKVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRGZXRjaGVyKG9wdGlvbnM6IEZldGNoT3B0aW9ucyk6IEltYWdlRmV0Y2hlciB7XG4gICAgaWYgKG9wdGlvbnMudXNlUHJveHkpIHtcbiAgICAgIGNvbnN0IHByb3h5RmV0Y2hlciA9IHRoaXMucHJveHlGZXRjaGVyID8/IG5ldyBJbWFnZVByb3h5RmV0Y2hlcigpXG4gICAgICBpZiAoIXRoaXMucHJveHlGZXRjaGVyKSB7XG4gICAgICAgIHRoaXMucHJveHlGZXRjaGVyID0gcHJveHlGZXRjaGVyXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcm94eUZldGNoZXJcbiAgICB9XG5cbiAgICBjb25zdCBkaXJlY3RGZXRjaGVyID0gdGhpcy5kaXJlY3RGZXRjaGVyID8/IG5ldyBJbWFnZURpcmVjdEZldGNoZXIodGhpcy51cmlTZXJ2aWNlKVxuICAgIGlmICghdGhpcy5kaXJlY3RGZXRjaGVyKSB7XG4gICAgICB0aGlzLmRpcmVjdEZldGNoZXIgPSBkaXJlY3RGZXRjaGVyXG4gICAgfVxuXG4gICAgcmV0dXJuIGRpcmVjdEZldGNoZXJcbiAgfVxufVxuIl19
@@ -0,0 +1,57 @@
1
+ import { MainProtocolSymbols } from '@wallfree-dev/coinlib-core';
2
+ import { Injectable } from '@angular/core';
3
+ import { ICoinProtocolAdapter } from '../../protocol/adapter/protocol-v0-adapter';
4
+ import * as i0 from "@angular/core";
5
+ export class KeyPairService {
6
+ async signWithWallet(wallet, unsigned, mnemonic, password) {
7
+ return this.signWithProtocol(wallet.protocol, unsigned, mnemonic, password, wallet.isExtendedPublicKey, wallet.derivationPath);
8
+ }
9
+ async signWithProtocol(protocol, unsigned, mnemonic, password, withExtendedPrivateKey = false, optionalDerivationPath, childDerivationPath) {
10
+ const derivationPath = optionalDerivationPath ?? (await protocol.getStandardDerivationPath());
11
+ if (!(await this.checkPassword(protocol, unsigned, mnemonic, withExtendedPrivateKey, derivationPath, password))) {
12
+ throw new Error('Invalid BIP-39 passphrase');
13
+ }
14
+ if (withExtendedPrivateKey) {
15
+ const extendedPrivateKey = await protocol.getExtendedPrivateKeyFromMnemonic(mnemonic, derivationPath, password);
16
+ if (this.isUnsignedTransaction(unsigned)) {
17
+ return protocol.signWithExtendedPrivateKey(extendedPrivateKey, unsigned.transaction, childDerivationPath);
18
+ }
19
+ else {
20
+ const privateKey = (await protocol.getIdentifier()).startsWith(MainProtocolSymbols.ETH)
21
+ ? protocol instanceof ICoinProtocolAdapter
22
+ ? await protocol.getPrivateKeyFromExtendedPrivateKey(extendedPrivateKey, childDerivationPath)
23
+ : await protocol.getPrivateKeyFromExtendedPrivateKey(extendedPrivateKey, childDerivationPath) // This only exists on ETH
24
+ : extendedPrivateKey;
25
+ return protocol.signMessage(unsigned.message, { privateKey });
26
+ }
27
+ }
28
+ else {
29
+ const privateKey = await protocol.getPrivateKeyFromMnemonic(mnemonic, derivationPath, password);
30
+ return this.isUnsignedTransaction(unsigned)
31
+ ? protocol.signWithPrivateKey(privateKey, unsigned.transaction)
32
+ : protocol.signMessage(unsigned.message, { privateKey });
33
+ }
34
+ }
35
+ async checkPassword(protocol, unsigned, mnemonic, withExtendedPrivateKey = false, derivationPath, password) {
36
+ if (unsigned.publicKey.length === 0) {
37
+ // the password can't be verified
38
+ return true;
39
+ }
40
+ const publicKey = withExtendedPrivateKey && (await protocol.getSupportsHD())
41
+ ? await protocol.getExtendedPublicKeyFromMnemonic(mnemonic, derivationPath, password)
42
+ : await protocol.getPublicKeyFromMnemonic(mnemonic, derivationPath, password);
43
+ return publicKey === unsigned.publicKey;
44
+ }
45
+ isUnsignedTransaction(unsigned) {
46
+ return 'transaction' in unsigned;
47
+ }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeyPairService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
49
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeyPairService, providedIn: 'root' }); }
50
+ }
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeyPairService, decorators: [{
52
+ type: Injectable,
53
+ args: [{
54
+ providedIn: 'root'
55
+ }]
56
+ }] });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LXBhaXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMva2V5LXBhaXIva2V5LXBhaXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQStCLG1CQUFtQixFQUF1QixNQUFNLDRCQUE0QixDQUFBO0FBRWxILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNENBQTRDLENBQUE7O0FBT2pGLE1BQU0sT0FBTyxjQUFjO0lBQ2xCLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBb0IsRUFBRSxRQUFrQixFQUFFLFFBQWdCLEVBQUUsUUFBZ0I7UUFDdEcsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ2hJLENBQUM7SUFFTSxLQUFLLENBQUMsZ0JBQWdCLENBQzNCLFFBQXVCLEVBQ3ZCLFFBQWtCLEVBQ2xCLFFBQWdCLEVBQ2hCLFFBQWdCLEVBQ2hCLHlCQUFrQyxLQUFLLEVBQ3ZDLHNCQUErQixFQUMvQixtQkFBNEI7UUFFNUIsTUFBTSxjQUFjLEdBQVcsc0JBQXNCLElBQUksQ0FBQyxNQUFNLFFBQVEsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUE7UUFDckcsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDaEgsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFBO1FBQzlDLENBQUM7UUFFRCxJQUFJLHNCQUFzQixFQUFFLENBQUM7WUFDM0IsTUFBTSxrQkFBa0IsR0FBVyxNQUFNLFFBQVEsQ0FBQyxpQ0FBaUMsQ0FBQyxRQUFRLEVBQUUsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1lBRXZILElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pDLE9BQU8sUUFBUSxDQUFDLDBCQUEwQixDQUFDLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxXQUFXLEVBQUUsbUJBQW1CLENBQUMsQ0FBQTtZQUMzRyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxVQUFVLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUM7b0JBQ3JGLENBQUMsQ0FBQyxRQUFRLFlBQVksb0JBQW9CO3dCQUN4QyxDQUFDLENBQUMsTUFBTSxRQUFRLENBQUMsbUNBQW1DLENBQUMsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUM7d0JBQzdGLENBQUMsQ0FBQyxNQUFPLFFBQWdCLENBQUMsbUNBQW1DLENBQUMsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQywwQkFBMEI7b0JBQ25JLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQTtnQkFFdEIsT0FBTyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFBO1lBQy9ELENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sVUFBVSxHQUFXLE1BQU0sUUFBUSxDQUFDLHlCQUF5QixDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUE7WUFFdkcsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDO2dCQUN6QyxDQUFDLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDO2dCQUMvRCxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQTtRQUM1RCxDQUFDO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxhQUFhLENBQ3hCLFFBQXVCLEVBQ3ZCLFFBQWtCLEVBQ2xCLFFBQWdCLEVBQ2hCLHlCQUFrQyxLQUFLLEVBQ3ZDLGNBQXNCLEVBQ3RCLFFBQWdCO1FBRWhCLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDcEMsaUNBQWlDO1lBQ2pDLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUNiLHNCQUFzQixJQUFJLENBQUMsTUFBTSxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEQsQ0FBQyxDQUFDLE1BQU0sUUFBUSxDQUFDLGdDQUFnQyxDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsUUFBUSxDQUFDO1lBQ3JGLENBQUMsQ0FBQyxNQUFNLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBRWpGLE9BQU8sU0FBUyxLQUFLLFFBQVEsQ0FBQyxTQUFTLENBQUE7SUFDekMsQ0FBQztJQUVPLHFCQUFxQixDQUFDLFFBQWtCO1FBQzlDLE9BQU8sYUFBYSxJQUFJLFFBQVEsQ0FBQTtJQUNsQyxDQUFDOytHQWpFVSxjQUFjO21IQUFkLGNBQWMsY0FGYixNQUFNOzs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFpckdhcFdhbGxldCwgSUNvaW5Qcm90b2NvbCwgTWFpblByb3RvY29sU3ltYm9scywgVW5zaWduZWRUcmFuc2FjdGlvbiB9IGZyb20gJ0B3YWxsZnJlZS1kZXYvY29pbmxpYi1jb3JlJ1xuaW1wb3J0IHsgTWVzc2FnZVNpZ25SZXF1ZXN0IH0gZnJvbSAnQHdhbGxmcmVlLWRldi9zZXJpYWxpemVyJ1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBJQ29pblByb3RvY29sQWRhcHRlciB9IGZyb20gJy4uLy4uL3Byb3RvY29sL2FkYXB0ZXIvcHJvdG9jb2wtdjAtYWRhcHRlcidcblxudHlwZSBVbnNpZ25lZCA9IFVuc2lnbmVkVHJhbnNhY3Rpb24gfCBNZXNzYWdlU2lnblJlcXVlc3RcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgS2V5UGFpclNlcnZpY2Uge1xuICBwdWJsaWMgYXN5bmMgc2lnbldpdGhXYWxsZXQod2FsbGV0OiBBaXJHYXBXYWxsZXQsIHVuc2lnbmVkOiBVbnNpZ25lZCwgbW5lbW9uaWM6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuc2lnbldpdGhQcm90b2NvbCh3YWxsZXQucHJvdG9jb2wsIHVuc2lnbmVkLCBtbmVtb25pYywgcGFzc3dvcmQsIHdhbGxldC5pc0V4dGVuZGVkUHVibGljS2V5LCB3YWxsZXQuZGVyaXZhdGlvblBhdGgpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2lnbldpdGhQcm90b2NvbChcbiAgICBwcm90b2NvbDogSUNvaW5Qcm90b2NvbCxcbiAgICB1bnNpZ25lZDogVW5zaWduZWQsXG4gICAgbW5lbW9uaWM6IHN0cmluZyxcbiAgICBwYXNzd29yZDogc3RyaW5nLFxuICAgIHdpdGhFeHRlbmRlZFByaXZhdGVLZXk6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBvcHRpb25hbERlcml2YXRpb25QYXRoPzogc3RyaW5nLFxuICAgIGNoaWxkRGVyaXZhdGlvblBhdGg/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBkZXJpdmF0aW9uUGF0aDogc3RyaW5nID0gb3B0aW9uYWxEZXJpdmF0aW9uUGF0aCA/PyAoYXdhaXQgcHJvdG9jb2wuZ2V0U3RhbmRhcmREZXJpdmF0aW9uUGF0aCgpKVxuICAgIGlmICghKGF3YWl0IHRoaXMuY2hlY2tQYXNzd29yZChwcm90b2NvbCwgdW5zaWduZWQsIG1uZW1vbmljLCB3aXRoRXh0ZW5kZWRQcml2YXRlS2V5LCBkZXJpdmF0aW9uUGF0aCwgcGFzc3dvcmQpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEJJUC0zOSBwYXNzcGhyYXNlJylcbiAgICB9XG5cbiAgICBpZiAod2l0aEV4dGVuZGVkUHJpdmF0ZUtleSkge1xuICAgICAgY29uc3QgZXh0ZW5kZWRQcml2YXRlS2V5OiBzdHJpbmcgPSBhd2FpdCBwcm90b2NvbC5nZXRFeHRlbmRlZFByaXZhdGVLZXlGcm9tTW5lbW9uaWMobW5lbW9uaWMsIGRlcml2YXRpb25QYXRoLCBwYXNzd29yZClcblxuICAgICAgaWYgKHRoaXMuaXNVbnNpZ25lZFRyYW5zYWN0aW9uKHVuc2lnbmVkKSkge1xuICAgICAgICByZXR1cm4gcHJvdG9jb2wuc2lnbldpdGhFeHRlbmRlZFByaXZhdGVLZXkoZXh0ZW5kZWRQcml2YXRlS2V5LCB1bnNpZ25lZC50cmFuc2FjdGlvbiwgY2hpbGREZXJpdmF0aW9uUGF0aClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHByaXZhdGVLZXkgPSAoYXdhaXQgcHJvdG9jb2wuZ2V0SWRlbnRpZmllcigpKS5zdGFydHNXaXRoKE1haW5Qcm90b2NvbFN5bWJvbHMuRVRIKVxuICAgICAgICAgID8gcHJvdG9jb2wgaW5zdGFuY2VvZiBJQ29pblByb3RvY29sQWRhcHRlclxuICAgICAgICAgICAgPyBhd2FpdCBwcm90b2NvbC5nZXRQcml2YXRlS2V5RnJvbUV4dGVuZGVkUHJpdmF0ZUtleShleHRlbmRlZFByaXZhdGVLZXksIGNoaWxkRGVyaXZhdGlvblBhdGgpXG4gICAgICAgICAgICA6IGF3YWl0IChwcm90b2NvbCBhcyBhbnkpLmdldFByaXZhdGVLZXlGcm9tRXh0ZW5kZWRQcml2YXRlS2V5KGV4dGVuZGVkUHJpdmF0ZUtleSwgY2hpbGREZXJpdmF0aW9uUGF0aCkgLy8gVGhpcyBvbmx5IGV4aXN0cyBvbiBFVEhcbiAgICAgICAgICA6IGV4dGVuZGVkUHJpdmF0ZUtleVxuXG4gICAgICAgIHJldHVybiBwcm90b2NvbC5zaWduTWVzc2FnZSh1bnNpZ25lZC5tZXNzYWdlLCB7IHByaXZhdGVLZXkgfSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcHJpdmF0ZUtleTogc3RyaW5nID0gYXdhaXQgcHJvdG9jb2wuZ2V0UHJpdmF0ZUtleUZyb21NbmVtb25pYyhtbmVtb25pYywgZGVyaXZhdGlvblBhdGgsIHBhc3N3b3JkKVxuXG4gICAgICByZXR1cm4gdGhpcy5pc1Vuc2lnbmVkVHJhbnNhY3Rpb24odW5zaWduZWQpXG4gICAgICAgID8gcHJvdG9jb2wuc2lnbldpdGhQcml2YXRlS2V5KHByaXZhdGVLZXksIHVuc2lnbmVkLnRyYW5zYWN0aW9uKVxuICAgICAgICA6IHByb3RvY29sLnNpZ25NZXNzYWdlKHVuc2lnbmVkLm1lc3NhZ2UsIHsgcHJpdmF0ZUtleSB9KVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjaGVja1Bhc3N3b3JkKFxuICAgIHByb3RvY29sOiBJQ29pblByb3RvY29sLFxuICAgIHVuc2lnbmVkOiBVbnNpZ25lZCxcbiAgICBtbmVtb25pYzogc3RyaW5nLFxuICAgIHdpdGhFeHRlbmRlZFByaXZhdGVLZXk6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBkZXJpdmF0aW9uUGF0aDogc3RyaW5nLFxuICAgIHBhc3N3b3JkOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHVuc2lnbmVkLnB1YmxpY0tleS5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIHRoZSBwYXNzd29yZCBjYW4ndCBiZSB2ZXJpZmllZFxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBjb25zdCBwdWJsaWNLZXk6IHN0cmluZyA9XG4gICAgICB3aXRoRXh0ZW5kZWRQcml2YXRlS2V5ICYmIChhd2FpdCBwcm90b2NvbC5nZXRTdXBwb3J0c0hEKCkpXG4gICAgICAgID8gYXdhaXQgcHJvdG9jb2wuZ2V0RXh0ZW5kZWRQdWJsaWNLZXlGcm9tTW5lbW9uaWMobW5lbW9uaWMsIGRlcml2YXRpb25QYXRoLCBwYXNzd29yZClcbiAgICAgICAgOiBhd2FpdCBwcm90b2NvbC5nZXRQdWJsaWNLZXlGcm9tTW5lbW9uaWMobW5lbW9uaWMsIGRlcml2YXRpb25QYXRoLCBwYXNzd29yZClcblxuICAgIHJldHVybiBwdWJsaWNLZXkgPT09IHVuc2lnbmVkLnB1YmxpY0tleVxuICB9XG5cbiAgcHJpdmF0ZSBpc1Vuc2lnbmVkVHJhbnNhY3Rpb24odW5zaWduZWQ6IFVuc2lnbmVkKTogdW5zaWduZWQgaXMgVW5zaWduZWRUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuICd0cmFuc2FjdGlvbicgaW4gdW5zaWduZWRcbiAgfVxufVxuIl19
@@ -0,0 +1,47 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@ngx-translate/core";
4
+ export class LanguageService {
5
+ static { this.defaultLanguage = 'en'; }
6
+ get supportedLanguages() {
7
+ return this.translateService.getLangs();
8
+ }
9
+ constructor(translateService) {
10
+ this.translateService = translateService;
11
+ }
12
+ async init(config = {
13
+ supportedLanguages: [LanguageService.defaultLanguage],
14
+ defaultLanguage: LanguageService.defaultLanguage,
15
+ useBrowserLanguage: true
16
+ }) {
17
+ const supportedLanguages = config.supportedLanguages;
18
+ const defaultLanguage = config.defaultLanguage;
19
+ const useBrowserLanguage = config.useBrowserLanguage ?? true;
20
+ if (supportedLanguages.find((supported) => supported === defaultLanguage) === undefined) {
21
+ supportedLanguages.push(defaultLanguage);
22
+ }
23
+ this.translateService.addLangs(supportedLanguages);
24
+ this.translateService.setDefaultLang(defaultLanguage);
25
+ const language = useBrowserLanguage ? this.translateService.getBrowserLang().toLowerCase() : defaultLanguage;
26
+ return this.changeLanguage(language);
27
+ }
28
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
29
+ loadTranslation(language, translation, merge = true) {
30
+ this.translateService.setTranslation(language, translation, merge);
31
+ }
32
+ async changeLanguage(language) {
33
+ return this.translateService.use(language).toPromise();
34
+ }
35
+ isLanguageSupported(language) {
36
+ return this.supportedLanguages.find((supported) => supported === language) !== undefined;
37
+ }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LanguageService, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
39
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LanguageService, providedIn: 'root' }); }
40
+ }
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LanguageService, decorators: [{
42
+ type: Injectable,
43
+ args: [{
44
+ providedIn: 'root'
45
+ }]
46
+ }], ctorParameters: () => [{ type: i1.TranslateService }] });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvbGFuZ3VhZ2UvbGFuZ3VhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBOzs7QUFhMUMsTUFBTSxPQUFPLGVBQWU7YUFDRixvQkFBZSxHQUFzQixJQUFJLEFBQTFCLENBQTBCO0lBRWpFLElBQVcsa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ3pDLENBQUM7SUFFRCxZQUE2QixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUFHLENBQUM7SUFFNUQsS0FBSyxDQUFDLElBQUksQ0FDZixTQUFnQztRQUM5QixrQkFBa0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUM7UUFDckQsZUFBZSxFQUFFLGVBQWUsQ0FBQyxlQUFlO1FBQ2hELGtCQUFrQixFQUFFLElBQUk7S0FDekI7UUFFRCxNQUFNLGtCQUFrQixHQUF3QixNQUFNLENBQUMsa0JBQWtCLENBQUE7UUFDekUsTUFBTSxlQUFlLEdBQXNCLE1BQU0sQ0FBQyxlQUFlLENBQUE7UUFDakUsTUFBTSxrQkFBa0IsR0FBWSxNQUFNLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFBO1FBRXJFLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBNEIsRUFBRSxFQUFFLENBQUMsU0FBUyxLQUFLLGVBQWUsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzNHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUMxQyxDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1FBQ2xELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLENBQUE7UUFFckQsTUFBTSxRQUFRLEdBQVcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFBO1FBRXBILE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBRUQsaUhBQWlIO0lBQzFHLGVBQWUsQ0FBQyxRQUFnQixFQUFFLFdBQWdCLEVBQUUsUUFBaUIsSUFBSTtRQUM5RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDcEUsQ0FBQztJQUVNLEtBQUssQ0FBQyxjQUFjLENBQUMsUUFBZ0I7UUFDMUMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFBO0lBQ3hELENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxRQUFnQjtRQUN6QyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFpQixFQUFFLEVBQUUsQ0FBQyxTQUFTLEtBQUssUUFBUSxDQUFDLEtBQUssU0FBUyxDQUFBO0lBQ2xHLENBQUM7K0dBM0NVLGVBQWU7bUhBQWYsZUFBZSxjQUZkLE1BQU07OzRGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IFN1cHBvcnRlZExhbmd1YWdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvU3VwcG9ydGVkTGFuZ3VhZ2UnXG5cbmV4cG9ydCBpbnRlcmZhY2UgTGFuZ3VhZ2VTZXJ2aWNlQ29uZmlnIHtcbiAgc3VwcG9ydGVkTGFuZ3VhZ2VzOiBTdXBwb3J0ZWRMYW5ndWFnZVtdXG4gIGRlZmF1bHRMYW5ndWFnZTogU3VwcG9ydGVkTGFuZ3VhZ2VcbiAgdXNlQnJvd3Nlckxhbmd1YWdlPzogYm9vbGVhblxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBMYW5ndWFnZVNlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBkZWZhdWx0TGFuZ3VhZ2U6IFN1cHBvcnRlZExhbmd1YWdlID0gJ2VuJ1xuXG4gIHB1YmxpYyBnZXQgc3VwcG9ydGVkTGFuZ3VhZ2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldExhbmdzKClcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSkge31cblxuICBwdWJsaWMgYXN5bmMgaW5pdChcbiAgICBjb25maWc6IExhbmd1YWdlU2VydmljZUNvbmZpZyA9IHtcbiAgICAgIHN1cHBvcnRlZExhbmd1YWdlczogW0xhbmd1YWdlU2VydmljZS5kZWZhdWx0TGFuZ3VhZ2VdLFxuICAgICAgZGVmYXVsdExhbmd1YWdlOiBMYW5ndWFnZVNlcnZpY2UuZGVmYXVsdExhbmd1YWdlLFxuICAgICAgdXNlQnJvd3Nlckxhbmd1YWdlOiB0cnVlXG4gICAgfVxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzdXBwb3J0ZWRMYW5ndWFnZXM6IFN1cHBvcnRlZExhbmd1YWdlW10gPSBjb25maWcuc3VwcG9ydGVkTGFuZ3VhZ2VzXG4gICAgY29uc3QgZGVmYXVsdExhbmd1YWdlOiBTdXBwb3J0ZWRMYW5ndWFnZSA9IGNvbmZpZy5kZWZhdWx0TGFuZ3VhZ2VcbiAgICBjb25zdCB1c2VCcm93c2VyTGFuZ3VhZ2U6IGJvb2xlYW4gPSBjb25maWcudXNlQnJvd3Nlckxhbmd1YWdlID8/IHRydWVcblxuICAgIGlmIChzdXBwb3J0ZWRMYW5ndWFnZXMuZmluZCgoc3VwcG9ydGVkOiBTdXBwb3J0ZWRMYW5ndWFnZSkgPT4gc3VwcG9ydGVkID09PSBkZWZhdWx0TGFuZ3VhZ2UpID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHN1cHBvcnRlZExhbmd1YWdlcy5wdXNoKGRlZmF1bHRMYW5ndWFnZSlcbiAgICB9XG5cbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuYWRkTGFuZ3Moc3VwcG9ydGVkTGFuZ3VhZ2VzKVxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zZXREZWZhdWx0TGFuZyhkZWZhdWx0TGFuZ3VhZ2UpXG5cbiAgICBjb25zdCBsYW5ndWFnZTogc3RyaW5nID0gdXNlQnJvd3Nlckxhbmd1YWdlID8gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldEJyb3dzZXJMYW5nKCkudG9Mb3dlckNhc2UoKSA6IGRlZmF1bHRMYW5ndWFnZVxuXG4gICAgcmV0dXJuIHRoaXMuY2hhbmdlTGFuZ3VhZ2UobGFuZ3VhZ2UpXG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSwgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlc1xuICBwdWJsaWMgbG9hZFRyYW5zbGF0aW9uKGxhbmd1YWdlOiBzdHJpbmcsIHRyYW5zbGF0aW9uOiBhbnksIG1lcmdlOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zZXRUcmFuc2xhdGlvbihsYW5ndWFnZSwgdHJhbnNsYXRpb24sIG1lcmdlKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGNoYW5nZUxhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnVzZShsYW5ndWFnZSkudG9Qcm9taXNlKClcbiAgfVxuXG4gIHB1YmxpYyBpc0xhbmd1YWdlU3VwcG9ydGVkKGxhbmd1YWdlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdXBwb3J0ZWRMYW5ndWFnZXMuZmluZCgoc3VwcG9ydGVkOiBzdHJpbmcpID0+IHN1cHBvcnRlZCA9PT0gbGFuZ3VhZ2UpICE9PSB1bmRlZmluZWRcbiAgfVxufVxuIl19
@@ -0,0 +1,157 @@
1
+ import { isOnlineProtocol, isSubProtocol, protocolNetworkIdentifier } from '@wallfree-dev/module-kit';
2
+ import { SerializerV3 } from '@wallfree-dev/serializer';
3
+ import { Injectable } from '@angular/core';
4
+ import { createICoinProtocolAdapter, createICoinSubProtocolAdapter, TransactionValidatorAdapter } from '../../protocol/adapter/protocol-v0-adapter';
5
+ import { flattened } from '../../utils/array';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "./controller/modules.controller";
8
+ import * as i2 from "../protocol/protocol.service";
9
+ export class BaseModulesService {
10
+ get isInitialized() {
11
+ return this.modulesController.isInitialized;
12
+ }
13
+ constructor(modulesController, protocolService) {
14
+ this.modulesController = modulesController;
15
+ this.protocolService = protocolService;
16
+ }
17
+ init(integralModules = []) {
18
+ if (this.isInitialized) {
19
+ // eslint-disable-next-line no-console
20
+ console.log('[ModulesService] already initialized');
21
+ return;
22
+ }
23
+ this.modulesController.init(integralModules);
24
+ }
25
+ async loadProtocols(type, ignore = []) {
26
+ const modules = await this.modulesController.loadModules(type, ignore);
27
+ const adaptedProtocols = await this.adaptProtocols(modules, type);
28
+ return this.processAdaptedProtocols(adaptedProtocols);
29
+ }
30
+ async deriveAddresses(walletOrWallets, amount = 50) {
31
+ const wallets = Array.isArray(walletOrWallets) ? walletOrWallets : [walletOrWallets];
32
+ return this.modulesController.deriveAddresses(wallets, amount);
33
+ }
34
+ async getModulesMetadata() {
35
+ return this.modulesController.getModulesMetadata();
36
+ }
37
+ async readModuleMetadata(name, path) {
38
+ return this.modulesController.readModuleMetadata(name, path);
39
+ }
40
+ async installModule(metadata) {
41
+ const loadedModule = await this.modulesController.installModule(metadata);
42
+ const adaptedProtocols = await this.adaptProtocols([loadedModule]);
43
+ const protocols = this.processAdaptedProtocols(adaptedProtocols);
44
+ await this.protocolService.addActiveMainProtocols(protocols.activeProtocols);
45
+ await this.protocolService.addActiveSubProtocols(protocols.activeSubProtocols.map(([_, protocol]) => protocol));
46
+ }
47
+ async removeInstalledModules(identifiers) {
48
+ const removedIdentifiers = await this.modulesController.removeInstalledModules(identifiers);
49
+ await this.protocolService.removeProtocols(removedIdentifiers);
50
+ }
51
+ async removeAllInstalledModules() {
52
+ const removedIdentifiers = await this.modulesController.removeAllInstalledModules();
53
+ await this.protocolService.removeProtocols(removedIdentifiers);
54
+ }
55
+ async adaptProtocols(modules, type) {
56
+ const adaptedProtocols = await Promise.all(modules.map(async (module) => {
57
+ this.loadSerializerCompanion(module.v3SerializerCompanion);
58
+ const activeProtocols = {};
59
+ const activeSubProtocols = [];
60
+ const groupedProtocols = await Promise.all(module.protocols.map(async (protocol) => [await this.getProtocolKey(protocol.protocol, type), protocol])).then((pairs) => {
61
+ return pairs.reduce((obj, next) => Object.assign(obj, { [next[0]]: next[1] }), {});
62
+ });
63
+ for (const { protocol, blockExplorer } of Object.values(groupedProtocols)) {
64
+ if (isSubProtocol(protocol)) {
65
+ const adapter = await createICoinSubProtocolAdapter(protocol, blockExplorer, module.v3SerializerCompanion, { type });
66
+ const mainKey = await this.getProtocolKey(await adapter.protocolV1.mainProtocol(), isOnlineProtocol(adapter.protocolV1) && (type === 'online' || type === 'full')
67
+ ? await adapter.protocolV1.getNetwork()
68
+ : undefined);
69
+ if (!(mainKey in activeProtocols)) {
70
+ const mainAdapter = await createICoinProtocolAdapter(groupedProtocols[mainKey].protocol, groupedProtocols[mainKey].blockExplorer, module.v3SerializerCompanion, { type });
71
+ activeProtocols[mainKey] = mainAdapter;
72
+ }
73
+ activeSubProtocols.push([activeProtocols[mainKey], adapter]);
74
+ }
75
+ else {
76
+ const key = await this.getProtocolKey(protocol, type);
77
+ if (activeProtocols[key] !== undefined) {
78
+ continue;
79
+ }
80
+ const adapter = await createICoinProtocolAdapter(protocol, blockExplorer, module.v3SerializerCompanion, {
81
+ type
82
+ });
83
+ activeProtocols[key] = adapter;
84
+ }
85
+ }
86
+ const adaptedMainProtocols = Object.values(activeProtocols).map((protocol) => ({
87
+ type: 'main',
88
+ status: 'active',
89
+ value: protocol
90
+ }));
91
+ const adaptedSubProtocols = activeSubProtocols.map((protocol) => ({
92
+ type: 'sub',
93
+ status: 'active',
94
+ value: protocol
95
+ }));
96
+ return adaptedMainProtocols.concat(adaptedSubProtocols);
97
+ }));
98
+ return flattened(adaptedProtocols);
99
+ }
100
+ loadSerializerCompanion(v3SerializerCompanion) {
101
+ v3SerializerCompanion.schemas.forEach((configuration) => {
102
+ SerializerV3.addSchema(configuration.type, configuration.schema, configuration.protocolIdentifier);
103
+ if (configuration.protocolIdentifier) {
104
+ SerializerV3.addValidator(configuration.protocolIdentifier, {
105
+ create() {
106
+ return new TransactionValidatorAdapter(configuration.protocolIdentifier, v3SerializerCompanion);
107
+ }
108
+ });
109
+ }
110
+ });
111
+ }
112
+ processAdaptedProtocols(protocols) {
113
+ const activeProtocols = [];
114
+ const passiveProtocols = [];
115
+ const activeSubProtocols = [];
116
+ const passiveSubProtocols = [];
117
+ for (const protocol of protocols) {
118
+ if (protocol.type === 'main' && protocol.status === 'active') {
119
+ activeProtocols.push(protocol.value);
120
+ }
121
+ if (protocol.type === 'main' && protocol.status === 'passive') {
122
+ passiveProtocols.push(protocol.value);
123
+ }
124
+ if (protocol.type === 'sub' && protocol.status === 'active') {
125
+ activeSubProtocols.push(protocol.value);
126
+ }
127
+ if (protocol.type === 'sub' && protocol.status === 'passive') {
128
+ passiveSubProtocols.push(protocol.value);
129
+ }
130
+ }
131
+ return {
132
+ activeProtocols,
133
+ passiveProtocols,
134
+ activeSubProtocols,
135
+ passiveSubProtocols
136
+ };
137
+ }
138
+ async getProtocolKey(protocolOrIdentifier, networkOrTypeOrUndefined) {
139
+ const protocolIdentifier = typeof protocolOrIdentifier === 'string' ? protocolOrIdentifier : (await protocolOrIdentifier.getMetadata()).identifier;
140
+ const type = typeof networkOrTypeOrUndefined === 'string' ? networkOrTypeOrUndefined : undefined;
141
+ const network = isOnlineProtocol(protocolOrIdentifier) && (type === 'online' || type === 'full')
142
+ ? await protocolOrIdentifier.getNetwork()
143
+ : typeof networkOrTypeOrUndefined === 'object'
144
+ ? networkOrTypeOrUndefined
145
+ : undefined;
146
+ if (!network) {
147
+ return protocolIdentifier;
148
+ }
149
+ return `${protocolIdentifier}_${protocolNetworkIdentifier(network)}`;
150
+ }
151
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseModulesService, deps: [{ token: i1.ModulesController }, { token: i2.ProtocolService }], target: i0.ɵɵFactoryTarget.Injectable }); }
152
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseModulesService }); }
153
+ }
154
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseModulesService, decorators: [{
155
+ type: Injectable
156
+ }], ctorParameters: () => [{ type: i1.ModulesController }, { type: i2.ProtocolService }] });
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tb2R1bGVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL21vZHVsZXMvYmFzZS1tb2R1bGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUlMLGdCQUFnQixFQUNoQixhQUFhLEVBR2IseUJBQXlCLEVBRTFCLE1BQU0sMEJBQTBCLENBQUE7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBd0IsTUFBTSwwQkFBMEIsQ0FBQTtBQUM3RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFDTCwwQkFBMEIsRUFDMUIsNkJBQTZCLEVBRzdCLDJCQUEyQixFQUM1QixNQUFNLDRDQUE0QyxDQUFBO0FBRW5ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTs7OztBQTZCN0MsTUFBTSxPQUFnQixrQkFBa0I7SUFDdEMsSUFBWSxhQUFhO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQTtJQUM3QyxDQUFDO0lBRUQsWUFBK0IsaUJBQW9DLEVBQXFCLGVBQWdDO1FBQXpGLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFBcUIsb0JBQWUsR0FBZixlQUFlLENBQWlCO0lBQUcsQ0FBQztJQUVySCxJQUFJLENBQUMsa0JBQWtDLEVBQUU7UUFDOUMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsc0NBQXNDO1lBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0NBQXNDLENBQUMsQ0FBQTtZQUVuRCxPQUFNO1FBQ1IsQ0FBQztRQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUE7SUFDOUMsQ0FBQztJQUVNLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBb0MsRUFBRSxTQUFtQixFQUFFO1FBQ3BGLE1BQU0sT0FBTyxHQUFtQixNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ3RGLE1BQU0sZ0JBQWdCLEdBQXNCLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFFcEYsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUN2RCxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxlQUE4QyxFQUFFLFNBQWlCLEVBQUU7UUFDOUYsTUFBTSxPQUFPLEdBQW1CLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUVwRyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQ2hFLENBQUM7SUFFTSxLQUFLLENBQUMsa0JBQWtCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixFQUFFLENBQUE7SUFDcEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFZLEVBQUUsSUFBWTtRQUN4RCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDOUQsQ0FBQztJQUVNLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBdUM7UUFDaEUsTUFBTSxZQUFZLEdBQWlCLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUN2RixNQUFNLGdCQUFnQixHQUFzQixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFBO1FBQ3JGLE1BQU0sU0FBUyxHQUFjLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBRTNFLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUE7UUFDNUUsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtJQUNqSCxDQUFDO0lBRU0sS0FBSyxDQUFDLHNCQUFzQixDQUFDLFdBQXFCO1FBQ3ZELE1BQU0sa0JBQWtCLEdBQWEsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDckcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxrQkFBdUMsQ0FBQyxDQUFBO0lBQ3JGLENBQUM7SUFFTSxLQUFLLENBQUMseUJBQXlCO1FBQ3BDLE1BQU0sa0JBQWtCLEdBQWEsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMseUJBQXlCLEVBQUUsQ0FBQTtRQUM3RixNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLGtCQUF1QyxDQUFDLENBQUE7SUFDckYsQ0FBQztJQUVPLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBdUIsRUFBRSxJQUFvQztRQUN4RixNQUFNLGdCQUFnQixHQUF3QixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQzdELE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQW9CLEVBQUUsRUFBRTtZQUN6QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUE7WUFFMUQsTUFBTSxlQUFlLEdBQXlDLEVBQUUsQ0FBQTtZQUNoRSxNQUFNLGtCQUFrQixHQUFzRCxFQUFFLENBQUE7WUFFaEYsTUFBTSxnQkFBZ0IsR0FBbUMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUN4RSxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBd0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUN6SCxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQWlDLEVBQUUsRUFBRTtnQkFDM0MsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUNqQixDQUFDLEdBQW1DLEVBQUUsSUFBOEIsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQ25ILEVBQUUsQ0FDSCxDQUFBO1lBQ0gsQ0FBQyxDQUFDLENBQUE7WUFFRixLQUFLLE1BQU0sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7Z0JBQzFFLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7b0JBQzVCLE1BQU0sT0FBTyxHQUE0QixNQUFNLDZCQUE2QixDQUMxRSxRQUFRLEVBQ1IsYUFBYSxFQUNiLE1BQU0sQ0FBQyxxQkFBcUIsRUFDNUIsRUFBRSxJQUFJLEVBQUUsQ0FDVCxDQUFBO29CQUVELE1BQU0sT0FBTyxHQUFXLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FDL0MsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxFQUN2QyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksS0FBSyxNQUFNLENBQUM7d0JBQzVFLENBQUMsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFO3dCQUN2QyxDQUFDLENBQUMsU0FBUyxDQUNkLENBQUE7b0JBRUQsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUM7d0JBQ2xDLE1BQU0sV0FBVyxHQUF5QixNQUFNLDBCQUEwQixDQUN4RSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQ2xDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsRUFDdkMsTUFBTSxDQUFDLHFCQUFxQixFQUM1QixFQUFFLElBQUksRUFBRSxDQUNULENBQUE7d0JBQ0QsZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLFdBQVcsQ0FBQTtvQkFDeEMsQ0FBQztvQkFFRCxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQTtnQkFDOUQsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE1BQU0sR0FBRyxHQUFXLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUE7b0JBQzdELElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO3dCQUN2QyxTQUFRO29CQUNWLENBQUM7b0JBRUQsTUFBTSxPQUFPLEdBQXlCLE1BQU0sMEJBQTBCLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMscUJBQXFCLEVBQUU7d0JBQzVILElBQUk7cUJBQ0wsQ0FBQyxDQUFBO29CQUNGLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUE7Z0JBQ2hDLENBQUM7WUFDSCxDQUFDO1lBRUQsTUFBTSxvQkFBb0IsR0FBc0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQ2hGLENBQUMsUUFBUSxFQUF1QixFQUFFLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxFQUFFLE1BQU07Z0JBQ1osTUFBTSxFQUFFLFFBQVE7Z0JBQ2hCLEtBQUssRUFBRSxRQUFRO2FBQ2hCLENBQUMsQ0FDSCxDQUFBO1lBRUQsTUFBTSxtQkFBbUIsR0FBc0Isa0JBQWtCLENBQUMsR0FBRyxDQUNuRSxDQUFDLFFBQVEsRUFBc0IsRUFBRSxDQUFDLENBQUM7Z0JBQ2pDLElBQUksRUFBRSxLQUFLO2dCQUNYLE1BQU0sRUFBRSxRQUFRO2dCQUNoQixLQUFLLEVBQUUsUUFBUTthQUNoQixDQUFDLENBQ0gsQ0FBQTtZQUVELE9BQU8sb0JBQW9CLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUE7UUFDekQsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUVELE9BQU8sU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFDcEMsQ0FBQztJQUVPLHVCQUF1QixDQUFDLHFCQUFrRDtRQUNoRixxQkFBcUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBb0MsRUFBRSxFQUFFO1lBQzdFLFlBQVksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxrQkFBcUMsQ0FBQyxDQUFBO1lBRXJILElBQUksYUFBYSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQ3JDLFlBQVksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLGtCQUFxQyxFQUFFO29CQUM3RSxNQUFNO3dCQUNKLE9BQU8sSUFBSSwyQkFBMkIsQ0FBQyxhQUFhLENBQUMsa0JBQWtCLEVBQUUscUJBQXFCLENBQUMsQ0FBQTtvQkFDakcsQ0FBQztpQkFDRixDQUFDLENBQUE7WUFDSixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRU8sdUJBQXVCLENBQUMsU0FBNEI7UUFDMUQsTUFBTSxlQUFlLEdBQW9CLEVBQUUsQ0FBQTtRQUMzQyxNQUFNLGdCQUFnQixHQUFvQixFQUFFLENBQUE7UUFFNUMsTUFBTSxrQkFBa0IsR0FBd0MsRUFBRSxDQUFBO1FBQ2xFLE1BQU0sbUJBQW1CLEdBQXdDLEVBQUUsQ0FBQTtRQUVuRSxLQUFLLE1BQU0sUUFBUSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDN0QsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDdEMsQ0FBQztZQUVELElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDOUQsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUN2QyxDQUFDO1lBRUQsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLEtBQUssSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM1RCxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3pDLENBQUM7WUFFRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssS0FBSyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzdELG1CQUFtQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDMUMsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPO1lBQ0wsZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixrQkFBa0I7WUFDbEIsbUJBQW1CO1NBQ3BCLENBQUE7SUFDSCxDQUFDO0lBSU8sS0FBSyxDQUFDLGNBQWMsQ0FDMUIsb0JBQWdELEVBQ2hELHdCQUFzRjtRQUV0RixNQUFNLGtCQUFrQixHQUN0QixPQUFPLG9CQUFvQixLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQTtRQUV6SCxNQUFNLElBQUksR0FDUixPQUFPLHdCQUF3QixLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtRQUVyRixNQUFNLE9BQU8sR0FDWCxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLEtBQUssTUFBTSxDQUFDO1lBQzlFLENBQUMsQ0FBQyxNQUFNLG9CQUFvQixDQUFDLFVBQVUsRUFBRTtZQUN6QyxDQUFDLENBQUMsT0FBTyx3QkFBd0IsS0FBSyxRQUFRO2dCQUM5QyxDQUFDLENBQUMsd0JBQXdCO2dCQUMxQixDQUFDLENBQUMsU0FBUyxDQUFBO1FBRWYsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxrQkFBa0IsQ0FBQTtRQUMzQixDQUFDO1FBRUQsT0FBTyxHQUFHLGtCQUFrQixJQUFJLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUE7SUFDdEUsQ0FBQzsrR0FqTm1CLGtCQUFrQjttSEFBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUR2QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWlyR2FwV2FsbGV0LCBJQ29pblByb3RvY29sLCBJQ29pblN1YlByb3RvY29sLCBQcm90b2NvbFN5bWJvbHMgfSBmcm9tICdAd2FsbGZyZWUtZGV2L2NvaW5saWItY29yZSdcbmltcG9ydCB7XG4gIEFpckdhcEFueVByb3RvY29sLFxuICBBaXJHYXBNb2R1bGUsXG4gIEFpckdhcFYzU2VyaWFsaXplckNvbXBhbmlvbixcbiAgaXNPbmxpbmVQcm90b2NvbCxcbiAgaXNTdWJQcm90b2NvbCxcbiAgUHJvdG9jb2xDb25maWd1cmF0aW9uLFxuICBQcm90b2NvbE5ldHdvcmssXG4gIHByb3RvY29sTmV0d29ya0lkZW50aWZpZXIsXG4gIFYzU2NoZW1hQ29uZmlndXJhdGlvblxufSBmcm9tICdAd2FsbGZyZWUtZGV2L21vZHVsZS1raXQnXG5pbXBvcnQgeyBTZXJpYWxpemVyVjMsIFRyYW5zYWN0aW9uVmFsaWRhdG9yIH0gZnJvbSAnQHdhbGxmcmVlLWRldi9zZXJpYWxpemVyJ1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBjcmVhdGVJQ29pblByb3RvY29sQWRhcHRlcixcbiAgY3JlYXRlSUNvaW5TdWJQcm90b2NvbEFkYXB0ZXIsXG4gIElDb2luUHJvdG9jb2xBZGFwdGVyLFxuICBJQ29pblN1YlByb3RvY29sQWRhcHRlcixcbiAgVHJhbnNhY3Rpb25WYWxpZGF0b3JBZGFwdGVyXG59IGZyb20gJy4uLy4uL3Byb3RvY29sL2FkYXB0ZXIvcHJvdG9jb2wtdjAtYWRhcHRlcidcbmltcG9ydCB7IElzb2xhdGVkTW9kdWxlTWV0YWRhdGEsIElzb2xhdGVkTW9kdWxlUHJldmlld01ldGFkYXRhIH0gZnJvbSAnLi4vLi4vdHlwZXMvaXNvbGF0ZWQtbW9kdWxlcy9Jc29sYXRlZE1vZHVsZU1ldGFkYXRhJ1xuaW1wb3J0IHsgZmxhdHRlbmVkIH0gZnJvbSAnLi4vLi4vdXRpbHMvYXJyYXknXG5pbXBvcnQgeyBQcm90b2NvbFNlcnZpY2UgfSBmcm9tICcuLi9wcm90b2NvbC9wcm90b2NvbC5zZXJ2aWNlJ1xuaW1wb3J0IHsgTG9hZGVkTW9kdWxlLCBMb2FkZWRQcm90b2NvbCB9IGZyb20gJy4vY29udHJvbGxlci9iYXNlLW1vZHVsZXMuY29udHJvbGxlcidcbmltcG9ydCB7IE1vZHVsZXNDb250cm9sbGVyIH0gZnJvbSAnLi9jb250cm9sbGVyL21vZHVsZXMuY29udHJvbGxlcidcblxudHlwZSBBZGFwdGVkUHJvdG9jb2xTdGF0dXMgPSAnYWN0aXZlJyB8ICdwYXNzaXZlJ1xuXG5pbnRlcmZhY2UgQWRhcHRlZE1haW5Qcm90b2NvbCB7XG4gIHR5cGU6ICdtYWluJ1xuICBzdGF0dXM6IEFkYXB0ZWRQcm90b2NvbFN0YXR1c1xuICB2YWx1ZTogSUNvaW5Qcm90b2NvbEFkYXB0ZXJcbn1cblxuaW50ZXJmYWNlIEFkYXB0ZWRTdWJQcm90b2NvbCB7XG4gIHR5cGU6ICdzdWInXG4gIHN0YXR1czogQWRhcHRlZFByb3RvY29sU3RhdHVzXG4gIHZhbHVlOiBbSUNvaW5Qcm90b2NvbEFkYXB0ZXIsIElDb2luU3ViUHJvdG9jb2xBZGFwdGVyXVxufVxuXG50eXBlIEFkYXB0ZWRQcm90b2NvbCA9IEFkYXB0ZWRNYWluUHJvdG9jb2wgfCBBZGFwdGVkU3ViUHJvdG9jb2xcblxuaW50ZXJmYWNlIFByb3RvY29scyB7XG4gIGFjdGl2ZVByb3RvY29sczogSUNvaW5Qcm90b2NvbFtdXG4gIHBhc3NpdmVQcm90b2NvbHM6IElDb2luUHJvdG9jb2xbXVxuICBhY3RpdmVTdWJQcm90b2NvbHM6IFtJQ29pblByb3RvY29sLCBJQ29pblN1YlByb3RvY29sXVtdXG4gIHBhc3NpdmVTdWJQcm90b2NvbHM6IFtJQ29pblByb3RvY29sLCBJQ29pblN1YlByb3RvY29sXVtdXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlTW9kdWxlc1NlcnZpY2Uge1xuICBwcml2YXRlIGdldCBpc0luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZHVsZXNDb250cm9sbGVyLmlzSW5pdGlhbGl6ZWRcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBtb2R1bGVzQ29udHJvbGxlcjogTW9kdWxlc0NvbnRyb2xsZXIsIHByb3RlY3RlZCByZWFkb25seSBwcm90b2NvbFNlcnZpY2U6IFByb3RvY29sU2VydmljZSkge31cblxuICBwdWJsaWMgaW5pdChpbnRlZ3JhbE1vZHVsZXM6IEFpckdhcE1vZHVsZVtdID0gW10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0luaXRpYWxpemVkKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5sb2coJ1tNb2R1bGVzU2VydmljZV0gYWxyZWFkeSBpbml0aWFsaXplZCcpXG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMubW9kdWxlc0NvbnRyb2xsZXIuaW5pdChpbnRlZ3JhbE1vZHVsZXMpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9hZFByb3RvY29scyh0eXBlPzogUHJvdG9jb2xDb25maWd1cmF0aW9uWyd0eXBlJ10sIGlnbm9yZTogc3RyaW5nW10gPSBbXSk6IFByb21pc2U8UHJvdG9jb2xzPiB7XG4gICAgY29uc3QgbW9kdWxlczogTG9hZGVkTW9kdWxlW10gPSBhd2FpdCB0aGlzLm1vZHVsZXNDb250cm9sbGVyLmxvYWRNb2R1bGVzKHR5cGUsIGlnbm9yZSlcbiAgICBjb25zdCBhZGFwdGVkUHJvdG9jb2xzOiBBZGFwdGVkUHJvdG9jb2xbXSA9IGF3YWl0IHRoaXMuYWRhcHRQcm90b2NvbHMobW9kdWxlcywgdHlwZSlcblxuICAgIHJldHVybiB0aGlzLnByb2Nlc3NBZGFwdGVkUHJvdG9jb2xzKGFkYXB0ZWRQcm90b2NvbHMpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVyaXZlQWRkcmVzc2VzKHdhbGxldE9yV2FsbGV0czogQWlyR2FwV2FsbGV0IHwgQWlyR2FwV2FsbGV0W10sIGFtb3VudDogbnVtYmVyID0gNTApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPj4ge1xuICAgIGNvbnN0IHdhbGxldHM6IEFpckdhcFdhbGxldFtdID0gQXJyYXkuaXNBcnJheSh3YWxsZXRPcldhbGxldHMpID8gd2FsbGV0T3JXYWxsZXRzIDogW3dhbGxldE9yV2FsbGV0c11cblxuICAgIHJldHVybiB0aGlzLm1vZHVsZXNDb250cm9sbGVyLmRlcml2ZUFkZHJlc3Nlcyh3YWxsZXRzLCBhbW91bnQpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TW9kdWxlc01ldGFkYXRhKCk6IFByb21pc2U8SXNvbGF0ZWRNb2R1bGVNZXRhZGF0YVtdPiB7XG4gICAgcmV0dXJuIHRoaXMubW9kdWxlc0NvbnRyb2xsZXIuZ2V0TW9kdWxlc01ldGFkYXRhKClcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWFkTW9kdWxlTWV0YWRhdGEobmFtZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPElzb2xhdGVkTW9kdWxlUHJldmlld01ldGFkYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMubW9kdWxlc0NvbnRyb2xsZXIucmVhZE1vZHVsZU1ldGFkYXRhKG5hbWUsIHBhdGgpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaW5zdGFsbE1vZHVsZShtZXRhZGF0YTogSXNvbGF0ZWRNb2R1bGVQcmV2aWV3TWV0YWRhdGEpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBsb2FkZWRNb2R1bGU6IExvYWRlZE1vZHVsZSA9IGF3YWl0IHRoaXMubW9kdWxlc0NvbnRyb2xsZXIuaW5zdGFsbE1vZHVsZShtZXRhZGF0YSlcbiAgICBjb25zdCBhZGFwdGVkUHJvdG9jb2xzOiBBZGFwdGVkUHJvdG9jb2xbXSA9IGF3YWl0IHRoaXMuYWRhcHRQcm90b2NvbHMoW2xvYWRlZE1vZHVsZV0pXG4gICAgY29uc3QgcHJvdG9jb2xzOiBQcm90b2NvbHMgPSB0aGlzLnByb2Nlc3NBZGFwdGVkUHJvdG9jb2xzKGFkYXB0ZWRQcm90b2NvbHMpXG5cbiAgICBhd2FpdCB0aGlzLnByb3RvY29sU2VydmljZS5hZGRBY3RpdmVNYWluUHJvdG9jb2xzKHByb3RvY29scy5hY3RpdmVQcm90b2NvbHMpXG4gICAgYXdhaXQgdGhpcy5wcm90b2NvbFNlcnZpY2UuYWRkQWN0aXZlU3ViUHJvdG9jb2xzKHByb3RvY29scy5hY3RpdmVTdWJQcm90b2NvbHMubWFwKChbXywgcHJvdG9jb2xdKSA9PiBwcm90b2NvbCkpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVtb3ZlSW5zdGFsbGVkTW9kdWxlcyhpZGVudGlmaWVyczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCByZW1vdmVkSWRlbnRpZmllcnM6IHN0cmluZ1tdID0gYXdhaXQgdGhpcy5tb2R1bGVzQ29udHJvbGxlci5yZW1vdmVJbnN0YWxsZWRNb2R1bGVzKGlkZW50aWZpZXJzKVxuICAgIGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlLnJlbW92ZVByb3RvY29scyhyZW1vdmVkSWRlbnRpZmllcnMgYXMgUHJvdG9jb2xTeW1ib2xzW10pXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVtb3ZlQWxsSW5zdGFsbGVkTW9kdWxlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCByZW1vdmVkSWRlbnRpZmllcnM6IHN0cmluZ1tdID0gYXdhaXQgdGhpcy5tb2R1bGVzQ29udHJvbGxlci5yZW1vdmVBbGxJbnN0YWxsZWRNb2R1bGVzKClcbiAgICBhd2FpdCB0aGlzLnByb3RvY29sU2VydmljZS5yZW1vdmVQcm90b2NvbHMocmVtb3ZlZElkZW50aWZpZXJzIGFzIFByb3RvY29sU3ltYm9sc1tdKVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhZGFwdFByb3RvY29scyhtb2R1bGVzOiBMb2FkZWRNb2R1bGVbXSwgdHlwZT86IFByb3RvY29sQ29uZmlndXJhdGlvblsndHlwZSddKTogUHJvbWlzZTxBZGFwdGVkUHJvdG9jb2xbXT4ge1xuICAgIGNvbnN0IGFkYXB0ZWRQcm90b2NvbHM6IEFkYXB0ZWRQcm90b2NvbFtdW10gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIG1vZHVsZXMubWFwKGFzeW5jIChtb2R1bGU6IExvYWRlZE1vZHVsZSkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRTZXJpYWxpemVyQ29tcGFuaW9uKG1vZHVsZS52M1NlcmlhbGl6ZXJDb21wYW5pb24pXG5cbiAgICAgICAgY29uc3QgYWN0aXZlUHJvdG9jb2xzOiBSZWNvcmQ8c3RyaW5nLCBJQ29pblByb3RvY29sQWRhcHRlcj4gPSB7fVxuICAgICAgICBjb25zdCBhY3RpdmVTdWJQcm90b2NvbHM6IFtJQ29pblByb3RvY29sQWRhcHRlciwgSUNvaW5TdWJQcm90b2NvbEFkYXB0ZXJdW10gPSBbXVxuXG4gICAgICAgIGNvbnN0IGdyb3VwZWRQcm90b2NvbHM6IFJlY29yZDxzdHJpbmcsIExvYWRlZFByb3RvY29sPiA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgIG1vZHVsZS5wcm90b2NvbHMubWFwKGFzeW5jIChwcm90b2NvbDogTG9hZGVkUHJvdG9jb2wpID0+IFthd2FpdCB0aGlzLmdldFByb3RvY29sS2V5KHByb3RvY29sLnByb3RvY29sLCB0eXBlKSwgcHJvdG9jb2xdKVxuICAgICAgICApLnRoZW4oKHBhaXJzOiBbc3RyaW5nLCBMb2FkZWRQcm90b2NvbF1bXSkgPT4ge1xuICAgICAgICAgIHJldHVybiBwYWlycy5yZWR1Y2UoXG4gICAgICAgICAgICAob2JqOiBSZWNvcmQ8c3RyaW5nLCBMb2FkZWRQcm90b2NvbD4sIG5leHQ6IFtzdHJpbmcsIExvYWRlZFByb3RvY29sXSkgPT4gT2JqZWN0LmFzc2lnbihvYmosIHsgW25leHRbMF1dOiBuZXh0WzFdIH0pLFxuICAgICAgICAgICAge31cbiAgICAgICAgICApXG4gICAgICAgIH0pXG5cbiAgICAgICAgZm9yIChjb25zdCB7IHByb3RvY29sLCBibG9ja0V4cGxvcmVyIH0gb2YgT2JqZWN0LnZhbHVlcyhncm91cGVkUHJvdG9jb2xzKSkge1xuICAgICAgICAgIGlmIChpc1N1YlByb3RvY29sKHByb3RvY29sKSkge1xuICAgICAgICAgICAgY29uc3QgYWRhcHRlcjogSUNvaW5TdWJQcm90b2NvbEFkYXB0ZXIgPSBhd2FpdCBjcmVhdGVJQ29pblN1YlByb3RvY29sQWRhcHRlcihcbiAgICAgICAgICAgICAgcHJvdG9jb2wsXG4gICAgICAgICAgICAgIGJsb2NrRXhwbG9yZXIsXG4gICAgICAgICAgICAgIG1vZHVsZS52M1NlcmlhbGl6ZXJDb21wYW5pb24sXG4gICAgICAgICAgICAgIHsgdHlwZSB9XG4gICAgICAgICAgICApXG5cbiAgICAgICAgICAgIGNvbnN0IG1haW5LZXk6IHN0cmluZyA9IGF3YWl0IHRoaXMuZ2V0UHJvdG9jb2xLZXkoXG4gICAgICAgICAgICAgIGF3YWl0IGFkYXB0ZXIucHJvdG9jb2xWMS5tYWluUHJvdG9jb2woKSxcbiAgICAgICAgICAgICAgaXNPbmxpbmVQcm90b2NvbChhZGFwdGVyLnByb3RvY29sVjEpICYmICh0eXBlID09PSAnb25saW5lJyB8fCB0eXBlID09PSAnZnVsbCcpXG4gICAgICAgICAgICAgICAgPyBhd2FpdCBhZGFwdGVyLnByb3RvY29sVjEuZ2V0TmV0d29yaygpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgaWYgKCEobWFpbktleSBpbiBhY3RpdmVQcm90b2NvbHMpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG1haW5BZGFwdGVyOiBJQ29pblByb3RvY29sQWRhcHRlciA9IGF3YWl0IGNyZWF0ZUlDb2luUHJvdG9jb2xBZGFwdGVyKFxuICAgICAgICAgICAgICAgIGdyb3VwZWRQcm90b2NvbHNbbWFpbktleV0ucHJvdG9jb2wsXG4gICAgICAgICAgICAgICAgZ3JvdXBlZFByb3RvY29sc1ttYWluS2V5XS5ibG9ja0V4cGxvcmVyLFxuICAgICAgICAgICAgICAgIG1vZHVsZS52M1NlcmlhbGl6ZXJDb21wYW5pb24sXG4gICAgICAgICAgICAgICAgeyB0eXBlIH1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBhY3RpdmVQcm90b2NvbHNbbWFpbktleV0gPSBtYWluQWRhcHRlclxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhY3RpdmVTdWJQcm90b2NvbHMucHVzaChbYWN0aXZlUHJvdG9jb2xzW21haW5LZXldLCBhZGFwdGVyXSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qga2V5OiBzdHJpbmcgPSBhd2FpdCB0aGlzLmdldFByb3RvY29sS2V5KHByb3RvY29sLCB0eXBlKVxuICAgICAgICAgICAgaWYgKGFjdGl2ZVByb3RvY29sc1trZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgYWRhcHRlcjogSUNvaW5Qcm90b2NvbEFkYXB0ZXIgPSBhd2FpdCBjcmVhdGVJQ29pblByb3RvY29sQWRhcHRlcihwcm90b2NvbCwgYmxvY2tFeHBsb3JlciwgbW9kdWxlLnYzU2VyaWFsaXplckNvbXBhbmlvbiwge1xuICAgICAgICAgICAgICB0eXBlXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgYWN0aXZlUHJvdG9jb2xzW2tleV0gPSBhZGFwdGVyXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWRhcHRlZE1haW5Qcm90b2NvbHM6IEFkYXB0ZWRQcm90b2NvbFtdID0gT2JqZWN0LnZhbHVlcyhhY3RpdmVQcm90b2NvbHMpLm1hcChcbiAgICAgICAgICAocHJvdG9jb2wpOiBBZGFwdGVkTWFpblByb3RvY29sID0+ICh7XG4gICAgICAgICAgICB0eXBlOiAnbWFpbicsXG4gICAgICAgICAgICBzdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgICAgICAgdmFsdWU6IHByb3RvY29sXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuXG4gICAgICAgIGNvbnN0IGFkYXB0ZWRTdWJQcm90b2NvbHM6IEFkYXB0ZWRQcm90b2NvbFtdID0gYWN0aXZlU3ViUHJvdG9jb2xzLm1hcChcbiAgICAgICAgICAocHJvdG9jb2wpOiBBZGFwdGVkU3ViUHJvdG9jb2wgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6ICdzdWInLFxuICAgICAgICAgICAgc3RhdHVzOiAnYWN0aXZlJyxcbiAgICAgICAgICAgIHZhbHVlOiBwcm90b2NvbFxuICAgICAgICAgIH0pXG4gICAgICAgIClcblxuICAgICAgICByZXR1cm4gYWRhcHRlZE1haW5Qcm90b2NvbHMuY29uY2F0KGFkYXB0ZWRTdWJQcm90b2NvbHMpXG4gICAgICB9KVxuICAgIClcblxuICAgIHJldHVybiBmbGF0dGVuZWQoYWRhcHRlZFByb3RvY29scylcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFNlcmlhbGl6ZXJDb21wYW5pb24odjNTZXJpYWxpemVyQ29tcGFuaW9uOiBBaXJHYXBWM1NlcmlhbGl6ZXJDb21wYW5pb24pIHtcbiAgICB2M1NlcmlhbGl6ZXJDb21wYW5pb24uc2NoZW1hcy5mb3JFYWNoKChjb25maWd1cmF0aW9uOiBWM1NjaGVtYUNvbmZpZ3VyYXRpb24pID0+IHtcbiAgICAgIFNlcmlhbGl6ZXJWMy5hZGRTY2hlbWEoY29uZmlndXJhdGlvbi50eXBlLCBjb25maWd1cmF0aW9uLnNjaGVtYSwgY29uZmlndXJhdGlvbi5wcm90b2NvbElkZW50aWZpZXIgYXMgUHJvdG9jb2xTeW1ib2xzKVxuXG4gICAgICBpZiAoY29uZmlndXJhdGlvbi5wcm90b2NvbElkZW50aWZpZXIpIHtcbiAgICAgICAgU2VyaWFsaXplclYzLmFkZFZhbGlkYXRvcihjb25maWd1cmF0aW9uLnByb3RvY29sSWRlbnRpZmllciBhcyBQcm90b2NvbFN5bWJvbHMsIHtcbiAgICAgICAgICBjcmVhdGUoKTogVHJhbnNhY3Rpb25WYWxpZGF0b3Ige1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvblZhbGlkYXRvckFkYXB0ZXIoY29uZmlndXJhdGlvbi5wcm90b2NvbElkZW50aWZpZXIsIHYzU2VyaWFsaXplckNvbXBhbmlvbilcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0FkYXB0ZWRQcm90b2NvbHMocHJvdG9jb2xzOiBBZGFwdGVkUHJvdG9jb2xbXSk6IFByb3RvY29scyB7XG4gICAgY29uc3QgYWN0aXZlUHJvdG9jb2xzOiBJQ29pblByb3RvY29sW10gPSBbXVxuICAgIGNvbnN0IHBhc3NpdmVQcm90b2NvbHM6IElDb2luUHJvdG9jb2xbXSA9IFtdXG5cbiAgICBjb25zdCBhY3RpdmVTdWJQcm90b2NvbHM6IFtJQ29pblByb3RvY29sLCBJQ29pblN1YlByb3RvY29sXVtdID0gW11cbiAgICBjb25zdCBwYXNzaXZlU3ViUHJvdG9jb2xzOiBbSUNvaW5Qcm90b2NvbCwgSUNvaW5TdWJQcm90b2NvbF1bXSA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IHByb3RvY29sIG9mIHByb3RvY29scykge1xuICAgICAgaWYgKHByb3RvY29sLnR5cGUgPT09ICdtYWluJyAmJiBwcm90b2NvbC5zdGF0dXMgPT09ICdhY3RpdmUnKSB7XG4gICAgICAgIGFjdGl2ZVByb3RvY29scy5wdXNoKHByb3RvY29sLnZhbHVlKVxuICAgICAgfVxuXG4gICAgICBpZiAocHJvdG9jb2wudHlwZSA9PT0gJ21haW4nICYmIHByb3RvY29sLnN0YXR1cyA9PT0gJ3Bhc3NpdmUnKSB7XG4gICAgICAgIHBhc3NpdmVQcm90b2NvbHMucHVzaChwcm90b2NvbC52YWx1ZSlcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3RvY29sLnR5cGUgPT09ICdzdWInICYmIHByb3RvY29sLnN0YXR1cyA9PT0gJ2FjdGl2ZScpIHtcbiAgICAgICAgYWN0aXZlU3ViUHJvdG9jb2xzLnB1c2gocHJvdG9jb2wudmFsdWUpXG4gICAgICB9XG5cbiAgICAgIGlmIChwcm90b2NvbC50eXBlID09PSAnc3ViJyAmJiBwcm90b2NvbC5zdGF0dXMgPT09ICdwYXNzaXZlJykge1xuICAgICAgICBwYXNzaXZlU3ViUHJvdG9jb2xzLnB1c2gocHJvdG9jb2wudmFsdWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGl2ZVByb3RvY29scyxcbiAgICAgIHBhc3NpdmVQcm90b2NvbHMsXG4gICAgICBhY3RpdmVTdWJQcm90b2NvbHMsXG4gICAgICBwYXNzaXZlU3ViUHJvdG9jb2xzXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRQcm90b2NvbEtleShwcm90b2NvbDogQWlyR2FwQW55UHJvdG9jb2wsIHR5cGU/OiBQcm90b2NvbENvbmZpZ3VyYXRpb25bJ3R5cGUnXSk6IFByb21pc2U8c3RyaW5nPlxuICBwcml2YXRlIGFzeW5jIGdldFByb3RvY29sS2V5KHByb3RvY29sSWRlbnRpZmllcjogc3RyaW5nLCBuZXR3b3JrOiBQcm90b2NvbE5ldHdvcmsgfCB1bmRlZmluZWQpOiBQcm9taXNlPHN0cmluZz5cbiAgcHJpdmF0ZSBhc3luYyBnZXRQcm90b2NvbEtleShcbiAgICBwcm90b2NvbE9ySWRlbnRpZmllcjogQWlyR2FwQW55UHJvdG9jb2wgfCBzdHJpbmcsXG4gICAgbmV0d29ya09yVHlwZU9yVW5kZWZpbmVkPzogUHJvdG9jb2xOZXR3b3JrIHwgUHJvdG9jb2xDb25maWd1cmF0aW9uWyd0eXBlJ10gfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBwcm90b2NvbElkZW50aWZpZXI6IHN0cmluZyA9XG4gICAgICB0eXBlb2YgcHJvdG9jb2xPcklkZW50aWZpZXIgPT09ICdzdHJpbmcnID8gcHJvdG9jb2xPcklkZW50aWZpZXIgOiAoYXdhaXQgcHJvdG9jb2xPcklkZW50aWZpZXIuZ2V0TWV0YWRhdGEoKSkuaWRlbnRpZmllclxuXG4gICAgY29uc3QgdHlwZTogUHJvdG9jb2xDb25maWd1cmF0aW9uWyd0eXBlJ10gfCB1bmRlZmluZWQgPVxuICAgICAgdHlwZW9mIG5ldHdvcmtPclR5cGVPclVuZGVmaW5lZCA9PT0gJ3N0cmluZycgPyBuZXR3b3JrT3JUeXBlT3JVbmRlZmluZWQgOiB1bmRlZmluZWRcblxuICAgIGNvbnN0IG5ldHdvcms6IFByb3RvY29sTmV0d29yayB8IHVuZGVmaW5lZCA9XG4gICAgICBpc09ubGluZVByb3RvY29sKHByb3RvY29sT3JJZGVudGlmaWVyKSAmJiAodHlwZSA9PT0gJ29ubGluZScgfHwgdHlwZSA9PT0gJ2Z1bGwnKVxuICAgICAgICA/IGF3YWl0IHByb3RvY29sT3JJZGVudGlmaWVyLmdldE5ldHdvcmsoKVxuICAgICAgICA6IHR5cGVvZiBuZXR3b3JrT3JUeXBlT3JVbmRlZmluZWQgPT09ICdvYmplY3QnXG4gICAgICAgID8gbmV0d29ya09yVHlwZU9yVW5kZWZpbmVkXG4gICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICBpZiAoIW5ldHdvcmspIHtcbiAgICAgIHJldHVybiBwcm90b2NvbElkZW50aWZpZXJcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7cHJvdG9jb2xJZGVudGlmaWVyfV8ke3Byb3RvY29sTmV0d29ya0lkZW50aWZpZXIobmV0d29yayl9YFxuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tb2R1bGVzLmNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL21vZHVsZXMvY29udHJvbGxlci9iYXNlLW1vZHVsZXMuY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWlyR2FwV2FsbGV0IH0gZnJvbSAnQHdhbGxmcmVlLWRldi9jb2lubGliLWNvcmUnXG5pbXBvcnQge1xuICBBaXJHYXBBbnlQcm90b2NvbCxcbiAgQWlyR2FwQmxvY2tFeHBsb3JlcixcbiAgQWlyR2FwVjNTZXJpYWxpemVyQ29tcGFuaW9uLFxuICBQcm90b2NvbENvbmZpZ3VyYXRpb24sXG4gIFByb3RvY29sTmV0d29ya1xufSBmcm9tICdAd2FsbGZyZWUtZGV2L21vZHVsZS1raXQnXG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGVkTW9kdWxlIHtcbiAgcHJvdG9jb2xzOiBMb2FkZWRQcm90b2NvbFtdXG4gIHYzU2VyaWFsaXplckNvbXBhbmlvbjogQWlyR2FwVjNTZXJpYWxpemVyQ29tcGFuaW9uXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGVkUHJvdG9jb2wge1xuICBpZGVudGlmaWVyOiBzdHJpbmdcbiAgcHJvdG9jb2w6IEFpckdhcEFueVByb3RvY29sXG4gIGJsb2NrRXhwbG9yZXI/OiBBaXJHYXBCbG9ja0V4cGxvcmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZU1vZHVsZXNDb250cm9sbGVyIHtcbiAgbG9hZE1vZHVsZXMocHJvdG9jb2xUeXBlPzogUHJvdG9jb2xDb25maWd1cmF0aW9uWyd0eXBlJ10sIGlnbm9yZVByb3RvY29scz86IHN0cmluZ1tdKTogUHJvbWlzZTxMb2FkZWRNb2R1bGVbXT5cbiAgaXNQcm90b2NvbFN1cHBvcnRlZChpZGVudGlmaWVyOiBzdHJpbmcpOiBib29sZWFuXG5cbiAgZ2V0UHJvdG9jb2xOZXR3b3JrKHByb3RvY29sSWRlbnRpZmllcjogc3RyaW5nLCBuZXR3b3JrSWQ/OiBzdHJpbmcpOiBQcm9taXNlPFByb3RvY29sTmV0d29yayB8IHVuZGVmaW5lZD5cbiAgZ2V0UHJvdG9jb2xCbG9ja0V4cGxvcmVyKHByb3RvY29sSWRlbnRpZmllcjogc3RyaW5nLCBuZXR3b3JrOiBzdHJpbmcgfCBQcm90b2NvbE5ldHdvcmspOiBQcm9taXNlPEFpckdhcEJsb2NrRXhwbG9yZXIgfCB1bmRlZmluZWQ+XG5cbiAgZGVyaXZlQWRkcmVzc2VzKHdhbGxldHM6IEFpckdhcFdhbGxldFtdLCBhbW91bnQ/OiBudW1iZXIpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPj5cbn1cbiJdfQ==
@@ -0,0 +1,91 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { flattened } from '../../../../utils/array';
3
+ import { getOfflineProtocolConfiguration, getOnlineProtocolConfiguration } from '../../../../utils/modules/load-protocol';
4
+ import { deriveAddressesAsync } from '../../../../utils/worker';
5
+ import * as i0 from "@angular/core";
6
+ export class IntegralModulesController {
7
+ constructor() {
8
+ this.isInitialized = false;
9
+ this.modules = [];
10
+ this.supportedProtocols = new Set();
11
+ }
12
+ init(modules) {
13
+ this.isInitialized = true;
14
+ this.modules = modules;
15
+ }
16
+ async loadModules(protocolType, ignoreProtocols = []) {
17
+ return Promise.all(this.modules.map((module) => this.loadModule(module, protocolType, new Set(ignoreProtocols))));
18
+ }
19
+ async loadModule(module, protocolType, ignoreProtocols) {
20
+ const v3SerializerCompanion = await module.createV3SerializerCompanion();
21
+ const protocols = flattened(await Promise.all(Object.entries(module.supportedProtocols)
22
+ .filter(([identifier, _]) => !ignoreProtocols.has(identifier))
23
+ .map(([identifier, configuration]) => this.loadModuleProtocols(module, identifier, configuration, protocolType))));
24
+ protocols.forEach((protocol) => {
25
+ this.supportedProtocols.add(protocol.identifier);
26
+ });
27
+ return { protocols, v3SerializerCompanion };
28
+ }
29
+ async loadModuleProtocols(module, identifier, configuration, protocolType) {
30
+ const offlineConfiguration = getOfflineProtocolConfiguration(configuration, protocolType);
31
+ const onlineConfiguration = getOnlineProtocolConfiguration(configuration, protocolType);
32
+ const [offlineProtocols, onlineProtocols] = await Promise.all([
33
+ offlineConfiguration ? this.loadOfflineProtocols(module, identifier, offlineConfiguration) : Promise.resolve([]),
34
+ onlineConfiguration ? this.loadOnlineProtocols(module, identifier, onlineConfiguration) : Promise.resolve([])
35
+ ]);
36
+ return offlineProtocols.concat(onlineProtocols);
37
+ }
38
+ async loadOfflineProtocols(module, identifier, _configuration) {
39
+ const protocol = await module.createOfflineProtocol(identifier);
40
+ if (protocol === undefined) {
41
+ return [];
42
+ }
43
+ return [{ identifier, protocol }];
44
+ }
45
+ async loadOnlineProtocols(module, identifier, configuration) {
46
+ const protocols = await Promise.all(Object.entries(configuration.networks).map(async ([networkId, _]) => {
47
+ const [protocol, blockExplorer] = await Promise.all([
48
+ module.createOnlineProtocol(identifier, networkId),
49
+ module.createBlockExplorer(identifier, networkId)
50
+ ]);
51
+ if (protocol === undefined) {
52
+ return undefined;
53
+ }
54
+ return { identifier, protocol, blockExplorer };
55
+ }));
56
+ return protocols.filter((protocol) => protocol !== undefined);
57
+ }
58
+ isProtocolSupported(identifier) {
59
+ return this.supportedProtocols.has(identifier);
60
+ }
61
+ async getProtocolNetwork(protocolIdentifier, networkId) {
62
+ const targetModule = this.modules.find((module) => module.supportedProtocols[protocolIdentifier] !== undefined);
63
+ if (targetModule === undefined) {
64
+ return undefined;
65
+ }
66
+ const onlineProtocol = await targetModule.createOnlineProtocol(protocolIdentifier, networkId);
67
+ if (onlineProtocol === undefined) {
68
+ return undefined;
69
+ }
70
+ return onlineProtocol.getNetwork();
71
+ }
72
+ async getProtocolBlockExplorer(protocolIdentifier, network) {
73
+ const targetModule = this.modules.find((module) => module.supportedProtocols[protocolIdentifier] !== undefined);
74
+ if (targetModule === undefined) {
75
+ return undefined;
76
+ }
77
+ return targetModule.createBlockExplorer(protocolIdentifier, network);
78
+ }
79
+ async deriveAddresses(wallets, amount) {
80
+ return deriveAddressesAsync(wallets, amount);
81
+ }
82
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IntegralModulesController, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
83
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IntegralModulesController, providedIn: 'root' }); }
84
+ }
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IntegralModulesController, decorators: [{
86
+ type: Injectable,
87
+ args: [{
88
+ providedIn: 'root'
89
+ }]
90
+ }] });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYWwtbW9kdWxlcy5jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9tb2R1bGVzL2NvbnRyb2xsZXIvaW50ZWdyYWwvaW50ZWdyYWwtbW9kdWxlcy5jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ25ELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBQ3pILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBOztBQU0vRCxNQUFNLE9BQU8seUJBQXlCO0lBSHRDO1FBSVMsa0JBQWEsR0FBWSxLQUFLLENBQUE7UUFFN0IsWUFBTyxHQUFtQixFQUFFLENBQUE7UUFFbkIsdUJBQWtCLEdBQWdCLElBQUksR0FBRyxFQUFFLENBQUE7S0EySDdEO0lBekhRLElBQUksQ0FBQyxPQUF1QjtRQUNqQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTtRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtJQUN4QixDQUFDO0lBRU0sS0FBSyxDQUFDLFdBQVcsQ0FBQyxZQUE0QyxFQUFFLGtCQUE0QixFQUFFO1FBQ25HLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQW9CLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqSSxDQUFDO0lBRU8sS0FBSyxDQUFDLFVBQVUsQ0FDdEIsTUFBb0IsRUFDcEIsWUFBdUQsRUFD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LEVBQUUsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLENBQUMsS0FBSyxTQUFTLENBQ3RGLENBQUE7UUFDRCxJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMvQixPQUFPLFNBQVMsQ0FBQTtRQUNsQixDQUFDO1FBRUQsT0FBTyxZQUFZLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDdEUsQ0FBQztJQUVNLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBdUIsRUFBRSxNQUFlO1FBQ25FLE9BQU8sb0JBQW9CLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQzlDLENBQUM7K0dBL0hVLHlCQUF5QjttSEFBekIseUJBQXlCLGNBRnhCLE1BQU07OzRGQUVQLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBaXJHYXBXYWxsZXQgfSBmcm9tICdAd2FsbGZyZWUtZGV2L2NvaW5saWItY29yZSdcbmltcG9ydCB7XG4gIEFpckdhcEJsb2NrRXhwbG9yZXIsXG4gIEFpckdhcE1vZHVsZSxcbiAgQWlyR2FwT2ZmbGluZVByb3RvY29sLFxuICBBaXJHYXBPbmxpbmVQcm90b2NvbCxcbiAgQWlyR2FwVjNTZXJpYWxpemVyQ29tcGFuaW9uLFxuICBPZmZsaW5lUHJvdG9jb2xDb25maWd1cmF0aW9uLFxuICBPbmxpbmVQcm90b2NvbENvbmZpZ3VyYXRpb24sXG4gIFByb3RvY29sQ29uZmlndXJhdGlvbixcbiAgUHJvdG9jb2xOZXR3b3JrXG59IGZyb20gJ0B3YWxsZnJlZS1kZXYvbW9kdWxlLWtpdCdcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgZmxhdHRlbmVkIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvYXJyYXknXG5pbXBvcnQgeyBnZXRPZmZsaW5lUHJvdG9jb2xDb25maWd1cmF0aW9uLCBnZXRPbmxpbmVQcm90b2NvbENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9tb2R1bGVzL2xvYWQtcHJvdG9jb2wnXG5pbXBvcnQgeyBkZXJpdmVBZGRyZXNzZXNBc3luYyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL3dvcmtlcidcbmltcG9ydCB7IEJhc2VNb2R1bGVzQ29udHJvbGxlciwgTG9hZGVkTW9kdWxlLCBMb2FkZWRQcm90b2NvbCB9IGZyb20gJy4uL2Jhc2UtbW9kdWxlcy5jb250cm9sbGVyJ1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBJbnRlZ3JhbE1vZHVsZXNDb250cm9sbGVyIGltcGxlbWVudHMgQmFzZU1vZHVsZXNDb250cm9sbGVyIHtcbiAgcHVibGljIGlzSW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIHByaXZhdGUgbW9kdWxlczogQWlyR2FwTW9kdWxlW10gPSBbXVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3VwcG9ydGVkUHJvdG9jb2xzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKVxuXG4gIHB1YmxpYyBpbml0KG1vZHVsZXM6IEFpckdhcE1vZHVsZVtdKTogdm9pZCB7XG4gICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZVxuICAgIHRoaXMubW9kdWxlcyA9IG1vZHVsZXNcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2FkTW9kdWxlcyhwcm90b2NvbFR5cGU/OiBQcm90b2NvbENvbmZpZ3VyYXRpb25bJ3R5cGUnXSwgaWdub3JlUHJvdG9jb2xzOiBzdHJpbmdbXSA9IFtdKTogUHJvbWlzZTxMb2FkZWRNb2R1bGVbXT4ge1xuICAgIHJldHVybiBQcm9taXNlLmFsbCh0aGlzLm1vZHVsZXMubWFwKChtb2R1bGU6IEFpckdhcE1vZHVsZSkgPT4gdGhpcy5sb2FkTW9kdWxlKG1vZHVsZSwgcHJvdG9jb2xUeXBlLCBuZXcgU2V0KGlnbm9yZVByb3RvY29scykpKSlcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZE1vZHVsZShcbiAgICBtb2R1bGU6IEFpckdhcE1vZHVsZSxcbiAgICBwcm90b2NvbFR5cGU6IFByb3RvY29sQ29uZmlndXJhdGlvblsndHlwZSddIHwgdW5kZWZpbmVkLFxuICAgIGlnbm9yZVByb3RvY29sczogU2V0PHN0cmluZz5cbiAgKTogUHJvbWlzZTxMb2FkZWRNb2R1bGU+IHtcbiAgICBjb25zdCB2M1NlcmlhbGl6ZXJDb21wYW5pb246IEFpckdhcFYzU2VyaWFsaXplckNvbXBhbmlvbiA9IGF3YWl0IG1vZHVsZS5jcmVhdGVWM1NlcmlhbGl6ZXJDb21wYW5pb24oKVxuICAgIGNvbnN0IHByb3RvY29sczogTG9hZGVkUHJvdG9jb2xbXSA9IGZsYXR0ZW5lZChcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBPYmplY3QuZW50cmllcyhtb2R1bGUuc3VwcG9ydGVkUHJvdG9jb2xzKVxuICAgICAgICAgIC5maWx0ZXIoKFtpZGVudGlmaWVyLCBfXSkgPT4gIWlnbm9yZVByb3RvY29scy5oYXMoaWRlbnRpZmllcikpXG4gICAgICAgICAgLm1hcCgoW2lkZW50aWZpZXIsIGNvbmZpZ3VyYXRpb25dOiBbc3RyaW5nLCBQcm90b2NvbENvbmZpZ3VyYXRpb25dKSA9PlxuICAgICAgICAgICAgdGhpcy5sb2FkTW9kdWxlUHJvdG9jb2xzKG1vZHVsZSwgaWRlbnRpZmllciwgY29uZmlndXJhdGlvbiwgcHJvdG9jb2xUeXBlKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG5cbiAgICBwcm90b2NvbHMuZm9yRWFjaCgocHJvdG9jb2w6IExvYWRlZFByb3RvY29sKSA9PiB7XG4gICAgICB0aGlzLnN1cHBvcnRlZFByb3RvY29scy5hZGQocHJvdG9jb2wuaWRlbnRpZmllcilcbiAgICB9KVxuXG4gICAgcmV0dXJuIHsgcHJvdG9jb2xzLCB2M1NlcmlhbGl6ZXJDb21wYW5pb24gfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkTW9kdWxlUHJvdG9jb2xzKFxuICAgIG1vZHVsZTogQWlyR2FwTW9kdWxlLFxuICAgIGlkZW50aWZpZXI6IHN0cmluZyxcbiAgICBjb25maWd1cmF0aW9uOiBQcm90b2NvbENvbmZpZ3VyYXRpb24sXG4gICAgcHJvdG9jb2xUeXBlPzogUHJvdG9jb2xDb25maWd1cmF0aW9uWyd0eXBlJ11cbiAgKTogUHJvbWlzZTxMb2FkZWRQcm90b2NvbFtdPiB7XG4gICAgY29uc3Qgb2ZmbGluZUNvbmZpZ3VyYXRpb246IE9mZmxpbmVQcm90b2NvbENvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQgPSBnZXRPZmZsaW5lUHJvdG9jb2xDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIHByb3RvY29sVHlwZSlcbiAgICBjb25zdCBvbmxpbmVDb25maWd1cmF0aW9uOiBPbmxpbmVQcm90b2NvbENvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQgPSBnZXRPbmxpbmVQcm90b2NvbENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgcHJvdG9jb2xUeXBlKVxuXG4gICAgY29uc3QgW29mZmxpbmVQcm90b2NvbHMsIG9ubGluZVByb3RvY29sc106IFtMb2FkZWRQcm90b2NvbFtdLCBMb2FkZWRQcm90b2NvbFtdXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIG9mZmxpbmVDb25maWd1cmF0aW9uID8gdGhpcy5sb2FkT2ZmbGluZVByb3RvY29scyhtb2R1bGUsIGlkZW50aWZpZXIsIG9mZmxpbmVDb25maWd1cmF0aW9uKSA6IFByb21pc2UucmVzb2x2ZShbXSksXG4gICAgICBvbmxpbmVDb25maWd1cmF0aW9uID8gdGhpcy5sb2FkT25saW5lUHJvdG9jb2xzKG1vZHVsZSwgaWRlbnRpZmllciwgb25saW5lQ29uZmlndXJhdGlvbikgOiBQcm9taXNlLnJlc29sdmUoW10pXG4gICAgXSlcblxuICAgIHJldHVybiBvZmZsaW5lUHJvdG9jb2xzLmNvbmNhdChvbmxpbmVQcm90b2NvbHMpXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRPZmZsaW5lUHJvdG9jb2xzKFxuICAgIG1vZHVsZTogQWlyR2FwTW9kdWxlLFxuICAgIGlkZW50aWZpZXI6IHN0cmluZyxcbiAgICBfY29uZmlndXJhdGlvbjogT2ZmbGluZVByb3RvY29sQ29uZmlndXJhdGlvblxuICApOiBQcm9taXNlPExvYWRlZFByb3RvY29sW10+IHtcbiAgICBjb25zdCBwcm90b2NvbDogQWlyR2FwT2ZmbGluZVByb3RvY29sIHwgdW5kZWZpbmVkID0gYXdhaXQgbW9kdWxlLmNyZWF0ZU9mZmxpbmVQcm90b2NvbChpZGVudGlmaWVyKVxuICAgIGlmIChwcm90b2NvbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9XG5cbiAgICByZXR1cm4gW3sgaWRlbnRpZmllciwgcHJvdG9jb2wgfV1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZE9ubGluZVByb3RvY29scyhcbiAgICBtb2R1bGU6IEFpckdhcE1vZHVsZSxcbiAgICBpZGVudGlmaWVyOiBzdHJpbmcsXG4gICAgY29uZmlndXJhdGlvbjogT25saW5lUHJvdG9jb2xDb25maWd1cmF0aW9uXG4gICk6IFByb21pc2U8TG9hZGVkUHJvdG9jb2xbXT4ge1xuICAgIGNvbnN0IHByb3RvY29sczogKExvYWRlZFByb3RvY29sIHwgdW5kZWZpbmVkKVtdID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBPYmplY3QuZW50cmllcyhjb25maWd1cmF0aW9uLm5ldHdvcmtzKS5tYXAoYXN5bmMgKFtuZXR3b3JrSWQsIF9dOiBbc3RyaW5nLCBQcm90b2NvbE5ldHdvcmtdKSA9PiB7XG4gICAgICAgIGNvbnN0IFtwcm90b2NvbCwgYmxvY2tFeHBsb3Jlcl06IFtBaXJHYXBPbmxpbmVQcm90b2NvbCB8IHVuZGVmaW5lZCwgQWlyR2FwQmxvY2tFeHBsb3JlciB8IHVuZGVmaW5lZF0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgbW9kdWxlLmNyZWF0ZU9ubGluZVByb3RvY29sKGlkZW50aWZpZXIsIG5ldHdvcmtJZCksXG4gICAgICAgICAgbW9kdWxlLmNyZWF0ZUJsb2NrRXhwbG9yZXIoaWRlbnRpZmllciwgbmV0d29ya0lkKVxuICAgICAgICBdKVxuICAgICAgICBpZiAocHJvdG9jb2wgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHByb3RvY29sLCBibG9ja0V4cGxvcmVyIH1cbiAgICAgIH0pXG4gICAgKVxuXG4gICAgcmV0dXJuIHByb3RvY29scy5maWx0ZXIoKHByb3RvY29sOiBMb2FkZWRQcm90b2NvbCB8IHVuZGVmaW5lZCkgPT4gcHJvdG9jb2wgIT09IHVuZGVmaW5lZClcbiAgfVxuXG4gIHB1YmxpYyBpc1Byb3RvY29sU3VwcG9ydGVkKGlkZW50aWZpZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN1cHBvcnRlZFByb3RvY29scy5oYXMoaWRlbnRpZmllcilcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQcm90b2NvbE5ldHdvcmsocHJvdG9jb2xJZGVudGlmaWVyOiBzdHJpbmcsIG5ldHdvcmtJZD86IHN0cmluZyk6IFByb21pc2U8UHJvdG9jb2xOZXR3b3JrIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgdGFyZ2V0TW9kdWxlOiBBaXJHYXBNb2R1bGUgfCB1bmRlZmluZWQgPSB0aGlzLm1vZHVsZXMuZmluZChcbiAgICAgIChtb2R1bGU6IEFpckdhcE1vZHVsZSkgPT4gbW9kdWxlLnN1cHBvcnRlZFByb3RvY29sc1twcm90b2NvbElkZW50aWZpZXJdICE9PSB1bmRlZmluZWRcbiAgICApXG4gICAgaWYgKHRhcmdldE1vZHVsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3Qgb25saW5lUHJvdG9jb2w6IEFpckdhcE9ubGluZVByb3RvY29sIHwgdW5kZWZpbmVkID0gYXdhaXQgdGFyZ2V0TW9kdWxlLmNyZWF0ZU9ubGluZVByb3RvY29sKHByb3RvY29sSWRlbnRpZmllciwgbmV0d29ya0lkKVxuICAgIGlmIChvbmxpbmVQcm90b2NvbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIG9ubGluZVByb3RvY29sLmdldE5ldHdvcmsoKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFByb3RvY29sQmxvY2tFeHBsb3JlcihcbiAgICBwcm90b2NvbElkZW50aWZpZXI6IHN0cmluZyxcbiAgICBuZXR3b3JrOiBzdHJpbmcgfCBQcm90b2NvbE5ldHdvcmtcbiAgKTogUHJvbWlzZTxBaXJHYXBCbG9ja0V4cGxvcmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgdGFyZ2V0TW9kdWxlOiBBaXJHYXBNb2R1bGUgfCB1bmRlZmluZWQgPSB0aGlzLm1vZHVsZXMuZmluZChcbiAgICAgIChtb2R1bGU6IEFpckdhcE1vZHVsZSkgPT4gbW9kdWxlLnN1cHBvcnRlZFByb3RvY29sc1twcm90b2NvbElkZW50aWZpZXJdICE9PSB1bmRlZmluZWRcbiAgICApXG4gICAgaWYgKHRhcmdldE1vZHVsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldE1vZHVsZS5jcmVhdGVCbG9ja0V4cGxvcmVyKHByb3RvY29sSWRlbnRpZmllciwgbmV0d29yaylcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZXJpdmVBZGRyZXNzZXMod2FsbGV0czogQWlyR2FwV2FsbGV0W10sIGFtb3VudD86IG51bWJlcik6IFByb21pc2U8UmVjb3JkPHN0cmluZywgc3RyaW5nW10+PiB7XG4gICAgcmV0dXJuIGRlcml2ZUFkZHJlc3Nlc0FzeW5jKHdhbGxldHMsIGFtb3VudClcbiAgfVxufVxuIl19