UNPKG

@project-sunbird/sunbird-epub-player-v9

Version:

The Epub player library is powered by Angular. This player is primarily designed to be used on Sunbird consumption platforms _(mobile app, web portal, offline desktop app)_ to drive reusability and maintainability, hence reducing the redundant development

139 lines 17.9 kB
import { Injectable } from '@angular/core'; 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 */ static { this.ɵfac = function EpubPlayerService_Factory(t) { return new (t || EpubPlayerService)(i0.ɵɵinject(i1.UtilService)); }; } /** @nocollapse */ static { this.ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: EpubPlayerService, factory: EpubPlayerService.ɵfac, providedIn: 'root' }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EpubPlayerService, [{ type: Injectable, args: [{ providedIn: 'root' }] }], () => [{ type: i1.UtilService }], null); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VuYmlyZC1lcHViLXBsYXllci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3VuYmlyZC1lcHViLXBsYXllci9zcmMvbGliL3N1bmJpcmQtZXB1Yi1wbGF5ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7QUFPL0UsTUFBTSxPQUFPLGlCQUFpQjtJQWM1QixZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUMxQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRU0sVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQWdCO1FBQzNELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsT0FBTyxHQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLEdBQUcsR0FBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUM3QixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFFbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM5QyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sZUFBZSxHQUFTO2dCQUM1QixNQUFNLEVBQUU7b0JBQ04sS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO29CQUNwQixHQUFHLEVBQUUsZUFBZTtvQkFDcEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO29CQUN4QixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUc7b0JBQ2hCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUU7b0JBQ2xDLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFJLEVBQUU7b0JBQ3RCLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRztvQkFDaEIsU0FBUyxFQUFFLEVBQUU7b0JBQ2IsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFO29CQUN4QixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsSUFBSSxvQkFBb0I7b0JBQ2xELElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTt3QkFDN0QsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO3dCQUMvQyxFQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUcsSUFBSSxFQUFFLGVBQWUsRUFBQyxDQUFDO2lCQUNyQztnQkFDRCxjQUFjLEVBQUUsRUFBRTthQUNuQixDQUFDO1lBQ0YsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3ZCLGVBQWUsQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7WUFDekQsQ0FBQztZQUNELGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDN0UsQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLEdBQUc7WUFDckIsRUFBRSxFQUFFLFFBQVEsQ0FBQyxVQUFVO1lBQ3ZCLElBQUksRUFBRSxTQUFTO1lBQ2YsR0FBRyxFQUFFLFFBQVEsQ0FBQyxVQUFVLEdBQUcsRUFBRSxJQUFJLEtBQUs7WUFDdEMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxZQUFZLElBQUksRUFBRTtTQUNuQyxDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxRQUFRO1FBQ25CLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FDN0Q7WUFDRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUMvQixLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQ3BHLENBQ0YsQ0FBQztJQUVKLENBQUM7SUFFTSxRQUFRLENBQUMsRUFBRSxFQUFFLFdBQVc7UUFDN0IsaUJBQWlCLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDO1lBQ2pFLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQy9CLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFdBQVcsR0FBRyxFQUFFLEVBQUU7U0FDcEUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFVBQVUsQ0FBQyxXQUFXO1FBQzNCLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyx3QkFBd0IsQ0FBQztZQUNuRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUMvQixLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFdBQVcsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRTtTQUM1RSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sR0FBRyxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVc7UUFDdEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hELGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQztZQUM1RCxLQUFLLEVBQUU7Z0JBQ0wsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsSUFBSSxFQUFFLE1BQU07Z0JBQ1osTUFBTSxFQUFFLHdCQUF3QjtnQkFDaEMsT0FBTyxFQUFFO29CQUNQO3dCQUNFLFFBQVEsRUFBRSxVQUFVO3FCQUNyQjtvQkFDRDt3QkFDRSxXQUFXLEVBQUUsQ0FBQyxVQUFVLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDbkQ7b0JBQ0Q7d0JBQ0UsYUFBYSxFQUFFLFVBQVU7cUJBQzFCO29CQUNEO3dCQUNFLGlCQUFpQixFQUFFLENBQUMsVUFBVSxLQUFLLEdBQUcsQ0FBQztxQkFDeEM7b0JBQ0Q7d0JBQ0UsaUJBQWlCLEVBQUUsQ0FBQztxQkFDckI7b0JBQ0Q7d0JBQ0UsV0FBVztxQkFDWjtpQkFDRjtnQkFDRCxRQUFRLEVBQUUsV0FBVzthQUN0QjtZQUNELE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFO1NBQ2hDLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFTSxLQUFLLENBQUMsU0FBaUIsRUFBRSxTQUFpQixFQUFHLE1BQU0sRUFBRyxVQUFVO1FBQ3JFLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQztZQUM5RCxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUMvQixLQUFLLEVBQUU7Z0JBQ0wsR0FBRyxFQUFFLFNBQVM7Z0JBQ2QsT0FBTyxFQUFFLFNBQVM7Z0JBQ2xCLFVBQVUsRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFO2dCQUNqQyxNQUFNLEVBQUcsTUFBTSxJQUFJLEVBQUU7YUFDdEI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZUFBZTtRQUNyQixPQUFPLENBQUM7WUFDTixNQUFNLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDNUIsT0FBTyxFQUFFO2dCQUNQLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDckIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixHQUFHLEVBQUUsZUFBZTtnQkFDcEIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO2dCQUNiLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDYixLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO29CQUM3RCxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7b0JBQy9DLEVBQUMsRUFBRSxFQUFFLEtBQUssRUFBRyxJQUFJLEVBQUUsZUFBZSxFQUFDLENBQUM7Z0JBQ3BDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUU7YUFDMUI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO3FHQXJKVSxpQkFBaUI7c0dBQWpCLGlCQUFpQixXQUFqQixpQkFBaUIsbUJBRmhCLE1BQU07O2lGQUVQLGlCQUFpQjtjQUg3QixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdXRpbFNlcnZpY2UvdXRpbC5zZXJ2aWNlJztcbmltcG9ydCB7IENzVGVsZW1ldHJ5TW9kdWxlIH0gZnJvbSAnQHByb2plY3Qtc3VuYmlyZC9jbGllbnQtc2VydmljZXMvdGVsZW1ldHJ5JztcbmltcG9ydCB7IFBsYXllckNvbmZpZyB9IGZyb20gJy4vc3VuYmlyZC1lcHViLXBsYXllci5pbnRlcmZhY2UnO1xuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEVwdWJQbGF5ZXJTZXJ2aWNlIHtcblxuICBwcml2YXRlIGNvbnRlbnRTZXNzaW9uSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBwbGF5U2Vzc2lvbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgdGVsZW1ldHJ5T2JqZWN0OiBhbnk7XG4gIHByaXZhdGUgY29udGV4dDtcbiAgcHVibGljIGNvbmZpZztcbiAgcHVibGljIGNoYW5uZWw6IHN0cmluZztcbiAgcHVibGljIHBkYXRhOiBzdHJpbmc7XG4gIHB1YmxpYyBzaWQ6IHN0cmluZztcbiAgcHVibGljIHVpZDogc3RyaW5nO1xuICBwdWJsaWMgcm9sbHVwOiBzdHJpbmc7XG5cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHV0aWxTZXJ2aWNlOiBVdGlsU2VydmljZSkge1xuICAgIHRoaXMuY29udGVudFNlc3Npb25JZCA9IHRoaXMudXRpbFNlcnZpY2UudW5pcXVlSWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplKHsgY29udGV4dCwgY29uZmlnLCBtZXRhZGF0YSB9OiBQbGF5ZXJDb25maWcpIHtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMucGxheVNlc3Npb25JZCA9IHRoaXMudXRpbFNlcnZpY2UudW5pcXVlSWQoKTtcbiAgICB0aGlzLmNoYW5uZWwgPSAgdGhpcy5jb250ZXh0LmNoYW5uZWw7XG4gICAgdGhpcy5wZGF0YSA9IHRoaXMuY29udGV4dC5wZGF0YTtcbiAgICB0aGlzLnNpZCA9ICB0aGlzLmNvbnRleHQuc2lkO1xuICAgIHRoaXMudWlkID0gdGhpcy5jb250ZXh0LnVpZDtcbiAgICB0aGlzLnJvbGx1cCA9IHRoaXMuY29udGV4dC5yb2xsdXA7XG5cbiAgICBpZiAoIUNzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLmlzSW5pdGlhbGlzZWQpIHtcbiAgICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLmluaXQoe30pO1xuICAgICAgY29uc3QgdGVsZW1ldHJ5Q29uZmlnOiBhbnkgPSAge1xuICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICBwZGF0YTogY29udGV4dC5wZGF0YSxcbiAgICAgICAgICBlbnY6ICdjb250ZW50cGxheWVyJyxcbiAgICAgICAgICBjaGFubmVsOiBjb250ZXh0LmNoYW5uZWwsXG4gICAgICAgICAgZGlkOiBjb250ZXh0LmRpZCxcbiAgICAgICAgICBhdXRodG9rZW46IGNvbnRleHQuYXV0aFRva2VuIHx8ICcnLFxuICAgICAgICAgIHVpZDogY29udGV4dC51aWQgfHwgJycsXG4gICAgICAgICAgc2lkOiBjb250ZXh0LnNpZCxcbiAgICAgICAgICBiYXRjaHNpemU6IDIwLFxuICAgICAgICAgIG1vZGU6IGNvbnRleHQubW9kZSxcbiAgICAgICAgICBob3N0OiBjb250ZXh0Lmhvc3QgfHwgJycsXG4gICAgICAgICAgZW5kcG9pbnQ6IGNvbnRleHQuZW5kcG9pbnQgfHwgJy9kYXRhL3YzL3RlbGVtZXRyeScsXG4gICAgICAgICAgdGFnczogY29udGV4dC50YWdzLFxuICAgICAgICAgIGNkYXRhOiBbeyBpZDogdGhpcy5jb250ZW50U2Vzc2lvbklkLCB0eXBlOiAnQ29udGVudFNlc3Npb24nIH0sXG4gICAgICAgICAgeyBpZDogdGhpcy5wbGF5U2Vzc2lvbklkLCB0eXBlOiAnUGxheVNlc3Npb24nIH0sXG4gICAgICAgICAge2lkOiAnMi4wJyAsIHR5cGU6ICdQbGF5ZXJWZXJzaW9uJ31dLFxuICAgICAgICB9LFxuICAgICAgICB1c2VyT3JnRGV0YWlsczoge31cbiAgICAgIH07XG4gICAgICBpZiAoY29udGV4dC5kaXNwYXRjaGVyKSB7XG4gICAgICAgIHRlbGVtZXRyeUNvbmZpZy5jb25maWcuZGlzcGF0Y2hlciA9IGNvbnRleHQuZGlzcGF0Y2hlcjtcbiAgICAgIH1cbiAgICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLnRlbGVtZXRyeVNlcnZpY2UuaW5pdFRlbGVtZXRyeSh0ZWxlbWV0cnlDb25maWcpO1xuICAgIH1cblxuICAgIHRoaXMudGVsZW1ldHJ5T2JqZWN0ID0ge1xuICAgICAgaWQ6IG1ldGFkYXRhLmlkZW50aWZpZXIsXG4gICAgICB0eXBlOiAnQ29udGVudCcsXG4gICAgICB2ZXI6IG1ldGFkYXRhLnBrZ1ZlcnNpb24gKyAnJyB8fCAnMS4wJyxcbiAgICAgIHJvbGx1cDogY29udGV4dC5vYmplY3RSb2xsdXAgfHwge31cbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXJ0KGR1cmF0aW9uKSB7XG4gICAgQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UudGVsZW1ldHJ5U2VydmljZS5yYWlzZVN0YXJ0VGVsZW1ldHJ5KFxuICAgICAge1xuICAgICAgICBvcHRpb25zOiB0aGlzLmdldEV2ZW50T3B0aW9ucygpLFxuICAgICAgICBlZGF0YTogeyB0eXBlOiAnY29udGVudCcsIG1vZGU6ICdwbGF5JywgcGFnZWlkOiAnJywgZHVyYXRpb246IE51bWJlcigoZHVyYXRpb24gLyAxZTMpLnRvRml4ZWQoMikpIH1cbiAgICAgIH1cbiAgICApO1xuXG4gIH1cblxuICBwdWJsaWMgaW50ZXJhY3QoaWQsIGN1cnJlbnRQYWdlKSB7XG4gICAgQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UudGVsZW1ldHJ5U2VydmljZS5yYWlzZUludGVyYWN0VGVsZW1ldHJ5KHtcbiAgICAgIG9wdGlvbnM6IHRoaXMuZ2V0RXZlbnRPcHRpb25zKCksXG4gICAgICBlZGF0YTogeyB0eXBlOiAnVE9VQ0gnLCBzdWJ0eXBlOiAnJywgaWQsIHBhZ2VpZDogY3VycmVudFBhZ2UgKyAnJyB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaW1wcmVzc2lvbihjdXJyZW50UGFnZSkge1xuICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLnRlbGVtZXRyeVNlcnZpY2UucmFpc2VJbXByZXNzaW9uVGVsZW1ldHJ5KHtcbiAgICAgIG9wdGlvbnM6IHRoaXMuZ2V0RXZlbnRPcHRpb25zKCksXG4gICAgICBlZGF0YTogeyB0eXBlOiAnd29ya2Zsb3cnLCBzdWJ0eXBlOiAnJywgcGFnZWlkOiBjdXJyZW50UGFnZSArICcnLCB1cmk6ICcnIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBlbmQoZHVyYXRpb24sIHBlcmNlbnRhZ2UsIGN1cmVudFBhZ2UsIGVuZHBhZ2VzZWVuKSB7XG4gICAgY29uc3QgZHVyYXRpb25TZWMgPSBOdW1iZXIoKGR1cmF0aW9uIC8gMWUzKS50b0ZpeGVkKDIpKTtcbiAgICBDc1RlbGVtZXRyeU1vZHVsZS5pbnN0YW5jZS50ZWxlbWV0cnlTZXJ2aWNlLnJhaXNlRW5kVGVsZW1ldHJ5KHtcbiAgICAgIGVkYXRhOiB7XG4gICAgICAgIHR5cGU6ICdjb250ZW50JyxcbiAgICAgICAgbW9kZTogJ3BsYXknLFxuICAgICAgICBwYWdlaWQ6ICdzdW5iaXJkLXBsYXllci1FbmRwYWdlJyxcbiAgICAgICAgc3VtbWFyeTogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByb2dyZXNzOiBwZXJjZW50YWdlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0b3RhbGxlbmd0aDogKHBlcmNlbnRhZ2UgPT09IDEwMCA/IGN1cmVudFBhZ2UgOiAxKVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdmlzaXRlZGxlbmd0aDogY3VyZW50UGFnZVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdmlzaXRlZGNvbnRlbnRlbmQ6IChwZXJjZW50YWdlID09PSAxMDApXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0b3RhbHNlZWtlZGxlbmd0aDogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZW5kcGFnZXNlZW5cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblNlY1xuICAgICAgfSxcbiAgICAgIG9wdGlvbnM6IHRoaXMuZ2V0RXZlbnRPcHRpb25zKClcbiAgICB9KTtcblxuICB9XG5cbiAgcHVibGljIGVycm9yKGVycm9yQ29kZTogc3RyaW5nLCBlcnJvclR5cGU6IHN0cmluZyAsIHBhZ2VpZCAsIHN0YWNrdHJhY2UgKSB7XG4gICAgQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UudGVsZW1ldHJ5U2VydmljZS5yYWlzZUVycm9yVGVsZW1ldHJ5KHtcbiAgICAgIG9wdGlvbnM6IHRoaXMuZ2V0RXZlbnRPcHRpb25zKCksXG4gICAgICBlZGF0YToge1xuICAgICAgICBlcnI6IGVycm9yQ29kZSxcbiAgICAgICAgZXJydHlwZTogZXJyb3JUeXBlLFxuICAgICAgICBzdGFja3RyYWNlOiBzdGFja3RyYWNlLnRvU3RyaW5nKCksXG4gICAgICAgIHBhZ2VpZCA6IHBhZ2VpZCB8fCAnJ1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFdmVudE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuICh7XG4gICAgICBvYmplY3Q6IHRoaXMudGVsZW1ldHJ5T2JqZWN0LFxuICAgICAgY29udGV4dDoge1xuICAgICAgICBjaGFubmVsOiB0aGlzLmNoYW5uZWwsXG4gICAgICAgIHBkYXRhOiB0aGlzLnBkYXRhLFxuICAgICAgICBlbnY6ICdjb250ZW50cGxheWVyJyxcbiAgICAgICAgc2lkOiB0aGlzLnNpZCxcbiAgICAgICAgdWlkOiB0aGlzLnVpZCxcbiAgICAgICAgY2RhdGE6IFt7IGlkOiB0aGlzLmNvbnRlbnRTZXNzaW9uSWQsIHR5cGU6ICdDb250ZW50U2Vzc2lvbicgfSxcbiAgICAgICAgeyBpZDogdGhpcy5wbGF5U2Vzc2lvbklkLCB0eXBlOiAnUGxheVNlc3Npb24nIH0sXG4gICAgICAgIHtpZDogJzIuMCcgLCB0eXBlOiAnUGxheWVyVmVyc2lvbid9XSxcbiAgICAgICAgcm9sbHVwOiB0aGlzLnJvbGx1cCB8fCB7fVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=