@decaf-ts/for-fabric 0.5.4 → 0.5.6
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 +3796 -2
- package/dist/for-fabric.js +3900 -2
- package/lib/bin/cli.cjs +1 -1
- package/lib/cli-module.cjs +1 -1
- package/lib/cli-utils.cjs +1 -1
- package/lib/client/FabricClientAdapter.cjs +5 -1
- package/lib/client/FabricClientAdapter.d.ts +1 -0
- package/lib/client/FabricClientDispatch.cjs +1 -1
- package/lib/client/FabricClientPaginator.cjs +1 -1
- package/lib/client/FabricClientRepository.cjs +1 -1
- package/lib/client/FabricClientStatement.cjs +1 -1
- package/lib/client/collections/generation.cjs +1 -1
- package/lib/client/collections/index.cjs +1 -1
- package/lib/client/constants.cjs +1 -1
- package/lib/client/crypto.cjs +1 -1
- package/lib/client/erc20/FabricERC20ClientRepository.cjs +1 -1
- package/lib/client/erc20/index.cjs +1 -1
- package/lib/client/fabric-fs.cjs +1 -1
- package/lib/client/fabric-hsm.cjs +1 -1
- package/lib/client/ids/id-extraction.cjs +1 -1
- package/lib/client/ids/index.cjs +1 -1
- package/lib/client/index.cjs +1 -1
- package/lib/client/indexes/generation.cjs +1 -1
- package/lib/client/indexes/index.cjs +1 -1
- package/lib/client/logging.cjs +1 -1
- package/lib/client/services/FabricEnrollmentService.cjs +1 -1
- package/lib/client/services/FabricIdentityService.cjs +1 -1
- package/lib/client/services/RegistrationRequestBuilder.cjs +1 -1
- package/lib/client/services/constants.cjs +1 -1
- package/lib/client/services/index.cjs +1 -1
- package/lib/client/types.cjs +1 -1
- package/lib/client/utils.cjs +1 -1
- package/lib/contract/Address.cjs +1 -1
- package/lib/contract/AddressContract.cjs +1 -1
- package/lib/contract/AuditContract.cjs +1 -1
- package/lib/contract/BatchContract.cjs +1 -1
- package/lib/contract/MarketContract.cjs +1 -1
- package/lib/contract/OtherAuditContract.cjs +1 -1
- package/lib/contract/OtherBatchContract.cjs +1 -1
- package/lib/contract/OtherMarketContract.cjs +1 -1
- package/lib/contract/OtherProductContract.cjs +1 -1
- package/lib/contract/OtherProductImageContract.cjs +1 -1
- package/lib/contract/OtherProductSharedContract.cjs +1 -1
- package/lib/contract/OtherProductStrengthContract.cjs +1 -1
- package/lib/contract/Product.cjs +1 -1
- package/lib/contract/ProductContract.cjs +1 -1
- package/lib/contract/ProductStrengthContract.cjs +1 -1
- package/lib/contract/SegregatedPrivateDocumentContract.cjs +1 -1
- package/lib/contract/SegregatedSharedDocumentContract.cjs +1 -1
- package/lib/contract/User.cjs +1 -1
- package/lib/contract/UserContract.cjs +1 -1
- package/lib/contract/index.cjs +3 -1
- package/lib/contract/logging-context.cjs +1 -1
- package/lib/contract/models/Audit.cjs +1 -1
- package/lib/contract/models/BaseIdentifiedModel.cjs +1 -1
- package/lib/contract/models/BaseModel.cjs +1 -1
- package/lib/contract/models/Batch.cjs +1 -1
- package/lib/contract/models/GtinOwner.cjs +1 -1
- package/lib/contract/models/History.cjs +1 -1
- package/lib/contract/models/Leaflet.cjs +1 -1
- package/lib/contract/models/LeafletFile.cjs +1 -1
- package/lib/contract/models/Market.cjs +1 -1
- package/lib/contract/models/OtherAudit.cjs +1 -1
- package/lib/contract/models/OtherBatchShared.cjs +1 -1
- package/lib/contract/models/OtherLeaflet.cjs +1 -1
- package/lib/contract/models/OtherLeafletFile.cjs +1 -1
- package/lib/contract/models/OtherMarket.cjs +1 -1
- package/lib/contract/models/OtherProduct.cjs +1 -1
- package/lib/contract/models/OtherProductImage.cjs +1 -1
- package/lib/contract/models/OtherProductShared.cjs +1 -1
- package/lib/contract/models/OtherProductStrength.cjs +1 -1
- package/lib/contract/models/Product.cjs +1 -1
- package/lib/contract/models/ProductStrength.cjs +1 -1
- package/lib/contract/models/SegregatedDocument.cjs +1 -1
- package/lib/contract/models/constants.cjs +1 -1
- package/lib/contract/models/decorators-private.cjs +1 -1
- package/lib/contract/models/decorators.cjs +1 -1
- package/lib/contract/models/gtin.cjs +1 -1
- package/lib/contract/models/history-dec.cjs +1 -1
- package/lib/contracts/ContractAdapter.cjs +1 -1
- package/lib/contracts/ContractContext.cjs +1 -1
- package/lib/contracts/FabricContractDispatch.cjs +1 -1
- package/lib/contracts/FabricContractPaginator.cjs +1 -1
- package/lib/contracts/FabricContractRepository.cjs +2 -4
- package/lib/contracts/FabricContractRepositoryObservableHandler.cjs +1 -1
- package/lib/contracts/FabricContractSequence.cjs +1 -1
- package/lib/contracts/FabricContractStatement.cjs +1 -1
- package/lib/contracts/MigrationContract.cjs +147 -0
- package/lib/contracts/MigrationContract.d.ts +22 -0
- package/lib/contracts/PrivateSequence.cjs +1 -1
- package/lib/contracts/auth/decorators.cjs +1 -1
- package/lib/contracts/auth/index.cjs +1 -1
- package/lib/contracts/crud/crud-contract.cjs +1 -1
- package/lib/contracts/crud/index.cjs +1 -1
- package/lib/contracts/crud/serialized-crud-contract.cjs +1 -1
- package/lib/contracts/erc20/erc20contract.cjs +1 -1
- package/lib/contracts/erc20/index.cjs +1 -1
- package/lib/contracts/erc20/models.cjs +1 -1
- package/lib/contracts/index.cjs +2 -1
- package/lib/contracts/index.d.ts +1 -0
- package/lib/contracts/logging.cjs +1 -1
- package/lib/contracts/overrides.cjs +1 -1
- package/lib/contracts/types.cjs +1 -1
- package/lib/contracts/uuid.cjs +1 -1
- package/lib/esm/bin/cli.js +1 -1
- package/lib/esm/cli-module.js +1 -1
- package/lib/esm/cli-utils.js +1 -1
- package/lib/esm/client/FabricClientAdapter.d.ts +1 -0
- package/lib/esm/client/FabricClientAdapter.js +5 -1
- package/lib/esm/client/FabricClientDispatch.js +1 -1
- 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/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 +3 -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 +1 -1
- 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 +1 -1
- 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/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 +2 -4
- 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.d.ts +22 -0
- package/lib/esm/contracts/MigrationContract.js +144 -0
- 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/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/index.d.ts +1 -0
- package/lib/esm/contracts/index.js +2 -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 +10 -3
- 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.d.ts +1 -0
- package/lib/esm/shared/types.js +1 -1
- package/lib/esm/version.d.ts +1 -1
- package/lib/esm/version.js +2 -2
- package/lib/index.cjs +1 -1
- package/lib/shared/ClientSerializer.cjs +1 -1
- package/lib/shared/DeterministicSerializer.cjs +1 -1
- package/lib/shared/SimpleDeterministicSerializer.cjs +1 -1
- package/lib/shared/constants.cjs +1 -1
- package/lib/shared/decorators.cjs +10 -3
- package/lib/shared/erc20/erc20-constants.cjs +1 -1
- package/lib/shared/erc20/index.cjs +1 -1
- package/lib/shared/errors.cjs +1 -1
- package/lib/shared/events.cjs +1 -1
- package/lib/shared/fabric-types.cjs +1 -1
- package/lib/shared/index.cjs +1 -1
- package/lib/shared/interfaces/Checkable.cjs +1 -1
- package/lib/shared/interfaces/index.cjs +1 -1
- package/lib/shared/math.cjs +1 -1
- package/lib/shared/model/FabricBaseModel.cjs +1 -1
- package/lib/shared/model/FabricIdentifiedBaseModel.cjs +1 -1
- package/lib/shared/model/Identity.cjs +1 -1
- package/lib/shared/model/IdentityCredentials.cjs +1 -1
- package/lib/shared/model/index.cjs +1 -1
- package/lib/shared/overrides/Model.cjs +1 -1
- package/lib/shared/overrides/index.cjs +1 -1
- package/lib/shared/overrides/overrides.cjs +1 -1
- package/lib/shared/types.cjs +1 -1
- package/lib/shared/types.d.ts +1 -0
- package/lib/version.cjs +2 -2
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/dist/for-fabric.cjs.map +0 -1
- package/dist/for-fabric.js.map +0 -1
- package/lib/bin/cli.js.map +0 -1
- package/lib/cli-module.js.map +0 -1
- package/lib/cli-utils.js.map +0 -1
- package/lib/client/FabricClientAdapter.js.map +0 -1
- package/lib/client/FabricClientDispatch.js.map +0 -1
- package/lib/client/FabricClientPaginator.js.map +0 -1
- package/lib/client/FabricClientRepository.js.map +0 -1
- package/lib/client/FabricClientStatement.js.map +0 -1
- package/lib/client/collections/generation.js.map +0 -1
- package/lib/client/collections/index.js.map +0 -1
- package/lib/client/constants.js.map +0 -1
- package/lib/client/crypto.js.map +0 -1
- package/lib/client/erc20/FabricERC20ClientRepository.js.map +0 -1
- package/lib/client/erc20/index.js.map +0 -1
- package/lib/client/fabric-fs.js.map +0 -1
- package/lib/client/fabric-hsm.js.map +0 -1
- package/lib/client/ids/id-extraction.js.map +0 -1
- package/lib/client/ids/index.js.map +0 -1
- package/lib/client/index.js.map +0 -1
- package/lib/client/indexes/generation.js.map +0 -1
- package/lib/client/indexes/index.js.map +0 -1
- package/lib/client/logging.js.map +0 -1
- package/lib/client/services/FabricEnrollmentService.js.map +0 -1
- package/lib/client/services/FabricIdentityService.js.map +0 -1
- package/lib/client/services/RegistrationRequestBuilder.js.map +0 -1
- package/lib/client/services/constants.js.map +0 -1
- package/lib/client/services/index.js.map +0 -1
- package/lib/client/types.js.map +0 -1
- package/lib/client/utils.js.map +0 -1
- package/lib/contract/Address.js.map +0 -1
- package/lib/contract/AddressContract.js.map +0 -1
- package/lib/contract/AuditContract.js.map +0 -1
- package/lib/contract/BatchContract.js.map +0 -1
- package/lib/contract/MarketContract.js.map +0 -1
- package/lib/contract/OtherAuditContract.js.map +0 -1
- package/lib/contract/OtherBatchContract.js.map +0 -1
- package/lib/contract/OtherMarketContract.js.map +0 -1
- package/lib/contract/OtherProductContract.js.map +0 -1
- package/lib/contract/OtherProductImageContract.js.map +0 -1
- package/lib/contract/OtherProductSharedContract.js.map +0 -1
- package/lib/contract/OtherProductStrengthContract.js.map +0 -1
- package/lib/contract/Product.js.map +0 -1
- package/lib/contract/ProductContract.js.map +0 -1
- package/lib/contract/ProductStrengthContract.js.map +0 -1
- package/lib/contract/SegregatedPrivateDocumentContract.js.map +0 -1
- package/lib/contract/SegregatedSharedDocumentContract.js.map +0 -1
- package/lib/contract/User.js.map +0 -1
- package/lib/contract/UserContract.js.map +0 -1
- package/lib/contract/index.js.map +0 -1
- package/lib/contract/logging-context.js.map +0 -1
- package/lib/contract/models/Audit.js.map +0 -1
- package/lib/contract/models/BaseIdentifiedModel.js.map +0 -1
- package/lib/contract/models/BaseModel.js.map +0 -1
- package/lib/contract/models/Batch.js.map +0 -1
- package/lib/contract/models/GtinOwner.js.map +0 -1
- package/lib/contract/models/History.js.map +0 -1
- package/lib/contract/models/Leaflet.js.map +0 -1
- package/lib/contract/models/LeafletFile.js.map +0 -1
- package/lib/contract/models/Market.js.map +0 -1
- package/lib/contract/models/OtherAudit.js.map +0 -1
- package/lib/contract/models/OtherBatchShared.js.map +0 -1
- package/lib/contract/models/OtherLeaflet.js.map +0 -1
- package/lib/contract/models/OtherLeafletFile.js.map +0 -1
- package/lib/contract/models/OtherMarket.js.map +0 -1
- package/lib/contract/models/OtherProduct.js.map +0 -1
- package/lib/contract/models/OtherProductImage.js.map +0 -1
- package/lib/contract/models/OtherProductShared.js.map +0 -1
- package/lib/contract/models/OtherProductStrength.js.map +0 -1
- package/lib/contract/models/Product.js.map +0 -1
- package/lib/contract/models/ProductStrength.js.map +0 -1
- package/lib/contract/models/SegregatedDocument.js.map +0 -1
- package/lib/contract/models/constants.js.map +0 -1
- package/lib/contract/models/decorators-private.js.map +0 -1
- package/lib/contract/models/decorators.js.map +0 -1
- package/lib/contract/models/gtin.js.map +0 -1
- package/lib/contract/models/history-dec.js.map +0 -1
- package/lib/contracts/ContractAdapter.js.map +0 -1
- package/lib/contracts/ContractContext.js.map +0 -1
- package/lib/contracts/FabricContractDispatch.js.map +0 -1
- package/lib/contracts/FabricContractPaginator.js.map +0 -1
- package/lib/contracts/FabricContractRepository.js.map +0 -1
- package/lib/contracts/FabricContractRepositoryObservableHandler.js.map +0 -1
- package/lib/contracts/FabricContractSequence.js.map +0 -1
- package/lib/contracts/FabricContractStatement.js.map +0 -1
- package/lib/contracts/PrivateSequence.js.map +0 -1
- package/lib/contracts/auth/decorators.js.map +0 -1
- package/lib/contracts/auth/index.js.map +0 -1
- package/lib/contracts/crud/crud-contract.js.map +0 -1
- package/lib/contracts/crud/index.js.map +0 -1
- package/lib/contracts/crud/serialized-crud-contract.js.map +0 -1
- package/lib/contracts/erc20/erc20contract.js.map +0 -1
- package/lib/contracts/erc20/index.js.map +0 -1
- package/lib/contracts/erc20/models.js.map +0 -1
- package/lib/contracts/index.js.map +0 -1
- package/lib/contracts/logging.js.map +0 -1
- package/lib/contracts/overrides.js.map +0 -1
- package/lib/contracts/types.js.map +0 -1
- package/lib/contracts/uuid.js.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/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/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/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/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/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
- package/lib/index.js.map +0 -1
- package/lib/shared/ClientSerializer.js.map +0 -1
- package/lib/shared/DeterministicSerializer.js.map +0 -1
- package/lib/shared/SimpleDeterministicSerializer.js.map +0 -1
- package/lib/shared/constants.js.map +0 -1
- package/lib/shared/decorators.js.map +0 -1
- package/lib/shared/erc20/erc20-constants.js.map +0 -1
- package/lib/shared/erc20/index.js.map +0 -1
- package/lib/shared/errors.js.map +0 -1
- package/lib/shared/events.js.map +0 -1
- package/lib/shared/fabric-types.js.map +0 -1
- package/lib/shared/index.js.map +0 -1
- package/lib/shared/interfaces/Checkable.js.map +0 -1
- package/lib/shared/interfaces/index.js.map +0 -1
- package/lib/shared/math.js.map +0 -1
- package/lib/shared/model/FabricBaseModel.js.map +0 -1
- package/lib/shared/model/FabricIdentifiedBaseModel.js.map +0 -1
- package/lib/shared/model/Identity.js.map +0 -1
- package/lib/shared/model/IdentityCredentials.js.map +0 -1
- package/lib/shared/model/index.js.map +0 -1
- package/lib/shared/overrides/Model.js.map +0 -1
- package/lib/shared/overrides/index.js.map +0 -1
- package/lib/shared/overrides/overrides.js.map +0 -1
- package/lib/shared/types.js.map +0 -1
- package/lib/version.js.map +0 -1
|
@@ -331,4 +331,4 @@ export class FabricContractSequence extends Sequence {
|
|
|
331
331
|
await this.writeSequenceToCollections(ctx, seq, adapterMeta.collections);
|
|
332
332
|
}
|
|
333
333
|
}
|
|
334
|
-
//# sourceMappingURL=FabricContractSequence.js.map
|
|
334
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljQ29udHJhY3RTZXF1ZW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250cmFjdHMvRmFicmljQ29udHJhY3RTZXF1ZW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsYUFBYSxFQUNiLGFBQWEsRUFDYixhQUFhLEdBQ2QsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkQsT0FBTyxFQUlMLFFBQVEsRUFDUixhQUFhLEVBRWIsTUFBTSxFQUNOLGdCQUFnQixHQUNqQixNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkNHO0FBQ0gsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFFBQVE7SUFDbEQ7OztPQUdHO0lBQ0gsWUFBWSxPQUF3QixFQUFFLE9BQStCO1FBQ25FLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ00sS0FBSyxDQUFDLE9BQU8sQ0FDcEIsR0FBRyxJQUE2QjtRQUVoQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQ25CLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FDbEQsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BCLElBQUksYUFBa0IsQ0FBQztRQUN2QixNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDekMsTUFBTSxXQUFXLEdBQUksR0FBNkIsQ0FBQyxzQkFBc0IsQ0FDdkUsTUFBTSxDQUFD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Q2hGLDhGQUE4RjtRQUM5RixNQUFNLFdBQVcsR0FBSSxHQUE2QixDQUFDLHNCQUFzQixDQUN2RSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUNmLENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwRCxPQUFPO1FBQ1QsQ0FBQztRQUVELDBGQUEwRjtRQUMxRixJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNoQyxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ2xFLEdBQUcsQ0FBQyxJQUFJLENBQ04sd0JBQXdCLEdBQUcsQ0FBQyxFQUFFLE9BQU8sV0FBVyxDQUFDLFdBQVcsQ0FBQyxNQUFNLDRCQUE0QixXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNwSSxDQUFDO1FBRUYsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0UsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW50ZXJuYWxFcnJvcixcbiAgTm90Rm91bmRFcnJvcixcbiAgT3BlcmF0aW9uS2V5cyxcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7XG4gIEFkYXB0ZXIsXG4gIENvbnRleHQsXG4gIE1heWJlQ29udGV4dHVhbEFyZyxcbiAgU2VxdWVuY2UsXG4gIFNlcXVlbmNlTW9kZWwsXG4gIFNlcXVlbmNlT3B0aW9ucyxcbiAgU2VyaWFsLFxuICBVbnN1cHBvcnRlZEVycm9yLFxufSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IEZhYnJpY0NvbnRyYWN0Q29udGV4dCB9IGZyb20gXCIuL0NvbnRyYWN0Q29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBGYWJyaWNDb250cmFjdEFkYXB0ZXIgfSBmcm9tIFwiLi9Db250cmFjdEFkYXB0ZXJcIjtcbmltcG9ydCB7IENvdWNoREJLZXlzIH0gZnJvbSBcIkBkZWNhZi10cy9mb3ItY291Y2hkYlwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBzZXF1ZW5jZSBnZW5lcmF0aW9uXG4gKiBAc3VtbWFyeSBQcm92aWRlcyBhIGZyYW1ld29yayBmb3IgZ2VuZXJhdGluZyBzZXF1ZW50aWFsIHZhbHVlcyAobGlrZSBwcmltYXJ5IGtleXMpIGluIHRoZSBwZXJzaXN0ZW5jZSBsYXllci5cbiAqIEltcGxlbWVudGF0aW9ucyBvZiB0aGlzIGNsYXNzIGhhbmRsZSB0aGUgc3BlY2lmaWNzIG9mIGhvdyBzZXF1ZW5jZXMgYXJlIHN0b3JlZCBhbmQgaW5jcmVtZW50ZWQgaW4gZGlmZmVyZW50XG4gKiBkYXRhYmFzZSBzeXN0ZW1zLlxuICogQHBhcmFtIHtTZXF1ZW5jZU9wdGlvbnN9IG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBzZXF1ZW5jZSBnZW5lcmF0b3JcbiAqIEBjbGFzcyBTZXF1ZW5jZVxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIEV4YW1wbGUgaW1wbGVtZW50YXRpb24gZm9yIGEgc3BlY2lmaWMgZGF0YWJhc2VcbiAqIGNsYXNzIFBvc3RncmVzU2VxdWVuY2UgZXh0ZW5kcyBTZXF1ZW5jZSB7XG4gKiAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNlcXVlbmNlT3B0aW9ucykge1xuICogICAgIHN1cGVyKG9wdGlvbnMpO1xuICogICB9XG4gKlxuICogICBhc3luYyBuZXh0KCk6IFByb21pc2U8bnVtYmVyPiB7XG4gKiAgICAgLy8gSW1wbGVtZW50YXRpb24gdG8gZ2V0IG5leHQgdmFsdWUgZnJvbSBQb3N0Z3JlU1FMIHNlcXVlbmNlXG4gKiAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5vcHRpb25zLmV4ZWN1dG9yLnJhdyhgU0VMRUNUIG5leHR2YWwoJyR7dGhpcy5vcHRpb25zLm5hbWV9JylgKTtcbiAqICAgICByZXR1cm4gcGFyc2VJbnQocmVzdWx0LnJvd3NbMF0ubmV4dHZhbCk7XG4gKiAgIH1cbiAqXG4gKiAgIGFzeW5jIGN1cnJlbnQoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAqICAgICAvLyBJbXBsZW1lbnRhdGlvbiB0byBnZXQgY3VycmVudCB2YWx1ZSBmcm9tIFBvc3RncmVTUUwgc2VxdWVuY2VcbiAqICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLm9wdGlvbnMuZXhlY3V0b3IucmF3KGBTRUxFQ1QgY3VycnZhbCgnJHt0aGlzLm9wdGlvbnMubmFtZX0nKWApO1xuICogICAgIHJldHVybiBwYXJzZUludChyZXN1bHQucm93c1swXS5jdXJydmFsKTtcbiAqICAgfVxuICpcbiAqICAgYXN5bmMgcmFuZ2UoY291bnQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyW10+IHtcbiAqICAgICAvLyBJbXBsZW1lbnRhdGlvbiB0byBnZXQgYSByYW5nZSBvZiB2YWx1ZXNcbiAqICAgICBjb25zdCB2YWx1ZXM6IG51bWJlcltdID0gW107XG4gKiAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gKiAgICAgICB2YWx1ZXMucHVzaChhd2FpdCB0aGlzLm5leHQoKSk7XG4gKiAgICAgfVxuICogICAgIHJldHVybiB2YWx1ZXM7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiAvLyBVc2FnZVxuICogY29uc3Qgc2VxdWVuY2UgPSBuZXcgUG9zdGdyZXNTZXF1ZW5jZSh7XG4gKiAgIG5hbWU6ICd1c2VyX2lkX3NlcScsXG4gKiAgIGV4ZWN1dG9yOiBkYkV4ZWN1dG9yXG4gKiB9KTtcbiAqXG4gKiBjb25zdCBuZXh0SWQgPSBhd2FpdCBzZXF1ZW5jZS5uZXh0KCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIEZhYnJpY0NvbnRyYWN0U2VxdWVuY2UgZXh0ZW5kcyBTZXF1ZW5jZSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG5ldyBzZXF1ZW5jZSBpbnN0YW5jZVxuICAgKiBAc3VtbWFyeSBQcm90ZWN0ZWQgY29uc3RydWN0b3IgdGhhdCBpbml0aWFsaXplcyB0aGUgc2VxdWVuY2Ugd2l0aCB0aGUgcHJvdmlkZWQgb3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9uczogU2VxdWVuY2VPcHRpb25zLCBhZGFwdGVyOiBBZGFwdGVyPGFueSwgYW55LCBhbnk+KSB7XG4gICAgc3VwZXIob3B0aW9ucywgYWRhcHRlcik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgc2VxdWVuY2VcbiAgICogQHN1bW1hcnkgR2V0cyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgc2VxdWVuY2UgZnJvbSBzdG9yYWdlLiBJZiB0aGUgc2VxdWVuY2VcbiAgICogZG9lc24ndCBleGlzdCB5ZXQsIGl0IHJldHVybnMgdGhlIGNvbmZpZ3VyZWQgc3RhcnRpbmcgdmFsdWUuXG4gICAqIEByZXR1cm4gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGN1cnJlbnQgc2VxdWVuY2UgdmFsdWVcbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIGN1cnJlbnQoXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPGFueT5cbiAgKTogUHJvbWlzZTxzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQ+IHtcbiAgICBjb25zdCB7IGN0eCwgbG9nIH0gPSAoXG4gICAgICBhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBPcGVyYXRpb25LZXlzLlJFQUQsIHRydWUpXG4gICAgKS5mb3IodGhpcy5jdXJyZW50KTtcbiAgICBsZXQgY2FjaGVkQ3VycmVudDogYW55O1xuICAgIGNvbnN0IHsgbmFtZSwgc3RhcnRXaXRoIH0gPSB0aGlzLm9wdGlvbnM7XG4gICAgY29uc3QgYWRhcHRlck1ldGEgPSAoY3R4IGFzIEZhYnJpY0NvbnRyYWN0Q29udGV4dCkuZ2V0U2VxdWVuY2VTZWdyZWdhdGlvbihcbiAgICAgIFN0cmluZyhuYW1lKVxuICAgICk7XG4gICAgdHJ5IHtcbiAgICAgIGNhY2hlZEN1cnJlbnQgPSBjdHguZ2V0RnJvbUNoaWxkcmVuKG5hbWUgYXMgYW55KTtcbiAgICAgIGlmIChjYWNoZWRDdXJyZW50ICE9PSB1bmRlZmluZWQgJiYgY2FjaGVkQ3VycmVudCAhPT0gbnVsbClcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2UoY2FjaGVkQ3VycmVudCk7XG4gICAgICBjb25zdCBzZXF1ZW5jZTogU2VxdWVuY2VNb2RlbCA9IGF3YWl0IHRoaXMucmVwby5yZWFkKG5hbWUgYXMgc3RyaW5nLCBjdHgpO1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2Uoc2VxdWVuY2UuY3VycmVudCBhcyBzdHJpbmcgfCBudW1iZXIpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yKSB7XG4gICAgICAgIC8vIElmIHRoZSBzZXF1ZW5jZSBpcyBzdXBwb3NlZCB0byBsaXZlIGluIHByaXZhdGUvc2hhcmVkIGNvbGxlY3Rpb25zLFxuICAgICAgICAvLyByZWFkIGl0IGZyb20gdGhvc2UgY29sbGVjdGlvbnMgdXNpbmcgdGhlIGFkYXB0ZXIgKG5vdCB0aGUgc3R1YiBkaXJlY3RseSkuXG4gICAgICAgIGlmIChhZGFwdGVyTWV0YT8uY29sbGVjdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IGFkYXB0ZXIgPSB0aGlzLmFkYXB0ZXIgYXMgdW5rbm93biBhcyBGYWJyaWNDb250cmFjdEFkYXB0ZXI7XG4gICAgICAgICAgY29uc3QgdGFibGVOYW1lID0gTW9kZWwudGFibGVOYW1lKFNlcXVlbmNlTW9kZWwgYXMgYW55KTtcbiAgICAgICAgICBjb25zdCBwdWJsaWNLZXkgPSAoY3R4IGFzIEZhYnJpY0NvbnRyYWN0Q29udGV4dCkuc3R1Yi5jcmVhdGVDb21wb3NpdGVLZXkoXG4gICAgICAgICAgICB0YWJsZU5hbWUsXG4gICAgICAgICAgICBbU3RyaW5nKG5hbWUpXVxuICAgICAgICAgICk7XG4gICAgICAgICAgZm9yIChjb25zdCBjb2wgb2YgYWRhcHRlck1ldGEuY29sbGVjdGlvbnMpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IHByaXZhdGVBZGFwdGVyID0gYWRhcHRlci5mb3JQcml2YXRlKGNvbCk7XG4gICAgICAgICAgICAgIGNvbnN0IHJhdyA9IGF3YWl0IChwcml2YXRlQWRhcHRlciBhcyBhbnkpLnJlYWRTdGF0ZShcbiAgICAgICAgICAgICAgICBwdWJsaWNLZXksXG4gICAgICAgICAgICAgICAgY3R4IGFzIGFueVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBpZiAocmF3ICYmIHJhdy5jdXJyZW50ICE9PSB1bmRlZmluZWQgJiYgcmF3LmN1cnJlbnQgIT09IG51bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2UocmF3LmN1cnJlbnQgYXMgYW55KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgLy8gZmFsbCB0aHJvdWdoIHRvIHJlZ3VsYXIgc3RhcnRXaXRoIGZhbGxiYWNrIGZvciBhbnkgcGFyc2UvSU8gZXJyb3JzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbG9nLmRlYnVnKFxuICAgICAgICAgICAgYFRyeWluZyB0byByZXNvbHZlIGN1cnJlbnQgc2VxdWVuY2UgJHtuYW1lfSB2YWx1ZSBmcm9tIGNvbnRleHQgdHJlZWBcbiAgICAgICAgICApO1xuICAgICAgICAgIGNhY2hlZEN1cnJlbnQgPSBjdHguZ2V0RnJvbUNoaWxkcmVuKG5hbWUgYXMgYW55KTtcbiAgICAgICAgICBpZiAoY2FjaGVkQ3VycmVudCAhPT0gdW5kZWZpbmVkICYmIGNhY2hlZEN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGxvZy5kZWJ1ZyhcbiAgICAgICAgICAgICAgYFJldHJpZXZlZCBjYWNoZWQgY3VycmVudCB2YWx1ZSBmb3Igc2VxdWVuY2UgJHtuYW1lfTogJHtjYWNoZWRDdXJyZW50fWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICAgIC8vIGZhbGwgdGhyb3VnaFxuICAgICAgICB9XG4gICAgICAgIGlmIChjYWNoZWRDdXJyZW50ID09PSB1bmRlZmluZWQgfHwgY2FjaGVkQ3VycmVudCA9PT0gbnVsbCkge1xuICAgICAgICAgIGxvZy5pbmZvKGBObyBjYWNoZWQgdmFsdWUgZm9yIHNlcXVlbmNlICR7bmFtZX0gaW4gY29udGV4dGApO1xuICAgICAgICAgIGNhY2hlZEN1cnJlbnQgPSBzdGFydFdpdGg7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZShjYWNoZWRDdXJyZW50KTtcbiAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgICBgRmFpbGVkIHRvIHBhcnNlIGluaXRpYWwgdmFsdWUgZm9yIHNlcXVlbmNlICR7c3RhcnRXaXRofTogJHtlfWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byByZXRyaWV2ZSBjdXJyZW50IHZhbHVlIGZvciBzZXF1ZW5jZSAke25hbWV9OiAke2V9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEluY3JlbWVudHMgdGhlIHNlcXVlbmNlIHZhbHVlXG4gICAqIEBzdW1tYXJ5IEluY3JlYXNlcyB0aGUgY3VycmVudCBzZXF1ZW5jZSB2YWx1ZSBieSB0aGUgc3BlY2lmaWVkIGFtb3VudCBhbmQgcGVyc2lzdHNcbiAgICogdGhlIG5ldyB2YWx1ZSB0byBzdG9yYWdlLiBUaGlzIG1ldGhvZCBoYW5kbGVzIGJvdGggbnVtZXJpYyBhbmQgQmlnSW50IHNlcXVlbmNlIHR5cGVzLlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlciB8IGJpZ2ludH0gY3VycmVudCAtIFRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBzZXF1ZW5jZVxuICAgKiBAcGFyYW0ge251bWJlcn0gW2NvdW50XSAtIE9wdGlvbmFsIGFtb3VudCB0byBpbmNyZW1lbnQgYnksIGRlZmF1bHRzIHRvIHRoZSBzZXF1ZW5jZSdzIGluY3JlbWVudEJ5IHZhbHVlXG4gICAqIEByZXR1cm4gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIG5ldyBzZXF1ZW5jZSB2YWx1ZSBhZnRlciBpbmNyZW1lbnRpbmdcbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBpbmNyZW1lbnQoXG4gICAgY291bnQ6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgICBjdHg6IENvbnRleHQ8YW55PlxuICApOiBQcm9taXNlPHN0cmluZyB8IG51bWJlciB8IGJpZ2ludD4ge1xuICAgIGNvbnN0IGxvZyA9IGN0eC5sb2dnZXIuZm9yKHRoaXMuaW5jcmVtZW50KTtcbiAgICBjb25zdCB7IHR5cGUsIGluY3JlbWVudEJ5LCBuYW1lIH0gPSB0aGlzLm9wdGlvbnM7XG4gICAgaWYgKCFuYW1lKSB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIlNlcXVlbmNlIG5hbWUgaXMgcmVxdWlyZWRcIik7XG4gICAgbG9nLmluZm8oYE9idGFpbmluZyBzZXF1ZW5jZSBsb2NrIGZvciBzZXF1ZW5jZSAke25hbWV9YCk7XG4gICAgLy8gcmV0dXJuIEZhYnJpY0NvbnRyYWN0U2VxdWVuY2UubG9jay5leGVjdXRlKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0b0luY3JlbWVudEJ5ID0gY291bnQgfHwgaW5jcmVtZW50Qnk7XG4gICAgaWYgKHRvSW5jcmVtZW50QnkgJSBpbmNyZW1lbnRCeSAhPT0gMClcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBgVmFsdWUgdG8gaW5jcmVtZW50IGRvZXMgbm90IGNvbnNpZGVyIHRoZSBpbmNyZW1lbnRCeSBzZXR0aW5nOiAke2luY3JlbWVudEJ5fWBcbiAgICAgICk7XG4gICAgY29uc3QgdHlwZU5hbWUgPVxuICAgICAgdHlwZW9mIHR5cGUgPT09IFwiZnVuY3Rpb25cIiAmJiAodHlwZSBhcyBhbnkpPy5uYW1lXG4gICAgICAgID8gKHR5cGUgYXMgYW55KS5uYW1lXG4gICAgICAgIDogdHlwZTtcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSBhd2FpdCB0aGlzLmN1cnJlbnQoY3R4KTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJldHVybkFuZENhY2hlKHJlczogU2VxdWVuY2VNb2RlbCB8IFByb21pc2U8U2VxdWVuY2VNb2RlbD4pIHtcbiAgICAgIGlmIChyZXMgaW5zdGFuY2VvZiBQcm9taXNlKSByZXMgPSBhd2FpdCByZXM7XG4gICAgICBsb2dcbiAgICAgICAgLmZvcihyZXR1cm5BbmRDYWNoZSlcbiAgICAgICAgLmluZm8oYFN0b3JpbmcgbmV3ICR7bmFtZX0gc2VxIHZhbHVlIGluIGNhY2hlOiAke3Jlcy5jdXJyZW50fWApO1xuICAgICAgY3R4LmNhY2hlLnB1dChuYW1lIGFzIHN0cmluZywgcmVzLmN1cnJlbnQpO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBjb25zdCBwZXJmb3JtVXBzZXJ0ID0gYXN5bmMgKFxuICAgICAgbmV4dDogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50XG4gICAgKTogUHJvbWlzZTxTZXF1ZW5jZU1vZGVsPiA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgcmV0dXJuQW5kQ2FjaGUoXG4gICAgICAgICAgdGhpcy5yZXBvLnVwZGF0ZShuZXcgU2VxdWVuY2VNb2RlbCh7IGlkOiBuYW1lLCBjdXJyZW50OiBuZXh0IH0pLCBjdHgpXG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IHJldHVybkFuZENhY2hlKFxuICAgICAgICAgICAgdGhpcy5yZXBvLmNyZWF0ZShcbiAgICAgICAgICAgICAgbmV3IFNlcXVlbmNlTW9kZWwoeyBpZDogbmFtZSwgY3VycmVudDogbmV4dCB9KSxcbiAgICAgICAgICAgICAgY3R4XG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBpbmNyZW1lbnRTZXJpYWwgPSBhc3luYyAoXG4gICAgICBiYXNlOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnRcbiAgICApOiBQcm9taXNlPHN0cmluZyB8IG51bWJlciB8IGJpZ2ludD4gPT4ge1xuICAgICAgc3dpdGNoICh0eXBlTmFtZSkge1xuICAgICAgICBjYXNlIE51bWJlci5uYW1lOlxuICAgICAgICAgIHJldHVybiAodGhpcy5wYXJzZShiYXNlKSBhcyBudW1iZXIpICsgdG9JbmNyZW1lbnRCeTtcbiAgICAgICAgY2FzZSBCaWdJbnQubmFtZTpcbiAgICAgICAgICByZXR1cm4gKHRoaXMucGFyc2UoYmFzZSkgYXMgYmlnaW50KSArIEJpZ0ludCh0b0luY3JlbWVudEJ5KTtcbiAgICAgICAgY2FzZSBTdHJpbmcubmFtZTpcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZShiYXNlKTtcbiAgICAgICAgY2FzZSBcInNlcmlhbFwiOlxuICAgICAgICAgIHJldHVybiBhd2FpdCBQcm9taXNlLnJlc29sdmUoXG4gICAgICAgICAgICBTZXJpYWwuaW5zdGFuY2UuZ2VuZXJhdGUoYmFzZSBhcyBzdHJpbmcpXG4gICAgICAgICAgKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIlNob3VsZCBuZXZlciBoYXBwZW5cIik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIENoZWNrIGlmIG1vZGVsIGlzIGZ1bGx5IHNlZ3JlZ2F0ZWQg4oCUIHNlcXVlbmNlIGdvZXMgT05MWSB0byBwcml2YXRlIGNvbGxlY3Rpb25zLlxuICAgIC8vIFByZWZlciB0aGUgZXhwbGljaXQgcGVyLXNlcXVlbmNlIG1ldGFkYXRhIHdoZW4gYXZhaWxhYmxlOyBvdGhlcndpc2UgZmFsbCBiYWNrIHRvXG4gICAgLy8gdGhlIGNvbnRleHQncyByZWdpc3RlcmVkIHJlYWQgY29sbGVjdGlvbnMgKGNvdmVycyBlYXJseSBwayBnZW5lcmF0aW9uIHBhdGhzKS5cbiAgICBjb25zdCBhZGFwdGVyTWV0YSA9IChjdHggYXMgRmFicmljQ29udHJhY3RDb250ZXh0KS5nZXRTZXF1ZW5jZVNlZ3JlZ2F0aW9uKFxuICAgICAgbmFtZVxuICAgICk7XG4gICAgY29uc3QgZmFsbGJhY2tDb2xsZWN0aW9ucyA9IChjdHggYXMgRmFicmljQ29udHJhY3RDb250ZXh0KVxuICAgICAgLmdldFJlYWRDb2xsZWN0aW9ucygpXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgIGNvbnN0IGVmZmVjdGl2ZUNvbGxlY3Rpb25zID1cbiAgICAgIGFkYXB0ZXJNZXRhPy5jb2xsZWN0aW9ucz8ubGVuZ3RoID8gYWRhcHRlck1ldGEuY29sbGVjdGlvbnMgOiBmYWxsYmFja0NvbGxlY3Rpb25zO1xuICAgIGNvbnN0IGVmZmVjdGl2ZUZ1bGx5U2VncmVnYXRlZCA9XG4gICAgICAoYWRhcHRlck1ldGE/LmZ1bGx5U2VncmVnYXRlZCA/PyAoY3R4IGFzIEZhYnJpY0NvbnRyYWN0Q29udGV4dCkuaXNGdWxseVNlZ3JlZ2F0ZWQpICYmXG4gICAgICBlZmZlY3RpdmVDb2xsZWN0aW9ucy5sZW5ndGggPiAwO1xuXG4gICAgbGV0IG5leHQ6IGFueTtcbiAgICBpZiAodHlwZU5hbWUgPT09IFwidXVpZFwiKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRFcnJvcihcbiAgICAgICAgYHV1aWQgcGsgZ2VuZXJhdGlvbiBpcyBvbmx5IHN1cHBvcnRlZCB1c2luZyBAdXVpZCBhbmQgYSBkZXRlcm1pbmlzdGljIHNlZWRgXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0ID0gYXdhaXQgaW5jcmVtZW50U2VyaWFsKGN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGVmZmVjdGl2ZUZ1bGx5U2VncmVnYXRlZCkge1xuICAgICAgY29uc3Qgc2VxTW9kZWwgPSBuZXcgU2VxdWVuY2VNb2RlbCh7IGlkOiBuYW1lLCBjdXJyZW50OiBuZXh0IH0pO1xuICAgICAgYXdhaXQgdGhpcy53cml0ZVNlcXVlbmNlVG9Db2xsZWN0aW9ucyhcbiAgICAgICAgY3R4LFxuICAgICAgICBzZXFNb2RlbCxcbiAgICAgICAgZWZmZWN0aXZlQ29sbGVjdGlvbnNcbiAgICAgICk7XG4gICAgICBsb2cuZGVidWcoXG4gICAgICAgIGBTZXF1ZW5jZS5pbmNyZW1lbnQgKHByaXZhdGUtb25seSkgJHtuYW1lfSBjdXJyZW50PSR7Y3VycmVudFZhbHVlIGFzIGFueX0gbmV4dD0ke25leHQgYXMgYW55fWBcbiAgICAgICk7XG4gICAgICBjdHguY2FjaGUucHV0KG5hbWUgYXMgc3RyaW5nLCBuZXh0KTtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH1cblxuICAgIGNvbnN0IHNlcSA9IGF3YWl0IHBlcmZvcm1VcHNlcnQobmV4dCk7XG4gICAgbG9nLmRlYnVnKFxuICAgICAgYFNlcXVlbmNlLmluY3JlbWVudCAke25hbWV9IGN1cnJlbnQ9JHtjdXJyZW50VmFsdWUgYXMgYW55fSBuZXh0PSR7bmV4dCBhcyBhbnl9YFxuICAgICk7XG5cbiAgICAvLyBSZXBsaWNhdGUgc2VxdWVuY2UgdG8gc2VncmVnYXRlZCBjb2xsZWN0aW9ucyBpZiBtb2RlbCB1c2VzIHByaXZhdGUvc2hhcmVkIGRhdGEuXG4gICAgLy8gV2hlbiBtZXRhZGF0YSBpc24ndCBhdmFpbGFibGUsIGZhbGwgYmFjayB0byB0aGUgY29udGV4dCdzIHJlZ2lzdGVyZWQgcmVhZCBjb2xsZWN0aW9ucy5cbiAgICBpZiAoZWZmZWN0aXZlQ29sbGVjdGlvbnMubGVuZ3RoKSB7XG4gICAgICBhd2FpdCB0aGlzLndyaXRlU2VxdWVuY2VUb0NvbGxlY3Rpb25zKGN0eCwgc2VxLCBlZmZlY3RpdmVDb2xsZWN0aW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlcS5jdXJyZW50IGFzIHN0cmluZyB8IG51bWJlciB8IGJpZ2ludDtcbiAgICAvLyB9LCBuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRW5zdXJlcyB0aGUgc2VxdWVuY2UgZXhpc3RzIGFuZCBpcyBhdCBsZWFzdCBhIGdpdmVuIHZhbHVlXG4gICAqIEBzdW1tYXJ5IEZhYnJpYyBuZWVkcyB0byByZXNwZWN0IHNlZ3JlZ2F0ZWQvcHJpdmF0ZS9zaGFyZWQgc3RvcmFnZSBydWxlcyB3aGVuIGNyZWF0aW5nXG4gICAqIHNlcXVlbmNlcyAoZm9yIGV4YW1wbGUgZm9yIHBlcnNpc3RlbnQgQHZlcnNpb24odHJ1ZSkgYW5kIEBzZXF1ZW5jZSgpKS5cbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIGVuc3VyZUF0TGVhc3QoXG4gICAgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8YW55PlxuICApOiBQcm9taXNlPHN0cmluZyB8IG51bWJlciB8IGJpZ2ludD4ge1xuICAgIGNvbnN0IHsgY3R4LCBsb2cgfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIE9wZXJhdGlvbktleXMuVVBEQVRFLCB0cnVlKVxuICAgICkuZm9yKHRoaXMuZW5zdXJlQXRMZWFzdCk7XG4gICAgY29uc3QgeyBuYW1lIH0gPSB0aGlzLm9wdGlvbnM7XG4gICAgaWYgKCFuYW1lKSB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIlNlcXVlbmNlIG5hbWUgaXMgcmVxdWlyZWRcIik7XG5cbiAgICBjb25zdCBkZXNpcmVkID0gdGhpcy5wYXJzZSh2YWx1ZSk7XG5cbiAgICBjb25zdCBncmVhdGVyVGhhbiA9IChcbiAgICAgIGE6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCxcbiAgICAgIGI6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludFxuICAgICk6IGJvb2xlYW4gPT4ge1xuICAgICAgaWYgKHR5cGVvZiBhID09PSBcImJpZ2ludFwiIHx8IHR5cGVvZiBiID09PSBcImJpZ2ludFwiKSB7XG4gICAgICAgIHJldHVybiBCaWdJbnQoYSBhcyBhbnkpID4gQmlnSW50KGIgYXMgYW55KTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgYSA9PT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgYiA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICByZXR1cm4gTnVtYmVyKGEpID4gTnVtYmVyKGIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFN0cmluZyhhKSA+IFN0cmluZyhiKTtcbiAgICB9O1xuXG4gICAgY29uc3QgYWRhcHRlck1ldGEgPSAoY3R4IGFzIEZhYnJpY0NvbnRyYWN0Q29udGV4dCkuZ2V0U2VxdWVuY2VTZWdyZWdhdGlvbihcbiAgICAgIFN0cmluZyhuYW1lKVxuICAgICk7XG4gICAgY29uc3QgaXNGdWxseVNlZ3JlZ2F0ZWQgPVxuICAgICAgYWRhcHRlck1ldGEgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgYWRhcHRlck1ldGEuZnVsbHlTZWdyZWdhdGVkICYmXG4gICAgICBhZGFwdGVyTWV0YS5jb2xsZWN0aW9ucy5sZW5ndGggPiAwO1xuXG4gICAgY29uc3QgcmVhZEV4aXN0aW5nID0gYXN5bmMgKCk6IFByb21pc2U8U2VxdWVuY2VNb2RlbCB8IHVuZGVmaW5lZD4gPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucmVwby5yZWFkKG5hbWUgYXMgc3RyaW5nLCBjdHgpO1xuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIGlmIChlIGluc3RhbmNlb2YgTm90Rm91bmRFcnJvcikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgd3JpdGVQcml2YXRlID0gYXN5bmMgKFxuICAgICAgc2VxTW9kZWw6IFNlcXVlbmNlTW9kZWwsXG4gICAgICBjb2xsZWN0aW9uczogc3RyaW5nW11cbiAgICApID0+IHtcbiAgICAgIGF3YWl0IHRoaXMud3JpdGVTZXF1ZW5jZVRvQ29sbGVjdGlvbnMoY3R4LCBzZXFNb2RlbCwgY29sbGVjdGlvbnMpO1xuICAgICAgY3R4LmNhY2hlLnB1dChuYW1lIGFzIHN0cmluZywgc2VxTW9kZWwuY3VycmVudCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHVwc2VydFB1YmxpYyA9IGFzeW5jIChuZXh0OiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnJlcG8udXBkYXRlKFxuICAgICAgICAgIG5ldyBTZXF1ZW5jZU1vZGVsKHsgaWQ6IG5hbWUsIGN1cnJlbnQ6IG5leHQgfSksXG4gICAgICAgICAgY3R4XG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOb3RGb3VuZEVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucmVwby5jcmVhdGUoXG4gICAgICAgICAgICBuZXcgU2VxdWVuY2VNb2RlbCh7IGlkOiBuYW1lLCBjdXJyZW50OiBuZXh0IH0pLFxuICAgICAgICAgICAgY3R4XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBleGlzdGluZyA9IGF3YWl0IHJlYWRFeGlzdGluZygpO1xuICAgIGlmICghZXhpc3RpbmcpIHtcbiAgICAgIGNvbnN0IHNlcU1vZGVsID0gbmV3IFNlcXVlbmNlTW9kZWwoeyBpZDogbmFtZSwgY3VycmVudDogZGVzaXJlZCB9KTtcbiAgICAgIGlmIChpc0Z1bGx5U2VncmVnYXRlZCkge1xuICAgICAgICBhd2FpdCB3cml0ZVByaXZhdGUoc2VxTW9kZWwsIGFkYXB0ZXJNZXRhIS5jb2xsZWN0aW9ucyk7XG4gICAgICAgIHJldHVybiBkZXNpcmVkO1xuICAgICAgfVxuICAgICAgY29uc3QgY3JlYXRlZCA9IGF3YWl0IHVwc2VydFB1YmxpYyhkZXNpcmVkKTtcbiAgICAgIGF3YWl0IHRoaXMucmVwbGljYXRlVG9TZWdyZWdhdGVkQ29sbGVjdGlvbnMoY3R4LCBjcmVhdGVkKTtcbiAgICAgIHJldHVybiB0aGlzLnBhcnNlKGNyZWF0ZWQuY3VycmVudCBhcyBhbnkpO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnBhcnNlKGV4aXN0aW5nLmN1cnJlbnQgYXMgYW55KTtcbiAgICBpZiAoIWdyZWF0ZXJUaGFuKGRlc2lyZWQsIGN1cnJlbnQpKSB7XG4gICAgICByZXR1cm4gY3VycmVudDtcbiAgICB9XG5cbiAgICBjb25zdCBzZXFNb2RlbCA9IG5ldyBTZXF1ZW5jZU1vZGVsKHsgaWQ6IG5hbWUsIGN1cnJlbnQ6IGRlc2lyZWQgfSk7XG4gICAgaWYgKGlzRnVsbHlTZWdyZWdhdGVkKSB7XG4gICAgICBhd2FpdCB3cml0ZVByaXZhdGUoc2VxTW9kZWwsIGFkYXB0ZXJNZXRhIS5jb2xsZWN0aW9ucyk7XG4gICAgICBsb2cuZGVidWcoXG4gICAgICAgIGBTZXF1ZW5jZS5lbnN1cmVBdExlYXN0IChwcml2YXRlLW9ubHkpICR7bmFtZX0gY3VycmVudD0ke2N1cnJlbnQgYXMgYW55fSBkZXNpcmVkPSR7ZGVzaXJlZCBhcyBhbnl9YFxuICAgICAgKTtcbiAgICAgIHJldHVybiBkZXNpcmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB1cHNlcnRQdWJsaWMoZGVzaXJlZCk7XG4gICAgYXdhaXQgdGhpcy5yZXBsaWNhdGVUb1NlZ3JlZ2F0ZWRDb2xsZWN0aW9ucyhjdHgsIHVwZGF0ZWQpO1xuICAgIHJldHVybiB0aGlzLnBhcnNlKHVwZGF0ZWQuY3VycmVudCBhcyBhbnkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXBsaWNhdGVzIHRoZSBzZXF1ZW5jZSB0byBhbGwgc2VncmVnYXRlZCBjb2xsZWN0aW9uc1xuICAgKiBAc3VtbWFyeSBXaGVuIGEgbW9kZWwgdXNlcyBwcml2YXRlRGF0YSBvciBzaGFyZWREYXRhIGRlY29yYXRvcnMsIGl0cyBzZXF1ZW5jZSBtdXN0IGJlXG4gICAqIHJlcGxpY2F0ZWQgdG8gYWxsIGNvbGxlY3Rpb25zIHRoZSBtb2RlbCBpcyBzdG9yZWQgaW4uIFRoaXMgZW5zdXJlcyBjbGllbnRzIHdpdGggYWNjZXNzXG4gICAqIHRvIG9ubHkgb25lIGNvbGxlY3Rpb24gY2FuIHN0aWxsIHJlYWQgdGhlIG1vZGVsJ3Mgc2VxdWVuY2UsIHdoaWxlIGNsaWVudHMgd2l0aG91dFxuICAgKiBhY2Nlc3MgdG8gYW55IGNvbGxlY3Rpb24gd29uJ3Qgc2VlIHRoZSBzZXF1ZW5jZSBvbiB0aGUgcHVibGljIGNoYWluLlxuICAgKiBAcGFyYW0ge0NvbnRleHQ8YW55Pn0gY3R4IC0gVGhlIGV4ZWN1dGlvbiBjb250ZXh0XG4gICAqIEBwYXJhbSB7U2VxdWVuY2VNb2RlbH0gc2VxIC0gVGhlIHNlcXVlbmNlIG1vZGVsIHRvIHJlcGxpY2F0ZVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyB3cml0ZVNlcXVlbmNlVG9Db2xsZWN0aW9ucyhcbiAgICBjdHg6IENvbnRleHQ8YW55PixcbiAgICBzZXE6IFNlcXVlbmNlTW9kZWwsXG4gICAgY29sbGVjdGlvbnM6IHN0cmluZ1tdXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGxvZyA9IGN0eC5sb2dnZXIuZm9yKHRoaXMud3JpdGVTZXF1ZW5jZVRvQ29sbGVjdGlvbnMpO1xuICAgIGNvbnN0IGFkYXB0ZXIgPSB0aGlzLmFkYXB0ZXIgYXMgdW5rbm93biBhcyBGYWJyaWNDb250cmFjdEFkYXB0ZXI7XG4gICAgY29uc3QgdGFibGVOYW1lID0gTW9kZWwudGFibGVOYW1lKFNlcXVlbmNlTW9kZWwgYXMgYW55KTtcbiAgICBjb25zdCBjb21wb3NlZEtleSA9IChjdHggYXMgRmFicmljQ29udHJhY3RDb250ZXh0KS5zdHViLmNyZWF0ZUNvbXBvc2l0ZUtleShcbiAgICAgIHRhYmxlTmFtZSxcbiAgICAgIFtTdHJpbmcoc2VxLmlkKV1cbiAgICApO1xuXG4gICAgZm9yIChjb25zdCBjb2xsZWN0aW9uIG9mIGNvbGxlY3Rpb25zKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwcml2YXRlQWRhcHRlciA9IGFkYXB0ZXIuZm9yUHJpdmF0ZShjb2xsZWN0aW9uKTtcbiAgICAgICAgY29uc3QgcmVjb3JkID0ge1xuICAgICAgICAgIFtDb3VjaERCS2V5cy5UQUJMRV06IHRhYmxlTmFtZSxcbiAgICAgICAgICBpZDogc2VxLmlkLFxuICAgICAgICAgIGN1cnJlbnQ6IHNlcS5jdXJyZW50LFxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCBwcml2YXRlQWRhcHRlcltcInB1dFN0YXRlXCJdKGNvbXBvc2VkS2V5LCByZWNvcmQsIGN0eCBhcyBhbnkpO1xuICAgICAgICBsb2cuZGVidWcoYFNlcXVlbmNlICR7c2VxLmlkfSB3cml0dGVuIHRvIGNvbGxlY3Rpb24gJHtjb2xsZWN0aW9ufWApO1xuICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICBsb2cud2FybihcbiAgICAgICAgICBgRmFpbGVkIHRvIHdyaXRlIHNlcXVlbmNlICR7c2VxLmlkfSB0byBjb2xsZWN0aW9uICR7Y29sbGVjdGlvbn06ICR7ZX1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXBsaWNhdGVUb1NlZ3JlZ2F0ZWRDb2xsZWN0aW9ucyhcbiAgICBjdHg6IENvbnRleHQ8YW55PixcbiAgICBzZXE6IFNlcXVlbmNlTW9kZWxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gVXNlIGFkYXB0ZXIgbWV0YWRhdGEgaW5zdGVhZCBvZiBjdHguZ2V0UmVhZENvbGxlY3Rpb25zKCkgYmVjYXVzZSB0aGUgU2VxdWVuY2VcbiAgICAvLyBjcmVhdGVzIGl0cyBvd24gY29udGV4dCB2aWEgbG9nQ3R4LCBsb3NpbmcgY29sbGVjdGlvbnMgc2V0IGJ5IGV4dHJhY3RTZWdyZWdhdGVkQ29sbGVjdGlvbnMuXG4gICAgY29uc3QgYWRhcHRlck1ldGEgPSAoY3R4IGFzIEZhYnJpY0NvbnRyYWN0Q29udGV4dCkuZ2V0U2VxdWVuY2VTZWdyZWdhdGlvbihcbiAgICAgIFN0cmluZyhzZXEuaWQpXG4gICAgKTtcblxuICAgIGlmICghYWRhcHRlck1ldGEgfHwgIWFkYXB0ZXJNZXRhLmNvbGxlY3Rpb25zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIE9ubHkgcmVwbGljYXRlIGZvciBub24tZnVsbHktc2VncmVnYXRlZCBtb2RlbHMgKGZ1bGx5IHNlZ3JlZ2F0ZWQgaXMgaGFuZGxlZCBzZXBhcmF0ZWx5KVxuICAgIGlmIChhZGFwdGVyTWV0YS5mdWxseVNlZ3JlZ2F0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsb2cgPSBjdHgubG9nZ2VyLmZvcih0aGlzLnJlcGxpY2F0ZVRvU2VncmVnYXRlZENvbGxlY3Rpb25zKTtcbiAgICBsb2cuaW5mbyhcbiAgICAgIGBSZXBsaWNhdGluZyBzZXF1ZW5jZSAke3NlcS5pZH0gdG8gJHthZGFwdGVyTWV0YS5jb2xsZWN0aW9ucy5sZW5ndGh9IHNlZ3JlZ2F0ZWQgY29sbGVjdGlvbnM6ICR7YWRhcHRlck1ldGEuY29sbGVjdGlvbnMuam9pbihcIiwgXCIpfWBcbiAgICApO1xuXG4gICAgYXdhaXQgdGhpcy53cml0ZVNlcXVlbmNlVG9Db2xsZWN0aW9ucyhjdHgsIHNlcSwgYWRhcHRlck1ldGEuY29sbGVjdGlvbnMpO1xuICB9XG59XG4iXX0=
|
|
@@ -173,4 +173,4 @@ export class FabricStatement extends CouchDBStatement {
|
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
175
|
}
|
|
176
|
-
//# sourceMappingURL=FabricContractStatement.js.map
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmFicmljQ29udHJhY3RTdGF0ZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udHJhY3RzL0ZhYnJpY0NvbnRyYWN0U3RhdGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxvQkFBb0IsRUFDcEIsV0FBVyxFQUNYLGVBQWUsR0FLaEIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUVMLFNBQVMsRUFJVCxVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFeEQsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixxQkFBcUIsRUFDckIsWUFBWSxHQUNiLGtDQUE2QjtBQUU5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSCxNQUFNLE9BQU8sZUFBb0MsU0FBUSxnQkFJeEQ7SUFDQyxZQUNFLE9BQXlELEVBQ3pELFNBQWlDO1FBRWpDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVrQixLQUFLLENBQUMsZUFBZSxDQUN0QyxNQUFXLEVBQ1gsR0FBRyxJQUErQztRQUVsRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUN6QixPQUFPLENBQ3FDLENBQUM7UUFDL0MsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLE9BQU8sQ0FBQyxNQUFNO1lBQ2hDLE1BQU0sSUFBSSxhQUFhLENBQ3JCLDhDQUE4QyxNQUFNLEtBQUssSUFBSSxFQUFFLENBQ2hFLENBQUM7UUFDSixPQUFPLEtBQUss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TSxDQUFDO1lBQ25FLENBQUM7WUFDRCxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksVUFBVSxDQUFDLENBQVUsQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb3VjaERCQWRhcHRlcixcbiAgQ291Y2hEQkdyb3VwT3BlcmF0b3IsXG4gIENvdWNoREJLZXlzLFxuICBDb3VjaERCT3BlcmF0b3IsXG4gIENvdWNoREJRdWVyeUxpbWl0LFxuICBNYW5nb09wZXJhdG9yLFxuICBNYW5nb1F1ZXJ5LFxuICBNYW5nb1NlbGVjdG9yLFxufSBmcm9tIFwiQGRlY2FmLXRzL2Zvci1jb3VjaGRiXCI7XG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IEZhYnJpY0NvbnRyYWN0Q29udGV4dCB9IGZyb20gXCIuL0NvbnRyYWN0Q29udGV4dFwiO1xuaW1wb3J0IHsgQ291Y2hEQlN0YXRlbWVudCB9IGZyb20gXCJAZGVjYWYtdHMvZm9yLWNvdWNoZGJcIjtcbmltcG9ydCB7XG4gIEFkYXB0ZXJGbGFncyxcbiAgQ29uZGl0aW9uLFxuICBDb250ZXh0dWFsQXJncyxcbiAgTWF5YmVDb250ZXh0dWFsQXJnLFxuICBPcmRlckRpcmVjdGlvbixcbiAgUXVlcnlFcnJvcixcbn0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHtcbiAgYXBwbHlNaXJyb3JGbGFncyxcbiAgYXBwbHlTZWdyZWdhdGlvbkZsYWdzLFxuICBleHRyYWN0TXNwSWQsXG59IGZyb20gXCIuLi9zaGFyZWQvZGVjb3JhdG9yc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBTdGF0ZW1lbnQgd3JhcHBlciBmb3IgZXhlY3V0aW5nIE1hbmdvIHF1ZXJpZXMgd2l0aGluIEZhYnJpYyBjb250cmFjdHNcbiAqIEBzdW1tYXJ5IEJyaWRnZXMgQ291Y2hEQi1zdHlsZSBxdWVyaWVzIHRvIEZhYnJpYyB2aWEgdGhlIEZhYnJpY0NvbnRyYWN0QWRhcHRlciwgaGFuZGxpbmcgaWRlbnRpdHkgYW5kIHByaW1hcnkga2V5IHByb2plY3Rpb24gd2hlbiBuZWVkZWQuXG4gKiBAdGVtcGxhdGUgTSAtIE1vZGVsIHR5cGUgdGhpcyBzdGF0ZW1lbnQgb3BlcmF0ZXMgb25cbiAqIEB0ZW1wbGF0ZSBSIC0gUmVzdWx0IHR5cGUgcmV0dXJuZWQgYnkgdGhlIHN0YXRlbWVudFxuICogQHBhcmFtIHtGYWJyaWNDb250cmFjdEFkYXB0ZXJ9IGFkYXB0ZXIgLSBUaGUgRmFicmljIGNvbnRyYWN0IGFkYXB0ZXIgdXNlZCBmb3IgcmF3IGV4ZWN1dGlvblxuICogQHBhcmFtIHtGYWJyaWNDb250cmFjdENvbnRleHR9IGN0eCAtIFRoZSBGYWJyaWMgY29udHJhY3QgY29udGV4dCBjYXJyeWluZyBzdHViIGFuZCBpZGVudGl0eVxuICogQHJldHVybiB7dm9pZH1cbiAqIEBjbGFzcyBGYWJyaWNTdGF0ZW1lbnRcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBzdG10ID0gbmV3IEZhYnJpY1N0YXRlbWVudDxNeU1vZGVsLCBNeU1vZGVsW10+KGFkYXB0ZXIsIGN0eCk7XG4gKiBjb25zdCByZXN1bHQgPSBhd2FpdCBzdG10LnJhdzxNeU1vZGVsW10+KHsgc2VsZWN0b3I6IHsgdHlwZTogJ015TW9kZWwnIH0gfSk7XG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IEFwcFxuICogICBwYXJ0aWNpcGFudCBTdGF0ZW1lbnRcbiAqICAgcGFydGljaXBhbnQgQWRhcHRlclxuICogICBwYXJ0aWNpcGFudCBMZWRnZXJcbiAqICAgQXBwLT4+U3RhdGVtZW50OiByYXcoeyBzZWxlY3RvciB9KVxuICogICBTdGF0ZW1lbnQtPj5BZGFwdGVyOiBhZGFwdGVyLnJhdyhtYW5nbywgdHJ1ZSwgY3R4KVxuICogICBBZGFwdGVyLT4+TGVkZ2VyOiBFdmFsdWF0ZSBxdWVyeVxuICogICBBZGFwdGVyLS0+PlN0YXRlbWVudDogcm93c1xuICogICBTdGF0ZW1lbnQtLT4+QXBwOiBtb2RlbHNcbiAqL1xuZXhwb3J0IGNsYXNzIEZhYnJpY1N0YXRlbWVudDxNIGV4dGVuZHMgTW9kZWwsIFI+IGV4dGVuZHMgQ291Y2hEQlN0YXRlbWVudDxcbiAgTSxcbiAgQ291Y2hEQkFkYXB0ZXI8YW55LCB2b2lkLCBGYWJyaWNDb250cmFjdENvbnRleHQ+LFxuICBSXG4+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgYWRhcHRlcjogQ291Y2hEQkFkYXB0ZXI8YW55LCB2b2lkLCBGYWJyaWNDb250cmFjdENvbnRleHQ+LFxuICAgIG92ZXJyaWRlcz86IFBhcnRpYWw8QWRhcHRlckZsYWdzPlxuICApIHtcbiAgICBzdXBlcihhZGFwdGVyKTtcbiAgICBpZiAob3ZlcnJpZGVzKSB7XG4gICAgICB0aGlzLm92ZXJyaWRlcyA9IG92ZXJyaWRlcztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgZXhlY3V0aW9uUHJlZml4KFxuICAgIG1ldGhvZDogYW55LFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxGYWJyaWNDb250cmFjdENvbnRleHQ+XG4gICkge1xuICAgIGNvbnN0IG5ld0FyZ3MgPSBhcmdzLmZpbHRlcihcbiAgICAgIEJvb2xlYW5cbiAgICApIGFzIE1heWJlQ29udGV4dHVhbEFyZzxGYWJyaWNDb250cmFjdENvbnRleHQ+O1xuICAgIGlmIChhcmdzLmxlbmd0aCAhPT0gbmV3QXJncy5sZW5ndGgpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgYFJlY2VpdmVkIGFuIHVuZGVmaW5lZCBpbiB0aGUgcGFnaW5hdG9yIGZvciAke21ldGhvZH06ICR7YXJnc31gXG4gICAgICApO1xuICAgIHJldHVybiBzdXBlci5leGVjdXRpb25QcmVmaXgobWV0aG9kLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBidWlsZCgpOiBNYW5nb1F1ZXJ5IHtcbiAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5idWlsZCk7XG4gICAgdGhpcy5tYW51YWxBZ2dyZWdhdGlvbiA9IHVuZGVmaW5lZDtcbiAgICBjb25zdCBhZ2dyZWdhdGVJbmZvID0gdGhpcy5idWlsZEFnZ3JlZ2F0ZUluZm8oKTtcbiAgICBpZiAoYWdncmVnYXRlSW5mbykge1xuICAgICAgaWYgKHRoaXMuc2hvdWxkVXNlTWFudWFsQWdncmVnYXRpb24oKSkge1xuICAgICAgICB0aGlzLm1hbnVhbEFnZ3JlZ2F0aW9uID0gYWdncmVnYXRlSW5mbztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUFnZ3JlZ2F0ZVF1ZXJ5KGFnZ3JlZ2F0ZUluZm8pO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBzZWxlY3RvcnM6IE1hbmdvU2VsZWN0b3IgPSB7fTtcbiAgICBzZWxlY3RvcnNbQ291Y2hEQktleXMuVEFCTEVdID0ge307XG4gICAgc2VsZWN0b3JzW0NvdWNoREJLZXlzLlRBQkxFXSA9IE1vZGVsLnRhYmxlTmFtZSh0aGlzLmZyb21TZWxlY3Rvcik7XG4gICAgY29uc3QgcXVlcnk6IE1hbmdvUXVlcnkgPSB7IHNlbGVjdG9yOiBzZWxlY3RvcnMgfTtcbiAgICBpZiAodGhpcy5zZWxlY3RTZWxlY3RvcikgcXVlcnkuZmllbGRzID0gdGhpcy5zZWxlY3RTZWxlY3RvciBhcyBzdHJpbmdbXTtcblxuICAgIGlmICh0aGlzLndoZXJlQ29uZGl0aW9uKSB7XG4gICAgICBjb25zdCBjb25kaXRpb246IE1hbmdvU2VsZWN0b3IgPSB0aGlzLnBhcnNlQ29uZGl0aW9uKFxuICAgICAgICBDb25kaXRpb24uYW5kKFxuICAgICAgICAgIHRoaXMud2hlcmVDb25kaXRpb24sXG4gICAgICAgICAgQ29uZGl0aW9uLmF0dHJpYnV0ZTxNPihDb3VjaERCS2V5cy5UQUJMRSBhcyBrZXlvZiBNKS5lcShcbiAgICAgICAgICAgIHF1ZXJ5LnNlbGVjdG9yW0NvdWNoREJLZXlzLlRBQkxFXVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKS5zZWxlY3RvcjtcbiAgICAgIGNvbnN0IHNlbGVjdG9yS2V5cyA9IE9iamVjdC5rZXlzKGNvbmRpdGlvbikgYXMgTWFuZ29PcGVyYXRvcltdO1xuICAgICAgaWYgKFxuICAgICAgICBzZWxlY3RvcktleXMubGVuZ3RoID09PSAxICYmXG4gICAgICAgIE9iamVjdC52YWx1ZXMoQ291Y2hEQkdyb3VwT3BlcmF0b3IpLmluZGV4T2Yoc2VsZWN0b3JLZXlzWzBdKSAhPT0gLTFcbiAgICAgIClcbiAgICAgICAgc3dpdGNoIChzZWxlY3RvcktleXNbMF0pIHtcbiAgICAgICAgICBjYXNlIENvdWNoREJHcm91cE9wZXJhdG9yLkFORDpcbiAgICAgICAgICAgIGNvbmRpdGlvbltDb3VjaERCR3JvdXBPcGVyYXRvci5BTkRdID0gW1xuICAgICAgICAgICAgICAuLi5PYmplY3QudmFsdWVzKFxuICAgICAgICAgICAgICAgIGNvbmRpdGlvbltDb3VjaERCR3JvdXBPcGVyYXRvci5BTkRdIGFzIE1hbmdvU2VsZWN0b3JcbiAgICAgICAgICAgICAgKS5yZWR1Y2UoKGFjY3VtOiBNYW5nb1NlbGVjdG9yW10sIHZhbDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHZhbCk7XG4gICAgICAgICAgICAgICAgaWYgKGtleXMubGVuZ3RoICE9PSAxKVxuICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICBcIlRvbyBtYW55IGtleXMgaW4gcXVlcnkgc2VsZWN0b3IuIHNob3VsZCBiZSBvbmVcIlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBrID0ga2V5c1swXTtcbiAgICAgICAgICAgICAgICBpZiAoayA9PT0gQ291Y2hEQkdyb3VwT3BlcmF0b3IuQU5EKVxuICAgICAgICAgICAgICAgICAgYWNjdW0ucHVzaCguLi4odmFsW2tdIGFzIGFueVtdKSk7XG4gICAgICAgICAgICAgICAgZWxzZSBhY2N1bS5wdXNoKHZhbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjY3VtO1xuICAgICAgICAgICAgICB9LCBbXSksXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgcXVlcnkuc2VsZWN0b3IgPSBjb25kaXRpb247XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIENvdWNoREJHcm91cE9wZXJhdG9yLk9SOiB7XG4gICAgICAgICAgICBjb25zdCBzOiBSZWNvcmQ8YW55LCBhbnk+ID0ge307XG4gICAgICAgICAgICBzW0NvdWNoREJHcm91cE9wZXJhdG9yLkFORF0gPSBbXG4gICAgICAgICAgICAgIGNvbmRpdGlvbixcbiAgICAgICAgICAgICAgLi4uT2JqZWN0LmVudHJpZXMocXVlcnkuc2VsZWN0b3IpLm1hcCgoW2tleSwgdmFsXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPGFueSwgYW55PiA9IHt9O1xuICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdmFsO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHF1ZXJ5LnNlbGVjdG9yID0gcztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBzaG91bGQgYmUgaW1wb3NzaWJsZVwiKTtcbiAgICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGNvbmRpdGlvbikuZm9yRWFjaCgoW2tleSwgdmFsXSkgPT4ge1xuICAgICAgICAgIGlmIChxdWVyeS5zZWxlY3RvcltrZXldKVxuICAgICAgICAgICAgbG9nLndhcm4oXG4gICAgICAgICAgICAgIGBBICR7a2V5fSBxdWVyeSBwYXJhbSBpcyBhYm91dCB0byBiZSBvdmVycmlkZGVuOiAke3F1ZXJ5LnNlbGVjdG9yW2tleV19IGJ5ICR7dmFsfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgcXVlcnkuc2VsZWN0b3Jba2V5XSA9IHZhbDtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3JkZXJCeVNlbGVjdG9ycz8ubGVuZ3RoKSB7XG4gICAgICBxdWVyeS5zb3J0ID0gcXVlcnkuc29ydCB8fCBbXTtcbiAgICAgIHF1ZXJ5LnNlbGVjdG9yID0gcXVlcnkuc2VsZWN0b3IgfHwgKHt9IGFzIE1hbmdvU2VsZWN0b3IpO1xuICAgICAgZm9yIChjb25zdCBbc2VsZWN0b3JLZXksIGRpcmVjdGlvbl0gb2YgdGhpcy5vcmRlckJ5U2VsZWN0b3JzKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdG9yID0gc2VsZWN0b3JLZXkgYXMgc3RyaW5nO1xuICAgICAgICBjb25zdCByZWM6IFJlY29yZDxzdHJpbmcsIE9yZGVyRGlyZWN0aW9uPiA9IHt9O1xuICAgICAgICByZWNbc2VsZWN0b3JdID0gZGlyZWN0aW9uIGFzIE9yZGVyRGlyZWN0aW9uO1xuICAgICAgICAocXVlcnkuc29ydCBhcyBSZWNvcmQ8c3RyaW5nLCBPcmRlckRpcmVjdGlvbj5bXSkucHVzaChyZWMpO1xuICAgICAgICBpZiAoIXF1ZXJ5LnNlbGVjdG9yW3NlbGVjdG9yXSkge1xuICAgICAgICAgIHF1ZXJ5LnNlbGVjdG9yW3NlbGVjdG9yXSA9IHt9IGFzIE1hbmdvU2VsZWN0b3I7XG4gICAgICAgICAgKHF1ZXJ5LnNlbGVjdG9yW3NlbGVjdG9yXSBhcyBNYW5nb1NlbGVjdG9yKVtDb3VjaERCT3BlcmF0b3IuQklHR0VSXSA9XG4gICAgICAgICAgICBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaGFzTWFudWFsQWdncmVnYXRlID0gISF0aGlzLm1hbnVhbEFnZ3JlZ2F0aW9uO1xuICAgIGlmICh0aGlzLmxpbWl0U2VsZWN0b3IpIHtcbiAgICAgIHF1ZXJ5LmxpbWl0ID0gdGhpcy5saW1pdFNlbGVjdG9yO1xuICAgIH0gZWxzZSBpZiAoIWhhc01hbnVhbEFnZ3JlZ2F0ZSkge1xuICAgICAgLy8gbG9nLndhcm4oXG4gICAgICAvLyAgIGBObyBsaW1pdCBzZWxlY3RvciBkZWZpbmVkLiBVc2luZyBkZWZhdWx0IGNvdWNoZGIgbGltaXQgb2YgJHtDb3VjaERCUXVlcnlMaW1pdH1gXG4gICAgICAvLyApO1xuICAgICAgLy8gcXVlcnkubGltaXQgPSBDb3VjaERCUXVlcnlMaW1pdDtcbiAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vZmZzZXRTZWxlY3RvcikgcXVlcnkuc2tpcCA9IHRoaXMub2Zmc2V0U2VsZWN0b3I7XG5cbiAgICByZXR1cm4gcXVlcnk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBleGVjdXRlKFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxGYWJyaWNDb250cmFjdENvbnRleHQ+XG4gICk6IFByb21pc2U8Uj4ge1xuICAgIGNvbnN0IHsgbG9nLCBjdHgsIGN0eEFyZ3MgfSA9IHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMuZXhlY3V0ZSk7XG5cbiAgICBjb25zdCBtc3AgPSBleHRyYWN0TXNwSWQoY3R4LmlkZW50aXR5KTtcblxuICAgIGNvbnN0IHsgcHJpdmF0ZUNvbHMsIHNoYXJlZENvbHMgfSA9IE1vZGVsLmNvbGxlY3Rpb25zRm9yKHRoaXMuZnJvbVNlbGVjdG9yKTtcbiAgICBjb25zdCBjb2xsZWN0aW9ucyA9IFtcbiAgICAgIC4uLm5ldyBTZXQoXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgIFsuLi5wcml2YXRlQ29scywgLi4uc2hhcmVkQ29sc10ubWFwKChjKSA9PlxuICAgICAgICAgICAgdHlwZW9mIGMgPT09IFwic3RyaW5nXCIgPyBjIDogYyh0aGlzLmZyb21TZWxlY3RvciwgbXNwLCBjdHgpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApLFxuICAgIF07XG5cbiAgICBhcHBseVNlZ3JlZ2F0aW9uRmxhZ3MobmV3IHRoaXMuZnJvbVNlbGVjdG9yKCksIGNvbGxlY3Rpb25zLCBjdHgpO1xuICAgIGF3YWl0IGFwcGx5TWlycm9yRmxhZ3ModGhpcy5mcm9tU2VsZWN0b3IsIG1zcCwgY3R4KTtcblxuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5wcmVwYXJlZCkgcmV0dXJuIHRoaXMuZXhlY3V0ZVByZXBhcmVkKC4uLihhcmdzIGFzIGFueSkpO1xuICAgICAgbG9nLnNpbGx5KGBCdWlsZGluZyByYXcgc3RhdGVtZW50Li4uYCk7XG4gICAgICBjb25zdCBxdWVyeSA9IHRoaXMuYnVpbGQoKTtcbiAgICAgIGxvZy5zaWxseShgZXhlY3V0aW5nIHJhdyBzdGF0ZW1lbnRgKTtcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSAoYXdhaXQgdGhpcy5yYXc8Uj4oXG4gICAgICAgIHF1ZXJ5LFxuICAgICAgICB0cnVlLFxuICAgICAgICAuLi4oY3R4QXJncyBhcyBDb250ZXh0dWFsQXJnczxGYWJyaWNDb250cmFjdENvbnRleHQ+KVxuICAgICAgKSkgYXMgdW5rbm93biBhcyBSO1xuICAgICAgaWYgKHRoaXMuaGFzQWdncmVnYXRpb24oKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5zZWxlY3RTZWxlY3Rvcikge1xuICAgICAgICBpZiAodGhpcy5ncm91cEJ5U2VsZWN0b3JzPy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBncm91cGVkID0gdGhpcy5yZXZlcnRHcm91cGVkUmVzdWx0cyhcbiAgICAgICAgICAgIHJlc3VsdHMsXG4gICAgICAgICAgICAocikgPT4gdGhpcy5wcm9jZXNzUmVjb3JkKHIsIGN0eClcbiAgICAgICAgICApIGFzIFI7XG4gICAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmFwcGx5QWZ0ZXJIYW5kbGVyc1RvUmVzdWx0KGdyb3VwZWQsIGN0eCkpIGFzIFI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0cykpIHtcbiAgICAgICAgICBjb25zdCBtYXBwZWQgPSByZXN1bHRzLm1hcCgocikgPT4gdGhpcy5wcm9jZXNzUmVjb3JkKHIsIGN0eCkpIGFzIHVua25vd24gYXMgUjtcbiAgICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMuYXBwbHlBZnRlckhhbmRsZXJzVG9SZXN1bHQobWFwcGVkLCBjdHgpKSBhcyBSO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNpbmdsZSA9IHRoaXMucHJvY2Vzc1JlY29yZChyZXN1bHRzLCBjdHgpIGFzIHVua25vd24gYXMgUjtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmFwcGx5QWZ0ZXJIYW5kbGVyc1RvUmVzdWx0KHNpbmdsZSwgY3R4KSkgYXMgUjtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKGUgYXMgRXJyb3IpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Context as Ctx, Contract } from "fabric-contract-api";
|
|
2
|
+
import { MaybeContextualArg, MethodOrOperation } from "@decaf-ts/core";
|
|
3
|
+
import { FabricContextualizedArgs, FabricContractAdapter } from "./ContractAdapter";
|
|
4
|
+
import { healthcheck } from "../shared/index";
|
|
5
|
+
import { FabricContractContext } from "./ContractContext";
|
|
6
|
+
export declare class MigrationContract extends Contract {
|
|
7
|
+
private _adapter?;
|
|
8
|
+
protected initialized: boolean;
|
|
9
|
+
constructor();
|
|
10
|
+
protected get adapter(): FabricContractAdapter;
|
|
11
|
+
migrate(context: Ctx, reference: string, migrationArgs?: string): Promise<void>;
|
|
12
|
+
protected getRegisteredMigrations(context: FabricContractContext): Array<{
|
|
13
|
+
class: any;
|
|
14
|
+
reference: string;
|
|
15
|
+
flavour: string;
|
|
16
|
+
}>;
|
|
17
|
+
protected init(ctx: Ctx | FabricContractContext): Promise<void>;
|
|
18
|
+
healthcheck(ctx: Ctx | FabricContractContext): Promise<string | healthcheck>;
|
|
19
|
+
protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<FabricContractContext, ARGS>, operation: METHOD): FabricContextualizedArgs<ARGS, METHOD extends string ? true : false>;
|
|
20
|
+
protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<FabricContractContext, ARGS>, operation: METHOD, allowCreate: false): FabricContextualizedArgs<ARGS, METHOD extends string ? true : false>;
|
|
21
|
+
protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<FabricContractContext, ARGS>, operation: METHOD, allowCreate: true): Promise<FabricContextualizedArgs<ARGS, METHOD extends string ? true : false>>;
|
|
22
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var MigrationContract_1;
|
|
11
|
+
import { Context as Ctx, Contract, Info, Transaction, } from "fabric-contract-api";
|
|
12
|
+
import { Metadata } from "@decaf-ts/decoration";
|
|
13
|
+
import { Adapter, MigrationError, PersistenceKeys, } from "@decaf-ts/core";
|
|
14
|
+
import { FabricContractAdapter, } from "./ContractAdapter.js";
|
|
15
|
+
import { FabricFlavour, MissingContextError, } from "./../shared/index.js";
|
|
16
|
+
import { InternalError } from "@decaf-ts/db-decorators";
|
|
17
|
+
import { VERSION, PACKAGE_NAME } from "./../version.js";
|
|
18
|
+
let MigrationContract = MigrationContract_1 = class MigrationContract extends Contract {
|
|
19
|
+
constructor() {
|
|
20
|
+
super(MigrationContract_1.name);
|
|
21
|
+
this.initialized = false;
|
|
22
|
+
}
|
|
23
|
+
get adapter() {
|
|
24
|
+
if (!this._adapter) {
|
|
25
|
+
try {
|
|
26
|
+
this._adapter = Adapter.get(FabricFlavour);
|
|
27
|
+
if (!this._adapter)
|
|
28
|
+
throw new InternalError(`failed to load adapter. instantiation`);
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
30
|
+
}
|
|
31
|
+
catch (e) {
|
|
32
|
+
try {
|
|
33
|
+
this._adapter = new FabricContractAdapter();
|
|
34
|
+
}
|
|
35
|
+
catch (e) {
|
|
36
|
+
throw new InternalError(`Failed to instantiate adapter: ${e}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return this._adapter;
|
|
41
|
+
}
|
|
42
|
+
async migrate(context, reference, migrationArgs) {
|
|
43
|
+
let argz = [];
|
|
44
|
+
if (migrationArgs) {
|
|
45
|
+
argz = JSON.parse(migrationArgs);
|
|
46
|
+
if (!Array.isArray(argz)) {
|
|
47
|
+
throw new InternalError("Migration arguments must be an array");
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const { log, ctx, ctxArgs } = (await this.logCtx([...argz, context], PersistenceKeys.MIGRATION, true)).for(this.migrate);
|
|
51
|
+
const migrations = this.getRegisteredMigrations(ctx);
|
|
52
|
+
const migrationMeta = migrations.find((m) => m.reference === reference);
|
|
53
|
+
if (!migrationMeta) {
|
|
54
|
+
throw new InternalError(`Migration ${reference} not found`);
|
|
55
|
+
}
|
|
56
|
+
log.verbose(`migration ${reference} found`);
|
|
57
|
+
const MigrationClass = migrationMeta.class;
|
|
58
|
+
const m = new MigrationClass();
|
|
59
|
+
// For Fabric, use the context as the query runner
|
|
60
|
+
const qr = ctx;
|
|
61
|
+
try {
|
|
62
|
+
log.verbose(`migration ${reference} up`);
|
|
63
|
+
await m.up(qr, this.adapter, ...ctxArgs);
|
|
64
|
+
}
|
|
65
|
+
catch (e) {
|
|
66
|
+
throw new MigrationError(`failed to initialize migration ${m.reference}: ${e}`);
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
log.verbose(`migration ${reference} migrate`);
|
|
70
|
+
await m.migrate(qr, this.adapter, ...ctxArgs);
|
|
71
|
+
}
|
|
72
|
+
catch (e) {
|
|
73
|
+
throw new MigrationError(`failed to migrate ${m.reference}: ${e}`);
|
|
74
|
+
}
|
|
75
|
+
try {
|
|
76
|
+
log.verbose(`migration ${reference} down`);
|
|
77
|
+
await m.down(qr, this.adapter, ...ctxArgs);
|
|
78
|
+
}
|
|
79
|
+
catch (e) {
|
|
80
|
+
throw new MigrationError(`failed to conclude migration ${m.reference}: ${e}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
getRegisteredMigrations(context) {
|
|
84
|
+
const migrations = [];
|
|
85
|
+
const migrationList = Metadata.migrations();
|
|
86
|
+
for (const [name, MigrationClass] of migrationList) {
|
|
87
|
+
const meta = Metadata.get(MigrationClass, PersistenceKeys.MIGRATION);
|
|
88
|
+
if (!meta)
|
|
89
|
+
continue;
|
|
90
|
+
if (meta.flavour !== FabricFlavour)
|
|
91
|
+
continue;
|
|
92
|
+
migrations.push({
|
|
93
|
+
class: MigrationClass,
|
|
94
|
+
reference: meta.reference,
|
|
95
|
+
flavour: meta.flavour,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
return migrations;
|
|
99
|
+
}
|
|
100
|
+
async init(ctx) {
|
|
101
|
+
const { log } = (await this.logCtx([ctx], PersistenceKeys.INITIALIZATION, true)).for(this.init);
|
|
102
|
+
log.info(`Running contract ${this.getName()} initialization...`);
|
|
103
|
+
this.initialized = true;
|
|
104
|
+
log.info(`Contract initialization completed.`);
|
|
105
|
+
}
|
|
106
|
+
async healthcheck(ctx) {
|
|
107
|
+
const { log } = (await this.logCtx([ctx], "healthcheck", true)).for(this.healthcheck);
|
|
108
|
+
log.info(`Running Healthcheck: ${this.initialized}...`);
|
|
109
|
+
return {
|
|
110
|
+
healthcheck: this.initialized,
|
|
111
|
+
version: VERSION,
|
|
112
|
+
package: PACKAGE_NAME,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
logCtx(args, operation, allowCreate = false) {
|
|
116
|
+
const ctx = args.pop();
|
|
117
|
+
if (!ctx || !ctx.stub) {
|
|
118
|
+
throw new MissingContextError(`No valid context provided...`);
|
|
119
|
+
}
|
|
120
|
+
const contextualized = this.adapter["logCtx"]([undefined, ...args], operation, allowCreate, ctx);
|
|
121
|
+
function squashArgs(ctx) {
|
|
122
|
+
ctx.ctxArgs.shift(); // removes added model to args
|
|
123
|
+
return ctx;
|
|
124
|
+
}
|
|
125
|
+
if (!(contextualized instanceof Promise))
|
|
126
|
+
return squashArgs(contextualized);
|
|
127
|
+
return contextualized.then(squashArgs);
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
__decorate([
|
|
131
|
+
Transaction(),
|
|
132
|
+
__metadata("design:type", Function),
|
|
133
|
+
__metadata("design:paramtypes", [Ctx, String, String]),
|
|
134
|
+
__metadata("design:returntype", Promise)
|
|
135
|
+
], MigrationContract.prototype, "migrate", null);
|
|
136
|
+
MigrationContract = MigrationContract_1 = __decorate([
|
|
137
|
+
Info({
|
|
138
|
+
title: "MigrationContract",
|
|
139
|
+
description: "Contract for managing data migrations",
|
|
140
|
+
}),
|
|
141
|
+
__metadata("design:paramtypes", [])
|
|
142
|
+
], MigrationContract);
|
|
143
|
+
export { MigrationContract };
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uQ29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udHJhY3RzL01pZ3JhdGlvbkNvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsT0FBTyxJQUFJLEdBQUcsRUFDZCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFdBQVcsR0FDWixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBZSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsT0FBTyxFQUdQLGNBQWMsRUFDZCxlQUFlLEdBQ2hCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUVMLHFCQUFxQixHQUN0Qiw2QkFBMEI7QUFDM0IsT0FBTyxFQUNMLGFBQWEsRUFFYixtQkFBbUIsR0FDcEIsNkJBQXdCO0FBQ3pCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSx3QkFBbUI7QUFNNUMsSUFBTSxpQkFBaUIseUJBQXZCLE1BQU0saUJBQWtCLFNBQVEsUUFBUTtJQUs3QztRQUNFLEtBQUssQ0FBQyxtQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUh0QixnQkFBVyxHQUFZLEtBQUssQ0FBQztJQUl2QyxDQUFDO0lBRUQsSUFBYyxPQUFPO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDO2dCQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQVEsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO29CQUNoQixNQUFNLElBQUksYUFBYSxDQUFDLHVDQUF1QyxDQUFDLENBQUM7Z0JBQ25FLDZEQUE2RDtZQUMvRCxDQUFDO1lBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDO29CQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO2dCQUM5QyxDQUFDO2dCQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7b0JBQ3BCLE1BQU0sSUFBSSxhQUFhLENBQUMsa0NBQWtDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2pFLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBR0ssQUFBTixLQUFLLENBQUMsT0FBTyxDQUNYLE9BQVksRUFDWixTQUFpQixFQUNqQixhQUFzQjtRQUV0QixJQUFJLElBQUksR0FBVSxFQUFFLENBQUM7UUFDckIsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQVEsQ0FBQztZQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN6QixNQUFNLElBQUksYUFBYSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDbEUsQ0FBQztRQUNILENBQUM7UUFDRCxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUM1QixNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRSxlQUFlLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUN2RSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFcEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXJELE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUM7UUFFeEUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25CLE1BQU0sSUFBSSxhQUFhLENBQUMsYUFBYSxTQUFTLFlBQVksQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsU0FBUyxRQUFRLENBQUMsQ0FBQztRQUM1QyxNQUFNLGNBQWMsR0FDbEIsYUFBYSxDQUFDLEtBQUssQ0FBQztRQUN0QixNQUFNLENBQUMsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQy9CLGtEQUFrRDtRQUNsRCxNQUFNLEVBQUUsR0FBUSxHQUFHLENBQUM7UUFFcEIsSUFBSSxDQUFDO1lBQ0gsR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLFNBQVMsS0FBSyxDQUFDLENBQUM7WUFDekMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLGNBQWMsQ0FDdEIsa0NBQWtDLENBQUMsQ0FBQyxTQUFTLEtBQUssQ0FBQyxFQUFFLENBQ3RELENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxDQUFDO1lBQ0gsR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLFNBQVMsVUFBVSxDQUFDLENBQUM7WUFDOUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLFNBQVMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFDRCxJQUFJLENBQUM7WUFDSCxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsU0FBUyxPQUFPLENBQUMsQ0FBQztZQUMzQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksY0FBYyxDQUN0QixnQ0FBZ0MsQ0FBQyxDQUFDLFNBQVMsS0FBSyxDQUFDLEVBQUUsQ0FDcEQsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRVMsdUJBQXVCLENBQUMsT0FBOEI7UUFLOUQsTUFBTSxVQUFVLEdBSVgsRUFBRSxDQUFDO1FBRVIsTUFBTSxhQUFhLEdBQUksUUFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVyRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLElBQUksYUFBYSxFQUFFLENBQUM7WUFDbkQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXJFLElBQUksQ0FBQyxJQUFJO2dCQUFFLFNBQVM7WUFFcEIsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLGFBQWE7Z0JBQUUsU0FBUztZQUU3QyxVQUFVLENBQUMsSUFBSSxDQUFDO2dCQUNkLEtBQUssRUFBRSxjQUFjO2dCQUNyQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7Z0JBQ3pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTzthQUN0QixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVTLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBZ0M7UUFDbkQsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQ2QsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsZUFBZSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FDL0QsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pCLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxPQUFPLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixHQUFHLENBQUMsSUFBSSxDQUFDLG9DQUFvQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQ2YsR0FBZ0M7UUFFaEMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUNqRSxJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO1FBQ0YsR0FBRyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsSUFBSSxDQUFDLFdBQVcsS0FBSyxDQUFDLENBQUM7UUFDeEQsT0FBTztZQUNMLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixPQUFPLEVBQUUsT0FBTztZQUNoQixPQUFPLEVBQUUsWUFBWTtTQUN0QixDQUFDO0lBQ0osQ0FBQztJQTJCUyxNQUFNLENBSWQsSUFBcUQsRUFDckQsU0FBaUIsRUFDakIsY0FBdUIsS0FBSztRQU01QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksbUJBQW1CLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FDM0MsQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQVEsRUFDM0IsU0FBUyxFQUNULFdBQWtCLEVBQ2xCLEdBQUcsQ0FLQSxDQUFDO1FBQ04sU0FBUyxVQUFVLENBQUMsR0FBNkI7WUFDL0MsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLDhCQUE4QjtZQUNuRCxPQUFPLEdBQVUsQ0FBQztRQUNwQixDQUFDO1FBRUQsSUFBSSxDQUFDLENBQUMsY0FBYyxZQUFZLE9BQU8sQ0FBQztZQUFFLE9BQU8sVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVFLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6QyxDQUFDO0NBQ0YsQ0FBQTtBQXZLTztJQURMLFdBQVcsRUFBRTs7cUNBRUgsR0FBRzs7Z0RBb0RiO0FBakZVLGlCQUFpQjtJQUo3QixJQUFJLENBQUM7UUFDSixLQUFLLEVBQUUsbUJBQW1CO1FBQzFCLFdBQVcsRUFBRSx1Q0FBdUM7S0FDckQsQ0FBQzs7R0FDVyxpQkFBaUIsQ0FtTTdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29udGV4dCBhcyBDdHgsXG4gIENvbnRyYWN0LFxuICBJbmZvLFxuICBUcmFuc2FjdGlvbixcbn0gZnJvbSBcImZhYnJpYy1jb250cmFjdC1hcGlcIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yLCBNZXRhZGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHtcbiAgQWRhcHRlcixcbiAgTWF5YmVDb250ZXh0dWFsQXJnLFxuICBNZXRob2RPck9wZXJhdGlvbixcbiAgTWlncmF0aW9uRXJyb3IsXG4gIFBlcnNpc3RlbmNlS2V5cyxcbn0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBNaWdyYXRpb24gfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmUvbWlncmF0aW9uc1wiO1xuaW1wb3J0IHtcbiAgRmFicmljQ29udGV4dHVhbGl6ZWRBcmdzLFxuICBGYWJyaWNDb250cmFjdEFkYXB0ZXIsXG59IGZyb20gXCIuL0NvbnRyYWN0QWRhcHRlclwiO1xuaW1wb3J0IHtcbiAgRmFicmljRmxhdm91cixcbiAgaGVhbHRoY2hlY2ssXG4gIE1pc3NpbmdDb250ZXh0RXJyb3IsXG59IGZyb20gXCIuLi9zaGFyZWQvaW5kZXhcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IEZhYnJpY0NvbnRyYWN0Q29udGV4dCB9IGZyb20gXCIuL0NvbnRyYWN0Q29udGV4dFwiO1xuaW1wb3J0IHsgVkVSU0lPTiwgUEFDS0FHRV9OQU1FIH0gZnJvbSBcIi4uL3ZlcnNpb25cIjtcblxuQEluZm8oe1xuICB0aXRsZTogXCJNaWdyYXRpb25Db250cmFjdFwiLFxuICBkZXNjcmlwdGlvbjogXCJDb250cmFjdCBmb3IgbWFuYWdpbmcgZGF0YSBtaWdyYXRpb25zXCIsXG59KVxuZXhwb3J0IGNsYXNzIE1pZ3JhdGlvbkNvbnRyYWN0IGV4dGVuZHMgQ29udHJhY3Qge1xuICBwcml2YXRlIF9hZGFwdGVyPzogRmFicmljQ29udHJhY3RBZGFwdGVyO1xuXG4gIHByb3RlY3RlZCBpbml0aWFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKE1pZ3JhdGlvbkNvbnRyYWN0Lm5hbWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBhZGFwdGVyKCkge1xuICAgIGlmICghdGhpcy5fYWRhcHRlcikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5fYWRhcHRlciA9IEFkYXB0ZXIuZ2V0KEZhYnJpY0ZsYXZvdXIpIGFzIGFueTtcbiAgICAgICAgaWYgKCF0aGlzLl9hZGFwdGVyKVxuICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBmYWlsZWQgdG8gbG9hZCBhZGFwdGVyLiBpbnN0YW50aWF0aW9uYCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLl9hZGFwdGVyID0gbmV3IEZhYnJpY0NvbnRyYWN0QWRhcHRlcigpO1xuICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYEZhaWxlZCB0byBpbnN0YW50aWF0ZSBhZGFwdGVyOiAke2V9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXI7XG4gIH1cblxuICBAVHJhbnNhY3Rpb24oKVxuICBhc3luYyBtaWdyYXRlKFxuICAgIGNvbnRleHQ6IEN0eCxcbiAgICByZWZlcmVuY2U6IHN0cmluZyxcbiAgICBtaWdyYXRpb25BcmdzPzogc3RyaW5nXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCBhcmd6OiBhbnlbXSA9IFtdO1xuICAgIGlmIChtaWdyYXRpb25BcmdzKSB7XG4gICAgICBhcmd6ID0gSlNPTi5wYXJzZShtaWdyYXRpb25BcmdzKSBhcyBhbnk7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJneikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJNaWdyYXRpb24gYXJndW1lbnRzIG11c3QgYmUgYW4gYXJyYXlcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHsgbG9nLCBjdHgsIGN0eEFyZ3MgfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KFsuLi5hcmd6LCBjb250ZXh0XSwgUGVyc2lzdGVuY2VLZXlzLk1JR1JBVElPTiwgdHJ1ZSlcbiAgICApLmZvcih0aGlzLm1pZ3JhdGUpO1xuXG4gICAgY29uc3QgbWlncmF0aW9ucyA9IHRoaXMuZ2V0UmVnaXN0ZXJlZE1pZ3JhdGlvbnMoY3R4KTtcblxuICAgIGNvbnN0IG1pZ3JhdGlvbk1ldGEgPSBtaWdyYXRpb25zLmZpbmQoKG0pID0+IG0ucmVmZXJlbmNlID09PSByZWZlcmVuY2UpO1xuXG4gICAgaWYgKCFtaWdyYXRpb25NZXRhKSB7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgTWlncmF0aW9uICR7cmVmZXJlbmNlfSBub3QgZm91bmRgKTtcbiAgICB9XG5cbiAgICBsb2cudmVyYm9zZShgbWlncmF0aW9uICR7cmVmZXJlbmNlfSBmb3VuZGApO1xuICAgIGNvbnN0IE1pZ3JhdGlvbkNsYXNzOiBDb25zdHJ1Y3RvcjxNaWdyYXRpb248YW55LCBhbnk+PiA9XG4gICAgICBtaWdyYXRpb25NZXRhLmNsYXNzO1xuICAgIGNvbnN0IG0gPSBuZXcgTWlncmF0aW9uQ2xhc3MoKTtcbiAgICAvLyBGb3IgRmFicmljLCB1c2UgdGhlIGNvbnRleHQgYXMgdGhlIHF1ZXJ5IHJ1bm5lclxuICAgIGNvbnN0IHFyOiBhbnkgPSBjdHg7XG5cbiAgICB0cnkge1xuICAgICAgbG9nLnZlcmJvc2UoYG1pZ3JhdGlvbiAke3JlZmVyZW5jZX0gdXBgKTtcbiAgICAgIGF3YWl0IG0udXAocXIsIHRoaXMuYWRhcHRlciwgLi4uY3R4QXJncyk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IE1pZ3JhdGlvbkVycm9yKFxuICAgICAgICBgZmFpbGVkIHRvIGluaXRpYWxpemUgbWlncmF0aW9uICR7bS5yZWZlcmVuY2V9OiAke2V9YFxuICAgICAgKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGxvZy52ZXJib3NlKGBtaWdyYXRpb24gJHtyZWZlcmVuY2V9IG1pZ3JhdGVgKTtcbiAgICAgIGF3YWl0IG0ubWlncmF0ZShxciwgdGhpcy5hZGFwdGVyLCAuLi5jdHhBcmdzKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgTWlncmF0aW9uRXJyb3IoYGZhaWxlZCB0byBtaWdyYXRlICR7bS5yZWZlcmVuY2V9OiAke2V9YCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBsb2cudmVyYm9zZShgbWlncmF0aW9uICR7cmVmZXJlbmNlfSBkb3duYCk7XG4gICAgICBhd2FpdCBtLmRvd24ocXIsIHRoaXMuYWRhcHRlciwgLi4uY3R4QXJncyk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IE1pZ3JhdGlvbkVycm9yKFxuICAgICAgICBgZmFpbGVkIHRvIGNvbmNsdWRlIG1pZ3JhdGlvbiAke20ucmVmZXJlbmNlfTogJHtlfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldFJlZ2lzdGVyZWRNaWdyYXRpb25zKGNvbnRleHQ6IEZhYnJpY0NvbnRyYWN0Q29udGV4dCk6IEFycmF5PHtcbiAgICBjbGFzczogYW55O1xuICAgIHJlZmVyZW5jZTogc3RyaW5nO1xuICAgIGZsYXZvdXI6IHN0cmluZztcbiAgfT4ge1xuICAgIGNvbnN0IG1pZ3JhdGlvbnM6IEFycmF5PHtcbiAgICAgIGNsYXNzOiBhbnk7XG4gICAgICByZWZlcmVuY2U6IHN0cmluZztcbiAgICAgIGZsYXZvdXI6IHN0cmluZztcbiAgICB9PiA9IFtdO1xuXG4gICAgY29uc3QgbWlncmF0aW9uTGlzdCA9IChNZXRhZGF0YSBhcyBhbnkpLm1pZ3JhdGlvbnMoKTtcblxuICAgIGZvciAoY29uc3QgW25hbWUsIE1pZ3JhdGlvbkNsYXNzXSBvZiBtaWdyYXRpb25MaXN0KSB7XG4gICAgICBjb25zdCBtZXRhID0gTWV0YWRhdGEuZ2V0KE1pZ3JhdGlvbkNsYXNzLCBQZXJzaXN0ZW5jZUtleXMuTUlHUkFUSU9OKTtcblxuICAgICAgaWYgKCFtZXRhKSBjb250aW51ZTtcblxuICAgICAgaWYgKG1ldGEuZmxhdm91ciAhPT0gRmFicmljRmxhdm91cikgY29udGludWU7XG5cbiAgICAgIG1pZ3JhdGlvbnMucHVzaCh7XG4gICAgICAgIGNsYXNzOiBNaWdyYXRpb25DbGFzcyxcbiAgICAgICAgcmVmZXJlbmNlOiBtZXRhLnJlZmVyZW5jZSxcbiAgICAgICAgZmxhdm91cjogbWV0YS5mbGF2b3VyLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1pZ3JhdGlvbnM7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaW5pdChjdHg6IEN0eCB8IEZhYnJpY0NvbnRyYWN0Q29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgbG9nIH0gPSAoXG4gICAgICBhd2FpdCB0aGlzLmxvZ0N0eChbY3R4XSwgUGVyc2lzdGVuY2VLZXlzLklOSVRJQUxJWkFUSU9OLCB0cnVlKVxuICAgICkuZm9yKHRoaXMuaW5pdCk7XG4gICAgbG9nLmluZm8oYFJ1bm5pbmcgY29udHJhY3QgJHt0aGlzLmdldE5hbWUoKX0gaW5pdGlhbGl6YXRpb24uLi5gKTtcbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICBsb2cuaW5mbyhgQ29udHJhY3QgaW5pdGlhbGl6YXRpb24gY29tcGxldGVkLmApO1xuICB9XG5cbiAgYXN5bmMgaGVhbHRoY2hlY2soXG4gICAgY3R4OiBDdHggfCBGYWJyaWNDb250cmFjdENvbnRleHRcbiAgKTogUHJvbWlzZTxzdHJpbmcgfCBoZWFsdGhjaGVjaz4ge1xuICAgIGNvbnN0IHsgbG9nIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoW2N0eF0sIFwiaGVhbHRoY2hlY2tcIiwgdHJ1ZSkpLmZvcihcbiAgICAgIHRoaXMuaGVhbHRoY2hlY2tcbiAgICApO1xuICAgIGxvZy5pbmZvKGBSdW5uaW5nIEhlYWx0aGNoZWNrOiAke3RoaXMuaW5pdGlhbGl6ZWR9Li4uYCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhlYWx0aGNoZWNrOiB0aGlzLmluaXRpYWxpemVkLFxuICAgICAgdmVyc2lvbjogVkVSU0lPTixcbiAgICAgIHBhY2thZ2U6IFBBQ0tBR0VfTkFNRSxcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGxvZ0N0eDxcbiAgICBBUkdTIGV4dGVuZHMgYW55W10gPSBhbnlbXSxcbiAgICBNRVRIT0QgZXh0ZW5kcyBNZXRob2RPck9wZXJhdGlvbiA9IE1ldGhvZE9yT3BlcmF0aW9uLFxuICA+KFxuICAgIGFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxGYWJyaWNDb250cmFjdENvbnRleHQsIEFSR1M+LFxuICAgIG9wZXJhdGlvbjogTUVUSE9EXG4gICk6IEZhYnJpY0NvbnRleHR1YWxpemVkQXJnczxBUkdTLCBNRVRIT0QgZXh0ZW5kcyBzdHJpbmcgPyB0cnVlIDogZmFsc2U+O1xuICBwcm90ZWN0ZWQgbG9nQ3R4PFxuICAgIEFSR1MgZXh0ZW5kcyBhbnlbXSA9IGFueVtdLFxuICAgIE1FVEhPRCBleHRlbmRzIE1ldGhvZE9yT3BlcmF0aW9uID0gTWV0aG9kT3JPcGVyYXRpb24sXG4gID4oXG4gICAgYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPEZhYnJpY0NvbnRyYWN0Q29udGV4dCwgQVJHUz4sXG4gICAgb3BlcmF0aW9uOiBNRVRIT0QsXG4gICAgYWxsb3dDcmVhdGU6IGZhbHNlXG4gICk6IEZhYnJpY0NvbnRleHR1YWxpemVkQXJnczxBUkdTLCBNRVRIT0QgZXh0ZW5kcyBzdHJpbmcgPyB0cnVlIDogZmFsc2U+O1xuICBwcm90ZWN0ZWQgbG9nQ3R4PFxuICAgIEFSR1MgZXh0ZW5kcyBhbnlbXSA9IGFueVtdLFxuICAgIE1FVEhPRCBleHRlbmRzIE1ldGhvZE9yT3BlcmF0aW9uID0gTWV0aG9kT3JPcGVyYXRpb24sXG4gID4oXG4gICAgYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPEZhYnJpY0NvbnRyYWN0Q29udGV4dCwgQVJHUz4sXG4gICAgb3BlcmF0aW9uOiBNRVRIT0QsXG4gICAgYWxsb3dDcmVhdGU6IHRydWVcbiAgKTogUHJvbWlzZTxcbiAgICBGYWJyaWNDb250ZXh0dWFsaXplZEFyZ3M8QVJHUywgTUVUSE9EIGV4dGVuZHMgc3RyaW5nID8gdHJ1ZSA6IGZhbHNlPlxuICA+O1xuICBwcm90ZWN0ZWQgbG9nQ3R4PFxuICAgIEFSR1MgZXh0ZW5kcyBhbnlbXSA9IGFueVtdLFxuICAgIE1FVEhPRCBleHRlbmRzIE1ldGhvZE9yT3BlcmF0aW9uID0gTWV0aG9kT3JPcGVyYXRpb24sXG4gID4oXG4gICAgYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPEZhYnJpY0NvbnRyYWN0Q29udGV4dCwgQVJHUz4sXG4gICAgb3BlcmF0aW9uOiBNRVRIT0QsXG4gICAgYWxsb3dDcmVhdGU6IGJvb2xlYW4gPSBmYWxzZVxuICApOlxuICAgIHwgUHJvbWlzZTxcbiAgICAgICAgRmFicmljQ29udGV4dHVhbGl6ZWRBcmdzPEFSR1MsIE1FVEhPRCBleHRlbmRzIHN0cmluZyA/IHRydWUgOiBmYWxzZT5cbiAgICAgID5cbiAgICB8IEZhYnJpY0NvbnRleHR1YWxpemVkQXJnczxBUkdTLCBNRVRIT0QgZXh0ZW5kcyBzdHJpbmcgPyB0cnVlIDogZmFsc2U+IHtcbiAgICBjb25zdCBjdHggPSBhcmdzLnBvcCgpO1xuICAgIGlmICghY3R4IHx8ICFjdHguc3R1Yikge1xuICAgICAgdGhyb3cgbmV3IE1pc3NpbmdDb250ZXh0RXJyb3IoYE5vIHZhbGlkIGNvbnRleHQgcHJvdmlkZWQuLi5gKTtcbiAgICB9XG4gICAgY29uc3QgY29udGV4dHVhbGl6ZWQgPSB0aGlzLmFkYXB0ZXJbXCJsb2dDdHhcIl0oXG4gICAgICBbdW5kZWZpbmVkLCAuLi5hcmdzXSBhcyBhbnksXG4gICAgICBvcGVyYXRpb24sXG4gICAgICBhbGxvd0NyZWF0ZSBhcyBhbnksXG4gICAgICBjdHhcbiAgICApIGFzXG4gICAgICB8IEZhYnJpY0NvbnRleHR1YWxpemVkQXJnczxBUkdTLCBNRVRIT0QgZXh0ZW5kcyBzdHJpbmcgPyB0cnVlIDogZmFsc2U+XG4gICAgICB8IFByb21pc2U8XG4gICAgICAgICAgRmFicmljQ29udGV4dHVhbGl6ZWRBcmdzPEFSR1MsIE1FVEhPRCBleHRlbmRzIHN0cmluZyA/IHRydWUgOiBmYWxzZT5cbiAgICAgICAgPjtcbiAgICBmdW5jdGlvbiBzcXVhc2hBcmdzKGN0eDogRmFicmljQ29udGV4dHVhbGl6ZWRBcmdzKSB7XG4gICAgICBjdHguY3R4QXJncy5zaGlmdCgpOyAvLyByZW1vdmVzIGFkZGVkIG1vZGVsIHRvIGFyZ3NcbiAgICAgIHJldHVybiBjdHggYXMgYW55O1xuICAgIH1cblxuICAgIGlmICghKGNvbnRleHR1YWxpemVkIGluc3RhbmNlb2YgUHJvbWlzZSkpIHJldHVybiBzcXVhc2hBcmdzKGNvbnRleHR1YWxpemVkKTtcbiAgICByZXR1cm4gY29udGV4dHVhbGl6ZWQudGhlbihzcXVhc2hBcmdzKTtcbiAgfVxufVxuIl19
|
|
@@ -30,4 +30,4 @@ CustomizableSequence = __decorate([
|
|
|
30
30
|
__metadata("design:paramtypes", [Object])
|
|
31
31
|
], CustomizableSequence);
|
|
32
32
|
export { CustomizableSequence };
|
|
33
|
-
//# sourceMappingURL=
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJpdmF0ZVNlcXVlbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnRyYWN0cy9Qcml2YXRlU2VxdWVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxLQUFLLEVBQWlCLFFBQVEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUk3QyxJQUFNLG9CQUFvQixHQUExQixNQUFNLG9CQUFxQixTQUFRLFNBQVM7SUFnQmpELFlBQVksR0FBb0M7UUFDOUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsQ0FBQztDQUNGLENBQUE7QUFiQztJQURDLEVBQUUsRUFBRTs7Z0RBQ087QUFRWjtJQUZDLFFBQVEsRUFBRTtJQUNWLEtBQUssRUFBRTs7cURBQ2tCO0FBZGYsb0JBQW9CO0lBRmhDLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO0lBQzNCLEtBQUssRUFBRTs7R0FDSyxvQkFBb0IsQ0FtQmhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZU1vZGVsLCBpbmRleCwgcGssIHRhYmxlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBtb2RlbCwgdHlwZSBNb2RlbEFyZywgcmVxdWlyZWQgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBDb3VjaERCS2V5cyB9IGZyb20gXCJAZGVjYWYtdHMvZm9yLWNvdWNoZGJcIjtcblxuQHRhYmxlKENvdWNoREJLZXlzLlNFUVVFTkNFKVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBDdXN0b21pemFibGVTZXF1ZW5jZSBleHRlbmRzIEJhc2VNb2RlbCB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgc2VxdWVuY2VcbiAgICogQHN1bW1hcnkgUHJpbWFyeSBrZXkgZm9yIHRoZSBzZXF1ZW5jZSByZWNvcmRcbiAgICovXG4gIEBwaygpXG4gIGlkITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHNlcXVlbmNlXG4gICAqIEBzdW1tYXJ5IEN1cnJlbnQgc2VxdWVuY2UgdmFsdWUgdGhhdCBjYW4gYmUgaW5jcmVtZW50ZWRcbiAgICovXG4gIEByZXF1aXJlZCgpXG4gIEBpbmRleCgpXG4gIGN1cnJlbnQhOiBzdHJpbmcgfCBudW1iZXI7XG5cbiAgY29uc3RydWN0b3Ioc2VxPzogTW9kZWxBcmc8Q3VzdG9taXphYmxlU2VxdWVuY2U+KSB7XG4gICAgc3VwZXIoc2VxKTtcbiAgfVxufVxuIl19
|
|
@@ -74,4 +74,4 @@ export function onlyMsp(msp) {
|
|
|
74
74
|
export function onlyNamespaceRole(namespace, role) {
|
|
75
75
|
return hlfAllowIf(namespaceHandler, { namespace: namespace, role: role });
|
|
76
76
|
}
|
|
77
|
-
//# sourceMappingURL=
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb250cmFjdHMvYXV0aC9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxrQkFBa0IsR0FFbkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdDQUEyQjtBQUV6RCxNQUFNLFVBQVUsVUFBVSxDQUFDLE9BQW9CLEVBQUUsR0FBRyxJQUFXO0lBQzdELE9BQU8sU0FBUyxPQUFPLENBQUMsR0FBVyxFQUFFLFdBQWlCLEVBQUUsVUFBZ0I7UUFDdEUsVUFBVSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFO1lBQzdDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQW1DLEVBQUUsSUFBSTtnQkFDM0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsT0FBTyxJQUFJLENBQUUsT0FBZSxDQUFDLElBQUk7b0JBQ3BDLE1BQU0sSUFBSSxtQkFBbUIsQ0FDM0IsaUZBQWlGLENBQ2xGLENBQUM7Z0JBQ0osTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLE1BQU0sT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUNyQyxDQUFDLEdBQUcsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUNsQixNQUFNLENBQUMsSUFBSSxFQUNYLElBQUksQ0FDTCxDQUFDO2dCQUNGLElBQUksS0FBZ0MsQ0FBQztnQkFDckMsSUFBSSxDQUFDO29CQUNILEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3pDLENBQUM7Z0JBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztvQkFDcEIs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QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFDRCxFQUE4QixDQUMvQixDQUFDO0lBRUYsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3JFLE9BQU8sSUFBSSxrQkFBa0IsQ0FDM0IsNkJBQTZCLElBQUksZ0NBQWdDLFNBQVMsa0JBQWtCLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUMzTCxDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQUMsR0FBVztJQUNqQyxPQUFPLFVBQVUsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxTQUFpQixFQUFFLElBQWE7SUFDaEUsT0FBTyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzVFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBdXRoSGFuZGxlcixcbiAgQXV0aG9yaXphdGlvbkVycm9yLFxuICBDb250ZXh0dWFsTG9nZ2VkQ2xhc3MsXG59IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgTWlzc2luZ0NvbnRleHRFcnJvciB9IGZyb20gXCIuLi8uLi9zaGFyZWQvaW5kZXhcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGhsZkFsbG93SWYoaGFuZGxlcjogQXV0aEhhbmRsZXIsIC4uLmFyZ3o6IGFueVtdKSB7XG4gIHJldHVybiBmdW5jdGlvbiBhbGxvd0lmKG9iajogb2JqZWN0LCBwcm9wZXJ0eUtleT86IGFueSwgZGVzY3JpcHRvcj86IGFueSkge1xuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBuZXcgUHJveHkoZGVzY3JpcHRvci52YWx1ZSwge1xuICAgICAgYXN5bmMgYXBwbHkodGFyZ2V0LCB0aGlzQXJnOiBDb250ZXh0dWFsTG9nZ2VkQ2xhc3M8YW55PiwgYXJncykge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gYXJncy5zaGlmdCgpO1xuICAgICAgICBpZiAoIWNvbnRleHQgfHwgIShjb250ZXh0IGFzIGFueSkuc3R1YilcbiAgICAgICAgICB0aHJvdyBuZXcgTWlzc2luZ0NvbnRleHRFcnJvcihcbiAgICAgICAgICAgIGBcImludmFsaWQgY29udGV4dCBwcm92aWRlZC4gdGhpcyBkZWNvcmF0b3Igb25seSB3b3JrcyBvbiBmYWJyaWMgY29udHJhY3QgbWV0aG9kc2BcbiAgICAgICAgICApO1xuICAgICAgICBjb25zdCB7IGN0eCB9ID0gYXdhaXQgdGhpc0FyZ1tcImxvZ0N0eFwiXShcbiAgICAgICAgICBbLi4uYXJncywgY29udGV4dF0sXG4gICAgICAgICAgdGFyZ2V0Lm5hbWUsXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuICAgICAgICBsZXQgZXJyb3I6IHZvaWQgfCBBdXRob3JpemF0aW9uRXJyb3I7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZXJyb3IgPSBoYW5kbGVyKC4uLmFyZ3MsIC4uLmFyZ3osIGN0eCk7XG4gICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgIGBGYWlsZWQgdG8gZXhlY3V0ZSBhdXRoIHZhbGlkYXRpb24gaGFuZGxlciBmb3IgJHtvYmouY29uc3RydWN0b3IubmFtZX0uJHtwcm9wZXJ0eUtleX06ICR7ZX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3IpXG4gICAgICAgICAgdGhyb3cgbmV3IEF1dGhvcml6YXRpb25FcnJvcihcbiAgICAgICAgICAgIGBVTkFVVEhPUklaRUQgJHtvYmouY29uc3RydWN0b3IubmFtZX0uJHtwcm9wZXJ0eUtleX06ICR7ZXJyb3J9YFxuICAgICAgICAgICk7XG4gICAgICAgIHJldHVybiB0YXJnZXQuY2FsbCh0aGlzQXJnLCBjdHgsIC4uLmFyZ3MpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1zcEhhbmRsZXIoLi4uYXJnczogYW55W10pIHtcbiAgY29uc3QgY29udGV4dCA9IGFyZ3MucG9wKCk7XG4gIGlmICghY29udGV4dClcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIkNvbnRleHQgaXMgcmVxdWlyZWQgZm9yIG5hbWVzcGFjZSBhdXRob3JpemF0aW9uXCIpO1xuICBjb25zdCBtc3AgPSBhcmdzLnBvcCgpO1xuICBpZiAoIW1zcClcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIk1zcCBpcyByZXF1aXJlZCBmb3IgbmFtZXNwYWNlIGF1dGhvcml6YXRpb25cIik7XG4gIGNvbnN0IHsgc3R1YiB9ID0gY29udGV4dDtcbiAgY29uc3QgeyBtc3BpZCB9ID0gc3R1Yi5nZXRDcmVhdG9yKCk7XG4gIGlmIChtc3BpZCAhPT0gbXNwKVxuICAgIHJldHVybiBuZXcgQXV0aG9yaXphdGlvbkVycm9yKFxuICAgICAgYE5hbWVzcGFjZSBhdXRob3JpemF0aW9uIGZhaWxlZCBmb3IgbXNwOiAke21zcGlkfS4gb25seSAke21zcH0gY2FuIGFjY2Vzc2BcbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZXNwYWNlSGFuZGxlciguLi5hcmdzOiBhbnlbXSkge1xuICBjb25zdCBjb250ZXh0ID0gYXJncy5wb3AoKTtcbiAgaWYgKCFjb250ZXh0KVxuICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiQ29udGV4dCBpcyByZXF1aXJlZCBmb3IgbmFtZXNwYWNlIGF1dGhvcml6YXRpb25cIik7XG4gIGNvbnN0IHsgcm9sZSwgbmFtZXNwYWNlIH0gPSBhcmdzLnBvcCgpO1xuICBpZiAoIW5hbWVzcGFjZSlcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgIFwibmFtZXNwYWNlIGlzIHJlcXVpcmVkIGZvciBuYW1lc3BhY2UgYXV0aG9yaXphdGlvblwiXG4gICAgKTtcbiAgY29uc3QgeyBpZGVudGl0eSB9ID0gY29udGV4dDtcbiAgbGV0IHJvbGVzOiBzdHJpbmdbXTtcbiAgdHJ5IHtcbiAgICByb2xlcyA9IEpTT04ucGFyc2UoaWRlbnRpdHkuZ2V0QXR0cmlidXRlVmFsdWUoXCJyb2xlc1wiKSkgYXMgc3RyaW5nW107XG4gIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICByZXR1cm4gbmV3IEF1dGhvcml6YXRpb25FcnJvcihcbiAgICAgIGBOYW1lc3BhY2UgYXV0aG9yaXphdGlvbiBubyBuYW1lc3BhY2VzIGZvdW5kOiAke2V9YFxuICAgICk7XG4gIH1cblxuICBpZiAoIXJvbGVzKVxuICAgIHJldHVybiBuZXcgQXV0aG9yaXphdGlvbkVycm9yKFxuICAgICAgYG5vIHJvbGVzIG9yIG5hbWVzcGFjZXMgZm91bmQgZm9yIG5hbWVzcGFjZSBhdXRob3JpemF0aW9uYFxuICAgICk7XG5cbiAgY29uc3QgYWxsb3dlZE5hbWVzcGFjZXMgPSBbXG4gICAgLi4ubmV3IFNldChyb2xlcy5tYXAoKHJvbGUpID0+IHJvbGUuc3BsaXQoL1s6LV0vZylbMF0pKSxcbiAgXTtcblxuICBpZiAoIWFsbG93ZWROYW1lc3BhY2VzLmluY2x1ZGVzKG5hbWVzcGFjZSkpXG4gICAgcmV0dXJuIG5ldyBBdXRob3JpemF0aW9uRXJyb3IoXG4gICAgICBgTmFtZXNwYWNlIGF1dGhvcml6YXRpb24gZXJyb3I6ICR7bmFtZXNwYWNlfSByZXF1aXJlZGBcbiAgICApO1xuXG4gIGlmICghcm9sZSkgcmV0dXJuO1xuXG4gIGNvbnN0IGFsbG93ZWRSb2xlcyA9IHJvbGVzLnJlZHVjZShcbiAgICAoYWNjLCBlbCkgPT4ge1xuICAgICAgY29uc3QgW25hbWVzcGFjZSwgcm9sZV0gPSBlbC5zcGxpdCgvWzotXS9nKTtcbiAgICAgIGFjY1tuYW1lc3BhY2VdID0gYWNjW25hbWVzcGFjZV0gfHwgW107XG4gICAgICBhY2NbbmFtZXNwYWNlXS5wdXNoKHJvbGUpO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LFxuICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPlxuICApO1xuXG4gIGlmICghYWxsb3dlZFJvbGVzW25hbWVzcGFjZV0gfHwgIWFsbG93ZWRSb2xlc1tuYW1lc3BhY2VdLmluY2x1ZGVzKHJvbGUpKVxuICAgIHJldHVybiBuZXcgQXV0aG9yaXphdGlvbkVycm9yKFxuICAgICAgYFJvbGUgYXV0aG9yaXphdGlvbiBlcnJvcjogJHtyb2xlfSByb2xlIHJlcXVpcmVkIGZvciBuYW1lc3BhY2UgJHtuYW1lc3BhY2V9LiBSb2xlcyBmb3VuZDogJHthbGxvd2VkUm9sZXNbbmFtZXNwYWNlXSAmJiBhbGxvd2VkUm9sZXNbbmFtZXNwYWNlXS5sZW5ndGggPyBhbGxvd2VkUm9sZXNbbmFtZXNwYWNlXSA6IFwibm9uZVwifWBcbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb25seU1zcChtc3A6IHN0cmluZykge1xuICByZXR1cm4gaGxmQWxsb3dJZihtc3BIYW5kbGVyLCBtc3ApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb25seU5hbWVzcGFjZVJvbGUobmFtZXNwYWNlOiBzdHJpbmcsIHJvbGU/OiBzdHJpbmcpIHtcbiAgcmV0dXJuIGhsZkFsbG93SWYobmFtZXNwYWNlSGFuZGxlciwgeyBuYW1lc3BhY2U6IG5hbWVzcGFjZSwgcm9sZTogcm9sZSB9KTtcbn1cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from "./decorators.js";
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29udHJhY3RzL2F1dGgvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0NBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuIl19
|
|
@@ -409,4 +409,4 @@ export class FabricCrudContract extends Contract {
|
|
|
409
409
|
return contextualized.then(squashArgs);
|
|
410
410
|
}
|
|
411
411
|
}
|
|
412
|
-
//# sourceMappingURL=crud-contract.js.map
|
|
412
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC1jb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb250cmFjdHMvY3J1ZC9jcnVkLWNvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUFnQztBQUNoQyxPQUFPLEVBRUwscUJBQXFCLEdBQ3RCLGdDQUEyQjtBQUM1QixPQUFPLEVBRUwsUUFBUSxFQUNSLE1BQU0sSUFBSSxZQUFZLEdBQ3ZCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLEtBQUssRUFBYyxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFFTCxrQkFBa0IsRUFRbEIsY0FBYyxFQUNkLGVBQWUsRUFFZixxQkFBcUIsRUFDckIsVUFBVSxHQUVYLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGtEQUE2QztBQUsvRSxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGFBQWEsR0FFZCxNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxnQ0FBMkI7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxxQ0FBZ0M7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsMkJBQXNCO0FBRXRELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStDRztBQUNILE1BQU0sT0FBZ0Isa0JBQ3BCLFNBQVEsUUFBUTtJQWFoQjs7T0FFRzthQUNjLFlBQU8sR0FBMEIsSUFBSSxxQkFBcUIsRUFBRSxBQUFyRCxDQUFzRDthQUVwRCxlQUFVLEdBQUcsSUFBSSx1QkFBdUIsRUFBRSxBQUFoQyxDQUFpQztJQU1yRSxJQUFjLElBQUk7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLFVB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LE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FDdEUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xCLEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEdBQWEsRUFBRSxDQUFDLENBQUM7UUFDL0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFjLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FDVCxHQUFnQyxFQUNoQyxHQUFxQixFQUNyQixHQUFHLElBQVc7UUFFZCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQ3ZCLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FDdEUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xCLEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEdBQWEsRUFBRSxDQUFDLENBQUM7UUFDL0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFjLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FDVCxHQUFnQyxFQUNoQyxHQUFxQixFQUNyQixHQUFHLElBQVc7UUFFZCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQ3ZCLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FDdEUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xCLEdBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEdBQWEsRUFBRSxDQUFDLENBQUM7UUFDL0MsT0FBTyxJQUFJLENBQUMsSUFB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QUFHO1lBQ0gsQ0FBQyxHQUFHLEtBQUssVUFBVSxDQUFDLEtBQUs7Z0JBQ3ZCLENBQUMsVUFBVSxDQUFDLFNBQVMsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFDdEQsQ0FBQztZQUNELE1BQU0sSUFBSSxrQkFBa0IsQ0FDMUIsZ0JBQWdCLEdBQUcsNENBQTRDLENBQ2hFLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQTJCUyxNQUFNLENBSWQsSUFBcUQsRUFDckQsU0FBaUIsRUFDakIsY0FBdUIsS0FBSztRQU01QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksbUJBQW1CLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUN6RCxDQUFDLElBQUksQ0FBQyxLQUFZLEVBQUUsR0FBRyxJQUFJLENBQVEsRUFDbkMsU0FBUyxFQUNULFdBQWtCLEVBQ2xCLEdBQUcsQ0FLQSxDQUFDO1FBQ04sU0FBUyxVQUFVLENBQUMsR0FBNkI7WUFDL0MsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLDhCQUE4QjtZQUNuRCxPQUFPLEdBQVUsQ0FBQztRQUNwQixDQUFDO1FBRUQsSUFBSSxDQUFDLENBQUMsY0FBYyxZQUFZLE9BQU8sQ0FBQztZQUFFLE9BQU8sVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVFLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwiLi4vLi4vc2hhcmVkL292ZXJyaWRlc1wiO1xuaW1wb3J0IHtcbiAgRmFicmljQ29udGV4dHVhbGl6ZWRBcmdzLFxuICBGYWJyaWNDb250cmFjdEFkYXB0ZXIsXG59IGZyb20gXCIuLi9Db250cmFjdEFkYXB0ZXJcIjtcbmltcG9ydCB7XG4gIENvbnRleHQgYXMgQ3R4LFxuICBDb250cmFjdCxcbiAgT2JqZWN0IGFzIEZhYnJpY09iamVjdCxcbn0gZnJvbSBcImZhYnJpYy1jb250cmFjdC1hcGlcIjtcbmltcG9ydCB7IE1vZGVsLCBTZXJpYWxpemVyIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHtcbiAgQWxsT3BlcmF0aW9uS2V5cyxcbiAgQXV0aG9yaXphdGlvbkVycm9yLFxuICBDb25kaXRpb24sXG4gIENvbnRleHR1YWxBcmdzLFxuICBEaXJlY3Rpb25MaW1pdE9mZnNldCxcbiAgRXZlbnRJZHMsXG4gIE1heWJlQ29udGV4dHVhbEFyZyxcbiAgTWV0aG9kT3JPcGVyYXRpb24sXG4gIE9ic2VydmVyLFxuICBPcmRlckRpcmVjdGlvbixcbiAgUGVyc2lzdGVuY2VLZXlzLFxuICBQZXJzaXN0ZW5jZU9ic2VydmVyLFxuICBQcmVwYXJlZFN0YXRlbWVudEtleXMsXG4gIFJlcG9zaXRvcnksXG4gIFNlcmlhbGl6ZWRQYWdlLFxufSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IEZhYnJpY0NvbnRyYWN0UmVwb3NpdG9yeSB9IGZyb20gXCIuLi9GYWJyaWNDb250cmFjdFJlcG9zaXRvcnlcIjtcbmltcG9ydCB7IERldGVybWluaXN0aWNTZXJpYWxpemVyIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9EZXRlcm1pbmlzdGljU2VyaWFsaXplclwiO1xuaW1wb3J0IHsgTWFuZ29RdWVyeSB9IGZyb20gXCJAZGVjYWYtdHMvZm9yLWNvdWNoZGJcIjtcbmltcG9ydCB7IENoZWNrYWJsZSwgaGVhbHRoY2hlY2sgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL2ludGVyZmFjZXMvQ2hlY2thYmxlXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHsgRmFicmljQ29udHJhY3RDb250ZXh0IH0gZnJvbSBcIi4uL0NvbnRyYWN0Q29udGV4dFwiO1xuaW1wb3J0IHtcbiAgQnVsa0NydWRPcGVyYXRpb25LZXlzLFxuICBPcGVyYXRpb25LZXlzLFxuICBQcmltYXJ5S2V5VHlwZSxcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBNaXNzaW5nQ29udGV4dEVycm9yIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9pbmRleFwiO1xuaW1wb3J0IHsgZXh0cmFjdE1zcElkIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBQQUNLQUdFX05BTUUsIFZFUlNJT04gfSBmcm9tIFwiLi4vLi4vdmVyc2lvblwiO1xuXG5GYWJyaWNPYmplY3QoKShEYXRlKTtcbi8qKlxuICogQGRlc2NyaXB0aW9uIEJhc2UgY29udHJhY3QgY2xhc3MgZm9yIENSVUQgb3BlcmF0aW9ucyBpbiBGYWJyaWMgY2hhaW5jb2RlXG4gKiBAc3VtbWFyeSBQcm92aWRlcyBzdGFuZGFyZCBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZSBvcGVyYXRpb25zIGZvciBtb2RlbHMgaW4gRmFicmljIGNoYWluY29kZVxuICogQHRlbXBsYXRlIE0gLSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICogQGNsYXNzIEZhYnJpY0NydWRDb250cmFjdFxuICogQGV4dGVuZHMge0NvbnRyYWN0fVxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIERlZmluZSBhIG1vZGVsXG4gKiBAdGFibGUoJ2Fzc2V0cycpXG4gKiBjbGFzcyBBc3NldCBleHRlbmRzIE1vZGVsIHtcbiAqICAgQGlkKClcbiAqICAgaWQ6IHN0cmluZztcbiAqXG4gKiAgIEBwcm9wZXJ0eSgpXG4gKiAgIGRhdGE6IHN0cmluZztcbiAqIH1cbiAqXG4gKiAvLyBDcmVhdGUgYSBjb250cmFjdCB0aGF0IGV4dGVuZHMgRmFicmljQ3J1ZENvbnRyYWN0XG4gKiBleHBvcnQgY2xhc3MgQXNzZXRDb250cmFjdCBleHRlbmRzIEZhYnJpY0NydWRDb250cmFjdDxBc3NldD4ge1xuICogICBjb25zdHJ1Y3RvcigpIHtcbiAqICAgICBzdXBlcignQXNzZXRDb250cmFjdCcsIEFzc2V0KTtcbiAqICAgfVxuICpcbiAqICAgLy8gQWRkIGN1c3RvbSBtZXRob2RzIGFzIG5lZWRlZFxuICogICBhc3luYyBnZXRBc3NldEhpc3RvcnkoY3R4OiBDb250ZXh0LCBpZDogc3RyaW5nKTogUHJvbWlzZTxhbnlbXT4ge1xuICogICAgIC8vIEN1c3RvbSBpbXBsZW1lbnRhdGlvblxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQ2xpZW50XG4gKiAgIHBhcnRpY2lwYW50IENvbnRyYWN0XG4gKiAgIHBhcnRpY2lwYW50IFJlcG9zaXRvcnlcbiAqICAgcGFydGljaXBhbnQgQWRhcHRlclxuICogICBwYXJ0aWNpcGFudCBTdGF0ZURCXG4gKlxuICogICBDbGllbnQtPj5Db250cmFjdDogY3JlYXRlKGN0eCwgbW9kZWwpXG4gKiAgIENvbnRyYWN0LT4+UmVwb3NpdG9yeTogcmVwb3NpdG9yeShjdHgpXG4gKiAgIENvbnRyYWN0LT4+UmVwb3NpdG9yeTogY3JlYXRlKG1vZGVsLCBjdHgpXG4gKiAgIFJlcG9zaXRvcnktPj5BZGFwdGVyOiBjcmVhdGUodGFibGVOYW1lLCBpZCwgcmVjb3JkLCB0cmFuc2llbnQsIGN0eClcbiAqICAgQWRhcHRlci0+PlN0YXRlREI6IHB1dFN0YXRlKGlkLCBzZXJpYWxpemVkRGF0YSlcbiAqICAgU3RhdGVEQi0tPj5BZGFwdGVyOiBTdWNjZXNzXG4gKiAgIEFkYXB0ZXItLT4+UmVwb3NpdG9yeTogcmVjb3JkXG4gKiAgIFJlcG9zaXRvcnktLT4+Q29udHJhY3Q6IG1vZGVsXG4gKiAgIENvbnRyYWN0LS0+PkNsaWVudDogbW9kZWxcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZhYnJpY0NydWRDb250cmFjdDxNIGV4dGVuZHMgTW9kZWw+XG4gIGV4dGVuZHMgQ29udHJhY3RcbiAgaW1wbGVtZW50c1xuICAgIENoZWNrYWJsZSxcbiAgICBQZXJzaXN0ZW5jZU9ic2VydmVyPEZhYnJpY0NvbnRyYWN0Q29udGV4dD4sXG4gICAgT2JzZXJ2ZXI8XG4gICAgICBbXG4gICAgICAgIHRhYmxlOiBDb25zdHJ1Y3RvcjxNPiB8IHN0cmluZyxcbiAgICAgICAgZXZlbnQ6IEFsbE9wZXJhdGlvbktleXMsXG4gICAgICAgIGlkOiBFdmVudElkcyxcbiAgICAgICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8RmFicmljQ29udHJhY3RDb250ZXh0PixcbiAgICAgIF1cbiAgICA+XG57XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU2hhcmVkIGFkYXB0ZXIgaW5zdGFuY2UgZm9yIGFsbCBjb250cmFjdCBpbnN0YW5jZXNcbiAgICovXG4gIHByb3RlY3RlZCBzdGF0aWMgYWRhcHRlcjogRmFicmljQ29udHJhY3RBZGFwdGVyID0gbmV3IEZhYnJpY0NvbnRyYWN0QWRhcHRlcigpO1xuXG4gIHByb3RlY3RlZCBzdGF0aWMgcmVhZG9ubHkgc2VyaWFsaXplciA9IG5ldyBEZXRlcm1pbmlzdGljU2VyaWFsaXplcigpO1xuXG4gIHByb3RlY3RlZCBpbml0aWFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX3JlcG8/OiBGYWJyaWNDb250cmFjdFJlcG9zaXRvcnk8TT47XG5cbiAgcHJvdGVjdGVkIGdldCByZXBvKCkge1xuICAgIGlmICghdGhpcy5fcmVwbykge1xuICAgICAgdGhpcy5fcmVwbyA9IFJlcG9zaXRvcnkuZm9yTW9kZWwodGhpcy5jbGF6eik7XG4gICAgICAvLyB0cnkge1xuICAgICAgLy8gICB0aGlzLnJlcG8ub2JzZXJ2ZSh0aGlzKTtcbiAgICAgIC8vIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgICAgLy8gICBpZiAoXG4gICAgICAvLyAgICAgZXJyIGluc3RhbmNlb2YgSW50ZXJuYWxFcnJvciAmJlxuICAgICAgLy8gICAgIGVyci5tZXNzYWdlLmluY2x1ZGVzKFwiT2JzZXJ2ZXIgYWxyZWFkeSByZWdpc3RlcmVkXCIpXG4gICAgICAvLyAgICkge1xuICAgICAgLy8gICAgIC8vIGFscmVhZHkgcmVnaXN0ZXJlZCBvYnNlcnZlcjsgaWdub3JlIGR1cGxpY2F0ZSByZWdpc3RyYXRpb24gKGR1cmluZyB0ZXN0cylcbiAgICAgIC8vICAgfSBlbHNlIHtcbiAgICAgIC8vICAgICB0aHJvdyBlcnI7XG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3JlcG87XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBuZXcgRmFicmljQ3J1ZENvbnRyYWN0IGluc3RhbmNlXG4gICAqIEBzdW1tYXJ5IEluaXRpYWxpemVzIGEgY29udHJhY3Qgd2l0aCBhIG5hbWUgYW5kIG1vZGVsIGNsYXNzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGNvbnRyYWN0XG4gICAqIEBwYXJhbSB7Q29uc3RydWN0b3I8TT59IGNsYXp6IC0gVGhlIG1vZGVsIGNvbnN0cnVjdG9yXG4gICAqL1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBjbGF6ejogQ29uc3RydWN0b3I8TT5cbiAgKSB7XG4gICAgc3VwZXIobmFtZSk7XG4gIH1cblxuICBhc3luYyByZWZyZXNoKFxuICAgIHRhYmxlOiBDb25zdHJ1Y3RvcjxNPiB8IHN0cmluZyxcbiAgICBldmVudDogQWxsT3BlcmF0aW9uS2V5cyxcbiAgICBpZDogRXZlbnRJZHMsXG4gICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8RmFicmljQ29udHJhY3RDb250ZXh0PlxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGxvZyB9ID0gdGhpcy5sb2dDdHgoYXJncywgdGhpcy5yZWZyZXNoKTtcbiAgICBsb2cudmVyYm9zZShgUHVzaGluZyAke2V2ZW50fSBldmVudCBvbiB0YWJsZSAke3RhYmxlfSwgaWQocykgJHtpZH1gKTtcbiAgICAvLyBkbyBub3RoaW5nLiBhbGwgd2UgbmVlZGVkIHdhcyBhbiBvYnNlcnZlciB0byBraWNrc3RhcnQgdGhlIHByb2Nlc3NcbiAgfVxuXG4gIGFzeW5jIGxpc3RCeShcbiAgICBjdHg6IEN0eCB8IEZhYnJpY0NvbnRyYWN0Q29udGV4dCxcbiAgICBrZXk6IHN0cmluZyB8IGtleW9mIE0sXG4gICAgb3JkZXI6IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPE1bXSB8IHN0cmluZz4ge1xuICAgIGNvbnN0IHsgY3R4QXJncywgbG9nIH0gPSAoXG4gICAgICBhd2FpdCB0aGlzLmxvZ0N0eChbLi4uYXJncywgY3R4XSwgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLkxJU1RfQlksIHRydWUpXG4gICAgKS5mb3IodGhpcy5saXN0QnkpO1xuICAgIGxvZy5pbmZvKFxuICAgICAgYFJ1bm5pbmcgbGlzdEJ5IGtleSAke2tleSBhcyBzdHJpbmd9LCBvcmRlciAke29yZGVyfSBhbmQgYXJncyAke2N0eEFyZ3N9YFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMucmVwby5saXN0QnkoXG4gICAgICBrZXkgYXMga2V5b2YgTSxcbiAgICAgIG9yZGVyIGFzIE9yZGVyRGlyZWN0aW9uLFxuICAgICAgLi4uY3R4QXJnc1xuICAgICk7XG4gIH1cblxuICBhc3luYyBwYWdpbmF0ZUJ5KFxuICAgIGN0eDogQ3R4IHwgRmFicmljQ29udHJhY3RDb250ZXh0LFxuICAgIGtleTogc3RyaW5nIHwga2V5b2YgTSxcbiAgICBvcmRlcjogc3RyaW5nLFxuICAgIHJlZjogT21pdDxEaXJlY3Rpb25MaW1pdE9mZnNldCwgXCJkaXJlY3Rpb25cIj4gfCBzdHJpbmcgPSB7XG4gICAgICBvZmZzZXQ6IDEsXG4gICAgICBsaW1pdDogMTAsXG4gICAgfSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFNlcmlhbGl6ZWRQYWdlPE0+IHwgc3RyaW5nPiB7XG4gICAgY29uc3QgeyBjdHhBcmdzLCBsb2cgfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KFsuLi5hcmdzLCBjdHhdLCBQcmVwYXJlZFN0YXRlbWVudEtleXMuUEFHRV9CWSwgdHJ1ZSlcbiAgICApLmZvcih0aGlzLnBhZ2luYXRlQnkpO1xuICAgIGxvZy5pbmZvKFxuICAgICAgYFJ1bm5pbmcgcGFnaW5hdGVCeSBrZXkgJHtrZXkgYXMgc3RyaW5nfSwgb3JkZXIgJHtvcmRlcn0gd2l0aCBzaXplICR7KHJlZiBhcyBhbnkpLmxpbWl0fSBhbmQgYXJncyAke2N0eEFyZ3N9YFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMucmVwby5wYWdpbmF0ZUJ5KFxuICAgICAga2V5IGFzIGtleW9mIE0sXG4gICAgICBvcmRlciBhcyBhbnksXG4gICAgICByZWYgYXMgYW55LFxuICAgICAgLi4uY3R4QXJnc1xuICAgICk7XG4gIH1cblxuICBhc3luYyBwYWdlKFxuICAgIGN0eDogQ3R4IHwgRmFicmljQ29udHJhY3RDb250ZXh0LFxuICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgZGlyZWN0aW9uOiBzdHJpbmcgfCBPcmRlckRpcmVjdGlvbiA9IE9yZGVyRGlyZWN0aW9uLkFTQyxcbiAgICByZWY6IE9taXQ8RGlyZWN0aW9uTGltaXRPZmZzZXQsIFwiZGlyZWN0aW9uXCI+IHwgc3RyaW5nID0ge1xuICAgICAgb2Zmc2V0OiAxLFxuICAgICAgbGltaXQ6IDEwLFxuICAgIH0sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxTZXJpYWxpemVkUGFnZTxNPiB8IHN0cmluZz4ge1xuICAgIGNvbnN0IHsgY3R4QXJncywgbG9nIH0gPSAoXG4gICAgICBhd2FpdCB0aGlzLmxvZ0N0eChbLi4uYXJncywgY3R4XSwgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLlBBR0UsIHRydWUpXG4gICAgKS5mb3IodGhpcy5wYWdlKTtcbiAgICBsb2cuaW5mbyhcbiAgICAgIGBQYWdpbmcgJHtNb2RlbC50YWJsZU5hbWUodGhpcy5jbGF6eil9IGJ5IGRlZmF1bHQgcXVlcnkgYXR0cmlidXRlc2BcbiAgICApO1xuICAgIGNvbnN0IHJlZmVyZW5jZSA9XG4gICAgICB0eXBlb2YgcmVmID09PSBcInN0cmluZ1wiXG4gICAgICAgID8gKEpTT04ucGFyc2UocmVmKSBhcyBPbWl0PERpcmVjdGlvbkxpbWl0T2Zmc2V0LCBcImRpcmVjdGlvblwiPikgfHxcbiAgICAgICAgICAoe30gYXMgT21pdDxEaXJlY3Rpb25MaW1pdE9mZnNldCwgXCJkaXJlY3Rpb25cIj4pXG4gICAgICAgIDogcmVmO1xuICAgIHJldHVybiB0aGlzLnJlcG8ucGFnZShcbiAgICAgIHZhbHVlLFxuICAgICAgZGlyZWN0aW9uIGFzIE9yZGVyRGlyZWN0aW9uLFxuICAgICAgcmVmZXJlbmNlIGFzIE9taXQ8RGlyZWN0aW9uTGltaXRPZmZzZXQsIFwiZGlyZWN0aW9uXCI+LFxuICAgICAgLi4uY3R4QXJnc1xuICAgICk7XG4gIH1cblxuICBhc3luYyBmaW5kT25lQnkoXG4gICAgY3R4OiBDdHggfCBGYWJyaWNDb250cmFjdENvbnRleHQsXG4gICAga2V5OiBzdHJpbmcgfCBrZXlvZiBNLFxuICAgIHZhbHVlOiBhbnksXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxNIHwgc3RyaW5nPiB7XG4gICAgY29uc3QgeyBjdHhBcmdzLCBsb2cgfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KFsuLi5hcmdzLCBjdHhdLCBQcmVwYXJlZFN0YXRlbWVudEtleXMuRklORF9PTkVfQlksIHRydWUpXG4gICAgKS5mb3IodGhpcy5maW5kT25lQnkpO1xuICAgIGxvZy5pbmZvKFxuICAgICAgYFJ1bm5pbmcgZmluZE9uZUJ5IGtleSAke2tleSBhcyBzdHJpbmd9LCB2YWx1ZTogJHt2YWx1ZX0gd2l0aCBhcmdzICR7Y3R4QXJnc31gXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmZpbmRPbmVCeShrZXkgYXMga2V5b2YgTSwgdmFsdWUsIC4uLmN0eEFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgc3RhdGVtZW50KFxuICAgIGN0eDogQ3R4IHwgRmFicmljQ29udHJhY3RDb250ZXh0LFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgeyBjdHhBcmdzLCBsb2cgfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KFsuLi5hcmdzLCBjdHhdLCBQZXJzaXN0ZW5jZUtleXMuU1RBVEVNRU5ULCB0cnVlKVxuICAgICkuZm9yKHRoaXMuc3RhdGVtZW50KTtcbiAgICBsb2cuaW5mbyhgUnVubmluZyBzdGF0ZW1lbnQgJHttZXRob2R9IHdpdGggYXJncyAke2N0eEFyZ3N9YCk7XG4gICAgcmV0dXJuIHRoaXMucmVwby5zdGF0ZW1lbnQobWV0aG9kLCAuLi5jdHhBcmdzKTtcbiAgfVxuXG4gIGFzeW5jIGNvdW50T2YoXG4gICAgY3R4OiBDdHggfCBGYWJyaWNDb250cmFjdENvbnRleHQsXG4gICAga2V5Pzogc3RyaW5nIHwga2V5b2YgTSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPG51bWJlciB8IHN0cmluZz4ge1xuICAgIGNvbnN0IHsgY3R4QXJncywgbG9nIH0gPSAoXG4gICAgICBhd2FpdCB0aGlzLmxvZ0N0eChbLi4uYXJncywgY3R4XSwgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLkNPVU5UX09GLCB0cnVlKVxuICAgICkuZm9yKHRoaXMuY291bnRPZik7XG4gICAgbG9nLmluZm8oYFJ1bm5pbmcgY291bnRPZiR7a2V5ID8gYCBrZXkgJHtrZXkgYXMgc3RyaW5nfWAgOiBcIlwifWApO1xuICAgIHJldHVybiB0aGlzLnJlcG8uY291bnRPZihrZXkgYXMga2V5b2YgTSB8IHVuZGVmaW5lZCwgLi4uY3R4QXJncyk7XG4gIH1cblxuICBhc3luYyBtYXhPZihcbiAgICBjdHg6IEN0eCB8IEZhYnJpY0NvbnRyYWN0Q29udGV4dCxcbiAgICBrZXk6IHN0cmluZyB8IGtleW9mIE0sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxNW2tleW9mIE1dIHwgc3RyaW5nPiB7XG4gICAgY29uc3QgeyBjdHhBcmdzLCBsb2cgfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KFsuLi5hcmdzLCBjdHhdLCBQcmVwYXJlZFN0YXRlbWVudEtleXMuTUFYX09GLCB0cnVlKVxuICAgICkuZm9yKHRoaXMubWF4T2YpO1xuICAgIGxvZy5pbmZvKGBSdW5uaW5nIG1heE9mIGtleSAke2tleSBhcyBzdHJpbmd9YCk7XG4gICAgcmV0dXJuIHRoaXMucmVwby5tYXhPZihrZXkgYXMga2V5b2YgTSwgLi4uY3R4QXJncyk7XG4gIH1cblxuICBhc3luYyBtaW5PZihcbiAgICBjdHg6IEN0eCB8IEZhYnJpY0NvbnRyYWN0Q29udGV4dCxcbiAgICBrZXk6IHN0cmluZyB8IGtleW9mIE0sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxNW2tleW9mIE1dIHwgc3RyaW5nPiB7XG4gICAgY29uc3QgeyBjdHhBcmdzLCBsb2cgfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KFsuLi5hcmdzLCBjdHhdLCBQcmVwYXJlZFN0YXRlbWVudEtleXMuTUlOX09GLCB0cnVlKVxuICAgICkuZm9yKHRoaXMubWluT2YpO1xuICAgIGxvZy5pbmZvKGBSdW5uaW5nIG1pbk9mIGtleSAke2tleSBhcyBzdHJpbmd9YCk7XG4gICAgcmV0dXJuIHRoaXMucmVwby5taW5PZihrZXkgYXMga2V5b2YgTSwgLi4uY3R4QXJncyk7XG4gIH1cblxuICBhc3luYyBhdmdPZihcbiAgICBjdHg6IEN0eCB8IEZhYnJpY0NvbnRyYWN0Q29udGV4dCxcbiAgICBrZXk6IHN0cmluZyB8IGtleW9mIE0sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxudW1iZXIgfCBzdHJpbmc+IHtcbiAgICBjb25zdCB7IGN0eEFyZ3MsIGxvZyB9ID0gKFxuICAgICAgYXdhaXQgdGhpcy5sb2dDdHgoWy4uLmFyZ3MsIGN0eF0sIFByZXBhcmVkU3RhdGVtZW50S2V5cy5BVkdfT0YsIHRydWUpXG4gICAgKS5mb3IodGhpcy5hdmdPZik7XG4gICAgbG9nLmluZm8oYFJ1bm5pbmcgYXZnT2Yga2V5ICR7a2V5IGFzIHN0cmluZ31gKTtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmF2Z09mKGtleSBhcyBrZXlvZiBNLCAuLi5jdHhBcmdzKTtcbiAgfVxuXG4gIGFzeW5jIHN1bU9mKFxuICAgIGN0eDogQ3R4IHwgRmFicmljQ29udHJhY3RDb250ZXh0LFxuICAgIGtleTogc3RyaW5nIHwga2V5b2YgTSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPG51bWJlciB8IHN0cmluZz4ge1xuICAgIGNvbnN0IHsgY3R4QXJncywgbG9nIH0gPSAoXG4gICAgICBhd2FpdCB0aGlzLmxvZ0N0eChbLi4uYXJncywgY3R4XSwgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzLlNVTV9PRiwgdHJ1ZSlcbiAgICApLmZvcih0aGlzLnN1bU9mKTtcbiAgICBsb2cuaW5mbyhgUnVubmluZyBzdW1PZiBrZXkgJHtrZXkgYXMgc3RyaW5nfWApO1xuICAgIHJldHVybiB0aGlzLnJlcG8uc3VtT2Yoa2V5IGFzIGtleW9mIE0sIC4uLmN0eEFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgZGlzdGluY3RPZihcbiAgICBjdHg6IEN0eCB8IEZhYnJpY0NvbnRyYWN0Q29udGV4dCxcbiAgICBrZXk6IHN0cmluZyB8IGtleW9mIE0sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxNW2tleW9mIE1dW10gfCBzdHJpbmc+IHtcbiAgICBjb25zdCB7IGN0eEFyZ3MsIGxvZyB9ID0gKFxuICAgICAgYXdhaXQgdGhpcy5sb2dDdHgoWy4uLmFyZ3MsIGN0eF0sIFByZXBhcmVkU3RhdGVtZW50S2V5cy5ESVNUSU5DVF9PRiwgdHJ1ZSlcbiAgICApLmZvcih0aGlzLmRpc3RpbmN0T2YpO1xuICAgIGxvZy5pbmZvKGBSdW5uaW5nIGRpc3RpbmN0T2Yga2V5ICR7a2V5IGFzIHN0cmluZ31gKTtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmRpc3RpbmN0T2Yoa2V5IGFzIGtleW9mIE0sIC4uLmN0eEFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgZ3JvdXBPZihcbiAgICBjdHg6IEN0eCB8IEZhYnJpY0NvbnRyYWN0Q29udGV4dCxcbiAgICBrZXk6IHN0cmluZyB8IGtleW9mIE0sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBNW10+IHwgc3RyaW5nPiB7XG4gICAgY29uc3QgeyBjdHhBcmdzLCBsb2cgfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KFsuLi5hcmdzLCBjdHhdLCBQcmVwYXJlZFN0YXRlbWVudEtleXMuR1JPVVBfT0YsIHRydWUpXG4gICAgKS5mb3IodGhpcy5ncm91cE9mKTtcbiAgICBsb2cuaW5mbyhgUnVubmluZyBncm91cE9mIGtleSAke2tleSBhcyBzdHJpbmd9YCk7XG4gICAgcmV0dXJuIHRoaXMucmVwby5ncm91cE9mKGtleSBhcyBrZXlvZiBNLCAuLi5jdHhBcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIHNpbmdsZSBtb2RlbCBpbiB0aGUgc3RhdGUgZGF0YWJhc2VcbiAgICogQHN1bW1hcnkgRGVsZWdhdGVzIHRvIHRoZSByZXBvc2l0b3J5J3MgY3JlYXRlIG1ldGhvZFxuICAgKiBAcGFyYW0ge0N0eH0gY3R4IC0gVGhlIEZhYnJpYyBjaGFpbmNvZGUgY29udGV4dFxuICAgKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIHRvIGNyZWF0ZVxuICAgKiBAcGFyYW0gey4uLmFueVtdfSBhcmdzIC0gQWRkaXRpb25hbCBhcmd1bWVudHNcbiAgICogQHJldHVybiB7UHJvbWlzZTxNPn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGNyZWF0ZWQgbW9kZWxcbiAgICovXG4gIGFzeW5jIGNyZWF0ZShcbiAgICBjb250ZXh0OiBDdHggfCBGYWJyaWNDb250cmFjdENvbnRleHQsXG4gICAgbW9kZWw6IHN0cmluZyB8IE0sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxzdHJpbmcgfCBNPiB7XG4gICAgY29uc3QgeyBsb2csIGN0eEFyZ3MsIGN0eCB9ID0gKFxuICAgICAgYXdhaXQgdGhpcy5sb2dDdHgoWy4uLmFyZ3MsIGNvbnRleHRdLCBPcGVyYXRpb25LZXlzLkNSRUFURSwgdHJ1ZSlcbiAgICApLmZvcih0aGlzLmNyZWF0ZSk7XG4gICAgdGhpcy5lbnN1cmVNaXJyb3JXcml0ZVBlcm1pc3Npb25zKGN0eCk7XG4gICAgbG9nLmluZm8oYENPTlRSQUNUIENSRUFURSwgJHtjdHhBcmdzfWApO1xuXG4gICAgaWYgKHR5cGVvZiBtb2RlbCA9PT0gXCJzdHJpbmdcIikgbW9kZWwgPSB0aGlzLmRlc2VyaWFsaXplPE0+KG1vZGVsKSBhcyBNO1xuXG4gICAgbG9nLmluZm8oYENyZWF0aW5nIG1vZGVsOiAke0pTT04uc3RyaW5naWZ5KG1vZGVsKX1gKTtcblxuICAgIGNvbnN0IHRyYW5zaWVudCA9IHRoaXMuZ2V0VHJhbnNpZW50RGF0YShjdHgpO1xuXG4gICAgbG9nLmluZm8oYE1lcmdpbmcgdHJhbnNpZW50IGRhdGEuLi5gKTtcbiAgICBtb2RlbCA9IE1vZGVsLm1lcmdlKG1vZGVsLCB0cmFuc2llbnQsIHRoaXMuY2xhenopIGFzIE07XG5cbiAgICBjb25zdCBjcmVhdGVkID0gYXdhaXQgdGhpcy5yZXBvLmNyZWF0ZShtb2RlbCwgLi4uY3R4QXJncyk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBuZXcgdGhpcy5jbGF6eihNb2RlbC5zZWdyZWdhdGUoY3JlYXRlZCkubW9kZWwpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlYWRzIGEgc2luZ2xlIG1vZGVsIGZyb20gdGhlIHN0YXRlIGRhdGFiYXNlXG4gICAqIEBzdW1tYXJ5IERlbGVnYXRlcyB0byB0aGUgcmVwb3NpdG9yeSdzIHJlYWQgbWV0aG9kXG4gICAqIEBwYXJhbSB7Q3R4fSBjdHggLSBUaGUgRmFicmljIGNoYWluY29kZSBjb250ZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBrZXkgLSBUaGUga2V5IG9mIHRoZSBtb2RlbCB0byByZWFkXG4gICAqIEBwYXJhbSB7Li4uYW55W119IGFyZ3MgLSBBZGRpdGlvbmFsIGFyZ3VtZW50c1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPE0+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgcmV0cmlldmVkIG1vZGVsXG4gICAqL1xuICBhc3luYyByZWFkKFxuICAgIGN0eDogQ3R4IHwgRmFicmljQ29udHJhY3RDb250ZXh0LFxuICAgIGtleTogUHJpbWFyeUtleVR5cGUgfCBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxNIHwgc3RyaW5nPiB7XG4gICAgY29uc3QgeyBsb2csIGN0eEFyZ3MgfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KFsuLi5hcmdzLCBjdHhdLCBPcGVyYXRpb25LZXlzLlJFQUQsIHRydWUpXG4gICAgKS5mb3IodGhpcy5jcmVhdGUpO1xuICAgIGxvZy5pbmZvKGByZWFkaW5nIGVudHJ5IHdpdGggcGsgJHtrZXl9IGApO1xuXG4gICAgcmV0dXJuIHRoaXMucmVwby5yZWFkKGtleSwgLi4uY3R4QXJncyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0VHJhbnNpZW50RGF0YShjdHg6IEZhYnJpY0NvbnRyYWN0Q29udGV4dCk6IGFueSB7XG4gICAgY29uc3QgdHJhbnNpZW50TWFwID0gY3R4LnN0dWIuZ2V0VHJhbnNpZW50KCk7XG4gICAgbGV0IHRyYW5zaWVudDogYW55ID0ge307XG5cbiAgICBpZiAodHJhbnNpZW50TWFwLmhhcyh0aGlzLnJlcG9bXCJ0YWJsZU5hbWVcIl0pKSB7XG4gICAgICB0cmFuc2llbnQgPSBKU09OLnBhcnNlKFxuICAgICAgICAoXG4gICAgICAgICAgdHJhbnNpZW50TWFwLmdldCh0aGlzLnJlcG9bXCJ0YWJsZU5hbWVcIl0pIGFzIHVua25vd24gYXMgQnVmZmVyXG4gICAgICAgICk/LnRvU3RyaW5nKFwidXRmOFwiKSBhcyBzdHJpbmdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRyYW5zaWVudE1hcC5oYXMoXCJfX292ZXJyaWRlc1wiKSkge1xuICAgICAgY29uc3Qgb3ZlcnJpZGVzID0gSlNPTi5wYXJzZShcbiAgICAgICAgKFxuICAgICAgICAgIHRyYW5zaWVudE1hcC5nZXQodGhpcy5yZXBvW1widGFibGVOYW1lXCJdKSBhcyB1bmtub3duIGFzIEJ1ZmZlclxuICAgICAgICApPy50b1N0cmluZyhcInV0ZjhcIikgYXMgc3RyaW5nXG4gICAgICApO1xuXG4gICAgICBjdHguYWNjdW11bGF0ZShvdmVycmlkZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0cmFuc2llbnQ7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZXMgYSBzaW5nbGUgbW9kZWwgaW4gdGhlIHN0YXRlIGRhdGFiYXNlXG4gICAqIEBzdW1tYXJ5IERlbGVnYXRlcyB0byB0aGUgcmVwb3NpdG9yeSdzIHVwZGF0ZSBtZXRob2RcbiAgICogQHBhcmFtIHtDdHh9IGN0eCAtIFRoZSBGYWJyaWMgY2hhaW5jb2RlIGNvbnRleHRcbiAgICogQHBhcmFtIHtNfSBtb2RlbCAtIFRoZSBtb2RlbCB0byB1cGRhdGVcbiAgICogQHBhcmFtIHsuLi5hbnlbXX0gYXJncyAtIEFkZGl0aW9uYWwgYXJndW1lbnRzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8TT59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSB1cGRhdGVkIG1vZGVsXG4gICAqL1xuICBhc3luYyB1cGRhdGUoXG4gICAgY29udGV4dDogQ3R4IHwgRmFicmljQ29udHJhY3RDb250ZXh0LFxuICAgIG1vZGVsOiBzdHJpbmcgfCBNLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8c3RyaW5nIHwgTT4ge1xuICAgIGNvbnN0IHsgbG9nLCBjdHhBcmdzLCBjdHggfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KFsuLi5hcmdzLCBjb250ZXh0XSwgT3BlcmF0aW9uS2V5cy5VUERBVEUsIHRydWUpXG4gICAgKS5mb3IodGhpcy51cGRhdGUpO1xuICAgIHRoaXMuZW5zdXJlTWlycm9yV3JpdGVQZXJtaXNzaW9ucyhjdHgpO1xuICAgIGlmICh0eXBlb2YgbW9kZWwgPT09IFwic3RyaW5nXCIpIG1vZGVsID0gdGhpcy5kZXNlcmlhbGl6ZTxNPihtb2RlbCkgYXMgTTtcblxuICAgIGxvZy5pbmZvKGBVcGRhdGluZyBtb2RlbDogJHtKU09OLnN0cmluZ2lmeShtb2RlbCl9YCk7XG5cbiAgICBjb25zdCB0cmFuc2llbnQgPSB0aGlzLmdldFRyYW5zaWVudERhdGEoY3R4KTtcblxuICAgIGxvZy5pbmZvKGBNZXJnaW5nIHRyYW5zaWVudCBkYXRhLi4uYCk7XG4gICAgbW9kZWwgPSBNb2RlbC5tZXJnZShtb2RlbCwgdHJhbnNpZW50LCB0aGlzLmNsYXp6KSBhcyBNO1xuICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB0aGlzLnJlcG8udXBkYXRlKG1vZGVsLCAuLi5jdHhBcmdzKTtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgdGhpcy5jbGF6eihNb2RlbC5zZWdyZWdhdGUodXBkYXRlZCkubW9kZWwpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZXMgYSBzaW5nbGUgbW9kZWwgZnJvbSB0aGUgc3RhdGUgZGF0YWJhc2VcbiAgICogQHN1bW1hcnkgRGVsZWdhdGVzIHRvIHRoZSByZXBvc2l0b3J5J3MgZGVsZXRlIG1ldGhvZFxuICAgKiBAcGFyYW0ge0N0eH0gY3R4IC0gVGhlIEZhYnJpYyBjaGFpbmNvZGUgY29udGV4dFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlcn0ga2V5IC0gVGhlIGtleSBvZiB0aGUgbW9kZWwgdG8gZGVsZXRlXG4gICAqIEBwYXJhbSB7Li4uYW55W119IGFyZ3MgLSBBZGRpdGlvbmFsIGFyZ3VtZW50c1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPE0+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgZGVsZXRlZCBtb2RlbFxuICAgKi9cbiAgYXN5bmMgZGVsZXRlKFxuICAgIGN0eDogQ3R4IHwgRmFicmljQ29udHJhY3RDb250ZXh0LFxuICAgIGtleTogUHJpbWFyeUtleVR5cGUgfCBzdHJpbmcsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxNIHwgc3RyaW5nPiB7XG4gICAgY29uc3Qge1xuICAgICAgbG9nLFxuICAgICAgY3R4QXJncyxcbiAgICAgIGN0eDogZmFicmljQ3R4LFxuICAgIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoWy4uLmFyZ3MsIGN0eF0sIE9wZXJhdGlvbktleXMuREVMRVRFLCB0cnVlKSkuZm9yKFxuICAgICAgdGhpcy5kZWxldGVcbiAgICApO1xuICAgIHRoaXMuZW5zdXJlTWlycm9yV3JpdGVQZXJtaXNzaW9ucyhmYWJyaWNDdHgpO1xuICAgIGxvZy5pbmZvKGBkZWxldGluZyBlbnRyeSB3aXRoIHBrICR7a2V5fSBgKTtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmRlbGV0ZShTdHJpbmcoa2V5KSwgLi4uY3R4QXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERlbGV0ZXMgbXVsdGlwbGUgbW9kZWxzIGZyb20gdGhlIHN0YXRlIGRhdGFiYXNlXG4gICAqIEBzdW1tYXJ5IERlbGVnYXRlcyB0byB0aGUgcmVwb3NpdG9yeSdzIGRlbGV0ZUFsbCBtZXRob2RcbiAgICogQHBhcmFtIHtzdHJpbmdbXSB8IG51bWJlcltdfSBrZXlzIC0gVGhlIGtleXMgb2YgdGhlIG1vZGVscyB0byBkZWxldGVcbiAgICogQHBhcmFtIHtDdHh9IGN0eCAtIFRoZSBGYWJyaWMgY2hhaW5jb2RlIGNvbnRleHRcbiAgICogQHBhcmFtIHsuLi5hbnlbXX0gYXJncyAtIEFkZGl0aW9uYWwgYXJndW1lbnRzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8TVtdPn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGRlbGV0ZWQgbW9kZWxzXG4gICAqL1xuICBhc3luYyBkZWxldGVBbGwoXG4gICAgY3R4OiBDdHggfCBGYWJyaWNDb250cmFjdENvbnRleHQsXG4gICAga2V5czogUHJpbWFyeUtleVR5cGVbXSB8IHN0cmluZyxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPE1bXSB8IHN0cmluZz4ge1xuICAgIGNvbnN0IHsgY3R4QXJncywgY3R4OiBmYWJyaWNDdHggfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KFsuLi5hcmdzLCBjdHhdLCBCdWxrQ3J1ZE9wZXJhdGlvbktleXMuREVMRVRFX0FMTCwgdHJ1ZSlcbiAgICApLmZvcih0aGlzLmRlbGV0ZUFsbCk7XG4gICAgdGhpcy5lbnN1cmVNaXJyb3JXcml0ZVBlcm1pc3Npb25zKGZhYnJpY0N0eCk7XG4gICAgaWYgKHR5cGVvZiBrZXlzID09PSBcInN0cmluZ1wiKSBrZXlzID0gSlNPTi5wYXJzZShrZXlzKSBhcyBzdHJpbmdbXTtcbiAgICBjb25zdCBkZWxldGVkID0gYXdhaXQgdGhpcy5yZXBvLmRlbGV0ZUFsbChrZXlzLCAuLi5jdHhBcmdzKTtcbiAgICBjb25zdCByZXN1bHQgPSBkZWxldGVkLm1hcCgoYykgPT4gbmV3IHRoaXMuY2xhenooTW9kZWwuc2VncmVnYXRlKGMpLm1vZGVsKSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVhZHMgbXVsdGlwbGUgbW9kZWxzIGZyb20gdGhlIHN0YXRlIGRhdGFiYXNlXG4gICAqIEBzdW1tYXJ5IERlbGVnYXRlcyB0byB0aGUgcmVwb3NpdG9yeSdzIHJlYWRBbGwgbWV0aG9kXG4gICAqIEBwYXJhbSB7Q3R4fSBjdHggLSBUaGUgRmFicmljIGNoYWluY29kZSBjb250ZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nW10gfCBudW1iZXJbXX0ga2V5cyAtIFRoZSBrZXlzIG9mIHRoZSBtb2RlbHMgdG8gcmVhZFxuICAgKiBAcGFyYW0gey4uLmFueVtdfSBhcmdzIC0gQWRkaXRpb25hbCBhcmd1bWVudHNcbiAgICogQHJldHVybiB7UHJvbWlzZTxNW10+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgcmV0cmlldmVkIG1vZGVsc1xuICAgKi9cbiAgYXN5bmMgcmVhZEFsbChcbiAgICBjdHg6IEN0eCB8IEZhYnJpY0NvbnRyYWN0Q29udGV4dCxcbiAgICBrZXlzOiBQcmltYXJ5S2V5VHlwZVtdIHwgc3RyaW5nLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8TVtdIHwgc3RyaW5nPiB7XG4gICAgY29uc3QgeyBjdHhBcmdzIH0gPSAoXG4gICAgICBhd2FpdCB0aGlzLmxvZ0N0eChbLi4uYXJncywgY3R4XSwgQnVsa0NydWRPcGVyYXRpb25LZXlzLlJFQURfQUxMLCB0cnVlKVxuICAgICkuZm9yKHRoaXMuY3JlYXRlKTtcbiAgICBpZiAodHlwZW9mIGtleXMgPT09IFwic3RyaW5nXCIpIGtleXMgPSBKU09OLnBhcnNlKGtleXMpIGFzIHN0cmluZ1tdO1xuICAgIHJldHVybiB0aGlzLnJlcG8ucmVhZEFsbChrZXlzLCAuLi5jdHhBcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlcyBtdWx0aXBsZSBtb2RlbHMgaW4gdGhlIHN0YXRlIGRhdGFiYXNlXG4gICAqIEBzdW1tYXJ5IERlbGVnYXRlcyB0byB0aGUgcmVwb3NpdG9yeSdzIHVwZGF0ZUFsbCBtZXRob2RcbiAgICogQHBhcmFtIHtDdHh9IGN0eCAtIFRoZSBGYWJyaWMgY2hhaW5jb2RlIGNvbnRleHRcbiAgICogQHBhcmFtIHtNW119IG1vZGVscyAtIFRoZSBtb2RlbHMgdG8gdXBkYXRlXG4gICAqIEBwYXJhbSB7Li4uYW55W119IGFyZ3MgLSBBZGRpdGlvbmFsIGFyZ3VtZW50c1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPE1bXT59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSB1cGRhdGVkIG1vZGVsc1xuICAgKi9cbiAgYXN5bmMgdXBkYXRlQWxsKFxuICAgIGNvbnRleHQ6IEN0eCB8IEZhYnJpY0NvbnRyYWN0Q29udGV4dCxcbiAgICBtb2RlbHM6IHN0cmluZyB8IE1bXSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPHN0cmluZyB8IE1bXT4ge1xuICAgIGNvbnN0IHsgbG9nLCBjdHhBcmdzLCBjdHggfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KFxuICAgICAgICBbLi4uYXJncywgY29udGV4dF0sXG4gICAgICAgIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cy5VUERBVEVfQUxMLFxuICAgICAgICB0cnVlXG4gICAgICApXG4gICAgKS5mb3IodGhpcy51cGRhdGVBbGwpO1xuICAgIHRoaXMuZW5zdXJlTWlycm9yV3JpdGVQZXJtaXNzaW9ucyhjdHgpO1xuICAgIGlmICh0eXBlb2YgbW9kZWxzID09PSBcInN0cmluZ1wiKVxuICAgICAgbW9kZWxzID0gKEpTT04ucGFyc2UobW9kZWxzKSBhcyBbXSlcbiAgICAgICAgLm1hcCgobSkgPT4gdGhpcy5kZXNlcmlhbGl6ZShtKSlcbiAgICAgICAgLm1hcCgobSkgPT4gbmV3IHRoaXMuY2xhenoobSkpIGFzIGFueTtcblxuICAgIGNvbnN0IHRyYW5zaWVudCA9IHRoaXMuZ2V0VHJhbnNpZW50RGF0YShjdHgpO1xuXG4gICAgbG9nLmluZm8oYE1lcmdpbmcgdHJhbnNpZW50IGRhdGEuLi5gKTtcbiAgICBtb2RlbHMgPSAobW9kZWxzIGFzIE1bXSkubWFwKChtLCBpKSA9PiB7XG4gICAgICBjb25zdCB0ID0gQXJyYXkuaXNBcnJheSh0cmFuc2llbnQpID8gdHJhbnNpZW50W2ldIDogdHJhbnNpZW50O1xuICAgICAgcmV0dXJuIE1vZGVsLm1lcmdlKG0sIHQgfHwge30sIHRoaXMuY2xhenopIGFzIE07XG4gICAgfSk7XG5cbiAgICBsb2cuaW5mbyhgYWRkaW5nICR7bW9kZWxzLmxlbmd0aH0gZW50cmllcyB0byB0aGUgdGFibGVgKTtcblxuICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB0aGlzLnJlcG8udXBkYXRlQWxsKFxuICAgICAgbW9kZWxzIGFzIHVua25vd24gYXMgTVtdLFxuICAgICAgLi4uY3R4QXJnc1xuICAgICk7XG4gICAgY29uc3QgcmVzdWx0ID0gdXBkYXRlZC5tYXAoKGMpID0+IG5ldyB0aGlzLmNsYXp6KE1vZGVsLnNlZ3JlZ2F0ZShjKS5tb2RlbCkpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEV4ZWN1dGVzIGEgcXVlcnkgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbmRpdGlvbnMgYW5kIG9wdGlvbnMuXG4gICAqIEBzdW1tYXJ5IFByb3ZpZGVzIGEgc2ltcGxpZmllZCB3YXkgdG8gcXVlcnkgdGhlIGRhdGFiYXNlIHdpdGggY29tbW9uIHF1ZXJ5IHBhcmFtZXRlcnMuXG4gICAqIEBwYXJhbSB7Q29uZGl0aW9uPE0+fSBjb25kaXRpb24gLSBUaGUgY29uZGl0aW9uIHRvIGZpbHRlciByZWNvcmRzLlxuICAgKiBAcGFyYW0gb3JkZXJCeSAtIFRoZSBmaWVsZCB0byBvcmRlciByZXN1bHRzIGJ5LlxuICAgKiBAcGFyYW0ge09yZGVyRGlyZWN0aW9ufSBbb3JkZXI9T3JkZXJEaXJlY3Rpb24uQVNDXSAtIFRoZSBzb3J0IGRpcmVjdGlvbi5cbiAgICogQHBhcmFtIHtPcmRlckRpcmVjdGlvbn0gW29yZGVyPU9yZGVyRGlyZWN0aW9uLkFTQ10gLSBUaGUgc29ydCBkaXJlY3Rpb24uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbGltaXRdIC0gT3B0aW9uYWwgbWF4aW11bSBudW1iZXIgb2YgcmVzdWx0cyB0byByZXR1cm4uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbc2tpcF0gLSBPcHRpb25hbCBudW1iZXIgb2YgcmVzdWx0cyB0byBza2lwLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPE1bXT59IFRoZSBxdWVyeSByZXN1bHRzIGFzIG1vZGVsIGluc3RhbmNlcy5cbiAgICovXG4gIGFzeW5jIHF1ZXJ5KFxuICAgIGNvbnRleHQ6IEN0eCB8IEZhYnJpY0NvbnRyYWN0Q29udGV4dCxcbiAgICBjb25kaXRpb246IENvbmRpdGlvbjxNPiB8IHN0cmluZyxcbiAgICBvcmRlckJ5OiBzdHJpbmcgfCBrZXlvZiBNLFxuICAgIG9yZGVyOiBPcmRlckRpcmVjdGlvbiB8IHN0cmluZyA9IE9yZGVyRGlyZWN0aW9uLkFTQyxcbiAgICBsaW1pdD86IG51bWJlcixcbiAgICBza2lwPzogbnVtYmVyLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8TVtdIHwgc3RyaW5nPiB7XG4gICAgY29uc3QgeyBjdHhBcmdzIH0gPSAoXG4gICAgICBhd2FpdCB0aGlzLmxvZ0N0eChbLi4uYXJncywgY29udGV4dF0sIFBlcnNpc3RlbmNlS2V5cy5RVUVSWSwgdHJ1ZSlcbiAgICApLmZvcih0aGlzLmNyZWF0ZSk7XG4gICAgcmV0dXJuIHRoaXMucmVwby5xdWVyeShcbiAgICAgIGNvbmRpdGlvbiBhcyBDb25kaXRpb248TT4sXG4gICAgICBvcmRlckJ5IGFzIGtleW9mIE0sXG4gICAgICBvcmRlciBhcyBPcmRlckRpcmVjdGlvbixcbiAgICAgIGxpbWl0LFxuICAgICAgc2tpcCxcbiAgICAgIC4uLmN0eEFyZ3NcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBFeGVjdXRlcyBhIHJhdyBxdWVyeSBhZ2FpbnN0IHRoZSBzdGF0ZSBkYXRhYmFzZVxuICAgKiBAc3VtbWFyeSBEZWxlZ2F0ZXMgdG8gdGhlIHJlcG9zaXRvcnkncyByYXcgbWV0aG9kXG4gICAqIEBwYXJhbSB7Q3R4fSBjdHggLSBUaGUgRmFicmljIGNoYWluY29kZSBjb250ZXh0XG4gICAqIEBwYXJhbSB7YW55fSByYXdJbnB1dCAtIFRoZSBxdWVyeSB0byBleGVjdXRlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZG9jc09ubHkgLSBXaGV0aGVyIHRvIHJldHVybiBvbmx5IGRvY3VtZW50c1xuICAgKiBAcGFyYW0gey4uLmFueVtdfSBhcmdzIC0gQWRkaXRpb25hbCBhcmd1bWVudHNcbiAgICogQHJldHVybiB7UHJvbWlzZTxhbnk+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgcXVlcnkgcmVzdWx0c1xuICAgKi9cbiAgYXN5bmMgcmF3KFxuICAgIGN0eDogQ3R4IHwgRmFicmljQ29udHJhY3RDb250ZXh0LFxuICAgIHJhd0lucHV0OiBNYW5nb1F1ZXJ5LFxuICAgIGRvY3NPbmx5OiBib29sZWFuLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgeyBjdHhBcmdzIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoWy4uLmFyZ3MsIGN0eF0sIFwicmF3XCIsIHRydWUpKS5mb3IoXG4gICAgICB0aGlzLnJhd1xuICAgICk7XG4gICAgcmV0dXJuIEZhYnJpY0NydWRDb250cmFjdC5hZGFwdGVyLnJhdyhyYXdJbnB1dCwgZG9jc09ubHksIC4uLmN0eEFyZ3MpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlcmlhbGl6ZShtb2RlbDogTSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEZhYnJpY0NydWRDb250cmFjdC5zZXJpYWxpemVyLnNlcmlhbGl6ZShtb2RlbCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZGVzZXJpYWxpemU8TSBleHRlbmRzIE1vZGVsPihzdHI6IHN0cmluZyk6IE0ge1xuICAgIHJldHVybiAoXG4gICAgICBGYWJyaWNDcnVkQ29udHJhY3Quc2VyaWFsaXplciBhcyB1bmtub3duIGFzIFNlcmlhbGl6ZXI8TT5cbiAgICApLmRlc2VyaWFsaXplKHN0cik7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaW5pdChjdHg6IEN0eCB8IEZhYnJpY0NvbnRyYWN0Q29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgbG9nIH0gPSAoXG4gICAgICBhd2FpdCB0aGlzLmxvZ0N0eChbY3R4XSwgUGVyc2lzdGVuY2VLZXlzLklOSVRJQUxJWkFUSU9OLCB0cnVlKVxuICAgICkuZm9yKHRoaXMuaW5pdCk7XG4gICAgbG9nLmluZm8oYFJ1bm5pbmcgY29udHJhY3QgJHt0aGlzLmdldE5hbWUoKX0gaW5pdGlhbGl6YXRpb24uLi5gKTtcbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICBsb2cuaW5mbyhgQ29udHJhY3QgaW5pdGlhbGl6YXRpb24gY29tcGxldGVkLmApO1xuICB9XG5cbiAgYXN5bmMgaGVhbHRoY2hlY2soXG4gICAgY3R4OiBDdHggfCBGYWJyaWNDb250cmFjdENvbnRleHRcbiAgKTogUHJvbWlzZTxzdHJpbmcgfCBoZWFsdGhjaGVjaz4ge1xuICAgIGNvbnN0IHsgbG9nIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoW2N0eF0sIFwiaGVhbHRoY2hlY2tcIiwgdHJ1ZSkpLmZvcihcbiAgICAgIHRoaXMuaGVhbHRoY2hlY2tcbiAgICApO1xuICAgIGxvZy5pbmZvKGBSdW5uaW5nIEhlYWx0aGNoZWNrOiAke3RoaXMuaW5pdGlhbGl6ZWR9Li4uYCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhlYWx0aGNoZWNrOiB0aGlzLmluaXRpYWxpemVkLFxuICAgICAgdmVyc2lvbjogVkVSU0lPTixcbiAgICAgIHBhY2thZ2U6IFBBQ0tBR0VfTkFNRSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDcmVhdGVzIG11bHRpcGxlIG1vZGVscyBpbiB0aGUgc3RhdGUgZGF0YWJhc2VcbiAgICogQHN1bW1hcnkgRGVsZWdhdGVzIHRvIHRoZSByZXBvc2l0b3J5J3MgY3JlYXRlQWxsIG1ldGhvZFxuICAgKiBAcGFyYW0ge0N0eH0gY3R4IC0gVGhlIEZhYnJpYyBjaGFpbmNvZGUgY29udGV4dFxuICAgKiBAcGFyYW0ge01bXX0gbW9kZWxzIC0gVGhlIG1vZGVscyB0byBjcmVhdGVcbiAgICogQHBhcmFtIHsuLi5hbnlbXX0gYXJncyAtIEFkZGl0aW9uYWwgYXJndW1lbnRzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8TVtdPn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGNyZWF0ZWQgbW9kZWxzXG4gICAqL1xuICBhc3luYyBjcmVhdGVBbGwoXG4gICAgY29udGV4dDogQ3R4IHwgRmFicmljQ29udHJhY3RDb250ZXh0LFxuICAgIG1vZGVsczogc3RyaW5nIHwgTVtdLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8c3RyaW5nIHwgTVtdPiB7XG4gICAgY29uc3QgeyBsb2csIGN0eEFyZ3MsIGN0eCB9ID0gKFxuICAgICAgYXdhaXQgdGhpcy5sb2dDdHgoXG4gICAgICAgIFsuLi5hcmdzLCBjb250ZXh0XSxcbiAgICAgICAgQnVsa0NydWRPcGVyYXRpb25LZXlzLkNSRUFURV9BTEwsXG4gICAgICAgIHRydWVcbiAgICAgIClcbiAgICApLmZvcih0aGlzLmNyZWF0ZUFsbCk7XG4gICAgdGhpcy5lbnN1cmVNaXJyb3JXcml0ZVBlcm1pc3Npb25zKGN0eCk7XG4gICAgaWYgKHR5cGVvZiBtb2RlbHMgPT09IFwic3RyaW5nXCIpXG4gICAgICBtb2RlbHMgPSAoSlNPTi5wYXJzZShtb2RlbHMpIGFzIFtdKVxuICAgICAgICAubWFwKChtKSA9PiB0aGlzLmRlc2VyaWFsaXplKG0pKVxuICAgICAgICAubWFwKChtKSA9PiBuZXcgdGhpcy5jbGF6eihtKSkgYXMgYW55O1xuXG4gICAgY29uc3QgdHJhbnNpZW50ID0gdGhpcy5nZXRUcmFuc2llbnREYXRhKGN0eCk7XG5cbiAgICBsb2cuaW5mbyhgTWVyZ2luZyB0cmFuc2llbnQgZGF0YS4uLmApO1xuICAgIG1vZGVscyA9IChtb2RlbHMgYXMgTVtdKS5tYXAoKG0sIGkpID0+IHtcbiAgICAgIGNvbnN0IHQgPSBBcnJheS5pc0FycmF5KHRyYW5zaWVudCkgPyB0cmFuc2llbnRbaV0gOiB0cmFuc2llbnQ7XG4gICAgICByZXR1cm4gTW9kZWwubWVyZ2UobSwgdCB8fCB7fSwgdGhpcy5jbGF6eikgYXMgTTtcbiAgICB9KTtcblxuICAgIGxvZy5pbmZvKGBhZGRpbmcgJHttb2RlbHMubGVuZ3RofSBlbnRyaWVzIHRvIHRoZSB0YWJsZWApO1xuXG4gICAgY29uc3QgY3JlYXRlZCA9IGF3YWl0IHRoaXMucmVwby5jcmVhdGVBbGwoXG4gICAgICBtb2RlbHMgYXMgdW5rbm93biBhcyBNW10sXG4gICAgICAuLi5jdHhBcmdzXG4gICAgKTtcbiAgICBjb25zdCByZXN1bHQgPSBjcmVhdGVkLm1hcCgoYykgPT4gbmV3IHRoaXMuY2xhenooTW9kZWwuc2VncmVnYXRlKGMpLm1vZGVsKSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbnN1cmVNaXJyb3JXcml0ZVBlcm1pc3Npb25zKGN0eDogRmFicmljQ29udHJhY3RDb250ZXh0KTogdm9pZCB7XG4gICAgaWYgKCFjdHgpIHJldHVybjtcbiAgICBjb25zdCBtaXJyb3JNZXRhID0gTW9kZWwubWlycm9yZWRBdCh0aGlzLmNsYXp6KTtcbiAgICBpZiAoIW1pcnJvck1ldGEpIHJldHVybjtcbiAgICBjb25zdCBtc3AgPSBleHRyYWN0TXNwSWQoY3R4LmlkZW50aXR5KTtcbiAgICBpZiAoXG4gICAgICBtc3AgJiZcbiAgICAgIChtc3AgPT09IG1pcnJvck1ldGEubXNwSWQgfHxcbiAgICAgICAgKG1pcnJvck1ldGEuY29uZGl0aW9uICYmIG1pcnJvck1ldGEuY29uZGl0aW9uKG1zcCkpKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEF1dGhvcml6YXRpb25FcnJvcihcbiAgICAgICAgYE9yZ2FuaXphdGlvbiAke21zcH0gaXMgbm90IGF1dGhvcml6ZWQgdG8gbW9kaWZ5IG1pcnJvcmVkIGRhdGFgXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBsb2dDdHg8XG4gICAgQVJHUyBleHRlbmRzIGFueVtdID0gYW55W10sXG4gICAgTUVUSE9EIGV4dGVuZHMgTWV0aG9kT3JPcGVyYXRpb24gPSBNZXRob2RPck9wZXJhdGlvbixcbiAgPihcbiAgICBhcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8RmFicmljQ29udHJhY3RDb250ZXh0LCBBUkdTPixcbiAgICBvcGVyYXRpb246IE1FVEhPRFxuICApOiBGYWJyaWNDb250ZXh0dWFsaXplZEFyZ3M8QVJHUywgTUVUSE9EIGV4dGVuZHMgc3RyaW5nID8gdHJ1ZSA6IGZhbHNlPjtcbiAgcHJvdGVjdGVkIGxvZ0N0eDxcbiAgICBBUkdTIGV4dGVuZHMgYW55W10gPSBhbnlbXSxcbiAgICBNRVRIT0QgZXh0ZW5kcyBNZXRob2RPck9wZXJhdGlvbiA9IE1ldGhvZE9yT3BlcmF0aW9uLFxuICA+KFxuICAgIGFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxGYWJyaWNDb250cmFjdENvbnRleHQsIEFSR1M+LFxuICAgIG9wZXJhdGlvbjogTUVUSE9ELFxuICAgIGFsbG93Q3JlYXRlOiBmYWxzZVxuICApOiBGYWJyaWNDb250ZXh0dWFsaXplZEFyZ3M8QVJHUywgTUVUSE9EIGV4dGVuZHMgc3RyaW5nID8gdHJ1ZSA6IGZhbHNlPjtcbiAgcHJvdGVjdGVkIGxvZ0N0eDxcbiAgICBBUkdTIGV4dGVuZHMgYW55W10gPSBhbnlbXSxcbiAgICBNRVRIT0QgZXh0ZW5kcyBNZXRob2RPck9wZXJhdGlvbiA9IE1ldGhvZE9yT3BlcmF0aW9uLFxuICA+KFxuICAgIGFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxGYWJyaWNDb250cmFjdENvbnRleHQsIEFSR1M+LFxuICAgIG9wZXJhdGlvbjogTUVUSE9ELFxuICAgIGFsbG93Q3JlYXRlOiB0cnVlXG4gICk6IFByb21pc2U8XG4gICAgRmFicmljQ29udGV4dHVhbGl6ZWRBcmdzPEFSR1MsIE1FVEhPRCBleHRlbmRzIHN0cmluZyA/IHRydWUgOiBmYWxzZT5cbiAgPjtcbiAgcHJvdGVjdGVkIGxvZ0N0eDxcbiAgICBBUkdTIGV4dGVuZHMgYW55W10gPSBhbnlbXSxcbiAgICBNRVRIT0QgZXh0ZW5kcyBNZXRob2RPck9wZXJhdGlvbiA9IE1ldGhvZE9yT3BlcmF0aW9uLFxuICA+KFxuICAgIGFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxGYWJyaWNDb250cmFjdENvbnRleHQsIEFSR1M+LFxuICAgIG9wZXJhdGlvbjogTUVUSE9ELFxuICAgIGFsbG93Q3JlYXRlOiBib29sZWFuID0gZmFsc2VcbiAgKTpcbiAgICB8IFByb21pc2U8XG4gICAgICAgIEZhYnJpY0NvbnRleHR1YWxpemVkQXJnczxBUkdTLCBNRVRIT0QgZXh0ZW5kcyBzdHJpbmcgPyB0cnVlIDogZmFsc2U+XG4gICAgICA+XG4gICAgfCBGYWJyaWNDb250ZXh0dWFsaXplZEFyZ3M8QVJHUywgTUVUSE9EIGV4dGVuZHMgc3RyaW5nID8gdHJ1ZSA6IGZhbHNlPiB7XG4gICAgY29uc3QgY3R4ID0gYXJncy5wb3AoKTtcbiAgICBpZiAoIWN0eCB8fCAhY3R4LnN0dWIpIHtcbiAgICAgIHRocm93IG5ldyBNaXNzaW5nQ29udGV4dEVycm9yKGBObyB2YWxpZCBjb250ZXh0IHByb3ZpZGVkLi4uYCk7XG4gICAgfVxuICAgIGNvbnN0IGNvbnRleHR1YWxpemVkID0gRmFicmljQ3J1ZENvbnRyYWN0LmFkYXB0ZXJbXCJsb2dDdHhcIl0oXG4gICAgICBbdGhpcy5jbGF6eiBhcyBhbnksIC4uLmFyZ3NdIGFzIGFueSxcbiAgICAgIG9wZXJhdGlvbixcbiAgICAgIGFsbG93Q3JlYXRlIGFzIGFueSxcbiAgICAgIGN0eFxuICAgICkgYXNcbiAgICAgIHwgRmFicmljQ29udGV4dHVhbGl6ZWRBcmdzPEFSR1MsIE1FVEhPRCBleHRlbmRzIHN0cmluZyA/IHRydWUgOiBmYWxzZT5cbiAgICAgIHwgUHJvbWlzZTxcbiAgICAgICAgICBGYWJyaWNDb250ZXh0dWFsaXplZEFyZ3M8QVJHUywgTUVUSE9EIGV4dGVuZHMgc3RyaW5nID8gdHJ1ZSA6IGZhbHNlPlxuICAgICAgICA+O1xuICAgIGZ1bmN0aW9uIHNxdWFzaEFyZ3MoY3R4OiBGYWJyaWNDb250ZXh0dWFsaXplZEFyZ3MpIHtcbiAgICAgIGN0eC5jdHhBcmdzLnNoaWZ0KCk7IC8vIHJlbW92ZXMgYWRkZWQgbW9kZWwgdG8gYXJnc1xuICAgICAgcmV0dXJuIGN0eCBhcyBhbnk7XG4gICAgfVxuXG4gICAgaWYgKCEoY29udGV4dHVhbGl6ZWQgaW5zdGFuY2VvZiBQcm9taXNlKSkgcmV0dXJuIHNxdWFzaEFyZ3MoY29udGV4dHVhbGl6ZWQpO1xuICAgIHJldHVybiBjb250ZXh0dWFsaXplZC50aGVuKHNxdWFzaEFyZ3MpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export * from "./crud-contract.js";
|
|
2
2
|
export * from "./serialized-crud-contract.js";
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29udHJhY3RzL2NydWQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUNBQWdDO0FBQ2hDLDhDQUEyQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NydWQtY29udHJhY3RcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NlcmlhbGl6ZWQtY3J1ZC1jb250cmFjdFwiO1xuIl19
|
|
@@ -277,4 +277,4 @@ __decorate([
|
|
|
277
277
|
__metadata("design:paramtypes", [Ctx, String]),
|
|
278
278
|
__metadata("design:returntype", Promise)
|
|
279
279
|
], SerializedCrudContract.prototype, "groupOf", null);
|
|
280
|
-
//# sourceMappingURL=serialized-crud-contract.js.map
|
|
280
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplZC1jcnVkLWNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnRyYWN0cy9jcnVkL3NlcmlhbGl6ZWQtY3J1ZC1jb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsMkJBQXdCO0FBRXJELE9BQU8sRUFBRSxPQUFPLElBQUksR0FBRyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxTQUFTLEVBQWtCLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFN0Q7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLE9BQU8sc0JBRVgsU0FBUSxrQkFBcUI7SUFDN0IsWUFBWSxJQUFZLEVBQUUsS0FBcUI7UUFDN0MsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBR2MsQUFBTixLQUFLLENBQUMsTUFBTSxDQUFDLEdBQVEsRUFBRSxLQUFhO1FBQzNDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFVLEVBQUUsS0FBSyxDQUFDLENBQU0sQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFHYyxBQUFOLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBUSxFQUFFLEdBQVc7UUFDdkMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQVUsRUFBRSxHQUFHLENBQUMsQ0FBTSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUdjLEFBQU4sS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFRLEVBQUUsS0FBYTtRQUMzQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMs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Q0FBQyxLQUFLLENBQUM7O3FDQUNRLEdBQUc7O29EQUk3QjtBQUdjO0lBRGQsV0FBVyxDQUFDLEtBQUssQ0FBQzs7cUNBRVosR0FBRzs7d0RBZVQ7QUFHYztJQURkLFdBQVcsQ0FBQyxLQUFLLENBQUM7O3FDQUVaLEdBQUc7O2tEQVFUO0FBR2M7SUFEZCxXQUFXLENBQUMsS0FBSyxDQUFDOztxQ0FDVyxHQUFHOzt1REFFaEM7QUFvQ2M7SUFEZCxXQUFXLEVBQUU7O3FDQUNXLEdBQUc7O2tEQUUzQjtBQUdjO0lBRGQsV0FBVyxDQUFDLEtBQUssQ0FBQzs7cUNBQ2EsR0FBRzs7eURBR2xDO0FBR2M7SUFEZCxXQUFXLEVBQUU7O3FDQUNvQixHQUFHOzt1REFRcEM7QUFHYztJQURkLFdBQVcsQ0FBQyxLQUFLLENBQUM7O3FDQUNTLEdBQUc7O3FEQUU5QjtBQUdjO0lBRGQsV0FBVyxDQUFDLEtBQUssQ0FBQzs7cUNBQ08sR0FBRzs7bURBRTVCO0FBR2M7SUFEZCxXQUFXLENBQUMsS0FBSyxDQUFDOztxQ0FDTyxHQUFHOzttREFFNUI7QUFHYztJQURkLFdBQVcsQ0FBQyxLQUFLLENBQUM7O3FDQUNPLEdBQUc7O21EQUU1QjtBQUdjO0lBRGQsV0FBVyxDQUFDLEtBQUssQ0FBQzs7cUNBQ08sR0FBRzs7bURBRTVCO0FBR2M7SUFEZCxXQUFXLENBQUMsS0FBSyxDQUFDOztxQ0FDWSxHQUFHOzt3REFFakM7QUFHYztJQURkLFdBQVcsQ0FBQyxLQUFLLENBQUM7O3FDQUNTLEdBQUc7O3FEQUU5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhYnJpY0NydWRDb250cmFjdCB9IGZyb20gXCIuL2NydWQtY29udHJhY3RcIjtcbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgQ29udGV4dCBhcyBDdHgsIFRyYW5zYWN0aW9uIH0gZnJvbSBcImZhYnJpYy1jb250cmFjdC1hcGlcIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBDb25kaXRpb24sIE9yZGVyRGlyZWN0aW9uIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBTZXJpYWxpemF0aW9uRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ1JVRCBjb250cmFjdCB2YXJpYW50IHRoYXQgc2VyaWFsaXplcy9kZXNlcmlhbGl6ZXMgcGF5bG9hZHNcbiAqIEBzdW1tYXJ5IEV4cG9zZXMgdGhlIHNhbWUgQ1JVRCBvcGVyYXRpb25zIGFzIEZhYnJpY0NydWRDb250cmFjdCBidXQgdGFrZXMgYW5kIHJldHVybnMgSlNPTiBzdHJpbmdzIHRvIGZhY2lsaXRhdGUgc2ltcGxlIGNsaWVudCBpbnRlcmFjdGlvbnMuXG4gKiBAdGVtcGxhdGUgTSAtIE1vZGVsIHR5cGUgaGFuZGxlZCBieSB0aGlzIGNvbnRyYWN0XG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBjb250cmFjdCBuYW1lXG4gKiBAcGFyYW0ge0NvbnN0cnVjdG9yPE0+fSBjbGF6eiAtIFRoZSBtb2RlbCBjb25zdHJ1Y3RvciB1c2VkIHRvIGluc3RhbnRpYXRlIG1vZGVscyBmcm9tIEpTT05cbiAqIEByZXR1cm4ge3ZvaWR9XG4gKiBAY2xhc3MgU2VyaWFsaXplZENydWRDb250cmFjdFxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGNvbnRyYWN0ID0gbmV3IFNlcmlhbGl6ZWRDcnVkQ29udHJhY3Q8TXlNb2RlbD4oJ015TW9kZWxDb250cmFjdCcsIE15TW9kZWwpO1xuICogLy8gQ2xpZW50IHN1Ym1pdHMgSlNPTiBzdHJpbmcgcGF5bG9hZHMgYW5kIHJlY2VpdmVzIEpTT04gc3RyaW5nIHJlc3BvbnNlc1xuICovXG5leHBvcnQgY2xhc3MgU2VyaWFsaXplZENydWRDb250cmFjdDxcbiAgTSBleHRlbmRzIE1vZGVsLFxuPiBleHRlbmRzIEZhYnJpY0NydWRDb250cmFjdDxNPiB7XG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgY2xheno6IENvbnN0cnVjdG9yPE0+KSB7XG4gICAgc3VwZXIobmFtZSwgY2xhenopO1xuICB9XG5cbiAgQFRyYW5zYWN0aW9uKClcbiAgb3ZlcnJpZGUgYXN5bmMgY3JlYXRlKGN0eDogQ3R4LCBtb2RlbDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemUoKGF3YWl0IHN1cGVyLmNyZWF0ZShjdHggYXMgYW55LCBtb2RlbCkpIGFzIE0pO1xuICB9XG5cbiAgQFRyYW5zYWN0aW9uKGZhbHNlKVxuICBvdmVycmlkZSBhc3luYyByZWFkKGN0eDogQ3R4LCBrZXk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplKChhd2FpdCBzdXBlci5yZWFkKGN0eCBhcyBhbnksIGtleSkpIGFzIE0pO1xuICB9XG5cbiAgQFRyYW5zYWN0aW9uKClcbiAgb3ZlcnJpZGUgYXN5bmMgdXBkYXRlKGN0eDogQ3R4LCBtb2RlbDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemUoKGF3YWl0IHN1cGVyLnVwZGF0ZShjdHgsIG1vZGVsKSkgYXMgTSk7XG4gIH1cblxuICBAVHJhbnNhY3Rpb24oKVxuICBvdmVycmlkZSBhc3luYyBkZWxldGUoY3R4OiBDdHgsIGtleTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemUoKGF3YWl0IHN1cGVyLmRlbGV0ZShjdHggYXMgYW55LCBrZXkpKSBhcyBNKTtcbiAgfVxuXG4gIEBUcmFuc2FjdGlvbigpXG4gIG92ZXJyaWRlIGFzeW5jIGRlbGV0ZUFsbChjdHg6IEN0eCwga2V5czogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBwYXJzZWRLZXlzOiBzdHJpbmdbXSA9IEpTT04ucGFyc2Uoa2V5cyk7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFxuICAgICAgKChhd2FpdCBzdXBlci5kZWxldGVBbGwoY3R4IGFzIGFueSwgcGFyc2VkS2V5cykpIGFzIE1bXSkubWFwKFxuICAgICAgICAobSkgPT4gdGhpcy5zZXJpYWxpemUobSkgYXMgc3RyaW5nXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIEBUcmFuc2FjdGlvbihmYWxzZSlcbiAgb3ZlcnJpZGUgYXN5bmMgcmVhZEFsbChjdHg6IEN0eCwga2V5czogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBwYXJzZWRLZXlzOiBzdHJpbmdbXSA9IEpTT04ucGFyc2Uoa2V5cyk7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFxuICAgICAgKChhd2FpdCBzdXBlci5yZWFkQWxsKGN0eCBhcyBhbnksIHBhcnNlZEtleXMpKSBhcyBNW10pLm1hcCgobSkgPT5cbiAgICAgICAgdGhpcy5zZXJpYWxpemUobSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgQFRyYW5zYWN0aW9uKClcbiAgb3ZlcnJpZGUgYXN5bmMgdXBkYXRlQWxsKGN0eDogQ3R4LCBtb2RlbHM6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgbGlzdDogc3RyaW5nW10gPSBKU09OLnBhcnNlKG1vZGVscyk7XG4gICAgY29uc3QgbW9kZWxMaXN0OiBNW10gPSBsaXN0XG4gICAgICAubWFwKChtKSA9PiB0aGlzLmRlc2VyaWFsaXplKG0pKVxuICAgICAgLm1hcCgobSkgPT4gbmV3IHRoaXMuY2xhenoobSkpO1xuXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFxuICAgICAgKChhd2FpdCBzdXBlci51cGRhdGVBbGwoY3R4IGFzIGFueSwgbW9kZWxMaXN0KSkgYXMgTVtdKS5tYXAoXG4gICAgICAgIChtKSA9PiB0aGlzLnNlcmlhbGl6ZShtKSBhcyBzdHJpbmdcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgQFRyYW5zYWN0aW9uKGZhbHNlKVxuICBvdmVycmlkZSBhc3luYyBzdGF0ZW1lbnQoY3R4OiBDdHgsIG1ldGhvZDogc3RyaW5nLCBhcmdzOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgYXJncyA9IEpTT04ucGFyc2UoYXJncyk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FcnJvcihgSW52YWxpZCBhcmdzOiAke2V9YCk7XG4gICAgfVxuICAgIGlmICghQXJyYXkuaXNBcnJheShhcmdzKSlcbiAgICAgIHRocm93IG5ldyBTZXJpYWxpemF0aW9uRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIGFyZ3M6ICR7SlNPTi5zdHJpbmdpZnkoYXJncyl9LiBtdXN0IGJlIGFuIGFycmF5YFxuICAgICAgKTtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYXdhaXQgc3VwZXIuc3RhdGVtZW50KGN0eCwgbWV0aG9kLCAuLi5hcmdzKSk7XG4gIH1cblxuICBAVHJhbnNhY3Rpb24oZmFsc2UpXG4gIG92ZXJyaWRlIGFzeW5jIGxpc3RCeShjdHg6IEN0eCwga2V5OiBzdHJpbmcsIG9yZGVyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoXG4gICAgICBhd2FpdCBzdXBlci5saXN0QnkoY3R4LCBrZXkgYXMga2V5b2YgTSwgb3JkZXIgYXMgT3JkZXJEaXJlY3Rpb24pXG4gICAgKTtcbiAgfVxuXG4gIEBUcmFuc2FjdGlvbihmYWxzZSlcbiAgb3ZlcnJpZGUgYXN5bmMgcGFnaW5hdGVCeShcbiAgICBjdHg6IEN0eCxcbiAgICBrZXk6IHN0cmluZyxcbiAgICBvcmRlcjogc3RyaW5nLFxuICAgIHJlZjogc3RyaW5nXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJlZiA9IEpTT04ucGFyc2UocmVmKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgU2VyaWFsaXphdGlvbkVycm9yKFxuICAgICAgICBgRmFpbGVkIHRvIGRlc2VyaWFsaXplIHBhZ2luYXRlQnkgcmVmZXJlbmNlOiAke2V9YFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFxuICAgICAgYXdhaXQgc3VwZXIucGFnaW5hdGVCeShjdHgsIGtleSwgb3JkZXIgYXMgYW55LCByZWYgYXMgYW55KVxuICAgICk7XG4gIH1cblxuICBAVHJhbnNhY3Rpb24oZmFsc2UpXG4gIG92ZXJyaWRlIGFzeW5jIHBhZ2UoXG4gICAgY3R4OiBDdHgsXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgICBkaXJlY3Rpb246IHN0cmluZyxcbiAgICByZWY6IHN0cmluZ1xuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJlZmVyZW5jZSA9IHR5cGVvZiByZWYgPT09IFwic3RyaW5nXCIgPyBKU09OLnBhcnNlKHJlZikgOiAocmVmIGFzIGFueSk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc3VwZXIucGFnZShjdHgsIHZhbHVlLCBkaXJlY3Rpb24sIHJlZmVyZW5jZSk7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHJlc3VsdCk7XG4gIH1cblxuICBAVHJhbnNhY3Rpb24oZmFsc2UpXG4gIG92ZXJyaWRlIGFzeW5jIGZpbmRPbmVCeShjdHg6IEN0eCwga2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYXdhaXQgc3VwZXIuZmluZE9uZUJ5KGN0eCwga2V5LCB2YWx1ZSkpO1xuICB9XG5cbiAgLy8gQFRyYW5zYWN0aW9uKGZhbHNlKVxuICBvdmVycmlkZSBhc3luYyBxdWVyeShcbiAgICBjdHg6IEN0eCxcbiAgICBjb25kaXRpb246IHN0cmluZyxcbiAgICBvcmRlckJ5OiBzdHJpbmcsXG4gICAgb3JkZXI6IHN0cmluZyxcbiAgICBsaW1pdD86IG51bWJlcixcbiAgICBza2lwPzogbnVtYmVyXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgbGV0IGNvbmQ6IENvbmRpdGlvbjxhbnk+O1xuICAgIHRyeSB7XG4gICAgICBjb25kID0gQ29uZGl0aW9uLmZyb20oSlNPTi5wYXJzZShjb25kaXRpb24pKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgU2VyaWFsaXphdGlvbkVycm9yKGBJbnZhbGlkIGNvbmRpdGlvbjogJHtlfWApO1xuICAgIH1cblxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShcbiAgICAgIGF3YWl0IHN1cGVyLnF1ZXJ5KGN0eCwgY29uZCwgb3JkZXJCeSwgb3JkZXIgYXMgYW55LCBsaW1pdCwgc2tpcClcbiAgICApO1xuICB9XG4gIC8vXG4gIC8vIC8vIEBUcmFuc2FjdGlvbihmYWxzZSlcbiAgLy8gb3ZlcnJpZGUgYXN5bmMgcmF3KFxuICAvLyAgIGNvbnRleHQ6IEN0eCxcbiAgLy8gICByYXdJbnB1dDogc3RyaW5nLFxuICAvLyAgIGRvY3NPbmx5OiBib29sZWFuLFxuICAvLyAgIC4uLmFyZ3M6IHN0cmluZ1tdXG4gIC8vICk6IFByb21pc2U8YW55PiB7XG4gIC8vICAgY29uc3QgeyBjdHggfSA9IGF3YWl0IHRoaXMubG9nQ3R4KFtjb250ZXh0XSwgdGhpcy5yYXcpO1xuICAvLyAgIGNvbnN0IHBhcnNlZElucHV0OiBNYW5nb1F1ZXJ5ID0gSlNPTi5wYXJzZShyYXdJbnB1dCk7XG4gIC8vICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGF3YWl0IHN1cGVyLnJhdyhjdHgsIHBhcnNlZElucHV0LCBkb2NzT25seSwgLi4uYXJncykpO1xuICAvLyB9XG5cbiAgQFRyYW5zYWN0aW9uKClcbiAgb3ZlcnJpZGUgYXN5bmMgaW5pdChjdHg6IEN0eCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHN1cGVyLmluaXQoY3R4KTtcbiAgfVxuXG4gIEBUcmFuc2FjdGlvbihmYWxzZSlcbiAgb3ZlcnJpZGUgYXN5bmMgaGVhbHRoY2hlY2soY3R4OiBDdHgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIC8vVE9ETzogVFJJTSBOT1QgV09SS0lORyBDSEVDSyBMQVRFUlxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhd2FpdCBzdXBlci5oZWFsdGhjaGVjayhjdHggYXMgYW55KSk7XG4gIH1cblxuICBAVHJhbnNhY3Rpb24oKVxuICBvdmVycmlkZSBhc3luYyBjcmVhdGVBbGwoY29udGV4dDogQ3R4LCBtb2RlbHM6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgbGlzdDogc3RyaW5nW10gPSBKU09OLnBhcnNlKG1vZGVscyk7XG4gICAgY29uc3QgbW9kZWxMaXN0OiBNW10gPSBsaXN0XG4gICAgICAubWFwKChtKSA9PiB0aGlzLmRlc2VyaWFsaXplKG0pKVxuICAgICAgLm1hcCgobSkgPT4gbmV3IHRoaXMuY2xhenoobSkpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gKGF3YWl0IHN1cGVyLmNyZWF0ZUFsbChjb250ZXh0LCBtb2RlbExpc3QpKSBhcyBNW107XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHJlc3VsdC5tYXAoKG0pID0+IHRoaXMuc2VyaWFsaXplKG0pIGFzIHN0cmluZykpO1xuICB9XG5cbiAgQFRyYW5zYWN0aW9uKGZhbHNlKVxuICBvdmVycmlkZSBhc3luYyBjb3VudE9mKGN0eDogQ3R4LCBrZXk/OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhd2FpdCBzdXBlci5jb3VudE9mKGN0eCBhcyBhbnksIGtleSkpO1xuICB9XG5cbiAgQFRyYW5zYWN0aW9uKGZhbHNlKVxuICBvdmVycmlkZSBhc3luYyBtYXhPZihjdHg6IEN0eCwga2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhd2FpdCBzdXBlci5tYXhPZihjdHggYXMgYW55LCBrZXkpKTtcbiAgfVxuXG4gIEBUcmFuc2FjdGlvbihmYWxzZSlcbiAgb3ZlcnJpZGUgYXN5bmMgbWluT2YoY3R4OiBDdHgsIGtleTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYXdhaXQgc3VwZXIubWluT2YoY3R4IGFzIGFueSwga2V5KSk7XG4gIH1cblxuICBAVHJhbnNhY3Rpb24oZmFsc2UpXG4gIG92ZXJyaWRlIGFzeW5jIGF2Z09mKGN0eDogQ3R4LCBrZXk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGF3YWl0IHN1cGVyLmF2Z09mKGN0eCBhcyBhbnksIGtleSkpO1xuICB9XG5cbiAgQFRyYW5zYWN0aW9uKGZhbHNlKVxuICBvdmVycmlkZSBhc3luYyBzdW1PZihjdHg6IEN0eCwga2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhd2FpdCBzdXBlci5zdW1PZihjdHggYXMgYW55LCBrZXkpKTtcbiAgfVxuXG4gIEBUcmFuc2FjdGlvbihmYWxzZSlcbiAgb3ZlcnJpZGUgYXN5bmMgZGlzdGluY3RPZihjdHg6IEN0eCwga2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhd2FpdCBzdXBlci5kaXN0aW5jdE9mKGN0eCBhcyBhbnksIGtleSkpO1xuICB9XG5cbiAgQFRyYW5zYWN0aW9uKGZhbHNlKVxuICBvdmVycmlkZSBhc3luYyBncm91cE9mKGN0eDogQ3R4LCBrZXk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGF3YWl0IHN1cGVyLmdyb3VwT2YoY3R4IGFzIGFueSwga2V5KSk7XG4gIH1cbn1cbiJdfQ==
|