{
  "adapter,getPlayhead": "return this.player.getEstimatedTime||this.player.currentTime;",
  "adapter,getVersion": "return '7.0.2-chromecast-js';",
  "adapter,getDuration": "return this.player.duration;",
  "adapter,getBitrate": "if(this.castPlayer&&this.castPlayer.getStreamingProtocol){var protocol=this.castPlayer.getStreamingProtocol();var streamCount=0;try{if(protocol.getStreamCount&&protocol.getStreamCount()>0){streamCount=protocol.getStreamCount();}}catch(e){}for(var c=0;c<protocol.getStreamCount();c++){var streamInfo=protocol.getStreamInfo(c);if(streamInfo.mimeType.indexOf('video/')===0){var videoLevel=protocol.getQualityLevel(c);if(streamInfo.bitrates&&streamInfo.bitrates[videoLevel]){return streamInfo.bitrates[videoLevel];}}}}return undefined;",
  "adapter,getRendition": "var ret;if(this.player&&this.player.videoHeight&&this.player.videoWidth){var bitrate=this.getVideo().getBitrate();if(bitrate<=0){bitrate=this.plugin.requestBuilder.lastSent['bitrate']||-1;}ret=this.getNpawUtils().buildRenditionString(this.player.videoWidth,this.player.videoHeight,bitrate);}return ret;",
  "adapter,getResource": "var ret;if(!this.player.currentSrc.startsWith('blob:')){ret=this.player.currentSrc;}else if(this.castPlayer){ret=this.castPlayer.getHost().url;}return ret",
  "adapter,getPlayrate": "return this.player.playbackRate;",
  "adapter,getDroppedFrames": "return this.player.webkitDroppedFrameCount;",
  "adapter,getPlayerVersion": "var ret;if(typeof cast!=='undefined'&&cast.player&&cast.player.api){ret=cast.player.api.VERSION;}return ret;",
  "adapter,getPlayerName": "return 'Chromecast';",
  "adapter,registerListeners": "this.getNpawUtils().logAllEvents(this.player);this.monitorPlayhead(true,false,1200);this.references={loadstart: this.playListener.bind(this),pause: this.pauseListener.bind(this),playing: this.playingListener.bind(this),error: this.errorListener.bind(this),seeking: this.seekingListener.bind(this),abort: this.endedListener.bind(this),ended: this.endedListener.bind(this),buffering: this.bufferingListener.bind(this)};this.hostReferences={onAutoPause: this.autoPauseListener.bind(this)};for(var key in this.references){this.player.addEventListener(key,this.references[key]);}if(this.castPlayer&&this.castPlayer.getHost&&this.castPlayer.getHost()){var host=this.castPlayer.getHost();for(var key2 in this.hostReferences){host[key2]=this.hostReferences[key2];}}this.registerModelVersion();",
  "adapter,unregisterListeners": "if(this.monitor)this.monitor.stop();if(this.player&&this.references){if(typeof this.player.removeEventListener==='function'){for(var key in this.references){this.player.removeEventListener(key,this.references[key]);}}delete this.references;}if(this.castPlayer&&this.castPlayer.getHost&&this.castPlayer.getHost()){var host=this.castPlayer.getHost();for(var key2 in this.hostReferences){host[key2]=undefined;}delete this.hostReferences;}",
  "adapter,registerModelVersion": "if(typeof this.getVideo().options['device.model']!=='undefined'){return;}try{var{hardwareConcurrency,userAgent}=window.navigator;var context=cast.receiver.CastReceiverManager.getInstance();if(context.canDisplayType('video/mp4;codecs=\"avc1.640033')){this.getVideo().options['device.model']='Chromecast with Google TV';return;}if(userAgent.includes('Android')){this.getVideo().options['device.model']='Chromecast Android';return;}if(context.canDisplayType('video/mp4;codecs=hev1.1.6.L93.B0')){this.getVideo().options['device.model']='Chromecast Ultra';return;}if(context.canDisplayType('video/mp4;codecs=avc1.64002A')){this.getVideo().options['device.model']='Chromecast 3';return;}if(hardwareConcurrency===2){this.getVideo().options['device.model']='Chromecast 2';return;}if(hardwareConcurrency===1){this.getVideo().options['device.model']='Chromecast 1';return;}}catch(e){}this.getVideo().options['device.model']='Chromecast';",
  "adapter,playListener,e": "if(this.flags.isStarted){this.fireStop({},'playListener');}this.fireStart({},'playListener');",
  "adapter,pauseListener,e": "if(!this.flags.isBuffering){this.firePause({},'pauseListener');}",
  "adapter,playingListener,e": "this.fireResume({},'playingListener');this.fireSeekEnd({},'playingListener');this.fireBufferEnd({},'playingListener');this.fireJoin({},'playingListener');",
  "adapter,errorListener,e": "this.fireError(e);",
  "adapter,endedListener,e": "this.fireStop({},'endedListener');",
  "adapter,seekingListener,e": "this.fireSeekBegin({},false,'seekingListener');",
  "adapter,bufferingListener,e": "if(this.flags.isPaused){this.fireResume({},'bufferingListener');}this.fireBufferBegin({},false,'bufferingListener');",
  "adapter,autoPauseListener,e": "if(e){this.fireResume({},'autoPauseListener');this.fireBufferBegin({},false,'autoPauseListener');}else{this.fireBufferEnd({},'autoPauseListener');}"
}
