@decaf-ts/for-fabric 0.1.78 → 0.1.79

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 (415) hide show
  1. package/dist/for-fabric.cjs +3048 -2
  2. package/dist/for-fabric.js +3138 -2
  3. package/lib/bin/cli.cjs +2 -1
  4. package/lib/cli-module.cjs +77 -68
  5. package/lib/cli-utils.cjs +1 -1
  6. package/lib/client/FabricClientAdapter.cjs +1 -1
  7. package/lib/client/FabricClientDispatch.cjs +1 -1
  8. package/lib/client/FabricClientPaginator.cjs +1 -1
  9. package/lib/client/FabricClientRepository.cjs +1 -1
  10. package/lib/client/FabricClientStatement.cjs +1 -1
  11. package/lib/client/collections/generation.cjs +1 -1
  12. package/lib/client/collections/index.cjs +1 -1
  13. package/lib/client/constants.cjs +1 -1
  14. package/lib/client/crypto.cjs +1 -1
  15. package/lib/client/erc20/FabricERC20ClientRepository.cjs +1 -1
  16. package/lib/client/erc20/index.cjs +1 -1
  17. package/lib/client/fabric-fs.cjs +1 -1
  18. package/lib/client/fabric-fs.d.ts +1 -1
  19. package/lib/client/fabric-hsm.cjs +1 -1
  20. package/lib/client/index.cjs +1 -1
  21. package/lib/client/indexes/generation.cjs +1 -1
  22. package/lib/client/indexes/index.cjs +1 -1
  23. package/lib/client/logging.cjs +1 -1
  24. package/lib/client/services/FabricEnrollmentService.cjs +1 -1
  25. package/lib/client/services/FabricIdentityService.cjs +1 -1
  26. package/lib/client/services/RegistrationRequestBuilder.cjs +1 -1
  27. package/lib/client/services/constants.cjs +1 -1
  28. package/lib/client/services/index.cjs +1 -1
  29. package/lib/client/types.cjs +1 -1
  30. package/lib/client/utils.cjs +1 -1
  31. package/lib/client/utils.d.ts +1 -1
  32. package/lib/contract/Address.cjs +1 -1
  33. package/lib/contract/AddressContract.cjs +1 -1
  34. package/lib/contract/BatchContract.cjs +1 -1
  35. package/lib/contract/OtherProductContract.cjs +1 -1
  36. package/lib/contract/OtherProductSharedContract.cjs +1 -1
  37. package/lib/contract/Product.cjs +1 -1
  38. package/lib/contract/ProductContract.cjs +1 -1
  39. package/lib/contract/SegregatedPrivateDocumentContract.cjs +1 -1
  40. package/lib/contract/SegregatedSharedDocumentContract.cjs +1 -1
  41. package/lib/contract/User.cjs +1 -1
  42. package/lib/contract/UserContract.cjs +1 -1
  43. package/lib/contract/index.cjs +1 -1
  44. package/lib/contract/models/Audit.cjs +1 -1
  45. package/lib/contract/models/BaseIdentifiedModel.cjs +1 -1
  46. package/lib/contract/models/BaseModel.cjs +1 -1
  47. package/lib/contract/models/Batch.cjs +1 -1
  48. package/lib/contract/models/Leaflet.cjs +1 -1
  49. package/lib/contract/models/LeafletFile.cjs +1 -1
  50. package/lib/contract/models/Market.cjs +1 -1
  51. package/lib/contract/models/OtherProduct.cjs +1 -1
  52. package/lib/contract/models/OtherProductShared.cjs +1 -1
  53. package/lib/contract/models/Product.cjs +1 -1
  54. package/lib/contract/models/ProductStrength.cjs +1 -1
  55. package/lib/contract/models/SegregatedDocument.cjs +1 -1
  56. package/lib/contract/models/constants.cjs +1 -1
  57. package/lib/contract/models/decorators.cjs +1 -1
  58. package/lib/contract/models/gtin.cjs +1 -1
  59. package/lib/contracts/ContractAdapter.cjs +1 -1
  60. package/lib/contracts/ContractContext.cjs +1 -1
  61. package/lib/contracts/ContractPrivateDataAdapter.cjs +1 -1
  62. package/lib/contracts/FabricConstruction.cjs +1 -1
  63. package/lib/contracts/FabricContractPaginator.cjs +1 -1
  64. package/lib/contracts/FabricContractRepository.cjs +1 -1
  65. package/lib/contracts/FabricContractRepositoryObservableHandler.cjs +1 -1
  66. package/lib/contracts/FabricContractSequence.cjs +1 -1
  67. package/lib/contracts/FabricContractStatement.cjs +1 -1
  68. package/lib/contracts/PrivateSequence.cjs +1 -1
  69. package/lib/contracts/crud/crud-contract.cjs +1 -1
  70. package/lib/contracts/crud/index.cjs +1 -1
  71. package/lib/contracts/crud/serialized-crud-contract.cjs +1 -1
  72. package/lib/contracts/erc20/erc20contract.cjs +1 -1
  73. package/lib/contracts/erc20/index.cjs +1 -1
  74. package/lib/contracts/erc20/models.cjs +1 -1
  75. package/lib/contracts/index.cjs +1 -1
  76. package/lib/contracts/logging.cjs +1 -1
  77. package/lib/contracts/overrides.cjs +1 -1
  78. package/lib/contracts/private-data.cjs +1 -1
  79. package/lib/contracts/types.cjs +1 -1
  80. package/lib/contracts/uuid.cjs +1 -1
  81. package/lib/esm/bin/cli.js +1 -1
  82. package/lib/esm/cli-module.js +77 -68
  83. package/lib/esm/cli-utils.js +1 -1
  84. package/lib/esm/client/FabricClientAdapter.js +1 -1
  85. package/lib/esm/client/FabricClientDispatch.js +1 -1
  86. package/lib/esm/client/FabricClientPaginator.js +1 -1
  87. package/lib/esm/client/FabricClientRepository.js +1 -1
  88. package/lib/esm/client/FabricClientStatement.js +1 -1
  89. package/lib/esm/client/collections/generation.js +1 -1
  90. package/lib/esm/client/collections/index.js +1 -1
  91. package/lib/esm/client/constants.js +1 -1
  92. package/lib/esm/client/crypto.js +1 -1
  93. package/lib/esm/client/erc20/FabricERC20ClientRepository.js +1 -1
  94. package/lib/esm/client/erc20/index.js +1 -1
  95. package/lib/esm/client/fabric-fs.d.ts +1 -1
  96. package/lib/esm/client/fabric-fs.js +1 -1
  97. package/lib/esm/client/fabric-hsm.js +1 -1
  98. package/lib/esm/client/index.js +1 -1
  99. package/lib/esm/client/indexes/generation.js +1 -1
  100. package/lib/esm/client/indexes/index.js +1 -1
  101. package/lib/esm/client/logging.js +1 -1
  102. package/lib/esm/client/services/FabricEnrollmentService.js +1 -1
  103. package/lib/esm/client/services/FabricIdentityService.js +1 -1
  104. package/lib/esm/client/services/RegistrationRequestBuilder.js +1 -1
  105. package/lib/esm/client/services/constants.js +1 -1
  106. package/lib/esm/client/services/index.js +1 -1
  107. package/lib/esm/client/types.js +1 -1
  108. package/lib/esm/client/utils.d.ts +1 -1
  109. package/lib/esm/client/utils.js +1 -1
  110. package/lib/esm/contract/Address.js +1 -1
  111. package/lib/esm/contract/AddressContract.js +1 -1
  112. package/lib/esm/contract/BatchContract.js +1 -1
  113. package/lib/esm/contract/OtherProductContract.js +1 -1
  114. package/lib/esm/contract/OtherProductSharedContract.js +1 -1
  115. package/lib/esm/contract/Product.js +1 -1
  116. package/lib/esm/contract/ProductContract.js +1 -1
  117. package/lib/esm/contract/SegregatedPrivateDocumentContract.js +1 -1
  118. package/lib/esm/contract/SegregatedSharedDocumentContract.js +1 -1
  119. package/lib/esm/contract/User.js +1 -1
  120. package/lib/esm/contract/UserContract.js +1 -1
  121. package/lib/esm/contract/index.js +1 -1
  122. package/lib/esm/contract/models/Audit.js +1 -1
  123. package/lib/esm/contract/models/BaseIdentifiedModel.js +1 -1
  124. package/lib/esm/contract/models/BaseModel.js +1 -1
  125. package/lib/esm/contract/models/Batch.js +1 -1
  126. package/lib/esm/contract/models/Leaflet.js +1 -1
  127. package/lib/esm/contract/models/LeafletFile.js +1 -1
  128. package/lib/esm/contract/models/Market.js +1 -1
  129. package/lib/esm/contract/models/OtherProduct.js +1 -1
  130. package/lib/esm/contract/models/OtherProductShared.js +1 -1
  131. package/lib/esm/contract/models/Product.js +1 -1
  132. package/lib/esm/contract/models/ProductStrength.js +1 -1
  133. package/lib/esm/contract/models/SegregatedDocument.js +1 -1
  134. package/lib/esm/contract/models/constants.js +1 -1
  135. package/lib/esm/contract/models/decorators.js +1 -1
  136. package/lib/esm/contract/models/gtin.js +1 -1
  137. package/lib/esm/contracts/ContractAdapter.js +1 -1
  138. package/lib/esm/contracts/ContractContext.js +1 -1
  139. package/lib/esm/contracts/ContractPrivateDataAdapter.js +1 -1
  140. package/lib/esm/contracts/FabricConstruction.js +1 -1
  141. package/lib/esm/contracts/FabricContractPaginator.js +1 -1
  142. package/lib/esm/contracts/FabricContractRepository.js +1 -1
  143. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js +1 -1
  144. package/lib/esm/contracts/FabricContractSequence.js +1 -1
  145. package/lib/esm/contracts/FabricContractStatement.js +1 -1
  146. package/lib/esm/contracts/PrivateSequence.js +1 -1
  147. package/lib/esm/contracts/crud/crud-contract.js +1 -1
  148. package/lib/esm/contracts/crud/index.js +1 -1
  149. package/lib/esm/contracts/crud/serialized-crud-contract.js +1 -1
  150. package/lib/esm/contracts/erc20/erc20contract.js +1 -1
  151. package/lib/esm/contracts/erc20/index.js +1 -1
  152. package/lib/esm/contracts/erc20/models.js +1 -1
  153. package/lib/esm/contracts/index.js +1 -1
  154. package/lib/esm/contracts/logging.js +1 -1
  155. package/lib/esm/contracts/overrides.js +1 -1
  156. package/lib/esm/contracts/private-data.js +1 -1
  157. package/lib/esm/contracts/types.js +1 -1
  158. package/lib/esm/contracts/uuid.js +1 -1
  159. package/lib/esm/index.js +1 -1
  160. package/lib/esm/shared/ClientSerializer.js +1 -1
  161. package/lib/esm/shared/DeterministicSerializer.js +1 -1
  162. package/lib/esm/shared/SimpleDeterministicSerializer.js +1 -1
  163. package/lib/esm/shared/constants.js +1 -1
  164. package/lib/esm/shared/decorators.js +1 -1
  165. package/lib/esm/shared/erc20/erc20-constants.js +1 -1
  166. package/lib/esm/shared/erc20/index.js +1 -1
  167. package/lib/esm/shared/errors.js +1 -1
  168. package/lib/esm/shared/events.js +1 -1
  169. package/lib/esm/shared/fabric-types.js +1 -1
  170. package/lib/esm/shared/index.js +1 -1
  171. package/lib/esm/shared/interfaces/Checkable.js +1 -1
  172. package/lib/esm/shared/interfaces/index.js +1 -1
  173. package/lib/esm/shared/math.js +1 -1
  174. package/lib/esm/shared/model/FabricBaseModel.js +1 -1
  175. package/lib/esm/shared/model/FabricIdentifiedBaseModel.js +1 -1
  176. package/lib/esm/shared/model/Identity.js +1 -1
  177. package/lib/esm/shared/model/IdentityCredentials.js +1 -1
  178. package/lib/esm/shared/model/index.js +1 -1
  179. package/lib/esm/shared/overrides/Model.js +1 -1
  180. package/lib/esm/shared/overrides/index.js +1 -1
  181. package/lib/esm/shared/overrides/overrides.js +1 -1
  182. package/lib/esm/shared/types.js +1 -1
  183. package/lib/esm/version.d.ts +1 -1
  184. package/lib/esm/version.js +2 -2
  185. package/lib/index.cjs +1 -1
  186. package/lib/shared/ClientSerializer.cjs +1 -1
  187. package/lib/shared/DeterministicSerializer.cjs +1 -1
  188. package/lib/shared/SimpleDeterministicSerializer.cjs +1 -1
  189. package/lib/shared/constants.cjs +1 -1
  190. package/lib/shared/decorators.cjs +1 -1
  191. package/lib/shared/erc20/erc20-constants.cjs +1 -1
  192. package/lib/shared/erc20/index.cjs +1 -1
  193. package/lib/shared/errors.cjs +1 -1
  194. package/lib/shared/events.cjs +1 -1
  195. package/lib/shared/fabric-types.cjs +1 -1
  196. package/lib/shared/index.cjs +1 -1
  197. package/lib/shared/interfaces/Checkable.cjs +1 -1
  198. package/lib/shared/interfaces/index.cjs +1 -1
  199. package/lib/shared/math.cjs +1 -1
  200. package/lib/shared/model/FabricBaseModel.cjs +1 -1
  201. package/lib/shared/model/FabricIdentifiedBaseModel.cjs +1 -1
  202. package/lib/shared/model/Identity.cjs +1 -1
  203. package/lib/shared/model/IdentityCredentials.cjs +1 -1
  204. package/lib/shared/model/index.cjs +1 -1
  205. package/lib/shared/overrides/Model.cjs +1 -1
  206. package/lib/shared/overrides/index.cjs +1 -1
  207. package/lib/shared/overrides/overrides.cjs +1 -1
  208. package/lib/shared/types.cjs +1 -1
  209. package/lib/version.cjs +2 -2
  210. package/lib/version.d.ts +1 -1
  211. package/package.json +1 -1
  212. package/dist/for-fabric.cjs.map +0 -1
  213. package/dist/for-fabric.js.map +0 -1
  214. package/lib/bin/cli.js.map +0 -1
  215. package/lib/cli-module.js.map +0 -1
  216. package/lib/cli-utils.js.map +0 -1
  217. package/lib/client/FabricClientAdapter.js.map +0 -1
  218. package/lib/client/FabricClientDispatch.js.map +0 -1
  219. package/lib/client/FabricClientPaginator.js.map +0 -1
  220. package/lib/client/FabricClientRepository.js.map +0 -1
  221. package/lib/client/FabricClientStatement.js.map +0 -1
  222. package/lib/client/collections/generation.js.map +0 -1
  223. package/lib/client/collections/index.js.map +0 -1
  224. package/lib/client/constants.js.map +0 -1
  225. package/lib/client/crypto.js.map +0 -1
  226. package/lib/client/erc20/FabricERC20ClientRepository.js.map +0 -1
  227. package/lib/client/erc20/index.js.map +0 -1
  228. package/lib/client/fabric-fs.js.map +0 -1
  229. package/lib/client/fabric-hsm.js.map +0 -1
  230. package/lib/client/index.js.map +0 -1
  231. package/lib/client/indexes/generation.js.map +0 -1
  232. package/lib/client/indexes/index.js.map +0 -1
  233. package/lib/client/logging.js.map +0 -1
  234. package/lib/client/services/FabricEnrollmentService.js.map +0 -1
  235. package/lib/client/services/FabricIdentityService.js.map +0 -1
  236. package/lib/client/services/RegistrationRequestBuilder.js.map +0 -1
  237. package/lib/client/services/constants.js.map +0 -1
  238. package/lib/client/services/index.js.map +0 -1
  239. package/lib/client/types.js.map +0 -1
  240. package/lib/client/utils.js.map +0 -1
  241. package/lib/contract/Address.js.map +0 -1
  242. package/lib/contract/AddressContract.js.map +0 -1
  243. package/lib/contract/BatchContract.js.map +0 -1
  244. package/lib/contract/OtherProductContract.js.map +0 -1
  245. package/lib/contract/OtherProductSharedContract.js.map +0 -1
  246. package/lib/contract/Product.js.map +0 -1
  247. package/lib/contract/ProductContract.js.map +0 -1
  248. package/lib/contract/SegregatedPrivateDocumentContract.js.map +0 -1
  249. package/lib/contract/SegregatedSharedDocumentContract.js.map +0 -1
  250. package/lib/contract/User.js.map +0 -1
  251. package/lib/contract/UserContract.js.map +0 -1
  252. package/lib/contract/index.js.map +0 -1
  253. package/lib/contract/models/Audit.js.map +0 -1
  254. package/lib/contract/models/BaseIdentifiedModel.js.map +0 -1
  255. package/lib/contract/models/BaseModel.js.map +0 -1
  256. package/lib/contract/models/Batch.js.map +0 -1
  257. package/lib/contract/models/Leaflet.js.map +0 -1
  258. package/lib/contract/models/LeafletFile.js.map +0 -1
  259. package/lib/contract/models/Market.js.map +0 -1
  260. package/lib/contract/models/OtherProduct.js.map +0 -1
  261. package/lib/contract/models/OtherProductShared.js.map +0 -1
  262. package/lib/contract/models/Product.js.map +0 -1
  263. package/lib/contract/models/ProductStrength.js.map +0 -1
  264. package/lib/contract/models/SegregatedDocument.js.map +0 -1
  265. package/lib/contract/models/constants.js.map +0 -1
  266. package/lib/contract/models/decorators.js.map +0 -1
  267. package/lib/contract/models/gtin.js.map +0 -1
  268. package/lib/contracts/ContractAdapter.js.map +0 -1
  269. package/lib/contracts/ContractContext.js.map +0 -1
  270. package/lib/contracts/ContractPrivateDataAdapter.js.map +0 -1
  271. package/lib/contracts/FabricConstruction.js.map +0 -1
  272. package/lib/contracts/FabricContractPaginator.js.map +0 -1
  273. package/lib/contracts/FabricContractRepository.js.map +0 -1
  274. package/lib/contracts/FabricContractRepositoryObservableHandler.js.map +0 -1
  275. package/lib/contracts/FabricContractSequence.js.map +0 -1
  276. package/lib/contracts/FabricContractStatement.js.map +0 -1
  277. package/lib/contracts/PrivateSequence.js.map +0 -1
  278. package/lib/contracts/crud/crud-contract.js.map +0 -1
  279. package/lib/contracts/crud/index.js.map +0 -1
  280. package/lib/contracts/crud/serialized-crud-contract.js.map +0 -1
  281. package/lib/contracts/erc20/erc20contract.js.map +0 -1
  282. package/lib/contracts/erc20/index.js.map +0 -1
  283. package/lib/contracts/erc20/models.js.map +0 -1
  284. package/lib/contracts/index.js.map +0 -1
  285. package/lib/contracts/logging.js.map +0 -1
  286. package/lib/contracts/overrides.js.map +0 -1
  287. package/lib/contracts/private-data.js.map +0 -1
  288. package/lib/contracts/types.js.map +0 -1
  289. package/lib/contracts/uuid.js.map +0 -1
  290. package/lib/esm/bin/cli.js.map +0 -1
  291. package/lib/esm/cli-module.js.map +0 -1
  292. package/lib/esm/cli-utils.js.map +0 -1
  293. package/lib/esm/client/FabricClientAdapter.js.map +0 -1
  294. package/lib/esm/client/FabricClientDispatch.js.map +0 -1
  295. package/lib/esm/client/FabricClientPaginator.js.map +0 -1
  296. package/lib/esm/client/FabricClientRepository.js.map +0 -1
  297. package/lib/esm/client/FabricClientStatement.js.map +0 -1
  298. package/lib/esm/client/collections/generation.js.map +0 -1
  299. package/lib/esm/client/collections/index.js.map +0 -1
  300. package/lib/esm/client/constants.js.map +0 -1
  301. package/lib/esm/client/crypto.js.map +0 -1
  302. package/lib/esm/client/erc20/FabricERC20ClientRepository.js.map +0 -1
  303. package/lib/esm/client/erc20/index.js.map +0 -1
  304. package/lib/esm/client/fabric-fs.js.map +0 -1
  305. package/lib/esm/client/fabric-hsm.js.map +0 -1
  306. package/lib/esm/client/index.js.map +0 -1
  307. package/lib/esm/client/indexes/generation.js.map +0 -1
  308. package/lib/esm/client/indexes/index.js.map +0 -1
  309. package/lib/esm/client/logging.js.map +0 -1
  310. package/lib/esm/client/services/FabricEnrollmentService.js.map +0 -1
  311. package/lib/esm/client/services/FabricIdentityService.js.map +0 -1
  312. package/lib/esm/client/services/RegistrationRequestBuilder.js.map +0 -1
  313. package/lib/esm/client/services/constants.js.map +0 -1
  314. package/lib/esm/client/services/index.js.map +0 -1
  315. package/lib/esm/client/types.js.map +0 -1
  316. package/lib/esm/client/utils.js.map +0 -1
  317. package/lib/esm/contract/Address.js.map +0 -1
  318. package/lib/esm/contract/AddressContract.js.map +0 -1
  319. package/lib/esm/contract/BatchContract.js.map +0 -1
  320. package/lib/esm/contract/OtherProductContract.js.map +0 -1
  321. package/lib/esm/contract/OtherProductSharedContract.js.map +0 -1
  322. package/lib/esm/contract/Product.js.map +0 -1
  323. package/lib/esm/contract/ProductContract.js.map +0 -1
  324. package/lib/esm/contract/SegregatedPrivateDocumentContract.js.map +0 -1
  325. package/lib/esm/contract/SegregatedSharedDocumentContract.js.map +0 -1
  326. package/lib/esm/contract/User.js.map +0 -1
  327. package/lib/esm/contract/UserContract.js.map +0 -1
  328. package/lib/esm/contract/index.js.map +0 -1
  329. package/lib/esm/contract/models/Audit.js.map +0 -1
  330. package/lib/esm/contract/models/BaseIdentifiedModel.js.map +0 -1
  331. package/lib/esm/contract/models/BaseModel.js.map +0 -1
  332. package/lib/esm/contract/models/Batch.js.map +0 -1
  333. package/lib/esm/contract/models/Leaflet.js.map +0 -1
  334. package/lib/esm/contract/models/LeafletFile.js.map +0 -1
  335. package/lib/esm/contract/models/Market.js.map +0 -1
  336. package/lib/esm/contract/models/OtherProduct.js.map +0 -1
  337. package/lib/esm/contract/models/OtherProductShared.js.map +0 -1
  338. package/lib/esm/contract/models/Product.js.map +0 -1
  339. package/lib/esm/contract/models/ProductStrength.js.map +0 -1
  340. package/lib/esm/contract/models/SegregatedDocument.js.map +0 -1
  341. package/lib/esm/contract/models/constants.js.map +0 -1
  342. package/lib/esm/contract/models/decorators.js.map +0 -1
  343. package/lib/esm/contract/models/gtin.js.map +0 -1
  344. package/lib/esm/contracts/ContractAdapter.js.map +0 -1
  345. package/lib/esm/contracts/ContractContext.js.map +0 -1
  346. package/lib/esm/contracts/ContractPrivateDataAdapter.js.map +0 -1
  347. package/lib/esm/contracts/FabricConstruction.js.map +0 -1
  348. package/lib/esm/contracts/FabricContractPaginator.js.map +0 -1
  349. package/lib/esm/contracts/FabricContractRepository.js.map +0 -1
  350. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js.map +0 -1
  351. package/lib/esm/contracts/FabricContractSequence.js.map +0 -1
  352. package/lib/esm/contracts/FabricContractStatement.js.map +0 -1
  353. package/lib/esm/contracts/PrivateSequence.js.map +0 -1
  354. package/lib/esm/contracts/crud/crud-contract.js.map +0 -1
  355. package/lib/esm/contracts/crud/index.js.map +0 -1
  356. package/lib/esm/contracts/crud/serialized-crud-contract.js.map +0 -1
  357. package/lib/esm/contracts/erc20/erc20contract.js.map +0 -1
  358. package/lib/esm/contracts/erc20/index.js.map +0 -1
  359. package/lib/esm/contracts/erc20/models.js.map +0 -1
  360. package/lib/esm/contracts/index.js.map +0 -1
  361. package/lib/esm/contracts/logging.js.map +0 -1
  362. package/lib/esm/contracts/overrides.js.map +0 -1
  363. package/lib/esm/contracts/private-data.js.map +0 -1
  364. package/lib/esm/contracts/types.js.map +0 -1
  365. package/lib/esm/contracts/uuid.js.map +0 -1
  366. package/lib/esm/index.js.map +0 -1
  367. package/lib/esm/shared/ClientSerializer.js.map +0 -1
  368. package/lib/esm/shared/DeterministicSerializer.js.map +0 -1
  369. package/lib/esm/shared/SimpleDeterministicSerializer.js.map +0 -1
  370. package/lib/esm/shared/constants.js.map +0 -1
  371. package/lib/esm/shared/decorators.js.map +0 -1
  372. package/lib/esm/shared/erc20/erc20-constants.js.map +0 -1
  373. package/lib/esm/shared/erc20/index.js.map +0 -1
  374. package/lib/esm/shared/errors.js.map +0 -1
  375. package/lib/esm/shared/events.js.map +0 -1
  376. package/lib/esm/shared/fabric-types.js.map +0 -1
  377. package/lib/esm/shared/index.js.map +0 -1
  378. package/lib/esm/shared/interfaces/Checkable.js.map +0 -1
  379. package/lib/esm/shared/interfaces/index.js.map +0 -1
  380. package/lib/esm/shared/math.js.map +0 -1
  381. package/lib/esm/shared/model/FabricBaseModel.js.map +0 -1
  382. package/lib/esm/shared/model/FabricIdentifiedBaseModel.js.map +0 -1
  383. package/lib/esm/shared/model/Identity.js.map +0 -1
  384. package/lib/esm/shared/model/IdentityCredentials.js.map +0 -1
  385. package/lib/esm/shared/model/index.js.map +0 -1
  386. package/lib/esm/shared/overrides/Model.js.map +0 -1
  387. package/lib/esm/shared/overrides/index.js.map +0 -1
  388. package/lib/esm/shared/overrides/overrides.js.map +0 -1
  389. package/lib/esm/shared/types.js.map +0 -1
  390. package/lib/esm/version.js.map +0 -1
  391. package/lib/index.js.map +0 -1
  392. package/lib/shared/ClientSerializer.js.map +0 -1
  393. package/lib/shared/DeterministicSerializer.js.map +0 -1
  394. package/lib/shared/SimpleDeterministicSerializer.js.map +0 -1
  395. package/lib/shared/constants.js.map +0 -1
  396. package/lib/shared/decorators.js.map +0 -1
  397. package/lib/shared/erc20/erc20-constants.js.map +0 -1
  398. package/lib/shared/erc20/index.js.map +0 -1
  399. package/lib/shared/errors.js.map +0 -1
  400. package/lib/shared/events.js.map +0 -1
  401. package/lib/shared/fabric-types.js.map +0 -1
  402. package/lib/shared/index.js.map +0 -1
  403. package/lib/shared/interfaces/Checkable.js.map +0 -1
  404. package/lib/shared/interfaces/index.js.map +0 -1
  405. package/lib/shared/math.js.map +0 -1
  406. package/lib/shared/model/FabricBaseModel.js.map +0 -1
  407. package/lib/shared/model/FabricIdentifiedBaseModel.js.map +0 -1
  408. package/lib/shared/model/Identity.js.map +0 -1
  409. package/lib/shared/model/IdentityCredentials.js.map +0 -1
  410. package/lib/shared/model/index.js.map +0 -1
  411. package/lib/shared/overrides/Model.js.map +0 -1
  412. package/lib/shared/overrides/index.js.map +0 -1
  413. package/lib/shared/overrides/overrides.js.map +0 -1
  414. package/lib/shared/types.js.map +0 -1
  415. package/lib/version.js.map +0 -1
@@ -206,4 +206,4 @@ exports.Allowance = Allowance = __decorate([
206
206
  (0, decorator_validation_1.model)(),
207
207
  __metadata("design:paramtypes", [Object])
208
208
  ], Allowance);
209
- //# sourceMappingURL=models.js.map
209
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnRyYWN0cy9lcmMyMC9tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEseUNBQThEO0FBQzlELHlFQUFnRjtBQUVoRjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBR0ksSUFBTSxVQUFVLEdBQWhCLE1BQU0sVUFBVyxTQUFRLGdCQUFTO0lBOEJ2QyxZQUFZLENBQXlCO1FBQ25DLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7Q0FDRixDQUFBO0FBakNZLGdDQUFVO0FBTXJCO0lBTEMsSUFBQSxTQUFFLEVBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDckI7OztPQUdHOzs7d0NBQ1c7QUFRZDtJQU5DLElBQUEsYUFBTSxHQUFFO0lBQ1IsSUFBQSwrQkFBUSxHQUFFO0lBQ1g7OztPQUdHOzs7eUNBQ1k7QUFPZjtJQU5DLElBQUEsYUFBTSxHQUFFO0lBQ1IsSUFBQSwrQkFBUSxHQUFFO0lBQ1g7OztPQUdHOzs7MENBQ2E7QUFPaEI7SUFOQyxJQUFBLGFBQU0sR0FBRTtJQUNSLElBQUEsK0JBQVEsR0FBRTtJQUNYOzs7T0FHRzs7OzRDQUNlO3FCQTVCUCxVQUFVO0lBRnRCLElBQUEsWUFBSyxFQUFDLGNBQWMsQ0FBQztJQUNyQixJQUFBLDRCQUFLLEdBQUU7O0dBQ0ssVUFBVSxDQWlDdEI7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFHSSxJQUFNLFdBQVcsR0FBakIsTUFBTSxXQUFZLFNBQVEsZ0JBQVM7SUErQnhDLFlBQVksQ0FBeUI7UUFDbkMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztDQUNGLENBQUE7QUFsQ1ksa0NBQVc7QUFNdEI7SUFMQyxJQUFBLFNBQUUsRUFBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNyQjs7O09BR0c7Ozt1Q0FDUztBQVFaO0lBTkMsSUFBQSxhQUFNLEdBQUU7SUFDUixJQUFBLCtCQUFRLEdBQUU7SUFDWDs7O09BR0c7OzswQ0FDWTtBQVFmO0lBTkMsSUFBQSxhQUFNLEdBQUU7SUFDUixJQUFBLCtCQUFRLEdBQUU7SUFDWDs7O09BR0c7Ozs0Q0FDYztBQU9qQjtJQUxDLElBQUEsYUFBTSxHQUFFO0lBQ1Q7OztPQUdHOzs7NENBQ2M7c0JBN0JOLFdBQVc7SUFGdkIsSUFBQSxZQUFLLEVBQUMsZUFBZSxDQUFDO0lBQ3RCLElBQUEsNEJBQUssR0FBRTs7R0FDSyxXQUFXLENBa0N2QjtBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQUdJLElBQU0sU0FBUyxHQUFmLE1BQU0sU0FBVSxTQUFRLGdCQUFTO0lBOEJ0QyxZQUFZLENBQXVCO1FBQ2pDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7Q0FDRixDQUFBO0FBakNZLDhCQUFTO0FBWXBCO0lBWEMsSUFBQSxTQUFFLEVBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDckI7OztPQUdHOztJQUNGLElBQUEsYUFBTSxHQUFFO0lBQ1IsSUFBQSwrQkFBUSxHQUFFO0lBQ1g7OztPQUdHOzs7d0NBQ1k7QUFRZjtJQU5DLElBQUEsYUFBTSxHQUFFO0lBQ1IsSUFBQSwrQkFBUSxHQUFFO0lBQ1g7OztPQUdHOzs7MENBQ2M7QUFRakI7SUFOQyxJQUFBLGFBQU0sR0FBRTtJQUNSLElBQUEsK0JBQVEsR0FBRTtJQUNYOzs7T0FHRzs7O3dDQUNZO29CQTVCSixTQUFTO0lBRnJCLElBQUEsWUFBSyxFQUFDLGtCQUFrQixDQUFDO0lBQ3pCLElBQUEsNEJBQUssR0FBRTs7R0FDSyxTQUFTLENBaUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VNb2RlbCwgY29sdW1uLCBwaywgdGFibGUgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IG1vZGVsLCB0eXBlIE1vZGVsQXJnLCByZXF1aXJlZCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRVJDMjAgdG9rZW4gbWV0YWRhdGEgbW9kZWxcbiAqIEBzdW1tYXJ5IFJlcHJlc2VudHMgYW4gRVJDMjAgdG9rZW4gZGVmaW5pdGlvbiB3aXRoaW4gdGhlIEZhYnJpYyBFUkMyMCBzYW1wbGUsIGluY2x1ZGluZyBuYW1lLCBzeW1ib2wsIGRlY2ltYWxzLCBhbmQgdGhlIG93bmluZyBpZGVudGl0eS4gVXNlZCB0byBkZWZpbmUgdGhlIHVuaXF1ZSB0b2tlbiBtYW5hZ2VkIGJ5IHRoZSBjb250cmFjdC5cbiAqIEBwYXJhbSB7TW9kZWxBcmc8RVJDMjBUb2tlbj59IFttXSAtIE9wdGlvbmFsIHBhcnRpYWwgZGF0YSBvciBhbm90aGVyIGluc3RhbmNlIHRvIGluaXRpYWxpemUgdGhlIG1vZGVsXG4gKiBAcmV0dXJuIHt2b2lkfVxuICogQGNsYXNzIEVSQzIwVG9rZW5cbiAqIEBleGFtcGxlXG4gKiBjb25zdCB0b2tlbiA9IG5ldyBFUkMyMFRva2VuKHsgbmFtZTogXCJNeVRva2VuXCIsIHN5bWJvbDogXCJNVEtcIiwgZGVjaW1hbHM6IDE4LCBvd25lcjogXCJ4NTA5OjouLi5cIiB9KTtcbiAqIC8vIFBlcnNpc3QgdGhyb3VnaCBhIHJlcG9zaXRvcnk6IGF3YWl0IHJlcG8uY3JlYXRlKHRva2VuLCBjdHgpXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IEFwcFxuICogICBwYXJ0aWNpcGFudCBSZXBvXG4gKiAgIHBhcnRpY2lwYW50IEFkYXB0ZXJcbiAqICAgQXBwLT4+UmVwbzogY3JlYXRlKG5ldyBFUkMyMFRva2VuKHsuLi59KSwgY3R4KVxuICogICBSZXBvLT4+QWRhcHRlcjogY3JlYXRlKHRhYmxlLCBpZD1uYW1lLCByZWNvcmQsIGZsYWdzKVxuICogICBBZGFwdGVyLS0+PlJlcG86IHN0b3JlZFxuICogICBSZXBvLS0+PkFwcDogbW9kZWxcbiAqL1xuQHRhYmxlKFwiZXJjMjBfdG9rZW5zXCIpXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIEVSQzIwVG9rZW4gZXh0ZW5kcyBCYXNlTW9kZWwge1xuICBAcGsoeyB0eXBlOiBTdHJpbmcgfSlcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUb2tlbiB1bmlxdWUgbmFtZVxuICAgKiBAc3VtbWFyeSBTZXJ2ZXMgYXMgdGhlIHByaW1hcnkga2V5IGZvciB0aGUgRVJDMjAgdG9rZW4gZGVmaW5pdGlvbjsgdHlwaWNhbGx5IGEgaHVtYW4tcmVhZGFibGUgaWRlbnRpZmllclxuICAgKi9cbiAgbmFtZSE6IHN0cmluZztcblxuICBAY29sdW1uKClcbiAgQHJlcXVpcmVkKClcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBPd25pbmcgaWRlbnRpdHkgb2YgdGhlIHRva2VuXG4gICAqIEBzdW1tYXJ5IFguNTA5IHN1YmplY3Qgb3IgTVNQIGlkZW50aXR5IHN0cmluZyB0aGF0IGRlbm90ZXMgd2hvIG93bnMvY29udHJvbHMgdGhlIHRva2VuIGRlZmluaXRpb25cbiAgICovXG4gIG93bmVyITogc3RyaW5nO1xuICBAY29sdW1uKClcbiAgQHJlcXVpcmVkKClcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUb2tlbiBzeW1ib2xcbiAgICogQHN1bW1hcnkgU2hvcnQgdGlja2VyLWxpa2Ugc3ltYm9sIHVzZWQgdG8gcmVwcmVzZW50IHRoZSB0b2tlbiAoZS5nLiwgTVRLKVxuICAgKi9cbiAgc3ltYm9sITogc3RyaW5nO1xuICBAY29sdW1uKClcbiAgQHJlcXVpcmVkKClcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZWNpbWFsIHByZWNpc2lvbiBmb3IgdG9rZW4gYW1vdW50c1xuICAgKiBAc3VtbWFyeSBOdW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHNlcGFyYXRvciB1c2VkIHdoZW4gZm9ybWF0dGluZyB0b2tlbiBiYWxhbmNlc1xuICAgKi9cbiAgZGVjaW1hbHMhOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IobT86IE1vZGVsQXJnPEVSQzIwV2FsbGV0Pikge1xuICAgIHN1cGVyKG0pO1xuICB9XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEVSQzIwIHdhbGxldCBtb2RlbFxuICogQHN1bW1hcnkgUmVwcmVzZW50cyBhIGhvbGRlciBhY2NvdW50IGZvciBhbiBFUkMyMCB0b2tlbiB3aXRoaW4gdGhlIEZhYnJpYyBuZXR3b3JrLCB0cmFja2luZyBiYWxhbmNlIGFuZCB0b2tlbiBhc3NvY2lhdGlvbi5cbiAqIEBwYXJhbSB7TW9kZWxBcmc8RVJDMjBXYWxsZXQ+fSBbbV0gLSBPcHRpb25hbCBwYXJ0aWFsIGRhdGEgb3IgYW5vdGhlciBpbnN0YW5jZSB0byBpbml0aWFsaXplIHRoZSBtb2RlbFxuICogQHJldHVybiB7dm9pZH1cbiAqIEBjbGFzcyBFUkMyMFdhbGxldFxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHdhbGxldCA9IG5ldyBFUkMyMFdhbGxldCh7IGlkOiBcImFjY3QxXCIsIHRva2VuOiBcIk15VG9rZW5cIiwgYmFsYW5jZTogMTAwMCB9KTtcbiAqIC8vIFVwZGF0ZSBiYWxhbmNlIHZpYSByZXBvc2l0b3J5OiBhd2FpdCByZXBvLnVwZGF0ZSh3YWxsZXQsIGN0eClcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQXBwXG4gKiAgIHBhcnRpY2lwYW50IFJlcG9cbiAqICAgQXBwLT4+UmVwbzogcmVhZChcImFjY3QxXCIsIGN0eClcbiAqICAgUmVwby0tPj5BcHA6IEVSQzIwV2FsbGV0XG4gKi9cbkB0YWJsZShcImVyYzIwX3dhbGxldHNcIilcbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgRVJDMjBXYWxsZXQgZXh0ZW5kcyBCYXNlTW9kZWwge1xuICBAcGsoeyB0eXBlOiBTdHJpbmcgfSlcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBXYWxsZXQgdW5pcXVlIGlkZW50aWZpZXJcbiAgICogQHN1bW1hcnkgUHJpbWFyeSBrZXkgZm9yIHRoZSB3YWxsZXQ7IGNvbW1vbmx5IHJlZmVyZW5jZXMgYW4gYWNjb3VudCBvciBpZGVudGl0eVxuICAgKi9cbiAgaWQhOiBzdHJpbmc7XG5cbiAgQGNvbHVtbigpXG4gIEByZXF1aXJlZCgpXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQXNzb2NpYXRlZCB0b2tlbiBuYW1lXG4gICAqIEBzdW1tYXJ5IFJlZmVyZW5jZXMgdGhlIEVSQzIwVG9rZW4gdGhpcyB3YWxsZXQgaG9sZHM7IG1haW50YWluZWQgYXMgYSByZWxhdGlvbnNoaXAgZm9yIGNhc2NhZGluZyB1cGRhdGVzL2RlbGV0ZXNcbiAgICovXG4gIHRva2VuITogc3RyaW5nO1xuXG4gIEBjb2x1bW4oKVxuICBAcmVxdWlyZWQoKVxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRva2VuIGJhbGFuY2UgZm9yIHRoaXMgd2FsbGV0XG4gICAqIEBzdW1tYXJ5IEN1cnJlbnQgYW1vdW50IG9mIHRoZSBhc3NvY2lhdGVkIHRva2VuIGhlbGQgYnkgdGhpcyB3YWxsZXRcbiAgICovXG4gIGJhbGFuY2UhOiBudW1iZXI7XG5cbiAgQGNvbHVtbigpXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ2FwdGl2ZSBmbGFnIG9yIGlkZW50aWZpZXJcbiAgICogQHN1bW1hcnkgT3B0aW9uYWwgZmllbGQgdXNlZCBieSBzb21lIGZsb3dzIHRvIG1hcmsgbm9uLXRyYW5zZmVyYWJsZSBmdW5kcyBvciBtYW5hZ2VkIGN1c3RvZHlcbiAgICovXG4gIGNhcHRpdmUhOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobT86IE1vZGVsQXJnPEVSQzIwV2FsbGV0Pikge1xuICAgIHN1cGVyKG0pO1xuICB9XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEVSQzIwIGFsbG93YW5jZSBtb2RlbFxuICogQHN1bW1hcnkgQ2FwdHVyZXMgYW4gYXBwcm92YWwgcmVsYXRpb25zaGlwIHdoZXJlIGFuIG93bmVyIGFsbG93cyBhIHNwZW5kZXIgdG8gdHJhbnNmZXIgdXAgdG8gYSBjZXJ0YWluIHZhbHVlIGZyb20gdGhlIG93bmVyJ3Mgd2FsbGV0LlxuICogQHBhcmFtIHtNb2RlbEFyZzxBbGxvd2FuY2U+fSBbbV0gLSBPcHRpb25hbCBwYXJ0aWFsIGRhdGEgb3IgYW5vdGhlciBpbnN0YW5jZSB0byBpbml0aWFsaXplIHRoZSBtb2RlbFxuICogQHJldHVybiB7dm9pZH1cbiAqIEBjbGFzcyBBbGxvd2FuY2VcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBhbGxvd2FuY2UgPSBuZXcgQWxsb3dhbmNlKHsgb3duZXI6IFwiYWNjdDFcIiwgc3BlbmRlcjogXCJhY2N0MlwiLCB2YWx1ZTogNTAgfSk7XG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IEFwcFxuICogICBBcHAtPj5BcHA6IG5ldyBBbGxvd2FuY2UoeyBvd25lciwgc3BlbmRlciwgdmFsdWUgfSlcbiAqL1xuQHRhYmxlKFwiZXJjMjBfYWxsb3dhbmNlc1wiKVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBBbGxvd2FuY2UgZXh0ZW5kcyBCYXNlTW9kZWwge1xuICBAcGsoeyB0eXBlOiBTdHJpbmcgfSlcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBBbGxvd2FuY2UgdW5pcXVlIGlkZW50aWZpZXJcbiAgICogQHN1bW1hcnkgUHJpbWFyeSBrZXkgZm9yIHRoZSBhbGxvd2FuY2U7IHR5cGljYWxseSBhIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgYXBwcm92YWwgcmVsYXRpb25zaGlwXG4gICAqL1xuICBAY29sdW1uKClcbiAgQHJlcXVpcmVkKClcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBPd25lciB3YWxsZXQgaWRlbnRpZmllclxuICAgKiBAc3VtbWFyeSBXYWxsZXQgdGhhdCBhdXRob3JpemVzIHRoZSBhbGxvd2FuY2VcbiAgICovXG4gIG93bmVyITogc3RyaW5nO1xuXG4gIEBjb2x1bW4oKVxuICBAcmVxdWlyZWQoKVxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFNwZW5kZXIgd2FsbGV0IGlkZW50aWZpZXJcbiAgICogQHN1bW1hcnkgV2FsbGV0IGFsbG93ZWQgdG8gc3BlbmQgdXAgdG8gdGhlIGFwcHJvdmVkIHZhbHVlIGZyb20gdGhlIG93bmVyXG4gICAqL1xuICBzcGVuZGVyITogc3RyaW5nO1xuXG4gIEBjb2x1bW4oKVxuICBAcmVxdWlyZWQoKVxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFwcHJvdmVkIHZhbHVlXG4gICAqIEBzdW1tYXJ5IE1heGltdW0gdG9rZW4gYW1vdW50IHRoZSBzcGVuZGVyIG1heSB0cmFuc2ZlciBvbiBiZWhhbGYgb2YgdGhlIG93bmVyXG4gICAqL1xuICB2YWx1ZSE6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihtPzogTW9kZWxBcmc8QWxsb3dhbmNlPikge1xuICAgIHN1cGVyKG0pO1xuICB9XG59XG4iXX0=
@@ -30,4 +30,4 @@ __exportStar(require("./FabricContractRepository.cjs"), exports);
30
30
  __exportStar(require("./FabricContractRepositoryObservableHandler.cjs"), exports);
31
31
  __exportStar(require("./logging.cjs"), exports);
32
32
  __exportStar(require("./types.cjs"), exports);
33
- //# sourceMappingURL=index.js.map
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7R0FLRztBQUNILGtEQUE0QixDQUFDLHVCQUF1QjtBQUNwRCxtREFBdUI7QUFDdkIsb0RBQXdCO0FBQ3hCLHdEQUFrQztBQUNsQyx3REFBa0M7QUFDbEMsZ0VBQTBDO0FBQzFDLGlFQUEyQztBQUMzQyxrRkFBNEQ7QUFDNUQsZ0RBQTBCO0FBQzFCLDhDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlc2NyaXB0aW9uIENvbnRyYWN0cyBzdWJtb2R1bGUgZm9yIEh5cGVybGVkZ2VyIEZhYnJpYyBpbnRlZ3JhdGlvblxuICogQHN1bW1hcnkgQWdncmVnYXRlcyBjaGFpbmNvZGUtc2lkZSBidWlsZGluZyBibG9ja3MgaW5jbHVkaW5nIHJlcG9zaXRvcmllcywgc2VxdWVuY2VzLCBhZGFwdGVycywgYW5kIEVSQzIwIGhlbHBlcnMuIFRoaXMgZW50cnlwb2ludCByZS1leHBvcnRzIGNvbnRyYWN0LXJlbGF0ZWQgZWxlbWVudHMgc3VjaCBhcyB7QGxpbmsgRmFicmljQ29udHJhY3RSZXBvc2l0b3J5fSwsIGFuZCBDUlVEL0VSQzIwIHV0aWxpdGllcyBmb3IgY29tcG9zaW5nIEZhYnJpYyBjb250cmFjdHMuXG4gKiBAbmFtZXNwYWNlIGNvbnRyYWN0c1xuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljXG4gKi9cbmV4cG9ydCAqIGZyb20gXCIuL292ZXJyaWRlc1wiOyAvLyBmaXJzdCBvbmUgb24gcHVycG9zZVxuZXhwb3J0ICogZnJvbSBcIi4vY3J1ZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXJjMjBcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0NvbnRyYWN0QWRhcHRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vQ29udHJhY3RDb250ZXh0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9GYWJyaWNDb250cmFjdFBhZ2luYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vRmFicmljQ29udHJhY3RSZXBvc2l0b3J5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9GYWJyaWNDb250cmFjdFJlcG9zaXRvcnlPYnNlcnZhYmxlSGFuZGxlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbG9nZ2luZ1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNcIjtcbiJdfQ==
@@ -104,4 +104,4 @@ const factory = (object, config, ctx) => {
104
104
  };
105
105
  // Set the factory as the default logger factory
106
106
  logging_1.Logging.setFactory(factory);
107
- //# sourceMappingURL=logging.js.map
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdHMvbG9nZ2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FRMkI7QUFHM0IsMkRBQXdEO0FBRXhEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZCRztBQUNILE1BQWEsY0FBZSxTQUFRLG9CQUFVO0lBTTVDLFlBQ0UsT0FBZSxFQUNmLElBQXdDLEVBQ3hDLEdBQVM7UUFFVCxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXJCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxvQkFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFzQixDQUFDO1lBQ2xFLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLElBQUksaUJBQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDZ0IsR0FBRyxDQUNwQixLQUFlLEVBQ2YsR0FBdUIsRUFDdkIsS0FBYTtRQUViLElBQ0UsMEJBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQWEsQ0FBQztZQUNsRCwwQkFBZ0IsQ0FBQyxLQUFLLENBQUM7WUFFdkIsT0FBTztRQUVULElBQUksTUFBTSxDQUFDO1FBQ1gsUUFBUSxLQUFLLEVBQUUsQ0FBQztZQUNkLEtBQUssa0JBQVEsQ0FBQyxTQUFTO2dCQUNyQixNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7Z0JBQzdCLE1BQU07WUFDUixLQUFLLGtCQUFRLENBQUMsSUFBSTtnQkFDaEIsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUMxQixNQUFNO1lBQ1IsS0FBSyxrQkFBUSxDQUFDLE9BQU87Z0JBQ25CLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztnQkFDN0IsTUFBTTtZQUNSLEtBQUssa0JBQVEsQ0FBQyxLQUFLO2dCQUNqQixNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQzNCLE1BQU07WUFDUixLQUFLLGtCQUFRLENBQUMsS0FBSztnQkFDakIsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUMzQixNQUFNO1lBQ1IsS0FBSyxrQkFBUSxDQUFDLEtBQUs7Z0JBQ2pCLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFDM0IsTUFBTTtZQUNSLEtBQUssa0JBQVEsQ0FBQyxJQUFJO2dCQUNoQixNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLE1BQU07WUFDUixLQUFLLGtCQUFRLENBQUMsS0FBSztnQkFDakIsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUMzQixNQUFNO1lBQ1I7Z0JBQ0UsTUFBTSxJQUFJLDZCQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7Q0FDRjtBQXZFRCx3Q0F1RUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLE9BQU8sR0FBa0IsQ0FDN0IsTUFBZSxFQUNmLE1BQStCLEVBQy9CLEdBQVMsRUFDVCxFQUFFO0lBQ0YsT0FBTyxJQUFJLGNBQWMsQ0FDdkIsTUFBTSxJQUFJLGNBQWMsQ0FBQyxJQUFJLEVBQzdCLE1BQU0sSUFBSSxFQUFFLEVBQ1osR0FBVSxDQUNYLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixnREFBZ0Q7QUFDaEQsaUJBQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBMb2dnZXJGYWN0b3J5LFxuICBMb2dnaW5nLFxuICBMb2dnZXIsXG4gIExvZ0xldmVsLFxuICBNaW5pTG9nZ2VyLFxuICBOdW1lcmljTG9nTGV2ZWxzLFxuICBTdHJpbmdMaWtlLFxufSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcbmltcG9ydCB7IExvZ2dpbmdDb25maWcgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcbmltcG9ydCB7IENvbnRleHQgYXMgQ3R4IH0gZnJvbSBcImZhYnJpYy1jb250cmFjdC1hcGlcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTG9nZ2VyIGltcGxlbWVudGF0aW9uIGZvciBGYWJyaWMgY2hhaW5jb2RlIGNvbnRyYWN0c1xuICogQHN1bW1hcnkgQWRhcHRzIHRoZSBzdGFuZGFyZCBsb2dnaW5nIGludGVyZmFjZSB0byB3b3JrIHdpdGggRmFicmljJ3MgY2hhaW5jb2RlIGNvbnRleHRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGV4dCAtIFRoZSBsb2dnaW5nIGNvbnRleHQgbmFtZVxuICogQHBhcmFtIHtQYXJ0aWFsPExvZ2dpbmdDb25maWc+IHwgdW5kZWZpbmVkfSBjb25mIC0gT3B0aW9uYWwgbG9nZ2luZyBjb25maWd1cmF0aW9uXG4gKiBAcGFyYW0ge0N0eH0gY3R4IC0gVGhlIEZhYnJpYyBjaGFpbmNvZGUgY29udGV4dFxuICpcbiAqIEBjbGFzcyBDb250cmFjdExvZ2dlclxuICogQGV4dGVuZHMge01pbmlMb2dnZXJ9XG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gSW4gYSBGYWJyaWMgY2hhaW5jb2RlIGNvbnRyYWN0XG4gKiBpbXBvcnQgeyBDb250cmFjdExvZ2dlciB9IGZyb20gJ0BkZWNhZi10cy9mb3ItZmFicmljJztcbiAqXG4gKiBleHBvcnQgY2xhc3MgTXlDb250cmFjdCBleHRlbmRzIENvbnRyYWN0IHtcbiAqICAgQFRyYW5zYWN0aW9uKClcbiAqICAgYXN5bmMgbXlGdW5jdGlvbihjdHg6IENvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAqICAgICBjb25zdCBsb2dnZXIgPSBuZXcgQ29udHJhY3RMb2dnZXIoJ015Q29udHJhY3QnLCB7IGxldmVsOiAnaW5mbycgfSwgY3R4KTtcbiAqXG4gKiAgICAgbG9nZ2VyLmluZm8oJ1Byb2Nlc3NpbmcgdHJhbnNhY3Rpb24nKTtcbiAqICAgICBsb2dnZXIuZGVidWcoJ1RyYW5zYWN0aW9uIGRldGFpbHM6JywgeyAuLi4gfSk7XG4gKlxuICogICAgIC8vIERvIHNvbWV0aGluZ1xuICpcbiAqICAgICBsb2dnZXIuaW5mbygnVHJhbnNhY3Rpb24gY29tcGxldGUnKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBDb250cmFjdExvZ2dlciBleHRlbmRzIE1pbmlMb2dnZXIge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSB1bmRlcmx5aW5nIEZhYnJpYyBsb2dnZXIgaW5zdGFuY2VcbiAgICovXG4gIHByb3RlY3RlZCBsb2dnZXIhOiBMb2dnZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29udGV4dDogc3RyaW5nLFxuICAgIGNvbmY6IFBhcnRpYWw8TG9nZ2luZ0NvbmZpZz4gfCB1bmRlZmluZWQsXG4gICAgY3R4PzogQ3R4XG4gICkge1xuICAgIHN1cGVyKGNvbnRleHQsIGNvbmYpO1xuXG4gICAgaWYgKCFjdHgpIHtcbiAgICAgIHRoaXMubG9nZ2VyID0gbmV3IE1pbmlMb2dnZXIoY29udGV4dCwgY29uZik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nZ2VyID0gY3R4LmxvZ2dpbmcuZ2V0TG9nZ2VyKGNvbnRleHQpIGFzIHVua25vd24gYXMgTG9nZ2VyO1xuICAgICAgY3R4LmxvZ2dpbmcuc2V0TGV2ZWwoY29uZj8ubGV2ZWwgfHwgTG9nZ2luZy5nZXRDb25maWcoKS5sZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMb2dzIGEgbWVzc2FnZSBhdCB0aGUgc3BlY2lmaWVkIGxldmVsXG4gICAqIEBzdW1tYXJ5IE92ZXJyaWRlcyB0aGUgYmFzZSBsb2cgbWV0aG9kIHRvIHVzZSB0aGUgRmFicmljIGNvbnRleHQncyBsb2dnZXJcbiAgICogQHBhcmFtIHtMb2dMZXZlbH0gbGV2ZWwgLSBUaGUgbG9nIGxldmVsXG4gICAqIEBwYXJhbSB7U3RyaW5nTGlrZSB8IEVycm9yfSBtc2cgLSBUaGUgbWVzc2FnZSB0byBsb2dcbiAgICogQHBhcmFtIHtFcnJvcn0gW3N0YWNrXSAtIE9wdGlvbmFsIHN0YWNrIHRyYWNlIGZvciBlcnJvcnNcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBsb2coXG4gICAgbGV2ZWw6IExvZ0xldmVsLFxuICAgIG1zZzogU3RyaW5nTGlrZSB8IEVycm9yLFxuICAgIHN0YWNrPzogRXJyb3JcbiAgKSB7XG4gICAgaWYgKFxuICAgICAgTnVtZXJpY0xvZ0xldmVsc1t0aGlzLmNvbmZpZyhcImxldmVsXCIpIGFzIExvZ0xldmVsXSA8XG4gICAgICBOdW1lcmljTG9nTGV2ZWxzW2xldmVsXVxuICAgIClcbiAgICAgIHJldHVybjtcblxuICAgIGxldCBtZXRob2Q7XG4gICAgc3dpdGNoIChsZXZlbCkge1xuICAgICAgY2FzZSBMb2dMZXZlbC5iZW5jaG1hcms6XG4gICAgICAgIG1ldGhvZCA9IHRoaXMubG9nZ2VyLnZlcmJvc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBMb2dMZXZlbC5pbmZvOlxuICAgICAgICBtZXRob2QgPSB0aGlzLmxvZ2dlci5pbmZvO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTG9nTGV2ZWwudmVyYm9zZTpcbiAgICAgICAgbWV0aG9kID0gdGhpcy5sb2dnZXIudmVyYm9zZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExvZ0xldmVsLmRlYnVnOlxuICAgICAgICBtZXRob2QgPSB0aGlzLmxvZ2dlci5kZWJ1ZztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExvZ0xldmVsLmVycm9yOlxuICAgICAgICBtZXRob2QgPSB0aGlzLmxvZ2dlci5lcnJvcjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExvZ0xldmVsLnRyYWNlOlxuICAgICAgICBtZXRob2QgPSB0aGlzLmxvZ2dlci50cmFjZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExvZ0xldmVsLndhcm46XG4gICAgICAgIG1ldGhvZCA9IHRoaXMubG9nZ2VyLndhcm47XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBMb2dMZXZlbC5zaWxseTpcbiAgICAgICAgbWV0aG9kID0gdGhpcy5sb2dnZXIuc2lsbHk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJJbnZhbGlkIGxvZyBsZXZlbFwiKTtcbiAgICB9XG4gICAgbWV0aG9kLmNhbGwodGhpcy5sb2dnZXIsIHRoaXMuY3JlYXRlTG9nKGxldmVsLCBtc2csIHN0YWNrKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRmFjdG9yeSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgQ29udHJhY3RMb2dnZXIgaW5zdGFuY2VzXG4gKiBAc3VtbWFyeSBDcmVhdGVzIGEgbmV3IENvbnRyYWN0TG9nZ2VyIHdpdGggdGhlIGdpdmVuIGNvbnRleHQsIGNvbmZpZywgYW5kIEZhYnJpYyBjb250ZXh0XG4gKiBAcGFyYW0ge3N0cmluZ30gb2JqZWN0IC0gVGhlIGxvZ2dpbmcgY29udGV4dCBuYW1lXG4gKiBAcGFyYW0ge1BhcnRpYWw8TG9nZ2luZ0NvbmZpZz4gfCB1bmRlZmluZWR9IGNvbmZpZyAtIE9wdGlvbmFsIGxvZ2dpbmcgY29uZmlndXJhdGlvblxuICogQHBhcmFtIHtDdHh9IGN0eCAtIFRoZSBGYWJyaWMgY2hhaW5jb2RlIGNvbnRleHRcbiAqIEByZXR1cm4ge0NvbnRyYWN0TG9nZ2VyfSBBIG5ldyBDb250cmFjdExvZ2dlciBpbnN0YW5jZVxuICogQGZ1bmN0aW9uIGZhY3RvcnlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZmFicmljLmNvbnRyYWN0c1xuICovXG5jb25zdCBmYWN0b3J5OiBMb2dnZXJGYWN0b3J5ID0gKFxuICBvYmplY3Q/OiBzdHJpbmcsXG4gIGNvbmZpZz86IFBhcnRpYWw8TG9nZ2luZ0NvbmZpZz4sXG4gIGN0eD86IEN0eFxuKSA9PiB7XG4gIHJldHVybiBuZXcgQ29udHJhY3RMb2dnZXIoXG4gICAgb2JqZWN0IHx8IENvbnRyYWN0TG9nZ2VyLm5hbWUsXG4gICAgY29uZmlnIHx8IHt9LFxuICAgIGN0eCBhcyBDdHhcbiAgKTtcbn07XG5cbi8vIFNldCB0aGUgZmFjdG9yeSBhcyB0aGUgZGVmYXVsdCBsb2dnZXIgZmFjdG9yeVxuTG9nZ2luZy5zZXRGYWN0b3J5KGZhY3RvcnkpO1xuIl19
@@ -5,4 +5,4 @@ const uuid_1 = require("./uuid.cjs");
5
5
  core_1.UUID.prototype.generate = function generate(seed) {
6
6
  return (0, uuid_1.uuidFromSeed)(seed);
7
7
  };
8
- //# sourceMappingURL=overrides.js.map
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcnJpZGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy9vdmVycmlkZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5Q0FBc0M7QUFDdEMscUNBQXNDO0FBRXRDLFdBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFNBQVMsUUFBUSxDQUFDLElBQVk7SUFDdEQsT0FBTyxJQUFBLG1CQUFZLEVBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVVVJRCB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgdXVpZEZyb21TZWVkIH0gZnJvbSBcIi4vdXVpZFwiO1xuXG5VVUlELnByb3RvdHlwZS5nZW5lcmF0ZSA9IGZ1bmN0aW9uIGdlbmVyYXRlKHNlZWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIHJldHVybiB1dWlkRnJvbVNlZWQoc2VlZCk7XG59O1xuIl19
@@ -201,4 +201,4 @@
201
201
  // }
202
202
  // return result as { model: M; private?: Record<string, Record<string, any>> };
203
203
  // }
204
- //# sourceMappingURL=private-data.js.map
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZS1kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy9wcml2YXRlLWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtFQUErRTtBQUMvRSwwREFBMEQ7QUFDMUQseURBQXlEO0FBQ3pELGdFQUFnRTtBQUNoRSxFQUFFO0FBQ0YsNENBQTRDO0FBQzVDLG1GQUFtRjtBQUNuRixFQUFFO0FBQ0Ysb0RBQW9EO0FBQ3BELHNFQUFzRTtBQUN0RSxFQUFFO0FBQ0YsMEVBQTBFO0FBQzFFLDhDQUE4QztBQUM5QywrQ0FBK0M7QUFDL0MsRUFBRTtBQUNGLDZDQUE2QztBQUM3QywyQ0FBMkM7QUFDM0Msc0RBQXNEO0FBQ3RELHdEQUF3RDtBQUN4RCwrQ0FBK0M7QUFDL0MsOENBQThDO0FBQzlDLHVCQUF1QjtBQUN2QixhQUFhO0FBQ2IsOENBQThDO0FBQzlDLGdGQUFnRjtBQUNoRixtQ0FBbUM7QUFDbkMsd0JBQXdCO0FBQ3hCLFdBQVc7QUFDWCxXQUFXO0FBQ1gsU0FBUztBQUNULE9BQU87QUFDUCxFQUFFO0FBQ0YsK0JBQStCO0FBQy9CLDREQUE0RDtBQUM1RCxFQUFFO0FBQ0YsOENBQThDO0FBQzlDLDJEQUEyRDtBQUMzRCwyQ0FBMkM7QUFDM0MsV0FBVztBQUNYLFFBQVE7QUFDUixNQUFNO0FBQ04sRUFBRTtBQUNGLGFBQWE7QUFDYiw4QkFBOEI7QUFDOUIsc0NBQXNDO0FBQ3RDLHdDQUF3QztBQUN4QywrQ0FBK0M7QUFDL0MsT0FBTztBQUNQLElBQUk7QUFDSixFQUFFO0FBQ0YsOERBQThEO0FBQzlELGlEQUFpRDtBQUNqRCxJQUFJO0FBQ0osRUFBRTtBQUNGLGdFQUFnRTtBQUNoRSxhQUFhO0FBQ2IsdUNBQXVDO0FBQ3ZDLHFEQUFxRDtBQUNyRCxxREFBcUQ7QUFDckQsK0RBQStEO0FBQy9ELG9EQUFvRDtBQUNwRCxTQUFTO0FBQ1Qsc0JBQXNCO0FBQ3RCLHFFQUFxRTtBQUNyRSxNQUFNO0FBQ04sNkVBQTZFO0FBQzdFLDhEQUE4RDtBQUM5RCw2Q0FBNkM7QUFDN0MscURBQXFEO0FBQ3JELCtEQUErRDtBQUMvRCxxRUFBcUU7QUFDckUsVUFBVTtBQUNWLHNCQUFzQjtBQUN0QixTQUFTO0FBQ1QsZ0NBQWdDO0FBQ2hDLE9BQU87QUFDUCx5REFBeUQ7QUFDekQsbUNBQW1DO0FBQ25DLHVEQUF1RDtBQUN2RCxPQUFPO0FBQ1AsMEJBQTBCO0FBQzFCLHdDQUF3QztBQUN4QyxxREFBcUQ7QUFDckQsNkNBQTZDO0FBQzdDLHFEQUFxRDtBQUNyRCw4Q0FBOEM7QUFDOUMsZ0NBQWdDO0FBQ2hDLHFCQUFxQjtBQUNyQixxREFBcUQ7QUFDckQsc0NBQXNDO0FBQ3RDLFNBQVM7QUFDVCxnQ0FBZ0M7QUFDaEMsaURBQWlEO0FBQ2pELHdCQUF3QjtBQUN4Qix1REFBdUQ7QUFDdkQsTUFBTTtBQUNOLGdFQUFnRTtBQUNoRSxJQUFJO0FBQ0osRUFBRTtBQUNGLHVFQUF1RTtBQUN2RSx3Q0FBd0M7QUFDeEMsd0NBQXdDO0FBQ3hDLHFFQUFxRTtBQUNyRSxPQUFPO0FBQ1AsOENBQThDO0FBQzlDLElBQUk7QUFDSixFQUFFO0FBQ0YsbURBQW1EO0FBQ25ELGFBQWE7QUFDYixtRUFBbUU7QUFDbkUseURBQXlEO0FBQ3pELEVBQUU7QUFDRiw2Q0FBNkM7QUFDN0Msa0RBQWtEO0FBQ2xELDBDQUEwQztBQUMxQyxFQUFFO0FBQ0Ysa0ZBQWtGO0FBQ2xGLDJDQUEyQztBQUMzQywwQkFBMEI7QUFDMUIsT0FBTztBQUNQLEVBQUU7QUFDRiwyR0FBMkc7QUFDM0cscUJBQXFCO0FBQ3JCLHdEQUF3RDtBQUN4RCxpQkFBaUI7QUFDakIsb0VBQW9FO0FBQ3BFLGdCQUFnQjtBQUNoQixVQUFVO0FBQ1YsZ0ZBQWdGO0FBQ2hGLFlBQVk7QUFDWixlQUFlO0FBQ2YsNERBQTREO0FBQzVELCtDQUErQztBQUMvQyxFQUFFO0FBQ0Ysa0RBQWtEO0FBQ2xELGtCQUFrQjtBQUNsQiwyRUFBMkU7QUFDM0Usa0VBQWtFO0FBQ2xFLG1DQUFtQztBQUNuQyw0Q0FBNEM7QUFDNUMsa0VBQWtFO0FBQ2xFLGlCQUFpQjtBQUNqQixjQUFjO0FBQ2QsWUFBWTtBQUNaLEVBQUU7QUFDRix3QkFBd0I7QUFDeEIsV0FBVztBQUNYLGlEQUFpRDtBQUNqRCxzQ0FBc0M7QUFDdEMseUNBQXlDO0FBQ3pDLFVBQVU7QUFDVixTQUFTO0FBQ1QsYUFBYTtBQUNiLHdEQUF3RDtBQUN4RCxVQUFVO0FBQ1YsZ0ZBQWdGO0FBQ2hGLG1CQUFtQjtBQUNuQixlQUFlO0FBQ2YsK0VBQStFO0FBQy9FLGlEQUFpRDtBQUNqRCxFQUFFO0FBQ0Ysd0VBQXdFO0FBQ3hFLEVBQUU7QUFDRixxQ0FBcUM7QUFDckMsaURBQWlEO0FBQ2pELEVBQUU7QUFDRixvREFBb0Q7QUFDcEQsb0JBQW9CO0FBQ3BCLDZFQUE2RTtBQUM3RSxvRUFBb0U7QUFDcEUscUNBQXFDO0FBQ3JDLDhDQUE4QztBQUM5QyxvRUFBb0U7QUFDcEUsbUJBQW1CO0FBQ25CLGdCQUFnQjtBQUNoQixjQUFjO0FBQ2QsbUJBQW1CO0FBQ25CLDZDQUE2QztBQUM3QyxnRUFBZ0U7QUFDaEUsWUFBWTtBQUNaLHdCQUF3QjtBQUN4QixXQUFXO0FBQ1gsNEVBQTRFO0FBQzVFLFNBQVM7QUFDVCxNQUFNO0FBQ04sRUFBRTtBQUNGLHVDQUF1QztBQUN2QyxFQUFFO0FBQ0Ysc0VBQXNFO0FBQ3RFLEVBQUU7QUFDRiwwQkFBMEI7QUFDMUIsdURBQXVEO0FBQ3ZELEVBQUU7QUFDRiw4Q0FBOEM7QUFDOUMsbURBQW1EO0FBQ25ELHVDQUF1QztBQUN2QyxpQ0FBaUM7QUFDakMsV0FBVztBQUNYLFFBQVE7QUFDUixNQUFNO0FBQ04sa0ZBQWtGO0FBQ2xGLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgeyBJbnRlcm5hbEVycm9yLCBTZXJpYWxpemF0aW9uRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbi8vIGltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuLy8gaW1wb3J0IHsgRmFicmljTW9kZWxLZXlzIH0gZnJvbSBcIi4uL3NoYXJlZC9jb25zdGFudHNcIjtcbi8vIGltcG9ydCB7IENvbnN0cnVjdG9yLCBNZXRhZGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuLy9cbi8vIGV4cG9ydCBjb25zdCBNSVNTSU5HX1BSSVZBVEVfREFUQV9SRUdFWCA9XG4vLyAgIC9wcml2YXRlXFxzK2RhdGFcXHMrbWF0Y2hpbmdcXHMrcHVibGljXFxzK2hhc2hcXHMrdmVyc2lvblxccytpc1xccytub3RcXHMrYXZhaWxhYmxlL2k7XG4vL1xuLy8gZXhwb3J0IGNvbnN0IE1JU1NJTkdfUFJJVkFURV9EQVRBX0VSUk9SX01FU1NBR0UgPVxuLy8gICBcInByaXZhdGUgZGF0YSBtYXRjaGluZyBwdWJsaWMgaGFzaCB2ZXJzaW9uIGlzIG5vdCBhdmFpbGFibGUgLi4uXCI7XG4vL1xuLy8gZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NNb2RlbDxNIGV4dGVuZHMgTW9kZWw+KGFkYXB0ZXI6IGFueSwgbW9kZWw6IE0pIHtcbi8vICAgY29uc3QgdHJhbnNpZW50ID0gTW9kZWwuc2VncmVnYXRlKG1vZGVsKTtcbi8vICAgY29uc3QgcHJpdmF0ZURhdGEgPSBtb2RlbFRvUHJpdmF0ZShtb2RlbCk7XG4vL1xuLy8gICBjb25zdCB0cmFuc2Zvcm1Nb2RlbCA9IChtb2RlbDogYW55KSA9PiB7XG4vLyAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG1vZGVsKS5yZWR1Y2UoXG4vLyAgICAgICAoYWNjdW06IFJlY29yZDxzdHJpbmcsIGFueT4sIFtrZXksIHZhbF0pID0+IHtcbi8vICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybiBhY2N1bTtcbi8vICAgICAgICAgY29uc3QgbWFwcGVkUHJvcCA9IE1vZGVsLmNvbHVtbk5hbWUoXG4vLyAgICAgICAgICAgbW9kZWwuY29uc3RydWN0b3IgYXMgQ29uc3RydWN0b3IsXG4vLyAgICAgICAgICAga2V5IGFzIGFueVxuLy8gICAgICAgICApO1xuLy8gICAgICAgICBpZiAoYWRhcHRlci5pc1Jlc2VydmVkKG1hcHBlZFByb3ApKVxuLy8gICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBQcm9wZXJ0eSBuYW1lICR7bWFwcGVkUHJvcH0gaXMgcmVzZXJ2ZWRgKTtcbi8vICAgICAgICAgYWNjdW1bbWFwcGVkUHJvcF0gPSB2YWw7XG4vLyAgICAgICAgIHJldHVybiBhY2N1bTtcbi8vICAgICAgIH0sXG4vLyAgICAgICB7fVxuLy8gICAgICk7XG4vLyAgIH07XG4vL1xuLy8gICBpZiAocHJpdmF0ZURhdGEucHJpdmF0ZSkge1xuLy8gICAgIGNvbnN0IGNvbGxlY3Rpb25zID0gT2JqZWN0LmtleXMocHJpdmF0ZURhdGEucHJpdmF0ZSk7XG4vL1xuLy8gICAgIGZvciAoY29uc3QgY29sbGVjdGlvbiBvZiBjb2xsZWN0aW9ucykge1xuLy8gICAgICAgcHJpdmF0ZURhdGEucHJpdmF0ZSFbY29sbGVjdGlvbl0gPSB0cmFuc2Zvcm1Nb2RlbChcbi8vICAgICAgICAgcHJpdmF0ZURhdGEucHJpdmF0ZSFbY29sbGVjdGlvbl1cbi8vICAgICAgICk7XG4vLyAgICAgfVxuLy8gICB9XG4vL1xuLy8gICByZXR1cm4ge1xuLy8gICAgIG1vZGVsOiB0cmFuc2llbnQubW9kZWwsXG4vLyAgICAgdHJhbnNpZW50OiB0cmFuc2llbnQudHJhbnNpZW50LFxuLy8gICAgIHByaXZhdGVEYXRhOiBwcml2YXRlRGF0YS5wcml2YXRlLFxuLy8gICAgIHJlc3VsdDogdHJhbnNmb3JtTW9kZWwodHJhbnNpZW50Lm1vZGVsKSxcbi8vICAgfTtcbi8vIH1cbi8vXG4vLyBleHBvcnQgZnVuY3Rpb24gaGFzUHJpdmF0ZURhdGE8TSBleHRlbmRzIE1vZGVsPihtb2RlbDogTSkge1xuLy8gICByZXR1cm4gISFnZXRDbGFzc1ByaXZhdGVEYXRhTWV0YWRhdGEobW9kZWwpO1xuLy8gfVxuLy9cbi8vIGV4cG9ydCBmdW5jdGlvbiBnZXRDbGFzc1ByaXZhdGVEYXRhTWV0YWRhdGE8TSBleHRlbmRzIE1vZGVsPihcbi8vICAgbW9kZWw6IE1cbi8vICk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuLy8gICBjb25zdCBjb25zdHIgPSBtb2RlbC5jb25zdHJ1Y3RvciBhcyBDb25zdHJ1Y3Rvcjtcbi8vICAgY29uc3Qgcm9vdE1ldGFkYXRhID0gTWV0YWRhdGEuZ2V0KGNvbnN0cikgfHwge307XG4vLyAgIGlmIChyb290TWV0YWRhdGEgJiYgcm9vdE1ldGFkYXRhW0ZhYnJpY01vZGVsS2V5cy5QUklWQVRFXSlcbi8vICAgICByZXR1cm4gcm9vdE1ldGFkYXRhW0ZhYnJpY01vZGVsS2V5cy5QUklWQVRFXTtcbi8vICAgaWYgKFxuLy8gICAgIHJvb3RNZXRhZGF0YSAmJlxuLy8gICAgIHJvb3RNZXRhZGF0YVtGYWJyaWNNb2RlbEtleXMuRkFCUklDICsgRmFicmljTW9kZWxLZXlzLlBSSVZBVEVdXG4vLyAgIClcbi8vICAgICByZXR1cm4gcm9vdE1ldGFkYXRhW0ZhYnJpY01vZGVsS2V5cy5GQUJSSUMgKyBGYWJyaWNNb2RlbEtleXMuUFJJVkFURV07XG4vLyAgIGNvbnN0IGZsYXR0ZW5lZCA9IE9iamVjdC5rZXlzKHJvb3RNZXRhZGF0YSB8fCB7fSkucmVkdWNlKFxuLy8gICAgIChhY2N1bTogUmVjb3JkPHN0cmluZywgYW55Piwga2V5KSA9PiB7XG4vLyAgICAgICBpZiAoa2V5LmluY2x1ZGVzKEZhYnJpY01vZGVsS2V5cy5QUklWQVRFKSkge1xuLy8gICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IGtleS5zcGxpdChNZXRhZGF0YS5zcGxpdHRlcikucG9wKCk7XG4vLyAgICAgICAgIGlmIChwcm9wZXJ0eSkgYWNjdW1bcHJvcGVydHldID0gTWV0YWRhdGEuZ2V0KGNvbnN0ciwga2V5KTtcbi8vICAgICAgIH1cbi8vICAgICAgIHJldHVybiBhY2N1bTtcbi8vICAgICB9LFxuLy8gICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIGFueT5cbi8vICAgKTtcbi8vICAgaWYgKE9iamVjdC5rZXlzKGZsYXR0ZW5lZCkubGVuZ3RoKSByZXR1cm4gZmxhdHRlbmVkO1xuLy8gICBjb25zdCBjbGFzc0tleSA9IE1ldGFkYXRhLmtleShcbi8vICAgICBGYWJyaWNNb2RlbEtleXMuRkFCUklDICsgRmFicmljTW9kZWxLZXlzLlBSSVZBVEVcbi8vICAgKTtcbi8vICAgY29uc3QgY2xhc3NNZXRhZGF0YSA9XG4vLyAgICAgTWV0YWRhdGEuZ2V0KGNvbnN0ciwgY2xhc3NLZXkpID8/XG4vLyAgICAgTWV0YWRhdGEuZ2V0KGNvbnN0ciwgRmFicmljTW9kZWxLZXlzLlBSSVZBVEUpO1xuLy8gICBpZiAoY2xhc3NNZXRhZGF0YSkgcmV0dXJuIGNsYXNzTWV0YWRhdGE7XG4vLyAgIGNvbnN0IHByb3BzID0gTWV0YWRhdGEucHJvcGVydGllcyhjb25zdHIpIHx8IFtdO1xuLy8gICBjb25zdCBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuLy8gICBmb3IgKGNvbnN0IHByb3Agb2YgcHJvcHMpIHtcbi8vICAgICBjb25zdCBrZXlzID0gW1xuLy8gICAgICAgTWV0YWRhdGEua2V5KEZhYnJpY01vZGVsS2V5cy5QUklWQVRFLCBwcm9wKSxcbi8vICAgICAgIE1ldGFkYXRhLmtleShjbGFzc0tleSwgcHJvcCksXG4vLyAgICAgXTtcbi8vICAgICBjb25zdCBwcm9wTWV0YWRhdGEgPSBrZXlzXG4vLyAgICAgICAubWFwKChrZXkpID0+IE1ldGFkYXRhLmdldChjb25zdHIsIGtleSkpXG4vLyAgICAgICAuZmluZChCb29sZWFuKTtcbi8vICAgICBpZiAocHJvcE1ldGFkYXRhKSBtZXRhZGF0YVtwcm9wXSA9IHByb3BNZXRhZGF0YTtcbi8vICAgfVxuLy8gICByZXR1cm4gT2JqZWN0LmtleXMobWV0YWRhdGEpLmxlbmd0aCA/IG1ldGFkYXRhIDogdW5kZWZpbmVkO1xuLy8gfVxuLy9cbi8vIGV4cG9ydCBmdW5jdGlvbiBpc01vZGVsUHJpdmF0ZTxNIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBNKTogYm9vbGVhbiB7XG4vLyAgIGNvbnN0IGNsYXNzTWV0YWRhdGEgPSBNZXRhZGF0YS5nZXQoXG4vLyAgICAgbW9kZWwuY29uc3RydWN0b3IgYXMgQ29uc3RydWN0b3IsXG4vLyAgICAgTWV0YWRhdGEua2V5KEZhYnJpY01vZGVsS2V5cy5GQUJSSUMgKyBGYWJyaWNNb2RlbEtleXMuUFJJVkFURSlcbi8vICAgKTtcbi8vICAgcmV0dXJuIEJvb2xlYW4oY2xhc3NNZXRhZGF0YT8uaXNQcml2YXRlKTtcbi8vIH1cbi8vXG4vLyBleHBvcnQgZnVuY3Rpb24gbW9kZWxUb1ByaXZhdGU8TSBleHRlbmRzIE1vZGVsPihcbi8vICAgbW9kZWw6IE1cbi8vICk6IHsgbW9kZWw6IE07IHByaXZhdGU/OiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB9IHtcbi8vICAgaWYgKCFoYXNQcml2YXRlRGF0YShtb2RlbCkpIHJldHVybiB7IG1vZGVsOiBtb2RlbCB9O1xuLy9cbi8vICAgY29uc3QgaXNQcml2YXRlID0gaXNNb2RlbFByaXZhdGUobW9kZWwpO1xuLy8gICBjb25zdCBtb2RlbENvbGxlY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID1cbi8vICAgICBnZXRDbGFzc1ByaXZhdGVEYXRhTWV0YWRhdGEobW9kZWwpO1xuLy9cbi8vICAgbGV0IHJlc3VsdDogeyBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PjsgcHJpdmF0ZT86IFJlY29yZDxzdHJpbmcsIGFueT4gfSA9IHtcbi8vICAgICBtb2RlbDogbW9kZWwgYXMgUmVjb3JkPHN0cmluZywgYW55Pixcbi8vICAgICBwcml2YXRlOiB1bmRlZmluZWQsXG4vLyAgIH07XG4vL1xuLy8gICAvLyBUT0RPOiB0aGUgaXMgcHJpdmF0ZSBpcyBub3Qgd29ya2lnbiBjb3JyZWN0bHkuIElmIG5vIHByb3BlcnRpZXMgaXQgZG9lc24ndCBjcmVhdGUgdGhlIHByaXZhdGUgcGFydC5cbi8vICAgaWYgKGlzUHJpdmF0ZSkge1xuLy8gICAgIGNvbnN0IHByaXZhdGVQYXJ0ID0gbW9kZWxDb2xsZWN0aW9ucy5jb2xsZWN0aW9ucztcbi8vICAgICByZXN1bHQgPSAoXG4vLyAgICAgICBNZXRhZGF0YS5wcm9wZXJ0aWVzKG1vZGVsLmNvbnN0cnVjdG9yIGFzIENvbnN0cnVjdG9yKSB8fCBbXVxuLy8gICAgICkucmVkdWNlKFxuLy8gICAgICAgKFxuLy8gICAgICAgICBhY2N1bTogeyBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PjsgcHJpdmF0ZT86IFJlY29yZDxzdHJpbmcsIGFueT4gfSxcbi8vICAgICAgICAga1xuLy8gICAgICAgKSA9PiB7XG4vLyAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb25zID0gbW9kZWxDb2xsZWN0aW9ucy5jb2xsZWN0aW9ucztcbi8vICAgICAgICAgYWNjdW0ucHJpdmF0ZSA9IGFjY3VtLnByaXZhdGUgfHwge307XG4vL1xuLy8gICAgICAgICBmb3IgKGNvbnN0IGNvbGxlY3Rpb24gb2YgY29sbGVjdGlvbnMpIHtcbi8vICAgICAgICAgICB0cnkge1xuLy8gICAgICAgICAgICAgYWNjdW0ucHJpdmF0ZVtjb2xsZWN0aW9uXSA9IGFjY3VtLnByaXZhdGVbY29sbGVjdGlvbl0gfHwge307XG4vLyAgICAgICAgICAgICBhY2N1bS5wcml2YXRlW2NvbGxlY3Rpb25dW2tdID0gbW9kZWxbayBhcyBrZXlvZiBNXTtcbi8vICAgICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4vLyAgICAgICAgICAgICB0aHJvdyBuZXcgU2VyaWFsaXphdGlvbkVycm9yKFxuLy8gICAgICAgICAgICAgICBgRmFpbGVkIHRvIHNlcmlhbGl6ZSBwcml2YXRlIHByb3BlcnR5ICR7a306ICR7ZX1gXG4vLyAgICAgICAgICAgICApO1xuLy8gICAgICAgICAgIH1cbi8vICAgICAgICAgfVxuLy9cbi8vICAgICAgICAgcmV0dXJuIGFjY3VtO1xuLy8gICAgICAgfSxcbi8vICAgICAgIHsgbW9kZWw6IHt9LCBwcml2YXRlOiBwcml2YXRlUGFydCB9IGFzIHtcbi8vICAgICAgICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT47XG4vLyAgICAgICAgIHByaXZhdGU/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuLy8gICAgICAgfVxuLy8gICAgICk7XG4vLyAgIH0gZWxzZSB7XG4vLyAgICAgcmVzdWx0ID0gT2JqZWN0LmVudHJpZXMobW9kZWxDb2xsZWN0aW9ucykucmVkdWNlKFxuLy8gICAgICAgKFxuLy8gICAgICAgICBhY2N1bTogeyBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PjsgcHJpdmF0ZT86IFJlY29yZDxzdHJpbmcsIGFueT4gfSxcbi8vICAgICAgICAgW2ssIHZhbF1cbi8vICAgICAgICkgPT4ge1xuLy8gICAgICAgICBjb25zdCBwcm9wcyA9IE1ldGFkYXRhLnByb3BlcnRpZXMobW9kZWwuY29uc3RydWN0b3IgYXMgQ29uc3RydWN0b3IpO1xuLy8gICAgICAgICBpZiAoIXByb3BzPy5pbmNsdWRlcyhrKSkgcmV0dXJuIGFjY3VtO1xuLy9cbi8vICAgICAgICAgY29uc3QgY29sbGVjdGlvbnMgPSAodmFsIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pLmNvbGxlY3Rpb25zO1xuLy9cbi8vICAgICAgICAgaWYgKGNvbGxlY3Rpb25zPy5sZW5ndGgpIHtcbi8vICAgICAgICAgICBhY2N1bS5wcml2YXRlID0gYWNjdW0ucHJpdmF0ZSB8fCB7fTtcbi8vXG4vLyAgICAgICAgICAgZm9yIChjb25zdCBjb2xsZWN0aW9uIG9mIGNvbGxlY3Rpb25zKSB7XG4vLyAgICAgICAgICAgICB0cnkge1xuLy8gICAgICAgICAgICAgICBhY2N1bS5wcml2YXRlW2NvbGxlY3Rpb25dID0gYWNjdW0ucHJpdmF0ZVtjb2xsZWN0aW9uXSB8fCB7fTtcbi8vICAgICAgICAgICAgICAgYWNjdW0ucHJpdmF0ZVtjb2xsZWN0aW9uXVtrXSA9IG1vZGVsW2sgYXMga2V5b2YgTV07XG4vLyAgICAgICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4vLyAgICAgICAgICAgICAgIHRocm93IG5ldyBTZXJpYWxpemF0aW9uRXJyb3IoXG4vLyAgICAgICAgICAgICAgICAgYEZhaWxlZCB0byBzZXJpYWxpemUgcHJpdmF0ZSBwcm9wZXJ0eSAke2t9OiAke2V9YFxuLy8gICAgICAgICAgICAgICApO1xuLy8gICAgICAgICAgICAgfVxuLy8gICAgICAgICAgIH1cbi8vICAgICAgICAgfSBlbHNlIHtcbi8vICAgICAgICAgICBhY2N1bS5tb2RlbCA9IGFjY3VtLm1vZGVsIHx8IHt9O1xuLy8gICAgICAgICAgIGFjY3VtLm1vZGVsW2tdID0gKG1vZGVsIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW2tdO1xuLy8gICAgICAgICB9XG4vLyAgICAgICAgIHJldHVybiBhY2N1bTtcbi8vICAgICAgIH0sXG4vLyAgICAgICB7fSBhcyB7IG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+OyBwcml2YXRlPzogUmVjb3JkPHN0cmluZywgYW55PiB9XG4vLyAgICAgKTtcbi8vICAgfVxuLy9cbi8vICAgcmVzdWx0Lm1vZGVsID0gcmVzdWx0Lm1vZGVsIHx8IHt9O1xuLy9cbi8vICAgcmVzdWx0Lm1vZGVsID0gTW9kZWwuYnVpbGQocmVzdWx0Lm1vZGVsLCBtb2RlbC5jb25zdHJ1Y3Rvci5uYW1lKTtcbi8vXG4vLyAgIGlmIChyZXN1bHQucHJpdmF0ZSkge1xuLy8gICAgIGNvbnN0IGNvbGxlY3Rpb25zID0gT2JqZWN0LmtleXMocmVzdWx0LnByaXZhdGUpO1xuLy9cbi8vICAgICBmb3IgKGNvbnN0IGNvbGxlY3Rpb24gb2YgY29sbGVjdGlvbnMpIHtcbi8vICAgICAgIHJlc3VsdC5wcml2YXRlIVtjb2xsZWN0aW9uXSA9IE1vZGVsLmJ1aWxkKFxuLy8gICAgICAgICByZXN1bHQucHJpdmF0ZSFbY29sbGVjdGlvbl0sXG4vLyAgICAgICAgIG1vZGVsLmNvbnN0cnVjdG9yLm5hbWVcbi8vICAgICAgICk7XG4vLyAgICAgfVxuLy8gICB9XG4vLyAgIHJldHVybiByZXN1bHQgYXMgeyBtb2RlbDogTTsgcHJpdmF0ZT86IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIGFueT4+IH07XG4vLyB9XG4iXX0=
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFpbmNvZGVTdHViLCBDbGllbnRJZGVudGl0eSB9IGZyb20gXCJmYWJyaWMtc2hpbS1hcGlcIjtcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgRmFicmljRmxhZ3MgfSBmcm9tIFwiLi4vc2hhcmVkL2luZGV4XCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZsYWdzIGZvciBGYWJyaWMgY2hhaW5jb2RlIGNvbnRyYWN0IG9wZXJhdGlvbnNcbiAqIEBzdW1tYXJ5IEV4dGVuZHMgcmVwb3NpdG9yeSBmbGFncyB3aXRoIEZhYnJpYy1zcGVjaWZpYyBjb250ZXh0IGVsZW1lbnRzIGF2YWlsYWJsZSBkdXJpbmcgRmFicmljIGNoYWluY29kZSBleGVjdXRpb24sIHN1Y2ggYXMgdGhlIENoYWluY29kZVN0dWIsIENsaWVudElkZW50aXR5IGFuZCBhIHJlcXVlc3Qtc2NvcGVkIExvZ2dlci5cbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAcGFyYW0ge1JlcG9zaXRvcnlGbGFnc30gW2Jhc2VdIC0gQmFzZSByZXBvc2l0b3J5IGZsYWdzIHRoYXQgdGhlc2UgRmFicmljLXNwZWNpZmljIGZsYWdzIGV4dGVuZFxuICogQHJldHVybiB7dm9pZH1cbiAqIEBpbnRlcmZhY2UgRmFicmljQ29udHJhY3RGbGFnc1xuICogQG1lbWJlck9mIG1vZHVsZTpmYWJyaWMuY29udHJhY3RzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmFicmljQ29udHJhY3RGbGFncyBleHRlbmRzIEZhYnJpY0ZsYWdzIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDaGFpbmNvZGUgc3R1YiBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgbGVkZ2VyXG4gICAqL1xuICBzdHViOiBDaGFpbmNvZGVTdHViO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ2xpZW50IGlkZW50aXR5IGZvciB0aGUgdHJhbnNhY3Rpb24gc3VibWl0dGVyXG4gICAqL1xuICBpZGVudGl0eTogQ2xpZW50SWRlbnRpdHk7XG5cbiAgcm9sZXM/OiBzdHJpbmdbXTtcblxuICBjZXJ0OiBzdHJpbmc7XG5cbiAgc2VncmVnYXRlV3JpdGU/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBzZWdyZWdhdGVSZWFkOiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIExvZ2dlciBpbnN0YW5jZSBmb3IgdGhlIGNvbnRyYWN0XG4gICAqL1xuICBsb2dnZXI6IExvZ2dlcjtcbn1cbiJdfQ==
@@ -72,4 +72,4 @@ async function uuidFromSeed(seed) {
72
72
  bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);
73
73
  return bytesToUuidV5Style(bytes);
74
74
  }
75
- //# sourceMappingURL=uuid.js.map
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXVpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdHMvdXVpZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLGdEQWtCQztBQUVELG9DQXVCQztBQTdDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0FBRWxDLFNBQWdCLGtCQUFrQixDQUFDLE9BQW1CO0lBQ3BELE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRS9CLDhEQUE4RDtJQUM5RCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBRTVCLHFDQUFxQztJQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBRTVCLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUV4RSxPQUFPO1FBQ0wsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2YsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2hCLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUNqQixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDakIsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0tBQ2xCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2QsQ0FBQztBQUVNLEtBQUssVUFBVSxZQUFZLENBQUMsSUFBWTtJQUM3Qyx1Q0FBdUM7SUFDdkMsSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCx5RUFBeUU7SUFDekUsTUFBTSxVQUFVLEdBQUcsd0RBQWEsUUFBUSxHQUFDLENBQUM7SUFDMUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsR0FBRyxVQUFVLENBQUM7SUFFN0MsSUFBSSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDdEIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxNQUFNLE1BQU0sR0FBRyxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5RCxPQUFPLGtCQUFrQixDQUFDLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDekIsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2RCxPQUFPLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBieXRlc1RvVXVpZFY1U3R5bGUoYnl0ZXMxNjogVWludDhBcnJheSk6IHN0cmluZyB7XG4gIGNvbnN0IGIgPSBieXRlczE2LnNsaWNlKDAsIDE2KTtcblxuICAvLyBTZXQgdmVyc2lvbiB0byA1ICgwMTAxeHh4eCkgdG8gc2lnbmFsIGRldGVybWluaXN0aWMgaGFzaGluZ1xuICBiWzZdID0gKGJbNl0gJiAweDBmKSB8IDB4NTA7XG5cbiAgLy8gU2V0IHZhcmlhbnQgdG8gUkZDIDQxMjIgKDEweHh4eHh4KVxuICBiWzhdID0gKGJbOF0gJiAweDNmKSB8IDB4ODA7XG5cbiAgY29uc3QgaGV4ID0gWy4uLmJdLm1hcCgoeCkgPT4geC50b1N0cmluZygxNikucGFkU3RhcnQoMiwgXCIwXCIpKS5qb2luKFwiXCIpO1xuXG4gIHJldHVybiBbXG4gICAgaGV4LnNsaWNlKDAsIDgpLFxuICAgIGhleC5zbGljZSg4LCAxMiksXG4gICAgaGV4LnNsaWNlKDEyLCAxNiksXG4gICAgaGV4LnNsaWNlKDE2LCAyMCksXG4gICAgaGV4LnNsaWNlKDIwLCAzMiksXG4gIF0uam9pbihcIi1cIik7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1dWlkRnJvbVNlZWQoc2VlZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgLy8gQnJvd3NlciAvIGFueSBydW50aW1lIHdpdGggV2ViQ3J5cHRvXG4gIGlmIChnbG9iYWxUaGlzLmNyeXB0bz8uc3VidGxlKSB7XG4gICAgY29uc3QgZGF0YSA9IGVuY29kZXIuZW5jb2RlKHNlZWQpO1xuICAgIGNvbnN0IGRpZ2VzdCA9IGF3YWl0IGdsb2JhbFRoaXMuY3J5cHRvLnN1YnRsZS5kaWdlc3QoXCJTSEEtMjU2XCIsIGRhdGEpO1xuICAgIHJldHVybiBieXRlc1RvVXVpZFY1U3R5bGUobmV3IFVpbnQ4QXJyYXkoZGlnZXN0KS5zbGljZSgwLCAxNikpO1xuICB9XG5cbiAgLy8gTm9kZSBmYWxsYmFjazogZHluYW1pYyBpbXBvcnQgYXZvaWRzIGJ1bmRsaW5nIG5vZGU6Y3J5cHRvIGludG8gYnJvd3NlclxuICBjb25zdCBub2RlQ3J5cHRvID0gYXdhaXQgaW1wb3J0KFwiY3J5cHRvXCIpO1xuICBjb25zdCB7IGNyZWF0ZUhhc2gsIHdlYmNyeXB0byB9ID0gbm9kZUNyeXB0bztcblxuICBpZiAod2ViY3J5cHRvPy5zdWJ0bGUpIHtcbiAgICBjb25zdCBkYXRhID0gZW5jb2Rlci5lbmNvZGUoc2VlZCk7XG4gICAgY29uc3QgZGlnZXN0ID0gYXdhaXQgd2ViY3J5cHRvLnN1YnRsZS5kaWdlc3QoXCJTSEEtMjU2XCIsIGRhdGEpO1xuICAgIHJldHVybiBieXRlc1RvVXVpZFY1U3R5bGUobmV3IFVpbnQ4QXJyYXkoZGlnZXN0KS5zbGljZSgwLCAxNikpO1xuICB9XG5cbiAgY29uc3QgaGV4ID0gY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoc2VlZCkuZGlnZXN0KFwiaGV4XCIpO1xuICBjb25zdCBieXRlcyA9IG5ldyBVaW50OEFycmF5KDE2KTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNjsgaSsrKVxuICAgIGJ5dGVzW2ldID0gcGFyc2VJbnQoaGV4LnNsaWNlKGkgKiAyLCBpICogMiArIDIpLCAxNik7XG4gIHJldHVybiBieXRlc1RvVXVpZFY1U3R5bGUoYnl0ZXMpO1xufVxuIl19
@@ -1,3 +1,3 @@
1
1
  import fabric from "./../cli-module.js";
2
2
  fabric().parse(process.argv);
3
- //# sourceMappingURL=cli.js.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jpbi9jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLDJCQUFzQjtBQUVuQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZhYnJpYyBmcm9tIFwiLi4vY2xpLW1vZHVsZVwiO1xuXG5mYWJyaWMoKS5wYXJzZShwcm9jZXNzLmFyZ3YpO1xuIl19
@@ -217,80 +217,89 @@ const extractCollections = new Command()
217
217
  log.info(`No shared, private, or mirrored models found to extract collections`);
218
218
  return;
219
219
  }
220
- const cols = await Promise.all(injectableModels.map(async (clazz) => {
221
- const tableName = Model.tableName(clazz);
222
- const meta = Metadata.get(clazz);
223
- const mirrorMeta = Model.mirroredAt(clazz);
224
- console.log(tableName);
225
- const collections = {};
226
- for (const msp of mspIds) {
227
- collections[msp] = await exCollections(clazz, [msp, mainMspId], {},
228
- // {
229
- // sharedCols: Object.assign({}, overrides.sharedCols),
230
- // privateCols: Object.assign({}, overrides.privateCols),
231
- // },
232
- !!mirrorMeta);
233
- }
234
- let mirrorCollection = undefined;
235
- if (mirrorMeta) {
236
- collections[mainMspId] = collections[mainMspId] || {};
237
- Object.keys(collections).forEach((msp) => {
238
- collections[mainMspId].privates = collections[msp].privates?.filter((p) => {
239
- if (p.name !== mirrorMeta.resolver)
240
- return true;
241
- mirrorCollection = p;
242
- return false;
220
+ async function getCols(mspIdsList) {
221
+ const cols = await Promise.all(injectableModels.map(async (clazz) => {
222
+ const tableName = Model.tableName(clazz);
223
+ const meta = Metadata.get(clazz);
224
+ const mirrorMeta = Model.mirroredAt(clazz);
225
+ console.log(tableName);
226
+ const collections = {};
227
+ for (const msp of mspIdsList || mspIds || []) {
228
+ collections[msp] = await exCollections(clazz, [msp, mainMspId], {},
229
+ // {
230
+ // sharedCols: Object.assign({}, overrides.sharedCols),
231
+ // privateCols: Object.assign({}, overrides.privateCols),
232
+ // },
233
+ !!mirrorMeta);
234
+ }
235
+ let mirrorCollection = undefined;
236
+ if (mirrorMeta) {
237
+ collections[mainMspId] = collections[mainMspId] || {};
238
+ Object.keys(collections).forEach((msp) => {
239
+ collections[mainMspId].privates = collections[msp].privates?.filter((p) => {
240
+ if (p.name !== mirrorMeta.resolver)
241
+ return true;
242
+ mirrorCollection = p;
243
+ return false;
244
+ });
243
245
  });
244
- });
245
- }
246
- const privatesCount = Object.values(collections)
247
- .map((c) => c.privates)
248
- .flat().length;
249
- if (privatesCount)
250
- log
251
- .for(Model.tableName(clazz))
252
- .info(`Found ${privatesCount} private collections to create`);
253
- const sharedCount = Object.values(collections)
254
- .map((c) => c.shared)
255
- .flat().length;
256
- log
257
- .for(Model.tableName(clazz))
258
- .info(`Found ${sharedCount} shared collections to create`);
259
- if (mirrorCollection)
260
- log
261
- .for(Model.tableName(clazz))
262
- .info(`Found one mirror collection ${mirrorMeta?.resolver}`);
263
- const colList = Object.values(collections)
264
- .map((c) => [...(c.privates || []), ...(c.shared || [])])
265
- .flat();
266
- let indexes = [];
267
- let designDocs = [];
268
- if (colList.length) {
269
- log
270
- .for(Model.tableName(clazz))
271
- .verbose(`generating indexes for collections`);
272
- indexes = generateModelIndexes(clazz);
273
- log
274
- .for(Model.tableName(clazz))
275
- .info(`found ${indexes.length} indexes`);
276
- designDocs = generateModelDesignDocs(clazz);
246
+ }
247
+ const privatesCount = Object.values(collections)
248
+ .map((c) => c.privates)
249
+ .flat().length;
250
+ if (privatesCount)
251
+ log
252
+ .for(Model.tableName(clazz))
253
+ .info(`Found ${privatesCount} private collections to create`);
254
+ const sharedCount = Object.values(collections)
255
+ .map((c) => c.shared)
256
+ .flat().length;
277
257
  log
278
258
  .for(Model.tableName(clazz))
279
- .info(`found ${designDocs.length} design docs`);
280
- }
281
- return {
282
- indexes,
283
- designDocs,
284
- collections: colList,
285
- mirror: mirrorCollection,
286
- };
287
- }));
259
+ .info(`Found ${sharedCount} shared collections to create`);
260
+ if (mirrorCollection)
261
+ log
262
+ .for(Model.tableName(clazz))
263
+ .info(`Found one mirror collection ${mirrorMeta?.resolver}`);
264
+ const colList = Object.values(collections)
265
+ .map((c) => [...(c.privates || []), ...(c.shared || [])])
266
+ .flat();
267
+ let indexes = [];
268
+ let designDocs = [];
269
+ if (colList.length) {
270
+ log
271
+ .for(Model.tableName(clazz))
272
+ .verbose(`generating indexes for collections`);
273
+ indexes = generateModelIndexes(clazz);
274
+ log
275
+ .for(Model.tableName(clazz))
276
+ .info(`found ${indexes.length} indexes`);
277
+ designDocs = generateModelDesignDocs(clazz);
278
+ log
279
+ .for(Model.tableName(clazz))
280
+ .info(`found ${designDocs.length} design docs`);
281
+ }
282
+ return {
283
+ indexes,
284
+ designDocs,
285
+ collections: colList,
286
+ mirror: mirrorCollection,
287
+ };
288
+ }));
289
+ return cols;
290
+ }
291
+ const cols = await getCols();
292
+ const onlyMirror = await getCols([mainMspId]);
288
293
  const collectionsTo = [
294
+ ...onlyMirror.filter((c) => c.mirror).map((c) => c.mirror),
289
295
  ...cols.map((c) => c.collections).flat(),
290
296
  ...cols.filter((c) => c.mirror).map((c) => c.mirror),
291
297
  ];
292
- if (collectionsTo.length) {
293
- writeCollections(collectionsTo, outDir);
298
+ const uniqueByCollection = [
299
+ ...new Map(collectionsTo.map((item) => [item.name, item])).values(),
300
+ ];
301
+ if (uniqueByCollection.length) {
302
+ writeCollections(uniqueByCollection, outDir);
294
303
  const metaCollectionsConfig = path.join(outDir, "META-INF", "collections_config.json");
295
304
  const contractCollectionsConfig = path.join(outDir, "collections_config.json");
296
305
  fs.copyFileSync(metaCollectionsConfig, contractCollectionsConfig);
@@ -401,4 +410,4 @@ fabricCmd.addCommand(extractCollections);
401
410
  export default function fabric() {
402
411
  return fabricCmd;
403
412
  }
404
- //# sourceMappingURL=cli-module.js.map
413
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGktbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLE9BQU8sTUFBTSx3QkFBd0IsQ0FBQztBQUM3QyxPQUFPLFVBQVUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsWUFBWSxHQUNiLGtDQUF5QjtBQUMxQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkQsT0FBTyxFQUNMLGVBQWUsRUFDZiwwQkFBMEIsRUFDMUIsZUFBZSxFQUNmLGVBQWUsRUFDZixlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLDRCQUE0QixHQUM3Qix1QkFBb0I7QUFDckIscUNBQTRCO0FBQzVCLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1QixPQUFPLEVBQ0wsa0JBQWtCLElBQUksYUFBYSxFQUVuQyxnQkFBZ0IsRUFDaEIseUJBQXlCLEdBQzFCLHNDQUFtQztBQUVwQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHaEQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdB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QUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUM5QyxHQUFHLENBQUMsS0FBSyxDQUNQLHlCQUF5QixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLFlBQVksT0FBTyxFQUFFLENBQ3RGLENBQUM7SUFDRixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQzNCLFFBQVEsQ0FBQyxvQ0FBb0MsTUFBTSxFQUFFLEVBQUU7UUFDckQsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUU7S0FDbkIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFTCxNQUFNLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRTtLQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDO0tBQ2xCLE9BQU8sQ0FBQyxRQUFRLENBQUM7S0FDakIsV0FBVyxDQUNWLG1FQUFtRSxDQUNwRSxDQUFDO0FBRUosU0FBUyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUNyQyxTQUFTLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3JDLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDbEMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUNyQyxTQUFTLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDeEMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBRXpDLE1BQU0sQ0FBQyxPQUFPLFVBQVUsTUFBTTtJQUM1QixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCJjb21tYW5kZXJcIjtcbmltcG9ydCB7IExvZ2dpbmcsIHRvUGFzY2FsQ2FzZSB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IHJvbGx1cCB9IGZyb20gXCJyb2xsdXBcIjtcbmltcG9ydCByZXBsYWNlIGZyb20gXCJAcm9sbHVwL3BsdWdpbi1yZXBsYWNlXCI7XG5pbXBvcnQgdHlwZXNjcmlwdCBmcm9tIFwiQHJvbGx1cC9wbHVnaW4tdHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciwgU2VyaWFsaXphdGlvbkVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQge1xuICBnZW5lcmF0ZU1vZGVsRGVzaWduRG9jcyxcbiAgZ2VuZXJhdGVNb2RlbEluZGV4ZXMsXG4gIHJlYWRNb2RlbEZpbGUsXG4gIHJlYWRNb2RlbEZvbGRlcnMsXG4gIHdyaXRlRGVzaWduRG9jcyxcbiAgd3JpdGVJbmRleGVzLFxufSBmcm9tIFwiLi9jbGllbnQvaW5kZXhlc1wiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQge1xuICBhcHByb3ZlQ29udHJhY3QsXG4gIGVuc3VyZUluZnJhc3RydWN0dXJlQm9vdGVkLFxuICBpbnN0YWxsQ29udHJhY3QsXG4gIHBhY2thZ2VDb250cmFjdCxcbiAgY29tbWl0Q2hhaW5jb2RlLFxuICBnZXRDb250cmFjdFN0YXJ0Q29tbWFuZCxcbiAgY29tcGlsZVdpdGhUc2NvbmZpZ092ZXJyaWRlcyxcbn0gZnJvbSBcIi4vY2xpLXV0aWxzXCI7XG5pbXBvcnQgXCIuL3NoYXJlZC9vdmVycmlkZXNcIjtcbmltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuaW1wb3J0IHtcbiAgZXh0cmFjdENvbGxlY3Rpb25zIGFzIGV4Q29sbGVjdGlvbnMsXG4gIFByaXZhdGVDb2xsZWN0aW9uLFxuICB3cml0ZUNvbGxlY3Rpb25zLFxuICB3cml0ZUNvbGxlY3Rpb25EZXNpZ25Eb2NzLFxufSBmcm9tIFwiLi9jbGllbnQvY29sbGVjdGlvbnMvaW5kZXhcIjtcbmltcG9ydCB7IENvdWNoREJEZXNpZ25Eb2MsIENyZWF0ZUluZGV4UmVxdWVzdCB9IGZyb20gXCJAZGVjYWYtdHMvZm9yLWNvdWNoZGJcIjtcbmltcG9ydCB7IE1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBvbiB9IGZyb20gXCJldmVudHNcIjtcblxuY29uc3QgbG9nZ2VyID0gTG9nZ2luZy5mb3IoXCJmYWJyaWNcIik7XG5cbmNvbnN0IGNvbXBpbGVDb21tYW5kID0gbmV3IENvbW1hbmQoKVxuICAubmFtZShcImNvbXBpbGUtY29udHJhY3RcIilcbiAgLmRlc2NyaXB0aW9uKFwiQ3JlYXRlcyBhIGdsb2JhbCBjb250cmFjdFwiKVxuICAub3B0aW9uKFwiLS1kZXZcIiwgXCJjb21waWxlcyBjb250cmFjdHMgd2l0aG91dCBtaW5pZmljYXRpb25cIiwgZmFsc2UpXG4gIC5vcHRpb24oXCItLWRlYnVnXCIsIFwibWFrZXMgYXR0YWNoaW5nIGRlYnVnZ2VyIHBvc3NpYmxlXCIsIGZhbHNlKVxuICAub3B0aW9uKFxuICAgIFwiLS1jY2Fhc1wiLFxuICAgIFwiQWp1c3RzIHRoZSBwYWNrYWdlIGNvbW1hbmRzIHRvIGJlIGRlcGxveWVkIGFzIGNjYWFzXCIsXG4gICAgZmFsc2VcbiAgKVxuICAub3B0aW9uKFwiLS1uYW1lIDxTdHJpbmc+XCIsIFwiY29udHJhY3QgbmFtZVwiLCBcImdsb2JhbC1jb250cmFjdFwiKVxuICAub3B0aW9uKFwiLS1idW5kbGVcIiwgXCJCdW5kbGVzIHdpdGggcm9sbHVwIGluc3RlYWQgb2YgdXNpbmcgdHNjXCIsIGZhbHNlKVxuICAub3B0aW9uKFxuICAgIFwiLS10cy1jb25maWctZmlsZSA8c3RyaW5nPlwiLFxuICAgIFwicmVsYXRpdmUgcGF0aCB0byB0aGUgdHMgY29uZmlnIGZpbGUgYmFzZWQgb24gY3dkIG9yIGFic29sdXRlIHBhdGhcIixcbiAgICBcIi4vdHNjb25maWcuanNvblwiXG4gIClcbiAgLm9wdGlvbihcbiAgICBcIi0tZGVzY3JpcHRpb24gPFN0cmluZz5cIixcbiAgICBcImNvbnRyYWN0IGRlc2NyaXB0aW9uXCIsXG4gICAgXCJHbG9iYWwgY29udHJhY3QgaW1wbGVtZW50YXRpb25cIlxuICApXG4gIC5vcHRpb24oXCItLXN0cmlwLWNvbnRyYWN0LW5hbWVcIiwgXCJzdHJpcCBjb250cmFjdCBuYW1lIGZyb20gb3V0cHV0XCIsIGZhbHNlKVxuICAub3B0aW9uKFwiLS1pbnB1dCA8U3RyaW5nPlwiLCBcImlucHV0IGZvbGRlciBmb3IgY29udHJhY3RzXCIsIFwibGliL2NvbnRyYWN0c1wiKVxuICAub3B0aW9uKFwiLS1vdXRwdXQgPFN0cmluZz5cIiwgXCJvdXRwdXQgZm9sZGVyIGZvciBjb250cmFjdHNcIiwgXCIuL2NvbnRyYWN0c1wiKVxuICAuYWN0aW9uKGFzeW5jIChvcHRpb25zOiBhbnkpID0+IHtcbiAgICBjb25zdCBwa2cgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcInBhY2thZ2UuanNvblwiKSwgXCJ1dGYtOFwiKVxuICAgICk7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gcGtnLnZlcnNpb247XG5cbiAgICBsZXQge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgICAgZGV2LFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgICAgZGVidWcsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgICBuYW1lLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBvdXRwdXQsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgICBpbnB1dCxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICAgIHN0cmlwQ29udHJhY3ROYW1lLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgICAgY2NhYXMsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgICBidW5kbGUsXG5cbiAgICAgIHRzQ29uZmlnRmlsZSxcbiAgICB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKFwiY29tcGlsZS1jb250cmFjdFwiKTtcbiAgICBsb2cuZGVidWcoXG4gICAgICBgcnVubmluZyB3aXRoIG9wdGlvbnM6ICR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucyl9IGZvciAke3BrZy5uYW1lfSB2ZXJzaW9uICR7dmVyc2lvbn1gXG4gICAgKTtcblxuICAgIHRzQ29uZmlnRmlsZSA9IHBhdGguaXNBYnNvbHV0ZSh0c0NvbmZpZ0ZpbGUpXG4gICAgICA/IHRzQ29uZmlnRmlsZVxuICAgICAgOiBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgdHNDb25maWdGaWxlKTtcblxuICAgIG91dHB1dCA9IHN0cmlwQ29udHJhY3ROYW1lID8gb3V0cHV0IDogcGF0aC5qb2luKG91dHB1dCwgbmFtZSk7XG4gICAgbG9nLmluZm8oYERlbGV0aW5nIGV4aXN0aW5nIG91dHB1dCBmb2xkZXIgKGlmIGV4aXN0cykgdW5kZXIgJHtvdXRwdXR9YCk7XG4gICAgZXhlY1N5bmMoYHJtIC1yZiAke291dHB1dH1gKTtcbiAgICBpZiAoYnVuZGxlKSB7XG4gICAgICBsb2cuaW5mbyhgYnVuZGxpbmcgY29udHJhY3QgZnJvbSAke2lucHV0fWApO1xuICAgICAgY29uc3QgYnVuZGxlID0gYXdhaXQgcm9sbHVwKHtcbiAgICAgICAgaW5wdXQ6IGAke2lucHV0fS9pbmRleC50c2AsXG4gICAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgICByZXBsYWNlKHtcbiAgICAgICAgICAgIHByZXZlbnRBc3NpZ25tZW50OiB0cnVlLFxuICAgICAgICAgICAgZGVsaW1pdGVyczogW1wiXCIsIFwiXCJdLFxuICAgICAgICAgICAgdmFsdWVzOiB7IFwiIyNWRVJTSU9OIyNcIjogdmVyc2lvbiwgXCIjI1BBQ0tBR0UjI1wiOiBwa2cubmFtZSB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHR5cGVzY3JpcHQoe1xuICAgICAgICAgICAgdHNjb25maWc6IHRzQ29uZmlnRmlsZSxcbiAgICAgICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgICAgICBvdXREaXI6IG91dHB1dCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtb2R1bGU6IFwiZXNuZXh0XCIsXG4gICAgICAgICAgICBkZWNsYXJhdGlvbjogZmFsc2UsXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICAgIGxvZy5pbmZvKFxuICAgICAgICBgd2l0aGluZyBjb250cmFjdCB0byAke291dHB1dH0gd2l0aCBuYW1lICR7dG9QYXNjYWxDYXNlKG5hbWUpfS5qc2BcbiAgICAgICk7XG4gICAgICBhd2FpdCBidW5kbGUud3JpdGUoe1xuICAgICAgICBmaWxlOiBgJHtvdXRwdXR9LyR7dG9QYXNjYWxDYXNlKG5hbWUpfS5qc2AsXG4gICAgICAgIGZvcm1hdDogXCJ1bWRcIixcbiAgICAgICAgbmFtZTogYCR7dG9QYXNjYWxDYXNlKG5hbWUpfS5qc2AsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tcGlsZVdpdGhUc2NvbmZpZ092ZXJyaWRlcyh0c0NvbmZpZ0ZpbGUsIHtcbiAgICAgICAgb3V0RGlyOiBvdXRwdXQsXG4gICAgICAgIG1vZHVsZTogdHMuTW9kdWxlS2luZC5FU05leHQsXG4gICAgICAgIGRlY2xhcmF0aW9uOiBmYWxzZSxcbiAgICAgICAgc291cmNlTWFwOiBmYWxzZSxcbiAgICAgICAgLy8gcm9vdERpcjogaW5wdXQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBzY3JpcHRzID0ge1xuICAgICAgc3RhcnQ6IGdldENvbnRyYWN0U3RhcnRDb21tYW5kKGRlYnVnLCBjY2FhcyksXG4gICAgICBcInN0YXJ0OmRldlwiOiBcImZhYnJpYy1jaGFpbmNvZGUtbm9kZSBzdGFydCAtLXRscy5lbmFibGVkIGZhbHNlXCIsXG4gICAgICBcInN0YXJ0OndhdGNoXCI6ICdub2RlbW9uIC0tZXhlYyBcIm5wbSBydW4gc3RhcnQ6ZGV2XCInLFxuICAgICAgYnVpbGQ6ICdlY2hvIFwiTm8gbmVlZCB0byBidWlsZCB0aGUgY2hhaW5jb2RlXCInLFxuICAgICAgbGludDogXCJlc2xpbnQgLiAtLWZpeCAtLWV4dCAuanNcIixcbiAgICB9O1xuXG4gICAgY29uc3QgY29udHJhY3RQYWNrYWdlID0gcGtnO1xuXG4gICAgY29udHJhY3RQYWNrYWdlLm5hbWUgPSBuYW1lO1xuICAgIGNvbnRyYWN0UGFja2FnZS5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgIGNvbnRyYWN0UGFja2FnZS5zY3JpcHRzID0gc2NyaXB0cztcblxuICAgIGRlbGV0ZSBjb250cmFjdFBhY2thZ2UudHlwZTtcbiAgICBkZWxldGUgY29udHJhY3RQYWNrYWdlLnR5cGVzO1xuICAgIGRlbGV0ZSBjb250cmFjdFBhY2thZ2UuZXhwb3J0cztcbiAgICBjb250cmFjdFBhY2thZ2UubWFpbiA9IGJ1bmRsZVxuICAgICAgPyBgJHt0b1Bhc2NhbENhc2UobmFtZSl9LmpzYFxuICAgICAgOiBgJHtpbnB1dH0vaW5kZXguanNgO1xuXG4gICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgIHBhdGguam9pbihvdXRwdXQsIFwicGFja2FnZS5qc29uXCIpLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoY29udHJhY3RQYWNrYWdlKVxuICAgICk7XG5cbiAgICBsb2cuaW5mbyhgSW5zdGFsbGluZyBhbmQgc2hyaW5rd3JhcHBpbmcgZGVwZW5kZW5jaWVzYCk7XG4gICAgZXhlY1N5bmMoYG5wbSBpbnN0YWxsYCwgeyBjd2Q6IG91dHB1dCB9KTtcbiAgICBleGVjU3luYyhgbnBtIHNocmlua3dyYXBgLCB7IGN3ZDogb3V0cHV0IH0pO1xuICAgIGV4ZWNTeW5jKFwicm0gLXJmIG5vZGVfbW9kdWxlc1wiLCB7IGN3ZDogb3V0cHV0IH0pO1xuICAgIGxvZy5pbmZvKGBkZWxldGluZyB0ZW1wIGZvbGRlcnNgKTtcbiAgICBleGVjU3luYyhgcm0gLXJmIC4vbGliICYmIHJtIC1yZiAuL2Rpc3RgLCB7IGN3ZDogb3V0cHV0IH0pO1xuICAgIGxvZy5pbmZvKFxuICAgICAgYENvbnRyYWN0ICR7bmFtZX0gY29tcGlsZWQgc3VjY2Vzc2Z1bGx5ISBpbiAke3BhdGgucmVzb2x2ZShvdXRwdXQpfWBcbiAgICApO1xuICAgIGlmIChkZXYpIHtcbiAgICAgIGxvZy5pbmZvKGBkZXYgbW9kZSBlbmFibGVkLiBpbnN0YWxsaW5nIGRlcGVuZGVuY2llcyBmb3IgZGVidWdnaW5nYCk7XG4gICAgICBleGVjU3luYyhgbnBtIGluc3RhbGxgLCB7XG4gICAgICAgIGN3ZDogb3V0cHV0LFxuICAgICAgICBlbnY6IHsgLi4ucHJvY2Vzcy5lbnYsIE5PREVfRU5WOiBcInByb2R1Y3Rpb25cIiB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuY29uc3QgZXh0cmFjdEluZGV4ZXMgPSBuZXcgQ29tbWFuZCgpXG4gIC5jb21tYW5kKFwiZXh0cmFjdC1pbmRleGVzXCIpXG4gIC5vcHRpb24oXCItLWZpbGUgW1N0cmluZ11cIiwgXCJ0aGUgbW9kZWwgZmlsZVwiKVxuICAub3B0aW9uKFwiLS1mb2xkZXIgW1N0cmluZ11cIiwgXCJ0aGUgbW9kZWwgZm9sZGVyXCIpXG4gIC5vcHRpb24oXCItLW91dERpciA8U3RyaW5nPlwiLCBcInRoZSBvdXRkaXIuIHNob3VsZCBtYXRjaCB5b3VyIGNvbnRyYWN0IGZvbGRlclwiKVxuICAuZGVzY3JpcHRpb24oXG4gICAgXCJDcmVhdGVzIGEgdGhlIEpTT04gaW5kZXggZmlsZXMgdG8gYmUgc3VibWl0dGVkIHRvIGFsb25nIHdpdGggdGhlIGNvbnRyYWN0XCJcbiAgKVxuICAuYWN0aW9uKGFzeW5jIChvcHRpb25zOiBhbnkpID0+IHtcbiAgICBjb25zdCBwa2cgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcInBhY2thZ2UuanNvblwiKSwgXCJ1dGYtOFwiKVxuICAgICk7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gcGtnLnZlcnNpb247XG5cbiAgICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKFwiZXh0cmFjdC1pbmRleGVzXCIpO1xuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIGBydW5uaW5nIHdpdGggb3B0aW9uczogJHtKU09OLnN0cmluZ2lmeShvcHRpb25zKX0gZm9yICR7cGtnLm5hbWV9IHZlcnNpb24gJHt2ZXJzaW9ufWBcbiAgICApO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGxldCB7IGZpbGUsIGZvbGRlciwgb3V0RGlyIH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3QgbW9kZWxzOiBhbnlbXSA9IFtdO1xuICAgIGlmIChmaWxlKSB7XG4gICAgICBtb2RlbHMucHVzaCguLi5yZWFkTW9kZWxGaWxlKGZpbGUpKTtcbiAgICB9XG5cbiAgICBpZiAoZm9sZGVyKSB7XG4gICAgICBsb2cuaW5mbyhgTG9hZGluZyBtb2RlbHMgZnJvbSAke2ZvbGRlcn0uLi5gKTtcbiAgICAgIG1vZGVscy5wdXNoKC4uLihhd2FpdCByZWFkTW9kZWxGb2xkZXJzKGZvbGRlcikpKTtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgY29uc3QgZGVzaWduRG9jczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXG4gICAgaWYgKCFmaWxlICYmICFmb2xkZXIpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgTXVzdCBwYXNzIGEgZmlsZSBvciBhIGZvbGRlcmApO1xuXG4gICAgZm9yIChjb25zdCBtIG9mIG1vZGVscykge1xuICAgICAgbG9nLnZlcmJvc2UoYEV4dHJhY3RpbmcgaW5kZXhlcyBmb3IgdGFibGUgJHtNb2RlbC50YWJsZU5hbWUobSl9YCk7XG4gICAgICBjb25zdCBpbmRleGVzID0gZ2VuZXJhdGVNb2RlbEluZGV4ZXMobSk7XG4gICAgICBpbmRleGVzLmZvckVhY2goKGluZGV4KSA9PiB7XG4gICAgICAgIGlmIChpbmRleC5uYW1lKSB7XG4gICAgICAgICAgcmVzdWx0W2luZGV4Lm5hbWVdID0gaW5kZXg7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgZ2VuZXJhdGVNb2RlbERlc2lnbkRvY3MobSwgZGVzaWduRG9jcyk7XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ZXNUb1dyaXRlID0gT2JqZWN0LnZhbHVlcyhyZXN1bHQpO1xuICAgIGNvbnN0IGRvY3NUb1dyaXRlID0gT2JqZWN0LnZhbHVlcyhkZXNpZ25Eb2NzKTtcbiAgICBsb2cudmVyYm9zZShgRm91bmQgJHtpbmRleGVzVG9Xcml0ZS5sZW5ndGh9IGluZGV4ZXMgdG8gY3JlYXRlYCk7XG4gICAgbG9nLnZlcmJvc2UoYEZvdW5kICR7ZG9jc1RvV3JpdGUubGVuZ3RofSBkZXNpZ24gZG9jcyB0byBjcmVhdGVgKTtcbiAgICBsb2cuZGVidWcoYEluZGV4ZXM6ICR7SlNPTi5zdHJpbmdpZnkocmVzdWx0KX1gKTtcbiAgICBsb2cuZGVidWcoYERlc2lnbkRvY3M6ICR7SlNPTi5zdHJpbmdpZnkoZGVzaWduRG9jcyl9YCk7XG4gICAgd3JpdGVJbmRleGVzKGluZGV4ZXNUb1dyaXRlLCBvdXREaXIpO1xuICAgIHdyaXRlRGVzaWduRG9jcyhkb2NzVG9Xcml0ZSwgb3V0RGlyKTtcbiAgfSk7XG5cbmNvbnN0IGV4dHJhY3RDb2xsZWN0aW9ucyA9IG5ldyBDb21tYW5kKClcbiAgLmNvbW1hbmQoXCJleHRyYWN0LWNvbGxlY3Rpb25zXCIpXG4gIC5vcHRpb24oXCItLWZpbGUgW1N0cmluZ11cIiwgXCJ0aGUgbW9kZWwgZmlsZVwiKVxuICAub3B0aW9uKFwiLS1mb2xkZXIgW1N0cmluZ11cIiwgXCJ0aGUgbW9kZWwgZm9sZGVyXCIpXG4gIC5vcHRpb24oXCItLW91dERpciA8U3RyaW5nPlwiLCBcInRoZSBvdXRkaXIuIHNob3VsZCBtYXRjaCB5b3VyIGNvbnRyYWN0IGZvbGRlclwiKVxuICAub3B0aW9uKFwiLS1tc3BJZHMgPFN0cmluZz5cIiwgXCJzaW5nbGUgbXNwSWQgb3Igc3RyaW5naWZpZWQgYXJyYXlcIilcbiAgLm9wdGlvbihcIi0tbWFpbk1zcElkIDxTdHJpbmc+XCIsIFwic2luZ2xlIG1zcElkXCIpXG4gIC5vcHRpb24oXG4gICAgXCItLW92ZXJyaWRlcyBbU3RyaW5nXVwiLFxuICAgIFwic3RyaW5naWZpZWQgb3ZlcnJpZGUgb2JqZWN0IHtyZXF1aXJlZFBlZXJDb3VudDogbnVtYmVyLCBtYXhQZWVyQ291bnQ6IG51bWJlciwgYmxvY2tUb0xpdmU6IG51bWJlciwgbWVtYmVyT25seVJlYWQ6IG51bWJlciwgbWVtYmVyT25seVdyaXRlOiBudW1iZXIsIGVuZG9yc2VtZW50UG9saWN5OiAge319XCJcbiAgKVxuICAuZGVzY3JpcHRpb24oXG4gICAgXCJDcmVhdGVzIGEgdGhlIEpTT04gaW5kZXggZmlsZXMgdG8gYmUgc3VibWl0dGVkIHRvIGFsb25nIHdpdGggdGhlIGNvbnRyYWN0XCJcbiAgKVxuICAuYWN0aW9uKGFzeW5jIChvcHRpb25zOiBhbnkpID0+IHtcbiAgICBjb25zdCBwa2cgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcInBhY2thZ2UuanNvblwiKSwgXCJ1dGYtOFwiKVxuICAgICk7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gcGtnLnZlcnNpb247XG5cbiAgICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKFwiZXh0cmFjdC1jb2xsZWN0aW9uc1wiKTtcbiAgICBsb2cuZGVidWcoXG4gICAgICBgcnVubmluZyB3aXRoIG9wdGlvbnM6ICR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucyl9IGZvciAke3BrZy5uYW1lfSB2ZXJzaW9uICR7dmVyc2lvbn1gXG4gICAgKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICBsZXQgeyBmaWxlLCBmb2xkZXIsIG91dERpciwgbXNwSWRzLCBvdmVycmlkZXMsIG1haW5Nc3BJZCB9ID0gb3B0aW9ucztcblxuICAgIHRyeSB7XG4gICAgICB0cnkge1xuICAgICAgICBtc3BJZHMgPSBtc3BJZHMgPyBKU09OLnBhcnNlKG1zcElkcykgOiB1bmRlZmluZWQ7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgLy8gIGRvIG5vdGhpbmdcbiAgICAgIH1cbiAgICAgIG92ZXJyaWRlcyA9IG92ZXJyaWRlc1xuICAgICAgICA/IEpTT04ucGFyc2Uob3ZlcnJpZGVzKVxuICAgICAgICA6IHsgcHJpdmF0ZUNvbHM6IHt9LCBzaGFyZWRDb2xzOiB7fSB9O1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBTZXJpYWxpemF0aW9uRXJyb3IoXG4gICAgICAgIGBVbmFibGUgdG8gZXh0cmFjdCBtc3BpZHMgb3Igb3ZlcnJpZGVzOiAgJHtlfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgbW9kZWxzOiBhbnlbXSA9IFtdO1xuICAgIGlmIChmaWxlKSB7XG4gICAgICBtb2RlbHMucHVzaCguLi5yZWFkTW9kZWxGaWxlKGZpbGUpKTtcbiAgICB9XG5cbiAgICBpZiAoZm9sZGVyKSB7XG4gICAgICBsb2cuaW5mbyhgTG9hZGluZyBtb2RlbHMgZnJvbSAke2ZvbGRlcn0uLi5gKTtcbiAgICAgIG1vZGVscy5wdXNoKC4uLihhd2FpdCByZWFkTW9kZWxGb2xkZXJzKGZvbGRlcikpKTtcbiAgICB9XG5cbiAgICBpZiAoIWZpbGUgJiYgIWZvbGRlcilcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBNdXN0IHBhc3MgYSBmaWxlIG9yIGEgZm9sZGVyYCk7XG5cbiAgICBjb25zdCBpbmplY3RhYmxlTW9kZWxzID0gbW9kZWxzLmZpbHRlcihcbiAgICAgIChtb2RlbCkgPT5cbiAgICAgICAgTW9kZWwuaXNTaGFyZWQobW9kZWwpIHx8XG4gICAgICAgIE1vZGVsLmlzUHJpdmF0ZShtb2RlbCkgfHxcbiAgICAgICAgISFNb2RlbC5taXJyb3JlZEF0KG1vZGVsKVxuICAgICk7XG4gICAgaWYgKCFpbmplY3RhYmxlTW9kZWxzLmxlbmd0aCkge1xuICAgICAgbG9nLmluZm8oXG4gICAgICAgIGBObyBzaGFyZWQsIHByaXZhdGUsIG9yIG1pcnJvcmVkIG1vZGVscyBmb3VuZCB0byBleHRyYWN0IGNvbGxlY3Rpb25zYFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBnZXRDb2xzKG1zcElkc0xpc3Q/OiBzdHJpbmdbXSkge1xuICAgICAgY29uc3QgY29sczoge1xuICAgICAgICBpbmRleGVzOiBDcmVhdGVJbmRleFJlcXVlc3RbXTtcbiAgICAgICAgZGVzaWduRG9jczogQ291Y2hEQkRlc2lnbkRvY1tdO1xuICAgICAgICBtaXJyb3I/OiBQcml2YXRlQ29sbGVjdGlvbjtcbiAgICAgICAgY29sbGVjdGlvbnM6IFByaXZhdGVDb2xsZWN0aW9uW107XG4gICAgICB9W10gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgaW5qZWN0YWJsZU1vZGVscy5tYXAoYXN5bmMgKGNsYXp6KSA9PiB7XG4gICAgICAgICAgY29uc3QgdGFibGVOYW1lID0gTW9kZWwudGFibGVOYW1lKGNsYXp6KTtcbiAgICAgICAgICBjb25zdCBtZXRhID0gTWV0YWRhdGEuZ2V0KGNsYXp6KTtcbiAgICAgICAgICBjb25zdCBtaXJyb3JNZXRhID0gTW9kZWwubWlycm9yZWRBdChjbGF6eik7XG5cbiAgICAgICAgICBjb25zb2xlLmxvZyh0YWJsZU5hbWUpO1xuICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICAgICAgZm9yIChjb25zdCBtc3Agb2YgbXNwSWRzTGlzdCB8fCBtc3BJZHMgfHwgW10pIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25zW21zcF0gPSBhd2FpdCBleENvbGxlY3Rpb25zKFxuICAgICAgICAgICAgICBjbGF6eixcbiAgICAgICAgICAgICAgW21zcCwgbWFpbk1zcElkXSxcbiAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgIC8vIHtcbiAgICAgICAgICAgICAgLy8gICBzaGFyZWRDb2xzOiBPYmplY3QuYXNzaWduKHt9LCBvdmVycmlkZXMuc2hhcmVkQ29scyksXG4gICAgICAgICAgICAgIC8vICAgcHJpdmF0ZUNvbHM6IE9iamVjdC5hc3NpZ24oe30sIG92ZXJyaWRlcy5wcml2YXRlQ29scyksXG4gICAgICAgICAgICAgIC8vIH0sXG4gICAgICAgICAgICAgICEhbWlycm9yTWV0YVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgbWlycm9yQ29sbGVjdGlvbjogUHJpdmF0ZUNvbGxlY3Rpb24gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgICBpZiAobWlycm9yTWV0YSkge1xuICAgICAgICAgICAgY29sbGVjdGlvbnNbbWFpbk1zcElkXSA9IGNvbGxlY3Rpb25zW21haW5Nc3BJZF0gfHwge307XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhjb2xsZWN0aW9ucykuZm9yRWFjaCgobXNwOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvbnNbbWFpbk1zcElkXS5wcml2YXRlcyA9IGNvbGxlY3Rpb25zW1xuICAgICAgICAgICAgICAgIG1zcFxuICAgICAgICAgICAgICBdLnByaXZhdGVzPy5maWx0ZXIoKHA6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChwLm5hbWUgIT09IChtaXJyb3JNZXRhLnJlc29sdmVyIGFzIHN0cmluZykpIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIG1pcnJvckNvbGxlY3Rpb24gPSBwIGFzIGFueTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgcHJpdmF0ZXNDb3VudCA9IE9iamVjdC52YWx1ZXMoY29sbGVjdGlvbnMpXG4gICAgICAgICAgICAubWFwKChjKSA9PiBjLnByaXZhdGVzKVxuICAgICAgICAgICAgLmZsYXQoKS5sZW5ndGg7XG4gICAgICAgICAgaWYgKHByaXZhdGVzQ291bnQpXG4gICAgICAgICAgICBsb2dcbiAgICAgICAgICAgICAgLmZvcihNb2RlbC50YWJsZU5hbWUoY2xhenopKVxuICAgICAgICAgICAgICAuaW5mbyhgRm91bmQgJHtwcml2YXRlc0NvdW50fSBwcml2YXRlIGNvbGxlY3Rpb25zIHRvIGNyZWF0ZWApO1xuICAgICAgICAgIGNvbnN0IHNoYXJlZENvdW50ID0gT2JqZWN0LnZhbHVlcyhjb2xsZWN0aW9ucylcbiAgICAgICAgICAgIC5tYXAoKGMpID0+IGMuc2hhcmVkKVxuICAgICAgICAgICAgLmZsYXQoKS5sZW5ndGg7XG5cbiAgICAgICAgICBsb2dcbiAgICAgICAgICAgIC5mb3IoTW9kZWwudGFibGVOYW1lKGNsYXp6KSlcbiAgICAgICAgICAgIC5pbmZvKGBGb3VuZCAke3NoYXJlZENvdW50fSBzaGFyZWQgY29sbGVjdGlvbnMgdG8gY3JlYXRlYCk7XG4gICAgICAgICAgaWYgKG1pcnJvckNvbGxlY3Rpb24pXG4gICAgICAgICAgICBsb2dcbiAgICAgICAgICAgICAgLmZvcihNb2RlbC50YWJsZU5hbWUoY2xhenopKVxuICAgICAgICAgICAgICAuaW5mbyhcbiAgICAgICAgICAgICAgICBgRm91bmQgb25lIG1pcnJvciBjb2xsZWN0aW9uICR7bWlycm9yTWV0YT8ucmVzb2x2ZXIgYXMgc3RyaW5nfWBcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IGNvbExpc3QgPSBPYmplY3QudmFsdWVzKGNvbGxlY3Rpb25zKVxuICAgICAgICAgICAgLm1hcCgoYykgPT4gWy4uLihjLnByaXZhdGVzIHx8IFtdKSwgLi4uKGMuc2hhcmVkIHx8IFtdKV0pXG4gICAgICAgICAgICAuZmxhdCgpO1xuICAgICAgICAgIGxldCBpbmRleGVzOiBDcmVhdGVJbmRleFJlcXVlc3RbXSA9IFtdO1xuICAgICAgICAgIGxldCBkZXNpZ25Eb2NzOiBDb3VjaERCRGVzaWduRG9jW10gPSBbXTtcbiAgICAgICAgICBpZiAoY29sTGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGxvZ1xuICAgICAgICAgICAgICAuZm9yKE1vZGVsLnRhYmxlTmFtZShjbGF6eikpXG4gICAgICAgICAgICAgIC52ZXJib3NlKGBnZW5lcmF0aW5nIGluZGV4ZXMgZm9yIGNvbGxlY3Rpb25zYCk7XG4gICAgICAgICAgICBpbmRleGVzID0gZ2VuZXJhdGVNb2RlbEluZGV4ZXMoY2xhenopO1xuICAgICAgICAgICAgbG9nXG4gICAgICAgICAgICAgIC5mb3IoTW9kZWwudGFibGVOYW1lKGNsYXp6KSlcbiAgICAgICAgICAgICAgLmluZm8oYGZvdW5kICR7aW5kZXhlcy5sZW5ndGh9IGluZGV4ZXNgKTtcbiAgICAgICAgICAgIGRlc2lnbkRvY3MgPSBnZW5lcmF0ZU1vZGVsRGVzaWduRG9jcyhjbGF6eik7XG4gICAgICAgICAgICBsb2dcbiAgICAgICAgICAgICAgLmZvcihNb2RlbC50YWJsZU5hbWUoY2xhenopKVxuICAgICAgICAgICAgICAuaW5mbyhgZm91bmQgJHtkZXNpZ25Eb2NzLmxlbmd0aH0gZGVzaWduIGRvY3NgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGluZGV4ZXMsXG4gICAgICAgICAgICBkZXNpZ25Eb2NzLFxuICAgICAgICAgICAgY29sbGVjdGlvbnM6IGNvbExpc3QsXG4gICAgICAgICAgICBtaXJyb3I6IG1pcnJvckNvbGxlY3Rpb24sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICByZXR1cm4gY29scztcbiAgICB9XG5cbiAgICBjb25zdCBjb2xzID0gYXdhaXQgZ2V0Q29scygpO1xuICAgIGNvbnN0IG9ubHlNaXJyb3IgPSBhd2FpdCBnZXRDb2xzKFttYWluTXNwSWRdKTtcblxuICAgIGNvbnN0IGNvbGxlY3Rpb25zVG8gPSBbXG4gICAgICAuLi5vbmx5TWlycm9yLmZpbHRlcigoYykgPT4gYy5taXJyb3IpLm1hcCgoYykgPT4gYy5taXJyb3IpLFxuICAgICAgLi4uY29scy5tYXAoKGMpID0+IGMuY29sbGVjdGlvbnMpLmZsYXQoKSxcbiAgICAgIC4uLmNvbHMuZmlsdGVyKChjKSA9PiBjLm1pcnJvcikubWFwKChjKSA9PiBjLm1pcnJvciksXG4gICAgXSBhcyBQcml2YXRlQ29sbGVjdGlvbltdO1xuXG4gICAgY29uc3QgdW5pcXVlQnlDb2xsZWN0aW9uID0gW1xuICAgICAgLi4ubmV3IE1hcChcbiAgICAgICAgY29sbGVjdGlvbnNUby5tYXAoKGl0ZW06IFByaXZhdGVDb2xsZWN0aW9uKSA9PiBbaXRlbS5uYW1lLCBpdGVtXSlcbiAgICAgICkudmFsdWVzKCksXG4gICAgXTtcblxuICAgIGlmICh1bmlxdWVCeUNvbGxlY3Rpb24ubGVuZ3RoKSB7XG4gICAgICB3cml0ZUNvbGxlY3Rpb25zKHVuaXF1ZUJ5Q29sbGVjdGlvbiwgb3V0RGlyKTtcbiAgICAgIGNvbnN0IG1ldGFDb2xsZWN0aW9uc0NvbmZpZyA9IHBhdGguam9pbihcbiAgICAgICAgb3V0RGlyLFxuICAgICAgICBcIk1FVEEtSU5GXCIsXG4gICAgICAgIFwiY29sbGVjdGlvbnNfY29uZmlnLmpzb25cIlxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNvbnRyYWN0Q29sbGVjdGlvbnNDb25maWcgPSBwYXRoLmpvaW4oXG4gICAgICAgIG91dERpcixcbiAgICAgICAgXCJjb2xsZWN0aW9uc19jb25maWcuanNvblwiXG4gICAgICApO1xuICAgICAgZnMuY29weUZpbGVTeW5jKG1ldGFDb2xsZWN0aW9uc0NvbmZpZywgY29udHJhY3RDb2xsZWN0aW9uc0NvbmZpZyk7XG4gICAgICBsb2cuaW5mbyhcbiAgICAgICAgYFN0b3JlZCAke2NvbGxlY3Rpb25zVG8ubGVuZ3RofSBjb2xsZWN0aW9ucyB0byAke21ldGFDb2xsZWN0aW9uc0NvbmZpZ31gXG4gICAgICApO1xuICAgICAgbG9nLmluZm8oXG4gICAgICAgIGBDb3BpZWQgY29sbGVjdGlvbnNfY29uZmlnIHRvICR7Y29udHJhY3RDb2xsZWN0aW9uc0NvbmZpZ30gYWxvbmdzaWRlIHRoZSBwYWNrYWdlLmpzb25gXG4gICAgICApO1xuXG4gICAgICBjb2xzLmZvckVhY2goKGMsIGkpID0+IHtcbiAgICAgICAgY29uc3QgeyBpbmRleGVzLCBkZXNpZ25Eb2NzLCBjb2xsZWN0aW9ucywgbWlycm9yIH0gPSBjO1xuICAgICAgICBjb25zdCB0b0luZGV4OiBQcml2YXRlQ29sbGVjdGlvbltdID0gWy4uLmNvbGxlY3Rpb25zLCBtaXJyb3JdLmZpbHRlcihcbiAgICAgICAgICBCb29sZWFuXG4gICAgICAgICkgYXMgUHJpdmF0ZUNvbGxlY3Rpb25bXTtcbiAgICAgICAgdG9JbmRleC5mb3JFYWNoKChpKSA9PiB7XG4gICAgICAgICAgd3JpdGVJbmRleGVzKGluZGV4ZXMsIG91dERpciwgaS5uYW1lKTtcbiAgICAgICAgICB3cml0ZUNvbGxlY3Rpb25EZXNpZ25Eb2NzKGRlc2lnbkRvY3MgfHwgW10sIG91dERpciwgaS5uYW1lKTtcbiAgICAgICAgICBsb2cuaW5mbyhcbiAgICAgICAgICAgIGBTdG9yZWQgJHtpbmRleGVzPy5sZW5ndGggfHwgMH0gaW5kZXhlcyBhbmQgJHtkZXNpZ25Eb2NzPy5sZW5ndGggfHwgMH0gZGVzaWduIGRvY3MgdG8gY29sbGVjdGlvbiAke2kubmFtZX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG5jb25zdCBlbnN1cmVJbmZyYSA9IG5ldyBDb21tYW5kKClcbiAgLm5hbWUoXCJhd2FpdC1pbmZyYVwiKVxuICAuZGVzY3JpcHRpb24oXCJ3YWl0cyBmb3IgdGhlIGluZnJhc3RydWN0dXJlIHRvIGJlIHVwIGFuZCBydW5uaW5nXCIpXG4gIC5vcHRpb24oXG4gICAgXCItLWNvbnRhaW5lciA8U3RyaW5nPlwiLFxuICAgIFwiZG9ja2VyIGNvbnRhaW5lciBuYW1lIHRvIHRlc3QgKHVzdWFsbHkgbGFzdCBwZWVyKVwiLFxuICAgIFwiYm9vdC1vcmctYy1wZWVyLTBcIlxuICApXG4gIC5vcHRpb24oXCItLXRpbWVvdXQgPFN0cmluZz5cIiwgXCJ0aW1lb3V0IGJldHdlZW4gdGVzdHMgaW4gbWlsbGlzZWNvbmRzXCIsIFwiNTAwMFwiKVxuICAub3B0aW9uKFwiLS1hdHRlbXB0cyA8U3RyaW5nPlwiLCBcIm51bWJlciBvZiBhdHRlbXB0cyBiZWZvcmUgZ2l2aW5nIHVwXCIsIFwiMTBcIilcbiAgLmFjdGlvbihhc3luYyAob3B0aW9uczogYW55KSA9PiB7XG4gICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShcbiAgICAgIGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJwYWNrYWdlLmpzb25cIiksIFwidXRmLThcIilcbiAgICApO1xuXG4gICAgY29uc3QgdmVyc2lvbiA9IHBrZy52ZXJzaW9uO1xuXG4gICAgY29uc3QgbG9nID0gbG9nZ2VyLmZvcihcImF3YWl0LWluZnJhXCIpO1xuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIGBydW5uaW5nIHdpdGggb3B0aW9uczogJHtKU09OLnN0cmluZ2lmeShvcHRpb25zKX0gZm9yICR7cGtnLm5hbWV9IHZlcnNpb24gJHt2ZXJzaW9ufWBcbiAgICApO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICBsZXQgeyBjb250YWluZXIsIHRpbWVvdXQsIGF0dGVtcHRzIH0gPSBvcHRpb25zO1xuICAgIHRpbWVvdXQgPSBwYXJzZUludCh0aW1lb3V0KSB8fCA1MDAwO1xuICAgIGF0dGVtcHRzID0gcGFyc2VJbnQoYXR0ZW1wdHMpIHx8IDEwO1xuXG4gICAgYXdhaXQgZW5zdXJlSW5mcmFzdHJ1Y3R1cmVCb290ZWQoXCJib290LW9yZy1jLXBlZXItMFwiLCB0aW1lb3V0LCBhdHRlbXB0cyk7XG5cbiAgICBsb2cuaW5mbyhcbiAgICAgIGBJbmZyYXN0cnVjdHVyZSBib290ZWQgc3VjY2Vzc2Z1bGx5IChhY2NvcmRpbmcgdG8gY29udGFpbmVyICR7Y29udGFpbmVyfSkhYFxuICAgICk7XG4gIH0pO1xuXG5jb25zdCBkZXBsb3lDb250cmFjdCA9IG5ldyBDb21tYW5kKClcbiAgLm5hbWUoXCJkZXBsb3ktY29udHJhY3RcIilcbiAgLmRlc2NyaXB0aW9uKFwiZGVwbG95cyB0aGUgc2VsZWN0ZWQgY29udHJhY3RcIilcbiAgLm9wdGlvbihcIi0tbmFtZSA8U3RyaW5nPlwiLCBcIkNvbnRyYWN0IE5hbWUgKGFuZCBmb2xkZXIpXCIpXG4gIC5vcHRpb24oXCItLWlucHV0IDxTdHJpbmc+XCIsIFwiaW5wdXQgZm9sZGVyXCIpXG4gIC5vcHRpb24oXG4gICAgXCItLWNvbGxlY3Rpb25zLWNvbmZpZyA8U3RyaW5nPlwiLFxuICAgIFwicGF0aCB0byBjb2xsZWN0aW9uc19jb25maWcuanNvbiB0byBjb25maWd1cmUgcHJpdmF0ZSBjb2xsZWN0aW9uc1wiXG4gIClcbiAgLm9wdGlvbihcbiAgICBcIi0taW5jcmVtZW50VmVyc2lvbiA8U3RyaW5nPlwiLFxuICAgIFwiKHRydWUgfCBmYWxzZSkgaWYgc2hvdWxkIHVzZSB2ZXJzaW9uIG9yIHNlcXVlbmNlIHRvIHVwZGF0ZSBjb250cmFjdHNcIixcbiAgICBmYWxzZVxuICApXG4gIC5vcHRpb24oXG4gICAgXCItLXRyYWNrZXJGb2xkZXIgPFN0cmluZz5cIixcbiAgICBcImNvbnRyYWN0IHZlcnNpb24gdHJhY2tlciBmb2xkZXIgKHNob3VsZCBiZSBkZWxldGVkIG9uIGluZnJhc3RydWN0dXJlOmRvd24pXCIsXG4gICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwidGVzdHNcIiwgXCJpbnRlZ3JhdGlvblwiLCBcImNoYWluY29kZVRyYWNrZXJzXCIpXG4gIClcbiAgLm9wdGlvbihcbiAgICBcIi0tcGVlcnMgPFN0cmluZz5cIixcbiAgICBcImNvbW1hIHNlcGFyYXRlZCBwZWVyIGlkc1wiLFxuICAgIFwib3JnLWEtcGVlci0wLG9yZy1iLXBlZXItMCxvcmctYy1wZWVyLTBcIlxuICApXG4gIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnM6IGFueSkgPT4ge1xuICAgIGNvbnN0IHBrZyA9IEpTT04ucGFyc2UoXG4gICAgICBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwicGFja2FnZS5qc29uXCIpLCBcInV0Zi04XCIpXG4gICAgKTtcblxuICAgIGNvbnN0IHZlcnNpb24gPSBwa2cudmVyc2lvbjtcblxuICAgIGNvbnN0IGxvZyA9IGxvZ2dlci5mb3IoXCJkZXBsb3ktY29udHJhY3RcIik7XG4gICAgbG9nLmRlYnVnKFxuICAgICAgYHJ1bm5pbmcgd2l0aCBvcHRpb25zOiAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMpfSBmb3IgJHtwa2cubmFtZX0gdmVyc2lvbiAke3ZlcnNpb259YFxuICAgICk7XG5cbiAgICBjb25zdCB7XG4gICAgICBuYW1lLFxuICAgICAgaW5wdXQsXG4gICAgICBwZWVycyxcbiAgICAgIHRyYWNrZXJGb2xkZXIsXG4gICAgICBpbmNyZW1lbnRWZXJzaW9uLFxuICAgICAgY29sbGVjdGlvbnNDb25maWcsXG4gICAgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgcGVlcklkcyA9IHBlZXJzLnNwbGl0KFwiLFwiKTtcblxuICAgIGNvbnN0IGNvdW50UGF0aCA9IHBhdGgucmVzb2x2ZShwYXRoLmpvaW4odHJhY2tlckZvbGRlciwgYCR7bmFtZX0uY291bnRgKSk7XG5cbiAgICBsZXQgc2VxdWVuY2U6IG51bWJlcjtcblxuICAgIHRyeSB7XG4gICAgICBzZXF1ZW5jZSA9IHBhcnNlSW50KGZzLnJlYWRGaWxlU3luYyhjb3VudFBhdGgpLnRvU3RyaW5nKFwidXRmLThcIikpO1xuICAgICAgaWYgKGlzTmFOKHNlcXVlbmNlKSkgc2VxdWVuY2UgPSAxO1xuICAgICAgZWxzZSBzZXF1ZW5jZSArPSAxO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHNlcXVlbmNlID0gMTtcbiAgICB9XG4gICAgLy9cbiAgICAvLyBpZiAoaW5jcmVtZW50VmVyc2lvbikge1xuICAgIC8vICAgdmVyc2lvbiA9IHZlcnNpb24gKyBgLSR7c2VxdWVuY2V9YDtcbiAgICAvLyAgIC8vIHNlcXVlbmNlID0gMTtcbiAgICAvLyB9XG5cbiAgICB0cnkge1xuICAgICAgZm9yIChjb25zdCBwZWVyIG9mIHBlZXJJZHMpIHtcbiAgICAgICAgcGFja2FnZUNvbnRyYWN0KHBlZXIsIGlucHV0LCBuYW1lLCB2ZXJzaW9uKTtcbiAgICAgICAgaW5zdGFsbENvbnRyYWN0KHBlZXIsIG5hbWUpO1xuICAgICAgICBhcHByb3ZlQ29udHJhY3QoXG4gICAgICAgICAgcGVlcixcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIHBlZXIgPT09IFwib3JnLWEtcGVlci0wXCJcbiAgICAgICAgICAgID8gXCJ0bHMtY2EtY2VydC5wZW1cIlxuICAgICAgICAgICAgOiBcIm9yZGVyZXItdGxzLWNhLWNlcnQucGVtXCIsXG4gICAgICAgICAgc2VxdWVuY2UsXG4gICAgICAgICAgdmVyc2lvbixcbiAgICAgICAgICBjb2xsZWN0aW9uc0NvbmZpZ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhjb3VudFBhdGgsIHNlcXVlbmNlLnRvU3RyaW5nKCkpO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBsb2cuZXJyb3IoXCJFcnJvciBkZXBsb3lpbmcgY29udHJhY3Q6XCIsIGVycik7XG4gICAgfVxuICAgIGNvbW1pdENoYWluY29kZShuYW1lLCBzZXF1ZW5jZSwgdmVyc2lvbiwgY29sbGVjdGlvbnNDb25maWcpO1xuICB9KTtcblxuY29uc3QgZ2V0Q3J5cHRvTWF0ZXJpYWwgPSBuZXcgQ29tbWFuZCgpXG4gIC5uYW1lKFwiZ2V0LWNyeXB0by1tYXRlcmlhbFwiKVxuICAuZGVzY3JpcHRpb24oXCJjb3BpZXMgdGhlIGNyeXB0byBtYXRlcmlhbCB0byB0aGUgc2VsZWN0ZWQgZm9sZGVyXCIpXG4gIC5vcHRpb24oXCItLWZvbGRlciA8U3RyaW5nPlwiLCBcIm91dHB1dCBmb2xkZXJcIiwgXCJkb2NrZXIvZG9ja2VyLWRhdGFcIilcbiAgLmFjdGlvbihhc3luYyAob3B0aW9uczogYW55KSA9PiB7XG4gICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShcbiAgICAgIGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJwYWNrYWdlLmpzb25cIiksIFwidXRmLThcIilcbiAgICApO1xuXG4gICAgY29uc3QgdmVyc2lvbiA9IHBrZy52ZXJzaW9uO1xuXG4gICAgY29uc3QgbG9nID0gbG9nZ2VyLmZvcihcImdldC1jcnlwdG8tbWF0ZXJpYWxcIik7XG4gICAgbG9nLmRlYnVnKFxuICAgICAgYHJ1bm5pbmcgd2l0aCBvcHRpb25zOiAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMpfSBmb3IgJHtwa2cubmFtZX0gdmVyc2lvbiAke3ZlcnNpb259YFxuICAgICk7XG4gICAgY29uc3QgeyBmb2xkZXIgfSA9IG9wdGlvbnM7XG4gICAgZXhlY1N5bmMoYGRvY2tlciBjcCBvcmctYTovd2VhdmVyL2NsaWVudC8uICR7Zm9sZGVyfWAsIHtcbiAgICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICB9KTtcbiAgfSk7XG5cbmNvbnN0IGZhYnJpY0NtZCA9IG5ldyBDb21tYW5kKClcbiAgLm5hbWUoXCJmb3ItZmFicmljXCIpXG4gIC5jb21tYW5kKFwiZmFicmljXCIpXG4gIC5kZXNjcmlwdGlvbihcbiAgICBcImV4cG9zZXMgc2V2ZXJhbCBjb21tYW5kcyB0byBoZWxwIG1hbmFnZSB0aGUgZmFicmljIGluZnJhc3RydWN0dXJlXCJcbiAgKTtcblxuZmFicmljQ21kLmFkZENvbW1hbmQoY29tcGlsZUNvbW1hbmQpO1xuZmFicmljQ21kLmFkZENvbW1hbmQoZXh0cmFjdEluZGV4ZXMpO1xuZmFicmljQ21kLmFkZENvbW1hbmQoZW5zdXJlSW5mcmEpO1xuZmFicmljQ21kLmFkZENvbW1hbmQoZGVwbG95Q29udHJhY3QpO1xuZmFicmljQ21kLmFkZENvbW1hbmQoZ2V0Q3J5cHRvTWF0ZXJpYWwpO1xuZmFicmljQ21kLmFkZENvbW1hbmQoZXh0cmFjdENvbGxlY3Rpb25zKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZmFicmljKCkge1xuICByZXR1cm4gZmFicmljQ21kO1xufVxuIl19
@@ -253,4 +253,4 @@ export function compileWithTsconfigOverrides(tsconfigPath, overrides) {
253
253
  throw new Error("Emit was skipped (check diagnostics above).");
254
254
  }
255
255
  }
256
- //# sourceMappingURL=cli-utils.js.map
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFNUIsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxnQkFBd0IsbUJBQW1CO0lBRTNDLElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FDckIsa0JBQWtCLGFBQWEsaUNBQWlDLENBQ2pFO2FBQ0UsUUFBUSxFQUFFO2FBQ1YsSUFBSSxFQUFFLENBQUM7UUFFVixPQUFPLE1BQU0sS0FBSyxHQUFHLENBQUM7SUFDeEIsQ0FBQztJQUFDLE9BQU8sR0FBUSxFQUFFLENBQUM7UUFDbEIsT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsMEJBQTBCLENBQzlDLGdCQUF3QixtQkFBbUIsRUFDM0MsVUFBa0IsSUFBSSxFQUN0QixXQUFtQixFQUFFO0lBRXJCLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQzdDLElBQUksRUFBRSxRQUFRLElBQUksQ0FBQztZQUFFLE1BQU0sSUFBSSxhQUFhLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUUxRSxPQUFPLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDckQsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENB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QyxPQUFPLENBQUMsQ0FBQztJQUNsRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNuQixvRUFBb0U7UUFDcEUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEMsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7SUFDckQsSUFBSSxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7SUFDakUsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZGlkSW5mcmFzdHJ1Y3R1cmVCb290KFxuICBjb250YWluZXJOYW1lOiBzdHJpbmcgPSBcImJvb3Qtb3JnLWMtcGVlci0wXCJcbik6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGNvbnN0IG91dHB1dCA9IGV4ZWNTeW5jKFxuICAgICAgYGRvY2tlciBpbnNwZWN0ICR7Y29udGFpbmVyTmFtZX0gLS1mb3JtYXQ9J3t7LlN0YXRlLkV4aXRDb2RlfX0nYFxuICAgIClcbiAgICAgIC50b1N0cmluZygpXG4gICAgICAudHJpbSgpO1xuXG4gICAgcmV0dXJuIG91dHB1dCA9PT0gXCIwXCI7XG4gIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgY29uc29sZS5lcnJvcihcIkVycm9yIGluc3BlY3RpbmcgY29udGFpbmVyOlwiLCBlcnIubWVzc2FnZSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbnN1cmVJbmZyYXN0cnVjdHVyZUJvb3RlZChcbiAgY29udGFpbmVyTmFtZTogc3RyaW5nID0gXCJib290LW9yZy1jLXBlZXItMFwiLFxuICB0aW1lb3V0OiBudW1iZXIgPSA1MDAwLFxuICBhdHRlbXB0czogbnVtYmVyID0gMTBcbik6IFByb21pc2U8dm9pZD4ge1xuICB3aGlsZSAoIWRpZEluZnJhc3RydWN0dXJlQm9vdChjb250YWluZXJOYW1lKSkge1xuICAgIGlmICgtLWF0dGVtcHRzIDw9IDApIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiZXhjZWVkZWQgYWxsb3dlZCBhdHRlbXB0c1wiKTtcblxuICAgIGNvbnNvbGUubG9nKFwiV2FpdGluZyBmb3IgaW5mcmFzdHJ1Y3R1cmUgdG8gYm9vdC4uLlwiKTtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCB0aW1lb3V0KSk7IC8vIFdhaXQgZm9yIDUgc2Vjb25kcyBiZWZvcmUgcmV0cnlpbmdcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFja2FnZUNvbnRyYWN0KFxuICBkb2NrZXJOYW1lOiBzdHJpbmcsXG4gIGNvbnRyYWN0Rm9sZGVyOiBzdHJpbmcsXG4gIGNvbnRyYWN0TmFtZTogc3RyaW5nLFxuICB2ZXJzaW9uOiBzdHJpbmcgPSBcIjEuMFwiXG4pOiB2b2lkIHtcbiAgZXhlY1N5bmMoYGRvY2tlciBleGVjICR7ZG9ja2VyTmFtZX0gbm9kZSAuL3dlYXZlci9saWIvY29yZS9jbGkuY2pzIHBhY2thZ2UtY2hhaW5jb2RlIC1kIFxcXG4gICAgLS1jaGFpbmNvZGUtcGF0aCAuL3dlYXZlci9jaGFpbmNvZGUvJHtjb250cmFjdEZvbGRlcn0gXFxcbiAgICAtLWxhbmcgbm9kZSBcXFxuICAgIC0tY2hhaW5jb2RlLW91dHB1dCAvd2VhdmVyL3BlZXIvJHtjb250cmFjdE5hbWV9LnRhci5neiBcXFxuICAgIC0tY2hhaW5jb2RlLW5hbWUgJHtjb250cmFjdE5hbWV9IFxcXG4gICAgLS1jaGFpbmNvZGUtdmVyc2lvbiAke3ZlcnNpb259IC1zXG4gICAgYCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YWxsQ29udHJhY3QoZG9ja2VyTmFtZTogc3RyaW5nLCBjb250cmFjdE5hbWU6IHN0cmluZykge1xuICBleGVjU3luYyhcbiAgICBgZG9ja2VyIGV4ZWMgJHtkb2NrZXJOYW1lfSBub2RlIC4vd2VhdmVyL2xpYi9jb3JlL2NsaS5janMgaW5zdGFsbC1jaGFpbmNvZGUgLWQgLXMgLS1jaGFpbmNvZGUtcGF0aCAuL3dlYXZlci9wZWVyLyR7Y29udHJhY3ROYW1lfS50YXIuZ3pgXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHByb3ZlQ29udHJhY3QoXG4gIGRvY2tlck5hbWU6IHN0cmluZyxcbiAgY29udHJhY3ROYW1lOiBzdHJpbmcsXG4gIHRsc0NlcnROYW1lOiBzdHJpbmcsXG4gIHNlcXVlbmNlOiBudW1iZXIgPSAxLFxuICB2ZXJzaW9uOiBzdHJpbmcgPSBcIjEuMFwiLFxuICBjb2xsZWN0aW9uc0NvbmZpZz86IHN0cmluZ1xuKSB7XG4gIGNvbnN0IGNvbGxlY3Rpb25zRmxhZyA9IGNvbGxlY3Rpb25zQ29uZmlnXG4gICAgPyBgIC0tY29sbGVjdGlvbnMtY29uZmlnIFwiJHtjb2xsZWN0aW9uc0NvbmZpZ31cImBcbiAgICA6IFwiXCI7XG4gIGV4ZWNTeW5jKGBkb2NrZXIgZXhlYyAke2RvY2tlck5hbWV9IG5vZGUgLi93ZWF2ZXIvbGliL2NvcmUvY2xpLmNqcyBhcHByb3ZlLWNoYWluY29kZSAtZCAtcyBcXFxuICAgIC0tb3JkZXJlci1hZGRyZXNzIG9yZy1hLW9yZGVyZXItMDo3MDIxIFxcXG4gICAgLS1jaGFubmVsLWlkIHNpbXBsZS1jaGFubmVsIFxcXG4gICAgLS1jaGFpbmNvZGUtbmFtZSAke2NvbnRyYWN0TmFtZX0gXFxcbiAgICAtLWNoYWluY29kZS12ZXJzaW9uICR7dmVyc2lvbn0gXFxcbiAgICAtLXNlcXVlbmNlICR7c2VxdWVuY2V9JHtjb2xsZWN0aW9uc0ZsYWd9IFxcXG4gICAgLS1lbmFibGUtdGxzIFxcXG4gICAgLS10bHMtY2EtY2VydC1maWxlIC93ZWF2ZXIvcGVlci8ke3Rsc0NlcnROYW1lfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVwbG95Q29udHJhY3QoXG4gIGNvbnRyYWN0Rm9sZGVyOiBzdHJpbmcsXG4gIGNvbnRyYWN0TmFtZTogc3RyaW5nLFxuICB2ZXJzaW9uOiBzdHJpbmcgPSBcIjEuMFwiLFxuICBwZWVyczogc3RyaW5nW10gPSBbXCJvcmctYS1wZWVyLTBcIiwgXCJvcmctYi1wZWVyLTBcIiwgXCJvcmctYy1wZWVyLTBcIl1cbikge1xuICBsZXQgc2VxdWVuY2U6IG51bWJlcjtcbiAgY29uc3QgY291bnRQYXRoID0gcGF0aC5yZXNvbHZlKFxuICAgIHBhdGguam9pbihcbiAgICAgIGAke19fZGlybmFtZX1gLFxuICAgICAgXCIuLlwiLFxuICAgICAgXCJpbnRlZ3JhdGlvblwiLFxuICAgICAgXCJjaGFpbmNvZGVUcmFja2Vyc1wiLFxuICAgICAgYCR7Y29udHJhY3ROYW1lfS5jb3VudGBcbiAgICApXG4gICk7XG4gIHRyeSB7XG4gICAgc2VxdWVuY2UgPSBwYXJzZUludChmcy5yZWFkRmlsZVN5bmMoY291bnRQYXRoKS50b1N0cmluZyhcInV0Zi04XCIpKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICBzZXF1ZW5jZSA9IDE7XG4gIH1cbiAgZnMud3JpdGVGaWxlU3luYyhjb3VudFBhdGgsIHNlcXVlbmNlLnRvU3RyaW5nKCkpO1xuXG4gIHRyeSB7XG4gICAgZm9yIChjb25zdCBwZWVyIG9mIHBlZXJzKSB7XG4gICAgICBwYWNrYWdlQ29udHJhY3QocGVlciwgY29udHJhY3RGb2xkZXIsIGNvbnRyYWN0TmFtZSwgdmVyc2lvbik7XG4gICAgICBpbnN0YWxsQ29udHJhY3QocGVlciwgY29udHJhY3ROYW1lKTtcbiAgICAgIGFwcHJvdmVDb250cmFjdChcbiAgICAgICAgcGVlcixcbiAgICAgICAgY29udHJhY3ROYW1lLFxuICAgICAgICBwZWVyID09PSBcIm9yZy1hLXBlZXItMFwiID8gXCJ0bHMtY2EtY2VydC5wZW1cIiA6IFwib3JkZXJlci10bHMtY2EtY2VydC5wZW1cIixcbiAgICAgICAgc2VxdWVuY2UsXG4gICAgICAgIHZlcnNpb25cbiAgICAgICk7XG4gICAgfVxuICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKFwiRXJyb3IgZGVwbG95aW5nIGNvbnRyYWN0OlwiLCBlcnIubWVzc2FnZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbW1pdENoYWluY29kZShcbiAgY29udHJhY3ROYW1lOiBzdHJpbmcsXG4gIHNlcXVlbmNlOiBudW1iZXIgPSAxLFxuICB2ZXJzaW9uOiBzdHJpbmcgPSBcIjEuMFwiLFxuICBjb2xsZWN0aW9uc0NvbmZpZz86IHN0cmluZ1xuKTogdm9pZCB7XG4gIGNvbnN0IGNvbGxlY3Rpb25zRmxhZyA9IGNvbGxlY3Rpb25zQ29uZmlnXG4gICAgPyBgIC0tY29sbGVjdGlvbnMtY29uZmlnIFwiJHtjb2xsZWN0aW9uc0NvbmZpZ31cImBcbiAgICA6IFwiXCI7XG4gIGV4ZWNTeW5jKGBkb2NrZXIgZXhlYyBvcmctYS1wZWVyLTAgbm9kZSAuL3dlYXZlci9saWIvY29yZS9jbGkuY2pzIGNvbW1pdC1jaGFpbmNvZGUgLWQgLXMgXFxcbiAgICAtLW9yZGVyZXItYWRkcmVzcyBvcmctYS1vcmRlcmVyLTA6NzAyMSBcXFxuICAgIC0tY2hhbm5lbC1pZCBzaW1wbGUtY2hhbm5lbCBcXFxuICAgIC0tY2hhaW5jb2RlLW5hbWUgJHtjb250cmFjdE5hbWV9IFxcXG4gICAgLS1jaGFpbmNvZGUtdmVyc2lvbiAke3ZlcnNpb259IFxcXG4gICAgLS1zZXF1ZW5jZSAke3NlcXVlbmNlfSR7Y29sbGVjdGlvbnNGbGFnfSBcXFxuICAgIC0tZW5hYmxlLXRscyBcXFxuICAgIC0tdGxzLWNhLWNlcnQtZmlsZSAvd2VhdmVyL3BlZXIvdGxzLWNhLWNlcnQucGVtIFxcXG4gICAgLS1wZWVyLWFkZHJlc3NlcyBvcmctYS1wZWVyLTA6NzAzMSxvcmctYi1wZWVyLTA6NzAzMixvcmctYy1wZWVyLTA6NzAzMyBcXFxuICAgIC0tcGVlci1yb290LXRscyAuL3dlYXZlci9wZWVyL3Rscy1jYS1jZXJ0LnBlbSwuL3dlYXZlci9wZWVyL29yZy1iLXRscy1jYS1jZXJ0LnBlbSwuL3dlYXZlci9wZWVyL29yZy1jLXRscy1jYS1jZXJ0LnBlbWApO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlQ29udHJhY3RSZWFkaW5lc3MoXG4gIGNvbnRyYWN0TmFtZTogc3RyaW5nLFxuICBkb2NrZXJOYW1lOiBzdHJpbmcgPSBcIm9yZy1hLXBlZXItMFwiLFxuICB0bHNDZXJ0OiBzdHJpbmcgPSBcInRscy1jYS1jZXJ0LnBlbVwiLFxuICBjb3VudGVyID0gMFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgdHJ5IHtcbiAgICAvLyBQcmVwYXJlIHRoZSBKU09OIGFyZ3VtZW50IGZvciB0aGUgY2hhaW5jb2RlXG4gICAgY29uc3QgY2hhaW5jb2RlQXJncyA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGZ1bmN0aW9uOiBcImhlYWx0aGNoZWNrXCIsXG4gICAgICBBcmdzOiBbXSxcbiAgICB9KTtcblxuICAgIGlmIChjb3VudGVyID4gMTApIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIC8vIEludm9rZSB0aGUgY2hhaW5jb2RlXG4gICAgY29uc3QgcmVzID0gZXhlY1N5bmMoXG4gICAgICBgZG9ja2VyIGV4ZWMgJHtkb2NrZXJOYW1lfSBwZWVyIGNoYWluY29kZSBxdWVyeSBcXFxuICAgICAgICAtQyBzaW1wbGUtY2hhbm5lbCBcXFxuICAgICAgICAtbiAke2NvbnRyYWN0TmFtZX0gXFxcbiAgICAgICAgLWMgJyR7Y2hhaW5jb2RlQXJnc30nIFxcXG4gICAgICAgIC0tdGxzIC0tY2FmaWxlIC93ZWF2ZXIvcGVlci8ke3Rsc0NlcnR9YFxuICAgICk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBKU09OLnBhcnNlKHJlcy50b1N0cmluZygpKTtcblxuICAgIHJldHVybiByZXN1bHQuaGVhbHRoY2hlY2sudG9TdHJpbmcoKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgY29uc29sZS5sb2coXCJDaGFpbmNvZGUgbm90IHJlYWR5LiBSZXRyeWluZy4uLlwiKTtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCA1MDAwKSk7IC8vIFdhaXQgZm9yIDUgc2Vjb25kcyBiZWZvcmUgcmV0cnlpbmdcbiAgICByZXR1cm4gZW5zdXJlQ29udHJhY3RSZWFkaW5lc3MoXG4gICAgICBjb250cmFjdE5hbWUsXG4gICAgICBkb2NrZXJOYW1lLFxuICAgICAgdGxzQ2VydCxcbiAgICAgIGNvdW50ZXIrK1xuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyaW0oc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zb2xlLndhcm4oXCJDb250cmFjdCBub3QgdHJpbW1pbmcgcmVzcG9uc2UgcHJvcGVybHk6IFwiLCBzdHIpO1xuICByZXR1cm4gc3RyLnRyaW0oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludm9rZUNoYWluY29kZShcbiAgY29udHJhY3ROYW1lOiBzdHJpbmcsXG4gIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICBhcmdzOiBhbnlbXSxcbiAgdHJhbnNpZW50OiBhbnkgPSB7fSxcbiAgZG9ja2VyTmFtZTogc3RyaW5nID0gXCJvcmctYS1wZWVyLTBcIixcbiAgdGxzOiBzdHJpbmcgPSBcInRscy1jYS1jZXJ0LnBlbVwiXG4pIHtcbiAgLy8gUHJlcGFyZSB0aGUgSlNPTiBhcmd1bWVudCBmb3IgdGhlIGNoYWluY29kZVxuICBjb25zdCBjaGFpbmNvZGVBcmdzID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgIGZ1bmN0aW9uOiBmdW5jdGlvbk5hbWUsXG4gICAgQXJnczogYXJncyxcbiAgfSk7XG5cbiAgY29uc3QgdHJhbnNpZW50RGF0YSA9IEpTT04uc3RyaW5naWZ5KHRyYW5zaWVudCk7XG4gIGNvbnN0IHRyYW5zaWVudFN0cmluZyA9IGAtLXRyYW5zaWVudCAnJHt0cmFuc2llbnREYXRhfSdgO1xuXG4gIC8vIEludm9rZSB0aGUgY2hhaW5jb2RlXG4gIHJldHVybiBleGVjU3luYyhcbiAgICBgZG9ja2VyIGV4ZWMgJHtkb2NrZXJOYW1lfSBwZWVyIGNoYWluY29kZSBpbnZva2UgXFxcbiAgICAtQyBzaW1wbGUtY2hhbm5lbCBcXFxuICAgIC1uICR7Y29udHJhY3ROYW1lfSBcXFxuICAgIC1jICcke2NoYWluY29kZUFyZ3N9JyBcXFxuICAgIC0tcGVlckFkZHJlc3NlcyBvcmctYS1wZWVyLTA6NzAzMSBcXFxuICAgIC0tdGxzUm9vdENlcnRGaWxlcyAvd2VhdmVyL3BlZXIvdGxzLWNhLWNlcnQucGVtIFxcXG4gICAgLS1wZWVyQWRkcmVzc2VzIG9yZy1iLXBlZXItMDo3MDMyIFxcXG4gICAgLS10bHNSb290Q2VydEZpbGVzIC93ZWF2ZXIvcGVlci9vcmctYi10bHMtY2EtY2VydC5wZW0gXFxcbiAgICAtLXBlZXJBZGRyZXNzZXMgb3JnLWMtcGVlci0wOjcwMzMgXFxcbiAgICAtLXRsc1Jvb3RDZXJ0RmlsZXMgL3dlYXZlci9wZWVyL29yZy1jLXRscy1jYS1jZXJ0LnBlbSBcXFxuICAgIC1vIG9yZy1hLW9yZGVyZXItMDo3MDIxIFxcXG4gICAgLS10bHMgLS1jYWZpbGUgL3dlYXZlci9wZWVyLyR7dGxzfSBcXFxuICAgICR7dHJhbnNpZW50ID8gdHJhbnNpZW50U3RyaW5nIDogXCJcIn1gXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBxdWVyeUNoYWluY29kZShcbiAgY29udHJhY3ROYW1lOiBzdHJpbmcsXG4gIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICBhcmdzOiBhbnlbXSxcbiAgZG9ja2VyTmFtZTogc3RyaW5nID0gXCJvcmctYS1wZWVyLTBcIixcbiAgdGxzOiBzdHJpbmcgPSBcInRscy1jYS1jZXJ0LnBlbVwiXG4pIHtcbiAgdHJ5IHtcbiAgICAvLyBQcmVwYXJlIHRoZSBKU09OIGFyZ3VtZW50IGZvciB0aGUgY2hhaW5jb2RlXG4gICAgY29uc3QgY2hhaW5jb2RlQXJncyA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGZ1bmN0aW9uOiBmdW5jdGlvbk5hbWUsXG4gICAgICBBcmdzOiBhcmdzLFxuICAgIH0pO1xuXG4gICAgLy8gSW52b2tlIHRoZSBjaGFpbmNvZGVcbiAgICBjb25zdCByZXMgPSBleGVjU3luYyhcbiAgICAgIGBkb2NrZXIgZXhlYyAke2RvY2tlck5hbWV9IHBlZXIgY2hhaW5jb2RlIHF1ZXJ5IFxcXG4gICAgICAgIC1DIHNpbXBsZS1jaGFubmVsIFxcXG4gICAgICAgIC1uICR7Y29udHJhY3ROYW1lfSBcXFxuICAgICAgICAtYyAnJHtjaGFpbmNvZGVBcmdzfScgXFxcbiAgICAgICAgLS10bHMgLS1jYWZpbGUgJHt0bHN9YFxuICAgICk7XG5cbiAgICBjb25zdCBwcm9jZXNzZWQgPSByZXMudG9TdHJpbmcoKTtcbiAgICBjb25zb2xlLmxvZyhcIkJsb2NrY2hhaW4gcmVhZDpcIiwgcHJvY2Vzc2VkKTtcblxuICAgIHJldHVybiBwcm9jZXNzZWQ7XG4gIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgY29uc29sZS5sb2coXCJGYWlsZWQgdG8gcmVhZCBibG9ja2NoYWluXCIpO1xuICAgIHRocm93IGVycjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlUHJpdmF0ZUNoYWluY29kZShcbiAgY29udHJhY3ROYW1lOiBzdHJpbmcsXG4gIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICBhcmdzOiBhbnlbXSxcbiAgdHJhbnNpZW50OiBhbnkgPSB7fSxcbiAgZG9ja2VyTmFtZTogc3RyaW5nID0gXCJvcmctYS1wZWVyLTBcIixcbiAgdGxzOiBzdHJpbmcgPSBcInRscy1jYS1jZXJ0LnBlbVwiXG4pIHtcbiAgLy8gUHJlcGFyZSB0aGUgSlNPTiBhcmd1bWVudCBmb3IgdGhlIGNoYWluY29kZVxuICBjb25zdCBjaGFpbmNvZGVBcmdzID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgIGZ1bmN0aW9uOiBmdW5jdGlvbk5hbWUsXG4gICAgQXJnczogYXJncyxcbiAgfSk7XG5cbiAgY29uc3QgdHJhbnNpZW50RGF0YSA9IEpTT04uc3RyaW5naWZ5KHRyYW5zaWVudCk7XG4gIGNvbnN0IHRyYW5zaWVudFN0cmluZyA9IGAtLXRyYW5zaWVudCAnJHt0cmFuc2llbnREYXRhfSdgO1xuXG4gIC8vIEludm9rZSB0aGUgY2hhaW5jb2RlXG4gIHJldHVybiBleGVjU3luYyhcbiAgICBgZG9ja2VyIGV4ZWMgJHtkb2NrZXJOYW1lfSBwZWVyIGNoYWluY29kZSBpbnZva2UgXFxcbiAgICAtQyBzaW1wbGUtY2hhbm5lbCBcXFxuICAgIC1uICR7Y29udHJhY3ROYW1lfSBcXFxuICAgIC1jICcke2NoYWluY29kZUFyZ3N9JyBcXFxuICAgIC0tcGVlckFkZHJlc3NlcyBvcmctYS1wZWVyLTA6NzAzMSBcXFxuICAgIC0tdGxzUm9vdENlcnRGaWxlcyAvd2VhdmVyL3BlZXIvdGxzLWNhLWNlcnQucGVtIFxcXG4gICAgLW8gb3JnLWEtb3JkZXJlci0wOjcwMjEgXFxcbiAgICAtLXRscyAtLWNhZmlsZSAvd2VhdmVyL3BlZXIvJHt0bHN9IFxcXG4gICAgJHt0cmFuc2llbnQgPyB0cmFuc2llbnRTdHJpbmcgOiBcIlwifWBcbiAgKTtcblxuICAvLyAgIC0tcGVlckFkZHJlc3NlcyBvcmctYi1wZWVyLTA6NzAzMiBcXFxuICAvLyAtLXRsc1Jvb3RDZXJ0RmlsZXMgL3dlYXZlci9wZWVyL29yZy1iLXRscy1jYS1jZXJ0LnBlbSBcXFxuICAvLyAtLXBlZXJBZGRyZXNzZXMgb3JnLWMtcGVlci0wOjcwMzMgXFxcbiAgLy8gLS10bHNSb290Q2VydEZpbGVzIC93ZWF2ZXIvcGVlci9vcmctYy10bHMtY2EtY2VydC5wZW0gXFxcbn1cblxuZXhwb3J0IGVudW0gU2NyaXB0Q29tbWFuZHMge1xuICBTVEFSVCA9IFwiZmFicmljLWNoYWluY29kZS1ub2RlIHN0YXJ0IFxcXG4gICAgICAgICAgLS1ncnBjLm1heF9yZWNlaXZlX21lc3NhZ2VfbGVuZ3RoICR7Q0hBSU5DT0RFX01BWFJFQ1ZNU0dTSVpFLTE1NzI4NjQwfSBcXFxuICAgICAgICAgIC0tZ3JwYy5tYXhfc2VuZF9tZXNzYWdlX2xlbmd0aCAke0NIQUlOQ09ERV9NQVhTRU5ETVNHU0laRS0xNTcyODY0MH0gXCIsXG4gIFNUQVJUX0NDQUFTID0gXCJmYWJyaWMtY2hhaW5jb2RlLW5vZGUgc2VydmVyIFxcXG4gICAgICAgICAgLS1jaGFpbmNvZGUtYWRkcmVzcz0kQ0hBSU5DT0RFX1NFUlZFUl9BRERSRVNTIFxcXG4gICAgICAgICAgLS1jaGFpbmNvZGUtaWQ9JENIQUlOQ09ERV9JRCBcXFxuICAgICAgICAgIC0tY2hhaW5jb2RlLXRscy1jZXJ0LWZpbGU9JHtDSEFJTkNPREVfVExTX0NFUlR9IFxcXG4gICAgICAgICAgLS1jaGFpbmNvZGUtdGxzLWtleS1maWxlPSR7Q0hBSU5DT0RFX1RMU19LRVl9IFxcXG4gICAgICAgICAgLS1ncnBjLm1heF9yZWNlaXZlX21lc3NhZ2VfbGVuZ3RoICR7Q0hBSU5DT0RFX01BWFJFQ1ZNU0dTSVpFLTE1NzI4NjQwfSBcXFxuICAgICAgICAgIC0tZ3JwYy5tYXhfc2VuZF9tZXNzYWdlX2xlbmd0aCAke0NIQUlOQ09ERV9NQVhTRU5ETVNHU0laRS0xNTcyODY0MH0gXFxcbiAgICAgICAgICAtLXRscy5lbmFibGVkPXRydWVcIixcbiAgU1RBUlRfQ0NBQVNfREVCVUcgPSBcIm5vZGUgLS1pbnNwZWN0PTAuMC4wLjA6OTIyOSAuL25vZGVfbW9kdWxlcy8uYmluL2ZhYnJpYy1jaGFpbmNvZGUtbm9kZSBzZXJ2ZXIgXFxcbiAgICAgICAgICAtLWNoYWluY29kZS1hZGRyZXNzPSRDSEFJTkNPREVfU0VSVkVSX0FERFJFU1MgXFxcbiAgICAgICAgICAtLWNoYWluY29kZS1pZD0kQ0hBSU5DT0RFX0lEIFxcXG4gICAgICAgICAgLS1jaGFpbmNvZGUtdGxzLWNlcnQtZmlsZT0ke0NIQUlOQ09ERV9UTFNfQ0VSVH0gXFxcbiAgICAgICAgICAtLWNoYWluY29kZS10bHMta2V5LWZpbGU9JHtDSEFJTkNPREVfVExTX0tFWX0gXFxcbiAgICAgICAgICAtLWdycGMubWF4X3JlY2VpdmVfbWVzc2FnZV9sZW5ndGggJHtDSEFJTkNPREVfTUFYUkVDVk1TR1NJWkUtMTU3Mjg2NDB9IFxcXG4gICAgICAgICAgLS1ncnBjLm1heF9zZW5kX21lc3NhZ2VfbGVuZ3RoICR7Q0hBSU5DT0RFX01BWFNFTkRNU0dTSVpFLTE1NzI4NjQwfSBcXFxuICAgICAgICAgIC0tdGxzLmVuYWJsZWQ9dHJ1ZVwiLFxuICBTVEFSVF9ERUJVRyA9IFwibm9kZSAtLWluc3BlY3Q9MC4wLjAuMDo5MjI5IC91c3IvbG9jYWwvc3JjL25vZGVfbW9kdWxlcy8uYmluL2ZhYnJpYy1jaGFpbmNvZGUtbm9kZSBzdGFydCBcXFxuICAgICAgICAgIC0tZ3JwYy5tYXhfcmVjZWl2ZV9tZXNzYWdlX2xlbmd0aCAke0NIQUlOQ09ERV9NQVhSRUNWTVNHU0laRS0xNTcyODY0MH0gXFxcbiAgICAgICAgICAtLWdycGMubWF4X3NlbmRfbWVzc2FnZV9sZW5ndGggJHtDSEFJTkNPREVfTUFYU0VORE1TR1NJWkUtMTU3Mjg2NDB9XCIsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb250cmFjdFN0YXJ0Q29tbWFuZChcbiAgZGVidWc6IGJvb2xlYW4sXG4gIGNjYWFzOiBib29sZWFuXG4pOiBzdHJpbmcge1xuICBpZiAoY2NhYXMpIHtcbiAgICByZXR1cm4gZGVidWdcbiAgICAgID8gU2NyaXB0Q29tbWFuZHMuU1RBUlRfQ0NBQVNfREVCVUdcbiAgICAgIDogU2NyaXB0Q29tbWFuZHMuU1RBUlRfQ0NBQVM7XG4gIH1cbiAgcmV0dXJuIGRlYnVnID8gU2NyaXB0Q29tbWFuZHMuU1RBUlRfREVCVUcgOiBTY3JpcHRDb21tYW5kcy5TVEFSVDtcbn1cblxuZnVuY3Rpb24gZm9ybWF0RGlhZ25vc3RpY3MoZGlhZ3M6IHJlYWRvbmx5IHRzLkRpYWdub3N0aWNbXSk6IHN0cmluZyB7XG4gIGNvbnN0IGhvc3Q6IHRzLkZvcm1hdERpYWdub3N0aWNzSG9zdCA9IHtcbiAgICBnZXRDYW5vbmljYWxGaWxlTmFtZTogKGYpID0+IGYsXG4gICAgZ2V0Q3VycmVudERpcmVjdG9yeTogdHMuc3lzLmdldEN1cnJlbnREaXJlY3RvcnksXG4gICAgZ2V0TmV3TGluZTogKCkgPT4gdHMuc3lzLm5ld0xpbmUsXG4gIH07XG4gIHJldHVybiB0cy5mb3JtYXREaWFnbm9zdGljc1dpdGhDb2xvckFuZENvbnRleHQoZGlhZ3MsIGhvc3QpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZVdpdGhUc2NvbmZpZ092ZXJyaWRlcyhcbiAgdHNjb25maWdQYXRoOiBzdHJpbmcsXG4gIG92ZXJyaWRlczogUGFydGlhbDx0cy5Db21waWxlck9wdGlvbnM+XG4pOiB2b2lkIHtcbiAgY29uc3QgYWJzQ29uZmlnUGF0aCA9IHBhdGguaXNBYnNvbHV0ZSh0c2NvbmZpZ1BhdGgpXG4gICAgPyB0c2NvbmZpZ1BhdGhcbiAgICA6IHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCB0c2NvbmZpZ1BhdGgpO1xuXG4gIC8vIDEpIFJlYWQgdGhlIHRzY29uZmlnLmpzb25cbiAgY29uc3QgY29uZmlnRmlsZSA9IHRzLnJlYWRDb25maWdGaWxlKGFic0NvbmZpZ1BhdGgsIHRzLnN5cy5yZWFkRmlsZSk7XG4gIGlmIChjb25maWdGaWxlLmVycm9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdERpYWdub3N0aWNzKFtjb25maWdGaWxlLmVycm9yXSkpO1xuICB9XG5cbiAgLy8gMikgUGFyc2UgaXQgKHJlc29sdmVzIFwiZXh0ZW5kc1wiLCBpbmNsdWRlL2V4Y2x1ZGUvZmlsZXMsIGV0Yy4pXG4gIGNvbnN0IGNvbmZpZ0RpciA9IHBhdGguZGlybmFtZShhYnNDb25maWdQYXRoKTtcbiAgY29uc3QgcGFyc2VkID0gdHMucGFyc2VKc29uQ29uZmlnRmlsZUNvbnRlbnQoXG4gICAgY29uZmlnRmlsZS5jb25maWcsXG4gICAgdHMuc3lzLFxuICAgIGNvbmZpZ0RpcixcbiAgICAvKmV4aXN0aW5nT3B0aW9ucyovIHVuZGVmaW5lZCxcbiAgICBhYnNDb25maWdQYXRoXG4gICk7XG5cbiAgaWYgKHBhcnNlZC5lcnJvcnMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdERpYWdub3N0aWNzKHBhcnNlZC5lcnJvcnMpKTtcbiAgfVxuXG4gIC8vIDMpIE92ZXJyaWRlIGNvbXBpbGVyIG9wdGlvbnMgaW4tbWVtb3J5XG4gIGNvbnN0IG9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucyA9IHtcbiAgICAuLi5wYXJzZWQub3B0aW9ucyxcbiAgICAuLi5vdmVycmlkZXMsXG4gIH07XG5cbiAgLy8gT3B0aW9uYWw6IElmIHlvdSBvdmVycmlkZSBvdXREaXIvcm9vdERpciwgZW5zdXJlIHRoZXnigJlyZSBhYnNvbHV0ZVxuICAvLyB0byBhdm9pZCBzdXJwcmlzZXMgZGVwZW5kaW5nIG9uIENXRC5cbiAgaWYgKG9wdGlvbnMub3V0RGlyKSBvcHRpb25zLm91dERpciA9IHBhdGgucmVzb2x2ZShjb25maWdEaXIsIG9wdGlvbnMub3V0RGlyKTtcbiAgaWYgKG9wdGlvbnMucm9vdERpcilcbiAgICBvcHRpb25zLnJvb3REaXIgPSBwYXRoLnJlc29sdmUoY29uZmlnRGlyLCBvcHRpb25zLnJvb3REaXIpO1xuXG4gIC8vIDQpIENyZWF0ZSBwcm9ncmFtICsgZW1pdFxuICBjb25zdCBwcm9ncmFtID0gdHMuY3JlYXRlUHJvZ3JhbSh7XG4gICAgcm9vdE5hbWVzOiBwYXJzZWQuZmlsZU5hbWVzLFxuICAgIG9wdGlvbnMsXG4gICAgcHJvamVjdFJlZmVyZW5jZXM6IHBhcnNlZC5wcm9qZWN0UmVmZXJlbmNlcyxcbiAgfSk7XG5cbiAgY29uc3QgcHJlRW1pdCA9IHRzLmdldFByZUVtaXREaWFnbm9zdGljcyhwcm9ncmFtKTtcbiAgaWYgKHByZUVtaXQubGVuZ3RoKSB7XG4gICAgLy8gSWYgeW91IHdhbnQgXCJ0cmFuc3BpbGUgYW55d2F5XCIsIHlvdSBjYW4gY2hvb3NlIHRvIG5vdCB0aHJvdyBoZXJlLlxuICAgIHRocm93IG5ldyBFcnJvcihmb3JtYXREaWFnbm9zdGljcyhwcmVFbWl0KSk7XG4gIH1cblxuICBjb25zdCBlbWl0UmVzdWx0ID0gcHJvZ3JhbS5lbWl0KCk7XG4gIGNvbnN0IGVtaXREaWFnbm9zdGljcyA9IGVtaXRSZXN1bHQuZGlhZ25vc3RpY3MgPz8gW107XG4gIGlmIChlbWl0RGlhZ25vc3RpY3MubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdERpYWdub3N0aWNzKGVtaXREaWFnbm9zdGljcykpO1xuICB9XG5cbiAgaWYgKGVtaXRSZXN1bHQuZW1pdFNraXBwZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFbWl0IHdhcyBza2lwcGVkIChjaGVjayBkaWFnbm9zdGljcyBhYm92ZSkuXCIpO1xuICB9XG59XG4iXX0=