@decaf-ts/for-fabric 0.12.7 → 0.12.10

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 (560) hide show
  1. package/README.md +177 -146
  2. package/dist/for-fabric.cjs +3804 -2
  3. package/dist/for-fabric.js +3908 -2
  4. package/lib/cjs/bin/cli.cjs +2 -2
  5. package/lib/cjs/cli-module.cjs +215 -6
  6. package/lib/cjs/cli-utils.cjs +2 -2
  7. package/lib/cjs/client/FabricClientAdapter.cjs +2 -2
  8. package/lib/cjs/client/FabricClientDispatch.cjs +3 -3
  9. package/lib/cjs/client/FabricClientPaginator.cjs +2 -2
  10. package/lib/cjs/client/FabricClientRepository.cjs +2 -2
  11. package/lib/cjs/client/FabricClientStatement.cjs +2 -2
  12. package/lib/cjs/client/collections/generation.cjs +2 -2
  13. package/lib/cjs/client/collections/index.cjs +2 -2
  14. package/lib/cjs/client/constants.cjs +2 -2
  15. package/lib/cjs/client/crypto.cjs +2 -2
  16. package/lib/cjs/client/erc20/FabricERC20ClientRepository.cjs +2 -2
  17. package/lib/cjs/client/erc20/index.cjs +2 -2
  18. package/lib/cjs/client/fabric-fs.cjs +2 -2
  19. package/lib/cjs/client/fabric-hsm.cjs +2 -2
  20. package/lib/cjs/client/ids/id-extraction.cjs +2 -2
  21. package/lib/cjs/client/ids/index.cjs +2 -2
  22. package/lib/cjs/client/index.cjs +2 -2
  23. package/lib/cjs/client/indexes/generation.cjs +9 -4
  24. package/lib/cjs/client/indexes/index.cjs +2 -2
  25. package/lib/cjs/client/logging.cjs +2 -2
  26. package/lib/cjs/client/services/FabricEnrollmentService.cjs +2 -2
  27. package/lib/cjs/client/services/FabricIdentityService.cjs +2 -2
  28. package/lib/cjs/client/services/RegistrationRequestBuilder.cjs +2 -2
  29. package/lib/cjs/client/services/constants.cjs +2 -2
  30. package/lib/cjs/client/services/index.cjs +2 -2
  31. package/lib/cjs/client/types.cjs +2 -2
  32. package/lib/cjs/client/utils.cjs +2 -2
  33. package/lib/cjs/contract/Address.cjs +2 -2
  34. package/lib/cjs/contract/AddressContract.cjs +2 -2
  35. package/lib/cjs/contract/AuditContract.cjs +2 -2
  36. package/lib/cjs/contract/BatchContract.cjs +2 -2
  37. package/lib/cjs/contract/MarketContract.cjs +2 -2
  38. package/lib/cjs/contract/OtherAuditContract.cjs +2 -2
  39. package/lib/cjs/contract/OtherBatchContract.cjs +2 -2
  40. package/lib/cjs/contract/OtherLeafletContract.cjs +72 -0
  41. package/lib/cjs/contract/OtherLeafletFileContract.cjs +76 -0
  42. package/lib/cjs/contract/OtherMarketContract.cjs +2 -2
  43. package/lib/cjs/contract/OtherProductContract.cjs +2 -2
  44. package/lib/cjs/contract/OtherProductImageContract.cjs +2 -2
  45. package/lib/cjs/contract/OtherProductSharedContract.cjs +2 -2
  46. package/lib/cjs/contract/OtherProductStrengthContract.cjs +2 -2
  47. package/lib/cjs/contract/Product.cjs +2 -2
  48. package/lib/cjs/contract/ProductContract.cjs +2 -2
  49. package/lib/cjs/contract/ProductStrengthContract.cjs +2 -2
  50. package/lib/cjs/contract/SegregatedPrivateDocumentContract.cjs +2 -2
  51. package/lib/cjs/contract/SegregatedSharedDocumentContract.cjs +2 -2
  52. package/lib/cjs/contract/User.cjs +2 -2
  53. package/lib/cjs/contract/UserContract.cjs +2 -2
  54. package/lib/cjs/contract/index.cjs +19 -20
  55. package/lib/cjs/contract/logging-context.cjs +2 -2
  56. package/lib/cjs/contract/models/Audit.cjs +2 -2
  57. package/lib/cjs/contract/models/BaseIdentifiedModel.cjs +2 -2
  58. package/lib/cjs/contract/models/BaseModel.cjs +2 -2
  59. package/lib/cjs/contract/models/Batch.cjs +2 -2
  60. package/lib/cjs/contract/models/GtinOwner.cjs +2 -2
  61. package/lib/cjs/contract/models/History.cjs +2 -2
  62. package/lib/cjs/contract/models/Leaflet.cjs +2 -2
  63. package/lib/cjs/contract/models/LeafletFile.cjs +2 -2
  64. package/lib/cjs/contract/models/Market.cjs +2 -2
  65. package/lib/cjs/contract/models/OtherAudit.cjs +3 -3
  66. package/lib/cjs/contract/models/OtherBatchShared.cjs +137 -28
  67. package/lib/cjs/contract/models/OtherLeaflet.cjs +3 -3
  68. package/lib/cjs/contract/models/OtherLeafletFile.cjs +3 -3
  69. package/lib/cjs/contract/models/OtherMarket.cjs +3 -3
  70. package/lib/cjs/contract/models/OtherProduct.cjs +4 -4
  71. package/lib/cjs/contract/models/OtherProductImage.cjs +3 -3
  72. package/lib/cjs/contract/models/OtherProductShared.cjs +3 -3
  73. package/lib/cjs/contract/models/OtherProductStrength.cjs +3 -5
  74. package/lib/cjs/contract/models/Product.cjs +2 -2
  75. package/lib/cjs/contract/models/ProductStrength.cjs +2 -2
  76. package/lib/cjs/contract/models/SegregatedDocument.cjs +8 -6
  77. package/lib/cjs/contract/models/constants.cjs +2 -2
  78. package/lib/cjs/contract/models/decorators-private.cjs +2 -2
  79. package/lib/cjs/contract/models/decorators.cjs +2 -2
  80. package/lib/cjs/contract/models/gtin.cjs +2 -2
  81. package/lib/cjs/contract/models/history-dec.cjs +2 -2
  82. package/lib/cjs/contract/trackedModels/History.cjs +81 -0
  83. package/lib/cjs/contract/trackedModels/OtherAudit.cjs +124 -0
  84. package/lib/cjs/contract/trackedModels/OtherLeaflet.cjs +121 -0
  85. package/lib/cjs/contract/trackedModels/OtherLeafletFile.cjs +71 -0
  86. package/lib/cjs/contract/trackedModels/OtherMarket.cjs +90 -0
  87. package/lib/cjs/contract/trackedModels/OtherProduct.cjs +83 -0
  88. package/lib/cjs/contract/trackedModels/OtherProductImage.cjs +65 -0
  89. package/lib/cjs/contract/trackedModels/OtherProductShared.cjs +105 -0
  90. package/lib/cjs/contract/trackedModels/OtherProductStrength.cjs +91 -0
  91. package/lib/cjs/contracts/ContractAdapter.cjs +2 -2
  92. package/lib/cjs/contracts/ContractContext.cjs +2 -2
  93. package/lib/cjs/contracts/FabricContractDispatch.cjs +2 -2
  94. package/lib/cjs/contracts/FabricContractPaginator.cjs +2 -2
  95. package/lib/cjs/contracts/FabricContractRepository.cjs +2 -2
  96. package/lib/cjs/contracts/FabricContractRepositoryObservableHandler.cjs +2 -2
  97. package/lib/cjs/contracts/FabricContractSequence.cjs +2 -2
  98. package/lib/cjs/contracts/FabricContractStatement.cjs +2 -2
  99. package/lib/cjs/contracts/MigrationContract.cjs +2 -2
  100. package/lib/cjs/contracts/PrivateSequence.cjs +2 -2
  101. package/lib/cjs/contracts/auth/decorators.cjs +2 -2
  102. package/lib/cjs/contracts/auth/index.cjs +2 -2
  103. package/lib/cjs/contracts/bootstrap.cjs +2 -2
  104. package/lib/cjs/contracts/crud/crud-contract.cjs +2 -2
  105. package/lib/cjs/contracts/crud/index.cjs +2 -2
  106. package/lib/cjs/contracts/crud/serialized-crud-contract.cjs +2 -2
  107. package/lib/cjs/contracts/erc20/erc20contract.cjs +2 -2
  108. package/lib/cjs/contracts/erc20/index.cjs +2 -2
  109. package/lib/cjs/contracts/erc20/models.cjs +2 -2
  110. package/lib/cjs/contracts/fabric-overrides.cjs +2 -2
  111. package/lib/cjs/contracts/index.cjs +2 -2
  112. package/lib/cjs/contracts/logging.cjs +2 -2
  113. package/lib/cjs/contracts/overrides.cjs +2 -2
  114. package/lib/cjs/contracts/types.cjs +2 -2
  115. package/lib/cjs/contracts/uuid.cjs +2 -2
  116. package/lib/cjs/index.cjs +2 -2
  117. package/lib/cjs/shared/ClientSerializer.cjs +2 -2
  118. package/lib/cjs/shared/DeterministicSerializer.cjs +2 -2
  119. package/lib/cjs/shared/SimpleDeterministicSerializer.cjs +2 -2
  120. package/lib/cjs/shared/constants.cjs +2 -2
  121. package/lib/cjs/shared/decorators.cjs +2 -2
  122. package/lib/cjs/shared/erc20/erc20-constants.cjs +2 -2
  123. package/lib/cjs/shared/erc20/index.cjs +2 -2
  124. package/lib/cjs/shared/errors.cjs +2 -2
  125. package/lib/cjs/shared/events.cjs +2 -2
  126. package/lib/cjs/shared/fabric-types.cjs +2 -2
  127. package/lib/cjs/shared/index.cjs +2 -2
  128. package/lib/cjs/shared/interfaces/Checkable.cjs +2 -2
  129. package/lib/cjs/shared/interfaces/index.cjs +2 -2
  130. package/lib/cjs/shared/math.cjs +2 -2
  131. package/lib/cjs/shared/model/FabricBaseModel.cjs +2 -2
  132. package/lib/cjs/shared/model/FabricIdentifiedBaseModel.cjs +2 -2
  133. package/lib/cjs/shared/model/Identity.cjs +2 -2
  134. package/lib/cjs/shared/model/IdentityCredentials.cjs +2 -2
  135. package/lib/cjs/shared/model/index.cjs +2 -2
  136. package/lib/cjs/shared/overrides/Model.cjs +2 -2
  137. package/lib/cjs/shared/overrides/index.cjs +2 -2
  138. package/lib/cjs/shared/overrides/overrides.cjs +2 -2
  139. package/lib/cjs/shared/types.cjs +2 -2
  140. package/lib/cjs/version.cjs +18 -4
  141. package/lib/esm/bin/cli.js +1 -1
  142. package/lib/esm/cli-module.js +214 -5
  143. package/lib/esm/cli-utils.js +1 -1
  144. package/lib/esm/client/FabricClientAdapter.js +1 -1
  145. package/lib/esm/client/FabricClientDispatch.js +2 -2
  146. package/lib/esm/client/FabricClientPaginator.js +1 -1
  147. package/lib/esm/client/FabricClientRepository.js +1 -1
  148. package/lib/esm/client/FabricClientStatement.js +1 -1
  149. package/lib/esm/client/collections/generation.js +1 -1
  150. package/lib/esm/client/collections/index.js +1 -1
  151. package/lib/esm/client/constants.js +1 -1
  152. package/lib/esm/client/crypto.js +1 -1
  153. package/lib/esm/client/erc20/FabricERC20ClientRepository.js +1 -1
  154. package/lib/esm/client/erc20/index.js +1 -1
  155. package/lib/esm/client/fabric-fs.js +1 -1
  156. package/lib/esm/client/fabric-hsm.js +1 -1
  157. package/lib/esm/client/ids/id-extraction.js +1 -1
  158. package/lib/esm/client/ids/index.js +1 -1
  159. package/lib/esm/client/index.js +1 -1
  160. package/lib/esm/client/indexes/generation.js +8 -3
  161. package/lib/esm/client/indexes/index.js +1 -1
  162. package/lib/esm/client/logging.js +1 -1
  163. package/lib/esm/client/services/FabricEnrollmentService.js +1 -1
  164. package/lib/esm/client/services/FabricIdentityService.js +1 -1
  165. package/lib/esm/client/services/RegistrationRequestBuilder.js +1 -1
  166. package/lib/esm/client/services/constants.js +1 -1
  167. package/lib/esm/client/services/index.js +1 -1
  168. package/lib/esm/client/types.js +1 -1
  169. package/lib/esm/client/utils.js +1 -1
  170. package/lib/esm/contract/Address.js +1 -1
  171. package/lib/esm/contract/AddressContract.js +1 -1
  172. package/lib/esm/contract/AuditContract.js +1 -1
  173. package/lib/esm/contract/BatchContract.js +1 -1
  174. package/lib/esm/contract/MarketContract.js +1 -1
  175. package/lib/esm/contract/OtherAuditContract.js +1 -1
  176. package/lib/esm/contract/OtherBatchContract.js +1 -1
  177. package/lib/esm/contract/OtherLeafletContract.js +63 -0
  178. package/lib/esm/contract/OtherLeafletFileContract.js +67 -0
  179. package/lib/esm/contract/OtherMarketContract.js +1 -1
  180. package/lib/esm/contract/OtherProductContract.js +1 -1
  181. package/lib/esm/contract/OtherProductImageContract.js +1 -1
  182. package/lib/esm/contract/OtherProductSharedContract.js +1 -1
  183. package/lib/esm/contract/OtherProductStrengthContract.js +1 -1
  184. package/lib/esm/contract/Product.js +1 -1
  185. package/lib/esm/contract/ProductContract.js +1 -1
  186. package/lib/esm/contract/ProductStrengthContract.js +1 -1
  187. package/lib/esm/contract/SegregatedPrivateDocumentContract.js +1 -1
  188. package/lib/esm/contract/SegregatedSharedDocumentContract.js +1 -1
  189. package/lib/esm/contract/User.js +1 -1
  190. package/lib/esm/contract/UserContract.js +1 -1
  191. package/lib/esm/contract/index.js +18 -19
  192. package/lib/esm/contract/logging-context.js +1 -1
  193. package/lib/esm/contract/models/Audit.js +1 -1
  194. package/lib/esm/contract/models/BaseIdentifiedModel.js +1 -1
  195. package/lib/esm/contract/models/BaseModel.js +1 -1
  196. package/lib/esm/contract/models/Batch.js +1 -1
  197. package/lib/esm/contract/models/GtinOwner.js +1 -1
  198. package/lib/esm/contract/models/History.js +1 -1
  199. package/lib/esm/contract/models/Leaflet.js +1 -1
  200. package/lib/esm/contract/models/LeafletFile.js +1 -1
  201. package/lib/esm/contract/models/Market.js +1 -1
  202. package/lib/esm/contract/models/OtherAudit.js +2 -2
  203. package/lib/esm/contract/models/OtherBatchShared.js +139 -31
  204. package/lib/esm/contract/models/OtherLeaflet.js +2 -2
  205. package/lib/esm/contract/models/OtherLeafletFile.js +2 -2
  206. package/lib/esm/contract/models/OtherMarket.js +2 -2
  207. package/lib/esm/contract/models/OtherProduct.js +4 -4
  208. package/lib/esm/contract/models/OtherProductImage.js +2 -2
  209. package/lib/esm/contract/models/OtherProductShared.js +2 -2
  210. package/lib/esm/contract/models/OtherProductStrength.js +2 -4
  211. package/lib/esm/contract/models/Product.js +1 -1
  212. package/lib/esm/contract/models/ProductStrength.js +1 -1
  213. package/lib/esm/contract/models/SegregatedDocument.js +8 -6
  214. package/lib/esm/contract/models/constants.js +1 -1
  215. package/lib/esm/contract/models/decorators-private.js +1 -1
  216. package/lib/esm/contract/models/decorators.js +1 -1
  217. package/lib/esm/contract/models/gtin.js +1 -1
  218. package/lib/esm/contract/models/history-dec.js +1 -1
  219. package/lib/esm/contract/trackedModels/History.js +72 -0
  220. package/lib/esm/contract/trackedModels/OtherAudit.js +115 -0
  221. package/lib/esm/contract/trackedModels/OtherLeaflet.js +112 -0
  222. package/lib/esm/contract/trackedModels/OtherLeafletFile.js +62 -0
  223. package/lib/esm/contract/trackedModels/OtherMarket.js +81 -0
  224. package/lib/esm/contract/trackedModels/OtherProduct.js +74 -0
  225. package/lib/esm/contract/trackedModels/OtherProductImage.js +56 -0
  226. package/lib/esm/contract/trackedModels/OtherProductShared.js +96 -0
  227. package/lib/esm/contract/trackedModels/OtherProductStrength.js +82 -0
  228. package/lib/esm/contracts/ContractAdapter.js +1 -1
  229. package/lib/esm/contracts/ContractContext.js +1 -1
  230. package/lib/esm/contracts/FabricContractDispatch.js +1 -1
  231. package/lib/esm/contracts/FabricContractPaginator.js +1 -1
  232. package/lib/esm/contracts/FabricContractRepository.js +1 -1
  233. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js +1 -1
  234. package/lib/esm/contracts/FabricContractSequence.js +1 -1
  235. package/lib/esm/contracts/FabricContractStatement.js +1 -1
  236. package/lib/esm/contracts/MigrationContract.js +1 -1
  237. package/lib/esm/contracts/PrivateSequence.js +1 -1
  238. package/lib/esm/contracts/auth/decorators.js +1 -1
  239. package/lib/esm/contracts/auth/index.js +1 -1
  240. package/lib/esm/contracts/bootstrap.js +1 -1
  241. package/lib/esm/contracts/crud/crud-contract.js +1 -1
  242. package/lib/esm/contracts/crud/index.js +1 -1
  243. package/lib/esm/contracts/crud/serialized-crud-contract.js +1 -1
  244. package/lib/esm/contracts/erc20/erc20contract.js +1 -1
  245. package/lib/esm/contracts/erc20/index.js +1 -1
  246. package/lib/esm/contracts/erc20/models.js +1 -1
  247. package/lib/esm/contracts/fabric-overrides.js +3 -3
  248. package/lib/esm/contracts/index.js +1 -1
  249. package/lib/esm/contracts/logging.js +1 -1
  250. package/lib/esm/contracts/overrides.js +1 -1
  251. package/lib/esm/contracts/types.js +1 -1
  252. package/lib/esm/contracts/uuid.js +1 -1
  253. package/lib/esm/index.js +1 -1
  254. package/lib/esm/shared/ClientSerializer.js +1 -1
  255. package/lib/esm/shared/DeterministicSerializer.js +1 -1
  256. package/lib/esm/shared/SimpleDeterministicSerializer.js +1 -1
  257. package/lib/esm/shared/constants.js +1 -1
  258. package/lib/esm/shared/decorators.js +1 -1
  259. package/lib/esm/shared/erc20/erc20-constants.js +1 -1
  260. package/lib/esm/shared/erc20/index.js +1 -1
  261. package/lib/esm/shared/errors.js +1 -1
  262. package/lib/esm/shared/events.js +1 -1
  263. package/lib/esm/shared/fabric-types.js +1 -1
  264. package/lib/esm/shared/index.js +1 -1
  265. package/lib/esm/shared/interfaces/Checkable.js +1 -1
  266. package/lib/esm/shared/interfaces/index.js +1 -1
  267. package/lib/esm/shared/math.js +1 -1
  268. package/lib/esm/shared/model/FabricBaseModel.js +1 -1
  269. package/lib/esm/shared/model/FabricIdentifiedBaseModel.js +1 -1
  270. package/lib/esm/shared/model/Identity.js +1 -1
  271. package/lib/esm/shared/model/IdentityCredentials.js +1 -1
  272. package/lib/esm/shared/model/index.js +1 -1
  273. package/lib/esm/shared/overrides/Model.js +1 -1
  274. package/lib/esm/shared/overrides/index.js +1 -1
  275. package/lib/esm/shared/overrides/overrides.js +1 -1
  276. package/lib/esm/shared/types.js +1 -1
  277. package/lib/esm/version.js +16 -2
  278. package/lib/types/contract/OtherLeafletContract.d.cts +18 -0
  279. package/lib/types/contract/OtherLeafletContract.d.mts +18 -0
  280. package/lib/types/contract/OtherLeafletFileContract.d.cts +17 -0
  281. package/lib/types/contract/OtherLeafletFileContract.d.mts +17 -0
  282. package/lib/types/contract/models/OtherBatchShared.d.cts +43 -6
  283. package/lib/types/contract/models/OtherBatchShared.d.mts +43 -6
  284. package/lib/types/contract/trackedModels/History.d.cts +9 -0
  285. package/lib/types/contract/trackedModels/History.d.mts +9 -0
  286. package/lib/types/contract/trackedModels/OtherAudit.d.cts +15 -0
  287. package/lib/types/contract/trackedModels/OtherAudit.d.mts +15 -0
  288. package/lib/types/contract/trackedModels/OtherLeaflet.d.cts +16 -0
  289. package/lib/types/contract/trackedModels/OtherLeaflet.d.mts +16 -0
  290. package/lib/types/contract/trackedModels/OtherLeafletFile.d.cts +10 -0
  291. package/lib/types/contract/trackedModels/OtherLeafletFile.d.mts +10 -0
  292. package/lib/types/contract/trackedModels/OtherMarket.d.cts +13 -0
  293. package/lib/types/contract/trackedModels/OtherMarket.d.mts +13 -0
  294. package/lib/types/contract/trackedModels/OtherProduct.d.cts +12 -0
  295. package/lib/types/contract/trackedModels/OtherProduct.d.mts +12 -0
  296. package/lib/types/contract/trackedModels/OtherProductImage.d.cts +9 -0
  297. package/lib/types/contract/trackedModels/OtherProductImage.d.mts +9 -0
  298. package/lib/types/contract/trackedModels/OtherProductShared.d.cts +18 -0
  299. package/lib/types/contract/trackedModels/OtherProductShared.d.mts +18 -0
  300. package/lib/types/contract/trackedModels/OtherProductStrength.d.cts +12 -0
  301. package/lib/types/contract/trackedModels/OtherProductStrength.d.mts +12 -0
  302. package/lib/types/contracts/FabricContractStatement.d.cts +2 -2
  303. package/lib/types/contracts/FabricContractStatement.d.mts +2 -2
  304. package/lib/types/version.d.cts +15 -1
  305. package/lib/types/version.d.mts +15 -1
  306. package/package.json +19 -6
  307. package/dist/for-fabric.cjs.map +0 -1
  308. package/dist/for-fabric.js.map +0 -1
  309. package/lib/cjs/bin/cli.cjs.map +0 -1
  310. package/lib/cjs/cli-module.cjs.map +0 -1
  311. package/lib/cjs/cli-utils.cjs.map +0 -1
  312. package/lib/cjs/client/FabricClientAdapter.cjs.map +0 -1
  313. package/lib/cjs/client/FabricClientDispatch.cjs.map +0 -1
  314. package/lib/cjs/client/FabricClientPaginator.cjs.map +0 -1
  315. package/lib/cjs/client/FabricClientRepository.cjs.map +0 -1
  316. package/lib/cjs/client/FabricClientStatement.cjs.map +0 -1
  317. package/lib/cjs/client/collections/generation.cjs.map +0 -1
  318. package/lib/cjs/client/collections/index.cjs.map +0 -1
  319. package/lib/cjs/client/constants.cjs.map +0 -1
  320. package/lib/cjs/client/crypto.cjs.map +0 -1
  321. package/lib/cjs/client/erc20/FabricERC20ClientRepository.cjs.map +0 -1
  322. package/lib/cjs/client/erc20/index.cjs.map +0 -1
  323. package/lib/cjs/client/fabric-fs.cjs.map +0 -1
  324. package/lib/cjs/client/fabric-hsm.cjs.map +0 -1
  325. package/lib/cjs/client/ids/id-extraction.cjs.map +0 -1
  326. package/lib/cjs/client/ids/index.cjs.map +0 -1
  327. package/lib/cjs/client/index.cjs.map +0 -1
  328. package/lib/cjs/client/indexes/generation.cjs.map +0 -1
  329. package/lib/cjs/client/indexes/index.cjs.map +0 -1
  330. package/lib/cjs/client/logging.cjs.map +0 -1
  331. package/lib/cjs/client/services/FabricEnrollmentService.cjs.map +0 -1
  332. package/lib/cjs/client/services/FabricIdentityService.cjs.map +0 -1
  333. package/lib/cjs/client/services/RegistrationRequestBuilder.cjs.map +0 -1
  334. package/lib/cjs/client/services/constants.cjs.map +0 -1
  335. package/lib/cjs/client/services/index.cjs.map +0 -1
  336. package/lib/cjs/client/types.cjs.map +0 -1
  337. package/lib/cjs/client/utils.cjs.map +0 -1
  338. package/lib/cjs/contract/Address.cjs.map +0 -1
  339. package/lib/cjs/contract/AddressContract.cjs.map +0 -1
  340. package/lib/cjs/contract/AuditContract.cjs.map +0 -1
  341. package/lib/cjs/contract/BatchContract.cjs.map +0 -1
  342. package/lib/cjs/contract/MarketContract.cjs.map +0 -1
  343. package/lib/cjs/contract/OtherAuditContract.cjs.map +0 -1
  344. package/lib/cjs/contract/OtherBatchContract.cjs.map +0 -1
  345. package/lib/cjs/contract/OtherMarketContract.cjs.map +0 -1
  346. package/lib/cjs/contract/OtherProductContract.cjs.map +0 -1
  347. package/lib/cjs/contract/OtherProductImageContract.cjs.map +0 -1
  348. package/lib/cjs/contract/OtherProductSharedContract.cjs.map +0 -1
  349. package/lib/cjs/contract/OtherProductStrengthContract.cjs.map +0 -1
  350. package/lib/cjs/contract/Product.cjs.map +0 -1
  351. package/lib/cjs/contract/ProductContract.cjs.map +0 -1
  352. package/lib/cjs/contract/ProductStrengthContract.cjs.map +0 -1
  353. package/lib/cjs/contract/SegregatedPrivateDocumentContract.cjs.map +0 -1
  354. package/lib/cjs/contract/SegregatedSharedDocumentContract.cjs.map +0 -1
  355. package/lib/cjs/contract/User.cjs.map +0 -1
  356. package/lib/cjs/contract/UserContract.cjs.map +0 -1
  357. package/lib/cjs/contract/index.cjs.map +0 -1
  358. package/lib/cjs/contract/logging-context.cjs.map +0 -1
  359. package/lib/cjs/contract/models/Audit.cjs.map +0 -1
  360. package/lib/cjs/contract/models/BaseIdentifiedModel.cjs.map +0 -1
  361. package/lib/cjs/contract/models/BaseModel.cjs.map +0 -1
  362. package/lib/cjs/contract/models/Batch.cjs.map +0 -1
  363. package/lib/cjs/contract/models/GtinOwner.cjs.map +0 -1
  364. package/lib/cjs/contract/models/History.cjs.map +0 -1
  365. package/lib/cjs/contract/models/Leaflet.cjs.map +0 -1
  366. package/lib/cjs/contract/models/LeafletFile.cjs.map +0 -1
  367. package/lib/cjs/contract/models/Market.cjs.map +0 -1
  368. package/lib/cjs/contract/models/OtherAudit.cjs.map +0 -1
  369. package/lib/cjs/contract/models/OtherBatchShared.cjs.map +0 -1
  370. package/lib/cjs/contract/models/OtherLeaflet.cjs.map +0 -1
  371. package/lib/cjs/contract/models/OtherLeafletFile.cjs.map +0 -1
  372. package/lib/cjs/contract/models/OtherMarket.cjs.map +0 -1
  373. package/lib/cjs/contract/models/OtherProduct.cjs.map +0 -1
  374. package/lib/cjs/contract/models/OtherProductImage.cjs.map +0 -1
  375. package/lib/cjs/contract/models/OtherProductShared.cjs.map +0 -1
  376. package/lib/cjs/contract/models/OtherProductStrength.cjs.map +0 -1
  377. package/lib/cjs/contract/models/Product.cjs.map +0 -1
  378. package/lib/cjs/contract/models/ProductStrength.cjs.map +0 -1
  379. package/lib/cjs/contract/models/SegregatedDocument.cjs.map +0 -1
  380. package/lib/cjs/contract/models/constants.cjs.map +0 -1
  381. package/lib/cjs/contract/models/decorators-private.cjs.map +0 -1
  382. package/lib/cjs/contract/models/decorators.cjs.map +0 -1
  383. package/lib/cjs/contract/models/gtin.cjs.map +0 -1
  384. package/lib/cjs/contract/models/history-dec.cjs.map +0 -1
  385. package/lib/cjs/contracts/ContractAdapter.cjs.map +0 -1
  386. package/lib/cjs/contracts/ContractContext.cjs.map +0 -1
  387. package/lib/cjs/contracts/FabricContractDispatch.cjs.map +0 -1
  388. package/lib/cjs/contracts/FabricContractPaginator.cjs.map +0 -1
  389. package/lib/cjs/contracts/FabricContractRepository.cjs.map +0 -1
  390. package/lib/cjs/contracts/FabricContractRepositoryObservableHandler.cjs.map +0 -1
  391. package/lib/cjs/contracts/FabricContractSequence.cjs.map +0 -1
  392. package/lib/cjs/contracts/FabricContractStatement.cjs.map +0 -1
  393. package/lib/cjs/contracts/MigrationContract.cjs.map +0 -1
  394. package/lib/cjs/contracts/PrivateSequence.cjs.map +0 -1
  395. package/lib/cjs/contracts/auth/decorators.cjs.map +0 -1
  396. package/lib/cjs/contracts/auth/index.cjs.map +0 -1
  397. package/lib/cjs/contracts/bootstrap.cjs.map +0 -1
  398. package/lib/cjs/contracts/crud/crud-contract.cjs.map +0 -1
  399. package/lib/cjs/contracts/crud/index.cjs.map +0 -1
  400. package/lib/cjs/contracts/crud/serialized-crud-contract.cjs.map +0 -1
  401. package/lib/cjs/contracts/erc20/erc20contract.cjs.map +0 -1
  402. package/lib/cjs/contracts/erc20/index.cjs.map +0 -1
  403. package/lib/cjs/contracts/erc20/models.cjs.map +0 -1
  404. package/lib/cjs/contracts/fabric-overrides.cjs.map +0 -1
  405. package/lib/cjs/contracts/index.cjs.map +0 -1
  406. package/lib/cjs/contracts/logging.cjs.map +0 -1
  407. package/lib/cjs/contracts/overrides.cjs.map +0 -1
  408. package/lib/cjs/contracts/types.cjs.map +0 -1
  409. package/lib/cjs/contracts/uuid.cjs.map +0 -1
  410. package/lib/cjs/index.cjs.map +0 -1
  411. package/lib/cjs/shared/ClientSerializer.cjs.map +0 -1
  412. package/lib/cjs/shared/DeterministicSerializer.cjs.map +0 -1
  413. package/lib/cjs/shared/SimpleDeterministicSerializer.cjs.map +0 -1
  414. package/lib/cjs/shared/constants.cjs.map +0 -1
  415. package/lib/cjs/shared/decorators.cjs.map +0 -1
  416. package/lib/cjs/shared/erc20/erc20-constants.cjs.map +0 -1
  417. package/lib/cjs/shared/erc20/index.cjs.map +0 -1
  418. package/lib/cjs/shared/errors.cjs.map +0 -1
  419. package/lib/cjs/shared/events.cjs.map +0 -1
  420. package/lib/cjs/shared/fabric-types.cjs.map +0 -1
  421. package/lib/cjs/shared/index.cjs.map +0 -1
  422. package/lib/cjs/shared/interfaces/Checkable.cjs.map +0 -1
  423. package/lib/cjs/shared/interfaces/index.cjs.map +0 -1
  424. package/lib/cjs/shared/math.cjs.map +0 -1
  425. package/lib/cjs/shared/model/FabricBaseModel.cjs.map +0 -1
  426. package/lib/cjs/shared/model/FabricIdentifiedBaseModel.cjs.map +0 -1
  427. package/lib/cjs/shared/model/Identity.cjs.map +0 -1
  428. package/lib/cjs/shared/model/IdentityCredentials.cjs.map +0 -1
  429. package/lib/cjs/shared/model/index.cjs.map +0 -1
  430. package/lib/cjs/shared/overrides/Model.cjs.map +0 -1
  431. package/lib/cjs/shared/overrides/index.cjs.map +0 -1
  432. package/lib/cjs/shared/overrides/overrides.cjs.map +0 -1
  433. package/lib/cjs/shared/types.cjs.map +0 -1
  434. package/lib/cjs/version.cjs.map +0 -1
  435. package/lib/esm/bin/cli.js.map +0 -1
  436. package/lib/esm/cli-module.js.map +0 -1
  437. package/lib/esm/cli-utils.js.map +0 -1
  438. package/lib/esm/client/FabricClientAdapter.js.map +0 -1
  439. package/lib/esm/client/FabricClientDispatch.js.map +0 -1
  440. package/lib/esm/client/FabricClientPaginator.js.map +0 -1
  441. package/lib/esm/client/FabricClientRepository.js.map +0 -1
  442. package/lib/esm/client/FabricClientStatement.js.map +0 -1
  443. package/lib/esm/client/collections/generation.js.map +0 -1
  444. package/lib/esm/client/collections/index.js.map +0 -1
  445. package/lib/esm/client/constants.js.map +0 -1
  446. package/lib/esm/client/crypto.js.map +0 -1
  447. package/lib/esm/client/erc20/FabricERC20ClientRepository.js.map +0 -1
  448. package/lib/esm/client/erc20/index.js.map +0 -1
  449. package/lib/esm/client/fabric-fs.js.map +0 -1
  450. package/lib/esm/client/fabric-hsm.js.map +0 -1
  451. package/lib/esm/client/ids/id-extraction.js.map +0 -1
  452. package/lib/esm/client/ids/index.js.map +0 -1
  453. package/lib/esm/client/index.js.map +0 -1
  454. package/lib/esm/client/indexes/generation.js.map +0 -1
  455. package/lib/esm/client/indexes/index.js.map +0 -1
  456. package/lib/esm/client/logging.js.map +0 -1
  457. package/lib/esm/client/services/FabricEnrollmentService.js.map +0 -1
  458. package/lib/esm/client/services/FabricIdentityService.js.map +0 -1
  459. package/lib/esm/client/services/RegistrationRequestBuilder.js.map +0 -1
  460. package/lib/esm/client/services/constants.js.map +0 -1
  461. package/lib/esm/client/services/index.js.map +0 -1
  462. package/lib/esm/client/types.js.map +0 -1
  463. package/lib/esm/client/utils.js.map +0 -1
  464. package/lib/esm/contract/Address.js.map +0 -1
  465. package/lib/esm/contract/AddressContract.js.map +0 -1
  466. package/lib/esm/contract/AuditContract.js.map +0 -1
  467. package/lib/esm/contract/BatchContract.js.map +0 -1
  468. package/lib/esm/contract/MarketContract.js.map +0 -1
  469. package/lib/esm/contract/OtherAuditContract.js.map +0 -1
  470. package/lib/esm/contract/OtherBatchContract.js.map +0 -1
  471. package/lib/esm/contract/OtherMarketContract.js.map +0 -1
  472. package/lib/esm/contract/OtherProductContract.js.map +0 -1
  473. package/lib/esm/contract/OtherProductImageContract.js.map +0 -1
  474. package/lib/esm/contract/OtherProductSharedContract.js.map +0 -1
  475. package/lib/esm/contract/OtherProductStrengthContract.js.map +0 -1
  476. package/lib/esm/contract/Product.js.map +0 -1
  477. package/lib/esm/contract/ProductContract.js.map +0 -1
  478. package/lib/esm/contract/ProductStrengthContract.js.map +0 -1
  479. package/lib/esm/contract/SegregatedPrivateDocumentContract.js.map +0 -1
  480. package/lib/esm/contract/SegregatedSharedDocumentContract.js.map +0 -1
  481. package/lib/esm/contract/User.js.map +0 -1
  482. package/lib/esm/contract/UserContract.js.map +0 -1
  483. package/lib/esm/contract/index.js.map +0 -1
  484. package/lib/esm/contract/logging-context.js.map +0 -1
  485. package/lib/esm/contract/models/Audit.js.map +0 -1
  486. package/lib/esm/contract/models/BaseIdentifiedModel.js.map +0 -1
  487. package/lib/esm/contract/models/BaseModel.js.map +0 -1
  488. package/lib/esm/contract/models/Batch.js.map +0 -1
  489. package/lib/esm/contract/models/GtinOwner.js.map +0 -1
  490. package/lib/esm/contract/models/History.js.map +0 -1
  491. package/lib/esm/contract/models/Leaflet.js.map +0 -1
  492. package/lib/esm/contract/models/LeafletFile.js.map +0 -1
  493. package/lib/esm/contract/models/Market.js.map +0 -1
  494. package/lib/esm/contract/models/OtherAudit.js.map +0 -1
  495. package/lib/esm/contract/models/OtherBatchShared.js.map +0 -1
  496. package/lib/esm/contract/models/OtherLeaflet.js.map +0 -1
  497. package/lib/esm/contract/models/OtherLeafletFile.js.map +0 -1
  498. package/lib/esm/contract/models/OtherMarket.js.map +0 -1
  499. package/lib/esm/contract/models/OtherProduct.js.map +0 -1
  500. package/lib/esm/contract/models/OtherProductImage.js.map +0 -1
  501. package/lib/esm/contract/models/OtherProductShared.js.map +0 -1
  502. package/lib/esm/contract/models/OtherProductStrength.js.map +0 -1
  503. package/lib/esm/contract/models/Product.js.map +0 -1
  504. package/lib/esm/contract/models/ProductStrength.js.map +0 -1
  505. package/lib/esm/contract/models/SegregatedDocument.js.map +0 -1
  506. package/lib/esm/contract/models/constants.js.map +0 -1
  507. package/lib/esm/contract/models/decorators-private.js.map +0 -1
  508. package/lib/esm/contract/models/decorators.js.map +0 -1
  509. package/lib/esm/contract/models/gtin.js.map +0 -1
  510. package/lib/esm/contract/models/history-dec.js.map +0 -1
  511. package/lib/esm/contracts/ContractAdapter.js.map +0 -1
  512. package/lib/esm/contracts/ContractContext.js.map +0 -1
  513. package/lib/esm/contracts/FabricContractDispatch.js.map +0 -1
  514. package/lib/esm/contracts/FabricContractPaginator.js.map +0 -1
  515. package/lib/esm/contracts/FabricContractRepository.js.map +0 -1
  516. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js.map +0 -1
  517. package/lib/esm/contracts/FabricContractSequence.js.map +0 -1
  518. package/lib/esm/contracts/FabricContractStatement.js.map +0 -1
  519. package/lib/esm/contracts/MigrationContract.js.map +0 -1
  520. package/lib/esm/contracts/PrivateSequence.js.map +0 -1
  521. package/lib/esm/contracts/auth/decorators.js.map +0 -1
  522. package/lib/esm/contracts/auth/index.js.map +0 -1
  523. package/lib/esm/contracts/bootstrap.js.map +0 -1
  524. package/lib/esm/contracts/crud/crud-contract.js.map +0 -1
  525. package/lib/esm/contracts/crud/index.js.map +0 -1
  526. package/lib/esm/contracts/crud/serialized-crud-contract.js.map +0 -1
  527. package/lib/esm/contracts/erc20/erc20contract.js.map +0 -1
  528. package/lib/esm/contracts/erc20/index.js.map +0 -1
  529. package/lib/esm/contracts/erc20/models.js.map +0 -1
  530. package/lib/esm/contracts/fabric-overrides.js.map +0 -1
  531. package/lib/esm/contracts/index.js.map +0 -1
  532. package/lib/esm/contracts/logging.js.map +0 -1
  533. package/lib/esm/contracts/overrides.js.map +0 -1
  534. package/lib/esm/contracts/types.js.map +0 -1
  535. package/lib/esm/contracts/uuid.js.map +0 -1
  536. package/lib/esm/index.js.map +0 -1
  537. package/lib/esm/shared/ClientSerializer.js.map +0 -1
  538. package/lib/esm/shared/DeterministicSerializer.js.map +0 -1
  539. package/lib/esm/shared/SimpleDeterministicSerializer.js.map +0 -1
  540. package/lib/esm/shared/constants.js.map +0 -1
  541. package/lib/esm/shared/decorators.js.map +0 -1
  542. package/lib/esm/shared/erc20/erc20-constants.js.map +0 -1
  543. package/lib/esm/shared/erc20/index.js.map +0 -1
  544. package/lib/esm/shared/errors.js.map +0 -1
  545. package/lib/esm/shared/events.js.map +0 -1
  546. package/lib/esm/shared/fabric-types.js.map +0 -1
  547. package/lib/esm/shared/index.js.map +0 -1
  548. package/lib/esm/shared/interfaces/Checkable.js.map +0 -1
  549. package/lib/esm/shared/interfaces/index.js.map +0 -1
  550. package/lib/esm/shared/math.js.map +0 -1
  551. package/lib/esm/shared/model/FabricBaseModel.js.map +0 -1
  552. package/lib/esm/shared/model/FabricIdentifiedBaseModel.js.map +0 -1
  553. package/lib/esm/shared/model/Identity.js.map +0 -1
  554. package/lib/esm/shared/model/IdentityCredentials.js.map +0 -1
  555. package/lib/esm/shared/model/index.js.map +0 -1
  556. package/lib/esm/shared/overrides/Model.js.map +0 -1
  557. package/lib/esm/shared/overrides/index.js.map +0 -1
  558. package/lib/esm/shared/overrides/overrides.js.map +0 -1
  559. package/lib/esm/shared/types.js.map +0 -1
  560. package/lib/esm/version.js.map +0 -1
@@ -9,7 +9,10 @@ const logging_1 = require("@decaf-ts/logging");
9
9
  const child_process_1 = require("child_process");
10
10
  const fs_1 = __importDefault(require("fs"));
11
11
  const path_1 = __importDefault(require("path"));
12
+ const node_module_1 = require("node:module");
12
13
  const rollup_1 = require("rollup");
14
+ const plugin_commonjs_1 = __importDefault(require("@rollup/plugin-commonjs"));
15
+ const plugin_node_resolve_1 = require("@rollup/plugin-node-resolve");
13
16
  const plugin_replace_1 = __importDefault(require("@rollup/plugin-replace"));
14
17
  const db_decorators_1 = require("@decaf-ts/db-decorators");
15
18
  const index_js_1 = require("./client/indexes/index.cjs");
@@ -41,6 +44,108 @@ function resolveBundledJsImports() {
41
44
  },
42
45
  };
43
46
  }
47
+ function resolveDecafPackageImports() {
48
+ const contractRequire = (0, node_module_1.createRequire)(path_1.default.join(process.cwd(), "package.json"));
49
+ return {
50
+ name: "resolve-decaf-package-imports",
51
+ resolveId(source) {
52
+ if (!source.startsWith("@decaf-ts/")) {
53
+ return null;
54
+ }
55
+ try {
56
+ return contractRequire.resolve(source);
57
+ }
58
+ catch {
59
+ return null;
60
+ }
61
+ },
62
+ };
63
+ }
64
+ const fabricPeerDependencies = new Set([
65
+ "@grpc/grpc-js",
66
+ "@hyperledger/fabric-gateway",
67
+ "@peculiar/webcrypto",
68
+ "fabric-ca-client",
69
+ "fabric-common",
70
+ "fabric-contract-api",
71
+ "fabric-network",
72
+ "fabric-shim",
73
+ "fabric-shim-api",
74
+ ]);
75
+ function isNodeBuiltin(id) {
76
+ const normalized = id.startsWith("node:") ? id.slice(5) : id;
77
+ return node_module_1.builtinModules.includes(normalized);
78
+ }
79
+ function shouldBundleContractModule(id) {
80
+ if (id.startsWith(".") || path_1.default.isAbsolute(id))
81
+ return true;
82
+ if (id.startsWith("@decaf-ts/"))
83
+ return true;
84
+ if (fabricPeerDependencies.has(id))
85
+ return false;
86
+ if (isNodeBuiltin(id))
87
+ return false;
88
+ return true;
89
+ }
90
+ function normalizeSideEffectPath(input) {
91
+ return input.split(path_1.default.sep).join("/");
92
+ }
93
+ function buildSideEffectMatcher(extraPaths) {
94
+ const normalizedExtras = extraPaths.map((extraPath) => {
95
+ const normalized = normalizeSideEffectPath(extraPath.trim());
96
+ return {
97
+ raw: normalized,
98
+ resolved: path_1.default.isAbsolute(extraPath)
99
+ ? normalizeSideEffectPath(path_1.default.resolve(extraPath))
100
+ : normalizeSideEffectPath(path_1.default.resolve(process.cwd(), extraPath)),
101
+ };
102
+ });
103
+ return (id) => {
104
+ const normalized = normalizeSideEffectPath(id);
105
+ const builtIns = [
106
+ "/src/contracts/bootstrap",
107
+ "/src/contracts/overrides",
108
+ "/src/contracts/fabric-overrides",
109
+ "/src/shared/overrides",
110
+ "/node_modules/@decaf-ts/",
111
+ ];
112
+ if (builtIns.some((needle) => normalized.includes(needle))) {
113
+ return true;
114
+ }
115
+ return normalizedExtras.some(({ raw, resolved }) => {
116
+ return (normalized.includes(raw) ||
117
+ normalized.includes(resolved) ||
118
+ normalized.endsWith(`${raw}.js`) ||
119
+ normalized.endsWith(`${raw}.cjs`) ||
120
+ normalized.endsWith(`${raw}/index.js`) ||
121
+ normalized.endsWith(`${raw}/index.cjs`) ||
122
+ normalized.endsWith(`${resolved}.js`) ||
123
+ normalized.endsWith(`${resolved}.cjs`) ||
124
+ normalized.endsWith(`${resolved}/index.js`) ||
125
+ normalized.endsWith(`${resolved}/index.cjs`));
126
+ });
127
+ };
128
+ }
129
+ function removeSrcFromPath(path) {
130
+ return path.replace(/^\.\/src\//, "./");
131
+ }
132
+ function copyFolderContents(sourceDir, targetDir) {
133
+ if (!fs_1.default.existsSync(sourceDir)) {
134
+ throw new Error(`Source directory does not exist: ${sourceDir}`);
135
+ }
136
+ fs_1.default.mkdirSync(targetDir, { recursive: true });
137
+ for (const item of fs_1.default.readdirSync(sourceDir)) {
138
+ const sourcePath = path_1.default.join(sourceDir, item);
139
+ const targetPath = path_1.default.join(targetDir, item);
140
+ const stat = fs_1.default.statSync(sourcePath);
141
+ if (stat.isDirectory()) {
142
+ copyFolderContents(sourcePath, targetPath);
143
+ }
144
+ else {
145
+ fs_1.default.copyFileSync(sourcePath, targetPath);
146
+ }
147
+ }
148
+ }
44
149
  const compileCommand = new commander_1.Command()
45
150
  .name("compile-contract")
46
151
  .description("Creates a global contract")
@@ -56,6 +161,8 @@ const compileCommand = new commander_1.Command()
56
161
  .option("--output <String>", "output folder for contracts", "./contracts")
57
162
  .option("--sourcemaps", "includes sourcemaps in the compiled output", false)
58
163
  .option("--npmrc", "includes .npmrc in the compiled output", false)
164
+ .option("--from-lib", "indicates that the contract to deploy is located in the lib folder and not pre-compiled in the contracts folder", false)
165
+ .option("--side-effect-paths <paths...>", "additional paths or package roots that must be preserved as side-effectful during contract bundling")
59
166
  .action(async (options) => {
60
167
  const pkg = JSON.parse(fs_1.default.readFileSync(path_1.default.join(process.cwd(), "package.json"), "utf-8"));
61
168
  const pkgLock = JSON.parse(fs_1.default.readFileSync(path_1.default.join(process.cwd(), "package-lock.json"), "utf-8"));
@@ -81,7 +188,11 @@ const compileCommand = new commander_1.Command()
81
188
  // eslint-disable-next-line prefer-const
82
189
  sourcemaps,
83
190
  // eslint-disable-next-line prefer-const
84
- npmrc, } = options;
191
+ npmrc,
192
+ // eslint-disable-next-line prefer-const
193
+ sideEffectPaths,
194
+ // eslint-disable-next-line prefer-const
195
+ fromLib, } = options;
85
196
  const log = logger.for("compile-contract");
86
197
  try {
87
198
  if (npmrc) {
@@ -109,7 +220,8 @@ const compileCommand = new commander_1.Command()
109
220
  output = stripContractName ? output : path_1.default.join(output, name);
110
221
  log.info(`Deleting existing output folder (if exists) under ${output}`);
111
222
  (0, child_process_1.execSync)(`rm -rf ${output}`);
112
- if (bundle) {
223
+ if (bundle && !fromLib) {
224
+ const sideEffectMatcher = buildSideEffectMatcher(Array.isArray(sideEffectPaths) ? sideEffectPaths : []);
113
225
  log.info(`bundling contract from ${input}`);
114
226
  const tempBundleDir = fs_1.default.mkdtempSync(path_1.default.join(process.cwd(), ".contract-bundle-"));
115
227
  try {
@@ -144,8 +256,23 @@ const compileCommand = new commander_1.Command()
144
256
  (0, cli_utils_js_1.compileWithTsconfigOverrides)(tsConfigFile, tempCompilerOptions);
145
257
  const bundledContract = await (0, rollup_1.rollup)({
146
258
  input: bundledEntryPoint,
259
+ external: (id) => !shouldBundleContractModule(id),
260
+ treeshake: {
261
+ moduleSideEffects: (id) => sideEffectMatcher(id),
262
+ },
147
263
  plugins: [
264
+ resolveDecafPackageImports(),
148
265
  resolveBundledJsImports(),
266
+ (0, plugin_node_resolve_1.nodeResolve)({
267
+ extensions: [".mjs", ".js", ".json", ".cjs", ".ts"],
268
+ moduleDirectories: ["node_modules"],
269
+ modulePaths: [path_1.default.join(process.cwd(), "node_modules")],
270
+ exportConditions: ["node", "default", "require", "import"],
271
+ preferBuiltins: true,
272
+ }),
273
+ (0, plugin_commonjs_1.default)({
274
+ include: /node_modules/,
275
+ }),
149
276
  (0, plugin_replace_1.default)({
150
277
  preventAssignment: true,
151
278
  delimiters: ["", ""],
@@ -176,7 +303,7 @@ const compileCommand = new commander_1.Command()
176
303
  fs_1.default.rmSync(tempBundleDir, { recursive: true, force: true });
177
304
  }
178
305
  }
179
- else {
306
+ else if (!fromLib) {
180
307
  (0, cli_utils_js_1.compileWithTsconfigOverrides)(tsConfigFile, {
181
308
  outDir: output,
182
309
  module: typescript_1.default.ModuleKind.ESNext,
@@ -185,6 +312,9 @@ const compileCommand = new commander_1.Command()
185
312
  inlineSources: sourcemaps,
186
313
  });
187
314
  }
315
+ else {
316
+ copyFolderContents(path_1.default.join(process.cwd(), "./lib/cjs"), path_1.default.join(process.cwd(), output));
317
+ }
188
318
  const scripts = {
189
319
  start: (0, cli_utils_js_1.getContractStartCommand)(debug, ccaas),
190
320
  "start:dev": "fabric-chaincode-node start --tls.enabled false",
@@ -202,7 +332,7 @@ const compileCommand = new commander_1.Command()
202
332
  delete contractPackage.exports;
203
333
  contractPackage.main = bundle
204
334
  ? `${(0, logging_1.toPascalCase)(name)}.js`
205
- : `${input}/index.js`;
335
+ : `${removeSrcFromPath(input)}/${fromLib ? "index.cjs" : "index.js"}`;
206
336
  fs_1.default.writeFileSync(path_1.default.join(output, "package.json"), JSON.stringify(contractPackage));
207
337
  fs_1.default.writeFileSync(path_1.default.join(output, "package-lock.json"), JSON.stringify(contractPackageLock));
208
338
  if (npmrc && npmrcContent)
@@ -493,6 +623,84 @@ const getCryptoMaterial = new commander_1.Command()
493
623
  cwd: process.cwd(),
494
624
  });
495
625
  });
626
+ const getCopyToPTP = new commander_1.Command()
627
+ .name("prepare-ptp")
628
+ .description("copies contract to the ptp folder")
629
+ .option("--origin-folder <String>", "origin workspace folder", undefined)
630
+ .option("--dest-folder <String>", "folder to the destination workspace", undefined)
631
+ .action(async (options) => {
632
+ if (!(options.originFolder && options.destFolder)) {
633
+ logger
634
+ .for("prepare-ptp")
635
+ .error("Both --origin-folder and --dest-folder options are required to prepare-ptp");
636
+ return;
637
+ }
638
+ function copyFolder(source, target) {
639
+ // Remove existing target folder
640
+ if (fs_1.default.existsSync(target)) {
641
+ fs_1.default.rmSync(target, {
642
+ recursive: true,
643
+ force: true,
644
+ });
645
+ }
646
+ // Ensure parent exists
647
+ fs_1.default.mkdirSync(path_1.default.dirname(target), {
648
+ recursive: true,
649
+ });
650
+ // Copy folder
651
+ fs_1.default.cpSync(source, target, {
652
+ recursive: true,
653
+ force: true,
654
+ });
655
+ console.log(`Copied: ${source}
656
+ -> ${target}`);
657
+ }
658
+ const origin = path_1.default.resolve(options.originFolder);
659
+ const dest = path_1.default.resolve(options.destFolder);
660
+ (0, child_process_1.execSync)(`cd for-fabric && npm run build`, {
661
+ cwd: origin,
662
+ stdio: "inherit",
663
+ });
664
+ (0, child_process_1.execSync)(`cd for-fabric && npm run build:contract:shared`, {
665
+ cwd: origin,
666
+ stdio: "inherit",
667
+ });
668
+ const sourceLib = path_1.default.join(origin, "for-fabric", "lib");
669
+ const targetLib = path_1.default.join(dest, "infra", "for-fabric", "lib");
670
+ copyFolder(sourceLib, targetLib);
671
+ const sourceGlobal = path_1.default.join(origin, "for-fabric", "docker", "infrastructure", "chaincode", "Global");
672
+ const targetContracts = path_1.default.join(dest, "toolkit", "contracts");
673
+ fs_1.default.mkdirSync(targetContracts, {
674
+ recursive: true,
675
+ });
676
+ for (const item of fs_1.default.readdirSync(sourceGlobal)) {
677
+ const sourceItem = path_1.default.join(sourceGlobal, item);
678
+ const targetItem = path_1.default.join(targetContracts, item);
679
+ // Remove existing target item if needed
680
+ if (fs_1.default.existsSync(targetItem)) {
681
+ fs_1.default.rmSync(targetItem, {
682
+ recursive: true,
683
+ force: true,
684
+ });
685
+ }
686
+ fs_1.default.cpSync(sourceItem, targetItem, {
687
+ recursive: true,
688
+ force: true,
689
+ });
690
+ console.log(`Copied: ${sourceItem}
691
+ -> ${targetItem}`);
692
+ }
693
+ (0, child_process_1.execSync)(`cd toolkit && npm run build`, { cwd: dest, stdio: "inherit" });
694
+ (0, child_process_1.execSync)(`cd toolkit && npm run docker:build-contracts`, {
695
+ cwd: dest,
696
+ stdio: "inherit",
697
+ });
698
+ (0, child_process_1.execSync)(`cd infra && npm run build`, { cwd: dest, stdio: "inherit" });
699
+ (0, child_process_1.execSync)(`cd infra && npm run build:jest:image`, {
700
+ cwd: dest,
701
+ stdio: "inherit",
702
+ });
703
+ });
496
704
  const fabricCmd = new commander_1.Command()
497
705
  .name("for-fabric")
498
706
  .command("fabric")
@@ -503,8 +711,9 @@ fabricCmd.addCommand(ensureInfra);
503
711
  fabricCmd.addCommand(deployContract);
504
712
  fabricCmd.addCommand(getCryptoMaterial);
505
713
  fabricCmd.addCommand(extractCollections);
714
+ fabricCmd.addCommand(getCopyToPTP);
506
715
  function fabric() {
507
716
  return fabricCmd;
508
717
  }
509
- //# sourceMappingURL=cli-module.js.map
510
- //# sourceMappingURL=cli-module.js.map
718
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGktbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUQsT0FBTyxFQUFVLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN4QyxPQUFPLFFBQVEsTUFBTSx5QkFBeUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxPQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsb0JBQW9CLEVBQ3BCLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLFlBQVksR0FDYixrQ0FBeUI7QUFDMUIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZELE9BQU8sRUFDTCxlQUFlLEVBQ2YsMEJBQTBCLEVBQzFCLGVBQWUsRUFDZixlQUFlLEVBQ2YsZUFBZSxFQUNmLHVCQUF1QixFQUN2Qiw0QkFBNEIsR0FDN0IsdUJBQW9CO0FBQ3JCLHFDQUE0QjtBQUM1QixPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUIsT0FBTyxFQUNMLGtCQUFrQixJQUFJLGFBQWEsRUFFbkMsZ0JBQWdCLEVBQ2hCLHlC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TUFBTSxTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUU7S0FDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQztLQUNsQixPQUFPLENBQUMsUUFBUSxDQUFDO0tBQ2pCLFdBQVcsQ0FDVixtRUFBbUUsQ0FDcEUsQ0FBQztBQUVKLFNBQVMsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDckMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUNyQyxTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ2xDLFNBQVMsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDckMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3hDLFNBQVMsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUN6QyxTQUFTLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBRW5DLE1BQU0sQ0FBQyxPQUFPLFVBQVUsTUFBTTtJQUM1QixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCJjb21tYW5kZXJcIjtcbmltcG9ydCB7IExvZ2dpbmcsIHRvUGFzY2FsQ2FzZSB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGJ1aWx0aW5Nb2R1bGVzLCBjcmVhdGVSZXF1aXJlIH0gZnJvbSBcIm5vZGU6bW9kdWxlXCI7XG5pbXBvcnQgeyBQbHVnaW4sIHJvbGx1cCB9IGZyb20gXCJyb2xsdXBcIjtcbmltcG9ydCBjb21tb25qcyBmcm9tIFwiQHJvbGx1cC9wbHVnaW4tY29tbW9uanNcIjtcbmltcG9ydCB7IG5vZGVSZXNvbHZlIH0gZnJvbSBcIkByb2xsdXAvcGx1Z2luLW5vZGUtcmVzb2x2ZVwiO1xuaW1wb3J0IHJlcGxhY2UgZnJvbSBcIkByb2xsdXAvcGx1Z2luLXJlcGxhY2VcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IsIFNlcmlhbGl6YXRpb25FcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHtcbiAgZ2VuZXJhdGVNb2RlbERlc2lnbkRvY3MsXG4gIGdlbmVyYXRlTW9kZWxJbmRleGVzLFxuICByZWFkTW9kZWxGaWxlLFxuICByZWFkTW9kZWxGb2xkZXJzLFxuICB3cml0ZURlc2lnbkRvY3MsXG4gIHdyaXRlSW5kZXhlcyxcbn0gZnJvbSBcIi4vY2xpZW50L2luZGV4ZXNcIjtcbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHtcbiAgYXBwcm92ZUNvbnRyYWN0LFxuICBlbnN1cmVJbmZyYXN0cnVjdHVyZUJvb3RlZCxcbiAgaW5zdGFsbENvbnRyYWN0LFxuICBwYWNrYWdlQ29udHJhY3QsXG4gIGNvbW1pdENoYWluY29kZSxcbiAgZ2V0Q29udHJhY3RTdGFydENvbW1hbmQsXG4gIGNvbXBpbGVXaXRoVHNjb25maWdPdmVycmlkZXMsXG59IGZyb20gXCIuL2NsaS11dGlsc1wiO1xuaW1wb3J0IFwiLi9zaGFyZWQvb3ZlcnJpZGVzXCI7XG5pbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcbmltcG9ydCB7XG4gIGV4dHJhY3RDb2xsZWN0aW9ucyBhcyBleENvbGxlY3Rpb25zLFxuICBQcml2YXRlQ29sbGVjdGlvbixcbiAgd3JpdGVDb2xsZWN0aW9ucyxcbiAgd3JpdGVDb2xsZWN0aW9uRGVzaWduRG9jcyxcbn0gZnJvbSBcIi4vY2xpZW50L2NvbGxlY3Rpb25zL2luZGV4XCI7XG5pbXBvcnQgeyBDb3VjaERCRGVzaWduRG9jLCBDcmVhdGVJbmRleFJlcXVlc3QgfSBmcm9tIFwiQGRlY2FmLXRzL2Zvci1jb3VjaGRiXCI7XG5cbmNvbnN0IGxvZ2dlciA9IExvZ2dpbmcuZm9yKFwiZmFicmljXCIpO1xuXG5mdW5jdGlvbiByZXNvbHZlQnVuZGxlZEpzSW1wb3J0cygpOiBQbHVnaW4ge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IFwicmVzb2x2ZS1idW5kbGVkLWpzLWltcG9ydHNcIixcbiAgICByZXNvbHZlSWQoc291cmNlLCBpbXBvcnRlcikge1xuICAgICAgaWYgKCFpbXBvcnRlciB8fCAhc291cmNlLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXNvbHZlZFBhdGggPSBwYXRoLnJlc29sdmUocGF0aC5kaXJuYW1lKGltcG9ydGVyKSwgc291cmNlKTtcbiAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBbXG4gICAgICAgIHJlc29sdmVkUGF0aCxcbiAgICAgICAgYCR7cmVzb2x2ZWRQYXRofS5qc2AsXG4gICAgICAgIHBhdGguam9pbihyZXNvbHZlZFBhdGgsIFwiaW5kZXguanNcIiksXG4gICAgICBdO1xuXG4gICAgICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzKSB7XG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKGNhbmRpZGF0ZSkgJiYgZnMuc3RhdFN5bmMoY2FuZGlkYXRlKS5pc0ZpbGUoKSkge1xuICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZURlY2FmUGFja2FnZUltcG9ydHMoKTogUGx1Z2luIHtcbiAgY29uc3QgY29udHJhY3RSZXF1aXJlID0gY3JlYXRlUmVxdWlyZShcbiAgICBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJwYWNrYWdlLmpzb25cIilcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IFwicmVzb2x2ZS1kZWNhZi1wYWNrYWdlLWltcG9ydHNcIixcbiAgICByZXNvbHZlSWQoc291cmNlKSB7XG4gICAgICBpZiAoIXNvdXJjZS5zdGFydHNXaXRoKFwiQGRlY2FmLXRzL1wiKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGNvbnRyYWN0UmVxdWlyZS5yZXNvbHZlKHNvdXJjZSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cblxuY29uc3QgZmFicmljUGVlckRlcGVuZGVuY2llcyA9IG5ldyBTZXQoW1xuICBcIkBncnBjL2dycGMtanNcIixcbiAgXCJAaHlwZXJsZWRnZXIvZmFicmljLWdhdGV3YXlcIixcbiAgXCJAcGVjdWxpYXIvd2ViY3J5cHRvXCIsXG4gIFwiZmFicmljLWNhLWNsaWVudFwiLFxuICBcImZhYnJpYy1jb21tb25cIixcbiAgXCJmYWJyaWMtY29udHJhY3QtYXBpXCIsXG4gIFwiZmFicmljLW5ldHdvcmtcIixcbiAgXCJmYWJyaWMtc2hpbVwiLFxuICBcImZhYnJpYy1zaGltLWFwaVwiLFxuXSk7XG5cbmZ1bmN0aW9uIGlzTm9kZUJ1aWx0aW4oaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBub3JtYWxpemVkID0gaWQuc3RhcnRzV2l0aChcIm5vZGU6XCIpID8gaWQuc2xpY2UoNSkgOiBpZDtcbiAgcmV0dXJuIGJ1aWx0aW5Nb2R1bGVzLmluY2x1ZGVzKG5vcm1hbGl6ZWQpO1xufVxuXG5mdW5jdGlvbiBzaG91bGRCdW5kbGVDb250cmFjdE1vZHVsZShpZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChpZC5zdGFydHNXaXRoKFwiLlwiKSB8fCBwYXRoLmlzQWJzb2x1dGUoaWQpKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKGlkLnN0YXJ0c1dpdGgoXCJAZGVjYWYtdHMvXCIpKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKGZhYnJpY1BlZXJEZXBlbmRlbmNpZXMuaGFzKGlkKSkgcmV0dXJuIGZhbHNlO1xuICBpZiAoaXNOb2RlQnVpbHRpbihpZCkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVNpZGVFZmZlY3RQYXRoKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gaW5wdXQuc3BsaXQocGF0aC5zZXApLmpvaW4oXCIvXCIpO1xufVxuXG5mdW5jdGlvbiBidWlsZFNpZGVFZmZlY3RNYXRjaGVyKGV4dHJhUGF0aHM6IHN0cmluZ1tdKSB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRFeHRyYXMgPSBleHRyYVBhdGhzLm1hcCgoZXh0cmFQYXRoKSA9PiB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVNpZGVFZmZlY3RQYXRoKGV4dHJhUGF0aC50cmltKCkpO1xuICAgIHJldHVybiB7XG4gICAgICByYXc6IG5vcm1hbGl6ZWQsXG4gICAgICByZXNvbHZlZDogcGF0aC5pc0Fic29sdXRlKGV4dHJhUGF0aClcbiAgICAgICAgPyBub3JtYWxpemVTaWRlRWZmZWN0UGF0aChwYXRoLnJlc29sdmUoZXh0cmFQYXRoKSlcbiAgICAgICAgOiBub3JtYWxpemVTaWRlRWZmZWN0UGF0aChwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgZXh0cmFQYXRoKSksXG4gICAgfTtcbiAgfSk7XG5cbiAgcmV0dXJuIChpZDogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVNpZGVFZmZlY3RQYXRoKGlkKTtcbiAgICBjb25zdCBidWlsdElucyA9IFtcbiAgICAgIFwiL3NyYy9jb250cmFjdHMvYm9vdHN0cmFwXCIsXG4gICAgICBcIi9zcmMvY29udHJhY3RzL292ZXJyaWRlc1wiLFxuICAgICAgXCIvc3JjL2NvbnRyYWN0cy9mYWJyaWMtb3ZlcnJpZGVzXCIsXG4gICAgICBcIi9zcmMvc2hhcmVkL292ZXJyaWRlc1wiLFxuICAgICAgXCIvbm9kZV9tb2R1bGVzL0BkZWNhZi10cy9cIixcbiAgICBdO1xuXG4gICAgaWYgKGJ1aWx0SW5zLnNvbWUoKG5lZWRsZSkgPT4gbm9ybWFsaXplZC5pbmNsdWRlcyhuZWVkbGUpKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vcm1hbGl6ZWRFeHRyYXMuc29tZSgoeyByYXcsIHJlc29sdmVkIH0pID0+IHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIG5vcm1hbGl6ZWQuaW5jbHVkZXMocmF3KSB8fFxuICAgICAgICBub3JtYWxpemVkLmluY2x1ZGVzKHJlc29sdmVkKSB8fFxuICAgICAgICBub3JtYWxpemVkLmVuZHNXaXRoKGAke3Jhd30uanNgKSB8fFxuICAgICAgICBub3JtYWxpemVkLmVuZHNXaXRoKGAke3Jhd30uY2pzYCkgfHxcbiAgICAgICAgbm9ybWFsaXplZC5lbmRzV2l0aChgJHtyYXd9L2luZGV4LmpzYCkgfHxcbiAgICAgICAgbm9ybWFsaXplZC5lbmRzV2l0aChgJHtyYXd9L2luZGV4LmNqc2ApIHx8XG4gICAgICAgIG5vcm1hbGl6ZWQuZW5kc1dpdGgoYCR7cmVzb2x2ZWR9LmpzYCkgfHxcbiAgICAgICAgbm9ybWFsaXplZC5lbmRzV2l0aChgJHtyZXNvbHZlZH0uY2pzYCkgfHxcbiAgICAgICAgbm9ybWFsaXplZC5lbmRzV2l0aChgJHtyZXNvbHZlZH0vaW5kZXguanNgKSB8fFxuICAgICAgICBub3JtYWxpemVkLmVuZHNXaXRoKGAke3Jlc29sdmVkfS9pbmRleC5janNgKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlU3JjRnJvbVBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBhdGgucmVwbGFjZSgvXlxcLlxcL3NyY1xcLy8sIFwiLi9cIik7XG59XG5cbmZ1bmN0aW9uIGNvcHlGb2xkZXJDb250ZW50cyhzb3VyY2VEaXI6IHN0cmluZywgdGFyZ2V0RGlyOiBzdHJpbmcpIHtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKHNvdXJjZURpcikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNvdXJjZSBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3Q6ICR7c291cmNlRGlyfWApO1xuICB9XG5cbiAgZnMubWtkaXJTeW5jKHRhcmdldERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgZm9yIChjb25zdCBpdGVtIG9mIGZzLnJlYWRkaXJTeW5jKHNvdXJjZURpcikpIHtcbiAgICBjb25zdCBzb3VyY2VQYXRoID0gcGF0aC5qb2luKHNvdXJjZURpciwgaXRlbSk7XG4gICAgY29uc3QgdGFyZ2V0UGF0aCA9IHBhdGguam9pbih0YXJnZXREaXIsIGl0ZW0pO1xuXG4gICAgY29uc3Qgc3RhdCA9IGZzLnN0YXRTeW5jKHNvdXJjZVBhdGgpO1xuXG4gICAgaWYgKHN0YXQuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgY29weUZvbGRlckNvbnRlbnRzKHNvdXJjZVBhdGgsIHRhcmdldFBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmcy5jb3B5RmlsZVN5bmMoc291cmNlUGF0aCwgdGFyZ2V0UGF0aCk7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IGNvbXBpbGVDb21tYW5kID0gbmV3IENvbW1hbmQoKVxuICAubmFtZShcImNvbXBpbGUtY29udHJhY3RcIilcbiAgLmRlc2NyaXB0aW9uKFwiQ3JlYXRlcyBhIGdsb2JhbCBjb250cmFjdFwiKVxuICAub3B0aW9uKFwiLS1kZXZcIiwgXCJjb21waWxlcyBjb250cmFjdHMgd2l0aG91dCBtaW5pZmljYXRpb25cIiwgZmFsc2UpXG4gIC5vcHRpb24oXCItLWRlYnVnXCIsIFwibWFrZXMgYXR0YWNoaW5nIGRlYnVnZ2VyIHBvc3NpYmxlXCIsIGZhbHNlKVxuICAub3B0aW9uKFxuICAgIFwiLS1jY2Fhc1wiLFxuICAgIFwiQWp1c3RzIHRoZSBwYWNrYWdlIGNvbW1hbmRzIHRvIGJlIGRlcGxveWVkIGFzIGNjYWFzXCIsXG4gICAgZmFsc2VcbiAgKVxuICAub3B0aW9uKFwiLS1uYW1lIDxTdHJpbmc+XCIsIFwiY29udHJhY3QgbmFtZVwiLCBcImdsb2JhbC1jb250cmFjdFwiKVxuICAub3B0aW9uKFwiLS1idW5kbGVcIiwgXCJCdW5kbGVzIHdpdGggcm9sbHVwIGluc3RlYWQgb2YgdXNpbmcgdHNjXCIsIGZhbHNlKVxuICAub3B0aW9uKFxuICAgIFwiLS10cy1jb25maWctZmlsZSA8c3RyaW5nPlwiLFxuICAgIFwicmVsYXRpdmUgcGF0aCB0byB0aGUgdHMgY29uZmlnIGZpbGUgYmFzZWQgb24gY3dkIG9yIGFic29sdXRlIHBhdGhcIixcbiAgICBcIi4vdHNjb25maWcuanNvblwiXG4gIClcbiAgLm9wdGlvbihcbiAgICBcIi0tZGVzY3JpcHRpb24gPFN0cmluZz5cIixcbiAgICBcImNvbnRyYWN0IGRlc2NyaXB0aW9uXCIsXG4gICAgXCJHbG9iYWwgY29udHJhY3QgaW1wbGVtZW50YXRpb25cIlxuICApXG4gIC5vcHRpb24oXCItLXN0cmlwLWNvbnRyYWN0LW5hbWVcIiwgXCJzdHJpcCBjb250cmFjdCBuYW1lIGZyb20gb3V0cHV0XCIsIGZhbHNlKVxuICAub3B0aW9uKFwiLS1pbnB1dCA8U3RyaW5nPlwiLCBcImlucHV0IGZvbGRlciBmb3IgY29udHJhY3RzXCIsIFwibGliL2NvbnRyYWN0c1wiKVxuICAub3B0aW9uKFwiLS1vdXRwdXQgPFN0cmluZz5cIiwgXCJvdXRwdXQgZm9sZGVyIGZvciBjb250cmFjdHNcIiwgXCIuL2NvbnRyYWN0c1wiKVxuICAub3B0aW9uKFwiLS1zb3VyY2VtYXBzXCIsIFwiaW5jbHVkZXMgc291cmNlbWFwcyBpbiB0aGUgY29tcGlsZWQgb3V0cHV0XCIsIGZhbHNlKVxuICAub3B0aW9uKFwiLS1ucG1yY1wiLCBcImluY2x1ZGVzIC5ucG1yYyBpbiB0aGUgY29tcGlsZWQgb3V0cHV0XCIsIGZhbHNlKVxuICAub3B0aW9uKFxuICAgIFwiLS1mcm9tLWxpYlwiLFxuICAgIFwiaW5kaWNhdGVzIHRoYXQgdGhlIGNvbnRyYWN0IHRvIGRlcGxveSBpcyBsb2NhdGVkIGluIHRoZSBsaWIgZm9sZGVyIGFuZCBub3QgcHJlLWNvbXBpbGVkIGluIHRoZSBjb250cmFjdHMgZm9sZGVyXCIsXG4gICAgZmFsc2VcbiAgKVxuICAub3B0aW9uKFxuICAgIFwiLS1zaWRlLWVmZmVjdC1wYXRocyA8cGF0aHMuLi4+XCIsXG4gICAgXCJhZGRpdGlvbmFsIHBhdGhzIG9yIHBhY2thZ2Ugcm9vdHMgdGhhdCBtdXN0IGJlIHByZXNlcnZlZCBhcyBzaWRlLWVmZmVjdGZ1bCBkdXJpbmcgY29udHJhY3QgYnVuZGxpbmdcIlxuICApXG4gIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnM6IGFueSkgPT4ge1xuICAgIGNvbnN0IHBrZyA9IEpTT04ucGFyc2UoXG4gICAgICBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwicGFja2FnZS5qc29uXCIpLCBcInV0Zi04XCIpXG4gICAgKTtcblxuICAgIGNvbnN0IHBrZ0xvY2sgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcInBhY2thZ2UtbG9jay5qc29uXCIpLCBcInV0Zi04XCIpXG4gICAgKTtcblxuICAgIGxldCBucG1yY0NvbnRlbnQgPSB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gcGtnLnZlcnNpb247XG5cbiAgICBsZXQge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgICAgZGV2LFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgICAgZGVidWcsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgICBuYW1lLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBvdXRwdXQsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgICBpbnB1dCxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICAgIHN0cmlwQ29udHJhY3ROYW1lLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgICAgY2NhYXMsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgICBidW5kbGUsXG5cbiAgICAgIHRzQ29uZmlnRmlsZSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICAgIHNvdXJjZW1hcHMsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgICBucG1yYyxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICAgIHNpZGVFZmZlY3RQYXRocyxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICAgIGZyb21MaWIsXG4gICAgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgbG9nID0gbG9nZ2VyLmZvcihcImNvbXBpbGUtY29udHJhY3RcIik7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChucG1yYykge1xuICAgICAgICBucG1yY0NvbnRlbnQgPSBmc1xuICAgICAgICAgIC5yZWFkRmlsZVN5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwiLm5wbXJjXCIpLCBcInV0Zi04XCIpXG4gICAgICAgICAgLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgY29uc3QgcmVwbGFjZWQgPSBucG1yY0NvbnRlbnQucmVwbGFjZShcbiAgICAgICAgICAvXFwkXFx7KFtefV0rKVxcfS9nLFxuICAgICAgICAgIChfOiBhbnksIHZhck5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwcm9jZXNzLmVudlt2YXJOYW1lXTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgIGBXYXJuaW5nOiBFbnZpcm9ubWVudCB2YXJpYWJsZSBcIiR7dmFyTmFtZX1cIiBpcyBub3Qgc2V0YFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBucG1yY0NvbnRlbnQgPSByZXBsYWNlZDtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIGxvZy5pbmZvKGBObyAubnBtcmMgZmlsZSBmb3VuZCwgc2tpcHBpbmcgY29weWluZyAubnBtcmMgdG8gb3V0cHV0YCk7XG4gICAgfVxuXG4gICAgbG9nLmRlYnVnKFxuICAgICAgYHJ1bm5pbmcgd2l0aCBvcHRpb25zOiAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMpfSBmb3IgJHtwa2cubmFtZX0gdmVyc2lvbiAke3ZlcnNpb259YFxuICAgICk7XG5cbiAgICB0c0NvbmZpZ0ZpbGUgPSBwYXRoLmlzQWJzb2x1dGUodHNDb25maWdGaWxlKVxuICAgICAgPyB0c0NvbmZpZ0ZpbGVcbiAgICAgIDogcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIHRzQ29uZmlnRmlsZSk7XG5cbiAgICBvdXRwdXQgPSBzdHJpcENvbnRyYWN0TmFtZSA/IG91dHB1dCA6IHBhdGguam9pbihvdXRwdXQsIG5hbWUpO1xuICAgIGxvZy5pbmZvKGBEZWxldGluZyBleGlzdGluZyBvdXRwdXQgZm9sZGVyIChpZiBleGlzdHMpIHVuZGVyICR7b3V0cHV0fWApO1xuICAgIGV4ZWNTeW5jKGBybSAtcmYgJHtvdXRwdXR9YCk7XG4gICAgaWYgKGJ1bmRsZSAmJiAhZnJvbUxpYikge1xuICAgICAgY29uc3Qgc2lkZUVmZmVjdE1hdGNoZXIgPSBidWlsZFNpZGVFZmZlY3RNYXRjaGVyKFxuICAgICAgICBBcnJheS5pc0FycmF5KHNpZGVFZmZlY3RQYXRocykgPyBzaWRlRWZmZWN0UGF0aHMgOiBbXVxuICAgICAgKTtcbiAgICAgIGxvZy5pbmZvKGBidW5kbGluZyBjb250cmFjdCBmcm9tICR7aW5wdXR9YCk7XG4gICAgICBjb25zdCB0ZW1wQnVuZGxlRGlyID0gZnMubWtkdGVtcFN5bmMoXG4gICAgICAgIHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcIi5jb250cmFjdC1idW5kbGUtXCIpXG4gICAgICApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgaW5wdXRFbnRyeSA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBpbnB1dCwgXCJpbmRleC50c1wiKTtcbiAgICAgICAgY29uc3QgY29uZmlnRmlsZSA9IHRzLnJlYWRDb25maWdGaWxlKHRzQ29uZmlnRmlsZSwgdHMuc3lzLnJlYWRGaWxlKTtcbiAgICAgICAgaWYgKGNvbmZpZ0ZpbGUuZXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgIHRzLmZsYXR0ZW5EaWFnbm9zdGljTWVzc2FnZVRleHQoY29uZmlnRmlsZS5lcnJvci5tZXNzYWdlVGV4dCwgXCJcXG5cIilcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyc2VkQ29uZmlnID0gdHMucGFyc2VKc29uQ29uZmlnRmlsZUNvbnRlbnQoXG4gICAgICAgICAgY29uZmlnRmlsZS5jb25maWcsXG4gICAgICAgICAgdHMuc3lzLFxuICAgICAgICAgIHBhdGguZGlybmFtZSh0c0NvbmZpZ0ZpbGUpLFxuICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICB0c0NvbmZpZ0ZpbGVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHBhcnNlZENvbmZpZy5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgICBwYXJzZWRDb25maWcuZXJyb3JzXG4gICAgICAgICAgICAgIC5tYXAoKGVycm9yKSA9PlxuICAgICAgICAgICAgICAgIHRzLmZsYXR0ZW5EaWFnbm9zdGljTWVzc2FnZVRleHQoZXJyb3IubWVzc2FnZVRleHQsIFwiXFxuXCIpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLmpvaW4oXCJcXG5cIilcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGVtcENvbXBpbGVyT3B0aW9uczogdHMuQ29tcGlsZXJPcHRpb25zID0ge1xuICAgICAgICAgIC4uLnBhcnNlZENvbmZpZy5vcHRpb25zLFxuICAgICAgICAgIG91dERpcjogdGVtcEJ1bmRsZURpcixcbiAgICAgICAgICBtb2R1bGU6IHRzLk1vZHVsZUtpbmQuRVNOZXh0LFxuICAgICAgICAgIGRlY2xhcmF0aW9uOiBmYWxzZSxcbiAgICAgICAgICBzb3VyY2VNYXA6IGZhbHNlLFxuICAgICAgICAgIGlubGluZVNvdXJjZXM6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBidW5kbGVkRW50cnlQb2ludCA9IHRzXG4gICAgICAgICAgLmdldE91dHB1dEZpbGVOYW1lcyhcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgLi4ucGFyc2VkQ29uZmlnLFxuICAgICAgICAgICAgICBvcHRpb25zOiB0ZW1wQ29tcGlsZXJPcHRpb25zLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlucHV0RW50cnksXG4gICAgICAgICAgICAhdHMuc3lzLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXNcbiAgICAgICAgICApXG4gICAgICAgICAgLmZpbmQoKGZpbGVOYW1lKSA9PiBmaWxlTmFtZS5lbmRzV2l0aChcIi5qc1wiKSk7XG5cbiAgICAgICAgaWYgKCFidW5kbGVkRW50cnlQb2ludCkge1xuICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgYEZhaWxlZCB0byBkZXRlcm1pbmUgdGhlIGVtaXR0ZWQgYnVuZGxlIGVudHJ5IGZvciAke2lucHV0RW50cnl9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb21waWxlV2l0aFRzY29uZmlnT3ZlcnJpZGVzKHRzQ29uZmlnRmlsZSwgdGVtcENvbXBpbGVyT3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGJ1bmRsZWRDb250cmFjdCA9IGF3YWl0IHJvbGx1cCh7XG4gICAgICAgICAgaW5wdXQ6IGJ1bmRsZWRFbnRyeVBvaW50LFxuICAgICAgICAgIGV4dGVybmFsOiAoaWQpID0+ICFzaG91bGRCdW5kbGVDb250cmFjdE1vZHVsZShpZCksXG4gICAgICAgICAgdHJlZXNoYWtlOiB7XG4gICAgICAgICAgICBtb2R1bGVTaWRlRWZmZWN0czogKGlkKSA9PiBzaWRlRWZmZWN0TWF0Y2hlcihpZCksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAgICByZXNvbHZlRGVjYWZQYWNrYWdlSW1wb3J0cygpLFxuICAgICAgICAgICAgcmVzb2x2ZUJ1bmRsZWRKc0ltcG9ydHMoKSxcbiAgICAgICAgICAgIG5vZGVSZXNvbHZlKHtcbiAgICAgICAgICAgICAgZXh0ZW5zaW9uczogW1wiLm1qc1wiLCBcIi5qc1wiLCBcIi5qc29uXCIsIFwiLmNqc1wiLCBcIi50c1wiXSxcbiAgICAgICAgICAgICAgbW9kdWxlRGlyZWN0b3JpZXM6IFtcIm5vZGVfbW9kdWxlc1wiXSxcbiAgICAgICAgICAgICAgbW9kdWxlUGF0aHM6IFtwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJub2RlX21vZHVsZXNcIildLFxuICAgICAgICAgICAgICBleHBvcnRDb25kaXRpb25zOiBbXCJub2RlXCIsIFwiZGVmYXVsdFwiLCBcInJlcXVpcmVcIiwgXCJpbXBvcnRcIl0sXG4gICAgICAgICAgICAgIHByZWZlckJ1aWx0aW5zOiB0cnVlLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjb21tb25qcyh7XG4gICAgICAgICAgICAgIGluY2x1ZGU6IC9ub2RlX21vZHVsZXMvLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICByZXBsYWNlKHtcbiAgICAgICAgICAgICAgcHJldmVudEFzc2lnbm1lbnQ6IHRydWUsXG4gICAgICAgICAgICAgIGRlbGltaXRlcnM6IFtcIlwiLCBcIlwiXSxcbiAgICAgICAgICAgICAgdmFsdWVzOiB7IFwiIyNWRVJTSU9OIyNcIjogdmVyc2lvbiwgXCIjI1BBQ0tBR0UjI1wiOiBwa2cubmFtZSB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSk7XG4gICAgICAgIGxvZy5pbmZvKFxuICAgICAgICAgIGB3aXRoaW5nIGNvbnRyYWN0IHRvICR7b3V0cHV0fSB3aXRoIG5hbWUgJHt0b1Bhc2NhbENhc2UobmFtZSl9LmpzYFxuICAgICAgICApO1xuICAgICAgICBhd2FpdCBidW5kbGVkQ29udHJhY3Qud3JpdGUoe1xuICAgICAgICAgIGZpbGU6IGAke291dHB1dH0vJHt0b1Bhc2NhbENhc2UobmFtZSl9LmpzYCxcbiAgICAgICAgICBmb3JtYXQ6IFwidW1kXCIsXG4gICAgICAgICAgbmFtZTogYCR7dG9QYXNjYWxDYXNlKG5hbWUpfS5qc2AsXG4gICAgICAgICAgc291cmNlbWFwOiBzb3VyY2VtYXBzID8gXCJpbmxpbmVcIiA6IGZhbHNlLFxuICAgICAgICAgIHNvdXJjZW1hcFBhdGhUcmFuc2Zvcm06IChyZWxhdGl2ZVNvdXJjZVBhdGgsIHNvdXJjZW1hcFBhdGgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFic29sdXRlU291cmNlUGF0aCA9IHBhdGgucmVzb2x2ZShcbiAgICAgICAgICAgICAgcGF0aC5kaXJuYW1lKHNvdXJjZW1hcFBhdGgpLFxuICAgICAgICAgICAgICByZWxhdGl2ZVNvdXJjZVBhdGhcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChhYnNvbHV0ZVNvdXJjZVBhdGguc3RhcnRzV2l0aCh0ZW1wQnVuZGxlRGlyKSkge1xuICAgICAgICAgICAgICByZXR1cm4gcGF0aC5wb3NpeC5qb2luKFxuICAgICAgICAgICAgICAgIFwiLmJ1bmRsZVwiLFxuICAgICAgICAgICAgICAgIHBhdGhcbiAgICAgICAgICAgICAgICAgIC5yZWxhdGl2ZSh0ZW1wQnVuZGxlRGlyLCBhYnNvbHV0ZVNvdXJjZVBhdGgpXG4gICAgICAgICAgICAgICAgICAuc3BsaXQocGF0aC5zZXApXG4gICAgICAgICAgICAgICAgICAuam9pbihcIi9cIilcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlbGF0aXZlU291cmNlUGF0aDtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgYnVuZGxlZENvbnRyYWN0LmNsb3NlKCk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBmcy5ybVN5bmModGVtcEJ1bmRsZURpciwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWZyb21MaWIpIHtcbiAgICAgIGNvbXBpbGVXaXRoVHNjb25maWdPdmVycmlkZXModHNDb25maWdGaWxlLCB7XG4gICAgICAgIG91dERpcjogb3V0cHV0LFxuICAgICAgICBtb2R1bGU6IHRzLk1vZHVsZUtpbmQuRVNOZXh0LFxuICAgICAgICBkZWNsYXJhdGlvbjogZmFsc2UsXG4gICAgICAgIHNvdXJjZU1hcDogc291cmNlbWFwcyxcbiAgICAgICAgaW5saW5lU291cmNlczogc291cmNlbWFwcyxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb3B5Rm9sZGVyQ29udGVudHMoXG4gICAgICAgIHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcIi4vbGliL2Nqc1wiKSxcbiAgICAgICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIG91dHB1dClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2NyaXB0cyA9IHtcbiAgICAgIHN0YXJ0OiBnZXRDb250cmFjdFN0YXJ0Q29tbWFuZChkZWJ1ZywgY2NhYXMpLFxuICAgICAgXCJzdGFydDpkZXZcIjogXCJmYWJyaWMtY2hhaW5jb2RlLW5vZGUgc3RhcnQgLS10bHMuZW5hYmxlZCBmYWxzZVwiLFxuICAgICAgXCJzdGFydDp3YXRjaFwiOiAnbm9kZW1vbiAtLWV4ZWMgXCJucG0gcnVuIHN0YXJ0OmRldlwiJyxcbiAgICAgIGJ1aWxkOiAnZWNobyBcIk5vIG5lZWQgdG8gYnVpbGQgdGhlIGNoYWluY29kZVwiJyxcbiAgICAgIGxpbnQ6IFwiZXNsaW50IC4gLS1maXggLS1leHQgLmpzXCIsXG4gICAgfTtcblxuICAgIGNvbnN0IGNvbnRyYWN0UGFja2FnZSA9IHBrZztcbiAgICBjb25zdCBjb250cmFjdFBhY2thZ2VMb2NrID0gcGtnTG9jaztcblxuICAgIGNvbnRyYWN0UGFja2FnZS5uYW1lID0gbmFtZTtcbiAgICBjb250cmFjdFBhY2thZ2UuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjtcbiAgICBjb250cmFjdFBhY2thZ2Uuc2NyaXB0cyA9IHNjcmlwdHM7XG5cbiAgICBkZWxldGUgY29udHJhY3RQYWNrYWdlLnR5cGU7XG4gICAgZGVsZXRlIGNvbnRyYWN0UGFja2FnZS50eXBlcztcbiAgICBkZWxldGUgY29udHJhY3RQYWNrYWdlLmV4cG9ydHM7XG4gICAgY29udHJhY3RQYWNrYWdlLm1haW4gPSBidW5kbGVcbiAgICAgID8gYCR7dG9QYXNjYWxDYXNlKG5hbWUpfS5qc2BcbiAgICAgIDogYCR7cmVtb3ZlU3JjRnJvbVBhdGgoaW5wdXQpfS8ke2Zyb21MaWIgPyBcImluZGV4LmNqc1wiIDogXCJpbmRleC5qc1wifWA7XG5cbiAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgcGF0aC5qb2luKG91dHB1dCwgXCJwYWNrYWdlLmpzb25cIiksXG4gICAgICBKU09OLnN0cmluZ2lmeShjb250cmFjdFBhY2thZ2UpXG4gICAgKTtcblxuICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICBwYXRoLmpvaW4ob3V0cHV0LCBcInBhY2thZ2UtbG9jay5qc29uXCIpLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoY29udHJhY3RQYWNrYWdlTG9jaylcbiAgICApO1xuXG4gICAgaWYgKG5wbXJjICYmIG5wbXJjQ29udGVudClcbiAgICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKG91dHB1dCwgXCIubnBtcmNcIiksIG5wbXJjQ29udGVudCk7XG5cbiAgICBsb2cuaW5mbyhgSW5zdGFsbGluZyBhbmQgc2hyaW5rd3JhcHBpbmcgZGVwZW5kZW5jaWVzYCk7XG4gICAgZXhlY1N5bmMoYG5wbSBpbnN0YWxsYCwgeyBjd2Q6IG91dHB1dCB9KTtcbiAgICBleGVjU3luYyhgbnBtIHNocmlua3dyYXBgLCB7IGN3ZDogb3V0cHV0IH0pO1xuICAgIGV4ZWNTeW5jKFwicm0gLXJmIG5vZGVfbW9kdWxlc1wiLCB7IGN3ZDogb3V0cHV0IH0pO1xuICAgIGxvZy5pbmZvKGBkZWxldGluZyB0ZW1wIGZvbGRlcnNgKTtcbiAgICBleGVjU3luYyhgcm0gLXJmIC4vbGliICYmIHJtIC1yZiAuL2Rpc3RgLCB7IGN3ZDogb3V0cHV0IH0pO1xuICAgIGxvZy5pbmZvKFxuICAgICAgYENvbnRyYWN0ICR7bmFtZX0gY29tcGlsZWQgc3VjY2Vzc2Z1bGx5ISBpbiAke3BhdGgucmVzb2x2ZShvdXRwdXQpfWBcbiAgICApO1xuICAgIGlmIChkZXYpIHtcbiAgICAgIGxvZy5pbmZvKGBkZXYgbW9kZSBlbmFibGVkLiBpbnN0YWxsaW5nIGRlcGVuZGVuY2llcyBmb3IgZGVidWdnaW5nYCk7XG4gICAgICBleGVjU3luYyhgbnBtIGluc3RhbGxgLCB7XG4gICAgICAgIGN3ZDogb3V0cHV0LFxuICAgICAgICBlbnY6IHsgLi4ucHJvY2Vzcy5lbnYsIE5PREVfRU5WOiBcInByb2R1Y3Rpb25cIiB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuY29uc3QgZXh0cmFjdEluZGV4ZXMgPSBuZXcgQ29tbWFuZCgpXG4gIC5jb21tYW5kKFwiZXh0cmFjdC1pbmRleGVzXCIpXG4gIC5vcHRpb24oXCItLWZpbGUgW1N0cmluZ11cIiwgXCJ0aGUgbW9kZWwgZmlsZVwiKVxuICAub3B0aW9uKFwiLS1mb2xkZXIgW1N0cmluZ11cIiwgXCJ0aGUgbW9kZWwgZm9sZGVyXCIpXG4gIC5vcHRpb24oXCItLW91dERpciA8U3RyaW5nPlwiLCBcInRoZSBvdXRkaXIuIHNob3VsZCBtYXRjaCB5b3VyIGNvbnRyYWN0IGZvbGRlclwiKVxuICAuZGVzY3JpcHRpb24oXG4gICAgXCJDcmVhdGVzIGEgdGhlIEpTT04gaW5kZXggZmlsZXMgdG8gYmUgc3VibWl0dGVkIHRvIGFsb25nIHdpdGggdGhlIGNvbnRyYWN0XCJcbiAgKVxuICAuYWN0aW9uKGFzeW5jIChvcHRpb25zOiBhbnkpID0+IHtcbiAgICBjb25zdCBwa2cgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcInBhY2thZ2UuanNvblwiKSwgXCJ1dGYtOFwiKVxuICAgICk7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gcGtnLnZlcnNpb247XG5cbiAgICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKFwiZXh0cmFjdC1pbmRleGVzXCIpO1xuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIGBydW5uaW5nIHdpdGggb3B0aW9uczogJHtKU09OLnN0cmluZ2lmeShvcHRpb25zKX0gZm9yICR7cGtnLm5hbWV9IHZlcnNpb24gJHt2ZXJzaW9ufWBcbiAgICApO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGxldCB7IGZpbGUsIGZvbGRlciwgb3V0RGlyIH0gPSBvcHRpb25zO1xuXG4gICAgY29uc3QgbW9kZWxzOiBhbnlbXSA9IFtdO1xuICAgIGlmIChmaWxlKSB7XG4gICAgICBtb2RlbHMucHVzaCguLi5yZWFkTW9kZWxGaWxlKGZpbGUpKTtcbiAgICB9XG5cbiAgICBpZiAoZm9sZGVyKSB7XG4gICAgICBsb2cuaW5mbyhgTG9hZGluZyBtb2RlbHMgZnJvbSAke2ZvbGRlcn0uLi5gKTtcbiAgICAgIG1vZGVscy5wdXNoKC4uLihhd2FpdCByZWFkTW9kZWxGb2xkZXJzKGZvbGRlcikpKTtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgY29uc3QgZGVzaWduRG9jczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXG4gICAgaWYgKCFmaWxlICYmICFmb2xkZXIpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgTXVzdCBwYXNzIGEgZmlsZSBvciBhIGZvbGRlcmApO1xuXG4gICAgZm9yIChjb25zdCBtIG9mIG1vZGVscykge1xuICAgICAgbG9nLnZlcmJvc2UoYEV4dHJhY3RpbmcgaW5kZXhlcyBmb3IgdGFibGUgJHtNb2RlbC50YWJsZU5hbWUobSl9YCk7XG4gICAgICBjb25zdCBpbmRleGVzID0gZ2VuZXJhdGVNb2RlbEluZGV4ZXMobSk7XG4gICAgICBpbmRleGVzLmZvckVhY2goKGluZGV4KSA9PiB7XG4gICAgICAgIGlmIChpbmRleC5uYW1lKSB7XG4gICAgICAgICAgcmVzdWx0W2luZGV4Lm5hbWVdID0gaW5kZXg7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgZ2VuZXJhdGVNb2RlbERlc2lnbkRvY3MobSwgZGVzaWduRG9jcyk7XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ZXNUb1dyaXRlID0gT2JqZWN0LnZhbHVlcyhyZXN1bHQpO1xuICAgIGNvbnN0IGRvY3NUb1dyaXRlID0gT2JqZWN0LnZhbHVlcyhkZXNpZ25Eb2NzKTtcbiAgICBsb2cudmVyYm9zZShgRm91bmQgJHtpbmRleGVzVG9Xcml0ZS5sZW5ndGh9IGluZGV4ZXMgdG8gY3JlYXRlYCk7XG4gICAgbG9nLnZlcmJvc2UoYEZvdW5kICR7ZG9jc1RvV3JpdGUubGVuZ3RofSBkZXNpZ24gZG9jcyB0byBjcmVhdGVgKTtcbiAgICBsb2cuZGVidWcoYEluZGV4ZXM6ICR7SlNPTi5zdHJpbmdpZnkocmVzdWx0KX1gKTtcbiAgICBsb2cuZGVidWcoYERlc2lnbkRvY3M6ICR7SlNPTi5zdHJpbmdpZnkoZGVzaWduRG9jcyl9YCk7XG4gICAgd3JpdGVJbmRleGVzKGluZGV4ZXNUb1dyaXRlLCBvdXREaXIpO1xuICAgIHdyaXRlRGVzaWduRG9jcyhkb2NzVG9Xcml0ZSwgb3V0RGlyKTtcbiAgfSk7XG5cbmNvbnN0IGV4dHJhY3RDb2xsZWN0aW9ucyA9IG5ldyBDb21tYW5kKClcbiAgLmNvbW1hbmQoXCJleHRyYWN0LWNvbGxlY3Rpb25zXCIpXG4gIC5vcHRpb24oXCItLWZpbGUgW1N0cmluZ11cIiwgXCJ0aGUgbW9kZWwgZmlsZVwiKVxuICAub3B0aW9uKFwiLS1mb2xkZXIgW1N0cmluZ11cIiwgXCJ0aGUgbW9kZWwgZm9sZGVyXCIpXG4gIC5vcHRpb24oXCItLW91dERpciA8U3RyaW5nPlwiLCBcInRoZSBvdXRkaXIuIHNob3VsZCBtYXRjaCB5b3VyIGNvbnRyYWN0IGZvbGRlclwiKVxuICAub3B0aW9uKFwiLS1tc3BJZHMgPFN0cmluZz5cIiwgXCJzaW5nbGUgbXNwSWQgb3Igc3RyaW5naWZpZWQgYXJyYXlcIilcbiAgLm9wdGlvbihcIi0tbWFpbk1zcElkIDxTdHJpbmc+XCIsIFwic2luZ2xlIG1zcElkXCIpXG4gIC5vcHRpb24oXG4gICAgXCItLW92ZXJyaWRlcyBbU3RyaW5nXVwiLFxuICAgIFwic3RyaW5naWZpZWQgb3ZlcnJpZGUgb2JqZWN0IHtyZXF1aXJlZFBlZXJDb3VudDogbnVtYmVyLCBtYXhQZWVyQ291bnQ6IG51bWJlciwgYmxvY2tUb0xpdmU6IG51bWJlciwgbWVtYmVyT25seVJlYWQ6IG51bWJlciwgbWVtYmVyT25seVdyaXRlOiBudW1iZXIsIGVuZG9yc2VtZW50UG9saWN5OiAge319XCJcbiAgKVxuICAuZGVzY3JpcHRpb24oXG4gICAgXCJDcmVhdGVzIGEgdGhlIEpTT04gaW5kZXggZmlsZXMgdG8gYmUgc3VibWl0dGVkIHRvIGFsb25nIHdpdGggdGhlIGNvbnRyYWN0XCJcbiAgKVxuICAuYWN0aW9uKGFzeW5jIChvcHRpb25zOiBhbnkpID0+IHtcbiAgICBjb25zdCBwa2cgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcInBhY2thZ2UuanNvblwiKSwgXCJ1dGYtOFwiKVxuICAgICk7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gcGtnLnZlcnNpb247XG5cbiAgICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKFwiZXh0cmFjdC1jb2xsZWN0aW9uc1wiKTtcbiAgICBsb2cuZGVidWcoXG4gICAgICBgcnVubmluZyB3aXRoIG9wdGlvbnM6ICR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucyl9IGZvciAke3BrZy5uYW1lfSB2ZXJzaW9uICR7dmVyc2lvbn1gXG4gICAgKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICBsZXQgeyBmaWxlLCBmb2xkZXIsIG91dERpciwgbXNwSWRzLCBtYWluTXNwSWQgfSA9IG9wdGlvbnM7XG5cbiAgICB0cnkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbXNwSWRzID0gbXNwSWRzID8gSlNPTi5wYXJzZShtc3BJZHMpIDogdW5kZWZpbmVkO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgIC8vICBkbyBub3RoaW5nXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FcnJvcihgVW5hYmxlIHRvIGV4dHJhY3QgbXNwaWRzOiAgJHtlfWApO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZGVsczogYW55W10gPSBbXTtcbiAgICBpZiAoZmlsZSkge1xuICAgICAgbW9kZWxzLnB1c2goLi4ucmVhZE1vZGVsRmlsZShmaWxlKSk7XG4gICAgfVxuXG4gICAgaWYgKGZvbGRlcikge1xuICAgICAgbG9nLmluZm8oYExvYWRpbmcgbW9kZWxzIGZyb20gJHtmb2xkZXJ9Li4uYCk7XG4gICAgICBtb2RlbHMucHVzaCguLi4oYXdhaXQgcmVhZE1vZGVsRm9sZGVycyhmb2xkZXIpKSk7XG4gICAgfVxuXG4gICAgaWYgKCFmaWxlICYmICFmb2xkZXIpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgTXVzdCBwYXNzIGEgZmlsZSBvciBhIGZvbGRlcmApO1xuXG4gICAgY29uc3QgaW5qZWN0YWJsZU1vZGVscyA9IG1vZGVscy5maWx0ZXIoXG4gICAgICAobW9kZWwpID0+XG4gICAgICAgIE1vZGVsLmlzU2hhcmVkKG1vZGVsKSB8fFxuICAgICAgICBNb2RlbC5pc1ByaXZhdGUobW9kZWwpIHx8XG4gICAgICAgICEhTW9kZWwubWlycm9yZWRBdChtb2RlbClcbiAgICApO1xuICAgIGlmICghaW5qZWN0YWJsZU1vZGVscy5sZW5ndGgpIHtcbiAgICAgIGxvZy5pbmZvKFxuICAgICAgICBgTm8gc2hhcmVkLCBwcml2YXRlLCBvciBtaXJyb3JlZCBtb2RlbHMgZm91bmQgdG8gZXh0cmFjdCBjb2xsZWN0aW9uc2BcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gZ2V0Q29scyhtc3BJZHNMaXN0Pzogc3RyaW5nW10pIHtcbiAgICAgIGNvbnN0IGNvbHM6IHtcbiAgICAgICAgaW5kZXhlczogQ3JlYXRlSW5kZXhSZXF1ZXN0W107XG4gICAgICAgIGRlc2lnbkRvY3M6IENvdWNoREJEZXNpZ25Eb2NbXTtcbiAgICAgICAgbWlycm9yPzogUHJpdmF0ZUNvbGxlY3Rpb247XG4gICAgICAgIGNvbGxlY3Rpb25zOiBQcml2YXRlQ29sbGVjdGlvbltdO1xuICAgICAgfVtdID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIGluamVjdGFibGVNb2RlbHMubWFwKGFzeW5jIChjbGF6eikgPT4ge1xuICAgICAgICAgIGNvbnN0IHRhYmxlTmFtZSA9IE1vZGVsLnRhYmxlTmFtZShjbGF6eik7XG4gICAgICAgICAgY29uc3QgbWlycm9yTWV0YSA9IE1vZGVsLm1pcnJvcmVkQXQoY2xhenopO1xuXG4gICAgICAgICAgY29uc29sZS5sb2codGFibGVOYW1lKTtcbiAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICAgIGZvciAoY29uc3QgbXNwIG9mIG1zcElkc0xpc3QgfHwgbXNwSWRzIHx8IFtdKSB7XG4gICAgICAgICAgICBjb2xsZWN0aW9uc1ttc3BdID0gYXdhaXQgZXhDb2xsZWN0aW9ucyhcbiAgICAgICAgICAgICAgY2xhenosXG4gICAgICAgICAgICAgIFttc3AsIG1haW5Nc3BJZF0sXG4gICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAvLyB7XG4gICAgICAgICAgICAgIC8vICAgc2hhcmVkQ29sczogT2JqZWN0LmFzc2lnbih7fSwgb3ZlcnJpZGVzLnNoYXJlZENvbHMpLFxuICAgICAgICAgICAgICAvLyAgIHByaXZhdGVDb2xzOiBPYmplY3QuYXNzaWduKHt9LCBvdmVycmlkZXMucHJpdmF0ZUNvbHMpLFxuICAgICAgICAgICAgICAvLyB9LFxuICAgICAgICAgICAgICAhIW1pcnJvck1ldGFcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IG1pcnJvckNvbGxlY3Rpb246IFByaXZhdGVDb2xsZWN0aW9uIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgaWYgKG1pcnJvck1ldGEpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25zW21haW5Nc3BJZF0gPSBjb2xsZWN0aW9uc1ttYWluTXNwSWRdIHx8IHt9O1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoY29sbGVjdGlvbnMpLmZvckVhY2goKG1zcDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25zW21haW5Nc3BJZF0ucHJpdmF0ZXMgPSBjb2xsZWN0aW9uc1tcbiAgICAgICAgICAgICAgICBtc3BcbiAgICAgICAgICAgICAgXS5wcml2YXRlcz8uZmlsdGVyKChwOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocC5uYW1lICE9PSAobWlycm9yTWV0YS5yZXNvbHZlciBhcyBzdHJpbmcpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICBtaXJyb3JDb2xsZWN0aW9uID0gcCBhcyBhbnk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHByaXZhdGVzQ291bnQgPSBPYmplY3QudmFsdWVzKGNvbGxlY3Rpb25zKVxuICAgICAgICAgICAgLm1hcCgoYykgPT4gYy5wcml2YXRlcylcbiAgICAgICAgICAgIC5mbGF0KCkubGVuZ3RoO1xuICAgICAgICAgIGlmIChwcml2YXRlc0NvdW50KVxuICAgICAgICAgICAgbG9nXG4gICAgICAgICAgICAgIC5mb3IoTW9kZWwudGFibGVOYW1lKGNsYXp6KSlcbiAgICAgICAgICAgICAgLmluZm8oYEZvdW5kICR7cHJpdmF0ZXNDb3VudH0gcHJpdmF0ZSBjb2xsZWN0aW9ucyB0byBjcmVhdGVgKTtcbiAgICAgICAgICBjb25zdCBzaGFyZWRDb3VudCA9IE9iamVjdC52YWx1ZXMoY29sbGVjdGlvbnMpXG4gICAgICAgICAgICAubWFwKChjKSA9PiBjLnNoYXJlZClcbiAgICAgICAgICAgIC5mbGF0KCkubGVuZ3RoO1xuXG4gICAgICAgICAgbG9nXG4gICAgICAgICAgICAuZm9yKE1vZGVsLnRhYmxlTmFtZShjbGF6eikpXG4gICAgICAgICAgICAuaW5mbyhgRm91bmQgJHtzaGFyZWRDb3VudH0gc2hhcmVkIGNvbGxlY3Rpb25zIHRvIGNyZWF0ZWApO1xuICAgICAgICAgIGlmIChtaXJyb3JDb2xsZWN0aW9uKVxuICAgICAgICAgICAgbG9nXG4gICAgICAgICAgICAgIC5mb3IoTW9kZWwudGFibGVOYW1lKGNsYXp6KSlcbiAgICAgICAgICAgICAgLmluZm8oXG4gICAgICAgICAgICAgICAgYEZvdW5kIG9uZSBtaXJyb3IgY29sbGVjdGlvbiAke21pcnJvck1ldGE/LnJlc29sdmVyIGFzIHN0cmluZ31gXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCBjb2xMaXN0ID0gT2JqZWN0LnZhbHVlcyhjb2xsZWN0aW9ucylcbiAgICAgICAgICAgIC5tYXAoKGMpID0+IFsuLi4oYy5wcml2YXRlcyB8fCBbXSksIC4uLihjLnNoYXJlZCB8fCBbXSldKVxuICAgICAgICAgICAgLmZsYXQoKTtcbiAgICAgICAgICBsZXQgaW5kZXhlczogQ3JlYXRlSW5kZXhSZXF1ZXN0W10gPSBbXTtcbiAgICAgICAgICBsZXQgZGVzaWduRG9jczogQ291Y2hEQkRlc2lnbkRvY1tdID0gW107XG4gICAgICAgICAgaWYgKGNvbExpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICBsb2dcbiAgICAgICAgICAgICAgLmZvcihNb2RlbC50YWJsZU5hbWUoY2xhenopKVxuICAgICAgICAgICAgICAudmVyYm9zZShgZ2VuZXJhdGluZyBpbmRleGVzIGZvciBjb2xsZWN0aW9uc2ApO1xuICAgICAgICAgICAgaW5kZXhlcyA9IGdlbmVyYXRlTW9kZWxJbmRleGVzKGNsYXp6KTtcbiAgICAgICAgICAgIGxvZ1xuICAgICAgICAgICAgICAuZm9yKE1vZGVsLnRhYmxlTmFtZShjbGF6eikpXG4gICAgICAgICAgICAgIC5pbmZvKGBmb3VuZCAke2luZGV4ZXMubGVuZ3RofSBpbmRleGVzYCk7XG4gICAgICAgICAgICBkZXNpZ25Eb2NzID0gZ2VuZXJhdGVNb2RlbERlc2lnbkRvY3MoY2xhenopO1xuICAgICAgICAgICAgbG9nXG4gICAgICAgICAgICAgIC5mb3IoTW9kZWwudGFibGVOYW1lKGNsYXp6KSlcbiAgICAgICAgICAgICAgLmluZm8oYGZvdW5kICR7ZGVzaWduRG9jcy5sZW5ndGh9IGRlc2lnbiBkb2NzYCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgICAgZGVzaWduRG9jcyxcbiAgICAgICAgICAgIGNvbGxlY3Rpb25zOiBjb2xMaXN0LFxuICAgICAgICAgICAgbWlycm9yOiBtaXJyb3JDb2xsZWN0aW9uLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgcmV0dXJuIGNvbHM7XG4gICAgfVxuXG4gICAgY29uc3QgY29scyA9IGF3YWl0IGdldENvbHMoKTtcbiAgICBjb25zdCBvbmx5TWlycm9yID0gYXdhaXQgZ2V0Q29scyhbbWFpbk1zcElkXSk7XG5cbiAgICBjb25zdCBjb2xsZWN0aW9uc1RvID0gW1xuICAgICAgLi4ub25seU1pcnJvci5maWx0ZXIoKGMpID0+IGMubWlycm9yKS5tYXAoKGMpID0+IGMubWlycm9yKSxcbiAgICAgIC4uLmNvbHMubWFwKChjKSA9PiBjLmNvbGxlY3Rpb25zKS5mbGF0KCksXG4gICAgICAuLi5jb2xzLmZpbHRlcigoYykgPT4gYy5taXJyb3IpLm1hcCgoYykgPT4gYy5taXJyb3IpLFxuICAgIF0gYXMgUHJpdmF0ZUNvbGxlY3Rpb25bXTtcblxuICAgIGNvbnN0IHVuaXF1ZUJ5Q29sbGVjdGlvbiA9IFtcbiAgICAgIC4uLm5ldyBNYXAoXG4gICAgICAgIGNvbGxlY3Rpb25zVG8ubWFwKChpdGVtOiBQcml2YXRlQ29sbGVjdGlvbikgPT4gW2l0ZW0ubmFtZSwgaXRlbV0pXG4gICAgICApLnZhbHVlcygpLFxuICAgIF07XG5cbiAgICBpZiAodW5pcXVlQnlDb2xsZWN0aW9uLmxlbmd0aCkge1xuICAgICAgd3JpdGVDb2xsZWN0aW9ucyh1bmlxdWVCeUNvbGxlY3Rpb24sIG91dERpcik7XG4gICAgICBjb25zdCBtZXRhQ29sbGVjdGlvbnNDb25maWcgPSBwYXRoLmpvaW4oXG4gICAgICAgIG91dERpcixcbiAgICAgICAgXCJNRVRBLUlORlwiLFxuICAgICAgICBcImNvbGxlY3Rpb25zX2NvbmZpZy5qc29uXCJcbiAgICAgICk7XG4gICAgICBjb25zdCBjb250cmFjdENvbGxlY3Rpb25zQ29uZmlnID0gcGF0aC5qb2luKFxuICAgICAgICBvdXREaXIsXG4gICAgICAgIFwiY29sbGVjdGlvbnNfY29uZmlnLmpzb25cIlxuICAgICAgKTtcbiAgICAgIGZzLmNvcHlGaWxlU3luYyhtZXRhQ29sbGVjdGlvbnNDb25maWcsIGNvbnRyYWN0Q29sbGVjdGlvbnNDb25maWcpO1xuICAgICAgbG9nLmluZm8oXG4gICAgICAgIGBTdG9yZWQgJHtjb2xsZWN0aW9uc1RvLmxlbmd0aH0gY29sbGVjdGlvbnMgdG8gJHttZXRhQ29sbGVjdGlvbnNDb25maWd9YFxuICAgICAgKTtcbiAgICAgIGxvZy5pbmZvKFxuICAgICAgICBgQ29waWVkIGNvbGxlY3Rpb25zX2NvbmZpZyB0byAke2NvbnRyYWN0Q29sbGVjdGlvbnNDb25maWd9IGFsb25nc2lkZSB0aGUgcGFja2FnZS5qc29uYFxuICAgICAgKTtcblxuICAgICAgY29scy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaW5kZXhlcywgZGVzaWduRG9jcywgY29sbGVjdGlvbnMsIG1pcnJvciB9ID0gYztcbiAgICAgICAgY29uc3QgdG9JbmRleDogUHJpdmF0ZUNvbGxlY3Rpb25bXSA9IFsuLi5jb2xsZWN0aW9ucywgbWlycm9yXS5maWx0ZXIoXG4gICAgICAgICAgQm9vbGVhblxuICAgICAgICApIGFzIFByaXZhdGVDb2xsZWN0aW9uW107XG4gICAgICAgIHRvSW5kZXguZm9yRWFjaCgoaSkgPT4ge1xuICAgICAgICAgIHdyaXRlSW5kZXhlcyhpbmRleGVzLCBvdXREaXIsIGkubmFtZSk7XG4gICAgICAgICAgd3JpdGVDb2xsZWN0aW9uRGVzaWduRG9jcyhkZXNpZ25Eb2NzIHx8IFtdLCBvdXREaXIsIGkubmFtZSk7XG4gICAgICAgICAgbG9nLmluZm8oXG4gICAgICAgICAgICBgU3RvcmVkICR7aW5kZXhlcz8ubGVuZ3RoIHx8IDB9IGluZGV4ZXMgYW5kICR7ZGVzaWduRG9jcz8ubGVuZ3RoIHx8IDB9IGRlc2lnbiBkb2NzIHRvIGNvbGxlY3Rpb24gJHtpLm5hbWV9YFxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuY29uc3QgZW5zdXJlSW5mcmEgPSBuZXcgQ29tbWFuZCgpXG4gIC5uYW1lKFwiYXdhaXQtaW5mcmFcIilcbiAgLmRlc2NyaXB0aW9uKFwid2FpdHMgZm9yIHRoZSBpbmZyYXN0cnVjdHVyZSB0byBiZSB1cCBhbmQgcnVubmluZ1wiKVxuICAub3B0aW9uKFxuICAgIFwiLS1jb250YWluZXIgPFN0cmluZz5cIixcbiAgICBcImRvY2tlciBjb250YWluZXIgbmFtZSB0byB0ZXN0ICh1c3VhbGx5IGxhc3QgcGVlcilcIixcbiAgICBcImJvb3Qtb3JnLWMtcGVlci0wXCJcbiAgKVxuICAub3B0aW9uKFwiLS10aW1lb3V0IDxTdHJpbmc+XCIsIFwidGltZW91dCBiZXR3ZWVuIHRlc3RzIGluIG1pbGxpc2Vjb25kc1wiLCBcIjUwMDBcIilcbiAgLm9wdGlvbihcIi0tYXR0ZW1wdHMgPFN0cmluZz5cIiwgXCJudW1iZXIgb2YgYXR0ZW1wdHMgYmVmb3JlIGdpdmluZyB1cFwiLCBcIjEwXCIpXG4gIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnM6IGFueSkgPT4ge1xuICAgIGNvbnN0IHBrZyA9IEpTT04ucGFyc2UoXG4gICAgICBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwicGFja2FnZS5qc29uXCIpLCBcInV0Zi04XCIpXG4gICAgKTtcblxuICAgIGNvbnN0IHZlcnNpb24gPSBwa2cudmVyc2lvbjtcblxuICAgIGNvbnN0IGxvZyA9IGxvZ2dlci5mb3IoXCJhd2FpdC1pbmZyYVwiKTtcbiAgICBsb2cuZGVidWcoXG4gICAgICBgcnVubmluZyB3aXRoIG9wdGlvbnM6ICR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucyl9IGZvciAke3BrZy5uYW1lfSB2ZXJzaW9uICR7dmVyc2lvbn1gXG4gICAgKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgbGV0IHsgY29udGFpbmVyLCB0aW1lb3V0LCBhdHRlbXB0cyB9ID0gb3B0aW9ucztcbiAgICB0aW1lb3V0ID0gcGFyc2VJbnQodGltZW91dCkgfHwgNTAwMDtcbiAgICBhdHRlbXB0cyA9IHBhcnNlSW50KGF0dGVtcHRzKSB8fCAxMDtcblxuICAgIGF3YWl0IGVuc3VyZUluZnJhc3RydWN0dXJlQm9vdGVkKFwiYm9vdC1vcmctYy1wZWVyLTBcIiwgdGltZW91dCwgYXR0ZW1wdHMpO1xuXG4gICAgbG9nLmluZm8oXG4gICAgICBgSW5mcmFzdHJ1Y3R1cmUgYm9vdGVkIHN1Y2Nlc3NmdWxseSAoYWNjb3JkaW5nIHRvIGNvbnRhaW5lciAke2NvbnRhaW5lcn0pIWBcbiAgICApO1xuICB9KTtcblxuY29uc3QgZGVwbG95Q29udHJhY3QgPSBuZXcgQ29tbWFuZCgpXG4gIC5uYW1lKFwiZGVwbG95LWNvbnRyYWN0XCIpXG4gIC5kZXNjcmlwdGlvbihcImRlcGxveXMgdGhlIHNlbGVjdGVkIGNvbnRyYWN0XCIpXG4gIC5vcHRpb24oXCItLW5hbWUgPFN0cmluZz5cIiwgXCJDb250cmFjdCBOYW1lIChhbmQgZm9sZGVyKVwiKVxuICAub3B0aW9uKFwiLS1pbnB1dCA8U3RyaW5nPlwiLCBcImlucHV0IGZvbGRlclwiKVxuICAub3B0aW9uKFxuICAgIFwiLS1jb2xsZWN0aW9ucy1jb25maWcgPFN0cmluZz5cIixcbiAgICBcInBhdGggdG8gY29sbGVjdGlvbnNfY29uZmlnLmpzb24gdG8gY29uZmlndXJlIHByaXZhdGUgY29sbGVjdGlvbnNcIlxuICApXG4gIC5vcHRpb24oXG4gICAgXCItLWluY3JlbWVudFZlcnNpb24gPFN0cmluZz5cIixcbiAgICBcIih0cnVlIHwgZmFsc2UpIGlmIHNob3VsZCB1c2UgdmVyc2lvbiBvciBzZXF1ZW5jZSB0byB1cGRhdGUgY29udHJhY3RzXCIsXG4gICAgZmFsc2VcbiAgKVxuICAub3B0aW9uKFxuICAgIFwiLS10cmFja2VyRm9sZGVyIDxTdHJpbmc+XCIsXG4gICAgXCJjb250cmFjdCB2ZXJzaW9uIHRyYWNrZXIgZm9sZGVyIChzaG91bGQgYmUgZGVsZXRlZCBvbiBpbmZyYXN0cnVjdHVyZTpkb3duKVwiLFxuICAgIHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcInRlc3RzXCIsIFwiaW50ZWdyYXRpb25cIiwgXCJjaGFpbmNvZGVUcmFja2Vyc1wiKVxuICApXG4gIC5vcHRpb24oXG4gICAgXCItLXBlZXJzIDxTdHJpbmc+XCIsXG4gICAgXCJjb21tYSBzZXBhcmF0ZWQgcGVlciBpZHNcIixcbiAgICBcIm9yZy1hLXBlZXItMCxvcmctYi1wZWVyLTAsb3JnLWMtcGVlci0wXCJcbiAgKVxuICAuYWN0aW9uKGFzeW5jIChvcHRpb25zOiBhbnkpID0+IHtcbiAgICBjb25zdCBwa2cgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcInBhY2thZ2UuanNvblwiKSwgXCJ1dGYtOFwiKVxuICAgICk7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gcGtnLnZlcnNpb247XG5cbiAgICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKFwiZGVwbG95LWNvbnRyYWN0XCIpO1xuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIGBydW5uaW5nIHdpdGggb3B0aW9uczogJHtKU09OLnN0cmluZ2lmeShvcHRpb25zKX0gZm9yICR7cGtnLm5hbWV9IHZlcnNpb24gJHt2ZXJzaW9ufWBcbiAgICApO1xuXG4gICAgY29uc3Qge1xuICAgICAgbmFtZSxcbiAgICAgIGlucHV0LFxuICAgICAgcGVlcnMsXG4gICAgICB0cmFja2VyRm9sZGVyLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgaW5jcmVtZW50VmVyc2lvbixcbiAgICAgIGNvbGxlY3Rpb25zQ29uZmlnLFxuICAgIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IHBlZXJJZHMgPSBwZWVycy5zcGxpdChcIixcIik7XG5cbiAgICBjb25zdCBjb3VudFBhdGggPSBwYXRoLnJlc29sdmUocGF0aC5qb2luKHRyYWNrZXJGb2xkZXIsIGAke25hbWV9LmNvdW50YCkpO1xuXG4gICAgbGV0IHNlcXVlbmNlOiBudW1iZXI7XG5cbiAgICB0cnkge1xuICAgICAgc2VxdWVuY2UgPSBwYXJzZUludChmcy5yZWFkRmlsZVN5bmMoY291bnRQYXRoKS50b1N0cmluZyhcInV0Zi04XCIpKTtcbiAgICAgIGlmIChpc05hTihzZXF1ZW5jZSkpIHNlcXVlbmNlID0gMTtcbiAgICAgIGVsc2Ugc2VxdWVuY2UgKz0gMTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICBzZXF1ZW5jZSA9IDE7XG4gICAgfVxuICAgIC8vXG4gICAgLy8gaWYgKGluY3JlbWVudFZlcnNpb24pIHtcbiAgICAvLyAgIHZlcnNpb24gPSB2ZXJzaW9uICsgYC0ke3NlcXVlbmNlfWA7XG4gICAgLy8gICAvLyBzZXF1ZW5jZSA9IDE7XG4gICAgLy8gfVxuXG4gICAgdHJ5IHtcbiAgICAgIGZvciAoY29uc3QgcGVlciBvZiBwZWVySWRzKSB7XG4gICAgICAgIHBhY2thZ2VDb250cmFjdChwZWVyLCBpbnB1dCwgbmFtZSwgdmVyc2lvbik7XG4gICAgICAgIGluc3RhbGxDb250cmFjdChwZWVyLCBuYW1lKTtcbiAgICAgICAgYXBwcm92ZUNvbnRyYWN0KFxuICAgICAgICAgIHBlZXIsXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBwZWVyID09PSBcIm9yZy1hLXBlZXItMFwiXG4gICAgICAgICAgICA/IFwidGxzLWNhLWNlcnQucGVtXCJcbiAgICAgICAgICAgIDogXCJvcmRlcmVyLXRscy1jYS1jZXJ0LnBlbVwiLFxuICAgICAgICAgIHNlcXVlbmNlLFxuICAgICAgICAgIHZlcnNpb24sXG4gICAgICAgICAgY29sbGVjdGlvbnNDb25maWdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoY291bnRQYXRoLCBzZXF1ZW5jZS50b1N0cmluZygpKTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgbG9nLmVycm9yKFwiRXJyb3IgZGVwbG95aW5nIGNvbnRyYWN0OlwiLCBlcnIpO1xuICAgIH1cbiAgICBjb21taXRDaGFpbmNvZGUobmFtZSwgc2VxdWVuY2UsIHZlcnNpb24sIGNvbGxlY3Rpb25zQ29uZmlnKTtcbiAgfSk7XG5cbmNvbnN0IGdldENyeXB0b01hdGVyaWFsID0gbmV3IENvbW1hbmQoKVxuICAubmFtZShcImdldC1jcnlwdG8tbWF0ZXJpYWxcIilcbiAgLmRlc2NyaXB0aW9uKFwiY29waWVzIHRoZSBjcnlwdG8gbWF0ZXJpYWwgdG8gdGhlIHNlbGVjdGVkIGZvbGRlclwiKVxuICAub3B0aW9uKFwiLS1mb2xkZXIgPFN0cmluZz5cIiwgXCJvdXRwdXQgZm9sZGVyXCIsIFwiZG9ja2VyL2RvY2tlci1kYXRhXCIpXG4gIC5vcHRpb24oXCItLW9yZyBbU3RyaW5nXVwiLCBcInRoZSBvcmcvcGVlciB0byBleHRyYWN0IGZyb21cIiwgXCJvcmctYVwiKVxuICAuYWN0aW9uKGFzeW5jIChvcHRpb25zOiBhbnkpID0+IHtcbiAgICBjb25zdCBwa2cgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcInBhY2thZ2UuanNvblwiKSwgXCJ1dGYtOFwiKVxuICAgICk7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gcGtnLnZlcnNpb247XG5cbiAgICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKFwiZ2V0LWNyeXB0by1tYXRlcmlhbFwiKTtcbiAgICBsb2cuZGVidWcoXG4gICAgICBgcnVubmluZyB3aXRoIG9wdGlvbnM6ICR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucyl9IGZvciAke3BrZy5uYW1lfSB2ZXJzaW9uICR7dmVyc2lvbn1gXG4gICAgKTtcbiAgICBjb25zdCB7IGZvbGRlciwgb3JnIH0gPSBvcHRpb25zO1xuICAgIGV4ZWNTeW5jKGBkb2NrZXIgY3AgJHtvcmd9Oi93ZWF2ZXIvY2xpZW50Ly4gJHtmb2xkZXJ9YCwge1xuICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgIH0pO1xuICB9KTtcblxuY29uc3QgZ2V0Q29weVRvUFRQID0gbmV3IENvbW1hbmQoKVxuICAubmFtZShcInByZXBhcmUtcHRwXCIpXG4gIC5kZXNjcmlwdGlvbihcImNvcGllcyBjb250cmFjdCB0byB0aGUgcHRwIGZvbGRlclwiKVxuICAub3B0aW9uKFwiLS1vcmlnaW4tZm9sZGVyIDxTdHJpbmc+XCIsIFwib3JpZ2luIHdvcmtzcGFjZSBmb2xkZXJcIiwgdW5kZWZpbmVkKVxuICAub3B0aW9uKFxuICAgIFwiLS1kZXN0LWZvbGRlciA8U3RyaW5nPlwiLFxuICAgIFwiZm9sZGVyIHRvIHRoZSBkZXN0aW5hdGlvbiB3b3Jrc3BhY2VcIixcbiAgICB1bmRlZmluZWRcbiAgKVxuICAuYWN0aW9uKGFzeW5jIChvcHRpb25zOiBhbnkpID0+IHtcbiAgICBpZiAoIShvcHRpb25zLm9yaWdpbkZvbGRlciAmJiBvcHRpb25zLmRlc3RGb2xkZXIpKSB7XG4gICAgICBsb2dnZXJcbiAgICAgICAgLmZvcihcInByZXBhcmUtcHRwXCIpXG4gICAgICAgIC5lcnJvcihcbiAgICAgICAgICBcIkJvdGggLS1vcmlnaW4tZm9sZGVyIGFuZCAtLWRlc3QtZm9sZGVyIG9wdGlvbnMgYXJlIHJlcXVpcmVkIHRvIHByZXBhcmUtcHRwXCJcbiAgICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb3B5Rm9sZGVyKHNvdXJjZTogc3RyaW5nLCB0YXJnZXQ6IHN0cmluZykge1xuICAgICAgLy8gUmVtb3ZlIGV4aXN0aW5nIHRhcmdldCBmb2xkZXJcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldCkpIHtcbiAgICAgICAgZnMucm1TeW5jKHRhcmdldCwge1xuICAgICAgICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgICAgICAgICBmb3JjZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEVuc3VyZSBwYXJlbnQgZXhpc3RzXG4gICAgICBmcy5ta2RpclN5bmMocGF0aC5kaXJuYW1lKHRhcmdldCksIHtcbiAgICAgICAgcmVjdXJzaXZlOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIENvcHkgZm9sZGVyXG4gICAgICBmcy5jcFN5bmMoc291cmNlLCB0YXJnZXQsIHtcbiAgICAgICAgcmVjdXJzaXZlOiB0cnVlLFxuICAgICAgICBmb3JjZTogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zb2xlLmxvZyhgQ29waWVkOiAke3NvdXJjZX0gXG4gICAgICAtPiAke3RhcmdldH1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW4gPSBwYXRoLnJlc29sdmUob3B0aW9ucy5vcmlnaW5Gb2xkZXIpO1xuICAgIGNvbnN0IGRlc3QgPSBwYXRoLnJlc29sdmUob3B0aW9ucy5kZXN0Rm9sZGVyKTtcblxuICAgIGV4ZWNTeW5jKGBjZCBmb3ItZmFicmljICYmIG5wbSBydW4gYnVpbGRgLCB7XG4gICAgICBjd2Q6IG9yaWdpbixcbiAgICAgIHN0ZGlvOiBcImluaGVyaXRcIixcbiAgICB9KTtcbiAgICBleGVjU3luYyhgY2QgZm9yLWZhYnJpYyAmJiBucG0gcnVuIGJ1aWxkOmNvbnRyYWN0OnNoYXJlZGAsIHtcbiAgICAgIGN3ZDogb3JpZ2luLFxuICAgICAgc3RkaW86IFwiaW5oZXJpdFwiLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc291cmNlTGliID0gcGF0aC5qb2luKG9yaWdpbiwgXCJmb3ItZmFicmljXCIsIFwibGliXCIpO1xuICAgIGNvbnN0IHRhcmdldExpYiA9IHBhdGguam9pbihkZXN0LCBcImluZnJhXCIsIFwiZm9yLWZhYnJpY1wiLCBcImxpYlwiKTtcblxuICAgIGNvcHlGb2xkZXIoc291cmNlTGliLCB0YXJnZXRMaWIpO1xuXG4gICAgY29uc3Qgc291cmNlR2xvYmFsID0gcGF0aC5qb2luKFxuICAgICAgb3JpZ2luLFxuICAgICAgXCJmb3ItZmFicmljXCIsXG4gICAgICBcImRvY2tlclwiLFxuICAgICAgXCJpbmZyYXN0cnVjdHVyZVwiLFxuICAgICAgXCJjaGFpbmNvZGVcIixcbiAgICAgIFwiR2xvYmFsXCJcbiAgICApO1xuXG4gICAgY29uc3QgdGFyZ2V0Q29udHJhY3RzID0gcGF0aC5qb2luKGRlc3QsIFwidG9vbGtpdFwiLCBcImNvbnRyYWN0c1wiKTtcblxuICAgIGZzLm1rZGlyU3luYyh0YXJnZXRDb250cmFjdHMsIHtcbiAgICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBmcy5yZWFkZGlyU3luYyhzb3VyY2VHbG9iYWwpKSB7XG4gICAgICBjb25zdCBzb3VyY2VJdGVtID0gcGF0aC5qb2luKHNvdXJjZUdsb2JhbCwgaXRlbSk7XG4gICAgICBjb25zdCB0YXJnZXRJdGVtID0gcGF0aC5qb2luKHRhcmdldENvbnRyYWN0cywgaXRlbSk7XG5cbiAgICAgIC8vIFJlbW92ZSBleGlzdGluZyB0YXJnZXQgaXRlbSBpZiBuZWVkZWRcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldEl0ZW0pKSB7XG4gICAgICAgIGZzLnJtU3luYyh0YXJnZXRJdGVtLCB7XG4gICAgICAgICAgcmVjdXJzaXZlOiB0cnVlLFxuICAgICAgICAgIGZvcmNlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgZnMuY3BTeW5jKHNvdXJjZUl0ZW0sIHRhcmdldEl0ZW0sIHtcbiAgICAgICAgcmVjdXJzaXZlOiB0cnVlLFxuICAgICAgICBmb3JjZTogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zb2xlLmxvZyhgQ29waWVkOiAke3NvdXJjZUl0ZW19IFxuICAgICAgLT4gJHt0YXJnZXRJdGVtfWApO1xuICAgIH1cblxuICAgIGV4ZWNTeW5jKGBjZCB0b29sa2l0ICYmIG5wbSBydW4gYnVpbGRgLCB7IGN3ZDogZGVzdCwgc3RkaW86IFwiaW5oZXJpdFwiIH0pO1xuICAgIGV4ZWNTeW5jKGBjZCB0b29sa2l0ICYmIG5wbSBydW4gZG9ja2VyOmJ1aWxkLWNvbnRyYWN0c2AsIHtcbiAgICAgIGN3ZDogZGVzdCxcbiAgICAgIHN0ZGlvOiBcImluaGVyaXRcIixcbiAgICB9KTtcbiAgICBleGVjU3luYyhgY2QgaW5mcmEgJiYgbnBtIHJ1biBidWlsZGAsIHsgY3dkOiBkZXN0LCBzdGRpbzogXCJpbmhlcml0XCIgfSk7XG4gICAgZXhlY1N5bmMoYGNkIGluZnJhICYmIG5wbSBydW4gYnVpbGQ6amVzdDppbWFnZWAsIHtcbiAgICAgIGN3ZDogZGVzdCxcbiAgICAgIHN0ZGlvOiBcImluaGVyaXRcIixcbiAgICB9KTtcbiAgfSk7XG5cbmNvbnN0IGZhYnJpY0NtZCA9IG5ldyBDb21tYW5kKClcbiAgLm5hbWUoXCJmb3ItZmFicmljXCIpXG4gIC5jb21tYW5kKFwiZmFicmljXCIpXG4gIC5kZXNjcmlwdGlvbihcbiAgICBcImV4cG9zZXMgc2V2ZXJhbCBjb21tYW5kcyB0byBoZWxwIG1hbmFnZSB0aGUgZmFicmljIGluZnJhc3RydWN0dXJlXCJcbiAgKTtcblxuZmFicmljQ21kLmFkZENvbW1hbmQoY29tcGlsZUNvbW1hbmQpO1xuZmFicmljQ21kLmFkZENvbW1hbmQoZXh0cmFjdEluZGV4ZXMpO1xuZmFicmljQ21kLmFkZENvbW1hbmQoZW5zdXJlSW5mcmEpO1xuZmFicmljQ21kLmFkZENvbW1hbmQoZGVwbG95Q29udHJhY3QpO1xuZmFicmljQ21kLmFkZENvbW1hbmQoZ2V0Q3J5cHRvTWF0ZXJpYWwpO1xuZmFicmljQ21kLmFkZENvbW1hbmQoZXh0cmFjdENvbGxlY3Rpb25zKTtcbmZhYnJpY0NtZC5hZGRDb21tYW5kKGdldENvcHlUb1BUUCk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZhYnJpYygpIHtcbiAgcmV0dXJuIGZhYnJpY0NtZDtcbn1cbiJdfQ==
719
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsaS1tb2R1bGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFvc0JBLHlCQUVDO0FBdHNCRCx5Q0FBb0M7QUFDcEMsK0NBQTBEO0FBQzFELGlEQUF5QztBQUN6Qyw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBQ3hCLDZDQUE0RDtBQUM1RCxtQ0FBZ0M7QUFDaEMsOEVBQStDO0FBQy9DLHFFQUEwRDtBQUMxRCw0RUFBNkM7QUFDN0MsMkRBQTRFO0FBQzVFLHdEQUEySjtBQUMzSix5RUFBdUQ7QUFDdkQsaURBQXdMO0FBQ3hMLHVDQUFxQztBQUNyQyw0REFBNEI7QUFDNUIsNERBQWtJO0FBQ2xJLE1BQU0sTUFBTSxHQUFHLGlCQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JDLFNBQVMsdUJBQXVCO0lBQzVCLE9BQU87UUFDSCxJQUFJLEVBQUUsNEJBQTRCO1FBQ2xDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUTtZQUN0QixJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN2QyxPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDO1lBQ0QsTUFBTSxZQUFZLEdBQUcsY0FBSSxDQUFDLE9BQU8sQ0FBQyxjQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2xFLE1BQU0sVUFBVSxHQUFHO2dCQUNmLFlBQVk7Z0JBQ1osR0FBRyxZQUFZLEtBQUs7Z0JBQ3BCLGNBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQzthQUN0QyxDQUFDO1lBQ0YsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxZQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFlBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztvQkFDOUQsT0FBTyxTQUFTLENBQUM7Z0JBQ3JCLENBQUM7WUFDTCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztLQUNKLENBQUM7QUFDTixDQUFDO0FBQ0QsU0FBUywwQkFBMEI7SUFDL0IsTUFBTSxlQUFlLEdBQUcsSUFBQSwyQkFBYSxFQUFDLGNBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDaEYsT0FBTztRQUNILElBQUksRUFBRSwrQkFBK0I7UUFDckMsU0FBUyxDQUFDLE1BQU07WUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO2dCQUNuQyxPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDO1lBQ0QsSUFBSSxDQUFDO2dCQUNELE9BQU8sZUFBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMzQyxDQUFDO1lBQ0QsTUFBTSxDQUFDO2dCQUNILE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7UUFDTCxDQUFDO0tBQ0osQ0FBQztBQUNOLENBQUM7QUFDRCxNQUFNLHNCQUFzQixHQUFHLElBQUksR0FBRyxDQUFDO0lBQ25DLGVBQWU7SUFDZiw2QkFBNkI7SUFDN0IscUJBQXFCO0lBQ3JCLGtCQUFrQjtJQUNsQixlQUFlO0lBQ2YscUJBQXFCO0lBQ3JCLGdCQUFnQjtJQUNoQixhQUFhO0lBQ2IsaUJBQWlCO0NBQ3BCLENBQUMsQ0FBQztBQUNILFNBQVMsYUFBYSxDQUFDLEVBQUU7SUFDckIsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzdELE9BQU8sNEJBQWMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUNELFNBQVMsMEJBQTBCLENBQUMsRUFBRTtJQUNsQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksY0FBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDekMsT0FBTyxJQUFJLENBQUM7SUFDaEIsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQztJQUNoQixJQUFJLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDOUIsT0FBTyxLQUFLLENBQUM7SUFDakIsSUFBSSxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQ2pCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFDRCxTQUFTLHVCQUF1QixDQUFDLEtBQUs7SUFDbEMsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLGNBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUNELFNBQVMsc0JBQXNCLENBQUMsVUFBVTtJQUN0QyxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtRQUNsRCxNQUFNLFVBQVUsR0FBRyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3RCxPQUFPO1lBQ0gsR0FBRyxFQUFFLFVBQVU7WUFDZixRQUFRLEVBQUUsY0FBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUM7Z0JBQ2hDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxjQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNsRCxDQUFDLENBQUMsdUJBQXVCLENBQUMsY0FBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDeEUsQ0FBQztJQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFO1FBQ1YsTUFBTSxVQUFVLEdBQUcsdUJBQXVCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0MsTUFBTSxRQUFRLEdBQUc7WUFDYiwwQkFBMEI7WUFDMUIsMEJBQTBCO1lBQzFCLGlDQUFpQztZQUNqQyx1QkFBdUI7WUFDdkIsMEJBQTBCO1NBQzdCLENBQUM7UUFDRixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3pELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7WUFDL0MsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO2dCQUM1QixVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztnQkFDN0IsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO2dCQUNoQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUM7Z0JBQ2pDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQztnQkFDdEMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDO2dCQUN2QyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsUUFBUSxLQUFLLENBQUM7Z0JBQ3JDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLE1BQU0sQ0FBQztnQkFDdEMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsV0FBVyxDQUFDO2dCQUMzQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsUUFBUSxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUNELFNBQVMsaUJBQWlCLENBQUMsSUFBSTtJQUMzQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFDRCxTQUFTLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxTQUFTO0lBQzVDLElBQUksQ0FBQyxZQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBQ0QsWUFBRSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3QyxLQUFLLE1BQU0sSUFBSSxJQUFJLFlBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUMzQyxNQUFNLFVBQVUsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5QyxNQUFNLFVBQVUsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5QyxNQUFNLElBQUksR0FBRyxZQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDckIsa0JBQWtCLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLENBQUM7YUFDSSxDQUFDO1lBQ0YsWUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDNUMsQ0FBQztJQUNMLENBQUM7QUFDTCxDQUFDO0FBQ0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxtQkFBTyxFQUFFO0tBQy9CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztLQUN4QixXQUFXLENBQUMsMkJBQTJCLENBQUM7S0FDeEMsTUFBTSxDQUFDLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxLQUFLLENBQUM7S0FDakUsTUFBTSxDQUFDLFNBQVMsRUFBRSxtQ0FBbUMsRUFBRSxLQUFLLENBQUM7S0FDN0QsTUFBTSxDQUFDLFNBQVMsRUFBRSxxREFBcUQsRUFBRSxLQUFLLENBQUM7S0FDL0UsTUFBTSxDQUFDLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQztLQUM3RCxNQUFNLENBQUMsVUFBVSxFQUFFLDBDQUEwQyxFQUFFLEtBQUssQ0FBQztLQUNyRSxNQUFNLENBQUMsMkJBQTJCLEVBQUUsbUVBQW1FLEVBQUUsaUJBQWlCLENBQUM7S0FDM0gsTUFBTSxDQUFDLHdCQUF3QixFQUFFLHNCQUFzQixFQUFFLGdDQUFnQyxDQUFDO0tBQzFGLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxpQ0FBaUMsRUFBRSxLQUFLLENBQUM7S0FDekUsTUFBTSxDQUFDLGtCQUFrQixFQUFFLDRCQUE0QixFQUFFLGVBQWUsQ0FBQztLQUN6RSxNQUFNLENBQUMsbUJBQW1CLEVBQUUsNkJBQTZCLEVBQUUsYUFBYSxDQUFDO0tBQ3pFLE1BQU0sQ0FBQyxjQUFjLEVBQUUsNENBQTRDLEVBQUUsS0FBSyxDQUFDO0tBQzNFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsd0NBQXdDLEVBQUUsS0FBSyxDQUFDO0tBQ2xFLE1BQU0sQ0FBQyxZQUFZLEVBQUUsaUhBQWlILEVBQUUsS0FBSyxDQUFDO0tBQzlJLE1BQU0sQ0FBQyxnQ0FBZ0MsRUFBRSxxR0FBcUcsQ0FBQztLQUMvSSxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQzFCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBRSxDQUFDLFlBQVksQ0FBQyxjQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxjQUFjLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzNGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBRSxDQUFDLFlBQVksQ0FBQyxjQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDcEcsSUFBSSxZQUFZLEdBQUcsU0FBUyxDQUFDO0lBQzdCLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7SUFDNUIsSUFBSTtJQUNKLHdDQUF3QztJQUN4QyxHQUFHO0lBQ0gsd0NBQXdDO0lBQ3hDLEtBQUs7SUFDTCx3Q0FBd0M7SUFDeEMsSUFBSTtJQUNKLHdDQUF3QztJQUN4QyxXQUFXLEVBQUUsTUFBTTtJQUNuQix3Q0FBd0M7SUFDeEMsS0FBSztJQUNMLHdDQUF3QztJQUN4QyxpQkFBaUI7SUFDakIsd0NBQXdDO0lBQ3hDLEtBQUs7SUFDTCx3Q0FBd0M7SUFDeEMsTUFBTSxFQUFFLFlBQVk7SUFDcEIsd0NBQXdDO0lBQ3hDLFVBQVU7SUFDVix3Q0FBd0M7SUFDeEMsS0FBSztJQUNMLHdDQUF3QztJQUN4QyxlQUFlO0lBQ2Ysd0NBQXdDO0lBQ3hDLE9BQU8sR0FBRyxHQUFHLE9BQU8sQ0FBQztJQUNyQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDM0MsSUFBSSxDQUFDO1FBQ0QsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLFlBQVksR0FBRyxZQUFFO2lCQUNaLFlBQVksQ0FBQyxjQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxPQUFPLENBQUM7aUJBQ3pELFFBQVEsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUU7Z0JBQ25FLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ25DLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxPQUFPLGNBQWMsQ0FBQyxDQUFDO29CQUN0RSxPQUFPLEVBQUUsQ0FBQztnQkFDZCxDQUFDO2dCQUNELE9BQU8sS0FBSyxDQUFDO1lBQ2pCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsWUFBWSxHQUFHLFFBQVEsQ0FBQztRQUM1QixDQUFDO0lBQ0wsQ0FBQztJQUNELE1BQU0sQ0FBQztRQUNILEdBQUcsQ0FBQyxJQUFJLENBQUMseURBQXlELENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBQ0QsR0FBRyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxZQUFZLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDakcsWUFBWSxHQUFHLGNBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxZQUFZO1FBQ2QsQ0FBQyxDQUFDLGNBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzdDLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5RCxHQUFHLENBQUMsSUFBSSxDQUFDLHFEQUFxRCxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLElBQUEsd0JBQVEsRUFBQyxVQUFVLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDN0IsSUFBSSxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNyQixNQUFNLGlCQUFpQixHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEcsR0FBRyxDQUFDLElBQUksQ0FBQywwQkFBMEIsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM1QyxNQUFNLGFBQWEsR0FBRyxZQUFFLENBQUMsV0FBVyxDQUFDLGNBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUM7WUFDRCxNQUFNLFVBQVUsR0FBRyxjQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDbEUsTUFBTSxVQUFVLEdBQUcsb0JBQUUsQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLG9CQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BFLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNuQixNQUFNLElBQUksNkJBQWEsQ0FBQyxvQkFBRSxDQUFDLDRCQUE0QixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDakcsQ0FBQztZQUNELE1BQU0sWUFBWSxHQUFHLG9CQUFFLENBQUMsMEJBQTBCLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxvQkFBRSxDQUFDLEdBQUcsRUFBRSxjQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUNuSSxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sSUFBSSw2QkFBYSxDQUFDLFlBQVksQ0FBQyxNQUFNO3FCQUN0QyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLG9CQUFFLENBQUMsNEJBQTRCLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztxQkFDeEUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDckIsQ0FBQztZQUNELE1BQU0sbUJBQW1CLEdBQUc7Z0JBQ3hCLEdBQUcsWUFBWSxDQUFDLE9BQU87Z0JBQ3ZCLE1BQU0sRUFBRSxhQUFhO2dCQUNyQixNQUFNLEVBQUUsb0JBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTTtnQkFDNUIsV0FBVyxFQUFFLEtBQUs7Z0JBQ2xCLFNBQVMsRUFBRSxLQUFLO2dCQUNoQixhQUFhLEVBQUUsS0FBSzthQUN2QixDQUFDO1lBQ0YsTUFBTSxpQkFBaUIsR0FBRyxvQkFBRTtpQkFDdkIsa0JBQWtCLENBQUM7Z0JBQ3BCLEdBQUcsWUFBWTtnQkFDZixPQUFPLEVBQUUsbUJBQW1CO2FBQy9CLEVBQUUsVUFBVSxFQUFFLENBQUMsb0JBQUUsQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUM7aUJBQzVDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUNyQixNQUFNLElBQUksNkJBQWEsQ0FBQyxvREFBb0QsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUM5RixDQUFDO1lBQ0QsSUFBQSwyQ0FBNEIsRUFBQyxZQUFZLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztZQUNoRSxNQUFNLGVBQWUsR0FBRyxNQUFNLElBQUEsZUFBTSxFQUFDO2dCQUNqQyxLQUFLLEVBQUUsaUJBQWlCO2dCQUN4QixRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsMEJBQTBCLENBQUMsRUFBRSxDQUFDO2dCQUNqRCxTQUFTLEVBQUU7b0JBQ1AsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztpQkFDbkQ7Z0JBQ0QsT0FBTyxFQUFFO29CQUNMLDBCQUEwQixFQUFFO29CQUM1Qix1QkFBdUIsRUFBRTtvQkFDekIsSUFBQSxpQ0FBVyxFQUFDO3dCQUNSLFVBQVUsRUFBRSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUM7d0JBQ25ELGlCQUFpQixFQUFFLENBQUMsY0FBYyxDQUFDO3dCQUNuQyxXQUFXLEVBQUUsQ0FBQyxjQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQzt3QkFDdkQsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUM7d0JBQzFELGNBQWMsRUFBRSxJQUFJO3FCQUN2QixDQUFDO29CQUNGLElBQUEseUJBQVEsRUFBQzt3QkFDTCxPQUFPLEVBQUUsY0FBYztxQkFDMUIsQ0FBQztvQkFDRixJQUFBLHdCQUFPLEVBQUM7d0JBQ0osaUJBQWlCLEVBQUUsSUFBSTt3QkFDdkIsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQzt3QkFDcEIsTUFBTSxFQUFFLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRTtxQkFDOUQsQ0FBQztpQkFDTDthQUNKLENBQUMsQ0FBQztZQUNILEdBQUcsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLE1BQU0sY0FBYyxJQUFBLHNCQUFZLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdFLE1BQU0sZUFBZSxDQUFDLEtBQUssQ0FBQztnQkFDeEIsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLElBQUEsc0JBQVksRUFBQyxJQUFJLENBQUMsS0FBSztnQkFDMUMsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsSUFBSSxFQUFFLEdBQUcsSUFBQSxzQkFBWSxFQUFDLElBQUksQ0FBQyxLQUFLO2dCQUNoQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUs7Z0JBQ3hDLHNCQUFzQixFQUFFLENBQUMsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLEVBQUU7b0JBQzFELE1BQU0sa0JBQWtCLEdBQUcsY0FBSSxDQUFDLE9BQU8sQ0FBQyxjQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLENBQUM7b0JBQ3pGLElBQUksa0JBQWtCLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7d0JBQy9DLE9BQU8sY0FBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGNBQUk7NkJBQ2pDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsa0JBQWtCLENBQUM7NkJBQzNDLEtBQUssQ0FBQyxjQUFJLENBQUMsR0FBRyxDQUFDOzZCQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUNwQixDQUFDO29CQUNELE9BQU8sa0JBQWtCLENBQUM7Z0JBQzlCLENBQUM7YUFDSixDQUFDLENBQUM7WUFDSCxNQUFNLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQyxDQUFDO2dCQUNPLENBQUM7WUFDTCxZQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQztJQUNMLENBQUM7U0FDSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEIsSUFBQSwyQ0FBNEIsRUFBQyxZQUFZLEVBQUU7WUFDdkMsTUFBTSxFQUFFLE1BQU07WUFDZCxNQUFNLEVBQUUsb0JBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTTtZQUM1QixXQUFXLEVBQUUsS0FBSztZQUNsQixTQUFTLEVBQUUsVUFBVTtZQUNyQixhQUFhLEVBQUUsVUFBVTtTQUM1QixDQUFDLENBQUM7SUFDUCxDQUFDO1NBQ0ksQ0FBQztRQUNGLGtCQUFrQixDQUFDLGNBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLFdBQVcsQ0FBQyxFQUFFLGNBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUNELE1BQU0sT0FBTyxHQUFHO1FBQ1osS0FBSyxFQUFFLElBQUEsc0NBQXVCLEVBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztRQUM1QyxXQUFXLEVBQUUsaURBQWlEO1FBQzlELGFBQWEsRUFBRSxvQ0FBb0M7UUFDbkQsS0FBSyxFQUFFLHVDQUF1QztRQUM5QyxJQUFJLEVBQUUsMEJBQTBCO0tBQ25DLENBQUM7SUFDRixNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUM7SUFDNUIsTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUM7SUFDcEMsZUFBZSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDNUIsZUFBZSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDMUMsZUFBZSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDbEMsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDO0lBQzVCLE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQztJQUM3QixPQUFPLGVBQWUsQ0FBQyxPQUFPLENBQUM7SUFDL0IsZUFBZSxDQUFDLElBQUksR0FBRyxNQUFNO1FBQ3pCLENBQUMsQ0FBQyxHQUFHLElBQUEsc0JBQVksRUFBQyxJQUFJLENBQUMsS0FBSztRQUM1QixDQUFDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDMUUsWUFBRSxDQUFDLGFBQWEsQ0FBQyxjQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDckYsWUFBRSxDQUFDLGFBQWEsQ0FBQyxjQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO0lBQzlGLElBQUksS0FBSyxJQUFJLFlBQVk7UUFDckIsWUFBRSxDQUFDLGFBQWEsQ0FBQyxjQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNoRSxHQUFHLENBQUMsSUFBSSxDQUFDLDRDQUE0QyxDQUFDLENBQUM7SUFDdkQsSUFBQSx3QkFBUSxFQUFDLGFBQWEsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLElBQUEsd0JBQVEsRUFBQyxnQkFBZ0IsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLElBQUEsd0JBQVEsRUFBQyxxQkFBcUIsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELEdBQUcsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUNsQyxJQUFBLHdCQUFRLEVBQUMsK0JBQStCLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUMzRCxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSw4QkFBOEIsY0FBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0UsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNOLEdBQUcsQ0FBQyxJQUFJLENBQUMseURBQXlELENBQUMsQ0FBQztRQUNwRSxJQUFBLHdCQUFRLEVBQUMsYUFBYSxFQUFFO1lBQ3BCLEdBQUcsRUFBRSxNQUFNO1lBQ1gsR0FBRyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUU7U0FDbEQsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0gsTUFBTSxjQUFjLEdBQUcsSUFBSSxtQkFBTyxFQUFFO0tBQy9CLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztLQUMxQixNQUFNLENBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLENBQUM7S0FDM0MsTUFBTSxDQUFDLG1CQUFtQixFQUFFLGtCQUFrQixDQUFDO0tBQy9DLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSwrQ0FBK0MsQ0FBQztLQUM1RSxXQUFXLENBQUMsMkVBQTJFLENBQUM7S0FDeEYsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQUUsQ0FBQyxZQUFZLENBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsY0FBYyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMzRixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO0lBQzVCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMxQyxHQUFHLENBQUMsS0FBSyxDQUFDLHlCQUF5QixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLFlBQVksT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNqRyx3Q0FBd0M7SUFDeEMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ3ZDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNsQixJQUFJLElBQUksRUFBRSxDQUFDO1FBQ1AsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUEsd0JBQWEsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFDRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1QsR0FBRyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsTUFBTSxLQUFLLENBQUMsQ0FBQztRQUM3QyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUEsMkJBQWdCLEVBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDbEIsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNO1FBQ2hCLE1BQU0sSUFBSSw2QkFBYSxDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFDNUQsS0FBSyxNQUFNLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNyQixHQUFHLENBQUMsT0FBTyxDQUFDLGdDQUFnQyw0QkFBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEUsTUFBTSxPQUFPLEdBQUcsSUFBQSwrQkFBb0IsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdEIsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDL0IsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBQSxrQ0FBdUIsRUFBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0MsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsY0FBYyxDQUFDLE1BQU0sb0JBQW9CLENBQUMsQ0FBQztJQUNoRSxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsV0FBVyxDQUFDLE1BQU0sd0JBQXdCLENBQUMsQ0FBQztJQUNqRSxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEQsR0FBRyxDQUFDLEtBQUssQ0FBQyxlQUFlLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELElBQUEsdUJBQVksRUFBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckMsSUFBQSwwQkFBZSxFQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN6QyxDQUFDLENBQUMsQ0FBQztBQUNILE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxtQkFBTyxFQUFFO0tBQ25DLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQztLQUM5QixNQUFNLENBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLENBQUM7S0FDM0MsTUFBTSxDQUFDLG1CQUFtQixFQUFFLGtCQUFrQixDQUFDO0tBQy9DLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSwrQ0FBK0MsQ0FBQztLQUM1RSxNQUFNLENBQUMsbUJBQW1CLEVBQUUsbUNBQW1DLENBQUM7S0FDaEUsTUFBTSxDQUFDLHNCQUFzQixFQUFFLGNBQWMsQ0FBQztLQUM5QyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsNktBQTZLLENBQUM7S0FDN00sV0FBVyxDQUFDLDJFQUEyRSxDQUFDO0tBQ3hGLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFFLENBQUMsWUFBWSxDQUFDLGNBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLGNBQWMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDM0YsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztJQUM1QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDOUMsR0FBRyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxZQUFZLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDakcsd0NBQXdDO0lBQ3hDLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQzFELElBQUksQ0FBQztRQUNELElBQUksQ0FBQztZQUNELE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNqRCw2REFBNkQ7UUFDakUsQ0FBQztRQUNELE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDUCxjQUFjO1FBQ2xCLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNQLE1BQU0sSUFBSSxrQ0FBa0IsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLElBQUksSUFBSSxFQUFFLENBQUM7UUFDUCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBQSx3QkFBYSxFQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUNELElBQUksTUFBTSxFQUFFLENBQUM7UUFDVCxHQUFHLENBQUMsSUFBSSxDQUFDLHVCQUF1QixNQUFNLEtBQUssQ0FBQyxDQUFDO1FBQzdDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBQSwyQkFBZ0IsRUFBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNO1FBQ2hCLE1BQU0sSUFBSSw2QkFBYSxDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFDNUQsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyw0QkFBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDbkUsNEJBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyw0QkFBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQy9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixHQUFHLENBQUMsSUFBSSxDQUFDLHFFQUFxRSxDQUFDLENBQUM7UUFDaEYsT0FBTztJQUNYLENBQUM7SUFDRCxLQUFLLFVBQVUsT0FBTyxDQUFDLFVBQVU7UUFDN0IsTUFBTSxJQUFJLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDaEUsTUFBTSxTQUFTLEdBQUcsNEJBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsTUFBTSxVQUFVLEdBQUcsNEJBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN2QixNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDdkIsS0FBSyxNQUFNLEdBQUcsSUFBSSxVQUFVLElBQUksTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUMzQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxJQUFBLDZCQUFhLEVBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2xFLElBQUk7Z0JBQ0oseURBQXlEO2dCQUN6RCwyREFBMkQ7Z0JBQzNELEtBQUs7Z0JBQ0wsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2xCLENBQUM7WUFDRCxJQUFJLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztZQUNqQyxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNiLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN0RCxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNyQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7d0JBQ3RFLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsUUFBUTs0QkFDOUIsT0FBTyxJQUFJLENBQUM7d0JBQ2hCLGdCQUFnQixHQUFHLENBQUMsQ0FBQzt3QkFDckIsT0FBTyxLQUFLLENBQUM7b0JBQ2pCLENBQUMsQ0FBQyxDQUFDO2dCQUNQLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztZQUNELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO2lCQUMzQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7aUJBQ3RCLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNuQixJQUFJLGFBQWE7Z0JBQ2IsR0FBRztxQkFDRSxHQUFHLENBQUMsNEJBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQzNCLElBQUksQ0FBQyxTQUFTLGFBQWEsZ0NBQWdDLENBQUMsQ0FBQztZQUN0RSxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztpQkFDekMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO2lCQUNwQixJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDbkIsR0FBRztpQkFDRSxHQUFHLENBQUMsNEJBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQzNCLElBQUksQ0FBQyxTQUFTLFdBQVcsK0JBQStCLENBQUMsQ0FBQztZQUMvRCxJQUFJLGdCQUFnQjtnQkFDaEIsR0FBRztxQkFDRSxHQUFHLENBQUMsNEJBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQzNCLElBQUksQ0FBQywrQkFBK0IsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDckUsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7aUJBQ3JDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUN4RCxJQUFJLEVBQUUsQ0FBQztZQUNaLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNqQixJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDcEIsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2pCLEdBQUc7cUJBQ0UsR0FBRyxDQUFDLDRCQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUMzQixPQUFPLENBQUMsb0NBQW9DLENBQUMsQ0FBQztnQkFDbkQsT0FBTyxHQUFHLElBQUEsK0JBQW9CLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3RDLEdBQUc7cUJBQ0UsR0FBRyxDQUFDLDRCQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUMzQixJQUFJLENBQUMsU0FBUyxPQUFPLENBQUMsTUFBTSxVQUFVLENBQUMsQ0FBQztnQkFDN0MsVUFBVSxHQUFHLElBQUEsa0NBQXVCLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVDLEdBQUc7cUJBQ0UsR0FBRyxDQUFDLDRCQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUMzQixJQUFJLENBQUMsU0FBUyxVQUFVLENBQUMsTUFBTSxjQUFjLENBQUMsQ0FBQztZQUN4RCxDQUFDO1lBQ0QsT0FBTztnQkFDSCxPQUFPO2dCQUNQLFVBQVU7Z0JBQ1YsV0FBVyxFQUFFLE9BQU87Z0JBQ3BCLE1BQU0sRUFBRSxnQkFBZ0I7YUFDM0IsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDSixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxPQUFPLEVBQUUsQ0FBQztJQUM3QixNQUFNLFVBQVUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsTUFBTSxhQUFhLEdBQUc7UUFDbEIsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzFELEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksRUFBRTtRQUN4QyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7S0FDdkQsQ0FBQztJQUNGLE1BQU0sa0JBQWtCLEdBQUc7UUFDdkIsR0FBRyxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRTtLQUN0RSxDQUFDO0lBQ0YsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM1QixJQUFBLDJCQUFnQixFQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLE1BQU0scUJBQXFCLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLHlCQUF5QixDQUFDLENBQUM7UUFDdkYsTUFBTSx5QkFBeUIsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO1FBQy9FLFlBQUUsQ0FBQyxZQUFZLENBQUMscUJBQXFCLEVBQUUseUJBQXlCLENBQUMsQ0FBQztRQUNsRSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsYUFBYSxDQUFDLE1BQU0sbUJBQW1CLHFCQUFxQixFQUFFLENBQUMsQ0FBQztRQUNuRixHQUFHLENBQUMsSUFBSSxDQUFDLGdDQUFnQyx5QkFBeUIsNkJBQTZCLENBQUMsQ0FBQztRQUNqRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDZixNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZELE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3pELE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDbEIsSUFBQSx1QkFBWSxFQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0QyxJQUFBLG9DQUF5QixFQUFDLFVBQVUsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDNUQsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsVUFBVSxFQUFFLE1BQU0sSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMxSCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0gsTUFBTSxXQUFXLEdBQUcsSUFBSSxtQkFBTyxFQUFFO0tBQzVCLElBQUksQ0FBQyxhQUFhLENBQUM7S0FDbkIsV0FBVyxDQUFDLG1EQUFtRCxDQUFDO0tBQ2hFLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxtREFBbUQsRUFBRSxtQkFBbUIsQ0FBQztLQUN4RyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxDQUFDO0tBQzdFLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxxQ0FBcUMsRUFBRSxJQUFJLENBQUM7S0FDMUUsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQUUsQ0FBQyxZQUFZLENBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsY0FBYyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMzRixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO0lBQzVCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEMsR0FBRyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxZQUFZLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDakcsd0NBQXdDO0lBQ3hDLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUMvQyxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNwQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQyxNQUFNLElBQUEseUNBQTBCLEVBQUMsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3pFLEdBQUcsQ0FBQyxJQUFJLENBQUMsOERBQThELFNBQVMsSUFBSSxDQUFDLENBQUM7QUFDMUYsQ0FBQyxDQUFDLENBQUM7QUFDSCxNQUFNLGNBQWMsR0FBRyxJQUFJLG1CQUFPLEVBQUU7S0FDL0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0tBQ3ZCLFdBQVcsQ0FBQywrQkFBK0IsQ0FBQztLQUM1QyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsNEJBQTRCLENBQUM7S0FDdkQsTUFBTSxDQUFDLGtCQUFrQixFQUFFLGNBQWMsQ0FBQztLQUMxQyxNQUFNLENBQUMsK0JBQStCLEVBQUUsa0VBQWtFLENBQUM7S0FDM0csTUFBTSxDQUFDLDZCQUE2QixFQUFFLHNFQUFzRSxFQUFFLEtBQUssQ0FBQztLQUNwSCxNQUFNLENBQUMsMEJBQTBCLEVBQUUsNEVBQTRFLEVBQUUsY0FBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0tBQ3ZMLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSwwQkFBMEIsRUFBRSx3Q0FBd0MsQ0FBQztLQUNoRyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQzFCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBRSxDQUFDLFlBQVksQ0FBQyxjQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxjQUFjLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzNGLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7SUFDNUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzFDLEdBQUcsQ0FBQyxLQUFLLENBQUMseUJBQXlCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksWUFBWSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2pHLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhO0lBQ3pDLDZEQUE2RDtJQUM3RCxnQkFBZ0IsRUFBRSxpQkFBaUIsR0FBRyxHQUFHLE9BQU8sQ0FBQztJQUNqRCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sU0FBUyxHQUFHLGNBQUksQ0FBQyxPQUFPLENBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDMUUsSUFBSSxRQUFRLENBQUM7SUFDYixJQUFJLENBQUM7UUFDRCxRQUFRLEdBQUcsUUFBUSxDQUFDLFlBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDbEUsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQ2YsUUFBUSxHQUFHLENBQUMsQ0FBQzs7WUFFYixRQUFRLElBQUksQ0FBQyxDQUFDO1FBQ2xCLDZEQUE2RDtJQUNqRSxDQUFDO0lBQ0QsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNQLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUNELEVBQUU7SUFDRiwwQkFBMEI7SUFDMUIsd0NBQXdDO0lBQ3hDLHFCQUFxQjtJQUNyQixJQUFJO0lBQ0osSUFBSSxDQUFDO1FBQ0QsS0FBSyxNQUFNLElBQUksSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUN6QixJQUFBLDhCQUFlLEVBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDNUMsSUFBQSw4QkFBZSxFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM1QixJQUFBLDhCQUFlLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEtBQUssY0FBYztnQkFDL0MsQ0FBQyxDQUFDLGlCQUFpQjtnQkFDbkIsQ0FBQyxDQUFDLHlCQUF5QixFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBQ0QsWUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDVCxHQUFHLENBQUMsS0FBSyxDQUFDLDJCQUEyQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxJQUFBLDhCQUFlLEVBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztBQUNoRSxDQUFDLENBQUMsQ0FBQztBQUNILE1BQU0saUJBQWlCLEdBQUcsSUFBSSxtQkFBTyxFQUFFO0tBQ2xDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztLQUMzQixXQUFXLENBQUMsbURBQW1ELENBQUM7S0FDaEUsTUFBTSxDQUFDLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxvQkFBb0IsQ0FBQztLQUNsRSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsOEJBQThCLEVBQUUsT0FBTyxDQUFDO0tBQ2pFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFFLENBQUMsWUFBWSxDQUFDLGNBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLGNBQWMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDM0YsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztJQUM1QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDOUMsR0FBRyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxZQUFZLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDakcsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDaEMsSUFBQSx3QkFBUSxFQUFDLGFBQWEsR0FBRyxxQkFBcUIsTUFBTSxFQUFFLEVBQUU7UUFDcEQsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUU7S0FDckIsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDLENBQUM7QUFDSCxNQUFNLFlBQVksR0FBRyxJQUFJLG1CQUFPLEVBQUU7S0FDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQztLQUNuQixXQUFXLENBQUMsbUNBQW1DLENBQUM7S0FDaEQsTUFBTSxDQUFDLDBCQUEwQixFQUFFLHlCQUF5QixFQUFFLFNBQVMsQ0FBQztLQUN4RSxNQUFNLENBQUMsd0JBQXdCLEVBQUUscUNBQXFDLEVBQUUsU0FBUyxDQUFDO0tBQ2xGLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDMUIsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUNoRCxNQUFNO2FBQ0QsR0FBRyxDQUFDLGFBQWEsQ0FBQzthQUNsQixLQUFLLENBQUMsNEVBQTRFLENBQUMsQ0FBQztRQUN6RixPQUFPO0lBQ1gsQ0FBQztJQUNELFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNO1FBQzlCLGdDQUFnQztRQUNoQyxJQUFJLFlBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN4QixZQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtnQkFDZCxTQUFTLEVBQUUsSUFBSTtnQkFDZixLQUFLLEVBQUUsSUFBSTthQUNkLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCx1QkFBdUI7UUFDdkIsWUFBRSxDQUFDLFNBQVMsQ0FBQyxjQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQy9CLFNBQVMsRUFBRSxJQUFJO1NBQ2xCLENBQUMsQ0FBQztRQUNILGNBQWM7UUFDZCxZQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7WUFDdEIsU0FBUyxFQUFFLElBQUk7WUFDZixLQUFLLEVBQUUsSUFBSTtTQUNkLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxNQUFNO1dBQzFCLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHLGNBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xELE1BQU0sSUFBSSxHQUFHLGNBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlDLElBQUEsd0JBQVEsRUFBQyxnQ0FBZ0MsRUFBRTtRQUN2QyxHQUFHLEVBQUUsTUFBTTtRQUNYLEtBQUssRUFBRSxTQUFTO0tBQ25CLENBQUMsQ0FBQztJQUNILElBQUEsd0JBQVEsRUFBQyxnREFBZ0QsRUFBRTtRQUN2RCxHQUFHLEVBQUUsTUFBTTtRQUNYLEtBQUssRUFBRSxTQUFTO0tBQ25CLENBQUMsQ0FBQztJQUNILE1BQU0sU0FBUyxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6RCxNQUFNLFNBQVMsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLFVBQVUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDakMsTUFBTSxZQUFZLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDeEcsTUFBTSxlQUFlLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2hFLFlBQUUsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFO1FBQzFCLFNBQVMsRUFBRSxJQUFJO0tBQ2xCLENBQUMsQ0FBQztJQUNILEtBQUssTUFBTSxJQUFJLElBQUksWUFBRSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQzlDLE1BQU0sVUFBVSxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pELE1BQU0sVUFBVSxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BELHdDQUF3QztRQUN4QyxJQUFJLFlBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUM1QixZQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRTtnQkFDbEIsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsS0FBSyxFQUFFLElBQUk7YUFDZCxDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsWUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFO1lBQzlCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsS0FBSyxFQUFFLElBQUk7U0FDZCxDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsVUFBVTtXQUM5QixVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUFBLHdCQUFRLEVBQUMsNkJBQTZCLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLElBQUEsd0JBQVEsRUFBQyw4Q0FBOEMsRUFBRTtRQUNyRCxHQUFHLEVBQUUsSUFBSTtRQUNULEtBQUssRUFBRSxTQUFTO0tBQ25CLENBQUMsQ0FBQztJQUNILElBQUEsd0JBQVEsRUFBQywyQkFBMkIsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDdkUsSUFBQSx3QkFBUSxFQUFDLHNDQUFzQyxFQUFFO1FBQzdDLEdBQUcsRUFBRSxJQUFJO1FBQ1QsS0FBSyxFQUFFLFNBQVM7S0FDbkIsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDLENBQUM7QUFDSCxNQUFNLFNBQVMsR0FBRyxJQUFJLG1CQUFPLEVBQUU7S0FDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQztLQUNsQixPQUFPLENBQUMsUUFBUSxDQUFDO0tBQ2pCLFdBQVcsQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDO0FBQ3RGLFNBQVMsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDckMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUNyQyxTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ2xDLFNBQVMsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDckMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3hDLFNBQVMsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUN6QyxTQUFTLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ25DLFNBQXdCLE1BQU07SUFDMUIsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQztBQUNELHN2OUVBQXN2OUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuaW1wb3J0IHsgTG9nZ2luZywgdG9QYXNjYWxDYXNlIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5pbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgYnVpbHRpbk1vZHVsZXMsIGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCB7IHJvbGx1cCB9IGZyb20gXCJyb2xsdXBcIjtcbmltcG9ydCBjb21tb25qcyBmcm9tIFwiQHJvbGx1cC9wbHVnaW4tY29tbW9uanNcIjtcbmltcG9ydCB7IG5vZGVSZXNvbHZlIH0gZnJvbSBcIkByb2xsdXAvcGx1Z2luLW5vZGUtcmVzb2x2ZVwiO1xuaW1wb3J0IHJlcGxhY2UgZnJvbSBcIkByb2xsdXAvcGx1Z2luLXJlcGxhY2VcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IsIFNlcmlhbGl6YXRpb25FcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgZ2VuZXJhdGVNb2RlbERlc2lnbkRvY3MsIGdlbmVyYXRlTW9kZWxJbmRleGVzLCByZWFkTW9kZWxGaWxlLCByZWFkTW9kZWxGb2xkZXJzLCB3cml0ZURlc2lnbkRvY3MsIHdyaXRlSW5kZXhlcywgfSBmcm9tIFwiLi9jbGllbnQvaW5kZXhlcy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBhcHByb3ZlQ29udHJhY3QsIGVuc3VyZUluZnJhc3RydWN0dXJlQm9vdGVkLCBpbnN0YWxsQ29udHJhY3QsIHBhY2thZ2VDb250cmFjdCwgY29tbWl0Q2hhaW5jb2RlLCBnZXRDb250cmFjdFN0YXJ0Q29tbWFuZCwgY29tcGlsZVdpdGhUc2NvbmZpZ092ZXJyaWRlcywgfSBmcm9tIFwiLi9jbGktdXRpbHMuanNcIjtcbmltcG9ydCBcIi4vc2hhcmVkL292ZXJyaWRlcy9pbmRleC5qc1wiO1xuaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBleHRyYWN0Q29sbGVjdGlvbnMgYXMgZXhDb2xsZWN0aW9ucywgd3JpdGVDb2xsZWN0aW9ucywgd3JpdGVDb2xsZWN0aW9uRGVzaWduRG9jcywgfSBmcm9tIFwiLi9jbGllbnQvY29sbGVjdGlvbnMvaW5kZXguanNcIjtcbmNvbnN0IGxvZ2dlciA9IExvZ2dpbmcuZm9yKFwiZmFicmljXCIpO1xuZnVuY3Rpb24gcmVzb2x2ZUJ1bmRsZWRKc0ltcG9ydHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogXCJyZXNvbHZlLWJ1bmRsZWQtanMtaW1wb3J0c1wiLFxuICAgICAgICByZXNvbHZlSWQoc291cmNlLCBpbXBvcnRlcikge1xuICAgICAgICAgICAgaWYgKCFpbXBvcnRlciB8fCAhc291cmNlLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZXNvbHZlZFBhdGggPSBwYXRoLnJlc29sdmUocGF0aC5kaXJuYW1lKGltcG9ydGVyKSwgc291cmNlKTtcbiAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBbXG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRQYXRoLFxuICAgICAgICAgICAgICAgIGAke3Jlc29sdmVkUGF0aH0uanNgLFxuICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvbHZlZFBhdGgsIFwiaW5kZXguanNcIiksXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBjYW5kaWRhdGUgb2YgY2FuZGlkYXRlcykge1xuICAgICAgICAgICAgICAgIGlmIChmcy5leGlzdHNTeW5jKGNhbmRpZGF0ZSkgJiYgZnMuc3RhdFN5bmMoY2FuZGlkYXRlKS5pc0ZpbGUoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9LFxuICAgIH07XG59XG5mdW5jdGlvbiByZXNvbHZlRGVjYWZQYWNrYWdlSW1wb3J0cygpIHtcbiAgICBjb25zdCBjb250cmFjdFJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcInBhY2thZ2UuanNvblwiKSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogXCJyZXNvbHZlLWRlY2FmLXBhY2thZ2UtaW1wb3J0c1wiLFxuICAgICAgICByZXNvbHZlSWQoc291cmNlKSB7XG4gICAgICAgICAgICBpZiAoIXNvdXJjZS5zdGFydHNXaXRoKFwiQGRlY2FmLXRzL1wiKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29udHJhY3RSZXF1aXJlLnJlc29sdmUoc291cmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9O1xufVxuY29uc3QgZmFicmljUGVlckRlcGVuZGVuY2llcyA9IG5ldyBTZXQoW1xuICAgIFwiQGdycGMvZ3JwYy1qc1wiLFxuICAgIFwiQGh5cGVybGVkZ2VyL2ZhYnJpYy1nYXRld2F5XCIsXG4gICAgXCJAcGVjdWxpYXIvd2ViY3J5cHRvXCIsXG4gICAgXCJmYWJyaWMtY2EtY2xpZW50XCIsXG4gICAgXCJmYWJyaWMtY29tbW9uXCIsXG4gICAgXCJmYWJyaWMtY29udHJhY3QtYXBpXCIsXG4gICAgXCJmYWJyaWMtbmV0d29ya1wiLFxuICAgIFwiZmFicmljLXNoaW1cIixcbiAgICBcImZhYnJpYy1zaGltLWFwaVwiLFxuXSk7XG5mdW5jdGlvbiBpc05vZGVCdWlsdGluKGlkKSB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IGlkLnN0YXJ0c1dpdGgoXCJub2RlOlwiKSA/IGlkLnNsaWNlKDUpIDogaWQ7XG4gICAgcmV0dXJuIGJ1aWx0aW5Nb2R1bGVzLmluY2x1ZGVzKG5vcm1hbGl6ZWQpO1xufVxuZnVuY3Rpb24gc2hvdWxkQnVuZGxlQ29udHJhY3RNb2R1bGUoaWQpIHtcbiAgICBpZiAoaWQuc3RhcnRzV2l0aChcIi5cIikgfHwgcGF0aC5pc0Fic29sdXRlKGlkKSlcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgaWYgKGlkLnN0YXJ0c1dpdGgoXCJAZGVjYWYtdHMvXCIpKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoZmFicmljUGVlckRlcGVuZGVuY2llcy5oYXMoaWQpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGlzTm9kZUJ1aWx0aW4oaWQpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBub3JtYWxpemVTaWRlRWZmZWN0UGF0aChpbnB1dCkge1xuICAgIHJldHVybiBpbnB1dC5zcGxpdChwYXRoLnNlcCkuam9pbihcIi9cIik7XG59XG5mdW5jdGlvbiBidWlsZFNpZGVFZmZlY3RNYXRjaGVyKGV4dHJhUGF0aHMpIHtcbiAgICBjb25zdCBub3JtYWxpemVkRXh0cmFzID0gZXh0cmFQYXRocy5tYXAoKGV4dHJhUGF0aCkgPT4ge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplU2lkZUVmZmVjdFBhdGgoZXh0cmFQYXRoLnRyaW0oKSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByYXc6IG5vcm1hbGl6ZWQsXG4gICAgICAgICAgICByZXNvbHZlZDogcGF0aC5pc0Fic29sdXRlKGV4dHJhUGF0aClcbiAgICAgICAgICAgICAgICA/IG5vcm1hbGl6ZVNpZGVFZmZlY3RQYXRoKHBhdGgucmVzb2x2ZShleHRyYVBhdGgpKVxuICAgICAgICAgICAgICAgIDogbm9ybWFsaXplU2lkZUVmZmVjdFBhdGgocGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIGV4dHJhUGF0aCkpLFxuICAgICAgICB9O1xuICAgIH0pO1xuICAgIHJldHVybiAoaWQpID0+IHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVNpZGVFZmZlY3RQYXRoKGlkKTtcbiAgICAgICAgY29uc3QgYnVpbHRJbnMgPSBbXG4gICAgICAgICAgICBcIi9zcmMvY29udHJhY3RzL2Jvb3RzdHJhcFwiLFxuICAgICAgICAgICAgXCIvc3JjL2NvbnRyYWN0cy9vdmVycmlkZXNcIixcbiAgICAgICAgICAgIFwiL3NyYy9jb250cmFjdHMvZmFicmljLW92ZXJyaWRlc1wiLFxuICAgICAgICAgICAgXCIvc3JjL3NoYXJlZC9vdmVycmlkZXNcIixcbiAgICAgICAgICAgIFwiL25vZGVfbW9kdWxlcy9AZGVjYWYtdHMvXCIsXG4gICAgICAgIF07XG4gICAgICAgIGlmIChidWlsdElucy5zb21lKChuZWVkbGUpID0+IG5vcm1hbGl6ZWQuaW5jbHVkZXMobmVlZGxlKSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub3JtYWxpemVkRXh0cmFzLnNvbWUoKHsgcmF3LCByZXNvbHZlZCB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKG5vcm1hbGl6ZWQuaW5jbHVkZXMocmF3KSB8fFxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQuaW5jbHVkZXMocmVzb2x2ZWQpIHx8XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplZC5lbmRzV2l0aChgJHtyYXd9LmpzYCkgfHxcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkLmVuZHNXaXRoKGAke3Jhd30uY2pzYCkgfHxcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkLmVuZHNXaXRoKGAke3Jhd30vaW5kZXguanNgKSB8fFxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQuZW5kc1dpdGgoYCR7cmF3fS9pbmRleC5janNgKSB8fFxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQuZW5kc1dpdGgoYCR7cmVzb2x2ZWR9LmpzYCkgfHxcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkLmVuZHNXaXRoKGAke3Jlc29sdmVkfS5janNgKSB8fFxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQuZW5kc1dpdGgoYCR7cmVzb2x2ZWR9L2luZGV4LmpzYCkgfHxcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkLmVuZHNXaXRoKGAke3Jlc29sdmVkfS9pbmRleC5janNgKSk7XG4gICAgICAgIH0pO1xuICAgIH07XG59XG5mdW5jdGlvbiByZW1vdmVTcmNGcm9tUGF0aChwYXRoKSB7XG4gICAgcmV0dXJuIHBhdGgucmVwbGFjZSgvXlxcLlxcL3NyY1xcLy8sIFwiLi9cIik7XG59XG5mdW5jdGlvbiBjb3B5Rm9sZGVyQ29udGVudHMoc291cmNlRGlyLCB0YXJnZXREaXIpIHtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoc291cmNlRGlyKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNvdXJjZSBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3Q6ICR7c291cmNlRGlyfWApO1xuICAgIH1cbiAgICBmcy5ta2RpclN5bmModGFyZ2V0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZnMucmVhZGRpclN5bmMoc291cmNlRGlyKSkge1xuICAgICAgICBjb25zdCBzb3VyY2VQYXRoID0gcGF0aC5qb2luKHNvdXJjZURpciwgaXRlbSk7XG4gICAgICAgIGNvbnN0IHRhcmdldFBhdGggPSBwYXRoLmpvaW4odGFyZ2V0RGlyLCBpdGVtKTtcbiAgICAgICAgY29uc3Qgc3RhdCA9IGZzLnN0YXRTeW5jKHNvdXJjZVBhdGgpO1xuICAgICAgICBpZiAoc3RhdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICBjb3B5Rm9sZGVyQ29udGVudHMoc291cmNlUGF0aCwgdGFyZ2V0UGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmcy5jb3B5RmlsZVN5bmMoc291cmNlUGF0aCwgdGFyZ2V0UGF0aCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5jb25zdCBjb21waWxlQ29tbWFuZCA9IG5ldyBDb21tYW5kKClcbiAgICAubmFtZShcImNvbXBpbGUtY29udHJhY3RcIilcbiAgICAuZGVzY3JpcHRpb24oXCJDcmVhdGVzIGEgZ2xvYmFsIGNvbnRyYWN0XCIpXG4gICAgLm9wdGlvbihcIi0tZGV2XCIsIFwiY29tcGlsZXMgY29udHJhY3RzIHdpdGhvdXQgbWluaWZpY2F0aW9uXCIsIGZhbHNlKVxuICAgIC5vcHRpb24oXCItLWRlYnVnXCIsIFwibWFrZXMgYXR0YWNoaW5nIGRlYnVnZ2VyIHBvc3NpYmxlXCIsIGZhbHNlKVxuICAgIC5vcHRpb24oXCItLWNjYWFzXCIsIFwiQWp1c3RzIHRoZSBwYWNrYWdlIGNvbW1hbmRzIHRvIGJlIGRlcGxveWVkIGFzIGNjYWFzXCIsIGZhbHNlKVxuICAgIC5vcHRpb24oXCItLW5hbWUgPFN0cmluZz5cIiwgXCJjb250cmFjdCBuYW1lXCIsIFwiZ2xvYmFsLWNvbnRyYWN0XCIpXG4gICAgLm9wdGlvbihcIi0tYnVuZGxlXCIsIFwiQnVuZGxlcyB3aXRoIHJvbGx1cCBpbnN0ZWFkIG9mIHVzaW5nIHRzY1wiLCBmYWxzZSlcbiAgICAub3B0aW9uKFwiLS10cy1jb25maWctZmlsZSA8c3RyaW5nPlwiLCBcInJlbGF0aXZlIHBhdGggdG8gdGhlIHRzIGNvbmZpZyBmaWxlIGJhc2VkIG9uIGN3ZCBvciBhYnNvbHV0ZSBwYXRoXCIsIFwiLi90c2NvbmZpZy5qc29uXCIpXG4gICAgLm9wdGlvbihcIi0tZGVzY3JpcHRpb24gPFN0cmluZz5cIiwgXCJjb250cmFjdCBkZXNjcmlwdGlvblwiLCBcIkdsb2JhbCBjb250cmFjdCBpbXBsZW1lbnRhdGlvblwiKVxuICAgIC5vcHRpb24oXCItLXN0cmlwLWNvbnRyYWN0LW5hbWVcIiwgXCJzdHJpcCBjb250cmFjdCBuYW1lIGZyb20gb3V0cHV0XCIsIGZhbHNlKVxuICAgIC5vcHRpb24oXCItLWlucHV0IDxTdHJpbmc+XCIsIFwiaW5wdXQgZm9sZGVyIGZvciBjb250cmFjdHNcIiwgXCJsaWIvY29udHJhY3RzXCIpXG4gICAgLm9wdGlvbihcIi0tb3V0cHV0IDxTdHJpbmc+XCIsIFwib3V0cHV0IGZvbGRlciBmb3IgY29udHJhY3RzXCIsIFwiLi9jb250cmFjdHNcIilcbiAgICAub3B0aW9uKFwiLS1zb3VyY2VtYXBzXCIsIFwiaW5jbHVkZXMgc291cmNlbWFwcyBpbiB0aGUgY29tcGlsZWQgb3V0cHV0XCIsIGZhbHNlKVxuICAgIC5vcHRpb24oXCItLW5wbXJjXCIsIFwiaW5jbHVkZXMgLm5wbXJjIGluIHRoZSBjb21waWxlZCBvdXRwdXRcIiwgZmFsc2UpXG4gICAgLm9wdGlvbihcIi0tZnJvbS1saWJcIiwgXCJpbmRpY2F0ZXMgdGhhdCB0aGUgY29udHJhY3QgdG8gZGVwbG95IGlzIGxvY2F0ZWQgaW4gdGhlIGxpYiBmb2xkZXIgYW5kIG5vdCBwcmUtY29tcGlsZWQgaW4gdGhlIGNvbnRyYWN0cyBmb2xkZXJcIiwgZmFsc2UpXG4gICAgLm9wdGlvbihcIi0tc2lkZS1lZmZlY3QtcGF0aHMgPHBhdGhzLi4uPlwiLCBcImFkZGl0aW9uYWwgcGF0aHMgb3IgcGFja2FnZSByb290cyB0aGF0IG11c3QgYmUgcHJlc2VydmVkIGFzIHNpZGUtZWZmZWN0ZnVsIGR1cmluZyBjb250cmFjdCBidW5kbGluZ1wiKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBwa2cgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJwYWNrYWdlLmpzb25cIiksIFwidXRmLThcIikpO1xuICAgIGNvbnN0IHBrZ0xvY2sgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJwYWNrYWdlLWxvY2suanNvblwiKSwgXCJ1dGYtOFwiKSk7XG4gICAgbGV0IG5wbXJjQ29udGVudCA9IHVuZGVmaW5lZDtcbiAgICBjb25zdCB2ZXJzaW9uID0gcGtnLnZlcnNpb247XG4gICAgbGV0IHsgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGRldiwgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGRlYnVnLCBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgbmFtZSwgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGRlc2NyaXB0aW9uLCBvdXRwdXQsIFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICBpbnB1dCwgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIHN0cmlwQ29udHJhY3ROYW1lLCBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgY2NhYXMsIFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICBidW5kbGUsIHRzQ29uZmlnRmlsZSwgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIHNvdXJjZW1hcHMsIFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICBucG1yYywgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIHNpZGVFZmZlY3RQYXRocywgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGZyb21MaWIsIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGxvZyA9IGxvZ2dlci5mb3IoXCJjb21waWxlLWNvbnRyYWN0XCIpO1xuICAgIHRyeSB7XG4gICAgICAgIGlmIChucG1yYykge1xuICAgICAgICAgICAgbnBtcmNDb250ZW50ID0gZnNcbiAgICAgICAgICAgICAgICAucmVhZEZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcIi5ucG1yY1wiKSwgXCJ1dGYtOFwiKVxuICAgICAgICAgICAgICAgIC50b1N0cmluZygpO1xuICAgICAgICAgICAgY29uc3QgcmVwbGFjZWQgPSBucG1yY0NvbnRlbnQucmVwbGFjZSgvXFwkXFx7KFtefV0rKVxcfS9nLCAoXywgdmFyTmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcHJvY2Vzcy5lbnZbdmFyTmFtZV07XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBXYXJuaW5nOiBFbnZpcm9ubWVudCB2YXJpYWJsZSBcIiR7dmFyTmFtZX1cIiBpcyBub3Qgc2V0YCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG5wbXJjQ29udGVudCA9IHJlcGxhY2VkO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoIHtcbiAgICAgICAgbG9nLmluZm8oYE5vIC5ucG1yYyBmaWxlIGZvdW5kLCBza2lwcGluZyBjb3B5aW5nIC5ucG1yYyB0byBvdXRwdXRgKTtcbiAgICB9XG4gICAgbG9nLmRlYnVnKGBydW5uaW5nIHdpdGggb3B0aW9uczogJHtKU09OLnN0cmluZ2lmeShvcHRpb25zKX0gZm9yICR7cGtnLm5hbWV9IHZlcnNpb24gJHt2ZXJzaW9ufWApO1xuICAgIHRzQ29uZmlnRmlsZSA9IHBhdGguaXNBYnNvbHV0ZSh0c0NvbmZpZ0ZpbGUpXG4gICAgICAgID8gdHNDb25maWdGaWxlXG4gICAgICAgIDogcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIHRzQ29uZmlnRmlsZSk7XG4gICAgb3V0cHV0ID0gc3RyaXBDb250cmFjdE5hbWUgPyBvdXRwdXQgOiBwYXRoLmpvaW4ob3V0cHV0LCBuYW1lKTtcbiAgICBsb2cuaW5mbyhgRGVsZXRpbmcgZXhpc3Rpbmcgb3V0cHV0IGZvbGRlciAoaWYgZXhpc3RzKSB1bmRlciAke291dHB1dH1gKTtcbiAgICBleGVjU3luYyhgcm0gLXJmICR7b3V0cHV0fWApO1xuICAgIGlmIChidW5kbGUgJiYgIWZyb21MaWIpIHtcbiAgICAgICAgY29uc3Qgc2lkZUVmZmVjdE1hdGNoZXIgPSBidWlsZFNpZGVFZmZlY3RNYXRjaGVyKEFycmF5LmlzQXJyYXkoc2lkZUVmZmVjdFBhdGhzKSA/IHNpZGVFZmZlY3RQYXRocyA6IFtdKTtcbiAgICAgICAgbG9nLmluZm8oYGJ1bmRsaW5nIGNvbnRyYWN0IGZyb20gJHtpbnB1dH1gKTtcbiAgICAgICAgY29uc3QgdGVtcEJ1bmRsZURpciA9IGZzLm1rZHRlbXBTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcIi5jb250cmFjdC1idW5kbGUtXCIpKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0RW50cnkgPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgaW5wdXQsIFwiaW5kZXgudHNcIik7XG4gICAgICAgICAgICBjb25zdCBjb25maWdGaWxlID0gdHMucmVhZENvbmZpZ0ZpbGUodHNDb25maWdGaWxlLCB0cy5zeXMucmVhZEZpbGUpO1xuICAgICAgICAgICAgaWYgKGNvbmZpZ0ZpbGUuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcih0cy5mbGF0dGVuRGlhZ25vc3RpY01lc3NhZ2VUZXh0KGNvbmZpZ0ZpbGUuZXJyb3IubWVzc2FnZVRleHQsIFwiXFxuXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZENvbmZpZyA9IHRzLnBhcnNlSnNvbkNvbmZpZ0ZpbGVDb250ZW50KGNvbmZpZ0ZpbGUuY29uZmlnLCB0cy5zeXMsIHBhdGguZGlybmFtZSh0c0NvbmZpZ0ZpbGUpLCB1bmRlZmluZWQsIHRzQ29uZmlnRmlsZSk7XG4gICAgICAgICAgICBpZiAocGFyc2VkQ29uZmlnLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihwYXJzZWRDb25maWcuZXJyb3JzXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGVycm9yKSA9PiB0cy5mbGF0dGVuRGlhZ25vc3RpY01lc3NhZ2VUZXh0KGVycm9yLm1lc3NhZ2VUZXh0LCBcIlxcblwiKSlcbiAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCJcXG5cIikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdGVtcENvbXBpbGVyT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAuLi5wYXJzZWRDb25maWcub3B0aW9ucyxcbiAgICAgICAgICAgICAgICBvdXREaXI6IHRlbXBCdW5kbGVEaXIsXG4gICAgICAgICAgICAgICAgbW9kdWxlOiB0cy5Nb2R1bGVLaW5kLkVTTmV4dCxcbiAgICAgICAgICAgICAgICBkZWNsYXJhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgc291cmNlTWFwOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpbmxpbmVTb3VyY2VzOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBidW5kbGVkRW50cnlQb2ludCA9IHRzXG4gICAgICAgICAgICAgICAgLmdldE91dHB1dEZpbGVOYW1lcyh7XG4gICAgICAgICAgICAgICAgLi4ucGFyc2VkQ29uZmlnLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRlbXBDb21waWxlck9wdGlvbnMsXG4gICAgICAgICAgICB9LCBpbnB1dEVudHJ5LCAhdHMuc3lzLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXMpXG4gICAgICAgICAgICAgICAgLmZpbmQoKGZpbGVOYW1lKSA9PiBmaWxlTmFtZS5lbmRzV2l0aChcIi5qc1wiKSk7XG4gICAgICAgICAgICBpZiAoIWJ1bmRsZWRFbnRyeVBvaW50KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYEZhaWxlZCB0byBkZXRlcm1pbmUgdGhlIGVtaXR0ZWQgYnVuZGxlIGVudHJ5IGZvciAke2lucHV0RW50cnl9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb21waWxlV2l0aFRzY29uZmlnT3ZlcnJpZGVzKHRzQ29uZmlnRmlsZSwgdGVtcENvbXBpbGVyT3B0aW9ucyk7XG4gICAgICAgICAgICBjb25zdCBidW5kbGVkQ29udHJhY3QgPSBhd2FpdCByb2xsdXAoe1xuICAgICAgICAgICAgICAgIGlucHV0OiBidW5kbGVkRW50cnlQb2ludCxcbiAgICAgICAgICAgICAgICBleHRlcm5hbDogKGlkKSA9PiAhc2hvdWxkQnVuZGxlQ29udHJhY3RNb2R1bGUoaWQpLFxuICAgICAgICAgICAgICAgIHRyZWVzaGFrZToge1xuICAgICAgICAgICAgICAgICAgICBtb2R1bGVTaWRlRWZmZWN0czogKGlkKSA9PiBzaWRlRWZmZWN0TWF0Y2hlcihpZCksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwbHVnaW5zOiBbXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVEZWNhZlBhY2thZ2VJbXBvcnRzKCksXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVCdW5kbGVkSnNJbXBvcnRzKCksXG4gICAgICAgICAgICAgICAgICAgIG5vZGVSZXNvbHZlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnM6IFtcIi5tanNcIiwgXCIuanNcIiwgXCIuanNvblwiLCBcIi5janNcIiwgXCIudHNcIl0sXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVEaXJlY3RvcmllczogW1wibm9kZV9tb2R1bGVzXCJdLFxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlUGF0aHM6IFtwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJub2RlX21vZHVsZXNcIildLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0Q29uZGl0aW9uczogW1wibm9kZVwiLCBcImRlZmF1bHRcIiwgXCJyZXF1aXJlXCIsIFwiaW1wb3J0XCJdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZmVyQnVpbHRpbnM6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBjb21tb25qcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlOiAvbm9kZV9tb2R1bGVzLyxcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIHJlcGxhY2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmVudEFzc2lnbm1lbnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxpbWl0ZXJzOiBbXCJcIiwgXCJcIl0sXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IHsgXCIjI1ZFUlNJT04jI1wiOiB2ZXJzaW9uLCBcIiMjUEFDS0FHRSMjXCI6IHBrZy5uYW1lIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGxvZy5pbmZvKGB3aXRoaW5nIGNvbnRyYWN0IHRvICR7b3V0cHV0fSB3aXRoIG5hbWUgJHt0b1Bhc2NhbENhc2UobmFtZSl9LmpzYCk7XG4gICAgICAgICAgICBhd2FpdCBidW5kbGVkQ29udHJhY3Qud3JpdGUoe1xuICAgICAgICAgICAgICAgIGZpbGU6IGAke291dHB1dH0vJHt0b1Bhc2NhbENhc2UobmFtZSl9LmpzYCxcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IFwidW1kXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogYCR7dG9QYXNjYWxDYXNlKG5hbWUpfS5qc2AsXG4gICAgICAgICAgICAgICAgc291cmNlbWFwOiBzb3VyY2VtYXBzID8gXCJpbmxpbmVcIiA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNvdXJjZW1hcFBhdGhUcmFuc2Zvcm06IChyZWxhdGl2ZVNvdXJjZVBhdGgsIHNvdXJjZW1hcFBhdGgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWJzb2x1dGVTb3VyY2VQYXRoID0gcGF0aC5yZXNvbHZlKHBhdGguZGlybmFtZShzb3VyY2VtYXBQYXRoKSwgcmVsYXRpdmVTb3VyY2VQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFic29sdXRlU291cmNlUGF0aC5zdGFydHNXaXRoKHRlbXBCdW5kbGVEaXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0aC5wb3NpeC5qb2luKFwiLmJ1bmRsZVwiLCBwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlbGF0aXZlKHRlbXBCdW5kbGVEaXIsIGFic29sdXRlU291cmNlUGF0aClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3BsaXQocGF0aC5zZXApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCIvXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVsYXRpdmVTb3VyY2VQYXRoO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGF3YWl0IGJ1bmRsZWRDb250cmFjdC5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgZnMucm1TeW5jKHRlbXBCdW5kbGVEaXIsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICghZnJvbUxpYikge1xuICAgICAgICBjb21waWxlV2l0aFRzY29uZmlnT3ZlcnJpZGVzKHRzQ29uZmlnRmlsZSwge1xuICAgICAgICAgICAgb3V0RGlyOiBvdXRwdXQsXG4gICAgICAgICAgICBtb2R1bGU6IHRzLk1vZHVsZUtpbmQuRVNOZXh0LFxuICAgICAgICAgICAgZGVjbGFyYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgc291cmNlTWFwOiBzb3VyY2VtYXBzLFxuICAgICAgICAgICAgaW5saW5lU291cmNlczogc291cmNlbWFwcyxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb3B5Rm9sZGVyQ29udGVudHMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwiLi9saWIvY2pzXCIpLCBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgb3V0cHV0KSk7XG4gICAgfVxuICAgIGNvbnN0IHNjcmlwdHMgPSB7XG4gICAgICAgIHN0YXJ0OiBnZXRDb250cmFjdFN0YXJ0Q29tbWFuZChkZWJ1ZywgY2NhYXMpLFxuICAgICAgICBcInN0YXJ0OmRldlwiOiBcImZhYnJpYy1jaGFpbmNvZGUtbm9kZSBzdGFydCAtLXRscy5lbmFibGVkIGZhbHNlXCIsXG4gICAgICAgIFwic3RhcnQ6d2F0Y2hcIjogJ25vZGVtb24gLS1leGVjIFwibnBtIHJ1biBzdGFydDpkZXZcIicsXG4gICAgICAgIGJ1aWxkOiAnZWNobyBcIk5vIG5lZWQgdG8gYnVpbGQgdGhlIGNoYWluY29kZVwiJyxcbiAgICAgICAgbGludDogXCJlc2xpbnQgLiAtLWZpeCAtLWV4dCAuanNcIixcbiAgICB9O1xuICAgIGNvbnN0IGNvbnRyYWN0UGFja2FnZSA9IHBrZztcbiAgICBjb25zdCBjb250cmFjdFBhY2thZ2VMb2NrID0gcGtnTG9jaztcbiAgICBjb250cmFjdFBhY2thZ2UubmFtZSA9IG5hbWU7XG4gICAgY29udHJhY3RQYWNrYWdlLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XG4gICAgY29udHJhY3RQYWNrYWdlLnNjcmlwdHMgPSBzY3JpcHRzO1xuICAgIGRlbGV0ZSBjb250cmFjdFBhY2thZ2UudHlwZTtcbiAgICBkZWxldGUgY29udHJhY3RQYWNrYWdlLnR5cGVzO1xuICAgIGRlbGV0ZSBjb250cmFjdFBhY2thZ2UuZXhwb3J0cztcbiAgICBjb250cmFjdFBhY2thZ2UubWFpbiA9IGJ1bmRsZVxuICAgICAgICA/IGAke3RvUGFzY2FsQ2FzZShuYW1lKX0uanNgXG4gICAgICAgIDogYCR7cmVtb3ZlU3JjRnJvbVBhdGgoaW5wdXQpfS8ke2Zyb21MaWIgPyBcImluZGV4LmNqc1wiIDogXCJpbmRleC5qc1wifWA7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4ob3V0cHV0LCBcInBhY2thZ2UuanNvblwiKSwgSlNPTi5zdHJpbmdpZnkoY29udHJhY3RQYWNrYWdlKSk7XG4gICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4ob3V0cHV0LCBcInBhY2thZ2UtbG9jay5qc29uXCIpLCBKU09OLnN0cmluZ2lmeShjb250cmFjdFBhY2thZ2VMb2NrKSk7XG4gICAgaWYgKG5wbXJjICYmIG5wbXJjQ29udGVudClcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4ob3V0cHV0LCBcIi5ucG1yY1wiKSwgbnBtcmNDb250ZW50KTtcbiAgICBsb2cuaW5mbyhgSW5zdGFsbGluZyBhbmQgc2hyaW5rd3JhcHBpbmcgZGVwZW5kZW5jaWVzYCk7XG4gICAgZXhlY1N5bmMoYG5wbSBpbnN0YWxsYCwgeyBjd2Q6IG91dHB1dCB9KTtcbiAgICBleGVjU3luYyhgbnBtIHNocmlua3dyYXBgLCB7IGN3ZDogb3V0cHV0IH0pO1xuICAgIGV4ZWNTeW5jKFwicm0gLXJmIG5vZGVfbW9kdWxlc1wiLCB7IGN3ZDogb3V0cHV0IH0pO1xuICAgIGxvZy5pbmZvKGBkZWxldGluZyB0ZW1wIGZvbGRlcnNgKTtcbiAgICBleGVjU3luYyhgcm0gLXJmIC4vbGliICYmIHJtIC1yZiAuL2Rpc3RgLCB7IGN3ZDogb3V0cHV0IH0pO1xuICAgIGxvZy5pbmZvKGBDb250cmFjdCAke25hbWV9IGNvbXBpbGVkIHN1Y2Nlc3NmdWxseSEgaW4gJHtwYXRoLnJlc29sdmUob3V0cHV0KX1gKTtcbiAgICBpZiAoZGV2KSB7XG4gICAgICAgIGxvZy5pbmZvKGBkZXYgbW9kZSBlbmFibGVkLiBpbnN0YWxsaW5nIGRlcGVuZGVuY2llcyBmb3IgZGVidWdnaW5nYCk7XG4gICAgICAgIGV4ZWNTeW5jKGBucG0gaW5zdGFsbGAsIHtcbiAgICAgICAgICAgIGN3ZDogb3V0cHV0LFxuICAgICAgICAgICAgZW52OiB7IC4uLnByb2Nlc3MuZW52LCBOT0RFX0VOVjogXCJwcm9kdWN0aW9uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgfVxufSk7XG5jb25zdCBleHRyYWN0SW5kZXhlcyA9IG5ldyBDb21tYW5kKClcbiAgICAuY29tbWFuZChcImV4dHJhY3QtaW5kZXhlc1wiKVxuICAgIC5vcHRpb24oXCItLWZpbGUgW1N0cmluZ11cIiwgXCJ0aGUgbW9kZWwgZmlsZVwiKVxuICAgIC5vcHRpb24oXCItLWZvbGRlciBbU3RyaW5nXVwiLCBcInRoZSBtb2RlbCBmb2xkZXJcIilcbiAgICAub3B0aW9uKFwiLS1vdXREaXIgPFN0cmluZz5cIiwgXCJ0aGUgb3V0ZGlyLiBzaG91bGQgbWF0Y2ggeW91ciBjb250cmFjdCBmb2xkZXJcIilcbiAgICAuZGVzY3JpcHRpb24oXCJDcmVhdGVzIGEgdGhlIEpTT04gaW5kZXggZmlsZXMgdG8gYmUgc3VibWl0dGVkIHRvIGFsb25nIHdpdGggdGhlIGNvbnRyYWN0XCIpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHBrZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcInBhY2thZ2UuanNvblwiKSwgXCJ1dGYtOFwiKSk7XG4gICAgY29uc3QgdmVyc2lvbiA9IHBrZy52ZXJzaW9uO1xuICAgIGNvbnN0IGxvZyA9IGxvZ2dlci5mb3IoXCJleHRyYWN0LWluZGV4ZXNcIik7XG4gICAgbG9nLmRlYnVnKGBydW5uaW5nIHdpdGggb3B0aW9uczogJHtKU09OLnN0cmluZ2lmeShvcHRpb25zKX0gZm9yICR7cGtnLm5hbWV9IHZlcnNpb24gJHt2ZXJzaW9ufWApO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICBsZXQgeyBmaWxlLCBmb2xkZXIsIG91dERpciB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBtb2RlbHMgPSBbXTtcbiAgICBpZiAoZmlsZSkge1xuICAgICAgICBtb2RlbHMucHVzaCguLi5yZWFkTW9kZWxGaWxlKGZpbGUpKTtcbiAgICB9XG4gICAgaWYgKGZvbGRlcikge1xuICAgICAgICBsb2cuaW5mbyhgTG9hZGluZyBtb2RlbHMgZnJvbSAke2ZvbGRlcn0uLi5gKTtcbiAgICAgICAgbW9kZWxzLnB1c2goLi4uKGF3YWl0IHJlYWRNb2RlbEZvbGRlcnMoZm9sZGVyKSkpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBjb25zdCBkZXNpZ25Eb2NzID0ge307XG4gICAgaWYgKCFmaWxlICYmICFmb2xkZXIpXG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBNdXN0IHBhc3MgYSBmaWxlIG9yIGEgZm9sZGVyYCk7XG4gICAgZm9yIChjb25zdCBtIG9mIG1vZGVscykge1xuICAgICAgICBsb2cudmVyYm9zZShgRXh0cmFjdGluZyBpbmRleGVzIGZvciB0YWJsZSAke01vZGVsLnRhYmxlTmFtZShtKX1gKTtcbiAgICAgICAgY29uc3QgaW5kZXhlcyA9IGdlbmVyYXRlTW9kZWxJbmRleGVzKG0pO1xuICAgICAgICBpbmRleGVzLmZvckVhY2goKGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5kZXgubmFtZSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtpbmRleC5uYW1lXSA9IGluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgZ2VuZXJhdGVNb2RlbERlc2lnbkRvY3MobSwgZGVzaWduRG9jcyk7XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ZXNUb1dyaXRlID0gT2JqZWN0LnZhbHVlcyhyZXN1bHQpO1xuICAgIGNvbnN0IGRvY3NUb1dyaXRlID0gT2JqZWN0LnZhbHVlcyhkZXNpZ25Eb2NzKTtcbiAgICBsb2cudmVyYm9zZShgRm91bmQgJHtpbmRleGVzVG9Xcml0ZS5sZW5ndGh9IGluZGV4ZXMgdG8gY3JlYXRlYCk7XG4gICAgbG9nLnZlcmJvc2UoYEZvdW5kICR7ZG9jc1RvV3JpdGUubGVuZ3RofSBkZXNpZ24gZG9jcyB0byBjcmVhdGVgKTtcbiAgICBsb2cuZGVidWcoYEluZGV4ZXM6ICR7SlNPTi5zdHJpbmdpZnkocmVzdWx0KX1gKTtcbiAgICBsb2cuZGVidWcoYERlc2lnbkRvY3M6ICR7SlNPTi5zdHJpbmdpZnkoZGVzaWduRG9jcyl9YCk7XG4gICAgd3JpdGVJbmRleGVzKGluZGV4ZXNUb1dyaXRlLCBvdXREaXIpO1xuICAgIHdyaXRlRGVzaWduRG9jcyhkb2NzVG9Xcml0ZSwgb3V0RGlyKTtcbn0pO1xuY29uc3QgZXh0cmFjdENvbGxlY3Rpb25zID0gbmV3IENvbW1hbmQoKVxuICAgIC5jb21tYW5kKFwiZXh0cmFjdC1jb2xsZWN0aW9uc1wiKVxuICAgIC5vcHRpb24oXCItLWZpbGUgW1N0cmluZ11cIiwgXCJ0aGUgbW9kZWwgZmlsZVwiKVxuICAgIC5vcHRpb24oXCItLWZvbGRlciBbU3RyaW5nXVwiLCBcInRoZSBtb2RlbCBmb2xkZXJcIilcbiAgICAub3B0aW9uKFwiLS1vdXREaXIgPFN0cmluZz5cIiwgXCJ0aGUgb3V0ZGlyLiBzaG91bGQgbWF0Y2ggeW91ciBjb250cmFjdCBmb2xkZXJcIilcbiAgICAub3B0aW9uKFwiLS1tc3BJZHMgPFN0cmluZz5cIiwgXCJzaW5nbGUgbXNwSWQgb3Igc3RyaW5naWZpZWQgYXJyYXlcIilcbiAgICAub3B0aW9uKFwiLS1tYWluTXNwSWQgPFN0cmluZz5cIiwgXCJzaW5nbGUgbXNwSWRcIilcbiAgICAub3B0aW9uKFwiLS1vdmVycmlkZXMgW1N0cmluZ11cIiwgXCJzdHJpbmdpZmllZCBvdmVycmlkZSBvYmplY3Qge3JlcXVpcmVkUGVlckNvdW50OiBudW1iZXIsIG1heFBlZXJDb3VudDogbnVtYmVyLCBibG9ja1RvTGl2ZTogbnVtYmVyLCBtZW1iZXJPbmx5UmVhZDogbnVtYmVyLCBtZW1iZXJPbmx5V3JpdGU6IG51bWJlciwgZW5kb3JzZW1lbnRQb2xpY3k6ICB7fX1cIilcbiAgICAuZGVzY3JpcHRpb24oXCJDcmVhdGVzIGEgdGhlIEpTT04gaW5kZXggZmlsZXMgdG8gYmUgc3VibWl0dGVkIHRvIGFsb25nIHdpdGggdGhlIGNvbnRyYWN0XCIpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHBrZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcInBhY2thZ2UuanNvblwiKSwgXCJ1dGYtOFwiKSk7XG4gICAgY29uc3QgdmVyc2lvbiA9IHBrZy52ZXJzaW9uO1xuICAgIGNvbnN0IGxvZyA9IGxvZ2dlci5mb3IoXCJleHRyYWN0LWNvbGxlY3Rpb25zXCIpO1xuICAgIGxvZy5kZWJ1ZyhgcnVubmluZyB3aXRoIG9wdGlvbnM6ICR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucyl9IGZvciAke3BrZy5uYW1lfSB2ZXJzaW9uICR7dmVyc2lvbn1gKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgbGV0IHsgZmlsZSwgZm9sZGVyLCBvdXREaXIsIG1zcElkcywgbWFpbk1zcElkIH0gPSBvcHRpb25zO1xuICAgIHRyeSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBtc3BJZHMgPSBtc3BJZHMgPyBKU09OLnBhcnNlKG1zcElkcykgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIC8vICBkbyBub3RoaW5nXG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FcnJvcihgVW5hYmxlIHRvIGV4dHJhY3QgbXNwaWRzOiAgJHtlfWApO1xuICAgIH1cbiAgICBjb25zdCBtb2RlbHMgPSBbXTtcbiAgICBpZiAoZmlsZSkge1xuICAgICAgICBtb2RlbHMucHVzaCguLi5yZWFkTW9kZWxGaWxlKGZpbGUpKTtcbiAgICB9XG4gICAgaWYgKGZvbGRlcikge1xuICAgICAgICBsb2cuaW5mbyhgTG9hZGluZyBtb2RlbHMgZnJvbSAke2ZvbGRlcn0uLi5gKTtcbiAgICAgICAgbW9kZWxzLnB1c2goLi4uKGF3YWl0IHJlYWRNb2RlbEZvbGRlcnMoZm9sZGVyKSkpO1xuICAgIH1cbiAgICBpZiAoIWZpbGUgJiYgIWZvbGRlcilcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYE11c3QgcGFzcyBhIGZpbGUgb3IgYSBmb2xkZXJgKTtcbiAgICBjb25zdCBpbmplY3RhYmxlTW9kZWxzID0gbW9kZWxzLmZpbHRlcigobW9kZWwpID0+IE1vZGVsLmlzU2hhcmVkKG1vZGVsKSB8fFxuICAgICAgICBNb2RlbC5pc1ByaXZhdGUobW9kZWwpIHx8XG4gICAgICAgICEhTW9kZWwubWlycm9yZWRBdChtb2RlbCkpO1xuICAgIGlmICghaW5qZWN0YWJsZU1vZGVscy5sZW5ndGgpIHtcbiAgICAgICAgbG9nLmluZm8oYE5vIHNoYXJlZCwgcHJpdmF0ZSwgb3IgbWlycm9yZWQgbW9kZWxzIGZvdW5kIHRvIGV4dHJhY3QgY29sbGVjdGlvbnNgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhc3luYyBmdW5jdGlvbiBnZXRDb2xzKG1zcElkc0xpc3QpIHtcbiAgICAgICAgY29uc3QgY29scyA9IGF3YWl0IFByb21pc2UuYWxsKGluamVjdGFibGVNb2RlbHMubWFwKGFzeW5jIChjbGF6eikgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGFibGVOYW1lID0gTW9kZWwudGFibGVOYW1lKGNsYXp6KTtcbiAgICAgICAgICAgIGNvbnN0IG1pcnJvck1ldGEgPSBNb2RlbC5taXJyb3JlZEF0KGNsYXp6KTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHRhYmxlTmFtZSk7XG4gICAgICAgICAgICBjb25zdCBjb2xsZWN0aW9ucyA9IHt9O1xuICAgICAgICAgICAgZm9yIChjb25zdCBtc3Agb2YgbXNwSWRzTGlzdCB8fCBtc3BJZHMgfHwgW10pIHtcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uc1ttc3BdID0gYXdhaXQgZXhDb2xsZWN0aW9ucyhjbGF6eiwgW21zcCwgbWFpbk1zcElkXSwge30sIFxuICAgICAgICAgICAgICAgIC8vIHtcbiAgICAgICAgICAgICAgICAvLyAgIHNoYXJlZENvbHM6IE9iamVjdC5hc3NpZ24oe30sIG92ZXJyaWRlcy5zaGFyZWRDb2xzKSxcbiAgICAgICAgICAgICAgICAvLyAgIHByaXZhdGVDb2xzOiBPYmplY3QuYXNzaWduKHt9LCBvdmVycmlkZXMucHJpdmF0ZUNvbHMpLFxuICAgICAgICAgICAgICAgIC8vIH0sXG4gICAgICAgICAgICAgICAgISFtaXJyb3JNZXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBtaXJyb3JDb2xsZWN0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKG1pcnJvck1ldGEpIHtcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uc1ttYWluTXNwSWRdID0gY29sbGVjdGlvbnNbbWFpbk1zcElkXSB8fCB7fTtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhjb2xsZWN0aW9ucykuZm9yRWFjaCgobXNwKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25zW21haW5Nc3BJZF0ucHJpdmF0ZXMgPSBjb2xsZWN0aW9uc1ttc3BdLnByaXZhdGVzPy5maWx0ZXIoKHApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwLm5hbWUgIT09IG1pcnJvck1ldGEucmVzb2x2ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaXJyb3JDb2xsZWN0aW9uID0gcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwcml2YXRlc0NvdW50ID0gT2JqZWN0LnZhbHVlcyhjb2xsZWN0aW9ucylcbiAgICAgICAgICAgICAgICAubWFwKChjKSA9PiBjLnByaXZhdGVzKVxuICAgICAgICAgICAgICAgIC5mbGF0KCkubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKHByaXZhdGVzQ291bnQpXG4gICAgICAgICAgICAgICAgbG9nXG4gICAgICAgICAgICAgICAgICAgIC5mb3IoTW9kZWwudGFibGVOYW1lKGNsYXp6KSlcbiAgICAgICAgICAgICAgICAgICAgLmluZm8oYEZvdW5kICR7cHJpdmF0ZXNDb3VudH0gcHJpdmF0ZSBjb2xsZWN0aW9ucyB0byBjcmVhdGVgKTtcbiAgICAgICAgICAgIGNvbnN0IHNoYXJlZENvdW50ID0gT2JqZWN0LnZhbHVlcyhjb2xsZWN0aW9ucylcbiAgICAgICAgICAgICAgICAubWFwKChjKSA9PiBjLnNoYXJlZClcbiAgICAgICAgICAgICAgICAuZmxhdCgpLmxlbmd0aDtcbiAgICAgICAgICAgIGxvZ1xuICAgICAgICAgICAgICAgIC5mb3IoTW9kZWwudGFibGVOYW1lKGNsYXp6KSlcbiAgICAgICAgICAgICAgICAuaW5mbyhgRm91bmQgJHtzaGFyZWRDb3VudH0gc2hhcmVkIGNvbGxlY3Rpb25zIHRvIGNyZWF0ZWApO1xuICAgICAgICAgICAgaWYgKG1pcnJvckNvbGxlY3Rpb24pXG4gICAgICAgICAgICAgICAgbG9nXG4gICAgICAgICAgICAgICAgICAgIC5mb3IoTW9kZWwudGFibGVOYW1lKGNsYXp6KSlcbiAgICAgICAgICAgICAgICAgICAgLmluZm8oYEZvdW5kIG9uZSBtaXJyb3IgY29sbGVjdGlvbiAke21pcnJvck1ldGE/LnJlc29sdmVyfWApO1xuICAgICAgICAgICAgY29uc3QgY29sTGlzdCA9IE9iamVjdC52YWx1ZXMoY29sbGVjdGlvbnMpXG4gICAgICAgICAgICAgICAgLm1hcCgoYykgPT4gWy4uLihjLnByaXZhdGVzIHx8IFtdKSwgLi4uKGMuc2hhcmVkIHx8IFtdKV0pXG4gICAgICAgICAgICAgICAgLmZsYXQoKTtcbiAgICAgICAgICAgIGxldCBpbmRleGVzID0gW107XG4gICAgICAgICAgICBsZXQgZGVzaWduRG9jcyA9IFtdO1xuICAgICAgICAgICAgaWYgKGNvbExpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgbG9nXG4gICAgICAgICAgICAgICAgICAgIC5mb3IoTW9kZWwudGFibGVOYW1lKGNsYXp6KSlcbiAgICAgICAgICAgICAgICAgICAgLnZlcmJvc2UoYGdlbmVyYXRpbmcgaW5kZXhlcyBmb3IgY29sbGVjdGlvbnNgKTtcbiAgICAgICAgICAgICAgICBpbmRleGVzID0gZ2VuZXJhdGVNb2RlbEluZGV4ZXMoY2xhenopO1xuICAgICAgICAgICAgICAgIGxvZ1xuICAgICAgICAgICAgICAgICAgICAuZm9yKE1vZGVsLnRhYmxlTmFtZShjbGF6eikpXG4gICAgICAgICAgICAgICAgICAgIC5pbmZvKGBmb3VuZCAke2luZGV4ZXMubGVuZ3RofSBpbmRleGVzYCk7XG4gICAgICAgICAgICAgICAgZGVzaWduRG9jcyA9IGdlbmVyYXRlTW9kZWxEZXNpZ25Eb2NzKGNsYXp6KTtcbiAgICAgICAgICAgICAgICBsb2dcbiAgICAgICAgICAgICAgICAgICAgLmZvcihNb2RlbC50YWJsZU5hbWUoY2xhenopKVxuICAgICAgICAgICAgICAgICAgICAuaW5mbyhgZm91bmQgJHtkZXNpZ25Eb2NzLmxlbmd0aH0gZGVzaWduIGRvY3NgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaW5kZXhlcyxcbiAgICAgICAgICAgICAgICBkZXNpZ25Eb2NzLFxuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25zOiBjb2xMaXN0LFxuICAgICAgICAgICAgICAgIG1pcnJvcjogbWlycm9yQ29sbGVjdGlvbixcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pKTtcbiAgICAgICAgcmV0dXJuIGNvbHM7XG4gICAgfVxuICAgIGNvbnN0IGNvbHMgPSBhd2FpdCBnZXRDb2xzKCk7XG4gICAgY29uc3Qgb25seU1pcnJvciA9IGF3YWl0IGdldENvbHMoW21haW5Nc3BJZF0pO1xuICAgIGNvbnN0IGNvbGxlY3Rpb25zVG8gPSBbXG4gICAgICAgIC4uLm9ubHlNaXJyb3IuZmlsdGVyKChjKSA9PiBjLm1pcnJvcikubWFwKChjKSA9PiBjLm1pcnJvciksXG4gICAgICAgIC4uLmNvbHMubWFwKChjKSA9PiBjLmNvbGxlY3Rpb25zKS5mbGF0KCksXG4gICAgICAgIC4uLmNvbHMuZmlsdGVyKChjKSA9PiBjLm1pcnJvcikubWFwKChjKSA9PiBjLm1pcnJvciksXG4gICAgXTtcbiAgICBjb25zdCB1bmlxdWVCeUNvbGxlY3Rpb24gPSBbXG4gICAgICAgIC4uLm5ldyBNYXAoY29sbGVjdGlvbnNUby5tYXAoKGl0ZW0pID0+IFtpdGVtLm5hbWUsIGl0ZW1dKSkudmFsdWVzKCksXG4gICAgXTtcbiAgICBpZiAodW5pcXVlQnlDb2xsZWN0aW9uLmxlbmd0aCkge1xuICAgICAgICB3cml0ZUNvbGxlY3Rpb25zKHVuaXF1ZUJ5Q29sbGVjdGlvbiwgb3V0RGlyKTtcbiAgICAgICAgY29uc3QgbWV0YUNvbGxlY3Rpb25zQ29uZmlnID0gcGF0aC5qb2luKG91dERpciwgXCJNRVRBLUlORlwiLCBcImNvbGxlY3Rpb25zX2NvbmZpZy5qc29uXCIpO1xuICAgICAgICBjb25zdCBjb250cmFjdENvbGxlY3Rpb25zQ29uZmlnID0gcGF0aC5qb2luKG91dERpciwgXCJjb2xsZWN0aW9uc19jb25maWcuanNvblwiKTtcbiAgICAgICAgZnMuY29weUZpbGVTeW5jKG1ldGFDb2xsZWN0aW9uc0NvbmZpZywgY29udHJhY3RDb2xsZWN0aW9uc0NvbmZpZyk7XG4gICAgICAgIGxvZy5pbmZvKGBTdG9yZWQgJHtjb2xsZWN0aW9uc1RvLmxlbmd0aH0gY29sbGVjdGlvbnMgdG8gJHttZXRhQ29sbGVjdGlvbnNDb25maWd9YCk7XG4gICAgICAgIGxvZy5pbmZvKGBDb3BpZWQgY29sbGVjdGlvbnNfY29uZmlnIHRvICR7Y29udHJhY3RDb2xsZWN0aW9uc0NvbmZpZ30gYWxvbmdzaWRlIHRoZSBwYWNrYWdlLmpzb25gKTtcbiAgICAgICAgY29scy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGluZGV4ZXMsIGRlc2lnbkRvY3MsIGNvbGxlY3Rpb25zLCBtaXJyb3IgfSA9IGM7XG4gICAgICAgICAgICBjb25zdCB0b0luZGV4ID0gWy4uLmNvbGxlY3Rpb25zLCBtaXJyb3JdLmZpbHRlcihCb29sZWFuKTtcbiAgICAgICAgICAgIHRvSW5kZXguZm9yRWFjaCgoaSkgPT4ge1xuICAgICAgICAgICAgICAgIHdyaXRlSW5kZXhlcyhpbmRleGVzLCBvdXREaXIsIGkubmFtZSk7XG4gICAgICAgICAgICAgICAgd3JpdGVDb2xsZWN0aW9uRGVzaWduRG9jcyhkZXNpZ25Eb2NzIHx8IFtdLCBvdXREaXIsIGkubmFtZSk7XG4gICAgICAgICAgICAgICAgbG9nLmluZm8oYFN0b3JlZCAke2luZGV4ZXM/Lmxlbmd0aCB8fCAwfSBpbmRleGVzIGFuZCAke2Rlc2lnbkRvY3M/Lmxlbmd0aCB8fCAwfSBkZXNpZ24gZG9jcyB0byBjb2xsZWN0aW9uICR7aS5uYW1lfWApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn0pO1xuY29uc3QgZW5zdXJlSW5mcmEgPSBuZXcgQ29tbWFuZCgpXG4gICAgLm5hbWUoXCJhd2FpdC1pbmZyYVwiKVxuICAgIC5kZXNjcmlwdGlvbihcIndhaXRzIGZvciB0aGUgaW5mcmFzdHJ1Y3R1cmUgdG8gYmUgdXAgYW5kIHJ1bm5pbmdcIilcbiAgICAub3B0aW9uKFwiLS1jb250YWluZXIgPFN0cmluZz5cIiwgXCJkb2NrZXIgY29udGFpbmVyIG5hbWUgdG8gdGVzdCAodXN1YWxseSBsYXN0IHBlZXIpXCIsIFwiYm9vdC1vcmctYy1wZWVyLTBcIilcbiAgICAub3B0aW9uKFwiLS10aW1lb3V0IDxTdHJpbmc+XCIsIFwidGltZW91dCBiZXR3ZWVuIHRlc3RzIGluIG1pbGxpc2Vjb25kc1wiLCBcIjUwMDBcIilcbiAgICAub3B0aW9uKFwiLS1hdHRlbXB0cyA8U3RyaW5nPlwiLCBcIm51bWJlciBvZiBhdHRlbXB0cyBiZWZvcmUgZ2l2aW5nIHVwXCIsIFwiMTBcIilcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwicGFja2FnZS5qc29uXCIpLCBcInV0Zi04XCIpKTtcbiAgICBjb25zdCB2ZXJzaW9uID0gcGtnLnZlcnNpb247XG4gICAgY29uc3QgbG9nID0gbG9nZ2VyLmZvcihcImF3YWl0LWluZnJhXCIpO1xuICAgIGxvZy5kZWJ1ZyhgcnVubmluZyB3aXRoIG9wdGlvbnM6ICR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucyl9IGZvciAke3BrZy5uYW1lfSB2ZXJzaW9uICR7dmVyc2lvbn1gKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgbGV0IHsgY29udGFpbmVyLCB0aW1lb3V0LCBhdHRlbXB0cyB9ID0gb3B0aW9ucztcbiAgICB0aW1lb3V0ID0gcGFyc2VJbnQodGltZW91dCkgfHwgNTAwMDtcbiAgICBhdHRlbXB0cyA9IHBhcnNlSW50KGF0dGVtcHRzKSB8fCAxMDtcbiAgICBhd2FpdCBlbnN1cmVJbmZyYXN0cnVjdHVyZUJvb3RlZChcImJvb3Qtb3JnLWMtcGVlci0wXCIsIHRpbWVvdXQsIGF0dGVtcHRzKTtcbiAgICBsb2cuaW5mbyhgSW5mcmFzdHJ1Y3R1cmUgYm9vdGVkIHN1Y2Nlc3NmdWxseSAoYWNjb3JkaW5nIHRvIGNvbnRhaW5lciAke2NvbnRhaW5lcn0pIWApO1xufSk7XG5jb25zdCBkZXBsb3lDb250cmFjdCA9IG5ldyBDb21tYW5kKClcbiAgICAubmFtZShcImRlcGxveS1jb250cmFjdFwiKVxuICAgIC5kZXNjcmlwdGlvbihcImRlcGxveXMgdGhlIHNlbGVjdGVkIGNvbnRyYWN0XCIpXG4gICAgLm9wdGlvbihcIi0tbmFtZSA8U3RyaW5nPlwiLCBcIkNvbnRyYWN0IE5hbWUgKGFuZCBmb2xkZXIpXCIpXG4gICAgLm9wdGlvbihcIi0taW5wdXQgPFN0cmluZz5cIiwgXCJpbnB1dCBmb2xkZXJcIilcbiAgICAub3B0aW9uKFwiLS1jb2xsZWN0aW9ucy1jb25maWcgPFN0cmluZz5cIiwgXCJwYXRoIHRvIGNvbGxlY3Rpb25zX2NvbmZpZy5qc29uIHRvIGNvbmZpZ3VyZSBwcml2YXRlIGNvbGxlY3Rpb25zXCIpXG4gICAgLm9wdGlvbihcIi0taW5jcmVtZW50VmVyc2lvbiA8U3RyaW5nPlwiLCBcIih0cnVlIHwgZmFsc2UpIGlmIHNob3VsZCB1c2UgdmVyc2lvbiBvciBzZXF1ZW5jZSB0byB1cGRhdGUgY29udHJhY3RzXCIsIGZhbHNlKVxuICAgIC5vcHRpb24oXCItLXRyYWNrZXJGb2xkZXIgPFN0cmluZz5cIiwgXCJjb250cmFjdCB2ZXJzaW9uIHRyYWNrZXIgZm9sZGVyIChzaG91bGQgYmUgZGVsZXRlZCBvbiBpbmZyYXN0cnVjdHVyZTpkb3duKVwiLCBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJ0ZXN0c1wiLCBcImludGVncmF0aW9uXCIsIFwiY2hhaW5jb2RlVHJhY2tlcnNcIikpXG4gICAgLm9wdGlvbihcIi0tcGVlcnMgPFN0cmluZz5cIiwgXCJjb21tYSBzZXBhcmF0ZWQgcGVlciBpZHNcIiwgXCJvcmctYS1wZWVyLTAsb3JnLWItcGVlci0wLG9yZy1jLXBlZXItMFwiKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBwa2cgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJwYWNrYWdlLmpzb25cIiksIFwidXRmLThcIikpO1xuICAgIGNvbnN0IHZlcnNpb24gPSBwa2cudmVyc2lvbjtcbiAgICBjb25zdCBsb2cgPSBsb2dnZXIuZm9yKFwiZGVwbG95LWNvbnRyYWN0XCIpO1xuICAgIGxvZy5kZWJ1ZyhgcnVubmluZyB3aXRoIG9wdGlvbnM6ICR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucyl9IGZvciAke3BrZy5uYW1lfSB2ZXJzaW9uICR7dmVyc2lvbn1gKTtcbiAgICBjb25zdCB7IG5hbWUsIGlucHV0LCBwZWVycywgdHJhY2tlckZvbGRlciwgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIGluY3JlbWVudFZlcnNpb24sIGNvbGxlY3Rpb25zQ29uZmlnLCB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBwZWVySWRzID0gcGVlcnMuc3BsaXQoXCIsXCIpO1xuICAgIGNvbnN0IGNvdW50UGF0aCA9IHBhdGgucmVzb2x2ZShwYXRoLmpvaW4odHJhY2tlckZvbGRlciwgYCR7bmFtZX0uY291bnRgKSk7XG4gICAgbGV0IHNlcXVlbmNlO1xuICAgIHRyeSB7XG4gICAgICAgIHNlcXVlbmNlID0gcGFyc2VJbnQoZnMucmVhZEZpbGVTeW5jKGNvdW50UGF0aCkudG9TdHJpbmcoXCJ1dGYtOFwiKSk7XG4gICAgICAgIGlmIChpc05hTihzZXF1ZW5jZSkpXG4gICAgICAgICAgICBzZXF1ZW5jZSA9IDE7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHNlcXVlbmNlICs9IDE7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgc2VxdWVuY2UgPSAxO1xuICAgIH1cbiAgICAvL1xuICAgIC8vIGlmIChpbmNyZW1lbnRWZXJzaW9uKSB7XG4gICAgLy8gICB2ZXJzaW9uID0gdmVyc2lvbiArIGAtJHtzZXF1ZW5jZX1gO1xuICAgIC8vICAgLy8gc2VxdWVuY2UgPSAxO1xuICAgIC8vIH1cbiAgICB0cnkge1xuICAgICAgICBmb3IgKGNvbnN0IHBlZXIgb2YgcGVlcklkcykge1xuICAgICAgICAgICAgcGFja2FnZUNvbnRyYWN0KHBlZXIsIGlucHV0LCBuYW1lLCB2ZXJzaW9uKTtcbiAgICAgICAgICAgIGluc3RhbGxDb250cmFjdChwZWVyLCBuYW1lKTtcbiAgICAgICAgICAgIGFwcHJvdmVDb250cmFjdChwZWVyLCBuYW1lLCBwZWVyID09PSBcIm9yZy1hLXBlZXItMFwiXG4gICAgICAgICAgICAgICAgPyBcInRscy1jYS1jZXJ0LnBlbVwiXG4gICAgICAgICAgICAgICAgOiBcIm9yZGVyZXItdGxzLWNhLWNlcnQucGVtXCIsIHNlcXVlbmNlLCB2ZXJzaW9uLCBjb2xsZWN0aW9uc0NvbmZpZyk7XG4gICAgICAgIH1cbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhjb3VudFBhdGgsIHNlcXVlbmNlLnRvU3RyaW5nKCkpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZy5lcnJvcihcIkVycm9yIGRlcGxveWluZyBjb250cmFjdDpcIiwgZXJyKTtcbiAgICB9XG4gICAgY29tbWl0Q2hhaW5jb2RlKG5hbWUsIHNlcXVlbmNlLCB2ZXJzaW9uLCBjb2xsZWN0aW9uc0NvbmZpZyk7XG59KTtcbmNvbnN0IGdldENyeXB0b01hdGVyaWFsID0gbmV3IENvbW1hbmQoKVxuICAgIC5uYW1lKFwiZ2V0LWNyeXB0by1tYXRlcmlhbFwiKVxuICAgIC5kZXNjcmlwdGlvbihcImNvcGllcyB0aGUgY3J5cHRvIG1hdGVyaWFsIHRvIHRoZSBzZWxlY3RlZCBmb2xkZXJcIilcbiAgICAub3B0aW9uKFwiLS1mb2xkZXIgPFN0cmluZz5cIiwgXCJvdXRwdXQgZm9sZGVyXCIsIFwiZG9ja2VyL2RvY2tlci1kYXRhXCIpXG4gICAgLm9wdGlvbihcIi0tb3JnIFtTdHJpbmddXCIsIFwidGhlIG9yZy9wZWVyIHRvIGV4dHJhY3QgZnJvbVwiLCBcIm9yZy1hXCIpXG4gICAgLmFjdGlvbihhc3luYyAob3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHBrZyA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcInBhY2thZ2UuanNvblwiKSwgXCJ1dGYtOFwiKSk7XG4gICAgY29uc3QgdmVyc2lvbiA9IHBrZy52ZXJzaW9uO1xuICAgIGNvbnN0IGxvZyA9IGxvZ2dlci5mb3IoXCJnZXQtY3J5cHRvLW1hdGVyaWFsXCIpO1xuICAgIGxvZy5kZWJ1ZyhgcnVubmluZyB3aXRoIG9wdGlvbnM6ICR7SlNPTi5zdHJpbmdpZnkob3B0aW9ucyl9IGZvciAke3BrZy5uYW1lfSB2ZXJzaW9uICR7dmVyc2lvbn1gKTtcbiAgICBjb25zdCB7IGZvbGRlciwgb3JnIH0gPSBvcHRpb25zO1xuICAgIGV4ZWNTeW5jKGBkb2NrZXIgY3AgJHtvcmd9Oi93ZWF2ZXIvY2xpZW50Ly4gJHtmb2xkZXJ9YCwge1xuICAgICAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgfSk7XG59KTtcbmNvbnN0IGdldENvcHlUb1BUUCA9IG5ldyBDb21tYW5kKClcbiAgICAubmFtZShcInByZXBhcmUtcHRwXCIpXG4gICAgLmRlc2NyaXB0aW9uKFwiY29waWVzIGNvbnRyYWN0IHRvIHRoZSBwdHAgZm9sZGVyXCIpXG4gICAgLm9wdGlvbihcIi0tb3JpZ2luLWZvbGRlciA8U3RyaW5nPlwiLCBcIm9yaWdpbiB3b3Jrc3BhY2UgZm9sZGVyXCIsIHVuZGVmaW5lZClcbiAgICAub3B0aW9uKFwiLS1kZXN0LWZvbGRlciA8U3RyaW5nPlwiLCBcImZvbGRlciB0byB0aGUgZGVzdGluYXRpb24gd29ya3NwYWNlXCIsIHVuZGVmaW5lZClcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgaWYgKCEob3B0aW9ucy5vcmlnaW5Gb2xkZXIgJiYgb3B0aW9ucy5kZXN0Rm9sZGVyKSkge1xuICAgICAgICBsb2dnZXJcbiAgICAgICAgICAgIC5mb3IoXCJwcmVwYXJlLXB0cFwiKVxuICAgICAgICAgICAgLmVycm9yKFwiQm90aCAtLW9yaWdpbi1mb2xkZXIgYW5kIC0tZGVzdC1mb2xkZXIgb3B0aW9ucyBhcmUgcmVxdWlyZWQgdG8gcHJlcGFyZS1wdHBcIik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZnVuY3Rpb24gY29weUZvbGRlcihzb3VyY2UsIHRhcmdldCkge1xuICAgICAgICAvLyBSZW1vdmUgZXhpc3RpbmcgdGFyZ2V0IGZvbGRlclxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXQpKSB7XG4gICAgICAgICAgICBmcy5ybVN5bmModGFyZ2V0LCB7XG4gICAgICAgICAgICAgICAgcmVjdXJzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGZvcmNlOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRW5zdXJlIHBhcmVudCBleGlzdHNcbiAgICAgICAgZnMubWtkaXJTeW5jKHBhdGguZGlybmFtZSh0YXJnZXQpLCB7XG4gICAgICAgICAgICByZWN1cnNpdmU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBDb3B5IGZvbGRlclxuICAgICAgICBmcy5jcFN5bmMoc291cmNlLCB0YXJnZXQsIHtcbiAgICAgICAgICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgIGZvcmNlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc29sZS5sb2coYENvcGllZDogJHtzb3VyY2V9IFxuICAgICAgLT4gJHt0YXJnZXR9YCk7XG4gICAgfVxuICAgIGNvbnN0IG9yaWdpbiA9IHBhdGgucmVzb2x2ZShvcHRpb25zLm9yaWdpbkZvbGRlcik7XG4gICAgY29uc3QgZGVzdCA9IHBhdGgucmVzb2x2ZShvcHRpb25zLmRlc3RGb2xkZXIpO1xuICAgIGV4ZWNTeW5jKGBjZCBmb3ItZmFicmljICYmIG5wbSBydW4gYnVpbGRgLCB7XG4gICAgICAgIGN3ZDogb3JpZ2luLFxuICAgICAgICBzdGRpbzogXCJpbmhlcml0XCIsXG4gICAgfSk7XG4gICAgZXhlY1N5bmMoYGNkIGZvci1mYWJyaWMgJiYgbnBtIHJ1biBidWlsZDpjb250cmFjdDpzaGFyZWRgLCB7XG4gICAgICAgIGN3ZDogb3JpZ2luLFxuICAgICAgICBzdGRpbzogXCJpbmhlcml0XCIsXG4gICAgfSk7XG4gICAgY29uc3Qgc291cmNlTGliID0gcGF0aC5qb2luKG9yaWdpbiwgXCJmb3ItZmFicmljXCIsIFwibGliXCIpO1xuICAgIGNvbnN0IHRhcmdldExpYiA9IHBhdGguam9pbihkZXN0LCBcImluZnJhXCIsIFwiZm9yLWZhYnJpY1wiLCBcImxpYlwiKTtcbiAgICBjb3B5Rm9sZGVyKHNvdXJjZUxpYiwgdGFyZ2V0TGliKTtcbiAgICBjb25zdCBzb3VyY2VHbG9iYWwgPSBwYXRoLmpvaW4ob3JpZ2luLCBcImZvci1mYWJyaWNcIiwgXCJkb2NrZXJcIiwgXCJpbmZyYXN0cnVjdHVyZVwiLCBcImNoYWluY29kZVwiLCBcIkdsb2JhbFwiKTtcbiAgICBjb25zdCB0YXJnZXRDb250cmFjdHMgPSBwYXRoLmpvaW4oZGVzdCwgXCJ0b29sa2l0XCIsIFwiY29udHJhY3RzXCIpO1xuICAgIGZzLm1rZGlyU3luYyh0YXJnZXRDb250cmFjdHMsIHtcbiAgICAgICAgcmVjdXJzaXZlOiB0cnVlLFxuICAgIH0pO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBmcy5yZWFkZGlyU3luYyhzb3VyY2VHbG9iYWwpKSB7XG4gICAgICAgIGNvbnN0IHNvdXJjZUl0ZW0gPSBwYXRoLmpvaW4oc291cmNlR2xvYmFsLCBpdGVtKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0SXRlbSA9IHBhdGguam9pbih0YXJnZXRDb250cmFjdHMsIGl0ZW0pO1xuICAgICAgICAvLyBSZW1vdmUgZXhpc3RpbmcgdGFyZ2V0IGl0ZW0gaWYgbmVlZGVkXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldEl0ZW0pKSB7XG4gICAgICAgICAgICBmcy5ybVN5bmModGFyZ2V0SXRlbSwge1xuICAgICAgICAgICAgICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBmb3JjZTogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZzLmNwU3luYyhzb3VyY2VJdGVtLCB0YXJnZXRJdGVtLCB7XG4gICAgICAgICAgICByZWN1cnNpdmU6IHRydWUsXG4gICAgICAgICAgICBmb3JjZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnNvbGUubG9nKGBDb3BpZWQ6ICR7c291cmNlSXRlbX0gXG4gICAgICAtPiAke3RhcmdldEl0ZW19YCk7XG4gICAgfVxuICAgIGV4ZWNTeW5jKGBjZCB0b29sa2l0ICYmIG5wbSBydW4gYnVpbGRgLCB7IGN3ZDogZGVzdCwgc3RkaW86IFwiaW5oZXJpdFwiIH0pO1xuICAgIGV4ZWNTeW5jKGBjZCB0b29sa2l0ICYmIG5wbSBydW4gZG9ja2VyOmJ1aWxkLWNvbnRyYWN0c2AsIHtcbiAgICAgICAgY3dkOiBkZXN0LFxuICAgICAgICBzdGRpbzogXCJpbmhlcml0XCIsXG4gICAgfSk7XG4gICAgZXhlY1N5bmMoYGNkIGluZnJhICYmIG5wbSBydW4gYnVpbGRgLCB7IGN3ZDogZGVzdCwgc3RkaW86IFwiaW5oZXJpdFwiIH0pO1xuICAgIGV4ZWNTeW5jKGBjZCBpbmZyYSAmJiBucG0gcnVuIGJ1aWxkOmplc3Q6aW1hZ2VgLCB7XG4gICAgICAgIGN3ZDogZGVzdCxcbiAgICAgICAgc3RkaW86IFwiaW5oZXJpdFwiLFxuICAgIH0pO1xufSk7XG5jb25zdCBmYWJyaWNDbWQgPSBuZXcgQ29tbWFuZCgpXG4gICAgLm5hbWUoXCJmb3ItZmFicmljXCIpXG4gICAgLmNvbW1hbmQoXCJmYWJyaWNcIilcbiAgICAuZGVzY3JpcHRpb24oXCJleHBvc2VzIHNldmVyYWwgY29tbWFuZHMgdG8gaGVscCBtYW5hZ2UgdGhlIGZhYnJpYyBpbmZyYXN0cnVjdHVyZVwiKTtcbmZhYnJpY0NtZC5hZGRDb21tYW5kKGNvbXBpbGVDb21tYW5kKTtcbmZhYnJpY0NtZC5hZGRDb21tYW5kKGV4dHJhY3RJbmRleGVzKTtcbmZhYnJpY0NtZC5hZGRDb21tYW5kKGVuc3VyZUluZnJhKTtcbmZhYnJpY0NtZC5hZGRDb21tYW5kKGRlcGxveUNvbnRyYWN0KTtcbmZhYnJpY0NtZC5hZGRDb21tYW5kKGdldENyeXB0b01hdGVyaWFsKTtcbmZhYnJpY0NtZC5hZGRDb21tYW5kKGV4dHJhY3RDb2xsZWN0aW9ucyk7XG5mYWJyaWNDbWQuYWRkQ29tbWFuZChnZXRDb3B5VG9QVFApO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZmFicmljKCkge1xuICAgIHJldHVybiBmYWJyaWNDbWQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZMnhwTFcxdlpIVnNaUzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDNOeVl5OWpiR2t0Ylc5a2RXeGxMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxFOUJRVThzUlVGQlJTeFBRVUZQTEVWQlFVVXNUVUZCVFN4WFFVRlhMRU5CUVVNN1FVRkRjRU1zVDBGQlR5eEZRVUZGTEU5QlFVOHNSVUZCUlN4WlFVRlpMRVZCUVVVc1RVRkJUU3h0UWtGQmJVSXNRMEZCUXp0QlFVTXhSQ3hQUVVGUExFVkJRVVVzVVVGQlVTeEZRVUZGTEUxQlFVMHNaVUZCWlN4RFFVRkRPMEZCUTNwRExFOUJRVThzUlVGQlJTeE5RVUZOTEVsQlFVa3NRMEZCUXp0QlFVTndRaXhQUVVGUExFbEJRVWtzVFVGQlRTeE5RVUZOTEVOQlFVTTdRVUZEZUVJc1QwRkJUeXhGUVVGRkxHTkJRV01zUlVGQlJTeGhRVUZoTEVWQlFVVXNUVUZCVFN4aFFVRmhMRU5CUVVNN1FVRkROVVFzVDBGQlR5eEZRVUZWTEUxQlFVMHNSVUZCUlN4TlFVRk5MRkZCUVZFc1EwRkJRenRCUVVONFF5eFBRVUZQTEZGQlFWRXNUVUZCVFN4NVFrRkJlVUlzUTBGQlF6dEJRVU12UXl4UFFVRlBMRVZCUVVVc1YwRkJWeXhGUVVGRkxFMUJRVTBzTmtKQlFUWkNMRU5CUVVNN1FVRkRNVVFzVDBGQlR5eFBRVUZQTEUxQlFVMHNkMEpCUVhkQ0xFTkJRVU03UVVGRE4wTXNUMEZCVHl4RlFVRkZMR0ZCUVdFc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4TlFVRk5MSGxDUVVGNVFpeERRVUZETzBGQlF6VkZMRTlCUVU4c1JVRkRUQ3gxUWtGQmRVSXNSVUZEZGtJc2IwSkJRVzlDTEVWQlEzQkNMR0ZCUVdFc1JVRkRZaXhuUWtGQlowSXNSVUZEYUVJc1pVRkJaU3hGUVVObUxGbEJRVmtzUjBGRFlpeHJRMEZCZVVJN1FVRkRNVUlzVDBGQlR5eEZRVUZGTEV0QlFVc3NSVUZCUlN4TlFVRk5MR2REUVVGblF5eERRVUZETzBGQlEzWkVMRTlCUVU4c1JVRkRUQ3hsUVVGbExFVkJRMllzTUVKQlFUQkNMRVZCUXpGQ0xHVkJRV1VzUlVGRFppeGxRVUZsTEVWQlEyWXNaVUZCWlN4RlFVTm1MSFZDUVVGMVFpeEZRVU4yUWl3MFFrRkJORUlzUjBGRE4wSXNkVUpCUVc5Q08wRkJRM0pDTEhGRFFVRTBRanRCUVVNMVFpeFBRVUZQTEVWQlFVVXNUVUZCVFN4WlFVRlpMRU5CUVVNN1FVRkROVUlzVDBGQlR5eEZRVU5NTEd0Q1FVRnJRaXhKUVVGSkxHRkJRV0VzUlVGRmJrTXNaMEpCUVdkQ0xFVkJRMmhDTEhsQ1FVRjVRaXhIUVVNeFFpeHpRMEZCYlVNN1FVRkhjRU1zVFVGQlRTeE5RVUZOTEVkQlFVY3NUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dEJRVVZ5UXl4VFFVRlRMSFZDUVVGMVFqdEpRVU01UWl4UFFVRlBPMUZCUTB3c1NVRkJTU3hGUVVGRkxEUkNRVUUwUWp0UlFVTnNReXhUUVVGVExFTkJRVU1zVFVGQlRTeEZRVUZGTEZGQlFWRTdXVUZEZUVJc1NVRkJTU3hEUVVGRExGRkJRVkVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF6dG5Ra0ZEZWtNc1QwRkJUeXhKUVVGSkxFTkJRVU03V1VGRFpDeERRVUZETzFsQlJVUXNUVUZCVFN4WlFVRlpMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzFsQlEyeEZMRTFCUVUwc1ZVRkJWU3hIUVVGSE8yZENRVU5xUWl4WlFVRlpPMmRDUVVOYUxFZEJRVWNzV1VGQldTeExRVUZMTzJkQ1FVTndRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NSVUZCUlN4VlFVRlZMRU5CUVVNN1lVRkRjRU1zUTBGQlF6dFpRVVZHTEV0QlFVc3NUVUZCVFN4VFFVRlRMRWxCUVVrc1ZVRkJWU3hGUVVGRkxFTkJRVU03WjBKQlEyNURMRWxCUVVrc1JVRkJSU3hEUVVGRExGVkJRVlVzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1VVRkJVU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNN2IwSkJRMmhGTEU5QlFVOHNVMEZCVXl4RFFVRkRPMmRDUVVOdVFpeERRVUZETzFsQlEwZ3NRMEZCUXp0WlFVVkVMRTlCUVU4c1NVRkJTU3hEUVVGRE8xRkJRMlFzUTBGQlF6dExRVU5HTEVOQlFVTTdRVUZEU2l4RFFVRkRPMEZCUlVRc1UwRkJVeXd3UWtGQk1FSTdTVUZEYWtNc1RVRkJUU3hsUVVGbExFZEJRVWNzWVVGQllTeERRVU51UXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVWQlFVVXNSVUZCUlN4alFVRmpMRU5CUVVNc1EwRkRla01zUTBGQlF6dEpRVVZHTEU5QlFVODdVVUZEVEN4SlFVRkpMRVZCUVVVc0swSkJRU3RDTzFGQlEzSkRMRk5CUVZNc1EwRkJReXhOUVVGTk8xbEJRMlFzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4VlFVRlZMRU5CUVVNc1dVRkJXU3hEUVVGRExFVkJRVVVzUTBGQlF6dG5Ra0ZEY2tNc1QwRkJUeXhKUVVGSkxFTkJRVU03V1VGRFpDeERRVUZETzFsQlJVUXNTVUZCU1N4RFFVRkRPMmRDUVVOSUxFOUJRVThzWlVGQlpTeERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRaUVVONlF5eERRVUZETzFsQlFVTXNUVUZCVFN4RFFVRkRPMmRDUVVOUUxFOUJRVThzU1VGQlNTeERRVUZETzFsQlEyUXNRMEZCUXp0UlFVTklMRU5CUVVNN1MwRkRSaXhEUVVGRE8wRkJRMG9zUTBGQlF6dEJRVVZFTEUxQlFVMHNjMEpCUVhOQ0xFZEJRVWNzU1VGQlNTeEhRVUZITEVOQlFVTTdTVUZEY2tNc1pVRkJaVHRKUVVObUxEWkNRVUUyUWp0SlFVTTNRaXh4UWtGQmNVSTdTVUZEY2tJc2EwSkJRV3RDTzBsQlEyeENMR1ZCUVdVN1NVRkRaaXh4UWtGQmNVSTdTVUZEY2tJc1owSkJRV2RDTzBsQlEyaENMR0ZCUVdFN1NVRkRZaXhwUWtGQmFVSTdRMEZEYkVJc1EwRkJReXhEUVVGRE8wRkJSVWdzVTBGQlV5eGhRVUZoTEVOQlFVTXNSVUZCVlR0SlFVTXZRaXhOUVVGTkxGVkJRVlVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZETjBRc1QwRkJUeXhqUVVGakxFTkJRVU1zVVVGQlVTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRPMEZCUXpkRExFTkJRVU03UVVGRlJDeFRRVUZUTERCQ1FVRXdRaXhEUVVGRExFVkJRVlU3U1VGRE5VTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1JVRkJSU3hEUVVGRE8xRkJRVVVzVDBGQlR5eEpRVUZKTEVOQlFVTTdTVUZETTBRc1NVRkJTU3hGUVVGRkxFTkJRVU1zVlVGQlZTeERRVUZETEZsQlFWa3NRMEZCUXp0UlFVRkZMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRemRETEVsQlFVa3NjMEpCUVhOQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXp0UlFVRkZMRTlCUVU4c1MwRkJTeXhEUVVGRE8wbEJRMnBFTEVsQlFVa3NZVUZCWVN4RFFVRkRMRVZCUVVVc1EwRkJRenRSUVVGRkxFOUJRVThzUzBGQlN5eERRVUZETzBsQlEzQkRMRTlCUVU4c1NVRkJTU3hEUVVGRE8wRkJRMlFzUTBGQlF6dEJRVVZFTEZOQlFWTXNkVUpCUVhWQ0xFTkJRVU1zUzBGQllUdEpRVU0xUXl4UFFVRlBMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dEJRVU42UXl4RFFVRkRPMEZCUlVRc1UwRkJVeXh6UWtGQmMwSXNRMEZCUXl4VlFVRnZRanRKUVVOc1JDeE5RVUZOTEdkQ1FVRm5RaXhIUVVGSExGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1JVRkJSVHRSUVVOd1JDeE5RVUZOTEZWQlFWVXNSMEZCUnl4MVFrRkJkVUlzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJRenRSUVVNM1JDeFBRVUZQTzFsQlEwd3NSMEZCUnl4RlFVRkZMRlZCUVZVN1dVRkRaaXhSUVVGUkxFVkJRVVVzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4VFFVRlRMRU5CUVVNN1owSkJRMnhETEVOQlFVTXNRMEZCUXl4MVFrRkJkVUlzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8yZENRVU5zUkN4RFFVRkRMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVVXNVMEZCVXl4RFFVRkRMRU5CUVVNN1UwRkRjRVVzUTBGQlF6dEpRVU5LTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUlVnc1QwRkJUeXhEUVVGRExFVkJRVlVzUlVGQlZ5eEZRVUZGTzFGQlF6ZENMRTFCUVUwc1ZVRkJWU3hIUVVGSExIVkNRVUYxUWl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJReTlETEUxQlFVMHNVVUZCVVN4SFFVRkhPMWxCUTJZc01FSkJRVEJDTzFsQlF6RkNMREJDUVVFd1FqdFpRVU14UWl4cFEwRkJhVU03V1VGRGFrTXNkVUpCUVhWQ08xbEJRM1pDTERCQ1FVRXdRanRUUVVNelFpeERRVUZETzFGQlJVWXNTVUZCU1N4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXl4VlFVRlZMRU5CUVVNc1VVRkJVU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXp0WlFVTXpSQ3hQUVVGUExFbEJRVWtzUTBGQlF6dFJRVU5rTEVOQlFVTTdVVUZGUkN4UFFVRlBMR2RDUVVGblFpeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhGUVVGRkxGRkJRVkVzUlVGQlJTeEZRVUZGTEVWQlFVVTdXVUZEYWtRc1QwRkJUeXhEUVVOTUxGVkJRVlVzUTBGQlF5eFJRVUZSTEVOQlFVTXNSMEZCUnl4RFFVRkRPMmRDUVVONFFpeFZRVUZWTEVOQlFVTXNVVUZCVVN4RFFVRkRMRkZCUVZFc1EwRkJRenRuUWtGRE4wSXNWVUZCVlN4RFFVRkRMRkZCUVZFc1EwRkJReXhIUVVGSExFZEJRVWNzUzBGQlN5eERRVUZETzJkQ1FVTm9ReXhWUVVGVkxFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NSMEZCUnl4TlFVRk5MRU5CUVVNN1owSkJRMnBETEZWQlFWVXNRMEZCUXl4UlFVRlJMRU5CUVVNc1IwRkJSeXhIUVVGSExGZEJRVmNzUTBGQlF6dG5Ra0ZEZEVNc1ZVRkJWU3hEUVVGRExGRkJRVkVzUTBGQlF5eEhRVUZITEVkQlFVY3NXVUZCV1N4RFFVRkRPMmRDUVVOMlF5eFZRVUZWTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWRCUVVjc1VVRkJVU3hMUVVGTExFTkJRVU03WjBKQlEzSkRMRlZCUVZVc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eFJRVUZSTEUxQlFVMHNRMEZCUXp0blFrRkRkRU1zVlVGQlZTeERRVUZETEZGQlFWRXNRMEZCUXl4SFFVRkhMRkZCUVZFc1YwRkJWeXhEUVVGRE8yZENRVU16UXl4VlFVRlZMRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzVVVGQlVTeFpRVUZaTEVOQlFVTXNRMEZETjBNc1EwRkJRenRSUVVOS0xFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEwd3NRMEZCUXl4RFFVRkRPMEZCUTBvc1EwRkJRenRCUVVWRUxGTkJRVk1zYVVKQlFXbENMRU5CUVVNc1NVRkJXVHRKUVVOeVF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1dVRkJXU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzBGQlF6RkRMRU5CUVVNN1FVRkZSQ3hUUVVGVExHdENRVUZyUWl4RFFVRkRMRk5CUVdsQ0xFVkJRVVVzVTBGQmFVSTdTVUZET1VRc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eFZRVUZWTEVOQlFVTXNVMEZCVXl4RFFVRkRMRVZCUVVVc1EwRkJRenRSUVVNNVFpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRzlEUVVGdlF5eFRRVUZUTEVWQlFVVXNRMEZCUXl4RFFVRkRPMGxCUTI1RkxFTkJRVU03U1VGRlJDeEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hGUVVGRkxGTkJRVk1zUlVGQlJTeEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFVRkRPMGxCUlRkRExFdEJRVXNzVFVGQlRTeEpRVUZKTEVsQlFVa3NSVUZCUlN4RFFVRkRMRmRCUVZjc1EwRkJReXhUUVVGVExFTkJRVU1zUlVGQlJTeERRVUZETzFGQlF6ZERMRTFCUVUwc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRemxETEUxQlFVMHNWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUlRsRExFMUJRVTBzU1VGQlNTeEhRVUZITEVWQlFVVXNRMEZCUXl4UlFVRlJMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03VVVGRmNrTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1YwRkJWeXhGUVVGRkxFVkJRVVVzUTBGQlF6dFpRVU4yUWl4clFrRkJhMElzUTBGQlF5eFZRVUZWTEVWQlFVVXNWVUZCVlN4RFFVRkRMRU5CUVVNN1VVRkROME1zUTBGQlF6dGhRVUZOTEVOQlFVTTdXVUZEVGl4RlFVRkZMRU5CUVVNc1dVRkJXU3hEUVVGRExGVkJRVlVzUlVGQlJTeFZRVUZWTEVOQlFVTXNRMEZCUXp0UlFVTXhReXhEUVVGRE8wbEJRMGdzUTBGQlF6dEJRVU5JTEVOQlFVTTdRVUZGUkN4TlFVRk5MR05CUVdNc1IwRkJSeXhKUVVGSkxFOUJRVThzUlVGQlJUdExRVU5xUXl4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTTdTMEZEZUVJc1YwRkJWeXhEUVVGRExESkNRVUV5UWl4RFFVRkRPMHRCUTNoRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVWQlFVVXNlVU5CUVhsRExFVkJRVVVzUzBGQlN5eERRVUZETzB0QlEycEZMRTFCUVUwc1EwRkJReXhUUVVGVExFVkJRVVVzYlVOQlFXMURMRVZCUVVVc1MwRkJTeXhEUVVGRE8wdEJRemRFTEUxQlFVMHNRMEZEVEN4VFFVRlRMRVZCUTFRc2NVUkJRWEZFTEVWQlEzSkVMRXRCUVVzc1EwRkRUanRMUVVOQkxFMUJRVTBzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSU3hsUVVGbExFVkJRVVVzYVVKQlFXbENMRU5CUVVNN1MwRkROMFFzVFVGQlRTeERRVUZETEZWQlFWVXNSVUZCUlN3d1EwRkJNRU1zUlVGQlJTeExRVUZMTEVOQlFVTTdTMEZEY2tVc1RVRkJUU3hEUVVOTUxESkNRVUV5UWl4RlFVTXpRaXh0UlVGQmJVVXNSVUZEYmtVc2FVSkJRV2xDTEVOQlEyeENPMHRCUTBFc1RVRkJUU3hEUVVOTUxIZENRVUYzUWl4RlFVTjRRaXh6UWtGQmMwSXNSVUZEZEVJc1owTkJRV2RETEVOQlEycERPMHRCUTBFc1RVRkJUU3hEUVVGRExIVkNRVUYxUWl4RlFVRkZMR2xEUVVGcFF5eEZRVUZGTEV0QlFVc3NRMEZCUXp0TFFVTjZSU3hOUVVGTkxFTkJRVU1zYTBKQlFXdENMRVZCUVVVc05FSkJRVFJDTEVWQlFVVXNaVUZCWlN4RFFVRkRPMHRCUTNwRkxFMUJRVTBzUTBGQlF5eHRRa0ZCYlVJc1JVRkJSU3cyUWtGQk5rSXNSVUZCUlN4aFFVRmhMRU5CUVVNN1MwRkRla1VzVFVGQlRTeERRVUZETEdOQlFXTXNSVUZCUlN3MFEwRkJORU1zUlVGQlJTeExRVUZMTEVOQlFVTTdTMEZETTBVc1RVRkJUU3hEUVVGRExGTkJRVk1zUlVGQlJTeDNRMEZCZDBNc1JVRkJSU3hMUVVGTExFTkJRVU03UzBGRGJFVXNUVUZCVFN4RFFVTk1MRmxCUVZrc1JVRkRXaXhwU0VGQmFVZ3NSVUZEYWtnc1MwRkJTeXhEUVVOT08wdEJRMEVzVFVGQlRTeERRVU5NTEdkRFFVRm5ReXhGUVVOb1F5eHhSMEZCY1Vjc1EwRkRkRWM3UzBGRFFTeE5RVUZOTEVOQlFVTXNTMEZCU3l4RlFVRkZMRTlCUVZrc1JVRkJSU3hGUVVGRk8wbEJRemRDTEUxQlFVMHNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRM0JDTEVWQlFVVXNRMEZCUXl4WlFVRlpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RlFVRkZMRVZCUVVVc1kwRkJZeXhEUVVGRExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlEyNUZMRU5CUVVNN1NVRkZSaXhOUVVGTkxFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVTjRRaXhGUVVGRkxFTkJRVU1zV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUlVGQlJTeEZRVUZGTEcxQ1FVRnRRaXhEUVVGRExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlEzaEZMRU5CUVVNN1NVRkZSaXhKUVVGSkxGbEJRVmtzUjBGQlJ5eFRRVUZUTEVOQlFVTTdTVUZGTjBJc1RVRkJUU3hQUVVGUExFZEJRVWNzUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUXp0SlFVVTFRaXhKUVVGSk8wbEJRMFlzZDBOQlFYZERPMGxCUTNoRExFZEJRVWM3U1VGRFNDeDNRMEZCZDBNN1NVRkRlRU1zUzBGQlN6dEpRVU5NTEhkRFFVRjNRenRKUVVONFF5eEpRVUZKTzBsQlEwb3NkME5CUVhkRE8wbEJRM2hETEZkQlFWY3NSVUZEV0N4TlFVRk5PMGxCUTA0c2QwTkJRWGRETzBsQlEzaERMRXRCUVVzN1NVRkRUQ3gzUTBGQmQwTTdTVUZEZUVNc2FVSkJRV2xDTzBsQlEycENMSGREUVVGM1F6dEpRVU40UXl4TFFVRkxPMGxCUTB3c2QwTkJRWGRETzBsQlEzaERMRTFCUVUwc1JVRkZUaXhaUVVGWk8wbEJRMW9zZDBOQlFYZERPMGxCUTNoRExGVkJRVlU3U1VGRFZpeDNRMEZCZDBNN1NVRkRlRU1zUzBGQlN6dEpRVU5NTEhkRFFVRjNRenRKUVVONFF5eGxRVUZsTzBsQlEyWXNkME5CUVhkRE8wbEJRM2hETEU5QlFVOHNSMEZEVWl4SFFVRkhMRTlCUVU4c1EwRkJRenRKUVVOYUxFMUJRVTBzUjBGQlJ5eEhRVUZITEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhKUVVGSkxFTkJRVU03VVVGRFNDeEpRVUZKTEV0QlFVc3NSVUZCUlN4RFFVRkRPMWxCUTFZc1dVRkJXU3hIUVVGSExFVkJRVVU3YVVKQlEyUXNXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZMRkZCUVZFc1EwRkJReXhGUVVGRkxFOUJRVThzUTBGQlF6dHBRa0ZEZWtRc1VVRkJVU3hGUVVGRkxFTkJRVU03V1VGRlpDeE5RVUZOTEZGQlFWRXNSMEZCUnl4WlFVRlpMRU5CUVVNc1QwRkJUeXhEUVVOdVF5eG5Ra0ZCWjBJc1JVRkRhRUlzUTBGQlF5eERRVUZOTEVWQlFVVXNUMEZCWlN4RlFVRkZMRVZCUVVVN1owSkJRekZDTEUxQlFVMHNTMEZCU3l4SFFVRkhMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdaMEpCUlc1RExFbEJRVWtzUzBGQlN5eExRVUZMTEZOQlFWTXNSVUZCUlN4RFFVRkRPMjlDUVVONFFpeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVTldMR3REUVVGclF5eFBRVUZQTEdOQlFXTXNRMEZEZUVRc1EwRkJRenR2UWtGRFJpeFBRVUZQTEVWQlFVVXNRMEZCUXp0blFrRkRXaXhEUVVGRE8yZENRVVZFTEU5QlFVOHNTMEZCU3l4RFFVRkRPMWxCUTJZc1EwRkJReXhEUVVOR0xFTkJRVU03V1VGRlJpeFpRVUZaTEVkQlFVY3NVVUZCVVN4RFFVRkRPMUZCUXpGQ0xFTkJRVU03U1VGRFNDeERRVUZETzBsQlFVTXNUVUZCVFN4RFFVRkRPMUZCUTFBc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eDVSRUZCZVVRc1EwRkJReXhEUVVGRE8wbEJRM1JGTEVOQlFVTTdTVUZGUkN4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVOUUxIbENRVUY1UWl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEVkQlFVY3NRMEZCUXl4SlFVRkpMRmxCUVZrc1QwRkJUeXhGUVVGRkxFTkJRM1JHTEVOQlFVTTdTVUZGUml4WlFVRlpMRWRCUVVjc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eFpRVUZaTEVOQlFVTTdVVUZETVVNc1EwRkJReXhEUVVGRExGbEJRVms3VVVGRFpDeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVVXNXVUZCV1N4RFFVRkRMRU5CUVVNN1NVRkZNME1zVFVGQlRTeEhRVUZITEdsQ1FVRnBRaXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUXpsRUxFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNjVVJCUVhGRUxFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTTdTVUZEZUVVc1VVRkJVU3hEUVVGRExGVkJRVlVzVFVGQlRTeEZRVUZGTEVOQlFVTXNRMEZCUXp0SlFVTTNRaXhKUVVGSkxFMUJRVTBzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMUZCUTNaQ0xFMUJRVTBzYVVKQlFXbENMRWRCUVVjc2MwSkJRWE5DTEVOQlF6bERMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVU4wUkN4RFFVRkRPMUZCUTBZc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5d3dRa0ZCTUVJc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF6dFJRVU0xUXl4TlFVRk5MR0ZCUVdFc1IwRkJSeXhGUVVGRkxFTkJRVU1zVjBGQlZ5eERRVU5zUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVWQlFVVXNSVUZCUlN4dFFrRkJiVUlzUTBGQlF5eERRVU01UXl4RFFVRkRPMUZCUTBZc1NVRkJTU3hEUVVGRE8xbEJRMGdzVFVGQlRTeFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVVXNTMEZCU3l4RlFVRkZMRlZCUVZVc1EwRkJReXhEUVVGRE8xbEJRMnhGTEUxQlFVMHNWVUZCVlN4SFFVRkhMRVZCUVVVc1EwRkJReXhqUVVGakxFTkJRVU1zV1VGQldTeEZRVUZGTEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03V1VGRGNFVXNTVUZCU1N4VlFVRlZMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU03WjBKQlEzSkNMRTFCUVUwc1NVRkJTU3hoUVVGaExFTkJRM0pDTEVWQlFVVXNRMEZCUXl3MFFrRkJORUlzUTBGQlF5eFZRVUZWTEVOQlFVTXNTMEZCU3l4RFFVRkRMRmRCUVZjc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGRGNFVXNRMEZCUXp0WlFVTktMRU5CUVVNN1dVRkZSQ3hOUVVGTkxGbEJRVmtzUjBGQlJ5eEZRVUZGTEVOQlFVTXNNRUpCUVRCQ0xFTkJRMmhFTEZWQlFWVXNRMEZCUXl4TlFVRk5MRVZCUTJwQ0xFVkJRVVVzUTBGQlF5eEhRVUZITEVWQlEwNHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhaUVVGWkxFTkJRVU1zUlVGRE1VSXNVMEZCVXl4RlFVTlVMRmxCUVZrc1EwRkRZaXhEUVVGRE8xbEJRMFlzU1VGQlNTeFpRVUZaTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRE8yZENRVU12UWl4TlFVRk5MRWxCUVVrc1lVRkJZU3hEUVVOeVFpeFpRVUZaTEVOQlFVTXNUVUZCVFR0eFFrRkRhRUlzUjBGQlJ5eERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZMRVZCUVVVc1EwRkRZaXhGUVVGRkxFTkJRVU1zTkVKQlFUUkNMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZEZWtRN2NVSkJRMEVzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVTmtMRU5CUVVNN1dVRkRTaXhEUVVGRE8xbEJSVVFzVFVGQlRTeHRRa0ZCYlVJc1IwRkJkVUk3WjBKQlF6bERMRWRCUVVjc1dVRkJXU3hEUVVGRExFOUJRVTg3WjBKQlEzWkNMRTFCUVUwc1JVRkJSU3hoUVVGaE8yZENRVU55UWl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRExGVkJRVlVzUTBGQlF5eE5RVUZOTzJkQ1FVTTFRaXhYUVVGWExFVkJRVVVzUzBGQlN6dG5Ra0ZEYkVJc1UwRkJVeXhGUVVGRkxFdEJRVXM3WjBKQlEyaENMR0ZCUVdFc1JVRkJSU3hMUVVGTE8yRkJRM0pDTEVOQlFVTTdXVUZEUml4TlFVRk5MR2xDUVVGcFFpeEhRVUZITEVWQlFVVTdhVUpCUTNwQ0xHdENRVUZyUWl4RFFVTnFRanRuUWtGRFJTeEhRVUZITEZsQlFWazdaMEpCUTJZc1QwRkJUeXhGUVVGRkxHMUNRVUZ0UWp0aFFVTTNRaXhGUVVORUxGVkJRVlVzUlVGRFZpeERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc2VVSkJRWGxDTEVOQlEyeERPMmxDUVVOQkxFbEJRVWtzUTBGQlF5eERRVUZETEZGQlFWRXNSVUZCUlN4RlFVRkZMRU5CUVVNc1VVRkJVU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUldoRUxFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSU3hEUVVGRE8yZENRVU4yUWl4TlFVRk5MRWxCUVVrc1lVRkJZU3hEUVVOeVFpeHZSRUZCYjBRc1ZVRkJWU3hGUVVGRkxFTkJRMnBGTEVOQlFVTTdXVUZEU2l4RFFVRkRPMWxCUlVRc05FSkJRVFJDTEVOQlFVTXNXVUZCV1N4RlFVRkZMRzFDUVVGdFFpeERRVUZETEVOQlFVTTdXVUZEYUVVc1RVRkJUU3hsUVVGbExFZEJRVWNzVFVGQlRTeE5RVUZOTEVOQlFVTTdaMEpCUTI1RExFdEJRVXNzUlVGQlJTeHBRa0ZCYVVJN1owSkJRM2hDTEZGQlFWRXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5d3dRa0ZCTUVJc1EwRkJReXhGUVVGRkxFTkJRVU03WjBKQlEycEVMRk5CUVZNc1JVRkJSVHR2UWtGRFZDeHBRa0ZCYVVJc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZGTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zUlVGQlJTeERRVUZETzJsQ1FVTnFSRHRuUWtGRFJDeFBRVUZQTEVWQlFVVTdiMEpCUTFBc01FSkJRVEJDTEVWQlFVVTdiMEpCUXpWQ0xIVkNRVUYxUWl4RlFVRkZPMjlDUVVONlFpeFhRVUZYTEVOQlFVTTdkMEpCUTFZc1ZVRkJWU3hGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTEV0QlFVc3NSVUZCUlN4UFFVRlBMRVZCUVVVc1RVRkJUU3hGUVVGRkxFdEJRVXNzUTBGQlF6dDNRa0ZEYmtRc2FVSkJRV2xDTEVWQlFVVXNRMEZCUXl4alFVRmpMRU5CUVVNN2QwSkJRMjVETEZkQlFWY3NSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZMR05CUVdNc1EwRkJReXhEUVVGRE8zZENRVU4yUkN4blFrRkJaMElzUlVGQlJTeERRVUZETEUxQlFVMHNSVUZCUlN4VFFVRlRMRVZCUVVVc1UwRkJVeXhGUVVGRkxGRkJRVkVzUTBGQlF6dDNRa0ZETVVRc1kwRkJZeXhGUVVGRkxFbEJRVWs3Y1VKQlEzSkNMRU5CUVVNN2IwSkJRMFlzVVVGQlVTeERRVUZETzNkQ1FVTlFMRTlCUVU4c1JVRkJSU3hqUVVGak8zRkNRVU40UWl4RFFVRkRPMjlDUVVOR0xFOUJRVThzUTBGQlF6dDNRa0ZEVGl4cFFrRkJhVUlzUlVGQlJTeEpRVUZKTzNkQ1FVTjJRaXhWUVVGVkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRPM2RDUVVOd1FpeE5RVUZOTEVWQlFVVXNSVUZCUlN4aFFVRmhMRVZCUVVVc1QwRkJUeXhGUVVGRkxHRkJRV0VzUlVGQlJTeEhRVUZITEVOQlFVTXNTVUZCU1N4RlFVRkZPM0ZDUVVNMVJDeERRVUZETzJsQ1FVTklPMkZCUTBZc1EwRkJReXhEUVVGRE8xbEJRMGdzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZEVGl4MVFrRkJkVUlzVFVGQlRTeGpRVUZqTEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVOdVJTeERRVUZETzFsQlEwWXNUVUZCVFN4bFFVRmxMRU5CUVVNc1MwRkJTeXhEUVVGRE8yZENRVU14UWl4SlFVRkpMRVZCUVVVc1IwRkJSeXhOUVVGTkxFbEJRVWtzV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxPMmRDUVVNeFF5eE5RVUZOTEVWQlFVVXNTMEZCU3p0blFrRkRZaXhKUVVGSkxFVkJRVVVzUjBGQlJ5eFpRVUZaTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzN1owSkJRMmhETEZOQlFWTXNSVUZCUlN4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3p0blFrRkRlRU1zYzBKQlFYTkNMRVZCUVVVc1EwRkJReXhyUWtGQmEwSXNSVUZCUlN4aFFVRmhMRVZCUVVVc1JVRkJSVHR2UWtGRE5VUXNUVUZCVFN4clFrRkJhMElzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVTnlReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEdGQlFXRXNRMEZCUXl4RlFVTXpRaXhyUWtGQmEwSXNRMEZEYmtJc1EwRkJRenR2UWtGRlJpeEpRVUZKTEd0Q1FVRnJRaXhEUVVGRExGVkJRVlVzUTBGQlF5eGhRVUZoTEVOQlFVTXNSVUZCUlN4RFFVRkRPM2RDUVVOcVJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVOd1FpeFRRVUZUTEVWQlExUXNTVUZCU1RzMlFrRkRSQ3hSUVVGUkxFTkJRVU1zWVVGQllTeEZRVUZGTEd0Q1FVRnJRaXhEUVVGRE96WkNRVU16UXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF6czJRa0ZEWml4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRMklzUTBGQlF6dHZRa0ZEU2l4RFFVRkRPMjlDUVVWRUxFOUJRVThzYTBKQlFXdENMRU5CUVVNN1owSkJRelZDTEVOQlFVTTdZVUZEUml4RFFVRkRMRU5CUVVNN1dVRkRTQ3hOUVVGTkxHVkJRV1VzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXp0UlFVTm9ReXhEUVVGRE8yZENRVUZUTEVOQlFVTTdXVUZEVkN4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRExHRkJRV0VzUlVGQlJTeEZRVUZGTEZOQlFWTXNSVUZCUlN4SlFVRkpMRVZCUVVVc1MwRkJTeXhGUVVGRkxFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTTdVVUZETjBRc1EwRkJRenRKUVVOSUxFTkJRVU03VTBGQlRTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1VVRkRjRUlzTkVKQlFUUkNMRU5CUVVNc1dVRkJXU3hGUVVGRk8xbEJRM3BETEUxQlFVMHNSVUZCUlN4TlFVRk5PMWxCUTJRc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF5eFZRVUZWTEVOQlFVTXNUVUZCVFR0WlFVTTFRaXhYUVVGWExFVkJRVVVzUzBGQlN6dFpRVU5zUWl4VFFVRlRMRVZCUVVVc1ZVRkJWVHRaUVVOeVFpeGhRVUZoTEVWQlFVVXNWVUZCVlR0VFFVTXhRaXhEUVVGRExFTkJRVU03U1VGRFRDeERRVUZETzFOQlFVMHNRMEZCUXp0UlFVTk9MR3RDUVVGclFpeERRVU5vUWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEhRVUZITEVWQlFVVXNSVUZCUlN4WFFVRlhMRU5CUVVNc1JVRkRja01zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhGUVVGRkxFVkJRVVVzVFVGQlRTeERRVUZETEVOQlEycERMRU5CUVVNN1NVRkRTaXhEUVVGRE8wbEJSVVFzVFVGQlRTeFBRVUZQTEVkQlFVYzdVVUZEWkN4TFFVRkxMRVZCUVVVc2RVSkJRWFZDTEVOQlFVTXNTMEZCU3l4RlFVRkZMRXRCUVVzc1EwRkJRenRSUVVNMVF5eFhRVUZYTEVWQlFVVXNhVVJCUVdsRU8xRkJRemxFTEdGQlFXRXNSVUZCUlN4dlEwRkJiME03VVVGRGJrUXNTMEZCU3l4RlFVRkZMSFZEUVVGMVF6dFJRVU01UXl4SlFVRkpMRVZCUVVVc01FSkJRVEJDTzB0QlEycERMRU5CUVVNN1NVRkZSaXhOUVVGTkxHVkJRV1VzUjBGQlJ5eEhRVUZITEVOQlFVTTdTVUZETlVJc1RVRkJUU3h0UWtGQmJVSXNSMEZCUnl4UFFVRlBMRU5CUVVNN1NVRkZjRU1zWlVGQlpTeERRVUZETEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1NVRkROVUlzWlVGQlpTeERRVUZETEZkQlFWY3NSMEZCUnl4WFFVRlhMRU5CUVVNN1NVRkRNVU1zWlVGQlpTeERRVUZETEU5QlFVOHNSMEZCUnl4UFFVRlBMRU5CUVVNN1NVRkZiRU1zVDBGQlR5eGxRVUZsTEVOQlFVTXNTVUZCU1N4RFFVRkRPMGxCUXpWQ0xFOUJRVThzWlVGQlpTeERRVUZETEV0QlFVc3NRMEZCUXp0SlFVTTNRaXhQUVVGUExHVkJRV1VzUTBGQlF5eFBRVUZQTEVOQlFVTTdTVUZETDBJc1pVRkJaU3hEUVVGRExFbEJRVWtzUjBGQlJ5eE5RVUZOTzFGQlF6TkNMRU5CUVVNc1EwRkJReXhIUVVGSExGbEJRVmtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3p0UlFVTTFRaXhEUVVGRExFTkJRVU1zUjBGQlJ5eHBRa0ZCYVVJc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTTdTVUZGZUVVc1JVRkJSU3hEUVVGRExHRkJRV0VzUTBGRFpDeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hqUVVGakxFTkJRVU1zUlVGRGFrTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhsUVVGbExFTkJRVU1zUTBGRGFFTXNRMEZCUXp0SlFVVkdMRVZCUVVVc1EwRkJReXhoUVVGaExFTkJRMlFzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc2JVSkJRVzFDTEVOQlFVTXNSVUZEZEVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhEUVVOd1F5eERRVUZETzBsQlJVWXNTVUZCU1N4TFFVRkxMRWxCUVVrc1dVRkJXVHRSUVVOMlFpeEZRVUZGTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEZGQlFWRXNRMEZCUXl4RlFVRkZMRmxCUVZrc1EwRkJReXhEUVVGRE8wbEJSVGxFTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc05FTkJRVFJETEVOQlFVTXNRMEZCUXp0SlFVTjJSQ3hSUVVGUkxFTkJRVU1zWVVGQllTeEZRVUZGTEVWQlFVVXNSMEZCUnl4RlFVRkZMRTFCUVUwc1JVRkJSU3hEUVVGRExFTkJRVU03U1VGRGVrTXNVVUZCVVN4RFFVRkRMR2RDUVVGblFpeEZRVUZGTEVWQlFVVXNSMEZCUnl4RlFVRkZMRTFCUVUwc1JVRkJSU3hEUVVGRExFTkJRVU03U1VGRE5VTXNVVUZCVVN4RFFVRkRMSEZDUVVGeFFpeEZRVUZGTEVWQlFVVXNSMEZCUnl4RlFVRkZMRTFCUVUwc1JVRkJSU3hEUVVGRExFTkJRVU03U1VGRGFrUXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXgxUWtGQmRVSXNRMEZCUXl4RFFVRkRPMGxCUTJ4RExGRkJRVkVzUTBGQlF5d3JRa0ZCSzBJc1JVRkJSU3hGUVVGRkxFZEJRVWNzUlVGQlJTeE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRPMGxCUXpORUxFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlEwNHNXVUZCV1N4SlFVRkpMRGhDUVVFNFFpeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJRM0pGTEVOQlFVTTdTVUZEUml4SlFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMUlzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4NVJFRkJlVVFzUTBGQlF5eERRVUZETzFGQlEzQkZMRkZCUVZFc1EwRkJReXhoUVVGaExFVkJRVVU3V1VGRGRFSXNSMEZCUnl4RlFVRkZMRTFCUVUwN1dVRkRXQ3hIUVVGSExFVkJRVVVzUlVGQlJTeEhRVUZITEU5QlFVOHNRMEZCUXl4SFFVRkhMRVZCUVVVc1VVRkJVU3hGUVVGRkxGbEJRVmtzUlVGQlJUdFRRVU5vUkN4RFFVRkRMRU5CUVVNN1NVRkRUQ3hEUVVGRE8wRkJRMGdzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZGVEN4TlFVRk5MR05CUVdNc1IwRkJSeXhKUVVGSkxFOUJRVThzUlVGQlJUdExRVU5xUXl4UFFVRlBMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTTdTMEZETVVJc1RVRkJUU3hEUVVGRExHbENRVUZwUWl4RlFVRkZMR2RDUVVGblFpeERRVUZETzB0QlF6TkRMRTFCUVUwc1EwRkJReXh0UWtGQmJVSXNSVUZCUlN4clFrRkJhMElzUTBGQlF6dExRVU12UXl4TlFVRk5MRU5CUVVNc2JVSkJRVzFDTEVWQlFVVXNLME5CUVN0RExFTkJRVU03UzBGRE5VVXNWMEZCVnl4RFFVTldMREpGUVVFeVJTeERRVU0xUlR0TFFVTkJMRTFCUVUwc1EwRkJReXhMUVVGTExFVkJRVVVzVDBGQldTeEZRVUZGTEVWQlFVVTdTVUZETjBJc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZEY0VJc1JVRkJSU3hEUVVGRExGbEJRVmtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFVkJRVVVzUlVGQlJTeGpRVUZqTEVOQlFVTXNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkRia1VzUTBGQlF6dEpRVVZHTEUxQlFVMHNUMEZCVHl4SFFVRkhMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU03U1VGRk5VSXNUVUZCVFN4SFFVRkhMRWRCUVVjc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhEUVVGRE8wbEJRekZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUTFBc2VVSkJRWGxDTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1QwRkJUeXhEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEVsQlFVa3NXVUZCV1N4UFFVRlBMRVZCUVVVc1EwRkRkRVlzUTBGQlF6dEpRVVZHTEhkRFFVRjNRenRKUVVONFF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkZMRTFCUVUwc1JVRkJSU3hOUVVGTkxFVkJRVVVzUjBGQlJ5eFBRVUZQTEVOQlFVTTdTVUZGZGtNc1RVRkJUU3hOUVVGTkxFZEJRVlVzUlVGQlJTeERRVUZETzBsQlEzcENMRWxCUVVrc1NVRkJTU3hGUVVGRkxFTkJRVU03VVVGRFZDeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1lVRkJZU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZEVNc1EwRkJRenRKUVVWRUxFbEJRVWtzVFVGQlRTeEZRVUZGTEVOQlFVTTdVVUZEV0N4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExIVkNRVUYxUWl4TlFVRk5MRXRCUVVzc1EwRkJReXhEUVVGRE8xRkJRemRETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFMUJRVTBzWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEyNUVMRU5CUVVNN1NVRkRSQ3hOUVVGTkxFMUJRVTBzUjBGQmQwSXNSVUZCUlN4RFFVRkRPMGxCUTNaRExFMUJRVTBzVlVGQlZTeEhRVUYzUWl4RlFVRkZMRU5CUVVNN1NVRkZNME1zU1VGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwN1VVRkRiRUlzVFVGQlRTeEpRVUZKTEdGQlFXRXNRMEZCUXl3NFFrRkJPRUlzUTBGQlF5eERRVUZETzBsQlJURkVMRXRCUVVzc1RVRkJUU3hEUVVGRExFbEJRVWtzVFVGQlRTeEZRVUZGTEVOQlFVTTdVVUZEZGtJc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eG5RMEZCWjBNc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1VVRkRiRVVzVFVGQlRTeFBRVUZQTEVkQlFVY3NiMEpCUVc5Q0xFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEZUVNc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlN4RlFVRkZPMWxCUTNoQ0xFbEJRVWtzUzBGQlN5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRPMmRDUVVObUxFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRE8xbEJRemRDTEVOQlFVTTdVVUZEU0N4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOSUxIVkNRVUYxUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hWUVVGVkxFTkJRVU1zUTBGQlF6dEpRVU42UXl4RFFVRkRPMGxCUTBRc1RVRkJUU3hqUVVGakxFZEJRVWNzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVNM1F5eE5RVUZOTEZkQlFWY3NSMEZCUnl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzBsQlF6bERMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zVTBGQlV5eGpRVUZqTEVOQlFVTXNUVUZCVFN4dlFrRkJiMElzUTBGQlF5eERRVUZETzBsQlEyaEZMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zVTBGQlV5eFhRVUZYTEVOQlFVTXNUVUZCVFN4M1FrRkJkMElzUTBGQlF5eERRVUZETzBsQlEycEZMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zV1VGQldTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dEpRVU5vUkN4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExHVkJRV1VzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4VlFVRlZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03U1VGRGRrUXNXVUZCV1N4RFFVRkRMR05CUVdNc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dEpRVU55UXl4bFFVRmxMRU5CUVVNc1YwRkJWeXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzBGQlEzWkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJSVXdzVFVGQlRTeHJRa0ZCYTBJc1IwRkJSeXhKUVVGSkxFOUJRVThzUlVGQlJUdExRVU55UXl4UFFVRlBMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTTdTMEZET1VJc1RVRkJUU3hEUVVGRExHbENRVUZwUWl4RlFVRkZMR2RDUVVGblFpeERRVUZETzB0QlF6TkRMRTFCUVUwc1EwRkJReXh0UWtGQmJVSXNSVUZCUlN4clFrRkJhMElzUTBGQlF6dExRVU12UXl4TlFVRk5MRU5CUVVNc2JVSkJRVzFDTEVWQlFVVXNLME5CUVN0RExFTkJRVU03UzBGRE5VVXNUVUZCVFN4RFFVRkRMRzFDUVVGdFFpeEZRVUZGTEcxRFFVRnRReXhEUVVGRE8wdEJRMmhGTEUxQlFVMHNRMEZCUXl4elFrRkJjMElzUlVGQlJTeGpRVUZqTEVOQlFVTTdTMEZET1VNc1RVRkJUU3hEUVVOTUxITkNRVUZ6UWl4RlFVTjBRaXcyUzBGQk5rc3NRMEZET1VzN1MwRkRRU3hYUVVGWExFTkJRMVlzTWtWQlFUSkZMRU5CUXpWRk8wdEJRMEVzVFVGQlRTeERRVUZETEV0QlFVc3NSVUZCUlN4UFFVRlpMRVZCUVVVc1JVRkJSVHRKUVVNM1FpeE5RVUZOTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVOd1FpeEZRVUZGTEVOQlFVTXNXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZMR05CUVdNc1EwRkJReXhGUVVGRkxFOUJRVThzUTBGQlF5eERRVU51UlN4RFFVRkRPMGxCUlVZc1RVRkJUU3hQUVVGUExFZEJRVWNzUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUXp0SlFVVTFRaXhOUVVGTkxFZEJRVWNzUjBGQlJ5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVOQlFVTTdTVUZET1VNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGRFVDeDVRa0ZCZVVJc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eFBRVUZQTEVOQlFVTXNVVUZCVVN4SFFVRkhMRU5CUVVNc1NVRkJTU3haUVVGWkxFOUJRVThzUlVGQlJTeERRVU4wUml4RFFVRkRPMGxCUlVZc2QwTkJRWGRETzBsQlEzaERMRWxCUVVrc1JVRkJSU3hKUVVGSkxFVkJRVVVzVFVGQlRTeEZRVUZGTEUxQlFVMHNSVUZCUlN4TlFVRk5MRVZCUVVVc1UwRkJVeXhGUVVGRkxFZEJRVWNzVDBGQlR5eERRVUZETzBsQlJURkVMRWxCUVVrc1EwRkJRenRSUVVOSUxFbEJRVWtzUTBGQlF6dFpRVU5JTEUxQlFVMHNSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGTkJRVk1zUTBGQlF6dFpRVU5xUkN3MlJFRkJOa1E3VVVGREwwUXNRMEZCUXp0UlFVRkRMRTlCUVU4c1EwRkJWU3hGUVVGRkxFTkJRVU03V1VGRGNFSXNZMEZCWXp0UlFVTm9RaXhEUVVGRE8wbEJRMGdzUTBGQlF6dEpRVUZETEU5QlFVOHNRMEZCVlN4RlFVRkZMRU5CUVVNN1VVRkRjRUlzVFVGQlRTeEpRVUZKTEd0Q1FVRnJRaXhEUVVGRExEaENRVUU0UWl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8wbEJRMnhGTEVOQlFVTTdTVUZGUkN4TlFVRk5MRTFCUVUwc1IwRkJWU3hGUVVGRkxFTkJRVU03U1VGRGVrSXNTVUZCU1N4SlFVRkpMRVZCUVVVc1EwRkJRenRSUVVOVUxFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU4wUXl4RFFVRkRPMGxCUlVRc1NVRkJTU3hOUVVGTkxFVkJRVVVzUTBGQlF6dFJRVU5ZTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc2RVSkJRWFZDTEUxQlFVMHNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkROME1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1RVRkJUU3huUWtGQlowSXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGJrUXNRMEZCUXp0SlFVVkVMRWxCUVVrc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTzFGQlEyeENMRTFCUVUwc1NVRkJTU3hoUVVGaExFTkJRVU1zT0VKQlFUaENMRU5CUVVNc1EwRkJRenRKUVVVeFJDeE5RVUZOTEdkQ1FVRm5RaXhIUVVGSExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlEzQkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFVkJRVVVzUTBGRFVpeExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJRenRSUVVOeVFpeExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRXRCUVVzc1EwRkJRenRSUVVOMFFpeERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRlZCUVZVc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGRE5VSXNRMEZCUXp0SlFVTkdMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRSUVVNM1FpeEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVTk9MSEZGUVVGeFJTeERRVU4wUlN4RFFVRkRPMUZCUTBZc1QwRkJUenRKUVVOVUxFTkJRVU03U1VGRlJDeExRVUZMTEZWQlFWVXNUMEZCVHl4RFFVRkRMRlZCUVhGQ08xRkJRekZETEUxQlFVMHNTVUZCU1N4SFFVdEtMRTFCUVUwc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGRGNrSXNaMEpCUVdkQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NSVUZCUlN4TFFVRkxMRVZCUVVVc1JVRkJSVHRaUVVOdVF5eE5RVUZOTEZOQlFWTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzFsQlEzcERMRTFCUVUwc1ZVRkJWU3hIUVVGSExFdEJRVXNzUTBGQlF5eFZRVUZWTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1dVRkZNME1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRaUVVOMlFpeE5RVUZOTEZkQlFWY3NSMEZCZDBJc1JVRkJSU3hEUVVGRE8xbEJRelZETEV0QlFVc3NUVUZCVFN4SFFVRkhMRWxCUVVrc1ZVRkJWU3hKUVVGSkxFMUJRVTBzU1VGQlNTeEZRVUZGTEVWQlFVVXNRMEZCUXp0blFrRkROME1zVjBGQlZ5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRTFCUVUwc1lVRkJZU3hEUVVOd1F5eExRVUZMTEVWQlEwd3NRMEZCUXl4SFFVRkhMRVZCUVVVc1UwRkJVeXhEUVVGRExFVkJRMmhDTEVWQlFVVTdaMEpCUTBZc1NVRkJTVHRuUWtGRFNpeDVSRUZCZVVRN1owSkJRM3BFTERKRVFVRXlSRHRuUWtGRE0wUXNTMEZCU3p0blFrRkRUQ3hEUVVGRExFTkJRVU1zVlVGQlZTeERRVU5pTEVOQlFVTTdXVUZEU2l4RFFVRkRPMWxCUlVRc1NVRkJTU3huUWtGQlowSXNSMEZCYTBNc1UwRkJVeXhEUVVGRE8xbEJSV2hGTEVsQlFVa3NWVUZCVlN4RlFVRkZMRU5CUVVNN1owSkJRMllzVjBGQlZ5eERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRmRCUVZjc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTTdaMEpCUTNSRUxFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUjBGQlZ5eEZRVUZGTEVWQlFVVTdiMEpCUXk5RExGZEJRVmNzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4UlFVRlJMRWRCUVVjc1YwRkJWeXhEUVVNelF5eEhRVUZITEVOQlEwb3NRMEZCUXl4UlFVRlJMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlRTeEZRVUZGTEVWQlFVVTdkMEpCUXpWQ0xFbEJRVWtzUTBGQlF5eERRVUZETEVsQlFVa3NTMEZCVFN4VlFVRlZMRU5CUVVNc1VVRkJiVUk3TkVKQlFVVXNUMEZCVHl4SlFVRkpMRU5CUVVNN2QwSkJRelZFTEdkQ1FVRm5RaXhIUVVGSExFTkJRVkVzUTBGQlF6dDNRa0ZETlVJc1QwRkJUeXhMUVVGTExFTkJRVU03YjBKQlEyWXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRMHdzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEVEN4RFFVRkRPMWxCUlVRc1RVRkJUU3hoUVVGaExFZEJRVWNzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4WFFVRlhMRU5CUVVNN2FVSkJRemRETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNRMEZCUXp0cFFrRkRkRUlzU1VGQlNTeEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRPMWxCUTJwQ0xFbEJRVWtzWVVGQllUdG5Ra0ZEWml4SFFVRkhPM0ZDUVVOQkxFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8zRkNRVU16UWl4SlFVRkpMRU5CUVVNc1UwRkJVeXhoUVVGaExHZERRVUZuUXl4RFFVRkRMRU5CUVVNN1dVRkRiRVVzVFVGQlRTeFhRVUZYTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhYUVVGWExFTkJRVU03YVVKQlF6TkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRwUWtGRGNFSXNTVUZCU1N4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRE8xbEJSV3BDTEVkQlFVYzdhVUpCUTBFc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eFRRVUZUTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN2FVSkJRek5DTEVsQlFVa3NRMEZCUXl4VFFVRlRMRmRCUVZjc0swSkJRU3RDTEVOQlFVTXNRMEZCUXp0WlFVTTNSQ3hKUVVGSkxHZENRVUZuUWp0blFrRkRiRUlzUjBGQlJ6dHhRa0ZEUVN4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0eFFrRkRNMElzU1VGQlNTeERRVU5JTEN0Q1FVRXJRaXhWUVVGVkxFVkJRVVVzVVVGQmEwSXNSVUZCUlN4RFFVTm9SU3hEUVVGRE8xbEJSVTRzVFVGQlRTeFBRVUZQTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhYUVVGWExFTkJRVU03YVVKQlEzWkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExGRkJRVkVzU1VGQlNTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmxDUVVONFJDeEpRVUZKTEVWQlFVVXNRMEZCUXp0WlFVTldMRWxCUVVrc1QwRkJUeXhIUVVGNVFpeEZRVUZGTEVOQlFVTTdXVUZEZGtNc1NVRkJTU3hWUVVGVkxFZEJRWFZDTEVWQlFVVXNRMEZCUXp0WlFVTjRReXhKUVVGSkxFOUJRVThzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXp0blFrRkRia0lzUjBGQlJ6dHhRa0ZEUVN4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0eFFrRkRNMElzVDBGQlR5eERRVUZETEc5RFFVRnZReXhEUVVGRExFTkJRVU03WjBKQlEycEVMRTlCUVU4c1IwRkJSeXh2UWtGQmIwSXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRuUWtGRGRFTXNSMEZCUnp0eFFrRkRRU3hIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenR4UWtGRE0wSXNTVUZCU1N4RFFVRkRMRk5CUVZNc1QwRkJUeXhEUVVGRExFMUJRVTBzVlVGQlZTeERRVUZETEVOQlFVTTdaMEpCUXpORExGVkJRVlVzUjBGQlJ5eDFRa0ZCZFVJc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dG5Ra0ZETlVNc1IwRkJSenR4UWtGRFFTeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRk5CUVZNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dHhRa0ZETTBJc1NVRkJTU3hEUVVGRExGTkJRVk1zVlVGQlZTeERRVUZETEUxQlFVMHNZMEZCWXl4RFFVRkRMRU5CUVVNN1dVRkRjRVFzUTBGQlF6dFpRVU5FTEU5QlFVODdaMEpCUTB3c1QwRkJUenRuUWtGRFVDeFZRVUZWTzJkQ1FVTldMRmRCUVZjc1JVRkJSU3hQUVVGUE8yZENRVU53UWl4TlFVRk5MRVZCUVVVc1owSkJRV2RDTzJGQlEzcENMRU5CUVVNN1VVRkRTaXhEUVVGRExFTkJRVU1zUTBGRFNDeERRVUZETzFGQlEwWXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRaQ3hEUVVGRE8wbEJSVVFzVFVGQlRTeEpRVUZKTEVkQlFVY3NUVUZCVFN4UFFVRlBMRVZCUVVVc1EwRkJRenRKUVVNM1FpeE5RVUZOTEZWQlFWVXNSMEZCUnl4TlFVRk5MRTlCUVU4c1EwRkJReXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGT1VNc1RVRkJUU3hoUVVGaExFZEJRVWM3VVVGRGNFSXNSMEZCUnl4VlFVRlZMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETzFGQlF6RkVMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCUlR0UlFVTjRReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1MwRkRPVUlzUTBGQlF6dEpRVVY2UWl4TlFVRk5MR3RDUVVGclFpeEhRVUZITzFGQlEzcENMRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRMUlzWVVGQllTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVhWQ0xFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVU5zUlN4RFFVRkRMRTFCUVUwc1JVRkJSVHRMUVVOWUxFTkJRVU03U1VGRlJpeEpRVUZKTEd0Q1FVRnJRaXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETzFGQlF6bENMR2RDUVVGblFpeERRVUZETEd0Q1FVRnJRaXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzFGQlF6ZERMRTFCUVUwc2NVSkJRWEZDTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkRja01zVFVGQlRTeEZRVU5PTEZWQlFWVXNSVUZEVml4NVFrRkJlVUlzUTBGRE1VSXNRMEZCUXp0UlFVTkdMRTFCUVUwc2VVSkJRWGxDTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkRla01zVFVGQlRTeEZRVU5PTEhsQ1FVRjVRaXhEUVVNeFFpeERRVUZETzFGQlEwWXNSVUZCUlN4RFFVRkRMRmxCUVZrc1EwRkJReXh4UWtGQmNVSXNSVUZCUlN4NVFrRkJlVUlzUTBGQlF5eERRVUZETzFGQlEyeEZMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRMDRzVlVGQlZTeGhRVUZoTEVOQlFVTXNUVUZCVFN4dFFrRkJiVUlzY1VKQlFYRkNMRVZCUVVVc1EwRkRla1VzUTBGQlF6dFJRVU5HTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUTA0c1owTkJRV2RETEhsQ1FVRjVRaXcyUWtGQk5rSXNRMEZEZGtZc1EwRkJRenRSUVVWR0xFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVOcVFpeE5RVUZOTEVWQlFVVXNUMEZCVHl4RlFVRkZMRlZCUVZVc1JVRkJSU3hYUVVGWExFVkJRVVVzVFVGQlRTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTNaRUxFMUJRVTBzVDBGQlR5eEhRVUYzUWl4RFFVRkRMRWRCUVVjc1YwRkJWeXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZEYkVVc1QwRkJUeXhEUVVObExFTkJRVU03V1VGRGVrSXNUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTzJkQ1FVTndRaXhaUVVGWkxFTkJRVU1zVDBGQlR5eEZRVUZGTEUxQlFVMHNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03WjBKQlEzUkRMSGxDUVVGNVFpeERRVUZETEZWQlFWVXNTVUZCU1N4RlFVRkZMRVZCUVVVc1RVRkJUU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkROVVFzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZEVGl4VlFVRlZMRTlCUVU4c1JVRkJSU3hOUVVGTkxFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1ZVRkJWU3hGUVVGRkxFMUJRVTBzU1VGQlNTeERRVUZETERoQ1FVRTRRaXhEUVVGRExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlF6VkhMRU5CUVVNN1dVRkRTaXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5NTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTB3c1EwRkJRenRCUVVOSUxFTkJRVU1zUTBGQlF5eERRVUZETzBGQlJVd3NUVUZCVFN4WFFVRlhMRWRCUVVjc1NVRkJTU3hQUVVGUExFVkJRVVU3UzBGRE9VSXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJRenRMUVVOdVFpeFhRVUZYTEVOQlFVTXNiVVJCUVcxRUxFTkJRVU03UzBGRGFFVXNUVUZCVFN4RFFVTk1MSE5DUVVGelFpeEZRVU4wUWl4dFJFRkJiVVFzUlVGRGJrUXNiVUpCUVcxQ0xFTkJRM0JDTzB0QlEwRXNUVUZCVFN4RFFVRkRMRzlDUVVGdlFpeEZRVUZGTEhWRFFVRjFReXhGUVVGRkxFMUJRVTBzUTBGQlF6dExRVU0zUlN4TlFVRk5MRU5CUVVNc2NVSkJRWEZDTEVWQlFVVXNjVU5CUVhGRExFVkJRVVVzU1VGQlNTeERRVUZETzB0QlF6RkZMRTFCUVUwc1EwRkJReXhMUVVGTExFVkJRVVVzVDBGQldTeEZRVUZGTEVWQlFVVTdTVUZETjBJc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZEY0VJc1JVRkJSU3hEUVVGRExGbEJRVmtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFVkJRVVVzUlVGQlJTeGpRVUZqTEVOQlFVTXNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkRia1VzUTBGQlF6dEpRVVZHTEUxQlFVMHNUMEZCVHl4SFFVRkhMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU03U1VGRk5VSXNUVUZCVFN4SFFVRkhMRWRCUVVjc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXp0SlFVTjBReXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVU5RTEhsQ1FVRjVRaXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEU5QlFVOHNRMEZCUXl4UlFVRlJMRWRCUVVjc1EwRkJReXhKUVVGSkxGbEJRVmtzVDBGQlR5eEZRVUZGTEVOQlEzUkdMRU5CUVVNN1NVRkRSaXgzUTBGQmQwTTdTVUZEZUVNc1NVRkJTU3hGUVVGRkxGTkJRVk1zUlVGQlJTeFBRVUZQTEVWQlFVVXNVVUZCVVN4RlFVRkZMRWRCUVVjc1QwRkJUeXhEUVVGRE8wbEJReTlETEU5QlFVOHNSMEZCUnl4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzU1VGQlNTeERRVUZETzBsQlEzQkRMRkZCUVZFc1IwRkJSeXhSUVVGUkxFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRPMGxCUlhCRExFMUJRVTBzTUVKQlFUQkNMRU5CUVVNc2JVSkJRVzFDTEVWQlFVVXNUMEZCVHl4RlFVRkZMRkZCUVZFc1EwRkJReXhEUVVGRE8wbEJSWHBGTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUTA0c09FUkJRVGhFTEZOQlFWTXNTVUZCU1N4RFFVTTFSU3hEUVVGRE8wRkJRMG9zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZGVEN4TlFVRk5MR05CUVdNc1IwRkJSeXhKUVVGSkxFOUJRVThzUlVGQlJUdExRVU5xUXl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTTdTMEZEZGtJc1YwRkJWeXhEUVVGRExDdENRVUVyUWl4RFFVRkRPMHRCUXpWRExFMUJRVTBzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSU3cwUWtGQk5FSXNRMEZCUXp0TFFVTjJSQ3hOUVVGTkxFTkJRVU1zYTBKQlFXdENMRVZCUVVVc1kwRkJZeXhEUVVGRE8wdEJRekZETEUxQlFVMHNRMEZEVEN3clFrRkJLMElzUlVGREwwSXNhMFZCUVd0RkxFTkJRMjVGTzB0QlEwRXNUVUZCVFN4RFFVTk1MRFpDUVVFMlFpeEZRVU0zUWl4elJVRkJjMFVzUlVGRGRFVXNTMEZCU3l4RFFVTk9PMHRCUTBFc1RVRkJUU3hEUVVOTUxEQkNRVUV3UWl4RlFVTXhRaXcwUlVGQk5FVXNSVUZETlVVc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RlFVRkZMRVZCUVVVc1QwRkJUeXhGUVVGRkxHRkJRV0VzUlVGQlJTeHRRa0ZCYlVJc1EwRkJReXhEUVVOMFJUdExRVU5CTEUxQlFVMHNRMEZEVEN4clFrRkJhMElzUlVGRGJFSXNNRUpCUVRCQ0xFVkJRekZDTEhkRFFVRjNReXhEUVVONlF6dExRVU5CTEUxQlFVMHNRMEZCUXl4TFFVRkxMRVZCUVVVc1QwRkJXU3hGUVVGRkxFVkJRVVU3U1VGRE4wSXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGRGNFSXNSVUZCUlN4RFFVRkRMRmxCUVZrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4SFFVRkhMRVZCUVVVc1JVRkJSU3hqUVVGakxFTkJRVU1zUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZEYmtVc1EwRkJRenRKUVVWR0xFMUJRVTBzVDBGQlR5eEhRVUZITEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNN1NVRkZOVUlzVFVGQlRTeEhRVUZITEVkQlFVY3NUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4RFFVRkRPMGxCUXpGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlExQXNlVUpCUVhsQ0xFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUMEZCVHl4RFFVRkRMRkZCUVZFc1IwRkJSeXhEUVVGRExFbEJRVWtzV1VGQldTeFBRVUZQTEVWQlFVVXNRMEZEZEVZc1EwRkJRenRKUVVWR0xFMUJRVTBzUlVGRFNpeEpRVUZKTEVWQlEwb3NTMEZCU3l4RlFVTk1MRXRCUVVzc1JVRkRUQ3hoUVVGaE8wbEJRMklzTmtSQlFUWkVPMGxCUXpkRUxHZENRVUZuUWl4RlFVTm9RaXhwUWtGQmFVSXNSMEZEYkVJc1IwRkJSeXhQUVVGUExFTkJRVU03U1VGRFdpeE5RVUZOTEU5QlFVOHNSMEZCUnl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJXcERMRTFCUVUwc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFVkJRVVVzUjBGQlJ5eEpRVUZKTEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZNVVVzU1VGQlNTeFJRVUZuUWl4RFFVRkRPMGxCUlhKQ0xFbEJRVWtzUTBGQlF6dFJRVU5JTEZGQlFWRXNSMEZCUnl4UlFVRlJMRU5CUVVNc1JVRkJSU3hEUVVGRExGbEJRVmtzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5zUlN4SlFVRkpMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU03V1VGQlJTeFJRVUZSTEVkQlFVY3NRMEZCUXl4RFFVRkRPenRaUVVNM1FpeFJRVUZSTEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTI1Q0xEWkVRVUUyUkR0SlFVTXZSQ3hEUVVGRE8wbEJRVU1zVDBGQlR5eERRVUZWTEVWQlFVVXNRMEZCUXp0UlFVTndRaXhSUVVGUkxFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEyWXNRMEZCUXp0SlFVTkVMRVZCUVVVN1NVRkRSaXd3UWtGQk1FSTdTVUZETVVJc2QwTkJRWGRETzBsQlEzaERMSEZDUVVGeFFqdEpRVU55UWl4SlFVRkpPMGxCUlVvc1NVRkJTU3hEUVVGRE8xRkJRMGdzUzBGQlN5eE5RVUZOTEVsQlFVa3NTVUZCU1N4UFFVRlBMRVZCUVVVc1EwRkJRenRaUVVNelFpeGxRVUZsTEVOQlFVTXNTVUZCU1N4RlFVRkZMRXRCUVVzc1JVRkJSU3hKUVVGSkxFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdXVUZETlVNc1pVRkJaU3hEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0WlFVTTFRaXhsUVVGbExFTkJRMklzU1VGQlNTeEZRVU5LTEVsQlFVa3NSVUZEU2l4SlFVRkpMRXRCUVVzc1kwRkJZenRuUWtGRGNrSXNRMEZCUXl4RFFVRkRMR2xDUVVGcFFqdG5Ra0ZEYmtJc1EwRkJReXhEUVVGRExIbENRVUY1UWl4RlFVTTNRaXhSUVVGUkxFVkJRMUlzVDBGQlR5eEZRVU5RTEdsQ1FVRnBRaXhEUVVOc1FpeERRVUZETzFGQlEwb3NRMEZCUXp0UlFVTkVMRVZCUVVVc1EwRkJReXhoUVVGaExFTkJRVU1zVTBGQlV5eEZRVUZGTEZGQlFWRXNRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJReXhEUVVGRE8wbEJRMjVFTEVOQlFVTTdTVUZCUXl4UFFVRlBMRWRCUVZFc1JVRkJSU3hEUVVGRE8xRkJRMnhDTEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc01rSkJRVEpDTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRPVU1zUTBGQlF6dEpRVU5FTEdWQlFXVXNRMEZCUXl4SlFVRkpMRVZCUVVVc1VVRkJVU3hGUVVGRkxFOUJRVThzUlVGQlJTeHBRa0ZCYVVJc1EwRkJReXhEUVVGRE8wRkJRemxFTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUlV3c1RVRkJUU3hwUWtGQmFVSXNSMEZCUnl4SlFVRkpMRTlCUVU4c1JVRkJSVHRMUVVOd1F5eEpRVUZKTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU03UzBGRE0wSXNWMEZCVnl4RFFVRkRMRzFFUVVGdFJDeERRVUZETzB0QlEyaEZMRTFCUVUwc1EwRkJReXh0UWtGQmJVSXNSVUZCUlN4bFFVRmxMRVZCUVVVc2IwSkJRVzlDTEVOQlFVTTdTMEZEYkVVc1RVRkJUU3hEUVVGRExHZENRVUZuUWl4RlFVRkZMRGhDUVVFNFFpeEZRVUZGTEU5QlFVOHNRMEZCUXp0TFFVTnFSU3hOUVVGTkxFTkJRVU1zUzBGQlN5eEZRVUZGTEU5QlFWa3NSVUZCUlN4RlFVRkZPMGxCUXpkQ0xFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUTNCQ0xFVkJRVVVzUTBGQlF5eFpRVUZaTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVVXNZMEZCWXl4RFFVRkRMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRMjVGTEVOQlFVTTdTVUZGUml4TlFVRk5MRTlCUVU4c1IwRkJSeXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETzBsQlJUVkNMRTFCUVUwc1IwRkJSeXhIUVVGSExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zUTBGQlF6dEpRVU01UXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVOUUxIbENRVUY1UWl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEVkQlFVY3NRMEZCUXl4SlFVRkpMRmxCUVZrc1QwRkJUeXhGUVVGRkxFTkJRM1JHTEVOQlFVTTdTVUZEUml4TlFVRk5MRVZCUVVVc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEU5QlFVOHNRMEZCUXp0SlFVTm9ReXhSUVVGUkxFTkJRVU1zWVVGQllTeEhRVUZITEhGQ1FVRnhRaXhOUVVGTkxFVkJRVVVzUlVGQlJUdFJRVU4wUkN4SFFVRkhMRVZCUVVVc1QwRkJUeXhEUVVGRExFZEJRVWNzUlVGQlJUdExRVU51UWl4RFFVRkRMRU5CUVVNN1FVRkRUQ3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVVZNTEUxQlFVMHNXVUZCV1N4SFFVRkhMRWxCUVVrc1QwRkJUeXhGUVVGRk8wdEJReTlDTEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNN1MwRkRia0lzVjBGQlZ5eERRVUZETEcxRFFVRnRReXhEUVVGRE8wdEJRMmhFTEUxQlFVMHNRMEZCUXl3d1FrRkJNRUlzUlVGQlJTeDVRa0ZCZVVJc1JVRkJSU3hUUVVGVExFTkJRVU03UzBGRGVFVXNUVUZCVFN4RFFVTk1MSGRDUVVGM1FpeEZRVU40UWl4eFEwRkJjVU1zUlVGRGNrTXNVMEZCVXl4RFFVTldPMHRCUTBFc1RVRkJUU3hEUVVGRExFdEJRVXNzUlVGQlJTeFBRVUZaTEVWQlFVVXNSVUZCUlR0SlFVTTNRaXhKUVVGSkxFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNXVUZCV1N4SlFVRkpMRTlCUVU4c1EwRkJReXhWUVVGVkxFTkJRVU1zUlVGQlJTeERRVUZETzFGQlEyeEVMRTFCUVUwN1lVRkRTQ3hIUVVGSExFTkJRVU1zWVVGQllTeERRVUZETzJGQlEyeENMRXRCUVVzc1EwRkRTaXcwUlVGQk5FVXNRMEZETjBVc1EwRkJRenRSUVVOS0xFOUJRVTg3U1VGRFZDeERRVUZETzBsQlJVUXNVMEZCVXl4VlFVRlZMRU5CUVVNc1RVRkJZeXhGUVVGRkxFMUJRV003VVVGRGFFUXNaME5CUVdkRE8xRkJRMmhETEVsQlFVa3NSVUZCUlN4RFFVRkRMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeERRVUZETzFsQlF6RkNMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeEZRVUZGTzJkQ1FVTm9RaXhUUVVGVExFVkJRVVVzU1VGQlNUdG5Ra0ZEWml4TFFVRkxMRVZCUVVVc1NVRkJTVHRoUVVOYUxFTkJRVU1zUTBGQlF6dFJRVU5NTEVOQlFVTTdVVUZGUkN4MVFrRkJkVUk3VVVGRGRrSXNSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZPMWxCUTJwRExGTkJRVk1zUlVGQlJTeEpRVUZKTzFOQlEyaENMRU5CUVVNc1EwRkJRenRSUVVWSUxHTkJRV003VVVGRFpDeEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkJSU3hOUVVGTkxFVkJRVVU3V1VGRGVFSXNVMEZCVXl4RlFVRkZMRWxCUVVrN1dVRkRaaXhMUVVGTExFVkJRVVVzU1VGQlNUdFRRVU5hTEVOQlFVTXNRMEZCUXp0UlFVVklMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zVjBGQlZ5eE5RVUZOTzFkQlEzaENMRTFCUVUwc1JVRkJSU3hEUVVGRExFTkJRVU03U1VGRGFrSXNRMEZCUXp0SlFVVkVMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8wbEJRMnhFTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRPMGxCUlRsRExGRkJRVkVzUTBGQlF5eG5RMEZCWjBNc1JVRkJSVHRSUVVONlF5eEhRVUZITEVWQlFVVXNUVUZCVFR0UlFVTllMRXRCUVVzc1JVRkJSU3hUUVVGVE8wdEJRMnBDTEVOQlFVTXNRMEZCUXp0SlFVTklMRkZCUVZFc1EwRkJReXhuUkVGQlowUXNSVUZCUlR0UlFVTjZSQ3hIUVVGSExFVkJRVVVzVFVGQlRUdFJRVU5ZTEV0QlFVc3NSVUZCUlN4VFFVRlRPMHRCUTJwQ0xFTkJRVU1zUTBGQlF6dEpRVVZJTEUxQlFVMHNVMEZCVXl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEZsQlFWa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRKUVVONlJDeE5RVUZOTEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJTeFBRVUZQTEVWQlFVVXNXVUZCV1N4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8wbEJSV2hGTEZWQlFWVXNRMEZCUXl4VFFVRlRMRVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU03U1VGRmFrTXNUVUZCVFN4WlFVRlpMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGRE5VSXNUVUZCVFN4RlFVTk9MRmxCUVZrc1JVRkRXaXhSUVVGUkxFVkJRMUlzWjBKQlFXZENMRVZCUTJoQ0xGZEJRVmNzUlVGRFdDeFJRVUZSTEVOQlExUXNRMEZCUXp0SlFVVkdMRTFCUVUwc1pVRkJaU3hIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZMRk5CUVZNc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dEpRVVZvUlN4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRExHVkJRV1VzUlVGQlJUdFJRVU0xUWl4VFFVRlRMRVZCUVVVc1NVRkJTVHRMUVVOb1FpeERRVUZETEVOQlFVTTdTVUZGU0N4TFFVRkxMRTFCUVUwc1NVRkJTU3hKUVVGSkxFVkJRVVVzUTBGQlF5eFhRVUZYTEVOQlFVTXNXVUZCV1N4RFFVRkRMRVZCUVVVc1EwRkJRenRSUVVOb1JDeE5RVUZOTEZWQlFWVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTnFSQ3hOUVVGTkxGVkJRVlVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMR1ZCUVdVc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVVZ3UkN4M1EwRkJkME03VVVGRGVFTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRExGVkJRVlVzUTBGQlF5eEZRVUZGTEVOQlFVTTdXVUZET1VJc1JVRkJSU3hEUVVGRExFMUJRVTBzUTBGQlF5eFZRVUZWTEVWQlFVVTdaMEpCUTNCQ0xGTkJRVk1zUlVGQlJTeEpRVUZKTzJkQ1FVTm1MRXRCUVVzc1JVRkJSU3hKUVVGSk8yRkJRMW9zUTBGQlF5eERRVUZETzFGQlEwd3NRMEZCUXp0UlFVVkVMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zVlVGQlZTeEZRVUZGTEZWQlFWVXNSVUZCUlR0WlFVTm9ReXhUUVVGVExFVkJRVVVzU1VGQlNUdFpRVU5tTEV0QlFVc3NSVUZCUlN4SlFVRkpPMU5CUTFvc1EwRkJReXhEUVVGRE8xRkJSVWdzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4WFFVRlhMRlZCUVZVN1YwRkROVUlzVlVGQlZTeEZRVUZGTEVOQlFVTXNRMEZCUXp0SlFVTnlRaXhEUVVGRE8wbEJSVVFzVVVGQlVTeERRVUZETERaQ1FVRTJRaXhGUVVGRkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVsQlFVa3NSVUZCUlN4TFFVRkxMRVZCUVVVc1UwRkJVeXhGUVVGRkxFTkJRVU1zUTBGQlF6dEpRVU42UlN4UlFVRlJMRU5CUVVNc09FTkJRVGhETEVWQlFVVTdVVUZEZGtRc1IwRkJSeXhGUVVGRkxFbEJRVWs3VVVGRFZDeExRVUZMTEVWQlFVVXNVMEZCVXp0TFFVTnFRaXhEUVVGRExFTkJRVU03U1VGRFNDeFJRVUZSTEVOQlFVTXNNa0pCUVRKQ0xFVkJRVVVzUlVGQlJTeEhRVUZITEVWQlFVVXNTVUZCU1N4RlFVRkZMRXRCUVVzc1JVRkJSU3hUUVVGVExFVkJRVVVzUTBGQlF5eERRVUZETzBsQlEzWkZMRkZCUVZFc1EwRkJReXh6UTBGQmMwTXNSVUZCUlR0UlFVTXZReXhIUVVGSExFVkJRVVVzU1VGQlNUdFJRVU5VTEV0QlFVc3NSVUZCUlN4VFFVRlRPMHRCUTJwQ0xFTkJRVU1zUTBGQlF6dEJRVU5NTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUlV3c1RVRkJUU3hUUVVGVExFZEJRVWNzU1VGQlNTeFBRVUZQTEVWQlFVVTdTMEZETlVJc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF6dExRVU5zUWl4UFFVRlBMRU5CUVVNc1VVRkJVU3hEUVVGRE8wdEJRMnBDTEZkQlFWY3NRMEZEVml4dFJVRkJiVVVzUTBGRGNFVXNRMEZCUXp0QlFVVktMRk5CUVZNc1EwRkJReXhWUVVGVkxFTkJRVU1zWTBGQll5eERRVUZETEVOQlFVTTdRVUZEY2tNc1UwRkJVeXhEUVVGRExGVkJRVlVzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXp0QlFVTnlReXhUUVVGVExFTkJRVU1zVlVGQlZTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRPMEZCUTJ4RExGTkJRVk1zUTBGQlF5eFZRVUZWTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNN1FVRkRja01zVTBGQlV5eERRVUZETEZWQlFWVXNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETzBGQlEzaERMRk5CUVZNc1EwRkJReXhWUVVGVkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1EwRkJRenRCUVVONlF5eFRRVUZUTEVOQlFVTXNWVUZCVlN4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8wRkJSVzVETEUxQlFVMHNRMEZCUXl4UFFVRlBMRlZCUVZVc1RVRkJUVHRKUVVNMVFpeFBRVUZQTEZOQlFWTXNRMEZCUXp0QlFVTnVRaXhEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIc2dRMjl0YldGdVpDQjlJR1p5YjIwZ1hDSmpiMjF0WVc1a1pYSmNJanRjYm1sdGNHOXlkQ0I3SUV4dloyZHBibWNzSUhSdlVHRnpZMkZzUTJGelpTQjlJR1p5YjIwZ1hDSkFaR1ZqWVdZdGRITXZiRzluWjJsdVoxd2lPMXh1YVcxd2IzSjBJSHNnWlhobFkxTjVibU1nZlNCbWNtOXRJRndpWTJocGJHUmZjSEp2WTJWemMxd2lPMXh1YVcxd2IzSjBJR1p6SUdaeWIyMGdYQ0ptYzF3aU8xeHVhVzF3YjNKMElIQmhkR2dnWm5KdmJTQmNJbkJoZEdoY0lqdGNibWx0Y0c5eWRDQjdJR0oxYVd4MGFXNU5iMlIxYkdWekxDQmpjbVZoZEdWU1pYRjFhWEpsSUgwZ1puSnZiU0JjSW01dlpHVTZiVzlrZFd4bFhDSTdYRzVwYlhCdmNuUWdleUJRYkhWbmFXNHNJSEp2Ykd4MWNDQjlJR1p5YjIwZ1hDSnliMnhzZFhCY0lqdGNibWx0Y0c5eWRDQmpiMjF0YjI1cWN5Qm1jbTl0SUZ3aVFISnZiR3gxY0M5d2JIVm5hVzR0WTI5dGJXOXVhbk5jSWp0Y2JtbHRjRzl5ZENCN0lHNXZaR1ZTWlhOdmJIWmxJSDBnWm5KdmJTQmNJa0J5YjJ4c2RYQXZjR3gxWjJsdUxXNXZaR1V0Y21WemIyeDJaVndpTzF4dWFXMXdiM0owSUhKbGNHeGhZMlVnWm5KdmJTQmNJa0J5YjJ4c2RYQXZjR3gxWjJsdUxYSmxjR3hoWTJWY0lqdGNibWx0Y0c5eWRDQjdJRWx1ZEdWeWJtRnNSWEp5YjNJc0lGTmxjbWxoYkdsNllYUnBiMjVGY25KdmNpQjlJR1p5YjIwZ1hDSkFaR1ZqWVdZdGRITXZaR0l0WkdWamIzSmhkRzl5YzF3aU8xeHVhVzF3YjNKMElIdGNiaUFnWjJWdVpYSmhkR1ZOYjJSbGJFUmxjMmxuYmtSdlkzTXNYRzRnSUdkbGJtVnlZWFJsVFc5a1pXeEpibVJsZUdWekxGeHVJQ0J5WldGa1RXOWtaV3hHYVd4bExGeHVJQ0J5WldGa1RXOWtaV3hHYjJ4a1pYSnpMRnh1SUNCM2NtbDBaVVJsYzJsbmJrUnZZM01zWEc0Z0lIZHlhWFJsU1c1a1pYaGxjeXhjYm4wZ1puSnZiU0JjSWk0dlkyeHBaVzUwTDJsdVpHVjRaWE5jSWp0Y2JtbHRjRzl5ZENCN0lFMXZaR1ZzSUgwZ1puSnZiU0JjSWtCa1pXTmhaaTEwY3k5a1pXTnZjbUYwYjNJdGRtRnNhV1JoZEdsdmJsd2lPMXh1YVcxd2IzSjBJSHRjYmlBZ1lYQndjbTkyWlVOdmJuUnlZV04wTEZ4dUlDQmxibk4xY21WSmJtWnlZWE4wY25WamRIVnlaVUp2YjNSbFpDeGNiaUFnYVc1emRHRnNiRU52Ym5SeVlXTjBMRnh1SUNCd1lXTnJZV2RsUTI5dWRISmhZM1FzWEc0Z0lHTnZiVzFwZEVOb1lXbHVZMjlrWlN4Y2JpQWdaMlYwUTI5dWRISmhZM1JUZEdGeWRFTnZiVzFoYm1Rc1hHNGdJR052YlhCcGJHVlhhWFJvVkhOamIyNW1hV2RQZG1WeWNtbGtaWE1zWEc1OUlHWnliMjBnWENJdUwyTnNhUzExZEdsc2Mxd2lPMXh1YVcxd2IzSjBJRndpTGk5emFHRnlaV1F2YjNabGNuSnBaR1Z6WENJN1hHNXBiWEJ2Y25RZ2RITWdabkp2YlNCY0luUjVjR1Z6WTNKcGNIUmNJanRjYm1sdGNHOXlkQ0I3WEc0Z0lHVjRkSEpoWTNSRGIyeHNaV04wYVc5dWN5QmhjeUJsZUVOdmJHeGxZM1JwYjI1ekxGeHVJQ0JRY21sMllYUmxRMjlzYkdWamRHbHZiaXhjYmlBZ2QzSnBkR1ZEYjJ4c1pXTjBhVzl1Y3l4Y2JpQWdkM0pwZEdWRGIyeHNaV04wYVc5dVJHVnphV2R1Ukc5amN5eGNibjBnWm5KdmJTQmNJaTR2WTJ4cFpXNTBMMk52Ykd4bFkzUnBiMjV6TDJsdVpHVjRYQ0k3WEc1cGJYQnZjblFnZXlCRGIzVmphRVJDUkdWemFXZHVSRzlqTENCRGNtVmhkR1ZKYm1SbGVGSmxjWFZsYzNRZ2ZTQm1jbTl0SUZ3aVFHUmxZMkZtTFhSekwyWnZjaTFqYjNWamFHUmlYQ0k3WEc1Y2JtTnZibk4wSUd4dloyZGxjaUE5SUV4dloyZHBibWN1Wm05eUtGd2labUZpY21salhDSXBPMXh1WEc1bWRXNWpkR2x2YmlCeVpYTnZiSFpsUW5WdVpHeGxaRXB6U1cxd2IzSjBjeWdwT2lCUWJIVm5hVzRnZTF4dUlDQnlaWFIxY200Z2UxeHVJQ0FnSUc1aGJXVTZJRndpY21WemIyeDJaUzFpZFc1a2JHVmtMV3B6TFdsdGNHOXlkSE5jSWl4Y2JpQWdJQ0J5WlhOdmJIWmxTV1FvYzI5MWNtTmxMQ0JwYlhCdmNuUmxjaWtnZTF4dUlDQWdJQ0FnYVdZZ0tDRnBiWEJ2Y25SbGNpQjhmQ0FoYzI5MWNtTmxMbk4wWVhKMGMxZHBkR2dvWENJdVhDSXBLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQmpiMjV6ZENCeVpYTnZiSFpsWkZCaGRHZ2dQU0J3WVhSb0xuSmxjMjlzZG1Vb2NHRjBhQzVrYVhKdVlXMWxLR2x0Y0c5eWRHVnlLU3dnYzI5MWNtTmxLVHRjYmlBZ0lDQWdJR052Ym5OMElHTmhibVJwWkdGMFpYTWdQU0JiWEc0Z0lDQWdJQ0FnSUhKbGMyOXNkbVZrVUdGMGFDeGNiaUFnSUNBZ0lDQWdZQ1I3Y21WemIyeDJaV1JRWVhSb2ZTNXFjMkFzWEc0Z0lDQWdJQ0FnSUhCaGRHZ3VhbTlwYmloeVpYTnZiSFpsWkZCaGRHZ3NJRndpYVc1a1pYZ3Vhbk5jSWlrc1hHNGdJQ0FnSUNCZE8xeHVYRzRnSUNBZ0lDQm1iM0lnS0dOdmJuTjBJR05oYm1ScFpHRjBaU0J2WmlCallXNWthV1JoZEdWektTQjdYRzRnSUNBZ0lDQWdJR2xtSUNobWN5NWxlR2x6ZEhOVGVXNWpLR05oYm1ScFpHRjBaU2tnSmlZZ1puTXVjM1JoZEZONWJtTW9ZMkZ1Wkdsa1lYUmxLUzVwYzBacGJHVW9LU2tnZTF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCallXNWthV1JoZEdVN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lDQWdmU3hjYmlBZ2ZUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z2NtVnpiMngyWlVSbFkyRm1VR0ZqYTJGblpVbHRjRzl5ZEhNb0tUb2dVR3gxWjJsdUlIdGNiaUFnWTI5dWMzUWdZMjl1ZEhKaFkzUlNaWEYxYVhKbElEMGdZM0psWVhSbFVtVnhkV2x5WlNoY2JpQWdJQ0J3WVhSb0xtcHZhVzRvY0hKdlkyVnpjeTVqZDJRb0tTd2dYQ0p3WVdOcllXZGxMbXB6YjI1Y0lpbGNiaUFnS1R0Y2JseHVJQ0J5WlhSMWNtNGdlMXh1SUNBZ0lHNWhiV1U2SUZ3aWNtVnpiMngyWlMxa1pXTmhaaTF3WVdOcllXZGxMV2x0Y0c5eWRITmNJaXhjYmlBZ0lDQnlaWE52YkhabFNXUW9jMjkxY21ObEtTQjdYRzRnSUNBZ0lDQnBaaUFvSVhOdmRYSmpaUzV6ZEdGeWRITlhhWFJvS0Z3aVFHUmxZMkZtTFhSekwxd2lLU2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdOdmJuUnlZV04wVW1WeGRXbHlaUzV5WlhOdmJIWmxLSE52ZFhKalpTazdYRzRnSUNBZ0lDQjlJR05oZEdOb0lIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHNTFiR3c3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU3hjYmlBZ2ZUdGNibjFjYmx4dVkyOXVjM1FnWm1GaWNtbGpVR1ZsY2tSbGNHVnVaR1Z1WTJsbGN5QTlJRzVsZHlCVFpYUW9XMXh1SUNCY0lrQm5jbkJqTDJkeWNHTXRhbk5jSWl4Y2JpQWdYQ0pBYUhsd1pYSnNaV1JuWlhJdlptRmljbWxqTFdkaGRHVjNZWGxjSWl4Y2JpQWdYQ0pBY0dWamRXeHBZWEl2ZDJWaVkzSjVjSFJ2WENJc1hHNGdJRndpWm1GaWNtbGpMV05oTFdOc2FXVnVkRndpTEZ4dUlDQmNJbVpoWW5KcFl5MWpiMjF0YjI1Y0lpeGNiaUFnWENKbVlXSnlhV010WTI5dWRISmhZM1F0WVhCcFhDSXNYRzRnSUZ3aVptRmljbWxqTFc1bGRIZHZjbXRjSWl4Y2JpQWdYQ0ptWVdKeWFXTXRjMmhwYlZ3aUxGeHVJQ0JjSW1aaFluSnBZeTF6YUdsdExXRndhVndpTEZ4dVhTazdYRzVjYm1aMWJtTjBhVzl1SUdselRtOWtaVUoxYVd4MGFXNG9hV1E2SUhOMGNtbHVaeWs2SUdKdmIyeGxZVzRnZTF4dUlDQmpiMjV6ZENCdWIzSnRZV3hwZW1Wa0lEMGdhV1F1YzNSaGNuUnpWMmwwYUNoY0ltNXZaR1U2WENJcElEOGdhV1F1YzJ4cFkyVW9OU2tnT2lCcFpEdGNiaUFnY21WMGRYSnVJR0oxYVd4MGFXNU5iMlIxYkdWekxtbHVZMngxWkdWektHNXZjbTFoYkdsNlpXUXBPMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQnphRzkxYkdSQ2RXNWtiR1ZEYjI1MGNtRmpkRTF2WkhWc1pTaHBaRG9nYzNSeWFXNW5LVG9nWW05dmJHVmhiaUI3WEc0Z0lHbG1JQ2hwWkM1emRHRnlkSE5YYVhSb0tGd2lMbHdpS1NCOGZDQndZWFJvTG1selFXSnpiMngxZEdVb2FXUXBLU0J5WlhSMWNtNGdkSEoxWlR0Y2JpQWdhV1lnS0dsa0xuTjBZWEowYzFkcGRHZ29YQ0pBWkdWallXWXRkSE12WENJcEtTQnlaWFIxY200Z2RISjFaVHRjYmlBZ2FXWWdLR1poWW5KcFkxQmxaWEpFWlhCbGJtUmxibU5wWlhNdWFHRnpLR2xrS1NrZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNCcFppQW9hWE5PYjJSbFFuVnBiSFJwYmlocFpDa3BJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JpQWdjbVYwZFhKdUlIUnlkV1U3WEc1OVhHNWNibVoxYm1OMGFXOXVJRzV2Y20xaGJHbDZaVk5wWkdWRlptWmxZM1JRWVhSb0tHbHVjSFYwT2lCemRISnBibWNwT2lCemRISnBibWNnZTF4dUlDQnlaWFIxY200Z2FXNXdkWFF1YzNCc2FYUW9jR0YwYUM1elpYQXBMbXB2YVc0b1hDSXZYQ0lwTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJpZFdsc1pGTnBaR1ZGWm1abFkzUk5ZWFJqYUdWeUtHVjRkSEpoVUdGMGFITTZJSE4wY21sdVoxdGRLU0I3WEc0Z0lHTnZibk4wSUc1dmNtMWhiR2w2WldSRmVIUnlZWE1nUFNCbGVIUnlZVkJoZEdoekxtMWhjQ2dvWlhoMGNtRlFZWFJvS1NBOVBpQjdYRzRnSUNBZ1kyOXVjM1FnYm05eWJXRnNhWHBsWkNBOUlHNXZjbTFoYkdsNlpWTnBaR1ZGWm1abFkzUlFZWFJvS0dWNGRISmhVR0YwYUM1MGNtbHRLQ2twTzF4dUlDQWdJSEpsZEhWeWJpQjdYRzRnSUNBZ0lDQnlZWGM2SUc1dmNtMWhiR2w2WldRc1hHNGdJQ0FnSUNCeVpYTnZiSFpsWkRvZ2NHRjBhQzVwYzBGaWMyOXNkWFJsS0dWNGRISmhVR0YwYUNsY2JpQWdJQ0FnSUNBZ1B5QnViM0p0WVd4cGVtVlRhV1JsUldabVpXTjBVR0YwYUNod1lYUm9MbkpsYzI5c2RtVW9aWGgwY21GUVlYUm9LU2xjYmlBZ0lDQWdJQ0FnT2lCdWIzSnRZV3hwZW1WVGFXUmxSV1ptWldOMFVHRjBhQ2h3WVhSb0xuSmxjMjlzZG1Vb2NISnZZMlZ6Y3k1amQyUW9LU3dnWlhoMGNtRlFZWFJvS1Nrc1hHNGdJQ0FnZlR0Y2JpQWdmU2s3WEc1Y2JpQWdjbVYwZFhKdUlDaHBaRG9nYzNSeWFXNW5LVG9nWW05dmJHVmhiaUE5UGlCN1hHNGdJQ0FnWTI5dWMzUWdibTl5YldGc2FYcGxaQ0E5SUc1dmNtMWhiR2w2WlZOcFpHVkZabVpsWTNSUVlYUm9LR2xrS1R0Y2JpQWdJQ0JqYjI1emRDQmlkV2xzZEVsdWN5QTlJRnRjYmlBZ0lDQWdJRndpTDNOeVl5OWpiMjUwY21GamRITXZZbTl2ZEhOMGNtRndYQ0lzWEc0Z0lDQWdJQ0JjSWk5emNtTXZZMjl1ZEhKaFkzUnpMMjkyWlhKeWFXUmxjMXdpTEZ4dUlDQWdJQ0FnWENJdmMzSmpMMk52Ym5SeVlXTjBjeTltWVdKeWFXTXRiM1psY25KcFpHVnpYQ0lzWEc0Z0lDQWdJQ0JjSWk5emNtTXZjMmhoY21Wa0wyOTJaWEp5YVdSbGMxd2lMRnh1SUNBZ0lDQWdYQ0l2Ym05a1pWOXRiMlIxYkdWekwwQmtaV05oWmkxMGN5OWNJaXhjYmlBZ0lDQmRPMXh1WEc0Z0lDQWdhV1lnS0dKMWFXeDBTVzV6TG5OdmJXVW9LRzVsWldSc1pTa2dQVDRnYm05eWJXRnNhWHBsWkM1cGJtTnNkV1JsY3lodVpXVmtiR1VwS1NrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSeWRXVTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUc1dmNtMWhiR2w2WldSRmVIUnlZWE11YzI5dFpTZ29leUJ5WVhjc0lISmxjMjlzZG1Wa0lIMHBJRDArSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUFvWEc0Z0lDQWdJQ0FnSUc1dmNtMWhiR2w2WldRdWFXNWpiSFZrWlhNb2NtRjNLU0I4ZkZ4dUlDQWdJQ0FnSUNCdWIzSnRZV3hwZW1Wa0xtbHVZMngxWkdWektISmxjMjlzZG1Wa0tTQjhmRnh1SUNBZ0lDQWdJQ0J1YjNKdFlXeHBlbVZrTG1WdVpITlhhWFJvS0dBa2UzSmhkMzB1YW5OZ0tTQjhmRnh1SUNBZ0lDQWdJQ0J1YjNKdFlXeHBlbVZrTG1WdVpITlhhWFJvS0dBa2UzSmhkMzB1WTJwellDa2dmSHhjYmlBZ0lDQWdJQ0FnYm05eWJXRnNhWHBsWkM1bGJtUnpWMmwwYUNoZ0pIdHlZWGQ5TDJsdVpHVjRMbXB6WUNrZ2ZIeGNiaUFnSUNBZ0lDQWdibTl5YldGc2FYcGxaQzVsYm1SelYybDBhQ2hnSkh0eVlYZDlMMmx1WkdWNExtTnFjMkFwSUh4OFhHNGdJQ0FnSUNBZ0lHNXZjbTFoYkdsNlpXUXVaVzVrYzFkcGRHZ29ZQ1I3Y21WemIyeDJaV1I5TG1wellDa2dmSHhjYmlBZ0lDQWdJQ0FnYm05eWJXRnNhWHBsWkM1bGJtUnpWMmwwYUNoZ0pIdHlaWE52YkhabFpIMHVZMnB6WUNrZ2ZIeGNiaUFnSUNBZ0lDQWdibTl5YldGc2FYcGxaQzVsYm1SelYybDBhQ2hnSkh0eVpYTnZiSFpsWkgwdmFXNWtaWGd1YW5OZ0tTQjhmRnh1SUNBZ0lDQWdJQ0J1YjNKdFlXeHBlbVZrTG1WdVpITlhhWFJvS0dBa2UzSmxjMjlzZG1Wa2ZTOXBibVJsZUM1amFuTmdLVnh1SUNBZ0lDQWdLVHRjYmlBZ0lDQjlLVHRjYmlBZ2ZUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z2NtVnRiM1psVTNKalJuSnZiVkJoZEdnb2NHRjBhRG9nYzNSeWFXNW5LVG9nYzNSeWFXNW5JSHRjYmlBZ2NtVjBkWEp1SUhCaGRHZ3VjbVZ3YkdGalpTZ3ZYbHhjTGx4Y0wzTnlZMXhjTHk4c0lGd2lMaTljSWlrN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUdOdmNIbEdiMnhrWlhKRGIyNTBaVzUwY3loemIzVnlZMlZFYVhJNklITjBjbWx1Wnl3Z2RHRnlaMlYwUkdseU9pQnpkSEpwYm1jcElIdGNiaUFnYVdZZ0tDRm1jeTVsZUdsemRITlRlVzVqS0hOdmRYSmpaVVJwY2lrcElIdGNiaUFnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWUZOdmRYSmpaU0JrYVhKbFkzUnZjbmtnWkc5bGN5QnViM1FnWlhocGMzUTZJQ1I3YzI5MWNtTmxSR2x5ZldBcE8xeHVJQ0I5WEc1Y2JpQWdabk11Yld0a2FYSlRlVzVqS0hSaGNtZGxkRVJwY2l3Z2V5QnlaV04xY25OcGRtVTZJSFJ5ZFdVZ2ZTazdYRzVjYmlBZ1ptOXlJQ2hqYjI1emRDQnBkR1Z0SUc5bUlHWnpMbkpsWVdSa2FYSlRlVzVqS0hOdmRYSmpaVVJwY2lrcElIdGNiaUFnSUNCamIyNXpkQ0J6YjNWeVkyVlFZWFJvSUQwZ2NHRjBhQzVxYjJsdUtITnZkWEpqWlVScGNpd2dhWFJsYlNrN1hHNGdJQ0FnWTI5dWMzUWdkR0Z5WjJWMFVHRjBhQ0E5SUhCaGRHZ3VhbTlwYmloMFlYSm5aWFJFYVhJc0lHbDBaVzBwTzF4dVhHNGdJQ0FnWTI5dWMzUWdjM1JoZENBOUlHWnpMbk4wWVhSVGVXNWpLSE52ZFhKalpWQmhkR2dwTzF4dVhHNGdJQ0FnYVdZZ0tITjBZWFF1YVhORWFYSmxZM1J2Y25rb0tTa2dlMXh1SUNBZ0lDQWdZMjl3ZVVadmJHUmxja052Ym5SbGJuUnpLSE52ZFhKalpWQmhkR2dzSUhSaGNtZGxkRkJoZEdncE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JtY3k1amIzQjVSbWxzWlZONWJtTW9jMjkxY21ObFVHRjBhQ3dnZEdGeVoyVjBVR0YwYUNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzU5WEc1Y2JtTnZibk4wSUdOdmJYQnBiR1ZEYjIxdFlXNWtJRDBnYm1WM0lFTnZiVzFoYm1Rb0tWeHVJQ0F1Ym1GdFpTaGNJbU52YlhCcGJHVXRZMjl1ZEhKaFkzUmNJaWxjYmlBZ0xtUmxjMk55YVhCMGFXOXVLRndpUTNKbFlYUmxjeUJoSUdkc2IySmhiQ0JqYjI1MGNtRmpkRndpS1Z4dUlDQXViM0IwYVc5dUtGd2lMUzFrWlhaY0lpd2dYQ0pqYjIxd2FXeGxjeUJqYjI1MGNtRmpkSE1nZDJsMGFHOTFkQ0J0YVc1cFptbGpZWFJwYjI1Y0lpd2dabUZzYzJVcFhHNGdJQzV2Y0hScGIyNG9YQ0l0TFdSbFluVm5YQ0lzSUZ3aWJXRnJaWE1nWVhSMFlXTm9hVzVuSUdSbFluVm5aMlZ5SUhCdmMzTnBZbXhsWENJc0lHWmhiSE5sS1Z4dUlDQXViM0IwYVc5dUtGeHVJQ0FnSUZ3aUxTMWpZMkZoYzF3aUxGeHVJQ0FnSUZ3aVFXcDFjM1J6SUhSb1pTQndZV05yWVdkbElHTnZiVzFoYm1SeklIUnZJR0psSUdSbGNHeHZlV1ZrSUdGeklHTmpZV0Z6WENJc1hHNGdJQ0FnWm1Gc2MyVmNiaUFnS1Z4dUlDQXViM0IwYVc5dUtGd2lMUzF1WVcxbElEeFRkSEpwYm1jK1hDSXNJRndpWTI5dWRISmhZM1FnYm1GdFpWd2lMQ0JjSW1kc2IySmhiQzFqYjI1MGNtRmpkRndpS1Z4dUlDQXViM0IwYVc5dUtGd2lMUzFpZFc1a2JHVmNJaXdnWENKQ2RXNWtiR1Z6SUhkcGRHZ2djbTlzYkhWd0lHbHVjM1JsWVdRZ2IyWWdkWE5wYm1jZ2RITmpYQ0lzSUdaaGJITmxLVnh1SUNBdWIzQjBhVzl1S0Z4dUlDQWdJRndpTFMxMGN5MWpiMjVtYVdjdFptbHNaU0E4YzNSeWFXNW5QbHdpTEZ4dUlDQWdJRndpY21Wc1lYUnBkbVVnY0dGMGFDQjBieUIwYUdVZ2RITWdZMjl1Wm1sbklHWnBiR1VnWW1GelpXUWdiMjRnWTNka0lHOXlJR0ZpYzI5c2RYUmxJSEJoZEdoY0lpeGNiaUFnSUNCY0lpNHZkSE5qYjI1bWFXY3Vhbk52Ymx3aVhHNGdJQ2xjYmlBZ0xtOXdkR2x2YmloY2JpQWdJQ0JjSWkwdFpHVnpZM0pwY0hScGIyNGdQRk4wY21sdVp6NWNJaXhjYmlBZ0lDQmNJbU52Ym5SeVlXTjBJR1JsYzJOeWFYQjBhVzl1WENJc1hHNGdJQ0FnWENKSGJHOWlZV3dnWTI5dWRISmhZM1FnYVcxd2JHVnRaVzUwWVhScGIyNWNJbHh1SUNBcFhHNGdJQzV2Y0hScGIyNG9YQ0l0TFhOMGNtbHdMV052Ym5SeVlXTjBMVzVoYldWY0lpd2dYQ0p6ZEhKcGNDQmpiMjUwY21GamRDQnVZVzFsSUdaeWIyMGdiM1YwY0hWMFhDSXNJR1poYkhObEtWeHVJQ0F1YjNCMGFXOXVLRndpTFMxcGJuQjFkQ0E4VTNSeWFXNW5QbHdpTENCY0ltbHVjSFYwSUdadmJHUmxjaUJtYjNJZ1kyOXVkSEpoWTNSelhDSXNJRndpYkdsaUwyTnZiblJ5WVdOMGMxd2lLVnh1SUNBdWIzQjBhVzl1S0Z3aUxTMXZkWFJ3ZFhRZ1BGTjBjbWx1Wno1Y0lpd2dYQ0p2ZFhSd2RYUWdabTlzWkdWeUlHWnZjaUJqYjI1MGNtRmpkSE5jSWl3Z1hDSXVMMk52Ym5SeVlXTjBjMXdpS1Z4dUlDQXViM0IwYVc5dUtGd2lMUzF6YjNWeVkyVnRZWEJ6WENJc0lGd2lhVzVqYkhWa1pYTWdjMjkxY21ObGJXRndjeUJwYmlCMGFHVWdZMjl0Y0dsc1pXUWdiM1YwY0hWMFhDSXNJR1poYkhObEtWeHVJQ0F1YjNCMGFXOXVLRndpTFMxdWNHMXlZMXdpTENCY0ltbHVZMngxWkdWeklDNXVjRzF5WXlCcGJpQjBhR1VnWTI5dGNHbHNaV1FnYjNWMGNIVjBYQ0lzSUdaaGJITmxLVnh1SUNBdWIzQjBhVzl1S0Z4dUlDQWdJRndpTFMxbWNtOXRMV3hwWWx3aUxGeHVJQ0FnSUZ3aWFXNWthV05oZEdWeklIUm9ZWFFnZEdobElHTnZiblJ5WVdOMElIUnZJR1JsY0d4dmVTQnBjeUJzYjJOaGRHVmtJR2x1SUhSb1pTQnNhV0lnWm05c1pHVnlJR0Z1WkNCdWIzUWdjSEpsTFdOdmJYQnBiR1ZrSUdsdUlIUm9aU0JqYjI1MGNtRmpkSE1nWm05c1pHVnlYQ0lzWEc0Z0lDQWdabUZzYzJWY2JpQWdLVnh1SUNBdWIzQjBhVzl1S0Z4dUlDQWdJRndpTFMxemFXUmxMV1ZtWm1WamRDMXdZWFJvY3lBOGNHRjBhSE11TGk0K1hDSXNYRzRnSUNBZ1hDSmhaR1JwZEdsdmJtRnNJSEJoZEdoeklHOXlJSEJoWTJ0aFoyVWdjbTl2ZEhNZ2RHaGhkQ0J0ZFhOMElHSmxJSEJ5WlhObGNuWmxaQ0JoY3lCemFXUmxMV1ZtWm1WamRHWjFiQ0JrZFhKcGJtY2dZMjl1ZEhKaFkzUWdZblZ1Wkd4cGJtZGNJbHh1SUNBcFhHNGdJQzVoWTNScGIyNG9ZWE41Ym1NZ0tHOXdkR2x2Ym5NNklHRnVlU2tnUFQ0Z2UxeHVJQ0FnSUdOdmJuTjBJSEJyWnlBOUlFcFRUMDR1Y0dGeWMyVW9YRzRnSUNBZ0lDQm1jeTV5WldGa1JtbHNaVk41Ym1Nb2NHRjBhQzVxYjJsdUtIQnliMk5sYzNNdVkzZGtLQ2tzSUZ3aWNHRmphMkZuWlM1cWMyOXVYQ0lwTENCY0luVjBaaTA0WENJcFhHNGdJQ0FnS1R0Y2JseHVJQ0FnSUdOdmJuTjBJSEJyWjB4dlkyc2dQU0JLVTA5T0xuQmhjbk5sS0Z4dUlDQWdJQ0FnWm5NdWNtVmhaRVpwYkdWVGVXNWpLSEJoZEdndWFtOXBiaWh3Y205alpYTnpMbU4zWkNncExDQmNJbkJoWTJ0aFoyVXRiRzlqYXk1cWMyOXVYQ0lwTENCY0luVjBaaTA0WENJcFhHNGdJQ0FnS1R0Y2JseHVJQ0FnSUd4bGRDQnVjRzF5WTBOdmJuUmxiblFnUFNCMWJtUmxabWx1WldRN1hHNWNiaUFnSUNCamIyNXpkQ0IyWlhKemFXOXVJRDBnY0d0bkxuWmxjbk5wYjI0N1hHNWNiaUFnSUNCc1pYUWdlMXh1SUNBZ0lDQWdMeThnWlhOc2FXNTBMV1JwYzJGaWJHVXRibVY0ZEMxc2FXNWxJSEJ5WldabGNpMWpiMjV6ZEZ4dUlDQWdJQ0FnWkdWMkxGeHVJQ0FnSUNBZ0x5OGdaWE5zYVc1MExXUnBjMkZpYkdVdGJtVjRkQzFzYVc1bElIQnlaV1psY2kxamIyNXpkRnh1SUNBZ0lDQWdaR1ZpZFdjc1hHNGdJQ0FnSUNBdkx5QmxjMnhwYm5RdFpHbHpZV0pzWlMxdVpYaDBMV3hwYm1VZ2NISmxabVZ5TFdOdmJuTjBYRzRnSUNBZ0lDQnVZVzFsTEZ4dUlDQWdJQ0FnTHk4Z1pYTnNhVzUwTFdScGMyRmliR1V0Ym1WNGRDMXNhVzVsSUhCeVpXWmxjaTFqYjI1emRGeHVJQ0FnSUNBZ1pHVnpZM0pwY0hScGIyNHNYRzRnSUNBZ0lDQnZkWFJ3ZFhRc1hHNGdJQ0FnSUNBdkx5QmxjMnhwYm5RdFpHbHpZV0pzWlMxdVpYaDBMV3hwYm1VZ2NISmxabVZ5TFdOdmJuTjBYRzRnSUNBZ0lDQnBibkIxZEN4Y2JpQWdJQ0FnSUM4dklHVnpiR2x1ZEMxa2FYTmhZbXhsTFc1bGVIUXRiR2x1WlNCd2NtVm1aWEl0WTI5dWMzUmNiaUFnSUNBZ0lITjBjbWx3UTI5dWRISmhZM1JPWVcxbExGeHVJQ0FnSUNBZ0x5OGdaWE5zYVc1MExXUnBjMkZpYkdVdGJtVjRkQzFzYVc1bElIQnlaV1psY2kxamIyNXpkRnh1SUNBZ0lDQWdZMk5oWVhNc1hHNGdJQ0FnSUNBdkx5QmxjMnhwYm5RdFpHbHpZV0pzWlMxdVpYaDBMV3hwYm1VZ2NISmxabVZ5TFdOdmJuTjBYRzRnSUNBZ0lDQmlkVzVrYkdVc1hHNWNiaUFnSUNBZ0lIUnpRMjl1Wm1sblJtbHNaU3hjYmlBZ0lDQWdJQzh2SUdWemJHbHVkQzFrYVhOaFlteGxMVzVsZUhRdGJHbHVaU0J3Y21WbVpYSXRZMjl1YzNSY2JpQWdJQ0FnSUhOdmRYSmpaVzFoY0hNc1hHNGdJQ0FnSUNBdkx5QmxjMnhwYm5RdFpHbHpZV0pzWlMxdVpYaDBMV3hwYm1VZ2NISmxabVZ5TFdOdmJuTjBYRzRnSUNBZ0lDQnVjRzF5WXl4Y2JpQWdJQ0FnSUM4dklHVnpiR2x1ZEMxa2FYTmhZbXhsTFc1bGVIUXRiR2x1WlNCd2NtVm1aWEl0WTI5dWMzUmNiaUFnSUNBZ0lITnBaR1ZGWm1abFkzUlFZWFJvY3l4Y2JpQWdJQ0FnSUM4dklHVnpiR2x1ZEMxa2FYTmhZbXhsTFc1bGVIUXRiR2x1WlNCd2NtVm1aWEl0WTI5dWMzUmNiaUFnSUNBZ0lHWnliMjFNYVdJc1hHNGdJQ0FnZlNBOUlHOXdkR2x2Ym5NN1hHNGdJQ0FnWTI5dWMzUWdiRzluSUQwZ2JHOW5aMlZ5TG1admNpaGNJbU52YlhCcGJHVXRZMjl1ZEhKaFkzUmNJaWs3WEc0Z0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUdsbUlDaHVjRzF5WXlrZ2UxeHVJQ0FnSUNBZ0lDQnVjRzF5WTBOdmJuUmxiblFnUFNCbWMxeHVJQ0FnSUNBZ0lDQWdJQzV5WldGa1JtbHNaVk41Ym1Nb2NHRjBhQzVxYjJsdUtIQnliMk5sYzNNdVkzZGtLQ2tzSUZ3aUxtNXdiWEpqWENJcExDQmNJblYwWmkwNFhDSXBYRzRnSUNBZ0lDQWdJQ0FnTG5SdlUzUnlhVzVuS0NrN1hHNWNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2NtVndiR0ZqWldRZ1BTQnVjRzF5WTBOdmJuUmxiblF1Y21Wd2JHRmpaU2hjYmlBZ0lDQWdJQ0FnSUNBdlhGd2tYRng3S0Z0ZWZWMHJLVnhjZlM5bkxGeHVJQ0FnSUNBZ0lDQWdJQ2hmT2lCaGJua3NJSFpoY2s1aGJXVTZJSE4wY21sdVp5a2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2RtRnNkV1VnUFNCd2NtOWpaWE56TG1WdWRsdDJZWEpPWVcxbFhUdGNibHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFpoYkhWbElEMDlQU0IxYm1SbFptbHVaV1FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWMyOXNaUzUzWVhKdUtGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHQlhZWEp1YVc1bk9pQkZiblpwY205dWJXVnVkQ0IyWVhKcFlXSnNaU0JjSWlSN2RtRnlUbUZ0WlgxY0lpQnBjeUJ1YjNRZ2MyVjBZRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1hDSmNJanRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhaaGJIVmxPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0tUdGNibHh1SUNBZ0lDQWdJQ0J1Y0cxeVkwTnZiblJsYm5RZ1BTQnlaWEJzWVdObFpEdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOUlHTmhkR05vSUh0Y2JpQWdJQ0FnSUd4dlp5NXBibVp2S0dCT2J5QXVibkJ0Y21NZ1ptbHNaU0JtYjNWdVpDd2djMnRwY0hCcGJtY2dZMjl3ZVdsdVp5QXVibkJ0Y21NZ2RHOGdiM1YwY0hWMFlDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2JHOW5MbVJsWW5WbktGeHVJQ0FnSUNBZ1lISjFibTVwYm1jZ2QybDBhQ0J2Y0hScGIyNXpPaUFrZTBwVFQwNHVjM1J5YVc1bmFXWjVLRzl3ZEdsdmJuTXBmU0JtYjNJZ0pIdHdhMmN1Ym1GdFpYMGdkbVZ5YzJsdmJpQWtlM1psY25OcGIyNTlZRnh1SUNBZ0lDazdYRzVjYmlBZ0lDQjBjME52Ym1acFowWnBiR1VnUFNCd1lYUm9MbWx6UVdKemIyeDFkR1VvZEhORGIyNW1hV2RHYVd4bEtWeHVJQ0FnSUNBZ1B5QjBjME52Ym1acFowWnBiR1ZjYmlBZ0lDQWdJRG9nY0dGMGFDNXFiMmx1S0hCeWIyTmxjM011WTNka0tDa3NJSFJ6UTI5dVptbG5SbWxzWlNrN1hHNWNiaUFnSUNCdmRYUndkWFFnUFNCemRISnBjRU52Ym5SeVlXTjBUbUZ0WlNBL0lHOTFkSEIxZENBNklIQmhkR2d1YW05cGJpaHZkWFJ3ZFhRc0lHNWhiV1VwTzF4dUlDQWdJR3h2Wnk1cGJtWnZLR0JFWld4bGRHbHVaeUJsZUdsemRHbHVaeUJ2ZFhSd2RYUWdabTlzWkdWeUlDaHBaaUJsZUdsemRITXBJSFZ1WkdWeUlDUjdiM1YwY0hWMGZXQXBPMXh1SUNBZ0lHVjRaV05UZVc1aktHQnliU0F0Y21ZZ0pIdHZkWFJ3ZFhSOVlDazdYRzRnSUNBZ2FXWWdLR0oxYm1Sc1pTQW1KaUFoWm5KdmJVeHBZaWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdjMmxrWlVWbVptVmpkRTFoZEdOb1pYSWdQU0JpZFdsc1pGTnBaR1ZGWm1abFkzUk5ZWFJqYUdWeUtGeHVJQ0FnSUNBZ0lDQkJjbkpoZVM1cGMwRnljbUY1S0hOcFpHVkZabVpsWTNSUVlYUm9jeWtnUHlCemFXUmxSV1ptWldOMFVHRjBhSE1nT2lCYlhWeHVJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lHeHZaeTVwYm1adktHQmlkVzVrYkdsdVp5QmpiMjUwY21GamRDQm1jbTl0SUNSN2FXNXdkWFI5WUNrN1hHNGdJQ0FnSUNCamIyNXpkQ0IwWlcxd1FuVnVaR3hsUkdseUlEMGdabk11Yld0a2RHVnRjRk41Ym1Nb1hHNGdJQ0FnSUNBZ0lIQmhkR2d1YW05cGJpaHdjbTlqWlhOekxtTjNaQ2dwTENCY0lpNWpiMjUwY21GamRDMWlkVzVrYkdVdFhDSXBYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYVc1d2RYUkZiblJ5ZVNBOUlIQmhkR2d1Y21WemIyeDJaU2h3Y205alpYTnpMbU4zWkNncExDQnBibkIxZEN3Z1hDSnBibVJsZUM1MGMxd2lLVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdZMjl1Wm1sblJtbHNaU0E5SUhSekxuSmxZV1JEYjI1bWFXZEdhV3hsS0hSelEyOXVabWxuUm1sc1pTd2dkSE11YzNsekxuSmxZV1JHYVd4bEtUdGNiaUFnSUNBZ0lDQWdhV1lnS0dOdmJtWnBaMFpwYkdVdVpYSnliM0lwSUh0Y2JpQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dTVzUwWlhKdVlXeEZjbkp2Y2loY2JpQWdJQ0FnSUNBZ0lDQWdJSFJ6TG1ac1lYUjBaVzVFYVdGbmJtOXpkR2xqVFdWemMyRm5aVlJsZUhRb1kyOXVabWxuUm1sc1pTNWxjbkp2Y2k1dFpYTnpZV2RsVkdWNGRDd2dYQ0pjWEc1Y0lpbGNiaUFnSUNBZ0lDQWdJQ0FwTzF4dUlDQWdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2NHRnljMlZrUTI5dVptbG5JRDBnZEhNdWNHRnljMlZLYzI5dVEyOXVabWxuUm1sc1pVTnZiblJsYm5Rb1hHNGdJQ0FnSUNBZ0lDQWdZMjl1Wm1sblJtbHNaUzVqYjI1bWFXY3NYRzRnSUNBZ0lDQWdJQ0FnZEhNdWMzbHpMRnh1SUNBZ0lDQWdJQ0FnSUhCaGRHZ3VaR2x5Ym1GdFpTaDBjME52Ym1acFowWnBiR1VwTEZ4dUlDQWdJQ0FnSUNBZ0lIVnVaR1ZtYVc1bFpDeGNiaUFnSUNBZ0lDQWdJQ0IwYzBOdmJtWnBaMFpwYkdWY2JpQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lDQWdhV1lnS0hCaGNuTmxaRU52Ym1acFp5NWxjbkp2Y25NdWJHVnVaM1JvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRWx1ZEdWeWJtRnNSWEp5YjNJb1hHNGdJQ0FnSUNBZ0lDQWdJQ0J3WVhKelpXUkRiMjVtYVdjdVpYSnliM0p6WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQzV0WVhBb0tHVnljbTl5S1NBOVBseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUnpMbVpzWVhSMFpXNUVhV0ZuYm05emRHbGpUV1Z6YzJGblpWUmxlSFFvWlhKeWIzSXViV1Z6YzJGblpWUmxlSFFzSUZ3aVhGeHVYQ0lwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdMbXB2YVc0b1hDSmNYRzVjSWlsY2JpQWdJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnZEdWdGNFTnZiWEJwYkdWeVQzQjBhVzl1Y3pvZ2RITXVRMjl0Y0dsc1pYSlBjSFJwYjI1eklEMGdlMXh1SUNBZ0lDQWdJQ0FnSUM0dUxuQmhjbk5sWkVOdmJtWnBaeTV2Y0hScGIyNXpMRnh1SUNBZ0lDQWdJQ0FnSUc5MWRFUnBjam9nZEdWdGNFSjFibVJzWlVScGNpeGNiaUFnSUNBZ0lDQWdJQ0J0YjJSMWJHVTZJSFJ6TGsxdlpIVnNaVXRwYm1RdVJWTk9aWGgwTEZ4dUlDQWdJQ0FnSUNBZ0lHUmxZMnhoY21GMGFXOXVPaUJtWVd4elpTeGNiaUFnSUNBZ0lDQWdJQ0J6YjNWeVkyVk5ZWEE2SUdaaGJITmxMRnh1SUNBZ0lDQWdJQ0FnSUdsdWJHbHVaVk52ZFhKalpYTTZJR1poYkhObExGeHVJQ0FnSUNBZ0lDQjlPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQmlkVzVrYkdWa1JXNTBjbmxRYjJsdWRDQTlJSFJ6WEc0Z0lDQWdJQ0FnSUNBZ0xtZGxkRTkxZEhCMWRFWnBiR1ZPWVcxbGN5aGNiaUFnSUNBZ0lDQWdJQ0FnSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnTGk0dWNHRnljMlZrUTI5dVptbG5MRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQnZjSFJwYjI1ek9pQjBaVzF3UTI5dGNHbHNaWEpQY0hScGIyNXpMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTeGNiaUFnSUNBZ0lDQWdJQ0FnSUdsdWNIVjBSVzUwY25rc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FoZEhNdWMzbHpMblZ6WlVOaGMyVlRaVzV6YVhScGRtVkdhV3hsVG1GdFpYTmNiaUFnSUNBZ0lDQWdJQ0FwWEc0Z0lDQWdJQ0FnSUNBZ0xtWnBibVFvS0dacGJHVk9ZVzFsS1NBOVBpQm1hV3hsVG1GdFpTNWxibVJ6VjJsMGFDaGNJaTVxYzF3aUtTazdYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tDRmlkVzVrYkdWa1JXNTBjbmxRYjJsdWRDa2dlMXh1SUNBZ0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCSmJuUmxjbTVoYkVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0FnSUNBZ1lFWmhhV3hsWkNCMGJ5QmtaWFJsY20xcGJtVWdkR2hsSUdWdGFYUjBaV1FnWW5WdVpHeGxJR1Z1ZEhKNUlHWnZjaUFrZTJsdWNIVjBSVzUwY25sOVlGeHVJQ0FnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQmpiMjF3YVd4bFYybDBhRlJ6WTI5dVptbG5UM1psY25KcFpHVnpLSFJ6UTI5dVptbG5SbWxzWlN3Z2RHVnRjRU52YlhCcGJHVnlUM0IwYVc5dWN5azdYRzRnSUNBZ0lDQWdJR052Ym5OMElHSjFibVJzWldSRGIyNTBjbUZqZENBOUlHRjNZV2wwSUhKdmJHeDFjQ2g3WEc0Z0lDQWdJQ0FnSUNBZ2FXNXdkWFE2SUdKMWJtUnNaV1JGYm5SeWVWQnZhVzUwTEZ4dUlDQWdJQ0FnSUNBZ0lHVjRkR1Z5Ym1Gc09pQW9hV1FwSUQwK0lDRnphRzkxYkdSQ2RXNWtiR1ZEYjI1MGNtRmpkRTF2WkhWc1pTaHBaQ2tzWEc0Z0lDQWdJQ0FnSUNBZ2RISmxaWE5vWVd0bE9pQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCdGIyUjFiR1ZUYVdSbFJXWm1aV04wY3pvZ0tHbGtLU0E5UGlCemFXUmxSV1ptWldOMFRXRjBZMmhsY2locFpDa3NYRzRnSUNBZ0lDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUNBZ0lDQndiSFZuYVc1ek9pQmJYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYTnZiSFpsUkdWallXWlFZV05yWVdkbFNXMXdiM0owY3lncExGeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WemIyeDJaVUoxYm1Sc1pXUktjMGx0Y0c5eWRITW9LU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHNXZaR1ZTWlhOdmJIWmxLSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdaWGgwWlc1emFXOXVjem9nVzF3aUxtMXFjMXdpTENCY0lpNXFjMXdpTENCY0lpNXFjMjl1WENJc0lGd2lMbU5xYzF3aUxDQmNJaTUwYzF3aVhTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2JXOWtkV3hsUkdseVpXTjBiM0pwWlhNNklGdGNJbTV2WkdWZmJXOWtkV3hsYzF3aVhTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2JXOWtkV3hsVUdGMGFITTZJRnR3WVhSb0xtcHZhVzRvY0hKdlkyVnpjeTVqZDJRb0tTd2dYQ0p1YjJSbFgyMXZaSFZzWlhOY0lpbGRMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQmxlSEJ2Y25SRGIyNWthWFJwYjI1ek9pQmJYQ0p1YjJSbFhDSXNJRndpWkdWbVlYVnNkRndpTENCY0luSmxjWFZwY21WY0lpd2dYQ0pwYlhCdmNuUmNJbDBzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSEJ5WldabGNrSjFhV3gwYVc1ek9pQjBjblZsTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdmU2tzWEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjF0YjI1cWN5aDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHbHVZMngxWkdVNklDOXViMlJsWDIxdlpIVnNaWE12TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdmU2tzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWEJzWVdObEtIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NISmxkbVZ1ZEVGemMybG5ibTFsYm5RNklIUnlkV1VzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR1JsYkdsdGFYUmxjbk02SUZ0Y0lsd2lMQ0JjSWx3aVhTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2RtRnNkV1Z6T2lCN0lGd2lJeU5XUlZKVFNVOU9JeU5jSWpvZ2RtVnljMmx2Yml3Z1hDSWpJMUJCUTB0QlIwVWpJMXdpT2lCd2EyY3VibUZ0WlNCOUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnZlNrc1hHNGdJQ0FnSUNBZ0lDQWdYU3hjYmlBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNBZ0lHeHZaeTVwYm1adktGeHVJQ0FnSUNBZ0lDQWdJR0IzYVhSb2FXNW5JR052Ym5SeVlXTjBJSFJ2SUNSN2IzVjBjSFYwZlNCM2FYUm9JRzVoYldVZ0pIdDBiMUJoYzJOaGJFTmhjMlVvYm1GdFpTbDlMbXB6WUZ4dUlDQWdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ0lDQmhkMkZwZENCaWRXNWtiR1ZrUTI5dWRISmhZM1F1ZDNKcGRHVW9lMXh1SUNBZ0lDQWdJQ0FnSUdacGJHVTZJR0FrZTI5MWRIQjFkSDB2Skh0MGIxQmhjMk5oYkVOaGMyVW9ibUZ0WlNsOUxtcHpZQ3hjYmlBZ0lDQWdJQ0FnSUNCbWIzSnRZWFE2SUZ3aWRXMWtYQ0lzWEc0Z0lDQWdJQ0FnSUNBZ2JtRnRaVG9nWUNSN2RHOVFZWE5qWVd4RFlYTmxLRzVoYldVcGZTNXFjMkFzWEc0Z0lDQWdJQ0FnSUNBZ2MyOTFjbU5sYldGd09pQnpiM1Z5WTJWdFlYQnpJRDhnWENKcGJteHBibVZjSWlBNklHWmhiSE5sTEZ4dUlDQWdJQ0FnSUNBZ0lITnZkWEpqWlcxaGNGQmhkR2hVY21GdWMyWnZjbTA2SUNoeVpXeGhkR2wyWlZOdmRYSmpaVkJoZEdnc0lITnZkWEpqWlcxaGNGQmhkR2dwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR0ZpYzI5c2RYUmxVMjkxY21ObFVHRjBhQ0E5SUhCaGRHZ3VjbVZ6YjJ4MlpTaGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NHRjBhQzVrYVhKdVlXMWxLSE52ZFhKalpXMWhjRkJoZEdncExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpXeGhkR2wyWlZOdmRYSmpaVkJoZEdoY2JpQWdJQ0FnSUNBZ0lDQWdJQ2s3WEc1Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoaFluTnZiSFYwWlZOdmRYSmpaVkJoZEdndWMzUmhjblJ6VjJsMGFDaDBaVzF3UW5WdVpHeGxSR2x5S1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY0dGMGFDNXdiM05wZUM1cWIybHVLRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRndpTG1KMWJtUnNaVndpTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhCaGRHaGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzV5Wld4aGRHbDJaU2gwWlcxd1FuVnVaR3hsUkdseUxDQmhZbk52YkhWMFpWTnZkWEpqWlZCaGRHZ3BYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F1YzNCc2FYUW9jR0YwYUM1elpYQXBYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F1YW05cGJpaGNJaTljSWlsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlISmxiR0YwYVhabFUyOTFjbU5sVUdGMGFEdGNiaUFnSUNBZ0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lDQWdZWGRoYVhRZ1luVnVaR3hsWkVOdmJuUnlZV04wTG1Oc2IzTmxLQ2s3WEc0Z0lDQWdJQ0I5SUdacGJtRnNiSGtnZTF4dUlDQWdJQ0FnSUNCbWN5NXliVk41Ym1Nb2RHVnRjRUoxYm1Sc1pVUnBjaXdnZXlCeVpXTjFjbk5wZG1VNklIUnlkV1VzSUdadmNtTmxPaUIwY25WbElIMHBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMGdaV3h6WlNCcFppQW9JV1p5YjIxTWFXSXBJSHRjYmlBZ0lDQWdJR052YlhCcGJHVlhhWFJvVkhOamIyNW1hV2RQZG1WeWNtbGtaWE1vZEhORGIyNW1hV2RHYVd4bExDQjdYRzRnSUNBZ0lDQWdJRzkxZEVScGNqb2diM1YwY0hWMExGeHVJQ0FnSUNBZ0lDQnRiMlIxYkdVNklIUnpMazF2WkhWc1pVdHBibVF1UlZOT1pYaDBMRnh1SUNBZ0lDQWdJQ0JrWldOc1lYSmhkR2x2YmpvZ1ptRnNjMlVzWEc0Z0lDQWdJQ0FnSUhOdmRYSmpaVTFoY0RvZ2MyOTFjbU5sYldGd2N5eGNiaUFnSUNBZ0lDQWdhVzVzYVc1bFUyOTFjbU5sY3pvZ2MyOTFjbU5sYldGd2N5eGNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCamIzQjVSbTlzWkdWeVEyOXVkR1Z1ZEhNb1hHNGdJQ0FnSUNBZ0lIQmhkR2d1YW05cGJpaHdjbTlqWlhOekxtTjNaQ2dwTENCY0lpNHZiR2xpTDJOcWMxd2lLU3hjYmlBZ0lDQWdJQ0FnY0dGMGFDNXFiMmx1S0hCeWIyTmxjM011WTNka0tDa3NJRzkxZEhCMWRDbGNiaUFnSUNBZ0lDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnYzJOeWFYQjBjeUE5SUh0Y2JpQWdJQ0FnSUhOMFlYSjBPaUJuWlhSRGIyNTBjbUZqZEZOMFlYSjBRMjl0YldGdVpDaGtaV0oxWnl3Z1kyTmhZWE1wTEZ4dUlDQWdJQ0FnWENKemRHRnlkRHBrWlhaY0lqb2dYQ0ptWVdKeWFXTXRZMmhoYVc1amIyUmxMVzV2WkdVZ2MzUmhjblFnTFMxMGJITXVaVzVoWW14bFpDQm1ZV3h6WlZ3aUxGeHVJQ0FnSUNBZ1hDSnpkR0Z5ZERwM1lYUmphRndpT2lBbmJtOWtaVzF2YmlBdExXVjRaV01nWENKdWNHMGdjblZ1SUhOMFlYSjBPbVJsZGx3aUp5eGNiaUFnSUNBZ0lHSjFhV3hrT2lBblpXTm9ieUJjSWs1dklHNWxaV1FnZEc4Z1luVnBiR1FnZEdobElHTm9ZV2x1WTI5a1pWd2lKeXhjYmlBZ0lDQWdJR3hwYm5RNklGd2laWE5zYVc1MElDNGdMUzFtYVhnZ0xTMWxlSFFnTG1welhDSXNYRzRnSUNBZ2ZUdGNibHh1SUNBZ0lHTnZibk4wSUdOdmJuUnlZV04wVUdGamEyRm5aU0E5SUhCclp6dGNiaUFnSUNCamIyNXpkQ0JqYjI1MGNtRmpkRkJoWTJ0aFoyVk1iMk5ySUQwZ2NHdG5URzlqYXp0Y2JseHVJQ0FnSUdOdmJuUnlZV04wVUdGamEyRm5aUzV1WVcxbElEMGdibUZ0WlR0Y2JpQWdJQ0JqYjI1MGNtRmpkRkJoWTJ0aFoyVXVaR1Z6WTNKcGNIUnBiMjRnUFNCa1pYTmpjbWx3ZEdsdmJqdGNiaUFnSUNCamIyNTBjbUZqZEZCaFkydGhaMlV1YzJOeWFYQjBjeUE5SUhOamNtbHdkSE03WEc1Y2JpQWdJQ0JrWld4bGRHVWdZMjl1ZEhKaFkzUlFZV05yWVdkbExuUjVjR1U3WEc0Z0lDQWdaR1ZzWlhSbElHTnZiblJ5WVdOMFVHRmphMkZuWlM1MGVYQmxjenRjYmlBZ0lDQmtaV3hsZEdVZ1kyOXVkSEpoWTNSUVlXTnJZV2RsTG1WNGNHOXlkSE03WEc0Z0lDQWdZMjl1ZEhKaFkzUlFZV05yWVdkbExtMWhhVzRnUFNCaWRXNWtiR1ZjYmlBZ0lDQWdJRDhnWUNSN2RHOVFZWE5qWVd4RFlYTmxLRzVoYldVcGZTNXFjMkJjYmlBZ0lDQWdJRG9nWUNSN2NtVnRiM1psVTNKalJuSnZiVkJoZEdnb2FXNXdkWFFwZlM4a2UyWnliMjFNYVdJZ1B5QmNJbWx1WkdWNExtTnFjMXdpSURvZ1hDSnBibVJsZUM1cWMxd2lmV0E3WEc1Y2JpQWdJQ0JtY3k1M2NtbDBaVVpwYkdWVGVXNWpLRnh1SUNBZ0lDQWdjR0YwYUM1cWIybHVLRzkxZEhCMWRDd2dYQ0p3WVdOcllXZGxMbXB6YjI1Y0lpa3NYRzRnSUNBZ0lDQktVMDlPTG5OMGNtbHVaMmxtZVNoamIyNTBjbUZqZEZCaFkydGhaMlVwWEc0Z0lDQWdLVHRjYmx4dUlDQWdJR1p6TG5keWFYUmxSbWxzWlZONWJtTW9YRzRnSUNBZ0lDQndZWFJvTG1wdmFXNG9iM1YwY0hWMExDQmNJbkJoWTJ0aFoyVXRiRzlqYXk1cWMyOXVYQ0lwTEZ4dUlDQWdJQ0FnU2xOUFRpNXpkSEpwYm1kcFpua29ZMjl1ZEhKaFkzUlFZV05yWVdkbFRHOWpheWxjYmlBZ0lDQXBPMXh1WEc0Z0lDQWdhV1lnS0c1d2JYSmpJQ1ltSUc1d2JYSmpRMjl1ZEdWdWRDbGNiaUFnSUNBZ0lHWnpMbmR5YVhSbFJtbHNaVk41Ym1Nb2NHRjBhQzVxYjJsdUtHOTFkSEIxZEN3Z1hDSXVibkJ0Y21OY0lpa3NJRzV3YlhKalEyOXVkR1Z1ZENrN1hHNWNiaUFnSUNCc2IyY3VhVzVtYnloZ1NXNXpkR0ZzYkdsdVp5QmhibVFnYzJoeWFXNXJkM0poY0hCcGJtY2daR1Z3Wlc1a1pXNWphV1Z6WUNrN1hHNGdJQ0FnWlhobFkxTjVibU1vWUc1d2JTQnBibk4wWVd4c1lDd2dleUJqZDJRNklHOTFkSEIxZENCOUtUdGNiaUFnSUNCbGVHVmpVM2x1WXloZ2JuQnRJSE5vY21sdWEzZHlZWEJnTENCN0lHTjNaRG9nYjNWMGNIVjBJSDBwTzF4dUlDQWdJR1Y0WldOVGVXNWpLRndpY20wZ0xYSm1JRzV2WkdWZmJXOWtkV3hsYzF3aUxDQjdJR04zWkRvZ2IzVjBjSFYwSUgwcE8xeHVJQ0FnSUd4dlp5NXBibVp2S0dCa1pXeGxkR2x1WnlCMFpXMXdJR1p2YkdSbGNuTmdLVHRjYmlBZ0lDQmxlR1ZqVTNsdVl5aGdjbTBnTFhKbUlDNHZiR2xpSUNZbUlISnRJQzF5WmlBdUwyUnBjM1JnTENCN0lHTjNaRG9nYjNWMGNIVjBJSDBwTzF4dUlDQWdJR3h2Wnk1cGJtWnZLRnh1SUNBZ0lDQWdZRU52Ym5SeVlXTjBJQ1I3Ym1GdFpYMGdZMjl0Y0dsc1pXUWdjM1ZqWTJWemMyWjFiR3g1SVNCcGJpQWtlM0JoZEdndWNtVnpiMngyWlNodmRYUndkWFFwZldCY2JpQWdJQ0FwTzF4dUlDQWdJR2xtSUNoa1pYWXBJSHRjYmlBZ0lDQWdJR3h2Wnk1cGJtWnZLR0JrWlhZZ2JXOWtaU0JsYm1GaWJHVmtMaUJwYm5OMFlXeHNhVzVuSUdSbGNHVnVaR1Z1WTJsbGN5Qm1iM0lnWkdWaWRXZG5hVzVuWUNrN1hHNGdJQ0FnSUNCbGVHVmpVM2x1WXloZ2JuQnRJR2x1YzNSaGJHeGdMQ0I3WEc0Z0lDQWdJQ0FnSUdOM1pEb2diM1YwY0hWMExGeHVJQ0FnSUNBZ0lDQmxiblk2SUhzZ0xpNHVjSEp2WTJWemN5NWxibllzSUU1UFJFVmZSVTVXT2lCY0luQnliMlIxWTNScGIyNWNJaUI5TEZ4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnZlZ4dUlDQjlLVHRjYmx4dVkyOXVjM1FnWlhoMGNtRmpkRWx1WkdWNFpYTWdQU0J1WlhjZ1EyOXRiV0Z1WkNncFhHNGdJQzVqYjIxdFlXNWtLRndpWlhoMGNtRmpkQzFwYm1SbGVHVnpYQ0lwWEc0Z0lDNXZjSFJwYjI0b1hDSXRMV1pwYkdVZ1cxTjBjbWx1WjExY0lpd2dYQ0owYUdVZ2JXOWtaV3dnWm1sc1pWd2lLVnh1SUNBdWIzQjBhVzl1S0Z3aUxTMW1iMnhrWlhJZ1cxTjBjbWx1WjExY0lpd2dYQ0owYUdVZ2JXOWtaV3dnWm05c1pHVnlYQ0lwWEc0Z0lDNXZjSFJwYjI0b1hDSXRMVzkxZEVScGNpQThVM1J5YVc1blBsd2lMQ0JjSW5Sb1pTQnZkWFJrYVhJdUlITm9iM1ZzWkNCdFlYUmphQ0I1YjNWeUlHTnZiblJ5WVdOMElHWnZiR1JsY2x3aUtWeHVJQ0F1WkdWelkzSnBjSFJwYjI0b1hHNGdJQ0FnWENKRGNtVmhkR1Z6SUdFZ2RHaGxJRXBUVDA0Z2FXNWtaWGdnWm1sc1pYTWdkRzhnWW1VZ2MzVmliV2wwZEdWa0lIUnZJR0ZzYjI1bklIZHBkR2dnZEdobElHTnZiblJ5WVdOMFhDSmNiaUFnS1Z4dUlDQXVZV04wYVc5dUtHRnplVzVqSUNodmNIUnBiMjV6T2lCaGJua3BJRDArSUh0Y2JpQWdJQ0JqYjI1emRDQndhMmNnUFNCS1UwOU9MbkJoY25ObEtGeHVJQ0FnSUNBZ1puTXVjbVZoWkVacGJHVlRlVzVqS0hCaGRHZ3VhbTlwYmlod2NtOWpaWE56TG1OM1pDZ3BMQ0JjSW5CaFkydGhaMlV1YW5OdmJsd2lLU3dnWENKMWRHWXRPRndpS1Z4dUlDQWdJQ2s3WEc1Y2JpQWdJQ0JqYjI1emRDQjJaWEp6YVc5dUlEMGdjR3RuTG5abGNuTnBiMjQ3WEc1Y2JpQWdJQ0JqYjI1emRDQnNiMmNnUFNCc2IyZG5aWEl1Wm05eUtGd2laWGgwY21GamRDMXBibVJsZUdWelhDSXBPMXh1SUNBZ0lHeHZaeTVrWldKMVp5aGNiaUFnSUNBZ0lHQnlkVzV1YVc1bklIZHBkR2dnYjNCMGFXOXVjem9nSkh0S1UwOU9Mbk4wY21sdVoybG1lU2h2Y0hScGIyNXpLWDBnWm05eUlDUjdjR3RuTG01aGJXVjlJSFpsY25OcGIyNGdKSHQyWlhKemFXOXVmV0JjYmlBZ0lDQXBPMXh1WEc0Z0lDQWdMeThnWlhOc2FXNTBMV1JwYzJGaWJHVXRibVY0ZEMxc2FXNWxJSEJ5WldabGNpMWpiMjV6ZEZ4dUlDQWdJR3hsZENCN0lHWnBiR1VzSUdadmJHUmxjaXdnYjNWMFJHbHlJSDBnUFNCdmNIUnBiMjV6TzF4dVhHNGdJQ0FnWTI5dWMzUWdiVzlrWld4ek9pQmhibmxiWFNBOUlGdGRPMXh1SUNBZ0lHbG1JQ2htYVd4bEtTQjdYRzRnSUNBZ0lDQnRiMlJsYkhNdWNIVnphQ2d1TGk1eVpXRmtUVzlrWld4R2FXeGxLR1pwYkdVcEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9abTlzWkdWeUtTQjdYRzRnSUNBZ0lDQnNiMmN1YVc1bWJ5aGdURzloWkdsdVp5QnRiMlJsYkhNZ1puSnZiU0FrZTJadmJHUmxjbjB1TGk1Z0tUdGNiaUFnSUNBZ0lHMXZaR1ZzY3k1d2RYTm9LQzR1TGloaGQyRnBkQ0J5WldGa1RXOWtaV3hHYjJ4a1pYSnpLR1p2YkdSbGNpa3BLVHRjYmlBZ0lDQjlYRzRnSUNBZ1kyOXVjM1FnY21WemRXeDBPaUJTWldOdmNtUThjM1J5YVc1bkxDQmhibmsrSUQwZ2UzMDdYRzRnSUNBZ1kyOXVjM1FnWkdWemFXZHVSRzlqY3pvZ1VtVmpiM0prUEhOMGNtbHVaeXdnWVc1NVBpQTlJSHQ5TzF4dVhHNGdJQ0FnYVdZZ0tDRm1hV3hsSUNZbUlDRm1iMnhrWlhJcFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1NXNTBaWEp1WVd4RmNuSnZjaWhnVFhWemRDQndZWE56SUdFZ1ptbHNaU0J2Y2lCaElHWnZiR1JsY21BcE8xeHVYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQnRJRzltSUcxdlpHVnNjeWtnZTF4dUlDQWdJQ0FnYkc5bkxuWmxjbUp2YzJVb1lFVjRkSEpoWTNScGJtY2dhVzVrWlhobGN5Qm1iM0lnZEdGaWJHVWdKSHROYjJSbGJDNTBZV0pzWlU1aGJXVW9iU2w5WUNrN1hHNGdJQ0FnSUNCamIyNXpkQ0JwYm1SbGVHVnpJRDBnWjJWdVpYSmhkR1ZOYjJSbGJFbHVaR1Y0WlhNb2JTazdYRzRnSUNBZ0lDQnBibVJsZUdWekxtWnZja1ZoWTJnb0tHbHVaR1Y0S1NBOVBpQjdYRzRnSUNBZ0lDQWdJR2xtSUNocGJtUmxlQzV1WVcxbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnY21WemRXeDBXMmx1WkdWNExtNWhiV1ZkSUQwZ2FXNWtaWGc3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ1oyVnVaWEpoZEdWTmIyUmxiRVJsYzJsbmJrUnZZM01vYlN3Z1pHVnphV2R1Ukc5amN5azdYRzRnSUNBZ2ZWeHVJQ0FnSUdOdmJuTjBJR2x1WkdWNFpYTlViMWR5YVhSbElEMGdUMkpxWldOMExuWmhiSFZsY3loeVpYTjFiSFFwTzF4dUlDQWdJR052Ym5OMElHUnZZM05VYjFkeWFYUmxJRDBnVDJKcVpXTjBMblpoYkhWbGN5aGtaWE5wWjI1RWIyTnpLVHRjYmlBZ0lDQnNiMmN1ZG1WeVltOXpaU2hnUm05MWJtUWdKSHRwYm1SbGVHVnpWRzlYY21sMFpTNXNaVzVuZEdoOUlHbHVaR1Y0WlhNZ2RHOGdZM0psWVhSbFlDazdYRzRnSUNBZ2JHOW5MblpsY21KdmMyVW9ZRVp2ZFc1a0lDUjdaRzlqYzFSdlYzSnBkR1V1YkdWdVozUm9mU0JrWlhOcFoyNGdaRzlqY3lCMGJ5QmpjbVZoZEdWZ0tUdGNiaUFnSUNCc2IyY3VaR1ZpZFdjb1lFbHVaR1Y0WlhNNklDUjdTbE5QVGk1emRISnBibWRwWm5rb2NtVnpkV3gwS1gxZ0tUdGNiaUFnSUNCc2IyY3VaR1ZpZFdjb1lFUmxjMmxuYmtSdlkzTTZJQ1I3U2xOUFRpNXpkSEpwYm1kcFpua29aR1Z6YVdkdVJHOWpjeWw5WUNrN1hHNGdJQ0FnZDNKcGRHVkpibVJsZUdWektHbHVaR1Y0WlhOVWIxZHlhWFJsTENCdmRYUkVhWElwTzF4dUlDQWdJSGR5YVhSbFJHVnphV2R1Ukc5amN5aGtiMk56Vkc5WGNtbDBaU3dnYjNWMFJHbHlLVHRjYmlBZ2ZTazdYRzVjYm1OdmJuTjBJR1Y0ZEhKaFkzUkRiMnhzWldOMGFXOXVjeUE5SUc1bGR5QkRiMjF0WVc1a0tDbGNiaUFnTG1OdmJXMWhibVFvWENKbGVIUnlZV04wTFdOdmJHeGxZM1JwYjI1elhDSXBYRzRnSUM1dmNIUnBiMjRvWENJdExXWnBiR1VnVzFOMGNtbHVaMTFjSWl3Z1hDSjBhR1VnYlc5a1pXd2dabWxzWlZ3aUtWeHVJQ0F1YjNCMGFXOXVLRndpTFMxbWIyeGtaWElnVzFOMGNtbHVaMTFjSWl3Z1hDSjBhR1VnYlc5a1pXd2dabTlzWkdWeVhDSXBYRzRnSUM1dmNIUnBiMjRvWENJdExXOTFkRVJwY2lBOFUzUnlhVzVuUGx3aUxDQmNJblJvWlNCdmRYUmthWEl1SUhOb2IzVnNaQ0J0WVhSamFDQjViM1Z5SUdOdmJuUnlZV04wSUdadmJHUmxjbHdpS1Z4dUlDQXViM0IwYVc5dUtGd2lMUzF0YzNCSlpITWdQRk4wY21sdVp6NWNJaXdnWENKemFXNW5iR1VnYlhOd1NXUWdiM0lnYzNSeWFXNW5hV1pwWldRZ1lYSnlZWGxjSWlsY2JpQWdMbTl3ZEdsdmJpaGNJaTB0YldGcGJrMXpjRWxrSUR4VGRISnBibWMrWENJc0lGd2ljMmx1WjJ4bElHMXpjRWxrWENJcFhHNGdJQzV2Y0hScGIyNG9YRzRnSUNBZ1hDSXRMVzkyWlhKeWFXUmxjeUJiVTNSeWFXNW5YVndpTEZ4dUlDQWdJRndpYzNSeWFXNW5hV1pwWldRZ2IzWmxjbkpwWkdVZ2IySnFaV04wSUh0eVpYRjFhWEpsWkZCbFpYSkRiM1Z1ZERvZ2JuVnRZbVZ5TENCdFlYaFFaV1Z5UTI5MWJuUTZJRzUxYldKbGNpd2dZbXh2WTJ0VWIweHBkbVU2SUc1MWJXSmxjaXdnYldWdFltVnlUMjVzZVZKbFlXUTZJRzUxYldKbGNpd2diV1Z0WW1WeVQyNXNlVmR5YVhSbE9pQnVkVzFpWlhJc0lHVnVaRzl5YzJWdFpXNTBVRzlzYVdONU9pQWdlMzE5WENKY2JpQWdLVnh1SUNBdVpHVnpZM0pwY0hScGIyNG9YRzRnSUNBZ1hDSkRjbVZoZEdWeklHRWdkR2hsSUVwVFQwNGdhVzVrWlhnZ1ptbHNaWE1nZEc4Z1ltVWdjM1ZpYldsMGRHVmtJSFJ2SUdGc2IyNW5JSGRwZEdnZ2RHaGxJR052Ym5SeVlXTjBYQ0pjYmlBZ0tWeHVJQ0F1WVdOMGFXOXVLR0Z6ZVc1aklDaHZjSFJwYjI1ek9pQmhibmtwSUQwK0lIdGNiaUFnSUNCamIyNXpkQ0J3YTJjZ1BTQktVMDlPTG5CaGNuTmxLRnh1SUNBZ0lDQWdabk11Y21WaFpFWnBiR1ZUZVc1aktIQmhkR2d1YW05cGJpaHdjbTlqWlhOekxtTjNaQ2dwTENCY0luQmhZMnRoWjJVdWFuTnZibHdpS1N3Z1hDSjFkR1l0T0Z3aUtWeHVJQ0FnSUNrN1hHNWNiaUFnSUNCamIyNXpkQ0IyWlhKemFXOXVJRDBnY0d0bkxuWmxjbk5wYjI0N1hHNWNiaUFnSUNCamIyNXpkQ0JzYjJjZ1BTQnNiMmRuWlhJdVptOXlLRndpWlhoMGNtRmpkQzFqYjJ4c1pXTjBhVzl1YzF3aUtUdGNiaUFnSUNCc2IyY3VaR1ZpZFdjb1hHNGdJQ0FnSUNCZ2NuVnVibWx1WnlCM2FYUm9JRzl3ZEdsdmJuTTZJQ1I3U2xOUFRpNXpkSEpwYm1kcFpua29iM0IwYVc5dWN5bDlJR1p2Y2lBa2UzQnJaeTV1WVcxbGZTQjJaWEp6YVc5dUlDUjdkbVZ5YzJsdmJuMWdYRzRnSUNBZ0tUdGNibHh1SUNBZ0lDOHZJR1Z6YkdsdWRDMWthWE5oWW14bExXNWxlSFF0YkdsdVpTQndjbVZtWlhJdFkyOXVjM1JjYmlBZ0lDQnNaWFFnZXlCbWFXeGxMQ0JtYjJ4a1pYSXNJRzkxZEVScGNpd2diWE53U1dSekxDQnRZV2x1VFhOd1NXUWdmU0E5SUc5d2RHbHZibk03WEc1Y2JpQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJQ0FnYlhOd1NXUnpJRDBnYlhOd1NXUnpJRDhnU2xOUFRpNXdZWEp6WlNodGMzQkpaSE1wSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUNBZ0lDQXZMeUJsYzJ4cGJuUXRaR2x6WVdKc1pTMXVaWGgwTFd4cGJtVWdRSFI1Y0dWelkzSnBjSFF0WlhOc2FXNTBMMjV2TFhWdWRYTmxaQzEyWVhKelhHNGdJQ0FnSUNCOUlHTmhkR05vSUNobE9pQjFibXR1YjNkdUtTQjdYRzRnSUNBZ0lDQWdJQzh2SUNCa2J5QnViM1JvYVc1blhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNCallYUmphQ0FvWlRvZ2RXNXJibTkzYmlrZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lGTmxjbWxoYkdsNllYUnBiMjVGY25KdmNpaGdWVzVoWW14bElIUnZJR1Y0ZEhKaFkzUWdiWE53YVdSek9pQWdKSHRsZldBcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJRzF2WkdWc2N6b2dZVzU1VzEwZ1BTQmJYVHRjYmlBZ0lDQnBaaUFvWm1sc1pTa2dlMXh1SUNBZ0lDQWdiVzlrWld4ekxuQjFjMmdvTGk0dWNtVmhaRTF2WkdWc1JtbHNaU2htYVd4bEtTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLR1p2YkdSbGNpa2dlMXh1SUNBZ0lDQWdiRzluTG1sdVptOG9ZRXh2WVdScGJtY2diVzlrWld4eklHWnliMjBnSkh0bWIyeGtaWEo5TGk0dVlDazdYRzRnSUNBZ0lDQnRiMlJsYkhNdWNIVnphQ2d1TGk0b1lYZGhhWFFnY21WaFpFMXZaR1ZzUm05c1pHVnljeWhtYjJ4a1pYSXBLU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0NGbWFXeGxJQ1ltSUNGbWIyeGtaWElwWEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnU1c1MFpYSnVZV3hGY25KdmNpaGdUWFZ6ZENCd1lYTnpJR0VnWm1sc1pTQnZjaUJoSUdadmJHUmxjbUFwTzF4dVhHNGdJQ0FnWTI5dWMzUWdhVzVxWldOMFlXSnNaVTF2WkdWc2N5QTlJRzF2WkdWc2N5NW1hV3gwWlhJb1hHNGdJQ0FnSUNBb2JXOWtaV3dwSUQwK1hHNGdJQ0FnSUNBZ0lFMXZaR1ZzTG1selUyaGhjbVZrS0cxdlpHVnNLU0I4ZkZ4dUlDQWdJQ0FnSUNCTmIyUmxiQzVwYzFCeWFYWmhkR1VvYlc5a1pXd3BJSHg4WEc0Z0lDQWdJQ0FnSUNFaFRXOWtaV3d1YldseWNtOXlaV1JCZENodGIyUmxiQ2xjYmlBZ0lDQXBPMXh1SUNBZ0lHbG1JQ2doYVc1cVpXTjBZV0pzWlUxdlpHVnNjeTVzWlc1bmRHZ3BJSHRjYmlBZ0lDQWdJR3h2Wnk1cGJtWnZLRnh1SUNBZ0lDQWdJQ0JnVG04Z2MyaGhjbVZrTENCd2NtbDJZWFJsTENCdmNpQnRhWEp5YjNKbFpDQnRiMlJsYkhNZ1ptOTFibVFnZEc4Z1pYaDBjbUZqZENCamIyeHNaV04wYVc5dWMyQmNiaUFnSUNBZ0lDazdYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWVhONWJtTWdablZ1WTNScGIyNGdaMlYwUTI5c2N5aHRjM0JKWkhOTWFYTjBQem9nYzNSeWFXNW5XMTBwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR052YkhNNklIdGNiaUFnSUNBZ0lDQWdhVzVrWlhobGN6b2dRM0psWVhSbFNXNWtaWGhTWlhGMVpYTjBXMTA3WEc0Z0lDQWdJQ0FnSUdSbGMybG5ia1J2WTNNNklFTnZkV05vUkVKRVpYTnBaMjVFYjJOYlhUdGNiaUFnSUNBZ0lDQWdiV2x5Y205eVB6b2dVSEpwZG1GMFpVTnZiR3hsWTNScGIyNDdYRzRnSUNBZ0lDQWdJR052Ykd4bFkzUnBiMjV6T2lCUWNtbDJZWFJsUTI5c2JHVmpkR2x2Ymx0ZE8xeHVJQ0FnSUNBZ2ZWdGRJRDBnWVhkaGFYUWdVSEp2YldselpTNWhiR3dvWEc0Z0lDQWdJQ0FnSUdsdWFtVmpkR0ZpYkdWTmIyUmxiSE11YldGd0tHRnplVzVqSUNoamJHRjZlaWtnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElIUmhZbXhsVG1GdFpTQTlJRTF2WkdWc0xuUmhZbXhsVG1GdFpTaGpiR0Y2ZWlrN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2JXbHljbTl5VFdWMFlTQTlJRTF2WkdWc0xtMXBjbkp2Y21Wa1FYUW9ZMnhoZW5vcE8xeHVYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMyOXNaUzVzYjJjb2RHRmliR1ZPWVcxbEtUdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQmpiMnhzWldOMGFXOXVjem9nVW1WamIzSmtQSE4wY21sdVp5d2dZVzU1UGlBOUlIdDlPMXh1SUNBZ0lDQWdJQ0FnSUdadmNpQW9ZMjl1YzNRZ2JYTndJRzltSUcxemNFbGtjMHhwYzNRZ2ZId2diWE53U1dSeklIeDhJRnRkS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjJ4c1pXTjBhVzl1YzF0dGMzQmRJRDBnWVhkaGFYUWdaWGhEYjJ4c1pXTjBhVzl1Y3loY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnWTJ4aGVub3NYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lGdHRjM0FzSUcxaGFXNU5jM0JKWkYwc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUh0OUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJQ0FnYzJoaGNtVmtRMjlzY3pvZ1QySnFaV04wTG1GemMybG5iaWg3ZlN3Z2IzWmxjbkpwWkdWekxuTm9ZWEpsWkVOdmJITXBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeUFnSUhCeWFYWmhkR1ZEYjJ4ek9pQlBZbXBsWTNRdVlYTnphV2R1S0h0OUxDQnZkbVZ5Y21sa1pYTXVjSEpwZG1GMFpVTnZiSE1wTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlCOUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBaElXMXBjbkp2Y2sxbGRHRmNiaUFnSUNBZ0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUNBZ2JHVjBJRzFwY25KdmNrTnZiR3hsWTNScGIyNDZJRkJ5YVhaaGRHVkRiMnhzWldOMGFXOXVJSHdnZFc1a1pXWnBibVZrSUQwZ2RXNWtaV1pwYm1Wa08xeHVYRzRnSUNBZ0lDQWdJQ0FnYVdZZ0tHMXBjbkp2Y2sxbGRHRXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZiR3hsWTNScGIyNXpXMjFoYVc1TmMzQkpaRjBnUFNCamIyeHNaV04wYVc5dWMxdHRZV2x1VFhOd1NXUmRJSHg4SUh0OU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnVDJKcVpXTjBMbXRsZVhNb1kyOXNiR1ZqZEdsdmJuTXBMbVp2Y2tWaFkyZ29LRzF6Y0RvZ2MzUnlhVzVuS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZiR3hsWTNScGIyNXpXMjFoYVc1TmMzQkpaRjB1Y0hKcGRtRjBaWE1nUFNCamIyeHNaV04wYVc5dWMxdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnRjM0JjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdYUzV3Y21sMllYUmxjejh1Wm1sc2RHVnlLQ2h3T2lCaGJua3BJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9jQzV1WVcxbElDRTlQU0FvYldseWNtOXlUV1YwWVM1eVpYTnZiSFpsY2lCaGN5QnpkSEpwYm1jcEtTQnlaWFIxY200Z2RISjFaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J0YVhKeWIzSkRiMnhzWldOMGFXOXVJRDBnY0NCaGN5Qmhibms3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUhCeWFYWmhkR1Z6UTI5MWJuUWdQU0JQWW1wbFkzUXVkbUZzZFdWektHTnZiR3hsWTNScGIyNXpLVnh1SUNBZ0lDQWdJQ0FnSUNBZ0xtMWhjQ2dvWXlrZ1BUNGdZeTV3Y21sMllYUmxjeWxjYmlBZ0lDQWdJQ0FnSUNBZ0lDNW1iR0YwS0NrdWJHVnVaM1JvTzF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2h3Y21sMllYUmxjME52ZFc1MEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnYkc5blhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUM1bWIzSW9UVzlrWld3dWRHRmliR1ZPWVcxbEtHTnNZWHA2S1NsY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnTG1sdVptOG9ZRVp2ZFc1a0lDUjdjSEpwZG1GMFpYTkRiM1Z1ZEgwZ2NISnBkbUYwWlNCamIyeHNaV04wYVc5dWN5QjBieUJqY21WaGRHVmdLVHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J6YUdGeVpXUkRiM1Z1ZENBOUlFOWlhbVZqZEM1MllXeDFaWE1vWTI5c2JHVmpkR2x2Ym5NcFhHNGdJQ0FnSUNBZ0lDQWdJQ0F1YldGd0tDaGpLU0E5UGlCakxuTm9ZWEpsWkNsY2JpQWdJQ0FnSUNBZ0lDQWdJQzVtYkdGMEtDa3ViR1Z1WjNSb08xeHVYRzRnSUNBZ0lDQWdJQ0FnYkc5blhHNGdJQ0FnSUNBZ0lDQWdJQ0F1Wm05eUtFMXZaR1ZzTG5SaFlteGxUbUZ0WlNoamJHRjZlaWtwWEc0Z0lDQWdJQ0FnSUNBZ0lDQXVhVzVtYnloZ1JtOTFibVFnSkh0emFHRnlaV1JEYjNWdWRIMGdjMmhoY21Wa0lHTnZiR3hsWTNScGIyNXpJSFJ2SUdOeVpXRjBaV0FwTzF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2h0YVhKeWIzSkRiMnhzWldOMGFXOXVLVnh1SUNBZ0lDQWdJQ0FnSUNBZ2JHOW5YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDNW1iM0lvVFc5a1pXd3VkR0ZpYkdWT1lXMWxLR05zWVhwNktTbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0xtbHVabThvWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWUVadmRXNWtJRzl1WlNCdGFYSnliM0lnWTI5c2JHVmpkR2x2YmlBa2UyMXBjbkp2Y2sxbGRHRS9MbkpsYzI5c2RtVnlJR0Z6SUhOMGNtbHVaMzFnWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ2s3WEc1Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCamIyeE1hWE4wSUQwZ1QySnFaV04wTG5aaGJIVmxjeWhqYjJ4c1pXTjBhVzl1Y3lsY2JpQWdJQ0FnSUNBZ0lDQWdJQzV0WVhBb0tHTXBJRDArSUZzdUxpNG9ZeTV3Y21sMllYUmxjeUI4ZkNCYlhTa3NJQzR1TGloakxuTm9ZWEpsWkNCOGZDQmJYU2xkS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdMbVpzWVhRb0tUdGNiaUFnSUNBZ0lDQWdJQ0JzWlhRZ2FXNWtaWGhsY3pvZ1EzSmxZWFJsU1c1a1pYaFNaWEYxWlhOMFcxMGdQU0JiWFR0Y2JpQWdJQ0FnSUNBZ0lDQnNaWFFnWkdWemFXZHVSRzlqY3pvZ1EyOTFZMmhFUWtSbGMybG5ia1J2WTF0ZElEMGdXMTA3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLR052YkV4cGMzUXViR1Z1WjNSb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCc2IyZGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0xtWnZjaWhOYjJSbGJDNTBZV0pzWlU1aGJXVW9ZMnhoZW5vcEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBdWRtVnlZbTl6WlNoZ1oyVnVaWEpoZEdsdVp5QnBibVJsZUdWeklHWnZjaUJqYjJ4c1pXTjBhVzl1YzJBcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVc1a1pYaGxjeUE5SUdkbGJtVnlZWFJsVFc5a1pXeEpibVJsZUdWektHTnNZWHA2S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJR3h2WjF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0F1Wm05eUtFMXZaR1ZzTG5SaFlteGxUbUZ0WlNoamJHRjZlaWtwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQzVwYm1adktHQm1iM1Z1WkNBa2UybHVaR1Y0WlhNdWJHVnVaM1JvZlNCcGJtUmxlR1Z6WUNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JrWlhOcFoyNUViMk56SUQwZ1oyVnVaWEpoZEdWTmIyUmxiRVJsYzJsbmJrUnZZM01vWTJ4aGVub3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JHOW5YRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDNW1iM0lvVFc5a1pXd3VkR0ZpYkdWT1lXMWxLR05zWVhwNktTbGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0xtbHVabThvWUdadmRXNWtJQ1I3WkdWemFXZHVSRzlqY3k1c1pXNW5kR2g5SUdSbGMybG5iaUJrYjJOellDazdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwYm1SbGVHVnpMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1pHVnphV2R1Ukc5amN5eGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJHeGxZM1JwYjI1ek9pQmpiMnhNYVhOMExGeHVJQ0FnSUNBZ0lDQWdJQ0FnYldseWNtOXlPaUJ0YVhKeWIzSkRiMnhzWldOMGFXOXVMRnh1SUNBZ0lDQWdJQ0FnSUgwN1hHNGdJQ0FnSUNBZ0lIMHBYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdjbVYwZFhKdUlHTnZiSE03WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ1kyOXNjeUE5SUdGM1lXbDBJR2RsZEVOdmJITW9LVHRjYmlBZ0lDQmpiMjV6ZENCdmJteDVUV2x5Y205eUlEMGdZWGRoYVhRZ1oyVjBRMjlzY3loYmJXRnBiazF6Y0Vsa1hTazdYRzVjYmlBZ0lDQmpiMjV6ZENCamIyeHNaV04wYVc5dWMxUnZJRDBnVzF4dUlDQWdJQ0FnTGk0dWIyNXNlVTFwY25KdmNpNW1hV3gwWlhJb0tHTXBJRDArSUdNdWJXbHljbTl5S1M1dFlYQW9LR01wSUQwK0lHTXViV2x5Y205eUtTeGNiaUFnSUNBZ0lDNHVMbU52YkhNdWJXRndLQ2hqS1NBOVBpQmpMbU52Ykd4bFkzUnBiMjV6S1M1bWJHRjBLQ2tzWEc0Z0lDQWdJQ0F1TGk1amIyeHpMbVpwYkhSbGNpZ29ZeWtnUFQ0Z1l5NXRhWEp5YjNJcExtMWhjQ2dvWXlrZ1BUNGdZeTV0YVhKeWIzSXBMRnh1SUNBZ0lGMGdZWE1nVUhKcGRtRjBaVU52Ykd4bFkzUnBiMjViWFR0Y2JseHVJQ0FnSUdOdmJuTjBJSFZ1YVhGMVpVSjVRMjlzYkdWamRHbHZiaUE5SUZ0Y2JpQWdJQ0FnSUM0dUxtNWxkeUJOWVhBb1hHNGdJQ0FnSUNBZ0lHTnZiR3hsWTNScGIyNXpWRzh1YldGd0tDaHBkR1Z0T2lCUWNtbDJZWFJsUTI5c2JHVmpkR2x2YmlrZ1BUNGdXMmwwWlcwdWJtRnRaU3dnYVhSbGJWMHBYRzRnSUNBZ0lDQXBMblpoYkhWbGN5Z3BMRnh1SUNBZ0lGMDdYRzVjYmlBZ0lDQnBaaUFvZFc1cGNYVmxRbmxEYjJ4c1pXTjBhVzl1TG14bGJtZDBhQ2tnZTF4dUlDQWdJQ0FnZDNKcGRHVkRiMnhzWldOMGFXOXVjeWgxYm1seGRXVkNlVU52Ykd4bFkzUnBiMjRzSUc5MWRFUnBjaWs3WEc0Z0lDQWdJQ0JqYjI1emRDQnRaWFJoUTI5c2JHVmpkR2x2Ym5ORGIyNW1hV2NnUFNCd1lYUm9MbXB2YVc0b1hHNGdJQ0FnSUNBZ0lHOTFkRVJwY2l4Y2JpQWdJQ0FnSUNBZ1hDSk5SVlJCTFVsT1Jsd2lMRnh1SUNBZ0lDQWdJQ0JjSW1OdmJHeGxZM1JwYjI1elgyTnZibVpwWnk1cWMyOXVYQ0pjYmlBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0JqYjI1emRDQmpiMjUwY21GamRFTnZiR3hsWTNScGIyNXpRMjl1Wm1sbklEMGdjR0YwYUM1cWIybHVLRnh1SUNBZ0lDQWdJQ0J2ZFhSRWFYSXNYRzRnSUNBZ0lDQWdJRndpWTI5c2JHVmpkR2x2Ym5OZlkyOXVabWxuTG1wemIyNWNJbHh1SUNBZ0lDQWdLVHRjYmlBZ0lDQWdJR1p6TG1OdmNIbEdhV3hsVTNsdVl5aHRaWFJoUTI5c2JHVmpkR2x2Ym5ORGIyNW1hV2NzSUdOdmJuUnlZV04wUTI5c2JHVmpkR2x2Ym5ORGIyNW1hV2NwTzF4dUlDQWdJQ0FnYkc5bkxtbHVabThvWEc0Z0lDQWdJQ0FnSUdCVGRHOXlaV1FnSkh0amIyeHNaV04wYVc5dWMxUnZMbXhsYm1kMGFIMGdZMjlzYkdWamRHbHZibk1nZEc4Z0pIdHRaWFJoUTI5c2JHVmpkR2x2Ym5ORGIyNW1hV2Q5WUZ4dUlDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUd4dlp5NXBibVp2S0Z4dUlDQWdJQ0FnSUNCZ1EyOXdhV1ZrSUdOdmJHeGxZM1JwYjI1elgyTnZibVpwWnlCMGJ5QWtlMk52Ym5SeVlXTjBRMjlzYkdWamRHbHZibk5EYjI1bWFXZDlJR0ZzYjI1bmMybGtaU0IwYUdVZ2NHRmphMkZuWlM1cWMyOXVZRnh1SUNBZ0lDQWdLVHRjYmx4dUlDQWdJQ0FnWTI5c2N5NW1iM0pGWVdOb0tDaGpLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUhzZ2FXNWtaWGhsY3l3Z1pHVnphV2R1Ukc5amN5d2dZMjlzYkdWamRHbHZibk1zSUcxcGNuSnZjaUI5SUQwZ1l6dGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2RHOUpibVJsZURvZ1VISnBkbUYwWlVOdmJHeGxZM1JwYjI1YlhTQTlJRnN1TGk1amIyeHNaV04wYVc5dWN5d2diV2x5Y205eVhTNW1hV3gwWlhJb1hHNGdJQ0FnSUNBZ0lDQWdRbTl2YkdWaGJseHVJQ0FnSUNBZ0lDQXBJR0Z6SUZCeWFYWmhkR1ZEYjJ4c1pXTjBhVzl1VzEwN1hHNGdJQ0FnSUNBZ0lIUnZTVzVrWlhndVptOXlSV0ZqYUNnb2FTa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lIZHlhWFJsU1c1a1pYaGxjeWhwYm1SbGVHVnpMQ0J2ZFhSRWFYSXNJR2t1Ym1GdFpTazdYRzRnSUNBZ0lDQWdJQ0FnZDNKcGRHVkRiMnhzWldOMGFXOXVSR1Z6YVdkdVJHOWpjeWhrWlhOcFoyNUViMk56SUh4OElGdGRMQ0J2ZFhSRWFYSXNJR2t1Ym1GdFpTazdYRzRnSUNBZ0lDQWdJQ0FnYkc5bkxtbHVabThvWEc0Z0lDQWdJQ0FnSUNBZ0lDQmdVM1J2Y21Wa0lDUjdhVzVrWlhobGN6OHViR1Z1WjNSb0lIeDhJREI5SUdsdVpHVjRaWE1nWVc1a0lDUjdaR1Z6YVdkdVJHOWpjejh1YkdWdVozUm9JSHg4SURCOUlHUmxjMmxuYmlCa2IyTnpJSFJ2SUdOdmJHeGxZM1JwYjI0Z0pIdHBMbTVoYldWOVlGeHVJQ0FnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZWeHVJQ0I5S1R0Y2JseHVZMjl1YzNRZ1pXNXpkWEpsU1c1bWNtRWdQU0J1WlhjZ1EyOXRiV0Z1WkNncFhHNGdJQzV1WVcxbEtGd2lZWGRoYVhRdGFXNW1jbUZjSWlsY2JpQWdMbVJsYzJOeWFYQjBhVzl1S0Z3aWQyRnBkSE1nWm05eUlIUm9aU0JwYm1aeVlYTjBjblZqZEhWeVpTQjBieUJpWlNCMWNDQmhibVFnY25WdWJtbHVaMXdpS1Z4dUlDQXViM0IwYVc5dUtGeHVJQ0FnSUZ3aUxTMWpiMjUwWVdsdVpYSWdQRk4wY21sdVp6NWNJaXhjYmlBZ0lDQmNJbVJ2WTJ0bGNpQmpiMjUwWVdsdVpYSWdibUZ0WlNCMGJ5QjBaWE4wSUNoMWMzVmhiR3g1SUd4aGMzUWdjR1ZsY2lsY0lpeGNiaUFnSUNCY0ltSnZiM1F0YjNKbkxXTXRjR1ZsY2kwd1hDSmNiaUFnS1Z4dUlDQXViM0IwYVc5dUtGd2lMUzEwYVcxbGIzVjBJRHhUZEhKcGJtYytYQ0lzSUZ3aWRHbHRaVzkxZENCaVpYUjNaV1Z1SUhSbGMzUnpJR2x1SUcxcGJHeHBjMlZqYjI1a2Mxd2lMQ0JjSWpVd01EQmNJaWxjYmlBZ0xtOXdkR2x2YmloY0lpMHRZWFIwWlcxd2RITWdQRk4wY21sdVp6NWNJaXdnWENKdWRXMWlaWElnYjJZZ1lYUjBaVzF3ZEhNZ1ltVm1iM0psSUdkcGRtbHVaeUIxY0Z3aUxDQmNJakV3WENJcFhHNGdJQzVoWTNScGIyNG9ZWE41Ym1NZ0tHOXdkR2x2Ym5NNklHRnVlU2tnUFQ0Z2UxeHVJQ0FnSUdOdmJuTjBJSEJyWnlBOUlFcFRUMDR1Y0dGeWMyVW9YRzRnSUNBZ0lDQm1jeTV5WldGa1JtbHNaVk41Ym1Nb2NHRjBhQzVxYjJsdUtIQnliMk5sYzNNdVkzZGtLQ2tzSUZ3aWNHRmphMkZuWlM1cWMyOXVYQ0lwTENCY0luVjBaaTA0WENJcFhHNGdJQ0FnS1R0Y2JseHVJQ0FnSUdOdmJuTjBJSFpsY25OcGIyNGdQU0J3YTJjdWRtVnljMmx2Ymp0Y2JseHVJQ0FnSUdOdmJuTjBJR3h2WnlBOUlHeHZaMmRsY2k1bWIzSW9YQ0poZDJGcGRDMXBibVp5WVZ3aUtUdGNiaUFnSUNCc2IyY3VaR1ZpZFdjb1hHNGdJQ0FnSUNCZ2NuVnVibWx1WnlCM2FYUm9JRzl3ZEdsdmJuTTZJQ1I3U2xOUFRpNXpkSEpwYm1kcFpua29iM0IwYVc5dWN5bDlJR1p2Y2lBa2UzQnJaeTV1WVcxbGZTQjJaWEp6YVc5dUlDUjdkbVZ5YzJsdmJuMWdYRzRnSUNBZ0tUdGNiaUFnSUNBdkx5QmxjMnhwYm5RdFpHbHpZV0pzWlMxdVpYaDBMV3hwYm1VZ2NISmxabVZ5TFdOdmJuTjBYRzRnSUNBZ2JHVjBJSHNnWTI5dWRHRnBibVZ5TENCMGFXMWxiM1YwTENCaGRIUmxiWEIwY3lCOUlEMGdiM0IwYVc5dWN6dGNiaUFnSUNCMGFXMWxiM1YwSUQwZ2NHRnljMlZKYm5Rb2RHbHRaVzkxZENrZ2ZId2dOVEF3TUR0Y2JpQWdJQ0JoZEhSbGJYQjBjeUE5SUhCaGNuTmxTVzUwS0dGMGRHVnRjSFJ6S1NCOGZDQXhNRHRjYmx4dUlDQWdJR0YzWVdsMElHVnVjM1Z5WlVsdVpuSmhjM1J5ZFdOMGRYSmxRbTl2ZEdWa0tGd2lZbTl2ZEMxdmNtY3RZeTF3WldWeUxUQmNJaXdnZEdsdFpXOTFkQ3dnWVhSMFpXMXdkSE1wTzF4dVhHNGdJQ0FnYkc5bkxtbHVabThvWEc0Z0lDQWdJQ0JnU1c1bWNtRnpkSEoxWTNSMWNtVWdZbTl2ZEdWa0lITjFZMk5sYzNObWRXeHNlU0FvWVdOamIzSmthVzVuSUhSdklHTnZiblJoYVc1bGNpQWtlMk52Ym5SaGFXNWxjbjBwSVdCY2JpQWdJQ0FwTzF4dUlDQjlLVHRjYmx4dVkyOXVjM1FnWkdWd2JHOTVRMjl1ZEhKaFkzUWdQU0J1WlhjZ1EyOXRiV0Z1WkNncFhHNGdJQzV1WVcxbEtGd2laR1Z3Ykc5NUxXTnZiblJ5WVdOMFhDSXBYRzRnSUM1a1pYTmpjbWx3ZEdsdmJpaGNJbVJsY0d4dmVYTWdkR2hsSUhObGJHVmpkR1ZrSUdOdmJuUnlZV04wWENJcFhHNGdJQzV2Y0hScGIyNG9YQ0l0TFc1aGJXVWdQRk4wY21sdVp6NWNJaXdnWENKRGIyNTBjbUZqZENCT1lXMWxJQ2hoYm1RZ1ptOXNaR1Z5S1Z3aUtWeHVJQ0F1YjNCMGFXOXVLRndpTFMxcGJuQjFkQ0E4VTNSeWFXNW5QbHdpTENCY0ltbHVjSFYwSUdadmJHUmxjbHdpS1Z4dUlDQXViM0IwYVc5dUtGeHVJQ0FnSUZ3aUxTMWpiMnhzWldOMGFXOXVjeTFqYjI1bWFXY2dQRk4wY21sdVp6NWNJaXhjYmlBZ0lDQmNJbkJoZEdnZ2RHOGdZMjlzYkdWamRHbHZibk5mWTI5dVptbG5MbXB6YjI0Z2RHOGdZMjl1Wm1sbmRYSmxJSEJ5YVhaaGRHVWdZMjlzYkdWamRHbHZibk5jSWx4dUlDQXBYRzRnSUM1dmNIUnBiMjRvWEc0Z0lDQWdYQ0l0TFdsdVkzSmxiV1Z1ZEZabGNuTnBiMjRnUEZOMGNtbHVaejVjSWl4Y2JpQWdJQ0JjSWloMGNuVmxJSHdnWm1Gc2MyVXBJR2xtSUhOb2IzVnNaQ0IxYzJVZ2RtVnljMmx2YmlCdmNpQnpaWEYxWlc1alpTQjBieUIxY0dSaGRHVWdZMjl1ZEhKaFkzUnpYQ0lzWEc0Z0lDQWdabUZzYzJWY2JpQWdLVnh1SUNBdWIzQjBhVzl1S0Z4dUlDQWdJRndpTFMxMGNtRmphMlZ5Um05c1pHVnlJRHhUZEhKcGJtYytYQ0lzWEc0Z0lDQWdYQ0pqYjI1MGNtRmpkQ0IyWlhKemFXOXVJSFJ5WVdOclpYSWdabTlzWkdWeUlDaHphRzkxYkdRZ1ltVWdaR1ZzWlhSbFpDQnZiaUJwYm1aeVlYTjBjblZqZEhWeVpUcGtiM2R1S1Z3aUxGeHVJQ0FnSUhCaGRHZ3VhbTlwYmlod2NtOWpaWE56TG1OM1pDZ3BMQ0JjSW5SbGMzUnpYQ0lzSUZ3aWFXNTBaV2R5WVhScGIyNWNJaXdnWENKamFHRnBibU52WkdWVWNtRmphMlZ5YzF3aUtWeHVJQ0FwWEc0Z0lDNXZjSFJwYjI0b1hHNGdJQ0FnWENJdExYQmxaWEp6SUR4VGRISnBibWMrWENJc1hHNGdJQ0FnWENKamIyMXRZU0J6WlhCaGNtRjBaV1FnY0dWbGNpQnBaSE5jSWl4Y2JpQWdJQ0JjSW05eVp5MWhMWEJsWlhJdE1DeHZjbWN0WWkxd1pXVnlMVEFzYjNKbkxXTXRjR1ZsY2kwd1hDSmNiaUFnS1Z4dUlDQXVZV04wYVc5dUtHRnplVzVqSUNodmNIUnBiMjV6T2lCaGJua3BJRDArSUh0Y2JpQWdJQ0JqYjI1emRDQndhMmNnUFNCS1UwOU9MbkJoY25ObEtGeHVJQ0FnSUNBZ1puTXVjbVZoWkVacGJHVlRlVzVqS0hCaGRHZ3VhbTlwYmlod2NtOWpaWE56TG1OM1pDZ3BMQ0JjSW5CaFkydGhaMlV1YW5OdmJsd2lLU3dnWENKMWRHWXRPRndpS1Z4dUlDQWdJQ2s3WEc1Y2JpQWdJQ0JqYjI1emRDQjJaWEp6YVc5dUlEMGdjR3RuTG5abGNuTnBiMjQ3WEc1Y2JpQWdJQ0JqYjI1emRDQnNiMmNnUFNCc2IyZG5aWEl1Wm05eUtGd2laR1Z3Ykc5NUxXTnZiblJ5WVdOMFhDSXBPMXh1SUNBZ0lHeHZaeTVrWldKMVp5aGNiaUFnSUNBZ0lHQnlkVzV1YVc1bklIZHBkR2dnYjNCMGFXOXVjem9nSkh0S1UwOU9Mbk4wY21sdVoybG1lU2h2Y0hScGIyNXpLWDBnWm05eUlDUjdjR3RuTG01aGJXVjlJSFpsY25OcGIyNGdKSHQyWlhKemFXOXVmV0JjYmlBZ0lDQXBPMXh1WEc0Z0lDQWdZMjl1YzNRZ2UxeHVJQ0FnSUNBZ2JtRnRaU3hjYmlBZ0lDQWdJR2x1Y0hWMExGeHVJQ0FnSUNBZ2NHVmxjbk1zWEc0Z0lDQWdJQ0IwY21GamEyVnlSbTlzWkdWeUxGeHVJQ0FnSUNBZ0x5OGdaWE5zYVc1MExXUnBjMkZpYkdVdGJtVjRkQzFzYVc1bElFQjBlWEJsYzJOeWFYQjBMV1Z6YkdsdWRDOXVieTExYm5WelpXUXRkbUZ5YzF4dUlDQWdJQ0FnYVc1amNtVnRaVzUwVm1WeWMybHZiaXhjYmlBZ0lDQWdJR052Ykd4bFkzUnBiMjV6UTI5dVptbG5MRnh1SUNBZ0lIMGdQU0J2Y0hScGIyNXpPMXh1SUNBZ0lHTnZibk4wSUhCbFpYSkpaSE1nUFNCd1pXVnljeTV6Y0d4cGRDaGNJaXhjSWlrN1hHNWNiaUFnSUNCamIyNXpkQ0JqYjNWdWRGQmhkR2dnUFNCd1lYUm9MbkpsYzI5c2RtVW9jR0YwYUM1cWIybHVLSFJ5WVdOclpYSkdiMnhrWlhJc0lHQWtlMjVoYldWOUxtTnZkVzUwWUNrcE8xeHVYRzRnSUNBZ2JHVjBJSE5sY1hWbGJtTmxPaUJ1ZFcxaVpYSTdYRzVjYmlBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnYzJWeGRXVnVZMlVnUFNCd1lYSnpaVWx1ZENobWN5NXlaV0ZrUm1sc1pWTjVibU1vWTI5MWJuUlFZWFJvS1M1MGIxTjBjbWx1WnloY0luVjBaaTA0WENJcEtUdGNiaUFnSUNBZ0lHbG1JQ2hwYzA1aFRpaHpaWEYxWlc1alpTa3BJSE5sY1hWbGJtTmxJRDBnTVR0Y2JpQWdJQ0FnSUdWc2MyVWdjMlZ4ZFdWdVkyVWdLejBnTVR0Y2JpQWdJQ0FnSUM4dklHVnpiR2x1ZEMxa2FYTmhZbXhsTFc1bGVIUXRiR2x1WlNCQWRIbHdaWE5qY21sd2RDMWxjMnhwYm5RdmJtOHRkVzUxYzJWa0xYWmhjbk5jYmlBZ0lDQjlJR05oZEdOb0lDaGxPaUIxYm10dWIzZHVLU0I3WEc0Z0lDQWdJQ0J6WlhGMVpXNWpaU0E5SURFN1hHNGdJQ0FnZlZ4dUlDQWdJQzh2WEc0Z0lDQWdMeThnYVdZZ0tHbHVZM0psYldWdWRGWmxjbk5wYjI0cElIdGNiaUFnSUNBdkx5QWdJSFpsY25OcGIyNGdQU0IyWlhKemFXOXVJQ3NnWUMwa2UzTmxjWFZsYm1ObGZXQTdYRzRnSUNBZ0x5OGdJQ0F2THlCelpYRjFaVzVqWlNBOUlERTdYRzRnSUNBZ0x5OGdmVnh1WEc0Z0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUdadmNpQW9ZMjl1YzNRZ2NHVmxjaUJ2WmlCd1pXVnlTV1J6S1NCN1hHNGdJQ0FnSUNBZ0lIQmhZMnRoWjJWRGIyNTBjbUZqZENod1pXVnlMQ0JwYm5CMWRDd2dibUZ0WlN3Z2RtVnljMmx2YmlrN1hHNGdJQ0FnSUNBZ0lHbHVjM1JoYkd4RGIyNTBjbUZqZENod1pXVnlMQ0J1WVcxbEtUdGNiaUFnSUNBZ0lDQWdZWEJ3Y205MlpVTnZiblJ5WVdOMEtGeHVJQ0FnSUNBZ0lDQWdJSEJsWlhJc1hHNGdJQ0FnSUNBZ0lDQWdibUZ0WlN4Y2JpQWdJQ0FnSUNBZ0lDQndaV1Z5SUQwOVBTQmNJbTl5WnkxaExYQmxaWEl0TUZ3aVhHNGdJQ0FnSUNBZ0lDQWdJQ0EvSUZ3aWRHeHpMV05oTFdObGNuUXVjR1Z0WENKY2JpQWdJQ0FnSUNBZ0lDQWdJRG9nWENKdmNtUmxjbVZ5TFhSc2N5MWpZUzFqWlhKMExuQmxiVndpTEZ4dUlDQWdJQ0FnSUNBZ0lITmxjWFZsYm1ObExGeHVJQ0FnSUNBZ0lDQWdJSFpsY25OcGIyNHNYRzRnSUNBZ0lDQWdJQ0FnWTI5c2JHVmpkR2x2Ym5ORGIyNW1hV2RjYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdaekxuZHlhWFJsUm1sc1pWTjVibU1vWTI5MWJuUlFZWFJvTENCelpYRjFaVzVqWlM1MGIxTjBjbWx1WnlncEtUdGNiaUFnSUNCOUlHTmhkR05vSUNobGNuSTZJR0Z1ZVNrZ2UxeHVJQ0FnSUNBZ2JHOW5MbVZ5Y205eUtGd2lSWEp5YjNJZ1pHVndiRzk1YVc1bklHTnZiblJ5WVdOME9sd2lMQ0JsY25JcE8xeHVJQ0FnSUgxY2JpQWdJQ0JqYjIxdGFYUkRhR0ZwYm1OdlpHVW9ibUZ0WlN3Z2MyVnhkV1Z1WTJVc0lIWmxjbk5wYjI0c0lHTnZiR3hsWTNScGIyNXpRMjl1Wm1sbktUdGNiaUFnZlNrN1hHNWNibU52Ym5OMElHZGxkRU55ZVhCMGIwMWhkR1Z5YVdGc0lEMGdibVYzSUVOdmJXMWhibVFvS1Z4dUlDQXVibUZ0WlNoY0ltZGxkQzFqY25sd2RHOHRiV0YwWlhKcFlXeGNJaWxjYmlBZ0xtUmxjMk55YVhCMGFXOXVLRndpWTI5d2FXVnpJSFJvWlNCamNubHdkRzhnYldGMFpYSnBZV3dnZEc4Z2RHaGxJSE5sYkdWamRHVmtJR1p2YkdSbGNsd2lLVnh1SUNBdWIzQjBhVzl1S0Z3aUxTMW1iMnhrWlhJZ1BGTjBjbWx1Wno1Y0lpd2dYQ0p2ZFhSd2RYUWdabTlzWkdWeVhDSXNJRndpWkc5amEyVnlMMlJ2WTJ0bGNpMWtZWFJoWENJcFhHNGdJQzV2Y0hScGIyNG9YQ0l0TFc5eVp5QmJVM1J5YVc1blhWd2lMQ0JjSW5Sb1pTQnZjbWN2Y0dWbGNpQjBieUJsZUhSeVlXTjBJR1p5YjIxY0lpd2dYQ0p2Y21jdFlWd2lLVnh1SUNBdVlXTjBhVzl1S0dGemVXNWpJQ2h2Y0hScGIyNXpPaUJoYm5rcElEMCtJSHRjYmlBZ0lDQmpiMjV6ZENCd2EyY2dQU0JLVTA5T0xuQmhjbk5sS0Z4dUlDQWdJQ0FnWm5NdWNtVmhaRVpwYkdWVGVXNWpLSEJoZEdndWFtOXBiaWh3Y205alpYTnpMbU4zWkNncExDQmNJbkJoWTJ0aFoyVXVhbk52Ymx3aUtTd2dYQ0oxZEdZdE9Gd2lLVnh1SUNBZ0lDazdYRzVjYmlBZ0lDQmpiMjV6ZENCMlpYSnphVzl1SUQwZ2NHdG5MblpsY25OcGIyNDdYRzVjYmlBZ0lDQmpiMjV6ZENCc2IyY2dQU0JzYjJkblpYSXVabTl5S0Z3aVoyVjBMV055ZVhCMGJ5MXRZWFJsY21saGJGd2lLVHRjYmlBZ0lDQnNiMmN1WkdWaWRXY29YRzRnSUNBZ0lDQmdjblZ1Ym1sdVp5QjNhWFJvSUc5d2RHbHZibk02SUNSN1NsTlBUaTV6ZEhKcGJtZHBabmtvYjNCMGFXOXVjeWw5SUdadmNpQWtlM0JyWnk1dVlXMWxmU0IyWlhKemFXOXVJQ1I3ZG1WeWMybHZibjFnWEc0Z0lDQWdLVHRjYmlBZ0lDQmpiMjV6ZENCN0lHWnZiR1JsY2l3Z2IzSm5JSDBnUFNCdmNIUnBiMjV6TzF4dUlDQWdJR1Y0WldOVGVXNWpLR0JrYjJOclpYSWdZM0FnSkh0dmNtZDlPaTkzWldGMlpYSXZZMnhwWlc1MEx5NGdKSHRtYjJ4a1pYSjlZQ3dnZTF4dUlDQWdJQ0FnWTNka09pQndjbTlqWlhOekxtTjNaQ2dwTEZ4dUlDQWdJSDBwTzF4dUlDQjlLVHRjYmx4dVkyOXVjM1FnWjJWMFEyOXdlVlJ2VUZSUUlEMGdibVYzSUVOdmJXMWhibVFvS1Z4dUlDQXVibUZ0WlNoY0luQnlaWEJoY21VdGNIUndYQ0lwWEc0Z0lDNWtaWE5qY21sd2RHbHZiaWhjSW1OdmNHbGxjeUJqYjI1MGNtRmpkQ0IwYnlCMGFHVWdjSFJ3SUdadmJHUmxjbHdpS1Z4dUlDQXViM0IwYVc5dUtGd2lMUzF2Y21sbmFXNHRabTlzWkdWeUlEeFRkSEpwYm1jK1hDSXNJRndpYjNKcFoybHVJSGR2Y210emNHRmpaU0JtYjJ4a1pYSmNJaXdnZFc1a1pXWnBibVZrS1Z4dUlDQXViM0IwYVc5dUtGeHVJQ0FnSUZ3aUxTMWtaWE4wTFdadmJHUmxjaUE4VTNSeWFXNW5QbHdpTEZ4dUlDQWdJRndpWm05c1pHVnlJSFJ2SUhSb1pTQmtaWE4wYVc1aGRHbHZiaUIzYjNKcmMzQmhZMlZjSWl4Y2JpQWdJQ0IxYm1SbFptbHVaV1JjYmlBZ0tWeHVJQ0F1WVdOMGFXOXVLR0Z6ZVc1aklDaHZjSFJwYjI1ek9pQmhibmtwSUQwK0lIdGNiaUFnSUNCcFppQW9JU2h2Y0hScGIyNXpMbTl5YVdkcGJrWnZiR1JsY2lBbUppQnZjSFJwYjI1ekxtUmxjM1JHYjJ4a1pYSXBLU0I3WEc0Z0lDQWdJQ0JzYjJkblpYSmNiaUFnSUNBZ0lDQWdMbVp2Y2loY0luQnlaWEJoY21VdGNIUndYQ0lwWEc0Z0lDQWdJQ0FnSUM1bGNuSnZjaWhjYmlBZ0lDQWdJQ0FnSUNCY0lrSnZkR2dnTFMxdmNtbG5hVzR0Wm05c1pHVnlJR0Z1WkNBdExXUmxjM1F0Wm05c1pHVnlJRzl3ZEdsdmJuTWdZWEpsSUhKbGNYVnBjbVZrSUhSdklIQnlaWEJoY21VdGNIUndYQ0pjYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQjlYRzVjYmlBZ0lDQm1kVzVqZEdsdmJpQmpiM0I1Um05c1pHVnlLSE52ZFhKalpUb2djM1J5YVc1bkxDQjBZWEpuWlhRNklITjBjbWx1WnlrZ2UxeHVJQ0FnSUNBZ0x5OGdVbVZ0YjNabElHVjRhWE4wYVc1bklIUmhjbWRsZENCbWIyeGtaWEpjYmlBZ0lDQWdJR2xtSUNobWN5NWxlR2x6ZEhOVGVXNWpLSFJoY21kbGRDa3BJSHRjYmlBZ0lDQWdJQ0FnWm5NdWNtMVRlVzVqS0hSaGNtZGxkQ3dnZTF4dUlDQWdJQ0FnSUNBZ0lISmxZM1Z5YzJsMlpUb2dkSEoxWlN4Y2JpQWdJQ0FnSUNBZ0lDQm1iM0pqWlRvZ2RISjFaU3hjYmlBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDOHZJRVZ1YzNWeVpTQndZWEpsYm5RZ1pYaHBjM1J6WEc0Z0lDQWdJQ0JtY3k1dGEyUnBjbE41Ym1Nb2NHRjBhQzVrYVhKdVlXMWxLSFJoY21kbGRDa3NJSHRjYmlBZ0lDQWdJQ0FnY21WamRYSnphWFpsT2lCMGNuVmxMRnh1SUNBZ0lDQWdmU2s3WEc1Y2JpQWdJQ0FnSUM4dklFTnZjSGtnWm05c1pHVnlYRzRnSUNBZ0lDQm1jeTVqY0ZONWJtTW9jMjkxY21ObExDQjBZWEpuWlhRc0lIdGNiaUFnSUNBZ0lDQWdjbVZqZFhKemFYWmxPaUIwY25WbExGeHVJQ0FnSUNBZ0lDQm1iM0pqWlRvZ2RISjFaU3hjYmlBZ0lDQWdJSDBwTzF4dVhHNGdJQ0FnSUNCamIyNXpiMnhsTG14dlp5aGdRMjl3YVdWa09pQWtlM052ZFhKalpYMGdYRzRnSUNBZ0lDQXRQaUFrZTNSaGNtZGxkSDFnS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYjI1emRDQnZjbWxuYVc0Z1BTQndZWFJvTG5KbGMyOXNkbVVvYjNCMGFXOXVjeTV2Y21sbmFXNUdiMnhrWlhJcE8xeHVJQ0FnSUdOdmJuTjBJR1JsYzNRZ1BTQndZWFJvTG5KbGMyOXNkbVVvYjNCMGFXOXVjeTVrWlhOMFJtOXNaR1Z5S1R0Y2JseHVJQ0FnSUdWNFpXTlRlVzVqS0dCalpDQm1iM0l0Wm1GaWNtbGpJQ1ltSUc1d2JTQnlkVzRnWW5WcGJHUmdMQ0I3WEc0Z0lDQWdJQ0JqZDJRNklHOXlhV2RwYml4Y2JpQWdJQ0FnSUhOMFpHbHZPaUJjSW1sdWFHVnlhWFJjSWl4Y2JpQWdJQ0I5S1R0Y2JpQWdJQ0JsZUdWalUzbHVZeWhnWTJRZ1ptOXlMV1poWW5KcFl5QW1KaUJ1Y0cwZ2NuVnVJR0oxYVd4a09tTnZiblJ5WVdOME9uTm9ZWEpsWkdBc0lIdGNiaUFnSUNBZ0lHTjNaRG9nYjNKcFoybHVMRnh1SUNBZ0lDQWdjM1JrYVc4NklGd2lhVzVvWlhKcGRGd2lMRnh1SUNBZ0lIMHBPMXh1WEc0Z0lDQWdZMjl1YzNRZ2MyOTFjbU5sVEdsaUlEMGdjR0YwYUM1cWIybHVLRzl5YVdkcGJpd2dYQ0ptYjNJdFptRmljbWxqWENJc0lGd2liR2xpWENJcE8xeHVJQ0FnSUdOdmJuTjBJSFJoY21kbGRFeHBZaUE5SUhCaGRHZ3VhbTlwYmloa1pYTjBMQ0JjSW1sdVpuSmhYQ0lzSUZ3aVptOXlMV1poWW5KcFkxd2lMQ0JjSW14cFlsd2lLVHRjYmx4dUlDQWdJR052Y0hsR2IyeGtaWElvYzI5MWNtTmxUR2xpTENCMFlYSm5aWFJNYVdJcE8xeHVYRzRnSUNBZ1kyOXVjM1FnYzI5MWNtTmxSMnh2WW1Gc0lEMGdjR0YwYUM1cWIybHVLRnh1SUNBZ0lDQWdiM0pwWjJsdUxGeHVJQ0FnSUNBZ1hDSm1iM0l0Wm1GaWNtbGpYQ0lzWEc0Z0lDQWdJQ0JjSW1SdlkydGxjbHdpTEZ4dUlDQWdJQ0FnWENKcGJtWnlZWE4wY25WamRIVnlaVndpTEZ4dUlDQWdJQ0FnWENKamFHRnBibU52WkdWY0lpeGNiaUFnSUNBZ0lGd2lSMnh2WW1Gc1hDSmNiaUFnSUNBcE8xeHVYRzRnSUNBZ1kyOXVjM1FnZEdGeVoyVjBRMjl1ZEhKaFkzUnpJRDBnY0dGMGFDNXFiMmx1S0dSbGMzUXNJRndpZEc5dmJHdHBkRndpTENCY0ltTnZiblJ5WVdOMGMxd2lLVHRjYmx4dUlDQWdJR1p6TG0xclpHbHlVM2x1WXloMFlYSm5aWFJEYjI1MGNtRmpkSE1zSUh0Y2JpQWdJQ0FnSUhKbFkzVnljMmwyWlRvZ2RISjFaU3hjYmlBZ0lDQjlLVHRjYmx4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnYVhSbGJTQnZaaUJtY3k1eVpXRmtaR2x5VTNsdVl5aHpiM1Z5WTJWSGJHOWlZV3dwS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0J6YjNWeVkyVkpkR1Z0SUQwZ2NHRjBhQzVxYjJsdUtITnZkWEpqWlVkc2IySmhiQ3dnYVhSbGJTazdYRzRnSUNBZ0lDQmpiMjV6ZENCMFlYSm5aWFJKZEdWdElEMGdjR0YwYUM1cWIybHVLSFJoY21kbGRFTnZiblJ5WVdOMGN5d2dhWFJsYlNrN1hHNWNiaUFnSUNBZ0lDOHZJRkpsYlc5MlpTQmxlR2x6ZEdsdVp5QjBZWEpuWlhRZ2FYUmxiU0JwWmlCdVpXVmtaV1JjYmlBZ0lDQWdJR2xtSUNobWN5NWxlR2x6ZEhOVGVXNWpLSFJoY21kbGRFbDBaVzBwS1NCN1hHNGdJQ0FnSUNBZ0lHWnpMbkp0VTNsdVl5aDBZWEpuWlhSSmRHVnRMQ0I3WEc0Z0lDQWdJQ0FnSUNBZ2NtVmpkWEp6YVhabE9pQjBjblZsTEZ4dUlDQWdJQ0FnSUNBZ0lHWnZjbU5sT2lCMGNuVmxMRnh1SUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ1puTXVZM0JUZVc1aktITnZkWEpqWlVsMFpXMHNJSFJoY21kbGRFbDBaVzBzSUh0Y2JpQWdJQ0FnSUNBZ2NtVmpkWEp6YVhabE9pQjBjblZsTEZ4dUlDQWdJQ0FnSUNCbWIzSmpaVG9nZEhKMVpTeGNiaUFnSUNBZ0lIMHBPMXh1WEc0Z0lDQWdJQ0JqYjI1emIyeGxMbXh2WnloZ1EyOXdhV1ZrT2lBa2UzTnZkWEpqWlVsMFpXMTlJRnh1SUNBZ0lDQWdMVDRnSkh0MFlYSm5aWFJKZEdWdGZXQXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHVjRaV05UZVc1aktHQmpaQ0IwYjI5c2EybDBJQ1ltSUc1d2JTQnlkVzRnWW5WcGJHUmdMQ0I3SUdOM1pEb2daR1Z6ZEN3Z2MzUmthVzg2SUZ3aWFXNW9aWEpwZEZ3aUlIMHBPMXh1SUNBZ0lHVjRaV05UZVc1aktHQmpaQ0IwYjI5c2EybDBJQ1ltSUc1d2JTQnlkVzRnWkc5amEyVnlPbUoxYVd4a0xXTnZiblJ5WVdOMGMyQXNJSHRjYmlBZ0lDQWdJR04zWkRvZ1pHVnpkQ3hjYmlBZ0lDQWdJSE4wWkdsdk9pQmNJbWx1YUdWeWFYUmNJaXhjYmlBZ0lDQjlLVHRjYmlBZ0lDQmxlR1ZqVTNsdVl5aGdZMlFnYVc1bWNtRWdKaVlnYm5CdElISjFiaUJpZFdsc1pHQXNJSHNnWTNka09pQmtaWE4wTENCemRHUnBiem9nWENKcGJtaGxjbWwwWENJZ2ZTazdYRzRnSUNBZ1pYaGxZMU41Ym1Nb1lHTmtJR2x1Wm5KaElDWW1JRzV3YlNCeWRXNGdZblZwYkdRNmFtVnpkRHBwYldGblpXQXNJSHRjYmlBZ0lDQWdJR04zWkRvZ1pHVnpkQ3hjYmlBZ0lDQWdJSE4wWkdsdk9pQmNJbWx1YUdWeWFYUmNJaXhjYmlBZ0lDQjlLVHRjYmlBZ2ZTazdYRzVjYm1OdmJuTjBJR1poWW5KcFkwTnRaQ0E5SUc1bGR5QkRiMjF0WVc1a0tDbGNiaUFnTG01aGJXVW9YQ0ptYjNJdFptRmljbWxqWENJcFhHNGdJQzVqYjIxdFlXNWtLRndpWm1GaWNtbGpYQ0lwWEc0Z0lDNWtaWE5qY21sd2RHbHZiaWhjYmlBZ0lDQmNJbVY0Y0c5elpYTWdjMlYyWlhKaGJDQmpiMjF0WVc1a2N5QjBieUJvWld4d0lHMWhibUZuWlNCMGFHVWdabUZpY21saklHbHVabkpoYzNSeWRXTjBkWEpsWENKY2JpQWdLVHRjYmx4dVptRmljbWxqUTIxa0xtRmtaRU52YlcxaGJtUW9ZMjl0Y0dsc1pVTnZiVzFoYm1RcE8xeHVabUZpY21salEyMWtMbUZrWkVOdmJXMWhibVFvWlhoMGNtRmpkRWx1WkdWNFpYTXBPMXh1Wm1GaWNtbGpRMjFrTG1Ga1pFTnZiVzFoYm1Rb1pXNXpkWEpsU1c1bWNtRXBPMXh1Wm1GaWNtbGpRMjFrTG1Ga1pFTnZiVzFoYm1Rb1pHVndiRzk1UTI5dWRISmhZM1FwTzF4dVptRmljbWxqUTIxa0xtRmtaRU52YlcxaGJtUW9aMlYwUTNKNWNIUnZUV0YwWlhKcFlXd3BPMXh1Wm1GaWNtbGpRMjFrTG1Ga1pFTnZiVzFoYm1Rb1pYaDBjbUZqZEVOdmJHeGxZM1JwYjI1ektUdGNibVpoWW5KcFkwTnRaQzVoWkdSRGIyMXRZVzVrS0dkbGRFTnZjSGxVYjFCVVVDazdYRzVjYm1WNGNHOXlkQ0JrWldaaGRXeDBJR1oxYm1OMGFXOXVJR1poWW5KcFl5Z3BJSHRjYmlBZ2NtVjBkWEp1SUdaaFluSnBZME50WkR0Y2JuMWNiaUpkZlE9PSJdfQ==