angular-auth-oidc-client
Version:
An OpenID Connect Code Flow with PKCE,Implicit Flow client for Angular
347 lines • 21.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import { OidcSecurityStorage } from './oidc.security.storage';
var OidcSecurityCommon = /** @class */ (function () {
function OidcSecurityCommon(oidcSecurityStorage) {
this.oidcSecurityStorage = oidcSecurityStorage;
this.storage_auth_result = 'authorizationResult';
this.storage_access_token = 'authorizationData';
this.storage_id_token = 'authorizationDataIdToken';
this.storage_is_authorized = '_isAuthorized';
this.storage_user_data = 'userData';
this.storage_auth_nonce = 'authNonce';
this.storage_code_verifier = 'code_verifier';
this.storage_auth_state_control = 'authStateControl';
this.storage_session_state = 'session_state';
this.storage_silent_renew_running = 'storage_silent_renew_running';
this.storage_custom_request_params = 'storage_custom_request_params';
}
Object.defineProperty(OidcSecurityCommon.prototype, "authResult", {
get: /**
* @return {?}
*/
function () {
return this.retrieve(this.storage_auth_result);
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.store(this.storage_auth_result, value);
},
enumerable: true,
configurable: true
});
Object.defineProperty(OidcSecurityCommon.prototype, "accessToken", {
get: /**
* @return {?}
*/
function () {
return this.retrieve(this.storage_access_token) || '';
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.store(this.storage_access_token, value);
},
enumerable: true,
configurable: true
});
Object.defineProperty(OidcSecurityCommon.prototype, "idToken", {
get: /**
* @return {?}
*/
function () {
return this.retrieve(this.storage_id_token) || '';
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.store(this.storage_id_token, value);
},
enumerable: true,
configurable: true
});
Object.defineProperty(OidcSecurityCommon.prototype, "isAuthorized", {
get: /**
* @return {?}
*/
function () {
return this.retrieve(this.storage_is_authorized);
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.store(this.storage_is_authorized, value);
},
enumerable: true,
configurable: true
});
Object.defineProperty(OidcSecurityCommon.prototype, "userData", {
get: /**
* @return {?}
*/
function () {
return this.retrieve(this.storage_user_data);
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.store(this.storage_user_data, value);
},
enumerable: true,
configurable: true
});
Object.defineProperty(OidcSecurityCommon.prototype, "authNonce", {
get: /**
* @return {?}
*/
function () {
return this.retrieve(this.storage_auth_nonce) || '';
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.store(this.storage_auth_nonce, value);
},
enumerable: true,
configurable: true
});
Object.defineProperty(OidcSecurityCommon.prototype, "code_verifier", {
get: /**
* @return {?}
*/
function () {
return this.retrieve(this.storage_code_verifier) || '';
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.store(this.storage_code_verifier, value);
},
enumerable: true,
configurable: true
});
Object.defineProperty(OidcSecurityCommon.prototype, "authStateControl", {
get: /**
* @return {?}
*/
function () {
return this.retrieve(this.storage_auth_state_control) || '';
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.store(this.storage_auth_state_control, value);
},
enumerable: true,
configurable: true
});
Object.defineProperty(OidcSecurityCommon.prototype, "sessionState", {
get: /**
* @return {?}
*/
function () {
return this.retrieve(this.storage_session_state);
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.store(this.storage_session_state, value);
},
enumerable: true,
configurable: true
});
Object.defineProperty(OidcSecurityCommon.prototype, "silentRenewRunning", {
get: /**
* @return {?}
*/
function () {
return this.retrieve(this.storage_silent_renew_running) || '';
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.store(this.storage_silent_renew_running, value);
},
enumerable: true,
configurable: true
});
Object.defineProperty(OidcSecurityCommon.prototype, "customRequestParams", {
get: /**
* @return {?}
*/
function () {
return this.retrieve(this.storage_custom_request_params);
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.store(this.storage_custom_request_params, value);
},
enumerable: true,
configurable: true
});
/**
* @private
* @param {?} key
* @return {?}
*/
OidcSecurityCommon.prototype.retrieve = /**
* @private
* @param {?} key
* @return {?}
*/
function (key) {
return this.oidcSecurityStorage.read(key);
};
/**
* @private
* @param {?} key
* @param {?} value
* @return {?}
*/
OidcSecurityCommon.prototype.store = /**
* @private
* @param {?} key
* @param {?} value
* @return {?}
*/
function (key, value) {
this.oidcSecurityStorage.write(key, value);
};
/**
* @param {?} isRenewProcess
* @return {?}
*/
OidcSecurityCommon.prototype.resetStorageData = /**
* @param {?} isRenewProcess
* @return {?}
*/
function (isRenewProcess) {
if (!isRenewProcess) {
this.store(this.storage_auth_result, '');
this.store(this.storage_session_state, '');
this.store(this.storage_silent_renew_running, '');
this.store(this.storage_is_authorized, false);
this.store(this.storage_access_token, '');
this.store(this.storage_id_token, '');
this.store(this.storage_user_data, '');
this.store(this.storage_code_verifier, '');
}
};
/**
* @return {?}
*/
OidcSecurityCommon.prototype.getAccessToken = /**
* @return {?}
*/
function () {
return this.retrieve(this.storage_access_token);
};
/**
* @return {?}
*/
OidcSecurityCommon.prototype.getIdToken = /**
* @return {?}
*/
function () {
return this.retrieve(this.storage_id_token);
};
OidcSecurityCommon.decorators = [
{ type: Injectable }
];
/** @nocollapse */
OidcSecurityCommon.ctorParameters = function () { return [
{ type: OidcSecurityStorage }
]; };
return OidcSecurityCommon;
}());
export { OidcSecurityCommon };
if (false) {
/**
* @type {?}
* @private
*/
OidcSecurityCommon.prototype.storage_auth_result;
/**
* @type {?}
* @private
*/
OidcSecurityCommon.prototype.storage_access_token;
/**
* @type {?}
* @private
*/
OidcSecurityCommon.prototype.storage_id_token;
/**
* @type {?}
* @private
*/
OidcSecurityCommon.prototype.storage_is_authorized;
/**
* @type {?}
* @private
*/
OidcSecurityCommon.prototype.storage_user_data;
/**
* @type {?}
* @private
*/
OidcSecurityCommon.prototype.storage_auth_nonce;
/**
* @type {?}
* @private
*/
OidcSecurityCommon.prototype.storage_code_verifier;
/**
* @type {?}
* @private
*/
OidcSecurityCommon.prototype.storage_auth_state_control;
/**
* @type {?}
* @private
*/
OidcSecurityCommon.prototype.storage_session_state;
/**
* @type {?}
* @private
*/
OidcSecurityCommon.prototype.storage_silent_renew_running;
/**
* @type {?}
* @private
*/
OidcSecurityCommon.prototype.storage_custom_request_params;
/**
* @type {?}
* @private
*/
OidcSecurityCommon.prototype.oidcSecurityStorage;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2lkYy5zZWN1cml0eS5jb21tb24uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLWF1dGgtb2lkYy1jbGllbnQvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvb2lkYy5zZWN1cml0eS5jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJOUQ7SUFrSEksNEJBQW9CLG1CQUF3QztRQUF4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBaEhwRCx3QkFBbUIsR0FBRyxxQkFBcUIsQ0FBQztRQVU1Qyx5QkFBb0IsR0FBRyxtQkFBbUIsQ0FBQztRQVUzQyxxQkFBZ0IsR0FBRywwQkFBMEIsQ0FBQztRQVU5QywwQkFBcUIsR0FBRyxlQUFlLENBQUM7UUFVeEMsc0JBQWlCLEdBQUcsVUFBVSxDQUFDO1FBVS9CLHVCQUFrQixHQUFHLFdBQVcsQ0FBQztRQVVqQywwQkFBcUIsR0FBRyxlQUFlLENBQUM7UUFVeEMsK0JBQTBCLEdBQUcsa0JBQWtCLENBQUM7UUFVaEQsMEJBQXFCLEdBQUcsZUFBZSxDQUFDO1FBVXhDLGlDQUE0QixHQUFHLDhCQUE4QixDQUFDO1FBVTlELGtDQUE2QixHQUFHLCtCQUErQixDQUFDO0lBWVQsQ0FBQztJQTlHaEUsc0JBQVcsMENBQVU7Ozs7UUFBckI7WUFDSSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDbkQsQ0FBQzs7Ozs7UUFFRCxVQUFzQixLQUFVO1lBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hELENBQUM7OztPQUpBO0lBUUQsc0JBQVcsMkNBQVc7Ozs7UUFBdEI7WUFDSSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFB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QUFDLEtBQUssQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDOUM7SUFDTCxDQUFDOzs7O0lBRUQsMkNBQWM7OztJQUFkO1FBQ0ksT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3BELENBQUM7Ozs7SUFFRCx1Q0FBVTs7O0lBQVY7UUFDSSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDaEQsQ0FBQzs7Z0JBL0lKLFVBQVU7Ozs7Z0JBSkYsbUJBQW1COztJQW9KNUIseUJBQUM7Q0FBQSxBQWhKRCxJQWdKQztTQS9JWSxrQkFBa0I7Ozs7OztJQUMzQixpREFBb0Q7Ozs7O0lBVXBELGtEQUFtRDs7Ozs7SUFVbkQsOENBQXNEOzs7OztJQVV0RCxtREFBZ0Q7Ozs7O0lBVWhELCtDQUF1Qzs7Ozs7SUFVdkMsZ0RBQXlDOzs7OztJQVV6QyxtREFBZ0Q7Ozs7O0lBVWhELHdEQUF3RDs7Ozs7SUFVeEQsbURBQWdEOzs7OztJQVVoRCwwREFBc0U7Ozs7O0lBVXRFLDJEQUF3RTs7Ozs7SUFZNUQsaURBQWdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2lkY1NlY3VyaXR5U3RvcmFnZSB9IGZyb20gJy4vb2lkYy5zZWN1cml0eS5zdG9yYWdlJztcblxuZXhwb3J0IHR5cGUgU2lsZW50UmVuZXdTdGF0ZSA9ICdydW5uaW5nJyB8ICcnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT2lkY1NlY3VyaXR5Q29tbW9uIHtcbiAgICBwcml2YXRlIHN0b3JhZ2VfYXV0aF9yZXN1bHQgPSAnYXV0aG9yaXphdGlvblJlc3VsdCc7XG5cbiAgICBwdWJsaWMgZ2V0IGF1dGhSZXN1bHQoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmV0cmlldmUodGhpcy5zdG9yYWdlX2F1dGhfcmVzdWx0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGF1dGhSZXN1bHQodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLnN0b3JlKHRoaXMuc3RvcmFnZV9hdXRoX3Jlc3VsdCwgdmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RvcmFnZV9hY2Nlc3NfdG9rZW4gPSAnYXV0aG9yaXphdGlvbkRhdGEnO1xuXG4gICAgcHVibGljIGdldCBhY2Nlc3NUb2tlbigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXRyaWV2ZSh0aGlzLnN0b3JhZ2VfYWNjZXNzX3Rva2VuKSB8fCAnJztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGFjY2Vzc1Rva2VuKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zdG9yZSh0aGlzLnN0b3JhZ2VfYWNjZXNzX3Rva2VuLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdG9yYWdlX2lkX3Rva2VuID0gJ2F1dGhvcml6YXRpb25EYXRhSWRUb2tlbic7XG5cbiAgICBwdWJsaWMgZ2V0IGlkVG9rZW4oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmV0cmlldmUodGhpcy5zdG9yYWdlX2lkX3Rva2VuKSB8fCAnJztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGlkVG9rZW4odmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnN0b3JlKHRoaXMuc3RvcmFnZV9pZF90b2tlbiwgdmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RvcmFnZV9pc19hdXRob3JpemVkID0gJ19pc0F1dGhvcml6ZWQnO1xuXG4gICAgcHVibGljIGdldCBpc0F1dGhvcml6ZWQoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLnJldHJpZXZlKHRoaXMuc3RvcmFnZV9pc19hdXRob3JpemVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGlzQXV0aG9yaXplZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnN0b3JlKHRoaXMuc3RvcmFnZV9pc19hdXRob3JpemVkLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdG9yYWdlX3VzZXJfZGF0YSA9ICd1c2VyRGF0YSc7XG5cbiAgICBwdWJsaWMgZ2V0IHVzZXJEYXRhKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJldHJpZXZlKHRoaXMuc3RvcmFnZV91c2VyX2RhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdXNlckRhdGEodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLnN0b3JlKHRoaXMuc3RvcmFnZV91c2VyX2RhdGEsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0b3JhZ2VfYXV0aF9ub25jZSA9ICdhdXRoTm9uY2UnO1xuXG4gICAgcHVibGljIGdldCBhdXRoTm9uY2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmV0cmlldmUodGhpcy5zdG9yYWdlX2F1dGhfbm9uY2UpIHx8ICcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgYXV0aE5vbmNlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zdG9yZSh0aGlzLnN0b3JhZ2VfYXV0aF9ub25jZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RvcmFnZV9jb2RlX3ZlcmlmaWVyID0gJ2NvZGVfdmVyaWZpZXInO1xuXG4gICAgcHVibGljIGdldCBjb2RlX3ZlcmlmaWVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnJldHJpZXZlKHRoaXMuc3RvcmFnZV9jb2RlX3ZlcmlmaWVyKSB8fCAnJztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGNvZGVfdmVyaWZpZXIodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnN0b3JlKHRoaXMuc3RvcmFnZV9jb2RlX3ZlcmlmaWVyLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdG9yYWdlX2F1dGhfc3RhdGVfY29udHJvbCA9ICdhdXRoU3RhdGVDb250cm9sJztcblxuICAgIHB1YmxpYyBnZXQgYXV0aFN0YXRlQ29udHJvbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXRyaWV2ZSh0aGlzLnN0b3JhZ2VfYXV0aF9zdGF0ZV9jb250cm9sKSB8fCAnJztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGF1dGhTdGF0ZUNvbnRyb2wodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnN0b3JlKHRoaXMuc3RvcmFnZV9hdXRoX3N0YXRlX2NvbnRyb2wsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0b3JhZ2Vfc2Vzc2lvbl9zdGF0ZSA9ICdzZXNzaW9uX3N0YXRlJztcblxuICAgIHB1YmxpYyBnZXQgc2Vzc2lvblN0YXRlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJldHJpZXZlKHRoaXMuc3RvcmFnZV9zZXNzaW9uX3N0YXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IHNlc3Npb25TdGF0ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuc3RvcmUodGhpcy5zdG9yYWdlX3Nlc3Npb25fc3RhdGUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0b3JhZ2Vfc2lsZW50X3JlbmV3X3J1bm5pbmcgPSAnc3RvcmFnZV9zaWxlbnRfcmVuZXdfcnVubmluZyc7XG5cbiAgICBwdWJsaWMgZ2V0IHNpbGVudFJlbmV3UnVubmluZygpOiBTaWxlbnRSZW5ld1N0YXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmV0cmlldmUodGhpcy5zdG9yYWdlX3NpbGVudF9yZW5ld19ydW5uaW5nKSB8fCAnJztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IHNpbGVudFJlbmV3UnVubmluZyh2YWx1ZTogU2lsZW50UmVuZXdTdGF0ZSkge1xuICAgICAgICB0aGlzLnN0b3JlKHRoaXMuc3RvcmFnZV9zaWxlbnRfcmVuZXdfcnVubmluZywgdmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RvcmFnZV9jdXN0b21fcmVxdWVzdF9wYXJhbXMgPSAnc3RvcmFnZV9jdXN0b21fcmVxdWVzdF9wYXJhbXMnO1xuXG4gICAgcHVibGljIGdldCBjdXN0b21SZXF1ZXN0UGFyYW1zKCk6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbjtcbiAgICB9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmV0cmlldmUodGhpcy5zdG9yYWdlX2N1c3RvbV9yZXF1ZXN0X3BhcmFtcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBjdXN0b21SZXF1ZXN0UGFyYW1zKHZhbHVlOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfSkge1xuICAgICAgICB0aGlzLnN0b3JlKHRoaXMuc3RvcmFnZV9jdXN0b21fcmVxdWVzdF9wYXJhbXMsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9pZGNTZWN1cml0eVN0b3JhZ2U6IE9pZGNTZWN1cml0eVN0b3JhZ2UpIHt9XG5cbiAgICBwcml2YXRlIHJldHJpZXZlKGtleTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub2lkY1NlY3VyaXR5U3RvcmFnZS5yZWFkKGtleSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdG9yZShrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLm9pZGNTZWN1cml0eVN0b3JhZ2Uud3JpdGUoa2V5LCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmVzZXRTdG9yYWdlRGF0YShpc1JlbmV3UHJvY2VzczogYm9vbGVhbikge1xuICAgICAgICBpZiAoIWlzUmVuZXdQcm9jZXNzKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlKHRoaXMuc3RvcmFnZV9hdXRoX3Jlc3VsdCwgJycpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZSh0aGlzLnN0b3JhZ2Vfc2Vzc2lvbl9zdGF0ZSwgJycpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZSh0aGlzLnN0b3JhZ2Vfc2lsZW50X3JlbmV3X3J1bm5pbmcsICcnKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUodGhpcy5zdG9yYWdlX2lzX2F1dGhvcml6ZWQsIGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUodGhpcy5zdG9yYWdlX2FjY2Vzc190b2tlbiwgJycpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZSh0aGlzLnN0b3JhZ2VfaWRfdG9rZW4sICcnKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUodGhpcy5zdG9yYWdlX3VzZXJfZGF0YSwgJycpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZSh0aGlzLnN0b3JhZ2VfY29kZV92ZXJpZmllciwgJycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0QWNjZXNzVG9rZW4oKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmV0cmlldmUodGhpcy5zdG9yYWdlX2FjY2Vzc190b2tlbik7XG4gICAgfVxuXG4gICAgZ2V0SWRUb2tlbigpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXRyaWV2ZSh0aGlzLnN0b3JhZ2VfaWRfdG9rZW4pO1xuICAgIH1cbn1cbiJdfQ==