Socket
Socket
Sign inDemoInstall

angular-auth-oidc-client

Package Overview
Dependencies
10
Maintainers
3
Versions
174
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 11.5.1 to 11.6.0

esm2015/lib/flows/callback-handling/code-flow-callback-handler.service.js

55

angular-auth-oidc-client.d.ts

@@ -7,10 +7,10 @@ /**

export { HttpBaseService as ɵf } from './lib/api/http-base.service';
export { AuthStateService as ɵr } from './lib/authState/auth-state.service';
export { CallbackService as ɵy } from './lib/callback/callback.service';
export { CodeFlowCallbackService as ɵz } from './lib/callback/code-flow-callback.service';
export { ImplicitFlowCallbackService as ɵw } from './lib/callback/implicit-flow-callback.service';
export { IntervallService as ɵx } from './lib/callback/intervall.service';
export { PeriodicallyTokenCheckService as ɵbd } from './lib/callback/periodically-token-check.service';
export { RefreshSessionRefreshTokenService as ɵbc } from './lib/callback/refresh-session-refresh-token.service';
export { RefreshSessionService as ɵba } from './lib/callback/refresh-session.service';
export { AuthStateService as ɵu } from './lib/authState/auth-state.service';
export { CallbackService as ɵbg } from './lib/callback/callback.service';
export { CodeFlowCallbackService as ɵbh } from './lib/callback/code-flow-callback.service';
export { ImplicitFlowCallbackService as ɵbe } from './lib/callback/implicit-flow-callback.service';
export { IntervallService as ɵbf } from './lib/callback/intervall.service';
export { PeriodicallyTokenCheckService as ɵbl } from './lib/callback/periodically-token-check.service';
export { RefreshSessionRefreshTokenService as ɵbk } from './lib/callback/refresh-session-refresh-token.service';
export { RefreshSessionService as ɵbi } from './lib/callback/refresh-session.service';
export { CheckAuthService as ɵl } from './lib/check-auth.service';

@@ -21,21 +21,34 @@ export { ConfigValidationService as ɵh } from './lib/config-validation/config-validation.service';

export { ConfigurationProvider as ɵa } from './lib/config/config.provider';
export { FlowsDataService as ɵp } from './lib/flows/flows-data.service';
export { CodeFlowCallbackHandlerService as ɵo } from './lib/flows/callback-handling/code-flow-callback-handler.service';
export { HistoryJwtKeysCallbackHandlerService as ɵw } from './lib/flows/callback-handling/history-jwt-keys-callback-handler.service';
export { ImplicitFlowCallbackHandlerService as ɵs } from './lib/flows/callback-handling/implicit-flow-callback-handler.service';
export { RefreshSessionCallbackHandlerService as ɵbc } from './lib/flows/callback-handling/refresh-session-callback-handler.service';
export { RefreshTokenCallbackHandlerService as ɵbd } from './lib/flows/callback-handling/refresh-token-callback-handler.service';
export { StateValidationCallbackHandlerService as ɵz } from './lib/flows/callback-handling/state-validation-callback-handler.service';
export { UserCallbackHandlerService as ɵy } from './lib/flows/callback-handling/user-callback-handler.service';
export { FlowsDataService as ɵq } from './lib/flows/flows-data.service';
export { FlowsService as ɵn } from './lib/flows/flows.service';
export { RandomService as ɵq } from './lib/flows/random/random.service';
export { SigninKeyDataService as ɵs } from './lib/flows/signin-key-data.service';
export { RandomService as ɵr } from './lib/flows/random/random.service';
export { ResetAuthDataService as ɵt } from './lib/flows/reset-auth-data.service';
export { SigninKeyDataService as ɵx } from './lib/flows/signin-key-data.service';
export { CheckSessionService as ɵj } from './lib/iframe/check-session.service';
export { IFrameService as ɵk } from './lib/iframe/existing-iframe.service';
export { RefreshSessionIframeService as ɵbb } from './lib/iframe/refresh-session-iframe.service';
export { RefreshSessionIframeService as ɵbj } from './lib/iframe/refresh-session-iframe.service';
export { SilentRenewService as ɵm } from './lib/iframe/silent-renew.service';
export { LoginService as ɵbh } from './lib/login/login.service';
export { PopUpService as ɵbe } from './lib/login/popup.service';
export { LogoffRevocationService as ɵbf } from './lib/logoffRevoke/logoff-revocation.service';
export { BrowserStorageService as ɵbi } from './lib/storage/browser-storage.service';
export { LoginService as ɵbp } from './lib/login/login.service';
export { ParLoginService as ɵbq } from './lib/login/par/par-login.service';
export { ParService as ɵbs } from './lib/login/par/par.service';
export { PopUpLoginService as ɵbt } from './lib/login/popup/popup-login.service';
export { PopUpService as ɵbm } from './lib/login/popup/popup.service';
export { ResponseTypeValidationService as ɵbr } from './lib/login/response-type-validation/response-type-validation.service';
export { StandardLoginService as ɵbu } from './lib/login/standard/standard-login.service';
export { LogoffRevocationService as ɵbn } from './lib/logoffRevoke/logoff-revocation.service';
export { BrowserStorageService as ɵbv } from './lib/storage/browser-storage.service';
export { StoragePersistanceService as ɵg } from './lib/storage/storage-persistance.service';
export { UserService as ɵt } from './lib/userData/user-service';
export { EqualityService as ɵv } from './lib/utils/equality/equality.service';
export { UserService as ɵv } from './lib/userData/user-service';
export { EqualityService as ɵbb } from './lib/utils/equality/equality.service';
export { FlowHelper as ɵi } from './lib/utils/flowHelper/flow-helper.service';
export { PlatformProvider as ɵb } from './lib/utils/platform-provider/platform.provider';
export { RedirectService as ɵbg } from './lib/utils/redirect/redirect.service';
export { UrlService as ɵo } from './lib/utils/url/url.service';
export { StateValidationService as ɵu } from './lib/validation/state-validation.service';
export { RedirectService as ɵbo } from './lib/utils/redirect/redirect.service';
export { UrlService as ɵp } from './lib/utils/url/url.service';
export { StateValidationService as ɵba } from './lib/validation/state-validation.service';

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":4,"metadata":{"AuthModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":36,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":37,"character":12},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":37,"character":26}],"declarations":[],"exports":[]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["token"],"defaults":[{}],"value":{"ngModule":{"__symbolic":"reference","name":"AuthModule"},"providers":[{"__symbolic":"reference","name":"OidcConfigService"},{"__symbolic":"reference","name":"PublicEventsService"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"OidcSecurityService"},{"__symbolic":"reference","name":"TokenValidationService"},{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵj"},{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵm"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵbf"},{"__symbolic":"reference","name":"ɵt"},{"__symbolic":"reference","name":"ɵq"},{"__symbolic":"reference","name":"ɵf"},{"__symbolic":"reference","name":"ɵo"},{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","name":"ɵs"},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"TokenHelperService"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵk"},{"__symbolic":"reference","name":"ɵv"},{"__symbolic":"reference","name":"ɵbh"},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵu"},{"__symbolic":"reference","name":"ɵh"},{"__symbolic":"reference","name":"ɵl"},{"provide":{"__symbolic":"reference","name":"AbstractSecurityStorage"},"useClass":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"token"},"member":"storage"},"right":{"__symbolic":"reference","name":"ɵbi"}}}]}}}},"Type":{"__symbolic":"interface"},"Token":{"__symbolic":"interface"},"AuthorizationResult":{"__symbolic":"interface"},"AuthorizedState":{"Authorized":"Authorized","Unauthorized":"Unauthorized","Unknown":"Unknown"},"AuthWellKnownEndpoints":{"__symbolic":"interface"},"OidcConfigService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":14,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"PublicEventsService"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"ɵh"}]}],"withConfig":[{"__symbolic":"method"}]}},"OpenIdConfiguration":{"__symbolic":"interface"},"PublicConfiguration":{"__symbolic":"interface"},"AuthInterceptor":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"LoggerService"}]}],"intercept":[{"__symbolic":"method"}]}},"LogLevel":{"None":0,"Debug":1,"Warn":2,"Error":3},"LoggerService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵa"}]}],"logError":[{"__symbolic":"method"}],"logWarning":[{"__symbolic":"method"}],"logDebug":[{"__symbolic":"method"}],"currentLogLevelIsEqualOrSmallerThan":[{"__symbolic":"method"}],"logLevelIsSet":[{"__symbolic":"method"}],"loggingIsTurnedOff":[{"__symbolic":"method"}]}},"OidcSecurityService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":17,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵj"},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","name":"ɵt"},{"__symbolic":"reference","name":"TokenHelperService"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","name":"ɵy"},{"__symbolic":"reference","name":"ɵbf"},{"__symbolic":"reference","name":"ɵbh"},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"ɵba"}]}],"checkAuth":[{"__symbolic":"method"}],"checkAuthIncludingServer":[{"__symbolic":"method"}],"getToken":[{"__symbolic":"method"}],"getIdToken":[{"__symbolic":"method"}],"getRefreshToken":[{"__symbolic":"method"}],"getPayloadFromIdToken":[{"__symbolic":"method"}],"setState":[{"__symbolic":"method"}],"getState":[{"__symbolic":"method"}],"authorize":[{"__symbolic":"method"}],"authorizeWithPopUp":[{"__symbolic":"method"}],"forceRefreshSession":[{"__symbolic":"method"}],"logoffAndRevokeTokens":[{"__symbolic":"method"}],"logoff":[{"__symbolic":"method"}],"logoffLocal":[{"__symbolic":"method"}],"revokeAccessToken":[{"__symbolic":"method"}],"revokeRefreshToken":[{"__symbolic":"method"}],"getEndSessionUrl":[{"__symbolic":"method"}]}},"EventTypes":{"ConfigLoaded":0,"ConfigLoadingFailed":1,"CheckSessionReceived":2,"UserDataChanged":3,"NewAuthorizationResult":4,"TokenExpired":5,"IdTokenExpired":6},"OidcClientNotification":{"__symbolic":"interface"},"PublicEventsService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1}}],"members":{"fireEvent":[{"__symbolic":"method"}],"registerForEvents":[{"__symbolic":"method"}]}},"AbstractSecurityStorage":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1}}],"members":{"read":[{"__symbolic":"method"}],"write":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}]}},"TokenHelperService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"LoggerService"}]}],"getTokenExpirationDate":[{"__symbolic":"method"}],"getHeaderFromToken":[{"__symbolic":"method"}],"getPayloadFromToken":[{"__symbolic":"method"}],"getSignatureFromToken":[{"__symbolic":"method"}],"getPartOfToken":[{"__symbolic":"method"}],"urlBase64Decode":[{"__symbolic":"method"}],"tokenIsValid":[{"__symbolic":"method"}],"extractPartOfToken":[{"__symbolic":"method"}]}},"JwtKeys":{"__symbolic":"class","members":{}},"JwtKey":{"__symbolic":"class","members":{}},"StateValidationResult":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[null,null,null,{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"ValidationResult"}]}]}},"TokenValidationService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":50,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"TokenHelperService"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"LoggerService"}]}],"hasIdTokenExpired":[{"__symbolic":"method"}],"validateIdTokenExpNotExpired":[{"__symbolic":"method"}],"validateAccessTokenNotExpired":[{"__symbolic":"method"}],"validateRequiredIdToken":[{"__symbolic":"method"}],"validateIdTokenIatMaxOffset":[{"__symbolic":"method"}],"validateIdTokenNonce":[{"__symbolic":"method"}],"validateIdTokenIss":[{"__symbolic":"method"}],"validateIdTokenAud":[{"__symbolic":"method"}],"validateIdTokenAzpExistsIfMoreThanOneAud":[{"__symbolic":"method"}],"validateIdTokenAzpValid":[{"__symbolic":"method"}],"validateStateFromHashCallback":[{"__symbolic":"method"}],"validateSignatureIdToken":[{"__symbolic":"method"}],"hasConfigValidResponseType":[{"__symbolic":"method"}],"validateIdTokenAtHash":[{"__symbolic":"method"}],"generateCodeChallenge":[{"__symbolic":"method"}],"generateAtHash":[{"__symbolic":"method"}]},"statics":{"refreshTokenNoncePlaceholder":"--RefreshToken--"}},"ValidationResult":{"NotSet":"NotSet","StatesDoNotMatch":"StatesDoNotMatch","SignatureFailed":"SignatureFailed","IncorrectNonce":"IncorrectNonce","RequiredPropertyMissing":"RequiredPropertyMissing","MaxOffsetExpired":"MaxOffsetExpired","IssDoesNotMatchIssuer":"IssDoesNotMatchIssuer","NoAuthWellKnownEndPoints":"NoAuthWellKnownEndPoints","IncorrectAud":"IncorrectAud","IncorrectIdTokenClaimsAfterRefresh":"IncorrectIdTokenClaimsAfterRefresh","IncorrectAzp":"IncorrectAzp","TokenExpired":"TokenExpired","IncorrectAtHash":"IncorrectAtHash","Ok":"Ok","LoginRequired":"LoginRequired","SecureTokenServerError":"SecureTokenServerError"},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵb"}]}],"hasValidConfig":[{"__symbolic":"method"}],"setConfig":[{"__symbolic":"method"}],"setSpecialCases":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":8,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":8,"character":22}]}]],"parameters":[{"__symbolic":"reference","name":"string"}]}]}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"PublicEventsService"},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","name":"ɵg"}]}],"getAuthWellKnownEndPoints":[{"__symbolic":"method"}],"storeWellKnownEndpoints":[{"__symbolic":"method"}],"getWellKnownEndPointsFromUrl":[{"__symbolic":"method"}]}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵe"}]}],"getWellKnownEndPointsFromUrl":[{"__symbolic":"method"}],"getWellKnownDocument":[{"__symbolic":"method"}]}},"ɵe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵf"}]}],"get":[{"__symbolic":"method"}],"post":[{"__symbolic":"method"}],"prepareHeaders":[{"__symbolic":"method"}]}},"ɵf":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":6,"character":28}]}],"get":[{"__symbolic":"method"}],"post":[{"__symbolic":"method"}]}},"ɵg":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":17,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"AbstractSecurityStorage"},{"__symbolic":"reference","name":"ɵa"}]}],"read":[{"__symbolic":"method"}],"write":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}],"resetStorageFlowData":[{"__symbolic":"method"}],"resetAuthStateInStorage":[{"__symbolic":"method"}],"getAccessToken":[{"__symbolic":"method"}],"getIdToken":[{"__symbolic":"method"}],"getRefreshToken":[{"__symbolic":"method"}],"createKeyWithPrefix":[{"__symbolic":"method"}]}},"ɵh":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"LoggerService"}]}],"validateConfig":[{"__symbolic":"method"}],"getAllMessagesOfType":[{"__symbolic":"method"}]}},"ɵi":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵa"}]}],"isCurrentFlowCodeFlow":[{"__symbolic":"method"}],"isCurrentFlowAnyImplicitFlow":[{"__symbolic":"method"}],"isCurrentFlowCodeFlowWithRefreshTokens":[{"__symbolic":"method"}],"isCurrentFlowImplicitFlowWithAccessToken":[{"__symbolic":"method"}],"isCurrentFlowImplicitFlowWithoutAccessToken":[{"__symbolic":"method"}],"currentFlowIs":[{"__symbolic":"method"}]}},"ɵj":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":14,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵk"},{"__symbolic":"reference","name":"PublicEventsService"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":34,"character":18}]}],"isCheckSessionConfigured":[{"__symbolic":"method"}],"start":[{"__symbolic":"method"}],"stop":[{"__symbolic":"method"}],"serverStateChanged":[{"__symbolic":"method"}],"getExistingIframe":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"pollServerSession":[{"__symbolic":"method"}],"clearScheduledHeartBeat":[{"__symbolic":"method"}],"messageHandler":[{"__symbolic":"method"}],"bindMessageEventToIframe":[{"__symbolic":"method"}],"getOrCreateIframe":[{"__symbolic":"method"}]}},"ɵk":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":6,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":6,"character":22}]}],null],"parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"LoggerService"}]}],"getExistingIFrame":[{"__symbolic":"method"}],"addIFrameToWindowBody":[{"__symbolic":"method"}],"getIFrameFromParentWindow":[{"__symbolic":"method"}],"getIFrameFromWindow":[{"__symbolic":"method"}],"isIFrameElement":[{"__symbolic":"method"}]}},"ɵl":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":18,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":18,"character":12}]}],null,null,null,null,null,null,null,null,null,null],"parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"ɵj"},{"__symbolic":"reference","name":"ɵm"},{"__symbolic":"reference","name":"ɵt"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","name":"ɵy"},{"__symbolic":"reference","name":"ɵba"},{"__symbolic":"reference","name":"ɵbd"},{"__symbolic":"reference","name":"ɵbe"}]}],"checkAuth":[{"__symbolic":"method"}],"checkAuthIncludingServer":[{"__symbolic":"method"}],"startCheckSessionAndValidation":[{"__symbolic":"method"}]}},"ɵm":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":19,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵk"},{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵw"},{"__symbolic":"reference","name":"ɵx"}]}],"getOrCreateIframe":[{"__symbolic":"method"}],"isSilentRenewConfigured":[{"__symbolic":"method"}],"codeFlowCallbackSilentRenewIframe":[{"__symbolic":"method"}],"silentRenewEventHandler":[{"__symbolic":"method"}],"getExistingIframe":[{"__symbolic":"method"}]}},"ɵn":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":20,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵo"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"TokenValidationService"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","name":"ɵs"},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵt"},{"__symbolic":"reference","name":"ɵu"},{"__symbolic":"reference","name":"ɵg"}]}],"resetAuthorizationData":[{"__symbolic":"method"}],"processCodeFlowCallback":[{"__symbolic":"method"}],"processSilentRenewCodeFlowCallback":[{"__symbolic":"method"}],"processImplicitFlowCallback":[{"__symbolic":"method"}],"processRefreshToken":[{"__symbolic":"method"}],"codeFlowCallback":[{"__symbolic":"method"}],"implicitFlowCallback":[{"__symbolic":"method"}],"refreshSessionWithRefreshTokens":[{"__symbolic":"method"}],"refreshTokensRequestTokens":[{"__symbolic":"method"}],"codeFlowCodeRequest":[{"__symbolic":"method"}],"callbackHistoryAndResetJwtKeys":[{"__symbolic":"method"}],"callbackStateValidation":[{"__symbolic":"method"}],"callbackUser":[{"__symbolic":"method"}],"publishAuthorizedState":[{"__symbolic":"method"}],"publishUnauthorizedState":[{"__symbolic":"method"}],"handleResultErrorFromCallback":[{"__symbolic":"method"}],"historyCleanUpTurnedOn":[{"__symbolic":"method"}],"resetBrowserHistory":[{"__symbolic":"method"}]}},"ɵo":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":12,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"TokenValidationService"},{"__symbolic":"reference","name":"ɵg"}]}],"getUrlParameter":[{"__symbolic":"method"}],"isCallbackFromSts":[{"__symbolic":"method"}],"getRefreshSessionSilentRenewUrl":[{"__symbolic":"method"}],"getAuthorizeUrl":[{"__symbolic":"method"}],"createEndSessionUrl":[{"__symbolic":"method"}],"createRevocationEndpointBodyAccessToken":[{"__symbolic":"method"}],"createRevocationEndpointBodyRefreshToken":[{"__symbolic":"method"}],"getRevocationEndpointUrl":[{"__symbolic":"method"}],"createBodyForCodeFlowCodeRequest":[{"__symbolic":"method"}],"createBodyForCodeFlowRefreshTokensRequest":[{"__symbolic":"method"}],"createAuthorizeUrl":[{"__symbolic":"method"}],"createUrlImplicitFlowWithSilentRenew":[{"__symbolic":"method"}],"createUrlCodeFlowWithSilentRenew":[{"__symbolic":"method"}],"createUrlImplicitFlowAuthorize":[{"__symbolic":"method"}],"createUrlCodeFlowAuthorize":[{"__symbolic":"method"}],"getRedirectUrl":[{"__symbolic":"method"}],"getSilentRenewUrl":[{"__symbolic":"method"}],"getPostLogoutRedirectUrl":[{"__symbolic":"method"}],"getClientId":[{"__symbolic":"method"}]}},"ɵp":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"ɵq"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"LoggerService"}]}],"createNonce":[{"__symbolic":"method"}],"setNonce":[{"__symbolic":"method"}],"getAuthStateControl":[{"__symbolic":"method"}],"setAuthStateControl":[{"__symbolic":"method"}],"getExistingOrCreateAuthStateControl":[{"__symbolic":"method"}],"setSessionState":[{"__symbolic":"method"}],"resetStorageFlowData":[{"__symbolic":"method"}],"getCodeVerifier":[{"__symbolic":"method"}],"createCodeVerifier":[{"__symbolic":"method"}],"isSilentRenewRunning":[{"__symbolic":"method"}],"setSilentRenewRunning":[{"__symbolic":"method"}],"resetSilentRenewRunning":[{"__symbolic":"method"}]}},"ɵq":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":6,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":6,"character":22}]}],null],"parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"LoggerService"}]}],"createRandom":[{"__symbolic":"method"}],"toHex":[{"__symbolic":"method"}],"randomString":[{"__symbolic":"method"}],"getCrypto":[{"__symbolic":"method"}]}},"ɵr":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"PublicEventsService"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"TokenValidationService"}]}],"setAuthorizedAndFireEvent":[{"__symbolic":"method"}],"setUnauthorizedAndFireEvent":[{"__symbolic":"method"}],"updateAndPublishAuthState":[{"__symbolic":"method"}],"setAuthorizationData":[{"__symbolic":"method"}],"getAccessToken":[{"__symbolic":"method"}],"getIdToken":[{"__symbolic":"method"}],"getRefreshToken":[{"__symbolic":"method"}],"areAuthStorageTokensValid":[{"__symbolic":"method"}],"hasIdTokenExpired":[{"__symbolic":"method"}],"hasAccessTokenExpiredIfExpiryExists":[{"__symbolic":"method"}],"decodeURIComponentSafely":[{"__symbolic":"method"}],"persistAccessTokenExpirationTime":[{"__symbolic":"method"}]}},"ɵs":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵe"}]}],"getSigningKeys":[{"__symbolic":"method"}],"handleErrorGetSigningKeys":[{"__symbolic":"method"}]}},"ɵt":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":12,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"PublicEventsService"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"TokenHelperService"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵa"}]}],"getAndPersistUserDataInStore":[{"__symbolic":"method"}],"getUserDataFromStore":[{"__symbolic":"method"}],"publishUserDataIfExists":[{"__symbolic":"method"}],"setUserDataToStore":[{"__symbolic":"method"}],"resetUserDataInStore":[{"__symbolic":"method"}],"getUserDataOidcFlowAndSave":[{"__symbolic":"method"}],"getIdentityUserData":[{"__symbolic":"method"}],"validateUserDataSubIdToken":[{"__symbolic":"method"}]}},"ɵu":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":12,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"TokenValidationService"},{"__symbolic":"reference","name":"TokenHelperService"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵv"},{"__symbolic":"reference","name":"ɵi"}]}],"getValidatedStateResult":[{"__symbolic":"method"}],"validateState":[{"__symbolic":"method"}],"isIdTokenAfterRefreshTokenRequestValid":[{"__symbolic":"method"}],"handleSuccessfulValidation":[{"__symbolic":"method"}],"handleUnsuccessfulValidation":[{"__symbolic":"method"}]}},"ɵv":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":2,"character":1}}],"members":{"isStringEqualOrNonOrderedArrayEqual":[{"__symbolic":"method"}],"areEqual":[{"__symbolic":"method"}],"oneValueIsStringAndTheOtherIsArray":[{"__symbolic":"method"}],"bothValuesAreObjects":[{"__symbolic":"method"}],"bothValuesAreStrings":[{"__symbolic":"method"}],"bothValuesAreArrays":[{"__symbolic":"method"}],"valueIsString":[{"__symbolic":"method"}],"valueIsObject":[{"__symbolic":"method"}],"arraysStrictEqual":[{"__symbolic":"method"}],"arraysHaveEqualContent":[{"__symbolic":"method"}],"isNullOrUndefined":[{"__symbolic":"method"}]}},"ɵw":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":14,"character":20},{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","name":"ɵx"}]}],"authorizedImplicitFlowCallback":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵx":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":7,"character":28}]}],"stopPeriodicallTokenCheck":[{"__symbolic":"method"}],"startPeriodicTokenCheck":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵy":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵo"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵw"},{"__symbolic":"reference","name":"ɵz"}]}],"isCallback":[{"__symbolic":"method"}],"handleCallbackAndFireEvents":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵz":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","name":"ɵx"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":16,"character":20}]}],"authorizedCallbackWithCode":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵba":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":14,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵm"},{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵbb"},{"__symbolic":"reference","name":"ɵbc"}]}],"forceRefreshSession":[{"__symbolic":"method"}],"startRefreshSession":[{"__symbolic":"method"}],"timeoutRetryStrategy":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵbb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":12,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":12,"character":12}]}],null,null,null,null],"parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵo"},{"__symbolic":"reference","name":"ɵm"},{"__symbolic":"reference","module":"@angular/core","name":"RendererFactory2","line":16,"character":21}]}],"refreshSessionWithIframe":[{"__symbolic":"method"}],"sendAuthorizeReqestUsingSilentRenew":[{"__symbolic":"method"}],"initSilentRenewRequest":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵbc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵx"}]}],"refreshSessionWithRefreshTokens":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵbd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵt"},{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","name":"ɵbb"},{"__symbolic":"reference","name":"ɵbc"},{"__symbolic":"reference","name":"ɵx"},{"__symbolic":"reference","name":"ɵg"}]}],"startTokenValidationPeriodically":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵbe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"isCurrentlyInPopup":[{"__symbolic":"method"}],"openPopUp":[{"__symbolic":"method"}],"sendMessageToMainWindow":[{"__symbolic":"method"}],"cleanUp":[{"__symbolic":"method"}],"sendMessage":[{"__symbolic":"method"}],"getOptions":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵbf":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":12,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵo"},{"__symbolic":"reference","name":"ɵj"},{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵbg"}]}],"logoff":[{"__symbolic":"method"}],"logoffLocal":[{"__symbolic":"method"}],"logoffAndRevokeTokens":[{"__symbolic":"method"}],"revokeAccessToken":[{"__symbolic":"method"}],"revokeRefreshToken":[{"__symbolic":"method"}],"getEndSessionUrl":[{"__symbolic":"method"}]}},"ɵbg":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":5,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":5,"character":22}]}]],"parameters":[{"__symbolic":"reference","name":"any"}]}],"redirectTo":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵbh":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"TokenValidationService"},{"__symbolic":"reference","name":"ɵo"},{"__symbolic":"reference","name":"ɵbg"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵbe"},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","name":"ɵt"},{"__symbolic":"reference","name":"ɵr"}]}],"login":[{"__symbolic":"method"}],"loginWithPopUp":[{"__symbolic":"method"}]}},"ɵbi":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"LoggerService"}]}],"read":[{"__symbolic":"method"}],"write":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}],"getStorage":[{"__symbolic":"method"}],"hasStorage":[{"__symbolic":"method"}]}}},"origins":{"AuthModule":"./lib/auth.module","Type":"./lib/auth.module","Token":"./lib/auth.module","AuthorizationResult":"./lib/authState/authorization-result","AuthorizedState":"./lib/authState/authorized-state","AuthWellKnownEndpoints":"./lib/config/auth-well-known-endpoints","OidcConfigService":"./lib/config/config.service","OpenIdConfiguration":"./lib/config/openid-configuration","PublicConfiguration":"./lib/config/public-configuration","AuthInterceptor":"./lib/interceptor/auth.interceptor","LogLevel":"./lib/logging/log-level","LoggerService":"./lib/logging/logger.service","OidcSecurityService":"./lib/oidc.security.service","EventTypes":"./lib/public-events/event-types","OidcClientNotification":"./lib/public-events/notification","PublicEventsService":"./lib/public-events/public-events.service","AbstractSecurityStorage":"./lib/storage/abstract-security-storage","TokenHelperService":"./lib/utils/tokenHelper/oidc-token-helper.service","JwtKeys":"./lib/validation/jwtkeys","JwtKey":"./lib/validation/jwtkeys","StateValidationResult":"./lib/validation/state-validation-result","TokenValidationService":"./lib/validation/token-validation.service","ValidationResult":"./lib/validation/validation-result","ɵa":"./lib/config/config.provider","ɵb":"./lib/utils/platform-provider/platform.provider","ɵc":"./lib/config/auth-well-known.service","ɵd":"./lib/config/auth-well-known-data.service","ɵe":"./lib/api/data.service","ɵf":"./lib/api/http-base.service","ɵg":"./lib/storage/storage-persistance.service","ɵh":"./lib/config-validation/config-validation.service","ɵi":"./lib/utils/flowHelper/flow-helper.service","ɵj":"./lib/iframe/check-session.service","ɵk":"./lib/iframe/existing-iframe.service","ɵl":"./lib/check-auth.service","ɵm":"./lib/iframe/silent-renew.service","ɵn":"./lib/flows/flows.service","ɵo":"./lib/utils/url/url.service","ɵp":"./lib/flows/flows-data.service","ɵq":"./lib/flows/random/random.service","ɵr":"./lib/authState/auth-state.service","ɵs":"./lib/flows/signin-key-data.service","ɵt":"./lib/userData/user-service","ɵu":"./lib/validation/state-validation.service","ɵv":"./lib/utils/equality/equality.service","ɵw":"./lib/callback/implicit-flow-callback.service","ɵx":"./lib/callback/intervall.service","ɵy":"./lib/callback/callback.service","ɵz":"./lib/callback/code-flow-callback.service","ɵba":"./lib/callback/refresh-session.service","ɵbb":"./lib/iframe/refresh-session-iframe.service","ɵbc":"./lib/callback/refresh-session-refresh-token.service","ɵbd":"./lib/callback/periodically-token-check.service","ɵbe":"./lib/login/popup.service","ɵbf":"./lib/logoffRevoke/logoff-revocation.service","ɵbg":"./lib/utils/redirect/redirect.service","ɵbh":"./lib/login/login.service","ɵbi":"./lib/storage/browser-storage.service"},"importAs":"angular-auth-oidc-client"}
{"__symbolic":"module","version":4,"metadata":{"AuthModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":50,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":51,"character":12},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":51,"character":26}],"declarations":[],"exports":[]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["token"],"defaults":[{}],"value":{"ngModule":{"__symbolic":"reference","name":"AuthModule"},"providers":[{"__symbolic":"reference","name":"OidcConfigService"},{"__symbolic":"reference","name":"PublicEventsService"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"OidcSecurityService"},{"__symbolic":"reference","name":"TokenValidationService"},{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵj"},{"__symbolic":"reference","name":"ɵq"},{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵm"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵbn"},{"__symbolic":"reference","name":"ɵv"},{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","name":"ɵf"},{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","name":"ɵu"},{"__symbolic":"reference","name":"ɵx"},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"TokenHelperService"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵk"},{"__symbolic":"reference","name":"ɵbb"},{"__symbolic":"reference","name":"ɵbp"},{"__symbolic":"reference","name":"ɵbs"},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵba"},{"__symbolic":"reference","name":"ɵh"},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","name":"ɵt"},{"__symbolic":"reference","name":"ɵbe"},{"__symbolic":"reference","name":"ɵw"},{"__symbolic":"reference","name":"ɵbr"},{"__symbolic":"reference","name":"ɵy"},{"__symbolic":"reference","name":"ɵz"},{"__symbolic":"reference","name":"ɵbc"},{"__symbolic":"reference","name":"ɵbd"},{"__symbolic":"reference","name":"ɵo"},{"__symbolic":"reference","name":"ɵs"},{"__symbolic":"reference","name":"ɵbq"},{"__symbolic":"reference","name":"ɵbt"},{"__symbolic":"reference","name":"ɵbu"},{"provide":{"__symbolic":"reference","name":"AbstractSecurityStorage"},"useClass":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"token"},"member":"storage"},"right":{"__symbolic":"reference","name":"ɵbv"}}}]}}}},"Type":{"__symbolic":"interface"},"Token":{"__symbolic":"interface"},"AuthorizationResult":{"__symbolic":"interface"},"AuthorizedState":{"Authorized":"Authorized","Unauthorized":"Unauthorized","Unknown":"Unknown"},"AuthWellKnownEndpoints":{"__symbolic":"interface"},"OidcConfigService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":14,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"PublicEventsService"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"ɵh"}]}],"withConfig":[{"__symbolic":"method"}]}},"OpenIdConfiguration":{"__symbolic":"interface"},"PublicConfiguration":{"__symbolic":"interface"},"AuthInterceptor":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵu"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"LoggerService"}]}],"intercept":[{"__symbolic":"method"}]}},"LogLevel":{"None":0,"Debug":1,"Warn":2,"Error":3},"LoggerService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵa"}]}],"logError":[{"__symbolic":"method"}],"logWarning":[{"__symbolic":"method"}],"logDebug":[{"__symbolic":"method"}],"currentLogLevelIsEqualOrSmallerThan":[{"__symbolic":"method"}],"logLevelIsSet":[{"__symbolic":"method"}],"loggingIsTurnedOff":[{"__symbolic":"method"}]}},"OidcSecurityService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":17,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵj"},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","name":"ɵv"},{"__symbolic":"reference","name":"TokenHelperService"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵu"},{"__symbolic":"reference","name":"ɵq"},{"__symbolic":"reference","name":"ɵbg"},{"__symbolic":"reference","name":"ɵbn"},{"__symbolic":"reference","name":"ɵbp"},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"ɵbi"}]}],"checkAuth":[{"__symbolic":"method"}],"checkAuthIncludingServer":[{"__symbolic":"method"}],"getToken":[{"__symbolic":"method"}],"getIdToken":[{"__symbolic":"method"}],"getRefreshToken":[{"__symbolic":"method"}],"getPayloadFromIdToken":[{"__symbolic":"method"}],"setState":[{"__symbolic":"method"}],"getState":[{"__symbolic":"method"}],"authorize":[{"__symbolic":"method"}],"authorizeWithPopUp":[{"__symbolic":"method"}],"forceRefreshSession":[{"__symbolic":"method"}],"logoffAndRevokeTokens":[{"__symbolic":"method"}],"logoff":[{"__symbolic":"method"}],"logoffLocal":[{"__symbolic":"method"}],"revokeAccessToken":[{"__symbolic":"method"}],"revokeRefreshToken":[{"__symbolic":"method"}],"getEndSessionUrl":[{"__symbolic":"method"}]}},"EventTypes":{"ConfigLoaded":0,"ConfigLoadingFailed":1,"CheckSessionReceived":2,"UserDataChanged":3,"NewAuthorizationResult":4,"TokenExpired":5,"IdTokenExpired":6},"OidcClientNotification":{"__symbolic":"interface"},"PublicEventsService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1}}],"members":{"fireEvent":[{"__symbolic":"method"}],"registerForEvents":[{"__symbolic":"method"}]}},"AbstractSecurityStorage":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1}}],"members":{"read":[{"__symbolic":"method"}],"write":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}]}},"TokenHelperService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"LoggerService"}]}],"getTokenExpirationDate":[{"__symbolic":"method"}],"getHeaderFromToken":[{"__symbolic":"method"}],"getPayloadFromToken":[{"__symbolic":"method"}],"getSignatureFromToken":[{"__symbolic":"method"}],"getPartOfToken":[{"__symbolic":"method"}],"urlBase64Decode":[{"__symbolic":"method"}],"tokenIsValid":[{"__symbolic":"method"}],"extractPartOfToken":[{"__symbolic":"method"}]}},"JwtKeys":{"__symbolic":"class","members":{}},"JwtKey":{"__symbolic":"class","members":{}},"StateValidationResult":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[null,null,null,{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"ValidationResult"}]}]}},"TokenValidationService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":49,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"TokenHelperService"},{"__symbolic":"reference","name":"LoggerService"}]}],"hasIdTokenExpired":[{"__symbolic":"method"}],"validateIdTokenExpNotExpired":[{"__symbolic":"method"}],"validateAccessTokenNotExpired":[{"__symbolic":"method"}],"validateRequiredIdToken":[{"__symbolic":"method"}],"validateIdTokenIatMaxOffset":[{"__symbolic":"method"}],"validateIdTokenNonce":[{"__symbolic":"method"}],"validateIdTokenIss":[{"__symbolic":"method"}],"validateIdTokenAud":[{"__symbolic":"method"}],"validateIdTokenAzpExistsIfMoreThanOneAud":[{"__symbolic":"method"}],"validateIdTokenAzpValid":[{"__symbolic":"method"}],"validateStateFromHashCallback":[{"__symbolic":"method"}],"validateSignatureIdToken":[{"__symbolic":"method"}],"validateIdTokenAtHash":[{"__symbolic":"method"}],"generateCodeChallenge":[{"__symbolic":"method"}],"generateAtHash":[{"__symbolic":"method"}]},"statics":{"refreshTokenNoncePlaceholder":"--RefreshToken--"}},"ValidationResult":{"NotSet":"NotSet","StatesDoNotMatch":"StatesDoNotMatch","SignatureFailed":"SignatureFailed","IncorrectNonce":"IncorrectNonce","RequiredPropertyMissing":"RequiredPropertyMissing","MaxOffsetExpired":"MaxOffsetExpired","IssDoesNotMatchIssuer":"IssDoesNotMatchIssuer","NoAuthWellKnownEndPoints":"NoAuthWellKnownEndPoints","IncorrectAud":"IncorrectAud","IncorrectIdTokenClaimsAfterRefresh":"IncorrectIdTokenClaimsAfterRefresh","IncorrectAzp":"IncorrectAzp","TokenExpired":"TokenExpired","IncorrectAtHash":"IncorrectAtHash","Ok":"Ok","LoginRequired":"LoginRequired","SecureTokenServerError":"SecureTokenServerError"},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵb"}]}],"hasValidConfig":[{"__symbolic":"method"}],"setConfig":[{"__symbolic":"method"}],"setSpecialCases":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":8,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":8,"character":22}]}]],"parameters":[{"__symbolic":"reference","name":"string"}]}]}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"PublicEventsService"},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","name":"ɵg"}]}],"getAuthWellKnownEndPoints":[{"__symbolic":"method"}],"storeWellKnownEndpoints":[{"__symbolic":"method"}],"getWellKnownEndPointsFromUrl":[{"__symbolic":"method"}]}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵe"}]}],"getWellKnownEndPointsFromUrl":[{"__symbolic":"method"}],"getWellKnownDocument":[{"__symbolic":"method"}]}},"ɵe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵf"}]}],"get":[{"__symbolic":"method"}],"post":[{"__symbolic":"method"}],"prepareHeaders":[{"__symbolic":"method"}]}},"ɵf":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":6,"character":28}]}],"get":[{"__symbolic":"method"}],"post":[{"__symbolic":"method"}]}},"ɵg":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":17,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"AbstractSecurityStorage"},{"__symbolic":"reference","name":"ɵa"}]}],"read":[{"__symbolic":"method"}],"write":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}],"resetStorageFlowData":[{"__symbolic":"method"}],"resetAuthStateInStorage":[{"__symbolic":"method"}],"getAccessToken":[{"__symbolic":"method"}],"getIdToken":[{"__symbolic":"method"}],"getRefreshToken":[{"__symbolic":"method"}],"createKeyWithPrefix":[{"__symbolic":"method"}]}},"ɵh":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"LoggerService"}]}],"validateConfig":[{"__symbolic":"method"}],"getAllMessagesOfType":[{"__symbolic":"method"}]}},"ɵi":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵa"}]}],"isCurrentFlowCodeFlow":[{"__symbolic":"method"}],"isCurrentFlowAnyImplicitFlow":[{"__symbolic":"method"}],"isCurrentFlowCodeFlowWithRefreshTokens":[{"__symbolic":"method"}],"isCurrentFlowImplicitFlowWithAccessToken":[{"__symbolic":"method"}],"isCurrentFlowImplicitFlowWithoutAccessToken":[{"__symbolic":"method"}],"currentFlowIs":[{"__symbolic":"method"}]}},"ɵj":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":14,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵk"},{"__symbolic":"reference","name":"PublicEventsService"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":34,"character":18}]}],"isCheckSessionConfigured":[{"__symbolic":"method"}],"start":[{"__symbolic":"method"}],"stop":[{"__symbolic":"method"}],"serverStateChanged":[{"__symbolic":"method"}],"getExistingIframe":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"pollServerSession":[{"__symbolic":"method"}],"clearScheduledHeartBeat":[{"__symbolic":"method"}],"messageHandler":[{"__symbolic":"method"}],"bindMessageEventToIframe":[{"__symbolic":"method"}],"getOrCreateIframe":[{"__symbolic":"method"}]}},"ɵk":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":6,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":6,"character":22}]}],null],"parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"LoggerService"}]}],"getExistingIFrame":[{"__symbolic":"method"}],"addIFrameToWindowBody":[{"__symbolic":"method"}],"getIFrameFromParentWindow":[{"__symbolic":"method"}],"getIFrameFromWindow":[{"__symbolic":"method"}],"isIFrameElement":[{"__symbolic":"method"}]}},"ɵl":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":18,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":18,"character":12}]}],null,null,null,null,null,null,null,null,null,null],"parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"ɵj"},{"__symbolic":"reference","name":"ɵm"},{"__symbolic":"reference","name":"ɵv"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵu"},{"__symbolic":"reference","name":"ɵbg"},{"__symbolic":"reference","name":"ɵbi"},{"__symbolic":"reference","name":"ɵbl"},{"__symbolic":"reference","name":"ɵbm"}]}],"checkAuth":[{"__symbolic":"method"}],"checkAuthIncludingServer":[{"__symbolic":"method"}],"startCheckSessionAndValidation":[{"__symbolic":"method"}]}},"ɵm":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":20,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵk"},{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵt"},{"__symbolic":"reference","name":"ɵq"},{"__symbolic":"reference","name":"ɵu"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵbe"},{"__symbolic":"reference","name":"ɵbf"}]}],"getOrCreateIframe":[{"__symbolic":"method"}],"isSilentRenewConfigured":[{"__symbolic":"method"}],"codeFlowCallbackSilentRenewIframe":[{"__symbolic":"method"}],"silentRenewEventHandler":[{"__symbolic":"method"}],"getExistingIframe":[{"__symbolic":"method"}]}},"ɵn":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵo"},{"__symbolic":"reference","name":"ɵs"},{"__symbolic":"reference","name":"ɵw"},{"__symbolic":"reference","name":"ɵy"},{"__symbolic":"reference","name":"ɵz"},{"__symbolic":"reference","name":"ɵbc"},{"__symbolic":"reference","name":"ɵbd"}]}],"processCodeFlowCallback":[{"__symbolic":"method"}],"processSilentRenewCodeFlowCallback":[{"__symbolic":"method"}],"processImplicitFlowCallback":[{"__symbolic":"method"}],"processRefreshToken":[{"__symbolic":"method"}]}},"ɵo":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":13,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"TokenValidationService"},{"__symbolic":"reference","name":"ɵq"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"ɵe"}]}],"codeFlowCallback":[{"__symbolic":"method"}],"codeFlowCodeRequest":[{"__symbolic":"method"}]}},"ɵp":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":12,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵq"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"TokenValidationService"},{"__symbolic":"reference","name":"ɵg"}]}],"getUrlParameter":[{"__symbolic":"method"}],"isCallbackFromSts":[{"__symbolic":"method"}],"getRefreshSessionSilentRenewUrl":[{"__symbolic":"method"}],"getAuthorizeParUrl":[{"__symbolic":"method"}],"getAuthorizeUrl":[{"__symbolic":"method"}],"createEndSessionUrl":[{"__symbolic":"method"}],"createRevocationEndpointBodyAccessToken":[{"__symbolic":"method"}],"createRevocationEndpointBodyRefreshToken":[{"__symbolic":"method"}],"getRevocationEndpointUrl":[{"__symbolic":"method"}],"createBodyForCodeFlowCodeRequest":[{"__symbolic":"method"}],"createBodyForCodeFlowRefreshTokensRequest":[{"__symbolic":"method"}],"createBodyForParCodeFlowRequest":[{"__symbolic":"method"}],"createAuthorizeUrl":[{"__symbolic":"method"}],"createUrlImplicitFlowWithSilentRenew":[{"__symbolic":"method"}],"createUrlCodeFlowWithSilentRenew":[{"__symbolic":"method"}],"createUrlImplicitFlowAuthorize":[{"__symbolic":"method"}],"createUrlCodeFlowAuthorize":[{"__symbolic":"method"}],"getRedirectUrl":[{"__symbolic":"method"}],"getSilentRenewUrl":[{"__symbolic":"method"}],"getPostLogoutRedirectUrl":[{"__symbolic":"method"}],"getClientId":[{"__symbolic":"method"}],"composeCustomParams":[{"__symbolic":"method"}]}},"ɵq":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"LoggerService"}]}],"createNonce":[{"__symbolic":"method"}],"setNonce":[{"__symbolic":"method"}],"getAuthStateControl":[{"__symbolic":"method"}],"setAuthStateControl":[{"__symbolic":"method"}],"getExistingOrCreateAuthStateControl":[{"__symbolic":"method"}],"setSessionState":[{"__symbolic":"method"}],"resetStorageFlowData":[{"__symbolic":"method"}],"getCodeVerifier":[{"__symbolic":"method"}],"createCodeVerifier":[{"__symbolic":"method"}],"isSilentRenewRunning":[{"__symbolic":"method"}],"setSilentRenewRunning":[{"__symbolic":"method"}],"resetSilentRenewRunning":[{"__symbolic":"method"}]}},"ɵr":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":6,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":6,"character":22}]}],null],"parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"LoggerService"}]}],"createRandom":[{"__symbolic":"method"}],"toHex":[{"__symbolic":"method"}],"randomString":[{"__symbolic":"method"}],"getCrypto":[{"__symbolic":"method"}]}},"ɵs":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵt"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵq"}]}],"implicitFlowCallback":[{"__symbolic":"method"}]}},"ɵt":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵu"},{"__symbolic":"reference","name":"ɵq"},{"__symbolic":"reference","name":"ɵv"}]}],"resetAuthorizationData":[{"__symbolic":"method"}]}},"ɵu":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"PublicEventsService"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"TokenValidationService"}]}],"setAuthorizedAndFireEvent":[{"__symbolic":"method"}],"setUnauthorizedAndFireEvent":[{"__symbolic":"method"}],"updateAndPublishAuthState":[{"__symbolic":"method"}],"setAuthorizationData":[{"__symbolic":"method"}],"getAccessToken":[{"__symbolic":"method"}],"getIdToken":[{"__symbolic":"method"}],"getRefreshToken":[{"__symbolic":"method"}],"areAuthStorageTokensValid":[{"__symbolic":"method"}],"hasIdTokenExpired":[{"__symbolic":"method"}],"hasAccessTokenExpiredIfExpiryExists":[{"__symbolic":"method"}],"decodeURIComponentSafely":[{"__symbolic":"method"}],"persistAccessTokenExpirationTime":[{"__symbolic":"method"}]}},"ɵv":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":12,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"PublicEventsService"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"TokenHelperService"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵa"}]}],"getAndPersistUserDataInStore":[{"__symbolic":"method"}],"getUserDataFromStore":[{"__symbolic":"method"}],"publishUserDataIfExists":[{"__symbolic":"method"}],"setUserDataToStore":[{"__symbolic":"method"}],"resetUserDataInStore":[{"__symbolic":"method"}],"getUserDataOidcFlowAndSave":[{"__symbolic":"method"}],"getIdentityUserData":[{"__symbolic":"method"}],"validateUserDataSubIdToken":[{"__symbolic":"method"}]}},"ɵw":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":14,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵu"},{"__symbolic":"reference","name":"ɵq"},{"__symbolic":"reference","name":"ɵx"},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"ɵt"}]}],"callbackHistoryAndResetJwtKeys":[{"__symbolic":"method"}],"handleResultErrorFromCallback":[{"__symbolic":"method"}],"historyCleanUpTurnedOn":[{"__symbolic":"method"}],"resetBrowserHistory":[{"__symbolic":"method"}]}},"ɵx":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵe"}]}],"getSigningKeys":[{"__symbolic":"method"}],"handleErrorGetSigningKeys":[{"__symbolic":"method"}]}},"ɵy":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":13,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵu"},{"__symbolic":"reference","name":"ɵq"},{"__symbolic":"reference","name":"ɵv"},{"__symbolic":"reference","name":"ɵt"}]}],"callbackUser":[{"__symbolic":"method"}],"publishAuthorizedState":[{"__symbolic":"method"}],"publishUnauthorizedState":[{"__symbolic":"method"}]}},"ɵz":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵba"},{"__symbolic":"reference","name":"ɵu"},{"__symbolic":"reference","name":"ɵt"}]}],"callbackStateValidation":[{"__symbolic":"method"}],"publishUnauthorizedState":[{"__symbolic":"method"}]}},"ɵba":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":12,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"TokenValidationService"},{"__symbolic":"reference","name":"TokenHelperService"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵbb"},{"__symbolic":"reference","name":"ɵi"}]}],"getValidatedStateResult":[{"__symbolic":"method"}],"validateState":[{"__symbolic":"method"}],"isIdTokenAfterRefreshTokenRequestValid":[{"__symbolic":"method"}],"handleSuccessfulValidation":[{"__symbolic":"method"}],"handleUnsuccessfulValidation":[{"__symbolic":"method"}]}},"ɵbb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":2,"character":1}}],"members":{"isStringEqualOrNonOrderedArrayEqual":[{"__symbolic":"method"}],"areEqual":[{"__symbolic":"method"}],"oneValueIsStringAndTheOtherIsArray":[{"__symbolic":"method"}],"bothValuesAreObjects":[{"__symbolic":"method"}],"bothValuesAreStrings":[{"__symbolic":"method"}],"bothValuesAreArrays":[{"__symbolic":"method"}],"valueIsString":[{"__symbolic":"method"}],"valueIsObject":[{"__symbolic":"method"}],"arraysStrictEqual":[{"__symbolic":"method"}],"arraysHaveEqualContent":[{"__symbolic":"method"}],"isNullOrUndefined":[{"__symbolic":"method"}]}},"ɵbc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵu"},{"__symbolic":"reference","name":"ɵq"}]}],"refreshSessionWithRefreshTokens":[{"__symbolic":"method"}]}},"ɵbd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵg"}]}],"refreshTokensRequestTokens":[{"__symbolic":"method"}]}},"ɵbe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":14,"character":20},{"__symbolic":"reference","name":"ɵq"},{"__symbolic":"reference","name":"ɵbf"}]}],"authorizedImplicitFlowCallback":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵbf":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":7,"character":28}]}],"stopPeriodicallTokenCheck":[{"__symbolic":"method"}],"startPeriodicTokenCheck":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵbg":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵbe"},{"__symbolic":"reference","name":"ɵbh"}]}],"isCallback":[{"__symbolic":"method"}],"handleCallbackAndFireEvents":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵbh":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵq"},{"__symbolic":"reference","name":"ɵbf"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":16,"character":20}]}],"authorizedCallbackWithCode":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵbi":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":14,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵq"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵm"},{"__symbolic":"reference","name":"ɵu"},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵbj"},{"__symbolic":"reference","name":"ɵbk"}]}],"forceRefreshSession":[{"__symbolic":"method"}],"startRefreshSession":[{"__symbolic":"method"}],"timeoutRetryStrategy":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵbj":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":12,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":12,"character":12}]}],null,null,null,null],"parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","name":"ɵm"},{"__symbolic":"reference","module":"@angular/core","name":"RendererFactory2","line":16,"character":21}]}],"refreshSessionWithIframe":[{"__symbolic":"method"}],"sendAuthorizeReqestUsingSilentRenew":[{"__symbolic":"method"}],"initSilentRenewRequest":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵbk":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵt"},{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵbf"}]}],"refreshSessionWithRefreshTokens":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵbl":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵt"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵq"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵv"},{"__symbolic":"reference","name":"ɵu"},{"__symbolic":"reference","name":"ɵbj"},{"__symbolic":"reference","name":"ɵbk"},{"__symbolic":"reference","name":"ɵbf"},{"__symbolic":"reference","name":"ɵg"}]}],"startTokenValidationPeriodically":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵbm":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"isCurrentlyInPopup":[{"__symbolic":"method"}],"openPopUp":[{"__symbolic":"method"}],"sendMessageToMainWindow":[{"__symbolic":"method"}],"cleanUp":[{"__symbolic":"method"}],"sendMessage":[{"__symbolic":"method"}],"getOptions":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵbn":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":12,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","name":"ɵj"},{"__symbolic":"reference","name":"ɵt"},{"__symbolic":"reference","name":"ɵbo"}]}],"logoff":[{"__symbolic":"method"}],"logoffLocal":[{"__symbolic":"method"}],"logoffAndRevokeTokens":[{"__symbolic":"method"}],"revokeAccessToken":[{"__symbolic":"method"}],"revokeRefreshToken":[{"__symbolic":"method"}],"getEndSessionUrl":[{"__symbolic":"method"}]}},"ɵbo":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":5,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":5,"character":22}]}]],"parameters":[{"__symbolic":"reference","name":"any"}]}],"redirectTo":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵbp":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵbq"},{"__symbolic":"reference","name":"ɵbt"},{"__symbolic":"reference","name":"ɵbu"}]}],"login":[{"__symbolic":"method"}],"loginWithPopUp":[{"__symbolic":"method"}]}},"ɵbq":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":19,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵbr"},{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","name":"ɵbo"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵbm"},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","name":"ɵv"},{"__symbolic":"reference","name":"ɵu"},{"__symbolic":"reference","name":"ɵbs"}]}],"loginPar":[{"__symbolic":"method"}],"loginWithPopUpPar":[{"__symbolic":"method"}]}},"ɵbr":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵi"}]}],"hasConfigValidResponseType":[{"__symbolic":"method"}]}},"ɵbs":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵg"}]}],"postParRequest":[{"__symbolic":"method"}]}},"ɵbt":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵbr"},{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵbm"},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","name":"ɵv"},{"__symbolic":"reference","name":"ɵu"}]}],"loginWithPopUpStandard":[{"__symbolic":"method"}]}},"ɵbu":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"LoggerService"},{"__symbolic":"reference","name":"ɵbr"},{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","name":"ɵbo"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵc"}]}],"loginStandard":[{"__symbolic":"method"}]}},"ɵbv":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"LoggerService"}]}],"read":[{"__symbolic":"method"}],"write":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}],"getStorage":[{"__symbolic":"method"}],"hasStorage":[{"__symbolic":"method"}]}}},"origins":{"AuthModule":"./lib/auth.module","Type":"./lib/auth.module","Token":"./lib/auth.module","AuthorizationResult":"./lib/authState/authorization-result","AuthorizedState":"./lib/authState/authorized-state","AuthWellKnownEndpoints":"./lib/config/auth-well-known-endpoints","OidcConfigService":"./lib/config/config.service","OpenIdConfiguration":"./lib/config/openid-configuration","PublicConfiguration":"./lib/config/public-configuration","AuthInterceptor":"./lib/interceptor/auth.interceptor","LogLevel":"./lib/logging/log-level","LoggerService":"./lib/logging/logger.service","OidcSecurityService":"./lib/oidc.security.service","EventTypes":"./lib/public-events/event-types","OidcClientNotification":"./lib/public-events/notification","PublicEventsService":"./lib/public-events/public-events.service","AbstractSecurityStorage":"./lib/storage/abstract-security-storage","TokenHelperService":"./lib/utils/tokenHelper/oidc-token-helper.service","JwtKeys":"./lib/validation/jwtkeys","JwtKey":"./lib/validation/jwtkeys","StateValidationResult":"./lib/validation/state-validation-result","TokenValidationService":"./lib/validation/token-validation.service","ValidationResult":"./lib/validation/validation-result","ɵa":"./lib/config/config.provider","ɵb":"./lib/utils/platform-provider/platform.provider","ɵc":"./lib/config/auth-well-known.service","ɵd":"./lib/config/auth-well-known-data.service","ɵe":"./lib/api/data.service","ɵf":"./lib/api/http-base.service","ɵg":"./lib/storage/storage-persistance.service","ɵh":"./lib/config-validation/config-validation.service","ɵi":"./lib/utils/flowHelper/flow-helper.service","ɵj":"./lib/iframe/check-session.service","ɵk":"./lib/iframe/existing-iframe.service","ɵl":"./lib/check-auth.service","ɵm":"./lib/iframe/silent-renew.service","ɵn":"./lib/flows/flows.service","ɵo":"./lib/flows/callback-handling/code-flow-callback-handler.service","ɵp":"./lib/utils/url/url.service","ɵq":"./lib/flows/flows-data.service","ɵr":"./lib/flows/random/random.service","ɵs":"./lib/flows/callback-handling/implicit-flow-callback-handler.service","ɵt":"./lib/flows/reset-auth-data.service","ɵu":"./lib/authState/auth-state.service","ɵv":"./lib/userData/user-service","ɵw":"./lib/flows/callback-handling/history-jwt-keys-callback-handler.service","ɵx":"./lib/flows/signin-key-data.service","ɵy":"./lib/flows/callback-handling/user-callback-handler.service","ɵz":"./lib/flows/callback-handling/state-validation-callback-handler.service","ɵba":"./lib/validation/state-validation.service","ɵbb":"./lib/utils/equality/equality.service","ɵbc":"./lib/flows/callback-handling/refresh-session-callback-handler.service","ɵbd":"./lib/flows/callback-handling/refresh-token-callback-handler.service","ɵbe":"./lib/callback/implicit-flow-callback.service","ɵbf":"./lib/callback/intervall.service","ɵbg":"./lib/callback/callback.service","ɵbh":"./lib/callback/code-flow-callback.service","ɵbi":"./lib/callback/refresh-session.service","ɵbj":"./lib/iframe/refresh-session-iframe.service","ɵbk":"./lib/callback/refresh-session-refresh-token.service","ɵbl":"./lib/callback/periodically-token-check.service","ɵbm":"./lib/login/popup/popup.service","ɵbn":"./lib/logoffRevoke/logoff-revocation.service","ɵbo":"./lib/utils/redirect/redirect.service","ɵbp":"./lib/login/login.service","ɵbq":"./lib/login/par/par-login.service","ɵbr":"./lib/login/response-type-validation/response-type-validation.service","ɵbs":"./lib/login/par/par.service","ɵbt":"./lib/login/popup/popup-login.service","ɵbu":"./lib/login/standard/standard-login.service","ɵbv":"./lib/storage/browser-storage.service"},"importAs":"angular-auth-oidc-client"}

@@ -7,10 +7,10 @@ /**

export { HttpBaseService as ɵf } from './lib/api/http-base.service';
export { AuthStateService as ɵr } from './lib/authState/auth-state.service';
export { CallbackService as ɵy } from './lib/callback/callback.service';
export { CodeFlowCallbackService as ɵz } from './lib/callback/code-flow-callback.service';
export { ImplicitFlowCallbackService as ɵw } from './lib/callback/implicit-flow-callback.service';
export { IntervallService as ɵx } from './lib/callback/intervall.service';
export { PeriodicallyTokenCheckService as ɵbd } from './lib/callback/periodically-token-check.service';
export { RefreshSessionRefreshTokenService as ɵbc } from './lib/callback/refresh-session-refresh-token.service';
export { RefreshSessionService as ɵba } from './lib/callback/refresh-session.service';
export { AuthStateService as ɵu } from './lib/authState/auth-state.service';
export { CallbackService as ɵbg } from './lib/callback/callback.service';
export { CodeFlowCallbackService as ɵbh } from './lib/callback/code-flow-callback.service';
export { ImplicitFlowCallbackService as ɵbe } from './lib/callback/implicit-flow-callback.service';
export { IntervallService as ɵbf } from './lib/callback/intervall.service';
export { PeriodicallyTokenCheckService as ɵbl } from './lib/callback/periodically-token-check.service';
export { RefreshSessionRefreshTokenService as ɵbk } from './lib/callback/refresh-session-refresh-token.service';
export { RefreshSessionService as ɵbi } from './lib/callback/refresh-session.service';
export { CheckAuthService as ɵl } from './lib/check-auth.service';

@@ -21,22 +21,35 @@ export { ConfigValidationService as ɵh } from './lib/config-validation/config-validation.service';

export { ConfigurationProvider as ɵa } from './lib/config/config.provider';
export { FlowsDataService as ɵp } from './lib/flows/flows-data.service';
export { CodeFlowCallbackHandlerService as ɵo } from './lib/flows/callback-handling/code-flow-callback-handler.service';
export { HistoryJwtKeysCallbackHandlerService as ɵw } from './lib/flows/callback-handling/history-jwt-keys-callback-handler.service';
export { ImplicitFlowCallbackHandlerService as ɵs } from './lib/flows/callback-handling/implicit-flow-callback-handler.service';
export { RefreshSessionCallbackHandlerService as ɵbc } from './lib/flows/callback-handling/refresh-session-callback-handler.service';
export { RefreshTokenCallbackHandlerService as ɵbd } from './lib/flows/callback-handling/refresh-token-callback-handler.service';
export { StateValidationCallbackHandlerService as ɵz } from './lib/flows/callback-handling/state-validation-callback-handler.service';
export { UserCallbackHandlerService as ɵy } from './lib/flows/callback-handling/user-callback-handler.service';
export { FlowsDataService as ɵq } from './lib/flows/flows-data.service';
export { FlowsService as ɵn } from './lib/flows/flows.service';
export { RandomService as ɵq } from './lib/flows/random/random.service';
export { SigninKeyDataService as ɵs } from './lib/flows/signin-key-data.service';
export { RandomService as ɵr } from './lib/flows/random/random.service';
export { ResetAuthDataService as ɵt } from './lib/flows/reset-auth-data.service';
export { SigninKeyDataService as ɵx } from './lib/flows/signin-key-data.service';
export { CheckSessionService as ɵj } from './lib/iframe/check-session.service';
export { IFrameService as ɵk } from './lib/iframe/existing-iframe.service';
export { RefreshSessionIframeService as ɵbb } from './lib/iframe/refresh-session-iframe.service';
export { RefreshSessionIframeService as ɵbj } from './lib/iframe/refresh-session-iframe.service';
export { SilentRenewService as ɵm } from './lib/iframe/silent-renew.service';
export { LoginService as ɵbh } from './lib/login/login.service';
export { PopUpService as ɵbe } from './lib/login/popup.service';
export { LogoffRevocationService as ɵbf } from './lib/logoffRevoke/logoff-revocation.service';
export { BrowserStorageService as ɵbi } from './lib/storage/browser-storage.service';
export { LoginService as ɵbp } from './lib/login/login.service';
export { ParLoginService as ɵbq } from './lib/login/par/par-login.service';
export { ParService as ɵbs } from './lib/login/par/par.service';
export { PopUpLoginService as ɵbt } from './lib/login/popup/popup-login.service';
export { PopUpService as ɵbm } from './lib/login/popup/popup.service';
export { ResponseTypeValidationService as ɵbr } from './lib/login/response-type-validation/response-type-validation.service';
export { StandardLoginService as ɵbu } from './lib/login/standard/standard-login.service';
export { LogoffRevocationService as ɵbn } from './lib/logoffRevoke/logoff-revocation.service';
export { BrowserStorageService as ɵbv } from './lib/storage/browser-storage.service';
export { StoragePersistanceService as ɵg } from './lib/storage/storage-persistance.service';
export { UserService as ɵt } from './lib/userData/user-service';
export { EqualityService as ɵv } from './lib/utils/equality/equality.service';
export { UserService as ɵv } from './lib/userData/user-service';
export { EqualityService as ɵbb } from './lib/utils/equality/equality.service';
export { FlowHelper as ɵi } from './lib/utils/flowHelper/flow-helper.service';
export { PlatformProvider as ɵb } from './lib/utils/platform-provider/platform.provider';
export { RedirectService as ɵbg } from './lib/utils/redirect/redirect.service';
export { UrlService as ɵo } from './lib/utils/url/url.service';
export { StateValidationService as ɵu } from './lib/validation/state-validation.service';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1hdXRoLW9pZGMtY2xpZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXV0aC1vaWRjLWNsaWVudC9zcmMvIiwic291cmNlcyI6WyJhbmd1bGFyLWF1dGgtb2lkYy1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQztBQUU3QixPQUFPLEVBQUMsV0FBVyxJQUFJLEVBQUUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxlQUFlLElBQUksRUFBRSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUFDLGdCQUFnQixJQUFJLEVBQUUsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxlQUFlLElBQUksRUFBRSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFDLHVCQUF1QixJQUFJLEVBQUUsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ3hGLE9BQU8sRUFBQywyQkFBMkIsSUFBSSxFQUFFLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUNoRyxPQUFPLEVBQUMsZ0JBQWdCLElBQUksRUFBRSxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDeEUsT0FBTyxFQUFDLDZCQUE2QixJQUFJLEdBQUcsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JHLE9BQU8sRUFBQyxpQ0FBaUMsSUFBSSxHQUFHLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUM5RyxPQUFPLEVBQUMscUJBQXFCLElBQUksR0FBRyxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDcEYsT0FBTyxFQUFDLGdCQUFnQixJQUFJLEVBQUUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyx1QkFBdUIsSUFBSSxFQUFFLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQUNoRyxPQUFPLEVBQUMsd0JBQXdCLElBQUksRUFBRSxFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDekYsT0FBTyxFQUFDLG9CQUFvQixJQUFJLEVBQUUsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxxQkFBcUIsSUFBSSxFQUFFLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RSxPQUFPLEVBQUMsZ0JBQWdCLElBQUksRUFBRSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFDLFlBQVksSUFBSSxFQUFFLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsYUFBYSxJQUFJLEVBQUUsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxvQkFBb0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRSxPQUFPLEVBQUMsbUJBQW1CLElBQUksRUFBRSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDN0UsT0FBTyxFQUFDLGFBQWEsSUFBSSxFQUFFLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUMsMkJBQTJCLElBQUksR0FBRyxFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDL0YsT0FBTyxFQUFDLGtCQUFrQixJQUFJLEVBQUUsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxZQUFZLElBQUksR0FBRyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFDLFlBQVksSUFBSSxHQUFHLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsdUJBQXVCLElBQUksR0FBRyxFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDNUYsT0FBTyxFQUFDLHFCQUFxQixJQUFJLEdBQUcsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQ25GLE9BQU8sRUFBQyx5QkFBeUIsSUFBSSxFQUFFLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUMxRixPQUFPLEVBQUMsV0FBVyxJQUFJLEVBQUUsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBQyxlQUFlLElBQUksRUFBRSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFDLFVBQVUsSUFBSSxFQUFFLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUMsZ0JBQWdCLElBQUksRUFBRSxFQUFDLE1BQU0saURBQWlELENBQUM7QUFDdkYsT0FBTyxFQUFDLGVBQWUsSUFBSSxHQUFHLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsVUFBVSxJQUFJLEVBQUUsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBQyxzQkFBc0IsSUFBSSxFQUFFLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcblxuZXhwb3J0IHtEYXRhU2VydmljZSBhcyDJtWV9IGZyb20gJy4vbGliL2FwaS9kYXRhLnNlcnZpY2UnO1xuZXhwb3J0IHtIdHRwQmFzZVNlcnZpY2UgYXMgybVmfSBmcm9tICcuL2xpYi9hcGkvaHR0cC1iYXNlLnNlcnZpY2UnO1xuZXhwb3J0IHtBdXRoU3RhdGVTZXJ2aWNlIGFzIMm1cn0gZnJvbSAnLi9saWIvYXV0aFN0YXRlL2F1dGgtc3RhdGUuc2VydmljZSc7XG5leHBvcnQge0NhbGxiYWNrU2VydmljZSBhcyDJtXl9IGZyb20gJy4vbGliL2NhbGxiYWNrL2NhbGxiYWNrLnNlcnZpY2UnO1xuZXhwb3J0IHtDb2RlRmxvd0NhbGxiYWNrU2VydmljZSBhcyDJtXp9IGZyb20gJy4vbGliL2NhbGxiYWNrL2NvZGUtZmxvdy1jYWxsYmFjay5zZXJ2aWNlJztcbmV4cG9ydCB7SW1wbGljaXRGbG93Q2FsbGJhY2tTZXJ2aWNlIGFzIMm1d30gZnJvbSAnLi9saWIvY2FsbGJhY2svaW1wbGljaXQtZmxvdy1jYWxsYmFjay5zZXJ2aWNlJztcbmV4cG9ydCB7SW50ZXJ2YWxsU2VydmljZSBhcyDJtXh9IGZyb20gJy4vbGliL2NhbGxiYWNrL2ludGVydmFsbC5zZXJ2aWNlJztcbmV4cG9ydCB7UGVyaW9kaWNhbGx5VG9rZW5DaGVja1NlcnZpY2UgYXMgybViZH0gZnJvbSAnLi9saWIvY2FsbGJhY2svcGVyaW9kaWNhbGx5LXRva2VuLWNoZWNrLnNlcnZpY2UnO1xuZXhwb3J0IHtSZWZyZXNoU2Vzc2lvblJlZnJlc2hUb2tlblNlcnZpY2UgYXMgybViY30gZnJvbSAnLi9saWIvY2FsbGJhY2svcmVmcmVzaC1zZXNzaW9uLXJlZnJlc2gtdG9rZW4uc2VydmljZSc7XG5leHBvcnQge1JlZnJlc2hTZXNzaW9uU2VydmljZSBhcyDJtWJhfSBmcm9tICcuL2xpYi9jYWxsYmFjay9yZWZyZXNoLXNlc3Npb24uc2VydmljZSc7XG5leHBvcnQge0NoZWNrQXV0aFNlcnZpY2UgYXMgybVsfSBmcm9tICcuL2xpYi9jaGVjay1hdXRoLnNlcnZpY2UnO1xuZXhwb3J0IHtDb25maWdWYWxpZGF0aW9uU2VydmljZSBhcyDJtWh9IGZyb20gJy4vbGliL2NvbmZpZy12YWxpZGF0aW9uL2NvbmZpZy12YWxpZGF0aW9uLnNlcnZpY2UnO1xuZXhwb3J0IHtBdXRoV2VsbEtub3duRGF0YVNlcnZpY2UgYXMgybVkfSBmcm9tICcuL2xpYi9jb25maWcvYXV0aC13ZWxsLWtub3duLWRhdGEuc2VydmljZSc7XG5leHBvcnQge0F1dGhXZWxsS25vd25TZXJ2aWNlIGFzIMm1Y30gZnJvbSAnLi9saWIvY29uZmlnL2F1dGgtd2VsbC1rbm93bi5zZXJ2aWNlJztcbmV4cG9ydCB7Q29uZmlndXJhdGlvblByb3ZpZGVyIGFzIMm1YX0gZnJvbSAnLi9saWIvY29uZmlnL2NvbmZpZy5wcm92aWRlcic7XG5leHBvcnQge0Zsb3dzRGF0YVNlcnZpY2UgYXMgybVwfSBmcm9tICcuL2xpYi9mbG93cy9mbG93cy1kYXRhLnNlcnZpY2UnO1xuZXhwb3J0IHtGbG93c1NlcnZpY2UgYXMgybVufSBmcm9tICcuL2xpYi9mbG93cy9mbG93cy5zZXJ2aWNlJztcbmV4cG9ydCB7UmFuZG9tU2VydmljZSBhcyDJtXF9IGZyb20gJy4vbGliL2Zsb3dzL3JhbmRvbS9yYW5kb20uc2VydmljZSc7XG5leHBvcnQge1NpZ25pbktleURhdGFTZXJ2aWNlIGFzIMm1c30gZnJvbSAnLi9saWIvZmxvd3Mvc2lnbmluLWtleS1kYXRhLnNlcnZpY2UnO1xuZXhwb3J0IHtDaGVja1Nlc3Npb25TZXJ2aWNlIGFzIMm1an0gZnJvbSAnLi9saWIvaWZyYW1lL2NoZWNrLXNlc3Npb24uc2VydmljZSc7XG5leHBvcnQge0lGcmFtZVNlcnZpY2UgYXMgybVrfSBmcm9tICcuL2xpYi9pZnJhbWUvZXhpc3RpbmctaWZyYW1lLnNlcnZpY2UnO1xuZXhwb3J0IHtSZWZyZXNoU2Vzc2lvbklmcmFtZVNlcnZpY2UgYXMgybViYn0gZnJvbSAnLi9saWIvaWZyYW1lL3JlZnJlc2gtc2Vzc2lvbi1pZnJhbWUuc2VydmljZSc7XG5leHBvcnQge1NpbGVudFJlbmV3U2VydmljZSBhcyDJtW19IGZyb20gJy4vbGliL2lmcmFtZS9zaWxlbnQtcmVuZXcuc2VydmljZSc7XG5leHBvcnQge0xvZ2luU2VydmljZSBhcyDJtWJofSBmcm9tICcuL2xpYi9sb2dpbi9sb2dpbi5zZXJ2aWNlJztcbmV4cG9ydCB7UG9wVXBTZXJ2aWNlIGFzIMm1YmV9IGZyb20gJy4vbGliL2xvZ2luL3BvcHVwLnNlcnZpY2UnO1xuZXhwb3J0IHtMb2dvZmZSZXZvY2F0aW9uU2VydmljZSBhcyDJtWJmfSBmcm9tICcuL2xpYi9sb2dvZmZSZXZva2UvbG9nb2ZmLXJldm9jYXRpb24uc2VydmljZSc7XG5leHBvcnQge0Jyb3dzZXJTdG9yYWdlU2VydmljZSBhcyDJtWJpfSBmcm9tICcuL2xpYi9zdG9yYWdlL2Jyb3dzZXItc3RvcmFnZS5zZXJ2aWNlJztcbmV4cG9ydCB7U3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZSBhcyDJtWd9IGZyb20gJy4vbGliL3N0b3JhZ2Uvc3RvcmFnZS1wZXJzaXN0YW5jZS5zZXJ2aWNlJztcbmV4cG9ydCB7VXNlclNlcnZpY2UgYXMgybV0fSBmcm9tICcuL2xpYi91c2VyRGF0YS91c2VyLXNlcnZpY2UnO1xuZXhwb3J0IHtFcXVhbGl0eVNlcnZpY2UgYXMgybV2fSBmcm9tICcuL2xpYi91dGlscy9lcXVhbGl0eS9lcXVhbGl0eS5zZXJ2aWNlJztcbmV4cG9ydCB7Rmxvd0hlbHBlciBhcyDJtWl9IGZyb20gJy4vbGliL3V0aWxzL2Zsb3dIZWxwZXIvZmxvdy1oZWxwZXIuc2VydmljZSc7XG5leHBvcnQge1BsYXRmb3JtUHJvdmlkZXIgYXMgybVifSBmcm9tICcuL2xpYi91dGlscy9wbGF0Zm9ybS1wcm92aWRlci9wbGF0Zm9ybS5wcm92aWRlcic7XG5leHBvcnQge1JlZGlyZWN0U2VydmljZSBhcyDJtWJnfSBmcm9tICcuL2xpYi91dGlscy9yZWRpcmVjdC9yZWRpcmVjdC5zZXJ2aWNlJztcbmV4cG9ydCB7VXJsU2VydmljZSBhcyDJtW99IGZyb20gJy4vbGliL3V0aWxzL3VybC91cmwuc2VydmljZSc7XG5leHBvcnQge1N0YXRlVmFsaWRhdGlvblNlcnZpY2UgYXMgybV1fSBmcm9tICcuL2xpYi92YWxpZGF0aW9uL3N0YXRlLXZhbGlkYXRpb24uc2VydmljZSc7Il19
export { RedirectService as ɵbo } from './lib/utils/redirect/redirect.service';
export { UrlService as ɵp } from './lib/utils/url/url.service';
export { StateValidationService as ɵba } from './lib/validation/state-validation.service';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1hdXRoLW9pZGMtY2xpZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXV0aC1vaWRjLWNsaWVudC9zcmMvIiwic291cmNlcyI6WyJhbmd1bGFyLWF1dGgtb2lkYy1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQztBQUU3QixPQUFPLEVBQUMsV0FBVyxJQUFJLEVBQUUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxlQUFlLElBQUksRUFBRSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUFDLGdCQUFnQixJQUFJLEVBQUUsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxlQUFlLElBQUksR0FBRyxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFDLHVCQUF1QixJQUFJLEdBQUcsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ3pGLE9BQU8sRUFBQywyQkFBMkIsSUFBSSxHQUFHLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUNqRyxPQUFPLEVBQUMsZ0JBQWdCLElBQUksR0FBRyxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDekUsT0FBTyxFQUFDLDZCQUE2QixJQUFJLEdBQUcsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JHLE9BQU8sRUFBQyxpQ0FBaUMsSUFBSSxHQUFHLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUM5RyxPQUFPLEVBQUMscUJBQXFCLElBQUksR0FBRyxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDcEYsT0FBTyxFQUFDLGdCQUFnQixJQUFJLEVBQUUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyx1QkFBdUIsSUFBSSxFQUFFLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQUNoRyxPQUFPLEVBQUMsd0JBQXdCLElBQUksRUFBRSxFQUFD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Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsVUFBVSxJQUFJLEVBQUUsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBQyxzQkFBc0IsSUFBSSxHQUFHLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcblxuZXhwb3J0IHtEYXRhU2VydmljZSBhcyDJtWV9IGZyb20gJy4vbGliL2FwaS9kYXRhLnNlcnZpY2UnO1xuZXhwb3J0IHtIdHRwQmFzZVNlcnZpY2UgYXMgybVmfSBmcm9tICcuL2xpYi9hcGkvaHR0cC1iYXNlLnNlcnZpY2UnO1xuZXhwb3J0IHtBdXRoU3RhdGVTZXJ2aWNlIGFzIMm1dX0gZnJvbSAnLi9saWIvYXV0aFN0YXRlL2F1dGgtc3RhdGUuc2VydmljZSc7XG5leHBvcnQge0NhbGxiYWNrU2VydmljZSBhcyDJtWJnfSBmcm9tICcuL2xpYi9jYWxsYmFjay9jYWxsYmFjay5zZXJ2aWNlJztcbmV4cG9ydCB7Q29kZUZsb3dDYWxsYmFja1NlcnZpY2UgYXMgybViaH0gZnJvbSAnLi9saWIvY2FsbGJhY2svY29kZS1mbG93LWNhbGxiYWNrLnNlcnZpY2UnO1xuZXhwb3J0IHtJbXBsaWNpdEZsb3dDYWxsYmFja1NlcnZpY2UgYXMgybViZX0gZnJvbSAnLi9saWIvY2FsbGJhY2svaW1wbGljaXQtZmxvdy1jYWxsYmFjay5zZXJ2aWNlJztcbmV4cG9ydCB7SW50ZXJ2YWxsU2VydmljZSBhcyDJtWJmfSBmcm9tICcuL2xpYi9jYWxsYmFjay9pbnRlcnZhbGwuc2VydmljZSc7XG5leHBvcnQge1BlcmlvZGljYWxseVRva2VuQ2hlY2tTZXJ2aWNlIGFzIMm1Ymx9IGZyb20gJy4vbGliL2NhbGxiYWNrL3BlcmlvZGljYWxseS10b2tlbi1jaGVjay5zZXJ2aWNlJztcbmV4cG9ydCB7UmVmcmVzaFNlc3Npb25SZWZyZXNoVG9rZW5TZXJ2aWNlIGFzIMm1Ymt9IGZyb20gJy4vbGliL2NhbGxiYWNrL3JlZnJlc2gtc2Vzc2lvbi1yZWZyZXNoLXRva2VuLnNlcnZpY2UnO1xuZXhwb3J0IHtSZWZyZXNoU2Vzc2lvblNlcnZpY2UgYXMgybViaX0gZnJvbSAnLi9saWIvY2FsbGJhY2svcmVmcmVzaC1zZXNzaW9uLnNlcnZpY2UnO1xuZXhwb3J0IHtDaGVja0F1dGhTZXJ2aWNlIGFzIMm1bH0gZnJvbSAnLi9saWIvY2hlY2stYXV0aC5zZXJ2aWNlJztcbmV4cG9ydCB7Q29uZmlnVmFsaWRhdGlvblNlcnZpY2UgYXMgybVofSBmcm9tICcuL2xpYi9jb25maWctdmFsaWRhdGlvbi9jb25maWctdmFsaWRhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCB7QXV0aFdlbGxLbm93bkRhdGFTZXJ2aWNlIGFzIMm1ZH0gZnJvbSAnLi9saWIvY29uZmlnL2F1dGgtd2VsbC1rbm93bi1kYXRhLnNlcnZpY2UnO1xuZXhwb3J0IHtBdXRoV2VsbEtub3duU2VydmljZSBhcyDJtWN9IGZyb20gJy4vbGliL2NvbmZpZy9hdXRoLXdlbGwta25vd24uc2VydmljZSc7XG5leHBvcnQge0NvbmZpZ3VyYXRpb25Qcm92aWRlciBhcyDJtWF9IGZyb20gJy4vbGliL2NvbmZpZy9jb25maWcucHJvdmlkZXInO1xuZXhwb3J0IHtDb2RlRmxvd0NhbGxiYWNrSGFuZGxlclNlcnZpY2UgYXMgybVvfSBmcm9tICcuL2xpYi9mbG93cy9jYWxsYmFjay1oYW5kbGluZy9jb2RlLWZsb3ctY2FsbGJhY2staGFuZGxlci5zZXJ2aWNlJztcbmV4cG9ydCB7SGlzdG9yeUp3dEtleXNDYWxsYmFja0hhbmRsZXJTZXJ2aWNlIGFzIMm1d30gZnJvbSAnLi9saWIvZmxvd3MvY2FsbGJhY2staGFuZGxpbmcvaGlzdG9yeS1qd3Qta2V5cy1jYWxsYmFjay1oYW5kbGVyLnNlcnZpY2UnO1xuZXhwb3J0IHtJbXBsaWNpdEZsb3dDYWxsYmFja0hhbmRsZXJTZXJ2aWNlIGFzIMm1c30gZnJvbSAnLi9saWIvZmxvd3MvY2FsbGJhY2staGFuZGxpbmcvaW1wbGljaXQtZmxvdy1jYWxsYmFjay1oYW5kbGVyLnNlcnZpY2UnO1xuZXhwb3J0IHtSZWZyZXNoU2Vzc2lvbkNhbGxiYWNrSGFuZGxlclNlcnZpY2UgYXMgybViY30gZnJvbSAnLi9saWIvZmxvd3MvY2FsbGJhY2staGFuZGxpbmcvcmVmcmVzaC1zZXNzaW9uLWNhbGxiYWNrLWhhbmRsZXIuc2VydmljZSc7XG5leHBvcnQge1JlZnJlc2hUb2tlbkNhbGxiYWNrSGFuZGxlclNlcnZpY2UgYXMgybViZH0gZnJvbSAnLi9saWIvZmxvd3MvY2FsbGJhY2staGFuZGxpbmcvcmVmcmVzaC10b2tlbi1jYWxsYmFjay1oYW5kbGVyLnNlcnZpY2UnO1xuZXhwb3J0IHtTdGF0ZVZhbGlkYXRpb25DYWxsYmFja0hhbmRsZXJTZXJ2aWNlIGFzIMm1en0gZnJvbSAnLi9saWIvZmxvd3MvY2FsbGJhY2staGFuZGxpbmcvc3RhdGUtdmFsaWRhdGlvbi1jYWxsYmFjay1oYW5kbGVyLnNlcnZpY2UnO1xuZXhwb3J0IHtVc2VyQ2FsbGJhY2tIYW5kbGVyU2VydmljZSBhcyDJtXl9IGZyb20gJy4vbGliL2Zsb3dzL2NhbGxiYWNrLWhhbmRsaW5nL3VzZXItY2FsbGJhY2staGFuZGxlci5zZXJ2aWNlJztcbmV4cG9ydCB7Rmxvd3NEYXRhU2VydmljZSBhcyDJtXF9IGZyb20gJy4vbGliL2Zsb3dzL2Zsb3dzLWRhdGEuc2VydmljZSc7XG5leHBvcnQge0Zsb3dzU2VydmljZSBhcyDJtW59IGZyb20gJy4vbGliL2Zsb3dzL2Zsb3dzLnNlcnZpY2UnO1xuZXhwb3J0IHtSYW5kb21TZXJ2aWNlIGFzIMm1cn0gZnJvbSAnLi9saWIvZmxvd3MvcmFuZG9tL3JhbmRvbS5zZXJ2aWNlJztcbmV4cG9ydCB7UmVzZXRBdXRoRGF0YVNlcnZpY2UgYXMgybV0fSBmcm9tICcuL2xpYi9mbG93cy9yZXNldC1hdXRoLWRhdGEuc2VydmljZSc7XG5leHBvcnQge1NpZ25pbktleURhdGFTZXJ2aWNlIGFzIMm1eH0gZnJvbSAnLi9saWIvZmxvd3Mvc2lnbmluLWtleS1kYXRhLnNlcnZpY2UnO1xuZXhwb3J0IHtDaGVja1Nlc3Npb25TZXJ2aWNlIGFzIMm1an0gZnJvbSAnLi9saWIvaWZyYW1lL2NoZWNrLXNlc3Npb24uc2VydmljZSc7XG5leHBvcnQge0lGcmFtZVNlcnZpY2UgYXMgybVrfSBmcm9tICcuL2xpYi9pZnJhbWUvZXhpc3RpbmctaWZyYW1lLnNlcnZpY2UnO1xuZXhwb3J0IHtSZWZyZXNoU2Vzc2lvbklmcmFtZVNlcnZpY2UgYXMgybVian0gZnJvbSAnLi9saWIvaWZyYW1lL3JlZnJlc2gtc2Vzc2lvbi1pZnJhbWUuc2VydmljZSc7XG5leHBvcnQge1NpbGVudFJlbmV3U2VydmljZSBhcyDJtW19IGZyb20gJy4vbGliL2lmcmFtZS9zaWxlbnQtcmVuZXcuc2VydmljZSc7XG5leHBvcnQge0xvZ2luU2VydmljZSBhcyDJtWJwfSBmcm9tICcuL2xpYi9sb2dpbi9sb2dpbi5zZXJ2aWNlJztcbmV4cG9ydCB7UGFyTG9naW5TZXJ2aWNlIGFzIMm1YnF9IGZyb20gJy4vbGliL2xvZ2luL3Bhci9wYXItbG9naW4uc2VydmljZSc7XG5leHBvcnQge1BhclNlcnZpY2UgYXMgybVic30gZnJvbSAnLi9saWIvbG9naW4vcGFyL3Bhci5zZXJ2aWNlJztcbmV4cG9ydCB7UG9wVXBMb2dpblNlcnZpY2UgYXMgybVidH0gZnJvbSAnLi9saWIvbG9naW4vcG9wdXAvcG9wdXAtbG9naW4uc2VydmljZSc7XG5leHBvcnQge1BvcFVwU2VydmljZSBhcyDJtWJtfSBmcm9tICcuL2xpYi9sb2dpbi9wb3B1cC9wb3B1cC5zZXJ2aWNlJztcbmV4cG9ydCB7UmVzcG9uc2VUeXBlVmFsaWRhdGlvblNlcnZpY2UgYXMgybVicn0gZnJvbSAnLi9saWIvbG9naW4vcmVzcG9uc2UtdHlwZS12YWxpZGF0aW9uL3Jlc3BvbnNlLXR5cGUtdmFsaWRhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCB7U3RhbmRhcmRMb2dpblNlcnZpY2UgYXMgybVidX0gZnJvbSAnLi9saWIvbG9naW4vc3RhbmRhcmQvc3RhbmRhcmQtbG9naW4uc2VydmljZSc7XG5leHBvcnQge0xvZ29mZlJldm9jYXRpb25TZXJ2aWNlIGFzIMm1Ym59IGZyb20gJy4vbGliL2xvZ29mZlJldm9rZS9sb2dvZmYtcmV2b2NhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCB7QnJvd3NlclN0b3JhZ2VTZXJ2aWNlIGFzIMm1YnZ9IGZyb20gJy4vbGliL3N0b3JhZ2UvYnJvd3Nlci1zdG9yYWdlLnNlcnZpY2UnO1xuZXhwb3J0IHtTdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlIGFzIMm1Z30gZnJvbSAnLi9saWIvc3RvcmFnZS9zdG9yYWdlLXBlcnNpc3RhbmNlLnNlcnZpY2UnO1xuZXhwb3J0IHtVc2VyU2VydmljZSBhcyDJtXZ9IGZyb20gJy4vbGliL3VzZXJEYXRhL3VzZXItc2VydmljZSc7XG5leHBvcnQge0VxdWFsaXR5U2VydmljZSBhcyDJtWJifSBmcm9tICcuL2xpYi91dGlscy9lcXVhbGl0eS9lcXVhbGl0eS5zZXJ2aWNlJztcbmV4cG9ydCB7Rmxvd0hlbHBlciBhcyDJtWl9IGZyb20gJy4vbGliL3V0aWxzL2Zsb3dIZWxwZXIvZmxvdy1oZWxwZXIuc2VydmljZSc7XG5leHBvcnQge1BsYXRmb3JtUHJvdmlkZXIgYXMgybVifSBmcm9tICcuL2xpYi91dGlscy9wbGF0Zm9ybS1wcm92aWRlci9wbGF0Zm9ybS5wcm92aWRlcic7XG5leHBvcnQge1JlZGlyZWN0U2VydmljZSBhcyDJtWJvfSBmcm9tICcuL2xpYi91dGlscy9yZWRpcmVjdC9yZWRpcmVjdC5zZXJ2aWNlJztcbmV4cG9ydCB7VXJsU2VydmljZSBhcyDJtXB9IGZyb20gJy4vbGliL3V0aWxzL3VybC91cmwuc2VydmljZSc7XG5leHBvcnQge1N0YXRlVmFsaWRhdGlvblNlcnZpY2UgYXMgybViYX0gZnJvbSAnLi9saWIvdmFsaWRhdGlvbi9zdGF0ZS12YWxpZGF0aW9uLnNlcnZpY2UnOyJdfQ==

@@ -7,2 +7,3 @@ import { CommonModule } from '@angular/common';

import { AuthStateService } from './authState/auth-state.service';
import { ImplicitFlowCallbackService } from './callback/implicit-flow-callback.service';
import { CheckAuthService } from './check-auth.service';

@@ -14,5 +15,13 @@ import { ConfigValidationService } from './config-validation/config-validation.service';

import { OidcConfigService } from './config/config.service';
import { CodeFlowCallbackHandlerService } from './flows/callback-handling/code-flow-callback-handler.service';
import { HistoryJwtKeysCallbackHandlerService } from './flows/callback-handling/history-jwt-keys-callback-handler.service';
import { ImplicitFlowCallbackHandlerService } from './flows/callback-handling/implicit-flow-callback-handler.service';
import { RefreshSessionCallbackHandlerService } from './flows/callback-handling/refresh-session-callback-handler.service';
import { RefreshTokenCallbackHandlerService } from './flows/callback-handling/refresh-token-callback-handler.service';
import { StateValidationCallbackHandlerService } from './flows/callback-handling/state-validation-callback-handler.service';
import { UserCallbackHandlerService } from './flows/callback-handling/user-callback-handler.service';
import { FlowsDataService } from './flows/flows-data.service';
import { FlowsService } from './flows/flows.service';
import { RandomService } from './flows/random/random.service';
import { ResetAuthDataService } from './flows/reset-auth-data.service';
import { SigninKeyDataService } from './flows/signin-key-data.service';

@@ -24,2 +33,7 @@ import { CheckSessionService } from './iframe/check-session.service';

import { LoginService } from './login/login.service';
import { ParLoginService } from './login/par/par-login.service';
import { ParService } from './login/par/par.service';
import { PopUpLoginService } from './login/popup/popup-login.service';
import { ResponseTypeValidationService } from './login/response-type-validation/response-type-validation.service';
import { StandardLoginService } from './login/standard/standard-login.service';
import { LogoffRevocationService } from './logoffRevoke/logoff-revocation.service';

@@ -68,2 +82,3 @@ import { OidcSecurityService } from './oidc.security.service';

LoginService,
ParService,
AuthWellKnownDataService,

@@ -75,2 +90,15 @@ AuthWellKnownService,

CheckAuthService,
ResetAuthDataService,
ImplicitFlowCallbackService,
HistoryJwtKeysCallbackHandlerService,
ResponseTypeValidationService,
UserCallbackHandlerService,
StateValidationCallbackHandlerService,
RefreshSessionCallbackHandlerService,
RefreshTokenCallbackHandlerService,
CodeFlowCallbackHandlerService,
ImplicitFlowCallbackHandlerService,
ParLoginService,
PopUpLoginService,
StandardLoginService,
{

@@ -91,2 +119,2 @@ provide: AbstractSecurityStorage,

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdXRoLW9pZGMtY2xpZW50L3NyYy8iLCJzb3VyY2VzIjpbImxpYi9hdXRoLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDbkYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBTy9FLE1BQU0sT0FBTyxVQUFVO0lBQ3JCLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBZSxFQUFFO1FBQzlCLE9BQU87WUFDTCxRQUFRLEVBQUUsVUFBVTtZQUNwQixTQUFTLEVBQUU7Z0JBQ1QsaUJBQWlCO2dCQUNqQixtQkFBbUI7Z0JBQ25CLFVBQVU7Z0JBQ1YsbUJBQW1CO2dCQUNuQixzQkFBc0I7Z0JBQ3RCLGdCQUFnQjtnQkFDaEIsbUJBQW1CO2dCQUNuQixnQkFBZ0I7Z0JBQ2hCLFlBQVk7Z0JBQ1osa0JBQWtCO2dCQUNsQixxQkFBcUI7Z0JBQ3JCLHVCQUF1QjtnQkFDdkIsV0FBVztnQkFDWCxhQUFhO2dCQUNiLGVBQWU7Z0JBQ2YsVUFBVTtnQkFDVixnQkFBZ0I7Z0JBQ2hCLG9CQUFvQjtnQkFDcEIseUJBQXlCO2dCQUN6QixrQkFBa0I7Z0JBQ2xCLGFBQWE7Z0JBQ2IsYUFBYTtnQkFDYixlQUFlO2dCQUNmLFlBQVk7Z0JBQ1osd0JBQXdCO2dCQUN4QixvQkFBb0I7Z0JBQ3BCLFdBQVc7Z0JBQ1gsc0JBQXNCO2dCQUN0Qix1QkFBdUI7Z0JBQ3ZCLGdCQUFnQjtnQkFDaEI7b0JBQ0UsT0FBTyxFQUFFLHVCQUF1QjtvQkFDaEMsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPLElBQUkscUJBQXFCO2lCQUNqRDthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7OztZQTlDRixRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDO2dCQUN6QyxZQUFZLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxFQUFFLEVBQUU7YUFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi9hcGkvZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IEh0dHBCYXNlU2VydmljZSB9IGZyb20gJy4vYXBpL2h0dHAtYmFzZS5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL2F1dGhTdGF0ZS9hdXRoLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hlY2tBdXRoU2VydmljZSB9IGZyb20gJy4vY2hlY2stYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ1ZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9jb25maWctdmFsaWRhdGlvbi9jb25maWctdmFsaWRhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhXZWxsS25vd25EYXRhU2VydmljZSB9IGZyb20gJy4vY29uZmlnL2F1dGgtd2VsbC1rbm93bi1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aFdlbGxLbm93blNlcnZpY2UgfSBmcm9tICcuL2NvbmZpZy9hdXRoLXdlbGwta25vd24uc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uUHJvdmlkZXIgfSBmcm9tICcuL2NvbmZpZy9jb25maWcucHJvdmlkZXInO1xuaW1wb3J0IHsgT2lkY0NvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2NvbmZpZy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBGbG93c0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi9mbG93cy9mbG93cy1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmxvd3NTZXJ2aWNlIH0gZnJvbSAnLi9mbG93cy9mbG93cy5zZXJ2aWNlJztcbmltcG9ydCB7IFJhbmRvbVNlcnZpY2UgfSBmcm9tICcuL2Zsb3dzL3JhbmRvbS9yYW5kb20uc2VydmljZSc7XG5pbXBvcnQgeyBTaWduaW5LZXlEYXRhU2VydmljZSB9IGZyb20gJy4vZmxvd3Mvc2lnbmluLWtleS1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hlY2tTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vaWZyYW1lL2NoZWNrLXNlc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBJRnJhbWVTZXJ2aWNlIH0gZnJvbSAnLi9pZnJhbWUvZXhpc3RpbmctaWZyYW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lsZW50UmVuZXdTZXJ2aWNlIH0gZnJvbSAnLi9pZnJhbWUvc2lsZW50LXJlbmV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4vbG9nZ2luZy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuL2xvZ2luL2xvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nb2ZmUmV2b2NhdGlvblNlcnZpY2UgfSBmcm9tICcuL2xvZ29mZlJldm9rZS9sb2dvZmYtcmV2b2NhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9pZGNTZWN1cml0eVNlcnZpY2UgfSBmcm9tICcuL29pZGMuc2VjdXJpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBQdWJsaWNFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi9wdWJsaWMtZXZlbnRzL3B1YmxpYy1ldmVudHMuc2VydmljZSc7XG5pbXBvcnQgeyBBYnN0cmFjdFNlY3VyaXR5U3RvcmFnZSB9IGZyb20gJy4vc3RvcmFnZS9hYnN0cmFjdC1zZWN1cml0eS1zdG9yYWdlJztcbmltcG9ydCB7IEJyb3dzZXJTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vc3RvcmFnZS9icm93c2VyLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yYWdlL3N0b3JhZ2UtcGVyc2lzdGFuY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4vdXNlckRhdGEvdXNlci1zZXJ2aWNlJztcbmltcG9ydCB7IEVxdWFsaXR5U2VydmljZSB9IGZyb20gJy4vdXRpbHMvZXF1YWxpdHkvZXF1YWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBGbG93SGVscGVyIH0gZnJvbSAnLi91dGlscy9mbG93SGVscGVyL2Zsb3ctaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGxhdGZvcm1Qcm92aWRlciB9IGZyb20gJy4vdXRpbHMvcGxhdGZvcm0tcHJvdmlkZXIvcGxhdGZvcm0ucHJvdmlkZXInO1xuaW1wb3J0IHsgVG9rZW5IZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi91dGlscy90b2tlbkhlbHBlci9vaWRjLXRva2VuLWhlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7IFVybFNlcnZpY2UgfSBmcm9tICcuL3V0aWxzL3VybC91cmwuc2VydmljZSc7XG5pbXBvcnQgeyBTdGF0ZVZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi92YWxpZGF0aW9uL3N0YXRlLXZhbGlkYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBUb2tlblZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi92YWxpZGF0aW9uL3Rva2VuLXZhbGlkYXRpb24uc2VydmljZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEh0dHBDbGllbnRNb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBleHBvcnRzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQXV0aE1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KHRva2VuOiBUb2tlbiA9IHt9KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBdXRoTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIE9pZGNDb25maWdTZXJ2aWNlLFxuICAgICAgICBQdWJsaWNFdmVudHNTZXJ2aWNlLFxuICAgICAgICBGbG93SGVscGVyLFxuICAgICAgICBPaWRjU2VjdXJpdHlTZXJ2aWNlLFxuICAgICAgICBUb2tlblZhbGlkYXRpb25TZXJ2aWNlLFxuICAgICAgICBQbGF0Zm9ybVByb3ZpZGVyLFxuICAgICAgICBDaGVja1Nlc3Npb25TZXJ2aWNlLFxuICAgICAgICBGbG93c0RhdGFTZXJ2aWNlLFxuICAgICAgICBGbG93c1NlcnZpY2UsXG4gICAgICAgIFNpbGVudFJlbmV3U2VydmljZSxcbiAgICAgICAgQ29uZmlndXJhdGlvblByb3ZpZGVyLFxuICAgICAgICBMb2dvZmZSZXZvY2F0aW9uU2VydmljZSxcbiAgICAgICAgVXNlclNlcnZpY2UsXG4gICAgICAgIFJhbmRvbVNlcnZpY2UsXG4gICAgICAgIEh0dHBCYXNlU2VydmljZSxcbiAgICAgICAgVXJsU2VydmljZSxcbiAgICAgICAgQXV0aFN0YXRlU2VydmljZSxcbiAgICAgICAgU2lnbmluS2V5RGF0YVNlcnZpY2UsXG4gICAgICAgIFN0b3JhZ2VQZXJzaXN0YW5jZVNlcnZpY2UsXG4gICAgICAgIFRva2VuSGVscGVyU2VydmljZSxcbiAgICAgICAgTG9nZ2VyU2VydmljZSxcbiAgICAgICAgSUZyYW1lU2VydmljZSxcbiAgICAgICAgRXF1YWxpdHlTZXJ2aWNlLFxuICAgICAgICBMb2dpblNlcnZpY2UsXG4gICAgICAgIEF1dGhXZWxsS25vd25EYXRhU2VydmljZSxcbiAgICAgICAgQXV0aFdlbGxLbm93blNlcnZpY2UsXG4gICAgICAgIERhdGFTZXJ2aWNlLFxuICAgICAgICBTdGF0ZVZhbGlkYXRpb25TZXJ2aWNlLFxuICAgICAgICBDb25maWdWYWxpZGF0aW9uU2VydmljZSxcbiAgICAgICAgQ2hlY2tBdXRoU2VydmljZSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IEFic3RyYWN0U2VjdXJpdHlTdG9yYWdlLFxuICAgICAgICAgIHVzZUNsYXNzOiB0b2tlbi5zdG9yYWdlIHx8IEJyb3dzZXJTdG9yYWdlU2VydmljZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBUeXBlPFQ+ID0gbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVDtcblxuZXhwb3J0IGludGVyZmFjZSBUb2tlbiB7XG4gIHN0b3JhZ2U/OiBUeXBlPGFueT47XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdXRoLW9pZGMtY2xpZW50L3NyYy8iLCJzb3VyY2VzIjpbImxpYi9hdXRoLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzlHLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBQzNILE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQ3RILE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLG9F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YUFBYTtnQkFDYixhQUFhO2dCQUNiLGVBQWU7Z0JBQ2YsWUFBWTtnQkFDWixVQUFVO2dCQUNWLHdCQUF3QjtnQkFDeEIsb0JBQW9CO2dCQUNwQixXQUFXO2dCQUNYLHNCQUFzQjtnQkFDdEIsdUJBQXVCO2dCQUN2QixnQkFBZ0I7Z0JBQ2hCLG9CQUFvQjtnQkFDcEIsMkJBQTJCO2dCQUMzQixvQ0FBb0M7Z0JBQ3BDLDZCQUE2QjtnQkFDN0IsMEJBQTBCO2dCQUMxQixxQ0FBcUM7Z0JBQ3JDLG9DQUFvQztnQkFDcEMsa0NBQWtDO2dCQUNsQyw4QkFBOEI7Z0JBQzlCLGtDQUFrQztnQkFDbEMsZUFBZTtnQkFDZixpQkFBaUI7Z0JBQ2pCLG9CQUFvQjtnQkFDcEI7b0JBQ0UsT0FBTyxFQUFFLHVCQUF1QjtvQkFDaEMsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPLElBQUkscUJBQXFCO2lCQUNqRDthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7OztZQTVERixRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDO2dCQUN6QyxZQUFZLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxFQUFFLEVBQUU7YUFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi9hcGkvZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IEh0dHBCYXNlU2VydmljZSB9IGZyb20gJy4vYXBpL2h0dHAtYmFzZS5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL2F1dGhTdGF0ZS9hdXRoLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW1wbGljaXRGbG93Q2FsbGJhY2tTZXJ2aWNlIH0gZnJvbSAnLi9jYWxsYmFjay9pbXBsaWNpdC1mbG93LWNhbGxiYWNrLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hlY2tBdXRoU2VydmljZSB9IGZyb20gJy4vY2hlY2stYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ1ZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9jb25maWctdmFsaWRhdGlvbi9jb25maWctdmFsaWRhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhXZWxsS25vd25EYXRhU2VydmljZSB9IGZyb20gJy4vY29uZmlnL2F1dGgtd2VsbC1rbm93bi1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aFdlbGxLbm93blNlcnZpY2UgfSBmcm9tICcuL2NvbmZpZy9hdXRoLXdlbGwta25vd24uc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uUHJvdmlkZXIgfSBmcm9tICcuL2NvbmZpZy9jb25maWcucHJvdmlkZXInO1xuaW1wb3J0IHsgT2lkY0NvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2NvbmZpZy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBDb2RlRmxvd0NhbGxiYWNrSGFuZGxlclNlcnZpY2UgfSBmcm9tICcuL2Zsb3dzL2NhbGxiYWNrLWhhbmRsaW5nL2NvZGUtZmxvdy1jYWxsYmFjay1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGlzdG9yeUp3dEtleXNDYWxsYmFja0hhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi9mbG93cy9jYWxsYmFjay1oYW5kbGluZy9oaXN0b3J5LWp3dC1rZXlzLWNhbGxiYWNrLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBJbXBsaWNpdEZsb3dDYWxsYmFja0hhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi9mbG93cy9jYWxsYmFjay1oYW5kbGluZy9pbXBsaWNpdC1mbG93LWNhbGxiYWNrLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBSZWZyZXNoU2Vzc2lvbkNhbGxiYWNrSGFuZGxlclNlcnZpY2UgfSBmcm9tICcuL2Zsb3dzL2NhbGxiYWNrLWhhbmRsaW5nL3JlZnJlc2gtc2Vzc2lvbi1jYWxsYmFjay1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVmcmVzaFRva2VuQ2FsbGJhY2tIYW5kbGVyU2VydmljZSB9IGZyb20gJy4vZmxvd3MvY2FsbGJhY2staGFuZGxpbmcvcmVmcmVzaC10b2tlbi1jYWxsYmFjay1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RhdGVWYWxpZGF0aW9uQ2FsbGJhY2tIYW5kbGVyU2VydmljZSB9IGZyb20gJy4vZmxvd3MvY2FsbGJhY2staGFuZGxpbmcvc3RhdGUtdmFsaWRhdGlvbi1jYWxsYmFjay1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlckNhbGxiYWNrSGFuZGxlclNlcnZpY2UgfSBmcm9tICcuL2Zsb3dzL2NhbGxiYWNrLWhhbmRsaW5nL3VzZXItY2FsbGJhY2staGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dzRGF0YVNlcnZpY2UgfSBmcm9tICcuL2Zsb3dzL2Zsb3dzLWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBGbG93c1NlcnZpY2UgfSBmcm9tICcuL2Zsb3dzL2Zsb3dzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmFuZG9tU2VydmljZSB9IGZyb20gJy4vZmxvd3MvcmFuZG9tL3JhbmRvbS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc2V0QXV0aERhdGFTZXJ2aWNlIH0gZnJvbSAnLi9mbG93cy9yZXNldC1hdXRoLWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBTaWduaW5LZXlEYXRhU2VydmljZSB9IGZyb20gJy4vZmxvd3Mvc2lnbmluLWtleS1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hlY2tTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vaWZyYW1lL2NoZWNrLXNlc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBJRnJhbWVTZXJ2aWNlIH0gZnJvbSAnLi9pZnJhbWUvZXhpc3RpbmctaWZyYW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lsZW50UmVuZXdTZXJ2aWNlIH0gZnJvbSAnLi9pZnJhbWUvc2lsZW50LXJlbmV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4vbG9nZ2luZy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuL2xvZ2luL2xvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFyTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi9sb2dpbi9wYXIvcGFyLWxvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFyU2VydmljZSB9IGZyb20gJy4vbG9naW4vcGFyL3Bhci5zZXJ2aWNlJztcbmltcG9ydCB7IFBvcFVwTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi9sb2dpbi9wb3B1cC9wb3B1cC1sb2dpbi5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc3BvbnNlVHlwZVZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9sb2dpbi9yZXNwb25zZS10eXBlLXZhbGlkYXRpb24vcmVzcG9uc2UtdHlwZS12YWxpZGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RhbmRhcmRMb2dpblNlcnZpY2UgfSBmcm9tICcuL2xvZ2luL3N0YW5kYXJkL3N0YW5kYXJkLWxvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nb2ZmUmV2b2NhdGlvblNlcnZpY2UgfSBmcm9tICcuL2xvZ29mZlJldm9rZS9sb2dvZmYtcmV2b2NhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9pZGNTZWN1cml0eVNlcnZpY2UgfSBmcm9tICcuL29pZGMuc2VjdXJpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBQdWJsaWNFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi9wdWJsaWMtZXZlbnRzL3B1YmxpYy1ldmVudHMuc2VydmljZSc7XG5pbXBvcnQgeyBBYnN0cmFjdFNlY3VyaXR5U3RvcmFnZSB9IGZyb20gJy4vc3RvcmFnZS9hYnN0cmFjdC1zZWN1cml0eS1zdG9yYWdlJztcbmltcG9ydCB7IEJyb3dzZXJTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vc3RvcmFnZS9icm93c2VyLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yYWdlL3N0b3JhZ2UtcGVyc2lzdGFuY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4vdXNlckRhdGEvdXNlci1zZXJ2aWNlJztcbmltcG9ydCB7IEVxdWFsaXR5U2VydmljZSB9IGZyb20gJy4vdXRpbHMvZXF1YWxpdHkvZXF1YWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBGbG93SGVscGVyIH0gZnJvbSAnLi91dGlscy9mbG93SGVscGVyL2Zsb3ctaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGxhdGZvcm1Qcm92aWRlciB9IGZyb20gJy4vdXRpbHMvcGxhdGZvcm0tcHJvdmlkZXIvcGxhdGZvcm0ucHJvdmlkZXInO1xuaW1wb3J0IHsgVG9rZW5IZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi91dGlscy90b2tlbkhlbHBlci9vaWRjLXRva2VuLWhlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7IFVybFNlcnZpY2UgfSBmcm9tICcuL3V0aWxzL3VybC91cmwuc2VydmljZSc7XG5pbXBvcnQgeyBTdGF0ZVZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi92YWxpZGF0aW9uL3N0YXRlLXZhbGlkYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBUb2tlblZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi92YWxpZGF0aW9uL3Rva2VuLXZhbGlkYXRpb24uc2VydmljZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEh0dHBDbGllbnRNb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBleHBvcnRzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQXV0aE1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KHRva2VuOiBUb2tlbiA9IHt9KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBdXRoTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIE9pZGNDb25maWdTZXJ2aWNlLFxuICAgICAgICBQdWJsaWNFdmVudHNTZXJ2aWNlLFxuICAgICAgICBGbG93SGVscGVyLFxuICAgICAgICBPaWRjU2VjdXJpdHlTZXJ2aWNlLFxuICAgICAgICBUb2tlblZhbGlkYXRpb25TZXJ2aWNlLFxuICAgICAgICBQbGF0Zm9ybVByb3ZpZGVyLFxuICAgICAgICBDaGVja1Nlc3Npb25TZXJ2aWNlLFxuICAgICAgICBGbG93c0RhdGFTZXJ2aWNlLFxuICAgICAgICBGbG93c1NlcnZpY2UsXG4gICAgICAgIFNpbGVudFJlbmV3U2VydmljZSxcbiAgICAgICAgQ29uZmlndXJhdGlvblByb3ZpZGVyLFxuICAgICAgICBMb2dvZmZSZXZvY2F0aW9uU2VydmljZSxcbiAgICAgICAgVXNlclNlcnZpY2UsXG4gICAgICAgIFJhbmRvbVNlcnZpY2UsXG4gICAgICAgIEh0dHBCYXNlU2VydmljZSxcbiAgICAgICAgVXJsU2VydmljZSxcbiAgICAgICAgQXV0aFN0YXRlU2VydmljZSxcbiAgICAgICAgU2lnbmluS2V5RGF0YVNlcnZpY2UsXG4gICAgICAgIFN0b3JhZ2VQZXJzaXN0YW5jZVNlcnZpY2UsXG4gICAgICAgIFRva2VuSGVscGVyU2VydmljZSxcbiAgICAgICAgTG9nZ2VyU2VydmljZSxcbiAgICAgICAgSUZyYW1lU2VydmljZSxcbiAgICAgICAgRXF1YWxpdHlTZXJ2aWNlLFxuICAgICAgICBMb2dpblNlcnZpY2UsXG4gICAgICAgIFBhclNlcnZpY2UsXG4gICAgICAgIEF1dGhXZWxsS25vd25EYXRhU2VydmljZSxcbiAgICAgICAgQXV0aFdlbGxLbm93blNlcnZpY2UsXG4gICAgICAgIERhdGFTZXJ2aWNlLFxuICAgICAgICBTdGF0ZVZhbGlkYXRpb25TZXJ2aWNlLFxuICAgICAgICBDb25maWdWYWxpZGF0aW9uU2VydmljZSxcbiAgICAgICAgQ2hlY2tBdXRoU2VydmljZSxcbiAgICAgICAgUmVzZXRBdXRoRGF0YVNlcnZpY2UsXG4gICAgICAgIEltcGxpY2l0Rmxvd0NhbGxiYWNrU2VydmljZSxcbiAgICAgICAgSGlzdG9yeUp3dEtleXNDYWxsYmFja0hhbmRsZXJTZXJ2aWNlLFxuICAgICAgICBSZXNwb25zZVR5cGVWYWxpZGF0aW9uU2VydmljZSxcbiAgICAgICAgVXNlckNhbGxiYWNrSGFuZGxlclNlcnZpY2UsXG4gICAgICAgIFN0YXRlVmFsaWRhdGlvbkNhbGxiYWNrSGFuZGxlclNlcnZpY2UsXG4gICAgICAgIFJlZnJlc2hTZXNzaW9uQ2FsbGJhY2tIYW5kbGVyU2VydmljZSxcbiAgICAgICAgUmVmcmVzaFRva2VuQ2FsbGJhY2tIYW5kbGVyU2VydmljZSxcbiAgICAgICAgQ29kZUZsb3dDYWxsYmFja0hhbmRsZXJTZXJ2aWNlLFxuICAgICAgICBJbXBsaWNpdEZsb3dDYWxsYmFja0hhbmRsZXJTZXJ2aWNlLFxuICAgICAgICBQYXJMb2dpblNlcnZpY2UsXG4gICAgICAgIFBvcFVwTG9naW5TZXJ2aWNlLFxuICAgICAgICBTdGFuZGFyZExvZ2luU2VydmljZSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IEFic3RyYWN0U2VjdXJpdHlTdG9yYWdlLFxuICAgICAgICAgIHVzZUNsYXNzOiB0b2tlbi5zdG9yYWdlIHx8IEJyb3dzZXJTdG9yYWdlU2VydmljZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBUeXBlPFQ+ID0gbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVDtcblxuZXhwb3J0IGludGVyZmFjZSBUb2tlbiB7XG4gIHN0b3JhZ2U/OiBUeXBlPGFueT47XG59XG4iXX0=

@@ -16,3 +16,3 @@ import { Injectable } from '@angular/core';

export class ImplicitFlowCallbackService {
constructor(flowsService, configurationProvider, router, flowsDataService, intervallService) {
constructor(flowsService, configurationProvider, router, flowsDataService, intervalService) {
this.flowsService = flowsService;

@@ -22,3 +22,3 @@ this.configurationProvider = configurationProvider;

this.flowsDataService = flowsDataService;
this.intervallService = intervallService;
this.intervalService = intervalService;
}

@@ -33,3 +33,3 @@ authorizedImplicitFlowCallback(hash) {

this.flowsDataService.resetSilentRenewRunning();
this.intervallService.stopPeriodicallTokenCheck();
this.intervalService.stopPeriodicallTokenCheck();
if (!this.configurationProvider.openIDConfiguration.triggerAuthorizationResultEvent && !isRenewProcess) {

@@ -53,2 +53,2 @@ this.router.navigate([this.configurationProvider.openIDConfiguration.unauthorizedRoute]);

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wbGljaXQtZmxvdy1jYWxsYmFjay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXV0aC1vaWRjLWNsaWVudC9zcmMvIiwic291cmNlcyI6WyJsaWIvY2FsbGJhY2svaW1wbGljaXQtZmxvdy1jYWxsYmFjay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFHdkQsTUFBTSxPQUFPLDJCQUEyQjtJQUN0QyxZQUNVLFlBQTBCLEVBQzFCLHFCQUE0QyxFQUM1QyxNQUFjLEVBQ2QsZ0JBQWtDLEVBQ2xDLGdCQUFrQztRQUpsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFDekMsQ0FBQztJQUVKLDhCQUE4QixDQUFDLElBQWE7UUFDMUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDcEUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDN0QsR0FBRyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQywrQkFBK0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLEVBQUU7Z0JBQ3RILElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7YUFDdkY7UUFDSCxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLCtCQUErQixJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUN0RyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7YUFDMUY7WUFDRCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7OztZQTNCRixVQUFVLFNBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzs7WUFIekIsWUFBWTtZQUZaLHFCQUFxQjtZQUhyQixNQUFNO1lBSU4sZ0JBQWdCO1lBRWhCLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uUHJvdmlkZXIgfSBmcm9tICcuLi9jb25maWcvY29uZmlnLnByb3ZpZGVyJztcbmltcG9ydCB7IEZsb3dzRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9mbG93cy9mbG93cy1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmxvd3NTZXJ2aWNlIH0gZnJvbSAnLi4vZmxvd3MvZmxvd3Muc2VydmljZSc7XG5pbXBvcnQgeyBJbnRlcnZhbGxTZXJ2aWNlIH0gZnJvbSAnLi9pbnRlcnZhbGwuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgSW1wbGljaXRGbG93Q2FsbGJhY2tTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmbG93c1NlcnZpY2U6IEZsb3dzU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25Qcm92aWRlcjogQ29uZmlndXJhdGlvblByb3ZpZGVyLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBmbG93c0RhdGFTZXJ2aWNlOiBGbG93c0RhdGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW50ZXJ2YWxsU2VydmljZTogSW50ZXJ2YWxsU2VydmljZVxuICApIHt9XG5cbiAgYXV0aG9yaXplZEltcGxpY2l0Rmxvd0NhbGxiYWNrKGhhc2g/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBpc1JlbmV3UHJvY2VzcyA9IHRoaXMuZmxvd3NEYXRhU2VydmljZS5pc1NpbGVudFJlbmV3UnVubmluZygpO1xuICAgIHJldHVybiB0aGlzLmZsb3dzU2VydmljZS5wcm9jZXNzSW1wbGljaXRGbG93Q2FsbGJhY2soaGFzaCkucGlwZShcbiAgICAgIHRhcCgoY2FsbGJhY2tDb250ZXh0KSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbi50cmlnZ2VyQXV0aG9yaXphdGlvblJlc3VsdEV2ZW50ICYmICFjYWxsYmFja0NvbnRleHQuaXNSZW5ld1Byb2Nlc3MpIHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbi5wb3N0TG9naW5Sb3V0ZV0pO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuZmxvd3NEYXRhU2VydmljZS5yZXNldFNpbGVudFJlbmV3UnVubmluZygpO1xuICAgICAgICB0aGlzLmludGVydmFsbFNlcnZpY2Uuc3RvcFBlcmlvZGljYWxsVG9rZW5DaGVjaygpO1xuICAgICAgICBpZiAoIXRoaXMuY29uZmlndXJhdGlvblByb3ZpZGVyLm9wZW5JRENvbmZpZ3VyYXRpb24udHJpZ2dlckF1dGhvcml6YXRpb25SZXN1bHRFdmVudCAmJiAhaXNSZW5ld1Byb2Nlc3MpIHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbi51bmF1dGhvcml6ZWRSb3V0ZV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wbGljaXQtZmxvdy1jYWxsYmFjay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXV0aC1vaWRjLWNsaWVudC9zcmMvIiwic291cmNlcyI6WyJsaWIvY2FsbGJhY2svaW1wbGljaXQtZmxvdy1jYWxsYmFjay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFHdkQsTUFBTSxPQUFPLDJCQUEyQjtJQUN0QyxZQUNVLFlBQTBCLEVBQzFCLHFCQUE0QyxFQUM1QyxNQUFjLEVBQ2QsZ0JBQWtDLEVBQ2xDLGVBQWlDO1FBSmpDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsb0JBQWUsR0FBZixlQUFlLENBQWtCO0lBQ3hDLENBQUM7SUFFSiw4QkFBOEIsQ0FBQyxJQUFhO1FBQzFDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3BFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQzdELEdBQUcsQ0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsbUJBQW1CLENBQUMsK0JBQStCLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFO2dCQUN0SCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO2FBQ3ZGO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsbUJBQW1CLENBQUMsK0JBQStCLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3RHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQzthQUMxRjtZQUNELE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzs7O1lBM0JGLFVBQVUsU0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OztZQUh6QixZQUFZO1lBRloscUJBQXFCO1lBSHJCLE1BQU07WUFJTixnQkFBZ0I7WUFFaEIsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25Qcm92aWRlciB9IGZyb20gJy4uL2NvbmZpZy9jb25maWcucHJvdmlkZXInO1xuaW1wb3J0IHsgRmxvd3NEYXRhU2VydmljZSB9IGZyb20gJy4uL2Zsb3dzL2Zsb3dzLWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBGbG93c1NlcnZpY2UgfSBmcm9tICcuLi9mbG93cy9mbG93cy5zZXJ2aWNlJztcbmltcG9ydCB7IEludGVydmFsbFNlcnZpY2UgfSBmcm9tICcuL2ludGVydmFsbC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBJbXBsaWNpdEZsb3dDYWxsYmFja1NlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZsb3dzU2VydmljZTogRmxvd3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblByb3ZpZGVyOiBDb25maWd1cmF0aW9uUHJvdmlkZXIsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGZsb3dzRGF0YVNlcnZpY2U6IEZsb3dzRGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnRlcnZhbFNlcnZpY2U6IEludGVydmFsbFNlcnZpY2VcbiAgKSB7fVxuXG4gIGF1dGhvcml6ZWRJbXBsaWNpdEZsb3dDYWxsYmFjayhoYXNoPzogc3RyaW5nKSB7XG4gICAgY29uc3QgaXNSZW5ld1Byb2Nlc3MgPSB0aGlzLmZsb3dzRGF0YVNlcnZpY2UuaXNTaWxlbnRSZW5ld1J1bm5pbmcoKTtcbiAgICByZXR1cm4gdGhpcy5mbG93c1NlcnZpY2UucHJvY2Vzc0ltcGxpY2l0Rmxvd0NhbGxiYWNrKGhhc2gpLnBpcGUoXG4gICAgICB0YXAoKGNhbGxiYWNrQ29udGV4dCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuY29uZmlndXJhdGlvblByb3ZpZGVyLm9wZW5JRENvbmZpZ3VyYXRpb24udHJpZ2dlckF1dGhvcml6YXRpb25SZXN1bHRFdmVudCAmJiAhY2FsbGJhY2tDb250ZXh0LmlzUmVuZXdQcm9jZXNzKSB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMuY29uZmlndXJhdGlvblByb3ZpZGVyLm9wZW5JRENvbmZpZ3VyYXRpb24ucG9zdExvZ2luUm91dGVdKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmZsb3dzRGF0YVNlcnZpY2UucmVzZXRTaWxlbnRSZW5ld1J1bm5pbmcoKTtcbiAgICAgICAgdGhpcy5pbnRlcnZhbFNlcnZpY2Uuc3RvcFBlcmlvZGljYWxsVG9rZW5DaGVjaygpO1xuICAgICAgICBpZiAoIXRoaXMuY29uZmlndXJhdGlvblByb3ZpZGVyLm9wZW5JRENvbmZpZ3VyYXRpb24udHJpZ2dlckF1dGhvcml6YXRpb25SZXN1bHRFdmVudCAmJiAhaXNSZW5ld1Byb2Nlc3MpIHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbi51bmF1dGhvcml6ZWRSb3V0ZV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19

@@ -7,3 +7,3 @@ import { Injectable } from '@angular/core';

import { FlowsDataService } from '../flows/flows-data.service';
import { FlowsService } from '../flows/flows.service';
import { ResetAuthDataService } from '../flows/reset-auth-data.service';
import { RefreshSessionIframeService } from '../iframe/refresh-session-iframe.service';

@@ -17,3 +17,3 @@ import { LoggerService } from '../logging/logger.service';

import * as i0 from "@angular/core";
import * as i1 from "../flows/flows.service";
import * as i1 from "../flows/reset-auth-data.service";
import * as i2 from "../utils/flowHelper/flow-helper.service";

@@ -30,4 +30,4 @@ import * as i3 from "../config/config.provider";

export class PeriodicallyTokenCheckService {
constructor(flowsService, flowHelper, configurationProvider, flowsDataService, loggerService, userService, authStateService, refreshSessionIframeService, refreshSessionRefreshTokenService, intervalService, storagePersistanceService) {
this.flowsService = flowsService;
constructor(resetAuthDataService, flowHelper, configurationProvider, flowsDataService, loggerService, userService, authStateService, refreshSessionIframeService, refreshSessionRefreshTokenService, intervalService, storagePersistanceService) {
this.resetAuthDataService = resetAuthDataService;
this.flowHelper = flowHelper;

@@ -64,3 +64,3 @@ this.configurationProvider = configurationProvider;

if (!this.configurationProvider.openIDConfiguration.silentRenew) {
this.flowsService.resetAuthorizationData();
this.resetAuthDataService.resetAuthorizationData();
return of(null);

@@ -93,3 +93,3 @@ }

}
PeriodicallyTokenCheckService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PeriodicallyTokenCheckService_Factory() { return new PeriodicallyTokenCheckService(i0.ɵɵinject(i1.FlowsService), i0.ɵɵinject(i2.FlowHelper), i0.ɵɵinject(i3.ConfigurationProvider), i0.ɵɵinject(i4.FlowsDataService), i0.ɵɵinject(i5.LoggerService), i0.ɵɵinject(i6.UserService), i0.ɵɵinject(i7.AuthStateService), i0.ɵɵinject(i8.RefreshSessionIframeService), i0.ɵɵinject(i9.RefreshSessionRefreshTokenService), i0.ɵɵinject(i10.IntervallService), i0.ɵɵinject(i11.StoragePersistanceService)); }, token: PeriodicallyTokenCheckService, providedIn: "root" });
PeriodicallyTokenCheckService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PeriodicallyTokenCheckService_Factory() { return new PeriodicallyTokenCheckService(i0.ɵɵinject(i1.ResetAuthDataService), i0.ɵɵinject(i2.FlowHelper), i0.ɵɵinject(i3.ConfigurationProvider), i0.ɵɵinject(i4.FlowsDataService), i0.ɵɵinject(i5.LoggerService), i0.ɵɵinject(i6.UserService), i0.ɵɵinject(i7.AuthStateService), i0.ɵɵinject(i8.RefreshSessionIframeService), i0.ɵɵinject(i9.RefreshSessionRefreshTokenService), i0.ɵɵinject(i10.IntervallService), i0.ɵɵinject(i11.StoragePersistanceService)); }, token: PeriodicallyTokenCheckService, providedIn: "root" });
PeriodicallyTokenCheckService.decorators = [

@@ -99,3 +99,3 @@ { type: Injectable, args: [{ providedIn: 'root' },] }

PeriodicallyTokenCheckService.ctorParameters = () => [
{ type: FlowsService },
{ type: ResetAuthDataService },
{ type: FlowHelper },

@@ -112,2 +112,2 @@ { type: ConfigurationProvider },

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyaW9kaWNhbGx5LXRva2VuLWNoZWNrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdXRoLW9pZGMtY2xpZW50L3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jYWxsYmFjay9wZXJpb2RpY2FsbHktdG9rZW4tY2hlY2suc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBRzVGLE1BQU0sT0FBTyw2QkFBNkI7SUFDeEMsWUFDVSxZQUEwQixFQUMxQixVQUFz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LENBQUMsaUNBQWlDLENBQUMsK0JBQStCLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDN0Y7WUFFRCxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqRixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxDQUFDLGVBQWUsQ0FBQyx5QkFBeUIsR0FBRyxrQkFBa0I7YUFDaEUsSUFBSSxDQUNILFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUNoRCxPQUFPLFVBQVUsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxDQUNSLEdBQUcsRUFBRTtZQUNILElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7WUFDdEUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLHNDQUFzQyxFQUFFLEVBQUU7Z0JBQzVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO2FBQ2pEO1FBQ0gsQ0FBQyxFQUNELENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQ0YsQ0FBQztJQUNOLENBQUM7Ozs7WUF2RkYsVUFBVSxTQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7O1lBVHpCLFlBQVk7WUFLWixVQUFVO1lBUFYscUJBQXFCO1lBQ3JCLGdCQUFnQjtZQUdoQixhQUFhO1lBRWIsV0FBVztZQVBYLGdCQUFnQjtZQUloQiwyQkFBMkI7WUFNM0IsaUNBQWlDO1lBRGpDLGdCQUFnQjtZQUhoQix5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXV0aFN0YXRlU2VydmljZSB9IGZyb20gJy4uL2F1dGhTdGF0ZS9hdXRoLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblByb3ZpZGVyIH0gZnJvbSAnLi4vY29uZmlnL2NvbmZpZy5wcm92aWRlcic7XG5pbXBvcnQgeyBGbG93c0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vZmxvd3MvZmxvd3MtZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dzU2VydmljZSB9IGZyb20gJy4uL2Zsb3dzL2Zsb3dzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVmcmVzaFNlc3Npb25JZnJhbWVTZXJ2aWNlIH0gZnJvbSAnLi4vaWZyYW1lL3JlZnJlc2gtc2Vzc2lvbi1pZnJhbWUuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nZ2luZy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmFnZS9zdG9yYWdlLXBlcnNpc3RhbmNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuLi91c2VyRGF0YS91c2VyLXNlcnZpY2UnO1xuaW1wb3J0IHsgRmxvd0hlbHBlciB9IGZyb20gJy4uL3V0aWxzL2Zsb3dIZWxwZXIvZmxvdy1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBJbnRlcnZhbGxTZXJ2aWNlIH0gZnJvbSAnLi9pbnRlcnZhbGwuc2VydmljZSc7XG5pbXBvcnQgeyBSZWZyZXNoU2Vzc2lvblJlZnJlc2hUb2tlblNlcnZpY2UgfSBmcm9tICcuL3JlZnJlc2gtc2Vzc2lvbi1yZWZyZXNoLXRva2VuLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFBlcmlvZGljYWxseVRva2VuQ2hlY2tTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmbG93c1NlcnZpY2U6IEZsb3dzU2VydmljZSxcbiAgICBwcml2YXRlIGZsb3dIZWxwZXI6IEZsb3dIZWxwZXIsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uUHJvdmlkZXI6IENvbmZpZ3VyYXRpb25Qcm92aWRlcixcbiAgICBwcml2YXRlIGZsb3dzRGF0YVNlcnZpY2U6IEZsb3dzRGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2dnZXJTZXJ2aWNlOiBMb2dnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXV0aFN0YXRlU2VydmljZTogQXV0aFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlZnJlc2hTZXNzaW9uSWZyYW1lU2VydmljZTogUmVmcmVzaFNlc3Npb25JZnJhbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVmcmVzaFNlc3Npb25SZWZyZXNoVG9rZW5TZXJ2aWNlOiBSZWZyZXNoU2Vzc2lvblJlZnJlc2hUb2tlblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnRlcnZhbFNlcnZpY2U6IEludGVydmFsbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlOiBTdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlXG4gICkge31cblxuICBzdGFydFRva2VuVmFsaWRhdGlvblBlcmlvZGljYWxseShyZXBlYXRBZnRlclNlY29uZHM6IG51bWJlcikge1xuICAgIGlmICghIXRoaXMuaW50ZXJ2YWxTZXJ2aWNlLnJ1blRva2VuVmFsaWRhdGlvblJ1bm5pbmcgfHwgIXRoaXMuY29uZmlndXJhdGlvblByb3ZpZGVyLm9wZW5JRENvbmZpZ3VyYXRpb24uc2lsZW50UmVuZXcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoYHN0YXJ0aW5nIHRva2VuIHZhbGlkYXRpb24gY2hlY2sgZXZlcnkgJHtyZXBlYXRBZnRlclNlY29uZHN9c2ApO1xuXG4gICAgY29uc3QgcGVyaW9kaWNhbGx5Q2hlY2skID0gdGhpcy5pbnRlcnZhbFNlcnZpY2Uuc3RhcnRQZXJpb2RpY1Rva2VuQ2hlY2socmVwZWF0QWZ0ZXJTZWNvbmRzKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgY29uc3QgaWRUb2tlbiA9IHRoaXMuYXV0aFN0YXRlU2VydmljZS5nZXRJZFRva2VuKCk7XG4gICAgICAgIGNvbnN0IGlzU2lsZW50UmVuZXdSdW5uaW5nID0gdGhpcy5mbG93c0RhdGFTZXJ2aWNlLmlzU2lsZW50UmVuZXdSdW5uaW5nKCk7XG4gICAgICAgIGNvbnN0IHVzZXJEYXRhRnJvbVN0b3JlID0gdGhpcy51c2VyU2VydmljZS5nZXRVc2VyRGF0YUZyb21TdG9yZSgpO1xuXG4gICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZyhcbiAgICAgICAgICBgQ2hlY2tpbmc6IHNpbGVudFJlbmV3UnVubmluZzogJHtpc1NpbGVudFJlbmV3UnVubmluZ30gaWRfdG9rZW46ICR7ISFpZFRva2VufSB1c2VyRGF0YTogJHshIXVzZXJEYXRhRnJvbVN0b3JlfWBcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBzaG91bGRCZUV4ZWN1dGVkID0gdXNlckRhdGFGcm9tU3RvcmUgJiYgIWlzU2lsZW50UmVuZXdSdW5uaW5nICYmIGlkVG9rZW47XG5cbiAgICAgICAgaWYgKCFzaG91bGRCZUV4ZWN1dGVkKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaWRUb2tlbkhhc0V4cGlyZWQgPSB0aGlzLmF1dGhTdGF0ZVNlcnZpY2UuaGFzSWRUb2tlbkV4cGlyZWQoKTtcbiAgICAgICAgY29uc3QgYWNjZXNzVG9rZW5IYXNFeHBpcmVkID0gdGhpcy5hdXRoU3RhdGVTZXJ2aWNlLmhhc0FjY2Vzc1Rva2VuRXhwaXJlZElmRXhwaXJ5RXhpc3RzKCk7XG5cbiAgICAgICAgaWYgKCFpZFRva2VuSGFzRXhwaXJlZCAmJiAhYWNjZXNzVG9rZW5IYXNFeHBpcmVkKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZ3VyYXRpb25Qcm92aWRlci5vcGVuSURDb25maWd1cmF0aW9uLnNpbGVudFJlbmV3KSB7XG4gICAgICAgICAgdGhpcy5mbG93c1NlcnZpY2UucmVzZXRBdXRob3JpemF0aW9uRGF0YSgpO1xuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1Zygnc3RhcnRpbmcgc2lsZW50IHJlbmV3Li4uJyk7XG5cbiAgICAgICAgdGhpcy5mbG93c0RhdGFTZXJ2aWNlLnNldFNpbGVudFJlbmV3UnVubmluZygpO1xuXG4gICAgICAgIC8vIFJldHJpZXZlIER5bmFtaWNhbGx5IFNldCBDdXN0b20gUGFyYW1zXG4gICAgICAgIGNvbnN0IGN1c3RvbVBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIH0gPSB0aGlzLnN0b3JhZ2VQZXJzaXN0YW5jZVNlcnZpY2UucmVhZChcbiAgICAgICAgICAnc3RvcmFnZUN1c3RvbVJlcXVlc3RQYXJhbXMnXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMuZmxvd0hlbHBlci5pc0N1cnJlbnRGbG93Q29kZUZsb3dXaXRoUmVmcmVzaFRva2VucygpKSB7XG4gICAgICAgICAgLy8gUmVmcmVzaCBTZXNzaW9uIHVzaW5nIFJlZnJlc2ggdG9rZW5zXG4gICAgICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFNlc3Npb25SZWZyZXNoVG9rZW5TZXJ2aWNlLnJlZnJlc2hTZXNzaW9uV2l0aFJlZnJlc2hUb2tlbnMoY3VzdG9tUGFyYW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnJlZnJlc2hTZXNzaW9uSWZyYW1lU2VydmljZS5yZWZyZXNoU2Vzc2lvbldpdGhJZnJhbWUoY3VzdG9tUGFyYW1zKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuaW50ZXJ2YWxTZXJ2aWNlLnJ1blRva2VuVmFsaWRhdGlvblJ1bm5pbmcgPSBwZXJpb2RpY2FsbHlDaGVjayRcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmZsb3dzRGF0YVNlcnZpY2UucmVzZXRTaWxlbnRSZW5ld1J1bm5pbmcoKTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigncGVyaW9kaWNhbGx5IGNoZWNrIGZhaWxlZCcpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1Zygnc2lsZW50IHJlbmV3LCBwZXJpb2RpYyBjaGVjayBmaW5pc2hlZCEnKTtcbiAgICAgICAgICBpZiAodGhpcy5mbG93SGVscGVyLmlzQ3VycmVudEZsb3dDb2RlRmxvd1dpdGhSZWZyZXNoVG9rZW5zKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZmxvd3NEYXRhU2VydmljZS5yZXNldFNpbGVudFJlbmV3UnVubmluZygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dFcnJvcignc2lsZW50IHJlbmV3IGZhaWxlZCEnLCBlcnIpO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyaW9kaWNhbGx5LXRva2VuLWNoZWNrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdXRoLW9pZGMtY2xpZW50L3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jYWxsYmFjay9wZXJpb2RpY2FsbHktdG9rZW4tY2hlY2suc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDeEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDdkYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFHNUYsTUFBTSxPQUFPLDZCQUE2QjtJQUN4QyxZQUNVLG9CQUEwQyxFQUMxQyxVQUFzQixFQUN0QixxQkFBNEMsRUFDNUMsZ0JBQWtDLEVBQ2xDLGFBQTRCLEVBQzVCLFdBQXdCLEVBQ3hCLGdCQUFrQyxFQUNsQywyQkFBd0QsRUFDeEQsaUNBQW9FLEVBQ3BFLGVBQWlDLEVBQ2pDLHlCQUFvRDtRQVZwRCx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE2QjtRQUN4RCxzQ0FBaUMsR0FBakMsaUNBQWlDLENBQW1DO1FBQ3BFLG9CQUFlLEdBQWYsZUFBZSxDQUFrQjtRQUNqQyw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO0lBQzNELENBQUM7SUFFSixnQ0FBZ0MsQ0FBQyxrQkFBMEI7UUFDekQsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyx5QkFBeUIsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUU7WUFDbkgsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMseUNBQXlDLGtCQUFrQixHQUFHLENBQUMsQ0FBQztRQUU1RixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsdUJBQXVCLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQzlGLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbkQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUMxRSxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUVsRSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FDekIsaUNBQWlDLG9CQUFvQixjQUFjLENBQUMsQ0FBQyxPQUFPLGNBQWMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQ2hILENBQUM7WUFFRixNQUFNLGdCQUFnQixHQUFHLGlCQUFpQixJQUFJLENBQUMsb0JBQW9CLElBQUksT0FBTyxDQUFDO1lBRS9FLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDckIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDakI7WUFFRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BFLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1DQUFtQyxFQUFFLENBQUM7WUFFMUYsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMscUJBQXFCLEVBQUU7Z0JBQ2hELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2pCO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUU7Z0JBQy9ELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2dCQUNuRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNqQjtZQUVELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLDBCQUEwQixDQUFDLENBQUM7WUFFeEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFFOUMseUNBQXlDO1lBQ3pDLE1BQU0sWUFBWSxHQUFpRCxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUNwRyw0QkFBNEIsQ0FDN0IsQ0FBQztZQUVGLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQ0FBc0MsRUFBRSxFQUFFO2dCQUM1RCx1Q0FBdUM7Z0JBQ3ZDLE9BQU8sSUFBSSxDQUFDLGlDQUFpQyxDQUFDLCtCQUErQixDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQzdGO1lBRUQsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUMsd0JBQXdCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakYsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLElBQUksQ0FBQyxlQUFlLENBQUMseUJBQXlCLEdBQUcsa0JBQWtCO2FBQ2hFLElBQUksQ0FDSCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDaEQsT0FBTyxVQUFVLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsQ0FDUixHQUFHLEVBQUU7WUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1lBQ3RFLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQ0FBc0MsRUFBRSxFQUFFO2dCQUM1RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLEVBQUUsQ0FBQzthQUNqRDtRQUNILENBQUMsRUFDRCxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUNGLENBQUM7SUFDTixDQUFDOzs7O1lBdkZGLFVBQVUsU0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OztZQVR6QixvQkFBb0I7WUFLcEIsVUFBVTtZQVBWLHFCQUFxQjtZQUNyQixnQkFBZ0I7WUFHaEIsYUFBYTtZQUViLFdBQVc7WUFQWCxnQkFBZ0I7WUFJaEIsMkJBQTJCO1lBTTNCLGlDQUFpQztZQURqQyxnQkFBZ0I7WUFIaEIseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEF1dGhTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9hdXRoU3RhdGUvYXV0aC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25Qcm92aWRlciB9IGZyb20gJy4uL2NvbmZpZy9jb25maWcucHJvdmlkZXInO1xuaW1wb3J0IHsgRmxvd3NEYXRhU2VydmljZSB9IGZyb20gJy4uL2Zsb3dzL2Zsb3dzLWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBSZXNldEF1dGhEYXRhU2VydmljZSB9IGZyb20gJy4uL2Zsb3dzL3Jlc2V0LWF1dGgtZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZnJlc2hTZXNzaW9uSWZyYW1lU2VydmljZSB9IGZyb20gJy4uL2lmcmFtZS9yZWZyZXNoLXNlc3Npb24taWZyYW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uL2xvZ2dpbmcvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZSB9IGZyb20gJy4uL3N0b3JhZ2Uvc3RvcmFnZS1wZXJzaXN0YW5jZS5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vdXNlckRhdGEvdXNlci1zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dIZWxwZXIgfSBmcm9tICcuLi91dGlscy9mbG93SGVscGVyL2Zsb3ctaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW50ZXJ2YWxsU2VydmljZSB9IGZyb20gJy4vaW50ZXJ2YWxsLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVmcmVzaFNlc3Npb25SZWZyZXNoVG9rZW5TZXJ2aWNlIH0gZnJvbSAnLi9yZWZyZXNoLXNlc3Npb24tcmVmcmVzaC10b2tlbi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQZXJpb2RpY2FsbHlUb2tlbkNoZWNrU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVzZXRBdXRoRGF0YVNlcnZpY2U6IFJlc2V0QXV0aERhdGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0hlbHBlcjogRmxvd0hlbHBlcixcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25Qcm92aWRlcjogQ29uZmlndXJhdGlvblByb3ZpZGVyLFxuICAgIHByaXZhdGUgZmxvd3NEYXRhU2VydmljZTogRmxvd3NEYXRhU2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlclNlcnZpY2U6IExvZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdXRoU3RhdGVTZXJ2aWNlOiBBdXRoU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVmcmVzaFNlc3Npb25JZnJhbWVTZXJ2aWNlOiBSZWZyZXNoU2Vzc2lvbklmcmFtZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWZyZXNoU2Vzc2lvblJlZnJlc2hUb2tlblNlcnZpY2U6IFJlZnJlc2hTZXNzaW9uUmVmcmVzaFRva2VuU2VydmljZSxcbiAgICBwcml2YXRlIGludGVydmFsU2VydmljZTogSW50ZXJ2YWxsU2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JhZ2VQZXJzaXN0YW5jZVNlcnZpY2U6IFN0b3JhZ2VQZXJzaXN0YW5jZVNlcnZpY2VcbiAgKSB7fVxuXG4gIHN0YXJ0VG9rZW5WYWxpZGF0aW9uUGVyaW9kaWNhbGx5KHJlcGVhdEFmdGVyU2Vjb25kczogbnVtYmVyKSB7XG4gICAgaWYgKCEhdGhpcy5pbnRlcnZhbFNlcnZpY2UucnVuVG9rZW5WYWxpZGF0aW9uUnVubmluZyB8fCAhdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbi5zaWxlbnRSZW5ldykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1Zyhgc3RhcnRpbmcgdG9rZW4gdmFsaWRhdGlvbiBjaGVjayBldmVyeSAke3JlcGVhdEFmdGVyU2Vjb25kc31zYCk7XG5cbiAgICBjb25zdCBwZXJpb2RpY2FsbHlDaGVjayQgPSB0aGlzLmludGVydmFsU2VydmljZS5zdGFydFBlcmlvZGljVG9rZW5DaGVjayhyZXBlYXRBZnRlclNlY29uZHMpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICBjb25zdCBpZFRva2VuID0gdGhpcy5hdXRoU3RhdGVTZXJ2aWNlLmdldElkVG9rZW4oKTtcbiAgICAgICAgY29uc3QgaXNTaWxlbnRSZW5ld1J1bm5pbmcgPSB0aGlzLmZsb3dzRGF0YVNlcnZpY2UuaXNTaWxlbnRSZW5ld1J1bm5pbmcoKTtcbiAgICAgICAgY29uc3QgdXNlckRhdGFGcm9tU3RvcmUgPSB0aGlzLnVzZXJTZXJ2aWNlLmdldFVzZXJEYXRhRnJvbVN0b3JlKCk7XG5cbiAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKFxuICAgICAgICAgIGBDaGVja2luZzogc2lsZW50UmVuZXdSdW5uaW5nOiAke2lzU2lsZW50UmVuZXdSdW5uaW5nfSBpZF90b2tlbjogJHshIWlkVG9rZW59IHVzZXJEYXRhOiAkeyEhdXNlckRhdGFGcm9tU3RvcmV9YFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHNob3VsZEJlRXhlY3V0ZWQgPSB1c2VyRGF0YUZyb21TdG9yZSAmJiAhaXNTaWxlbnRSZW5ld1J1bm5pbmcgJiYgaWRUb2tlbjtcblxuICAgICAgICBpZiAoIXNob3VsZEJlRXhlY3V0ZWQpIHtcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpZFRva2VuSGFzRXhwaXJlZCA9IHRoaXMuYXV0aFN0YXRlU2VydmljZS5oYXNJZFRva2VuRXhwaXJlZCgpO1xuICAgICAgICBjb25zdCBhY2Nlc3NUb2tlbkhhc0V4cGlyZWQgPSB0aGlzLmF1dGhTdGF0ZVNlcnZpY2UuaGFzQWNjZXNzVG9rZW5FeHBpcmVkSWZFeHBpcnlFeGlzdHMoKTtcblxuICAgICAgICBpZiAoIWlkVG9rZW5IYXNFeHBpcmVkICYmICFhY2Nlc3NUb2tlbkhhc0V4cGlyZWQpIHtcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuY29uZmlndXJhdGlvblByb3ZpZGVyLm9wZW5JRENvbmZpZ3VyYXRpb24uc2lsZW50UmVuZXcpIHtcbiAgICAgICAgICB0aGlzLnJlc2V0QXV0aERhdGFTZXJ2aWNlLnJlc2V0QXV0aG9yaXphdGlvbkRhdGEoKTtcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ3N0YXJ0aW5nIHNpbGVudCByZW5ldy4uLicpO1xuXG4gICAgICAgIHRoaXMuZmxvd3NEYXRhU2VydmljZS5zZXRTaWxlbnRSZW5ld1J1bm5pbmcoKTtcblxuICAgICAgICAvLyBSZXRyaWV2ZSBEeW5hbWljYWxseSBTZXQgQ3VzdG9tIFBhcmFtc1xuICAgICAgICBjb25zdCBjdXN0b21QYXJhbXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB9ID0gdGhpcy5zdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlLnJlYWQoXG4gICAgICAgICAgJ3N0b3JhZ2VDdXN0b21SZXF1ZXN0UGFyYW1zJ1xuICAgICAgICApO1xuXG4gICAgICAgIGlmICh0aGlzLmZsb3dIZWxwZXIuaXNDdXJyZW50Rmxvd0NvZGVGbG93V2l0aFJlZnJlc2hUb2tlbnMoKSkge1xuICAgICAgICAgIC8vIFJlZnJlc2ggU2Vzc2lvbiB1c2luZyBSZWZyZXNoIHRva2Vuc1xuICAgICAgICAgIHJldHVybiB0aGlzLnJlZnJlc2hTZXNzaW9uUmVmcmVzaFRva2VuU2VydmljZS5yZWZyZXNoU2Vzc2lvbldpdGhSZWZyZXNoVG9rZW5zKGN1c3RvbVBhcmFtcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5yZWZyZXNoU2Vzc2lvbklmcmFtZVNlcnZpY2UucmVmcmVzaFNlc3Npb25XaXRoSWZyYW1lKGN1c3RvbVBhcmFtcyk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmludGVydmFsU2VydmljZS5ydW5Ub2tlblZhbGlkYXRpb25SdW5uaW5nID0gcGVyaW9kaWNhbGx5Q2hlY2skXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5mbG93c0RhdGFTZXJ2aWNlLnJlc2V0U2lsZW50UmVuZXdSdW5uaW5nKCk7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoJ3BlcmlvZGljYWxseSBjaGVjayBmYWlsZWQnKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ3NpbGVudCByZW5ldywgcGVyaW9kaWMgY2hlY2sgZmluaXNoZWQhJyk7XG4gICAgICAgICAgaWYgKHRoaXMuZmxvd0hlbHBlci5pc0N1cnJlbnRGbG93Q29kZUZsb3dXaXRoUmVmcmVzaFRva2VucygpKSB7XG4gICAgICAgICAgICB0aGlzLmZsb3dzRGF0YVNlcnZpY2UucmVzZXRTaWxlbnRSZW5ld1J1bm5pbmcoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRXJyb3IoJ3NpbGVudCByZW5ldyBmYWlsZWQhJywgZXJyKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxufVxuIl19

@@ -5,2 +5,3 @@ import { Injectable } from '@angular/core';

import { FlowsService } from '../flows/flows.service';
import { ResetAuthDataService } from '../flows/reset-auth-data.service';
import { LoggerService } from '../logging/logger.service';

@@ -10,9 +11,11 @@ import { IntervallService } from './intervall.service';

import * as i1 from "../logging/logger.service";
import * as i2 from "../flows/flows.service";
import * as i3 from "./intervall.service";
import * as i2 from "../flows/reset-auth-data.service";
import * as i3 from "../flows/flows.service";
import * as i4 from "./intervall.service";
export class RefreshSessionRefreshTokenService {
constructor(loggerService, flowsService, intervallService) {
constructor(loggerService, resetAuthDataService, flowsService, intervalService) {
this.loggerService = loggerService;
this.resetAuthDataService = resetAuthDataService;
this.flowsService = flowsService;
this.intervallService = intervallService;
this.intervalService = intervalService;
}

@@ -22,4 +25,4 @@ refreshSessionWithRefreshTokens(customParams) {

return this.flowsService.processRefreshToken(customParams).pipe(catchError((error) => {
this.intervallService.stopPeriodicallTokenCheck();
this.flowsService.resetAuthorizationData();
this.intervalService.stopPeriodicallTokenCheck();
this.resetAuthDataService.resetAuthorizationData();
return throwError(error);

@@ -29,3 +32,3 @@ }));

}
RefreshSessionRefreshTokenService.ɵprov = i0.ɵɵdefineInjectable({ factory: function RefreshSessionRefreshTokenService_Factory() { return new RefreshSessionRefreshTokenService(i0.ɵɵinject(i1.LoggerService), i0.ɵɵinject(i2.FlowsService), i0.ɵɵinject(i3.IntervallService)); }, token: RefreshSessionRefreshTokenService, providedIn: "root" });
RefreshSessionRefreshTokenService.ɵprov = i0.ɵɵdefineInjectable({ factory: function RefreshSessionRefreshTokenService_Factory() { return new RefreshSessionRefreshTokenService(i0.ɵɵinject(i1.LoggerService), i0.ɵɵinject(i2.ResetAuthDataService), i0.ɵɵinject(i3.FlowsService), i0.ɵɵinject(i4.IntervallService)); }, token: RefreshSessionRefreshTokenService, providedIn: "root" });
RefreshSessionRefreshTokenService.decorators = [

@@ -36,5 +39,6 @@ { type: Injectable, args: [{ providedIn: 'root' },] }

{ type: LoggerService },
{ type: ResetAuthDataService },
{ type: FlowsService },
{ type: IntervallService }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmcmVzaC1zZXNzaW9uLXJlZnJlc2gtdG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWF1dGgtb2lkYy1jbGllbnQvc3JjLyIsInNvdXJjZXMiOlsibGliL2NhbGxiYWNrL3JlZnJlc2gtc2Vzc2lvbi1yZWZyZXNoLXRva2VuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7OztBQUd2RCxNQUFNLE9BQU8saUNBQWlDO0lBQzVDLFlBQW9CLGFBQTRCLEVBQVUsWUFBMEIsRUFBVSxnQkFBa0M7UUFBNUcsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFBRyxDQUFDO0lBRXBJLCtCQUErQixDQUFDLFlBQTJEO1FBQ3pGLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFFL0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FDN0QsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQzNDLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzs7O1lBZEYsVUFBVSxTQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7O1lBSHpCLGFBQWE7WUFEYixZQUFZO1lBRVosZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZsb3dzU2VydmljZSB9IGZyb20gJy4uL2Zsb3dzL2Zsb3dzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uL2xvZ2dpbmcvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW50ZXJ2YWxsU2VydmljZSB9IGZyb20gJy4vaW50ZXJ2YWxsLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFJlZnJlc2hTZXNzaW9uUmVmcmVzaFRva2VuU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9nZ2VyU2VydmljZTogTG9nZ2VyU2VydmljZSwgcHJpdmF0ZSBmbG93c1NlcnZpY2U6IEZsb3dzU2VydmljZSwgcHJpdmF0ZSBpbnRlcnZhbGxTZXJ2aWNlOiBJbnRlcnZhbGxTZXJ2aWNlKSB7fVxuXG4gIHJlZnJlc2hTZXNzaW9uV2l0aFJlZnJlc2hUb2tlbnMoY3VzdG9tUGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIH0pIHtcbiAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ0JFR0lOIHJlZnJlc2ggc2Vzc2lvbiBBdXRob3JpemUnKTtcblxuICAgIHJldHVybiB0aGlzLmZsb3dzU2VydmljZS5wcm9jZXNzUmVmcmVzaFRva2VuKGN1c3RvbVBhcmFtcykucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuaW50ZXJ2YWxsU2VydmljZS5zdG9wUGVyaW9kaWNhbGxUb2tlbkNoZWNrKCk7XG4gICAgICAgIHRoaXMuZmxvd3NTZXJ2aWNlLnJlc2V0QXV0aG9yaXphdGlvbkRhdGEoKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmcmVzaC1zZXNzaW9uLXJlZnJlc2gtdG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWF1dGgtb2lkYy1jbGllbnQvc3JjLyIsInNvdXJjZXMiOlsibGliL2NhbGxiYWNrL3JlZnJlc2gtc2Vzc2lvbi1yZWZyZXNoLXRva2VuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7QUFHdkQsTUFBTSxPQUFPLGlDQUFpQztJQUM1QyxZQUNVLGFBQTRCLEVBQzVCLG9CQUEwQyxFQUMxQyxZQUEwQixFQUMxQixlQUFpQztRQUhqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG9CQUFlLEdBQWYsZUFBZSxDQUFrQjtJQUN4QyxDQUFDO0lBRUosK0JBQStCLENBQUMsWUFBMkQ7UUFDekYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUUvRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUM3RCxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLHlCQUF5QixFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDbkQsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7Ozs7WUFuQkYsVUFBVSxTQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7O1lBSHpCLGFBQWE7WUFEYixvQkFBb0I7WUFEcEIsWUFBWTtZQUdaLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGbG93c1NlcnZpY2UgfSBmcm9tICcuLi9mbG93cy9mbG93cy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc2V0QXV0aERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vZmxvd3MvcmVzZXQtYXV0aC1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uL2xvZ2dpbmcvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW50ZXJ2YWxsU2VydmljZSB9IGZyb20gJy4vaW50ZXJ2YWxsLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFJlZnJlc2hTZXNzaW9uUmVmcmVzaFRva2VuU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbG9nZ2VyU2VydmljZTogTG9nZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIHJlc2V0QXV0aERhdGFTZXJ2aWNlOiBSZXNldEF1dGhEYXRhU2VydmljZSxcbiAgICBwcml2YXRlIGZsb3dzU2VydmljZTogRmxvd3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW50ZXJ2YWxTZXJ2aWNlOiBJbnRlcnZhbGxTZXJ2aWNlXG4gICkge31cblxuICByZWZyZXNoU2Vzc2lvbldpdGhSZWZyZXNoVG9rZW5zKGN1c3RvbVBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB9KSB7XG4gICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCdCRUdJTiByZWZyZXNoIHNlc3Npb24gQXV0aG9yaXplJyk7XG5cbiAgICByZXR1cm4gdGhpcy5mbG93c1NlcnZpY2UucHJvY2Vzc1JlZnJlc2hUb2tlbihjdXN0b21QYXJhbXMpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmludGVydmFsU2VydmljZS5zdG9wUGVyaW9kaWNhbGxUb2tlbkNoZWNrKCk7XG4gICAgICAgIHRoaXMucmVzZXRBdXRoRGF0YVNlcnZpY2UucmVzZXRBdXRob3JpemF0aW9uRGF0YSgpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==

@@ -114,2 +114,2 @@ import { Injectable } from '@angular/core';

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmcmVzaC1zZXNzaW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdXRoLW9pZGMtY2xpZW50L3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jYWxsYmFjay9yZWZyZXNoLXNlc3Npb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7O0FBRTVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsQ0FBQztBQUVwQyxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQ1UsVUFBc0IsRUFD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QUFDO0lBQ0osQ0FBQzs7OztZQWhHRixVQUFVLFNBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzs7WUFKekIsVUFBVTtZQUxWLHFCQUFxQjtZQUNyQixnQkFBZ0I7WUFHaEIsYUFBYTtZQURiLGtCQUFrQjtZQUxsQixnQkFBZ0I7WUFDaEIsb0JBQW9CO1lBR3BCLDJCQUEyQjtZQUkzQixpQ0FBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IsIFRpbWVvdXRFcnJvciwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgbWVyZ2VNYXAsIHJldHJ5V2hlbiwgc3dpdGNoTWFwLCB0YWtlLCB0aW1lb3V0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXV0aFN0YXRlU2VydmljZSB9IGZyb20gJy4uL2F1dGhTdGF0ZS9hdXRoLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aFdlbGxLbm93blNlcnZpY2UgfSBmcm9tICcuLi9jb25maWcvYXV0aC13ZWxsLWtub3duLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblByb3ZpZGVyIH0gZnJvbSAnLi4vY29uZmlnL2NvbmZpZy5wcm92aWRlcic7XG5pbXBvcnQgeyBGbG93c0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vZmxvd3MvZmxvd3MtZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZnJlc2hTZXNzaW9uSWZyYW1lU2VydmljZSB9IGZyb20gJy4uL2lmcmFtZS9yZWZyZXNoLXNlc3Npb24taWZyYW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lsZW50UmVuZXdTZXJ2aWNlIH0gZnJvbSAnLi4vaWZyYW1lL3NpbGVudC1yZW5ldy5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi9sb2dnaW5nL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dIZWxwZXIgfSBmcm9tICcuLi91dGlscy9mbG93SGVscGVyL2Zsb3ctaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVmcmVzaFNlc3Npb25SZWZyZXNoVG9rZW5TZXJ2aWNlIH0gZnJvbSAnLi9yZWZyZXNoLXNlc3Npb24tcmVmcmVzaC10b2tlbi5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IE1BWF9SRVRSWV9BVFRFTVBUUyA9IDM7XG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFJlZnJlc2hTZXNzaW9uU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmxvd0hlbHBlcjogRmxvd0hlbHBlcixcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25Qcm92aWRlcjogQ29uZmlndXJhdGlvblByb3ZpZGVyLFxuICAgIHByaXZhdGUgZmxvd3NEYXRhU2VydmljZTogRmxvd3NEYXRhU2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlclNlcnZpY2U6IExvZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzaWxlbnRSZW5ld1NlcnZpY2U6IFNpbGVudFJlbmV3U2VydmljZSxcbiAgICBwcml2YXRlIGF1dGhTdGF0ZVNlcnZpY2U6IEF1dGhTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdXRoV2VsbEtub3duU2VydmljZTogQXV0aFdlbGxLbm93blNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWZyZXNoU2Vzc2lvbklmcmFtZVNlcnZpY2U6IFJlZnJlc2hTZXNzaW9uSWZyYW1lU2VydmljZSxcbiAgICBwcml2YXRlIHJlZnJlc2hTZXNzaW9uUmVmcmVzaFRva2VuU2VydmljZTogUmVmcmVzaFNlc3Npb25SZWZyZXNoVG9rZW5TZXJ2aWNlXG4gICkge31cblxuICBmb3JjZVJlZnJlc2hTZXNzaW9uKGN1c3RvbVBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB9KSB7XG4gICAgaWYgKHRoaXMuZmxvd0hlbHBlci5pc0N1cnJlbnRGbG93Q29kZUZsb3dXaXRoUmVmcmVzaFRva2VucygpKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGFydFJlZnJlc2hTZXNzaW9uKGN1c3RvbVBhcmFtcykucGlwZShcbiAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBpc0F1dGhlbnRpY2F0ZWQgPSB0aGlzLmF1dGhTdGF0ZVNlcnZpY2UuYXJlQXV0aFN0b3JhZ2VUb2tlbnNWYWxpZCgpO1xuICAgICAgICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGlkVG9rZW46IHRoaXMuYXV0aFN0YXRlU2VydmljZS5nZXRJZFRva2VuKCksXG4gICAgICAgICAgICAgIGFjY2Vzc1Rva2VuOiB0aGlzLmF1dGhTdGF0ZVNlcnZpY2UuZ2V0QWNjZXNzVG9rZW4oKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JrSm9pbihbXG4gICAgICB0aGlzLnN0YXJ0UmVmcmVzaFNlc3Npb24oY3VzdG9tUGFyYW1zKSxcbiAgICAgIHRoaXMuc2lsZW50UmVuZXdTZXJ2aWNlLnJlZnJlc2hTZXNzaW9uV2l0aElGcmFtZUNvbXBsZXRlZCQucGlwZSh0YWtlKDEpKSxcbiAgICBdKS5waXBlKFxuICAgICAgdGltZW91dCh0aGlzLmNvbmZpZ3VyYXRpb25Qcm92aWRlci5vcGVuSURDb25maWd1cmF0aW9uLnNpbGVudFJlbmV3VGltZW91dEluU2Vjb25kcyAqIDEwMDApLFxuICAgICAgcmV0cnlXaGVuKHRoaXMudGltZW91dFJldHJ5U3RyYXRlZ3kuYmluZCh0aGlzKSksXG4gICAgICBtYXAoKFtfLCBjYWxsYmFja0NvbnRleHRdKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzQXV0aGVudGljYXRlZCA9IHRoaXMuYXV0aFN0YXRlU2VydmljZS5hcmVBdXRoU3RvcmFnZVRva2Vuc1ZhbGlkKCk7XG4gICAgICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWRUb2tlbjogY2FsbGJhY2tDb250ZXh0Py5hdXRoUmVzdWx0Py5pZF90b2tlbixcbiAgICAgICAgICAgIGFjY2Vzc1Rva2VuOiBjYWxsYmFja0NvbnRleHQ/LmF1dGhSZXN1bHQ/LmFjY2Vzc190b2tlbixcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbiAgcHJpdmF0ZSBzdGFydFJlZnJlc2hTZXNzaW9uKGN1c3RvbVBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB9KSB7XG4gICAgY29uc3QgaXNTaWxlbnRSZW5ld1J1bm5pbmcgPSB0aGlzLmZsb3dzRGF0YVNlcnZpY2UuaXNTaWxlbnRSZW5ld1J1bm5pbmcoKTtcbiAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoYENoZWNraW5nOiBzaWxlbnRSZW5ld1J1bm5pbmc6ICR7aXNTaWxlbnRSZW5ld1J1bm5pbmd9YCk7XG4gICAgY29uc3Qgc2hvdWxkQmVFeGVjdXRlZCA9ICFpc1NpbGVudFJlbmV3UnVubmluZztcblxuICAgIGlmICghc2hvdWxkQmVFeGVjdXRlZCkge1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cblxuICAgIGNvbnN0IGF1dGhXZWxsa25vd25FbmRwb2ludEFkcmVzcyA9IHRoaXMuY29uZmlndXJhdGlvblByb3ZpZGVyLm9wZW5JRENvbmZpZ3VyYXRpb24/LmF1dGhXZWxsa25vd25FbmRwb2ludDtcblxuICAgIGlmICghYXV0aFdlbGxrbm93bkVuZHBvaW50QWRyZXNzKSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRXJyb3IoJ25vIGF1dGh3ZWxsa25vd25lbmRwb2ludCBnaXZlbiEnKTtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hdXRoV2VsbEtub3duU2VydmljZS5nZXRBdXRoV2VsbEtub3duRW5kUG9pbnRzKGF1dGhXZWxsa25vd25FbmRwb2ludEFkcmVzcykucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZmxvd3NEYXRhU2VydmljZS5zZXRTaWxlbnRSZW5ld1J1bm5pbmcoKTtcblxuICAgICAgICBpZiAodGhpcy5mbG93SGVscGVyLmlzQ3VycmVudEZsb3dDb2RlRmxvd1dpdGhSZWZyZXNoVG9rZW5zKCkpIHtcbiAgICAgICAgICAvLyBSZWZyZXNoIFNlc3Npb24gdXNpbmcgUmVmcmVzaCB0b2tlbnNcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWZyZXNoU2Vzc2lvblJlZnJlc2hUb2tlblNlcnZpY2UucmVmcmVzaFNlc3Npb25XaXRoUmVmcmVzaFRva2VucyhjdXN0b21QYXJhbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFNlc3Npb25JZnJhbWVTZXJ2aWNlLnJlZnJlc2hTZXNzaW9uV2l0aElmcmFtZShjdXN0b21QYXJhbXMpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB0aW1lb3V0UmV0cnlTdHJhdGVneShlcnJvckF0dGVtcHRzOiBPYnNlcnZhYmxlPGFueT4pIHtcbiAgICByZXR1cm4gZXJyb3JBdHRlbXB0cy5waXBlKFxuICAgICAgbWVyZ2VNYXAoKGVycm9yLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBzY2FsaW5nRHVyYXRpb24gPSAxMDAwO1xuICAgICAgICBjb25zdCBjdXJyZW50QXR0ZW1wdCA9IGluZGV4ICsgMTtcblxuICAgICAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIFRpbWVvdXRFcnJvcikgfHwgY3VycmVudEF0dGVtcHQgPiBNQVhfUkVUUllfQVRURU1QVFMpIHtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoYGZvcmNlUmVmcmVzaFNlc3Npb24gdGltZW91dC4gQXR0ZW1wdCAjJHtjdXJyZW50QXR0ZW1wdH1gKTtcblxuICAgICAgICB0aGlzLmZsb3dzRGF0YVNlcnZpY2UucmVzZXRTaWxlbnRSZW5ld1J1bm5pbmcoKTtcbiAgICAgICAgcmV0dXJuIHRpbWVyKGN1cnJlbnRBdHRlbXB0ICogc2NhbGluZ0R1cmF0aW9uKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmcmVzaC1zZXNzaW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdXRoLW9pZGMtY2xpZW50L3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jYWxsYmFjay9yZWZyZXNoLXNlc3Npb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7O0FBRTVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsQ0FBQztBQUVwQyxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQ1UsVUFBc0IsRUFD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QUFDO0lBQ0osQ0FBQzs7OztZQWpHRixVQUFVLFNBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzs7WUFKekIsVUFBVTtZQUxWLHFCQUFxQjtZQUNyQixnQkFBZ0I7WUFHaEIsYUFBYTtZQURiLGtCQUFrQjtZQUxsQixnQkFBZ0I7WUFDaEIsb0JBQW9CO1lBR3BCLDJCQUEyQjtZQUkzQixpQ0FBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IsIFRpbWVvdXRFcnJvciwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgbWVyZ2VNYXAsIHJldHJ5V2hlbiwgc3dpdGNoTWFwLCB0YWtlLCB0aW1lb3V0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXV0aFN0YXRlU2VydmljZSB9IGZyb20gJy4uL2F1dGhTdGF0ZS9hdXRoLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aFdlbGxLbm93blNlcnZpY2UgfSBmcm9tICcuLi9jb25maWcvYXV0aC13ZWxsLWtub3duLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblByb3ZpZGVyIH0gZnJvbSAnLi4vY29uZmlnL2NvbmZpZy5wcm92aWRlcic7XG5pbXBvcnQgeyBGbG93c0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vZmxvd3MvZmxvd3MtZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZnJlc2hTZXNzaW9uSWZyYW1lU2VydmljZSB9IGZyb20gJy4uL2lmcmFtZS9yZWZyZXNoLXNlc3Npb24taWZyYW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lsZW50UmVuZXdTZXJ2aWNlIH0gZnJvbSAnLi4vaWZyYW1lL3NpbGVudC1yZW5ldy5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi9sb2dnaW5nL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dIZWxwZXIgfSBmcm9tICcuLi91dGlscy9mbG93SGVscGVyL2Zsb3ctaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVmcmVzaFNlc3Npb25SZWZyZXNoVG9rZW5TZXJ2aWNlIH0gZnJvbSAnLi9yZWZyZXNoLXNlc3Npb24tcmVmcmVzaC10b2tlbi5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IE1BWF9SRVRSWV9BVFRFTVBUUyA9IDM7XG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFJlZnJlc2hTZXNzaW9uU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmxvd0hlbHBlcjogRmxvd0hlbHBlcixcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25Qcm92aWRlcjogQ29uZmlndXJhdGlvblByb3ZpZGVyLFxuICAgIHByaXZhdGUgZmxvd3NEYXRhU2VydmljZTogRmxvd3NEYXRhU2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlclNlcnZpY2U6IExvZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzaWxlbnRSZW5ld1NlcnZpY2U6IFNpbGVudFJlbmV3U2VydmljZSxcbiAgICBwcml2YXRlIGF1dGhTdGF0ZVNlcnZpY2U6IEF1dGhTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdXRoV2VsbEtub3duU2VydmljZTogQXV0aFdlbGxLbm93blNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWZyZXNoU2Vzc2lvbklmcmFtZVNlcnZpY2U6IFJlZnJlc2hTZXNzaW9uSWZyYW1lU2VydmljZSxcbiAgICBwcml2YXRlIHJlZnJlc2hTZXNzaW9uUmVmcmVzaFRva2VuU2VydmljZTogUmVmcmVzaFNlc3Npb25SZWZyZXNoVG9rZW5TZXJ2aWNlXG4gICkge31cblxuICBmb3JjZVJlZnJlc2hTZXNzaW9uKGN1c3RvbVBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB9KSB7XG4gICAgaWYgKHRoaXMuZmxvd0hlbHBlci5pc0N1cnJlbnRGbG93Q29kZUZsb3dXaXRoUmVmcmVzaFRva2VucygpKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGFydFJlZnJlc2hTZXNzaW9uKGN1c3RvbVBhcmFtcykucGlwZShcbiAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBpc0F1dGhlbnRpY2F0ZWQgPSB0aGlzLmF1dGhTdGF0ZVNlcnZpY2UuYXJlQXV0aFN0b3JhZ2VUb2tlbnNWYWxpZCgpO1xuICAgICAgICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGlkVG9rZW46IHRoaXMuYXV0aFN0YXRlU2VydmljZS5nZXRJZFRva2VuKCksXG4gICAgICAgICAgICAgIGFjY2Vzc1Rva2VuOiB0aGlzLmF1dGhTdGF0ZVNlcnZpY2UuZ2V0QWNjZXNzVG9rZW4oKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JrSm9pbihbXG4gICAgICB0aGlzLnN0YXJ0UmVmcmVzaFNlc3Npb24oY3VzdG9tUGFyYW1zKSxcbiAgICAgIHRoaXMuc2lsZW50UmVuZXdTZXJ2aWNlLnJlZnJlc2hTZXNzaW9uV2l0aElGcmFtZUNvbXBsZXRlZCQucGlwZSh0YWtlKDEpKSxcbiAgICBdKS5waXBlKFxuICAgICAgdGltZW91dCh0aGlzLmNvbmZpZ3VyYXRpb25Qcm92aWRlci5vcGVuSURDb25maWd1cmF0aW9uLnNpbGVudFJlbmV3VGltZW91dEluU2Vjb25kcyAqIDEwMDApLFxuICAgICAgcmV0cnlXaGVuKHRoaXMudGltZW91dFJldHJ5U3RyYXRlZ3kuYmluZCh0aGlzKSksXG4gICAgICBtYXAoKFtfLCBjYWxsYmFja0NvbnRleHRdKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzQXV0aGVudGljYXRlZCA9IHRoaXMuYXV0aFN0YXRlU2VydmljZS5hcmVBdXRoU3RvcmFnZVRva2Vuc1ZhbGlkKCk7XG4gICAgICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWRUb2tlbjogY2FsbGJhY2tDb250ZXh0Py5hdXRoUmVzdWx0Py5pZF90b2tlbixcbiAgICAgICAgICAgIGFjY2Vzc1Rva2VuOiBjYWxsYmFja0NvbnRleHQ/LmF1dGhSZXN1bHQ/LmFjY2Vzc190b2tlbixcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0UmVmcmVzaFNlc3Npb24oY3VzdG9tUGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIH0pIHtcbiAgICBjb25zdCBpc1NpbGVudFJlbmV3UnVubmluZyA9IHRoaXMuZmxvd3NEYXRhU2VydmljZS5pc1NpbGVudFJlbmV3UnVubmluZygpO1xuICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZyhgQ2hlY2tpbmc6IHNpbGVudFJlbmV3UnVubmluZzogJHtpc1NpbGVudFJlbmV3UnVubmluZ31gKTtcbiAgICBjb25zdCBzaG91bGRCZUV4ZWN1dGVkID0gIWlzU2lsZW50UmVuZXdSdW5uaW5nO1xuXG4gICAgaWYgKCFzaG91bGRCZUV4ZWN1dGVkKSB7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuXG4gICAgY29uc3QgYXV0aFdlbGxrbm93bkVuZHBvaW50QWRyZXNzID0gdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbj8uYXV0aFdlbGxrbm93bkVuZHBvaW50O1xuXG4gICAgaWYgKCFhdXRoV2VsbGtub3duRW5kcG9pbnRBZHJlc3MpIHtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dFcnJvcignbm8gYXV0aHdlbGxrbm93bmVuZHBvaW50IGdpdmVuIScpO1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmF1dGhXZWxsS25vd25TZXJ2aWNlLmdldEF1dGhXZWxsS25vd25FbmRQb2ludHMoYXV0aFdlbGxrbm93bkVuZHBvaW50QWRyZXNzKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgdGhpcy5mbG93c0RhdGFTZXJ2aWNlLnNldFNpbGVudFJlbmV3UnVubmluZygpO1xuXG4gICAgICAgIGlmICh0aGlzLmZsb3dIZWxwZXIuaXNDdXJyZW50Rmxvd0NvZGVGbG93V2l0aFJlZnJlc2hUb2tlbnMoKSkge1xuICAgICAgICAgIC8vIFJlZnJlc2ggU2Vzc2lvbiB1c2luZyBSZWZyZXNoIHRva2Vuc1xuICAgICAgICAgIHJldHVybiB0aGlzLnJlZnJlc2hTZXNzaW9uUmVmcmVzaFRva2VuU2VydmljZS5yZWZyZXNoU2Vzc2lvbldpdGhSZWZyZXNoVG9rZW5zKGN1c3RvbVBhcmFtcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5yZWZyZXNoU2Vzc2lvbklmcmFtZVNlcnZpY2UucmVmcmVzaFNlc3Npb25XaXRoSWZyYW1lKGN1c3RvbVBhcmFtcyk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHRpbWVvdXRSZXRyeVN0cmF0ZWd5KGVycm9yQXR0ZW1wdHM6IE9ic2VydmFibGU8YW55Pikge1xuICAgIHJldHVybiBlcnJvckF0dGVtcHRzLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoZXJyb3IsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHNjYWxpbmdEdXJhdGlvbiA9IDEwMDA7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRBdHRlbXB0ID0gaW5kZXggKyAxO1xuXG4gICAgICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgVGltZW91dEVycm9yKSB8fCBjdXJyZW50QXR0ZW1wdCA+IE1BWF9SRVRSWV9BVFRFTVBUUykge1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZyhgZm9yY2VSZWZyZXNoU2Vzc2lvbiB0aW1lb3V0LiBBdHRlbXB0ICMke2N1cnJlbnRBdHRlbXB0fWApO1xuXG4gICAgICAgIHRoaXMuZmxvd3NEYXRhU2VydmljZS5yZXNldFNpbGVudFJlbmV3UnVubmluZygpO1xuICAgICAgICByZXR1cm4gdGltZXIoY3VycmVudEF0dGVtcHQgKiBzY2FsaW5nRHVyYXRpb24pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=

@@ -13,3 +13,3 @@ import { DOCUMENT } from '@angular/common';

import { LoggerService } from './logging/logger.service';
import { PopUpService } from './login/popup.service';
import { PopUpService } from './login/popup/popup.service';
import { UserService } from './userData/user-service';

@@ -96,2 +96,2 @@ export class CheckAuthService {

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXV0aC1vaWRjLWNsaWVudC9zcmMvIiwic291cmNlcyI6WyJsaWIvY2hlY2stYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM1RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUd0RCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLFlBQ3FDLEdBQVEsRUFDbkMsbUJBQXdDLEVBQ3hDLGtCQUFzQyxFQUN0QyxXQUF3QixFQUN4QixhQUE0QixF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Y29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXV0aFN0YXRlU2VydmljZSB9IGZyb20gJy4vYXV0aFN0YXRlL2F1dGgtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBDYWxsYmFja1NlcnZpY2UgfSBmcm9tICcuL2NhbGxiYWNrL2NhbGxiYWNrLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVyaW9kaWNhbGx5VG9rZW5DaGVja1NlcnZpY2UgfSBmcm9tICcuL2NhbGxiYWNrL3BlcmlvZGljYWxseS10b2tlbi1jaGVjay5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZnJlc2hTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vY2FsbGJhY2svcmVmcmVzaC1zZXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblByb3ZpZGVyIH0gZnJvbSAnLi9jb25maWcvY29uZmlnLnByb3ZpZGVyJztcbmltcG9ydCB7IENoZWNrU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL2lmcmFtZS9jaGVjay1zZXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lsZW50UmVuZXdTZXJ2aWNlIH0gZnJvbSAnLi9pZnJhbWUvc2lsZW50LXJlbmV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4vbG9nZ2luZy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQb3BVcFNlcnZpY2UgfSBmcm9tICcuL2xvZ2luL3BvcHVwLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuL3VzZXJEYXRhL3VzZXItc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDaGVja0F1dGhTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBkb2M6IGFueSxcbiAgICBwcml2YXRlIGNoZWNrU2Vzc2lvblNlcnZpY2U6IENoZWNrU2Vzc2lvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzaWxlbnRSZW5ld1NlcnZpY2U6IFNpbGVudFJlbmV3U2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlclNlcnZpY2U6IExvZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uUHJvdmlkZXI6IENvbmZpZ3VyYXRpb25Qcm92aWRlcixcbiAgICBwcml2YXRlIGF1dGhTdGF0ZVNlcnZpY2U6IEF1dGhTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjYWxsYmFja1NlcnZpY2U6IENhbGxiYWNrU2VydmljZSxcbiAgICBwcml2YXRlIHJlZnJlc2hTZXNzaW9uU2VydmljZTogUmVmcmVzaFNlc3Npb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVyaW9kaWNhbGx5VG9rZW5DaGVja1NlcnZpY2U6IFBlcmlvZGljYWxseVRva2VuQ2hlY2tTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9wdXBTZXJ2aWNlOiBQb3BVcFNlcnZpY2VcbiAgKSB7fVxuXG4gIGNoZWNrQXV0aCh1cmw/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAoIXRoaXMuY29uZmlndXJhdGlvblByb3ZpZGVyLmhhc1ZhbGlkQ29uZmlnKCkpIHtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dFcnJvcignUGxlYXNlIHByb3ZpZGUgYSBjb25maWd1cmF0aW9uIGJlZm9yZSBzZXR0aW5nIHVwIHRoZSBtb2R1bGUnKTtcbiAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgfVxuXG4gICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCdTVFMgc2VydmVyOiAnICsgdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbi5zdHNTZXJ2ZXIpO1xuXG4gICAgY29uc3QgY3VycmVudFVybCA9IHVybCB8fCB0aGlzLmRvYy5kZWZhdWx0Vmlldy5sb2NhdGlvbi50b1N0cmluZygpO1xuXG4gICAgaWYgKHRoaXMucG9wdXBTZXJ2aWNlLmlzQ3VycmVudGx5SW5Qb3B1cCgpKSB7XG4gICAgICB0aGlzLnBvcHVwU2VydmljZS5zZW5kTWVzc2FnZVRvTWFpbldpbmRvdyhjdXJyZW50VXJsKTtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG5cbiAgICBjb25zdCBpc0NhbGxiYWNrID0gdGhpcy5jYWxsYmFja1NlcnZpY2UuaXNDYWxsYmFjayhjdXJyZW50VXJsKTtcblxuICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZygnY3VycmVudFVybCB0byBjaGVjayBhdXRoIHdpdGg6ICcsIGN1cnJlbnRVcmwpO1xuXG4gICAgY29uc3QgY2FsbGJhY2skID0gaXNDYWxsYmFjayA/IHRoaXMuY2FsbGJhY2tTZXJ2aWNlLmhhbmRsZUNhbGxiYWNrQW5kRmlyZUV2ZW50cyhjdXJyZW50VXJsKSA6IG9mKG51bGwpO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrJC5waXBlKFxuICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgY29uc3QgaXNBdXRoZW50aWNhdGVkID0gdGhpcy5hdXRoU3RhdGVTZXJ2aWNlLmFyZUF1dGhTdG9yYWdlVG9rZW5zVmFsaWQoKTtcbiAgICAgICAgaWYgKGlzQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgIHRoaXMuc3RhcnRDaGVja1Nlc3Npb25BbmRWYWxpZGF0aW9uKCk7XG5cbiAgICAgICAgICBpZiAoIWlzQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIHRoaXMuYXV0aFN0YXRlU2VydmljZS5zZXRBdXRob3JpemVkQW5kRmlyZUV2ZW50KCk7XG4gICAgICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLnB1Ymxpc2hVc2VyRGF0YUlmRXhpc3RzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCdjaGVja0F1dGggY29tcGxldGVkIGZpcmVkIGV2ZW50cywgYXV0aDogJyArIGlzQXV0aGVudGljYXRlZCk7XG5cbiAgICAgICAgcmV0dXJuIGlzQXV0aGVudGljYXRlZDtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihmYWxzZSkpXG4gICAgKTtcbiAgfVxuXG4gIGNoZWNrQXV0aEluY2x1ZGluZ1NlcnZlcigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jaGVja0F1dGgoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChpc0F1dGhlbnRpY2F0ZWQpID0+IHtcbiAgICAgICAgaWYgKGlzQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgIHJldHVybiBvZihpc0F1dGhlbnRpY2F0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFNlc3Npb25TZXJ2aWNlLmZvcmNlUmVmcmVzaFNlc3Npb24oKS5waXBlKFxuICAgICAgICAgIG1hcCgocmVzdWx0KSA9PiAhIXJlc3VsdD8uaWRUb2tlbiAmJiAhIXJlc3VsdD8uYWNjZXNzVG9rZW4pLFxuICAgICAgICAgIHN3aXRjaE1hcCgoaXNBdXRoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNBdXRoKSB7XG4gICAgICAgICAgICAgIHRoaXMuc3RhcnRDaGVja1Nlc3Npb25BbmRWYWxpZGF0aW9uKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBvZihpc0F1dGgpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0Q2hlY2tTZXNzaW9uQW5kVmFsaWRhdGlvbigpIHtcbiAgICBpZiAodGhpcy5jaGVja1Nlc3Npb25TZXJ2aWNlLmlzQ2hlY2tTZXNzaW9uQ29uZmlndXJlZCgpKSB7XG4gICAgICB0aGlzLmNoZWNrU2Vzc2lvblNlcnZpY2Uuc3RhcnQoKTtcbiAgICB9XG5cbiAgICB0aGlzLnBlcmlvZGljYWxseVRva2VuQ2hlY2tTZXJ2aWNlLnN0YXJ0VG9rZW5WYWxpZGF0aW9uUGVyaW9kaWNhbGx5KFxuICAgICAgdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbi50b2tlblJlZnJlc2hJblNlY29uZHNcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuc2lsZW50UmVuZXdTZXJ2aWNlLmlzU2lsZW50UmVuZXdDb25maWd1cmVkKCkpIHtcbiAgICAgIHRoaXMuc2lsZW50UmVuZXdTZXJ2aWNlLmdldE9yQ3JlYXRlSWZyYW1lKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXV0aC1vaWRjLWNsaWVudC9zcmMvIiwic291cmNlcyI6WyJsaWIvY2hlY2stYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM1RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUd0RCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLFlBQ3FDLEdBQVEsRUFDbkMsbUJBQXdDLEVBQ3hDLGtCQUFzQyxFQUN0QyxXQUF3QixFQUN4QixhQUE0QixF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Y29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXV0aFN0YXRlU2VydmljZSB9IGZyb20gJy4vYXV0aFN0YXRlL2F1dGgtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBDYWxsYmFja1NlcnZpY2UgfSBmcm9tICcuL2NhbGxiYWNrL2NhbGxiYWNrLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVyaW9kaWNhbGx5VG9rZW5DaGVja1NlcnZpY2UgfSBmcm9tICcuL2NhbGxiYWNrL3BlcmlvZGljYWxseS10b2tlbi1jaGVjay5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZnJlc2hTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vY2FsbGJhY2svcmVmcmVzaC1zZXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblByb3ZpZGVyIH0gZnJvbSAnLi9jb25maWcvY29uZmlnLnByb3ZpZGVyJztcbmltcG9ydCB7IENoZWNrU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL2lmcmFtZS9jaGVjay1zZXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lsZW50UmVuZXdTZXJ2aWNlIH0gZnJvbSAnLi9pZnJhbWUvc2lsZW50LXJlbmV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4vbG9nZ2luZy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQb3BVcFNlcnZpY2UgfSBmcm9tICcuL2xvZ2luL3BvcHVwL3BvcHVwLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuL3VzZXJEYXRhL3VzZXItc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDaGVja0F1dGhTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBkb2M6IGFueSxcbiAgICBwcml2YXRlIGNoZWNrU2Vzc2lvblNlcnZpY2U6IENoZWNrU2Vzc2lvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzaWxlbnRSZW5ld1NlcnZpY2U6IFNpbGVudFJlbmV3U2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlclNlcnZpY2U6IExvZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uUHJvdmlkZXI6IENvbmZpZ3VyYXRpb25Qcm92aWRlcixcbiAgICBwcml2YXRlIGF1dGhTdGF0ZVNlcnZpY2U6IEF1dGhTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjYWxsYmFja1NlcnZpY2U6IENhbGxiYWNrU2VydmljZSxcbiAgICBwcml2YXRlIHJlZnJlc2hTZXNzaW9uU2VydmljZTogUmVmcmVzaFNlc3Npb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVyaW9kaWNhbGx5VG9rZW5DaGVja1NlcnZpY2U6IFBlcmlvZGljYWxseVRva2VuQ2hlY2tTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9wdXBTZXJ2aWNlOiBQb3BVcFNlcnZpY2VcbiAgKSB7fVxuXG4gIGNoZWNrQXV0aCh1cmw/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAoIXRoaXMuY29uZmlndXJhdGlvblByb3ZpZGVyLmhhc1ZhbGlkQ29uZmlnKCkpIHtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dFcnJvcignUGxlYXNlIHByb3ZpZGUgYSBjb25maWd1cmF0aW9uIGJlZm9yZSBzZXR0aW5nIHVwIHRoZSBtb2R1bGUnKTtcbiAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgfVxuXG4gICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCdTVFMgc2VydmVyOiAnICsgdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbi5zdHNTZXJ2ZXIpO1xuXG4gICAgY29uc3QgY3VycmVudFVybCA9IHVybCB8fCB0aGlzLmRvYy5kZWZhdWx0Vmlldy5sb2NhdGlvbi50b1N0cmluZygpO1xuXG4gICAgaWYgKHRoaXMucG9wdXBTZXJ2aWNlLmlzQ3VycmVudGx5SW5Qb3B1cCgpKSB7XG4gICAgICB0aGlzLnBvcHVwU2VydmljZS5zZW5kTWVzc2FnZVRvTWFpbldpbmRvdyhjdXJyZW50VXJsKTtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG5cbiAgICBjb25zdCBpc0NhbGxiYWNrID0gdGhpcy5jYWxsYmFja1NlcnZpY2UuaXNDYWxsYmFjayhjdXJyZW50VXJsKTtcblxuICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZygnY3VycmVudFVybCB0byBjaGVjayBhdXRoIHdpdGg6ICcsIGN1cnJlbnRVcmwpO1xuXG4gICAgY29uc3QgY2FsbGJhY2skID0gaXNDYWxsYmFjayA/IHRoaXMuY2FsbGJhY2tTZXJ2aWNlLmhhbmRsZUNhbGxiYWNrQW5kRmlyZUV2ZW50cyhjdXJyZW50VXJsKSA6IG9mKG51bGwpO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrJC5waXBlKFxuICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgY29uc3QgaXNBdXRoZW50aWNhdGVkID0gdGhpcy5hdXRoU3RhdGVTZXJ2aWNlLmFyZUF1dGhTdG9yYWdlVG9rZW5zVmFsaWQoKTtcbiAgICAgICAgaWYgKGlzQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgIHRoaXMuc3RhcnRDaGVja1Nlc3Npb25BbmRWYWxpZGF0aW9uKCk7XG5cbiAgICAgICAgICBpZiAoIWlzQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIHRoaXMuYXV0aFN0YXRlU2VydmljZS5zZXRBdXRob3JpemVkQW5kRmlyZUV2ZW50KCk7XG4gICAgICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLnB1Ymxpc2hVc2VyRGF0YUlmRXhpc3RzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCdjaGVja0F1dGggY29tcGxldGVkIGZpcmVkIGV2ZW50cywgYXV0aDogJyArIGlzQXV0aGVudGljYXRlZCk7XG5cbiAgICAgICAgcmV0dXJuIGlzQXV0aGVudGljYXRlZDtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihmYWxzZSkpXG4gICAgKTtcbiAgfVxuXG4gIGNoZWNrQXV0aEluY2x1ZGluZ1NlcnZlcigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jaGVja0F1dGgoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChpc0F1dGhlbnRpY2F0ZWQpID0+IHtcbiAgICAgICAgaWYgKGlzQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgIHJldHVybiBvZihpc0F1dGhlbnRpY2F0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFNlc3Npb25TZXJ2aWNlLmZvcmNlUmVmcmVzaFNlc3Npb24oKS5waXBlKFxuICAgICAgICAgIG1hcCgocmVzdWx0KSA9PiAhIXJlc3VsdD8uaWRUb2tlbiAmJiAhIXJlc3VsdD8uYWNjZXNzVG9rZW4pLFxuICAgICAgICAgIHN3aXRjaE1hcCgoaXNBdXRoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNBdXRoKSB7XG4gICAgICAgICAgICAgIHRoaXMuc3RhcnRDaGVja1Nlc3Npb25BbmRWYWxpZGF0aW9uKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBvZihpc0F1dGgpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0Q2hlY2tTZXNzaW9uQW5kVmFsaWRhdGlvbigpIHtcbiAgICBpZiAodGhpcy5jaGVja1Nlc3Npb25TZXJ2aWNlLmlzQ2hlY2tTZXNzaW9uQ29uZmlndXJlZCgpKSB7XG4gICAgICB0aGlzLmNoZWNrU2Vzc2lvblNlcnZpY2Uuc3RhcnQoKTtcbiAgICB9XG5cbiAgICB0aGlzLnBlcmlvZGljYWxseVRva2VuQ2hlY2tTZXJ2aWNlLnN0YXJ0VG9rZW5WYWxpZGF0aW9uUGVyaW9kaWNhbGx5KFxuICAgICAgdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbi50b2tlblJlZnJlc2hJblNlY29uZHNcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuc2lsZW50UmVuZXdTZXJ2aWNlLmlzU2lsZW50UmVuZXdDb25maWd1cmVkKCkpIHtcbiAgICAgIHRoaXMuc2lsZW50UmVuZXdTZXJ2aWNlLmdldE9yQ3JlYXRlSWZyYW1lKCk7XG4gICAgfVxuICB9XG59XG4iXX0=

@@ -20,2 +20,3 @@ import { Injectable } from '@angular/core';

introspectionEndpoint: wellKnownEndpoints.introspection_endpoint,
parEndpoint: wellKnownEndpoints.pushed_authorization_request_endpoint,
})));

@@ -37,2 +38,2 @@ }

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC13ZWxsLWtub3duLWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWF1dGgtb2lkYy1jbGllbnQvc3JjLyIsInNvdXJjZXMiOlsibGliL2NvbmZpZy9hdXRoLXdlbGwta25vd24tZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdsRCxNQUFNLGlCQUFpQixHQUFHLG1DQUFtQyxDQUFDO0FBRzlELE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsWUFBNkIsSUFBaUI7UUFBakIsU0FBSSxHQUFKLElBQUksQ0FBYTtJQUFHLENBQUM7SUFFbEQsNEJBQTRCLENBQUMscUJBQTZCO1FBQ3hELE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLHFCQUFxQixDQUFDLENBQUMsSUFBSSxDQUMxRCxHQUFHLENBQ0QsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQ3JCLENBQUM7WUFDQyxNQUFNLEVBQUUsa0JBQWtCLENBQUMsTUFBTTtZQUNqQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsUUFBUTtZQUNwQyxxQkFBcUIsRUFBRSxrQkFBa0IsQ0FBQyxzQkFBc0I7WUFDaEUsYUFBYSxFQUFFLGtCQUFrQixDQUFDLGNBQWM7WUFDaEQsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsaUJBQWlCO1lBQ3RELGtCQUFrQixFQUFFLGtCQUFrQixDQUFDLG9CQUFvQjtZQUMzRCxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxvQkFBb0I7WUFDM0Qsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUMsbUJBQW1CO1lBQzFELHFCQUFxQixFQUFFLGtCQUFrQixDQUFDLHNCQUFzQjtTQUN0QyxDQUFBLENBQy9CLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxpQkFBeUI7UUFDcEQsSUFBSSxHQUFHLEdBQUcsaUJBQWlCLENBQUM7UUFFNUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQ2xELEdBQUcsR0FBRyxHQUFHLGlCQUFpQixHQUFHLGlCQUFpQixFQUFFLENBQUM7U0FDbEQ7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7OztZQS9CRixVQUFVOzs7WUFMRixXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9hcGkvZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhXZWxsS25vd25FbmRwb2ludHMgfSBmcm9tICcuL2F1dGgtd2VsbC1rbm93bi1lbmRwb2ludHMnO1xuXG5jb25zdCBXRUxMX0tOT1dOX1NVRkZJWCA9IGAvLndlbGwta25vd24vb3BlbmlkLWNvbmZpZ3VyYXRpb25gO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aFdlbGxLbm93bkRhdGFTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBodHRwOiBEYXRhU2VydmljZSkge31cblxuICBnZXRXZWxsS25vd25FbmRQb2ludHNGcm9tVXJsKGF1dGhXZWxsa25vd25FbmRwb2ludDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0V2VsbEtub3duRG9jdW1lbnQoYXV0aFdlbGxrbm93bkVuZHBvaW50KS5waXBlKFxuICAgICAgbWFwKFxuICAgICAgICAod2VsbEtub3duRW5kcG9pbnRzKSA9PlxuICAgICAgICAgICh7XG4gICAgICAgICAgICBpc3N1ZXI6IHdlbGxLbm93bkVuZHBvaW50cy5pc3N1ZXIsXG4gICAgICAgICAgICBqd2tzVXJpOiB3ZWxsS25vd25FbmRwb2ludHMuandrc191cmksXG4gICAgICAgICAgICBhdXRob3JpemF0aW9uRW5kcG9pbnQ6IHdlbGxLbm93bkVuZHBvaW50cy5hdXRob3JpemF0aW9uX2VuZHBvaW50LFxuICAgICAgICAgICAgdG9rZW5FbmRwb2ludDogd2VsbEtub3duRW5kcG9pbnRzLnRva2VuX2VuZHBvaW50LFxuICAgICAgICAgICAgdXNlcmluZm9FbmRwb2ludDogd2VsbEtub3duRW5kcG9pbnRzLnVzZXJpbmZvX2VuZHBvaW50LFxuICAgICAgICAgICAgZW5kU2Vzc2lvbkVuZHBvaW50OiB3ZWxsS25vd25FbmRwb2ludHMuZW5kX3Nlc3Npb25fZW5kcG9pbnQsXG4gICAgICAgICAgICBjaGVja1Nlc3Npb25JZnJhbWU6IHdlbGxLbm93bkVuZHBvaW50cy5jaGVja19zZXNzaW9uX2lmcmFtZSxcbiAgICAgICAgICAgIHJldm9jYXRpb25FbmRwb2ludDogd2VsbEtub3duRW5kcG9pbnRzLnJldm9jYXRpb25fZW5kcG9pbnQsXG4gICAgICAgICAgICBpbnRyb3NwZWN0aW9uRW5kcG9pbnQ6IHdlbGxLbm93bkVuZHBvaW50cy5pbnRyb3NwZWN0aW9uX2VuZHBvaW50LFxuICAgICAgICAgIH0gYXMgQXV0aFdlbGxLbm93bkVuZHBvaW50cylcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRXZWxsS25vd25Eb2N1bWVudCh3ZWxsS25vd25FbmRwb2ludDogc3RyaW5nKSB7XG4gICAgbGV0IHVybCA9IHdlbGxLbm93bkVuZHBvaW50O1xuXG4gICAgaWYgKCF3ZWxsS25vd25FbmRwb2ludC5pbmNsdWRlcyhXRUxMX0tOT1dOX1NVRkZJWCkpIHtcbiAgICAgIHVybCA9IGAke3dlbGxLbm93bkVuZHBvaW50fSR7V0VMTF9LTk9XTl9TVUZGSVh9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHVybCk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC13ZWxsLWtub3duLWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWF1dGgtb2lkYy1jbGllbnQvc3JjLyIsInNvdXJjZXMiOlsibGliL2NvbmZpZy9hdXRoLXdlbGwta25vd24tZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdsRCxNQUFNLGlCQUFpQixHQUFHLG1DQUFtQyxDQUFDO0FBRzlELE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsWUFBNkIsSUFBaUI7UUFBakIsU0FBSSxHQUFKLElBQUksQ0FBYTtJQUFHLENBQUM7SUFFbEQsNEJBQTRCLENBQUMscUJBQTZCO1FBQ3hELE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLHFCQUFxQixDQUFDLENBQUMsSUFBSSxDQUMxRCxHQUFHLENBQ0QsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQ3JCLENBQUM7WUFDQyxNQUFNLEVBQUUsa0JBQWtCLENBQUMsTUFBTTtZQUNqQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsUUFBUTtZQUNwQyxxQkFBcUIsRUFBRSxrQkFBa0IsQ0FBQyxzQkFBc0I7WUFDaEUsYUFBYSxFQUFFLGtCQUFrQixDQUFDLGNBQWM7WUFDaEQsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsaUJBQWlCO1lBQ3RELGtCQUFrQixFQUFFLGtCQUFrQixDQUFDLG9CQUFvQjtZQUMzRCxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxvQkFBb0I7WUFDM0Qsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUMsbUJBQW1CO1lBQzFELHFCQUFxQixFQUFFLGtCQUFrQixDQUFDLHNCQUFzQjtZQUNoRSxXQUFXLEVBQUUsa0JBQWtCLENBQUMscUNBQXFDO1NBQzNDLENBQUEsQ0FDL0IsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLG9CQUFvQixDQUFDLGlCQUF5QjtRQUNwRCxJQUFJLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQztRQUU1QixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7WUFDbEQsR0FBRyxHQUFHLEdBQUcsaUJBQWlCLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztTQUNsRDtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQU0sR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQzs7O1lBaENGLFVBQVU7OztZQUxGLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4uL2FwaS9kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aFdlbGxLbm93bkVuZHBvaW50cyB9IGZyb20gJy4vYXV0aC13ZWxsLWtub3duLWVuZHBvaW50cyc7XG5cbmNvbnN0IFdFTExfS05PV05fU1VGRklYID0gYC8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbmA7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdXRoV2VsbEtub3duRGF0YVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGh0dHA6IERhdGFTZXJ2aWNlKSB7fVxuXG4gIGdldFdlbGxLbm93bkVuZFBvaW50c0Zyb21VcmwoYXV0aFdlbGxrbm93bkVuZHBvaW50OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRXZWxsS25vd25Eb2N1bWVudChhdXRoV2VsbGtub3duRW5kcG9pbnQpLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgICh3ZWxsS25vd25FbmRwb2ludHMpID0+XG4gICAgICAgICAgKHtcbiAgICAgICAgICAgIGlzc3Vlcjogd2VsbEtub3duRW5kcG9pbnRzLmlzc3VlcixcbiAgICAgICAgICAgIGp3a3NVcmk6IHdlbGxLbm93bkVuZHBvaW50cy5qd2tzX3VyaSxcbiAgICAgICAgICAgIGF1dGhvcml6YXRpb25FbmRwb2ludDogd2VsbEtub3duRW5kcG9pbnRzLmF1dGhvcml6YXRpb25fZW5kcG9pbnQsXG4gICAgICAgICAgICB0b2tlbkVuZHBvaW50OiB3ZWxsS25vd25FbmRwb2ludHMudG9rZW5fZW5kcG9pbnQsXG4gICAgICAgICAgICB1c2VyaW5mb0VuZHBvaW50OiB3ZWxsS25vd25FbmRwb2ludHMudXNlcmluZm9fZW5kcG9pbnQsXG4gICAgICAgICAgICBlbmRTZXNzaW9uRW5kcG9pbnQ6IHdlbGxLbm93bkVuZHBvaW50cy5lbmRfc2Vzc2lvbl9lbmRwb2ludCxcbiAgICAgICAgICAgIGNoZWNrU2Vzc2lvbklmcmFtZTogd2VsbEtub3duRW5kcG9pbnRzLmNoZWNrX3Nlc3Npb25faWZyYW1lLFxuICAgICAgICAgICAgcmV2b2NhdGlvbkVuZHBvaW50OiB3ZWxsS25vd25FbmRwb2ludHMucmV2b2NhdGlvbl9lbmRwb2ludCxcbiAgICAgICAgICAgIGludHJvc3BlY3Rpb25FbmRwb2ludDogd2VsbEtub3duRW5kcG9pbnRzLmludHJvc3BlY3Rpb25fZW5kcG9pbnQsXG4gICAgICAgICAgICBwYXJFbmRwb2ludDogd2VsbEtub3duRW5kcG9pbnRzLnB1c2hlZF9hdXRob3JpemF0aW9uX3JlcXVlc3RfZW5kcG9pbnQsXG4gICAgICAgICAgfSBhcyBBdXRoV2VsbEtub3duRW5kcG9pbnRzKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFdlbGxLbm93bkRvY3VtZW50KHdlbGxLbm93bkVuZHBvaW50OiBzdHJpbmcpIHtcbiAgICBsZXQgdXJsID0gd2VsbEtub3duRW5kcG9pbnQ7XG5cbiAgICBpZiAoIXdlbGxLbm93bkVuZHBvaW50LmluY2x1ZGVzKFdFTExfS05PV05fU1VGRklYKSkge1xuICAgICAgdXJsID0gYCR7d2VsbEtub3duRW5kcG9pbnR9JHtXRUxMX0tOT1dOX1NVRkZJWH1gO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4odXJsKTtcbiAgfVxufVxuIl19
export {};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC13ZWxsLWtub3duLWVuZHBvaW50cy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWF1dGgtb2lkYy1jbGllbnQvc3JjLyIsInNvdXJjZXMiOlsibGliL2NvbmZpZy9hdXRoLXdlbGwta25vd24tZW5kcG9pbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEF1dGhXZWxsS25vd25FbmRwb2ludHMge1xuICBpc3N1ZXI/OiBzdHJpbmc7XG4gIGp3a3NVcmk/OiBzdHJpbmc7XG4gIGF1dGhvcml6YXRpb25FbmRwb2ludD86IHN0cmluZztcbiAgdG9rZW5FbmRwb2ludD86IHN0cmluZztcbiAgdXNlcmluZm9FbmRwb2ludD86IHN0cmluZztcbiAgZW5kU2Vzc2lvbkVuZHBvaW50Pzogc3RyaW5nO1xuICBjaGVja1Nlc3Npb25JZnJhbWU/OiBzdHJpbmc7XG4gIHJldm9jYXRpb25FbmRwb2ludD86IHN0cmluZztcbiAgaW50cm9zcGVjdGlvbkVuZHBvaW50Pzogc3RyaW5nO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC13ZWxsLWtub3duLWVuZHBvaW50cy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWF1dGgtb2lkYy1jbGllbnQvc3JjLyIsInNvdXJjZXMiOlsibGliL2NvbmZpZy9hdXRoLXdlbGwta25vd24tZW5kcG9pbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEF1dGhXZWxsS25vd25FbmRwb2ludHMge1xuICBpc3N1ZXI/OiBzdHJpbmc7XG4gIGp3a3NVcmk/OiBzdHJpbmc7XG4gIGF1dGhvcml6YXRpb25FbmRwb2ludD86IHN0cmluZztcbiAgdG9rZW5FbmRwb2ludD86IHN0cmluZztcbiAgdXNlcmluZm9FbmRwb2ludD86IHN0cmluZztcbiAgZW5kU2Vzc2lvbkVuZHBvaW50Pzogc3RyaW5nO1xuICBjaGVja1Nlc3Npb25JZnJhbWU/OiBzdHJpbmc7XG4gIHJldm9jYXRpb25FbmRwb2ludD86IHN0cmluZztcbiAgaW50cm9zcGVjdGlvbkVuZHBvaW50Pzogc3RyaW5nO1xuICBwYXJFbmRwb2ludD86IHN0cmluZztcbn1cbiJdfQ==

@@ -28,2 +28,3 @@ import { Injectable } from '@angular/core';

currentConfig.useRefreshToken = false;
currentConfig.usePushedAuthorisationRequests = false;
}

@@ -38,2 +39,2 @@ }

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXV0aC1vaWRjLWNsaWVudC9zcmMvIiwic291cmNlcyI6WyJsaWIvY29uZmlnL2NvbmZpZy5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUlsRCxNQUFNLE9BQU8scUJBQXFCO0lBT2hDLFlBQW9CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQUcsQ0FBQztJQUoxRCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQywyQkFBMkIsSUFBSSxJQUFJLENBQUM7SUFDbEQsQ0FBQztJQUlELGNBQWM7UUFDWixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUM7SUFDNUMsQ0FBQztJQUVELFNBQVMsQ0FBQyxhQUFrQztRQUMxQyxJQUFJLENBQUMsMkJBQTJCLG1DQUFRLGNBQWMsR0FBSyxhQUFhLENBQUUsQ0FBQztRQUUzRSxJQUFJLGFBQWEsYUFBYixhQUFhLHVCQUFiLGFBQWEsQ0FBRSxPQUFPLEVBQUU7WUFDMUIsT0FBTyxDQUFDLElBQUksQ0FDVjswRUFDa0UsQ0FDbkUsQ0FBQztTQUNIO1FBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUV2RCxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQztJQUMxQyxDQUFDO0lBRU8sZUFBZSxDQUFDLGFBQWtDO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFO1lBQ3BDLGFBQWEsQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7WUFDeEMsYUFBYSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDbEMsYUFBYSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7U0FDdkM7SUFDSCxDQUFDOzs7WUFuQ0YsVUFBVTs7O1lBSkYsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGxhdGZvcm1Qcm92aWRlciB9IGZyb20gJy4uL3V0aWxzL3BsYXRmb3JtLXByb3ZpZGVyL3BsYXRmb3JtLnByb3ZpZGVyJztcbmltcG9ydCB7IERFRkFVTFRfQ09ORklHIH0gZnJvbSAnLi9kZWZhdWx0LWNvbmZpZyc7XG5pbXBvcnQgeyBPcGVuSWRDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9vcGVuaWQtY29uZmlndXJhdGlvbic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9uUHJvdmlkZXIge1xuICBwcml2YXRlIG9wZW5JZENvbmZpZ3VyYXRpb25JbnRlcm5hbDogT3BlbklkQ29uZmlndXJhdGlvbjtcblxuICBnZXQgb3BlbklEQ29uZmlndXJhdGlvbigpOiBPcGVuSWRDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5vcGVuSWRDb25maWd1cmF0aW9uSW50ZXJuYWwgfHwgbnVsbDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGxhdGZvcm1Qcm92aWRlcjogUGxhdGZvcm1Qcm92aWRlcikge31cblxuICBoYXNWYWxpZENvbmZpZygpIHtcbiAgICByZXR1cm4gISF0aGlzLm9wZW5JZENvbmZpZ3VyYXRpb25JbnRlcm5hbDtcbiAgfVxuXG4gIHNldENvbmZpZyhjb25maWd1cmF0aW9uOiBPcGVuSWRDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5vcGVuSWRDb25maWd1cmF0aW9uSW50ZXJuYWwgPSB7IC4uLkRFRkFVTFRfQ09ORklHLCAuLi5jb25maWd1cmF0aW9uIH07XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbj8uc3RvcmFnZSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgUExFQVNFIE5PVEU6IFRoZSBzdG9yYWdlIGluIHRoZSBjb25maWcgd2lsbCBiZSBkZXByZWNhdGVkIGluIGZ1dHVyZSB2ZXJzaW9uczpcbiAgICAgICAgICAgICAgICBQbGVhc2UgcGFzcyB0aGUgY3VzdG9tIHN0b3JhZ2UgaW4gZm9yUm9vdCgpIGFzIGRvY3VtZW50ZWRgXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuc2V0U3BlY2lhbENhc2VzKHRoaXMub3BlbklkQ29uZmlndXJhdGlvbkludGVybmFsKTtcblxuICAgIHJldHVybiB0aGlzLm9wZW5JZENvbmZpZ3VyYXRpb25JbnRlcm5hbDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U3BlY2lhbENhc2VzKGN1cnJlbnRDb25maWc6IE9wZW5JZENvbmZpZ3VyYXRpb24pIHtcbiAgICBpZiAoIXRoaXMucGxhdGZvcm1Qcm92aWRlci5pc0Jyb3dzZXIpIHtcbiAgICAgIGN1cnJlbnRDb25maWcuc3RhcnRDaGVja1Nlc3Npb24gPSBmYWxzZTtcbiAgICAgIGN1cnJlbnRDb25maWcuc2lsZW50UmVuZXcgPSBmYWxzZTtcbiAgICAgIGN1cnJlbnRDb25maWcudXNlUmVmcmVzaFRva2VuID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXV0aC1vaWRjLWNsaWVudC9zcmMvIiwic291cmNlcyI6WyJsaWIvY29uZmlnL2NvbmZpZy5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUlsRCxNQUFNLE9BQU8scUJBQXFCO0lBT2hDLFlBQW9CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQUcsQ0FBQztJQUoxRCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQywyQkFBMkIsSUFBSSxJQUFJLENBQUM7SUFDbEQsQ0FBQztJQUlELGNBQWM7UUFDWixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUM7SUFDNUMsQ0FBQztJQUVELFNBQVMsQ0FBQyxhQUFrQztRQUMxQyxJQUFJLENBQUMsMkJBQTJCLG1DQUFRLGNBQWMsR0FBSyxhQUFhLENBQUUsQ0FBQztRQUUzRSxJQUFJLGFBQWEsYUFBYixhQUFhLHVCQUFiLGFBQWEsQ0FBRSxPQUFPLEVBQUU7WUFDMUIsT0FBTyxDQUFDLElBQUksQ0FDVjswRUFDa0UsQ0FDbkUsQ0FBQztTQUNIO1FBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUV2RCxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQztJQUMxQyxDQUFDO0lBRU8sZUFBZSxDQUFDLGFBQWtDO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFO1lBQ3BDLGFBQWEsQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7WUFDeEMsYUFBYSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDbEMsYUFBYSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFDdEMsYUFBYSxDQUFDLDhCQUE4QixHQUFHLEtBQUssQ0FBQztTQUN0RDtJQUNILENBQUM7OztZQXBDRixVQUFVOzs7WUFKRixnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybVByb3ZpZGVyIH0gZnJvbSAnLi4vdXRpbHMvcGxhdGZvcm0tcHJvdmlkZXIvcGxhdGZvcm0ucHJvdmlkZXInO1xuaW1wb3J0IHsgREVGQVVMVF9DT05GSUcgfSBmcm9tICcuL2RlZmF1bHQtY29uZmlnJztcbmltcG9ydCB7IE9wZW5JZENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL29wZW5pZC1jb25maWd1cmF0aW9uJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25Qcm92aWRlciB7XG4gIHByaXZhdGUgb3BlbklkQ29uZmlndXJhdGlvbkludGVybmFsOiBPcGVuSWRDb25maWd1cmF0aW9uO1xuXG4gIGdldCBvcGVuSURDb25maWd1cmF0aW9uKCk6IE9wZW5JZENvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiB0aGlzLm9wZW5JZENvbmZpZ3VyYXRpb25JbnRlcm5hbCB8fCBudWxsO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwbGF0Zm9ybVByb3ZpZGVyOiBQbGF0Zm9ybVByb3ZpZGVyKSB7fVxuXG4gIGhhc1ZhbGlkQ29uZmlnKCkge1xuICAgIHJldHVybiAhIXRoaXMub3BlbklkQ29uZmlndXJhdGlvbkludGVybmFsO1xuICB9XG5cbiAgc2V0Q29uZmlnKGNvbmZpZ3VyYXRpb246IE9wZW5JZENvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLm9wZW5JZENvbmZpZ3VyYXRpb25JbnRlcm5hbCA9IHsgLi4uREVGQVVMVF9DT05GSUcsIC4uLmNvbmZpZ3VyYXRpb24gfTtcblxuICAgIGlmIChjb25maWd1cmF0aW9uPy5zdG9yYWdlKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBQTEVBU0UgTk9URTogVGhlIHN0b3JhZ2UgaW4gdGhlIGNvbmZpZyB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gZnV0dXJlIHZlcnNpb25zOlxuICAgICAgICAgICAgICAgIFBsZWFzZSBwYXNzIHRoZSBjdXN0b20gc3RvcmFnZSBpbiBmb3JSb290KCkgYXMgZG9jdW1lbnRlZGBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRTcGVjaWFsQ2FzZXModGhpcy5vcGVuSWRDb25maWd1cmF0aW9uSW50ZXJuYWwpO1xuXG4gICAgcmV0dXJuIHRoaXMub3BlbklkQ29uZmlndXJhdGlvbkludGVybmFsO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTcGVjaWFsQ2FzZXMoY3VycmVudENvbmZpZzogT3BlbklkQ29uZmlndXJhdGlvbikge1xuICAgIGlmICghdGhpcy5wbGF0Zm9ybVByb3ZpZGVyLmlzQnJvd3Nlcikge1xuICAgICAgY3VycmVudENvbmZpZy5zdGFydENoZWNrU2Vzc2lvbiA9IGZhbHNlO1xuICAgICAgY3VycmVudENvbmZpZy5zaWxlbnRSZW5ldyA9IGZhbHNlO1xuICAgICAgY3VycmVudENvbmZpZy51c2VSZWZyZXNoVG9rZW4gPSBmYWxzZTtcbiAgICAgIGN1cnJlbnRDb25maWcudXNlUHVzaGVkQXV0aG9yaXNhdGlvblJlcXVlc3RzID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iXX0=

@@ -17,2 +17,3 @@ import { LogLevel } from '../logging/log-level';

useRefreshToken: false,
usePushedAuthorisationRequests: false,
ignoreNonceAfterRefresh: false,

@@ -36,2 +37,2 @@ postLoginRoute: '/',

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdXRoLW9pZGMtY2xpZW50L3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb25maWcvZGVmYXVsdC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR2hELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBd0I7SUFDakQsU0FBUyxFQUFFLG9CQUFvQjtJQUMvQixxQkFBcUIsRUFBRSxFQUFFO0lBQ3pCLFdBQVcsRUFBRSxvQkFBb0I7SUFDakMsUUFBUSxFQUFFLFlBQVk7SUFDdEIsWUFBWSxFQUFFLE1BQU07SUFDcEIsS0FBSyxFQUFFLHNCQUFzQjtJQUM3QixPQUFPLEVBQUUsRUFBRTtJQUNYLHFCQUFxQixFQUFFLG9CQUFvQjtJQUMzQyxpQkFBaUIsRUFBRSxLQUFLO0lBQ3hCLFdBQVcsRUFBRSxLQUFLO0lBQ2xCLGNBQWMsRUFBRSxvQkFBb0I7SUFDcEMsMkJBQTJCLEVBQUUsRUFBRTtJQUMvQixvQ0FBb0MsRUFBRSxDQUFDO0lBQ3ZDLGVBQWUsRUFBRSxLQUFLO0lBQ3RCLHVCQUF1QixFQUFFLEtBQUs7SUFDOUIsY0FBYyxFQUFFLEdBQUc7SUFDbkIsY0FBYyxFQUFFLFlBQVk7SUFDNUIsaUJBQWlCLEVBQUUsZUFBZTtJQUNsQyxZQUFZLEVBQUUsSUFBSTtJQUNsQixpQ0FBaUMsRUFBRSxJQUFJO0lBQ3ZDLCtCQUErQixFQUFFLEtBQUs7SUFDdEMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxJQUFJO0lBQ3ZCLGdCQUFnQixFQUFFLEtBQUs7SUFDdkIsaUJBQWlCLEVBQUUsS0FBSztJQUN4QixtQ0FBbUMsRUFBRSxHQUFHO0lBQ3hDLDBCQUEwQixFQUFFLEtBQUs7SUFDakMsT0FBTyxFQUFFLE9BQU8sT0FBTyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJO0lBQy9ELFlBQVksRUFBRSxFQUFFO0lBQ2hCLCtCQUErQixFQUFFLElBQUk7SUFDckMsdUNBQXVDLEVBQUUsS0FBSztJQUM5QyxxQkFBcUIsRUFBRSxDQUFDO0NBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dMZXZlbCB9IGZyb20gJy4uL2xvZ2dpbmcvbG9nLWxldmVsJztcbmltcG9ydCB7IE9wZW5JZENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL29wZW5pZC1jb25maWd1cmF0aW9uJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ09ORklHOiBPcGVuSWRDb25maWd1cmF0aW9uID0ge1xuICBzdHNTZXJ2ZXI6ICdodHRwczovL3BsZWFzZV9zZXQnLFxuICBhdXRoV2VsbGtub3duRW5kcG9pbnQ6ICcnLFxuICByZWRpcmVjdFVybDogJ2h0dHBzOi8vcGxlYXNlX3NldCcsXG4gIGNsaWVudElkOiAncGxlYXNlX3NldCcsXG4gIHJlc3BvbnNlVHlwZTogJ2NvZGUnLFxuICBzY29wZTogJ29wZW5pZCBlbWFpbCBwcm9maWxlJyxcbiAgaGRQYXJhbTogJycsXG4gIHBvc3RMb2dvdXRSZWRpcmVjdFVyaTogJ2h0dHBzOi8vcGxlYXNlX3NldCcsXG4gIHN0YXJ0Q2hlY2tTZXNzaW9uOiBmYWxzZSxcbiAgc2lsZW50UmVuZXc6IGZhbHNlLFxuICBzaWxlbnRSZW5ld1VybDogJ2h0dHBzOi8vcGxlYXNlX3NldCcsXG4gIHNpbGVudFJlbmV3VGltZW91dEluU2Vjb25kczogMjAsXG4gIHJlbmV3VGltZUJlZm9yZVRva2VuRXhwaXJlc0luU2Vjb25kczogMCxcbiAgdXNlUmVmcmVzaFRva2VuOiBmYWxzZSxcbiAgaWdub3JlTm9uY2VBZnRlclJlZnJlc2g6IGZhbHNlLFxuICBwb3N0TG9naW5Sb3V0ZTogJy8nLFxuICBmb3JiaWRkZW5Sb3V0ZTogJy9mb3JiaWRkZW4nLFxuICB1bmF1dGhvcml6ZWRSb3V0ZTogJy91bmF1dGhvcml6ZWQnLFxuICBhdXRvVXNlcmluZm86IHRydWUsXG4gIGF1dG9DbGVhblN0YXRlQWZ0ZXJBdXRoZW50aWNhdGlvbjogdHJ1ZSxcbiAgdHJpZ2dlckF1dGhvcml6YXRpb25SZXN1bHRFdmVudDogZmFsc2UsXG4gIGxvZ0xldmVsOiBMb2dMZXZlbC5XYXJuLFxuICBpc3NWYWxpZGF0aW9uT2ZmOiBmYWxzZSxcbiAgaGlzdG9yeUNsZWFudXBPZmY6IGZhbHNlLFxuICBtYXhJZFRva2VuSWF0T2Zmc2V0QWxsb3dlZEluU2Vjb25kczogMTIwLFxuICBkaXNhYmxlSWF0T2Zmc2V0VmFsaWRhdGlvbjogZmFsc2UsXG4gIHN0b3JhZ2U6IHR5cGVvZiBTdG9yYWdlICE9PSAndW5kZWZpbmVkJyA/IHNlc3Npb25TdG9yYWdlIDogbnVsbCxcbiAgY3VzdG9tUGFyYW1zOiB7fSxcbiAgZWFnZXJMb2FkQXV0aFdlbGxLbm93bkVuZHBvaW50czogdHJ1ZSxcbiAgZGlzYWJsZVJlZnJlc2hJZFRva2VuQXV0aFRpbWVWYWxpZGF0aW9uOiBmYWxzZSxcbiAgdG9rZW5SZWZyZXNoSW5TZWNvbmRzOiA0LFxufTtcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdXRoLW9pZGMtY2xpZW50L3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb25maWcvZGVmYXVsdC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR2hELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBd0I7SUFDakQsU0FBUyxFQUFFLG9CQUFvQjtJQUMvQixxQkFBcUIsRUFBRSxFQUFFO0lBQ3pCLFdBQVcsRUFBRSxvQkFBb0I7SUFDakMsUUFBUSxFQUFFLFlBQVk7SUFDdEIsWUFBWSxFQUFFLE1BQU07SUFDcEIsS0FBSyxFQUFFLHNCQUFzQjtJQUM3QixPQUFPLEVBQUUsRUFBRTtJQUNYLHFCQUFxQixFQUFFLG9CQUFvQjtJQUMzQyxpQkFBaUIsRUFBRSxLQUFLO0lBQ3hCLFdBQVcsRUFBRSxLQUFLO0lBQ2xCLGNBQWMsRUFBRSxvQkFBb0I7SUFDcEMsMkJBQTJCLEVBQUUsRUFBRTtJQUMvQixvQ0FBb0MsRUFBRSxDQUFDO0lBQ3ZDLGVBQWUsRUFBRSxLQUFLO0lBQ3RCLDhCQUE4QixFQUFFLEtBQUs7SUFDckMsdUJBQXVCLEVBQUUsS0FBSztJQUM5QixjQUFjLEVBQUUsR0FBRztJQUNuQixjQUFjLEVBQUUsWUFBWTtJQUM1QixpQkFBaUIsRUFBRSxlQUFlO0lBQ2xDLFlBQVksRUFBRSxJQUFJO0lBQ2xCLGlDQUFpQyxFQUFFLElBQUk7SUFDdkMsK0JBQStCLEVBQUUsS0FBSztJQUN0QyxRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUk7SUFDdkIsZ0JBQWdCLEVBQUUsS0FBSztJQUN2QixpQkFBaUIsRUFBRSxLQUFLO0lBQ3hCLG1DQUFtQyxFQUFFLEdBQUc7SUFDeEMsMEJBQTBCLEVBQUUsS0FBSztJQUNqQyxPQUFPLEVBQUUsT0FBTyxPQUFPLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDL0QsWUFBWSxFQUFFLEVBQUU7SUFDaEIsK0JBQStCLEVBQUUsSUFBSTtJQUNyQyx1Q0FBdUMsRUFBRSxLQUFLO0lBQzlDLHFCQUFxQixFQUFFLENBQUM7Q0FDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvZ0xldmVsIH0gZnJvbSAnLi4vbG9nZ2luZy9sb2ctbGV2ZWwnO1xuaW1wb3J0IHsgT3BlbklkQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vb3BlbmlkLWNvbmZpZ3VyYXRpb24nO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9DT05GSUc6IE9wZW5JZENvbmZpZ3VyYXRpb24gPSB7XG4gIHN0c1NlcnZlcjogJ2h0dHBzOi8vcGxlYXNlX3NldCcsXG4gIGF1dGhXZWxsa25vd25FbmRwb2ludDogJycsXG4gIHJlZGlyZWN0VXJsOiAnaHR0cHM6Ly9wbGVhc2Vfc2V0JyxcbiAgY2xpZW50SWQ6ICdwbGVhc2Vfc2V0JyxcbiAgcmVzcG9uc2VUeXBlOiAnY29kZScsXG4gIHNjb3BlOiAnb3BlbmlkIGVtYWlsIHByb2ZpbGUnLFxuICBoZFBhcmFtOiAnJyxcbiAgcG9zdExvZ291dFJlZGlyZWN0VXJpOiAnaHR0cHM6Ly9wbGVhc2Vfc2V0JyxcbiAgc3RhcnRDaGVja1Nlc3Npb246IGZhbHNlLFxuICBzaWxlbnRSZW5ldzogZmFsc2UsXG4gIHNpbGVudFJlbmV3VXJsOiAnaHR0cHM6Ly9wbGVhc2Vfc2V0JyxcbiAgc2lsZW50UmVuZXdUaW1lb3V0SW5TZWNvbmRzOiAyMCxcbiAgcmVuZXdUaW1lQmVmb3JlVG9rZW5FeHBpcmVzSW5TZWNvbmRzOiAwLFxuICB1c2VSZWZyZXNoVG9rZW46IGZhbHNlLFxuICB1c2VQdXNoZWRBdXRob3Jpc2F0aW9uUmVxdWVzdHM6IGZhbHNlLFxuICBpZ25vcmVOb25jZUFmdGVyUmVmcmVzaDogZmFsc2UsXG4gIHBvc3RMb2dpblJvdXRlOiAnLycsXG4gIGZvcmJpZGRlblJvdXRlOiAnL2ZvcmJpZGRlbicsXG4gIHVuYXV0aG9yaXplZFJvdXRlOiAnL3VuYXV0aG9yaXplZCcsXG4gIGF1dG9Vc2VyaW5mbzogdHJ1ZSxcbiAgYXV0b0NsZWFuU3RhdGVBZnRlckF1dGhlbnRpY2F0aW9uOiB0cnVlLFxuICB0cmlnZ2VyQXV0aG9yaXphdGlvblJlc3VsdEV2ZW50OiBmYWxzZSxcbiAgbG9nTGV2ZWw6IExvZ0xldmVsLldhcm4sXG4gIGlzc1ZhbGlkYXRpb25PZmY6IGZhbHNlLFxuICBoaXN0b3J5Q2xlYW51cE9mZjogZmFsc2UsXG4gIG1heElkVG9rZW5JYXRPZmZzZXRBbGxvd2VkSW5TZWNvbmRzOiAxMjAsXG4gIGRpc2FibGVJYXRPZmZzZXRWYWxpZGF0aW9uOiBmYWxzZSxcbiAgc3RvcmFnZTogdHlwZW9mIFN0b3JhZ2UgIT09ICd1bmRlZmluZWQnID8gc2Vzc2lvblN0b3JhZ2UgOiBudWxsLFxuICBjdXN0b21QYXJhbXM6IHt9LFxuICBlYWdlckxvYWRBdXRoV2VsbEtub3duRW5kcG9pbnRzOiB0cnVlLFxuICBkaXNhYmxlUmVmcmVzaElkVG9rZW5BdXRoVGltZVZhbGlkYXRpb246IGZhbHNlLFxuICB0b2tlblJlZnJlc2hJblNlY29uZHM6IDQsXG59O1xuIl19
export {};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmlkLWNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdXRoLW9pZGMtY2xpZW50L3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb25maWcvb3BlbmlkLWNvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvZ0xldmVsIH0gZnJvbSAnLi4vbG9nZ2luZy9sb2ctbGV2ZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5JZENvbmZpZ3VyYXRpb24ge1xuICBzdHNTZXJ2ZXI/OiBzdHJpbmc7XG4gIGF1dGhXZWxsa25vd25FbmRwb2ludD86IHN0cmluZztcbiAgcmVkaXJlY3RVcmw/OiBzdHJpbmc7XG4gIGNsaWVudElkPzogc3RyaW5nO1xuICByZXNwb25zZVR5cGU/OiBzdHJpbmc7XG4gIHNjb3BlPzogc3RyaW5nO1xuICBoZFBhcmFtPzogc3RyaW5nO1xuICBwb3N0TG9nb3V0UmVkaXJlY3RVcmk/OiBzdHJpbmc7XG4gIHN0YXJ0Q2hlY2tTZXNzaW9uPzogYm9vbGVhbjtcbiAgc2lsZW50UmVuZXc/OiBib29sZWFuO1xuICBzaWxlbnRSZW5ld1VybD86IHN0cmluZztcbiAgc2lsZW50UmVuZXdUaW1lb3V0SW5TZWNvbmRzPzogbnVtYmVyO1xuICByZW5ld1RpbWVCZWZvcmVUb2tlbkV4cGlyZXNJblNlY29uZHM/OiBudW1iZXI7XG4gIHVzZVJlZnJlc2hUb2tlbj86IGJvb2xlYW47XG4gIGlnbm9yZU5vbmNlQWZ0ZXJSZWZyZXNoPzogYm9vbGVhbjtcbiAgcG9zdExvZ2luUm91dGU/OiBzdHJpbmc7XG4gIGZvcmJpZGRlblJvdXRlPzogc3RyaW5nO1xuICB1bmF1dGhvcml6ZWRSb3V0ZT86IHN0cmluZztcbiAgYXV0b1VzZXJpbmZvPzogYm9vbGVhbjtcbiAgcmVuZXdVc2VySW5mb0FmdGVyVG9rZW5SZW5ldz86IGJvb2xlYW47XG4gIGF1dG9DbGVhblN0YXRlQWZ0ZXJBdXRoZW50aWNhdGlvbj86IGJvb2xlYW47XG4gIHRyaWdnZXJBdXRob3JpemF0aW9uUmVzdWx0RXZlbnQ/OiBib29sZWFuO1xuICBsb2dMZXZlbD86IExvZ0xldmVsO1xuICBpc3NWYWxpZGF0aW9uT2ZmPzogYm9vbGVhbjtcbiAgaGlzdG9yeUNsZWFudXBPZmY/OiBib29sZWFuO1xuICBtYXhJZFRva2VuSWF0T2Zmc2V0QWxsb3dlZEluU2Vjb25kcz86IG51bWJlcjtcbiAgZGlzYWJsZUlhdE9mZnNldFZhbGlkYXRpb24/OiBib29sZWFuO1xuICBzdG9yYWdlPzogYW55O1xuICBjdXN0b21QYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfTtcbiAgZWFnZXJMb2FkQXV0aFdlbGxLbm93bkVuZHBvaW50cz86IGJvb2xlYW47XG5cbiAgLy8gQXp1cmUgQjJDIGhhdmUgaW1wbGVtZW50ZWQgdGhpcyBpbmNvcnJlY3RseS4gQWRkIHN1cHBvcnQgZm9yIHRvIGRpc2FibGUgdGhpcyB1bnRpbCBmaXhlZC5cbiAgZGlzYWJsZVJlZnJlc2hJZFRva2VuQXV0aFRpbWVWYWxpZGF0aW9uPzogYm9vbGVhbjtcbiAgdG9rZW5SZWZyZXNoSW5TZWNvbmRzPzogbnVtYmVyO1xuICBzZWN1cmVSb3V0ZXM/OiBzdHJpbmdbXTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmlkLWNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdXRoLW9pZGMtY2xpZW50L3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb25maWcvb3BlbmlkLWNvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvZ0xldmVsIH0gZnJvbSAnLi4vbG9nZ2luZy9sb2ctbGV2ZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5JZENvbmZpZ3VyYXRpb24ge1xuICBzdHNTZXJ2ZXI/OiBzdHJpbmc7XG4gIGF1dGhXZWxsa25vd25FbmRwb2ludD86IHN0cmluZztcbiAgcmVkaXJlY3RVcmw/OiBzdHJpbmc7XG4gIGNsaWVudElkPzogc3RyaW5nO1xuICByZXNwb25zZVR5cGU/OiBzdHJpbmc7XG4gIHNjb3BlPzogc3RyaW5nO1xuICBoZFBhcmFtPzogc3RyaW5nO1xuICBwb3N0TG9nb3V0UmVkaXJlY3RVcmk/OiBzdHJpbmc7XG4gIHN0YXJ0Q2hlY2tTZXNzaW9uPzogYm9vbGVhbjtcbiAgc2lsZW50UmVuZXc/OiBib29sZWFuO1xuICBzaWxlbnRSZW5ld1VybD86IHN0cmluZztcbiAgc2lsZW50UmVuZXdUaW1lb3V0SW5TZWNvbmRzPzogbnVtYmVyO1xuICByZW5ld1RpbWVCZWZvcmVUb2tlbkV4cGlyZXNJblNlY29uZHM/OiBudW1iZXI7XG4gIHVzZVJlZnJlc2hUb2tlbj86IGJvb2xlYW47XG4gIHVzZVB1c2hlZEF1dGhvcmlzYXRpb25SZXF1ZXN0cz86IGJvb2xlYW47XG4gIGlnbm9yZU5vbmNlQWZ0ZXJSZWZyZXNoPzogYm9vbGVhbjtcbiAgcG9zdExvZ2luUm91dGU/OiBzdHJpbmc7XG4gIGZvcmJpZGRlblJvdXRlPzogc3RyaW5nO1xuICB1bmF1dGhvcml6ZWRSb3V0ZT86IHN0cmluZztcbiAgYXV0b1VzZXJpbmZvPzogYm9vbGVhbjtcbiAgcmVuZXdVc2VySW5mb0FmdGVyVG9rZW5SZW5ldz86IGJvb2xlYW47XG4gIGF1dG9DbGVhblN0YXRlQWZ0ZXJBdXRoZW50aWNhdGlvbj86IGJvb2xlYW47XG4gIHRyaWdnZXJBdXRob3JpemF0aW9uUmVzdWx0RXZlbnQ/OiBib29sZWFuO1xuICBsb2dMZXZlbD86IExvZ0xldmVsO1xuICBpc3NWYWxpZGF0aW9uT2ZmPzogYm9vbGVhbjtcbiAgaGlzdG9yeUNsZWFudXBPZmY/OiBib29sZWFuO1xuICBtYXhJZFRva2VuSWF0T2Zmc2V0QWxsb3dlZEluU2Vjb25kcz86IG51bWJlcjtcbiAgZGlzYWJsZUlhdE9mZnNldFZhbGlkYXRpb24/OiBib29sZWFuO1xuICBzdG9yYWdlPzogYW55O1xuICBjdXN0b21QYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfTtcbiAgZWFnZXJMb2FkQXV0aFdlbGxLbm93bkVuZHBvaW50cz86IGJvb2xlYW47XG5cbiAgLy8gQXp1cmUgQjJDIGhhdmUgaW1wbGVtZW50ZWQgdGhpcyBpbmNvcnJlY3RseS4gQWRkIHN1cHBvcnQgZm9yIHRvIGRpc2FibGUgdGhpcyB1bnRpbCBmaXhlZC5cbiAgZGlzYWJsZVJlZnJlc2hJZFRva2VuQXV0aFRpbWVWYWxpZGF0aW9uPzogYm9vbGVhbjtcbiAgdG9rZW5SZWZyZXNoSW5TZWNvbmRzPzogbnVtYmVyO1xuICBzZWN1cmVSb3V0ZXM/OiBzdHJpbmdbXTtcbn1cbiJdfQ==

@@ -1,298 +0,32 @@

import { HttpHeaders } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { of, throwError } from 'rxjs';
import { catchError, switchMap } from 'rxjs/operators';
import { DataService } from '../api/data.service';
import { AuthStateService } from '../authState/auth-state.service';
import { AuthorizedState } from '../authState/authorized-state';
import { ConfigurationProvider } from '../config/config.provider';
import { LoggerService } from '../logging/logger.service';
import { StoragePersistanceService } from '../storage/storage-persistance.service';
import { UserService } from '../userData/user-service';
import { UrlService } from '../utils/url/url.service';
import { StateValidationService } from '../validation/state-validation.service';
import { TokenValidationService } from '../validation/token-validation.service';
import { ValidationResult } from '../validation/validation-result';
import { FlowsDataService } from './flows-data.service';
import { SigninKeyDataService } from './signin-key-data.service';
import { switchMap } from 'rxjs/operators';
import { CodeFlowCallbackHandlerService } from './callback-handling/code-flow-callback-handler.service';
import { HistoryJwtKeysCallbackHandlerService } from './callback-handling/history-jwt-keys-callback-handler.service';
import { ImplicitFlowCallbackHandlerService } from './callback-handling/implicit-flow-callback-handler.service';
import { RefreshSessionCallbackHandlerService } from './callback-handling/refresh-session-callback-handler.service';
import { RefreshTokenCallbackHandlerService } from './callback-handling/refresh-token-callback-handler.service';
import { StateValidationCallbackHandlerService } from './callback-handling/state-validation-callback-handler.service';
import { UserCallbackHandlerService } from './callback-handling/user-callback-handler.service';
export class FlowsService {
constructor(urlService, loggerService, tokenValidationService, configurationProvider, authStateService, flowsDataService, signinKeyDataService, dataService, userService, stateValidationService, storagePersistanceService) {
this.urlService = urlService;
this.loggerService = loggerService;
this.tokenValidationService = tokenValidationService;
this.configurationProvider = configurationProvider;
this.authStateService = authStateService;
this.flowsDataService = flowsDataService;
this.signinKeyDataService = signinKeyDataService;
this.dataService = dataService;
this.userService = userService;
this.stateValidationService = stateValidationService;
this.storagePersistanceService = storagePersistanceService;
constructor(codeFlowCallbackHandlerService, implicitFlowCallbackHandlerService, historyJwtKeysCallbackHandlerService, userHandlerService, stateValidationCallbackHandlerService, refreshSessionCallbackHandlerService, refreshTokenCallbackHandlerService) {
this.codeFlowCallbackHandlerService = codeFlowCallbackHandlerService;
this.implicitFlowCallbackHandlerService = implicitFlowCallbackHandlerService;
this.historyJwtKeysCallbackHandlerService = historyJwtKeysCallbackHandlerService;
this.userHandlerService = userHandlerService;
this.stateValidationCallbackHandlerService = stateValidationCallbackHandlerService;
this.refreshSessionCallbackHandlerService = refreshSessionCallbackHandlerService;
this.refreshTokenCallbackHandlerService = refreshTokenCallbackHandlerService;
}
resetAuthorizationData() {
if (this.configurationProvider.openIDConfiguration.autoUserinfo) {
// Clear user data. Fixes #97.
this.userService.resetUserDataInStore();
}
this.flowsDataService.resetStorageFlowData();
this.authStateService.setUnauthorizedAndFireEvent();
}
processCodeFlowCallback(urlToCheck) {
return this.codeFlowCallback(urlToCheck).pipe(switchMap((callbackContext) => this.codeFlowCodeRequest(callbackContext)), switchMap((callbackContext) => this.callbackHistoryAndResetJwtKeys(callbackContext)), switchMap((callbackContext) => this.callbackStateValidation(callbackContext)), switchMap((callbackContext) => this.callbackUser(callbackContext)));
return this.codeFlowCallbackHandlerService.codeFlowCallback(urlToCheck).pipe(switchMap((callbackContext) => this.codeFlowCallbackHandlerService.codeFlowCodeRequest(callbackContext)), switchMap((callbackContext) => this.historyJwtKeysCallbackHandlerService.callbackHistoryAndResetJwtKeys(callbackContext)), switchMap((callbackContext) => this.stateValidationCallbackHandlerService.callbackStateValidation(callbackContext)), switchMap((callbackContext) => this.userHandlerService.callbackUser(callbackContext)));
}
processSilentRenewCodeFlowCallback(firstContext) {
return this.codeFlowCodeRequest(firstContext).pipe(switchMap((callbackContext) => this.callbackHistoryAndResetJwtKeys(callbackContext)), switchMap((callbackContext) => this.callbackStateValidation(callbackContext)), switchMap((callbackContext) => this.callbackUser(callbackContext)));
return this.codeFlowCallbackHandlerService.codeFlowCodeRequest(firstContext).pipe(switchMap((callbackContext) => this.historyJwtKeysCallbackHandlerService.callbackHistoryAndResetJwtKeys(callbackContext)), switchMap((callbackContext) => this.stateValidationCallbackHandlerService.callbackStateValidation(callbackContext)), switchMap((callbackContext) => this.userHandlerService.callbackUser(callbackContext)));
}
processImplicitFlowCallback(hash) {
return this.implicitFlowCallback(hash).pipe(switchMap((callbackContext) => this.callbackHistoryAndResetJwtKeys(callbackContext)), switchMap((callbackContext) => this.callbackStateValidation(callbackContext)), switchMap((callbackContext) => this.callbackUser(callbackContext)));
return this.implicitFlowCallbackHandlerService.implicitFlowCallback(hash).pipe(switchMap((callbackContext) => this.historyJwtKeysCallbackHandlerService.callbackHistoryAndResetJwtKeys(callbackContext)), switchMap((callbackContext) => this.stateValidationCallbackHandlerService.callbackStateValidation(callbackContext)), switchMap((callbackContext) => this.userHandlerService.callbackUser(callbackContext)));
}
processRefreshToken(customParams) {
return this.refreshSessionWithRefreshTokens().pipe(switchMap((callbackContext) => this.refreshTokensRequestTokens(callbackContext, customParams)), switchMap((callbackContext) => this.callbackHistoryAndResetJwtKeys(callbackContext)), switchMap((callbackContext) => this.callbackStateValidation(callbackContext)), switchMap((callbackContext) => this.callbackUser(callbackContext)));
return this.refreshSessionCallbackHandlerService.refreshSessionWithRefreshTokens().pipe(switchMap((callbackContext) => this.refreshTokenCallbackHandlerService.refreshTokensRequestTokens(callbackContext, customParams)), switchMap((callbackContext) => this.historyJwtKeysCallbackHandlerService.callbackHistoryAndResetJwtKeys(callbackContext)), switchMap((callbackContext) => this.stateValidationCallbackHandlerService.callbackStateValidation(callbackContext)), switchMap((callbackContext) => this.userHandlerService.callbackUser(callbackContext)));
}
// STEP 1 Code Flow
codeFlowCallback(urlToCheck) {
const code = this.urlService.getUrlParameter(urlToCheck, 'code');
const state = this.urlService.getUrlParameter(urlToCheck, 'state');
const sessionState = this.urlService.getUrlParameter(urlToCheck, 'session_state') || null;
if (!state) {
this.loggerService.logDebug('no state in url');
return throwError('no state in url');
}
if (!code) {
this.loggerService.logDebug('no code in url');
return throwError('no code in url');
}
this.loggerService.logDebug('running validation for callback', urlToCheck);
const initialCallbackContext = {
code,
refreshToken: null,
state,
sessionState,
authResult: null,
isRenewProcess: false,
jwtKeys: null,
validationResult: null,
existingIdToken: null,
};
return of(initialCallbackContext);
}
// STEP 1 Implicit Flow
implicitFlowCallback(hash) {
const isRenewProcessData = this.flowsDataService.isSilentRenewRunning();
this.loggerService.logDebug('BEGIN authorizedCallback, no auth data');
if (!isRenewProcessData) {
this.resetAuthorizationData();
}
hash = hash || window.location.hash.substr(1);
const authResult = hash.split('&').reduce((resultData, item) => {
const parts = item.split('=');
resultData[parts.shift()] = parts.join('=');
return resultData;
}, {});
const callbackContext = {
code: null,
refreshToken: null,
state: null,
sessionState: null,
authResult,
isRenewProcess: isRenewProcessData,
jwtKeys: null,
validationResult: null,
existingIdToken: null,
};
return of(callbackContext);
}
// STEP 1 Refresh session
refreshSessionWithRefreshTokens() {
const stateData = this.flowsDataService.getExistingOrCreateAuthStateControl();
this.loggerService.logDebug('RefreshSession created. adding myautostate: ' + stateData);
const refreshToken = this.authStateService.getRefreshToken();
const idToken = this.authStateService.getIdToken();
if (refreshToken) {
const callbackContext = {
code: null,
refreshToken,
state: stateData,
sessionState: null,
authResult: null,
isRenewProcess: true,
jwtKeys: null,
validationResult: null,
existingIdToken: idToken,
};
this.loggerService.logDebug('found refresh code, obtaining new credentials with refresh code');
// Nonce is not used with refresh tokens; but Keycloak may send it anyway
this.flowsDataService.setNonce(TokenValidationService.refreshTokenNoncePlaceholder);
return of(callbackContext);
}
else {
const errorMessage = 'no refresh token found, please login';
this.loggerService.logError(errorMessage);
return throwError(errorMessage);
}
}
// STEP 2 Refresh Token
refreshTokensRequestTokens(callbackContext, customParams) {
let headers = new HttpHeaders();
headers = headers.set('Content-Type', 'application/x-www-form-urlencoded');
const authWellKnown = this.storagePersistanceService.read('authWellKnownEndPoints');
const tokenEndpoint = authWellKnown === null || authWellKnown === void 0 ? void 0 : authWellKnown.tokenEndpoint;
if (!tokenEndpoint) {
return throwError('Token Endpoint not defined');
}
const data = this.urlService.createBodyForCodeFlowRefreshTokensRequest(callbackContext.refreshToken, customParams);
return this.dataService.post(tokenEndpoint, data, headers).pipe(switchMap((response) => {
this.loggerService.logDebug('token refresh response: ', response);
let authResult = new Object();
authResult = response;
authResult.state = callbackContext.state;
callbackContext.authResult = authResult;
return of(callbackContext);
}), catchError((error) => {
const errorMessage = `OidcService code request ${this.configurationProvider.openIDConfiguration.stsServer}`;
this.loggerService.logError(errorMessage, error);
return throwError(errorMessage);
}));
}
// STEP 2 Code Flow // Code Flow Silent Renew starts here
codeFlowCodeRequest(callbackContext) {
const isStateCorrect = this.tokenValidationService.validateStateFromHashCallback(callbackContext.state, this.flowsDataService.getAuthStateControl());
if (!isStateCorrect) {
this.loggerService.logWarning('codeFlowCodeRequest incorrect state');
return throwError('codeFlowCodeRequest incorrect state');
}
const authWellKnown = this.storagePersistanceService.read('authWellKnownEndPoints');
const tokenEndpoint = authWellKnown === null || authWellKnown === void 0 ? void 0 : authWellKnown.tokenEndpoint;
if (!tokenEndpoint) {
return throwError('Token Endpoint not defined');
}
let headers = new HttpHeaders();
headers = headers.set('Content-Type', 'application/x-www-form-urlencoded');
const bodyForCodeFlow = this.urlService.createBodyForCodeFlowCodeRequest(callbackContext.code);
return this.dataService.post(tokenEndpoint, bodyForCodeFlow, headers).pipe(switchMap((response) => {
let authResult = new Object();
authResult = response;
authResult.state = callbackContext.state;
authResult.session_state = callbackContext.sessionState;
callbackContext.authResult = authResult;
return of(callbackContext);
}), catchError((error) => {
const errorMessage = `OidcService code request ${this.configurationProvider.openIDConfiguration.stsServer}`;
this.loggerService.logError(errorMessage, error);
return throwError(errorMessage);
}));
}
// STEP 3 Code Flow, STEP 2 Implicit Flow, STEP 3 Refresh Token
callbackHistoryAndResetJwtKeys(callbackContext) {
this.storagePersistanceService.write('authnResult', callbackContext.authResult);
if (this.historyCleanUpTurnedOn() && !callbackContext.isRenewProcess) {
this.resetBrowserHistory();
}
else {
this.loggerService.logDebug('history clean up inactive');
}
if (callbackContext.authResult.error) {
const errorMessage = `authorizedCallbackProcedure came with error: ${callbackContext.authResult.error}`;
this.loggerService.logDebug(errorMessage);
this.resetAuthorizationData();
this.flowsDataService.setNonce('');
this.handleResultErrorFromCallback(callbackContext.authResult, callbackContext.isRenewProcess);
return throwError(errorMessage);
}
this.loggerService.logDebug(callbackContext.authResult);
this.loggerService.logDebug('authorizedCallback created, begin token validation');
return this.signinKeyDataService.getSigningKeys().pipe(switchMap((jwtKeys) => {
if (jwtKeys) {
callbackContext.jwtKeys = jwtKeys;
return of(callbackContext);
}
const errorMessage = `Failed to retrieve signing key`;
this.loggerService.logWarning(errorMessage);
return throwError(errorMessage);
}), catchError((err) => {
const errorMessage = `Failed to retrieve signing key with error: ${err}`;
this.loggerService.logWarning(errorMessage);
return throwError(errorMessage);
}));
}
// STEP 4 All flows
callbackStateValidation(callbackContext) {
const validationResult = this.stateValidationService.getValidatedStateResult(callbackContext);
callbackContext.validationResult = validationResult;
if (validationResult.authResponseIsValid) {
this.authStateService.setAuthorizationData(validationResult.accessToken, callbackContext.authResult);
return of(callbackContext);
}
else {
const errorMessage = `authorizedCallback, token(s) validation failed, resetting. Hash: ${window.location.hash}`;
this.loggerService.logWarning(errorMessage);
this.resetAuthorizationData();
this.publishUnauthorizedState(callbackContext.validationResult, callbackContext.isRenewProcess);
return throwError(errorMessage);
}
}
// STEP 5 userData
callbackUser(callbackContext) {
if (!this.configurationProvider.openIDConfiguration.autoUserinfo) {
if (!callbackContext.isRenewProcess) {
// userData is set to the id_token decoded, auto get user data set to false
this.userService.setUserDataToStore(callbackContext.validationResult.decodedIdToken);
}
this.publishAuthorizedState(callbackContext.validationResult, callbackContext.isRenewProcess);
return of(callbackContext);
}
return this.userService
.getAndPersistUserDataInStore(callbackContext.isRenewProcess, callbackContext.validationResult.idToken, callbackContext.validationResult.decodedIdToken)
.pipe(switchMap((userData) => {
if (!!userData) {
if (!callbackContext.refreshToken) {
this.flowsDataService.setSessionState(callbackContext.authResult.session_state);
}
this.publishAuthorizedState(callbackContext.validationResult, callbackContext.isRenewProcess);
return of(callbackContext);
}
else {
this.resetAuthorizationData();
this.publishUnauthorizedState(callbackContext.validationResult, callbackContext.isRenewProcess);
const errorMessage = `Called for userData but they were ${userData}`;
this.loggerService.logWarning(errorMessage);
return throwError(errorMessage);
}
}), catchError((err) => {
const errorMessage = `Failed to retrieve user info with error: ${err}`;
this.loggerService.logWarning(errorMessage);
return throwError(errorMessage);
}));
}
publishAuthorizedState(stateValidationResult, isRenewProcess) {
this.authStateService.updateAndPublishAuthState({
authorizationState: AuthorizedState.Authorized,
validationResult: stateValidationResult.state,
isRenewProcess,
});
}
publishUnauthorizedState(stateValidationResult, isRenewProcess) {
this.authStateService.updateAndPublishAuthState({
authorizationState: AuthorizedState.Unauthorized,
validationResult: stateValidationResult.state,
isRenewProcess,
});
}
handleResultErrorFromCallback(result, isRenewProcess) {
let validationResult = ValidationResult.SecureTokenServerError;
if (result.error === 'login_required') {
validationResult = ValidationResult.LoginRequired;
}
this.authStateService.updateAndPublishAuthState({
authorizationState: AuthorizedState.Unauthorized,
validationResult,
isRenewProcess,
});
}
historyCleanUpTurnedOn() {
return !this.configurationProvider.openIDConfiguration.historyCleanupOff;
}
resetBrowserHistory() {
window.history.replaceState({}, window.document.title, window.location.origin + window.location.pathname);
}
}

@@ -303,14 +37,10 @@ FlowsService.decorators = [

FlowsService.ctorParameters = () => [
{ type: UrlService },
{ type: LoggerService },
{ type: TokenValidationService },
{ type: ConfigurationProvider },
{ type: AuthStateService },
{ type: FlowsDataService },
{ type: SigninKeyDataService },
{ type: DataService },
{ type: UserService },
{ type: StateValidationService },
{ type: StoragePersistanceService }
{ type: CodeFlowCallbackHandlerService },
{ type: ImplicitFlowCallbackHandlerService },
{ type: HistoryJwtKeysCallbackHandlerService },
{ type: UserCallbackHandlerService },
{ type: StateValidationCallbackHandlerService },
{ type: RefreshSessionCallbackHandlerService },
{ type: RefreshTokenCallbackHandlerService }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvd3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWF1dGgtb2lkYy1jbGllbnQvc3JjLyIsInNvdXJjZXMiOlsibGliL2Zsb3dzL2Zsb3dzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXRELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRW5FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxv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LENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBaUIsQ0FBQztJQUMzRSxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVHLENBQUM7OztZQS9XRixVQUFVOzs7WUFURixVQUFVO1lBSFYsYUFBYTtZQU1iLHNCQUFzQjtZQVB0QixxQkFBcUI7WUFGckIsZ0JBQWdCO1lBWWhCLGdCQUFnQjtZQUNoQixvQkFBb0I7WUFkcEIsV0FBVztZQU1YLFdBQVc7WUFHWCxzQkFBc0I7WUFKdEIseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9hcGkvZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9hdXRoU3RhdGUvYXV0aC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhvcml6ZWRTdGF0ZSB9IGZyb20gJy4uL2F1dGhTdGF0ZS9hdXRob3JpemVkLXN0YXRlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25Qcm92aWRlciB9IGZyb20gJy4uL2NvbmZpZy9jb25maWcucHJvdmlkZXInO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uL2xvZ2dpbmcvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZSB9IGZyb20gJy4uL3N0b3JhZ2Uvc3RvcmFnZS1wZXJzaXN0YW5jZS5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vdXNlckRhdGEvdXNlci1zZXJ2aWNlJztcbmltcG9ydCB7IFVybFNlcnZpY2UgfSBmcm9tICcuLi91dGlscy91cmwvdXJsLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RhdGVWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnLi4vdmFsaWRhdGlvbi9zdGF0ZS12YWxpZGF0aW9uLXJlc3VsdCc7XG5pbXBvcnQgeyBTdGF0ZVZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi9zdGF0ZS12YWxpZGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9rZW5WYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4uL3ZhbGlkYXRpb24vdG9rZW4tdmFsaWRhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRpb24tcmVzdWx0JztcbmltcG9ydCB7IENhbGxiYWNrQ29udGV4dCB9IGZyb20gJy4vY2FsbGJhY2stY29udGV4dCc7XG5pbXBvcnQgeyBGbG93c0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi9mbG93cy1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lnbmluS2V5RGF0YVNlcnZpY2UgfSBmcm9tICcuL3NpZ25pbi1rZXktZGF0YS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZsb3dzU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdXJsU2VydmljZTogVXJsU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlclNlcnZpY2U6IExvZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0b2tlblZhbGlkYXRpb25TZXJ2aWNlOiBUb2tlblZhbGlkYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlndXJhdGlvblByb3ZpZGVyOiBDb25maWd1cmF0aW9uUHJvdmlkZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRoU3RhdGVTZXJ2aWNlOiBBdXRoU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmxvd3NEYXRhU2VydmljZTogRmxvd3NEYXRhU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNpZ25pbktleURhdGFTZXJ2aWNlOiBTaWduaW5LZXlEYXRhU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0YXRlVmFsaWRhdGlvblNlcnZpY2U6IFN0YXRlVmFsaWRhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlOiBTdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlXG4gICkge31cblxuICByZXNldEF1dGhvcml6YXRpb25EYXRhKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb25Qcm92aWRlci5vcGVuSURDb25maWd1cmF0aW9uLmF1dG9Vc2VyaW5mbykge1xuICAgICAgLy8gQ2xlYXIgdXNlciBkYXRhLiBGaXhlcyAjOTcuXG4gICAgICB0aGlzLnVzZXJTZXJ2aWNlLnJlc2V0VXNlckRhdGFJblN0b3JlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5mbG93c0RhdGFTZXJ2aWNlLnJlc2V0U3RvcmFnZUZsb3dEYXRhKCk7XG4gICAgdGhpcy5hdXRoU3RhdGVTZXJ2aWNlLnNldFVuYXV0aG9yaXplZEFuZEZpcmVFdmVudCgpO1xuICB9XG5cbiAgcHJvY2Vzc0NvZGVGbG93Q2FsbGJhY2sodXJsVG9DaGVjazogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuY29kZUZsb3dDYWxsYmFjayh1cmxUb0NoZWNrKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChjYWxsYmFja0NvbnRleHQpID0+IHRoaXMuY29kZUZsb3dDb2RlUmVxdWVzdChjYWxsYmFja0NvbnRleHQpKSxcbiAgICAgIHN3aXRjaE1hcCgoY2FsbGJhY2tDb250ZXh0KSA9PiB0aGlzLmNhbGxiYWNrSGlzdG9yeUFuZFJlc2V0Snd0S2V5cyhjYWxsYmFja0NvbnRleHQpKSxcbiAgICAgIHN3aXRjaE1hcCgoY2FsbGJhY2tDb250ZXh0KSA9PiB0aGlzLmNhbGxiYWNrU3RhdGVWYWxpZGF0aW9uKGNhbGxiYWNrQ29udGV4dCkpLFxuICAgICAgc3dpdGNoTWFwKChjYWxsYmFja0NvbnRleHQpID0+IHRoaXMuY2FsbGJhY2tVc2VyKGNhbGxiYWNrQ29udGV4dCkpXG4gICAgKTtcbiAgfVxuXG4gIHByb2Nlc3NTaWxlbnRSZW5ld0NvZGVGbG93Q2FsbGJhY2soZmlyc3RDb250ZXh0OiBDYWxsYmFja0NvbnRleHQpIHtcbiAgICByZXR1cm4gdGhpcy5jb2RlRmxvd0NvZGVSZXF1ZXN0KGZpcnN0Q29udGV4dCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoY2FsbGJhY2tDb250ZXh0KSA9PiB0aGlzLmNhbGxiYWNrSGlzdG9yeUFuZFJlc2V0Snd0S2V5cyhjYWxsYmFja0NvbnRleHQpKSxcbiAgICAgIHN3aXRjaE1hcCgoY2FsbGJhY2tDb250ZXh0KSA9PiB0aGlzLmNhbGxiYWNrU3RhdGVWYWxpZGF0aW9uKGNhbGxiYWNrQ29udGV4dCkpLFxuICAgICAgc3dpdGNoTWFwKChjYWxsYmFja0NvbnRleHQpID0+IHRoaXMuY2FsbGJhY2tVc2VyKGNhbGxiYWNrQ29udGV4dCkpXG4gICAgKTtcbiAgfVxuXG4gIHByb2Nlc3NJbXBsaWNpdEZsb3dDYWxsYmFjayhoYXNoPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1wbGljaXRGbG93Q2FsbGJhY2soaGFzaCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoY2FsbGJhY2tDb250ZXh0KSA9PiB0aGlzLmNhbGxiYWNrSGlzdG9yeUFuZFJlc2V0Snd0S2V5cyhjYWxsYmFja0NvbnRleHQpKSxcbiAgICAgIHN3aXRjaE1hcCgoY2FsbGJhY2tDb250ZXh0KSA9PiB0aGlzLmNhbGxiYWNrU3RhdGVWYWxpZGF0aW9uKGNhbGxiYWNrQ29udGV4dCkpLFxuICAgICAgc3dpdGNoTWFwKChjYWxsYmFja0NvbnRleHQpID0+IHRoaXMuY2FsbGJhY2tVc2VyKGNhbGxiYWNrQ29udGV4dCkpXG4gICAgKTtcbiAgfVxuXG4gIHByb2Nlc3NSZWZyZXNoVG9rZW4oY3VzdG9tUGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gdGhpcy5yZWZyZXNoU2Vzc2lvbldpdGhSZWZyZXNoVG9rZW5zKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoY2FsbGJhY2tDb250ZXh0KSA9PiB0aGlzLnJlZnJlc2hUb2tlbnNSZXF1ZXN0VG9rZW5zKGNhbGxiYWNrQ29udGV4dCwgY3VzdG9tUGFyYW1zKSksXG4gICAgICBzd2l0Y2hNYXAoKGNhbGxiYWNrQ29udGV4dCkgPT4gdGhpcy5jYWxsYmFja0hpc3RvcnlBbmRSZXNldEp3dEtleXMoY2FsbGJhY2tDb250ZXh0KSksXG4gICAgICBzd2l0Y2hNYXAoKGNhbGxiYWNrQ29udGV4dCkgPT4gdGhpcy5jYWxsYmFja1N0YXRlVmFsaWRhdGlvbihjYWxsYmFja0NvbnRleHQpKSxcbiAgICAgIHN3aXRjaE1hcCgoY2FsbGJhY2tDb250ZXh0KSA9PiB0aGlzLmNhbGxiYWNrVXNlcihjYWxsYmFja0NvbnRleHQpKVxuICAgICk7XG4gIH1cblxuICAvLyBTVEVQIDEgQ29kZSBGbG93XG4gIHByaXZhdGUgY29kZUZsb3dDYWxsYmFjayh1cmxUb0NoZWNrOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENhbGxiYWNrQ29udGV4dD4ge1xuICAgIGNvbnN0IGNvZGUgPSB0aGlzLnVybFNlcnZpY2UuZ2V0VXJsUGFyYW1ldGVyKHVybFRvQ2hlY2ssICdjb2RlJyk7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLnVybFNlcnZpY2UuZ2V0VXJsUGFyYW1ldGVyKHVybFRvQ2hlY2ssICdzdGF0ZScpO1xuICAgIGNvbnN0IHNlc3Npb25TdGF0ZSA9IHRoaXMudXJsU2VydmljZS5nZXRVcmxQYXJhbWV0ZXIodXJsVG9DaGVjaywgJ3Nlc3Npb25fc3RhdGUnKSB8fCBudWxsO1xuXG4gICAgaWYgKCFzdGF0ZSkge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCdubyBzdGF0ZSBpbiB1cmwnKTtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCdubyBzdGF0ZSBpbiB1cmwnKTtcbiAgICB9XG4gICAgaWYgKCFjb2RlKSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ25vIGNvZGUgaW4gdXJsJyk7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcignbm8gY29kZSBpbiB1cmwnKTtcbiAgICB9XG4gICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCdydW5uaW5nIHZhbGlkYXRpb24gZm9yIGNhbGxiYWNrJywgdXJsVG9DaGVjayk7XG5cbiAgICBjb25zdCBpbml0aWFsQ2FsbGJhY2tDb250ZXh0ID0ge1xuICAgICAgY29kZSxcbiAgICAgIHJlZnJlc2hUb2tlbjogbnVsbCxcbiAgICAgIHN0YXRlLFxuICAgICAgc2Vzc2lvblN0YXRlLFxuICAgICAgYXV0aFJlc3VsdDogbnVsbCxcbiAgICAgIGlzUmVuZXdQcm9jZXNzOiBmYWxzZSxcbiAgICAgIGp3dEtleXM6IG51bGwsXG4gICAgICB2YWxpZGF0aW9uUmVzdWx0OiBudWxsLFxuICAgICAgZXhpc3RpbmdJZFRva2VuOiBudWxsLFxuICAgIH07XG5cbiAgICByZXR1cm4gb2YoaW5pdGlhbENhbGxiYWNrQ29udGV4dCk7XG4gIH1cblxuICAvLyBTVEVQIDEgSW1wbGljaXQgRmxvd1xuICBwcml2YXRlIGltcGxpY2l0Rmxvd0NhbGxiYWNrKGhhc2g/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPENhbGxiYWNrQ29udGV4dD4ge1xuICAgIGNvbnN0IGlzUmVuZXdQcm9jZXNzRGF0YSA9IHRoaXMuZmxvd3NEYXRhU2VydmljZS5pc1NpbGVudFJlbmV3UnVubmluZygpO1xuXG4gICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCdCRUdJTiBhdXRob3JpemVkQ2FsbGJhY2ssIG5vIGF1dGggZGF0YScpO1xuICAgIGlmICghaXNSZW5ld1Byb2Nlc3NEYXRhKSB7XG4gICAgICB0aGlzLnJlc2V0QXV0aG9yaXphdGlvbkRhdGEoKTtcbiAgICB9XG5cbiAgICBoYXNoID0gaGFzaCB8fCB3aW5kb3cubG9jYXRpb24uaGFzaC5zdWJzdHIoMSk7XG5cbiAgICBjb25zdCBhdXRoUmVzdWx0OiBhbnkgPSBoYXNoLnNwbGl0KCcmJykucmVkdWNlKChyZXN1bHREYXRhOiBhbnksIGl0ZW06IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgcGFydHMgPSBpdGVtLnNwbGl0KCc9Jyk7XG4gICAgICByZXN1bHREYXRhW3BhcnRzLnNoaWZ0KCkgYXMgc3RyaW5nXSA9IHBhcnRzLmpvaW4oJz0nKTtcbiAgICAgIHJldHVybiByZXN1bHREYXRhO1xuICAgIH0sIHt9KTtcblxuICAgIGNvbnN0IGNhbGxiYWNrQ29udGV4dCA9IHtcbiAgICAgIGNvZGU6IG51bGwsXG4gICAgICByZWZyZXNoVG9rZW46IG51bGwsXG4gICAgICBzdGF0ZTogbnVsbCxcbiAgICAgIHNlc3Npb25TdGF0ZTogbnVsbCxcbiAgICAgIGF1dGhSZXN1bHQsXG4gICAgICBpc1JlbmV3UHJvY2VzczogaXNSZW5ld1Byb2Nlc3NEYXRhLFxuICAgICAgand0S2V5czogbnVsbCxcbiAgICAgIHZhbGlkYXRpb25SZXN1bHQ6IG51bGwsXG4gICAgICBleGlzdGluZ0lkVG9rZW46IG51bGwsXG4gICAgfTtcblxuICAgIHJldHVybiBvZihjYWxsYmFja0NvbnRleHQpO1xuICB9XG5cbiAgLy8gU1RFUCAxIFJlZnJlc2ggc2Vzc2lvblxuICBwcml2YXRlIHJlZnJlc2hTZXNzaW9uV2l0aFJlZnJlc2hUb2tlbnMoKTogT2JzZXJ2YWJsZTxDYWxsYmFja0NvbnRleHQ+IHtcbiAgICBjb25zdCBzdGF0ZURhdGEgPSB0aGlzLmZsb3dzRGF0YVNlcnZpY2UuZ2V0RXhpc3RpbmdPckNyZWF0ZUF1dGhTdGF0ZUNvbnRyb2woKTtcbiAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ1JlZnJlc2hTZXNzaW9uIGNyZWF0ZWQuIGFkZGluZyBteWF1dG9zdGF0ZTogJyArIHN0YXRlRGF0YSk7XG4gICAgY29uc3QgcmVmcmVzaFRva2VuID0gdGhpcy5hdXRoU3RhdGVTZXJ2aWNlLmdldFJlZnJlc2hUb2tlbigpO1xuICAgIGNvbnN0IGlkVG9rZW4gPSB0aGlzLmF1dGhTdGF0ZVNlcnZpY2UuZ2V0SWRUb2tlbigpO1xuXG4gICAgaWYgKHJlZnJlc2hUb2tlbikge1xuICAgICAgY29uc3QgY2FsbGJhY2tDb250ZXh0ID0ge1xuICAgICAgICBjb2RlOiBudWxsLFxuICAgICAgICByZWZyZXNoVG9rZW4sXG4gICAgICAgIHN0YXRlOiBzdGF0ZURhdGEsXG4gICAgICAgIHNlc3Npb25TdGF0ZTogbnVsbCxcbiAgICAgICAgYXV0aFJlc3VsdDogbnVsbCxcbiAgICAgICAgaXNSZW5ld1Byb2Nlc3M6IHRydWUsXG4gICAgICAgIGp3dEtleXM6IG51bGwsXG4gICAgICAgIHZhbGlkYXRpb25SZXN1bHQ6IG51bGwsXG4gICAgICAgIGV4aXN0aW5nSWRUb2tlbjogaWRUb2tlbixcbiAgICAgIH07XG5cbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZygnZm91bmQgcmVmcmVzaCBjb2RlLCBvYnRhaW5pbmcgbmV3IGNyZWRlbnRpYWxzIHdpdGggcmVmcmVzaCBjb2RlJyk7XG4gICAgICAvLyBOb25jZSBpcyBub3QgdXNlZCB3aXRoIHJlZnJlc2ggdG9rZW5zOyBidXQgS2V5Y2xvYWsgbWF5IHNlbmQgaXQgYW55d2F5XG4gICAgICB0aGlzLmZsb3dzRGF0YVNlcnZpY2Uuc2V0Tm9uY2UoVG9rZW5WYWxpZGF0aW9uU2VydmljZS5yZWZyZXNoVG9rZW5Ob25jZVBsYWNlaG9sZGVyKTtcblxuICAgICAgcmV0dXJuIG9mKGNhbGxiYWNrQ29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9ICdubyByZWZyZXNoIHRva2VuIGZvdW5kLCBwbGVhc2UgbG9naW4nO1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0Vycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvck1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNURVAgMiBSZWZyZXNoIFRva2VuXG4gIHByaXZhdGUgcmVmcmVzaFRva2Vuc1JlcXVlc3RUb2tlbnMoXG4gICAgY2FsbGJhY2tDb250ZXh0OiBDYWxsYmFja0NvbnRleHQsXG4gICAgY3VzdG9tUGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIH1cbiAgKTogT2JzZXJ2YWJsZTxDYWxsYmFja0NvbnRleHQ+IHtcbiAgICBsZXQgaGVhZGVyczogSHR0cEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKTtcblxuICAgIGNvbnN0IGF1dGhXZWxsS25vd24gPSB0aGlzLnN0b3JhZ2VQZXJzaXN0YW5jZVNlcnZpY2UucmVhZCgnYXV0aFdlbGxLbm93bkVuZFBvaW50cycpO1xuICAgIGNvbnN0IHRva2VuRW5kcG9pbnQgPSBhdXRoV2VsbEtub3duPy50b2tlbkVuZHBvaW50O1xuICAgIGlmICghdG9rZW5FbmRwb2ludCkge1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IoJ1Rva2VuIEVuZHBvaW50IG5vdCBkZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IHRoaXMudXJsU2VydmljZS5jcmVhdGVCb2R5Rm9yQ29kZUZsb3dSZWZyZXNoVG9rZW5zUmVxdWVzdChjYWxsYmFja0NvbnRleHQucmVmcmVzaFRva2VuLCBjdXN0b21QYXJhbXMpO1xuXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UucG9zdCh0b2tlbkVuZHBvaW50LCBkYXRhLCBoZWFkZXJzKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZygndG9rZW4gcmVmcmVzaCByZXNwb25zZTogJywgcmVzcG9uc2UpO1xuICAgICAgICBsZXQgYXV0aFJlc3VsdDogYW55ID0gbmV3IE9iamVjdCgpO1xuICAgICAgICBhdXRoUmVzdWx0ID0gcmVzcG9uc2U7XG4gICAgICAgIGF1dGhSZXN1bHQuc3RhdGUgPSBjYWxsYmFja0NvbnRleHQuc3RhdGU7XG5cbiAgICAgICAgY2FsbGJhY2tDb250ZXh0LmF1dGhSZXN1bHQgPSBhdXRoUmVzdWx0O1xuICAgICAgICByZXR1cm4gb2YoY2FsbGJhY2tDb250ZXh0KTtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYE9pZGNTZXJ2aWNlIGNvZGUgcmVxdWVzdCAke3RoaXMuY29uZmlndXJhdGlvblByb3ZpZGVyLm9wZW5JRENvbmZpZ3VyYXRpb24uc3RzU2VydmVyfWA7XG4gICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dFcnJvcihlcnJvck1lc3NhZ2UsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8vIFNURVAgMiBDb2RlIEZsb3cgLy8gIENvZGUgRmxvdyBTaWxlbnQgUmVuZXcgc3RhcnRzIGhlcmVcbiAgcHJpdmF0ZSBjb2RlRmxvd0NvZGVSZXF1ZXN0KGNhbGxiYWNrQ29udGV4dDogQ2FsbGJhY2tDb250ZXh0KTogT2JzZXJ2YWJsZTxDYWxsYmFja0NvbnRleHQ+IHtcbiAgICBjb25zdCBpc1N0YXRlQ29ycmVjdCA9IHRoaXMudG9rZW5WYWxpZGF0aW9uU2VydmljZS52YWxpZGF0ZVN0YXRlRnJvbUhhc2hDYWxsYmFjayhcbiAgICAgIGNhbGxiYWNrQ29udGV4dC5zdGF0ZSxcbiAgICAgIHRoaXMuZmxvd3NEYXRhU2VydmljZS5nZXRBdXRoU3RhdGVDb250cm9sKClcbiAgICApO1xuXG4gICAgaWYgKCFpc1N0YXRlQ29ycmVjdCkge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ1dhcm5pbmcoJ2NvZGVGbG93Q29kZVJlcXVlc3QgaW5jb3JyZWN0IHN0YXRlJyk7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcignY29kZUZsb3dDb2RlUmVxdWVzdCBpbmNvcnJlY3Qgc3RhdGUnKTtcbiAgICB9XG5cbiAgICBjb25zdCBhdXRoV2VsbEtub3duID0gdGhpcy5zdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlLnJlYWQoJ2F1dGhXZWxsS25vd25FbmRQb2ludHMnKTtcbiAgICBjb25zdCB0b2tlbkVuZHBvaW50ID0gYXV0aFdlbGxLbm93bj8udG9rZW5FbmRwb2ludDtcbiAgICBpZiAoIXRva2VuRW5kcG9pbnQpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCdUb2tlbiBFbmRwb2ludCBub3QgZGVmaW5lZCcpO1xuICAgIH1cblxuICAgIGxldCBoZWFkZXJzOiBIdHRwSGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpO1xuXG4gICAgY29uc3QgYm9keUZvckNvZGVGbG93ID0gdGhpcy51cmxTZXJ2aWNlLmNyZWF0ZUJvZHlGb3JDb2RlRmxvd0NvZGVSZXF1ZXN0KGNhbGxiYWNrQ29udGV4dC5jb2RlKTtcblxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLnBvc3QodG9rZW5FbmRwb2ludCwgYm9keUZvckNvZGVGbG93LCBoZWFkZXJzKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBsZXQgYXV0aFJlc3VsdDogYW55ID0gbmV3IE9iamVjdCgpO1xuICAgICAgICBhdXRoUmVzdWx0ID0gcmVzcG9uc2U7XG4gICAgICAgIGF1dGhSZXN1bHQuc3RhdGUgPSBjYWxsYmFja0NvbnRleHQuc3RhdGU7XG4gICAgICAgIGF1dGhSZXN1bHQuc2Vzc2lvbl9zdGF0ZSA9IGNhbGxiYWNrQ29udGV4dC5zZXNzaW9uU3RhdGU7XG5cbiAgICAgICAgY2FsbGJhY2tDb250ZXh0LmF1dGhSZXN1bHQgPSBhdXRoUmVzdWx0O1xuICAgICAgICByZXR1cm4gb2YoY2FsbGJhY2tDb250ZXh0KTtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYE9pZGNTZXJ2aWNlIGNvZGUgcmVxdWVzdCAke3RoaXMuY29uZmlndXJhdGlvblByb3ZpZGVyLm9wZW5JRENvbmZpZ3VyYXRpb24uc3RzU2VydmVyfWA7XG4gICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dFcnJvcihlcnJvck1lc3NhZ2UsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8vIFNURVAgMyBDb2RlIEZsb3csIFNURVAgMiBJbXBsaWNpdCBGbG93LCBTVEVQIDMgUmVmcmVzaCBUb2tlblxuICBwcml2YXRlIGNhbGxiYWNrSGlzdG9yeUFuZFJlc2V0Snd0S2V5cyhjYWxsYmFja0NvbnRleHQ6IENhbGxiYWNrQ29udGV4dCk6IE9ic2VydmFibGU8Q2FsbGJhY2tDb250ZXh0PiB7XG4gICAgdGhpcy5zdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlLndyaXRlKCdhdXRoblJlc3VsdCcsIGNhbGxiYWNrQ29udGV4dC5hdXRoUmVzdWx0KTtcblxuICAgIGlmICh0aGlzLmhpc3RvcnlDbGVhblVwVHVybmVkT24oKSAmJiAhY2FsbGJhY2tDb250ZXh0LmlzUmVuZXdQcm9jZXNzKSB7XG4gICAgICB0aGlzLnJlc2V0QnJvd3Nlckhpc3RvcnkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCdoaXN0b3J5IGNsZWFuIHVwIGluYWN0aXZlJyk7XG4gICAgfVxuXG4gICAgaWYgKGNhbGxiYWNrQ29udGV4dC5hdXRoUmVzdWx0LmVycm9yKSB7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgYXV0aG9yaXplZENhbGxiYWNrUHJvY2VkdXJlIGNhbWUgd2l0aCBlcnJvcjogJHtjYWxsYmFja0NvbnRleHQuYXV0aFJlc3VsdC5lcnJvcn1gO1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKGVycm9yTWVzc2FnZSk7XG4gICAgICB0aGlzLnJlc2V0QXV0aG9yaXphdGlvbkRhdGEoKTtcbiAgICAgIHRoaXMuZmxvd3NEYXRhU2VydmljZS5zZXROb25jZSgnJyk7XG4gICAgICB0aGlzLmhhbmRsZVJlc3VsdEVycm9yRnJvbUNhbGxiYWNrKGNhbGxiYWNrQ29udGV4dC5hdXRoUmVzdWx0LCBjYWxsYmFja0NvbnRleHQuaXNSZW5ld1Byb2Nlc3MpO1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgICB9XG5cbiAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoY2FsbGJhY2tDb250ZXh0LmF1dGhSZXN1bHQpO1xuICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZygnYXV0aG9yaXplZENhbGxiYWNrIGNyZWF0ZWQsIGJlZ2luIHRva2VuIHZhbGlkYXRpb24nKTtcblxuICAgIHJldHVybiB0aGlzLnNpZ25pbktleURhdGFTZXJ2aWNlLmdldFNpZ25pbmdLZXlzKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoand0S2V5cykgPT4ge1xuICAgICAgICBpZiAoand0S2V5cykge1xuICAgICAgICAgIGNhbGxiYWNrQ29udGV4dC5qd3RLZXlzID0gand0S2V5cztcblxuICAgICAgICAgIHJldHVybiBvZihjYWxsYmFja0NvbnRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYEZhaWxlZCB0byByZXRyaWV2ZSBzaWduaW5nIGtleWA7XG4gICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dXYXJuaW5nKGVycm9yTWVzc2FnZSk7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgRmFpbGVkIHRvIHJldHJpZXZlIHNpZ25pbmcga2V5IHdpdGggZXJyb3I6ICR7ZXJyfWA7XG4gICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dXYXJuaW5nKGVycm9yTWVzc2FnZSk7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvLyBTVEVQIDQgQWxsIGZsb3dzXG4gIHByaXZhdGUgY2FsbGJhY2tTdGF0ZVZhbGlkYXRpb24oY2FsbGJhY2tDb250ZXh0OiBDYWxsYmFja0NvbnRleHQpOiBPYnNlcnZhYmxlPENhbGxiYWNrQ29udGV4dD4ge1xuICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSB0aGlzLnN0YXRlVmFsaWRhdGlvblNlcnZpY2UuZ2V0VmFsaWRhdGVkU3RhdGVSZXN1bHQoY2FsbGJhY2tDb250ZXh0KTtcbiAgICBjYWxsYmFja0NvbnRleHQudmFsaWRhdGlvblJlc3VsdCA9IHZhbGlkYXRpb25SZXN1bHQ7XG5cbiAgICBpZiAodmFsaWRhdGlvblJlc3VsdC5hdXRoUmVzcG9uc2VJc1ZhbGlkKSB7XG4gICAgICB0aGlzLmF1dGhTdGF0ZVNlcnZpY2Uuc2V0QXV0aG9yaXphdGlvbkRhdGEodmFsaWRhdGlvblJlc3VsdC5hY2Nlc3NUb2tlbiwgY2FsbGJhY2tDb250ZXh0LmF1dGhSZXN1bHQpO1xuICAgICAgcmV0dXJuIG9mKGNhbGxiYWNrQ29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGBhdXRob3JpemVkQ2FsbGJhY2ssIHRva2VuKHMpIHZhbGlkYXRpb24gZmFpbGVkLCByZXNldHRpbmcuIEhhc2g6ICR7d2luZG93LmxvY2F0aW9uLmhhc2h9YDtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dXYXJuaW5nKGVycm9yTWVzc2FnZSk7XG4gICAgICB0aGlzLnJlc2V0QXV0aG9yaXphdGlvbkRhdGEoKTtcbiAgICAgIHRoaXMucHVibGlzaFVuYXV0aG9yaXplZFN0YXRlKGNhbGxiYWNrQ29udGV4dC52YWxpZGF0aW9uUmVzdWx0LCBjYWxsYmFja0NvbnRleHQuaXNSZW5ld1Byb2Nlc3MpO1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICAvLyBTVEVQIDUgdXNlckRhdGFcbiAgcHJpdmF0ZSBjYWxsYmFja1VzZXIoY2FsbGJhY2tDb250ZXh0OiBDYWxsYmFja0NvbnRleHQpOiBPYnNlcnZhYmxlPENhbGxiYWNrQ29udGV4dD4ge1xuICAgIGlmICghdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbi5hdXRvVXNlcmluZm8pIHtcbiAgICAgIGlmICghY2FsbGJhY2tDb250ZXh0LmlzUmVuZXdQcm9jZXNzKSB7XG4gICAgICAgIC8vIHVzZXJEYXRhIGlzIHNldCB0byB0aGUgaWRfdG9rZW4gZGVjb2RlZCwgYXV0byBnZXQgdXNlciBkYXRhIHNldCB0byBmYWxzZVxuICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLnNldFVzZXJEYXRhVG9TdG9yZShjYWxsYmFja0NvbnRleHQudmFsaWRhdGlvblJlc3VsdC5kZWNvZGVkSWRUb2tlbik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucHVibGlzaEF1dGhvcml6ZWRTdGF0ZShjYWxsYmFja0NvbnRleHQudmFsaWRhdGlvblJlc3VsdCwgY2FsbGJhY2tDb250ZXh0LmlzUmVuZXdQcm9jZXNzKTtcbiAgICAgIHJldHVybiBvZihjYWxsYmFja0NvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnVzZXJTZXJ2aWNlXG4gICAgICAuZ2V0QW5kUGVyc2lzdFVzZXJEYXRhSW5TdG9yZShcbiAgICAgICAgY2FsbGJhY2tDb250ZXh0LmlzUmVuZXdQcm9jZXNzLFxuICAgICAgICBjYWxsYmFja0NvbnRleHQudmFsaWRhdGlvblJlc3VsdC5pZFRva2VuLFxuICAgICAgICBjYWxsYmFja0NvbnRleHQudmFsaWRhdGlvblJlc3VsdC5kZWNvZGVkSWRUb2tlblxuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgodXNlckRhdGEpID0+IHtcbiAgICAgICAgICBpZiAoISF1c2VyRGF0YSkge1xuICAgICAgICAgICAgaWYgKCFjYWxsYmFja0NvbnRleHQucmVmcmVzaFRva2VuKSB7XG4gICAgICAgICAgICAgIHRoaXMuZmxvd3NEYXRhU2VydmljZS5zZXRTZXNzaW9uU3RhdGUoY2FsbGJhY2tDb250ZXh0LmF1dGhSZXN1bHQuc2Vzc2lvbl9zdGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnB1Ymxpc2hBdXRob3JpemVkU3RhdGUoY2FsbGJhY2tDb250ZXh0LnZhbGlkYXRpb25SZXN1bHQsIGNhbGxiYWNrQ29udGV4dC5pc1JlbmV3UHJvY2Vzcyk7XG4gICAgICAgICAgICByZXR1cm4gb2YoY2FsbGJhY2tDb250ZXh0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNldEF1dGhvcml6YXRpb25EYXRhKCk7XG4gICAgICAgICAgICB0aGlzLnB1Ymxpc2hVbmF1dGhvcml6ZWRTdGF0ZShjYWxsYmFja0NvbnRleHQudmFsaWRhdGlvblJlc3VsdCwgY2FsbGJhY2tDb250ZXh0LmlzUmVuZXdQcm9jZXNzKTtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGBDYWxsZWQgZm9yIHVzZXJEYXRhIGJ1dCB0aGV5IHdlcmUgJHt1c2VyRGF0YX1gO1xuICAgICAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ1dhcm5pbmcoZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYEZhaWxlZCB0byByZXRyaWV2ZSB1c2VyIGluZm8gd2l0aCBlcnJvcjogICR7ZXJyfWA7XG4gICAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ1dhcm5pbmcoZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvck1lc3NhZ2UpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcHVibGlzaEF1dGhvcml6ZWRTdGF0ZShzdGF0ZVZhbGlkYXRpb25SZXN1bHQ6IFN0YXRlVmFsaWRhdGlvblJlc3VsdCwgaXNSZW5ld1Byb2Nlc3M6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmF1dGhTdGF0ZVNlcnZpY2UudXBkYXRlQW5kUHVibGlzaEF1dGhTdGF0ZSh7XG4gICAgICBhdXRob3JpemF0aW9uU3RhdGU6IEF1dGhvcml6ZWRTdGF0ZS5BdXRob3JpemVkLFxuICAgICAgdmFsaWRhdGlvblJlc3VsdDogc3RhdGVWYWxpZGF0aW9uUmVzdWx0LnN0YXRlLFxuICAgICAgaXNSZW5ld1Byb2Nlc3MsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHB1Ymxpc2hVbmF1dGhvcml6ZWRTdGF0ZShzdGF0ZVZhbGlkYXRpb25SZXN1bHQ6IFN0YXRlVmFsaWRhdGlvblJlc3VsdCwgaXNSZW5ld1Byb2Nlc3M6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmF1dGhTdGF0ZVNlcnZpY2UudXBkYXRlQW5kUHVibGlzaEF1dGhTdGF0ZSh7XG4gICAgICBhdXRob3JpemF0aW9uU3RhdGU6IEF1dGhvcml6ZWRTdGF0ZS5VbmF1dGhvcml6ZWQsXG4gICAgICB2YWxpZGF0aW9uUmVzdWx0OiBzdGF0ZVZhbGlkYXRpb25SZXN1bHQuc3RhdGUsXG4gICAgICBpc1JlbmV3UHJvY2VzcyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUmVzdWx0RXJyb3JGcm9tQ2FsbGJhY2socmVzdWx0OiBhbnksIGlzUmVuZXdQcm9jZXNzOiBib29sZWFuKSB7XG4gICAgbGV0IHZhbGlkYXRpb25SZXN1bHQgPSBWYWxpZGF0aW9uUmVzdWx0LlNlY3VyZVRva2VuU2VydmVyRXJyb3I7XG5cbiAgICBpZiAoKHJlc3VsdC5lcnJvciBhcyBzdHJpbmcpID09PSAnbG9naW5fcmVxdWlyZWQnKSB7XG4gICAgICB2YWxpZGF0aW9uUmVzdWx0ID0gVmFsaWRhdGlvblJlc3VsdC5Mb2dpblJlcXVpcmVkO1xuICAgIH1cblxuICAgIHRoaXMuYXV0aFN0YXRlU2VydmljZS51cGRhdGVBbmRQdWJsaXNoQXV0aFN0YXRlKHtcbiAgICAgIGF1dGhvcml6YXRpb25TdGF0ZTogQXV0aG9yaXplZFN0YXRlLlVuYXV0aG9yaXplZCxcbiAgICAgIHZhbGlkYXRpb25SZXN1bHQsXG4gICAgICBpc1JlbmV3UHJvY2VzcyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGlzdG9yeUNsZWFuVXBUdXJuZWRPbigpIHtcbiAgICByZXR1cm4gIXRoaXMuY29uZmlndXJhdGlvblByb3ZpZGVyLm9wZW5JRENvbmZpZ3VyYXRpb24uaGlzdG9yeUNsZWFudXBPZmY7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0QnJvd3Nlckhpc3RvcnkoKSB7XG4gICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LCB3aW5kb3cuZG9jdW1lbnQudGl0bGUsIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvd3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWF1dGgtb2lkYy1jbGllbnQvc3JjLyIsInNvdXJjZXMiOlsibGliL2Zsb3dzL2Zsb3dzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDeEcsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDckgsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDaEgsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sOERBQThELENBQUM7QUFDcEgsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDaEgsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDdEgsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFHL0YsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFDbUIsOEJBQThELEVBQzlELGtDQUFzRSxFQUN0RSxvQ0FBMEUsRUFDMUUsa0JBQThDLEVBQzlDLHFDQUE0RSxFQUM1RSxvQ0FBMEUsRUFDMUUsa0NBQXNFO1FBTnRFLG1DQUE4QixHQUE5Qiw4QkFBOEIsQ0FBZ0M7UUFDOUQsdUNBQWtDLEdBQWxDLGtDQUFrQyxDQUFvQztRQUN0RSx5Q0FBb0MsR0FBcEMsb0NBQW9DLENBQXNDO1FBQzFFLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBNEI7UUFDOUMsMENBQXFDLEdBQXJDLHFDQUFxQyxDQUF1QztRQUM1RSx5Q0FBb0MsR0FBcEMsb0NBQW9DLENBQXNDO1FBQzFFLHVDQUFrQyxHQUFsQyxrQ0FBa0Ms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QyxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDYWxsYmFja0NvbnRleHQgfSBmcm9tICcuL2NhbGxiYWNrLWNvbnRleHQnO1xuaW1wb3J0IHsgQ29kZUZsb3dDYWxsYmFja0hhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi9jYWxsYmFjay1oYW5kbGluZy9jb2RlLWZsb3ctY2FsbGJhY2staGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEhpc3RvcnlKd3RLZXlzQ2FsbGJhY2tIYW5kbGVyU2VydmljZSB9IGZyb20gJy4vY2FsbGJhY2staGFuZGxpbmcvaGlzdG9yeS1qd3Qta2V5cy1jYWxsYmFjay1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW1wbGljaXRGbG93Q2FsbGJhY2tIYW5kbGVyU2VydmljZSB9IGZyb20gJy4vY2FsbGJhY2staGFuZGxpbmcvaW1wbGljaXQtZmxvdy1jYWxsYmFjay1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVmcmVzaFNlc3Npb25DYWxsYmFja0hhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi9jYWxsYmFjay1oYW5kbGluZy9yZWZyZXNoLXNlc3Npb24tY2FsbGJhY2staGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZnJlc2hUb2tlbkNhbGxiYWNrSGFuZGxlclNlcnZpY2UgfSBmcm9tICcuL2NhbGxiYWNrLWhhbmRsaW5nL3JlZnJlc2gtdG9rZW4tY2FsbGJhY2staGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFN0YXRlVmFsaWRhdGlvbkNhbGxiYWNrSGFuZGxlclNlcnZpY2UgfSBmcm9tICcuL2NhbGxiYWNrLWhhbmRsaW5nL3N0YXRlLXZhbGlkYXRpb24tY2FsbGJhY2staGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJDYWxsYmFja0hhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi9jYWxsYmFjay1oYW5kbGluZy91c2VyLWNhbGxiYWNrLWhhbmRsZXIuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGbG93c1NlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvZGVGbG93Q2FsbGJhY2tIYW5kbGVyU2VydmljZTogQ29kZUZsb3dDYWxsYmFja0hhbmRsZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW1wbGljaXRGbG93Q2FsbGJhY2tIYW5kbGVyU2VydmljZTogSW1wbGljaXRGbG93Q2FsbGJhY2tIYW5kbGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhpc3RvcnlKd3RLZXlzQ2FsbGJhY2tIYW5kbGVyU2VydmljZTogSGlzdG9yeUp3dEtleXNDYWxsYmFja0hhbmRsZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlckhhbmRsZXJTZXJ2aWNlOiBVc2VyQ2FsbGJhY2tIYW5kbGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0YXRlVmFsaWRhdGlvbkNhbGxiYWNrSGFuZGxlclNlcnZpY2U6IFN0YXRlVmFsaWRhdGlvbkNhbGxiYWNrSGFuZGxlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByZWZyZXNoU2Vzc2lvbkNhbGxiYWNrSGFuZGxlclNlcnZpY2U6IFJlZnJlc2hTZXNzaW9uQ2FsbGJhY2tIYW5kbGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlZnJlc2hUb2tlbkNhbGxiYWNrSGFuZGxlclNlcnZpY2U6IFJlZnJlc2hUb2tlbkNhbGxiYWNrSGFuZGxlclNlcnZpY2VcbiAgKSB7fVxuXG4gIHByb2Nlc3NDb2RlRmxvd0NhbGxiYWNrKHVybFRvQ2hlY2s6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmNvZGVGbG93Q2FsbGJhY2tIYW5kbGVyU2VydmljZS5jb2RlRmxvd0NhbGxiYWNrKHVybFRvQ2hlY2spLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGNhbGxiYWNrQ29udGV4dCkgPT4gdGhpcy5jb2RlRmxvd0NhbGxiYWNrSGFuZGxlclNlcnZpY2UuY29kZUZsb3dDb2RlUmVxdWVzdChjYWxsYmFja0NvbnRleHQpKSxcbiAgICAgIHN3aXRjaE1hcCgoY2FsbGJhY2tDb250ZXh0KSA9PiB0aGlzLmhpc3RvcnlKd3RLZXlzQ2FsbGJhY2tIYW5kbGVyU2VydmljZS5jYWxsYmFja0hpc3RvcnlBbmRSZXNldEp3dEtleXMoY2FsbGJhY2tDb250ZXh0KSksXG4gICAgICBzd2l0Y2hNYXAoKGNhbGxiYWNrQ29udGV4dCkgPT4gdGhpcy5zdGF0ZVZhbGlkYXRpb25DYWxsYmFja0hhbmRsZXJTZXJ2aWNlLmNhbGxiYWNrU3RhdGVWYWxpZGF0aW9uKGNhbGxiYWNrQ29udGV4dCkpLFxuICAgICAgc3dpdGNoTWFwKChjYWxsYmFja0NvbnRleHQpID0+IHRoaXMudXNlckhhbmRsZXJTZXJ2aWNlLmNhbGxiYWNrVXNlcihjYWxsYmFja0NvbnRleHQpKVxuICAgICk7XG4gIH1cblxuICBwcm9jZXNzU2lsZW50UmVuZXdDb2RlRmxvd0NhbGxiYWNrKGZpcnN0Q29udGV4dDogQ2FsbGJhY2tDb250ZXh0KSB7XG4gICAgcmV0dXJuIHRoaXMuY29kZUZsb3dDYWxsYmFja0hhbmRsZXJTZXJ2aWNlLmNvZGVGbG93Q29kZVJlcXVlc3QoZmlyc3RDb250ZXh0KS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChjYWxsYmFja0NvbnRleHQpID0+IHRoaXMuaGlzdG9yeUp3dEtleXNDYWxsYmFja0hhbmRsZXJTZXJ2aWNlLmNhbGxiYWNrSGlzdG9yeUFuZFJlc2V0Snd0S2V5cyhjYWxsYmFja0NvbnRleHQpKSxcbiAgICAgIHN3aXRjaE1hcCgoY2FsbGJhY2tDb250ZXh0KSA9PiB0aGlzLnN0YXRlVmFsaWRhdGlvbkNhbGxiYWNrSGFuZGxlclNlcnZpY2UuY2FsbGJhY2tTdGF0ZVZhbGlkYXRpb24oY2FsbGJhY2tDb250ZXh0KSksXG4gICAgICBzd2l0Y2hNYXAoKGNhbGxiYWNrQ29udGV4dCkgPT4gdGhpcy51c2VySGFuZGxlclNlcnZpY2UuY2FsbGJhY2tVc2VyKGNhbGxiYWNrQ29udGV4dCkpXG4gICAgKTtcbiAgfVxuXG4gIHByb2Nlc3NJbXBsaWNpdEZsb3dDYWxsYmFjayhoYXNoPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1wbGljaXRGbG93Q2FsbGJhY2tIYW5kbGVyU2VydmljZS5pbXBsaWNpdEZsb3dDYWxsYmFjayhoYXNoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChjYWxsYmFja0NvbnRleHQpID0+IHRoaXMuaGlzdG9yeUp3dEtleXNDYWxsYmFja0hhbmRsZXJTZXJ2aWNlLmNhbGxiYWNrSGlzdG9yeUFuZFJlc2V0Snd0S2V5cyhjYWxsYmFja0NvbnRleHQpKSxcbiAgICAgIHN3aXRjaE1hcCgoY2FsbGJhY2tDb250ZXh0KSA9PiB0aGlzLnN0YXRlVmFsaWRhdGlvbkNhbGxiYWNrSGFuZGxlclNlcnZpY2UuY2FsbGJhY2tTdGF0ZVZhbGlkYXRpb24oY2FsbGJhY2tDb250ZXh0KSksXG4gICAgICBzd2l0Y2hNYXAoKGNhbGxiYWNrQ29udGV4dCkgPT4gdGhpcy51c2VySGFuZGxlclNlcnZpY2UuY2FsbGJhY2tVc2VyKGNhbGxiYWNrQ29udGV4dCkpXG4gICAgKTtcbiAgfVxuXG4gIHByb2Nlc3NSZWZyZXNoVG9rZW4oY3VzdG9tUGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIH0pIHtcbiAgICByZXR1cm4gdGhpcy5yZWZyZXNoU2Vzc2lvbkNhbGxiYWNrSGFuZGxlclNlcnZpY2UucmVmcmVzaFNlc3Npb25XaXRoUmVmcmVzaFRva2VucygpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGNhbGxiYWNrQ29udGV4dCkgPT4gdGhpcy5yZWZyZXNoVG9rZW5DYWxsYmFja0hhbmRsZXJTZXJ2aWNlLnJlZnJlc2hUb2tlbnNSZXF1ZXN0VG9rZW5zKGNhbGxiYWNrQ29udGV4dCwgY3VzdG9tUGFyYW1zKSksXG4gICAgICBzd2l0Y2hNYXAoKGNhbGxiYWNrQ29udGV4dCkgPT4gdGhpcy5oaXN0b3J5Snd0S2V5c0NhbGxiYWNrSGFuZGxlclNlcnZpY2UuY2FsbGJhY2tIaXN0b3J5QW5kUmVzZXRKd3RLZXlzKGNhbGxiYWNrQ29udGV4dCkpLFxuICAgICAgc3dpdGNoTWFwKChjYWxsYmFja0NvbnRleHQpID0+IHRoaXMuc3RhdGVWYWxpZGF0aW9uQ2FsbGJhY2tIYW5kbGVyU2VydmljZS5jYWxsYmFja1N0YXRlVmFsaWRhdGlvbihjYWxsYmFja0NvbnRleHQpKSxcbiAgICAgIHN3aXRjaE1hcCgoY2FsbGJhY2tDb250ZXh0KSA9PiB0aGlzLnVzZXJIYW5kbGVyU2VydmljZS5jYWxsYmFja1VzZXIoY2FsbGJhY2tDb250ZXh0KSlcbiAgICApO1xuICB9XG59XG4iXX0=

@@ -12,2 +12,3 @@ import { HttpParams } from '@angular/common/http';

import { FlowsService } from '../flows/flows.service';
import { ResetAuthDataService } from '../flows/reset-auth-data.service';
import { LoggerService } from '../logging/logger.service';

@@ -19,6 +20,7 @@ import { FlowHelper } from '../utils/flowHelper/flow-helper.service';

export class SilentRenewService {
constructor(configurationProvider, iFrameService, flowsService, flowsDataService, authStateService, loggerService, flowHelper, implicitFlowCallbackService, intervallService) {
constructor(configurationProvider, iFrameService, flowsService, resetAuthDataService, flowsDataService, authStateService, loggerService, flowHelper, implicitFlowCallbackService, intervalService) {
this.configurationProvider = configurationProvider;
this.iFrameService = iFrameService;
this.flowsService = flowsService;
this.resetAuthDataService = resetAuthDataService;
this.flowsDataService = flowsDataService;

@@ -29,3 +31,3 @@ this.authStateService = authStateService;

this.implicitFlowCallbackService = implicitFlowCallbackService;
this.intervallService = intervallService;
this.intervalService = intervalService;
this.refreshSessionWithIFrameCompletedInternal$ = new Subject();

@@ -57,5 +59,5 @@ }

});
this.flowsService.resetAuthorizationData();
this.resetAuthDataService.resetAuthorizationData();
this.flowsDataService.setNonce('');
this.intervallService.stopPeriodicallTokenCheck();
this.intervalService.stopPeriodicallTokenCheck();
return throwError(error);

@@ -78,4 +80,4 @@ }

return this.flowsService.processSilentRenewCodeFlowCallback(callbackContext).pipe(catchError((errorFromFlow) => {
this.intervallService.stopPeriodicallTokenCheck();
this.flowsService.resetAuthorizationData();
this.intervalService.stopPeriodicallTokenCheck();
this.resetAuthDataService.resetAuthorizationData();
return throwError(errorFromFlow);

@@ -118,2 +120,3 @@ }));

{ type: FlowsService },
{ type: ResetAuthDataService },
{ type: FlowsDataService },

@@ -126,2 +129,2 @@ { type: AuthStateService },

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lsZW50LXJlbmV3LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdXRoLW9pZGMtY2xpZW50L3NyYy8iLCJzb3VyY2VzIjpbImxpYi9pZnJhbWUvc2lsZW50LXJlbmV3LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDekYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTFELE1BQU0sa0NBQWtDLEdBQUcsd0JBQXdCLENBQUM7QUFHcEUsTUFBTSxP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QUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQ2xELENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsa0NBQWtDLENBQUMsQ0FBQztJQUNsRixDQUFDOzs7WUE5R0YsVUFBVTs7O1lBWEYscUJBQXFCO1lBT3JCLGFBQWE7WUFKYixZQUFZO1lBRFosZ0JBQWdCO1lBTmhCLGdCQUFnQjtZQVFoQixhQUFhO1lBQ2IsVUFBVTtZQVBWLDJCQUEyQjtZQUMzQixnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgb2YsIFN1YmplY3QsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBdXRoU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aFN0YXRlL2F1dGgtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBBdXRob3JpemVkU3RhdGUgfSBmcm9tICcuLi9hdXRoU3RhdGUvYXV0aG9yaXplZC1zdGF0ZSc7XG5pbXBvcnQgeyBJbXBsaWNpdEZsb3dDYWxsYmFja1NlcnZpY2UgfSBmcm9tICcuLi9jYWxsYmFjay9pbXBsaWNpdC1mbG93LWNhbGxiYWNrLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW50ZXJ2YWxsU2VydmljZSB9IGZyb20gJy4uL2NhbGxiYWNrL2ludGVydmFsbC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25Qcm92aWRlciB9IGZyb20gJy4uL2NvbmZpZy9jb25maWcucHJvdmlkZXInO1xuaW1wb3J0IHsgQ2FsbGJhY2tDb250ZXh0IH0gZnJvbSAnLi4vZmxvd3MvY2FsbGJhY2stY29udGV4dCc7XG5pbXBvcnQgeyBGbG93c0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vZmxvd3MvZmxvd3MtZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dzU2VydmljZSB9IGZyb20gJy4uL2Zsb3dzL2Zsb3dzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uL2xvZ2dpbmcvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmxvd0hlbHBlciB9IGZyb20gJy4uL3V0aWxzL2Zsb3dIZWxwZXIvZmxvdy1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnLi4vdmFsaWRhdGlvbi92YWxpZGF0aW9uLXJlc3VsdCc7XG5pbXBvcnQgeyBJRnJhbWVTZXJ2aWNlIH0gZnJvbSAnLi9leGlzdGluZy1pZnJhbWUuc2VydmljZSc7XG5cbmNvbnN0IElGUkFNRV9GT1JfU0lMRU5UX1JFTkVXX0lERU5USUZJRVIgPSAnbXlpRnJhbWVGb3JTaWxlbnRSZW5ldyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTaWxlbnRSZW5ld1NlcnZpY2Uge1xuICBwcml2YXRlIHJlZnJlc2hTZXNzaW9uV2l0aElGcmFtZUNvbXBsZXRlZEludGVybmFsJCA9IG5ldyBTdWJqZWN0PENhbGxiYWNrQ29udGV4dD4oKTtcblxuICBnZXQgcmVmcmVzaFNlc3Npb25XaXRoSUZyYW1lQ29tcGxldGVkJCgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWZyZXNoU2Vzc2lvbldpdGhJRnJhbWVDb21wbGV0ZWRJbnRlcm5hbCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25Qcm92aWRlcjogQ29uZmlndXJhdGlvblByb3ZpZGVyLFxuICAgIHByaXZhdGUgaUZyYW1lU2VydmljZTogSUZyYW1lU2VydmljZSxcbiAgICBwcml2YXRlIGZsb3dzU2VydmljZTogRmxvd3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd3NEYXRhU2VydmljZTogRmxvd3NEYXRhU2VydmljZSxcbiAgICBwcml2YXRlIGF1dGhTdGF0ZVNlcnZpY2U6IEF1dGhTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2dnZXJTZXJ2aWNlOiBMb2dnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0hlbHBlcjogRmxvd0hlbHBlcixcbiAgICBwcml2YXRlIGltcGxpY2l0Rmxvd0NhbGxiYWNrU2VydmljZTogSW1wbGljaXRGbG93Q2FsbGJhY2tTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW50ZXJ2YWxsU2VydmljZTogSW50ZXJ2YWxsU2VydmljZVxuICApIHt9XG5cbiAgZ2V0T3JDcmVhdGVJZnJhbWUoKTogSFRNTElGcmFtZUVsZW1lbnQge1xuICAgIGNvbnN0IGV4aXN0aW5nSWZyYW1lID0gdGhpcy5nZXRFeGlzdGluZ0lmcmFtZSgpO1xuXG4gICAgaWYgKCFleGlzdGluZ0lmcmFtZSkge1xuICAgICAgcmV0dXJuIHRoaXMuaUZyYW1lU2VydmljZS5hZGRJRnJhbWVUb1dpbmRvd0JvZHkoSUZSQU1FX0ZPUl9TSUxFTlRfUkVORVdfSURFTlRJRklFUik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4aXN0aW5nSWZyYW1lO1xuICB9XG5cbiAgaXNTaWxlbnRSZW5ld0NvbmZpZ3VyZWQoKSB7XG4gICAgcmV0dXJuICF0aGlzLmNvbmZpZ3VyYXRpb25Qcm92aWRlci5vcGVuSURDb25maWd1cmF0aW9uLnVzZVJlZnJlc2hUb2tlbiAmJiB0aGlzLmNvbmZpZ3VyYXRpb25Qcm92aWRlci5vcGVuSURDb25maWd1cmF0aW9uLnNpbGVudFJlbmV3O1xuICB9XG5cbiAgY29kZUZsb3dDYWxsYmFja1NpbGVudFJlbmV3SWZyYW1lKHVybFBhcnRzKSB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoe1xuICAgICAgZnJvbVN0cmluZzogdXJsUGFydHNbMV0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBlcnJvciA9IHBhcmFtcy5nZXQoJ2Vycm9yJyk7XG5cbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIHRoaXMuYXV0aFN0YXRlU2VydmljZS51cGRhdGVBbmRQdWJsaXNoQXV0aFN0YXRlKHtcbiAgICAgICAgYXV0aG9yaXphdGlvblN0YXRlOiBBdXRob3JpemVkU3RhdGUuVW5hdXRob3JpemVkLFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0OiBWYWxpZGF0aW9uUmVzdWx0LkxvZ2luUmVxdWlyZWQsXG4gICAgICAgIGlzUmVuZXdQcm9jZXNzOiB0cnVlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmZsb3dzU2VydmljZS5yZXNldEF1dGhvcml6YXRpb25EYXRhKCk7XG4gICAgICB0aGlzLmZsb3dzRGF0YVNlcnZpY2Uuc2V0Tm9uY2UoJycpO1xuICAgICAgdGhpcy5pbnRlcnZhbGxTZXJ2aWNlLnN0b3BQZXJpb2RpY2FsbFRva2VuQ2hlY2soKTtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb2RlID0gcGFyYW1zLmdldCgnY29kZScpO1xuICAgIGNvbnN0IHN0YXRlID0gcGFyYW1zLmdldCgnc3RhdGUnKTtcbiAgICBjb25zdCBzZXNzaW9uU3RhdGUgPSBwYXJhbXMuZ2V0KCdzZXNzaW9uX3N0YXRlJyk7XG5cbiAgICBjb25zdCBjYWxsYmFja0NvbnRleHQgPSB7XG4gICAgICBjb2RlLFxuICAgICAgcmVmcmVzaFRva2VuOiBudWxsLFxuICAgICAgc3RhdGUsXG4gICAgICBzZXNzaW9uU3RhdGUsXG4gICAgICBhdXRoUmVzdWx0OiBudWxsLFxuICAgICAgaXNSZW5ld1Byb2Nlc3M6IHRydWUsXG4gICAgICBqd3RLZXlzOiBudWxsLFxuICAgICAgdmFsaWRhdGlvblJlc3VsdDogbnVsbCxcbiAgICAgIGV4aXN0aW5nSWRUb2tlbjogbnVsbCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuZmxvd3NTZXJ2aWNlLnByb2Nlc3NTaWxlbnRSZW5ld0NvZGVGbG93Q2FsbGJhY2soY2FsbGJhY2tDb250ZXh0KS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3JGcm9tRmxvdykgPT4ge1xuICAgICAgICB0aGlzLmludGVydmFsbFNlcnZpY2Uuc3RvcFBlcmlvZGljYWxsVG9rZW5DaGVjaygpO1xuICAgICAgICB0aGlzLmZsb3dzU2VydmljZS5yZXNldEF1dGhvcml6YXRpb25EYXRhKCk7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yRnJvbUZsb3cpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc2lsZW50UmVuZXdFdmVudEhhbmRsZXIoZTogQ3VzdG9tRXZlbnQpIHtcbiAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ3NpbGVudFJlbmV3RXZlbnRIYW5kbGVyJyk7XG4gICAgaWYgKCFlLmRldGFpbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYWxsYmFjayQgPSBvZihudWxsKTtcblxuICAgIGNvbnN0IGlzQ29kZUZsb3cgPSB0aGlzLmZsb3dIZWxwZXIuaXNDdXJyZW50Rmxvd0NvZGVGbG93KCk7XG5cbiAgICBpZiAoaXNDb2RlRmxvdykge1xuICAgICAgY29uc3QgdXJsUGFydHMgPSBlLmRldGFpbC50b1N0cmluZygpLnNwbGl0KCc/Jyk7XG4gICAgICBjYWxsYmFjayQgPSB0aGlzLmNvZGVGbG93Q2FsbGJhY2tTaWxlbnRSZW5ld0lmcmFtZSh1cmxQYXJ0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxiYWNrJCA9IHRoaXMuaW1wbGljaXRGbG93Q2FsbGJhY2tTZXJ2aWNlLmF1dGhvcml6ZWRJbXBsaWNpdEZsb3dDYWxsYmFjayhlLmRldGFpbCk7XG4gICAgfVxuXG4gICAgY2FsbGJhY2skLnN1YnNjcmliZShcbiAgICAgIChjYWxsYmFja0NvbnRleHQpID0+IHtcbiAgICAgICAgdGhpcy5yZWZyZXNoU2Vzc2lvbldpdGhJRnJhbWVDb21wbGV0ZWRJbnRlcm5hbCQubmV4dChjYWxsYmFja0NvbnRleHQpO1xuICAgICAgICB0aGlzLmZsb3dzRGF0YVNlcnZpY2UucmVzZXRTaWxlbnRSZW5ld1J1bm5pbmcoKTtcbiAgICAgIH0sXG4gICAgICAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0Vycm9yKCdFcnJvcjogJyArIGVycik7XG4gICAgICAgIHRoaXMucmVmcmVzaFNlc3Npb25XaXRoSUZyYW1lQ29tcGxldGVkSW50ZXJuYWwkLm5leHQobnVsbCk7XG4gICAgICAgIHRoaXMuZmxvd3NEYXRhU2VydmljZS5yZXNldFNpbGVudFJlbmV3UnVubmluZygpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEV4aXN0aW5nSWZyYW1lKCkge1xuICAgIHJldHVybiB0aGlzLmlGcmFtZVNlcnZpY2UuZ2V0RXhpc3RpbmdJRnJhbWUoSUZSQU1FX0ZPUl9TSUxFTlRfUkVORVdfSURFTlRJRklFUik7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lsZW50LXJlbmV3LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdXRoLW9pZGMtY2xpZW50L3NyYy8iLCJzb3VyY2VzIjpbImxpYi9pZnJhbWUvc2lsZW50LXJlbmV3LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDekYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FB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O1lBQ1gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQywwQ0FBMEMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDbEQsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7OztZQS9HRixVQUFVOzs7WUFaRixxQkFBcUI7WUFRckIsYUFBYTtZQUxiLFlBQVk7WUFDWixvQkFBb0I7WUFGcEIsZ0JBQWdCO1lBTmhCLGdCQUFnQjtZQVNoQixhQUFhO1lBQ2IsVUFBVTtZQVJWLDJCQUEyQjtZQUMzQixnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgb2YsIFN1YmplY3QsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBdXRoU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aFN0YXRlL2F1dGgtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBBdXRob3JpemVkU3RhdGUgfSBmcm9tICcuLi9hdXRoU3RhdGUvYXV0aG9yaXplZC1zdGF0ZSc7XG5pbXBvcnQgeyBJbXBsaWNpdEZsb3dDYWxsYmFja1NlcnZpY2UgfSBmcm9tICcuLi9jYWxsYmFjay9pbXBsaWNpdC1mbG93LWNhbGxiYWNrLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW50ZXJ2YWxsU2VydmljZSB9IGZyb20gJy4uL2NhbGxiYWNrL2ludGVydmFsbC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25Qcm92aWRlciB9IGZyb20gJy4uL2NvbmZpZy9jb25maWcucHJvdmlkZXInO1xuaW1wb3J0IHsgQ2FsbGJhY2tDb250ZXh0IH0gZnJvbSAnLi4vZmxvd3MvY2FsbGJhY2stY29udGV4dCc7XG5pbXBvcnQgeyBGbG93c0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vZmxvd3MvZmxvd3MtZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dzU2VydmljZSB9IGZyb20gJy4uL2Zsb3dzL2Zsb3dzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzZXRBdXRoRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9mbG93cy9yZXNldC1hdXRoLWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nZ2luZy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBGbG93SGVscGVyIH0gZnJvbSAnLi4vdXRpbHMvZmxvd0hlbHBlci9mbG93LWhlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRpb24tcmVzdWx0JztcbmltcG9ydCB7IElGcmFtZVNlcnZpY2UgfSBmcm9tICcuL2V4aXN0aW5nLWlmcmFtZS5zZXJ2aWNlJztcblxuY29uc3QgSUZSQU1FX0ZPUl9TSUxFTlRfUkVORVdfSURFTlRJRklFUiA9ICdteWlGcmFtZUZvclNpbGVudFJlbmV3JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNpbGVudFJlbmV3U2VydmljZSB7XG4gIHByaXZhdGUgcmVmcmVzaFNlc3Npb25XaXRoSUZyYW1lQ29tcGxldGVkSW50ZXJuYWwkID0gbmV3IFN1YmplY3Q8Q2FsbGJhY2tDb250ZXh0PigpO1xuXG4gIGdldCByZWZyZXNoU2Vzc2lvbldpdGhJRnJhbWVDb21wbGV0ZWQkKCkge1xuICAgIHJldHVybiB0aGlzLnJlZnJlc2hTZXNzaW9uV2l0aElGcmFtZUNvbXBsZXRlZEludGVybmFsJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblByb3ZpZGVyOiBDb25maWd1cmF0aW9uUHJvdmlkZXIsXG4gICAgcHJpdmF0ZSBpRnJhbWVTZXJ2aWNlOiBJRnJhbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd3NTZXJ2aWNlOiBGbG93c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXNldEF1dGhEYXRhU2VydmljZTogUmVzZXRBdXRoRGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93c0RhdGFTZXJ2aWNlOiBGbG93c0RhdGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXV0aFN0YXRlU2VydmljZTogQXV0aFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlclNlcnZpY2U6IExvZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93SGVscGVyOiBGbG93SGVscGVyLFxuICAgIHByaXZhdGUgaW1wbGljaXRGbG93Q2FsbGJhY2tTZXJ2aWNlOiBJbXBsaWNpdEZsb3dDYWxsYmFja1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnRlcnZhbFNlcnZpY2U6IEludGVydmFsbFNlcnZpY2VcbiAgKSB7fVxuXG4gIGdldE9yQ3JlYXRlSWZyYW1lKCk6IEhUTUxJRnJhbWVFbGVtZW50IHtcbiAgICBjb25zdCBleGlzdGluZ0lmcmFtZSA9IHRoaXMuZ2V0RXhpc3RpbmdJZnJhbWUoKTtcblxuICAgIGlmICghZXhpc3RpbmdJZnJhbWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmlGcmFtZVNlcnZpY2UuYWRkSUZyYW1lVG9XaW5kb3dCb2R5KElGUkFNRV9GT1JfU0lMRU5UX1JFTkVXX0lERU5USUZJRVIpO1xuICAgIH1cblxuICAgIHJldHVybiBleGlzdGluZ0lmcmFtZTtcbiAgfVxuXG4gIGlzU2lsZW50UmVuZXdDb25maWd1cmVkKCkge1xuICAgIHJldHVybiAhdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbi51c2VSZWZyZXNoVG9rZW4gJiYgdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbi5zaWxlbnRSZW5ldztcbiAgfVxuXG4gIGNvZGVGbG93Q2FsbGJhY2tTaWxlbnRSZW5ld0lmcmFtZSh1cmxQYXJ0cykge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcbiAgICAgIGZyb21TdHJpbmc6IHVybFBhcnRzWzFdLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZXJyb3IgPSBwYXJhbXMuZ2V0KCdlcnJvcicpO1xuXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICB0aGlzLmF1dGhTdGF0ZVNlcnZpY2UudXBkYXRlQW5kUHVibGlzaEF1dGhTdGF0ZSh7XG4gICAgICAgIGF1dGhvcml6YXRpb25TdGF0ZTogQXV0aG9yaXplZFN0YXRlLlVuYXV0aG9yaXplZCxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdDogVmFsaWRhdGlvblJlc3VsdC5Mb2dpblJlcXVpcmVkLFxuICAgICAgICBpc1JlbmV3UHJvY2VzczogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5yZXNldEF1dGhEYXRhU2VydmljZS5yZXNldEF1dGhvcml6YXRpb25EYXRhKCk7XG4gICAgICB0aGlzLmZsb3dzRGF0YVNlcnZpY2Uuc2V0Tm9uY2UoJycpO1xuICAgICAgdGhpcy5pbnRlcnZhbFNlcnZpY2Uuc3RvcFBlcmlvZGljYWxsVG9rZW5DaGVjaygpO1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvZGUgPSBwYXJhbXMuZ2V0KCdjb2RlJyk7XG4gICAgY29uc3Qgc3RhdGUgPSBwYXJhbXMuZ2V0KCdzdGF0ZScpO1xuICAgIGNvbnN0IHNlc3Npb25TdGF0ZSA9IHBhcmFtcy5nZXQoJ3Nlc3Npb25fc3RhdGUnKTtcblxuICAgIGNvbnN0IGNhbGxiYWNrQ29udGV4dCA9IHtcbiAgICAgIGNvZGUsXG4gICAgICByZWZyZXNoVG9rZW46IG51bGwsXG4gICAgICBzdGF0ZSxcbiAgICAgIHNlc3Npb25TdGF0ZSxcbiAgICAgIGF1dGhSZXN1bHQ6IG51bGwsXG4gICAgICBpc1JlbmV3UHJvY2VzczogdHJ1ZSxcbiAgICAgIGp3dEtleXM6IG51bGwsXG4gICAgICB2YWxpZGF0aW9uUmVzdWx0OiBudWxsLFxuICAgICAgZXhpc3RpbmdJZFRva2VuOiBudWxsLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5mbG93c1NlcnZpY2UucHJvY2Vzc1NpbGVudFJlbmV3Q29kZUZsb3dDYWxsYmFjayhjYWxsYmFja0NvbnRleHQpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKChlcnJvckZyb21GbG93KSA9PiB7XG4gICAgICAgIHRoaXMuaW50ZXJ2YWxTZXJ2aWNlLnN0b3BQZXJpb2RpY2FsbFRva2VuQ2hlY2soKTtcbiAgICAgICAgdGhpcy5yZXNldEF1dGhEYXRhU2VydmljZS5yZXNldEF1dGhvcml6YXRpb25EYXRhKCk7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yRnJvbUZsb3cpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc2lsZW50UmVuZXdFdmVudEhhbmRsZXIoZTogQ3VzdG9tRXZlbnQpIHtcbiAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ3NpbGVudFJlbmV3RXZlbnRIYW5kbGVyJyk7XG4gICAgaWYgKCFlLmRldGFpbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYWxsYmFjayQgPSBvZihudWxsKTtcblxuICAgIGNvbnN0IGlzQ29kZUZsb3cgPSB0aGlzLmZsb3dIZWxwZXIuaXNDdXJyZW50Rmxvd0NvZGVGbG93KCk7XG5cbiAgICBpZiAoaXNDb2RlRmxvdykge1xuICAgICAgY29uc3QgdXJsUGFydHMgPSBlLmRldGFpbC50b1N0cmluZygpLnNwbGl0KCc/Jyk7XG4gICAgICBjYWxsYmFjayQgPSB0aGlzLmNvZGVGbG93Q2FsbGJhY2tTaWxlbnRSZW5ld0lmcmFtZSh1cmxQYXJ0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxiYWNrJCA9IHRoaXMuaW1wbGljaXRGbG93Q2FsbGJhY2tTZXJ2aWNlLmF1dGhvcml6ZWRJbXBsaWNpdEZsb3dDYWxsYmFjayhlLmRldGFpbCk7XG4gICAgfVxuXG4gICAgY2FsbGJhY2skLnN1YnNjcmliZShcbiAgICAgIChjYWxsYmFja0NvbnRleHQpID0+IHtcbiAgICAgICAgdGhpcy5yZWZyZXNoU2Vzc2lvbldpdGhJRnJhbWVDb21wbGV0ZWRJbnRlcm5hbCQubmV4dChjYWxsYmFja0NvbnRleHQpO1xuICAgICAgICB0aGlzLmZsb3dzRGF0YVNlcnZpY2UucmVzZXRTaWxlbnRSZW5ld1J1bm5pbmcoKTtcbiAgICAgIH0sXG4gICAgICAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0Vycm9yKCdFcnJvcjogJyArIGVycik7XG4gICAgICAgIHRoaXMucmVmcmVzaFNlc3Npb25XaXRoSUZyYW1lQ29tcGxldGVkSW50ZXJuYWwkLm5leHQobnVsbCk7XG4gICAgICAgIHRoaXMuZmxvd3NEYXRhU2VydmljZS5yZXNldFNpbGVudFJlbmV3UnVubmluZygpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEV4aXN0aW5nSWZyYW1lKCkge1xuICAgIHJldHVybiB0aGlzLmlGcmFtZVNlcnZpY2UuZ2V0RXhpc3RpbmdJRnJhbWUoSUZSQU1FX0ZPUl9TSUxFTlRfUkVORVdfSURFTlRJRklFUik7XG4gIH1cbn1cbiJdfQ==

@@ -77,2 +77,2 @@ import { Injectable } from '@angular/core';

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdXRoLW9pZGMtY2xpZW50L3NyYy8iLCJzb3VyY2VzIjpbImxpYi9sb2dnaW5nL2xvZ2dlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUd2QyxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUFvQixxQkFBNEM7UUFBNUMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtJQUFHLENBQUM7SUFFcEUsUUFBUSxDQUFDLE9BQVksRUFBRSxHQUFHLElBQVc7UUFDbkMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtZQUM3QixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN6QixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQ2pDO2FBQU07WUFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFZLEVBQUUsR0FBRyxJQUFjO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDekIsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtZQUM3QixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM1RCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN6QixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQ2hDO2FBQU07WUFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFZLEVBQUUsR0FBRyxJQUFjO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDekIsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtZQUM3QixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM3RCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQy9CO2FBQU07WUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVPLG1DQUFtQyxDQUFDLFFBQWtCO1FBQzVELE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUM7SUFDN0UsQ0FBQztJQUVPLGFBQWE7UUFDbkIsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUM7UUFFMUUsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO1lBQ3JCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUU7WUFDMUIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLGtCQUFrQjs7UUFDeEIsT0FBTyxPQUFBLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsMENBQUUsUUFBUSxNQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDcEYsQ0FBQzs7O1lBNUVGLFVBQVU7OztZQUhGLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25Qcm92aWRlciB9IGZyb20gJy4uL2NvbmZpZy9jb25maWcucHJvdmlkZXInO1xuaW1wb3J0IHsgTG9nTGV2ZWwgfSBmcm9tICcuL2xvZy1sZXZlbCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBMb2dnZXJTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maWd1cmF0aW9uUHJvdmlkZXI6IENvbmZpZ3VyYXRpb25Qcm92aWRlcikge31cblxuICBsb2dFcnJvcihtZXNzYWdlOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgaWYgKHRoaXMubG9nZ2luZ0lzVHVybmVkT2ZmKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoISFhcmdzICYmIGFyZ3MubGVuZ3RoKSB7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIC4uLmFyZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIGxvZ1dhcm5pbmcobWVzc2FnZTogYW55LCAuLi5hcmdzOiBzdHJpbmdbXSkge1xuICAgIGlmICghdGhpcy5sb2dMZXZlbElzU2V0KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sb2dnaW5nSXNUdXJuZWRPZmYoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jdXJyZW50TG9nTGV2ZWxJc0VxdWFsT3JTbWFsbGVyVGhhbihMb2dMZXZlbC5XYXJuKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghIWFyZ3MgJiYgYXJncy5sZW5ndGgpIHtcbiAgICAgIGNvbnNvbGUud2FybihtZXNzYWdlLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIGxvZ0RlYnVnKG1lc3NhZ2U6IGFueSwgLi4uYXJnczogc3RyaW5nW10pIHtcbiAgICBpZiAoIXRoaXMubG9nTGV2ZWxJc1NldCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubG9nZ2luZ0lzVHVybmVkT2ZmKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY3VycmVudExvZ0xldmVsSXNFcXVhbE9yU21hbGxlclRoYW4oTG9nTGV2ZWwuRGVidWcpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCEhYXJncyAmJiBhcmdzLmxlbmd0aCkge1xuICAgICAgY29uc29sZS5sb2cobWVzc2FnZSwgLi4uYXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3VycmVudExvZ0xldmVsSXNFcXVhbE9yU21hbGxlclRoYW4obG9nTGV2ZWw6IExvZ0xldmVsKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblByb3ZpZGVyLm9wZW5JRENvbmZpZ3VyYXRpb24ubG9nTGV2ZWwgPD0gbG9nTGV2ZWw7XG4gIH1cblxuICBwcml2YXRlIGxvZ0xldmVsSXNTZXQoKSB7XG4gICAgY29uc3QgeyBsb2dMZXZlbCB9ID0gdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbiB8fCB7fTtcblxuICAgIGlmIChsb2dMZXZlbCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChsb2dMZXZlbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGxvZ2dpbmdJc1R1cm5lZE9mZigpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbj8ubG9nTGV2ZWwgPT09IExvZ0xldmVsLk5vbmU7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdXRoLW9pZGMtY2xpZW50L3NyYy8iLCJzb3VyY2VzIjpbImxpYi9sb2dnaW5nL2xvZ2dlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUd2QyxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUFvQixxQkFBNEM7UUFBNUMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtJQUFHLENBQUM7SUFFcEUsUUFBUSxDQUFDLE9BQVksRUFBRSxHQUFHLElBQVc7UUFDbkMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtZQUM3QixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN6QixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQ2pDO2FBQU07WUFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFZLEVBQUUsR0FBRyxJQUFXO1FBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDekIsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtZQUM3QixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM1RCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN6QixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQ2hDO2FBQU07WUFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFZLEVBQUUsR0FBRyxJQUFXO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDekIsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtZQUM3QixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM3RCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQy9CO2FBQU07WUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVPLG1DQUFtQyxDQUFDLFFBQWtCO1FBQzVELE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUM7SUFDN0UsQ0FBQztJQUVPLGFBQWE7UUFDbkIsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUM7UUFFMUUsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO1lBQ3JCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUU7WUFDMUIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLGtCQUFrQjs7UUFDeEIsT0FBTyxPQUFBLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsMENBQUUsUUFBUSxNQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDcEYsQ0FBQzs7O1lBNUVGLFVBQVU7OztZQUhGLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25Qcm92aWRlciB9IGZyb20gJy4uL2NvbmZpZy9jb25maWcucHJvdmlkZXInO1xuaW1wb3J0IHsgTG9nTGV2ZWwgfSBmcm9tICcuL2xvZy1sZXZlbCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBMb2dnZXJTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maWd1cmF0aW9uUHJvdmlkZXI6IENvbmZpZ3VyYXRpb25Qcm92aWRlcikge31cblxuICBsb2dFcnJvcihtZXNzYWdlOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgaWYgKHRoaXMubG9nZ2luZ0lzVHVybmVkT2ZmKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoISFhcmdzICYmIGFyZ3MubGVuZ3RoKSB7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIC4uLmFyZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIGxvZ1dhcm5pbmcobWVzc2FnZTogYW55LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghdGhpcy5sb2dMZXZlbElzU2V0KCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sb2dnaW5nSXNUdXJuZWRPZmYoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jdXJyZW50TG9nTGV2ZWxJc0VxdWFsT3JTbWFsbGVyVGhhbihMb2dMZXZlbC5XYXJuKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghIWFyZ3MgJiYgYXJncy5sZW5ndGgpIHtcbiAgICAgIGNvbnNvbGUud2FybihtZXNzYWdlLCAuLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIGxvZ0RlYnVnKG1lc3NhZ2U6IGFueSwgLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoIXRoaXMubG9nTGV2ZWxJc1NldCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubG9nZ2luZ0lzVHVybmVkT2ZmKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY3VycmVudExvZ0xldmVsSXNFcXVhbE9yU21hbGxlclRoYW4oTG9nTGV2ZWwuRGVidWcpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCEhYXJncyAmJiBhcmdzLmxlbmd0aCkge1xuICAgICAgY29uc29sZS5sb2cobWVzc2FnZSwgLi4uYXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3VycmVudExvZ0xldmVsSXNFcXVhbE9yU21hbGxlclRoYW4obG9nTGV2ZWw6IExvZ0xldmVsKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblByb3ZpZGVyLm9wZW5JRENvbmZpZ3VyYXRpb24ubG9nTGV2ZWwgPD0gbG9nTGV2ZWw7XG4gIH1cblxuICBwcml2YXRlIGxvZ0xldmVsSXNTZXQoKSB7XG4gICAgY29uc3QgeyBsb2dMZXZlbCB9ID0gdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbiB8fCB7fTtcblxuICAgIGlmIChsb2dMZXZlbCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChsb2dMZXZlbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGxvZ2dpbmdJc1R1cm5lZE9mZigpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbj8ubG9nTGV2ZWwgPT09IExvZ0xldmVsLk5vbmU7XG4gIH1cbn1cbiJdfQ==
import { Injectable } from '@angular/core';
import { map, switchMap } from 'rxjs/operators';
import { AuthStateService } from '../authState/auth-state.service';
import { AuthWellKnownService } from '../config/auth-well-known.service';
import { ConfigurationProvider } from '../config/config.provider';
import { LoggerService } from '../logging/logger.service';
import { RedirectService } from '../utils/redirect/redirect.service';
import { UrlService } from '../utils/url/url.service';
import { TokenValidationService } from '../validation/token-validation.service';
import { CheckAuthService } from './../check-auth.service';
import { UserService } from './../userData/user-service';
import { PopUpService } from './popup.service';
import { ParLoginService } from './par/par-login.service';
import { PopUpLoginService } from './popup/popup-login.service';
import { StandardLoginService } from './standard/standard-login.service';
export class LoginService {
constructor(loggerService, tokenValidationService, urlService, redirectService, configurationProvider, authWellKnownService, popupService, checkAuthService, userService, authStateService) {
this.loggerService = loggerService;
this.tokenValidationService = tokenValidationService;
this.urlService = urlService;
this.redirectService = redirectService;
constructor(configurationProvider, parLoginService, popUpLoginService, standardLoginService) {
this.configurationProvider = configurationProvider;
this.authWellKnownService = authWellKnownService;
this.popupService = popupService;
this.checkAuthService = checkAuthService;
this.userService = userService;
this.authStateService = authStateService;
this.parLoginService = parLoginService;
this.popUpLoginService = popUpLoginService;
this.standardLoginService = standardLoginService;
}
login(authOptions) {
if (!this.tokenValidationService.hasConfigValidResponseType()) {
this.loggerService.logError('Invalid response type!');
return;
const usePushedAuthorisationRequests = this.configurationProvider.openIDConfiguration.usePushedAuthorisationRequests;
if (usePushedAuthorisationRequests) {
return this.parLoginService.loginPar(authOptions);
}
const authWellknownEndpoint = this.configurationProvider.openIDConfiguration.authWellknownEndpoint;
if (!authWellknownEndpoint) {
this.loggerService.logError('no authWellknownEndpoint given!');
return;
else {
return this.standardLoginService.loginStandard(authOptions);
}
this.loggerService.logDebug('BEGIN Authorize OIDC Flow, no auth data');
this.authWellKnownService.getAuthWellKnownEndPoints(authWellknownEndpoint).subscribe(() => {
const { urlHandler, customParams } = authOptions || {};
const url = this.urlService.getAuthorizeUrl(customParams);
if (!url) {
this.loggerService.logError('Could not create url', url);
return;
}
if (urlHandler) {
urlHandler(url);
}
else {
this.redirectService.redirectTo(url);
}
});
}
loginWithPopUp(authOptions, popupOptions) {
if (!this.tokenValidationService.hasConfigValidResponseType()) {
this.loggerService.logError('Invalid response type!');
return;
const usePushedAuthorisationRequests = this.configurationProvider.openIDConfiguration.usePushedAuthorisationRequests;
if (usePushedAuthorisationRequests) {
return this.parLoginService.loginWithPopUpPar(authOptions, popupOptions);
}
const authWellknownEndpoint = this.configurationProvider.openIDConfiguration.authWellknownEndpoint;
if (!authWellknownEndpoint) {
this.loggerService.logError('no authWellknownEndpoint given!');
return;
else {
return this.popUpLoginService.loginWithPopUpStandard(authOptions, popupOptions);
}
this.loggerService.logDebug('BEGIN Authorize OIDC Flow with popup, no auth data');
return this.authWellKnownService.getAuthWellKnownEndPoints(authWellknownEndpoint).pipe(switchMap(() => {
const { customParams } = authOptions || {};
const authUrl = this.urlService.getAuthorizeUrl(customParams);
this.popupService.openPopUp(authUrl, popupOptions);
return this.popupService.receivedUrl$.pipe(switchMap((url) => this.checkAuthService.checkAuth(url)), map((isAuthenticated) => ({
isAuthenticated,
userData: this.userService.getUserDataFromStore(),
accessToken: this.authStateService.getAccessToken(),
})));
}));
}

@@ -79,13 +36,7 @@ }

LoginService.ctorParameters = () => [
{ type: LoggerService },
{ type: TokenValidationService },
{ type: UrlService },
{ type: RedirectService },
{ type: ConfigurationProvider },
{ type: AuthWellKnownService },
{ type: PopUpService },
{ type: CheckAuthService },
{ type: UserService },
{ type: AuthStateService }
{ type: ParLoginService },
{ type: PopUpLoginService },
{ type: StandardLoginService }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWF1dGgtb2lkYy1jbGllbnQvc3JjLyIsInNvdXJjZXMiOlsibGliL2xvZ2luL2xvZ2luLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUd6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHL0MsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFDVSxhQUE0QixFQUM1QixzQkFBOEMsRUFDOUMsVUFBc0IsRUFDdEIsZUFBZ0MsRUFDaEMscUJBQTRDLEVBQzVDLG9CQUEwQyxFQUMxQyxZQUEwQixFQUMxQixnQkFBa0MsRUFDbEMsV0FBd0IsRUFDeEIsZ0JBQWtDO1FBVGxDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLDJCQUFzQixHQUF0QixzQkFB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QUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ2hFLEdBQUcsQ0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDeEIsZUFBZTtnQkFDZixRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsRUFBRTtnQkFDakQsV0FBVyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUU7YUFDcEQsQ0FBQyxDQUFDLENBQ0osQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzs7WUFqRkYsVUFBVTs7O1lBVkYsYUFBYTtZQUdiLHNCQUFzQjtZQUR0QixVQUFVO1lBRFYsZUFBZTtZQUZmLHFCQUFxQjtZQURyQixvQkFBb0I7WUFVcEIsWUFBWTtZQUpaLGdCQUFnQjtZQUNoQixXQUFXO1lBUlgsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBdXRoU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aFN0YXRlL2F1dGgtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBBdXRoV2VsbEtub3duU2VydmljZSB9IGZyb20gJy4uL2NvbmZpZy9hdXRoLXdlbGwta25vd24uc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uUHJvdmlkZXIgfSBmcm9tICcuLi9jb25maWcvY29uZmlnLnByb3ZpZGVyJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi9sb2dnaW5nL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZGlyZWN0U2VydmljZSB9IGZyb20gJy4uL3V0aWxzL3JlZGlyZWN0L3JlZGlyZWN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXJsU2VydmljZSB9IGZyb20gJy4uL3V0aWxzL3VybC91cmwuc2VydmljZSc7XG5pbXBvcnQgeyBUb2tlblZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi90b2tlbi12YWxpZGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hlY2tBdXRoU2VydmljZSB9IGZyb20gJy4vLi4vY2hlY2stYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi8uLi91c2VyRGF0YS91c2VyLXNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aE9wdGlvbnMgfSBmcm9tICcuL2F1dGgtb3B0aW9ucyc7XG5pbXBvcnQgeyBQb3B1cE9wdGlvbnMgfSBmcm9tICcuL3BvcHVwLW9wdGlvbnMnO1xuaW1wb3J0IHsgUG9wVXBTZXJ2aWNlIH0gZnJvbSAnLi9wb3B1cC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExvZ2luU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbG9nZ2VyU2VydmljZTogTG9nZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIHRva2VuVmFsaWRhdGlvblNlcnZpY2U6IFRva2VuVmFsaWRhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1cmxTZXJ2aWNlOiBVcmxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVkaXJlY3RTZXJ2aWNlOiBSZWRpcmVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uUHJvdmlkZXI6IENvbmZpZ3VyYXRpb25Qcm92aWRlcixcbiAgICBwcml2YXRlIGF1dGhXZWxsS25vd25TZXJ2aWNlOiBBdXRoV2VsbEtub3duU2VydmljZSxcbiAgICBwcml2YXRlIHBvcHVwU2VydmljZTogUG9wVXBTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hlY2tBdXRoU2VydmljZTogQ2hlY2tBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGF1dGhTdGF0ZVNlcnZpY2U6IEF1dGhTdGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIGxvZ2luKGF1dGhPcHRpb25zPzogQXV0aE9wdGlvbnMpIHtcbiAgICBpZiAoIXRoaXMudG9rZW5WYWxpZGF0aW9uU2VydmljZS5oYXNDb25maWdWYWxpZFJlc3BvbnNlVHlwZSgpKSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRXJyb3IoJ0ludmFsaWQgcmVzcG9uc2UgdHlwZSEnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhdXRoV2VsbGtub3duRW5kcG9pbnQgPSB0aGlzLmNvbmZpZ3VyYXRpb25Qcm92aWRlci5vcGVuSURDb25maWd1cmF0aW9uLmF1dGhXZWxsa25vd25FbmRwb2ludDtcblxuICAgIGlmICghYXV0aFdlbGxrbm93bkVuZHBvaW50KSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRXJyb3IoJ25vIGF1dGhXZWxsa25vd25FbmRwb2ludCBnaXZlbiEnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ0JFR0lOIEF1dGhvcml6ZSBPSURDIEZsb3csIG5vIGF1dGggZGF0YScpO1xuXG4gICAgdGhpcy5hdXRoV2VsbEtub3duU2VydmljZS5nZXRBdXRoV2VsbEtub3duRW5kUG9pbnRzKGF1dGhXZWxsa25vd25FbmRwb2ludCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNvbnN0IHsgdXJsSGFuZGxlciwgY3VzdG9tUGFyYW1zIH0gPSBhdXRoT3B0aW9ucyB8fCB7fTtcblxuICAgICAgY29uc3QgdXJsID0gdGhpcy51cmxTZXJ2aWNlLmdldEF1dGhvcml6ZVVybChjdXN0b21QYXJhbXMpO1xuXG4gICAgICBpZiAoIXVybCkge1xuICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRXJyb3IoJ0NvdWxkIG5vdCBjcmVhdGUgdXJsJywgdXJsKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodXJsSGFuZGxlcikge1xuICAgICAgICB1cmxIYW5kbGVyKHVybCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlZGlyZWN0U2VydmljZS5yZWRpcmVjdFRvKHVybCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBsb2dpbldpdGhQb3BVcChhdXRoT3B0aW9ucz86IEF1dGhPcHRpb25zLCBwb3B1cE9wdGlvbnM/OiBQb3B1cE9wdGlvbnMpIHtcbiAgICBpZiAoIXRoaXMudG9rZW5WYWxpZGF0aW9uU2VydmljZS5oYXNDb25maWdWYWxpZFJlc3BvbnNlVHlwZSgpKSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRXJyb3IoJ0ludmFsaWQgcmVzcG9uc2UgdHlwZSEnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhdXRoV2VsbGtub3duRW5kcG9pbnQgPSB0aGlzLmNvbmZpZ3VyYXRpb25Qcm92aWRlci5vcGVuSURDb25maWd1cmF0aW9uLmF1dGhXZWxsa25vd25FbmRwb2ludDtcblxuICAgIGlmICghYXV0aFdlbGxrbm93bkVuZHBvaW50KSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRXJyb3IoJ25vIGF1dGhXZWxsa25vd25FbmRwb2ludCBnaXZlbiEnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ0JFR0lOIEF1dGhvcml6ZSBPSURDIEZsb3cgd2l0aCBwb3B1cCwgbm8gYXV0aCBkYXRhJyk7XG5cbiAgICByZXR1cm4gdGhpcy5hdXRoV2VsbEtub3duU2VydmljZS5nZXRBdXRoV2VsbEtub3duRW5kUG9pbnRzKGF1dGhXZWxsa25vd25FbmRwb2ludCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgY3VzdG9tUGFyYW1zIH0gPSBhdXRoT3B0aW9ucyB8fCB7fTtcblxuICAgICAgICBjb25zdCBhdXRoVXJsID0gdGhpcy51cmxTZXJ2aWNlLmdldEF1dGhvcml6ZVVybChjdXN0b21QYXJhbXMpO1xuXG4gICAgICAgIHRoaXMucG9wdXBTZXJ2aWNlLm9wZW5Qb3BVcChhdXRoVXJsLCBwb3B1cE9wdGlvbnMpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnBvcHVwU2VydmljZS5yZWNlaXZlZFVybCQucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoKHVybDogc3RyaW5nKSA9PiB0aGlzLmNoZWNrQXV0aFNlcnZpY2UuY2hlY2tBdXRoKHVybCkpLFxuICAgICAgICAgIG1hcCgoaXNBdXRoZW50aWNhdGVkKSA9PiAoe1xuICAgICAgICAgICAgaXNBdXRoZW50aWNhdGVkLFxuICAgICAgICAgICAgdXNlckRhdGE6IHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckRhdGFGcm9tU3RvcmUoKSxcbiAgICAgICAgICAgIGFjY2Vzc1Rva2VuOiB0aGlzLmF1dGhTdGF0ZVNlcnZpY2UuZ2V0QWNjZXNzVG9rZW4oKSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWF1dGgtb2lkYy1jbGllbnQvc3JjLyIsInNvdXJjZXMiOlsibGliL2xvZ2luL2xvZ2luLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUdsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHekUsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFDVSxxQkFBNEMsRUFDNUMsZUFBZ0MsRUFDaEMsaUJBQW9DLEVBQ3BDLG9CQUEwQztRQUgxQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7SUFDakQsQ0FBQztJQUVKLEtBQUssQ0FBQyxXQUF5QjtRQUM3QixNQUFNLDhCQUE4QixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyw4QkFBOEIsQ0FBQztRQUVySCxJQUFJLDhCQUE4QixFQUFFO1lBQ2xDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDbkQ7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUM3RDtJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsV0FBeUIsRUFBRSxZQUEyQjtRQUNuRSxNQUFNLDhCQUE4QixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyw4QkFBOEIsQ0FBQztRQUVySCxJQUFJLDhCQUE4QixFQUFFO1lBQ2xDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7U0FDMUU7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztTQUNqRjtJQUNILENBQUM7OztZQTNCRixVQUFVOzs7WUFSRixxQkFBcUI7WUFHckIsZUFBZTtZQUNmLGlCQUFpQjtZQUVqQixvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uUHJvdmlkZXIgfSBmcm9tICcuLi9jb25maWcvY29uZmlnLnByb3ZpZGVyJztcbmltcG9ydCB7IEF1dGhPcHRpb25zIH0gZnJvbSAnLi9hdXRoLW9wdGlvbnMnO1xuaW1wb3J0IHsgTG9naW5SZXNwb25zZSB9IGZyb20gJy4vbG9naW4tcmVzcG9uc2UnO1xuaW1wb3J0IHsgUGFyTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi9wYXIvcGFyLWxvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9wVXBMb2dpblNlcnZpY2UgfSBmcm9tICcuL3BvcHVwL3BvcHVwLWxvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9wdXBPcHRpb25zIH0gZnJvbSAnLi9wb3B1cC9wb3B1cC1vcHRpb25zJztcbmltcG9ydCB7IFN0YW5kYXJkTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi9zdGFuZGFyZC9zdGFuZGFyZC1sb2dpbi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExvZ2luU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblByb3ZpZGVyOiBDb25maWd1cmF0aW9uUHJvdmlkZXIsXG4gICAgcHJpdmF0ZSBwYXJMb2dpblNlcnZpY2U6IFBhckxvZ2luU2VydmljZSxcbiAgICBwcml2YXRlIHBvcFVwTG9naW5TZXJ2aWNlOiBQb3BVcExvZ2luU2VydmljZSxcbiAgICBwcml2YXRlIHN0YW5kYXJkTG9naW5TZXJ2aWNlOiBTdGFuZGFyZExvZ2luU2VydmljZVxuICApIHt9XG5cbiAgbG9naW4oYXV0aE9wdGlvbnM/OiBBdXRoT3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IHVzZVB1c2hlZEF1dGhvcmlzYXRpb25SZXF1ZXN0cyA9IHRoaXMuY29uZmlndXJhdGlvblByb3ZpZGVyLm9wZW5JRENvbmZpZ3VyYXRpb24udXNlUHVzaGVkQXV0aG9yaXNhdGlvblJlcXVlc3RzO1xuXG4gICAgaWYgKHVzZVB1c2hlZEF1dGhvcmlzYXRpb25SZXF1ZXN0cykge1xuICAgICAgcmV0dXJuIHRoaXMucGFyTG9naW5TZXJ2aWNlLmxvZ2luUGFyKGF1dGhPcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhbmRhcmRMb2dpblNlcnZpY2UubG9naW5TdGFuZGFyZChhdXRoT3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgbG9naW5XaXRoUG9wVXAoYXV0aE9wdGlvbnM/OiBBdXRoT3B0aW9ucywgcG9wdXBPcHRpb25zPzogUG9wdXBPcHRpb25zKTogT2JzZXJ2YWJsZTxMb2dpblJlc3BvbnNlPiB7XG4gICAgY29uc3QgdXNlUHVzaGVkQXV0aG9yaXNhdGlvblJlcXVlc3RzID0gdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbi51c2VQdXNoZWRBdXRob3Jpc2F0aW9uUmVxdWVzdHM7XG5cbiAgICBpZiAodXNlUHVzaGVkQXV0aG9yaXNhdGlvblJlcXVlc3RzKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJMb2dpblNlcnZpY2UubG9naW5XaXRoUG9wVXBQYXIoYXV0aE9wdGlvbnMsIHBvcHVwT3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnBvcFVwTG9naW5TZXJ2aWNlLmxvZ2luV2l0aFBvcFVwU3RhbmRhcmQoYXV0aE9wdGlvbnMsIHBvcHVwT3B0aW9ucyk7XG4gICAgfVxuICB9XG59XG4iXX0=

@@ -6,3 +6,3 @@ import { HttpHeaders } from '@angular/common/http';

import { DataService } from '../api/data.service';
import { FlowsService } from '../flows/flows.service';
import { ResetAuthDataService } from '../flows/reset-auth-data.service';
import { CheckSessionService } from '../iframe/check-session.service';

@@ -14,3 +14,3 @@ import { LoggerService } from '../logging/logger.service';

export class LogoffRevocationService {
constructor(dataService, storagePersistanceService, loggerService, urlService, checkSessionService, flowsService, redirectService) {
constructor(dataService, storagePersistanceService, loggerService, urlService, checkSessionService, resetAuthDataService, redirectService) {
this.dataService = dataService;

@@ -21,3 +21,3 @@ this.storagePersistanceService = storagePersistanceService;

this.checkSessionService = checkSessionService;
this.flowsService = flowsService;
this.resetAuthDataService = resetAuthDataService;
this.redirectService = redirectService;

@@ -30,3 +30,3 @@ }

const endSessionUrl = this.getEndSessionUrl();
this.flowsService.resetAuthorizationData();
this.resetAuthDataService.resetAuthorizationData();
if (!endSessionUrl) {

@@ -47,3 +47,3 @@ this.loggerService.logDebug('only local login cleaned up, no end_session_endpoint');

logoffLocal() {
this.flowsService.resetAuthorizationData();
this.resetAuthDataService.resetAuthorizationData();
}

@@ -125,5 +125,5 @@ // The refresh token and and the access token are revoked on the server. If the refresh token does not exist

{ type: CheckSessionService },
{ type: FlowsService },
{ type: ResetAuthDataService },
{ type: RedirectService }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nb2ZmLXJldm9jYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWF1dGgtb2lkYy1jbGllbnQvc3JjLyIsInNvdXJjZXMiOlsibGliL2xvZ29mZlJldm9rZS9sb2dvZmYtcmV2b2NhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHdEQsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxZQUNVLFdBQXdCLEVBQ3hCLHlCQUFvRCxFQUNwRCxhQUE0QixFQUM1QixVQUFzQixFQUN0QixtQkFBd0MsRUFDeEMsWUFBMEIsRUFDMUIsZUFBZ0M7UUFOaEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQUNwRCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsb0JBQWUsR0FBZixlQUFlLENBQWlCO0lBQ3ZDLENBQUM7SUFFSiwrQ0FBK0M7SUFDL0MsMkVBQTJFO0lBQzNFLE1BQU0sQ0FBQyxVQUFpQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxZQUFZLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUUzQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLHNEQUFzRCxDQUFDLENBQUM7WUFDcEYsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtZQUNqRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO1NBQ3hGO2FBQU0sSUFBSSxVQUFVLEVBQUU7WUFDckIsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzNCO2FBQU07WUFDTCxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNoRDtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRCw0R0FBNEc7SUFDNUcseURBQXlEO0lBQ3pELHFCQUFxQixDQUFDLFVBQWlDOztRQUNyRCxJQUFJLFFBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQywwQ0FBRSxrQkFBa0IsQ0FBQSxFQUFFO1lBQ3RGLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN6QjtRQUVELElBQUksSUFBSSxDQUFDLHlCQUF5QixDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQ3BELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsSUFBSSxDQUNuQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUNyRCxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDbkIsTUFBTSxZQUFZLEdBQUcscUJBQXFCLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDakQsT0FBTyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbEMsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FDbkMsQ0FBQztTQUNIO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLElBQUksQ0FDbEMsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ25CLE1BQU0sWUFBWSxHQUFHLDRCQUE0QixDQUFDO2dCQUNsRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ2pELE9BQU8sVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQ25DLENBQUM7U0FDSDtJQUNILENBQUM7SUFFRCxzQ0FBc0M7SUFDdEMsbUZBQW1GO0lBQ25GLHNGQUFzRjtJQUN0RiwrQ0FBK0M7SUFDL0MsaUJBQWlCLENBQUMsV0FBaUI7UUFDakMsTUFBTSxTQUFTLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNqRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHVDQUF1QyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUV2RCxJQUFJLE9BQU8sR0FBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUM3QyxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsbUNBQW1DLENBQUMsQ0FBQztRQUUzRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUNuRCxTQUFTLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxxQ0FBcUMsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM3RSxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixNQUFNLFlBQVksR0FBRywyQkFBMkIsQ0FBQztZQUNqRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDakQsT0FBTyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxzQ0FBc0M7SUFDdEMsbUdBQW1HO0lBQ25HLHlHQUF5RztJQUN6RyxvREFBb0Q7SUFDcEQsa0JBQWtCLENBQUMsWUFBa0I7UUFDbkMsTUFBTSxVQUFVLEdBQUcsWUFBWSxJQUFJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNwRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHdDQUF3QyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xGLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUV2RCxJQUFJLE9BQU8sR0FBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUM3QyxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsbUNBQW1DLENBQUMsQ0FBQztRQUUzRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUNuRCxTQUFTLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxxQ0FBcUMsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM3RSxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixNQUFNLFlBQVksR0FBRywyQkFBMkIsQ0FBQztZQUNqRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDakQsT0FBTyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDNUQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELENBQUM7OztZQXhIRixVQUFVOzs7WUFSRixXQUFXO1lBSVgseUJBQXlCO1lBRHpCLGFBQWE7WUFHYixVQUFVO1lBSlYsbUJBQW1CO1lBRG5CLFlBQVk7WUFJWixlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4uL2FwaS9kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmxvd3NTZXJ2aWNlIH0gZnJvbSAnLi4vZmxvd3MvZmxvd3Muc2VydmljZSc7XG5pbXBvcnQgeyBDaGVja1Nlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vaWZyYW1lL2NoZWNrLXNlc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nZ2luZy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmFnZS9zdG9yYWdlLXBlcnNpc3RhbmNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVkaXJlY3RTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvcmVkaXJlY3QvcmVkaXJlY3Quc2VydmljZSc7XG5pbXBvcnQgeyBVcmxTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvdXJsL3VybC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExvZ29mZlJldm9jYXRpb25TZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlOiBTdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9nZ2VyU2VydmljZTogTG9nZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIHVybFNlcnZpY2U6IFVybFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGVja1Nlc3Npb25TZXJ2aWNlOiBDaGVja1Nlc3Npb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd3NTZXJ2aWNlOiBGbG93c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWRpcmVjdFNlcnZpY2U6IFJlZGlyZWN0U2VydmljZVxuICApIHt9XG5cbiAgLy8gTG9ncyBvdXQgb24gdGhlIHNlcnZlciBhbmQgdGhlIGxvY2FsIGNsaWVudC5cbiAgLy8gSWYgdGhlIHNlcnZlciBzdGF0ZSBoYXMgY2hhbmdlZCwgY2hlY2tzZXNzaW9uLCB0aGVuIG9ubHkgYSBsb2NhbCBsb2dvdXQuXG4gIGxvZ29mZih1cmxIYW5kbGVyPzogKHVybDogc3RyaW5nKSA9PiBhbnkpIHtcbiAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ2xvZ29mZiwgcmVtb3ZlIGF1dGggJyk7XG4gICAgY29uc3QgZW5kU2Vzc2lvblVybCA9IHRoaXMuZ2V0RW5kU2Vzc2lvblVybCgpO1xuICAgIHRoaXMuZmxvd3NTZXJ2aWNlLnJlc2V0QXV0aG9yaXphdGlvbkRhdGEoKTtcblxuICAgIGlmICghZW5kU2Vzc2lvblVybCkge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCdvbmx5IGxvY2FsIGxvZ2luIGNsZWFuZWQgdXAsIG5vIGVuZF9zZXNzaW9uX2VuZHBvaW50Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2hlY2tTZXNzaW9uU2VydmljZS5zZXJ2ZXJTdGF0ZUNoYW5nZWQoKSkge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCdvbmx5IGxvY2FsIGxvZ2luIGNsZWFuZWQgdXAsIHNlcnZlciBzZXNzaW9uIGhhcyBjaGFuZ2VkJyk7XG4gICAgfSBlbHNlIGlmICh1cmxIYW5kbGVyKSB7XG4gICAgICB1cmxIYW5kbGVyKGVuZFNlc3Npb25VcmwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlZGlyZWN0U2VydmljZS5yZWRpcmVjdFRvKGVuZFNlc3Npb25VcmwpO1xuICAgIH1cbiAgfVxuXG4gIGxvZ29mZkxvY2FsKCkge1xuICAgIHRoaXMuZmxvd3NTZXJ2aWNlLnJlc2V0QXV0aG9yaXphdGlvbkRhdGEoKTtcbiAgfVxuXG4gIC8vIFRoZSByZWZyZXNoIHRva2VuIGFuZCBhbmQgdGhlIGFjY2VzcyB0b2tlbiBhcmUgcmV2b2tlZCBvbiB0aGUgc2VydmVyLiBJZiB0aGUgcmVmcmVzaCB0b2tlbiBkb2VzIG5vdCBleGlzdFxuICAvLyBvbmx5IHRoZSBhY2Nlc3MgdG9rZW4gaXMgcmV2b2tlZC4gVGhlbiB0aGUgbG9nb3V0IHJ1bi5cbiAgbG9nb2ZmQW5kUmV2b2tlVG9rZW5zKHVybEhhbmRsZXI/OiAodXJsOiBzdHJpbmcpID0+IGFueSkge1xuICAgIGlmICghdGhpcy5zdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlLnJlYWQoJ2F1dGhXZWxsS25vd25FbmRQb2ludHMnKT8ucmV2b2NhdGlvbkVuZHBvaW50KSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ3Jldm9jYXRpb24gZW5kcG9pbnQgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgdGhpcy5sb2dvZmYodXJsSGFuZGxlcik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZS5nZXRSZWZyZXNoVG9rZW4oKSkge1xuICAgICAgcmV0dXJuIHRoaXMucmV2b2tlUmVmcmVzaFRva2VuKCkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChyZXN1bHQpID0+IHRoaXMucmV2b2tlQWNjZXNzVG9rZW4ocmVzdWx0KSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYHJldm9rZSB0b2tlbiBmYWlsZWRgO1xuICAgICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dFcnJvcihlcnJvck1lc3NhZ2UsIGVycm9yKTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvck1lc3NhZ2UpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMubG9nb2ZmKHVybEhhbmRsZXIpKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucmV2b2tlQWNjZXNzVG9rZW4oKS5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGByZXZva2UgYWNjZXNzIHRva2VuIGZhaWxlZGA7XG4gICAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0Vycm9yKGVycm9yTWVzc2FnZSwgZXJyb3IpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5sb2dvZmYodXJsSGFuZGxlcikpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MDA5XG4gIC8vIHJldm9rZXMgYW4gYWNjZXNzIHRva2VuIG9uIHRoZSBTVFMuIElmIG5vIHRva2VuIGlzIHByb3ZpZGVkLCB0aGVuIHRoZSB0b2tlbiBmcm9tXG4gIC8vIHRoZSBzdG9yYWdlIGlzIHJldm9rZWQuIFlvdSBjYW4gcGFzcyBhbnkgdG9rZW4gdG8gcmV2b2tlLiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvXG4gIC8vIG1hbmFnZSB5b3VyIG93biB0b2tlbnMuIFRoZSBpcyBhIHB1YmxpYyBBUEkuXG4gIHJldm9rZUFjY2Vzc1Rva2VuKGFjY2Vzc1Rva2VuPzogYW55KSB7XG4gICAgY29uc3QgYWNjZXNzVG9rID0gYWNjZXNzVG9rZW4gfHwgdGhpcy5zdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlLmdldEFjY2Vzc1Rva2VuKCk7XG4gICAgY29uc3QgYm9keSA9IHRoaXMudXJsU2VydmljZS5jcmVhdGVSZXZvY2F0aW9uRW5kcG9pbnRCb2R5QWNjZXNzVG9rZW4oYWNjZXNzVG9rKTtcbiAgICBjb25zdCB1cmwgPSB0aGlzLnVybFNlcnZpY2UuZ2V0UmV2b2NhdGlvbkVuZHBvaW50VXJsKCk7XG5cbiAgICBsZXQgaGVhZGVyczogSHR0cEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKTtcblxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLnBvc3QodXJsLCBib2R5LCBoZWFkZXJzKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZygncmV2b2NhdGlvbiBlbmRwb2ludCBwb3N0IHJlc3BvbnNlOiAnLCByZXNwb25zZSk7XG4gICAgICAgIHJldHVybiBvZihyZXNwb25zZSk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGBSZXZvY2F0aW9uIHJlcXVlc3QgZmFpbGVkYDtcbiAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0Vycm9yKGVycm9yTWVzc2FnZSwgZXJyb3IpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvck1lc3NhZ2UpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcwMDlcbiAgLy8gcmV2b2tlcyBhbiByZWZyZXNoIHRva2VuIG9uIHRoZSBTVFMuIFRoaXMgaXMgb25seSByZXF1aXJlZCBpbiB0aGUgY29kZSBmbG93IHdpdGggcmVmcmVzaCB0b2tlbnMuXG4gIC8vIElmIG5vIHRva2VuIGlzIHByb3ZpZGVkLCB0aGVuIHRoZSB0b2tlbiBmcm9tIHRoZSBzdG9yYWdlIGlzIHJldm9rZWQuIFlvdSBjYW4gcGFzcyBhbnkgdG9rZW4gdG8gcmV2b2tlLlxuICAvLyBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIG1hbmFnZSB5b3VyIG93biB0b2tlbnMuXG4gIHJldm9rZVJlZnJlc2hUb2tlbihyZWZyZXNoVG9rZW4/OiBhbnkpIHtcbiAgICBjb25zdCByZWZyZXNoVG9rID0gcmVmcmVzaFRva2VuIHx8IHRoaXMuc3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZS5nZXRSZWZyZXNoVG9rZW4oKTtcbiAgICBjb25zdCBib2R5ID0gdGhpcy51cmxTZXJ2aWNlLmNyZWF0ZVJldm9jYXRpb25FbmRwb2ludEJvZHlSZWZyZXNoVG9rZW4ocmVmcmVzaFRvayk7XG4gICAgY29uc3QgdXJsID0gdGhpcy51cmxTZXJ2aWNlLmdldFJldm9jYXRpb25FbmRwb2ludFVybCgpO1xuXG4gICAgbGV0IGhlYWRlcnM6IEh0dHBIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyk7XG5cbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5wb3N0KHVybCwgYm9keSwgaGVhZGVycykucGlwZShcbiAgICAgIHN3aXRjaE1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ3Jldm9jYXRpb24gZW5kcG9pbnQgcG9zdCByZXNwb25zZTogJywgcmVzcG9uc2UpO1xuICAgICAgICByZXR1cm4gb2YocmVzcG9uc2UpO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgUmV2b2NhdGlvbiByZXF1ZXN0IGZhaWxlZGA7XG4gICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dFcnJvcihlcnJvck1lc3NhZ2UsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldEVuZFNlc3Npb25VcmwoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgaWRUb2tlbiA9IHRoaXMuc3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZS5nZXRJZFRva2VuKCk7XG4gICAgcmV0dXJuIHRoaXMudXJsU2VydmljZS5jcmVhdGVFbmRTZXNzaW9uVXJsKGlkVG9rZW4pO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nb2ZmLXJldm9jYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWF1dGgtb2lkYy1jbGllbnQvc3JjLyIsInNvdXJjZXMiOlsibGliL2xvZ29mZlJldm9rZS9sb2dvZmYtcmV2b2NhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd0RCxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDLFlBQ1UsV0FBd0IsRUFDeEIseUJBQW9ELEVBQ3BELGFBQTRCLEVBQzVCLFVBQXNCLEVBQ3RCLG1CQUF3QyxFQUN4QyxvQkFBMEMsRUFDMUMsZUFBZ0M7UUFOaEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQUNwRCxrQkFBYSxHQUFiLGFBQWEsQ0FB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cm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4uL2FwaS9kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzZXRBdXRoRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9mbG93cy9yZXNldC1hdXRoLWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBDaGVja1Nlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vaWZyYW1lL2NoZWNrLXNlc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nZ2luZy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmFnZS9zdG9yYWdlLXBlcnNpc3RhbmNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVkaXJlY3RTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvcmVkaXJlY3QvcmVkaXJlY3Quc2VydmljZSc7XG5pbXBvcnQgeyBVcmxTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvdXJsL3VybC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExvZ29mZlJldm9jYXRpb25TZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlOiBTdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9nZ2VyU2VydmljZTogTG9nZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIHVybFNlcnZpY2U6IFVybFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGVja1Nlc3Npb25TZXJ2aWNlOiBDaGVja1Nlc3Npb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVzZXRBdXRoRGF0YVNlcnZpY2U6IFJlc2V0QXV0aERhdGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVkaXJlY3RTZXJ2aWNlOiBSZWRpcmVjdFNlcnZpY2VcbiAgKSB7fVxuXG4gIC8vIExvZ3Mgb3V0IG9uIHRoZSBzZXJ2ZXIgYW5kIHRoZSBsb2NhbCBjbGllbnQuXG4gIC8vIElmIHRoZSBzZXJ2ZXIgc3RhdGUgaGFzIGNoYW5nZWQsIGNoZWNrc2Vzc2lvbiwgdGhlbiBvbmx5IGEgbG9jYWwgbG9nb3V0LlxuICBsb2dvZmYodXJsSGFuZGxlcj86ICh1cmw6IHN0cmluZykgPT4gYW55KSB7XG4gICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCdsb2dvZmYsIHJlbW92ZSBhdXRoICcpO1xuICAgIGNvbnN0IGVuZFNlc3Npb25VcmwgPSB0aGlzLmdldEVuZFNlc3Npb25VcmwoKTtcbiAgICB0aGlzLnJlc2V0QXV0aERhdGFTZXJ2aWNlLnJlc2V0QXV0aG9yaXphdGlvbkRhdGEoKTtcblxuICAgIGlmICghZW5kU2Vzc2lvblVybCkge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCdvbmx5IGxvY2FsIGxvZ2luIGNsZWFuZWQgdXAsIG5vIGVuZF9zZXNzaW9uX2VuZHBvaW50Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2hlY2tTZXNzaW9uU2VydmljZS5zZXJ2ZXJTdGF0ZUNoYW5nZWQoKSkge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCdvbmx5IGxvY2FsIGxvZ2luIGNsZWFuZWQgdXAsIHNlcnZlciBzZXNzaW9uIGhhcyBjaGFuZ2VkJyk7XG4gICAgfSBlbHNlIGlmICh1cmxIYW5kbGVyKSB7XG4gICAgICB1cmxIYW5kbGVyKGVuZFNlc3Npb25VcmwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlZGlyZWN0U2VydmljZS5yZWRpcmVjdFRvKGVuZFNlc3Npb25VcmwpO1xuICAgIH1cbiAgfVxuXG4gIGxvZ29mZkxvY2FsKCkge1xuICAgIHRoaXMucmVzZXRBdXRoRGF0YVNlcnZpY2UucmVzZXRBdXRob3JpemF0aW9uRGF0YSgpO1xuICB9XG5cbiAgLy8gVGhlIHJlZnJlc2ggdG9rZW4gYW5kIGFuZCB0aGUgYWNjZXNzIHRva2VuIGFyZSByZXZva2VkIG9uIHRoZSBzZXJ2ZXIuIElmIHRoZSByZWZyZXNoIHRva2VuIGRvZXMgbm90IGV4aXN0XG4gIC8vIG9ubHkgdGhlIGFjY2VzcyB0b2tlbiBpcyByZXZva2VkLiBUaGVuIHRoZSBsb2dvdXQgcnVuLlxuICBsb2dvZmZBbmRSZXZva2VUb2tlbnModXJsSGFuZGxlcj86ICh1cmw6IHN0cmluZykgPT4gYW55KSB7XG4gICAgaWYgKCF0aGlzLnN0b3JhZ2VQZXJzaXN0YW5jZVNlcnZpY2UucmVhZCgnYXV0aFdlbGxLbm93bkVuZFBvaW50cycpPy5yZXZvY2F0aW9uRW5kcG9pbnQpIHtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZygncmV2b2NhdGlvbiBlbmRwb2ludCBub3Qgc3VwcG9ydGVkJyk7XG4gICAgICB0aGlzLmxvZ29mZih1cmxIYW5kbGVyKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlLmdldFJlZnJlc2hUb2tlbigpKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXZva2VSZWZyZXNoVG9rZW4oKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHJlc3VsdCkgPT4gdGhpcy5yZXZva2VBY2Nlc3NUb2tlbihyZXN1bHQpKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgcmV2b2tlIHRva2VuIGZhaWxlZGA7XG4gICAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0Vycm9yKGVycm9yTWVzc2FnZSwgZXJyb3IpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5sb2dvZmYodXJsSGFuZGxlcikpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXZva2VBY2Nlc3NUb2tlbigpLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYHJldm9rZSBhY2Nlc3MgdG9rZW4gZmFpbGVkYDtcbiAgICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRXJyb3IoZXJyb3JNZXNzYWdlLCBlcnJvcik7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmxvZ29mZih1cmxIYW5kbGVyKSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcwMDlcbiAgLy8gcmV2b2tlcyBhbiBhY2Nlc3MgdG9rZW4gb24gdGhlIFNUUy4gSWYgbm8gdG9rZW4gaXMgcHJvdmlkZWQsIHRoZW4gdGhlIHRva2VuIGZyb21cbiAgLy8gdGhlIHN0b3JhZ2UgaXMgcmV2b2tlZC4gWW91IGNhbiBwYXNzIGFueSB0b2tlbiB0byByZXZva2UuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG9cbiAgLy8gbWFuYWdlIHlvdXIgb3duIHRva2Vucy4gVGhlIGlzIGEgcHVibGljIEFQSS5cbiAgcmV2b2tlQWNjZXNzVG9rZW4oYWNjZXNzVG9rZW4/OiBhbnkpIHtcbiAgICBjb25zdCBhY2Nlc3NUb2sgPSBhY2Nlc3NUb2tlbiB8fCB0aGlzLnN0b3JhZ2VQZXJzaXN0YW5jZVNlcnZpY2UuZ2V0QWNjZXNzVG9rZW4oKTtcbiAgICBjb25zdCBib2R5ID0gdGhpcy51cmxTZXJ2aWNlLmNyZWF0ZVJldm9jYXRpb25FbmRwb2ludEJvZHlBY2Nlc3NUb2tlbihhY2Nlc3NUb2spO1xuICAgIGNvbnN0IHVybCA9IHRoaXMudXJsU2VydmljZS5nZXRSZXZvY2F0aW9uRW5kcG9pbnRVcmwoKTtcblxuICAgIGxldCBoZWFkZXJzOiBIdHRwSGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpO1xuXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UucG9zdCh1cmwsIGJvZHksIGhlYWRlcnMpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCdyZXZvY2F0aW9uIGVuZHBvaW50IHBvc3QgcmVzcG9uc2U6ICcsIHJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuIG9mKHJlc3BvbnNlKTtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYFJldm9jYXRpb24gcmVxdWVzdCBmYWlsZWRgO1xuICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRXJyb3IoZXJyb3JNZXNzYWdlLCBlcnJvcik7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzAwOVxuICAvLyByZXZva2VzIGFuIHJlZnJlc2ggdG9rZW4gb24gdGhlIFNUUy4gVGhpcyBpcyBvbmx5IHJlcXVpcmVkIGluIHRoZSBjb2RlIGZsb3cgd2l0aCByZWZyZXNoIHRva2Vucy5cbiAgLy8gSWYgbm8gdG9rZW4gaXMgcHJvdmlkZWQsIHRoZW4gdGhlIHRva2VuIGZyb20gdGhlIHN0b3JhZ2UgaXMgcmV2b2tlZC4gWW91IGNhbiBwYXNzIGFueSB0b2tlbiB0byByZXZva2UuXG4gIC8vIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gbWFuYWdlIHlvdXIgb3duIHRva2Vucy5cbiAgcmV2b2tlUmVmcmVzaFRva2VuKHJlZnJlc2hUb2tlbj86IGFueSkge1xuICAgIGNvbnN0IHJlZnJlc2hUb2sgPSByZWZyZXNoVG9rZW4gfHwgdGhpcy5zdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlLmdldFJlZnJlc2hUb2tlbigpO1xuICAgIGNvbnN0IGJvZHkgPSB0aGlzLnVybFNlcnZpY2UuY3JlYXRlUmV2b2NhdGlvbkVuZHBvaW50Qm9keVJlZnJlc2hUb2tlbihyZWZyZXNoVG9rKTtcbiAgICBjb25zdCB1cmwgPSB0aGlzLnVybFNlcnZpY2UuZ2V0UmV2b2NhdGlvbkVuZHBvaW50VXJsKCk7XG5cbiAgICBsZXQgaGVhZGVyczogSHR0cEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKTtcblxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLnBvc3QodXJsLCBib2R5LCBoZWFkZXJzKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZygncmV2b2NhdGlvbiBlbmRwb2ludCBwb3N0IHJlc3BvbnNlOiAnLCByZXNwb25zZSk7XG4gICAgICAgIHJldHVybiBvZihyZXNwb25zZSk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGBSZXZvY2F0aW9uIHJlcXVlc3QgZmFpbGVkYDtcbiAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0Vycm9yKGVycm9yTWVzc2FnZSwgZXJyb3IpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvck1lc3NhZ2UpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZ2V0RW5kU2Vzc2lvblVybCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBpZFRva2VuID0gdGhpcy5zdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlLmdldElkVG9rZW4oKTtcbiAgICByZXR1cm4gdGhpcy51cmxTZXJ2aWNlLmNyZWF0ZUVuZFNlc3Npb25VcmwoaWRUb2tlbik7XG4gIH1cbn1cbiJdfQ==

@@ -34,4 +34,3 @@ import { HttpParams } from '@angular/common/http';

isCallbackFromSts(currentUrl) {
const anyParameterIsGiven = CALLBACK_PARAMS_TO_CHECK.some((x) => !!this.getUrlParameter(currentUrl, x));
return anyParameterIsGiven;
return CALLBACK_PARAMS_TO_CHECK.some((x) => !!this.getUrlParameter(currentUrl, x));
}

@@ -44,2 +43,28 @@ getRefreshSessionSilentRenewUrl(customParams) {

}
getAuthorizeParUrl(requestUri) {
const authWellKnownEndPoints = this.storagePersistanceService.read('authWellKnownEndPoints');
if (!authWellKnownEndPoints) {
this.loggerService.logError('authWellKnownEndpoints is undefined');
return null;
}
const authorizationEndpoint = authWellKnownEndPoints.authorizationEndpoint;
if (!authorizationEndpoint) {
this.loggerService.logError(`Can not create an authorize url when authorizationEndpoint is '${authorizationEndpoint}'`);
return null;
}
const { clientId } = this.configurationProvider.openIDConfiguration;
if (!clientId) {
this.loggerService.logError(`createAuthorizeUrl could not add clientId because it was: `, clientId);
return null;
}
const urlParts = authorizationEndpoint.split('?');
const authorizationUrl = urlParts[0];
let params = new HttpParams({
fromString: urlParts[1],
encoder: new UriEncoder(),
});
params = params.set('request_uri', requestUri);
params = params.append('client_id', clientId);
return `${authorizationUrl}?${params}`;
}
getAuthorizeUrl(customParams) {

@@ -118,3 +143,3 @@ if (this.flowHelper.isCurrentFlowCodeFlow()) {

}
createBodyForCodeFlowRefreshTokensRequest(refreshtoken, customParams) {
createBodyForCodeFlowRefreshTokensRequest(refreshToken, customParams) {
const clientId = this.getClientId();

@@ -126,11 +151,42 @@ if (!clientId) {

&client_id=${clientId}
&refresh_token=${refreshtoken}`;
&refresh_token=${refreshToken}`;
if (customParams) {
const customParamsToAdd = Object.assign({}, (customParams || {}));
for (const [key, value] of Object.entries(customParamsToAdd)) {
dataForBody = dataForBody.concat(`&${key}=${value.toString()}`);
}
const customParamText = this.composeCustomParams(Object.assign({}, customParams));
dataForBody = `${dataForBody}${customParamText}`;
}
return dataForBody;
}
createBodyForParCodeFlowRequest(customParamsRequest) {
const redirectUrl = this.getRedirectUrl();
if (!redirectUrl) {
return null;
}
const state = this.flowsDataService.getExistingOrCreateAuthStateControl();
const nonce = this.flowsDataService.createNonce();
this.loggerService.logDebug('Authorize created. adding myautostate: ' + state);
// code_challenge with "S256"
const codeVerifier = this.flowsDataService.createCodeVerifier();
const codeChallenge = this.tokenValidationService.generateCodeChallenge(codeVerifier);
const { clientId, responseType, scope, hdParam, customParams } = this.configurationProvider.openIDConfiguration;
let dataForBody = oneLineTrim `client_id=${clientId}
&redirect_uri=${redirectUrl}
&response_type=${responseType}
&scope=${scope}
&nonce=${nonce}
&state=${state}
&code_challenge=${codeChallenge}
&code_challenge_method=S256`;
if (hdParam) {
dataForBody = `${dataForBody}&hd=${hdParam}`;
}
if (customParams) {
const customParamText = this.composeCustomParams(Object.assign({}, customParams));
dataForBody = `${dataForBody}${customParamText}`;
}
if (customParamsRequest) {
const customParamText = this.composeCustomParams(Object.assign({}, customParamsRequest));
dataForBody = `${dataForBody}${customParamText}`;
}
return dataForBody;
}
createAuthorizeUrl(codeChallenge, redirectUrl, nonce, state, prompt, customRequestParams) {

@@ -178,8 +234,12 @@ const authWellKnownEndPoints = this.storagePersistanceService.read('authWellKnownEndPoints');

}
if (customParams || customRequestParams) {
const customParamsToAdd = Object.assign(Object.assign({}, (customParams || {})), (customRequestParams || {}));
for (const [key, value] of Object.entries(customParamsToAdd)) {
if (customParams) {
for (const [key, value] of Object.entries(Object.assign({}, customParams))) {
params = params.append(key, value.toString());
}
}
if (customRequestParams) {
for (const [key, value] of Object.entries(Object.assign({}, customRequestParams))) {
params = params.append(key, value.toString());
}
}
return `${authorizationUrl}?${params}`;

@@ -289,2 +349,9 @@ }

}
composeCustomParams(customParams) {
let customParamText = '';
for (const [key, value] of Object.entries(customParams)) {
customParamText = customParamText.concat(`&${key}=${value.toString()}`);
}
return customParamText;
}
}

@@ -302,2 +369,2 @@ UrlService.decorators = [

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdXRoLW9pZGMtY2xpZW50L3NyYy8iLCJzb3VyY2VzIjpbImxpYi91dGlscy91cmwvdXJsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBRXhFLE1BQU0sT0FBTyxVQUFVO0lBQ3JCLFlBQ21CLHFCQUE0QyxFQUM1QyxhQUE0QixFQUM1QixnQkFBa0MsRUFDbEMsVUFBc0IsRUFDL0Isc0JBQThDLEVBQzlDLHlCQUFvRDtRQUwzQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUMvQiwyQkFB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QztZQUNqRyxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxxQkFBcUIsQ0FBQztJQUMvQixDQUFDO0lBRU8sV0FBVzs7UUFDakIsTUFBTSxRQUFRLFNBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQiwwQ0FBRSxRQUFRLENBQUM7UUFDMUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNiLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLCtCQUErQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZFLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDOzs7WUE3V0YsVUFBVTs7O1lBVEYscUJBQXFCO1lBRXJCLGFBQWE7WUFEYixnQkFBZ0I7WUFJaEIsVUFBVTtZQURWLHNCQUFzQjtZQUR0Qix5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgb25lTGluZVRyaW0gfSBmcm9tICdjb21tb24tdGFncyc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uUHJvdmlkZXIgfSBmcm9tICcuLi8uLi9jb25maWcvY29uZmlnLnByb3ZpZGVyJztcbmltcG9ydCB7IEZsb3dzRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9mbG93cy9mbG93cy1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL2xvZ2dpbmcvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZSB9IGZyb20gJy4uLy4uL3N0b3JhZ2Uvc3RvcmFnZS1wZXJzaXN0YW5jZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRva2VuVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi92YWxpZGF0aW9uL3Rva2VuLXZhbGlkYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBGbG93SGVscGVyIH0gZnJvbSAnLi4vZmxvd0hlbHBlci9mbG93LWhlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7IFVyaUVuY29kZXIgfSBmcm9tICcuL3VyaS1lbmNvZGVyJztcblxuY29uc3QgQ0FMTEJBQ0tfUEFSQU1TX1RPX0NIRUNLID0gWydjb2RlJywgJ3N0YXRlJywgJ3Rva2VuJywgJ2lkX3Rva2VuJ107XG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVXJsU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlndXJhdGlvblByb3ZpZGVyOiBDb25maWd1cmF0aW9uUHJvdmlkZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXJTZXJ2aWNlOiBMb2dnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmxvd3NEYXRhU2VydmljZTogRmxvd3NEYXRhU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZsb3dIZWxwZXI6IEZsb3dIZWxwZXIsXG4gICAgcHJpdmF0ZSB0b2tlblZhbGlkYXRpb25TZXJ2aWNlOiBUb2tlblZhbGlkYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZTogU3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZVxuICApIHt9XG5cbiAgZ2V0VXJsUGFyYW1ldGVyKHVybFRvQ2hlY2s6IGFueSwgbmFtZTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoIXVybFRvQ2hlY2spIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAoIW5hbWUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBuYW1lID0gbmFtZS5yZXBsYWNlKC9bXFxbXS8sICdcXFxcWycpLnJlcGxhY2UoL1tcXF1dLywgJ1xcXFxdJyk7XG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKCdbXFxcXD8mXScgKyBuYW1lICsgJz0oW14mI10qKScpO1xuICAgIGNvbnN0IHJlc3VsdHMgPSByZWdleC5leGVjKHVybFRvQ2hlY2spO1xuICAgIHJldHVybiByZXN1bHRzID09PSBudWxsID8gJycgOiBkZWNvZGVVUklDb21wb25lbnQocmVzdWx0c1sxXSk7XG4gIH1cblxuICBpc0NhbGxiYWNrRnJvbVN0cyhjdXJyZW50VXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhbnlQYXJhbWV0ZXJJc0dpdmVuID0gQ0FMTEJBQ0tfUEFSQU1TX1RPX0NIRUNLLnNvbWUoKHgpID0+ICEhdGhpcy5nZXRVcmxQYXJhbWV0ZXIoY3VycmVudFVybCwgeCkpO1xuICAgIHJldHVybiBhbnlQYXJhbWV0ZXJJc0dpdmVuO1xuICB9XG5cbiAgZ2V0UmVmcmVzaFNlc3Npb25TaWxlbnRSZW5ld1VybChjdXN0b21QYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuZmxvd0hlbHBlci5pc0N1cnJlbnRGbG93Q29kZUZsb3coKSkge1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVXJsQ29kZUZsb3dXaXRoU2lsZW50UmVuZXcoY3VzdG9tUGFyYW1zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVVcmxJbXBsaWNpdEZsb3dXaXRoU2lsZW50UmVuZXcoY3VzdG9tUGFyYW1zKSB8fCAnJztcbiAgfVxuXG4gIGdldEF1dGhvcml6ZVVybChjdXN0b21QYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuZmxvd0hlbHBlci5pc0N1cnJlbnRGbG93Q29kZUZsb3coKSkge1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVXJsQ29kZUZsb3dBdXRob3JpemUoY3VzdG9tUGFyYW1zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVVcmxJbXBsaWNpdEZsb3dBdXRob3JpemUoY3VzdG9tUGFyYW1zKSB8fCAnJztcbiAgfVxuXG4gIGNyZWF0ZUVuZFNlc3Npb25VcmwoaWRUb2tlbkhpbnQ6IHN0cmluZykge1xuICAgIGNvbnN0IGF1dGhXZWxsS25vd25FbmRQb2ludHMgPSB0aGlzLnN0b3JhZ2VQZXJzaXN0YW5jZVNlcnZpY2UucmVhZCgnYXV0aFdlbGxLbm93bkVuZFBvaW50cycpO1xuICAgIGNvbnN0IGVuZFNlc3Npb25FbmRwb2ludCA9IGF1dGhXZWxsS25vd25FbmRQb2ludHM/LmVuZFNlc3Npb25FbmRwb2ludDtcblxuICAgIGlmICghZW5kU2Vzc2lvbkVuZHBvaW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB1cmxQYXJ0cyA9IGVuZFNlc3Npb25FbmRwb2ludC5zcGxpdCgnPycpO1xuXG4gICAgY29uc3QgYXV0aG9yaXphdGlvbkVuZHNlc3Npb25VcmwgPSB1cmxQYXJ0c1swXTtcblxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcyh7XG4gICAgICBmcm9tU3RyaW5nOiB1cmxQYXJ0c1sxXSxcbiAgICAgIGVuY29kZXI6IG5ldyBVcmlFbmNvZGVyKCksXG4gICAgfSk7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgnaWRfdG9rZW5faGludCcsIGlkVG9rZW5IaW50KTtcblxuICAgIGNvbnN0IHBvc3RMb2dvdXRSZWRpcmVjdFVyaSA9IHRoaXMuZ2V0UG9zdExvZ291dFJlZGlyZWN0VXJsKCk7XG5cbiAgICBpZiAocG9zdExvZ291dFJlZGlyZWN0VXJpKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwb3N0X2xvZ291dF9yZWRpcmVjdF91cmknLCBwb3N0TG9nb3V0UmVkaXJlY3RVcmkpO1xuICAgIH1cblxuICAgIHJldHVybiBgJHthdXRob3JpemF0aW9uRW5kc2Vzc2lvblVybH0/JHtwYXJhbXN9YDtcbiAgfVxuXG4gIGNyZWF0ZVJldm9jYXRpb25FbmRwb2ludEJvZHlBY2Nlc3NUb2tlbih0b2tlbjogYW55KSB7XG4gICAgY29uc3QgY2xpZW50SWQgPSB0aGlzLmdldENsaWVudElkKCk7XG5cbiAgICBpZiAoIWNsaWVudElkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gYGNsaWVudF9pZD0ke2NsaWVudElkfSZ0b2tlbj0ke3Rva2VufSZ0b2tlbl90eXBlX2hpbnQ9YWNjZXNzX3Rva2VuYDtcbiAgfVxuXG4gIGNyZWF0ZVJldm9jYXRpb25FbmRwb2ludEJvZHlSZWZyZXNoVG9rZW4odG9rZW46IGFueSkge1xuICAgIGNvbnN0IGNsaWVudElkID0gdGhpcy5nZXRDbGllbnRJZCgpO1xuXG4gICAgaWYgKCFjbGllbnRJZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBjbGllbnRfaWQ9JHtjbGllbnRJZH0mdG9rZW49JHt0b2tlbn0mdG9rZW5fdHlwZV9oaW50PXJlZnJlc2hfdG9rZW5gO1xuICB9XG5cbiAgZ2V0UmV2b2NhdGlvbkVuZHBvaW50VXJsKCkge1xuICAgIGNvbnN0IGF1dGhXZWxsS25vd25FbmRQb2ludHMgPSB0aGlzLnN0b3JhZ2VQZXJzaXN0YW5jZVNlcnZpY2UucmVhZCgnYXV0aFdlbGxLbm93bkVuZFBvaW50cycpO1xuICAgIGNvbnN0IHJldm9jYXRpb25FbmRwb2ludCA9IGF1dGhXZWxsS25vd25FbmRQb2ludHM/LnJldm9jYXRpb25FbmRwb2ludDtcblxuICAgIGlmICghcmV2b2NhdGlvbkVuZHBvaW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB1cmxQYXJ0cyA9IHJldm9jYXRpb25FbmRwb2ludC5zcGxpdCgnPycpO1xuXG4gICAgY29uc3QgcmV2b2NhdGlvbkVuZHBvaW50VXJsID0gdXJsUGFydHNbMF07XG4gICAgcmV0dXJuIHJldm9jYXRpb25FbmRwb2ludFVybDtcbiAgfVxuXG4gIGNyZWF0ZUJvZHlGb3JDb2RlRmxvd0NvZGVSZXF1ZXN0KGNvZGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgY29kZVZlcmlmaWVyID0gdGhpcy5mbG93c0RhdGFTZXJ2aWNlLmdldENvZGVWZXJpZmllcigpO1xuICAgIGlmICghY29kZVZlcmlmaWVyKSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRXJyb3IoYENvZGVWZXJpZmllciBpcyBub3Qgc2V0IGAsIGNvZGVWZXJpZmllcik7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBjbGllbnRJZCA9IHRoaXMuZ2V0Q2xpZW50SWQoKTtcblxuICAgIGlmICghY2xpZW50SWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGFGb3JCb2R5ID0gb25lTGluZVRyaW1gZ3JhbnRfdHlwZT1hdXRob3JpemF0aW9uX2NvZGVcbiAgICAgICAgICAgICZjbGllbnRfaWQ9JHtjbGllbnRJZH1cbiAgICAgICAgICAgICZjb2RlX3ZlcmlmaWVyPSR7Y29kZVZlcmlmaWVyfVxuICAgICAgICAgICAgJmNvZGU9JHtjb2RlfWA7XG5cbiAgICBjb25zdCBzaWxlbnRSZW5ld1VybCA9IHRoaXMuZ2V0U2lsZW50UmVuZXdVcmwoKTtcblxuICAgIGlmICh0aGlzLmZsb3dzRGF0YVNlcnZpY2UuaXNTaWxlbnRSZW5ld1J1bm5pbmcoKSAmJiBzaWxlbnRSZW5ld1VybCkge1xuICAgICAgcmV0dXJuIG9uZUxpbmVUcmltYCR7ZGF0YUZvckJvZHl9JnJlZGlyZWN0X3VyaT0ke3NpbGVudFJlbmV3VXJsfWA7XG4gICAgfVxuXG4gICAgY29uc3QgcmVkaXJlY3RVcmwgPSB0aGlzLmdldFJlZGlyZWN0VXJsKCk7XG5cbiAgICBpZiAoIXJlZGlyZWN0VXJsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gb25lTGluZVRyaW1gJHtkYXRhRm9yQm9keX0mcmVkaXJlY3RfdXJpPSR7cmVkaXJlY3RVcmx9YDtcbiAgfVxuXG4gIGNyZWF0ZUJvZHlGb3JDb2RlRmxvd1JlZnJlc2hUb2tlbnNSZXF1ZXN0KHJlZnJlc2h0b2tlbjogc3RyaW5nLCBjdXN0b21QYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgY29uc3QgY2xpZW50SWQgPSB0aGlzLmdldENsaWVudElkKCk7XG5cbiAgICBpZiAoIWNsaWVudElkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgZGF0YUZvckJvZHkgPSBvbmVMaW5lVHJpbWBncmFudF90eXBlPXJlZnJlc2hfdG9rZW5cbiAgICAgICAgICAgICZjbGllbnRfaWQ9JHtjbGllbnRJZH1cbiAgICAgICAgICAgICZyZWZyZXNoX3Rva2VuPSR7cmVmcmVzaHRva2VufWA7XG5cbiAgICBpZiAoY3VzdG9tUGFyYW1zKSB7XG4gICAgICBjb25zdCBjdXN0b21QYXJhbXNUb0FkZCA9IHsgLi4uKGN1c3RvbVBhcmFtcyB8fCB7fSkgfTtcblxuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoY3VzdG9tUGFyYW1zVG9BZGQpKSB7XG4gICAgICAgIGRhdGFGb3JCb2R5ID0gZGF0YUZvckJvZHkuY29uY2F0KGAmJHtrZXl9PSR7dmFsdWUudG9TdHJpbmcoKX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YUZvckJvZHk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUF1dGhvcml6ZVVybChcbiAgICBjb2RlQ2hhbGxlbmdlOiBzdHJpbmcsXG4gICAgcmVkaXJlY3RVcmw6IHN0cmluZyxcbiAgICBub25jZTogc3RyaW5nLFxuICAgIHN0YXRlOiBzdHJpbmcsXG4gICAgcHJvbXB0Pzogc3RyaW5nLFxuICAgIGN1c3RvbVJlcXVlc3RQYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfVxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGF1dGhXZWxsS25vd25FbmRQb2ludHMgPSB0aGlzLnN0b3JhZ2VQZXJzaXN0YW5jZVNlcnZpY2UucmVhZCgnYXV0aFdlbGxLbm93bkVuZFBvaW50cycpO1xuICAgIGNvbnN0IGF1dGhvcml6YXRpb25FbmRwb2ludCA9IGF1dGhXZWxsS25vd25FbmRQb2ludHM/LmF1dGhvcml6YXRpb25FbmRwb2ludDtcblxuICAgIGlmICghYXV0aG9yaXphdGlvbkVuZHBvaW50KSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRXJyb3IoYENhbiBub3QgY3JlYXRlIGFuIGF1dGhvcml6ZSB1cmwgd2hlbiBhdXRob3JpemF0aW9uRW5kcG9pbnQgaXMgJyR7YXV0aG9yaXphdGlvbkVuZHBvaW50fSdgKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHsgY2xpZW50SWQsIHJlc3BvbnNlVHlwZSwgc2NvcGUsIGhkUGFyYW0sIGN1c3RvbVBhcmFtcyB9ID0gdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbjtcblxuICAgIGlmICghY2xpZW50SWQpIHtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dFcnJvcihgY3JlYXRlQXV0aG9yaXplVXJsIGNvdWxkIG5vdCBhZGQgY2xpZW50SWQgYmVjYXVzZSBpdCB3YXM6IGAsIGNsaWVudElkKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghcmVzcG9uc2VUeXBlKSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRXJyb3IoYGNyZWF0ZUF1dGhvcml6ZVVybCBjb3VsZCBub3QgYWRkIHJlc3BvbnNlVHlwZSBiZWNhdXNlIGl0IHdhczogYCwgcmVzcG9uc2VUeXBlKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghc2NvcGUpIHtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dFcnJvcihgY3JlYXRlQXV0aG9yaXplVXJsIGNvdWxkIG5vdCBhZGQgc2NvcGUgYmVjYXVzZSBpdCB3YXM6IGAsIHNjb3BlKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHVybFBhcnRzID0gYXV0aG9yaXphdGlvbkVuZHBvaW50LnNwbGl0KCc/Jyk7XG4gICAgY29uc3QgYXV0aG9yaXphdGlvblVybCA9IHVybFBhcnRzWzBdO1xuXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcbiAgICAgIGZyb21TdHJpbmc6IHVybFBhcnRzWzFdLFxuICAgICAgZW5jb2RlcjogbmV3IFVyaUVuY29kZXIoKSxcbiAgICB9KTtcblxuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2NsaWVudF9pZCcsIGNsaWVudElkKTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdyZWRpcmVjdF91cmknLCByZWRpcmVjdFVybCk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncmVzcG9uc2VfdHlwZScsIHJlc3BvbnNlVHlwZSk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnc2NvcGUnLCBzY29wZSk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnbm9uY2UnLCBub25jZSk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnc3RhdGUnLCBzdGF0ZSk7XG5cbiAgICBpZiAodGhpcy5mbG93SGVscGVyLmlzQ3VycmVudEZsb3dDb2RlRmxvdygpKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdjb2RlX2NoYWxsZW5nZScsIGNvZGVDaGFsbGVuZ2UpO1xuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnY29kZV9jaGFsbGVuZ2VfbWV0aG9kJywgJ1MyNTYnKTtcbiAgICB9XG5cbiAgICBpZiAocHJvbXB0KSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwcm9tcHQnLCBwcm9tcHQpO1xuICAgIH1cblxuICAgIGlmIChoZFBhcmFtKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdoZCcsIGhkUGFyYW0pO1xuICAgIH1cblxuICAgIGlmIChjdXN0b21QYXJhbXMgfHwgY3VzdG9tUmVxdWVzdFBhcmFtcykge1xuICAgICAgY29uc3QgY3VzdG9tUGFyYW1zVG9BZGQgPSB7IC4uLihjdXN0b21QYXJhbXMgfHwge30pLCAuLi4oY3VzdG9tUmVxdWVzdFBhcmFtcyB8fCB7fSkgfTtcblxuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoY3VzdG9tUGFyYW1zVG9BZGQpKSB7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoa2V5LCB2YWx1ZS50b1N0cmluZygpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYCR7YXV0aG9yaXphdGlvblVybH0/JHtwYXJhbXN9YDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVXJsSW1wbGljaXRGbG93V2l0aFNpbGVudFJlbmV3KGN1c3RvbVBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB9KTogc3RyaW5nIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZmxvd3NEYXRhU2VydmljZS5nZXRFeGlzdGluZ09yQ3JlYXRlQXV0aFN0YXRlQ29udHJvbCgpO1xuICAgIGNvbnN0IG5vbmNlID0gdGhpcy5mbG93c0RhdGFTZXJ2aWNlLmNyZWF0ZU5vbmNlKCk7XG5cbiAgICBjb25zdCBzaWxlbnRSZW5ld1VybCA9IHRoaXMuZ2V0U2lsZW50UmVuZXdVcmwoKTtcblxuICAgIGlmICghc2lsZW50UmVuZXdVcmwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZygnUmVmcmVzaFNlc3Npb24gY3JlYXRlZC4gYWRkaW5nIG15YXV0b3N0YXRlOiAnLCBzdGF0ZSk7XG5cbiAgICBjb25zdCBhdXRoV2VsbEtub3duRW5kUG9pbnRzID0gdGhpcy5zdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlLnJlYWQoJ2F1dGhXZWxsS25vd25FbmRQb2ludHMnKTtcbiAgICBpZiAoYXV0aFdlbGxLbm93bkVuZFBvaW50cykge1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQXV0aG9yaXplVXJsKCcnLCBzaWxlbnRSZW5ld1VybCwgbm9uY2UsIHN0YXRlLCAnbm9uZScsIGN1c3RvbVBhcmFtcyk7XG4gICAgfVxuXG4gICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0Vycm9yKCdhdXRoV2VsbEtub3duRW5kcG9pbnRzIGlzIHVuZGVmaW5lZCcpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVVcmxDb2RlRmxvd1dpdGhTaWxlbnRSZW5ldyhjdXN0b21QYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLmZsb3dzRGF0YVNlcnZpY2UuZ2V0RXhpc3RpbmdPckNyZWF0ZUF1dGhTdGF0ZUNvbnRyb2woKTtcbiAgICBjb25zdCBub25jZSA9IHRoaXMuZmxvd3NEYXRhU2VydmljZS5jcmVhdGVOb25jZSgpO1xuXG4gICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCdSZWZyZXNoU2Vzc2lvbiBjcmVhdGVkLiBhZGRpbmcgbXlhdXRvc3RhdGU6ICcgKyBzdGF0ZSk7XG5cbiAgICAvLyBjb2RlX2NoYWxsZW5nZSB3aXRoIFwiUzI1NlwiXG4gICAgY29uc3QgY29kZVZlcmlmaWVyID0gdGhpcy5mbG93c0RhdGFTZXJ2aWNlLmNyZWF0ZUNvZGVWZXJpZmllcigpO1xuICAgIGNvbnN0IGNvZGVDaGFsbGVuZ2UgPSB0aGlzLnRva2VuVmFsaWRhdGlvblNlcnZpY2UuZ2VuZXJhdGVDb2RlQ2hhbGxlbmdlKGNvZGVWZXJpZmllcik7XG5cbiAgICBjb25zdCBzaWxlbnRSZW5ld1VybCA9IHRoaXMuZ2V0U2lsZW50UmVuZXdVcmwoKTtcblxuICAgIGlmICghc2lsZW50UmVuZXdVcmwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGF1dGhXZWxsS25vd25FbmRQb2ludHMgPSB0aGlzLnN0b3JhZ2VQZXJzaXN0YW5jZVNlcnZpY2UucmVhZCgnYXV0aFdlbGxLbm93bkVuZFBvaW50cycpO1xuICAgIGlmIChhdXRoV2VsbEtub3duRW5kUG9pbnRzKSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVBdXRob3JpemVVcmwoY29kZUNoYWxsZW5nZSwgc2lsZW50UmVuZXdVcmwsIG5vbmNlLCBzdGF0ZSwgJ25vbmUnLCBjdXN0b21QYXJhbXMpO1xuICAgIH1cblxuICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dXYXJuaW5nKCdhdXRoV2VsbEtub3duRW5kcG9pbnRzIGlzIHVuZGVmaW5lZCcpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVVcmxJbXBsaWNpdEZsb3dBdXRob3JpemUoY3VzdG9tUGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIH0pOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5mbG93c0RhdGFTZXJ2aWNlLmdldEV4aXN0aW5nT3JDcmVhdGVBdXRoU3RhdGVDb250cm9sKCk7XG4gICAgY29uc3Qgbm9uY2UgPSB0aGlzLmZsb3dzRGF0YVNlcnZpY2UuY3JlYXRlTm9uY2UoKTtcbiAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ0F1dGhvcml6ZSBjcmVhdGVkLiBhZGRpbmcgbXlhdXRvc3RhdGU6ICcgKyBzdGF0ZSk7XG5cbiAgICBjb25zdCByZWRpcmVjdFVybCA9IHRoaXMuZ2V0UmVkaXJlY3RVcmwoKTtcblxuICAgIGlmICghcmVkaXJlY3RVcmwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGF1dGhXZWxsS25vd25FbmRQb2ludHMgPSB0aGlzLnN0b3JhZ2VQZXJzaXN0YW5jZVNlcnZpY2UucmVhZCgnYXV0aFdlbGxLbm93bkVuZFBvaW50cycpO1xuICAgIGlmIChhdXRoV2VsbEtub3duRW5kUG9pbnRzKSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVBdXRob3JpemVVcmwoJycsIHJlZGlyZWN0VXJsLCBub25jZSwgc3RhdGUsIG51bGwsIGN1c3RvbVBhcmFtcyk7XG4gICAgfVxuXG4gICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0Vycm9yKCdhdXRoV2VsbEtub3duRW5kcG9pbnRzIGlzIHVuZGVmaW5lZCcpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVVcmxDb2RlRmxvd0F1dGhvcml6ZShjdXN0b21QYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLmZsb3dzRGF0YVNlcnZpY2UuZ2V0RXhpc3RpbmdPckNyZWF0ZUF1dGhTdGF0ZUNvbnRyb2woKTtcbiAgICBjb25zdCBub25jZSA9IHRoaXMuZmxvd3NEYXRhU2VydmljZS5jcmVhdGVOb25jZSgpO1xuICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZygnQXV0aG9yaXplIGNyZWF0ZWQuIGFkZGluZyBteWF1dG9zdGF0ZTogJyArIHN0YXRlKTtcblxuICAgIGNvbnN0IHJlZGlyZWN0VXJsID0gdGhpcy5nZXRSZWRpcmVjdFVybCgpO1xuXG4gICAgaWYgKCFyZWRpcmVjdFVybCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gY29kZV9jaGFsbGVuZ2Ugd2l0aCBcIlMyNTZcIlxuICAgIGNvbnN0IGNvZGVWZXJpZmllciA9IHRoaXMuZmxvd3NEYXRhU2VydmljZS5jcmVhdGVDb2RlVmVyaWZpZXIoKTtcbiAgICBjb25zdCBjb2RlQ2hhbGxlbmdlID0gdGhpcy50b2tlblZhbGlkYXRpb25TZXJ2aWNlLmdlbmVyYXRlQ29kZUNoYWxsZW5nZShjb2RlVmVyaWZpZXIpO1xuXG4gICAgY29uc3QgYXV0aFdlbGxLbm93bkVuZFBvaW50cyA9IHRoaXMuc3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZS5yZWFkKCdhdXRoV2VsbEtub3duRW5kUG9pbnRzJyk7XG4gICAgaWYgKGF1dGhXZWxsS25vd25FbmRQb2ludHMpIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUF1dGhvcml6ZVVybChjb2RlQ2hhbGxlbmdlLCByZWRpcmVjdFVybCwgbm9uY2UsIHN0YXRlLCBudWxsLCBjdXN0b21QYXJhbXMpO1xuICAgIH1cblxuICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dFcnJvcignYXV0aFdlbGxLbm93bkVuZHBvaW50cyBpcyB1bmRlZmluZWQnKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVkaXJlY3RVcmwoKSB7XG4gICAgY29uc3QgcmVkaXJlY3RVcmwgPSB0aGlzLmNvbmZpZ3VyYXRpb25Qcm92aWRlci5vcGVuSURDb25maWd1cmF0aW9uPy5yZWRpcmVjdFVybDtcblxuICAgIGlmICghcmVkaXJlY3RVcmwpIHtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dFcnJvcihgY291bGQgbm90IGdldCByZWRpcmVjdFVybCwgd2FzOiBgLCByZWRpcmVjdFVybCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVkaXJlY3RVcmw7XG4gIH1cblxuICBwcml2YXRlIGdldFNpbGVudFJlbmV3VXJsKCkge1xuICAgIGNvbnN0IHNpbGVudFJlbmV3VXJsID0gdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbj8uc2lsZW50UmVuZXdVcmw7XG5cbiAgICBpZiAoIXNpbGVudFJlbmV3VXJsKSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRXJyb3IoYGNvdWxkIG5vdCBnZXQgc2lsZW50UmVuZXdVcmwsIHdhczogYCwgc2lsZW50UmVuZXdVcmwpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNpbGVudFJlbmV3VXJsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQb3N0TG9nb3V0UmVkaXJlY3RVcmwoKSB7XG4gICAgY29uc3QgcG9zdExvZ291dFJlZGlyZWN0VXJpID0gdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbj8ucG9zdExvZ291dFJlZGlyZWN0VXJpO1xuICAgIGlmICghcG9zdExvZ291dFJlZGlyZWN0VXJpKSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRXJyb3IoYGNvdWxkIG5vdCBnZXQgcG9zdExvZ291dFJlZGlyZWN0VXJpLCB3YXM6IGAsIHBvc3RMb2dvdXRSZWRpcmVjdFVyaSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gcG9zdExvZ291dFJlZGlyZWN0VXJpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDbGllbnRJZCgpIHtcbiAgICBjb25zdCBjbGllbnRJZCA9IHRoaXMuY29uZmlndXJhdGlvblByb3ZpZGVyLm9wZW5JRENvbmZpZ3VyYXRpb24/LmNsaWVudElkO1xuICAgIGlmICghY2xpZW50SWQpIHtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dFcnJvcihgY291bGQgbm90IGdldCBjbGllbnRJZCwgd2FzOiBgLCBjbGllbnRJZCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xpZW50SWQ7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdXRoLW9pZGMtY2xpZW50L3NyYy8iLCJzb3VyY2VzIjpbImxpYi91dGlscy91cmwvdXJsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBRXhFLE1BQU0sT0FBTyxVQUFVO0lBQ3JCLFlBQ21CLHFCQUE0QyxFQUM1QyxhQUE0QixFQUM1QixnQkFBa0MsRUFDbEMsVUFBc0IsRUFDL0Isc0JBQThDLEVBQzlDLHlCQUFvRDtRQUwzQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUMvQiwyQkFB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MENBQUUscUJBQXFCLENBQUM7UUFDcEcsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLDRDQUE0QyxFQUFFLHFCQUFxQixDQUFDLENBQUM7WUFDakcsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8scUJBQXFCLENBQUM7SUFDL0IsQ0FBQztJQUVPLFdBQVc7O1FBQ2pCLE1BQU0sUUFBUSxTQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsMENBQUUsUUFBUSxDQUFDO1FBQzFFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQywrQkFBK0IsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUN2RSxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVPLG1CQUFtQixDQUFDLFlBQTBEO1FBQ3BGLElBQUksZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUV6QixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUN2RCxlQUFlLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ3pFO1FBRUQsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQzs7O1lBdGNGLFVBQVU7OztZQVRGLHFCQUFxQjtZQUVyQixhQUFhO1lBRGIsZ0JBQWdCO1lBSWhCLFVBQVU7WUFEVixzQkFBc0I7WUFEdEIseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG9uZUxpbmVUcmltIH0gZnJvbSAnY29tbW9uLXRhZ3MnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vY29uZmlnL2NvbmZpZy5wcm92aWRlcic7XG5pbXBvcnQgeyBGbG93c0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZmxvd3MvZmxvd3MtZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9sb2dnaW5nL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JhZ2VQZXJzaXN0YW5jZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zdG9yYWdlL3N0b3JhZ2UtcGVyc2lzdGFuY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBUb2tlblZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdmFsaWRhdGlvbi90b2tlbi12YWxpZGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmxvd0hlbHBlciB9IGZyb20gJy4uL2Zsb3dIZWxwZXIvZmxvdy1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBVcmlFbmNvZGVyIH0gZnJvbSAnLi91cmktZW5jb2Rlcic7XG5cbmNvbnN0IENBTExCQUNLX1BBUkFNU19UT19DSEVDSyA9IFsnY29kZScsICdzdGF0ZScsICd0b2tlbicsICdpZF90b2tlbiddO1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFVybFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb25Qcm92aWRlcjogQ29uZmlndXJhdGlvblByb3ZpZGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyU2VydmljZTogTG9nZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZsb3dzRGF0YVNlcnZpY2U6IEZsb3dzRGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmbG93SGVscGVyOiBGbG93SGVscGVyLFxuICAgIHByaXZhdGUgdG9rZW5WYWxpZGF0aW9uU2VydmljZTogVG9rZW5WYWxpZGF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JhZ2VQZXJzaXN0YW5jZVNlcnZpY2U6IFN0b3JhZ2VQZXJzaXN0YW5jZVNlcnZpY2VcbiAgKSB7fVxuXG4gIGdldFVybFBhcmFtZXRlcih1cmxUb0NoZWNrOiBhbnksIG5hbWU6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKCF1cmxUb0NoZWNrKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKCFuYW1lKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgbmFtZSA9IG5hbWUucmVwbGFjZSgvW1xcW10vLCAnXFxcXFsnKS5yZXBsYWNlKC9bXFxdXS8sICdcXFxcXScpO1xuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cCgnW1xcXFw/Jl0nICsgbmFtZSArICc9KFteJiNdKiknKTtcbiAgICBjb25zdCByZXN1bHRzID0gcmVnZXguZXhlYyh1cmxUb0NoZWNrKTtcbiAgICByZXR1cm4gcmVzdWx0cyA9PT0gbnVsbCA/ICcnIDogZGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdHNbMV0pO1xuICB9XG5cbiAgaXNDYWxsYmFja0Zyb21TdHMoY3VycmVudFVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIENBTExCQUNLX1BBUkFNU19UT19DSEVDSy5zb21lKCh4KSA9PiAhIXRoaXMuZ2V0VXJsUGFyYW1ldGVyKGN1cnJlbnRVcmwsIHgpKTtcbiAgfVxuXG4gIGdldFJlZnJlc2hTZXNzaW9uU2lsZW50UmVuZXdVcmwoY3VzdG9tUGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIH0pOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmZsb3dIZWxwZXIuaXNDdXJyZW50Rmxvd0NvZGVGbG93KCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVVybENvZGVGbG93V2l0aFNpbGVudFJlbmV3KGN1c3RvbVBhcmFtcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlVXJsSW1wbGljaXRGbG93V2l0aFNpbGVudFJlbmV3KGN1c3RvbVBhcmFtcykgfHwgJyc7XG4gIH1cblxuICBnZXRBdXRob3JpemVQYXJVcmwocmVxdWVzdFVyaTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBhdXRoV2VsbEtub3duRW5kUG9pbnRzID0gdGhpcy5zdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlLnJlYWQoJ2F1dGhXZWxsS25vd25FbmRQb2ludHMnKTtcblxuICAgIGlmICghYXV0aFdlbGxLbm93bkVuZFBvaW50cykge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0Vycm9yKCdhdXRoV2VsbEtub3duRW5kcG9pbnRzIGlzIHVuZGVmaW5lZCcpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgYXV0aG9yaXphdGlvbkVuZHBvaW50ID0gYXV0aFdlbGxLbm93bkVuZFBvaW50cy5hdXRob3JpemF0aW9uRW5kcG9pbnQ7XG5cbiAgICBpZiAoIWF1dGhvcml6YXRpb25FbmRwb2ludCkge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0Vycm9yKGBDYW4gbm90IGNyZWF0ZSBhbiBhdXRob3JpemUgdXJsIHdoZW4gYXV0aG9yaXphdGlvbkVuZHBvaW50IGlzICcke2F1dGhvcml6YXRpb25FbmRwb2ludH0nYCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB7IGNsaWVudElkIH0gPSB0aGlzLmNvbmZpZ3VyYXRpb25Qcm92aWRlci5vcGVuSURDb25maWd1cmF0aW9uO1xuXG4gICAgaWYgKCFjbGllbnRJZCkge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0Vycm9yKGBjcmVhdGVBdXRob3JpemVVcmwgY291bGQgbm90IGFkZCBjbGllbnRJZCBiZWNhdXNlIGl0IHdhczogYCwgY2xpZW50SWQpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgdXJsUGFydHMgPSBhdXRob3JpemF0aW9uRW5kcG9pbnQuc3BsaXQoJz8nKTtcbiAgICBjb25zdCBhdXRob3JpemF0aW9uVXJsID0gdXJsUGFydHNbMF07XG5cbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoe1xuICAgICAgZnJvbVN0cmluZzogdXJsUGFydHNbMV0sXG4gICAgICBlbmNvZGVyOiBuZXcgVXJpRW5jb2RlcigpLFxuICAgIH0pO1xuXG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgncmVxdWVzdF91cmknLCByZXF1ZXN0VXJpKTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdjbGllbnRfaWQnLCBjbGllbnRJZCk7XG5cbiAgICByZXR1cm4gYCR7YXV0aG9yaXphdGlvblVybH0/JHtwYXJhbXN9YDtcbiAgfVxuXG4gIGdldEF1dGhvcml6ZVVybChjdXN0b21QYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuZmxvd0hlbHBlci5pc0N1cnJlbnRGbG93Q29kZUZsb3coKSkge1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVXJsQ29kZUZsb3dBdXRob3JpemUoY3VzdG9tUGFyYW1zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVVcmxJbXBsaWNpdEZsb3dBdXRob3JpemUoY3VzdG9tUGFyYW1zKSB8fCAnJztcbiAgfVxuXG4gIGNyZWF0ZUVuZFNlc3Npb25VcmwoaWRUb2tlbkhpbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgYXV0aFdlbGxLbm93bkVuZFBvaW50cyA9IHRoaXMuc3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZS5yZWFkKCdhdXRoV2VsbEtub3duRW5kUG9pbnRzJyk7XG4gICAgY29uc3QgZW5kU2Vzc2lvbkVuZHBvaW50ID0gYXV0aFdlbGxLbm93bkVuZFBvaW50cz8uZW5kU2Vzc2lvbkVuZHBvaW50O1xuXG4gICAgaWYgKCFlbmRTZXNzaW9uRW5kcG9pbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHVybFBhcnRzID0gZW5kU2Vzc2lvbkVuZHBvaW50LnNwbGl0KCc/Jyk7XG5cbiAgICBjb25zdCBhdXRob3JpemF0aW9uRW5kc2Vzc2lvblVybCA9IHVybFBhcnRzWzBdO1xuXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcbiAgICAgIGZyb21TdHJpbmc6IHVybFBhcnRzWzFdLFxuICAgICAgZW5jb2RlcjogbmV3IFVyaUVuY29kZXIoKSxcbiAgICB9KTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdpZF90b2tlbl9oaW50JywgaWRUb2tlbkhpbnQpO1xuXG4gICAgY29uc3QgcG9zdExvZ291dFJlZGlyZWN0VXJpID0gdGhpcy5nZXRQb3N0TG9nb3V0UmVkaXJlY3RVcmwoKTtcblxuICAgIGlmIChwb3N0TG9nb3V0UmVkaXJlY3RVcmkpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3Bvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaScsIHBvc3RMb2dvdXRSZWRpcmVjdFVyaSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke2F1dGhvcml6YXRpb25FbmRzZXNzaW9uVXJsfT8ke3BhcmFtc31gO1xuICB9XG5cbiAgY3JlYXRlUmV2b2NhdGlvbkVuZHBvaW50Qm9keUFjY2Vzc1Rva2VuKHRva2VuOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNsaWVudElkID0gdGhpcy5nZXRDbGllbnRJZCgpO1xuXG4gICAgaWYgKCFjbGllbnRJZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBjbGllbnRfaWQ9JHtjbGllbnRJZH0mdG9rZW49JHt0b2tlbn0mdG9rZW5fdHlwZV9oaW50PWFjY2Vzc190b2tlbmA7XG4gIH1cblxuICBjcmVhdGVSZXZvY2F0aW9uRW5kcG9pbnRCb2R5UmVmcmVzaFRva2VuKHRva2VuOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNsaWVudElkID0gdGhpcy5nZXRDbGllbnRJZCgpO1xuXG4gICAgaWYgKCFjbGllbnRJZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBjbGllbnRfaWQ9JHtjbGllbnRJZH0mdG9rZW49JHt0b2tlbn0mdG9rZW5fdHlwZV9oaW50PXJlZnJlc2hfdG9rZW5gO1xuICB9XG5cbiAgZ2V0UmV2b2NhdGlvbkVuZHBvaW50VXJsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYXV0aFdlbGxLbm93bkVuZFBvaW50cyA9IHRoaXMuc3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZS5yZWFkKCdhdXRoV2VsbEtub3duRW5kUG9pbnRzJyk7XG4gICAgY29uc3QgcmV2b2NhdGlvbkVuZHBvaW50ID0gYXV0aFdlbGxLbm93bkVuZFBvaW50cz8ucmV2b2NhdGlvbkVuZHBvaW50O1xuXG4gICAgaWYgKCFyZXZvY2F0aW9uRW5kcG9pbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHVybFBhcnRzID0gcmV2b2NhdGlvbkVuZHBvaW50LnNwbGl0KCc/Jyk7XG5cbiAgICBjb25zdCByZXZvY2F0aW9uRW5kcG9pbnRVcmwgPSB1cmxQYXJ0c1swXTtcbiAgICByZXR1cm4gcmV2b2NhdGlvbkVuZHBvaW50VXJsO1xuICB9XG5cbiAgY3JlYXRlQm9keUZvckNvZGVGbG93Q29kZVJlcXVlc3QoY29kZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb2RlVmVyaWZpZXIgPSB0aGlzLmZsb3dzRGF0YVNlcnZpY2UuZ2V0Q29kZVZlcmlmaWVyKCk7XG4gICAgaWYgKCFjb2RlVmVyaWZpZXIpIHtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dFcnJvcihgQ29kZVZlcmlmaWVyIGlzIG5vdCBzZXQgYCwgY29kZVZlcmlmaWVyKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGNsaWVudElkID0gdGhpcy5nZXRDbGllbnRJZCgpO1xuXG4gICAgaWYgKCFjbGllbnRJZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YUZvckJvZHkgPSBvbmVMaW5lVHJpbWBncmFudF90eXBlPWF1dGhvcml6YXRpb25fY29kZVxuICAgICAgICAgICAgJmNsaWVudF9pZD0ke2NsaWVudElkfVxuICAgICAgICAgICAgJmNvZGVfdmVyaWZpZXI9JHtjb2RlVmVyaWZpZXJ9XG4gICAgICAgICAgICAmY29kZT0ke2NvZGV9YDtcblxuICAgIGNvbnN0IHNpbGVudFJlbmV3VXJsID0gdGhpcy5nZXRTaWxlbnRSZW5ld1VybCgpO1xuXG4gICAgaWYgKHRoaXMuZmxvd3NEYXRhU2VydmljZS5pc1NpbGVudFJlbmV3UnVubmluZygpICYmIHNpbGVudFJlbmV3VXJsKSB7XG4gICAgICByZXR1cm4gb25lTGluZVRyaW1gJHtkYXRhRm9yQm9keX0mcmVkaXJlY3RfdXJpPSR7c2lsZW50UmVuZXdVcmx9YDtcbiAgICB9XG5cbiAgICBjb25zdCByZWRpcmVjdFVybCA9IHRoaXMuZ2V0UmVkaXJlY3RVcmwoKTtcblxuICAgIGlmICghcmVkaXJlY3RVcmwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBvbmVMaW5lVHJpbWAke2RhdGFGb3JCb2R5fSZyZWRpcmVjdF91cmk9JHtyZWRpcmVjdFVybH1gO1xuICB9XG5cbiAgY3JlYXRlQm9keUZvckNvZGVGbG93UmVmcmVzaFRva2Vuc1JlcXVlc3QocmVmcmVzaFRva2VuOiBzdHJpbmcsIGN1c3RvbVBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB9KTogc3RyaW5nIHtcbiAgICBjb25zdCBjbGllbnRJZCA9IHRoaXMuZ2V0Q2xpZW50SWQoKTtcblxuICAgIGlmICghY2xpZW50SWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBkYXRhRm9yQm9keSA9IG9uZUxpbmVUcmltYGdyYW50X3R5cGU9cmVmcmVzaF90b2tlblxuICAgICAgICAgICAgJmNsaWVudF9pZD0ke2NsaWVudElkfVxuICAgICAgICAgICAgJnJlZnJlc2hfdG9rZW49JHtyZWZyZXNoVG9rZW59YDtcblxuICAgIGlmIChjdXN0b21QYXJhbXMpIHtcbiAgICAgIGNvbnN0IGN1c3RvbVBhcmFtVGV4dCA9IHRoaXMuY29tcG9zZUN1c3RvbVBhcmFtcyh7IC4uLmN1c3RvbVBhcmFtcyB9KTtcbiAgICAgIGRhdGFGb3JCb2R5ID0gYCR7ZGF0YUZvckJvZHl9JHtjdXN0b21QYXJhbVRleHR9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YUZvckJvZHk7XG4gIH1cblxuICBjcmVhdGVCb2R5Rm9yUGFyQ29kZUZsb3dSZXF1ZXN0KGN1c3RvbVBhcmFtc1JlcXVlc3Q/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVkaXJlY3RVcmwgPSB0aGlzLmdldFJlZGlyZWN0VXJsKCk7XG5cbiAgICBpZiAoIXJlZGlyZWN0VXJsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZmxvd3NEYXRhU2VydmljZS5nZXRFeGlzdGluZ09yQ3JlYXRlQXV0aFN0YXRlQ29udHJvbCgpO1xuICAgIGNvbnN0IG5vbmNlID0gdGhpcy5mbG93c0RhdGFTZXJ2aWNlLmNyZWF0ZU5vbmNlKCk7XG4gICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCdBdXRob3JpemUgY3JlYXRlZC4gYWRkaW5nIG15YXV0b3N0YXRlOiAnICsgc3RhdGUpO1xuXG4gICAgLy8gY29kZV9jaGFsbGVuZ2Ugd2l0aCBcIlMyNTZcIlxuICAgIGNvbnN0IGNvZGVWZXJpZmllciA9IHRoaXMuZmxvd3NEYXRhU2VydmljZS5jcmVhdGVDb2RlVmVyaWZpZXIoKTtcbiAgICBjb25zdCBjb2RlQ2hhbGxlbmdlID0gdGhpcy50b2tlblZhbGlkYXRpb25TZXJ2aWNlLmdlbmVyYXRlQ29kZUNoYWxsZW5nZShjb2RlVmVyaWZpZXIpO1xuXG4gICAgY29uc3QgeyBjbGllbnRJZCwgcmVzcG9uc2VUeXBlLCBzY29wZSwgaGRQYXJhbSwgY3VzdG9tUGFyYW1zIH0gPSB0aGlzLmNvbmZpZ3VyYXRpb25Qcm92aWRlci5vcGVuSURDb25maWd1cmF0aW9uO1xuXG4gICAgbGV0IGRhdGFGb3JCb2R5ID0gb25lTGluZVRyaW1gY2xpZW50X2lkPSR7Y2xpZW50SWR9XG4gICAgICAgICAgICAmcmVkaXJlY3RfdXJpPSR7cmVkaXJlY3RVcmx9XG4gICAgICAgICAgICAmcmVzcG9uc2VfdHlwZT0ke3Jlc3BvbnNlVHlwZX1cbiAgICAgICAgICAgICZzY29wZT0ke3Njb3BlfVxuICAgICAgICAgICAgJm5vbmNlPSR7bm9uY2V9XG4gICAgICAgICAgICAmc3RhdGU9JHtzdGF0ZX1cbiAgICAgICAgICAgICZjb2RlX2NoYWxsZW5nZT0ke2NvZGVDaGFsbGVuZ2V9XG4gICAgICAgICAgICAmY29kZV9jaGFsbGVuZ2VfbWV0aG9kPVMyNTZgO1xuXG4gICAgaWYgKGhkUGFyYW0pIHtcbiAgICAgIGRhdGFGb3JCb2R5ID0gYCR7ZGF0YUZvckJvZHl9JmhkPSR7aGRQYXJhbX1gO1xuICAgIH1cblxuICAgIGlmIChjdXN0b21QYXJhbXMpIHtcbiAgICAgIGNvbnN0IGN1c3RvbVBhcmFtVGV4dCA9IHRoaXMuY29tcG9zZUN1c3RvbVBhcmFtcyh7IC4uLmN1c3RvbVBhcmFtcyB9KTtcbiAgICAgIGRhdGFGb3JCb2R5ID0gYCR7ZGF0YUZvckJvZHl9JHtjdXN0b21QYXJhbVRleHR9YDtcbiAgICB9XG5cbiAgICBpZiAoY3VzdG9tUGFyYW1zUmVxdWVzdCkge1xuICAgICAgY29uc3QgY3VzdG9tUGFyYW1UZXh0ID0gdGhpcy5jb21wb3NlQ3VzdG9tUGFyYW1zKHsgLi4uY3VzdG9tUGFyYW1zUmVxdWVzdCB9KTtcbiAgICAgIGRhdGFGb3JCb2R5ID0gYCR7ZGF0YUZvckJvZHl9JHtjdXN0b21QYXJhbVRleHR9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YUZvckJvZHk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUF1dGhvcml6ZVVybChcbiAgICBjb2RlQ2hhbGxlbmdlOiBzdHJpbmcsXG4gICAgcmVkaXJlY3RVcmw6IHN0cmluZyxcbiAgICBub25jZTogc3RyaW5nLFxuICAgIHN0YXRlOiBzdHJpbmcsXG4gICAgcHJvbXB0Pzogc3RyaW5nLFxuICAgIGN1c3RvbVJlcXVlc3RQYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfVxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGF1dGhXZWxsS25vd25FbmRQb2ludHMgPSB0aGlzLnN0b3JhZ2VQZXJzaXN0YW5jZVNlcnZpY2UucmVhZCgnYXV0aFdlbGxLbm93bkVuZFBvaW50cycpO1xuICAgIGNvbnN0IGF1dGhvcml6YXRpb25FbmRwb2ludCA9IGF1dGhXZWxsS25vd25FbmRQb2ludHM/LmF1dGhvcml6YXRpb25FbmRwb2ludDtcblxuICAgIGlmICghYXV0aG9yaXphdGlvbkVuZHBvaW50KSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRXJyb3IoYENhbiBub3QgY3JlYXRlIGFuIGF1dGhvcml6ZSB1cmwgd2hlbiBhdXRob3JpemF0aW9uRW5kcG9pbnQgaXMgJyR7YXV0aG9yaXphdGlvbkVuZHBvaW50fSdgKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHsgY2xpZW50SWQsIHJlc3BvbnNlVHlwZSwgc2NvcGUsIGhkUGFyYW0sIGN1c3RvbVBhcmFtcyB9ID0gdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbjtcblxuICAgIGlmICghY2xpZW50SWQpIHtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dFcnJvcihgY3JlYXRlQXV0aG9yaXplVXJsIGNvdWxkIG5vdCBhZGQgY2xpZW50SWQgYmVjYXVzZSBpdCB3YXM6IGAsIGNsaWVudElkKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghcmVzcG9uc2VUeXBlKSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRXJyb3IoYGNyZWF0ZUF1dGhvcml6ZVVybCBjb3VsZCBub3QgYWRkIHJlc3BvbnNlVHlwZSBiZWNhdXNlIGl0IHdhczogYCwgcmVzcG9uc2VUeXBlKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghc2NvcGUpIHtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dFcnJvcihgY3JlYXRlQXV0aG9yaXplVXJsIGNvdWxkIG5vdCBhZGQgc2NvcGUgYmVjYXVzZSBpdCB3YXM6IGAsIHNjb3BlKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHVybFBhcnRzID0gYXV0aG9yaXphdGlvbkVuZHBvaW50LnNwbGl0KCc/Jyk7XG4gICAgY29uc3QgYXV0aG9yaXphdGlvblVybCA9IHVybFBhcnRzWzBdO1xuXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKHtcbiAgICAgIGZyb21TdHJpbmc6IHVybFBhcnRzWzFdLFxuICAgICAgZW5jb2RlcjogbmV3IFVyaUVuY29kZXIoKSxcbiAgICB9KTtcblxuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2NsaWVudF9pZCcsIGNsaWVudElkKTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdyZWRpcmVjdF91cmknLCByZWRpcmVjdFVybCk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncmVzcG9uc2VfdHlwZScsIHJlc3BvbnNlVHlwZSk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnc2NvcGUnLCBzY29wZSk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnbm9uY2UnLCBub25jZSk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnc3RhdGUnLCBzdGF0ZSk7XG5cbiAgICBpZiAodGhpcy5mbG93SGVscGVyLmlzQ3VycmVudEZsb3dDb2RlRmxvdygpKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdjb2RlX2NoYWxsZW5nZScsIGNvZGVDaGFsbGVuZ2UpO1xuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnY29kZV9jaGFsbGVuZ2VfbWV0aG9kJywgJ1MyNTYnKTtcbiAgICB9XG5cbiAgICBpZiAocHJvbXB0KSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwcm9tcHQnLCBwcm9tcHQpO1xuICAgIH1cblxuICAgIGlmIChoZFBhcmFtKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdoZCcsIGhkUGFyYW0pO1xuICAgIH1cblxuICAgIGlmIChjdXN0b21QYXJhbXMpIHtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHsgLi4uY3VzdG9tUGFyYW1zIH0pKSB7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoa2V5LCB2YWx1ZS50b1N0cmluZygpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY3VzdG9tUmVxdWVzdFBhcmFtcykge1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoeyAuLi5jdXN0b21SZXF1ZXN0UGFyYW1zIH0pKSB7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoa2V5LCB2YWx1ZS50b1N0cmluZygpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYCR7YXV0aG9yaXphdGlvblVybH0/JHtwYXJhbXN9YDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVXJsSW1wbGljaXRGbG93V2l0aFNpbGVudFJlbmV3KGN1c3RvbVBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB9KTogc3RyaW5nIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZmxvd3NEYXRhU2VydmljZS5nZXRFeGlzdGluZ09yQ3JlYXRlQXV0aFN0YXRlQ29udHJvbCgpO1xuICAgIGNvbnN0IG5vbmNlID0gdGhpcy5mbG93c0RhdGFTZXJ2aWNlLmNyZWF0ZU5vbmNlKCk7XG5cbiAgICBjb25zdCBzaWxlbnRSZW5ld1VybCA9IHRoaXMuZ2V0U2lsZW50UmVuZXdVcmwoKTtcblxuICAgIGlmICghc2lsZW50UmVuZXdVcmwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZygnUmVmcmVzaFNlc3Npb24gY3JlYXRlZC4gYWRkaW5nIG15YXV0b3N0YXRlOiAnLCBzdGF0ZSk7XG5cbiAgICBjb25zdCBhdXRoV2VsbEtub3duRW5kUG9pbnRzID0gdGhpcy5zdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlLnJlYWQoJ2F1dGhXZWxsS25vd25FbmRQb2ludHMnKTtcbiAgICBpZiAoYXV0aFdlbGxLbm93bkVuZFBvaW50cykge1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQXV0aG9yaXplVXJsKCcnLCBzaWxlbnRSZW5ld1VybCwgbm9uY2UsIHN0YXRlLCAnbm9uZScsIGN1c3RvbVBhcmFtcyk7XG4gICAgfVxuXG4gICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0Vycm9yKCdhdXRoV2VsbEtub3duRW5kcG9pbnRzIGlzIHVuZGVmaW5lZCcpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVVcmxDb2RlRmxvd1dpdGhTaWxlbnRSZW5ldyhjdXN0b21QYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLmZsb3dzRGF0YVNlcnZpY2UuZ2V0RXhpc3RpbmdPckNyZWF0ZUF1dGhTdGF0ZUNvbnRyb2woKTtcbiAgICBjb25zdCBub25jZSA9IHRoaXMuZmxvd3NEYXRhU2VydmljZS5jcmVhdGVOb25jZSgpO1xuXG4gICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCdSZWZyZXNoU2Vzc2lvbiBjcmVhdGVkLiBhZGRpbmcgbXlhdXRvc3RhdGU6ICcgKyBzdGF0ZSk7XG5cbiAgICAvLyBjb2RlX2NoYWxsZW5nZSB3aXRoIFwiUzI1NlwiXG4gICAgY29uc3QgY29kZVZlcmlmaWVyID0gdGhpcy5mbG93c0RhdGFTZXJ2aWNlLmNyZWF0ZUNvZGVWZXJpZmllcigpO1xuICAgIGNvbnN0IGNvZGVDaGFsbGVuZ2UgPSB0aGlzLnRva2VuVmFsaWRhdGlvblNlcnZpY2UuZ2VuZXJhdGVDb2RlQ2hhbGxlbmdlKGNvZGVWZXJpZmllcik7XG5cbiAgICBjb25zdCBzaWxlbnRSZW5ld1VybCA9IHRoaXMuZ2V0U2lsZW50UmVuZXdVcmwoKTtcblxuICAgIGlmICghc2lsZW50UmVuZXdVcmwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGF1dGhXZWxsS25vd25FbmRQb2ludHMgPSB0aGlzLnN0b3JhZ2VQZXJzaXN0YW5jZVNlcnZpY2UucmVhZCgnYXV0aFdlbGxLbm93bkVuZFBvaW50cycpO1xuICAgIGlmIChhdXRoV2VsbEtub3duRW5kUG9pbnRzKSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVBdXRob3JpemVVcmwoY29kZUNoYWxsZW5nZSwgc2lsZW50UmVuZXdVcmwsIG5vbmNlLCBzdGF0ZSwgJ25vbmUnLCBjdXN0b21QYXJhbXMpO1xuICAgIH1cblxuICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dXYXJuaW5nKCdhdXRoV2VsbEtub3duRW5kcG9pbnRzIGlzIHVuZGVmaW5lZCcpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVVcmxJbXBsaWNpdEZsb3dBdXRob3JpemUoY3VzdG9tUGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIH0pOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5mbG93c0RhdGFTZXJ2aWNlLmdldEV4aXN0aW5nT3JDcmVhdGVBdXRoU3RhdGVDb250cm9sKCk7XG4gICAgY29uc3Qgbm9uY2UgPSB0aGlzLmZsb3dzRGF0YVNlcnZpY2UuY3JlYXRlTm9uY2UoKTtcbiAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ0F1dGhvcml6ZSBjcmVhdGVkLiBhZGRpbmcgbXlhdXRvc3RhdGU6ICcgKyBzdGF0ZSk7XG5cbiAgICBjb25zdCByZWRpcmVjdFVybCA9IHRoaXMuZ2V0UmVkaXJlY3RVcmwoKTtcblxuICAgIGlmICghcmVkaXJlY3RVcmwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGF1dGhXZWxsS25vd25FbmRQb2ludHMgPSB0aGlzLnN0b3JhZ2VQZXJzaXN0YW5jZVNlcnZpY2UucmVhZCgnYXV0aFdlbGxLbm93bkVuZFBvaW50cycpO1xuICAgIGlmIChhdXRoV2VsbEtub3duRW5kUG9pbnRzKSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVBdXRob3JpemVVcmwoJycsIHJlZGlyZWN0VXJsLCBub25jZSwgc3RhdGUsIG51bGwsIGN1c3RvbVBhcmFtcyk7XG4gICAgfVxuXG4gICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0Vycm9yKCdhdXRoV2VsbEtub3duRW5kcG9pbnRzIGlzIHVuZGVmaW5lZCcpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVVcmxDb2RlRmxvd0F1dGhvcml6ZShjdXN0b21QYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLmZsb3dzRGF0YVNlcnZpY2UuZ2V0RXhpc3RpbmdPckNyZWF0ZUF1dGhTdGF0ZUNvbnRyb2woKTtcbiAgICBjb25zdCBub25jZSA9IHRoaXMuZmxvd3NEYXRhU2VydmljZS5jcmVhdGVOb25jZSgpO1xuICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZygnQXV0aG9yaXplIGNyZWF0ZWQuIGFkZGluZyBteWF1dG9zdGF0ZTogJyArIHN0YXRlKTtcblxuICAgIGNvbnN0IHJlZGlyZWN0VXJsID0gdGhpcy5nZXRSZWRpcmVjdFVybCgpO1xuXG4gICAgaWYgKCFyZWRpcmVjdFVybCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gY29kZV9jaGFsbGVuZ2Ugd2l0aCBcIlMyNTZcIlxuICAgIGNvbnN0IGNvZGVWZXJpZmllciA9IHRoaXMuZmxvd3NEYXRhU2VydmljZS5jcmVhdGVDb2RlVmVyaWZpZXIoKTtcbiAgICBjb25zdCBjb2RlQ2hhbGxlbmdlID0gdGhpcy50b2tlblZhbGlkYXRpb25TZXJ2aWNlLmdlbmVyYXRlQ29kZUNoYWxsZW5nZShjb2RlVmVyaWZpZXIpO1xuXG4gICAgY29uc3QgYXV0aFdlbGxLbm93bkVuZFBvaW50cyA9IHRoaXMuc3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZS5yZWFkKCdhdXRoV2VsbEtub3duRW5kUG9pbnRzJyk7XG4gICAgaWYgKGF1dGhXZWxsS25vd25FbmRQb2ludHMpIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUF1dGhvcml6ZVVybChjb2RlQ2hhbGxlbmdlLCByZWRpcmVjdFVybCwgbm9uY2UsIHN0YXRlLCBudWxsLCBjdXN0b21QYXJhbXMpO1xuICAgIH1cblxuICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dFcnJvcignYXV0aFdlbGxLbm93bkVuZHBvaW50cyBpcyB1bmRlZmluZWQnKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVkaXJlY3RVcmwoKTogc3RyaW5nIHtcbiAgICBjb25zdCByZWRpcmVjdFVybCA9IHRoaXMuY29uZmlndXJhdGlvblByb3ZpZGVyLm9wZW5JRENvbmZpZ3VyYXRpb24/LnJlZGlyZWN0VXJsO1xuXG4gICAgaWYgKCFyZWRpcmVjdFVybCkge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0Vycm9yKGBjb3VsZCBub3QgZ2V0IHJlZGlyZWN0VXJsLCB3YXM6IGAsIHJlZGlyZWN0VXJsKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiByZWRpcmVjdFVybDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2lsZW50UmVuZXdVcmwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzaWxlbnRSZW5ld1VybCA9IHRoaXMuY29uZmlndXJhdGlvblByb3ZpZGVyLm9wZW5JRENvbmZpZ3VyYXRpb24/LnNpbGVudFJlbmV3VXJsO1xuXG4gICAgaWYgKCFzaWxlbnRSZW5ld1VybCkge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0Vycm9yKGBjb3VsZCBub3QgZ2V0IHNpbGVudFJlbmV3VXJsLCB3YXM6IGAsIHNpbGVudFJlbmV3VXJsKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBzaWxlbnRSZW5ld1VybDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UG9zdExvZ291dFJlZGlyZWN0VXJsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcG9zdExvZ291dFJlZGlyZWN0VXJpID0gdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbj8ucG9zdExvZ291dFJlZGlyZWN0VXJpO1xuICAgIGlmICghcG9zdExvZ291dFJlZGlyZWN0VXJpKSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRXJyb3IoYGNvdWxkIG5vdCBnZXQgcG9zdExvZ291dFJlZGlyZWN0VXJpLCB3YXM6IGAsIHBvc3RMb2dvdXRSZWRpcmVjdFVyaSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gcG9zdExvZ291dFJlZGlyZWN0VXJpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDbGllbnRJZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNsaWVudElkID0gdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbj8uY2xpZW50SWQ7XG4gICAgaWYgKCFjbGllbnRJZCkge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0Vycm9yKGBjb3VsZCBub3QgZ2V0IGNsaWVudElkLCB3YXM6IGAsIGNsaWVudElkKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBjbGllbnRJZDtcbiAgfVxuXG4gIHByaXZhdGUgY29tcG9zZUN1c3RvbVBhcmFtcyhjdXN0b21QYXJhbXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB9KSB7XG4gICAgbGV0IGN1c3RvbVBhcmFtVGV4dCA9ICcnO1xuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoY3VzdG9tUGFyYW1zKSkge1xuICAgICAgY3VzdG9tUGFyYW1UZXh0ID0gY3VzdG9tUGFyYW1UZXh0LmNvbmNhdChgJiR7a2V5fT0ke3ZhbHVlLnRvU3RyaW5nKCl9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGN1c3RvbVBhcmFtVGV4dDtcbiAgfVxufVxuIl19

@@ -220,2 +220,2 @@ import { Injectable } from '@angular/core';

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtdmFsaWRhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXV0aC1vaWRjLWNsaWVudC9zcmMvIiwic291cmNlcyI6WyJsaWIvdmFsaWRhdGlvbi9zdGF0ZS12YWxpZGF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNwRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUd2RCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFlBQ1UseUJBQW9ELEVBQ3BELHNCQUE4QyxFQUM5QyxrQkFBc0MsRUFDdEMsYUFBNEIsRUFDNUIscUJBQTRDLEVBQzVDLGVBQWdDLEVBQ2hDLFVBQXNCO1FBTnRCLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMkI7UUFDcEQsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FB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SyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzlEO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMscUNBQXFDLENBQUMsQ0FBQztJQUNyRSxDQUFDOzs7WUEvUEYsVUFBVTs7O1lBUkYseUJBQXlCO1lBS3pCLHNCQUFzQjtZQUZ0QixrQkFBa0I7WUFKbEIsYUFBYTtZQUZiLHFCQUFxQjtZQUlyQixlQUFlO1lBQ2YsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25Qcm92aWRlciB9IGZyb20gJy4uL2NvbmZpZy9jb25maWcucHJvdmlkZXInO1xuaW1wb3J0IHsgQ2FsbGJhY2tDb250ZXh0IH0gZnJvbSAnLi4vZmxvd3MvY2FsbGJhY2stY29udGV4dCc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nZ2luZy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmFnZS9zdG9yYWdlLXBlcnNpc3RhbmNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRXF1YWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvZXF1YWxpdHkvZXF1YWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBGbG93SGVscGVyIH0gZnJvbSAnLi4vdXRpbHMvZmxvd0hlbHBlci9mbG93LWhlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRva2VuSGVscGVyU2VydmljZSB9IGZyb20gJy4uL3V0aWxzL3Rva2VuSGVscGVyL29pZGMtdG9rZW4taGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RhdGVWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnLi9zdGF0ZS12YWxpZGF0aW9uLXJlc3VsdCc7XG5pbXBvcnQgeyBUb2tlblZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi90b2tlbi12YWxpZGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJy4vdmFsaWRhdGlvbi1yZXN1bHQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3RhdGVWYWxpZGF0aW9uU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZTogU3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZSxcbiAgICBwcml2YXRlIHRva2VuVmFsaWRhdGlvblNlcnZpY2U6IFRva2VuVmFsaWRhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2tlbkhlbHBlclNlcnZpY2U6IFRva2VuSGVscGVyU2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlclNlcnZpY2U6IExvZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uUHJvdmlkZXI6IENvbmZpZ3VyYXRpb25Qcm92aWRlcixcbiAgICBwcml2YXRlIGVxdWFsaXR5U2VydmljZTogRXF1YWxpdHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0hlbHBlcjogRmxvd0hlbHBlclxuICApIHt9XG5cbiAgZ2V0VmFsaWRhdGVkU3RhdGVSZXN1bHQoY2FsbGJhY2tDb250ZXh0OiBDYWxsYmFja0NvbnRleHQpOiBTdGF0ZVZhbGlkYXRpb25SZXN1bHQge1xuICAgIGlmIChjYWxsYmFja0NvbnRleHQ/LmF1dGhSZXN1bHQuZXJyb3IpIHtcbiAgICAgIHJldHVybiBuZXcgU3RhdGVWYWxpZGF0aW9uUmVzdWx0KCcnLCAnJywgZmFsc2UsIHt9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy52YWxpZGF0ZVN0YXRlKGNhbGxiYWNrQ29udGV4dCk7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlKGNhbGxiYWNrQ29udGV4dCk6IFN0YXRlVmFsaWRhdGlvblJlc3VsdCB7XG4gICAgY29uc3QgdG9SZXR1cm4gPSBuZXcgU3RhdGVWYWxpZGF0aW9uUmVzdWx0KCk7XG4gICAgY29uc3QgYXV0aFN0YXRlQ29udHJvbCA9IHRoaXMuc3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZS5yZWFkKCdhdXRoU3RhdGVDb250cm9sJyk7XG5cbiAgICBpZiAoIXRoaXMudG9rZW5WYWxpZGF0aW9uU2VydmljZS52YWxpZGF0ZVN0YXRlRnJvbUhhc2hDYWxsYmFjayhjYWxsYmFja0NvbnRleHQuYXV0aFJlc3VsdC5zdGF0ZSwgYXV0aFN0YXRlQ29udHJvbCkpIHtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dXYXJuaW5nKCdhdXRob3JpemVkQ2FsbGJhY2sgaW5jb3JyZWN0IHN0YXRlJyk7XG4gICAgICB0b1JldHVybi5zdGF0ZSA9IFZhbGlkYXRpb25SZXN1bHQuU3RhdGVzRG9Ob3RNYXRjaDtcbiAgICAgIHRoaXMuaGFuZGxlVW5zdWNjZXNzZnVsVmFsaWRhdGlvbigpO1xuICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlzQ3VycmVudEZsb3dJbXBsaWNpdEZsb3dXaXRoQWNjZXNzVG9rZW4gPSB0aGlzLmZsb3dIZWxwZXIuaXNDdXJyZW50Rmxvd0ltcGxpY2l0Rmxvd1dpdGhBY2Nlc3NUb2tlbigpO1xuICAgIGNvbnN0IGlzQ3VycmVudEZsb3dDb2RlRmxvdyA9IHRoaXMuZmxvd0hlbHBlci5pc0N1cnJlbnRGbG93Q29kZUZsb3coKTtcblxuICAgIGlmIChpc0N1cnJlbnRGbG93SW1wbGljaXRGbG93V2l0aEFjY2Vzc1Rva2VuIHx8IGlzQ3VycmVudEZsb3dDb2RlRmxvdykge1xuICAgICAgdG9SZXR1cm4uYWNjZXNzVG9rZW4gPSBjYWxsYmFja0NvbnRleHQuYXV0aFJlc3VsdC5hY2Nlc3NfdG9rZW47XG4gICAgfVxuXG4gICAgaWYgKGNhbGxiYWNrQ29udGV4dC5hdXRoUmVzdWx0LmlkX3Rva2VuKSB7XG4gICAgICB0b1JldHVybi5pZFRva2VuID0gY2FsbGJhY2tDb250ZXh0LmF1dGhSZXN1bHQuaWRfdG9rZW47XG5cbiAgICAgIHRvUmV0dXJuLmRlY29kZWRJZFRva2VuID0gdGhpcy50b2tlbkhlbHBlclNlcnZpY2UuZ2V0UGF5bG9hZEZyb21Ub2tlbih0b1JldHVybi5pZFRva2VuLCBmYWxzZSk7XG5cbiAgICAgIGlmICghdGhpcy50b2tlblZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlU2lnbmF0dXJlSWRUb2tlbih0b1JldHVybi5pZFRva2VuLCBjYWxsYmFja0NvbnRleHQuand0S2V5cykpIHtcbiAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCdhdXRob3JpemVkQ2FsbGJhY2sgU2lnbmF0dXJlIHZhbGlkYXRpb24gZmFpbGVkIGlkX3Rva2VuJyk7XG4gICAgICAgIHRvUmV0dXJuLnN0YXRlID0gVmFsaWRhdGlvblJlc3VsdC5TaWduYXR1cmVGYWlsZWQ7XG4gICAgICAgIHRoaXMuaGFuZGxlVW5zdWNjZXNzZnVsVmFsaWRhdGlvbigpO1xuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGF1dGhOb25jZSA9IHRoaXMuc3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZS5yZWFkKCdhdXRoTm9uY2UnKTtcblxuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy50b2tlblZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlSWRUb2tlbk5vbmNlKFxuICAgICAgICAgIHRvUmV0dXJuLmRlY29kZWRJZFRva2VuLFxuICAgICAgICAgIGF1dGhOb25jZSxcbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25Qcm92aWRlci5vcGVuSURDb25maWd1cmF0aW9uLmlnbm9yZU5vbmNlQWZ0ZXJSZWZyZXNoXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nV2FybmluZygnYXV0aG9yaXplZENhbGxiYWNrIGluY29ycmVjdCBub25jZScpO1xuICAgICAgICB0b1JldHVybi5zdGF0ZSA9IFZhbGlkYXRpb25SZXN1bHQuSW5jb3JyZWN0Tm9uY2U7XG4gICAgICAgIHRoaXMuaGFuZGxlVW5zdWNjZXNzZnVsVmFsaWRhdGlvbigpO1xuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy50b2tlblZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlUmVxdWlyZWRJZFRva2VuKHRvUmV0dXJuLmRlY29kZWRJZFRva2VuKSkge1xuICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ2F1dGhvcml6ZWRDYWxsYmFjayBWYWxpZGF0aW9uLCBvbmUgb2YgdGhlIFJFUVVJUkVEIHByb3BlcnRpZXMgbWlzc2luZyBmcm9tIGlkX3Rva2VuJyk7XG4gICAgICAgIHRvUmV0dXJuLnN0YXRlID0gVmFsaWRhdGlvblJlc3VsdC5SZXF1aXJlZFByb3BlcnR5TWlzc2luZztcbiAgICAgICAgdGhpcy5oYW5kbGVVbnN1Y2Nlc3NmdWxWYWxpZGF0aW9uKCk7XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy50b2tlblZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlSWRUb2tlbklhdE1heE9mZnNldChcbiAgICAgICAgICB0b1JldHVybi5kZWNvZGVkSWRUb2tlbixcbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25Qcm92aWRlci5vcGVuSURDb25maWd1cmF0aW9uLm1heElkVG9rZW5JYXRPZmZzZXRBbGxvd2VkSW5TZWNvbmRzLFxuICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvblByb3ZpZGVyLm9wZW5JRENvbmZpZ3VyYXRpb24uZGlzYWJsZUlhdE9mZnNldFZhbGlkYXRpb25cbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dXYXJuaW5nKCdhdXRob3JpemVkQ2FsbGJhY2sgVmFsaWRhdGlvbiwgaWF0IHJlamVjdGVkIGlkX3Rva2VuIHdhcyBpc3N1ZWQgdG9vIGZhciBhd2F5IGZyb20gdGhlIGN1cnJlbnQgdGltZScpO1xuICAgICAgICB0b1JldHVybi5zdGF0ZSA9IFZhbGlkYXRpb25SZXN1bHQuTWF4T2Zmc2V0RXhwaXJlZDtcbiAgICAgICAgdGhpcy5oYW5kbGVVbnN1Y2Nlc3NmdWxWYWxpZGF0aW9uKCk7XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXV0aFdlbGxLbm93bkVuZFBvaW50cyA9IHRoaXMuc3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZS5yZWFkKCdhdXRoV2VsbEtub3duRW5kUG9pbnRzJyk7XG5cbiAgICAgIGlmIChhdXRoV2VsbEtub3duRW5kUG9pbnRzKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb25Qcm92aWRlci5vcGVuSURDb25maWd1cmF0aW9uLmlzc1ZhbGlkYXRpb25PZmYpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ2lzcyB2YWxpZGF0aW9uIGlzIHR1cm5lZCBvZmYsIHRoaXMgaXMgbm90IHJlY29tbWVuZGVkIScpO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICF0aGlzLmNvbmZpZ3VyYXRpb25Qcm92aWRlci5vcGVuSURDb25maWd1cmF0aW9uLmlzc1ZhbGlkYXRpb25PZmYgJiZcbiAgICAgICAgICAhdGhpcy50b2tlblZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlSWRUb2tlbklzcyh0b1JldHVybi5kZWNvZGVkSWRUb2tlbiwgYXV0aFdlbGxLbm93bkVuZFBvaW50cy5pc3N1ZXIpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dXYXJuaW5nKCdhdXRob3JpemVkQ2FsbGJhY2sgaW5jb3JyZWN0IGlzcyBkb2VzIG5vdCBtYXRjaCBhdXRoV2VsbEtub3duRW5kcG9pbnRzIGlzc3VlcicpO1xuICAgICAgICAgIHRvUmV0dXJuLnN0YXRlID0gVmFsaWRhdGlvblJlc3VsdC5Jc3NEb2VzTm90TWF0Y2hJc3N1ZXI7XG4gICAgICAgICAgdGhpcy5oYW5kbGVVbnN1Y2Nlc3NmdWxWYWxpZGF0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nV2FybmluZygnYXV0aFdlbGxLbm93bkVuZHBvaW50cyBpcyB1bmRlZmluZWQnKTtcbiAgICAgICAgdG9SZXR1cm4uc3RhdGUgPSBWYWxpZGF0aW9uUmVzdWx0Lk5vQXV0aFdlbGxLbm93bkVuZFBvaW50cztcbiAgICAgICAgdGhpcy5oYW5kbGVVbnN1Y2Nlc3NmdWxWYWxpZGF0aW9uKCk7XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy50b2tlblZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlSWRUb2tlbkF1ZCh0b1JldHVybi5kZWNvZGVkSWRUb2tlbiwgdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbi5jbGllbnRJZClcbiAgICAgICkge1xuICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nV2FybmluZygnYXV0aG9yaXplZENhbGxiYWNrIGluY29ycmVjdCBhdWQnKTtcbiAgICAgICAgdG9SZXR1cm4uc3RhdGUgPSBWYWxpZGF0aW9uUmVzdWx0LkluY29ycmVjdEF1ZDtcbiAgICAgICAgdGhpcy5oYW5kbGVVbnN1Y2Nlc3NmdWxWYWxpZGF0aW9uKCk7XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLnRva2VuVmFsaWRhdGlvblNlcnZpY2UudmFsaWRhdGVJZFRva2VuQXpwRXhpc3RzSWZNb3JlVGhhbk9uZUF1ZCh0b1JldHVybi5kZWNvZGVkSWRUb2tlbikpIHtcbiAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ1dhcm5pbmcoJ2F1dGhvcml6ZWRDYWxsYmFjayBtaXNzaW5nIGF6cCcpO1xuICAgICAgICB0b1JldHVybi5zdGF0ZSA9IFZhbGlkYXRpb25SZXN1bHQuSW5jb3JyZWN0QXpwO1xuICAgICAgICB0aGlzLmhhbmRsZVVuc3VjY2Vzc2Z1bFZhbGlkYXRpb24oKTtcbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLnRva2VuVmFsaWRhdGlvblNlcnZpY2UudmFsaWRhdGVJZFRva2VuQXpwVmFsaWQoXG4gICAgICAgICAgdG9SZXR1cm4uZGVjb2RlZElkVG9rZW4sXG4gICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbi5jbGllbnRJZFxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ1dhcm5pbmcoJ2F1dGhvcml6ZWRDYWxsYmFjayBpbmNvcnJlY3QgYXpwJyk7XG4gICAgICAgIHRvUmV0dXJuLnN0YXRlID0gVmFsaWRhdGlvblJlc3VsdC5JbmNvcnJlY3RBenA7XG4gICAgICAgIHRoaXMuaGFuZGxlVW5zdWNjZXNzZnVsVmFsaWRhdGlvbigpO1xuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5pc0lkVG9rZW5BZnRlclJlZnJlc2hUb2tlblJlcXVlc3RWYWxpZChjYWxsYmFja0NvbnRleHQsIHRvUmV0dXJuLmRlY29kZWRJZFRva2VuKSkge1xuICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nV2FybmluZygnYXV0aG9yaXplZENhbGxiYWNrIHByZSwgcG9zdCBpZF90b2tlbiBjbGFpbXMgZG8gbm90IG1hdGNoIGluIHJlZnJlc2gnKTtcbiAgICAgICAgdG9SZXR1cm4uc3RhdGUgPSBWYWxpZGF0aW9uUmVzdWx0LkluY29ycmVjdElkVG9rZW5DbGFpbXNBZnRlclJlZnJlc2g7XG4gICAgICAgIHRoaXMuaGFuZGxlVW5zdWNjZXNzZnVsVmFsaWRhdGlvbigpO1xuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy50b2tlblZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlSWRUb2tlbkV4cE5vdEV4cGlyZWQodG9SZXR1cm4uZGVjb2RlZElkVG9rZW4pKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dXYXJuaW5nKCdhdXRob3JpemVkQ2FsbGJhY2sgaWQgdG9rZW4gZXhwaXJlZCcpO1xuICAgICAgICB0b1JldHVybi5zdGF0ZSA9IFZhbGlkYXRpb25SZXN1bHQuVG9rZW5FeHBpcmVkO1xuICAgICAgICB0aGlzLmhhbmRsZVVuc3VjY2Vzc2Z1bFZhbGlkYXRpb24oKTtcbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ05vIGlkX3Rva2VuIGZvdW5kLCBza2lwcGluZyBpZF90b2tlbiB2YWxpZGF0aW9uJyk7XG4gICAgfVxuXG4gICAgLy8gZmxvdyBpZF90b2tlblxuICAgIGlmICghaXNDdXJyZW50Rmxvd0ltcGxpY2l0Rmxvd1dpdGhBY2Nlc3NUb2tlbiAmJiAhaXNDdXJyZW50Rmxvd0NvZGVGbG93KSB7XG4gICAgICB0b1JldHVybi5hdXRoUmVzcG9uc2VJc1ZhbGlkID0gdHJ1ZTtcbiAgICAgIHRvUmV0dXJuLnN0YXRlID0gVmFsaWRhdGlvblJlc3VsdC5PaztcbiAgICAgIHRoaXMuaGFuZGxlU3VjY2Vzc2Z1bFZhbGlkYXRpb24oKTtcbiAgICAgIHRoaXMuaGFuZGxlVW5zdWNjZXNzZnVsVmFsaWRhdGlvbigpO1xuICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlkVG9rZW5IZWFkZXIgPSB0aGlzLnRva2VuSGVscGVyU2VydmljZS5nZXRIZWFkZXJGcm9tVG9rZW4odG9SZXR1cm4uaWRUb2tlbiwgZmFsc2UpO1xuXG4gICAgLy8gVGhlIGF0X2hhc2ggaXMgb3B0aW9uYWwgZm9yIHRoZSBjb2RlIGZsb3dcbiAgICBpZiAoaXNDdXJyZW50Rmxvd0NvZGVGbG93ICYmICEodG9SZXR1cm4uZGVjb2RlZElkVG9rZW4uYXRfaGFzaCBhcyBzdHJpbmcpKSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ0NvZGUgRmxvdyBhY3RpdmUsIGFuZCBubyBhdF9oYXNoIGluIHRoZSBpZF90b2tlbiwgc2tpcHBpbmcgY2hlY2shJyk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICF0aGlzLnRva2VuVmFsaWRhdGlvblNlcnZpY2UudmFsaWRhdGVJZFRva2VuQXRIYXNoKFxuICAgICAgICB0b1JldHVybi5hY2Nlc3NUb2tlbixcbiAgICAgICAgdG9SZXR1cm4uZGVjb2RlZElkVG9rZW4uYXRfaGFzaCxcbiAgICAgICAgaWRUb2tlbkhlYWRlci5hbGcgLy8gJ1JTQTI1NidcbiAgICAgICkgfHxcbiAgICAgICF0b1JldHVybi5hY2Nlc3NUb2tlblxuICAgICkge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ1dhcm5pbmcoJ2F1dGhvcml6ZWRDYWxsYmFjayBpbmNvcnJlY3QgYXRfaGFzaCcpO1xuICAgICAgdG9SZXR1cm4uc3RhdGUgPSBWYWxpZGF0aW9uUmVzdWx0LkluY29ycmVjdEF0SGFzaDtcbiAgICAgIHRoaXMuaGFuZGxlVW5zdWNjZXNzZnVsVmFsaWRhdGlvbigpO1xuICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cblxuICAgIHRvUmV0dXJuLmF1dGhSZXNwb25zZUlzVmFsaWQgPSB0cnVlO1xuICAgIHRvUmV0dXJuLnN0YXRlID0gVmFsaWRhdGlvblJlc3VsdC5PaztcbiAgICB0aGlzLmhhbmRsZVN1Y2Nlc3NmdWxWYWxpZGF0aW9uKCk7XG4gICAgcmV0dXJuIHRvUmV0dXJuO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0lkVG9rZW5BZnRlclJlZnJlc2hUb2tlblJlcXVlc3RWYWxpZChjYWxsYmFja0NvbnRleHQ6IENhbGxiYWNrQ29udGV4dCwgbmV3SWRUb2tlbjogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZ3VyYXRpb25Qcm92aWRlci5vcGVuSURDb25maWd1cmF0aW9uLnVzZVJlZnJlc2hUb2tlbikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFjYWxsYmFja0NvbnRleHQuZXhpc3RpbmdJZFRva2VuKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgZGVjb2RlZElkVG9rZW4gPSB0aGlzLnRva2VuSGVscGVyU2VydmljZS5nZXRQYXlsb2FkRnJvbVRva2VuKGNhbGxiYWNrQ29udGV4dC5leGlzdGluZ0lkVG9rZW4sIGZhbHNlKTtcblxuICAgIC8vIFVwb24gc3VjY2Vzc2Z1bCB2YWxpZGF0aW9uIG9mIHRoZSBSZWZyZXNoIFRva2VuLCB0aGUgcmVzcG9uc2UgYm9keSBpcyB0aGUgVG9rZW4gUmVzcG9uc2Ugb2YgU2VjdGlvbiAzLjEuMy4zXG4gICAgLy8gZXhjZXB0IHRoYXQgaXQgbWlnaHQgbm90IGNvbnRhaW4gYW4gaWRfdG9rZW4uXG5cbiAgICAvLyBJZiBhbiBJRCBUb2tlbiBpcyByZXR1cm5lZCBhcyBhIHJlc3VsdCBvZiBhIHRva2VuIHJlZnJlc2ggcmVxdWVzdCwgdGhlIGZvbGxvd2luZyByZXF1aXJlbWVudHMgYXBwbHk6XG5cbiAgICAvLyBpdHMgaXNzIENsYWltIFZhbHVlIE1VU1QgYmUgdGhlIHNhbWUgYXMgaW4gdGhlIElEIFRva2VuIGlzc3VlZCB3aGVuIHRoZSBvcmlnaW5hbCBhdXRoZW50aWNhdGlvbiBvY2N1cnJlZCxcbiAgICBpZiAoZGVjb2RlZElkVG9rZW4uaXNzICE9PSBuZXdJZFRva2VuLmlzcykge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKGBpc3MgZG8gbm90IG1hdGNoOiAke2RlY29kZWRJZFRva2VuLmlzc30gJHtuZXdJZFRva2VuLmlzc31gKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gaXRzIGF6cCBDbGFpbSBWYWx1ZSBNVVNUIGJlIHRoZSBzYW1lIGFzIGluIHRoZSBJRCBUb2tlbiBpc3N1ZWQgd2hlbiB0aGUgb3JpZ2luYWwgYXV0aGVudGljYXRpb24gb2NjdXJyZWQ7XG4gICAgLy8gICBpZiBubyBhenAgQ2xhaW0gd2FzIHByZXNlbnQgaW4gdGhlIG9yaWdpbmFsIElEIFRva2VuLCBvbmUgTVVTVCBOT1QgYmUgcHJlc2VudCBpbiB0aGUgbmV3IElEIFRva2VuLCBhbmRcbiAgICAvLyBvdGhlcndpc2UsIHRoZSBzYW1lIHJ1bGVzIGFwcGx5IGFzIGFwcGx5IHdoZW4gaXNzdWluZyBhbiBJRCBUb2tlbiBhdCB0aGUgdGltZSBvZiB0aGUgb3JpZ2luYWwgYXV0aGVudGljYXRpb24uXG4gICAgaWYgKGRlY29kZWRJZFRva2VuLmF6cCAhPT0gbmV3SWRUb2tlbi5henApIHtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZyhgYXpwIGRvIG5vdCBtYXRjaDogJHtkZWNvZGVkSWRUb2tlbi5henB9ICR7bmV3SWRUb2tlbi5henB9YCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIGl0cyBzdWIgQ2xhaW0gVmFsdWUgTVVTVCBiZSB0aGUgc2FtZSBhcyBpbiB0aGUgSUQgVG9rZW4gaXNzdWVkIHdoZW4gdGhlIG9yaWdpbmFsIGF1dGhlbnRpY2F0aW9uIG9jY3VycmVkLFxuICAgIGlmIChkZWNvZGVkSWRUb2tlbi5zdWIgIT09IG5ld0lkVG9rZW4uc3ViKSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoYHN1YiBkbyBub3QgbWF0Y2g6ICR7ZGVjb2RlZElkVG9rZW4uc3VifSAke25ld0lkVG9rZW4uc3VifWApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIGl0cyBhdWQgQ2xhaW0gVmFsdWUgTVVTVCBiZSB0aGUgc2FtZSBhcyBpbiB0aGUgSUQgVG9rZW4gaXNzdWVkIHdoZW4gdGhlIG9yaWdpbmFsIGF1dGhlbnRpY2F0aW9uIG9jY3VycmVkLFxuICAgIGlmICghdGhpcy5lcXVhbGl0eVNlcnZpY2UuaXNTdHJpbmdFcXVhbE9yTm9uT3JkZXJlZEFycmF5RXF1YWwoZGVjb2RlZElkVG9rZW4/LmF1ZCwgbmV3SWRUb2tlbj8uYXVkKSkge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKGBhdWQgaW4gbmV3IGlkX3Rva2VuIGlzIG5vdCB2YWxpZDogJyR7ZGVjb2RlZElkVG9rZW4/LmF1ZH0nICcke25ld0lkVG9rZW4uYXVkfSdgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbi5kaXNhYmxlUmVmcmVzaElkVG9rZW5BdXRoVGltZVZhbGlkYXRpb24pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIGl0cyBpYXQgQ2xhaW0gTVVTVCByZXByZXNlbnQgdGhlIHRpbWUgdGhhdCB0aGUgbmV3IElEIFRva2VuIGlzIGlzc3VlZCxcbiAgICAvLyBpZiB0aGUgSUQgVG9rZW4gY29udGFpbnMgYW4gYXV0aF90aW1lIENsYWltLCBpdHMgdmFsdWUgTVVTVCByZXByZXNlbnQgdGhlIHRpbWUgb2YgdGhlIG9yaWdpbmFsIGF1dGhlbnRpY2F0aW9uXG4gICAgLy8gLSBub3QgdGhlIHRpbWUgdGhhdCB0aGUgbmV3IElEIHRva2VuIGlzIGlzc3VlZCxcbiAgICBpZiAoZGVjb2RlZElkVG9rZW4uYXV0aF90aW1lICE9PSBuZXdJZFRva2VuLmF1dGhfdGltZSkge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKGBhdXRoX3RpbWUgZG8gbm90IG1hdGNoOiAke2RlY29kZWRJZFRva2VuLmF1dGhfdGltZX0gJHtuZXdJZFRva2VuLmF1dGhfdGltZX1gKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU3VjY2Vzc2Z1bFZhbGlkYXRpb24oKSB7XG4gICAgdGhpcy5zdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlLndyaXRlKCdhdXRoTm9uY2UnLCAnJyk7XG5cbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbi5hdXRvQ2xlYW5TdGF0ZUFmdGVyQXV0aGVudGljYXRpb24pIHtcbiAgICAgIHRoaXMuc3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZS53cml0ZSgnYXV0aFN0YXRlQ29udHJvbCcsICcnKTtcbiAgICB9XG4gICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCdBdXRob3JpemVkQ2FsbGJhY2sgdG9rZW4ocykgdmFsaWRhdGVkLCBjb250aW51ZScpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVVbnN1Y2Nlc3NmdWxWYWxpZGF0aW9uKCkge1xuICAgIHRoaXMuc3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZS53cml0ZSgnYXV0aE5vbmNlJywgJycpO1xuXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvblByb3ZpZGVyLm9wZW5JRENvbmZpZ3VyYXRpb24uYXV0b0NsZWFuU3RhdGVBZnRlckF1dGhlbnRpY2F0aW9uKSB7XG4gICAgICB0aGlzLnN0b3JhZ2VQZXJzaXN0YW5jZVNlcnZpY2Uud3JpdGUoJ2F1dGhTdGF0ZUNvbnRyb2wnLCAnJyk7XG4gICAgfVxuICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZygnQXV0aG9yaXplZENhbGxiYWNrIHRva2VuKHMpIGludmFsaWQnKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtdmFsaWRhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXV0aC1vaWRjLWNsaWVudC9zcmMvIiwic291cmNlcyI6WyJsaWIvdmFsaWRhdGlvbi9zdGF0ZS12YWxpZGF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNwRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUd2RCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFlBQ1UseUJBQW9ELEVBQ3BELHNCQUE4QyxFQUM5QyxrQkFBc0MsRUFDdEMsYUFBNEIsRUFDNUIscUJBQTRDLEVBQzVDLGVBQWdDLEVBQ2hDLFVBQXNCO1FBTnRCLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMkI7UUFDcEQsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FB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SyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzlEO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMscUNBQXFDLENBQUMsQ0FBQztJQUNyRSxDQUFDOzs7WUEvUEYsVUFBVTs7O1lBUkYseUJBQXlCO1lBS3pCLHNCQUFzQjtZQUZ0QixrQkFBa0I7WUFKbEIsYUFBYTtZQUZiLHFCQUFxQjtZQUlyQixlQUFlO1lBQ2YsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25Qcm92aWRlciB9IGZyb20gJy4uL2NvbmZpZy9jb25maWcucHJvdmlkZXInO1xuaW1wb3J0IHsgQ2FsbGJhY2tDb250ZXh0IH0gZnJvbSAnLi4vZmxvd3MvY2FsbGJhY2stY29udGV4dCc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nZ2luZy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmFnZS9zdG9yYWdlLXBlcnNpc3RhbmNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRXF1YWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvZXF1YWxpdHkvZXF1YWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBGbG93SGVscGVyIH0gZnJvbSAnLi4vdXRpbHMvZmxvd0hlbHBlci9mbG93LWhlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRva2VuSGVscGVyU2VydmljZSB9IGZyb20gJy4uL3V0aWxzL3Rva2VuSGVscGVyL29pZGMtdG9rZW4taGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RhdGVWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnLi9zdGF0ZS12YWxpZGF0aW9uLXJlc3VsdCc7XG5pbXBvcnQgeyBUb2tlblZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi90b2tlbi12YWxpZGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJy4vdmFsaWRhdGlvbi1yZXN1bHQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3RhdGVWYWxpZGF0aW9uU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZTogU3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZSxcbiAgICBwcml2YXRlIHRva2VuVmFsaWRhdGlvblNlcnZpY2U6IFRva2VuVmFsaWRhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2tlbkhlbHBlclNlcnZpY2U6IFRva2VuSGVscGVyU2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlclNlcnZpY2U6IExvZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uUHJvdmlkZXI6IENvbmZpZ3VyYXRpb25Qcm92aWRlcixcbiAgICBwcml2YXRlIGVxdWFsaXR5U2VydmljZTogRXF1YWxpdHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0hlbHBlcjogRmxvd0hlbHBlclxuICApIHt9XG5cbiAgZ2V0VmFsaWRhdGVkU3RhdGVSZXN1bHQoY2FsbGJhY2tDb250ZXh0OiBDYWxsYmFja0NvbnRleHQpOiBTdGF0ZVZhbGlkYXRpb25SZXN1bHQge1xuICAgIGlmIChjYWxsYmFja0NvbnRleHQ/LmF1dGhSZXN1bHQuZXJyb3IpIHtcbiAgICAgIHJldHVybiBuZXcgU3RhdGVWYWxpZGF0aW9uUmVzdWx0KCcnLCAnJywgZmFsc2UsIHt9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy52YWxpZGF0ZVN0YXRlKGNhbGxiYWNrQ29udGV4dCk7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlKGNhbGxiYWNrQ29udGV4dCk6IFN0YXRlVmFsaWRhdGlvblJlc3VsdCB7XG4gICAgY29uc3QgdG9SZXR1cm4gPSBuZXcgU3RhdGVWYWxpZGF0aW9uUmVzdWx0KCk7XG4gICAgY29uc3QgYXV0aFN0YXRlQ29udHJvbCA9IHRoaXMuc3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZS5yZWFkKCdhdXRoU3RhdGVDb250cm9sJyk7XG5cbiAgICBpZiAoIXRoaXMudG9rZW5WYWxpZGF0aW9uU2VydmljZS52YWxpZGF0ZVN0YXRlRnJvbUhhc2hDYWxsYmFjayhjYWxsYmFja0NvbnRleHQuYXV0aFJlc3VsdC5zdGF0ZSwgYXV0aFN0YXRlQ29udHJvbCkpIHtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dXYXJuaW5nKCdhdXRob3JpemVkQ2FsbGJhY2sgaW5jb3JyZWN0IHN0YXRlJyk7XG4gICAgICB0b1JldHVybi5zdGF0ZSA9IFZhbGlkYXRpb25SZXN1bHQuU3RhdGVzRG9Ob3RNYXRjaDtcbiAgICAgIHRoaXMuaGFuZGxlVW5zdWNjZXNzZnVsVmFsaWRhdGlvbigpO1xuICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlzQ3VycmVudEZsb3dJbXBsaWNpdEZsb3dXaXRoQWNjZXNzVG9rZW4gPSB0aGlzLmZsb3dIZWxwZXIuaXNDdXJyZW50Rmxvd0ltcGxpY2l0Rmxvd1dpdGhBY2Nlc3NUb2tlbigpO1xuICAgIGNvbnN0IGlzQ3VycmVudEZsb3dDb2RlRmxvdyA9IHRoaXMuZmxvd0hlbHBlci5pc0N1cnJlbnRGbG93Q29kZUZsb3coKTtcblxuICAgIGlmIChpc0N1cnJlbnRGbG93SW1wbGljaXRGbG93V2l0aEFjY2Vzc1Rva2VuIHx8IGlzQ3VycmVudEZsb3dDb2RlRmxvdykge1xuICAgICAgdG9SZXR1cm4uYWNjZXNzVG9rZW4gPSBjYWxsYmFja0NvbnRleHQuYXV0aFJlc3VsdC5hY2Nlc3NfdG9rZW47XG4gICAgfVxuXG4gICAgaWYgKGNhbGxiYWNrQ29udGV4dC5hdXRoUmVzdWx0LmlkX3Rva2VuKSB7XG4gICAgICB0b1JldHVybi5pZFRva2VuID0gY2FsbGJhY2tDb250ZXh0LmF1dGhSZXN1bHQuaWRfdG9rZW47XG5cbiAgICAgIHRvUmV0dXJuLmRlY29kZWRJZFRva2VuID0gdGhpcy50b2tlbkhlbHBlclNlcnZpY2UuZ2V0UGF5bG9hZEZyb21Ub2tlbih0b1JldHVybi5pZFRva2VuLCBmYWxzZSk7XG5cbiAgICAgIGlmICghdGhpcy50b2tlblZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlU2lnbmF0dXJlSWRUb2tlbih0b1JldHVybi5pZFRva2VuLCBjYWxsYmFja0NvbnRleHQuand0S2V5cykpIHtcbiAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCdhdXRob3JpemVkQ2FsbGJhY2sgU2lnbmF0dXJlIHZhbGlkYXRpb24gZmFpbGVkIGlkX3Rva2VuJyk7XG4gICAgICAgIHRvUmV0dXJuLnN0YXRlID0gVmFsaWRhdGlvblJlc3VsdC5TaWduYXR1cmVGYWlsZWQ7XG4gICAgICAgIHRoaXMuaGFuZGxlVW5zdWNjZXNzZnVsVmFsaWRhdGlvbigpO1xuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGF1dGhOb25jZSA9IHRoaXMuc3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZS5yZWFkKCdhdXRoTm9uY2UnKTtcblxuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy50b2tlblZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlSWRUb2tlbk5vbmNlKFxuICAgICAgICAgIHRvUmV0dXJuLmRlY29kZWRJZFRva2VuLFxuICAgICAgICAgIGF1dGhOb25jZSxcbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25Qcm92aWRlci5vcGVuSURDb25maWd1cmF0aW9uLmlnbm9yZU5vbmNlQWZ0ZXJSZWZyZXNoXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nV2FybmluZygnYXV0aG9yaXplZENhbGxiYWNrIGluY29ycmVjdCBub25jZScpO1xuICAgICAgICB0b1JldHVybi5zdGF0ZSA9IFZhbGlkYXRpb25SZXN1bHQuSW5jb3JyZWN0Tm9uY2U7XG4gICAgICAgIHRoaXMuaGFuZGxlVW5zdWNjZXNzZnVsVmFsaWRhdGlvbigpO1xuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy50b2tlblZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlUmVxdWlyZWRJZFRva2VuKHRvUmV0dXJuLmRlY29kZWRJZFRva2VuKSkge1xuICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ2F1dGhvcml6ZWRDYWxsYmFjayBWYWxpZGF0aW9uLCBvbmUgb2YgdGhlIFJFUVVJUkVEIHByb3BlcnRpZXMgbWlzc2luZyBmcm9tIGlkX3Rva2VuJyk7XG4gICAgICAgIHRvUmV0dXJuLnN0YXRlID0gVmFsaWRhdGlvblJlc3VsdC5SZXF1aXJlZFByb3BlcnR5TWlzc2luZztcbiAgICAgICAgdGhpcy5oYW5kbGVVbnN1Y2Nlc3NmdWxWYWxpZGF0aW9uKCk7XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy50b2tlblZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlSWRUb2tlbklhdE1heE9mZnNldChcbiAgICAgICAgICB0b1JldHVybi5kZWNvZGVkSWRUb2tlbixcbiAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25Qcm92aWRlci5vcGVuSURDb25maWd1cmF0aW9uLm1heElkVG9rZW5JYXRPZmZzZXRBbGxvd2VkSW5TZWNvbmRzLFxuICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvblByb3ZpZGVyLm9wZW5JRENvbmZpZ3VyYXRpb24uZGlzYWJsZUlhdE9mZnNldFZhbGlkYXRpb25cbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dXYXJuaW5nKCdhdXRob3JpemVkQ2FsbGJhY2sgVmFsaWRhdGlvbiwgaWF0IHJlamVjdGVkIGlkX3Rva2VuIHdhcyBpc3N1ZWQgdG9vIGZhciBhd2F5IGZyb20gdGhlIGN1cnJlbnQgdGltZScpO1xuICAgICAgICB0b1JldHVybi5zdGF0ZSA9IFZhbGlkYXRpb25SZXN1bHQuTWF4T2Zmc2V0RXhwaXJlZDtcbiAgICAgICAgdGhpcy5oYW5kbGVVbnN1Y2Nlc3NmdWxWYWxpZGF0aW9uKCk7XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXV0aFdlbGxLbm93bkVuZFBvaW50cyA9IHRoaXMuc3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZS5yZWFkKCdhdXRoV2VsbEtub3duRW5kUG9pbnRzJyk7XG5cbiAgICAgIGlmIChhdXRoV2VsbEtub3duRW5kUG9pbnRzKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb25Qcm92aWRlci5vcGVuSURDb25maWd1cmF0aW9uLmlzc1ZhbGlkYXRpb25PZmYpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ2lzcyB2YWxpZGF0aW9uIGlzIHR1cm5lZCBvZmYsIHRoaXMgaXMgbm90IHJlY29tbWVuZGVkIScpO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICF0aGlzLmNvbmZpZ3VyYXRpb25Qcm92aWRlci5vcGVuSURDb25maWd1cmF0aW9uLmlzc1ZhbGlkYXRpb25PZmYgJiZcbiAgICAgICAgICAhdGhpcy50b2tlblZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlSWRUb2tlbklzcyh0b1JldHVybi5kZWNvZGVkSWRUb2tlbiwgYXV0aFdlbGxLbm93bkVuZFBvaW50cy5pc3N1ZXIpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dXYXJuaW5nKCdhdXRob3JpemVkQ2FsbGJhY2sgaW5jb3JyZWN0IGlzcyBkb2VzIG5vdCBtYXRjaCBhdXRoV2VsbEtub3duRW5kcG9pbnRzIGlzc3VlcicpO1xuICAgICAgICAgIHRvUmV0dXJuLnN0YXRlID0gVmFsaWRhdGlvblJlc3VsdC5Jc3NEb2VzTm90TWF0Y2hJc3N1ZXI7XG4gICAgICAgICAgdGhpcy5oYW5kbGVVbnN1Y2Nlc3NmdWxWYWxpZGF0aW9uKCk7XG4gICAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nV2FybmluZygnYXV0aFdlbGxLbm93bkVuZHBvaW50cyBpcyB1bmRlZmluZWQnKTtcbiAgICAgICAgdG9SZXR1cm4uc3RhdGUgPSBWYWxpZGF0aW9uUmVzdWx0Lk5vQXV0aFdlbGxLbm93bkVuZFBvaW50cztcbiAgICAgICAgdGhpcy5oYW5kbGVVbnN1Y2Nlc3NmdWxWYWxpZGF0aW9uKCk7XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy50b2tlblZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlSWRUb2tlbkF1ZCh0b1JldHVybi5kZWNvZGVkSWRUb2tlbiwgdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbi5jbGllbnRJZClcbiAgICAgICkge1xuICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nV2FybmluZygnYXV0aG9yaXplZENhbGxiYWNrIGluY29ycmVjdCBhdWQnKTtcbiAgICAgICAgdG9SZXR1cm4uc3RhdGUgPSBWYWxpZGF0aW9uUmVzdWx0LkluY29ycmVjdEF1ZDtcbiAgICAgICAgdGhpcy5oYW5kbGVVbnN1Y2Nlc3NmdWxWYWxpZGF0aW9uKCk7XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLnRva2VuVmFsaWRhdGlvblNlcnZpY2UudmFsaWRhdGVJZFRva2VuQXpwRXhpc3RzSWZNb3JlVGhhbk9uZUF1ZCh0b1JldHVybi5kZWNvZGVkSWRUb2tlbikpIHtcbiAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ1dhcm5pbmcoJ2F1dGhvcml6ZWRDYWxsYmFjayBtaXNzaW5nIGF6cCcpO1xuICAgICAgICB0b1JldHVybi5zdGF0ZSA9IFZhbGlkYXRpb25SZXN1bHQuSW5jb3JyZWN0QXpwO1xuICAgICAgICB0aGlzLmhhbmRsZVVuc3VjY2Vzc2Z1bFZhbGlkYXRpb24oKTtcbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLnRva2VuVmFsaWRhdGlvblNlcnZpY2UudmFsaWRhdGVJZFRva2VuQXpwVmFsaWQoXG4gICAgICAgICAgdG9SZXR1cm4uZGVjb2RlZElkVG9rZW4sXG4gICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbi5jbGllbnRJZFxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ1dhcm5pbmcoJ2F1dGhvcml6ZWRDYWxsYmFjayBpbmNvcnJlY3QgYXpwJyk7XG4gICAgICAgIHRvUmV0dXJuLnN0YXRlID0gVmFsaWRhdGlvblJlc3VsdC5JbmNvcnJlY3RBenA7XG4gICAgICAgIHRoaXMuaGFuZGxlVW5zdWNjZXNzZnVsVmFsaWRhdGlvbigpO1xuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5pc0lkVG9rZW5BZnRlclJlZnJlc2hUb2tlblJlcXVlc3RWYWxpZChjYWxsYmFja0NvbnRleHQsIHRvUmV0dXJuLmRlY29kZWRJZFRva2VuKSkge1xuICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nV2FybmluZygnYXV0aG9yaXplZENhbGxiYWNrIHByZSwgcG9zdCBpZF90b2tlbiBjbGFpbXMgZG8gbm90IG1hdGNoIGluIHJlZnJlc2gnKTtcbiAgICAgICAgdG9SZXR1cm4uc3RhdGUgPSBWYWxpZGF0aW9uUmVzdWx0LkluY29ycmVjdElkVG9rZW5DbGFpbXNBZnRlclJlZnJlc2g7XG4gICAgICAgIHRoaXMuaGFuZGxlVW5zdWNjZXNzZnVsVmFsaWRhdGlvbigpO1xuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy50b2tlblZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlSWRUb2tlbkV4cE5vdEV4cGlyZWQodG9SZXR1cm4uZGVjb2RlZElkVG9rZW4pKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dXYXJuaW5nKCdhdXRob3JpemVkQ2FsbGJhY2sgaWQgdG9rZW4gZXhwaXJlZCcpO1xuICAgICAgICB0b1JldHVybi5zdGF0ZSA9IFZhbGlkYXRpb25SZXN1bHQuVG9rZW5FeHBpcmVkO1xuICAgICAgICB0aGlzLmhhbmRsZVVuc3VjY2Vzc2Z1bFZhbGlkYXRpb24oKTtcbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ05vIGlkX3Rva2VuIGZvdW5kLCBza2lwcGluZyBpZF90b2tlbiB2YWxpZGF0aW9uJyk7XG4gICAgfVxuXG4gICAgLy8gZmxvdyBpZF90b2tlblxuICAgIGlmICghaXNDdXJyZW50Rmxvd0ltcGxpY2l0Rmxvd1dpdGhBY2Nlc3NUb2tlbiAmJiAhaXNDdXJyZW50Rmxvd0NvZGVGbG93KSB7XG4gICAgICB0b1JldHVybi5hdXRoUmVzcG9uc2VJc1ZhbGlkID0gdHJ1ZTtcbiAgICAgIHRvUmV0dXJuLnN0YXRlID0gVmFsaWRhdGlvblJlc3VsdC5PaztcbiAgICAgIHRoaXMuaGFuZGxlU3VjY2Vzc2Z1bFZhbGlkYXRpb24oKTtcbiAgICAgIHRoaXMuaGFuZGxlVW5zdWNjZXNzZnVsVmFsaWRhdGlvbigpO1xuICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlkVG9rZW5IZWFkZXIgPSB0aGlzLnRva2VuSGVscGVyU2VydmljZS5nZXRIZWFkZXJGcm9tVG9rZW4odG9SZXR1cm4uaWRUb2tlbiwgZmFsc2UpO1xuXG4gICAgLy8gVGhlIGF0X2hhc2ggaXMgb3B0aW9uYWwgZm9yIHRoZSBjb2RlIGZsb3dcbiAgICBpZiAoaXNDdXJyZW50Rmxvd0NvZGVGbG93ICYmICEodG9SZXR1cm4uZGVjb2RlZElkVG9rZW4uYXRfaGFzaCBhcyBzdHJpbmcpKSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ0NvZGUgRmxvdyBhY3RpdmUsIGFuZCBubyBhdF9oYXNoIGluIHRoZSBpZF90b2tlbiwgc2tpcHBpbmcgY2hlY2shJyk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICF0aGlzLnRva2VuVmFsaWRhdGlvblNlcnZpY2UudmFsaWRhdGVJZFRva2VuQXRIYXNoKFxuICAgICAgICB0b1JldHVybi5hY2Nlc3NUb2tlbixcbiAgICAgICAgdG9SZXR1cm4uZGVjb2RlZElkVG9rZW4uYXRfaGFzaCxcbiAgICAgICAgaWRUb2tlbkhlYWRlci5hbGcgLy8gJ1JTQTI1NidcbiAgICAgICkgfHxcbiAgICAgICF0b1JldHVybi5hY2Nlc3NUb2tlblxuICAgICkge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ1dhcm5pbmcoJ2F1dGhvcml6ZWRDYWxsYmFjayBpbmNvcnJlY3QgYXRfaGFzaCcpO1xuICAgICAgdG9SZXR1cm4uc3RhdGUgPSBWYWxpZGF0aW9uUmVzdWx0LkluY29ycmVjdEF0SGFzaDtcbiAgICAgIHRoaXMuaGFuZGxlVW5zdWNjZXNzZnVsVmFsaWRhdGlvbigpO1xuICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cblxuICAgIHRvUmV0dXJuLmF1dGhSZXNwb25zZUlzVmFsaWQgPSB0cnVlO1xuICAgIHRvUmV0dXJuLnN0YXRlID0gVmFsaWRhdGlvblJlc3VsdC5PaztcbiAgICB0aGlzLmhhbmRsZVN1Y2Nlc3NmdWxWYWxpZGF0aW9uKCk7XG4gICAgcmV0dXJuIHRvUmV0dXJuO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0lkVG9rZW5BZnRlclJlZnJlc2hUb2tlblJlcXVlc3RWYWxpZChjYWxsYmFja0NvbnRleHQ6IENhbGxiYWNrQ29udGV4dCwgbmV3SWRUb2tlbjogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZ3VyYXRpb25Qcm92aWRlci5vcGVuSURDb25maWd1cmF0aW9uLnVzZVJlZnJlc2hUb2tlbikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFjYWxsYmFja0NvbnRleHQuZXhpc3RpbmdJZFRva2VuKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgZGVjb2RlZElkVG9rZW4gPSB0aGlzLnRva2VuSGVscGVyU2VydmljZS5nZXRQYXlsb2FkRnJvbVRva2VuKGNhbGxiYWNrQ29udGV4dC5leGlzdGluZ0lkVG9rZW4sIGZhbHNlKTtcblxuICAgIC8vIFVwb24gc3VjY2Vzc2Z1bCB2YWxpZGF0aW9uIG9mIHRoZSBSZWZyZXNoIFRva2VuLCB0aGUgcmVzcG9uc2UgYm9keSBpcyB0aGUgVG9rZW4gUmVzcG9uc2Ugb2YgU2VjdGlvbiAzLjEuMy4zXG4gICAgLy8gZXhjZXB0IHRoYXQgaXQgbWlnaHQgbm90IGNvbnRhaW4gYW4gaWRfdG9rZW4uXG5cbiAgICAvLyBJZiBhbiBJRCBUb2tlbiBpcyByZXR1cm5lZCBhcyBhIHJlc3VsdCBvZiBhIHRva2VuIHJlZnJlc2ggcmVxdWVzdCwgdGhlIGZvbGxvd2luZyByZXF1aXJlbWVudHMgYXBwbHk6XG5cbiAgICAvLyBpdHMgaXNzIENsYWltIFZhbHVlIE1VU1QgYmUgdGhlIHNhbWUgYXMgaW4gdGhlIElEIFRva2VuIGlzc3VlZCB3aGVuIHRoZSBvcmlnaW5hbCBhdXRoZW50aWNhdGlvbiBvY2N1cnJlZCxcbiAgICBpZiAoZGVjb2RlZElkVG9rZW4uaXNzICE9PSBuZXdJZFRva2VuLmlzcykge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKGBpc3MgZG8gbm90IG1hdGNoOiAke2RlY29kZWRJZFRva2VuLmlzc30gJHtuZXdJZFRva2VuLmlzc31gKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gaXRzIGF6cCBDbGFpbSBWYWx1ZSBNVVNUIGJlIHRoZSBzYW1lIGFzIGluIHRoZSBJRCBUb2tlbiBpc3N1ZWQgd2hlbiB0aGUgb3JpZ2luYWwgYXV0aGVudGljYXRpb24gb2NjdXJyZWQ7XG4gICAgLy8gICBpZiBubyBhenAgQ2xhaW0gd2FzIHByZXNlbnQgaW4gdGhlIG9yaWdpbmFsIElEIFRva2VuLCBvbmUgTVVTVCBOT1QgYmUgcHJlc2VudCBpbiB0aGUgbmV3IElEIFRva2VuLCBhbmRcbiAgICAvLyBvdGhlcndpc2UsIHRoZSBzYW1lIHJ1bGVzIGFwcGx5IGFzIGFwcGx5IHdoZW4gaXNzdWluZyBhbiBJRCBUb2tlbiBhdCB0aGUgdGltZSBvZiB0aGUgb3JpZ2luYWwgYXV0aGVudGljYXRpb24uXG4gICAgaWYgKGRlY29kZWRJZFRva2VuLmF6cCAhPT0gbmV3SWRUb2tlbi5henApIHtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZyhgYXpwIGRvIG5vdCBtYXRjaDogJHtkZWNvZGVkSWRUb2tlbi5henB9ICR7bmV3SWRUb2tlbi5henB9YCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIGl0cyBzdWIgQ2xhaW0gVmFsdWUgTVVTVCBiZSB0aGUgc2FtZSBhcyBpbiB0aGUgSUQgVG9rZW4gaXNzdWVkIHdoZW4gdGhlIG9yaWdpbmFsIGF1dGhlbnRpY2F0aW9uIG9jY3VycmVkLFxuICAgIGlmIChkZWNvZGVkSWRUb2tlbi5zdWIgIT09IG5ld0lkVG9rZW4uc3ViKSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoYHN1YiBkbyBub3QgbWF0Y2g6ICR7ZGVjb2RlZElkVG9rZW4uc3VifSAke25ld0lkVG9rZW4uc3VifWApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIGl0cyBhdWQgQ2xhaW0gVmFsdWUgTVVTVCBiZSB0aGUgc2FtZSBhcyBpbiB0aGUgSUQgVG9rZW4gaXNzdWVkIHdoZW4gdGhlIG9yaWdpbmFsIGF1dGhlbnRpY2F0aW9uIG9jY3VycmVkLFxuICAgIGlmICghdGhpcy5lcXVhbGl0eVNlcnZpY2UuaXNTdHJpbmdFcXVhbE9yTm9uT3JkZXJlZEFycmF5RXF1YWwoZGVjb2RlZElkVG9rZW4/LmF1ZCwgbmV3SWRUb2tlbj8uYXVkKSkge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKGBhdWQgaW4gbmV3IGlkX3Rva2VuIGlzIG5vdCB2YWxpZDogJyR7ZGVjb2RlZElkVG9rZW4/LmF1ZH0nICcke25ld0lkVG9rZW4uYXVkfSdgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbi5kaXNhYmxlUmVmcmVzaElkVG9rZW5BdXRoVGltZVZhbGlkYXRpb24pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIGl0cyBpYXQgQ2xhaW0gTVVTVCByZXByZXNlbnQgdGhlIHRpbWUgdGhhdCB0aGUgbmV3IElEIFRva2VuIGlzIGlzc3VlZCxcbiAgICAvLyBpZiB0aGUgSUQgVG9rZW4gY29udGFpbnMgYW4gYXV0aF90aW1lIENsYWltLCBpdHMgdmFsdWUgTVVTVCByZXByZXNlbnQgdGhlIHRpbWUgb2YgdGhlIG9yaWdpbmFsIGF1dGhlbnRpY2F0aW9uXG4gICAgLy8gLSBub3QgdGhlIHRpbWUgdGhhdCB0aGUgbmV3IElEIHRva2VuIGlzIGlzc3VlZCxcbiAgICBpZiAoZGVjb2RlZElkVG9rZW4uYXV0aF90aW1lICE9PSBuZXdJZFRva2VuLmF1dGhfdGltZSkge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKGBhdXRoX3RpbWUgZG8gbm90IG1hdGNoOiAke2RlY29kZWRJZFRva2VuLmF1dGhfdGltZX0gJHtuZXdJZFRva2VuLmF1dGhfdGltZX1gKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU3VjY2Vzc2Z1bFZhbGlkYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yYWdlUGVyc2lzdGFuY2VTZXJ2aWNlLndyaXRlKCdhdXRoTm9uY2UnLCAnJyk7XG5cbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uUHJvdmlkZXIub3BlbklEQ29uZmlndXJhdGlvbi5hdXRvQ2xlYW5TdGF0ZUFmdGVyQXV0aGVudGljYXRpb24pIHtcbiAgICAgIHRoaXMuc3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZS53cml0ZSgnYXV0aFN0YXRlQ29udHJvbCcsICcnKTtcbiAgICB9XG4gICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCdBdXRob3JpemVkQ2FsbGJhY2sgdG9rZW4ocykgdmFsaWRhdGVkLCBjb250aW51ZScpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVVbnN1Y2Nlc3NmdWxWYWxpZGF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcmFnZVBlcnNpc3RhbmNlU2VydmljZS53cml0ZSgnYXV0aE5vbmNlJywgJycpO1xuXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvblByb3ZpZGVyLm9wZW5JRENvbmZpZ3VyYXRpb24uYXV0b0NsZWFuU3RhdGVBZnRlckF1dGhlbnRpY2F0aW9uKSB7XG4gICAgICB0aGlzLnN0b3JhZ2VQZXJzaXN0YW5jZVNlcnZpY2Uud3JpdGUoJ2F1dGhTdGF0ZUNvbnRyb2wnLCAnJyk7XG4gICAgfVxuICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZygnQXV0aG9yaXplZENhbGxiYWNrIHRva2VuKHMpIGludmFsaWQnKTtcbiAgfVxufVxuIl19
import { Injectable } from '@angular/core';
import { hextob64u, KEYUTIL, KJUR } from 'jsrsasign-reduced';
import { LoggerService } from '../logging/logger.service';
import { FlowHelper } from '../utils/flowHelper/flow-helper.service';
import { TokenHelperService } from '../utils/tokenHelper/oidc-token-helper.service';

@@ -48,5 +47,4 @@ // http://openid.net/specs/openid-connect-implicit-1_0.html

export class TokenValidationService {
constructor(tokenHelperService, flowHelper, loggerService) {
constructor(tokenHelperService, loggerService) {
this.tokenHelperService = tokenHelperService;
this.flowHelper = flowHelper;
this.loggerService = loggerService;

@@ -300,12 +298,2 @@ this.keyAlgorithms = ['HS256', 'HS384', 'HS512', 'RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'PS256', 'PS384', 'PS512'];

}
hasConfigValidResponseType() {
if (this.flowHelper.isCurrentFlowAnyImplicitFlow()) {
return true;
}
if (this.flowHelper.isCurrentFlowCodeFlow()) {
return true;
}
this.loggerService.logWarning('module configured incorrectly, invalid response_type. Check the responseType in the config');
return false;
}
// Accepts ID Token without 'kid' claim in JOSE header if only one JWK supplied in 'jwks_url'

@@ -371,5 +359,4 @@ //// private validate_no_kid_in_header_only_one_allowed_in_jwtkeys(header_data: any, jwtkeys: any): boolean {

{ type: TokenHelperService },
{ type: FlowHelper },
{ type: LoggerService }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tdmFsaWRhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXV0aC1vaWRjLWNsaWVudC9zcmMvIiwic291cmNlcyI6WyJsaWIvdmFsaWRhdGlvbi90b2tlbi12YWxpZGF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRXBGLDJEQUEyRDtBQUUzRCxXQUFXO0FBQ1gsNEdBQTRHO0FBQzVHLDBEQUEwRDtBQUMxRCxFQUFFO0FBQ0YsdUlBQXVJO0FBQ3ZJLHVJQUF1STtBQUN2SSxvRUFBb0U7QUFDcEUsRUFBRTtBQUNGLG1IQUFtSDtBQUNuSCxFQUFFO0FBQ0YsOEhBQThIO0FBQzlILEVBQUU7QUFDRixrSUFBa0k7QUFDbEksK0ZBQStGO0FBQy9GLEVBQUU7QUFDRixxSUFBcUk7QUFDckksV0FBVztBQUNYLCtCQUErQjtBQUMvQixFQUFFO0FBQ0YseUlBQXlJO0FBQ3pJLG1CQUFtQjtBQUNuQixFQUFFO0FBQ0YsK0dBQStHO0FBQy9HLHdIQUF3SDtBQUN4SCxFQUFFO0FBQ0YseUhBQXlIO0FBQ3pILDJJQUEySTtBQUMzSSxzQkFBc0I7QUFDdEIsRUFBRTtBQUNGLHNIQUFzSDtBQUN0SCxvRkFBb0Y7QUFDcEYsRUFBRTtBQUNGLGlJQUFpSTtBQUNqSSxzRkFBc0Y7QUFFdEYsMEJBQTBCO0FBQzFCLGlJQUFpSTtBQUNqSSxxSUFBcUk7QUFDckksa0ZBQWtGO0FB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VSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMzRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV6QyxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDOztBQXpYTSxtREFBNEIsR0FBRyxrQkFBa0IsQ0FBQzs7WUFGMUQsVUFBVTs7O1lBOUNGLGtCQUFrQjtZQURsQixVQUFVO1lBRFYsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGhleHRvYjY0dSwgS0VZVVRJTCwgS0pVUiB9IGZyb20gJ2pzcnNhc2lnbi1yZWR1Y2VkJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi9sb2dnaW5nL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dIZWxwZXIgfSBmcm9tICcuLi91dGlscy9mbG93SGVscGVyL2Zsb3ctaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9rZW5IZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvdG9rZW5IZWxwZXIvb2lkYy10b2tlbi1oZWxwZXIuc2VydmljZSc7XG5cbi8vIGh0dHA6Ly9vcGVuaWQubmV0L3NwZWNzL29wZW5pZC1jb25uZWN0LWltcGxpY2l0LTFfMC5odG1sXG5cbi8vIGlkX3Rva2VuXG4vLyBpZF90b2tlbiBDMTogVGhlIElzc3VlciBJZGVudGlmaWVyIGZvciB0aGUgT3BlbklEIFByb3ZpZGVyICh3aGljaCBpcyB0eXBpY2FsbHkgb2J0YWluZWQgZHVyaW5nIERpc2NvdmVyeSlcbi8vIE1VU1QgZXhhY3RseSBtYXRjaCB0aGUgdmFsdWUgb2YgdGhlIGlzcyAoaXNzdWVyKSBDbGFpbS5cbi8vXG4vLyBpZF90b2tlbiBDMjogVGhlIENsaWVudCBNVVNUIHZhbGlkYXRlIHRoYXQgdGhlIGF1ZCAoYXVkaWVuY2UpIENsYWltIGNvbnRhaW5zIGl0cyBjbGllbnRfaWQgdmFsdWUgcmVnaXN0ZXJlZCBhdCB0aGUgSXNzdWVyIGlkZW50aWZpZWRcbi8vIGJ5IHRoZSBpc3MgKGlzc3VlcikgQ2xhaW0gYXMgYW4gYXVkaWVuY2UuVGhlIElEIFRva2VuIE1VU1QgYmUgcmVqZWN0ZWQgaWYgdGhlIElEIFRva2VuIGRvZXMgbm90IGxpc3QgdGhlIENsaWVudCBhcyBhIHZhbGlkIGF1ZGllbmNlLFxuLy8gb3IgaWYgaXQgY29udGFpbnMgYWRkaXRpb25hbCBhdWRpZW5jZXMgbm90IHRydXN0ZWQgYnkgdGhlIENsaWVudC5cbi8vXG4vLyBpZF90b2tlbiBDMzogSWYgdGhlIElEIFRva2VuIGNvbnRhaW5zIG11bHRpcGxlIGF1ZGllbmNlcywgdGhlIENsaWVudCBTSE9VTEQgdmVyaWZ5IHRoYXQgYW4gYXpwIENsYWltIGlzIHByZXNlbnQuXG4vL1xuLy8gaWRfdG9rZW4gQzQ6IElmIGFuIGF6cCAoYXV0aG9yaXplZCBwYXJ0eSkgQ2xhaW0gaXMgcHJlc2VudCwgdGhlIENsaWVudCBTSE9VTEQgdmVyaWZ5IHRoYXQgaXRzIGNsaWVudF9pZCBpcyB0aGUgQ2xhaW0gVmFsdWUuXG4vL1xuLy8gaWRfdG9rZW4gQzU6IFRoZSBDbGllbnQgTVVTVCB2YWxpZGF0ZSB0aGUgc2lnbmF0dXJlIG9mIHRoZSBJRCBUb2tlbiBhY2NvcmRpbmcgdG8gSldTIFtKV1NdIHVzaW5nIHRoZSBhbGdvcml0aG0gc3BlY2lmaWVkIGluIHRoZVxuLy8gYWxnIEhlYWRlciBQYXJhbWV0ZXIgb2YgdGhlIEpPU0UgSGVhZGVyLlRoZSBDbGllbnQgTVVTVCB1c2UgdGhlIGtleXMgcHJvdmlkZWQgYnkgdGhlIElzc3Vlci5cbi8vXG4vLyBpZF90b2tlbiBDNjogVGhlIGFsZyB2YWx1ZSBTSE9VTEQgYmUgUlMyNTYuIFZhbGlkYXRpb24gb2YgdG9rZW5zIHVzaW5nIG90aGVyIHNpZ25pbmcgYWxnb3JpdGhtcyBpcyBkZXNjcmliZWQgaW4gdGhlIE9wZW5JRCBDb25uZWN0XG4vLyBDb3JlIDEuMFxuLy8gW09wZW5JRC5Db3JlXSBzcGVjaWZpY2F0aW9uLlxuLy9cbi8vIGlkX3Rva2VuIEM3OiBUaGUgY3VycmVudCB0aW1lIE1VU1QgYmUgYmVmb3JlIHRoZSB0aW1lIHJlcHJlc2VudGVkIGJ5IHRoZSBleHAgQ2xhaW0gKHBvc3NpYmx5IGFsbG93aW5nIGZvciBzb21lIHNtYWxsIGxlZXdheSB0byBhY2NvdW50XG4vLyBmb3IgY2xvY2sgc2tldykuXG4vL1xuLy8gaWRfdG9rZW4gQzg6IFRoZSBpYXQgQ2xhaW0gY2FuIGJlIHVzZWQgdG8gcmVqZWN0IHRva2VucyB0aGF0IHdlcmUgaXNzdWVkIHRvbyBmYXIgYXdheSBmcm9tIHRoZSBjdXJyZW50IHRpbWUsXG4vLyBsaW1pdGluZyB0aGUgYW1vdW50IG9mIHRpbWUgdGhhdCBub25jZXMgbmVlZCB0byBiZSBzdG9yZWQgdG8gcHJldmVudCBhdHRhY2tzLlRoZSBhY2NlcHRhYmxlIHJhbmdlIGlzIENsaWVudCBzcGVjaWZpYy5cbi8vXG4vLyBpZF90b2tlbiBDOTogVGhlIHZhbHVlIG9mIHRoZSBub25jZSBDbGFpbSBNVVNUIGJlIGNoZWNrZWQgdG8gdmVyaWZ5IHRoYXQgaXQgaXMgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIG9uZSB0aGF0IHdhcyBzZW50XG4vLyBpbiB0aGUgQXV0aGVudGljYXRpb24gUmVxdWVzdC5UaGUgQ2xpZW50IFNIT1VMRCBjaGVjayB0aGUgbm9uY2UgdmFsdWUgZm9yIHJlcGxheSBhdHRhY2tzLlRoZSBwcmVjaXNlIG1ldGhvZCBmb3IgZGV0ZWN0aW5nIHJlcGxheSBhdHRhY2tzXG4vLyBpcyBDbGllbnQgc3BlY2lmaWMuXG4vL1xuLy8gaWRfdG9rZW4gQzEwOiBJZiB0aGUgYWNyIENsYWltIHdhcyByZXF1ZXN0ZWQsIHRoZSBDbGllbnQgU0hPVUxEIGNoZWNrIHRoYXQgdGhlIGFzc2VydGVkIENsYWltIFZhbHVlIGlzIGFwcHJvcHJpYXRlLlxuLy8gVGhlIG1lYW5pbmcgYW5kIHByb2Nlc3Npbmcgb2YgYWNyIENsYWltIFZhbHVlcyBpcyBvdXQgb2Ygc2NvcGUgZm9yIHRoaXMgZG9jdW1lbnQuXG4vL1xuLy8gaWRfdG9rZW4gQzExOiBXaGVuIGEgbWF4X2FnZSByZXF1ZXN0IGlzIG1hZGUsIHRoZSBDbGllbnQgU0hPVUxEIGNoZWNrIHRoZSBhdXRoX3RpbWUgQ2xhaW0gdmFsdWUgYW5kIHJlcXVlc3QgcmUtIGF1dGhlbnRpY2F0aW9uXG4vLyBpZiBpdCBkZXRlcm1pbmVzIHRvbyBtdWNoIHRpbWUgaGFzIGVsYXBzZWQgc2luY2UgdGhlIGxhc3QgRW5kLSBVc2VyIGF1dGhlbnRpY2F0aW9uLlxuXG4vLyBBY2Nlc3MgVG9rZW4gVmFsaWRhdGlvblxuLy8gYWNjZXNzX3Rva2VuIEMxOiBIYXNoIHRoZSBvY3RldHMgb2YgdGhlIEFTQ0lJIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBhY2Nlc3NfdG9rZW4gd2l0aCB0aGUgaGFzaCBhbGdvcml0aG0gc3BlY2lmaWVkIGluIEpXQVtKV0FdXG4vLyBmb3IgdGhlIGFsZyBIZWFkZXIgUGFyYW1ldGVyIG9mIHRoZSBJRCBUb2tlbidzIEpPU0UgSGVhZGVyLiBGb3IgaW5zdGFuY2UsIGlmIHRoZSBhbGcgaXMgUlMyNTYsIHRoZSBoYXNoIGFsZ29yaXRobSB1c2VkIGlzIFNIQS0yNTYuXG4vLyBhY2Nlc3NfdG9rZW4gQzI6IFRha2UgdGhlIGxlZnQtIG1vc3QgaGFsZiBvZiB0aGUgaGFzaCBhbmQgYmFzZTY0dXJsLSBlbmNvZGUgaXQuXG4vLyBhY2Nlc3NfdG9rZW4gQzM6IFRoZSB2YWx1ZSBvZiBhdF9oYXNoIGluIHRoZSBJRCBUb2tlbiBNVVNUIG1hdGNoIHRoZSB2YWx1ZSBwcm9kdWNlZCBpbiB0aGUgcHJldmlvdXMgc3RlcCBpZiBhdF9oYXNoIGlzIHByZXNlbnRcbi8vIGluIHRoZSBJRCBUb2tlbi5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRva2VuVmFsaWRhdGlvblNlcnZpY2Uge1xuICBzdGF0aWMgcmVmcmVzaFRva2VuTm9uY2VQbGFjZWhvbGRlciA9ICctLVJlZnJlc2hUb2tlbi0tJztcbiAga2V5QWxnb3JpdGhtczogc3RyaW5nW10gPSBbJ0hTMjU2JywgJ0hTMzg0JywgJ0hTNTEyJywgJ1JTMjU2JywgJ1JTMzg0JywgJ1JTNTEyJywgJ0VTMjU2JywgJ0VTMzg0JywgJ1BTMjU2JywgJ1BTMzg0JywgJ1BTNTEyJ107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0b2tlbkhlbHBlclNlcnZpY2U6IFRva2VuSGVscGVyU2VydmljZSwgcHJpdmF0ZSBmbG93SGVscGVyOiBGbG93SGVscGVyLCBwcml2YXRlIGxvZ2dlclNlcnZpY2U6IExvZ2dlclNlcnZpY2UpIHt9XG5cbiAgLy8gaWRfdG9rZW4gQzc6IFRoZSBjdXJyZW50IHRpbWUgTVVTVCBiZSBiZWZvcmUgdGhlIHRpbWUgcmVwcmVzZW50ZWQgYnkgdGhlIGV4cCBDbGFpbVxuICAvLyAocG9zc2libHkgYWxsb3dpbmcgZm9yIHNvbWUgc21hbGwgbGVld2F5IHRvIGFjY291bnQgZm9yIGNsb2NrIHNrZXcpLlxuICBoYXNJZFRva2VuRXhwaXJlZCh0b2tlbjogc3RyaW5nLCBvZmZzZXRTZWNvbmRzPzogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZGVjb2RlZCA9IHRoaXMudG9rZW5IZWxwZXJTZXJ2aWNlLmdldFBheWxvYWRGcm9tVG9rZW4odG9rZW4sIGZhbHNlKTtcblxuICAgIHJldHVybiAhdGhpcy52YWxpZGF0ZUlkVG9rZW5FeHBOb3RFeHBpcmVkKGRlY29kZWQsIG9mZnNldFNlY29uZHMpO1xuICB9XG5cbiAgLy8gaWRfdG9rZW4gQzc6IFRoZSBjdXJyZW50IHRpbWUgTVVTVCBiZSBiZWZvcmUgdGhlIHRpbWUgcmVwcmVzZW50ZWQgYnkgdGhlIGV4cCBDbGFpbVxuICAvLyAocG9zc2libHkgYWxsb3dpbmcgZm9yIHNvbWUgc21hbGwgbGVld2F5IHRvIGFjY291bnQgZm9yIGNsb2NrIHNrZXcpLlxuICB2YWxpZGF0ZUlkVG9rZW5FeHBOb3RFeHBpcmVkKGRlY29kZWRJZFRva2VuOiBzdHJpbmcsIG9mZnNldFNlY29uZHM/OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCB0b2tlbkV4cGlyYXRpb25EYXRlID0gdGhpcy50b2tlbkhlbHBlclNlcnZpY2UuZ2V0VG9rZW5FeHBpcmF0aW9uRGF0ZShkZWNvZGVkSWRUb2tlbik7XG4gICAgb2Zmc2V0U2Vjb25kcyA9IG9mZnNldFNlY29uZHMgfHwgMDtcblxuICAgIGlmICghdG9rZW5FeHBpcmF0aW9uRGF0ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VuRXhwaXJhdGlvblZhbHVlID0gdG9rZW5FeHBpcmF0aW9uRGF0ZS52YWx1ZU9mKCk7XG4gICAgY29uc3Qgbm93V2l0aE9mZnNldCA9IG5ldyBEYXRlKG5ldyBEYXRlKCkudG9VVENTdHJpbmcoKSkudmFsdWVPZigpICsgb2Zmc2V0U2Vjb25kcyAqIDEwMDA7XG4gICAgY29uc3QgdG9rZW5Ob3RFeHBpcmVkID0gdG9rZW5FeHBpcmF0aW9uVmFsdWUgPiBub3dXaXRoT2Zmc2V0O1xuXG4gICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKGBIYXMgaWRfdG9rZW4gZXhwaXJlZDogJHshdG9rZW5Ob3RFeHBpcmVkfSwgJHt0b2tlbkV4cGlyYXRpb25WYWx1ZX0gPiAke25vd1dpdGhPZmZzZXR9YCk7XG5cbiAgICAvLyBUb2tlbiBub3QgZXhwaXJlZD9cbiAgICByZXR1cm4gdG9rZW5Ob3RFeHBpcmVkO1xuICB9XG5cbiAgdmFsaWRhdGVBY2Nlc3NUb2tlbk5vdEV4cGlyZWQoYWNjZXNzVG9rZW5FeHBpcmVzQXQ6IERhdGUsIG9mZnNldFNlY29uZHM/OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAvLyB2YWx1ZSBpcyBvcHRpb25hbCwgc28gaWYgaXQgZG9lcyBub3QgZXhpc3QsIHRoZW4gaXQgaGFzIG5vdCBleHBpcmVkXG4gICAgaWYgKCFhY2Nlc3NUb2tlbkV4cGlyZXNBdCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgb2Zmc2V0U2Vjb25kcyA9IG9mZnNldFNlY29uZHMgfHwgMDtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbkV4cGlyYXRpb25WYWx1ZSA9IGFjY2Vzc1Rva2VuRXhwaXJlc0F0LnZhbHVlT2YoKTtcbiAgICBjb25zdCBub3dXaXRoT2Zmc2V0ID0gbmV3IERhdGUobmV3IERhdGUoKS50b1VUQ1N0cmluZygpKS52YWx1ZU9mKCkgKyBvZmZzZXRTZWNvbmRzICogMTAwMDtcbiAgICBjb25zdCB0b2tlbk5vdEV4cGlyZWQgPSBhY2Nlc3NUb2tlbkV4cGlyYXRpb25WYWx1ZSA+IG5vd1dpdGhPZmZzZXQ7XG5cbiAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoYEhhcyBhY2Nlc3NfdG9rZW4gZXhwaXJlZDogJHshdG9rZW5Ob3RFeHBpcmVkfSwgJHthY2Nlc3NUb2tlbkV4cGlyYXRpb25WYWx1ZX0gPiAke25vd1dpdGhPZmZzZXR9YCk7XG5cbiAgICAvLyBhY2Nlc3MgdG9rZW4gbm90IGV4cGlyZWQ/XG4gICAgcmV0dXJuIHRva2VuTm90RXhwaXJlZDtcbiAgfVxuXG4gIC8vIGlzc1xuICAvLyBSRVFVSVJFRC4gSXNzdWVyIElkZW50aWZpZXIgZm9yIHRoZSBJc3N1ZXIgb2YgdGhlIHJlc3BvbnNlLlRoZSBpc3MgdmFsdWUgaXMgYSBjYXNlLXNlbnNpdGl2ZSBVUkwgdXNpbmcgdGhlXG4gIC8vIGh0dHBzIHNjaGVtZSB0aGF0IGNvbnRhaW5zIHNjaGVtZSwgaG9zdCxcbiAgLy8gYW5kIG9wdGlvbmFsbHksIHBvcnQgbnVtYmVyIGFuZCBwYXRoIGNvbXBvbmVudHMgYW5kIG5vIHF1ZXJ5IG9yIGZyYWdtZW50IGNvbXBvbmVudHMuXG4gIC8vXG4gIC8vIHN1YlxuICAvLyBSRVFVSVJFRC4gU3ViamVjdCBJZGVudGlmaWVyLkxvY2FsbHkgdW5pcXVlIGFuZCBuZXZlciByZWFzc2lnbmVkIGlkZW50aWZpZXIgd2l0aGluIHRoZSBJc3N1ZXIgZm9yIHRoZSBFbmQtIFVzZXIsXG4gIC8vIHdoaWNoIGlzIGludGVuZGVkIHRvIGJlIGNvbnN1bWVkIGJ5IHRoZSBDbGllbnQsIGUuZy4sIDI0NDAwMzIwIG9yIEFJdE9hd213dFd3Y1QwazUxQmF5ZXdOdnV0ckpVcXN2bDZxczdBNC5cbiAgLy8gSXQgTVVTVCBOT1QgZXhjZWVkIDI1NSBBU0NJSSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5UaGUgc3ViIHZhbHVlIGlzIGEgY2FzZS1zZW5zaXRpdmUgc3RyaW5nLlxuICAvL1xuICAvLyBhdWRcbiAgLy8gUkVRVUlSRUQuIEF1ZGllbmNlKHMpIHRoYXQgdGhpcyBJRCBUb2tlbiBpcyBpbnRlbmRlZCBmb3IuIEl0IE1VU1QgY29udGFpbiB0aGUgT0F1dGggMi4wIGNsaWVudF9pZCBvZiB0aGUgUmVseWluZyBQYXJ0eSBhcyBhblxuICAvLyBhdWRpZW5jZSB2YWx1ZS5cbiAgLy8gSXQgTUFZIGFsc28gY29udGFpbiBpZGVudGlmaWVycyBmb3Igb3RoZXIgYXVkaWVuY2VzLkluIHRoZSBnZW5lcmFsIGNhc2UsIHRoZSBhdWQgdmFsdWUgaXMgYW4gYXJyYXkgb2YgY2FzZS1zZW5zaXRpdmUgc3RyaW5ncy5cbiAgLy8gSW4gdGhlIGNvbW1vbiBzcGVjaWFsIGNhc2Ugd2hlbiB0aGVyZSBpcyBvbmUgYXVkaWVuY2UsIHRoZSBhdWQgdmFsdWUgTUFZIGJlIGEgc2luZ2xlIGNhc2Utc2Vuc2l0aXZlIHN0cmluZy5cbiAgLy9cbiAgLy8gZXhwXG4gIC8vIFJFUVVJUkVELiBFeHBpcmF0aW9uIHRpbWUgb24gb3IgYWZ0ZXIgd2hpY2ggdGhlIElEIFRva2VuIE1VU1QgTk9UIGJlIGFjY2VwdGVkIGZvciBwcm9jZXNzaW5nLlxuICAvLyBUaGUgcHJvY2Vzc2luZyBvZiB0aGlzIHBhcmFtZXRlciByZXF1aXJlcyB0aGF0IHRoZSBjdXJyZW50IGRhdGUvIHRpbWUgTVVTVCBiZSBiZWZvcmUgdGhlIGV4cGlyYXRpb24gZGF0ZS8gdGltZSBsaXN0ZWQgaW4gdGhlIHZhbHVlLlxuICAvLyBJbXBsZW1lbnRlcnMgTUFZIHByb3ZpZGUgZm9yIHNvbWUgc21hbGwgbGVld2F5LCB1c3VhbGx5IG5vIG1vcmUgdGhhbiBhIGZldyBtaW51dGVzLCB0byBhY2NvdW50IGZvciBjbG9jayBza2V3LlxuICAvLyBJdHMgdmFsdWUgaXMgYSBKU09OIFtSRkM3MTU5XSBudW1iZXIgcmVwcmVzZW50aW5nIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBmcm9tIDE5NzAtIDAxIC0gMDFUMDA6IDAwOjAwWiBhcyBtZWFzdXJlZCBpbiBVVEMgdW50aWxcbiAgLy8gdGhlIGRhdGUvIHRpbWUuXG4gIC8vIFNlZSBSRkMgMzMzOSBbUkZDMzMzOV0gZm9yIGRldGFpbHMgcmVnYXJkaW5nIGRhdGUvIHRpbWVzIGluIGdlbmVyYWwgYW5kIFVUQyBpbiBwYXJ0aWN1bGFyLlxuICAvL1xuICAvLyBpYXRcbiAgLy8gUkVRVUlSRUQuIFRpbWUgYXQgd2hpY2ggdGhlIEpXVCB3YXMgaXNzdWVkLiBJdHMgdmFsdWUgaXMgYSBKU09OIG51bWJlciByZXByZXNlbnRpbmcgdGhlIG51bWJlciBvZiBzZWNvbmRzIGZyb21cbiAgLy8gMTk3MC0gMDEgLSAwMVQwMDogMDA6IDAwWiBhcyBtZWFzdXJlZFxuICAvLyBpbiBVVEMgdW50aWwgdGhlIGRhdGUvIHRpbWUuXG4gIHZhbGlkYXRlUmVxdWlyZWRJZFRva2VuKGRhdGFJZFRva2VuOiBhbnkpOiBib29sZWFuIHtcbiAgICBsZXQgdmFsaWRhdGVkID0gdHJ1ZTtcbiAgICBpZiAoIWRhdGFJZFRva2VuLmhhc093blByb3BlcnR5KCdpc3MnKSkge1xuICAgICAgdmFsaWRhdGVkID0gZmFsc2U7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nV2FybmluZygnaXNzIGlzIG1pc3NpbmcsIHRoaXMgaXMgcmVxdWlyZWQgaW4gdGhlIGlkX3Rva2VuJyk7XG4gICAgfVxuXG4gICAgaWYgKCFkYXRhSWRUb2tlbi5oYXNPd25Qcm9wZXJ0eSgnc3ViJykpIHtcbiAgICAgIHZhbGlkYXRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ1dhcm5pbmcoJ3N1YiBpcyBtaXNzaW5nLCB0aGlzIGlzIHJlcXVpcmVkIGluIHRoZSBpZF90b2tlbicpO1xuICAgIH1cblxuICAgIGlmICghZGF0YUlkVG9rZW4uaGFzT3duUHJvcGVydHkoJ2F1ZCcpKSB7XG4gICAgICB2YWxpZGF0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dXYXJuaW5nKCdhdWQgaXMgbWlzc2luZywgdGhpcyBpcyByZXF1aXJlZCBpbiB0aGUgaWRfdG9rZW4nKTtcbiAgICB9XG5cbiAgICBpZiAoIWRhdGFJZFRva2VuLmhhc093blByb3BlcnR5KCdleHAnKSkge1xuICAgICAgdmFsaWRhdGVkID0gZmFsc2U7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nV2FybmluZygnZXhwIGlzIG1pc3NpbmcsIHRoaXMgaXMgcmVxdWlyZWQgaW4gdGhlIGlkX3Rva2VuJyk7XG4gICAgfVxuXG4gICAgaWYgKCFkYXRhSWRUb2tlbi5oYXNPd25Qcm9wZXJ0eSgnaWF0JykpIHtcbiAgICAgIHZhbGlkYXRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ1dhcm5pbmcoJ2lhdCBpcyBtaXNzaW5nLCB0aGlzIGlzIHJlcXVpcmVkIGluIHRoZSBpZF90b2tlbicpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0ZWQ7XG4gIH1cblxuICAvLyBpZF90b2tlbiBDODogVGhlIGlhdCBDbGFpbSBjYW4gYmUgdXNlZCB0byByZWplY3QgdG9rZW5zIHRoYXQgd2VyZSBpc3N1ZWQgdG9vIGZhciBhd2F5IGZyb20gdGhlIGN1cnJlbnQgdGltZSxcbiAgLy8gbGltaXRpbmcgdGhlIGFtb3VudCBvZiB0aW1lIHRoYXQgbm9uY2VzIG5lZWQgdG8gYmUgc3RvcmVkIHRvIHByZXZlbnQgYXR0YWNrcy5UaGUgYWNjZXB0YWJsZSByYW5nZSBpcyBDbGllbnQgc3BlY2lmaWMuXG4gIHZhbGlkYXRlSWRUb2tlbklhdE1heE9mZnNldChkYXRhSWRUb2tlbjogYW55LCBtYXhPZmZzZXRBbGxvd2VkSW5TZWNvbmRzOiBudW1iZXIsIGRpc2FibGVJYXRPZmZzZXRWYWxpZGF0aW9uOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgaWYgKGRpc2FibGVJYXRPZmZzZXRWYWxpZGF0aW9uKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIWRhdGFJZFRva2VuLmhhc093blByb3BlcnR5KCdpYXQnKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGVUaW1lSWF0SWRUb2tlbiA9IG5ldyBEYXRlKDApOyAvLyBUaGUgMCBoZXJlIGlzIHRoZSBrZXksIHdoaWNoIHNldHMgdGhlIGRhdGUgdG8gdGhlIGVwb2NoXG4gICAgZGF0ZVRpbWVJYXRJZFRva2VuLnNldFVUQ1NlY29uZHMoZGF0YUlkVG9rZW4uaWF0KTtcbiAgICBtYXhPZmZzZXRBbGxvd2VkSW5TZWNvbmRzID0gbWF4T2Zmc2V0QWxsb3dlZEluU2Vjb25kcyB8fCAwO1xuXG4gICAgY29uc3Qgbm93SW5VdGMgPSBuZXcgRGF0ZShuZXcgRGF0ZSgpLnRvVVRDU3RyaW5nKCkpO1xuICAgIGNvbnN0IGRpZmYgPSBub3dJblV0Yy52YWx1ZU9mKCkgLSBkYXRlVGltZUlhdElkVG9rZW4udmFsdWVPZigpO1xuICAgIGNvbnN0IG1heE9mZnNldEFsbG93ZWRJbk1pbGxpc2Vjb25kcyA9IG1heE9mZnNldEFsbG93ZWRJblNlY29uZHMgKiAxMDAwO1xuXG4gICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKGB2YWxpZGF0ZSBpZCB0b2tlbiBpYXQgbWF4IG9mZnNldCAke2RpZmZ9IDwgJHttYXhPZmZzZXRBbGxvd2VkSW5NaWxsaXNlY29uZHN9YCk7XG5cbiAgICBpZiAoZGlmZiA+IDApIHtcbiAgICAgIHJldHVybiBkaWZmIDwgbWF4T2Zmc2V0QWxsb3dlZEluTWlsbGlzZWNvbmRzO1xuICAgIH1cblxuICAgIHJldHVybiAtZGlmZiA8IG1heE9mZnNldEFsbG93ZWRJbk1pbGxpc2Vjb25kcztcbiAgfVxuXG4gIC8vIGlkX3Rva2VuIEM5OiBUaGUgdmFsdWUgb2YgdGhlIG5vbmNlIENsYWltIE1VU1QgYmUgY2hlY2tlZCB0byB2ZXJpZnkgdGhhdCBpdCBpcyB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgb25lXG4gIC8vIHRoYXQgd2FzIHNlbnQgaW4gdGhlIEF1dGhlbnRpY2F0aW9uIFJlcXVlc3QuVGhlIENsaWVudCBTSE9VTEQgY2hlY2sgdGhlIG5vbmNlIHZhbHVlIGZvciByZXBsYXkgYXR0YWNrcy5cbiAgLy8gVGhlIHByZWNpc2UgbWV0aG9kIGZvciBkZXRlY3RpbmcgcmVwbGF5IGF0dGFja3MgaXMgQ2xpZW50IHNwZWNpZmljLlxuXG4gIC8vIEhvd2V2ZXIgdGhlIG5vbmNlIGNsYWltIFNIT1VMRCBub3QgYmUgcHJlc2VudCBmb3IgdGhlIHJlZnJlc2hfdG9rZW4gZ3JhbnQgdHlwZVxuICAvLyBodHRwczovL2JpdGJ1Y2tldC5vcmcvb3BlbmlkL2Nvbm5lY3QvaXNzdWVzLzEwMjUvYW1iaWd1aXR5LXdpdGgtaG93LW5vbmNlLWlzLWhhbmRsZWQtb25cbiAgLy8gVGhlIGN1cnJlbnQgc3BlYyBpcyBhbWJpZ3VvdXMgYW5kIEtleWNsb2FrIGRvZXMgc2VuZCBpdC5cbiAgdmFsaWRhdGVJZFRva2VuTm9uY2UoZGF0YUlkVG9rZW46IGFueSwgbG9jYWxOb25jZTogYW55LCBpZ25vcmVOb25jZUFmdGVyUmVmcmVzaDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlzRnJvbVJlZnJlc2hUb2tlbiA9XG4gICAgICAoZGF0YUlkVG9rZW4ubm9uY2UgPT09IHVuZGVmaW5lZCB8fCBpZ25vcmVOb25jZUFmdGVyUmVmcmVzaCkgJiYgbG9jYWxOb25jZSA9PT0gVG9rZW5WYWxpZGF0aW9uU2VydmljZS5yZWZyZXNoVG9rZW5Ob25jZVBsYWNlaG9sZGVyO1xuICAgIGlmICghaXNGcm9tUmVmcmVzaFRva2VuICYmIGRhdGFJZFRva2VuLm5vbmNlICE9PSBsb2NhbE5vbmNlKSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ1ZhbGlkYXRlX2lkX3Rva2VuX25vbmNlIGZhaWxlZCwgZGF0YUlkVG9rZW4ubm9uY2U6ICcgKyBkYXRhSWRUb2tlbi5ub25jZSArICcgbG9jYWxfbm9uY2U6JyArIGxvY2FsTm9uY2UpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gaWRfdG9rZW4gQzE6IFRoZSBJc3N1ZXIgSWRlbnRpZmllciBmb3IgdGhlIE9wZW5JRCBQcm92aWRlciAod2hpY2ggaXMgdHlwaWNhbGx5IG9idGFpbmVkIGR1cmluZyBEaXNjb3ZlcnkpXG4gIC8vIE1VU1QgZXhhY3RseSBtYXRjaCB0aGUgdmFsdWUgb2YgdGhlIGlzcyAoaXNzdWVyKSBDbGFpbS5cbiAgdmFsaWRhdGVJZFRva2VuSXNzKGRhdGFJZFRva2VuOiBhbnksIGF1dGhXZWxsS25vd25FbmRwb2ludHNJc3N1ZXI6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICgoZGF0YUlkVG9rZW4uaXNzIGFzIHN0cmluZykgIT09IChhdXRoV2VsbEtub3duRW5kcG9pbnRzSXNzdWVyIGFzIHN0cmluZykpIHtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZyhcbiAgICAgICAgJ1ZhbGlkYXRlX2lkX3Rva2VuX2lzcyBmYWlsZWQsIGRhdGFJZFRva2VuLmlzczogJyArXG4gICAgICAgICAgZGF0YUlkVG9rZW4uaXNzICtcbiAgICAgICAgICAnIGF1dGhXZWxsS25vd25FbmRwb2ludHMgaXNzdWVyOicgK1xuICAgICAgICAgIGF1dGhXZWxsS25vd25FbmRwb2ludHNJc3N1ZXJcbiAgICAgICk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBpZF90b2tlbiBDMjogVGhlIENsaWVudCBNVVNUIHZhbGlkYXRlIHRoYXQgdGhlIGF1ZCAoYXVkaWVuY2UpIENsYWltIGNvbnRhaW5zIGl0cyBjbGllbnRfaWQgdmFsdWUgcmVnaXN0ZXJlZCBhdCB0aGUgSXNzdWVyIGlkZW50aWZpZWRcbiAgLy8gYnkgdGhlIGlzcyAoaXNzdWVyKSBDbGFpbSBhcyBhbiBhdWRpZW5jZS5cbiAgLy8gVGhlIElEIFRva2VuIE1VU1QgYmUgcmVqZWN0ZWQgaWYgdGhlIElEIFRva2VuIGRvZXMgbm90IGxpc3QgdGhlIENsaWVudCBhcyBhIHZhbGlkIGF1ZGllbmNlLCBvciBpZiBpdCBjb250YWlucyBhZGRpdGlvbmFsIGF1ZGllbmNlc1xuICAvLyBub3QgdHJ1c3RlZCBieSB0aGUgQ2xpZW50LlxuICB2YWxpZGF0ZUlkVG9rZW5BdWQoZGF0YUlkVG9rZW46IGFueSwgYXVkOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhSWRUb2tlbi5hdWQpKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBkYXRhSWRUb2tlbi5hdWQuaW5jbHVkZXMoYXVkKTtcblxuICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCdWYWxpZGF0ZV9pZF90b2tlbl9hdWQgYXJyYXkgZmFpbGVkLCBkYXRhSWRUb2tlbi5hdWQ6ICcgKyBkYXRhSWRUb2tlbi5hdWQgKyAnIGNsaWVudF9pZDonICsgYXVkKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGRhdGFJZFRva2VuLmF1ZCAhPT0gYXVkKSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ1ZhbGlkYXRlX2lkX3Rva2VuX2F1ZCBmYWlsZWQsIGRhdGFJZFRva2VuLmF1ZDogJyArIGRhdGFJZFRva2VuLmF1ZCArICcgY2xpZW50X2lkOicgKyBhdWQpO1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB2YWxpZGF0ZUlkVG9rZW5BenBFeGlzdHNJZk1vcmVUaGFuT25lQXVkKGRhdGFJZFRva2VuOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoIWRhdGFJZFRva2VuKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YUlkVG9rZW4uYXVkKSAmJiBkYXRhSWRUb2tlbi5hdWQubGVuZ3RoID4gMSAmJiAhZGF0YUlkVG9rZW4uYXpwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBJZiBhbiBhenAgKGF1dGhvcml6ZWQgcGFydHkpIENsYWltIGlzIHByZXNlbnQsIHRoZSBDbGllbnQgU0hPVUxEIHZlcmlmeSB0aGF0IGl0cyBjbGllbnRfaWQgaXMgdGhlIENsYWltIFZhbHVlLlxuICB2YWxpZGF0ZUlkVG9rZW5BenBWYWxpZChkYXRhSWRUb2tlbjogYW55LCBjbGllbnRJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCFkYXRhSWRUb2tlbj8uYXpwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YUlkVG9rZW4uYXpwID09PSBjbGllbnRJZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZUZyb21IYXNoQ2FsbGJhY2soc3RhdGU6IGFueSwgbG9jYWxTdGF0ZTogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKChzdGF0ZSBhcyBzdHJpbmcpICE9PSAobG9jYWxTdGF0ZSBhcyBzdHJpbmcpKSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ1ZhbGlkYXRlU3RhdGVGcm9tSGFzaENhbGxiYWNrIGZhaWxlZCwgc3RhdGU6ICcgKyBzdGF0ZSArICcgbG9jYWxfc3RhdGU6JyArIGxvY2FsU3RhdGUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gaWRfdG9rZW4gQzU6IFRoZSBDbGllbnQgTVVTVCB2YWxpZGF0ZSB0aGUgc2lnbmF0dXJlIG9mIHRoZSBJRCBUb2tlbiBhY2NvcmRpbmcgdG8gSldTIFtKV1NdIHVzaW5nIHRoZSBhbGdvcml0aG0gc3BlY2lmaWVkIGluIHRoZSBhbGdcbiAgLy8gSGVhZGVyIFBhcmFtZXRlciBvZiB0aGUgSk9TRSBIZWFkZXIuVGhlIENsaWVudCBNVVNUIHVzZSB0aGUga2V5cyBwcm92aWRlZCBieSB0aGUgSXNzdWVyLlxuICAvLyBpZF90b2tlbiBDNjogVGhlIGFsZyB2YWx1ZSBTSE9VTEQgYmUgUlMyNTYuIFZhbGlkYXRpb24gb2YgdG9rZW5zIHVzaW5nIG90aGVyIHNpZ25pbmcgYWxnb3JpdGhtcyBpcyBkZXNjcmliZWQgaW4gdGhlXG4gIC8vIE9wZW5JRCBDb25uZWN0IENvcmUgMS4wIFtPcGVuSUQuQ29yZV0gc3BlY2lmaWNhdGlvbi5cbiAgdmFsaWRhdGVTaWduYXR1cmVJZFRva2VuKGlkVG9rZW46IGFueSwgand0a2V5czogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKCFqd3RrZXlzIHx8ICFqd3RrZXlzLmtleXMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBoZWFkZXJEYXRhID0gdGhpcy50b2tlbkhlbHBlclNlcnZpY2UuZ2V0SGVhZGVyRnJvbVRva2VuKGlkVG9rZW4sIGZhbHNlKTtcblxuICAgIGlmIChPYmplY3Qua2V5cyhoZWFkZXJEYXRhKS5sZW5ndGggPT09IDAgJiYgaGVhZGVyRGF0YS5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0KSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nV2FybmluZygnaWQgdG9rZW4gaGFzIG5vIGhlYWRlciBkYXRhJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3Qga2lkID0gaGVhZGVyRGF0YS5raWQ7XG4gICAgY29uc3QgYWxnID0gaGVhZGVyRGF0YS5hbGc7XG5cbiAgICBpZiAoIXRoaXMua2V5QWxnb3JpdGhtcy5pbmNsdWRlcyhhbGcgYXMgc3RyaW5nKSkge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ1dhcm5pbmcoJ2FsZyBub3Qgc3VwcG9ydGVkJywgYWxnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgand0S3R5VG9Vc2UgPSAnUlNBJztcbiAgICBpZiAoKGFsZyBhcyBzdHJpbmcpLmNoYXJBdCgwKSA9PT0gJ0UnKSB7XG4gICAgICBqd3RLdHlUb1VzZSA9ICdFQyc7XG4gICAgfVxuXG4gICAgbGV0IGlzVmFsaWQgPSBmYWxzZTtcblxuICAgIGlmICghaGVhZGVyRGF0YS5oYXNPd25Qcm9wZXJ0eSgna2lkJykpIHtcbiAgICAgIC8vIGV4YWN0bHkgMSBrZXkgaW4gdGhlIGp3dGtleXMgYW5kIG5vIGtpZCBpbiB0aGUgSm9zZSBoZWFkZXJcbiAgICAgIC8vIGt0eVx0XCJSU0FcIiBvciBFQyB1c2UgXCJzaWdcIlxuICAgICAgbGV0IGFtb3VudE9mTWF0Y2hpbmdLZXlzID0gMDtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGp3dGtleXMua2V5cykge1xuICAgICAgICBpZiAoKGtleS5rdHkgYXMgc3RyaW5nKSA9PT0gand0S3R5VG9Vc2UgJiYgKGtleS51c2UgYXMgc3RyaW5nKSA9PT0gJ3NpZycpIHtcbiAgICAgICAgICBhbW91bnRPZk1hdGNoaW5nS2V5cyA9IGFtb3VudE9mTWF0Y2hpbmdLZXlzICsgMTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYW1vdW50T2ZNYXRjaGluZ0tleXMgPT09IDApIHtcbiAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ1dhcm5pbmcoJ25vIGtleXMgZm91bmQsIGluY29ycmVjdCBTaWduYXR1cmUsIHZhbGlkYXRpb24gZmFpbGVkIGZvciBpZF90b2tlbicpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChhbW91bnRPZk1hdGNoaW5nS2V5cyA+IDEpIHtcbiAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ1dhcm5pbmcoJ25vIElEIFRva2VuIGtpZCBjbGFpbSBpbiBKT1NFIGhlYWRlciBhbmQgbXVsdGlwbGUgc3VwcGxpZWQgaW4gandrc191cmknKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBqd3RrZXlzLmtleXMpIHtcbiAgICAgICAgaWYgKChrZXkua3R5IGFzIHN0cmluZykgPT09IGp3dEt0eVRvVXNlICYmIChrZXkudXNlIGFzIHN0cmluZykgPT09ICdzaWcnKSB7XG4gICAgICAgICAgY29uc3QgcHVibGlja2V5ID0gS0VZVVRJTC5nZXRLZXkoa2V5KTtcbiAgICAgICAgICBpc1ZhbGlkID0gS0pVUi5qd3MuSldTLnZlcmlmeShpZFRva2VuLCBwdWJsaWNrZXksIFthbGddKTtcbiAgICAgICAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dXYXJuaW5nKCdpbmNvcnJlY3QgU2lnbmF0dXJlLCB2YWxpZGF0aW9uIGZhaWxlZCBmb3IgaWRfdG9rZW4nKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGlzVmFsaWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8ga2lkIGluIHRoZSBKb3NlIGhlYWRlciBvZiBpZF90b2tlblxuICAgICAgZm9yIChjb25zdCBrZXkgb2Ygand0a2V5cy5rZXlzKSB7XG4gICAgICAgIGlmICgoa2V5LmtpZCBhcyBzdHJpbmcpID09PSAoa2lkIGFzIHN0cmluZykpIHtcbiAgICAgICAgICBjb25zdCBwdWJsaWNLZXkgPSBLRVlVVElMLmdldEtleShrZXkpO1xuICAgICAgICAgIGlzVmFsaWQgPSBLSlVSLmp3cy5KV1MudmVyaWZ5KGlkVG9rZW4sIHB1YmxpY0tleSwgW2FsZ10pO1xuICAgICAgICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ1dhcm5pbmcoJ2luY29ycmVjdCBTaWduYXR1cmUsIHZhbGlkYXRpb24gZmFpbGVkIGZvciBpZF90b2tlbicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gaXNWYWxpZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpc1ZhbGlkO1xuICB9XG5cbiAgaGFzQ29uZmlnVmFsaWRSZXNwb25zZVR5cGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuZmxvd0hlbHBlci5pc0N1cnJlbnRGbG93QW55SW1wbGljaXRGbG93KCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZsb3dIZWxwZXIuaXNDdXJyZW50Rmxvd0NvZGVGbG93KCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dXYXJuaW5nKCdtb2R1bGUgY29uZmlndXJlZCBpbmNvcnJlY3RseSwgaW52YWxpZCByZXNwb25zZV90eXBlLiBDaGVjayB0aGUgcmVzcG9uc2VUeXBlIGluIHRoZSBjb25maWcnKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBBY2NlcHRzIElEIFRva2VuIHdpdGhvdXQgJ2tpZCcgY2xhaW0gaW4gSk9TRSBoZWFkZXIgaWYgb25seSBvbmUgSldLIHN1cHBsaWVkIGluICdqd2tzX3VybCdcbiAgLy8vLyBwcml2YXRlIHZhbGlkYXRlX25vX2tpZF9pbl9oZWFkZXJfb25seV9vbmVfYWxsb3dlZF9pbl9qd3RrZXlzKGhlYWRlcl9kYXRhOiBhbnksIGp3dGtleXM6IGFueSk6IGJvb2xlYW4ge1xuICAvLy8vICAgIHRoaXMub2lkY1NlY3VyaXR5Q29tbW9uLmxvZ0RlYnVnKCdhbW91bnQgb2Ygand0a2V5cy5rZXlzOiAnICsgand0a2V5cy5rZXlzLmxlbmd0aCk7XG4gIC8vLy8gICAgaWYgKCFoZWFkZXJfZGF0YS5oYXNPd25Qcm9wZXJ0eSgna2lkJykpIHtcbiAgLy8vLyAgICAgICAgLy8gbm8ga2lkIGRlZmluZWQgaW4gSm9zZSBoZWFkZXJcbiAgLy8vLyAgICAgICAgaWYgKGp3dGtleXMua2V5cy5sZW5ndGggIT0gMSkge1xuICAvLy8vICAgICAgICAgICAgdGhpcy5vaWRjU2VjdXJpdHlDb21tb24ubG9nRGVidWcoJ2p3dGtleXMua2V5cy5sZW5ndGggIT0gMSBhbmQgbm8ga2lkIGluIGhlYWRlcicpO1xuICAvLy8vICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAvLy8vICAgICAgICB9XG4gIC8vLy8gICAgfVxuXG4gIC8vLy8gICAgcmV0dXJuIHRydWU7XG4gIC8vLy8gfVxuXG4gIC8vIEFjY2VzcyBUb2tlbiBWYWxpZGF0aW9uXG4gIC8vIGFjY2Vzc190b2tlbiBDMTogSGFzaCB0aGUgb2N0ZXRzIG9mIHRoZSBBU0NJSSByZXByZXNlbnRhdGlvbiBvZiB0aGUgYWNjZXNzX3Rva2VuIHdpdGggdGhlIGhhc2ggYWxnb3JpdGhtIHNwZWNpZmllZCBpbiBKV0FbSldBXVxuICAvLyBmb3IgdGhlIGFsZyBIZWFkZXIgUGFyYW1ldGVyIG9mIHRoZSBJRCBUb2tlbidzIEpPU0UgSGVhZGVyLiBGb3IgaW5zdGFuY2UsIGlmIHRoZSBhbGcgaXMgUlMyNTYsIHRoZSBoYXNoIGFsZ29yaXRobSB1c2VkIGlzIFNIQS0yNTYuXG4gIC8vIGFjY2Vzc190b2tlbiBDMjogVGFrZSB0aGUgbGVmdC0gbW9zdCBoYWxmIG9mIHRoZSBoYXNoIGFuZCBiYXNlNjR1cmwtIGVuY29kZSBpdC5cbiAgLy8gYWNjZXNzX3Rva2VuIEMzOiBUaGUgdmFsdWUgb2YgYXRfaGFzaCBpbiB0aGUgSUQgVG9rZW4gTVVTVCBtYXRjaCB0aGUgdmFsdWUgcHJvZHVjZWQgaW4gdGhlIHByZXZpb3VzIHN0ZXAgaWYgYXRfaGFzaFxuICAvLyBpcyBwcmVzZW50IGluIHRoZSBJRCBUb2tlbi5cbiAgdmFsaWRhdGVJZFRva2VuQXRIYXNoKGFjY2Vzc1Rva2VuOiBhbnksIGF0SGFzaDogYW55LCBpZFRva2VuQWxnOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ2F0X2hhc2ggZnJvbSB0aGUgc2VydmVyOicgKyBhdEhhc2gpO1xuXG4gICAgLy8gJ3NoYTI1NicgJ3NoYTM4NCcgJ3NoYTUxMidcbiAgICBsZXQgc2hhID0gJ3NoYTI1Nic7XG4gICAgaWYgKGlkVG9rZW5BbGcuaW5jbHVkZXMoJzM4NCcpKSB7XG4gICAgICBzaGEgPSAnc2hhMzg0JztcbiAgICB9IGVsc2UgaWYgKGlkVG9rZW5BbGcuaW5jbHVkZXMoJzUxMicpKSB7XG4gICAgICBzaGEgPSAnc2hhNTEyJztcbiAgICB9XG5cbiAgICBjb25zdCB0ZXN0RGF0YSA9IHRoaXMuZ2VuZXJhdGVBdEhhc2goJycgKyBhY2Nlc3NUb2tlbiwgc2hhKTtcbiAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ2F0X2hhc2ggY2xpZW50IHZhbGlkYXRpb24gbm90IGRlY29kZWQ6JyArIHRlc3REYXRhKTtcbiAgICBpZiAodGVzdERhdGEgPT09IChhdEhhc2ggYXMgc3RyaW5nKSkge1xuICAgICAgcmV0dXJuIHRydWU7IC8vIGlzVmFsaWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRlc3RWYWx1ZSA9IHRoaXMuZ2VuZXJhdGVBdEhhc2goJycgKyBkZWNvZGVVUklDb21wb25lbnQoYWNjZXNzVG9rZW4pLCBzaGEpO1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCctZ2VuIGFjY2Vzcy0tJyArIHRlc3RWYWx1ZSk7XG4gICAgICBpZiAodGVzdFZhbHVlID09PSAoYXRIYXNoIGFzIHN0cmluZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7IC8vIGlzVmFsaWRcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZW5lcmF0ZUNvZGVDaGFsbGVuZ2UoY29kZVZlcmlmaWVyOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGhhc2ggPSBLSlVSLmNyeXB0by5VdGlsLmhhc2hTdHJpbmcoY29kZVZlcmlmaWVyLCAnc2hhMjU2Jyk7XG4gICAgY29uc3QgdGVzdERhdGEgPSBoZXh0b2I2NHUoaGFzaCk7XG5cbiAgICByZXR1cm4gdGVzdERhdGE7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQXRIYXNoKGFjY2Vzc1Rva2VuOiBhbnksIHNoYTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBoYXNoID0gS0pVUi5jcnlwdG8uVXRpbC5oYXNoU3RyaW5nKGFjY2Vzc1Rva2VuLCBzaGEpO1xuICAgIGNvbnN0IGZpcnN0MTI4Yml0cyA9IGhhc2guc3Vic3RyKDAsIGhhc2gubGVuZ3RoIC8gMik7XG4gICAgY29uc3QgdGVzdERhdGEgPSBoZXh0b2I2NHUoZmlyc3QxMjhiaXRzKTtcblxuICAgIHJldHVybiB0ZXN0RGF0YTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tdmFsaWRhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXV0aC1vaWRjLWNsaWVudC9zcmMvIiwic291cmNlcyI6WyJsaWIvdmFsaWRhdGlvbi90b2tlbi12YWxpZGF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFcEYsMkRBQTJEO0FBRTNELFdBQVc7QUFDWCw0R0FBNEc7QUFDNUcsMERBQTBEO0FBQzFELEVBQUU7QUFDRix1SUFBdUk7QUFDdkksdUlBQXVJO0FBQ3ZJLG9FQUFvRTtBQUNwRSxFQUFFO0FBQ0YsbUhBQW1IO0FBQ25ILEVBQUU7QUFDRiw4SEFBOEg7QUFDOUgsRUFBRTtBQUNGLGtJQUFrSTtBQUNsSSwrRkFBK0Y7QUFDL0YsRUFBRTtBQUNGLHFJQUFxSTtBQUNySSxXQUFXO0FBQ1gsK0JBQStCO0FBQy9CLEVBQUU7QUFDRix5SUFBeUk7QUFDekksbUJBQW1CO0FBQ25CLEVBQUU7QUFDRiwrR0FBK0c7QUFDL0csd0hBQXdIO0FBQ3hILEVBQUU7QUFDRix5SEFBeUg7QUFDekgsMklBQTJJO0FBQzNJLHNCQUFzQjtBQUN0QixFQUFFO0FBQ0Ysc0hBQXNIO0FBQ3RILG9GQUFvRjtBQUNwRixFQUFFO0FBQ0YsaUlBQWlJO0FBQ2pJLHNGQUFzRjtBQUV0RiwwQkFBMEI7QUFDMUIsaUlBQWlJO0FBQ2pJLHFJQUFxSTtBQUNySSxrRkFBa0Y7QUFDbEYsaUlBQWlJO0FBQ2pJLG1CQUFtQjtBQUduQixNQUFNLE9BQU8sc0JB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ci9jb3JlJztcbmltcG9ydCB7IGhleHRvYjY0dSwgS0VZVVRJTCwgS0pVUiB9IGZyb20gJ2pzcnNhc2lnbi1yZWR1Y2VkJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi9sb2dnaW5nL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRva2VuSGVscGVyU2VydmljZSB9IGZyb20gJy4uL3V0aWxzL3Rva2VuSGVscGVyL29pZGMtdG9rZW4taGVscGVyLnNlcnZpY2UnO1xuXG4vLyBodHRwOi8vb3BlbmlkLm5ldC9zcGVjcy9vcGVuaWQtY29ubmVjdC1pbXBsaWNpdC0xXzAuaHRtbFxuXG4vLyBpZF90b2tlblxuLy8gaWRfdG9rZW4gQzE6IFRoZSBJc3N1ZXIgSWRlbnRpZmllciBmb3IgdGhlIE9wZW5JRCBQcm92aWRlciAod2hpY2ggaXMgdHlwaWNhbGx5IG9idGFpbmVkIGR1cmluZyBEaXNjb3ZlcnkpXG4vLyBNVVNUIGV4YWN0bHkgbWF0Y2ggdGhlIHZhbHVlIG9mIHRoZSBpc3MgKGlzc3VlcikgQ2xhaW0uXG4vL1xuLy8gaWRfdG9rZW4gQzI6IFRoZSBDbGllbnQgTVVTVCB2YWxpZGF0ZSB0aGF0IHRoZSBhdWQgKGF1ZGllbmNlKSBDbGFpbSBjb250YWlucyBpdHMgY2xpZW50X2lkIHZhbHVlIHJlZ2lzdGVyZWQgYXQgdGhlIElzc3VlciBpZGVudGlmaWVkXG4vLyBieSB0aGUgaXNzIChpc3N1ZXIpIENsYWltIGFzIGFuIGF1ZGllbmNlLlRoZSBJRCBUb2tlbiBNVVNUIGJlIHJlamVjdGVkIGlmIHRoZSBJRCBUb2tlbiBkb2VzIG5vdCBsaXN0IHRoZSBDbGllbnQgYXMgYSB2YWxpZCBhdWRpZW5jZSxcbi8vIG9yIGlmIGl0IGNvbnRhaW5zIGFkZGl0aW9uYWwgYXVkaWVuY2VzIG5vdCB0cnVzdGVkIGJ5IHRoZSBDbGllbnQuXG4vL1xuLy8gaWRfdG9rZW4gQzM6IElmIHRoZSBJRCBUb2tlbiBjb250YWlucyBtdWx0aXBsZSBhdWRpZW5jZXMsIHRoZSBDbGllbnQgU0hPVUxEIHZlcmlmeSB0aGF0IGFuIGF6cCBDbGFpbSBpcyBwcmVzZW50LlxuLy9cbi8vIGlkX3Rva2VuIEM0OiBJZiBhbiBhenAgKGF1dGhvcml6ZWQgcGFydHkpIENsYWltIGlzIHByZXNlbnQsIHRoZSBDbGllbnQgU0hPVUxEIHZlcmlmeSB0aGF0IGl0cyBjbGllbnRfaWQgaXMgdGhlIENsYWltIFZhbHVlLlxuLy9cbi8vIGlkX3Rva2VuIEM1OiBUaGUgQ2xpZW50IE1VU1QgdmFsaWRhdGUgdGhlIHNpZ25hdHVyZSBvZiB0aGUgSUQgVG9rZW4gYWNjb3JkaW5nIHRvIEpXUyBbSldTXSB1c2luZyB0aGUgYWxnb3JpdGhtIHNwZWNpZmllZCBpbiB0aGVcbi8vIGFsZyBIZWFkZXIgUGFyYW1ldGVyIG9mIHRoZSBKT1NFIEhlYWRlci5UaGUgQ2xpZW50IE1VU1QgdXNlIHRoZSBrZXlzIHByb3ZpZGVkIGJ5IHRoZSBJc3N1ZXIuXG4vL1xuLy8gaWRfdG9rZW4gQzY6IFRoZSBhbGcgdmFsdWUgU0hPVUxEIGJlIFJTMjU2LiBWYWxpZGF0aW9uIG9mIHRva2VucyB1c2luZyBvdGhlciBzaWduaW5nIGFsZ29yaXRobXMgaXMgZGVzY3JpYmVkIGluIHRoZSBPcGVuSUQgQ29ubmVjdFxuLy8gQ29yZSAxLjBcbi8vIFtPcGVuSUQuQ29yZV0gc3BlY2lmaWNhdGlvbi5cbi8vXG4vLyBpZF90b2tlbiBDNzogVGhlIGN1cnJlbnQgdGltZSBNVVNUIGJlIGJlZm9yZSB0aGUgdGltZSByZXByZXNlbnRlZCBieSB0aGUgZXhwIENsYWltIChwb3NzaWJseSBhbGxvd2luZyBmb3Igc29tZSBzbWFsbCBsZWV3YXkgdG8gYWNjb3VudFxuLy8gZm9yIGNsb2NrIHNrZXcpLlxuLy9cbi8vIGlkX3Rva2VuIEM4OiBUaGUgaWF0IENsYWltIGNhbiBiZSB1c2VkIHRvIHJlamVjdCB0b2tlbnMgdGhhdCB3ZXJlIGlzc3VlZCB0b28gZmFyIGF3YXkgZnJvbSB0aGUgY3VycmVudCB0aW1lLFxuLy8gbGltaXRpbmcgdGhlIGFtb3VudCBvZiB0aW1lIHRoYXQgbm9uY2VzIG5lZWQgdG8gYmUgc3RvcmVkIHRvIHByZXZlbnQgYXR0YWNrcy5UaGUgYWNjZXB0YWJsZSByYW5nZSBpcyBDbGllbnQgc3BlY2lmaWMuXG4vL1xuLy8gaWRfdG9rZW4gQzk6IFRoZSB2YWx1ZSBvZiB0aGUgbm9uY2UgQ2xhaW0gTVVTVCBiZSBjaGVja2VkIHRvIHZlcmlmeSB0aGF0IGl0IGlzIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBvbmUgdGhhdCB3YXMgc2VudFxuLy8gaW4gdGhlIEF1dGhlbnRpY2F0aW9uIFJlcXVlc3QuVGhlIENsaWVudCBTSE9VTEQgY2hlY2sgdGhlIG5vbmNlIHZhbHVlIGZvciByZXBsYXkgYXR0YWNrcy5UaGUgcHJlY2lzZSBtZXRob2QgZm9yIGRldGVjdGluZyByZXBsYXkgYXR0YWNrc1xuLy8gaXMgQ2xpZW50IHNwZWNpZmljLlxuLy9cbi8vIGlkX3Rva2VuIEMxMDogSWYgdGhlIGFjciBDbGFpbSB3YXMgcmVxdWVzdGVkLCB0aGUgQ2xpZW50IFNIT1VMRCBjaGVjayB0aGF0IHRoZSBhc3NlcnRlZCBDbGFpbSBWYWx1ZSBpcyBhcHByb3ByaWF0ZS5cbi8vIFRoZSBtZWFuaW5nIGFuZCBwcm9jZXNzaW5nIG9mIGFjciBDbGFpbSBWYWx1ZXMgaXMgb3V0IG9mIHNjb3BlIGZvciB0aGlzIGRvY3VtZW50LlxuLy9cbi8vIGlkX3Rva2VuIEMxMTogV2hlbiBhIG1heF9hZ2UgcmVxdWVzdCBpcyBtYWRlLCB0aGUgQ2xpZW50IFNIT1VMRCBjaGVjayB0aGUgYXV0aF90aW1lIENsYWltIHZhbHVlIGFuZCByZXF1ZXN0IHJlLSBhdXRoZW50aWNhdGlvblxuLy8gaWYgaXQgZGV0ZXJtaW5lcyB0b28gbXVjaCB0aW1lIGhhcyBlbGFwc2VkIHNpbmNlIHRoZSBsYXN0IEVuZC0gVXNlciBhdXRoZW50aWNhdGlvbi5cblxuLy8gQWNjZXNzIFRva2VuIFZhbGlkYXRpb25cbi8vIGFjY2Vzc190b2tlbiBDMTogSGFzaCB0aGUgb2N0ZXRzIG9mIHRoZSBBU0NJSSByZXByZXNlbnRhdGlvbiBvZiB0aGUgYWNjZXNzX3Rva2VuIHdpdGggdGhlIGhhc2ggYWxnb3JpdGhtIHNwZWNpZmllZCBpbiBKV0FbSldBXVxuLy8gZm9yIHRoZSBhbGcgSGVhZGVyIFBhcmFtZXRlciBvZiB0aGUgSUQgVG9rZW4ncyBKT1NFIEhlYWRlci4gRm9yIGluc3RhbmNlLCBpZiB0aGUgYWxnIGlzIFJTMjU2LCB0aGUgaGFzaCBhbGdvcml0aG0gdXNlZCBpcyBTSEEtMjU2LlxuLy8gYWNjZXNzX3Rva2VuIEMyOiBUYWtlIHRoZSBsZWZ0LSBtb3N0IGhhbGYgb2YgdGhlIGhhc2ggYW5kIGJhc2U2NHVybC0gZW5jb2RlIGl0LlxuLy8gYWNjZXNzX3Rva2VuIEMzOiBUaGUgdmFsdWUgb2YgYXRfaGFzaCBpbiB0aGUgSUQgVG9rZW4gTVVTVCBtYXRjaCB0aGUgdmFsdWUgcHJvZHVjZWQgaW4gdGhlIHByZXZpb3VzIHN0ZXAgaWYgYXRfaGFzaCBpcyBwcmVzZW50XG4vLyBpbiB0aGUgSUQgVG9rZW4uXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUb2tlblZhbGlkYXRpb25TZXJ2aWNlIHtcbiAgc3RhdGljIHJlZnJlc2hUb2tlbk5vbmNlUGxhY2Vob2xkZXIgPSAnLS1SZWZyZXNoVG9rZW4tLSc7XG4gIGtleUFsZ29yaXRobXM6IHN0cmluZ1tdID0gWydIUzI1NicsICdIUzM4NCcsICdIUzUxMicsICdSUzI1NicsICdSUzM4NCcsICdSUzUxMicsICdFUzI1NicsICdFUzM4NCcsICdQUzI1NicsICdQUzM4NCcsICdQUzUxMiddO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdG9rZW5IZWxwZXJTZXJ2aWNlOiBUb2tlbkhlbHBlclNlcnZpY2UsIHByaXZhdGUgbG9nZ2VyU2VydmljZTogTG9nZ2VyU2VydmljZSkge31cblxuICAvLyBpZF90b2tlbiBDNzogVGhlIGN1cnJlbnQgdGltZSBNVVNUIGJlIGJlZm9yZSB0aGUgdGltZSByZXByZXNlbnRlZCBieSB0aGUgZXhwIENsYWltXG4gIC8vIChwb3NzaWJseSBhbGxvd2luZyBmb3Igc29tZSBzbWFsbCBsZWV3YXkgdG8gYWNjb3VudCBmb3IgY2xvY2sgc2tldykuXG4gIGhhc0lkVG9rZW5FeHBpcmVkKHRva2VuOiBzdHJpbmcsIG9mZnNldFNlY29uZHM/OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBkZWNvZGVkID0gdGhpcy50b2tlbkhlbHBlclNlcnZpY2UuZ2V0UGF5bG9hZEZyb21Ub2tlbih0b2tlbiwgZmFsc2UpO1xuXG4gICAgcmV0dXJuICF0aGlzLnZhbGlkYXRlSWRUb2tlbkV4cE5vdEV4cGlyZWQoZGVjb2RlZCwgb2Zmc2V0U2Vjb25kcyk7XG4gIH1cblxuICAvLyBpZF90b2tlbiBDNzogVGhlIGN1cnJlbnQgdGltZSBNVVNUIGJlIGJlZm9yZSB0aGUgdGltZSByZXByZXNlbnRlZCBieSB0aGUgZXhwIENsYWltXG4gIC8vIChwb3NzaWJseSBhbGxvd2luZyBmb3Igc29tZSBzbWFsbCBsZWV3YXkgdG8gYWNjb3VudCBmb3IgY2xvY2sgc2tldykuXG4gIHZhbGlkYXRlSWRUb2tlbkV4cE5vdEV4cGlyZWQoZGVjb2RlZElkVG9rZW46IHN0cmluZywgb2Zmc2V0U2Vjb25kcz86IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHRva2VuRXhwaXJhdGlvbkRhdGUgPSB0aGlzLnRva2VuSGVscGVyU2VydmljZS5nZXRUb2tlbkV4cGlyYXRpb25EYXRlKGRlY29kZWRJZFRva2VuKTtcbiAgICBvZmZzZXRTZWNvbmRzID0gb2Zmc2V0U2Vjb25kcyB8fCAwO1xuXG4gICAgaWYgKCF0b2tlbkV4cGlyYXRpb25EYXRlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgdG9rZW5FeHBpcmF0aW9uVmFsdWUgPSB0b2tlbkV4cGlyYXRpb25EYXRlLnZhbHVlT2YoKTtcbiAgICBjb25zdCBub3dXaXRoT2Zmc2V0ID0gbmV3IERhdGUobmV3IERhdGUoKS50b1VUQ1N0cmluZygpKS52YWx1ZU9mKCkgKyBvZmZzZXRTZWNvbmRzICogMTAwMDtcbiAgICBjb25zdCB0b2tlbk5vdEV4cGlyZWQgPSB0b2tlbkV4cGlyYXRpb25WYWx1ZSA+IG5vd1dpdGhPZmZzZXQ7XG5cbiAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoYEhhcyBpZF90b2tlbiBleHBpcmVkOiAkeyF0b2tlbk5vdEV4cGlyZWR9LCAke3Rva2VuRXhwaXJhdGlvblZhbHVlfSA+ICR7bm93V2l0aE9mZnNldH1gKTtcblxuICAgIC8vIFRva2VuIG5vdCBleHBpcmVkP1xuICAgIHJldHVybiB0b2tlbk5vdEV4cGlyZWQ7XG4gIH1cblxuICB2YWxpZGF0ZUFjY2Vzc1Rva2VuTm90RXhwaXJlZChhY2Nlc3NUb2tlbkV4cGlyZXNBdDogRGF0ZSwgb2Zmc2V0U2Vjb25kcz86IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIC8vIHZhbHVlIGlzIG9wdGlvbmFsLCBzbyBpZiBpdCBkb2VzIG5vdCBleGlzdCwgdGhlbiBpdCBoYXMgbm90IGV4cGlyZWRcbiAgICBpZiAoIWFjY2Vzc1Rva2VuRXhwaXJlc0F0KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBvZmZzZXRTZWNvbmRzID0gb2Zmc2V0U2Vjb25kcyB8fCAwO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuRXhwaXJhdGlvblZhbHVlID0gYWNjZXNzVG9rZW5FeHBpcmVzQXQudmFsdWVPZigpO1xuICAgIGNvbnN0IG5vd1dpdGhPZmZzZXQgPSBuZXcgRGF0ZShuZXcgRGF0ZSgpLnRvVVRDU3RyaW5nKCkpLnZhbHVlT2YoKSArIG9mZnNldFNlY29uZHMgKiAxMDAwO1xuICAgIGNvbnN0IHRva2VuTm90RXhwaXJlZCA9IGFjY2Vzc1Rva2VuRXhwaXJhdGlvblZhbHVlID4gbm93V2l0aE9mZnNldDtcblxuICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZyhgSGFzIGFjY2Vzc190b2tlbiBleHBpcmVkOiAkeyF0b2tlbk5vdEV4cGlyZWR9LCAke2FjY2Vzc1Rva2VuRXhwaXJhdGlvblZhbHVlfSA+ICR7bm93V2l0aE9mZnNldH1gKTtcblxuICAgIC8vIGFjY2VzcyB0b2tlbiBub3QgZXhwaXJlZD9cbiAgICByZXR1cm4gdG9rZW5Ob3RFeHBpcmVkO1xuICB9XG5cbiAgLy8gaXNzXG4gIC8vIFJFUVVJUkVELiBJc3N1ZXIgSWRlbnRpZmllciBmb3IgdGhlIElzc3VlciBvZiB0aGUgcmVzcG9uc2UuVGhlIGlzcyB2YWx1ZSBpcyBhIGNhc2Utc2Vuc2l0aXZlIFVSTCB1c2luZyB0aGVcbiAgLy8gaHR0cHMgc2NoZW1lIHRoYXQgY29udGFpbnMgc2NoZW1lLCBob3N0LFxuICAvLyBhbmQgb3B0aW9uYWxseSwgcG9ydCBudW1iZXIgYW5kIHBhdGggY29tcG9uZW50cyBhbmQgbm8gcXVlcnkgb3IgZnJhZ21lbnQgY29tcG9uZW50cy5cbiAgLy9cbiAgLy8gc3ViXG4gIC8vIFJFUVVJUkVELiBTdWJqZWN0IElkZW50aWZpZXIuTG9jYWxseSB1bmlxdWUgYW5kIG5ldmVyIHJlYXNzaWduZWQgaWRlbnRpZmllciB3aXRoaW4gdGhlIElzc3VlciBmb3IgdGhlIEVuZC0gVXNlcixcbiAgLy8gd2hpY2ggaXMgaW50ZW5kZWQgdG8gYmUgY29uc3VtZWQgYnkgdGhlIENsaWVudCwgZS5nLiwgMjQ0MDAzMjAgb3IgQUl0T2F3bXd0V3djVDBrNTFCYXlld052dXRySlVxc3ZsNnFzN0E0LlxuICAvLyBJdCBNVVNUIE5PVCBleGNlZWQgMjU1IEFTQ0lJIGNoYXJhY3RlcnMgaW4gbGVuZ3RoLlRoZSBzdWIgdmFsdWUgaXMgYSBjYXNlLXNlbnNpdGl2ZSBzdHJpbmcuXG4gIC8vXG4gIC8vIGF1ZFxuICAvLyBSRVFVSVJFRC4gQXVkaWVuY2UocykgdGhhdCB0aGlzIElEIFRva2VuIGlzIGludGVuZGVkIGZvci4gSXQgTVVTVCBjb250YWluIHRoZSBPQXV0aCAyLjAgY2xpZW50X2lkIG9mIHRoZSBSZWx5aW5nIFBhcnR5IGFzIGFuXG4gIC8vIGF1ZGllbmNlIHZhbHVlLlxuICAvLyBJdCBNQVkgYWxzbyBjb250YWluIGlkZW50aWZpZXJzIGZvciBvdGhlciBhdWRpZW5jZXMuSW4gdGhlIGdlbmVyYWwgY2FzZSwgdGhlIGF1ZCB2YWx1ZSBpcyBhbiBhcnJheSBvZiBjYXNlLXNlbnNpdGl2ZSBzdHJpbmdzLlxuICAvLyBJbiB0aGUgY29tbW9uIHNwZWNpYWwgY2FzZSB3aGVuIHRoZXJlIGlzIG9uZSBhdWRpZW5jZSwgdGhlIGF1ZCB2YWx1ZSBNQVkgYmUgYSBzaW5nbGUgY2FzZS1zZW5zaXRpdmUgc3RyaW5nLlxuICAvL1xuICAvLyBleHBcbiAgLy8gUkVRVUlSRUQuIEV4cGlyYXRpb24gdGltZSBvbiBvciBhZnRlciB3aGljaCB0aGUgSUQgVG9rZW4gTVVTVCBOT1QgYmUgYWNjZXB0ZWQgZm9yIHByb2Nlc3NpbmcuXG4gIC8vIFRoZSBwcm9jZXNzaW5nIG9mIHRoaXMgcGFyYW1ldGVyIHJlcXVpcmVzIHRoYXQgdGhlIGN1cnJlbnQgZGF0ZS8gdGltZSBNVVNUIGJlIGJlZm9yZSB0aGUgZXhwaXJhdGlvbiBkYXRlLyB0aW1lIGxpc3RlZCBpbiB0aGUgdmFsdWUuXG4gIC8vIEltcGxlbWVudGVycyBNQVkgcHJvdmlkZSBmb3Igc29tZSBzbWFsbCBsZWV3YXksIHVzdWFsbHkgbm8gbW9yZSB0aGFuIGEgZmV3IG1pbnV0ZXMsIHRvIGFjY291bnQgZm9yIGNsb2NrIHNrZXcuXG4gIC8vIEl0cyB2YWx1ZSBpcyBhIEpTT04gW1JGQzcxNTldIG51bWJlciByZXByZXNlbnRpbmcgdGhlIG51bWJlciBvZiBzZWNvbmRzIGZyb20gMTk3MC0gMDEgLSAwMVQwMDogMDA6MDBaIGFzIG1lYXN1cmVkIGluIFVUQyB1bnRpbFxuICAvLyB0aGUgZGF0ZS8gdGltZS5cbiAgLy8gU2VlIFJGQyAzMzM5IFtSRkMzMzM5XSBmb3IgZGV0YWlscyByZWdhcmRpbmcgZGF0ZS8gdGltZXMgaW4gZ2VuZXJhbCBhbmQgVVRDIGluIHBhcnRpY3VsYXIuXG4gIC8vXG4gIC8vIGlhdFxuICAvLyBSRVFVSVJFRC4gVGltZSBhdCB3aGljaCB0aGUgSldUIHdhcyBpc3N1ZWQuIEl0cyB2YWx1ZSBpcyBhIEpTT04gbnVtYmVyIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgZnJvbVxuICAvLyAxOTcwLSAwMSAtIDAxVDAwOiAwMDogMDBaIGFzIG1lYXN1cmVkXG4gIC8vIGluIFVUQyB1bnRpbCB0aGUgZGF0ZS8gdGltZS5cbiAgdmFsaWRhdGVSZXF1aXJlZElkVG9rZW4oZGF0YUlkVG9rZW46IGFueSk6IGJvb2xlYW4ge1xuICAgIGxldCB2YWxpZGF0ZWQgPSB0cnVlO1xuICAgIGlmICghZGF0YUlkVG9rZW4uaGFzT3duUHJvcGVydHkoJ2lzcycpKSB7XG4gICAgICB2YWxpZGF0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dXYXJuaW5nKCdpc3MgaXMgbWlzc2luZywgdGhpcyBpcyByZXF1aXJlZCBpbiB0aGUgaWRfdG9rZW4nKTtcbiAgICB9XG5cbiAgICBpZiAoIWRhdGFJZFRva2VuLmhhc093blByb3BlcnR5KCdzdWInKSkge1xuICAgICAgdmFsaWRhdGVkID0gZmFsc2U7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nV2FybmluZygnc3ViIGlzIG1pc3NpbmcsIHRoaXMgaXMgcmVxdWlyZWQgaW4gdGhlIGlkX3Rva2VuJyk7XG4gICAgfVxuXG4gICAgaWYgKCFkYXRhSWRUb2tlbi5oYXNPd25Qcm9wZXJ0eSgnYXVkJykpIHtcbiAgICAgIHZhbGlkYXRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ1dhcm5pbmcoJ2F1ZCBpcyBtaXNzaW5nLCB0aGlzIGlzIHJlcXVpcmVkIGluIHRoZSBpZF90b2tlbicpO1xuICAgIH1cblxuICAgIGlmICghZGF0YUlkVG9rZW4uaGFzT3duUHJvcGVydHkoJ2V4cCcpKSB7XG4gICAgICB2YWxpZGF0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dXYXJuaW5nKCdleHAgaXMgbWlzc2luZywgdGhpcyBpcyByZXF1aXJlZCBpbiB0aGUgaWRfdG9rZW4nKTtcbiAgICB9XG5cbiAgICBpZiAoIWRhdGFJZFRva2VuLmhhc093blByb3BlcnR5KCdpYXQnKSkge1xuICAgICAgdmFsaWRhdGVkID0gZmFsc2U7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nV2FybmluZygnaWF0IGlzIG1pc3NpbmcsIHRoaXMgaXMgcmVxdWlyZWQgaW4gdGhlIGlkX3Rva2VuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlZDtcbiAgfVxuXG4gIC8vIGlkX3Rva2VuIEM4OiBUaGUgaWF0IENsYWltIGNhbiBiZSB1c2VkIHRvIHJlamVjdCB0b2tlbnMgdGhhdCB3ZXJlIGlzc3VlZCB0b28gZmFyIGF3YXkgZnJvbSB0aGUgY3VycmVudCB0aW1lLFxuICAvLyBsaW1pdGluZyB0aGUgYW1vdW50IG9mIHRpbWUgdGhhdCBub25jZXMgbmVlZCB0byBiZSBzdG9yZWQgdG8gcHJldmVudCBhdHRhY2tzLlRoZSBhY2NlcHRhYmxlIHJhbmdlIGlzIENsaWVudCBzcGVjaWZpYy5cbiAgdmFsaWRhdGVJZFRva2VuSWF0TWF4T2Zmc2V0KGRhdGFJZFRva2VuOiBhbnksIG1heE9mZnNldEFsbG93ZWRJblNlY29uZHM6IG51bWJlciwgZGlzYWJsZUlhdE9mZnNldFZhbGlkYXRpb246IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBpZiAoZGlzYWJsZUlhdE9mZnNldFZhbGlkYXRpb24pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICghZGF0YUlkVG9rZW4uaGFzT3duUHJvcGVydHkoJ2lhdCcpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZVRpbWVJYXRJZFRva2VuID0gbmV3IERhdGUoMCk7IC8vIFRoZSAwIGhlcmUgaXMgdGhlIGtleSwgd2hpY2ggc2V0cyB0aGUgZGF0ZSB0byB0aGUgZXBvY2hcbiAgICBkYXRlVGltZUlhdElkVG9rZW4uc2V0VVRDU2Vjb25kcyhkYXRhSWRUb2tlbi5pYXQpO1xuICAgIG1heE9mZnNldEFsbG93ZWRJblNlY29uZHMgPSBtYXhPZmZzZXRBbGxvd2VkSW5TZWNvbmRzIHx8IDA7XG5cbiAgICBjb25zdCBub3dJblV0YyA9IG5ldyBEYXRlKG5ldyBEYXRlKCkudG9VVENTdHJpbmcoKSk7XG4gICAgY29uc3QgZGlmZiA9IG5vd0luVXRjLnZhbHVlT2YoKSAtIGRhdGVUaW1lSWF0SWRUb2tlbi52YWx1ZU9mKCk7XG4gICAgY29uc3QgbWF4T2Zmc2V0QWxsb3dlZEluTWlsbGlzZWNvbmRzID0gbWF4T2Zmc2V0QWxsb3dlZEluU2Vjb25kcyAqIDEwMDA7XG5cbiAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoYHZhbGlkYXRlIGlkIHRva2VuIGlhdCBtYXggb2Zmc2V0ICR7ZGlmZn0gPCAke21heE9mZnNldEFsbG93ZWRJbk1pbGxpc2Vjb25kc31gKTtcblxuICAgIGlmIChkaWZmID4gMCkge1xuICAgICAgcmV0dXJuIGRpZmYgPCBtYXhPZmZzZXRBbGxvd2VkSW5NaWxsaXNlY29uZHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIC1kaWZmIDwgbWF4T2Zmc2V0QWxsb3dlZEluTWlsbGlzZWNvbmRzO1xuICB9XG5cbiAgLy8gaWRfdG9rZW4gQzk6IFRoZSB2YWx1ZSBvZiB0aGUgbm9uY2UgQ2xhaW0gTVVTVCBiZSBjaGVja2VkIHRvIHZlcmlmeSB0aGF0IGl0IGlzIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBvbmVcbiAgLy8gdGhhdCB3YXMgc2VudCBpbiB0aGUgQXV0aGVudGljYXRpb24gUmVxdWVzdC5UaGUgQ2xpZW50IFNIT1VMRCBjaGVjayB0aGUgbm9uY2UgdmFsdWUgZm9yIHJlcGxheSBhdHRhY2tzLlxuICAvLyBUaGUgcHJlY2lzZSBtZXRob2QgZm9yIGRldGVjdGluZyByZXBsYXkgYXR0YWNrcyBpcyBDbGllbnQgc3BlY2lmaWMuXG5cbiAgLy8gSG93ZXZlciB0aGUgbm9uY2UgY2xhaW0gU0hPVUxEIG5vdCBiZSBwcmVzZW50IGZvciB0aGUgcmVmcmVzaF90b2tlbiBncmFudCB0eXBlXG4gIC8vIGh0dHBzOi8vYml0YnVja2V0Lm9yZy9vcGVuaWQvY29ubmVjdC9pc3N1ZXMvMTAyNS9hbWJpZ3VpdHktd2l0aC1ob3ctbm9uY2UtaXMtaGFuZGxlZC1vblxuICAvLyBUaGUgY3VycmVudCBzcGVjIGlzIGFtYmlndW91cyBhbmQgS2V5Y2xvYWsgZG9lcyBzZW5kIGl0LlxuICB2YWxpZGF0ZUlkVG9rZW5Ob25jZShkYXRhSWRUb2tlbjogYW55LCBsb2NhbE5vbmNlOiBhbnksIGlnbm9yZU5vbmNlQWZ0ZXJSZWZyZXNoOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXNGcm9tUmVmcmVzaFRva2VuID1cbiAgICAgIChkYXRhSWRUb2tlbi5ub25jZSA9PT0gdW5kZWZpbmVkIHx8IGlnbm9yZU5vbmNlQWZ0ZXJSZWZyZXNoKSAmJiBsb2NhbE5vbmNlID09PSBUb2tlblZhbGlkYXRpb25TZXJ2aWNlLnJlZnJlc2hUb2tlbk5vbmNlUGxhY2Vob2xkZXI7XG4gICAgaWYgKCFpc0Zyb21SZWZyZXNoVG9rZW4gJiYgZGF0YUlkVG9rZW4ubm9uY2UgIT09IGxvY2FsTm9uY2UpIHtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZygnVmFsaWRhdGVfaWRfdG9rZW5fbm9uY2UgZmFpbGVkLCBkYXRhSWRUb2tlbi5ub25jZTogJyArIGRhdGFJZFRva2VuLm5vbmNlICsgJyBsb2NhbF9ub25jZTonICsgbG9jYWxOb25jZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBpZF90b2tlbiBDMTogVGhlIElzc3VlciBJZGVudGlmaWVyIGZvciB0aGUgT3BlbklEIFByb3ZpZGVyICh3aGljaCBpcyB0eXBpY2FsbHkgb2J0YWluZWQgZHVyaW5nIERpc2NvdmVyeSlcbiAgLy8gTVVTVCBleGFjdGx5IG1hdGNoIHRoZSB2YWx1ZSBvZiB0aGUgaXNzIChpc3N1ZXIpIENsYWltLlxuICB2YWxpZGF0ZUlkVG9rZW5Jc3MoZGF0YUlkVG9rZW46IGFueSwgYXV0aFdlbGxLbm93bkVuZHBvaW50c0lzc3VlcjogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKChkYXRhSWRUb2tlbi5pc3MgYXMgc3RyaW5nKSAhPT0gKGF1dGhXZWxsS25vd25FbmRwb2ludHNJc3N1ZXIgYXMgc3RyaW5nKSkge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKFxuICAgICAgICAnVmFsaWRhdGVfaWRfdG9rZW5faXNzIGZhaWxlZCwgZGF0YUlkVG9rZW4uaXNzOiAnICtcbiAgICAgICAgICBkYXRhSWRUb2tlbi5pc3MgK1xuICAgICAgICAgICcgYXV0aFdlbGxLbm93bkVuZHBvaW50cyBpc3N1ZXI6JyArXG4gICAgICAgICAgYXV0aFdlbGxLbm93bkVuZHBvaW50c0lzc3VlclxuICAgICAgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIGlkX3Rva2VuIEMyOiBUaGUgQ2xpZW50IE1VU1QgdmFsaWRhdGUgdGhhdCB0aGUgYXVkIChhdWRpZW5jZSkgQ2xhaW0gY29udGFpbnMgaXRzIGNsaWVudF9pZCB2YWx1ZSByZWdpc3RlcmVkIGF0IHRoZSBJc3N1ZXIgaWRlbnRpZmllZFxuICAvLyBieSB0aGUgaXNzIChpc3N1ZXIpIENsYWltIGFzIGFuIGF1ZGllbmNlLlxuICAvLyBUaGUgSUQgVG9rZW4gTVVTVCBiZSByZWplY3RlZCBpZiB0aGUgSUQgVG9rZW4gZG9lcyBub3QgbGlzdCB0aGUgQ2xpZW50IGFzIGEgdmFsaWQgYXVkaWVuY2UsIG9yIGlmIGl0IGNvbnRhaW5zIGFkZGl0aW9uYWwgYXVkaWVuY2VzXG4gIC8vIG5vdCB0cnVzdGVkIGJ5IHRoZSBDbGllbnQuXG4gIHZhbGlkYXRlSWRUb2tlbkF1ZChkYXRhSWRUb2tlbjogYW55LCBhdWQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFJZFRva2VuLmF1ZCkpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGRhdGFJZFRva2VuLmF1ZC5pbmNsdWRlcyhhdWQpO1xuXG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ1ZhbGlkYXRlX2lkX3Rva2VuX2F1ZCBhcnJheSBmYWlsZWQsIGRhdGFJZFRva2VuLmF1ZDogJyArIGRhdGFJZFRva2VuLmF1ZCArICcgY2xpZW50X2lkOicgKyBhdWQpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoZGF0YUlkVG9rZW4uYXVkICE9PSBhdWQpIHtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZygnVmFsaWRhdGVfaWRfdG9rZW5fYXVkIGZhaWxlZCwgZGF0YUlkVG9rZW4uYXVkOiAnICsgZGF0YUlkVG9rZW4uYXVkICsgJyBjbGllbnRfaWQ6JyArIGF1ZCk7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhbGlkYXRlSWRUb2tlbkF6cEV4aXN0c0lmTW9yZVRoYW5PbmVBdWQoZGF0YUlkVG9rZW46IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICghZGF0YUlkVG9rZW4pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhSWRUb2tlbi5hdWQpICYmIGRhdGFJZFRva2VuLmF1ZC5sZW5ndGggPiAxICYmICFkYXRhSWRUb2tlbi5henApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIElmIGFuIGF6cCAoYXV0aG9yaXplZCBwYXJ0eSkgQ2xhaW0gaXMgcHJlc2VudCwgdGhlIENsaWVudCBTSE9VTEQgdmVyaWZ5IHRoYXQgaXRzIGNsaWVudF9pZCBpcyB0aGUgQ2xhaW0gVmFsdWUuXG4gIHZhbGlkYXRlSWRUb2tlbkF6cFZhbGlkKGRhdGFJZFRva2VuOiBhbnksIGNsaWVudElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIWRhdGFJZFRva2VuPy5henApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChkYXRhSWRUb2tlbi5henAgPT09IGNsaWVudElkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlRnJvbUhhc2hDYWxsYmFjayhzdGF0ZTogYW55LCBsb2NhbFN0YXRlOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoKHN0YXRlIGFzIHN0cmluZykgIT09IChsb2NhbFN0YXRlIGFzIHN0cmluZykpIHtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZygnVmFsaWRhdGVTdGF0ZUZyb21IYXNoQ2FsbGJhY2sgZmFpbGVkLCBzdGF0ZTogJyArIHN0YXRlICsgJyBsb2NhbF9zdGF0ZTonICsgbG9jYWxTdGF0ZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBpZF90b2tlbiBDNTogVGhlIENsaWVudCBNVVNUIHZhbGlkYXRlIHRoZSBzaWduYXR1cmUgb2YgdGhlIElEIFRva2VuIGFjY29yZGluZyB0byBKV1MgW0pXU10gdXNpbmcgdGhlIGFsZ29yaXRobSBzcGVjaWZpZWQgaW4gdGhlIGFsZ1xuICAvLyBIZWFkZXIgUGFyYW1ldGVyIG9mIHRoZSBKT1NFIEhlYWRlci5UaGUgQ2xpZW50IE1VU1QgdXNlIHRoZSBrZXlzIHByb3ZpZGVkIGJ5IHRoZSBJc3N1ZXIuXG4gIC8vIGlkX3Rva2VuIEM2OiBUaGUgYWxnIHZhbHVlIFNIT1VMRCBiZSBSUzI1Ni4gVmFsaWRhdGlvbiBvZiB0b2tlbnMgdXNpbmcgb3RoZXIgc2lnbmluZyBhbGdvcml0aG1zIGlzIGRlc2NyaWJlZCBpbiB0aGVcbiAgLy8gT3BlbklEIENvbm5lY3QgQ29yZSAxLjAgW09wZW5JRC5Db3JlXSBzcGVjaWZpY2F0aW9uLlxuICB2YWxpZGF0ZVNpZ25hdHVyZUlkVG9rZW4oaWRUb2tlbjogYW55LCBqd3RrZXlzOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoIWp3dGtleXMgfHwgIWp3dGtleXMua2V5cykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGhlYWRlckRhdGEgPSB0aGlzLnRva2VuSGVscGVyU2VydmljZS5nZXRIZWFkZXJGcm9tVG9rZW4oaWRUb2tlbiwgZmFsc2UpO1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKGhlYWRlckRhdGEpLmxlbmd0aCA9PT0gMCAmJiBoZWFkZXJEYXRhLmNvbnN0cnVjdG9yID09PSBPYmplY3QpIHtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dXYXJuaW5nKCdpZCB0b2tlbiBoYXMgbm8gaGVhZGVyIGRhdGEnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBraWQgPSBoZWFkZXJEYXRhLmtpZDtcbiAgICBjb25zdCBhbGcgPSBoZWFkZXJEYXRhLmFsZztcblxuICAgIGlmICghdGhpcy5rZXlBbGdvcml0aG1zLmluY2x1ZGVzKGFsZyBhcyBzdHJpbmcpKSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nV2FybmluZygnYWxnIG5vdCBzdXBwb3J0ZWQnLCBhbGcpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBqd3RLdHlUb1VzZSA9ICdSU0EnO1xuICAgIGlmICgoYWxnIGFzIHN0cmluZykuY2hhckF0KDApID09PSAnRScpIHtcbiAgICAgIGp3dEt0eVRvVXNlID0gJ0VDJztcbiAgICB9XG5cbiAgICBsZXQgaXNWYWxpZCA9IGZhbHNlO1xuXG4gICAgaWYgKCFoZWFkZXJEYXRhLmhhc093blByb3BlcnR5KCdraWQnKSkge1xuICAgICAgLy8gZXhhY3RseSAxIGtleSBpbiB0aGUgand0a2V5cyBhbmQgbm8ga2lkIGluIHRoZSBKb3NlIGhlYWRlclxuICAgICAgLy8ga3R5XHRcIlJTQVwiIG9yIEVDIHVzZSBcInNpZ1wiXG4gICAgICBsZXQgYW1vdW50T2ZNYXRjaGluZ0tleXMgPSAwO1xuICAgICAgZm9yIChjb25zdCBrZXkgb2Ygand0a2V5cy5rZXlzKSB7XG4gICAgICAgIGlmICgoa2V5Lmt0eSBhcyBzdHJpbmcpID09PSBqd3RLdHlUb1VzZSAmJiAoa2V5LnVzZSBhcyBzdHJpbmcpID09PSAnc2lnJykge1xuICAgICAgICAgIGFtb3VudE9mTWF0Y2hpbmdLZXlzID0gYW1vdW50T2ZNYXRjaGluZ0tleXMgKyAxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhbW91bnRPZk1hdGNoaW5nS2V5cyA9PT0gMCkge1xuICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nV2FybmluZygnbm8ga2V5cyBmb3VuZCwgaW5jb3JyZWN0IFNpZ25hdHVyZSwgdmFsaWRhdGlvbiBmYWlsZWQgZm9yIGlkX3Rva2VuJyk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFtb3VudE9mTWF0Y2hpbmdLZXlzID4gMSkge1xuICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nV2FybmluZygnbm8gSUQgVG9rZW4ga2lkIGNsYWltIGluIEpPU0UgaGVhZGVyIGFuZCBtdWx0aXBsZSBzdXBwbGllZCBpbiBqd2tzX3VyaScpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGp3dGtleXMua2V5cykge1xuICAgICAgICBpZiAoKGtleS5rdHkgYXMgc3RyaW5nKSA9PT0gand0S3R5VG9Vc2UgJiYgKGtleS51c2UgYXMgc3RyaW5nKSA9PT0gJ3NpZycpIHtcbiAgICAgICAgICBjb25zdCBwdWJsaWNrZXkgPSBLRVlVVElMLmdldEtleShrZXkpO1xuICAgICAgICAgIGlzVmFsaWQgPSBLSlVSLmp3cy5KV1MudmVyaWZ5KGlkVG9rZW4sIHB1YmxpY2tleSwgW2FsZ10pO1xuICAgICAgICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ1dhcm5pbmcoJ2luY29ycmVjdCBTaWduYXR1cmUsIHZhbGlkYXRpb24gZmFpbGVkIGZvciBpZF90b2tlbicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gaXNWYWxpZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBraWQgaW4gdGhlIEpvc2UgaGVhZGVyIG9mIGlkX3Rva2VuXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBqd3RrZXlzLmtleXMpIHtcbiAgICAgICAgaWYgKChrZXkua2lkIGFzIHN0cmluZykgPT09IChraWQgYXMgc3RyaW5nKSkge1xuICAgICAgICAgIGNvbnN0IHB1YmxpY0tleSA9IEtFWVVUSUwuZ2V0S2V5KGtleSk7XG4gICAgICAgICAgaXNWYWxpZCA9IEtKVVIuandzLkpXUy52ZXJpZnkoaWRUb2tlbiwgcHVibGljS2V5LCBbYWxnXSk7XG4gICAgICAgICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nV2FybmluZygnaW5jb3JyZWN0IFNpZ25hdHVyZSwgdmFsaWRhdGlvbiBmYWlsZWQgZm9yIGlkX3Rva2VuJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBpc1ZhbGlkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVmFsaWQ7XG4gIH1cblxuICAvLyBBY2NlcHRzIElEIFRva2VuIHdpdGhvdXQgJ2tpZCcgY2xhaW0gaW4gSk9TRSBoZWFkZXIgaWYgb25seSBvbmUgSldLIHN1cHBsaWVkIGluICdqd2tzX3VybCdcbiAgLy8vLyBwcml2YXRlIHZhbGlkYXRlX25vX2tpZF9pbl9oZWFkZXJfb25seV9vbmVfYWxsb3dlZF9pbl9qd3RrZXlzKGhlYWRlcl9kYXRhOiBhbnksIGp3dGtleXM6IGFueSk6IGJvb2xlYW4ge1xuICAvLy8vICAgIHRoaXMub2lkY1NlY3VyaXR5Q29tbW9uLmxvZ0RlYnVnKCdhbW91bnQgb2Ygand0a2V5cy5rZXlzOiAnICsgand0a2V5cy5rZXlzLmxlbmd0aCk7XG4gIC8vLy8gICAgaWYgKCFoZWFkZXJfZGF0YS5oYXNPd25Qcm9wZXJ0eSgna2lkJykpIHtcbiAgLy8vLyAgICAgICAgLy8gbm8ga2lkIGRlZmluZWQgaW4gSm9zZSBoZWFkZXJcbiAgLy8vLyAgICAgICAgaWYgKGp3dGtleXMua2V5cy5sZW5ndGggIT0gMSkge1xuICAvLy8vICAgICAgICAgICAgdGhpcy5vaWRjU2VjdXJpdHlDb21tb24ubG9nRGVidWcoJ2p3dGtleXMua2V5cy5sZW5ndGggIT0gMSBhbmQgbm8ga2lkIGluIGhlYWRlcicpO1xuICAvLy8vICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAvLy8vICAgICAgICB9XG4gIC8vLy8gICAgfVxuXG4gIC8vLy8gICAgcmV0dXJuIHRydWU7XG4gIC8vLy8gfVxuXG4gIC8vIEFjY2VzcyBUb2tlbiBWYWxpZGF0aW9uXG4gIC8vIGFjY2Vzc190b2tlbiBDMTogSGFzaCB0aGUgb2N0ZXRzIG9mIHRoZSBBU0NJSSByZXByZXNlbnRhdGlvbiBvZiB0aGUgYWNjZXNzX3Rva2VuIHdpdGggdGhlIGhhc2ggYWxnb3JpdGhtIHNwZWNpZmllZCBpbiBKV0FbSldBXVxuICAvLyBmb3IgdGhlIGFsZyBIZWFkZXIgUGFyYW1ldGVyIG9mIHRoZSBJRCBUb2tlbidzIEpPU0UgSGVhZGVyLiBGb3IgaW5zdGFuY2UsIGlmIHRoZSBhbGcgaXMgUlMyNTYsIHRoZSBoYXNoIGFsZ29yaXRobSB1c2VkIGlzIFNIQS0yNTYuXG4gIC8vIGFjY2Vzc190b2tlbiBDMjogVGFrZSB0aGUgbGVmdC0gbW9zdCBoYWxmIG9mIHRoZSBoYXNoIGFuZCBiYXNlNjR1cmwtIGVuY29kZSBpdC5cbiAgLy8gYWNjZXNzX3Rva2VuIEMzOiBUaGUgdmFsdWUgb2YgYXRfaGFzaCBpbiB0aGUgSUQgVG9rZW4gTVVTVCBtYXRjaCB0aGUgdmFsdWUgcHJvZHVjZWQgaW4gdGhlIHByZXZpb3VzIHN0ZXAgaWYgYXRfaGFzaFxuICAvLyBpcyBwcmVzZW50IGluIHRoZSBJRCBUb2tlbi5cbiAgdmFsaWRhdGVJZFRva2VuQXRIYXNoKGFjY2Vzc1Rva2VuOiBhbnksIGF0SGFzaDogYW55LCBpZFRva2VuQWxnOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ2F0X2hhc2ggZnJvbSB0aGUgc2VydmVyOicgKyBhdEhhc2gpO1xuXG4gICAgLy8gJ3NoYTI1NicgJ3NoYTM4NCcgJ3NoYTUxMidcbiAgICBsZXQgc2hhID0gJ3NoYTI1Nic7XG4gICAgaWYgKGlkVG9rZW5BbGcuaW5jbHVkZXMoJzM4NCcpKSB7XG4gICAgICBzaGEgPSAnc2hhMzg0JztcbiAgICB9IGVsc2UgaWYgKGlkVG9rZW5BbGcuaW5jbHVkZXMoJzUxMicpKSB7XG4gICAgICBzaGEgPSAnc2hhNTEyJztcbiAgICB9XG5cbiAgICBjb25zdCB0ZXN0RGF0YSA9IHRoaXMuZ2VuZXJhdGVBdEhhc2goJycgKyBhY2Nlc3NUb2tlbiwgc2hhKTtcbiAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoJ2F0X2hhc2ggY2xpZW50IHZhbGlkYXRpb24gbm90IGRlY29kZWQ6JyArIHRlc3REYXRhKTtcbiAgICBpZiAodGVzdERhdGEgPT09IChhdEhhc2ggYXMgc3RyaW5nKSkge1xuICAgICAgcmV0dXJuIHRydWU7IC8vIGlzVmFsaWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRlc3RWYWx1ZSA9IHRoaXMuZ2VuZXJhdGVBdEhhc2goJycgKyBkZWNvZGVVUklDb21wb25lbnQoYWNjZXNzVG9rZW4pLCBzaGEpO1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKCctZ2VuIGFjY2Vzcy0tJyArIHRlc3RWYWx1ZSk7XG4gICAgICBpZiAodGVzdFZhbHVlID09PSAoYXRIYXNoIGFzIHN0cmluZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7IC8vIGlzVmFsaWRcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZW5lcmF0ZUNvZGVDaGFsbGVuZ2UoY29kZVZlcmlmaWVyOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGhhc2ggPSBLSlVSLmNyeXB0by5VdGlsLmhhc2hTdHJpbmcoY29kZVZlcmlmaWVyLCAnc2hhMjU2Jyk7XG4gICAgY29uc3QgdGVzdERhdGEgPSBoZXh0b2I2NHUoaGFzaCk7XG5cbiAgICByZXR1cm4gdGVzdERhdGE7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQXRIYXNoKGFjY2Vzc1Rva2VuOiBhbnksIHNoYTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBoYXNoID0gS0pVUi5jcnlwdG8uVXRpbC5oYXNoU3RyaW5nKGFjY2Vzc1Rva2VuLCBzaGEpO1xuICAgIGNvbnN0IGZpcnN0MTI4Yml0cyA9IGhhc2guc3Vic3RyKDAsIGhhc2gubGVuZ3RoIC8gMik7XG4gICAgY29uc3QgdGVzdERhdGEgPSBoZXh0b2I2NHUoZmlyc3QxMjhiaXRzKTtcblxuICAgIHJldHVybiB0ZXN0RGF0YTtcbiAgfVxufVxuIl19
import { DataService } from './api/data.service';
import { HttpBaseService } from './api/http-base.service';
import { AuthStateService } from './authState/auth-state.service';
import { ImplicitFlowCallbackService } from './callback/implicit-flow-callback.service';
import { CheckAuthService } from './check-auth.service';

@@ -10,5 +11,13 @@ import { ConfigValidationService } from './config-validation/config-validation.service';

import { OidcConfigService } from './config/config.service';
import { CodeFlowCallbackHandlerService } from './flows/callback-handling/code-flow-callback-handler.service';
import { HistoryJwtKeysCallbackHandlerService } from './flows/callback-handling/history-jwt-keys-callback-handler.service';
import { ImplicitFlowCallbackHandlerService } from './flows/callback-handling/implicit-flow-callback-handler.service';
import { RefreshSessionCallbackHandlerService } from './flows/callback-handling/refresh-session-callback-handler.service';
import { RefreshTokenCallbackHandlerService } from './flows/callback-handling/refresh-token-callback-handler.service';
import { StateValidationCallbackHandlerService } from './flows/callback-handling/state-validation-callback-handler.service';
import { UserCallbackHandlerService } from './flows/callback-handling/user-callback-handler.service';
import { FlowsDataService } from './flows/flows-data.service';
import { FlowsService } from './flows/flows.service';
import { RandomService } from './flows/random/random.service';
import { ResetAuthDataService } from './flows/reset-auth-data.service';
import { SigninKeyDataService } from './flows/signin-key-data.service';

@@ -20,2 +29,7 @@ import { CheckSessionService } from './iframe/check-session.service';

import { LoginService } from './login/login.service';
import { ParLoginService } from './login/par/par-login.service';
import { ParService } from './login/par/par.service';
import { PopUpLoginService } from './login/popup/popup-login.service';
import { ResponseTypeValidationService } from './login/response-type-validation/response-type-validation.service';
import { StandardLoginService } from './login/standard/standard-login.service';
import { LogoffRevocationService } from './logoffRevoke/logoff-revocation.service';

@@ -37,3 +51,3 @@ import { OidcSecurityService } from './oidc.security.service';

ngModule: typeof AuthModule;
providers: (typeof HttpBaseService | typeof DataService | typeof PlatformProvider | typeof ConfigurationProvider | typeof LoggerService | typeof PublicEventsService | typeof StoragePersistanceService | typeof FlowHelper | typeof TokenHelperService | typeof TokenValidationService | typeof AuthStateService | typeof RandomService | typeof FlowsDataService | typeof UrlService | typeof UserService | typeof EqualityService | typeof StateValidationService | typeof SigninKeyDataService | typeof FlowsService | typeof IFrameService | typeof SilentRenewService | typeof AuthWellKnownDataService | typeof AuthWellKnownService | typeof CheckSessionService | typeof CheckAuthService | typeof ConfigValidationService | typeof OidcConfigService | typeof LoginService | typeof LogoffRevocationService | typeof OidcSecurityService | {
providers: (typeof HttpBaseService | typeof DataService | typeof PlatformProvider | typeof ConfigurationProvider | typeof LoggerService | typeof PublicEventsService | typeof StoragePersistanceService | typeof TokenHelperService | typeof TokenValidationService | typeof AuthStateService | typeof RandomService | typeof FlowsDataService | typeof FlowHelper | typeof UrlService | typeof CodeFlowCallbackHandlerService | typeof UserService | typeof ResetAuthDataService | typeof SigninKeyDataService | typeof HistoryJwtKeysCallbackHandlerService | typeof ImplicitFlowCallbackHandlerService | typeof RefreshSessionCallbackHandlerService | typeof RefreshTokenCallbackHandlerService | typeof EqualityService | typeof StateValidationService | typeof StateValidationCallbackHandlerService | typeof UserCallbackHandlerService | typeof FlowsService | typeof ImplicitFlowCallbackService | typeof IFrameService | typeof SilentRenewService | typeof AuthWellKnownDataService | typeof AuthWellKnownService | typeof CheckSessionService | typeof CheckAuthService | typeof ConfigValidationService | typeof OidcConfigService | typeof ResponseTypeValidationService | typeof ParService | typeof ParLoginService | typeof PopUpLoginService | typeof StandardLoginService | typeof LoginService | typeof LogoffRevocationService | typeof OidcSecurityService | {
provide: typeof AbstractSecurityStorage;

@@ -40,0 +54,0 @@ useClass: Type<any>;

@@ -11,5 +11,5 @@ import { Router } from '@angular/router';

private flowsDataService;
private intervallService;
constructor(flowsService: FlowsService, configurationProvider: ConfigurationProvider, router: Router, flowsDataService: FlowsDataService, intervallService: IntervallService);
private intervalService;
constructor(flowsService: FlowsService, configurationProvider: ConfigurationProvider, router: Router, flowsDataService: FlowsDataService, intervalService: IntervallService);
authorizedImplicitFlowCallback(hash?: string): import("rxjs").Observable<import("../flows/callback-context").CallbackContext>;
}
import { AuthStateService } from '../authState/auth-state.service';
import { ConfigurationProvider } from '../config/config.provider';
import { FlowsDataService } from '../flows/flows-data.service';
import { FlowsService } from '../flows/flows.service';
import { ResetAuthDataService } from '../flows/reset-auth-data.service';
import { RefreshSessionIframeService } from '../iframe/refresh-session-iframe.service';

@@ -13,3 +13,3 @@ import { LoggerService } from '../logging/logger.service';

export declare class PeriodicallyTokenCheckService {
private flowsService;
private resetAuthDataService;
private flowHelper;

@@ -25,4 +25,4 @@ private configurationProvider;

private storagePersistanceService;
constructor(flowsService: FlowsService, flowHelper: FlowHelper, configurationProvider: ConfigurationProvider, flowsDataService: FlowsDataService, loggerService: LoggerService, userService: UserService, authStateService: AuthStateService, refreshSessionIframeService: RefreshSessionIframeService, refreshSessionRefreshTokenService: RefreshSessionRefreshTokenService, intervalService: IntervallService, storagePersistanceService: StoragePersistanceService);
constructor(resetAuthDataService: ResetAuthDataService, flowHelper: FlowHelper, configurationProvider: ConfigurationProvider, flowsDataService: FlowsDataService, loggerService: LoggerService, userService: UserService, authStateService: AuthStateService, refreshSessionIframeService: RefreshSessionIframeService, refreshSessionRefreshTokenService: RefreshSessionRefreshTokenService, intervalService: IntervallService, storagePersistanceService: StoragePersistanceService);
startTokenValidationPeriodically(repeatAfterSeconds: number): void;
}
import { FlowsService } from '../flows/flows.service';
import { ResetAuthDataService } from '../flows/reset-auth-data.service';
import { LoggerService } from '../logging/logger.service';

@@ -6,5 +7,6 @@ import { IntervallService } from './intervall.service';

private loggerService;
private resetAuthDataService;
private flowsService;
private intervallService;
constructor(loggerService: LoggerService, flowsService: FlowsService, intervallService: IntervallService);
private intervalService;
constructor(loggerService: LoggerService, resetAuthDataService: ResetAuthDataService, flowsService: FlowsService, intervalService: IntervallService);
refreshSessionWithRefreshTokens(customParams?: {

@@ -11,0 +13,0 @@ [key: string]: string | number | boolean;

@@ -10,3 +10,3 @@ import { Observable } from 'rxjs';

import { LoggerService } from './logging/logger.service';
import { PopUpService } from './login/popup.service';
import { PopUpService } from './login/popup/popup.service';
import { UserService } from './userData/user-service';

@@ -13,0 +13,0 @@ export declare class CheckAuthService {

@@ -11,2 +11,3 @@ export interface AuthWellKnownEndpoints {

introspectionEndpoint?: string;
parEndpoint?: string;
}

@@ -17,2 +17,3 @@ import { LogLevel } from '../logging/log-level';

useRefreshToken?: boolean;
usePushedAuthorisationRequests?: boolean;
ignoreNonceAfterRefresh?: boolean;

@@ -19,0 +20,0 @@ postLoginRoute?: string;

@@ -1,47 +0,24 @@

import { Observable } from 'rxjs';
import { DataService } from '../api/data.service';
import { AuthStateService } from '../authState/auth-state.service';
import { ConfigurationProvider } from '../config/config.provider';
import { LoggerService } from '../logging/logger.service';
import { StoragePersistanceService } from '../storage/storage-persistance.service';
import { UserService } from '../userData/user-service';
import { UrlService } from '../utils/url/url.service';
import { StateValidationService } from '../validation/state-validation.service';
import { TokenValidationService } from '../validation/token-validation.service';
import { CallbackContext } from './callback-context';
import { FlowsDataService } from './flows-data.service';
import { SigninKeyDataService } from './signin-key-data.service';
import { CodeFlowCallbackHandlerService } from './callback-handling/code-flow-callback-handler.service';
import { HistoryJwtKeysCallbackHandlerService } from './callback-handling/history-jwt-keys-callback-handler.service';
import { ImplicitFlowCallbackHandlerService } from './callback-handling/implicit-flow-callback-handler.service';
import { RefreshSessionCallbackHandlerService } from './callback-handling/refresh-session-callback-handler.service';
import { RefreshTokenCallbackHandlerService } from './callback-handling/refresh-token-callback-handler.service';
import { StateValidationCallbackHandlerService } from './callback-handling/state-validation-callback-handler.service';
import { UserCallbackHandlerService } from './callback-handling/user-callback-handler.service';
export declare class FlowsService {
private readonly urlService;
private readonly loggerService;
private readonly tokenValidationService;
private readonly configurationProvider;
private readonly authStateService;
private readonly flowsDataService;
private readonly signinKeyDataService;
private readonly dataService;
private readonly userService;
private readonly stateValidationService;
private readonly storagePersistanceService;
constructor(urlService: UrlService, loggerService: LoggerService, tokenValidationService: TokenValidationService, configurationProvider: ConfigurationProvider, authStateService: AuthStateService, flowsDataService: FlowsDataService, signinKeyDataService: SigninKeyDataService, dataService: DataService, userService: UserService, stateValidationService: StateValidationService, storagePersistanceService: StoragePersistanceService);
resetAuthorizationData(): void;
processCodeFlowCallback(urlToCheck: string): Observable<CallbackContext>;
processSilentRenewCodeFlowCallback(firstContext: CallbackContext): Observable<CallbackContext>;
processImplicitFlowCallback(hash?: string): Observable<CallbackContext>;
private readonly codeFlowCallbackHandlerService;
private readonly implicitFlowCallbackHandlerService;
private readonly historyJwtKeysCallbackHandlerService;
private readonly userHandlerService;
private readonly stateValidationCallbackHandlerService;
private readonly refreshSessionCallbackHandlerService;
private readonly refreshTokenCallbackHandlerService;
constructor(codeFlowCallbackHandlerService: CodeFlowCallbackHandlerService, implicitFlowCallbackHandlerService: ImplicitFlowCallbackHandlerService, historyJwtKeysCallbackHandlerService: HistoryJwtKeysCallbackHandlerService, userHandlerService: UserCallbackHandlerService, stateValidationCallbackHandlerService: StateValidationCallbackHandlerService, refreshSessionCallbackHandlerService: RefreshSessionCallbackHandlerService, refreshTokenCallbackHandlerService: RefreshTokenCallbackHandlerService);
processCodeFlowCallback(urlToCheck: string): import("rxjs").Observable<CallbackContext>;
processSilentRenewCodeFlowCallback(firstContext: CallbackContext): import("rxjs").Observable<CallbackContext>;
processImplicitFlowCallback(hash?: string): import("rxjs").Observable<CallbackContext>;
processRefreshToken(customParams?: {
[key: string]: string | number | boolean;
}): Observable<CallbackContext>;
private codeFlowCallback;
private implicitFlowCallback;
private refreshSessionWithRefreshTokens;
private refreshTokensRequestTokens;
private codeFlowCodeRequest;
private callbackHistoryAndResetJwtKeys;
private callbackStateValidation;
private callbackUser;
private publishAuthorizedState;
private publishUnauthorizedState;
private handleResultErrorFromCallback;
private historyCleanUpTurnedOn;
private resetBrowserHistory;
}): import("rxjs").Observable<CallbackContext>;
}

@@ -8,2 +8,3 @@ import { AuthStateService } from '../authState/auth-state.service';

import { FlowsService } from '../flows/flows.service';
import { ResetAuthDataService } from '../flows/reset-auth-data.service';
import { LoggerService } from '../logging/logger.service';

@@ -16,2 +17,3 @@ import { FlowHelper } from '../utils/flowHelper/flow-helper.service';

private flowsService;
private resetAuthDataService;
private flowsDataService;

@@ -22,6 +24,6 @@ private authStateService;

private implicitFlowCallbackService;
private intervallService;
private intervalService;
private refreshSessionWithIFrameCompletedInternal$;
get refreshSessionWithIFrameCompleted$(): import("rxjs").Observable<CallbackContext>;
constructor(configurationProvider: ConfigurationProvider, iFrameService: IFrameService, flowsService: FlowsService, flowsDataService: FlowsDataService, authStateService: AuthStateService, loggerService: LoggerService, flowHelper: FlowHelper, implicitFlowCallbackService: ImplicitFlowCallbackService, intervallService: IntervallService);
constructor(configurationProvider: ConfigurationProvider, iFrameService: IFrameService, flowsService: FlowsService, resetAuthDataService: ResetAuthDataService, flowsDataService: FlowsDataService, authStateService: AuthStateService, loggerService: LoggerService, flowHelper: FlowHelper, implicitFlowCallbackService: ImplicitFlowCallbackService, intervalService: IntervallService);
getOrCreateIframe(): HTMLIFrameElement;

@@ -28,0 +30,0 @@ isSilentRenewConfigured(): boolean;

@@ -6,4 +6,4 @@ import { ConfigurationProvider } from '../config/config.provider';

logError(message: any, ...args: any[]): void;
logWarning(message: any, ...args: string[]): void;
logDebug(message: any, ...args: string[]): void;
logWarning(message: any, ...args: any[]): void;
logDebug(message: any, ...args: any[]): void;
private currentLogLevelIsEqualOrSmallerThan;

@@ -10,0 +10,0 @@ private logLevelIsSet;

@@ -1,31 +0,17 @@

import { AuthStateService } from '../authState/auth-state.service';
import { AuthWellKnownService } from '../config/auth-well-known.service';
import { Observable } from 'rxjs';
import { ConfigurationProvider } from '../config/config.provider';
import { LoggerService } from '../logging/logger.service';
import { RedirectService } from '../utils/redirect/redirect.service';
import { UrlService } from '../utils/url/url.service';
import { TokenValidationService } from '../validation/token-validation.service';
import { CheckAuthService } from './../check-auth.service';
import { UserService } from './../userData/user-service';
import { AuthOptions } from './auth-options';
import { PopupOptions } from './popup-options';
import { PopUpService } from './popup.service';
import { LoginResponse } from './login-response';
import { ParLoginService } from './par/par-login.service';
import { PopUpLoginService } from './popup/popup-login.service';
import { PopupOptions } from './popup/popup-options';
import { StandardLoginService } from './standard/standard-login.service';
export declare class LoginService {
private loggerService;
private tokenValidationService;
private urlService;
private redirectService;
private configurationProvider;
private authWellKnownService;
private popupService;
private checkAuthService;
private userService;
private authStateService;
constructor(loggerService: LoggerService, tokenValidationService: TokenValidationService, urlService: UrlService, redirectService: RedirectService, configurationProvider: ConfigurationProvider, authWellKnownService: AuthWellKnownService, popupService: PopUpService, checkAuthService: CheckAuthService, userService: UserService, authStateService: AuthStateService);
private parLoginService;
private popUpLoginService;
private standardLoginService;
constructor(configurationProvider: ConfigurationProvider, parLoginService: ParLoginService, popUpLoginService: PopUpLoginService, standardLoginService: StandardLoginService);
login(authOptions?: AuthOptions): void;
loginWithPopUp(authOptions?: AuthOptions, popupOptions?: PopupOptions): import("rxjs").Observable<{
isAuthenticated: boolean;
userData: any;
accessToken: string;
}>;
loginWithPopUp(authOptions?: AuthOptions, popupOptions?: PopupOptions): Observable<LoginResponse>;
}
import { DataService } from '../api/data.service';
import { FlowsService } from '../flows/flows.service';
import { ResetAuthDataService } from '../flows/reset-auth-data.service';
import { CheckSessionService } from '../iframe/check-session.service';

@@ -14,5 +14,5 @@ import { LoggerService } from '../logging/logger.service';

private checkSessionService;
private flowsService;
private resetAuthDataService;
private redirectService;
constructor(dataService: DataService, storagePersistanceService: StoragePersistanceService, loggerService: LoggerService, urlService: UrlService, checkSessionService: CheckSessionService, flowsService: FlowsService, redirectService: RedirectService);
constructor(dataService: DataService, storagePersistanceService: StoragePersistanceService, loggerService: LoggerService, urlService: UrlService, checkSessionService: CheckSessionService, resetAuthDataService: ResetAuthDataService, redirectService: RedirectService);
logoff(urlHandler?: (url: string) => any): void;

@@ -19,0 +19,0 @@ logoffLocal(): void;

@@ -44,7 +44,3 @@ import { Observable } from 'rxjs';

authorize(authOptions?: AuthOptions): void;
authorizeWithPopUp(authOptions?: AuthOptions): Observable<{
isAuthenticated: boolean;
userData: any;
accessToken: string;
}>;
authorizeWithPopUp(authOptions?: AuthOptions): Observable<import("./login/login-response").LoginResponse>;
forceRefreshSession(customParams?: {

@@ -51,0 +47,0 @@ [key: string]: string | number | boolean;

@@ -20,2 +20,3 @@ import { ConfigurationProvider } from '../../config/config.provider';

}): string;
getAuthorizeParUrl(requestUri: string): string;
getAuthorizeUrl(customParams?: {

@@ -27,7 +28,10 @@ [key: string]: string | number | boolean;

createRevocationEndpointBodyRefreshToken(token: any): string;
getRevocationEndpointUrl(): any;
getRevocationEndpointUrl(): string;
createBodyForCodeFlowCodeRequest(code: string): string;
createBodyForCodeFlowRefreshTokensRequest(refreshtoken: string, customParams?: {
createBodyForCodeFlowRefreshTokensRequest(refreshToken: string, customParams?: {
[key: string]: string | number | boolean;
}): string;
createBodyForParCodeFlowRequest(customParamsRequest?: {
[key: string]: string | number | boolean;
}): string;
private createAuthorizeUrl;

@@ -42,2 +46,3 @@ private createUrlImplicitFlowWithSilentRenew;

private getClientId;
private composeCustomParams;
}
import { LoggerService } from '../logging/logger.service';
import { FlowHelper } from '../utils/flowHelper/flow-helper.service';
import { TokenHelperService } from '../utils/tokenHelper/oidc-token-helper.service';
export declare class TokenValidationService {
private tokenHelperService;
private flowHelper;
private loggerService;
static refreshTokenNoncePlaceholder: string;
keyAlgorithms: string[];
constructor(tokenHelperService: TokenHelperService, flowHelper: FlowHelper, loggerService: LoggerService);
constructor(tokenHelperService: TokenHelperService, loggerService: LoggerService);
hasIdTokenExpired(token: string, offsetSeconds?: number): boolean;

@@ -23,3 +21,2 @@ validateIdTokenExpNotExpired(decodedIdToken: string, offsetSeconds?: number): boolean;

validateSignatureIdToken(idToken: any, jwtkeys: any): boolean;
hasConfigValidResponseType(): boolean;
validateIdTokenAtHash(accessToken: any, atHash: any, idTokenAlg: string): boolean;

@@ -26,0 +23,0 @@ generateCodeChallenge(codeVerifier: any): string;

@@ -40,3 +40,3 @@ {

"license": "MIT",
"version": "11.5.1",
"version": "11.6.0",
"description": "Angular Lib for OpenID Connect & OAuth2",

@@ -43,0 +43,0 @@ "schematics": "./schematics/collection.json",

# Angular Lib for OpenID Connect & OAuth2
![Build Status](https://github.com/damienbod/angular-auth-oidc-client/workflows/angular-auth-oidc-client-build/badge.svg?branch=main) [![npm](https://img.shields.io/npm/v/angular-auth-oidc-client.svg)](https://www.npmjs.com/package/angular-auth-oidc-client) [![npm](https://img.shields.io/npm/dm/angular-auth-oidc-client.svg)](https://www.npmjs.com/package/angular-auth-oidc-client) [![npm](https://img.shields.io/npm/l/angular-auth-oidc-client.svg)](https://www.npmjs.com/package/angular-auth-oidc-client) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier) [![Coverage Status](https://coveralls.io/repos/github/damienbod/angular-auth-oidc-client/badge.svg?branch=master)](https://coveralls.io/github/damienbod/angular-auth-oidc-client?branch=master)
![Build Status](https://github.com/damienbod/angular-auth-oidc-client/workflows/angular-auth-oidc-client-build/badge.svg?branch=main) [![npm](https://img.shields.io/npm/v/angular-auth-oidc-client.svg)](https://www.npmjs.com/package/angular-auth-oidc-client) [![npm](https://img.shields.io/npm/dm/angular-auth-oidc-client.svg)](https://www.npmjs.com/package/angular-auth-oidc-client) [![npm](https://img.shields.io/npm/l/angular-auth-oidc-client.svg)](https://www.npmjs.com/package/angular-auth-oidc-client) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier) [![Coverage Status](https://coveralls.io/repos/github/damienbod/angular-auth-oidc-client/badge.svg?branch=main)](https://coveralls.io/github/damienbod/angular-auth-oidc-client?branch=main)

@@ -22,2 +22,3 @@ > OpenID Code Flow with PKCE, Code Flow with refresh tokens, OpenID Connect Implicit Flow

- [OpenID Connect Session Management 1.0](http://openid.net/specs/openid-connect-session-1_0.html)
- [OAuth 2.0 Pushed authorisation requests (PAR) draft](https://tools.ietf.org/html/draft-ietf-oauth-par-06)
- Samples for most of the common use cases

@@ -63,2 +64,3 @@

- [Code flow with popup](https://github.com/damienbod/angular-auth-oidc-client/tree/main/docs/samples.md#popup-code-flow-with-pkce)
- [Code flow with pushed authorization request](https://github.com/damienbod/angular-auth-oidc-client/tree/main/docs/samples.md#code-flow-with-pushed-authorization-request)
- [Azure B2C Code Flow PKCE with silent renew](https://github.com/damienbod/angular-auth-oidc-client/tree/main/docs/samples.md#azure-b2c-code-flow-pkce-with-silent-renew)

@@ -91,3 +93,3 @@ - [Azure AD Code Flow PKCE with silent renew](https://github.com/damienbod/angular-auth-oidc-client/tree/main/docs/samples.md#azure-ad-oidc-code-flow-with-pkce)

- [Migration](https://github.com/damienbod/angular-auth-oidc-client/tree/main/docs/migration.md)
- [Changelog](https://github.com/damienbod/angular-auth-oidc-client/tree/master/CHANGELOG.md)
- [Changelog](https://github.com/damienbod/angular-auth-oidc-client/tree/main/CHANGELOG.md)

@@ -94,0 +96,0 @@ ## Quickstart

@@ -8,3 +8,3 @@ "use strict";

name: 'angular-auth-oidc-client',
version: '11.5.1',
version: '11.6.0',
},

@@ -11,0 +11,0 @@ ];

@@ -5,4 +5,5 @@ declare const DEFAULT_CONFIG = "{\n stsServer: '<stsUrlOrTenantId>',\n redirectUrl: window.location.origin,\n postLogoutRedirectUri: window.location.origin,\n clientId: 'please-enter-clientId',\n scope: 'please-enter-scopes', // 'openid profile offline_access ' + your scopes\n responseType: 'code',\n silentRenew: true,\n useRefreshToken: true,\n renewTimeBeforeTokenExpiresInSeconds: 30,\n }";

declare const AZURE_AD_REFRESH_TOKENS = "{\n stsServer: 'https://login.microsoftonline.com/<stsUrlOrTenantId>/v2.0',\n authWellknownEndpoint: 'https://login.microsoftonline.com/common/v2.0',\n redirectUrl: window.location.origin,\n clientId: 'please-enter-clientId',\n scope: 'please-enter-scopes', // 'openid profile offline_access ' + your scopes\n responseType: 'code',\n silentRenew: true,\n useRefreshToken: true,\n maxIdTokenIatOffsetAllowedInSeconds: 600,\n issValidationOff: false,\n autoUserinfo: false,\n }";
declare const OAUTH_PAR = "{\n stsServer: '<stsUrlOrTenantId>',\n redirectUrl: window.location.origin,\n postLogoutRedirectUri: window.location.origin,\n clientId: 'please-enter-clientId',\n usePushedAuthorisationRequests: true,\n scope: 'please-enter-scopes', // 'openid profile offline_access ' + your scopes\n responseType: 'code',\n silentRenew: true,\n useRefreshToken: true,\n ignoreNonceAfterRefresh: true,\n customParams: {\n prompt: 'consent', // login, consent\n },\n }";
declare const AUTH_0 = "{\n stsServer: '<stsUrlOrTenantId>',\n redirectUrl: window.location.origin,\n clientId: 'please-enter-auth0-clientId',\n scope: 'openid profile offline_access',\n responseType: 'code',\n silentRenew: true,\n useRefreshToken: true,\n }";
declare const OIDC_PLAIN = "{\n stsServer: '<stsUrlOrTenantId>',\n redirectUrl: window.location.origin,\n postLogoutRedirectUri: window.location.origin,\n clientId: 'please-enter-clientId',\n scope: 'please-enter-scopes', // 'openid profile ' + your scopes\n responseType: 'code',\n silentRenew: false,\n renewTimeBeforeTokenExpiresInSeconds: 10,\n }";
export { DEFAULT_CONFIG, AZURE_AD_SILENT_RENEW, IFRAME_SILENT_RENEW, AZURE_AD_REFRESH_TOKENS, OIDC_PLAIN, AUTH_0 };
export { DEFAULT_CONFIG, AZURE_AD_SILENT_RENEW, IFRAME_SILENT_RENEW, AZURE_AD_REFRESH_TOKENS, OIDC_PLAIN, AUTH_0, OAUTH_PAR };
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.AUTH_0 = exports.OIDC_PLAIN = exports.AZURE_AD_REFRESH_TOKENS = exports.IFRAME_SILENT_RENEW = exports.AZURE_AD_SILENT_RENEW = exports.DEFAULT_CONFIG = void 0;
exports.OAUTH_PAR = exports.AUTH_0 = exports.OIDC_PLAIN = exports.AZURE_AD_REFRESH_TOKENS = exports.IFRAME_SILENT_RENEW = exports.AZURE_AD_SILENT_RENEW = exports.DEFAULT_CONFIG = void 0;
const DEFAULT_CONFIG = `{

@@ -56,2 +56,18 @@ stsServer: '<stsUrlOrTenantId>',

exports.AZURE_AD_REFRESH_TOKENS = AZURE_AD_REFRESH_TOKENS;
const OAUTH_PAR = `{
stsServer: '<stsUrlOrTenantId>',
redirectUrl: window.location.origin,
postLogoutRedirectUri: window.location.origin,
clientId: 'please-enter-clientId',
usePushedAuthorisationRequests: true,
scope: 'please-enter-scopes', // 'openid profile offline_access ' + your scopes
responseType: 'code',
silentRenew: true,
useRefreshToken: true,
ignoreNonceAfterRefresh: true,
customParams: {
prompt: 'consent', // login, consent
},
}`;
exports.OAUTH_PAR = OAUTH_PAR;
const AUTH_0 = `{

@@ -58,0 +74,0 @@ stsServer: '<stsUrlOrTenantId>',

@@ -47,2 +47,6 @@ "use strict";

}
case schema_1.FlowType.OAuthPushAuthorizationRequestsUsingRefreshTokens: {
config = configs_1.OAUTH_PAR;
break;
}
case schema_1.FlowType.OidcCodeFlowPkceUsingIframeSilentRenew: {

@@ -49,0 +53,0 @@ config = configs_1.IFRAME_SILENT_RENEW;

@@ -9,2 +9,3 @@ export interface Schema {

OidcCodeFlowPkceUsingRefreshTokens = "OIDC Code Flow PKCE using refresh tokens",
OAuthPushAuthorizationRequestsUsingRefreshTokens = "OAuth Push authorization requests using refresh tokens",
OidcCodeFlowPkceUsingIframeSilentRenew = "OIDC Code Flow PKCE using iframe silent renew",

@@ -11,0 +12,0 @@ OidcCodeFlowPkceUsingIframeSilentRenewGettingConfigFromHttp = "OIDC Code Flow PKCE using iframe silent renew getting config from http",

@@ -9,2 +9,3 @@ "use strict";

FlowType["OidcCodeFlowPkceUsingRefreshTokens"] = "OIDC Code Flow PKCE using refresh tokens";
FlowType["OAuthPushAuthorizationRequestsUsingRefreshTokens"] = "OAuth Push authorization requests using refresh tokens";
FlowType["OidcCodeFlowPkceUsingIframeSilentRenew"] = "OIDC Code Flow PKCE using iframe silent renew";

@@ -11,0 +12,0 @@ FlowType["OidcCodeFlowPkceUsingIframeSilentRenewGettingConfigFromHttp"] = "OIDC Code Flow PKCE using iframe silent renew getting config from http";

@@ -14,2 +14,3 @@ {

"OIDC Code Flow PKCE using refresh tokens",
"OAuth Push authorization requests using refresh tokens",
"OIDC Code Flow PKCE using iframe silent renew",

@@ -16,0 +17,0 @@ "OIDC Code Flow PKCE using iframe silent renew getting config from http",

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc