@azure/msal-common 11.0.0 → 12.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/dist/_virtual/_tslib.js +1 -1
  2. package/dist/account/AuthToken.js +1 -1
  3. package/dist/account/CcsCredential.js +1 -1
  4. package/dist/account/ClientInfo.js +1 -1
  5. package/dist/account/TokenClaims.d.ts +5 -0
  6. package/dist/account/TokenClaims.d.ts.map +1 -1
  7. package/dist/authority/Authority.d.ts +12 -2
  8. package/dist/authority/Authority.d.ts.map +1 -1
  9. package/dist/authority/Authority.js +34 -4
  10. package/dist/authority/Authority.js.map +1 -1
  11. package/dist/authority/AuthorityFactory.d.ts.map +1 -1
  12. package/dist/authority/AuthorityFactory.js +4 -3
  13. package/dist/authority/AuthorityFactory.js.map +1 -1
  14. package/dist/authority/AuthorityMetadata.js +1 -1
  15. package/dist/authority/AuthorityOptions.js +1 -1
  16. package/dist/authority/AuthorityType.d.ts +2 -1
  17. package/dist/authority/AuthorityType.d.ts.map +1 -1
  18. package/dist/authority/AuthorityType.js +2 -1
  19. package/dist/authority/AuthorityType.js.map +1 -1
  20. package/dist/authority/CloudInstanceDiscoveryErrorResponse.js +1 -1
  21. package/dist/authority/CloudInstanceDiscoveryResponse.js +1 -1
  22. package/dist/authority/OpenIdConfigResponse.js +1 -1
  23. package/dist/authority/ProtocolMode.js +1 -1
  24. package/dist/authority/RegionDiscovery.js +1 -1
  25. package/dist/cache/CacheManager.d.ts +102 -51
  26. package/dist/cache/CacheManager.d.ts.map +1 -1
  27. package/dist/cache/CacheManager.js +414 -245
  28. package/dist/cache/CacheManager.js.map +1 -1
  29. package/dist/cache/entities/AccessTokenEntity.js +1 -1
  30. package/dist/cache/entities/AccountEntity.js +1 -1
  31. package/dist/cache/entities/AppMetadataEntity.js +1 -1
  32. package/dist/cache/entities/AuthorityMetadataEntity.js +1 -1
  33. package/dist/cache/entities/CacheRecord.js +1 -1
  34. package/dist/cache/entities/CredentialEntity.d.ts +0 -11
  35. package/dist/cache/entities/CredentialEntity.d.ts.map +1 -1
  36. package/dist/cache/entities/CredentialEntity.js +3 -42
  37. package/dist/cache/entities/CredentialEntity.js.map +1 -1
  38. package/dist/cache/entities/IdTokenEntity.js +1 -1
  39. package/dist/cache/entities/RefreshTokenEntity.js +1 -1
  40. package/dist/cache/entities/ServerTelemetryEntity.js +1 -1
  41. package/dist/cache/entities/ThrottlingEntity.js +1 -1
  42. package/dist/cache/interface/ICacheManager.d.ts +26 -17
  43. package/dist/cache/interface/ICacheManager.d.ts.map +1 -1
  44. package/dist/cache/persistence/TokenCacheContext.js +1 -1
  45. package/dist/cache/utils/CacheTypes.d.ts +9 -6
  46. package/dist/cache/utils/CacheTypes.d.ts.map +1 -1
  47. package/dist/client/AuthorizationCodeClient.js +1 -1
  48. package/dist/client/BaseClient.js +1 -1
  49. package/dist/client/ClientCredentialClient.d.ts +0 -1
  50. package/dist/client/ClientCredentialClient.d.ts.map +1 -1
  51. package/dist/client/ClientCredentialClient.js +3 -5
  52. package/dist/client/ClientCredentialClient.js.map +1 -1
  53. package/dist/client/DeviceCodeClient.js +1 -1
  54. package/dist/client/OnBehalfOfClient.d.ts.map +1 -1
  55. package/dist/client/OnBehalfOfClient.js +6 -8
  56. package/dist/client/OnBehalfOfClient.js.map +1 -1
  57. package/dist/client/RefreshTokenClient.js +3 -3
  58. package/dist/client/RefreshTokenClient.js.map +1 -1
  59. package/dist/client/SilentFlowClient.js +2 -2
  60. package/dist/client/SilentFlowClient.js.map +1 -1
  61. package/dist/client/UsernamePasswordClient.js +1 -1
  62. package/dist/config/ClientConfiguration.d.ts.map +1 -1
  63. package/dist/config/ClientConfiguration.js +3 -3
  64. package/dist/config/ClientConfiguration.js.map +1 -1
  65. package/dist/crypto/ICrypto.js +1 -1
  66. package/dist/crypto/JoseHeader.js +1 -1
  67. package/dist/crypto/PopTokenGenerator.js +1 -1
  68. package/dist/error/AuthError.js +1 -1
  69. package/dist/error/ClientAuthError.js +1 -1
  70. package/dist/error/ClientConfigurationError.js +1 -1
  71. package/dist/error/InteractionRequiredAuthError.js +1 -1
  72. package/dist/error/JoseHeaderError.js +1 -1
  73. package/dist/error/ServerError.js +1 -1
  74. package/dist/index.cjs.js +631 -478
  75. package/dist/index.cjs.js.map +1 -1
  76. package/dist/index.d.ts +2 -2
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +2 -2
  79. package/dist/logger/Logger.js +1 -1
  80. package/dist/network/INetworkModule.js +1 -1
  81. package/dist/network/NetworkManager.js +1 -1
  82. package/dist/network/ThrottlingUtils.d.ts +1 -1
  83. package/dist/network/ThrottlingUtils.d.ts.map +1 -1
  84. package/dist/network/ThrottlingUtils.js +4 -4
  85. package/dist/network/ThrottlingUtils.js.map +1 -1
  86. package/dist/packageMetadata.d.ts +1 -1
  87. package/dist/packageMetadata.js +2 -2
  88. package/dist/packageMetadata.js.map +1 -1
  89. package/dist/request/AuthenticationHeaderParser.js +1 -1
  90. package/dist/request/RequestParameterBuilder.js +1 -1
  91. package/dist/request/RequestValidator.js +1 -1
  92. package/dist/request/ScopeSet.d.ts +6 -0
  93. package/dist/request/ScopeSet.d.ts.map +1 -1
  94. package/dist/request/ScopeSet.js +17 -2
  95. package/dist/request/ScopeSet.js.map +1 -1
  96. package/dist/response/ResponseHandler.js +1 -1
  97. package/dist/telemetry/performance/PerformanceClient.js +1 -1
  98. package/dist/telemetry/performance/PerformanceEvent.js +1 -1
  99. package/dist/telemetry/performance/StubPerformanceClient.js +1 -1
  100. package/dist/telemetry/server/ServerTelemetryManager.js +1 -1
  101. package/dist/url/UrlString.js +1 -1
  102. package/dist/utils/Constants.d.ts +2 -19
  103. package/dist/utils/Constants.d.ts.map +1 -1
  104. package/dist/utils/Constants.js +5 -18
  105. package/dist/utils/Constants.js.map +1 -1
  106. package/dist/utils/ProtocolUtils.js +1 -1
  107. package/dist/utils/StringUtils.js +1 -1
  108. package/dist/utils/TimeUtils.js +1 -1
  109. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CacheManager.js","sources":["../../src/cache/CacheManager.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AccountCache, AccountFilter, CredentialFilter, CredentialCache, ValidCredentialType, AppMetadataFilter, AppMetadataCache } from \"./utils/CacheTypes\";\nimport { CacheRecord } from \"./entities/CacheRecord\";\nimport { CacheSchemaType, CredentialType, Constants, APP_METADATA, THE_FAMILY_ID, AUTHORITY_METADATA_CONSTANTS, AuthenticationScheme } from \"../utils/Constants\";\nimport { CredentialEntity } from \"./entities/CredentialEntity\";\nimport { ScopeSet } from \"../request/ScopeSet\";\nimport { AccountEntity } from \"./entities/AccountEntity\";\nimport { AccessTokenEntity } from \"./entities/AccessTokenEntity\";\nimport { IdTokenEntity } from \"./entities/IdTokenEntity\";\nimport { RefreshTokenEntity } from \"./entities/RefreshTokenEntity\";\nimport { AuthError } from \"../error/AuthError\";\nimport { ICacheManager } from \"./interface/ICacheManager\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { AccountInfo } from \"../account/AccountInfo\";\nimport { AppMetadataEntity } from \"./entities/AppMetadataEntity\";\nimport { ServerTelemetryEntity } from \"./entities/ServerTelemetryEntity\";\nimport { ThrottlingEntity } from \"./entities/ThrottlingEntity\";\nimport { AuthToken } from \"../account/AuthToken\";\nimport { ICrypto } from \"../crypto/ICrypto\";\nimport { AuthorityMetadataEntity } from \"./entities/AuthorityMetadataEntity\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\n\n/**\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\n */\nexport abstract class CacheManager implements ICacheManager {\n protected clientId: string;\n protected cryptoImpl: ICrypto;\n\n constructor(clientId: string, cryptoImpl: ICrypto) {\n this.clientId = clientId;\n this.cryptoImpl = cryptoImpl;\n }\n\n /**\n * fetch the account entity from the platform cache\n * @param accountKey\n */\n abstract getAccount(accountKey: string): AccountEntity | null;\n\n /**\n * set account entity in the platform cache\n * @param account\n */\n abstract setAccount(account: AccountEntity): void;\n\n /**\n * fetch the idToken entity from the platform cache\n * @param idTokenKey\n */\n abstract getIdTokenCredential(idTokenKey: string): IdTokenEntity | null;\n\n /**\n * set idToken entity to the platform cache\n * @param idToken\n */\n abstract setIdTokenCredential(idToken: IdTokenEntity): void;\n\n /**\n * fetch the idToken entity from the platform cache\n * @param accessTokenKey\n */\n abstract getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null;\n\n /**\n * set idToken entity to the platform cache\n * @param accessToken\n */\n abstract setAccessTokenCredential(accessToken: AccessTokenEntity): void;\n\n /**\n * fetch the idToken entity from the platform cache\n * @param refreshTokenKey\n */\n abstract getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null;\n\n /**\n * set idToken entity to the platform cache\n * @param refreshToken\n */\n abstract setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void;\n\n /**\n * fetch appMetadata entity from the platform cache\n * @param appMetadataKey\n */\n abstract getAppMetadata(appMetadataKey: string): AppMetadataEntity | null;\n\n /**\n * set appMetadata entity to the platform cache\n * @param appMetadata\n */\n abstract setAppMetadata(appMetadata: AppMetadataEntity): void;\n\n /**\n * fetch server telemetry entity from the platform cache\n * @param serverTelemetryKey\n */\n abstract getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null;\n\n /**\n * set server telemetry entity to the platform cache\n * @param serverTelemetryKey\n * @param serverTelemetry\n */\n abstract setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void;\n\n /**\n * fetch cloud discovery metadata entity from the platform cache\n * @param key\n */\n abstract getAuthorityMetadata(key: string): AuthorityMetadataEntity | null;\n\n /**\n *\n */\n abstract getAuthorityMetadataKeys(): Array<string>;\n\n /**\n * set cloud discovery metadata entity to the platform cache\n * @param key\n * @param value\n */\n abstract setAuthorityMetadata(key: string, value: AuthorityMetadataEntity): void;\n\n /**\n * fetch throttling entity from the platform cache\n * @param throttlingCacheKey\n */\n abstract getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null;\n\n /**\n * set throttling entity to the platform cache\n * @param throttlingCacheKey\n * @param throttlingCache\n */\n abstract setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void;;\n\n /**\n * Function to remove an item from cache given its key.\n * @param key\n */\n abstract removeItem(key: string, type?: string): boolean;\n\n /**\n * Function which returns boolean whether cache contains a specific key.\n * @param key\n */\n abstract containsKey(key: string, type?: string): boolean;\n\n /**\n * Function which retrieves all current keys from the cache.\n */\n abstract getKeys(): string[];\n\n /**\n * Function which clears cache.\n */\n abstract clear(): Promise<void>;\n\n /**\n * Function which updates an outdated credential cache key\n */\n abstract updateCredentialCacheKey(currentCacheKey: string, credential: ValidCredentialType): string;\n\n /**\n * Returns all accounts in cache\n */\n getAllAccounts(): AccountInfo[] {\n const currentAccounts: AccountCache = this.getAccountsFilteredBy();\n const accountValues: AccountEntity[] = Object.keys(currentAccounts).map(accountKey => currentAccounts[accountKey]);\n const numAccounts = accountValues.length;\n if (numAccounts < 1) {\n return [];\n } else {\n const allAccounts = accountValues.map<AccountInfo>((value) => {\n const accountEntity = CacheManager.toObject<AccountEntity>(new AccountEntity(), value);\n const accountInfo = accountEntity.getAccountInfo();\n const idToken = this.readIdTokenFromCache(this.clientId, accountInfo);\n if (idToken && !accountInfo.idTokenClaims) {\n accountInfo.idToken = idToken.secret;\n accountInfo.idTokenClaims = new AuthToken(idToken.secret, this.cryptoImpl).claims;\n }\n\n return accountInfo;\n\n });\n return allAccounts;\n }\n }\n\n /**\n * saves a cache record\n * @param cacheRecord\n */\n async saveCacheRecord(cacheRecord: CacheRecord): Promise<void> {\n if (!cacheRecord) {\n throw ClientAuthError.createNullOrUndefinedCacheRecord();\n }\n\n if (!!cacheRecord.account) {\n this.setAccount(cacheRecord.account);\n }\n\n if (!!cacheRecord.idToken) {\n this.setIdTokenCredential(cacheRecord.idToken);\n }\n\n if (!!cacheRecord.accessToken) {\n await this.saveAccessToken(cacheRecord.accessToken);\n }\n\n if (!!cacheRecord.refreshToken) {\n this.setRefreshTokenCredential(cacheRecord.refreshToken);\n }\n\n if (!!cacheRecord.appMetadata) {\n this.setAppMetadata(cacheRecord.appMetadata);\n }\n }\n\n /**\n * saves access token credential\n * @param credential\n */\n private async saveAccessToken(credential: AccessTokenEntity): Promise<void> {\n const currentTokenCache = this.getCredentialsFilteredBy({\n clientId: credential.clientId,\n credentialType: credential.credentialType,\n environment: credential.environment,\n homeAccountId: credential.homeAccountId,\n realm: credential.realm,\n tokenType: credential.tokenType,\n requestedClaimsHash: credential.requestedClaimsHash\n });\n\n const currentScopes = ScopeSet.fromString(credential.target);\n const currentAccessTokens: AccessTokenEntity[] = Object.keys(currentTokenCache.accessTokens).map(key => currentTokenCache.accessTokens[key]);\n\n if (currentAccessTokens) {\n const removedAccessTokens: Array<Promise<boolean>> = [];\n currentAccessTokens.forEach((tokenEntity) => {\n const tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\n if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\n removedAccessTokens.push(this.removeCredential(tokenEntity));\n }\n });\n await Promise.all(removedAccessTokens);\n }\n this.setAccessTokenCredential(credential);\n }\n\n /**\n * retrieve accounts matching all provided filters; if no filter is set, get all accounts\n * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\n * @param homeAccountId\n * @param environment\n * @param realm\n */\n getAccountsFilteredBy(accountFilter?: AccountFilter): AccountCache {\n return this.getAccountsFilteredByInternal(\n accountFilter ? accountFilter.homeAccountId : Constants.EMPTY_STRING,\n accountFilter ? accountFilter.environment : Constants.EMPTY_STRING,\n accountFilter ? accountFilter.realm : Constants.EMPTY_STRING,\n accountFilter ? accountFilter.nativeAccountId: Constants.EMPTY_STRING,\n );\n }\n\n /**\n * retrieve accounts matching all provided filters; if no filter is set, get all accounts\n * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\n * @param homeAccountId\n * @param environment\n * @param realm\n */\n private getAccountsFilteredByInternal(\n homeAccountId?: string,\n environment?: string,\n realm?: string,\n nativeAccountId?: string,\n ): AccountCache {\n const allCacheKeys = this.getKeys();\n const matchingAccounts: AccountCache = {};\n\n allCacheKeys.forEach((cacheKey) => {\n const entity: AccountEntity | null = this.getAccount(cacheKey);\n\n if (!entity) {\n return;\n }\n\n if (!!homeAccountId && !this.matchHomeAccountId(entity, homeAccountId)) {\n return;\n }\n\n if (!!environment && !this.matchEnvironment(entity, environment)) {\n return;\n }\n\n if (!!realm && !this.matchRealm(entity, realm)) {\n return;\n }\n\n if (!!nativeAccountId && !this.matchNativeAccountId(entity, nativeAccountId)) {\n return;\n }\n\n matchingAccounts[cacheKey] = entity;\n });\n\n return matchingAccounts;\n }\n\n /**\n * retrieve credentails matching all provided filters; if no filter is set, get all credentials\n * @param homeAccountId\n * @param environment\n * @param credentialType\n * @param clientId\n * @param realm\n * @param target\n */\n getCredentialsFilteredBy(filter: CredentialFilter): CredentialCache {\n return this.getCredentialsFilteredByInternal(\n filter.homeAccountId,\n filter.environment,\n filter.credentialType,\n filter.clientId,\n filter.familyId,\n filter.realm,\n filter.target,\n filter.userAssertionHash,\n filter.tokenType,\n filter.keyId,\n filter.requestedClaimsHash\n );\n }\n\n /**\n * Support function to help match credentials\n * @param homeAccountId\n * @param environment\n * @param credentialType\n * @param clientId\n * @param realm\n * @param target\n * @param userAssertionHash\n * @param tokenType\n */\n private getCredentialsFilteredByInternal(\n homeAccountId?: string,\n environment?: string,\n credentialType?: string,\n clientId?: string,\n familyId?: string,\n realm?: string,\n target?: string,\n userAssertionHash?: string,\n tokenType?: AuthenticationScheme,\n keyId?: string,\n requestedClaimsHash?: string\n ): CredentialCache {\n const allCacheKeys = this.getKeys();\n const matchingCredentials: CredentialCache = {\n idTokens: {},\n accessTokens: {},\n refreshTokens: {},\n };\n\n allCacheKeys.forEach((cacheKey) => {\n // don't parse any non-credential type cache entities\n const credType = CredentialEntity.getCredentialType(cacheKey);\n\n if (credType === Constants.NOT_DEFINED) {\n return;\n }\n\n // Attempt retrieval\n const entity = this.getSpecificCredential(cacheKey, credType);\n\n if (!entity) {\n return;\n }\n\n if (!!userAssertionHash && !this.matchUserAssertionHash(entity, userAssertionHash)) {\n return;\n }\n\n /*\n * homeAccountId can undefined, and we want to filter out cached items that have a homeAccountId of \"\"\n * because we don't want a client_credential request to return a cached token that has a homeAccountId\n */\n if ((typeof homeAccountId === \"string\") && !this.matchHomeAccountId(entity, homeAccountId)) {\n return;\n }\n\n if (!!environment && !this.matchEnvironment(entity, environment)) {\n return;\n }\n\n if (!!realm && !this.matchRealm(entity, realm)) {\n return;\n }\n\n if (!!credentialType && !this.matchCredentialType(entity, credentialType)) {\n return;\n }\n\n if (!!clientId && !this.matchClientId(entity, clientId)) {\n return;\n }\n\n if (!!familyId && !this.matchFamilyId(entity, familyId)) {\n return;\n }\n\n /*\n * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\n * Resource specific refresh tokens case will be added when the support is deemed necessary\n */\n if (!!target && !this.matchTarget(entity, target)) {\n return;\n }\n\n // If request OR cached entity has requested Claims Hash, check if they match\n if (requestedClaimsHash || entity.requestedClaimsHash) {\n // Don't match if either is undefined or they are different\n if (entity.requestedClaimsHash !== requestedClaimsHash) {\n return;\n }\n }\n\n // Access Token with Auth Scheme specific matching\n if (credentialType === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) {\n if(!!tokenType && !this.matchTokenType(entity, tokenType)) {\n return;\n }\n\n // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key\n if (tokenType === AuthenticationScheme.SSH) {\n if(keyId && !this.matchKeyId(entity, keyId)) {\n return;\n }\n }\n }\n\n // At this point, the entity matches the request, update cache key if key schema has changed\n const updatedCacheKey = this.updateCredentialCacheKey(cacheKey, entity);\n\n switch (credType) {\n case CredentialType.ID_TOKEN:\n matchingCredentials.idTokens[updatedCacheKey] = entity as IdTokenEntity;\n break;\n case CredentialType.ACCESS_TOKEN:\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:\n matchingCredentials.accessTokens[updatedCacheKey] = entity as AccessTokenEntity;\n break;\n case CredentialType.REFRESH_TOKEN:\n matchingCredentials.refreshTokens[updatedCacheKey] = entity as RefreshTokenEntity;\n break;\n }\n });\n\n return matchingCredentials;\n }\n\n /**\n * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\n * @param filter\n */\n getAppMetadataFilteredBy(filter: AppMetadataFilter): AppMetadataCache {\n return this.getAppMetadataFilteredByInternal(\n filter.environment,\n filter.clientId,\n );\n }\n\n /**\n * Support function to help match appMetadata\n * @param environment\n * @param clientId\n */\n private getAppMetadataFilteredByInternal(\n environment?: string,\n clientId?: string\n ): AppMetadataCache {\n\n const allCacheKeys = this.getKeys();\n const matchingAppMetadata: AppMetadataCache = {};\n\n allCacheKeys.forEach((cacheKey) => {\n // don't parse any non-appMetadata type cache entities\n if (!this.isAppMetadata(cacheKey)) {\n return;\n }\n\n // Attempt retrieval\n const entity = this.getAppMetadata(cacheKey);\n\n if (!entity) {\n return;\n }\n\n if (!!environment && !this.matchEnvironment(entity, environment)) {\n return;\n }\n\n if (!!clientId && !this.matchClientId(entity, clientId)) {\n return;\n }\n\n matchingAppMetadata[cacheKey] = entity;\n\n });\n\n return matchingAppMetadata;\n }\n\n /**\n * retrieve authorityMetadata that contains a matching alias\n * @param filter\n */\n getAuthorityMetadataByAlias(host: string): AuthorityMetadataEntity | null {\n const allCacheKeys = this.getAuthorityMetadataKeys();\n let matchedEntity = null;\n\n allCacheKeys.forEach((cacheKey) => {\n // don't parse any non-authorityMetadata type cache entities\n if (!this.isAuthorityMetadata(cacheKey) || cacheKey.indexOf(this.clientId) === -1) {\n return;\n }\n\n // Attempt retrieval\n const entity = this.getAuthorityMetadata(cacheKey);\n\n if (!entity) {\n return;\n }\n\n if (entity.aliases.indexOf(host) === -1) {\n return;\n }\n\n matchedEntity = entity;\n\n });\n\n return matchedEntity;\n }\n\n /**\n * Removes all accounts and related tokens from cache.\n */\n async removeAllAccounts(): Promise<boolean> {\n const allCacheKeys = this.getKeys();\n const removedAccounts: Array<Promise<boolean>> = [];\n\n allCacheKeys.forEach((cacheKey) => {\n const entity = this.getAccount(cacheKey);\n if (!entity) {\n return;\n }\n removedAccounts.push(this.removeAccount(cacheKey));\n });\n\n await Promise.all(removedAccounts);\n return true;\n }\n\n /**\n * returns a boolean if the given account is removed\n * @param account\n */\n async removeAccount(accountKey: string): Promise<boolean> {\n const account = this.getAccount(accountKey);\n if (!account) {\n throw ClientAuthError.createNoAccountFoundError();\n }\n return (await this.removeAccountContext(account) && this.removeItem(accountKey, CacheSchemaType.ACCOUNT));\n }\n\n /**\n * Removes credentials associated with the provided account\n * @param account\n */\n async removeAccountContext(account: AccountEntity): Promise<boolean> {\n const allCacheKeys = this.getKeys();\n const accountId = account.generateAccountId();\n const removedCredentials: Array<Promise<boolean>> = [];\n\n allCacheKeys.forEach((cacheKey) => {\n // don't parse any non-credential type cache entities\n const credType = CredentialEntity.getCredentialType(cacheKey);\n if (credType === Constants.NOT_DEFINED) {\n return;\n }\n\n const cacheEntity = this.getSpecificCredential(cacheKey, credType);\n if (!!cacheEntity && accountId === cacheEntity.generateAccountId()) {\n removedCredentials.push(this.removeCredential(cacheEntity));\n }\n });\n\n await Promise.all(removedCredentials);\n return true;\n }\n\n /**\n * returns a boolean if the given credential is removed\n * @param credential\n */\n async removeCredential(credential: CredentialEntity): Promise<boolean> {\n const key = credential.generateCredentialKey();\n\n // Remove Token Binding Key from key store for PoP Tokens Credentials\n if (credential.credentialType.toLowerCase() === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) {\n if(credential.tokenType === AuthenticationScheme.POP) {\n const accessTokenWithAuthSchemeEntity = credential as AccessTokenEntity;\n const kid = accessTokenWithAuthSchemeEntity.keyId;\n\n if (kid) {\n try {\n await this.cryptoImpl.removeTokenBindingKey(kid);\n } catch (error) {\n throw ClientAuthError.createBindingKeyNotRemovedError();\n }\n }\n }\n }\n\n return this.removeItem(key, CacheSchemaType.CREDENTIAL);\n }\n\n /**\n * Removes all app metadata objects from cache.\n */\n removeAppMetadata(): boolean {\n const allCacheKeys = this.getKeys();\n allCacheKeys.forEach((cacheKey) => {\n if (this.isAppMetadata(cacheKey)) {\n this.removeItem(cacheKey, CacheSchemaType.APP_METADATA);\n }\n });\n\n return true;\n }\n\n /**\n * Retrieve the cached credentials into a cacherecord\n * @param account\n * @param clientId\n * @param scopes\n * @param environment\n * @param authScheme\n */\n readCacheRecord(account: AccountInfo, clientId: string, request: BaseAuthRequest, environment: string): CacheRecord {\n\n const cachedAccount = this.readAccountFromCache(account);\n const cachedIdToken = this.readIdTokenFromCache(clientId, account);\n const cachedAccessToken = this.readAccessTokenFromCache(clientId, account, request);\n const cachedRefreshToken = this.readRefreshTokenFromCache(clientId, account, false);\n const cachedAppMetadata = this.readAppMetadataFromCache(environment, clientId);\n\n if (cachedAccount && cachedIdToken) {\n cachedAccount.idTokenClaims = new AuthToken(cachedIdToken.secret, this.cryptoImpl).claims;\n }\n\n return {\n account: cachedAccount,\n idToken: cachedIdToken,\n accessToken: cachedAccessToken,\n refreshToken: cachedRefreshToken,\n appMetadata: cachedAppMetadata,\n };\n }\n\n /**\n * Retrieve AccountEntity from cache\n * @param account\n */\n readAccountFromCache(account: AccountInfo): AccountEntity | null {\n const accountKey: string = AccountEntity.generateAccountCacheKey(account);\n return this.getAccount(accountKey);\n }\n\n /**\n * Retrieve AccountEntity from cache\n * @param nativeAccountId\n * @returns AccountEntity or Null\n */\n readAccountFromCacheWithNativeAccountId(nativeAccountId: string): AccountEntity | null {\n // fetch account from memory\n const accountFilter: AccountFilter = {\n nativeAccountId\n };\n const accountCache: AccountCache = this.getAccountsFilteredBy(accountFilter);\n const accounts = Object.keys(accountCache).map((key) => accountCache[key]);\n\n if (accounts.length < 1) {\n return null;\n } else if (accounts.length > 1) {\n throw ClientAuthError.createMultipleMatchingAccountsInCacheError();\n }\n\n return accounts[0];\n }\n\n /**\n * Retrieve IdTokenEntity from cache\n * @param clientId\n * @param account\n * @param inputRealm\n */\n readIdTokenFromCache(clientId: string, account: AccountInfo): IdTokenEntity | null {\n const idTokenFilter: CredentialFilter = {\n homeAccountId: account.homeAccountId,\n environment: account.environment,\n credentialType: CredentialType.ID_TOKEN,\n clientId: clientId,\n realm: account.tenantId,\n };\n\n const credentialCache: CredentialCache = this.getCredentialsFilteredBy(idTokenFilter);\n const idTokens = Object.keys(credentialCache.idTokens).map((key) => credentialCache.idTokens[key]);\n const numIdTokens = idTokens.length;\n\n if (numIdTokens < 1) {\n return null;\n } else if (numIdTokens > 1) {\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\n }\n\n return idTokens[0] as IdTokenEntity;\n }\n\n /**\n * Retrieve AccessTokenEntity from cache\n * @param clientId\n * @param account\n * @param scopes\n * @param authScheme\n */\n readAccessTokenFromCache(clientId: string, account: AccountInfo, request: BaseAuthRequest): AccessTokenEntity | null {\n const scopes = new ScopeSet(request.scopes || []);\n const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\n /*\n * Distinguish between Bearer and PoP/SSH token cache types\n * Cast to lowercase to handle \"bearer\" from ADFS\n */\n const credentialType = (authScheme && authScheme.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME : CredentialType.ACCESS_TOKEN;\n\n const accessTokenFilter: CredentialFilter = {\n homeAccountId: account.homeAccountId,\n environment: account.environment,\n credentialType: credentialType,\n clientId,\n realm: account.tenantId,\n target: scopes.printScopesLowerCase(),\n tokenType: authScheme,\n keyId: request.sshKid,\n requestedClaimsHash: request.requestedClaimsHash,\n };\n\n const credentialCache: CredentialCache = this.getCredentialsFilteredBy(accessTokenFilter);\n\n const accessTokens = Object.keys(credentialCache.accessTokens).map((key) => credentialCache.accessTokens[key]);\n\n const numAccessTokens = accessTokens.length;\n if (numAccessTokens < 1) {\n return null;\n } else if (numAccessTokens > 1) {\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\n }\n\n return accessTokens[0] as AccessTokenEntity;\n }\n\n /**\n * Helper to retrieve the appropriate refresh token from cache\n * @param clientId\n * @param account\n * @param familyRT\n */\n readRefreshTokenFromCache(clientId: string, account: AccountInfo, familyRT: boolean): RefreshTokenEntity | null {\n const id = familyRT ? THE_FAMILY_ID : undefined;\n const refreshTokenFilter: CredentialFilter = {\n homeAccountId: account.homeAccountId,\n environment: account.environment,\n credentialType: CredentialType.REFRESH_TOKEN,\n clientId: clientId,\n familyId: id,\n };\n\n const credentialCache: CredentialCache = this.getCredentialsFilteredBy(refreshTokenFilter);\n const refreshTokens = Object.keys(credentialCache.refreshTokens).map((key) => credentialCache.refreshTokens[key]);\n\n const numRefreshTokens = refreshTokens.length;\n if (numRefreshTokens < 1) {\n return null;\n }\n // address the else case after remove functions address environment aliases\n\n return refreshTokens[0] as RefreshTokenEntity;\n }\n\n /**\n * Retrieve AppMetadataEntity from cache\n */\n readAppMetadataFromCache(environment: string, clientId: string): AppMetadataEntity | null {\n const appMetadataFilter: AppMetadataFilter = {\n environment,\n clientId,\n };\n\n const appMetadata: AppMetadataCache = this.getAppMetadataFilteredBy(appMetadataFilter);\n const appMetadataEntries: AppMetadataEntity[] = Object.keys(appMetadata).map((key) => appMetadata[key]);\n\n const numAppMetadata = appMetadataEntries.length;\n if (numAppMetadata < 1) {\n return null;\n } else if (numAppMetadata > 1) {\n throw ClientAuthError.createMultipleMatchingAppMetadataInCacheError();\n }\n\n return appMetadataEntries[0] as AppMetadataEntity;\n }\n\n /**\n * Return the family_id value associated with FOCI\n * @param environment\n * @param clientId\n */\n isAppMetadataFOCI(environment: string, clientId: string): boolean {\n const appMetadata = this.readAppMetadataFromCache(environment, clientId);\n return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\n }\n\n /**\n * helper to match account ids\n * @param value\n * @param homeAccountId\n */\n private matchHomeAccountId(entity: AccountEntity | CredentialEntity, homeAccountId: string): boolean {\n return !!((typeof entity.homeAccountId === \"string\") && (homeAccountId === entity.homeAccountId));\n }\n\n /**\n * helper to match assertion\n * @param value\n * @param oboAssertion\n */\n private matchUserAssertionHash(entity: CredentialEntity, userAssertionHash: string): boolean {\n return !!(entity.userAssertionHash && userAssertionHash === entity.userAssertionHash);\n }\n\n /**\n * helper to match environment\n * @param value\n * @param environment\n */\n private matchEnvironment(entity: AccountEntity | CredentialEntity | AppMetadataEntity, environment: string): boolean {\n const cloudMetadata = this.getAuthorityMetadataByAlias(environment);\n if (cloudMetadata && cloudMetadata.aliases.indexOf(entity.environment) > -1) {\n return true;\n }\n\n return false;\n }\n\n /**\n * helper to match credential type\n * @param entity\n * @param credentialType\n */\n private matchCredentialType(entity: CredentialEntity, credentialType: string): boolean {\n return (entity.credentialType && credentialType.toLowerCase() === entity.credentialType.toLowerCase());\n }\n\n /**\n * helper to match client ids\n * @param entity\n * @param clientId\n */\n private matchClientId(entity: CredentialEntity | AppMetadataEntity, clientId: string): boolean {\n return !!(entity.clientId && clientId === entity.clientId);\n }\n\n /**\n * helper to match family ids\n * @param entity\n * @param familyId\n */\n private matchFamilyId(entity: CredentialEntity | AppMetadataEntity, familyId: string): boolean {\n return !!(entity.familyId && familyId === entity.familyId);\n }\n\n /**\n * helper to match realm\n * @param entity\n * @param realm\n */\n private matchRealm(entity: AccountEntity | CredentialEntity, realm: string): boolean {\n return !!(entity.realm && realm === entity.realm);\n }\n\n /**\n * helper to match nativeAccountId\n * @param entity\n * @param nativeAccountId\n * @returns boolean indicating the match result\n */\n private matchNativeAccountId(entity: AccountEntity, nativeAccountId: string): boolean {\n return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId);\n }\n\n /**\n * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\n * @param entity\n * @param target\n */\n private matchTarget(entity: CredentialEntity, target: string): boolean {\n const isNotAccessTokenCredential = (entity.credentialType !== CredentialType.ACCESS_TOKEN && entity.credentialType !== CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME);\n\n if ( isNotAccessTokenCredential || !entity.target) {\n return false;\n }\n\n const entityScopeSet: ScopeSet = ScopeSet.fromString(entity.target);\n const requestTargetScopeSet: ScopeSet = ScopeSet.fromString(target);\n\n if (!requestTargetScopeSet.containsOnlyOIDCScopes()) {\n requestTargetScopeSet.removeOIDCScopes(); // ignore OIDC scopes\n } else {\n requestTargetScopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE);\n }\n return entityScopeSet.containsScopeSet(requestTargetScopeSet);\n }\n\n /**\n * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise\n * @param entity\n * @param tokenType\n */\n private matchTokenType(entity: CredentialEntity, tokenType: AuthenticationScheme): boolean {\n return !!(entity.tokenType && entity.tokenType === tokenType);\n }\n\n /**\n * Returns true if the credential's keyId matches the one in the request, false otherwise\n * @param entity\n * @param tokenType\n */\n private matchKeyId(entity: CredentialEntity, keyId: string): boolean {\n return !!(entity.keyId && entity.keyId === keyId);\n }\n\n /**\n * returns if a given cache entity is of the type appmetadata\n * @param key\n */\n private isAppMetadata(key: string): boolean {\n return key.indexOf(APP_METADATA) !== -1;\n }\n\n /**\n * returns if a given cache entity is of the type authoritymetadata\n * @param key\n */\n protected isAuthorityMetadata(key: string): boolean {\n return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\n }\n\n /**\n * returns cache key used for cloud instance metadata\n */\n generateAuthorityMetadataCacheKey(authority: string): string {\n return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`;\n }\n\n /**\n * Returns the specific credential (IdToken/AccessToken/RefreshToken) from the cache\n * @param key\n * @param credType\n */\n private getSpecificCredential(key: string, credType: string): ValidCredentialType | null {\n switch (credType) {\n case CredentialType.ID_TOKEN: {\n return this.getIdTokenCredential(key);\n }\n case CredentialType.ACCESS_TOKEN:\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME: {\n return this.getAccessTokenCredential(key);\n }\n case CredentialType.REFRESH_TOKEN: {\n return this.getRefreshTokenCredential(key);\n }\n default:\n return null;\n }\n }\n\n /**\n * Helper to convert serialized data to object\n * @param obj\n * @param json\n */\n static toObject<T>(obj: T, json: object): T {\n for (const propertyName in json) {\n obj[propertyName] = json[propertyName];\n }\n return obj;\n }\n}\n\nexport class DefaultStorageClass extends CacheManager {\n setAccount(): void {\n const notImplErr = \"Storage interface - setAccount() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getAccount(): AccountEntity {\n const notImplErr = \"Storage interface - getAccount() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setIdTokenCredential(): void {\n const notImplErr = \"Storage interface - setIdTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getIdTokenCredential(): IdTokenEntity {\n const notImplErr = \"Storage interface - getIdTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setAccessTokenCredential(): void {\n const notImplErr = \"Storage interface - setAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getAccessTokenCredential(): AccessTokenEntity {\n const notImplErr = \"Storage interface - getAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setRefreshTokenCredential(): void {\n const notImplErr = \"Storage interface - setRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getRefreshTokenCredential(): RefreshTokenEntity {\n const notImplErr = \"Storage interface - getRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setAppMetadata(): void {\n const notImplErr = \"Storage interface - setAppMetadata() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getAppMetadata(): AppMetadataEntity {\n const notImplErr = \"Storage interface - getAppMetadata() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setServerTelemetry(): void {\n const notImplErr = \"Storage interface - setServerTelemetry() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getServerTelemetry(): ServerTelemetryEntity {\n const notImplErr = \"Storage interface - getServerTelemetry() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setAuthorityMetadata(): void {\n const notImplErr = \"Storage interface - setAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getAuthorityMetadata(): AuthorityMetadataEntity | null {\n const notImplErr = \"Storage interface - getAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getAuthorityMetadataKeys(): Array<string> {\n const notImplErr = \"Storage interface - getAuthorityMetadataKeys() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setThrottlingCache(): void {\n const notImplErr = \"Storage interface - setThrottlingCache() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getThrottlingCache(): ThrottlingEntity {\n const notImplErr = \"Storage interface - getThrottlingCache() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n removeItem(): boolean {\n const notImplErr = \"Storage interface - removeItem() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n containsKey(): boolean {\n const notImplErr = \"Storage interface - containsKey() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getKeys(): string[] {\n const notImplErr = \"Storage interface - getKeys() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n async clear(): Promise<void> {\n const notImplErr = \"Storage interface - clear() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n updateCredentialCacheKey(): string {\n const notImplErr = \"Storage interface - updateCredentialCacheKey() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAAA;;;AAGG;AAuBH;;AAEG;AACH,IAAA,YAAA,kBAAA,YAAA;IAII,SAAY,YAAA,CAAA,QAAgB,EAAE,UAAmB,EAAA;AAC7C,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;KAChC;AAqID;;AAEG;AACH,IAAA,YAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;QAAA,IAqBC,KAAA,GAAA,IAAA,CAAA;AApBG,QAAA,IAAM,eAAe,GAAiB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACnE,IAAM,aAAa,GAAoB,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,UAAA,UAAU,EAAA,EAAI,OAAA,eAAe,CAAC,UAAU,CAAC,CAAA,EAAA,CAAC,CAAC;AACnH,QAAA,IAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;QACzC,IAAI,WAAW,GAAG,CAAC,EAAE;AACjB,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;AAAM,aAAA;AACH,YAAA,IAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAc,UAAC,KAAK,EAAA;AACrD,gBAAA,IAAM,aAAa,GAAG,YAAY,CAAC,QAAQ,CAAgB,IAAI,aAAa,EAAE,EAAE,KAAK,CAAC,CAAC;AACvF,gBAAA,IAAM,WAAW,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC;AACnD,gBAAA,IAAM,OAAO,GAAG,KAAI,CAAC,oBAAoB,CAAC,KAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AACtE,gBAAA,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;AACvC,oBAAA,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;AACrC,oBAAA,WAAW,CAAC,aAAa,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,KAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;AACrF,iBAAA;AAED,gBAAA,OAAO,WAAW,CAAC;AAEvB,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,WAAW,CAAC;AACtB,SAAA;KACJ,CAAA;AAED;;;AAGG;IACG,YAAe,CAAA,SAAA,CAAA,eAAA,GAArB,UAAsB,WAAwB,EAAA;;;;;wBAC1C,IAAI,CAAC,WAAW,EAAE;AACd,4BAAA,MAAM,eAAe,CAAC,gCAAgC,EAAE,CAAC;AAC5D,yBAAA;AAED,wBAAA,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE;AACvB,4BAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACxC,yBAAA;AAED,wBAAA,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE;AACvB,4BAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAClD,yBAAA;AAEG,wBAAA,IAAA,CAAA,CAAC,CAAC,WAAW,CAAC,WAAW,EAAzB,OAAyB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;wBACzB,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA,CAAA;;AAAnD,wBAAA,EAAA,CAAA,IAAA,EAAmD,CAAC;;;AAGxD,wBAAA,IAAI,CAAC,CAAC,WAAW,CAAC,YAAY,EAAE;AAC5B,4BAAA,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AAC5D,yBAAA;AAED,wBAAA,IAAI,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE;AAC3B,4BAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAChD,yBAAA;;;;;AACJ,KAAA,CAAA;AAED;;;AAGG;IACW,YAAe,CAAA,SAAA,CAAA,eAAA,GAA7B,UAA8B,UAA6B,EAAA;;;;;;;AACjD,wBAAA,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,CAAC;4BACpD,QAAQ,EAAE,UAAU,CAAC,QAAQ;4BAC7B,cAAc,EAAE,UAAU,CAAC,cAAc;4BACzC,WAAW,EAAE,UAAU,CAAC,WAAW;4BACnC,aAAa,EAAE,UAAU,CAAC,aAAa;4BACvC,KAAK,EAAE,UAAU,CAAC,KAAK;4BACvB,SAAS,EAAE,UAAU,CAAC,SAAS;4BAC/B,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;AACtD,yBAAA,CAAC,CAAC;wBAEG,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;wBACvD,mBAAmB,GAAwB,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG,EAAA,EAAI,OAAA,iBAAiB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA,EAAA,CAAC,CAAC;AAEzI,wBAAA,IAAA,CAAA,mBAAmB,EAAnB,OAAmB,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AACb,wBAAA,qBAAA,GAA+C,EAAE,CAAC;AACxD,wBAAA,mBAAmB,CAAC,OAAO,CAAC,UAAC,WAAW,EAAA;4BACpC,IAAM,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC9D,4BAAA,IAAI,aAAa,CAAC,qBAAqB,CAAC,aAAa,CAAC,EAAE;gCACpD,qBAAmB,CAAC,IAAI,CAAC,KAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;AAChE,6BAAA;AACL,yBAAC,CAAC,CAAC;AACH,wBAAA,OAAA,CAAA,CAAA,YAAM,OAAO,CAAC,GAAG,CAAC,qBAAmB,CAAC,CAAA,CAAA;;AAAtC,wBAAA,EAAA,CAAA,IAAA,EAAsC,CAAC;;;AAE3C,wBAAA,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;;;;;AAC7C,KAAA,CAAA;AAED;;;;;;AAMG;IACH,YAAqB,CAAA,SAAA,CAAA,qBAAA,GAArB,UAAsB,aAA6B,EAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,6BAA6B,CACrC,aAAa,GAAG,aAAa,CAAC,aAAa,GAAG,SAAS,CAAC,YAAY,EACpE,aAAa,GAAG,aAAa,CAAC,WAAW,GAAG,SAAS,CAAC,YAAY,EAClE,aAAa,GAAG,aAAa,CAAC,KAAK,GAAG,SAAS,CAAC,YAAY,EAC5D,aAAa,GAAG,aAAa,CAAC,eAAe,GAAE,SAAS,CAAC,YAAY,CACxE,CAAC;KACL,CAAA;AAED;;;;;;AAMG;IACK,YAA6B,CAAA,SAAA,CAAA,6BAAA,GAArC,UACI,aAAsB,EACtB,WAAoB,EACpB,KAAc,EACd,eAAwB,EAAA;QAJ5B,IAoCC,KAAA,GAAA,IAAA,CAAA;AA9BG,QAAA,IAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,IAAM,gBAAgB,GAAiB,EAAE,CAAC;AAE1C,QAAA,YAAY,CAAC,OAAO,CAAC,UAAC,QAAQ,EAAA;YAC1B,IAAM,MAAM,GAAyB,KAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAE/D,IAAI,CAAC,MAAM,EAAE;gBACT,OAAO;AACV,aAAA;AAED,YAAA,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,KAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE;gBACpE,OAAO;AACV,aAAA;AAED,YAAA,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,KAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE;gBAC9D,OAAO;AACV,aAAA;AAED,YAAA,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,KAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;gBAC5C,OAAO;AACV,aAAA;AAED,YAAA,IAAI,CAAC,CAAC,eAAe,IAAI,CAAC,KAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE;gBAC1E,OAAO;AACV,aAAA;AAED,YAAA,gBAAgB,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;AACxC,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,gBAAgB,CAAC;KAC3B,CAAA;AAED;;;;;;;;AAQG;IACH,YAAwB,CAAA,SAAA,CAAA,wBAAA,GAAxB,UAAyB,MAAwB,EAAA;QAC7C,OAAO,IAAI,CAAC,gCAAgC,CACxC,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,mBAAmB,CAC7B,CAAC;KACL,CAAA;AAED;;;;;;;;;;AAUG;IACK,YAAgC,CAAA,SAAA,CAAA,gCAAA,GAAxC,UACI,aAAsB,EACtB,WAAoB,EACpB,cAAuB,EACvB,QAAiB,EACjB,QAAiB,EACjB,KAAc,EACd,MAAe,EACf,iBAA0B,EAC1B,SAAgC,EAChC,KAAc,EACd,mBAA4B,EAAA;QAXhC,IAmHC,KAAA,GAAA,IAAA,CAAA;AAtGG,QAAA,IAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACpC,QAAA,IAAM,mBAAmB,GAAoB;AACzC,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,aAAa,EAAE,EAAE;SACpB,CAAC;AAEF,QAAA,YAAY,CAAC,OAAO,CAAC,UAAC,QAAQ,EAAA;;YAE1B,IAAM,QAAQ,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAE9D,YAAA,IAAI,QAAQ,KAAK,SAAS,CAAC,WAAW,EAAE;gBACpC,OAAO;AACV,aAAA;;YAGD,IAAM,MAAM,GAAG,KAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAE9D,IAAI,CAAC,MAAM,EAAE;gBACT,OAAO;AACV,aAAA;AAED,YAAA,IAAI,CAAC,CAAC,iBAAiB,IAAI,CAAC,KAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAAE;gBAChF,OAAO;AACV,aAAA;AAED;;;AAGG;AACH,YAAA,IAAI,CAAC,OAAO,aAAa,KAAK,QAAQ,KAAK,CAAC,KAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE;gBACxF,OAAO;AACV,aAAA;AAED,YAAA,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,KAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE;gBAC9D,OAAO;AACV,aAAA;AAED,YAAA,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,KAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;gBAC5C,OAAO;AACV,aAAA;AAED,YAAA,IAAI,CAAC,CAAC,cAAc,IAAI,CAAC,KAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE;gBACvE,OAAO;AACV,aAAA;AAED,YAAA,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,KAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;gBACrD,OAAO;AACV,aAAA;AAED,YAAA,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,KAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;gBACrD,OAAO;AACV,aAAA;AAED;;;AAGG;AACH,YAAA,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;gBAC/C,OAAO;AACV,aAAA;;AAGD,YAAA,IAAI,mBAAmB,IAAI,MAAM,CAAC,mBAAmB,EAAE;;AAEnD,gBAAA,IAAI,MAAM,CAAC,mBAAmB,KAAK,mBAAmB,EAAE;oBACpD,OAAO;AACV,iBAAA;AACJ,aAAA;;AAGD,YAAA,IAAI,cAAc,KAAK,cAAc,CAAC,6BAA6B,EAAE;AACjE,gBAAA,IAAG,CAAC,CAAC,SAAS,IAAI,CAAC,KAAI,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;oBACvD,OAAO;AACV,iBAAA;;AAGD,gBAAA,IAAI,SAAS,KAAK,oBAAoB,CAAC,GAAG,EAAE;oBACxC,IAAG,KAAK,IAAI,CAAC,KAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;wBACzC,OAAO;AACV,qBAAA;AACJ,iBAAA;AACJ,aAAA;;YAGD,IAAM,eAAe,GAAG,KAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAExE,YAAA,QAAQ,QAAQ;gBACZ,KAAK,cAAc,CAAC,QAAQ;AACxB,oBAAA,mBAAmB,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,MAAuB,CAAC;oBACxE,MAAM;gBACV,KAAK,cAAc,CAAC,YAAY,CAAC;gBACjC,KAAK,cAAc,CAAC,6BAA6B;AAC7C,oBAAA,mBAAmB,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,MAA2B,CAAC;oBAChF,MAAM;gBACV,KAAK,cAAc,CAAC,aAAa;AAC7B,oBAAA,mBAAmB,CAAC,aAAa,CAAC,eAAe,CAAC,GAAG,MAA4B,CAAC;oBAClF,MAAM;AACb,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,mBAAmB,CAAC;KAC9B,CAAA;AAED;;;AAGG;IACH,YAAwB,CAAA,SAAA,CAAA,wBAAA,GAAxB,UAAyB,MAAyB,EAAA;AAC9C,QAAA,OAAO,IAAI,CAAC,gCAAgC,CACxC,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,QAAQ,CAClB,CAAC;KACL,CAAA;AAED;;;;AAIG;AACK,IAAA,YAAA,CAAA,SAAA,CAAA,gCAAgC,GAAxC,UACI,WAAoB,EACpB,QAAiB,EAAA;QAFrB,IAkCC,KAAA,GAAA,IAAA,CAAA;AA7BG,QAAA,IAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,IAAM,mBAAmB,GAAqB,EAAE,CAAC;AAEjD,QAAA,YAAY,CAAC,OAAO,CAAC,UAAC,QAAQ,EAAA;;AAE1B,YAAA,IAAI,CAAC,KAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;gBAC/B,OAAO;AACV,aAAA;;YAGD,IAAM,MAAM,GAAG,KAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAE7C,IAAI,CAAC,MAAM,EAAE;gBACT,OAAO;AACV,aAAA;AAED,YAAA,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,KAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE;gBAC9D,OAAO;AACV,aAAA;AAED,YAAA,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,KAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;gBACrD,OAAO;AACV,aAAA;AAED,YAAA,mBAAmB,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;AAE3C,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,mBAAmB,CAAC;KAC9B,CAAA;AAED;;;AAGG;IACH,YAA2B,CAAA,SAAA,CAAA,2BAAA,GAA3B,UAA4B,IAAY,EAAA;QAAxC,IA0BC,KAAA,GAAA,IAAA,CAAA;AAzBG,QAAA,IAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACrD,IAAI,aAAa,GAAG,IAAI,CAAC;AAEzB,QAAA,YAAY,CAAC,OAAO,CAAC,UAAC,QAAQ,EAAA;;AAE1B,YAAA,IAAI,CAAC,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC/E,OAAO;AACV,aAAA;;YAGD,IAAM,MAAM,GAAG,KAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YAEnD,IAAI,CAAC,MAAM,EAAE;gBACT,OAAO;AACV,aAAA;YAED,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;gBACrC,OAAO;AACV,aAAA;YAED,aAAa,GAAG,MAAM,CAAC;AAE3B,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,aAAa,CAAC;KACxB,CAAA;AAED;;AAEG;AACG,IAAA,YAAA,CAAA,SAAA,CAAA,iBAAiB,GAAvB,YAAA;;;;;;;AACU,wBAAA,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;wBAC9B,eAAe,GAA4B,EAAE,CAAC;AAEpD,wBAAA,YAAY,CAAC,OAAO,CAAC,UAAC,QAAQ,EAAA;4BAC1B,IAAM,MAAM,GAAG,KAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;4BACzC,IAAI,CAAC,MAAM,EAAE;gCACT,OAAO;AACV,6BAAA;4BACD,eAAe,CAAC,IAAI,CAAC,KAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvD,yBAAC,CAAC,CAAC;AAEH,wBAAA,OAAA,CAAA,CAAA,YAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA,CAAA;;AAAlC,wBAAA,EAAA,CAAA,IAAA,EAAkC,CAAC;AACnC,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;;;;AACf,KAAA,CAAA;AAED;;;AAGG;IACG,YAAa,CAAA,SAAA,CAAA,aAAA,GAAnB,UAAoB,UAAkB,EAAA;;;;;;AAC5B,wBAAA,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;wBAC5C,IAAI,CAAC,OAAO,EAAE;AACV,4BAAA,MAAM,eAAe,CAAC,yBAAyB,EAAE,CAAC;AACrD,yBAAA;AACO,wBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAA,CAAA;AAAhD,oBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,cAAQ,CAAA,EAAwC,CAAA,IAAA,EAAA,KAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,CAAA;;;;AAC7G,KAAA,CAAA;AAED;;;AAGG;IACG,YAAoB,CAAA,SAAA,CAAA,oBAAA,GAA1B,UAA2B,OAAsB,EAAA;;;;;;;AACvC,wBAAA,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAC9B,wBAAA,SAAS,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;wBACxC,kBAAkB,GAA4B,EAAE,CAAC;AAEvD,wBAAA,YAAY,CAAC,OAAO,CAAC,UAAC,QAAQ,EAAA;;4BAE1B,IAAM,QAAQ,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAC9D,4BAAA,IAAI,QAAQ,KAAK,SAAS,CAAC,WAAW,EAAE;gCACpC,OAAO;AACV,6BAAA;4BAED,IAAM,WAAW,GAAG,KAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;4BACnE,IAAI,CAAC,CAAC,WAAW,IAAI,SAAS,KAAK,WAAW,CAAC,iBAAiB,EAAE,EAAE;gCAChE,kBAAkB,CAAC,IAAI,CAAC,KAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;AAC/D,6BAAA;AACL,yBAAC,CAAC,CAAC;AAEH,wBAAA,OAAA,CAAA,CAAA,YAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA,CAAA;;AAArC,wBAAA,EAAA,CAAA,IAAA,EAAqC,CAAC;AACtC,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;;;;AACf,KAAA,CAAA;AAED;;;AAGG;IACG,YAAgB,CAAA,SAAA,CAAA,gBAAA,GAAtB,UAAuB,UAA4B,EAAA;;;;;;AACzC,wBAAA,GAAG,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC;AAG3C,wBAAA,IAAA,EAAA,UAAU,CAAC,cAAc,CAAC,WAAW,EAAE,KAAK,cAAc,CAAC,6BAA6B,CAAC,WAAW,EAAE,CAAA,EAAtG,OAAsG,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;8BACnG,UAAU,CAAC,SAAS,KAAK,oBAAoB,CAAC,GAAG,CAAA,EAAjD,OAAiD,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;wBAC1C,+BAA+B,GAAG,UAA+B,CAAC;AAClE,wBAAA,GAAG,GAAG,+BAA+B,CAAC,KAAK,CAAC;AAE9C,wBAAA,IAAA,CAAA,GAAG,EAAH,OAAG,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;;;;wBAEC,OAAM,CAAA,CAAA,YAAA,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAA,CAAA;;AAAhD,wBAAA,EAAA,CAAA,IAAA,EAAgD,CAAC;;;;AAEjD,wBAAA,MAAM,eAAe,CAAC,+BAA+B,EAAE,CAAC;4BAMxE,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAA;;;;AAC3D,KAAA,CAAA;AAED;;AAEG;AACH,IAAA,YAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,YAAA;QAAA,IASC,KAAA,GAAA,IAAA,CAAA;AARG,QAAA,IAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACpC,QAAA,YAAY,CAAC,OAAO,CAAC,UAAC,QAAQ,EAAA;AAC1B,YAAA,IAAI,KAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;gBAC9B,KAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;AAC3D,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,IAAI,CAAC;KACf,CAAA;AAED;;;;;;;AAOG;IACH,YAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,OAAoB,EAAE,QAAgB,EAAE,OAAwB,EAAE,WAAmB,EAAA;QAEjG,IAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACzD,IAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACnE,QAAA,IAAM,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACpF,QAAA,IAAM,kBAAkB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QACpF,IAAM,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAE/E,IAAI,aAAa,IAAI,aAAa,EAAE;AAChC,YAAA,aAAa,CAAC,aAAa,GAAG,IAAI,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;AAC7F,SAAA;QAED,OAAO;AACH,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,WAAW,EAAE,iBAAiB;AAC9B,YAAA,YAAY,EAAE,kBAAkB;AAChC,YAAA,WAAW,EAAE,iBAAiB;SACjC,CAAC;KACL,CAAA;AAED;;;AAGG;IACH,YAAoB,CAAA,SAAA,CAAA,oBAAA,GAApB,UAAqB,OAAoB,EAAA;QACrC,IAAM,UAAU,GAAW,aAAa,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC1E,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;KACtC,CAAA;AAED;;;;AAIG;IACH,YAAuC,CAAA,SAAA,CAAA,uCAAA,GAAvC,UAAwC,eAAuB,EAAA;;AAE3D,QAAA,IAAM,aAAa,GAAkB;AACjC,YAAA,eAAe,EAAA,eAAA;SAClB,CAAC;QACF,IAAM,YAAY,GAAiB,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAC7E,IAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,UAAC,GAAG,EAAA,EAAK,OAAA,YAAY,CAAC,GAAG,CAAC,CAAA,EAAA,CAAC,CAAC;AAE3E,QAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAAM,aAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,YAAA,MAAM,eAAe,CAAC,0CAA0C,EAAE,CAAC;AACtE,SAAA;AAED,QAAA,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;KACtB,CAAA;AAED;;;;;AAKG;AACH,IAAA,YAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,UAAqB,QAAgB,EAAE,OAAoB,EAAA;AACvD,QAAA,IAAM,aAAa,GAAqB;YACpC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,cAAc,EAAE,cAAc,CAAC,QAAQ;AACvC,YAAA,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,OAAO,CAAC,QAAQ;SAC1B,CAAC;QAEF,IAAM,eAAe,GAAoB,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC;QACtF,IAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,UAAC,GAAG,EAAA,EAAK,OAAA,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA,EAAA,CAAC,CAAC;AACnG,QAAA,IAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;QAEpC,IAAI,WAAW,GAAG,CAAC,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;aAAM,IAAI,WAAW,GAAG,CAAC,EAAE;AACxB,YAAA,MAAM,eAAe,CAAC,wCAAwC,EAAE,CAAC;AACpE,SAAA;AAED,QAAA,OAAO,QAAQ,CAAC,CAAC,CAAkB,CAAC;KACvC,CAAA;AAED;;;;;;AAMG;AACH,IAAA,YAAA,CAAA,SAAA,CAAA,wBAAwB,GAAxB,UAAyB,QAAgB,EAAE,OAAoB,EAAE,OAAwB,EAAA;QACrF,IAAM,MAAM,GAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACnD,IAAM,UAAU,GAAG,OAAO,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,MAAM,CAAC;AAC/E;;;AAGG;AACH,QAAA,IAAM,cAAc,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,WAAW,EAAE,KAAK,oBAAoB,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,cAAc,CAAC,6BAA6B,GAAG,cAAc,CAAC,YAAY,CAAC;AAE3L,QAAA,IAAM,iBAAiB,GAAqB;YACxC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,WAAW,EAAE,OAAO,CAAC,WAAW;AAChC,YAAA,cAAc,EAAE,cAAc;AAC9B,YAAA,QAAQ,EAAA,QAAA;YACR,KAAK,EAAE,OAAO,CAAC,QAAQ;AACvB,YAAA,MAAM,EAAE,MAAM,CAAC,oBAAoB,EAAE;AACrC,YAAA,SAAS,EAAE,UAAU;YACrB,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;SACnD,CAAC;QAEF,IAAM,eAAe,GAAoB,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;QAE1F,IAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,UAAC,GAAG,EAAA,EAAK,OAAA,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA,EAAA,CAAC,CAAC;AAE/G,QAAA,IAAM,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC;QAC5C,IAAI,eAAe,GAAG,CAAC,EAAE;AACrB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;aAAM,IAAI,eAAe,GAAG,CAAC,EAAE;AAC5B,YAAA,MAAM,eAAe,CAAC,wCAAwC,EAAE,CAAC;AACpE,SAAA;AAED,QAAA,OAAO,YAAY,CAAC,CAAC,CAAsB,CAAC;KAC/C,CAAA;AAED;;;;;AAKG;AACH,IAAA,YAAA,CAAA,SAAA,CAAA,yBAAyB,GAAzB,UAA0B,QAAgB,EAAE,OAAoB,EAAE,QAAiB,EAAA;QAC/E,IAAM,EAAE,GAAG,QAAQ,GAAG,aAAa,GAAG,SAAS,CAAC;AAChD,QAAA,IAAM,kBAAkB,GAAqB;YACzC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,cAAc,EAAE,cAAc,CAAC,aAAa;AAC5C,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,QAAQ,EAAE,EAAE;SACf,CAAC;QAEF,IAAM,eAAe,GAAoB,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;QAC3F,IAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,UAAC,GAAG,EAAA,EAAK,OAAA,eAAe,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA,EAAA,CAAC,CAAC;AAElH,QAAA,IAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,CAAC;QAC9C,IAAI,gBAAgB,GAAG,CAAC,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;;AAGD,QAAA,OAAO,aAAa,CAAC,CAAC,CAAuB,CAAC;KACjD,CAAA;AAED;;AAEG;AACH,IAAA,YAAA,CAAA,SAAA,CAAA,wBAAwB,GAAxB,UAAyB,WAAmB,EAAE,QAAgB,EAAA;AAC1D,QAAA,IAAM,iBAAiB,GAAsB;AACzC,YAAA,WAAW,EAAA,WAAA;AACX,YAAA,QAAQ,EAAA,QAAA;SACX,CAAC;QAEF,IAAM,WAAW,GAAqB,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;QACvF,IAAM,kBAAkB,GAAwB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,UAAC,GAAG,EAAA,EAAK,OAAA,WAAW,CAAC,GAAG,CAAC,CAAA,EAAA,CAAC,CAAC;AAExG,QAAA,IAAM,cAAc,GAAG,kBAAkB,CAAC,MAAM,CAAC;QACjD,IAAI,cAAc,GAAG,CAAC,EAAE;AACpB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;aAAM,IAAI,cAAc,GAAG,CAAC,EAAE;AAC3B,YAAA,MAAM,eAAe,CAAC,6CAA6C,EAAE,CAAC;AACzE,SAAA;AAED,QAAA,OAAO,kBAAkB,CAAC,CAAC,CAAsB,CAAC;KACrD,CAAA;AAED;;;;AAIG;AACH,IAAA,YAAA,CAAA,SAAA,CAAA,iBAAiB,GAAjB,UAAkB,WAAmB,EAAE,QAAgB,EAAA;QACnD,IAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACzE,OAAO,CAAC,EAAE,WAAW,IAAI,WAAW,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC;KACpE,CAAA;AAED;;;;AAIG;AACK,IAAA,YAAA,CAAA,SAAA,CAAA,kBAAkB,GAA1B,UAA2B,MAAwC,EAAE,aAAqB,EAAA;QACtF,OAAO,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,MAAM,aAAa,KAAK,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;KACrG,CAAA;AAED;;;;AAIG;AACK,IAAA,YAAA,CAAA,SAAA,CAAA,sBAAsB,GAA9B,UAA+B,MAAwB,EAAE,iBAAyB,EAAA;AAC9E,QAAA,OAAO,CAAC,EAAE,MAAM,CAAC,iBAAiB,IAAI,iBAAiB,KAAK,MAAM,CAAC,iBAAiB,CAAC,CAAC;KACzF,CAAA;AAED;;;;AAIG;AACK,IAAA,YAAA,CAAA,SAAA,CAAA,gBAAgB,GAAxB,UAAyB,MAA4D,EAAE,WAAmB,EAAA;QACtG,IAAM,aAAa,GAAG,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC;AACpE,QAAA,IAAI,aAAa,IAAI,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE;AACzE,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB,CAAA;AAED;;;;AAIG;AACK,IAAA,YAAA,CAAA,SAAA,CAAA,mBAAmB,GAA3B,UAA4B,MAAwB,EAAE,cAAsB,EAAA;AACxE,QAAA,QAAQ,MAAM,CAAC,cAAc,IAAI,cAAc,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE;KAC1G,CAAA;AAED;;;;AAIG;AACK,IAAA,YAAA,CAAA,SAAA,CAAA,aAAa,GAArB,UAAsB,MAA4C,EAAE,QAAgB,EAAA;AAChF,QAAA,OAAO,CAAC,EAAE,MAAM,CAAC,QAAQ,IAAI,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC;KAC9D,CAAA;AAED;;;;AAIG;AACK,IAAA,YAAA,CAAA,SAAA,CAAA,aAAa,GAArB,UAAsB,MAA4C,EAAE,QAAgB,EAAA;AAChF,QAAA,OAAO,CAAC,EAAE,MAAM,CAAC,QAAQ,IAAI,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC;KAC9D,CAAA;AAED;;;;AAIG;AACK,IAAA,YAAA,CAAA,SAAA,CAAA,UAAU,GAAlB,UAAmB,MAAwC,EAAE,KAAa,EAAA;AACtE,QAAA,OAAO,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;KACrD,CAAA;AAED;;;;;AAKG;AACK,IAAA,YAAA,CAAA,SAAA,CAAA,oBAAoB,GAA5B,UAA6B,MAAqB,EAAE,eAAuB,EAAA;AACvE,QAAA,OAAO,CAAC,EAAE,MAAM,CAAC,eAAe,IAAI,eAAe,KAAK,MAAM,CAAC,eAAe,CAAC,CAAC;KACnF,CAAA;AAED;;;;AAIG;AACK,IAAA,YAAA,CAAA,SAAA,CAAA,WAAW,GAAnB,UAAoB,MAAwB,EAAE,MAAc,EAAA;AACxD,QAAA,IAAM,0BAA0B,IAAI,MAAM,CAAC,cAAc,KAAK,cAAc,CAAC,YAAY,IAAI,MAAM,CAAC,cAAc,KAAK,cAAc,CAAC,6BAA6B,CAAC,CAAC;AAErK,QAAA,IAAK,0BAA0B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAC/C,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QAED,IAAM,cAAc,GAAa,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpE,IAAM,qBAAqB,GAAa,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAEpE,QAAA,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,EAAE,EAAE;AACjD,YAAA,qBAAqB,CAAC,gBAAgB,EAAE,CAAC;AAC5C,SAAA;AAAM,aAAA;AACH,YAAA,qBAAqB,CAAC,WAAW,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;AACrE,SAAA;AACD,QAAA,OAAO,cAAc,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;KACjE,CAAA;AAED;;;;AAIG;AACK,IAAA,YAAA,CAAA,SAAA,CAAA,cAAc,GAAtB,UAAuB,MAAwB,EAAE,SAA+B,EAAA;AAC5E,QAAA,OAAO,CAAC,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;KACjE,CAAA;AAED;;;;AAIG;AACK,IAAA,YAAA,CAAA,SAAA,CAAA,UAAU,GAAlB,UAAmB,MAAwB,EAAE,KAAa,EAAA;AACtD,QAAA,OAAO,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;KACrD,CAAA;AAED;;;AAGG;IACK,YAAa,CAAA,SAAA,CAAA,aAAA,GAArB,UAAsB,GAAW,EAAA;QAC7B,OAAO,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;KAC3C,CAAA;AAED;;;AAGG;IACO,YAAmB,CAAA,SAAA,CAAA,mBAAA,GAA7B,UAA8B,GAAW,EAAA;QACrC,OAAO,GAAG,CAAC,OAAO,CAAC,4BAA4B,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KACrE,CAAA;AAED;;AAEG;IACH,YAAiC,CAAA,SAAA,CAAA,iCAAA,GAAjC,UAAkC,SAAiB,EAAA;QAC/C,OAAU,4BAA4B,CAAC,SAAS,GAAA,GAAA,GAAI,IAAI,CAAC,QAAQ,GAAI,GAAA,GAAA,SAAW,CAAC;KACpF,CAAA;AAED;;;;AAIG;AACK,IAAA,YAAA,CAAA,SAAA,CAAA,qBAAqB,GAA7B,UAA8B,GAAW,EAAE,QAAgB,EAAA;AACvD,QAAA,QAAQ,QAAQ;AACZ,YAAA,KAAK,cAAc,CAAC,QAAQ,EAAE;AAC1B,gBAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;AACzC,aAAA;YACD,KAAK,cAAc,CAAC,YAAY,CAAC;AACjC,YAAA,KAAK,cAAc,CAAC,6BAA6B,EAAE;AAC/C,gBAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;AAC7C,aAAA;AACD,YAAA,KAAK,cAAc,CAAC,aAAa,EAAE;AAC/B,gBAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;AAC9C,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,IAAI,CAAC;AACnB,SAAA;KACJ,CAAA;AAED;;;;AAIG;AACI,IAAA,YAAA,CAAA,QAAQ,GAAf,UAAmB,GAAM,EAAE,IAAY,EAAA;AACnC,QAAA,KAAK,IAAM,YAAY,IAAI,IAAI,EAAE;YAC7B,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;AAC1C,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACd,CAAA;IACL,OAAC,YAAA,CAAA;AAAD,CAAC,EAAA,EAAA;AAED,IAAA,mBAAA,kBAAA,UAAA,MAAA,EAAA;IAAyC,SAAY,CAAA,mBAAA,EAAA,MAAA,CAAA,CAAA;AAArD,IAAA,SAAA,mBAAA,GAAA;;KAyFC;AAxFG,IAAA,mBAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;QACI,IAAM,UAAU,GAAG,2FAA2F,CAAC;AAC/G,QAAA,MAAM,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;KACrD,CAAA;AACD,IAAA,mBAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;QACI,IAAM,UAAU,GAAG,2FAA2F,CAAC;AAC/G,QAAA,MAAM,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;KACrD,CAAA;AACD,IAAA,mBAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,YAAA;QACI,IAAM,UAAU,GAAG,qGAAqG,CAAC;AACzH,QAAA,MAAM,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;KACrD,CAAA;AACD,IAAA,mBAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,YAAA;QACI,IAAM,UAAU,GAAG,qGAAqG,CAAC;AACzH,QAAA,MAAM,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;KACrD,CAAA;AACD,IAAA,mBAAA,CAAA,SAAA,CAAA,wBAAwB,GAAxB,YAAA;QACI,IAAM,UAAU,GAAG,yGAAyG,CAAC;AAC7H,QAAA,MAAM,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;KACrD,CAAA;AACD,IAAA,mBAAA,CAAA,SAAA,CAAA,wBAAwB,GAAxB,YAAA;QACI,IAAM,UAAU,GAAG,yGAAyG,CAAC;AAC7H,QAAA,MAAM,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;KACrD,CAAA;AACD,IAAA,mBAAA,CAAA,SAAA,CAAA,yBAAyB,GAAzB,YAAA;QACI,IAAM,UAAU,GAAG,0GAA0G,CAAC;AAC9H,QAAA,MAAM,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;KACrD,CAAA;AACD,IAAA,mBAAA,CAAA,SAAA,CAAA,yBAAyB,GAAzB,YAAA;QACI,IAAM,UAAU,GAAG,0GAA0G,CAAC;AAC9H,QAAA,MAAM,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;KACrD,CAAA;AACD,IAAA,mBAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;QACI,IAAM,UAAU,GAAG,+FAA+F,CAAC;AACnH,QAAA,MAAM,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;KACrD,CAAA;AACD,IAAA,mBAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;QACI,IAAM,UAAU,GAAG,+FAA+F,CAAC;AACnH,QAAA,MAAM,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;KACrD,CAAA;AACD,IAAA,mBAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,YAAA;QACI,IAAM,UAAU,GAAG,mGAAmG,CAAC;AACvH,QAAA,MAAM,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;KACrD,CAAA;AACD,IAAA,mBAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,YAAA;QACI,IAAM,UAAU,GAAG,mGAAmG,CAAC;AACvH,QAAA,MAAM,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;KACrD,CAAA;AACD,IAAA,mBAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,YAAA;QACI,IAAM,UAAU,GAAG,qGAAqG,CAAC;AACzH,QAAA,MAAM,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;KACrD,CAAA;AACD,IAAA,mBAAA,CAAA,SAAA,CAAA,oBAAoB,GAApB,YAAA;QACI,IAAM,UAAU,GAAG,qGAAqG,CAAC;AACzH,QAAA,MAAM,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;KACrD,CAAA;AACD,IAAA,mBAAA,CAAA,SAAA,CAAA,wBAAwB,GAAxB,YAAA;QACI,IAAM,UAAU,GAAG,yGAAyG,CAAC;AAC7H,QAAA,MAAM,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;KACrD,CAAA;AACD,IAAA,mBAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,YAAA;QACI,IAAM,UAAU,GAAG,mGAAmG,CAAC;AACvH,QAAA,MAAM,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;KACrD,CAAA;AACD,IAAA,mBAAA,CAAA,SAAA,CAAA,kBAAkB,GAAlB,YAAA;QACI,IAAM,UAAU,GAAG,mGAAmG,CAAC;AACvH,QAAA,MAAM,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;KACrD,CAAA;AACD,IAAA,mBAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;QACI,IAAM,UAAU,GAAG,2FAA2F,CAAC;AAC/G,QAAA,MAAM,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;KACrD,CAAA;AACD,IAAA,mBAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;QACI,IAAM,UAAU,GAAG,4FAA4F,CAAC;AAChH,QAAA,MAAM,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;KACrD,CAAA;AACD,IAAA,mBAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;QACI,IAAM,UAAU,GAAG,wFAAwF,CAAC;AAC5G,QAAA,MAAM,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;KACrD,CAAA;AACK,IAAA,mBAAA,CAAA,SAAA,CAAA,KAAK,GAAX,YAAA;;;;gBACU,UAAU,GAAG,sFAAsF,CAAC;AAC1G,gBAAA,MAAM,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;;;AACrD,KAAA,CAAA;AACD,IAAA,mBAAA,CAAA,SAAA,CAAA,wBAAwB,GAAxB,YAAA;QACI,IAAM,UAAU,GAAG,yGAAyG,CAAC;AAC7H,QAAA,MAAM,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;KACrD,CAAA;IACL,OAAC,mBAAA,CAAA;AAAD,CAzFA,CAAyC,YAAY,CAyFpD;;;;"}
1
+ {"version":3,"file":"CacheManager.js","sources":["../../src/cache/CacheManager.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AccountFilter, CredentialFilter, ValidCredentialType, AppMetadataFilter, AppMetadataCache, TokenKeys } from \"./utils/CacheTypes\";\nimport { CacheRecord } from \"./entities/CacheRecord\";\nimport { CredentialType, APP_METADATA, THE_FAMILY_ID, AUTHORITY_METADATA_CONSTANTS, AuthenticationScheme, Separators } from \"../utils/Constants\";\nimport { CredentialEntity } from \"./entities/CredentialEntity\";\nimport { ScopeSet } from \"../request/ScopeSet\";\nimport { AccountEntity } from \"./entities/AccountEntity\";\nimport { AccessTokenEntity } from \"./entities/AccessTokenEntity\";\nimport { IdTokenEntity } from \"./entities/IdTokenEntity\";\nimport { RefreshTokenEntity } from \"./entities/RefreshTokenEntity\";\nimport { AuthError } from \"../error/AuthError\";\nimport { ICacheManager } from \"./interface/ICacheManager\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { AccountInfo } from \"../account/AccountInfo\";\nimport { AppMetadataEntity } from \"./entities/AppMetadataEntity\";\nimport { ServerTelemetryEntity } from \"./entities/ServerTelemetryEntity\";\nimport { ThrottlingEntity } from \"./entities/ThrottlingEntity\";\nimport { AuthToken } from \"../account/AuthToken\";\nimport { ICrypto } from \"../crypto/ICrypto\";\nimport { AuthorityMetadataEntity } from \"./entities/AuthorityMetadataEntity\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\nimport { Logger } from \"../logger/Logger\";\nimport { name, version } from \"../packageMetadata\";\n\n/**\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\n */\nexport abstract class CacheManager implements ICacheManager {\n protected clientId: string;\n protected cryptoImpl: ICrypto;\n // Instance of logger for functions defined in the msal-common layer\n private commonLogger: Logger;\n\n constructor(clientId: string, cryptoImpl: ICrypto, logger: Logger) {\n this.clientId = clientId;\n this.cryptoImpl = cryptoImpl;\n this.commonLogger = logger.clone(name, version);\n }\n\n /**\n * fetch the account entity from the platform cache\n * @param accountKey\n */\n abstract getAccount(accountKey: string): AccountEntity | null;\n\n /**\n * set account entity in the platform cache\n * @param account\n */\n abstract setAccount(account: AccountEntity): void;\n\n /**\n * fetch the idToken entity from the platform cache\n * @param idTokenKey\n */\n abstract getIdTokenCredential(idTokenKey: string): IdTokenEntity | null;\n\n /**\n * set idToken entity to the platform cache\n * @param idToken\n */\n abstract setIdTokenCredential(idToken: IdTokenEntity): void;\n\n /**\n * fetch the idToken entity from the platform cache\n * @param accessTokenKey\n */\n abstract getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null;\n\n /**\n * set idToken entity to the platform cache\n * @param accessToken\n */\n abstract setAccessTokenCredential(accessToken: AccessTokenEntity): void;\n\n /**\n * fetch the idToken entity from the platform cache\n * @param refreshTokenKey\n */\n abstract getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null;\n\n /**\n * set idToken entity to the platform cache\n * @param refreshToken\n */\n abstract setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void;\n\n /**\n * fetch appMetadata entity from the platform cache\n * @param appMetadataKey\n */\n abstract getAppMetadata(appMetadataKey: string): AppMetadataEntity | null;\n\n /**\n * set appMetadata entity to the platform cache\n * @param appMetadata\n */\n abstract setAppMetadata(appMetadata: AppMetadataEntity): void;\n\n /**\n * fetch server telemetry entity from the platform cache\n * @param serverTelemetryKey\n */\n abstract getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null;\n\n /**\n * set server telemetry entity to the platform cache\n * @param serverTelemetryKey\n * @param serverTelemetry\n */\n abstract setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void;\n\n /**\n * fetch cloud discovery metadata entity from the platform cache\n * @param key\n */\n abstract getAuthorityMetadata(key: string): AuthorityMetadataEntity | null;\n\n /**\n *\n */\n abstract getAuthorityMetadataKeys(): Array<string>;\n\n /**\n * set cloud discovery metadata entity to the platform cache\n * @param key\n * @param value\n */\n abstract setAuthorityMetadata(key: string, value: AuthorityMetadataEntity): void;\n\n /**\n * fetch throttling entity from the platform cache\n * @param throttlingCacheKey\n */\n abstract getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null;\n\n /**\n * set throttling entity to the platform cache\n * @param throttlingCacheKey\n * @param throttlingCache\n */\n abstract setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void;\n\n /**\n * Function to remove an item from cache given its key.\n * @param key\n */\n abstract removeItem(key: string): void;\n\n /**\n * Function which returns boolean whether cache contains a specific key.\n * @param key\n */\n abstract containsKey(key: string, type?: string): boolean;\n\n /**\n * Function which retrieves all current keys from the cache.\n */\n abstract getKeys(): string[];\n\n /**\n * Function which retrieves all account keys from the cache\n */\n abstract getAccountKeys(): string[];\n\n /**\n * Function which retrieves all token keys from the cache\n */\n abstract getTokenKeys(): TokenKeys;\n\n /**\n * Function which clears cache.\n */\n abstract clear(): Promise<void>;\n\n /**\n * Function which updates an outdated credential cache key\n */\n abstract updateCredentialCacheKey(currentCacheKey: string, credential: ValidCredentialType): string;\n\n /**\n * Returns all accounts in cache\n */\n getAllAccounts(): AccountInfo[] {\n const allAccountKeys = this.getAccountKeys();\n if (allAccountKeys.length < 1) {\n return [];\n }\n\n const accountEntities: AccountEntity[] = allAccountKeys.reduce((accounts: AccountEntity[], key: string) => {\n const entity: AccountEntity | null = this.getAccount(key);\n\n if (!entity) {\n return accounts;\n }\n accounts.push(entity);\n return accounts;\n }, []);\n\n if (accountEntities.length < 1) {\n return [];\n } else {\n const allAccounts = accountEntities.map<AccountInfo>((accountEntity) => {\n return this.getAccountInfoFromEntity(accountEntity);\n });\n return allAccounts;\n }\n }\n\n /** \n * Gets accountInfo object based on provided filters\n */\n getAccountInfoFilteredBy(accountFilter: AccountFilter): AccountInfo | null{\n const allAccounts = this.getAccountsFilteredBy(accountFilter);\n if (allAccounts.length > 0) {\n return this.getAccountInfoFromEntity(allAccounts[0]);\n } else {\n return null;\n }\n }\n\n private getAccountInfoFromEntity(accountEntity: AccountEntity): AccountInfo {\n const accountInfo = accountEntity.getAccountInfo();\n const idToken = this.getIdToken(accountInfo);\n if (idToken) {\n accountInfo.idToken = idToken.secret;\n accountInfo.idTokenClaims = new AuthToken(idToken.secret, this.cryptoImpl).claims;\n }\n return accountInfo;\n }\n\n /**\n * saves a cache record\n * @param cacheRecord\n */\n async saveCacheRecord(cacheRecord: CacheRecord): Promise<void> {\n if (!cacheRecord) {\n throw ClientAuthError.createNullOrUndefinedCacheRecord();\n }\n\n if (!!cacheRecord.account) {\n this.setAccount(cacheRecord.account);\n }\n\n if (!!cacheRecord.idToken) {\n this.setIdTokenCredential(cacheRecord.idToken);\n }\n\n if (!!cacheRecord.accessToken) {\n await this.saveAccessToken(cacheRecord.accessToken);\n }\n\n if (!!cacheRecord.refreshToken) {\n this.setRefreshTokenCredential(cacheRecord.refreshToken);\n }\n\n if (!!cacheRecord.appMetadata) {\n this.setAppMetadata(cacheRecord.appMetadata);\n }\n }\n\n /**\n * saves access token credential\n * @param credential\n */\n private async saveAccessToken(credential: AccessTokenEntity): Promise<void> {\n const accessTokenFilter: CredentialFilter = {\n clientId: credential.clientId,\n credentialType: credential.credentialType,\n environment: credential.environment,\n homeAccountId: credential.homeAccountId,\n realm: credential.realm,\n tokenType: credential.tokenType,\n requestedClaimsHash: credential.requestedClaimsHash\n };\n\n const tokenKeys = this.getTokenKeys();\n const currentScopes = ScopeSet.fromString(credential.target);\n\n const removedAccessTokens: Array<Promise<void>> = [];\n tokenKeys.accessToken.forEach((key) => {\n if(!this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)) {\n return;\n }\n \n const tokenEntity = this.getAccessTokenCredential(key);\n\n if (tokenEntity && this.credentialMatchesFilter(tokenEntity, accessTokenFilter)) {\n const tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\n if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\n removedAccessTokens.push(this.removeAccessToken(key));\n }\n }\n });\n await Promise.all(removedAccessTokens);\n this.setAccessTokenCredential(credential);\n }\n\n /**\n * retrieve accounts matching all provided filters; if no filter is set, get all accounts\n * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\n * @param homeAccountId\n * @param environment\n * @param realm\n */\n getAccountsFilteredBy(accountFilter: AccountFilter): AccountEntity[] {\n const allAccountKeys = this.getAccountKeys();\n const matchingAccounts: AccountEntity[] = [];\n\n allAccountKeys.forEach((cacheKey) => {\n if (!this.isAccountKey(cacheKey, accountFilter.homeAccountId, accountFilter.realm)) {\n // Don't parse value if the key doesn't match the account filters\n return;\n }\n\n const entity: AccountEntity | null = this.getAccount(cacheKey);\n\n if (!entity) {\n return;\n }\n\n if (!!accountFilter.homeAccountId && !this.matchHomeAccountId(entity, accountFilter.homeAccountId)) {\n return;\n }\n\n if (!!accountFilter.localAccountId && !this.matchLocalAccountId(entity, accountFilter.localAccountId)) {\n return;\n }\n\n if (!!accountFilter.username && !this.matchUsername(entity, accountFilter.username)) {\n return;\n }\n\n if (!!accountFilter.environment && !this.matchEnvironment(entity, accountFilter.environment)) {\n return;\n }\n\n if (!!accountFilter.realm && !this.matchRealm(entity, accountFilter.realm)) {\n return;\n }\n\n if (!!accountFilter.nativeAccountId && !this.matchNativeAccountId(entity, accountFilter.nativeAccountId)) {\n return;\n }\n\n matchingAccounts.push(entity);\n });\n\n return matchingAccounts;\n }\n\n /**\n * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided\n * @param key \n * @param homeAccountId \n * @param tenantId \n * @returns \n */\n isAccountKey(key: string, homeAccountId?: string, tenantId?: string): boolean {\n if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 3) {\n // Account cache keys contain 3 items separated by '-' (each item may also contain '-')\n return false;\n }\n\n if (homeAccountId && !key.toLowerCase().includes(homeAccountId.toLowerCase())) {\n return false;\n }\n\n if (tenantId && !key.toLowerCase().includes(tenantId.toLowerCase())) {\n return false;\n }\n\n // Do not check environment as aliasing can cause false negatives\n\n return true;\n }\n\n /**\n * Returns true if the given key matches our credential key schema.\n * @param key \n */\n isCredentialKey(key: string): boolean {\n if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 6) {\n // Credential cache keys contain 6 items separated by '-' (each item may also contain '-')\n return false;\n }\n\n const lowerCaseKey = key.toLowerCase();\n // Credential keys must indicate what credential type they represent\n if (lowerCaseKey.indexOf(CredentialType.ID_TOKEN.toLowerCase()) === -1 &&\n lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) === -1 &&\n lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) === -1 &&\n lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) === -1\n ) {\n return false;\n }\n\n if (lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) > -1) {\n // Refresh tokens must contain the client id or family id\n const clientIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${this.clientId}${Separators.CACHE_KEY_SEPARATOR}`;\n const familyIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${THE_FAMILY_ID}${Separators.CACHE_KEY_SEPARATOR}`;\n if (lowerCaseKey.indexOf(clientIdValidation.toLowerCase()) === -1 && lowerCaseKey.indexOf(familyIdValidation.toLowerCase()) === -1) {\n return false;\n }\n } else if (lowerCaseKey.indexOf(this.clientId.toLowerCase()) === -1) {\n // Tokens must contain the clientId\n return false;\n }\n\n return true;\n }\n\n /**\n * Returns whether or not the given credential entity matches the filter\n * @param entity \n * @param filter \n * @returns \n */\n credentialMatchesFilter(entity: ValidCredentialType, filter: CredentialFilter): boolean {\n if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) {\n return false;\n }\n\n if (!!filter.userAssertionHash && !this.matchUserAssertionHash(entity, filter.userAssertionHash)) {\n return false;\n }\n\n /*\n * homeAccountId can be undefined, and we want to filter out cached items that have a homeAccountId of \"\"\n * because we don't want a client_credential request to return a cached token that has a homeAccountId\n */\n if ((typeof filter.homeAccountId === \"string\") && !this.matchHomeAccountId(entity, filter.homeAccountId)) {\n return false;\n }\n\n if (!!filter.environment && !this.matchEnvironment(entity, filter.environment)) {\n return false;\n }\n\n if (!!filter.realm && !this.matchRealm(entity, filter.realm)) {\n return false;\n }\n\n if (!!filter.credentialType && !this.matchCredentialType(entity, filter.credentialType)) {\n return false;\n }\n\n if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) {\n return false;\n }\n\n /*\n * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\n * Resource specific refresh tokens case will be added when the support is deemed necessary\n */\n if (!!filter.target && !this.matchTarget(entity, filter.target)) {\n return false;\n }\n\n // If request OR cached entity has requested Claims Hash, check if they match\n if (filter.requestedClaimsHash || entity.requestedClaimsHash) {\n // Don't match if either is undefined or they are different\n if (entity.requestedClaimsHash !== filter.requestedClaimsHash) {\n return false;\n }\n }\n\n // Access Token with Auth Scheme specific matching\n if (entity.credentialType === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) {\n if(!!filter.tokenType && !this.matchTokenType(entity, filter.tokenType)) {\n return false;\n }\n\n // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key\n if (filter.tokenType === AuthenticationScheme.SSH) {\n if(filter.keyId && !this.matchKeyId(entity, filter.keyId)) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\n * @param filter\n */\n getAppMetadataFilteredBy(filter: AppMetadataFilter): AppMetadataCache {\n return this.getAppMetadataFilteredByInternal(\n filter.environment,\n filter.clientId,\n );\n }\n\n /**\n * Support function to help match appMetadata\n * @param environment\n * @param clientId\n */\n private getAppMetadataFilteredByInternal(\n environment?: string,\n clientId?: string\n ): AppMetadataCache {\n\n const allCacheKeys = this.getKeys();\n const matchingAppMetadata: AppMetadataCache = {};\n\n allCacheKeys.forEach((cacheKey) => {\n // don't parse any non-appMetadata type cache entities\n if (!this.isAppMetadata(cacheKey)) {\n return;\n }\n\n // Attempt retrieval\n const entity = this.getAppMetadata(cacheKey);\n\n if (!entity) {\n return;\n }\n\n if (!!environment && !this.matchEnvironment(entity, environment)) {\n return;\n }\n\n if (!!clientId && !this.matchClientId(entity, clientId)) {\n return;\n }\n\n matchingAppMetadata[cacheKey] = entity;\n\n });\n\n return matchingAppMetadata;\n }\n\n /**\n * retrieve authorityMetadata that contains a matching alias\n * @param filter\n */\n getAuthorityMetadataByAlias(host: string): AuthorityMetadataEntity | null {\n const allCacheKeys = this.getAuthorityMetadataKeys();\n let matchedEntity = null;\n\n allCacheKeys.forEach((cacheKey) => {\n // don't parse any non-authorityMetadata type cache entities\n if (!this.isAuthorityMetadata(cacheKey) || cacheKey.indexOf(this.clientId) === -1) {\n return;\n }\n\n // Attempt retrieval\n const entity = this.getAuthorityMetadata(cacheKey);\n\n if (!entity) {\n return;\n }\n\n if (entity.aliases.indexOf(host) === -1) {\n return;\n }\n\n matchedEntity = entity;\n\n });\n\n return matchedEntity;\n }\n\n /**\n * Removes all accounts and related tokens from cache.\n */\n async removeAllAccounts(): Promise<void> {\n const allAccountKeys = this.getAccountKeys();\n const removedAccounts: Array<Promise<void>> = [];\n\n allAccountKeys.forEach((cacheKey) => {\n removedAccounts.push(this.removeAccount(cacheKey));\n });\n\n await Promise.all(removedAccounts);\n }\n\n /**\n * Removes the account and related tokens for a given account key\n * @param account\n */\n async removeAccount(accountKey: string): Promise<void> {\n const account = this.getAccount(accountKey);\n if (!account) {\n throw ClientAuthError.createNoAccountFoundError();\n }\n await this.removeAccountContext(account);\n this.removeItem(accountKey);\n }\n\n /**\n * Removes credentials associated with the provided account\n * @param account\n */\n async removeAccountContext(account: AccountEntity): Promise<void> {\n const allTokenKeys = this.getTokenKeys();\n const accountId = account.generateAccountId();\n const removedCredentials: Array<Promise<void>> = [];\n\n allTokenKeys.idToken.forEach((key) => {\n if (key.indexOf(accountId) === 0) {\n this.removeIdToken(key);\n }\n });\n\n allTokenKeys.accessToken.forEach((key) => {\n if (key.indexOf(accountId) === 0) {\n removedCredentials.push(this.removeAccessToken(key));\n }\n });\n\n allTokenKeys.refreshToken.forEach((key) => {\n if (key.indexOf(accountId) === 0) {\n this.removeRefreshToken(key);\n }\n });\n\n await Promise.all(removedCredentials);\n }\n\n /**\n * returns a boolean if the given credential is removed\n * @param credential\n */\n async removeAccessToken(key: string): Promise<void> {\n const credential = this.getAccessTokenCredential(key);\n if (!credential) {\n return;\n }\n\n // Remove Token Binding Key from key store for PoP Tokens Credentials\n if (credential.credentialType.toLowerCase() === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) {\n if(credential.tokenType === AuthenticationScheme.POP) {\n const accessTokenWithAuthSchemeEntity = credential as AccessTokenEntity;\n const kid = accessTokenWithAuthSchemeEntity.keyId;\n\n if (kid) {\n try {\n await this.cryptoImpl.removeTokenBindingKey(kid);\n } catch (error) {\n throw ClientAuthError.createBindingKeyNotRemovedError();\n }\n }\n }\n }\n\n return this.removeItem(key);\n }\n\n /**\n * Removes all app metadata objects from cache.\n */\n removeAppMetadata(): boolean {\n const allCacheKeys = this.getKeys();\n allCacheKeys.forEach((cacheKey) => {\n if (this.isAppMetadata(cacheKey)) {\n this.removeItem(cacheKey);\n }\n });\n\n return true;\n }\n\n /**\n * Retrieve the cached credentials into a cacherecord\n * @param account\n * @param clientId\n * @param scopes\n * @param environment\n * @param authScheme\n */\n readCacheRecord(account: AccountInfo, request: BaseAuthRequest, environment: string): CacheRecord {\n const tokenKeys = this.getTokenKeys();\n const cachedAccount = this.readAccountFromCache(account);\n const cachedIdToken = this.getIdToken(account, tokenKeys);\n const cachedAccessToken = this.getAccessToken(account, request, tokenKeys);\n const cachedRefreshToken = this.getRefreshToken(account, false, tokenKeys);\n const cachedAppMetadata = this.readAppMetadataFromCache(environment);\n\n if (cachedAccount && cachedIdToken) {\n cachedAccount.idTokenClaims = new AuthToken(cachedIdToken.secret, this.cryptoImpl).claims;\n }\n\n return {\n account: cachedAccount,\n idToken: cachedIdToken,\n accessToken: cachedAccessToken,\n refreshToken: cachedRefreshToken,\n appMetadata: cachedAppMetadata,\n };\n }\n\n /**\n * Retrieve AccountEntity from cache\n * @param account\n */\n readAccountFromCache(account: AccountInfo): AccountEntity | null {\n const accountKey: string = AccountEntity.generateAccountCacheKey(account);\n return this.getAccount(accountKey);\n }\n\n /**\n * Retrieve IdTokenEntity from cache\n * @param clientId\n * @param account\n * @param inputRealm\n */\n getIdToken(account: AccountInfo, tokenKeys?: TokenKeys): IdTokenEntity | null {\n this.commonLogger.trace(\"CacheManager - getIdToken called\");\n const idTokenFilter: CredentialFilter = {\n homeAccountId: account.homeAccountId,\n environment: account.environment,\n credentialType: CredentialType.ID_TOKEN,\n clientId: this.clientId,\n realm: account.tenantId,\n };\n\n const idTokens: IdTokenEntity[] = this.getIdTokensByFilter(idTokenFilter, tokenKeys);\n const numIdTokens = idTokens.length;\n\n if (numIdTokens < 1) {\n this.commonLogger.info(\"CacheManager:getIdToken - No token found\");\n return null;\n } else if (numIdTokens > 1) {\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\n }\n\n this.commonLogger.info(\"CacheManager:getIdToken - Returning id token\");\n return idTokens[0];\n }\n\n /**\n * Gets all idTokens matching the given filter\n * @param filter \n * @returns \n */\n getIdTokensByFilter(filter: CredentialFilter, tokenKeys?: TokenKeys): IdTokenEntity[] {\n const idTokenKeys = tokenKeys && tokenKeys.idToken || this.getTokenKeys().idToken;\n\n const idTokens: IdTokenEntity[] = [];\n idTokenKeys.forEach((key) => {\n if (!this.idTokenKeyMatchesFilter(key, {clientId: this.clientId, ...filter})) {\n return;\n }\n\n const idToken = this.getIdTokenCredential(key);\n if (idToken && this.credentialMatchesFilter(idToken, filter)) {\n idTokens.push(idToken);\n }\n });\n\n return idTokens;\n }\n\n /**\n * Validate the cache key against filter before retrieving and parsing cache value\n * @param key \n * @param filter\n * @returns \n */\n idTokenKeyMatchesFilter(inputKey: string, filter: CredentialFilter): boolean {\n const key = inputKey.toLowerCase();\n if (filter.clientId && key.indexOf(filter.clientId.toLowerCase()) === -1) {\n return false;\n }\n\n if (filter.homeAccountId && key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Removes idToken from the cache\n * @param key \n */\n removeIdToken(key: string): void {\n this.removeItem(key);\n }\n\n /**\n * Removes refresh token from the cache\n * @param key \n */\n removeRefreshToken(key: string): void {\n this.removeItem(key);\n }\n\n /**\n * Retrieve AccessTokenEntity from cache\n * @param clientId\n * @param account\n * @param scopes\n * @param authScheme\n */\n getAccessToken(account: AccountInfo, request: BaseAuthRequest, tokenKeys?: TokenKeys): AccessTokenEntity | null {\n this.commonLogger.trace(\"CacheManager - getAccessToken called\");\n const scopes = ScopeSet.createSearchScopes(request.scopes);\n const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\n /*\n * Distinguish between Bearer and PoP/SSH token cache types\n * Cast to lowercase to handle \"bearer\" from ADFS\n */\n const credentialType = (authScheme && authScheme.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME : CredentialType.ACCESS_TOKEN;\n\n const accessTokenFilter: CredentialFilter = {\n homeAccountId: account.homeAccountId,\n environment: account.environment,\n credentialType: credentialType,\n clientId: this.clientId,\n realm: account.tenantId,\n target: scopes,\n tokenType: authScheme,\n keyId: request.sshKid,\n requestedClaimsHash: request.requestedClaimsHash,\n };\n\n const accessTokenKeys = tokenKeys && tokenKeys.accessToken || this.getTokenKeys().accessToken;\n const accessTokens: AccessTokenEntity[] = [];\n\n accessTokenKeys.forEach((key) => {\n // Validate key\n if (this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)) {\n const accessToken = this.getAccessTokenCredential(key);\n\n // Validate value\n if (accessToken && this.credentialMatchesFilter(accessToken, accessTokenFilter)) {\n accessTokens.push(accessToken);\n }\n }\n });\n\n const numAccessTokens = accessTokens.length;\n if (numAccessTokens < 1) {\n this.commonLogger.info(\"CacheManager:getAccessToken - No token found\");\n return null;\n } else if (numAccessTokens > 1) {\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\n }\n\n this.commonLogger.info(\"CacheManager:getAccessToken - Returning access token\");\n return accessTokens[0];\n }\n\n /**\n * Validate the cache key against filter before retrieving and parsing cache value\n * @param key \n * @param filter \n * @param keyMustContainAllScopes \n * @returns \n */\n accessTokenKeyMatchesFilter(inputKey: string, filter: CredentialFilter, keyMustContainAllScopes: boolean): boolean {\n const key = inputKey.toLowerCase();\n if (filter.clientId && key.indexOf(filter.clientId.toLowerCase()) === -1) {\n return false;\n }\n\n if (filter.homeAccountId && key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\n return false;\n }\n\n if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) {\n return false;\n }\n\n if (filter.requestedClaimsHash && key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1) {\n return false;\n }\n\n if (filter.target) {\n const scopes = filter.target.asArray();\n for (let i = 0; i < scopes.length; i++) {\n if (keyMustContainAllScopes && !key.includes(scopes[i].toLowerCase())) {\n // When performing a cache lookup a missing scope would be a cache miss\n return false;\n } else if (!keyMustContainAllScopes && key.includes(scopes[i].toLowerCase())) {\n // When performing a cache write, any token with a subset of requested scopes should be replaced\n return true;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Gets all access tokens matching the filter\n * @param filter \n * @returns \n */\n getAccessTokensByFilter(filter: CredentialFilter): AccessTokenEntity[] {\n const tokenKeys = this.getTokenKeys();\n\n const accessTokens: AccessTokenEntity[] = [];\n tokenKeys.accessToken.forEach((key) => {\n if (!this.accessTokenKeyMatchesFilter(key, filter, true)) {\n return;\n }\n\n const accessToken = this.getAccessTokenCredential(key);\n if (accessToken && this.credentialMatchesFilter(accessToken, filter)) {\n accessTokens.push(accessToken);\n }\n });\n\n return accessTokens;\n }\n\n /**\n * Helper to retrieve the appropriate refresh token from cache\n * @param clientId\n * @param account\n * @param familyRT\n */\n getRefreshToken(account: AccountInfo, familyRT: boolean, tokenKeys?: TokenKeys): RefreshTokenEntity | null {\n this.commonLogger.trace(\"CacheManager - getRefreshToken called\");\n const id = familyRT ? THE_FAMILY_ID : undefined;\n const refreshTokenFilter: CredentialFilter = {\n homeAccountId: account.homeAccountId,\n environment: account.environment,\n credentialType: CredentialType.REFRESH_TOKEN,\n clientId: this.clientId,\n familyId: id,\n };\n\n const refreshTokenKeys = tokenKeys && tokenKeys.refreshToken || this.getTokenKeys().refreshToken;\n const refreshTokens: RefreshTokenEntity[] = [];\n\n refreshTokenKeys.forEach((key) => {\n // Validate key\n if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) {\n const refreshToken = this.getRefreshTokenCredential(key);\n // Validate value\n if (refreshToken && this.credentialMatchesFilter(refreshToken, refreshTokenFilter)) {\n refreshTokens.push(refreshToken);\n }\n }\n });\n\n const numRefreshTokens = refreshTokens.length;\n if (numRefreshTokens < 1) {\n this.commonLogger.info(\"CacheManager:getRefreshToken - No refresh token found.\");\n return null;\n }\n // address the else case after remove functions address environment aliases\n\n this.commonLogger.info(\"CacheManager:getRefreshToken - returning refresh token\");\n return refreshTokens[0] as RefreshTokenEntity;\n }\n\n /**\n * Validate the cache key against filter before retrieving and parsing cache value\n * @param key\n * @param filter\n */\n refreshTokenKeyMatchesFilter(inputKey: string, filter: CredentialFilter): boolean {\n const key = inputKey.toLowerCase();\n if (filter.familyId && key.indexOf(filter.familyId.toLowerCase()) === -1) {\n return false;\n }\n\n // If familyId is used, clientId is not in the key\n if (!filter.familyId && filter.clientId && key.indexOf(filter.clientId.toLowerCase()) === -1) {\n return false;\n }\n\n if (filter.homeAccountId && key.indexOf(filter.homeAccountId.toLowerCase()) === -1) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Retrieve AppMetadataEntity from cache\n */\n readAppMetadataFromCache(environment: string): AppMetadataEntity | null {\n const appMetadataFilter: AppMetadataFilter = {\n environment,\n clientId: this.clientId,\n };\n\n const appMetadata: AppMetadataCache = this.getAppMetadataFilteredBy(appMetadataFilter);\n const appMetadataEntries: AppMetadataEntity[] = Object.keys(appMetadata).map((key) => appMetadata[key]);\n\n const numAppMetadata = appMetadataEntries.length;\n if (numAppMetadata < 1) {\n return null;\n } else if (numAppMetadata > 1) {\n throw ClientAuthError.createMultipleMatchingAppMetadataInCacheError();\n }\n\n return appMetadataEntries[0] as AppMetadataEntity;\n }\n\n /**\n * Return the family_id value associated with FOCI\n * @param environment\n * @param clientId\n */\n isAppMetadataFOCI(environment: string): boolean {\n const appMetadata = this.readAppMetadataFromCache(environment);\n return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\n }\n\n /**\n * helper to match account ids\n * @param value\n * @param homeAccountId\n */\n private matchHomeAccountId(entity: AccountEntity | CredentialEntity, homeAccountId: string): boolean {\n return !!((typeof entity.homeAccountId === \"string\") && (homeAccountId === entity.homeAccountId));\n }\n\n /**\n * helper to match account ids\n * @param entity \n * @param localAccountId \n * @returns \n */\n private matchLocalAccountId(entity: AccountEntity, localAccountId: string): boolean {\n return !!((typeof entity.localAccountId === \"string\") && (localAccountId === entity.localAccountId));\n }\n\n /**\n * helper to match usernames\n * @param entity \n * @param username \n * @returns \n */\n private matchUsername(entity: AccountEntity, username: string): boolean {\n return !!((typeof entity.username === \"string\") && (username.toLowerCase() === entity.username.toLowerCase()));\n }\n\n /**\n * helper to match assertion\n * @param value\n * @param oboAssertion\n */\n private matchUserAssertionHash(entity: CredentialEntity, userAssertionHash: string): boolean {\n return !!(entity.userAssertionHash && userAssertionHash === entity.userAssertionHash);\n }\n\n /**\n * helper to match environment\n * @param value\n * @param environment\n */\n private matchEnvironment(entity: AccountEntity | CredentialEntity | AppMetadataEntity, environment: string): boolean {\n const cloudMetadata = this.getAuthorityMetadataByAlias(environment);\n if (cloudMetadata && cloudMetadata.aliases.indexOf(entity.environment) > -1) {\n return true;\n }\n\n return false;\n }\n\n /**\n * helper to match credential type\n * @param entity\n * @param credentialType\n */\n private matchCredentialType(entity: CredentialEntity, credentialType: string): boolean {\n return (entity.credentialType && credentialType.toLowerCase() === entity.credentialType.toLowerCase());\n }\n\n /**\n * helper to match client ids\n * @param entity\n * @param clientId\n */\n private matchClientId(entity: CredentialEntity | AppMetadataEntity, clientId: string): boolean {\n return !!(entity.clientId && clientId === entity.clientId);\n }\n\n /**\n * helper to match family ids\n * @param entity\n * @param familyId\n */\n private matchFamilyId(entity: CredentialEntity | AppMetadataEntity, familyId: string): boolean {\n return !!(entity.familyId && familyId === entity.familyId);\n }\n\n /**\n * helper to match realm\n * @param entity\n * @param realm\n */\n private matchRealm(entity: AccountEntity | CredentialEntity, realm: string): boolean {\n return !!(entity.realm && realm === entity.realm);\n }\n\n /**\n * helper to match nativeAccountId\n * @param entity\n * @param nativeAccountId\n * @returns boolean indicating the match result\n */\n private matchNativeAccountId(entity: AccountEntity, nativeAccountId: string): boolean {\n return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId);\n }\n\n /**\n * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\n * @param entity\n * @param target\n */\n private matchTarget(entity: CredentialEntity, target: ScopeSet): boolean {\n const isNotAccessTokenCredential = (entity.credentialType !== CredentialType.ACCESS_TOKEN && entity.credentialType !== CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME);\n\n if ( isNotAccessTokenCredential || !entity.target) {\n return false;\n }\n\n const entityScopeSet: ScopeSet = ScopeSet.fromString(entity.target);\n\n return entityScopeSet.containsScopeSet(target);\n }\n\n /**\n * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise\n * @param entity\n * @param tokenType\n */\n private matchTokenType(entity: CredentialEntity, tokenType: AuthenticationScheme): boolean {\n return !!(entity.tokenType && entity.tokenType === tokenType);\n }\n\n /**\n * Returns true if the credential's keyId matches the one in the request, false otherwise\n * @param entity\n * @param tokenType\n */\n private matchKeyId(entity: CredentialEntity, keyId: string): boolean {\n return !!(entity.keyId && entity.keyId === keyId);\n }\n\n /**\n * returns if a given cache entity is of the type appmetadata\n * @param key\n */\n private isAppMetadata(key: string): boolean {\n return key.indexOf(APP_METADATA) !== -1;\n }\n\n /**\n * returns if a given cache entity is of the type authoritymetadata\n * @param key\n */\n protected isAuthorityMetadata(key: string): boolean {\n return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\n }\n\n /**\n * returns cache key used for cloud instance metadata\n */\n generateAuthorityMetadataCacheKey(authority: string): string {\n return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`;\n }\n\n /**\n * Helper to convert serialized data to object\n * @param obj\n * @param json\n */\n static toObject<T>(obj: T, json: object): T {\n for (const propertyName in json) {\n obj[propertyName] = json[propertyName];\n }\n return obj;\n }\n}\n\nexport class DefaultStorageClass extends CacheManager {\n setAccount(): void {\n const notImplErr = \"Storage interface - setAccount() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getAccount(): AccountEntity {\n const notImplErr = \"Storage interface - getAccount() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setIdTokenCredential(): void {\n const notImplErr = \"Storage interface - setIdTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getIdTokenCredential(): IdTokenEntity {\n const notImplErr = \"Storage interface - getIdTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setAccessTokenCredential(): void {\n const notImplErr = \"Storage interface - setAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getAccessTokenCredential(): AccessTokenEntity {\n const notImplErr = \"Storage interface - getAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setRefreshTokenCredential(): void {\n const notImplErr = \"Storage interface - setRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getRefreshTokenCredential(): RefreshTokenEntity {\n const notImplErr = \"Storage interface - getRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setAppMetadata(): void {\n const notImplErr = \"Storage interface - setAppMetadata() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getAppMetadata(): AppMetadataEntity {\n const notImplErr = \"Storage interface - getAppMetadata() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setServerTelemetry(): void {\n const notImplErr = \"Storage interface - setServerTelemetry() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getServerTelemetry(): ServerTelemetryEntity {\n const notImplErr = \"Storage interface - getServerTelemetry() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setAuthorityMetadata(): void {\n const notImplErr = \"Storage interface - setAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getAuthorityMetadata(): AuthorityMetadataEntity | null {\n const notImplErr = \"Storage interface - getAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getAuthorityMetadataKeys(): Array<string> {\n const notImplErr = \"Storage interface - getAuthorityMetadataKeys() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setThrottlingCache(): void {\n const notImplErr = \"Storage interface - setThrottlingCache() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getThrottlingCache(): ThrottlingEntity {\n const notImplErr = \"Storage interface - getThrottlingCache() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n removeItem(): boolean {\n const notImplErr = \"Storage interface - removeItem() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n containsKey(): boolean {\n const notImplErr = \"Storage interface - containsKey() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getKeys(): string[] {\n const notImplErr = \"Storage interface - getKeys() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getAccountKeys(): string[] {\n const notImplErr = \"Storage interface - getAccountKeys() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getTokenKeys(): TokenKeys {\n const notImplErr = \"Storage interface - getTokenKeys() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n async clear(): Promise<void> {\n const notImplErr = \"Storage interface - clear() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n updateCredentialCacheKey(): string {\n const notImplErr = \"Storage interface - updateCredentialCacheKey() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-common v11.0.0 2023-03-07 */
1
+ /*! @azure/msal-common v12.1.0 2023-04-18 */
2
2
  'use strict';
3
3
  import { __extends } from '../../_virtual/_tslib.js';
4
4
  import { CredentialEntity } from './CredentialEntity.js';
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-common v11.0.0 2023-03-07 */
1
+ /*! @azure/msal-common v12.1.0 2023-04-18 */
2
2
  'use strict';
3
3
  import { Separators, CacheAccountType, CacheType, Constants } from '../../utils/Constants.js';
4
4
  import { buildClientInfo } from '../../account/ClientInfo.js';
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-common v11.0.0 2023-03-07 */
1
+ /*! @azure/msal-common v12.1.0 2023-04-18 */
2
2
  'use strict';
3
3
  import { Separators, APP_METADATA } from '../../utils/Constants.js';
4
4
 
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-common v11.0.0 2023-03-07 */
1
+ /*! @azure/msal-common v12.1.0 2023-04-18 */
2
2
  'use strict';
3
3
  import { AUTHORITY_METADATA_CONSTANTS } from '../../utils/Constants.js';
4
4
  import { TimeUtils } from '../../utils/TimeUtils.js';
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-common v11.0.0 2023-03-07 */
1
+ /*! @azure/msal-common v12.1.0 2023-04-18 */
2
2
  'use strict';
3
3
  /*
4
4
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -34,12 +34,6 @@ export declare class CredentialEntity {
34
34
  tokenType?: AuthenticationScheme;
35
35
  keyId?: string;
36
36
  requestedClaimsHash?: string;
37
- private static credentialDomainRegex;
38
- private static credentialRegexMap;
39
- /**
40
- * Initializes a map with credential {CredentialType} regular expressions.
41
- */
42
- static _initRegex(): void;
43
37
  /**
44
38
  * Generate Account Id key component as per the schema: <home_account_id>-<environment>
45
39
  */
@@ -60,11 +54,6 @@ export declare class CredentialEntity {
60
54
  * returns the type of the cache (in this case credential)
61
55
  */
62
56
  generateType(): number;
63
- /**
64
- * helper function to return `CredentialType`
65
- * @param key
66
- */
67
- static getCredentialType(key: string): string;
68
57
  /**
69
58
  * generates credential key
70
59
  * <home_account_id*>-\<environment>-<credential_type>-<client_id>-<realm\*>-<target\*>-<scheme\*>
@@ -1 +1 @@
1
- {"version":3,"file":"CredentialEntity.d.ts","sourceRoot":"","sources":["../../../src/cache/entities/CredentialEntity.ts"],"names":[],"mappings":"AAKA,OAAO,EAAc,cAAc,EAAwB,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAG/G;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,gBAAgB;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAM7B,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAA8G;IAElJ,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAA8B;IAE/D;;OAEG;IACH,MAAM,CAAC,UAAU,IAAI,IAAI;IAoBzB;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;OAEG;IACH,oBAAoB,IAAI,MAAM;IAS9B;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAc/B;;OAEG;IACH,YAAY,IAAI,MAAM;IAetB;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAU7C;;;OAGG;IACH,MAAM,CAAC,0BAA0B,CAC7B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,oBAAoB,EAChC,mBAAmB,CAAC,EAAE,MAAM,GAC7B,MAAM;IAYT;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,4BAA4B;IAQ3C;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,+BAA+B;IAmB9C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAIxC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,6BAA6B;IAI5C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;CAO3C"}
1
+ {"version":3,"file":"CredentialEntity.d.ts","sourceRoot":"","sources":["../../../src/cache/entities/CredentialEntity.ts"],"names":[],"mappings":"AAKA,OAAO,EAAc,cAAc,EAAwB,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAG/G;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,gBAAgB;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;OAEG;IACH,oBAAoB,IAAI,MAAM;IAS9B;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAc/B;;OAEG;IACH,YAAY,IAAI,MAAM;IAetB;;;OAGG;IACH,MAAM,CAAC,0BAA0B,CAC7B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,oBAAoB,EAChC,mBAAmB,CAAC,EAAE,MAAM,GAC7B,MAAM;IAYT;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,4BAA4B;IAQ3C;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,+BAA+B;IAmB9C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAIxC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,6BAA6B;IAI5C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;CAO3C"}
@@ -1,6 +1,6 @@
1
- /*! @azure/msal-common v11.0.0 2023-03-07 */
1
+ /*! @azure/msal-common v12.1.0 2023-04-18 */
2
2
  'use strict';
3
- import { CredentialType, CacheType, Constants, Separators, AuthenticationScheme } from '../../utils/Constants.js';
3
+ import { CredentialType, CacheType, Separators, Constants, AuthenticationScheme } from '../../utils/Constants.js';
4
4
  import { ClientAuthError } from '../../error/ClientAuthError.js';
5
5
 
6
6
  /*
@@ -32,25 +32,6 @@ import { ClientAuthError } from '../../error/ClientAuthError.js';
32
32
  var CredentialEntity = /** @class */ (function () {
33
33
  function CredentialEntity() {
34
34
  }
35
- /**
36
- * Initializes a map with credential {CredentialType} regular expressions.
37
- */
38
- CredentialEntity._initRegex = function () {
39
- var separator = Separators.CACHE_KEY_SEPARATOR;
40
- CredentialEntity.credentialRegexMap = new Map();
41
- for (var _i = 0, _a = Object.keys(CredentialType); _i < _a.length; _i++) {
42
- var credKey = _a[_i];
43
- var credVal = CredentialType[credKey].toLowerCase();
44
- try {
45
- // Verify credential type is preceded by a valid host name (environment) using lookbehind
46
- CredentialEntity.credentialRegexMap.set(CredentialType[credKey], new RegExp("(?<=" + separator + CredentialEntity.credentialDomainRegex + ")" + separator + credVal + separator));
47
- }
48
- catch (err) {
49
- // Lookbehind is not supported (Safari or older versions of IE) - removing it
50
- CredentialEntity.credentialRegexMap.set(CredentialType[credKey], new RegExp("" + separator + CredentialEntity.credentialDomainRegex + separator + credVal + separator));
51
- }
52
- }
53
- };
54
35
  /**
55
36
  * Generate Account Id key component as per the schema: <home_account_id>-<environment>
56
37
  */
@@ -92,20 +73,6 @@ var CredentialEntity = /** @class */ (function () {
92
73
  }
93
74
  }
94
75
  };
95
- /**
96
- * helper function to return `CredentialType`
97
- * @param key
98
- */
99
- CredentialEntity.getCredentialType = function (key) {
100
- var _a;
101
- for (var _i = 0, _b = Object.keys(CredentialType); _i < _b.length; _i++) {
102
- var credKey = _b[_i];
103
- if ((_a = this.credentialRegexMap.get(CredentialType[credKey])) === null || _a === void 0 ? void 0 : _a.test(key.toLowerCase())) {
104
- return CredentialType[credKey];
105
- }
106
- }
107
- return Constants.NOT_DEFINED;
108
- };
109
76
  /**
110
77
  * generates credential key
111
78
  * <home_account_id*>-\<environment>-<credential_type>-<client_id>-<realm\*>-<target\*>-<scheme\*>
@@ -169,14 +136,8 @@ var CredentialEntity = /** @class */ (function () {
169
136
  */
170
137
  return (tokenType && tokenType.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) ? tokenType.toLowerCase() : Constants.EMPTY_STRING;
171
138
  };
172
- /*
173
- * Match host names like "login.microsoftonline.com", "https://accounts.google.com:4000", https://localhost:5000,
174
- * "login.microsoftonline.com/common", "login.microsoftonline.com:4000/common", etc
175
- */
176
- CredentialEntity.credentialDomainRegex = "(https?:\\/\\/)?((([\\w-]+\\.)*([\\w-]{1,63})(\\.(\\w{2,63})))|(localhost))(\\:[0-9]{4,5})?(\\/[\\w-]+)?";
177
139
  return CredentialEntity;
178
- }());
179
- CredentialEntity._initRegex();
140
+ }());
180
141
 
181
142
  export { CredentialEntity };
182
143
  //# sourceMappingURL=CredentialEntity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CredentialEntity.js","sources":["../../../src/cache/entities/CredentialEntity.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Separators, CredentialType, CacheType, Constants, AuthenticationScheme } from \"../../utils/Constants\";\nimport { ClientAuthError } from \"../../error/ClientAuthError\";\n\n/**\n * Base type for credentials to be stored in the cache: eg: ACCESS_TOKEN, ID_TOKEN etc\n *\n * Key:Value Schema:\n *\n * Key: <home_account_id*>-<environment>-<credential_type>-<client_id>-<realm*>-<target*>-<requestedClaims*>-<scheme*>\n *\n * Value Schema:\n * {\n * homeAccountId: home account identifier for the auth scheme,\n * environment: entity that issued the token, represented as a full host\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\n * clientId: client ID of the application\n * secret: Actual credential as a string\n * familyId: Family ID identifier, usually only used for refresh tokens\n * realm: Full tenant or organizational identifier that the account belongs to\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\n * tokenType: Matches the authentication scheme for which the token was issued (i.e. Bearer or pop)\n * requestedClaimsHash: Matches the SHA 256 hash of the claims object included in the token request\n * userAssertionHash: Matches the SHA 256 hash of the obo_assertion for the OBO flow\n * }\n */\nexport class CredentialEntity {\n homeAccountId: string;\n environment: string;\n credentialType: CredentialType;\n clientId: string;\n secret: string;\n familyId?: string;\n realm?: string;\n target?: string;\n userAssertionHash?: string;\n tokenType?: AuthenticationScheme;\n keyId?: string;\n requestedClaimsHash?: string;\n\n /*\n * Match host names like \"login.microsoftonline.com\", \"https://accounts.google.com:4000\", https://localhost:5000,\n * \"login.microsoftonline.com/common\", \"login.microsoftonline.com:4000/common\", etc\n */\n private static credentialDomainRegex = \"(https?:\\\\/\\\\/)?((([\\\\w-]+\\\\.)*([\\\\w-]{1,63})(\\\\.(\\\\w{2,63})))|(localhost))(\\\\:[0-9]{4,5})?(\\\\/[\\\\w-]+)?\";\n // Maps {CredentialType} to the corresponding regular expression.\n private static credentialRegexMap: Map<CredentialType, RegExp>;\n\n /**\n * Initializes a map with credential {CredentialType} regular expressions.\n */\n static _initRegex(): void {\n const separator = Separators.CACHE_KEY_SEPARATOR;\n CredentialEntity.credentialRegexMap = new Map<CredentialType, RegExp>();\n for (const credKey of Object.keys(CredentialType)) {\n const credVal = CredentialType[credKey].toLowerCase();\n\n try {\n // Verify credential type is preceded by a valid host name (environment) using lookbehind\n CredentialEntity.credentialRegexMap.set(\n CredentialType[credKey],\n new RegExp(`(?<=${separator}${CredentialEntity.credentialDomainRegex})${separator}${credVal}${separator}`));\n } catch (err) {\n // Lookbehind is not supported (Safari or older versions of IE) - removing it\n CredentialEntity.credentialRegexMap.set(\n CredentialType[credKey],\n new RegExp(`${separator}${CredentialEntity.credentialDomainRegex}${separator}${credVal}${separator}`));\n }\n }\n }\n\n /**\n * Generate Account Id key component as per the schema: <home_account_id>-<environment>\n */\n generateAccountId(): string {\n return CredentialEntity.generateAccountIdForCacheKey(this.homeAccountId, this.environment);\n }\n\n /**\n * Generate Credential Id key component as per the schema: <credential_type>-<client_id>-<realm>\n */\n generateCredentialId(): string {\n return CredentialEntity.generateCredentialIdForCacheKey(\n this.credentialType,\n this.clientId,\n this.realm,\n this.familyId\n );\n }\n\n /**\n * Generate target key component as per schema: <target>\n */\n generateTarget(): string {\n return CredentialEntity.generateTargetForCacheKey(this.target);\n }\n\n /**\n * generates credential key\n */\n generateCredentialKey(): string {\n return CredentialEntity.generateCredentialCacheKey(\n this.homeAccountId,\n this.environment,\n this.credentialType,\n this.clientId,\n this.realm,\n this.target,\n this.familyId,\n this.tokenType,\n this.requestedClaimsHash,\n );\n }\n\n /**\n * returns the type of the cache (in this case credential)\n */\n generateType(): number {\n switch (this.credentialType) {\n case CredentialType.ID_TOKEN:\n return CacheType.ID_TOKEN;\n case CredentialType.ACCESS_TOKEN:\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:\n return CacheType.ACCESS_TOKEN;\n case CredentialType.REFRESH_TOKEN:\n return CacheType.REFRESH_TOKEN;\n default: {\n throw ClientAuthError.createUnexpectedCredentialTypeError();\n }\n }\n }\n\n /**\n * helper function to return `CredentialType`\n * @param key\n */\n static getCredentialType(key: string): string {\n for (const credKey of Object.keys(CredentialType)) {\n if (this.credentialRegexMap.get(CredentialType[credKey])?.test(key.toLowerCase())) {\n return CredentialType[credKey];\n }\n }\n\n return Constants.NOT_DEFINED;\n }\n\n /**\n * generates credential key\n * <home_account_id*>-\\<environment>-<credential_type>-<client_id>-<realm\\*>-<target\\*>-<scheme\\*>\n */\n static generateCredentialCacheKey(\n homeAccountId: string,\n environment: string,\n credentialType: CredentialType,\n clientId: string,\n realm?: string,\n target?: string,\n familyId?: string,\n tokenType?: AuthenticationScheme,\n requestedClaimsHash?: string\n ): string {\n const credentialKey = [\n this.generateAccountIdForCacheKey(homeAccountId, environment),\n this.generateCredentialIdForCacheKey(credentialType, clientId, realm, familyId),\n this.generateTargetForCacheKey(target),\n this.generateClaimsHashForCacheKey(requestedClaimsHash),\n this.generateSchemeForCacheKey(tokenType)\n ];\n\n return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n }\n\n /**\n * generates Account Id for keys\n * @param homeAccountId\n * @param environment\n */\n private static generateAccountIdForCacheKey(\n homeAccountId: string,\n environment: string\n ): string {\n const accountId: Array<string> = [homeAccountId, environment];\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n }\n\n /**\n * Generates Credential Id for keys\n * @param credentialType\n * @param realm\n * @param clientId\n * @param familyId\n */\n private static generateCredentialIdForCacheKey(\n credentialType: CredentialType,\n clientId: string,\n realm?: string,\n familyId?: string\n ): string {\n const clientOrFamilyId =\n credentialType === CredentialType.REFRESH_TOKEN\n ? familyId || clientId\n : clientId;\n const credentialId: Array<string> = [\n credentialType,\n clientOrFamilyId,\n realm || Constants.EMPTY_STRING,\n ];\n\n return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n }\n\n /**\n * Generate target key component as per schema: <target>\n */\n private static generateTargetForCacheKey(scopes?: string): string {\n return (scopes || Constants.EMPTY_STRING).toLowerCase();\n }\n\n /**\n * Generate requested claims key component as per schema: <requestedClaims>\n */\n private static generateClaimsHashForCacheKey(requestedClaimsHash?: string): string {\n return(requestedClaimsHash || Constants.EMPTY_STRING).toLowerCase();\n }\n\n /**\n * Generate scheme key componenet as per schema: <scheme>\n */\n private static generateSchemeForCacheKey(tokenType?: string): string {\n /*\n * PoP Tokens and SSH certs include scheme in cache key\n * Cast to lowercase to handle \"bearer\" from ADFS\n */\n return (tokenType && tokenType.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) ? tokenType.toLowerCase() : Constants.EMPTY_STRING;\n }\n}\n\nCredentialEntity._initRegex();\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CredentialEntity.js","sources":["../../../src/cache/entities/CredentialEntity.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Separators, CredentialType, CacheType, Constants, AuthenticationScheme } from \"../../utils/Constants\";\nimport { ClientAuthError } from \"../../error/ClientAuthError\";\n\n/**\n * Base type for credentials to be stored in the cache: eg: ACCESS_TOKEN, ID_TOKEN etc\n *\n * Key:Value Schema:\n *\n * Key: <home_account_id*>-<environment>-<credential_type>-<client_id>-<realm*>-<target*>-<requestedClaims*>-<scheme*>\n *\n * Value Schema:\n * {\n * homeAccountId: home account identifier for the auth scheme,\n * environment: entity that issued the token, represented as a full host\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\n * clientId: client ID of the application\n * secret: Actual credential as a string\n * familyId: Family ID identifier, usually only used for refresh tokens\n * realm: Full tenant or organizational identifier that the account belongs to\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\n * tokenType: Matches the authentication scheme for which the token was issued (i.e. Bearer or pop)\n * requestedClaimsHash: Matches the SHA 256 hash of the claims object included in the token request\n * userAssertionHash: Matches the SHA 256 hash of the obo_assertion for the OBO flow\n * }\n */\nexport class CredentialEntity {\n homeAccountId: string;\n environment: string;\n credentialType: CredentialType;\n clientId: string;\n secret: string;\n familyId?: string;\n realm?: string;\n target?: string;\n userAssertionHash?: string;\n tokenType?: AuthenticationScheme;\n keyId?: string;\n requestedClaimsHash?: string;\n\n /**\n * Generate Account Id key component as per the schema: <home_account_id>-<environment>\n */\n generateAccountId(): string {\n return CredentialEntity.generateAccountIdForCacheKey(this.homeAccountId, this.environment);\n }\n\n /**\n * Generate Credential Id key component as per the schema: <credential_type>-<client_id>-<realm>\n */\n generateCredentialId(): string {\n return CredentialEntity.generateCredentialIdForCacheKey(\n this.credentialType,\n this.clientId,\n this.realm,\n this.familyId\n );\n }\n\n /**\n * Generate target key component as per schema: <target>\n */\n generateTarget(): string {\n return CredentialEntity.generateTargetForCacheKey(this.target);\n }\n\n /**\n * generates credential key\n */\n generateCredentialKey(): string {\n return CredentialEntity.generateCredentialCacheKey(\n this.homeAccountId,\n this.environment,\n this.credentialType,\n this.clientId,\n this.realm,\n this.target,\n this.familyId,\n this.tokenType,\n this.requestedClaimsHash,\n );\n }\n\n /**\n * returns the type of the cache (in this case credential)\n */\n generateType(): number {\n switch (this.credentialType) {\n case CredentialType.ID_TOKEN:\n return CacheType.ID_TOKEN;\n case CredentialType.ACCESS_TOKEN:\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:\n return CacheType.ACCESS_TOKEN;\n case CredentialType.REFRESH_TOKEN:\n return CacheType.REFRESH_TOKEN;\n default: {\n throw ClientAuthError.createUnexpectedCredentialTypeError();\n }\n }\n }\n\n /**\n * generates credential key\n * <home_account_id*>-\\<environment>-<credential_type>-<client_id>-<realm\\*>-<target\\*>-<scheme\\*>\n */\n static generateCredentialCacheKey(\n homeAccountId: string,\n environment: string,\n credentialType: CredentialType,\n clientId: string,\n realm?: string,\n target?: string,\n familyId?: string,\n tokenType?: AuthenticationScheme,\n requestedClaimsHash?: string\n ): string {\n const credentialKey = [\n this.generateAccountIdForCacheKey(homeAccountId, environment),\n this.generateCredentialIdForCacheKey(credentialType, clientId, realm, familyId),\n this.generateTargetForCacheKey(target),\n this.generateClaimsHashForCacheKey(requestedClaimsHash),\n this.generateSchemeForCacheKey(tokenType)\n ];\n\n return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n }\n\n /**\n * generates Account Id for keys\n * @param homeAccountId\n * @param environment\n */\n private static generateAccountIdForCacheKey(\n homeAccountId: string,\n environment: string\n ): string {\n const accountId: Array<string> = [homeAccountId, environment];\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n }\n\n /**\n * Generates Credential Id for keys\n * @param credentialType\n * @param realm\n * @param clientId\n * @param familyId\n */\n private static generateCredentialIdForCacheKey(\n credentialType: CredentialType,\n clientId: string,\n realm?: string,\n familyId?: string\n ): string {\n const clientOrFamilyId =\n credentialType === CredentialType.REFRESH_TOKEN\n ? familyId || clientId\n : clientId;\n const credentialId: Array<string> = [\n credentialType,\n clientOrFamilyId,\n realm || Constants.EMPTY_STRING,\n ];\n\n return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n }\n\n /**\n * Generate target key component as per schema: <target>\n */\n private static generateTargetForCacheKey(scopes?: string): string {\n return (scopes || Constants.EMPTY_STRING).toLowerCase();\n }\n\n /**\n * Generate requested claims key component as per schema: <requestedClaims>\n */\n private static generateClaimsHashForCacheKey(requestedClaimsHash?: string): string {\n return(requestedClaimsHash || Constants.EMPTY_STRING).toLowerCase();\n }\n\n /**\n * Generate scheme key componenet as per schema: <scheme>\n */\n private static generateSchemeForCacheKey(tokenType?: string): string {\n /*\n * PoP Tokens and SSH certs include scheme in cache key\n * Cast to lowercase to handle \"bearer\" from ADFS\n */\n return (tokenType && tokenType.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) ? tokenType.toLowerCase() : Constants.EMPTY_STRING;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-common v11.0.0 2023-03-07 */
1
+ /*! @azure/msal-common v12.1.0 2023-04-18 */
2
2
  'use strict';
3
3
  import { __extends } from '../../_virtual/_tslib.js';
4
4
  import { CredentialEntity } from './CredentialEntity.js';
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-common v11.0.0 2023-03-07 */
1
+ /*! @azure/msal-common v12.1.0 2023-04-18 */
2
2
  'use strict';
3
3
  import { __extends } from '../../_virtual/_tslib.js';
4
4
  import { CredentialEntity } from './CredentialEntity.js';
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-common v11.0.0 2023-03-07 */
1
+ /*! @azure/msal-common v12.1.0 2023-04-18 */
2
2
  'use strict';
3
3
  import { SERVER_TELEM_CONSTANTS } from '../../utils/Constants.js';
4
4
 
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-common v11.0.0 2023-03-07 */
1
+ /*! @azure/msal-common v12.1.0 2023-04-18 */
2
2
  'use strict';
3
3
  import { ThrottlingConstants } from '../../utils/Constants.js';
4
4