@decaf-ts/for-fabric 0.5.2 → 0.5.4

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 (505) hide show
  1. package/dist/for-fabric.cjs +2 -3790
  2. package/dist/for-fabric.cjs.map +1 -0
  3. package/dist/for-fabric.js +2 -3894
  4. package/dist/for-fabric.js.map +1 -0
  5. package/lib/bin/cli.cjs +1 -1
  6. package/lib/bin/cli.js.map +1 -0
  7. package/lib/cli-module.cjs +1 -1
  8. package/lib/cli-module.js.map +1 -0
  9. package/lib/cli-utils.cjs +1 -1
  10. package/lib/cli-utils.js.map +1 -0
  11. package/lib/client/FabricClientAdapter.cjs +1 -1
  12. package/lib/client/FabricClientAdapter.js.map +1 -0
  13. package/lib/client/FabricClientDispatch.cjs +1 -1
  14. package/lib/client/FabricClientDispatch.js.map +1 -0
  15. package/lib/client/FabricClientPaginator.cjs +1 -1
  16. package/lib/client/FabricClientPaginator.js.map +1 -0
  17. package/lib/client/FabricClientRepository.cjs +1 -1
  18. package/lib/client/FabricClientRepository.js.map +1 -0
  19. package/lib/client/FabricClientStatement.cjs +1 -1
  20. package/lib/client/FabricClientStatement.js.map +1 -0
  21. package/lib/client/collections/generation.cjs +1 -1
  22. package/lib/client/collections/generation.js.map +1 -0
  23. package/lib/client/collections/index.cjs +1 -1
  24. package/lib/client/collections/index.js.map +1 -0
  25. package/lib/client/constants.cjs +1 -1
  26. package/lib/client/constants.js.map +1 -0
  27. package/lib/client/crypto.cjs +1 -1
  28. package/lib/client/crypto.js.map +1 -0
  29. package/lib/client/erc20/FabricERC20ClientRepository.cjs +1 -1
  30. package/lib/client/erc20/FabricERC20ClientRepository.js.map +1 -0
  31. package/lib/client/erc20/index.cjs +1 -1
  32. package/lib/client/erc20/index.js.map +1 -0
  33. package/lib/client/fabric-fs.cjs +1 -1
  34. package/lib/client/fabric-fs.js.map +1 -0
  35. package/lib/client/fabric-hsm.cjs +1 -1
  36. package/lib/client/fabric-hsm.js.map +1 -0
  37. package/lib/client/ids/id-extraction.cjs +1 -1
  38. package/lib/client/ids/id-extraction.js.map +1 -0
  39. package/lib/client/ids/index.cjs +1 -1
  40. package/lib/client/ids/index.js.map +1 -0
  41. package/lib/client/index.cjs +1 -1
  42. package/lib/client/index.js.map +1 -0
  43. package/lib/client/indexes/generation.cjs +1 -1
  44. package/lib/client/indexes/generation.js.map +1 -0
  45. package/lib/client/indexes/index.cjs +1 -1
  46. package/lib/client/indexes/index.js.map +1 -0
  47. package/lib/client/logging.cjs +1 -1
  48. package/lib/client/logging.js.map +1 -0
  49. package/lib/client/services/FabricEnrollmentService.cjs +1 -1
  50. package/lib/client/services/FabricEnrollmentService.js.map +1 -0
  51. package/lib/client/services/FabricIdentityService.cjs +1 -1
  52. package/lib/client/services/FabricIdentityService.js.map +1 -0
  53. package/lib/client/services/RegistrationRequestBuilder.cjs +1 -1
  54. package/lib/client/services/RegistrationRequestBuilder.js.map +1 -0
  55. package/lib/client/services/constants.cjs +1 -1
  56. package/lib/client/services/constants.js.map +1 -0
  57. package/lib/client/services/index.cjs +1 -1
  58. package/lib/client/services/index.js.map +1 -0
  59. package/lib/client/types.cjs +1 -1
  60. package/lib/client/types.js.map +1 -0
  61. package/lib/client/utils.cjs +1 -1
  62. package/lib/client/utils.js.map +1 -0
  63. package/lib/contract/Address.cjs +1 -1
  64. package/lib/contract/Address.js.map +1 -0
  65. package/lib/contract/AddressContract.cjs +1 -1
  66. package/lib/contract/AddressContract.js.map +1 -0
  67. package/lib/contract/AuditContract.cjs +1 -1
  68. package/lib/contract/AuditContract.js.map +1 -0
  69. package/lib/contract/BatchContract.cjs +1 -1
  70. package/lib/contract/BatchContract.js.map +1 -0
  71. package/lib/contract/MarketContract.cjs +1 -1
  72. package/lib/contract/MarketContract.js.map +1 -0
  73. package/lib/contract/OtherAuditContract.cjs +1 -1
  74. package/lib/contract/OtherAuditContract.js.map +1 -0
  75. package/lib/contract/OtherBatchContract.cjs +1 -1
  76. package/lib/contract/OtherBatchContract.js.map +1 -0
  77. package/lib/contract/OtherMarketContract.cjs +1 -1
  78. package/lib/contract/OtherMarketContract.js.map +1 -0
  79. package/lib/contract/OtherProductContract.cjs +1 -1
  80. package/lib/contract/OtherProductContract.js.map +1 -0
  81. package/lib/contract/OtherProductImageContract.cjs +1 -1
  82. package/lib/contract/OtherProductImageContract.js.map +1 -0
  83. package/lib/contract/OtherProductSharedContract.cjs +1 -1
  84. package/lib/contract/OtherProductSharedContract.js.map +1 -0
  85. package/lib/contract/OtherProductStrengthContract.cjs +1 -1
  86. package/lib/contract/OtherProductStrengthContract.js.map +1 -0
  87. package/lib/contract/Product.cjs +1 -1
  88. package/lib/contract/Product.js.map +1 -0
  89. package/lib/contract/ProductContract.cjs +1 -1
  90. package/lib/contract/ProductContract.js.map +1 -0
  91. package/lib/contract/ProductStrengthContract.cjs +1 -1
  92. package/lib/contract/ProductStrengthContract.js.map +1 -0
  93. package/lib/contract/SegregatedPrivateDocumentContract.cjs +1 -1
  94. package/lib/contract/SegregatedPrivateDocumentContract.js.map +1 -0
  95. package/lib/contract/SegregatedSharedDocumentContract.cjs +1 -1
  96. package/lib/contract/SegregatedSharedDocumentContract.js.map +1 -0
  97. package/lib/contract/User.cjs +1 -1
  98. package/lib/contract/User.js.map +1 -0
  99. package/lib/contract/UserContract.cjs +1 -1
  100. package/lib/contract/UserContract.js.map +1 -0
  101. package/lib/contract/index.cjs +1 -1
  102. package/lib/contract/index.js.map +1 -0
  103. package/lib/contract/logging-context.cjs +77 -0
  104. package/lib/contract/logging-context.d.ts +8 -0
  105. package/lib/contract/logging-context.js.map +1 -0
  106. package/lib/contract/models/Audit.cjs +1 -1
  107. package/lib/contract/models/Audit.js.map +1 -0
  108. package/lib/contract/models/BaseIdentifiedModel.cjs +1 -1
  109. package/lib/contract/models/BaseIdentifiedModel.js.map +1 -0
  110. package/lib/contract/models/BaseModel.cjs +1 -1
  111. package/lib/contract/models/BaseModel.js.map +1 -0
  112. package/lib/contract/models/Batch.cjs +1 -1
  113. package/lib/contract/models/Batch.js.map +1 -0
  114. package/lib/contract/models/GtinOwner.cjs +1 -1
  115. package/lib/contract/models/GtinOwner.js.map +1 -0
  116. package/lib/contract/models/History.cjs +1 -1
  117. package/lib/contract/models/History.js.map +1 -0
  118. package/lib/contract/models/Leaflet.cjs +1 -1
  119. package/lib/contract/models/Leaflet.js.map +1 -0
  120. package/lib/contract/models/LeafletFile.cjs +1 -1
  121. package/lib/contract/models/LeafletFile.js.map +1 -0
  122. package/lib/contract/models/Market.cjs +1 -1
  123. package/lib/contract/models/Market.js.map +1 -0
  124. package/lib/contract/models/OtherAudit.cjs +1 -1
  125. package/lib/contract/models/OtherAudit.js.map +1 -0
  126. package/lib/contract/models/OtherBatchShared.cjs +1 -1
  127. package/lib/contract/models/OtherBatchShared.js.map +1 -0
  128. package/lib/contract/models/OtherLeaflet.cjs +1 -1
  129. package/lib/contract/models/OtherLeaflet.js.map +1 -0
  130. package/lib/contract/models/OtherLeafletFile.cjs +1 -1
  131. package/lib/contract/models/OtherLeafletFile.js.map +1 -0
  132. package/lib/contract/models/OtherMarket.cjs +1 -1
  133. package/lib/contract/models/OtherMarket.js.map +1 -0
  134. package/lib/contract/models/OtherProduct.cjs +1 -1
  135. package/lib/contract/models/OtherProduct.js.map +1 -0
  136. package/lib/contract/models/OtherProductImage.cjs +1 -1
  137. package/lib/contract/models/OtherProductImage.js.map +1 -0
  138. package/lib/contract/models/OtherProductShared.cjs +1 -1
  139. package/lib/contract/models/OtherProductShared.js.map +1 -0
  140. package/lib/contract/models/OtherProductStrength.cjs +1 -1
  141. package/lib/contract/models/OtherProductStrength.js.map +1 -0
  142. package/lib/contract/models/Product.cjs +1 -1
  143. package/lib/contract/models/Product.js.map +1 -0
  144. package/lib/contract/models/ProductStrength.cjs +1 -1
  145. package/lib/contract/models/ProductStrength.js.map +1 -0
  146. package/lib/contract/models/SegregatedDocument.cjs +1 -1
  147. package/lib/contract/models/SegregatedDocument.js.map +1 -0
  148. package/lib/contract/models/constants.cjs +1 -1
  149. package/lib/contract/models/constants.js.map +1 -0
  150. package/lib/contract/models/decorators-private.cjs +1 -1
  151. package/lib/contract/models/decorators-private.js.map +1 -0
  152. package/lib/contract/models/decorators.cjs +1 -1
  153. package/lib/contract/models/decorators.js.map +1 -0
  154. package/lib/contract/models/gtin.cjs +1 -1
  155. package/lib/contract/models/gtin.js.map +1 -0
  156. package/lib/contract/models/history-dec.cjs +1 -1
  157. package/lib/contract/models/history-dec.js.map +1 -0
  158. package/lib/contracts/ContractAdapter.cjs +102 -44
  159. package/lib/contracts/ContractAdapter.d.ts +3 -0
  160. package/lib/contracts/ContractAdapter.js.map +1 -0
  161. package/lib/contracts/ContractContext.cjs +1 -1
  162. package/lib/contracts/ContractContext.js.map +1 -0
  163. package/lib/contracts/FabricContractDispatch.cjs +1 -1
  164. package/lib/contracts/FabricContractDispatch.js.map +1 -0
  165. package/lib/contracts/FabricContractPaginator.cjs +1 -1
  166. package/lib/contracts/FabricContractPaginator.js.map +1 -0
  167. package/lib/contracts/FabricContractRepository.cjs +1 -1
  168. package/lib/contracts/FabricContractRepository.js.map +1 -0
  169. package/lib/contracts/FabricContractRepositoryObservableHandler.cjs +1 -1
  170. package/lib/contracts/FabricContractRepositoryObservableHandler.js.map +1 -0
  171. package/lib/contracts/FabricContractSequence.cjs +1 -1
  172. package/lib/contracts/FabricContractSequence.js.map +1 -0
  173. package/lib/contracts/FabricContractStatement.cjs +1 -1
  174. package/lib/contracts/FabricContractStatement.js.map +1 -0
  175. package/lib/contracts/PrivateSequence.cjs +1 -1
  176. package/lib/contracts/PrivateSequence.js.map +1 -0
  177. package/lib/contracts/auth/decorators.cjs +1 -1
  178. package/lib/contracts/auth/decorators.js.map +1 -0
  179. package/lib/contracts/auth/index.cjs +1 -1
  180. package/lib/contracts/auth/index.js.map +1 -0
  181. package/lib/contracts/crud/crud-contract.cjs +1 -1
  182. package/lib/contracts/crud/crud-contract.js.map +1 -0
  183. package/lib/contracts/crud/index.cjs +1 -1
  184. package/lib/contracts/crud/index.js.map +1 -0
  185. package/lib/contracts/crud/serialized-crud-contract.cjs +1 -1
  186. package/lib/contracts/crud/serialized-crud-contract.js.map +1 -0
  187. package/lib/contracts/erc20/erc20contract.cjs +1 -1
  188. package/lib/contracts/erc20/erc20contract.js.map +1 -0
  189. package/lib/contracts/erc20/index.cjs +1 -1
  190. package/lib/contracts/erc20/index.js.map +1 -0
  191. package/lib/contracts/erc20/models.cjs +1 -1
  192. package/lib/contracts/erc20/models.js.map +1 -0
  193. package/lib/contracts/index.cjs +1 -1
  194. package/lib/contracts/index.js.map +1 -0
  195. package/lib/contracts/logging.cjs +26 -15
  196. package/lib/contracts/logging.d.ts +11 -6
  197. package/lib/contracts/logging.js.map +1 -0
  198. package/lib/contracts/overrides.cjs +1 -1
  199. package/lib/contracts/overrides.js.map +1 -0
  200. package/lib/contracts/types.cjs +1 -1
  201. package/lib/contracts/types.js.map +1 -0
  202. package/lib/contracts/uuid.cjs +1 -1
  203. package/lib/contracts/uuid.js.map +1 -0
  204. package/lib/esm/bin/cli.js +1 -1
  205. package/lib/esm/bin/cli.js.map +1 -0
  206. package/lib/esm/cli-module.js +1 -1
  207. package/lib/esm/cli-module.js.map +1 -0
  208. package/lib/esm/cli-utils.js +1 -1
  209. package/lib/esm/cli-utils.js.map +1 -0
  210. package/lib/esm/client/FabricClientAdapter.js +1 -1
  211. package/lib/esm/client/FabricClientAdapter.js.map +1 -0
  212. package/lib/esm/client/FabricClientDispatch.js +1 -1
  213. package/lib/esm/client/FabricClientDispatch.js.map +1 -0
  214. package/lib/esm/client/FabricClientPaginator.js +1 -1
  215. package/lib/esm/client/FabricClientPaginator.js.map +1 -0
  216. package/lib/esm/client/FabricClientRepository.js +1 -1
  217. package/lib/esm/client/FabricClientRepository.js.map +1 -0
  218. package/lib/esm/client/FabricClientStatement.js +1 -1
  219. package/lib/esm/client/FabricClientStatement.js.map +1 -0
  220. package/lib/esm/client/collections/generation.js +1 -1
  221. package/lib/esm/client/collections/generation.js.map +1 -0
  222. package/lib/esm/client/collections/index.js +1 -1
  223. package/lib/esm/client/collections/index.js.map +1 -0
  224. package/lib/esm/client/constants.js +1 -1
  225. package/lib/esm/client/constants.js.map +1 -0
  226. package/lib/esm/client/crypto.js +1 -1
  227. package/lib/esm/client/crypto.js.map +1 -0
  228. package/lib/esm/client/erc20/FabricERC20ClientRepository.js +1 -1
  229. package/lib/esm/client/erc20/FabricERC20ClientRepository.js.map +1 -0
  230. package/lib/esm/client/erc20/index.js +1 -1
  231. package/lib/esm/client/erc20/index.js.map +1 -0
  232. package/lib/esm/client/fabric-fs.js +1 -1
  233. package/lib/esm/client/fabric-fs.js.map +1 -0
  234. package/lib/esm/client/fabric-hsm.js +1 -1
  235. package/lib/esm/client/fabric-hsm.js.map +1 -0
  236. package/lib/esm/client/ids/id-extraction.js +1 -1
  237. package/lib/esm/client/ids/id-extraction.js.map +1 -0
  238. package/lib/esm/client/ids/index.js +1 -1
  239. package/lib/esm/client/ids/index.js.map +1 -0
  240. package/lib/esm/client/index.js +1 -1
  241. package/lib/esm/client/index.js.map +1 -0
  242. package/lib/esm/client/indexes/generation.js +1 -1
  243. package/lib/esm/client/indexes/generation.js.map +1 -0
  244. package/lib/esm/client/indexes/index.js +1 -1
  245. package/lib/esm/client/indexes/index.js.map +1 -0
  246. package/lib/esm/client/logging.js +1 -1
  247. package/lib/esm/client/logging.js.map +1 -0
  248. package/lib/esm/client/services/FabricEnrollmentService.js +1 -1
  249. package/lib/esm/client/services/FabricEnrollmentService.js.map +1 -0
  250. package/lib/esm/client/services/FabricIdentityService.js +1 -1
  251. package/lib/esm/client/services/FabricIdentityService.js.map +1 -0
  252. package/lib/esm/client/services/RegistrationRequestBuilder.js +1 -1
  253. package/lib/esm/client/services/RegistrationRequestBuilder.js.map +1 -0
  254. package/lib/esm/client/services/constants.js +1 -1
  255. package/lib/esm/client/services/constants.js.map +1 -0
  256. package/lib/esm/client/services/index.js +1 -1
  257. package/lib/esm/client/services/index.js.map +1 -0
  258. package/lib/esm/client/types.js +1 -1
  259. package/lib/esm/client/types.js.map +1 -0
  260. package/lib/esm/client/utils.js +1 -1
  261. package/lib/esm/client/utils.js.map +1 -0
  262. package/lib/esm/contract/Address.js +1 -1
  263. package/lib/esm/contract/Address.js.map +1 -0
  264. package/lib/esm/contract/AddressContract.js +1 -1
  265. package/lib/esm/contract/AddressContract.js.map +1 -0
  266. package/lib/esm/contract/AuditContract.js +1 -1
  267. package/lib/esm/contract/AuditContract.js.map +1 -0
  268. package/lib/esm/contract/BatchContract.js +1 -1
  269. package/lib/esm/contract/BatchContract.js.map +1 -0
  270. package/lib/esm/contract/MarketContract.js +1 -1
  271. package/lib/esm/contract/MarketContract.js.map +1 -0
  272. package/lib/esm/contract/OtherAuditContract.js +1 -1
  273. package/lib/esm/contract/OtherAuditContract.js.map +1 -0
  274. package/lib/esm/contract/OtherBatchContract.js +1 -1
  275. package/lib/esm/contract/OtherBatchContract.js.map +1 -0
  276. package/lib/esm/contract/OtherMarketContract.js +1 -1
  277. package/lib/esm/contract/OtherMarketContract.js.map +1 -0
  278. package/lib/esm/contract/OtherProductContract.js +1 -1
  279. package/lib/esm/contract/OtherProductContract.js.map +1 -0
  280. package/lib/esm/contract/OtherProductImageContract.js +1 -1
  281. package/lib/esm/contract/OtherProductImageContract.js.map +1 -0
  282. package/lib/esm/contract/OtherProductSharedContract.js +1 -1
  283. package/lib/esm/contract/OtherProductSharedContract.js.map +1 -0
  284. package/lib/esm/contract/OtherProductStrengthContract.js +1 -1
  285. package/lib/esm/contract/OtherProductStrengthContract.js.map +1 -0
  286. package/lib/esm/contract/Product.js +1 -1
  287. package/lib/esm/contract/Product.js.map +1 -0
  288. package/lib/esm/contract/ProductContract.js +1 -1
  289. package/lib/esm/contract/ProductContract.js.map +1 -0
  290. package/lib/esm/contract/ProductStrengthContract.js +1 -1
  291. package/lib/esm/contract/ProductStrengthContract.js.map +1 -0
  292. package/lib/esm/contract/SegregatedPrivateDocumentContract.js +1 -1
  293. package/lib/esm/contract/SegregatedPrivateDocumentContract.js.map +1 -0
  294. package/lib/esm/contract/SegregatedSharedDocumentContract.js +1 -1
  295. package/lib/esm/contract/SegregatedSharedDocumentContract.js.map +1 -0
  296. package/lib/esm/contract/User.js +1 -1
  297. package/lib/esm/contract/User.js.map +1 -0
  298. package/lib/esm/contract/UserContract.js +1 -1
  299. package/lib/esm/contract/UserContract.js.map +1 -0
  300. package/lib/esm/contract/index.js +1 -1
  301. package/lib/esm/contract/index.js.map +1 -0
  302. package/lib/esm/contract/logging-context.d.ts +8 -0
  303. package/lib/esm/contract/logging-context.js +71 -0
  304. package/lib/esm/contract/logging-context.js.map +1 -0
  305. package/lib/esm/contract/models/Audit.js +1 -1
  306. package/lib/esm/contract/models/Audit.js.map +1 -0
  307. package/lib/esm/contract/models/BaseIdentifiedModel.js +1 -1
  308. package/lib/esm/contract/models/BaseIdentifiedModel.js.map +1 -0
  309. package/lib/esm/contract/models/BaseModel.js +1 -1
  310. package/lib/esm/contract/models/BaseModel.js.map +1 -0
  311. package/lib/esm/contract/models/Batch.js +1 -1
  312. package/lib/esm/contract/models/Batch.js.map +1 -0
  313. package/lib/esm/contract/models/GtinOwner.js +1 -1
  314. package/lib/esm/contract/models/GtinOwner.js.map +1 -0
  315. package/lib/esm/contract/models/History.js +1 -1
  316. package/lib/esm/contract/models/History.js.map +1 -0
  317. package/lib/esm/contract/models/Leaflet.js +1 -1
  318. package/lib/esm/contract/models/Leaflet.js.map +1 -0
  319. package/lib/esm/contract/models/LeafletFile.js +1 -1
  320. package/lib/esm/contract/models/LeafletFile.js.map +1 -0
  321. package/lib/esm/contract/models/Market.js +1 -1
  322. package/lib/esm/contract/models/Market.js.map +1 -0
  323. package/lib/esm/contract/models/OtherAudit.js +1 -1
  324. package/lib/esm/contract/models/OtherAudit.js.map +1 -0
  325. package/lib/esm/contract/models/OtherBatchShared.js +1 -1
  326. package/lib/esm/contract/models/OtherBatchShared.js.map +1 -0
  327. package/lib/esm/contract/models/OtherLeaflet.js +1 -1
  328. package/lib/esm/contract/models/OtherLeaflet.js.map +1 -0
  329. package/lib/esm/contract/models/OtherLeafletFile.js +1 -1
  330. package/lib/esm/contract/models/OtherLeafletFile.js.map +1 -0
  331. package/lib/esm/contract/models/OtherMarket.js +1 -1
  332. package/lib/esm/contract/models/OtherMarket.js.map +1 -0
  333. package/lib/esm/contract/models/OtherProduct.js +1 -1
  334. package/lib/esm/contract/models/OtherProduct.js.map +1 -0
  335. package/lib/esm/contract/models/OtherProductImage.js +1 -1
  336. package/lib/esm/contract/models/OtherProductImage.js.map +1 -0
  337. package/lib/esm/contract/models/OtherProductShared.js +1 -1
  338. package/lib/esm/contract/models/OtherProductShared.js.map +1 -0
  339. package/lib/esm/contract/models/OtherProductStrength.js +1 -1
  340. package/lib/esm/contract/models/OtherProductStrength.js.map +1 -0
  341. package/lib/esm/contract/models/Product.js +1 -1
  342. package/lib/esm/contract/models/Product.js.map +1 -0
  343. package/lib/esm/contract/models/ProductStrength.js +1 -1
  344. package/lib/esm/contract/models/ProductStrength.js.map +1 -0
  345. package/lib/esm/contract/models/SegregatedDocument.js +1 -1
  346. package/lib/esm/contract/models/SegregatedDocument.js.map +1 -0
  347. package/lib/esm/contract/models/constants.js +1 -1
  348. package/lib/esm/contract/models/constants.js.map +1 -0
  349. package/lib/esm/contract/models/decorators-private.js +1 -1
  350. package/lib/esm/contract/models/decorators-private.js.map +1 -0
  351. package/lib/esm/contract/models/decorators.js +1 -1
  352. package/lib/esm/contract/models/decorators.js.map +1 -0
  353. package/lib/esm/contract/models/gtin.js +1 -1
  354. package/lib/esm/contract/models/gtin.js.map +1 -0
  355. package/lib/esm/contract/models/history-dec.js +1 -1
  356. package/lib/esm/contract/models/history-dec.js.map +1 -0
  357. package/lib/esm/contracts/ContractAdapter.d.ts +3 -0
  358. package/lib/esm/contracts/ContractAdapter.js +102 -44
  359. package/lib/esm/contracts/ContractAdapter.js.map +1 -0
  360. package/lib/esm/contracts/ContractContext.js +1 -1
  361. package/lib/esm/contracts/ContractContext.js.map +1 -0
  362. package/lib/esm/contracts/FabricContractDispatch.js +1 -1
  363. package/lib/esm/contracts/FabricContractDispatch.js.map +1 -0
  364. package/lib/esm/contracts/FabricContractPaginator.js +1 -1
  365. package/lib/esm/contracts/FabricContractPaginator.js.map +1 -0
  366. package/lib/esm/contracts/FabricContractRepository.js +1 -1
  367. package/lib/esm/contracts/FabricContractRepository.js.map +1 -0
  368. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js +1 -1
  369. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js.map +1 -0
  370. package/lib/esm/contracts/FabricContractSequence.js +1 -1
  371. package/lib/esm/contracts/FabricContractSequence.js.map +1 -0
  372. package/lib/esm/contracts/FabricContractStatement.js +1 -1
  373. package/lib/esm/contracts/FabricContractStatement.js.map +1 -0
  374. package/lib/esm/contracts/PrivateSequence.js +1 -1
  375. package/lib/esm/contracts/PrivateSequence.js.map +1 -0
  376. package/lib/esm/contracts/auth/decorators.js +1 -1
  377. package/lib/esm/contracts/auth/decorators.js.map +1 -0
  378. package/lib/esm/contracts/auth/index.js +1 -1
  379. package/lib/esm/contracts/auth/index.js.map +1 -0
  380. package/lib/esm/contracts/crud/crud-contract.js +1 -1
  381. package/lib/esm/contracts/crud/crud-contract.js.map +1 -0
  382. package/lib/esm/contracts/crud/index.js +1 -1
  383. package/lib/esm/contracts/crud/index.js.map +1 -0
  384. package/lib/esm/contracts/crud/serialized-crud-contract.js +1 -1
  385. package/lib/esm/contracts/crud/serialized-crud-contract.js.map +1 -0
  386. package/lib/esm/contracts/erc20/erc20contract.js +1 -1
  387. package/lib/esm/contracts/erc20/erc20contract.js.map +1 -0
  388. package/lib/esm/contracts/erc20/index.js +1 -1
  389. package/lib/esm/contracts/erc20/index.js.map +1 -0
  390. package/lib/esm/contracts/erc20/models.js +1 -1
  391. package/lib/esm/contracts/erc20/models.js.map +1 -0
  392. package/lib/esm/contracts/index.js +1 -1
  393. package/lib/esm/contracts/index.js.map +1 -0
  394. package/lib/esm/contracts/logging.d.ts +11 -6
  395. package/lib/esm/contracts/logging.js +26 -15
  396. package/lib/esm/contracts/logging.js.map +1 -0
  397. package/lib/esm/contracts/overrides.js +1 -1
  398. package/lib/esm/contracts/overrides.js.map +1 -0
  399. package/lib/esm/contracts/types.js +1 -1
  400. package/lib/esm/contracts/types.js.map +1 -0
  401. package/lib/esm/contracts/uuid.js +1 -1
  402. package/lib/esm/contracts/uuid.js.map +1 -0
  403. package/lib/esm/index.js +1 -1
  404. package/lib/esm/index.js.map +1 -0
  405. package/lib/esm/shared/ClientSerializer.js +1 -1
  406. package/lib/esm/shared/ClientSerializer.js.map +1 -0
  407. package/lib/esm/shared/DeterministicSerializer.js +1 -1
  408. package/lib/esm/shared/DeterministicSerializer.js.map +1 -0
  409. package/lib/esm/shared/SimpleDeterministicSerializer.js +1 -1
  410. package/lib/esm/shared/SimpleDeterministicSerializer.js.map +1 -0
  411. package/lib/esm/shared/constants.js +1 -1
  412. package/lib/esm/shared/constants.js.map +1 -0
  413. package/lib/esm/shared/decorators.js +1 -1
  414. package/lib/esm/shared/decorators.js.map +1 -0
  415. package/lib/esm/shared/erc20/erc20-constants.js +1 -1
  416. package/lib/esm/shared/erc20/erc20-constants.js.map +1 -0
  417. package/lib/esm/shared/erc20/index.js +1 -1
  418. package/lib/esm/shared/erc20/index.js.map +1 -0
  419. package/lib/esm/shared/errors.js +1 -1
  420. package/lib/esm/shared/errors.js.map +1 -0
  421. package/lib/esm/shared/events.js +1 -1
  422. package/lib/esm/shared/events.js.map +1 -0
  423. package/lib/esm/shared/fabric-types.js +1 -1
  424. package/lib/esm/shared/fabric-types.js.map +1 -0
  425. package/lib/esm/shared/index.js +1 -1
  426. package/lib/esm/shared/index.js.map +1 -0
  427. package/lib/esm/shared/interfaces/Checkable.js +1 -1
  428. package/lib/esm/shared/interfaces/Checkable.js.map +1 -0
  429. package/lib/esm/shared/interfaces/index.js +1 -1
  430. package/lib/esm/shared/interfaces/index.js.map +1 -0
  431. package/lib/esm/shared/math.js +1 -1
  432. package/lib/esm/shared/math.js.map +1 -0
  433. package/lib/esm/shared/model/FabricBaseModel.js +1 -1
  434. package/lib/esm/shared/model/FabricBaseModel.js.map +1 -0
  435. package/lib/esm/shared/model/FabricIdentifiedBaseModel.js +1 -1
  436. package/lib/esm/shared/model/FabricIdentifiedBaseModel.js.map +1 -0
  437. package/lib/esm/shared/model/Identity.js +1 -1
  438. package/lib/esm/shared/model/Identity.js.map +1 -0
  439. package/lib/esm/shared/model/IdentityCredentials.js +1 -1
  440. package/lib/esm/shared/model/IdentityCredentials.js.map +1 -0
  441. package/lib/esm/shared/model/index.js +1 -1
  442. package/lib/esm/shared/model/index.js.map +1 -0
  443. package/lib/esm/shared/overrides/Model.js +1 -1
  444. package/lib/esm/shared/overrides/Model.js.map +1 -0
  445. package/lib/esm/shared/overrides/index.js +1 -1
  446. package/lib/esm/shared/overrides/index.js.map +1 -0
  447. package/lib/esm/shared/overrides/overrides.js +1 -1
  448. package/lib/esm/shared/overrides/overrides.js.map +1 -0
  449. package/lib/esm/shared/types.js +1 -1
  450. package/lib/esm/shared/types.js.map +1 -0
  451. package/lib/esm/version.d.ts +1 -1
  452. package/lib/esm/version.js +2 -2
  453. package/lib/esm/version.js.map +1 -0
  454. package/lib/index.cjs +1 -1
  455. package/lib/index.js.map +1 -0
  456. package/lib/shared/ClientSerializer.cjs +1 -1
  457. package/lib/shared/ClientSerializer.js.map +1 -0
  458. package/lib/shared/DeterministicSerializer.cjs +1 -1
  459. package/lib/shared/DeterministicSerializer.js.map +1 -0
  460. package/lib/shared/SimpleDeterministicSerializer.cjs +1 -1
  461. package/lib/shared/SimpleDeterministicSerializer.js.map +1 -0
  462. package/lib/shared/constants.cjs +1 -1
  463. package/lib/shared/constants.js.map +1 -0
  464. package/lib/shared/decorators.cjs +1 -1
  465. package/lib/shared/decorators.js.map +1 -0
  466. package/lib/shared/erc20/erc20-constants.cjs +1 -1
  467. package/lib/shared/erc20/erc20-constants.js.map +1 -0
  468. package/lib/shared/erc20/index.cjs +1 -1
  469. package/lib/shared/erc20/index.js.map +1 -0
  470. package/lib/shared/errors.cjs +1 -1
  471. package/lib/shared/errors.js.map +1 -0
  472. package/lib/shared/events.cjs +1 -1
  473. package/lib/shared/events.js.map +1 -0
  474. package/lib/shared/fabric-types.cjs +1 -1
  475. package/lib/shared/fabric-types.js.map +1 -0
  476. package/lib/shared/index.cjs +1 -1
  477. package/lib/shared/index.js.map +1 -0
  478. package/lib/shared/interfaces/Checkable.cjs +1 -1
  479. package/lib/shared/interfaces/Checkable.js.map +1 -0
  480. package/lib/shared/interfaces/index.cjs +1 -1
  481. package/lib/shared/interfaces/index.js.map +1 -0
  482. package/lib/shared/math.cjs +1 -1
  483. package/lib/shared/math.js.map +1 -0
  484. package/lib/shared/model/FabricBaseModel.cjs +1 -1
  485. package/lib/shared/model/FabricBaseModel.js.map +1 -0
  486. package/lib/shared/model/FabricIdentifiedBaseModel.cjs +1 -1
  487. package/lib/shared/model/FabricIdentifiedBaseModel.js.map +1 -0
  488. package/lib/shared/model/Identity.cjs +1 -1
  489. package/lib/shared/model/Identity.js.map +1 -0
  490. package/lib/shared/model/IdentityCredentials.cjs +1 -1
  491. package/lib/shared/model/IdentityCredentials.js.map +1 -0
  492. package/lib/shared/model/index.cjs +1 -1
  493. package/lib/shared/model/index.js.map +1 -0
  494. package/lib/shared/overrides/Model.cjs +1 -1
  495. package/lib/shared/overrides/Model.js.map +1 -0
  496. package/lib/shared/overrides/index.cjs +1 -1
  497. package/lib/shared/overrides/index.js.map +1 -0
  498. package/lib/shared/overrides/overrides.cjs +1 -1
  499. package/lib/shared/overrides/overrides.js.map +1 -0
  500. package/lib/shared/types.cjs +1 -1
  501. package/lib/shared/types.js.map +1 -0
  502. package/lib/version.cjs +2 -2
  503. package/lib/version.d.ts +1 -1
  504. package/lib/version.js.map +1 -0
  505. package/package.json +2 -2
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ContractLogger = void 0;
4
4
  const logging_1 = require("@decaf-ts/logging");
5
5
  const db_decorators_1 = require("@decaf-ts/db-decorators");
6
+ const logging_context_1 = require("./../contract/logging-context.cjs");
7
+ (0, logging_context_1.ensureContractLogFieldRegistration)();
6
8
  /**
7
9
  * @description Logger implementation for Fabric chaincode contracts
8
10
  * @summary Adapts the standard logging interface to work with Fabric's chaincode context
@@ -35,13 +37,22 @@ const db_decorators_1 = require("@decaf-ts/db-decorators");
35
37
  */
36
38
  class ContractLogger extends logging_1.MiniLogger {
37
39
  constructor(context, conf, ctx) {
38
- super(context, conf);
40
+ const normalizedConfig = (0, logging_context_1.enrichContractLoggingConfig)(conf, ctx);
41
+ super(context, normalizedConfig);
39
42
  if (!ctx) {
40
- this.logger = new logging_1.MiniLogger(context, conf);
43
+ this.sink = {
44
+ info: (msg) => console.log(msg),
45
+ verbose: (msg) => console.log(msg),
46
+ debug: (msg) => console.debug(msg),
47
+ error: (msg) => console.error(msg),
48
+ trace: (msg) => console.trace(msg),
49
+ warn: (msg) => console.warn(msg),
50
+ silly: (msg) => console.debug(msg),
51
+ };
41
52
  }
42
53
  else {
43
- this.logger = ctx.logging.getLogger(context);
44
- ctx.logging.setLevel(conf?.level || logging_1.Logging.getConfig().level);
54
+ this.sink = ctx.logging.getLogger(context);
55
+ ctx.logging.setLevel(normalizedConfig?.level || logging_1.Logging.getConfig().level);
45
56
  }
46
57
  }
47
58
  /**
@@ -52,40 +63,40 @@ class ContractLogger extends logging_1.MiniLogger {
52
63
  * @param {Error} [stack] - Optional stack trace for errors
53
64
  * @return {void}
54
65
  */
55
- log(level, msg, stack) {
66
+ log(level, msg, error, meta) {
56
67
  if (logging_1.NumericLogLevels[this.config("level")] <
57
68
  logging_1.NumericLogLevels[level])
58
69
  return;
59
70
  let method;
60
71
  switch (level) {
61
72
  case logging_1.LogLevel.benchmark:
62
- method = this.logger.verbose;
73
+ method = this.sink.verbose;
63
74
  break;
64
75
  case logging_1.LogLevel.info:
65
- method = this.logger.info;
76
+ method = this.sink.info;
66
77
  break;
67
78
  case logging_1.LogLevel.verbose:
68
- method = this.logger.verbose;
79
+ method = this.sink.verbose;
69
80
  break;
70
81
  case logging_1.LogLevel.debug:
71
- method = this.logger.debug;
82
+ method = this.sink.debug;
72
83
  break;
73
84
  case logging_1.LogLevel.error:
74
- method = this.logger.error;
85
+ method = this.sink.error;
75
86
  break;
76
87
  case logging_1.LogLevel.trace:
77
- method = this.logger.trace;
88
+ method = this.sink.trace;
78
89
  break;
79
90
  case logging_1.LogLevel.warn:
80
- method = this.logger.warn;
91
+ method = this.sink.warn;
81
92
  break;
82
93
  case logging_1.LogLevel.silly:
83
- method = this.logger.silly;
94
+ method = this.sink.silly;
84
95
  break;
85
96
  default:
86
97
  throw new db_decorators_1.InternalError("Invalid log level");
87
98
  }
88
- method.call(this.logger, this.createLog(level, msg, stack));
99
+ method.call(this.sink, this.createLog(level, msg, error, meta));
89
100
  }
90
101
  }
91
102
  exports.ContractLogger = ContractLogger;
@@ -104,4 +115,4 @@ const factory = (object, config, ctx) => {
104
115
  };
105
116
  // Set the factory as the default logger factory
106
117
  logging_1.Logging.setFactory(factory);
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdHMvbG9nZ2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FRMkI7QUFHM0IsMkRBQXdEO0FBRXhEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZCRztBQUNILE1BQWEsY0FBZSxTQUFRLG9CQUFVO0lBTTVDLFlBQ0UsT0FBZSxFQUNmLElBQXdDLEVBQ3hDLEdBQVM7UUFFVCxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXJCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxvQkFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFzQixDQUFDO1lBQ2xFLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLElBQUksaUJBQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDZ0IsR0FBRyxDQUNwQixLQUFlLEVBQ2YsR0FBdUIsRUFDdkIsS0FBYTtRQUViLElBQ0UsMEJBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQWEsQ0FBQztZQUNsRCwwQkFBZ0IsQ0FBQyxLQUFLLENBQUM7WUFFdkIsT0FBTztRQUVULElBQUksTUFBTSxDQUFDO1FBQ1gsUUFBUSxLQUFLLEVBQUUsQ0FBQztZQUNkLEtBQUssa0JBQVEsQ0FBQyxTQUFTO2dCQUNyQixNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7Z0JBQzdCLE1BQU07WUFDUixLQUFLLGtCQUFRLENBQUMsSUFBSTtnQkFDaEIsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUMxQixNQUFNO1lBQ1IsS0FBSyxrQkFBUSxDQUFDLE9BQU87Z0JBQ25CLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztnQkFDN0IsTUFBTTtZQUNSLEtBQUssa0JBQVEsQ0FBQyxLQUFLO2dCQUNqQixNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQzNCLE1BQU07WUFDUixLQUFLLGtCQUFRLENBQUMsS0FBSztnQkFDakIsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUMzQixNQUFNO1lBQ1IsS0FBSyxrQkFBUSxDQUFDLEtBQUs7Z0JBQ2pCLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFDM0IsTUFBTTtZQUNSLEtBQUssa0JBQVEsQ0FBQyxJQUFJO2dCQUNoQixNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLE1BQU07WUFDUixLQUFLLGtCQUFRLENBQUMsS0FBSztnQkFDakIsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUMzQixNQUFNO1lBQ1I7Z0JBQ0UsTUFBTSxJQUFJLDZCQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7Q0FDRjtBQXZFRCx3Q0F1RUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLE9BQU8sR0FBa0IsQ0FDN0IsTUFBZSxFQUNmLE1BQStCLEVBQy9CLEdBQVMsRUFDVCxFQUFFO0lBQ0YsT0FBTyxJQUFJLGNBQWMsQ0FDdkIsTUFBTSxJQUFJLGNBQWMsQ0FBQyxJQUFJLEVBQzdCLE1BQU0sSUFBSSxFQUFFLEVBQ1osR0FBVSxDQUNYLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixnREFBZ0Q7QUFDaEQsaUJBQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBMb2dnZXJGYWN0b3J5LFxuICBMb2dnaW5nLFxuICBMb2dnZXIsXG4gIExvZ0xldmVsLFxuICBNaW5pTG9nZ2VyLFxuICBOdW1lcmljTG9nTGV2ZWxzLFxuICBTdHJpbmdMaWtlLFxufSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcbmltcG9ydCB7IExvZ2dpbmdDb25maWcgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcbmltcG9ydCB7IENvbnRleHQgYXMgQ3R4IH0gZnJvbSBcImZhYnJpYy1jb250cmFjdC1hcGlcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTG9nZ2VyIGltcGxlbWVudGF0aW9uIGZvciBGYWJyaWMgY2hhaW5jb2RlIGNvbnRyYWN0c1xuICogQHN1bW1hcnkgQWRhcHRzIHRoZSBzdGFuZGFyZCBsb2dnaW5nIGludGVyZmFjZSB0byB3b3JrIHdpdGggRmFicmljJ3MgY2hhaW5jb2RlIGNvbnRleHRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGV4dCAtIFRoZSBsb2dnaW5nIGNvbnRleHQgbmFtZVxuICogQHBhcmFtIHtQYXJ0aWFsPExvZ2dpbmdDb25maWc+IHwgdW5kZWZpbmVkfSBjb25mIC0gT3B0aW9uYWwgbG9nZ2luZyBjb25maWd1cmF0aW9uXG4gKiBAcGFyYW0ge0N0eH0gY3R4IC0gVGhlIEZhYnJpYyBjaGFpbmNvZGUgY29udGV4dFxuICpcbiAqIEBjbGFzcyBDb250cmFjdExvZ2dlclxuICogQGV4dGVuZHMge01pbmlMb2dnZXJ9XG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gSW4gYSBGYWJyaWMgY2hhaW5jb2RlIGNvbnRyYWN0XG4gKiBpbXBvcnQgeyBDb250cmFjdExvZ2dlciB9IGZyb20gJ0BkZWNhZi10cy9mb3ItZmFicmljJztcbiAqXG4gKiBleHBvcnQgY2xhc3MgTXlDb250cmFjdCBleHRlbmRzIENvbnRyYWN0IHtcbiAqICAgQFRyYW5zYWN0aW9uKClcbiAqICAgYXN5bmMgbXlGdW5jdGlvbihjdHg6IENvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAqICAgICBjb25zdCBsb2dnZXIgPSBuZXcgQ29udHJhY3RMb2dnZXIoJ015Q29udHJhY3QnLCB7IGxldmVsOiAnaW5mbycgfSwgY3R4KTtcbiAqXG4gKiAgICAgbG9nZ2VyLmluZm8oJ1Byb2Nlc3NpbmcgdHJhbnNhY3Rpb24nKTtcbiAqICAgICBsb2dnZXIuZGVidWcoJ1RyYW5zYWN0aW9uIGRldGFpbHM6JywgeyAuLi4gfSk7XG4gKlxuICogICAgIC8vIERvIHNvbWV0aGluZ1xuICpcbiAqICAgICBsb2dnZXIuaW5mbygnVHJhbnNhY3Rpb24gY29tcGxldGUnKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBDb250cmFjdExvZ2dlciBleHRlbmRzIE1pbmlMb2dnZXIge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSB1bmRlcmx5aW5nIEZhYnJpYyBsb2dnZXIgaW5zdGFuY2VcbiAgICovXG4gIHByb3RlY3RlZCBsb2dnZXIhOiBMb2dnZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29udGV4dDogc3RyaW5nLFxuICAgIGNvbmY6IFBhcnRpYWw8TG9nZ2luZ0NvbmZpZz4gfCB1bmRlZmluZWQsXG4gICAgY3R4PzogQ3R4XG4gICkge1xuICAgIHN1cGVyKGNvbnRleHQsIGNvbmYpO1xuXG4gICAgaWYgKCFjdHgpIHtcbiAgICAgIHRoaXMubG9nZ2VyID0gbmV3IE1pbmlMb2dnZXIoY29udGV4dCwgY29uZik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nZ2VyID0gY3R4LmxvZ2dpbmcuZ2V0TG9nZ2VyKGNvbnRleHQpIGFzIHVua25vd24gYXMgTG9nZ2VyO1xuICAgICAgY3R4LmxvZ2dpbmcuc2V0TGV2ZWwoY29uZj8ubGV2ZWwgfHwgTG9nZ2luZy5nZXRDb25maWcoKS5sZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMb2dzIGEgbWVzc2FnZSBhdCB0aGUgc3BlY2lmaWVkIGxldmVsXG4gICAqIEBzdW1tYXJ5IE92ZXJyaWRlcyB0aGUgYmFzZSBsb2cgbWV0aG9kIHRvIHVzZSB0aGUgRmFicmljIGNvbnRleHQncyBsb2dnZXJcbiAgICogQHBhcmFtIHtMb2dMZXZlbH0gbGV2ZWwgLSBUaGUgbG9nIGxldmVsXG4gICAqIEBwYXJhbSB7U3RyaW5nTGlrZSB8IEVycm9yfSBtc2cgLSBUaGUgbWVzc2FnZSB0byBsb2dcbiAgICogQHBhcmFtIHtFcnJvcn0gW3N0YWNrXSAtIE9wdGlvbmFsIHN0YWNrIHRyYWNlIGZvciBlcnJvcnNcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBsb2coXG4gICAgbGV2ZWw6IExvZ0xldmVsLFxuICAgIG1zZzogU3RyaW5nTGlrZSB8IEVycm9yLFxuICAgIHN0YWNrPzogRXJyb3JcbiAgKSB7XG4gICAgaWYgKFxuICAgICAgTnVtZXJpY0xvZ0xldmVsc1t0aGlzLmNvbmZpZyhcImxldmVsXCIpIGFzIExvZ0xldmVsXSA8XG4gICAgICBOdW1lcmljTG9nTGV2ZWxzW2xldmVsXVxuICAgIClcbiAgICAgIHJldHVybjtcblxuICAgIGxldCBtZXRob2Q7XG4gICAgc3dpdGNoIChsZXZlbCkge1xuICAgICAgY2FzZSBMb2dMZXZlbC5iZW5jaG1hcms6XG4gICAgICAgIG1ldGhvZCA9IHRoaXMubG9nZ2VyLnZlcmJvc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBMb2dMZXZlbC5pbmZvOlxuICAgICAgICBtZXRob2QgPSB0aGlzLmxvZ2dlci5pbmZvO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTG9nTGV2ZWwudmVyYm9zZTpcbiAgICAgICAgbWV0aG9kID0gdGhpcy5sb2dnZXIudmVyYm9zZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExvZ0xldmVsLmRlYnVnOlxuICAgICAgICBtZXRob2QgPSB0aGlzLmxvZ2dlci5kZWJ1ZztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExvZ0xldmVsLmVycm9yOlxuICAgICAgICBtZXRob2QgPSB0aGlzLmxvZ2dlci5lcnJvcjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExvZ0xldmVsLnRyYWNlOlxuICAgICAgICBtZXRob2QgPSB0aGlzLmxvZ2dlci50cmFjZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExvZ0xldmVsLndhcm46XG4gICAgICAgIG1ldGhvZCA9IHRoaXMubG9nZ2VyLndhcm47XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBMb2dMZXZlbC5zaWxseTpcbiAgICAgICAgbWV0aG9kID0gdGhpcy5sb2dnZXIuc2lsbHk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJJbnZhbGlkIGxvZyBsZXZlbFwiKTtcbiAgICB9XG4gICAgbWV0aG9kLmNhbGwodGhpcy5sb2dnZXIsIHRoaXMuY3JlYXRlTG9nKGxldmVsLCBtc2csIHN0YWNrKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRmFjdG9yeSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgQ29udHJhY3RMb2dnZXIgaW5zdGFuY2VzXG4gKiBAc3VtbWFyeSBDcmVhdGVzIGEgbmV3IENvbnRyYWN0TG9nZ2VyIHdpdGggdGhlIGdpdmVuIGNvbnRleHQsIGNvbmZpZywgYW5kIEZhYnJpYyBjb250ZXh0XG4gKiBAcGFyYW0ge3N0cmluZ30gb2JqZWN0IC0gVGhlIGxvZ2dpbmcgY29udGV4dCBuYW1lXG4gKiBAcGFyYW0ge1BhcnRpYWw8TG9nZ2luZ0NvbmZpZz4gfCB1bmRlZmluZWR9IGNvbmZpZyAtIE9wdGlvbmFsIGxvZ2dpbmcgY29uZmlndXJhdGlvblxuICogQHBhcmFtIHtDdHh9IGN0eCAtIFRoZSBGYWJyaWMgY2hhaW5jb2RlIGNvbnRleHRcbiAqIEByZXR1cm4ge0NvbnRyYWN0TG9nZ2VyfSBBIG5ldyBDb250cmFjdExvZ2dlciBpbnN0YW5jZVxuICogQGZ1bmN0aW9uIGZhY3RvcnlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZmFicmljLmNvbnRyYWN0c1xuICovXG5jb25zdCBmYWN0b3J5OiBMb2dnZXJGYWN0b3J5ID0gKFxuICBvYmplY3Q/OiBzdHJpbmcsXG4gIGNvbmZpZz86IFBhcnRpYWw8TG9nZ2luZ0NvbmZpZz4sXG4gIGN0eD86IEN0eFxuKSA9PiB7XG4gIHJldHVybiBuZXcgQ29udHJhY3RMb2dnZXIoXG4gICAgb2JqZWN0IHx8IENvbnRyYWN0TG9nZ2VyLm5hbWUsXG4gICAgY29uZmlnIHx8IHt9LFxuICAgIGN0eCBhcyBDdHhcbiAgKTtcbn07XG5cbi8vIFNldCB0aGUgZmFjdG9yeSBhcyB0aGUgZGVmYXVsdCBsb2dnZXIgZmFjdG9yeVxuTG9nZ2luZy5zZXRGYWN0b3J5KGZhY3RvcnkpO1xuIl19
118
+ //# sourceMappingURL=logging.js.map
@@ -1,4 +1,4 @@
1
- import { Logger, LogLevel, MiniLogger, StringLike } from "@decaf-ts/logging";
1
+ import { LogLevel, LogMeta, MiniLogger, StringLike } from "@decaf-ts/logging";
2
2
  import { LoggingConfig } from "@decaf-ts/logging";
3
3
  import { Context as Ctx } from "fabric-contract-api";
4
4
  /**
@@ -32,10 +32,15 @@ import { Context as Ctx } from "fabric-contract-api";
32
32
  * ```
33
33
  */
34
34
  export declare class ContractLogger extends MiniLogger {
35
- /**
36
- * @description The underlying Fabric logger instance
37
- */
38
- protected logger: Logger;
35
+ protected sink: {
36
+ verbose: (msg: string) => void;
37
+ info: (msg: string) => void;
38
+ debug: (msg: string) => void;
39
+ error: (msg: string) => void;
40
+ trace: (msg: string) => void;
41
+ warn: (msg: string) => void;
42
+ silly: (msg: string) => void;
43
+ };
39
44
  constructor(context: string, conf: Partial<LoggingConfig> | undefined, ctx?: Ctx);
40
45
  /**
41
46
  * @description Logs a message at the specified level
@@ -45,5 +50,5 @@ export declare class ContractLogger extends MiniLogger {
45
50
  * @param {Error} [stack] - Optional stack trace for errors
46
51
  * @return {void}
47
52
  */
48
- protected log(level: LogLevel, msg: StringLike | Error, stack?: Error): void;
53
+ protected log(level: LogLevel, msg: StringLike | Error, error?: Error, meta?: LogMeta): void;
49
54
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/contracts/logging.ts"],"names":[],"mappings":"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"}
@@ -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=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcnJpZGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy9vdmVycmlkZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5Q0FBc0M7QUFDdEMscUNBQXNDO0FBRXRDLFdBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFNBQVMsUUFBUSxDQUFDLElBQVk7SUFDdEQsT0FBTyxJQUFBLG1CQUFZLEVBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVVVJRCB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgdXVpZEZyb21TZWVkIH0gZnJvbSBcIi4vdXVpZFwiO1xuXG5VVUlELnByb3RvdHlwZS5nZW5lcmF0ZSA9IGZ1bmN0aW9uIGdlbmVyYXRlKHNlZWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIHJldHVybiB1dWlkRnJvbVNlZWQoc2VlZCk7XG59O1xuIl19
8
+ //# sourceMappingURL=overrides.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../src/contracts/overrides.ts"],"names":[],"mappings":";;AAAA,yCAAsC;AACtC,qCAAsC;AAEtC,WAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,IAAY;IACtD,OAAO,IAAA,mBAAY,EAAC,IAAI,CAAC,CAAC;AAC5B,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFpbmNvZGVTdHViLCBDbGllbnRJZGVudGl0eSB9IGZyb20gXCJmYWJyaWMtc2hpbS1hcGlcIjtcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgRmFicmljRmxhZ3MgfSBmcm9tIFwiLi4vc2hhcmVkL2luZGV4XCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZsYWdzIGZvciBGYWJyaWMgY2hhaW5jb2RlIGNvbnRyYWN0IG9wZXJhdGlvbnNcbiAqIEBzdW1tYXJ5IEV4dGVuZHMgcmVwb3NpdG9yeSBmbGFncyB3aXRoIEZhYnJpYy1zcGVjaWZpYyBjb250ZXh0IGVsZW1lbnRzIGF2YWlsYWJsZSBkdXJpbmcgRmFicmljIGNoYWluY29kZSBleGVjdXRpb24sIHN1Y2ggYXMgdGhlIENoYWluY29kZVN0dWIsIENsaWVudElkZW50aXR5IGFuZCBhIHJlcXVlc3Qtc2NvcGVkIExvZ2dlci5cbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAcGFyYW0ge1JlcG9zaXRvcnlGbGFnc30gW2Jhc2VdIC0gQmFzZSByZXBvc2l0b3J5IGZsYWdzIHRoYXQgdGhlc2UgRmFicmljLXNwZWNpZmljIGZsYWdzIGV4dGVuZFxuICogQHJldHVybiB7dm9pZH1cbiAqIEBpbnRlcmZhY2UgRmFicmljQ29udHJhY3RGbGFnc1xuICogQG1lbWJlck9mIG1vZHVsZTpmYWJyaWMuY29udHJhY3RzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmFicmljQ29udHJhY3RGbGFncyBleHRlbmRzIEZhYnJpY0ZsYWdzIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDaGFpbmNvZGUgc3R1YiBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgbGVkZ2VyXG4gICAqL1xuICBzdHViOiBDaGFpbmNvZGVTdHViO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ2xpZW50IGlkZW50aXR5IGZvciB0aGUgdHJhbnNhY3Rpb24gc3VibWl0dGVyXG4gICAqL1xuICBpZGVudGl0eTogQ2xpZW50SWRlbnRpdHk7XG5cbiAgcm9sZXM/OiBzdHJpbmdbXTtcblxuICBjZXJ0OiBzdHJpbmc7XG5cbiAgc2VncmVnYXRlV3JpdGU/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT47XG4gIHNlZ3JlZ2F0ZVJlYWQ/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgZm9yY2VTZWdyZWdhdGVXcml0ZT86IGJvb2xlYW47XG4gIGZ1bGx5U2VncmVnYXRlZD86IGJvb2xlYW47XG4gIHNlcXVlbmNlU2VncmVnYXRpb24/OiBNYXA8XG4gICAgc3RyaW5nLFxuICAgIHsgZnVsbHlTZWdyZWdhdGVkOiBib29sZWFuOyBjb2xsZWN0aW9uczogc3RyaW5nW10gfVxuICA+O1xuICBzZWdyZWdhdGVkRGF0YT86IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIGFueT4+O1xuICBzZWdyZWdhdGVSZWFkU3RhY2s/OiBhbnlbXTtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMb2dnZXIgaW5zdGFuY2UgZm9yIHRoZSBjb250cmFjdFxuICAgKi9cbiAgbG9nZ2VyOiBMb2dnZXI7XG59XG4iXX0=
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/contracts/types.ts"],"names":[],"mappings":""}
@@ -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=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXVpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdHMvdXVpZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLGdEQWtCQztBQUVELG9DQXVCQztBQTdDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0FBRWxDLFNBQWdCLGtCQUFrQixDQUFDLE9BQW1CO0lBQ3BELE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRS9CLDhEQUE4RDtJQUM5RCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBRTVCLHFDQUFxQztJQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBRTVCLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUV4RSxPQUFPO1FBQ0wsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2YsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2hCLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUNqQixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDakIsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0tBQ2xCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2QsQ0FBQztBQUVNLEtBQUssVUFBVSxZQUFZLENBQUMsSUFBWTtJQUM3Qyx1Q0FBdUM7SUFDdkMsSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCx5RUFBeUU7SUFDekUsTUFBTSxVQUFVLEdBQUcsd0RBQWEsUUFBUSxHQUFDLENBQUM7SUFDMUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsR0FBRyxVQUFVLENBQUM7SUFFN0MsSUFBSSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDdEIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxNQUFNLE1BQU0sR0FBRyxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5RCxPQUFPLGtCQUFrQixDQUFDLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDekIsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2RCxPQUFPLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBieXRlc1RvVXVpZFY1U3R5bGUoYnl0ZXMxNjogVWludDhBcnJheSk6IHN0cmluZyB7XG4gIGNvbnN0IGIgPSBieXRlczE2LnNsaWNlKDAsIDE2KTtcblxuICAvLyBTZXQgdmVyc2lvbiB0byA1ICgwMTAxeHh4eCkgdG8gc2lnbmFsIGRldGVybWluaXN0aWMgaGFzaGluZ1xuICBiWzZdID0gKGJbNl0gJiAweDBmKSB8IDB4NTA7XG5cbiAgLy8gU2V0IHZhcmlhbnQgdG8gUkZDIDQxMjIgKDEweHh4eHh4KVxuICBiWzhdID0gKGJbOF0gJiAweDNmKSB8IDB4ODA7XG5cbiAgY29uc3QgaGV4ID0gWy4uLmJdLm1hcCgoeCkgPT4geC50b1N0cmluZygxNikucGFkU3RhcnQoMiwgXCIwXCIpKS5qb2luKFwiXCIpO1xuXG4gIHJldHVybiBbXG4gICAgaGV4LnNsaWNlKDAsIDgpLFxuICAgIGhleC5zbGljZSg4LCAxMiksXG4gICAgaGV4LnNsaWNlKDEyLCAxNiksXG4gICAgaGV4LnNsaWNlKDE2LCAyMCksXG4gICAgaGV4LnNsaWNlKDIwLCAzMiksXG4gIF0uam9pbihcIi1cIik7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1dWlkRnJvbVNlZWQoc2VlZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgLy8gQnJvd3NlciAvIGFueSBydW50aW1lIHdpdGggV2ViQ3J5cHRvXG4gIGlmIChnbG9iYWxUaGlzLmNyeXB0bz8uc3VidGxlKSB7XG4gICAgY29uc3QgZGF0YSA9IGVuY29kZXIuZW5jb2RlKHNlZWQpO1xuICAgIGNvbnN0IGRpZ2VzdCA9IGF3YWl0IGdsb2JhbFRoaXMuY3J5cHRvLnN1YnRsZS5kaWdlc3QoXCJTSEEtMjU2XCIsIGRhdGEpO1xuICAgIHJldHVybiBieXRlc1RvVXVpZFY1U3R5bGUobmV3IFVpbnQ4QXJyYXkoZGlnZXN0KS5zbGljZSgwLCAxNikpO1xuICB9XG5cbiAgLy8gTm9kZSBmYWxsYmFjazogZHluYW1pYyBpbXBvcnQgYXZvaWRzIGJ1bmRsaW5nIG5vZGU6Y3J5cHRvIGludG8gYnJvd3NlclxuICBjb25zdCBub2RlQ3J5cHRvID0gYXdhaXQgaW1wb3J0KFwiY3J5cHRvXCIpO1xuICBjb25zdCB7IGNyZWF0ZUhhc2gsIHdlYmNyeXB0byB9ID0gbm9kZUNyeXB0bztcblxuICBpZiAod2ViY3J5cHRvPy5zdWJ0bGUpIHtcbiAgICBjb25zdCBkYXRhID0gZW5jb2Rlci5lbmNvZGUoc2VlZCk7XG4gICAgY29uc3QgZGlnZXN0ID0gYXdhaXQgd2ViY3J5cHRvLnN1YnRsZS5kaWdlc3QoXCJTSEEtMjU2XCIsIGRhdGEpO1xuICAgIHJldHVybiBieXRlc1RvVXVpZFY1U3R5bGUobmV3IFVpbnQ4QXJyYXkoZGlnZXN0KS5zbGljZSgwLCAxNikpO1xuICB9XG5cbiAgY29uc3QgaGV4ID0gY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoc2VlZCkuZGlnZXN0KFwiaGV4XCIpO1xuICBjb25zdCBieXRlcyA9IG5ldyBVaW50OEFycmF5KDE2KTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNjsgaSsrKVxuICAgIGJ5dGVzW2ldID0gcGFyc2VJbnQoaGV4LnNsaWNlKGkgKiAyLCBpICogMiArIDIpLCAxNik7XG4gIHJldHVybiBieXRlc1RvVXVpZFY1U3R5bGUoYnl0ZXMpO1xufVxuIl19
75
+ //# sourceMappingURL=uuid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uuid.js","sourceRoot":"","sources":["../../src/contracts/uuid.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,gDAkBC;AAED,oCAuBC;AA7CD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC,SAAgB,kBAAkB,CAAC,OAAmB;IACpD,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE/B,8DAA8D;IAC9D,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAE5B,qCAAqC;IACrC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAE5B,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAExE,OAAO;QACL,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAChB,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;KAClB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,IAAY;IAC7C,uCAAuC;IACvC,IAAI,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACtE,OAAO,kBAAkB,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,yEAAyE;IACzE,MAAM,UAAU,GAAG,wDAAa,QAAQ,GAAC,CAAC;IAC1C,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC;IAE7C,IAAI,SAAS,EAAE,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC9D,OAAO,kBAAkB,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;QACzB,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvD,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import fabric from "./../cli-module.js";
2
2
  fabric().parse(process.argv);
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jpbi9jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLDJCQUFzQjtBQUVuQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZhYnJpYyBmcm9tIFwiLi4vY2xpLW1vZHVsZVwiO1xuXG5mYWJyaWMoKS5wYXJzZShwcm9jZXNzLmFyZ3YpO1xuIl19
3
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/bin/cli.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,2BAAsB;AAEnC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -470,4 +470,4 @@ fabricCmd.addCommand(extractCollections);
470
470
  export default function fabric() {
471
471
  return fabricCmd;
472
472
  }
473
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGktbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFVLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN4QyxPQUFPLE9BQU8sTUFBTSx3QkFBd0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsWUFBWSxHQUNiLGtDQUF5QjtBQUMxQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkQsT0FBTyxFQUNMLGVBQWUsRUFDZiwwQkFBMEIsRUFDMUIsZUFBZSxFQUNmLGVBQWUsRUFDZixlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLDRCQUE0QixHQUM3Qix1QkFBb0I7QUFDckIscUNBQTRCO0FBQzVCLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1QixPQUFPLEVBQ0wsa0JBQWtCLElBQUksYUFBYSxFQUVuQyxnQkFBZ0IsRUFDaEIseUJBQXlCLEdBQzFCLHNDQUFtQztBQUdwQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRXJDLFNBQVMsdUJBQXVCO0lBQzlCLE9BQU87UUFDTCxJQUFJLEVBQUUsNEJBQTRCO1FB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U0FBUyxHQUFHLElBQUksT0FBTyxFQUFFO0tBQzVCLElBQUksQ0FBQyxZQUFZLENBQUM7S0FDbEIsT0FBTyxDQUFDLFFBQVEsQ0FBQztLQUNqQixXQUFXLENBQ1YsbUVBQW1FLENBQ3BFLENBQUM7QUFFSixTQUFTLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3JDLFNBQVMsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDckMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNsQyxTQUFTLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3JDLFNBQVMsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUN4QyxTQUFTLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFFekMsTUFBTSxDQUFDLE9BQU8sVUFBVSxNQUFNO0lBQzVCLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuaW1wb3J0IHsgTG9nZ2luZywgdG9QYXNjYWxDYXNlIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5pbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgUGx1Z2luLCByb2xsdXAgfSBmcm9tIFwicm9sbHVwXCI7XG5pbXBvcnQgcmVwbGFjZSBmcm9tIFwiQHJvbGx1cC9wbHVnaW4tcmVwbGFjZVwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciwgU2VyaWFsaXphdGlvbkVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQge1xuICBnZW5lcmF0ZU1vZGVsRGVzaWduRG9jcyxcbiAgZ2VuZXJhdGVNb2RlbEluZGV4ZXMsXG4gIHJlYWRNb2RlbEZpbGUsXG4gIHJlYWRNb2RlbEZvbGRlcnMsXG4gIHdyaXRlRGVzaWduRG9jcyxcbiAgd3JpdGVJbmRleGVzLFxufSBmcm9tIFwiLi9jbGllbnQvaW5kZXhlc1wiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQge1xuICBhcHByb3ZlQ29udHJhY3QsXG4gIGVuc3VyZUluZnJhc3RydWN0dXJlQm9vdGVkLFxuICBpbnN0YWxsQ29udHJhY3QsXG4gIHBhY2thZ2VDb250cmFjdCxcbiAgY29tbWl0Q2hhaW5jb2RlLFxuICBnZXRDb250cmFjdFN0YXJ0Q29tbWFuZCxcbiAgY29tcGlsZVdpdGhUc2NvbmZpZ092ZXJyaWRlcyxcbn0gZnJvbSBcIi4vY2xpLXV0aWxzXCI7XG5pbXBvcnQgXCIuL3NoYXJlZC9vdmVycmlkZXNcIjtcbmltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuaW1wb3J0IHtcbiAgZXh0cmFjdENvbGxlY3Rpb25zIGFzIGV4Q29sbGVjdGlvbnMsXG4gIFByaXZhdGVDb2xsZWN0aW9uLFxuICB3cml0ZUNvbGxlY3Rpb25zLFxuICB3cml0ZUNvbGxlY3Rpb25EZXNpZ25Eb2NzLFxufSBmcm9tIFwiLi9jbGllbnQvY29sbGVjdGlvbnMvaW5kZXhcIjtcbmltcG9ydCB7IENvdWNoREJEZXNpZ25Eb2MsIENyZWF0ZUluZGV4UmVxdWVzdCB9IGZyb20gXCJAZGVjYWYtdHMvZm9yLWNvdWNoZGJcIjtcblxuY29uc3QgbG9nZ2VyID0gTG9nZ2luZy5mb3IoXCJmYWJyaWNcIik7XG5cbmZ1bmN0aW9uIHJlc29sdmVCdW5kbGVkSnNJbXBvcnRzKCk6IFBsdWdpbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJyZXNvbHZlLWJ1bmRsZWQtanMtaW1wb3J0c1wiLFxuICAgIHJlc29sdmVJZChzb3VyY2UsIGltcG9ydGVyKSB7XG4gICAgICBpZiAoIWltcG9ydGVyIHx8ICFzb3VyY2Uuc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc29sdmVkUGF0aCA9IHBhdGgucmVzb2x2ZShwYXRoLmRpcm5hbWUoaW1wb3J0ZXIpLCBzb3VyY2UpO1xuICAgICAgY29uc3QgY2FuZGlkYXRlcyA9IFtcbiAgICAgICAgcmVzb2x2ZWRQYXRoLFxuICAgICAgICBgJHtyZXNvbHZlZFBhdGh9LmpzYCxcbiAgICAgICAgcGF0aC5qb2luKHJlc29sdmVkUGF0aCwgXCJpbmRleC5qc1wiKSxcbiAgICAgIF07XG5cbiAgICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpIHtcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoY2FuZGlkYXRlKSAmJiBmcy5zdGF0U3luYyhjYW5kaWRhdGUpLmlzRmlsZSgpKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9LFxuICB9O1xufVxuXG5jb25zdCBjb21waWxlQ29tbWFuZCA9IG5ldyBDb21tYW5kKClcbiAgLm5hbWUoXCJjb21waWxlLWNvbnRyYWN0XCIpXG4gIC5kZXNjcmlwdGlvbihcIkNyZWF0ZXMgYSBnbG9iYWwgY29udHJhY3RcIilcbiAgLm9wdGlvbihcIi0tZGV2XCIsIFwiY29tcGlsZXMgY29udHJhY3RzIHdpdGhvdXQgbWluaWZpY2F0aW9uXCIsIGZhbHNlKVxuICAub3B0aW9uKFwiLS1kZWJ1Z1wiLCBcIm1ha2VzIGF0dGFjaGluZyBkZWJ1Z2dlciBwb3NzaWJsZVwiLCBmYWxzZSlcbiAgLm9wdGlvbihcbiAgICBcIi0tY2NhYXNcIixcbiAgICBcIkFqdXN0cyB0aGUgcGFja2FnZSBjb21tYW5kcyB0byBiZSBkZXBsb3llZCBhcyBjY2Fhc1wiLFxuICAgIGZhbHNlXG4gIClcbiAgLm9wdGlvbihcIi0tbmFtZSA8U3RyaW5nPlwiLCBcImNvbnRyYWN0IG5hbWVcIiwgXCJnbG9iYWwtY29udHJhY3RcIilcbiAgLm9wdGlvbihcIi0tYnVuZGxlXCIsIFwiQnVuZGxlcyB3aXRoIHJvbGx1cCBpbnN0ZWFkIG9mIHVzaW5nIHRzY1wiLCBmYWxzZSlcbiAgLm9wdGlvbihcbiAgICBcIi0tdHMtY29uZmlnLWZpbGUgPHN0cmluZz5cIixcbiAgICBcInJlbGF0aXZlIHBhdGggdG8gdGhlIHRzIGNvbmZpZyBmaWxlIGJhc2VkIG9uIGN3ZCBvciBhYnNvbHV0ZSBwYXRoXCIsXG4gICAgXCIuL3RzY29uZmlnLmpzb25cIlxuICApXG4gIC5vcHRpb24oXG4gICAgXCItLWRlc2NyaXB0aW9uIDxTdHJpbmc+XCIsXG4gICAgXCJjb250cmFjdCBkZXNjcmlwdGlvblwiLFxuICAgIFwiR2xvYmFsIGNvbnRyYWN0IGltcGxlbWVudGF0aW9uXCJcbiAgKVxuICAub3B0aW9uKFwiLS1zdHJpcC1jb250cmFjdC1uYW1lXCIsIFwic3RyaXAgY29udHJhY3QgbmFtZSBmcm9tIG91dHB1dFwiLCBmYWxzZSlcbiAgLm9wdGlvbihcIi0taW5wdXQgPFN0cmluZz5cIiwgXCJpbnB1dCBmb2xkZXIgZm9yIGNvbnRyYWN0c1wiLCBcImxpYi9jb250cmFjdHNcIilcbiAgLm9wdGlvbihcIi0tb3V0cHV0IDxTdHJpbmc+XCIsIFwib3V0cHV0IGZvbGRlciBmb3IgY29udHJhY3RzXCIsIFwiLi9jb250cmFjdHNcIilcbiAgLm9wdGlvbihcIi0tc291cmNlbWFwc1wiLCBcImluY2x1ZGVzIHNvdXJjZW1hcHMgaW4gdGhlIGNvbXBpbGVkIG91dHB1dFwiLCBmYWxzZSlcbiAgLmFjdGlvbihhc3luYyAob3B0aW9uczogYW55KSA9PiB7XG4gICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShcbiAgICAgIGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJwYWNrYWdlLmpzb25cIiksIFwidXRmLThcIilcbiAgICApO1xuXG4gICAgY29uc3QgdmVyc2lvbiA9IHBrZy52ZXJzaW9uO1xuXG4gICAgbGV0IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICAgIGRldixcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICAgIGRlYnVnLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgICAgbmFtZSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgb3V0cHV0LFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgICAgaW5wdXQsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgICBzdHJpcENvbnRyYWN0TmFtZSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICAgIGNjYWFzLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgICAgYnVuZGxlLFxuXG4gICAgICB0c0NvbmZpZ0ZpbGUsXG4gICAgICBzb3VyY2VtYXBzLFxuICAgIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGxvZyA9IGxvZ2dlci5mb3IoXCJjb21waWxlLWNvbnRyYWN0XCIpO1xuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIGBydW5uaW5nIHdpdGggb3B0aW9uczogJHtKU09OLnN0cmluZ2lmeShvcHRpb25zKX0gZm9yICR7cGtnLm5hbWV9IHZlcnNpb24gJHt2ZXJzaW9ufWBcbiAgICApO1xuXG4gICAgdHNDb25maWdGaWxlID0gcGF0aC5pc0Fic29sdXRlKHRzQ29uZmlnRmlsZSlcbiAgICAgID8gdHNDb25maWdGaWxlXG4gICAgICA6IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCB0c0NvbmZpZ0ZpbGUpO1xuXG4gICAgb3V0cHV0ID0gc3RyaXBDb250cmFjdE5hbWUgPyBvdXRwdXQgOiBwYXRoLmpvaW4ob3V0cHV0LCBuYW1lKTtcbiAgICBsb2cuaW5mbyhgRGVsZXRpbmcgZXhpc3Rpbmcgb3V0cHV0IGZvbGRlciAoaWYgZXhpc3RzKSB1bmRlciAke291dHB1dH1gKTtcbiAgICBleGVjU3luYyhgcm0gLXJmICR7b3V0cHV0fWApO1xuICAgIGlmIChidW5kbGUpIHtcbiAgICAgIGxvZy5pbmZvKGBidW5kbGluZyBjb250cmFjdCBmcm9tICR7aW5wdXR9YCk7XG4gICAgICBjb25zdCB0ZW1wQnVuZGxlRGlyID0gZnMubWtkdGVtcFN5bmMoXG4gICAgICAgIHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcIi5jb250cmFjdC1idW5kbGUtXCIpXG4gICAgICApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgaW5wdXRFbnRyeSA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBpbnB1dCwgXCJpbmRleC50c1wiKTtcbiAgICAgICAgY29uc3QgY29uZmlnRmlsZSA9IHRzLnJlYWRDb25maWdGaWxlKHRzQ29uZmlnRmlsZSwgdHMuc3lzLnJlYWRGaWxlKTtcbiAgICAgICAgaWYgKGNvbmZpZ0ZpbGUuZXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgIHRzLmZsYXR0ZW5EaWFnbm9zdGljTWVzc2FnZVRleHQoY29uZmlnRmlsZS5lcnJvci5tZXNzYWdlVGV4dCwgXCJcXG5cIilcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyc2VkQ29uZmlnID0gdHMucGFyc2VKc29uQ29uZmlnRmlsZUNvbnRlbnQoXG4gICAgICAgICAgY29uZmlnRmlsZS5jb25maWcsXG4gICAgICAgICAgdHMuc3lzLFxuICAgICAgICAgIHBhdGguZGlybmFtZSh0c0NvbmZpZ0ZpbGUpLFxuICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICB0c0NvbmZpZ0ZpbGVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHBhcnNlZENvbmZpZy5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgICBwYXJzZWRDb25maWcuZXJyb3JzXG4gICAgICAgICAgICAgIC5tYXAoKGVycm9yKSA9PlxuICAgICAgICAgICAgICAgIHRzLmZsYXR0ZW5EaWFnbm9zdGljTWVzc2FnZVRleHQoZXJyb3IubWVzc2FnZVRleHQsIFwiXFxuXCIpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLmpvaW4oXCJcXG5cIilcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGVtcENvbXBpbGVyT3B0aW9uczogdHMuQ29tcGlsZXJPcHRpb25zID0ge1xuICAgICAgICAgIC4uLnBhcnNlZENvbmZpZy5vcHRpb25zLFxuICAgICAgICAgIG91dERpcjogdGVtcEJ1bmRsZURpcixcbiAgICAgICAgICBtb2R1bGU6IHRzLk1vZHVsZUtpbmQuRVNOZXh0LFxuICAgICAgICAgIGRlY2xhcmF0aW9uOiBmYWxzZSxcbiAgICAgICAgICBzb3VyY2VNYXA6IGZhbHNlLFxuICAgICAgICAgIGlubGluZVNvdXJjZXM6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBidW5kbGVkRW50cnlQb2ludCA9IHRzXG4gICAgICAgICAgLmdldE91dHB1dEZpbGVOYW1lcyhcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgLi4ucGFyc2VkQ29uZmlnLFxuICAgICAgICAgICAgICBvcHRpb25zOiB0ZW1wQ29tcGlsZXJPcHRpb25zLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlucHV0RW50cnksXG4gICAgICAgICAgICAhdHMuc3lzLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXNcbiAgICAgICAgICApXG4gICAgICAgICAgLmZpbmQoKGZpbGVOYW1lKSA9PiBmaWxlTmFtZS5lbmRzV2l0aChcIi5qc1wiKSk7XG5cbiAgICAgICAgaWYgKCFidW5kbGVkRW50cnlQb2ludCkge1xuICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgYEZhaWxlZCB0byBkZXRlcm1pbmUgdGhlIGVtaXR0ZWQgYnVuZGxlIGVudHJ5IGZvciAke2lucHV0RW50cnl9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb21waWxlV2l0aFRzY29uZmlnT3ZlcnJpZGVzKHRzQ29uZmlnRmlsZSwgdGVtcENvbXBpbGVyT3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGJ1bmRsZWRDb250cmFjdCA9IGF3YWl0IHJvbGx1cCh7XG4gICAgICAgICAgaW5wdXQ6IGJ1bmRsZWRFbnRyeVBvaW50LFxuICAgICAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAgICAgIHJlc29sdmVCdW5kbGVkSnNJbXBvcnRzKCksXG4gICAgICAgICAgICByZXBsYWNlKHtcbiAgICAgICAgICAgICAgcHJldmVudEFzc2lnbm1lbnQ6IHRydWUsXG4gICAgICAgICAgICAgIGRlbGltaXRlcnM6IFtcIlwiLCBcIlwiXSxcbiAgICAgICAgICAgICAgdmFsdWVzOiB7IFwiIyNWRVJTSU9OIyNcIjogdmVyc2lvbiwgXCIjI1BBQ0tBR0UjI1wiOiBwa2cubmFtZSB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSk7XG4gICAgICAgIGxvZy5pbmZvKFxuICAgICAgICAgIGB3aXRoaW5nIGNvbnRyYWN0IHRvICR7b3V0cHV0fSB3aXRoIG5hbWUgJHt0b1Bhc2NhbENhc2UobmFtZSl9LmpzYFxuICAgICAgICApO1xuICAgICAgICBhd2FpdCBidW5kbGVkQ29udHJhY3Qud3JpdGUoe1xuICAgICAgICAgIGZpbGU6IGAke291dHB1dH0vJHt0b1Bhc2NhbENhc2UobmFtZSl9LmpzYCxcbiAgICAgICAgICBmb3JtYXQ6IFwidW1kXCIsXG4gICAgICAgICAgbmFtZTogYCR7dG9QYXNjYWxDYXNlKG5hbWUpfS5qc2AsXG4gICAgICAgICAgc291cmNlbWFwOiBzb3VyY2VtYXBzID8gXCJpbmxpbmVcIiA6IGZhbHNlLFxuICAgICAgICAgIHNvdXJjZW1hcFBhdGhUcmFuc2Zvcm06IChyZWxhdGl2ZVNvdXJjZVBhdGgsIHNvdXJjZW1hcFBhdGgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFic29sdXRlU291cmNlUGF0aCA9IHBhdGgucmVzb2x2ZShcbiAgICAgICAgICAgICAgcGF0aC5kaXJuYW1lKHNvdXJjZW1hcFBhdGgpLFxuICAgICAgICAgICAgICByZWxhdGl2ZVNvdXJjZVBhdGhcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChhYnNvbHV0ZVNvdXJjZVBhdGguc3RhcnRzV2l0aCh0ZW1wQnVuZGxlRGlyKSkge1xuICAgICAgICAgICAgICByZXR1cm4gcGF0aC5wb3NpeC5qb2luKFxuICAgICAgICAgICAgICAgIFwiLmJ1bmRsZVwiLFxuICAgICAgICAgICAgICAgIHBhdGhcbiAgICAgICAgICAgICAgICAgIC5yZWxhdGl2ZSh0ZW1wQnVuZGxlRGlyLCBhYnNvbHV0ZVNvdXJjZVBhdGgpXG4gICAgICAgICAgICAgICAgICAuc3BsaXQocGF0aC5zZXApXG4gICAgICAgICAgICAgICAgICAuam9pbihcIi9cIilcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlbGF0aXZlU291cmNlUGF0aDtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgYnVuZGxlZENvbnRyYWN0LmNsb3NlKCk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBmcy5ybVN5bmModGVtcEJ1bmRsZURpciwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb21waWxlV2l0aFRzY29uZmlnT3ZlcnJpZGVzKHRzQ29uZmlnRmlsZSwge1xuICAgICAgICBvdXREaXI6IG91dHB1dCxcbiAgICAgICAgbW9kdWxlOiB0cy5Nb2R1bGVLaW5kLkVTTmV4dCxcbiAgICAgICAgZGVjbGFyYXRpb246IGZhbHNlLFxuICAgICAgICBzb3VyY2VNYXA6IHNvdXJjZW1hcHMsXG4gICAgICAgIGlubGluZVNvdXJjZXM6IHNvdXJjZW1hcHMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBzY3JpcHRzID0ge1xuICAgICAgc3RhcnQ6IGdldENvbnRyYWN0U3RhcnRDb21tYW5kKGRlYnVnLCBjY2FhcyksXG4gICAgICBcInN0YXJ0OmRldlwiOiBcImZhYnJpYy1jaGFpbmNvZGUtbm9kZSBzdGFydCAtLXRscy5lbmFibGVkIGZhbHNlXCIsXG4gICAgICBcInN0YXJ0OndhdGNoXCI6ICdub2RlbW9uIC0tZXhlYyBcIm5wbSBydW4gc3RhcnQ6ZGV2XCInLFxuICAgICAgYnVpbGQ6ICdlY2hvIFwiTm8gbmVlZCB0byBidWlsZCB0aGUgY2hhaW5jb2RlXCInLFxuICAgICAgbGludDogXCJlc2xpbnQgLiAtLWZpeCAtLWV4dCAuanNcIixcbiAgICB9O1xuXG4gICAgY29uc3QgY29udHJhY3RQYWNrYWdlID0gcGtnO1xuXG4gICAgY29udHJhY3RQYWNrYWdlLm5hbWUgPSBuYW1lO1xuICAgIGNvbnRyYWN0UGFja2FnZS5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgIGNvbnRyYWN0UGFja2FnZS5zY3JpcHRzID0gc2NyaXB0cztcblxuICAgIGRlbGV0ZSBjb250cmFjdFBhY2thZ2UudHlwZTtcbiAgICBkZWxldGUgY29udHJhY3RQYWNrYWdlLnR5cGVzO1xuICAgIGRlbGV0ZSBjb250cmFjdFBhY2thZ2UuZXhwb3J0cztcbiAgICBjb250cmFjdFBhY2thZ2UubWFpbiA9IGJ1bmRsZVxuICAgICAgPyBgJHt0b1Bhc2NhbENhc2UobmFtZSl9LmpzYFxuICAgICAgOiBgJHtpbnB1dH0vaW5kZXguanNgO1xuXG4gICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgIHBhdGguam9pbihvdXRwdXQsIFwicGFja2FnZS5qc29uXCIpLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoY29udHJhY3RQYWNrYWdlKVxuICAgICk7XG5cbiAgICBsb2cuaW5mbyhgSW5zdGFsbGluZyBhbmQgc2hyaW5rd3JhcHBpbmcgZGVwZW5kZW5jaWVzYCk7XG4gICAgZXhlY1N5bmMoYG5wbSBpbnN0YWxsYCwgeyBjd2Q6IG91dHB1dCB9KTtcbiAgICBleGVjU3luYyhgbnBtIHNocmlua3dyYXBgLCB7IGN3ZDogb3V0cHV0IH0pO1xuICAgIGV4ZWNTeW5jKFwicm0gLXJmIG5vZGVfbW9kdWxlc1wiLCB7IGN3ZDogb3V0cHV0IH0pO1xuICAgIGxvZy5pbmZvKGBkZWxldGluZyB0ZW1wIGZvbGRlcnNgKTtcbiAgICBleGVjU3luYyhgcm0gLXJmIC4vbGliICYmIHJtIC1yZiAuL2Rpc3RgLCB7IGN3ZDogb3V0cHV0IH0pO1xuICAgIGxvZy5pbmZvKFxuICAgICAgYENvbnRyYWN0ICR7bmFtZX0gY29tcGlsZWQgc3VjY2Vzc2Z1bGx5ISBpbiAke3BhdGgucmVzb2x2ZShvdXRwdXQpfWBcbiAgICApO1xuICAgIGlmIChkZXYpIHtcbiAgICAgIGxvZy5pbmZvKGBkZXYgbW9kZSBlbmFibGVkLiBpbnN0YWxsaW5nIGRlcGVuZGVuY2llcyBmb3IgZGVidWdnaW5nYCk7XG4gICAgICBleGVjU3luYyhgbnBtIGluc3RhbGxgLCB7XG4gICAgICAgIGN3ZDogb3V0cHV0LFxuICAgICAgICBlbnY6IHsgLi4ucHJvY2Vzcy5lbnYsIE5PREVfRU5WOiBcInByb2R1Y3Rpb25cIiB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuY29uc3QgZXh0cmFjdEluZGV4ZXMgPSBuZXcgQ29tbWFuZCgpXG4gIC5jb21tYW5kKFwiZXh0cmFjdC1pbmRleGVzXCIpXG4gIC5vcHRpb24oXCItLWZpbGUgW1N0cmluZ11cIiwgXCJ0aGUgbW9kZWwgZmlsZVwiKVxuICAub3B0aW9uKFwiLS1mb2xkZXIgW1N0cmluZ11cIiwgXCJ0aGUgbW9kZWwgZm9sZGVyXCIpXG4gIC5vcHRpb24oXCItLW91dERpciA8U3RyaW5nPlwiLCBcInRoZSBvdXRkaXIuIHNob3VsZCBtYXRjaCB5b3VyIGNvbnRyYWN0IGZvbGRlclwiKVxuICAuZGVzY3JpcHRpb24oXG4gICAgXCJDcmVhdGVzIGEgdGhlIEpTT04gaW5kZXggZmlsZXMgdG8gYmUgc3VibWl0dGVkIHRvIGFsb25nIHdpdGggdGhlIGNvbnRyYWN0XCJcbiAgKVxuICAuYWN0aW9uKGFzeW5jIChvcHRpb25zOiBhbnkpID0+IHtcbiAgICBjb25zdCBwa2cgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcInBhY2thZ2UuanNvblwiKSwgXCJ1dGYtOFwiKVxuICAgICk7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gcGtnLnZlcnNpb247XG5cbiAgICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKFwiZXh0cmFjdC1pbmRleGVzXCIpO1xuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIGBydW5uaW5nIHdpdGggb3B0aW9uczogJHtKU09OLnN0cmluZ2lmeShvcHRpb25zKX0gZm9yICR7cGtnLm5hbWV9IHZlcnNpb24gJHt2ZXJzaW9ufWBcbiAgICApO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGxldCB7IGZpbGUsIGZvbGRlciwgb3V0RGlyIH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3QgbW9kZWxzOiBhbnlbXSA9IFtdO1xuICAgIGlmIChmaWxlKSB7XG4gICAgICBtb2RlbHMucHVzaCguLi5yZWFkTW9kZWxGaWxlKGZpbGUpKTtcbiAgICB9XG5cbiAgICBpZiAoZm9sZGVyKSB7XG4gICAgICBsb2cuaW5mbyhgTG9hZGluZyBtb2RlbHMgZnJvbSAke2ZvbGRlcn0uLi5gKTtcbiAgICAgIG1vZGVscy5wdXNoKC4uLihhd2FpdCByZWFkTW9kZWxGb2xkZXJzKGZvbGRlcikpKTtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgY29uc3QgZGVzaWduRG9jczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXG4gICAgaWYgKCFmaWxlICYmICFmb2xkZXIpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgTXVzdCBwYXNzIGEgZmlsZSBvciBhIGZvbGRlcmApO1xuXG4gICAgZm9yIChjb25zdCBtIG9mIG1vZGVscykge1xuICAgICAgbG9nLnZlcmJvc2UoYEV4dHJhY3RpbmcgaW5kZXhlcyBmb3IgdGFibGUgJHtNb2RlbC50YWJsZU5hbWUobSl9YCk7XG4gICAgICBjb25zdCBpbmRleGVzID0gZ2VuZXJhdGVNb2RlbEluZGV4ZXMobSk7XG4gICAgICBpbmRleGVzLmZvckVhY2goKGluZGV4KSA9PiB7XG4gICAgICAgIGlmIChpbmRleC5uYW1lKSB7XG4gICAgICAgICAgcmVzdWx0W2luZGV4Lm5hbWVdID0gaW5kZXg7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgZ2VuZXJhdGVNb2RlbERlc2lnbkRvY3MobSwgZGVzaWduRG9jcyk7XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ZXNUb1dyaXRlID0gT2JqZWN0LnZhbHVlcyhyZXN1bHQpO1xuICAgIGNvbnN0IGRvY3NUb1dyaXRlID0gT2JqZWN0LnZhbHVlcyhkZXNpZ25Eb2NzKTtcbiAgICBsb2cudmVyYm9zZShgRm91bmQgJHtpbmRleGVzVG9Xcml0ZS5sZW5ndGh9IGluZGV4ZXMgdG8gY3JlYXRlYCk7XG4gICAgbG9nLnZlcmJvc2UoYEZvdW5kICR7ZG9jc1RvV3JpdGUubGVuZ3RofSBkZXNpZ24gZG9jcyB0byBjcmVhdGVgKTtcbiAgICBsb2cuZGVidWcoYEluZGV4ZXM6ICR7SlNPTi5zdHJpbmdpZnkocmVzdWx0KX1gKTtcbiAgICBsb2cuZGVidWcoYERlc2lnbkRvY3M6ICR7SlNPTi5zdHJpbmdpZnkoZGVzaWduRG9jcyl9YCk7XG4gICAgd3JpdGVJbmRleGVzKGluZGV4ZXNUb1dyaXRlLCBvdXREaXIpO1xuICAgIHdyaXRlRGVzaWduRG9jcyhkb2NzVG9Xcml0ZSwgb3V0RGlyKTtcbiAgfSk7XG5cbmNvbnN0IGV4dHJhY3RDb2xsZWN0aW9ucyA9IG5ldyBDb21tYW5kKClcbiAgLmNvbW1hbmQoXCJleHRyYWN0LWNvbGxlY3Rpb25zXCIpXG4gIC5vcHRpb24oXCItLWZpbGUgW1N0cmluZ11cIiwgXCJ0aGUgbW9kZWwgZmlsZVwiKVxuICAub3B0aW9uKFwiLS1mb2xkZXIgW1N0cmluZ11cIiwgXCJ0aGUgbW9kZWwgZm9sZGVyXCIpXG4gIC5vcHRpb24oXCItLW91dERpciA8U3RyaW5nPlwiLCBcInRoZSBvdXRkaXIuIHNob3VsZCBtYXRjaCB5b3VyIGNvbnRyYWN0IGZvbGRlclwiKVxuICAub3B0aW9uKFwiLS1tc3BJZHMgPFN0cmluZz5cIiwgXCJzaW5nbGUgbXNwSWQgb3Igc3RyaW5naWZpZWQgYXJyYXlcIilcbiAgLm9wdGlvbihcIi0tbWFpbk1zcElkIDxTdHJpbmc+XCIsIFwic2luZ2xlIG1zcElkXCIpXG4gIC5vcHRpb24oXG4gICAgXCItLW92ZXJyaWRlcyBbU3RyaW5nXVwiLFxuICAgIFwic3RyaW5naWZpZWQgb3ZlcnJpZGUgb2JqZWN0IHtyZXF1aXJlZFBlZXJDb3VudDogbnVtYmVyLCBtYXhQZWVyQ291bnQ6IG51bWJlciwgYmxvY2tUb0xpdmU6IG51bWJlciwgbWVtYmVyT25seVJlYWQ6IG51bWJlciwgbWVtYmVyT25seVdyaXRlOiBudW1iZXIsIGVuZG9yc2VtZW50UG9saWN5OiAge319XCJcbiAgKVxuICAuZGVzY3JpcHRpb24oXG4gICAgXCJDcmVhdGVzIGEgdGhlIEpTT04gaW5kZXggZmlsZXMgdG8gYmUgc3VibWl0dGVkIHRvIGFsb25nIHdpdGggdGhlIGNvbnRyYWN0XCJcbiAgKVxuICAuYWN0aW9uKGFzeW5jIChvcHRpb25zOiBhbnkpID0+IHtcbiAgICBjb25zdCBwa2cgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcInBhY2thZ2UuanNvblwiKSwgXCJ1dGYtOFwiKVxuICAgICk7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gcGtnLnZlcnNpb247XG5cbiAgICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKFwiZXh0cmFjdC1jb2xsZWN0aW9uc1wiKTtcbiAgICBsb2cuZGVidWcoXG4gICAgICBgcnVubmluZyB3aXRoIG9wdGlvbnM6ICR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucyl9IGZvciAke3BrZy5uYW1lfSB2ZXJzaW9uICR7dmVyc2lvbn1gXG4gICAgKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICBsZXQgeyBmaWxlLCBmb2xkZXIsIG91dERpciwgbXNwSWRzLCBtYWluTXNwSWQgfSA9IG9wdGlvbnM7XG5cbiAgICB0cnkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbXNwSWRzID0gbXNwSWRzID8gSlNPTi5wYXJzZShtc3BJZHMpIDogdW5kZWZpbmVkO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgIC8vICBkbyBub3RoaW5nXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FcnJvcihgVW5hYmxlIHRvIGV4dHJhY3QgbXNwaWRzOiAgJHtlfWApO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZGVsczogYW55W10gPSBbXTtcbiAgICBpZiAoZmlsZSkge1xuICAgICAgbW9kZWxzLnB1c2goLi4ucmVhZE1vZGVsRmlsZShmaWxlKSk7XG4gICAgfVxuXG4gICAgaWYgKGZvbGRlcikge1xuICAgICAgbG9nLmluZm8oYExvYWRpbmcgbW9kZWxzIGZyb20gJHtmb2xkZXJ9Li4uYCk7XG4gICAgICBtb2RlbHMucHVzaCguLi4oYXdhaXQgcmVhZE1vZGVsRm9sZGVycyhmb2xkZXIpKSk7XG4gICAgfVxuXG4gICAgaWYgKCFmaWxlICYmICFmb2xkZXIpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgTXVzdCBwYXNzIGEgZmlsZSBvciBhIGZvbGRlcmApO1xuXG4gICAgY29uc3QgaW5qZWN0YWJsZU1vZGVscyA9IG1vZGVscy5maWx0ZXIoXG4gICAgICAobW9kZWwpID0+XG4gICAgICAgIE1vZGVsLmlzU2hhcmVkKG1vZGVsKSB8fFxuICAgICAgICBNb2RlbC5pc1ByaXZhdGUobW9kZWwpIHx8XG4gICAgICAgICEhTW9kZWwubWlycm9yZWRBdChtb2RlbClcbiAgICApO1xuICAgIGlmICghaW5qZWN0YWJsZU1vZGVscy5sZW5ndGgpIHtcbiAgICAgIGxvZy5pbmZvKFxuICAgICAgICBgTm8gc2hhcmVkLCBwcml2YXRlLCBvciBtaXJyb3JlZCBtb2RlbHMgZm91bmQgdG8gZXh0cmFjdCBjb2xsZWN0aW9uc2BcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gZ2V0Q29scyhtc3BJZHNMaXN0Pzogc3RyaW5nW10pIHtcbiAgICAgIGNvbnN0IGNvbHM6IHtcbiAgICAgICAgaW5kZXhlczogQ3JlYXRlSW5kZXhSZXF1ZXN0W107XG4gICAgICAgIGRlc2lnbkRvY3M6IENvdWNoREJEZXNpZ25Eb2NbXTtcbiAgICAgICAgbWlycm9yPzogUHJpdmF0ZUNvbGxlY3Rpb247XG4gICAgICAgIGNvbGxlY3Rpb25zOiBQcml2YXRlQ29sbGVjdGlvbltdO1xuICAgICAgfVtdID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIGluamVjdGFibGVNb2RlbHMubWFwKGFzeW5jIChjbGF6eikgPT4ge1xuICAgICAgICAgIGNvbnN0IHRhYmxlTmFtZSA9IE1vZGVsLnRhYmxlTmFtZShjbGF6eik7XG4gICAgICAgICAgY29uc3QgbWlycm9yTWV0YSA9IE1vZGVsLm1pcnJvcmVkQXQoY2xhenopO1xuXG4gICAgICAgICAgY29uc29sZS5sb2codGFibGVOYW1lKTtcbiAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICAgIGZvciAoY29uc3QgbXNwIG9mIG1zcElkc0xpc3QgfHwgbXNwSWRzIHx8IFtdKSB7XG4gICAgICAgICAgICBjb2xsZWN0aW9uc1ttc3BdID0gYXdhaXQgZXhDb2xsZWN0aW9ucyhcbiAgICAgICAgICAgICAgY2xhenosXG4gICAgICAgICAgICAgIFttc3AsIG1haW5Nc3BJZF0sXG4gICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAvLyB7XG4gICAgICAgICAgICAgIC8vICAgc2hhcmVkQ29sczogT2JqZWN0LmFzc2lnbih7fSwgb3ZlcnJpZGVzLnNoYXJlZENvbHMpLFxuICAgICAgICAgICAgICAvLyAgIHByaXZhdGVDb2xzOiBPYmplY3QuYXNzaWduKHt9LCBvdmVycmlkZXMucHJpdmF0ZUNvbHMpLFxuICAgICAgICAgICAgICAvLyB9LFxuICAgICAgICAgICAgICAhIW1pcnJvck1ldGFcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IG1pcnJvckNvbGxlY3Rpb246IFByaXZhdGVDb2xsZWN0aW9uIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgaWYgKG1pcnJvck1ldGEpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25zW21haW5Nc3BJZF0gPSBjb2xsZWN0aW9uc1ttYWluTXNwSWRdIHx8IHt9O1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoY29sbGVjdGlvbnMpLmZvckVhY2goKG1zcDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25zW21haW5Nc3BJZF0ucHJpdmF0ZXMgPSBjb2xsZWN0aW9uc1tcbiAgICAgICAgICAgICAgICBtc3BcbiAgICAgICAgICAgICAgXS5wcml2YXRlcz8uZmlsdGVyKChwOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocC5uYW1lICE9PSAobWlycm9yTWV0YS5yZXNvbHZlciBhcyBzdHJpbmcpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICBtaXJyb3JDb2xsZWN0aW9uID0gcCBhcyBhbnk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHByaXZhdGVzQ291bnQgPSBPYmplY3QudmFsdWVzKGNvbGxlY3Rpb25zKVxuICAgICAgICAgICAgLm1hcCgoYykgPT4gYy5wcml2YXRlcylcbiAgICAgICAgICAgIC5mbGF0KCkubGVuZ3RoO1xuICAgICAgICAgIGlmIChwcml2YXRlc0NvdW50KVxuICAgICAgICAgICAgbG9nXG4gICAgICAgICAgICAgIC5mb3IoTW9kZWwudGFibGVOYW1lKGNsYXp6KSlcbiAgICAgICAgICAgICAgLmluZm8oYEZvdW5kICR7cHJpdmF0ZXNDb3VudH0gcHJpdmF0ZSBjb2xsZWN0aW9ucyB0byBjcmVhdGVgKTtcbiAgICAgICAgICBjb25zdCBzaGFyZWRDb3VudCA9IE9iamVjdC52YWx1ZXMoY29sbGVjdGlvbnMpXG4gICAgICAgICAgICAubWFwKChjKSA9PiBjLnNoYXJlZClcbiAgICAgICAgICAgIC5mbGF0KCkubGVuZ3RoO1xuXG4gICAgICAgICAgbG9nXG4gICAgICAgICAgICAuZm9yKE1vZGVsLnRhYmxlTmFtZShjbGF6eikpXG4gICAgICAgICAgICAuaW5mbyhgRm91bmQgJHtzaGFyZWRDb3VudH0gc2hhcmVkIGNvbGxlY3Rpb25zIHRvIGNyZWF0ZWApO1xuICAgICAgICAgIGlmIChtaXJyb3JDb2xsZWN0aW9uKVxuICAgICAgICAgICAgbG9nXG4gICAgICAgICAgICAgIC5mb3IoTW9kZWwudGFibGVOYW1lKGNsYXp6KSlcbiAgICAgICAgICAgICAgLmluZm8oXG4gICAgICAgICAgICAgICAgYEZvdW5kIG9uZSBtaXJyb3IgY29sbGVjdGlvbiAke21pcnJvck1ldGE/LnJlc29sdmVyIGFzIHN0cmluZ31gXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCBjb2xMaXN0ID0gT2JqZWN0LnZhbHVlcyhjb2xsZWN0aW9ucylcbiAgICAgICAgICAgIC5tYXAoKGMpID0+IFsuLi4oYy5wcml2YXRlcyB8fCBbXSksIC4uLihjLnNoYXJlZCB8fCBbXSldKVxuICAgICAgICAgICAgLmZsYXQoKTtcbiAgICAgICAgICBsZXQgaW5kZXhlczogQ3JlYXRlSW5kZXhSZXF1ZXN0W10gPSBbXTtcbiAgICAgICAgICBsZXQgZGVzaWduRG9jczogQ291Y2hEQkRlc2lnbkRvY1tdID0gW107XG4gICAgICAgICAgaWYgKGNvbExpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICBsb2dcbiAgICAgICAgICAgICAgLmZvcihNb2RlbC50YWJsZU5hbWUoY2xhenopKVxuICAgICAgICAgICAgICAudmVyYm9zZShgZ2VuZXJhdGluZyBpbmRleGVzIGZvciBjb2xsZWN0aW9uc2ApO1xuICAgICAgICAgICAgaW5kZXhlcyA9IGdlbmVyYXRlTW9kZWxJbmRleGVzKGNsYXp6KTtcbiAgICAgICAgICAgIGxvZ1xuICAgICAgICAgICAgICAuZm9yKE1vZGVsLnRhYmxlTmFtZShjbGF6eikpXG4gICAgICAgICAgICAgIC5pbmZvKGBmb3VuZCAke2luZGV4ZXMubGVuZ3RofSBpbmRleGVzYCk7XG4gICAgICAgICAgICBkZXNpZ25Eb2NzID0gZ2VuZXJhdGVNb2RlbERlc2lnbkRvY3MoY2xhenopO1xuICAgICAgICAgICAgbG9nXG4gICAgICAgICAgICAgIC5mb3IoTW9kZWwudGFibGVOYW1lKGNsYXp6KSlcbiAgICAgICAgICAgICAgLmluZm8oYGZvdW5kICR7ZGVzaWduRG9jcy5sZW5ndGh9IGRlc2lnbiBkb2NzYCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgICAgZGVzaWduRG9jcyxcbiAgICAgICAgICAgIGNvbGxlY3Rpb25zOiBjb2xMaXN0LFxuICAgICAgICAgICAgbWlycm9yOiBtaXJyb3JDb2xsZWN0aW9uLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgcmV0dXJuIGNvbHM7XG4gICAgfVxuXG4gICAgY29uc3QgY29scyA9IGF3YWl0IGdldENvbHMoKTtcbiAgICBjb25zdCBvbmx5TWlycm9yID0gYXdhaXQgZ2V0Q29scyhbbWFpbk1zcElkXSk7XG5cbiAgICBjb25zdCBjb2xsZWN0aW9uc1RvID0gW1xuICAgICAgLi4ub25seU1pcnJvci5maWx0ZXIoKGMpID0+IGMubWlycm9yKS5tYXAoKGMpID0+IGMubWlycm9yKSxcbiAgICAgIC4uLmNvbHMubWFwKChjKSA9PiBjLmNvbGxlY3Rpb25zKS5mbGF0KCksXG4gICAgICAuLi5jb2xzLmZpbHRlcigoYykgPT4gYy5taXJyb3IpLm1hcCgoYykgPT4gYy5taXJyb3IpLFxuICAgIF0gYXMgUHJpdmF0ZUNvbGxlY3Rpb25bXTtcblxuICAgIGNvbnN0IHVuaXF1ZUJ5Q29sbGVjdGlvbiA9IFtcbiAgICAgIC4uLm5ldyBNYXAoXG4gICAgICAgIGNvbGxlY3Rpb25zVG8ubWFwKChpdGVtOiBQcml2YXRlQ29sbGVjdGlvbikgPT4gW2l0ZW0ubmFtZSwgaXRlbV0pXG4gICAgICApLnZhbHVlcygpLFxuICAgIF07XG5cbiAgICBpZiAodW5pcXVlQnlDb2xsZWN0aW9uLmxlbmd0aCkge1xuICAgICAgd3JpdGVDb2xsZWN0aW9ucyh1bmlxdWVCeUNvbGxlY3Rpb24sIG91dERpcik7XG4gICAgICBjb25zdCBtZXRhQ29sbGVjdGlvbnNDb25maWcgPSBwYXRoLmpvaW4oXG4gICAgICAgIG91dERpcixcbiAgICAgICAgXCJNRVRBLUlORlwiLFxuICAgICAgICBcImNvbGxlY3Rpb25zX2NvbmZpZy5qc29uXCJcbiAgICAgICk7XG4gICAgICBjb25zdCBjb250cmFjdENvbGxlY3Rpb25zQ29uZmlnID0gcGF0aC5qb2luKFxuICAgICAgICBvdXREaXIsXG4gICAgICAgIFwiY29sbGVjdGlvbnNfY29uZmlnLmpzb25cIlxuICAgICAgKTtcbiAgICAgIGZzLmNvcHlGaWxlU3luYyhtZXRhQ29sbGVjdGlvbnNDb25maWcsIGNvbnRyYWN0Q29sbGVjdGlvbnNDb25maWcpO1xuICAgICAgbG9nLmluZm8oXG4gICAgICAgIGBTdG9yZWQgJHtjb2xsZWN0aW9uc1RvLmxlbmd0aH0gY29sbGVjdGlvbnMgdG8gJHttZXRhQ29sbGVjdGlvbnNDb25maWd9YFxuICAgICAgKTtcbiAgICAgIGxvZy5pbmZvKFxuICAgICAgICBgQ29waWVkIGNvbGxlY3Rpb25zX2NvbmZpZyB0byAke2NvbnRyYWN0Q29sbGVjdGlvbnNDb25maWd9IGFsb25nc2lkZSB0aGUgcGFja2FnZS5qc29uYFxuICAgICAgKTtcblxuICAgICAgY29scy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaW5kZXhlcywgZGVzaWduRG9jcywgY29sbGVjdGlvbnMsIG1pcnJvciB9ID0gYztcbiAgICAgICAgY29uc3QgdG9JbmRleDogUHJpdmF0ZUNvbGxlY3Rpb25bXSA9IFsuLi5jb2xsZWN0aW9ucywgbWlycm9yXS5maWx0ZXIoXG4gICAgICAgICAgQm9vbGVhblxuICAgICAgICApIGFzIFByaXZhdGVDb2xsZWN0aW9uW107XG4gICAgICAgIHRvSW5kZXguZm9yRWFjaCgoaSkgPT4ge1xuICAgICAgICAgIHdyaXRlSW5kZXhlcyhpbmRleGVzLCBvdXREaXIsIGkubmFtZSk7XG4gICAgICAgICAgd3JpdGVDb2xsZWN0aW9uRGVzaWduRG9jcyhkZXNpZ25Eb2NzIHx8IFtdLCBvdXREaXIsIGkubmFtZSk7XG4gICAgICAgICAgbG9nLmluZm8oXG4gICAgICAgICAgICBgU3RvcmVkICR7aW5kZXhlcz8ubGVuZ3RoIHx8IDB9IGluZGV4ZXMgYW5kICR7ZGVzaWduRG9jcz8ubGVuZ3RoIHx8IDB9IGRlc2lnbiBkb2NzIHRvIGNvbGxlY3Rpb24gJHtpLm5hbWV9YFxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuY29uc3QgZW5zdXJlSW5mcmEgPSBuZXcgQ29tbWFuZCgpXG4gIC5uYW1lKFwiYXdhaXQtaW5mcmFcIilcbiAgLmRlc2NyaXB0aW9uKFwid2FpdHMgZm9yIHRoZSBpbmZyYXN0cnVjdHVyZSB0byBiZSB1cCBhbmQgcnVubmluZ1wiKVxuICAub3B0aW9uKFxuICAgIFwiLS1jb250YWluZXIgPFN0cmluZz5cIixcbiAgICBcImRvY2tlciBjb250YWluZXIgbmFtZSB0byB0ZXN0ICh1c3VhbGx5IGxhc3QgcGVlcilcIixcbiAgICBcImJvb3Qtb3JnLWMtcGVlci0wXCJcbiAgKVxuICAub3B0aW9uKFwiLS10aW1lb3V0IDxTdHJpbmc+XCIsIFwidGltZW91dCBiZXR3ZWVuIHRlc3RzIGluIG1pbGxpc2Vjb25kc1wiLCBcIjUwMDBcIilcbiAgLm9wdGlvbihcIi0tYXR0ZW1wdHMgPFN0cmluZz5cIiwgXCJudW1iZXIgb2YgYXR0ZW1wdHMgYmVmb3JlIGdpdmluZyB1cFwiLCBcIjEwXCIpXG4gIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnM6IGFueSkgPT4ge1xuICAgIGNvbnN0IHBrZyA9IEpTT04ucGFyc2UoXG4gICAgICBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwicGFja2FnZS5qc29uXCIpLCBcInV0Zi04XCIpXG4gICAgKTtcblxuICAgIGNvbnN0IHZlcnNpb24gPSBwa2cudmVyc2lvbjtcblxuICAgIGNvbnN0IGxvZyA9IGxvZ2dlci5mb3IoXCJhd2FpdC1pbmZyYVwiKTtcbiAgICBsb2cuZGVidWcoXG4gICAgICBgcnVubmluZyB3aXRoIG9wdGlvbnM6ICR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucyl9IGZvciAke3BrZy5uYW1lfSB2ZXJzaW9uICR7dmVyc2lvbn1gXG4gICAgKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgbGV0IHsgY29udGFpbmVyLCB0aW1lb3V0LCBhdHRlbXB0cyB9ID0gb3B0aW9ucztcbiAgICB0aW1lb3V0ID0gcGFyc2VJbnQodGltZW91dCkgfHwgNTAwMDtcbiAgICBhdHRlbXB0cyA9IHBhcnNlSW50KGF0dGVtcHRzKSB8fCAxMDtcblxuICAgIGF3YWl0IGVuc3VyZUluZnJhc3RydWN0dXJlQm9vdGVkKFwiYm9vdC1vcmctYy1wZWVyLTBcIiwgdGltZW91dCwgYXR0ZW1wdHMpO1xuXG4gICAgbG9nLmluZm8oXG4gICAgICBgSW5mcmFzdHJ1Y3R1cmUgYm9vdGVkIHN1Y2Nlc3NmdWxseSAoYWNjb3JkaW5nIHRvIGNvbnRhaW5lciAke2NvbnRhaW5lcn0pIWBcbiAgICApO1xuICB9KTtcblxuY29uc3QgZGVwbG95Q29udHJhY3QgPSBuZXcgQ29tbWFuZCgpXG4gIC5uYW1lKFwiZGVwbG95LWNvbnRyYWN0XCIpXG4gIC5kZXNjcmlwdGlvbihcImRlcGxveXMgdGhlIHNlbGVjdGVkIGNvbnRyYWN0XCIpXG4gIC5vcHRpb24oXCItLW5hbWUgPFN0cmluZz5cIiwgXCJDb250cmFjdCBOYW1lIChhbmQgZm9sZGVyKVwiKVxuICAub3B0aW9uKFwiLS1pbnB1dCA8U3RyaW5nPlwiLCBcImlucHV0IGZvbGRlclwiKVxuICAub3B0aW9uKFxuICAgIFwiLS1jb2xsZWN0aW9ucy1jb25maWcgPFN0cmluZz5cIixcbiAgICBcInBhdGggdG8gY29sbGVjdGlvbnNfY29uZmlnLmpzb24gdG8gY29uZmlndXJlIHByaXZhdGUgY29sbGVjdGlvbnNcIlxuICApXG4gIC5vcHRpb24oXG4gICAgXCItLWluY3JlbWVudFZlcnNpb24gPFN0cmluZz5cIixcbiAgICBcIih0cnVlIHwgZmFsc2UpIGlmIHNob3VsZCB1c2UgdmVyc2lvbiBvciBzZXF1ZW5jZSB0byB1cGRhdGUgY29udHJhY3RzXCIsXG4gICAgZmFsc2VcbiAgKVxuICAub3B0aW9uKFxuICAgIFwiLS10cmFja2VyRm9sZGVyIDxTdHJpbmc+XCIsXG4gICAgXCJjb250cmFjdCB2ZXJzaW9uIHRyYWNrZXIgZm9sZGVyIChzaG91bGQgYmUgZGVsZXRlZCBvbiBpbmZyYXN0cnVjdHVyZTpkb3duKVwiLFxuICAgIHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcInRlc3RzXCIsIFwiaW50ZWdyYXRpb25cIiwgXCJjaGFpbmNvZGVUcmFja2Vyc1wiKVxuICApXG4gIC5vcHRpb24oXG4gICAgXCItLXBlZXJzIDxTdHJpbmc+XCIsXG4gICAgXCJjb21tYSBzZXBhcmF0ZWQgcGVlciBpZHNcIixcbiAgICBcIm9yZy1hLXBlZXItMCxvcmctYi1wZWVyLTAsb3JnLWMtcGVlci0wXCJcbiAgKVxuICAuYWN0aW9uKGFzeW5jIChvcHRpb25zOiBhbnkpID0+IHtcbiAgICBjb25zdCBwa2cgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcInBhY2thZ2UuanNvblwiKSwgXCJ1dGYtOFwiKVxuICAgICk7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gcGtnLnZlcnNpb247XG5cbiAgICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKFwiZGVwbG95LWNvbnRyYWN0XCIpO1xuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIGBydW5uaW5nIHdpdGggb3B0aW9uczogJHtKU09OLnN0cmluZ2lmeShvcHRpb25zKX0gZm9yICR7cGtnLm5hbWV9IHZlcnNpb24gJHt2ZXJzaW9ufWBcbiAgICApO1xuXG4gICAgY29uc3Qge1xuICAgICAgbmFtZSxcbiAgICAgIGlucHV0LFxuICAgICAgcGVlcnMsXG4gICAgICB0cmFja2VyRm9sZGVyLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgaW5jcmVtZW50VmVyc2lvbixcbiAgICAgIGNvbGxlY3Rpb25zQ29uZmlnLFxuICAgIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IHBlZXJJZHMgPSBwZWVycy5zcGxpdChcIixcIik7XG5cbiAgICBjb25zdCBjb3VudFBhdGggPSBwYXRoLnJlc29sdmUocGF0aC5qb2luKHRyYWNrZXJGb2xkZXIsIGAke25hbWV9LmNvdW50YCkpO1xuXG4gICAgbGV0IHNlcXVlbmNlOiBudW1iZXI7XG5cbiAgICB0cnkge1xuICAgICAgc2VxdWVuY2UgPSBwYXJzZUludChmcy5yZWFkRmlsZVN5bmMoY291bnRQYXRoKS50b1N0cmluZyhcInV0Zi04XCIpKTtcbiAgICAgIGlmIChpc05hTihzZXF1ZW5jZSkpIHNlcXVlbmNlID0gMTtcbiAgICAgIGVsc2Ugc2VxdWVuY2UgKz0gMTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICBzZXF1ZW5jZSA9IDE7XG4gICAgfVxuICAgIC8vXG4gICAgLy8gaWYgKGluY3JlbWVudFZlcnNpb24pIHtcbiAgICAvLyAgIHZlcnNpb24gPSB2ZXJzaW9uICsgYC0ke3NlcXVlbmNlfWA7XG4gICAgLy8gICAvLyBzZXF1ZW5jZSA9IDE7XG4gICAgLy8gfVxuXG4gICAgdHJ5IHtcbiAgICAgIGZvciAoY29uc3QgcGVlciBvZiBwZWVySWRzKSB7XG4gICAgICAgIHBhY2thZ2VDb250cmFjdChwZWVyLCBpbnB1dCwgbmFtZSwgdmVyc2lvbik7XG4gICAgICAgIGluc3RhbGxDb250cmFjdChwZWVyLCBuYW1lKTtcbiAgICAgICAgYXBwcm92ZUNvbnRyYWN0KFxuICAgICAgICAgIHBlZXIsXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBwZWVyID09PSBcIm9yZy1hLXBlZXItMFwiXG4gICAgICAgICAgICA/IFwidGxzLWNhLWNlcnQucGVtXCJcbiAgICAgICAgICAgIDogXCJvcmRlcmVyLXRscy1jYS1jZXJ0LnBlbVwiLFxuICAgICAgICAgIHNlcXVlbmNlLFxuICAgICAgICAgIHZlcnNpb24sXG4gICAgICAgICAgY29sbGVjdGlvbnNDb25maWdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoY291bnRQYXRoLCBzZXF1ZW5jZS50b1N0cmluZygpKTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgbG9nLmVycm9yKFwiRXJyb3IgZGVwbG95aW5nIGNvbnRyYWN0OlwiLCBlcnIpO1xuICAgIH1cbiAgICBjb21taXRDaGFpbmNvZGUobmFtZSwgc2VxdWVuY2UsIHZlcnNpb24sIGNvbGxlY3Rpb25zQ29uZmlnKTtcbiAgfSk7XG5cbmNvbnN0IGdldENyeXB0b01hdGVyaWFsID0gbmV3IENvbW1hbmQoKVxuICAubmFtZShcImdldC1jcnlwdG8tbWF0ZXJpYWxcIilcbiAgLmRlc2NyaXB0aW9uKFwiY29waWVzIHRoZSBjcnlwdG8gbWF0ZXJpYWwgdG8gdGhlIHNlbGVjdGVkIGZvbGRlclwiKVxuICAub3B0aW9uKFwiLS1mb2xkZXIgPFN0cmluZz5cIiwgXCJvdXRwdXQgZm9sZGVyXCIsIFwiZG9ja2VyL2RvY2tlci1kYXRhXCIpXG4gIC5vcHRpb24oXCItLW9yZyBbU3RyaW5nXVwiLCBcInRoZSBvcmcvcGVlciB0byBleHRyYWN0IGZyb21cIiwgXCJvcmctYVwiKVxuICAuYWN0aW9uKGFzeW5jIChvcHRpb25zOiBhbnkpID0+IHtcbiAgICBjb25zdCBwa2cgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcInBhY2thZ2UuanNvblwiKSwgXCJ1dGYtOFwiKVxuICAgICk7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gcGtnLnZlcnNpb247XG5cbiAgICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKFwiZ2V0LWNyeXB0by1tYXRlcmlhbFwiKTtcbiAgICBsb2cuZGVidWcoXG4gICAgICBgcnVubmluZyB3aXRoIG9wdGlvbnM6ICR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucyl9IGZvciAke3BrZy5uYW1lfSB2ZXJzaW9uICR7dmVyc2lvbn1gXG4gICAgKTtcbiAgICBjb25zdCB7IGZvbGRlciwgb3JnIH0gPSBvcHRpb25zO1xuICAgIGV4ZWNTeW5jKGBkb2NrZXIgY3AgJHtvcmd9Oi93ZWF2ZXIvY2xpZW50Ly4gJHtmb2xkZXJ9YCwge1xuICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgIH0pO1xuICB9KTtcblxuY29uc3QgZmFicmljQ21kID0gbmV3IENvbW1hbmQoKVxuICAubmFtZShcImZvci1mYWJyaWNcIilcbiAgLmNvbW1hbmQoXCJmYWJyaWNcIilcbiAgLmRlc2NyaXB0aW9uKFxuICAgIFwiZXhwb3NlcyBzZXZlcmFsIGNvbW1hbmRzIHRvIGhlbHAgbWFuYWdlIHRoZSBmYWJyaWMgaW5mcmFzdHJ1Y3R1cmVcIlxuICApO1xuXG5mYWJyaWNDbWQuYWRkQ29tbWFuZChjb21waWxlQ29tbWFuZCk7XG5mYWJyaWNDbWQuYWRkQ29tbWFuZChleHRyYWN0SW5kZXhlcyk7XG5mYWJyaWNDbWQuYWRkQ29tbWFuZChlbnN1cmVJbmZyYSk7XG5mYWJyaWNDbWQuYWRkQ29tbWFuZChkZXBsb3lDb250cmFjdCk7XG5mYWJyaWNDbWQuYWRkQ29tbWFuZChnZXRDcnlwdG9NYXRlcmlhbCk7XG5mYWJyaWNDbWQuYWRkQ29tbWFuZChleHRyYWN0Q29sbGVjdGlvbnMpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmYWJyaWMoKSB7XG4gIHJldHVybiBmYWJyaWNDbWQ7XG59XG4iXX0=
473
+ //# sourceMappingURL=cli-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-module.js","sourceRoot":"","sources":["../../src/cli-module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,YAAY,GACb,kCAAyB;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,eAAe,EACf,eAAe,EACf,eAAe,EACf,uBAAuB,EACvB,4BAA4B,GAC7B,uBAAoB;AACrB,qCAA4B;AAC5B,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EACL,kBAAkB,IAAI,aAAa,EAEnC,gBAAgB,EAChB,yBAAyB,GAC1B,sCAAmC;AAGpC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAErC,SAAS,uBAAuB;IAC9B,OAAO;QACL,IAAI,EAAE,4BAA4B;QAClC,SAAS,CAAC,MAAM,EAAE,QAAQ;YACxB,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;YAClE,MAAM,UAAU,GAAG;gBACjB,YAAY;gBACZ,GAAG,YAAY,KAAK;gBACpB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC;aACpC,CAAC;YAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;oBAChE,OAAO,SAAS,CAAC;gBACnB,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,cAAc,GAAG,IAAI,OAAO,EAAE;KACjC,IAAI,CAAC,kBAAkB,CAAC;KACxB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,OAAO,EAAE,yCAAyC,EAAE,KAAK,CAAC;KACjE,MAAM,CAAC,SAAS,EAAE,mCAAmC,EAAE,KAAK,CAAC;KAC7D,MAAM,CACL,SAAS,EACT,qDAAqD,EACrD,KAAK,CACN;KACA,MAAM,CAAC,iBAAiB,EAAE,eAAe,EAAE,iBAAiB,CAAC;KAC7D,MAAM,CAAC,UAAU,EAAE,0CAA0C,EAAE,KAAK,CAAC;KACrE,MAAM,CACL,2BAA2B,EAC3B,mEAAmE,EACnE,iBAAiB,CAClB;KACA,MAAM,CACL,wBAAwB,EACxB,sBAAsB,EACtB,gCAAgC,CACjC;KACA,MAAM,CAAC,uBAAuB,EAAE,iCAAiC,EAAE,KAAK,CAAC;KACzE,MAAM,CAAC,kBAAkB,EAAE,4BAA4B,EAAE,eAAe,CAAC;KACzE,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,EAAE,aAAa,CAAC;KACzE,MAAM,CAAC,cAAc,EAAE,4CAA4C,EAAE,KAAK,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,OAAY,EAAE,EAAE;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CACnE,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAE5B,IAAI;IACF,wCAAwC;IACxC,GAAG;IACH,wCAAwC;IACxC,KAAK;IACL,wCAAwC;IACxC,IAAI;IACJ,wCAAwC;IACxC,WAAW,EACX,MAAM;IACN,wCAAwC;IACxC,KAAK;IACL,wCAAwC;IACxC,iBAAiB;IACjB,wCAAwC;IACxC,KAAK;IACL,wCAAwC;IACxC,MAAM,EAEN,YAAY,EACZ,UAAU,GACX,GAAG,OAAO,CAAC;IACZ,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC3C,GAAG,CAAC,KAAK,CACP,yBAAyB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,IAAI,YAAY,OAAO,EAAE,CACtF,CAAC;IAEF,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAC1C,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;IAE3C,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9D,GAAG,CAAC,IAAI,CAAC,qDAAqD,MAAM,EAAE,CAAC,CAAC;IACxE,QAAQ,CAAC,UAAU,MAAM,EAAE,CAAC,CAAC;IAC7B,IAAI,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC;QAC5C,MAAM,aAAa,GAAG,EAAE,CAAC,WAAW,CAClC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC,CAC9C,CAAC;QACF,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YAClE,MAAM,UAAU,GAAG,EAAE,CAAC,cAAc,CAAC,YAAY,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACpE,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;gBACrB,MAAM,IAAI,aAAa,CACrB,EAAE,CAAC,4BAA4B,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CACpE,CAAC;YACJ,CAAC;YAED,MAAM,YAAY,GAAG,EAAE,CAAC,0BAA0B,CAChD,UAAU,CAAC,MAAM,EACjB,EAAE,CAAC,GAAG,EACN,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAC1B,SAAS,EACT,YAAY,CACb,CAAC;YACF,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC/B,MAAM,IAAI,aAAa,CACrB,YAAY,CAAC,MAAM;qBAChB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACb,EAAE,CAAC,4BAA4B,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CACzD;qBACA,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;YACJ,CAAC;YAED,MAAM,mBAAmB,GAAuB;gBAC9C,GAAG,YAAY,CAAC,OAAO;gBACvB,MAAM,EAAE,aAAa;gBACrB,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM;gBAC5B,WAAW,EAAE,KAAK;gBAClB,SAAS,EAAE,KAAK;gBAChB,aAAa,EAAE,KAAK;aACrB,CAAC;YACF,MAAM,iBAAiB,GAAG,EAAE;iBACzB,kBAAkB,CACjB;gBACE,GAAG,YAAY;gBACf,OAAO,EAAE,mBAAmB;aAC7B,EACD,UAAU,EACV,CAAC,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAClC;iBACA,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YAEhD,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,MAAM,IAAI,aAAa,CACrB,oDAAoD,UAAU,EAAE,CACjE,CAAC;YACJ,CAAC;YAED,4BAA4B,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;YAChE,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC;gBACnC,KAAK,EAAE,iBAAiB;gBACxB,OAAO,EAAE;oBACP,uBAAuB,EAAE;oBACzB,OAAO,CAAC;wBACN,iBAAiB,EAAE,IAAI;wBACvB,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;wBACpB,MAAM,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,CAAC,IAAI,EAAE;qBAC5D,CAAC;iBACH;aACF,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,CACN,uBAAuB,MAAM,cAAc,YAAY,CAAC,IAAI,CAAC,KAAK,CACnE,CAAC;YACF,MAAM,eAAe,CAAC,KAAK,CAAC;gBAC1B,IAAI,EAAE,GAAG,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK;gBAC1C,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK;gBAChC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;gBACxC,sBAAsB,EAAE,CAAC,kBAAkB,EAAE,aAAa,EAAE,EAAE;oBAC5D,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CACrC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAC3B,kBAAkB,CACnB,CAAC;oBAEF,IAAI,kBAAkB,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;wBACjD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CACpB,SAAS,EACT,IAAI;6BACD,QAAQ,CAAC,aAAa,EAAE,kBAAkB,CAAC;6BAC3C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;6BACf,IAAI,CAAC,GAAG,CAAC,CACb,CAAC;oBACJ,CAAC;oBAED,OAAO,kBAAkB,CAAC;gBAC5B,CAAC;aACF,CAAC,CAAC;YACH,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,4BAA4B,CAAC,YAAY,EAAE;YACzC,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM;YAC5B,WAAW,EAAE,KAAK;YAClB,SAAS,EAAE,UAAU;YACrB,aAAa,EAAE,UAAU;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG;QACd,KAAK,EAAE,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC;QAC5C,WAAW,EAAE,iDAAiD;QAC9D,aAAa,EAAE,oCAAoC;QACnD,KAAK,EAAE,uCAAuC;QAC9C,IAAI,EAAE,0BAA0B;KACjC,CAAC;IAEF,MAAM,eAAe,GAAG,GAAG,CAAC;IAE5B,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC;IAC5B,eAAe,CAAC,WAAW,GAAG,WAAW,CAAC;IAC1C,eAAe,CAAC,OAAO,GAAG,OAAO,CAAC;IAElC,OAAO,eAAe,CAAC,IAAI,CAAC;IAC5B,OAAO,eAAe,CAAC,KAAK,CAAC;IAC7B,OAAO,eAAe,CAAC,OAAO,CAAC;IAC/B,eAAe,CAAC,IAAI,GAAG,MAAM;QAC3B,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK;QAC5B,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC;IAExB,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EACjC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAChC,CAAC;IAEF,GAAG,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IACvD,QAAQ,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IACzC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,QAAQ,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IACjD,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAClC,QAAQ,CAAC,+BAA+B,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3D,GAAG,CAAC,IAAI,CACN,YAAY,IAAI,8BAA8B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CACrE,CAAC;IACF,IAAI,GAAG,EAAE,CAAC;QACR,GAAG,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;QACpE,QAAQ,CAAC,aAAa,EAAE;YACtB,GAAG,EAAE,MAAM;YACX,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE;SAChD,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,cAAc,GAAG,IAAI,OAAO,EAAE;KACjC,OAAO,CAAC,iBAAiB,CAAC;KAC1B,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;KAC3C,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;KAC/C,MAAM,CAAC,mBAAmB,EAAE,+CAA+C,CAAC;KAC5E,WAAW,CACV,2EAA2E,CAC5E;KACA,MAAM,CAAC,KAAK,EAAE,OAAY,EAAE,EAAE;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CACnE,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAE5B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC1C,GAAG,CAAC,KAAK,CACP,yBAAyB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,IAAI,YAAY,OAAO,EAAE,CACtF,CAAC;IAEF,wCAAwC;IACxC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEvC,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,uBAAuB,MAAM,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,MAAM,UAAU,GAAwB,EAAE,CAAC;IAE3C,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;QAClB,MAAM,IAAI,aAAa,CAAC,8BAA8B,CAAC,CAAC;IAE1D,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,GAAG,CAAC,OAAO,CAAC,gCAAgC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC,CAAC;QACH,uBAAuB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC9C,GAAG,CAAC,OAAO,CAAC,SAAS,cAAc,CAAC,MAAM,oBAAoB,CAAC,CAAC;IAChE,GAAG,CAAC,OAAO,CAAC,SAAS,WAAW,CAAC,MAAM,wBAAwB,CAAC,CAAC;IACjE,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChD,GAAG,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACvD,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEL,MAAM,kBAAkB,GAAG,IAAI,OAAO,EAAE;KACrC,OAAO,CAAC,qBAAqB,CAAC;KAC9B,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;KAC3C,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;KAC/C,MAAM,CAAC,mBAAmB,EAAE,+CAA+C,CAAC;KAC5E,MAAM,CAAC,mBAAmB,EAAE,mCAAmC,CAAC;KAChE,MAAM,CAAC,sBAAsB,EAAE,cAAc,CAAC;KAC9C,MAAM,CACL,sBAAsB,EACtB,6KAA6K,CAC9K;KACA,WAAW,CACV,2EAA2E,CAC5E;KACA,MAAM,CAAC,KAAK,EAAE,OAAY,EAAE,EAAE;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CACnE,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAE5B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAC9C,GAAG,CAAC,KAAK,CACP,yBAAyB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,IAAI,YAAY,OAAO,EAAE,CACtF,CAAC;IAEF,wCAAwC;IACxC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAE1D,IAAI,CAAC;QACH,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACjD,6DAA6D;QAC/D,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,cAAc;QAChB,CAAC;IACH,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,MAAM,IAAI,kBAAkB,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,uBAAuB,MAAM,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;QAClB,MAAM,IAAI,aAAa,CAAC,8BAA8B,CAAC,CAAC;IAE1D,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CACpC,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QACrB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;QACtB,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAC5B,CAAC;IACF,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;QAC7B,GAAG,CAAC,IAAI,CACN,qEAAqE,CACtE,CAAC;QACF,OAAO;IACT,CAAC;IAED,KAAK,UAAU,OAAO,CAAC,UAAqB;QAC1C,MAAM,IAAI,GAKJ,MAAM,OAAO,CAAC,GAAG,CACrB,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACnC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACzC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAE3C,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,MAAM,WAAW,GAAwB,EAAE,CAAC;YAC5C,KAAK,MAAM,GAAG,IAAI,UAAU,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;gBAC7C,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,aAAa,CACpC,KAAK,EACL,CAAC,GAAG,EAAE,SAAS,CAAC,EAChB,EAAE;gBACF,IAAI;gBACJ,yDAAyD;gBACzD,2DAA2D;gBAC3D,KAAK;gBACL,CAAC,CAAC,UAAU,CACb,CAAC;YACJ,CAAC;YAED,IAAI,gBAAgB,GAAkC,SAAS,CAAC;YAEhE,IAAI,UAAU,EAAE,CAAC;gBACf,WAAW,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBACtD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;oBAC/C,WAAW,CAAC,SAAS,CAAC,CAAC,QAAQ,GAAG,WAAW,CAC3C,GAAG,CACJ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE;wBAC5B,IAAI,CAAC,CAAC,IAAI,KAAM,UAAU,CAAC,QAAmB;4BAAE,OAAO,IAAI,CAAC;wBAC5D,gBAAgB,GAAG,CAAQ,CAAC;wBAC5B,OAAO,KAAK,CAAC;oBACf,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;iBAC7C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;iBACtB,IAAI,EAAE,CAAC,MAAM,CAAC;YACjB,IAAI,aAAa;gBACf,GAAG;qBACA,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;qBAC3B,IAAI,CAAC,SAAS,aAAa,gCAAgC,CAAC,CAAC;YAClE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;iBAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;iBACpB,IAAI,EAAE,CAAC,MAAM,CAAC;YAEjB,GAAG;iBACA,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;iBAC3B,IAAI,CAAC,SAAS,WAAW,+BAA+B,CAAC,CAAC;YAC7D,IAAI,gBAAgB;gBAClB,GAAG;qBACA,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;qBAC3B,IAAI,CACH,+BAA+B,UAAU,EAAE,QAAkB,EAAE,CAChE,CAAC;YAEN,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;iBACvC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;iBACxD,IAAI,EAAE,CAAC;YACV,IAAI,OAAO,GAAyB,EAAE,CAAC;YACvC,IAAI,UAAU,GAAuB,EAAE,CAAC;YACxC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,GAAG;qBACA,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;qBAC3B,OAAO,CAAC,oCAAoC,CAAC,CAAC;gBACjD,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;gBACtC,GAAG;qBACA,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;qBAC3B,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;gBAC3C,UAAU,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;gBAC5C,GAAG;qBACA,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;qBAC3B,IAAI,CAAC,SAAS,UAAU,CAAC,MAAM,cAAc,CAAC,CAAC;YACpD,CAAC;YACD,OAAO;gBACL,OAAO;gBACP,UAAU;gBACV,WAAW,EAAE,OAAO;gBACpB,MAAM,EAAE,gBAAgB;aACzB,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAE9C,MAAM,aAAa,GAAG;QACpB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1D,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;QACxC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;KAC9B,CAAC;IAEzB,MAAM,kBAAkB,GAAG;QACzB,GAAG,IAAI,GAAG,CACR,aAAa,CAAC,GAAG,CAAC,CAAC,IAAuB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAClE,CAAC,MAAM,EAAE;KACX,CAAC;IAEF,IAAI,kBAAkB,CAAC,MAAM,EAAE,CAAC;QAC9B,gBAAgB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CACrC,MAAM,EACN,UAAU,EACV,yBAAyB,CAC1B,CAAC;QACF,MAAM,yBAAyB,GAAG,IAAI,CAAC,IAAI,CACzC,MAAM,EACN,yBAAyB,CAC1B,CAAC;QACF,EAAE,CAAC,YAAY,CAAC,qBAAqB,EAAE,yBAAyB,CAAC,CAAC;QAClE,GAAG,CAAC,IAAI,CACN,UAAU,aAAa,CAAC,MAAM,mBAAmB,qBAAqB,EAAE,CACzE,CAAC;QACF,GAAG,CAAC,IAAI,CACN,gCAAgC,yBAAyB,6BAA6B,CACvF,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACjB,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YACvD,MAAM,OAAO,GAAwB,CAAC,GAAG,WAAW,EAAE,MAAM,CAAC,CAAC,MAAM,CAClE,OAAO,CACe,CAAC;YACzB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACpB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBACtC,yBAAyB,CAAC,UAAU,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC5D,GAAG,CAAC,IAAI,CACN,UAAU,OAAO,EAAE,MAAM,IAAI,CAAC,gBAAgB,UAAU,EAAE,MAAM,IAAI,CAAC,8BAA8B,CAAC,CAAC,IAAI,EAAE,CAC5G,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,WAAW,GAAG,IAAI,OAAO,EAAE;KAC9B,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,mDAAmD,CAAC;KAChE,MAAM,CACL,sBAAsB,EACtB,mDAAmD,EACnD,mBAAmB,CACpB;KACA,MAAM,CAAC,oBAAoB,EAAE,uCAAuC,EAAE,MAAM,CAAC;KAC7E,MAAM,CAAC,qBAAqB,EAAE,qCAAqC,EAAE,IAAI,CAAC;KAC1E,MAAM,CAAC,KAAK,EAAE,OAAY,EAAE,EAAE;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CACnE,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAE5B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACtC,GAAG,CAAC,KAAK,CACP,yBAAyB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,IAAI,YAAY,OAAO,EAAE,CACtF,CAAC;IACF,wCAAwC;IACxC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC/C,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;IACpC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEpC,MAAM,0BAA0B,CAAC,mBAAmB,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAEzE,GAAG,CAAC,IAAI,CACN,8DAA8D,SAAS,IAAI,CAC5E,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL,MAAM,cAAc,GAAG,IAAI,OAAO,EAAE;KACjC,IAAI,CAAC,iBAAiB,CAAC;KACvB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;KACvD,MAAM,CAAC,kBAAkB,EAAE,cAAc,CAAC;KAC1C,MAAM,CACL,+BAA+B,EAC/B,kEAAkE,CACnE;KACA,MAAM,CACL,6BAA6B,EAC7B,sEAAsE,EACtE,KAAK,CACN;KACA,MAAM,CACL,0BAA0B,EAC1B,4EAA4E,EAC5E,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,mBAAmB,CAAC,CACtE;KACA,MAAM,CACL,kBAAkB,EAClB,0BAA0B,EAC1B,wCAAwC,CACzC;KACA,MAAM,CAAC,KAAK,EAAE,OAAY,EAAE,EAAE;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CACnE,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAE5B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC1C,GAAG,CAAC,KAAK,CACP,yBAAyB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,IAAI,YAAY,OAAO,EAAE,CACtF,CAAC;IAEF,MAAM,EACJ,IAAI,EACJ,KAAK,EACL,KAAK,EACL,aAAa;IACb,6DAA6D;IAC7D,gBAAgB,EAChB,iBAAiB,GAClB,GAAG,OAAO,CAAC;IACZ,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC;IAE1E,IAAI,QAAgB,CAAC;IAErB,IAAI,CAAC;QACH,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAClE,IAAI,KAAK,CAAC,QAAQ,CAAC;YAAE,QAAQ,GAAG,CAAC,CAAC;;YAC7B,QAAQ,IAAI,CAAC,CAAC;QACnB,6DAA6D;IAC/D,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,QAAQ,GAAG,CAAC,CAAC;IACf,CAAC;IACD,EAAE;IACF,0BAA0B;IAC1B,wCAAwC;IACxC,qBAAqB;IACrB,IAAI;IAEJ,IAAI,CAAC;QACH,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC5C,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC5B,eAAe,CACb,IAAI,EACJ,IAAI,EACJ,IAAI,KAAK,cAAc;gBACrB,CAAC,CAAC,iBAAiB;gBACnB,CAAC,CAAC,yBAAyB,EAC7B,QAAQ,EACR,OAAO,EACP,iBAAiB,CAClB,CAAC;QACJ,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,GAAG,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEL,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAAE;KACpC,IAAI,CAAC,qBAAqB,CAAC;KAC3B,WAAW,CAAC,mDAAmD,CAAC;KAChE,MAAM,CAAC,mBAAmB,EAAE,eAAe,EAAE,oBAAoB,CAAC;KAClE,MAAM,CAAC,gBAAgB,EAAE,8BAA8B,EAAE,OAAO,CAAC;KACjE,MAAM,CAAC,KAAK,EAAE,OAAY,EAAE,EAAE;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CACnE,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAE5B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAC9C,GAAG,CAAC,KAAK,CACP,yBAAyB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,IAAI,YAAY,OAAO,EAAE,CACtF,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAChC,QAAQ,CAAC,aAAa,GAAG,qBAAqB,MAAM,EAAE,EAAE;QACtD,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;KACnB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,MAAM,SAAS,GAAG,IAAI,OAAO,EAAE;KAC5B,IAAI,CAAC,YAAY,CAAC;KAClB,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CACV,mEAAmE,CACpE,CAAC;AAEJ,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACrC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACrC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAClC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACrC,SAAS,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACxC,SAAS,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;AAEzC,MAAM,CAAC,OAAO,UAAU,MAAM;IAC5B,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -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=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFNUIsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxnQkFBd0IsbUJBQW1CO0lBRTNDLElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FDckIsa0JBQWtCLGFBQWEsaUNBQWlDLENBQ2pFO2FBQ0UsUUFBUSxFQUFFO2FBQ1YsSUFBSSxFQUFFLENBQUM7UUFFVixPQUFPLE1BQU0sS0FBSyxHQUFHLENBQUM7SUFDeEIsQ0FBQztJQUFDLE9BQU8sR0FBUSxFQUFFLENBQUM7UUFDbEIsT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsMEJBQTBCLENBQzlDLGdCQUF3QixtQkFBbUIsRUFDM0MsVUFBa0IsSUFBSSxFQUN0QixXQUFtQixFQUFFO0lBRXJCLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQzdDLElBQUksRUFBRSxRQUFRLElBQUksQ0FBQztZQUFFLE1BQU0sSUFBSSxhQUFhLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUUxRSxPQUFPLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDckQsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMscUNBQXFDO0lBQ3pGLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsVUFBa0IsRUFDbEIsY0FBc0IsRUFDdEIsWUFBb0IsRUFDcEIsVUFBa0IsS0FBSztJQUV2QixRQUFRLENBQUMsZUFBZSxVQUFVOzBDQUNNLGNBQWM7O3NDQUVsQixZQUFZO3VCQUMzQixZQUFZOzBCQUNULE9BQU87S0FDNUIsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsVUFBa0IsRUFBRSxZQUFvQjtJQUN0RSxRQUFRLENBQ04sZUFBZSxVQUFVLDBGQUEwRixZQUFZLFNBQVMsQ0FDekksQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUM3QixVQUFrQixFQUNsQixZQUFvQixFQUNwQixXQUFtQixFQUNuQixXQUFtQixDQUFDLEVBQ3BCLFVBQWtCLEtBQUssRUFDdkIsaUJBQTBCO0lBRTFCLE1BQU0sZUFBZSxHQUFHLGlCQUFpQjtRQUN2QyxDQUFDLENBQUMsMEJBQTBCLGlCQUFpQixHQUFHO1FBQ2hELENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDUCxRQUFRLENBQUMsZUFBZSxVQUFVOzs7dUJBR2IsWUFBWTswQkFDVCxPQUFPO2lCQUNoQixRQUFRLEdBQUcsZUFBZTs7c0NBRUwsV0FBVyxFQUFFLENBQUMsQ0FBQztBQUNyRCxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsY0FBc0IsRUFDdEIsWUFBb0IsRUFDcEIsVUFBa0IsS0FBSyxFQUN2QixRQUFrQixDQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxDQUFDO0lBRWxFLElBQUksUUFBZ0IsQ0FBQztJQUNyQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUM1QixJQUFJLENBQUMsSUFBSSxDQUNQLEdBQUcsU0FBUyxFQUFFLEVBQ2QsSUFBSSxFQUNKLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsR0FBRyxZQUFZLFFBQVEsQ0FDeEIsQ0FDRixDQUFDO0lBQ0YsSUFBSSxDQUFDO1FBQ0gsUUFBUSxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLDZEQUE2RDtJQUMvRCxDQUFDO0lBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztRQUNwQixRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUNELEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBRWpELElBQUksQ0FBQztRQUNILEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsZUFBZSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzdELGVBQWUsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDcEMsZUFBZSxDQUNiLElBQUksRUFDSixZQUFZLEVBQ1osSUFBSSxLQUFLLGNBQWMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixFQUN2RSxRQUFRLEVBQ1IsT0FBTyxDQUNSLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sR0FBUSxFQUFFLENBQUM7UUFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEQsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUM3QixZQUFvQixFQUNwQixXQUFtQixDQUFDLEVBQ3BCLFVBQWtCLEtBQUssRUFDdkIsaUJBQTBCO0lBRTFCLE1BQU0sZUFBZSxHQUFHLGlCQUFpQjtRQUN2QyxDQUFDLENBQUMsMEJBQTBCLGlCQUFpQixHQUFHO1FBQ2hELENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDUCxRQUFRLENBQUM7Ozt1QkFHWSxZQUFZOzBCQUNULE9BQU87aUJBQ2hCLFFBQVEsR0FBRyxlQUFlOzs7OzBIQUkrRSxDQUFDLENBQUM7QUFDNUgsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsdUJBQXVCLENBQzNDLFlBQW9CLEVBQ3BCLGFBQXFCLGNBQWMsRUFDbkMsVUFBa0IsaUJBQWlCLEVBQ25DLE9BQU8sR0FBRyxDQUFDO0lBRVgsSUFBSSxDQUFDO1FBQ0gsOENBQThDO1FBQzlDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDbkMsUUFBUSxFQUFFLGFBQWE7WUFDdkIsSUFBSSxFQUFFLEVBQUU7U0FDVCxDQUFDLENBQUM7UUFFSCxJQUFJLE9BQU8sR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUNqQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCx1QkFBdUI7UUFDdkIsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUNsQixlQUFlLFVBQVU7O2FBRWxCLFlBQVk7Y0FDWCxhQUFhO3NDQUNXLE9BQU8sRUFBRSxDQUMxQyxDQUFDO1FBRUYsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUUxQyxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckMsNkRBQTZEO0lBQy9ELENBQUM7SUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUNoRCxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQ0FBcUM7UUFDcEYsT0FBTyx1QkFBdUIsQ0FDNUIsWUFBWSxFQUNaLFVBQVUsRUFDVixPQUFPLEVBQ1AsT0FBTyxFQUFFLENBQ1YsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLElBQUksQ0FBQyxHQUFXO0lBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkNBQTJDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDL0QsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDcEIsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQzdCLFlBQW9CLEVBQ3BCLFlBQW9CLEVBQ3BCLElBQVcsRUFDWCxZQUFpQixFQUFFLEVBQ25CLGFBQXFCLGNBQWMsRUFDbkMsTUFBYyxpQkFBaUI7SUFFL0IsOENBQThDO0lBQzlDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDbkMsUUFBUSxFQUFFLFlBQVk7UUFDdEIsSUFBSSxFQUFFLElBQUk7S0FDWCxDQUFDLENBQUM7SUFFSCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hELE1BQU0sZUFBZSxHQUFHLGdCQUFnQixhQUFhLEdBQUcsQ0FBQztJQUV6RCx1QkFBdUI7SUFDdkIsT0FBTyxRQUFRLENBQ2IsZUFBZSxVQUFVOztTQUVwQixZQUFZO1VBQ1gsYUFBYTs7Ozs7Ozs7a0NBUVcsR0FBRztNQUMvQixTQUFTLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ3JDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsWUFBb0IsRUFDcEIsWUFBb0IsRUFDcEIsSUFBVyxFQUNYLGFBQXFCLGNBQWMsRUFDbkMsTUFBYyxpQkFBaUI7SUFFL0IsSUFBSSxDQUFDO1FBQ0gsOENBQThDO1FBQzlDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDbkMsUUFBUSxFQUFFLFlBQVk7WUFDdEIsSUFBSSxFQUFFLElBQUk7U0FDWCxDQUFDLENBQUM7UUFFSCx1QkFBdUI7UUFDdkIsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUNsQixlQUFlLFVBQVU7O2FBRWxCLFlBQVk7Y0FDWCxhQUFhO3lCQUNGLEdBQUcsRUFBRSxDQUN6QixDQUFDO1FBRUYsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFM0MsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUFDLE9BQU8sR0FBUSxFQUFFLENBQUM7UUFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sR0FBRyxDQUFDO0lBQ1osQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLFlBQW9CLEVBQ3BCLFlBQW9CLEVBQ3BCLElBQVcsRUFDWCxZQUFpQixFQUFFLEVBQ25CLGFBQXFCLGNBQWMsRUFDbkMsTUFBYyxpQkFBaUI7SUFFL0IsOENBQThDO0lBQzlDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDbkMsUUFBUSxFQUFFLFlBQVk7UUFDdEIsSUFBSSxFQUFFLElBQUk7S0FDWCxDQUFDLENBQUM7SUFFSCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hELE1BQU0sZUFBZSxHQUFHLGdCQUFnQixhQUFhLEdBQUcsQ0FBQztJQUV6RCx1QkFBdUI7SUFDdkIsT0FBTyxRQUFRLENBQ2IsZUFBZSxVQUFVOztTQUVwQixZQUFZO1VBQ1gsYUFBYTs7OztrQ0FJVyxHQUFHO01BQy9CLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDckMsQ0FBQztJQUVGLHdDQUF3QztJQUN4QywwREFBMEQ7SUFDMUQsc0NBQXNDO0lBQ3RDLDBEQUEwRDtBQUM1RCxDQUFDO0FBRUQsTUFBTSxDQUFOLElBQVksY0F1Qlg7QUF2QkQsV0FBWSxjQUFjO0lBQ3hCLHVOQUU2RSxDQUFBO0lBQzdFLDJjQU8yQixDQUFBO0lBQzNCLGlnQkFPMkIsQ0FBQTtJQUMzQix5UkFFNEUsQ0FBQTtBQUM5RSxDQUFDLEVBdkJXLGNBQWMsS0FBZCxjQUFjLFFBdUJ6QjtBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsS0FBYyxFQUNkLEtBQWM7SUFFZCxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1YsT0FBTyxLQUFLO1lBQ1YsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxpQkFBaUI7WUFDbEMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO0FBQ25FLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLEtBQStCO0lBQ3hELE1BQU0sSUFBSSxHQUE2QjtRQUNyQyxvQkFBb0IsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5QixtQkFBbUIsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLG1CQUFtQjtRQUMvQyxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPO0tBQ2pDLENBQUM7SUFDRixPQUFPLEVBQUUsQ0FBQyxvQ0FBb0MsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVELE1BQU0sVUFBVSw0QkFBNEIsQ0FDMUMsWUFBb0IsRUFDcEIsU0FBc0M7SUFFdEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUM7UUFDakQsQ0FBQyxDQUFDLFlBQVk7UUFDZCxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFFOUMsNEJBQTRCO0lBQzVCLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckUsSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELGdFQUFnRTtJQUNoRSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQywwQkFBMEIsQ0FDMUMsVUFBVSxDQUFDLE1BQU0sRUFDakIsRUFBRSxDQUFDLEdBQUcsRUFDTixTQUFTO0lBQ1QsbUJBQW1CLENBQUMsU0FBUyxFQUM3QixhQUFhLENBQ2QsQ0FBQztJQUVGLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsTUFBTSxPQUFPLEdBQXVCO1FBQ2xDLEdBQUcsTUFBTSxDQUFDLE9BQU87UUFDakIsR0FBRyxTQUFTO0tBQ2IsQ0FBQztJQUVGLG9FQUFvRTtJQUNwRSx1Q0FBdUM7SUFDdkMsSUFBSSxPQUFPLENBQUMsTUFBTTtRQUFFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdFLElBQUksT0FBTyxDQUFDLE9BQU87UUFDakIsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFN0QsMkJBQTJCO0lBQzNCLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUM7UUFDL0IsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1FBQzNCLE9BQU87UUFDUCxpQkFBaUIsRUFBRSxNQUFNLENBQUMsaUJBQWlCO0tBQzVDLENBQUMsQ0FBQztJQUVILE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNuQixvRUFBb0U7UUFDcEUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEMsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7SUFDckQsSUFBSSxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7SUFDakUsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZGlkSW5mcmFzdHJ1Y3R1cmVCb290KFxuICBjb250YWluZXJOYW1lOiBzdHJpbmcgPSBcImJvb3Qtb3JnLWMtcGVlci0wXCJcbik6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGNvbnN0IG91dHB1dCA9IGV4ZWNTeW5jKFxuICAgICAgYGRvY2tlciBpbnNwZWN0ICR7Y29udGFpbmVyTmFtZX0gLS1mb3JtYXQ9J3t7LlN0YXRlLkV4aXRDb2RlfX0nYFxuICAgIClcbiAgICAgIC50b1N0cmluZygpXG4gICAgICAudHJpbSgpO1xuXG4gICAgcmV0dXJuIG91dHB1dCA9PT0gXCIwXCI7XG4gIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgY29uc29sZS5lcnJvcihcIkVycm9yIGluc3BlY3RpbmcgY29udGFpbmVyOlwiLCBlcnIubWVzc2FnZSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbnN1cmVJbmZyYXN0cnVjdHVyZUJvb3RlZChcbiAgY29udGFpbmVyTmFtZTogc3RyaW5nID0gXCJib290LW9yZy1jLXBlZXItMFwiLFxuICB0aW1lb3V0OiBudW1iZXIgPSA1MDAwLFxuICBhdHRlbXB0czogbnVtYmVyID0gMTBcbik6IFByb21pc2U8dm9pZD4ge1xuICB3aGlsZSAoIWRpZEluZnJhc3RydWN0dXJlQm9vdChjb250YWluZXJOYW1lKSkge1xuICAgIGlmICgtLWF0dGVtcHRzIDw9IDApIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiZXhjZWVkZWQgYWxsb3dlZCBhdHRlbXB0c1wiKTtcblxuICAgIGNvbnNvbGUubG9nKFwiV2FpdGluZyBmb3IgaW5mcmFzdHJ1Y3R1cmUgdG8gYm9vdC4uLlwiKTtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCB0aW1lb3V0KSk7IC8vIFdhaXQgZm9yIDUgc2Vjb25kcyBiZWZvcmUgcmV0cnlpbmdcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFja2FnZUNvbnRyYWN0KFxuICBkb2NrZXJOYW1lOiBzdHJpbmcsXG4gIGNvbnRyYWN0Rm9sZGVyOiBzdHJpbmcsXG4gIGNvbnRyYWN0TmFtZTogc3RyaW5nLFxuICB2ZXJzaW9uOiBzdHJpbmcgPSBcIjEuMFwiXG4pOiB2b2lkIHtcbiAgZXhlY1N5bmMoYGRvY2tlciBleGVjICR7ZG9ja2VyTmFtZX0gbm9kZSAuL3dlYXZlci9saWIvY29yZS9jbGkuY2pzIHBhY2thZ2UtY2hhaW5jb2RlIC1kIFxcXG4gICAgLS1jaGFpbmNvZGUtcGF0aCAuL3dlYXZlci9jaGFpbmNvZGUvJHtjb250cmFjdEZvbGRlcn0gXFxcbiAgICAtLWxhbmcgbm9kZSBcXFxuICAgIC0tY2hhaW5jb2RlLW91dHB1dCAvd2VhdmVyL3BlZXIvJHtjb250cmFjdE5hbWV9LnRhci5neiBcXFxuICAgIC0tY2hhaW5jb2RlLW5hbWUgJHtjb250cmFjdE5hbWV9IFxcXG4gICAgLS1jaGFpbmNvZGUtdmVyc2lvbiAke3ZlcnNpb259IC1zXG4gICAgYCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YWxsQ29udHJhY3QoZG9ja2VyTmFtZTogc3RyaW5nLCBjb250cmFjdE5hbWU6IHN0cmluZykge1xuICBleGVjU3luYyhcbiAgICBgZG9ja2VyIGV4ZWMgJHtkb2NrZXJOYW1lfSBub2RlIC4vd2VhdmVyL2xpYi9jb3JlL2NsaS5janMgaW5zdGFsbC1jaGFpbmNvZGUgLWQgLXMgLS1jaGFpbmNvZGUtcGF0aCAuL3dlYXZlci9wZWVyLyR7Y29udHJhY3ROYW1lfS50YXIuZ3pgXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHByb3ZlQ29udHJhY3QoXG4gIGRvY2tlck5hbWU6IHN0cmluZyxcbiAgY29udHJhY3ROYW1lOiBzdHJpbmcsXG4gIHRsc0NlcnROYW1lOiBzdHJpbmcsXG4gIHNlcXVlbmNlOiBudW1iZXIgPSAxLFxuICB2ZXJzaW9uOiBzdHJpbmcgPSBcIjEuMFwiLFxuICBjb2xsZWN0aW9uc0NvbmZpZz86IHN0cmluZ1xuKSB7XG4gIGNvbnN0IGNvbGxlY3Rpb25zRmxhZyA9IGNvbGxlY3Rpb25zQ29uZmlnXG4gICAgPyBgIC0tY29sbGVjdGlvbnMtY29uZmlnIFwiJHtjb2xsZWN0aW9uc0NvbmZpZ31cImBcbiAgICA6IFwiXCI7XG4gIGV4ZWNTeW5jKGBkb2NrZXIgZXhlYyAke2RvY2tlck5hbWV9IG5vZGUgLi93ZWF2ZXIvbGliL2NvcmUvY2xpLmNqcyBhcHByb3ZlLWNoYWluY29kZSAtZCAtcyBcXFxuICAgIC0tb3JkZXJlci1hZGRyZXNzIG9yZy1hLW9yZGVyZXItMDo3MDIxIFxcXG4gICAgLS1jaGFubmVsLWlkIHNpbXBsZS1jaGFubmVsIFxcXG4gICAgLS1jaGFpbmNvZGUtbmFtZSAke2NvbnRyYWN0TmFtZX0gXFxcbiAgICAtLWNoYWluY29kZS12ZXJzaW9uICR7dmVyc2lvbn0gXFxcbiAgICAtLXNlcXVlbmNlICR7c2VxdWVuY2V9JHtjb2xsZWN0aW9uc0ZsYWd9IFxcXG4gICAgLS1lbmFibGUtdGxzIFxcXG4gICAgLS10bHMtY2EtY2VydC1maWxlIC93ZWF2ZXIvcGVlci8ke3Rsc0NlcnROYW1lfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVwbG95Q29udHJhY3QoXG4gIGNvbnRyYWN0Rm9sZGVyOiBzdHJpbmcsXG4gIGNvbnRyYWN0TmFtZTogc3RyaW5nLFxuICB2ZXJzaW9uOiBzdHJpbmcgPSBcIjEuMFwiLFxuICBwZWVyczogc3RyaW5nW10gPSBbXCJvcmctYS1wZWVyLTBcIiwgXCJvcmctYi1wZWVyLTBcIiwgXCJvcmctYy1wZWVyLTBcIl1cbikge1xuICBsZXQgc2VxdWVuY2U6IG51bWJlcjtcbiAgY29uc3QgY291bnRQYXRoID0gcGF0aC5yZXNvbHZlKFxuICAgIHBhdGguam9pbihcbiAgICAgIGAke19fZGlybmFtZX1gLFxuICAgICAgXCIuLlwiLFxuICAgICAgXCJpbnRlZ3JhdGlvblwiLFxuICAgICAgXCJjaGFpbmNvZGVUcmFja2Vyc1wiLFxuICAgICAgYCR7Y29udHJhY3ROYW1lfS5jb3VudGBcbiAgICApXG4gICk7XG4gIHRyeSB7XG4gICAgc2VxdWVuY2UgPSBwYXJzZUludChmcy5yZWFkRmlsZVN5bmMoY291bnRQYXRoKS50b1N0cmluZyhcInV0Zi04XCIpKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICBzZXF1ZW5jZSA9IDE7XG4gIH1cbiAgZnMud3JpdGVGaWxlU3luYyhjb3VudFBhdGgsIHNlcXVlbmNlLnRvU3RyaW5nKCkpO1xuXG4gIHRyeSB7XG4gICAgZm9yIChjb25zdCBwZWVyIG9mIHBlZXJzKSB7XG4gICAgICBwYWNrYWdlQ29udHJhY3QocGVlciwgY29udHJhY3RGb2xkZXIsIGNvbnRyYWN0TmFtZSwgdmVyc2lvbik7XG4gICAgICBpbnN0YWxsQ29udHJhY3QocGVlciwgY29udHJhY3ROYW1lKTtcbiAgICAgIGFwcHJvdmVDb250cmFjdChcbiAgICAgICAgcGVlcixcbiAgICAgICAgY29udHJhY3ROYW1lLFxuICAgICAgICBwZWVyID09PSBcIm9yZy1hLXBlZXItMFwiID8gXCJ0bHMtY2EtY2VydC5wZW1cIiA6IFwib3JkZXJlci10bHMtY2EtY2VydC5wZW1cIixcbiAgICAgICAgc2VxdWVuY2UsXG4gICAgICAgIHZlcnNpb25cbiAgICAgICk7XG4gICAgfVxuICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKFwiRXJyb3IgZGVwbG95aW5nIGNvbnRyYWN0OlwiLCBlcnIubWVzc2FnZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbW1pdENoYWluY29kZShcbiAgY29udHJhY3ROYW1lOiBzdHJpbmcsXG4gIHNlcXVlbmNlOiBudW1iZXIgPSAxLFxuICB2ZXJzaW9uOiBzdHJpbmcgPSBcIjEuMFwiLFxuICBjb2xsZWN0aW9uc0NvbmZpZz86IHN0cmluZ1xuKTogdm9pZCB7XG4gIGNvbnN0IGNvbGxlY3Rpb25zRmxhZyA9IGNvbGxlY3Rpb25zQ29uZmlnXG4gICAgPyBgIC0tY29sbGVjdGlvbnMtY29uZmlnIFwiJHtjb2xsZWN0aW9uc0NvbmZpZ31cImBcbiAgICA6IFwiXCI7XG4gIGV4ZWNTeW5jKGBkb2NrZXIgZXhlYyBvcmctYS1wZWVyLTAgbm9kZSAuL3dlYXZlci9saWIvY29yZS9jbGkuY2pzIGNvbW1pdC1jaGFpbmNvZGUgLWQgLXMgXFxcbiAgICAtLW9yZGVyZXItYWRkcmVzcyBvcmctYS1vcmRlcmVyLTA6NzAyMSBcXFxuICAgIC0tY2hhbm5lbC1pZCBzaW1wbGUtY2hhbm5lbCBcXFxuICAgIC0tY2hhaW5jb2RlLW5hbWUgJHtjb250cmFjdE5hbWV9IFxcXG4gICAgLS1jaGFpbmNvZGUtdmVyc2lvbiAke3ZlcnNpb259IFxcXG4gICAgLS1zZXF1ZW5jZSAke3NlcXVlbmNlfSR7Y29sbGVjdGlvbnNGbGFnfSBcXFxuICAgIC0tZW5hYmxlLXRscyBcXFxuICAgIC0tdGxzLWNhLWNlcnQtZmlsZSAvd2VhdmVyL3BlZXIvdGxzLWNhLWNlcnQucGVtIFxcXG4gICAgLS1wZWVyLWFkZHJlc3NlcyBvcmctYS1wZWVyLTA6NzAzMSxvcmctYi1wZWVyLTA6NzAzMixvcmctYy1wZWVyLTA6NzAzMyBcXFxuICAgIC0tcGVlci1yb290LXRscyAuL3dlYXZlci9wZWVyL3Rscy1jYS1jZXJ0LnBlbSwuL3dlYXZlci9wZWVyL29yZy1iLXRscy1jYS1jZXJ0LnBlbSwuL3dlYXZlci9wZWVyL29yZy1jLXRscy1jYS1jZXJ0LnBlbWApO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlQ29udHJhY3RSZWFkaW5lc3MoXG4gIGNvbnRyYWN0TmFtZTogc3RyaW5nLFxuICBkb2NrZXJOYW1lOiBzdHJpbmcgPSBcIm9yZy1hLXBlZXItMFwiLFxuICB0bHNDZXJ0OiBzdHJpbmcgPSBcInRscy1jYS1jZXJ0LnBlbVwiLFxuICBjb3VudGVyID0gMFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgdHJ5IHtcbiAgICAvLyBQcmVwYXJlIHRoZSBKU09OIGFyZ3VtZW50IGZvciB0aGUgY2hhaW5jb2RlXG4gICAgY29uc3QgY2hhaW5jb2RlQXJncyA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGZ1bmN0aW9uOiBcImhlYWx0aGNoZWNrXCIsXG4gICAgICBBcmdzOiBbXSxcbiAgICB9KTtcblxuICAgIGlmIChjb3VudGVyID4gMTApIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIC8vIEludm9rZSB0aGUgY2hhaW5jb2RlXG4gICAgY29uc3QgcmVzID0gZXhlY1N5bmMoXG4gICAgICBgZG9ja2VyIGV4ZWMgJHtkb2NrZXJOYW1lfSBwZWVyIGNoYWluY29kZSBxdWVyeSBcXFxuICAgICAgICAtQyBzaW1wbGUtY2hhbm5lbCBcXFxuICAgICAgICAtbiAke2NvbnRyYWN0TmFtZX0gXFxcbiAgICAgICAgLWMgJyR7Y2hhaW5jb2RlQXJnc30nIFxcXG4gICAgICAgIC0tdGxzIC0tY2FmaWxlIC93ZWF2ZXIvcGVlci8ke3Rsc0NlcnR9YFxuICAgICk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBKU09OLnBhcnNlKHJlcy50b1N0cmluZygpKTtcblxuICAgIHJldHVybiByZXN1bHQuaGVhbHRoY2hlY2sudG9TdHJpbmcoKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgY29uc29sZS5sb2coXCJDaGFpbmNvZGUgbm90IHJlYWR5LiBSZXRyeWluZy4uLlwiKTtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCA1MDAwKSk7IC8vIFdhaXQgZm9yIDUgc2Vjb25kcyBiZWZvcmUgcmV0cnlpbmdcbiAgICByZXR1cm4gZW5zdXJlQ29udHJhY3RSZWFkaW5lc3MoXG4gICAgICBjb250cmFjdE5hbWUsXG4gICAgICBkb2NrZXJOYW1lLFxuICAgICAgdGxzQ2VydCxcbiAgICAgIGNvdW50ZXIrK1xuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyaW0oc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zb2xlLndhcm4oXCJDb250cmFjdCBub3QgdHJpbW1pbmcgcmVzcG9uc2UgcHJvcGVybHk6IFwiLCBzdHIpO1xuICByZXR1cm4gc3RyLnRyaW0oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludm9rZUNoYWluY29kZShcbiAgY29udHJhY3ROYW1lOiBzdHJpbmcsXG4gIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICBhcmdzOiBhbnlbXSxcbiAgdHJhbnNpZW50OiBhbnkgPSB7fSxcbiAgZG9ja2VyTmFtZTogc3RyaW5nID0gXCJvcmctYS1wZWVyLTBcIixcbiAgdGxzOiBzdHJpbmcgPSBcInRscy1jYS1jZXJ0LnBlbVwiXG4pIHtcbiAgLy8gUHJlcGFyZSB0aGUgSlNPTiBhcmd1bWVudCBmb3IgdGhlIGNoYWluY29kZVxuICBjb25zdCBjaGFpbmNvZGVBcmdzID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgIGZ1bmN0aW9uOiBmdW5jdGlvbk5hbWUsXG4gICAgQXJnczogYXJncyxcbiAgfSk7XG5cbiAgY29uc3QgdHJhbnNpZW50RGF0YSA9IEpTT04uc3RyaW5naWZ5KHRyYW5zaWVudCk7XG4gIGNvbnN0IHRyYW5zaWVudFN0cmluZyA9IGAtLXRyYW5zaWVudCAnJHt0cmFuc2llbnREYXRhfSdgO1xuXG4gIC8vIEludm9rZSB0aGUgY2hhaW5jb2RlXG4gIHJldHVybiBleGVjU3luYyhcbiAgICBgZG9ja2VyIGV4ZWMgJHtkb2NrZXJOYW1lfSBwZWVyIGNoYWluY29kZSBpbnZva2UgXFxcbiAgICAtQyBzaW1wbGUtY2hhbm5lbCBcXFxuICAgIC1uICR7Y29udHJhY3ROYW1lfSBcXFxuICAgIC1jICcke2NoYWluY29kZUFyZ3N9JyBcXFxuICAgIC0tcGVlckFkZHJlc3NlcyBvcmctYS1wZWVyLTA6NzAzMSBcXFxuICAgIC0tdGxzUm9vdENlcnRGaWxlcyAvd2VhdmVyL3BlZXIvdGxzLWNhLWNlcnQucGVtIFxcXG4gICAgLS1wZWVyQWRkcmVzc2VzIG9yZy1iLXBlZXItMDo3MDMyIFxcXG4gICAgLS10bHNSb290Q2VydEZpbGVzIC93ZWF2ZXIvcGVlci9vcmctYi10bHMtY2EtY2VydC5wZW0gXFxcbiAgICAtLXBlZXJBZGRyZXNzZXMgb3JnLWMtcGVlci0wOjcwMzMgXFxcbiAgICAtLXRsc1Jvb3RDZXJ0RmlsZXMgL3dlYXZlci9wZWVyL29yZy1jLXRscy1jYS1jZXJ0LnBlbSBcXFxuICAgIC1vIG9yZy1hLW9yZGVyZXItMDo3MDIxIFxcXG4gICAgLS10bHMgLS1jYWZpbGUgL3dlYXZlci9wZWVyLyR7dGxzfSBcXFxuICAgICR7dHJhbnNpZW50ID8gdHJhbnNpZW50U3RyaW5nIDogXCJcIn1gXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBxdWVyeUNoYWluY29kZShcbiAgY29udHJhY3ROYW1lOiBzdHJpbmcsXG4gIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICBhcmdzOiBhbnlbXSxcbiAgZG9ja2VyTmFtZTogc3RyaW5nID0gXCJvcmctYS1wZWVyLTBcIixcbiAgdGxzOiBzdHJpbmcgPSBcInRscy1jYS1jZXJ0LnBlbVwiXG4pIHtcbiAgdHJ5IHtcbiAgICAvLyBQcmVwYXJlIHRoZSBKU09OIGFyZ3VtZW50IGZvciB0aGUgY2hhaW5jb2RlXG4gICAgY29uc3QgY2hhaW5jb2RlQXJncyA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGZ1bmN0aW9uOiBmdW5jdGlvbk5hbWUsXG4gICAgICBBcmdzOiBhcmdzLFxuICAgIH0pO1xuXG4gICAgLy8gSW52b2tlIHRoZSBjaGFpbmNvZGVcbiAgICBjb25zdCByZXMgPSBleGVjU3luYyhcbiAgICAgIGBkb2NrZXIgZXhlYyAke2RvY2tlck5hbWV9IHBlZXIgY2hhaW5jb2RlIHF1ZXJ5IFxcXG4gICAgICAgIC1DIHNpbXBsZS1jaGFubmVsIFxcXG4gICAgICAgIC1uICR7Y29udHJhY3ROYW1lfSBcXFxuICAgICAgICAtYyAnJHtjaGFpbmNvZGVBcmdzfScgXFxcbiAgICAgICAgLS10bHMgLS1jYWZpbGUgJHt0bHN9YFxuICAgICk7XG5cbiAgICBjb25zdCBwcm9jZXNzZWQgPSByZXMudG9TdHJpbmcoKTtcbiAgICBjb25zb2xlLmxvZyhcIkJsb2NrY2hhaW4gcmVhZDpcIiwgcHJvY2Vzc2VkKTtcblxuICAgIHJldHVybiBwcm9jZXNzZWQ7XG4gIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgY29uc29sZS5sb2coXCJGYWlsZWQgdG8gcmVhZCBibG9ja2NoYWluXCIpO1xuICAgIHRocm93IGVycjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlUHJpdmF0ZUNoYWluY29kZShcbiAgY29udHJhY3ROYW1lOiBzdHJpbmcsXG4gIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICBhcmdzOiBhbnlbXSxcbiAgdHJhbnNpZW50OiBhbnkgPSB7fSxcbiAgZG9ja2VyTmFtZTogc3RyaW5nID0gXCJvcmctYS1wZWVyLTBcIixcbiAgdGxzOiBzdHJpbmcgPSBcInRscy1jYS1jZXJ0LnBlbVwiXG4pIHtcbiAgLy8gUHJlcGFyZSB0aGUgSlNPTiBhcmd1bWVudCBmb3IgdGhlIGNoYWluY29kZVxuICBjb25zdCBjaGFpbmNvZGVBcmdzID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgIGZ1bmN0aW9uOiBmdW5jdGlvbk5hbWUsXG4gICAgQXJnczogYXJncyxcbiAgfSk7XG5cbiAgY29uc3QgdHJhbnNpZW50RGF0YSA9IEpTT04uc3RyaW5naWZ5KHRyYW5zaWVudCk7XG4gIGNvbnN0IHRyYW5zaWVudFN0cmluZyA9IGAtLXRyYW5zaWVudCAnJHt0cmFuc2llbnREYXRhfSdgO1xuXG4gIC8vIEludm9rZSB0aGUgY2hhaW5jb2RlXG4gIHJldHVybiBleGVjU3luYyhcbiAgICBgZG9ja2VyIGV4ZWMgJHtkb2NrZXJOYW1lfSBwZWVyIGNoYWluY29kZSBpbnZva2UgXFxcbiAgICAtQyBzaW1wbGUtY2hhbm5lbCBcXFxuICAgIC1uICR7Y29udHJhY3ROYW1lfSBcXFxuICAgIC1jICcke2NoYWluY29kZUFyZ3N9JyBcXFxuICAgIC0tcGVlckFkZHJlc3NlcyBvcmctYS1wZWVyLTA6NzAzMSBcXFxuICAgIC0tdGxzUm9vdENlcnRGaWxlcyAvd2VhdmVyL3BlZXIvdGxzLWNhLWNlcnQucGVtIFxcXG4gICAgLW8gb3JnLWEtb3JkZXJlci0wOjcwMjEgXFxcbiAgICAtLXRscyAtLWNhZmlsZSAvd2VhdmVyL3BlZXIvJHt0bHN9IFxcXG4gICAgJHt0cmFuc2llbnQgPyB0cmFuc2llbnRTdHJpbmcgOiBcIlwifWBcbiAgKTtcblxuICAvLyAgIC0tcGVlckFkZHJlc3NlcyBvcmctYi1wZWVyLTA6NzAzMiBcXFxuICAvLyAtLXRsc1Jvb3RDZXJ0RmlsZXMgL3dlYXZlci9wZWVyL29yZy1iLXRscy1jYS1jZXJ0LnBlbSBcXFxuICAvLyAtLXBlZXJBZGRyZXNzZXMgb3JnLWMtcGVlci0wOjcwMzMgXFxcbiAgLy8gLS10bHNSb290Q2VydEZpbGVzIC93ZWF2ZXIvcGVlci9vcmctYy10bHMtY2EtY2VydC5wZW0gXFxcbn1cblxuZXhwb3J0IGVudW0gU2NyaXB0Q29tbWFuZHMge1xuICBTVEFSVCA9IFwiZmFicmljLWNoYWluY29kZS1ub2RlIHN0YXJ0IFxcXG4gICAgICAgICAgLS1ncnBjLm1heF9yZWNlaXZlX21lc3NhZ2VfbGVuZ3RoICR7Q0hBSU5DT0RFX01BWFJFQ1ZNU0dTSVpFLTE1NzI4NjQwfSBcXFxuICAgICAgICAgIC0tZ3JwYy5tYXhfc2VuZF9tZXNzYWdlX2xlbmd0aCAke0NIQUlOQ09ERV9NQVhTRU5ETVNHU0laRS0xNTcyODY0MH0gXCIsXG4gIFNUQVJUX0NDQUFTID0gXCJmYWJyaWMtY2hhaW5jb2RlLW5vZGUgc2VydmVyIFxcXG4gICAgICAgICAgLS1jaGFpbmNvZGUtYWRkcmVzcz0kQ0hBSU5DT0RFX1NFUlZFUl9BRERSRVNTIFxcXG4gICAgICAgICAgLS1jaGFpbmNvZGUtaWQ9JENIQUlOQ09ERV9JRCBcXFxuICAgICAgICAgIC0tY2hhaW5jb2RlLXRscy1jZXJ0LWZpbGU9JHtDSEFJTkNPREVfVExTX0NFUlR9IFxcXG4gICAgICAgICAgLS1jaGFpbmNvZGUtdGxzLWtleS1maWxlPSR7Q0hBSU5DT0RFX1RMU19LRVl9IFxcXG4gICAgICAgICAgLS1ncnBjLm1heF9yZWNlaXZlX21lc3NhZ2VfbGVuZ3RoICR7Q0hBSU5DT0RFX01BWFJFQ1ZNU0dTSVpFLTE1NzI4NjQwfSBcXFxuICAgICAgICAgIC0tZ3JwYy5tYXhfc2VuZF9tZXNzYWdlX2xlbmd0aCAke0NIQUlOQ09ERV9NQVhTRU5ETVNHU0laRS0xNTcyODY0MH0gXFxcbiAgICAgICAgICAtLXRscy5lbmFibGVkPXRydWVcIixcbiAgU1RBUlRfQ0NBQVNfREVCVUcgPSBcIm5vZGUgLS1pbnNwZWN0PTAuMC4wLjA6OTIyOSAuL25vZGVfbW9kdWxlcy8uYmluL2ZhYnJpYy1jaGFpbmNvZGUtbm9kZSBzZXJ2ZXIgXFxcbiAgICAgICAgICAtLWNoYWluY29kZS1hZGRyZXNzPSRDSEFJTkNPREVfU0VSVkVSX0FERFJFU1MgXFxcbiAgICAgICAgICAtLWNoYWluY29kZS1pZD0kQ0hBSU5DT0RFX0lEIFxcXG4gICAgICAgICAgLS1jaGFpbmNvZGUtdGxzLWNlcnQtZmlsZT0ke0NIQUlOQ09ERV9UTFNfQ0VSVH0gXFxcbiAgICAgICAgICAtLWNoYWluY29kZS10bHMta2V5LWZpbGU9JHtDSEFJTkNPREVfVExTX0tFWX0gXFxcbiAgICAgICAgICAtLWdycGMubWF4X3JlY2VpdmVfbWVzc2FnZV9sZW5ndGggJHtDSEFJTkNPREVfTUFYUkVDVk1TR1NJWkUtMTU3Mjg2NDB9IFxcXG4gICAgICAgICAgLS1ncnBjLm1heF9zZW5kX21lc3NhZ2VfbGVuZ3RoICR7Q0hBSU5DT0RFX01BWFNFTkRNU0dTSVpFLTE1NzI4NjQwfSBcXFxuICAgICAgICAgIC0tdGxzLmVuYWJsZWQ9dHJ1ZVwiLFxuICBTVEFSVF9ERUJVRyA9IFwibm9kZSAtLWluc3BlY3Q9MC4wLjAuMDo5MjI5IC91c3IvbG9jYWwvc3JjL25vZGVfbW9kdWxlcy8uYmluL2ZhYnJpYy1jaGFpbmNvZGUtbm9kZSBzdGFydCBcXFxuICAgICAgICAgIC0tZ3JwYy5tYXhfcmVjZWl2ZV9tZXNzYWdlX2xlbmd0aCAke0NIQUlOQ09ERV9NQVhSRUNWTVNHU0laRS0xNTcyODY0MH0gXFxcbiAgICAgICAgICAtLWdycGMubWF4X3NlbmRfbWVzc2FnZV9sZW5ndGggJHtDSEFJTkNPREVfTUFYU0VORE1TR1NJWkUtMTU3Mjg2NDB9XCIsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb250cmFjdFN0YXJ0Q29tbWFuZChcbiAgZGVidWc6IGJvb2xlYW4sXG4gIGNjYWFzOiBib29sZWFuXG4pOiBzdHJpbmcge1xuICBpZiAoY2NhYXMpIHtcbiAgICByZXR1cm4gZGVidWdcbiAgICAgID8gU2NyaXB0Q29tbWFuZHMuU1RBUlRfQ0NBQVNfREVCVUdcbiAgICAgIDogU2NyaXB0Q29tbWFuZHMuU1RBUlRfQ0NBQVM7XG4gIH1cbiAgcmV0dXJuIGRlYnVnID8gU2NyaXB0Q29tbWFuZHMuU1RBUlRfREVCVUcgOiBTY3JpcHRDb21tYW5kcy5TVEFSVDtcbn1cblxuZnVuY3Rpb24gZm9ybWF0RGlhZ25vc3RpY3MoZGlhZ3M6IHJlYWRvbmx5IHRzLkRpYWdub3N0aWNbXSk6IHN0cmluZyB7XG4gIGNvbnN0IGhvc3Q6IHRzLkZvcm1hdERpYWdub3N0aWNzSG9zdCA9IHtcbiAgICBnZXRDYW5vbmljYWxGaWxlTmFtZTogKGYpID0+IGYsXG4gICAgZ2V0Q3VycmVudERpcmVjdG9yeTogdHMuc3lzLmdldEN1cnJlbnREaXJlY3RvcnksXG4gICAgZ2V0TmV3TGluZTogKCkgPT4gdHMuc3lzLm5ld0xpbmUsXG4gIH07XG4gIHJldHVybiB0cy5mb3JtYXREaWFnbm9zdGljc1dpdGhDb2xvckFuZENvbnRleHQoZGlhZ3MsIGhvc3QpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZVdpdGhUc2NvbmZpZ092ZXJyaWRlcyhcbiAgdHNjb25maWdQYXRoOiBzdHJpbmcsXG4gIG92ZXJyaWRlczogUGFydGlhbDx0cy5Db21waWxlck9wdGlvbnM+XG4pOiB2b2lkIHtcbiAgY29uc3QgYWJzQ29uZmlnUGF0aCA9IHBhdGguaXNBYnNvbHV0ZSh0c2NvbmZpZ1BhdGgpXG4gICAgPyB0c2NvbmZpZ1BhdGhcbiAgICA6IHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCB0c2NvbmZpZ1BhdGgpO1xuXG4gIC8vIDEpIFJlYWQgdGhlIHRzY29uZmlnLmpzb25cbiAgY29uc3QgY29uZmlnRmlsZSA9IHRzLnJlYWRDb25maWdGaWxlKGFic0NvbmZpZ1BhdGgsIHRzLnN5cy5yZWFkRmlsZSk7XG4gIGlmIChjb25maWdGaWxlLmVycm9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdERpYWdub3N0aWNzKFtjb25maWdGaWxlLmVycm9yXSkpO1xuICB9XG5cbiAgLy8gMikgUGFyc2UgaXQgKHJlc29sdmVzIFwiZXh0ZW5kc1wiLCBpbmNsdWRlL2V4Y2x1ZGUvZmlsZXMsIGV0Yy4pXG4gIGNvbnN0IGNvbmZpZ0RpciA9IHBhdGguZGlybmFtZShhYnNDb25maWdQYXRoKTtcbiAgY29uc3QgcGFyc2VkID0gdHMucGFyc2VKc29uQ29uZmlnRmlsZUNvbnRlbnQoXG4gICAgY29uZmlnRmlsZS5jb25maWcsXG4gICAgdHMuc3lzLFxuICAgIGNvbmZpZ0RpcixcbiAgICAvKmV4aXN0aW5nT3B0aW9ucyovIHVuZGVmaW5lZCxcbiAgICBhYnNDb25maWdQYXRoXG4gICk7XG5cbiAgaWYgKHBhcnNlZC5lcnJvcnMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdERpYWdub3N0aWNzKHBhcnNlZC5lcnJvcnMpKTtcbiAgfVxuXG4gIC8vIDMpIE92ZXJyaWRlIGNvbXBpbGVyIG9wdGlvbnMgaW4tbWVtb3J5XG4gIGNvbnN0IG9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucyA9IHtcbiAgICAuLi5wYXJzZWQub3B0aW9ucyxcbiAgICAuLi5vdmVycmlkZXMsXG4gIH07XG5cbiAgLy8gT3B0aW9uYWw6IElmIHlvdSBvdmVycmlkZSBvdXREaXIvcm9vdERpciwgZW5zdXJlIHRoZXnigJlyZSBhYnNvbHV0ZVxuICAvLyB0byBhdm9pZCBzdXJwcmlzZXMgZGVwZW5kaW5nIG9uIENXRC5cbiAgaWYgKG9wdGlvbnMub3V0RGlyKSBvcHRpb25zLm91dERpciA9IHBhdGgucmVzb2x2ZShjb25maWdEaXIsIG9wdGlvbnMub3V0RGlyKTtcbiAgaWYgKG9wdGlvbnMucm9vdERpcilcbiAgICBvcHRpb25zLnJvb3REaXIgPSBwYXRoLnJlc29sdmUoY29uZmlnRGlyLCBvcHRpb25zLnJvb3REaXIpO1xuXG4gIC8vIDQpIENyZWF0ZSBwcm9ncmFtICsgZW1pdFxuICBjb25zdCBwcm9ncmFtID0gdHMuY3JlYXRlUHJvZ3JhbSh7XG4gICAgcm9vdE5hbWVzOiBwYXJzZWQuZmlsZU5hbWVzLFxuICAgIG9wdGlvbnMsXG4gICAgcHJvamVjdFJlZmVyZW5jZXM6IHBhcnNlZC5wcm9qZWN0UmVmZXJlbmNlcyxcbiAgfSk7XG5cbiAgY29uc3QgcHJlRW1pdCA9IHRzLmdldFByZUVtaXREaWFnbm9zdGljcyhwcm9ncmFtKTtcbiAgaWYgKHByZUVtaXQubGVuZ3RoKSB7XG4gICAgLy8gSWYgeW91IHdhbnQgXCJ0cmFuc3BpbGUgYW55d2F5XCIsIHlvdSBjYW4gY2hvb3NlIHRvIG5vdCB0aHJvdyBoZXJlLlxuICAgIHRocm93IG5ldyBFcnJvcihmb3JtYXREaWFnbm9zdGljcyhwcmVFbWl0KSk7XG4gIH1cblxuICBjb25zdCBlbWl0UmVzdWx0ID0gcHJvZ3JhbS5lbWl0KCk7XG4gIGNvbnN0IGVtaXREaWFnbm9zdGljcyA9IGVtaXRSZXN1bHQuZGlhZ25vc3RpY3MgPz8gW107XG4gIGlmIChlbWl0RGlhZ25vc3RpY3MubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdERpYWdub3N0aWNzKGVtaXREaWFnbm9zdGljcykpO1xuICB9XG5cbiAgaWYgKGVtaXRSZXN1bHQuZW1pdFNraXBwZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFbWl0IHdhcyBza2lwcGVkIChjaGVjayBkaWFnbm9zdGljcyBhYm92ZSkuXCIpO1xuICB9XG59XG4iXX0=
256
+ //# sourceMappingURL=cli-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-utils.js","sourceRoot":"","sources":["../../src/cli-utils.ts"],"names":[],"mappings":"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"}