@dicdikshaorg/epub-player-v9
Version:
Contains Epub 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 develo
149 lines • 18.6 kB
JavaScript
import { Injectable } from '@angular/core';
import { UtilService } from './services/utilService/util.service';
import { CsTelemetryModule } from '@project-sunbird/client-services/telemetry';
import * as i0 from "@angular/core";
import * as i1 from "./services/utilService/util.service";
export class EpubPlayerService {
constructor(utilService) {
this.utilService = utilService;
this.contentSessionId = this.utilService.uniqueId();
}
initialize({ context, config, metadata }) {
this.context = context;
this.config = config;
this.playSessionId = this.utilService.uniqueId();
this.channel = this.context.channel;
this.pdata = this.context.pdata;
this.sid = this.context.sid;
this.uid = this.context.uid;
this.rollup = this.context.rollup;
if (!CsTelemetryModule.instance.isInitialised) {
CsTelemetryModule.instance.init({});
const telemetryConfig = {
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: {}
};
if (context.dispatcher) {
telemetryConfig.config.dispatcher = context.dispatcher;
}
CsTelemetryModule.instance.telemetryService.initTelemetry(telemetryConfig);
}
this.telemetryObject = {
id: metadata.identifier,
type: 'Content',
ver: metadata.pkgVersion + '' || '1.0',
rollup: context.objectRollup || {}
};
}
start(duration) {
CsTelemetryModule.instance.telemetryService.raiseStartTelemetry({
options: this.getEventOptions(),
edata: { type: 'content', mode: 'play', pageid: '', duration: Number((duration / 1e3).toFixed(2)) }
});
}
interact(id, currentPage) {
CsTelemetryModule.instance.telemetryService.raiseInteractTelemetry({
options: this.getEventOptions(),
edata: { type: 'TOUCH', subtype: '', id, pageid: currentPage + '' }
});
}
impression(currentPage) {
CsTelemetryModule.instance.telemetryService.raiseImpressionTelemetry({
options: this.getEventOptions(),
edata: { type: 'workflow', subtype: '', pageid: currentPage + '', uri: '' }
});
}
end(duration, percentage, curentPage, endpageseen) {
const durationSec = Number((duration / 1e3).toFixed(2));
CsTelemetryModule.instance.telemetryService.raiseEndTelemetry({
edata: {
type: 'content',
mode: 'play',
pageid: 'sunbird-player-Endpage',
summary: [
{
progress: percentage
},
{
totallength: (percentage === 100 ? curentPage : 1)
},
{
visitedlength: curentPage
},
{
visitedcontentend: (percentage === 100)
},
{
totalseekedlength: 0
},
{
endpageseen
}
],
duration: durationSec
},
options: this.getEventOptions()
});
}
error(errorCode, errorType, pageid, stacktrace) {
CsTelemetryModule.instance.telemetryService.raiseErrorTelemetry({
options: this.getEventOptions(),
edata: {
err: errorCode,
errtype: errorType,
stacktrace: stacktrace.toString(),
pageid: pageid || ''
}
});
}
getEventOptions() {
return ({
object: this.telemetryObject,
context: {
channel: this.channel,
pdata: this.pdata,
env: 'contentplayer',
sid: this.sid,
uid: this.uid,
cdata: [{ id: this.contentSessionId, type: 'ContentSession' },
{ id: this.playSessionId, type: 'PlaySession' },
{ id: '2.0', type: 'PlayerVersion' }],
rollup: this.rollup || {}
}
});
}
}
/** @nocollapse */ EpubPlayerService.ɵprov = i0.ɵɵdefineInjectable({ factory: function EpubPlayerService_Factory() { return new EpubPlayerService(i0.ɵɵinject(i1.UtilService)); }, token: EpubPlayerService, providedIn: "root" });
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
EpubPlayerService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/**
* @type {function(): !Array<(null|{
* type: ?,
* decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>),
* })>}
* @nocollapse
*/
EpubPlayerService.ctorParameters = () => [
{ type: UtilService }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VuYmlyZC1lcHViLXBsYXllci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3VuYmlyZC1lcHViLXBsYXllci9zcmMvbGliL3N1bmJpcmQtZXB1Yi1wbGF5ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7O0FBTy9FLE1BQU0sT0FBTyxpQkFBaUI7SUFjNUIsWUFBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDMUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVNLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFnQjtRQUMzRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLE9BQU8sR0FBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNyQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxHQUFHLEdBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFDN0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FB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QixDQUFDO1lBQzlELE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQy9CLEtBQUssRUFBRTtnQkFDTCxHQUFHLEVBQUUsU0FBUztnQkFDZCxPQUFPLEVBQUUsU0FBUztnQkFDbEIsVUFBVSxFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pDLE1BQU0sRUFBRyxNQUFNLElBQUksRUFBRTthQUN0QjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxlQUFlO1FBQ3JCLE9BQU8sQ0FBQztZQUNOLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZTtZQUM1QixPQUFPLEVBQUU7Z0JBQ1AsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLEdBQUcsRUFBRSxlQUFlO2dCQUNwQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2IsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO2dCQUNiLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7b0JBQzdELEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRTtvQkFDL0MsRUFBQyxFQUFFLEVBQUUsS0FBSyxFQUFHLElBQUksRUFBRSxlQUFlLEVBQUMsQ0FBQztnQkFDcEMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRTthQUMxQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Ozs7O1lBeEpGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7Ozs7Ozs7OztZQVBRLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy91dGlsU2VydmljZS91dGlsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDc1RlbGVtZXRyeU1vZHVsZSB9IGZyb20gJ0Bwcm9qZWN0LXN1bmJpcmQvY2xpZW50LXNlcnZpY2VzL3RlbGVtZXRyeSc7XHJcbmltcG9ydCB7IFBsYXllckNvbmZpZyB9IGZyb20gJy4vc3VuYmlyZC1lcHViLXBsYXllci5pbnRlcmZhY2UnO1xyXG5cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEVwdWJQbGF5ZXJTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBjb250ZW50U2Vzc2lvbklkOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBwbGF5U2Vzc2lvbklkOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSB0ZWxlbWV0cnlPYmplY3Q6IGFueTtcclxuICBwcml2YXRlIGNvbnRleHQ7XHJcbiAgcHVibGljIGNvbmZpZztcclxuICBwdWJsaWMgY2hhbm5lbDogc3RyaW5nO1xyXG4gIHB1YmxpYyBwZGF0YTogc3RyaW5nO1xyXG4gIHB1YmxpYyBzaWQ6IHN0cmluZztcclxuICBwdWJsaWMgdWlkOiBzdHJpbmc7XHJcbiAgcHVibGljIHJvbGx1cDogc3RyaW5nO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB1dGlsU2VydmljZTogVXRpbFNlcnZpY2UpIHtcclxuICAgIHRoaXMuY29udGVudFNlc3Npb25JZCA9IHRoaXMudXRpbFNlcnZpY2UudW5pcXVlSWQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0aWFsaXplKHsgY29udGV4dCwgY29uZmlnLCBtZXRhZGF0YSB9OiBQbGF5ZXJDb25maWcpIHtcclxuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XHJcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcclxuICAgIHRoaXMucGxheVNlc3Npb25JZCA9IHRoaXMudXRpbFNlcnZpY2UudW5pcXVlSWQoKTtcclxuICAgIHRoaXMuY2hhbm5lbCA9ICB0aGlzLmNvbnRleHQuY2hhbm5lbDtcclxuICAgIHRoaXMucGRhdGEgPSB0aGlzLmNvbnRleHQucGRhdGE7XHJcbiAgICB0aGlzLnNpZCA9ICB0aGlzLmNvbnRleHQuc2lkO1xyXG4gICAgdGhpcy51aWQgPSB0aGlzLmNvbnRleHQudWlkO1xyXG4gICAgdGhpcy5yb2xsdXAgPSB0aGlzLmNvbnRleHQucm9sbHVwO1xyXG5cclxuICAgIGlmICghQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UuaXNJbml0aWFsaXNlZCkge1xyXG4gICAgICBDc1RlbGVtZXRyeU1vZHVsZS5pbnN0YW5jZS5pbml0KHt9KTtcclxuICAgICAgY29uc3QgdGVsZW1ldHJ5Q29uZmlnOiBhbnkgPSAge1xyXG4gICAgICAgIGNvbmZpZzoge1xyXG4gICAgICAgICAgcGRhdGE6IGNvbnRleHQucGRhdGEsXHJcbiAgICAgICAgICBlbnY6ICdjb250ZW50cGxheWVyJyxcclxuICAgICAgICAgIGNoYW5uZWw6IGNvbnRleHQuY2hhbm5lbCxcclxuICAgICAgICAgIGRpZDogY29udGV4dC5kaWQsXHJcbiAgICAgICAgICBhdXRodG9rZW46IGNvbnRleHQuYXV0aFRva2VuIHx8ICcnLFxyXG4gICAgICAgICAgdWlkOiBjb250ZXh0LnVpZCB8fCAnJyxcclxuICAgICAgICAgIHNpZDogY29udGV4dC5zaWQsXHJcbiAgICAgICAgICBiYXRjaHNpemU6IDIwLFxyXG4gICAgICAgICAgbW9kZTogY29udGV4dC5tb2RlLFxyXG4gICAgICAgICAgaG9zdDogY29udGV4dC5ob3N0IHx8ICcnLFxyXG4gICAgICAgICAgZW5kcG9pbnQ6IGNvbnRleHQuZW5kcG9pbnQgfHwgJy9kYXRhL3YzL3RlbGVtZXRyeScsXHJcbiAgICAgICAgICB0YWdzOiBjb250ZXh0LnRhZ3MsXHJcbiAgICAgICAgICBjZGF0YTogW3sgaWQ6IHRoaXMuY29udGVudFNlc3Npb25JZCwgdHlwZTogJ0NvbnRlbnRTZXNzaW9uJyB9LFxyXG4gICAgICAgICAgeyBpZDogdGhpcy5wbGF5U2Vzc2lvbklkLCB0eXBlOiAnUGxheVNlc3Npb24nIH0sXHJcbiAgICAgICAgICB7aWQ6ICcyLjAnICwgdHlwZTogJ1BsYXllclZlcnNpb24nfV0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB1c2VyT3JnRGV0YWlsczoge31cclxuICAgICAgfTtcclxuICAgICAgaWYgKGNvbnRleHQuZGlzcGF0Y2hlcikge1xyXG4gICAgICAgIHRlbGVtZXRyeUNvbmZpZy5jb25maWcuZGlzcGF0Y2hlciA9IGNvbnRleHQuZGlzcGF0Y2hlcjtcclxuICAgICAgfVxyXG4gICAgICBDc1RlbGVtZXRyeU1vZHVsZS5pbnN0YW5jZS50ZWxlbWV0cnlTZXJ2aWNlLmluaXRUZWxlbWV0cnkodGVsZW1ldHJ5Q29uZmlnKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRlbGVtZXRyeU9iamVjdCA9IHtcclxuICAgICAgaWQ6IG1ldGFkYXRhLmlkZW50aWZpZXIsXHJcbiAgICAgIHR5cGU6ICdDb250ZW50JyxcclxuICAgICAgdmVyOiBtZXRhZGF0YS5wa2dWZXJzaW9uICsgJycgfHwgJzEuMCcsXHJcbiAgICAgIHJvbGx1cDogY29udGV4dC5vYmplY3RSb2xsdXAgfHwge31cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhcnQoZHVyYXRpb24pIHtcclxuICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLnRlbGVtZXRyeVNlcnZpY2UucmFpc2VTdGFydFRlbGVtZXRyeShcclxuICAgICAge1xyXG4gICAgICAgIG9wdGlvbnM6IHRoaXMuZ2V0RXZlbnRPcHRpb25zKCksXHJcbiAgICAgICAgZWRhdGE6IHsgdHlwZTogJ2NvbnRlbnQnLCBtb2RlOiAncGxheScsIHBhZ2VpZDogJycsIGR1cmF0aW9uOiBOdW1iZXIoKGR1cmF0aW9uIC8gMWUzKS50b0ZpeGVkKDIpKSB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIGludGVyYWN0KGlkLCBjdXJyZW50UGFnZSkge1xyXG4gICAgQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UudGVsZW1ldHJ5U2VydmljZS5yYWlzZUludGVyYWN0VGVsZW1ldHJ5KHtcclxuICAgICAgb3B0aW9uczogdGhpcy5nZXRFdmVudE9wdGlvbnMoKSxcclxuICAgICAgZWRhdGE6IHsgdHlwZTogJ1RPVUNIJywgc3VidHlwZTogJycsIGlkLCBwYWdlaWQ6IGN1cnJlbnRQYWdlICsgJycgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW1wcmVzc2lvbihjdXJyZW50UGFnZSkge1xyXG4gICAgQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UudGVsZW1ldHJ5U2VydmljZS5yYWlzZUltcHJlc3Npb25UZWxlbWV0cnkoe1xyXG4gICAgICBvcHRpb25zOiB0aGlzLmdldEV2ZW50T3B0aW9ucygpLFxyXG4gICAgICBlZGF0YTogeyB0eXBlOiAnd29ya2Zsb3cnLCBzdWJ0eXBlOiAnJywgcGFnZWlkOiBjdXJyZW50UGFnZSArICcnLCB1cmk6ICcnIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVuZChkdXJhdGlvbiwgcGVyY2VudGFnZSwgY3VyZW50UGFnZSwgZW5kcGFnZXNlZW4pIHtcclxuICAgIGNvbnN0IGR1cmF0aW9uU2VjID0gTnVtYmVyKChkdXJhdGlvbiAvIDFlMykudG9GaXhlZCgyKSk7XHJcbiAgICBDc1RlbGVtZXRyeU1vZHVsZS5pbnN0YW5jZS50ZWxlbWV0cnlTZXJ2aWNlLnJhaXNlRW5kVGVsZW1ldHJ5KHtcclxuICAgICAgZWRhdGE6IHtcclxuICAgICAgICB0eXBlOiAnY29udGVudCcsXHJcbiAgICAgICAgbW9kZTogJ3BsYXknLFxyXG4gICAgICAgIHBhZ2VpZDogJ3N1bmJpcmQtcGxheWVyLUVuZHBhZ2UnLFxyXG4gICAgICAgIHN1bW1hcnk6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgcHJvZ3Jlc3M6IHBlcmNlbnRhZ2VcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRvdGFsbGVuZ3RoOiAocGVyY2VudGFnZSA9PT0gMTAwID8gY3VyZW50UGFnZSA6IDEpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB2aXNpdGVkbGVuZ3RoOiBjdXJlbnRQYWdlXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB2aXNpdGVkY29udGVudGVuZDogKHBlcmNlbnRhZ2UgPT09IDEwMClcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRvdGFsc2Vla2VkbGVuZ3RoOiAwXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBlbmRwYWdlc2VlblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uU2VjXHJcbiAgICAgIH0sXHJcbiAgICAgIG9wdGlvbnM6IHRoaXMuZ2V0RXZlbnRPcHRpb25zKClcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBlcnJvcihlcnJvckNvZGU6IHN0cmluZywgZXJyb3JUeXBlOiBzdHJpbmcgLCBwYWdlaWQgLCBzdGFja3RyYWNlICkge1xyXG4gICAgQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UudGVsZW1ldHJ5U2VydmljZS5yYWlzZUVycm9yVGVsZW1ldHJ5KHtcclxuICAgICAgb3B0aW9uczogdGhpcy5nZXRFdmVudE9wdGlvbnMoKSxcclxuICAgICAgZWRhdGE6IHtcclxuICAgICAgICBlcnI6IGVycm9yQ29kZSxcclxuICAgICAgICBlcnJ0eXBlOiBlcnJvclR5cGUsXHJcbiAgICAgICAgc3RhY2t0cmFjZTogc3RhY2t0cmFjZS50b1N0cmluZygpLFxyXG4gICAgICAgIHBhZ2VpZCA6IHBhZ2VpZCB8fCAnJ1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RXZlbnRPcHRpb25zKCkge1xyXG4gICAgcmV0dXJuICh7XHJcbiAgICAgIG9iamVjdDogdGhpcy50ZWxlbWV0cnlPYmplY3QsXHJcbiAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICBjaGFubmVsOiB0aGlzLmNoYW5uZWwsXHJcbiAgICAgICAgcGRhdGE6IHRoaXMucGRhdGEsXHJcbiAgICAgICAgZW52OiAnY29udGVudHBsYXllcicsXHJcbiAgICAgICAgc2lkOiB0aGlzLnNpZCxcclxuICAgICAgICB1aWQ6IHRoaXMudWlkLFxyXG4gICAgICAgIGNkYXRhOiBbeyBpZDogdGhpcy5jb250ZW50U2Vzc2lvbklkLCB0eXBlOiAnQ29udGVudFNlc3Npb24nIH0sXHJcbiAgICAgICAgeyBpZDogdGhpcy5wbGF5U2Vzc2lvbklkLCB0eXBlOiAnUGxheVNlc3Npb24nIH0sXHJcbiAgICAgICAge2lkOiAnMi4wJyAsIHR5cGU6ICdQbGF5ZXJWZXJzaW9uJ31dLFxyXG4gICAgICAgIHJvbGx1cDogdGhpcy5yb2xsdXAgfHwge31cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==