@decaf-ts/for-fabric 0.12.0 → 0.12.2

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 (503) hide show
  1. package/dist/for-fabric.cjs +3797 -2
  2. package/dist/for-fabric.js +3901 -2
  3. package/lib/cjs/bin/cli.cjs +2 -2
  4. package/lib/cjs/cli-module.cjs +28 -3
  5. package/lib/cjs/cli-utils.cjs +2 -2
  6. package/lib/cjs/client/FabricClientAdapter.cjs +2 -2
  7. package/lib/cjs/client/FabricClientDispatch.cjs +2 -2
  8. package/lib/cjs/client/FabricClientPaginator.cjs +2 -2
  9. package/lib/cjs/client/FabricClientRepository.cjs +2 -2
  10. package/lib/cjs/client/FabricClientStatement.cjs +2 -2
  11. package/lib/cjs/client/collections/generation.cjs +2 -2
  12. package/lib/cjs/client/collections/index.cjs +2 -2
  13. package/lib/cjs/client/constants.cjs +2 -2
  14. package/lib/cjs/client/crypto.cjs +2 -2
  15. package/lib/cjs/client/erc20/FabricERC20ClientRepository.cjs +2 -2
  16. package/lib/cjs/client/erc20/index.cjs +2 -2
  17. package/lib/cjs/client/fabric-fs.cjs +2 -2
  18. package/lib/cjs/client/fabric-hsm.cjs +2 -2
  19. package/lib/cjs/client/ids/id-extraction.cjs +2 -2
  20. package/lib/cjs/client/ids/index.cjs +2 -2
  21. package/lib/cjs/client/index.cjs +2 -2
  22. package/lib/cjs/client/indexes/generation.cjs +2 -2
  23. package/lib/cjs/client/indexes/index.cjs +2 -2
  24. package/lib/cjs/client/logging.cjs +2 -2
  25. package/lib/cjs/client/services/FabricEnrollmentService.cjs +2 -2
  26. package/lib/cjs/client/services/FabricIdentityService.cjs +2 -2
  27. package/lib/cjs/client/services/RegistrationRequestBuilder.cjs +2 -2
  28. package/lib/cjs/client/services/constants.cjs +2 -2
  29. package/lib/cjs/client/services/index.cjs +2 -2
  30. package/lib/cjs/client/types.cjs +2 -2
  31. package/lib/cjs/client/utils.cjs +2 -2
  32. package/lib/cjs/contract/Address.cjs +2 -2
  33. package/lib/cjs/contract/AddressContract.cjs +2 -2
  34. package/lib/cjs/contract/AuditContract.cjs +2 -2
  35. package/lib/cjs/contract/BatchContract.cjs +2 -2
  36. package/lib/cjs/contract/MarketContract.cjs +2 -2
  37. package/lib/cjs/contract/OtherAuditContract.cjs +2 -2
  38. package/lib/cjs/contract/OtherBatchContract.cjs +2 -2
  39. package/lib/cjs/contract/OtherMarketContract.cjs +2 -2
  40. package/lib/cjs/contract/OtherProductContract.cjs +2 -2
  41. package/lib/cjs/contract/OtherProductImageContract.cjs +2 -2
  42. package/lib/cjs/contract/OtherProductSharedContract.cjs +2 -2
  43. package/lib/cjs/contract/OtherProductStrengthContract.cjs +2 -2
  44. package/lib/cjs/contract/Product.cjs +2 -2
  45. package/lib/cjs/contract/ProductContract.cjs +2 -2
  46. package/lib/cjs/contract/ProductStrengthContract.cjs +2 -2
  47. package/lib/cjs/contract/SegregatedPrivateDocumentContract.cjs +2 -2
  48. package/lib/cjs/contract/SegregatedSharedDocumentContract.cjs +2 -2
  49. package/lib/cjs/contract/User.cjs +2 -2
  50. package/lib/cjs/contract/UserContract.cjs +2 -2
  51. package/lib/cjs/contract/index.cjs +2 -2
  52. package/lib/cjs/contract/logging-context.cjs +2 -2
  53. package/lib/cjs/contract/models/Audit.cjs +2 -2
  54. package/lib/cjs/contract/models/BaseIdentifiedModel.cjs +2 -2
  55. package/lib/cjs/contract/models/BaseModel.cjs +2 -2
  56. package/lib/cjs/contract/models/Batch.cjs +2 -2
  57. package/lib/cjs/contract/models/GtinOwner.cjs +2 -2
  58. package/lib/cjs/contract/models/History.cjs +2 -2
  59. package/lib/cjs/contract/models/Leaflet.cjs +2 -2
  60. package/lib/cjs/contract/models/LeafletFile.cjs +2 -2
  61. package/lib/cjs/contract/models/Market.cjs +2 -2
  62. package/lib/cjs/contract/models/OtherAudit.cjs +2 -2
  63. package/lib/cjs/contract/models/OtherBatchShared.cjs +2 -2
  64. package/lib/cjs/contract/models/OtherLeaflet.cjs +2 -2
  65. package/lib/cjs/contract/models/OtherLeafletFile.cjs +2 -2
  66. package/lib/cjs/contract/models/OtherMarket.cjs +2 -2
  67. package/lib/cjs/contract/models/OtherProduct.cjs +2 -2
  68. package/lib/cjs/contract/models/OtherProductImage.cjs +2 -2
  69. package/lib/cjs/contract/models/OtherProductShared.cjs +2 -2
  70. package/lib/cjs/contract/models/OtherProductStrength.cjs +2 -2
  71. package/lib/cjs/contract/models/Product.cjs +2 -2
  72. package/lib/cjs/contract/models/ProductStrength.cjs +2 -2
  73. package/lib/cjs/contract/models/SegregatedDocument.cjs +2 -2
  74. package/lib/cjs/contract/models/constants.cjs +2 -2
  75. package/lib/cjs/contract/models/decorators-private.cjs +2 -2
  76. package/lib/cjs/contract/models/decorators.cjs +2 -2
  77. package/lib/cjs/contract/models/gtin.cjs +2 -2
  78. package/lib/cjs/contract/models/history-dec.cjs +2 -2
  79. package/lib/cjs/contracts/ContractAdapter.cjs +2 -2
  80. package/lib/cjs/contracts/ContractContext.cjs +2 -2
  81. package/lib/cjs/contracts/FabricContractDispatch.cjs +2 -2
  82. package/lib/cjs/contracts/FabricContractPaginator.cjs +2 -2
  83. package/lib/cjs/contracts/FabricContractRepository.cjs +2 -2
  84. package/lib/cjs/contracts/FabricContractRepositoryObservableHandler.cjs +2 -2
  85. package/lib/cjs/contracts/FabricContractSequence.cjs +2 -2
  86. package/lib/cjs/contracts/FabricContractStatement.cjs +2 -2
  87. package/lib/cjs/contracts/MigrationContract.cjs +2 -2
  88. package/lib/cjs/contracts/PrivateSequence.cjs +2 -2
  89. package/lib/cjs/contracts/auth/decorators.cjs +2 -2
  90. package/lib/cjs/contracts/auth/index.cjs +2 -2
  91. package/lib/cjs/contracts/crud/crud-contract.cjs +2 -2
  92. package/lib/cjs/contracts/crud/index.cjs +2 -2
  93. package/lib/cjs/contracts/crud/serialized-crud-contract.cjs +2 -2
  94. package/lib/cjs/contracts/erc20/erc20contract.cjs +2 -2
  95. package/lib/cjs/contracts/erc20/index.cjs +2 -2
  96. package/lib/cjs/contracts/erc20/models.cjs +2 -2
  97. package/lib/cjs/contracts/index.cjs +2 -2
  98. package/lib/cjs/contracts/logging.cjs +2 -2
  99. package/lib/cjs/contracts/overrides.cjs +2 -2
  100. package/lib/cjs/contracts/types.cjs +2 -2
  101. package/lib/cjs/contracts/uuid.cjs +2 -2
  102. package/lib/cjs/index.cjs +2 -2
  103. package/lib/cjs/shared/ClientSerializer.cjs +2 -2
  104. package/lib/cjs/shared/DeterministicSerializer.cjs +2 -2
  105. package/lib/cjs/shared/SimpleDeterministicSerializer.cjs +2 -2
  106. package/lib/cjs/shared/constants.cjs +2 -2
  107. package/lib/cjs/shared/decorators.cjs +2 -2
  108. package/lib/cjs/shared/erc20/erc20-constants.cjs +2 -2
  109. package/lib/cjs/shared/erc20/index.cjs +2 -2
  110. package/lib/cjs/shared/errors.cjs +2 -2
  111. package/lib/cjs/shared/events.cjs +2 -2
  112. package/lib/cjs/shared/fabric-types.cjs +2 -2
  113. package/lib/cjs/shared/index.cjs +2 -2
  114. package/lib/cjs/shared/interfaces/Checkable.cjs +2 -2
  115. package/lib/cjs/shared/interfaces/index.cjs +2 -2
  116. package/lib/cjs/shared/math.cjs +2 -2
  117. package/lib/cjs/shared/model/FabricBaseModel.cjs +2 -2
  118. package/lib/cjs/shared/model/FabricIdentifiedBaseModel.cjs +2 -2
  119. package/lib/cjs/shared/model/Identity.cjs +2 -2
  120. package/lib/cjs/shared/model/IdentityCredentials.cjs +2 -2
  121. package/lib/cjs/shared/model/index.cjs +2 -2
  122. package/lib/cjs/shared/overrides/Model.cjs +2 -2
  123. package/lib/cjs/shared/overrides/index.cjs +2 -2
  124. package/lib/cjs/shared/overrides/overrides.cjs +2 -2
  125. package/lib/cjs/shared/types.cjs +2 -2
  126. package/lib/cjs/version.cjs +3 -3
  127. package/lib/esm/bin/cli.js +1 -1
  128. package/lib/esm/cli-module.js +27 -2
  129. package/lib/esm/cli-utils.js +1 -1
  130. package/lib/esm/client/FabricClientAdapter.js +1 -1
  131. package/lib/esm/client/FabricClientDispatch.js +1 -1
  132. package/lib/esm/client/FabricClientPaginator.js +1 -1
  133. package/lib/esm/client/FabricClientRepository.js +1 -1
  134. package/lib/esm/client/FabricClientStatement.js +1 -1
  135. package/lib/esm/client/collections/generation.js +1 -1
  136. package/lib/esm/client/collections/index.js +1 -1
  137. package/lib/esm/client/constants.js +1 -1
  138. package/lib/esm/client/crypto.js +1 -1
  139. package/lib/esm/client/erc20/FabricERC20ClientRepository.js +1 -1
  140. package/lib/esm/client/erc20/index.js +1 -1
  141. package/lib/esm/client/fabric-fs.js +1 -1
  142. package/lib/esm/client/fabric-hsm.js +1 -1
  143. package/lib/esm/client/ids/id-extraction.js +1 -1
  144. package/lib/esm/client/ids/index.js +1 -1
  145. package/lib/esm/client/index.js +1 -1
  146. package/lib/esm/client/indexes/generation.js +1 -1
  147. package/lib/esm/client/indexes/index.js +1 -1
  148. package/lib/esm/client/logging.js +1 -1
  149. package/lib/esm/client/services/FabricEnrollmentService.js +1 -1
  150. package/lib/esm/client/services/FabricIdentityService.js +1 -1
  151. package/lib/esm/client/services/RegistrationRequestBuilder.js +1 -1
  152. package/lib/esm/client/services/constants.js +1 -1
  153. package/lib/esm/client/services/index.js +1 -1
  154. package/lib/esm/client/types.js +1 -1
  155. package/lib/esm/client/utils.js +1 -1
  156. package/lib/esm/contract/Address.js +1 -1
  157. package/lib/esm/contract/AddressContract.js +1 -1
  158. package/lib/esm/contract/AuditContract.js +1 -1
  159. package/lib/esm/contract/BatchContract.js +1 -1
  160. package/lib/esm/contract/MarketContract.js +1 -1
  161. package/lib/esm/contract/OtherAuditContract.js +1 -1
  162. package/lib/esm/contract/OtherBatchContract.js +1 -1
  163. package/lib/esm/contract/OtherMarketContract.js +1 -1
  164. package/lib/esm/contract/OtherProductContract.js +1 -1
  165. package/lib/esm/contract/OtherProductImageContract.js +1 -1
  166. package/lib/esm/contract/OtherProductSharedContract.js +1 -1
  167. package/lib/esm/contract/OtherProductStrengthContract.js +1 -1
  168. package/lib/esm/contract/Product.js +1 -1
  169. package/lib/esm/contract/ProductContract.js +1 -1
  170. package/lib/esm/contract/ProductStrengthContract.js +1 -1
  171. package/lib/esm/contract/SegregatedPrivateDocumentContract.js +1 -1
  172. package/lib/esm/contract/SegregatedSharedDocumentContract.js +1 -1
  173. package/lib/esm/contract/User.js +1 -1
  174. package/lib/esm/contract/UserContract.js +1 -1
  175. package/lib/esm/contract/index.js +1 -1
  176. package/lib/esm/contract/logging-context.js +1 -1
  177. package/lib/esm/contract/models/Audit.js +1 -1
  178. package/lib/esm/contract/models/BaseIdentifiedModel.js +1 -1
  179. package/lib/esm/contract/models/BaseModel.js +1 -1
  180. package/lib/esm/contract/models/Batch.js +1 -1
  181. package/lib/esm/contract/models/GtinOwner.js +1 -1
  182. package/lib/esm/contract/models/History.js +1 -1
  183. package/lib/esm/contract/models/Leaflet.js +1 -1
  184. package/lib/esm/contract/models/LeafletFile.js +1 -1
  185. package/lib/esm/contract/models/Market.js +1 -1
  186. package/lib/esm/contract/models/OtherAudit.js +1 -1
  187. package/lib/esm/contract/models/OtherBatchShared.js +1 -1
  188. package/lib/esm/contract/models/OtherLeaflet.js +1 -1
  189. package/lib/esm/contract/models/OtherLeafletFile.js +1 -1
  190. package/lib/esm/contract/models/OtherMarket.js +1 -1
  191. package/lib/esm/contract/models/OtherProduct.js +1 -1
  192. package/lib/esm/contract/models/OtherProductImage.js +1 -1
  193. package/lib/esm/contract/models/OtherProductShared.js +1 -1
  194. package/lib/esm/contract/models/OtherProductStrength.js +1 -1
  195. package/lib/esm/contract/models/Product.js +1 -1
  196. package/lib/esm/contract/models/ProductStrength.js +1 -1
  197. package/lib/esm/contract/models/SegregatedDocument.js +1 -1
  198. package/lib/esm/contract/models/constants.js +1 -1
  199. package/lib/esm/contract/models/decorators-private.js +1 -1
  200. package/lib/esm/contract/models/decorators.js +1 -1
  201. package/lib/esm/contract/models/gtin.js +1 -1
  202. package/lib/esm/contract/models/history-dec.js +1 -1
  203. package/lib/esm/contracts/ContractAdapter.js +1 -1
  204. package/lib/esm/contracts/ContractContext.js +1 -1
  205. package/lib/esm/contracts/FabricContractDispatch.js +1 -1
  206. package/lib/esm/contracts/FabricContractPaginator.js +1 -1
  207. package/lib/esm/contracts/FabricContractRepository.js +1 -1
  208. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js +1 -1
  209. package/lib/esm/contracts/FabricContractSequence.js +1 -1
  210. package/lib/esm/contracts/FabricContractStatement.js +1 -1
  211. package/lib/esm/contracts/MigrationContract.js +1 -1
  212. package/lib/esm/contracts/PrivateSequence.js +1 -1
  213. package/lib/esm/contracts/auth/decorators.js +1 -1
  214. package/lib/esm/contracts/auth/index.js +1 -1
  215. package/lib/esm/contracts/crud/crud-contract.js +1 -1
  216. package/lib/esm/contracts/crud/index.js +1 -1
  217. package/lib/esm/contracts/crud/serialized-crud-contract.js +1 -1
  218. package/lib/esm/contracts/erc20/erc20contract.js +1 -1
  219. package/lib/esm/contracts/erc20/index.js +1 -1
  220. package/lib/esm/contracts/erc20/models.js +1 -1
  221. package/lib/esm/contracts/index.js +1 -1
  222. package/lib/esm/contracts/logging.js +1 -1
  223. package/lib/esm/contracts/overrides.js +1 -1
  224. package/lib/esm/contracts/types.js +1 -1
  225. package/lib/esm/contracts/uuid.js +1 -1
  226. package/lib/esm/index.js +1 -1
  227. package/lib/esm/shared/ClientSerializer.js +1 -1
  228. package/lib/esm/shared/DeterministicSerializer.js +1 -1
  229. package/lib/esm/shared/SimpleDeterministicSerializer.js +1 -1
  230. package/lib/esm/shared/constants.js +1 -1
  231. package/lib/esm/shared/decorators.js +1 -1
  232. package/lib/esm/shared/erc20/erc20-constants.js +1 -1
  233. package/lib/esm/shared/erc20/index.js +1 -1
  234. package/lib/esm/shared/errors.js +1 -1
  235. package/lib/esm/shared/events.js +1 -1
  236. package/lib/esm/shared/fabric-types.js +1 -1
  237. package/lib/esm/shared/index.js +1 -1
  238. package/lib/esm/shared/interfaces/Checkable.js +1 -1
  239. package/lib/esm/shared/interfaces/index.js +1 -1
  240. package/lib/esm/shared/math.js +1 -1
  241. package/lib/esm/shared/model/FabricBaseModel.js +1 -1
  242. package/lib/esm/shared/model/FabricIdentifiedBaseModel.js +1 -1
  243. package/lib/esm/shared/model/Identity.js +1 -1
  244. package/lib/esm/shared/model/IdentityCredentials.js +1 -1
  245. package/lib/esm/shared/model/index.js +1 -1
  246. package/lib/esm/shared/overrides/Model.js +1 -1
  247. package/lib/esm/shared/overrides/index.js +1 -1
  248. package/lib/esm/shared/overrides/overrides.js +1 -1
  249. package/lib/esm/shared/types.js +1 -1
  250. package/lib/esm/version.js +2 -2
  251. package/lib/types/version.d.cts +1 -1
  252. package/lib/types/version.d.mts +1 -1
  253. package/package.json +7 -7
  254. package/dist/for-fabric.cjs.map +0 -1
  255. package/dist/for-fabric.js.map +0 -1
  256. package/lib/cjs/bin/cli.cjs.map +0 -1
  257. package/lib/cjs/cli-module.cjs.map +0 -1
  258. package/lib/cjs/cli-utils.cjs.map +0 -1
  259. package/lib/cjs/client/FabricClientAdapter.cjs.map +0 -1
  260. package/lib/cjs/client/FabricClientDispatch.cjs.map +0 -1
  261. package/lib/cjs/client/FabricClientPaginator.cjs.map +0 -1
  262. package/lib/cjs/client/FabricClientRepository.cjs.map +0 -1
  263. package/lib/cjs/client/FabricClientStatement.cjs.map +0 -1
  264. package/lib/cjs/client/collections/generation.cjs.map +0 -1
  265. package/lib/cjs/client/collections/index.cjs.map +0 -1
  266. package/lib/cjs/client/constants.cjs.map +0 -1
  267. package/lib/cjs/client/crypto.cjs.map +0 -1
  268. package/lib/cjs/client/erc20/FabricERC20ClientRepository.cjs.map +0 -1
  269. package/lib/cjs/client/erc20/index.cjs.map +0 -1
  270. package/lib/cjs/client/fabric-fs.cjs.map +0 -1
  271. package/lib/cjs/client/fabric-hsm.cjs.map +0 -1
  272. package/lib/cjs/client/ids/id-extraction.cjs.map +0 -1
  273. package/lib/cjs/client/ids/index.cjs.map +0 -1
  274. package/lib/cjs/client/index.cjs.map +0 -1
  275. package/lib/cjs/client/indexes/generation.cjs.map +0 -1
  276. package/lib/cjs/client/indexes/index.cjs.map +0 -1
  277. package/lib/cjs/client/logging.cjs.map +0 -1
  278. package/lib/cjs/client/services/FabricEnrollmentService.cjs.map +0 -1
  279. package/lib/cjs/client/services/FabricIdentityService.cjs.map +0 -1
  280. package/lib/cjs/client/services/RegistrationRequestBuilder.cjs.map +0 -1
  281. package/lib/cjs/client/services/constants.cjs.map +0 -1
  282. package/lib/cjs/client/services/index.cjs.map +0 -1
  283. package/lib/cjs/client/types.cjs.map +0 -1
  284. package/lib/cjs/client/utils.cjs.map +0 -1
  285. package/lib/cjs/contract/Address.cjs.map +0 -1
  286. package/lib/cjs/contract/AddressContract.cjs.map +0 -1
  287. package/lib/cjs/contract/AuditContract.cjs.map +0 -1
  288. package/lib/cjs/contract/BatchContract.cjs.map +0 -1
  289. package/lib/cjs/contract/MarketContract.cjs.map +0 -1
  290. package/lib/cjs/contract/OtherAuditContract.cjs.map +0 -1
  291. package/lib/cjs/contract/OtherBatchContract.cjs.map +0 -1
  292. package/lib/cjs/contract/OtherMarketContract.cjs.map +0 -1
  293. package/lib/cjs/contract/OtherProductContract.cjs.map +0 -1
  294. package/lib/cjs/contract/OtherProductImageContract.cjs.map +0 -1
  295. package/lib/cjs/contract/OtherProductSharedContract.cjs.map +0 -1
  296. package/lib/cjs/contract/OtherProductStrengthContract.cjs.map +0 -1
  297. package/lib/cjs/contract/Product.cjs.map +0 -1
  298. package/lib/cjs/contract/ProductContract.cjs.map +0 -1
  299. package/lib/cjs/contract/ProductStrengthContract.cjs.map +0 -1
  300. package/lib/cjs/contract/SegregatedPrivateDocumentContract.cjs.map +0 -1
  301. package/lib/cjs/contract/SegregatedSharedDocumentContract.cjs.map +0 -1
  302. package/lib/cjs/contract/User.cjs.map +0 -1
  303. package/lib/cjs/contract/UserContract.cjs.map +0 -1
  304. package/lib/cjs/contract/index.cjs.map +0 -1
  305. package/lib/cjs/contract/logging-context.cjs.map +0 -1
  306. package/lib/cjs/contract/models/Audit.cjs.map +0 -1
  307. package/lib/cjs/contract/models/BaseIdentifiedModel.cjs.map +0 -1
  308. package/lib/cjs/contract/models/BaseModel.cjs.map +0 -1
  309. package/lib/cjs/contract/models/Batch.cjs.map +0 -1
  310. package/lib/cjs/contract/models/GtinOwner.cjs.map +0 -1
  311. package/lib/cjs/contract/models/History.cjs.map +0 -1
  312. package/lib/cjs/contract/models/Leaflet.cjs.map +0 -1
  313. package/lib/cjs/contract/models/LeafletFile.cjs.map +0 -1
  314. package/lib/cjs/contract/models/Market.cjs.map +0 -1
  315. package/lib/cjs/contract/models/OtherAudit.cjs.map +0 -1
  316. package/lib/cjs/contract/models/OtherBatchShared.cjs.map +0 -1
  317. package/lib/cjs/contract/models/OtherLeaflet.cjs.map +0 -1
  318. package/lib/cjs/contract/models/OtherLeafletFile.cjs.map +0 -1
  319. package/lib/cjs/contract/models/OtherMarket.cjs.map +0 -1
  320. package/lib/cjs/contract/models/OtherProduct.cjs.map +0 -1
  321. package/lib/cjs/contract/models/OtherProductImage.cjs.map +0 -1
  322. package/lib/cjs/contract/models/OtherProductShared.cjs.map +0 -1
  323. package/lib/cjs/contract/models/OtherProductStrength.cjs.map +0 -1
  324. package/lib/cjs/contract/models/Product.cjs.map +0 -1
  325. package/lib/cjs/contract/models/ProductStrength.cjs.map +0 -1
  326. package/lib/cjs/contract/models/SegregatedDocument.cjs.map +0 -1
  327. package/lib/cjs/contract/models/constants.cjs.map +0 -1
  328. package/lib/cjs/contract/models/decorators-private.cjs.map +0 -1
  329. package/lib/cjs/contract/models/decorators.cjs.map +0 -1
  330. package/lib/cjs/contract/models/gtin.cjs.map +0 -1
  331. package/lib/cjs/contract/models/history-dec.cjs.map +0 -1
  332. package/lib/cjs/contracts/ContractAdapter.cjs.map +0 -1
  333. package/lib/cjs/contracts/ContractContext.cjs.map +0 -1
  334. package/lib/cjs/contracts/FabricContractDispatch.cjs.map +0 -1
  335. package/lib/cjs/contracts/FabricContractPaginator.cjs.map +0 -1
  336. package/lib/cjs/contracts/FabricContractRepository.cjs.map +0 -1
  337. package/lib/cjs/contracts/FabricContractRepositoryObservableHandler.cjs.map +0 -1
  338. package/lib/cjs/contracts/FabricContractSequence.cjs.map +0 -1
  339. package/lib/cjs/contracts/FabricContractStatement.cjs.map +0 -1
  340. package/lib/cjs/contracts/MigrationContract.cjs.map +0 -1
  341. package/lib/cjs/contracts/PrivateSequence.cjs.map +0 -1
  342. package/lib/cjs/contracts/auth/decorators.cjs.map +0 -1
  343. package/lib/cjs/contracts/auth/index.cjs.map +0 -1
  344. package/lib/cjs/contracts/crud/crud-contract.cjs.map +0 -1
  345. package/lib/cjs/contracts/crud/index.cjs.map +0 -1
  346. package/lib/cjs/contracts/crud/serialized-crud-contract.cjs.map +0 -1
  347. package/lib/cjs/contracts/erc20/erc20contract.cjs.map +0 -1
  348. package/lib/cjs/contracts/erc20/index.cjs.map +0 -1
  349. package/lib/cjs/contracts/erc20/models.cjs.map +0 -1
  350. package/lib/cjs/contracts/index.cjs.map +0 -1
  351. package/lib/cjs/contracts/logging.cjs.map +0 -1
  352. package/lib/cjs/contracts/overrides.cjs.map +0 -1
  353. package/lib/cjs/contracts/types.cjs.map +0 -1
  354. package/lib/cjs/contracts/uuid.cjs.map +0 -1
  355. package/lib/cjs/index.cjs.map +0 -1
  356. package/lib/cjs/shared/ClientSerializer.cjs.map +0 -1
  357. package/lib/cjs/shared/DeterministicSerializer.cjs.map +0 -1
  358. package/lib/cjs/shared/SimpleDeterministicSerializer.cjs.map +0 -1
  359. package/lib/cjs/shared/constants.cjs.map +0 -1
  360. package/lib/cjs/shared/decorators.cjs.map +0 -1
  361. package/lib/cjs/shared/erc20/erc20-constants.cjs.map +0 -1
  362. package/lib/cjs/shared/erc20/index.cjs.map +0 -1
  363. package/lib/cjs/shared/errors.cjs.map +0 -1
  364. package/lib/cjs/shared/events.cjs.map +0 -1
  365. package/lib/cjs/shared/fabric-types.cjs.map +0 -1
  366. package/lib/cjs/shared/index.cjs.map +0 -1
  367. package/lib/cjs/shared/interfaces/Checkable.cjs.map +0 -1
  368. package/lib/cjs/shared/interfaces/index.cjs.map +0 -1
  369. package/lib/cjs/shared/math.cjs.map +0 -1
  370. package/lib/cjs/shared/model/FabricBaseModel.cjs.map +0 -1
  371. package/lib/cjs/shared/model/FabricIdentifiedBaseModel.cjs.map +0 -1
  372. package/lib/cjs/shared/model/Identity.cjs.map +0 -1
  373. package/lib/cjs/shared/model/IdentityCredentials.cjs.map +0 -1
  374. package/lib/cjs/shared/model/index.cjs.map +0 -1
  375. package/lib/cjs/shared/overrides/Model.cjs.map +0 -1
  376. package/lib/cjs/shared/overrides/index.cjs.map +0 -1
  377. package/lib/cjs/shared/overrides/overrides.cjs.map +0 -1
  378. package/lib/cjs/shared/types.cjs.map +0 -1
  379. package/lib/cjs/version.cjs.map +0 -1
  380. package/lib/esm/bin/cli.js.map +0 -1
  381. package/lib/esm/cli-module.js.map +0 -1
  382. package/lib/esm/cli-utils.js.map +0 -1
  383. package/lib/esm/client/FabricClientAdapter.js.map +0 -1
  384. package/lib/esm/client/FabricClientDispatch.js.map +0 -1
  385. package/lib/esm/client/FabricClientPaginator.js.map +0 -1
  386. package/lib/esm/client/FabricClientRepository.js.map +0 -1
  387. package/lib/esm/client/FabricClientStatement.js.map +0 -1
  388. package/lib/esm/client/collections/generation.js.map +0 -1
  389. package/lib/esm/client/collections/index.js.map +0 -1
  390. package/lib/esm/client/constants.js.map +0 -1
  391. package/lib/esm/client/crypto.js.map +0 -1
  392. package/lib/esm/client/erc20/FabricERC20ClientRepository.js.map +0 -1
  393. package/lib/esm/client/erc20/index.js.map +0 -1
  394. package/lib/esm/client/fabric-fs.js.map +0 -1
  395. package/lib/esm/client/fabric-hsm.js.map +0 -1
  396. package/lib/esm/client/ids/id-extraction.js.map +0 -1
  397. package/lib/esm/client/ids/index.js.map +0 -1
  398. package/lib/esm/client/index.js.map +0 -1
  399. package/lib/esm/client/indexes/generation.js.map +0 -1
  400. package/lib/esm/client/indexes/index.js.map +0 -1
  401. package/lib/esm/client/logging.js.map +0 -1
  402. package/lib/esm/client/services/FabricEnrollmentService.js.map +0 -1
  403. package/lib/esm/client/services/FabricIdentityService.js.map +0 -1
  404. package/lib/esm/client/services/RegistrationRequestBuilder.js.map +0 -1
  405. package/lib/esm/client/services/constants.js.map +0 -1
  406. package/lib/esm/client/services/index.js.map +0 -1
  407. package/lib/esm/client/types.js.map +0 -1
  408. package/lib/esm/client/utils.js.map +0 -1
  409. package/lib/esm/contract/Address.js.map +0 -1
  410. package/lib/esm/contract/AddressContract.js.map +0 -1
  411. package/lib/esm/contract/AuditContract.js.map +0 -1
  412. package/lib/esm/contract/BatchContract.js.map +0 -1
  413. package/lib/esm/contract/MarketContract.js.map +0 -1
  414. package/lib/esm/contract/OtherAuditContract.js.map +0 -1
  415. package/lib/esm/contract/OtherBatchContract.js.map +0 -1
  416. package/lib/esm/contract/OtherMarketContract.js.map +0 -1
  417. package/lib/esm/contract/OtherProductContract.js.map +0 -1
  418. package/lib/esm/contract/OtherProductImageContract.js.map +0 -1
  419. package/lib/esm/contract/OtherProductSharedContract.js.map +0 -1
  420. package/lib/esm/contract/OtherProductStrengthContract.js.map +0 -1
  421. package/lib/esm/contract/Product.js.map +0 -1
  422. package/lib/esm/contract/ProductContract.js.map +0 -1
  423. package/lib/esm/contract/ProductStrengthContract.js.map +0 -1
  424. package/lib/esm/contract/SegregatedPrivateDocumentContract.js.map +0 -1
  425. package/lib/esm/contract/SegregatedSharedDocumentContract.js.map +0 -1
  426. package/lib/esm/contract/User.js.map +0 -1
  427. package/lib/esm/contract/UserContract.js.map +0 -1
  428. package/lib/esm/contract/index.js.map +0 -1
  429. package/lib/esm/contract/logging-context.js.map +0 -1
  430. package/lib/esm/contract/models/Audit.js.map +0 -1
  431. package/lib/esm/contract/models/BaseIdentifiedModel.js.map +0 -1
  432. package/lib/esm/contract/models/BaseModel.js.map +0 -1
  433. package/lib/esm/contract/models/Batch.js.map +0 -1
  434. package/lib/esm/contract/models/GtinOwner.js.map +0 -1
  435. package/lib/esm/contract/models/History.js.map +0 -1
  436. package/lib/esm/contract/models/Leaflet.js.map +0 -1
  437. package/lib/esm/contract/models/LeafletFile.js.map +0 -1
  438. package/lib/esm/contract/models/Market.js.map +0 -1
  439. package/lib/esm/contract/models/OtherAudit.js.map +0 -1
  440. package/lib/esm/contract/models/OtherBatchShared.js.map +0 -1
  441. package/lib/esm/contract/models/OtherLeaflet.js.map +0 -1
  442. package/lib/esm/contract/models/OtherLeafletFile.js.map +0 -1
  443. package/lib/esm/contract/models/OtherMarket.js.map +0 -1
  444. package/lib/esm/contract/models/OtherProduct.js.map +0 -1
  445. package/lib/esm/contract/models/OtherProductImage.js.map +0 -1
  446. package/lib/esm/contract/models/OtherProductShared.js.map +0 -1
  447. package/lib/esm/contract/models/OtherProductStrength.js.map +0 -1
  448. package/lib/esm/contract/models/Product.js.map +0 -1
  449. package/lib/esm/contract/models/ProductStrength.js.map +0 -1
  450. package/lib/esm/contract/models/SegregatedDocument.js.map +0 -1
  451. package/lib/esm/contract/models/constants.js.map +0 -1
  452. package/lib/esm/contract/models/decorators-private.js.map +0 -1
  453. package/lib/esm/contract/models/decorators.js.map +0 -1
  454. package/lib/esm/contract/models/gtin.js.map +0 -1
  455. package/lib/esm/contract/models/history-dec.js.map +0 -1
  456. package/lib/esm/contracts/ContractAdapter.js.map +0 -1
  457. package/lib/esm/contracts/ContractContext.js.map +0 -1
  458. package/lib/esm/contracts/FabricContractDispatch.js.map +0 -1
  459. package/lib/esm/contracts/FabricContractPaginator.js.map +0 -1
  460. package/lib/esm/contracts/FabricContractRepository.js.map +0 -1
  461. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js.map +0 -1
  462. package/lib/esm/contracts/FabricContractSequence.js.map +0 -1
  463. package/lib/esm/contracts/FabricContractStatement.js.map +0 -1
  464. package/lib/esm/contracts/MigrationContract.js.map +0 -1
  465. package/lib/esm/contracts/PrivateSequence.js.map +0 -1
  466. package/lib/esm/contracts/auth/decorators.js.map +0 -1
  467. package/lib/esm/contracts/auth/index.js.map +0 -1
  468. package/lib/esm/contracts/crud/crud-contract.js.map +0 -1
  469. package/lib/esm/contracts/crud/index.js.map +0 -1
  470. package/lib/esm/contracts/crud/serialized-crud-contract.js.map +0 -1
  471. package/lib/esm/contracts/erc20/erc20contract.js.map +0 -1
  472. package/lib/esm/contracts/erc20/index.js.map +0 -1
  473. package/lib/esm/contracts/erc20/models.js.map +0 -1
  474. package/lib/esm/contracts/index.js.map +0 -1
  475. package/lib/esm/contracts/logging.js.map +0 -1
  476. package/lib/esm/contracts/overrides.js.map +0 -1
  477. package/lib/esm/contracts/types.js.map +0 -1
  478. package/lib/esm/contracts/uuid.js.map +0 -1
  479. package/lib/esm/index.js.map +0 -1
  480. package/lib/esm/shared/ClientSerializer.js.map +0 -1
  481. package/lib/esm/shared/DeterministicSerializer.js.map +0 -1
  482. package/lib/esm/shared/SimpleDeterministicSerializer.js.map +0 -1
  483. package/lib/esm/shared/constants.js.map +0 -1
  484. package/lib/esm/shared/decorators.js.map +0 -1
  485. package/lib/esm/shared/erc20/erc20-constants.js.map +0 -1
  486. package/lib/esm/shared/erc20/index.js.map +0 -1
  487. package/lib/esm/shared/errors.js.map +0 -1
  488. package/lib/esm/shared/events.js.map +0 -1
  489. package/lib/esm/shared/fabric-types.js.map +0 -1
  490. package/lib/esm/shared/index.js.map +0 -1
  491. package/lib/esm/shared/interfaces/Checkable.js.map +0 -1
  492. package/lib/esm/shared/interfaces/index.js.map +0 -1
  493. package/lib/esm/shared/math.js.map +0 -1
  494. package/lib/esm/shared/model/FabricBaseModel.js.map +0 -1
  495. package/lib/esm/shared/model/FabricIdentifiedBaseModel.js.map +0 -1
  496. package/lib/esm/shared/model/Identity.js.map +0 -1
  497. package/lib/esm/shared/model/IdentityCredentials.js.map +0 -1
  498. package/lib/esm/shared/model/index.js.map +0 -1
  499. package/lib/esm/shared/overrides/Model.js.map +0 -1
  500. package/lib/esm/shared/overrides/index.js.map +0 -1
  501. package/lib/esm/shared/overrides/overrides.js.map +0 -1
  502. package/lib/esm/shared/types.js.map +0 -1
  503. package/lib/esm/version.js.map +0 -1
@@ -305,5 +305,5 @@ function compileWithTsconfigOverrides(tsconfigPath, overrides) {
305
305
  throw new Error("Emit was skipped (check diagnostics above).");
306
306
  }
307
307
  }
308
- //# sourceMappingURL=cli-utils.js.map
309
- //# sourceMappingURL=cli-utils.js.map
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFNUIsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxnQkFBd0IsbUJBQW1CO0lBRTNDLElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FDckIsa0JBQWtCLGFBQWEsaUNBQWlDLENBQ2pFO2FBQ0UsUUFBUSxFQUFFO2FBQ1YsSUFBSSxFQUFFLENBQUM7UUFFVixPQUFPLE1BQU0sS0FBSyxHQUFHLENBQUM7SUFDeEIsQ0FBQztJQUFDLE9BQU8sR0FBUSxFQUFFLENBQUM7UUFDbEIsT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsMEJBQTBCLENBQzlDLGdCQUF3QixtQkFBbUIsRUFDM0MsVUFBa0IsSUFBSSxFQUN0QixXQUFtQixFQUFFO0lBRXJCLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQzdDLElBQUksRUFBRSxRQUFRLElBQUksQ0FBQztZQUFFLE1BQU0sSUFBSSxhQUFhLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUUxRSxPQUFPLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDckQsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENB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QyxPQUFPLENBQUMsQ0FBQztJQUNsRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNuQixvRUFBb0U7UUFDcEUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEMsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7SUFDckQsSUFBSSxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7SUFDakUsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZGlkSW5mcmFzdHJ1Y3R1cmVCb290KFxuICBjb250YWluZXJOYW1lOiBzdHJpbmcgPSBcImJvb3Qtb3JnLWMtcGVlci0wXCJcbik6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGNvbnN0IG91dHB1dCA9IGV4ZWNTeW5jKFxuICAgICAgYGRvY2tlciBpbnNwZWN0ICR7Y29udGFpbmVyTmFtZX0gLS1mb3JtYXQ9J3t7LlN0YXRlLkV4aXRDb2RlfX0nYFxuICAgIClcbiAgICAgIC50b1N0cmluZygpXG4gICAgICAudHJpbSgpO1xuXG4gICAgcmV0dXJuIG91dHB1dCA9PT0gXCIwXCI7XG4gIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgY29uc29sZS5lcnJvcihcIkVycm9yIGluc3BlY3RpbmcgY29udGFpbmVyOlwiLCBlcnIubWVzc2FnZSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbnN1cmVJbmZyYXN0cnVjdHVyZUJvb3RlZChcbiAgY29udGFpbmVyTmFtZTogc3RyaW5nID0gXCJib290LW9yZy1jLXBlZXItMFwiLFxuICB0aW1lb3V0OiBudW1iZXIgPSA1MDAwLFxuICBhdHRlbXB0czogbnVtYmVyID0gMTBcbik6IFByb21pc2U8dm9pZD4ge1xuICB3aGlsZSAoIWRpZEluZnJhc3RydWN0dXJlQm9vdChjb250YWluZXJOYW1lKSkge1xuICAgIGlmICgtLWF0dGVtcHRzIDw9IDApIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiZXhjZWVkZWQgYWxsb3dlZCBhdHRlbXB0c1wiKTtcblxuICAgIGNvbnNvbGUubG9nKFwiV2FpdGluZyBmb3IgaW5mcmFzdHJ1Y3R1cmUgdG8gYm9vdC4uLlwiKTtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCB0aW1lb3V0KSk7IC8vIFdhaXQgZm9yIDUgc2Vjb25kcyBiZWZvcmUgcmV0cnlpbmdcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFja2FnZUNvbnRyYWN0KFxuICBkb2NrZXJOYW1lOiBzdHJpbmcsXG4gIGNvbnRyYWN0Rm9sZGVyOiBzdHJpbmcsXG4gIGNvbnRyYWN0TmFtZTogc3RyaW5nLFxuICB2ZXJzaW9uOiBzdHJpbmcgPSBcIjEuMFwiXG4pOiB2b2lkIHtcbiAgZXhlY1N5bmMoYGRvY2tlciBleGVjICR7ZG9ja2VyTmFtZX0gbm9kZSAuL3dlYXZlci9saWIvY29yZS9jbGkuY2pzIHBhY2thZ2UtY2hhaW5jb2RlIC1kIFxcXG4gICAgLS1jaGFpbmNvZGUtcGF0aCAuL3dlYXZlci9jaGFpbmNvZGUvJHtjb250cmFjdEZvbGRlcn0gXFxcbiAgICAtLWxhbmcgbm9kZSBcXFxuICAgIC0tY2hhaW5jb2RlLW91dHB1dCAvd2VhdmVyL3BlZXIvJHtjb250cmFjdE5hbWV9LnRhci5neiBcXFxuICAgIC0tY2hhaW5jb2RlLW5hbWUgJHtjb250cmFjdE5hbWV9IFxcXG4gICAgLS1jaGFpbmNvZGUtdmVyc2lvbiAke3ZlcnNpb259IC1zXG4gICAgYCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YWxsQ29udHJhY3QoZG9ja2VyTmFtZTogc3RyaW5nLCBjb250cmFjdE5hbWU6IHN0cmluZykge1xuICBleGVjU3luYyhcbiAgICBgZG9ja2VyIGV4ZWMgJHtkb2NrZXJOYW1lfSBub2RlIC4vd2VhdmVyL2xpYi9jb3JlL2NsaS5janMgaW5zdGFsbC1jaGFpbmNvZGUgLWQgLXMgLS1jaGFpbmNvZGUtcGF0aCAuL3dlYXZlci9wZWVyLyR7Y29udHJhY3ROYW1lfS50YXIuZ3pgXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHByb3ZlQ29udHJhY3QoXG4gIGRvY2tlck5hbWU6IHN0cmluZyxcbiAgY29udHJhY3ROYW1lOiBzdHJpbmcsXG4gIHRsc0NlcnROYW1lOiBzdHJpbmcsXG4gIHNlcXVlbmNlOiBudW1iZXIgPSAxLFxuICB2ZXJzaW9uOiBzdHJpbmcgPSBcIjEuMFwiLFxuICBjb2xsZWN0aW9uc0NvbmZpZz86IHN0cmluZ1xuKSB7XG4gIGNvbnN0IGNvbGxlY3Rpb25zRmxhZyA9IGNvbGxlY3Rpb25zQ29uZmlnXG4gICAgPyBgIC0tY29sbGVjdGlvbnMtY29uZmlnIFwiJHtjb2xsZWN0aW9uc0NvbmZpZ31cImBcbiAgICA6IFwiXCI7XG4gIGV4ZWNTeW5jKGBkb2NrZXIgZXhlYyAke2RvY2tlck5hbWV9IG5vZGUgLi93ZWF2ZXIvbGliL2NvcmUvY2xpLmNqcyBhcHByb3ZlLWNoYWluY29kZSAtZCAtcyBcXFxuICAgIC0tb3JkZXJlci1hZGRyZXNzIG9yZy1hLW9yZGVyZXItMDo3MDIxIFxcXG4gICAgLS1jaGFubmVsLWlkIHNpbXBsZS1jaGFubmVsIFxcXG4gICAgLS1jaGFpbmNvZGUtbmFtZSAke2NvbnRyYWN0TmFtZX0gXFxcbiAgICAtLWNoYWluY29kZS12ZXJzaW9uICR7dmVyc2lvbn0gXFxcbiAgICAtLXNlcXVlbmNlICR7c2VxdWVuY2V9JHtjb2xsZWN0aW9uc0ZsYWd9IFxcXG4gICAgLS1lbmFibGUtdGxzIFxcXG4gICAgLS10bHMtY2EtY2VydC1maWxlIC93ZWF2ZXIvcGVlci8ke3Rsc0NlcnROYW1lfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVwbG95Q29udHJhY3QoXG4gIGNvbnRyYWN0Rm9sZGVyOiBzdHJpbmcsXG4gIGNvbnRyYWN0TmFtZTogc3RyaW5nLFxuICB2ZXJzaW9uOiBzdHJpbmcgPSBcIjEuMFwiLFxuICBwZWVyczogc3RyaW5nW10gPSBbXCJvcmctYS1wZWVyLTBcIiwgXCJvcmctYi1wZWVyLTBcIiwgXCJvcmctYy1wZWVyLTBcIl1cbikge1xuICBsZXQgc2VxdWVuY2U6IG51bWJlcjtcbiAgY29uc3QgY291bnRQYXRoID0gcGF0aC5yZXNvbHZlKFxuICAgIHBhdGguam9pbihcbiAgICAgIGAke19fZGlybmFtZX1gLFxuICAgICAgXCIuLlwiLFxuICAgICAgXCJpbnRlZ3JhdGlvblwiLFxuICAgICAgXCJjaGFpbmNvZGVUcmFja2Vyc1wiLFxuICAgICAgYCR7Y29udHJhY3ROYW1lfS5jb3VudGBcbiAgICApXG4gICk7XG4gIHRyeSB7XG4gICAgc2VxdWVuY2UgPSBwYXJzZUludChmcy5yZWFkRmlsZVN5bmMoY291bnRQYXRoKS50b1N0cmluZyhcInV0Zi04XCIpKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICBzZXF1ZW5jZSA9IDE7XG4gIH1cbiAgZnMud3JpdGVGaWxlU3luYyhjb3VudFBhdGgsIHNlcXVlbmNlLnRvU3RyaW5nKCkpO1xuXG4gIHRyeSB7XG4gICAgZm9yIChjb25zdCBwZWVyIG9mIHBlZXJzKSB7XG4gICAgICBwYWNrYWdlQ29udHJhY3QocGVlciwgY29udHJhY3RGb2xkZXIsIGNvbnRyYWN0TmFtZSwgdmVyc2lvbik7XG4gICAgICBpbnN0YWxsQ29udHJhY3QocGVlciwgY29udHJhY3ROYW1lKTtcbiAgICAgIGFwcHJvdmVDb250cmFjdChcbiAgICAgICAgcGVlcixcbiAgICAgICAgY29udHJhY3ROYW1lLFxuICAgICAgICBwZWVyID09PSBcIm9yZy1hLXBlZXItMFwiID8gXCJ0bHMtY2EtY2VydC5wZW1cIiA6IFwib3JkZXJlci10bHMtY2EtY2VydC5wZW1cIixcbiAgICAgICAgc2VxdWVuY2UsXG4gICAgICAgIHZlcnNpb25cbiAgICAgICk7XG4gICAgfVxuICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKFwiRXJyb3IgZGVwbG95aW5nIGNvbnRyYWN0OlwiLCBlcnIubWVzc2FnZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbW1pdENoYWluY29kZShcbiAgY29udHJhY3ROYW1lOiBzdHJpbmcsXG4gIHNlcXVlbmNlOiBudW1iZXIgPSAxLFxuICB2ZXJzaW9uOiBzdHJpbmcgPSBcIjEuMFwiLFxuICBjb2xsZWN0aW9uc0NvbmZpZz86IHN0cmluZ1xuKTogdm9pZCB7XG4gIGNvbnN0IGNvbGxlY3Rpb25zRmxhZyA9IGNvbGxlY3Rpb25zQ29uZmlnXG4gICAgPyBgIC0tY29sbGVjdGlvbnMtY29uZmlnIFwiJHtjb2xsZWN0aW9uc0NvbmZpZ31cImBcbiAgICA6IFwiXCI7XG4gIGV4ZWNTeW5jKGBkb2NrZXIgZXhlYyBvcmctYS1wZWVyLTAgbm9kZSAuL3dlYXZlci9saWIvY29yZS9jbGkuY2pzIGNvbW1pdC1jaGFpbmNvZGUgLWQgLXMgXFxcbiAgICAtLW9yZGVyZXItYWRkcmVzcyBvcmctYS1vcmRlcmVyLTA6NzAyMSBcXFxuICAgIC0tY2hhbm5lbC1pZCBzaW1wbGUtY2hhbm5lbCBcXFxuICAgIC0tY2hhaW5jb2RlLW5hbWUgJHtjb250cmFjdE5hbWV9IFxcXG4gICAgLS1jaGFpbmNvZGUtdmVyc2lvbiAke3ZlcnNpb259IFxcXG4gICAgLS1zZXF1ZW5jZSAke3NlcXVlbmNlfSR7Y29sbGVjdGlvbnNGbGFnfSBcXFxuICAgIC0tZW5hYmxlLXRscyBcXFxuICAgIC0tdGxzLWNhLWNlcnQtZmlsZSAvd2VhdmVyL3BlZXIvdGxzLWNhLWNlcnQucGVtIFxcXG4gICAgLS1wZWVyLWFkZHJlc3NlcyBvcmctYS1wZWVyLTA6NzAzMSxvcmctYi1wZWVyLTA6NzAzMixvcmctYy1wZWVyLTA6NzAzMyBcXFxuICAgIC0tcGVlci1yb290LXRscyAuL3dlYXZlci9wZWVyL3Rscy1jYS1jZXJ0LnBlbSwuL3dlYXZlci9wZWVyL29yZy1iLXRscy1jYS1jZXJ0LnBlbSwuL3dlYXZlci9wZWVyL29yZy1jLXRscy1jYS1jZXJ0LnBlbWApO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlQ29udHJhY3RSZWFkaW5lc3MoXG4gIGNvbnRyYWN0TmFtZTogc3RyaW5nLFxuICBkb2NrZXJOYW1lOiBzdHJpbmcgPSBcIm9yZy1hLXBlZXItMFwiLFxuICB0bHNDZXJ0OiBzdHJpbmcgPSBcInRscy1jYS1jZXJ0LnBlbVwiLFxuICBjb3VudGVyID0gMFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgdHJ5IHtcbiAgICAvLyBQcmVwYXJlIHRoZSBKU09OIGFyZ3VtZW50IGZvciB0aGUgY2hhaW5jb2RlXG4gICAgY29uc3QgY2hhaW5jb2RlQXJncyA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGZ1bmN0aW9uOiBcImhlYWx0aGNoZWNrXCIsXG4gICAgICBBcmdzOiBbXSxcbiAgICB9KTtcblxuICAgIGlmIChjb3VudGVyID4gMTApIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIC8vIEludm9rZSB0aGUgY2hhaW5jb2RlXG4gICAgY29uc3QgcmVzID0gZXhlY1N5bmMoXG4gICAgICBgZG9ja2VyIGV4ZWMgJHtkb2NrZXJOYW1lfSBwZWVyIGNoYWluY29kZSBxdWVyeSBcXFxuICAgICAgICAtQyBzaW1wbGUtY2hhbm5lbCBcXFxuICAgICAgICAtbiAke2NvbnRyYWN0TmFtZX0gXFxcbiAgICAgICAgLWMgJyR7Y2hhaW5jb2RlQXJnc30nIFxcXG4gICAgICAgIC0tdGxzIC0tY2FmaWxlIC93ZWF2ZXIvcGVlci8ke3Rsc0NlcnR9YFxuICAgICk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBKU09OLnBhcnNlKHJlcy50b1N0cmluZygpKTtcblxuICAgIHJldHVybiByZXN1bHQuaGVhbHRoY2hlY2sudG9TdHJpbmcoKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgY29uc29sZS5sb2coXCJDaGFpbmNvZGUgbm90IHJlYWR5LiBSZXRyeWluZy4uLlwiKTtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCA1MDAwKSk7IC8vIFdhaXQgZm9yIDUgc2Vjb25kcyBiZWZvcmUgcmV0cnlpbmdcbiAgICByZXR1cm4gZW5zdXJlQ29udHJhY3RSZWFkaW5lc3MoXG4gICAgICBjb250cmFjdE5hbWUsXG4gICAgICBkb2NrZXJOYW1lLFxuICAgICAgdGxzQ2VydCxcbiAgICAgIGNvdW50ZXIrK1xuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyaW0oc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zb2xlLndhcm4oXCJDb250cmFjdCBub3QgdHJpbW1pbmcgcmVzcG9uc2UgcHJvcGVybHk6IFwiLCBzdHIpO1xuICByZXR1cm4gc3RyLnRyaW0oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludm9rZUNoYWluY29kZShcbiAgY29udHJhY3ROYW1lOiBzdHJpbmcsXG4gIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICBhcmdzOiBhbnlbXSxcbiAgdHJhbnNpZW50OiBhbnkgPSB7fSxcbiAgZG9ja2VyTmFtZTogc3RyaW5nID0gXCJvcmctYS1wZWVyLTBcIixcbiAgdGxzOiBzdHJpbmcgPSBcInRscy1jYS1jZXJ0LnBlbVwiXG4pIHtcbiAgLy8gUHJlcGFyZSB0aGUgSlNPTiBhcmd1bWVudCBmb3IgdGhlIGNoYWluY29kZVxuICBjb25zdCBjaGFpbmNvZGVBcmdzID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgIGZ1bmN0aW9uOiBmdW5jdGlvbk5hbWUsXG4gICAgQXJnczogYXJncyxcbiAgfSk7XG5cbiAgY29uc3QgdHJhbnNpZW50RGF0YSA9IEpTT04uc3RyaW5naWZ5KHRyYW5zaWVudCk7XG4gIGNvbnN0IHRyYW5zaWVudFN0cmluZyA9IGAtLXRyYW5zaWVudCAnJHt0cmFuc2llbnREYXRhfSdgO1xuXG4gIC8vIEludm9rZSB0aGUgY2hhaW5jb2RlXG4gIHJldHVybiBleGVjU3luYyhcbiAgICBgZG9ja2VyIGV4ZWMgJHtkb2NrZXJOYW1lfSBwZWVyIGNoYWluY29kZSBpbnZva2UgXFxcbiAgICAtQyBzaW1wbGUtY2hhbm5lbCBcXFxuICAgIC1uICR7Y29udHJhY3ROYW1lfSBcXFxuICAgIC1jICcke2NoYWluY29kZUFyZ3N9JyBcXFxuICAgIC0tcGVlckFkZHJlc3NlcyBvcmctYS1wZWVyLTA6NzAzMSBcXFxuICAgIC0tdGxzUm9vdENlcnRGaWxlcyAvd2VhdmVyL3BlZXIvdGxzLWNhLWNlcnQucGVtIFxcXG4gICAgLS1wZWVyQWRkcmVzc2VzIG9yZy1iLXBlZXItMDo3MDMyIFxcXG4gICAgLS10bHNSb290Q2VydEZpbGVzIC93ZWF2ZXIvcGVlci9vcmctYi10bHMtY2EtY2VydC5wZW0gXFxcbiAgICAtLXBlZXJBZGRyZXNzZXMgb3JnLWMtcGVlci0wOjcwMzMgXFxcbiAgICAtLXRsc1Jvb3RDZXJ0RmlsZXMgL3dlYXZlci9wZWVyL29yZy1jLXRscy1jYS1jZXJ0LnBlbSBcXFxuICAgIC1vIG9yZy1hLW9yZGVyZXItMDo3MDIxIFxcXG4gICAgLS10bHMgLS1jYWZpbGUgL3dlYXZlci9wZWVyLyR7dGxzfSBcXFxuICAgICR7dHJhbnNpZW50ID8gdHJhbnNpZW50U3RyaW5nIDogXCJcIn1gXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBxdWVyeUNoYWluY29kZShcbiAgY29udHJhY3ROYW1lOiBzdHJpbmcsXG4gIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICBhcmdzOiBhbnlbXSxcbiAgZG9ja2VyTmFtZTogc3RyaW5nID0gXCJvcmctYS1wZWVyLTBcIixcbiAgdGxzOiBzdHJpbmcgPSBcInRscy1jYS1jZXJ0LnBlbVwiXG4pIHtcbiAgdHJ5IHtcbiAgICAvLyBQcmVwYXJlIHRoZSBKU09OIGFyZ3VtZW50IGZvciB0aGUgY2hhaW5jb2RlXG4gICAgY29uc3QgY2hhaW5jb2RlQXJncyA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGZ1bmN0aW9uOiBmdW5jdGlvbk5hbWUsXG4gICAgICBBcmdzOiBhcmdzLFxuICAgIH0pO1xuXG4gICAgLy8gSW52b2tlIHRoZSBjaGFpbmNvZGVcbiAgICBjb25zdCByZXMgPSBleGVjU3luYyhcbiAgICAgIGBkb2NrZXIgZXhlYyAke2RvY2tlck5hbWV9IHBlZXIgY2hhaW5jb2RlIHF1ZXJ5IFxcXG4gICAgICAgIC1DIHNpbXBsZS1jaGFubmVsIFxcXG4gICAgICAgIC1uICR7Y29udHJhY3ROYW1lfSBcXFxuICAgICAgICAtYyAnJHtjaGFpbmNvZGVBcmdzfScgXFxcbiAgICAgICAgLS10bHMgLS1jYWZpbGUgJHt0bHN9YFxuICAgICk7XG5cbiAgICBjb25zdCBwcm9jZXNzZWQgPSByZXMudG9TdHJpbmcoKTtcbiAgICBjb25zb2xlLmxvZyhcIkJsb2NrY2hhaW4gcmVhZDpcIiwgcHJvY2Vzc2VkKTtcblxuICAgIHJldHVybiBwcm9jZXNzZWQ7XG4gIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgY29uc29sZS5sb2coXCJGYWlsZWQgdG8gcmVhZCBibG9ja2NoYWluXCIpO1xuICAgIHRocm93IGVycjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlUHJpdmF0ZUNoYWluY29kZShcbiAgY29udHJhY3ROYW1lOiBzdHJpbmcsXG4gIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICBhcmdzOiBhbnlbXSxcbiAgdHJhbnNpZW50OiBhbnkgPSB7fSxcbiAgZG9ja2VyTmFtZTogc3RyaW5nID0gXCJvcmctYS1wZWVyLTBcIixcbiAgdGxzOiBzdHJpbmcgPSBcInRscy1jYS1jZXJ0LnBlbVwiXG4pIHtcbiAgLy8gUHJlcGFyZSB0aGUgSlNPTiBhcmd1bWVudCBmb3IgdGhlIGNoYWluY29kZVxuICBjb25zdCBjaGFpbmNvZGVBcmdzID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgIGZ1bmN0aW9uOiBmdW5jdGlvbk5hbWUsXG4gICAgQXJnczogYXJncyxcbiAgfSk7XG5cbiAgY29uc3QgdHJhbnNpZW50RGF0YSA9IEpTT04uc3RyaW5naWZ5KHRyYW5zaWVudCk7XG4gIGNvbnN0IHRyYW5zaWVudFN0cmluZyA9IGAtLXRyYW5zaWVudCAnJHt0cmFuc2llbnREYXRhfSdgO1xuXG4gIC8vIEludm9rZSB0aGUgY2hhaW5jb2RlXG4gIHJldHVybiBleGVjU3luYyhcbiAgICBgZG9ja2VyIGV4ZWMgJHtkb2NrZXJOYW1lfSBwZWVyIGNoYWluY29kZSBpbnZva2UgXFxcbiAgICAtQyBzaW1wbGUtY2hhbm5lbCBcXFxuICAgIC1uICR7Y29udHJhY3ROYW1lfSBcXFxuICAgIC1jICcke2NoYWluY29kZUFyZ3N9JyBcXFxuICAgIC0tcGVlckFkZHJlc3NlcyBvcmctYS1wZWVyLTA6NzAzMSBcXFxuICAgIC0tdGxzUm9vdENlcnRGaWxlcyAvd2VhdmVyL3BlZXIvdGxzLWNhLWNlcnQucGVtIFxcXG4gICAgLW8gb3JnLWEtb3JkZXJlci0wOjcwMjEgXFxcbiAgICAtLXRscyAtLWNhZmlsZSAvd2VhdmVyL3BlZXIvJHt0bHN9IFxcXG4gICAgJHt0cmFuc2llbnQgPyB0cmFuc2llbnRTdHJpbmcgOiBcIlwifWBcbiAgKTtcblxuICAvLyAgIC0tcGVlckFkZHJlc3NlcyBvcmctYi1wZWVyLTA6NzAzMiBcXFxuICAvLyAtLXRsc1Jvb3RDZXJ0RmlsZXMgL3dlYXZlci9wZWVyL29yZy1iLXRscy1jYS1jZXJ0LnBlbSBcXFxuICAvLyAtLXBlZXJBZGRyZXNzZXMgb3JnLWMtcGVlci0wOjcwMzMgXFxcbiAgLy8gLS10bHNSb290Q2VydEZpbGVzIC93ZWF2ZXIvcGVlci9vcmctYy10bHMtY2EtY2VydC5wZW0gXFxcbn1cblxuZXhwb3J0IGVudW0gU2NyaXB0Q29tbWFuZHMge1xuICBTVEFSVCA9IFwiZmFicmljLWNoYWluY29kZS1ub2RlIHN0YXJ0IFxcXG4gICAgICAgICAgLS1ncnBjLm1heF9yZWNlaXZlX21lc3NhZ2VfbGVuZ3RoICR7Q0hBSU5DT0RFX01BWFJFQ1ZNU0dTSVpFLTE1NzI4NjQwfSBcXFxuICAgICAgICAgIC0tZ3JwYy5tYXhfc2VuZF9tZXNzYWdlX2xlbmd0aCAke0NIQUlOQ09ERV9NQVhTRU5ETVNHU0laRS0xNTcyODY0MH0gXCIsXG4gIFNUQVJUX0NDQUFTID0gXCJmYWJyaWMtY2hhaW5jb2RlLW5vZGUgc2VydmVyIFxcXG4gICAgICAgICAgLS1jaGFpbmNvZGUtYWRkcmVzcz0kQ0hBSU5DT0RFX1NFUlZFUl9BRERSRVNTIFxcXG4gICAgICAgICAgLS1jaGFpbmNvZGUtaWQ9JENIQUlOQ09ERV9JRCBcXFxuICAgICAgICAgIC0tY2hhaW5jb2RlLXRscy1jZXJ0LWZpbGU9JHtDSEFJTkNPREVfVExTX0NFUlR9IFxcXG4gICAgICAgICAgLS1jaGFpbmNvZGUtdGxzLWtleS1maWxlPSR7Q0hBSU5DT0RFX1RMU19LRVl9IFxcXG4gICAgICAgICAgLS1ncnBjLm1heF9yZWNlaXZlX21lc3NhZ2VfbGVuZ3RoICR7Q0hBSU5DT0RFX01BWFJFQ1ZNU0dTSVpFLTE1NzI4NjQwfSBcXFxuICAgICAgICAgIC0tZ3JwYy5tYXhfc2VuZF9tZXNzYWdlX2xlbmd0aCAke0NIQUlOQ09ERV9NQVhTRU5ETVNHU0laRS0xNTcyODY0MH0gXFxcbiAgICAgICAgICAtLXRscy5lbmFibGVkPXRydWVcIixcbiAgU1RBUlRfQ0NBQVNfREVCVUcgPSBcIm5vZGUgLS1pbnNwZWN0PTAuMC4wLjA6OTIyOSAuL25vZGVfbW9kdWxlcy8uYmluL2ZhYnJpYy1jaGFpbmNvZGUtbm9kZSBzZXJ2ZXIgXFxcbiAgICAgICAgICAtLWNoYWluY29kZS1hZGRyZXNzPSRDSEFJTkNPREVfU0VSVkVSX0FERFJFU1MgXFxcbiAgICAgICAgICAtLWNoYWluY29kZS1pZD0kQ0hBSU5DT0RFX0lEIFxcXG4gICAgICAgICAgLS1jaGFpbmNvZGUtdGxzLWNlcnQtZmlsZT0ke0NIQUlOQ09ERV9UTFNfQ0VSVH0gXFxcbiAgICAgICAgICAtLWNoYWluY29kZS10bHMta2V5LWZpbGU9JHtDSEFJTkNPREVfVExTX0tFWX0gXFxcbiAgICAgICAgICAtLWdycGMubWF4X3JlY2VpdmVfbWVzc2FnZV9sZW5ndGggJHtDSEFJTkNPREVfTUFYUkVDVk1TR1NJWkUtMTU3Mjg2NDB9IFxcXG4gICAgICAgICAgLS1ncnBjLm1heF9zZW5kX21lc3NhZ2VfbGVuZ3RoICR7Q0hBSU5DT0RFX01BWFNFTkRNU0dTSVpFLTE1NzI4NjQwfSBcXFxuICAgICAgICAgIC0tdGxzLmVuYWJsZWQ9dHJ1ZVwiLFxuICBTVEFSVF9ERUJVRyA9IFwibm9kZSAtLWluc3BlY3Q9MC4wLjAuMDo5MjI5IC91c3IvbG9jYWwvc3JjL25vZGVfbW9kdWxlcy8uYmluL2ZhYnJpYy1jaGFpbmNvZGUtbm9kZSBzdGFydCBcXFxuICAgICAgICAgIC0tZ3JwYy5tYXhfcmVjZWl2ZV9tZXNzYWdlX2xlbmd0aCAke0NIQUlOQ09ERV9NQVhSRUNWTVNHU0laRS0xNTcyODY0MH0gXFxcbiAgICAgICAgICAtLWdycGMubWF4X3NlbmRfbWVzc2FnZV9sZW5ndGggJHtDSEFJTkNPREVfTUFYU0VORE1TR1NJWkUtMTU3Mjg2NDB9XCIsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb250cmFjdFN0YXJ0Q29tbWFuZChcbiAgZGVidWc6IGJvb2xlYW4sXG4gIGNjYWFzOiBib29sZWFuXG4pOiBzdHJpbmcge1xuICBpZiAoY2NhYXMpIHtcbiAgICByZXR1cm4gZGVidWdcbiAgICAgID8gU2NyaXB0Q29tbWFuZHMuU1RBUlRfQ0NBQVNfREVCVUdcbiAgICAgIDogU2NyaXB0Q29tbWFuZHMuU1RBUlRfQ0NBQVM7XG4gIH1cbiAgcmV0dXJuIGRlYnVnID8gU2NyaXB0Q29tbWFuZHMuU1RBUlRfREVCVUcgOiBTY3JpcHRDb21tYW5kcy5TVEFSVDtcbn1cblxuZnVuY3Rpb24gZm9ybWF0RGlhZ25vc3RpY3MoZGlhZ3M6IHJlYWRvbmx5IHRzLkRpYWdub3N0aWNbXSk6IHN0cmluZyB7XG4gIGNvbnN0IGhvc3Q6IHRzLkZvcm1hdERpYWdub3N0aWNzSG9zdCA9IHtcbiAgICBnZXRDYW5vbmljYWxGaWxlTmFtZTogKGYpID0+IGYsXG4gICAgZ2V0Q3VycmVudERpcmVjdG9yeTogdHMuc3lzLmdldEN1cnJlbnREaXJlY3RvcnksXG4gICAgZ2V0TmV3TGluZTogKCkgPT4gdHMuc3lzLm5ld0xpbmUsXG4gIH07XG4gIHJldHVybiB0cy5mb3JtYXREaWFnbm9zdGljc1dpdGhDb2xvckFuZENvbnRleHQoZGlhZ3MsIGhvc3QpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZVdpdGhUc2NvbmZpZ092ZXJyaWRlcyhcbiAgdHNjb25maWdQYXRoOiBzdHJpbmcsXG4gIG92ZXJyaWRlczogUGFydGlhbDx0cy5Db21waWxlck9wdGlvbnM+XG4pOiB2b2lkIHtcbiAgY29uc3QgYWJzQ29uZmlnUGF0aCA9IHBhdGguaXNBYnNvbHV0ZSh0c2NvbmZpZ1BhdGgpXG4gICAgPyB0c2NvbmZpZ1BhdGhcbiAgICA6IHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCB0c2NvbmZpZ1BhdGgpO1xuXG4gIC8vIDEpIFJlYWQgdGhlIHRzY29uZmlnLmpzb25cbiAgY29uc3QgY29uZmlnRmlsZSA9IHRzLnJlYWRDb25maWdGaWxlKGFic0NvbmZpZ1BhdGgsIHRzLnN5cy5yZWFkRmlsZSk7XG4gIGlmIChjb25maWdGaWxlLmVycm9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdERpYWdub3N0aWNzKFtjb25maWdGaWxlLmVycm9yXSkpO1xuICB9XG5cbiAgLy8gMikgUGFyc2UgaXQgKHJlc29sdmVzIFwiZXh0ZW5kc1wiLCBpbmNsdWRlL2V4Y2x1ZGUvZmlsZXMsIGV0Yy4pXG4gIGNvbnN0IGNvbmZpZ0RpciA9IHBhdGguZGlybmFtZShhYnNDb25maWdQYXRoKTtcbiAgY29uc3QgcGFyc2VkID0gdHMucGFyc2VKc29uQ29uZmlnRmlsZUNvbnRlbnQoXG4gICAgY29uZmlnRmlsZS5jb25maWcsXG4gICAgdHMuc3lzLFxuICAgIGNvbmZpZ0RpcixcbiAgICAvKmV4aXN0aW5nT3B0aW9ucyovIHVuZGVmaW5lZCxcbiAgICBhYnNDb25maWdQYXRoXG4gICk7XG5cbiAgaWYgKHBhcnNlZC5lcnJvcnMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdERpYWdub3N0aWNzKHBhcnNlZC5lcnJvcnMpKTtcbiAgfVxuXG4gIC8vIDMpIE92ZXJyaWRlIGNvbXBpbGVyIG9wdGlvbnMgaW4tbWVtb3J5XG4gIGNvbnN0IG9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucyA9IHtcbiAgICAuLi5wYXJzZWQub3B0aW9ucyxcbiAgICAuLi5vdmVycmlkZXMsXG4gIH07XG5cbiAgLy8gT3B0aW9uYWw6IElmIHlvdSBvdmVycmlkZSBvdXREaXIvcm9vdERpciwgZW5zdXJlIHRoZXnigJlyZSBhYnNvbHV0ZVxuICAvLyB0byBhdm9pZCBzdXJwcmlzZXMgZGVwZW5kaW5nIG9uIENXRC5cbiAgaWYgKG9wdGlvbnMub3V0RGlyKSBvcHRpb25zLm91dERpciA9IHBhdGgucmVzb2x2ZShjb25maWdEaXIsIG9wdGlvbnMub3V0RGlyKTtcbiAgaWYgKG9wdGlvbnMucm9vdERpcilcbiAgICBvcHRpb25zLnJvb3REaXIgPSBwYXRoLnJlc29sdmUoY29uZmlnRGlyLCBvcHRpb25zLnJvb3REaXIpO1xuXG4gIC8vIDQpIENyZWF0ZSBwcm9ncmFtICsgZW1pdFxuICBjb25zdCBwcm9ncmFtID0gdHMuY3JlYXRlUHJvZ3JhbSh7XG4gICAgcm9vdE5hbWVzOiBwYXJzZWQuZmlsZU5hbWVzLFxuICAgIG9wdGlvbnMsXG4gICAgcHJvamVjdFJlZmVyZW5jZXM6IHBhcnNlZC5wcm9qZWN0UmVmZXJlbmNlcyxcbiAgfSk7XG5cbiAgY29uc3QgcHJlRW1pdCA9IHRzLmdldFByZUVtaXREaWFnbm9zdGljcyhwcm9ncmFtKTtcbiAgaWYgKHByZUVtaXQubGVuZ3RoKSB7XG4gICAgLy8gSWYgeW91IHdhbnQgXCJ0cmFuc3BpbGUgYW55d2F5XCIsIHlvdSBjYW4gY2hvb3NlIHRvIG5vdCB0aHJvdyBoZXJlLlxuICAgIHRocm93IG5ldyBFcnJvcihmb3JtYXREaWFnbm9zdGljcyhwcmVFbWl0KSk7XG4gIH1cblxuICBjb25zdCBlbWl0UmVzdWx0ID0gcHJvZ3JhbS5lbWl0KCk7XG4gIGNvbnN0IGVtaXREaWFnbm9zdGljcyA9IGVtaXRSZXN1bHQuZGlhZ25vc3RpY3MgPz8gW107XG4gIGlmIChlbWl0RGlhZ25vc3RpY3MubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdERpYWdub3N0aWNzKGVtaXREaWFnbm9zdGljcykpO1xuICB9XG5cbiAgaWYgKGVtaXRSZXN1bHQuZW1pdFNraXBwZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJFbWl0IHdhcyBza2lwcGVkIChjaGVjayBkaWFnbm9zdGljcyBhYm92ZSkuXCIpO1xuICB9XG59XG4iXX0=
309
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2xpLXV0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUtBLHNEQVdDO0FBQ0QsZ0VBT0M7QUFDRCwwQ0FRQztBQUNELDBDQUVDO0FBQ0QsMENBWUM7QUFDRCx3Q0FxQkM7QUFDRCwwQ0FjQztBQUNELDBEQXlCQztBQUNELG9CQUdDO0FBQ0QsMENBc0JDO0FBQ0Qsd0NBcUJDO0FBQ0Qsd0RBc0JDO0FBUUQsMERBT0M7QUFTRCxvRUE4Q0M7QUE5UEQsaURBQXlDO0FBQ3pDLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0IsMkRBQXdEO0FBQ3hELDREQUE0QjtBQUM1QixTQUFnQixxQkFBcUIsQ0FBQyxhQUFhLEdBQUcsbUJBQW1CO0lBQ3JFLElBQUksQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLElBQUEsd0JBQVEsRUFBQyxrQkFBa0IsYUFBYSxpQ0FBaUMsQ0FBQzthQUNwRixRQUFRLEVBQUU7YUFDVixJQUFJLEVBQUUsQ0FBQztRQUNaLE9BQU8sTUFBTSxLQUFLLEdBQUcsQ0FBQztJQUMxQixDQUFDO0lBQ0QsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7QUFDTCxDQUFDO0FBQ00sS0FBSyxVQUFVLDBCQUEwQixDQUFDLGFBQWEsR0FBRyxtQkFBbUIsRUFBRSxPQUFPLEdBQUcsSUFBSSxFQUFFLFFBQVEsR0FBRyxFQUFFO0lBQy9HLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQzNDLElBQUksRUFBRSxRQUFRLElBQUksQ0FBQztZQUNmLE1BQU0sSUFBSSw2QkFBYSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDekQs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RCwyQkFBMkI7SUFDM0IsTUFBTSxPQUFPLEdBQUcsb0JBQUUsQ0FBQyxhQUFhLENBQUM7UUFDN0IsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1FBQzNCLE9BQU87UUFDUCxpQkFBaUIsRUFBRSxNQUFNLENBQUMsaUJBQWlCO0tBQzlDLENBQUMsQ0FBQztJQUNILE1BQU0sT0FBTyxHQUFHLG9CQUFFLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEQsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDakIsb0VBQW9FO1FBQ3BFLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xDLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO0lBQ3JELElBQUksZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBQ0QsSUFBSSxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7QUFDTCxDQUFDO0FBQ0QsMHgxQkFBMHgxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5leHBvcnQgZnVuY3Rpb24gZGlkSW5mcmFzdHJ1Y3R1cmVCb290KGNvbnRhaW5lck5hbWUgPSBcImJvb3Qtb3JnLWMtcGVlci0wXCIpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBvdXRwdXQgPSBleGVjU3luYyhgZG9ja2VyIGluc3BlY3QgJHtjb250YWluZXJOYW1lfSAtLWZvcm1hdD0ne3suU3RhdGUuRXhpdENvZGV9fSdgKVxuICAgICAgICAgICAgLnRvU3RyaW5nKClcbiAgICAgICAgICAgIC50cmltKCk7XG4gICAgICAgIHJldHVybiBvdXRwdXQgPT09IFwiMFwiO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBpbnNwZWN0aW5nIGNvbnRhaW5lcjpcIiwgZXJyLm1lc3NhZ2UpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZUluZnJhc3RydWN0dXJlQm9vdGVkKGNvbnRhaW5lck5hbWUgPSBcImJvb3Qtb3JnLWMtcGVlci0wXCIsIHRpbWVvdXQgPSA1MDAwLCBhdHRlbXB0cyA9IDEwKSB7XG4gICAgd2hpbGUgKCFkaWRJbmZyYXN0cnVjdHVyZUJvb3QoY29udGFpbmVyTmFtZSkpIHtcbiAgICAgICAgaWYgKC0tYXR0ZW1wdHMgPD0gMClcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiZXhjZWVkZWQgYWxsb3dlZCBhdHRlbXB0c1wiKTtcbiAgICAgICAgY29uc29sZS5sb2coXCJXYWl0aW5nIGZvciBpbmZyYXN0cnVjdHVyZSB0byBib290Li4uXCIpO1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCB0aW1lb3V0KSk7IC8vIFdhaXQgZm9yIDUgc2Vjb25kcyBiZWZvcmUgcmV0cnlpbmdcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gcGFja2FnZUNvbnRyYWN0KGRvY2tlck5hbWUsIGNvbnRyYWN0Rm9sZGVyLCBjb250cmFjdE5hbWUsIHZlcnNpb24gPSBcIjEuMFwiKSB7XG4gICAgZXhlY1N5bmMoYGRvY2tlciBleGVjICR7ZG9ja2VyTmFtZX0gbm9kZSAuL3dlYXZlci9saWIvY29yZS9jbGkuY2pzIHBhY2thZ2UtY2hhaW5jb2RlIC1kIFxcXG4gICAgLS1jaGFpbmNvZGUtcGF0aCAuL3dlYXZlci9jaGFpbmNvZGUvJHtjb250cmFjdEZvbGRlcn0gXFxcbiAgICAtLWxhbmcgbm9kZSBcXFxuICAgIC0tY2hhaW5jb2RlLW91dHB1dCAvd2VhdmVyL3BlZXIvJHtjb250cmFjdE5hbWV9LnRhci5neiBcXFxuICAgIC0tY2hhaW5jb2RlLW5hbWUgJHtjb250cmFjdE5hbWV9IFxcXG4gICAgLS1jaGFpbmNvZGUtdmVyc2lvbiAke3ZlcnNpb259IC1zXG4gICAgYCk7XG59XG5leHBvcnQgZnVuY3Rpb24gaW5zdGFsbENvbnRyYWN0KGRvY2tlck5hbWUsIGNvbnRyYWN0TmFtZSkge1xuICAgIGV4ZWNTeW5jKGBkb2NrZXIgZXhlYyAke2RvY2tlck5hbWV9IG5vZGUgLi93ZWF2ZXIvbGliL2NvcmUvY2xpLmNqcyBpbnN0YWxsLWNoYWluY29kZSAtZCAtcyAtLWNoYWluY29kZS1wYXRoIC4vd2VhdmVyL3BlZXIvJHtjb250cmFjdE5hbWV9LnRhci5nemApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFwcHJvdmVDb250cmFjdChkb2NrZXJOYW1lLCBjb250cmFjdE5hbWUsIHRsc0NlcnROYW1lLCBzZXF1ZW5jZSA9IDEsIHZlcnNpb24gPSBcIjEuMFwiLCBjb2xsZWN0aW9uc0NvbmZpZykge1xuICAgIGNvbnN0IGNvbGxlY3Rpb25zRmxhZyA9IGNvbGxlY3Rpb25zQ29uZmlnXG4gICAgICAgID8gYCAtLWNvbGxlY3Rpb25zLWNvbmZpZyBcIiR7Y29sbGVjdGlvbnNDb25maWd9XCJgXG4gICAgICAgIDogXCJcIjtcbiAgICBleGVjU3luYyhgZG9ja2VyIGV4ZWMgJHtkb2NrZXJOYW1lfSBub2RlIC4vd2VhdmVyL2xpYi9jb3JlL2NsaS5janMgYXBwcm92ZS1jaGFpbmNvZGUgLWQgLXMgXFxcbiAgICAtLW9yZGVyZXItYWRkcmVzcyBvcmctYS1vcmRlcmVyLTA6NzAyMSBcXFxuICAgIC0tY2hhbm5lbC1pZCBzaW1wbGUtY2hhbm5lbCBcXFxuICAgIC0tY2hhaW5jb2RlLW5hbWUgJHtjb250cmFjdE5hbWV9IFxcXG4gICAgLS1jaGFpbmNvZGUtdmVyc2lvbiAke3ZlcnNpb259IFxcXG4gICAgLS1zZXF1ZW5jZSAke3NlcXVlbmNlfSR7Y29sbGVjdGlvbnNGbGFnfSBcXFxuICAgIC0tZW5hYmxlLXRscyBcXFxuICAgIC0tdGxzLWNhLWNlcnQtZmlsZSAvd2VhdmVyL3BlZXIvJHt0bHNDZXJ0TmFtZX1gKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkZXBsb3lDb250cmFjdChjb250cmFjdEZvbGRlciwgY29udHJhY3ROYW1lLCB2ZXJzaW9uID0gXCIxLjBcIiwgcGVlcnMgPSBbXCJvcmctYS1wZWVyLTBcIiwgXCJvcmctYi1wZWVyLTBcIiwgXCJvcmctYy1wZWVyLTBcIl0pIHtcbiAgICBsZXQgc2VxdWVuY2U7XG4gICAgY29uc3QgY291bnRQYXRoID0gcGF0aC5yZXNvbHZlKHBhdGguam9pbihgJHtfX2Rpcm5hbWV9YCwgXCIuLlwiLCBcImludGVncmF0aW9uXCIsIFwiY2hhaW5jb2RlVHJhY2tlcnNcIiwgYCR7Y29udHJhY3ROYW1lfS5jb3VudGApKTtcbiAgICB0cnkge1xuICAgICAgICBzZXF1ZW5jZSA9IHBhcnNlSW50KGZzLnJlYWRGaWxlU3luYyhjb3VudFBhdGgpLnRvU3RyaW5nKFwidXRmLThcIikpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIHNlcXVlbmNlID0gMTtcbiAgICB9XG4gICAgZnMud3JpdGVGaWxlU3luYyhjb3VudFBhdGgsIHNlcXVlbmNlLnRvU3RyaW5nKCkpO1xuICAgIHRyeSB7XG4gICAgICAgIGZvciAoY29uc3QgcGVlciBvZiBwZWVycykge1xuICAgICAgICAgICAgcGFja2FnZUNvbnRyYWN0KHBlZXIsIGNvbnRyYWN0Rm9sZGVyLCBjb250cmFjdE5hbWUsIHZlcnNpb24pO1xuICAgICAgICAgICAgaW5zdGFsbENvbnRyYWN0KHBlZXIsIGNvbnRyYWN0TmFtZSk7XG4gICAgICAgICAgICBhcHByb3ZlQ29udHJhY3QocGVlciwgY29udHJhY3ROYW1lLCBwZWVyID09PSBcIm9yZy1hLXBlZXItMFwiID8gXCJ0bHMtY2EtY2VydC5wZW1cIiA6IFwib3JkZXJlci10bHMtY2EtY2VydC5wZW1cIiwgc2VxdWVuY2UsIHZlcnNpb24pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJFcnJvciBkZXBsb3lpbmcgY29udHJhY3Q6XCIsIGVyci5tZXNzYWdlKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gY29tbWl0Q2hhaW5jb2RlKGNvbnRyYWN0TmFtZSwgc2VxdWVuY2UgPSAxLCB2ZXJzaW9uID0gXCIxLjBcIiwgY29sbGVjdGlvbnNDb25maWcpIHtcbiAgICBjb25zdCBjb2xsZWN0aW9uc0ZsYWcgPSBjb2xsZWN0aW9uc0NvbmZpZ1xuICAgICAgICA/IGAgLS1jb2xsZWN0aW9ucy1jb25maWcgXCIke2NvbGxlY3Rpb25zQ29uZmlnfVwiYFxuICAgICAgICA6IFwiXCI7XG4gICAgZXhlY1N5bmMoYGRvY2tlciBleGVjIG9yZy1hLXBlZXItMCBub2RlIC4vd2VhdmVyL2xpYi9jb3JlL2NsaS5janMgY29tbWl0LWNoYWluY29kZSAtZCAtcyBcXFxuICAgIC0tb3JkZXJlci1hZGRyZXNzIG9yZy1hLW9yZGVyZXItMDo3MDIxIFxcXG4gICAgLS1jaGFubmVsLWlkIHNpbXBsZS1jaGFubmVsIFxcXG4gICAgLS1jaGFpbmNvZGUtbmFtZSAke2NvbnRyYWN0TmFtZX0gXFxcbiAgICAtLWNoYWluY29kZS12ZXJzaW9uICR7dmVyc2lvbn0gXFxcbiAgICAtLXNlcXVlbmNlICR7c2VxdWVuY2V9JHtjb2xsZWN0aW9uc0ZsYWd9IFxcXG4gICAgLS1lbmFibGUtdGxzIFxcXG4gICAgLS10bHMtY2EtY2VydC1maWxlIC93ZWF2ZXIvcGVlci90bHMtY2EtY2VydC5wZW0gXFxcbiAgICAtLXBlZXItYWRkcmVzc2VzIG9yZy1hLXBlZXItMDo3MDMxLG9yZy1iLXBlZXItMDo3MDMyLG9yZy1jLXBlZXItMDo3MDMzIFxcXG4gICAgLS1wZWVyLXJvb3QtdGxzIC4vd2VhdmVyL3BlZXIvdGxzLWNhLWNlcnQucGVtLC4vd2VhdmVyL3BlZXIvb3JnLWItdGxzLWNhLWNlcnQucGVtLC4vd2VhdmVyL3BlZXIvb3JnLWMtdGxzLWNhLWNlcnQucGVtYCk7XG59XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlQ29udHJhY3RSZWFkaW5lc3MoY29udHJhY3ROYW1lLCBkb2NrZXJOYW1lID0gXCJvcmctYS1wZWVyLTBcIiwgdGxzQ2VydCA9IFwidGxzLWNhLWNlcnQucGVtXCIsIGNvdW50ZXIgPSAwKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gUHJlcGFyZSB0aGUgSlNPTiBhcmd1bWVudCBmb3IgdGhlIGNoYWluY29kZVxuICAgICAgICBjb25zdCBjaGFpbmNvZGVBcmdzID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgZnVuY3Rpb246IFwiaGVhbHRoY2hlY2tcIixcbiAgICAgICAgICAgIEFyZ3M6IFtdLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGNvdW50ZXIgPiAxMCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSW52b2tlIHRoZSBjaGFpbmNvZGVcbiAgICAgICAgY29uc3QgcmVzID0gZXhlY1N5bmMoYGRvY2tlciBleGVjICR7ZG9ja2VyTmFtZX0gcGVlciBjaGFpbmNvZGUgcXVlcnkgXFxcbiAgICAgICAgLUMgc2ltcGxlLWNoYW5uZWwgXFxcbiAgICAgICAgLW4gJHtjb250cmFjdE5hbWV9IFxcXG4gICAgICAgIC1jICcke2NoYWluY29kZUFyZ3N9JyBcXFxuICAgICAgICAtLXRscyAtLWNhZmlsZSAvd2VhdmVyL3BlZXIvJHt0bHNDZXJ0fWApO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBKU09OLnBhcnNlKHJlcy50b1N0cmluZygpKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5oZWFsdGhjaGVjay50b1N0cmluZygpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJDaGFpbmNvZGUgbm90IHJlYWR5LiBSZXRyeWluZy4uLlwiKTtcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHIpID0+IHNldFRpbWVvdXQociwgNTAwMCkpOyAvLyBXYWl0IGZvciA1IHNlY29uZHMgYmVmb3JlIHJldHJ5aW5nXG4gICAgICAgIHJldHVybiBlbnN1cmVDb250cmFjdFJlYWRpbmVzcyhjb250cmFjdE5hbWUsIGRvY2tlck5hbWUsIHRsc0NlcnQsIGNvdW50ZXIrKyk7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIHRyaW0oc3RyKSB7XG4gICAgY29uc29sZS53YXJuKFwiQ29udHJhY3Qgbm90IHRyaW1taW5nIHJlc3BvbnNlIHByb3Blcmx5OiBcIiwgc3RyKTtcbiAgICByZXR1cm4gc3RyLnRyaW0oKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2VDaGFpbmNvZGUoY29udHJhY3ROYW1lLCBmdW5jdGlvbk5hbWUsIGFyZ3MsIHRyYW5zaWVudCA9IHt9LCBkb2NrZXJOYW1lID0gXCJvcmctYS1wZWVyLTBcIiwgdGxzID0gXCJ0bHMtY2EtY2VydC5wZW1cIikge1xuICAgIC8vIFByZXBhcmUgdGhlIEpTT04gYXJndW1lbnQgZm9yIHRoZSBjaGFpbmNvZGVcbiAgICBjb25zdCBjaGFpbmNvZGVBcmdzID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBmdW5jdGlvbjogZnVuY3Rpb25OYW1lLFxuICAgICAgICBBcmdzOiBhcmdzLFxuICAgIH0pO1xuICAgIGNvbnN0IHRyYW5zaWVudERhdGEgPSBKU09OLnN0cmluZ2lmeSh0cmFuc2llbnQpO1xuICAgIGNvbnN0IHRyYW5zaWVudFN0cmluZyA9IGAtLXRyYW5zaWVudCAnJHt0cmFuc2llbnREYXRhfSdgO1xuICAgIC8vIEludm9rZSB0aGUgY2hhaW5jb2RlXG4gICAgcmV0dXJuIGV4ZWNTeW5jKGBkb2NrZXIgZXhlYyAke2RvY2tlck5hbWV9IHBlZXIgY2hhaW5jb2RlIGludm9rZSBcXFxuICAgIC1DIHNpbXBsZS1jaGFubmVsIFxcXG4gICAgLW4gJHtjb250cmFjdE5hbWV9IFxcXG4gICAgLWMgJyR7Y2hhaW5jb2RlQXJnc30nIFxcXG4gICAgLS1wZWVyQWRkcmVzc2VzIG9yZy1hLXBlZXItMDo3MDMxIFxcXG4gICAgLS10bHNSb290Q2VydEZpbGVzIC93ZWF2ZXIvcGVlci90bHMtY2EtY2VydC5wZW0gXFxcbiAgICAtLXBlZXJBZGRyZXNzZXMgb3JnLWItcGVlci0wOjcwMzIgXFxcbiAgICAtLXRsc1Jvb3RDZXJ0RmlsZXMgL3dlYXZlci9wZWVyL29yZy1iLXRscy1jYS1jZXJ0LnBlbSBcXFxuICAgIC0tcGVlckFkZHJlc3NlcyBvcmctYy1wZWVyLTA6NzAzMyBcXFxuICAgIC0tdGxzUm9vdENlcnRGaWxlcyAvd2VhdmVyL3BlZXIvb3JnLWMtdGxzLWNhLWNlcnQucGVtIFxcXG4gICAgLW8gb3JnLWEtb3JkZXJlci0wOjcwMjEgXFxcbiAgICAtLXRscyAtLWNhZmlsZSAvd2VhdmVyL3BlZXIvJHt0bHN9IFxcXG4gICAgJHt0cmFuc2llbnQgPyB0cmFuc2llbnRTdHJpbmcgOiBcIlwifWApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHF1ZXJ5Q2hhaW5jb2RlKGNvbnRyYWN0TmFtZSwgZnVuY3Rpb25OYW1lLCBhcmdzLCBkb2NrZXJOYW1lID0gXCJvcmctYS1wZWVyLTBcIiwgdGxzID0gXCJ0bHMtY2EtY2VydC5wZW1cIikge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIFByZXBhcmUgdGhlIEpTT04gYXJndW1lbnQgZm9yIHRoZSBjaGFpbmNvZGVcbiAgICAgICAgY29uc3QgY2hhaW5jb2RlQXJncyA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiBmdW5jdGlvbk5hbWUsXG4gICAgICAgICAgICBBcmdzOiBhcmdzLFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gSW52b2tlIHRoZSBjaGFpbmNvZGVcbiAgICAgICAgY29uc3QgcmVzID0gZXhlY1N5bmMoYGRvY2tlciBleGVjICR7ZG9ja2VyTmFtZX0gcGVlciBjaGFpbmNvZGUgcXVlcnkgXFxcbiAgICAgICAgLUMgc2ltcGxlLWNoYW5uZWwgXFxcbiAgICAgICAgLW4gJHtjb250cmFjdE5hbWV9IFxcXG4gICAgICAgIC1jICcke2NoYWluY29kZUFyZ3N9JyBcXFxuICAgICAgICAtLXRscyAtLWNhZmlsZSAke3Rsc31gKTtcbiAgICAgICAgY29uc3QgcHJvY2Vzc2VkID0gcmVzLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiQmxvY2tjaGFpbiByZWFkOlwiLCBwcm9jZXNzZWQpO1xuICAgICAgICByZXR1cm4gcHJvY2Vzc2VkO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiRmFpbGVkIHRvIHJlYWQgYmxvY2tjaGFpblwiKTtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2VQcml2YXRlQ2hhaW5jb2RlKGNvbnRyYWN0TmFtZSwgZnVuY3Rpb25OYW1lLCBhcmdzLCB0cmFuc2llbnQgPSB7fSwgZG9ja2VyTmFtZSA9IFwib3JnLWEtcGVlci0wXCIsIHRscyA9IFwidGxzLWNhLWNlcnQucGVtXCIpIHtcbiAgICAvLyBQcmVwYXJlIHRoZSBKU09OIGFyZ3VtZW50IGZvciB0aGUgY2hhaW5jb2RlXG4gICAgY29uc3QgY2hhaW5jb2RlQXJncyA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgZnVuY3Rpb246IGZ1bmN0aW9uTmFtZSxcbiAgICAgICAgQXJnczogYXJncyxcbiAgICB9KTtcbiAgICBjb25zdCB0cmFuc2llbnREYXRhID0gSlNPTi5zdHJpbmdpZnkodHJhbnNpZW50KTtcbiAgICBjb25zdCB0cmFuc2llbnRTdHJpbmcgPSBgLS10cmFuc2llbnQgJyR7dHJhbnNpZW50RGF0YX0nYDtcbiAgICAvLyBJbnZva2UgdGhlIGNoYWluY29kZVxuICAgIHJldHVybiBleGVjU3luYyhgZG9ja2VyIGV4ZWMgJHtkb2NrZXJOYW1lfSBwZWVyIGNoYWluY29kZSBpbnZva2UgXFxcbiAgICAtQyBzaW1wbGUtY2hhbm5lbCBcXFxuICAgIC1uICR7Y29udHJhY3ROYW1lfSBcXFxuICAgIC1jICcke2NoYWluY29kZUFyZ3N9JyBcXFxuICAgIC0tcGVlckFkZHJlc3NlcyBvcmctYS1wZWVyLTA6NzAzMSBcXFxuICAgIC0tdGxzUm9vdENlcnRGaWxlcyAvd2VhdmVyL3BlZXIvdGxzLWNhLWNlcnQucGVtIFxcXG4gICAgLW8gb3JnLWEtb3JkZXJlci0wOjcwMjEgXFxcbiAgICAtLXRscyAtLWNhZmlsZSAvd2VhdmVyL3BlZXIvJHt0bHN9IFxcXG4gICAgJHt0cmFuc2llbnQgPyB0cmFuc2llbnRTdHJpbmcgOiBcIlwifWApO1xuICAgIC8vICAgLS1wZWVyQWRkcmVzc2VzIG9yZy1iLXBlZXItMDo3MDMyIFxcXG4gICAgLy8gLS10bHNSb290Q2VydEZpbGVzIC93ZWF2ZXIvcGVlci9vcmctYi10bHMtY2EtY2VydC5wZW0gXFxcbiAgICAvLyAtLXBlZXJBZGRyZXNzZXMgb3JnLWMtcGVlci0wOjcwMzMgXFxcbiAgICAvLyAtLXRsc1Jvb3RDZXJ0RmlsZXMgL3dlYXZlci9wZWVyL29yZy1jLXRscy1jYS1jZXJ0LnBlbSBcXFxufVxuZXhwb3J0IHZhciBTY3JpcHRDb21tYW5kcztcbihmdW5jdGlvbiAoU2NyaXB0Q29tbWFuZHMpIHtcbiAgICBTY3JpcHRDb21tYW5kc1tcIlNUQVJUXCJdID0gXCJmYWJyaWMtY2hhaW5jb2RlLW5vZGUgc3RhcnQgICAgICAgICAgIC0tZ3JwYy5tYXhfcmVjZWl2ZV9tZXNzYWdlX2xlbmd0aCAke0NIQUlOQ09ERV9NQVhSRUNWTVNHU0laRS0xNTcyODY0MH0gICAgICAgICAgIC0tZ3JwYy5tYXhfc2VuZF9tZXNzYWdlX2xlbmd0aCAke0NIQUlOQ09ERV9NQVhTRU5ETVNHU0laRS0xNTcyODY0MH0gXCI7XG4gICAgU2NyaXB0Q29tbWFuZHNbXCJTVEFSVF9DQ0FBU1wiXSA9IFwiZmFicmljLWNoYWluY29kZS1ub2RlIHNlcnZlciAgICAgICAgICAgLS1jaGFpbmNvZGUtYWRkcmVzcz0kQ0hBSU5DT0RFX1NFUlZFUl9BRERSRVNTICAgICAgICAgICAtLWNoYWluY29kZS1pZD0kQ0hBSU5DT0RFX0lEICAgICAgICAgICAtLWNoYWluY29kZS10bHMtY2VydC1maWxlPSR7Q0hBSU5DT0RFX1RMU19DRVJUfSAgICAgICAgICAgLS1jaGFpbmNvZGUtdGxzLWtleS1maWxlPSR7Q0hBSU5DT0RFX1RMU19LRVl9ICAgICAgICAgICAtLWdycGMubWF4X3JlY2VpdmVfbWVzc2FnZV9sZW5ndGggJHtDSEFJTkNPREVfTUFYUkVDVk1TR1NJWkUtMTU3Mjg2NDB9ICAgICAgICAgICAtLWdycGMubWF4X3NlbmRfbWVzc2FnZV9sZW5ndGggJHtDSEFJTkNPREVfTUFYU0VORE1TR1NJWkUtMTU3Mjg2NDB9ICAgICAgICAgICAtLXRscy5lbmFibGVkPXRydWVcIjtcbiAgICBTY3JpcHRDb21tYW5kc1tcIlNUQVJUX0NDQUFTX0RFQlVHXCJdID0gXCJub2RlIC0taW5zcGVjdD0wLjAuMC4wOjkyMjkgLi9ub2RlX21vZHVsZXMvLmJpbi9mYWJyaWMtY2hhaW5jb2RlLW5vZGUgc2VydmVyICAgICAgICAgICAtLWNoYWluY29kZS1hZGRyZXNzPSRDSEFJTkNPREVfU0VSVkVSX0FERFJFU1MgICAgICAgICAgIC0tY2hhaW5jb2RlLWlkPSRDSEFJTkNPREVfSUQgICAgICAgICAgIC0tY2hhaW5jb2RlLXRscy1jZXJ0LWZpbGU9JHtDSEFJTkNPREVfVExTX0NFUlR9ICAgICAgICAgICAtLWNoYWluY29kZS10bHMta2V5LWZpbGU9JHtDSEFJTkNPREVfVExTX0tFWX0gICAgICAgICAgIC0tZ3JwYy5tYXhfcmVjZWl2ZV9tZXNzYWdlX2xlbmd0aCAke0NIQUlOQ09ERV9NQVhSRUNWTVNHU0laRS0xNTcyODY0MH0gICAgICAgICAgIC0tZ3JwYy5tYXhfc2VuZF9tZXNzYWdlX2xlbmd0aCAke0NIQUlOQ09ERV9NQVhTRU5ETVNHU0laRS0xNTcyODY0MH0gICAgICAgICAgIC0tdGxzLmVuYWJsZWQ9dHJ1ZVwiO1xuICAgIFNjcmlwdENvbW1hbmRzW1wiU1RBUlRfREVCVUdcIl0gPSBcIm5vZGUgLS1pbnNwZWN0PTAuMC4wLjA6OTIyOSAvdXNyL2xvY2FsL3NyYy9ub2RlX21vZHVsZXMvLmJpbi9mYWJyaWMtY2hhaW5jb2RlLW5vZGUgc3RhcnQgICAgICAgICAgIC0tZ3JwYy5tYXhfcmVjZWl2ZV9tZXNzYWdlX2xlbmd0aCAke0NIQUlOQ09ERV9NQVhSRUNWTVNHU0laRS0xNTcyODY0MH0gICAgICAgICAgIC0tZ3JwYy5tYXhfc2VuZF9tZXNzYWdlX2xlbmd0aCAke0NIQUlOQ09ERV9NQVhTRU5ETVNHU0laRS0xNTcyODY0MH1cIjtcbn0pKFNjcmlwdENvbW1hbmRzIHx8IChTY3JpcHRDb21tYW5kcyA9IHt9KSk7XG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29udHJhY3RTdGFydENvbW1hbmQoZGVidWcsIGNjYWFzKSB7XG4gICAgaWYgKGNjYWFzKSB7XG4gICAgICAgIHJldHVybiBkZWJ1Z1xuICAgICAgICAgICAgPyBTY3JpcHRDb21tYW5kcy5TVEFSVF9DQ0FBU19ERUJVR1xuICAgICAgICAgICAgOiBTY3JpcHRDb21tYW5kcy5TVEFSVF9DQ0FBUztcbiAgICB9XG4gICAgcmV0dXJuIGRlYnVnID8gU2NyaXB0Q29tbWFuZHMuU1RBUlRfREVCVUcgOiBTY3JpcHRDb21tYW5kcy5TVEFSVDtcbn1cbmZ1bmN0aW9uIGZvcm1hdERpYWdub3N0aWNzKGRpYWdzKSB7XG4gICAgY29uc3QgaG9zdCA9IHtcbiAgICAgICAgZ2V0Q2Fub25pY2FsRmlsZU5hbWU6IChmKSA9PiBmLFxuICAgICAgICBnZXRDdXJyZW50RGlyZWN0b3J5OiB0cy5zeXMuZ2V0Q3VycmVudERpcmVjdG9yeSxcbiAgICAgICAgZ2V0TmV3TGluZTogKCkgPT4gdHMuc3lzLm5ld0xpbmUsXG4gICAgfTtcbiAgICByZXR1cm4gdHMuZm9ybWF0RGlhZ25vc3RpY3NXaXRoQ29sb3JBbmRDb250ZXh0KGRpYWdzLCBob3N0KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlV2l0aFRzY29uZmlnT3ZlcnJpZGVzKHRzY29uZmlnUGF0aCwgb3ZlcnJpZGVzKSB7XG4gICAgY29uc3QgYWJzQ29uZmlnUGF0aCA9IHBhdGguaXNBYnNvbHV0ZSh0c2NvbmZpZ1BhdGgpXG4gICAgICAgID8gdHNjb25maWdQYXRoXG4gICAgICAgIDogcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIHRzY29uZmlnUGF0aCk7XG4gICAgLy8gMSkgUmVhZCB0aGUgdHNjb25maWcuanNvblxuICAgIGNvbnN0IGNvbmZpZ0ZpbGUgPSB0cy5yZWFkQ29uZmlnRmlsZShhYnNDb25maWdQYXRoLCB0cy5zeXMucmVhZEZpbGUpO1xuICAgIGlmIChjb25maWdGaWxlLmVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihmb3JtYXREaWFnbm9zdGljcyhbY29uZmlnRmlsZS5lcnJvcl0pKTtcbiAgICB9XG4gICAgLy8gMikgUGFyc2UgaXQgKHJlc29sdmVzIFwiZXh0ZW5kc1wiLCBpbmNsdWRlL2V4Y2x1ZGUvZmlsZXMsIGV0Yy4pXG4gICAgY29uc3QgY29uZmlnRGlyID0gcGF0aC5kaXJuYW1lKGFic0NvbmZpZ1BhdGgpO1xuICAgIGNvbnN0IHBhcnNlZCA9IHRzLnBhcnNlSnNvbkNvbmZpZ0ZpbGVDb250ZW50KGNvbmZpZ0ZpbGUuY29uZmlnLCB0cy5zeXMsIGNvbmZpZ0RpciwgXG4gICAgLypleGlzdGluZ09wdGlvbnMqLyB1bmRlZmluZWQsIGFic0NvbmZpZ1BhdGgpO1xuICAgIGlmIChwYXJzZWQuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZm9ybWF0RGlhZ25vc3RpY3MocGFyc2VkLmVycm9ycykpO1xuICAgIH1cbiAgICAvLyAzKSBPdmVycmlkZSBjb21waWxlciBvcHRpb25zIGluLW1lbW9yeVxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIC4uLnBhcnNlZC5vcHRpb25zLFxuICAgICAgICAuLi5vdmVycmlkZXMsXG4gICAgfTtcbiAgICAvLyBPcHRpb25hbDogSWYgeW91IG92ZXJyaWRlIG91dERpci9yb290RGlyLCBlbnN1cmUgdGhleeKAmXJlIGFic29sdXRlXG4gICAgLy8gdG8gYXZvaWQgc3VycHJpc2VzIGRlcGVuZGluZyBvbiBDV0QuXG4gICAgaWYgKG9wdGlvbnMub3V0RGlyKVxuICAgICAgICBvcHRpb25zLm91dERpciA9IHBhdGgucmVzb2x2ZShjb25maWdEaXIsIG9wdGlvbnMub3V0RGlyKTtcbiAgICBpZiAob3B0aW9ucy5yb290RGlyKVxuICAgICAgICBvcHRpb25zLnJvb3REaXIgPSBwYXRoLnJlc29sdmUoY29uZmlnRGlyLCBvcHRpb25zLnJvb3REaXIpO1xuICAgIC8vIDQpIENyZWF0ZSBwcm9ncmFtICsgZW1pdFxuICAgIGNvbnN0IHByb2dyYW0gPSB0cy5jcmVhdGVQcm9ncmFtKHtcbiAgICAgICAgcm9vdE5hbWVzOiBwYXJzZWQuZmlsZU5hbWVzLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBwcm9qZWN0UmVmZXJlbmNlczogcGFyc2VkLnByb2plY3RSZWZlcmVuY2VzLFxuICAgIH0pO1xuICAgIGNvbnN0IHByZUVtaXQgPSB0cy5nZXRQcmVFbWl0RGlhZ25vc3RpY3MocHJvZ3JhbSk7XG4gICAgaWYgKHByZUVtaXQubGVuZ3RoKSB7XG4gICAgICAgIC8vIElmIHlvdSB3YW50IFwidHJhbnNwaWxlIGFueXdheVwiLCB5b3UgY2FuIGNob29zZSB0byBub3QgdGhyb3cgaGVyZS5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdERpYWdub3N0aWNzKHByZUVtaXQpKTtcbiAgICB9XG4gICAgY29uc3QgZW1pdFJlc3VsdCA9IHByb2dyYW0uZW1pdCgpO1xuICAgIGNvbnN0IGVtaXREaWFnbm9zdGljcyA9IGVtaXRSZXN1bHQuZGlhZ25vc3RpY3MgPz8gW107XG4gICAgaWYgKGVtaXREaWFnbm9zdGljcy5sZW5ndGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdERpYWdub3N0aWNzKGVtaXREaWFnbm9zdGljcykpO1xuICAgIH1cbiAgICBpZiAoZW1pdFJlc3VsdC5lbWl0U2tpcHBlZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFbWl0IHdhcyBza2lwcGVkIChjaGVjayBkaWFnbm9zdGljcyBhYm92ZSkuXCIpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVkyeHBMWFYwYVd4ekxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZjM0pqTDJOc2FTMTFkR2xzY3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hQUVVGUExFVkJRVVVzVVVGQlVTeEZRVUZGTEUxQlFVMHNaVUZCWlN4RFFVRkRPMEZCUTNwRExFOUJRVThzUzBGQlN5eEZRVUZGTEUxQlFVMHNTVUZCU1N4RFFVRkRPMEZCUTNwQ0xFOUJRVThzUzBGQlN5eEpRVUZKTEUxQlFVMHNUVUZCVFN4RFFVRkRPMEZCUXpkQ0xFOUJRVThzUlVGQlJTeGhRVUZoTEVWQlFVVXNUVUZCVFN4NVFrRkJlVUlzUTBGQlF6dEJRVU40UkN4UFFVRlBMRVZCUVVVc1RVRkJUU3haUVVGWkxFTkJRVU03UVVGRk5VSXNUVUZCVFN4VlFVRlZMSEZDUVVGeFFpeERRVU51UXl4blFrRkJkMElzYlVKQlFXMUNPMGxCUlRORExFbEJRVWtzUTBGQlF6dFJRVU5JTEUxQlFVMHNUVUZCVFN4SFFVRkhMRkZCUVZFc1EwRkRja0lzYTBKQlFXdENMR0ZCUVdFc2FVTkJRV2xETEVOQlEycEZPMkZCUTBVc1VVRkJVU3hGUVVGRk8yRkJRMVlzU1VGQlNTeEZRVUZGTEVOQlFVTTdVVUZGVml4UFFVRlBMRTFCUVUwc1MwRkJTeXhIUVVGSExFTkJRVU03U1VGRGVFSXNRMEZCUXp0SlFVRkRMRTlCUVU4c1IwRkJVU3hGUVVGRkxFTkJRVU03VVVGRGJFSXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXcyUWtGQk5rSXNSVUZCUlN4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGRE1VUXNUMEZCVHl4TFFVRkxMRU5CUVVNN1NVRkRaaXhEUVVGRE8wRkJRMGdzUTBGQlF6dEJRVVZFTEUxQlFVMHNRMEZCUXl4TFFVRkxMRlZCUVZVc01FSkJRVEJDTEVOQlF6bERMR2RDUVVGM1FpeHRRa0ZCYlVJc1JVRkRNME1zVlVGQmEwSXNTVUZCU1N4RlFVTjBRaXhYUVVGdFFpeEZRVUZGTzBsQlJYSkNMRTlCUVU4c1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4aFFVRmhMRU5CUVVNc1JVRkJSU3hEUVVGRE8xRkJRemRETEVsQlFVa3NSVUZCUlN4UlFVRlJMRWxCUVVrc1EwRkJRenRaUVVGRkxFMUJRVTBzU1VGQlNTeGhRVUZoTEVOQlFVTXNNa0pCUVRKQ0xFTkJRVU1zUTBGQlF6dFJRVVV4UlN4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExIVkRRVUYxUXl4RFFVRkRMRU5CUVVNN1VVRkRja1FzVFVGQlRTeEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTXNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zY1VOQlFYRkRPMGxCUTNwR0xFTkJRVU03UVVGRFNDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR1ZCUVdVc1EwRkROMElzVlVGQmEwSXNSVUZEYkVJc1kwRkJjMElzUlVGRGRFSXNXVUZCYjBJc1JVRkRjRUlzVlVGQmEwSXNTMEZCU3p0SlFVVjJRaXhSUVVGUkxFTkJRVU1zWlVGQlpTeFZRVUZWT3pCRFFVTk5MR05CUVdNN08zTkRRVVZzUWl4WlFVRlpPM1ZDUVVNelFpeFpRVUZaT3pCQ1FVTlVMRTlCUVU4N1MwRkROVUlzUTBGQlF5eERRVUZETzBGQlExQXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3hsUVVGbExFTkJRVU1zVlVGQmEwSXNSVUZCUlN4WlFVRnZRanRKUVVOMFJTeFJRVUZSTEVOQlEwNHNaVUZCWlN4VlFVRlZMREJHUVVFd1JpeFpRVUZaTEZOQlFWTXNRMEZEZWtrc1EwRkJRenRCUVVOS0xFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNaVUZCWlN4RFFVTTNRaXhWUVVGclFpeEZRVU5zUWl4WlFVRnZRaXhGUVVOd1FpeFhRVUZ0UWl4RlFVTnVRaXhYUVVGdFFpeERRVUZETEVWQlEzQkNMRlZCUVd0Q0xFdEJRVXNzUlVGRGRrSXNhVUpCUVRCQ08wbEJSVEZDTEUxQlFVMHNaVUZCWlN4SFFVRkhMR2xDUVVGcFFqdFJRVU4yUXl4RFFVRkRMRU5CUVVNc01FSkJRVEJDTEdsQ1FVRnBRaXhIUVVGSE8xRkJRMmhFTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRVQ3hSUVVGUkxFTkJRVU1zWlVGQlpTeFZRVUZWT3pzN2RVSkJSMklzV1VGQldUc3dRa0ZEVkN4UFFVRlBPMmxDUVVOb1FpeFJRVUZSTEVkQlFVY3NaVUZCWlRzN2MwTkJSVXdzVjBGQlZ5eEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTnlSQ3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdOQlFXTXNRMEZETlVJc1kwRkJjMElzUlVGRGRFSXNXVUZCYjBJc1JVRkRjRUlzVlVGQmEwSXNTMEZCU3l4RlFVTjJRaXhSUVVGclFpeERRVUZETEdOQlFXTXNSVUZCUlN4alFVRmpMRVZCUVVVc1kwRkJZeXhEUVVGRE8wbEJSV3hGTEVsQlFVa3NVVUZCWjBJc1EwRkJRenRKUVVOeVFpeE5RVUZOTEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVNMVFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVTlFMRWRCUVVjc1UwRkJVeXhGUVVGRkxFVkJRMlFzU1VGQlNTeEZRVU5LTEdGQlFXRXNSVUZEWWl4dFFrRkJiVUlzUlVGRGJrSXNSMEZCUnl4WlFVRlpMRkZCUVZFc1EwRkRlRUlzUTBGRFJpeERRVUZETzBsQlEwWXNTVUZCU1N4RFFVRkRPMUZCUTBnc1VVRkJVU3hIUVVGSExGRkJRVkVzUTBGQlF5eEZRVUZGTEVOQlFVTXNXVUZCV1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTJ4RkxEWkVRVUUyUkR0SlFVTXZSQ3hEUVVGRE8wbEJRVU1zVDBGQlR5eERRVUZWTEVWQlFVVXNRMEZCUXp0UlFVTndRaXhSUVVGUkxFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEyWXNRMEZCUXp0SlFVTkVMRVZCUVVVc1EwRkJReXhoUVVGaExFTkJRVU1zVTBGQlV5eEZRVUZGTEZGQlFWRXNRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJReXhEUVVGRE8wbEJSV3BFTEVsQlFVa3NRMEZCUXp0UlFVTklMRXRCUVVzc1RVRkJUU3hKUVVGSkxFbEJRVWtzUzBGQlN5eEZRVUZGTEVOQlFVTTdXVUZEZWtJc1pVRkJaU3hEUVVGRExFbEJRVWtzUlVGQlJTeGpRVUZqTEVWQlFVVXNXVUZCV1N4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8xbEJRemRFTEdWQlFXVXNRMEZCUXl4SlFVRkpMRVZCUVVVc1dVRkJXU3hEUVVGRExFTkJRVU03V1VGRGNFTXNaVUZCWlN4RFFVTmlMRWxCUVVrc1JVRkRTaXhaUVVGWkxFVkJRMW9zU1VGQlNTeExRVUZMTEdOQlFXTXNRMEZCUXl4RFFVRkRMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNRMEZCUXl4RFFVRkRMSGxDUVVGNVFpeEZRVU4yUlN4UlFVRlJMRVZCUTFJc1QwRkJUeXhEUVVOU0xFTkJRVU03VVVGRFNpeERRVUZETzBsQlEwZ3NRMEZCUXp0SlFVRkRMRTlCUVU4c1IwRkJVU3hGUVVGRkxFTkJRVU03VVVGRGJFSXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXd5UWtGQk1rSXNSVUZCUlN4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRGVFUXNRMEZCUXp0QlFVTklMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzWlVGQlpTeERRVU0zUWl4WlFVRnZRaXhGUVVOd1FpeFhRVUZ0UWl4RFFVRkRMRVZCUTNCQ0xGVkJRV3RDTEV0QlFVc3NSVUZEZGtJc2FVSkJRVEJDTzBsQlJURkNMRTFCUVUwc1pVRkJaU3hIUVVGSExHbENRVUZwUWp0UlFVTjJReXhEUVVGRExFTkJRVU1zTUVKQlFUQkNMR2xDUVVGcFFpeEhRVUZITzFGQlEyaEVMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRFVDeFJRVUZSTEVOQlFVTTdPenQxUWtGSFdTeFpRVUZaT3pCQ1FVTlVMRTlCUVU4N2FVSkJRMmhDTEZGQlFWRXNSMEZCUnl4bFFVRmxPenM3T3pCSVFVa3JSU3hEUVVGRExFTkJRVU03UVVGRE5VZ3NRMEZCUXp0QlFVVkVMRTFCUVUwc1EwRkJReXhMUVVGTExGVkJRVlVzZFVKQlFYVkNMRU5CUXpORExGbEJRVzlDTEVWQlEzQkNMR0ZCUVhGQ0xHTkJRV01zUlVGRGJrTXNWVUZCYTBJc2FVSkJRV2xDTEVWQlEyNURMRTlCUVU4c1IwRkJSeXhEUVVGRE8wbEJSVmdzU1VGQlNTeERRVUZETzFGQlEwZ3NPRU5CUVRoRE8xRkJRemxETEUxQlFVMHNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU03V1VGRGJrTXNVVUZCVVN4RlFVRkZMR0ZCUVdFN1dVRkRka0lzU1VGQlNTeEZRVUZGTEVWQlFVVTdVMEZEVkN4RFFVRkRMRU5CUVVNN1VVRkZTQ3hKUVVGSkxFOUJRVThzUjBGQlJ5eEZRVUZGTEVWQlFVVXNRMEZCUXp0WlFVTnFRaXhQUVVGUExFVkJRVVVzUTBGQlF6dFJRVU5hTEVOQlFVTTdVVUZGUkN4MVFrRkJkVUk3VVVGRGRrSXNUVUZCVFN4SFFVRkhMRWRCUVVjc1VVRkJVU3hEUVVOc1FpeGxRVUZsTEZWQlFWVTdPMkZCUld4Q0xGbEJRVms3WTBGRFdDeGhRVUZoTzNORFFVTlhMRTlCUVU4c1JVRkJSU3hEUVVNeFF5eERRVUZETzFGQlJVWXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNc1EwRkJRenRSUVVVeFF5eFBRVUZQTEUxQlFVMHNRMEZCUXl4WFFVRlhMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03VVVGRGNrTXNOa1JCUVRaRU8wbEJReTlFTEVOQlFVTTdTVUZCUXl4UFFVRlBMRWRCUVZFc1JVRkJSU3hEUVVGRE8xRkJRMnhDTEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc2EwTkJRV3RETEVOQlFVTXNRMEZCUXp0UlFVTm9SQ3hOUVVGTkxFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXh4UTBGQmNVTTdVVUZEY0VZc1QwRkJUeXgxUWtGQmRVSXNRMEZETlVJc1dVRkJXU3hGUVVOYUxGVkJRVlVzUlVGRFZpeFBRVUZQTEVWQlExQXNUMEZCVHl4RlFVRkZMRU5CUTFZc1EwRkJRenRKUVVOS0xFTkJRVU03UVVGRFNDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMRWxCUVVrc1EwRkJReXhIUVVGWE8wbEJRemxDTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc01rTkJRVEpETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRMMFFzVDBGQlR5eEhRVUZITEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNN1FVRkRjRUlzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4bFFVRmxMRU5CUXpkQ0xGbEJRVzlDTEVWQlEzQkNMRmxCUVc5Q0xFVkJRM0JDTEVsQlFWY3NSVUZEV0N4WlFVRnBRaXhGUVVGRkxFVkJRMjVDTEdGQlFYRkNMR05CUVdNc1JVRkRia01zVFVGQll5eHBRa0ZCYVVJN1NVRkZMMElzT0VOQlFUaERPMGxCUXpsRExFMUJRVTBzWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNN1VVRkRia01zVVVGQlVTeEZRVUZGTEZsQlFWazdVVUZEZEVJc1NVRkJTU3hGUVVGRkxFbEJRVWs3UzBGRFdDeERRVUZETEVOQlFVTTdTVUZGU0N4TlFVRk5MR0ZCUVdFc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMGxCUTJoRUxFMUJRVTBzWlVGQlpTeEhRVUZITEdkQ1FVRm5RaXhoUVVGaExFZEJRVWNzUTBGQlF6dEpRVVY2UkN4MVFrRkJkVUk3U1VGRGRrSXNUMEZCVHl4UlFVRlJMRU5CUTJJc1pVRkJaU3hWUVVGVk96dFRRVVZ3UWl4WlFVRlpPMVZCUTFnc1lVRkJZVHM3T3pzN096czdhME5CVVZjc1IwRkJSenROUVVNdlFpeFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlEzSkRMRU5CUVVNN1FVRkRTaXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdOQlFXTXNRMEZETlVJc1dVRkJiMElzUlVGRGNFSXNXVUZCYjBJc1JVRkRjRUlzU1VGQlZ5eEZRVU5ZTEdGQlFYRkNMR05CUVdNc1JVRkRia01zVFVGQll5eHBRa0ZCYVVJN1NVRkZMMElzU1VGQlNTeERRVUZETzFGQlEwZ3NPRU5CUVRoRE8xRkJRemxETEUxQlFVMHNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU03V1VGRGJrTXNVVUZCVVN4RlFVRkZMRmxCUVZrN1dVRkRkRUlzU1VGQlNTeEZRVUZGTEVsQlFVazdVMEZEV0N4RFFVRkRMRU5CUVVNN1VVRkZTQ3gxUWtGQmRVSTdVVUZEZGtJc1RVRkJUU3hIUVVGSExFZEJRVWNzVVVGQlVTeERRVU5zUWl4bFFVRmxMRlZCUVZVN08yRkJSV3hDTEZsQlFWazdZMEZEV0N4aFFVRmhPM2xDUVVOR0xFZEJRVWNzUlVGQlJTeERRVU42UWl4RFFVRkRPMUZCUlVZc1RVRkJUU3hUUVVGVExFZEJRVWNzUjBGQlJ5eERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPMUZCUTJwRExFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTTdVVUZGTTBNc1QwRkJUeXhUUVVGVExFTkJRVU03U1VGRGJrSXNRMEZCUXp0SlFVRkRMRTlCUVU4c1IwRkJVU3hGUVVGRkxFTkJRVU03VVVGRGJFSXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXd5UWtGQk1rSXNRMEZCUXl4RFFVRkRPMUZCUTNwRExFMUJRVTBzUjBGQlJ5eERRVUZETzBsQlExb3NRMEZCUXp0QlFVTklMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzYzBKQlFYTkNMRU5CUTNCRExGbEJRVzlDTEVWQlEzQkNMRmxCUVc5Q0xFVkJRM0JDTEVsQlFWY3NSVUZEV0N4WlFVRnBRaXhGUVVGRkxFVkJRMjVDTEdGQlFYRkNMR05CUVdNc1JVRkRia01zVFVGQll5eHBRa0ZCYVVJN1NVRkZMMElzT0VOQlFUaERPMGxCUXpsRExFMUJRVTBzWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNN1VVRkRia01zVVVGQlVTeEZRVUZGTEZsQlFWazdVVUZEZEVJc1NVRkJTU3hGUVVGRkxFbEJRVWs3UzBGRFdDeERRVUZETEVOQlFVTTdTVUZGU0N4TlFVRk5MR0ZCUVdFc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMGxCUTJoRUxFMUJRVTBzWlVGQlpTeEhRVUZITEdkQ1FVRm5RaXhoUVVGaExFZEJRVWNzUTBGQlF6dEpRVVY2UkN4MVFrRkJkVUk3U1VGRGRrSXNUMEZCVHl4UlFVRlJMRU5CUTJJc1pVRkJaU3hWUVVGVk96dFRRVVZ3UWl4WlFVRlpPMVZCUTFnc1lVRkJZVHM3T3p0clEwRkpWeXhIUVVGSE8wMUJReTlDTEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZEY2tNc1EwRkJRenRKUVVWR0xIZERRVUYzUXp0SlFVTjRReXd3UkVGQk1FUTdTVUZETVVRc2MwTkJRWE5ETzBsQlEzUkRMREJFUVVFd1JEdEJRVU0xUkN4RFFVRkRPMEZCUlVRc1RVRkJUU3hEUVVGT0xFbEJRVmtzWTBGMVFsZzdRVUYyUWtRc1YwRkJXU3hqUVVGak8wbEJRM2hDTEhWT1FVVTJSU3hEUVVGQk8wbEJRemRGTERKalFVOHlRaXhEUVVGQk8wbEJRek5DTEdsblFrRlBNa0lzUTBGQlFUdEpRVU16UWl4NVVrRkZORVVzUTBGQlFUdEJRVU01UlN4RFFVRkRMRVZCZGtKWExHTkJRV01zUzBGQlpDeGpRVUZqTEZGQmRVSjZRanRCUVVWRUxFMUJRVTBzVlVGQlZTeDFRa0ZCZFVJc1EwRkRja01zUzBGQll5eEZRVU5rTEV0QlFXTTdTVUZGWkN4SlFVRkpMRXRCUVVzc1JVRkJSU3hEUVVGRE8xRkJRMVlzVDBGQlR5eExRVUZMTzFsQlExWXNRMEZCUXl4RFFVRkRMR05CUVdNc1EwRkJReXhwUWtGQmFVSTdXVUZEYkVNc1EwRkJReXhEUVVGRExHTkJRV01zUTBGQlF5eFhRVUZYTEVOQlFVTTdTVUZEYWtNc1EwRkJRenRKUVVORUxFOUJRVThzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4alFVRmpMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF5eGpRVUZqTEVOQlFVTXNTMEZCU3l4RFFVRkRPMEZCUTI1RkxFTkJRVU03UVVGRlJDeFRRVUZUTEdsQ1FVRnBRaXhEUVVGRExFdEJRU3RDTzBsQlEzaEVMRTFCUVUwc1NVRkJTU3hIUVVFMlFqdFJRVU55UXl4dlFrRkJiMElzUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJRenRSUVVNNVFpeHRRa0ZCYlVJc1JVRkJSU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEcxQ1FVRnRRanRSUVVNdlF5eFZRVUZWTEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTzB0QlEycERMRU5CUVVNN1NVRkRSaXhQUVVGUExFVkJRVVVzUTBGQlF5eHZRMEZCYjBNc1EwRkJReXhMUVVGTExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdRVUZET1VRc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTdzBRa0ZCTkVJc1EwRkRNVU1zV1VGQmIwSXNSVUZEY0VJc1UwRkJjME03U1VGRmRFTXNUVUZCVFN4aFFVRmhMRWRCUVVjc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eFpRVUZaTEVOQlFVTTdVVUZEYWtRc1EwRkJReXhEUVVGRExGbEJRVms3VVVGRFpDeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVVXNXVUZCV1N4RFFVRkRMRU5CUVVNN1NVRkZPVU1zTkVKQlFUUkNPMGxCUXpWQ0xFMUJRVTBzVlVGQlZTeEhRVUZITEVWQlFVVXNRMEZCUXl4alFVRmpMRU5CUVVNc1lVRkJZU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1NVRkRja1VzU1VGQlNTeFZRVUZWTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN1VVRkRja0lzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETEZWQlFWVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGVrUXNRMEZCUXp0SlFVVkVMR2RGUVVGblJUdEpRVU5vUlN4TlFVRk5MRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRPMGxCUXpsRExFMUJRVTBzVFVGQlRTeEhRVUZITEVWQlFVVXNRMEZCUXl3d1FrRkJNRUlzUTBGRE1VTXNWVUZCVlN4RFFVRkRMRTFCUVUwc1JVRkRha0lzUlVGQlJTeERRVUZETEVkQlFVY3NSVUZEVGl4VFFVRlRPMGxCUTFRc2JVSkJRVzFDTEVOQlFVTXNVMEZCVXl4RlFVTTNRaXhoUVVGaExFTkJRMlFzUTBGQlF6dEpRVVZHTEVsQlFVa3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF6dFJRVU42UWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExHbENRVUZwUWl4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzQkVMRU5CUVVNN1NVRkZSQ3g1UTBGQmVVTTdTVUZEZWtNc1RVRkJUU3hQUVVGUExFZEJRWFZDTzFGQlEyeERMRWRCUVVjc1RVRkJUU3hEUVVGRExFOUJRVTg3VVVGRGFrSXNSMEZCUnl4VFFVRlRPMHRCUTJJc1EwRkJRenRKUVVWR0xHOUZRVUZ2UlR0SlFVTndSU3gxUTBGQmRVTTdTVUZEZGtNc1NVRkJTU3hQUVVGUExFTkJRVU1zVFVGQlRUdFJRVUZGTEU5QlFVOHNRMEZCUXl4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFRRVUZUTEVWQlFVVXNUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wbEJRemRGTEVsQlFVa3NUMEZCVHl4RFFVRkRMRTlCUVU4N1VVRkRha0lzVDBGQlR5eERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExGTkJRVk1zUlVGQlJTeFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1NVRkZOMFFzTWtKQlFUSkNPMGxCUXpOQ0xFMUJRVTBzVDBGQlR5eEhRVUZITEVWQlFVVXNRMEZCUXl4aFFVRmhMRU5CUVVNN1VVRkRMMElzVTBGQlV5eEZRVUZGTEUxQlFVMHNRMEZCUXl4VFFVRlRPMUZCUXpOQ0xFOUJRVTg3VVVGRFVDeHBRa0ZCYVVJc1JVRkJSU3hOUVVGTkxFTkJRVU1zYVVKQlFXbENPMHRCUXpWRExFTkJRVU1zUTBGQlF6dEpRVVZJTEUxQlFVMHNUMEZCVHl4SFFVRkhMRVZCUVVVc1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVOc1JDeEpRVUZKTEU5QlFVOHNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRSUVVOdVFpeHZSVUZCYjBVN1VVRkRjRVVzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUXpsRExFTkJRVU03U1VGRlJDeE5RVUZOTEZWQlFWVXNSMEZCUnl4UFFVRlBMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU03U1VGRGJFTXNUVUZCVFN4bFFVRmxMRWRCUVVjc1ZVRkJWU3hEUVVGRExGZEJRVmNzU1VGQlNTeEZRVUZGTEVOQlFVTTdTVUZEY2tRc1NVRkJTU3hsUVVGbExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTTdVVUZETTBJc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhsUVVGbExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzUkVMRU5CUVVNN1NVRkZSQ3hKUVVGSkxGVkJRVlVzUTBGQlF5eFhRVUZYTEVWQlFVVXNRMEZCUXp0UlFVTXpRaXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETERaRFFVRTJReXhEUVVGRExFTkJRVU03U1VGRGFrVXNRMEZCUXp0QlFVTklMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2V5QmxlR1ZqVTNsdVl5QjlJR1p5YjIwZ1hDSmphR2xzWkY5d2NtOWpaWE56WENJN1hHNXBiWEJ2Y25RZ0tpQmhjeUJtY3lCbWNtOXRJRndpWm5OY0lqdGNibWx0Y0c5eWRDQXFJR0Z6SUhCaGRHZ2dabkp2YlNCY0luQmhkR2hjSWp0Y2JtbHRjRzl5ZENCN0lFbHVkR1Z5Ym1Gc1JYSnliM0lnZlNCbWNtOXRJRndpUUdSbFkyRm1MWFJ6TDJSaUxXUmxZMjl5WVhSdmNuTmNJanRjYm1sdGNHOXlkQ0IwY3lCbWNtOXRJRndpZEhsd1pYTmpjbWx3ZEZ3aU8xeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaR2xrU1c1bWNtRnpkSEoxWTNSMWNtVkNiMjkwS0Z4dUlDQmpiMjUwWVdsdVpYSk9ZVzFsT2lCemRISnBibWNnUFNCY0ltSnZiM1F0YjNKbkxXTXRjR1ZsY2kwd1hDSmNiaWs2SUdKdmIyeGxZVzRnZTF4dUlDQjBjbmtnZTF4dUlDQWdJR052Ym5OMElHOTFkSEIxZENBOUlHVjRaV05UZVc1aktGeHVJQ0FnSUNBZ1lHUnZZMnRsY2lCcGJuTndaV04wSUNSN1kyOXVkR0ZwYm1WeVRtRnRaWDBnTFMxbWIzSnRZWFE5SjN0N0xsTjBZWFJsTGtWNGFYUkRiMlJsZlgwbllGeHVJQ0FnSUNsY2JpQWdJQ0FnSUM1MGIxTjBjbWx1WnlncFhHNGdJQ0FnSUNBdWRISnBiU2dwTzF4dVhHNGdJQ0FnY21WMGRYSnVJRzkxZEhCMWRDQTlQVDBnWENJd1hDSTdYRzRnSUgwZ1kyRjBZMmdnS0dWeWNqb2dZVzU1S1NCN1hHNGdJQ0FnWTI5dWMyOXNaUzVsY25KdmNpaGNJa1Z5Y205eUlHbHVjM0JsWTNScGJtY2dZMjl1ZEdGcGJtVnlPbHdpTENCbGNuSXViV1Z6YzJGblpTazdYRzRnSUNBZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JoYzNsdVl5Qm1kVzVqZEdsdmJpQmxibk4xY21WSmJtWnlZWE4wY25WamRIVnlaVUp2YjNSbFpDaGNiaUFnWTI5dWRHRnBibVZ5VG1GdFpUb2djM1J5YVc1bklEMGdYQ0ppYjI5MExXOXlaeTFqTFhCbFpYSXRNRndpTEZ4dUlDQjBhVzFsYjNWME9pQnVkVzFpWlhJZ1BTQTFNREF3TEZ4dUlDQmhkSFJsYlhCMGN6b2diblZ0WW1WeUlEMGdNVEJjYmlrNklGQnliMjFwYzJVOGRtOXBaRDRnZTF4dUlDQjNhR2xzWlNBb0lXUnBaRWx1Wm5KaGMzUnlkV04wZFhKbFFtOXZkQ2hqYjI1MFlXbHVaWEpPWVcxbEtTa2dlMXh1SUNBZ0lHbG1JQ2d0TFdGMGRHVnRjSFJ6SUR3OUlEQXBJSFJvY205M0lHNWxkeUJKYm5SbGNtNWhiRVZ5Y205eUtGd2laWGhqWldWa1pXUWdZV3hzYjNkbFpDQmhkSFJsYlhCMGMxd2lLVHRjYmx4dUlDQWdJR052Ym5OdmJHVXViRzluS0Z3aVYyRnBkR2x1WnlCbWIzSWdhVzVtY21GemRISjFZM1IxY21VZ2RHOGdZbTl2ZEM0dUxsd2lLVHRjYmlBZ0lDQmhkMkZwZENCdVpYY2dVSEp2YldselpTZ29jaWtnUFQ0Z2MyVjBWR2x0Wlc5MWRDaHlMQ0IwYVcxbGIzVjBLU2s3SUM4dklGZGhhWFFnWm05eUlEVWdjMlZqYjI1a2N5QmlaV1p2Y21VZ2NtVjBjbmxwYm1kY2JpQWdmVnh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NHRmphMkZuWlVOdmJuUnlZV04wS0Z4dUlDQmtiMk5yWlhKT1lXMWxPaUJ6ZEhKcGJtY3NYRzRnSUdOdmJuUnlZV04wUm05c1pHVnlPaUJ6ZEhKcGJtY3NYRzRnSUdOdmJuUnlZV04wVG1GdFpUb2djM1J5YVc1bkxGeHVJQ0IyWlhKemFXOXVPaUJ6ZEhKcGJtY2dQU0JjSWpFdU1Gd2lYRzRwT2lCMmIybGtJSHRjYmlBZ1pYaGxZMU41Ym1Nb1lHUnZZMnRsY2lCbGVHVmpJQ1I3Wkc5amEyVnlUbUZ0WlgwZ2JtOWtaU0F1TDNkbFlYWmxjaTlzYVdJdlkyOXlaUzlqYkdrdVkycHpJSEJoWTJ0aFoyVXRZMmhoYVc1amIyUmxJQzFrSUZ4Y1hHNGdJQ0FnTFMxamFHRnBibU52WkdVdGNHRjBhQ0F1TDNkbFlYWmxjaTlqYUdGcGJtTnZaR1V2Skh0amIyNTBjbUZqZEVadmJHUmxjbjBnWEZ4Y2JpQWdJQ0F0TFd4aGJtY2dibTlrWlNCY1hGeHVJQ0FnSUMwdFkyaGhhVzVqYjJSbExXOTFkSEIxZENBdmQyVmhkbVZ5TDNCbFpYSXZKSHRqYjI1MGNtRmpkRTVoYldWOUxuUmhjaTVuZWlCY1hGeHVJQ0FnSUMwdFkyaGhhVzVqYjJSbExXNWhiV1VnSkh0amIyNTBjbUZqZEU1aGJXVjlJRnhjWEc0Z0lDQWdMUzFqYUdGcGJtTnZaR1V0ZG1WeWMybHZiaUFrZTNabGNuTnBiMjU5SUMxelhHNGdJQ0FnWUNrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJwYm5OMFlXeHNRMjl1ZEhKaFkzUW9aRzlqYTJWeVRtRnRaVG9nYzNSeWFXNW5MQ0JqYjI1MGNtRmpkRTVoYldVNklITjBjbWx1WnlrZ2UxeHVJQ0JsZUdWalUzbHVZeWhjYmlBZ0lDQmdaRzlqYTJWeUlHVjRaV01nSkh0a2IyTnJaWEpPWVcxbGZTQnViMlJsSUM0dmQyVmhkbVZ5TDJ4cFlpOWpiM0psTDJOc2FTNWphbk1nYVc1emRHRnNiQzFqYUdGcGJtTnZaR1VnTFdRZ0xYTWdMUzFqYUdGcGJtTnZaR1V0Y0dGMGFDQXVMM2RsWVhabGNpOXdaV1Z5THlSN1kyOXVkSEpoWTNST1lXMWxmUzUwWVhJdVozcGdYRzRnSUNrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJoY0hCeWIzWmxRMjl1ZEhKaFkzUW9YRzRnSUdSdlkydGxjazVoYldVNklITjBjbWx1Wnl4Y2JpQWdZMjl1ZEhKaFkzUk9ZVzFsT2lCemRISnBibWNzWEc0Z0lIUnNjME5sY25ST1lXMWxPaUJ6ZEhKcGJtY3NYRzRnSUhObGNYVmxibU5sT2lCdWRXMWlaWElnUFNBeExGeHVJQ0IyWlhKemFXOXVPaUJ6ZEhKcGJtY2dQU0JjSWpFdU1Gd2lMRnh1SUNCamIyeHNaV04wYVc5dWMwTnZibVpwWno4NklITjBjbWx1WjF4dUtTQjdYRzRnSUdOdmJuTjBJR052Ykd4bFkzUnBiMjV6Um14aFp5QTlJR052Ykd4bFkzUnBiMjV6UTI5dVptbG5YRzRnSUNBZ1B5QmdJQzB0WTI5c2JHVmpkR2x2Ym5NdFkyOXVabWxuSUZ3aUpIdGpiMnhzWldOMGFXOXVjME52Ym1acFozMWNJbUJjYmlBZ0lDQTZJRndpWENJN1hHNGdJR1Y0WldOVGVXNWpLR0JrYjJOclpYSWdaWGhsWXlBa2UyUnZZMnRsY2s1aGJXVjlJRzV2WkdVZ0xpOTNaV0YyWlhJdmJHbGlMMk52Y21VdlkyeHBMbU5xY3lCaGNIQnliM1psTFdOb1lXbHVZMjlrWlNBdFpDQXRjeUJjWEZ4dUlDQWdJQzB0YjNKa1pYSmxjaTFoWkdSeVpYTnpJRzl5WnkxaExXOXlaR1Z5WlhJdE1EbzNNREl4SUZ4Y1hHNGdJQ0FnTFMxamFHRnVibVZzTFdsa0lITnBiWEJzWlMxamFHRnVibVZzSUZ4Y1hHNGdJQ0FnTFMxamFHRnBibU52WkdVdGJtRnRaU0FrZTJOdmJuUnlZV04wVG1GdFpYMGdYRnhjYmlBZ0lDQXRMV05vWVdsdVkyOWtaUzEyWlhKemFXOXVJQ1I3ZG1WeWMybHZibjBnWEZ4Y2JpQWdJQ0F0TFhObGNYVmxibU5sSUNSN2MyVnhkV1Z1WTJWOUpIdGpiMnhzWldOMGFXOXVjMFpzWVdkOUlGeGNYRzRnSUNBZ0xTMWxibUZpYkdVdGRHeHpJRnhjWEc0Z0lDQWdMUzEwYkhNdFkyRXRZMlZ5ZEMxbWFXeGxJQzkzWldGMlpYSXZjR1ZsY2k4a2UzUnNjME5sY25ST1lXMWxmV0FwTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaR1Z3Ykc5NVEyOXVkSEpoWTNRb1hHNGdJR052Ym5SeVlXTjBSbTlzWkdWeU9pQnpkSEpwYm1jc1hHNGdJR052Ym5SeVlXTjBUbUZ0WlRvZ2MzUnlhVzVuTEZ4dUlDQjJaWEp6YVc5dU9pQnpkSEpwYm1jZ1BTQmNJakV1TUZ3aUxGeHVJQ0J3WldWeWN6b2djM1J5YVc1blcxMGdQU0JiWENKdmNtY3RZUzF3WldWeUxUQmNJaXdnWENKdmNtY3RZaTF3WldWeUxUQmNJaXdnWENKdmNtY3RZeTF3WldWeUxUQmNJbDFjYmlrZ2UxeHVJQ0JzWlhRZ2MyVnhkV1Z1WTJVNklHNTFiV0psY2p0Y2JpQWdZMjl1YzNRZ1kyOTFiblJRWVhSb0lEMGdjR0YwYUM1eVpYTnZiSFpsS0Z4dUlDQWdJSEJoZEdndWFtOXBiaWhjYmlBZ0lDQWdJR0FrZTE5ZlpHbHlibUZ0WlgxZ0xGeHVJQ0FnSUNBZ1hDSXVMbHdpTEZ4dUlDQWdJQ0FnWENKcGJuUmxaM0poZEdsdmJsd2lMRnh1SUNBZ0lDQWdYQ0pqYUdGcGJtTnZaR1ZVY21GamEyVnljMXdpTEZ4dUlDQWdJQ0FnWUNSN1kyOXVkSEpoWTNST1lXMWxmUzVqYjNWdWRHQmNiaUFnSUNBcFhHNGdJQ2s3WEc0Z0lIUnllU0I3WEc0Z0lDQWdjMlZ4ZFdWdVkyVWdQU0J3WVhKelpVbHVkQ2htY3k1eVpXRmtSbWxzWlZONWJtTW9ZMjkxYm5SUVlYUm9LUzUwYjFOMGNtbHVaeWhjSW5WMFppMDRYQ0lwS1R0Y2JpQWdJQ0F2THlCbGMyeHBiblF0WkdsellXSnNaUzF1WlhoMExXeHBibVVnUUhSNWNHVnpZM0pwY0hRdFpYTnNhVzUwTDI1dkxYVnVkWE5sWkMxMllYSnpYRzRnSUgwZ1kyRjBZMmdnS0dVNklIVnVhMjV2ZDI0cElIdGNiaUFnSUNCelpYRjFaVzVqWlNBOUlERTdYRzRnSUgxY2JpQWdabk11ZDNKcGRHVkdhV3hsVTNsdVl5aGpiM1Z1ZEZCaGRHZ3NJSE5sY1hWbGJtTmxMblJ2VTNSeWFXNW5LQ2twTzF4dVhHNGdJSFJ5ZVNCN1hHNGdJQ0FnWm05eUlDaGpiMjV6ZENCd1pXVnlJRzltSUhCbFpYSnpLU0I3WEc0Z0lDQWdJQ0J3WVdOcllXZGxRMjl1ZEhKaFkzUW9jR1ZsY2l3Z1kyOXVkSEpoWTNSR2IyeGtaWElzSUdOdmJuUnlZV04wVG1GdFpTd2dkbVZ5YzJsdmJpazdYRzRnSUNBZ0lDQnBibk4wWVd4c1EyOXVkSEpoWTNRb2NHVmxjaXdnWTI5dWRISmhZM1JPWVcxbEtUdGNiaUFnSUNBZ0lHRndjSEp2ZG1WRGIyNTBjbUZqZENoY2JpQWdJQ0FnSUNBZ2NHVmxjaXhjYmlBZ0lDQWdJQ0FnWTI5dWRISmhZM1JPWVcxbExGeHVJQ0FnSUNBZ0lDQndaV1Z5SUQwOVBTQmNJbTl5WnkxaExYQmxaWEl0TUZ3aUlEOGdYQ0owYkhNdFkyRXRZMlZ5ZEM1d1pXMWNJaUE2SUZ3aWIzSmtaWEpsY2kxMGJITXRZMkV0WTJWeWRDNXdaVzFjSWl4Y2JpQWdJQ0FnSUNBZ2MyVnhkV1Z1WTJVc1hHNGdJQ0FnSUNBZ0lIWmxjbk5wYjI1Y2JpQWdJQ0FnSUNrN1hHNGdJQ0FnZlZ4dUlDQjlJR05oZEdOb0lDaGxjbkk2SUdGdWVTa2dlMXh1SUNBZ0lHTnZibk52YkdVdWJHOW5LRndpUlhKeWIzSWdaR1Z3Ykc5NWFXNW5JR052Ym5SeVlXTjBPbHdpTENCbGNuSXViV1Z6YzJGblpTazdYRzRnSUgxY2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR052YlcxcGRFTm9ZV2x1WTI5a1pTaGNiaUFnWTI5dWRISmhZM1JPWVcxbE9pQnpkSEpwYm1jc1hHNGdJSE5sY1hWbGJtTmxPaUJ1ZFcxaVpYSWdQU0F4TEZ4dUlDQjJaWEp6YVc5dU9pQnpkSEpwYm1jZ1BTQmNJakV1TUZ3aUxGeHVJQ0JqYjJ4c1pXTjBhVzl1YzBOdmJtWnBaejg2SUhOMGNtbHVaMXh1S1RvZ2RtOXBaQ0I3WEc0Z0lHTnZibk4wSUdOdmJHeGxZM1JwYjI1elJteGhaeUE5SUdOdmJHeGxZM1JwYjI1elEyOXVabWxuWEc0Z0lDQWdQeUJnSUMwdFkyOXNiR1ZqZEdsdmJuTXRZMjl1Wm1sbklGd2lKSHRqYjJ4c1pXTjBhVzl1YzBOdmJtWnBaMzFjSW1CY2JpQWdJQ0E2SUZ3aVhDSTdYRzRnSUdWNFpXTlRlVzVqS0dCa2IyTnJaWElnWlhobFl5QnZjbWN0WVMxd1pXVnlMVEFnYm05a1pTQXVMM2RsWVhabGNpOXNhV0l2WTI5eVpTOWpiR2t1WTJweklHTnZiVzFwZEMxamFHRnBibU52WkdVZ0xXUWdMWE1nWEZ4Y2JpQWdJQ0F0TFc5eVpHVnlaWEl0WVdSa2NtVnpjeUJ2Y21jdFlTMXZjbVJsY21WeUxUQTZOekF5TVNCY1hGeHVJQ0FnSUMwdFkyaGhibTVsYkMxcFpDQnphVzF3YkdVdFkyaGhibTVsYkNCY1hGeHVJQ0FnSUMwdFkyaGhhVzVqYjJSbExXNWhiV1VnSkh0amIyNTBjbUZqZEU1aGJXVjlJRnhjWEc0Z0lDQWdMUzFqYUdGcGJtTnZaR1V0ZG1WeWMybHZiaUFrZTNabGNuTnBiMjU5SUZ4Y1hHNGdJQ0FnTFMxelpYRjFaVzVqWlNBa2UzTmxjWFZsYm1ObGZTUjdZMjlzYkdWamRHbHZibk5HYkdGbmZTQmNYRnh1SUNBZ0lDMHRaVzVoWW14bExYUnNjeUJjWEZ4dUlDQWdJQzB0ZEd4ekxXTmhMV05sY25RdFptbHNaU0F2ZDJWaGRtVnlMM0JsWlhJdmRHeHpMV05oTFdObGNuUXVjR1Z0SUZ4Y1hHNGdJQ0FnTFMxd1pXVnlMV0ZrWkhKbGMzTmxjeUJ2Y21jdFlTMXdaV1Z5TFRBNk56QXpNU3h2Y21jdFlpMXdaV1Z5TFRBNk56QXpNaXh2Y21jdFl5MXdaV1Z5TFRBNk56QXpNeUJjWEZ4dUlDQWdJQzB0Y0dWbGNpMXliMjkwTFhSc2N5QXVMM2RsWVhabGNpOXdaV1Z5TDNSc2N5MWpZUzFqWlhKMExuQmxiU3d1TDNkbFlYWmxjaTl3WldWeUwyOXlaeTFpTFhSc2N5MWpZUzFqWlhKMExuQmxiU3d1TDNkbFlYWmxjaTl3WldWeUwyOXlaeTFqTFhSc2N5MWpZUzFqWlhKMExuQmxiV0FwTzF4dWZWeHVYRzVsZUhCdmNuUWdZWE41Ym1NZ1puVnVZM1JwYjI0Z1pXNXpkWEpsUTI5dWRISmhZM1JTWldGa2FXNWxjM01vWEc0Z0lHTnZiblJ5WVdOMFRtRnRaVG9nYzNSeWFXNW5MRnh1SUNCa2IyTnJaWEpPWVcxbE9pQnpkSEpwYm1jZ1BTQmNJbTl5WnkxaExYQmxaWEl0TUZ3aUxGeHVJQ0IwYkhORFpYSjBPaUJ6ZEhKcGJtY2dQU0JjSW5Sc2N5MWpZUzFqWlhKMExuQmxiVndpTEZ4dUlDQmpiM1Z1ZEdWeUlEMGdNRnh1S1RvZ1VISnZiV2x6WlR4emRISnBibWMrSUh0Y2JpQWdkSEo1SUh0Y2JpQWdJQ0F2THlCUWNtVndZWEpsSUhSb1pTQktVMDlPSUdGeVozVnRaVzUwSUdadmNpQjBhR1VnWTJoaGFXNWpiMlJsWEc0Z0lDQWdZMjl1YzNRZ1kyaGhhVzVqYjJSbFFYSm5jeUE5SUVwVFQwNHVjM1J5YVc1bmFXWjVLSHRjYmlBZ0lDQWdJR1oxYm1OMGFXOXVPaUJjSW1obFlXeDBhR05vWldOclhDSXNYRzRnSUNBZ0lDQkJjbWR6T2lCYlhTeGNiaUFnSUNCOUtUdGNibHh1SUNBZ0lHbG1JQ2hqYjNWdWRHVnlJRDRnTVRBcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCY0lsd2lPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHZJRWx1ZG05clpTQjBhR1VnWTJoaGFXNWpiMlJsWEc0Z0lDQWdZMjl1YzNRZ2NtVnpJRDBnWlhobFkxTjVibU1vWEc0Z0lDQWdJQ0JnWkc5amEyVnlJR1Y0WldNZ0pIdGtiMk5yWlhKT1lXMWxmU0J3WldWeUlHTm9ZV2x1WTI5a1pTQnhkV1Z5ZVNCY1hGeHVJQ0FnSUNBZ0lDQXRReUJ6YVcxd2JHVXRZMmhoYm01bGJDQmNYRnh1SUNBZ0lDQWdJQ0F0YmlBa2UyTnZiblJ5WVdOMFRtRnRaWDBnWEZ4Y2JpQWdJQ0FnSUNBZ0xXTWdKeVI3WTJoaGFXNWpiMlJsUVhKbmMzMG5JRnhjWEc0Z0lDQWdJQ0FnSUMwdGRHeHpJQzB0WTJGbWFXeGxJQzkzWldGMlpYSXZjR1ZsY2k4a2UzUnNjME5sY25SOVlGeHVJQ0FnSUNrN1hHNWNiaUFnSUNCamIyNXpkQ0J5WlhOMWJIUWdQU0JLVTA5T0xuQmhjbk5sS0hKbGN5NTBiMU4wY21sdVp5Z3BLVHRjYmx4dUlDQWdJSEpsZEhWeWJpQnlaWE4xYkhRdWFHVmhiSFJvWTJobFkyc3VkRzlUZEhKcGJtY29LVHRjYmlBZ0lDQXZMeUJsYzJ4cGJuUXRaR2x6WVdKc1pTMXVaWGgwTFd4cGJtVWdRSFI1Y0dWelkzSnBjSFF0WlhOc2FXNTBMMjV2TFhWdWRYTmxaQzEyWVhKelhHNGdJSDBnWTJGMFkyZ2dLR1Z5Y2pvZ1lXNTVLU0I3WEc0Z0lDQWdZMjl1YzI5c1pTNXNiMmNvWENKRGFHRnBibU52WkdVZ2JtOTBJSEpsWVdSNUxpQlNaWFJ5ZVdsdVp5NHVMbHdpS1R0Y2JpQWdJQ0JoZDJGcGRDQnVaWGNnVUhKdmJXbHpaU2dvY2lrZ1BUNGdjMlYwVkdsdFpXOTFkQ2h5TENBMU1EQXdLU2s3SUM4dklGZGhhWFFnWm05eUlEVWdjMlZqYjI1a2N5QmlaV1p2Y21VZ2NtVjBjbmxwYm1kY2JpQWdJQ0J5WlhSMWNtNGdaVzV6ZFhKbFEyOXVkSEpoWTNSU1pXRmthVzVsYzNNb1hHNGdJQ0FnSUNCamIyNTBjbUZqZEU1aGJXVXNYRzRnSUNBZ0lDQmtiMk5yWlhKT1lXMWxMRnh1SUNBZ0lDQWdkR3h6UTJWeWRDeGNiaUFnSUNBZ0lHTnZkVzUwWlhJcksxeHVJQ0FnSUNrN1hHNGdJSDFjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIUnlhVzBvYzNSeU9pQnpkSEpwYm1jcE9pQnpkSEpwYm1jZ2UxeHVJQ0JqYjI1emIyeGxMbmRoY200b1hDSkRiMjUwY21GamRDQnViM1FnZEhKcGJXMXBibWNnY21WemNHOXVjMlVnY0hKdmNHVnliSGs2SUZ3aUxDQnpkSElwTzF4dUlDQnlaWFIxY200Z2MzUnlMblJ5YVcwb0tUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdsdWRtOXJaVU5vWVdsdVkyOWtaU2hjYmlBZ1kyOXVkSEpoWTNST1lXMWxPaUJ6ZEhKcGJtY3NYRzRnSUdaMWJtTjBhVzl1VG1GdFpUb2djM1J5YVc1bkxGeHVJQ0JoY21kek9pQmhibmxiWFN4Y2JpQWdkSEpoYm5OcFpXNTBPaUJoYm5rZ1BTQjdmU3hjYmlBZ1pHOWphMlZ5VG1GdFpUb2djM1J5YVc1bklEMGdYQ0p2Y21jdFlTMXdaV1Z5TFRCY0lpeGNiaUFnZEd4ek9pQnpkSEpwYm1jZ1BTQmNJblJzY3kxallTMWpaWEowTG5CbGJWd2lYRzRwSUh0Y2JpQWdMeThnVUhKbGNHRnlaU0IwYUdVZ1NsTlBUaUJoY21kMWJXVnVkQ0JtYjNJZ2RHaGxJR05vWVdsdVkyOWtaVnh1SUNCamIyNXpkQ0JqYUdGcGJtTnZaR1ZCY21keklEMGdTbE5QVGk1emRISnBibWRwWm5rb2UxeHVJQ0FnSUdaMWJtTjBhVzl1T2lCbWRXNWpkR2x2Yms1aGJXVXNYRzRnSUNBZ1FYSm5jem9nWVhKbmN5eGNiaUFnZlNrN1hHNWNiaUFnWTI5dWMzUWdkSEpoYm5OcFpXNTBSR0YwWVNBOUlFcFRUMDR1YzNSeWFXNW5hV1o1S0hSeVlXNXphV1Z1ZENrN1hHNGdJR052Ym5OMElIUnlZVzV6YVdWdWRGTjBjbWx1WnlBOUlHQXRMWFJ5WVc1emFXVnVkQ0FuSkh0MGNtRnVjMmxsYm5SRVlYUmhmU2RnTzF4dVhHNGdJQzh2SUVsdWRtOXJaU0IwYUdVZ1kyaGhhVzVqYjJSbFhHNGdJSEpsZEhWeWJpQmxlR1ZqVTNsdVl5aGNiaUFnSUNCZ1pHOWphMlZ5SUdWNFpXTWdKSHRrYjJOclpYSk9ZVzFsZlNCd1pXVnlJR05vWVdsdVkyOWtaU0JwYm5admEyVWdYRnhjYmlBZ0lDQXRReUJ6YVcxd2JHVXRZMmhoYm01bGJDQmNYRnh1SUNBZ0lDMXVJQ1I3WTI5dWRISmhZM1JPWVcxbGZTQmNYRnh1SUNBZ0lDMWpJQ2NrZTJOb1lXbHVZMjlrWlVGeVozTjlKeUJjWEZ4dUlDQWdJQzB0Y0dWbGNrRmtaSEpsYzNObGN5QnZjbWN0WVMxd1pXVnlMVEE2TnpBek1TQmNYRnh1SUNBZ0lDMHRkR3h6VW05dmRFTmxjblJHYVd4bGN5QXZkMlZoZG1WeUwzQmxaWEl2ZEd4ekxXTmhMV05sY25RdWNHVnRJRnhjWEc0Z0lDQWdMUzF3WldWeVFXUmtjbVZ6YzJWeklHOXlaeTFpTFhCbFpYSXRNRG8zTURNeUlGeGNYRzRnSUNBZ0xTMTBiSE5TYjI5MFEyVnlkRVpwYkdWeklDOTNaV0YyWlhJdmNHVmxjaTl2Y21jdFlpMTBiSE10WTJFdFkyVnlkQzV3WlcwZ1hGeGNiaUFnSUNBdExYQmxaWEpCWkdSeVpYTnpaWE1nYjNKbkxXTXRjR1ZsY2kwd09qY3dNek1nWEZ4Y2JpQWdJQ0F0TFhSc2MxSnZiM1JEWlhKMFJtbHNaWE1nTDNkbFlYWmxjaTl3WldWeUwyOXlaeTFqTFhSc2N5MWpZUzFqWlhKMExuQmxiU0JjWEZ4dUlDQWdJQzF2SUc5eVp5MWhMVzl5WkdWeVpYSXRNRG8zTURJeElGeGNYRzRnSUNBZ0xTMTBiSE1nTFMxallXWnBiR1VnTDNkbFlYWmxjaTl3WldWeUx5UjdkR3h6ZlNCY1hGeHVJQ0FnSUNSN2RISmhibk5wWlc1MElEOGdkSEpoYm5OcFpXNTBVM1J5YVc1bklEb2dYQ0pjSW4xZ1hHNGdJQ2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnhkV1Z5ZVVOb1lXbHVZMjlrWlNoY2JpQWdZMjl1ZEhKaFkzUk9ZVzFsT2lCemRISnBibWNzWEc0Z0lHWjFibU4wYVc5dVRtRnRaVG9nYzNSeWFXNW5MRnh1SUNCaGNtZHpPaUJoYm5sYlhTeGNiaUFnWkc5amEyVnlUbUZ0WlRvZ2MzUnlhVzVuSUQwZ1hDSnZjbWN0WVMxd1pXVnlMVEJjSWl4Y2JpQWdkR3h6T2lCemRISnBibWNnUFNCY0luUnNjeTFqWVMxalpYSjBMbkJsYlZ3aVhHNHBJSHRjYmlBZ2RISjVJSHRjYmlBZ0lDQXZMeUJRY21Wd1lYSmxJSFJvWlNCS1UwOU9JR0Z5WjNWdFpXNTBJR1p2Y2lCMGFHVWdZMmhoYVc1amIyUmxYRzRnSUNBZ1kyOXVjM1FnWTJoaGFXNWpiMlJsUVhKbmN5QTlJRXBUVDA0dWMzUnlhVzVuYVdaNUtIdGNiaUFnSUNBZ0lHWjFibU4wYVc5dU9pQm1kVzVqZEdsdmJrNWhiV1VzWEc0Z0lDQWdJQ0JCY21kek9pQmhjbWR6TEZ4dUlDQWdJSDBwTzF4dVhHNGdJQ0FnTHk4Z1NXNTJiMnRsSUhSb1pTQmphR0ZwYm1OdlpHVmNiaUFnSUNCamIyNXpkQ0J5WlhNZ1BTQmxlR1ZqVTNsdVl5aGNiaUFnSUNBZ0lHQmtiMk5yWlhJZ1pYaGxZeUFrZTJSdlkydGxjazVoYldWOUlIQmxaWElnWTJoaGFXNWpiMlJsSUhGMVpYSjVJRnhjWEc0Z0lDQWdJQ0FnSUMxRElITnBiWEJzWlMxamFHRnVibVZzSUZ4Y1hHNGdJQ0FnSUNBZ0lDMXVJQ1I3WTI5dWRISmhZM1JPWVcxbGZTQmNYRnh1SUNBZ0lDQWdJQ0F0WXlBbkpIdGphR0ZwYm1OdlpHVkJjbWR6ZlNjZ1hGeGNiaUFnSUNBZ0lDQWdMUzEwYkhNZ0xTMWpZV1pwYkdVZ0pIdDBiSE45WUZ4dUlDQWdJQ2s3WEc1Y2JpQWdJQ0JqYjI1emRDQndjbTlqWlhOelpXUWdQU0J5WlhNdWRHOVRkSEpwYm1jb0tUdGNiaUFnSUNCamIyNXpiMnhsTG14dlp5aGNJa0pzYjJOclkyaGhhVzRnY21WaFpEcGNJaXdnY0hKdlkyVnpjMlZrS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUJ3Y205alpYTnpaV1E3WEc0Z0lIMGdZMkYwWTJnZ0tHVnljam9nWVc1NUtTQjdYRzRnSUNBZ1kyOXVjMjlzWlM1c2IyY29YQ0pHWVdsc1pXUWdkRzhnY21WaFpDQmliRzlqYTJOb1lXbHVYQ0lwTzF4dUlDQWdJSFJvY205M0lHVnljanRjYmlBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYVc1MmIydGxVSEpwZG1GMFpVTm9ZV2x1WTI5a1pTaGNiaUFnWTI5dWRISmhZM1JPWVcxbE9pQnpkSEpwYm1jc1hHNGdJR1oxYm1OMGFXOXVUbUZ0WlRvZ2MzUnlhVzVuTEZ4dUlDQmhjbWR6T2lCaGJubGJYU3hjYmlBZ2RISmhibk5wWlc1ME9pQmhibmtnUFNCN2ZTeGNiaUFnWkc5amEyVnlUbUZ0WlRvZ2MzUnlhVzVuSUQwZ1hDSnZjbWN0WVMxd1pXVnlMVEJjSWl4Y2JpQWdkR3h6T2lCemRISnBibWNnUFNCY0luUnNjeTFqWVMxalpYSjBMbkJsYlZ3aVhHNHBJSHRjYmlBZ0x5OGdVSEpsY0dGeVpTQjBhR1VnU2xOUFRpQmhjbWQxYldWdWRDQm1iM0lnZEdobElHTm9ZV2x1WTI5a1pWeHVJQ0JqYjI1emRDQmphR0ZwYm1OdlpHVkJjbWR6SUQwZ1NsTlBUaTV6ZEhKcGJtZHBabmtvZTF4dUlDQWdJR1oxYm1OMGFXOXVPaUJtZFc1amRHbHZiazVoYldVc1hHNGdJQ0FnUVhKbmN6b2dZWEpuY3l4Y2JpQWdmU2s3WEc1Y2JpQWdZMjl1YzNRZ2RISmhibk5wWlc1MFJHRjBZU0E5SUVwVFQwNHVjM1J5YVc1bmFXWjVLSFJ5WVc1emFXVnVkQ2s3WEc0Z0lHTnZibk4wSUhSeVlXNXphV1Z1ZEZOMGNtbHVaeUE5SUdBdExYUnlZVzV6YVdWdWRDQW5KSHQwY21GdWMybGxiblJFWVhSaGZTZGdPMXh1WEc0Z0lDOHZJRWx1ZG05clpTQjBhR1VnWTJoaGFXNWpiMlJsWEc0Z0lISmxkSFZ5YmlCbGVHVmpVM2x1WXloY2JpQWdJQ0JnWkc5amEyVnlJR1Y0WldNZ0pIdGtiMk5yWlhKT1lXMWxmU0J3WldWeUlHTm9ZV2x1WTI5a1pTQnBiblp2YTJVZ1hGeGNiaUFnSUNBdFF5QnphVzF3YkdVdFkyaGhibTVsYkNCY1hGeHVJQ0FnSUMxdUlDUjdZMjl1ZEhKaFkzUk9ZVzFsZlNCY1hGeHVJQ0FnSUMxaklDY2tlMk5vWVdsdVkyOWtaVUZ5WjNOOUp5QmNYRnh1SUNBZ0lDMHRjR1ZsY2tGa1pISmxjM05sY3lCdmNtY3RZUzF3WldWeUxUQTZOekF6TVNCY1hGeHVJQ0FnSUMwdGRHeHpVbTl2ZEVObGNuUkdhV3hsY3lBdmQyVmhkbVZ5TDNCbFpYSXZkR3h6TFdOaExXTmxjblF1Y0dWdElGeGNYRzRnSUNBZ0xXOGdiM0puTFdFdGIzSmtaWEpsY2kwd09qY3dNakVnWEZ4Y2JpQWdJQ0F0TFhSc2N5QXRMV05oWm1sc1pTQXZkMlZoZG1WeUwzQmxaWEl2Skh0MGJITjlJRnhjWEc0Z0lDQWdKSHQwY21GdWMybGxiblFnUHlCMGNtRnVjMmxsYm5SVGRISnBibWNnT2lCY0lsd2lmV0JjYmlBZ0tUdGNibHh1SUNBdkx5QWdJQzB0Y0dWbGNrRmtaSEpsYzNObGN5QnZjbWN0WWkxd1pXVnlMVEE2TnpBek1pQmNYRnh1SUNBdkx5QXRMWFJzYzFKdmIzUkRaWEowUm1sc1pYTWdMM2RsWVhabGNpOXdaV1Z5TDI5eVp5MWlMWFJzY3kxallTMWpaWEowTG5CbGJTQmNYRnh1SUNBdkx5QXRMWEJsWlhKQlpHUnlaWE56WlhNZ2IzSm5MV010Y0dWbGNpMHdPamN3TXpNZ1hGeGNiaUFnTHk4Z0xTMTBiSE5TYjI5MFEyVnlkRVpwYkdWeklDOTNaV0YyWlhJdmNHVmxjaTl2Y21jdFl5MTBiSE10WTJFdFkyVnlkQzV3WlcwZ1hGeGNibjFjYmx4dVpYaHdiM0owSUdWdWRXMGdVMk55YVhCMFEyOXRiV0Z1WkhNZ2UxeHVJQ0JUVkVGU1ZDQTlJRndpWm1GaWNtbGpMV05vWVdsdVkyOWtaUzF1YjJSbElITjBZWEowSUZ4Y1hHNGdJQ0FnSUNBZ0lDQWdMUzFuY25CakxtMWhlRjl5WldObGFYWmxYMjFsYzNOaFoyVmZiR1Z1WjNSb0lDUjdRMGhCU1U1RFQwUkZYMDFCV0ZKRlExWk5VMGRUU1ZwRkxURTFOekk0TmpRd2ZTQmNYRnh1SUNBZ0lDQWdJQ0FnSUMwdFozSndZeTV0WVhoZmMyVnVaRjl0WlhOellXZGxYMnhsYm1kMGFDQWtlME5JUVVsT1EwOUVSVjlOUVZoVFJVNUVUVk5IVTBsYVJTMHhOVGN5T0RZME1IMGdYQ0lzWEc0Z0lGTlVRVkpVWDBORFFVRlRJRDBnWENKbVlXSnlhV010WTJoaGFXNWpiMlJsTFc1dlpHVWdjMlZ5ZG1WeUlGeGNYRzRnSUNBZ0lDQWdJQ0FnTFMxamFHRnBibU52WkdVdFlXUmtjbVZ6Y3owa1EwaEJTVTVEVDBSRlgxTkZVbFpGVWw5QlJFUlNSVk5USUZ4Y1hHNGdJQ0FnSUNBZ0lDQWdMUzFqYUdGcGJtTnZaR1V0YVdROUpFTklRVWxPUTA5RVJWOUpSQ0JjWEZ4dUlDQWdJQ0FnSUNBZ0lDMHRZMmhoYVc1amIyUmxMWFJzY3kxalpYSjBMV1pwYkdVOUpIdERTRUZKVGtOUFJFVmZWRXhUWDBORlVsUjlJRnhjWEc0Z0lDQWdJQ0FnSUNBZ0xTMWphR0ZwYm1OdlpHVXRkR3h6TFd0bGVTMW1hV3hsUFNSN1EwaEJTVTVEVDBSRlgxUk1VMTlMUlZsOUlGeGNYRzRnSUNBZ0lDQWdJQ0FnTFMxbmNuQmpMbTFoZUY5eVpXTmxhWFpsWDIxbGMzTmhaMlZmYkdWdVozUm9JQ1I3UTBoQlNVNURUMFJGWDAxQldGSkZRMVpOVTBkVFNWcEZMVEUxTnpJNE5qUXdmU0JjWEZ4dUlDQWdJQ0FnSUNBZ0lDMHRaM0p3WXk1dFlYaGZjMlZ1WkY5dFpYTnpZV2RsWDJ4bGJtZDBhQ0FrZTBOSVFVbE9RMDlFUlY5TlFWaFRSVTVFVFZOSFUwbGFSUzB4TlRjeU9EWTBNSDBnWEZ4Y2JpQWdJQ0FnSUNBZ0lDQXRMWFJzY3k1bGJtRmliR1ZrUFhSeWRXVmNJaXhjYmlBZ1UxUkJVbFJmUTBOQlFWTmZSRVZDVlVjZ1BTQmNJbTV2WkdVZ0xTMXBibk53WldOMFBUQXVNQzR3TGpBNk9USXlPU0F1TDI1dlpHVmZiVzlrZFd4bGN5OHVZbWx1TDJaaFluSnBZeTFqYUdGcGJtTnZaR1V0Ym05a1pTQnpaWEoyWlhJZ1hGeGNiaUFnSUNBZ0lDQWdJQ0F0TFdOb1lXbHVZMjlrWlMxaFpHUnlaWE56UFNSRFNFRkpUa05QUkVWZlUwVlNWa1ZTWDBGRVJGSkZVMU1nWEZ4Y2JpQWdJQ0FnSUNBZ0lDQXRMV05vWVdsdVkyOWtaUzFwWkQwa1EwaEJTVTVEVDBSRlgwbEVJRnhjWEc0Z0lDQWdJQ0FnSUNBZ0xTMWphR0ZwYm1OdlpHVXRkR3h6TFdObGNuUXRabWxzWlQwa2UwTklRVWxPUTA5RVJWOVVURk5mUTBWU1ZIMGdYRnhjYmlBZ0lDQWdJQ0FnSUNBdExXTm9ZV2x1WTI5a1pTMTBiSE10YTJWNUxXWnBiR1U5Skh0RFNFRkpUa05QUkVWZlZFeFRYMHRGV1gwZ1hGeGNiaUFnSUNBZ0lDQWdJQ0F0TFdkeWNHTXViV0Y0WDNKbFkyVnBkbVZmYldWemMyRm5aVjlzWlc1bmRHZ2dKSHREU0VGSlRrTlBSRVZmVFVGWVVrVkRWazFUUjFOSldrVXRNVFUzTWpnMk5EQjlJRnhjWEc0Z0lDQWdJQ0FnSUNBZ0xTMW5jbkJqTG0xaGVGOXpaVzVrWDIxbGMzTmhaMlZmYkdWdVozUm9JQ1I3UTBoQlNVNURUMFJGWDAxQldGTkZUa1JOVTBkVFNWcEZMVEUxTnpJNE5qUXdmU0JjWEZ4dUlDQWdJQ0FnSUNBZ0lDMHRkR3h6TG1WdVlXSnNaV1E5ZEhKMVpWd2lMRnh1SUNCVFZFRlNWRjlFUlVKVlJ5QTlJRndpYm05a1pTQXRMV2x1YzNCbFkzUTlNQzR3TGpBdU1EbzVNakk1SUM5MWMzSXZiRzlqWVd3dmMzSmpMMjV2WkdWZmJXOWtkV3hsY3k4dVltbHVMMlpoWW5KcFl5MWphR0ZwYm1OdlpHVXRibTlrWlNCemRHRnlkQ0JjWEZ4dUlDQWdJQ0FnSUNBZ0lDMHRaM0p3WXk1dFlYaGZjbVZqWldsMlpWOXRaWE56WVdkbFgyeGxibWQwYUNBa2UwTklRVWxPUTA5RVJWOU5RVmhTUlVOV1RWTkhVMGxhUlMweE5UY3lPRFkwTUgwZ1hGeGNiaUFnSUNBZ0lDQWdJQ0F0TFdkeWNHTXViV0Y0WDNObGJtUmZiV1Z6YzJGblpWOXNaVzVuZEdnZ0pIdERTRUZKVGtOUFJFVmZUVUZZVTBWT1JFMVRSMU5KV2tVdE1UVTNNamcyTkRCOVhDSXNYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCblpYUkRiMjUwY21GamRGTjBZWEowUTI5dGJXRnVaQ2hjYmlBZ1pHVmlkV2M2SUdKdmIyeGxZVzRzWEc0Z0lHTmpZV0Z6T2lCaWIyOXNaV0Z1WEc0cE9pQnpkSEpwYm1jZ2UxeHVJQ0JwWmlBb1kyTmhZWE1wSUh0Y2JpQWdJQ0J5WlhSMWNtNGdaR1ZpZFdkY2JpQWdJQ0FnSUQ4Z1UyTnlhWEIwUTI5dGJXRnVaSE11VTFSQlVsUmZRME5CUVZOZlJFVkNWVWRjYmlBZ0lDQWdJRG9nVTJOeWFYQjBRMjl0YldGdVpITXVVMVJCVWxSZlEwTkJRVk03WEc0Z0lIMWNiaUFnY21WMGRYSnVJR1JsWW5WbklEOGdVMk55YVhCMFEyOXRiV0Z1WkhNdVUxUkJVbFJmUkVWQ1ZVY2dPaUJUWTNKcGNIUkRiMjF0WVc1a2N5NVRWRUZTVkR0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnWm05eWJXRjBSR2xoWjI1dmMzUnBZM01vWkdsaFozTTZJSEpsWVdSdmJteDVJSFJ6TGtScFlXZHViM04wYVdOYlhTazZJSE4wY21sdVp5QjdYRzRnSUdOdmJuTjBJR2h2YzNRNklIUnpMa1p2Y20xaGRFUnBZV2R1YjNOMGFXTnpTRzl6ZENBOUlIdGNiaUFnSUNCblpYUkRZVzV2Ym1sallXeEdhV3hsVG1GdFpUb2dLR1lwSUQwK0lHWXNYRzRnSUNBZ1oyVjBRM1Z5Y21WdWRFUnBjbVZqZEc5eWVUb2dkSE11YzNsekxtZGxkRU4xY25KbGJuUkVhWEpsWTNSdmNua3NYRzRnSUNBZ1oyVjBUbVYzVEdsdVpUb2dLQ2tnUFQ0Z2RITXVjM2x6TG01bGQweHBibVVzWEc0Z0lIMDdYRzRnSUhKbGRIVnliaUIwY3k1bWIzSnRZWFJFYVdGbmJtOXpkR2xqYzFkcGRHaERiMnh2Y2tGdVpFTnZiblJsZUhRb1pHbGhaM01zSUdodmMzUXBPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1kyOXRjR2xzWlZkcGRHaFVjMk52Ym1acFowOTJaWEp5YVdSbGN5aGNiaUFnZEhOamIyNW1hV2RRWVhSb09pQnpkSEpwYm1jc1hHNGdJRzkyWlhKeWFXUmxjem9nVUdGeWRHbGhiRHgwY3k1RGIyMXdhV3hsY2s5d2RHbHZibk0rWEc0cE9pQjJiMmxrSUh0Y2JpQWdZMjl1YzNRZ1lXSnpRMjl1Wm1sblVHRjBhQ0E5SUhCaGRHZ3VhWE5CWW5OdmJIVjBaU2gwYzJOdmJtWnBaMUJoZEdncFhHNGdJQ0FnUHlCMGMyTnZibVpwWjFCaGRHaGNiaUFnSUNBNklIQmhkR2d1Y21WemIyeDJaU2h3Y205alpYTnpMbU4zWkNncExDQjBjMk52Ym1acFoxQmhkR2dwTzF4dVhHNGdJQzh2SURFcElGSmxZV1FnZEdobElIUnpZMjl1Wm1sbkxtcHpiMjVjYmlBZ1kyOXVjM1FnWTI5dVptbG5SbWxzWlNBOUlIUnpMbkpsWVdSRGIyNW1hV2RHYVd4bEtHRmljME52Ym1acFoxQmhkR2dzSUhSekxuTjVjeTV5WldGa1JtbHNaU2s3WEc0Z0lHbG1JQ2hqYjI1bWFXZEdhV3hsTG1WeWNtOXlLU0I3WEc0Z0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHWnZjbTFoZEVScFlXZHViM04wYVdOektGdGpiMjVtYVdkR2FXeGxMbVZ5Y205eVhTa3BPMXh1SUNCOVhHNWNiaUFnTHk4Z01pa2dVR0Z5YzJVZ2FYUWdLSEpsYzI5c2RtVnpJRndpWlhoMFpXNWtjMXdpTENCcGJtTnNkV1JsTDJWNFkyeDFaR1V2Wm1sc1pYTXNJR1YwWXk0cFhHNGdJR052Ym5OMElHTnZibVpwWjBScGNpQTlJSEJoZEdndVpHbHlibUZ0WlNoaFluTkRiMjVtYVdkUVlYUm9LVHRjYmlBZ1kyOXVjM1FnY0dGeWMyVmtJRDBnZEhNdWNHRnljMlZLYzI5dVEyOXVabWxuUm1sc1pVTnZiblJsYm5Rb1hHNGdJQ0FnWTI5dVptbG5SbWxzWlM1amIyNW1hV2NzWEc0Z0lDQWdkSE11YzNsekxGeHVJQ0FnSUdOdmJtWnBaMFJwY2l4Y2JpQWdJQ0F2S21WNGFYTjBhVzVuVDNCMGFXOXVjeW92SUhWdVpHVm1hVzVsWkN4Y2JpQWdJQ0JoWW5ORGIyNW1hV2RRWVhSb1hHNGdJQ2s3WEc1Y2JpQWdhV1lnS0hCaGNuTmxaQzVsY25KdmNuTXViR1Z1WjNSb0tTQjdYRzRnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0dadmNtMWhkRVJwWVdkdWIzTjBhV056S0hCaGNuTmxaQzVsY25KdmNuTXBLVHRjYmlBZ2ZWeHVYRzRnSUM4dklETXBJRTkyWlhKeWFXUmxJR052YlhCcGJHVnlJRzl3ZEdsdmJuTWdhVzR0YldWdGIzSjVYRzRnSUdOdmJuTjBJRzl3ZEdsdmJuTTZJSFJ6TGtOdmJYQnBiR1Z5VDNCMGFXOXVjeUE5SUh0Y2JpQWdJQ0F1TGk1d1lYSnpaV1F1YjNCMGFXOXVjeXhjYmlBZ0lDQXVMaTV2ZG1WeWNtbGtaWE1zWEc0Z0lIMDdYRzVjYmlBZ0x5OGdUM0IwYVc5dVlXdzZJRWxtSUhsdmRTQnZkbVZ5Y21sa1pTQnZkWFJFYVhJdmNtOXZkRVJwY2l3Z1pXNXpkWEpsSUhSb1pYbmlnSmx5WlNCaFluTnZiSFYwWlZ4dUlDQXZMeUIwYnlCaGRtOXBaQ0J6ZFhKd2NtbHpaWE1nWkdWd1pXNWthVzVuSUc5dUlFTlhSQzVjYmlBZ2FXWWdLRzl3ZEdsdmJuTXViM1YwUkdseUtTQnZjSFJwYjI1ekxtOTFkRVJwY2lBOUlIQmhkR2d1Y21WemIyeDJaU2hqYjI1bWFXZEVhWElzSUc5d2RHbHZibk11YjNWMFJHbHlLVHRjYmlBZ2FXWWdLRzl3ZEdsdmJuTXVjbTl2ZEVScGNpbGNiaUFnSUNCdmNIUnBiMjV6TG5KdmIzUkVhWElnUFNCd1lYUm9MbkpsYzI5c2RtVW9ZMjl1Wm1sblJHbHlMQ0J2Y0hScGIyNXpMbkp2YjNSRWFYSXBPMXh1WEc0Z0lDOHZJRFFwSUVOeVpXRjBaU0J3Y205bmNtRnRJQ3NnWlcxcGRGeHVJQ0JqYjI1emRDQndjbTluY21GdElEMGdkSE11WTNKbFlYUmxVSEp2WjNKaGJTaDdYRzRnSUNBZ2NtOXZkRTVoYldWek9pQndZWEp6WldRdVptbHNaVTVoYldWekxGeHVJQ0FnSUc5d2RHbHZibk1zWEc0Z0lDQWdjSEp2YW1WamRGSmxabVZ5Wlc1alpYTTZJSEJoY25ObFpDNXdjbTlxWldOMFVtVm1aWEpsYm1ObGN5eGNiaUFnZlNrN1hHNWNiaUFnWTI5dWMzUWdjSEpsUlcxcGRDQTlJSFJ6TG1kbGRGQnlaVVZ0YVhSRWFXRm5ibTl6ZEdsamN5aHdjbTluY21GdEtUdGNiaUFnYVdZZ0tIQnlaVVZ0YVhRdWJHVnVaM1JvS1NCN1hHNGdJQ0FnTHk4Z1NXWWdlVzkxSUhkaGJuUWdYQ0owY21GdWMzQnBiR1VnWVc1NWQyRjVYQ0lzSUhsdmRTQmpZVzRnWTJodmIzTmxJSFJ2SUc1dmRDQjBhSEp2ZHlCb1pYSmxMbHh1SUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lobWIzSnRZWFJFYVdGbmJtOXpkR2xqY3lod2NtVkZiV2wwS1NrN1hHNGdJSDFjYmx4dUlDQmpiMjV6ZENCbGJXbDBVbVZ6ZFd4MElEMGdjSEp2WjNKaGJTNWxiV2wwS0NrN1hHNGdJR052Ym5OMElHVnRhWFJFYVdGbmJtOXpkR2xqY3lBOUlHVnRhWFJTWlhOMWJIUXVaR2xoWjI1dmMzUnBZM01nUHo4Z1cxMDdYRzRnSUdsbUlDaGxiV2wwUkdsaFoyNXZjM1JwWTNNdWJHVnVaM1JvS1NCN1hHNGdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLR1p2Y20xaGRFUnBZV2R1YjNOMGFXTnpLR1Z0YVhSRWFXRm5ibTl6ZEdsamN5a3BPMXh1SUNCOVhHNWNiaUFnYVdZZ0tHVnRhWFJTWlhOMWJIUXVaVzFwZEZOcmFYQndaV1FwSUh0Y2JpQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9YQ0pGYldsMElIZGhjeUJ6YTJsd2NHVmtJQ2hqYUdWamF5QmthV0ZuYm05emRHbGpjeUJoWW05MlpTa3VYQ0lwTzF4dUlDQjlYRzU5WEc0aVhYMD0iXX0=