@researchdatabox/redbox-core 0.0.1-beta.10213 → 0.0.1-beta.10760

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 (287) hide show
  1. package/dist/CoreController.d.ts +8 -0
  2. package/dist/CoreController.d.ts.map +1 -1
  3. package/dist/CoreController.js +87 -52
  4. package/dist/RecordsService.d.ts +2 -0
  5. package/dist/RecordsService.d.ts.map +1 -1
  6. package/dist/SearchService.d.ts +1 -1
  7. package/dist/SearchService.d.ts.map +1 -1
  8. package/dist/StorageService.d.ts +2 -0
  9. package/dist/StorageService.d.ts.map +1 -1
  10. package/dist/api-routes/groups/branding.d.ts +1 -0
  11. package/dist/api-routes/groups/branding.d.ts.map +1 -1
  12. package/dist/api-routes/groups/branding.js +19 -2
  13. package/dist/api-routes/groups/export.js +2 -2
  14. package/dist/api-routes/groups/figshare-crosswalks.d.ts +11 -0
  15. package/dist/api-routes/groups/figshare-crosswalks.d.ts.map +1 -0
  16. package/dist/api-routes/groups/figshare-crosswalks.js +171 -0
  17. package/dist/api-routes/groups/figshare-vocabulary.d.ts +12 -0
  18. package/dist/api-routes/groups/figshare-vocabulary.d.ts.map +1 -0
  19. package/dist/api-routes/groups/figshare-vocabulary.js +248 -0
  20. package/dist/api-routes/groups/search.js +4 -4
  21. package/dist/api-routes/groups/users.js +3 -3
  22. package/dist/api-routes/index.d.ts +2 -0
  23. package/dist/api-routes/index.d.ts.map +1 -1
  24. package/dist/api-routes/index.js +3 -1
  25. package/dist/api-routes/route-registry.d.ts.map +1 -1
  26. package/dist/api-routes/route-registry.js +5 -1
  27. package/dist/api-routes/schemas/common.d.ts +1 -0
  28. package/dist/api-routes/schemas/common.d.ts.map +1 -1
  29. package/dist/api-routes/schemas/common.js +3 -2
  30. package/dist/bootstrap.d.ts.map +1 -1
  31. package/dist/bootstrap.js +5 -1
  32. package/dist/config/agendaQueue.config.d.ts +3 -0
  33. package/dist/config/agendaQueue.config.d.ts.map +1 -1
  34. package/dist/config/agendaQueue.config.js +13 -1
  35. package/dist/config/auth.config.d.ts.map +1 -1
  36. package/dist/config/auth.config.js +4 -1
  37. package/dist/config/brandingConfigurationDefaults.config.d.ts +1 -1
  38. package/dist/config/brandingConfigurationDefaults.config.d.ts.map +1 -1
  39. package/dist/config/brandingConfigurationDefaults.config.js +22 -230
  40. package/dist/config/dashboardtype.config.d.ts +7 -0
  41. package/dist/config/dashboardtype.config.d.ts.map +1 -1
  42. package/dist/config/dashboardtype.config.js +9 -89
  43. package/dist/config/dashboardview.config.d.ts +7 -0
  44. package/dist/config/dashboardview.config.d.ts.map +1 -1
  45. package/dist/config/dashboardview.config.js +9 -134
  46. package/dist/config/http.config.d.ts +2 -0
  47. package/dist/config/http.config.d.ts.map +1 -1
  48. package/dist/config/http.config.js +47 -1
  49. package/dist/config/jsonld.config.d.ts.map +1 -1
  50. package/dist/config/jsonld.config.js +2 -21
  51. package/dist/config/record.config.d.ts.map +1 -1
  52. package/dist/config/record.config.js +2 -9
  53. package/dist/config/recordtype.config.d.ts +8 -0
  54. package/dist/config/recordtype.config.d.ts.map +1 -1
  55. package/dist/config/recordtype.config.js +10 -660
  56. package/dist/config/reusableContributorFormDefinitions.config.d.ts.map +1 -1
  57. package/dist/config/reusableContributorFormDefinitions.config.js +1 -2
  58. package/dist/config/reusableViewFormDefinitions.config.d.ts.map +1 -1
  59. package/dist/config/reusableViewFormDefinitions.config.js +12 -1
  60. package/dist/config/routes.config.d.ts.map +1 -1
  61. package/dist/config/routes.config.js +12 -3
  62. package/dist/config/solr.config.d.ts +1 -0
  63. package/dist/config/solr.config.d.ts.map +1 -1
  64. package/dist/config/solr.config.js +3 -2
  65. package/dist/config/static_assets.config.d.ts +2 -0
  66. package/dist/config/static_assets.config.d.ts.map +1 -1
  67. package/dist/config/static_assets.config.js +4 -2
  68. package/dist/config/storage.config.d.ts.map +1 -1
  69. package/dist/config/storage.config.js +7 -1
  70. package/dist/config/views.config.d.ts.map +1 -1
  71. package/dist/config/views.config.js +2 -6
  72. package/dist/config/vocab.config.d.ts +4 -0
  73. package/dist/config/vocab.config.d.ts.map +1 -1
  74. package/dist/config/vocab.config.js +1 -1
  75. package/dist/config/workflow.config.d.ts +7 -0
  76. package/dist/config/workflow.config.d.ts.map +1 -1
  77. package/dist/config/workflow.config.js +9 -194
  78. package/dist/config/workspacetype.config.d.ts +7 -0
  79. package/dist/config/workspacetype.config.d.ts.map +1 -1
  80. package/dist/config/workspacetype.config.js +9 -10
  81. package/dist/configmodels/DoiPublishing.d.ts +1 -1
  82. package/dist/configmodels/DoiPublishing.d.ts.map +1 -1
  83. package/dist/configmodels/FigsharePublishing.d.ts +746 -217
  84. package/dist/configmodels/FigsharePublishing.d.ts.map +1 -1
  85. package/dist/configmodels/FigsharePublishing.js +181 -190
  86. package/dist/constants/export.d.ts +2 -0
  87. package/dist/constants/export.d.ts.map +1 -0
  88. package/dist/constants/export.js +8 -0
  89. package/dist/controllers/AsynchController.d.ts +4 -1
  90. package/dist/controllers/AsynchController.d.ts.map +1 -1
  91. package/dist/controllers/AsynchController.js +118 -9
  92. package/dist/controllers/BrandingAppController.d.ts +2 -0
  93. package/dist/controllers/BrandingAppController.d.ts.map +1 -1
  94. package/dist/controllers/BrandingAppController.js +40 -2
  95. package/dist/controllers/BrandingController.d.ts +8 -0
  96. package/dist/controllers/BrandingController.d.ts.map +1 -1
  97. package/dist/controllers/BrandingController.js +45 -1
  98. package/dist/controllers/ExportController.d.ts.map +1 -1
  99. package/dist/controllers/ExportController.js +4 -3
  100. package/dist/controllers/RecordController.d.ts +1 -1
  101. package/dist/controllers/RecordController.d.ts.map +1 -1
  102. package/dist/controllers/RecordController.js +47 -21
  103. package/dist/controllers/UserController.d.ts.map +1 -1
  104. package/dist/controllers/UserController.js +3 -2
  105. package/dist/controllers/VocabularyController.js +4 -4
  106. package/dist/controllers/index.d.ts.map +1 -1
  107. package/dist/controllers/index.js +7 -1
  108. package/dist/controllers/webservice/BrandingController.d.ts +1 -0
  109. package/dist/controllers/webservice/BrandingController.d.ts.map +1 -1
  110. package/dist/controllers/webservice/BrandingController.js +69 -10
  111. package/dist/controllers/webservice/ExportController.d.ts.map +1 -1
  112. package/dist/controllers/webservice/ExportController.js +4 -3
  113. package/dist/controllers/webservice/FigshareCrosswalkController.d.ts +20 -0
  114. package/dist/controllers/webservice/FigshareCrosswalkController.d.ts.map +1 -0
  115. package/dist/controllers/webservice/FigshareCrosswalkController.js +184 -0
  116. package/dist/controllers/webservice/FigshareVocabularyController.d.ts +21 -0
  117. package/dist/controllers/webservice/FigshareVocabularyController.d.ts.map +1 -0
  118. package/dist/controllers/webservice/FigshareVocabularyController.js +223 -0
  119. package/dist/controllers/webservice/RecordController.d.ts +2 -0
  120. package/dist/controllers/webservice/RecordController.d.ts.map +1 -1
  121. package/dist/controllers/webservice/RecordController.js +60 -12
  122. package/dist/controllers/webservice/UserManagementController.d.ts +5 -3
  123. package/dist/controllers/webservice/UserManagementController.d.ts.map +1 -1
  124. package/dist/controllers/webservice/UserManagementController.js +140 -9
  125. package/dist/controllers/webservice/figshare-vocabulary-errors.d.ts +14 -0
  126. package/dist/controllers/webservice/figshare-vocabulary-errors.d.ts.map +1 -0
  127. package/dist/controllers/webservice/figshare-vocabulary-errors.js +39 -0
  128. package/dist/form-config/index.d.ts +7 -0
  129. package/dist/form-config/index.d.ts.map +1 -1
  130. package/dist/form-config/index.js +8 -5
  131. package/dist/hooks/hookDiscovery.d.ts +20 -0
  132. package/dist/hooks/hookDiscovery.d.ts.map +1 -0
  133. package/dist/hooks/hookDiscovery.js +186 -0
  134. package/dist/hooks/hookResources.d.ts +23 -0
  135. package/dist/hooks/hookResources.d.ts.map +1 -0
  136. package/dist/hooks/hookResources.js +136 -0
  137. package/dist/hooks/index.d.ts +4 -0
  138. package/dist/hooks/index.d.ts.map +1 -1
  139. package/dist/hooks/index.js +14 -2
  140. package/dist/index.d.ts +4 -0
  141. package/dist/index.d.ts.map +1 -1
  142. package/dist/index.js +14 -2
  143. package/dist/loader/index.d.ts.map +1 -1
  144. package/dist/loader/index.js +21 -62
  145. package/dist/model/storage/BrandingModel.d.ts +2 -0
  146. package/dist/model/storage/BrandingModel.d.ts.map +1 -1
  147. package/dist/model/storage/BrandingModel.js +3 -1
  148. package/dist/services/AgendaQueueService.d.ts.map +1 -1
  149. package/dist/services/AgendaQueueService.js +6 -2
  150. package/dist/services/BrandingLogoService.d.ts +20 -1
  151. package/dist/services/BrandingLogoService.d.ts.map +1 -1
  152. package/dist/services/BrandingLogoService.js +51 -5
  153. package/dist/services/BrandingThemeTokens.d.ts.map +1 -1
  154. package/dist/services/BrandingThemeTokens.js +2 -1
  155. package/dist/services/EmailService.d.ts +2 -8
  156. package/dist/services/EmailService.d.ts.map +1 -1
  157. package/dist/services/EmailService.js +8 -26
  158. package/dist/services/FigshareService.d.ts.map +1 -1
  159. package/dist/services/FigshareService.js +5 -4
  160. package/dist/services/FigshareVocabularyService.d.ts +442 -0
  161. package/dist/services/FigshareVocabularyService.d.ts.map +1 -0
  162. package/dist/services/FigshareVocabularyService.js +1802 -0
  163. package/dist/services/FormVocabularyService.d.ts.map +1 -1
  164. package/dist/services/FormVocabularyService.js +28 -7
  165. package/dist/services/I18nEntriesService.d.ts.map +1 -1
  166. package/dist/services/I18nEntriesService.js +21 -2
  167. package/dist/services/IntegrationAuditService.js +4 -4
  168. package/dist/services/NamedQueryService.d.ts.map +1 -1
  169. package/dist/services/NamedQueryService.js +3 -16
  170. package/dist/services/RDMPService.d.ts.map +1 -1
  171. package/dist/services/RDMPService.js +9 -1
  172. package/dist/services/RecordsService.d.ts +4 -0
  173. package/dist/services/RecordsService.d.ts.map +1 -1
  174. package/dist/services/RecordsService.js +62 -45
  175. package/dist/services/ReportsService.d.ts +0 -5
  176. package/dist/services/ReportsService.d.ts.map +1 -1
  177. package/dist/services/ReportsService.js +22 -31
  178. package/dist/services/SolrSearchService.d.ts +10 -2
  179. package/dist/services/SolrSearchService.d.ts.map +1 -1
  180. package/dist/services/SolrSearchService.js +110 -52
  181. package/dist/services/StandardDatastreamService.d.ts +7 -0
  182. package/dist/services/StandardDatastreamService.d.ts.map +1 -1
  183. package/dist/services/StandardDatastreamService.js +127 -27
  184. package/dist/services/TemplateService.d.ts +0 -14
  185. package/dist/services/TemplateService.d.ts.map +1 -1
  186. package/dist/services/TemplateService.js +4 -45
  187. package/dist/services/UsersService.d.ts.map +1 -1
  188. package/dist/services/UsersService.js +19 -16
  189. package/dist/services/ViewUtilsService.d.ts +5 -1
  190. package/dist/services/ViewUtilsService.d.ts.map +1 -1
  191. package/dist/services/ViewUtilsService.js +38 -46
  192. package/dist/services/VocabularyService.d.ts +11 -2
  193. package/dist/services/VocabularyService.d.ts.map +1 -1
  194. package/dist/services/VocabularyService.js +46 -20
  195. package/dist/services/doi-v2/bindings.d.ts.map +1 -1
  196. package/dist/services/doi-v2/bindings.js +2 -11
  197. package/dist/services/figshare-v2/assets.d.ts +2 -1
  198. package/dist/services/figshare-v2/assets.d.ts.map +1 -1
  199. package/dist/services/figshare-v2/assets.js +144 -89
  200. package/dist/services/figshare-v2/bindings.d.ts +28 -3
  201. package/dist/services/figshare-v2/bindings.d.ts.map +1 -1
  202. package/dist/services/figshare-v2/bindings.js +75 -17
  203. package/dist/services/figshare-v2/categories.d.ts +142 -0
  204. package/dist/services/figshare-v2/categories.d.ts.map +1 -0
  205. package/dist/services/figshare-v2/categories.js +408 -0
  206. package/dist/services/figshare-v2/config.d.ts +10 -0
  207. package/dist/services/figshare-v2/config.d.ts.map +1 -1
  208. package/dist/services/figshare-v2/config.js +39 -1
  209. package/dist/services/figshare-v2/context.d.ts +18 -1
  210. package/dist/services/figshare-v2/context.d.ts.map +1 -1
  211. package/dist/services/figshare-v2/context.js +34 -2
  212. package/dist/services/figshare-v2/embargo.d.ts.map +1 -1
  213. package/dist/services/figshare-v2/embargo.js +6 -4
  214. package/dist/services/figshare-v2/http.d.ts +3 -1
  215. package/dist/services/figshare-v2/http.d.ts.map +1 -1
  216. package/dist/services/figshare-v2/http.js +26 -4
  217. package/dist/services/figshare-v2/metadata.d.ts.map +1 -1
  218. package/dist/services/figshare-v2/metadata.js +74 -26
  219. package/dist/services/figshare-v2/observability.d.ts +1 -2
  220. package/dist/services/figshare-v2/observability.d.ts.map +1 -1
  221. package/dist/services/figshare-v2/observability.js +7 -47
  222. package/dist/services/figshare-v2/types.d.ts +13 -0
  223. package/dist/services/figshare-v2/types.d.ts.map +1 -1
  224. package/dist/services/figshare-v2/types.js +1 -1
  225. package/dist/services/figshare-v2/vocabulary-errors.d.ts +39 -0
  226. package/dist/services/figshare-v2/vocabulary-errors.d.ts.map +1 -0
  227. package/dist/services/figshare-v2/vocabulary-errors.js +68 -0
  228. package/dist/services/index.d.ts +3 -0
  229. package/dist/services/index.d.ts.map +1 -1
  230. package/dist/services/index.js +8 -3
  231. package/dist/storage/TusStorageManagerDataStore.d.ts.map +1 -1
  232. package/dist/storage/TusStorageManagerDataStore.js +14 -1
  233. package/dist/utilities/ContextVariableUtils.d.ts +3 -1
  234. package/dist/utilities/ContextVariableUtils.d.ts.map +1 -1
  235. package/dist/utilities/ContextVariableUtils.js +25 -7
  236. package/dist/utilities/PromiseUtils.d.ts +9 -0
  237. package/dist/utilities/PromiseUtils.d.ts.map +1 -0
  238. package/dist/utilities/PromiseUtils.js +27 -0
  239. package/dist/utilities/RedactionUtils.d.ts +3 -0
  240. package/dist/utilities/RedactionUtils.d.ts.map +1 -0
  241. package/dist/utilities/RedactionUtils.js +55 -0
  242. package/dist/visitor/client.visitor.d.ts +3 -0
  243. package/dist/visitor/client.visitor.d.ts.map +1 -1
  244. package/dist/visitor/client.visitor.js +102 -17
  245. package/dist/visitor/construct.visitor.d.ts +3 -0
  246. package/dist/visitor/construct.visitor.d.ts.map +1 -1
  247. package/dist/visitor/construct.visitor.js +51 -38
  248. package/dist/visitor/json-type-def.visitor.d.ts +1 -0
  249. package/dist/visitor/json-type-def.visitor.d.ts.map +1 -1
  250. package/dist/visitor/json-type-def.visitor.js +20 -4
  251. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts +6 -3
  252. package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
  253. package/dist/visitor/migrate-config-v4-v5.visitor.js +94 -44
  254. package/dist/visitor/validator.visitor.d.ts.map +1 -1
  255. package/dist/visitor/validator.visitor.js +1 -1
  256. package/dist/visitor/visitor-helpers.js +2 -2
  257. package/dist/waterline-models/BrandingConfig.d.ts +2 -0
  258. package/dist/waterline-models/BrandingConfig.d.ts.map +1 -1
  259. package/dist/waterline-models/BrandingConfig.js +6 -1
  260. package/dist/waterline-models/FigshareVocabularyCategory.d.ts +38 -0
  261. package/dist/waterline-models/FigshareVocabularyCategory.d.ts.map +1 -0
  262. package/dist/waterline-models/FigshareVocabularyCategory.js +157 -0
  263. package/dist/waterline-models/FigshareVocabularyCrosswalk.d.ts +37 -0
  264. package/dist/waterline-models/FigshareVocabularyCrosswalk.d.ts.map +1 -0
  265. package/dist/waterline-models/FigshareVocabularyCrosswalk.js +153 -0
  266. package/dist/waterline-models/FigshareVocabularyCrosswalkMapping.d.ts +37 -0
  267. package/dist/waterline-models/FigshareVocabularyCrosswalkMapping.d.ts.map +1 -0
  268. package/dist/waterline-models/FigshareVocabularyCrosswalkMapping.js +138 -0
  269. package/dist/waterline-models/FigshareVocabularySource.d.ts +45 -0
  270. package/dist/waterline-models/FigshareVocabularySource.d.ts.map +1 -0
  271. package/dist/waterline-models/FigshareVocabularySource.js +149 -0
  272. package/dist/waterline-models/FigshareVocabularySyncRun.d.ts +70 -0
  273. package/dist/waterline-models/FigshareVocabularySyncRun.d.ts.map +1 -0
  274. package/dist/waterline-models/FigshareVocabularySyncRun.js +237 -0
  275. package/dist/waterline-models/Vocabulary.d.ts +3 -1
  276. package/dist/waterline-models/Vocabulary.d.ts.map +1 -1
  277. package/dist/waterline-models/Vocabulary.js +9 -3
  278. package/dist/waterline-models/index.d.ts +10 -0
  279. package/dist/waterline-models/index.d.ts.map +1 -1
  280. package/dist/waterline-models/index.js +16 -1
  281. package/package.json +19 -19
  282. package/dist/form-config/dataRecord-1.0-draft.d.ts +0 -4
  283. package/dist/form-config/dataRecord-1.0-draft.d.ts.map +0 -1
  284. package/dist/form-config/dataRecord-1.0-draft.js +0 -1042
  285. package/dist/form-config/default-1.0-draft.d.ts +0 -4
  286. package/dist/form-config/default-1.0-draft.d.ts.map +0 -1
  287. package/dist/form-config/default-1.0-draft.js +0 -1156
@@ -177,7 +177,7 @@ var Services;
177
177
  const rm = record;
178
178
  const syncState = this.getSyncState(config, rm);
179
179
  const client = this.makeClient(config, rm, syncState.correlationId, 'syncAssets');
180
- return (0, assets_1.syncAssetsPhase)(client, config, rm, article, syncState);
180
+ return (0, assets_1.syncAssetsPhase)(client, config, rm, article, syncState, this.logger);
181
181
  }
182
182
  async syncEmbargo(record, articleId) {
183
183
  const config = this.assertConfig(record, 'syncEmbargo');
@@ -301,7 +301,8 @@ var Services;
301
301
  throw new Error(`Cannot transition ${msgPartial} because the linked article is not in the required state`);
302
302
  }
303
303
  const currentRec = await RecordsService.getMeta(oid);
304
- const brand = BrandingService.getBrand(currentRec.metaMetadata?.brandId ?? 'default');
304
+ const brandId = currentRec.metaMetadata?.brandId;
305
+ const brand = (brandId ? (BrandingService.getBrandById(brandId) ?? BrandingService.getBrand(brandId)) : null) ?? BrandingService.getDefault();
305
306
  const userRoles = user.roles ?? [];
306
307
  const hasEditAccess = await RecordsService.hasEditAccess(brand, user, userRoles, currentRec);
307
308
  if (!hasEditAccess) {
@@ -713,7 +714,7 @@ var Services;
713
714
  const userType = jobConfig.userType ?? '';
714
715
  const user = await UsersService.getUserWithUsername(username).toPromise();
715
716
  if (!user || !user?.username || user?.type !== userType) {
716
- sails.log.error(`FigService - cannot run job because could not find user with username '${username}' and type '${userType}' user:`, user);
717
+ sails.log.error(`FigService - cannot run job because could not find user with username '${username}' and type '${userType}'`, { type: user?.type });
717
718
  return;
718
719
  }
719
720
  const namedQueryConfig = await NamedQueryService.getNamedQueryConfig(brand, namedQuery);
@@ -768,4 +769,4 @@ var Services;
768
769
  Services.FigshareService = FigshareService;
769
770
  })(Services || (exports.Services = Services = {}));
770
771
  module.exports.Services = Services;
771
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlnc2hhcmVTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL0ZpZ3NoYXJlU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnREFBc0Q7QUFDdEQsaURBQWlIO0FBQ2pILG1EQUF5RDtBQUN6RCw2Q0FBa0Y7QUFDbEYscURBQW9FO0FBQ3BFLGlEQUF1RDtBQUN2RCxtREFBeUQ7QUFDekQsbURBQTZEO0FBQzdELHVEQUF5RDtBQUN6RCwrQ0FBbUc7QUFDbkcsbURBTStCO0FBQy9CLCtDQUErRjtBQUMvRixxREFBd0U7QUFDeEUsNkNBQXVGO0FBQ3ZGLGtFQUErRDtBQUUvRCxrRkFBZ0Y7QUFDaEYsK0NBYzZCO0FBSTdCLElBQWlCLFFBQVEsQ0E2eUJ4QjtBQTd5QkQsV0FBaUIsUUFBUTtJQUN2QixNQUFhLGVBQWdCLFNBQVEsc0JBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTztRQUNyQyxnQkFBZ0IsR0FBYTtZQUM5Qyw2QkFBNkI7WUFDN0IsOEJBQThCO1lBQzlCLHVCQUF1QjtZQUN2Qiw4QkFBOEI7WUFDOUIsNEJBQTRCO1lBQzVCLGtCQUFrQjtZQUNsQiw4QkFBOEI7WUFDOUIsMERBQTBEO1lBQzFELG9CQUFvQjtZQUNwQixjQUFjO1lBQ2QsWUFBWTtZQUNaLGFBQWE7WUFDYixpQkFBaUI7WUFDakIsV0FBVztZQUNYLHdCQUF3QjtZQUN4QixNQUFNO1NBQ1AsQ0FBQztRQUVNLFVBQVUsQ0FBVTtRQUVwQixTQUFTO1lBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUMvRCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3pCLENBQUM7UUFFTyw2QkFBNkIsQ0FBQyxPQUFnQztZQUNwRSxPQUFPLE9BQU8sT0FBTyxFQUFF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
772
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlnc2hhcmVTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL0ZpZ3NoYXJlU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnREFBc0Q7QUFDdEQsaURBQWlIO0FBQ2pILG1EQUF5RDtBQUN6RCw2Q0FBa0Y7QUFDbEYscURBQW9FO0FBQ3BFLGlEQUF1RDtBQUN2RCxtREFBeUQ7QUFDekQsbURBQTZEO0FBQzdELHVEQUF5RDtBQUN6RCwrQ0FBbUc7QUFDbkcsbURBTStCO0FBQy9CLCtDQUErRjtBQUMvRixxREFBd0U7QUFDeEUsNkNBQXVGO0FBQ3ZGLGtFQUErRDtBQUUvRCxrRkFBZ0Y7QUFDaEYsK0NBYzZCO0FBSTdCLElBQWlCLFFBQVEsQ0E4eUJ4QjtBQTl5QkQsV0FBaUIsUUFBUTtJQUN2QixNQUFhLGVBQWdCLFNBQVEsc0JBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTztRQUNyQyxnQkFBZ0IsR0FBYTtZQUM5Qyw2QkFBNkI7WUFDN0IsOEJBQThCO1lBQzlCLHVCQUF1QjtZQUN2Qiw4QkFBOEI7WUFDOUIsNEJBQTRCO1lBQzVCLGtCQUFrQjtZQUNsQiw4QkFBOEI7WUFDOUIsMERBQTBEO1lBQzFELG9CQUFvQjtZQUNwQixjQUFjO1lBQ2QsWUFBWTtZQUNaLGFBQWE7WUFDYixpQkFBaUI7WUFDakIsV0FBVztZQUNYLHdCQUF3QjtZQUN4QixNQUFNO1NBQ1AsQ0FBQztRQUVNLFVBQVUsQ0FBVTtRQUVwQixTQUFTO1lBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUMvRCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3pCLENBQUM7UUFFTyw2QkFBNkIsQ0FBQyxPQUFnQztZQUNwRSxPQUFPLE9BQU8sT0FBTyxFQUFFLGdCQUFnQixLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUM5RixDQUFDO1FBRU8sOEJBQThCLENBQUMsR0FBa0IsRUFBRSxNQUFtQixFQUFFLE9BQWdDLEVBQUUsSUFBYTtZQUM3SCxJQUFJLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNoRixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxNQUFNLENBQUM7UUFDekUsQ0FBQztRQUVPLGNBQWMsQ0FBQyxLQUFjO1lBQ25DLElBQUksS0FBSyxZQUFZLHFDQUFpQixFQUFFLENBQUM7Z0JBQ3ZDLE9BQU87b0JBQ0wsZUFBZSxFQUFFO3dCQUNmLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYTtxQkFDbkM7aUJBQ0YsQ0FBQztZQUNKLENBQUM7WUFDRCxNQUFNLFNBQVMsR0FBRyxLQUF3RCxDQUFDO1lBQzNFLE1BQU0sVUFBVSxHQUFHLE9BQU8sU0FBUyxFQUFFLFVBQVUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNoRyxNQUFNLFlBQVksR0FBRyxTQUFTLEVBQUUsWUFBWSxDQUFDO1lBQzdDLE1BQU0sWUFBWSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1RSxPQUFPO2dCQUNMLFVBQVU7Z0JBQ1YsZUFBZSxFQUFFLFlBQVksSUFBSSxJQUFJLElBQUksT0FBTyxZQUFZLEtBQUssUUFBUTtvQkFDdkUsQ0FBQyxDQUFDLFlBQXVDO29CQUN6QyxDQUFDLENBQUM7d0JBQ0EsU0FBUyxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSzt3QkFDN0QsT0FBTyxFQUFFLFlBQVk7d0JBQ3JCLEdBQUcsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQzdDLCtFQUErRTt3QkFDL0Usa0ZBQWtGO3dCQUNsRixHQUFHLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztxQkFDM0U7YUFDSixDQUFDO1FBQ0osQ0FBQztRQUVPLGFBQWEsQ0FBQyxLQUFjLEVBQUUsT0FBZSxFQUFFLGNBQXVCO1lBQzVFLE1BQU0sVUFBVSxHQUFJLEtBQWlDLEVBQUUsVUFBVSxJQUFJLGNBQWMsQ0FBQztZQUNwRixJQUFJLEtBQUssWUFBWSxxQ0FBaUIsRUFBRSxDQUFDO2dCQUN2QyxNQUFNLEtBQUssQ0FBQztZQUNkLENBQUM7WUFDRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0QsTUFBTSxJQUFJLHFDQUFpQixDQUFDO2dCQUMxQixPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksT0FBTyxFQUFFO2dCQUN6QyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO2dCQUN6QixhQUFhLEVBQUUsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLFVBQVUsSUFBSSxHQUFHLEVBQUUsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFDLGFBQWE7YUFDckgsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVPLDBCQUEwQixDQUFDLEtBQWM7WUFDL0MsTUFBTSxZQUFZLEdBQUksS0FBb0MsRUFBRSxZQUFZLENBQUM7WUFDekUsSUFBSSxZQUFZLElBQUksSUFBSSxJQUFJLE9BQU8sWUFBWSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM3RCxPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDO1lBQ0QsTUFBTSxPQUFPLEdBQUksWUFBc0MsQ0FBQyxPQUFPLENBQUM7WUFDaEUsT0FBTyxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDM0YsQ0FBQztRQUVPLG1DQUFtQyxDQUFDLFVBQWtCLEVBQUUsYUFBc0IsRUFBRSxlQUF3QjtZQUM5RyxJQUFJLE9BQWUsQ0FBQztZQUNwQixRQUFRLFVBQVUsRUFBRSxDQUFDO2dCQUNuQixLQUFLLEdBQUc7b0JBQ04sT0FBTyxHQUFHLGdCQUFnQixDQUFDO29CQUMzQixNQUFNO2dCQUNSLEtBQUssR0FBRztvQkFDTixPQUFPLEdBQUcsV0FBVyxDQUFDO29CQUN0QixNQUFNO2dCQUNSLEtBQUssR0FBRztvQkFDTixPQUFPLEdBQUcsZ0JBQWdCLENBQUM7b0JBQzNCLE1BQU07Z0JBQ1IsS0FBSyxHQUFHO29CQUNOLE9BQU8sR0FBRyxjQUFjLENBQUM7b0JBQ3pCLE1BQU07Z0JBQ1I7b0JBQ0UsT0FBTyxHQUFHLGVBQWUsQ0FBQztvQkFDMUIsTUFBTTtZQUNWLENBQUM7WUFDRCxNQUFNLFVBQVUsR0FBRyxlQUFlLElBQUksSUFBSSxJQUFJLFVBQVUsSUFBSSxHQUFHLElBQUksVUFBVSxHQUFHLEdBQUc7Z0JBQ2pGLENBQUMsQ0FBQyxlQUFlO2dCQUNqQixDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2xDLE9BQU8sSUFBSSxxQ0FBaUIsQ0FBQztnQkFDM0IsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLGFBQWEsSUFBSSxVQUFVLEVBQUU7Z0JBQzdELGFBQWEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQzthQUNoRixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRU8sWUFBWSxDQUFDLE1BQW1CLEVBQUUsU0FBaUI7WUFDekQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QyxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNqRixDQUFDO1lBQ0QsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUVNLFNBQVMsQ0FBQyxNQUFvQjtZQUNuQyxPQUFPLElBQUEsd0NBQStCLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVNLFlBQVksQ0FBQyxNQUF1RSxFQUFFLE1BQW1CO1lBQzlHLE9BQU8sSUFBQSxxQkFBWSxFQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBRU0sWUFBWSxDQUFDLE1BQXVFLEVBQUUsTUFBbUIsRUFBRSxTQUE0QjtZQUM1SSxJQUFBLHFCQUFZLEVBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBRU0sMEJBQTBCLENBQUMsUUFBZ0I7WUFDaEQsSUFBQSxxQ0FBMEIsRUFBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBRU0sS0FBSyxDQUFDLG9CQUFvQixDQUFDLE1BQXVFLEVBQUUsTUFBbUI7WUFDNUgsT0FBTyxJQUFBLGlDQUF1QixFQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRU0sVUFBVSxDQUFDLE1BQXVFLEVBQUUsTUFBbUIsRUFBRSxLQUFjLEVBQUUsZ0JBQXdCLFFBQVE7WUFDOUosTUFBTSxVQUFVLEdBQUcsSUFBQSwwQkFBZ0IsRUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztZQUMxRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBQSx3QkFBaUIsRUFBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxxQkFBYyxFQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM1RyxDQUFDO1FBRU0sa0JBQWtCLENBQUMsTUFBbUIsRUFBRSxLQUFjO1lBQzNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdEMsTUFBTSxFQUFFLEdBQUcsTUFBcUIsQ0FBQztZQUNqQyxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDbkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUMzRSxDQUFDO1lBRUQsTUFBTSxVQUFVLEdBQUcsSUFBQSwwQkFBZ0IsRUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzNELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BELE9BQU8sSUFBQSx5QkFBc0IsRUFBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckYsQ0FBQztRQUVNLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBbUIsRUFBRSxJQUE4QjtZQUMzRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztZQUN6RCxNQUFNLEVBQUUsR0FBRyxNQUFxQixDQUFDO1lBRWpDLE1BQU0sZUFBZSxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUQsK0VBQStFO1lBQy9FLE1BQU0sVUFBVSxHQUFHLElBQUEsMEJBQWdCLEVBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUN6RyxPQUFPLElBQUEsZ0NBQXNCLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUVNLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBbUIsRUFBRSxPQUF3QjtZQUNuRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztZQUN2RCxNQUFNLEVBQUUsR0FBRyxNQUFxQixDQUFDO1lBRWpDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2hELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ2xGLE9BQU8sSUFBQSx3QkFBZSxFQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlFLENBQUM7UUFFTSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQW1CLEVBQUUsU0FBaUI7WUFDN0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDeEQsTUFBTSxFQUFFLEdBQUcsTUFBcUIsQ0FBQztZQUVqQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ3JFLE9BQU8sSUFBQSwwQkFBZ0IsRUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFtQixFQUFFLFNBQWlCO1lBQ2pFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFDNUQsTUFBTSxFQUFFLEdBQUcsTUFBcUIsQ0FBQztZQUVqQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFDekUsT0FBTyxJQUFBLDhCQUFvQixFQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVGLENBQUM7UUFFTSxTQUFTLENBQUMsTUFBbUIsRUFBRSxPQUF3QixFQUFFLGFBQXFDLEVBQUUsZUFBeUM7WUFDOUksTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QyxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDbkIsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztZQUNELE9BQU8sSUFBQSwwQkFBYyxFQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUE4QyxDQUFDLENBQUM7UUFDaEgsQ0FBQztRQUVELGlGQUFpRjtRQUNqRixtRkFBbUY7UUFDbkYsMkNBQTJDO1FBQ25DLEtBQUssQ0FBQyxlQUFlLENBQUMsTUFBc0IsRUFBRSxTQUFpQjtZQUNyRSxPQUFPLElBQUEsMEJBQW1CLEVBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFTyxnQkFBZ0IsQ0FBQyxNQUFtQixFQUFFLE9BQXdCO1lBQ3BFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdEMsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ25CLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUNELE9BQU8sSUFBQSwwQkFBdUIsRUFBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUVPLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxNQUF1RSxFQUFFLE1BQW1CLEVBQUUsU0FBaUI7WUFDeEosTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSw4QkFBOEIsQ0FBQyxDQUFDO1lBQzFGLE1BQU0sSUFBQSxzQ0FBeUIsRUFBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUVPLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxNQUFtQixFQUFFLFNBQWlCO1lBQ3ZFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdEMsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ25CLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixDQUFDLENBQUM7WUFDbEYsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNuRSxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQUEsc0JBQWMsRUFBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBd0IsQ0FBQztZQUM3RyxNQUFNLFlBQVksR0FBSSxLQUFLLENBQUMsTUFBa0MsQ0FBQyxNQUE2QyxDQUFDO1lBQzdHLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxpQkFBaUIsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM1RSxNQUFNLGlCQUFpQixHQUFHLHFCQUFxQixDQUFDLENBQUMsQ0FBRSxLQUFLLENBQUMsUUFBb0MsRUFBRSxDQUFDLHFCQUFxQixDQUF3QyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFFMUssS0FBSyxNQUFNLEtBQUssSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDLEVBQUUsQ0FBQztnQkFDdkMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO29CQUN4RCxTQUFTO2dCQUNYLENBQUM7Z0JBRUQsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDL0UsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ3JCLFNBQVM7Z0JBQ1gsQ0FBQztnQkFFRCxNQUFNLGdCQUFnQixHQUFHLGlCQUFpQixFQUFFLGdCQUE2RixDQUFDO2dCQUMxSSxJQUFJLGdCQUFnQixJQUFJLElBQUksRUFBRSxDQUFDO29CQUM3QixJQUFJLENBQUM7d0JBQ0gsTUFBTSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUNyRSxDQUFDO29CQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7d0JBQ2YsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsd0RBQXdELE1BQU0sQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTs0QkFDN0csS0FBSzs0QkFDTCxLQUFLLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQzt5QkFDOUQsQ0FBQyxDQUFDO29CQUNMLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxNQUFNLEdBQUcsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDYixhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDL0IsQ0FBQztnQkFDRCxNQUFNLFdBQVcsR0FBRyxPQUFPLFFBQVEsQ0FBQyxZQUFZLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xHLElBQUksV0FBVyxLQUFLLEVBQUUsRUFBRSxDQUFDO29CQUN2QixLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywrQkFBK0IsUUFBUSxDQUFDLElBQUksZ0JBQWdCLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO29CQUNySyxTQUFTO2dCQUNYLENBQUM7Z0JBQ0QsYUFBYSxDQUFDLElBQUksQ0FBQztvQkFDakIsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLEtBQUssRUFBRSxjQUFjLFFBQVEsQ0FBQyxJQUFJLEVBQUU7b0JBQ3BDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxJQUFJO29CQUMvQixNQUFNLEVBQUUsSUFBSTtvQkFDWixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLO2lCQUNsQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsSUFBQSxzQkFBYyxFQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ3ZFLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQztZQUM1RCxJQUFJLE9BQU8sZ0JBQWdCLEtBQUssUUFBUSxJQUFJLGdCQUFnQixLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUNwRSxJQUFBLHNCQUFjLEVBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2xELENBQUM7WUFDRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRU8sS0FBSyxDQUFDLG1DQUFtQyxDQUMvQyxNQUF1RSxFQUN2RSxNQUFtQixFQUNuQixTQUFpQixFQUNqQixzQkFBOEIsRUFDOUIsd0JBQWdDO1lBRWhDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDdEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLFNBQVMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDM0UsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsU0FBUyxzQkFBc0IsRUFBRSwwREFBMEQsQ0FBQyxDQUFDO1lBQy9JLE1BQU0sT0FBTyxHQUFHLE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNuRCxNQUFNLGtCQUFrQixHQUFJLE9BQW1DLENBQUMsc0JBQXNCLENBQUMsSUFBSSxJQUFJLENBQUM7WUFDaEcsSUFBSSxrQkFBa0IsSUFBSSxJQUFJLElBQUksa0JBQWtCLEtBQUssd0JBQXdCLEVBQUUsQ0FBQztnQkFDbEYsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLFNBQVMsb0JBQW9CLHNCQUFzQixZQUFZLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsYUFBYSxJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMxTSxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzVELE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssU0FBUyxDQUFDLENBQUM7WUFDdkcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNyQixLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsU0FBUyw2QkFBNkIsQ0FBQyxDQUFDO2dCQUN2RixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFTyxLQUFLLENBQUMsMkJBQTJCLENBQ3ZDLE1BQW1CLEVBQ25CLElBQWUsRUFDZixHQUFXLEVBQ1gsU0FBaUIsRUFDakIsVUFBa0IsRUFDbEIsc0JBQThCLEVBQzlCLHdCQUFnQztZQUVoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RDLElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNuQixPQUFPO1lBQ1QsQ0FBQztZQUVELE1BQU0sVUFBVSxHQUFHLGVBQWUsR0FBRywrQkFBK0IsU0FBUyxjQUFjLFVBQVUsR0FBRyxDQUFDO1lBQ3pHLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLG1DQUFtQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixFQUFFLHdCQUF3QixDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNuSSxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixVQUFVLDBEQUEwRCxDQUFDLENBQUM7WUFDN0csQ0FBQztZQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0sY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQWdCLENBQUM7WUFDcEUsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUM7WUFDakQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM5SSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNuQyxNQUFNLGFBQWEsR0FBRyxNQUFNLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFpRCxFQUFFLFVBQWdELENBQUMsQ0FBQztZQUMzSyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLFVBQVUsa0JBQWtCLElBQUksQ0FBQyxRQUFRLGlDQUFpQyxDQUFDLENBQUM7WUFDbkgsQ0FBQztZQUVELE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMzRCxNQUFNLFVBQVUsR0FBRyxNQUFNLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkYsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixVQUFVLGlDQUFpQyxDQUFDLENBQUM7WUFDcEYsQ0FBQztZQUVELE1BQU0sWUFBWSxHQUFHLE1BQU0sb0JBQW9CLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN4RixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3JDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxjQUFjLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBcUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsUUFBbUMsQ0FBQyxDQUFDO1lBQ25MLE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZELElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2pCLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHdCQUF3QixVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixVQUFVLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzRixDQUFDO1FBQ0gsQ0FBQztRQUVNLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxNQUFtQixFQUFFLEtBQWMsRUFBRSxnQkFBd0IsUUFBUTtZQUN2RyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sRUFBRSxHQUFHLE1BQXFCLENBQUM7WUFDakMsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ25CLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2hELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDM0IsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztZQUVELE1BQU0sVUFBVSxHQUFHLElBQUEsMEJBQWdCLEVBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDdEUsTUFBTSxRQUFRLEdBQUcsSUFBQSwwQkFBa0IsRUFBQyxVQUFVLENBQUMsU0FBUyxFQUFFLDhDQUFzQixDQUFDLHNCQUFzQixFQUFFLFVBQVUsRUFBRTtnQkFDbkgsYUFBYTtnQkFDYixLQUFLO2dCQUNMLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWE7Z0JBQzNDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDekIsS0FBSyxFQUFFLFlBQVk7YUFDcEIsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDO2dCQUNILElBQUksT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2hELE1BQU0sZUFBZSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzNELE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN4RSxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbEcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDMUMsT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ25KLENBQUM7Z0JBQ0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUMsQ0FBQztnQkFDbEYsSUFBQSw2QkFBcUIsRUFBQyxRQUFRLEVBQUU7b0JBQzlCLE9BQU8sRUFBRSx1Q0FBdUM7b0JBQ2hELGVBQWUsRUFBRTt3QkFDZixhQUFhO3dCQUNiLEtBQUs7d0JBQ0wsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYTt3QkFDM0MsU0FBUyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO3dCQUN0RCxNQUFNLEVBQUUsQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDO3dCQUNoRixhQUFhO3dCQUNiLGVBQWUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxlQUFlO3FCQUMvRDtpQkFDRixDQUFDLENBQUM7Z0JBQ0gsT0FBTyxhQUFhLENBQUM7WUFDdkIsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2hELFNBQVMsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO2dCQUM1QixTQUFTLENBQUMsU0FBUyxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDN0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUN6QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoRCxJQUFBLHlCQUFpQixFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUU7b0JBQ2pDLE9BQU8sRUFBRSx1QkFBdUI7b0JBQ2hDLFdBQVcsRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO29CQUNuRSxjQUFjLEVBQUUsWUFBWSxDQUFDLFVBQVU7b0JBQ3ZDLGVBQWUsRUFBRTt3QkFDZixhQUFhO3dCQUNiLEtBQUs7d0JBQ0wsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYTt3QkFDM0MsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO3dCQUN6QixLQUFLLEVBQUUsd0JBQXdCO3dCQUMvQixlQUFlLEVBQUUsU0FBUyxDQUFDLGVBQWU7d0JBQzFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7cUJBQ3pGO2lCQUNGLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxDQUFDO1lBQ3hGLENBQUM7UUFDSCxDQUFDO1FBRU0sS0FBSyxDQUFDLGlCQUFpQixDQUFDLEdBQVcsRUFBRSxNQUFtQixFQUFFLElBQWU7WUFDOUUsSUFBSSxDQUFDO2dCQUNILE1BQU0sU0FBUyxHQUFHLElBQUEscUJBQVksRUFBQyxNQUFNLENBQUMsQ0FBQztnQkFDdkMsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxjQUFjLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBaUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNwSCxJQUFJLFFBQVEsSUFBSSxJQUFJLElBQUksT0FBTyxRQUFRLENBQUMsWUFBWSxLQUFLLFVBQVUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO29CQUNoRyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQywwREFBMEQsR0FBRyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUM5RyxPQUFPLEtBQUssQ0FBQztnQkFDZixDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsMERBQTBELEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN4RixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDO1FBRU0sMkJBQTJCLENBQUMsR0FBa0IsRUFBRSxNQUFtQixFQUFFLE9BQWdDLEVBQUUsSUFBYTtZQUN6SCxJQUFJLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3JFLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLDBFQUEwRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRyxPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNuQyxPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUVNLDRCQUE0QixDQUFDLEdBQVcsRUFBRSxNQUFtQixFQUFFLE9BQWdDLEVBQUUsSUFBZTtZQUNySCxJQUFJLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3JFLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLDJFQUEyRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRyxPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNuQyxPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1lBQ0QsS0FBSyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxPQUFPLEVBQUUsV0FBVyxDQUFDO2lCQUNqRSxJQUFJLENBQUMsS0FBSyxFQUFFLGFBQTBCLEVBQUUsRUFBRTtnQkFDekMsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDekUsSUFBSSxTQUFTLEtBQUssS0FBSyxFQUFFLENBQUM7b0JBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQzdDLElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO3dCQUNuQixNQUFNLFVBQVUsR0FBRyxJQUFBLDBCQUFnQixFQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLGVBQWUsRUFBRSxXQUFXLENBQUMsQ0FBQzt3QkFDL0YsTUFBTSxRQUFRLEdBQUcsSUFBQSwwQkFBa0IsRUFBQyxHQUFHLEVBQUUsOENBQXNCLENBQUMsc0JBQXNCLEVBQUUsVUFBVSxFQUFFOzRCQUNsRyxhQUFhLEVBQUUsV0FBVzs0QkFDMUIsS0FBSyxFQUFFLEdBQUcsR0FBRyxlQUFlOzRCQUM1QixhQUFhLEVBQUUsR0FBRyxHQUFHLGVBQWU7NEJBQ3BDLEtBQUssRUFBRSxxQkFBcUI7eUJBQzdCLENBQUMsQ0FBQzt3QkFDSCxJQUFBLHlCQUFpQixFQUFDLFFBQVEsRUFBRSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsR0FBRyxJQUFJLENBQUMsRUFBRTs0QkFDbkcsT0FBTyxFQUFFLHFEQUFxRDs0QkFDOUQsZUFBZSxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxxQkFBcUIsRUFBRTt5QkFDdkQsQ0FBQyxDQUFDO29CQUNMLENBQUM7b0JBQ0QsT0FBTztnQkFDVCxDQUFDO2dCQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzdDLElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO29CQUNuQixNQUFNLEVBQUUsR0FBRyxhQUE0QixDQUFDO29CQUN4QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDaEQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUEsc0JBQWMsRUFBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDaEYsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLFlBQVksRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO29CQUMvQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxlQUFlLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQ2hGLE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxlQUFlLEVBQUUsZUFBZSxLQUFLLElBQUksQ0FBQztvQkFDNUUsSUFBSSxlQUFlLEdBQUcsQ0FBQyxJQUFJLFNBQVMsS0FBSyxFQUFFLEVBQUUsQ0FBQzt3QkFDNUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsS0FBSyxzQkFBc0IsRUFBRSxDQUFDOzRCQUMxRCxJQUFJLENBQUMsNEJBQTRCLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7d0JBQ25FLENBQUM7NkJBQU0sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsS0FBSyxXQUFXLElBQUksZUFBZSxFQUFFLENBQUM7NEJBQ3pFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQzt3QkFDdkQsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDLENBQUM7aUJBQ0QsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFjLEVBQUUsRUFBRTtnQkFDOUIsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDaEQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsNkRBQTZELEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzdGLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUVNLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxHQUFXLEVBQUUsTUFBbUIsRUFBRSxPQUFnQyxFQUFFLElBQWU7WUFDM0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QyxNQUFNLEVBQUUsR0FBRyxNQUFxQixDQUFDO1lBQ2pDLElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNuQixPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFLEVBQTZCLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUMzRixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBQSxzQkFBYyxFQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRixJQUFJLFNBQVMsS0FBSyxFQUFFLEVBQUUsQ0FBQztvQkFDckIsT0FBTyxNQUFNLENBQUM7Z0JBQ2hCLENBQUM7Z0JBQ0QsTUFBTSxVQUFVLEdBQUcsSUFBQSwwQkFBZ0IsRUFBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxrQkFBa0IsRUFBRSw4QkFBOEIsQ0FBQyxDQUFDO2dCQUMxRyxNQUFNLFFBQVEsR0FBRyxJQUFBLDBCQUFrQixFQUFDLEdBQUcsRUFBRSw4Q0FBc0IsQ0FBQyx1QkFBdUIsRUFBRSxVQUFVLEVBQUU7b0JBQ25HLGFBQWEsRUFBRSw4QkFBOEI7b0JBQzdDLEtBQUssRUFBRSxHQUFHLEdBQUcsa0JBQWtCO29CQUMvQixTQUFTO29CQUNULEtBQUssRUFBRSx3QkFBd0I7aUJBQ2hDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUM7b0JBQ0gsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO29CQUNyRSxJQUFBLDZCQUFxQixFQUFDLFFBQVEsRUFBRTt3QkFDOUIsT0FBTyxFQUFFLGdFQUFnRTt3QkFDekUsZUFBZSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRTtxQkFDaEUsQ0FBQyxDQUFDO29CQUNILE9BQU8sYUFBYSxDQUFDO2dCQUN2QixDQUFDO2dCQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7b0JBQ2YsSUFBQSx5QkFBaUIsRUFBQyxRQUFRLEVBQUUsS0FBSyxFQUFFO3dCQUNqQyxPQUFPLEVBQUUsZ0RBQWdEO3dCQUN6RCxXQUFXLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQzt3QkFDbkUsZUFBZSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRTtxQkFDaEUsQ0FBQyxDQUFDO29CQUNILE1BQU0sS0FBSyxDQUFDO2dCQUNkLENBQUM7WUFDSCxDQUFDO1lBQ0QsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUVNLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxHQUFnQjtZQUN0RCxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQztZQUM5QixJQUFJLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ2pFLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1FQUFtRSxDQUFDLENBQUM7Z0JBQ3BGLE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7WUFDM0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7WUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQWlCLENBQUM7WUFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUNoQixLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxrSEFBa0gsQ0FBQyxDQUFDO2dCQUNwSSxPQUFPO1lBQ1QsQ0FBQztZQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0sY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQWdCLENBQUM7WUFDaEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QyxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDbkIsT0FBTztZQUNULENBQUM7WUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFBLDBCQUFnQixFQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLGNBQWMsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO1lBQ3hHLE1BQU0sUUFBUSxHQUFHLElBQUEsMEJBQWtCLEVBQUMsR0FBRyxFQUFFLDhDQUFzQixDQUFDLDBCQUEwQixFQUFFLFVBQVUsRUFBRTtnQkFDdEcsYUFBYSxFQUFFLDRCQUE0QjtnQkFDM0MsS0FBSyxFQUFFLEdBQUcsR0FBRyxjQUFjO2dCQUMzQixhQUFhLEVBQUUsR0FBRyxHQUFHLGNBQWM7Z0JBQ25DLFNBQVM7Z0JBQ1QsS0FBSyxFQUFFLFNBQVM7YUFDakIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsR0FBRyw0Q0FBNEMsQ0FBQyxDQUFDO2dCQUN0SCxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ2pELElBQUEseUJBQWlCLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBRTtvQkFDakMsT0FBTyxFQUFFLDRDQUE0QztvQkFDckQsV0FBVyxFQUFFLEtBQUssQ0FBQyxPQUFPO29CQUMxQixlQUFlLEVBQUU7d0JBQ2YsU0FBUzt3QkFDVCxhQUFhLEVBQUUsR0FBRyxHQUFHLGNBQWM7d0JBQ25DLEtBQUssRUFBRSxTQUFTO3FCQUNqQjtpQkFDRixDQUFDLENBQUM7Z0JBQ0gsT0FBTztZQUNULENBQUM7WUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLGNBQWMsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO1lBQ25HLElBQUksQ0FBQztnQkFDSCxNQUFNLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3JFLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxDQUFDLEtBQUssWUFBWSxxQ0FBaUIsQ0FBQyxFQUFFLENBQUM7b0JBQzFDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2hELElBQUEseUJBQWlCLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBRTt3QkFDakMsT0FBTyxFQUFFLHlFQUF5RTt3QkFDbEYsV0FBVyxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7d0JBQ25FLGNBQWMsRUFBRSxZQUFZLENBQUMsVUFBVTt3QkFDdkMsZUFBZSxFQUFFOzRCQUNmLFNBQVM7NEJBQ1QsYUFBYSxFQUFFLEdBQUcsR0FBRyxjQUFjOzRCQUNuQyxLQUFLLEVBQUUsc0JBQXNCOzRCQUM3QixHQUFHLENBQUMsWUFBWSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3lCQUN6RjtxQkFDRixDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLHdDQUF3QyxDQUFDLENBQUMsQ0FBQztnQkFDNUYsQ0FBQztnQkFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsU0FBUyxnRUFBZ0UsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDMUgsSUFBSSxDQUFDO29CQUNILElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDakUsT0FBTztnQkFDVCxDQUFDO2dCQUFDLE9BQU8sVUFBVSxFQUFFLENBQUM7b0JBQ3BCLElBQUEseUJBQWlCLEVBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRTt3QkFDdEMsT0FBTyxFQUFFLG1HQUFtRzt3QkFDNUcsV0FBVyxFQUFFLFVBQVUsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7d0JBQ2xGLGVBQWUsRUFBRTs0QkFDZixTQUFTOzRCQUNULGFBQWEsRUFBRSxHQUFHLEdBQUcsY0FBYzs0QkFDbkMsS0FBSyxFQUFFLFNBQVM7NEJBQ2hCLFdBQVcsRUFBRSxLQUFLO3lCQUNuQjtxQkFDRixDQUFDLENBQUM7b0JBQ0gsTUFBTSxVQUFVLENBQUM7Z0JBQ25CLENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxDQUFDO2dCQUNILE1BQU0sYUFBYSxHQUFHLE1BQU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2pFLE1BQU0sT0FBTyxHQUFHLE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbkQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO2dCQUNyRSxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN6RSxJQUFJLFNBQVMsS0FBSyxLQUFLLEVBQUUsQ0FBQztvQkFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3REFBd0QsR0FBRyxJQUFJLENBQUMsQ0FBQztnQkFDbkYsQ0FBQztnQkFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQ3JELElBQUEsNkJBQXFCLEVBQUMsUUFBUSxFQUFFO29CQUM5QixPQUFPLEVBQUUsNERBQTREO29CQUNyRSxlQUFlLEVBQUU7d0JBQ2YsU0FBUzt3QkFDVCxhQUFhLEVBQUUsR0FBRyxHQUFHLGNBQWM7d0JBQ25DLGFBQWE7d0JBQ2IsYUFBYSxFQUFFLElBQUk7cUJBQ3BCO2lCQUNGLENBQUMsQ0FBQztZQUNMLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hELElBQUEseUJBQWlCLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBRTtvQkFDakMsT0FBTyxFQUFFLDRDQUE0QztvQkFDckQsV0FBVyxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7b0JBQ25FLGNBQWMsRUFBRSxZQUFZLENBQUMsVUFBVTtvQkFDdkMsZUFBZSxFQUFFO3dCQUNmLFNBQVM7d0JBQ1QsYUFBYSxFQUFFLEdBQUcsR0FBRyxjQUFjO3dCQUNuQyxLQUFLLEVBQUUsU0FBUzt3QkFDaEIsR0FBRyxDQUFDLFlBQVksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztxQkFDekY7aUJBQ0YsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLENBQUM7WUFDdkYsQ0FBQztRQUNILENBQUM7UUFFTSxLQUFLLENBQUMscUJBQXFCLENBQUMsR0FBZ0I7WUFDakQsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUM7WUFDOUIsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNqRSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDO2dCQUNwRixPQUFPO1lBQ1QsQ0FBQztZQUVELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDO1lBQzNCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1lBQ25DLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFpQixDQUFDO1lBQ3BDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDaEIsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLE1BQU0sR0FBRyxNQUFNLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFnQixDQUFDO1lBQzlELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdEMsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ25CLE9BQU87WUFDVCxDQUFDO1lBQ0QsTUFBTSxVQUFVLEdBQUcsSUFBQSwwQkFBZ0IsRUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxjQUFjLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztZQUNuRyxNQUFNLFFBQVEsR0FBRyxJQUFBLDBCQUFrQixFQUFDLEdBQUcsRUFBRSw4Q0FBc0IsQ0FBQyx1QkFBdUIsRUFBRSxVQUFVLEVBQUU7Z0JBQ25HLGFBQWEsRUFBRSx1QkFBdUI7Z0JBQ3RDLEtBQUssRUFBRSxHQUFHLEdBQUcsY0FBYztnQkFDM0IsYUFBYSxFQUFFLEdBQUcsR0FBRyxjQUFjO2dCQUNuQyxTQUFTO2dCQUNULEtBQUssRUFBRSx3QkFBd0I7YUFDaEMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDO2dCQUNILE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFnQixDQUFDO2dCQUMzRSxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNsRSxJQUFJLFNBQVMsS0FBSyxLQUFLLEVBQUUsQ0FBQztvQkFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3REFBd0QsR0FBRyxJQUFJLENBQUMsQ0FBQztnQkFDbkYsQ0FBQztnQkFDRCxJQUFBLDZCQUFxQixFQUFDLFFBQVEsRUFBRTtvQkFDOUIsT0FBTyxFQUFFLDREQUE0RDtvQkFDckUsZUFBZSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsd0JBQXdCLEVBQUU7aUJBQ3pFLENBQUMsQ0FBQztZQUNMLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLElBQUEseUJBQWlCLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBRTtvQkFDakMsT0FBTyxFQUFFLDRDQUE0QztvQkFDckQsV0FBVyxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7b0JBQ25FLGVBQWUsRUFBRSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFO2lCQUN6RSxDQUFDLENBQUM7Z0JBQ0gsTUFBTSxLQUFLLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUVNLDRCQUE0QixDQUFDLEdBQVcsRUFBRSxTQUFpQixFQUFFLElBQWUsRUFBRSxPQUFlO1lBQ2xHLE1BQU0sWUFBWSxHQUFHLElBQUEsdUNBQStCLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDcEYsTUFBTSxPQUFPLEdBQUcscUNBQXFDLENBQUM7WUFDdEQsTUFBTSxNQUFNLEdBQUc7Z0JBQ2IsWUFBWSxFQUFFLEVBQUUsT0FBTyxFQUFFO2FBQ1gsQ0FBQztZQUNqQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLHVCQUF1QixJQUFJLGNBQWMsQ0FBQyxDQUFDO1lBQ25GLElBQUksVUFBVSxLQUFLLFdBQVcsRUFBRSxDQUFDO2dCQUMvQixrQkFBa0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ2hELENBQUM7aUJBQU0sQ0FBQztnQkFDTixrQkFBa0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUNqRSxDQUFDO1FBQ0gsQ0FBQztRQUVNLGdCQUFnQixDQUFDLEdBQVcsRUFBRSxJQUFlLEVBQUUsT0FBZSxFQUFFLFNBQWlCO1lBQ3RGLE1BQU0sWUFBWSxHQUFHLElBQUEsK0JBQXVCLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDNUUsTUFBTSxPQUFPLEdBQUcsdUNBQXVDLENBQUM7WUFDeEQsTUFBTSxNQUFNLEdBQUc7Z0JBQ2IsWUFBWSxFQUFFLEVBQUUsT0FBTyxFQUFFO2FBQ1gsQ0FBQztZQUNqQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLHlCQUF5QixJQUFJLGNBQWMsQ0FBQyxDQUFDO1lBQ3JGLElBQUksVUFBVSxLQUFLLFdBQVcsRUFBRSxDQUFDO2dCQUMvQixrQkFBa0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ2hELENBQUM7aUJBQU0sQ0FBQztnQkFDTixrQkFBa0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUNqRSxDQUFDO1FBQ0gsQ0FBQztRQUVNLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxJQUE2QjtZQUNqRyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsWUFBWSxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxFQUFpQixDQUFDLENBQUM7WUFDOUYsTUFBTSxTQUFTLEdBQUcsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQWdDLENBQUM7WUFDL0YsSUFBSSxDQUFDLElBQUEseUNBQThCLEVBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDL0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsNkZBQTZGLENBQUMsQ0FBQztnQkFDOUcsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNoQixNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ2hCLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQztnQkFDdkIsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7Z0JBQzlDLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO2dCQUM5QyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztnQkFDMUMsTUFBTSxzQkFBc0IsR0FBRyxTQUFTLENBQUMsc0JBQXNCLElBQUksRUFBRSxDQUFDO2dCQUN0RSxNQUFNLHdCQUF3QixHQUFHLFNBQVMsQ0FBQyx3QkFBd0IsSUFBSSxFQUFFLENBQUM7Z0JBQzFFLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO2dCQUMxQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztnQkFDMUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxZQUFZLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBRTFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLElBQUksRUFBRSxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQ3hELEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLDBFQUEwRSxRQUFRLGVBQWUsUUFBUSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQ3BKLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxNQUFNLGdCQUFnQixHQUFHLE1BQU0saUJBQWlCLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUN4RixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDdEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsNkJBQTZCLFVBQVUsNkNBQTZDLENBQUMsQ0FBQztvQkFDdEcsT0FBTztnQkFDVCxDQUFDO2dCQUNELE1BQU0sWUFBWSxHQUFHLE1BQU0saUJBQWlCLENBQUMsa0NBQWtDLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBRTlKLEtBQUssTUFBTSxXQUFXLElBQUksWUFBWSxFQUFFLENBQUM7b0JBQ3ZDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUMxQyxJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FBQzt3QkFDZixTQUFTO29CQUNYLENBQUM7b0JBQ0QsSUFBSSxRQUFRLEdBQTBDLElBQUksQ0FBQztvQkFDM0QsSUFBSSxDQUFDO3dCQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQWdCLENBQUM7d0JBQ2hFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQ3RDLElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDOzRCQUNuQixTQUFTO3dCQUNYLENBQUM7d0JBQ0QsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUEsc0JBQWMsRUFBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQzt3QkFDcEYsTUFBTSxVQUFVLEdBQUcsSUFBQSwwQkFBZ0IsRUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxzQkFBc0IsRUFBRSwwREFBMEQsQ0FBQyxDQUFDO3dCQUM5SSxRQUFRLEdBQUcsSUFBQSwwQkFBa0IsRUFBQyxHQUFHLEVBQUUsOENBQXNCLENBQUMsd0RBQXdELEVBQUUsVUFBVSxFQUFFOzRCQUM5SCxhQUFhLEVBQUUsMERBQTBEOzRCQUN6RSxLQUFLLEVBQUUsR0FBRyxHQUFHLHNCQUFzQjs0QkFDbkMsYUFBYSxFQUFFLEdBQUcsR0FBRyxzQkFBc0I7NEJBQzNDLFNBQVM7NEJBQ1QsVUFBVTs0QkFDVixLQUFLLEVBQUUscUJBQXFCO3lCQUM3QixDQUFDLENBQUM7d0JBQ0gsTUFBTSxJQUFJLENBQUMsMkJBQTJCLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxzQkFBc0IsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO3dCQUNuSSxJQUFBLDZCQUFxQixFQUFDLFFBQVEsRUFBRTs0QkFDOUIsT0FBTyxFQUFFLHFFQUFxRTs0QkFDOUUsZUFBZSxFQUFFLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUU7eUJBQ3pFLENBQUMsQ0FBQztvQkFDTCxDQUFDO29CQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7d0JBQ2YsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsK0ZBQStGLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO3dCQUM1SCxJQUFBLHlCQUFpQixFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUU7NEJBQ2pDLE9BQU8sRUFBRSxxREFBcUQ7NEJBQzlELFdBQVcsRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDOzRCQUNuRSxlQUFlLEVBQUUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxxQkFBcUIsRUFBRTt5QkFDbkUsQ0FBQyxDQUFDO29CQUNMLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGdGQUFnRixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzNHLENBQUM7UUFDSCxDQUFDO0tBQ0Y7SUE1eUJZLHdCQUFlLGtCQTR5QjNCLENBQUE7QUFDSCxDQUFDLEVBOXlCZ0IsUUFBUSx3QkFBUixRQUFRLFFBOHlCeEI7QUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMifQ==
@@ -0,0 +1,442 @@
1
+ import { Services as services } from '../CoreService';
2
+ import * as fs from 'node:fs/promises';
3
+ import type { FigshareCategoryScope } from './figshare-v2/types';
4
+ import { FigshareTaxonomySummary } from './figshare-v2/categories';
5
+ export declare namespace Services {
6
+ /** One declared import in `bootstrap-data/vocabularies/figshare-imports.json`. */
7
+ interface BootstrapFigshareImportItem {
8
+ scope?: string;
9
+ taxonomyId?: string | number;
10
+ localCloneName?: string;
11
+ localCloneSlug?: string;
12
+ crosswalkName?: string;
13
+ }
14
+ interface BootstrapFigshareImportsFile {
15
+ imports?: BootstrapFigshareImportItem[];
16
+ }
17
+ interface ActorContext {
18
+ brandId: string;
19
+ userId: string;
20
+ }
21
+ interface CreatePreviewInput {
22
+ scope: FigshareCategoryScope;
23
+ taxonomyId: string;
24
+ sourceId?: string;
25
+ crosswalkId?: string;
26
+ localVocabularyId?: string;
27
+ createLocalClone?: boolean;
28
+ localCloneName?: string;
29
+ localCloneSlug?: string;
30
+ }
31
+ interface SyncPreviewSummary {
32
+ added: number;
33
+ changed: number;
34
+ removed: number;
35
+ reappeared: number;
36
+ unchanged: number;
37
+ proposed: number;
38
+ preselected: number;
39
+ unresolved: number;
40
+ historicalWarnings: number;
41
+ }
42
+ interface SyncPreview {
43
+ runId: string;
44
+ state: string;
45
+ scope: FigshareCategoryScope | string;
46
+ taxonomyId: string;
47
+ sourceId?: string | null;
48
+ localVocabularyId?: string | null;
49
+ crosswalkId?: string | null;
50
+ createLocalClone: boolean;
51
+ baseHash: string;
52
+ remoteHash: string;
53
+ expiresAt: string;
54
+ normalizerVersion: string;
55
+ summary: SyncPreviewSummary;
56
+ warnings: unknown[];
57
+ }
58
+ interface PreviewPageQuery {
59
+ view?: 'proposals' | 'diff';
60
+ changeClass?: string;
61
+ matchType?: string;
62
+ q?: string;
63
+ unresolvedOnly?: boolean;
64
+ historicalOnly?: boolean;
65
+ limit?: number;
66
+ offset?: number;
67
+ }
68
+ interface PagedPreview extends SyncPreview {
69
+ page: {
70
+ view: 'proposals' | 'diff';
71
+ records: unknown[];
72
+ total: number;
73
+ limit: number;
74
+ offset: number;
75
+ };
76
+ unresolved: Array<{
77
+ localEntryId: string;
78
+ localLabel: string;
79
+ localValue: string;
80
+ }>;
81
+ }
82
+ interface ManualMappingInput {
83
+ localEntryId?: string;
84
+ /** Clone identity fallback: the remote sourceId whose cloned entry should be mapped. */
85
+ localEntryKey?: string;
86
+ figshareSourceIds: string[];
87
+ }
88
+ interface ApplyDecisions {
89
+ remoteHash: string;
90
+ expectedRevision?: number;
91
+ approvedProposalIds?: string[];
92
+ manualMappings?: ManualMappingInput[];
93
+ }
94
+ interface ApplyResult {
95
+ runId: string;
96
+ state: string;
97
+ sourceId: string;
98
+ vocabularyId: string;
99
+ localVocabularyId?: string | null;
100
+ crosswalkId?: string | null;
101
+ crosswalkRevision?: number | null;
102
+ categories: {
103
+ created: number;
104
+ updated: number;
105
+ historical: number;
106
+ reappeared: number;
107
+ };
108
+ mappings: {
109
+ created: number;
110
+ removed: number;
111
+ };
112
+ cloneCreated: boolean;
113
+ appliedAt: string;
114
+ }
115
+ interface CrosswalkSummary {
116
+ id: string;
117
+ name: string;
118
+ status: string;
119
+ workingRevision: number;
120
+ approvedRevision?: number | null;
121
+ approvedAt?: string;
122
+ approvedBy?: string;
123
+ localVocabularyId: string;
124
+ localVocabularyName: string;
125
+ figshareSourceId: string;
126
+ figshareSourceName: string;
127
+ scope: string;
128
+ taxonomyId: string;
129
+ approvedMappingCount: number;
130
+ workingMappingCount: number;
131
+ historicalTargetCount: number;
132
+ }
133
+ interface CrosswalkMappingChange {
134
+ op: 'add' | 'remove';
135
+ localEntryId: string;
136
+ figshareCategoryId: string;
137
+ matchType?: string;
138
+ status?: 'proposed' | 'approved' | 'rejected';
139
+ }
140
+ /** One selectable Figshare target offered by the manual mapping picker. */
141
+ interface SourceCategoryOption {
142
+ id: string;
143
+ sourceId: string;
144
+ categoryId: number;
145
+ title: string;
146
+ parentSourceId?: string;
147
+ selectable: boolean;
148
+ historical: boolean;
149
+ }
150
+ /** One local vocabulary term offered by the manual mapping picker. */
151
+ interface CrosswalkLocalEntryOption {
152
+ id: string;
153
+ label: string;
154
+ value: string;
155
+ identifier?: string;
156
+ historical: boolean;
157
+ /** Targets already mapped to this term in the requested revision. */
158
+ targetCount: number;
159
+ }
160
+ interface CrosswalkUsage {
161
+ brandName: string;
162
+ configKey: string;
163
+ /** Dotted path of the crosswalk binding within the config, e.g. `metadata.categories.source`. */
164
+ bindingPath: string;
165
+ outputs?: string;
166
+ sourceVocabularyId?: string;
167
+ }
168
+ interface ResolveCategoriesInput {
169
+ brandId: string;
170
+ crosswalkId: string;
171
+ sourceVocabularyId: string;
172
+ codes: string[];
173
+ }
174
+ interface ResolveCategoriesResult {
175
+ categoryIds: number[];
176
+ unresolvedCodes: string[];
177
+ historicalTargets: Array<{
178
+ code: string;
179
+ categoryId: number;
180
+ sourceId: string;
181
+ }>;
182
+ }
183
+ type CrosswalkOutput = 'categoryId' | 'label' | 'sourceId';
184
+ interface ResolveCrosswalkValuesInput extends ResolveCategoriesInput {
185
+ outputs: CrosswalkOutput;
186
+ }
187
+ interface ResolveCrosswalkValuesResult {
188
+ values: Array<number | string>;
189
+ normalizedCodes: string[];
190
+ unresolvedCodes: string[];
191
+ historicalTargets: Array<{
192
+ code: string;
193
+ categoryId: number;
194
+ sourceId: string;
195
+ }>;
196
+ }
197
+ class FigshareVocabularyService extends services.Core.Service {
198
+ protected _exportedMethods: string[];
199
+ private getDatastore;
200
+ private runQuery;
201
+ private createOne;
202
+ private nowIso;
203
+ private resolveBrandName;
204
+ private buildRunContext;
205
+ /**
206
+ * Resolve a Figshare client for catalogue reads. The client is always built from
207
+ * trusted deployment configuration; a request never supplies a base URL or token.
208
+ */
209
+ private resolveClient;
210
+ private fetchCatalogue;
211
+ private assertScope;
212
+ private parsePaging;
213
+ private requireSource;
214
+ private requireCrosswalk;
215
+ private requireLocalVocabulary;
216
+ private requireRun;
217
+ /** Expiry is enforced synchronously; no scheduled job is introduced. */
218
+ private pruneExpiredRuns;
219
+ private transitionRun;
220
+ discoverTaxonomies(input: {
221
+ scope: FigshareCategoryScope;
222
+ }, ctx: ActorContext): Promise<FigshareTaxonomySummary[]>;
223
+ private loadSnapshot;
224
+ private loadExistingCategories;
225
+ private loadLocalEntries;
226
+ /**
227
+ * A brand may only mirror a given catalogue once, so an import that names no explicit
228
+ * source still has to bind the existing mirror instead of creating a second one.
229
+ */
230
+ private findSourceForCatalogue;
231
+ /**
232
+ * Likewise, a local vocabulary is crosswalked to a mirror at most once; re-running the
233
+ * wizard for an existing pairing resynchronises that crosswalk rather than forking it.
234
+ */
235
+ private findCrosswalkForPairing;
236
+ /**
237
+ * Resolve which of the mutually exclusive preview modes was requested.
238
+ *
239
+ * Four shapes are accepted: an explicit crosswalk resync, a mirror-only resync
240
+ * (`sourceId` with no local target), an existing local vocabulary, and a new clone.
241
+ */
242
+ private resolvePreviewMode;
243
+ createPreview(input: CreatePreviewInput, ctx: ActorContext): Promise<SyncPreview>;
244
+ private toSyncPreview;
245
+ getPreview(runId: string, query: PreviewPageQuery, ctx: ActorContext): Promise<PagedPreview>;
246
+ private dedupeLabel;
247
+ applyPreview(runId: string, decisions: ApplyDecisions, ctx: ActorContext): Promise<ApplyResult>;
248
+ /** Best-effort cleanup for datastores without transaction support. */
249
+ private compensate;
250
+ private applyPreviewWork;
251
+ private syncMirror;
252
+ private relabelExisting;
253
+ private createCloneVocabulary;
254
+ private uniqueCrosswalkName;
255
+ private writeMappingEdges;
256
+ listSources(query: {
257
+ q?: string;
258
+ scope?: string;
259
+ limit?: number;
260
+ offset?: number;
261
+ }, ctx: ActorContext): Promise<{
262
+ data: unknown[];
263
+ meta: {
264
+ total: number;
265
+ limit: number;
266
+ offset: number;
267
+ };
268
+ }>;
269
+ getSource(sourceId: string, ctx: ActorContext): Promise<unknown>;
270
+ /**
271
+ * Search the mirrored categories of one source so an operator can pick a manual
272
+ * crosswalk target. Historical targets stay hidden unless explicitly requested:
273
+ * mapping to a retired Figshare category is a deliberate act, not a default.
274
+ */
275
+ listSourceCategories(sourceId: string, query: {
276
+ q?: string;
277
+ includeHistorical?: boolean;
278
+ selectableOnly?: boolean;
279
+ limit?: number;
280
+ offset?: number;
281
+ }, ctx: ActorContext): Promise<{
282
+ data: SourceCategoryOption[];
283
+ meta: {
284
+ total: number;
285
+ limit: number;
286
+ offset: number;
287
+ };
288
+ }>;
289
+ /** Mirrored category titles live on the linked vocabulary entry, not the category row. */
290
+ private loadCategoryTitles;
291
+ private describeSource;
292
+ listSyncRuns(query: {
293
+ sourceId?: string;
294
+ limit?: number;
295
+ offset?: number;
296
+ }, ctx: ActorContext): Promise<{
297
+ data: unknown[];
298
+ meta: {
299
+ total: number;
300
+ limit: number;
301
+ offset: number;
302
+ };
303
+ }>;
304
+ /**
305
+ * Create an independent editable local vocabulary from an existing mirror plus a
306
+ * draft identity crosswalk. Later mirror synchronisation never edits clone terms.
307
+ */
308
+ cloneMirror(sourceId: string, cloneInput: {
309
+ name: string;
310
+ slug?: string;
311
+ }, ctx: ActorContext): Promise<{
312
+ localVocabularyId: string;
313
+ crosswalkId: string;
314
+ entries: number;
315
+ }>;
316
+ listCrosswalks(query: {
317
+ q?: string;
318
+ status?: string;
319
+ localVocabularyId?: string;
320
+ sourceId?: string;
321
+ limit?: number;
322
+ offset?: number;
323
+ }, ctx: ActorContext): Promise<{
324
+ data: CrosswalkSummary[];
325
+ meta: {
326
+ total: number;
327
+ limit: number;
328
+ offset: number;
329
+ };
330
+ }>;
331
+ getCrosswalk(crosswalkId: string, ctx: ActorContext): Promise<CrosswalkSummary>;
332
+ private describeCrosswalk;
333
+ private countHistoricalTargets;
334
+ createCrosswalk(input: {
335
+ name: string;
336
+ localVocabularyId: string;
337
+ sourceId: string;
338
+ }, ctx: ActorContext): Promise<CrosswalkSummary>;
339
+ /**
340
+ * Search the local vocabulary behind a crosswalk, annotated with how many targets
341
+ * each term already has. Terms with no target never appear in the mapping table,
342
+ * so this is the only way the manual picker can reach them.
343
+ */
344
+ listCrosswalkLocalEntries(crosswalkId: string, query: {
345
+ q?: string;
346
+ mapped?: string;
347
+ revision?: number;
348
+ limit?: number;
349
+ offset?: number;
350
+ }, ctx: ActorContext): Promise<{
351
+ data: CrosswalkLocalEntryOption[];
352
+ meta: {
353
+ total: number;
354
+ limit: number;
355
+ offset: number;
356
+ revision: number;
357
+ };
358
+ }>;
359
+ listCrosswalkMappings(crosswalkId: string, query: {
360
+ status?: string;
361
+ q?: string;
362
+ revision?: number;
363
+ limit?: number;
364
+ offset?: number;
365
+ }, ctx: ActorContext): Promise<{
366
+ data: unknown[];
367
+ meta: {
368
+ total: number;
369
+ limit: number;
370
+ offset: number;
371
+ revision: number;
372
+ };
373
+ }>;
374
+ /**
375
+ * Batch upsert/delete mapping edges under optimistic revision control. The first
376
+ * edit of an approved crosswalk copies the approved rows into a new working
377
+ * revision so publishing continues against the previous approved snapshot.
378
+ */
379
+ saveMappings(crosswalkId: string, input: {
380
+ revision: number;
381
+ changes: CrosswalkMappingChange[];
382
+ }, ctx: ActorContext): Promise<CrosswalkSummary>;
383
+ private assertMappingOwnership;
384
+ /**
385
+ * Promote the working revision to the approved revision. AppConfig keeps its stable
386
+ * crosswalkId; publishing immediately follows the newly approved revision.
387
+ */
388
+ approveCrosswalk(crosswalkId: string, revision: number, ctx: ActorContext): Promise<CrosswalkSummary>;
389
+ /**
390
+ * Collect the dotted paths of every crosswalk binding in a config that selects
391
+ * `crosswalkId`. A crosswalk can now be referenced by any binding, not just the
392
+ * categories one, so the whole config tree has to be walked.
393
+ */
394
+ private collectCrosswalkBindings;
395
+ /** Report the Figshare publishing bindings that select this crosswalk. */
396
+ getCrosswalkUsage(crosswalkId: string, ctx: ActorContext): Promise<CrosswalkUsage[]>;
397
+ /** Draft crosswalks are deleted; approved ones archive to protect AppConfig references. */
398
+ deleteCrosswalk(crosswalkId: string, ctx: ActorContext): Promise<void>;
399
+ /**
400
+ * Resolve record codes to the Figshare categories they map to through the
401
+ * approved revision of a crosswalk. Working revisions are never consulted.
402
+ *
403
+ * Shared by every output mode: the caller decides whether to emit the numeric
404
+ * category ID, the mirrored label, or the Figshare source ID.
405
+ */
406
+ private resolveCrosswalkTargets;
407
+ /**
408
+ * Resolve record category codes to numeric Figshare category IDs. Retained as
409
+ * the stable narrow surface over {@link resolveCrosswalkValues}.
410
+ */
411
+ resolveCategories(input: ResolveCategoriesInput): Promise<ResolveCategoriesResult>;
412
+ /**
413
+ * Resolve record codes through a crosswalk into the values a publishing binding
414
+ * asks for. Historical targets are excluded from `values` in every mode and
415
+ * reported separately so the caller can decide whether they are fatal.
416
+ */
417
+ resolveCrosswalkValues(input: ResolveCrosswalkValuesInput): Promise<ResolveCrosswalkValuesResult>;
418
+ private getBootstrapDataPath;
419
+ /** Overridable seam so unit tests can drive bootstrapData() without touching disk. */
420
+ protected getBootstrapFileOps(): Pick<typeof fs, 'readFile'>;
421
+ private resolveDefaultBrandingId;
422
+ /**
423
+ * Declaratively import Figshare taxonomies listed in
424
+ * `<bootstrapDataPath>/vocabularies/figshare-imports.json` during the Sails lift.
425
+ *
426
+ * Each item produces a read-only mirror, an editable local clone, and an approved
427
+ * identity crosswalk - the state a fresh environment needs for Figshare publishing to
428
+ * resolve categories without an administrator visiting the admin UI.
429
+ *
430
+ * Idempotent: an item whose FigshareVocabularySource already exists is skipped, so a
431
+ * restart never re-syncs or forks admin-curated crosswalks. Nothing here throws - a
432
+ * bootstrap importer must not be able to fail the lift.
433
+ */
434
+ bootstrapData(): Promise<void>;
435
+ private processBootstrapImport;
436
+ private runBootstrapImport;
437
+ }
438
+ }
439
+ declare global {
440
+ let FigshareVocabularyService: Services.FigshareVocabularyService;
441
+ }
442
+ //# sourceMappingURL=FigshareVocabularyService.d.ts.map