@dicdikshaorg/video-player-mobile-v9
Version:
Contains Video player library components powered by angular. These components are designed to be used in sunbird consumption platforms *(mobile app, web portal, offline desktop app)* to drive reusability, maintainability hence reducing the redundant devel
269 lines • 21.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/sunbird-video-player.service.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import * as _ from 'lodash-es';
import { UtilService } from './services/util.service';
import { CsTelemetryModule } from '@project-sunbird/client-services/telemetry';
import * as i0 from "@angular/core";
import * as i1 from "./services/util.service";
var SunbirdVideoPlayerService = /** @class */ (function () {
function SunbirdVideoPlayerService(utilService) {
this.utilService = utilService;
this.contentSessionId = this.utilService.uniqueId();
}
/**
* @param {?} __0
* @return {?}
*/
SunbirdVideoPlayerService.prototype.initialize = /**
* @param {?} __0
* @return {?}
*/
function (_a) {
var context = _a.context, config = _a.config, metadata = _a.metadata;
this.context = context;
this.config = config;
this.playSessionId = this.utilService.uniqueId();
if (!CsTelemetryModule.instance.isInitialised) {
CsTelemetryModule.instance.init({});
CsTelemetryModule.instance.telemetryService.initTelemetry({
config: {
pdata: context.pdata,
env: 'contentplayer',
channel: context.channel,
did: context.did,
authtoken: context.authToken || '',
uid: context.uid || '',
sid: context.sid,
batchsize: 20,
mode: context.mode,
host: context.host || '',
endpoint: context.endpoint || '/data/v3/telemetry',
tags: context.tags,
cdata: [{ id: this.contentSessionId, type: 'ContentSession' },
{ id: this.playSessionId, type: 'PlaySession' },
{ id: '2.0', type: 'PlayerVersion' }]
},
userOrgDetails: {}
});
}
this.telemetryObject = {
id: metadata.identifier,
type: 'Content',
ver: metadata.pkgVersion + '',
rollup: context.objectRollup || {}
};
};
/**
* @param {?} duration
* @return {?}
*/
SunbirdVideoPlayerService.prototype.start = /**
* @param {?} duration
* @return {?}
*/
function (duration) {
CsTelemetryModule.instance.telemetryService.raiseStartTelemetry({
options: this.getEventOptions(),
edata: { type: 'content', mode: 'play', pageid: '', duration: Number((duration / 1e3).toFixed(2)) }
});
};
/**
* @param {?} duration
* @param {?} totallength
* @param {?} currentlength
* @param {?} endpageseen
* @param {?} totalseekedlength
* @param {?} visitedlength
* @param {?} score
* @return {?}
*/
SunbirdVideoPlayerService.prototype.end = /**
* @param {?} duration
* @param {?} totallength
* @param {?} currentlength
* @param {?} endpageseen
* @param {?} totalseekedlength
* @param {?} visitedlength
* @param {?} score
* @return {?}
*/
function (duration, totallength, currentlength, endpageseen, totalseekedlength, visitedlength, score) {
/** @type {?} */
var durationSec = Number((duration / 1e3).toFixed(2));
CsTelemetryModule.instance.telemetryService.raiseEndTelemetry({
edata: {
type: 'content',
mode: 'play',
pageid: 'sunbird-player-Endpage',
summary: [
{
progress: Number(((currentlength / totallength) * 100).toFixed(0))
},
{
totallength: totallength
},
{
visitedlength: visitedlength
},
{
visitedcontentend: (totallength === currentlength)
},
{
totalseekedlength: totalseekedlength
},
{
endpageseen: endpageseen
},
{
score: score
}
],
duration: durationSec
},
options: this.getEventOptions()
});
};
/**
* @param {?} id
* @param {?} currentPage
* @param {?=} extraValues
* @return {?}
*/
SunbirdVideoPlayerService.prototype.interact = /**
* @param {?} id
* @param {?} currentPage
* @param {?=} extraValues
* @return {?}
*/
function (id, currentPage, extraValues) {
CsTelemetryModule.instance.telemetryService.raiseInteractTelemetry({
options: this.getEventOptions(),
edata: { type: 'TOUCH', subtype: '', id: id, pageid: currentPage + '', extra: extraValues }
});
};
/**
* @param {?} data
* @return {?}
*/
SunbirdVideoPlayerService.prototype.heartBeat = /**
* @param {?} data
* @return {?}
*/
function (data) {
CsTelemetryModule.instance.playerTelemetryService.onHeartBeatEvent(data, {});
};
/**
* @param {?} currentPage
* @param {?=} cdata
* @return {?}
*/
SunbirdVideoPlayerService.prototype.impression = /**
* @param {?} currentPage
* @param {?=} cdata
* @return {?}
*/
function (currentPage, cdata) {
if (cdata === void 0) { cdata = {}; }
/** @type {?} */
var impressionEvent = {
options: this.getEventOptions(),
edata: { type: 'workflow', subtype: '', pageid: currentPage + '', uri: '' }
};
if (!_.isEmpty(cdata)) {
impressionEvent.options.context.cdata.push(cdata);
}
CsTelemetryModule.instance.telemetryService.raiseImpressionTelemetry(impressionEvent);
};
/**
* @param {?} errorCode
* @param {?} errorType
* @param {?=} stacktrace
* @return {?}
*/
SunbirdVideoPlayerService.prototype.error = /**
* @param {?} errorCode
* @param {?} errorType
* @param {?=} stacktrace
* @return {?}
*/
function (errorCode, errorType, stacktrace) {
CsTelemetryModule.instance.telemetryService.raiseErrorTelemetry({
options: this.getEventOptions(),
edata: {
err: errorCode,
errtype: errorType,
stacktrace: (stacktrace && stacktrace.toString()) || ''
}
});
};
/**
* @private
* @return {?}
*/
SunbirdVideoPlayerService.prototype.getEventOptions = /**
* @private
* @return {?}
*/
function () {
return ({
object: this.telemetryObject,
context: {
channel: this.context.channel,
pdata: this.context.pdata,
env: 'contentplayer',
sid: this.context.sid,
uid: this.context.uid,
cdata: [{ id: this.contentSessionId, type: 'ContentSession' },
{ id: this.playSessionId, type: 'PlaySession' },
{ id: '2.0', type: 'PlayerVersion' }],
rollup: this.context.contextRollup || {}
}
});
};
SunbirdVideoPlayerService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
SunbirdVideoPlayerService.ctorParameters = function () { return [
{ type: UtilService }
]; };
/** @nocollapse */ SunbirdVideoPlayerService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SunbirdVideoPlayerService_Factory() { return new SunbirdVideoPlayerService(i0.ɵɵinject(i1.UtilService)); }, token: SunbirdVideoPlayerService, providedIn: "root" });
return SunbirdVideoPlayerService;
}());
export { SunbirdVideoPlayerService };
if (false) {
/**
* @type {?}
* @private
*/
SunbirdVideoPlayerService.prototype.contentSessionId;
/**
* @type {?}
* @private
*/
SunbirdVideoPlayerService.prototype.playSessionId;
/**
* @type {?}
* @private
*/
SunbirdVideoPlayerService.prototype.telemetryObject;
/**
* @type {?}
* @private
*/
SunbirdVideoPlayerService.prototype.context;
/** @type {?} */
SunbirdVideoPlayerService.prototype.config;
/**
* @type {?}
* @private
*/
SunbirdVideoPlayerService.prototype.utilService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VuYmlyZC12aWRlby1wbGF5ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkaWNkaWtzaGFvcmcvdmlkZW8tcGxheWVyLW1vYmlsZS12OS8iLCJzb3VyY2VzIjpbImxpYi9zdW5iaXJkLXZpZGVvLXBsYXllci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssQ0FBQyxNQUFNLFdBQVcsQ0FBQztBQUUvQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNENBQTRDLENBQUM7OztBQUUvRTtJQVdFLG1DQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUMxQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0RCxDQUFDOzs7OztJQUVNLDhDQUFVOzs7O0lBQWpCLFVBQWtCLEVBQTJDO1lBQXpDLG9CQUFPLEVBQUUsa0JBQU0sRUFBRSxzQkFBUTtRQUMzQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFakQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUU7WUFDN0MsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUN2RDtnQkFDRSxNQUFNLEVBQUU7b0JBQ04sS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO29CQUNwQixHQUFHLEVBQUUs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TTtpQkFDbkI7Ozs7Z0JBTFEsV0FBVzs7O29DQUhwQjtDQTZKQyxBQXZKRCxJQXVKQztTQXBKWSx5QkFBeUI7Ozs7OztJQUVwQyxxREFBaUM7Ozs7O0lBQ2pDLGtEQUE4Qjs7Ozs7SUFDOUIsb0RBQTZCOzs7OztJQUM3Qiw0Q0FBZ0I7O0lBQ2hCLDJDQUFjOzs7OztJQUVGLGdEQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFBsYXllckNvbmZpZyB9IGZyb20gJy4vcGxheWVySW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdXRpbC5zZXJ2aWNlJztcbmltcG9ydCB7IENzVGVsZW1ldHJ5TW9kdWxlIH0gZnJvbSAnQHByb2plY3Qtc3VuYmlyZC9jbGllbnQtc2VydmljZXMvdGVsZW1ldHJ5JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3VuYmlyZFZpZGVvUGxheWVyU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBjb250ZW50U2Vzc2lvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgcGxheVNlc3Npb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHRlbGVtZXRyeU9iamVjdDogYW55O1xuICBwcml2YXRlIGNvbnRleHQ7XG4gIHB1YmxpYyBjb25maWc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB1dGlsU2VydmljZTogVXRpbFNlcnZpY2UpIHtcbiAgICB0aGlzLmNvbnRlbnRTZXNzaW9uSWQgPSB0aGlzLnV0aWxTZXJ2aWNlLnVuaXF1ZUlkKCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGl6ZSh7IGNvbnRleHQsIGNvbmZpZywgbWV0YWRhdGEgfTogUGxheWVyQ29uZmlnKSB7XG4gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLnBsYXlTZXNzaW9uSWQgPSB0aGlzLnV0aWxTZXJ2aWNlLnVuaXF1ZUlkKCk7XG5cbiAgICBpZiAoIUNzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLmlzSW5pdGlhbGlzZWQpIHtcbiAgICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLmluaXQoe30pO1xuICAgICAgQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UudGVsZW1ldHJ5U2VydmljZS5pbml0VGVsZW1ldHJ5KFxuICAgICAgICB7XG4gICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICBwZGF0YTogY29udGV4dC5wZGF0YSxcbiAgICAgICAgICAgIGVudjogJ2NvbnRlbnRwbGF5ZXInLFxuICAgICAgICAgICAgY2hhbm5lbDogY29udGV4dC5jaGFubmVsLFxuICAgICAgICAgICAgZGlkOiBjb250ZXh0LmRpZCxcbiAgICAgICAgICAgIGF1dGh0b2tlbjogY29udGV4dC5hdXRoVG9rZW4gfHwgJycsXG4gICAgICAgICAgICB1aWQ6IGNvbnRleHQudWlkIHx8ICcnLFxuICAgICAgICAgICAgc2lkOiBjb250ZXh0LnNpZCxcbiAgICAgICAgICAgIGJhdGNoc2l6ZTogMjAsXG4gICAgICAgICAgICBtb2RlOiBjb250ZXh0Lm1vZGUsXG4gICAgICAgICAgICBob3N0OiBjb250ZXh0Lmhvc3QgfHwgJycsXG4gICAgICAgICAgICBlbmRwb2ludDogY29udGV4dC5lbmRwb2ludCB8fCAnL2RhdGEvdjMvdGVsZW1ldHJ5JyxcbiAgICAgICAgICAgIHRhZ3M6IGNvbnRleHQudGFncyxcbiAgICAgICAgICAgIGNkYXRhOiBbeyBpZDogdGhpcy5jb250ZW50U2Vzc2lvbklkLCB0eXBlOiAnQ29udGVudFNlc3Npb24nIH0sXG4gICAgICAgICAgICB7IGlkOiB0aGlzLnBsYXlTZXNzaW9uSWQsIHR5cGU6ICdQbGF5U2Vzc2lvbicgfSxcbiAgICAgICAgICAgIHtpZDogJzIuMCcgLCB0eXBlOiAnUGxheWVyVmVyc2lvbid9XVxuICAgICAgICAgIH0sXG4gICAgICAgICAgdXNlck9yZ0RldGFpbHM6IHt9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy50ZWxlbWV0cnlPYmplY3QgPSB7XG4gICAgICBpZDogbWV0YWRhdGEuaWRlbnRpZmllcixcbiAgICAgIHR5cGU6ICdDb250ZW50JyxcbiAgICAgIHZlcjogbWV0YWRhdGEucGtnVmVyc2lvbiArICcnLFxuICAgICAgcm9sbHVwOiBjb250ZXh0Lm9iamVjdFJvbGx1cCB8fCB7fVxuICAgIH07XG4gIH1cblxuXG4gIHB1YmxpYyBzdGFydChkdXJhdGlvbikge1xuICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLnRlbGVtZXRyeVNlcnZpY2UucmFpc2VTdGFydFRlbGVtZXRyeShcbiAgICAgIHtcbiAgICAgICAgb3B0aW9uczogdGhpcy5nZXRFdmVudE9wdGlvbnMoKSxcbiAgICAgICAgZWRhdGE6IHsgdHlwZTogJ2NvbnRlbnQnLCBtb2RlOiAncGxheScsIHBhZ2VpZDogJycsIGR1cmF0aW9uOiBOdW1iZXIoKGR1cmF0aW9uIC8gMWUzKS50b0ZpeGVkKDIpKSB9XG4gICAgICB9XG4gICAgKTtcblxuICB9XG5cbiAgcHVibGljIGVuZChkdXJhdGlvbiwgdG90YWxsZW5ndGgsIGN1cnJlbnRsZW5ndGgsIGVuZHBhZ2VzZWVuLCB0b3RhbHNlZWtlZGxlbmd0aCwgdmlzaXRlZGxlbmd0aCwgc2NvcmUpIHtcbiAgICBjb25zdCBkdXJhdGlvblNlYyA9IE51bWJlcigoZHVyYXRpb24gLyAxZTMpLnRvRml4ZWQoMikpO1xuICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLnRlbGVtZXRyeVNlcnZpY2UucmFpc2VFbmRUZWxlbWV0cnkoe1xuICAgICAgZWRhdGE6IHtcbiAgICAgICAgdHlwZTogJ2NvbnRlbnQnLFxuICAgICAgICBtb2RlOiAncGxheScsXG4gICAgICAgIHBhZ2VpZDogJ3N1bmJpcmQtcGxheWVyLUVuZHBhZ2UnLFxuICAgICAgICBzdW1tYXJ5OiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJvZ3Jlc3M6IE51bWJlcigoKGN1cnJlbnRsZW5ndGggLyB0b3RhbGxlbmd0aCkgKiAxMDApLnRvRml4ZWQoMCkpXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0b3RhbGxlbmd0aFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdmlzaXRlZGxlbmd0aFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdmlzaXRlZGNvbnRlbnRlbmQ6ICh0b3RhbGxlbmd0aCA9PT0gY3VycmVudGxlbmd0aClcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRvdGFsc2Vla2VkbGVuZ3RoXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBlbmRwYWdlc2VlblxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2NvcmVcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblNlY1xuICAgICAgfSxcbiAgICAgIG9wdGlvbnM6IHRoaXMuZ2V0RXZlbnRPcHRpb25zKClcbiAgICB9KTtcblxuICB9XG5cbiAgcHVibGljIGludGVyYWN0KGlkLCBjdXJyZW50UGFnZSwgZXh0cmFWYWx1ZXM/KSB7XG4gICAgQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UudGVsZW1ldHJ5U2VydmljZS5yYWlzZUludGVyYWN0VGVsZW1ldHJ5KHtcbiAgICAgIG9wdGlvbnM6IHRoaXMuZ2V0RXZlbnRPcHRpb25zKCksXG4gICAgICBlZGF0YTogeyB0eXBlOiAnVE9VQ0gnLCBzdWJ0eXBlOiAnJywgaWQsIHBhZ2VpZDogY3VycmVudFBhZ2UgKyAnJyAsIGV4dHJhOiBleHRyYVZhbHVlcyB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaGVhcnRCZWF0KGRhdGEpIHtcbiAgICBDc1RlbGVtZXRyeU1vZHVsZS5pbnN0YW5jZS5wbGF5ZXJUZWxlbWV0cnlTZXJ2aWNlLm9uSGVhcnRCZWF0RXZlbnQoZGF0YSwge30pO1xuICB9XG5cbiAgcHVibGljIGltcHJlc3Npb24oY3VycmVudFBhZ2UsIGNkYXRhOiBhbnkgPSB7fSkge1xuICAgIGNvbnN0IGltcHJlc3Npb25FdmVudCA9IHtcbiAgICAgIG9wdGlvbnM6IHRoaXMuZ2V0RXZlbnRPcHRpb25zKCksXG4gICAgICBlZGF0YTogeyB0eXBlOiAnd29ya2Zsb3cnLCBzdWJ0eXBlOiAnJywgcGFnZWlkOiBjdXJyZW50UGFnZSArICcnLCB1cmk6ICcnIH1cbiAgICB9O1xuICAgIGlmICghXy5pc0VtcHR5KGNkYXRhKSkge1xuICAgICAgaW1wcmVzc2lvbkV2ZW50Lm9wdGlvbnMuY29udGV4dC5jZGF0YS5wdXNoKGNkYXRhKTtcbiAgICB9XG4gICAgQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UudGVsZW1ldHJ5U2VydmljZS5yYWlzZUltcHJlc3Npb25UZWxlbWV0cnkoaW1wcmVzc2lvbkV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBlcnJvcihlcnJvckNvZGU6IHN0cmluZyAsIGVycm9yVHlwZTogc3RyaW5nICwgIHN0YWNrdHJhY2U/OiBFcnJvcikge1xuICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLnRlbGVtZXRyeVNlcnZpY2UucmFpc2VFcnJvclRlbGVtZXRyeSh7XG4gICAgICBvcHRpb25zOiB0aGlzLmdldEV2ZW50T3B0aW9ucygpLFxuICAgICAgZWRhdGE6IHtcbiAgICAgICAgZXJyOiBlcnJvckNvZGUsXG4gICAgICAgIGVycnR5cGU6IGVycm9yVHlwZSxcbiAgICAgICAgc3RhY2t0cmFjZTogKHN0YWNrdHJhY2UgJiYgc3RhY2t0cmFjZS50b1N0cmluZygpKSB8fCAnJ1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFdmVudE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuICh7XG4gICAgICBvYmplY3Q6IHRoaXMudGVsZW1ldHJ5T2JqZWN0LFxuICAgICAgY29udGV4dDoge1xuICAgICAgICBjaGFubmVsOiB0aGlzLmNvbnRleHQuY2hhbm5lbCxcbiAgICAgICAgcGRhdGE6IHRoaXMuY29udGV4dC5wZGF0YSxcbiAgICAgICAgZW52OiAnY29udGVudHBsYXllcicsXG4gICAgICAgIHNpZDogdGhpcy5jb250ZXh0LnNpZCxcbiAgICAgICAgdWlkOiB0aGlzLmNvbnRleHQudWlkLFxuICAgICAgICBjZGF0YTogW3sgaWQ6IHRoaXMuY29udGVudFNlc3Npb25JZCwgdHlwZTogJ0NvbnRlbnRTZXNzaW9uJyB9LFxuICAgICAgICB7IGlkOiB0aGlzLnBsYXlTZXNzaW9uSWQsIHR5cGU6ICdQbGF5U2Vzc2lvbicgfSxcbiAgICAgICAge2lkOiAnMi4wJyAsIHR5cGU6ICdQbGF5ZXJWZXJzaW9uJ31dLFxuICAgICAgICByb2xsdXA6IHRoaXMuY29udGV4dC5jb250ZXh0Um9sbHVwIHx8IHt9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==