 			if(!manifest)
 				return;
 
-			var segments:Vector.<HLSManifestSegment> = getSegmentsForQuality(lastQuality);
+			// Fetch active data.
 			var activeManifest:HLSManifestParser = getManifestForQuality(lastQuality);
+			var segments:Vector.<HLSManifestSegment> = activeManifest.segments;
 
 			if(segments.length > 0)
+			{
 				lastKnownPlaylistStartTime = segments[0].startTime;
-
-			var i:int = segments.length - 1;
-			if (i >= 0 && (activeManifest.allowCache || activeManifest.streamEnds))
-			{
+				var i:int = segments.length - 1;
+				if (i >= 0 && (activeManifest.allowCache || activeManifest.streamEnds))
+				{
 					accum = (segments[i].startTime + segments[i].duration) - lastKnownPlaylistStartTime;
-			}
-			
+				}
+			}
+
+			// Push the metadata out.
 			var metadata:Object = new Object();
 			metadata.duration = accum;
 			var tag:FLVTagScriptDataObject = new FLVTagScriptDataObject();

		private function dispatchDVRStreamInfo():void
		{
			var curManifest:HLSManifestParser = getManifestForQuality(lastQuality);
			var segments:Vector.<HLSManifestSegment> = getSegmentsForQuality(lastQuality);
			if (segments.length == 0) return; // No point, I think, in continuing
			
			var firstSegment:HLSManifestSegment = segments[ 0 ];
			var lastSegment:HLSManifestSegment = segments[segments.length - 1];
			
			var dvrInfo:DVRInfo = new DVRInfo();
			dvrInfo.offline = false;
			dvrInfo.isRecording = !curManifest.streamEnds;  // TODO: verify that this is what we REALLY want to be doing
			dvrInfo.startTime = firstSegment.startTime;			
			dvrInfo.beginOffset = firstSegment.startTime;
			dvrInfo.endOffset = lastSegment.startTime + lastSegment.duration;
			dvrInfo.curLength = dvrInfo.endOffset - dvrInfo.beginOffset;

			trace("getFileForTime - " + time + " quality=" + quality);
			
			var origQuality:int = quality;
			quality = getWorkingQuality(quality);

			var segments:Vector.<HLSManifestSegment> = getSegmentsForQuality( origQuality );
			if(!checkAnySegmentKnowledge(segments))
			{
				if(!isBestEffortActive())
				{
					// We may also need to establish a timebase.
					trace("getFileForTime - Seeking without timebase; initiating request.");
					return initiateBestEffortRequest(uint.MAX_VALUE, origQuality);
				}
				else 
				{
					trace("getFileForTime - Waiting on knowledge!");
					return new HTTPStreamRequest (HTTPStreamRequestKind.LIVE_STALL);
				}
			}

			if(time < segments[0].startTime)
			{
				trace("getFileForTime - SequenceSkip - time: " + time + " playlistStartTime: " + segments[0].startTime);				
				time = segments[0].startTime;   /// TODO: HACK Alert!!! < this should likely be handled by DVRInfo (see dash plugin index handler)
												/// No longer quite so sure this is a hack, but a requirement
				++sequenceSkips;
