Socket
Socket
Sign inDemoInstall

@azure/msal-angular

Package Overview
Dependencies
Maintainers
3
Versions
105
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@azure/msal-angular - npm Package Compare versions

Comparing version 1.0.0-beta.3 to 1.0.0-beta.4

2

azure-msal-angular.metadata.json

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

{"__symbolic":"module","version":4,"metadata":{"BroadcastService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"broadcast":[{"__symbolic":"method"}],"getMSALSubject":[{"__symbolic":"method"}],"getMSALItem":[{"__symbolic":"method"}],"subscribe":[{"__symbolic":"method"}]}},"MsalService":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"msal","name":"UserAgentApplication","line":31,"character":33},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":30,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":34,"character":9},"arguments":[{"__symbolic":"reference","name":"MSAL_CONFIG"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":35,"character":9},"arguments":[{"__symbolic":"reference","name":"MSAL_CONFIG_ANGULAR"}]}],null,null],"parameters":[{"__symbolic":"reference","module":"msal","name":"Configuration","line":34,"character":49},{"__symbolic":"reference","name":"MsalAngularConfiguration"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":36,"character":24},{"__symbolic":"reference","name":"BroadcastService"}]}],"isUnprotectedResource":[{"__symbolic":"method"}],"isEmpty":[{"__symbolic":"method"}],"getCacheStorage":[{"__symbolic":"method"}],"loginPopup":[{"__symbolic":"method"}],"acquireTokenSilent":[{"__symbolic":"method"}],"acquireTokenPopup":[{"__symbolic":"method"}],"handleRedirectCallback":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"clearCacheForScope":[{"__symbolic":"method"}],"getScopesForEndpoint":[{"__symbolic":"method"}]}},"MsalGuard":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":13,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":17,"character":9},"arguments":[{"__symbolic":"reference","name":"MSAL_CONFIG"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":18,"character":9},"arguments":[{"__symbolic":"reference","name":"MSAL_CONFIG_ANGULAR"}]}],null,null,null,null,null,null],"parameters":[{"__symbolic":"reference","module":"msal","name":"Configuration","line":17,"character":49},{"__symbolic":"reference","name":"MsalAngularConfiguration"},{"__symbolic":"reference","name":"MsalService"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":20,"character":24},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":21,"character":32},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":22,"character":26},{"__symbolic":"reference","module":"@angular/common","name":"PlatformLocation","line":23,"character":34},{"__symbolic":"reference","name":"BroadcastService"}]}],"canActivate":[{"__symbolic":"method"}]}},"MsalInterceptor":{"__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":"MsalService"},{"__symbolic":"reference","name":"BroadcastService"}]}],"intercept":[{"__symbolic":"method"}]}},"MsalModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":9,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":10,"character":12}],"declarations":[],"providers":[{"__symbolic":"reference","name":"MsalGuard"},{"__symbolic":"reference","name":"BroadcastService"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config","angularConfig"],"defaults":[null,{"__symbolic":"reference","name":"ɵa"}],"value":{"ngModule":{"__symbolic":"reference","name":"MsalModule"},"providers":[{"provide":{"__symbolic":"reference","name":"MSAL_CONFIG"},"useValue":{"__symbolic":"reference","name":"config"}},{"provide":{"__symbolic":"reference","name":"MSAL_CONFIG_ANGULAR"},"useValue":{"__symbolic":"reference","name":"angularConfig"}},{"__symbolic":"reference","name":"MsalService"}]}}}},"ɵa":{"consentScopes":[],"popUp":false,"extraQueryParameters":{},"unprotectedResources":[],"protectedResourceMap":[]},"MsalAngularConfiguration":{"__symbolic":"interface"},"MSAL_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":2,"character":31},"arguments":["MSAL_CONFIG"]},"MSAL_CONFIG_ANGULAR":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":3,"character":39},"arguments":["MSAL_CONFIG_ANGULAR"]}},"origins":{"BroadcastService":"./src/broadcast.service","MsalService":"./src/msal.service","MsalGuard":"./src/msal-guard.service","MsalInterceptor":"./src/msal.interceptor","MsalModule":"./src/msal.module","ɵa":"./src/msal-angular.configuration","MsalAngularConfiguration":"./src/msal-angular.configuration","MSAL_CONFIG":"./src/constants","MSAL_CONFIG_ANGULAR":"./src/constants"},"importAs":"@azure/msal-angular"}
{"__symbolic":"module","version":4,"metadata":{"BroadcastService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"broadcast":[{"__symbolic":"method"}],"getMSALSubject":[{"__symbolic":"method"}],"getMSALItem":[{"__symbolic":"method"}],"subscribe":[{"__symbolic":"method"}]}},"MsalService":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"msal","name":"UserAgentApplication","line":31,"character":33},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":30,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":34,"character":9},"arguments":[{"__symbolic":"reference","name":"MSAL_CONFIG"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":35,"character":9},"arguments":[{"__symbolic":"reference","name":"MSAL_CONFIG_ANGULAR"}]}],null,null],"parameters":[{"__symbolic":"reference","module":"msal","name":"Configuration","line":34,"character":49},{"__symbolic":"reference","name":"MsalAngularConfiguration"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":36,"character":24},{"__symbolic":"reference","name":"BroadcastService"}]}],"isUnprotectedResource":[{"__symbolic":"method"}],"isEmpty":[{"__symbolic":"method"}],"getCacheStorage":[{"__symbolic":"method"}],"loginPopup":[{"__symbolic":"method"}],"acquireTokenSilent":[{"__symbolic":"method"}],"acquireTokenPopup":[{"__symbolic":"method"}],"handleRedirectCallback":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"clearCacheForScope":[{"__symbolic":"method"}],"getScopesForEndpoint":[{"__symbolic":"method"}]}},"MsalGuard":{"__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":19,"character":9},"arguments":[{"__symbolic":"reference","name":"MSAL_CONFIG"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":20,"character":9},"arguments":[{"__symbolic":"reference","name":"MSAL_CONFIG_ANGULAR"}]}],null,null,null,null,null,null],"parameters":[{"__symbolic":"reference","module":"msal","name":"Configuration","line":19,"character":49},{"__symbolic":"reference","name":"MsalAngularConfiguration"},{"__symbolic":"reference","name":"MsalService"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":22,"character":24},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":23,"character":32},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":24,"character":26},{"__symbolic":"reference","module":"@angular/common","name":"PlatformLocation","line":25,"character":34},{"__symbolic":"reference","name":"BroadcastService"}]}],"canActivate":[{"__symbolic":"method"}]}},"MsalInterceptor":{"__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":"MsalService"},{"__symbolic":"reference","name":"BroadcastService"}]}],"intercept":[{"__symbolic":"method"}]}},"MsalModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":9,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":10,"character":12}],"declarations":[],"providers":[{"__symbolic":"reference","name":"MsalGuard"},{"__symbolic":"reference","name":"BroadcastService"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config","angularConfig"],"defaults":[null,{"__symbolic":"reference","name":"ɵa"}],"value":{"ngModule":{"__symbolic":"reference","name":"MsalModule"},"providers":[{"provide":{"__symbolic":"reference","name":"MSAL_CONFIG"},"useValue":{"__symbolic":"reference","name":"config"}},{"provide":{"__symbolic":"reference","name":"MSAL_CONFIG_ANGULAR"},"useValue":{"__symbolic":"reference","name":"angularConfig"}},{"__symbolic":"reference","name":"MsalService"}]}}}},"ɵa":{"consentScopes":[],"popUp":false,"extraQueryParameters":{},"unprotectedResources":[],"protectedResourceMap":[]},"MsalAngularConfiguration":{"__symbolic":"interface"},"MSAL_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":2,"character":31},"arguments":["MSAL_CONFIG"]},"MSAL_CONFIG_ANGULAR":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":3,"character":39},"arguments":["MSAL_CONFIG_ANGULAR"]}},"origins":{"BroadcastService":"./src/broadcast.service","MsalService":"./src/msal.service","MsalGuard":"./src/msal-guard.service","MsalInterceptor":"./src/msal.interceptor","MsalModule":"./src/msal.module","ɵa":"./src/msal-angular.configuration","MsalAngularConfiguration":"./src/msal-angular.configuration","MSAL_CONFIG":"./src/constants","MSAL_CONFIG_ANGULAR":"./src/constants"},"importAs":"@azure/msal-angular"}
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('rxjs/operators'), require('msal'), require('@angular/router'), require('msal/lib-commonjs/utils/UrlUtils'), require('@angular/common'), require('@angular/common/http')) :
typeof define === 'function' && define.amd ? define('@azure/msal-angular', ['exports', '@angular/core', 'rxjs', 'rxjs/operators', 'msal', '@angular/router', 'msal/lib-commonjs/utils/UrlUtils', '@angular/common', '@angular/common/http'], factory) :
(global = global || self, factory((global.azure = global.azure || {}, global.azure['msal-angular'] = {}), global.ng.core, global.rxjs, global.rxjs.operators, global.msal, global.ng.router, global.UrlUtils, global.ng.common, global.ng.common.http));
}(this, (function (exports, core, rxjs, operators, msal, router, UrlUtils, common, http) { 'use strict';
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('rxjs/operators'), require('msal'), require('@angular/router'), require('msal/lib-commonjs/utils/UrlUtils'), require('@angular/common'), require('msal/lib-commonjs/utils/WindowUtils'), require('@angular/common/http')) :
typeof define === 'function' && define.amd ? define('@azure/msal-angular', ['exports', '@angular/core', 'rxjs', 'rxjs/operators', 'msal', '@angular/router', 'msal/lib-commonjs/utils/UrlUtils', '@angular/common', 'msal/lib-commonjs/utils/WindowUtils', '@angular/common/http'], factory) :
(global = global || self, factory((global.azure = global.azure || {}, global.azure['msal-angular'] = {}), global.ng.core, global.rxjs, global.rxjs.operators, global.msal, global.ng.router, global.UrlUtils, global.ng.common, global.WindowUtils, global.ng.common.http));
}(this, (function (exports, core, rxjs, operators, msal, router, UrlUtils, common, WindowUtils, http) { 'use strict';

@@ -336,3 +336,5 @@ /*! *****************************************************************************

MsalService.prototype.isUnprotectedResource = function (url) {
var unprotectedResources = (this.msalConfig.framework && this.msalConfig.framework.unprotectedResources) || this.msalAngularConfig.unprotectedResources || [];
var frameworkUnprotectedResources = this.msalConfig.framework && this.msalConfig.framework.unprotectedResources;
var configUnprotectedResources = this.msalAngularConfig.unprotectedResources || [];
var unprotectedResources = frameworkUnprotectedResources && frameworkUnprotectedResources.length ? frameworkUnprotectedResources : configUnprotectedResources;
return unprotectedResources.some(function (resource) { return url.indexOf(resource) > -1; });

@@ -430,6 +432,7 @@ };

}
if (this.msalConfig.framework && this.msalConfig.framework.protectedResourceMap) {
var frameworkProtectedResourceMap = this.msalConfig.framework && this.msalConfig.framework.protectedResourceMap;
if (frameworkProtectedResourceMap) {
this.getLogger().info("msalConfig.framework.protectedResourceMap is deprecated, use msalAngularConfig.protectedResourceMap");
}
var protectedResourceMap = (this.msalConfig.framework && this.msalConfig.framework.protectedResourceMap) || new Map(this.msalAngularConfig.protectedResourceMap);
var protectedResourceMap = frameworkProtectedResourceMap && frameworkProtectedResourceMap.size ? frameworkProtectedResourceMap : new Map(this.msalAngularConfig.protectedResourceMap);
// process all protected resources and send the matched one

@@ -488,2 +491,8 @@ var keyForEndpoint = Array.from(protectedResourceMap.keys()).find(function (key) { return endpoint.indexOf(key) > -1; });

this.authService.getLogger().verbose("location change event from old url to new url");
// If a page with MSAL Guard is set as the redirect for acquireTokenSilent,
// short-circuit to prevent redirecting or popups.
if (UrlUtils.UrlUtils.urlContainsHash(window.location.hash) && WindowUtils.WindowUtils.isInIframe()) {
this.authService.getLogger().warning("redirectUri set to page with MSAL Guard. It is recommended to not set redirectUri to a page that requires authentication.");
return false;
}
if (!this.authService.getAccount()) {

@@ -498,3 +507,5 @@ if (this.msalAngularConfig.popUp) {

}
var routePath = "" + window.location.origin + state.url;
this.authService.loginRedirect({
redirectStartPage: routePath,
scopes: this.msalAngularConfig.consentScopes,

@@ -501,0 +512,0 @@ extraQueryParameters: this.msalAngularConfig.extraQueryParameters

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

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs"),require("rxjs/operators"),require("msal"),require("@angular/router"),require("msal/lib-commonjs/utils/UrlUtils"),require("@angular/common"),require("@angular/common/http")):"function"==typeof define&&define.amd?define("@azure/msal-angular",["exports","@angular/core","rxjs","rxjs/operators","msal","@angular/router","msal/lib-commonjs/utils/UrlUtils","@angular/common","@angular/common/http"],t):t(((e=e||self).azure=e.azure||{},e.azure["msal-angular"]={}),e.ng.core,e.rxjs,e.rxjs.operators,e.msal,e.ng.router,e.UrlUtils,e.ng.common,e.ng.common.http)}(this,(function(e,t,r,o,n,a,s,i,c){"use strict";
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs"),require("rxjs/operators"),require("msal"),require("@angular/router"),require("msal/lib-commonjs/utils/UrlUtils"),require("@angular/common"),require("msal/lib-commonjs/utils/WindowUtils"),require("@angular/common/http")):"function"==typeof define&&define.amd?define("@azure/msal-angular",["exports","@angular/core","rxjs","rxjs/operators","msal","@angular/router","msal/lib-commonjs/utils/UrlUtils","@angular/common","msal/lib-commonjs/utils/WindowUtils","@angular/common/http"],t):t(((e=e||self).azure=e.azure||{},e.azure["msal-angular"]={}),e.ng.core,e.rxjs,e.rxjs.operators,e.msal,e.ng.router,e.UrlUtils,e.ng.common,e.WindowUtils,e.ng.common.http)}(this,(function(e,t,r,o,n,a,i,s,c,u){"use strict";
/*! *****************************************************************************

@@ -15,3 +15,3 @@ Copyright (c) Microsoft Corporation. All rights reserved.

and limitations under the License.
***************************************************************************** */var u=function(e,t){return(u=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};var l=function(){return(l=Object.assign||function(e){for(var t,r=1,o=arguments.length;r<o;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}).apply(this,arguments)};function p(e,t,r,o){var n,a=arguments.length,s=a<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,o);else for(var i=e.length-1;i>=0;i--)(n=e[i])&&(s=(a<3?n(s):a>3?n(t,r,s):n(t,r))||s);return a>3&&s&&Object.defineProperty(t,r,s),s}function f(e,t){return function(r,o){t(r,o,e)}}var g=function(){function e(){this._msalSubject=new r.BehaviorSubject(1),this.msalItem$=this._msalSubject.asObservable()}return e.prototype.broadcast=function(e,t){this._msalSubject.next({type:e,payload:t})},e.prototype.getMSALSubject=function(){return this._msalSubject},e.prototype.getMSALItem=function(){return this.msalItem$},e.prototype.subscribe=function(e,t){return this.msalItem$.pipe(o.filter((function(t){return t.type===e})),o.map((function(e){return e.payload}))).subscribe(t)},e=p([t.Injectable()],e)}(),h=function(){function e(e,t,r){this._error="",this._errorDesc="",this._scopes="",this._error=e,t&&(this._errorDesc=t),r&&(this._scopes=r)}return Object.defineProperty(e.prototype,"error",{get:function(){return this._error},set:function(e){this._error=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"errorDesc",{get:function(){return this._errorDesc},set:function(e){this._errorDesc=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"scopes",{get:function(){return this._scopes},set:function(e){this._scopes=e},enumerable:!0,configurable:!0}),e}(),d=new t.InjectionToken("MSAL_CONFIG"),m=new t.InjectionToken("MSAL_CONFIG_ANGULAR"),y=function(e){return l(l({},e),{framework:l(l({},e.framework),{isAngular:!0})})},b=function(e){function r(t,r,o,n){var a=e.call(this,y(t))||this;return a.msalConfig=t,a.msalAngularConfig=r,a.router=o,a.broadcastService=n,window.addEventListener("msal:popUpHashChanged",(function(e){a.getLogger().verbose("popUpHashChanged ")})),window.addEventListener("msal:popUpClosed",(function(e){var t=e.detail.split("|"),r=new h(t[0],t[1]);a.getLoginInProgress()?(n.broadcast("msal:loginFailure",r),a.setloginInProgress(!1)):a.getAcquireTokenInProgress()&&(n.broadcast("msal:acquireTokenFailure",r),a.setAcquireTokenInProgress(!1))})),a.router.events.subscribe((function(e){for(var t=0;t<o.config.length;t++)o.config[t].canActivate||a.msalAngularConfig.unprotectedResources&&(a.isUnprotectedResource(o.config[t].path)||a.isEmpty(o.config[t].path)||a.msalAngularConfig.unprotectedResources.push(o.config[t].path))})),a}return function(e,t){function r(){this.constructor=e}u(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}(r,e),r.prototype.isUnprotectedResource=function(e){return(this.msalConfig.framework&&this.msalConfig.framework.unprotectedResources||this.msalAngularConfig.unprotectedResources||[]).some((function(t){return e.indexOf(t)>-1}))},r.prototype.isEmpty=function(e){return void 0===e||!e||0===e.length},r.prototype.getCacheStorage=function(){return this.cacheStorage},r.prototype.loginPopup=function(t){var r=this;return e.prototype.loginPopup.call(this,t).then((function(e){return r.broadcastService.broadcast("msal:loginSuccess",e),e})).catch((function(e){throw r.broadcastService.broadcast("msal:loginFailure",e),r.getLogger().error("Error during login:\n"+e.errorMessage),e}))},r.prototype.acquireTokenSilent=function(t){var r=this;return e.prototype.acquireTokenSilent.call(this,t).then((function(e){return r.broadcastService.broadcast("msal:acquireTokenSuccess",e),e})).catch((function(e){throw r.broadcastService.broadcast("msal:acquireTokenFailure",e),r.getLogger().error("Error when acquiring token for scopes: "+t.scopes+" "+e),e}))},r.prototype.acquireTokenPopup=function(t){var r=this;return e.prototype.acquireTokenPopup.call(this,t).then((function(e){return r.broadcastService.broadcast("msal:acquireTokenSuccess",e),e})).catch((function(e){throw r.broadcastService.broadcast("msal:acquireTokenFailure",e),r.getLogger().error("Error when acquiring token for scopes : "+t.scopes+" "+e),e}))},r.prototype.handleRedirectCallback=function(t,r){var o=this;e.prototype.handleRedirectCallback.call(this,(function(e,n){n?("id_token"===n.tokenType?o.broadcastService.broadcast("msal:loginSuccess",n):o.broadcastService.broadcast("msal:acquireTokenSuccess",n),r?t(n):t(null,n)):e&&("id_token"===n.tokenType?o.broadcastService.broadcast("msal:loginFailure",e):o.broadcastService.broadcast("msal:acquireTokenFailure",e),r?r(e,n.accountState):t(e))}))},r.prototype.clearCacheForScope=function(t){return e.prototype.clearCacheForScope.call(this,t)},r.prototype.getScopesForEndpoint=function(t){if(this.msalConfig.framework&&this.msalConfig.framework.unprotectedResources&&this.getLogger().info("msalConfig.framework.unprotectedResources is deprecated, use msalAngularConfig.unprotectedResources"),this.isUnprotectedResource(t))return null;this.msalConfig.framework&&this.msalConfig.framework.protectedResourceMap&&this.getLogger().info("msalConfig.framework.protectedResourceMap is deprecated, use msalAngularConfig.protectedResourceMap");var r=this.msalConfig.framework&&this.msalConfig.framework.protectedResourceMap||new Map(this.msalAngularConfig.protectedResourceMap),o=Array.from(r.keys()).find((function(e){return t.indexOf(e)>-1}));return o?r.get(o):t.indexOf("http://")>-1||t.indexOf("https://")>-1?s.UrlUtils.getHostFromUri(t)===s.UrlUtils.getHostFromUri(e.prototype.getRedirectUri.call(this))?new Array(this.msalConfig.auth.clientId):null:new Array(this.msalConfig.auth.clientId)},r.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[d]}]},{type:void 0,decorators:[{type:t.Inject,args:[m]}]},{type:a.Router},{type:g}]},r=p([t.Injectable(),f(0,t.Inject(d)),f(1,t.Inject(m))],r)}(n.UserAgentApplication),v=function(){function e(e,t,r,o,n,a,s,i){this.msalConfig=e,this.msalAngularConfig=t,this.authService=r,this.router=o,this.activatedRoute=n,this.location=a,this.platformLocation=s,this.broadcastService=i}return e.prototype.canActivate=function(e,t){var r=this;return this.authService.getLogger().verbose("location change event from old url to new url"),this.authService.getAccount()?this.authService.acquireTokenSilent({scopes:[this.msalConfig.auth.clientId]}).then((function(e){return r.broadcastService.broadcast("msal:loginSuccess",e),!0})).catch((function(e){return r.broadcastService.broadcast("msal:loginFailure",e),!1})):this.msalAngularConfig.popUp?this.authService.loginPopup({scopes:this.msalAngularConfig.consentScopes,extraQueryParameters:this.msalAngularConfig.extraQueryParameters}).then((function(){return!0})).catch((function(){return!1})):void this.authService.loginRedirect({scopes:this.msalAngularConfig.consentScopes,extraQueryParameters:this.msalAngularConfig.extraQueryParameters})},e.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[d]}]},{type:void 0,decorators:[{type:t.Inject,args:[m]}]},{type:b},{type:a.Router},{type:a.ActivatedRoute},{type:i.Location},{type:i.PlatformLocation},{type:g}]},e=p([t.Injectable(),f(0,t.Inject(d)),f(1,t.Inject(m))],e)}(),S=function(){function e(e,t){this.auth=e,this.broadcastService=t}return e.prototype.intercept=function(e,t){var n,a=this,s=this.auth.getScopesForEndpoint(e.url);return this.auth.getLogger().verbose("Url: "+e.url+" maps to scopes: "+s),s?r.from(this.auth.acquireTokenSilent({scopes:s}).then((function(t){n=t.accessToken;var r="Bearer "+t.accessToken;return e.clone({setHeaders:{Authorization:r}})}))).pipe(o.mergeMap((function(e){return t.handle(e)})),o.tap((function(e){}),(function(e){e instanceof c.HttpErrorResponse&&401===e.status&&(a.auth.clearCacheForScope(n),a.broadcastService.broadcast("msal:notAuthorized",e.message))}))):t.handle(e)},e.ctorParameters=function(){return[{type:b},{type:g}]},e=p([t.Injectable()],e)}(),C={consentScopes:[],popUp:!1,extraQueryParameters:{},unprotectedResources:[],protectedResourceMap:[]},j=function(){function e(){}var r;return r=e,e.forRoot=function(e,t){return void 0===t&&(t=C),{ngModule:r,providers:[{provide:d,useValue:e},{provide:m,useValue:t},b]}},e=r=p([t.NgModule({imports:[i.CommonModule],declarations:[],providers:[v,g]})],e)}();e.BroadcastService=g,e.MSAL_CONFIG=d,e.MSAL_CONFIG_ANGULAR=m,e.MsalGuard=v,e.MsalInterceptor=S,e.MsalModule=j,e.MsalService=b,e.ɵa=C,Object.defineProperty(e,"__esModule",{value:!0})}));
***************************************************************************** */var l=function(e,t){return(l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};var p=function(){return(p=Object.assign||function(e){for(var t,r=1,o=arguments.length;r<o;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}).apply(this,arguments)};function f(e,t,r,o){var n,a=arguments.length,i=a<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var s=e.length-1;s>=0;s--)(n=e[s])&&(i=(a<3?n(i):a>3?n(t,r,i):n(t,r))||i);return a>3&&i&&Object.defineProperty(t,r,i),i}function g(e,t){return function(r,o){t(r,o,e)}}var h=function(){function e(){this._msalSubject=new r.BehaviorSubject(1),this.msalItem$=this._msalSubject.asObservable()}return e.prototype.broadcast=function(e,t){this._msalSubject.next({type:e,payload:t})},e.prototype.getMSALSubject=function(){return this._msalSubject},e.prototype.getMSALItem=function(){return this.msalItem$},e.prototype.subscribe=function(e,t){return this.msalItem$.pipe(o.filter((function(t){return t.type===e})),o.map((function(e){return e.payload}))).subscribe(t)},e=f([t.Injectable()],e)}(),d=function(){function e(e,t,r){this._error="",this._errorDesc="",this._scopes="",this._error=e,t&&(this._errorDesc=t),r&&(this._scopes=r)}return Object.defineProperty(e.prototype,"error",{get:function(){return this._error},set:function(e){this._error=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"errorDesc",{get:function(){return this._errorDesc},set:function(e){this._errorDesc=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"scopes",{get:function(){return this._scopes},set:function(e){this._scopes=e},enumerable:!0,configurable:!0}),e}(),m=new t.InjectionToken("MSAL_CONFIG"),y=new t.InjectionToken("MSAL_CONFIG_ANGULAR"),b=function(e){return p(p({},e),{framework:p(p({},e.framework),{isAngular:!0})})},v=function(e){function r(t,r,o,n){var a=e.call(this,b(t))||this;return a.msalConfig=t,a.msalAngularConfig=r,a.router=o,a.broadcastService=n,window.addEventListener("msal:popUpHashChanged",(function(e){a.getLogger().verbose("popUpHashChanged ")})),window.addEventListener("msal:popUpClosed",(function(e){var t=e.detail.split("|"),r=new d(t[0],t[1]);a.getLoginInProgress()?(n.broadcast("msal:loginFailure",r),a.setloginInProgress(!1)):a.getAcquireTokenInProgress()&&(n.broadcast("msal:acquireTokenFailure",r),a.setAcquireTokenInProgress(!1))})),a.router.events.subscribe((function(e){for(var t=0;t<o.config.length;t++)o.config[t].canActivate||a.msalAngularConfig.unprotectedResources&&(a.isUnprotectedResource(o.config[t].path)||a.isEmpty(o.config[t].path)||a.msalAngularConfig.unprotectedResources.push(o.config[t].path))})),a}return function(e,t){function r(){this.constructor=e}l(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}(r,e),r.prototype.isUnprotectedResource=function(e){var t=this.msalConfig.framework&&this.msalConfig.framework.unprotectedResources,r=this.msalAngularConfig.unprotectedResources||[];return(t&&t.length?t:r).some((function(t){return e.indexOf(t)>-1}))},r.prototype.isEmpty=function(e){return void 0===e||!e||0===e.length},r.prototype.getCacheStorage=function(){return this.cacheStorage},r.prototype.loginPopup=function(t){var r=this;return e.prototype.loginPopup.call(this,t).then((function(e){return r.broadcastService.broadcast("msal:loginSuccess",e),e})).catch((function(e){throw r.broadcastService.broadcast("msal:loginFailure",e),r.getLogger().error("Error during login:\n"+e.errorMessage),e}))},r.prototype.acquireTokenSilent=function(t){var r=this;return e.prototype.acquireTokenSilent.call(this,t).then((function(e){return r.broadcastService.broadcast("msal:acquireTokenSuccess",e),e})).catch((function(e){throw r.broadcastService.broadcast("msal:acquireTokenFailure",e),r.getLogger().error("Error when acquiring token for scopes: "+t.scopes+" "+e),e}))},r.prototype.acquireTokenPopup=function(t){var r=this;return e.prototype.acquireTokenPopup.call(this,t).then((function(e){return r.broadcastService.broadcast("msal:acquireTokenSuccess",e),e})).catch((function(e){throw r.broadcastService.broadcast("msal:acquireTokenFailure",e),r.getLogger().error("Error when acquiring token for scopes : "+t.scopes+" "+e),e}))},r.prototype.handleRedirectCallback=function(t,r){var o=this;e.prototype.handleRedirectCallback.call(this,(function(e,n){n?("id_token"===n.tokenType?o.broadcastService.broadcast("msal:loginSuccess",n):o.broadcastService.broadcast("msal:acquireTokenSuccess",n),r?t(n):t(null,n)):e&&("id_token"===n.tokenType?o.broadcastService.broadcast("msal:loginFailure",e):o.broadcastService.broadcast("msal:acquireTokenFailure",e),r?r(e,n.accountState):t(e))}))},r.prototype.clearCacheForScope=function(t){return e.prototype.clearCacheForScope.call(this,t)},r.prototype.getScopesForEndpoint=function(t){if(this.msalConfig.framework&&this.msalConfig.framework.unprotectedResources&&this.getLogger().info("msalConfig.framework.unprotectedResources is deprecated, use msalAngularConfig.unprotectedResources"),this.isUnprotectedResource(t))return null;var r=this.msalConfig.framework&&this.msalConfig.framework.protectedResourceMap;r&&this.getLogger().info("msalConfig.framework.protectedResourceMap is deprecated, use msalAngularConfig.protectedResourceMap");var o=r&&r.size?r:new Map(this.msalAngularConfig.protectedResourceMap),n=Array.from(o.keys()).find((function(e){return t.indexOf(e)>-1}));return n?o.get(n):t.indexOf("http://")>-1||t.indexOf("https://")>-1?i.UrlUtils.getHostFromUri(t)===i.UrlUtils.getHostFromUri(e.prototype.getRedirectUri.call(this))?new Array(this.msalConfig.auth.clientId):null:new Array(this.msalConfig.auth.clientId)},r.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[m]}]},{type:void 0,decorators:[{type:t.Inject,args:[y]}]},{type:a.Router},{type:h}]},r=f([t.Injectable(),g(0,t.Inject(m)),g(1,t.Inject(y))],r)}(n.UserAgentApplication),S=function(){function e(e,t,r,o,n,a,i,s){this.msalConfig=e,this.msalAngularConfig=t,this.authService=r,this.router=o,this.activatedRoute=n,this.location=a,this.platformLocation=i,this.broadcastService=s}return e.prototype.canActivate=function(e,t){var r=this;if(this.authService.getLogger().verbose("location change event from old url to new url"),i.UrlUtils.urlContainsHash(window.location.hash)&&c.WindowUtils.isInIframe())return this.authService.getLogger().warning("redirectUri set to page with MSAL Guard. It is recommended to not set redirectUri to a page that requires authentication."),!1;if(this.authService.getAccount())return this.authService.acquireTokenSilent({scopes:[this.msalConfig.auth.clientId]}).then((function(e){return r.broadcastService.broadcast("msal:loginSuccess",e),!0})).catch((function(e){return r.broadcastService.broadcast("msal:loginFailure",e),!1}));if(this.msalAngularConfig.popUp)return this.authService.loginPopup({scopes:this.msalAngularConfig.consentScopes,extraQueryParameters:this.msalAngularConfig.extraQueryParameters}).then((function(){return!0})).catch((function(){return!1}));var o=""+window.location.origin+t.url;this.authService.loginRedirect({redirectStartPage:o,scopes:this.msalAngularConfig.consentScopes,extraQueryParameters:this.msalAngularConfig.extraQueryParameters})},e.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[m]}]},{type:void 0,decorators:[{type:t.Inject,args:[y]}]},{type:v},{type:a.Router},{type:a.ActivatedRoute},{type:s.Location},{type:s.PlatformLocation},{type:h}]},e=f([t.Injectable(),g(0,t.Inject(m)),g(1,t.Inject(y))],e)}(),j=function(){function e(e,t){this.auth=e,this.broadcastService=t}return e.prototype.intercept=function(e,t){var n,a=this,i=this.auth.getScopesForEndpoint(e.url);return this.auth.getLogger().verbose("Url: "+e.url+" maps to scopes: "+i),i?r.from(this.auth.acquireTokenSilent({scopes:i}).then((function(t){n=t.accessToken;var r="Bearer "+t.accessToken;return e.clone({setHeaders:{Authorization:r}})}))).pipe(o.mergeMap((function(e){return t.handle(e)})),o.tap((function(e){}),(function(e){e instanceof u.HttpErrorResponse&&401===e.status&&(a.auth.clearCacheForScope(n),a.broadcastService.broadcast("msal:notAuthorized",e.message))}))):t.handle(e)},e.ctorParameters=function(){return[{type:v},{type:h}]},e=f([t.Injectable()],e)}(),w={consentScopes:[],popUp:!1,extraQueryParameters:{},unprotectedResources:[],protectedResourceMap:[]},C=function(){function e(){}var r;return r=e,e.forRoot=function(e,t){return void 0===t&&(t=w),{ngModule:r,providers:[{provide:m,useValue:e},{provide:y,useValue:t},v]}},e=r=f([t.NgModule({imports:[s.CommonModule],declarations:[],providers:[S,h]})],e)}();e.BroadcastService=h,e.MSAL_CONFIG=m,e.MSAL_CONFIG_ANGULAR=y,e.MsalGuard=S,e.MsalInterceptor=j,e.MsalModule=C,e.MsalService=v,e.ɵa=w,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=azure-msal-angular.umd.min.js.map
# Changelog
## 1.0.0-beta.4
* Requires `msal@1.2.2-beta.2`, which add `redirectStartUrl` to `AuthenticationParameters`, so that when a redirect operation from MSAL Guard is succesfully completed, redirect to the desired destination page. (#1343)
* Short-circuit MSAL Guard if it detects it is loaded in an iframe, to prevent timeouts that occur as a result of redirecting. (#1337)
* If framework.protectedResourceMap/unprotectedResources is empty, use msalAngularConfig.protectedResourceMap/unprotectedResources. (#1355)
## 1.0.0-beta.3

@@ -10,2 +16,3 @@

* `MSAL_CONFIG` and `MSAL_CONFIG_ANGULAR` available from the package's main export. (#1323)
* Removes the `WindowWrapper` class. (#1323)

@@ -12,0 +19,0 @@ ## 1.0.0-beta.2

@@ -8,2 +8,4 @@ import { __decorate, __param } from "tslib";

import { MSAL_CONFIG, MSAL_CONFIG_ANGULAR } from "./constants";
import { UrlUtils } from "msal/lib-commonjs/utils/UrlUtils";
import { WindowUtils } from "msal/lib-commonjs/utils/WindowUtils";
let MsalGuard = class MsalGuard {

@@ -22,2 +24,8 @@ constructor(msalConfig, msalAngularConfig, authService, router, activatedRoute, location, platformLocation, broadcastService) {

this.authService.getLogger().verbose("location change event from old url to new url");
// If a page with MSAL Guard is set as the redirect for acquireTokenSilent,
// short-circuit to prevent redirecting or popups.
if (UrlUtils.urlContainsHash(window.location.hash) && WindowUtils.isInIframe()) {
this.authService.getLogger().warning("redirectUri set to page with MSAL Guard. It is recommended to not set redirectUri to a page that requires authentication.");
return false;
}
if (!this.authService.getAccount()) {

@@ -32,3 +40,5 @@ if (this.msalAngularConfig.popUp) {

}
const routePath = `${window.location.origin}${state.url}`;
this.authService.loginRedirect({
redirectStartPage: routePath,
scopes: this.msalAngularConfig.consentScopes,

@@ -69,2 +79,2 @@ extraQueryParameters: this.msalAngularConfig.extraQueryParameters

export { MsalGuard };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC1ndWFyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGF6dXJlL21zYWwtYW5ndWxhci8iLCJzb3VyY2VzIjpbInNyYy9tc2FsLWd1YXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDSCxjQUFjLEVBQ2Qsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFDM0MsbUJBQW1CLEdBQ3RCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUd2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRy9ELElBQWEsU0FBUyxHQUF0QixNQUFhLFNBQVM7SUFFbEIsWUFDaUMsVUFBeUIsRUFDakIsaUJBQTJDLEVBQ3hFLFdBQXdCLEVBQ3hCLE1BQWMsRUFDZCxjQUE4QixFQUM5QixRQUFrQixFQUNsQixnQkFBa0MsRUFDbEMsZ0JBQWtDO1FBUGIsZUFBVSxHQUFWLFVBQVUsQ0FBZTtRQUNqQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQTBCO1FBQ3hFLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFDM0MsQ0FBQztJQUVKLFdBQVcsQ0FBQyxLQUE2QixFQUFFLEtBQTBCO1FBQ2pFLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLCtDQUErQyxDQUFDLENBQUM7UUFFdEYsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDaEMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFO2dCQUM5QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO29CQUMvQixNQUFNLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWE7b0JBQzVDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0I7aUJBQ3BFLENBQUM7cUJBQ0csSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztxQkFDaEIsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzNCO1lBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7Z0JBQzNCLE1BQU0sRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYTtnQkFDNUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQjthQUNwRSxDQUFDLENBQUM7U0FDTjthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDO2dCQUN2QyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDMUMsQ0FBQztpQkFDRyxJQUFJLENBQUMsQ0FBQyxNQUFvQixFQUFFLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUcsTUFBTSxDQUFDLENBQUM7Z0JBQzlELE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUMsQ0FBQztpQkFDRCxLQUFLLENBQUMsQ0FBQyxLQUFnQixFQUFFLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQzVELE9BQU8sS0FBSyxDQUFDO1lBQ2pCLENBQUMsQ0FBQyxDQUFDO1NBQ1Y7SUFFTCxDQUFDO0NBRUosQ0FBQTs7NENBM0NRLE1BQU0sU0FBQyxXQUFXOzRDQUNsQixNQUFNLFNBQUMsbUJBQW1CO1lBQ04sV0FBVztZQUNoQixNQUFNO1lBQ0UsY0FBYztZQUNwQixRQUFRO1lBQ0EsZ0JBQWdCO1lBQ2hCLGdCQUFnQjs7QUFWckMsU0FBUztJQURyQixVQUFVLEVBQUU7SUFJSixXQUFBLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUNuQixXQUFBLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0dBSnZCLFNBQVMsQ0E4Q3JCO1NBOUNZLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gICAgQWN0aXZhdGVkUm91dGUsXHJcbiAgICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgUm91dGVyLFxyXG4gICAgUm91dGVyU3RhdGVTbmFwc2hvdCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IE1zYWxTZXJ2aWNlIH0gZnJvbSBcIi4vbXNhbC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IExvY2F0aW9uLCBQbGF0Zm9ybUxvY2F0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBCcm9hZGNhc3RTZXJ2aWNlIH0gZnJvbSBcIi4vYnJvYWRjYXN0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiwgQXV0aFJlc3BvbnNlLCBBdXRoRXJyb3IgfSBmcm9tIFwibXNhbFwiO1xyXG5pbXBvcnQgeyBNc2FsQW5ndWxhckNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi9tc2FsLWFuZ3VsYXIuY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQgeyBNU0FMX0NPTkZJRywgTVNBTF9DT05GSUdfQU5HVUxBUiB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTXNhbEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoTVNBTF9DT05GSUcpIHByaXZhdGUgbXNhbENvbmZpZzogQ29uZmlndXJhdGlvbixcclxuICAgICAgICBASW5qZWN0KE1TQUxfQ09ORklHX0FOR1VMQVIpIHByaXZhdGUgbXNhbEFuZ3VsYXJDb25maWc6IE1zYWxBbmd1bGFyQ29uZmlndXJhdGlvbixcclxuICAgICAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBNc2FsU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLFxyXG4gICAgICAgIHByaXZhdGUgcGxhdGZvcm1Mb2NhdGlvbjogUGxhdGZvcm1Mb2NhdGlvbixcclxuICAgICAgICBwcml2YXRlIGJyb2FkY2FzdFNlcnZpY2U6IEJyb2FkY2FzdFNlcnZpY2VcclxuICAgICkge31cclxuXHJcbiAgICBjYW5BY3RpdmF0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRMb2dnZXIoKS52ZXJib3NlKFwibG9jYXRpb24gY2hhbmdlIGV2ZW50IGZyb20gb2xkIHVybCB0byBuZXcgdXJsXCIpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuYXV0aFNlcnZpY2UuZ2V0QWNjb3VudCgpKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1zYWxBbmd1bGFyQ29uZmlnLnBvcFVwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5sb2dpblBvcHVwKHtcclxuICAgICAgICAgICAgICAgICAgICBzY29wZXM6IHRoaXMubXNhbEFuZ3VsYXJDb25maWcuY29uc2VudFNjb3BlcyxcclxuICAgICAgICAgICAgICAgICAgICBleHRyYVF1ZXJ5UGFyYW1ldGVyczogdGhpcy5tc2FsQW5ndWxhckNvbmZpZy5leHRyYVF1ZXJ5UGFyYW1ldGVyc1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB0cnVlKVxyXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UubG9naW5SZWRpcmVjdCh7XHJcbiAgICAgICAgICAgICAgICBzY29wZXM6IHRoaXMubXNhbEFuZ3VsYXJDb25maWcuY29uc2VudFNjb3BlcyxcclxuICAgICAgICAgICAgICAgIGV4dHJhUXVlcnlQYXJhbWV0ZXJzOiB0aGlzLm1zYWxBbmd1bGFyQ29uZmlnLmV4dHJhUXVlcnlQYXJhbWV0ZXJzXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmFjcXVpcmVUb2tlblNpbGVudCh7XHJcbiAgICAgICAgICAgICAgICBzY29wZXM6IFt0aGlzLm1zYWxDb25maWcuYXV0aC5jbGllbnRJZF1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC50aGVuKChyZXN1bHQ6IEF1dGhSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3QoXCJtc2FsOmxvZ2luU3VjY2Vzc1wiLCAgcmVzdWx0KTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yOiBBdXRoRXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2UuYnJvYWRjYXN0KFwibXNhbDpsb2dpbkZhaWx1cmVcIiwgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC1ndWFyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGF6dXJlL21zYWwtYW5ndWxhci8iLCJzb3VyY2VzIjpbInNyYy9tc2FsLWd1YXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDSCxjQUFjLEVBQ2Qsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFDM0MsbUJBQW1CLEdBQ3RCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUd2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFHbEUsSUFBYSxTQUFTLEdBQXRCLE1BQWEsU0FBUztJQUVsQixZQUNpQyxVQUF5QixFQUNqQixpQkFBMkMsRUFDeEUsV0FBd0IsRUFDeEIsTUFBYyxFQUNkLGNBQThCLEVBQzlCLFFBQWtCLEVBQ2xCLGdCQUFrQyxFQUNsQyxnQkFBa0M7UUFQYixlQUFVLEdBQVYsVUFBVSxDQUFlO1FBQ2pCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBMEI7UUFDeEUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUMzQyxDQUFDO0lBRUosV0FBVyxDQUFDLEtBQTZCLEVBQUUsS0FBMEI7UUFDakUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsK0NBQStDLENBQUMsQ0FBQztRQUV0RiwyRUFBMkU7UUFDM0Usa0RBQWtEO1FBQ2xELElBQUksUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLFdBQVcsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUM1RSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQywySEFBMkgsQ0FBQyxDQUFDO1lBQ2xLLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDaEMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFO2dCQUM5QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO29CQUMvQixNQUFNLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWE7b0JBQzVDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0I7aUJBQ3BFLENBQUM7cUJBQ0csSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztxQkFDaEIsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzNCO1lBRUQsTUFBTSxTQUFTLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFMUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7Z0JBQzNCLGlCQUFpQixFQUFFLFNBQVM7Z0JBQzVCLE1BQU0sRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYTtnQkFDNUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQjthQUNwRSxDQUFDLENBQUM7U0FDTjthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDO2dCQUN2QyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDMUMsQ0FBQztpQkFDRyxJQUFJLENBQUMsQ0FBQyxNQUFvQixFQUFFLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUcsTUFBTSxDQUFDLENBQUM7Z0JBQzlELE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUMsQ0FBQztpQkFDRCxLQUFLLENBQUMsQ0FBQyxLQUFnQixFQUFFLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQzVELE9BQU8sS0FBSyxDQUFDO1lBQ2pCLENBQUMsQ0FBQyxDQUFDO1NBQ1Y7SUFFTCxDQUFDO0NBRUosQ0FBQTs7NENBckRRLE1BQU0sU0FBQyxXQUFXOzRDQUNsQixNQUFNLFNBQUMsbUJBQW1CO1lBQ04sV0FBVztZQUNoQixNQUFNO1lBQ0UsY0FBYztZQUNwQixRQUFRO1lBQ0EsZ0JBQWdCO1lBQ2hCLGdCQUFnQjs7QUFWckMsU0FBUztJQURyQixVQUFVLEVBQUU7SUFJSixXQUFBLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUNuQixXQUFBLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0dBSnZCLFNBQVMsQ0F3RHJCO1NBeERZLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gICAgQWN0aXZhdGVkUm91dGUsXHJcbiAgICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgUm91dGVyLFxyXG4gICAgUm91dGVyU3RhdGVTbmFwc2hvdCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IE1zYWxTZXJ2aWNlIH0gZnJvbSBcIi4vbXNhbC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IExvY2F0aW9uLCBQbGF0Zm9ybUxvY2F0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBCcm9hZGNhc3RTZXJ2aWNlIH0gZnJvbSBcIi4vYnJvYWRjYXN0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiwgQXV0aFJlc3BvbnNlLCBBdXRoRXJyb3IgfSBmcm9tIFwibXNhbFwiO1xyXG5pbXBvcnQgeyBNc2FsQW5ndWxhckNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi9tc2FsLWFuZ3VsYXIuY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQgeyBNU0FMX0NPTkZJRywgTVNBTF9DT05GSUdfQU5HVUxBUiB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBVcmxVdGlscyB9IGZyb20gXCJtc2FsL2xpYi1jb21tb25qcy91dGlscy9VcmxVdGlsc1wiO1xyXG5pbXBvcnQgeyBXaW5kb3dVdGlscyB9IGZyb20gXCJtc2FsL2xpYi1jb21tb25qcy91dGlscy9XaW5kb3dVdGlsc1wiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTXNhbEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoTVNBTF9DT05GSUcpIHByaXZhdGUgbXNhbENvbmZpZzogQ29uZmlndXJhdGlvbixcclxuICAgICAgICBASW5qZWN0KE1TQUxfQ09ORklHX0FOR1VMQVIpIHByaXZhdGUgbXNhbEFuZ3VsYXJDb25maWc6IE1zYWxBbmd1bGFyQ29uZmlndXJhdGlvbixcclxuICAgICAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBNc2FsU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLFxyXG4gICAgICAgIHByaXZhdGUgcGxhdGZvcm1Mb2NhdGlvbjogUGxhdGZvcm1Mb2NhdGlvbixcclxuICAgICAgICBwcml2YXRlIGJyb2FkY2FzdFNlcnZpY2U6IEJyb2FkY2FzdFNlcnZpY2VcclxuICAgICkge31cclxuXHJcbiAgICBjYW5BY3RpdmF0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRMb2dnZXIoKS52ZXJib3NlKFwibG9jYXRpb24gY2hhbmdlIGV2ZW50IGZyb20gb2xkIHVybCB0byBuZXcgdXJsXCIpO1xyXG5cclxuICAgICAgICAvLyBJZiBhIHBhZ2Ugd2l0aCBNU0FMIEd1YXJkIGlzIHNldCBhcyB0aGUgcmVkaXJlY3QgZm9yIGFjcXVpcmVUb2tlblNpbGVudCxcclxuICAgICAgICAvLyBzaG9ydC1jaXJjdWl0IHRvIHByZXZlbnQgcmVkaXJlY3Rpbmcgb3IgcG9wdXBzLlxyXG4gICAgICAgIGlmIChVcmxVdGlscy51cmxDb250YWluc0hhc2god2luZG93LmxvY2F0aW9uLmhhc2gpICYmIFdpbmRvd1V0aWxzLmlzSW5JZnJhbWUoKSkge1xyXG4gICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLndhcm5pbmcoXCJyZWRpcmVjdFVyaSBzZXQgdG8gcGFnZSB3aXRoIE1TQUwgR3VhcmQuIEl0IGlzIHJlY29tbWVuZGVkIHRvIG5vdCBzZXQgcmVkaXJlY3RVcmkgdG8gYSBwYWdlIHRoYXQgcmVxdWlyZXMgYXV0aGVudGljYXRpb24uXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuYXV0aFNlcnZpY2UuZ2V0QWNjb3VudCgpKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1zYWxBbmd1bGFyQ29uZmlnLnBvcFVwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5sb2dpblBvcHVwKHtcclxuICAgICAgICAgICAgICAgICAgICBzY29wZXM6IHRoaXMubXNhbEFuZ3VsYXJDb25maWcuY29uc2VudFNjb3BlcyxcclxuICAgICAgICAgICAgICAgICAgICBleHRyYVF1ZXJ5UGFyYW1ldGVyczogdGhpcy5tc2FsQW5ndWxhckNvbmZpZy5leHRyYVF1ZXJ5UGFyYW1ldGVyc1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB0cnVlKVxyXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlUGF0aCA9IGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59JHtzdGF0ZS51cmx9YDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UubG9naW5SZWRpcmVjdCh7XHJcbiAgICAgICAgICAgICAgICByZWRpcmVjdFN0YXJ0UGFnZTogcm91dGVQYXRoLFxyXG4gICAgICAgICAgICAgICAgc2NvcGVzOiB0aGlzLm1zYWxBbmd1bGFyQ29uZmlnLmNvbnNlbnRTY29wZXMsXHJcbiAgICAgICAgICAgICAgICBleHRyYVF1ZXJ5UGFyYW1ldGVyczogdGhpcy5tc2FsQW5ndWxhckNvbmZpZy5leHRyYVF1ZXJ5UGFyYW1ldGVyc1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5hY3F1aXJlVG9rZW5TaWxlbnQoe1xyXG4gICAgICAgICAgICAgICAgc2NvcGVzOiBbdGhpcy5tc2FsQ29uZmlnLmF1dGguY2xpZW50SWRdXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAudGhlbigocmVzdWx0OiBBdXRoUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2UuYnJvYWRjYXN0KFwibXNhbDpsb2dpblN1Y2Nlc3NcIiwgIHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcjogQXV0aEVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdChcIm1zYWw6bG9naW5GYWlsdXJlXCIsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=

@@ -48,3 +48,5 @@ import { __decorate, __param } from "tslib";

isUnprotectedResource(url) {
const unprotectedResources = (this.msalConfig.framework && this.msalConfig.framework.unprotectedResources) || this.msalAngularConfig.unprotectedResources || [];
const frameworkUnprotectedResources = this.msalConfig.framework && this.msalConfig.framework.unprotectedResources;
const configUnprotectedResources = this.msalAngularConfig.unprotectedResources || [];
const unprotectedResources = frameworkUnprotectedResources && frameworkUnprotectedResources.length ? frameworkUnprotectedResources : configUnprotectedResources;
return unprotectedResources.some(resource => url.indexOf(resource) > -1);

@@ -138,6 +140,7 @@ }

}
if (this.msalConfig.framework && this.msalConfig.framework.protectedResourceMap) {
const frameworkProtectedResourceMap = this.msalConfig.framework && this.msalConfig.framework.protectedResourceMap;
if (frameworkProtectedResourceMap) {
this.getLogger().info("msalConfig.framework.protectedResourceMap is deprecated, use msalAngularConfig.protectedResourceMap");
}
const protectedResourceMap = (this.msalConfig.framework && this.msalConfig.framework.protectedResourceMap) || new Map(this.msalAngularConfig.protectedResourceMap);
const protectedResourceMap = frameworkProtectedResourceMap && frameworkProtectedResourceMap.size ? frameworkProtectedResourceMap : new Map(this.msalAngularConfig.protectedResourceMap);
// process all protected resources and send the matched one

@@ -182,2 +185,2 @@ const keyForEndpoint = Array.from(protectedResourceMap.keys()).find(key => endpoint.indexOf(key) > -1);

export { ɵ0 };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGF6dXJlL21zYWwtYW5ndWxhci8iLCJzb3VyY2VzIjpbInNyYy9tc2FsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQ0gsb0JBQW9CLEVBTXZCLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNGLE1BQU0sRUFDVixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFJdEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFL0QsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFxQixFQUFrQixFQUFFO0lBQzlELHVDQUNPLE1BQU0sS0FDVCxTQUFTLGtDQUNGLE1BQU0sQ0FBQyxTQUFTLEtBQ25CLFNBQVMsRUFBRSxJQUFJLE9BRXJCO0FBQ04sQ0FBQyxDQUFDOztBQUdGLElBQWEsV0FBVyxHQUF4QixNQUFhLFdBQVksU0FBUSxvQkFBb0I7SUFFakQsWUFDaUMsVUFBeUIsRUFDakIsaUJBQTJDLEVBQ3hFLE1BQWMsRUFDZCxnQkFBa0M7UUFFMUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBTE4sZUFBVSxHQUFWLFVBQVUsQ0FBZTtRQUNqQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQTBCO1FBQ3hFLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBSTFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQWMsRUFBRSxFQUFFO1lBQ2hFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQWMsRUFBRSxFQUFFO1lBQzNELElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JDLElBQUksU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFO2dCQUMzQixnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQzNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNsQztpQkFDSSxJQUFJLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxFQUFFO2dCQUN2QyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsMEJBQTBCLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQ2xFLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN6QztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFO29CQUMvQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsRUFBRTt3QkFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFOzRCQUM1RixJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7eUJBQzNFO3FCQUNKO2lCQUNKO2FBQ0o7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxHQUFXO1FBQ3JDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsSUFBSSxFQUFFLENBQUM7UUFFaEssT0FBTyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVPLE9BQU8sQ0FBQyxHQUFXO1FBQ3ZCLE9BQU8sQ0FBQyxPQUFPLEdBQUcsS0FBSyxXQUFXLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRU0sZUFBZTtRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVNLFVBQVUsQ0FBQyxPQUFrQztRQUNoRCxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO2FBQzNCLElBQUksQ0FBQyxDQUFDLFlBQTBCLEVBQUUsRUFBRTtZQUNqQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLG1CQUFtQixFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ25FLE9BQU8sWUFBWSxDQUFDO1FBQ3hCLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLEtBQWdCLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sS0FBSyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVNLGtCQUFrQixDQUFDLE9BQWlDO1FBQ3ZELE9BQU8sS0FBSyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQzthQUNuQyxJQUFJLENBQUMsQ0FBQyxZQUEwQixFQUFFLEVBQUU7WUFDakMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQywwQkFBMEIsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUMxRSxPQUFPLFlBQVksQ0FBQztRQUN4QixDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxLQUFnQixFQUFFLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNuRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLHlDQUF5QyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQ2pHLE1BQU0sS0FBSyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBRVgsQ0FBQztJQUVNLGlCQUFpQixDQUFDLE9BQWlDO1FBQ3RELE9BQU8sS0FBSyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQzthQUNsQyxJQUFJLENBQUMsQ0FBQyxZQUEwQixFQUFFLEVBQUU7WUFDakMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQywwQkFBMEIsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUMxRSxPQUFPLFlBQVksQ0FBQztRQUN4QixDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxLQUFnQixFQUFFLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNuRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLDBDQUEwQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQ2pHLE1BQU0sS0FBSyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUlELHNCQUFzQixDQUFDLG1CQUFpRSxFQUFFLHFCQUE2QztRQUNuSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxTQUFvQixFQUFFLFlBQTBCLEVBQUUsRUFBRTtZQUM5RSxJQUFJLFlBQVksRUFBRTtnQkFDZCxJQUFJLFlBQVksQ0FBQyxTQUFTLEtBQUssVUFBVSxFQUFFO29CQUN2QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLG1CQUFtQixFQUFFLFlBQVksQ0FBQyxDQUFDO2lCQUN0RTtxQkFBTTtvQkFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLDBCQUEwQixFQUFFLFlBQVksQ0FBQyxDQUFDO2lCQUM3RTtnQkFFRCxJQUFJLHFCQUFxQixFQUFFO29CQUN0QixtQkFBNkMsQ0FBQyxZQUFZLENBQUMsQ0FBQztpQkFDaEU7cUJBQU07b0JBQ0YsbUJBQTRDLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO2lCQUNyRTthQUVKO2lCQUFNLElBQUksU0FBUyxFQUFFO2dCQUNsQixJQUFJLFlBQVksQ0FBQyxTQUFTLEtBQUssVUFBVSxFQUFFO29CQUN2QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxDQUFDO2lCQUVuRTtxQkFBTTtvQkFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLDBCQUEwQixFQUFFLFNBQVMsQ0FBQyxDQUFDO2lCQUMxRTtnQkFFRCxJQUFJLHFCQUFxQixFQUFFO29CQUN2QixxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO2lCQUMvRDtxQkFBTTtvQkFDRixtQkFBNEMsQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDNUQ7YUFFSjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLGtCQUFrQixDQUFDLFdBQW1CO1FBQ3pDLE9BQU8sS0FBSyxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxRQUFnQjtRQUN4QyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLG9CQUFvQixFQUFFO1lBQzdFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMscUdBQXFHLENBQUMsQ0FBQztTQUNoSTtRQUVELHlHQUF5RztRQUN6RyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0QsSUFBSSxhQUFhLEVBQUU7WUFDZixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRTtZQUM3RSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLHFHQUFxRyxDQUFDLENBQUM7U0FDaEk7UUFFRCxNQUFNLG9CQUFvQixHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUVuSywyREFBMkQ7UUFDM0QsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RyxJQUFJLGNBQWMsRUFBRTtZQUNoQixPQUFPLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUNuRDtRQUVEOzs7O1dBSUc7UUFDSCxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUN2RSxJQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssUUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsRUFBRTtnQkFDdkYsT0FBTyxJQUFJLEtBQUssQ0FBUyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUMzRDtTQUNKO2FBQU07WUFDSDs7O2VBR0c7WUFDSCxPQUFPLElBQUksS0FBSyxDQUFTLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzNEO1FBRUQsaUZBQWlGO1FBQ2pGLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSixDQUFBOzs0Q0E3S1EsTUFBTSxTQUFDLFdBQVc7NENBQ2xCLE1BQU0sU0FBQyxtQkFBbUI7WUFDWCxNQUFNO1lBQ0ksZ0JBQWdCOztBQU5yQyxXQUFXO0lBRHZCLFVBQVUsRUFBRTtJQUlKLFdBQUEsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ25CLFdBQUEsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUE7R0FKdkIsV0FBVyxDQWdMdkI7U0FoTFksV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtcclxuICAgIFVzZXJBZ2VudEFwcGxpY2F0aW9uLFxyXG4gICAgQ29uZmlndXJhdGlvbixcclxuICAgIEF1dGhlbnRpY2F0aW9uUGFyYW1ldGVycyxcclxuICAgIEF1dGhSZXNwb25zZSxcclxuICAgIEF1dGhFcnJvcixcclxuICAgIExvZ2dlclxyXG59IGZyb20gXCJtc2FsXCI7XHJcbmltcG9ydCB7XHJcbiAgICAgUm91dGVyXHJcbn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQge0Jyb2FkY2FzdFNlcnZpY2V9IGZyb20gXCIuL2Jyb2FkY2FzdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7TVNBTEVycm9yfSBmcm9tIFwiLi9NU0FMRXJyb3JcIjtcclxuaW1wb3J0IHsgQXV0aENhY2hlIH0gZnJvbSBcIm1zYWwvbGliLWNvbW1vbmpzL2NhY2hlL0F1dGhDYWNoZVwiO1xyXG5pbXBvcnQgeyBNc2FsQW5ndWxhckNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi9tc2FsLWFuZ3VsYXIuY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQgeyBhdXRoUmVzcG9uc2VDYWxsYmFjaywgZXJyb3JSZWNlaXZlZENhbGxiYWNrLCB0b2tlblJlY2VpdmVkQ2FsbGJhY2sgfSBmcm9tIFwibXNhbC9saWItY29tbW9uanMvVXNlckFnZW50QXBwbGljYXRpb25cIjtcclxuaW1wb3J0IHsgVXJsVXRpbHMgfSBmcm9tIFwibXNhbC9saWItY29tbW9uanMvdXRpbHMvVXJsVXRpbHNcIjtcclxuaW1wb3J0IHsgTVNBTF9DT05GSUcsIE1TQUxfQ09ORklHX0FOR1VMQVIgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuXHJcbmNvbnN0IGJ1aWxkTXNhbENvbmZpZyA9IChjb25maWc6IENvbmZpZ3VyYXRpb24pIDogQ29uZmlndXJhdGlvbiA9PiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmNvbmZpZyxcclxuICAgICAgICBmcmFtZXdvcms6IHtcclxuICAgICAgICAgICAgLi4uY29uZmlnLmZyYW1ld29yayxcclxuICAgICAgICAgICAgaXNBbmd1bGFyOiB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufTtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE1zYWxTZXJ2aWNlIGV4dGVuZHMgVXNlckFnZW50QXBwbGljYXRpb24ge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoTVNBTF9DT05GSUcpIHByaXZhdGUgbXNhbENvbmZpZzogQ29uZmlndXJhdGlvbixcclxuICAgICAgICBASW5qZWN0KE1TQUxfQ09ORklHX0FOR1VMQVIpIHByaXZhdGUgbXNhbEFuZ3VsYXJDb25maWc6IE1zYWxBbmd1bGFyQ29uZmlndXJhdGlvbixcclxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHByaXZhdGUgYnJvYWRjYXN0U2VydmljZTogQnJvYWRjYXN0U2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoYnVpbGRNc2FsQ29uZmlnKG1zYWxDb25maWcpKTtcclxuXHJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtc2FsOnBvcFVwSGFzaENoYW5nZWRcIiwgKGU6IEN1c3RvbUV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0TG9nZ2VyKCkudmVyYm9zZShcInBvcFVwSGFzaENoYW5nZWQgXCIpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbXNhbDpwb3BVcENsb3NlZCcsIChlOiBDdXN0b21FdmVudCkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgZXJyb3JQYXJ0cyA9IGUuZGV0YWlsLnNwbGl0KCd8Jyk7XHJcbiAgICAgICAgICAgIHZhciBtc2FsRXJyb3IgPSBuZXcgTVNBTEVycm9yKGVycm9yUGFydHNbMF0sIGVycm9yUGFydHNbMV0pO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5nZXRMb2dpbkluUHJvZ3Jlc3MoKSkge1xyXG4gICAgICAgICAgICAgICAgYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3QoJ21zYWw6bG9naW5GYWlsdXJlJywgbXNhbEVycm9yKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0bG9naW5JblByb2dyZXNzKGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmdldEFjcXVpcmVUb2tlbkluUHJvZ3Jlc3MoKSkge1xyXG4gICAgICAgICAgICAgICAgYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3QoJ21zYWw6YWNxdWlyZVRva2VuRmFpbHVyZScsIG1zYWxFcnJvcik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldEFjcXVpcmVUb2tlbkluUHJvZ3Jlc3MoZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJvdXRlci5jb25maWcubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGlmICghcm91dGVyLmNvbmZpZ1tpXS5jYW5BY3RpdmF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1zYWxBbmd1bGFyQ29uZmlnLnVucHJvdGVjdGVkUmVzb3VyY2VzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc1VucHJvdGVjdGVkUmVzb3VyY2Uocm91dGVyLmNvbmZpZ1tpXS5wYXRoKSAmJiAhdGhpcy5pc0VtcHR5KHJvdXRlci5jb25maWdbaV0ucGF0aCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXNhbEFuZ3VsYXJDb25maWcudW5wcm90ZWN0ZWRSZXNvdXJjZXMucHVzaChyb3V0ZXIuY29uZmlnW2ldLnBhdGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc1VucHJvdGVjdGVkUmVzb3VyY2UodXJsOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCB1bnByb3RlY3RlZFJlc291cmNlcyA9ICh0aGlzLm1zYWxDb25maWcuZnJhbWV3b3JrICYmIHRoaXMubXNhbENvbmZpZy5mcmFtZXdvcmsudW5wcm90ZWN0ZWRSZXNvdXJjZXMpIHx8IHRoaXMubXNhbEFuZ3VsYXJDb25maWcudW5wcm90ZWN0ZWRSZXNvdXJjZXMgfHwgW107XHJcblxyXG4gICAgICAgIHJldHVybiB1bnByb3RlY3RlZFJlc291cmNlcy5zb21lKHJlc291cmNlID0+IHVybC5pbmRleE9mKHJlc291cmNlKSA+IC0xKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzRW1wdHkoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKHR5cGVvZiBzdHIgPT09IFwidW5kZWZpbmVkXCIgfHwgIXN0ciB8fCAwID09PSBzdHIubGVuZ3RoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0Q2FjaGVTdG9yYWdlKCk6IEF1dGhDYWNoZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGVTdG9yYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBsb2dpblBvcHVwKHJlcXVlc3Q/OiBBdXRoZW50aWNhdGlvblBhcmFtZXRlcnMpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiBzdXBlci5sb2dpblBvcHVwKHJlcXVlc3QpXHJcbiAgICAgICAgICAgIC50aGVuKChhdXRoUmVzcG9uc2U6IEF1dGhSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdChcIm1zYWw6bG9naW5TdWNjZXNzXCIsIGF1dGhSZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXV0aFJlc3BvbnNlO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yOiBBdXRoRXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3QoXCJtc2FsOmxvZ2luRmFpbHVyZVwiLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldExvZ2dlcigpLmVycm9yKFwiRXJyb3IgZHVyaW5nIGxvZ2luOlxcblwiICsgZXJyb3IuZXJyb3JNZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWNxdWlyZVRva2VuU2lsZW50KHJlcXVlc3Q6IEF1dGhlbnRpY2F0aW9uUGFyYW1ldGVycyk6IFByb21pc2U8QXV0aFJlc3BvbnNlPiB7XHJcbiAgICAgICAgcmV0dXJuIHN1cGVyLmFjcXVpcmVUb2tlblNpbGVudChyZXF1ZXN0KVxyXG4gICAgICAgICAgICAudGhlbigoYXV0aFJlc3BvbnNlOiBBdXRoUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3QoJ21zYWw6YWNxdWlyZVRva2VuU3VjY2VzcycsIGF1dGhSZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXV0aFJlc3BvbnNlO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yOiBBdXRoRXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3QoJ21zYWw6YWNxdWlyZVRva2VuRmFpbHVyZScsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0TG9nZ2VyKCkuZXJyb3IoJ0Vycm9yIHdoZW4gYWNxdWlyaW5nIHRva2VuIGZvciBzY29wZXM6ICcgKyByZXF1ZXN0LnNjb3BlcyArIFwiIFwiICsgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWNxdWlyZVRva2VuUG9wdXAocmVxdWVzdDogQXV0aGVudGljYXRpb25QYXJhbWV0ZXJzKTogUHJvbWlzZTxBdXRoUmVzcG9uc2U+IHtcclxuICAgICAgICByZXR1cm4gc3VwZXIuYWNxdWlyZVRva2VuUG9wdXAocmVxdWVzdClcclxuICAgICAgICAgICAgLnRoZW4oKGF1dGhSZXNwb25zZTogQXV0aFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2UuYnJvYWRjYXN0KCdtc2FsOmFjcXVpcmVUb2tlblN1Y2Nlc3MnLCBhdXRoUmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGF1dGhSZXNwb25zZTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcjogQXV0aEVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2UuYnJvYWRjYXN0KCdtc2FsOmFjcXVpcmVUb2tlbkZhaWx1cmUnLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldExvZ2dlcigpLmVycm9yKCdFcnJvciB3aGVuIGFjcXVpcmluZyB0b2tlbiBmb3Igc2NvcGVzIDogJyArIHJlcXVlc3Quc2NvcGVzICtcIiBcIisgIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVSZWRpcmVjdENhbGxiYWNrKHRva2VuUmVjZWl2ZWRDYWxsYmFjazogdG9rZW5SZWNlaXZlZENhbGxiYWNrLCBlcnJvclJlY2VpdmVkQ2FsbGJhY2s6IGVycm9yUmVjZWl2ZWRDYWxsYmFjayk6IHZvaWQ7XHJcbiAgICBoYW5kbGVSZWRpcmVjdENhbGxiYWNrKGF1dGhDYWxsYmFjazogYXV0aFJlc3BvbnNlQ2FsbGJhY2spOiB2b2lkO1xyXG4gICAgaGFuZGxlUmVkaXJlY3RDYWxsYmFjayhhdXRoT3JUb2tlbkNhbGxiYWNrOiBhdXRoUmVzcG9uc2VDYWxsYmFjayB8IHRva2VuUmVjZWl2ZWRDYWxsYmFjaywgZXJyb3JSZWNlaXZlZENhbGxiYWNrPzogZXJyb3JSZWNlaXZlZENhbGxiYWNrKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIuaGFuZGxlUmVkaXJlY3RDYWxsYmFjaygoYXV0aEVycm9yOiBBdXRoRXJyb3IsIGF1dGhSZXNwb25zZTogQXV0aFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChhdXRoUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgIGlmIChhdXRoUmVzcG9uc2UudG9rZW5UeXBlID09PSBcImlkX3Rva2VuXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2UuYnJvYWRjYXN0KFwibXNhbDpsb2dpblN1Y2Nlc3NcIiwgYXV0aFJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdChcIm1zYWw6YWNxdWlyZVRva2VuU3VjY2Vzc1wiLCBhdXRoUmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChlcnJvclJlY2VpdmVkQ2FsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgICAgICAoYXV0aE9yVG9rZW5DYWxsYmFjayBhcyB0b2tlblJlY2VpdmVkQ2FsbGJhY2spKGF1dGhSZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIChhdXRoT3JUb2tlbkNhbGxiYWNrIGFzIGF1dGhSZXNwb25zZUNhbGxiYWNrKShudWxsLCBhdXRoUmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChhdXRoRXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIGlmIChhdXRoUmVzcG9uc2UudG9rZW5UeXBlID09PSBcImlkX3Rva2VuXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2UuYnJvYWRjYXN0KFwibXNhbDpsb2dpbkZhaWx1cmVcIiwgYXV0aEVycm9yKTtcclxuXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3QoXCJtc2FsOmFjcXVpcmVUb2tlbkZhaWx1cmVcIiwgYXV0aEVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JSZWNlaXZlZENhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JSZWNlaXZlZENhbGxiYWNrKGF1dGhFcnJvciwgYXV0aFJlc3BvbnNlLmFjY291bnRTdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIChhdXRoT3JUb2tlbkNhbGxiYWNrIGFzIGF1dGhSZXNwb25zZUNhbGxiYWNrKShhdXRoRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjbGVhckNhY2hlRm9yU2NvcGUoYWNjZXNzVG9rZW46IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiBzdXBlci5jbGVhckNhY2hlRm9yU2NvcGUoYWNjZXNzVG9rZW4pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRTY29wZXNGb3JFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSA6IEFycmF5PHN0cmluZz4ge1xyXG4gICAgICAgIGlmICh0aGlzLm1zYWxDb25maWcuZnJhbWV3b3JrICYmIHRoaXMubXNhbENvbmZpZy5mcmFtZXdvcmsudW5wcm90ZWN0ZWRSZXNvdXJjZXMpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRMb2dnZXIoKS5pbmZvKFwibXNhbENvbmZpZy5mcmFtZXdvcmsudW5wcm90ZWN0ZWRSZXNvdXJjZXMgaXMgZGVwcmVjYXRlZCwgdXNlIG1zYWxBbmd1bGFyQ29uZmlnLnVucHJvdGVjdGVkUmVzb3VyY2VzXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gaWYgdXNlciBzcGVjaWZpZWQgbGlzdCBvZiB1bnByb3RlY3RlZFJlc291cmNlcywgbm8gbmVlZCB0byBzZW5kIHRva2VuIHRvIHRoZXNlIGVuZHBvaW50cywgcmV0dXJuIG51bGwuXHJcbiAgICAgICAgY29uc3QgaXNVbnByb3RlY3RlZCA9IHRoaXMuaXNVbnByb3RlY3RlZFJlc291cmNlKGVuZHBvaW50KTtcclxuICAgICAgICBpZiAoaXNVbnByb3RlY3RlZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm1zYWxDb25maWcuZnJhbWV3b3JrICYmIHRoaXMubXNhbENvbmZpZy5mcmFtZXdvcmsucHJvdGVjdGVkUmVzb3VyY2VNYXApIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRMb2dnZXIoKS5pbmZvKFwibXNhbENvbmZpZy5mcmFtZXdvcmsucHJvdGVjdGVkUmVzb3VyY2VNYXAgaXMgZGVwcmVjYXRlZCwgdXNlIG1zYWxBbmd1bGFyQ29uZmlnLnByb3RlY3RlZFJlc291cmNlTWFwXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcHJvdGVjdGVkUmVzb3VyY2VNYXAgPSAodGhpcy5tc2FsQ29uZmlnLmZyYW1ld29yayAmJiB0aGlzLm1zYWxDb25maWcuZnJhbWV3b3JrLnByb3RlY3RlZFJlc291cmNlTWFwKSB8fCBuZXcgTWFwKHRoaXMubXNhbEFuZ3VsYXJDb25maWcucHJvdGVjdGVkUmVzb3VyY2VNYXApO1xyXG5cclxuICAgICAgICAvLyBwcm9jZXNzIGFsbCBwcm90ZWN0ZWQgcmVzb3VyY2VzIGFuZCBzZW5kIHRoZSBtYXRjaGVkIG9uZVxyXG4gICAgICAgIGNvbnN0IGtleUZvckVuZHBvaW50ID0gQXJyYXkuZnJvbShwcm90ZWN0ZWRSZXNvdXJjZU1hcC5rZXlzKCkpLmZpbmQoa2V5ID0+IGVuZHBvaW50LmluZGV4T2Yoa2V5KSA+IC0xKTtcclxuICAgICAgICBpZiAoa2V5Rm9yRW5kcG9pbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHByb3RlY3RlZFJlc291cmNlTWFwLmdldChrZXlGb3JFbmRwb2ludCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKlxyXG4gICAgICAgICAqIGRlZmF1bHQgcmVzb3VyY2Ugd2lsbCBiZSBjbGllbnRpZCBpZiBub3RoaW5nIHNwZWNpZmllZFxyXG4gICAgICAgICAqIEFwcCB3aWxsIHVzZSBpZHRva2VuIGZvciBjYWxscyB0byBpdHNlbGZcclxuICAgICAgICAgKiBjaGVjayBpZiBpdCdzIHN0YXJpbmcgZnJvbSBodHRwIG9yIGh0dHBzLCBuZWVkcyB0byBtYXRjaCB3aXRoIGFwcCBob3N0XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgaWYgKGVuZHBvaW50LmluZGV4T2YoXCJodHRwOi8vXCIpID4gLTEgfHwgZW5kcG9pbnQuaW5kZXhPZihcImh0dHBzOi8vXCIpID4gLTEpIHtcclxuICAgICAgICAgICAgaWYgKFVybFV0aWxzLmdldEhvc3RGcm9tVXJpKGVuZHBvaW50KSA9PT0gVXJsVXRpbHMuZ2V0SG9zdEZyb21Vcmkoc3VwZXIuZ2V0UmVkaXJlY3RVcmkoKSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQXJyYXk8c3RyaW5nPih0aGlzLm1zYWxDb25maWcuYXV0aC5jbGllbnRJZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgKiBpbiBhbmd1bGFyIGxldmVsLCB0aGUgdXJsIGZvciAkaHR0cCBpbnRlcmNlcHRvciBjYWxsIGNvdWxkIGJlIHJlbGF0aXZlIHVybCxcclxuICAgICAgICAgICAgICogaWYgaXQncyByZWxhdGl2ZSBjYWxsLCB3ZSdsbCB0cmVhdCBpdCBhcyBhcHAgYmFja2VuZCBjYWxsLlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBBcnJheTxzdHJpbmc+KHRoaXMubXNhbENvbmZpZy5hdXRoLmNsaWVudElkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGlmIG5vdCB0aGUgYXBwJ3Mgb3duIGJhY2tlbmQgb3Igbm90IGEgZG9tYWluIGxpc3RlZCBpbiB0aGUgZW5kcG9pbnRzIHN0cnVjdHVyZVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGF6dXJlL21zYWwtYW5ndWxhci8iLCJzb3VyY2VzIjpbInNyYy9tc2FsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQ0gsb0JBQW9CLEVBTXZCLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNGLE1BQU0sRUFDVixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFJdEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFL0QsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFxQixFQUFrQixFQUFFO0lBQzlELHVDQUNPLE1BQU0sS0FDVCxTQUFTLGtDQUNGLE1BQU0sQ0FBQyxTQUFTLEtBQ25CLFNBQVMsRUFBRSxJQUFJLE9BRXJCO0FBQ04sQ0FBQyxDQUFDOztBQUdGLElBQWEsV0FBVyxHQUF4QixNQUFhLFdBQVksU0FBUSxvQkFBb0I7SUFFakQsWUFDaUMsVUFBeUIsRUFDakIsaUJBQTJDLEVBQ3hFLE1BQWMsRUFDZCxnQkFBa0M7UUFFMUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBTE4sZUFBVSxHQUFWLFVBQVUsQ0FBZTtRQUNqQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQTBCO1FBQ3hFLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBSTFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQWMsRUFB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LEVBQUU7SUFJSixXQUFBLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUNuQixXQUFBLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0dBSnZCLFdBQVcsQ0FvTHZCO1NBcExZLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgICBVc2VyQWdlbnRBcHBsaWNhdGlvbixcclxuICAgIENvbmZpZ3VyYXRpb24sXHJcbiAgICBBdXRoZW50aWNhdGlvblBhcmFtZXRlcnMsXHJcbiAgICBBdXRoUmVzcG9uc2UsXHJcbiAgICBBdXRoRXJyb3IsXHJcbiAgICBMb2dnZXJcclxufSBmcm9tIFwibXNhbFwiO1xyXG5pbXBvcnQge1xyXG4gICAgIFJvdXRlclxyXG59IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHtCcm9hZGNhc3RTZXJ2aWNlfSBmcm9tIFwiLi9icm9hZGNhc3Quc2VydmljZVwiO1xyXG5pbXBvcnQge01TQUxFcnJvcn0gZnJvbSBcIi4vTVNBTEVycm9yXCI7XHJcbmltcG9ydCB7IEF1dGhDYWNoZSB9IGZyb20gXCJtc2FsL2xpYi1jb21tb25qcy9jYWNoZS9BdXRoQ2FjaGVcIjtcclxuaW1wb3J0IHsgTXNhbEFuZ3VsYXJDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4vbXNhbC1hbmd1bGFyLmNvbmZpZ3VyYXRpb25cIjtcclxuaW1wb3J0IHsgYXV0aFJlc3BvbnNlQ2FsbGJhY2ssIGVycm9yUmVjZWl2ZWRDYWxsYmFjaywgdG9rZW5SZWNlaXZlZENhbGxiYWNrIH0gZnJvbSBcIm1zYWwvbGliLWNvbW1vbmpzL1VzZXJBZ2VudEFwcGxpY2F0aW9uXCI7XHJcbmltcG9ydCB7IFVybFV0aWxzIH0gZnJvbSBcIm1zYWwvbGliLWNvbW1vbmpzL3V0aWxzL1VybFV0aWxzXCI7XHJcbmltcG9ydCB7IE1TQUxfQ09ORklHLCBNU0FMX0NPTkZJR19BTkdVTEFSIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XHJcblxyXG5jb25zdCBidWlsZE1zYWxDb25maWcgPSAoY29uZmlnOiBDb25maWd1cmF0aW9uKSA6IENvbmZpZ3VyYXRpb24gPT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5jb25maWcsXHJcbiAgICAgICAgZnJhbWV3b3JrOiB7XHJcbiAgICAgICAgICAgIC4uLmNvbmZpZy5mcmFtZXdvcmssXHJcbiAgICAgICAgICAgIGlzQW5ndWxhcjogdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn07XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBNc2FsU2VydmljZSBleHRlbmRzIFVzZXJBZ2VudEFwcGxpY2F0aW9uIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KE1TQUxfQ09ORklHKSBwcml2YXRlIG1zYWxDb25maWc6IENvbmZpZ3VyYXRpb24sXHJcbiAgICAgICAgQEluamVjdChNU0FMX0NPTkZJR19BTkdVTEFSKSBwcml2YXRlIG1zYWxBbmd1bGFyQ29uZmlnOiBNc2FsQW5ndWxhckNvbmZpZ3VyYXRpb24sXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICBwcml2YXRlIGJyb2FkY2FzdFNlcnZpY2U6IEJyb2FkY2FzdFNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGJ1aWxkTXNhbENvbmZpZyhtc2FsQ29uZmlnKSk7XHJcblxyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibXNhbDpwb3BVcEhhc2hDaGFuZ2VkXCIsIChlOiBDdXN0b21FdmVudCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdldExvZ2dlcigpLnZlcmJvc2UoXCJwb3BVcEhhc2hDaGFuZ2VkIFwiKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21zYWw6cG9wVXBDbG9zZWQnLCAoZTogQ3VzdG9tRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgdmFyIGVycm9yUGFydHMgPSBlLmRldGFpbC5zcGxpdCgnfCcpO1xyXG4gICAgICAgICAgICB2YXIgbXNhbEVycm9yID0gbmV3IE1TQUxFcnJvcihlcnJvclBhcnRzWzBdLCBlcnJvclBhcnRzWzFdKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0TG9naW5JblByb2dyZXNzKCkpIHtcclxuICAgICAgICAgICAgICAgIGJyb2FkY2FzdFNlcnZpY2UuYnJvYWRjYXN0KCdtc2FsOmxvZ2luRmFpbHVyZScsIG1zYWxFcnJvcik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldGxvZ2luSW5Qcm9ncmVzcyhmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5nZXRBY3F1aXJlVG9rZW5JblByb2dyZXNzKCkpIHtcclxuICAgICAgICAgICAgICAgIGJyb2FkY2FzdFNlcnZpY2UuYnJvYWRjYXN0KCdtc2FsOmFjcXVpcmVUb2tlbkZhaWx1cmUnLCBtc2FsRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBY3F1aXJlVG9rZW5JblByb2dyZXNzKGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByb3V0ZXIuY29uZmlnLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJvdXRlci5jb25maWdbaV0uY2FuQWN0aXZhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tc2FsQW5ndWxhckNvbmZpZy51bnByb3RlY3RlZFJlc291cmNlcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNVbnByb3RlY3RlZFJlc291cmNlKHJvdXRlci5jb25maWdbaV0ucGF0aCkgJiYgIXRoaXMuaXNFbXB0eShyb3V0ZXIuY29uZmlnW2ldLnBhdGgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1zYWxBbmd1bGFyQ29uZmlnLnVucHJvdGVjdGVkUmVzb3VyY2VzLnB1c2gocm91dGVyLmNvbmZpZ1tpXS5wYXRoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaXNVbnByb3RlY3RlZFJlc291cmNlKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgZnJhbWV3b3JrVW5wcm90ZWN0ZWRSZXNvdXJjZXMgPSB0aGlzLm1zYWxDb25maWcuZnJhbWV3b3JrICYmIHRoaXMubXNhbENvbmZpZy5mcmFtZXdvcmsudW5wcm90ZWN0ZWRSZXNvdXJjZXM7XHJcbiAgICAgICAgY29uc3QgY29uZmlnVW5wcm90ZWN0ZWRSZXNvdXJjZXMgPSB0aGlzLm1zYWxBbmd1bGFyQ29uZmlnLnVucHJvdGVjdGVkUmVzb3VyY2VzIHx8IFtdO1xyXG5cclxuICAgICAgICBjb25zdCB1bnByb3RlY3RlZFJlc291cmNlcyA9IGZyYW1ld29ya1VucHJvdGVjdGVkUmVzb3VyY2VzICYmIGZyYW1ld29ya1VucHJvdGVjdGVkUmVzb3VyY2VzLmxlbmd0aCA/IGZyYW1ld29ya1VucHJvdGVjdGVkUmVzb3VyY2VzIDogY29uZmlnVW5wcm90ZWN0ZWRSZXNvdXJjZXM7XHJcblxyXG4gICAgICAgIHJldHVybiB1bnByb3RlY3RlZFJlc291cmNlcy5zb21lKHJlc291cmNlID0+IHVybC5pbmRleE9mKHJlc291cmNlKSA+IC0xKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzRW1wdHkoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKHR5cGVvZiBzdHIgPT09IFwidW5kZWZpbmVkXCIgfHwgIXN0ciB8fCAwID09PSBzdHIubGVuZ3RoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0Q2FjaGVTdG9yYWdlKCk6IEF1dGhDYWNoZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGVTdG9yYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBsb2dpblBvcHVwKHJlcXVlc3Q/OiBBdXRoZW50aWNhdGlvblBhcmFtZXRlcnMpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiBzdXBlci5sb2dpblBvcHVwKHJlcXVlc3QpXHJcbiAgICAgICAgICAgIC50aGVuKChhdXRoUmVzcG9uc2U6IEF1dGhSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdChcIm1zYWw6bG9naW5TdWNjZXNzXCIsIGF1dGhSZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXV0aFJlc3BvbnNlO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yOiBBdXRoRXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3QoXCJtc2FsOmxvZ2luRmFpbHVyZVwiLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldExvZ2dlcigpLmVycm9yKFwiRXJyb3IgZHVyaW5nIGxvZ2luOlxcblwiICsgZXJyb3IuZXJyb3JNZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWNxdWlyZVRva2VuU2lsZW50KHJlcXVlc3Q6IEF1dGhlbnRpY2F0aW9uUGFyYW1ldGVycyk6IFByb21pc2U8QXV0aFJlc3BvbnNlPiB7XHJcbiAgICAgICAgcmV0dXJuIHN1cGVyLmFjcXVpcmVUb2tlblNpbGVudChyZXF1ZXN0KVxyXG4gICAgICAgICAgICAudGhlbigoYXV0aFJlc3BvbnNlOiBBdXRoUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3QoJ21zYWw6YWNxdWlyZVRva2VuU3VjY2VzcycsIGF1dGhSZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXV0aFJlc3BvbnNlO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yOiBBdXRoRXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3QoJ21zYWw6YWNxdWlyZVRva2VuRmFpbHVyZScsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0TG9nZ2VyKCkuZXJyb3IoJ0Vycm9yIHdoZW4gYWNxdWlyaW5nIHRva2VuIGZvciBzY29wZXM6ICcgKyByZXF1ZXN0LnNjb3BlcyArIFwiIFwiICsgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWNxdWlyZVRva2VuUG9wdXAocmVxdWVzdDogQXV0aGVudGljYXRpb25QYXJhbWV0ZXJzKTogUHJvbWlzZTxBdXRoUmVzcG9uc2U+IHtcclxuICAgICAgICByZXR1cm4gc3VwZXIuYWNxdWlyZVRva2VuUG9wdXAocmVxdWVzdClcclxuICAgICAgICAgICAgLnRoZW4oKGF1dGhSZXNwb25zZTogQXV0aFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2UuYnJvYWRjYXN0KCdtc2FsOmFjcXVpcmVUb2tlblN1Y2Nlc3MnLCBhdXRoUmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGF1dGhSZXNwb25zZTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcjogQXV0aEVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2UuYnJvYWRjYXN0KCdtc2FsOmFjcXVpcmVUb2tlbkZhaWx1cmUnLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldExvZ2dlcigpLmVycm9yKCdFcnJvciB3aGVuIGFjcXVpcmluZyB0b2tlbiBmb3Igc2NvcGVzIDogJyArIHJlcXVlc3Quc2NvcGVzICtcIiBcIisgIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVSZWRpcmVjdENhbGxiYWNrKHRva2VuUmVjZWl2ZWRDYWxsYmFjazogdG9rZW5SZWNlaXZlZENhbGxiYWNrLCBlcnJvclJlY2VpdmVkQ2FsbGJhY2s6IGVycm9yUmVjZWl2ZWRDYWxsYmFjayk6IHZvaWQ7XHJcbiAgICBoYW5kbGVSZWRpcmVjdENhbGxiYWNrKGF1dGhDYWxsYmFjazogYXV0aFJlc3BvbnNlQ2FsbGJhY2spOiB2b2lkO1xyXG4gICAgaGFuZGxlUmVkaXJlY3RDYWxsYmFjayhhdXRoT3JUb2tlbkNhbGxiYWNrOiBhdXRoUmVzcG9uc2VDYWxsYmFjayB8IHRva2VuUmVjZWl2ZWRDYWxsYmFjaywgZXJyb3JSZWNlaXZlZENhbGxiYWNrPzogZXJyb3JSZWNlaXZlZENhbGxiYWNrKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIuaGFuZGxlUmVkaXJlY3RDYWxsYmFjaygoYXV0aEVycm9yOiBBdXRoRXJyb3IsIGF1dGhSZXNwb25zZTogQXV0aFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChhdXRoUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgIGlmIChhdXRoUmVzcG9uc2UudG9rZW5UeXBlID09PSBcImlkX3Rva2VuXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2UuYnJvYWRjYXN0KFwibXNhbDpsb2dpblN1Y2Nlc3NcIiwgYXV0aFJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdChcIm1zYWw6YWNxdWlyZVRva2VuU3VjY2Vzc1wiLCBhdXRoUmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChlcnJvclJlY2VpdmVkQ2FsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgICAgICAoYXV0aE9yVG9rZW5DYWxsYmFjayBhcyB0b2tlblJlY2VpdmVkQ2FsbGJhY2spKGF1dGhSZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIChhdXRoT3JUb2tlbkNhbGxiYWNrIGFzIGF1dGhSZXNwb25zZUNhbGxiYWNrKShudWxsLCBhdXRoUmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChhdXRoRXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIGlmIChhdXRoUmVzcG9uc2UudG9rZW5UeXBlID09PSBcImlkX3Rva2VuXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2UuYnJvYWRjYXN0KFwibXNhbDpsb2dpbkZhaWx1cmVcIiwgYXV0aEVycm9yKTtcclxuXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3QoXCJtc2FsOmFjcXVpcmVUb2tlbkZhaWx1cmVcIiwgYXV0aEVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JSZWNlaXZlZENhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JSZWNlaXZlZENhbGxiYWNrKGF1dGhFcnJvciwgYXV0aFJlc3BvbnNlLmFjY291bnRTdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIChhdXRoT3JUb2tlbkNhbGxiYWNrIGFzIGF1dGhSZXNwb25zZUNhbGxiYWNrKShhdXRoRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjbGVhckNhY2hlRm9yU2NvcGUoYWNjZXNzVG9rZW46IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiBzdXBlci5jbGVhckNhY2hlRm9yU2NvcGUoYWNjZXNzVG9rZW4pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRTY29wZXNGb3JFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSA6IEFycmF5PHN0cmluZz4ge1xyXG4gICAgICAgIGlmICh0aGlzLm1zYWxDb25maWcuZnJhbWV3b3JrICYmIHRoaXMubXNhbENvbmZpZy5mcmFtZXdvcmsudW5wcm90ZWN0ZWRSZXNvdXJjZXMpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRMb2dnZXIoKS5pbmZvKFwibXNhbENvbmZpZy5mcmFtZXdvcmsudW5wcm90ZWN0ZWRSZXNvdXJjZXMgaXMgZGVwcmVjYXRlZCwgdXNlIG1zYWxBbmd1bGFyQ29uZmlnLnVucHJvdGVjdGVkUmVzb3VyY2VzXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gaWYgdXNlciBzcGVjaWZpZWQgbGlzdCBvZiB1bnByb3RlY3RlZFJlc291cmNlcywgbm8gbmVlZCB0byBzZW5kIHRva2VuIHRvIHRoZXNlIGVuZHBvaW50cywgcmV0dXJuIG51bGwuXHJcbiAgICAgICAgY29uc3QgaXNVbnByb3RlY3RlZCA9IHRoaXMuaXNVbnByb3RlY3RlZFJlc291cmNlKGVuZHBvaW50KTtcclxuICAgICAgICBpZiAoaXNVbnByb3RlY3RlZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGZyYW1ld29ya1Byb3RlY3RlZFJlc291cmNlTWFwID0gdGhpcy5tc2FsQ29uZmlnLmZyYW1ld29yayAmJiB0aGlzLm1zYWxDb25maWcuZnJhbWV3b3JrLnByb3RlY3RlZFJlc291cmNlTWFwO1xyXG4gICAgICAgIGlmIChmcmFtZXdvcmtQcm90ZWN0ZWRSZXNvdXJjZU1hcCkge1xyXG4gICAgICAgICAgICB0aGlzLmdldExvZ2dlcigpLmluZm8oXCJtc2FsQ29uZmlnLmZyYW1ld29yay5wcm90ZWN0ZWRSZXNvdXJjZU1hcCBpcyBkZXByZWNhdGVkLCB1c2UgbXNhbEFuZ3VsYXJDb25maWcucHJvdGVjdGVkUmVzb3VyY2VNYXBcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBwcm90ZWN0ZWRSZXNvdXJjZU1hcCA9IGZyYW1ld29ya1Byb3RlY3RlZFJlc291cmNlTWFwICYmIGZyYW1ld29ya1Byb3RlY3RlZFJlc291cmNlTWFwLnNpemUgPyBmcmFtZXdvcmtQcm90ZWN0ZWRSZXNvdXJjZU1hcCA6IG5ldyBNYXAodGhpcy5tc2FsQW5ndWxhckNvbmZpZy5wcm90ZWN0ZWRSZXNvdXJjZU1hcCk7XHJcblxyXG4gICAgICAgIC8vIHByb2Nlc3MgYWxsIHByb3RlY3RlZCByZXNvdXJjZXMgYW5kIHNlbmQgdGhlIG1hdGNoZWQgb25lXHJcbiAgICAgICAgY29uc3Qga2V5Rm9yRW5kcG9pbnQgPSBBcnJheS5mcm9tKHByb3RlY3RlZFJlc291cmNlTWFwLmtleXMoKSkuZmluZChrZXkgPT4gZW5kcG9pbnQuaW5kZXhPZihrZXkpID4gLTEpO1xyXG4gICAgICAgIGlmIChrZXlGb3JFbmRwb2ludCkge1xyXG4gICAgICAgICAgICByZXR1cm4gcHJvdGVjdGVkUmVzb3VyY2VNYXAuZ2V0KGtleUZvckVuZHBvaW50KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qXHJcbiAgICAgICAgICogZGVmYXVsdCByZXNvdXJjZSB3aWxsIGJlIGNsaWVudGlkIGlmIG5vdGhpbmcgc3BlY2lmaWVkXHJcbiAgICAgICAgICogQXBwIHdpbGwgdXNlIGlkdG9rZW4gZm9yIGNhbGxzIHRvIGl0c2VsZlxyXG4gICAgICAgICAqIGNoZWNrIGlmIGl0J3Mgc3RhcmluZyBmcm9tIGh0dHAgb3IgaHR0cHMsIG5lZWRzIHRvIG1hdGNoIHdpdGggYXBwIGhvc3RcclxuICAgICAgICAgKi9cclxuICAgICAgICBpZiAoZW5kcG9pbnQuaW5kZXhPZihcImh0dHA6Ly9cIikgPiAtMSB8fCBlbmRwb2ludC5pbmRleE9mKFwiaHR0cHM6Ly9cIikgPiAtMSkge1xyXG4gICAgICAgICAgICBpZiAoVXJsVXRpbHMuZ2V0SG9zdEZyb21VcmkoZW5kcG9pbnQpID09PSBVcmxVdGlscy5nZXRIb3N0RnJvbVVyaShzdXBlci5nZXRSZWRpcmVjdFVyaSgpKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBcnJheTxzdHJpbmc+KHRoaXMubXNhbENvbmZpZy5hdXRoLmNsaWVudElkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAqIGluIGFuZ3VsYXIgbGV2ZWwsIHRoZSB1cmwgZm9yICRodHRwIGludGVyY2VwdG9yIGNhbGwgY291bGQgYmUgcmVsYXRpdmUgdXJsLFxyXG4gICAgICAgICAgICAgKiBpZiBpdCdzIHJlbGF0aXZlIGNhbGwsIHdlJ2xsIHRyZWF0IGl0IGFzIGFwcCBiYWNrZW5kIGNhbGwuXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEFycmF5PHN0cmluZz4odGhpcy5tc2FsQ29uZmlnLmF1dGguY2xpZW50SWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gaWYgbm90IHRoZSBhcHAncyBvd24gYmFja2VuZCBvciBub3QgYSBkb21haW4gbGlzdGVkIGluIHRoZSBlbmRwb2ludHMgc3RydWN0dXJlXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==

@@ -8,2 +8,4 @@ import { __decorate, __param } from "tslib";

import { MSAL_CONFIG, MSAL_CONFIG_ANGULAR } from "./constants";
import { UrlUtils } from "msal/lib-commonjs/utils/UrlUtils";
import { WindowUtils } from "msal/lib-commonjs/utils/WindowUtils";
var MsalGuard = /** @class */ (function () {

@@ -23,2 +25,8 @@ function MsalGuard(msalConfig, msalAngularConfig, authService, router, activatedRoute, location, platformLocation, broadcastService) {

this.authService.getLogger().verbose("location change event from old url to new url");
// If a page with MSAL Guard is set as the redirect for acquireTokenSilent,
// short-circuit to prevent redirecting or popups.
if (UrlUtils.urlContainsHash(window.location.hash) && WindowUtils.isInIframe()) {
this.authService.getLogger().warning("redirectUri set to page with MSAL Guard. It is recommended to not set redirectUri to a page that requires authentication.");
return false;
}
if (!this.authService.getAccount()) {

@@ -33,3 +41,5 @@ if (this.msalAngularConfig.popUp) {

}
var routePath = "" + window.location.origin + state.url;
this.authService.loginRedirect({
redirectStartPage: routePath,
scopes: this.msalAngularConfig.consentScopes,

@@ -71,2 +81,2 @@ extraQueryParameters: this.msalAngularConfig.extraQueryParameters

export { MsalGuard };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC1ndWFyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGF6dXJlL21zYWwtYW5ndWxhci8iLCJzb3VyY2VzIjpbInNyYy9tc2FsLWd1YXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDSCxjQUFjLEVBQ2Qsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFDM0MsbUJBQW1CLEdBQ3RCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUd2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRy9EO0lBRUksbUJBQ2lDLFVBQXlCLEVBQ2pCLGlCQUEyQyxFQUN4RSxXQUF3QixFQUN4QixNQUFjLEVBQ2QsY0FBOEIsRUFDOUIsUUFBa0IsRUFDbEIsZ0JBQWtDLEVBQ2xDLGdCQUFrQztRQVBiLGVBQVUsR0FBVixVQUFVLENBQWU7UUFDakIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtRQUN4RSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQzNDLENBQUM7SUFFSiwrQkFBVyxHQUFYLFVBQVksS0FBNkIsRUFBRSxLQUEwQjtRQUFyRSxpQkErQkM7UUE5QkcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsK0NBQStDLENBQUMsQ0FBQztRQUV0RixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNoQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUU7Z0JBQzlCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7b0JBQy9CLE1BQU0sRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYTtvQkFDNUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQjtpQkFDcEUsQ0FBQztxQkFDRyxJQUFJLENBQUMsY0FBTSxPQUFBLElBQUksRUFBSixDQUFJLENBQUM7cUJBQ2hCLEtBQUssQ0FBQyxjQUFNLE9BQUEsS0FBSyxFQUFMLENBQUssQ0FBQyxDQUFDO2FBQzNCO1lBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7Z0JBQzNCLE1BQU0sRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYTtnQkFDNUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQjthQUNwRSxDQUFDLENBQUM7U0FDTjthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDO2dCQUN2QyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDMUMsQ0FBQztpQkFDRyxJQUFJLENBQUMsVUFBQyxNQUFvQjtnQkFDdkIsS0FBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsRUFBRyxNQUFNLENBQUMsQ0FBQztnQkFDOUQsT0FBTyxJQUFJLENBQUM7WUFDaEIsQ0FBQyxDQUFDO2lCQUNELEtBQUssQ0FBQyxVQUFDLEtBQWdCO2dCQUNwQixLQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUM1RCxPQUFPLEtBQUssQ0FBQztZQUNqQixDQUFDLENBQUMsQ0FBQztTQUNWO0lBRUwsQ0FBQzs7Z0RBekNJLE1BQU0sU0FBQyxXQUFXO2dEQUNsQixNQUFNLFNBQUMsbUJBQW1CO2dCQUNOLFdBQVc7Z0JBQ2hCLE1BQU07Z0JBQ0UsY0FBYztnQkFDcEIsUUFBUTtnQkFDQSxnQkFBZ0I7Z0JBQ2hCLGdCQUFnQjs7SUFWckMsU0FBUztRQURyQixVQUFVLEVBQUU7UUFJSixXQUFBLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUNuQixXQUFBLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO09BSnZCLFNBQVMsQ0E4Q3JCO0lBQUQsZ0JBQUM7Q0FBQSxBQTlDRCxJQThDQztTQTlDWSxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtcclxuICAgIEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGUsIFJvdXRlcixcclxuICAgIFJvdXRlclN0YXRlU25hcHNob3QsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBNc2FsU2VydmljZSB9IGZyb20gXCIuL21zYWwuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiwgUGxhdGZvcm1Mb2NhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgQnJvYWRjYXN0U2VydmljZSB9IGZyb20gXCIuL2Jyb2FkY2FzdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24sIEF1dGhSZXNwb25zZSwgQXV0aEVycm9yIH0gZnJvbSBcIm1zYWxcIjtcclxuaW1wb3J0IHsgTXNhbEFuZ3VsYXJDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4vbXNhbC1hbmd1bGFyLmNvbmZpZ3VyYXRpb25cIjtcclxuaW1wb3J0IHsgTVNBTF9DT05GSUcsIE1TQUxfQ09ORklHX0FOR1VMQVIgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE1zYWxHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KE1TQUxfQ09ORklHKSBwcml2YXRlIG1zYWxDb25maWc6IENvbmZpZ3VyYXRpb24sXHJcbiAgICAgICAgQEluamVjdChNU0FMX0NPTkZJR19BTkdVTEFSKSBwcml2YXRlIG1zYWxBbmd1bGFyQ29uZmlnOiBNc2FsQW5ndWxhckNvbmZpZ3VyYXRpb24sXHJcbiAgICAgICAgcHJpdmF0ZSBhdXRoU2VydmljZTogTXNhbFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgICAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcclxuICAgICAgICBwcml2YXRlIHBsYXRmb3JtTG9jYXRpb246IFBsYXRmb3JtTG9jYXRpb24sXHJcbiAgICAgICAgcHJpdmF0ZSBicm9hZGNhc3RTZXJ2aWNlOiBCcm9hZGNhc3RTZXJ2aWNlXHJcbiAgICApIHt9XHJcblxyXG4gICAgY2FuQWN0aXZhdGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkudmVyYm9zZShcImxvY2F0aW9uIGNoYW5nZSBldmVudCBmcm9tIG9sZCB1cmwgdG8gbmV3IHVybFwiKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmF1dGhTZXJ2aWNlLmdldEFjY291bnQoKSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tc2FsQW5ndWxhckNvbmZpZy5wb3BVcCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UubG9naW5Qb3B1cCh7XHJcbiAgICAgICAgICAgICAgICAgICAgc2NvcGVzOiB0aGlzLm1zYWxBbmd1bGFyQ29uZmlnLmNvbnNlbnRTY29wZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFRdWVyeVBhcmFtZXRlcnM6IHRoaXMubXNhbEFuZ3VsYXJDb25maWcuZXh0cmFRdWVyeVBhcmFtZXRlcnNcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKCkgPT4gZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmxvZ2luUmVkaXJlY3Qoe1xyXG4gICAgICAgICAgICAgICAgc2NvcGVzOiB0aGlzLm1zYWxBbmd1bGFyQ29uZmlnLmNvbnNlbnRTY29wZXMsXHJcbiAgICAgICAgICAgICAgICBleHRyYVF1ZXJ5UGFyYW1ldGVyczogdGhpcy5tc2FsQW5ndWxhckNvbmZpZy5leHRyYVF1ZXJ5UGFyYW1ldGVyc1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5hY3F1aXJlVG9rZW5TaWxlbnQoe1xyXG4gICAgICAgICAgICAgICAgc2NvcGVzOiBbdGhpcy5tc2FsQ29uZmlnLmF1dGguY2xpZW50SWRdXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAudGhlbigocmVzdWx0OiBBdXRoUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2UuYnJvYWRjYXN0KFwibXNhbDpsb2dpblN1Y2Nlc3NcIiwgIHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcjogQXV0aEVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdChcIm1zYWw6bG9naW5GYWlsdXJlXCIsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC1ndWFyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGF6dXJlL21zYWwtYW5ndWxhci8iLCJzb3VyY2VzIjpbInNyYy9tc2FsLWd1YXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDSCxjQUFjLEVBQ2Qsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFDM0MsbUJBQW1CLEdBQ3RCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUd2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFHbEU7SUFFSSxtQkFDaUMsVUFBeUIsRUFDakIsaUJBQTJDLEVBQ3hFLFdBQXdCLEVBQ3hCLE1BQWMsRUFDZCxjQUE4QixFQUM5QixRQUFrQixFQUNsQixnQkFBa0MsRUFDbEMsZ0JBQWtDO1FBUGIsZUFBVSxHQUFWLFVBQVUsQ0FBZTtRQUNqQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQTBCO1FBQ3hFLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFDM0MsQ0FBQztJQUVKLCtCQUFXLEdBQVgsVUFBWSxLQUE2QixFQUFFLEtBQTBCO1FBQXJFLGlCQXlDQztRQXhDRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1FBRXRGLDJFQUEyRTtRQUMzRSxrREFBa0Q7UUFDbEQsSUFBSSxRQUFRLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQzVFLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLDJIQUEySCxDQUFDLENBQUM7WUFDbEssT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNoQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUU7Z0JBQzlCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7b0JBQy9CLE1BQU0sRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYTtvQkFDNUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQjtpQkFDcEUsQ0FBQztxQkFDRyxJQUFJLENBQUMsY0FBTSxPQUFBLElBQUksRUFBSixDQUFJLENBQUM7cUJBQ2hCLEtBQUssQ0FBQyxjQUFNLE9BQUEsS0FBSyxFQUFMLENBQUssQ0FBQyxDQUFDO2FBQzNCO1lBRUQsSUFBTSxTQUFTLEdBQUcsS0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBSyxDQUFDO1lBRTFELElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO2dCQUMzQixpQkFBaUIsRUFBRSxTQUFTO2dCQUM1QixNQUFNLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWE7Z0JBQzVDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0I7YUFDcEUsQ0FBQyxDQUFDO1NBQ047YUFBTTtZQUNILE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDdkMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2FBQzFDLENBQUM7aUJBQ0csSUFBSSxDQUFDLFVBQUMsTUFBb0I7Z0JBQ3ZCLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUcsTUFBTSxDQUFDLENBQUM7Z0JBQzlELE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUMsQ0FBQztpQkFDRCxLQUFLLENBQUMsVUFBQyxLQUFnQjtnQkFDcEIsS0FBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDNUQsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQyxDQUFDLENBQUM7U0FDVjtJQUVMLENBQUM7O2dEQW5ESSxNQUFNLFNBQUMsV0FBVztnREFDbEIsTUFBTSxTQUFDLG1CQUFtQjtnQkFDTixXQUFXO2dCQUNoQixNQUFNO2dCQUNFLGNBQWM7Z0JBQ3BCLFFBQVE7Z0JBQ0EsZ0JBQWdCO2dCQUNoQixnQkFBZ0I7O0lBVnJDLFNBQVM7UUFEckIsVUFBVSxFQUFFO1FBSUosV0FBQSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDbkIsV0FBQSxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtPQUp2QixTQUFTLENBd0RyQjtJQUFELGdCQUFDO0NBQUEsQUF4REQsSUF3REM7U0F4RFksU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgICBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkFjdGl2YXRlLCBSb3V0ZXIsXHJcbiAgICBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxyXG59IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgTXNhbFNlcnZpY2UgfSBmcm9tIFwiLi9tc2FsLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTG9jYXRpb24sIFBsYXRmb3JtTG9jYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IEJyb2FkY2FzdFNlcnZpY2UgfSBmcm9tIFwiLi9icm9hZGNhc3Quc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uLCBBdXRoUmVzcG9uc2UsIEF1dGhFcnJvciB9IGZyb20gXCJtc2FsXCI7XHJcbmltcG9ydCB7IE1zYWxBbmd1bGFyQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuL21zYWwtYW5ndWxhci5jb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7IE1TQUxfQ09ORklHLCBNU0FMX0NPTkZJR19BTkdVTEFSIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IFVybFV0aWxzIH0gZnJvbSBcIm1zYWwvbGliLWNvbW1vbmpzL3V0aWxzL1VybFV0aWxzXCI7XHJcbmltcG9ydCB7IFdpbmRvd1V0aWxzIH0gZnJvbSBcIm1zYWwvbGliLWNvbW1vbmpzL3V0aWxzL1dpbmRvd1V0aWxzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBNc2FsR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdChNU0FMX0NPTkZJRykgcHJpdmF0ZSBtc2FsQ29uZmlnOiBDb25maWd1cmF0aW9uLFxyXG4gICAgICAgIEBJbmplY3QoTVNBTF9DT05GSUdfQU5HVUxBUikgcHJpdmF0ZSBtc2FsQW5ndWxhckNvbmZpZzogTXNhbEFuZ3VsYXJDb25maWd1cmF0aW9uLFxyXG4gICAgICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IE1zYWxTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAgICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXHJcbiAgICAgICAgcHJpdmF0ZSBwbGF0Zm9ybUxvY2F0aW9uOiBQbGF0Zm9ybUxvY2F0aW9uLFxyXG4gICAgICAgIHByaXZhdGUgYnJvYWRjYXN0U2VydmljZTogQnJvYWRjYXN0U2VydmljZVxyXG4gICAgKSB7fVxyXG5cclxuICAgIGNhbkFjdGl2YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldExvZ2dlcigpLnZlcmJvc2UoXCJsb2NhdGlvbiBjaGFuZ2UgZXZlbnQgZnJvbSBvbGQgdXJsIHRvIG5ldyB1cmxcIik7XHJcblxyXG4gICAgICAgIC8vIElmIGEgcGFnZSB3aXRoIE1TQUwgR3VhcmQgaXMgc2V0IGFzIHRoZSByZWRpcmVjdCBmb3IgYWNxdWlyZVRva2VuU2lsZW50LFxyXG4gICAgICAgIC8vIHNob3J0LWNpcmN1aXQgdG8gcHJldmVudCByZWRpcmVjdGluZyBvciBwb3B1cHMuXHJcbiAgICAgICAgaWYgKFVybFV0aWxzLnVybENvbnRhaW5zSGFzaCh3aW5kb3cubG9jYXRpb24uaGFzaCkgJiYgV2luZG93VXRpbHMuaXNJbklmcmFtZSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0TG9nZ2VyKCkud2FybmluZyhcInJlZGlyZWN0VXJpIHNldCB0byBwYWdlIHdpdGggTVNBTCBHdWFyZC4gSXQgaXMgcmVjb21tZW5kZWQgdG8gbm90IHNldCByZWRpcmVjdFVyaSB0byBhIHBhZ2UgdGhhdCByZXF1aXJlcyBhdXRoZW50aWNhdGlvbi5cIik7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5hdXRoU2VydmljZS5nZXRBY2NvdW50KCkpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubXNhbEFuZ3VsYXJDb25maWcucG9wVXApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmxvZ2luUG9wdXAoe1xyXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlczogdGhpcy5tc2FsQW5ndWxhckNvbmZpZy5jb25zZW50U2NvcGVzLFxyXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhUXVlcnlQYXJhbWV0ZXJzOiB0aGlzLm1zYWxBbmd1bGFyQ29uZmlnLmV4dHJhUXVlcnlQYXJhbWV0ZXJzXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKCgpID0+IGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3Qgcm91dGVQYXRoID0gYCR7d2luZG93LmxvY2F0aW9uLm9yaWdpbn0ke3N0YXRlLnVybH1gO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5sb2dpblJlZGlyZWN0KHtcclxuICAgICAgICAgICAgICAgIHJlZGlyZWN0U3RhcnRQYWdlOiByb3V0ZVBhdGgsXHJcbiAgICAgICAgICAgICAgICBzY29wZXM6IHRoaXMubXNhbEFuZ3VsYXJDb25maWcuY29uc2VudFNjb3BlcyxcclxuICAgICAgICAgICAgICAgIGV4dHJhUXVlcnlQYXJhbWV0ZXJzOiB0aGlzLm1zYWxBbmd1bGFyQ29uZmlnLmV4dHJhUXVlcnlQYXJhbWV0ZXJzXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmFjcXVpcmVUb2tlblNpbGVudCh7XHJcbiAgICAgICAgICAgICAgICBzY29wZXM6IFt0aGlzLm1zYWxDb25maWcuYXV0aC5jbGllbnRJZF1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC50aGVuKChyZXN1bHQ6IEF1dGhSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3QoXCJtc2FsOmxvZ2luU3VjY2Vzc1wiLCAgcmVzdWx0KTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yOiBBdXRoRXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2UuYnJvYWRjYXN0KFwibXNhbDpsb2dpbkZhaWx1cmVcIiwgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==

@@ -50,3 +50,5 @@ import { __assign, __decorate, __extends, __param } from "tslib";

MsalService.prototype.isUnprotectedResource = function (url) {
var unprotectedResources = (this.msalConfig.framework && this.msalConfig.framework.unprotectedResources) || this.msalAngularConfig.unprotectedResources || [];
var frameworkUnprotectedResources = this.msalConfig.framework && this.msalConfig.framework.unprotectedResources;
var configUnprotectedResources = this.msalAngularConfig.unprotectedResources || [];
var unprotectedResources = frameworkUnprotectedResources && frameworkUnprotectedResources.length ? frameworkUnprotectedResources : configUnprotectedResources;
return unprotectedResources.some(function (resource) { return url.indexOf(resource) > -1; });

@@ -144,6 +146,7 @@ };

}
if (this.msalConfig.framework && this.msalConfig.framework.protectedResourceMap) {
var frameworkProtectedResourceMap = this.msalConfig.framework && this.msalConfig.framework.protectedResourceMap;
if (frameworkProtectedResourceMap) {
this.getLogger().info("msalConfig.framework.protectedResourceMap is deprecated, use msalAngularConfig.protectedResourceMap");
}
var protectedResourceMap = (this.msalConfig.framework && this.msalConfig.framework.protectedResourceMap) || new Map(this.msalAngularConfig.protectedResourceMap);
var protectedResourceMap = frameworkProtectedResourceMap && frameworkProtectedResourceMap.size ? frameworkProtectedResourceMap : new Map(this.msalAngularConfig.protectedResourceMap);
// process all protected resources and send the matched one

@@ -189,2 +192,2 @@ var keyForEndpoint = Array.from(protectedResourceMap.keys()).find(function (key) { return endpoint.indexOf(key) > -1; });

export { ɵ0 };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGF6dXJlL21zYWwtYW5ndWxhci8iLCJzb3VyY2VzIjpbInNyYy9tc2FsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQ0gsb0JBQW9CLEVBTXZCLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNGLE1BQU0sRUFDVixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFJdEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFL0QsSUFBTSxlQUFlLEdBQUcsVUFBQyxNQUFxQjtJQUMxQyw2QkFDTyxNQUFNLEtBQ1QsU0FBUyx3QkFDRixNQUFNLENBQUMsU0FBUyxLQUNuQixTQUFTLEVBQUUsSUFBSSxPQUVyQjtBQUNOLENBQUMsQ0FBQzs7QUFHRjtJQUFpQywrQkFBb0I7SUFFakQscUJBQ2lDLFVBQXlCLEVBQ2pCLGlCQUEyQyxFQUN4RSxNQUFjLEVBQ2QsZ0JBQWtDO1FBSjlDLFlBTUksa0JBQU0sZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBOEJyQztRQW5DZ0MsZ0JBQVUsR0FBVixVQUFVLENBQWU7UUFDakIsdUJBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtRQUN4RSxZQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsc0JBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUkxQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLEVBQUUsVUFBQyxDQUFjO1lBQzVELEtBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxP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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gICAgVXNlckFnZW50QXBwbGljYXRpb24sXHJcbiAgICBDb25maWd1cmF0aW9uLFxyXG4gICAgQXV0aGVudGljYXRpb25QYXJhbWV0ZXJzLFxyXG4gICAgQXV0aFJlc3BvbnNlLFxyXG4gICAgQXV0aEVycm9yLFxyXG4gICAgTG9nZ2VyXHJcbn0gZnJvbSBcIm1zYWxcIjtcclxuaW1wb3J0IHtcclxuICAgICBSb3V0ZXJcclxufSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7QnJvYWRjYXN0U2VydmljZX0gZnJvbSBcIi4vYnJvYWRjYXN0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHtNU0FMRXJyb3J9IGZyb20gXCIuL01TQUxFcnJvclwiO1xyXG5pbXBvcnQgeyBBdXRoQ2FjaGUgfSBmcm9tIFwibXNhbC9saWItY29tbW9uanMvY2FjaGUvQXV0aENhY2hlXCI7XHJcbmltcG9ydCB7IE1zYWxBbmd1bGFyQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuL21zYWwtYW5ndWxhci5jb25maWd1cmF0aW9uXCI7XHJcbmltcG9ydCB7IGF1dGhSZXNwb25zZUNhbGxiYWNrLCBlcnJvclJlY2VpdmVkQ2FsbGJhY2ssIHRva2VuUmVjZWl2ZWRDYWxsYmFjayB9IGZyb20gXCJtc2FsL2xpYi1jb21tb25qcy9Vc2VyQWdlbnRBcHBsaWNhdGlvblwiO1xyXG5pbXBvcnQgeyBVcmxVdGlscyB9IGZyb20gXCJtc2FsL2xpYi1jb21tb25qcy91dGlscy9VcmxVdGlsc1wiO1xyXG5pbXBvcnQgeyBNU0FMX0NPTkZJRywgTVNBTF9DT05GSUdfQU5HVUxBUiB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5cclxuY29uc3QgYnVpbGRNc2FsQ29uZmlnID0gKGNvbmZpZzogQ29uZmlndXJhdGlvbikgOiBDb25maWd1cmF0aW9uID0+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uY29uZmlnLFxyXG4gICAgICAgIGZyYW1ld29yazoge1xyXG4gICAgICAgICAgICAuLi5jb25maWcuZnJhbWV3b3JrLFxyXG4gICAgICAgICAgICBpc0FuZ3VsYXI6IHRydWVcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59O1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTXNhbFNlcnZpY2UgZXh0ZW5kcyBVc2VyQWdlbnRBcHBsaWNhdGlvbiB7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdChNU0FMX0NPTkZJRykgcHJpdmF0ZSBtc2FsQ29uZmlnOiBDb25maWd1cmF0aW9uLFxyXG4gICAgICAgIEBJbmplY3QoTVNBTF9DT05GSUdfQU5HVUxBUikgcHJpdmF0ZSBtc2FsQW5ndWxhckNvbmZpZzogTXNhbEFuZ3VsYXJDb25maWd1cmF0aW9uLFxyXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBicm9hZGNhc3RTZXJ2aWNlOiBCcm9hZGNhc3RTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihidWlsZE1zYWxDb25maWcobXNhbENvbmZpZykpO1xyXG5cclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1zYWw6cG9wVXBIYXNoQ2hhbmdlZFwiLCAoZTogQ3VzdG9tRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5nZXRMb2dnZXIoKS52ZXJib3NlKFwicG9wVXBIYXNoQ2hhbmdlZCBcIik7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtc2FsOnBvcFVwQ2xvc2VkJywgKGU6IEN1c3RvbUV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBlcnJvclBhcnRzID0gZS5kZXRhaWwuc3BsaXQoJ3wnKTtcclxuICAgICAgICAgICAgdmFyIG1zYWxFcnJvciA9IG5ldyBNU0FMRXJyb3IoZXJyb3JQYXJ0c1swXSwgZXJyb3JQYXJ0c1sxXSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmdldExvZ2luSW5Qcm9ncmVzcygpKSB7XHJcbiAgICAgICAgICAgICAgICBicm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdCgnbXNhbDpsb2dpbkZhaWx1cmUnLCBtc2FsRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRsb2dpbkluUHJvZ3Jlc3MoZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuZ2V0QWNxdWlyZVRva2VuSW5Qcm9ncmVzcygpKSB7XHJcbiAgICAgICAgICAgICAgICBicm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdCgnbXNhbDphY3F1aXJlVG9rZW5GYWlsdXJlJywgbXNhbEVycm9yKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0QWNxdWlyZVRva2VuSW5Qcm9ncmVzcyhmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm91dGVyLmNvbmZpZy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFyb3V0ZXIuY29uZmlnW2ldLmNhbkFjdGl2YXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubXNhbEFuZ3VsYXJDb25maWcudW5wcm90ZWN0ZWRSZXNvdXJjZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzVW5wcm90ZWN0ZWRSZXNvdXJjZShyb3V0ZXIuY29uZmlnW2ldLnBhdGgpICYmICF0aGlzLmlzRW1wdHkocm91dGVyLmNvbmZpZ1tpXS5wYXRoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tc2FsQW5ndWxhckNvbmZpZy51bnByb3RlY3RlZFJlc291cmNlcy5wdXNoKHJvdXRlci5jb25maWdbaV0ucGF0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzVW5wcm90ZWN0ZWRSZXNvdXJjZSh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IHVucHJvdGVjdGVkUmVzb3VyY2VzID0gKHRoaXMubXNhbENvbmZpZy5mcmFtZXdvcmsgJiYgdGhpcy5tc2FsQ29uZmlnLmZyYW1ld29yay51bnByb3RlY3RlZFJlc291cmNlcykgfHwgdGhpcy5tc2FsQW5ndWxhckNvbmZpZy51bnByb3RlY3RlZFJlc291cmNlcyB8fCBbXTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHVucHJvdGVjdGVkUmVzb3VyY2VzLnNvbWUocmVzb3VyY2UgPT4gdXJsLmluZGV4T2YocmVzb3VyY2UpID4gLTEpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaXNFbXB0eShzdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAodHlwZW9mIHN0ciA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhc3RyIHx8IDAgPT09IHN0ci5sZW5ndGgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRDYWNoZVN0b3JhZ2UoKTogQXV0aENhY2hlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jYWNoZVN0b3JhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGxvZ2luUG9wdXAocmVxdWVzdD86IEF1dGhlbnRpY2F0aW9uUGFyYW1ldGVycyk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHN1cGVyLmxvZ2luUG9wdXAocmVxdWVzdClcclxuICAgICAgICAgICAgLnRoZW4oKGF1dGhSZXNwb25zZTogQXV0aFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2UuYnJvYWRjYXN0KFwibXNhbDpsb2dpblN1Y2Nlc3NcIiwgYXV0aFJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhdXRoUmVzcG9uc2U7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3I6IEF1dGhFcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdChcIm1zYWw6bG9naW5GYWlsdXJlXCIsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0TG9nZ2VyKCkuZXJyb3IoXCJFcnJvciBkdXJpbmcgbG9naW46XFxuXCIgKyBlcnJvci5lcnJvck1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhY3F1aXJlVG9rZW5TaWxlbnQocmVxdWVzdDogQXV0aGVudGljYXRpb25QYXJhbWV0ZXJzKTogUHJvbWlzZTxBdXRoUmVzcG9uc2U+IHtcclxuICAgICAgICByZXR1cm4gc3VwZXIuYWNxdWlyZVRva2VuU2lsZW50KHJlcXVlc3QpXHJcbiAgICAgICAgICAgIC50aGVuKChhdXRoUmVzcG9uc2U6IEF1dGhSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdCgnbXNhbDphY3F1aXJlVG9rZW5TdWNjZXNzJywgYXV0aFJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhdXRoUmVzcG9uc2U7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3I6IEF1dGhFcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdCgnbXNhbDphY3F1aXJlVG9rZW5GYWlsdXJlJywgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRMb2dnZXIoKS5lcnJvcignRXJyb3Igd2hlbiBhY3F1aXJpbmcgdG9rZW4gZm9yIHNjb3BlczogJyArIHJlcXVlc3Quc2NvcGVzICsgXCIgXCIgKyBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhY3F1aXJlVG9rZW5Qb3B1cChyZXF1ZXN0OiBBdXRoZW50aWNhdGlvblBhcmFtZXRlcnMpOiBQcm9taXNlPEF1dGhSZXNwb25zZT4ge1xyXG4gICAgICAgIHJldHVybiBzdXBlci5hY3F1aXJlVG9rZW5Qb3B1cChyZXF1ZXN0KVxyXG4gICAgICAgICAgICAudGhlbigoYXV0aFJlc3BvbnNlOiBBdXRoUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3QoJ21zYWw6YWNxdWlyZVRva2VuU3VjY2VzcycsIGF1dGhSZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXV0aFJlc3BvbnNlO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yOiBBdXRoRXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3QoJ21zYWw6YWNxdWlyZVRva2VuRmFpbHVyZScsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0TG9nZ2VyKCkuZXJyb3IoJ0Vycm9yIHdoZW4gYWNxdWlyaW5nIHRva2VuIGZvciBzY29wZXMgOiAnICsgcmVxdWVzdC5zY29wZXMgK1wiIFwiKyAgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZVJlZGlyZWN0Q2FsbGJhY2sodG9rZW5SZWNlaXZlZENhbGxiYWNrOiB0b2tlblJlY2VpdmVkQ2FsbGJhY2ssIGVycm9yUmVjZWl2ZWRDYWxsYmFjazogZXJyb3JSZWNlaXZlZENhbGxiYWNrKTogdm9pZDtcclxuICAgIGhhbmRsZVJlZGlyZWN0Q2FsbGJhY2soYXV0aENhbGxiYWNrOiBhdXRoUmVzcG9uc2VDYWxsYmFjayk6IHZvaWQ7XHJcbiAgICBoYW5kbGVSZWRpcmVjdENhbGxiYWNrKGF1dGhPclRva2VuQ2FsbGJhY2s6IGF1dGhSZXNwb25zZUNhbGxiYWNrIHwgdG9rZW5SZWNlaXZlZENhbGxiYWNrLCBlcnJvclJlY2VpdmVkQ2FsbGJhY2s/OiBlcnJvclJlY2VpdmVkQ2FsbGJhY2spOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5oYW5kbGVSZWRpcmVjdENhbGxiYWNrKChhdXRoRXJyb3I6IEF1dGhFcnJvciwgYXV0aFJlc3BvbnNlOiBBdXRoUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgaWYgKGF1dGhSZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGF1dGhSZXNwb25zZS50b2tlblR5cGUgPT09IFwiaWRfdG9rZW5cIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3QoXCJtc2FsOmxvZ2luU3VjY2Vzc1wiLCBhdXRoUmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2UuYnJvYWRjYXN0KFwibXNhbDphY3F1aXJlVG9rZW5TdWNjZXNzXCIsIGF1dGhSZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yUmVjZWl2ZWRDYWxsYmFjaykge1xyXG4gICAgICAgICAgICAgICAgICAgIChhdXRoT3JUb2tlbkNhbGxiYWNrIGFzIHRva2VuUmVjZWl2ZWRDYWxsYmFjaykoYXV0aFJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgKGF1dGhPclRva2VuQ2FsbGJhY2sgYXMgYXV0aFJlc3BvbnNlQ2FsbGJhY2spKG51bGwsIGF1dGhSZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGF1dGhFcnJvcikge1xyXG4gICAgICAgICAgICAgICAgaWYgKGF1dGhSZXNwb25zZS50b2tlblR5cGUgPT09IFwiaWRfdG9rZW5cIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3QoXCJtc2FsOmxvZ2luRmFpbHVyZVwiLCBhdXRoRXJyb3IpO1xyXG5cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdChcIm1zYWw6YWNxdWlyZVRva2VuRmFpbHVyZVwiLCBhdXRoRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChlcnJvclJlY2VpdmVkQ2FsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgICAgICBlcnJvclJlY2VpdmVkQ2FsbGJhY2soYXV0aEVycm9yLCBhdXRoUmVzcG9uc2UuYWNjb3VudFN0YXRlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgKGF1dGhPclRva2VuQ2FsbGJhY2sgYXMgYXV0aFJlc3BvbnNlQ2FsbGJhY2spKGF1dGhFcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsZWFyQ2FjaGVGb3JTY29wZShhY2Nlc3NUb2tlbjogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHN1cGVyLmNsZWFyQ2FjaGVGb3JTY29wZShhY2Nlc3NUb2tlbik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNjb3Blc0ZvckVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIDogQXJyYXk8c3RyaW5nPiB7XHJcbiAgICAgICAgaWYgKHRoaXMubXNhbENvbmZpZy5mcmFtZXdvcmsgJiYgdGhpcy5tc2FsQ29uZmlnLmZyYW1ld29yay51bnByb3RlY3RlZFJlc291cmNlcykge1xyXG4gICAgICAgICAgICB0aGlzLmdldExvZ2dlcigpLmluZm8oXCJtc2FsQ29uZmlnLmZyYW1ld29yay51bnByb3RlY3RlZFJlc291cmNlcyBpcyBkZXByZWNhdGVkLCB1c2UgbXNhbEFuZ3VsYXJDb25maWcudW5wcm90ZWN0ZWRSZXNvdXJjZXNcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBpZiB1c2VyIHNwZWNpZmllZCBsaXN0IG9mIHVucHJvdGVjdGVkUmVzb3VyY2VzLCBubyBuZWVkIHRvIHNlbmQgdG9rZW4gdG8gdGhlc2UgZW5kcG9pbnRzLCByZXR1cm4gbnVsbC5cclxuICAgICAgICBjb25zdCBpc1VucHJvdGVjdGVkID0gdGhpcy5pc1VucHJvdGVjdGVkUmVzb3VyY2UoZW5kcG9pbnQpO1xyXG4gICAgICAgIGlmIChpc1VucHJvdGVjdGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMubXNhbENvbmZpZy5mcmFtZXdvcmsgJiYgdGhpcy5tc2FsQ29uZmlnLmZyYW1ld29yay5wcm90ZWN0ZWRSZXNvdXJjZU1hcCkge1xyXG4gICAgICAgICAgICB0aGlzLmdldExvZ2dlcigpLmluZm8oXCJtc2FsQ29uZmlnLmZyYW1ld29yay5wcm90ZWN0ZWRSZXNvdXJjZU1hcCBpcyBkZXByZWNhdGVkLCB1c2UgbXNhbEFuZ3VsYXJDb25maWcucHJvdGVjdGVkUmVzb3VyY2VNYXBcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBwcm90ZWN0ZWRSZXNvdXJjZU1hcCA9ICh0aGlzLm1zYWxDb25maWcuZnJhbWV3b3JrICYmIHRoaXMubXNhbENvbmZpZy5mcmFtZXdvcmsucHJvdGVjdGVkUmVzb3VyY2VNYXApIHx8IG5ldyBNYXAodGhpcy5tc2FsQW5ndWxhckNvbmZpZy5wcm90ZWN0ZWRSZXNvdXJjZU1hcCk7XHJcblxyXG4gICAgICAgIC8vIHByb2Nlc3MgYWxsIHByb3RlY3RlZCByZXNvdXJjZXMgYW5kIHNlbmQgdGhlIG1hdGNoZWQgb25lXHJcbiAgICAgICAgY29uc3Qga2V5Rm9yRW5kcG9pbnQgPSBBcnJheS5mcm9tKHByb3RlY3RlZFJlc291cmNlTWFwLmtleXMoKSkuZmluZChrZXkgPT4gZW5kcG9pbnQuaW5kZXhPZihrZXkpID4gLTEpO1xyXG4gICAgICAgIGlmIChrZXlGb3JFbmRwb2ludCkge1xyXG4gICAgICAgICAgICByZXR1cm4gcHJvdGVjdGVkUmVzb3VyY2VNYXAuZ2V0KGtleUZvckVuZHBvaW50KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qXHJcbiAgICAgICAgICogZGVmYXVsdCByZXNvdXJjZSB3aWxsIGJlIGNsaWVudGlkIGlmIG5vdGhpbmcgc3BlY2lmaWVkXHJcbiAgICAgICAgICogQXBwIHdpbGwgdXNlIGlkdG9rZW4gZm9yIGNhbGxzIHRvIGl0c2VsZlxyXG4gICAgICAgICAqIGNoZWNrIGlmIGl0J3Mgc3RhcmluZyBmcm9tIGh0dHAgb3IgaHR0cHMsIG5lZWRzIHRvIG1hdGNoIHdpdGggYXBwIGhvc3RcclxuICAgICAgICAgKi9cclxuICAgICAgICBpZiAoZW5kcG9pbnQuaW5kZXhPZihcImh0dHA6Ly9cIikgPiAtMSB8fCBlbmRwb2ludC5pbmRleE9mKFwiaHR0cHM6Ly9cIikgPiAtMSkge1xyXG4gICAgICAgICAgICBpZiAoVXJsVXRpbHMuZ2V0SG9zdEZyb21VcmkoZW5kcG9pbnQpID09PSBVcmxVdGlscy5nZXRIb3N0RnJvbVVyaShzdXBlci5nZXRSZWRpcmVjdFVyaSgpKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBcnJheTxzdHJpbmc+KHRoaXMubXNhbENvbmZpZy5hdXRoLmNsaWVudElkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAqIGluIGFuZ3VsYXIgbGV2ZWwsIHRoZSB1cmwgZm9yICRodHRwIGludGVyY2VwdG9yIGNhbGwgY291bGQgYmUgcmVsYXRpdmUgdXJsLFxyXG4gICAgICAgICAgICAgKiBpZiBpdCdzIHJlbGF0aXZlIGNhbGwsIHdlJ2xsIHRyZWF0IGl0IGFzIGFwcCBiYWNrZW5kIGNhbGwuXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEFycmF5PHN0cmluZz4odGhpcy5tc2FsQ29uZmlnLmF1dGguY2xpZW50SWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gaWYgbm90IHRoZSBhcHAncyBvd24gYmFja2VuZCBvciBub3QgYSBkb21haW4gbGlzdGVkIGluIHRoZSBlbmRwb2ludHMgc3RydWN0dXJlXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNhbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGF6dXJlL21zYWwtYW5ndWxhci8iLCJzb3VyY2VzIjpbInNyYy9tc2FsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQ0gsb0JBQW9CLEVBTXZCLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNGLE1BQU0sRUFDVixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFJdEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFL0QsSUFBTSxlQUFlLEdBQUcsVUFBQyxNQUFxQjtJQUMxQyw2QkFDTyxNQUFNLEtBQ1QsU0FBUyx3QkFDRixNQUFNLENBQUMsU0FBUyxLQUNuQixTQUFTLEVBQUUsSUFBSSxPQUVyQjtBQUNOLENBQUMsQ0FBQzs7QUFHRjtJQUFpQywrQkFBb0I7SUFFakQscUJBQ2lDLFVBQXlCLEVBQ2pCLGlCQUEyQyxFQUN4RSxNQUFjLEVBQ2QsZ0JBQWtDO1FBSjlDLFlBTUksa0JBQU0sZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBOEJyQztRQW5DZ0MsZ0JBQVUsR0FBVixVQUFVLENBQWU7UUFDakIsdUJBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtRQUN4RSxZQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsc0JBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUkxQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLEVBQUUsVUFBQyxDQUFjO1lBQzVELEtBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxP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QUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ25CLFdBQUEsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUE7T0FKdkIsV0FBVyxDQW9MdkI7SUFBRCxrQkFBQztDQUFBLEFBcExELENBQWlDLG9CQUFvQixHQW9McEQ7U0FwTFksV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtcclxuICAgIFVzZXJBZ2VudEFwcGxpY2F0aW9uLFxyXG4gICAgQ29uZmlndXJhdGlvbixcclxuICAgIEF1dGhlbnRpY2F0aW9uUGFyYW1ldGVycyxcclxuICAgIEF1dGhSZXNwb25zZSxcclxuICAgIEF1dGhFcnJvcixcclxuICAgIExvZ2dlclxyXG59IGZyb20gXCJtc2FsXCI7XHJcbmltcG9ydCB7XHJcbiAgICAgUm91dGVyXHJcbn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQge0Jyb2FkY2FzdFNlcnZpY2V9IGZyb20gXCIuL2Jyb2FkY2FzdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7TVNBTEVycm9yfSBmcm9tIFwiLi9NU0FMRXJyb3JcIjtcclxuaW1wb3J0IHsgQXV0aENhY2hlIH0gZnJvbSBcIm1zYWwvbGliLWNvbW1vbmpzL2NhY2hlL0F1dGhDYWNoZVwiO1xyXG5pbXBvcnQgeyBNc2FsQW5ndWxhckNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi9tc2FsLWFuZ3VsYXIuY29uZmlndXJhdGlvblwiO1xyXG5pbXBvcnQgeyBhdXRoUmVzcG9uc2VDYWxsYmFjaywgZXJyb3JSZWNlaXZlZENhbGxiYWNrLCB0b2tlblJlY2VpdmVkQ2FsbGJhY2sgfSBmcm9tIFwibXNhbC9saWItY29tbW9uanMvVXNlckFnZW50QXBwbGljYXRpb25cIjtcclxuaW1wb3J0IHsgVXJsVXRpbHMgfSBmcm9tIFwibXNhbC9saWItY29tbW9uanMvdXRpbHMvVXJsVXRpbHNcIjtcclxuaW1wb3J0IHsgTVNBTF9DT05GSUcsIE1TQUxfQ09ORklHX0FOR1VMQVIgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuXHJcbmNvbnN0IGJ1aWxkTXNhbENvbmZpZyA9IChjb25maWc6IENvbmZpZ3VyYXRpb24pIDogQ29uZmlndXJhdGlvbiA9PiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmNvbmZpZyxcclxuICAgICAgICBmcmFtZXdvcms6IHtcclxuICAgICAgICAgICAgLi4uY29uZmlnLmZyYW1ld29yayxcclxuICAgICAgICAgICAgaXNBbmd1bGFyOiB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufTtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE1zYWxTZXJ2aWNlIGV4dGVuZHMgVXNlckFnZW50QXBwbGljYXRpb24ge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoTVNBTF9DT05GSUcpIHByaXZhdGUgbXNhbENvbmZpZzogQ29uZmlndXJhdGlvbixcclxuICAgICAgICBASW5qZWN0KE1TQUxfQ09ORklHX0FOR1VMQVIpIHByaXZhdGUgbXNhbEFuZ3VsYXJDb25maWc6IE1zYWxBbmd1bGFyQ29uZmlndXJhdGlvbixcclxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHByaXZhdGUgYnJvYWRjYXN0U2VydmljZTogQnJvYWRjYXN0U2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoYnVpbGRNc2FsQ29uZmlnKG1zYWxDb25maWcpKTtcclxuXHJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtc2FsOnBvcFVwSGFzaENoYW5nZWRcIiwgKGU6IEN1c3RvbUV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0TG9nZ2VyKCkudmVyYm9zZShcInBvcFVwSGFzaENoYW5nZWQgXCIpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbXNhbDpwb3BVcENsb3NlZCcsIChlOiBDdXN0b21FdmVudCkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgZXJyb3JQYXJ0cyA9IGUuZGV0YWlsLnNwbGl0KCd8Jyk7XHJcbiAgICAgICAgICAgIHZhciBtc2FsRXJyb3IgPSBuZXcgTVNBTEVycm9yKGVycm9yUGFydHNbMF0sIGVycm9yUGFydHNbMV0pO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5nZXRMb2dpbkluUHJvZ3Jlc3MoKSkge1xyXG4gICAgICAgICAgICAgICAgYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3QoJ21zYWw6bG9naW5GYWlsdXJlJywgbXNhbEVycm9yKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0bG9naW5JblByb2dyZXNzKGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmdldEFjcXVpcmVUb2tlbkluUHJvZ3Jlc3MoKSkge1xyXG4gICAgICAgICAgICAgICAgYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3QoJ21zYWw6YWNxdWlyZVRva2VuRmFpbHVyZScsIG1zYWxFcnJvcik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldEFjcXVpcmVUb2tlbkluUHJvZ3Jlc3MoZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJvdXRlci5jb25maWcubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGlmICghcm91dGVyLmNvbmZpZ1tpXS5jYW5BY3RpdmF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1zYWxBbmd1bGFyQ29uZmlnLnVucHJvdGVjdGVkUmVzb3VyY2VzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc1VucHJvdGVjdGVkUmVzb3VyY2Uocm91dGVyLmNvbmZpZ1tpXS5wYXRoKSAmJiAhdGhpcy5pc0VtcHR5KHJvdXRlci5jb25maWdbaV0ucGF0aCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXNhbEFuZ3VsYXJDb25maWcudW5wcm90ZWN0ZWRSZXNvdXJjZXMucHVzaChyb3V0ZXIuY29uZmlnW2ldLnBhdGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc1VucHJvdGVjdGVkUmVzb3VyY2UodXJsOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBmcmFtZXdvcmtVbnByb3RlY3RlZFJlc291cmNlcyA9IHRoaXMubXNhbENvbmZpZy5mcmFtZXdvcmsgJiYgdGhpcy5tc2FsQ29uZmlnLmZyYW1ld29yay51bnByb3RlY3RlZFJlc291cmNlcztcclxuICAgICAgICBjb25zdCBjb25maWdVbnByb3RlY3RlZFJlc291cmNlcyA9IHRoaXMubXNhbEFuZ3VsYXJDb25maWcudW5wcm90ZWN0ZWRSZXNvdXJjZXMgfHwgW107XHJcblxyXG4gICAgICAgIGNvbnN0IHVucHJvdGVjdGVkUmVzb3VyY2VzID0gZnJhbWV3b3JrVW5wcm90ZWN0ZWRSZXNvdXJjZXMgJiYgZnJhbWV3b3JrVW5wcm90ZWN0ZWRSZXNvdXJjZXMubGVuZ3RoID8gZnJhbWV3b3JrVW5wcm90ZWN0ZWRSZXNvdXJjZXMgOiBjb25maWdVbnByb3RlY3RlZFJlc291cmNlcztcclxuXHJcbiAgICAgICAgcmV0dXJuIHVucHJvdGVjdGVkUmVzb3VyY2VzLnNvbWUocmVzb3VyY2UgPT4gdXJsLmluZGV4T2YocmVzb3VyY2UpID4gLTEpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaXNFbXB0eShzdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAodHlwZW9mIHN0ciA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhc3RyIHx8IDAgPT09IHN0ci5sZW5ndGgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRDYWNoZVN0b3JhZ2UoKTogQXV0aENhY2hlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jYWNoZVN0b3JhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGxvZ2luUG9wdXAocmVxdWVzdD86IEF1dGhlbnRpY2F0aW9uUGFyYW1ldGVycyk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHN1cGVyLmxvZ2luUG9wdXAocmVxdWVzdClcclxuICAgICAgICAgICAgLnRoZW4oKGF1dGhSZXNwb25zZTogQXV0aFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2UuYnJvYWRjYXN0KFwibXNhbDpsb2dpblN1Y2Nlc3NcIiwgYXV0aFJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhdXRoUmVzcG9uc2U7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3I6IEF1dGhFcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdChcIm1zYWw6bG9naW5GYWlsdXJlXCIsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0TG9nZ2VyKCkuZXJyb3IoXCJFcnJvciBkdXJpbmcgbG9naW46XFxuXCIgKyBlcnJvci5lcnJvck1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhY3F1aXJlVG9rZW5TaWxlbnQocmVxdWVzdDogQXV0aGVudGljYXRpb25QYXJhbWV0ZXJzKTogUHJvbWlzZTxBdXRoUmVzcG9uc2U+IHtcclxuICAgICAgICByZXR1cm4gc3VwZXIuYWNxdWlyZVRva2VuU2lsZW50KHJlcXVlc3QpXHJcbiAgICAgICAgICAgIC50aGVuKChhdXRoUmVzcG9uc2U6IEF1dGhSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdCgnbXNhbDphY3F1aXJlVG9rZW5TdWNjZXNzJywgYXV0aFJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhdXRoUmVzcG9uc2U7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3I6IEF1dGhFcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdCgnbXNhbDphY3F1aXJlVG9rZW5GYWlsdXJlJywgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRMb2dnZXIoKS5lcnJvcignRXJyb3Igd2hlbiBhY3F1aXJpbmcgdG9rZW4gZm9yIHNjb3BlczogJyArIHJlcXVlc3Quc2NvcGVzICsgXCIgXCIgKyBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhY3F1aXJlVG9rZW5Qb3B1cChyZXF1ZXN0OiBBdXRoZW50aWNhdGlvblBhcmFtZXRlcnMpOiBQcm9taXNlPEF1dGhSZXNwb25zZT4ge1xyXG4gICAgICAgIHJldHVybiBzdXBlci5hY3F1aXJlVG9rZW5Qb3B1cChyZXF1ZXN0KVxyXG4gICAgICAgICAgICAudGhlbigoYXV0aFJlc3BvbnNlOiBBdXRoUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3QoJ21zYWw6YWNxdWlyZVRva2VuU3VjY2VzcycsIGF1dGhSZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXV0aFJlc3BvbnNlO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yOiBBdXRoRXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3QoJ21zYWw6YWNxdWlyZVRva2VuRmFpbHVyZScsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0TG9nZ2VyKCkuZXJyb3IoJ0Vycm9yIHdoZW4gYWNxdWlyaW5nIHRva2VuIGZvciBzY29wZXMgOiAnICsgcmVxdWVzdC5zY29wZXMgK1wiIFwiKyAgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZVJlZGlyZWN0Q2FsbGJhY2sodG9rZW5SZWNlaXZlZENhbGxiYWNrOiB0b2tlblJlY2VpdmVkQ2FsbGJhY2ssIGVycm9yUmVjZWl2ZWRDYWxsYmFjazogZXJyb3JSZWNlaXZlZENhbGxiYWNrKTogdm9pZDtcclxuICAgIGhhbmRsZVJlZGlyZWN0Q2FsbGJhY2soYXV0aENhbGxiYWNrOiBhdXRoUmVzcG9uc2VDYWxsYmFjayk6IHZvaWQ7XHJcbiAgICBoYW5kbGVSZWRpcmVjdENhbGxiYWNrKGF1dGhPclRva2VuQ2FsbGJhY2s6IGF1dGhSZXNwb25zZUNhbGxiYWNrIHwgdG9rZW5SZWNlaXZlZENhbGxiYWNrLCBlcnJvclJlY2VpdmVkQ2FsbGJhY2s/OiBlcnJvclJlY2VpdmVkQ2FsbGJhY2spOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5oYW5kbGVSZWRpcmVjdENhbGxiYWNrKChhdXRoRXJyb3I6IEF1dGhFcnJvciwgYXV0aFJlc3BvbnNlOiBBdXRoUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgaWYgKGF1dGhSZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGF1dGhSZXNwb25zZS50b2tlblR5cGUgPT09IFwiaWRfdG9rZW5cIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3QoXCJtc2FsOmxvZ2luU3VjY2Vzc1wiLCBhdXRoUmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2UuYnJvYWRjYXN0KFwibXNhbDphY3F1aXJlVG9rZW5TdWNjZXNzXCIsIGF1dGhSZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yUmVjZWl2ZWRDYWxsYmFjaykge1xyXG4gICAgICAgICAgICAgICAgICAgIChhdXRoT3JUb2tlbkNhbGxiYWNrIGFzIHRva2VuUmVjZWl2ZWRDYWxsYmFjaykoYXV0aFJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgKGF1dGhPclRva2VuQ2FsbGJhY2sgYXMgYXV0aFJlc3BvbnNlQ2FsbGJhY2spKG51bGwsIGF1dGhSZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGF1dGhFcnJvcikge1xyXG4gICAgICAgICAgICAgICAgaWYgKGF1dGhSZXNwb25zZS50b2tlblR5cGUgPT09IFwiaWRfdG9rZW5cIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3QoXCJtc2FsOmxvZ2luRmFpbHVyZVwiLCBhdXRoRXJyb3IpO1xyXG5cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmJyb2FkY2FzdChcIm1zYWw6YWNxdWlyZVRva2VuRmFpbHVyZVwiLCBhdXRoRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChlcnJvclJlY2VpdmVkQ2FsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgICAgICBlcnJvclJlY2VpdmVkQ2FsbGJhY2soYXV0aEVycm9yLCBhdXRoUmVzcG9uc2UuYWNjb3VudFN0YXRlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgKGF1dGhPclRva2VuQ2FsbGJhY2sgYXMgYXV0aFJlc3BvbnNlQ2FsbGJhY2spKGF1dGhFcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsZWFyQ2FjaGVGb3JTY29wZShhY2Nlc3NUb2tlbjogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHN1cGVyLmNsZWFyQ2FjaGVGb3JTY29wZShhY2Nlc3NUb2tlbik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNjb3Blc0ZvckVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIDogQXJyYXk8c3RyaW5nPiB7XHJcbiAgICAgICAgaWYgKHRoaXMubXNhbENvbmZpZy5mcmFtZXdvcmsgJiYgdGhpcy5tc2FsQ29uZmlnLmZyYW1ld29yay51bnByb3RlY3RlZFJlc291cmNlcykge1xyXG4gICAgICAgICAgICB0aGlzLmdldExvZ2dlcigpLmluZm8oXCJtc2FsQ29uZmlnLmZyYW1ld29yay51bnByb3RlY3RlZFJlc291cmNlcyBpcyBkZXByZWNhdGVkLCB1c2UgbXNhbEFuZ3VsYXJDb25maWcudW5wcm90ZWN0ZWRSZXNvdXJjZXNcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBpZiB1c2VyIHNwZWNpZmllZCBsaXN0IG9mIHVucHJvdGVjdGVkUmVzb3VyY2VzLCBubyBuZWVkIHRvIHNlbmQgdG9rZW4gdG8gdGhlc2UgZW5kcG9pbnRzLCByZXR1cm4gbnVsbC5cclxuICAgICAgICBjb25zdCBpc1VucHJvdGVjdGVkID0gdGhpcy5pc1VucHJvdGVjdGVkUmVzb3VyY2UoZW5kcG9pbnQpO1xyXG4gICAgICAgIGlmIChpc1VucHJvdGVjdGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZnJhbWV3b3JrUHJvdGVjdGVkUmVzb3VyY2VNYXAgPSB0aGlzLm1zYWxDb25maWcuZnJhbWV3b3JrICYmIHRoaXMubXNhbENvbmZpZy5mcmFtZXdvcmsucHJvdGVjdGVkUmVzb3VyY2VNYXA7XHJcbiAgICAgICAgaWYgKGZyYW1ld29ya1Byb3RlY3RlZFJlc291cmNlTWFwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0TG9nZ2VyKCkuaW5mbyhcIm1zYWxDb25maWcuZnJhbWV3b3JrLnByb3RlY3RlZFJlc291cmNlTWFwIGlzIGRlcHJlY2F0ZWQsIHVzZSBtc2FsQW5ndWxhckNvbmZpZy5wcm90ZWN0ZWRSZXNvdXJjZU1hcFwiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHByb3RlY3RlZFJlc291cmNlTWFwID0gZnJhbWV3b3JrUHJvdGVjdGVkUmVzb3VyY2VNYXAgJiYgZnJhbWV3b3JrUHJvdGVjdGVkUmVzb3VyY2VNYXAuc2l6ZSA/IGZyYW1ld29ya1Byb3RlY3RlZFJlc291cmNlTWFwIDogbmV3IE1hcCh0aGlzLm1zYWxBbmd1bGFyQ29uZmlnLnByb3RlY3RlZFJlc291cmNlTWFwKTtcclxuXHJcbiAgICAgICAgLy8gcHJvY2VzcyBhbGwgcHJvdGVjdGVkIHJlc291cmNlcyBhbmQgc2VuZCB0aGUgbWF0Y2hlZCBvbmVcclxuICAgICAgICBjb25zdCBrZXlGb3JFbmRwb2ludCA9IEFycmF5LmZyb20ocHJvdGVjdGVkUmVzb3VyY2VNYXAua2V5cygpKS5maW5kKGtleSA9PiBlbmRwb2ludC5pbmRleE9mKGtleSkgPiAtMSk7XHJcbiAgICAgICAgaWYgKGtleUZvckVuZHBvaW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBwcm90ZWN0ZWRSZXNvdXJjZU1hcC5nZXQoa2V5Rm9yRW5kcG9pbnQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLypcclxuICAgICAgICAgKiBkZWZhdWx0IHJlc291cmNlIHdpbGwgYmUgY2xpZW50aWQgaWYgbm90aGluZyBzcGVjaWZpZWRcclxuICAgICAgICAgKiBBcHAgd2lsbCB1c2UgaWR0b2tlbiBmb3IgY2FsbHMgdG8gaXRzZWxmXHJcbiAgICAgICAgICogY2hlY2sgaWYgaXQncyBzdGFyaW5nIGZyb20gaHR0cCBvciBodHRwcywgbmVlZHMgdG8gbWF0Y2ggd2l0aCBhcHAgaG9zdFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGlmIChlbmRwb2ludC5pbmRleE9mKFwiaHR0cDovL1wiKSA+IC0xIHx8IGVuZHBvaW50LmluZGV4T2YoXCJodHRwczovL1wiKSA+IC0xKSB7XHJcbiAgICAgICAgICAgIGlmIChVcmxVdGlscy5nZXRIb3N0RnJvbVVyaShlbmRwb2ludCkgPT09IFVybFV0aWxzLmdldEhvc3RGcm9tVXJpKHN1cGVyLmdldFJlZGlyZWN0VXJpKCkpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFycmF5PHN0cmluZz4odGhpcy5tc2FsQ29uZmlnLmF1dGguY2xpZW50SWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICogaW4gYW5ndWxhciBsZXZlbCwgdGhlIHVybCBmb3IgJGh0dHAgaW50ZXJjZXB0b3IgY2FsbCBjb3VsZCBiZSByZWxhdGl2ZSB1cmwsXHJcbiAgICAgICAgICAgICAqIGlmIGl0J3MgcmVsYXRpdmUgY2FsbCwgd2UnbGwgdHJlYXQgaXQgYXMgYXBwIGJhY2tlbmQgY2FsbC5cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgQXJyYXk8c3RyaW5nPih0aGlzLm1zYWxDb25maWcuYXV0aC5jbGllbnRJZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBpZiBub3QgdGhlIGFwcCdzIG93biBiYWNrZW5kIG9yIG5vdCBhIGRvbWFpbiBsaXN0ZWQgaW4gdGhlIGVuZHBvaW50cyBzdHJ1Y3R1cmVcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufVxyXG5cclxuIl19

@@ -9,2 +9,3 @@ import { __decorate, __param } from 'tslib';

import { Location, PlatformLocation, CommonModule } from '@angular/common';
import { WindowUtils } from 'msal/lib-commonjs/utils/WindowUtils';
import { HttpErrorResponse } from '@angular/common/http';

@@ -111,3 +112,5 @@

isUnprotectedResource(url) {
const unprotectedResources = (this.msalConfig.framework && this.msalConfig.framework.unprotectedResources) || this.msalAngularConfig.unprotectedResources || [];
const frameworkUnprotectedResources = this.msalConfig.framework && this.msalConfig.framework.unprotectedResources;
const configUnprotectedResources = this.msalAngularConfig.unprotectedResources || [];
const unprotectedResources = frameworkUnprotectedResources && frameworkUnprotectedResources.length ? frameworkUnprotectedResources : configUnprotectedResources;
return unprotectedResources.some(resource => url.indexOf(resource) > -1);

@@ -201,6 +204,7 @@ }

}
if (this.msalConfig.framework && this.msalConfig.framework.protectedResourceMap) {
const frameworkProtectedResourceMap = this.msalConfig.framework && this.msalConfig.framework.protectedResourceMap;
if (frameworkProtectedResourceMap) {
this.getLogger().info("msalConfig.framework.protectedResourceMap is deprecated, use msalAngularConfig.protectedResourceMap");
}
const protectedResourceMap = (this.msalConfig.framework && this.msalConfig.framework.protectedResourceMap) || new Map(this.msalAngularConfig.protectedResourceMap);
const protectedResourceMap = frameworkProtectedResourceMap && frameworkProtectedResourceMap.size ? frameworkProtectedResourceMap : new Map(this.msalAngularConfig.protectedResourceMap);
// process all protected resources and send the matched one

@@ -257,2 +261,8 @@ const keyForEndpoint = Array.from(protectedResourceMap.keys()).find(key => endpoint.indexOf(key) > -1);

this.authService.getLogger().verbose("location change event from old url to new url");
// If a page with MSAL Guard is set as the redirect for acquireTokenSilent,
// short-circuit to prevent redirecting or popups.
if (UrlUtils.urlContainsHash(window.location.hash) && WindowUtils.isInIframe()) {
this.authService.getLogger().warning("redirectUri set to page with MSAL Guard. It is recommended to not set redirectUri to a page that requires authentication.");
return false;
}
if (!this.authService.getAccount()) {

@@ -267,3 +277,5 @@ if (this.msalAngularConfig.popUp) {

}
const routePath = `${window.location.origin}${state.url}`;
this.authService.loginRedirect({
redirectStartPage: routePath,
scopes: this.msalAngularConfig.consentScopes,

@@ -270,0 +282,0 @@ extraQueryParameters: this.msalAngularConfig.extraQueryParameters

@@ -9,2 +9,3 @@ import { __decorate, __assign, __extends, __param } from 'tslib';

import { Location, PlatformLocation, CommonModule } from '@angular/common';
import { WindowUtils } from 'msal/lib-commonjs/utils/WindowUtils';
import { HttpErrorResponse } from '@angular/common/http';

@@ -127,3 +128,5 @@

MsalService.prototype.isUnprotectedResource = function (url) {
var unprotectedResources = (this.msalConfig.framework && this.msalConfig.framework.unprotectedResources) || this.msalAngularConfig.unprotectedResources || [];
var frameworkUnprotectedResources = this.msalConfig.framework && this.msalConfig.framework.unprotectedResources;
var configUnprotectedResources = this.msalAngularConfig.unprotectedResources || [];
var unprotectedResources = frameworkUnprotectedResources && frameworkUnprotectedResources.length ? frameworkUnprotectedResources : configUnprotectedResources;
return unprotectedResources.some(function (resource) { return url.indexOf(resource) > -1; });

@@ -221,6 +224,7 @@ };

}
if (this.msalConfig.framework && this.msalConfig.framework.protectedResourceMap) {
var frameworkProtectedResourceMap = this.msalConfig.framework && this.msalConfig.framework.protectedResourceMap;
if (frameworkProtectedResourceMap) {
this.getLogger().info("msalConfig.framework.protectedResourceMap is deprecated, use msalAngularConfig.protectedResourceMap");
}
var protectedResourceMap = (this.msalConfig.framework && this.msalConfig.framework.protectedResourceMap) || new Map(this.msalAngularConfig.protectedResourceMap);
var protectedResourceMap = frameworkProtectedResourceMap && frameworkProtectedResourceMap.size ? frameworkProtectedResourceMap : new Map(this.msalAngularConfig.protectedResourceMap);
// process all protected resources and send the matched one

@@ -279,2 +283,8 @@ var keyForEndpoint = Array.from(protectedResourceMap.keys()).find(function (key) { return endpoint.indexOf(key) > -1; });

this.authService.getLogger().verbose("location change event from old url to new url");
// If a page with MSAL Guard is set as the redirect for acquireTokenSilent,
// short-circuit to prevent redirecting or popups.
if (UrlUtils.urlContainsHash(window.location.hash) && WindowUtils.isInIframe()) {
this.authService.getLogger().warning("redirectUri set to page with MSAL Guard. It is recommended to not set redirectUri to a page that requires authentication.");
return false;
}
if (!this.authService.getAccount()) {

@@ -289,3 +299,5 @@ if (this.msalAngularConfig.popUp) {

}
var routePath = "" + window.location.origin + state.url;
this.authService.loginRedirect({
redirectStartPage: routePath,
scopes: this.msalAngularConfig.consentScopes,

@@ -292,0 +304,0 @@ extraQueryParameters: this.msalAngularConfig.extraQueryParameters

@@ -13,3 +13,3 @@ {

},
"version": "1.0.0-beta.3",
"version": "1.0.0-beta.4",
"keywords": [

@@ -30,3 +30,3 @@ "implicit",

"@angular/core": ">= 6.0.0",
"msal": "^1.2.2-beta.0",
"msal": "^1.2.2-beta.2",
"rxjs": "^6.0.0",

@@ -33,0 +33,0 @@ "tslib": "^1.10.0"

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc