@decaf-ts/for-fabric 0.12.8 → 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.
- package/dist/for-fabric.cjs +3804 -2
- package/dist/for-fabric.js +3908 -2
- package/lib/cjs/bin/cli.cjs +2 -2
- package/lib/cjs/cli-module.cjs +111 -6
- package/lib/cjs/cli-utils.cjs +2 -2
- package/lib/cjs/client/FabricClientAdapter.cjs +2 -2
- package/lib/cjs/client/FabricClientDispatch.cjs +3 -3
- package/lib/cjs/client/FabricClientPaginator.cjs +2 -2
- package/lib/cjs/client/FabricClientRepository.cjs +2 -2
- package/lib/cjs/client/FabricClientStatement.cjs +2 -2
- package/lib/cjs/client/collections/generation.cjs +2 -2
- package/lib/cjs/client/collections/index.cjs +2 -2
- package/lib/cjs/client/constants.cjs +2 -2
- package/lib/cjs/client/crypto.cjs +2 -2
- package/lib/cjs/client/erc20/FabricERC20ClientRepository.cjs +2 -2
- package/lib/cjs/client/erc20/index.cjs +2 -2
- package/lib/cjs/client/fabric-fs.cjs +2 -2
- package/lib/cjs/client/fabric-hsm.cjs +2 -2
- package/lib/cjs/client/ids/id-extraction.cjs +2 -2
- package/lib/cjs/client/ids/index.cjs +2 -2
- package/lib/cjs/client/index.cjs +2 -2
- package/lib/cjs/client/indexes/generation.cjs +2 -2
- package/lib/cjs/client/indexes/index.cjs +2 -2
- package/lib/cjs/client/logging.cjs +2 -2
- package/lib/cjs/client/services/FabricEnrollmentService.cjs +2 -2
- package/lib/cjs/client/services/FabricIdentityService.cjs +2 -2
- package/lib/cjs/client/services/RegistrationRequestBuilder.cjs +2 -2
- package/lib/cjs/client/services/constants.cjs +2 -2
- package/lib/cjs/client/services/index.cjs +2 -2
- package/lib/cjs/client/types.cjs +2 -2
- package/lib/cjs/client/utils.cjs +2 -2
- package/lib/cjs/contract/Address.cjs +2 -2
- package/lib/cjs/contract/AddressContract.cjs +2 -2
- package/lib/cjs/contract/AuditContract.cjs +2 -2
- package/lib/cjs/contract/BatchContract.cjs +2 -2
- package/lib/cjs/contract/MarketContract.cjs +2 -2
- package/lib/cjs/contract/OtherAuditContract.cjs +2 -2
- package/lib/cjs/contract/OtherBatchContract.cjs +2 -2
- package/lib/cjs/contract/OtherLeafletContract.cjs +2 -2
- package/lib/cjs/contract/OtherLeafletFileContract.cjs +2 -2
- package/lib/cjs/contract/OtherMarketContract.cjs +2 -2
- package/lib/cjs/contract/OtherProductContract.cjs +2 -2
- package/lib/cjs/contract/OtherProductImageContract.cjs +2 -2
- package/lib/cjs/contract/OtherProductSharedContract.cjs +2 -2
- package/lib/cjs/contract/OtherProductStrengthContract.cjs +2 -2
- package/lib/cjs/contract/Product.cjs +2 -2
- package/lib/cjs/contract/ProductContract.cjs +2 -2
- package/lib/cjs/contract/ProductStrengthContract.cjs +2 -2
- package/lib/cjs/contract/SegregatedPrivateDocumentContract.cjs +2 -2
- package/lib/cjs/contract/SegregatedSharedDocumentContract.cjs +2 -2
- package/lib/cjs/contract/User.cjs +2 -2
- package/lib/cjs/contract/UserContract.cjs +2 -2
- package/lib/cjs/contract/index.cjs +2 -2
- package/lib/cjs/contract/logging-context.cjs +2 -2
- package/lib/cjs/contract/models/Audit.cjs +2 -2
- package/lib/cjs/contract/models/BaseIdentifiedModel.cjs +2 -2
- package/lib/cjs/contract/models/BaseModel.cjs +2 -2
- package/lib/cjs/contract/models/Batch.cjs +2 -2
- package/lib/cjs/contract/models/GtinOwner.cjs +2 -2
- package/lib/cjs/contract/models/History.cjs +2 -2
- package/lib/cjs/contract/models/Leaflet.cjs +2 -2
- package/lib/cjs/contract/models/LeafletFile.cjs +2 -2
- package/lib/cjs/contract/models/Market.cjs +2 -2
- package/lib/cjs/contract/models/OtherAudit.cjs +2 -2
- package/lib/cjs/contract/models/OtherBatchShared.cjs +2 -2
- package/lib/cjs/contract/models/OtherLeaflet.cjs +2 -2
- package/lib/cjs/contract/models/OtherLeafletFile.cjs +2 -2
- package/lib/cjs/contract/models/OtherMarket.cjs +2 -2
- package/lib/cjs/contract/models/OtherProduct.cjs +3 -3
- package/lib/cjs/contract/models/OtherProductImage.cjs +2 -2
- package/lib/cjs/contract/models/OtherProductShared.cjs +2 -2
- package/lib/cjs/contract/models/OtherProductStrength.cjs +2 -2
- package/lib/cjs/contract/models/Product.cjs +2 -2
- package/lib/cjs/contract/models/ProductStrength.cjs +2 -2
- package/lib/cjs/contract/models/SegregatedDocument.cjs +8 -6
- package/lib/cjs/contract/models/constants.cjs +2 -2
- package/lib/cjs/contract/models/decorators-private.cjs +2 -2
- package/lib/cjs/contract/models/decorators.cjs +2 -2
- package/lib/cjs/contract/models/gtin.cjs +2 -2
- package/lib/cjs/contract/models/history-dec.cjs +2 -2
- package/lib/cjs/contract/trackedModels/History.cjs +2 -2
- package/lib/cjs/contract/trackedModels/OtherAudit.cjs +2 -2
- package/lib/cjs/contract/trackedModels/OtherLeaflet.cjs +2 -2
- package/lib/cjs/contract/trackedModels/OtherLeafletFile.cjs +2 -2
- package/lib/cjs/contract/trackedModels/OtherMarket.cjs +2 -2
- package/lib/cjs/contract/trackedModels/OtherProduct.cjs +3 -3
- package/lib/cjs/contract/trackedModels/OtherProductImage.cjs +2 -2
- package/lib/cjs/contract/trackedModels/OtherProductShared.cjs +2 -2
- package/lib/cjs/contract/trackedModels/OtherProductStrength.cjs +2 -2
- package/lib/cjs/contracts/ContractAdapter.cjs +2 -2
- package/lib/cjs/contracts/ContractContext.cjs +2 -2
- package/lib/cjs/contracts/FabricContractDispatch.cjs +2 -2
- package/lib/cjs/contracts/FabricContractPaginator.cjs +2 -2
- package/lib/cjs/contracts/FabricContractRepository.cjs +2 -2
- package/lib/cjs/contracts/FabricContractRepositoryObservableHandler.cjs +2 -2
- package/lib/cjs/contracts/FabricContractSequence.cjs +2 -2
- package/lib/cjs/contracts/FabricContractStatement.cjs +2 -2
- package/lib/cjs/contracts/MigrationContract.cjs +2 -2
- package/lib/cjs/contracts/PrivateSequence.cjs +2 -2
- package/lib/cjs/contracts/auth/decorators.cjs +2 -2
- package/lib/cjs/contracts/auth/index.cjs +2 -2
- package/lib/cjs/contracts/bootstrap.cjs +2 -2
- package/lib/cjs/contracts/crud/crud-contract.cjs +2 -2
- package/lib/cjs/contracts/crud/index.cjs +2 -2
- package/lib/cjs/contracts/crud/serialized-crud-contract.cjs +2 -2
- package/lib/cjs/contracts/erc20/erc20contract.cjs +2 -2
- package/lib/cjs/contracts/erc20/index.cjs +2 -2
- package/lib/cjs/contracts/erc20/models.cjs +2 -2
- package/lib/cjs/contracts/fabric-overrides.cjs +2 -2
- package/lib/cjs/contracts/index.cjs +2 -2
- package/lib/cjs/contracts/logging.cjs +2 -2
- package/lib/cjs/contracts/overrides.cjs +2 -2
- package/lib/cjs/contracts/types.cjs +2 -2
- package/lib/cjs/contracts/uuid.cjs +2 -2
- package/lib/cjs/index.cjs +2 -2
- package/lib/cjs/shared/ClientSerializer.cjs +2 -2
- package/lib/cjs/shared/DeterministicSerializer.cjs +2 -2
- package/lib/cjs/shared/SimpleDeterministicSerializer.cjs +2 -2
- package/lib/cjs/shared/constants.cjs +2 -2
- package/lib/cjs/shared/decorators.cjs +2 -2
- package/lib/cjs/shared/erc20/erc20-constants.cjs +2 -2
- package/lib/cjs/shared/erc20/index.cjs +2 -2
- package/lib/cjs/shared/errors.cjs +2 -2
- package/lib/cjs/shared/events.cjs +2 -2
- package/lib/cjs/shared/fabric-types.cjs +2 -2
- package/lib/cjs/shared/index.cjs +2 -2
- package/lib/cjs/shared/interfaces/Checkable.cjs +2 -2
- package/lib/cjs/shared/interfaces/index.cjs +2 -2
- package/lib/cjs/shared/math.cjs +2 -2
- package/lib/cjs/shared/model/FabricBaseModel.cjs +2 -2
- package/lib/cjs/shared/model/FabricIdentifiedBaseModel.cjs +2 -2
- package/lib/cjs/shared/model/Identity.cjs +2 -2
- package/lib/cjs/shared/model/IdentityCredentials.cjs +2 -2
- package/lib/cjs/shared/model/index.cjs +2 -2
- package/lib/cjs/shared/overrides/Model.cjs +2 -2
- package/lib/cjs/shared/overrides/index.cjs +2 -2
- package/lib/cjs/shared/overrides/overrides.cjs +2 -2
- package/lib/cjs/shared/types.cjs +2 -2
- package/lib/cjs/version.cjs +18 -4
- package/lib/esm/bin/cli.js +1 -1
- package/lib/esm/cli-module.js +110 -5
- package/lib/esm/cli-utils.js +1 -1
- package/lib/esm/client/FabricClientAdapter.js +1 -1
- package/lib/esm/client/FabricClientDispatch.js +2 -2
- package/lib/esm/client/FabricClientPaginator.js +1 -1
- package/lib/esm/client/FabricClientRepository.js +1 -1
- package/lib/esm/client/FabricClientStatement.js +1 -1
- package/lib/esm/client/collections/generation.js +1 -1
- package/lib/esm/client/collections/index.js +1 -1
- package/lib/esm/client/constants.js +1 -1
- package/lib/esm/client/crypto.js +1 -1
- package/lib/esm/client/erc20/FabricERC20ClientRepository.js +1 -1
- package/lib/esm/client/erc20/index.js +1 -1
- package/lib/esm/client/fabric-fs.js +1 -1
- package/lib/esm/client/fabric-hsm.js +1 -1
- package/lib/esm/client/ids/id-extraction.js +1 -1
- package/lib/esm/client/ids/index.js +1 -1
- package/lib/esm/client/index.js +1 -1
- package/lib/esm/client/indexes/generation.js +1 -1
- package/lib/esm/client/indexes/index.js +1 -1
- package/lib/esm/client/logging.js +1 -1
- package/lib/esm/client/services/FabricEnrollmentService.js +1 -1
- package/lib/esm/client/services/FabricIdentityService.js +1 -1
- package/lib/esm/client/services/RegistrationRequestBuilder.js +1 -1
- package/lib/esm/client/services/constants.js +1 -1
- package/lib/esm/client/services/index.js +1 -1
- package/lib/esm/client/types.js +1 -1
- package/lib/esm/client/utils.js +1 -1
- package/lib/esm/contract/Address.js +1 -1
- package/lib/esm/contract/AddressContract.js +1 -1
- package/lib/esm/contract/AuditContract.js +1 -1
- package/lib/esm/contract/BatchContract.js +1 -1
- package/lib/esm/contract/MarketContract.js +1 -1
- package/lib/esm/contract/OtherAuditContract.js +1 -1
- package/lib/esm/contract/OtherBatchContract.js +1 -1
- package/lib/esm/contract/OtherLeafletContract.js +1 -1
- package/lib/esm/contract/OtherLeafletFileContract.js +1 -1
- package/lib/esm/contract/OtherMarketContract.js +1 -1
- package/lib/esm/contract/OtherProductContract.js +1 -1
- package/lib/esm/contract/OtherProductImageContract.js +1 -1
- package/lib/esm/contract/OtherProductSharedContract.js +1 -1
- package/lib/esm/contract/OtherProductStrengthContract.js +1 -1
- package/lib/esm/contract/Product.js +1 -1
- package/lib/esm/contract/ProductContract.js +1 -1
- package/lib/esm/contract/ProductStrengthContract.js +1 -1
- package/lib/esm/contract/SegregatedPrivateDocumentContract.js +1 -1
- package/lib/esm/contract/SegregatedSharedDocumentContract.js +1 -1
- package/lib/esm/contract/User.js +1 -1
- package/lib/esm/contract/UserContract.js +1 -1
- package/lib/esm/contract/index.js +1 -1
- package/lib/esm/contract/logging-context.js +1 -1
- package/lib/esm/contract/models/Audit.js +1 -1
- package/lib/esm/contract/models/BaseIdentifiedModel.js +1 -1
- package/lib/esm/contract/models/BaseModel.js +1 -1
- package/lib/esm/contract/models/Batch.js +1 -1
- package/lib/esm/contract/models/GtinOwner.js +1 -1
- package/lib/esm/contract/models/History.js +1 -1
- package/lib/esm/contract/models/Leaflet.js +1 -1
- package/lib/esm/contract/models/LeafletFile.js +1 -1
- package/lib/esm/contract/models/Market.js +1 -1
- package/lib/esm/contract/models/OtherAudit.js +1 -1
- package/lib/esm/contract/models/OtherBatchShared.js +1 -1
- package/lib/esm/contract/models/OtherLeaflet.js +1 -1
- package/lib/esm/contract/models/OtherLeafletFile.js +1 -1
- package/lib/esm/contract/models/OtherMarket.js +1 -1
- package/lib/esm/contract/models/OtherProduct.js +3 -3
- package/lib/esm/contract/models/OtherProductImage.js +1 -1
- package/lib/esm/contract/models/OtherProductShared.js +1 -1
- package/lib/esm/contract/models/OtherProductStrength.js +1 -1
- package/lib/esm/contract/models/Product.js +1 -1
- package/lib/esm/contract/models/ProductStrength.js +1 -1
- package/lib/esm/contract/models/SegregatedDocument.js +8 -6
- package/lib/esm/contract/models/constants.js +1 -1
- package/lib/esm/contract/models/decorators-private.js +1 -1
- package/lib/esm/contract/models/decorators.js +1 -1
- package/lib/esm/contract/models/gtin.js +1 -1
- package/lib/esm/contract/models/history-dec.js +1 -1
- package/lib/esm/contract/trackedModels/History.js +1 -1
- package/lib/esm/contract/trackedModels/OtherAudit.js +1 -1
- package/lib/esm/contract/trackedModels/OtherLeaflet.js +1 -1
- package/lib/esm/contract/trackedModels/OtherLeafletFile.js +1 -1
- package/lib/esm/contract/trackedModels/OtherMarket.js +1 -1
- package/lib/esm/contract/trackedModels/OtherProduct.js +3 -3
- package/lib/esm/contract/trackedModels/OtherProductImage.js +1 -1
- package/lib/esm/contract/trackedModels/OtherProductShared.js +1 -1
- package/lib/esm/contract/trackedModels/OtherProductStrength.js +1 -1
- package/lib/esm/contracts/ContractAdapter.js +1 -1
- package/lib/esm/contracts/ContractContext.js +1 -1
- package/lib/esm/contracts/FabricContractDispatch.js +1 -1
- package/lib/esm/contracts/FabricContractPaginator.js +1 -1
- package/lib/esm/contracts/FabricContractRepository.js +1 -1
- package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js +1 -1
- package/lib/esm/contracts/FabricContractSequence.js +1 -1
- package/lib/esm/contracts/FabricContractStatement.js +1 -1
- package/lib/esm/contracts/MigrationContract.js +1 -1
- package/lib/esm/contracts/PrivateSequence.js +1 -1
- package/lib/esm/contracts/auth/decorators.js +1 -1
- package/lib/esm/contracts/auth/index.js +1 -1
- package/lib/esm/contracts/bootstrap.js +1 -1
- package/lib/esm/contracts/crud/crud-contract.js +1 -1
- package/lib/esm/contracts/crud/index.js +1 -1
- package/lib/esm/contracts/crud/serialized-crud-contract.js +1 -1
- package/lib/esm/contracts/erc20/erc20contract.js +1 -1
- package/lib/esm/contracts/erc20/index.js +1 -1
- package/lib/esm/contracts/erc20/models.js +1 -1
- package/lib/esm/contracts/fabric-overrides.js +1 -1
- package/lib/esm/contracts/index.js +1 -1
- package/lib/esm/contracts/logging.js +1 -1
- package/lib/esm/contracts/overrides.js +1 -1
- package/lib/esm/contracts/types.js +1 -1
- package/lib/esm/contracts/uuid.js +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/shared/ClientSerializer.js +1 -1
- package/lib/esm/shared/DeterministicSerializer.js +1 -1
- package/lib/esm/shared/SimpleDeterministicSerializer.js +1 -1
- package/lib/esm/shared/constants.js +1 -1
- package/lib/esm/shared/decorators.js +1 -1
- package/lib/esm/shared/erc20/erc20-constants.js +1 -1
- package/lib/esm/shared/erc20/index.js +1 -1
- package/lib/esm/shared/errors.js +1 -1
- package/lib/esm/shared/events.js +1 -1
- package/lib/esm/shared/fabric-types.js +1 -1
- package/lib/esm/shared/index.js +1 -1
- package/lib/esm/shared/interfaces/Checkable.js +1 -1
- package/lib/esm/shared/interfaces/index.js +1 -1
- package/lib/esm/shared/math.js +1 -1
- package/lib/esm/shared/model/FabricBaseModel.js +1 -1
- package/lib/esm/shared/model/FabricIdentifiedBaseModel.js +1 -1
- package/lib/esm/shared/model/Identity.js +1 -1
- package/lib/esm/shared/model/IdentityCredentials.js +1 -1
- package/lib/esm/shared/model/index.js +1 -1
- package/lib/esm/shared/overrides/Model.js +1 -1
- package/lib/esm/shared/overrides/index.js +1 -1
- package/lib/esm/shared/overrides/overrides.js +1 -1
- package/lib/esm/shared/types.js +1 -1
- package/lib/esm/version.js +16 -2
- package/lib/types/contracts/FabricContractStatement.d.cts +2 -2
- package/lib/types/contracts/FabricContractStatement.d.mts +2 -2
- package/lib/types/version.d.cts +15 -1
- package/lib/types/version.d.mts +15 -1
- package/package.json +6 -4
- package/dist/for-fabric.cjs.map +0 -1
- package/dist/for-fabric.js.map +0 -1
- package/lib/cjs/bin/cli.cjs.map +0 -1
- package/lib/cjs/cli-module.cjs.map +0 -1
- package/lib/cjs/cli-utils.cjs.map +0 -1
- package/lib/cjs/client/FabricClientAdapter.cjs.map +0 -1
- package/lib/cjs/client/FabricClientDispatch.cjs.map +0 -1
- package/lib/cjs/client/FabricClientPaginator.cjs.map +0 -1
- package/lib/cjs/client/FabricClientRepository.cjs.map +0 -1
- package/lib/cjs/client/FabricClientStatement.cjs.map +0 -1
- package/lib/cjs/client/collections/generation.cjs.map +0 -1
- package/lib/cjs/client/collections/index.cjs.map +0 -1
- package/lib/cjs/client/constants.cjs.map +0 -1
- package/lib/cjs/client/crypto.cjs.map +0 -1
- package/lib/cjs/client/erc20/FabricERC20ClientRepository.cjs.map +0 -1
- package/lib/cjs/client/erc20/index.cjs.map +0 -1
- package/lib/cjs/client/fabric-fs.cjs.map +0 -1
- package/lib/cjs/client/fabric-hsm.cjs.map +0 -1
- package/lib/cjs/client/ids/id-extraction.cjs.map +0 -1
- package/lib/cjs/client/ids/index.cjs.map +0 -1
- package/lib/cjs/client/index.cjs.map +0 -1
- package/lib/cjs/client/indexes/generation.cjs.map +0 -1
- package/lib/cjs/client/indexes/index.cjs.map +0 -1
- package/lib/cjs/client/logging.cjs.map +0 -1
- package/lib/cjs/client/services/FabricEnrollmentService.cjs.map +0 -1
- package/lib/cjs/client/services/FabricIdentityService.cjs.map +0 -1
- package/lib/cjs/client/services/RegistrationRequestBuilder.cjs.map +0 -1
- package/lib/cjs/client/services/constants.cjs.map +0 -1
- package/lib/cjs/client/services/index.cjs.map +0 -1
- package/lib/cjs/client/types.cjs.map +0 -1
- package/lib/cjs/client/utils.cjs.map +0 -1
- package/lib/cjs/contract/Address.cjs.map +0 -1
- package/lib/cjs/contract/AddressContract.cjs.map +0 -1
- package/lib/cjs/contract/AuditContract.cjs.map +0 -1
- package/lib/cjs/contract/BatchContract.cjs.map +0 -1
- package/lib/cjs/contract/MarketContract.cjs.map +0 -1
- package/lib/cjs/contract/OtherAuditContract.cjs.map +0 -1
- package/lib/cjs/contract/OtherBatchContract.cjs.map +0 -1
- package/lib/cjs/contract/OtherLeafletContract.cjs.map +0 -1
- package/lib/cjs/contract/OtherLeafletFileContract.cjs.map +0 -1
- package/lib/cjs/contract/OtherMarketContract.cjs.map +0 -1
- package/lib/cjs/contract/OtherProductContract.cjs.map +0 -1
- package/lib/cjs/contract/OtherProductImageContract.cjs.map +0 -1
- package/lib/cjs/contract/OtherProductSharedContract.cjs.map +0 -1
- package/lib/cjs/contract/OtherProductStrengthContract.cjs.map +0 -1
- package/lib/cjs/contract/Product.cjs.map +0 -1
- package/lib/cjs/contract/ProductContract.cjs.map +0 -1
- package/lib/cjs/contract/ProductStrengthContract.cjs.map +0 -1
- package/lib/cjs/contract/SegregatedPrivateDocumentContract.cjs.map +0 -1
- package/lib/cjs/contract/SegregatedSharedDocumentContract.cjs.map +0 -1
- package/lib/cjs/contract/User.cjs.map +0 -1
- package/lib/cjs/contract/UserContract.cjs.map +0 -1
- package/lib/cjs/contract/index.cjs.map +0 -1
- package/lib/cjs/contract/logging-context.cjs.map +0 -1
- package/lib/cjs/contract/models/Audit.cjs.map +0 -1
- package/lib/cjs/contract/models/BaseIdentifiedModel.cjs.map +0 -1
- package/lib/cjs/contract/models/BaseModel.cjs.map +0 -1
- package/lib/cjs/contract/models/Batch.cjs.map +0 -1
- package/lib/cjs/contract/models/GtinOwner.cjs.map +0 -1
- package/lib/cjs/contract/models/History.cjs.map +0 -1
- package/lib/cjs/contract/models/Leaflet.cjs.map +0 -1
- package/lib/cjs/contract/models/LeafletFile.cjs.map +0 -1
- package/lib/cjs/contract/models/Market.cjs.map +0 -1
- package/lib/cjs/contract/models/OtherAudit.cjs.map +0 -1
- package/lib/cjs/contract/models/OtherBatchShared.cjs.map +0 -1
- package/lib/cjs/contract/models/OtherLeaflet.cjs.map +0 -1
- package/lib/cjs/contract/models/OtherLeafletFile.cjs.map +0 -1
- package/lib/cjs/contract/models/OtherMarket.cjs.map +0 -1
- package/lib/cjs/contract/models/OtherProduct.cjs.map +0 -1
- package/lib/cjs/contract/models/OtherProductImage.cjs.map +0 -1
- package/lib/cjs/contract/models/OtherProductShared.cjs.map +0 -1
- package/lib/cjs/contract/models/OtherProductStrength.cjs.map +0 -1
- package/lib/cjs/contract/models/Product.cjs.map +0 -1
- package/lib/cjs/contract/models/ProductStrength.cjs.map +0 -1
- package/lib/cjs/contract/models/SegregatedDocument.cjs.map +0 -1
- package/lib/cjs/contract/models/constants.cjs.map +0 -1
- package/lib/cjs/contract/models/decorators-private.cjs.map +0 -1
- package/lib/cjs/contract/models/decorators.cjs.map +0 -1
- package/lib/cjs/contract/models/gtin.cjs.map +0 -1
- package/lib/cjs/contract/models/history-dec.cjs.map +0 -1
- package/lib/cjs/contract/trackedModels/History.cjs.map +0 -1
- package/lib/cjs/contract/trackedModels/OtherAudit.cjs.map +0 -1
- package/lib/cjs/contract/trackedModels/OtherLeaflet.cjs.map +0 -1
- package/lib/cjs/contract/trackedModels/OtherLeafletFile.cjs.map +0 -1
- package/lib/cjs/contract/trackedModels/OtherMarket.cjs.map +0 -1
- package/lib/cjs/contract/trackedModels/OtherProduct.cjs.map +0 -1
- package/lib/cjs/contract/trackedModels/OtherProductImage.cjs.map +0 -1
- package/lib/cjs/contract/trackedModels/OtherProductShared.cjs.map +0 -1
- package/lib/cjs/contract/trackedModels/OtherProductStrength.cjs.map +0 -1
- package/lib/cjs/contracts/ContractAdapter.cjs.map +0 -1
- package/lib/cjs/contracts/ContractContext.cjs.map +0 -1
- package/lib/cjs/contracts/FabricContractDispatch.cjs.map +0 -1
- package/lib/cjs/contracts/FabricContractPaginator.cjs.map +0 -1
- package/lib/cjs/contracts/FabricContractRepository.cjs.map +0 -1
- package/lib/cjs/contracts/FabricContractRepositoryObservableHandler.cjs.map +0 -1
- package/lib/cjs/contracts/FabricContractSequence.cjs.map +0 -1
- package/lib/cjs/contracts/FabricContractStatement.cjs.map +0 -1
- package/lib/cjs/contracts/MigrationContract.cjs.map +0 -1
- package/lib/cjs/contracts/PrivateSequence.cjs.map +0 -1
- package/lib/cjs/contracts/auth/decorators.cjs.map +0 -1
- package/lib/cjs/contracts/auth/index.cjs.map +0 -1
- package/lib/cjs/contracts/bootstrap.cjs.map +0 -1
- package/lib/cjs/contracts/crud/crud-contract.cjs.map +0 -1
- package/lib/cjs/contracts/crud/index.cjs.map +0 -1
- package/lib/cjs/contracts/crud/serialized-crud-contract.cjs.map +0 -1
- package/lib/cjs/contracts/erc20/erc20contract.cjs.map +0 -1
- package/lib/cjs/contracts/erc20/index.cjs.map +0 -1
- package/lib/cjs/contracts/erc20/models.cjs.map +0 -1
- package/lib/cjs/contracts/fabric-overrides.cjs.map +0 -1
- package/lib/cjs/contracts/index.cjs.map +0 -1
- package/lib/cjs/contracts/logging.cjs.map +0 -1
- package/lib/cjs/contracts/overrides.cjs.map +0 -1
- package/lib/cjs/contracts/types.cjs.map +0 -1
- package/lib/cjs/contracts/uuid.cjs.map +0 -1
- package/lib/cjs/index.cjs.map +0 -1
- package/lib/cjs/shared/ClientSerializer.cjs.map +0 -1
- package/lib/cjs/shared/DeterministicSerializer.cjs.map +0 -1
- package/lib/cjs/shared/SimpleDeterministicSerializer.cjs.map +0 -1
- package/lib/cjs/shared/constants.cjs.map +0 -1
- package/lib/cjs/shared/decorators.cjs.map +0 -1
- package/lib/cjs/shared/erc20/erc20-constants.cjs.map +0 -1
- package/lib/cjs/shared/erc20/index.cjs.map +0 -1
- package/lib/cjs/shared/errors.cjs.map +0 -1
- package/lib/cjs/shared/events.cjs.map +0 -1
- package/lib/cjs/shared/fabric-types.cjs.map +0 -1
- package/lib/cjs/shared/index.cjs.map +0 -1
- package/lib/cjs/shared/interfaces/Checkable.cjs.map +0 -1
- package/lib/cjs/shared/interfaces/index.cjs.map +0 -1
- package/lib/cjs/shared/math.cjs.map +0 -1
- package/lib/cjs/shared/model/FabricBaseModel.cjs.map +0 -1
- package/lib/cjs/shared/model/FabricIdentifiedBaseModel.cjs.map +0 -1
- package/lib/cjs/shared/model/Identity.cjs.map +0 -1
- package/lib/cjs/shared/model/IdentityCredentials.cjs.map +0 -1
- package/lib/cjs/shared/model/index.cjs.map +0 -1
- package/lib/cjs/shared/overrides/Model.cjs.map +0 -1
- package/lib/cjs/shared/overrides/index.cjs.map +0 -1
- package/lib/cjs/shared/overrides/overrides.cjs.map +0 -1
- package/lib/cjs/shared/types.cjs.map +0 -1
- package/lib/cjs/version.cjs.map +0 -1
- package/lib/esm/bin/cli.js.map +0 -1
- package/lib/esm/cli-module.js.map +0 -1
- package/lib/esm/cli-utils.js.map +0 -1
- package/lib/esm/client/FabricClientAdapter.js.map +0 -1
- package/lib/esm/client/FabricClientDispatch.js.map +0 -1
- package/lib/esm/client/FabricClientPaginator.js.map +0 -1
- package/lib/esm/client/FabricClientRepository.js.map +0 -1
- package/lib/esm/client/FabricClientStatement.js.map +0 -1
- package/lib/esm/client/collections/generation.js.map +0 -1
- package/lib/esm/client/collections/index.js.map +0 -1
- package/lib/esm/client/constants.js.map +0 -1
- package/lib/esm/client/crypto.js.map +0 -1
- package/lib/esm/client/erc20/FabricERC20ClientRepository.js.map +0 -1
- package/lib/esm/client/erc20/index.js.map +0 -1
- package/lib/esm/client/fabric-fs.js.map +0 -1
- package/lib/esm/client/fabric-hsm.js.map +0 -1
- package/lib/esm/client/ids/id-extraction.js.map +0 -1
- package/lib/esm/client/ids/index.js.map +0 -1
- package/lib/esm/client/index.js.map +0 -1
- package/lib/esm/client/indexes/generation.js.map +0 -1
- package/lib/esm/client/indexes/index.js.map +0 -1
- package/lib/esm/client/logging.js.map +0 -1
- package/lib/esm/client/services/FabricEnrollmentService.js.map +0 -1
- package/lib/esm/client/services/FabricIdentityService.js.map +0 -1
- package/lib/esm/client/services/RegistrationRequestBuilder.js.map +0 -1
- package/lib/esm/client/services/constants.js.map +0 -1
- package/lib/esm/client/services/index.js.map +0 -1
- package/lib/esm/client/types.js.map +0 -1
- package/lib/esm/client/utils.js.map +0 -1
- package/lib/esm/contract/Address.js.map +0 -1
- package/lib/esm/contract/AddressContract.js.map +0 -1
- package/lib/esm/contract/AuditContract.js.map +0 -1
- package/lib/esm/contract/BatchContract.js.map +0 -1
- package/lib/esm/contract/MarketContract.js.map +0 -1
- package/lib/esm/contract/OtherAuditContract.js.map +0 -1
- package/lib/esm/contract/OtherBatchContract.js.map +0 -1
- package/lib/esm/contract/OtherLeafletContract.js.map +0 -1
- package/lib/esm/contract/OtherLeafletFileContract.js.map +0 -1
- package/lib/esm/contract/OtherMarketContract.js.map +0 -1
- package/lib/esm/contract/OtherProductContract.js.map +0 -1
- package/lib/esm/contract/OtherProductImageContract.js.map +0 -1
- package/lib/esm/contract/OtherProductSharedContract.js.map +0 -1
- package/lib/esm/contract/OtherProductStrengthContract.js.map +0 -1
- package/lib/esm/contract/Product.js.map +0 -1
- package/lib/esm/contract/ProductContract.js.map +0 -1
- package/lib/esm/contract/ProductStrengthContract.js.map +0 -1
- package/lib/esm/contract/SegregatedPrivateDocumentContract.js.map +0 -1
- package/lib/esm/contract/SegregatedSharedDocumentContract.js.map +0 -1
- package/lib/esm/contract/User.js.map +0 -1
- package/lib/esm/contract/UserContract.js.map +0 -1
- package/lib/esm/contract/index.js.map +0 -1
- package/lib/esm/contract/logging-context.js.map +0 -1
- package/lib/esm/contract/models/Audit.js.map +0 -1
- package/lib/esm/contract/models/BaseIdentifiedModel.js.map +0 -1
- package/lib/esm/contract/models/BaseModel.js.map +0 -1
- package/lib/esm/contract/models/Batch.js.map +0 -1
- package/lib/esm/contract/models/GtinOwner.js.map +0 -1
- package/lib/esm/contract/models/History.js.map +0 -1
- package/lib/esm/contract/models/Leaflet.js.map +0 -1
- package/lib/esm/contract/models/LeafletFile.js.map +0 -1
- package/lib/esm/contract/models/Market.js.map +0 -1
- package/lib/esm/contract/models/OtherAudit.js.map +0 -1
- package/lib/esm/contract/models/OtherBatchShared.js.map +0 -1
- package/lib/esm/contract/models/OtherLeaflet.js.map +0 -1
- package/lib/esm/contract/models/OtherLeafletFile.js.map +0 -1
- package/lib/esm/contract/models/OtherMarket.js.map +0 -1
- package/lib/esm/contract/models/OtherProduct.js.map +0 -1
- package/lib/esm/contract/models/OtherProductImage.js.map +0 -1
- package/lib/esm/contract/models/OtherProductShared.js.map +0 -1
- package/lib/esm/contract/models/OtherProductStrength.js.map +0 -1
- package/lib/esm/contract/models/Product.js.map +0 -1
- package/lib/esm/contract/models/ProductStrength.js.map +0 -1
- package/lib/esm/contract/models/SegregatedDocument.js.map +0 -1
- package/lib/esm/contract/models/constants.js.map +0 -1
- package/lib/esm/contract/models/decorators-private.js.map +0 -1
- package/lib/esm/contract/models/decorators.js.map +0 -1
- package/lib/esm/contract/models/gtin.js.map +0 -1
- package/lib/esm/contract/models/history-dec.js.map +0 -1
- package/lib/esm/contract/trackedModels/History.js.map +0 -1
- package/lib/esm/contract/trackedModels/OtherAudit.js.map +0 -1
- package/lib/esm/contract/trackedModels/OtherLeaflet.js.map +0 -1
- package/lib/esm/contract/trackedModels/OtherLeafletFile.js.map +0 -1
- package/lib/esm/contract/trackedModels/OtherMarket.js.map +0 -1
- package/lib/esm/contract/trackedModels/OtherProduct.js.map +0 -1
- package/lib/esm/contract/trackedModels/OtherProductImage.js.map +0 -1
- package/lib/esm/contract/trackedModels/OtherProductShared.js.map +0 -1
- package/lib/esm/contract/trackedModels/OtherProductStrength.js.map +0 -1
- package/lib/esm/contracts/ContractAdapter.js.map +0 -1
- package/lib/esm/contracts/ContractContext.js.map +0 -1
- package/lib/esm/contracts/FabricContractDispatch.js.map +0 -1
- package/lib/esm/contracts/FabricContractPaginator.js.map +0 -1
- package/lib/esm/contracts/FabricContractRepository.js.map +0 -1
- package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js.map +0 -1
- package/lib/esm/contracts/FabricContractSequence.js.map +0 -1
- package/lib/esm/contracts/FabricContractStatement.js.map +0 -1
- package/lib/esm/contracts/MigrationContract.js.map +0 -1
- package/lib/esm/contracts/PrivateSequence.js.map +0 -1
- package/lib/esm/contracts/auth/decorators.js.map +0 -1
- package/lib/esm/contracts/auth/index.js.map +0 -1
- package/lib/esm/contracts/bootstrap.js.map +0 -1
- package/lib/esm/contracts/crud/crud-contract.js.map +0 -1
- package/lib/esm/contracts/crud/index.js.map +0 -1
- package/lib/esm/contracts/crud/serialized-crud-contract.js.map +0 -1
- package/lib/esm/contracts/erc20/erc20contract.js.map +0 -1
- package/lib/esm/contracts/erc20/index.js.map +0 -1
- package/lib/esm/contracts/erc20/models.js.map +0 -1
- package/lib/esm/contracts/fabric-overrides.js.map +0 -1
- package/lib/esm/contracts/index.js.map +0 -1
- package/lib/esm/contracts/logging.js.map +0 -1
- package/lib/esm/contracts/overrides.js.map +0 -1
- package/lib/esm/contracts/types.js.map +0 -1
- package/lib/esm/contracts/uuid.js.map +0 -1
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/shared/ClientSerializer.js.map +0 -1
- package/lib/esm/shared/DeterministicSerializer.js.map +0 -1
- package/lib/esm/shared/SimpleDeterministicSerializer.js.map +0 -1
- package/lib/esm/shared/constants.js.map +0 -1
- package/lib/esm/shared/decorators.js.map +0 -1
- package/lib/esm/shared/erc20/erc20-constants.js.map +0 -1
- package/lib/esm/shared/erc20/index.js.map +0 -1
- package/lib/esm/shared/errors.js.map +0 -1
- package/lib/esm/shared/events.js.map +0 -1
- package/lib/esm/shared/fabric-types.js.map +0 -1
- package/lib/esm/shared/index.js.map +0 -1
- package/lib/esm/shared/interfaces/Checkable.js.map +0 -1
- package/lib/esm/shared/interfaces/index.js.map +0 -1
- package/lib/esm/shared/math.js.map +0 -1
- package/lib/esm/shared/model/FabricBaseModel.js.map +0 -1
- package/lib/esm/shared/model/FabricIdentifiedBaseModel.js.map +0 -1
- package/lib/esm/shared/model/Identity.js.map +0 -1
- package/lib/esm/shared/model/IdentityCredentials.js.map +0 -1
- package/lib/esm/shared/model/index.js.map +0 -1
- package/lib/esm/shared/overrides/Model.js.map +0 -1
- package/lib/esm/shared/overrides/index.js.map +0 -1
- package/lib/esm/shared/overrides/overrides.js.map +0 -1
- package/lib/esm/shared/types.js.map +0 -1
- package/lib/esm/version.js.map +0 -1
|
@@ -277,7 +277,7 @@ class FabricClientDispatch extends core_1.Dispatch {
|
|
|
277
277
|
if (ctx.getOrUndefined("observeFullResult")) {
|
|
278
278
|
resultArgs.push(result);
|
|
279
279
|
}
|
|
280
|
-
this.updateObservers(...resultArgs, ...ctxArgs).catch((e) => log.error(`Failed to dispatch observer refresh for ${toWrap} on ${clazz.name || clazz} for ${ids}: ${e}`));
|
|
280
|
+
this.updateObservers(resultArgs[0], resultArgs[1], resultArgs[2], ...resultArgs.slice(3), ...ctxArgs).catch((e) => log.error(`Failed to dispatch observer refresh for ${toWrap} on ${clazz.name || clazz} for ${ids}: ${e}`));
|
|
281
281
|
return result;
|
|
282
282
|
},
|
|
283
283
|
});
|
|
@@ -287,5 +287,5 @@ class FabricClientDispatch extends core_1.Dispatch {
|
|
|
287
287
|
exports.FabricClientDispatch = FabricClientDispatch;
|
|
288
288
|
if (FabricClientAdapter_js_1.FabricClientAdapter)
|
|
289
289
|
FabricClientAdapter_js_1.FabricClientAdapter["_baseDispatch"] = FabricClientDispatch;
|
|
290
|
-
//# sourceMappingURL=FabricClientDispatch.js.map
|
|
291
|
-
//# sourceMappingURL=FabricClientDispatch.js.map
|
|
290
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljQ2xpZW50RGlzcGF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpZW50L0ZhYnJpY0NsaWVudERpc3BhdGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxPQUFPLEVBRVAsUUFBUSxFQUVSLGdCQUFnQixFQUdoQixlQUFlLEdBQ2hCLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlDQUE4QjtBQUM1RCxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGFBQWEsRUFDYixhQUFhLEdBQ2QsTUFBTSx5QkFBeUIsQ0FBQztBQUtqQyxPQUFPLEVBQUUsY0FBYyxFQUFFLDhCQUF5QjtBQUNsRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFJdkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0NHO0FBQ0gsTUFBTSxPQUFPLG9CQUFxQixTQUFRLFFBQTZCO0lBV3JFOzs7O09BSUc7SUFDSCxZQUFzQixNQUFjO1FBQ2xDLEtBQUssRUFBRSxDQUFDO1FBRFksV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVZwQzs7V0FFRztRQUNLLFlBQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQVMxQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNNLEtBQUssQ0FBQyxLQUFLLENBQ2xCLEdBQUcsT0FBbUQ7UUFFdEQsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FDbkMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUMzRCxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcs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QUFVLENBQUMsQ0FBQyxDQUFDLEVBQ2IsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUN0QixHQUFJLE9BQXNELENBQzNELENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FDckIsR0FBRyxDQUFDLEtBQUssQ0FDUCwyQ0FBMkMsTUFBTSxPQUFPLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxRQUFRLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FDL0YsQ0FDRixDQUFDO29CQUNGLE9BQU8sTUFBTSxDQUFDO2dCQUNoQixDQUFDO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFRCxJQUFJLG1CQUFtQjtJQUNyQixtQkFBbUIsQ0FBQyxlQUFlLENBQUMsR0FBRyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFkYXB0ZXIsXG4gIENvbnRleHR1YWxBcmdzLFxuICBEaXNwYXRjaCxcbiAgRXZlbnRJZHMsXG4gIFVuc3VwcG9ydGVkRXJyb3IsXG4gIENvbnRleHQsXG4gIE1heWJlQ29udGV4dHVhbEFyZyxcbiAgUGVyc2lzdGVuY2VLZXlzLFxufSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IFBlZXJDb25maWcgfSBmcm9tIFwiLi4vc2hhcmVkL3R5cGVzXCI7XG5pbXBvcnQgeyBDbGllbnQgfSBmcm9tIFwiQGdycGMvZ3JwYy1qc1wiO1xuaW1wb3J0IHsgRmFicmljQ2xpZW50QWRhcHRlciB9IGZyb20gXCIuL0ZhYnJpY0NsaWVudEFkYXB0ZXJcIjtcbmltcG9ydCB7XG4gIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cyxcbiAgSW50ZXJuYWxFcnJvcixcbiAgT3BlcmF0aW9uS2V5cyxcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQge1xuICBDaGFpbmNvZGVFdmVudCxcbiAgQ2xvc2VhYmxlQXN5bmNJdGVyYWJsZSxcbn0gZnJvbSBcIkBoeXBlcmxlZGdlci9mYWJyaWMtZ2F0ZXdheVwiO1xuaW1wb3J0IHsgcGFyc2VFdmVudE5hbWUgfSBmcm9tIFwiLi4vc2hhcmVkL2V2ZW50c1wiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHsgRmFicmljQ2xpZW50RmxhZ3MgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBFdmVudCBkaXNwYXRjaGVyIGZvciBIeXBlcmxlZGdlciBGYWJyaWMgY2hhaW5jb2RlIGV2ZW50c1xuICogQHN1bW1hcnkgTGlzdGVucyBmb3IgYW5kIHByb2Nlc3NlcyBldmVudHMgZW1pdHRlZCBieSBGYWJyaWMgY2hhaW5jb2RlLCBkaXNwYXRjaGluZyB0aGVtIHRvIHJlZ2lzdGVyZWQgb2JzZXJ2ZXJzXG4gKiBAdGVtcGxhdGUgUGVlckNvbmZpZyAtIENvbmZpZ3VyYXRpb24gdHlwZSBmb3IgY29ubmVjdGluZyB0byBhIEZhYnJpYyBwZWVyXG4gKiBAcGFyYW0gY2xpZW50IC0gZ1JQQyBjbGllbnQgZm9yIGNvbm5lY3RpbmcgdG8gdGhlIEZhYnJpYyBuZXR3b3JrXG4gKiBAY2xhc3MgRmFicmljQ2xpZW50RGlzcGF0Y2hcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBDcmVhdGUgYSBuZXcgRmFicmljRGlzcGF0Y2ggaW5zdGFuY2VcbiAqIGNvbnN0IGNsaWVudCA9IGF3YWl0IEZhYnJpY0FkYXB0ZXIuZ2V0Q2xpZW50KHBlZXJDb25maWcpO1xuICogY29uc3QgZGlzcGF0Y2ggPSBuZXcgRmFicmljRGlzcGF0Y2goY2xpZW50KTtcbiAqXG4gKiAvLyBDb25maWd1cmUgdGhlIGRpc3BhdGNoIHdpdGggcGVlciBjb25maWd1cmF0aW9uXG4gKiBkaXNwYXRjaC5jb25maWd1cmUocGVlckNvbmZpZyk7XG4gKlxuICogLy8gUmVnaXN0ZXIgYW4gb2JzZXJ2ZXIgZm9yIGEgc3BlY2lmaWMgdGFibGUgYW5kIGV2ZW50XG4gKiBkaXNwYXRjaC5vYnNlcnZlKCd1c2VycycsICdjcmVhdGUnLCAoaWQpID0+IHtcbiAqICAgY29uc29sZS5sb2coYFVzZXIgY3JlYXRlZDogJHtpZH1gKTtcbiAqIH0pO1xuICpcbiAqIC8vIFN0YXJ0IGxpc3RlbmluZyBmb3IgZXZlbnRzXG4gKiBhd2FpdCBkaXNwYXRjaC5zdGFydCgpO1xuICogYGBgXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IENsaWVudFxuICogICBwYXJ0aWNpcGFudCBGYWJyaWNEaXNwYXRjaFxuICogICBwYXJ0aWNpcGFudCBHYXRld2F5XG4gKiAgIHBhcnRpY2lwYW50IE5ldHdvcmtcbiAqICAgcGFydGljaXBhbnQgQ2hhaW5jb2RlXG4gKlxuICogICBDbGllbnQtPj5GYWJyaWNEaXNwYXRjaDogbmV3IEZhYnJpY0Rpc3BhdGNoKGNsaWVudClcbiAqICAgQ2xpZW50LT4+RmFicmljRGlzcGF0Y2g6IGNvbmZpZ3VyZShwZWVyQ29uZmlnKVxuICogICBDbGllbnQtPj5GYWJyaWNEaXNwYXRjaDogb2JzZXJ2ZSh0YWJsZSwgZXZlbnQsIGNhbGxiYWNrKVxuICogICBDbGllbnQtPj5GYWJyaWNEaXNwYXRjaDogc3RhcnQoKVxuICogICBGYWJyaWNEaXNwYXRjaC0+PkZhYnJpY0Rpc3BhdGNoOiBpbml0aWFsaXplKClcbiAqICAgRmFicmljRGlzcGF0Y2gtPj5HYXRld2F5OiBnZXRHYXRld2F5KGNvbmZpZywgY2xpZW50KVxuICogICBHYXRld2F5LT4+TmV0d29yazogZ2V0TmV0d29yayhjaGFubmVsKVxuICogICBOZXR3b3JrLT4+TmV0d29yazogZ2V0Q2hhaW5jb2RlRXZlbnRzKGNoYWluY29kZU5hbWUpXG4gKiAgIEZhYnJpY0Rpc3BhdGNoLT4+RmFicmljRGlzcGF0Y2g6IGhhbmRsZUV2ZW50cygpXG4gKiAgIGxvb3AgRm9yIGVhY2ggZXZlbnRcbiAqICAgICBDaGFpbmNvZGUtLT4+RmFicmljRGlzcGF0Y2g6IENoYWluY29kZUV2ZW50XG4gKiAgICAgRmFicmljRGlzcGF0Y2gtPj5GYWJyaWNEaXNwYXRjaDogcGFyc2VFdmVudE5hbWUoZXZlbnROYW1lKVxuICogICAgIEZhYnJpY0Rpc3BhdGNoLT4+RmFicmljRGlzcGF0Y2g6IHBhcnNlUGF5bG9hZChwYXlsb2FkKVxuICogICAgIEZhYnJpY0Rpc3BhdGNoLT4+RmFicmljRGlzcGF0Y2g6IHVwZGF0ZU9ic2VydmVycyh0YWJsZSwgZXZlbnQsIGlkKVxuICogICAgIEZhYnJpY0Rpc3BhdGNoLS0+PkNsaWVudDogY2FsbGJhY2soaWQpXG4gKiAgIGVuZFxuICovXG5leHBvcnQgY2xhc3MgRmFicmljQ2xpZW50RGlzcGF0Y2ggZXh0ZW5kcyBEaXNwYXRjaDxGYWJyaWNDbGllbnRBZGFwdGVyPiB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRXZlbnQgbGlzdGVuaW5nIHN0YWNrIGZvciBjaGFpbmNvZGUgZXZlbnRzXG4gICAqL1xuICBwcml2YXRlIGxpc3RlbmluZ1N0YWNrPzogQ2xvc2VhYmxlQXN5bmNJdGVyYWJsZTxDaGFpbmNvZGVFdmVudD47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUZXh0IGRlY29kZXIgZm9yIGNvbnZlcnRpbmcgZXZlbnQgcGF5bG9hZHMgZnJvbSBieXRlcyB0byBzdHJpbmdzXG4gICAqL1xuICBwcml2YXRlIGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoXCJ1dGY4XCIpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG5ldyBGYWJyaWNEaXNwYXRjaCBpbnN0YW5jZVxuICAgKiBAc3VtbWFyeSBJbml0aWFsaXplcyBhIGRpc3BhdGNoZXIgZm9yIEZhYnJpYyBjaGFpbmNvZGUgZXZlbnRzXG4gICAqIEBwYXJhbSB7Q2xpZW50fSBjbGllbnQgLSBnUlBDIGNsaWVudCBmb3IgY29ubmVjdGluZyB0byB0aGUgRmFicmljIG5ldHdvcmtcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBjbGllbnQ6IENsaWVudCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENsb3NlcyB0aGUgZXZlbnQgbGlzdGVuaW5nIGNvbm5lY3Rpb25cbiAgICogQHN1bW1hcnkgU3RvcHMgbGlzdGVuaW5nIGZvciBjaGFpbmNvZGUgZXZlbnRzIGFuZCByZWxlYXNlcyByZXNvdXJjZXNcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNvbm5lY3Rpb24gaXMgY2xvc2VkXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyBjbG9zZShcbiAgICAuLi5jdHhBcmdzOiBDb250ZXh0dWFsQXJnczxDb250ZXh0PEZhYnJpY0NsaWVudEZsYWdzPj5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBsb2csIGN0eEFyZ3M6IGxvZ2dlZEFyZ3MgfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KGN0eEFyZ3MsIFBlcnNpc3RlbmNlS2V5cy5TSFVURE9XTiwgdHJ1ZSlcbiAgICApLmZvcih0aGlzLmNsb3NlKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgc3VwZXIuY2xvc2UoLi4ubG9nZ2VkQXJncyk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgbG9nLmVycm9yKGBGYWlsZWQgdG8gY2xvc2UgRmFicmljIHByb3hpZXMgZXZlbnQgbGlzdGVuZXJgLCBlIGFzIEVycm9yKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubGlzdGVuaW5nU3RhY2spIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMubGlzdGVuaW5nU3RhY2suY2xvc2UoKTtcbiAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgbG9nLmVycm9yKGBGYWlsZWQgdG8gY2xvc2UgRmFicmljIGV2ZW50IGxpc3RlbmVyYCwgZSBhcyBFcnJvcik7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLmxpc3RlbmluZ1N0YWNrID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGFyc2VzIGV2ZW50IHBheWxvYWQgZnJvbSBiaW5hcnkgZm9ybWF0XG4gICAqIEBzdW1tYXJ5IENvbnZlcnRzIGEgVWludDhBcnJheSBjb250YWluaW5nIEpTT04gdG8gYW4gb2JqZWN0IHdpdGggYW4gaWQgcHJvcGVydHlcbiAgICogQHBhcmFtIHtVaW50OEFycmF5fSBqc29uQnl0ZXMgLSBUaGUgYmluYXJ5IHBheWxvYWQgZnJvbSB0aGUgY2hhaW5jb2RlIGV2ZW50XG4gICAqIEByZXR1cm4ge3sgaWQ6IHN0cmluZyB9fSBUaGUgcGFyc2VkIHBheWxvYWQgY29udGFpbmluZyB0aGUgcmVjb3JkIElEXG4gICAqL1xuICBwcml2YXRlIHBhcnNlUGF5bG9hZChqc29uQnl0ZXM6IFVpbnQ4QXJyYXkpOiB7IGlkOiBzdHJpbmc7IHJlc3VsdD86IGFueSB9IHtcbiAgICBjb25zdCBqc29uID0gdGhpcy5kZWNvZGVyLmRlY29kZShqc29uQnl0ZXMpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGpzb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTdGFydHMgb2JzZXJ2aW5nIGFuIGFkYXB0ZXJcbiAgICogQHN1bW1hcnkgQ29ubmVjdHMgdGhpcyBkaXNwYXRjaCB0byBhbiBhZGFwdGVyIHRvIG1vbml0b3IgaXRzIG9wZXJhdGlvbnNcbiAgICogQHBhcmFtIHtBZGFwdGVyPGFueSwgYW55LCBhbnksIGFueT59IG9ic2VydmVyIC0gVGhlIGFkYXB0ZXIgdG8gb2JzZXJ2ZVxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgb3ZlcnJpZGUgb2JzZXJ2ZShvYnNlcnZlcjogQWRhcHRlcjxhbnksIGFueSwgYW55LCBhbnk+KTogKCkgPT4gdm9pZCB7XG4gICAgaWYgKCEob2JzZXJ2ZXIgaW5zdGFuY2VvZiBGYWJyaWNDbGllbnRBZGFwdGVyKSlcbiAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEVycm9yKFxuICAgICAgICBcIk9ubHkgRmFicmljQ2xpZW50QWRhcHRlciBjYW4gYmUgb2JzZXJ2ZWQgYnkgZGlzcGF0Y2hcIlxuICAgICAgKTtcbiAgICBzdXBlci5vYnNlcnZlKG9ic2VydmVyIGFzIEZhYnJpY0NsaWVudEFkYXB0ZXIpO1xuICAgIHJldHVybiAoKSA9PiB0aGlzLnVuT2JzZXJ2ZShvYnNlcnZlcik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZXMgb2JzZXJ2ZXJzIGFib3V0IGEgZGF0YWJhc2UgZXZlbnRcbiAgICogQHN1bW1hcnkgTm90aWZpZXMgb2JzZXJ2ZXJzIGFib3V0IGEgY2hhbmdlIGluIHRoZSBkYXRhYmFzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGUgLSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgd2hlcmUgdGhlIGNoYW5nZSBvY2N1cnJlZFxuICAgKiBAcGFyYW0ge09wZXJhdGlvbktleXN8QnVsa0NydWRPcGVyYXRpb25LZXlzfHN0cmluZ30gZXZlbnQgLSBUaGUgdHlwZSBvZiBvcGVyYXRpb24gdGhhdCBvY2N1cnJlZFxuICAgKiBAcGFyYW0ge2FueX0gcGF5bG9hZCAtIFRoZSBldmVudCBwYXlsb2FkXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gYWxsIG9ic2VydmVycyBoYXZlIGJlZW4gbm90aWZpZWRcbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIHVwZGF0ZU9ic2VydmVycyhcbiAgICBtb2RlbDogQ29uc3RydWN0b3I8YW55PiB8IHN0cmluZyxcbiAgICBldmVudDogT3BlcmF0aW9uS2V5cyB8IEJ1bGtDcnVkT3BlcmF0aW9uS2V5cyB8IHN0cmluZyxcbiAgICBpZDogRXZlbnRJZHMsXG4gICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8Q29udGV4dDxGYWJyaWNDbGllbnRGbGFncz4+XG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgbG9nLCBjdHhBcmdzIH0gPSBBZGFwdGVyLmxvZ0N0eDxDb250ZXh0PEZhYnJpY0NsaWVudEZsYWdzPj4oXG4gICAgICB0aGlzLnVwZGF0ZU9ic2VydmVycyxcbiAgICAgIGV2ZW50LFxuICAgICAgZmFsc2UsXG4gICAgICAuLi5hcmdzXG4gICAgKTtcbiAgICBpZiAoIXRoaXMuYWRhcHRlcikge1xuICAgICAgbG9nLnZlcmJvc2UoXG4gICAgICAgIGBObyBhZGFwdGVyIG9ic2VydmVkIGZvciBkaXNwYXRjaDsgc2tpcHBpbmcgb2JzZXJ2ZXIgdXBkYXRlIGZvciAke3R5cGVvZiBtb2RlbCA9PT0gXCJzdHJpbmdcIiA/IG1vZGVsIDogTW9kZWwudGFibGVOYW1lKG1vZGVsKX06JHtldmVudH1gXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5hZGFwdGVyLnJlZnJlc2gobW9kZWwsIGV2ZW50LCBpZCwgLi4uY3R4QXJncyk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYEZhaWxlZCB0byByZWZyZXNoIGRpc3BhdGNoOiAke2V9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQcm9jZXNzZXMgaW5jb21pbmcgY2hhaW5jb2RlIGV2ZW50c1xuICAgKiBAc3VtbWFyeSBMaXN0ZW5zIGZvciBldmVudHMgZnJvbSB0aGUgY2hhaW5jb2RlIGFuZCBkaXNwYXRjaGVzIHRoZW0gdG8gcmVnaXN0ZXJlZCBvYnNlcnZlcnNcbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gZXZlbnQgaGFuZGxpbmcgc3RvcHNcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgRmFicmljRGlzcGF0Y2hcbiAgICogICBwYXJ0aWNpcGFudCBFdmVudFN0YWNrXG4gICAqICAgcGFydGljaXBhbnQgRXZlbnRQYXJzZXJcbiAgICogICBwYXJ0aWNpcGFudCBPYnNlcnZlcnNcbiAgICpcbiAgICogICBGYWJyaWNEaXNwYXRjaC0+PkZhYnJpY0Rpc3BhdGNoOiBoYW5kbGVFdmVudHMoKVxuICAgKiAgIEZhYnJpY0Rpc3BhdGNoLT4+RXZlbnRTdGFjazogZm9yIGF3YWl0IChjb25zdCBldnQgb2YgbGlzdGVuaW5nU3RhY2spXG4gICAqICAgRXZlbnRTdGFjay0tPj5GYWJyaWNEaXNwYXRjaDogQ2hhaW5jb2RlRXZlbnRcbiAgICogICBGYWJyaWNEaXNwYXRjaC0+PkV2ZW50UGFyc2VyOiBwYXJzZUV2ZW50TmFtZShldnQuZXZlbnROYW1lKVxuICAgKiAgIEV2ZW50UGFyc2VyLS0+PkZhYnJpY0Rpc3BhdGNoOiB7IHRhYmxlLCBldmVudCwgb3duZXIgfVxuICAgKiAgIEZhYnJpY0Rpc3BhdGNoLT4+RmFicmljRGlzcGF0Y2g6IENoZWNrIGlmIGV2ZW50IGlzIGZvciB0aGlzIE1TUFxuICAgKiAgIEZhYnJpY0Rpc3BhdGNoLT4+RmFicmljRGlzcGF0Y2g6IHBhcnNlUGF5bG9hZChldnQucGF5bG9hZClcbiAgICogICBGYWJyaWNEaXNwYXRjaC0+Pk9ic2VydmVyczogdXBkYXRlT2JzZXJ2ZXJzKHRhYmxlLCBldmVudCwgcGF5bG9hZC5pZClcbiAgICogICBPYnNlcnZlcnMtLT4+RmFicmljRGlzcGF0Y2g6IENhbGxiYWNrcyBleGVjdXRlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUV2ZW50cyhcbiAgICBjdHhBcmc/OiBDb250ZXh0PEZhYnJpY0NsaWVudEZsYWdzPlxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMubGlzdGVuaW5nU3RhY2spXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgYEV2ZW50IHN0YWNrIG5vdCBpbml0aWFsaXplZC4gRW5zdXJlIHRoYXQgXCJzdGFydExpc3RlbmluZ1wiIGlzIGNhbGxlZCBiZWZvcmUgYXR0ZW1wdGluZyB0aGlzIG9wZXJhdGlvbi5gXG4gICAgICApO1xuXG4gICAgaWYgKCF0aGlzLmFkYXB0ZXIgfHwgIXRoaXMuYWRhcHRlci5jb25maWcpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgTm8gYWRhcHRlciBmb3VuZC4gc2hvdWxkIGJlIGltcG9zc2libGVgKTtcblxuICAgIGNvbnN0IGN0eCA9XG4gICAgICBjdHhBcmcgfHxcbiAgICAgIChhd2FpdCB0aGlzLmFkYXB0ZXIuY29udGV4dChcbiAgICAgICAgT3BlcmF0aW9uS2V5cy5SRUFELFxuICAgICAgICB7XG4gICAgICAgICAgY29ycmVsYXRpb25JZDogdGhpcy5hZGFwdGVyLmNvbmZpZy5jaGFpbmNvZGVOYW1lLFxuICAgICAgICB9LFxuICAgICAgICAodGhpcy5tb2RlbHMgJiYgdGhpcy5tb2RlbHNbMF0pIHx8IChNb2RlbCBhcyB1bmtub3duIGFzIENvbnN0cnVjdG9yKVxuICAgICAgKSk7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuaGFuZGxlRXZlbnRzKTtcblxuICAgIGxvZy5pbmZvKFxuICAgICAgYExpc3RlbmluZyBmb3IgaW5jb21pbmcgZXZlbnRzIG9uIGNoYWluY29kZSBcIiR7dGhpcy5hZGFwdGVyLmNvbmZpZy5jaGFpbmNvZGVOYW1lfVwiIG9uIGNoYW5uZWwgXCIke3RoaXMuYWRhcHRlci5jb25maWcuY2hhbm5lbH1cIi4uLmBcbiAgICApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGZvciBhd2FpdCAoY29uc3QgZXZ0IG9mIHRoaXMubGlzdGVuaW5nU3RhY2spIHtcbiAgICAgICAgY29uc3QgeyB0YWJsZSwgZXZlbnQsIG93bmVyIH0gPSBwYXJzZUV2ZW50TmFtZShldnQuZXZlbnROYW1lKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuYWRhcHRlci5jb25maWc/Lm1zcEV2ZW50T25seSAmJlxuICAgICAgICAgIG93bmVyICYmXG4gICAgICAgICAgb3duZXIgIT09IHRoaXMuYWRhcHRlci5jb25maWc/Lm1zcElkXG4gICAgICAgIClcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY29uc3QgcGF5bG9hZDogeyBpZDogc3RyaW5nOyByZXN1bHQ/OiBhbnkgfSA9IHRoaXMucGFyc2VQYXlsb2FkKFxuICAgICAgICAgIGV2dC5wYXlsb2FkXG4gICAgICAgICk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0TW9kZWwgPSB0YWJsZVxuICAgICAgICAgICAgPyBNb2RlbC5nZXQodGFibGUpXG4gICAgICAgICAgICA6IE1vZGVsLmdldCh0aGlzLm1vZGVsc1swXS5uYW1lKTtcbiAgICAgICAgICBjb25zdCBtb2RlbFJlZiA9IHRhcmdldE1vZGVsID8/ICh0YWJsZSB8fCB0aGlzLm1vZGVsc1swXT8ubmFtZSk7XG4gICAgICAgICAgY29uc3Qgb2JzZXJ2ZXJBcmdzID0gcGF5bG9hZC5yZXN1bHQgPyBbcGF5bG9hZC5yZXN1bHQsIGN0eF0gOiBbY3R4XTtcbiAgICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZU9ic2VydmVycyhcbiAgICAgICAgICAgIG1vZGVsUmVmIGFzIENvbnN0cnVjdG9yIHwgc3RyaW5nLFxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICBwYXlsb2FkLmlkIGFzIHN0cmluZyxcbiAgICAgICAgICAgIC4uLihvYnNlcnZlckFyZ3MgYXMgQ29udGV4dHVhbEFyZ3M8YW55PilcbiAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgbG9nLmVycm9yKFxuICAgICAgICAgICAgYEZhaWxlZCB1cGRhdGUgb2JzZXJ2YWJsZXMgZm9yIHRhYmxlICR7dGFibGV9IGV2ZW50ICR7ZXZlbnR9IGlkOiAke3BheWxvYWQuaWR9OiAke2V9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGxvZy5lcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byByZWFkIGV2ZW50IGZvciBjaGFpbmNvZGUgXCIke3RoaXMuYWRhcHRlci5jb25maWcuY2hhaW5jb2RlTmFtZX1cIiBvbiBjaGFubmVsIFwiJHt0aGlzLmFkYXB0ZXIuY29uZmlnLmNoYW5uZWx9XCI6ICR7ZX1gXG4gICAgICApO1xuICAgICAgYXdhaXQgdGhpcy5jbG9zZShjdHgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZXMgdGhlIGV2ZW50IGxpc3RlbmVyXG4gICAqIEBzdW1tYXJ5IFNldHMgdXAgZXZlbnQgZGlzcGF0Y2hpbmcgZm9yIHRoZSBvYnNlcnZlZCBhZGFwdGVyLiBXaGVuXG4gICAqIGBzeW50aGV0aWNFdmVudHNgIGlzIHRydWUgKHRoZSBkZWZhdWx0KSBubyBnYXRld2F5IGNvbm5lY3Rpb24gaXMgb3BlbmVkO1xuICAgKiBpbnN0ZWFkIGV2ZXJ5IENSVUQgb3BlcmF0aW9uIGlzIHdyYXBwZWQgd2l0aCBhIFByb3h5IHRoYXQgZmlyZXNcbiAgICogYHVwZGF0ZU9ic2VydmVyc2AgZm9yICoqYWxsKiogbW9kZWxzLiBXaGVuIGBzeW50aGV0aWNFdmVudHNgIGlzIGZhbHNlIHRoZVxuICAgKiBleGlzdGluZyBnYXRld2F5LWJhc2VkIGNoYWluY29kZS1ldmVudCBzdWJzY3JpcHRpb24gaXMgZXN0YWJsaXNoZWQgYW5kIHRoZVxuICAgKiBsb2NhbCBQcm94eSBmYWxsYmFjayBpcyBsaW1pdGVkIHRvIGZ1bGx5LXNlZ3JlZ2F0ZWQgKHRyYW5zaWVudCkgbW9kZWxzIG9ubHkuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGluaXRpYWxpemF0aW9uIGlzIGNvbXBsZXRlXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgaW5pdGlhbGl6ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuYWRhcHRlcilcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBObyBhZGFwdGVyIG9yIGNvbmZpZyBvYnNlcnZlZCBmb3IgZGlzcGF0Y2hgKTtcblxuICAgIGNvbnN0IHN5bnRoZXRpY0V2ZW50cyA9IHRoaXMuYWRhcHRlci5jb25maWcuc3ludGhldGljRXZlbnRzICE9PSBmYWxzZTtcblxuICAgIGlmICghc3ludGhldGljRXZlbnRzKSB7XG4gICAgICAvLyBHYXRld2F5LWJhc2VkIGNoYWluY29kZS1ldmVudCBzdWJzY3JpcHRpb24gKG5vbi1zeW50aGV0aWMgcGF0aClcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBhd2FpdCB0aGlzLmFkYXB0ZXIuY29udGV4dChcbiAgICAgICAgXCJkaXNwYXRjaFwiLFxuICAgICAgICB7XG4gICAgICAgICAgY29ycmVsYXRpb25JZDogdGhpcy5hZGFwdGVyLmNvbmZpZy5jaGFpbmNvZGVOYW1lLFxuICAgICAgICB9LFxuICAgICAgICBNb2RlbCBhcyBhbnlcbiAgICAgICk7XG4gICAgICBjb25zdCB7IGN0eCB9ID0gdGhpcy5sb2dDdHgoW2NvbnRleHRdLCB0aGlzLmluaXRpYWxpemUpO1xuICAgICAgY29uc3QgZ2F0ZXdheSA9IGF3YWl0IEZhYnJpY0NsaWVudEFkYXB0ZXIuZ2V0R2F0ZXdheShcbiAgICAgICAgY3R4LFxuICAgICAgICB0aGlzLmFkYXB0ZXIuY29uZmlnIGFzIFBlZXJDb25maWcsXG4gICAgICAgIHRoaXMuY2xpZW50XG4gICAgICApO1xuICAgICAgY29uc3QgbmV0d29yayA9IGdhdGV3YXkuZ2V0TmV0d29yayh0aGlzLmFkYXB0ZXIuY29uZmlnLmNoYW5uZWwpO1xuICAgICAgaWYgKCF0aGlzLmFkYXB0ZXIpXG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBObyBhZGFwdGVyIG9ic2VydmVkIGZvciBkaXNwYXRjaGApO1xuICAgICAgdGhpcy5saXN0ZW5pbmdTdGFjayA9IGF3YWl0IG5ldHdvcmsuZ2V0Q2hhaW5jb2RlRXZlbnRzKFxuICAgICAgICB0aGlzLmFkYXB0ZXIuY29uZmlnLmNoYWluY29kZU5hbWVcbiAgICAgICk7XG4gICAgICB0aGlzLmhhbmRsZUV2ZW50cyhjdHgpO1xuICAgIH1cblxuICAgIC8vIFByb3h5IENSVUQgbWV0aG9kcy5cbiAgICAvLyDigKIgc3ludGhldGljRXZlbnRzID0gdHJ1ZSAg4oaSIG5vdGlmeSBmb3IgQUxMIG1vZGVscyAocmVwbGFjZXMgZ2F0ZXdheSBldmVudHMgZW50aXJlbHkpXG4gICAgLy8g4oCiIHN5bnRoZXRpY0V2ZW50cyA9IGZhbHNlIOKGkiBub3RpZnkgb25seSBmb3IgZnVsbHktc2VncmVnYXRlZCAodHJhbnNpZW50KSBtb2RlbHNcbiAgICAvLyAgICh0aGUgZ2F0ZXdheSBzdWJzY3JpcHRpb24gaGFuZGxlcyBwdWJsaWMgbW9kZWxzKVxuICAgIChcbiAgICAgIFtcbiAgICAgICAgT3BlcmF0aW9uS2V5cy5DUkVBVEUsXG4gICAgICAgIE9wZXJhdGlvbktleXMuVVBEQVRFLFxuICAgICAgICBPcGVyYXRpb25LZXlzLkRFTEVURSxcbiAgICAgICAgQnVsa0NydWRPcGVyYXRpb25LZXlzLkNSRUFURV9BTEwsXG4gICAgICAgIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cy5VUERBVEVfQUxMLFxuICAgICAgICBCdWxrQ3J1ZE9wZXJhdGlvbktleXMuREVMRVRFX0FMTCxcbiAgICAgIF0gYXMgKGtleW9mIEFkYXB0ZXI8YW55LCBhbnksIGFueSwgYW55PilbXVxuICAgICkuZm9yRWFjaCgodG9XcmFwKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuYWRhcHRlcilcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgYE5vIGFkYXB0ZXIgcHJvdmlkZWQgZm9yIHRoZSBmYWxsYmFjayBvZiBmdWxseSBzZWdyZWdhdGVkIG1vZGVsc2BcbiAgICAgICAgKTtcbiAgICAgIGlmICghdGhpcy5hZGFwdGVyW3RvV3JhcF0pXG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgIGBNZXRob2QgJHt0b1dyYXB9IG5vdCBmb3VuZCBpbiAke3RoaXMuYWRhcHRlci5hbGlhc30gYWRhcHRlciB0byBiaW5kIE9ic2VydmFibGVzIERpc3BhdGNoYFxuICAgICAgICApO1xuXG4gICAgICBsZXQgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcy5hZGFwdGVyLCB0b1dyYXApO1xuICAgICAgbGV0IHByb3RvOiBhbnkgPSB0aGlzLmFkYXB0ZXI7XG4gICAgICB3aGlsZSAoIWRlc2NyaXB0b3IgJiYgcHJvdG8gIT09IE9iamVjdC5wcm90b3R5cGUpIHtcbiAgICAgICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICAgICAgICBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgdG9XcmFwKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFkZXNjcmlwdG9yIHx8ICFkZXNjcmlwdG9yLndyaXRhYmxlKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yKFxuICAgICAgICAgIGBDb3VsZCBub3QgZmluZCBtZXRob2QgJHt0b1dyYXB9IHRvIGJpbmQgT2JzZXJ2YWJsZXMgRGlzcGF0Y2hgXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGJ1bGtUb1NpbmdsZShtZXRob2Q6IHN0cmluZykge1xuICAgICAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgICAgIGNhc2UgQnVsa0NydWRPcGVyYXRpb25LZXlzLkNSRUFURV9BTEw6XG4gICAgICAgICAgICByZXR1cm4gT3BlcmF0aW9uS2V5cy5DUkVBVEU7XG4gICAgICAgICAgY2FzZSBCdWxrQ3J1ZE9wZXJhdGlvbktleXMuVVBEQVRFX0FMTDpcbiAgICAgICAgICAgIHJldHVybiBPcGVyYXRpb25LZXlzLlVQREFURTtcbiAgICAgICAgICBjYXNlIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cy5ERUxFVEVfQUxMOlxuICAgICAgICAgICAgcmV0dXJuIE9wZXJhdGlvbktleXMuREVMRVRFO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gbWV0aG9kO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYmVjYXVzZSB0aGVyZSBhcmUgcmVhZCBvbmx5IHByb3BlcnRpZXNcbiAgICAgIHRoaXMuYWRhcHRlclt0b1dyYXBdID0gbmV3IFByb3h5KHRoaXMuYWRhcHRlclt0b1dyYXBdLCB7XG4gICAgICAgIGFwcGx5OiBhc3luYyAoXG4gICAgICAgICAgdGFyZ2V0OiBhbnksXG4gICAgICAgICAgdGhpc0FyZzogRmFicmljQ2xpZW50QWRhcHRlcixcbiAgICAgICAgICBhcmdBcnJheTogYW55W11cbiAgICAgICAgKSA9PiB7XG4gICAgICAgICAgLy8gUnVuIHRoZSBvcmlnaW5hbCBtZXRob2QgdW5jaGFuZ2VkIHNvIHRyYW5zaWVudCBkYXRhIGlzIHByZXNlcnZlZFxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRhcmdldC5hcHBseSh0aGlzQXJnLCBhcmdBcnJheSk7XG5cbiAgICAgICAgICBjb25zdCBjbGF6ejogQ29uc3RydWN0b3I8YW55PiA9IGFyZ0FycmF5WzBdO1xuICAgICAgICAgIC8vIFdoZW4gc3ludGhldGljRXZlbnRzIGlzIGZhbHNlLCBwdWJsaWMgbW9kZWxzIGVtaXQgYSBjaGFpbmNvZGUgZXZlbnRcbiAgICAgICAgICAvLyBvbiB0aGUgY29udHJhY3Qgc2lkZTsgc2tpcCB0aGUgbG9jYWwgZmFsbGJhY2sgdG8gYXZvaWRcbiAgICAgICAgICAvLyBkb3VibGUtbm90aWZpY2F0aW9uLiBXaGVuIHN5bnRoZXRpY0V2ZW50cyBpcyB0cnVlIHdlIGhhbmRsZSBhbGwgbW9kZWxzLlxuICAgICAgICAgIGlmICghc3ludGhldGljRXZlbnRzICYmICFNb2RlbC5pc1RyYW5zaWVudChjbGF6eikpIHJldHVybiByZXN1bHQ7XG5cbiAgICAgICAgICAvLyBDb250ZXh0IGlzIGFsd2F5cyB0aGUgbGFzdCBlbGVtZW50IG9mIGFyZ0FycmF5XG4gICAgICAgICAgY29uc3QgeyBsb2csIGN0eEFyZ3MsIGN0eCB9ID0gdGhpc0FyZ1tcImxvZ0N0eFwiXShcbiAgICAgICAgICAgIGFyZ0FycmF5LnNsaWNlKGFyZ0FycmF5Lmxlbmd0aCAtIDEpLFxuICAgICAgICAgICAgdGFyZ2V0XG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBpZHMgPSBhcmdBcnJheVsxXTtcbiAgICAgICAgICBjb25zdCByZXN1bHRBcmdzOiBhbnlbXSA9IFtjbGF6eiwgYnVsa1RvU2luZ2xlKHRvV3JhcCksIGlkc107XG5cbiAgICAgICAgICBpZiAoY3R4LmdldE9yVW5kZWZpbmVkKFwib2JzZXJ2ZUZ1bGxSZXN1bHRcIikpIHtcbiAgICAgICAgICAgIHJlc3VsdEFyZ3MucHVzaChyZXN1bHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnVwZGF0ZU9ic2VydmVycyhcbiAgICAgICAgICAgIHJlc3VsdEFyZ3NbMF0sXG4gICAgICAgICAgICByZXN1bHRBcmdzWzFdLFxuICAgICAgICAgICAgcmVzdWx0QXJnc1syXSxcbiAgICAgICAgICAgIC4uLnJlc3VsdEFyZ3Muc2xpY2UoMyksXG4gICAgICAgICAgICAuLi4oY3R4QXJncyBhcyBDb250ZXh0dWFsQXJnczxDb250ZXh0PEZhYnJpY0NsaWVudEZsYWdzPj4pXG4gICAgICAgICAgKS5jYXRjaCgoZTogdW5rbm93bikgPT5cbiAgICAgICAgICAgIGxvZy5lcnJvcihcbiAgICAgICAgICAgICAgYEZhaWxlZCB0byBkaXNwYXRjaCBvYnNlcnZlciByZWZyZXNoIGZvciAke3RvV3JhcH0gb24gJHtjbGF6ei5uYW1lIHx8IGNsYXp6fSBmb3IgJHtpZHN9OiAke2V9YFxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG5cbmlmIChGYWJyaWNDbGllbnRBZGFwdGVyKVxuICBGYWJyaWNDbGllbnRBZGFwdGVyW1wiX2Jhc2VEaXNwYXRjaFwiXSA9IEZhYnJpY0NsaWVudERpc3BhdGNoO1xuIl19
|
|
291
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljQ2xpZW50RGlzcGF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJGYWJyaWNDbGllbnREaXNwYXRjaC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBdUY7QUFDdkYscUVBQStEO0FBQy9ELDJEQUErRjtBQUMvRixxREFBdUQ7QUFDdkQseUVBQXVEO0FBQ3ZEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStDRztBQUNILE1BQWEsb0JBQXFCLFNBQVEsZUFBUTtJQUM5Qzs7OztPQUlHO0lBQ0gsWUFBWSxNQUFNO1FBQ2QsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQjs7V0FFRztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTztRQUNsQixNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsc0JBQWUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xILElBQUksQ0FBQztZQUNELE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1AsR0FBRyxDQUFDLEtBQUssQ0FBQywrQ0FBK0MsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDO2dCQUNELE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxL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QyxDQUFDLENBQUM7b0JBQzlOLE9BQU8sTUFBTSxDQUFDO2dCQUNsQixDQUFDO2FBQ0osQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUFyT0Qsb0RBcU9DO0FBQ0QsSUFBSSw0Q0FBbUI7SUFDbkIsNENBQW1CLENBQUMsZUFBZSxDQUFDLEdBQUcsb0JBQW9CLENBQUM7QUFDaEUsMGo3QkFBMGo3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFkYXB0ZXIsIERpc3BhdGNoLCBVbnN1cHBvcnRlZEVycm9yLCBQZXJzaXN0ZW5jZUtleXMsIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBGYWJyaWNDbGllbnRBZGFwdGVyIH0gZnJvbSBcIi4vRmFicmljQ2xpZW50QWRhcHRlci5qc1wiO1xuaW1wb3J0IHsgQnVsa0NydWRPcGVyYXRpb25LZXlzLCBJbnRlcm5hbEVycm9yLCBPcGVyYXRpb25LZXlzLCB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgcGFyc2VFdmVudE5hbWUgfSBmcm9tIFwiLi8uLi9zaGFyZWQvZXZlbnRzLmpzXCI7XG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbi8qKlxuICogQGRlc2NyaXB0aW9uIEV2ZW50IGRpc3BhdGNoZXIgZm9yIEh5cGVybGVkZ2VyIEZhYnJpYyBjaGFpbmNvZGUgZXZlbnRzXG4gKiBAc3VtbWFyeSBMaXN0ZW5zIGZvciBhbmQgcHJvY2Vzc2VzIGV2ZW50cyBlbWl0dGVkIGJ5IEZhYnJpYyBjaGFpbmNvZGUsIGRpc3BhdGNoaW5nIHRoZW0gdG8gcmVnaXN0ZXJlZCBvYnNlcnZlcnNcbiAqIEB0ZW1wbGF0ZSBQZWVyQ29uZmlnIC0gQ29uZmlndXJhdGlvbiB0eXBlIGZvciBjb25uZWN0aW5nIHRvIGEgRmFicmljIHBlZXJcbiAqIEBwYXJhbSBjbGllbnQgLSBnUlBDIGNsaWVudCBmb3IgY29ubmVjdGluZyB0byB0aGUgRmFicmljIG5ldHdvcmtcbiAqIEBjbGFzcyBGYWJyaWNDbGllbnREaXNwYXRjaFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIENyZWF0ZSBhIG5ldyBGYWJyaWNEaXNwYXRjaCBpbnN0YW5jZVxuICogY29uc3QgY2xpZW50ID0gYXdhaXQgRmFicmljQWRhcHRlci5nZXRDbGllbnQocGVlckNvbmZpZyk7XG4gKiBjb25zdCBkaXNwYXRjaCA9IG5ldyBGYWJyaWNEaXNwYXRjaChjbGllbnQpO1xuICpcbiAqIC8vIENvbmZpZ3VyZSB0aGUgZGlzcGF0Y2ggd2l0aCBwZWVyIGNvbmZpZ3VyYXRpb25cbiAqIGRpc3BhdGNoLmNvbmZpZ3VyZShwZWVyQ29uZmlnKTtcbiAqXG4gKiAvLyBSZWdpc3RlciBhbiBvYnNlcnZlciBmb3IgYSBzcGVjaWZpYyB0YWJsZSBhbmQgZXZlbnRcbiAqIGRpc3BhdGNoLm9ic2VydmUoJ3VzZXJzJywgJ2NyZWF0ZScsIChpZCkgPT4ge1xuICogICBjb25zb2xlLmxvZyhgVXNlciBjcmVhdGVkOiAke2lkfWApO1xuICogfSk7XG4gKlxuICogLy8gU3RhcnQgbGlzdGVuaW5nIGZvciBldmVudHNcbiAqIGF3YWl0IGRpc3BhdGNoLnN0YXJ0KCk7XG4gKiBgYGBcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQ2xpZW50XG4gKiAgIHBhcnRpY2lwYW50IEZhYnJpY0Rpc3BhdGNoXG4gKiAgIHBhcnRpY2lwYW50IEdhdGV3YXlcbiAqICAgcGFydGljaXBhbnQgTmV0d29ya1xuICogICBwYXJ0aWNpcGFudCBDaGFpbmNvZGVcbiAqXG4gKiAgIENsaWVudC0+PkZhYnJpY0Rpc3BhdGNoOiBuZXcgRmFicmljRGlzcGF0Y2goY2xpZW50KVxuICogICBDbGllbnQtPj5GYWJyaWNEaXNwYXRjaDogY29uZmlndXJlKHBlZXJDb25maWcpXG4gKiAgIENsaWVudC0+PkZhYnJpY0Rpc3BhdGNoOiBvYnNlcnZlKHRhYmxlLCBldmVudCwgY2FsbGJhY2spXG4gKiAgIENsaWVudC0+PkZhYnJpY0Rpc3BhdGNoOiBzdGFydCgpXG4gKiAgIEZhYnJpY0Rpc3BhdGNoLT4+RmFicmljRGlzcGF0Y2g6IGluaXRpYWxpemUoKVxuICogICBGYWJyaWNEaXNwYXRjaC0+PkdhdGV3YXk6IGdldEdhdGV3YXkoY29uZmlnLCBjbGllbnQpXG4gKiAgIEdhdGV3YXktPj5OZXR3b3JrOiBnZXROZXR3b3JrKGNoYW5uZWwpXG4gKiAgIE5ldHdvcmstPj5OZXR3b3JrOiBnZXRDaGFpbmNvZGVFdmVudHMoY2hhaW5jb2RlTmFtZSlcbiAqICAgRmFicmljRGlzcGF0Y2gtPj5GYWJyaWNEaXNwYXRjaDogaGFuZGxlRXZlbnRzKClcbiAqICAgbG9vcCBGb3IgZWFjaCBldmVudFxuICogICAgIENoYWluY29kZS0tPj5GYWJyaWNEaXNwYXRjaDogQ2hhaW5jb2RlRXZlbnRcbiAqICAgICBGYWJyaWNEaXNwYXRjaC0+PkZhYnJpY0Rpc3BhdGNoOiBwYXJzZUV2ZW50TmFtZShldmVudE5hbWUpXG4gKiAgICAgRmFicmljRGlzcGF0Y2gtPj5GYWJyaWNEaXNwYXRjaDogcGFyc2VQYXlsb2FkKHBheWxvYWQpXG4gKiAgICAgRmFicmljRGlzcGF0Y2gtPj5GYWJyaWNEaXNwYXRjaDogdXBkYXRlT2JzZXJ2ZXJzKHRhYmxlLCBldmVudCwgaWQpXG4gKiAgICAgRmFicmljRGlzcGF0Y2gtLT4+Q2xpZW50OiBjYWxsYmFjayhpZClcbiAqICAgZW5kXG4gKi9cbmV4cG9ydCBjbGFzcyBGYWJyaWNDbGllbnREaXNwYXRjaCBleHRlbmRzIERpc3BhdGNoIHtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG5ldyBGYWJyaWNEaXNwYXRjaCBpbnN0YW5jZVxuICAgICAqIEBzdW1tYXJ5IEluaXRpYWxpemVzIGEgZGlzcGF0Y2hlciBmb3IgRmFicmljIGNoYWluY29kZSBldmVudHNcbiAgICAgKiBAcGFyYW0ge0NsaWVudH0gY2xpZW50IC0gZ1JQQyBjbGllbnQgZm9yIGNvbm5lY3RpbmcgdG8gdGhlIEZhYnJpYyBuZXR3b3JrXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoY2xpZW50KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuY2xpZW50ID0gY2xpZW50O1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIFRleHQgZGVjb2RlciBmb3IgY29udmVydGluZyBldmVudCBwYXlsb2FkcyBmcm9tIGJ5dGVzIHRvIHN0cmluZ3NcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcihcInV0ZjhcIik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDbG9zZXMgdGhlIGV2ZW50IGxpc3RlbmluZyBjb25uZWN0aW9uXG4gICAgICogQHN1bW1hcnkgU3RvcHMgbGlzdGVuaW5nIGZvciBjaGFpbmNvZGUgZXZlbnRzIGFuZCByZWxlYXNlcyByZXNvdXJjZXNcbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY29ubmVjdGlvbiBpcyBjbG9zZWRcbiAgICAgKi9cbiAgICBhc3luYyBjbG9zZSguLi5jdHhBcmdzKSB7XG4gICAgICAgIGNvbnN0IHsgbG9nLCBjdHhBcmdzOiBsb2dnZWRBcmdzIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoY3R4QXJncywgUGVyc2lzdGVuY2VLZXlzLlNIVVRET1dOLCB0cnVlKSkuZm9yKHRoaXMuY2xvc2UpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgc3VwZXIuY2xvc2UoLi4ubG9nZ2VkQXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGxvZy5lcnJvcihgRmFpbGVkIHRvIGNsb3NlIEZhYnJpYyBwcm94aWVzIGV2ZW50IGxpc3RlbmVyYCwgZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubGlzdGVuaW5nU3RhY2spIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5saXN0ZW5pbmdTdGFjay5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBsb2cuZXJyb3IoYEZhaWxlZCB0byBjbG9zZSBGYWJyaWMgZXZlbnQgbGlzdGVuZXJgLCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdGVuaW5nU3RhY2sgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFBhcnNlcyBldmVudCBwYXlsb2FkIGZyb20gYmluYXJ5IGZvcm1hdFxuICAgICAqIEBzdW1tYXJ5IENvbnZlcnRzIGEgVWludDhBcnJheSBjb250YWluaW5nIEpTT04gdG8gYW4gb2JqZWN0IHdpdGggYW4gaWQgcHJvcGVydHlcbiAgICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGpzb25CeXRlcyAtIFRoZSBiaW5hcnkgcGF5bG9hZCBmcm9tIHRoZSBjaGFpbmNvZGUgZXZlbnRcbiAgICAgKiBAcmV0dXJuIHt7IGlkOiBzdHJpbmcgfX0gVGhlIHBhcnNlZCBwYXlsb2FkIGNvbnRhaW5pbmcgdGhlIHJlY29yZCBJRFxuICAgICAqL1xuICAgIHBhcnNlUGF5bG9hZChqc29uQnl0ZXMpIHtcbiAgICAgICAgY29uc3QganNvbiA9IHRoaXMuZGVjb2Rlci5kZWNvZGUoanNvbkJ5dGVzKTtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoanNvbik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTdGFydHMgb2JzZXJ2aW5nIGFuIGFkYXB0ZXJcbiAgICAgKiBAc3VtbWFyeSBDb25uZWN0cyB0aGlzIGRpc3BhdGNoIHRvIGFuIGFkYXB0ZXIgdG8gbW9uaXRvciBpdHMgb3BlcmF0aW9uc1xuICAgICAqIEBwYXJhbSB7QWRhcHRlcjxhbnksIGFueSwgYW55LCBhbnk+fSBvYnNlcnZlciAtIFRoZSBhZGFwdGVyIHRvIG9ic2VydmVcbiAgICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgICAqL1xuICAgIG9ic2VydmUob2JzZXJ2ZXIpIHtcbiAgICAgICAgaWYgKCEob2JzZXJ2ZXIgaW5zdGFuY2VvZiBGYWJyaWNDbGllbnRBZGFwdGVyKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEVycm9yKFwiT25seSBGYWJyaWNDbGllbnRBZGFwdGVyIGNhbiBiZSBvYnNlcnZlZCBieSBkaXNwYXRjaFwiKTtcbiAgICAgICAgc3VwZXIub2JzZXJ2ZShvYnNlcnZlcik7XG4gICAgICAgIHJldHVybiAoKSA9PiB0aGlzLnVuT2JzZXJ2ZShvYnNlcnZlcik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBVcGRhdGVzIG9ic2VydmVycyBhYm91dCBhIGRhdGFiYXNlIGV2ZW50XG4gICAgICogQHN1bW1hcnkgTm90aWZpZXMgb2JzZXJ2ZXJzIGFib3V0IGEgY2hhbmdlIGluIHRoZSBkYXRhYmFzZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZSAtIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSB3aGVyZSB0aGUgY2hhbmdlIG9jY3VycmVkXG4gICAgICogQHBhcmFtIHtPcGVyYXRpb25LZXlzfEJ1bGtDcnVkT3BlcmF0aW9uS2V5c3xzdHJpbmd9IGV2ZW50IC0gVGhlIHR5cGUgb2Ygb3BlcmF0aW9uIHRoYXQgb2NjdXJyZWRcbiAgICAgKiBAcGFyYW0ge2FueX0gcGF5bG9hZCAtIFRoZSBldmVudCBwYXlsb2FkXG4gICAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBhbGwgb2JzZXJ2ZXJzIGhhdmUgYmVlbiBub3RpZmllZFxuICAgICAqL1xuICAgIGFzeW5jIHVwZGF0ZU9ic2VydmVycyhtb2RlbCwgZXZlbnQsIGlkLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IHsgbG9nLCBjdHhBcmdzIH0gPSBBZGFwdGVyLmxvZ0N0eCh0aGlzLnVwZGF0ZU9ic2VydmVycywgZXZlbnQsIGZhbHNlLCAuLi5hcmdzKTtcbiAgICAgICAgaWYgKCF0aGlzLmFkYXB0ZXIpIHtcbiAgICAgICAgICAgIGxvZy52ZXJib3NlKGBObyBhZGFwdGVyIG9ic2VydmVkIGZvciBkaXNwYXRjaDsgc2tpcHBpbmcgb2JzZXJ2ZXIgdXBkYXRlIGZvciAke3R5cGVvZiBtb2RlbCA9PT0gXCJzdHJpbmdcIiA/IG1vZGVsIDogTW9kZWwudGFibGVOYW1lKG1vZGVsKX06JHtldmVudH1gKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5hZGFwdGVyLnJlZnJlc2gobW9kZWwsIGV2ZW50LCBpZCwgLi4uY3R4QXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBGYWlsZWQgdG8gcmVmcmVzaCBkaXNwYXRjaDogJHtlfWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQcm9jZXNzZXMgaW5jb21pbmcgY2hhaW5jb2RlIGV2ZW50c1xuICAgICAqIEBzdW1tYXJ5IExpc3RlbnMgZm9yIGV2ZW50cyBmcm9tIHRoZSBjaGFpbmNvZGUgYW5kIGRpc3BhdGNoZXMgdGhlbSB0byByZWdpc3RlcmVkIG9ic2VydmVyc1xuICAgICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGV2ZW50IGhhbmRsaW5nIHN0b3BzXG4gICAgICogQG1lcm1haWRcbiAgICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICAgKiAgIHBhcnRpY2lwYW50IEZhYnJpY0Rpc3BhdGNoXG4gICAgICogICBwYXJ0aWNpcGFudCBFdmVudFN0YWNrXG4gICAgICogICBwYXJ0aWNpcGFudCBFdmVudFBhcnNlclxuICAgICAqICAgcGFydGljaXBhbnQgT2JzZXJ2ZXJzXG4gICAgICpcbiAgICAgKiAgIEZhYnJpY0Rpc3BhdGNoLT4+RmFicmljRGlzcGF0Y2g6IGhhbmRsZUV2ZW50cygpXG4gICAgICogICBGYWJyaWNEaXNwYXRjaC0+PkV2ZW50U3RhY2s6IGZvciBhd2FpdCAoY29uc3QgZXZ0IG9mIGxpc3RlbmluZ1N0YWNrKVxuICAgICAqICAgRXZlbnRTdGFjay0tPj5GYWJyaWNEaXNwYXRjaDogQ2hhaW5jb2RlRXZlbnRcbiAgICAgKiAgIEZhYnJpY0Rpc3BhdGNoLT4+RXZlbnRQYXJzZXI6IHBhcnNlRXZlbnROYW1lKGV2dC5ldmVudE5hbWUpXG4gICAgICogICBFdmVudFBhcnNlci0tPj5GYWJyaWNEaXNwYXRjaDogeyB0YWJsZSwgZXZlbnQsIG93bmVyIH1cbiAgICAgKiAgIEZhYnJpY0Rpc3BhdGNoLT4+RmFicmljRGlzcGF0Y2g6IENoZWNrIGlmIGV2ZW50IGlzIGZvciB0aGlzIE1TUFxuICAgICAqICAgRmFicmljRGlzcGF0Y2gtPj5GYWJyaWNEaXNwYXRjaDogcGFyc2VQYXlsb2FkKGV2dC5wYXlsb2FkKVxuICAgICAqICAgRmFicmljRGlzcGF0Y2gtPj5PYnNlcnZlcnM6IHVwZGF0ZU9ic2VydmVycyh0YWJsZSwgZXZlbnQsIHBheWxvYWQuaWQpXG4gICAgICogICBPYnNlcnZlcnMtLT4+RmFicmljRGlzcGF0Y2g6IENhbGxiYWNrcyBleGVjdXRlZFxuICAgICAqL1xuICAgIGFzeW5jIGhhbmRsZUV2ZW50cyhjdHhBcmcpIHtcbiAgICAgICAgaWYgKCF0aGlzLmxpc3RlbmluZ1N0YWNrKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYEV2ZW50IHN0YWNrIG5vdCBpbml0aWFsaXplZC4gRW5zdXJlIHRoYXQgXCJzdGFydExpc3RlbmluZ1wiIGlzIGNhbGxlZCBiZWZvcmUgYXR0ZW1wdGluZyB0aGlzIG9wZXJhdGlvbi5gKTtcbiAgICAgICAgaWYgKCF0aGlzLmFkYXB0ZXIgfHwgIXRoaXMuYWRhcHRlci5jb25maWcpXG4gICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgTm8gYWRhcHRlciBmb3VuZC4gc2hvdWxkIGJlIGltcG9zc2libGVgKTtcbiAgICAgICAgY29uc3QgY3R4ID0gY3R4QXJnIHx8XG4gICAgICAgICAgICAoYXdhaXQgdGhpcy5hZGFwdGVyLmNvbnRleHQoT3BlcmF0aW9uS2V5cy5SRUFELCB7XG4gICAgICAgICAgICAgICAgY29ycmVsYXRpb25JZDogdGhpcy5hZGFwdGVyLmNvbmZpZy5jaGFpbmNvZGVOYW1lLFxuICAgICAgICAgICAgfSwgKHRoaXMubW9kZWxzICYmIHRoaXMubW9kZWxzWzBdKSB8fCBNb2RlbCkpO1xuICAgICAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5oYW5kbGVFdmVudHMpO1xuICAgICAgICBsb2cuaW5mbyhgTGlzdGVuaW5nIGZvciBpbmNvbWluZyBldmVudHMgb24gY2hhaW5jb2RlIFwiJHt0aGlzLmFkYXB0ZXIuY29uZmlnLmNoYWluY29kZU5hbWV9XCIgb24gY2hhbm5lbCBcIiR7dGhpcy5hZGFwdGVyLmNvbmZpZy5jaGFubmVsfVwiLi4uYCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IGV2dCBvZiB0aGlzLmxpc3RlbmluZ1N0YWNrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB0YWJsZSwgZXZlbnQsIG93bmVyIH0gPSBwYXJzZUV2ZW50TmFtZShldnQuZXZlbnROYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hZGFwdGVyLmNvbmZpZz8ubXNwRXZlbnRPbmx5ICYmXG4gICAgICAgICAgICAgICAgICAgIG93bmVyICYmXG4gICAgICAgICAgICAgICAgICAgIG93bmVyICE9PSB0aGlzLmFkYXB0ZXIuY29uZmlnPy5tc3BJZClcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IHRoaXMucGFyc2VQYXlsb2FkKGV2dC5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRNb2RlbCA9IHRhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IE1vZGVsLmdldCh0YWJsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogTW9kZWwuZ2V0KHRoaXMubW9kZWxzWzBdLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlbFJlZiA9IHRhcmdldE1vZGVsID8/ICh0YWJsZSB8fCB0aGlzLm1vZGVsc1swXT8ubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9ic2VydmVyQXJncyA9IHBheWxvYWQucmVzdWx0ID8gW3BheWxvYWQucmVzdWx0LCBjdHhdIDogW2N0eF07XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudXBkYXRlT2JzZXJ2ZXJzKG1vZGVsUmVmLCBldmVudCwgcGF5bG9hZC5pZCwgLi4ub2JzZXJ2ZXJBcmdzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9nLmVycm9yKGBGYWlsZWQgdXBkYXRlIG9ic2VydmFibGVzIGZvciB0YWJsZSAke3RhYmxlfSBldmVudCAke2V2ZW50fSBpZDogJHtwYXlsb2FkLmlkfTogJHtlfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgbG9nLmVycm9yKGBGYWlsZWQgdG8gcmVhZCBldmVudCBmb3IgY2hhaW5jb2RlIFwiJHt0aGlzLmFkYXB0ZXIuY29uZmlnLmNoYWluY29kZU5hbWV9XCIgb24gY2hhbm5lbCBcIiR7dGhpcy5hZGFwdGVyLmNvbmZpZy5jaGFubmVsfVwiOiAke2V9YCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNsb3NlKGN0eCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemVzIHRoZSBldmVudCBsaXN0ZW5lclxuICAgICAqIEBzdW1tYXJ5IFNldHMgdXAgZXZlbnQgZGlzcGF0Y2hpbmcgZm9yIHRoZSBvYnNlcnZlZCBhZGFwdGVyLiBXaGVuXG4gICAgICogYHN5bnRoZXRpY0V2ZW50c2AgaXMgdHJ1ZSAodGhlIGRlZmF1bHQpIG5vIGdhdGV3YXkgY29ubmVjdGlvbiBpcyBvcGVuZWQ7XG4gICAgICogaW5zdGVhZCBldmVyeSBDUlVEIG9wZXJhdGlvbiBpcyB3cmFwcGVkIHdpdGggYSBQcm94eSB0aGF0IGZpcmVzXG4gICAgICogYHVwZGF0ZU9ic2VydmVyc2AgZm9yICoqYWxsKiogbW9kZWxzLiBXaGVuIGBzeW50aGV0aWNFdmVudHNgIGlzIGZhbHNlIHRoZVxuICAgICAqIGV4aXN0aW5nIGdhdGV3YXktYmFzZWQgY2hhaW5jb2RlLWV2ZW50IHN1YnNjcmlwdGlvbiBpcyBlc3RhYmxpc2hlZCBhbmQgdGhlXG4gICAgICogbG9jYWwgUHJveHkgZmFsbGJhY2sgaXMgbGltaXRlZCB0byBmdWxseS1zZWdyZWdhdGVkICh0cmFuc2llbnQpIG1vZGVscyBvbmx5LlxuICAgICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59IFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIGluaXRpYWxpemF0aW9uIGlzIGNvbXBsZXRlXG4gICAgICovXG4gICAgYXN5bmMgaW5pdGlhbGl6ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmFkYXB0ZXIpXG4gICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgTm8gYWRhcHRlciBvciBjb25maWcgb2JzZXJ2ZWQgZm9yIGRpc3BhdGNoYCk7XG4gICAgICAgIGNvbnN0IHN5bnRoZXRpY0V2ZW50cyA9IHRoaXMuYWRhcHRlci5jb25maWcuc3ludGhldGljRXZlbnRzICE9PSBmYWxzZTtcbiAgICAgICAgaWYgKCFzeW50aGV0aWNFdmVudHMpIHtcbiAgICAgICAgICAgIC8vIEdhdGV3YXktYmFzZWQgY2hhaW5jb2RlLWV2ZW50IHN1YnNjcmlwdGlvbiAobm9uLXN5bnRoZXRpYyBwYXRoKVxuICAgICAgICAgICAgY29uc3QgY29udGV4dCA9IGF3YWl0IHRoaXMuYWRhcHRlci5jb250ZXh0KFwiZGlzcGF0Y2hcIiwge1xuICAgICAgICAgICAgICAgIGNvcnJlbGF0aW9uSWQ6IHRoaXMuYWRhcHRlci5jb25maWcuY2hhaW5jb2RlTmFtZSxcbiAgICAgICAgICAgIH0sIE1vZGVsKTtcbiAgICAgICAgICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLmxvZ0N0eChbY29udGV4dF0sIHRoaXMuaW5pdGlhbGl6ZSk7XG4gICAgICAgICAgICBjb25zdCBnYXRld2F5ID0gYXdhaXQgRmFicmljQ2xpZW50QWRhcHRlci5nZXRHYXRld2F5KGN0eCwgdGhpcy5hZGFwdGVyLmNvbmZpZywgdGhpcy5jbGllbnQpO1xuICAgICAgICAgICAgY29uc3QgbmV0d29yayA9IGdhdGV3YXkuZ2V0TmV0d29yayh0aGlzLmFkYXB0ZXIuY29uZmlnLmNoYW5uZWwpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmFkYXB0ZXIpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYE5vIGFkYXB0ZXIgb2JzZXJ2ZWQgZm9yIGRpc3BhdGNoYCk7XG4gICAgICAgICAgICB0aGlzLmxpc3RlbmluZ1N0YWNrID0gYXdhaXQgbmV0d29yay5nZXRDaGFpbmNvZGVFdmVudHModGhpcy5hZGFwdGVyLmNvbmZpZy5jaGFpbmNvZGVOYW1lKTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXZlbnRzKGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUHJveHkgQ1JVRCBtZXRob2RzLlxuICAgICAgICAvLyDigKIgc3ludGhldGljRXZlbnRzID0gdHJ1ZSAg4oaSIG5vdGlmeSBmb3IgQUxMIG1vZGVscyAocmVwbGFjZXMgZ2F0ZXdheSBldmVudHMgZW50aXJlbHkpXG4gICAgICAgIC8vIOKAoiBzeW50aGV0aWNFdmVudHMgPSBmYWxzZSDihpIgbm90aWZ5IG9ubHkgZm9yIGZ1bGx5LXNlZ3JlZ2F0ZWQgKHRyYW5zaWVudCkgbW9kZWxzXG4gICAgICAgIC8vICAgKHRoZSBnYXRld2F5IHN1YnNjcmlwdGlvbiBoYW5kbGVzIHB1YmxpYyBtb2RlbHMpXG4gICAgICAgIFtcbiAgICAgICAgICAgIE9wZXJhdGlvbktleXMuQ1JFQVRFLFxuICAgICAgICAgICAgT3BlcmF0aW9uS2V5cy5VUERBVEUsXG4gICAgICAgICAgICBPcGVyYXRpb25LZXlzLkRFTEVURSxcbiAgICAgICAgICAgIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cy5DUkVBVEVfQUxMLFxuICAgICAgICAgICAgQnVsa0NydWRPcGVyYXRpb25LZXlzLlVQREFURV9BTEwsXG4gICAgICAgICAgICBCdWxrQ3J1ZE9wZXJhdGlvbktleXMuREVMRVRFX0FMTCxcbiAgICAgICAgXS5mb3JFYWNoKCh0b1dyYXApID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5hZGFwdGVyKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBObyBhZGFwdGVyIHByb3ZpZGVkIGZvciB0aGUgZmFsbGJhY2sgb2YgZnVsbHkgc2VncmVnYXRlZCBtb2RlbHNgKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5hZGFwdGVyW3RvV3JhcF0pXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYE1ldGhvZCAke3RvV3JhcH0gbm90IGZvdW5kIGluICR7dGhpcy5hZGFwdGVyLmFsaWFzfSBhZGFwdGVyIHRvIGJpbmQgT2JzZXJ2YWJsZXMgRGlzcGF0Y2hgKTtcbiAgICAgICAgICAgIGxldCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLmFkYXB0ZXIsIHRvV3JhcCk7XG4gICAgICAgICAgICBsZXQgcHJvdG8gPSB0aGlzLmFkYXB0ZXI7XG4gICAgICAgICAgICB3aGlsZSAoIWRlc2NyaXB0b3IgJiYgcHJvdG8gIT09IE9iamVjdC5wcm90b3R5cGUpIHtcbiAgICAgICAgICAgICAgICBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90byk7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIHRvV3JhcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWRlc2NyaXB0b3IgfHwgIWRlc2NyaXB0b3Iud3JpdGFibGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZy5lcnJvcihgQ291bGQgbm90IGZpbmQgbWV0aG9kICR7dG9XcmFwfSB0byBiaW5kIE9ic2VydmFibGVzIERpc3BhdGNoYCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gYnVsa1RvU2luZ2xlKG1ldGhvZCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAobWV0aG9kKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgQnVsa0NydWRPcGVyYXRpb25LZXlzLkNSRUFURV9BTEw6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmF0aW9uS2V5cy5DUkVBVEU7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgQnVsa0NydWRPcGVyYXRpb25LZXlzLlVQREFURV9BTEw6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmF0aW9uS2V5cy5VUERBVEU7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgQnVsa0NydWRPcGVyYXRpb25LZXlzLkRFTEVURV9BTEw6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmF0aW9uS2V5cy5ERUxFVEU7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWV0aG9kO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYmVjYXVzZSB0aGVyZSBhcmUgcmVhZCBvbmx5IHByb3BlcnRpZXNcbiAgICAgICAgICAgIHRoaXMuYWRhcHRlclt0b1dyYXBdID0gbmV3IFByb3h5KHRoaXMuYWRhcHRlclt0b1dyYXBdLCB7XG4gICAgICAgICAgICAgICAgYXBwbHk6IGFzeW5jICh0YXJnZXQsIHRoaXNBcmcsIGFyZ0FycmF5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFJ1biB0aGUgb3JpZ2luYWwgbWV0aG9kIHVuY2hhbmdlZCBzbyB0cmFuc2llbnQgZGF0YSBpcyBwcmVzZXJ2ZWRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGFyZ2V0LmFwcGx5KHRoaXNBcmcsIGFyZ0FycmF5KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xhenogPSBhcmdBcnJheVswXTtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiBzeW50aGV0aWNFdmVudHMgaXMgZmFsc2UsIHB1YmxpYyBtb2RlbHMgZW1pdCBhIGNoYWluY29kZSBldmVudFxuICAgICAgICAgICAgICAgICAgICAvLyBvbiB0aGUgY29udHJhY3Qgc2lkZTsgc2tpcCB0aGUgbG9jYWwgZmFsbGJhY2sgdG8gYXZvaWRcbiAgICAgICAgICAgICAgICAgICAgLy8gZG91YmxlLW5vdGlmaWNhdGlvbi4gV2hlbiBzeW50aGV0aWNFdmVudHMgaXMgdHJ1ZSB3ZSBoYW5kbGUgYWxsIG1vZGVscy5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzeW50aGV0aWNFdmVudHMgJiYgIU1vZGVsLmlzVHJhbnNpZW50KGNsYXp6KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgIC8vIENvbnRleHQgaXMgYWx3YXlzIHRoZSBsYXN0IGVsZW1lbnQgb2YgYXJnQXJyYXlcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBsb2csIGN0eEFyZ3MsIGN0eCB9ID0gdGhpc0FyZ1tcImxvZ0N0eFwiXShhcmdBcnJheS5zbGljZShhcmdBcnJheS5sZW5ndGggLSAxKSwgdGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWRzID0gYXJnQXJyYXlbMV07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdEFyZ3MgPSBbY2xhenosIGJ1bGtUb1NpbmdsZSh0b1dyYXApLCBpZHNdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3R4LmdldE9yVW5kZWZpbmVkKFwib2JzZXJ2ZUZ1bGxSZXN1bHRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFyZ3MucHVzaChyZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlT2JzZXJ2ZXJzKHJlc3VsdEFyZ3NbMF0sIHJlc3VsdEFyZ3NbMV0sIHJlc3VsdEFyZ3NbMl0sIC4uLnJlc3VsdEFyZ3Muc2xpY2UoMyksIC4uLmN0eEFyZ3MpLmNhdGNoKChlKSA9PiBsb2cuZXJyb3IoYEZhaWxlZCB0byBkaXNwYXRjaCBvYnNlcnZlciByZWZyZXNoIGZvciAke3RvV3JhcH0gb24gJHtjbGF6ei5uYW1lIHx8IGNsYXp6fSBmb3IgJHtpZHN9OiAke2V9YCkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuaWYgKEZhYnJpY0NsaWVudEFkYXB0ZXIpXG4gICAgRmFicmljQ2xpZW50QWRhcHRlcltcIl9iYXNlRGlzcGF0Y2hcIl0gPSBGYWJyaWNDbGllbnREaXNwYXRjaDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVJtRmljbWxqUTJ4cFpXNTBSR2x6Y0dGMFkyZ3Vhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk5emNtTXZZMnhwWlc1MEwwWmhZbkpwWTBOc2FXVnVkRVJwYzNCaGRHTm9MblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxFOUJRVThzUlVGRFRDeFBRVUZQTEVWQlJWQXNVVUZCVVN4RlFVVlNMR2RDUVVGblFpeEZRVWRvUWl4bFFVRmxMRWRCUTJoQ0xFMUJRVTBzWjBKQlFXZENMRU5CUVVNN1FVRkhlRUlzVDBGQlR5eEZRVUZGTEcxQ1FVRnRRaXhGUVVGRkxHbERRVUU0UWp0QlFVTTFSQ3hQUVVGUExFVkJRMHdzY1VKQlFYRkNMRVZCUTNKQ0xHRkJRV0VzUlVGRFlpeGhRVUZoTEVkQlEyUXNUVUZCVFN4NVFrRkJlVUlzUTBGQlF6dEJRVXRxUXl4UFFVRlBMRVZCUVVVc1kwRkJZeXhGUVVGRkxEaENRVUY1UWp0QlFVTnNSQ3hQUVVGUExFVkJRVVVzUzBGQlN5eEZRVUZGTEUxQlFVMHNaME5CUVdkRExFTkJRVU03UVVGSmRrUTdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPMGRCSzBOSE8wRkJRMGdzVFVGQlRTeFBRVUZQTEc5Q1FVRnhRaXhUUVVGUkxGRkJRVFpDTzBsQlYzSkZPenM3TzA5QlNVYzdTVUZEU0N4WlFVRnpRaXhOUVVGak8xRkJRMnhETEV0QlFVc3NSVUZCUlN4RFFVRkRPMUZCUkZrc1YwRkJUU3hIUVVGT0xFMUJRVTBzUTBGQlVUdFJRVlp3UXpzN1YwRkZSenRSUVVOTExGbEJRVThzUjBGQlJ5eEpRVUZKTEZkQlFWY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVZNeFF5eERRVUZETzBsQlJVUTdPenM3VDBGSlJ6dEpRVU5OTEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUTJ4Q0xFZEJRVWNzVDBGQmJVUTdVVUZGZEVRc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeFBRVUZQTEVWQlFVVXNWVUZCVlN4RlFVRkZMRWRCUVVjc1EwRkRia01zVFVGQlRTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1JVRkJSU3hsUVVGbExFTkJRVU1zVVVGQlVTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVTXpSQ3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkRiRUlzU1VGQlNTeERRVUZETzFsQlEwZ3NUVUZCVFN4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzVlVGQlZTeERRVUZETEVOQlFVTTdVVUZEYmtNc1EwRkJRenRSUVVGRExFOUJRVThzUTBGQlZTeEZRVUZGTEVOQlFVTTdXVUZEY0VJc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5d3JRMEZCSzBNc1JVRkJSU3hEUVVGVkxFTkJRVU1zUTBGQlF6dFJRVU42UlN4RFFVRkRPMUZCUTBRc1NVRkJTU3hKUVVGSkxFTkJRVU1zWTBGQll5eEZRVUZGTEVOQlFVTTdXVUZEZUVJc1NVRkJTU3hEUVVGRE8yZENRVU5JTEUxQlFVMHNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dFpRVU53UXl4RFFVRkRPMWxCUVVNc1QwRkJUeXhEUVVGVkxFVkJRVVVzUTBGQlF6dG5Ra0ZEY0VJc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eDFRMEZCZFVNc1JVRkJSU3hEUVVGVkxFTkJRVU1zUTBGQlF6dFpRVU5xUlN4RFFVRkRPMjlDUVVGVExFTkJRVU03WjBKQlExUXNTVUZCU1N4RFFVRkRMR05CUVdNc1IwRkJSeXhUUVVGVExFTkJRVU03V1VGRGJFTXNRMEZCUXp0UlFVTklMRU5CUVVNN1NVRkRTQ3hEUVVGRE8wbEJSVVE3T3pzN08wOUJTMGM3U1VGRFN5eFpRVUZaTEVOQlFVTXNVMEZCY1VJN1VVRkRlRU1zVFVGQlRTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTTdVVUZETlVNc1QwRkJUeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUXpGQ0xFTkJRVU03U1VGRlJEczdPenM3VDBGTFJ6dEpRVU5OTEU5QlFVOHNRMEZCUXl4UlFVRnhRenRSUVVOd1JDeEpRVUZKTEVOQlFVTXNRMEZCUXl4UlFVRlJMRmxCUVZrc2JVSkJRVzFDTEVOQlFVTTdXVUZETlVNc1RVRkJUU3hKUVVGSkxHZENRVUZuUWl4RFFVTjRRaXh6UkVGQmMwUXNRMEZEZGtRc1EwRkJRenRSUVVOS0xFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNVVUZCSzBJc1EwRkJReXhEUVVGRE8xRkJReTlETEU5QlFVOHNSMEZCUnl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0SlFVTjRReXhEUVVGRE8wbEJSVVE3T3pzN096czdUMEZQUnp0SlFVTk5MRXRCUVVzc1EwRkJReXhsUVVGbExFTkJRelZDTEV0QlFXZERMRVZCUTJoRExFdEJRWEZFTEVWQlEzSkVMRVZCUVZrc1JVRkRXaXhIUVVGSExFbEJRV2RFTzFGQlJXNUVMRTFCUVUwc1JVRkJSU3hIUVVGSExFVkJRVVVzVDBGQlR5eEZRVUZGTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkRja01zU1VGQlNTeERRVUZETEdWQlFXVXNSVUZEY0VJc1MwRkJTeXhGUVVOTUxFdEJRVXNzUlVGRFRDeEhRVUZITEVsQlFVa3NRMEZEVWl4RFFVRkRPMUZCUTBZc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0WlFVTnNRaXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVU5VTEd0RlFVRnJSU3hQUVVGUExFdEJRVXNzUzBGQlN5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hMUVVGTExFVkJRVVVzUTBGRGVFa3NRMEZCUXp0WlFVTkdMRTlCUVU4N1VVRkRWQ3hEUVVGRE8xRkJRMFFzU1VGQlNTeERRVUZETzFsQlEwZ3NUVUZCVFN4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eExRVUZMTEVWQlFVVXNTMEZCU3l4RlFVRkZMRVZCUVVVc1JVRkJSU3hIUVVGSExFOUJRVThzUTBGQlF5eERRVUZETzFGQlF6TkVMRU5CUVVNN1VVRkJReXhQUVVGUExFTkJRVlVzUlVGQlJTeERRVUZETzFsQlEzQkNMRTFCUVUwc1NVRkJTU3hoUVVGaExFTkJRVU1zSzBKQlFTdENMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRE9VUXNRMEZCUXp0SlFVTklMRU5CUVVNN1NVRkZSRHM3T3pzN096czdPenM3T3pzN096czdPenM3VDBGdlFrYzdTVUZEVHl4TFFVRkxMRU5CUVVNc1dVRkJXU3hEUVVNeFFpeE5RVUZ0UXp0UlFVVnVReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTTdXVUZEZEVJc1RVRkJUU3hKUVVGSkxHRkJRV0VzUTBGRGNrSXNkVWRCUVhWSExFTkJRM2hITEVOQlFVTTdVVUZGU2l4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUVHRaUVVOMlF5eE5RVUZOTEVsQlFVa3NZVUZCWVN4RFFVRkRMSGREUVVGM1F5eERRVUZETEVOQlFVTTdVVUZGY0VVc1RVRkJUU3hIUVVGSExFZEJRMUFzVFVGQlRUdFpRVU5PTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGRGVrSXNZVUZCWVN4RFFVRkRMRWxCUVVrc1JVRkRiRUk3WjBKQlEwVXNZVUZCWVN4RlFVRkZMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETEdGQlFXRTdZVUZEYWtRc1JVRkRSQ3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZMTEV0QlFXZERMRU5CUTNKRkxFTkJRVU1zUTBGQlF6dFJRVU5NTEUxQlFVMHNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJRenRSUVVVMVF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVTk9MQ3REUVVFclF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhoUVVGaExHbENRVUZwUWl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEUxQlFVMHNRMEZEYmtrc1EwRkJRenRSUVVWR0xFbEJRVWtzUTBGQlF6dFpRVU5JTEVsQlFVa3NTMEZCU3l4RlFVRkZMRTFCUVUwc1IwRkJSeXhKUVVGSkxFbEJRVWtzUTBGQlF5eGpRVUZqTEVWQlFVVXNRMEZCUXp0blFrRkROVU1zVFVGQlRTeEZRVUZGTEV0QlFVc3NSVUZCUlN4TFFVRkxMRVZCUVVVc1MwRkJTeXhGUVVGRkxFZEJRVWNzWTBGQll5eERRVUZETEVkQlFVY3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRuUWtGRE9VUXNTVUZEUlN4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUlVGQlJTeFpRVUZaTzI5Q1FVTnFReXhMUVVGTE8yOUNRVU5NTEV0QlFVc3NTMEZCU3l4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUlVGQlJTeExRVUZMTzI5Q1FVVndReXhUUVVGVE8yZENRVU5ZTEUxQlFVMHNUMEZCVHl4SFFVRnBReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVU0zUkN4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVOYUxFTkJRVU03WjBKQlEwWXNTVUZCU1N4RFFVRkRPMjlDUVVOSUxFMUJRVTBzVjBGQlZ5eEhRVUZITEV0QlFVczdkMEpCUTNaQ0xFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJRenQzUWtGRGJFSXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dHZRa0ZEYmtNc1RVRkJUU3hSUVVGUkxFZEJRVWNzVjBGQlZ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN2IwSkJRMmhGTEUxQlFVMHNXVUZCV1N4SFFVRkhMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenR2UWtGRGNFVXNUVUZCVFN4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVONFFpeFJRVUZuUXl4RlFVTm9ReXhMUVVGTExFVkJRMHdzVDBGQlR5eERRVUZETEVWQlFWa3NSVUZEY0VJc1IwRkJTU3haUVVGdlF5eERRVU42UXl4RFFVRkRPMmRDUVVOS0xFTkJRVU03WjBKQlFVTXNUMEZCVHl4RFFVRlZMRVZCUVVVc1EwRkJRenR2UWtGRGNFSXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkRVQ3gxUTBGQmRVTXNTMEZCU3l4VlFVRlZMRXRCUVVzc1VVRkJVU3hQUVVGUExFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNSVUZCUlN4RFFVTjBSaXhEUVVGRE8yZENRVU5LTEVOQlFVTTdXVUZEU0N4RFFVRkRPMUZCUTBnc1EwRkJRenRSUVVGRExFOUJRVThzUTBGQlRTeEZRVUZGTEVOQlFVTTdXVUZEYUVJc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGRFVDeDFRMEZCZFVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNZVUZCWVN4cFFrRkJhVUlzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhOUVVGTkxFTkJRVU1zUlVGQlJTeERRVU01U0N4RFFVRkRPMWxCUTBZc1RVRkJUU3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTNoQ0xFTkJRVU03U1VGRFNDeERRVUZETzBsQlJVUTdPenM3T3pzN096dFBRVk5ITzBsQlEyZENMRXRCUVVzc1EwRkJReXhWUVVGVk8xRkJRMnBETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUenRaUVVObUxFMUJRVTBzU1VGQlNTeGhRVUZoTEVOQlFVTXNORU5CUVRSRExFTkJRVU1zUTBGQlF6dFJRVVY0UlN4TlFVRk5MR1ZCUVdVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXl4bFFVRmxMRXRCUVVzc1MwRkJTeXhEUVVGRE8xRkJSWFJGTEVsQlFVa3NRMEZCUXl4bFFVRmxMRVZCUVVVc1EwRkJRenRaUVVOeVFpeHJSVUZCYTBVN1dVRkRiRVVzVFVGQlRTeFBRVUZQTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGRGVFTXNWVUZCVlN4RlFVTldPMmRDUVVORkxHRkJRV0VzUlVGQlJTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhoUVVGaE8yRkJRMnBFTEVWQlEwUXNTMEZCV1N4RFFVTmlMRU5CUVVNN1dVRkRSaXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRaUVVONFJDeE5RVUZOTEU5QlFVOHNSMEZCUnl4TlFVRk5MRzFDUVVGdFFpeERRVUZETEZWQlFWVXNRMEZEYkVRc1IwRkJSeXhGUVVOSUxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCYjBJc1JVRkRha01zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZEV2l4RFFVRkRPMWxCUTBZc1RVRkJUU3hQUVVGUExFZEJRVWNzVDBGQlR5eERRVUZETEZWQlFWVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0WlFVTm9SU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVODdaMEpCUTJZc1RVRkJUU3hKUVVGSkxHRkJRV0VzUTBGQlF5eHJRMEZCYTBNc1EwRkJReXhEUVVGRE8xbEJRemxFTEVsQlFVa3NRMEZCUXl4alFVRmpMRWRCUVVjc1RVRkJUU3hQUVVGUExFTkJRVU1zYTBKQlFXdENMRU5CUTNCRUxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRMR0ZCUVdFc1EwRkRiRU1zUTBGQlF6dFpRVU5HTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGVrSXNRMEZCUXp0UlFVVkVMSE5DUVVGelFqdFJRVU4wUWl4MVJrRkJkVVk3VVVGRGRrWXNhMFpCUVd0R08xRkJRMnhHTEhGRVFVRnhSRHRSUVVWdVJEdFpRVU5GTEdGQlFXRXNRMEZCUXl4TlFVRk5PMWxCUTNCQ0xHRkJRV0VzUTBGQlF5eE5RVUZOTzFsQlEzQkNMR0ZCUVdFc1EwRkJReXhOUVVGTk8xbEJRM0JDTEhGQ1FVRnhRaXhEUVVGRExGVkJRVlU3V1VGRGFFTXNjVUpCUVhGQ0xFTkJRVU1zVlVGQlZUdFpRVU5vUXl4eFFrRkJjVUlzUTBGQlF5eFZRVUZWTzFOQlJXNURMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVTdXVUZEYmtJc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTzJkQ1FVTm1MRTFCUVUwc1NVRkJTU3hoUVVGaExFTkJRM0pDTEdsRlFVRnBSU3hEUVVOc1JTeERRVUZETzFsQlEwb3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETzJkQ1FVTjJRaXhOUVVGTkxFbEJRVWtzWVVGQllTeERRVU55UWl4VlFVRlZMRTFCUVUwc2FVSkJRV2xDTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1MwRkJTeXgxUTBGQmRVTXNRMEZETTBZc1EwRkJRenRaUVVWS0xFbEJRVWtzVlVGQlZTeEhRVUZITEUxQlFVMHNRMEZCUXl4M1FrRkJkMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRE8xbEJRM1pGTEVsQlFVa3NTMEZCU3l4SFFVRlJMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU03V1VGRE9VSXNUMEZCVHl4RFFVRkRMRlZCUVZVc1NVRkJTU3hMUVVGTExFdEJRVXNzVFVGQlRTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMmRDUVVOcVJDeExRVUZMTEVkQlFVY3NUVUZCVFN4RFFVRkRMR05CUVdNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dG5Ra0ZEY2tNc1ZVRkJWU3hIUVVGSExFMUJRVTBzUTBGQlF5eDNRa0ZCZDBJc1EwRkJReXhMUVVGTExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdXVUZET1VRc1EwRkJRenRaUVVWRUxFbEJRVWtzUTBGQlF5eFZRVUZWTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03WjBKQlEzaERMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVU5hTEhsQ1FVRjVRaXhOUVVGTkxDdENRVUVyUWl4RFFVTXZSQ3hEUVVGRE8yZENRVU5HTEU5QlFVODdXVUZEVkN4RFFVRkRPMWxCUTBRc1UwRkJVeXhaUVVGWkxFTkJRVU1zVFVGQll6dG5Ra0ZEYkVNc1VVRkJVU3hOUVVGTkxFVkJRVVVzUTBGQlF6dHZRa0ZEWml4TFFVRkxMSEZDUVVGeFFpeERRVUZETEZWQlFWVTdkMEpCUTI1RExFOUJRVThzWVVGQllTeERRVUZETEUxQlFVMHNRMEZCUXp0dlFrRkRPVUlzUzBGQlN5eHhRa0ZCY1VJc1EwRkJReXhWUVVGVk8zZENRVU51UXl4UFFVRlBMR0ZCUVdFc1EwRkJReXhOUVVGTkxFTkJRVU03YjBKQlF6bENMRXRCUVVzc2NVSkJRWEZDTEVOQlFVTXNWVUZCVlR0M1FrRkRia01zVDBGQlR5eGhRVUZoTEVOQlFVTXNUVUZCVFN4RFFVRkRPMjlDUVVNNVFqdDNRa0ZEUlN4UFFVRlBMRTFCUVUwc1EwRkJRenRuUWtGRGJFSXNRMEZCUXp0WlFVTklMRU5CUVVNN1dVRkZSQ3d3UkVGQk1FUTdXVUZETVVRc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZPMmRDUVVOeVJDeExRVUZMTEVWQlFVVXNTMEZCU3l4RlFVTldMRTFCUVZjc1JVRkRXQ3hQUVVFMFFpeEZRVU0xUWl4UlFVRmxMRVZCUTJZc1JVRkJSVHR2UWtGRFJpeHRSVUZCYlVVN2IwSkJRMjVGTEUxQlFVMHNUVUZCVFN4SFFVRkhMRTFCUVUwc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNN2IwSkJSWEpFTEUxQlFVMHNTMEZCU3l4SFFVRnhRaXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUXpWRExITkZRVUZ6UlR0dlFrRkRkRVVzZVVSQlFYbEVPMjlDUVVONlJDd3dSVUZCTUVVN2IwSkJRekZGTEVsQlFVa3NRMEZCUXl4bFFVRmxMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVjBGQlZ5eERRVUZETEV0QlFVc3NRMEZCUXp0M1FrRkJSU3hQUVVGUExFMUJRVTBzUTBGQlF6dHZRa0ZGYWtVc2FVUkJRV2xFTzI5Q1FVTnFSQ3hOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEU5QlFVOHNSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhQUVVGUExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlF6ZERMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlVTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkRia01zVFVGQlRTeERRVU5RTEVOQlFVTTdiMEpCUTBZc1RVRkJUU3hIUVVGSExFZEJRVWNzVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVONFFpeE5RVUZOTEZWQlFWVXNSMEZCVlN4RFFVRkRMRXRCUVVzc1JVRkJSU3haUVVGWkxFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN2IwSkJSVGRFTEVsQlFVa3NSMEZCUnl4RFFVRkRMR05CUVdNc1EwRkJReXh0UWtGQmJVSXNRMEZCUXl4RlFVRkZMRU5CUVVNN2QwSkJRelZETEZWQlFWVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03YjBKQlF6RkNMRU5CUVVNN2IwSkJRMFFzU1VGQlNTeERRVUZETEdWQlFXVXNRMEZEYkVJc1ZVRkJWU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVU5pTEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkRZaXhWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlEySXNSMEZCUnl4VlFVRlZMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVU4wUWl4SFFVRkpMRTlCUVhORUxFTkJRek5FTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJWU3hGUVVGRkxFVkJRVVVzUTBGRGNrSXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkRVQ3d5UTBGQk1rTXNUVUZCVFN4UFFVRlBMRXRCUVVzc1EwRkJReXhKUVVGSkxFbEJRVWtzUzBGQlN5eFJRVUZSTEVkQlFVY3NTMEZCU3l4RFFVRkRMRVZCUVVVc1EwRkRMMFlzUTBGRFJpeERRVUZETzI5Q1FVTkdMRTlCUVU4c1RVRkJUU3hEUVVGRE8yZENRVU5vUWl4RFFVRkRPMkZCUTBZc1EwRkJReXhEUVVGRE8xRkJRMHdzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEVEN4RFFVRkRPME5CUTBZN1FVRkZSQ3hKUVVGSkxHMUNRVUZ0UWp0SlFVTnlRaXh0UWtGQmJVSXNRMEZCUXl4bFFVRmxMRU5CUVVNc1IwRkJSeXh2UWtGQmIwSXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN1hHNGdJRUZrWVhCMFpYSXNYRzRnSUVOdmJuUmxlSFIxWVd4QmNtZHpMRnh1SUNCRWFYTndZWFJqYUN4Y2JpQWdSWFpsYm5SSlpITXNYRzRnSUZWdWMzVndjRzl5ZEdWa1JYSnliM0lzWEc0Z0lFTnZiblJsZUhRc1hHNGdJRTFoZVdKbFEyOXVkR1Y0ZEhWaGJFRnlaeXhjYmlBZ1VHVnljMmx6ZEdWdVkyVkxaWGx6TEZ4dWZTQm1jbTl0SUZ3aVFHUmxZMkZtTFhSekwyTnZjbVZjSWp0Y2JtbHRjRzl5ZENCN0lGQmxaWEpEYjI1bWFXY2dmU0JtY205dElGd2lMaTR2YzJoaGNtVmtMM1I1Y0dWelhDSTdYRzVwYlhCdmNuUWdleUJEYkdsbGJuUWdmU0JtY205dElGd2lRR2R5Y0dNdlozSndZeTFxYzF3aU8xeHVhVzF3YjNKMElIc2dSbUZpY21salEyeHBaVzUwUVdSaGNIUmxjaUI5SUdaeWIyMGdYQ0l1TDBaaFluSnBZME5zYVdWdWRFRmtZWEIwWlhKY0lqdGNibWx0Y0c5eWRDQjdYRzRnSUVKMWJHdERjblZrVDNCbGNtRjBhVzl1UzJWNWN5eGNiaUFnU1c1MFpYSnVZV3hGY25KdmNpeGNiaUFnVDNCbGNtRjBhVzl1UzJWNWN5eGNibjBnWm5KdmJTQmNJa0JrWldOaFppMTBjeTlrWWkxa1pXTnZjbUYwYjNKelhDSTdYRzVwYlhCdmNuUWdlMXh1SUNCRGFHRnBibU52WkdWRmRtVnVkQ3hjYmlBZ1EyeHZjMlZoWW14bFFYTjVibU5KZEdWeVlXSnNaU3hjYm4wZ1puSnZiU0JjSWtCb2VYQmxjbXhsWkdkbGNpOW1ZV0p5YVdNdFoyRjBaWGRoZVZ3aU8xeHVhVzF3YjNKMElIc2djR0Z5YzJWRmRtVnVkRTVoYldVZ2ZTQm1jbTl0SUZ3aUxpNHZjMmhoY21Wa0wyVjJaVzUwYzF3aU8xeHVhVzF3YjNKMElIc2dUVzlrWld3Z2ZTQm1jbTl0SUZ3aVFHUmxZMkZtTFhSekwyUmxZMjl5WVhSdmNpMTJZV3hwWkdGMGFXOXVYQ0k3WEc1cGJYQnZjblFnZXlCRGIyNXpkSEoxWTNSdmNpQjlJR1p5YjIwZ1hDSkFaR1ZqWVdZdGRITXZaR1ZqYjNKaGRHbHZibHdpTzF4dWFXMXdiM0owSUhzZ1JtRmljbWxqUTJ4cFpXNTBSbXhoWjNNZ2ZTQm1jbTl0SUZ3aUxpOTBlWEJsYzF3aU8xeHVYRzR2S2lwY2JpQXFJRUJrWlhOamNtbHdkR2x2YmlCRmRtVnVkQ0JrYVhOd1lYUmphR1Z5SUdadmNpQkllWEJsY214bFpHZGxjaUJHWVdKeWFXTWdZMmhoYVc1amIyUmxJR1YyWlc1MGMxeHVJQ29nUUhOMWJXMWhjbmtnVEdsemRHVnVjeUJtYjNJZ1lXNWtJSEJ5YjJObGMzTmxjeUJsZG1WdWRITWdaVzFwZEhSbFpDQmllU0JHWVdKeWFXTWdZMmhoYVc1amIyUmxMQ0JrYVhOd1lYUmphR2x1WnlCMGFHVnRJSFJ2SUhKbFoybHpkR1Z5WldRZ2IySnpaWEoyWlhKelhHNGdLaUJBZEdWdGNHeGhkR1VnVUdWbGNrTnZibVpwWnlBdElFTnZibVpwWjNWeVlYUnBiMjRnZEhsd1pTQm1iM0lnWTI5dWJtVmpkR2x1WnlCMGJ5QmhJRVpoWW5KcFl5QndaV1Z5WEc0Z0tpQkFjR0Z5WVcwZ1kyeHBaVzUwSUMwZ1oxSlFReUJqYkdsbGJuUWdabTl5SUdOdmJtNWxZM1JwYm1jZ2RHOGdkR2hsSUVaaFluSnBZeUJ1WlhSM2IzSnJYRzRnS2lCQVkyeGhjM01nUm1GaWNtbGpRMnhwWlc1MFJHbHpjR0YwWTJoY2JpQXFJRUJsZUdGdGNHeGxYRzRnS2lCZ1lHQjBlWEJsYzJOeWFYQjBYRzRnS2lBdkx5QkRjbVZoZEdVZ1lTQnVaWGNnUm1GaWNtbGpSR2x6Y0dGMFkyZ2dhVzV6ZEdGdVkyVmNiaUFxSUdOdmJuTjBJR05zYVdWdWRDQTlJR0YzWVdsMElFWmhZbkpwWTBGa1lYQjBaWEl1WjJWMFEyeHBaVzUwS0hCbFpYSkRiMjVtYVdjcE8xeHVJQ29nWTI5dWMzUWdaR2x6Y0dGMFkyZ2dQU0J1WlhjZ1JtRmljbWxqUkdsemNHRjBZMmdvWTJ4cFpXNTBLVHRjYmlBcVhHNGdLaUF2THlCRGIyNW1hV2QxY21VZ2RHaGxJR1JwYzNCaGRHTm9JSGRwZEdnZ2NHVmxjaUJqYjI1bWFXZDFjbUYwYVc5dVhHNGdLaUJrYVhOd1lYUmphQzVqYjI1bWFXZDFjbVVvY0dWbGNrTnZibVpwWnlrN1hHNGdLbHh1SUNvZ0x5OGdVbVZuYVhOMFpYSWdZVzRnYjJKelpYSjJaWElnWm05eUlHRWdjM0JsWTJsbWFXTWdkR0ZpYkdVZ1lXNWtJR1YyWlc1MFhHNGdLaUJrYVhOd1lYUmphQzV2WW5ObGNuWmxLQ2QxYzJWeWN5Y3NJQ2RqY21WaGRHVW5MQ0FvYVdRcElEMCtJSHRjYmlBcUlDQWdZMjl1YzI5c1pTNXNiMmNvWUZWelpYSWdZM0psWVhSbFpEb2dKSHRwWkgxZ0tUdGNiaUFxSUgwcE8xeHVJQ3BjYmlBcUlDOHZJRk4wWVhKMElHeHBjM1JsYm1sdVp5Qm1iM0lnWlhabGJuUnpYRzRnS2lCaGQyRnBkQ0JrYVhOd1lYUmphQzV6ZEdGeWRDZ3BPMXh1SUNvZ1lHQmdYRzRnS2lCQWJXVnliV0ZwWkZ4dUlDb2djMlZ4ZFdWdVkyVkVhV0ZuY21GdFhHNGdLaUFnSUhCaGNuUnBZMmx3WVc1MElFTnNhV1Z1ZEZ4dUlDb2dJQ0J3WVhKMGFXTnBjR0Z1ZENCR1lXSnlhV05FYVhOd1lYUmphRnh1SUNvZ0lDQndZWEowYVdOcGNHRnVkQ0JIWVhSbGQyRjVYRzRnS2lBZ0lIQmhjblJwWTJsd1lXNTBJRTVsZEhkdmNtdGNiaUFxSUNBZ2NHRnlkR2xqYVhCaGJuUWdRMmhoYVc1amIyUmxYRzRnS2x4dUlDb2dJQ0JEYkdsbGJuUXRQajVHWVdKeWFXTkVhWE53WVhSamFEb2dibVYzSUVaaFluSnBZMFJwYzNCaGRHTm9LR05zYVdWdWRDbGNiaUFxSUNBZ1EyeHBaVzUwTFQ0K1JtRmljbWxqUkdsemNHRjBZMmc2SUdOdmJtWnBaM1Z5WlNod1pXVnlRMjl1Wm1sbktWeHVJQ29nSUNCRGJHbGxiblF0UGo1R1lXSnlhV05FYVhOd1lYUmphRG9nYjJKelpYSjJaU2gwWVdKc1pTd2daWFpsYm5Rc0lHTmhiR3hpWVdOcktWeHVJQ29nSUNCRGJHbGxiblF0UGo1R1lXSnlhV05FYVhOd1lYUmphRG9nYzNSaGNuUW9LVnh1SUNvZ0lDQkdZV0p5YVdORWFYTndZWFJqYUMwK1BrWmhZbkpwWTBScGMzQmhkR05vT2lCcGJtbDBhV0ZzYVhwbEtDbGNiaUFxSUNBZ1JtRmljbWxqUkdsemNHRjBZMmd0UGo1SFlYUmxkMkY1T2lCblpYUkhZWFJsZDJGNUtHTnZibVpwWnl3Z1kyeHBaVzUwS1Z4dUlDb2dJQ0JIWVhSbGQyRjVMVDQrVG1WMGQyOXlhem9nWjJWMFRtVjBkMjl5YXloamFHRnVibVZzS1Z4dUlDb2dJQ0JPWlhSM2IzSnJMVDQrVG1WMGQyOXlhem9nWjJWMFEyaGhhVzVqYjJSbFJYWmxiblJ6S0dOb1lXbHVZMjlrWlU1aGJXVXBYRzRnS2lBZ0lFWmhZbkpwWTBScGMzQmhkR05vTFQ0K1JtRmljbWxqUkdsemNHRjBZMmc2SUdoaGJtUnNaVVYyWlc1MGN5Z3BYRzRnS2lBZ0lHeHZiM0FnUm05eUlHVmhZMmdnWlhabGJuUmNiaUFxSUNBZ0lDQkRhR0ZwYm1OdlpHVXRMVDQrUm1GaWNtbGpSR2x6Y0dGMFkyZzZJRU5vWVdsdVkyOWtaVVYyWlc1MFhHNGdLaUFnSUNBZ1JtRmljbWxqUkdsemNHRjBZMmd0UGo1R1lXSnlhV05FYVhOd1lYUmphRG9nY0dGeWMyVkZkbVZ1ZEU1aGJXVW9aWFpsYm5ST1lXMWxLVnh1SUNvZ0lDQWdJRVpoWW5KcFkwUnBjM0JoZEdOb0xUNCtSbUZpY21salJHbHpjR0YwWTJnNklIQmhjbk5sVUdGNWJHOWhaQ2h3WVhsc2IyRmtLVnh1SUNvZ0lDQWdJRVpoWW5KcFkwUnBjM0JoZEdOb0xUNCtSbUZpY21salJHbHpjR0YwWTJnNklIVndaR0YwWlU5aWMyVnlkbVZ5Y3loMFlXSnNaU3dnWlhabGJuUXNJR2xrS1Z4dUlDb2dJQ0FnSUVaaFluSnBZMFJwYzNCaGRHTm9MUzArUGtOc2FXVnVkRG9nWTJGc2JHSmhZMnNvYVdRcFhHNGdLaUFnSUdWdVpGeHVJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdSbUZpY21salEyeHBaVzUwUkdsemNHRjBZMmdnWlhoMFpXNWtjeUJFYVhOd1lYUmphRHhHWVdKeWFXTkRiR2xsYm5SQlpHRndkR1Z5UGlCN1hHNGdJQzhxS2x4dUlDQWdLaUJBWkdWelkzSnBjSFJwYjI0Z1JYWmxiblFnYkdsemRHVnVhVzVuSUhOMFlXTnJJR1p2Y2lCamFHRnBibU52WkdVZ1pYWmxiblJ6WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUd4cGMzUmxibWx1WjFOMFlXTnJQem9nUTJ4dmMyVmhZbXhsUVhONWJtTkpkR1Z5WVdKc1pUeERhR0ZwYm1OdlpHVkZkbVZ1ZEQ0N1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCa1pYTmpjbWx3ZEdsdmJpQlVaWGgwSUdSbFkyOWtaWElnWm05eUlHTnZiblpsY25ScGJtY2daWFpsYm5RZ2NHRjViRzloWkhNZ1puSnZiU0JpZVhSbGN5QjBieUJ6ZEhKcGJtZHpYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJR1JsWTI5a1pYSWdQU0J1WlhjZ1ZHVjRkRVJsWTI5a1pYSW9YQ0oxZEdZNFhDSXBPMXh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjRnUTNKbFlYUmxjeUJoSUc1bGR5QkdZV0p5YVdORWFYTndZWFJqYUNCcGJuTjBZVzVqWlZ4dUlDQWdLaUJBYzNWdGJXRnllU0JKYm1sMGFXRnNhWHBsY3lCaElHUnBjM0JoZEdOb1pYSWdabTl5SUVaaFluSnBZeUJqYUdGcGJtTnZaR1VnWlhabGJuUnpYRzRnSUNBcUlFQndZWEpoYlNCN1EyeHBaVzUwZlNCamJHbGxiblFnTFNCblVsQkRJR05zYVdWdWRDQm1iM0lnWTI5dWJtVmpkR2x1WnlCMGJ5QjBhR1VnUm1GaWNtbGpJRzVsZEhkdmNtdGNiaUFnSUNvdlhHNGdJR052Ym5OMGNuVmpkRzl5S0hCeWIzUmxZM1JsWkNCamJHbGxiblE2SUVOc2FXVnVkQ2tnZTF4dUlDQWdJSE4xY0dWeUtDazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dUlFTnNiM05sY3lCMGFHVWdaWFpsYm5RZ2JHbHpkR1Z1YVc1bklHTnZibTVsWTNScGIyNWNiaUFnSUNvZ1FITjFiVzFoY25rZ1UzUnZjSE1nYkdsemRHVnVhVzVuSUdadmNpQmphR0ZwYm1OdlpHVWdaWFpsYm5SeklHRnVaQ0J5Wld4bFlYTmxjeUJ5WlhOdmRYSmpaWE5jYmlBZ0lDb2dRSEpsZEhWeWJpQjdVSEp2YldselpUeDJiMmxrUG4wZ1VISnZiV2x6WlNCMGFHRjBJSEpsYzI5c2RtVnpJSGRvWlc0Z2RHaGxJR052Ym01bFkzUnBiMjRnYVhNZ1kyeHZjMlZrWEc0Z0lDQXFMMXh1SUNCdmRtVnljbWxrWlNCaGMzbHVZeUJqYkc5elpTaGNiaUFnSUNBdUxpNWpkSGhCY21kek9pQkRiMjUwWlhoMGRXRnNRWEpuY3p4RGIyNTBaWGgwUEVaaFluSnBZME5zYVdWdWRFWnNZV2R6UGo1Y2JpQWdLVG9nVUhKdmJXbHpaVHgyYjJsa1BpQjdYRzRnSUNBZ1kyOXVjM1FnZXlCc2IyY3NJR04wZUVGeVozTTZJR3h2WjJkbFpFRnlaM01nZlNBOUlDaGNiaUFnSUNBZ0lHRjNZV2wwSUhSb2FYTXViRzluUTNSNEtHTjBlRUZ5WjNNc0lGQmxjbk5wYzNSbGJtTmxTMlY1Y3k1VFNGVlVSRTlYVGl3Z2RISjFaU2xjYmlBZ0lDQXBMbVp2Y2loMGFHbHpMbU5zYjNObEtUdGNiaUFnSUNCMGNua2dlMXh1SUNBZ0lDQWdZWGRoYVhRZ2MzVndaWEl1WTJ4dmMyVW9MaTR1Ykc5bloyVmtRWEpuY3lrN1hHNGdJQ0FnZlNCallYUmphQ0FvWlRvZ2RXNXJibTkzYmlrZ2UxeHVJQ0FnSUNBZ2JHOW5MbVZ5Y205eUtHQkdZV2xzWldRZ2RHOGdZMnh2YzJVZ1JtRmljbWxqSUhCeWIzaHBaWE1nWlhabGJuUWdiR2x6ZEdWdVpYSmdMQ0JsSUdGeklFVnljbTl5S1R0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0hSb2FYTXViR2x6ZEdWdWFXNW5VM1JoWTJzcElIdGNiaUFnSUNBZ0lIUnllU0I3WEc0Z0lDQWdJQ0FnSUdGM1lXbDBJSFJvYVhNdWJHbHpkR1Z1YVc1blUzUmhZMnN1WTJ4dmMyVW9LVHRjYmlBZ0lDQWdJSDBnWTJGMFkyZ2dLR1U2SUhWdWEyNXZkMjRwSUh0Y2JpQWdJQ0FnSUNBZ2JHOW5MbVZ5Y205eUtHQkdZV2xzWldRZ2RHOGdZMnh2YzJVZ1JtRmljbWxqSUdWMlpXNTBJR3hwYzNSbGJtVnlZQ3dnWlNCaGN5QkZjbkp2Y2lrN1hHNGdJQ0FnSUNCOUlHWnBibUZzYkhrZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TG14cGMzUmxibWx1WjFOMFlXTnJJRDBnZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCQVpHVnpZM0pwY0hScGIyNGdVR0Z5YzJWeklHVjJaVzUwSUhCaGVXeHZZV1FnWm5KdmJTQmlhVzVoY25rZ1ptOXliV0YwWEc0Z0lDQXFJRUJ6ZFcxdFlYSjVJRU52Ym5abGNuUnpJR0VnVldsdWREaEJjbkpoZVNCamIyNTBZV2x1YVc1bklFcFRUMDRnZEc4Z1lXNGdiMkpxWldOMElIZHBkR2dnWVc0Z2FXUWdjSEp2Y0dWeWRIbGNiaUFnSUNvZ1FIQmhjbUZ0SUh0VmFXNTBPRUZ5Y21GNWZTQnFjMjl1UW5sMFpYTWdMU0JVYUdVZ1ltbHVZWEo1SUhCaGVXeHZZV1FnWm5KdmJTQjBhR1VnWTJoaGFXNWpiMlJsSUdWMlpXNTBYRzRnSUNBcUlFQnlaWFIxY200Z2Uzc2dhV1E2SUhOMGNtbHVaeUI5ZlNCVWFHVWdjR0Z5YzJWa0lIQmhlV3h2WVdRZ1kyOXVkR0ZwYm1sdVp5QjBhR1VnY21WamIzSmtJRWxFWEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUhCaGNuTmxVR0Y1Ykc5aFpDaHFjMjl1UW5sMFpYTTZJRlZwYm5RNFFYSnlZWGtwT2lCN0lHbGtPaUJ6ZEhKcGJtYzdJSEpsYzNWc2REODZJR0Z1ZVNCOUlIdGNiaUFnSUNCamIyNXpkQ0JxYzI5dUlEMGdkR2hwY3k1a1pXTnZaR1Z5TG1SbFkyOWtaU2hxYzI5dVFubDBaWE1wTzF4dUlDQWdJSEpsZEhWeWJpQktVMDlPTG5CaGNuTmxLR3B6YjI0cE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRUJrWlhOamNtbHdkR2x2YmlCVGRHRnlkSE1nYjJKelpYSjJhVzVuSUdGdUlHRmtZWEIwWlhKY2JpQWdJQ29nUUhOMWJXMWhjbmtnUTI5dWJtVmpkSE1nZEdocGN5QmthWE53WVhSamFDQjBieUJoYmlCaFpHRndkR1Z5SUhSdklHMXZibWwwYjNJZ2FYUnpJRzl3WlhKaGRHbHZibk5jYmlBZ0lDb2dRSEJoY21GdElIdEJaR0Z3ZEdWeVBHRnVlU3dnWVc1NUxDQmhibmtzSUdGdWVUNTlJRzlpYzJWeWRtVnlJQzBnVkdobElHRmtZWEIwWlhJZ2RHOGdiMkp6WlhKMlpWeHVJQ0FnS2lCQWNtVjBkWEp1SUh0MmIybGtmVnh1SUNBZ0tpOWNiaUFnYjNabGNuSnBaR1VnYjJKelpYSjJaU2h2WW5ObGNuWmxjam9nUVdSaGNIUmxjanhoYm5rc0lHRnVlU3dnWVc1NUxDQmhibmsrS1RvZ0tDa2dQVDRnZG05cFpDQjdYRzRnSUNBZ2FXWWdLQ0VvYjJKelpYSjJaWElnYVc1emRHRnVZMlZ2WmlCR1lXSnlhV05EYkdsbGJuUkJaR0Z3ZEdWeUtTbGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QlZibk4xY0hCdmNuUmxaRVZ5Y205eUtGeHVJQ0FnSUNBZ0lDQmNJazl1YkhrZ1JtRmljbWxqUTJ4cFpXNTBRV1JoY0hSbGNpQmpZVzRnWW1VZ2IySnpaWEoyWldRZ1lua2daR2x6Y0dGMFkyaGNJbHh1SUNBZ0lDQWdLVHRjYmlBZ0lDQnpkWEJsY2k1dlluTmxjblpsS0c5aWMyVnlkbVZ5SUdGeklFWmhZbkpwWTBOc2FXVnVkRUZrWVhCMFpYSXBPMXh1SUNBZ0lISmxkSFZ5YmlBb0tTQTlQaUIwYUdsekxuVnVUMkp6WlhKMlpTaHZZbk5sY25abGNpazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUdSbGMyTnlhWEIwYVc5dUlGVndaR0YwWlhNZ2IySnpaWEoyWlhKeklHRmliM1YwSUdFZ1pHRjBZV0poYzJVZ1pYWmxiblJjYmlBZ0lDb2dRSE4xYlcxaGNua2dUbTkwYVdacFpYTWdiMkp6WlhKMlpYSnpJR0ZpYjNWMElHRWdZMmhoYm1kbElHbHVJSFJvWlNCa1lYUmhZbUZ6WlZ4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdkR0ZpYkdVZ0xTQlVhR1VnYm1GdFpTQnZaaUIwYUdVZ2RHRmliR1VnZDJobGNtVWdkR2hsSUdOb1lXNW5aU0J2WTJOMWNuSmxaRnh1SUNBZ0tpQkFjR0Z5WVcwZ2UwOXdaWEpoZEdsdmJrdGxlWE44UW5Wc2EwTnlkV1JQY0dWeVlYUnBiMjVMWlhsemZITjBjbWx1WjMwZ1pYWmxiblFnTFNCVWFHVWdkSGx3WlNCdlppQnZjR1Z5WVhScGIyNGdkR2hoZENCdlkyTjFjbkpsWkZ4dUlDQWdLaUJBY0dGeVlXMGdlMkZ1ZVgwZ2NHRjViRzloWkNBdElGUm9aU0JsZG1WdWRDQndZWGxzYjJGa1hHNGdJQ0FxSUVCeVpYUjFjbTRnZTFCeWIyMXBjMlU4ZG05cFpENTlJRUVnY0hKdmJXbHpaU0IwYUdGMElISmxjMjlzZG1WeklIZG9aVzRnWVd4c0lHOWljMlZ5ZG1WeWN5Qm9ZWFpsSUdKbFpXNGdibTkwYVdacFpXUmNiaUFnSUNvdlhHNGdJRzkyWlhKeWFXUmxJR0Z6ZVc1aklIVndaR0YwWlU5aWMyVnlkbVZ5Y3loY2JpQWdJQ0J0YjJSbGJEb2dRMjl1YzNSeWRXTjBiM0k4WVc1NVBpQjhJSE4wY21sdVp5eGNiaUFnSUNCbGRtVnVkRG9nVDNCbGNtRjBhVzl1UzJWNWN5QjhJRUoxYkd0RGNuVmtUM0JsY21GMGFXOXVTMlY1Y3lCOElITjBjbWx1Wnl4Y2JpQWdJQ0JwWkRvZ1JYWmxiblJKWkhNc1hHNGdJQ0FnTGk0dVlYSm5jem9nUTI5dWRHVjRkSFZoYkVGeVozTThRMjl1ZEdWNGREeEdZV0p5YVdORGJHbGxiblJHYkdGbmN6NCtYRzRnSUNrNklGQnliMjFwYzJVOGRtOXBaRDRnZTF4dUlDQWdJR052Ym5OMElIc2diRzluTENCamRIaEJjbWR6SUgwZ1BTQkJaR0Z3ZEdWeUxteHZaME4wZUR4RGIyNTBaWGgwUEVaaFluSnBZME5zYVdWdWRFWnNZV2R6UGo0b1hHNGdJQ0FnSUNCMGFHbHpMblZ3WkdGMFpVOWljMlZ5ZG1WeWN5eGNiaUFnSUNBZ0lHVjJaVzUwTEZ4dUlDQWdJQ0FnWm1Gc2MyVXNYRzRnSUNBZ0lDQXVMaTVoY21kelhHNGdJQ0FnS1R0Y2JpQWdJQ0JwWmlBb0lYUm9hWE11WVdSaGNIUmxjaWtnZTF4dUlDQWdJQ0FnYkc5bkxuWmxjbUp2YzJVb1hHNGdJQ0FnSUNBZ0lHQk9ieUJoWkdGd2RHVnlJRzlpYzJWeWRtVmtJR1p2Y2lCa2FYTndZWFJqYURzZ2MydHBjSEJwYm1jZ2IySnpaWEoyWlhJZ2RYQmtZWFJsSUdadmNpQWtlM1I1Y0dWdlppQnRiMlJsYkNBOVBUMGdYQ0p6ZEhKcGJtZGNJaUEvSUcxdlpHVnNJRG9nVFc5a1pXd3VkR0ZpYkdWT1lXMWxLRzF2WkdWc0tYMDZKSHRsZG1WdWRIMWdYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUgxY2JpQWdJQ0IwY25rZ2UxeHVJQ0FnSUNBZ1lYZGhhWFFnZEdocGN5NWhaR0Z3ZEdWeUxuSmxabkpsYzJnb2JXOWtaV3dzSUdWMlpXNTBMQ0JwWkN3Z0xpNHVZM1I0UVhKbmN5azdYRzRnSUNBZ2ZTQmpZWFJqYUNBb1pUb2dkVzVyYm05M2Jpa2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRWx1ZEdWeWJtRnNSWEp5YjNJb1lFWmhhV3hsWkNCMGJ5QnlaV1p5WlhOb0lHUnBjM0JoZEdOb09pQWtlMlY5WUNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFQmtaWE5qY21sd2RHbHZiaUJRY205alpYTnpaWE1nYVc1amIyMXBibWNnWTJoaGFXNWpiMlJsSUdWMlpXNTBjMXh1SUNBZ0tpQkFjM1Z0YldGeWVTQk1hWE4wWlc1eklHWnZjaUJsZG1WdWRITWdabkp2YlNCMGFHVWdZMmhoYVc1amIyUmxJR0Z1WkNCa2FYTndZWFJqYUdWeklIUm9aVzBnZEc4Z2NtVm5hWE4wWlhKbFpDQnZZbk5sY25abGNuTmNiaUFnSUNvZ1FISmxkSFZ5YmlCN1VISnZiV2x6WlR4MmIybGtQbjBnVUhKdmJXbHpaU0IwYUdGMElISmxjMjlzZG1WeklIZG9aVzRnWlhabGJuUWdhR0Z1Wkd4cGJtY2djM1J2Y0hOY2JpQWdJQ29nUUcxbGNtMWhhV1JjYmlBZ0lDb2djMlZ4ZFdWdVkyVkVhV0ZuY21GdFhHNGdJQ0FxSUNBZ2NHRnlkR2xqYVhCaGJuUWdSbUZpY21salJHbHpjR0YwWTJoY2JpQWdJQ29nSUNCd1lYSjBhV05wY0dGdWRDQkZkbVZ1ZEZOMFlXTnJYRzRnSUNBcUlDQWdjR0Z5ZEdsamFYQmhiblFnUlhabGJuUlFZWEp6WlhKY2JpQWdJQ29nSUNCd1lYSjBhV05wY0dGdWRDQlBZbk5sY25abGNuTmNiaUFnSUNwY2JpQWdJQ29nSUNCR1lXSnlhV05FYVhOd1lYUmphQzArUGtaaFluSnBZMFJwYzNCaGRHTm9PaUJvWVc1a2JHVkZkbVZ1ZEhNb0tWeHVJQ0FnS2lBZ0lFWmhZbkpwWTBScGMzQmhkR05vTFQ0K1JYWmxiblJUZEdGamF6b2dabTl5SUdGM1lXbDBJQ2hqYjI1emRDQmxkblFnYjJZZ2JHbHpkR1Z1YVc1blUzUmhZMnNwWEc0Z0lDQXFJQ0FnUlhabGJuUlRkR0ZqYXkwdFBqNUdZV0p5YVdORWFYTndZWFJqYURvZ1EyaGhhVzVqYjJSbFJYWmxiblJjYmlBZ0lDb2dJQ0JHWVdKeWFXTkVhWE53WVhSamFDMCtQa1YyWlc1MFVHRnljMlZ5T2lCd1lYSnpaVVYyWlc1MFRtRnRaU2hsZG5RdVpYWmxiblJPWVcxbEtWeHVJQ0FnS2lBZ0lFVjJaVzUwVUdGeWMyVnlMUzArUGtaaFluSnBZMFJwYzNCaGRHTm9PaUI3SUhSaFlteGxMQ0JsZG1WdWRDd2diM2R1WlhJZ2ZWeHVJQ0FnS2lBZ0lFWmhZbkpwWTBScGMzQmhkR05vTFQ0K1JtRmljbWxqUkdsemNHRjBZMmc2SUVOb1pXTnJJR2xtSUdWMlpXNTBJR2x6SUdadmNpQjBhR2x6SUUxVFVGeHVJQ0FnS2lBZ0lFWmhZbkpwWTBScGMzQmhkR05vTFQ0K1JtRmljbWxqUkdsemNHRjBZMmc2SUhCaGNuTmxVR0Y1Ykc5aFpDaGxkblF1Y0dGNWJHOWhaQ2xjYmlBZ0lDb2dJQ0JHWVdKeWFXTkVhWE53WVhSamFDMCtQazlpYzJWeWRtVnljem9nZFhCa1lYUmxUMkp6WlhKMlpYSnpLSFJoWW14bExDQmxkbVZ1ZEN3Z2NHRjViRzloWkM1cFpDbGNiaUFnSUNvZ0lDQlBZbk5sY25abGNuTXRMVDQrUm1GaWNtbGpSR2x6Y0dGMFkyZzZJRU5oYkd4aVlXTnJjeUJsZUdWamRYUmxaRnh1SUNBZ0tpOWNiaUFnY0hKdmRHVmpkR1ZrSUdGemVXNWpJR2hoYm1Sc1pVVjJaVzUwY3loY2JpQWdJQ0JqZEhoQmNtYy9PaUJEYjI1MFpYaDBQRVpoWW5KcFkwTnNhV1Z1ZEVac1lXZHpQbHh1SUNBcE9pQlFjbTl0YVhObFBIWnZhV1ErSUh0Y2JpQWdJQ0JwWmlBb0lYUm9hWE11YkdsemRHVnVhVzVuVTNSaFkyc3BYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dTVzUwWlhKdVlXeEZjbkp2Y2loY2JpQWdJQ0FnSUNBZ1lFVjJaVzUwSUhOMFlXTnJJRzV2ZENCcGJtbDBhV0ZzYVhwbFpDNGdSVzV6ZFhKbElIUm9ZWFFnWENKemRHRnlkRXhwYzNSbGJtbHVaMXdpSUdseklHTmhiR3hsWkNCaVpXWnZjbVVnWVhSMFpXMXdkR2x1WnlCMGFHbHpJRzl3WlhKaGRHbHZiaTVnWEc0Z0lDQWdJQ0FwTzF4dVhHNGdJQ0FnYVdZZ0tDRjBhR2x6TG1Ga1lYQjBaWElnZkh3Z0lYUm9hWE11WVdSaGNIUmxjaTVqYjI1bWFXY3BYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dTVzUwWlhKdVlXeEZjbkp2Y2loZ1RtOGdZV1JoY0hSbGNpQm1iM1Z1WkM0Z2MyaHZkV3hrSUdKbElHbHRjRzl6YzJsaWJHVmdLVHRjYmx4dUlDQWdJR052Ym5OMElHTjBlQ0E5WEc0Z0lDQWdJQ0JqZEhoQmNtY2dmSHhjYmlBZ0lDQWdJQ2hoZDJGcGRDQjBhR2x6TG1Ga1lYQjBaWEl1WTI5dWRHVjRkQ2hjYmlBZ0lDQWdJQ0FnVDNCbGNtRjBhVzl1UzJWNWN5NVNSVUZFTEZ4dUlDQWdJQ0FnSUNCN1hHNGdJQ0FnSUNBZ0lDQWdZMjl5Y21Wc1lYUnBiMjVKWkRvZ2RHaHBjeTVoWkdGd2RHVnlMbU52Ym1acFp5NWphR0ZwYm1OdlpHVk9ZVzFsTEZ4dUlDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQW9kR2hwY3k1dGIyUmxiSE1nSmlZZ2RHaHBjeTV0YjJSbGJITmJNRjBwSUh4OElDaE5iMlJsYkNCaGN5QjFibXR1YjNkdUlHRnpJRU52Ym5OMGNuVmpkRzl5S1Z4dUlDQWdJQ0FnS1NrN1hHNGdJQ0FnWTI5dWMzUWdiRzluSUQwZ2RHaHBjeTVzYjJjdVptOXlLSFJvYVhNdWFHRnVaR3hsUlhabGJuUnpLVHRjYmx4dUlDQWdJR3h2Wnk1cGJtWnZLRnh1SUNBZ0lDQWdZRXhwYzNSbGJtbHVaeUJtYjNJZ2FXNWpiMjFwYm1jZ1pYWmxiblJ6SUc5dUlHTm9ZV2x1WTI5a1pTQmNJaVI3ZEdocGN5NWhaR0Z3ZEdWeUxtTnZibVpwWnk1amFHRnBibU52WkdWT1lXMWxmVndpSUc5dUlHTm9ZVzV1Wld3Z1hDSWtlM1JvYVhNdVlXUmhjSFJsY2k1amIyNW1hV2N1WTJoaGJtNWxiSDFjSWk0dUxtQmNiaUFnSUNBcE8xeHVYRzRnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJR1p2Y2lCaGQyRnBkQ0FvWTI5dWMzUWdaWFowSUc5bUlIUm9hWE11YkdsemRHVnVhVzVuVTNSaFkyc3BJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdleUIwWVdKc1pTd2daWFpsYm5Rc0lHOTNibVZ5SUgwZ1BTQndZWEp6WlVWMlpXNTBUbUZ0WlNobGRuUXVaWFpsYm5ST1lXMWxLVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tGeHVJQ0FnSUNBZ0lDQWdJSFJvYVhNdVlXUmhjSFJsY2k1amIyNW1hV2MvTG0xemNFVjJaVzUwVDI1c2VTQW1KbHh1SUNBZ0lDQWdJQ0FnSUc5M2JtVnlJQ1ltWEc0Z0lDQWdJQ0FnSUNBZ2IzZHVaWElnSVQwOUlIUm9hWE11WVdSaGNIUmxjaTVqYjI1bWFXYy9MbTF6Y0Vsa1hHNGdJQ0FnSUNBZ0lDbGNiaUFnSUNBZ0lDQWdJQ0JqYjI1MGFXNTFaVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdjR0Y1Ykc5aFpEb2dleUJwWkRvZ2MzUnlhVzVuT3lCeVpYTjFiSFEvT2lCaGJua2dmU0E5SUhSb2FYTXVjR0Z5YzJWUVlYbHNiMkZrS0Z4dUlDQWdJQ0FnSUNBZ0lHVjJkQzV3WVhsc2IyRmtYRzRnSUNBZ0lDQWdJQ2s3WEc0Z0lDQWdJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdkR0Z5WjJWMFRXOWtaV3dnUFNCMFlXSnNaVnh1SUNBZ0lDQWdJQ0FnSUNBZ1B5Qk5iMlJsYkM1blpYUW9kR0ZpYkdVcFhHNGdJQ0FnSUNBZ0lDQWdJQ0E2SUUxdlpHVnNMbWRsZENoMGFHbHpMbTF2WkdWc2Mxc3dYUzV1WVcxbEtUdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQnRiMlJsYkZKbFppQTlJSFJoY21kbGRFMXZaR1ZzSUQ4L0lDaDBZV0pzWlNCOGZDQjBhR2x6TG0xdlpHVnNjMXN3WFQ4dWJtRnRaU2s3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYjJKelpYSjJaWEpCY21keklEMGdjR0Y1Ykc5aFpDNXlaWE4xYkhRZ1B5QmJjR0Y1Ykc5aFpDNXlaWE4xYkhRc0lHTjBlRjBnT2lCYlkzUjRYVHRjYmlBZ0lDQWdJQ0FnSUNCaGQyRnBkQ0IwYUdsekxuVndaR0YwWlU5aWMyVnlkbVZ5Y3loY2JpQWdJQ0FnSUNBZ0lDQWdJRzF2WkdWc1VtVm1JR0Z6SUVOdmJuTjBjblZqZEc5eUlId2djM1J5YVc1bkxGeHVJQ0FnSUNBZ0lDQWdJQ0FnWlhabGJuUXNYRzRnSUNBZ0lDQWdJQ0FnSUNCd1lYbHNiMkZrTG1sa0lHRnpJSE4wY21sdVp5eGNiaUFnSUNBZ0lDQWdJQ0FnSUM0dUxpaHZZbk5sY25abGNrRnlaM01nWVhNZ1EyOXVkR1Y0ZEhWaGJFRnlaM004WVc1NVBpbGNiaUFnSUNBZ0lDQWdJQ0FwTzF4dUlDQWdJQ0FnSUNCOUlHTmhkR05vSUNobE9pQjFibXR1YjNkdUtTQjdYRzRnSUNBZ0lDQWdJQ0FnYkc5bkxtVnljbTl5S0Z4dUlDQWdJQ0FnSUNBZ0lDQWdZRVpoYVd4bFpDQjFjR1JoZEdVZ2IySnpaWEoyWVdKc1pYTWdabTl5SUhSaFlteGxJQ1I3ZEdGaWJHVjlJR1YyWlc1MElDUjdaWFpsYm5SOUlHbGtPaUFrZTNCaGVXeHZZV1F1YVdSOU9pQWtlMlY5WUZ4dUlDQWdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlJR05oZEdOb0lDaGxPaUJoYm5rcElIdGNiaUFnSUNBZ0lHeHZaeTVsY25KdmNpaGNiaUFnSUNBZ0lDQWdZRVpoYVd4bFpDQjBieUJ5WldGa0lHVjJaVzUwSUdadmNpQmphR0ZwYm1OdlpHVWdYQ0lrZTNSb2FYTXVZV1JoY0hSbGNpNWpiMjVtYVdjdVkyaGhhVzVqYjJSbFRtRnRaWDFjSWlCdmJpQmphR0Z1Ym1Wc0lGd2lKSHQwYUdsekxtRmtZWEIwWlhJdVkyOXVabWxuTG1Ob1lXNXVaV3g5WENJNklDUjdaWDFnWEc0Z0lDQWdJQ0FwTzF4dUlDQWdJQ0FnWVhkaGFYUWdkR2hwY3k1amJHOXpaU2hqZEhncE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkFaR1Z6WTNKcGNIUnBiMjRnU1c1cGRHbGhiR2w2WlhNZ2RHaGxJR1YyWlc1MElHeHBjM1JsYm1WeVhHNGdJQ0FxSUVCemRXMXRZWEo1SUZObGRITWdkWEFnWlhabGJuUWdaR2x6Y0dGMFkyaHBibWNnWm05eUlIUm9aU0J2WW5ObGNuWmxaQ0JoWkdGd2RHVnlMaUJYYUdWdVhHNGdJQ0FxSUdCemVXNTBhR1YwYVdORmRtVnVkSE5nSUdseklIUnlkV1VnS0hSb1pTQmtaV1poZFd4MEtTQnVieUJuWVhSbGQyRjVJR052Ym01bFkzUnBiMjRnYVhNZ2IzQmxibVZrTzF4dUlDQWdLaUJwYm5OMFpXRmtJR1YyWlhKNUlFTlNWVVFnYjNCbGNtRjBhVzl1SUdseklIZHlZWEJ3WldRZ2QybDBhQ0JoSUZCeWIzaDVJSFJvWVhRZ1ptbHlaWE5jYmlBZ0lDb2dZSFZ3WkdGMFpVOWljMlZ5ZG1WeWMyQWdabTl5SUNvcVlXeHNLaW9nYlc5a1pXeHpMaUJYYUdWdUlHQnplVzUwYUdWMGFXTkZkbVZ1ZEhOZ0lHbHpJR1poYkhObElIUm9aVnh1SUNBZ0tpQmxlR2x6ZEdsdVp5Qm5ZWFJsZDJGNUxXSmhjMlZrSUdOb1lXbHVZMjlrWlMxbGRtVnVkQ0J6ZFdKelkzSnBjSFJwYjI0Z2FYTWdaWE4wWVdKc2FYTm9aV1FnWVc1a0lIUm9aVnh1SUNBZ0tpQnNiMk5oYkNCUWNtOTRlU0JtWVd4c1ltRmpheUJwY3lCc2FXMXBkR1ZrSUhSdklHWjFiR3g1TFhObFozSmxaMkYwWldRZ0tIUnlZVzV6YVdWdWRDa2diVzlrWld4eklHOXViSGt1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMUJ5YjIxcGMyVThkbTlwWkQ1OUlGQnliMjFwYzJVZ2RHaGhkQ0J5WlhOdmJIWmxjeUIzYUdWdUlHbHVhWFJwWVd4cGVtRjBhVzl1SUdseklHTnZiWEJzWlhSbFhHNGdJQ0FxTDF4dUlDQndjbTkwWldOMFpXUWdiM1psY25KcFpHVWdZWE41Ym1NZ2FXNXBkR2xoYkdsNlpTZ3BPaUJRY205dGFYTmxQSFp2YVdRK0lIdGNiaUFnSUNCcFppQW9JWFJvYVhNdVlXUmhjSFJsY2lsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCSmJuUmxjbTVoYkVWeWNtOXlLR0JPYnlCaFpHRndkR1Z5SUc5eUlHTnZibVpwWnlCdlluTmxjblpsWkNCbWIzSWdaR2x6Y0dGMFkyaGdLVHRjYmx4dUlDQWdJR052Ym5OMElITjViblJvWlhScFkwVjJaVzUwY3lBOUlIUm9hWE11WVdSaGNIUmxjaTVqYjI1bWFXY3VjM2x1ZEdobGRHbGpSWFpsYm5SeklDRTlQU0JtWVd4elpUdGNibHh1SUNBZ0lHbG1JQ2doYzNsdWRHaGxkR2xqUlhabGJuUnpLU0I3WEc0Z0lDQWdJQ0F2THlCSFlYUmxkMkY1TFdKaGMyVmtJR05vWVdsdVkyOWtaUzFsZG1WdWRDQnpkV0p6WTNKcGNIUnBiMjRnS0c1dmJpMXplVzUwYUdWMGFXTWdjR0YwYUNsY2JpQWdJQ0FnSUdOdmJuTjBJR052Ym5SbGVIUWdQU0JoZDJGcGRDQjBhR2x6TG1Ga1lYQjBaWEl1WTI5dWRHVjRkQ2hjYmlBZ0lDQWdJQ0FnWENKa2FYTndZWFJqYUZ3aUxGeHVJQ0FnSUNBZ0lDQjdYRzRnSUNBZ0lDQWdJQ0FnWTI5eWNtVnNZWFJwYjI1SlpEb2dkR2hwY3k1aFpHRndkR1Z5TG1OdmJtWnBaeTVqYUdGcGJtTnZaR1ZPWVcxbExGeHVJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdJQ0JOYjJSbGJDQmhjeUJoYm5sY2JpQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCamIyNXpkQ0I3SUdOMGVDQjlJRDBnZEdocGN5NXNiMmREZEhnb1cyTnZiblJsZUhSZExDQjBhR2x6TG1sdWFYUnBZV3hwZW1VcE8xeHVJQ0FnSUNBZ1kyOXVjM1FnWjJGMFpYZGhlU0E5SUdGM1lXbDBJRVpoWW5KcFkwTnNhV1Z1ZEVGa1lYQjBaWEl1WjJWMFIyRjBaWGRoZVNoY2JpQWdJQ0FnSUNBZ1kzUjRMRnh1SUNBZ0lDQWdJQ0IwYUdsekxtRmtZWEIwWlhJdVkyOXVabWxuSUdGeklGQmxaWEpEYjI1bWFXY3NYRzRnSUNBZ0lDQWdJSFJvYVhNdVkyeHBaVzUwWEc0Z0lDQWdJQ0FwTzF4dUlDQWdJQ0FnWTI5dWMzUWdibVYwZDI5eWF5QTlJR2RoZEdWM1lYa3VaMlYwVG1WMGQyOXlheWgwYUdsekxtRmtZWEIwWlhJdVkyOXVabWxuTG1Ob1lXNXVaV3dwTzF4dUlDQWdJQ0FnYVdZZ0tDRjBhR2x6TG1Ga1lYQjBaWElwWEc0Z0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCSmJuUmxjbTVoYkVWeWNtOXlLR0JPYnlCaFpHRndkR1Z5SUc5aWMyVnlkbVZrSUdadmNpQmthWE53WVhSamFHQXBPMXh1SUNBZ0lDQWdkR2hwY3k1c2FYTjBaVzVwYm1kVGRHRmpheUE5SUdGM1lXbDBJRzVsZEhkdmNtc3VaMlYwUTJoaGFXNWpiMlJsUlhabGJuUnpLRnh1SUNBZ0lDQWdJQ0IwYUdsekxtRmtZWEIwWlhJdVkyOXVabWxuTG1Ob1lXbHVZMjlrWlU1aGJXVmNiaUFnSUNBZ0lDazdYRzRnSUNBZ0lDQjBhR2x6TG1oaGJtUnNaVVYyWlc1MGN5aGpkSGdwTzF4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUZCeWIzaDVJRU5TVlVRZ2JXVjBhRzlrY3k1Y2JpQWdJQ0F2THlEaWdLSWdjM2x1ZEdobGRHbGpSWFpsYm5SeklEMGdkSEoxWlNBZzRvYVNJRzV2ZEdsbWVTQm1iM0lnUVV4TUlHMXZaR1ZzY3lBb2NtVndiR0ZqWlhNZ1oyRjBaWGRoZVNCbGRtVnVkSE1nWlc1MGFYSmxiSGtwWEc0Z0lDQWdMeThnNG9DaUlITjViblJvWlhScFkwVjJaVzUwY3lBOUlHWmhiSE5sSU9LR2tpQnViM1JwWm5rZ2IyNXNlU0JtYjNJZ1puVnNiSGt0YzJWbmNtVm5ZWFJsWkNBb2RISmhibk5wWlc1MEtTQnRiMlJsYkhOY2JpQWdJQ0F2THlBZ0lDaDBhR1VnWjJGMFpYZGhlU0J6ZFdKelkzSnBjSFJwYjI0Z2FHRnVaR3hsY3lCd2RXSnNhV01nYlc5a1pXeHpLVnh1SUNBZ0lDaGNiaUFnSUNBZ0lGdGNiaUFnSUNBZ0lDQWdUM0JsY21GMGFXOXVTMlY1Y3k1RFVrVkJWRVVzWEc0Z0lDQWdJQ0FnSUU5d1pYSmhkR2x2Ymt0bGVYTXVWVkJFUVZSRkxGeHVJQ0FnSUNBZ0lDQlBjR1Z5WVhScGIyNUxaWGx6TGtSRlRFVlVSU3hjYmlBZ0lDQWdJQ0FnUW5Wc2EwTnlkV1JQY0dWeVlYUnBiMjVMWlhsekxrTlNSVUZVUlY5QlRFd3NYRzRnSUNBZ0lDQWdJRUoxYkd0RGNuVmtUM0JsY21GMGFXOXVTMlY1Y3k1VlVFUkJWRVZmUVV4TUxGeHVJQ0FnSUNBZ0lDQkNkV3hyUTNKMVpFOXdaWEpoZEdsdmJrdGxlWE11UkVWTVJWUkZYMEZNVEN4Y2JpQWdJQ0FnSUYwZ1lYTWdLR3RsZVc5bUlFRmtZWEIwWlhJOFlXNTVMQ0JoYm5rc0lHRnVlU3dnWVc1NVBpbGJYVnh1SUNBZ0lDa3VabTl5UldGamFDZ29kRzlYY21Gd0tTQTlQaUI3WEc0Z0lDQWdJQ0JwWmlBb0lYUm9hWE11WVdSaGNIUmxjaWxjYmlBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUVsdWRHVnlibUZzUlhKeWIzSW9YRzRnSUNBZ0lDQWdJQ0FnWUU1dklHRmtZWEIwWlhJZ2NISnZkbWxrWldRZ1ptOXlJSFJvWlNCbVlXeHNZbUZqYXlCdlppQm1kV3hzZVNCelpXZHlaV2RoZEdWa0lHMXZaR1ZzYzJCY2JpQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lHbG1JQ2doZEdocGN5NWhaR0Z3ZEdWeVczUnZWM0poY0YwcFhHNGdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QkpiblJsY201aGJFVnljbTl5S0Z4dUlDQWdJQ0FnSUNBZ0lHQk5aWFJvYjJRZ0pIdDBiMWR5WVhCOUlHNXZkQ0JtYjNWdVpDQnBiaUFrZTNSb2FYTXVZV1JoY0hSbGNpNWhiR2xoYzMwZ1lXUmhjSFJsY2lCMGJ5QmlhVzVrSUU5aWMyVnlkbUZpYkdWeklFUnBjM0JoZEdOb1lGeHVJQ0FnSUNBZ0lDQXBPMXh1WEc0Z0lDQWdJQ0JzWlhRZ1pHVnpZM0pwY0hSdmNpQTlJRTlpYW1WamRDNW5aWFJQZDI1UWNtOXdaWEowZVVSbGMyTnlhWEIwYjNJb2RHaHBjeTVoWkdGd2RHVnlMQ0IwYjFkeVlYQXBPMXh1SUNBZ0lDQWdiR1YwSUhCeWIzUnZPaUJoYm5rZ1BTQjBhR2x6TG1Ga1lYQjBaWEk3WEc0Z0lDQWdJQ0IzYUdsc1pTQW9JV1JsYzJOeWFYQjBiM0lnSmlZZ2NISnZkRzhnSVQwOUlFOWlhbVZqZEM1d2NtOTBiM1I1Y0dVcElIdGNiaUFnSUNBZ0lDQWdjSEp2ZEc4Z1BTQlBZbXBsWTNRdVoyVjBVSEp2ZEc5MGVYQmxUMllvY0hKdmRHOHBPMXh1SUNBZ0lDQWdJQ0JrWlhOamNtbHdkRzl5SUQwZ1QySnFaV04wTG1kbGRFOTNibEJ5YjNCbGNuUjVSR1Z6WTNKcGNIUnZjaWh3Y205MGJ5d2dkRzlYY21Gd0tUdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdhV1lnS0NGa1pYTmpjbWx3ZEc5eUlIeDhJQ0ZrWlhOamNtbHdkRzl5TG5keWFYUmhZbXhsS1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11Ykc5bkxtVnljbTl5S0Z4dUlDQWdJQ0FnSUNBZ0lHQkRiM1ZzWkNCdWIzUWdabWx1WkNCdFpYUm9iMlFnSkh0MGIxZHlZWEI5SUhSdklHSnBibVFnVDJKelpYSjJZV0pzWlhNZ1JHbHpjR0YwWTJoZ1hHNGdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJqdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHWjFibU4wYVc5dUlHSjFiR3RVYjFOcGJtZHNaU2h0WlhSb2IyUTZJSE4wY21sdVp5a2dlMXh1SUNBZ0lDQWdJQ0J6ZDJsMFkyZ2dLRzFsZEdodlpDa2dlMXh1SUNBZ0lDQWdJQ0FnSUdOaGMyVWdRblZzYTBOeWRXUlBjR1Z5WVhScGIyNUxaWGx6TGtOU1JVRlVSVjlCVEV3NlhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdUM0JsY21GMGFXOXVTMlY1Y3k1RFVrVkJWRVU3WEc0Z0lDQWdJQ0FnSUNBZ1kyRnpaU0JDZFd4clEzSjFaRTl3WlhKaGRHbHZia3RsZVhNdVZWQkVRVlJGWDBGTVREcGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJQY0dWeVlYUnBiMjVMWlhsekxsVlFSRUZVUlR0Y2JpQWdJQ0FnSUNBZ0lDQmpZWE5sSUVKMWJHdERjblZrVDNCbGNtRjBhVzl1UzJWNWN5NUVSVXhGVkVWZlFVeE1PbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUU5d1pYSmhkR2x2Ymt0bGVYTXVSRVZNUlZSRk8xeHVJQ0FnSUNBZ0lDQWdJR1JsWm1GMWJIUTZYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYldWMGFHOWtPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUM4dklFQjBjeTFsZUhCbFkzUXRaWEp5YjNJZ1ltVmpZWFZ6WlNCMGFHVnlaU0JoY21VZ2NtVmhaQ0J2Ym14NUlIQnliM0JsY25ScFpYTmNiaUFnSUNBZ0lIUm9hWE11WVdSaGNIUmxjbHQwYjFkeVlYQmRJRDBnYm1WM0lGQnliM2g1S0hSb2FYTXVZV1JoY0hSbGNsdDBiMWR5WVhCZExDQjdYRzRnSUNBZ0lDQWdJR0Z3Y0d4NU9pQmhjM2x1WXlBb1hHNGdJQ0FnSUNBZ0lDQWdkR0Z5WjJWME9pQmhibmtzWEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjMEZ5WnpvZ1JtRmljbWxqUTJ4cFpXNTBRV1JoY0hSbGNpeGNiaUFnSUNBZ0lDQWdJQ0JoY21kQmNuSmhlVG9nWVc1NVcxMWNiaUFnSUNBZ0lDQWdLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdMeThnVW5WdUlIUm9aU0J2Y21sbmFXNWhiQ0J0WlhSb2IyUWdkVzVqYUdGdVoyVmtJSE52SUhSeVlXNXphV1Z1ZENCa1lYUmhJR2x6SUhCeVpYTmxjblpsWkZ4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUhKbGMzVnNkQ0E5SUdGM1lXbDBJSFJoY21kbGRDNWhjSEJzZVNoMGFHbHpRWEpuTENCaGNtZEJjbkpoZVNrN1hHNWNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQmpiR0Y2ZWpvZ1EyOXVjM1J5ZFdOMGIzSThZVzU1UGlBOUlHRnlaMEZ5Y21GNVd6QmRPMXh1SUNBZ0lDQWdJQ0FnSUM4dklGZG9aVzRnYzNsdWRHaGxkR2xqUlhabGJuUnpJR2x6SUdaaGJITmxMQ0J3ZFdKc2FXTWdiVzlrWld4eklHVnRhWFFnWVNCamFHRnBibU52WkdVZ1pYWmxiblJjYmlBZ0lDQWdJQ0FnSUNBdkx5QnZiaUIwYUdVZ1kyOXVkSEpoWTNRZ2MybGtaVHNnYzJ0cGNDQjBhR1VnYkc5allXd2dabUZzYkdKaFkyc2dkRzhnWVhadmFXUmNiaUFnSUNBZ0lDQWdJQ0F2THlCa2IzVmliR1V0Ym05MGFXWnBZMkYwYVc5dUxpQlhhR1Z1SUhONWJuUm9aWFJwWTBWMlpXNTBjeUJwY3lCMGNuVmxJSGRsSUdoaGJtUnNaU0JoYkd3Z2JXOWtaV3h6TGx4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2doYzNsdWRHaGxkR2xqUlhabGJuUnpJQ1ltSUNGTmIyUmxiQzVwYzFSeVlXNXphV1Z1ZENoamJHRjZlaWtwSUhKbGRIVnliaUJ5WlhOMWJIUTdYRzVjYmlBZ0lDQWdJQ0FnSUNBdkx5QkRiMjUwWlhoMElHbHpJR0ZzZDJGNWN5QjBhR1VnYkdGemRDQmxiR1Z0Wlc1MElHOW1JR0Z5WjBGeWNtRjVYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdleUJzYjJjc0lHTjBlRUZ5WjNNc0lHTjBlQ0I5SUQwZ2RHaHBjMEZ5WjF0Y0lteHZaME4wZUZ3aVhTaGNiaUFnSUNBZ0lDQWdJQ0FnSUdGeVowRnljbUY1TG5Oc2FXTmxLR0Z5WjBGeWNtRjVMbXhsYm1kMGFDQXRJREVwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdkR0Z5WjJWMFhHNGdJQ0FnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JwWkhNZ1BTQmhjbWRCY25KaGVWc3hYVHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J5WlhOMWJIUkJjbWR6T2lCaGJubGJYU0E5SUZ0amJHRjZlaXdnWW5Wc2ExUnZVMmx1WjJ4bEtIUnZWM0poY0Nrc0lHbGtjMTA3WEc1Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvWTNSNExtZGxkRTl5Vlc1a1pXWnBibVZrS0Z3aWIySnpaWEoyWlVaMWJHeFNaWE4xYkhSY0lpa3BJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lISmxjM1ZzZEVGeVozTXVjSFZ6YUNoeVpYTjFiSFFwTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0IwYUdsekxuVndaR0YwWlU5aWMyVnlkbVZ5Y3loY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsYzNWc2RFRnlaM05iTUYwc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhOMWJIUkJjbWR6V3pGZExGeHVJQ0FnSUNBZ0lDQWdJQ0FnY21WemRXeDBRWEpuYzFzeVhTeGNiaUFnSUNBZ0lDQWdJQ0FnSUM0dUxuSmxjM1ZzZEVGeVozTXVjMnhwWTJVb015a3NYRzRnSUNBZ0lDQWdJQ0FnSUNBdUxpNG9ZM1I0UVhKbmN5QmhjeUJEYjI1MFpYaDBkV0ZzUVhKbmN6eERiMjUwWlhoMFBFWmhZbkpwWTBOc2FXVnVkRVpzWVdkelBqNHBYRzRnSUNBZ0lDQWdJQ0FnS1M1allYUmphQ2dvWlRvZ2RXNXJibTkzYmlrZ1BUNWNiaUFnSUNBZ0lDQWdJQ0FnSUd4dlp5NWxjbkp2Y2loY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnWUVaaGFXeGxaQ0IwYnlCa2FYTndZWFJqYUNCdlluTmxjblpsY2lCeVpXWnlaWE5vSUdadmNpQWtlM1J2VjNKaGNIMGdiMjRnSkh0amJHRjZlaTV1WVcxbElIeDhJR05zWVhwNmZTQm1iM0lnSkh0cFpITjlPaUFrZTJWOVlGeHVJQ0FnSUNBZ0lDQWdJQ0FnS1Z4dUlDQWdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSEpsYzNWc2REdGNiaUFnSUNBZ0lDQWdmU3hjYmlBZ0lDQWdJSDBwTzF4dUlDQWdJSDBwTzF4dUlDQjlYRzU5WEc1Y2JtbG1JQ2hHWVdKeWFXTkRiR2xsYm5SQlpHRndkR1Z5S1Z4dUlDQkdZV0p5YVdORGJHbGxiblJCWkdGd2RHVnlXMXdpWDJKaGMyVkVhWE53WVhSamFGd2lYU0E5SUVaaFluSnBZME5zYVdWdWRFUnBjM0JoZEdOb08xeHVJbDE5Il19
|
|
@@ -18,5 +18,5 @@ class FabricClientPaginator extends core_1.Paginator {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
exports.FabricClientPaginator = FabricClientPaginator;
|
|
21
|
-
//# sourceMappingURL=
|
|
22
|
-
//# sourceMappingURL=
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljQ2xpZW50UGFnaW5hdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaWVudC9GYWJyaWNDbGllbnRQYWdpbmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFHVCxnQkFBZ0IsR0FDakIsTUFBTSxnQkFBZ0IsQ0FBQztBQU14QixNQUFNLE9BQU8scUJBQXVDLFNBQVEsU0FJM0Q7SUFHQyxZQUNFLE9BQTRCLEVBQzVCLEtBQTBDLEVBQzFDLElBQVksRUFDWixLQUFxQjtRQUVyQixLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELDZEQUE2RDtJQUNuRCxPQUFPLENBQUMsWUFBd0I7UUFDeEMsTUFBTSxJQUFJLGdCQUFnQixDQUN4QixxR0FBcUcsQ0FDdEcsQ0FBQztJQUNKLENBQUM7SUFFUSxJQUFJLENBQ1gsT0FBZSxDQUFDLEVBQ2hCLEdBQUcsSUFBNkI7UUFFaEMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsNkNBQTZDO0lBQ2pGLENBQUM7SUFFRCxNQUFNLENBQVUsZ0JBQWdCLENBQUMsR0FBOEI7UUFDN0QsT0FBTyxHQUFHLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIE1heWJlQ29udGV4dHVhbEFyZyxcbiAgUGFnaW5hdG9yLFxuICBQcmVwYXJlZFN0YXRlbWVudCxcbiAgU2VyaWFsaXplZFBhZ2UsXG4gIFVuc3VwcG9ydGVkRXJyb3IsXG59IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHsgRmFicmljQ2xpZW50QWRhcHRlciB9IGZyb20gXCIuL0ZhYnJpY0NsaWVudEFkYXB0ZXJcIjtcbmltcG9ydCB7IE1hbmdvUXVlcnkgfSBmcm9tIFwiQGRlY2FmLXRzL2Zvci1jb3VjaGRiXCI7XG5cbmV4cG9ydCBjbGFzcyBGYWJyaWNDbGllbnRQYWdpbmF0b3I8TSBleHRlbmRzIE1vZGVsPiBleHRlbmRzIFBhZ2luYXRvcjxcbiAgTSxcbiAgTVtdLFxuICBNYW5nb1F1ZXJ5XG4+IHtcbiAgYm9va21hcms/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYWRhcHRlcjogRmFicmljQ2xpZW50QWRhcHRlcixcbiAgICBxdWVyeTogTWFuZ29RdWVyeSB8IFByZXBhcmVkU3RhdGVtZW50PGFueT4sXG4gICAgc2l6ZTogbnVtYmVyLFxuICAgIGNsYXp6OiBDb25zdHJ1Y3RvcjxNPlxuICApIHtcbiAgICBzdXBlcihhZGFwdGVyLCBxdWVyeSwgc2l6ZSwgY2xhenopO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBwcm90ZWN0ZWQgcHJlcGFyZShyYXdTdGF0ZW1lbnQ6IE1hbmdvUXVlcnkpOiBNYW5nb1F1ZXJ5IHtcbiAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRFcnJvcihcbiAgICAgIGBSYXcgcXVlcnkgYWNjZXNzIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgYSBzdWJjbGFzcy4gb25seSBwcmVwYXJlZCBzdGF0ZW1lbnRzIGFyZSBuYXRpdmVseSBhdmFpbGFibGVgXG4gICAgKTtcbiAgfVxuXG4gIG92ZXJyaWRlIHBhZ2UoXG4gICAgcGFnZTogbnVtYmVyID0gMSxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8YW55PlxuICApOiBQcm9taXNlPE1bXT4ge1xuICAgIHJldHVybiBzdXBlci5wYWdlKHBhZ2UsIC4uLmFyZ3MpOyAvLyB0aGlzIHdpbGwgZmFpbCBmb3Igbm9uLXByZXBhcmVkIHN0YXRlbWVudHNcbiAgfVxuXG4gIHN0YXRpYyBvdmVycmlkZSBpc1NlcmlhbGl6ZWRQYWdlKG9iajogU2VyaWFsaXplZFBhZ2U8YW55PiB8IGFueSkge1xuICAgIHJldHVybiBvYmogJiYgdHlwZW9mIG9iaiA9PT0gXCJvYmplY3RcIiAmJiBBcnJheS5pc0FycmF5KG9iai5kYXRhKTtcbiAgfVxufVxuIl19
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljQ2xpZW50UGFnaW5hdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiRmFicmljQ2xpZW50UGFnaW5hdG9yLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUE4RDtBQUM5RCxNQUFhLHFCQUFzQixTQUFRLGdCQUFTO0lBQ2hELFlBQVksT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztRQUNuQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUNELDZEQUE2RDtJQUM3RCxPQUFPLENBQUMsWUFBWTtRQUNoQixNQUFNLElBQUksdUJBQWdCLENBQUMscUdBQXFHLENBQUMsQ0FBQztJQUN0SSxDQUFDO0lBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJO1FBQ2xCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLDZDQUE2QztJQUNuRixDQUFDO0lBQ0QsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEdBQUc7UUFDdkIsT0FBTyxHQUFHLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JFLENBQUM7Q0FDSjtBQWRELHNEQWNDO0FBQ0Qsa3ZGQUFrdkYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYWdpbmF0b3IsIFVuc3VwcG9ydGVkRXJyb3IsIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5leHBvcnQgY2xhc3MgRmFicmljQ2xpZW50UGFnaW5hdG9yIGV4dGVuZHMgUGFnaW5hdG9yIHtcbiAgICBjb25zdHJ1Y3RvcihhZGFwdGVyLCBxdWVyeSwgc2l6ZSwgY2xhenopIHtcbiAgICAgICAgc3VwZXIoYWRhcHRlciwgcXVlcnksIHNpemUsIGNsYXp6KTtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHByZXBhcmUocmF3U3RhdGVtZW50KSB7XG4gICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEVycm9yKGBSYXcgcXVlcnkgYWNjZXNzIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgYSBzdWJjbGFzcy4gb25seSBwcmVwYXJlZCBzdGF0ZW1lbnRzIGFyZSBuYXRpdmVseSBhdmFpbGFibGVgKTtcbiAgICB9XG4gICAgcGFnZShwYWdlID0gMSwgLi4uYXJncykge1xuICAgICAgICByZXR1cm4gc3VwZXIucGFnZShwYWdlLCAuLi5hcmdzKTsgLy8gdGhpcyB3aWxsIGZhaWwgZm9yIG5vbi1wcmVwYXJlZCBzdGF0ZW1lbnRzXG4gICAgfVxuICAgIHN0YXRpYyBpc1NlcmlhbGl6ZWRQYWdlKG9iaikge1xuICAgICAgICByZXR1cm4gb2JqICYmIHR5cGVvZiBvYmogPT09IFwib2JqZWN0XCIgJiYgQXJyYXkuaXNBcnJheShvYmouZGF0YSk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pUm1GaWNtbGpRMnhwWlc1MFVHRm5hVzVoZEc5eUxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZMaTR2YzNKakwyTnNhV1Z1ZEM5R1lXSnlhV05EYkdsbGJuUlFZV2RwYm1GMGIzSXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhGUVVWTUxGTkJRVk1zUlVGSFZDeG5Ra0ZCWjBJc1IwRkRha0lzVFVGQlRTeG5Ra0ZCWjBJc1EwRkJRenRCUVUxNFFpeE5RVUZOTEU5QlFVOHNjVUpCUVhWRExGTkJRVkVzVTBGSk0wUTdTVUZIUXl4WlFVTkZMRTlCUVRSQ0xFVkJRelZDTEV0QlFUQkRMRVZCUXpGRExFbEJRVmtzUlVGRFdpeExRVUZ4UWp0UlFVVnlRaXhMUVVGTExFTkJRVU1zVDBGQlR5eEZRVUZGTEV0QlFVc3NSVUZCUlN4SlFVRkpMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03U1VGRGNrTXNRMEZCUXp0SlFVVkVMRFpFUVVFMlJEdEpRVU51UkN4UFFVRlBMRU5CUVVNc1dVRkJkMEk3VVVGRGVFTXNUVUZCVFN4SlFVRkpMR2RDUVVGblFpeERRVU40UWl4eFIwRkJjVWNzUTBGRGRFY3NRMEZCUXp0SlFVTktMRU5CUVVNN1NVRkZVU3hKUVVGSkxFTkJRMWdzVDBGQlpTeERRVUZETEVWQlEyaENMRWRCUVVjc1NVRkJOa0k3VVVGRmFFTXNUMEZCVHl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc05rTkJRVFpETzBsQlEycEdMRU5CUVVNN1NVRkZSQ3hOUVVGTkxFTkJRVlVzWjBKQlFXZENMRU5CUVVNc1IwRkJPRUk3VVVGRE4wUXNUMEZCVHl4SFFVRkhMRWxCUVVrc1QwRkJUeXhIUVVGSExFdEJRVXNzVVVGQlVTeEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBsQlEyNUZMRU5CUVVNN1EwRkRSaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0I3WEc0Z0lFMWhlV0psUTI5dWRHVjRkSFZoYkVGeVp5eGNiaUFnVUdGbmFXNWhkRzl5TEZ4dUlDQlFjbVZ3WVhKbFpGTjBZWFJsYldWdWRDeGNiaUFnVTJWeWFXRnNhWHBsWkZCaFoyVXNYRzRnSUZWdWMzVndjRzl5ZEdWa1JYSnliM0lzWEc1OUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdlkyOXlaVndpTzF4dWFXMXdiM0owSUhzZ1RXOWtaV3dnZlNCbWNtOXRJRndpUUdSbFkyRm1MWFJ6TDJSbFkyOXlZWFJ2Y2kxMllXeHBaR0YwYVc5dVhDSTdYRzVwYlhCdmNuUWdleUJEYjI1emRISjFZM1J2Y2lCOUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdlpHVmpiM0poZEdsdmJsd2lPMXh1YVcxd2IzSjBJSHNnUm1GaWNtbGpRMnhwWlc1MFFXUmhjSFJsY2lCOUlHWnliMjBnWENJdUwwWmhZbkpwWTBOc2FXVnVkRUZrWVhCMFpYSmNJanRjYm1sdGNHOXlkQ0I3SUUxaGJtZHZVWFZsY25rZ2ZTQm1jbTl0SUZ3aVFHUmxZMkZtTFhSekwyWnZjaTFqYjNWamFHUmlYQ0k3WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJHWVdKeWFXTkRiR2xsYm5SUVlXZHBibUYwYjNJOFRTQmxlSFJsYm1SeklFMXZaR1ZzUGlCbGVIUmxibVJ6SUZCaFoybHVZWFJ2Y2p4Y2JpQWdUU3hjYmlBZ1RWdGRMRnh1SUNCTllXNW5iMUYxWlhKNVhHNCtJSHRjYmlBZ1ltOXZhMjFoY21zL09pQnpkSEpwYm1jN1hHNWNiaUFnWTI5dWMzUnlkV04wYjNJb1hHNGdJQ0FnWVdSaGNIUmxjam9nUm1GaWNtbGpRMnhwWlc1MFFXUmhjSFJsY2l4Y2JpQWdJQ0J4ZFdWeWVUb2dUV0Z1WjI5UmRXVnllU0I4SUZCeVpYQmhjbVZrVTNSaGRHVnRaVzUwUEdGdWVUNHNYRzRnSUNBZ2MybDZaVG9nYm5WdFltVnlMRnh1SUNBZ0lHTnNZWHA2T2lCRGIyNXpkSEoxWTNSdmNqeE5QbHh1SUNBcElIdGNiaUFnSUNCemRYQmxjaWhoWkdGd2RHVnlMQ0J4ZFdWeWVTd2djMmw2WlN3Z1kyeGhlbm9wTzF4dUlDQjlYRzVjYmlBZ0x5OGdaWE5zYVc1MExXUnBjMkZpYkdVdGJtVjRkQzFzYVc1bElFQjBlWEJsYzJOeWFYQjBMV1Z6YkdsdWRDOXVieTExYm5WelpXUXRkbUZ5YzF4dUlDQndjbTkwWldOMFpXUWdjSEpsY0dGeVpTaHlZWGRUZEdGMFpXMWxiblE2SUUxaGJtZHZVWFZsY25rcE9pQk5ZVzVuYjFGMVpYSjVJSHRjYmlBZ0lDQjBhSEp2ZHlCdVpYY2dWVzV6ZFhCd2IzSjBaV1JGY25KdmNpaGNiaUFnSUNBZ0lHQlNZWGNnY1hWbGNua2dZV05qWlhOeklHMTFjM1FnWW1VZ2FXMXdiR1Z0Wlc1MFpXUWdZbmtnWVNCemRXSmpiR0Z6Y3k0Z2IyNXNlU0J3Y21Wd1lYSmxaQ0J6ZEdGMFpXMWxiblJ6SUdGeVpTQnVZWFJwZG1Wc2VTQmhkbUZwYkdGaWJHVmdYRzRnSUNBZ0tUdGNiaUFnZlZ4dVhHNGdJRzkyWlhKeWFXUmxJSEJoWjJVb1hHNGdJQ0FnY0dGblpUb2diblZ0WW1WeUlEMGdNU3hjYmlBZ0lDQXVMaTVoY21kek9pQk5ZWGxpWlVOdmJuUmxlSFIxWVd4QmNtYzhZVzU1UGx4dUlDQXBPaUJRY205dGFYTmxQRTFiWFQ0Z2UxeHVJQ0FnSUhKbGRIVnliaUJ6ZFhCbGNpNXdZV2RsS0hCaFoyVXNJQzR1TG1GeVozTXBPeUF2THlCMGFHbHpJSGRwYkd3Z1ptRnBiQ0JtYjNJZ2JtOXVMWEJ5WlhCaGNtVmtJSE4wWVhSbGJXVnVkSE5jYmlBZ2ZWeHVYRzRnSUhOMFlYUnBZeUJ2ZG1WeWNtbGtaU0JwYzFObGNtbGhiR2w2WldSUVlXZGxLRzlpYWpvZ1UyVnlhV0ZzYVhwbFpGQmhaMlU4WVc1NVBpQjhJR0Z1ZVNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJ2WW1vZ0ppWWdkSGx3Wlc5bUlHOWlhaUE5UFQwZ1hDSnZZbXBsWTNSY0lpQW1KaUJCY25KaGVTNXBjMEZ5Y21GNUtHOWlhaTVrWVhSaEtUdGNiaUFnZlZ4dWZWeHVJbDE5Il19
|
|
@@ -256,5 +256,5 @@ class FabricClientRepository extends core_1.Repository {
|
|
|
256
256
|
}
|
|
257
257
|
}
|
|
258
258
|
exports.FabricClientRepository = FabricClientRepository;
|
|
259
|
-
//# sourceMappingURL=FabricClientRepository.js.map
|
|
260
|
-
//# sourceMappingURL=FabricClientRepository.js.map
|
|
259
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljQ2xpZW50UmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvRmFicmljQ2xpZW50UmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBS0wsY0FBYyxFQUVkLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsVUFBVSxHQUVYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3ZELE9BQU8sRUFFTCxtQkFBbUIsRUFDbkIsYUFBYSxFQUViLG1CQUFtQixFQUNuQixlQUFlLEdBQ2hCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxtQ0FBZ0M7QUFFaEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCRztBQUNILE1BQU0sT0FBTyxzQkFHWCxTQUFRLFVBQWdCO0lBV3hCLFlBQVksT0FBVyxFQUFFLEtBQXNCLEVBQUUsUUFBaUIsS0FBSztRQUNyRSxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQVhaLGVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDckUsZ0JBQWdCLEVBQUUsSUFBSTtZQUN0QixjQUFjLEVBQUUsSUFBSTtZQUNwQixrQkFBa0IsRUFBRSxLQUFLO1lBQ3pCLHlCQUF5QixFQUFFLElBQUk7WUFDL0IsMEJBQTBCLEVBQUUsSUFBSTtZQUNoQyx1QkFBdUIsRUFBRSxLQUFLO1lBQzlCLG9CQUFvQixFQUFFLEtBQUs7U0FDNUIsQ0FBQyxDQUFDO0lBSUgsQ0FBQztJQUVRLFFBQVEsQ0FBQyxLQUFxQztRQUNyRCxPQUFPLEtBQUs7YUFDVCxRQUFRLENBQUMsTUFBTSxD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QUFDLFNBQVMsQ0FDMUMsSUFBSSxDQUFDLEtBQUssRUFDVixHQUF1QixFQUN2QixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQzdCLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFDaEMsR0FBRyxPQUFPLENBQ1gsQ0FBQztRQUNGLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3pCLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUN4QixDQUFDLEVBQ0QsSUFBSSxDQUFDLEtBQUssRUFDVixFQUFFLEVBQ0YsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFDckIsR0FBRyxDQUNKLENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLHNCQUFzQixDQUFDLEdBQWlCLEVBQUUsS0FBUTtRQUN4RCxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1QixHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTWF5YmVDb250ZXh0dWFsQXJnIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQge1xuICBDb250ZXh0T2YsXG4gIERpcmVjdGlvbkxpbWl0T2Zmc2V0LFxuICBGbGFnc09mLFxuICBPYnNlcnZlckhhbmRsZXIsXG4gIE9yZGVyRGlyZWN0aW9uLFxuICBQYWdpbmF0b3IsXG4gIFBlcnNpc3RlbmNlS2V5cyxcbiAgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLFxuICBSZXBvc2l0b3J5LFxuICBTZXJpYWxpemVkUGFnZSxcbn0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyB0eXBlIEZhYnJpY0NsaWVudEFkYXB0ZXIgfSBmcm9tIFwiLi9GYWJyaWNDbGllbnRBZGFwdGVyXCI7XG5pbXBvcnQge1xuICBCdWxrQ3J1ZE9wZXJhdGlvbktleXMsXG4gIGVuZm9yY2VEQkRlY29yYXRvcnMsXG4gIE9wZXJhdGlvbktleXMsXG4gIFByaW1hcnlLZXlUeXBlLFxuICByZWR1Y2VFcnJvcnNUb1ByaW50LFxuICBWYWxpZGF0aW9uRXJyb3IsXG59IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgQ291Y2hEQktleXMgfSBmcm9tIFwiQGRlY2FmLXRzL2Zvci1jb3VjaGRiXCI7XG5pbXBvcnQgeyBGYWJyaWNDbGllbnRQYWdpbmF0b3IgfSBmcm9tIFwiLi9GYWJyaWNDbGllbnRQYWdpbmF0b3JcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmVwb3NpdG9yeSBpbXBsZW1lbnRhdGlvbiBmb3IgRmFicmljIGNsaWVudCBvcGVyYXRpb25zXG4gKiBAc3VtbWFyeSBFeHRlbmRzIHRoZSBnZW5lcmljIFJlcG9zaXRvcnkgdG8gcHJlcGFyZSBjb250ZXh0IGFuZCBhcmd1bWVudHMgZm9yIENSVUQgb3BlcmF0aW9ucyBleGVjdXRlZCB2aWEgYSBGYWJyaWMgY2xpZW50IEFkYXB0ZXIsIHdpcmluZyBSZXBvc2l0b3J5RmxhZ3MgYW5kIEZhYnJpYy1zcGVjaWZpYyBvdmVycmlkZXMuXG4gKiBAdGVtcGxhdGUgTSBleHRlbmRzIE1vZGVsIC0gVGhlIG1vZGVsIHR5cGUgaGFuZGxlZCBieSB0aGlzIHJlcG9zaXRvcnlcbiAqIEBwYXJhbSB7QWRhcHRlcjxhbnksIE1hbmdvUXVlcnksIEZhYnJpY0ZsYWdzLCBDb250ZXh0PEZhYnJpY0ZsYWdzPj59IFthZGFwdGVyXSAtIE9wdGlvbmFsIGFkYXB0ZXIgaW5zdGFuY2UgdXNlZCB0byBleGVjdXRlIG9wZXJhdGlvbnNcbiAqIEBwYXJhbSB7Q29uc3RydWN0b3I8TT59IFtjbGF6el0gLSBPcHRpb25hbCBtb2RlbCBjb25zdHJ1Y3RvciB1c2VkIGJ5IHRoZSByZXBvc2l0b3J5XG4gKiBAcmV0dXJuIHt2b2lkfVxuICogQGNsYXNzIEZhYnJpY0NsaWVudFJlcG9zaXRvcnlcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG4gKiBpbXBvcnQgeyBGYWJyaWNDbGllbnRSZXBvc2l0b3J5IH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItZmFicmljXCI7XG4gKlxuICogY2xhc3MgVXNlciBleHRlbmRzIE1vZGVsIHsgaWQhOiBzdHJpbmc7IG5hbWUhOiBzdHJpbmc7IH1cbiAqIGNvbnN0IHJlcG8gPSBuZXcgRmFicmljQ2xpZW50UmVwb3NpdG9yeTxVc2VyPigpO1xuICogY29uc3QgY3JlYXRlZCA9IGF3YWl0IHJlcG8uY3JlYXRlKG5ldyBVc2VyKHsgaWQ6IFwiMVwiLCBuYW1lOiBcIkFsaWNlXCIgfSkpO1xuICogY29uc3QgbG9hZGVkID0gYXdhaXQgcmVwby5yZWFkKFwiMVwiKTtcbiAqXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IEFwcFxuICogICBwYXJ0aWNpcGFudCBSZXBvIGFzIEZhYnJpY0NsaWVudFJlcG9zaXRvcnlcbiAqICAgcGFydGljaXBhbnQgQWRhcHRlclxuICogICBBcHAtPj5SZXBvOiBjcmVhdGUobW9kZWwpXG4gKiAgIFJlcG8tPj5SZXBvOiBjcmVhdGVQcmVmaXgobW9kZWwsIC4uLmFyZ3MpXG4gKiAgIFJlcG8tPj5BZGFwdGVyOiBjcmVhdGUodGFibGUsIGlkLCBtb2RlbCwgZmxhZ3MpXG4gKiAgIEFkYXB0ZXItLT4+UmVwbzogcmVzdWx0XG4gKiAgIFJlcG8tLT4+QXBwOiBtb2RlbFxuICovXG5leHBvcnQgY2xhc3MgRmFicmljQ2xpZW50UmVwb3NpdG9yeTxcbiAgTSBleHRlbmRzIE1vZGVsLFxuICBBIGV4dGVuZHMgRmFicmljQ2xpZW50QWRhcHRlciA9IEZhYnJpY0NsaWVudEFkYXB0ZXIsXG4+IGV4dGVuZHMgUmVwb3NpdG9yeTxNLCBBPiB7XG4gIHByb3RlY3RlZCBvdmVycmlkZSBfb3ZlcnJpZGVzID0gT2JqZWN0LmFzc2lnbih7fSwgc3VwZXJbXCJfb3ZlcnJpZGVzXCJdLCB7XG4gICAgaWdub3JlVmFsaWRhdGlvbjogdHJ1ZSxcbiAgICBpZ25vcmVIYW5kbGVyczogdHJ1ZSxcbiAgICBhbGxvd1Jhd1N0YXRlbWVudHM6IGZhbHNlLFxuICAgIGZvcmNlUHJlcGFyZVNpbXBsZVF1ZXJpZXM6IHRydWUsXG4gICAgZm9yY2VQcmVwYXJlQ29tcGxleFF1ZXJpZXM6IHRydWUsXG4gICAgYWxsb3dHZW5lcmF0aW9uT3ZlcnJpZGU6IGZhbHNlLFxuICAgIHJlYnVpbGRXaXRoVHJhbnNpZW50OiBmYWxzZSxcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoYWRhcHRlcj86IEEsIGNsYXp6PzogQ29uc3RydWN0b3I8TT4sIGZvcmNlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBzdXBlcihhZGFwdGVyLCBjbGF6eiwgZm9yY2UpO1xuICB9XG5cbiAgb3ZlcnJpZGUgb3ZlcnJpZGUoZmxhZ3M6IFBhcnRpYWw8RmxhZ3NPZjxDb250ZXh0T2Y8QT4+Pik6IHRoaXMge1xuICAgIHJldHVybiBzdXBlclxuICAgICAgLm92ZXJyaWRlKE9iamVjdC5hc3NpZ24oe30sIGZsYWdzLCB0aGlzLl9vdmVycmlkZXMpKVxuICAgICAgLmZvcihmbGFncyBhcyBhbnkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIE9ic2VydmVySGFuZGxlcigpOiBPYnNlcnZlckhhbmRsZXIge1xuICAgIHJldHVybiBzdXBlci5PYnNlcnZlckhhbmRsZXIoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIHBhZ2luYXRlQnkoXG4gICAga2V5OiBrZXlvZiBNLFxuICAgIG9yZGVyOiBPcmRlckRpcmVjdGlvbixcbiAgICByZWY6IE9taXQ8RGlyZWN0aW9uTGltaXRPZmZzZXQsIFwiZGlyZWN0aW9uXCI+ID0ge1xuICAgICAgb2Zmc2V0OiAxLFxuICAgICAgbGltaXQ6IDEwLFxuICAgIH0sXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPENvbnRleHRPZjxBPj5cbiAgKTogUHJvbWlzZTxTZXJpYWxpemVkUGFnZTxNPj4ge1xuICAgIGNvbnN0IHsgbG9nLCBjdHhBcmdzIH0gPSAoXG4gICAgICBhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBQcmVwYXJlZFN0YXRlbWVudEtleXMuUEFHRV9CWSwgdHJ1ZSlcbiAgICApLmZvcih0aGlzLnBhZ2luYXRlQnkpO1xuICAgIGxvZy52ZXJib3NlKFxuICAgICAgYHBhZ2luYXRpbmcgJHtNb2RlbC50YWJsZU5hbWUodGhpcy5jbGFzcyl9IHdpdGggcGFnZSBzaXplICR7cmVmLmxpbWl0fWBcbiAgICApO1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudChcbiAgICAgIHRoaXMucGFnaW5hdGVCeS5uYW1lLFxuICAgICAga2V5LFxuICAgICAgb3JkZXIsXG4gICAgICB7IGxpbWl0OiByZWYubGltaXQsIG9mZnNldDogcmVmLm9mZnNldCwgYm9va21hcms6IHJlZi5ib29rbWFyayB9LFxuICAgICAgLi4uY3R4QXJnc1xuICAgICk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBsaXN0QnkoXG4gICAga2V5OiBrZXlvZiBNLFxuICAgIG9yZGVyOiBPcmRlckRpcmVjdGlvbixcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8Q29udGV4dE9mPEE+PlxuICApOiBQcm9taXNlPE1bXT4ge1xuICAgIGNvbnN0IHsgbG9nLCBjdHhBcmdzIH0gPSAoXG4gICAgICBhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBQcmVwYXJlZFN0YXRlbWVudEtleXMuTElTVF9CWSwgdHJ1ZSlcbiAgICApLmZvcih0aGlzLmxpc3RCeSk7XG4gICAgbG9nLnZlcmJvc2UoXG4gICAgICBgbGlzdGluZyAke01vZGVsLnRhYmxlTmFtZSh0aGlzLmNsYXNzKX0gYnkgJHtrZXkgYXMgc3RyaW5nfSAke29yZGVyfWBcbiAgICApO1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5zdGF0ZW1lbnQoXG4gICAgICB0aGlzLmxpc3RCeS5uYW1lLFxuICAgICAga2V5LFxuICAgICAgb3JkZXIsXG4gICAgICAuLi5jdHhBcmdzXG4gICAgKSkgYXMgYW55O1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZmluZEJ5KFxuICAgIGtleToga2V5b2YgTSxcbiAgICB2YWx1ZTogYW55LFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxDb250ZXh0T2Y8QT4+XG4gICk6IFByb21pc2U8TVtdPiB7XG4gICAgY29uc3QgeyBsb2csIGN0eEFyZ3MgfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFByZXBhcmVkU3RhdGVtZW50S2V5cy5GSU5EX0JZLCB0cnVlKVxuICAgICkuZm9yKHRoaXMuZmluZEJ5KTtcbiAgICBsb2cudmVyYm9zZShcbiAgICAgIGBmaW5kaW5nIGFsbCAke01vZGVsLnRhYmxlTmFtZSh0aGlzLmNsYXNzKX0gd2l0aCAke2tleSBhcyBzdHJpbmd9ICR7dmFsdWV9YFxuICAgICk7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLnN0YXRlbWVudChcbiAgICAgIHRoaXMuZmluZEJ5Lm5hbWUsXG4gICAgICBrZXksXG4gICAgICB2YWx1ZSxcbiAgICAgIC4uLmN0eEFyZ3NcbiAgICApKSBhcyBhbnk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBmaW5kT25lQnkoXG4gICAga2V5OiBrZXlvZiBNLFxuICAgIHZhbHVlOiBhbnksXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPENvbnRleHRPZjxBPj5cbiAgKTogUHJvbWlzZTxNPiB7XG4gICAgY29uc3QgeyBsb2csIGN0eEFyZ3MgfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFByZXBhcmVkU3RhdGVtZW50S2V5cy5GSU5EX09ORV9CWSwgdHJ1ZSlcbiAgICApLmZvcih0aGlzLmZpbmRPbmVCeSk7XG4gICAgbG9nLnZlcmJvc2UoXG4gICAgICBgZmluZGluZyBPbmUgJHtNb2RlbC50YWJsZU5hbWUodGhpcy5jbGFzcyl9IHdpdGggJHtrZXkgYXMgc3RyaW5nfSAke3ZhbHVlfWBcbiAgICApO1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5zdGF0ZW1lbnQoXG4gICAgICB0aGlzLmZpbmRPbmVCeS5uYW1lLFxuICAgICAga2V5LFxuICAgICAgdmFsdWUsXG4gICAgICAuLi5jdHhBcmdzXG4gICAgKSkgYXMgYW55O1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZmluZChcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIG9yZGVyOiBPcmRlckRpcmVjdGlvbiA9IE9yZGVyRGlyZWN0aW9uLkFTQyxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8Q29udGV4dE9mPEE+PlxuICApOiBQcm9taXNlPE1bXT4ge1xuICAgIGNvbnN0IHsgbG9nLCBjdHhBcmdzIH0gPSAoXG4gICAgICBhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBQcmVwYXJlZFN0YXRlbWVudEtleXMuRklORCwgdHJ1ZSlcbiAgICApLmZvcih0aGlzLmZpbmQpO1xuICAgIGxvZy52ZXJib3NlKFxuICAgICAgYGZpbmRpbmcgJHtNb2RlbC50YWJsZU5hbWUodGhpcy5jbGFzcyl9IGJ5IGRlZmF1bHQgcXVlcnkgYXR0cmlidXRlc2BcbiAgICApO1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5zdGF0ZW1lbnQoXG4gICAgICB0aGlzLmZpbmQubmFtZSxcbiAgICAgIHZhbHVlLFxuICAgICAgb3JkZXIsXG4gICAgICAuLi5jdHhBcmdzXG4gICAgKSkgYXMgYW55O1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgcGFnZShcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIGRpcmVjdGlvbjogT3JkZXJEaXJlY3Rpb24gPSBPcmRlckRpcmVjdGlvbi5BU0MsXG4gICAgcmVmOiBPbWl0PERpcmVjdGlvbkxpbWl0T2Zmc2V0LCBcImRpcmVjdGlvblwiPiA9IHtcbiAgICAgIG9mZnNldDogMSxcbiAgICAgIGxpbWl0OiAxMCxcbiAgICB9LFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxDb250ZXh0T2Y8QT4+XG4gICk6IFByb21pc2U8U2VyaWFsaXplZFBhZ2U8TT4+IHtcbiAgICBjb25zdCB7IGxvZywgY3R4QXJncyB9ID0gKFxuICAgICAgYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLlBBR0UsIHRydWUpXG4gICAgKS5mb3IodGhpcy5wYWdlKTtcbiAgICBsb2cudmVyYm9zZShcbiAgICAgIGBwYWdpbmcgJHtNb2RlbC50YWJsZU5hbWUodGhpcy5jbGFzcyl9IGJ5IGRlZmF1bHQgcXVlcnkgYXR0cmlidXRlc2BcbiAgICApO1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5zdGF0ZW1lbnQoXG4gICAgICB0aGlzLnBhZ2UubmFtZSxcbiAgICAgIHZhbHVlLFxuICAgICAgZGlyZWN0aW9uLFxuICAgICAgcmVmLFxuICAgICAgLi4uY3R4QXJnc1xuICAgICkpIGFzIGFueTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIHN0YXRlbWVudChcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPENvbnRleHRPZjxBPj5cbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCB7IGxvZywgY3R4LCBjdHhBcmdzIH0gPSAoXG4gICAgICBhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBQZXJzaXN0ZW5jZUtleXMuU1RBVEVNRU5ULCB0cnVlKVxuICAgICkuZm9yKHRoaXMuc3RhdGVtZW50KTtcbiAgICBsb2cudmVyYm9zZShgRXhlY3V0aW5nIHByZXBhcmVkIHN0YXRlbWVudCAke25hbWV9YCk7XG4gICAgY29uc3QgY2FsbEFyZ3MgPSBjdHhBcmdzLnNsaWNlKDAsIC0xKTtcbiAgICBjb25zdCByZXN1bHQgPSBKU09OLnBhcnNlKFxuICAgICAgdGhpcy5hZGFwdGVyLmRlY29kZShcbiAgICAgICAgYXdhaXQgdGhpcy5hZGFwdGVyLmV2YWx1YXRlVHJhbnNhY3Rpb24oXG4gICAgICAgICAgY3R4LFxuICAgICAgICAgIFBlcnNpc3RlbmNlS2V5cy5TVEFURU1FTlQsXG4gICAgICAgICAgW25hbWUsIEpTT04uc3RyaW5naWZ5KGNhbGxBcmdzKV0sXG4gICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICB0aGlzLmNsYXNzLm5hbWVcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG5cbiAgICBsZXQgaHlkcmF0ZWQ6IGFueTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XG4gICAgICBoeWRyYXRlZCA9IHJlc3VsdC5tYXAoKHI6IGFueSkgPT5cbiAgICAgICAgKHIgYXMgYW55KVtDb3VjaERCS2V5cy5UQUJMRV0gJiZcbiAgICAgICAgKHIgYXMgYW55KVtDb3VjaERCS2V5cy5UQUJMRV0gPT09IE1vZGVsLnRhYmxlTmFtZSh0aGlzLmNsYXNzKVxuICAgICAgICAgID8gKG5ldyB0aGlzLmNsYXNzKHIpIGFzIE0pXG4gICAgICAgICAgOiByXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAocmVzdWx0IGFzIGFueSlbQ291Y2hEQktleXMuVEFCTEVdICYmXG4gICAgICAocmVzdWx0IGFzIGFueSlbQ291Y2hEQktleXMuVEFCTEVdID09PSBNb2RlbC50YWJsZU5hbWUodGhpcy5jbGFzcylcbiAgICApIHtcbiAgICAgIGh5ZHJhdGVkID0gbmV3IHRoaXMuY2xhc3MocmVzdWx0KSBhcyBNO1xuICAgIH0gZWxzZSBpZiAoRmFicmljQ2xpZW50UGFnaW5hdG9yLmlzU2VyaWFsaXplZFBhZ2UocmVzdWx0KSkge1xuICAgICAgaHlkcmF0ZWQgPSBPYmplY3QuYXNzaWduKHJlc3VsdCwge1xuICAgICAgICBkYXRhOiByZXN1bHQuZGF0YS5tYXAoKGQ6IGFueSkgPT4gbmV3IHRoaXMuY2xhc3MoZCkgYXMgTSksXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaHlkcmF0ZWQgPSByZXN1bHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXBwbHlBZnRlclJlYWQoaHlkcmF0ZWQsIGN0eCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFwcGx5QWZ0ZXJSZWFkKHZhbHVlOiBhbnksIGN0eDogQ29udGV4dE9mPEE+KTogUHJvbWlzZTxhbnk+IHtcbiAgICBpZiAoIWN0eC5nZXRPclVuZGVmaW5lZChcImFmdGVyUXVlcnlIYW5kbGVyc1wiKSkgcmV0dXJuIHZhbHVlO1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1vZGVsKSB7XG4gICAgICBhd2FpdCBlbmZvcmNlREJEZWNvcmF0b3JzPE0sIFJlcG9zaXRvcnk8TSwgQT4sIGFueT4oXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGN0eCxcbiAgICAgICAgdmFsdWUgYXMgTSxcbiAgICAgICAgT3BlcmF0aW9uS2V5cy5SRUFELFxuICAgICAgICBPcGVyYXRpb25LZXlzLkFGVEVSXG4gICAgICApO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKHZhbHVlLm1hcCgoZW50cnkpID0+IHRoaXMuYXBwbHlBZnRlclJlYWQoZW50cnksIGN0eCkpKTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKEZhYnJpY0NsaWVudFBhZ2luYXRvci5pc1NlcmlhbGl6ZWRQYWdlKHZhbHVlKSkge1xuICAgICAgYXdhaXQgdGhpcy5hcHBseUFmdGVyUmVhZCh2YWx1ZS5kYXRhLCBjdHgpO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBjb3VudE9mKFxuICAgIGtleT86IGtleW9mIE0sXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPENvbnRleHRPZjxBPj5cbiAgKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCB7IGxvZywgY3R4QXJncyB9ID0gKFxuICAgICAgYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLkNPVU5UX09GLCB0cnVlKVxuICAgICkuZm9yKHRoaXMuY291bnRPZik7XG4gICAgbG9nLnZlcmJvc2UoXG4gICAgICBgY291bnRpbmcgJHtNb2RlbC50YWJsZU5hbWUodGhpcy5jbGFzcyl9JHtrZXkgPyBgIGJ5ICR7a2V5IGFzIHN0cmluZ31gIDogXCJcIn1gXG4gICAgKTtcbiAgICBjb25zdCBzdG10QXJncyA9IGtleSA/IFtrZXksIC4uLmN0eEFyZ3NdIDogY3R4QXJncztcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQoUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLkNPVU5UX09GLCAuLi5zdG10QXJncyk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBtYXhPZjxLIGV4dGVuZHMga2V5b2YgTT4oXG4gICAga2V5OiBLLFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxDb250ZXh0T2Y8QT4+XG4gICk6IFByb21pc2U8TVtLXT4ge1xuICAgIGNvbnN0IHsgbG9nLCBjdHhBcmdzIH0gPSAoXG4gICAgICBhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBQcmVwYXJlZFN0YXRlbWVudEtleXMuTUFYX09GLCB0cnVlKVxuICAgICkuZm9yKHRoaXMubWF4T2YpO1xuICAgIGxvZy52ZXJib3NlKFxuICAgICAgYGZpbmRpbmcgbWF4IG9mICR7a2V5IGFzIHN0cmluZ30gaW4gJHtNb2RlbC50YWJsZU5hbWUodGhpcy5jbGFzcyl9YFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50KFByZXBhcmVkU3RhdGVtZW50S2V5cy5NQVhfT0YsIGtleSwgLi4uY3R4QXJncyk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBtaW5PZjxLIGV4dGVuZHMga2V5b2YgTT4oXG4gICAga2V5OiBLLFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxDb250ZXh0T2Y8QT4+XG4gICk6IFByb21pc2U8TVtLXT4ge1xuICAgIGNvbnN0IHsgbG9nLCBjdHhBcmdzIH0gPSAoXG4gICAgICBhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBQcmVwYXJlZFN0YXRlbWVudEtleXMuTUlOX09GLCB0cnVlKVxuICAgICkuZm9yKHRoaXMubWluT2YpO1xuICAgIGxvZy52ZXJib3NlKFxuICAgICAgYGZpbmRpbmcgbWluIG9mICR7a2V5IGFzIHN0cmluZ30gaW4gJHtNb2RlbC50YWJsZU5hbWUodGhpcy5jbGFzcyl9YFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50KFByZXBhcmVkU3RhdGVtZW50S2V5cy5NSU5fT0YsIGtleSwgLi4uY3R4QXJncyk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBhdmdPZjxLIGV4dGVuZHMga2V5b2YgTT4oXG4gICAga2V5OiBLLFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxDb250ZXh0T2Y8QT4+XG4gICk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgeyBsb2csIGN0eEFyZ3MgfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFByZXBhcmVkU3RhdGVtZW50S2V5cy5BVkdfT0YsIHRydWUpXG4gICAgKS5mb3IodGhpcy5hdmdPZik7XG4gICAgbG9nLnZlcmJvc2UoXG4gICAgICBgY2FsY3VsYXRpbmcgYXZnIG9mICR7a2V5IGFzIHN0cmluZ30gaW4gJHtNb2RlbC50YWJsZU5hbWUodGhpcy5jbGFzcyl9YFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50KFByZXBhcmVkU3RhdGVtZW50S2V5cy5BVkdfT0YsIGtleSwgLi4uY3R4QXJncyk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBzdW1PZjxLIGV4dGVuZHMga2V5b2YgTT4oXG4gICAga2V5OiBLLFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxDb250ZXh0T2Y8QT4+XG4gICk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgeyBsb2csIGN0eEFyZ3MgfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFByZXBhcmVkU3RhdGVtZW50S2V5cy5TVU1fT0YsIHRydWUpXG4gICAgKS5mb3IodGhpcy5zdW1PZik7XG4gICAgbG9nLnZlcmJvc2UoXG4gICAgICBgY2FsY3VsYXRpbmcgc3VtIG9mICR7a2V5IGFzIHN0cmluZ30gaW4gJHtNb2RlbC50YWJsZU5hbWUodGhpcy5jbGFzcyl9YFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50KFByZXBhcmVkU3RhdGVtZW50S2V5cy5TVU1fT0YsIGtleSwgLi4uY3R4QXJncyk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBkaXN0aW5jdE9mPEsgZXh0ZW5kcyBrZXlvZiBNPihcbiAgICBrZXk6IEssXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPENvbnRleHRPZjxBPj5cbiAgKTogUHJvbWlzZTxNW0tdW10+IHtcbiAgICBjb25zdCB7IGxvZywgY3R4QXJncyB9ID0gKFxuICAgICAgYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLkRJU1RJTkNUX09GLCB0cnVlKVxuICAgICkuZm9yKHRoaXMuZGlzdGluY3RPZik7XG4gICAgbG9nLnZlcmJvc2UoXG4gICAgICBgZmluZGluZyBkaXN0aW5jdCB2YWx1ZXMgb2YgJHtrZXkgYXMgc3RyaW5nfSBpbiAke01vZGVsLnRhYmxlTmFtZSh0aGlzLmNsYXNzKX1gXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQoUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLkRJU1RJTkNUX09GLCBrZXksIC4uLmN0eEFyZ3MpO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZ3JvdXBPZjxLIGV4dGVuZHMga2V5b2YgTT4oXG4gICAga2V5OiBLLFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxDb250ZXh0T2Y8QT4+XG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgTVtdPj4ge1xuICAgIGNvbnN0IHsgbG9nLCBjdHhBcmdzIH0gPSAoXG4gICAgICBhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBQcmVwYXJlZFN0YXRlbWVudEtleXMuR1JPVVBfT0YsIHRydWUpXG4gICAgKS5mb3IodGhpcy5ncm91cE9mKTtcbiAgICBsb2cudmVyYm9zZShgZ3JvdXBpbmcgJHtNb2RlbC50YWJsZU5hbWUodGhpcy5jbGFzcyl9IGJ5ICR7a2V5IGFzIHN0cmluZ31gKTtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQoUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLkdST1VQX09GLCBrZXksIC4uLmN0eEFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgaGVhbHRoY2hlY2soLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPENvbnRleHRPZjxBPj4pIHtcbiAgICBjb25zdCB7IGN0eEFyZ3MgfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMuaGVhbHRoY2hlY2spO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5hZGFwdGVyLmhlYWx0aGNoZWNrKHRoaXMuY2xhc3MsIC4uLmN0eEFyZ3MpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGNyZWF0ZShcbiAgICBtb2RlbDogTSxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8Q29udGV4dE9mPEE+PlxuICApOiBQcm9taXNlPE0+IHtcbiAgICBjb25zdCB7IGN0eCwgbG9nLCBjdHhBcmdzIH0gPSB0aGlzLmxvZ0N0eChhcmdzLCB0aGlzLmNyZWF0ZSk7XG4gICAgbG9nLmRlYnVnKFxuICAgICAgYENyZWF0aW5nIG5ldyAke3RoaXMuY2xhc3MubmFtZX0gaW4gdGFibGUgJHtNb2RlbC50YWJsZU5hbWUodGhpcy5jbGFzcyl9YFxuICAgICk7XG4gICAgdGhpcy5lbnN1cmVMZWdhY3lNaXJyb3JGbGFnKGN0eCwgbW9kZWwpO1xuICAgIGNvbnN0IHByZXBhcmVkID0gdGhpcy5hZGFwdGVyLnByZXBhcmUobW9kZWwsIGN0eCk7XG4gICAgY29uc3QgeyByZWNvcmQsIGlkLCB0cmFuc2llbnQgfSA9IHByZXBhcmVkO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYWRhcHRlci5jcmVhdGUoXG4gICAgICB0aGlzLmNsYXNzLFxuICAgICAgaWQsXG4gICAgICByZWNvcmQsXG4gICAgICB0cmFuc2llbnQsXG4gICAgICAuLi5jdHhBcmdzXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnJldmVydDxNPihyZXN1bHQsIHRoaXMuY2xhc3MsIGlkLCB0cmFuc2llbnQsIGN0eCk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyB1cGRhdGUoXG4gICAgbW9kZWw6IE0sXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPENvbnRleHRPZjxBPj5cbiAgKTogUHJvbWlzZTxNPiB7XG4gICAgY29uc3QgeyBjdHhBcmdzLCBsb2csIGN0eCB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy51cGRhdGUpO1xuICAgIHRoaXMuZW5zdXJlTGVnYWN5TWlycm9yRmxhZyhjdHgsIG1vZGVsKTtcbiAgICBjb25zdCBwcmVwYXJlZCA9IHRoaXMuYWRhcHRlci5wcmVwYXJlKG1vZGVsLCBjdHgpO1xuICAgIGNvbnN0IHsgaWQsIHRyYW5zaWVudCB9ID0gcHJlcGFyZWQ7XG4gICAgbGV0IHJlY29yZCA9IHByZXBhcmVkLnJlY29yZDtcbiAgICBsb2cuZGVidWcoXG4gICAgICBgdXBkYXRpbmcgJHt0aGlzLmNsYXNzLm5hbWV9IGluIHRhYmxlICR7TW9kZWwudGFibGVOYW1lKHRoaXMuY2xhc3MpfSB3aXRoIGlkICR7aWR9YFxuICAgICk7XG4gICAgcmVjb3JkID0gYXdhaXQgdGhpcy5hZGFwdGVyLnVwZGF0ZShcbiAgICAgIHRoaXMuY2xhc3MsXG4gICAgICBpZCxcbiAgICAgIHJlY29yZCxcbiAgICAgIHRyYW5zaWVudCxcbiAgICAgIC4uLmN0eEFyZ3NcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIucmV2ZXJ0PE0+KHJlY29yZCwgdGhpcy5jbGFzcywgaWQsIHRyYW5zaWVudCwgY3R4KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBjcmVhdGVBbGxQcmVmaXgoXG4gICAgbW9kZWxzOiBNW10sXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPENvbnRleHRPZjxBPj5cbiAgKTogUHJvbWlzZTxbTVtdLCAuLi5hbnlbXSwgQ29udGV4dE9mPEE+XT4ge1xuICAgIGNvbnN0IHsgY3R4LCBjdHhBcmdzIH0gPSAoXG4gICAgICBhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBPcGVyYXRpb25LZXlzLkNSRUFURSwgdHJ1ZSlcbiAgICApLmZvcih0aGlzLmNyZWF0ZUFsbFByZWZpeCk7XG4gICAgY29uc3QgaWdub3JlSGFuZGxlcnMgPSBjdHguZ2V0KFwiaWdub3JlSGFuZGxlcnNcIik7XG4gICAgY29uc3QgaWdub3JlVmFsaWRhdGUgPSBjdHguZ2V0KFwiaWdub3JlVmFsaWRhdGlvblwiKTtcbiAgICBpZiAoIW1vZGVscy5sZW5ndGgpIHJldHVybiBbbW9kZWxzLCAuLi5jdHhBcmdzXSBhcyBhbnk7XG5cbiAgICBtb2RlbHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIG1vZGVscy5tYXAoYXN5bmMgKG0pID0+IHtcbiAgICAgICAgbSA9IG5ldyB0aGlzLmNsYXNzKG0pO1xuICAgICAgICBpZiAoIWlnbm9yZUhhbmRsZXJzKVxuICAgICAgICAgIGF3YWl0IGVuZm9yY2VEQkRlY29yYXRvcnM8TSwgUmVwb3NpdG9yeTxNLCBBPiwgYW55PihcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICBjdHgsXG4gICAgICAgICAgICBtLFxuICAgICAgICAgICAgT3BlcmF0aW9uS2V5cy5DUkVBVEUsXG4gICAgICAgICAgICBPcGVyYXRpb25LZXlzLk9OXG4gICAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBpZiAoIWlnbm9yZVZhbGlkYXRlKSB7XG4gICAgICBjb25zdCBpZ25vcmVkUHJvcHMgPSBjdHguZ2V0KFwiaWdub3JlZFZhbGlkYXRpb25Qcm9wZXJ0aWVzXCIpIHx8IFtdO1xuXG4gICAgICBjb25zdCBlcnJvcnMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgbW9kZWxzLm1hcCgobSkgPT4gUHJvbWlzZS5yZXNvbHZlKG0uaGFzRXJyb3JzKC4uLmlnbm9yZWRQcm9wcykpKVxuICAgICAgKTtcblxuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlcyA9IHJlZHVjZUVycm9yc1RvUHJpbnQoZXJyb3JzKTtcblxuICAgICAgaWYgKGVycm9yTWVzc2FnZXMpIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoZXJyb3JNZXNzYWdlcyk7XG4gICAgfVxuICAgIHJldHVybiBbbW9kZWxzLCAuLi5jdHhBcmdzXSBhcyBhbnk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBjcmVhdGVBbGwoXG4gICAgbW9kZWxzOiBNW10sXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPENvbnRleHRPZjxBPj5cbiAgKTogUHJvbWlzZTxNW10+IHtcbiAgICBpZiAoIW1vZGVscy5sZW5ndGgpIHJldHVybiBtb2RlbHM7XG4gICAgY29uc3QgeyBjdHgsIGxvZywgY3R4QXJncyB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy5jcmVhdGVBbGwpO1xuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIGBDcmVhdGluZyAke21vZGVscy5sZW5ndGh9IG5ldyAke3RoaXMuY2xhc3MubmFtZX0gaW4gdGFibGUgJHtNb2RlbC50YWJsZU5hbWUodGhpcy5jbGFzcyl9YFxuICAgICk7XG5cbiAgICBtb2RlbHMuZm9yRWFjaCgobW9kZWwpID0+IHRoaXMuZW5zdXJlTGVnYWN5TWlycm9yRmxhZyhjdHgsIG1vZGVsKSk7XG4gICAgY29uc3QgcHJlcGFyZWQgPSBtb2RlbHMubWFwKChtKSA9PiB0aGlzLmFkYXB0ZXIucHJlcGFyZShtLCBjdHgpKTtcbiAgICBjb25zdCBpZHMgPSBwcmVwYXJlZC5tYXAoKHApID0+IHAuaWQpO1xuICAgIGNvbnN0IHBheWxvYWRzID0gcHJlcGFyZWQubWFwKChwKSA9PiBwLnJlY29yZCk7XG4gICAgY29uc3QgdHJhbnNpZW50cyA9IHByZXBhcmVkLm1hcCgocCkgPT4gcC50cmFuc2llbnQpO1xuICAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCB0aGlzLmFkYXB0ZXIuY3JlYXRlQWxsKFxuICAgICAgdGhpcy5jbGFzcyxcbiAgICAgIGlkcyBhcyBQcmltYXJ5S2V5VHlwZVtdLFxuICAgICAgcGF5bG9hZHMsXG4gICAgICB0cmFuc2llbnRzLFxuICAgICAgLi4uY3R4QXJnc1xuICAgICk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgY3JlYXRlZC5tYXAoYXN5bmMgKHIsIGkpID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSBpZHNbaV07XG4gICAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIucmV2ZXJ0PE0+KHIsIHRoaXMuY2xhc3MsIGlkLCB0cmFuc2llbnRzW2ldLCBjdHgpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgcmVhZEFsbChcbiAgICBrZXlzOiBQcmltYXJ5S2V5VHlwZVtdLFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxDb250ZXh0T2Y8QT4+XG4gICkge1xuICAgIGNvbnN0IHsgY3R4LCBsb2csIGN0eEFyZ3MgfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMucmVhZEFsbCk7XG4gICAgbG9nLmRlYnVnKFxuICAgICAgYHJlYWRpbmcgJHtrZXlzLmxlbmd0aH0gJHt0aGlzLmNsYXNzLm5hbWV9IGluIHRhYmxlICR7TW9kZWwudGFibGVOYW1lKHRoaXMuY2xhc3MpfWBcbiAgICApO1xuICAgIGNvbnN0IHJlY29yZHMgPSBhd2FpdCB0aGlzLmFkYXB0ZXIucmVhZEFsbCh0aGlzLmNsYXNzLCBrZXlzLCAuLi5jdHhBcmdzKTtcbiAgICByZXR1cm4gcmVjb3Jkcy5tYXAoKHIsIGkpID0+XG4gICAgICB0aGlzLmFkYXB0ZXIucmV2ZXJ0KHIsIHRoaXMuY2xhc3MsIGtleXNbaV0sIHt9LCBjdHgpXG4gICAgKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIHVwZGF0ZUFsbChcbiAgICBtb2RlbHM6IE1bXSxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8Q29udGV4dE9mPEE+PlxuICApOiBQcm9taXNlPE1bXT4ge1xuICAgIGNvbnN0IHsgY3R4LCBsb2csIGN0eEFyZ3MgfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMudXBkYXRlQWxsKTtcbiAgICBsb2cuZGVidWcoXG4gICAgICBgVXBkYXRpbmcgJHttb2RlbHMubGVuZ3RofSBuZXcgJHt0aGlzLmNsYXNzLm5hbWV9IGluIHRhYmxlICR7TW9kZWwudGFibGVOYW1lKHRoaXMuY2xhc3MpfWBcbiAgICApO1xuXG4gICAgbW9kZWxzLmZvckVhY2goKG1vZGVsKSA9PiB0aGlzLmVuc3VyZUxlZ2FjeU1pcnJvckZsYWcoY3R4LCBtb2RlbCkpO1xuICAgIGNvbnN0IHByZXBhcmVkID0gbW9kZWxzLm1hcCgobSkgPT4gdGhpcy5hZGFwdGVyLnByZXBhcmUobSwgY3R4KSk7XG4gICAgY29uc3QgaWRzID0gcHJlcGFyZWQubWFwKChwKSA9PiBwLmlkKTtcbiAgICBjb25zdCB1cGRhdGVkID0gYXdhaXQgdGhpcy5hZGFwdGVyLnVwZGF0ZUFsbChcbiAgICAgIHRoaXMuY2xhc3MsXG4gICAgICBpZHMgYXMgUHJpbWFyeUtleVR5cGVbXSxcbiAgICAgIHByZXBhcmVkLm1hcCgocikgPT4gci5yZWNvcmQpLFxuICAgICAgcHJlcGFyZWQubWFwKChyKSA9PiByLnRyYW5zaWVudCksXG4gICAgICAuLi5jdHhBcmdzXG4gICAgKTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICB1cGRhdGVkLm1hcChhc3luYyAodSwgaSkgPT4ge1xuICAgICAgICBjb25zdCBpZCA9IGlkc1tpXTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5yZXZlcnQ8TT4oXG4gICAgICAgICAgdSxcbiAgICAgICAgICB0aGlzLmNsYXNzLFxuICAgICAgICAgIGlkLFxuICAgICAgICAgIHByZXBhcmVkW2ldLnRyYW5zaWVudCxcbiAgICAgICAgICBjdHhcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5zdXJlTGVnYWN5TWlycm9yRmxhZyhjdHg6IENvbnRleHRPZjxBPiwgbW9kZWw6IE0pOiB2b2lkIHtcbiAgICBpZiAoTW9kZWwubWlycm9yZWRBdChtb2RlbCkpIHtcbiAgICAgIGN0eC5hY2N1bXVsYXRlKHsgbGVnYWN5OiB0cnVlIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljQ2xpZW50UmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkZhYnJpY0NsaWVudFJlcG9zaXRvcnkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXFHO0FBQ3JHLHlFQUF1RDtBQUN2RCwyREFBb0g7QUFDcEgsdURBQW9EO0FBQ3BELHlFQUFtRTtBQUNuRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSxpQkFBVTtJQUNsRCxZQUFZLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxHQUFHLEtBQUs7UUFDckMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDckQsZ0JBQWdCLEVBQUUsSUFBSTtZQUN0QixjQUFjLEVBQUUsSUFBSTtZQUNwQixrQkFBa0IsRUFBRSxLQUFLO1lBQ3pCLHlCQUF5QixFQUFFLElBQUk7WUFDL0IsMEJBQTBCLEVBQUUsSUFBSTtZQUNoQyx1QkFBdUIsRUFBRSxLQUFLO1lBQzlCLG9CQUFvQixFQUFFLEtBQUs7U0FDOUIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELFFBQVEsQ0FBQyxLQUFLO1FBQ1YsT0FBTyxLQUFLO2FBQ1AsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDbkQsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxlQUFlO1FBQ1gsT0FBTyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUNELEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUc7UUFDL0IsTUFBTSxFQUFFLENBQUM7UUFDVCxLQUFLLEVBQUUsRUFBRTtLQUNaLEVBQUUsR0FBRyxJQUFJO1FBQ04sTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsNEJBQXFCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3RyxHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsNEJBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDckYsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDMUksQ0FBQztJQUNELEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUk7UUFDNUIsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsNEJBQXFCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6RyxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsNEJBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUNELEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUk7UUFDNUIsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsNEJBQXFCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6RyxHQUFHLENBQUMsT0FBTyxDQUFDLGVBQWUsNEJBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUNELEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUk7UUFDL0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsNEJBQXFCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoSCxHQUFHLENBQUMsT0FBTyxDQUFDLGVBQWUsNEJBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMs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SyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJO1FBQzNCLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRSxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksTUFBTSxDQUFDLE1BQU0sUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksYUFBYSw0QkFBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNuRSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqRSxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDM0ksT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMxQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM5RSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUNELHNCQUFzQixDQUFDLEdBQUcsRUFBRSxLQUFLO1FBQzdCLElBQUksNEJBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQixHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDckMsQ0FBQztJQUNMLENBQUM7Q0FDSjtBQTVORCx3REE0TkM7QUFDRCwweXpDQUEweXpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3JkZXJEaXJlY3Rpb24sIFBlcnNpc3RlbmNlS2V5cywgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLCBSZXBvc2l0b3J5LCB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBlbmZvcmNlREJEZWNvcmF0b3JzLCBPcGVyYXRpb25LZXlzLCByZWR1Y2VFcnJvcnNUb1ByaW50LCBWYWxpZGF0aW9uRXJyb3IsIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBDb3VjaERCS2V5cyB9IGZyb20gXCJAZGVjYWYtdHMvZm9yLWNvdWNoZGJcIjtcbmltcG9ydCB7IEZhYnJpY0NsaWVudFBhZ2luYXRvciB9IGZyb20gXCIuL0ZhYnJpY0NsaWVudFBhZ2luYXRvci5qc1wiO1xuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmVwb3NpdG9yeSBpbXBsZW1lbnRhdGlvbiBmb3IgRmFicmljIGNsaWVudCBvcGVyYXRpb25zXG4gKiBAc3VtbWFyeSBFeHRlbmRzIHRoZSBnZW5lcmljIFJlcG9zaXRvcnkgdG8gcHJlcGFyZSBjb250ZXh0IGFuZCBhcmd1bWVudHMgZm9yIENSVUQgb3BlcmF0aW9ucyBleGVjdXRlZCB2aWEgYSBGYWJyaWMgY2xpZW50IEFkYXB0ZXIsIHdpcmluZyBSZXBvc2l0b3J5RmxhZ3MgYW5kIEZhYnJpYy1zcGVjaWZpYyBvdmVycmlkZXMuXG4gKiBAdGVtcGxhdGUgTSBleHRlbmRzIE1vZGVsIC0gVGhlIG1vZGVsIHR5cGUgaGFuZGxlZCBieSB0aGlzIHJlcG9zaXRvcnlcbiAqIEBwYXJhbSB7QWRhcHRlcjxhbnksIE1hbmdvUXVlcnksIEZhYnJpY0ZsYWdzLCBDb250ZXh0PEZhYnJpY0ZsYWdzPj59IFthZGFwdGVyXSAtIE9wdGlvbmFsIGFkYXB0ZXIgaW5zdGFuY2UgdXNlZCB0byBleGVjdXRlIG9wZXJhdGlvbnNcbiAqIEBwYXJhbSB7Q29uc3RydWN0b3I8TT59IFtjbGF6el0gLSBPcHRpb25hbCBtb2RlbCBjb25zdHJ1Y3RvciB1c2VkIGJ5IHRoZSByZXBvc2l0b3J5XG4gKiBAcmV0dXJuIHt2b2lkfVxuICogQGNsYXNzIEZhYnJpY0NsaWVudFJlcG9zaXRvcnlcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG4gKiBpbXBvcnQgeyBGYWJyaWNDbGllbnRSZXBvc2l0b3J5IH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItZmFicmljXCI7XG4gKlxuICogY2xhc3MgVXNlciBleHRlbmRzIE1vZGVsIHsgaWQhOiBzdHJpbmc7IG5hbWUhOiBzdHJpbmc7IH1cbiAqIGNvbnN0IHJlcG8gPSBuZXcgRmFicmljQ2xpZW50UmVwb3NpdG9yeTxVc2VyPigpO1xuICogY29uc3QgY3JlYXRlZCA9IGF3YWl0IHJlcG8uY3JlYXRlKG5ldyBVc2VyKHsgaWQ6IFwiMVwiLCBuYW1lOiBcIkFsaWNlXCIgfSkpO1xuICogY29uc3QgbG9hZGVkID0gYXdhaXQgcmVwby5yZWFkKFwiMVwiKTtcbiAqXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IEFwcFxuICogICBwYXJ0aWNpcGFudCBSZXBvIGFzIEZhYnJpY0NsaWVudFJlcG9zaXRvcnlcbiAqICAgcGFydGljaXBhbnQgQWRhcHRlclxuICogICBBcHAtPj5SZXBvOiBjcmVhdGUobW9kZWwpXG4gKiAgIFJlcG8tPj5SZXBvOiBjcmVhdGVQcmVmaXgobW9kZWwsIC4uLmFyZ3MpXG4gKiAgIFJlcG8tPj5BZGFwdGVyOiBjcmVhdGUodGFibGUsIGlkLCBtb2RlbCwgZmxhZ3MpXG4gKiAgIEFkYXB0ZXItLT4+UmVwbzogcmVzdWx0XG4gKiAgIFJlcG8tLT4+QXBwOiBtb2RlbFxuICovXG5leHBvcnQgY2xhc3MgRmFicmljQ2xpZW50UmVwb3NpdG9yeSBleHRlbmRzIFJlcG9zaXRvcnkge1xuICAgIGNvbnN0cnVjdG9yKGFkYXB0ZXIsIGNsYXp6LCBmb3JjZSA9IGZhbHNlKSB7XG4gICAgICAgIHN1cGVyKGFkYXB0ZXIsIGNsYXp6LCBmb3JjZSk7XG4gICAgICAgIHRoaXMuX292ZXJyaWRlcyA9IE9iamVjdC5hc3NpZ24oe30sIHN1cGVyW1wiX292ZXJyaWRlc1wiXSwge1xuICAgICAgICAgICAgaWdub3JlVmFsaWRhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIGlnbm9yZUhhbmRsZXJzOiB0cnVlLFxuICAgICAgICAgICAgYWxsb3dSYXdTdGF0ZW1lbnRzOiBmYWxzZSxcbiAgICAgICAgICAgIGZvcmNlUHJlcGFyZVNpbXBsZVF1ZXJpZXM6IHRydWUsXG4gICAgICAgICAgICBmb3JjZVByZXBhcmVDb21wbGV4UXVlcmllczogdHJ1ZSxcbiAgICAgICAgICAgIGFsbG93R2VuZXJhdGlvbk92ZXJyaWRlOiBmYWxzZSxcbiAgICAgICAgICAgIHJlYnVpbGRXaXRoVHJhbnNpZW50OiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG92ZXJyaWRlKGZsYWdzKSB7XG4gICAgICAgIHJldHVybiBzdXBlclxuICAgICAgICAgICAgLm92ZXJyaWRlKE9iamVjdC5hc3NpZ24oe30sIGZsYWdzLCB0aGlzLl9vdmVycmlkZXMpKVxuICAgICAgICAgICAgLmZvcihmbGFncyk7XG4gICAgfVxuICAgIE9ic2VydmVySGFuZGxlcigpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLk9ic2VydmVySGFuZGxlcigpO1xuICAgIH1cbiAgICBhc3luYyBwYWdpbmF0ZUJ5KGtleSwgb3JkZXIsIHJlZiA9IHtcbiAgICAgICAgb2Zmc2V0OiAxLFxuICAgICAgICBsaW1pdDogMTAsXG4gICAgfSwgLi4uYXJncykge1xuICAgICAgICBjb25zdCB7IGxvZywgY3R4QXJncyB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFByZXBhcmVkU3RhdGVtZW50S2V5cy5QQUdFX0JZLCB0cnVlKSkuZm9yKHRoaXMucGFnaW5hdGVCeSk7XG4gICAgICAgIGxvZy52ZXJib3NlKGBwYWdpbmF0aW5nICR7TW9kZWwudGFibGVOYW1lKHRoaXMuY2xhc3MpfSB3aXRoIHBhZ2Ugc2l6ZSAke3JlZi5saW1pdH1gKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50KHRoaXMucGFnaW5hdGVCeS5uYW1lLCBrZXksIG9yZGVyLCB7IGxpbWl0OiByZWYubGltaXQsIG9mZnNldDogcmVmLm9mZnNldCwgYm9va21hcms6IHJlZi5ib29rbWFyayB9LCAuLi5jdHhBcmdzKTtcbiAgICB9XG4gICAgYXN5bmMgbGlzdEJ5KGtleSwgb3JkZXIsIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgeyBsb2csIGN0eEFyZ3MgfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBQcmVwYXJlZFN0YXRlbWVudEtleXMuTElTVF9CWSwgdHJ1ZSkpLmZvcih0aGlzLmxpc3RCeSk7XG4gICAgICAgIGxvZy52ZXJib3NlKGBsaXN0aW5nICR7TW9kZWwudGFibGVOYW1lKHRoaXMuY2xhc3MpfSBieSAke2tleX0gJHtvcmRlcn1gKTtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLnN0YXRlbWVudCh0aGlzLmxpc3RCeS5uYW1lLCBrZXksIG9yZGVyLCAuLi5jdHhBcmdzKSk7XG4gICAgfVxuICAgIGFzeW5jIGZpbmRCeShrZXksIHZhbHVlLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IHsgbG9nLCBjdHhBcmdzIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLkZJTkRfQlksIHRydWUpKS5mb3IodGhpcy5maW5kQnkpO1xuICAgICAgICBsb2cudmVyYm9zZShgZmluZGluZyBhbGwgJHtNb2RlbC50YWJsZU5hbWUodGhpcy5jbGFzcyl9IHdpdGggJHtrZXl9ICR7dmFsdWV9YCk7XG4gICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5zdGF0ZW1lbnQodGhpcy5maW5kQnkubmFtZSwga2V5LCB2YWx1ZSwgLi4uY3R4QXJncykpO1xuICAgIH1cbiAgICBhc3luYyBmaW5kT25lQnkoa2V5LCB2YWx1ZSwgLi4uYXJncykge1xuICAgICAgICBjb25zdCB7IGxvZywgY3R4QXJncyB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFByZXBhcmVkU3RhdGVtZW50S2V5cy5GSU5EX09ORV9CWSwgdHJ1ZSkpLmZvcih0aGlzLmZpbmRPbmVCeSk7XG4gICAgICAgIGxvZy52ZXJib3NlKGBmaW5kaW5nIE9uZSAke01vZGVsLnRhYmxlTmFtZSh0aGlzLmNsYXNzKX0gd2l0aCAke2tleX0gJHt2YWx1ZX1gKTtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLnN0YXRlbWVudCh0aGlzLmZpbmRPbmVCeS5uYW1lLCBrZXksIHZhbHVlLCAuLi5jdHhBcmdzKSk7XG4gICAgfVxuICAgIGFzeW5jIGZpbmQodmFsdWUsIG9yZGVyID0gT3JkZXJEaXJlY3Rpb24uQVNDLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IHsgbG9nLCBjdHhBcmdzIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLkZJTkQsIHRydWUpKS5mb3IodGhpcy5maW5kKTtcbiAgICAgICAgbG9nLnZlcmJvc2UoYGZpbmRpbmcgJHtNb2RlbC50YWJsZU5hbWUodGhpcy5jbGFzcyl9IGJ5IGRlZmF1bHQgcXVlcnkgYXR0cmlidXRlc2ApO1xuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMuc3RhdGVtZW50KHRoaXMuZmluZC5uYW1lLCB2YWx1ZSwgb3JkZXIsIC4uLmN0eEFyZ3MpKTtcbiAgICB9XG4gICAgYXN5bmMgcGFnZSh2YWx1ZSwgZGlyZWN0aW9uID0gT3JkZXJEaXJlY3Rpb24uQVNDLCByZWYgPSB7XG4gICAgICAgIG9mZnNldDogMSxcbiAgICAgICAgbGltaXQ6IDEwLFxuICAgIH0sIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgeyBsb2csIGN0eEFyZ3MgfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBQcmVwYXJlZFN0YXRlbWVudEtleXMuUEFHRSwgdHJ1ZSkpLmZvcih0aGlzLnBhZ2UpO1xuICAgICAgICBsb2cudmVyYm9zZShgcGFnaW5nICR7TW9kZWwudGFibGVOYW1lKHRoaXMuY2xhc3MpfSBieSBkZWZhdWx0IHF1ZXJ5IGF0dHJpYnV0ZXNgKTtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLnN0YXRlbWVudCh0aGlzLnBhZ2UubmFtZSwgdmFsdWUsIGRpcmVjdGlvbiwgcmVmLCAuLi5jdHhBcmdzKSk7XG4gICAgfVxuICAgIGFzeW5jIHN0YXRlbWVudChuYW1lLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IHsgbG9nLCBjdHgsIGN0eEFyZ3MgfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBQZXJzaXN0ZW5jZUtleXMuU1RBVEVNRU5ULCB0cnVlKSkuZm9yKHRoaXMuc3RhdGVtZW50KTtcbiAgICAgICAgbG9nLnZlcmJvc2UoYEV4ZWN1dGluZyBwcmVwYXJlZCBzdGF0ZW1lbnQgJHtuYW1lfWApO1xuICAgICAgICBjb25zdCBjYWxsQXJncyA9IGN0eEFyZ3Muc2xpY2UoMCwgLTEpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBKU09OLnBhcnNlKHRoaXMuYWRhcHRlci5kZWNvZGUoYXdhaXQgdGhpcy5hZGFwdGVyLmV2YWx1YXRlVHJhbnNhY3Rpb24oY3R4LCBQZXJzaXN0ZW5jZUtleXMuU1RBVEVNRU5ULCBbbmFtZSwgSlNPTi5zdHJpbmdpZnkoY2FsbEFyZ3MpXSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMuY2xhc3MubmFtZSkpKTtcbiAgICAgICAgbGV0IGh5ZHJhdGVkO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XG4gICAgICAgICAgICBoeWRyYXRlZCA9IHJlc3VsdC5tYXAoKHIpID0+IHJbQ291Y2hEQktleXMuVEFCTEVdICYmXG4gICAgICAgICAgICAgICAgcltDb3VjaERCS2V5cy5UQUJMRV0gPT09IE1vZGVsLnRhYmxlTmFtZSh0aGlzLmNsYXNzKVxuICAgICAgICAgICAgICAgID8gbmV3IHRoaXMuY2xhc3MocilcbiAgICAgICAgICAgICAgICA6IHIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHJlc3VsdFtDb3VjaERCS2V5cy5UQUJMRV0gJiZcbiAgICAgICAgICAgIHJlc3VsdFtDb3VjaERCS2V5cy5UQUJMRV0gPT09IE1vZGVsLnRhYmxlTmFtZSh0aGlzLmNsYXNzKSkge1xuICAgICAgICAgICAgaHlkcmF0ZWQgPSBuZXcgdGhpcy5jbGFzcyhyZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKEZhYnJpY0NsaWVudFBhZ2luYXRvci5pc1NlcmlhbGl6ZWRQYWdlKHJlc3VsdCkpIHtcbiAgICAgICAgICAgIGh5ZHJhdGVkID0gT2JqZWN0LmFzc2lnbihyZXN1bHQsIHtcbiAgICAgICAgICAgICAgICBkYXRhOiByZXN1bHQuZGF0YS5tYXAoKGQpID0+IG5ldyB0aGlzLmNsYXNzKGQpKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaHlkcmF0ZWQgPSByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlBZnRlclJlYWQoaHlkcmF0ZWQsIGN0eCk7XG4gICAgfVxuICAgIGFzeW5jIGFwcGx5QWZ0ZXJSZWFkKHZhbHVlLCBjdHgpIHtcbiAgICAgICAgaWYgKCFjdHguZ2V0T3JVbmRlZmluZWQoXCJhZnRlclF1ZXJ5SGFuZGxlcnNcIikpXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1vZGVsKSB7XG4gICAgICAgICAgICBhd2FpdCBlbmZvcmNlREJEZWNvcmF0b3JzKHRoaXMsIGN0eCwgdmFsdWUsIE9wZXJhdGlvbktleXMuUkVBRCwgT3BlcmF0aW9uS2V5cy5BRlRFUik7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbCh2YWx1ZS5tYXAoKGVudHJ5KSA9PiB0aGlzLmFwcGx5QWZ0ZXJSZWFkKGVudHJ5LCBjdHgpKSk7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEZhYnJpY0NsaWVudFBhZ2luYXRvci5pc1NlcmlhbGl6ZWRQYWdlKHZhbHVlKSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5hcHBseUFmdGVyUmVhZCh2YWx1ZS5kYXRhLCBjdHgpO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgYXN5bmMgY291bnRPZihrZXksIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgeyBsb2csIGN0eEFyZ3MgfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBQcmVwYXJlZFN0YXRlbWVudEtleXMuQ09VTlRfT0YsIHRydWUpKS5mb3IodGhpcy5jb3VudE9mKTtcbiAgICAgICAgbG9nLnZlcmJvc2UoYGNvdW50aW5nICR7TW9kZWwudGFibGVOYW1lKHRoaXMuY2xhc3MpfSR7a2V5ID8gYCBieSAke2tleX1gIDogXCJcIn1gKTtcbiAgICAgICAgY29uc3Qgc3RtdEFyZ3MgPSBrZXkgPyBba2V5LCAuLi5jdHhBcmdzXSA6IGN0eEFyZ3M7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlbWVudChQcmVwYXJlZFN0YXRlbWVudEtleXMuQ09VTlRfT0YsIC4uLnN0bXRBcmdzKTtcbiAgICB9XG4gICAgYXN5bmMgbWF4T2Yoa2V5LCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IHsgbG9nLCBjdHhBcmdzIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLk1BWF9PRiwgdHJ1ZSkpLmZvcih0aGlzLm1heE9mKTtcbiAgICAgICAgbG9nLnZlcmJvc2UoYGZpbmRpbmcgbWF4IG9mICR7a2V5fSBpbiAke01vZGVsLnRhYmxlTmFtZSh0aGlzLmNsYXNzKX1gKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50KFByZXBhcmVkU3RhdGVtZW50S2V5cy5NQVhfT0YsIGtleSwgLi4uY3R4QXJncyk7XG4gICAgfVxuICAgIGFzeW5jIG1pbk9mKGtleSwgLi4uYXJncykge1xuICAgICAgICBjb25zdCB7IGxvZywgY3R4QXJncyB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFByZXBhcmVkU3RhdGVtZW50S2V5cy5NSU5fT0YsIHRydWUpKS5mb3IodGhpcy5taW5PZik7XG4gICAgICAgIGxvZy52ZXJib3NlKGBmaW5kaW5nIG1pbiBvZiAke2tleX0gaW4gJHtNb2RlbC50YWJsZU5hbWUodGhpcy5jbGFzcyl9YCk7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlbWVudChQcmVwYXJlZFN0YXRlbWVudEtleXMuTUlOX09GLCBrZXksIC4uLmN0eEFyZ3MpO1xuICAgIH1cbiAgICBhc3luYyBhdmdPZihrZXksIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgeyBsb2csIGN0eEFyZ3MgfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBQcmVwYXJlZFN0YXRlbWVudEtleXMuQVZHX09GLCB0cnVlKSkuZm9yKHRoaXMuYXZnT2YpO1xuICAgICAgICBsb2cudmVyYm9zZShgY2FsY3VsYXRpbmcgYXZnIG9mICR7a2V5fSBpbiAke01vZGVsLnRhYmxlTmFtZSh0aGlzLmNsYXNzKX1gKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50KFByZXBhcmVkU3RhdGVtZW50S2V5cy5BVkdfT0YsIGtleSwgLi4uY3R4QXJncyk7XG4gICAgfVxuICAgIGFzeW5jIHN1bU9mKGtleSwgLi4uYXJncykge1xuICAgICAgICBjb25zdCB7IGxvZywgY3R4QXJncyB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFByZXBhcmVkU3RhdGVtZW50S2V5cy5TVU1fT0YsIHRydWUpKS5mb3IodGhpcy5zdW1PZik7XG4gICAgICAgIGxvZy52ZXJib3NlKGBjYWxjdWxhdGluZyBzdW0gb2YgJHtrZXl9IGluICR7TW9kZWwudGFibGVOYW1lKHRoaXMuY2xhc3MpfWApO1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQoUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLlNVTV9PRiwga2V5LCAuLi5jdHhBcmdzKTtcbiAgICB9XG4gICAgYXN5bmMgZGlzdGluY3RPZihrZXksIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgeyBsb2csIGN0eEFyZ3MgfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBQcmVwYXJlZFN0YXRlbWVudEtleXMuRElTVElOQ1RfT0YsIHRydWUpKS5mb3IodGhpcy5kaXN0aW5jdE9mKTtcbiAgICAgICAgbG9nLnZlcmJvc2UoYGZpbmRpbmcgZGlzdGluY3QgdmFsdWVzIG9mICR7a2V5fSBpbiAke01vZGVsLnRhYmxlTmFtZSh0aGlzLmNsYXNzKX1gKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50KFByZXBhcmVkU3RhdGVtZW50S2V5cy5ESVNUSU5DVF9PRiwga2V5LCAuLi5jdHhBcmdzKTtcbiAgICB9XG4gICAgYXN5bmMgZ3JvdXBPZihrZXksIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgeyBsb2csIGN0eEFyZ3MgfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBQcmVwYXJlZFN0YXRlbWVudEtleXMuR1JPVVBfT0YsIHRydWUpKS5mb3IodGhpcy5ncm91cE9mKTtcbiAgICAgICAgbG9nLnZlcmJvc2UoYGdyb3VwaW5nICR7TW9kZWwudGFibGVOYW1lKHRoaXMuY2xhc3MpfSBieSAke2tleX1gKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50KFByZXBhcmVkU3RhdGVtZW50S2V5cy5HUk9VUF9PRiwga2V5LCAuLi5jdHhBcmdzKTtcbiAgICB9XG4gICAgYXN5bmMgaGVhbHRoY2hlY2soLi4uYXJncykge1xuICAgICAgICBjb25zdCB7IGN0eEFyZ3MgfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMuaGVhbHRoY2hlY2spO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFkYXB0ZXIuaGVhbHRoY2hlY2sodGhpcy5jbGFzcywgLi4uY3R4QXJncyk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGFzeW5jIGNyZWF0ZShtb2RlbCwgLi4uYXJncykge1xuICAgICAgICBjb25zdCB7IGN0eCwgbG9nLCBjdHhBcmdzIH0gPSB0aGlzLmxvZ0N0eChhcmdzLCB0aGlzLmNyZWF0ZSk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgQ3JlYXRpbmcgbmV3ICR7dGhpcy5jbGFzcy5uYW1lfSBpbiB0YWJsZSAke01vZGVsLnRhYmxlTmFtZSh0aGlzLmNsYXNzKX1gKTtcbiAgICAgICAgdGhpcy5lbnN1cmVMZWdhY3lNaXJyb3JGbGFnKGN0eCwgbW9kZWwpO1xuICAgICAgICBjb25zdCBwcmVwYXJlZCA9IHRoaXMuYWRhcHRlci5wcmVwYXJlKG1vZGVsLCBjdHgpO1xuICAgICAgICBjb25zdCB7IHJlY29yZCwgaWQsIHRyYW5zaWVudCB9ID0gcHJlcGFyZWQ7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYWRhcHRlci5jcmVhdGUodGhpcy5jbGFzcywgaWQsIHJlY29yZCwgdHJhbnNpZW50LCAuLi5jdHhBcmdzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5yZXZlcnQocmVzdWx0LCB0aGlzLmNsYXNzLCBpZCwgdHJhbnNpZW50LCBjdHgpO1xuICAgIH1cbiAgICBhc3luYyB1cGRhdGUobW9kZWwsIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgeyBjdHhBcmdzLCBsb2csIGN0eCB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy51cGRhdGUpO1xuICAgICAgICB0aGlzLmVuc3VyZUxlZ2FjeU1pcnJvckZsYWcoY3R4LCBtb2RlbCk7XG4gICAgICAgIGNvbnN0IHByZXBhcmVkID0gdGhpcy5hZGFwdGVyLnByZXBhcmUobW9kZWwsIGN0eCk7XG4gICAgICAgIGNvbnN0IHsgaWQsIHRyYW5zaWVudCB9ID0gcHJlcGFyZWQ7XG4gICAgICAgIGxldCByZWNvcmQgPSBwcmVwYXJlZC5yZWNvcmQ7XG4gICAgICAgIGxvZy5kZWJ1ZyhgdXBkYXRpbmcgJHt0aGlzLmNsYXNzLm5hbWV9IGluIHRhYmxlICR7TW9kZWwudGFibGVOYW1lKHRoaXMuY2xhc3MpfSB3aXRoIGlkICR7aWR9YCk7XG4gICAgICAgIHJlY29yZCA9IGF3YWl0IHRoaXMuYWRhcHRlci51cGRhdGUodGhpcy5jbGFzcywgaWQsIHJlY29yZCwgdHJhbnNpZW50LCAuLi5jdHhBcmdzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5yZXZlcnQocmVjb3JkLCB0aGlzLmNsYXNzLCBpZCwgdHJhbnNpZW50LCBjdHgpO1xuICAgIH1cbiAgICBhc3luYyBjcmVhdGVBbGxQcmVmaXgobW9kZWxzLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IHsgY3R4LCBjdHhBcmdzIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgT3BlcmF0aW9uS2V5cy5DUkVBVEUsIHRydWUpKS5mb3IodGhpcy5jcmVhdGVBbGxQcmVmaXgpO1xuICAgICAgICBjb25zdCBpZ25vcmVIYW5kbGVycyA9IGN0eC5nZXQoXCJpZ25vcmVIYW5kbGVyc1wiKTtcbiAgICAgICAgY29uc3QgaWdub3JlVmFsaWRhdGUgPSBjdHguZ2V0KFwiaWdub3JlVmFsaWRhdGlvblwiKTtcbiAgICAgICAgaWYgKCFtb2RlbHMubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIFttb2RlbHMsIC4uLmN0eEFyZ3NdO1xuICAgICAgICBtb2RlbHMgPSBhd2FpdCBQcm9taXNlLmFsbChtb2RlbHMubWFwKGFzeW5jIChtKSA9PiB7XG4gICAgICAgICAgICBtID0gbmV3IHRoaXMuY2xhc3MobSk7XG4gICAgICAgICAgICBpZiAoIWlnbm9yZUhhbmRsZXJzKVxuICAgICAgICAgICAgICAgIGF3YWl0IGVuZm9yY2VEQkRlY29yYXRvcnModGhpcywgY3R4LCBtLCBPcGVyYXRpb25LZXlzLkNSRUFURSwgT3BlcmF0aW9uS2V5cy5PTik7XG4gICAgICAgICAgICByZXR1cm4gbTtcbiAgICAgICAgfSkpO1xuICAgICAgICBpZiAoIWlnbm9yZVZhbGlkYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBpZ25vcmVkUHJvcHMgPSBjdHguZ2V0KFwiaWdub3JlZFZhbGlkYXRpb25Qcm9wZXJ0aWVzXCIpIHx8IFtdO1xuICAgICAgICAgICAgY29uc3QgZXJyb3JzID0gYXdhaXQgUHJvbWlzZS5hbGwobW9kZWxzLm1hcCgobSkgPT4gUHJvbWlzZS5yZXNvbHZlKG0uaGFzRXJyb3JzKC4uLmlnbm9yZWRQcm9wcykpKSk7XG4gICAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2VzID0gcmVkdWNlRXJyb3JzVG9QcmludChlcnJvcnMpO1xuICAgICAgICAgICAgaWYgKGVycm9yTWVzc2FnZXMpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihlcnJvck1lc3NhZ2VzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW21vZGVscywgLi4uY3R4QXJnc107XG4gICAgfVxuICAgIGFzeW5jIGNyZWF0ZUFsbChtb2RlbHMsIC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKCFtb2RlbHMubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIG1vZGVscztcbiAgICAgICAgY29uc3QgeyBjdHgsIGxvZywgY3R4QXJncyB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy5jcmVhdGVBbGwpO1xuICAgICAgICBsb2cuZGVidWcoYENyZWF0aW5nICR7bW9kZWxzLmxlbmd0aH0gbmV3ICR7dGhpcy5jbGFzcy5uYW1lfSBpbiB0YWJsZSAke01vZGVsLnRhYmxlTmFtZSh0aGlzLmNsYXNzKX1gKTtcbiAgICAgICAgbW9kZWxzLmZvckVhY2goKG1vZGVsKSA9PiB0aGlzLmVuc3VyZUxlZ2FjeU1pcnJvckZsYWcoY3R4LCBtb2RlbCkpO1xuICAgICAgICBjb25zdCBwcmVwYXJlZCA9IG1vZGVscy5tYXAoKG0pID0+IHRoaXMuYWRhcHRlci5wcmVwYXJlKG0sIGN0eCkpO1xuICAgICAgICBjb25zdCBpZHMgPSBwcmVwYXJlZC5tYXAoKHApID0+IHAuaWQpO1xuICAgICAgICBjb25zdCBwYXlsb2FkcyA9IHByZXBhcmVkLm1hcCgocCkgPT4gcC5yZWNvcmQpO1xuICAgICAgICBjb25zdCB0cmFuc2llbnRzID0gcHJlcGFyZWQubWFwKChwKSA9PiBwLnRyYW5zaWVudCk7XG4gICAgICAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCB0aGlzLmFkYXB0ZXIuY3JlYXRlQWxsKHRoaXMuY2xhc3MsIGlkcywgcGF5bG9hZHMsIHRyYW5zaWVudHMsIC4uLmN0eEFyZ3MpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoY3JlYXRlZC5tYXAoYXN5bmMgKHIsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gaWRzW2ldO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5yZXZlcnQociwgdGhpcy5jbGFzcywgaWQsIHRyYW5zaWVudHNbaV0sIGN0eCk7XG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgYXN5bmMgcmVhZEFsbChrZXlzLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IHsgY3R4LCBsb2csIGN0eEFyZ3MgfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMucmVhZEFsbCk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgcmVhZGluZyAke2tleXMubGVuZ3RofSAke3RoaXMuY2xhc3MubmFtZX0gaW4gdGFibGUgJHtNb2RlbC50YWJsZU5hbWUodGhpcy5jbGFzcyl9YCk7XG4gICAgICAgIGNvbnN0IHJlY29yZHMgPSBhd2FpdCB0aGlzLmFkYXB0ZXIucmVhZEFsbCh0aGlzLmNsYXNzLCBrZXlzLCAuLi5jdHhBcmdzKTtcbiAgICAgICAgcmV0dXJuIHJlY29yZHMubWFwKChyLCBpKSA9PiB0aGlzLmFkYXB0ZXIucmV2ZXJ0KHIsIHRoaXMuY2xhc3MsIGtleXNbaV0sIHt9LCBjdHgpKTtcbiAgICB9XG4gICAgYXN5bmMgdXBkYXRlQWxsKG1vZGVscywgLi4uYXJncykge1xuICAgICAgICBjb25zdCB7IGN0eCwgbG9nLCBjdHhBcmdzIH0gPSB0aGlzLmxvZ0N0eChhcmdzLCB0aGlzLnVwZGF0ZUFsbCk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgVXBkYXRpbmcgJHttb2RlbHMubGVuZ3RofSBuZXcgJHt0aGlzLmNsYXNzLm5hbWV9IGluIHRhYmxlICR7TW9kZWwudGFibGVOYW1lKHRoaXMuY2xhc3MpfWApO1xuICAgICAgICBtb2RlbHMuZm9yRWFjaCgobW9kZWwpID0+IHRoaXMuZW5zdXJlTGVnYWN5TWlycm9yRmxhZyhjdHgsIG1vZGVsKSk7XG4gICAgICAgIGNvbnN0IHByZXBhcmVkID0gbW9kZWxzLm1hcCgobSkgPT4gdGhpcy5hZGFwdGVyLnByZXBhcmUobSwgY3R4KSk7XG4gICAgICAgIGNvbnN0IGlkcyA9IHByZXBhcmVkLm1hcCgocCkgPT4gcC5pZCk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB0aGlzLmFkYXB0ZXIudXBkYXRlQWxsKHRoaXMuY2xhc3MsIGlkcywgcHJlcGFyZWQubWFwKChyKSA9PiByLnJlY29yZCksIHByZXBhcmVkLm1hcCgocikgPT4gci50cmFuc2llbnQpLCAuLi5jdHhBcmdzKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHVwZGF0ZWQubWFwKGFzeW5jICh1LCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpZCA9IGlkc1tpXTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIucmV2ZXJ0KHUsIHRoaXMuY2xhc3MsIGlkLCBwcmVwYXJlZFtpXS50cmFuc2llbnQsIGN0eCk7XG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgZW5zdXJlTGVnYWN5TWlycm9yRmxhZyhjdHgsIG1vZGVsKSB7XG4gICAgICAgIGlmIChNb2RlbC5taXJyb3JlZEF0KG1vZGVsKSkge1xuICAgICAgICAgICAgY3R4LmFjY3VtdWxhdGUoeyBsZWdhY3k6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lSbUZpY21salEyeHBaVzUwVW1Wd2IzTnBkRzl5ZVM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMM055WXk5amJHbGxiblF2Um1GaWNtbGpRMnhwWlc1MFVtVndiM05wZEc5eWVTNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZEUVN4UFFVRlBMRVZCUzB3c1kwRkJZeXhGUVVWa0xHVkJRV1VzUlVGRFppeHhRa0ZCY1VJc1JVRkRja0lzVlVGQlZTeEhRVVZZTEUxQlFVMHNaMEpCUVdkQ0xFTkJRVU03UVVGRGVFSXNUMEZCVHl4RlFVRkZMRXRCUVVzc1JVRkJSU3hOUVVGTkxHZERRVUZuUXl4RFFVRkRPMEZCUjNaRUxFOUJRVThzUlVGRlRDeHRRa0ZCYlVJc1JVRkRia0lzWVVGQllTeEZRVVZpTEcxQ1FVRnRRaXhGUVVOdVFpeGxRVUZsTEVkQlEyaENMRTFCUVUwc2VVSkJRWGxDTEVOQlFVTTdRVUZEYWtNc1QwRkJUeXhGUVVGRkxGZEJRVmNzUlVGQlJTeE5RVUZOTEhWQ1FVRjFRaXhEUVVGRE8wRkJRM0JFTEU5QlFVOHNSVUZCUlN4eFFrRkJjVUlzUlVGQlJTeHRRMEZCWjBNN1FVRkZhRVU3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenRIUVRKQ1J6dEJRVU5JTEUxQlFVMHNUMEZCVHl4elFrRkhXQ3hUUVVGUkxGVkJRV2RDTzBsQlYzaENMRmxCUVZrc1QwRkJWeXhGUVVGRkxFdEJRWE5DTEVWQlFVVXNVVUZCYVVJc1MwRkJTenRSUVVOeVJTeExRVUZMTEVOQlFVTXNUMEZCVHl4RlFVRkZMRXRCUVVzc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dFJRVmhhTEdWQlFWVXNSMEZCUnl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVVzUlVGQlJTeExRVUZMTEVOQlFVTXNXVUZCV1N4RFFVRkRMRVZCUVVVN1dVRkRja1VzWjBKQlFXZENMRVZCUVVVc1NVRkJTVHRaUVVOMFFpeGpRVUZqTEVWQlFVVXNTVUZCU1R0WlFVTndRaXhyUWtGQmEwSXNSVUZCUlN4TFFVRkxPMWxCUTNwQ0xIbENRVUY1UWl4RlFVRkZMRWxCUVVrN1dVRkRMMElzTUVKQlFUQkNMRVZCUVVVc1NVRkJTVHRaUVVOb1F5eDFRa0ZCZFVJc1JVRkJSU3hMUVVGTE8xbEJRemxDTEc5Q1FVRnZRaXhGUVVGRkxFdEJRVXM3VTBGRE5VSXNRMEZCUXl4RFFVRkRPMGxCU1Vnc1EwRkJRenRKUVVWUkxGRkJRVkVzUTBGQlF5eExRVUZ4UXp0UlFVTnlSQ3hQUVVGUExFdEJRVXM3WVVGRFZDeFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenRoUVVOdVJDeEhRVUZITEVOQlFVTXNTMEZCV1N4RFFVRkRMRU5CUVVNN1NVRkRka0lzUTBGQlF6dEpRVVZyUWl4bFFVRmxPMUZCUTJoRExFOUJRVThzUzBGQlN5eERRVUZETEdWQlFXVXNSVUZCUlN4RFFVRkRPMGxCUTJwRExFTkJRVU03U1VGRlVTeExRVUZMTEVOQlFVTXNWVUZCVlN4RFFVTjJRaXhIUVVGWkxFVkJRMW9zUzBGQmNVSXNSVUZEY2tJc1RVRkJLME03VVVGRE4wTXNUVUZCVFN4RlFVRkZMRU5CUVVNN1VVRkRWQ3hMUVVGTExFVkJRVVVzUlVGQlJUdExRVU5XTEVWQlEwUXNSMEZCUnl4SlFVRnpRenRSUVVWNlF5eE5RVUZOTEVWQlFVVXNSMEZCUnl4RlFVRkZMRTlCUVU4c1JVRkJSU3hIUVVGSExFTkJRM1pDTEUxQlFVMHNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFVkJRVVVzY1VKQlFYRkNMRU5CUVVNc1QwRkJUeXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVU0zUkN4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdVVUZEZGtJc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGRFZDeGpRVUZqTEV0QlFVc3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eHRRa0ZCYlVJc1IwRkJSeXhEUVVGRExFdEJRVXNzUlVGQlJTeERRVU40UlN4RFFVRkRPMUZCUTBZc1QwRkJUeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVU51UWl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFbEJRVWtzUlVGRGNFSXNSMEZCUnl4RlFVTklMRXRCUVVzc1JVRkRUQ3hGUVVGRkxFdEJRVXNzUlVGQlJTeEhRVUZITEVOQlFVTXNTMEZCU3l4RlFVRkZMRTFCUVUwc1JVRkJSU3hIUVVGSExFTkJRVU1zVFVGQlRTeEZRVUZGTEZGQlFWRXNSVUZCUlN4SFFVRkhMRU5CUVVNc1VVRkJVU3hGUVVGRkxFVkJRMmhGTEVkQlFVY3NUMEZCVHl4RFFVTllMRU5CUVVNN1NVRkRTaXhEUVVGRE8wbEJSVkVzUzBGQlN5eERRVUZETEUxQlFVMHNRMEZEYmtJc1IwRkJXU3hGUVVOYUxFdEJRWEZDTEVWQlEzSkNMRWRCUVVjc1NVRkJjME03VVVGRmVrTXNUVUZCVFN4RlFVRkZMRWRCUVVjc1JVRkJSU3hQUVVGUExFVkJRVVVzUjBGQlJ5eERRVU4yUWl4TlFVRk5MRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeEZRVUZGTEhGQ1FVRnhRaXhEUVVGRExFOUJRVThzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZETjBRc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUTI1Q0xFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlExUXNWMEZCVnl4TFFVRkxMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCVHl4SFFVRmhMRWxCUVVrc1MwRkJTeXhGUVVGRkxFTkJRM1JGTEVOQlFVTTdVVUZEUml4UFFVRlBMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVU14UWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUlVGRGFFSXNSMEZCUnl4RlFVTklMRXRCUVVzc1JVRkRUQ3hIUVVGSExFOUJRVThzUTBGRFdDeERRVUZSTEVOQlFVTTdTVUZEV2l4RFFVRkRPMGxCUlZFc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGRGJrSXNSMEZCV1N4RlFVTmFMRXRCUVZVc1JVRkRWaXhIUVVGSExFbEJRWE5ETzFGQlJYcERMRTFCUVUwc1JVRkJSU3hIUVVGSExFVkJRVVVzVDBGQlR5eEZRVUZGTEVkQlFVY3NRMEZEZGtJc1RVRkJUU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NSVUZCUlN4eFFrRkJjVUlzUTBGQlF5eFBRVUZQTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUXpkRUxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVOdVFpeEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVTlVMR1ZCUVdVc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRk5CUVZNc1IwRkJZU3hKUVVGSkxFdEJRVXNzUlVGQlJTeERRVU0xUlN4RFFVRkRPMUZCUTBZc1QwRkJUeXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZETVVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVWQlEyaENMRWRCUVVjc1JVRkRTQ3hMUVVGTExFVkJRMHdzUjBGQlJ5eFBRVUZQTEVOQlExZ3NRMEZCVVN4RFFVRkRPMGxCUTFvc1EwRkJRenRKUVVWUkxFdEJRVXNzUTBGQlF5eFRRVUZUTEVOQlEzUkNMRWRCUVZrc1JVRkRXaXhMUVVGVkxFVkJRMVlzUjBGQlJ5eEpRVUZ6UXp0UlFVVjZReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEU5QlFVOHNSVUZCUlN4SFFVRkhMRU5CUTNaQ0xFMUJRVTBzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRVZCUVVVc2NVSkJRWEZDTEVOQlFVTXNWMEZCVnl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVOcVJTeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03VVVGRGRFSXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkRWQ3hsUVVGbExFdEJRVXNzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhUUVVGVExFZEJRV0VzU1VGQlNTeExRVUZMTEVWQlFVVXNRMEZETlVVc1EwRkJRenRSUVVOR0xFOUJRVThzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUXpGQ0xFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RlFVTnVRaXhIUVVGSExFVkJRMGdzUzBGQlN5eEZRVU5NTEVkQlFVY3NUMEZCVHl4RFFVTllMRU5CUVZFc1EwRkJRenRKUVVOYUxFTkJRVU03U1VGRlVTeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVTnFRaXhMUVVGaExFVkJRMklzVVVGQmQwSXNZMEZCWXl4RFFVRkRMRWRCUVVjc1JVRkRNVU1zUjBGQlJ5eEpRVUZ6UXp0UlFVVjZReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEU5QlFVOHNSVUZCUlN4SFFVRkhMRU5CUTNaQ0xFMUJRVTBzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRVZCUVVVc2NVSkJRWEZDTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVNeFJDeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRGFrSXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkRWQ3hYUVVGWExFdEJRVXNzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXc0UWtGQk9FSXNRMEZEY2tVc1EwRkJRenRSUVVOR0xFOUJRVThzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUXpGQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVTmtMRXRCUVVzc1JVRkRUQ3hMUVVGTExFVkJRMHdzUjBGQlJ5eFBRVUZQTEVOQlExZ3NRMEZCVVN4RFFVRkRPMGxCUTFvc1EwRkJRenRKUVVWUkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlEycENMRXRCUVdFc1JVRkRZaXhaUVVFMFFpeGpRVUZqTEVOQlFVTXNSMEZCUnl4RlFVTTVReXhOUVVFclF6dFJRVU0zUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRSUVVOVUxFdEJRVXNzUlVGQlJTeEZRVUZGTzB0QlExWXNSVUZEUkN4SFFVRkhMRWxCUVhORE8xRkJSWHBETEUxQlFVMHNSVUZCUlN4SFFVRkhMRVZCUVVVc1QwRkJUeXhGUVVGRkxFZEJRVWNzUTBGRGRrSXNUVUZCVFN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUlVGQlJTeHhRa0ZCY1VJc1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlF6RkVMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTnFRaXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVU5VTEZWQlFWVXNTMEZCU3l4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETERoQ1FVRTRRaXhEUVVOd1JTeERRVUZETzFGQlEwWXNUMEZCVHl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGRE1VSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJRMlFzUzBGQlN5eEZRVU5NTEZOQlFWTXNSVUZEVkN4SFFVRkhMRVZCUTBnc1IwRkJSeXhQUVVGUExFTkJRMWdzUTBGQlVTeERRVUZETzBsQlExb3NRMEZCUXp0SlFVVlJMRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRM1JDTEVsQlFWa3NSVUZEV2l4SFFVRkhMRWxCUVhORE8xRkJSWHBETEUxQlFVMHNSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFOUJRVThzUlVGQlJTeEhRVUZITEVOQlF6VkNMRTFCUVUwc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVWQlFVVXNaVUZCWlN4RFFVRkRMRk5CUVZNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGRGVrUXNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzFGQlEzUkNMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zWjBOQlFXZERMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRGNFUXNUVUZCVFN4UlFVRlJMRWRCUVVjc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOMFF5eE5RVUZOTEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVOMlFpeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkRha0lzVFVGQlRTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRzFDUVVGdFFpeERRVU53UXl4SFFVRkhMRVZCUTBnc1pVRkJaU3hEUVVGRExGTkJRVk1zUlVGRGVrSXNRMEZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RlFVTm9ReXhUUVVGVExFVkJRMVFzVTBGQlV5eEZRVU5VTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVOb1FpeERRVU5HTEVOQlEwWXNRMEZCUXp0UlFVVkdMRWxCUVVrc1VVRkJZU3hEUVVGRE8xRkJRMnhDTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeERRVUZETzFsQlF6RkNMRkZCUVZFc1IwRkJSeXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCVFN4RlFVRkZMRVZCUVVVc1EwRkRPVUlzUTBGQlV5eERRVUZETEZkQlFWY3NRMEZCUXl4TFFVRkxMRU5CUVVNN1owSkJRelZDTEVOQlFWTXNRMEZCUXl4WFFVRlhMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUzBGQlN5eERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8yZENRVU16UkN4RFFVRkRMRU5CUVVVc1NVRkJTU3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCVHp0blFrRkRNVUlzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZEVGl4RFFVRkRPMUZCUTBvc1EwRkJRenRoUVVGTkxFbEJRMG9zVFVGQll5eERRVUZETEZkQlFWY3NRMEZCUXl4TFFVRkxMRU5CUVVNN1dVRkRha01zVFVGQll5eERRVUZETEZkQlFWY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhMUVVGTExFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkRiRVVzUTBGQlF6dFpRVU5FTEZGQlFWRXNSMEZCUnl4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZOTEVOQlFVTTdVVUZEZWtNc1EwRkJRenRoUVVGTkxFbEJRVWtzY1VKQlFYRkNMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1EwRkJRenRaUVVNeFJDeFJRVUZSTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFVkJRVVU3WjBKQlF5OUNMRWxCUVVrc1JVRkJSU3hOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJUU3hEUVVGRE8yRkJRekZFTEVOQlFVTXNRMEZCUXp0UlFVTk1MRU5CUVVNN1lVRkJUU3hEUVVGRE8xbEJRMDRzVVVGQlVTeEhRVUZITEUxQlFVMHNRMEZCUXp0UlFVTndRaXhEUVVGRE8xRkJSVVFzVDBGQlR5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRkZCUVZFc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU0xUXl4RFFVRkRPMGxCUlU4c1MwRkJTeXhEUVVGRExHTkJRV01zUTBGQlF5eExRVUZWTEVWQlFVVXNSMEZCYVVJN1VVRkRlRVFzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4alFVRmpMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTTdXVUZCUlN4UFFVRlBMRXRCUVVzc1EwRkJRenRSUVVNMVJDeEpRVUZKTEV0QlFVc3NXVUZCV1N4TFFVRkxMRVZCUVVVc1EwRkJRenRaUVVNelFpeE5RVUZOTEcxQ1FVRnRRaXhEUVVOMlFpeEpRVUZKTEVWQlEwb3NSMEZCUnl4RlFVTklMRXRCUVZVc1JVRkRWaXhoUVVGaExFTkJRVU1zU1VGQlNTeEZRVU5zUWl4aFFVRmhMRU5CUVVNc1MwRkJTeXhEUVVOd1FpeERRVUZETzFsQlEwWXNUMEZCVHl4TFFVRkxMRU5CUVVNN1VVRkRaaXhEUVVGRE8xRkJRMFFzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRkxFTkJRVU03V1VGRGVrSXNUVUZCVFN4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNTMEZCU3l4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU42UlN4UFFVRlBMRXRCUVVzc1EwRkJRenRSUVVObUxFTkJRVU03VVVGRFJDeEpRVUZKTEhGQ1FVRnhRaXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRkxFTkJRVU03V1VGRGJFUXNUVUZCVFN4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRNME1zVDBGQlR5eExRVUZMTEVOQlFVTTdVVUZEWml4RFFVRkRPMUZCUTBRc1QwRkJUeXhMUVVGTExFTkJRVU03U1VGRFppeERRVUZETzBsQlJWRXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkRjRUlzUjBGQllTeEZRVU5pTEVkQlFVY3NTVUZCYzBNN1VVRkZla01zVFVGQlRTeEZRVUZGTEVkQlFVY3NSVUZCUlN4UFFVRlBMRVZCUVVVc1IwRkJSeXhEUVVOMlFpeE5RVUZOTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hGUVVGRkxIRkNRVUZ4UWl4RFFVRkRMRkZCUVZFc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGRE9VUXNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFGQlEzQkNMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRMVFzV1VGQldTeExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1IwRkJZU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVTTVSU3hEUVVGRE8xRkJRMFlzVFVGQlRTeFJRVUZSTEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU03VVVGRGJrUXNUMEZCVHl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRkZCUVZFc1JVRkJSU3hIUVVGSExGRkJRVkVzUTBGQlF5eERRVUZETzBsQlEzSkZMRU5CUVVNN1NVRkZVU3hMUVVGTExFTkJRVU1zUzBGQlN5eERRVU5zUWl4SFFVRk5MRVZCUTA0c1IwRkJSeXhKUVVGelF6dFJRVVY2UXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRkxFOUJRVThzUlVGQlJTeEhRVUZITEVOQlEzWkNMRTFCUVUwc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVWQlFVVXNjVUpCUVhGQ0xFTkJRVU1zVFVGQlRTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVTTFSQ3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkRiRUlzUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZEVkN4clFrRkJhMElzUjBGQllTeFBRVUZQTEV0QlFVc3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTEVOQlEzQkZMRU5CUVVNN1VVRkRSaXhQUVVGUExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zVFVGQlRTeEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRM1pGTEVOQlFVTTdTVUZGVVN4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVOc1FpeEhRVUZOTEVWQlEwNHNSMEZCUnl4SlFVRnpRenRSUVVWNlF5eE5RVUZOTEVWQlFVVXNSMEZCUnl4RlFVRkZMRTlCUVU4c1JVRkJSU3hIUVVGSExFTkJRM1pDTEUxQlFVMHNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFVkJRVVVzY1VKQlFYRkNMRU5CUVVNc1RVRkJUU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVU0xUkN4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdVVUZEYkVJc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGRFZDeHJRa0ZCYTBJc1IwRkJZU3hQUVVGUExFdEJRVXNzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRkxFTkJRM0JGTEVOQlFVTTdVVUZEUml4UFFVRlBMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUTNaRkxFTkJRVU03U1VGRlVTeExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVTnNRaXhIUVVGTkxFVkJRMDRzUjBGQlJ5eEpRVUZ6UXp0UlFVVjZReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEU5QlFVOHNSVUZCUlN4SFFVRkhMRU5CUTNaQ0xFMUJRVTBzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRVZCUVVVc2NVSkJRWEZDTEVOQlFVTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVNMVJDeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRGJFSXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkRWQ3h6UWtGQmMwSXNSMEZCWVN4UFFVRlBMRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRU5CUTNoRkxFTkJRVU03VVVGRFJpeFBRVUZQTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNUVUZCVFN4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFOUJRVThzUTBGQlF5eERRVUZETzBsQlEzWkZMRU5CUVVNN1NVRkZVU3hMUVVGTExFTkJRVU1zUzBGQlN5eERRVU5zUWl4SFFVRk5MRVZCUTA0c1IwRkJSeXhKUVVGelF6dFJRVVY2UXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRkxFOUJRVThzUlVGQlJTeEhRVUZITEVOQlEzWkNMRTFCUVUwc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVWQlFVVXNjVUpCUVhGQ0xFTkJRVU1zVFVGQlRTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVTTFSQ3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkRiRUlzUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZEVkN4elFrRkJjMElzUjBGQllTeFBRVUZQTEV0QlFVc3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTEVOQlEzaEZMRU5CUVVNN1VVRkRSaXhQUVVGUExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zVFVGQlRTeEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRM1pGTEVOQlFVTTdTVUZGVVN4TFFVRkxMRU5CUVVNc1ZVRkJWU3hEUVVOMlFpeEhRVUZOTEVWQlEwNHNSMEZCUnl4SlFVRnpRenRSUVVWNlF5eE5RVUZOTEVWQlFVVXNSMEZCUnl4RlFVRkZMRTlCUVU4c1JVRkJSU3hIUVVGSExFTkJRM1pDTEUxQlFVMHNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFVkJRVVVzY1VKQlFYRkNMRU5CUVVNc1YwRkJWeXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVU5xUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdVVUZEZGtJc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGRFZDdzRRa0ZCT0VJc1IwRkJZU3hQUVVGUExFdEJRVXNzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRkxFTkJRMmhHTEVOQlFVTTdVVUZEUml4UFFVRlBMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1YwRkJWeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUXpWRkxFTkJRVU03U1VGRlVTeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVTndRaXhIUVVGTkxFVkJRMDRzUjBGQlJ5eEpRVUZ6UXp0UlFVVjZReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEU5QlFVOHNSVUZCUlN4SFFVRkhMRU5CUTNaQ0xFMUJRVTBzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRVZCUVVVc2NVSkJRWEZDTEVOQlFVTXNVVUZCVVN4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVNNVJDeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGRGNFSXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhaUVVGWkxFdEJRVXNzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFZEJRV0VzUlVGQlJTeERRVUZETEVOQlFVTTdVVUZETTBVc1QwRkJUeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEhGQ1FVRnhRaXhEUVVGRExGRkJRVkVzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVONlJTeERRVUZETzBsQlJVUXNTMEZCU3l4RFFVRkRMRmRCUVZjc1EwRkJReXhIUVVGSExFbEJRWE5ETzFGQlEzcEVMRTFCUVUwc1JVRkJSU3hQUVVGUExFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTTdVVUZGZUVRc1RVRkJUU3hOUVVGTkxFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmRCUVZjc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkZkRVVzVDBGQlR5eE5RVUZOTEVOQlFVTTdTVUZEYUVJc1EwRkJRenRKUVVWUkxFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlEyNUNMRXRCUVZFc1JVRkRVaXhIUVVGSExFbEJRWE5ETzFGQlJYcERMRTFCUVUwc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEU5QlFVOHNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVNM1JDeEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVTlFMR2RDUVVGblFpeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1lVRkJZU3hMUVVGTExFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hEUVVNeFJTeERRVUZETzFGQlEwWXNTVUZCU1N4RFFVRkRMSE5DUVVGelFpeERRVUZETEVkQlFVY3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVONFF5eE5RVUZOTEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eExRVUZMTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRiRVFzVFVGQlRTeEZRVUZGTEUxQlFVMHNSVUZCUlN4RlFVRkZMRVZCUVVVc1UwRkJVeXhGUVVGRkxFZEJRVWNzVVVGQlVTeERRVUZETzFGQlF6TkRMRTFCUVUwc1RVRkJUU3hIUVVGSExFMUJRVTBzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUTNSRExFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlExWXNSVUZCUlN4RlFVTkdMRTFCUVUwc1JVRkRUaXhUUVVGVExFVkJRMVFzUjBGQlJ5eFBRVUZQTEVOQlExZ3NRMEZCUXp0UlFVTkdMRTlCUVU4c1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVa3NUVUZCVFN4RlFVRkZMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzUlVGQlJTeEZRVUZGTEZOQlFWTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVONFJTeERRVUZETzBsQlJWRXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkRia0lzUzBGQlVTeEZRVU5TTEVkQlFVY3NTVUZCYzBNN1VVRkZla01zVFVGQlRTeEZRVUZGTEU5QlFVOHNSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzFGQlF6ZEVMRWxCUVVrc1EwRkJReXh6UWtGQmMwSXNRMEZCUXl4SFFVRkhMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRGVFTXNUVUZCVFN4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNTMEZCU3l4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMnhFTEUxQlFVMHNSVUZCUlN4RlFVRkZMRVZCUVVVc1UwRkJVeXhGUVVGRkxFZEJRVWNzVVVGQlVTeERRVUZETzFGQlEyNURMRWxCUVVrc1RVRkJUU3hIUVVGSExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZETjBJc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGRFVDeFpRVUZaTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hoUVVGaExFdEJRVXNzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhaUVVGWkxFVkJRVVVzUlVGQlJTeERRVU53Uml4RFFVRkRPMUZCUTBZc1RVRkJUU3hIUVVGSExFMUJRVTBzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUTJoRExFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlExWXNSVUZCUlN4RlFVTkdMRTFCUVUwc1JVRkRUaXhUUVVGVExFVkJRMVFzUjBGQlJ5eFBRVUZQTEVOQlExZ3NRMEZCUXp0UlFVTkdMRTlCUVU4c1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVa3NUVUZCVFN4RlFVRkZMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzUlVGQlJTeEZRVUZGTEZOQlFWTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVONFJTeERRVUZETzBsQlJXdENMRXRCUVVzc1EwRkJReXhsUVVGbExFTkJRM1JETEUxQlFWY3NSVUZEV0N4SFFVRkhMRWxCUVhORE8xRkJSWHBETEUxQlFVMHNSVUZCUlN4SFFVRkhMRVZCUVVVc1QwRkJUeXhGUVVGRkxFZEJRVWNzUTBGRGRrSXNUVUZCVFN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUlVGQlJTeGhRVUZoTEVOQlFVTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVOd1JDeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU03VVVGRE5VSXNUVUZCVFN4alFVRmpMRWRCUVVjc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRE8xRkJRMnBFTEUxQlFVMHNZMEZCWXl4SFFVRkhMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1EwRkJRenRSUVVOdVJDeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwN1dVRkJSU3hQUVVGUExFTkJRVU1zVFVGQlRTeEZRVUZGTEVkQlFVY3NUMEZCVHl4RFFVRlJMRU5CUVVNN1VVRkZka1FzVFVGQlRTeEhRVUZITEUxQlFVMHNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkRlRUlzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRGNrSXNRMEZCUXl4SFFVRkhMRWxCUVVrc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjBRaXhKUVVGSkxFTkJRVU1zWTBGQll6dG5Ra0ZEYWtJc1RVRkJUU3h0UWtGQmJVSXNRMEZEZGtJc1NVRkJTU3hGUVVOS0xFZEJRVWNzUlVGRFNDeERRVUZETEVWQlEwUXNZVUZCWVN4RFFVRkRMRTFCUVUwc1JVRkRjRUlzWVVGQllTeERRVUZETEVWQlFVVXNRMEZEYWtJc1EwRkJRenRaUVVOS0xFOUJRVThzUTBGQlF5eERRVUZETzFGQlExZ3NRMEZCUXl4RFFVRkRMRU5CUTBnc1EwRkJRenRSUVVWR0xFbEJRVWtzUTBGQlF5eGpRVUZqTEVWQlFVVXNRMEZCUXp0WlFVTndRaXhOUVVGTkxGbEJRVmtzUjBGQlJ5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRFpDUVVFMlFpeERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRPMWxCUld4RkxFMUJRVTBzVFVGQlRTeEhRVUZITEUxQlFVMHNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkRPVUlzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzV1VGQldTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVTnFSU3hEUVVGRE8xbEJSVVlzVFVGQlRTeGhRVUZoTEVkQlFVY3NiVUpCUVcxQ0xFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdXVUZGYkVRc1NVRkJTU3hoUVVGaE8yZENRVUZGTEUxQlFVMHNTVUZCU1N4bFFVRmxMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU03VVVGRE9VUXNRMEZCUXp0UlFVTkVMRTlCUVU4c1EwRkJReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eFBRVUZQTEVOQlFWRXNRMEZCUXp0SlFVTnlReXhEUVVGRE8wbEJSVkVzUzBGQlN5eERRVUZETEZOQlFWTXNRMEZEZEVJc1RVRkJWeXhGUVVOWUxFZEJRVWNzU1VGQmMwTTdVVUZGZWtNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTzFsQlFVVXNUMEZCVHl4TlFVRk5MRU5CUVVNN1VVRkRiRU1zVFVGQlRTeEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1QwRkJUeXhGUVVGRkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzFGQlEyaEZMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRMUFzV1VGQldTeE5RVUZOTEVOQlFVTXNUVUZCVFN4UlFVRlJMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeGhRVUZoTEV0QlFVc3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTEVOQlF6TkdMRU5CUVVNN1VVRkZSaXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zYzBKQlFYTkNMRU5CUVVNc1IwRkJSeXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYmtVc1RVRkJUU3hSUVVGUkxFZEJRVWNzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYWtVc1RVRkJUU3hIUVVGSExFZEJRVWNzVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTNSRExFMUJRVTBzVVVGQlVTeEhRVUZITEZGQlFWRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVNdlF5eE5RVUZOTEZWQlFWVXNSMEZCUnl4UlFVRlJMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03VVVGRGNFUXNUVUZCVFN4UFFVRlBMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZOQlFWTXNRMEZETVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUlVGRFZpeEhRVUYxUWl4RlFVTjJRaXhSUVVGUkxFVkJRMUlzVlVGQlZTeEZRVU5XTEVkQlFVY3NUMEZCVHl4RFFVTllMRU5CUVVNN1VVRkRSaXhQUVVGUExFOUJRVThzUTBGQlF5eEhRVUZITEVOQlEyaENMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVONlFpeE5RVUZOTEVWQlFVVXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGJFSXNUMEZCVHl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlNTeERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSU3hGUVVGRkxFVkJRVVVzVlVGQlZTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRM1pGTEVOQlFVTXNRMEZCUXl4RFFVTklMRU5CUVVNN1NVRkRTaXhEUVVGRE8wbEJSVkVzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZEY0VJc1NVRkJjMElzUlVGRGRFSXNSMEZCUnl4SlFVRnpRenRSUVVWNlF5eE5RVUZOTEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hQUVVGUExFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdVVUZET1VRc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGRFVDeFhRVUZYTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWxCUVVrc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEdGQlFXRXNTMEZCU3l4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVWQlFVVXNRMEZEY0VZc1EwRkJRenRSUVVOR0xFMUJRVTBzVDBGQlR5eEhRVUZITEUxQlFVMHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlN4SlFVRkpMRVZCUVVVc1IwRkJSeXhQUVVGUExFTkJRVU1zUTBGQlF6dFJRVU42UlN4UFFVRlBMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkRNVUlzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZEY2tRc1EwRkJRenRKUVVOS0xFTkJRVU03U1VGRlVTeExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVTjBRaXhOUVVGWExFVkJRMWdzUjBGQlJ5eEpRVUZ6UXp0UlFVVjZReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4UFFVRlBMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03VVVGRGFFVXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkRVQ3haUVVGWkxFMUJRVTBzUTBGQlF5eE5RVUZOTEZGQlFWRXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxHRkJRV0VzUzBGQlN5eERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVVzUTBGRE0wWXNRMEZCUXp0UlFVVkdMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXh6UWtGQmMwSXNRMEZCUXl4SFFVRkhMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU51UlN4TlFVRk5MRkZCUVZFc1IwRkJSeXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5xUlN4TlFVRk5MRWRCUVVjc1IwRkJSeXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdVVUZEZEVNc1RVRkJUU3hQUVVGUExFZEJRVWNzVFVGQlRTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRk5CUVZNc1EwRkRNVU1zU1VGQlNTeERRVUZETEV0QlFVc3NSVUZEVml4SFFVRjFRaXhGUVVOMlFpeFJRVUZSTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUXpkQ0xGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eFRRVUZUTEVOQlFVTXNSVUZEYUVNc1IwRkJSeXhQUVVGUExFTkJRMWdzUTBGQlF6dFJRVU5HTEU5QlFVOHNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkRhRUlzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzFsQlEzcENMRTFCUVUwc1JVRkJSU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTnNRaXhQUVVGUExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVTjRRaXhEUVVGRExFVkJRMFFzU1VGQlNTeERRVUZETEV0QlFVc3NSVUZEVml4RlFVRkZMRVZCUTBZc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEZOQlFWTXNSVUZEY2tJc1IwRkJSeXhEUVVOS0xFTkJRVU03VVVGRFNpeERRVUZETEVOQlFVTXNRMEZEU0N4RFFVRkRPMGxCUTBvc1EwRkJRenRKUVVWUExITkNRVUZ6UWl4RFFVRkRMRWRCUVdsQ0xFVkJRVVVzUzBGQlVUdFJRVU40UkN4SlFVRkpMRXRCUVVzc1EwRkJReXhWUVVGVkxFTkJRVU1zUzBGQlN5eERRVUZETEVWQlFVVXNRMEZCUXp0WlFVTTFRaXhIUVVGSExFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNUVUZCVFN4RlFVRkZMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRGJrTXNRMEZCUXp0SlFVTklMRU5CUVVNN1EwRkRSaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0IwZVhCbElIc2dUV0Y1WW1WRGIyNTBaWGgwZFdGc1FYSm5JSDBnWm5KdmJTQmNJa0JrWldOaFppMTBjeTlqYjNKbFhDSTdYRzVwYlhCdmNuUWdlMXh1SUNCRGIyNTBaWGgwVDJZc1hHNGdJRVJwY21WamRHbHZia3hwYldsMFQyWm1jMlYwTEZ4dUlDQkdiR0ZuYzA5bUxGeHVJQ0JQWW5ObGNuWmxja2hoYm1Sc1pYSXNYRzRnSUU5eVpHVnlSR2x5WldOMGFXOXVMRnh1SUNCUVlXZHBibUYwYjNJc1hHNGdJRkJsY25OcGMzUmxibU5sUzJWNWN5eGNiaUFnVUhKbGNHRnlaV1JUZEdGMFpXMWxiblJMWlhsekxGeHVJQ0JTWlhCdmMybDBiM0o1TEZ4dUlDQlRaWEpwWVd4cGVtVmtVR0ZuWlN4Y2JuMGdabkp2YlNCY0lrQmtaV05oWmkxMGN5OWpiM0psWENJN1hHNXBiWEJ2Y25RZ2V5Qk5iMlJsYkNCOUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdlpHVmpiM0poZEc5eUxYWmhiR2xrWVhScGIyNWNJanRjYm1sdGNHOXlkQ0I3SUVOdmJuTjBjblZqZEc5eUlIMGdabkp2YlNCY0lrQmtaV05oWmkxMGN5OWtaV052Y21GMGFXOXVYQ0k3WEc1cGJYQnZjblFnZXlCMGVYQmxJRVpoWW5KcFkwTnNhV1Z1ZEVGa1lYQjBaWElnZlNCbWNtOXRJRndpTGk5R1lXSnlhV05EYkdsbGJuUkJaR0Z3ZEdWeVhDSTdYRzVwYlhCdmNuUWdlMXh1SUNCQ2RXeHJRM0oxWkU5d1pYSmhkR2x2Ymt0bGVYTXNYRzRnSUdWdVptOXlZMlZFUWtSbFkyOXlZWFJ2Y25Nc1hHNGdJRTl3WlhKaGRHbHZia3RsZVhNc1hHNGdJRkJ5YVcxaGNubExaWGxVZVhCbExGeHVJQ0J5WldSMVkyVkZjbkp2Y25OVWIxQnlhVzUwTEZ4dUlDQldZV3hwWkdGMGFXOXVSWEp5YjNJc1hHNTlJR1p5YjIwZ1hDSkFaR1ZqWVdZdGRITXZaR0l0WkdWamIzSmhkRzl5YzF3aU8xeHVhVzF3YjNKMElIc2dRMjkxWTJoRVFrdGxlWE1nZlNCbWNtOXRJRndpUUdSbFkyRm1MWFJ6TDJadmNpMWpiM1ZqYUdSaVhDSTdYRzVwYlhCdmNuUWdleUJHWVdKeWFXTkRiR2xsYm5SUVlXZHBibUYwYjNJZ2ZTQm1jbTl0SUZ3aUxpOUdZV0p5YVdORGJHbGxiblJRWVdkcGJtRjBiM0pjSWp0Y2JseHVMeW9xWEc0Z0tpQkFaR1Z6WTNKcGNIUnBiMjRnVW1Wd2IzTnBkRzl5ZVNCcGJYQnNaVzFsYm5SaGRHbHZiaUJtYjNJZ1JtRmljbWxqSUdOc2FXVnVkQ0J2Y0dWeVlYUnBiMjV6WEc0Z0tpQkFjM1Z0YldGeWVTQkZlSFJsYm1SeklIUm9aU0JuWlc1bGNtbGpJRkpsY0c5emFYUnZjbmtnZEc4Z2NISmxjR0Z5WlNCamIyNTBaWGgwSUdGdVpDQmhjbWQxYldWdWRITWdabTl5SUVOU1ZVUWdiM0JsY21GMGFXOXVjeUJsZUdWamRYUmxaQ0IyYVdFZ1lTQkdZV0p5YVdNZ1kyeHBaVzUwSUVGa1lYQjBaWElzSUhkcGNtbHVaeUJTWlhCdmMybDBiM0o1Um14aFozTWdZVzVrSUVaaFluSnBZeTF6Y0dWamFXWnBZeUJ2ZG1WeWNtbGtaWE11WEc0Z0tpQkFkR1Z0Y0d4aGRHVWdUU0JsZUhSbGJtUnpJRTF2WkdWc0lDMGdWR2hsSUcxdlpHVnNJSFI1Y0dVZ2FHRnVaR3hsWkNCaWVTQjBhR2x6SUhKbGNHOXphWFJ2Y25sY2JpQXFJRUJ3WVhKaGJTQjdRV1JoY0hSbGNqeGhibmtzSUUxaGJtZHZVWFZsY25rc0lFWmhZbkpwWTBac1lXZHpMQ0JEYjI1MFpYaDBQRVpoWW5KcFkwWnNZV2R6UGo1OUlGdGhaR0Z3ZEdWeVhTQXRJRTl3ZEdsdmJtRnNJR0ZrWVhCMFpYSWdhVzV6ZEdGdVkyVWdkWE5sWkNCMGJ5QmxlR1ZqZFhSbElHOXdaWEpoZEdsdmJuTmNiaUFxSUVCd1lYSmhiU0I3UTI5dWMzUnlkV04wYjNJOFRUNTlJRnRqYkdGNmVsMGdMU0JQY0hScGIyNWhiQ0J0YjJSbGJDQmpiMjV6ZEhKMVkzUnZjaUIxYzJWa0lHSjVJSFJvWlNCeVpYQnZjMmwwYjNKNVhHNGdLaUJBY21WMGRYSnVJSHQyYjJsa2ZWeHVJQ29nUUdOc1lYTnpJRVpoWW5KcFkwTnNhV1Z1ZEZKbGNHOXphWFJ2Y25sY2JpQXFJRUJsZUdGdGNHeGxYRzRnS2lCcGJYQnZjblFnZXlCU1pYQnZjMmwwYjNKNUlIMGdabkp2YlNCY0lrQmtaV05oWmkxMGN5OWpiM0psWENJN1hHNGdLaUJwYlhCdmNuUWdleUJHWVdKeWFXTkRiR2xsYm5SU1pYQnZjMmwwYjNKNUlIMGdabkp2YlNCY0lrQmtaV05oWmkxMGN5OW1iM0l0Wm1GaWNtbGpYQ0k3WEc0Z0tseHVJQ29nWTJ4aGMzTWdWWE5sY2lCbGVIUmxibVJ6SUUxdlpHVnNJSHNnYVdRaE9pQnpkSEpwYm1jN0lHNWhiV1VoT2lCemRISnBibWM3SUgxY2JpQXFJR052Ym5OMElISmxjRzhnUFNCdVpYY2dSbUZpY21salEyeHBaVzUwVW1Wd2IzTnBkRzl5ZVR4VmMyVnlQaWdwTzF4dUlDb2dZMjl1YzNRZ1kzSmxZWFJsWkNBOUlHRjNZV2wwSUhKbGNHOHVZM0psWVhSbEtHNWxkeUJWYzJWeUtIc2dhV1E2SUZ3aU1Wd2lMQ0J1WVcxbE9pQmNJa0ZzYVdObFhDSWdmU2twTzF4dUlDb2dZMjl1YzNRZ2JHOWhaR1ZrSUQwZ1lYZGhhWFFnY21Wd2J5NXlaV0ZrS0Z3aU1Wd2lLVHRjYmlBcVhHNGdLaUJBYldWeWJXRnBaRnh1SUNvZ2MyVnhkV1Z1WTJWRWFXRm5jbUZ0WEc0Z0tpQWdJSEJoY25ScFkybHdZVzUwSUVGd2NGeHVJQ29nSUNCd1lYSjBhV05wY0dGdWRDQlNaWEJ2SUdGeklFWmhZbkpwWTBOc2FXVnVkRkpsY0c5emFYUnZjbmxjYmlBcUlDQWdjR0Z5ZEdsamFYQmhiblFnUVdSaGNIUmxjbHh1SUNvZ0lDQkJjSEF0UGo1U1pYQnZPaUJqY21WaGRHVW9iVzlrWld3cFhHNGdLaUFnSUZKbGNHOHRQajVTWlhCdk9pQmpjbVZoZEdWUWNtVm1hWGdvYlc5a1pXd3NJQzR1TG1GeVozTXBYRzRnS2lBZ0lGSmxjRzh0UGo1QlpHRndkR1Z5T2lCamNtVmhkR1VvZEdGaWJHVXNJR2xrTENCdGIyUmxiQ3dnWm14aFozTXBYRzRnS2lBZ0lFRmtZWEIwWlhJdExUNCtVbVZ3YnpvZ2NtVnpkV3gwWEc0Z0tpQWdJRkpsY0c4dExUNCtRWEJ3T2lCdGIyUmxiRnh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nUm1GaWNtbGpRMnhwWlc1MFVtVndiM05wZEc5eWVUeGNiaUFnVFNCbGVIUmxibVJ6SUUxdlpHVnNMRnh1SUNCQklHVjRkR1Z1WkhNZ1JtRmljbWxqUTJ4cFpXNTBRV1JoY0hSbGNpQTlJRVpoWW5KcFkwTnNhV1Z1ZEVGa1lYQjBaWElzWEc0K0lHVjRkR1Z1WkhNZ1VtVndiM05wZEc5eWVUeE5MQ0JCUGlCN1hHNGdJSEJ5YjNSbFkzUmxaQ0J2ZG1WeWNtbGtaU0JmYjNabGNuSnBaR1Z6SUQwZ1QySnFaV04wTG1GemMybG5iaWg3ZlN3Z2MzVndaWEpiWENKZmIzWmxjbkpwWkdWelhDSmRMQ0I3WEc0Z0lDQWdhV2R1YjNKbFZtRnNhV1JoZEdsdmJqb2dkSEoxWlN4Y2JpQWdJQ0JwWjI1dmNtVklZVzVrYkdWeWN6b2dkSEoxWlN4Y2JpQWdJQ0JoYkd4dmQxSmhkMU4wWVhSbGJXVnVkSE02SUdaaGJITmxMRnh1SUNBZ0lHWnZjbU5sVUhKbGNHRnlaVk5wYlhCc1pWRjFaWEpwWlhNNklIUnlkV1VzWEc0Z0lDQWdabTl5WTJWUWNtVndZWEpsUTI5dGNHeGxlRkYxWlhKcFpYTTZJSFJ5ZFdVc1hHNGdJQ0FnWVd4c2IzZEhaVzVsY21GMGFXOXVUM1psY25KcFpHVTZJR1poYkhObExGeHVJQ0FnSUhKbFluVnBiR1JYYVhSb1ZISmhibk5wWlc1ME9pQm1ZV3h6WlN4Y2JpQWdmU2s3WEc1Y2JpQWdZMjl1YzNSeWRXTjBiM0lvWVdSaGNIUmxjajg2SUVFc0lHTnNZWHA2UHpvZ1EyOXVjM1J5ZFdOMGIzSThUVDRzSUdadmNtTmxPaUJpYjI5c1pXRnVJRDBnWm1Gc2MyVXBJSHRjYmlBZ0lDQnpkWEJsY2loaFpHRndkR1Z5TENCamJHRjZlaXdnWm05eVkyVXBPMXh1SUNCOVhHNWNiaUFnYjNabGNuSnBaR1VnYjNabGNuSnBaR1VvWm14aFozTTZJRkJoY25ScFlXdzhSbXhoWjNOUFpqeERiMjUwWlhoMFQyWThRVDQrUGlrNklIUm9hWE1nZTF4dUlDQWdJSEpsZEhWeWJpQnpkWEJsY2x4dUlDQWdJQ0FnTG05MlpYSnlhV1JsS0U5aWFtVmpkQzVoYzNOcFoyNG9lMzBzSUdac1lXZHpMQ0IwYUdsekxsOXZkbVZ5Y21sa1pYTXBLVnh1SUNBZ0lDQWdMbVp2Y2lobWJHRm5jeUJoY3lCaGJua3BPMXh1SUNCOVhHNWNiaUFnY0hKdmRHVmpkR1ZrSUc5MlpYSnlhV1JsSUU5aWMyVnlkbVZ5U0dGdVpHeGxjaWdwT2lCUFluTmxjblpsY2toaGJtUnNaWElnZTF4dUlDQWdJSEpsZEhWeWJpQnpkWEJsY2k1UFluTmxjblpsY2toaGJtUnNaWElvS1R0Y2JpQWdmVnh1WEc0Z0lHOTJaWEp5YVdSbElHRnplVzVqSUhCaFoybHVZWFJsUW5rb1hHNGdJQ0FnYTJWNU9pQnJaWGx2WmlCTkxGeHVJQ0FnSUc5eVpHVnlPaUJQY21SbGNrUnBjbVZqZEdsdmJpeGNiaUFnSUNCeVpXWTZJRTl0YVhROFJHbHlaV04wYVc5dVRHbHRhWFJQWm1aelpYUXNJRndpWkdseVpXTjBhVzl1WENJK0lEMGdlMXh1SUNBZ0lDQWdiMlptYzJWME9pQXhMRnh1SUNBZ0lDQWdiR2x0YVhRNklERXdMRnh1SUNBZ0lIMHNYRzRnSUNBZ0xpNHVZWEpuY3pvZ1RXRjVZbVZEYjI1MFpYaDBkV0ZzUVhKblBFTnZiblJsZUhSUFpqeEJQajVjYmlBZ0tUb2dVSEp2YldselpUeFRaWEpwWVd4cGVtVmtVR0ZuWlR4TlBqNGdlMXh1SUNBZ0lHTnZibk4wSUhzZ2JHOW5MQ0JqZEhoQmNtZHpJSDBnUFNBb1hHNGdJQ0FnSUNCaGQyRnBkQ0IwYUdsekxteHZaME4wZUNoaGNtZHpMQ0JRY21Wd1lYSmxaRk4wWVhSbGJXVnVkRXRsZVhNdVVFRkhSVjlDV1N3Z2RISjFaU2xjYmlBZ0lDQXBMbVp2Y2loMGFHbHpMbkJoWjJsdVlYUmxRbmtwTzF4dUlDQWdJR3h2Wnk1MlpYSmliM05sS0Z4dUlDQWdJQ0FnWUhCaFoybHVZWFJwYm1jZ0pIdE5iMlJsYkM1MFlXSnNaVTVoYldVb2RHaHBjeTVqYkdGemN5bDlJSGRwZEdnZ2NHRm5aU0J6YVhwbElDUjdjbVZtTG14cGJXbDBmV0JjYmlBZ0lDQXBPMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbk4wWVhSbGJXVnVkQ2hjYmlBZ0lDQWdJSFJvYVhNdWNHRm5hVzVoZEdWQ2VTNXVZVzFsTEZ4dUlDQWdJQ0FnYTJWNUxGeHVJQ0FnSUNBZ2IzSmtaWElzWEc0Z0lDQWdJQ0I3SUd4cGJXbDBPaUJ5WldZdWJHbHRhWFFzSUc5bVpuTmxkRG9nY21WbUxtOW1abk5sZEN3Z1ltOXZhMjFoY21zNklISmxaaTVpYjI5cmJXRnlheUI5TEZ4dUlDQWdJQ0FnTGk0dVkzUjRRWEpuYzF4dUlDQWdJQ2s3WEc0Z0lIMWNibHh1SUNCdmRtVnljbWxrWlNCaGMzbHVZeUJzYVhOMFFua29YRzRnSUNBZ2EyVjVPaUJyWlhsdlppQk5MRnh1SUNBZ0lHOXlaR1Z5T2lCUGNtUmxja1JwY21WamRHbHZiaXhjYmlBZ0lDQXVMaTVoY21kek9pQk5ZWGxpWlVOdmJuUmxlSFIxWVd4QmNtYzhRMjl1ZEdWNGRFOW1QRUUrUGx4dUlDQXBPaUJRY205dGFYTmxQRTFiWFQ0Z2UxeHVJQ0FnSUdOdmJuTjBJSHNnYkc5bkxDQmpkSGhCY21keklIMGdQU0FvWEc0Z0lDQWdJQ0JoZDJGcGRDQjBhR2x6TG14dlowTjBlQ2hoY21kekxDQlFjbVZ3WVhKbFpGTjBZWFJsYldWdWRFdGxlWE11VEVsVFZGOUNXU3dnZEhKMVpTbGNiaUFnSUNBcExtWnZjaWgwYUdsekxteHBjM1JDZVNrN1hHNGdJQ0FnYkc5bkxuWmxjbUp2YzJVb1hHNGdJQ0FnSUNCZ2JHbHpkR2x1WnlBa2UwMXZaR1ZzTG5SaFlteGxUbUZ0WlNoMGFHbHpMbU5zWVhOektYMGdZbmtnSkh0clpYa2dZWE1nYzNSeWFXNW5mU0FrZTI5eVpHVnlmV0JjYmlBZ0lDQXBPMXh1SUNBZ0lISmxkSFZ5YmlBb1lYZGhhWFFnZEdocGN5NXpkR0YwWlcxbGJuUW9YRzRnSUNBZ0lDQjBhR2x6TG14cGMzUkNlUzV1WVcxbExGeHVJQ0FnSUNBZ2EyVjVMRnh1SUNBZ0lDQWdiM0prWlhJc1hHNGdJQ0FnSUNBdUxpNWpkSGhCY21kelhHNGdJQ0FnS1NrZ1lYTWdZVzU1TzF4dUlDQjlYRzVjYmlBZ2IzWmxjbkpwWkdVZ1lYTjVibU1nWm1sdVpFSjVLRnh1SUNBZ0lHdGxlVG9nYTJWNWIyWWdUU3hjYmlBZ0lDQjJZV3gxWlRvZ1lXNTVMRnh1SUNBZ0lDNHVMbUZ5WjNNNklFMWhlV0psUTI5dWRHVjRkSFZoYkVGeVp6eERiMjUwWlhoMFQyWThRVDQrWEc0Z0lDazZJRkJ5YjIxcGMyVThUVnRkUGlCN1hHNGdJQ0FnWTI5dWMzUWdleUJzYjJjc0lHTjBlRUZ5WjNNZ2ZTQTlJQ2hjYmlBZ0lDQWdJR0YzWVdsMElIUm9hWE11Ykc5blEzUjRLR0Z5WjNNc0lGQnlaWEJoY21Wa1UzUmhkR1Z0Wlc1MFMyVjVjeTVHU1U1RVgwSlpMQ0IwY25WbEtWeHVJQ0FnSUNrdVptOXlLSFJvYVhNdVptbHVaRUo1S1R0Y2JpQWdJQ0JzYjJjdWRtVnlZbTl6WlNoY2JpQWdJQ0FnSUdCbWFXNWthVzVuSUdGc2JDQWtlMDF2WkdWc0xuUmhZbXhsVG1GdFpTaDBhR2x6TG1Oc1lYTnpLWDBnZDJsMGFDQWtlMnRsZVNCaGN5QnpkSEpwYm1kOUlDUjdkbUZzZFdWOVlGeHVJQ0FnSUNrN1hHNGdJQ0FnY21WMGRYSnVJQ2hoZDJGcGRDQjBhR2x6TG5OMFlYUmxiV1Z1ZENoY2JpQWdJQ0FnSUhSb2FYTXVabWx1WkVKNUxtNWhiV1VzWEc0Z0lDQWdJQ0JyWlhrc1hHNGdJQ0FnSUNCMllXeDFaU3hjYmlBZ0lDQWdJQzR1TG1OMGVFRnlaM05jYmlBZ0lDQXBLU0JoY3lCaGJuazdYRzRnSUgxY2JseHVJQ0J2ZG1WeWNtbGtaU0JoYzNsdVl5Qm1hVzVrVDI1bFFua29YRzRnSUNBZ2EyVjVPaUJyWlhsdlppQk5MRnh1SUNBZ0lIWmhiSFZsT2lCaGJua3NYRzRnSUNBZ0xpNHVZWEpuY3pvZ1RXRjVZbVZEYjI1MFpYaDBkV0ZzUVhKblBFTnZiblJsZUhSUFpqeEJQajVjYmlBZ0tUb2dVSEp2YldselpUeE5QaUI3WEc0Z0lDQWdZMjl1YzNRZ2V5QnNiMmNzSUdOMGVFRnlaM01nZlNBOUlDaGNiaUFnSUNBZ0lHRjNZV2wwSUhSb2FYTXViRzluUTNSNEtHRnlaM01zSUZCeVpYQmhjbVZrVTNSaGRHVnRaVzUwUzJWNWN5NUdTVTVFWDA5T1JWOUNXU3dnZEhKMVpTbGNiaUFnSUNBcExtWnZjaWgwYUdsekxtWnBibVJQYm1WQ2VTazdYRzRnSUNBZ2JHOW5MblpsY21KdmMyVW9YRzRnSUNBZ0lDQmdabWx1WkdsdVp5QlBibVVnSkh0TmIyUmxiQzUwWVdKc1pVNWhiV1VvZEdocGN5NWpiR0Z6Y3lsOUlIZHBkR2dnSkh0clpYa2dZWE1nYzNSeWFXNW5mU0FrZTNaaGJIVmxmV0JjYmlBZ0lDQXBPMXh1SUNBZ0lISmxkSFZ5YmlBb1lYZGhhWFFnZEdocGN5NXpkR0YwWlcxbGJuUW9YRzRnSUNBZ0lDQjBhR2x6TG1acGJtUlBibVZDZVM1dVlXMWxMRnh1SUNBZ0lDQWdhMlY1TEZ4dUlDQWdJQ0FnZG1Gc2RXVXNYRzRnSUNBZ0lDQXVMaTVqZEhoQmNtZHpYRzRnSUNBZ0tTa2dZWE1nWVc1NU8xeHVJQ0I5WEc1Y2JpQWdiM1psY25KcFpHVWdZWE41Ym1NZ1ptbHVaQ2hjYmlBZ0lDQjJZV3gxWlRvZ2MzUnlhVzVuTEZ4dUlDQWdJRzl5WkdWeU9pQlBjbVJsY2tScGNtVmpkR2x2YmlBOUlFOXlaR1Z5UkdseVpXTjBhVzl1TGtGVFF5eGNiaUFnSUNBdUxpNWhjbWR6T2lCTllYbGlaVU52Ym5SbGVIUjFZV3hCY21jOFEyOXVkR1Y0ZEU5bVBFRStQbHh1SUNBcE9pQlFjbTl0YVhObFBFMWJYVDRnZTF4dUlDQWdJR052Ym5OMElIc2diRzluTENCamRIaEJjbWR6SUgwZ1BTQW9YRzRnSUNBZ0lDQmhkMkZwZENCMGFHbHpMbXh2WjBOMGVDaGhjbWR6TENCUWNtVndZWEpsWkZOMFlYUmxiV1Z1ZEV0bGVYTXVSa2xPUkN3Z2RISjFaU2xjYmlBZ0lDQXBMbVp2Y2loMGFHbHpMbVpwYm1RcE8xeHVJQ0FnSUd4dlp5NTJaWEppYjNObEtGeHVJQ0FnSUNBZ1lHWnBibVJwYm1jZ0pIdE5iMlJsYkM1MFlXSnNaVTVoYldVb2RHaHBjeTVqYkdGemN5bDlJR0o1SUdSbFptRjFiSFFnY1hWbGNua2dZWFIwY21saWRYUmxjMkJjYmlBZ0lDQXBPMXh1SUNBZ0lISmxkSFZ5YmlBb1lYZGhhWFFnZEdocGN5NXpkR0YwWlcxbGJuUW9YRzRnSUNBZ0lDQjBhR2x6TG1acGJtUXVibUZ0WlN4Y2JpQWdJQ0FnSUhaaGJIVmxMRnh1SUNBZ0lDQWdiM0prWlhJc1hHNGdJQ0FnSUNBdUxpNWpkSGhCY21kelhHNGdJQ0FnS1NrZ1lYTWdZVzU1TzF4dUlDQjlYRzVjYmlBZ2IzWmxjbkpwWkdVZ1lYTjVibU1nY0dGblpTaGNiaUFnSUNCMllXeDFaVG9nYzNSeWFXNW5MRnh1SUNBZ0lHUnBjbVZqZEdsdmJqb2dUM0prWlhKRWFYSmxZM1JwYjI0Z1BTQlBjbVJsY2tScGNtVmpkR2x2Ymk1QlUwTXNYRzRnSUNBZ2NtVm1PaUJQYldsMFBFUnBjbVZqZEdsdmJreHBiV2wwVDJabWMyVjBMQ0JjSW1ScGNtVmpkR2x2Ymx3aVBpQTlJSHRjYmlBZ0lDQWdJRzltWm5ObGREb2dNU3hjYmlBZ0lDQWdJR3hwYldsME9pQXhNQ3hjYmlBZ0lDQjlMRnh1SUNBZ0lDNHVMbUZ5WjNNNklFMWhlV0psUTI5dWRHVjRkSFZoYkVGeVp6eERiMjUwWlhoMFQyWThRVDQrWEc0Z0lDazZJRkJ5YjIxcGMyVThVMlZ5YVdGc2FYcGxaRkJoWjJVOFRUNCtJSHRjYmlBZ0lDQmpiMjV6ZENCN0lHeHZaeXdnWTNSNFFYSm5jeUI5SUQwZ0tGeHVJQ0FnSUNBZ1lYZGhhWFFnZEdocGN5NXNiMmREZEhnb1lYSm5jeXdnVUhKbGNHRnlaV1JUZEdGMFpXMWxiblJMWlhsekxsQkJSMFVzSUhSeWRXVXBYRzRnSUNBZ0tTNW1iM0lvZEdocGN5NXdZV2RsS1R0Y2JpQWdJQ0JzYjJjdWRtVnlZbTl6WlNoY2JpQWdJQ0FnSUdCd1lXZHBibWNnSkh0TmIyUmxiQzUwWVdKc1pVNWhiV1VvZEdocGN5NWpiR0Z6Y3lsOUlHSjVJR1JsWm1GMWJIUWdjWFZsY25rZ1lYUjBjbWxpZFhSbGMyQmNiaUFnSUNBcE8xeHVJQ0FnSUhKbGRIVnliaUFvWVhkaGFYUWdkR2hwY3k1emRHRjBaVzFsYm5Rb1hHNGdJQ0FnSUNCMGFHbHpMbkJoWjJVdWJtRnRaU3hjYmlBZ0lDQWdJSFpoYkhWbExGeHVJQ0FnSUNBZ1pHbHlaV04wYVc5dUxGeHVJQ0FnSUNBZ2NtVm1MRnh1SUNBZ0lDQWdMaTR1WTNSNFFYSm5jMXh1SUNBZ0lDa3BJR0Z6SUdGdWVUdGNiaUFnZlZ4dVhHNGdJRzkyWlhKeWFXUmxJR0Z6ZVc1aklITjBZWFJsYldWdWRDaGNiaUFnSUNCdVlXMWxPaUJ6ZEhKcGJtY3NYRzRnSUNBZ0xpNHVZWEpuY3pvZ1RXRjVZbVZEYjI1MFpYaDBkV0ZzUVhKblBFTnZiblJsZUhSUFpqeEJQajVjYmlBZ0tUb2dVSEp2YldselpUeGhibmsrSUh0Y2JpQWdJQ0JqYjI1emRDQjdJR3h2Wnl3Z1kzUjRMQ0JqZEhoQmNtZHpJSDBnUFNBb1hHNGdJQ0FnSUNCaGQyRnBkQ0IwYUdsekxteHZaME4wZUNoaGNtZHpMQ0JRWlhKemFYTjBaVzVqWlV0bGVYTXVVMVJCVkVWTlJVNVVMQ0IwY25WbEtWeHVJQ0FnSUNrdVptOXlLSFJvYVhNdWMzUmhkR1Z0Wlc1MEtUdGNiaUFnSUNCc2IyY3VkbVZ5WW05elpTaGdSWGhsWTNWMGFXNW5JSEJ5WlhCaGNtVmtJSE4wWVhSbGJXVnVkQ0FrZTI1aGJXVjlZQ2s3WEc0Z0lDQWdZMjl1YzNRZ1kyRnNiRUZ5WjNNZ1BTQmpkSGhCY21kekxuTnNhV05sS0RBc0lDMHhLVHRjYmlBZ0lDQmpiMjV6ZENCeVpYTjFiSFFnUFNCS1UwOU9MbkJoY25ObEtGeHVJQ0FnSUNBZ2RHaHBjeTVoWkdGd2RHVnlMbVJsWTI5a1pTaGNiaUFnSUNBZ0lDQWdZWGRoYVhRZ2RHaHBjeTVoWkdGd2RHVnlMbVYyWVd4MVlYUmxWSEpoYm5OaFkzUnBiMjRvWEc0Z0lDQWdJQ0FnSUNBZ1kzUjRMRnh1SUNBZ0lDQWdJQ0FnSUZCbGNuTnBjM1JsYm1ObFMyVjVjeTVUVkVGVVJVMUZUbFFzWEc0Z0lDQWdJQ0FnSUNBZ1cyNWhiV1VzSUVwVFQwNHVjM1J5YVc1bmFXWjVLR05oYkd4QmNtZHpLVjBzWEc0Z0lDQWdJQ0FnSUNBZ2RXNWtaV1pwYm1Wa0xGeHVJQ0FnSUNBZ0lDQWdJSFZ1WkdWbWFXNWxaQ3hjYmlBZ0lDQWdJQ0FnSUNCMGFHbHpMbU5zWVhOekxtNWhiV1ZjYmlBZ0lDQWdJQ0FnS1Z4dUlDQWdJQ0FnS1Z4dUlDQWdJQ2s3WEc1Y2JpQWdJQ0JzWlhRZ2FIbGtjbUYwWldRNklHRnVlVHRjYmlBZ0lDQnBaaUFvUVhKeVlYa3VhWE5CY25KaGVTaHlaWE4xYkhRcEtTQjdYRzRnSUNBZ0lDQm9lV1J5WVhSbFpDQTlJSEpsYzNWc2RDNXRZWEFvS0hJNklHRnVlU2tnUFQ1Y2JpQWdJQ0FnSUNBZ0tISWdZWE1nWVc1NUtWdERiM1ZqYUVSQ1MyVjVjeTVVUVVKTVJWMGdKaVpjYmlBZ0lDQWdJQ0FnS0hJZ1lYTWdZVzU1S1Z0RGIzVmphRVJDUzJWNWN5NVVRVUpNUlYwZ1BUMDlJRTF2WkdWc0xuUmhZbXhsVG1GdFpTaDBhR2x6TG1Oc1lYTnpLVnh1SUNBZ0lDQWdJQ0FnSUQ4Z0tHNWxkeUIwYUdsekxtTnNZWE56S0hJcElHRnpJRTBwWEc0Z0lDQWdJQ0FnSUNBZ09pQnlYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9YRzRnSUNBZ0lDQW9jbVZ6ZFd4MElHRnpJR0Z1ZVNsYlEyOTFZMmhFUWt0bGVYTXVWRUZDVEVWZElDWW1YRzRnSUNBZ0lDQW9jbVZ6ZFd4MElHRnpJR0Z1ZVNsYlEyOTFZMmhFUWt0bGVYTXVWRUZDVEVWZElEMDlQU0JOYjJSbGJDNTBZV0pzWlU1aGJXVW9kR2hwY3k1amJHRnpjeWxjYmlBZ0lDQXBJSHRjYmlBZ0lDQWdJR2g1WkhKaGRHVmtJRDBnYm1WM0lIUm9hWE11WTJ4aGMzTW9jbVZ6ZFd4MEtTQmhjeUJOTzF4dUlDQWdJSDBnWld4elpTQnBaaUFvUm1GaWNtbGpRMnhwWlc1MFVHRm5hVzVoZEc5eUxtbHpVMlZ5YVdGc2FYcGxaRkJoWjJVb2NtVnpkV3gwS1NrZ2UxeHVJQ0FnSUNBZ2FIbGtjbUYwWldRZ1BTQlBZbXBsWTNRdVlYTnphV2R1S0hKbGMzVnNkQ3dnZTF4dUlDQWdJQ0FnSUNCa1lYUmhPaUJ5WlhOMWJIUXVaR0YwWVM1dFlYQW9LR1E2SUdGdWVTa2dQVDRnYm1WM0lIUm9hWE11WTJ4aGMzTW9aQ2tnWVhNZ1RTa3NYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2FIbGtjbUYwWldRZ1BTQnlaWE4xYkhRN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVlYQndiSGxCWm5SbGNsSmxZV1FvYUhsa2NtRjBaV1FzSUdOMGVDazdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJR0Z6ZVc1aklHRndjR3g1UVdaMFpYSlNaV0ZrS0haaGJIVmxPaUJoYm5rc0lHTjBlRG9nUTI5dWRHVjRkRTltUEVFK0tUb2dVSEp2YldselpUeGhibmsrSUh0Y2JpQWdJQ0JwWmlBb0lXTjBlQzVuWlhSUGNsVnVaR1ZtYVc1bFpDaGNJbUZtZEdWeVVYVmxjbmxJWVc1a2JHVnljMXdpS1NrZ2NtVjBkWEp1SUhaaGJIVmxPMXh1SUNBZ0lHbG1JQ2gyWVd4MVpTQnBibk4wWVc1alpXOW1JRTF2WkdWc0tTQjdYRzRnSUNBZ0lDQmhkMkZwZENCbGJtWnZjbU5sUkVKRVpXTnZjbUYwYjNKelBFMHNJRkpsY0c5emFYUnZjbms4VFN3Z1FUNHNJR0Z1ZVQ0b1hHNGdJQ0FnSUNBZ0lIUm9hWE1zWEc0Z0lDQWdJQ0FnSUdOMGVDeGNiaUFnSUNBZ0lDQWdkbUZzZFdVZ1lYTWdUU3hjYmlBZ0lDQWdJQ0FnVDNCbGNtRjBhVzl1UzJWNWN5NVNSVUZFTEZ4dUlDQWdJQ0FnSUNCUGNHVnlZWFJwYjI1TFpYbHpMa0ZHVkVWU1hHNGdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUhaaGJIVmxPMXh1SUNBZ0lIMWNiaUFnSUNCcFppQW9RWEp5WVhrdWFYTkJjbkpoZVNoMllXeDFaU2twSUh0Y2JpQWdJQ0FnSUdGM1lXbDBJRkJ5YjIxcGMyVXVZV3hzS0haaGJIVmxMbTFoY0Nnb1pXNTBjbmtwSUQwK0lIUm9hWE11WVhCd2JIbEJablJsY2xKbFlXUW9aVzUwY25rc0lHTjBlQ2twS1R0Y2JpQWdJQ0FnSUhKbGRIVnliaUIyWVd4MVpUdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tFWmhZbkpwWTBOc2FXVnVkRkJoWjJsdVlYUnZjaTVwYzFObGNtbGhiR2w2WldSUVlXZGxLSFpoYkhWbEtTa2dlMXh1SUNBZ0lDQWdZWGRoYVhRZ2RHaHBjeTVoY0hCc2VVRm1kR1Z5VW1WaFpDaDJZV3gxWlM1a1lYUmhMQ0JqZEhncE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUhaaGJIVmxPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnZG1Gc2RXVTdYRzRnSUgxY2JseHVJQ0J2ZG1WeWNtbGtaU0JoYzNsdVl5QmpiM1Z1ZEU5bUtGeHVJQ0FnSUd0bGVUODZJR3RsZVc5bUlFMHNYRzRnSUNBZ0xpNHVZWEpuY3pvZ1RXRjVZbVZEYjI1MFpYaDBkV0ZzUVhKblBFTnZiblJsZUhSUFpqeEJQajVjYmlBZ0tUb2dVSEp2YldselpUeHVkVzFpWlhJK0lIdGNiaUFnSUNCamIyNXpkQ0I3SUd4dlp5d2dZM1I0UVhKbmN5QjlJRDBnS0Z4dUlDQWdJQ0FnWVhkaGFYUWdkR2hwY3k1c2IyZERkSGdvWVhKbmN5d2dVSEpsY0dGeVpXUlRkR0YwWlcxbGJuUkxaWGx6TGtOUFZVNVVYMDlHTENCMGNuVmxLVnh1SUNBZ0lDa3VabTl5S0hSb2FYTXVZMjkxYm5SUFppazdYRzRnSUNBZ2JHOW5MblpsY21KdmMyVW9YRzRnSUNBZ0lDQmdZMjkxYm5ScGJtY2dKSHROYjJSbGJDNTBZV0pzWlU1aGJXVW9kR2hwY3k1amJHRnpjeWw5Skh0clpYa2dQeUJnSUdKNUlDUjdhMlY1SUdGeklITjBjbWx1WjMxZ0lEb2dYQ0pjSW4xZ1hHNGdJQ0FnS1R0Y2JpQWdJQ0JqYjI1emRDQnpkRzEwUVhKbmN5QTlJR3RsZVNBL0lGdHJaWGtzSUM0dUxtTjBlRUZ5WjNOZElEb2dZM1I0UVhKbmN6dGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NXpkR0YwWlcxbGJuUW9VSEpsY0dGeVpXUlRkR0YwWlcxbGJuUkxaWGx6TGtOUFZVNVVYMDlHTENBdUxpNXpkRzEwUVhKbmN5azdYRzRnSUgxY2JseHVJQ0J2ZG1WeWNtbGtaU0JoYzNsdVl5QnRZWGhQWmp4TElHVjRkR1Z1WkhNZ2EyVjViMllnVFQ0b1hHNGdJQ0FnYTJWNU9pQkxMRnh1SUNBZ0lDNHVMbUZ5WjNNNklFMWhlV0psUTI5dWRHVjRkSFZoYkVGeVp6eERiMjUwWlhoMFQyWThRVDQrWEc0Z0lDazZJRkJ5YjIxcGMyVThUVnRMWFQ0Z2UxeHVJQ0FnSUdOdmJuTjBJSHNnYkc5bkxDQmpkSGhCY21keklIMGdQU0FvWEc0Z0lDQWdJQ0JoZDJGcGRDQjBhR2x6TG14dlowTjBlQ2hoY21kekxDQlFjbVZ3WVhKbFpGTjBZWFJsYldWdWRFdGxlWE11VFVGWVgwOUdMQ0IwY25WbEtWeHVJQ0FnSUNrdVptOXlLSFJvYVhNdWJXRjRUMllwTzF4dUlDQWdJR3h2Wnk1MlpYSmliM05sS0Z4dUlDQWdJQ0FnWUdacGJtUnBibWNnYldGNElHOW1JQ1I3YTJWNUlHRnpJSE4wY21sdVozMGdhVzRnSkh0TmIyUmxiQzUwWVdKc1pVNWhiV1VvZEdocGN5NWpiR0Z6Y3lsOVlGeHVJQ0FnSUNrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWMzUmhkR1Z0Wlc1MEtGQnlaWEJoY21Wa1UzUmhkR1Z0Wlc1MFMyVjVjeTVOUVZoZlQwWXNJR3RsZVN3Z0xpNHVZM1I0UVhKbmN5azdYRzRnSUgxY2JseHVJQ0J2ZG1WeWNtbGtaU0JoYzNsdVl5QnRhVzVQWmp4TElHVjRkR1Z1WkhNZ2EyVjViMllnVFQ0b1hHNGdJQ0FnYTJWNU9pQkxMRnh1SUNBZ0lDNHVMbUZ5WjNNNklFMWhlV0psUTI5dWRHVjRkSFZoYkVGeVp6eERiMjUwWlhoMFQyWThRVDQrWEc0Z0lDazZJRkJ5YjIxcGMyVThUVnRMWFQ0Z2UxeHVJQ0FnSUdOdmJuTjBJSHNnYkc5bkxDQmpkSGhCY21keklIMGdQU0FvWEc0Z0lDQWdJQ0JoZDJGcGRDQjBhR2x6TG14dlowTjBlQ2hoY21kekxDQlFjbVZ3WVhKbFpGTjBZWFJsYldWdWRFdGxlWE11VFVsT1gwOUdMQ0IwY25WbEtWeHVJQ0FnSUNrdVptOXlLSFJvYVhNdWJXbHVUMllwTzF4dUlDQWdJR3h2Wnk1MlpYSmliM05sS0Z4dUlDQWdJQ0FnWUdacGJtUnBibWNnYldsdUlHOW1JQ1I3YTJWNUlHRnpJSE4wY21sdVozMGdhVzRnSkh0TmIyUmxiQzUwWVdKc1pVNWhiV1VvZEdocGN5NWpiR0Z6Y3lsOVlGeHVJQ0FnSUNrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWMzUmhkR1Z0Wlc1MEtGQnlaWEJoY21Wa1UzUmhkR1Z0Wlc1MFMyVjVjeTVOU1U1ZlQwWXNJR3RsZVN3Z0xpNHVZM1I0UVhKbmN5azdYRzRnSUgxY2JseHVJQ0J2ZG1WeWNtbGtaU0JoYzNsdVl5QmhkbWRQWmp4TElHVjRkR1Z1WkhNZ2EyVjViMllnVFQ0b1hHNGdJQ0FnYTJWNU9pQkxMRnh1SUNBZ0lDNHVMbUZ5WjNNNklFMWhlV0psUTI5dWRHVjRkSFZoYkVGeVp6eERiMjUwWlhoMFQyWThRVDQrWEc0Z0lDazZJRkJ5YjIxcGMyVThiblZ0WW1WeVBpQjdYRzRnSUNBZ1kyOXVjM1FnZXlCc2IyY3NJR04wZUVGeVozTWdmU0E5SUNoY2JpQWdJQ0FnSUdGM1lXbDBJSFJvYVhNdWJHOW5RM1I0S0dGeVozTXNJRkJ5WlhCaGNtVmtVM1JoZEdWdFpXNTBTMlY1Y3k1QlZrZGZUMFlzSUhSeWRXVXBYRzRnSUNBZ0tTNW1iM0lvZEdocGN5NWhkbWRQWmlrN1hHNGdJQ0FnYkc5bkxuWmxjbUp2YzJVb1hHNGdJQ0FnSUNCZ1kyRnNZM1ZzWVhScGJtY2dZWFpuSUc5bUlDUjdhMlY1SUdGeklITjBjbWx1WjMwZ2FXNGdKSHROYjJSbGJDNTBZV0pzWlU1aGJXVW9kR2hwY3k1amJHRnpjeWw5WUZ4dUlDQWdJQ2s3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11YzNSaGRHVnRaVzUwS0ZCeVpYQmhjbVZrVTNSaGRHVnRaVzUwUzJWNWN5NUJWa2RmVDBZc0lHdGxlU3dnTGk0dVkzUjRRWEpuY3lrN1hHNGdJSDFjYmx4dUlDQnZkbVZ5Y21sa1pTQmhjM2x1WXlCemRXMVBaanhMSUdWNGRHVnVaSE1nYTJWNWIyWWdUVDRvWEc0Z0lDQWdhMlY1T2lCTExGeHVJQ0FnSUM0dUxtRnlaM002SUUxaGVXSmxRMjl1ZEdWNGRIVmhiRUZ5Wnp4RGIyNTBaWGgwVDJZOFFUNCtYRzRnSUNrNklGQnliMjFwYzJVOGJuVnRZbVZ5UGlCN1hHNGdJQ0FnWTI5dWMzUWdleUJzYjJjc0lHTjBlRUZ5WjNNZ2ZTQTlJQ2hjYmlBZ0lDQWdJR0YzWVdsMElIUm9hWE11Ykc5blEzUjRLR0Z5WjNNc0lGQnlaWEJoY21Wa1UzUmhkR1Z0Wlc1MFMyVjVjeTVUVlUxZlQwWXNJSFJ5ZFdVcFhHNGdJQ0FnS1M1bWIzSW9kR2hwY3k1emRXMVBaaWs3WEc0Z0lDQWdiRzluTG5abGNtSnZjMlVvWEc0Z0lDQWdJQ0JnWTJGc1kzVnNZWFJwYm1jZ2MzVnRJRzltSUNSN2EyVjVJR0Z6SUhOMGNtbHVaMzBnYVc0Z0pIdE5iMlJsYkM1MFlXSnNaVTVoYldVb2RHaHBjeTVqYkdGemN5bDlZRnh1SUNBZ0lDazdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjM1JoZEdWdFpXNTBLRkJ5WlhCaGNtVmtVM1JoZEdWdFpXNTBTMlY1Y3k1VFZVMWZUMFlzSUd0bGVTd2dMaTR1WTNSNFFYSm5jeWs3WEc0Z0lIMWNibHh1SUNCdmRtVnljbWxrWlNCaGMzbHVZeUJrYVhOMGFXNWpkRTltUEVzZ1pYaDBaVzVrY3lCclpYbHZaaUJOUGloY2JpQWdJQ0JyWlhrNklFc3NYRzRnSUNBZ0xpNHVZWEpuY3pvZ1RXRjVZbVZEYjI1MFpYaDBkV0ZzUVhKblBFTnZiblJsZUhSUFpqeEJQajVjYmlBZ0tUb2dVSEp2YldselpUeE5XMHRkVzEwK0lIdGNiaUFnSUNCamIyNXpkQ0I3SUd4dlp5d2dZM1I0UVhKbmN5QjlJRDBnS0Z4dUlDQWdJQ0FnWVhkaGFYUWdkR2hwY3k1c2IyZERkSGdvWVhKbmN5d2dVSEpsY0dGeVpXUlRkR0YwWlcxbGJuUkxaWGx6TGtSSlUxUkpUa05VWDA5R0xDQjBjblZsS1Z4dUlDQWdJQ2t1Wm05eUtIUm9hWE11WkdsemRHbHVZM1JQWmlrN1hHNGdJQ0FnYkc5bkxuWmxjbUp2YzJVb1hHNGdJQ0FnSUNCZ1ptbHVaR2x1WnlCa2FYTjBhVzVqZENCMllXeDFaWE1nYjJZZ0pIdHJaWGtnWVhNZ2MzUnlhVzVuZlNCcGJpQWtlMDF2WkdWc0xuUmhZbXhsVG1GdFpTaDBhR2x6TG1Oc1lYTnpLWDFnWEc0Z0lDQWdLVHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTV6ZEdGMFpXMWxiblFvVUhKbGNHRnlaV1JUZEdGMFpXMWxiblJMWlhsekxrUkpVMVJKVGtOVVgwOUdMQ0JyWlhrc0lDNHVMbU4wZUVGeVozTXBPMXh1SUNCOVhHNWNiaUFnYjNabGNuSnBaR1VnWVhONWJtTWdaM0p2ZFhCUFpqeExJR1Y0ZEdWdVpITWdhMlY1YjJZZ1RUNG9YRzRnSUNBZ2EyVjVPaUJMTEZ4dUlDQWdJQzR1TG1GeVozTTZJRTFoZVdKbFEyOXVkR1Y0ZEhWaGJFRnlaenhEYjI1MFpYaDBUMlk4UVQ0K1hHNGdJQ2s2SUZCeWIyMXBjMlU4VW1WamIzSmtQSE4wY21sdVp5d2dUVnRkUGo0Z2UxeHVJQ0FnSUdOdmJuTjBJSHNnYkc5bkxDQmpkSGhCY21keklIMGdQU0FvWEc0Z0lDQWdJQ0JoZDJGcGRDQjBhR2x6TG14dlowTjBlQ2hoY21kekxDQlFjbVZ3WVhKbFpGTjBZWFJsYldWdWRFdGxlWE11UjFKUFZWQmZUMFlzSUhSeWRXVXBYRzRnSUNBZ0tTNW1iM0lvZEdocGN5NW5jbTkxY0U5bUtUdGNiaUFnSUNCc2IyY3VkbVZ5WW05elpTaGdaM0p2ZFhCcGJtY2dKSHROYjJSbGJDNTBZV0pzWlU1aGJXVW9kR2hwY3k1amJHRnpjeWw5SUdKNUlDUjdhMlY1SUdGeklITjBjbWx1WjMxZ0tUdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NXpkR0YwWlcxbGJuUW9VSEpsY0dGeVpXUlRkR0YwWlcxbGJuUkxaWGx6TGtkU1QxVlFYMDlHTENCclpYa3NJQzR1TG1OMGVFRnlaM01wTzF4dUlDQjlYRzVjYmlBZ1lYTjVibU1nYUdWaGJIUm9ZMmhsWTJzb0xpNHVZWEpuY3pvZ1RXRjVZbVZEYjI1MFpYaDBkV0ZzUVhKblBFTnZiblJsZUhSUFpqeEJQajRwSUh0Y2JpQWdJQ0JqYjI1emRDQjdJR04wZUVGeVozTWdmU0E5SUhSb2FYTXViRzluUTNSNEtHRnlaM01zSUhSb2FYTXVhR1ZoYkhSb1kyaGxZMnNwTzF4dVhHNGdJQ0FnWTI5dWMzUWdjbVZ6ZFd4MElEMGdZWGRoYVhRZ2RHaHBjeTVoWkdGd2RHVnlMbWhsWVd4MGFHTm9aV05yS0hSb2FYTXVZMnhoYzNNc0lDNHVMbU4wZUVGeVozTXBPMXh1WEc0Z0lDQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JpQWdmVnh1WEc0Z0lHOTJaWEp5YVdSbElHRnplVzVqSUdOeVpXRjBaU2hjYmlBZ0lDQnRiMlJsYkRvZ1RTeGNiaUFnSUNBdUxpNWhjbWR6T2lCTllYbGlaVU52Ym5SbGVIUjFZV3hCY21jOFEyOXVkR1Y0ZEU5bVBFRStQbHh1SUNBcE9pQlFjbTl0YVhObFBFMCtJSHRjYmlBZ0lDQmpiMjV6ZENCN0lHTjBlQ3dnYkc5bkxDQmpkSGhCY21keklIMGdQU0IwYUdsekxteHZaME4wZUNoaGNtZHpMQ0IwYUdsekxtTnlaV0YwWlNrN1hHNGdJQ0FnYkc5bkxtUmxZblZuS0Z4dUlDQWdJQ0FnWUVOeVpXRjBhVzVuSUc1bGR5QWtlM1JvYVhNdVkyeGhjM011Ym1GdFpYMGdhVzRnZEdGaWJHVWdKSHROYjJSbGJDNTBZV0pzWlU1aGJXVW9kR2hwY3k1amJHRnpjeWw5WUZ4dUlDQWdJQ2s3WEc0Z0lDQWdkR2hwY3k1bGJuTjFjbVZNWldkaFkzbE5hWEp5YjNKR2JHRm5LR04wZUN3Z2JXOWtaV3dwTzF4dUlDQWdJR052Ym5OMElIQnlaWEJoY21Wa0lEMGdkR2hwY3k1aFpHRndkR1Z5TG5CeVpYQmhjbVVvYlc5a1pXd3NJR04wZUNrN1hHNGdJQ0FnWTI5dWMzUWdleUJ5WldOdmNtUXNJR2xrTENCMGNtRnVjMmxsYm5RZ2ZTQTlJSEJ5WlhCaGNtVmtPMXh1SUNBZ0lHTnZibk4wSUhKbGMzVnNkQ0E5SUdGM1lXbDBJSFJvYVhNdVlXUmhjSFJsY2k1amNtVmhkR1VvWEc0Z0lDQWdJQ0IwYUdsekxtTnNZWE56TEZ4dUlDQWdJQ0FnYVdRc1hHNGdJQ0FnSUNCeVpXTnZjbVFzWEc0Z0lDQWdJQ0IwY21GdWMybGxiblFzWEc0Z0lDQWdJQ0F1TGk1amRIaEJjbWR6WEc0Z0lDQWdLVHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVoWkdGd2RHVnlMbkpsZG1WeWREeE5QaWh5WlhOMWJIUXNJSFJvYVhNdVkyeGhjM01zSUdsa0xDQjBjbUZ1YzJsbGJuUXNJR04wZUNrN1hHNGdJSDFjYmx4dUlDQnZkbVZ5Y21sa1pTQmhjM2x1WXlCMWNHUmhkR1VvWEc0Z0lDQWdiVzlrWld3NklFMHNYRzRnSUNBZ0xpNHVZWEpuY3pvZ1RXRjVZbVZEYjI1MFpYaDBkV0ZzUVhKblBFTnZiblJsZUhSUFpqeEJQajVjYmlBZ0tUb2dVSEp2YldselpUeE5QaUI3WEc0Z0lDQWdZMjl1YzNRZ2V5QmpkSGhCY21kekxDQnNiMmNzSUdOMGVDQjlJRDBnZEdocGN5NXNiMmREZEhnb1lYSm5jeXdnZEdocGN5NTFjR1JoZEdVcE8xeHVJQ0FnSUhSb2FYTXVaVzV6ZFhKbFRHVm5ZV041VFdseWNtOXlSbXhoWnloamRIZ3NJRzF2WkdWc0tUdGNiaUFnSUNCamIyNXpkQ0J3Y21Wd1lYSmxaQ0E5SUhSb2FYTXVZV1JoY0hSbGNpNXdjbVZ3WVhKbEtHMXZaR1ZzTENCamRIZ3BPMXh1SUNBZ0lHTnZibk4wSUhzZ2FXUXNJSFJ5WVc1emFXVnVkQ0I5SUQwZ2NISmxjR0Z5WldRN1hHNGdJQ0FnYkdWMElISmxZMjl5WkNBOUlIQnlaWEJoY21Wa0xuSmxZMjl5WkR0Y2JpQWdJQ0JzYjJjdVpHVmlkV2NvWEc0Z0lDQWdJQ0JnZFhCa1lYUnBibWNnSkh0MGFHbHpMbU5zWVhOekxtNWhiV1Y5SUdsdUlIUmhZbXhsSUNSN1RXOWtaV3d1ZEdGaWJHVk9ZVzFsS0hSb2FYTXVZMnhoYzNNcGZTQjNhWFJvSUdsa0lDUjdhV1I5WUZ4dUlDQWdJQ2s3WEc0Z0lDQWdjbVZqYjNKa0lEMGdZWGRoYVhRZ2RHaHBjeTVoWkdGd2RHVnlMblZ3WkdGMFpTaGNiaUFnSUNBZ0lIUm9hWE11WTJ4aGMzTXNYRzRnSUNBZ0lDQnBaQ3hjYmlBZ0lDQWdJSEpsWTI5eVpDeGNiaUFnSUNBZ0lIUnlZVzV6YVdWdWRDeGNiaUFnSUNBZ0lDNHVMbU4wZUVGeVozTmNiaUFnSUNBcE8xeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtRmtZWEIwWlhJdWNtVjJaWEowUEUwK0tISmxZMjl5WkN3Z2RHaHBjeTVqYkdGemN5d2dhV1FzSUhSeVlXNXphV1Z1ZEN3Z1kzUjRLVHRjYmlBZ2ZWeHVYRzRnSUhCeWIzUmxZM1JsWkNCdmRtVnljbWxrWlNCaGMzbHVZeUJqY21WaGRHVkJiR3hRY21WbWFYZ29YRzRnSUNBZ2JXOWtaV3h6T2lCTlcxMHNYRzRnSUNBZ0xpNHVZWEpuY3pvZ1RXRjVZbVZEYjI1MFpYaDBkV0ZzUVhKblBFTnZiblJsZUhSUFpqeEJQajVjYmlBZ0tUb2dVSEp2YldselpUeGJUVnRkTENBdUxpNWhibmxiWFN3Z1EyOXVkR1Y0ZEU5bVBFRStYVDRnZTF4dUlDQWdJR052Ym5OMElIc2dZM1I0TENCamRIaEJjbWR6SUgwZ1BTQW9YRzRnSUNBZ0lDQmhkMkZwZENCMGFHbHpMbXh2WjBOMGVDaGhjbWR6TENCUGNHVnlZWFJwYjI1TFpYbHpMa05TUlVGVVJTd2dkSEoxWlNsY2JpQWdJQ0FwTG1admNpaDBhR2x6TG1OeVpXRjBaVUZzYkZCeVpXWnBlQ2s3WEc0Z0lDQWdZMjl1YzNRZ2FXZHViM0psU0dGdVpHeGxjbk1nUFNCamRIZ3VaMlYwS0Z3aWFXZHViM0psU0dGdVpHeGxjbk5jSWlrN1hHNGdJQ0FnWTI5dWMzUWdhV2R1YjNKbFZtRnNhV1JoZEdVZ1BTQmpkSGd1WjJWMEtGd2lhV2R1YjNKbFZtRnNhV1JoZEdsdmJsd2lLVHRjYmlBZ0lDQnBaaUFvSVcxdlpHVnNjeTVzWlc1bmRHZ3BJSEpsZEhWeWJpQmJiVzlrWld4ekxDQXVMaTVqZEhoQmNtZHpYU0JoY3lCaGJuazdYRzVjYmlBZ0lDQnRiMlJsYkhNZ1BTQmhkMkZwZENCUWNtOXRhWE5sTG1Gc2JDaGNiaUFnSUNBZ0lHMXZaR1ZzY3k1dFlYQW9ZWE41Ym1NZ0tHMHBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2JTQTlJRzVsZHlCMGFHbHpMbU5zWVhOektHMHBPMXh1SUNBZ0lDQWdJQ0JwWmlBb0lXbG5ibTl5WlVoaGJtUnNaWEp6S1Z4dUlDQWdJQ0FnSUNBZ0lHRjNZV2wwSUdWdVptOXlZMlZFUWtSbFkyOXlZWFJ2Y25NOFRTd2dVbVZ3YjNOcGRHOXllVHhOTENCQlBpd2dZVzU1UGloY2JpQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqZEhnc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J0TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdUM0JsY21GMGFXOXVTMlY1Y3k1RFVrVkJWRVVzWEc0Z0lDQWdJQ0FnSUNBZ0lDQlBjR1Z5WVhScGIyNUxaWGx6TGs5T1hHNGdJQ0FnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRzA3WEc0Z0lDQWdJQ0I5S1Z4dUlDQWdJQ2s3WEc1Y2JpQWdJQ0JwWmlBb0lXbG5ibTl5WlZaaGJHbGtZWFJsS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JwWjI1dmNtVmtVSEp2Y0hNZ1BTQmpkSGd1WjJWMEtGd2lhV2R1YjNKbFpGWmhiR2xrWVhScGIyNVFjbTl3WlhKMGFXVnpYQ0lwSUh4OElGdGRPMXh1WEc0Z0lDQWdJQ0JqYjI1emRDQmxjbkp2Y25NZ1BTQmhkMkZwZENCUWNtOXRhWE5sTG1Gc2JDaGNiaUFnSUNBZ0lDQWdiVzlrWld4ekxtMWhjQ2dvYlNrZ1BUNGdVSEp2YldselpTNXlaWE52YkhabEtHMHVhR0Z6UlhKeWIzSnpLQzR1TG1sbmJtOXlaV1JRY205d2N5a3BLVnh1SUNBZ0lDQWdLVHRjYmx4dUlDQWdJQ0FnWTI5dWMzUWdaWEp5YjNKTlpYTnpZV2RsY3lBOUlISmxaSFZqWlVWeWNtOXljMVJ2VUhKcGJuUW9aWEp5YjNKektUdGNibHh1SUNBZ0lDQWdhV1lnS0dWeWNtOXlUV1Z6YzJGblpYTXBJSFJvY205M0lHNWxkeUJXWVd4cFpHRjBhVzl1UlhKeWIzSW9aWEp5YjNKTlpYTnpZV2RsY3lrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQmJiVzlrWld4ekxDQXVMaTVqZEhoQmNtZHpYU0JoY3lCaGJuazdYRzRnSUgxY2JseHVJQ0J2ZG1WeWNtbGtaU0JoYzNsdVl5QmpjbVZoZEdWQmJHd29YRzRnSUNBZ2JXOWtaV3h6T2lCTlcxMHNYRzRnSUNBZ0xpNHVZWEpuY3pvZ1RXRjVZbVZEYjI1MFpYaDBkV0ZzUVhKblBFTnZiblJsZUhSUFpqeEJQajVjYmlBZ0tUb2dVSEp2YldselpUeE5XMTArSUh0Y2JpQWdJQ0JwWmlBb0lXMXZaR1ZzY3k1c1pXNW5kR2dwSUhKbGRIVnliaUJ0YjJSbGJITTdYRzRnSUNBZ1kyOXVjM1FnZXlCamRIZ3NJR3h2Wnl3Z1kzUjRRWEpuY3lCOUlEMGdkR2hwY3k1c2IyZERkSGdvWVhKbmN5d2dkR2hwY3k1amNtVmhkR1ZCYkd3cE8xeHVJQ0FnSUd4dlp5NWtaV0oxWnloY2JpQWdJQ0FnSUdCRGNtVmhkR2x1WnlBa2UyMXZaR1ZzY3k1c1pXNW5kR2g5SUc1bGR5QWtlM1JvYVhNdVkyeGhjM011Ym1GdFpYMGdhVzRnZEdGaWJHVWdKSHROYjJSbGJDNTBZV0pzWlU1aGJXVW9kR2hwY3k1amJHRnpjeWw5WUZ4dUlDQWdJQ2s3WEc1Y2JpQWdJQ0J0YjJSbGJITXVabTl5UldGamFDZ29iVzlrWld3cElEMCtJSFJvYVhNdVpXNXpkWEpsVEdWbllXTjVUV2x5Y205eVJteGhaeWhqZEhnc0lHMXZaR1ZzS1NrN1hHNGdJQ0FnWTI5dWMzUWdjSEpsY0dGeVpXUWdQU0J0YjJSbGJITXViV0Z3S0NodEtTQTlQaUIwYUdsekxtRmtZWEIwWlhJdWNISmxjR0Z5WlNodExDQmpkSGdwS1R0Y2JpQWdJQ0JqYjI1emRDQnBaSE1nUFNCd2NtVndZWEpsWkM1dFlYQW9LSEFwSUQwK0lIQXVhV1FwTzF4dUlDQWdJR052Ym5OMElIQmhlV3h2WVdSeklEMGdjSEpsY0dGeVpXUXViV0Z3S0Nod0tTQTlQaUJ3TG5KbFkyOXlaQ2s3WEc0Z0lDQWdZMjl1YzNRZ2RISmhibk5wWlc1MGN5QTlJSEJ5WlhCaGNtVmtMbTFoY0Nnb2NDa2dQVDRnY0M1MGNtRnVjMmxsYm5RcE8xeHVJQ0FnSUdOdmJuTjBJR055WldGMFpXUWdQU0JoZDJGcGRDQjBhR2x6TG1Ga1lYQjBaWEl1WTNKbFlYUmxRV3hzS0Z4dUlDQWdJQ0FnZEdocGN5NWpiR0Z6Y3l4Y2JpQWdJQ0FnSUdsa2N5QmhjeUJRY21sdFlYSjVTMlY1Vkhsd1pWdGRMRnh1SUNBZ0lDQWdjR0Y1Ykc5aFpITXNYRzRnSUNBZ0lDQjBjbUZ1YzJsbGJuUnpMRnh1SUNBZ0lDQWdMaTR1WTNSNFFYSm5jMXh1SUNBZ0lDazdYRzRnSUNBZ2NtVjBkWEp1SUZCeWIyMXBjMlV1WVd4c0tGeHVJQ0FnSUNBZ1kzSmxZWFJsWkM1dFlYQW9ZWE41Ym1NZ0tISXNJR2twSUQwK0lIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2FXUWdQU0JwWkhOYmFWMDdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TG1Ga1lYQjBaWEl1Y21WMlpYSjBQRTArS0hJc0lIUm9hWE11WTJ4aGMzTXNJR2xrTENCMGNtRnVjMmxsYm5SelcybGRMQ0JqZEhncE8xeHVJQ0FnSUNBZ2ZTbGNiaUFnSUNBcE8xeHVJQ0I5WEc1Y2JpQWdiM1psY25KcFpHVWdZWE41Ym1NZ2NtVmhaRUZzYkNoY2JpQWdJQ0JyWlhsek9pQlFjbWx0WVhKNVMyVjVWSGx3WlZ0ZExGeHVJQ0FnSUM0dUxtRnlaM002SUUxaGVXSmxRMjl1ZEdWNGRIVmhiRUZ5Wnp4RGIyNTBaWGgwVDJZOFFUNCtYRzRnSUNrZ2UxeHVJQ0FnSUdOdmJuTjBJSHNnWTNSNExDQnNiMmNzSUdOMGVFRnlaM01nZlNBOUlIUm9hWE11Ykc5blEzUjRLR0Z5WjNNc0lIUm9hWE11Y21WaFpFRnNiQ2s3WEc0Z0lDQWdiRzluTG1SbFluVm5LRnh1SUNBZ0lDQWdZSEpsWVdScGJtY2dKSHRyWlhsekxteGxibWQwYUgwZ0pIdDBhR2x6TG1Oc1lYTnpMbTVoYldWOUlHbHVJSFJoWW14bElDUjdUVzlrWld3dWRHRmliR1ZPWVcxbEtIUm9hWE11WTJ4aGMzTXBmV0JjYmlBZ0lDQXBPMXh1SUNBZ0lHTnZibk4wSUhKbFkyOXlaSE1nUFNCaGQyRnBkQ0IwYUdsekxtRmtZWEIwWlhJdWNtVmhaRUZzYkNoMGFHbHpMbU5zWVhOekxDQnJaWGx6TENBdUxpNWpkSGhCY21kektUdGNiaUFnSUNCeVpYUjFjbTRnY21WamIzSmtjeTV0WVhBb0tISXNJR2twSUQwK1hHNGdJQ0FnSUNCMGFHbHpMbUZrWVhCMFpYSXVjbVYyWlhKMEtISXNJSFJvYVhNdVkyeGhjM01zSUd0bGVYTmJhVjBzSUh0OUxDQmpkSGdwWEc0Z0lDQWdLVHRjYmlBZ2ZWeHVYRzRnSUc5MlpYSnlhV1JsSUdGemVXNWpJSFZ3WkdGMFpVRnNiQ2hjYmlBZ0lDQnRiMlJsYkhNNklFMWJYU3hjYmlBZ0lDQXVMaTVoY21kek9pQk5ZWGxpWlVOdmJuUmxlSFIxWVd4QmNtYzhRMjl1ZEdWNGRFOW1QRUUrUGx4dUlDQXBPaUJRY205dGFYTmxQRTFiWFQ0Z2UxeHVJQ0FnSUdOdmJuTjBJSHNnWTNSNExDQnNiMmNzSUdOMGVFRnlaM01nZlNBOUlIUm9hWE11Ykc5blEzUjRLR0Z5WjNNc0lIUm9hWE11ZFhCa1lYUmxRV3hzS1R0Y2JpQWdJQ0JzYjJjdVpHVmlkV2NvWEc0Z0lDQWdJQ0JnVlhCa1lYUnBibWNnSkh0dGIyUmxiSE11YkdWdVozUm9mU0J1WlhjZ0pIdDBhR2x6TG1Oc1lYTnpMbTVoYldWOUlHbHVJSFJoWW14bElDUjdUVzlrWld3dWRHRmliR1ZPWVcxbEtIUm9hWE11WTJ4aGMzTXBmV0JjYmlBZ0lDQXBPMXh1WEc0Z0lDQWdiVzlrWld4ekxtWnZja1ZoWTJnb0tHMXZaR1ZzS1NBOVBpQjBhR2x6TG1WdWMzVnlaVXhsWjJGamVVMXBjbkp2Y2tac1lXY29ZM1I0TENCdGIyUmxiQ2twTzF4dUlDQWdJR052Ym5OMElIQnlaWEJoY21Wa0lEMGdiVzlrWld4ekxtMWhjQ2dvYlNrZ1BUNGdkR2hwY3k1aFpHRndkR1Z5TG5CeVpYQmhjbVVvYlN3Z1kzUjRLU2s3WEc0Z0lDQWdZMjl1YzNRZ2FXUnpJRDBnY0hKbGNHRnlaV1F1YldGd0tDaHdLU0E5UGlCd0xtbGtLVHRjYmlBZ0lDQmpiMjV6ZENCMWNHUmhkR1ZrSUQwZ1lYZGhhWFFnZEdocGN5NWhaR0Z3ZEdWeUxuVndaR0YwWlVGc2JDaGNiaUFnSUNBZ0lIUm9hWE11WTJ4aGMzTXNYRzRnSUNBZ0lDQnBaSE1nWVhNZ1VISnBiV0Z5ZVV0bGVWUjVjR1ZiWFN4Y2JpQWdJQ0FnSUhCeVpYQmhjbVZrTG0xaGNDZ29jaWtnUFQ0Z2NpNXlaV052Y21RcExGeHVJQ0FnSUNBZ2NISmxjR0Z5WldRdWJXRndLQ2h5S1NBOVBpQnlMblJ5WVc1emFXVnVkQ2tzWEc0Z0lDQWdJQ0F1TGk1amRIaEJjbWR6WEc0Z0lDQWdLVHRjYmlBZ0lDQnlaWFIxY200Z1VISnZiV2x6WlM1aGJHd29YRzRnSUNBZ0lDQjFjR1JoZEdWa0xtMWhjQ2hoYzNsdVl5QW9kU3dnYVNrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnBaQ0E5SUdsa2MxdHBYVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdVlXUmhjSFJsY2k1eVpYWmxjblE4VFQ0b1hHNGdJQ0FnSUNBZ0lDQWdkU3hjYmlBZ0lDQWdJQ0FnSUNCMGFHbHpMbU5zWVhOekxGeHVJQ0FnSUNBZ0lDQWdJR2xrTEZ4dUlDQWdJQ0FnSUNBZ0lIQnlaWEJoY21Wa1cybGRMblJ5WVc1emFXVnVkQ3hjYmlBZ0lDQWdJQ0FnSUNCamRIaGNiaUFnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJSDBwWEc0Z0lDQWdLVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnWlc1emRYSmxUR1ZuWVdONVRXbHljbTl5Um14aFp5aGpkSGc2SUVOdmJuUmxlSFJQWmp4QlBpd2diVzlrWld3NklFMHBPaUIyYjJsa0lIdGNiaUFnSUNCcFppQW9UVzlrWld3dWJXbHljbTl5WldSQmRDaHRiMlJsYkNrcElIdGNiaUFnSUNBZ0lHTjBlQzVoWTJOMWJYVnNZWFJsS0hzZ2JHVm5ZV041T2lCMGNuVmxJSDBwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVmVnh1SWwxOSJdfQ==
|