From 6ea9affce0f36748b6c61a13b4f3f73509451e69 Mon Sep 17 00:00:00 2001 From: Gabe Kangas Date: Wed, 14 Oct 2020 14:07:38 -0700 Subject: [PATCH] HLS video handling/storage/state refactor (#151) * WIP with new transcoder progress monitor * A whole different WIP in progress monitoring via local PUTs * Use an actual hls playlist parser to rewrite master playlist * Cleanup * Private vs public path for thumbnail generation * Allow each storage provider to make decisions of how to store different types of files * Simplify inbound file writes * Revert * Split out set stream as connected/disconnected state methods * Update videojs * Add comment about the hls handler * Rework of the offline stream state. For #85 * Delete old unreferenced video segment files from disk * Cleanup all segments and revert to a completely offline state after 5min * Stop thumbnail generation on stream stop. Copy logo to thumbnail on cleanup. * Update transcoder test * Add comment * Return http 200 on success to transcoder. Tweak how files are written to disk * Force pixel color format in transcoder * Add debugging info for S3 transfers. Add default ACL. * Fix cleanup timer * Reset session stats when we cleanup the session. * Put log file back * Update test * File should not be a part of this commit * Add centralized shared performance timer for use anywhere * Post-rebase cleanup * Support returning nil from storage provider save * Updates to reflect package changes + other updates in master * Fix storage providers being overwritten * Do not return pointer in save. Support cache headers with S3 providers * Split out videojs + vhs and point to specific working versions of them * Bump vjs and vhs versions * Fix test * Remove unused * Update upload warning message * No longer valid comment * Pin videojs and vhs versions --- build/javascript/README.md | 6 + build/javascript/package-lock.json | 97 +- build/javascript/package.json | 13 +- config/config.go | 9 - config/defaults.go | 3 +- core/core.go | 59 +- core/ffmpeg/ffmpeg.go | 14 - core/ffmpeg/fileWriterReceiverService.go | 103 + core/ffmpeg/hlsFilesystemCleanup.go | 63 + core/ffmpeg/hlsHandler.go | 25 + core/ffmpeg/thumbnailGenerator.go | 18 +- core/ffmpeg/transcoder.go | 57 +- core/ffmpeg/transcoder_test.go | 3 +- core/playlist/monitor.go | 157 - core/rtmp/rtmp.go | 8 - core/stats.go | 2 + core/status.go | 39 - core/storage.go | 14 +- core/storageproviders/local.go | 63 + core/storageproviders/s3Storage.go | 159 +- core/streamState.go | 132 + go.mod | 2 + go.sum | 3 + models/playlist.go | 4 +- models/storageProvider.go | 9 +- router/middleware/caching.go | 24 +- static/offline.m4v | Bin 654749 -> 0 bytes static/offline.ts | Bin 0 -> 1147740 bytes test/durationTimerTest.go | 19 - utils/performanceTimer.go | 50 + utils/utils.go | 36 +- webroot/index-video-only.html | 2 +- webroot/index.html | 2 +- webroot/js/components/player.js | 4 +- .../dist/videojs-http-streaming.min.js | 56241 +--------------- .../common/_commonjsHelpers-37fa8da4.js | 25 - .../js/web_modules/common/core-02e93804.js | 29386 ++++++++ .../js/web_modules/common/window-1e586371.js | 66 - .../js/web_modules/common/window-2f8a9a85.js | 44 - webroot/js/web_modules/import-map.json | 4 +- webroot/js/web_modules/videojs/core.js | 1 + .../js/web_modules/videojs/dist/video.min.js | 31 - .../videojs/{dist => }/video-js.min.css | 0 43 files changed, 30296 insertions(+), 56701 deletions(-) delete mode 100644 core/ffmpeg/ffmpeg.go create mode 100644 core/ffmpeg/fileWriterReceiverService.go create mode 100644 core/ffmpeg/hlsFilesystemCleanup.go create mode 100644 core/ffmpeg/hlsHandler.go delete mode 100644 core/playlist/monitor.go create mode 100644 core/storageproviders/local.go create mode 100644 core/streamState.go delete mode 100644 static/offline.m4v create mode 100644 static/offline.ts delete mode 100644 test/durationTimerTest.go create mode 100644 utils/performanceTimer.go delete mode 100644 webroot/js/web_modules/common/_commonjsHelpers-37fa8da4.js create mode 100644 webroot/js/web_modules/common/core-02e93804.js delete mode 100644 webroot/js/web_modules/common/window-1e586371.js delete mode 100644 webroot/js/web_modules/common/window-2f8a9a85.js create mode 100644 webroot/js/web_modules/videojs/core.js delete mode 100644 webroot/js/web_modules/videojs/dist/video.min.js rename webroot/js/web_modules/videojs/{dist => }/video-js.min.css (100%) diff --git a/build/javascript/README.md b/build/javascript/README.md index d6acc8ed9..280008ba5 100644 --- a/build/javascript/README.md +++ b/build/javascript/README.md @@ -8,3 +8,9 @@ To add, remove, or update one of these components: 2. Edit the `snowpack` `install` block of `package.json` to specify what files you want to add to the Owncast project. This can be an entire library (such as `preact`) or a single file (such as `video.js/dist/video.min.js`). These paths point to files that live in `node_modules`. 3. Run `npm run build`. This will download the requested module from NPM, package up the assets you specified, and then copy them to the Owncast web app in the `webroot/js/web_modules` directory. 4. Your new web dependency is now available for use in your web code. + +## VideoJS versions + +Currently Videojs version 7.8.3 and http-streaming version 2.2.0 are hardcoded because these are versions that have been found to work properly with our HLS stream. Other versions have had issues with things like discontinuities causing a loading spinner. + +So if you update videojs or vhs make sure you do an end-to-end test of a stream and make sure the "this stream is offline" ending video displays properly. diff --git a/build/javascript/package-lock.json b/build/javascript/package-lock.json index eb7c7f7b7..5768e621f 100644 --- a/build/javascript/package-lock.json +++ b/build/javascript/package-lock.json @@ -362,13 +362,6 @@ "mpd-parser": "0.12.0", "mux.js": "5.6.6", "video.js": "^6 || ^7" - }, - "dependencies": { - "mux.js": { - "version": "5.6.6", - "resolved": "https://registry.npmjs.org/mux.js/-/mux.js-5.6.6.tgz", - "integrity": "sha512-q5VIpqb28UVs5dKsOQkpHrPxqInMjiZ/f/4qW4gEBKlm2xeBasRjRJIokixFWj+r6PWfVSEygvPffXnG7aK99g==" - } } }, "@videojs/themes": { @@ -380,9 +373,9 @@ } }, "@videojs/vhs-utils": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-2.2.0.tgz", - "integrity": "sha512-Mtq+doRlbNvis9TyI5kfOg+Vg8aHGXkSXiuNwnkcimqyaP3wO/s/iEVKPcmRUySKivjaWktjdEFVXYfaP+/HTg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-2.2.1.tgz", + "integrity": "sha512-9Qbwx3LAdkG1jh2HKfninjXDxVZCeaoPcmct/bUcDRmLej68Z9XhLe5d2a9fy1qB+UuQwWg7YySASesWavYNjQ==", "requires": { "@babel/runtime": "^7.5.5", "global": "^4.3.2", @@ -397,17 +390,6 @@ "@babel/runtime": "^7.5.5", "global": "~4.4.0", "is-function": "^1.0.1" - }, - "dependencies": { - "global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "requires": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - } } }, "acorn": { @@ -1207,19 +1189,12 @@ } }, "global": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", - "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", "requires": { "min-document": "^2.19.0", - "process": "~0.5.1" - }, - "dependencies": { - "process": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", - "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" - } + "process": "^0.11.10" } }, "got": { @@ -1725,9 +1700,9 @@ "dev": true }, "mux.js": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/mux.js/-/mux.js-5.6.1.tgz", - "integrity": "sha512-iIE3EJURbrPZ9Y4i9ADKTIvxGUcAEBOFhwWUOZGCiKlpXDZrqDgcJLDrOa0PenLhw6WYkOyl18kHFEvwm9JSpg==" + "version": "5.6.6", + "resolved": "https://registry.npmjs.org/mux.js/-/mux.js-5.6.6.tgz", + "integrity": "sha512-q5VIpqb28UVs5dKsOQkpHrPxqInMjiZ/f/4qW4gEBKlm2xeBasRjRJIokixFWj+r6PWfVSEygvPffXnG7aK99g==" }, "node-emoji": { "version": "1.10.0", @@ -2944,12 +2919,12 @@ } }, "video.js": { - "version": "7.9.6", - "resolved": "https://registry.npmjs.org/video.js/-/video.js-7.9.6.tgz", - "integrity": "sha512-2Dg0h2IbFCZRJW/1pkNYrTqolZPonR14ajaC30D5gdVwrSLxqR6SgsYDAblXw+mFFJHxleXzoLiM/hu3TfJmEQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/video.js/-/video.js-7.8.3.tgz", + "integrity": "sha512-u8/1qEZdBeOm7TgBhJg8ab28vd3x62UMaaSnZ79yOMaxCqACP9CzWJT9c3Isfv2jY9BNLBIIft+BqNLTWudtLw==", "requires": { "@babel/runtime": "^7.9.2", - "@videojs/http-streaming": "1.13.4", + "@videojs/http-streaming": "1.13.2", "@videojs/xhr": "2.5.1", "global": "4.3.2", "keycode": "^2.2.0", @@ -2959,15 +2934,15 @@ }, "dependencies": { "@videojs/http-streaming": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-1.13.4.tgz", - "integrity": "sha512-I/hWi0uiA8aRwB4tfK44FRaWEoOU3uyvjUJW4cNST3TsweuovGGoud7K09WUrlbN4U0EjQvDqNwwXNggNs3niw==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-1.13.2.tgz", + "integrity": "sha512-U4Xhh+HxGpRBx9Gm0LlEadq85k9BwckzFgZmyhacauhK/27Mz0goKKFAt+BpxBNp2oHVdAdk8NHfneinsqni3Q==", "requires": { - "aes-decrypter": "3.0.2", + "aes-decrypter": "3.0.0", "global": "^4.3.0", "m3u8-parser": "4.4.0", "mpd-parser": "0.10.0", - "mux.js": "5.6.1", + "mux.js": "5.5.1", "url-toolkit": "^2.1.3", "video.js": "^6.8.0 || ^7.0.0" } @@ -2982,6 +2957,30 @@ "url-toolkit": "^2.1.6" } }, + "aes-decrypter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-decrypter/-/aes-decrypter-3.0.0.tgz", + "integrity": "sha1-eEihwUW5/b9Xrj4rWxvHzwZEqPs=", + "requires": { + "commander": "^2.9.0", + "global": "^4.3.2", + "pkcs7": "^1.0.2" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "requires": { + "min-document": "^2.19.0", + "process": "~0.5.1" + } + }, "m3u8-parser": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-4.4.0.tgz", @@ -3000,6 +2999,16 @@ "global": "^4.3.2", "xmldom": "^0.1.27" } + }, + "mux.js": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/mux.js/-/mux.js-5.5.1.tgz", + "integrity": "sha512-5VmmjADBqS4++8pTI6poSRJ+chHdaoI4XErcQPM5w4QfwaDl+FQlSI0iOgWbYDn6CBCbDRKaSCcEiN2K5aHNGQ==" + }, + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" } } }, diff --git a/build/javascript/package.json b/build/javascript/package.json index ad38fa19a..0077316e1 100644 --- a/build/javascript/package.json +++ b/build/javascript/package.json @@ -6,19 +6,19 @@ "dependencies": { "@joeattardi/emoji-button": "^4.2.0", "@justinribeiro/lite-youtube": "^0.9.0", - "@videojs/http-streaming": "^2.2.0", "@videojs/themes": "^1.0.0", "htm": "^3.0.4", "preact": "^10.5.3", "tailwindcss": "^1.8.10", - "video.js": "^7.9.6" + "video.js": "7.8.3", + "@videojs/http-streaming": "2.2.0" }, "devDependencies": { "snowpack": "^2.12.1" }, "snowpack": { "install": [ - "video.js/dist/video.min.js", + "video.js/core.js", "@videojs/themes/fantasy/*", "@videojs/http-streaming/dist/videojs-http-streaming.min.js", "video.js/dist/video-js.min.css", @@ -27,11 +27,14 @@ "htm", "preact", "tailwindcss/dist/tailwind.min.css" - ] + ], + "alias": { + "video.js": "video.js/core.js" + } }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "build": "npm install && npx snowpack install && cp -R web_modules ../../webroot/js" + "build": "npm install && npx snowpack install && cp node_modules/video.js/dist/video-js.min.css web_modules/videojs && cp -R web_modules ../../webroot/js" }, "author": "", "license": "ISC" diff --git a/config/config.go b/config/config.go index de389ea59..63f8aec32 100644 --- a/config/config.go +++ b/config/config.go @@ -178,15 +178,6 @@ func (c *config) GetMaxNumberOfReferencedSegmentsInPlaylist() int { return _default.GetMaxNumberOfReferencedSegmentsInPlaylist() } -func (c *config) GetOfflineContentPath() string { - if c.VideoSettings.OfflineContent != "" { - return c.VideoSettings.OfflineContent - } - - // This is relative to the webroot, not the project root. - return _default.VideoSettings.OfflineContent -} - func (c *config) GetFFMpegPath() string { if c.FFMpegPath != "" { return c.FFMpegPath diff --git a/config/defaults.go b/config/defaults.go index ab2384540..faae2f34e 100644 --- a/config/defaults.go +++ b/config/defaults.go @@ -1,9 +1,10 @@ package config import ( - "log" "os/exec" "strings" + + log "github.com/sirupsen/logrus" ) func getDefaults() config { diff --git a/core/core.go b/core/core.go index 918842c5d..e67dc15d5 100644 --- a/core/core.go +++ b/core/core.go @@ -5,7 +5,6 @@ import ( "path" "path/filepath" "strconv" - "time" log "github.com/sirupsen/logrus" @@ -18,13 +17,16 @@ import ( ) var ( - _stats *models.Stats - _storage models.ChunkStorageProvider - _cleanupTimer *time.Timer - _yp *yp.YP - _broadcaster *models.Broadcaster + _stats *models.Stats + _storage models.StorageProvider + _transcoder *ffmpeg.Transcoder + _yp *yp.YP + _broadcaster *models.Broadcaster ) +var handler ffmpeg.HLSHandler +var fileWriter = ffmpeg.FileWriterReceiverService{} + //Start starts up the core processing func Start() error { resetDirectories() @@ -39,6 +41,13 @@ func Start() error { return err } + // The HLS handler takes the written HLS playlists and segments + // and makes storage decisions. It's rather simple right now + // but will play more useful when recordings come into play. + handler = ffmpeg.HLSHandler{} + handler.Storage = _storage + fileWriter.SetupFileWriterReceiverService(&handler) + if err := createInitialOfflineState(); err != nil { log.Error("failed to create the initial offline state") return err @@ -63,31 +72,26 @@ func createInitialOfflineState() error { } } - ffmpeg.ShowStreamOfflineState() + transitionToOfflineVideoStreamContent() return nil } -func startCleanupTimer() { - _cleanupTimer = time.NewTimer(5 * time.Minute) - go func() { - for { - select { - case <-_cleanupTimer.C: - // Reset the session count since the session is over - _stats.SessionMaxViewerCount = 0 - resetDirectories() - ffmpeg.ShowStreamOfflineState() - } - } - }() -} +// transitionToOfflineVideoStreamContent will overwrite the current stream with the +// offline video stream state only. No live stream HLS segments will continue to be +// referenced. +func transitionToOfflineVideoStreamContent() { + log.Traceln("Firing transcoder with offline stream state") -// StopCleanupTimer will stop the previous cleanup timer -func stopCleanupTimer() { - if _cleanupTimer != nil { - _cleanupTimer.Stop() - } + offlineFilename := "offline.ts" + offlineFilePath := "static/" + offlineFilename + _transcoder := ffmpeg.NewTranscoder() + _transcoder.SetSegmentLength(10) + _transcoder.SetInput(offlineFilePath) + _transcoder.Start() + + // Copy the logo to be the thumbnail + utils.Copy(filepath.Join("webroot", config.Config.InstanceDetails.Logo.Large), "webroot/thumbnail.jpg") } func resetDirectories() { @@ -112,4 +116,7 @@ func resetDirectories() { os.MkdirAll(path.Join(config.PrivateHLSStoragePath, strconv.Itoa(0)), 0777) os.MkdirAll(path.Join(config.PublicHLSStoragePath, strconv.Itoa(0)), 0777) } + + // Remove the previous thumbnail + utils.Copy(config.Config.InstanceDetails.Logo.Large, "webroot/thumbnail.jpg") } diff --git a/core/ffmpeg/ffmpeg.go b/core/ffmpeg/ffmpeg.go deleted file mode 100644 index 5671ec6cb..000000000 --- a/core/ffmpeg/ffmpeg.go +++ /dev/null @@ -1,14 +0,0 @@ -package ffmpeg - -import ( - "github.com/owncast/owncast/config" -) - -//ShowStreamOfflineState generates and shows the stream's offline state -func ShowStreamOfflineState() { - transcoder := NewTranscoder() - transcoder.SetSegmentLength(10) - transcoder.SetAppendToStream(true) - transcoder.SetInput(config.Config.GetOfflineContentPath()) - transcoder.Start() -} diff --git a/core/ffmpeg/fileWriterReceiverService.go b/core/ffmpeg/fileWriterReceiverService.go new file mode 100644 index 000000000..ac22de791 --- /dev/null +++ b/core/ffmpeg/fileWriterReceiverService.go @@ -0,0 +1,103 @@ +package ffmpeg + +import ( + "bytes" + "io" + "os" + "path/filepath" + "strconv" + "strings" + + "net/http" + + "github.com/owncast/owncast/config" + "github.com/owncast/owncast/utils" + log "github.com/sirupsen/logrus" +) + +// FileWriterReceiverServiceCallback are to be fired when transcoder responses are written to disk +type FileWriterReceiverServiceCallback interface { + SegmentWritten(localFilePath string) + VariantPlaylistWritten(localFilePath string) + MasterPlaylistWritten(localFilePath string) +} + +// FileWriterReceiverService accepts transcoder responses via HTTP and fires the callbacks +type FileWriterReceiverService struct { + callbacks FileWriterReceiverServiceCallback +} + +// SetupFileWriterReceiverService will start listening for transcoder responses +func (s *FileWriterReceiverService) SetupFileWriterReceiverService(callbacks FileWriterReceiverServiceCallback) { + s.callbacks = callbacks + + httpServer := http.NewServeMux() + httpServer.HandleFunc("/", s.uploadHandler) + + localListenerAddress := "127.0.0.1:" + strconv.Itoa(config.Config.GetPublicWebServerPort()+1) + go http.ListenAndServe(localListenerAddress, httpServer) + log.Traceln("Transcoder response listening on: " + localListenerAddress) +} + +func (s *FileWriterReceiverService) uploadHandler(w http.ResponseWriter, r *http.Request) { + if r.Method != "PUT" { + http.Error(w, http.StatusText(http.StatusBadRequest), http.StatusBadRequest) + return + } + + path := r.URL.Path + writePath := filepath.Join(config.PrivateHLSStoragePath, path) + + var buf bytes.Buffer + io.Copy(&buf, r.Body) + data := buf.Bytes() + f, err := os.Create(writePath) + if err != nil { + returnError(err, w, r) + return + } + + defer f.Close() + _, err = f.Write(data) + if err != nil { + returnError(err, w, r) + return + } + + s.fileWritten(writePath) + w.WriteHeader(http.StatusOK) +} + +var _inWarningState = false + +func (s *FileWriterReceiverService) fileWritten(path string) { + index := utils.GetIndexFromFilePath(path) + + if utils.GetRelativePathFromAbsolutePath(path) == "hls/stream.m3u8" { + s.callbacks.MasterPlaylistWritten(path) + + } else if strings.HasSuffix(path, ".ts") { + performanceMonitorKey := "segmentWritten-" + index + averagePerformance := utils.GetAveragePerformance(performanceMonitorKey) + + utils.StartPerformanceMonitor(performanceMonitorKey) + s.callbacks.SegmentWritten(path) + + if averagePerformance != 0 && averagePerformance > float64(float64(config.Config.GetVideoSegmentSecondsLength())) { + if !_inWarningState { + log.Warnln("slow encoding for variant", index, "if this continues you may see buffering or errors. troubleshoot this issue by visiting https://owncast.online/docs/troubleshooting/") + _inWarningState = true + } + } else { + _inWarningState = false + } + + } else if strings.HasSuffix(path, ".m3u8") { + s.callbacks.VariantPlaylistWritten(path) + } +} + +func returnError(err error, w http.ResponseWriter, r *http.Request) { + log.Errorln(err) + http.Error(w, http.StatusText(http.StatusInternalServerError)+": "+err.Error(), http.StatusInternalServerError) +} diff --git a/core/ffmpeg/hlsFilesystemCleanup.go b/core/ffmpeg/hlsFilesystemCleanup.go new file mode 100644 index 000000000..a8701a02e --- /dev/null +++ b/core/ffmpeg/hlsFilesystemCleanup.go @@ -0,0 +1,63 @@ +package ffmpeg + +import ( + log "github.com/sirupsen/logrus" + + "os" + "path/filepath" + "sort" + + "github.com/owncast/owncast/config" +) + +// Cleanup will delete old files off disk that are no longer being referenced +// in the stream. +func Cleanup(directoryPath string) { + // Determine how many files we should keep on disk + maxNumber := config.Config.GetMaxNumberOfReferencedSegmentsInPlaylist() + buffer := 10 + + files, err := getSegmentFiles(directoryPath) + if err != nil { + log.Fatal(err) + } + + if len(files) < maxNumber+buffer { + return + } + + // Delete old files on disk + filesToDelete := files[maxNumber+buffer:] + for _, file := range filesToDelete { + os.Remove(filepath.Join(directoryPath, file.Name())) + } +} + +func getSegmentFiles(dirname string) ([]os.FileInfo, error) { + f, err := os.Open(dirname) + if err != nil { + return nil, err + } + list, err := f.Readdir(-1) // -1 says to get a list of all files + f.Close() + if err != nil { + return nil, err + } + + filteredList := make([]os.FileInfo, 0) + + // Filter out playlists because we don't want to clean them up + for _, file := range list { + if filepath.Ext(file.Name()) == ".m3u8" { + continue + } + filteredList = append(filteredList, file) + } + + // Sort by date so we can delete old files + sort.Slice(filteredList, func(i, j int) bool { + return filteredList[i].ModTime().UnixNano() > filteredList[j].ModTime().UnixNano() + }) + + return filteredList, nil +} diff --git a/core/ffmpeg/hlsHandler.go b/core/ffmpeg/hlsHandler.go new file mode 100644 index 000000000..65aa7a42d --- /dev/null +++ b/core/ffmpeg/hlsHandler.go @@ -0,0 +1,25 @@ +package ffmpeg + +import ( + "github.com/owncast/owncast/models" +) + +// HLSHandler gets told about available HLS playlists and segments +type HLSHandler struct { + Storage models.StorageProvider +} + +// SegmentWritten is fired when a HLS segment is written to disk +func (h *HLSHandler) SegmentWritten(localFilePath string) { + h.Storage.SegmentWritten(localFilePath) +} + +// VariantPlaylistWritten is fired when a HLS variant playlist is written to disk +func (h *HLSHandler) VariantPlaylistWritten(localFilePath string) { + h.Storage.VariantPlaylistWritten(localFilePath) +} + +// MasterPlaylistWritten is fired when a HLS master playlist is written to disk +func (h *HLSHandler) MasterPlaylistWritten(localFilePath string) { + h.Storage.MasterPlaylistWritten(localFilePath) +} diff --git a/core/ffmpeg/thumbnailGenerator.go b/core/ffmpeg/thumbnailGenerator.go index b98c7f41b..aa58b74e1 100644 --- a/core/ffmpeg/thumbnailGenerator.go +++ b/core/ffmpeg/thumbnailGenerator.go @@ -13,36 +13,44 @@ import ( "github.com/owncast/owncast/config" ) +var _timer *time.Ticker + +func StopThumbnailGenerator() { + if _timer != nil { + _timer.Stop() + } +} + //StartThumbnailGenerator starts generating thumbnails func StartThumbnailGenerator(chunkPath string, variantIndex int) { // Every 20 seconds create a thumbnail from the most // recent video segment. - ticker := time.NewTicker(20 * time.Second) + _timer = time.NewTicker(20 * time.Second) quit := make(chan struct{}) go func() { for { select { - case <-ticker.C: + case <-_timer.C: if err := fireThumbnailGenerator(chunkPath, variantIndex); err != nil { log.Errorln("Unable to generate thumbnail:", err) } case <-quit: //TODO: evaluate if this is ever stopped log.Debug("thumbnail generator has stopped") - ticker.Stop() + _timer.Stop() return } } }() } -func fireThumbnailGenerator(chunkPath string, variantIndex int) error { +func fireThumbnailGenerator(segmentPath string, variantIndex int) error { // JPG takes less time to encode than PNG outputFile := path.Join(config.WebRoot, "thumbnail.jpg") previewGifFile := path.Join(config.WebRoot, "preview.gif") - framePath := path.Join(chunkPath, strconv.Itoa(variantIndex)) + framePath := path.Join(segmentPath, strconv.Itoa(variantIndex)) files, err := ioutil.ReadDir(framePath) if err != nil { return err diff --git a/core/ffmpeg/transcoder.go b/core/ffmpeg/transcoder.go index 98f724887..cde3a37f1 100644 --- a/core/ffmpeg/transcoder.go +++ b/core/ffmpeg/transcoder.go @@ -3,7 +3,6 @@ package ffmpeg import ( "fmt" "os/exec" - "path" "strconv" "strings" @@ -27,6 +26,8 @@ type Transcoder struct { appendToStream bool ffmpegPath string segmentIdentifier string + internalListenerPort int + TranscoderCompleted func(error) } // HLSVariant is a combination of settings that results in a single HLS stream @@ -91,16 +92,27 @@ func (t *Transcoder) Start() { log.Panicln(err, command) } + err = _commandExec.Wait() + if t.TranscoderCompleted != nil { + t.TranscoderCompleted(err) + } return } func (t *Transcoder) getString() string { - hlsOptionFlags := []string{ - "delete_segments", - "program_date_time", - "temp_file", + var port int + if config.Config != nil { + port = config.Config.GetPublicWebServerPort() + 1 + } else if t.internalListenerPort != 0 { + port = t.internalListenerPort + } else { + log.Panicln("A internal port must be set for transcoder callback") } + localListenerAddress := "http://127.0.0.1:" + strconv.Itoa(port) + + hlsOptionFlags := []string{} + if t.appendToStream { hlsOptionFlags = append(hlsOptionFlags, "append_list") } @@ -109,32 +121,43 @@ func (t *Transcoder) getString() string { t.segmentIdentifier = shortid.MustGenerate() } + hlsOptionsString := "" + if len(hlsOptionFlags) > 0 { + hlsOptionsString = "-hls_flags " + strings.Join(hlsOptionFlags, "+") + } ffmpegFlags := []string{ - "cat", t.input, "|", t.ffmpegPath, "-hide_banner", - "-i pipe:", + "-loglevel warning", + "-i ", t.input, + t.getVariantsString(), // HLS Output "-f", "hls", + "-hls_time", strconv.Itoa(t.segmentLengthSeconds), // Length of each segment "-hls_list_size", strconv.Itoa(t.hlsPlaylistLength), // Max # in variant playlist "-hls_delete_threshold", "10", // Start deleting files after hls_list_size + 10 - "-hls_flags", strings.Join(hlsOptionFlags, "+"), // Specific options in HLS generation + hlsOptionsString, // Video settings "-tune", "zerolatency", // Option used for good for fast encoding and low-latency streaming (always includes iframes in each segment) - // "-profile:v", "high", // Main – for standard definition (SD) to 640×480, High – for high definition (HD) to 1920×1080 + "-pix_fmt", "yuv420p", // Force yuv420p color format + "-profile:v", "high", // Main – for standard definition (SD) to 640×480, High – for high definition (HD) to 1920×1080 "-sc_threshold", "0", // Disable scene change detection for creating segments // Filenames "-master_pl_name", "stream.m3u8", - "-strftime 1", // Support the use of strftime in filenames - "-hls_segment_filename", path.Join(t.segmentOutputPath, "/%v/stream-%s-"+t.segmentIdentifier+".ts"), // Each segment's filename + "-strftime 1", // Support the use of strftime in filenames + + "-hls_segment_filename", localListenerAddress + "/%v/stream-" + t.segmentIdentifier + "%s.ts", // Send HLS segments back to us over HTTP "-max_muxing_queue_size", "400", // Workaround for Too many packets error: https://trac.ffmpeg.org/ticket/6375?cversion=0 - path.Join(t.segmentOutputPath, "/%v/stream.m3u8"), // Each variant's playlist - "2> transcoder.log", + + "-method PUT -http_persistent 1", // HLS results sent back to us will be over PUTs + "-fflags +genpts", // Generate presentation time stamp if missing + localListenerAddress + "/%v/stream.m3u8", // Send HLS playlists back to us over HTTP + "2> transcoder.log", // Log to a file for debugging } return strings.Join(ffmpegFlags, " ") @@ -180,7 +203,7 @@ func getVariantFromConfigQuality(quality config.StreamQuality, index int) HLSVar } // NewTranscoder will return a new Transcoder, populated by the config -func NewTranscoder() Transcoder { +func NewTranscoder() *Transcoder { transcoder := new(Transcoder) transcoder.ffmpegPath = config.Config.GetFFMpegPath() transcoder.hlsPlaylistLength = config.Config.GetMaxNumberOfReferencedSegmentsInPlaylist() @@ -207,7 +230,7 @@ func NewTranscoder() Transcoder { transcoder.AddVariant(variant) } - return *transcoder + return transcoder } // Uses `map` https://www.ffmpeg.org/ffmpeg-all.html#Stream-specifiers-1 https://www.ffmpeg.org/ffmpeg-all.html#Advanced-options @@ -364,3 +387,7 @@ func (t *Transcoder) SetAppendToStream(append bool) { func (t *Transcoder) SetIdentifier(output string) { t.segmentIdentifier = output } + +func (t *Transcoder) SetInternalHTTPPort(port int) { + t.internalListenerPort = port +} diff --git a/core/ffmpeg/transcoder_test.go b/core/ffmpeg/transcoder_test.go index 322406683..cb70aae19 100644 --- a/core/ffmpeg/transcoder_test.go +++ b/core/ffmpeg/transcoder_test.go @@ -12,6 +12,7 @@ func TestFFmpegCommand(t *testing.T) { transcoder.SetOutputPath("fakeOutput") transcoder.SetHLSPlaylistLength(10) transcoder.SetIdentifier("jdofFGg") + transcoder.SetInternalHTTPPort(8123) variant := HLSVariant{} variant.videoBitrate = 1200 @@ -23,7 +24,7 @@ func TestFFmpegCommand(t *testing.T) { cmd := transcoder.getString() - expected := `cat fakecontent.flv | /fake/path/ffmpeg -hide_banner -i pipe: -map v:0 -c:v:0 libx264 -b:v:0 1200k -maxrate:v:0 1272k -bufsize:v:0 1440k -g:v:0 119 -x264-params:v:0 "scenecut=0:open_gop=0:min-keyint=119:keyint=119" -map a:0 -c:a:0 copy -r 30 -preset veryfast -var_stream_map "v:0,a:0 " -f hls -hls_time 4 -hls_list_size 10 -hls_delete_threshold 10 -hls_flags delete_segments+program_date_time+temp_file -tune zerolatency -sc_threshold 0 -master_pl_name stream.m3u8 -strftime 1 -hls_segment_filename fakeOutput/%v/stream-%s-jdofFGg.ts -max_muxing_queue_size 400 fakeOutput/%v/stream.m3u8 2> transcoder.log` + expected := `/fake/path/ffmpeg -hide_banner -loglevel warning -i fakecontent.flv -map v:0 -c:v:0 libx264 -b:v:0 1200k -maxrate:v:0 1272k -bufsize:v:0 1440k -g:v:0 119 -x264-params:v:0 "scenecut=0:open_gop=0:min-keyint=119:keyint=119" -map a:0 -c:a:0 copy -r 30 -preset veryfast -var_stream_map "v:0,a:0 " -f hls -hls_time 4 -hls_list_size 10 -hls_delete_threshold 10 -tune zerolatency -pix_fmt yuv420p -profile:v high -sc_threshold 0 -master_pl_name stream.m3u8 -strftime 1 -hls_segment_filename http://127.0.0.1:8123/%v/stream-jdofFGg%s.ts -max_muxing_queue_size 400 -method PUT -http_persistent 1 -fflags +genpts http://127.0.0.1:8123/%v/stream.m3u8 2> transcoder.log` if cmd != expected { t.Errorf("ffmpeg command does not match expected. Got %s, want: %s", cmd, expected) diff --git a/core/playlist/monitor.go b/core/playlist/monitor.go deleted file mode 100644 index 264edc1c3..000000000 --- a/core/playlist/monitor.go +++ /dev/null @@ -1,157 +0,0 @@ -package playlist - -import ( - "io/ioutil" - "path" - "path/filepath" - "strconv" - "strings" - "time" - - log "github.com/sirupsen/logrus" - - "github.com/radovskyb/watcher" - - "github.com/owncast/owncast/config" - "github.com/owncast/owncast/models" - "github.com/owncast/owncast/utils" -) - -var ( - _storage models.ChunkStorageProvider - variants []models.Variant -) - -//StartVideoContentMonitor starts the video content monitor -func StartVideoContentMonitor(storage models.ChunkStorageProvider) error { - _storage = storage - - pathToMonitor := config.PrivateHLSStoragePath - - // Create at least one structure to store the segments for the different stream variants - variants = make([]models.Variant, len(config.Config.VideoSettings.StreamQualities)) - if len(config.Config.VideoSettings.StreamQualities) > 0 { - for index := range variants { - variants[index] = models.Variant{ - VariantIndex: index, - Segments: make(map[string]*models.Segment), - } - } - } else { - variants[0] = models.Variant{ - VariantIndex: 0, - Segments: make(map[string]*models.Segment), - } - } - - // log.Printf("Using directory %s for storing files with %d variants...\n", pathToMonitor, len(variants)) - - w := watcher.New() - - go func() { - for { - select { - case event := <-w.Event: - - relativePath := utils.GetRelativePathFromAbsolutePath(event.Path) - if path.Ext(relativePath) == ".tmp" { - continue - } - - // Ignore removals - if event.Op == watcher.Remove { - continue - } - - // Handle updates to the master playlist by copying it to webroot - if relativePath == path.Join(config.PrivateHLSStoragePath, "stream.m3u8") { - utils.Copy(event.Path, path.Join(config.PublicHLSStoragePath, "stream.m3u8")) - - } else if filepath.Ext(event.Path) == ".m3u8" { - // Handle updates to playlists, but not the master playlist - updateVariantPlaylist(event.Path) - - } else if filepath.Ext(event.Path) == ".ts" { - segment, err := getSegmentFromPath(event.Path) - if err != nil { - log.Error("failed to get the segment from path") - panic(err) - } - - newObjectPathChannel := make(chan string, 1) - go func() { - newObjectPath, err := storage.Save(path.Join(config.PrivateHLSStoragePath, segment.RelativeUploadPath), 0) - if err != nil { - log.Errorln("failed to save the file to the chunk storage.", err) - } - - newObjectPathChannel <- newObjectPath - }() - - newObjectPath := <-newObjectPathChannel - segment.RemoteID = newObjectPath - // fmt.Println("Uploaded", segment.RelativeUploadPath, "as", newObjectPath) - - variants[segment.VariantIndex].Segments[filepath.Base(segment.RelativeUploadPath)] = &segment - - // Force a variant's playlist to be updated after a file is uploaded. - associatedVariantPlaylist := strings.ReplaceAll(event.Path, path.Base(event.Path), "stream.m3u8") - updateVariantPlaylist(associatedVariantPlaylist) - } - case err := <-w.Error: - panic(err) - case <-w.Closed: - return - } - } - }() - - // Watch the hls segment storage folder recursively for changes. - w.FilterOps(watcher.Write, watcher.Rename, watcher.Create) - - if err := w.AddRecursive(pathToMonitor); err != nil { - return err - } - - return w.Start(time.Millisecond * 200) -} - -func getSegmentFromPath(fullDiskPath string) (models.Segment, error) { - segment := models.Segment{ - FullDiskPath: fullDiskPath, - RelativeUploadPath: utils.GetRelativePathFromAbsolutePath(fullDiskPath), - } - - index, err := strconv.Atoi(segment.RelativeUploadPath[0:1]) - if err != nil { - return segment, err - } - - segment.VariantIndex = index - - return segment, nil -} - -func getVariantIndexFromPath(fullDiskPath string) (int, error) { - return strconv.Atoi(fullDiskPath[0:1]) -} - -func updateVariantPlaylist(fullPath string) error { - relativePath := utils.GetRelativePathFromAbsolutePath(fullPath) - variantIndex, err := getVariantIndexFromPath(relativePath) - if err != nil { - return err - } - - variant := variants[variantIndex] - - playlistBytes, err := ioutil.ReadFile(fullPath) - if err != nil { - return err - } - - playlistString := string(playlistBytes) - playlistString = _storage.GenerateRemotePlaylist(playlistString, variant) - - return WritePlaylist(playlistString, path.Join(config.PublicHLSStoragePath, relativePath)) -} diff --git a/core/rtmp/rtmp.go b/core/rtmp/rtmp.go index fefaee13d..3ba44be82 100644 --- a/core/rtmp/rtmp.go +++ b/core/rtmp/rtmp.go @@ -17,7 +17,6 @@ import ( "github.com/nareix/joy5/format/rtmp" "github.com/owncast/owncast/config" "github.com/owncast/owncast/core" - "github.com/owncast/owncast/core/ffmpeg" "github.com/owncast/owncast/models" "github.com/owncast/owncast/utils" ) @@ -27,7 +26,6 @@ var ( _isConnected = false ) -var _transcoder ffmpeg.Transcoder var _pipe *os.File var _rtmpConnection net.Conn @@ -115,9 +113,6 @@ func HandleConn(c *rtmp.Conn, nc net.Conn) { pipePath := utils.GetTemporaryPipePath() syscall.Mkfifo(pipePath, 0666) - _transcoder = ffmpeg.NewTranscoder() - go _transcoder.Start() - _isConnected = true core.SetStreamAsConnected() _rtmpConnection = nc @@ -153,9 +148,6 @@ func handleDisconnect(conn net.Conn) { conn.Close() _pipe.Close() _isConnected = false - _transcoder.Stop() - _rtmpConnection = nil - core.SetStreamAsDisconnected() } // Disconnect will force disconnect the current inbound RTMP connection. diff --git a/core/stats.go b/core/stats.go index 5799afbab..171a30acb 100644 --- a/core/stats.go +++ b/core/stats.go @@ -115,7 +115,9 @@ func SetClientActive(client models.Client) { func RemoveClient(clientID string) { log.Trace("Removing the client:", clientID) + l.Lock() delete(_stats.Clients, clientID) + l.Unlock() } func GetClients() []models.Client { diff --git a/core/status.go b/core/status.go index 986ad61b9..6c0854f41 100644 --- a/core/status.go +++ b/core/status.go @@ -1,12 +1,7 @@ package core import ( - "time" - - "github.com/owncast/owncast/config" - "github.com/owncast/owncast/core/ffmpeg" "github.com/owncast/owncast/models" - "github.com/owncast/owncast/utils" ) //GetStatus gets the status of the system @@ -25,40 +20,6 @@ func GetStatus() models.Status { } } -//SetStreamAsConnected sets the stream as connected -func SetStreamAsConnected() { - stopCleanupTimer() - - _stats.StreamConnected = true - _stats.LastConnectTime = utils.NullTime{time.Now(), true} - _stats.LastDisconnectTime = utils.NullTime{time.Now(), false} - - chunkPath := config.PublicHLSStoragePath - if usingExternalStorage { - chunkPath = config.PrivateHLSStoragePath - } - - if _yp != nil { - _yp.Start() - } - - ffmpeg.StartThumbnailGenerator(chunkPath, config.Config.VideoSettings.HighestQualityStreamIndex) -} - -//SetStreamAsDisconnected sets the stream as disconnected -func SetStreamAsDisconnected() { - _stats.StreamConnected = false - _stats.LastDisconnectTime = utils.NullTime{time.Now(), true} - _broadcaster = nil - - if _yp != nil { - _yp.Stop() - } - - ffmpeg.ShowStreamOfflineState() - startCleanupTimer() -} - // SetBroadcaster will store the current inbound broadcasting details func SetBroadcaster(broadcaster models.Broadcaster) { _broadcaster = &broadcaster diff --git a/core/storage.go b/core/storage.go index 8b94afa73..f4155ecac 100644 --- a/core/storage.go +++ b/core/storage.go @@ -2,7 +2,6 @@ package core import ( "github.com/owncast/owncast/config" - "github.com/owncast/owncast/core/playlist" "github.com/owncast/owncast/core/storageproviders" ) @@ -11,17 +10,16 @@ var ( ) func setupStorage() error { + handler.Storage = _storage + if config.Config.S3.Enabled { _storage = &storageproviders.S3Storage{} - usingExternalStorage = true + } else { + _storage = &storageproviders.LocalStorage{} } - if usingExternalStorage { - if err := _storage.Setup(); err != nil { - return err - } - - go playlist.StartVideoContentMonitor(_storage) + if err := _storage.Setup(); err != nil { + return err } return nil diff --git a/core/storageproviders/local.go b/core/storageproviders/local.go new file mode 100644 index 000000000..842ef95eb --- /dev/null +++ b/core/storageproviders/local.go @@ -0,0 +1,63 @@ +package storageproviders + +import ( + "path/filepath" + + log "github.com/sirupsen/logrus" + + "github.com/owncast/owncast/config" + "github.com/owncast/owncast/core/ffmpeg" + "github.com/owncast/owncast/utils" +) + +type LocalStorage struct { +} + +// Setup configures this storage provider +func (s *LocalStorage) Setup() error { + // no-op + return nil +} + +// SegmentWritten is called when a single segment of video is written +func (s *LocalStorage) SegmentWritten(localFilePath string) { + s.Save(localFilePath, 0) +} + +// VariantPlaylistWritten is called when a variant hls playlist is written +func (s *LocalStorage) VariantPlaylistWritten(localFilePath string) { + _, error := s.Save(localFilePath, 0) + if error != nil { + log.Errorln(error) + return + } +} + +// MasterPlaylistWritten is called when the master hls playlist is written +func (s *LocalStorage) MasterPlaylistWritten(localFilePath string) { + s.Save(localFilePath, 0) +} + +// Save will save a local filepath using the storage provider +func (s *LocalStorage) Save(filePath string, retryCount int) (string, error) { + newPath := "" + + // This is a hack + if filePath == "hls/stream.m3u8" { + newPath = filepath.Join(config.PublicHLSStoragePath, filepath.Base(filePath)) + } else { + newPath = filepath.Join(config.WebRoot, filePath) + } + + // Move video segments to the destination directory. + // Copy playlists to the destination directory so they can still be referenced in + // the private hls working directory. + if filepath.Ext(filePath) == ".m3u8" { + utils.Copy(filePath, newPath) + } else { + utils.Move(filePath, newPath) + ffmpeg.Cleanup(filepath.Dir(newPath)) + } + + return newPath, nil +} diff --git a/core/storageproviders/s3Storage.go b/core/storageproviders/s3Storage.go index 92a33876c..b31caafcd 100644 --- a/core/storageproviders/s3Storage.go +++ b/core/storageproviders/s3Storage.go @@ -4,8 +4,10 @@ import ( "bufio" "fmt" "os" - "strings" + "path/filepath" + "github.com/owncast/owncast/core/playlist" + "github.com/owncast/owncast/utils" log "github.com/sirupsen/logrus" "github.com/aws/aws-sdk-go/aws" @@ -14,9 +16,14 @@ import ( "github.com/aws/aws-sdk-go/service/s3/s3manager" "github.com/owncast/owncast/config" - "github.com/owncast/owncast/models" + + "github.com/grafov/m3u8" ) +// If we try to upload a playlist but it is not yet on disk +// then keep a reference to it here. +var _queuedPlaylistUpdates = make(map[string]string, 0) + //S3Storage is the s3 implementation of the ChunkStorageProvider type S3Storage struct { sess *session.Session @@ -31,10 +38,18 @@ type S3Storage struct { s3ACL string } +var _uploader *s3manager.Uploader + //Setup sets up the s3 storage for saving the video to s3 func (s *S3Storage) Setup() error { log.Trace("Setting up S3 for external storage of video...") + if config.Config.S3.ServingEndpoint != "" { + s.host = config.Config.S3.ServingEndpoint + } else { + s.host = fmt.Sprintf("%s/%s", config.Config.S3.Endpoint, config.Config.S3.Bucket) + } + s.s3Endpoint = config.Config.S3.Endpoint s.s3ServingEndpoint = config.Config.S3.ServingEndpoint s.s3Region = config.Config.S3.Region @@ -45,68 +60,113 @@ func (s *S3Storage) Setup() error { s.sess = s.connectAWS() + _uploader = s3manager.NewUploader(s.sess) + return nil } -//Save saves the file to the s3 bucket -func (s *S3Storage) Save(filePath string, retryCount int) (string, error) { - // fmt.Println("Saving", filePath) +// SegmentWritten is called when a single segment of video is written +func (s *S3Storage) SegmentWritten(localFilePath string) { + index := utils.GetIndexFromFilePath(localFilePath) + performanceMonitorKey := "s3upload-" + index + utils.StartPerformanceMonitor(performanceMonitorKey) + // Upload the segment + _, error := s.Save(localFilePath, 0) + if error != nil { + log.Errorln(error) + return + } + averagePerformance := utils.GetAveragePerformance(performanceMonitorKey) + + // Warn the user about long-running save operations + if averagePerformance != 0 { + if averagePerformance > float64(config.Config.GetVideoSegmentSecondsLength())*0.9 { + log.Warnln("Possible slow uploads: average upload S3 save duration", averagePerformance, "ms. troubleshoot this issue by visiting https://owncast.online/docs/troubleshooting/") + } + log.Traceln(localFilePath, "uploaded to S3") + } + + // Upload the variant playlist for this segment + // so the segments and the HLS playlist referencing + // them are in sync. + playlist := filepath.Join(filepath.Dir(localFilePath), "stream.m3u8") + _, error = s.Save(playlist, 0) + if error != nil { + _queuedPlaylistUpdates[playlist] = playlist + if pErr, ok := error.(*os.PathError); ok { + log.Debugln(pErr.Path, "does not yet exist locally when trying to upload to S3 storage.") + return + } + } + + // If a segment file was successfully uploaded then we can delete + // it from the local filesystem. + os.Remove(localFilePath) +} + +// VariantPlaylistWritten is called when a variant hls playlist is written +func (s *S3Storage) VariantPlaylistWritten(localFilePath string) { + // We are uploading the variant playlist after uploading the segment + // to make sure we're not refering to files in a playlist that don't + // yet exist. See SegmentWritten. + if _, ok := _queuedPlaylistUpdates[localFilePath]; ok { + _, error := s.Save(localFilePath, 0) + if error != nil { + log.Errorln(error) + _queuedPlaylistUpdates[localFilePath] = localFilePath + } + delete(_queuedPlaylistUpdates, localFilePath) + } +} + +// MasterPlaylistWritten is called when the master hls playlist is written +func (s *S3Storage) MasterPlaylistWritten(localFilePath string) { + // Rewrite the playlist to use absolute remote S3 URLs + s.rewriteRemotePlaylist(localFilePath) +} + +// Save saves the file to the s3 bucket +func (s *S3Storage) Save(filePath string, retryCount int) (string, error) { file, err := os.Open(filePath) if err != nil { return "", err } defer file.Close() - uploader := s3manager.NewUploader(s.sess) + maxAgeSeconds := utils.GetCacheDurationSecondsForPath(filePath) + cacheControlHeader := fmt.Sprintf("Cache-Control: max-age=%d", maxAgeSeconds) uploadInput := &s3manager.UploadInput{ - Bucket: aws.String(s.s3Bucket), // Bucket to be used - Key: aws.String(filePath), // Name of the file to be saved - Body: file, // File + Bucket: aws.String(s.s3Bucket), // Bucket to be used + Key: aws.String(filePath), // Name of the file to be saved + Body: file, // File + CacheControl: &cacheControlHeader, } + if s.s3ACL != "" { uploadInput.ACL = aws.String(s.s3ACL) + } else { + // Default ACL + uploadInput.ACL = aws.String("public-read") } - response, err := uploader.Upload(uploadInput) + + response, err := _uploader.Upload(uploadInput) if err != nil { - log.Trace("error uploading:", err.Error()) + log.Traceln("error uploading:", filePath, err.Error()) if retryCount < 4 { - log.Trace("Retrying...") + log.Traceln("Retrying...") return s.Save(filePath, retryCount+1) + } else { + log.Warnln("Giving up on", filePath, err) + return "", fmt.Errorf("Giving up on %s", filePath) } } - // fmt.Println("Uploaded", filePath, "to", response.Location) - return response.Location, nil } -//GenerateRemotePlaylist implements the 'GenerateRemotePlaylist' method -func (s *S3Storage) GenerateRemotePlaylist(playlist string, variant models.Variant) string { - var newPlaylist = "" - - scanner := bufio.NewScanner(strings.NewReader(playlist)) - for scanner.Scan() { - line := scanner.Text() - if line[0:1] != "#" { - fullRemotePath := variant.GetSegmentForFilename(line) - if fullRemotePath == nil { - line = "" - } else if s.s3ServingEndpoint != "" { - line = fmt.Sprintf("%s/%s/%s", s.s3ServingEndpoint, config.PrivateHLSStoragePath, fullRemotePath.RelativeUploadPath) - } else { - line = fullRemotePath.RemoteID - } - } - - newPlaylist = newPlaylist + line + "\n" - } - - return newPlaylist -} - -func (s S3Storage) connectAWS() *session.Session { +func (s *S3Storage) connectAWS() *session.Session { creds := credentials.NewStaticCredentials(s.s3AccessKey, s.s3Secret, "") _, err := creds.Get() if err != nil { @@ -127,3 +187,24 @@ func (s S3Storage) connectAWS() *session.Session { } return sess } + +// rewriteRemotePlaylist will take a local playlist and rewrite it to have absolute URLs to remote locations. +func (s *S3Storage) rewriteRemotePlaylist(filePath string) error { + f, err := os.Open(filePath) + if err != nil { + panic(err) + } + + p := m3u8.NewMasterPlaylist() + err = p.DecodeFrom(bufio.NewReader(f), false) + + for _, item := range p.Variants { + item.URI = s.host + filepath.Join("/hls", item.URI) + } + + publicPath := filepath.Join(config.PublicHLSStoragePath, filepath.Base(filePath)) + + newPlaylist := p.String() + + return playlist.WritePlaylist(newPlaylist, publicPath) +} diff --git a/core/streamState.go b/core/streamState.go new file mode 100644 index 000000000..e16d0ac8f --- /dev/null +++ b/core/streamState.go @@ -0,0 +1,132 @@ +package core + +import ( + "bufio" + "fmt" + "os" + "path/filepath" + "time" + + log "github.com/sirupsen/logrus" + + "github.com/owncast/owncast/config" + "github.com/owncast/owncast/core/ffmpeg" + "github.com/owncast/owncast/utils" + + "github.com/grafov/m3u8" +) + +var _cleanupTimer *time.Timer + +//SetStreamAsConnected sets the stream as connected +func SetStreamAsConnected() { + _stats.StreamConnected = true + _stats.LastConnectTime = utils.NullTime{time.Now(), true} + _stats.LastDisconnectTime = utils.NullTime{time.Now(), false} + + StopCleanupTimer() + + segmentPath := config.PublicHLSStoragePath + if config.Config.S3.Enabled { + segmentPath = config.PrivateHLSStoragePath + } + + go func() { + _transcoder = ffmpeg.NewTranscoder() + _transcoder.TranscoderCompleted = func(error) { + + SetStreamAsDisconnected() + } + _transcoder.Start() + }() + + ffmpeg.StartThumbnailGenerator(segmentPath, config.Config.VideoSettings.HighestQualityStreamIndex) +} + +//SetStreamAsDisconnected sets the stream as disconnected. +func SetStreamAsDisconnected() { + _stats.StreamConnected = false + _stats.LastDisconnectTime = utils.NullTime{time.Now(), true} + + offlineFilename := "offline.ts" + offlineFilePath := "static/" + offlineFilename + + ffmpeg.StopThumbnailGenerator() + + for index := range config.Config.GetVideoStreamQualities() { + playlistFilePath := fmt.Sprintf(filepath.Join(config.PrivateHLSStoragePath, "%d/stream.m3u8"), index) + segmentFilePath := fmt.Sprintf(filepath.Join(config.PrivateHLSStoragePath, "%d/%s"), index, offlineFilename) + + utils.Copy(offlineFilePath, segmentFilePath) + _storage.Save(segmentFilePath, 0) + + if utils.DoesFileExists(playlistFilePath) { + f, err := os.OpenFile(playlistFilePath, os.O_CREATE|os.O_RDWR, os.ModePerm) + defer f.Close() + if err != nil { + log.Errorln(err) + } + + playlist, _, err := m3u8.DecodeFrom(bufio.NewReader(f), true) + variantPlaylist := playlist.(*m3u8.MediaPlaylist) + if len(variantPlaylist.Segments) > config.Config.GetMaxNumberOfReferencedSegmentsInPlaylist() { + variantPlaylist.Segments = variantPlaylist.Segments[:len(variantPlaylist.Segments)] + } + + err = variantPlaylist.Append(offlineFilename, 8.0, "") + variantPlaylist.SetDiscontinuity() + _, err = f.WriteAt(variantPlaylist.Encode().Bytes(), 0) + if err != nil { + log.Errorln(err) + } + } else { + p, err := m3u8.NewMediaPlaylist(1, 1) + if err != nil { + log.Errorln(err) + } + + // If "offline" content gets changed then change the duration below + err = p.Append(offlineFilename, 8.0, "") + if err != nil { + log.Errorln(err) + } + + p.Close() + f, err := os.Create(playlistFilePath) + if err != nil { + log.Errorln(err) + } + defer f.Close() + _, err = f.Write(p.Encode().Bytes()) + if err != nil { + log.Errorln(err) + } + } + _storage.Save(playlistFilePath, 0) + } + + StartCleanupTimer() +} + +// StartCleanupTimer will fire a cleanup after n minutes being disconnected +func StartCleanupTimer() { + _cleanupTimer = time.NewTimer(5 * time.Minute) + go func() { + for { + select { + case <-_cleanupTimer.C: + // Reset the session count since the session is over + _stats.SessionMaxViewerCount = 0 + resetDirectories() + transitionToOfflineVideoStreamContent() + } + } + }() +} + +// StopCleanupTimer will stop the previous cleanup timer +func StopCleanupTimer() { + if _cleanupTimer != nil { + _cleanupTimer.Stop() + } +} diff --git a/go.mod b/go.mod index 8555d6832..b83a99ee3 100644 --- a/go.mod +++ b/go.mod @@ -7,6 +7,8 @@ require ( github.com/amalfra/etag v0.0.0-20190921100247-cafc8de96bc5 github.com/aws/aws-sdk-go v1.34.0 github.com/go-ole/go-ole v1.2.4 // indirect + github.com/grafov/m3u8 v0.11.1 + github.com/kr/pretty v0.2.0 // indirect github.com/mattn/go-sqlite3 v1.14.0 github.com/microcosm-cc/bluemonday v1.0.4 github.com/mssola/user_agent v0.5.2 diff --git a/go.sum b/go.sum index 5664cebd8..832820c55 100644 --- a/go.sum +++ b/go.sum @@ -18,10 +18,13 @@ github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNI github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= +github.com/grafov/m3u8 v0.11.1 h1:igZ7EBIB2IAsPPazKwRKdbhxcoBKO3lO1UY57PZDeNA= +github.com/grafov/m3u8 v0.11.1/go.mod h1:nqzOkfBiZJENr52zTVd/Dcl03yzphIMbJqkXGu+u080= github.com/jmespath/go-jmespath v0.3.0 h1:OS12ieG61fsCg5+qLJ+SsW9NicxNkg3b25OyT2yCeUc= github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= diff --git a/models/playlist.go b/models/playlist.go index c738fa6de..e49c85262 100644 --- a/models/playlist.go +++ b/models/playlist.go @@ -5,10 +5,10 @@ type Segment struct { VariantIndex int // The bitrate variant FullDiskPath string // Where it lives on disk RelativeUploadPath string // Path it should have remotely - RemoteID string + RemoteURL string } -//Variant represents a single bitrate variant and the segments that make it up +//Variant represents a single video variant and the segments that make it up type Variant struct { VariantIndex int Segments map[string]*Segment diff --git a/models/storageProvider.go b/models/storageProvider.go index 4f1737271..0d4ee39db 100644 --- a/models/storageProvider.go +++ b/models/storageProvider.go @@ -1,8 +1,11 @@ package models -//ChunkStorageProvider is how a chunk storage provider should be implemented -type ChunkStorageProvider interface { +//StorageProvider is how a chunk storage provider should be implemented +type StorageProvider interface { Setup() error Save(filePath string, retryCount int) (string, error) - GenerateRemotePlaylist(playlist string, variant Variant) string + + SegmentWritten(localFilePath string) + VariantPlaylistWritten(localFilePath string) + MasterPlaylistWritten(localFilePath string) } diff --git a/router/middleware/caching.go b/router/middleware/caching.go index bcc79ff1d..350197e6f 100644 --- a/router/middleware/caching.go +++ b/router/middleware/caching.go @@ -3,11 +3,11 @@ package middleware import ( "net/http" "os" - "path" "path/filepath" "strconv" "github.com/amalfra/etag" + "github.com/owncast/owncast/utils" ) //DisableCache writes the disable cache header on the responses @@ -42,25 +42,5 @@ func ProcessEtags(w http.ResponseWriter, r *http.Request) int { // SetCachingHeaders will set the cache control header of a response func SetCachingHeaders(w http.ResponseWriter, r *http.Request) { - setCacheSeconds(getCacheDurationSecondsForPath(r.URL.Path), w) -} - -func getCacheDurationSecondsForPath(filePath string) int { - if path.Base(filePath) == "thumbnail.jpg" { - // Thumbnails re-generate during live - return 20 - } else if path.Ext(filePath) == ".js" || path.Ext(filePath) == ".css" { - // Cache javascript & CSS - return 60 - } else if path.Ext(filePath) == ".ts" { - // Cache video segments as long as you want. They can't change. - // This matters most for local hosting of segments for recordings - // and not for live or 3rd party storage. - return 31557600 - } else if path.Ext(filePath) == ".m3u8" { - return 0 - } - - // Default cache length in seconds - return 30 + setCacheSeconds(utils.GetCacheDurationSecondsForPath(r.URL.Path), w) } diff --git a/static/offline.m4v b/static/offline.m4v deleted file mode 100644 index 3c733394b1434828f6ef2bb217bcc964f1297b3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 654749 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

c+F%^*T^cCM%YcK;H}t>*jo z3N4J^6dl7;<>tDfWnq25tV9W*jurJ(lO?;ZT* z?XeTK;QL2`e?@R11pt6HrUc~uA1DNFZVV$t6lNxkx;QL)*?K}6cR z1EW7m8dARf?LO=UkdY=1gKxBTe^ef>+k*Qmxcz#F()wsT+mh3X4TuU1z^`1u^aB7S zMDDfc#r-z)2YG*5K!zeqd}ym)G&Q$D*KO~o|59$i&yq3R089V`KoL>oxYX)jK(1;7 z1Ag)s;A8Hq!gd1>yK11GrgSB zg@+6Mmkd!5hsN&i-Zi*Z!B14AxZ6vKWf&kNXng(GL>CWZ|*c+Uupe*Kje_TB&EJ2&Kg z>u}VM9XbU61b{NE?5v$5yYx3)k*>VZuNxvT0Kff*NiRMDLZJQjN-VlzMw*~~a9KI9 z*)YI2>WV2{t@FE3Q4xp^r{z}aliAK9tF@Ud2E zSS$3UJ3lx@hfVZ(m+R59C{r#X#CiWXA_%D0O{@6P#qf^bGnydnu zTdi+Kw~!!MOgkkT=7doExNvBOL}>EeeFAgQlr0c|Z`oDp?sKm6T-QC=C)kod{>kZ` z_|nS=v@+_uJG@xQ41UMPD6huT0QXkr(e3d05`FD)-6ehucu0OxfS+prubl-4gZspM zdjL5Acu0`)CxL%cIbQe9Bo8E*FYMG_-6w)FzyHGhMH5bGh_bl&n|wqr!7GOmDxVPS z{p9MsysTE0ZI~AK_fTztyu@C&wOaQX*6kP6pCE`KEH?vQ$-8QrA{FosK{u{E{Nx_& zmAv5e9dq)t`w}jP4zn!zzf8^lq}1L+LS&?l!w5+yy`TE3C4T|>rZ6qOJgz*+6AHbL zV=enIdCaWq==`gyI+Ol)g;phi2!OBL+;r_VoCW_0IRxkYO?LMI2Z#SV1kV4Bg7yAa z9rU5p|4l&t%c%bEOJ&0kdjf|N;9m9r#!3H;dGSsHM!?3me#q+;1?tf=`{T~_nKaBPtQ2rCU z{pYIxa}xi5Gt2%{>;G`ge`}rss7QAaAOxXi{bE3j2zDoixe;t^EA0I2{d-}!lcP7! zS6H8G$=u97&_yQ&*j*YAbSxr~3GnDW3~ceO4E6nWE>s_B2~%mnP^oKt zKR~#kCMEd#%ZZ&}D4LEIo-PF!Gjl~BPYe}0TJ10SKWN_JU%KLu0ytDZi|Kv^7-5p; zznwTli&x@p_2*clA&3C02=4geM~8S>_nqOQ6ly8(5aLE=&ff5nxQ(7y}p(*-(=0o`x2nQ8ye%PSqH|4lS9N<2z;hMfuy4cKY``bA37@xif&q z#H;Fr+R-PuQAHKcB<+(~-)-(7G;;gEwTKj;#4ReU5IFe^mnIKC3?(LQFmKi(rj@Yw zK0@fJ+tnLtGF@GTiIr~n+KP$G3TD9HagJ+d5OA#_MVmHKjF4C8Ok(~T_{u93eF^*F zCj38s{W*KMY){~m1n#2~)kc>flF=g<2_qgs4tIGfA&pz#XWiQ)Lv|pTV8RB`H|VC? zVbI>odRlb2#LRp!{D=f4J4nIq^bB91Ke*zfr--Bg_m+>If|Ne^0ScKEKof-)^Lf|N z2aHRK4$=>vGaJbJ2vzP95Bh)g@OkzUbzuPC3zLF(Nh1SWW5d|8w^JLyJ)~?mbSa5h zZn!r`$KCs@ENVL?kB>66=7=HhvkH!SvwsO7|~GVKhTsdM)~-oVfhEGN5D zHqYhwMCL{eU-ru8ZSccOJ$1ZRZwo|;9^ueRCqt9&9g2zrSs>TQIN8s^glrRFpUvsM zUwE~;k9APClk(^xNw%=1QooG_e|j0A)-n^Rzv7p~i4-Q-I{rHS!Jxbx^cH?7^a*i* zEo)l2ISV4n4M)Xj!&**#zzvtX zq<7KeXHe;IY;u2y>XklBrL6U zwqM!41hUID*ZvUN`R8HF`kh6wgf{E??<=p60>&?C*xI_iHl$q(oBTq3<~;>#rg41R z=~d^q1xodH`t4X6-=YW#{8hInX?%CT1&~ScwvliN-2{EslmON-ejM#`W8(4Cr^Jg2 zy=RY2?9FK3=Y#|y!uCN$=XHITO)Bcf`{=zj5s;TNna$%RI-xGpniN1UrZ)D}G{O2Os}e7S^d*S)kq zyys$?ZMdF9eK!aQLm~lhrxCq&V+6DDIp3K#r@sdQ3F&fUHToI#Z690B6y=5;Jrr1T zh}XUK+f4n#{m}-dxxi`ya3aX!f%9_0F)9$UPsAdO`s5{;AV17APhFEdo3H#3j6r zY}lFc`4STU4T+0k-#d_j<;m~x!fFJFj??mO7CnFjI2&Xk6$lHB07+W?HT~dW3UkCF zdz5wom)sR6Cq~AcX&ZPnEs`REv|OW3jS)T%AGSh?7enzGC7=Nl=>QX6GRFpd(QXLhAf1%^ zU4TmJ6>^OBnFicF83!$I|6!UNCHQ%WKK2`>w0!6Epm{?iK?$-%@#iOi_4;T75dz>| z_D>s#3?GUB9s)oU7J?1w#dL*|u^uC7lu|``%N**(9AAx-o!s5EB`4vmyTHZh=q;+J zX8Ci_QOQczhm$ugyb7lq;a*8ZS$w6X zX+Z_|^+xB;RkLmB&td1DprE0HARr=L2)#onA_zh#B4VMah)M~) z3J9p60-=b2ND~F5y?F0iZ{7RH?`5t0k(o7t=iArqWGX99Qa;wS{=Tl6 z@HC)M#ca~|LF1dB7n)3KUS6G-c`OlWHuF5V*>+Z~XwPY*>|pTA()VML%I^MB#r{18 z8hh}c?IuKco)r|u)XXQCPEpl?_0IM1BpMSEA!|L^cb{nB+usppsbOsS^_o4_2h1IP z9n|PS>yaN~4@Mtub<&scIkS3^i-o)0aF==d8fBx}?L{(?dBU(4eGB)2eW&>h6`e=+ zRvm_Af!LtWD)(})EsE_HBjf1PD708(mNrrU`*ZFkRh89Z5yBGC_R#em8gvZaeFcQX z6d!GeZjF}n@FMA$m{1`n8H-{2Tisy0GpEgtVhL+y&hqQ~n|V%9rvpa)g&k&tI4evk z2(tMQmv(Jf>P%N5#;mg_?%y(?|M5x4I5{FG;027+k?qS3P! zu%xSWvOVJ1I_A2Bdb#7P)c(=SeS|F!g4`B9KC#q;X(x9{Oc+~N&RM$0`uMCDqyh7J zB<9wsK6;<`2kV@64WZXOU6b!!bXA2f`7~8v!WE5J7~yT7VbfA4Y&uV_8fwO53oD(y zvT)^wxLQi|V>$wrOG>a;uXxY<+Z8L-B#p5Ev$UmEVUAipA7kn*& z;c+4hA7gH(A^%o7$GzWIuBv^xQLayZsr`AODY8^sJpiu^AM2WYF1Z=6!%W}Ttyc79 zt5VGC(2!Y_dC~#X{yPaIK3lEK3~sQXE*Y{m!v@mDHU%wA7&G$F5+b4p1?4(SE4~yp zcnK42=3i!uBlcO!CJv`xRF8}WXgg@4bN41c+oHAf_II4cc@bs}ndbcNt(QbOnWul4 z|MK+wVo+kiA(O;|CE%}**K2AqN{eY^G*CXlSqRHa`#9VWw(#owNrmuAYk1)^7sVSY z(kdlK%RxqUna#LfgD#7aY`&Gawyh`U=W-`bZHG!>)D5iTK>SnaNSlTVh02w=Io;R_ zT=#tg%Ja0Fs1GM}2^+ry zUNI>b{cezJGuOpfvPQhg@tEd<9RIL9beyTCl<`O1`?p?<8cX7#*B~wM!hV$nK z{k`WND!dP>RqH-6qmcha;n8uW!{rR18vTx=@6q82X}Rx?TXBkb_2Vb+;FP5u1( zB^!eCwGVvNs@#GCa|RN0L4Tc?r)L-chn3UTb-E^uu;*^pDRx@vssC}`o$6;}xajh_ z=5yvpzxfu9Wqc=^%W3-8@%4=0VYmmnJLFwqw(I)t6NAJl1qoj5*bj zA-EfyeW~08`s!dR)9z*PQ3mE-NSrhsse*Bb{|L zx5oVsEYij|&L7rWfn~~SuiyLU#5Mtd?%hA+D2(Es3uDcQ50B`4?89*JB;}O+=0?Ik z#wo#G0ubB%h1ArU6Gf!qSX7BKZhU{$if0}P%PFo2uXWtW=OLLGyAH3xM;ClfSlMo0-7KHKWXl4UX)-FLD1pUsTZ!ld5 zC+OULeT@aTEBU6;cv!yFBQBG>jyfJH#^nX&zr^l!0;{IvqI%L1xHp2^pu|nDuDW*g zrYu?=sTLO(Ys1UTqm(<6eIt#Z&5{dx=Tuk|OTmYF`gI4;OHq|6y5SG z^cKYgAHZfq4^ja_#Lor1Z1(^5tmoMNRizU3i#k3tSo8jam#S#!|a^n8!fu|Og!u$>7oY;tDg?EoCpxS-Wl9iW-SgFiviE2Jhp9tmo zgd*f@*CjwCkW$Ed4O=nEuEn4Lq%IL&|E(bAitsg8`pKh5`cV zBF{YTJLMVbc;CEcgDn#FE`#Y$YY=ui(Oc=k*r-7P#GfVC_XQg-NunozMR$_B;((RQ zX*1$IOzunqC0+A;7U0uTR_CBU{6z(!j+Ucr>zdsXC*LcMZZN8S~QX@mk<+QSmFQA;#bDDE1psT()z+A+l zTpsBh0KWWQ3FrW3c`XMT*6q!T9uBAdZa`kX-iWdyg+rI0N3Y>T3L!;StO6H!;Fw=zX$Qi3Zm-VTd+N+>PO9+a0Q z)LfRko>xclu9mu3eeG6r1^;`I>#k_d&>qWwwu$tjFv0}aFKeXgU6jM@W zi2ALroQISaCiC@MHjOw6LBuF-pSNK2J9_DJ`6{{T((S+ztp6vk{Hbsdu3^9*Rhp-~m*@L4fr{?Nk)Lp0v%=W(4RVIfFqn>K1Pyx6G z2&pM}FS8}aNi~`VE*D9k9%jXLHb%9p_wQamu`ni3^>sbZDYM*lxz~pBN!Z}}=yMbZT4b>g5xMH0T4cNnCb5#Wq&CYG#-lnpdH5Pn% z+lHkN_20`YaQTuAy&4@$P&}hUH7%30iERI`V1z6fZ~d^sa^j`ZcKBPl1-AcZy7ppg zZhh3;ynfP!?T={;w_s0H)x}oXrFs1;9V1k2%qjlqv5kLYxy>Nef_GT=6s+@dLHE&! zZskI~#eH8RbaEu)bC3mBd>0S?RVv$VDv?owPOjmL+zmMxA}qgRVkI7$t>qJimPkWQ z`WA}XH-DfbipX>eUd#;3(o`1N%XCys-jSRv(bbx(&Yj>BigVrj|3O%8P<7|O&`0q; z?EEuipQ_?*l6j{&50Q4w!+$Xk?PR9`Tf7njwe?unH6Af3YTF)A!N=}`c9iRQ>D9&GOM|$o0wdabA)`s`xkmCZ08FMuubmud>&sY26)>2 z{wo&xcfWtJ5WxB`7D`tIN8{&rKxL7udO|0$RR@e42T02z_I&5G<9m>ON%*hj#> zX_Y#8s2WY^(qNqHW>5vL3}=9Lqj_D7@FJUuRqQ<_O$v#~$8d+HKM7@KtDydhe3gw| zdhUqXF^de$8BsZt=X{Y%l8fgyNQ*<%9=^y}=8$&5d&m3nk5$Jwj^dYy?-N-xRf#z< z#&~%pV!=qFJX7^q!qozx-W>1{Z+SZ z8e@q90Kk6HBA5RfA=x26K)(5!^P{CaS-crJ1hd4C(cI<_8IP|H zrGX*syyit@HHQ`^_(ZSq$ycOs9o5l-S(&WdYCfDqpOQ&Zi&TJ~(%e|wDra%V)ElM} z#V#?D_|+w(upO>d5BX?v6jl6J1a?t)Oo<$F>Qz|#1+OD@=*J^-X7dK$libeo(K-ig zUHkhCtI8nc;hvFD$&0d|QbADy^Ny~*cBA5gbi$xa{Xiv#M(sB#1+^9P$L)FTSnI)} z<%H|iEuj@z%yjV#gjnZy)GBR5UP2W^WHg|sNm`W;*EGF{-ZuC0Ncvw8^N=63V?1R$ zP-TaE#Ha@>Tc&w0dd`aR7DO`4BmszeQz(@oCo~qOCx)_@Yr*q0{$1Z+XPG$mifq#N zp8KFPi+O$-&+e*L*;*}7B$)!wU`UUrXSxM0bu>mlYcdGvs>mC9?5?va@VC!oyZhzC zwuH-Oyk?M{l%)@Inha|p?uRooeDtriI%4WbX;8TGi*xj76fxLgO*(v*lJ8>GGk7CQ z%%A<|(_i@B%!NKIci-EK4Fcs+gvry1&W0x!^A_Fs+s+rO=)J_()*(Q!lF=15xZb9m;siO1A&xEv4!pq1TT`5N6kQ>7 z`nfZ=gzHgYXn8U>!(?l1dh{ENz+Yhs2t1u{VG}%#6{7Ptf2`ZZS!0u9BwMA8K`2?pQfD;NgYBTcr z*yD64lwf$F z3q1nNd`agiR@c5f+K+Dc(E32Fkjt@r$N=74)F=>TMtn6-lUp^C$#OdM^`%1zFqX=K zoEdZX*8*ay!2Dl-m2&HJ7hMV&QvSC2>?r(~x1H(I!7ExBRk#X2o77Ivv&-RosmBcH zUPI?gc{*BdpGiC=(yg}oj)Wrzd#Z38odbTrbONREVla*?{wT3Y?@+`cq2QNGUI}K2 z4TFtmI`{GXWM8%t;R+bL%^$Im>Kd*8$BN}#FrW7nC=({J+fn%Zj8&>|EhQvt`*s$J zRnbhjrsi?tpbc+2Fu@}+{Cr@H1I)73GNKux9!XK3ue*>L%UdvQwv8t>oocd?&f zqU;hYYJ-=)=cv{tb+u%)2=i?p3$CvDZ<+LdDq>4^eIdg3d)Ltj@${tc7ud8wR!e*I z9j~i!yTV;(RaTTrX}>0{2Ev!-V%3q#n|hfj)1Yn>eOsruRT3YCa4y`wQ$@hJ=$(Z5 ze7tJKCp`(NI1UKuQMKUYmq21DvP^m~z~s}rC+su)GG99Mp;?_pLyz!4C#Wt?%eS`8 zSFQipQQ~Tk1yutibtoVCgf4|@49m486Dc}>uk!ryfAql1I_g+5c}n`rL&@UrjlnAF zYr2oZ5owpDcTf3uobL^RZ>$1R^ygL_D+p`(v-mW#ysV`iQ zd7MsSGoelfM2ZMFlal2_?|ma;uUw;uxK~0vg#%>#4-0LQr9@Bd<0#InjMyyE^cSa& z{@3K!6-EF4^#7gvI?qCvTGYd)Ep}dO;p5sVIcm z=7ROUc7OZzji8`!<})*auY1sIGu}|8d#Tf9E-!Fp<8tn=J2vtCOI%%<<=`j6$IzFD zOHZGU<{Pq0OaD2G$sk+PD+x*7>z;?^;Bd>R3H-1Fkr=AB#sQ*NmL6DdV05Dr0p84;?tD3^sYFh%K`6sVY)$6H)k{X{==%HcRT zQYKpa0(f3)zB|_1)#)!jd*1q%WZ5E{Z(ONAGc@LO+FtZCtJ1ESk`4pKtnPx89mECB z#8AC_-G+PV!-XEwv93-EQrk7&C+W_%^77VC?G0T~Y3i;J$xjhQFTVJ1WJ1OJ%yu^~ z&$$lLoPONq%Hh5}vNVb1`#={BAY=Z~OaBZWR*N)PFqR?NVQTRIk7c4x(kMO#m47^w zA_@MfM&TJ1votU;y=&ObyDl zbw5#1XfvCrlVL1kA~HfB+YR1`W#c<5*v}_3JGTBvkFM_4QwoC%sq)5{r9#6Rib$9c z!WUwz0ahs4Q_+-*vrjLWxNQDDBpqXT<@6k^%WE>RfBb- z$f*-V(&dIw!00t5Sr2Il5i?{C%k#51sxJtU1A20%6U&e@P+o}Xy6|-fairMo97H$H z$I5RHdv<#y zOI7hzD@JX~jeS+dL6r^BSK)_zf0trIu_ap~ax>_dDG0)s-s2%&ojrPMGQztjY3}3b zLQvX0ll52W?tMDh-x_WAEdfdV*yJcc5Fda~$wZwKG61x|;}BQ8h2fewfRYjCbn*-4S+e2eCHx zuP;`2$5P-D1bWceuojB{d*z5RBsWj}85Q5Yz*eZzT8*jIO9(n)OvZH5R7?pe=~`r6 zd6qh?!9Z}LRwy8xMOFt!{W^(E;7}-eawpyW8SsUJ8y~a!^#~>PSy^eOlU=|I(fQpkcQ@if_6J)ijjr(E4d(W^z{Z9zE>pXWzWKD z)}`~%P*8bxS(5s}c(?0e7s$KP6~CK1MRZPjQISIg@WSWxe|g8I@Dj0XI;{6xyEU&7 zxhoQDI~8_n;sIr7c?~__g)q@Br2$`4K&RiAgCU;@KlGD0%J(WU%?rtUOki@~XM!9^ zL7}^1K3@e)oB&YW@|vJa?%hd!Xyv9NoZkiR zXr>CVsl)R{KEs(**qE<;Y zLA%rb#(A<{$i{=vVc5rkUeiNFIRyl(Vx|cX0ld%YL2s*x9AL{%+eI=C!#d11COq|3 zEA+Q$J~;5c(22CxM%UZ;f>(Z)ODxERm5ABdd;qGe5u?b?2!JtP31$X^=g@kK8t?FE zx+)!0LQ>sYLyv504Cj=Y67uT!U93LJ#d#tw*#&7P2cU`t`);16sXELL0`t)iK;KH87 zCLH}!@Z`72Mq@!2L?zXQm{#UNAR4ji4pFFZCCC;{;5ilx5gF*jmBz(NrLq)&W?wu! zT)!d(h8LIxnN$5gIvMUuPI0OaAZP73S!^VYw5}6{A3lHC091Qmxo*dBjjHW8r|WS( zIH!qt*2X?6eA2_qI!bt56j5cA?}i}l#?F$H@`1;B=}ddzH~FP)Y}jH2}WmWb?@c}PHZ4WKnfBHLIH8Cbv9MM|{MQeC{bbUvfheFBTw?Loe9)9X7-L~%)wUD@= zR!Px0FBe?};0fuj;_0X%7_BhY=8;WtXgbB9kK*>X@#)*#zan|gK!husX+rQXPKwV) z=!XkD74KtxWKULke1afQ#b$O8(=#4yJG)HGYQd7i@~8(0CK5y_@`;kT0oN9~~6 z5ohQiFP>9uP7kd7e2_~UFM1AbmMYu&_UXxTw=t0()GPuJN>JtcdBy>NJR)||*-VRG z){CL=nqAv=^hNc)DY5nf1;2?e24*PHLm{bQG`r>z4+x=CXl;S8%G&Wd-2y?!g4G_s zCFQC9wZLGeaWCb#FPg5E?rVETx~(>Pzt=^xDv}wt&j!X~MF<;g4|IPOG*e=v@0D>P zd5xf1iS;juMh^5?APW+``XJD5H}&W!1?OUe`TWU&*P$yRbb!U+gg@XTRyEY^0oG&5 z)0h|!sFQ$1JhQ=jMK3@&mp)tBti08ejCTrnNpz?PhjE1gw(NBt0$sIE zm&>%4Y&ekES7#8}3nNTsvVqt^1 zQ69+pLfMFq?x2|{*V;rNGO z!f*t;v1C}epp9wW3Atw|3*Ke0vtW1b8v1GksXxCDD(ZE#r3zw&U(*vgZOAQ zUUUWIG-LQA1be%b9wdTDFYnHJJnfI`6Bfo%y-vP{gcR(QdQN9v{GuO8f(m8ePOJm25xbc3(>cJ0XsP;!BG z3=fudB#ikM&--doiCc*>0!JE+@|mCv9z=udxyNdmXqB*1JGb;i-MGIT=xO>YVPOgr z(8Q|PZdQ#?%ooC7a;9&fFi19{f+-*fgPu8&72JzYVFl2VsQ@Uzg4vi9u=-xI5w(tz zJ*%Mh<|LmI!$kKDlvIA_H2v5%rU8;}R(nDv18fk*j?yuyxFyX^O4huNUbLR3QSz3c zXjeGcMR> z*oX15#DpXj8cp%b@7c%32zMFuLv0@SVH`~Plm>dwosC{IiFo+J?xV3|#hpL8 z-#9EfSrYoB5e}$d$x{~D(9BNXAH&@avf_JNkKr8O9rH&PQBo3TFphF;3=g2VJwm>7 zU(566xCg?0zp57}n3x_^vGddgqb9Ww zJRHe`KNKNILwU~W@?6&*x%nI_?9{MG2fo7)nJMPc1#O^@|EQlL6dCbYr&5rxP*vonFApu_{NIfGzefBQ zkhJ2W3bwzB@TcmoW!~j9LkRF5tkLcECZG9>Cqa1GdL;1!A7~?aclyZHKhq7?WUD zYuyO2#;S*c(uX1wWtM=hiYe{34@Bov5sa2EsEQw$_e4MLl8J_5UQbd0Aq(8JuIzbh z#iW}|Ju8P6nukYiTu*FE2`I!9);Dhj57gxTu|VmgD~4J5fHNWInJwbXMfi&z zE<}UQ%tXCwonvnb;9wFAUEysTeQZ{7egoY*WX*D%pJnm(Wa~>RVQlH{&SO4yR+Fx} zr8CC#Era&r&1x#z7RdOA&Tc*F#DpKbO5z0z@R|3Xb?@!;uSvo<#agbwPU&~n)_$Cn z=JIF-^GzzYfPYd-xy2KqBkh#JmxyaO7kAsYi0On2mz!(0FN!q(jF27SaH-}&k6u|V zpMMoSkh-;;wKj*+)8yi6&nKyVwp*1>w~>q;og`;>crby%K*@FPmc&4M{cuaz%dVvF zBjnK%t2TF&aML-xE_>xK3q3Vi5c3XwaqZ6J_L2JkMQt221D_b#w?Mjz6mw1}pT6=M zFD!jwyuMG-EP8bP=b4|^eoZq~awSN{5f$sQKSDBGe<>^$6`VN`WjSPcRnBGVd2n(; zZA-}cf#Rd{8K349y`!sqMoe;hrD1SaJ<>rfrLptPkPxGi!dU10%Wx-K^q+8iJwI!| z2qf-Je}1XtC?1D#2SaT3(^896$GflUaXAMOA+ONA3 zRTnQf!}Pj=F@5U(CHsW_BpYLJo?DtG;N(}M! zwPtImtq4czS3q4u6otX4qJqhOb0bl{Moy!U8voOI`X3hBwzh|3G2I944 zevahC-S!L)I|fVi>mLW!XTL9UqMe%y`8+2?gr%mM#S*y@BlVNVy{?9=Z(XT>+g}ick*cUXO`B|jpW4Rx_ z($)%b;Xx%3A-yP4`k>8#NXQn88pvk9|431{;3k6x!!j;Vf^v|gT7PWSRLD-*NE_vC zs*dux84Y(@%1{$p-gH4Tn~+UP&b$L~JAW=7k6(WgeVFVtJ`A2+n9opaBz(mYzZ1UC zUF^t36R-eY$Le*Pzg+M^KlLe8zlQ-Xg;6Whm+~#8^p(o44?8n%=O(d5Dxxd(qv`(kuNJ=iX&R@w zbojJC=r>xN!Z5rGNo<)D&c0RYfviu<>w9d2QOVqv(T*Aqf9Xw&FFPauzzv}tK+LAx z%JOAq;nFy|3mPFI>oIyCr)7m6a>k%kl-9C2PTi{Am71pM-(KkPD}CtumW8ez6@)e) zg?(V*#<%K3ChEm(BF^*r7jHEQAOH=^09h{4ZJ{2jEZy0oKaBd24t#8xl4B>!=<$K^ zejw3g7*_*sOQ=x`_^w$R_S-p7X!E@rI+^trFfPbhFBGP@*Oj#NQMBWdM!kS|q7}lP z-Z3M%HKn#vGO+CON&hh|^S>6XQ$Kkq8;yF2Jy&$pfO*O^ao?@i_Lk z-AcxNS@hM(8y{2exqY~ReJZ)XWaGal0*9g1L_|Tk6l=~u=NH>LTOOF*aftAc#{d2L zF}|4Pq~^gDPWOwvx~ux#(5y0V(VcHf_r_RN7WdnjSScD-O7*PIS5n?MpM+?mQpHEI zt$j51HM;}?()gMs2folZv&d(7|M`UXF1H(xW%^)AA9u<$ccd#Dq1vSue!Knp+2^-+ zNFdxfKBti{+&={xKI#17f>^Axg-S3^-m+AviP7$Ze0@Kk^u%LMIAp6$P@kSO7t_t~ zC6bzFa`n1no>!zdc*B5Twlf_q%rw(m%E9A%l~ zko26qjhrsee1Q{Gdb^hsVB;fAt6^hzZl|66TY8pZxEN$s4**g`ub2Z;o{m8B@J_N z_xhUKjVFtLDaoARO?r83pEKc|6`4yTadrjBA!HluOK`M@QM z&46EFLt^;c8-K@&3rDHQZrU0boH{mkJN%L-dP+{iSR*^9GgzsKu=cftH|FiBR2gVKMxI*>z z(-TUwizN(DHfCc)r?A>ns>%FGj6Z7D3)q&mLBP4xOael9mN=h+ac!MH2MEqV^!07; zZFss~#4f>-+voIASXB);d*C1T)3|cY&}ohHgcj55tePbTgy&4XbQ`f*qb zUaLT(tqi(0)4FW0|Gp)BQ|znRNl>Bh(p( z+&&>8;mr7-nk~vYZ+X`zUu*Kkl1QRm{G8f)lEr10zx^p}uqc{e$&6uG?a%nwdczDb z->c+c0uj-ZqB3HMZXz);N)F5Nk_FDNb5fC6W=j&tOYQRu%8*X!-N1t%lBuU-H;_r5 zqFB6PEJ%vDwYD^@`0M07B*2WzhS;0EVU0O+_wkI^#mL3DoBp@Vp?ZnBy(XGisUYiO zv6%ZPYcJ6k=`#w|K=npqv(;_?O_+|u-QQyo-tiUaq;(hg&FhX8Zh{TpBzX&&`=&QI z6Qpiwa}mr&ELu+*=!VJd(?rv`?=2Umedzk{ikLT?EuD;IV2HigC#AwADJL^vj*H$r z($wY@2GE8ZF8odqE2`B)I>XZj@k~@Do`(u^EIl_5OGZ4+L3 ziD9LQe2Cb%$xfW!-j!NT?&y)-@;v-mP@RwLdUU zH>O90Cr=XT@cBAh@n~-hH!K7qGmIg!dL@sg6QR%w0I-y-1VB=(B8QsZdSnntN>I7X z5+LTaEdIU}5btFA1BCWgOtn4$pE+!}+J*+8Jm*Rf_GKBmoCP4KtmtOQkABZjVw35{s6PP}N}R-Q=5s)2*(ymQ28>X3SEt{@G4# zH-5kIqq`s@zMjCzp|TJ0^e8}?X|7gg3kkqSl};1MtAAj75bqCXpkU1XZwtkiCi+}Z zump!4C!T09!gKvaAOOYpl9&P}RknG5`KqZExPxMj-2jy8z2`XU?`xmUR1w7fVzwJl za5U;e<%y%4&lDX%89XE+eKj)WkUGzKCf`4pKsHyUE1HF^F@5-kcmb#vuRWAJ?KR=Pj5IxS zE@+!g`ZiooR>CRKUZ5-VgNu83?vG~oV-T>Vx&8wwqZLDfKfL-aU=S3;Tu0XyEDl_u zBEFx0B$rMr+mO%G&&R5@GOwU$jL2R9LD)Wxjt~thkW}*o7f(mtAAj3^T<=te(~pc8 z;)t`|x~XUb?+&OJwvVjlm=S3avY_cM31%BYk|qCUnP3iM81irU`@|_fp`g|NSlpGR zX*G;AI%?YrC$w^c9m#4&@9O74O z(ayL*H4}!1Iz-~NL_JXyU%U8NI#!@2EPr2M!bN4zE`Sj1+5n^}5W#FEbRkV*Gdx_3+^h@Nz62nH{q zw=Kl7G{bxU zmg#(nhV$%3@)0{E*Z^q^^i^(rpicf?-w(ShJcjo4z^pa~;Dv41TGNbp>`e zBbnhv^qUEE2}UY21!?Rp*P(*mJgpek_LN_KVA;K_7Q#>!>Q6Dn(Ckq1PT0jbB8V5d z$)*jV=-y@1>kWPSW=P; zK)#1#qZ)>3e`p>8R&hh)L8w-nN${4NYYW_CVJ!X*n%_aB1E1A9`w z?A1&@KdlSwDA*(mJJU&SB5UgmvU5n6kPuM#%qt0%{xnW%45J}h{FF21go4>Ok5_uM zk|AaSdAil@3v;-)AL#%ncp1}2xBIRzf((NrGLF|mHDO=kl zFg4R5$x$R5?|vWwisx+GOp=je%R!GQ%C;Uz#uam^E{@oqNrqCyIVA8NGYM@cejKG^ z*6FcGbjOqH+gSxQmP}6wkz~bFzj?aygqqp%M`7ULOH|bPj$|aV;HzN1^57+T`043! z5GZq?2t>^6AR#=^wv%4KL=chg8;&%6OE2Oi2p|)RNumnHvz36$P_4{cuxheRn<}Fu0}vcS!p3 zn^+jkED~g=TF(ac{FNSnM3yUyiKo+E z54N~P3A6N}TSS#w3AH7+6;_2^cP_mdfYMitBHg6C3~K64Nt5#D7_JoLB^q=-qE95V zVpk1;YGfg(So4a{vDnF1mlvk&i0Xw=y&lmTWbJuktU@F5_dMHV+vt=foo-v7Q1zgB z_T^7$LkM>u4;!2HJ6D*6f%rq1MJ`kuHJmSN08R{TG3b1SzmLcF2Dq>E82FtbquX;Z zC>ML=2Q#5n5SLdr;?8&+o0w6YO77og_rXqp2T*+t=XNJ!Q4yIQ)_Xr@_Ed@<7`FNC z%`HLy0PQ5#MMxa8WUZiwdi-6HuF|WnY60%aIY21WSvcAS!xSHlhN>u;kkQ7Q=Vsw@ zueEvPnEZj*Z{fS}Yk^mkA6UKpeE2}bRQ05SicQk@<#2zv_o}|IGWH3=T#A-X!3<%} z+h~m8QP*zjnsT;24a{XF*7)2nuQ~JXL~3F;UqcD0k_8xKf9Y~n15x(~9c zs08UvDg%%g2lg*>J5n1GT6O_-pSUyv{C&}XAV_7^KM_>WO?}6m3`}z6Cnbds_I;CH z1zH3YD^|I^zMBf*d9ZbW1XFL99?g+}G0Aj;P<^7pqUHh%%^MThJaXV_25XVX$5GdNfaZ9lA~x z|1QPKU)bgKsre|9pjT}P#bwO%3{7%)@}3Wo<$Z8z_sRmQ>w9}l$&$S>6s?Wn23w`# zbpib_YY_4&`{~Tn=3swh7>XJ8L+32JQ=&1ecrr$@nV;AZ8X4>D4mQYtXqA9wxEOVC z0F5pwxqA$04tQb&T_&%$GD$NkZ3nNvesqzhl_8@34V8Pbgu&q4vQhFpG(dww1GE2$ za0cQ*kBkVYXOMUCPrt1_fl_M{c0~#?|GpC7Ku<3l{Iye({Bne{_e@4f)?wGu!+N zqoPt%0nI4-lR(ZDZn)W4zL~b`Py|Y|$=d8{NRqcK0xPTe*rj_g~+lI4Q zC&EEbLqpEFW{2E4t5MqOV?@&Zm9irE;BV>Ioo(n@)LhrElh7NISqZZ3NK~Vi|4Omf zDQq_W-c1pXve#WwBXh(dUwPe_xc6ypqEZjmY;~RIy_?0qH*>Ju7cMyrPW3!g=u1!( zzLn_qtJW;aBEG`dL`9m~?-&%r+72pfm?Y@WEOfh8!DY;Q(ak0S(W88A04 zA?oc7E6T;=xP1mWIWg|JhQ7hdy**@9l4X(k$&N0T;vvC#r5!D-nBZ(QBOW*|Ik*Tr%exRgsj{g4U=~DY|$Um z@N<-qGOmZ|Cc-kWv2Rt~o^3y_c)amUSCRX*Au}&>grPPFo?#l*(Wkq)l^;4XG9x<$ zPGWqpW*0l|#>@gMr@Nb_e4T6*_PE+j>7N3|^uH95)g)9l!CsX4yVaZ=29b#1F+#On zD;CRxM!to*b!UFxXA&2r@i$tWrPl)!y(2gKDXAa)x9 z0-L%BB)N9{Y!ov%)vAXs+tlwJ=M2`Zu+)tZHb{oMsoyh~Q@GymU~}gU#!QBd0m?8D z&|lk0x;W&hGdOxWR33wU7vJZ7R?Mi+huc8dV7m~W{P;thfX|9x?D{=E%X&w(zVTeT zKJI`wrnPJG5u$7uVNyp|0y5K>S;J>8_)8VnIYh921^flCV;cxT>mcL5&F}v@NVLMx zelq{dKjj6380I4R2wGIyk^kfmKzQMA(!hP-H-ZXcx%&GyP08&LLLaMDVz0m$0}Qbo z_ba0slbqF=j#NKq|EU7oNwxu+y^?7QqdFoOlV5MOPTch=1*pW_cf$v>Ke;yCKUn5X z+0(WBz8h}oBuOt!q_zrJ`;6%1wi^fWwUdR}_@NMSJR8G9y2d#U3qf7)YS60Onb8y@ zKph#C#c>2Wbl@b-gfj@MK4(`sonz^R-lov9t@;7`f!A1?v z-XnGeMfPgdE&_86za(eX`u1dc%LL?kib2V=Eg@^POw_+oq${QGNVkKK4lQAzSAjRR z0h%q)8yv@m<}x`X37LFnfOU${!Pz)wKJda(FJGlnI0EBr)j;HCv*H^g5D4n_x-^>i zSmx(nh6lkrA4#&g-8}r#9G(5ueFBtr-nRWrCRSo|JJ*yWYUy)M-pR6;Z#UzJm7pG5 z_r}V($s=!P{HAZE$2jk?QWhH>X)Y}6dQ-UjcBrk@6e4!(Jb*m3;?3%sB{HM^&srt6 zraVXtXaK(A2NX!K_A8p7q3~qvG>VwF7pCKk^>y8v;9lHv6xZuq*FI@xdD0bkUF8fh zs(wLUaO&m4aFX-5VszQ4nH0NP>qG8HCclxxQg!{}OA0;E01p+0={SnGLT=*{OTwk+ zHqPOqQD`zB!*)4J zAA2#Kp!U|RV4cjfOIqOub5UoDBnwvc6EO*%boz>SgX;R{VT{mciLq~awpr^U;wMl3 zs(LGhTgbJa93@gU`ke0M%w=(>ZKg1J6P;77x;BgKsOWcP#&>CZ#0#hq9 z;CsJXG%X5rd2xKZmyG&;aPnup{d;_+I;XY%83A3PglmWE!mF5_@Ud_FJW!UzBZ3i; zPUEz5$W=-hqfBAm^#~>SUVQ?;P7;5>RlneY*XQ`MgjO^ko^E&7tGNu+el720ZG22Z zXAjy2y*kbKYNFFNh>7W0oM=A4$aAvxgq4{wl-KqLAuMM6YS<{=Yse@Z91pOo-p_rr z_UQK8U{*mW(Lksfmn>;1I?Aj0w^4KQ6m!(i#Z5gP1lJt!+RLoh$i9h{=sZe|`Apv0 zWY#>$7M4A9VH}skbc@V{O+4elb;>c1z0(_U(Al$>EiR?FmqM`$R@l71|DLmZ zvwL!t+FeS zhwuB~_f^JC7PAI%Y9TV8N7r9NOGxN>I1KC-(m)`b*xLE0A`wA&)RAGstV;3L!O*bv zg8Nq)jEJ?2=ynI6Lxf7TEsZD>Vs80OZA-`HF9!D5eqSj%qQd}r+`@<3KHp|A>`dL1 zG1yxL@WiDE9WJ?wb@|5xf@Hz_Czz8$&pmqi2IGkp7E`jUMt;l9wvB0MRWO}P`;z%Z zS1<-jJfi^Wb7s6BE(`E(YPGxALx(#i-p}9)w)z<@llN@SRyOig z8y)L&O4lcG)vWueo_9zG7p0h}84QMUdIb@05so6vvsL-#hFU}7OV z{#YXs?d^b9X#rIt9e9*M#omFj?D1e`QbBDPKcrz~lZe&Fs{$CAmn^xD?e=hIVNLYp zQ8KkO>00^MKsXH{dLMz6-uQvq?2fd>or??)7NM;cW9tl#-1t_AAG00sfB4dC7$T8K z;5W{)F_ZPAc#i=HG{$0G6lMol{#4G5#ce&xrQ8>(vvg^w@Bw1Kgv)in9HttJc<-v8 zgdgy33Id0y6Pl4AHM2W_3mwmy9^f7o5%Tyk|588yk!I+{`0kj*xW1$&ie14KvtFX; zTWQ>kGcPsny4 zUC}egB_gCl{lU7=HECY&{!%IyR$bjf7j4qjyr%Q6=c?KnsG&;L5iotpd2&}mOkqF9 z88reP)qBKTQ9v&b?3@wo`4V*ocKrAv{U)e#`*bL)uWZX+A(+w4A8H(oqT>a@PPz2eul7!T8Q}mVS~kJ(C2aQG$IaCV8R$f^=L{`USPy( z;Oqs7`1M_|+m`A9gZ$AXU9BG8fMbC8iKzKbf?Ro5$V{~Tz3?9)rK~Y34jZ_wPVD?@ zH=cBo4rDy`6KmGzct!juDn)``fbe%Pm+F3)Pg3;PUt}(*B#5-@(*E^byX#|kVxlWI z_=CYZc_L!Mo7e<+Pwj*6;K8WnU!k!<)k`QyqZJbGqSf@Bj^wsT4%Aw6qWQe>99ju=K1n@aAU zC)zaZj0t@tp|RLu0%DOcen`pp^O#4HSPtle}-v08D_x zR%spAa#F^xStV_@`PVrEj zCMd!;1ilbH@r1tGpwcCgi2)=~bs!=_=46;mNPZiyFd`3 z2dw}Q3yGzXh|aos+yOJuuMxlSc8S}_8zszCu-(M5pE8}L8IB@i1xrhUdF8oZMZ=Xn zyeCf`A!?f>%PmYyq*-rAkhq!s-fsubUDH5Nsh1ktFus~X%F8P11WyiYDr(a|y^(Ye zICgiGrBN`9BmCcpxlWAkqR7lJZw~)MJO=4F(^f|weQ;!wymNGd8p}J*)V7Bs4_Clv zlhstPMJA$Gpo+d01!F8cSq*@S#fT+L_xmd#fH8>R@(e+JAV7IY5$5=A+!akmGj-;x z#AIIq0wkih`!NSZU?!(PCD@jS z4tP;|&uHp&y=1x)0>TMyr|hzJc)pDa{bMLcq=3Hv%(DautAHmClt^5#8ZSH`{gdQWj5_!-d+f((e@u*Gi2T5tz?{?0-1`7R2OQl{)n2Ame2!he9Cf#|9`n?OJi z&b!$J$&s8_$a4TD{W+W%1A{?pl2bbdG%+FViXBrCNB9~@DvsRkXB|71CdIN^ac|UP&^&@OwBJaI^x9{IUV-0 z0?I-u((KR`E#aQa1VE!NNHU~Dn4v+0)%tkHK*Q+fV{oyW&>(pZd0KNotC})sU8aGSt_&c*voa{e%6lGZ%9XjF9Pmh0jlNF z3|uf?g}@+b$+Qr=3?v=2X9gxs#t3<%DGAB416m)i9`^8ntipIOk3m>Svwn%eD>(-hdlm0 zR3-Bd*oS@PZ8dlr60}W>aLDu64A>Ung1!TVUEH;CFyfX+d#7*^tVt0Ko2%R10Na2B zeX63iBGCJB=+_Nk%RKyLK<>(lO^r6MFgW zu!g$3e)BlWbq}MPK-QKrfGRq(HyMn6#EOPCK-7!}8w7QHlw|C{3t; zY1?-Rs9DM2D-p<~;>X9^0>Nz9ar2BoK=xxy|43IIZQ@_REEAxwmdb);7k=8!+zLSC zI_5_v+-;`Hl-MDb#fpST=?|3Hd&O3eM?`Rx9fu=2P8%5+QxOAWa!D@AW{!2iuL6;I zqXGeGml(uzhAG+u(u1FIVD)+^=Bugz>`=&0DrWI{wta{8t17G#qR8cj_oThs!iIt7 zVIA2X)}g`AezFmAIBH`$8;AvH^+xh)(P$>y<^THwoRR=qX`jBFqgoR(hI1i<|tEF?kz&Js^Uv&o}q!8qEN%?ypLy29~2up z2f!sl!ty%BYV}H%O@pb|&LI5fagL*UpfZJgs7iCv8PvOaD@v%U77BmIZL7rr(GVR0 z_c8Q3|K;Vc3cZET?)|~BjnCCDUWm6sAsy@q2va1+)SFxqdzy?N?fbx)8YMGuUNrO& z?MOupk0Z0wdLhlv8-QdlUP#HI@ZuW5pys4`sEv!xwiW!hJjCZ)*$9|rV6#DPL@jYL-&g#zsPuyB`K|G-sN1Hj-%5OTel0)b8bO&og%QIoE}TmV}&nDtiML<>vqb=TV3# z)&vNeRbu81`Mdm8ARaKgmsr>gFkv`Lp%~UHPeqoNtO5V18V~6J_N@OvEE<3j{ssO8 zLd3-NP%vuf2naTy-?Vi~fs+Lb(c1}!o?^}fr2!JZ>9uA5LvG5Fd#bA|lKUV%tXhQT zfB_z<1NF3GGMJyuD*%w|_|PO0q4^;R3i;n^3WTfyAi#8Q zTxNVo10Jj;zF6pV8U{fKA@GKb0dK>~sR~u=|6YWJCC@!m25}sjLP_@6Vj&1jTY(m1 z@~!isHUu9lk1|A~0{tGC^PLLlp$EY^pfZCiu_*G?Z+|v4wo=jnQ0ehcX_c zWoRr2zQyo#T>V~-b8^X16d~3c+*h?Dw}tSf>^Q1)J8GhbbzDZz;7kN6nb>P6rtjqH z3Cze}_8F|pLP$BG+|gbH5KGV)>i823EalnxAe2i5f4}_Mb?~+S+Pta>)*<9z6D{iq zI8!Pqc84y*b4D}6!i9Zo4M14Gf+CX81b~cfHelR@8}Vy^vbZ7)p$Rpq08Xa`WN}6| zl_5HHVb10=DO_#U@ANVdDulqewZzY%L-ba{!z%9dq;a$fNC?d!9Omu_htLdz^fh1+ zzhWTl=XZVCHAE36PCH7b$y0jw>VT5WG8p^?9MFuTBdQ2fZaz>aC7#6$8c6_>B|AP& zA_)S?_uMf$VlXh00ja7@3&4r;c?J@~6pP|S+X@RY;;DrJ6gtPbXEI=~?Lo9@*f2jC zIYtbiWTfKVVd`zQvjw0ChKEO^FklEj&jh~Zb8N;s3uIEJl)nHmG$RCtaI>6;{D zPiFu;I9{0mO)$xTQ5FFlg2M|%!Gy#%wq9%<>A`OP^vE(|ReZV)pL&*Vl~Kkf(ppZa z-0Z_Ra@G+Sr-%7M} zGNJ2PJVA@V6oGxABrlJ0<2_ZnMkFd?LFegOZylqxov&-w3b%%>UPr`^T#z}42(zii z(FTzX4Fta1xSHkeBW>X#6zlJgawX>L;RlM<5|y?NOO>Sr)(c{WM1%k1NdJBP7GxAd z|253tb)Sz?nTdX6mYIw}&kV^X0WMK+jVKT~*BcF(=s~%Vi{TW>#?Ii-D^BP|bD(Dg zO64r^1h%OdF5oq&ybn5|>sK}`j#l!=Oc|lW@rrIBU@tlydx&J~UJ+aCJMYJf_6R(z zEqUs%nuF7O1W)!DRo^}IPsJuE3EC%o#_4*55B=MpP~X4ISf-Go+hh)5x=tOAI7eRzq+81QXs-M#VAS@BBomP-J{k_3xbK5K^6MX#hT{YEVkmtSk4H7) zK&!dJsIx~G^-n7kL?fQOik6?=!;_;>*CCl;sYuze-?RflNlCHHgPzTsZNGY8Mnu9H znX}g|nV2~Q>?+gG>2Ee9%FYJP^k7z9k0UYT8H`CBhM-#dd135CNB#T{u_w|DFakn} zfGkECT-TUxsr=BWF%r8>@lM;=sGj44mwD-b5b|kwSqgx?@!={a<%xWs)gw8DN?HVd zIy`b)+>Xi&9H;&BK^A1XL*LUAyMfz;KeQ!8)~Kqsu7t}qqHsVfGOWSkEPQXXfXwv@GpqH2T^~WRUSK35^&bPv%K=j3-BDld zkdh}9Im`sI1+qQwCxZXQF0H5k_w(`4OU|8!yv_T+nb3-1LhHf>andc~-YUo0?Fi@Cwi*fc?d z_fvjX!opJxp1{{{Lh7#Be(&;F^XC)53w?!7Nl659V~wz)Bd&CX$yunYVlwg?o@%w% z_X}^c+2yy+{i$?n7f!u+`bBq3+VQ$)*eI`4kk^f5g?DIs%roDp^#6a>IM9J{Ul79! zPsJa8p4FxT;A3xPA{oD^0|BHyOjugjhrq3_LxNC&#*(!O(hKi%(~|UhOvvx><;Zb> zl^CmETiFtrN!Ifw#!Sro^FWH_Sa8uDr5s)?O(D`q(f}|ta;t{|vl#>%iTG<%5=QOP zy}*)ONH#nL%u(^wp(XSjd zT}HylaT@p`!TY62b0iOtIKn@hw05QvIS(4i(x1e> ze)_nn@LPG)6kwW0`Oo|)KEtj#L?wEn(5#VGVz-s>RSXTOH`l(L;X&#>jASnc0Z`TsXayhGTzB*9|8 z&=Jp3<;xd_(@1Ik?Jo7wz$_J=_-KEZFQbR*`z6uWT+{b0gW&8O54kY+FHh*<4^6HQ z;fhP%>aS)qA^EAE7d)i~G1wC@GH{jz9w$&)8L+Mv=jc@)yGbx)mP892aboAI8~8bX z8!b#k5BTj{yDY*~)ybG%-$46Q_c1AUpFn`X)L!#?x-T}A1q&z4IEEL{Q%QXW!xl5g8AefHG*RyJGeSn;0h`Ao)on-^X<1ouMpg_K+C7sg29yL2dm=clX>#6i0E0d|7z^)*v+WNj4b^`96PNP=_8% zx)XMHm9l}=RW-10i0f!El*2yL?KSqp-stD0jcZ2RBAw3;7-Z5v;v*9$6dZ-nmtM2VG+%=-SG z%UV_T5rwnJC@)aYCAokUMjM=k3xJ*w+8)zL*7(iO)*+6CyCR_6M%y>ncdW@psymY^u!kP z|B#1U3=zbEd6dP{25lGArWtA~6ZtQFLm#%@ViWa&d(A=X6n}ZSLU|ag+VdI3B+{iq z;j2weQUvy0ur*iyM`^(is5RcD#+}^hy8&O z{l!zzNB*)k$?|<1JZ2MH)IQt5Z#9z`Rxwa`BvZ)c#${3ccNXsrjUcVF6~NQ0nkRE zfaWuA?wA5+8+-rz#?|u0iGw_9LdZ+I^cUb^Y?lEqW+zaZVfi?mOuWDJ?B>tzg~$>v z@p$BTN?U?l0`sqV@eiBkovX6d@vb!#!$-rg&mRO(UV`?Y2mjdjM$sW=;zWh+cMhGG zef@h`umOhJ>95Q1wHiM^z^`_!R3A3x{-7bh{q^&uw>*d@M5WMVeCCcle}8uaj@nZQ zB2IVu?NzI8tIaM;WX41pA$EKdz_MX3@AD&$1Pum6S^thTq!dD&Q+O81Pz3_K%lP5^t_$7-l-i4CaoO>M-GF z{gm)R+p+Gc3eC^)e1rf1PKE3P2hoM6X_ITdieF}d#W0${!eO{^Dl*%AkzTxaxAX>p4F7<^qmeaFQZfTx7ggW6B>pfi6f8J7!}l_dJx zY^p-~?pag~=_=8{CxIr~MxCSJba%*f_BmtFTnp3WqQC9N5JEskG>N;i<$b zNNz<>cxjmFz*9|hm5(z@t{Hsf8Io7=?K0QdH*R-tIWk6~6bsV=ErU8VWhL6Ya8fVn z|3W~J-Wq7%#Sxd|`JBM=S;F}-&@{m}`8`8sWC?zA1R!7k&BJ2nYXRCP72^7rA0*~| zRP~2w9pf%a%cVQ{2mP6oO8?&%4`zv8Dn(=&9OMW2!EC;$3#9O=gHa^=g)W%j<@&2y zsIe+k8kAKf%Wn_xV}E+(DkP!cwkPKq=a>pIi8s0n#OU=bEQ_7CjJv*hQ0_N-x^gwW zQj9h}R{=DogKwKM!IJT=*|2X#t}G*Z7^3*w*X!{p<{C+5XxGaJ{=imm*<@=>n#OwA zrI{{up{&p3TtZ3sUqv6 zQV5%fX(MP1^!l0^^&5jkY3QR4^30f+>;NP?oJof4@lhs9d7G&NB@KbPiq(RLWOc90 zLzs*2Ya}bxOJZvi4!I+}rahj`T#<^Q_Z!scxeIuCbl$pLZTw)5YF4CI97>^w$Jp7J z^VGvzZMDaPB+jk4)1hCACNT7}pPSI)X>QB08qXyq+Fdc1K+{-VzS-vHQOp1fPE=E| zQ2}qvP%FpZ=rwC|@*k%GB0$O+yr#>cWZK-sClz;9#W{G1S5ukd-_Jh+=g+rhsonF~ z+!vi495lAcPPEyiQed&oM8xU;UFH#kDmWm_^|-|HJh5Ag<20 zFy63>YEGacjdS#P){-?ok*th75-mMh7$AipBxa4pA>&bRB?WExO<0qEI#j@hn-88V z0bd`K!J&hedVKoni`Oe-&q+c^#s?yqO(W5a_b!#rg&iC5+YUbV;q>VL0+#<+Bu4B1 z$07lR|FK91ILXoP z=l+Q^Y4G!YtE!@M{);h&oTuYK1FLU2bR!-f?!VLC&HY8V%%Sc(bhAgJ0PVV3qlJ@q z>;maOmapekA{KIF# zU!)Ao^|guEBwQ4=nyRt!SHwg8HmhNAuH%8TG z?f1HWMuu7h!%N@2qIr%Bm^{59g;>aGS~q*##Uz1M0o2b$#={$CC7pPd@K*x;wyZ7O zB{>=$u(|^&CfM3mxs@IS6qJS&GydfoiW}URh+U+pA{7;k*n+z9!DakV-{pgnLCyX$v%`WzQ57mx^F1Oj1 zwjHs*xMrT!cYX!EYhlF>DQi+S_e6f^y}3lnXOw+aIHHMCgP69_1J!XZNhY%R78%0* zXZTKcUe`@j3+%mKr^gkIL03KR$<*>rn>?NgJT+Lp{)pExpk-L81^3l$_OAdX>CDC< zi(GiuT60E6xW2kVnf4Eg)!mfEf>UUv-qgG&aqzr=;dzTnT~40g?`O*@xM+no9GLt~b4aF5RJ!xEX*#t+F=-**^=g+tpw-pjKuh39ax(@f_<67qD?D zucqpc=oLglFLrCoCVY>sZ%Fko4zG^M=Nj=i8zdO9$zed% zRsvEYe!x7J#ZSY0&QH9uGQ=)?$kBuLkNW%Um3#7oK+Erm!)sapBA>q~w~1x7s&ClY zP_g%l4q@x<$k%-G22SQW_VOL!#~BH^4N62h^lFK2tUSaNgp0@>yWD z3_v8lT6%jXFZh6T>RH@FpG3Ebn+pKFzRQRH)y)0T!^i&dC8IgZA~}jm6&|wS{BiLp zjIlJ$@ZSyO+_2A>6Q_#!6N#2r?%TIn*KB!yVd>wUOb>mkel4tFxhwyQPzS(tr1N1A zm#6rj&oryQ{v0i^THQhar_px+fc(YckxUYF0Np&_8|0I6cKCr^>uFH0ZGL_W)801d zad*dSLGIKVe(id@T3XdSo0sz(zs7w9b}8nIjtIjO==k!a1@(TI#3k7nK9%(W`!5|c4Lxce)Bse&p`u`f0wL`n}Xi?z(3brLOC1?1A?@q<7*|E zV^!u60^J|jh&6G(Gp+u$3iiJE{Zaf2l+&!wDCLV4!2;Jox8-=4+H;vXR#BFrY^}Pg zG6vfGm_fP(el{<&-Wky}_zdc2JeH1*NCIS-Y)4Dnbi9VxKXJX6r*WgFr70IhIed>O zxdL6k7c=>Dzr-H#8MOLOFm;;0ofOFJDHI0ee=K|BcU$BAYMshSoB1s z$MKUQ=XxK(Gb^=ZA`?h$pU!hjd9kB+fg>NZ#l9S(=3Vo`R7mLU;g+P3NtuJQIMEC zekt%nn?y6-x@Kvw;oyTq(3%?Z>7VJ>lBuA}HP)gx^k!A9W+uy;AS&}Pabrm*d4N8< z&)k#xf$Wn}L64d<&i2;oKaX?C8tp!w79s?&;iyl^(gNd&6q=rl$`oHo?)F|>H$S#o z2LYan6Uj75i|N^l;oP-{J(NTdq{7qKySkLxzFBR^T)TJKtN*}z4FKt3*=Oq|hog{b zvp6BY-*1VANn%CxWE<5&AcY4Wso!4iKBo&#{XluJo|UTX7TVpcpqO%MIn;cvTp^#7 zeWmc~PE+QW&wrBb1#d=NzGo*O7#tC3F4D%B+Y(js&+SC<@-$acM|IhnrhL6T5x6nb z_WF!_#(EW-@nKy{bt^m3Z!*@LyH(K*CtP}Fq}jjyc~@&#nzW>`bL^w@m>o&fu|j4m z0_SWdeMqChOXu~JskY&^J|y%Zn(8mfq6j%H%rf7 zgDAoO2VRrZ@b&N-pXkG#p#0H8>BRfv4>4NC;#eO!7#)2bm)u@rwv_?RbW zCMi*H;jDaU7Yo@TruslM&;1f7Jd;7IX6F2OB&4~0Tj=`7XT78O3OY3-9aSnH))Zxc z)QRn44Q}cSVl7IWLoXiNCqi^`3)&Cm>Do;)pY= z>~Ztl3AKKIetc zU&2Oj&oLj(FX?&n$3xKc1SPM81n`BgGsqF84PvdweyKpqB_3KVFmp%?1Hkq*?`sGp zni|+m|H$(lpLKg;7KUg60J)6jd-R6XaPT2SE-YPf$#q=!pz;270GAQYwln0Bg9q(d z$0*O(-(uX&jNL`6@kY|Eh|pyjxv9$KHzpp~6>@dc-=G{UDchDHU)!+~0nz@tF6SG(!q#%r*jGJAG(u zgr%n0yD>F(k_Qq$4&C?r?%c7>HN^eCe@o&@Q%4p;V4$_Bb1r#K*8Oxq(IMw+63S6z zCMsE*g}p#6HBqMtS~@bO1Dufxt)-nImuR3WoJUWwv~I=?yfMMsY-0-N>C zI9^UxraEwgq0dUZ=WQlqJ%R?R0ImU{g$@o)+VM z(Rw+A2mvRFP`lZ`cGm;N3*5f#8dp7e$fl}B{-v;uBz?uc9_e8G_FbwB7ffz)2Rrym z%hXfIe&7ErU(#KrU3rMlKF`Ihbm;H{ZuJ1A3a_#r@K?G`mc5N>nZ?OXwJ;PMTAQYH zTv&DVTt?u7y{Q%R+El6;>2+AGXo@fZbf8e1Rqnbq@4A)iv}TwQX^XEalUsliS}eAH zlb*Xo-_rERg!8)k0}H%{{_de+9#0$;^XSmHQ=$GkX^P{#Lwf>AR0el$|Fh#2dG2{< zel8QH4v;A?Ac6PLUu^xvFmQ_nxzG~&5k8~PhYcENP=BVXBfq`Q>h5DWhU zbf%jMfFu{&r^mo%kq^80v2yVLk@*=$<|ZOI39sxDP+w374Ub>gWbasXU20dD7`t?! zFT{*KniCV_8MKpYYWd>tCU4t7+Q?ph`HFDj{E?v}o-@2??Ht0QA0Z1^pE{E*nlqD7 z+y|qjvGrzI3qUpJzNtwWd}3pYcJaL$0I5BAO&Xk3_FJ-o1ksm@`qYgm02|&{_vX&| zAd$Ga75X>q!%&k__T_@)6+&F$*=K`gFMTtc)KpT_=$}$|`R|!D%zW!SZ6y8h!CWhK z6`b(ui;aYbDK~%mzLZNrZR#2@^u7Q45L0JiCN0{Bm*Tf{=E+9ckY4|j+Sdf3nvFfx zA^V&2*0u;O`wl-ZobmH2u>#HRAJ&4kyq4(BOtIZBF2An)?V%L{@bCjfXS*;WGn&L}n=m%bxxN`D;)?+*QNns*wq?$c6jesqyK`5uU(~9vAbfw$D2qQr(5!8m+8#s z^hzdxNh~YLn~4OW*akgsKjcCczqQEv1z+a=j<;2r;)S_vW)Qx=_%$t*WPS7OYxt7a zt{~fIn@cB(;3?ClKRYtFQH9FI^l4u)ycCVWe@Q2l&xmg5&HJ; zxR7r0GgmWyrNn7Xyt6Lko_bl8x!doPrF(p1iS$>XM%H3HkL_oo1>l zv~DIP>o#MED&a|vxu5La9Yk^5-mQ~0Pt~N zm(UUlIot$dW1}hyGW~)bdyg;_iy&C0hX~V&<@60VONcp#@y{o+b15U~PP>33BC<;IoJm3;=+F zu{?~JAgI6AJ*M9hLa}Zg#$Sgx*p5k8JB?Py2IwxeW+&a^|Eh)di`P4v0mQF}&j~h4 zsb8K+f_qvAZ*GAoQwRZJ*F|p7FEYBItl3w#*vl7^|f ztS)QOKCgPX4qafxll!{Cm(N~hNQSKBl6CiSx)1_OWCLm)8Ubcp_P;_uYI+;=!g< zy8RUD>7B%=S9nImM(ZthF@St8EGSl+ej0!D)aKSzZreM6K|=k-Ffxz6N$h)eW0!UD zKe>$FhF_#&!me9nNXZ7@lFV0j^Xo*CLq8c;9^MVVY>J>M?B>t-kz_DUdygOY+*b6q zGSJjE+l+!BHXjZ!Ga*G`-Nkik^A1U!rJT4_#1feqnqH>91Q055W4y)e-(Ltve4Ei* z10)hL+rBbgzRZ~x{^sZnIecN&5qmI`Ksr)oF?FE z7g6Yx&(w&;^)Rv!6WakCU5J%G9l(7tFh!W4Kqe7cX80j3Y7o14#>Ui&jxxbGH_|{J zx6zWmIE$3Y+@N;!vD>_L*Kzd^UyJv-RXWDTa*#K#=31)c8cD1~+zur+Wfmvjehb%F z`}S~i-Z&Y6?N6Utx2Mo`v#Aa!Sbc|HoYLmKMbYtV?mBvsts(zJmgDHb)Xbzm87|HK zz%Oo{-lRV8DXH$h2>K_{b^vces;N#P0oBDt4=$ zG!>pXtC4Iipt^~)mzyVNKs$+LR8WKPBoRkvs_4M>BljRClZjrw z@DbdccsP>gu^VG+yUv>VMrI|bWR@!%`tiRt6{Tpzc<6S3I3@a_YAz>>R9NTdm&{>>ZmgvD@+g&CANLxyo} zpYE}<}^#bpb5=ZiV1L;nxscep?9@pU;Yu}%+dcD$LZI*#8%@M}A(u6h! zkK1F|zTD72fKnD(D*Hu>#_*bWQFXgC!U(|a`?v((n_Q;!c*>);HWz!XUQ zg17~8Lyh}oxcp>m_se`=W>fk#zIn=at-YT6017Uc43>RsEJy2^e}7t<8=i*4k`b(T zVM<-`h_PYLEsFeE)1*Ep>aAR~isVWD%y-#Y2b;nx`wzyFhIqNxuX-AGB|{>4zR|P- zRdTc}uHk3^!4?3()9z(M+&%rn27zDcyEITzv?BfDy6Y|2@9M{gzqa+m;m1U}Kbulw z*=*?QFf-E7^%rRz@L`Z(H1XBX%{0jXhU>otzirp!ZBNe@YvJr!X* z{hbj_>Kj(H!}og!AMYd$AbqQFnJlw^}y^1W?Ju;FY10QCCk#MMwSspfDQ0C)5x%grK-bC8sWR4Q9tFtC& zb;9ag^QoNvr}Po%+qjfB=eFn7&szH1QMOa35b12-7otm3D0uWB=MYX^#Na~Hcp$iG z?2sxYgn$3VQM8+L`zA%#6r5P?;pTND66*DqWM7U?FW0Isl&8iq`4|2;4F=uAk_&Ku%}{Ja|E3MOEMc^cYiaEmaMB=?T68K06c7Qlq`QEF)tX zc&B_XTqfHgrYK}vrjV*Ewzeh&mKP@M9k6@X0jp81LQ z{2sdUUSEWF8Z~T>Jb76@6nIAsHqKf~v?q3roaH30yW5hFt^Bahe?k3FZ^OFsi6{5E z3efcak(Pi>99`$vI!))2ez)9y|4uXj^nw0wBY!UI>D+93eWmZG7qico`Clhr;<N$BNxW z30!(^Q5iMjTI2ZXai@jw=EVD+aoIjXN;e{N$(HXViVpgS2GvHlf{GG*17m8d(DpEo z#EO9!MbBqLve_0%_8sycd72?(R4k~#GR~f1l`CVX6E0oP8PS^-(Q~sebU1x0$5|tF zq^kj!7D`cs>s2qhcn!DVWly;h1wE}*-38dy>y#UqvW>Tk-*&q$*bOG2OW3Z|87DuP zeIKWuAmz|h+^Wy1Rr89@svP7tQUpikAAv|cV&DU{K*^tFj2eZfGmsZ|$cKx7Ggdli>FRbia8gA$Gr&v{`dYz*eoL~-IJMwCy zK}K{8@=~WGQtF3`u1j|JdpqAhUR|EaCdC942H0s8{*zDw-ow7Vq@b-poynZMAJNz%&F?xHIvXlmDBxpIijw{hX2= zeu^0q=RXQ@@-?Tz_BCMQD1|L{JdLew{>5s$V}9W=&rkvZ$(*mEftOu2>laQ~Y^{@q z+*3ebHT#&Q@*ivk&8e{d0Et$$sFZqQauVek3SJF2Y=-O19_0duI4rGSI2B3GVVAL4 zV{r{T^2+7C_%6ue1U9k(`>~-k@l=pumSv{qD95OLhEI{peAip^H^*Pg&1#-E58-O9 zrx^V?=4mNi$oC%@T~lQ^5!uoH+-sk=+PN10RCJ26Up`8;n3Be|BIk2JaVG&o)8q)C zb8PQy-o%s}=Fs*}pEx&l^5Eke;m1-T&o{s_T?jpK3j#@0IzFp zM~Z=;#>GF?1&~kA3sG$IW7GU@TDPB)yxkJs`WrMI@hm zakjuL7As`pX(Y?nY%a<3q@cu9`*%Q*=}(EdfIm+UbEQV7-&j2>*f-~kCX6!B-;n;l zID4i+#o(XWb+>8Dp)PwZ1jyGr#wJ>CPoKnA~Be+!diZi;4or zYZq!IOdnM(aXF315*<0GwpU*|*%^X$f>vvV*cymXPGW&xbJf^#3E)*eKqJ3$Ri?aQ zPH?(jPYGyqbBn3_OLocr#z zfF(5B53&Bp2T`h=rJQT>;%`@aLp4Von6%Zg)62h?M4TMg8F?`e;eGpi_ha&&INUGs z4c-D`Kl5#$F8FmYo#tBNX;{%uhi2J7UuQA6NjdnSbTF50$vu00OTd{;>$OGFIw({` zM2K=Z$<}G5gecCLpV^MHIhXzej)?$k&7{( zm|s5EocE<>P9lo+#3}#mz?mGv%`IA}ZE}qk5CFg|#ft`?V_O{n8B3iS^&k-eR)i)(Zc!S`8UKO z+c)zpXRbY+^b3|9-TZmB_`Zygot4GN{dB0wWHO|VFk1L(iFKs82mkl9Nfjpw5UZzO z!g?*U)*AKA$SO1m*zG6g?0f zP-TsG5`H%EnCWu`j^`1iBB#O{9R*yA5h4t%-xqGy&9zx~-sZ~h=(To8bgJexorqNKh*M%lz-gSGi~y_#rW5yUf-az^A~>UeUa1sp>L|U zeABW3{K;!D_?3;zH#^bpP?d|y$juNU-v$?c2QD*ciWY5WCCGz|%U1@Df57FkN1e2=a>aa(>x7L(0aLxTAc=O8-69dxt2N8924vlfH3aC>q( zgH%$NG_~mikYjUIZR|k?AUWlhW=_GT*Ub-^6nqf$Tfea)O#V!eWCUiM?J|O_5==Y2CU2sKcKgD{EtGL zT;QYkbft>m8j;fZfhZA9OdQ6Na)N(k)LMBvw=g9#8#X}_#83C6zglfNTBN5HR_1o< zw~~w=28Tq)Xl^Zek8Z3;WCq0@v@&(HJx^VyVFj*3tTyc z4(1pU;ADi+)4I(kgHM?{r5rGNsVWY05+{abwPp76hbZzd`#fBR0ztHEgg0tStq5Jr;mnYohiGMGn ziz|?m6SapA=tyqgJ^QtgsCSUJ@#gl8qWkD8C<^9cRvQ@7^E9-@RXsq4*r!sp7{EY&)G%uQrvgJ6+`8xzR?e^HI5fP<c1tCGVG5mlMs4N~=<^57%o|*0*Fp=fe5q4Wt=ta1BC2;y zlns*LZ`H00G)!QJJB>To!X;!qk6~Ph*;gW@IhVNg@1#i0tI;gj+1r=n_6~qB;)uSo zDd=u#ZtW|z`^TNEbV-jQQ~e|t``{urz1NA$*doGSvE??^FhaMAf9Q(#Ts$)xtlNL- zHADmK3#s{81g`UYt57lF?`{kC4#mkrhAMWLtVW6ho9pgr!{{;@@6ou&k;oRVfY{z) z=C3mv>xJOqGBWBtm$!o2@b9DR_dhuJNm6GpQt?Y3<-3q64SGKUQ0bp0CTJYuCG(a@ z6K63Yb?CGT8|>!|rmtYs*f>y!ztpqy$dTA9^}R67bbCd@yYdL);|tf?nenlz>so!p(&ln5qc4DyPk(Xe|+_$id^u0y&NACu* znw%p<<}=TA-8L0gsX#|-UZ;2lYTc zFpCqEKBWI+X#+kN`KI+x79u&ffq~+PYB=MImjRcb;P*-4UDfcXc^>+;zLHbgO(zqx z4`6_YcOjfa(M#bSJ=Eu8^r8ZioCVhYO@raGB|jW5Kt50-j=*Iez9T1}C#p(5K=3q6 zczZIon@#CXOju&U%ysq)B!c^Xj14;+ja&Yusv0Vs*bq%+%lA#CrPN+KBJ;gQBpn+v zIBTsRyYG)s454k8Z(J#5aJi-1o)9WgUEa#ZaN)6i{sT^xI)nZN$p@P0jS~3jc-0Ef zlFcdpr@tA*l)TcshT?iUs&4My=M@)gcG8oqXCc_21ULlvh{@Z;Ro=u)Ok6xYI*a?# zUP_Ld%%u9lfG%0(Y@&!ziEh^C;a40a$AdRO= zrj3fe>REFMI^-$_2cEHHmklnr=zCcVb$yv%)Dc3Mx%9KdTb*oux4@r_+OF!b>C-he zhHOmPD1LH14jO)5BNw3H=JReZmrwo$B@&sihYgy0H1)mg#iP?YN2qtFsd-U2;WPQ4 zdAfyCbF$iFf|&A+Sor`lxq^A<82edJW&S4zlOu3F-h(*qd09hAl`=7LVM*fvRSz7E zuQ3?@%LqhSioymA#_bLPQk9QGAhZ1(n$i5nI(3wENjv}D@;6>*nK9_9w!`dk;eE%% zRq`=EIF5B{a?Ideb!Z-6KIi>z-lUo_s>&ztvqi?H{-Pyyi#Gf`Y~Bp+M}bn`IB{|x z$JE)?*g<{Y6WtW$2P*B9lhzn^qhI~7 zLPKfo1m|^miLGZVvDbGmrR?>W_pM5K$)FJ=5RMl%CPGTnB=Tg$Sv3iN zX+&@vfgymi+|$~kw1Z}FJU2+=UJXF%$8f<{Q(1L9Uv~H}E2WR;FzrT5cb^5^c+c3n z2l=+J2T=D*R~J11`k87Zzc%$2Dc8!c`MnHOEp+p}%4xYq7&6D8`kYM40;%_$%K?_r%<_w zap#}DQYsNDHZ>}p3?GQSLb2(SGLyQ|XaGAL7#IkoCdRZ^n}ZJ7&VTz*r2O+*VY-aw z$(ps(EOHIb=$j0Z%rgFxz_?t6XeLk*v~eCNwl6;YPV>Fv1+letDW~U1BeuTzj3lpW zY4iBY_Zt#LcT|K)0t@a&pXM54?ntIV${4aRcf8=QjmlS-4PVDZ6s&9(|Ke(X_w2NT z6eypd0E2@X+hA%s>aHY`gr|C}FeGpKks?J@*$p4Br0{Uug&|2=*BB$dAcaz!1ZqC} zq_()BYkm>9*<_^j*LU{&<0XIRsTEOv^6aAgXzJ$rZKZ&A{J!wtLI%1W0xto2c74Qt z`%t`CDT=s~^CNEeB<@YbNm=9`ftWdI<;N!zmm9&xOn^6pMt815tdIAm$`ePUv-;3t zmTHb@IQFLkLF@REv*d$_d43^#3X7m*)|_gR5fw*Ns*7a!`iYp-DpSJd&%_(vOs0RaQiB1BeZ`tF7wPPU@Oe5Up5sb zu`T@m2=d5JoI^^S`$|l+DNeslaUkQ8x8}+v$5`Z z>?v_kM;cg_cZ63kgF+3R=o1F3fL!=#tu&In!bW&UrB$~l6JvY0jiR%LXHfxL>6{R} z0N8f|vi37b;U)RRoByc_XB&W*N72Gx-qsX$VElXBmZa9bcc3d5=*=jKOA}WHX_jCr zxEBMtNR?xMQp`pfA4&8bv_eXVUD@5RDxGB|_^WlfU-01&+R(*w%fA=?GP)YcY*~NQ zmG}W#Xy)fS*k5LcSWgL@TY1X1GlrfyqRAlGwf1KYK#F}a+0gzk$@G0t zao6S*^bajTL0t*LR@z#|K;D<_WY;EeDmvo5c`yqg!oBKgNs zVeB5$LqnR|>Zgpbow;1dWsEM#%UJT|Vi9hd+3n-av#DHEQ6xB!a2Yj(OMsQjxw4z{ z6540eD^D&Jw~5jGrY3TKl`sGbM&dDadjXbz!ju8JFvTc3fU1V|0zN5A@y=(6DX4)9 z{md=VaTwBhs=3ZJ&J9SwXdoUnoI74|!(;6jfdRx&l}Am~UWt+xcdta5Tedv@gEMb8 zs%^3IS<;Fmd$?4QrTd0x(YBFd--hC{b%No>PZh%|;orYeWp+J}^h^`Iu-M2hm(5%k zv&yR>*2-aFy7M+Yff+#UtW*2&xCEgA==1hRx`R?w0vh5&7s_WRt}8Aw?pbAw-Q;}7enYC*yp&ajX7ik337q* zISdq&YH&U)go)wf=|_r{{QH(C1SBHzZ%o)KXXZq|=tvg)-$#Zopq zOwd5hQT6(}KQ?|&7@J;FzOof+L@^Q}PME)r-DimEddXe*oY1<$ZB>Tf&}3$YBm-s7 zt1Lu3h=3<0;ZG3==;<0`~q6;t=7xMuXnt#&cAv9afyQA>jLM;!0IbSWe9N zVd;6RL->7&Bw+XA6zmR1s_pwh-T)Fmk-h}@577$!iTF>^ip)RJ%1yd~9!GO@p3R2B z%*p!9^FK>ZeUF>`_eDv0X$~z;FV>NTi^fy!Z^5 zpd_(&F=GZ0kbQ&kaPEh`Aib{j4TeP4U`@X zIPuEqE?nf5a7g2>FgMpn8XV&pwUH{U1~IBpgB+Z}@s28YNc&Xk+-iB+IPtwPQ@+rF ze%nvAZWR{Q+zsKMS~9=WoN9P=xfJQI;ZkZLgQW{3fy3(MX*uz*fS+;%awZI}SeVA? zA|lM#v8T6ry#5Y%(Elv#gF}zuTB@pywqESlUl7)g4d=fcZj$wWW(O=8Msmv%`mN(E z72)weT90{)F&T|sCO3q)5jB(jyZGmU{JphXXfMkqhWPfF*$n@^6cRXy8O@Dgw4iYf z>@yelM=vBz3qX${&!_XUF|lrx);8;!Wo3^`CW}Z0#7Av+7>kguys(_X*TWSq6}kb;s$6B}=*|Gl{M$TSk<8IAR1 zE96cq%hP~*XSDBIj_*-b1-ggT8|f4mmNwjIMiPZZ#1L#`g3qJ;0Y?MyDoQ#^b|0~ww1!658#*1cdV2kB$-J=tgQzo4-K{keUV+<4~0Spvp2U~S%10(UPQB~2>&HCK7LgyZXG zX=muW-HvZPWFXs8vZpd#a0P-DeGr2ob7mbYlMAYt$)v3uT_|7sqV_Xf$W^t#3)EVas~V*rN93 zufB`GI}Bx7`kn6WNz}fQ-o>8mFJ!@z|MpP^`!C9-Q9shm9STIbvO{{<_mPu;B}Ny~ zj=mCo(#DL7Lxv^Y-lKjSA(}pH9icE8nW|`r#_`6+8n;MPGI~P=ZCUn}Z4TrJUftqq zrFX=b861ryHr~8MB4z~KHtR}C{F&+RCWw*nbzPIpcMxD`KzB&|T;so@`VYJO8=3#c zE+wD;7uY3OWCc&hE=_Q{I?vQ|P~xO(9(&;;tlXalK?(JJ2vtLRr7>wn%{o3TFe<~r zY5A=CPkPm6zMbF4gep=V7N%L>U+qwADINhEh6W30@wNjRt{*{fO99?=)y&c}?;ZXb z%ebzu1TWA63O-43o{p4g#Bwu1bxx93pH4zCv-DU}uB=+w(f&&xRvmdbX+lf3x7>t9 zKHRyp4)xN25E9rK;Iqh zG-m!vwG4)wL3EPqWFLT>q>f*&o0{QGa9O|gcVU;|0IkVsqsrr#s)ro5wSKcLQvzuckyJkx>cRPF`)S`&B!6ye-g^v6#L+VVf689t3fuie!xIn5*42iM7z_V7pdpIu}@4{_R=Y$XIiyn z$|tJ|0>}0NgFcEpZb461LuU&2elcI#=h=qpqBE(_~vaOIrH0g!{z_>uMB z4B)?x{R=ZE(@aGGpGL<|$?;rl02TWOt?l>&&12a@(9AstWPsrqBa;$NRH+GO>2!puaWu>K(LRZqa5uR2K;)`hjz-6`v_ zF@7pf@3DVh)`N@Z_|{620a5*!eGKM?{+vk*Ci_Jx;IQ)-LOX(;g*AV@VV)Nj0sWcv z3DC&sbY?{?%l8+#9S^3m8PV>j^p*vR`bNy2iDNu1dUA_OCAKc%@f#=BAYQ%dKfhl) zgCY)zCT97+x9*^1=W+qRRE|LzJx| zIpvgQIi|my7|@o!Grb_4Jlz&314poOlaL9vxq9+1=q=wT-l%qD+dSKthlEo%|YeDUwP+w-DJ0e@P%*Vs-w2mnF5?y zpQ1fvu^-nk3!28KgBnMK#KrI-6nOB` zad;;b&LeS=gsQJQY@eH5gJx^m#=KB??`Aj!H1VrstazX|Y)%uWc+Y01?U0RO?pM6zXP6XOXCvI7;p5;9;#PRGFvOG+Ft5LSvMV|BR-aOs{o|Hcrfg#i$9{xUI~K$G^bQ|CC55Sm0gFzKQr8vm=d|MaKV8=9+_hMM5W|Emd1jK5u+OxtFjgSQPZM6wjOt zxi6WH{k&Ys#xBfS;^?cQ)M(p#HrMpnmjvYR=9*WWK7s-CzMjW*7oV64io3kFkZ?Ix zvkt~pO1Z{Kp-XdwK7zwKf$=Rd&LysK0Db2-;*y`ru3N%xL)A%YZariHJ;|nQ@QoBM zqcb*hCB0I5NYLPLZ7&l@W2EDcU3?lk`PK!Y6u!_YurJqf_@Ev~|HL+&6{hlQz8^R4 zYKlj2GU{dg3V(#(iDY_uq+jy+CjXc)^j60mAEiGqx)NC#q}_FYpNcy;773>1pFjT* zD&R~su)97sD;DDMS@#XZMd?KcixbI(l$&*F2_A~DmeFOZb>GvA>prdmFZ9`x41o!1|G#JOPA!Njp#mn*yvFy8Y5^NnYuu#6exY(n zLi!~F&JWC;MWX|^ByQ<~?ni2EQQdo+i{{y4bFJ16$|ZvaN5XNShh&X4vhuAHn@}#c zbr*X0-SdrT#0V^r-w>AIa5P9E2vTvM?lSl>1KJ4=^LBu9eR2!)0!*SDYiCxxx-7mI zJwrsk?f78V7x(4S+55+?I$0ksR6x+K>BA}>ZqS#zGP&Tot8+iAT39LW8-YrKh-^{H zO;$#A-NlSllghrKQg86RMBsqiyEIV9V&fPGR(2}GYEKuCjP0j`-F3I?~MQ%^qky#CFQjm zudvHBpef%#Jk=1gLSpL5RhU0QkBx}iX_D8k6}K3 zwGA$KViHtMH*&L@xDRT|?PGk!tGh6#+yN;`-8giSN@b|ENo6Sdy|oou!SGHhA)=I| z;ZDuCVc+ynQ>=Qox~=yzBlL5<{yzBlNtVq?!%=&E>%bI`2>GQ^uP5o`r<4-+K<}d` ziYvtw&_ql^g=p9awtYiwt&QK2A|Izc@!2^uG~bdt4kU^mxV&%77Nu&L{KxK^q`%=? zrR$tQJO18wP&_QJ_^{@xm2xQuBo^9v|J;=~WFA&;sI;yu0>BIG=0VyJ55z-rNz!uuGny*}=(w+7V1=zIUP4gf)0FJ^SLJx_%gv+`>|bhM zf;MddUV=F3^hKIvL`ldgrQ}BHnP+|YaJ4e@!$OljF1a$In4@R5X4W^%_wu7e4~M>z zs4bBkaPl=mS(5V6X^beoN%}bQIJ%g$y<=r)J!K?hQ5#R&XXZkw5B+`g2E6wtY#&h> z$eWPUB=e#Zj^``Hm~s5FzVzkfxXp%HDl@5vm>ilf3-k-9lL4C6Es>NJya|`5T3EKh z;PV@VsB}M7qYp7GWBlv+2!g_6V7VmKC-=pQFlgNAN|+C0{Wm=;B+%Hl9*pzI+`E6E zdq<>wUg?q#R5h#5-JRj-fam7z{Lzo8AsbWw)(Ujjkk|BQ;6DM3#6JK-`R5wa9A9m-Y;*)~n{W$P`a8K0^|HQuJKdPCf;rn64m%WHhb@Hh#DuRm%y-AbZ?Z zvE`ey(d~+Jo~Z0I?0ISY1Nt$oS`5lkW}GO(FMQiyK+_d%9uWocT-o|Z7lv^+f)ch0 z?{9-JhJ;?i{;BKa?3UR}pRll-kaptc=m^LD?T|NCLqZR8wQT*CT+rWg2a zQ4cry`4Q`d*7U8CPAAJNDiT6rQ>8pdeC%&G)>~GjU zzBlaXE)`uWP#6hr=riW}2{BHH(+Q;FG56r3N zwKVO!FGaYi1t40D3IZ4=hxX_T27Bo-0=DKlf5Ej1jPy^V#WkinW>cvKh)-rmZr4hi zMo$*)bbicwMIRaH)=w!&-$=_AbE)xZH+v??xfL53P46v$ov~|gAFuY4fE!7b*K=## zfo+Q3AAPh*<`)3kQ5=q?1N^1`?#Yk{36JY)YGlsNZ#L$TY)wVyYQOniuAf3|Vz z$Q5$E*gyIN;;w7V898&n0ykv@gXQD-YEAjyi&^`G#kPCq`;^!n@No)-4pT)gev&;M zg}3%*ZeL4Cj8c)jDqW|7p4&w3WDHFj^I4MYR85GjA&eDD4>+;Fx&0ioG{Z z?~1OD@Q?H+U9~v31v?K?oeOqvAuX+-Au(Elhlx>tIAt;9WEC+L1U5ZJ;JWG}p~RCT+lG2S}8PcEP(pv`ld3s z^yqzn#Nd+vo133;+ZFbeI!O}sGj3PIi;}- zonOCw>j?b!viJv<{*BvzgQbey{{>jm6ZvlO4=g3Xc+bYL3O@lC(Zf$!JUa$0_7$Ok zPEKYNJKKE(jc{(C@mWG?TJeCT`|;w24-$yQV$98{#h7-O!EJ!X@0lA~S;~tSoYiQtpC`-5#KAjFmrxaq?Ik~K z`U%MD3e*kzI%0Tvbxy0-hX6CQnb$tmKcose1$X!{U27PdImW??R>7wSvN5BbuvMSl z8<8bhK(z*+98b{w*tw&&>ktaV^!?`v4yjA*TA7Z*i_cz$#u>(wy$F(y6S6lRW`$89 z-}SGeK&s9QC6p5D-VB5Y?_Rux=iB2bH2rN0Yo`;Ue?!Pnq-O1uk^SLHNT~LeD9`>w zjGB}z#KP5}fAPpmqMMAfBAMxZaLx$x6T7xwyKEIVNnry>I-M&rQqIkXuJZDeQdNZDZ-c5u%hLp_FwZ z7VNiV%cg4$-fM3~JpN6>CmwbQlPD}qVLqp#C1WY|GzyKvRnD?RA#@LA|eNC?Cp zo1oLL8g=Xrnn)%vquL?HATXn}K34s+^UHIpTC(LIqs-0jFK#n{K$cW{vU$JF58oPp zH$hs|XWY9kL=&toIL6QG9?YJ1{#^GCZ4c?Ss!|DBWn}&1z``GqE%M-G z?w&xcGab1Yvq5}#Qx)A|(5yxpmema?n(lAP+H#@j2ixWO-#>4IeIR0Us8L?c!K{T& z(YOV?YRJz&_NLcJJXqrAmtkaqC|D|SB+C`-8_~7#B4h(*XUnqMKJ|1edK+f@oALhD zQE!e=4vCiS3CHeC)h8LoG91NjFX<b4rC#Izi*neT$;<8VK{ZU7JJZ(yY0UTw_DlZ|DREaH<0~a7faS~B1)nQb8pl1Vj zdK#*`{=xxq`-`#>Jj1=WA%Ix~!c#(A0F?LK3%aVcI*!l_eI)K)+1#Erg#g62MNVN0 z&zm&6Qh>m#1>LmkuX+NO7EmzJ;U>1jpCGQ`J;sp@{`<4gwarV1bl=fU!$&l}lU|nC zgQ!Z&ZsNi*_V3}E6fe8Cw9Q|~R(i7P8IGKI${j_9UzYTiTIC`s&Pp$?qcMJqtpS&< zP;mxe$@~or?dc$ygjzGD@edZ6N3lUlnsW0#KXmNjoA5|}s< z4oOaSo4;v&Q7dalK{Cy!NKJ+#d1xitsC3`DNYMU|f-XM(9=FPGw!CjeMLdw08;&!= zNIS6^ALgoiFJ3G=c5ef`YR#^Z4|fEYzB@l7=E$&@D_yHcc~?d{EUHth2b zc&xdHRbt8d3n%c^M-O({q74osiGvRqJRgRSA>F5-czL$kqO8f2Pp38zl~v0nVKICO4nZ| zY4)+5i37}nzwmZPY&FQ`g!la{t0QfLvBci}l|+utP(^|CH+;qEJ#vuv+B$U@tMKCQ zD~Zf{O)aU<)#%2hwhY#jOs`&Ws3|@fNSZjKGwi;}9=|3^=$heyWlDn1u@uZ*xs77& z7&)xX(8o(KQwqQ-f0Qi@_NY*emMw#mm6?Yu8rbPA7-AWT4y-<>_@6htYV@%QLpM>- ziCZ=usU~4oL*u~+@6TAwUV_Cq-jm?mn6A42?dDqPi@nLoB0f7w@;nfsT(5$3m6B>C z9Eoh{rT%$JK{0>r7|)CmiwXbJq2>^)_92Q`rdRGdd2jaik4ge&e{2Hd@3su4Jhy_}#_DZ}Y++mY} z*32BJxK05u5X~4NL{{hR_y@Xk3xgfvCx4Gs;2F zjkLP9@#$+%TTEKG74RUj?_2C;>u$**5hjLC2I~@Z2^y^7cbUa6^`d(q!{6}gvumwU zVdOS9M0Is4_F}{E!O!gWHf$kF{EoITrEm5U=sf2cx73~(a0Fjgu|Bdyc`tF1fr-(8qgTG!3Z3vz+F{ z{E(}SqGn?691Rq09`o=lWpz>vA;>l$$?uMRcN|jyu+~9zl7^}%8@p2ygkrxYX(h)a z{2H00Nhb5rx&$c3v5E5oeIqV-V z`%ag*d%dtl|CG~<=e4f4wrPI{rkM2WyuNds6ZI&u^TCTN7cU-U{Q*f*$BRz&EC14U zd+7yhZJsacb$_PNB@qF3a-Mzrw+zk%hoSks??pYl2R*%- zNe4&l#J(S7UFwe8sB2IfMpG!L$>kQcO||3BM2@~WLr@~8C_GvHQUql*iAArC7}`hP zYfnpG+>oMOzG=)Tbc7aKDZ0ngE*b~89se=gD_ z^Mskx-KI#{L03OozRR^Qz0`qeGOB!RU6)FTy3dq`xT|EkB#j*bv5zNxIcK{4VdgEI z(P+_1vkMo@C}x~oTz$)+Q~8Il!|mks-FtFK!V6~Bx+~`~5@JziCY+r0Q4Mm3Jd zZ%(eL9aA8?gpYEUpjrUx;=gszKS)NuasMw!mi-@HN@4#$Az3!?amGJLCJu{3KZsGH zZwAR-VAt)mjCys8OlLlN5yk_J2{vS>BxND!2CuO%^Na<;xjj!A zckLwS%Pu_#;(5uIn=(bhYo`#-n)F*O3lt|Gu977%=cLh&KqlcH!@sd#yzp$0x9qxa zFQ19+HEm;OdSG*}aT69I^|S-NDHau=L-(SLpywY!kpI}#zcYKm;>Jm7Ud&*HSj-4E zisr3vi%F5Hf8qf{?rm;Hu^l8I))zn_;4yVNxnsC}$5?^I2tWx84pihSCE+j4@Col_ zzs&XK0N>n5TsATS+5_9ZNg{EAr1vAuNA}|vI&a$; zZNcusgr|Lu5kdn}R@ zER3Hw8?PGpW$*8NCc97L<LYzdEekziMf*WV}W? z=L+|5WqRQi=+ku9OVuKo(d%{14i|C|p*&mD-8>g;Y7u5gs48(`Prvgnwmbs5?kqE3%&Y) zjoE|YZ+Z7U+6F68seFUySOp6;Fs$3`xFC#K=D?itKZ-0*{>|_)>unHI&!C{Hv05dU zI607T5n6j)JasT#7Y-6Nk~`@?5uYOcr7P-MYY|L*)SIf7JO4n3hu@l zDF>FHA#qq`W@!6~>J=83ArYwvhOW~*aqinrVKm-=cZbq^D7uB+N7kDiz(;DkC2E`J z`4+|c-&=0l(=8@E}i1Boz2XJz_q_A>B`0Ye*@| zL}`x35#~Z;Q@E;ijkq}4c(oUAKZ>>PpamaaYB%F9xU7U3JvyH01nzv@K8lB>;oin% zvj$XI?H&0thdUp=)lcf?v4_Esaduk*VNkTOhi)18=G7^Oze?5D6gaN7VadD?Yhq$V z_MhwDuyb>;D#p$;QzpyO(HPU+W6tE_tXuF)9#I-j(HyvZ3_30Mdds`Ecs}!Z=Wikk zU8JD`5TJDBw?`=E^a}ze(QF!?f?jyaa_UY(h0eSnlgcrQof|>|cOzAg`HQ1;SOEq< zZqjs=A*}bZCTQQ~R+kTu;%)5-w6RA8g;R2A%Jfcfrgt0mZ#W2El9Rise53mh#SBCh z_@~$t?Z=+aL$t_p5ZTdV94+$G;osfatCjguGaJ-vp_W9NE)vgzXUD_i&K5_+DpkT< znpGeEPDg@Ahx%VeX zq`$!*29NOCsz~`emBp;i^o4mE8o5s|e0%>uSp~h5NCHO?f@1EXuD`U~PSRe45bwQ2 zaVA41(Cu(kHAl;pKCNksUK#!fseyX=s_}MH?gXz450f>E7oBKS7z0e2=cQP7{(cSy zFYt(Awjjv=?8%yf=}-wpM$W+Xiw3nsiEdl%&gLP(pT+8Asy=4}ePEu6F|>VK69B~r zk8H|dY#>SNBZY|&)wc@0)xTAhlEJAwbi<+N!X*zJGQOduvo(~RRQXT2SAnl5?U1!?SyF2;Ku=B%4X2cs*B5^B z7=}cScw~7zo$LKC*7fhw|C@C^;{IQ-E-R5AHvd?cgP)p5z5;~!1ayngj|LAB5NB!0 zVpBNg61iXUc~Ee$B;Se?TyCZODMHN!}GVN8Flr@)aM>YTm5&***kWYA6e+K5+b0 zzg6M{ZN_q6mY2Xi#Vqkgt8W`AohCK=h!K5+LugW);?K$QAprJip5#jX{C&TGTFHc- zgnS2E*|53D6`5DToBGi~@B)6wp2Yi=Sn(8w(BKUXxzz5>kk?jxhH;4u;b-({z^6jhkZNEq+s zGR=D!ZuB%Pg}g0_g?F?A(PBogR0R>sZ|DNyLTv14tx;=e)%^qkM_zLn+D-Tq=kjZT3y!@QsAc5Nu z^n>%{q&u1*)&Uqo#X;TipXkA;zlK)fWz_u(ysOZ;q3ZJln?bfY>s!05yJ9Yrc;Dmu3`LGBm-o&^Ou7T_<#}o!#dNwt zcP4A-BjRpHrSn`5*{em-pyF+#d=tGcbIDu4GZ$lYuht3 z!xMVF&}7&tFUKKu2GPOm`+`e=?hsLAmowrHjrq;e`MEg$A3|13l5JQ*c_ImPjjoG9 z4L74M0P?iqc?@@UR9|JBI%;cJzZOhuyHm#D=#;-P$P3eYKnCtG%mxYL?TpS+`f*^$6n;=D`cR{*z;o|$hcii!wFXxPLKJFxAm$hg1TJyJ`IUfifmI6D?DQ6yC z^2@+H9G#ZMF z3@+9K?0KxqM(_fO{<6N0=x6S|T#s&b$;Uazgg>?9pFmgHk)V-SiH;r@L5Y)h5H9M) zyIDCO%?!|WDMPU_2*r#YJZ>KIlXP#AUWTyjLyviH0R#YQ#U_BfH)s9vcf^}@;RL2V z&ty3PnB}8k&Dg6C^L_U^LhSAv0mQJ~F48hJw;Q;h<{9Wo91ly-f8?}rlSd_X$d@C}!B7iS>8ccQ_qpapsxHDRCZ!a37iIt4aE=8l8lVw{{|O{2XRC;H4G zxqYlHsU6En&Mymcu&GGbR+OqKn&0L{UqnU#q25nv3u~sitClDZN%=~(!8K?LjU=@Ayi;r4Yn<~BXNWx8(;+i|&m#?SDmPr`J$rQ+G|AkBPO$Fc z>Ocn2rwdOHrab%tiu4wsc|?oR{`I;zyZG)ZaDV^=(C7)XrYz98c=1Ua$MB6F9}Nh1 z@Xq$dP9o=_V(v2f(Ug55ayGe$Qr}21lxQF6K3h) zTh+nWh|Fjx|KV>Wxo^uw|AO1`dl+tMyv(7kjo%^8L3@=OIZhYbdtq2l)RN3#F~=or zSr-$=5f5grCO+6`dv?iWWwd@+E9pk{( z1@Vk}srj)l=hJfiZ1{2}+eAC&mG&?LK!xhnu{r;!PE6Z$Fo8%I*~Ks_Y?C;IJ8LQ2 z3O8MLosrV3iY&yz;z4nq_JKxiToA`74P=8LLI%Le0U+S#9#g}E02dV!<%_DaP)kAi z*R#ek)@L6M>!`p_Pm1Dh|AN#}{;;9q_TP*27lgQkLAKhRg<@a-hdLD)gOI!|0xXmR zKV#kTVt>|@On{@wxp3ddZS>^xUKAL))mdNwlF+~CS=QVWDl;#RC<%Ialh=2B5bzEC z%nmQCCVO0SMf6DNmt^#KfsPoIrM!SLh}ktr<>`}L)W`uv%MJ);7ul?=#U)7v!AdUf zgy7ad`2Edq0~*U6pQ!`R-r&EOg-t&?qK)NtPL`FE1=NiZUP7;Y(}UiUSpD@%op4w@ zNbQYB=5$txoHg=WJOI!w?1NU#zkHtpEQeS=+X@62h9%+8{!y*J5CMg+$+SbVC}pa- z<@W58woM#IkGwjHCwIvt)$u(49KUM)X|J@}O$}UOZ;$_p^|1y1(=uhM&?Gl%B$hwWn0yQpIl6WMrL1lO zMa*0zg#NBYN3lS$O4K6MkOng!(S|kAwLK0>9dhJIGvYZ|7iaC=8-KhGom~FLR^pZ5 z7{I5;@T~3{zO36Z=lMO=E?%HZDW!BO=kGAgOFs0?HlQ?yf540qcdT~yw$JK*`3wsD z2fWhmffq-xJua#|`NON{SfQUEIHn(ChPTz~s1LV12LsR$g+m&4M8BwK(d_a`s`E(?x zmy8Va=0ZzQMTj|oZQ$tT3Ug=KAshIJEjN0n;Fj^QYHw(q5F5j!>Sb*LayyH8ePVm? z1EV=conELLfgBj;;W8Xf@Dy+E@VVwlU`PPJi$-QmxCg!_c5We^BV^y|+TzwE#q(t7 zo?9LS;~IB4e@+Tw+5-1)i{HxCwtjix@#`v#W(F;xD6QFSL9!15oEUWL&n!>}) zxp&z2>`5G%3$$U~;>vDAqmald0Zk@7QAjpJ5eMmvS@@|`> zU7h0Rd)0U@_g1X!;Ig_Vni8Otf!7i~ukxKE3cn%^QPf!AJtzrGWOa{((f;;L4EQH; z1jzg&SN|d~0tY?70!11ViXUvlgMUA^dp8pI1-sqke~o~Q3Jb$p2?i;FWh~;{mHb8UGh=^!xX_a(cRN&P z16PnrNon~tJAUy^R{4N9k;Kl4YwG~0SCDN#ZAG}ua>>=>N@y5kR&M!*8jwwc5j!?LHZohjb`Xdzb`_$E3oK%@Q5KO4wslEO8+pYBJMp1 zaotAc94(TZJ(oL!mHSk{XRjS$W9*DN_`y`I@uh>@g)&mIk}i5=hX1<6$U1 z;BCn2%qAO7d*F%nHtSd`m{kUMfPNV*wC>0yJz&S3Fsm}?9swn-V1#h1XMOHy%YG$< z*G7)edi~%~VragfRLq7d?qN*m4|qXTaDi*Eq{BnXouo{G%L$J+ zTftcn4I;)DYNr-){Ca~zK(V%+Z^YJF=C)F*FY?l+5V~rS_>mqXHP~)d=0`wl>PXxi zkd(?x*R}9LZ6MrCdFKigT3L$JxZCFQy$w+hNj;rv4Q5GdyD1<65Rz!cZrD{k`?cR3)a0fUi{@ajRw z%O#Y_;2a*@MTJw7ds5$P0qaEhSDtpNQ-=7%b#&}2?)8VvE(f>r^1`sPpgP4cxv=9) zazT=ZYdrmUAV8Ynte4&~Re?2m=gy_I3X$Mptt@l7Au1VY>~kCOGl213IAO-y3@y4T zN>8Ju#38e>ZHj2TL(_Aa9bSfVq7N)OSh1DnV)m9cCudXwRd6N{K+B>UQZJ(~Ya+qYOQXCdxNcia;ho9p44UBdNg0*`~6?iWY zBmT#|8t#Qohz@(!egdFE$xVn69)1+hc?Ls@HX+9VG?oz0PWNpN{q73q>^oM(a<|~x z#R1+=6%%=C?EV}x^Zpbvd6>3Uym<6X=eo7EwT%^?PEv@ALiO{wJVa(ce9{^|fzBey zQ#3_!pVAO5zgs7_FdeY-6O1Ta&k!?)g2}tX;{#US92U6<7paSf`VqYrsO3*WeGg@U zf;gQKPnZfdVDT9@{yEK3UD*$ zyZQ`m!%>7Lfv2lhprUz4%;~6%i6W^0OAkI5Tb`J9xxq$pZl{h=-vA*SWgfo!int`c zRHqv0D6c3V{rz(QK>knr^>0X!9kZiyIAtFrF>FcqpZ}+;Q>DoN0U7IO-Zi=>W8sEu zg!m#rr{9nvQWe(8HR|@Y~s8jkFY~) z5*L>+P84!Q9!2;b4aaLcWf#3#0(i4FeDQpm$7R3QpM6vIBE| zdITl2Fn(I-gPH2<>9;B?WW?fqA-#hA>B)arv2rNNSDm-UVI8DM7y8Oo+biE&bBHnv zUa*)T?&B~A?+XMOsbf+KSO%M7G~)2Nu#>n_uyJ{V)Bcts@zazH&K0?En5W|b>{FWG3}QgiKST(w)l1^ zQeQ8XVWK$_$2rRe$!HYRMIgONt;po^;;N=cRNy;!T4Q@CGVGh3+!t$P?6HF2fWndsx?Xr{`~Z~3@LstL`juKQe+Y3u-f55Sj(T`I^QS>@`#XA{NjB{ zI#0suM1fo7@laeCX=rVxo2NH8@h9yW*n1)LU-2!@>OGSCcQ?U{oOr#6^b{Sxbp4Q$ zxEwnCF8l>z_P=y(n$T!^cz)E^zp|ZjfO^by+KT94-f7Q#qo8-HQdSwY2=3!R z^XFwyMU}xzGs0W!oF?O}-L1+CX6%sx`_}ldu0H!jyW!I$^;dJbMO2`ZO+W2~fTY-VKo$7ds_t4aTYIu@yTiJ(RJ<8C zO_iRS!0mhBHE-#=6M@y3iWkrL)&hARH|)X9nfR;gtAw75;}U`~t<L|r_NGmv4Kag^tm>fwWhKdBw)M_6tGIGC`S4j`775vvM&b+tR7&z5iW*$SLj z8b`+{?gaeodN*knHYNahztNQS%CaKXaQVaNvu~|KCM_NX76A0e6_Z-60r6`PbwL~t z1Mjyg6b>FUnb1iukv>w4o2+I&5kP{*17g0XVN;eL|CY9l-bskEkCYF&yx^AAHqh;B zKR9fdqSQ26>28(>Kx^D&iYvy6R#bJOl!-fvKmN>v(`OaJEJz?gLm)=_+o|QMF;VjJ z5JVOLa&rV04!)PtH=(azW@o;_r?yWRLQ9NQcpa5Z@zyPH70#cXHJp?Fs>vJewFm-E2dc~516^(7~Jcn zf+zK2Hasc#8z%YQAYPun?kfa4UQO$LWPDg9C(bK+|K){C60!xj_h%93K0rXbtGDvS zVZzpwd-vooI3WPUY0G``_81#%LF{NNiU+o0CS1EyhyLh2+9nIb>VS2S@qPNUWAPT6 zGBtcdfTgfEd;Mr)RgQJV_r~f(jBtDX$PyIA+WFbN)tj2PB((KX90pJ@B)-k>8d0y# zJoa9Lh-K+7FBeJHTSc!FVMU?8C^difoeN4`Bq4}?E*DEOJ;=;24fr&#H80iYx`~qi zhIZ%~tSyia7|t+tjYwdeMWuxjU;{rYe|Zi)xmZP31`ZrrKvBie<$Ocv<{ZeOtva8! zr+Q!osKps3Kgbl99%CrIF?mG z7&3IlFz!)?zFXwywrDxotezKVJQQsUKd-P(6wAJazXE8$@aZitHC633@*icox=X6$`u z@x-Ii)UG{4t(9PPs>)>gvGBNr9;Jo%zO?j@LVmo*h*`J{AIbGycct=$z%Y-gx&kvF zvE0@wSKRms%oKZx$qU!a(X)_|7BMR0hdA|qv0Fch#wG2IB`!{!tb6$!MdSN|$w6@3 z`foIx!>fkETO(c!y*y(0oY`LEe*H>W{UCk~t|vRoaya=ekAzej5);{`ZsLm=J`;I< zu{R9_P;#~ZJ>3klLRdZ>;Ut7p`H_#_be{=3z=)L};wHMW!o|co>Op{C(gs3bW_OBB z@|Z{|G>XmK6L`I`x-5sEsf&u%|o85te%I=eDSFL^kG=MkwBAZ<=w!V6|o%1^0mTsV976CU!|a<3P=oc z{m+F@O|$ta|IG^mz|+>RYthiWx=YD|+z{&|7&U(3J~YF>;Mlel-NaC#A5eEw7L-nH znV3|iY>|x(V8)a55l9Sam!Cxt2y29a-}dbY`U;J&g?QrCzJIy)f^ANcmxQyx01s)d zJs{JQzPd6zzx$%qt>dw>BsD=y$1`-)OTdmh?f7(t#lCUIYz2J1HjF2?7YGHp;5(iADKv0EBz=eW8I%vU2QcFlHkOorI zg`0;{AeSE{)VF%|Cvye7!7LL7h@HvCbJJTMP?N;X2G!w56Bvm3mkMTL=`+OhV-cY+ z08f&q=-CGP_ZPz(ho63ZJhGO&6YV#nSO{ zk%zg-hUtOz2?0!4oE$$K2>b*NE!E?Su|W8jB)$mz25u%&j1tF5hZcNeX{NLI(X?8Z zL4|Lb6{;NB^39RgteyHGyx^W+{r<*hlA5v$0sTp8Mb{^YCf|Hg- zab;K=)>1_lQu)y?!=aTR`GrZc` zR$PU5kJIvKz^i02sJH0ETDC^Q=9B|^5X#{^lt(Mb9xF+Q%B}2fWcBfla6xIta*mRl zAVDVH(V-=%@#xPjEIAcm7(Hm&=5v8Ct)G2P-z2-^y7~)fO=$Y1(%!P~P z@Nkxc#q?-v_VX}n)ZMml3Xxi)TvD5(Ag44(Zy+-QXFL48wQYrWLL%iE9G@jDTn)fu zpTb29RMVfM)okA&eGvZB=vxPu)uBYgwh#ADy93+1S`m)x|3)UA-pYS#^gsk|NK!|V zXC>r686;JbcEYlXu!)%P)%JW;%TTdi_7OrrA=OWR zPmib{lWbW(ChD(I*GfYAAZa!yM=i|P4^6e$b;Nob6= zsC{hiIX+Xk$}%%L3Ln|Yh#2=gI>jlce7cf+lz!MEB&fK_a4`El<} zWhx`!pb3Sq4UQ-`eq|FH{6OO9*>Vjhd5i#{oZKdq;W0OJK@S8Dxi^D+)`fX~KLUB-Wt&1&3A;LE;?V+yDG_n{RqVoY*#sI5vd%R}1TIS3&n*ZOialaL{68it4 zG||UIsQY95ho*h{zmkuY0zXpRV<}ik*9sOLL`ciSX2=j7M^l5*#DmDDG2$kp>}*~l zP2#bWqP`z5+0@-PRYnO1dkVhgX;K(C?Nz)KP__Kik+iMBjNj=%NQ%&6v)C9H8}d&{ z>p86F!b8f8b8pLGXFQ*rsXd--qqHM_LxVJysaMG*DNg+x_a2X~4o|v?-|P!K4MrH! zdGu3~;dbe43BU1(m6$4Ay_lF329{bXoV`bA+xH0VKj)f53O(YaqBe@}`++dz2M>H) za=D_!KNgV14#@~QZ&|!A7DU&(ui3#w?CX!0Wz`JvvTAQZPTc*<$zxu9GxVHZ8UDt(QXkDG+kBfyIB zxZd(F;rxCYu0y@q)=OyAB@~YaC>Zeh1@ZhbGKG?E|L^&H_`EeI3e{+1{j^gXpao%7 z!jV9}l_6}u*iwde0&ZX+LB#=gXY2bEGz_oWk01)KQ+8SV=$E8jRXY_Hni{Kb>`eUb zzBP6dN*3{odXJPUziS?kWSykd2U`>TfksF-yJcOs!(C{_-e0cBKS|c@l)Pn63 z%1n#}4ukY`g)ovfv53;Y!0A7wXhs2;@xRQppL>ORbN5ARvk4lMtVh8RFrMBM+O&5O z7nXnWd&&)p7$AuVL5ck}=d~nG1i$02A8;-ZNUl?!39EIS;iZyHCTnCmJ~Xn6y+=mb zn{#r>i1a2QB1EX=AQJj5L|qNDv5H97H@h%UE+%!mT4tq-_G+gsC6^J9bls{Bc@6DI z=uqRZe*<^KUD2bpDUgVGx#7uHCl$P? zF0IwHo2rS>;=iHr``4Oc22sEb(Hr(*HBAi3O}z50Q)?hd)Aw=C4?Fy93N0V8z&txm zI^~OHGz%2Q!tf*u{z5(YzN0D)Y7QLY0b168(_g-id^AbCAj~Cwg_~J__@?yDisuAw zqz3)OF$9YozNdTh_r5(0_}#dXwT(Z25xufH3oQY}0CuEeqhsxFL80Z@*I}TXfq3}P z?=;-tShMm%`F)q)~3Ozka zJC@;uP!PwOyXFOlbq^m9`Z0gFyI`!11|z?U*KW~Cz@+Xd3_kEu)ItYESrAYXG@lPE zob?1zmd#AXeYpI9i9J2GkcB?MFEKtmNQSH3TvM+2$D#bmL1=Y6tVBk~=4z}gZ#TPw zWs>J+vwKa37Hnc1Az^r-kVR#mDuzZSVa=}O0n5%~^L6HNUTlKhgimBCn;)`wn!I6O zM5=H5JxL?gycufBfMZL*yQ5LoWpjTQvAgBmFlx+)r4{e{2iu>2(5&ZPF@@+bEQv~F2njeip*A;3b|30W%_GhJjHa77?8m*ckGlixJ?&JaqI1;F4CcdKw( zavt`As=@%buX9}>MQt#35%z&s8%4aBwR%lXH?P{FxG-{eMF&hRPlcy&PO+F98bE*>~nW%YURSBne%2FOA`=M>=EEE&sBs(aBt{55e_%7>kmF z;-mh4!@PX!iH}Q28O}-H0C|SZ#(;zVeSC;RWjK@wQOf5CO;QN!>O;yWQJ?dHUm$&! zvBHG9@jj}}k_m#~hcofwP=u#m&RO`VzC*M2!8 z8cokUH!ZDKpr4c>8XppJLdV(S@HDAux8&w;Mt<(5%U+2N7Wds~u^O99nhHjVI_LyPEh_t&b8};7Q66igfJacPZ9~nB-h_(&|zVq6i!Q>>0Az zq4i^O%RT`ueLx%LOZ1{|vn8%;aKdvFF{%hPY4e1`AeDxtkm=!-$4jS4wH76us>N}? zxWJSmo~*c{fyFd*g7^={z=wGtjx1Z^vD@&qVH@#8?B2WEaanKNPLj^#yc#S4jx@Y3 zOoO&^L3#3=`crb3{W#mFp!bsAl-R-cQ=wGuN8xsf1R?TE>y@;lW2r0b!xMGfpQ$t_$>rGGDb> zI2~%6KbH}X?HB*1h`v+lLhq-GLWG;8aowbFP|FMiv^qw(h6E;hDY%&hZpc=sMDG}$ zmUYR%G6JX!wJa{rs-ImP5b~5^$ z`2cqxbtxV08_WLf@(4ps$&+~Mj_c?g8CGdB5-5fWyd!mg*Af5Aq={g#?1R`l0ZZ4h zKL0QpnSF8pw+t6QJg^NwX%*%cS<1`s2skIZKU>ccB3z~OEyi5_xvJUgvz z`K{^{qDW^G>@nv1@}iS{;6e<$0R1@R*n;J}u;LJ%Y!=-wk`7r*|3q zqkCf-I>kSE8ONk`13s`4EG7j8$D_EKT#hs{{o4L6g_u+6cS~BkPI*h^lgr9sie8@y zJB7AF`W9HbUXdo(-vECzUy}wH3n485@s;gAKGS?MJz7++3-I1U!SvT=xMtl_)V5J} zmXjX4)LrLZZi-jy3=YM89t+7$XS~Rx$KU~uq^w&RtIEn))g(_YWv!F>a^fk55-nC`FG)Mq6w}wIP5S*V z*+Yc+h?#UUbuvkDM?7#)mYr}L$iAO(_rNfWgCh#U!W0?L+)NEI&>UyF4wl%%s<4aj zxfZjU+nBJ%F4)f*hBN>Am81JGU&aC@i(?HDnQ-l(Q{f2miLtB53<(%(yCW0{s=H@|@v_B@{`0P~O;Z;)gljnob*@@Eu-b_Yqb&Ea5j2YTf3-eh+f3zu zpYTSpZcC(_&?(Afauh&C^=$Xrll}_dx6~_V0nt>=-qxcINg-PCJR6<0R`=d{!A~SJ zloMniBMh8|>PgLLySZ0o0Rq&onfo$A_f2Zub3C4KE+ngaRoKfL!f9s)*GJQ*masCC z6Ky*|pHMT3mgHlC*A3@E*t{?RnDNlGH%+TyE&Qf>Th{j)vrhv7M>LK)-G0*k1_7dD z7i%83jR9t(Mr~XOEsnB&FGuDFYVRFHb7+mVzrevCp%{QFVBa*}Tv@H9Rper+%g}#w%*UZX8ywcQsF_k*Fq9`u2GH zXnZ3n!$>XTCWd_)`@q*CG$b%wo!G9Bxo6wJ3K&FvbFY4AWlzb16tT_Op(Sm6;(uM(}E`Ju8wbwgQ3eBSiRf1HEK~XIFC=lOKt9Gi zkaeWsL=dz6J)=6fXH*i@_bEFwBkMS2Fd24dJe{C?{viuRF(am85p2pZa5PNujgcf; zxP!u>Zzy8Id&KG56F~;Plt$QFqfGqBNUuR%ZzL)x8VMh~s)SXi6VOxQfvnJv4V80S zar{(0w#pJciy{eusx)#fcjNd-sg+_#{^1s8Jd6#I6Y@zT64c1Fvd^deN{+VT2eh>% zS{VrtE1>fkLa22eDyq%7taRE_LuTkPn-IV_$nO<~R!|G~ZNxHH6ck1?^6b#Y2b&xSPmqGS z$7rF2)DL4^n~ZY4*>Vi}1rX2&Z=NGHobls_dq9Yoas8_mLp6Vk+VY zMDROI>9iym^lnCMX*i+ZFEjiZ6>$U>oplsx>_9i>&+9xj?8eUZ8#rYwF1<0x8aeTB z28UdycW22G?3He#zKpg}(1^L16JuL9ZQ{l8kG7zuRIIBx1JpEmtFo?lAt!eNl=5Fv zh+bizO{SSLRIzf*Y0#&RT+^s)D{5SiJ&zjS);q-k(fdVKenH?ox6ey*o>OS{*;&hj zX#mdW6*e!usIA1+j()|x7u??V#eQe+9;4M?!1VP-MiLvriUWsn3l@ z9%wV9+fxo;yqb&>H$4H#*zOmP#Zf}D8Wx`fh+sH;e+)7_(eJFf$_bcP1#I9aRD5@p zO|5@KjqSZZc3o5FVagQNrbZit+&kFPP}kL;jkZ5*@2;nO_uD&?X>r*YiD4_QDp2xB zic`5|^NN9=6imJM`GjK-(_}-txm`%H*3{1T*ZyPhj}JRq5B$GAR(h{{?q>`^GW=}< z5Nt^&jGguWId8e0$tNlE_>Dx7=Tv`wdlm9UJVk1~>0st=jvXRS%Sy`Y*kFYZ>sP^AzM-i0#=x z@c~j$RcZVI=d(_Y+x_77j7AM=qtZ}b-leHQPqQIFq*9OS6#A8wpmeY9u5 zc~JX#g|&e`czSGWZPG-90ldWj_~&;*JlnYL_bzA6;sS>N zOOyH;94#h~vp1J8i%Pq<6?7$(G}0fp`zWpNyLAZCbm!Qd4*6EHp6KFrF&r7!{7`^z z6D`ayJA@3C7JW(C!*A-xG8K;u@v(;``1xPmQb942gy z?}9^90w+a!#b^Cu?Xi}Vw()R8X}7_E7%qer+WuH~W*OXaMfT^r6*kACw@X#tfED_^ zV1Kr9n2`_Xg5^dHXb@1`o>qs3yFRCSw>0^Pez?Bt!l>V?Ekd5N`C(DDQmI$v71Qbh z%AmtH!h$}=;dvCu?ti>-Z|+Vq?RgmFK<>bwhi+dK;$Il(;&& z^g0vP7+)uDAMP}xC(+gGJzJ?STY4E@Grv0@GB?PYr7u>fQ}CEWlsLHGs(Ol&P4$KL z?0kH}l}_*cB|4)x*I$4p;?GoQ!HawXx9Y;BC;6|d^l=@G&;)8Hhc0a-4&uAvw#UDo zsBwOl;H}Ugl4?=F?r&YrrsQtM#o%|JUQsQNZae-4n8IS_I0S3L+L&R8xLcLb(iXpG znth2bjGw2sD+uG-lJXa+Nf96P^0Xb1)to5HHvQ-p1iz;^`}ZOsctQJESsUw)m5#u+Dj$k&3oaL6X5p

1e$_mh{7}>%1sDW? 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

{&s-=?}H0M|{5; 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%0DsJbemcIq-SK|6 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

q0HN!m5w(I~?4QtMCNb2duXcy6@+y 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ΠpJ^Xryr%Ii&|vgTiU023`2A6OF(qwe6hXU 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�HttwX?Ez|w<#-RA%j4%B|ul2| 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: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℞=2- zkFT_!R4gF%$d0geDJ8hTfzV0~Wv&byru=HYyo#q<3r49r~U`XzHPQfCUH;*vhJr?~Sv5I-5 z0hd#bJaDe%loUKTvGP__Uv^s;jaD!9Q3jbiw)^mZVfAjz0Bo7_GnBAu zd=}9b9~6ld3L0Gh*46LI1Qwcd|z$y?2 zv+KyPy3^)HP@PvAUBHfT#953O4_8g^E=$1p!yhu_Nc!?r6xFNdIBs1?FOD?ksb#xu zf<`6fX$_TweWQmGuuS`qM}rrpy6k&SAo2?!tYuS3+zZTQ{gw_XPzIG78i=CXm?h{-Fj_^ z_*x6Ob@qgIGHc1VDv=Y3)uTLFyKm9M&+^}nE=+YE3HH9i#`Hz37ks_vekUYWUvWq& zqN7zZezcsKgwAE(S^+LYDVcc7Ry0UCUF2$M2*gcjU<0L0&{5YL;Ig$u)V<8(#k;k% z?-)4|KNM4GIg+AejEpjoT3cB4w|A)s1YLXUYy!K5>Fab+1Z(&-%b1IXl%PA3O;i>X z?t02=bSD*|l2;UmJ*Z>bl(V1?#Xht#om=>VfApoL#8D)!iPo7QNgr`7=P1jiTvH$V zi2aKvq=LV8tPqcJMm}4CTXnd9>e{eY+85pwF3m4c$sXNp*eGehnafY^LQT859wz%Dixh|?C<7t# zGZwNQJ1PYXjS#S|t^1&0XM*@$l-wq8`YV_`1QILqRTdrs{|b++=_5?4=~AK=N8if$ zadgo=i1eziJv+lYI3;bNDNPH`&rp{`ALM6Zk8PHn#VY)${`+4WJJ4n>P{J)y(<^P| z&e&xQ*eEy2L8oH~!R%0lJxhk2>g-gX2DZJWEPDQw{0fQf1!s%~o)9HBk_K+xt7to< zXhF0DS_jD^od~^r&J%j!>66YwS|qO`C1iTw1@sF*_p> zLl{h}5dv+lLzrEN$$jNZT!zO<4$#dWFmzd_kp9Bh5M0u>_6JE4EY+y_Vx{7a^kPMi zI5SNr`2sX3ZV0jjQQdXb(XSncUs(w!W{C8b(Cd<@)1d~2PTnvL_@T>GehSP%L;r=1 z=iTQO9{uHBbv1-h-4~8R0nh1kmN6X>vj`YH7MB)})1j1li`?LhP?^>D zp?|{%F5IHs;fV{KBP|qXUmd${7#=IeqyTG~Q4%6B{LN*;qs76Y=^3|PikKnc*N(e6 zESO+aE(m2NIf7jGY9!f#2x6C4a1J*qAwRr|8a9A=l}dohOiU}DbAW(VlR^j#y3GdaswH4K6Ewi#MJ*`F0-|1S#^$HRlp_$)z_TdHJVio{!1z_B zpUjY=*cjCG?dc;JLd>tyGa9)K4`XgI0J(x?tR#hXy{`PwgWH6^`&2lMxhMXZ?ltc% z$PlPatNd%n=kwyS_($UvTRxz(?A+i6e|T+*HGJYi`}0Z?la_3Q;=E|FqyF1f-(fGE zEMZvc!A-Fb=P{#FjRM)V4?iv{0yzxkx&97NU!kG-Gx6!Gf-BZzcrS(fe$P$-@M=DH z)8!{<@xq00+L+}$!MGQy9qUI;80)x*v4+bC|MRLox_6w~87^}CdNdn1Q_$UKTT_sx ziT(=nS2TYco(EMSq}^1CHgJLN(hF>X_IUm-_kur8Q z1B!*tLBwZ`Jt}$g-Cj`N+&zTEq7@2C4nq=lsVDEny;dX|+c}gJodwPIM?^wfkKk+7 zI{rF{4m?6;VF_K1(-3%|^>yPe(hFZ)tg|s&{+8z-eH8#C1#9a-VdU)t%fFLfJ5p_= z=JvW57ZmUlrP_JR6`OT|h}*n-L~L%(l>|MgSFnqP2Z<%CA}^n!?I;E;ny2S5E@!xX zrFvQ6v5o!^bux;wk#38b_=^g&Ak#|bDR=FA$$;?sI5vV^G>Qw zNzOp9j|@3TH>dawJ@T9z#j+M)H@p%xC_>h^*Wgt;<;^5BX*$2f!HAbk-qPp_(5l6e zB;Fqnr2r+w++2eLHa4aRK<>7->xP!slXQx&>Pn?fMf@{#+6_H&4Y~er%2|tRS7+q| zjZ2M>heJ{KP>afBk>yl1KykSBsJ^Gl$~FT(YI!0yUro78yT?Tz&DQ{8mT+Aue#PVQ zGT;)-!LJ>KsMfHe7fKYED|0?B0EsryzZUEMex~^Pilftip&Z7qfq^0qA03!3A~28! z1-5_RnxkJU)!%tq=Mh8O@Y3R}(G*hp0;*O5vM-Mj&^c=_!c>5jxz8|p$G;R;t^-T} zsm{!2KV}Cp+q>m}y7Boahvd{SAI75qHf@)YHJD@xc#rtY1SC?2?BS}n8@EHJQnTy4 zvvHKBI6fZ!tX*AU#jU$CPrF3gD?*Bf9##XmBG$kClGelJ*N)0!D{K5sQ8<)rwcrisRje964(JEZM-m!=J&{Y8;v z!YflqMXC|Y(u8FoSw@eMeLiot3$ni)p?+fzJ~=YERC|3ZkbH3lP8yM$ilQQ;EWdIR z93(PcQIM22_~+`rYZ?74vNetfb9j)m9jUIlN!>B=uV&+R)ecUh#VYy$&O2pQ(y))4 zg+bj>qtd;RB-926%1|YK`!7H_>)kiW59n$KiaK_N)Lm=;%_m!TRtQ5_@3)< zk){a~j>~Q&lW))7cZZI3do$LZ{8y+IR8RJ>e5A9y+mPTvDX+zc$m^hUfK)k@AJ7Py zweeqXOA#z;vPqOu0-s}HWq|-%lSgtUgD6TXDyd&Py6jl} zW#AKB`sZC*=Qd=j98S;Fl+-2iwvA89rG?Ff*T}YlB z5NK_0e3nGAO^o}E^U0D#S`dQgCq;~aU>=OfdU%e1a*{tv-m{8RIncc%*s5FP&=2w2 zKDe?if}AAx72^b@((S!|V>aZb!owL}uSjm0KVnLr-J>)4rxOWp-0HRqDWr2(t9k31 z&TY5xIXv73wsFEk5S!)P!>U3V_gr_i_OBgd^-(Kbb5HmN@0zT`N}_JqdGdGgMn!6M z!QKbWqVJH0y5cEtSTq$`CC*N2tnVEha@c;O0@PIrwAl#D+mr(lv+qMhEDMIikk8DE znfX<5S3rU_c^1SCO2}e%#49#6`|x(|pvm`gX%8_vXECF1Za({ZKf=Z=55~Ow?-|ys zsF!XHqlx9pBuq?*&*yP63Cp(;^?7xe|8XNsTkD5Lf=({43Hc`V^Rul((>Dw7*Qd=v;Ug`ue>^$bC3Q z!@7Sg(IPnyGXl*r_ki%PnMs$Nri{%zce~n+)fEivr#?3R+OZ0EpiQ@ifsm#~3dJC) z18574f(fohxWIOU>P(zcjT; z<>Z?)K}%(tYP8j%&E^SjV3cy`vjBsXUmFV1P*#%qC7t9)I89{$sI0Wnip@OB|G=r& zG~cEQE8z*{`)CB{*d7F{(r5_gC^0FfI1=uyGiqTpB+<7UWWbdZSCi&5>!$X}--VrR z0h8gZ!O6V*TW#V{0%Q8MV?#3lA<0}dzp208RBm|ED5U5ZhF-OCPTREnAJ)z>xYFqB z^095(wr$%sJGO1xb~;Wv?AW$#+n)6Qof=fVpQfhje!lgqeV+T=v-etO9i%5Yurw#c zu8Lu&&ZDX|Bk&`W8N6w#b<;Gh{8TysW(Dsw&P%#2EHU!a%4CR{#c25Tc7d#@b@S?( zGWh9L0Myyu*E}MZa2-8hDAFVdJC8D<541?xL%Feg;&B=NfoVdA|TU3g>~+pal!P=C^l$z;1WXxqFWb{^#a zMjMuyAktCk{L2lKAhiU9pEk+L%!?aN$R?-(Dw&8J`;&Xt`#gEI3AVG9_@e6B!Vq*Q;AD?YuZ0px#PGM;O>k~d1F8(v z;Fm!Mm6Nvkl@Hv)Jp^z0O zkxLK0I7QnNk=jg;Q7QC){&NgvCAlJh$8|$l=GtskJX@%wP>yA=g|zwK$!AJ0yA2mL zJL7J$OWpV{xW--k#h9apU8~+K1smmnIX$utt9jjT1i!C3;mSthnKaA$NoXa`7tRO0 zlryp$ElSgz)4sgWESOU~y+B+~?Q5-q=KecpgIClKga##ocECr%F%7lZI`%Pnl*OAj zzL`B?o+RUf^KOKSpZS<}*rJ!a#6XjYNhEfivbmD>MMhB|Z!P6NLv}4+t8LV)t)EMk z3In5{3K9NtSSYDC@TvNtQ%x4;3E5RV8iK;1bgVK{k>~k7>MsmWO>tsCnN@g{{Q+MV z_5GJ3kLonMF#)}ML7QFSluD-j!_13~QsVrkt8>$!zSbyRC8Aj%o4nOpEFmTm;!KPz za>i`0^IujJzQ){PJm*0rk^mp{MYf#K#pxNOVCMTq(`{b0EYZe|qc{G_J_rE6dXZM1 z-SGBBI{dY2c&8tnwUlKWe-s|VmMv%D8YcceeMjc=RJn_tV~y&DJ@klkL-|q1)$r zD%LmT$a>EQ7TbVq5ozQ-I%3^?l|+f=sVQ;^}9 zi(V`UVbn4L`CRk%_UyoN_-(7J{$cV9F~C6f7dB*S_}M%3CmPvZzWygx?G7sr$|-I_ zR)+;KQm%}2I8CGH$bP7Qx;7#$kYSSlKpE)>WXAN;kSt6J4yhrA&Nq%JB%Hs9EWT0O zui>V+8jJL*$J79gDz^}haKWHWOubN`U;G%hbGV3|aar2CcY5AzW!X9v{6t>u_F)sC zQCN%Fmi{$X0gK|#940-~6wL&oW**ynJqJeXQ`CRS$^q$43&EP8^X?Y;K)2$^IJLq$ zsZ}XVk2euXC}fVn(_&YtWf_v~wL-%%xxiv`XQc0wAoq)dfn?e>@sDWtfSv#8d`N#* zhV339IEU)zqg+VIppL^tKZ)Xt`h9V*Q}zfvH*oD4YY-4OHTjj+LctvdCOozBI8TjP zh?Dc6ln>Jg*X&bXoj0o(q4dG4V-_l%WXqOggu_ZRkw=_Tjbm2~L|+R4sUYd)^h^`` z9w|C7T#?)14o){Me5jzNo`6VTy~v_>*%uwuWtEOJTsZwG++Om4lwDEtAY$LE$uM1W z(vOWlF*4XIJp*HtjZ6TH5TTzj(S^)Wj{o&d$OInK<32U&=2kZc--|*pj}HqiT07R4 z4<>-3pgjh~x^1Mjn8AF_4Awb28>l@K-OphCFl*RYRBIL+*bj+x6(kUNJ76uuJd`Cy zB4M`{PJhXjj=qpxEO)_WkQ@(HSMlL|4!bEh$4N%X@#3_`(_whC;rwyln$K~1&}4+2 zjAj_2srXB`DHSG%5}Av?gINqq4Nj+||D4UL1;cw#1fR)Ncn)=4WA>9yG02Id`+e5C z?OvF^WBjnA*i-2vcQ-l1qs(236Z`y8 z_25YK40IH{(F{Tt;x(bYI*xVLXCD zna=B|%%>vcu^ZjRfXhnuh9NrZCV}(q9H9`i^CK=9b>p{1Py<&p z%)JUwKn0IlsxlCBgci!4*1;Ox35-A9Ueb0UM>|#P}>Una0maMKD-34TQs6vje`q?I*M9 z;bPpR22VLIhj2Y}r&~dZWJOx#TuL=2|HToghk^$hX5aoZwy#7);VV5BMS}gG{kto( zWBsEwj|P18{MZv!_G9;F^mQNVk6sJapj}$O5t*Sx6&F=gWDWmg! z^f3+LVF$sgiwQYeyp)t*T<+}o9>rDeE~6@?D28=ok%bAMi9kn>kRt27f33;Y6SMr) zF+q*t)tT&r_e-udxM4-iBeq&|+20_Qz+^=5$&c-qBlID+VO9D<+Z-M_weN`K9 zc|RPZQl^M@G@9Ska(oB#a0=*0V8ohG33a}S2kq+@BNO&_E}F-N3WyUX-NwQ zL>1u+$L*Trw2{m>k2KDcwJX@U68TA!by}dvM?7C_GiVhLM&V<9F`uL7u}#2WYcQ*F2XIb&OYc2~&-*-8gPeO)n`9AhkEax}%e;iZ?}1IpH@_J{TscCQRt28BDGN zG)x8-g5VBBN=iayxaEo74?DK%<-Y6E^P7J>*fEeD*vcPtoSX1fQbTb*2kKf&JD}sG z6FsW-;OqCfM0>k_iCkVhb;8U)7)XKDtEPP3D&}0A2IB@Kh zJ5n>QdYeASLs0BCPtG^f_wXe#ziA!ZPM1$6%O#MdRaR9>u=T^s0+)R#lC^bD`M4-J z!ETdz26AX>0T37Kni<1F=2(+>;lIFQ0aSrsx4Jfx!)^U&Hb2GZsj7%9oU z7{3|r^pQBB`7Evr%M?4;#-Ku7S|CcQ zQu<`I$Q*UoRdZCU0L|rG$#$?uKR&v0cFpLRfn2ckx^khoiNk7)%L#YHgfo{0!fvjH&EuO8n;r%T}eD^V;w)B?3X{2w#9#;`(`5S@|fd0={A*?me z0fD(n)XGJ~Cgt^q=otX57hW8QQf7%m@6&Jzr0j@rk-IgE6Bqal`|kf z8}Jpr{O(uWp5LNnfsWEnZCZtdRgoq>b|nTidS)luXpwD&snidd&b4h|C=*g`L*Hf8 zV+3<#hF)B*u99*7#L40;59k^TQ1arRT-J3_&4H^rpU_u;d+Xl_jNk7W$h-;QAMRAz z$Ox+9w2Mr#3#n&gfUHe8uLzWqGOEdTUz>UEs54Zf44fB;77d8?1)jfWp_#C?TJnV; zL!W8Yns`KFu!T(uodUbaf7lTi69n_pnF|09Foy2&M6|5a0?H+`t&y?ywlMMJurJ`l zUg$m8elsP!LOh3uWaGOes>&pfaYgG^kS01I-OxSml?{H9>7&4K2iaso{@mg2vQn$J ze*fok7cZ1^=Cc(vgv;4FR6sC&!W;W{y1KTmupAw^==Z1M>Uu5YbwX9WG1cFYXy`>~ z=0x*|w+~=DKz=}~%h3aKIm4dqQ1=2&SEajNML*QB(;7oI$ORwyQIe^4k+PrwKz3>v@Zqwj<11iO95(d|t>iG4(>#P+mk z9U6x2LcU_Z-Kemn{R3DNQmg*zU2Re(u)yshF~&-s8OyuBMERz3qag z9~q)5wBYokGjoYrq%&yyVQaQ??DPyW$I>?KUBA4}ie`$s+*iQA)3~8W-b(K3#BEXi z0?LF+T8&*+b;6Yr{74)95S!Wm_vDinFdWa_pN@xDOuXQV70V9355{%@gaiH5J#e6wKD^26`X#?GO&_Wnyv;cfh{4H@wb7|p?EyafY2X47s zn(7(({9SNv9Sy7=HruJtOjMqrOimIwo=Ed_L{GuyT~T&ky>mwlx}FZIF#7Q%7Zzlg ztcBnTg0MdUNF|+p8jChwWBuV6QBW-O=`_y8>JM1$Gx#)5Nyra7N{S5b1JtCL&JKSZ z+3@i}!`13OdyN@b?fllJGY@JT;3(vH4cdmGGm;L-*hqV}6stS7Q$3KF7B>aqa2A!i zBsIpn6S)u&osgf1W#vL&9sD6nE&Vf^3ynEslFf2xq)99<_<+}IeUy&vVT;eb)+ z8a?D!-$T1~T8Qx#c_S6o2WMsAz_J-h4`7!UYP;~yc{0*KQ8PgTn3r(P859bvr&-y} zf;@w|%k?^OH^Pw&2;)qPoCn`M>~V-OjYO05d(4g_szQ0gH!_ulp{VESS`QJ?T;mcH zMf0_G=8Ip+j1hXGy6mA}-^T}A5pnYi(yhOa9r4{@bOg(jP7liG=z2i18#o@!f7sE; zAV{V~0x6>TqJP0;=f$O~k_nG$)ws7`!M7i4Iw&Ty;%JsTCcV2U;Gk#}bzhnoAWcad zib6qgj-#JF?HaQiCL7V$n1$V+UYW^*44P*Wp6m{c5!rkxwPi;P&n2z;+eteAZig-M zQy3Z@;$*ZE8Je^2Y@+pJ%ju4s0*X?8*NlxorenUaB)>&} zi+&d+#0$Sg*>lEQlkUo!L{_Vj>7ge+uD50tNdxdQOgc`;k1kJzY`{hDXmIaikq$@WuZ92dF4?G7di+ZDuFYBYp0&rr3&p*~|ogF5*=ywb`^)&G+f|@b>ryUK(S{xnn8dbv;_CW_12HugQgTix z`TlKASnOX;EyhW}(w)6aqSHiPR`zPrC}d7nH27hJ8}};Um5Qh{bQKsL$=|eY{B}`i z5w7wHWwDayB+LN{tiP6zy2SoL2e#=4`73YE3Dk~djH`nr$;fF${21qUWgR<;ndh+i zcg+50*n-Orl1A&?^MCxR;P`2@v4*aLcF0O{xN0vR)Yv)BPudt`9gm`jJV8{PSfo$y z#Vrm%wx%)M>E%4NIM#G2KB4LTU0h+JV!ydGj^99eUq$6CKt6uhF>QkDpi_2m28S6< z5Nb4^R0e_pqts)CEkn$ZP?yIQv}I`_7AZVmp<@sf#4)r>Wx1nHD+IsuXgBIC@qi@# zgZgp6Qx!Tg+-8LKF)6P?*MkSN zy4-hd6%H6#g|av^+^?n$@YHp5G;a`Fm~bxhh#l=6fxm;a8AJ$a^%zRJ2d#V!97s@Z zrfm~5t5Zf5iK~@qf@p*vuYTCE#9L3v_VwL>r1@!G1W-x1z7OxbB?Ib}s`w}$N3uWf zdeG1~(|ZZipz~A-LvtfRA5l4<1=#IL@5z8NH^~7xW_idP=;#w!Rzs#a$m%!ifI`Md z{cohjjq|$Y()bj(YEe4J(c?&kSkLFKf+5b9Ptg2YB@*Q7w`WsCRbzvgk?g=uf{W%3 z=eQ#qGQD>(0YOHD`b9P(3Ko(G4m6O{wRRnpQr4r9!y4_3B+$*A#KCiS5xw+^id-frVahy7b z8rj>+rhdb{aw^md?xHVItQ?IGs^0wTuWjDO(bOYqL@X9uHg_;RySI(cU9LBwmm!rh zEGhYhFOl#MJFdW)RL=$w4^h0-o#kXdcEPDPGzw#6!$6uJdurW#p4-WWlC4Bb9KLcG z6^(AigL$a`b8mTbP!T4%Rn~2VSX~ZXd5o8CJtcHR^hmi{Nl@Eto9CyG?}(d|iaY6B z2*C?uAv~4-yJz|5)J!&@N87{_({TiuHzq%t5PM>0#EZ(Nf84E_NygFiJQ-gBt6}jm zg_kIrEHe-00ZvUtMPTuAleNG(1c{xWJ3mS4F2QYZns|Q=RqU zeKXp&%XMjsaPu9YEj2Pvhwo0(D$!h!h$Qb{c`BS;zb8ERC`E~a+Zr4-^8j7a6Wjyg zz1r$N@-ryoI2*u(p-j>qnPHAEv^$V2BQC9bIy^nCT}`LruGXEO8vC(=%P*?QscvJF zU9IJ@j0t=AtRdw&cda-Qy{V68ahWYRc)d9@!i+zz@hF)N1yP6WgvNg3_ZFu;|F9#_ zFL}*~or-2qDuvhL1>3J;HmJ|9eJzLQD=G1Eru|&F%6^r4-Hx~umW#1^EK&p+X=sWj z==^G4`gQBm@x79^t@VKdz;Su;c2G135%GzoF#c;vpn;lqG2C4`*OD5z7v5i^^d8Hb z%0+flmzZp`SZgZ>*BplaBbejN@~l%w7@-qGv!hQvOviG8J5PkKHoCU?2;0f)L9!&? z`dlAQzNX@Dy5StF{}*0%XeLj#Rhe6MR+Z7eeiaeCjnOu&^%eruElvB#&xuws!iQ0@9E`cTXb}NWaH)MeIV$0YFa zCnq!X(g*+dq0=+aM+=r|W>b!7ZPy{RqlkVmepBit7{UYclTRS$7YZKuLs^f%bMkh% zHLlk0rH|jSK!+dVzR&OOf?qW;;?gE;N&1NQh{Y3ht|-C`u3%_FTAD#~lOy}+9e0$h zi*IlyXGp(OSM9w_Z{el)wkk!!(wT>5V}6OctOO(ZUE{k87vcS|BMh={~*t(-&}LJng+^?L31z<)nL<4QW-IA)0&L;%i()u7tyvjJKzK?J*eUS62%DNp;uXC96#!LRd z7oK6)ssr)3eiI0L)Lkb}^8H~)0YIueg^wy{RKpAy8E**7GG$J~T5zK8y{4Chx|*lx z5s<0}!+;}JH04gda^r$>X3nFwQk&hKWFyF$;=?s?j>P0f!+)?+>F`9ENmBSVbqa{L zJd~@_ZKMUv6|qPi#^9ds(`*a=i%f2rn^a>-hsOIG8n5KaMm_G68&uiv3mtufycxue z7rdN@Ln%ZegWbl%#ZWJ&5V19y_B;9IGb%B&SR1VSAn&RUnA#zFeAolX3}aUQpZ5oq z+<%^rrHg#Akd?(`NgC4GQEI;^UWGyEo(!iRD5F*(>Th%3Q6u?+hmf1Fee`Zy7Xjw* z%x5r0aI`pGaJNRx=S*^tU1%DHX)OvAd!HV0Od0_fWU@%;dXHU8BPE|MIzYAJVnlf$ zy4_XWyv8DvmwQou-3v5sXx3#taU0Gm1J@R1$WgyUO0O;gaFQNoparM>IYUCDL%A-Q z(GlWBWN9g%nMY~Mgo!{UajaI56iI85Q03O{4?CKT?lVWRq~=$8B_TtRv*V9JJc(Pb zQ$}IF+YR#5&Jff4&R3RtP^a<8^pRxZwq)uTVY4H#|JAceV~(=s7R3e`T^#S&vy%^` zgU&lG7dX=-qr1DestfCA9(01ZULJ5u041EEd+=KuT7yXc8xO7g!e88?8(k$92#=WO zLd5z{g;Xr2o6}WPHh+sk7Ac>Mo(K`dCTpOW)iWPdWC~<;^Lkzzk<8_Dx~vANUG@=2 zbm$T%!B4~=cJ%V5gE-%1VC|Pk-q_1RkF6-kR!=TS;dmL%N!~BKxY!rU6#*u zf@*J6xwcXdrkpC{fs6ouoX5gk_-D(j5IQZ6wfYLYYdQ35lxZR(EO;lTX`UnDCEzan z(feA7JwgDEM6ZIsQ98!LjAH+fD0* zk`o|o!cEvVj2=wq8wP6iEmQ$c$5r@}022rfy}+bj#rdnZE!aod8x`47VncNJE`1A} z8I(H~hPLQ!{#=+)bGMRkAFF2h!_)59VWysRe%JW7VEDnZ*PTG-iDY2 z+WcWWF zz~X{{tbhUl0DwJEtp5KwWeyGbeJkTnv;9E`9rxV>yyJJ@LJkW%Fv3umEkg)_nJb1m z+zcPakNv`RR+%iNPS-=@2NjHEq)2$Es!+HS=F`4hxwaqlJ7Lr8ub6-JC6$5(a`K}S z?M4|%tu!}ys!>onu?dm{sOMav>%9J?J#rB6@@*A*tbwnAJrbU$ltcJ8W*3-t$&0}z8BAR{L$&FadfYn8NbHv4mL#xr=*VHYd==2 z`LEnF@t3aV1wbAef7sC)-tRxv{=nbCzgJho0ZlA0r0AK(>rEq9s}}QS zoew+>FR{xBUV<&H0S-yvg9qn@`n!~0>E`?uv7*W8-*y1jxhkYtqX!dwzY-Q zyD)Gq3yO#2jP#QoPk8C1Y5IC-?9>Jj$9Z=~nUt?nH-Cwx*q0IZ!;X;`n&A&L<*MxB zt}2J}>xo|wDTzX_G>zNy*vhJKqh1KWy;eaJ0N72ALXksX;m{<*pPtj^?a7)^{ZfEm zm;ivzcMG2nK5hVXD`cwBpD*G>Ymu0On;8JusH~+7j-$4kT>Xik?&9XJO|J)xGyp&v zq2?i;G8O{x2?(E0ywI}6xcqU=SA{c`3gn&{h^(|lJ0m7@~)rv z3J>3O@yc&CYw$w8%9(XA3X+%~cFa9(AP0l7Tn5&@%IMXa#KE|KOTh47OYr@@gMas| zA&e?v1kA(ZgV2&B`sn!bb6KBGsj1V7oxSIh+n-?!QZ($jaH-%zDgt_(KVz`!f}bN- zc$b5m6|;ZLx`d;KIrQyb^co`B$uv(vAVX>GT^FYlfmg5;CM-F4D8g&^`Lhpd*SG*ke zm2`3dZ6K&AE=L%^{hz-Ezkf@?L5&17;83SPgTS4tJ0H+z_J{RI=TxnTu6~5u_|&9{ z<(EiyR`Wz1kR{5}VTM}8$6RlQsRc_P48tLdeh!jET(I3; z!~GzJCvYSSmZedJl>$&0!+T@ zxciH=x($=jk<(2ErHk-mDq*5z9%GZ?UU zd7SV?R>_$c4?~BMx-RkNbgTyQt4}#=3^M@G@z3zBz+!j7VmHlnQ#m2P07i@_EmMGL zDM#;jeA+TzeXXn-b56l$6G=lsuI4S=|{-Jdvdi1P>fcyEN{jPa;v4!ljs z2k5|_T29CQiI$=ONNM2q-AejPbl^EUBJTf|fUf($UPyj7KTDv-0vTRp7%ng+a9phu zrJua7)qXEisHSS(>VLGIyHU#5tn&pdF&>jcZ*Ytr@9$4ku=VC3i~^* zX0%E&NRQKHc?GPuR84oO=MkmcrL?Z_T|A|*csR5Ol#I3Z`|qCco;8Ci8>e*uv1gsd5-Z^x`u5F{cj$>r30Kh}8zMgResm8&MC$33lEi~P z`y}~`H*EqZK`erD`+s$1<;8&7%ram74Ih;tPRICM9ngb)cBB|9u|TW_m}Jo{qE04hLz5hXqX4ev+uwEZjhP{| zcePf^@@)Nd8(CQ9u#3$=@6F)GgRG;*AD)>5^R+*nGJL2uwDJ7?Qq$Y}TWe&!4i|`( z1*k1=AwV`Ug+2*Tv|yz_gE^f?G<`Sd_IjC{1r-OKRw$!00FXPVwF(i4z_VVr`g*uG z=)3WFg{QH>7~=Pm^*s3N)?(2EB!QlOG>PLbc@}fA%9({0+#}q%t-GJ+QVi z_AX{J@3P)t)Wx2rE27=yl^bqTMIT;yt$>-qCgy>T4y?a^r6x>=v;Wks^NV^hNIRzO zLc##b_*gqK-h|Yp4Ht@zF~gbM!cXsk1!NUge!>A3Xwg}0qDCe7Hd>xh4|6WPo@7!Z zCaR)CDx8{_jEvm!+$;^%31CF;=USu=$wKdB7!CM4;kci=i*yPf)LT)H$ z?UGQ#GJZV`5>rm!!x9n(Tx?BwDR+r*O>sz&Jn4*;r3$xX8NmBP;4;5|y}_m-PJUy| z&pr|W+d4(d+z#7;cRG!RVh)SvgQ1?`a@;VUVoA+LrD{=nYmwn(_LuT`O*%14r@QwB z`Zw*z{L{xFGg-6;X28!52Ke8{{-}H6a@~baQ7MkSERmf{J3&3MMXjKR0$!oHwQNyn z&n04NXvYh}T@08PFgKa0)3?rE08#>1=oP;%|I6w_RkXn*fH{7?*?GA)-W)SW1)IO2 zF&UO#JttV0nmJ9#u@k5g9wI{Et-HIx+&#&6J+JMD9jBs(2tNs9ec-&nwuoNZ->x@j1j-m^d-52@l658ks5bb+{5!aF1{*2Fm&){ z=eeSVC(&i8wpUJ0JXez06cDOpOGmE74Wx%Gg4Hb|!L#lOiE&KDK z8P~pGJ0Mi#Vhu&|+~#8P#mVCU1GvB$gh{osvthQf_>kF7?2%WUM9DD*W&rN=slIR( z%Bv2+dwPViEdYVNH@Iyv=YMGNZ-qj*O2olMLC_e8(I+^mR@hBV@@( z#zqk;c7Ix2kLw;l!`3W+@Bc=1X~@7-VGOJJUL$P9*TXCvuFpW; zpBDg#r&tJkd80=xM_tLuG3W6_6~>H(@zRIYD5ZL#u=2UNH98M_63YV(&HJA0xQO4j zoP_&Y+nh%20mW$yR{yLI#nfSxst;e)&S?Zl1l~OGK!Pccm$iJ7uJX2b_-qNk68N4(zj@EF#EZ z5t^XaEm;A!0f&z&vddZXr+&X#}4%nN4LtR+`%gf-AHOUsS?Al|-z8(4hT9a@5^Ib54L#tqf?qow@P8iK4v_)YNc zy}2Tlm{c4FaH%rZyTolrwjYGp^swXY*`E9EhaC~Ch)AwpUx{s`Js^p$on)B_kRnCU zw<~*PI723`x;QH+?3D1YNDSM553X>V5_aW5zcwby-3!@dYPiD9*9-f+C5+{pR&nioMw@xPP zX(*1i&g{SZ8Kg72;g=vn$bmxRg&5DKr~ynL2FlMXQ4237?-LfO%~%r&(sew{RFWxJz*}&$ zQ_?DB;r0x=M^5kpw7Tq4Escd(*sqpI7gccDl0*mE69JLcpUUwV($fu`Qaf$p$hf8- zk$tByWA%;k7G&7nobO-@^Dh?yC7n7SKw(I<1#An!rU^Bgsgqy>`ratyeRs;@MBJPO z2D?J1ZD{H)@$H12^YO(ta!k$nirSAYUgm`|DF8r}TGP?a#Fj<8IhAzT0|g&_jQ-_B z2dO@2RLAmy&uCXqm^|!DnOFE3OwQODbP!A&siJmi4EDozp<%b=0 z$zj$)lf!G!{7KQ_^De0VVpl~|{&oIBP|sl=%pr?QRh%Q4i2F(xv6tEX8hMbJ0yDF0 z|7wFe`i0eWCI?%Ajv_->(xYg0^EZggpFfM__$S+J@lE;|eK#<(RB=|Eo>>Q7)XG`Y z^)byP$wWcWyr?D(pV#&p)X%Q@t_TNcD6z2n$bQg>NRypu%Z)pmHY+c_FkxN3seOdC zDXDHi0}1WrXA9#vp3eu3qJH4k>0F+FLVB8hW*h)$RT17=9Vm>A2-ln2qDCUyr)_f( zW|^P`jo%H$2_Az!0OU60r6h8ne-sM>t4XLOoK^tw>qcTk+ZaqYn-KgCvxvU>HDbCZGAyVVMetK>_j&ya6;BL~173y&JL64uq1IhT_9ljIbq8*!(JWe%lwOZ5fsRS0HKDxd^ z1!LDcm7Ke(E6bycA!E@=66=aJo5rh(I`?~%r?Tvazu`EL3gFP`GxirAu^Nj4GQ2PzS+~MJ zV%Or%RvzW-x{VwJCz!i=A?`gH6ls%ff&M1r(pWSj!8icy~LxNB?cMd9s}sdnjW0X;(u(&z1b!x${_ku z&+ya&JfUqVi5Q+Bu`+b`$GhKShiTom{Q6L>l^eA*6CITnSMvNCcnD=wB*U~Bo~L}1 zFD);fJRx<3688E-YEA)(wK2_}xCMsIt_<&r5|oE4i6^;X5HwE4=9eSbQ75cAUJ0#@ zg0{4h%>yZ>IreeW_x3=FD8|_!SHMw5MgS)!oD;>YL0mDQvlJT;ppnK$sTxw+{y%Rg z*6u2ypc^LhT4op+k)I{#3o}wAJ5hXQthN8qoNkaLmdvY*wh^2Dy!rzR7P~bHq4p-r z?^ef7Fx2;V`=)ptVY0yAx3ygXhJ^9L58#LOfvd&?CzyxLPEx z1Jw`VUjPr$%P@q=1k{pueVx zf79JDCiVR~gC#hxuL}ue>v7EM@do0|J*|a~c2A*J9P_8#!y$~@q8kkjeet=xO-*uC zk^2P>__wnTv7?pgD+u#a9KuOV1fDmfUCj~HztTYpj>cL>8E80Kyvlq{Cs0hxWSd=| z)xv`}XqGcmU4qWLMHa}xCE_APy$vES=6+3Yk92%;D9nsXq)E@%Huk@>UYRr_mRxbb6(E{5g zI!}hH%z~U1!;95v&5sjZo}IKRPM$@eL!tuu2Sw}O!m8~AAAk}uK9Gq#pACx7km4bz1)pH_!d31tnaqSLIPR}P;1(`WXVzBo!b#j@EoPB1e%Nsrrv{d7oJf3r zr3ntgv*X@)TOHMz@J!OHh!EIxvOL-99_Sa!`eT%qo(LZ$aZL9IVfpzVvY36#fc|=e z;zj`ZNJaST>L}{;N#Sz5#9d|-WNugZ+~0`x+Qw~4qGY+GI>9PyJzcZd26L@x_$*o8Zx9~ zRUtX6-2Kk8?@kBg{c{lxpG!Y>MABE5&mL+A-)~5p$-l}-6VaiR$cUL$7KWM*05w9n#w3A1 z?D$M*Yyy;Njza~Slj)XFHfT`UW+k=>z#rW%Seq(;1JN`Ht`=A(i{t(d8w0+x^HY;H zA2Q1gn)BJSMD952U=)CnpuAz}0=E+N5t?kA?|b8TO(BDspmI06rZ1x+CFR0IX(vLE zx(}SH04(BDoTEw+CB3Qv0jO17tFa0Be4%VuwefWF8UTh_7>MNeQ%ifdu5{&C;3vPf z2?PM3Vd^~1$FFP-Xf^8=s-*y$@13SD96xv%x-R{&BN&^B0$57ON^pumUOlawVpKro z2lD&cu-8eW80Ah+A&VmvYG2G0hX#3h4CrPz5(=N}h*hazM`5PW#!!x{&}p}f@E}S* zG@zsW5yJwFTWl2ng+y0|OBJgnf45G!*8}fxB6#WkOCS;*+zIx?)vSN<51e#cWnpR6 z(PSQ*Q$jEsKqU_-BNwI@5r!t{QHK>Oy0Quq(gX2cr70<=pm%PE=_wq)i-ogy!a>J3 zZhPE#F(Eu&=fn>?qHamQn@88g-TovnP6S_e-}W%bMNln$PCY2A5=Esi6>puuP@pEZ z!Q|(Wze8?=CuCU~XD=gJ`GURDI$!xJ3Ch^c$lv4N2Mf?fHym!zDR6Ub)XZDB-xU+a zmc7uBt$qm|@=#}HWS{h^d=|=j6zNvl2^|s`+oGsaqj59xp(<*TvUuytgEiP|6w{_; zwaB<}UrVJj@pdJ27T+{OB2nMOA3;Lb(rIq383>+@^vkwOL>q`X#y{*xIu~1r!)jYC z&|v*62qh;{;``K-FTk#5Z4H#%drFYiNVmUv((@?J2SF`0l$>8MR@i%rV>Igh@SqBf z-Lof8XpKUt;na}N6%+@s29`$eBpMMxHdA2GhacP#pl)6f8iItO1DrQq{t= zN4ANO6yBTcdUQ1U3TTBPBMGMt{IDZ`O8KSQZ?OyUBa`M+cq1<*t6hwwSGCkpA7$>& z(5A)^eLj1EEFG?i#~?)gKD^q!?E03hHJp~ z=_`e<3yq;-A&Ku)+_mW1HqiDggU$uQ?*1p{aGww#pe)QN(?4V`!QdL7PNSC)C?e7*#ex3XfTJf9%-_~GeXR(a!pV0 zYR#4g;7W*kC+=vO1+=425=g#xc2S+bbRk<*^%l{RtZ>J|--nW%`7NZj4baNJ%C0Do z8w(jEBD=%CXSIwagF^o*nCL6_Ibe}W*9D>|X&?V%N8LArdk@sw55~NBS}U}=GpK4P zFs5I1Ouzj8BZAvD#g!QH0ozPy1CG#akSiOx+_aTO%4$QWFYCW@)^ys`{l^6X+D_|* zD9Qu8%)ekl58XJGh%f=_;7lRo1XI?MB6_tomw=GAD-@ROCkGFnu~UgS&KT zYa48THV(KUyu`Q=sS%O$W(Vf{Ys616P>v3&2xl$aD35XGXw|`QAk0e9{tLZ@Y~A`; zY-}V~)Z30^v-*b}tq$4wP@Gd9QA(?cTeq+ zb-VXPs=e2mV@%DilABAK z5ln+>qY^zf#dKM#LjC%!N0fD}y9SAx3CJsWe3N9tyCuQ-QoEDfUwtlON8S>-n+ssO zKhkBaET`#FD2NJ6rW~Owv?_;?coeJ8;Qr~1p0sh(7Vn3aG6F^bV~u3Pi(2l!V=pa! z2oIYS%G^w!4>9C0t)R`0`Ak`at+h@i{DJ~J*a4e}_td!BElJhl%RoCe8GO*e*H93M zy-%`%EL~|h`+gN{ugXm-)u5L9vo7!L7Vl>udtray7+=;F{hP{7X;2tO_ zr5A(M3jqTkX==rB)NeM|R7yjXNpq{;v`fRKmmO23LztB%n^?%gC`WMj08C&M?# zHe`bQ=rNNH&nPy; zh`rgA)G%QnNB)t0F&>q&|0nz9(h&?6h6^c;6%G&cBWPn6!ALSoK*0AK)YJAzde9;W z(2lFS*c-?3?PBxYjao!Son#4#!v zB}h1@RjYW259$T+xlRJLu&alNNpZEg5g}tZYPoJ0D&_BcmtGCggDpR5>9~ls|JUgI zcc@?r0h`aA4~#86U3WqZm{@)5Dlvlp{1V!gO7S#<6BB`kU1zrcXV>>S{;pMpke}$U z2U9`_9k%CN&&hXDpG$M!@8Coa=4JFgb^XCG2^9jM9S_2d`Ff?Md@BTpJMPD#m`?8P zLT))DA2{z&)n{6J7()k3+OQpX**uj_!{I4W(X1JbZZ9Yp?~8q=0<}=tBGQJ8F$QYn zBja2O_~ryFp2ai#1UkM#`x~V%7cuuO#%~NxZj;b;L@Ea-Nyzqeitx zK|LmIr0?8V_6q~@lYtlYgYJ%UozOI?v6AdO-EN=EZjj$Xk!1REihT?7P^La!<4B1E z!s4ZbF+birgg4NRKdvz4ir|~JVXC|-`Lg7u9;#GYapp&a?=4S_5ASB>j3eg|F!aL8 zQh-&1)loKo>JP=~pCI2Dy3;vIX5PQ*y!n`ML-%eN`sMn`Eg}wV;mDJYegM zFSKR9z%>MBAAuV4g=7?3yA!?tyE8aZg1$OPb7QSty{Psqt zh1+2`?6=VrBob8p>9z1?^7|E9pq_tsPkD6m5i*hkHd**un>zF+q^-f_=B}_z?{aM> z$wol#w_&?a80R&uCta(K;p>)1RRqJW0&o1AoC%Q}u_m0yM$NO4?+qTj6fq`Kn~F$z z7=2InTrxTrA&7svpvnrA=XHDKe;I$mt-65Zo66Tl2RIx99ntseTFp?%6c z0PRE^AiHWx;#2WP#b`d5-VFJ~ zEpXCJEZAU+g1A`r|4rJE$t1^7!#|ql$!j>`S$_>Xh+FEi<0peCWYkvAl9Gyp@V+y#696J&olJSzS42QdWdqM$e6Zl zYHZ6h(dotWA;xYyN63%>m3_q9@Uj1DeS!?NrBWdHz&)rENWhzp9kl>ovwBi#+45WhsyE9bL*=JKO=bJ@9h8}HK^(oB0SJS*|ll> z61mW4_H&y~i~=Vq%xjuv10UDoXJWBhzt~VG76lhG+lGf}1={-(ewy83A6BR)st@SEcFw=x=4*Bf zs&hARUMfN4iLD+pc9a)fgsazQBLMAaDIql0ordRmi~k~036a2eO}p)`4sO}HwALBE z@m!`hL@mgst&Oco>tOTKr;0&iQrcZfwx5RK)n$pv2wmA=;s$0PGWCpgU)$1$jQO_} zk-6$VW}0&q)*j{-9IK`i@wufQ%UaL;ql*jtu>r+lQfNFTf3m;#L!BNJ&KOON`Slgq zeJJ3AJ3gUKYFUbCi_Uf1IbF7D$x+FOdn0l8S{AMI<6Cheyi8ndaV0^GPYtM?m7b4U zfOhl|9oye~x!TYX$O)`-r zDfh%7pj4coSa=aJ>S7_!Vuo-MadENgyp;k?(V7?IEGoB~44X#lI^4ehY|K1!$u$Q$ zEDGzDZ+iR5h>+iM=`dWh1-rH)ydfEELTzkL3|jYg(VvWL!irU)b|F-fLb|=9#@1;o zLpdk?44}8|h&eS-vz}nF+s?KbrTVGg>H(65Ja8}wv}2$f=Z%BUx8_)#_4-?Sm@t4> zJ_RDmX&44RD&Az#kDXS2vk9<;ab<&kozn5g>Cb;RR3PpvcQG87eGjXMg(%Kil=LTy zj9s{wyipkm$2fmB=og4P6FfOv`>(q!>Ns=pEMmRXn5Rqe8X7ph^EsfeEUHK@7oT=p zln_~WXd+%(@hr1`>&wJ;l4PgX75z<}C%;=X5(%M_ZU@kyiW3EI_H$|%Z7q-E+r1#Q z>g#g;NvF&-cl_^+19L{R(=NRW2+hR}N!hFOna$-Xugv8&G zlu3fzi!R`90w;G$WMgOwibaEqHMFBD@9kK%jvsLZVZ6Jx(0`7fUO<0}BS&O0NSy)zhhqML@o@Iun2^3*ALUTlvH-rrX9lkrA-8z z`}jTvj!VS`)Kn7txuZ;Z@G>*lqbbxxY|wZJ0+HfI3z3RB9OhOt868NvrE4lsGJew= z5fm_VjYi$UBm^)=*rcfYi0}C+KTUo&1DGHBRsW zwRa~Nq+8vuY#2L&2nlev_a6;8**@&fBX2&Y!m?k}sdQ|IHxcc^!{>uD{-#W$9SgtK zp4Ck0LgwQ2A=KerY7a*cb8uFMVkETysT;Eq$$O#^!^H5#?jy(ef3MGY!>cWZ z2JGYadQo*cp;>{|5ze;J#08H<^kT<@5&}L=nxtfCzJiNFB1c)kyKIZBXN))3T zp#-()#cBea0C;YAFBN-F5l{9!$%o6u{2g7gbW^oN&MJZ9K!j%cGbG=sq^0uq2Nz@$ z3(b1(L77#r|ISkJsx_b~n9{P)Zr;5F3I#zY^923RexD)P8FN7MkQuY-5R{LXlKTGO{AIutPf?bt3M4|=-qV( z0vXF0i05T0B&xt)-<~wrPGj^-Z|Y&@M$#XB%g|##XC&tS<%xmYe2d^gYK zvO>c%yY_dty&2uLWtib*oE!X5BT_qjF2qmm*|6lDT+IqPuU`0e`}w%Q%IH~YsbRpl z@)cZ+<+9*G%`nE+gRdytv*a{kg`n1q!%$qQa3y`&4j1pt;`px3(CGK`o*wK0J+^PU zoZ+FQ#`h#%vYLy6K}TjOm@PS@HE7!21{x35@3SQ6MSxM$QR{vzAnmK{vvBKBx5(~* zU;9lm@Nd+m>s;V0lzA|eS&uZ(PB4af*dE5b#Qu1xUkI&7R_@1?@kH}d)gbw32F?Jcz&lv#!V}$skTwEQ60(yr)?&lK{{%5_}YaMsHtuQDIqY(CtJT_!~Id9yNQxq_{ja&MQ z3v6ZzU&XSEIKLP%M@0mn#fQ01=qs&+`3ZQ8OiEkY7|`YNAZRlXG6)cM3YlT!&@JaH zyouV`x6M@_D0un_ehQxNeUAHK+J=S1RB?AM$rM{v`pBQ`5dbo-o z+@=~-gNRCtYKNX$&fAxH<60dPj9=v%-%LpL-|q~OT}VE$dBeUJRce_BS-e=A5XUqD zrjNnAD*PN5YKdL6o{Da|{4rV(O})FjrcFI35~8j<>vNaa+UaQ+A2*lvQ2f7^h)VFP z$&AqRdAFE`lpgvr7{V5gu;kpgg~fhzgUjL#OzpZoR_=rob-uGqMN+`k8du?{rgtS{ zTV|RdR29k0I~W7qnM_8>$6I@jV&sf)wMA%)GBqp?l%mu7*a5p$>wv>AhOCKqY7`R4 zqm!i{!aeLaKs#}FmSl!4Kyln45 z@-KzIKawp)p_vM?|6mKZ_iBdUsEkQx2;*NG0Y}+%NjUB8H%V_^vXaGxI~oYyeXTC3 zrd)~qD_&zUVh`3s3MYW0Vpcgphae8i^X&1DH}aEHYW9G4(-9eCw}5!THqRDUy+p6G z=ys~aX8)K1`AWVxxb+-x@A`q49x;N~Vmu|LA%}HaXN*G=CY=9vHK6Q-{Yv?|v^N{~ z@qo)t^)!uge+f^DPu~{@&=mEJsU(k(*CUOwZMW4Xi;w0=2C(Y7wIndA;4#;{j zts6#bn6qxbDTq4BlgxFZKRRZ-VXl3SoLJaQ3xL)Z$4cpsn18}WLy0TE!R9soqEAe@ zRx!$~vJyVm#`65YEtZcw^NI4Lz0#j){8Yia9A^k8u#?-mN-DS#&fm(cjd7@RZO_*F zUC(mX-z-{J5;-w$6!wF`(d@rxU{oSUGzVu7$DDstwjlE9oNyguj!1RK)tUKD{>J4l z%B=0niX!+2;1&pFjahJ*Cih!^@#|1UcA8>Cz^?()ZR0%Hyzqvs8Xf*7*Q_WU#JnNH zE;46l9W@h-ITxEgK~5VMEm@A;YU1e{lN7P zXO02zWY0?Cq=(24IumTY32mp4+5O>~BY(K4Upt>%-21@YN+XEJjb8^CwqU;;d7v-$ zxj~hem1hxmY{cwvEAAI##XU}QYMRtB2(`B)2VPYXUw7JuzH6` z)MY+couaG7FWqHzu2+jl0JEU0A;`&Cbn3*o(vS!fG_#zb3mIAN(5KLu-r0z_RM~PW z@C&F*6zS0o$PSp=VBG{@HYHyG-w$T<@AKFcaG}jXjkA33j-TX^j;@Y+p6u@|`J{RD zb~u#Ur$`-pR-heYo}iag`Ax%w)~M8)?g$!zxs`O3p2NAs9d6U7Qk!nw28CLcYRJ#C z%RuhbLI(###?g-AiIcqLrsnimpg0ccV_Zl7F!}Kx_eOk~h1#kS*&>6N^)*(5P?lc> zJ5K=^Kb>uybH(v4Gdp~Tk>^%R+N#{ZutKml!zP_^&!5!1-(RhP8(sPo9kbZr50v_@ zR;Ft?&n>Sk1~-2=zeEv&Vq65OF1R-jj5Uc0opNh29pnTJ9W0O znL@_ba}m#a2V-e%4_+i9;sh&|mi%Yp;8hAn{&Lc+#AQW#|ADdMck#UcaYEbn8{&0^Q)?NEr$b*=(c{ zQu}Ln%1It@8tgJ^AD2mJ3z9zPH#IT7u6J65N0bB;NWrO|b$gnpcsAwRcOBKG_Ol9i zE3_y&Oa~{H9Nt)~Uyx`!uwnW&FkK6UI0x~su%2Vv(E}-ko*&*LMD!eI`eq;5Vkp5t zJ9c}b7l|vHvijLRMbODVL~^yes@;PZnbj{ly@!y2krN?!cb{F9=7CQS_}1&)%lA6o*Kqz8PPPkKbC z-q#tFG-PM>9<|AW4C@MIzASbU%>Gcd1F(Fv%KtX`lGcGA7B5XjYA%Z?lDcMFLvAw5zJUK4-j(c+JY?xXY?F}wuYas2;oChL0l{9&U$A!^g|gtOp* zO&iLKxI)RAgw{wsH($4&h1Fl@lt@%fHE$gY+BdOqLNX|*9|9xW2sXW4H0@rL@YU8S&9w4F44 zZzid050R0h`rm&OZWwY~z+ZyA))N(+XOw&`%K1}-svp0Vb5;sc2o6@IgQrP4@J4U%YFc$N zQM0HPB^0|naN2$sH{zQhc*4pl`ExXp8KyjsQsS7n^&YZ<4&J^(H~{TE&I>SYgfWoSS$~i%=g#9MT9SKLH>z1dl9s7FQyV;@NN>ptG6U7<%i6 zAf4HSud&;MSgTb@fcuB5A+wWtpdH_g1}9bGK_j=r3f}mqTFu`?6v92P^I41vWaA|> z`MnS2E(`d`F9n#>HtOnQ8!msS+!YiTg^^dD&{I;H*rF<3j|h?MT5Nl`Ulr&p_2O(* z3?e4+ZC>-Pn+ zouC29s)6L$rsI;u*!>*Ql7wViTmr=?7z&>6Xjf@X_B%m&$pLN%trP0-5a|Ub>d)3&lOHU(A^nh}G=XT;CQNKuA%AJ-5oU$AcpI)!+D{eKo;Xvl)dnehJT8h#WJr!(;fJ^L3hMOC zWoz%slH7}j;oLW6hq#i>`~KS!u4m-wiDvP74lsKQLP#83JU!>Tgdsh=d?0RAx#sdq zalDb;SNAGslrFNy(M@0cC6Qox$XTtJI2Sf%TyoYHFf!^d=7l`y@mI~Nspc30XC(QT zZiP?kDi$6mO(VJXbDAKng-Sqcm>XLbd0|4Xof)Uj&bTd`)4S>pCkz~Yu4{m}hpJea zj8#wh!sFuO4J3HvcNhi6w6f&@KfS7@KEvOcpi+Iodp|qYr2?VBI-}jl3LBs5H!$&v zw=B6&C#|PH1!h1y(d=Ki_pU`_EW&mI^xy$ z$d<;m+lrv7Oake`34XNu>Yd4W(5Dzv6{T6e6@lez?ITbAo7JpAM7hYo4~abRK{!Wk zTMZ(?Uo{VuoBa|>y8iCpM-D557fAtOrQm|?#imR0+H*g(Yf zq2a{^d8=}Rlf^Qk{Un_9-u~{e*r^zBI6!ymS2IAf&n-akD<=lMvBFrxv)5gM)F4~y*&H!E$-glxH|4GnBPc}%Aw@J-)-M?H;C7IHIqtPd7Vf{v z$b6wa5P)Nk+G`6XlvL)2#VEvo*|uT4@;O$dEIQY{F@9@bC_M2E%%vi9MKc&^guEHb z_~!r;1;*0x4MO5^5WEWpk>MEafp(M)%g9Gy;fo9H5O#wlr)vlwccT0q>r7w}vt!JD&=ZD6;_4Xv|*z!9Sh?1WPNAePj=cf1u4lbDSyF zvYT74e2g2^L=_6U3{JniJSm0&KV;Qk%i-Q{+WI3MmY+TDg;@kgsPba+R{T?vXyh4z zc2xUWEiGX)QBfC+(Mj&@YyJ?yi(?~c=hdweENDGUSieRE%4(yfm_6_mrBIrD3$Uaz zJm?P_B|;Fl;)WHhVH4KZCq=vP)+yBh7XqeAL<;x0JS+S~eCx#LDq#yKFjv2`U@x;R zox;vxRSGc3;*Ta0(JYIFuc&!jnij(Bc@mh5^qIDOtIPK^M=OPR$Kd(jUC4glW840< zfioFfnPj{*PurAjqMxW+B6m*Z5^$a3=gR!n zP%H7lhA_2{UIp6GVYzQTIf+pe$qT|4I?8BXB8EVb(r^zrs$z}m4+)WN$;uOtH#QYp zh+seYcVIHp`up15yRptp%r0O#O^){fPd+{nwczR^O*h)PA^gI1{7y=3+4|vgWza#( zX|mpEFpS_KH?-KsCcplq_FE6qzYvCWz!?p18+iV-af_dTD6@!?su86qcPn$oWHW4g z8Y)q!{nt-D^+6+nyy@r@Zq-rStsVWLS^25BjjafWuhk+f=K`p?1==y#ew*1-$JjBE zHFkdkEX966TZGW+%fBnneH|;QD@_L|rh!9QaeiTgW4rI~d0NN#9Z!+EKs$3|NdEhX zHlML|)mIlQkx2q&SM7jPw29SsqV6jKNJ~;&K@s5M=0kY~Za(+XC=aT)t)_B!_@(-x zm7=_M6-LPR@|pqI!DHt+?i6*$yZiS=KSr0-J^E*Mg!Y_c8RWTzmh{?DFe}5|D$IXZ zgM}JWk=B90!edXzA|!Pcq-u--?U=s@zqwRox}6;(eyMfe@J}^nLf-M4<+_~(Fpekr zh=YjS$}K_XMhvZhk)!MZ^sf|EFEBiU&e(@}l1`d`54jB~a7-!Mc|%{?{rJfi`hc@v z^`^tg6!@7NQoD*H`J>JtH~_yF=K?NaMRO2cfMTmXRbhuDH83toApU*(O8)0oQ2T@a z#-zi<$gl3z8<()(IbVGnP+^qd4rloB3hY`-cJgIhHRp50)nwJZ(vj6Y@A=05E7kHq zJJ!Bzs7P9g!lmUTAqV9e?g#i+nx@aM1=pa1NLsTn1J+jqInyOp&7}O@&#tY9jSL!t z$Q#k`#^~$L`@H@7k4NCGtO7D z3R=6|87yr>I&N`RZO4cyJOj4OZ7$`qpIj$Hb**T^$0QzQ!)QC0In*6?O))>}X+Ykl zA#S8`t?jK{O7HJOuTcnX&V8ch=udFBhD$=C4@ZG^?EbRyKdE!~JiH;A)U#g7&apC> zwWXD8y|5LR0_e1dD_{3S9PAFv34~E`FQ?dWxh_VUA0`a{cxT(gaUqbcfJc z+PnIyu9OKFZY2pE5&vBM{DA2P6G!UGttmMMQ_0~+xfSL4%!cbM$Ht>yhvG5kk9Oi5 zME!F*nZsjPP;7wGW)wTSm-q)WQr$9l;f%B zjD#kLTwV>x{jYNrM<8%4xeZoS@DId=QlkPUx}J@6qDEDzEu0PCq&wJ`2ROHc&zeAK zx;Ot)q_mX!5FbT*?TrfMJD}T?Hb`qVy1D(SmZ(&8deE;;YiREv3#7hW@-M3h$GAue z^-uelBvm%JKUIW%R-wqJqOjP%bacJqoF@z?*F6Vao*KBnLeo_n4Jv#Q{=ybow+<`d zVkS-NeYm>0Xym>4srR`@#`C!VME+jM#V*1fiCz4WI`=LCP0Q{a4+PqAr|SIX>8?EA zI=ckQe}+w1%h#{R?XMQ6knP|efdph(jbu@neRUO%Af-F9@*}_|J)86g=Ry}M&)!Oy z;!{?_Ep}z!K!E-Z6E@C)6l9aJLxnTPeY##6?Feft9@F6X=k`n}Ge5Y6KZdr|<%XY6 zp5NT~2+{#|!W=RW!rHSQ-hWDXDOvjUzQ_}9x_c>#sWJbkr+;<6S(_CE$NQ8)34;}> z&?0=5m}7VC!=~(U07tk}M97R$2(;rlzLX(H9w1arx9O#18g+-D$hQR>;6KZ`^Gk>( z{lkb4ZAZ)u#CYXb!4KIWiYX!uAfnc1Hug zwkG`wVX3FO^-w~n4iTb+Mx5!U(g?Aapj1g=6~#-!6Z`r(qx_t|pS#Q*mY(ON%AP3z zwBvV>P|P;J`0*Q+F6T{X!|2u%0?!%>U(n#<)D9*R-=(M0CX$+(X-&nHSJjbpD#Cwc zodGXE`BIWnJTh>TvVUQTmELx~FlS=I>28BcDP9_}*4%yA4poFPKQVy=Y;%Vznsu7NDM z^5x9*ns=J%skEa|AyeLtf1T)elf0Hg9##>{z8L5-CnNCLNuTx+Xz>87@3p~M{FudPzu|NG=8paId8Ci*|X5ih1uk zw-4)I@Hk?ovko>*SL|d0>p#SRix%=iCm*lWqGSwnpjwb=UpCQCwyDI)giB`=|C#fv zj!N{UStd`|7~Xc&v!%+wDI(AMpQOOu+mlW}&(CYcH>iF%6#6Xgu#23aA(KR61&3Sj zs*_m`3e^3Y2AFiOe%j)4?Yl*5pq*GgRq-NC2j5$&nazK&Lpi%+h_^qoky3YhHP}*B zQY`kF=yC7AX3WxnWRYI!G}MWtyc^ff{ShAcqnLq|6Epx*Og zib>UZGxBswDJz7ye$?~X^Gh`!=Y#rscljARqv)`RCm4|;*jD*Lc3d%NDadw#N<&Cc z<9rw^Lg4yHS`-Q+?&+F3Vx)BDLiG_k)uA)>MQ+E~y>?y;^PZQ4kD5a&`hl!;unK5L zX~c}Nt=VcJrT8h{o9l>^RO=8cJXdJea?YWS!9S{LxuFYXZzQ1DG+4g z+cqT35!sSQFiQ}&8#0L(%{|;)Vh7ej@GXg;4QNMIZiPpH<@ErlRIzbM+@sjQ%-a8^ zCphcW>UfE>Y0BfnM_%)E0+?VGhOsSNcO4O2E!6tf-pj~=rjt*20*JXm8ap{U z3PnZRq3~2A9Rq|qJ`*>%ZzlC|Bn{Aq3Oqg zfn+J9zqYqqF@q?YOQ}C8!4a>sd8EA64q=cBPR}M_S!a=W4KZg3r=k3=?mg8h*;|%b z(5$r&m-0UW+R=Qey2&AR1_W=QQI*`|EEYhOV63VBD662n2d-i1&hKM&s}!G+e86Lf zuuPl&WMY8*lQ5@b?xh;NFWZ@e<3zv3@>`qd2PxpQAo-?G9A$v^bi5l1cocn&r4lr+vV=r?ZFy*R1}6iuH#oDC*dcN)@HKe8cJ_S zR9#v0N%)X>T-fg+D6h-RjT(WK;E=!F^7yC~x+}NNi^U}~DDq4|J9@sLlsJd2oG%#b z#59_0U=t}r6~ERsa9L*43-xy<3q@GMj{=ru_zNnv$}gqDJj6$?g=K zmfJM8Vgrm?GRz0h%Vcluc>OEe5$%i#NS=i~C@6U(cNX#nw64f8k_7Ncn#UJlQz*!? zGq7S35M$`A>tjp9wi6)2CwxP*P^+S^t?ZS0r2z9s7qhiCH&Sx3DidMT8+tzMDJ*PS2I79CuE=-`b0moXCGURNdW@m(V)W!d~1L~9_XU3NC;amfs&PaCZQY%-uVzPTHPW-64_JuSD4{GEca>%ML@Cg{@b_t?Lmw#B=rE9iFZ`L zu^BMv23KwR?t&9qlu+pO{N`|)M&sdC8kacxnC`cdOyiT=2rX{WD$^2cQxH$G8o+^ z1kta4^-|iVGLeG=FSA8rVl?!v=Q{p7PHb)hXvd1%ea1xCUb&id&WFxA6pM_UDU|6B zTzKG#5HAUzm4LR7DM>f088(#QI=ik+V&LLdF+vqCRgP+_MziS%64}GYW*5-ILbWRT zBe$EY*Or*qO5=0;7ygqhyTl{@&kC`UpXZZSfbTyo={J=4+%jWwlsX4D9RcS94u{QZ zN_NrSohq}Mmct0Wz%}i~ha@QmOEEs|Q?Qo5H9R8?*J4V>r+DygXo*$ZF=xT~*AwRq zz4Nmm0=WNWRj{A^ooY`0AyhU&7jz&WmT1fC*-$?tsQdw~=W7k&dTSYcehXNe3Ege> zg@q}wE5SNF5747II1J`fiC}U8^KR6m9a0!eP{KF9DW>e~VeM{RstdQ-CY*wNzAgGT zB)hk42v*^@N{q@462>=}#L%KNsrLXBfBfC3oMLf#F~*fW(&mVd>f9_ELKpUWXb`Zr zRVdy?IF1}PCJsB6gQ}C?vCrEI0Sw!Q%(OV#1mB#heAEh~(VhbBIDhwU$LAJ&_$h~% z`vZ)=butXV!9A&L&jNFwk+6al76ogwja8x@XM&J36^H@MQ+@*Zg_z=w0tK1L5Z4h- z0!ml$uU_bPi*_G60o!EFn-ptS86{69uX=RDCD@-y*vgF)wFl6`WzM1*&#(qFfZ%&s zdJ@wOh=)|ad2Zb4F(omqH!zxU)S}HsyT#ncm6YpLx`P$!@MIK?^rsaP$VxKeZOu>Q z{b79lY09zCDH3UzX@;(|-#|Mq=ybIJO{a5)1!1#F1>RdcNs&|WfM72+0`SJ~WqBEX zN4ZRZQ6Obq?>!Wz7hYYeMqp7dN_Mg%7I9VIUKBDflG`)P#T)am=jTfHtd8cMvN?t| zXU8&0?%&lv=!>|AI3g|nf5Rhq4Ih&y%q>b=X)53j+x{-wj`4tca!!xlM1?B3R3W}p zcZbrOuVdUFr`I|~$B${E^#a(5#8TKWH?nPm1`BtC%G_9t2s+TNkJn)5f{^TBfp$Ez zxIqU2vm?ay(5=*opTaSQjGK97jcO>xE#J~vya8#ibi+&QG+yAl`$T1&eT!)Zf7*Yk z8qpm>RA4*k&26Z5N!Dx)4Fr;z)q|##kmLi@&jNcBz(YXFW6$BTd7g5RxAI9U&)_6^ z=6DYHxSWVVM$kN5gWhSItquAyn9MS?Gj4^p@Y{0 zx=MoJv04W$I=y^6jkZ0jVQUA3LZTNZgD^jVc6=qI5=q}2D0#rs>^I{f_UmhN~+GW(?=NE8N=HY<#LI zfvShEd*z+mGexxd_UcAHsrB*)1$)1JBXE*{ML}aYpmQOT{P>9-UR*Yu(%4+Kf15x; z2Vl`Kbtuu(&WlfHvTV+rJp=*b`Qc2rLLim>%cGH`Fp}ba2nX6zSNhAip4B~UO6-hYPM{KYoHEsw0KOlAFmI&;ED2p&X_mP5!6*t zYdvWIGfq)O!%pWfxNyg;XY^kKz15&S7XHL@dODMY1zEJ7GHOM{wLsMyM9Hp$IsG?QfxQ4CSMaESh(Y6Z3`Vzb_eiGg>cK*^4$n83N z_K*$~;UewoL*T+jzUMCjm?+-NzCQiD0XyZkZ~s*O$Pb;=Z_It7uLI3`?;kY!Ar{Ti zyUF*R^Po`Y`0v2X*Zvg})ECEHpc*w>tgZ*RM>;0q+W5Zvv*boKgRb6pc2HLEc*KhD z`2M%8Q&2qxed~--_5K_p&`uN#eWzMxPHH9leS?>IW*pt#t92)9H~&#EyMi4sqHWdV z->pmgR&nD$lO+OxcqW^?gH_1M%SzIcw%CGSPj+NI0ansxxlWqiOT2nI_G@)j8UK0i z2Up7)f8LzD>mUdFYJ<6~*TQv@V|%#T!3N7U7?bF}@k2!ey-s1$t}6F3mP-Vvo(ezh zpKie7$QD0`fSbiaBRGNx#r#v+7B$sbK9rczT8e@Y&Eu=BbM7w{-?gDcO8yJIZ4(>2}dnbn;)KR${> z(`CHX$x#TAMYDY{O%e|5l!Au~_)r+L$pY;t9IvZ4Fg*?D;I~8o2qyL-1;M*%L-8Me zh8BtmBo*~qTWXcv*X&2w)iwRwZOL}X9#LtP@qvGlWlnxjq#TsF;st4;2BAWSNYqxX zw-*?D&ZKLIS#*N&~QTdI&16SS^ zHq?e&%O~C_2Hn7je+{T=PB*ple>haftSNkGSQ-T(p@t>YY(}%qylNJJK{B*mwt8a0Qv>YV!n75!Eyq=%pbw4+f?igBLBl$I8(x%-j7 zAF-y)y}ogFR;wx(l_aju@a?EJv(?;gtxESjoVS$=aFaG_G;vcMar3wMHyIMuoeN?_ z|AJBIdkxePIG}L7m{gJ)aenvK&qqf8=hP+Hn4&UxJ3gj}E~uC&B><{X2w=jtKr&6g3A- z@m_4TABs@!%$zp`Vz?U6&hGjD)Jex{L*g-tH3rhqT7!Up`*OAsoomXj8h)yAK??2)tcjzaa`m zfz7`^(7jI{Ux!Fkgy_bQ!LJxA7mb-GeThMhs`H#DaM&w+io7n#scH;Hli&F)k-i0P zC+WEMC9hkM+sY&Vw5HHUhtr{nD^p_EMfi6yGlVTC?#fXHo(HlizAGX!%Q?*_CT=(x z{go;xMez z$mfOx{TX?H!ZXP8bL^yEV$Cv~u()Er?RWRY1k_4L+QenF)B3l1)kj8wGXJgQ5l?<7 z)MO#~VQ)NFPK=(@p{m#)mDI&{Q+lzA-RnncoTS#ie~Yk3NxU?S{B%_o^#G-GC#BrX=2oW?UI0#78k#gf0u&mtN>!GLxwYqz=n544jc$G*&g++Kz# z#~?hs;emJB`ALVOWR z-%{Z@qHaVykvb}-cbXQ=eQ!byzaL20EnItda?GcNBy-O7UaNy z4qByCxv0&0ta~EVuAMCoenLfAJ88e7L_Tu(8|G=j{nE6un|ikl6XAq&c#~wtfcx1E zTgalSl}El2GL3UfpdDM&_mK|KhjW#QELS6Qt4ak2!5ZU0V1V#%MumgyqnUal;ELFd zag^smV7<>pZaWB3bSv(k?^D^=DK%@}1LIU!mL^493yjf_M{raTW69bm6S=wSce3bw zc|LkE7T`{3ILwT%_wwG`cTFO&Q{s`cM{e;p&x_^fsJdV9or>hIVj9&8$?39^ClMrIy+1ycacBWy81R-b z8%Ta*k^k6+IQ=`0=N`%DulChy_6dp+rv`QCo@ZnF8fG2 zI&6j^3V+o24e!c}fq~{M#%fkPZJLoZI8#m^gg+s%G<-Y!yWyl$5&KQZ#MAyCs*rEE z*FCr0;d9WPOw4y{F4$%#MhIry)F%74;fTaGA^&#qgM>aF+e6ESG_amJN+alrD0L|8 z|I19^d7<{|(}~LaQL&F_?g+y01jxe6>g8av%6H5Rx>#O!*?HH;+)c)uvVkmq{aX1s zAjx6pCU8}9g%R8eY6p!FJNm7-jI_BJ`z0J#HuxhrHW5C{@`y;~LrjuYY1FLk1(yDJ zd)OuNo;8V)ndNH|D;3K#0-Rq?6_4^Z9UZIJAsYG6g<@KbLbN2%HDi z1&O3Fg8cJTzKyB+utfv#zMnx5yKau_G@n@(6!}cdtOg6o20h&16%fnW;8)@d2&%|= z+1I1D6s$Y^xeiGd#ZfKFB{eJXh5mqoCxgxQbQf-C?B$5$(NM-O?-a7!k+sr4v!JCi zr|h~@fzt#N4lGz|vv6pb{AUjx{L}Ihjqij>C+tLf0Mvd-xMk9tz|Yi0^^nA+5&vGf z5u=GR*)TNvEh~=)XeU@%e>4HLEbl9t(Bl|E?W2E{xZxqH@Vt^m97ZzEv5729y7SZ6 zhV}h`Lo@*sie$PwDhxkyT60L?{!6@7;aS^QCH!6t)r_|-qelJU+PlV%F@4PRhTsQ^ z7cD*vk1=YIJ?oamc7%;vVzd6Zgq^dtdMc=#`_HDKI@9l& zA;dTpigbDUOgQg+1XC=ag09{);5=3d?HgSw(gE`3+@B9!lP6)y5^Xxze zZ4ZcZ%xod&hy;DUXl>jXdWe32%G(;e3n9bjthdPUsB693gt-)K=suP2 zl{p+^658Ug;U*#r6~sW$M=PZydVfM_CZ06(5_5Y?=R|*)4{ph<(^7k>`1poJAU7E1 zX0`q>|LJi!CUw8eTkE=mz07fJYiU7{I3WW`5+e2({@?v7(P@TGExCa>1q*;!qWbm5m#fxpS>KG3(dFhu zgJXJr)muEAY40EQ^FSW<#0T7G?)FocDh>BW*1r>xKP&Sf*vWFKh$x8~7zSfPe^Uu^ zSao8M?T}T_A~knOf*nm=Lg}nrKhC)zX$kE#08fnjy`=FzJ1K9M;&3mf$-z07RirMo z;$_XQhq$)FR=VrVbA*(LUH_3IUtLAEhc8{nA^qSy9qh+TJJ&l{D}1#dmW;Dil_wkQYfszgi$~9_;xl zsnG@O^A@RBNJO}fJq4CC=<&(?(@ByL-e07*3d=%4M3Dc7vwP}}tc}(N+_CLcY}>YN z+qRwV*tTu6W81dVv5hb9KKaHz-T&YkYgDbO=b87MGs#y{12l+Kf`SiXDujbqY2CX) zVnIlgH)3%xzMrMsu|5p4;}2a1%j9L;w-iZQWo(ctqq9!GPyGd$b-lE8N0=3`!Ai$u z-KEB4xwm#9uVI?=cz9mbKIsPw9&}~8_IsvnIF$8|9Wk*PI1)n*R+iQ}Pb3bjjU_~J zs;j_=d&7kUKK!3k_PKGHQ@C@O&@|te7il@r_;;b&O@XB@^4R{IRI{PI-pE6>>!y@Pk zCtD=3IEgCS83BL3@bL+#^I)-KM3=Hb-JJM5M?x8yXQW_Vh-dRPd{-|iXd$YSVv$3V zZ8*yON$Is?Md*(m2`($*F25T68S?l#8DoF)b(%MND8inWa@y@Y?WGBN7A1$^ zTYc-~(hkcwleDcu12R`{EK8XW;PN{KGiPcHAYDirmUGXBRW*(woz-7GoV8J`xJ>1y)>muIsAsj_hmZS>^|xAT$YE=Cw2tPtX$1{p z9M-kzlj-f;Uit6!)CPfEo59cq=bH&CwpYp96~XHY^Lns08RIeah9h9q+rp8G?D z8tBr(|GOqnvvl7eT(71|{b!=qP|G97jy4TOU0-u?Tb@hqcEmikuNrdC6dr z7M!>-B_$5BCP`Y9cf*Epdl$R*O&i2y-nl{h+ zV@LJoqr^J2Gy+<3AJ@Ux>M6{BJ&!x5vn3l*mO0j)R-(yY?Z(JrLH86V0z8D?8(lCGa=maMd{*X@68G*%3T$v!(rC7 zvDfdYD^&4o*QC65c@u8NYB|!C5iT(F;d=v2cpQH>wL9pv-Ku0%iA5q?v&yH?WOXdz zEn-fKJq9uzzvRb`j%(lv$&OKMv||BFuD&c|;I5Dt;>P*X@n?w$;VKB4mrG4pux~uf z7!6oN+=Xd?G}c{$yHj?HA0;FlXf&40)1c^A>l!EeAD@~Ce&{1VeD^IlZSu7z*OSac zW0T?o-`_OdDACi*a8fCDDM{&=;!2_Hl|)Z+iqDJ6>lbq-7eCED}>M5cW zb(`u?uja>Av(fP0I_|k#&L9;>A4L(*yRMSL_pY(ODpQRXZ0GoZ|NBpX(GfWXf!!M| z1#E5QVlA_;HGY5VY?HCR;F zgpeH|Y$$w6Nt#~={^dZ`Oeq}a9zJpw^Yww1oh(VCMlyIpU{3*9M zhyh3ri0GOsNjbMTQ^fa&_KR2e@9cpo1#W5d2DKe*>$_d2I6JH2StaJrh#Q~ftuerwmHKIRw&ar&oS%QGwKPbwInc!KL=`BBr8O(a|h%qPE3=$#i zUj5%(y8ZY25xQ^}_Gb6Z!H!SHJwFRKZ>F^Qc)49FM_Lx)l3we;7CW5t##QO5(D?68 zg0e1E=H^ePXTljB-B|al1l~v2bt?+NUxHOTVtUA;{fjSoGIw=*^08AD_WrUJ>&=%x zb}as>_1Tzy_nMSZ#fdqL(Uj4uQpk|av><-2+4v~*0}salVz8Oo-z)|v+F2CAE2ee-9Ej7*E`T)(Uz9C(kL(PCF45V&U^S|YmQ7+ zZRr&`Ub)1qS8W)5V5zfAJLuEK1=&*y%rSi_B}>U)DQ;)MRTFzaQ@&d`nc-`a*7Zh( z9%pEGzTY*noxh&kbPE*s3ko66fZXaGQDA2FL;lNlVqbD|Hk_RksLLUaj@P%LfKlxqPNg@XDwA^rysFKR;yQX9B`kPQj7jf@+Ls5 zCllEaI}1IL5*a+Qh?FT3%vUXrur%pGdO?sZsJjIg>Z#WTB^#R^9G%bT{We!h5&}2+ zxde-A--KKp^CqVdzj9X|;{T^7H^kZXEQDnV zSIOi}^joMwgU+z{*dhJ|Kigwgd3M69=buPeQP{-_j4RbC+iM%WhO2Frd8F@<@c^Ux zT=?&`ONzswARkH%-BJP4Rzu zOGVFUa8JNlma=~ApnE&;>VS;Hc3kD`q#k{9m-?eEM`(-!0>|v~(cpKp(6iggm9RHK zedIuV*&SNkXa~banecUsy-Dl{zbhQJIh#|~aq_GmaHHk3I)jk)u)WF^ux7E^6PxC} zON^ccR7tVZ^M!by&v-j?yhwn=G14KaWMKSz?&RjC(Vh})Mk~);I0p=?dj{d;Y5#?P;(5-sJ>m( z;8LNX^v)whQguhs-MYOP)KiSPP7mHwJVFgzxqKyK|QfpPBae0>^yD zhv?cYA|3ydbxM~TQ#qOt1D1lm|6$=;dlv$CV%Uwycta6Fd2gh7<)(qD4|`aR%oxNxqwiKvXHH90Sf@B?#}m zt4FaQI&PX$o+num0mND-ElOa=Q86`=eKF652sa`aYVi~m}y~$Q#y9WUWQ*wymR1Ee$j8j_A%VP z>UC*n9;nyvrT^()?WeY_!i<~}2@z}KWpHtexa4j%^=Pj z(XnKu*zvtaESe=pEzWz1XYh5(uN#7C|A4Za z%yh+a*+nmJ+7;7M5^!3`1`|40eH_dCcCQ!DuKXOP{kO~oajJvxzn*6#OF$i~5`B6Y$I3I!S2`<)P-&1F z*yo<$z&>7Pe!gJ^{R()sKH_iGh#W7MK5p{IvQ)WQnsC`(YTl`7fb^y^6!(r*wt@9m zqmav?;~+$kN!-!LX>=~sp^(b|<}D#Ftz7vVP;ixud4r)|h~Jhg?cVHcFgdmtD9@CK zCT8;}lhoo}{S%z?MYZ-D8nLRZ1ALk*&{ zz_JboJdT-NnVoSZL+Mai!ZsL~lY`s- z*iqm=!9n*$AzuTO1<6Xwx-G;Xv3r?{M5rt>yGO?B>jL$4I`FdOT!UA>cX+hIcafuF zP*oXAiGMAw1Pv1|gyHDS4f-M-mLH*sI!&l)3{{43X_--h+BZW4*)hk!3Qbyx)6?AVk&tf)PsSMsC59 z3rJl$|11hJccyxi;&UBeZ$P>BVJAtD41Td#`; z4xMRIBAQ(1H=S+(rvz;i43bWy{T`h02P2qS$z7tsWYlE~p|qKRWbW}DfyyqiWM&gL zUV0%xjXPn@jxYM88iML`{?JYxL1f-=W&{LCbk;R(6D*uaO$*kf9}l8Un33CMXLfW5 zWf_CXNVK_75&ziHq*^hpRRmp3EZ^H_7H$|@7=n_p7euAY4OL5Dj5cMNLyaq_qlTVu zmj?BY%nm@4K)`qx&(2|~=B8tOfA*F*JDAvA$dKKD`msd^Cmafef(JVCL1oIBhP$80 zzYB)5yt9iR^*t7wG@JX*p8OQ&3@rPd*zQ|Jc!q)q*i?&A;#c zFk3F!>iXsws}TGcBw)QVEV{wI*ZF~LwP z?E$}Dt<0Iy==hUrpU5fr-|wF1^zwmahH%b)FQMG4qd93Q(&<8 zmVTOMriDSvqNP9~p9gNlE`pJITrt)$667Yuub`ttRtU(*R)5;O9|l-ovZ zudcRzTRouK3b}U+B2lIz1K=l}C*ZpDdaGQdmu9+k!n#;c4K9Ykiw1J^tgTzJI{iO( zOo$SS_tesP4+z!cMd=($`4+82)yTg~s)RX}kdM3AcLD*udM8g0=y~+r-k*v?L%fEv z!^)@0Y_P=Mz%dYe`Z{M6e)z~?fU@e)WfdAo;S#6|aIt^-nTc zQO3ugjV$IjTSZak-9;*U5jpwc8^Mm}G&S!%5~}TCK-s@PpOhzpZliGW4xFwJQV?ps zjC?(Q*FdOQfg%foMy-d|LlIj%5X5%4a~xpu|99rY^8I(i+gl3tYuJ5d$$xS!S&P;C zjz&m9IFtbD5dA$>2V;G6ebRAOhs-Tm)xe9AcVzG=V5Jb2RwNKr;}0tsd*TbkEcr>A z0XSSo+@sb$wyhtzk$8oW7w4E`M@gi-5fwE3hLEzKy*ArQc@E^;`q%^3~&4WJdMh=4~omNR2Ha zolB@XUXjR8)4pP9(9YCxZ(le|C;R(7EXwUy#|>L84ZY_6bugm;YVv?kN)Yl)?=W5U zoynkI=O6}}>Ttys=^-Whb?CpGoC5YeXh|nN z8Ke$uKEn+cfbnlt8V*+ZK5{!h*82xa!1+AoR8MjTiw<+T?S_MQ!tsb^ojwK=Qe*pdJGrZfDF;=Vb3xfDj8)NTK0$taBNynR(}3V1kAY%;r#9O(jPv15 zdNrcUb2`n6nEs5dEtNTwsKxR4vEx(@&nMuGIn6L1?2r6Y>>fZc5sb?g&pb?~=T&-; zjJmE@y}7-gfSS?hZgT-KpL+~t!sqgcwa<(dR6D6Ye3Pcd-!GmS<QHAg#J*PkDGO zlp}s`fA3**iy{@xK!ab!`3KonnIUPjI4%lNzo5=Bcnan)UtvD9@XXDTa}^AMN;NJC zBW2cP*$IRktfP9tsfM;Eg|C|d7j4^|t)IcMZ%ayh(>(lm2=2O!<#%bFC&Tnz(TY1| z1N8y=X%U`dyH`d~Oe>%L88P^}wPYy(9!L|s6=TmjK9%g01W;r-_>G@HMlLALeuRLo zewbfzNNv3RUlszt+gO=DY}Eq*L2!b(ES!!2$pZo9Y|YjV?G7g_Cqag|Mo_(O9^85Q zVjyOqnyqbe|O+(o=C3+tzXtM4VAgF}FRqjH(5 zs54;r-G}?fg*p&EWxuZ+XIO2hrNjg;ci!L+U!12+D)QH)05%%+j~%gm+$it^hK_h@ zvE6yEO-&h#b&HXo1nzeFvQIu$b2J%$l6m_Cd_rV!EQHhr8;m076kHqTS$kBK_Y8+! zWG!(gU}4Nd9rR()-WQW?XbCatWNzgagXH`ADl4p39RocHio~%xszDl#^K+|A7iZ^A z3Yh@hXB*Sv=m}F4K38f)2qZ2mZH7QTjbd{-#k*u>i_P`Nj#ONav-iHtO0S6niK#wrD!dLbgbY_LB%2*|!wNpC z=_|@yQQ<<#djy5Ol5dco1Vl!fIQ#iCo!477|K5iNaJ%$)ENi#zmCfp9!n#P;fZ_D+ zfdJGjXnBBzJoXDfVznTMVhvUXAJ0(BjA=QW1b9m~2Wt=Z$I~o=l-rS6->zgxPkJ{K=|D?@e+iHc%bRr9#7VNNf5H1)jtDxfk#x<#hAsnB_A}9h znBpdbcW4WI$q>se`4r+hQ%?KpMIPoCr#=Lj&LbGdK;6n7agznF%ZP_=(_$d|?W3L) zJcLt?#DcWF@giH}mGV=Ad6+gFBClTb^IHIEQ5eWm8Ks-?f@nNwpc&Lcd6y?A}Th7ywEsbH0=w5|5?~ryW+9|R7{Bvj2X?$e0bD2 zIQG1Lgw_NMlAE4BpNe6k7cL;q@3ne4aLU4Oo5oMsklkreY?E71^%c(kr_5PScLu~8 ziXJ1P1l`sK3FG4U2IGWy~s9? z)rIHHr5`J3AY8ooQGmX}friS{6l=_}*DM34Vb`GCSj-2k=vI^0*#Mo0-7>cFal6J5 z)by{eiP$x>q$d3Rk8g%!uZo8KU#jGy>@yQb4489&J8VFv$733bX~UCSC)bHHfHapC z*?WuBXzwDR7i^KvM?iPPZB^`RQsd2V)6B!$& zw*qE{pEoHIsrFS0uOUVbmGj4rj*YJ(^6J8(@s)G0nM#Mk9YB8RN`l<1n3hmjij8@=xu; zpi`8&vI~0fgk+Tbx1-8;;CASKOlBBKA-9+{1>cfQJ)c`ATj{Hgh)NQQxjo(M&)(Z# z7_u+&=~qv>tQF-fZKu}41VH6zXq88QU4U#sW1WKKO?Px9ZmwJp975uBl%ZPo!fygB z4}(ZdR5G}2OmWFA_jHD=2c zOx0J)8@Ps!x9CAM+i5^Yf<{6qtwvTy4PZ^pn|RB8Iy6pne^sdjoCkf#A7KWWjnFUW zi?XtgX?qb`!61|Jq`Rvwk3v$qvMtIBpv9wB|JO%}S+5pkQqQ~_ol;X6d0TqO)&k+o zej@1`lI*q5JGxr92Is7@9Q2WcSIv>S=Rd)Hs|E(>MbTQh6dUE zTSjU3kpvF|oI+A}KOlRTgzwhPWCB8W!C&{+RwMSvmGaPa4kGGQcWT9MX+Ja-*Ny@m zW=`pg7AeUzTs8`A10)P@;UwHwLYro%RFI^oFsfEJ!g6&d7I#t^Bc}8ulsD-q8_y_Z z)-Qf&Sl!g!wjVpz{*C&g-P_X`%kW3s{d9??AqO4Cu95@zxGaO=zeW^`f8UPmH~?2qgU z2+M||S_0BHIj#TpQHWF9zmgfFCziw&8f4K5XF7+(I=unquw~)UxiZZ^7i@WInGbf0 z(OI{}tC$mEnX@1uG%34E#jtD4{lp?=p`Vq{(I$4yT) zv>vXq(b9hZHCb>sGIxzoDo`a=;4nebV}~L%UK*v*4zr4T78m8`%UOTWnVSu>+VhsJ^5_WDw~AgBHI8USXzDS$yw3XvOTE;wwL*2g%j{oxBHhe&8FiE82y5p@ zuG{$NU9CQP5|N=FNUc#JZN?TTnBzTyOM>g@$sQ1uEDgNDd9-jx&))kf9n76p7FS*Q zVRz|>>$@>vJUOrKfne<1aR_HIT?J1$&i)E}ykw^Y!rYfoz}jd3jCh9loRN30PCtI^ zI4`0H&amU@@E{K9r3aCux2%5!XS;n|OgWo+CZU%eVkW z84hv$(SjmG)_2dnZ~kO?qbr%xV7&FOc=U$APAjpOa)B0HbkT3eA3h6S!eb%wAQ>VJ z48Dyr(2p8j5Bxi?*4N=D-XN-%`|IK1+h4UJf_JqzJUI1sTExjVTJ8+HMljmHjMBYS zQ2iUOJrX+pwcF4^#uyEu>;(epLqx3KvJRAV{=YjtT+ufkb7JE7C+$kW9hLy6G;tSM zF~~M!6mRd*`B{Tb5l0|>OVyi%Xc!@&I&Hy?K0!7+RCZ~O{8a3H=!G`Y7C8{rGH^K* zWb`!~k|I8}0hUhU7w;{ni(sy%qzM*Q-U!6zfV zr!tDzGStw{R1?}G_KHZs_$3;zObSuweODoQC|*)`ifoLNjEshTw-Dq-c$CXxbvzT^ zi15b$@JNhMb${%5x|M!Prfjy}h%vpe>p7ekbZvu4A*p4V+$`tN+F$cvXn1iqLZ|J{ z7^%U%eTyMu|2itS%!Y7Qxl;rqb&F9EwN2VJ6I6=*_A+;2iA|iN`@KHfWbA9xC=*NzqcvXa#P)k=E z#fDv8XvX{D3yzwG+voSrI!{LaMN8dKH%u!ZHe#MZdNBf_<+7;_%jTBEAgyXlpL~FAt`r8~2dP~?1TrI?gSM<+KRbd> zj!!#|32FZ)mdu~Y@u0^hGvD7{ySdUrblMhsca<%!=NpM!E})NKaKcl!hnji^lqM8C zj**!Spt^wN-TA_$s{dV~e+TyTV@KSXM+qSkwhesq$~6?_1iA&DNBvR zQOtCMI-+C1Q+Nec&U^)!{p`r{tC>w(Nem;b9nI1^TcDM+TzD$_nJA{hgn5-0#B*FS zu-DfYy&OQB<9oX5V`6y7pG{!C!-P_w_g<{X>}mA?hnErogMh`h?yyii(RFuYU{s}= z$jusHae@FV>}16SB5g>i$J)ZjKy|%%y%d*oxWhFXMq*gh=qwa;K9l64?HA*XJZ|`7 zM{04=x9kgXhd*InYCCyIr5Zpy@}BzL6R?ZAN$&M0VBkEm?I-_}utWYl&7SGz%+tHe zW))XS55x}qFw6BD+#h2oMgG~BSk88lJu6i6R1t&X?<~T&su_Q7=(ARG8s3Qdw)v^) zbA58U%qa>O`Tlpj9-eDFYrhZU7aHjoVol`gR)x)QBZa@&*dE#Gi5`nO#(t0}hRO2-Mp!|F_uj^tn$CKn>A6HM~4HPR~ z6wC8cJQW;Cr+1jqo34BD0(+6XJt~08-_eAUqwuGq>6im+w0D5R7?8_~UeRJCo}fv2 zaujkT&!7wdF#cr7ng7d>yIBA44EYA-Plmi}>;GrSfpS4beiGzX<`%cV2r;Y_;t(Ay zt4`_+tHFfMRdB4l`oxBD^BW!80+U9#i;wUm%HFis%z&xX{nThm}hbITGB}F=#u%|fo2}<(VVtzR9RvW3p zTmF|Q<=NI&RT|%igtSI}Sq|_^jD$?{;BG>iOfP2YO(*tfok^5ObUX-P_A!_KPlPE* zmbH0;ustjGVc6%Cx^l}wRlTpxy@&_jA9gmX(k_+U8j!Q3jgZnVJNMs(b$;#)0{tU5;;0C+E4$)RQ{pPZ}+ zepa$B)eQvB(p&K;Fire{Kt-APP{Uy`)^CB5da&E_NVOp*el(L8+kr}T>K#fW43s#EO$h;S?!=Q>WCpp!(@P@)+N$FL zVO+;g<+qC<`J;d|XqwAgCa*1Beq_s?HLFBuzUQyL-S+|O`%>;GG~a$YGB z;}ei>|GCcn8ns(4N@3Vh!5sy4>7%y#k0K3{p~7^F$|*)-iQ9EdMnh5y@N;|D;-_^2g@rky$hiB(G(6P(*`K4QJ65H|R92 zMLa4i%ar7x8&&ayFI{1;@&LSaFBCqj|^M+&J3`hkRXB8%H(um3F8oT<+qTp1! z8R3LIuV);sCdY+6fFbmQLJ>rd)C4v2$BxCnq}_m7?N%pcxN0G?9aTi0p+!GGu3t0P zaB{`i?%md=C#f~x^X(y%_{%`AJpwWbpskur&eG^x5p|X;SnYW_gIc zBt7zHh{%&Q(g`r=qV}_tnY_h|(jC@;ck^m8Vpm3Oe7c($MzEaG8b~QyM!~`*SJs=@ z1OFp&{SPHoyp@FIqDsJB;M&3x&yBv9?U0S^3h&IKO%l6T&>u+(9cZX7piw9V0BbHfNdx?e82eSi$t z5>9CX(DaN!x{zPkHO3eHC4}BEck$+Z7^9>t@0V=XTlNfi{5Op|EyOfC1bdWELaOH~ z_so3}gRF13NaiI@*{bXj*!XJqb0A+C4<^-Z#c(shpnRL!Ha4GD zk`%D*rq1E{w7jCdOOjLKW}-J*J7ic7ArIToAb*$?ut+KH{+EGvVyWFulD8x2KV!qL zYTJyg2)nP-a>-LCY<7P9njk~*@Xt52BjN*kY`qmfeF#-zvQc@`DQy6d@ zc#P*$sj@K6kEn2cA1hq@?&-StqSq3pOZro`$6qv4Ca%l9!g%(( z9-wL=Mc(Vh>Myhnh4p~egCk&C?XHaK}daoQKUsI5qd`0G1Z2GAULd`J) zc8Scofr}2;_y9H{K7~QMKAts&!a{=eW5*+<#RL&=Z%KN%t&|*wmNWy7d-@rUhA?vu z7o{6mSjYy;d7dq*_!oj$5&l((x2AMldi)R$#(ob z@}58So?4Ps3zK0DvqklIm4AkZwBYo>FdY)CAlOGJ^XG?MPaC=GJSxQ0J1V;=LxTC& z_>2;fR+SBqRB-~8LK7+`c29F$Sk9J1fsPk+0d7>>;RZDx#aVwuM-%D(ZBy4E73j0t zUU*{v*zs-g=akKi+Y=gDbf3JiQgLBQD?R>H^kUgoZ0BJKlRccO{mBSZns5#~xqM96 zo%kCo-cthlsQ6nTsvRo13^FOPcZ{boIzeYd&YvTK_G_NqreG>sC(?v}>Wnm(up~cv zL#9$;p>d>JK)%Vrh)}`;d@?khs!(`o+mM{5YYQ!m_Ax*_WeH%HA%56zt$YxS^XD_a z=*Wei2}2>5Jy7kVk__}@o=q_ugdf!ZJ)DJB#4^9JRe0{ljySDkBHr~oS15=p=KEO_ zznam=FDwLk77ZuCPG<{6kz>p{e1q!5F@(_0R~yeBUe;QJnC&IC!_~aXbjHaNL3j*w zu$_E5=$J0cz<}X5D4L*jcCxNpZK-F<1Rl5i+N~|S6nt#u# z<2HLp)5Bc+o7F>n3@4SF{6KgB7nedF-tNb40Rdj}vUPdI1XXjw1gj3n!KsSLoa#(c zLi63U!(Pr{BJxF^vH#xhNGj*dawV^U&+qw@*v~s)(-95DIZVN|XlzRo{&{U(8C!W1 z(Rm_4hyu#>K9Ciyh^|#22pmg+#=hwRwVTFPxpv9U{+065U4!>rM;)GtPbYLP zpXmE3u%9{#&MG%-Y^L16h(-I*gA;-8pO88YB#;@zU60m$@nWQ=g4lJnG^TmE_IL>yS?ogf8mUsXTmGxR0w%;_ zx$1CZ*!=QHe+|ChM<|R#qa%2zfWSGUSc<8s_xo|)X91~u!gsLgV;zEX>W+-dE;OGx zS((@gh%u#>%vCTz+_ewSZbwr9Vjr~e9Zp<^>L(L>!1?2TWgsrw4-n@?zeWS!jrVWo zoI!p4*iko2u`OfGaELvOAetWWj&80;u(g5lLc=>k{sB}`1frkl3bk&^(6%*qep!qt ztT)u4+F8!Wa{c8znU@GV@UH{!7l z@zE-S6^@2kb&1(>d+mrtGn0*YA@&{uK(uIX(m7>a!E|wYn(3*sS8}GkuB-tu)1snA zEXL$e{q+K5$~GLmsQZhY2ux~g$j>_OnEt?Y{hK=!FZ?n>^;2$}#qVL2kH{X3HPrZX*cB+?_7W7m&Z zAXb0^hF8U~)P31J3c-&Zo%IpUu63FZQxebGAzD>dJgW3*P4*X<2K(Q3x-KK(r|%d2 z>-!HQ4Rz8?cz3c)sbx*8*hcf9aRbRqXki&mRwx>jFN!_T5>!AzZO{dmjgrx(ysj4a zR)k|nEVs!VLE|v^FwzseQgiQf3n@*|I~|{5Y;uISU~6#)?-(b~$a%9-PtRtZd;20i zQ%S7dN9rddyCaiWZ4)!03GN<6zOCvR!rX)bdMU$lSGQi`_|w6{Kie#f|7r&qql`Fw zx98Q3DJpTLljBX2<>&FbAvzXA9V;*Mh-_O52q5w!C8q7=kpf*-co#*T&q5d=@%KWz z^N|jZNNe(W~uzui+e~#s{t# zPUbegDRffMNHb9oEMX$#ttXjaWI0lbe(ac{kq|~vya0vrj$uA34DZZp@U*MuD`8F% zFdLwi_UP#uL#Q|uo$Jq7tBpm&h?qi9dB7<)Uvz5_=(rh@J$3$^lEUHD_8)#jFjz9k@qG8(oJwZ8uGmyxt+oGER5u5!c zZ3qI~q3N&fY6H?YdJ%6mV6wOL6t1#7kvn`;UT2L-n#-dF9;QoTRGW*o z0yfW-`;lL+pod_eapzyD#;K)K-4h^GbJoQ92~aeEB3fkA>Zhn8*WCg}(EhGYAl|Q| zN$4FG%zJf0gXaMZDr$k%*2 z$Y7CA1Jkk{rmfLX{ILVNSz;JtRbI5$+e+`iOi7#+!P>$)yc52f<0GcIzPBE!Z+xrg z3*1cr2ykvG1Ee2xhlFV@aVmiuW=lnmi~1~uV?tkgp}eQ_Qkt?;vG;$rTpUrR^FSFU zp6086p$=6o_YMsC8B{-95`6*aj6xfh!-~aOG_U@>GH}n3Bh=J4nQfaTD<^Blf94>> zEx9UUx)~s|<^e5p8)MNww&_7AFUQ0@`K-~TS4Y<~L5L;A0$G_`N~gc0nDE2PAF%*7ypDa$h*hP!$uHDt-6xXU7y86@{oYfEGZf;EHQ%B3J$SO%wy_6uN$#AFFmUeI;8y#%!R;kWmClap*(pxb8UF} z%{w|XJlp9g$?8!U2bWg3PH$S>?9Mcnh}D2Z^P)697se~8B>0Sy63}npHT{!rOuI>5 zp0@(hn5LowO!^BjP%#ms=*E?1?_#>&SrF+!NZqk(i4!R zO0{|IqsFKn=E(0a=U~l!z!YZFBnJ+ZND8rIKFq7~^^5Y^O*5Z zYTX9~*8SU`L|eVcl^Bnb4DUMQstanXu4wc-L9vSdIO@FkB*5#5`h5|A*!wzV`r};t zsHLaGqTwg4l?<^C*n~OA=C0;1PLXeIn9}khLG8Xj8+x$Oi!VmJ2i&{SI{^D=nOwEX zAo!bDbKJNo#uz62JaQr6kmdSHwH6`H)O6i!wl6 zV^9o-VkhytlQxNHa-W#n$Jc@zW9Y8w-1Lk;m3_{it^v@B7>YhB?5E=8cc84YV7;Jx zO~2tQxs$&~NG$>}P=sd-i!B-pQ!=WABy0`Bi3t&_Pmn&}03zdSY$Mkcr_{~mpSfhF zUr97}#Y>vvThN!K=p`T(xvJ&s8s*U{(EJE1q+{Z&lKsTdVA0X!6SzG;cBH-xc=o}r zod-d3kE7EDmeAZToe{{C*C}H)H>n`PxawNwwdYUWI{AHo)4REseshlQ0fXBZSEfg4 z5EC^>)5|%<(B+`6ZV^Flqv+$QuF))au^!2IS%D=ZWU&H~E9_y%&npdoEx23CHX_tX zZvs*b6cUp?7ixXHnEMH2s4|$Y{g{--l1uwLKCVchQZ5YHv&IRmtN(=9<_?P}BOe+z z^1Ur;zTc*VP3*at@rGIprGD?a=fBzk@;R4lt?Y-3Y09}1(|)QehjZ^ce$xEAyZb8~u;Hgw ztmUq92kC&Svk>K2yd(`p6pO>&A#Sjk5`#gQ2&QqF2IuzR+*F15=C}yFki=LJUjoL* zH8j%VLHHaW_`gK&r$qOm3}-nH=6A)~SgkEuZJs%m%}*nW(>WT~7yHcKF6z5Vct+uU zq#rv<`fe_4L<7YGBiy|Fas=pki$&7~AvDoEW_`n!P-@b|fz7z6GKr~08E5d^W2fCj ziJ$oq)WXdx6%ZO()r zii{A0)YCJb)?J+NB$Y$xoErhyP);fm2;^HbJ`5Qs{)UXW1TFHRfN7fl$d+4~d4uT! zGEx6gjIqJ(5u@U%khS1Z!_yRw)bgeP!}8KO16b96d06JP|2U4=^ z(!=TNCZ(yfCOn#4&%Y8K#>erXUOw>6jvo*){Bg@4&f?0abhd+47A+qVTV#pqC70?I zTAY9a{XE6O@rmmQ8yz+dXgJqMaf)j`9DSoyU!;b_-`G}xD8)#GNI-E33>VcaCEFjB z+->Z?pEh}P}U=?zy7wbNG_K=fCnx{Gf9Qu+^5=Bl_ zQVrSZ*(_7(#3R}p$0jU^wS;a@49rw}Ws95z2RD7)T>mw0{tl8N)K_%~Tt(i!G{<0> zR$K8x7g^*QV+;^J=R@N6AKI`}rG+&3$>xvsM?oCAn7bam9LZw>V^ckSDuQuw20Y56IlUxycLwTmhBl5kB? zv$Y1^z@S%_si+{k1_4+f$q+HQ|78p@UR{K2NK8sOI-CyEd83P+PphDacV21adBLSr%}DgEqvzv*8Cpx?%q1QF97 zu@s5>*~*6b60fuk3$?K5>+7NWVpRgZ3Q*qx#^wwyPQI;v1F*BqUnSY)%l!IVd+*gr z`~6CT;<8$I|16B!IPCRz`;Y$}In)o7FP!xiGD~BPS>R^*7QxmS%_!*(jvgUtPjK7+ z*K3X`gA3F_WLwIRh&4%Wys^e@!m128?Pn|*m&g3eDysw7x#~}yCYUA7>>C?ms`sZG z_0eF5=Kd-$6P-$0R~NB7HfsgtA|>105}5Wp`NyfkoCy-tXqbx!n=Ff58(K71iCDm6^R2$1xC~x9GJvWC_}E!EnrJ-+M4C5klD@=w1{kZ=#DXKelT;I$$Op? z{g)Qcs)VFQQ^Ede%fKP2?+?($B>l8&pu~HH(&@i;Oy<%bSjw5dE)?ASsF!oC{AW(S zR@ZeIr4s}=_{#?}@L9DGD$zMI6q4N-7xqL%ja_Hcve%z6aU7KzP7tGDh%g9%h?YP? z-1PoSjKU3M_TTE%QBR;%+`g+XW)kNf_n75Bk@lAJFNo>a_lVNF=LBYHY$p)jlVZ$< zPCD6p6)jNEqOMqoYZ04!r30Y14j(W$F3=E2+Y zXRvcZL}p--j(<=MGh;A(N2*zhj85+YrH8F;H0w&Y>S&~q8=5Dmh%w!W33 zDZo$9i>b{?nno^zB7{uq)^;&>-SvzV6Gpm_T(@&Pu(^KnK&2jZ)M`-U3>KaCyR` z{({`JN$Hi^gSHQp1KjXQzZS?g7DkDjRfpCXswLYareQP0b6^$$kvBMW7SS0@ZGeUT zV?{4X={-6@^SgBxC7qVZe36@@r1J;vVuok6Jj($k$H%I$UOlFmy{XGcPB}vdeLpr4 zD6>>9(cJ^DhCGZTTKbkjZVpXkwsfLmm%E$jn)%m`w_7rx`Y-&{xIPnhP;dIkzfOT5 z?F79(v2S#M?B+2gVP55n3+Eh*_2G5BCIH3UomnFH)P|toVd3AfACu|TE8HY^+r!Tl zc>#q`;;2F5qMyL&Ag=NA)uG?xpCp6}44{9uTKD^z)Vq<*GWD;;c&gE$VwwQY8 z37Y3sYQ|KL$zMCZ48e}e{h51i0f3jyA*jw3z=Nc>+WZlE9N$V~@BMD4u+uYfM15@d z`x<(QOz7$EDZTHgx4+{)&U0UArM`G+VsCD=7bG<#-Zo(MWDW3cSd8tvZshmL(}HD1 z+#g`{e~A?`YL5eEF|FgII`md4Z}Jh$#iH1H9SoG$hC%5VQsHz8?*@h|=H|e`CRqCi zmEoysMB2bkydAKN1Id*748;jmvfbNbx(ptSjz-8rGlE)#OKGz-zjlQ57Cl@j@oG*| zg%k)1V|^{>cSi?-LIZ+YD6WpX$hv>dcQYXn(jnR5S~F^7xS>iZ_^dSXEqk!s>igVC zR_gX5Ndz&|)*DWo0DeF0p!Wpf?Bi&2URL!SvM9^y_!s81*NWde+xG$<-Kmiysmp(N z2m1#f`G0J%LgbBJyzQIcPEom0hW-ZGD zpaAaP(mkij@`Q?juofY)&~s(zvB0b1n~}$aLk1zTm1GEqM_&~>D%(w6vlIRl_fWrf zq*bei6tRhi{%dPRB9_#p@Vo)P9QR@3%4g5*UTw2g1DOpK1ATKpurgQ~an65nLdH>O zjbAcK-54=+JZ`x}l$Ku(h+c;>Dd_lrzSRUTFpf~O z02rhn#kZ*N?Fd;=-{p@Z)P&(^N2l#zTaz%4+&{Mpv^54ceUe;%$)GWP0DUg#C zT+`dpM*~)@>14^+o0$_mklATgeF_VZznBDx$$#z04r5Tv`1i^VZEN+c3aR`WjPjQn zflzpJFKDu8(0j{KzT0e(A6Q5H5sb2)#9J>DdOt`wm~J9@Vbf&WKV0Y>j`stmode&t z%s_E*!haY-j?Yk(9F9D~%3K3~+ZBEs0RATjDL6Y(icqg=PGHX{(St?mpLL=JzWa}IbG zhDTsU`&M@bN{Nz9a6ae3e^PZQm3&U^h2)>tcoWZuFC2_s_aLl08?w-BClI>QygmKe z(RsIqR;BzGDzKT-bNzPD0K8nD56WE3a%5_^)G@kE2)w&~3LOTPU3{CFb2$v#CSii* zM2ioQBHWFiS%Tgs8^LLh>}=mw^yv}2ECwa(!0)55 zExDtgbPWI!GC=}veb z9!nNUav`IOE$iqZ7I|8TWykd*pdcy9zWa-ob^mL}aQ-680w~~?;Bi?rnwJdJHTU=k zOvRWh9g0Qb4M^!I?9wk~Zx`WvpD}+Ra-|RdNWNE2uJ9!3f{$3wK?kYx2keF|0rq{% zy+ePodIJ}fwS_+Djt&_PQAyq09MH(C9pZ34g@hC9=If%!5@qjMRESOw3j+;cUuqVF z2w2b`ilR4i_?;3OYAZX=T{|bsH8$o}B!KXR@D&BZ{_y!XNFqyx+ z@qWm{`jPc5@N363wfw3yd>N{^v{QA8I@S_woK237JP1;o@i;grbx5)yRPwL2K&sJy zBaG?Gz2I`ngi*8h%Ju2vn9ZxRvi9;VrClxuck9I*TlF9{?I!fN&0v38eS~n;CDP#4 zh6JBfu+3AIh@=XKn35veN?)n>2Od|n_QtRDCpnt*P-o}=^xE-2sa7xM-Tcb;%@i6~ z(Y{r@bPpWxEbCyL+%Q%tM(PFym!Zb`D2$|5>wr~;xKlP(*L9lzwPO(sDK#9{^yI{4 z?h9E_KR@VB&^c|hALL=n`-W?8yk+=&8)_%P!KEXGd9GbQZl$8=R>517za@*Dra`Z9 zdFo`^EJ7Z%cb+Y`x$4Paw>r|i}a8Elw z+bmL+RLu(IwF^V~SULTJ)@lD+QGTzq8bm#PJr7&m-4O8TBXqRc(!kpAb=32dq383h zdtG^~B1ThR5d~G>t_j>#=kNJz$96F4iUmx*s{?W!HXeN;qM1!RFV`DsHd@rifj@dB zv9Cs&-dl2m_aRvT?>F$cr!nsQ60yZ|(}7~1r^OTA0DZB>e1tz;KdlQVKksX!qDj*C z5Ui)gg}Z=#18C=_jn_vca90j z2&L<%!5tD(rF{*iGWpqnwzW1nY{xb|--v0NM*(7rmVC&<-Cyw38m1Y(Y3gn)i<(B5Q zlD2dlc--F^IQgHJHT9E#>>3`tbC491%rdDSsb--LosF*TW!%=WAqZmRzZ;FCCv1qC z;!6q*S#QeT)E)845%u@i`$YY-aA``~-4+aE`L*L(>knOOxKs@dEJb;_eZ!N}8Zwz0 z{!ScnS=R6YAiVL}e$Pl{kpwbKDq$0Pua5t=H}4C_?)MA~FJftK$1N@P_@TZBV98E0 z5H(Q@BPkepcg!Ru#SZB>FEp>z_c&D1y3S zZA~=`I0L_BjGF?2N1IC#vYgJBGLbRG*l(#wa&0TU6F>aZJRmtt^{3_8 zDF`Odl!7r_?(4J)F@Vtf)4U<^LKWD`g0jtBB<3%H?i2~2bqc#*JO00JiCr!>_)78T z_M+72B%P7lCj0SPyVp)mz&bDkeqlalsn4?$;5uVjoRwY)V1IFsLLt+>EA|ADR+79H zpj^i%y8celdAYrG{3AiHx$-&4p*?@YOho3Z(CiR6C+WmY7IJy6Vf9yVoFt=s zw(h7U9Q*wS^3EE}Crm`4mjBLo1o3~0V_a&Z#!?1=>h+pZG;?MIi)&`*LvgJON1Ot@ zYXUVw55R;*yoDz;#2PaHxXvD93Q}{B&UqsZ3+9|(ubMV;WGxBW|iuzwckS1MI??!I zraB&iuAdLeFr~9&%G`{jZ0VvRFqw=D`Q3~@%9+L(85xVE1rjm9F$>aMIBIzwV)|%S z;i6pvd07?WXK4obt3&+0pZ|6wP-6{33C0AES1a{iQ-p%Q%O;!Ef=)a{EXcKtxZX%` zjSFPn;=WWn>0?dK7c@b&Xn^o;>+uJZzu0N`|Jspa`HDhmn9z_z#0Jv9%eQ)EB^4a_X{?!oktlzxVKJh^kq=HYY{2E8^%(SHMaq`oiR0^uP!_Yj_6 zG%4UN-j5H#X%-)!H3tiZ7M0d#A(h;%*C=-`BrL6U7oRw z@1O-zhWwWNwIgrAtu*GIcWFLz4XDB&{TWx{Sc-#+u3n%$ewBG=k+RNxJ9J z&O}G+Lyun?k$nObWj^+VNr=J3ZH4VEx>5p4uwO?42*e`i$?xB&l0Mxr{`Rvr!_-~c zcrOlcE7nYnnyhk=lx2m40&2)}*;+G1b#mNzZ@)hZbq6*jRjnbPw7%^Z-TAG4m#pdVd5KlS zrvGGEW8t8BEQHESH66Tl3&gVCgxx*_Q(WUJT$Bz{6I$eSw~L;(WVPv&d8&7r!-1C) z11sufU@o{H>LO8j`XL;-v1veO2-$6b^u9cC=A#A#hIOp6m0RC;7A*loE%Z!js+S6`=tMx4u3Oh15+ReUiOpGuKjj4Bf~*jt!Z$f)V-nZA)8y? z)H?PV(F~g@Rz^vk^J0H1e92~*LA#?FjRFYp2hYU!5GIl#;paC1-@q&3V}1KzOnqGj z7qyER&~Qm0U}0hyoGAQN#g!HsVqgu%f7cz|POZyd?2Wu6xjf4iIx@VnrO4C-*6kjQ zZd~~b+j%ef(aP9RmgtfKBj+L?Lu9AnhF5jgF=rrXvOT%D!#xJOb&^Njz;iKAlK_|_ z`#MGPY%BFW27rH6%ulJ=V@8Q)F^?&j*k!g}pCzTt_;u_~R4o80K59?wB%z()iD=TG zIUMfY7-*Ped5oIWF!x8h;G;C~t&F!Ja`*X;fjcV7=p+V0?Zkz*U&EJ0DB@EE>Bk6y*lCSxS)Gc;aG| zTQ8;>$Qmn$1dY;0hw(A1O3W^^GnNc9IBGv=B*cZz#0L=2e&#QEGlA|k7Vj&dOag_x zWE4nKyo?rEx4m!3N13!}HY1gc7?dKO^IG|RlQ~%eF{0{R+wv>g29WH|1PDYodtUsf zmAT5$Sp(p<9yrB7P zhW!vr->4Oql8tj8)<7TG728wICH~`SHj~lQgY7ub@9Eh#5#XRCM<_)zf8*S>q)_%u zsS3^Lx+xkbVFK?gjAg|eb-CSbn+Y)xL49IwZ%zd&Y0?5Zl=0I zcn@Dq+`DUu(cvHxzC+PLKohMd)ZzyMfnO1|7T6^LAAC9M_yUq^K6JDm7UaLLX{m)- zFuTgOB5GwxTg;_M!Z23_o4~Nofl)2MF*sfHV?=o26*zc#5w#RbMmGFpEj~E>E#ykn z{~H;!JNf{@vIyZK;}b@`N79Ep*S(V*f5CialL&U>jC*illOLiP|JSocfc4jo?YQR3 z>U3={AntO}jW8vbI)^(sBm&!avJw;7s!Tn!L=u{M+E%Q}UVmONJG(`dy6nm0#LXo2 z8hly3flc6*@m?Ol*yaTR?_Z6(apfe{E63)bliwzdVlAtQI9BBPkBFt>3;KJ8DM^$s#({*Y5N_gX*BaYhsQP+cQK9iGG6PMrhD<> z;oqT2o4#tO@_c&p9O}Y^O=g=LB&DCF%?<-)EqLYNy=ffZB^$GcTvp?6U;lI!Y!%Ig zl2gIp<-iPr<4ZxxIm6foSuJD`^9z5LCx+Grrxf{z8mf>GCqOwQ@bJRce>gahvyUMh zduj~-{qx~sY55*aCMZoNhZvi2CssGX`X8b*^4ZlZ^RfObwv{T)C|xPubi*z)(cz?W zSrc?EQ@O}f;Yv;pRkyKV_f`_b(}%4c6jU*PMu1H)qe6?YwK_Dm>_1+TsNka z%_n=>WS<(L1>Q+TqbUh?rW^A)0jm2ScCGoZo7V_XLQ{(a- zi)vMkDwGw^Vsc@dbTS;MZ6gofw5>{|37yaZug<`t10># zxAM?sP3aF)zzK6PtJ9d)xj172SynG3(hB|k2DjFlR(Ey@ou0R!T2DA_N{eRYHd!=a z$z|-~u+a2rM;v(+iNF%Sc6^BVXN}0sJFm`#yU?{*2`$Xq&2=Q>c3t_q)*wIt4lgLK z(>JNa@p*d2#NyH~pOsHIM(O@zr2PgEN@NywG-v#YfQqRs1!hw6-#&lYNpjgjtJMUN zUvpgalEVp2&4l^%qajqnC40!OXwK`+$-z%sD-xOg*~npu$Cqz9_EaNVv=kc4N*8iH zdt#0~@i1+xLb3Z(#Z}Rz=HO-}9UcP0Vl~E{*S*kV)+SM%-OQwvhlCtOJ^$U~KyVTY zg|AG(Q}ci5B#n-uv0JhFGhxz7!lA z(G+MOy%Ya~bmmPX+v&aNGsXE0M!y?KaSJ_h@zdD}p%G^R*0k9n*Rt1EfJ=l}3S18- zveZWFlv&b*bJ-Uuf=FVRl?(iS&)3Zm6#q=aY9_qo$Zppj z+AG$f@r9pTevvYo(#ZR)hXZ2UVj_HH1Ndu4lzAGGH`4)!{6}g9G8g`g?+?u=$jhV$ zD3EM^YNu@K#hSS~=Fk=u_7as~V?VEvsvx7?(rl#vKvG|<9LZQI3&-l4g!AouWE1z~ zM^P6wv3T7EEF1rlN8Qo|0Kh?t)7KYUI%gso!J}^^s`$H~Shu=YZ$L4_zFio(b-v-I z3xUA>Bw@#LDb)~6_xs<5xRVJGb_V+9%(p#`(6DC_V=)OrfL58cb+0eYQfP)M?3s5) zaXi@m%QqoKXCbGdH!L=_aMn7vvFwp%#zMke7cP&Cp|V(F>r~qFQs&O;AUrZ1IjQ*{ zSnYs!ja1FQF^>(hZ@1VEC6G^f;hV2gS#^Ihy7sbi1g0jKQBewCo?Cr&*722pPwVYI zo;gY`1!D8EKWx4~8Mo-gJXUj0BlYm7H$y{FS5swIe@#eg zXGk{2d4?9yn8vDJWhm_&ej^8}W!iQLr`J|hCVeaKIZES9x07WViK>1?=YRaWZFZucTs+hB;*sLVww#bt?W2PY@A<-(| zy|jeE-}?UHzVD`pDhi6>P3b@^S&PmO9r?9Q8EHu&W#uZTmDR}sx2I0pjNRVtvR{&e z`>eTdn6ly;qgb;TNBVP{V%+ff=R3-@$G}WK{hEW0Ld^}34@=#SEEgCvOWcjGP-pxq z%^v(gi_2bdJ{Pp= zjP^|P>DGxG?Y9!CHv^!8m1~3DY~^X(LiUfGL3D4)URNr z?Afmy2@u;F4L49`N_gCw*4a0027myGwm0VBM0R zszNm$L4q)R#i5N*H<-14o)LI-DTJpf6q%{a#^8CXpQX@2R1uszRtnV1Bi1%2;A!$xdH=>jb|4{#krbS41x&;VFGre2bAQ+|GmTLydz7 ziL5~zFQx$UC-|Yt*n-UaP`3u1?Xq1pzxjs-qd1Fg04K$|AW96>ByN`;aQ2-%+eImK za0NE$*N#rwy`BcuvO>TYrq_J_d4SS6m5Xsc5j*Raez)r~ib!EnhJ6ykz*yibX5sE& z0Rox5hvw-SMvYHhPv!eOdM)^Mnvpab{{F&+z?-SNr+&*`O)d5#jQ!j6aw>dN?|mWr zhoFnKE~F}EvzX4F+=@Isnz zpli>}mm&>;7Nr&9Zpa@;!V^C%OC_&;VB#Azps|-QJR$4Xj^PCpw*E-5($v-f%)sm5 z9y&T~uThYh`e$Vdph#3EvOqdu|EEfQVsBjO?^4^i>3vk~G_-s~Z<4YZA~XfGHe$)6 zTBX-ZLkP6iLdBLdah5;@GGBuZK;6=@pxetijm@{1F^rH|RnhM010gMsv%HodMfj6l zr&kyft3E^;hXL&D?&e4zGWtAu7xpM4nGli|aik+g(060CNI7>y2s=f-*`S#gG7|r^ zW@our3@jf~+!2Ly+kbZFzfsNFuw%}E_$=Yn`}*6FN}q9r5o1|R1bdI4Jm zyA?aertl5_t^uq|ao%27k=sZNghIM9ZFeZk=XtCqQXV)FqxxA~#r%v+=#qZ*IWe1* zj7XXKf#kP@;(*r;xCN=}a2re=v|xl)$Y%v@{bl5&r#{4N?~smDMrwp#Q<6F_sZtf6 zH-De#opDHu%jp6#3XoAc=A;>sfyHkrEs5`3n^c({0d-{O<0;fWQLN-ys731}0w%)&h z&yw3r4ACvG)DsTeEt(ZWF#6Xxnv%|`zYAJaym8j)XMX+>Yijby>Lz!@xrQgE;zN00K>Xikh=)>XpxK8IBJ@T&)fQ z;<@wZ*N)Rg&&I#D?~=NFW>8#%Pf0j1v#&2k4mS7Dw`VI8!CzmC41KC3b=J{&lYT+( zUG;Hm>gYVQq+SDifRrsK*)H5BkGV#WUMD#7T` z{PJI?oabd!=W()Q^|H)PNO3`TqFKTS{>#y?9T!*3v_TM?75v7BEG^ed z&@(kblPT51z!>AlmZG)PyVjAog!@`^_%U@hwL*()0Zej{F-db(aOi=ei6F0 zRE_IrEC6NU-{%&E6%3jk+I1$nx!O~VMHW><#_(b}k-NFN2F=2_S9Dt?7QXm!5*svL zwyF#vIduL(fjpEA*XI%7)g%`ZHD#w1rtaHfGW!CpI6PJtXqRVgF>&$%b0r)*s>im{=pUxLXdMr zpS;W>L}t*b?MOi-Bwc5zkF_Srw}Y^nTN&0%AhS>WjW`3zdIhGFtv-5p>}7$Eg_($+ z#Px;Td^v10+J6mCT77(MWNY58%GX1Zdn~iHRoyc0wDsOIrDlN{Nb|@>IvJQVNdZ8J zrWEeC>BLaWw{r6vkHB`iyGT+bnE_C zjq1KU=*Ip9j`*{n+j$(J7L{YkcD_1xZd%ycdunw_zr8!f|0yYE$Qa0!6q~D+4OvuG zHHT4OutL(P5)mR~*-yMY0Ss~_+CIE|>CAM#{Pp94euRo;3UxU5%hB74%hnTu4TkQ^ zHP96NldZE5nm@&^`ixZW&>kn-q9_ul+(>rygDnY`OHR%2WR|!(Jzb z+XNQNxsd5mtkDjSsv3&h%j3>kF_4ZgSp0~xT<5%#50vXkBF!S+wI0(a7dqQAlwx3) zHuuE|qm0YX#>NH|Nmk3zE2*<)6qv=0tP?gqEc&$WIKQ#Dj|`yFF(P7wkz9>CP1L@N z=+!HK?TEUYy?;gY1*pvw2^T0^rFrH(13Cx7lHj9Atyj-Vwhj55Nt1dAsg9ely5A#r zxuR86F!b`9FRm^D9B{F!0%Y!U_SM!nBBd!&dC$fq^~&+HOFX{RO>i~9?dDn+R`e=( z4=e<<`17|LTov6i1ikSisj^Nwe|lerSeZ=WqWk;ds=*gWs1mzK%1Xpw7D z4*0aClI{9L2ZZcbH_zxFtuKLr4QRcFv{R#i$}o^%e0H;27Cgv@g0TlcG<+${vDzJ1 zJYe&VO@jU$6g$T`AIz)M5D%#66=Qbma9Sloe@*rv9e*Q@@}3?|!sz%EtxTSXR+SB+ zKivQYtQYBr^vbRUSG9_#k>r$8_i$&+|yW1MJa*e?ubXB<7p|4N!Sou?KE*PSl%(=EU%K(37x8S9R1rOX{);gN=>@kZ@%20Vnsm;Yc%-djCn_z8}T-JOT!fW z7QT&O-h~};g#Ib$$$gwl!4U;de$92yg#_U7P0W*WxdMOyVG!}?&La5R^0US|{?;;T zj3-Aoqx%!M2V8BI`Y}Fhtn<-g-*Jl1Dy( z=^bxHdNka8XNWM956fB8Xa@s%Zn=O4!oYyhHWFg^zG902cynj8!*T{;pej@Me)_VV zB!+!s8^^|#P2bo_7>ES+Iy%1EXoD;Fwo7FRkKh$Rag#%P##Ef;I#jj#1`hHtee?Qt zaD2&t3VWh;3E0nRgz~0F%c?BLwP)!F;D0{TBGxCIeTXxISYRXEEfk#@FLMUAMZ3{%vTbtROXv zc4f%_Gtb{FUa+I1tnJMdgo#W4+sU;5d)p3ZpebcvUX%?7d+lK*G=F8`I$U=*%^n^? zRXRIgDEf6GGme0DIh2vEW~4;Wl9DOM%u##SnE^Hl&H2}kt`#a&phM{@TcYV=e!B0(fKWwmTxXViPuxdWS)ezWG2^W7!@iC!UWEgXu-^|jhdX4IJ(0?mlq@gL z{@i9zCvfJa4KP05fB&l(e^^-ya9v)*naq@~x7=;W9ZE4+0H)Q+KhvdsS^K_1aj@w} z1hF|fct|TSYmjL7E{Lu_E8UzVs_)4B z@xl~NU>%NEyswBJQ34WlFf&=1Hd=U`+8fg#o;HRkBLQy?tol&+3PFKL1QvJ4?CB*vS4o!+0>={xK$GAgc)_fMGG1LF9gQW$a_S!Ef4dZ**rI{|+OZ5c3ikQT(_0BQrc8A?#|6jg_qs(eX}1O6 zXeSKkHG9uT91p@ATpLiKbToFHuPeW}v2Z<`CjNAJpTf6-AJPnKckH9OuF%%Q2;(fD zsfm(z_Xg`D{c$E67|E|V3}+)H;SV;8Ds?Pj>ym8PH(d(prJV)RE4@Ai0A z%5DDIvHR7^j{%k&0q@8~NS@ZE6mV5)*YkLQk=k;iC{btcIzpSsd1tRDcm7T~v}_CV z#4om;s!2da%jprUMz?j<+D85%fBM2vc5Xw4sEmXQMIm|noqrVpEUcoX63i=#u}BoV`d^ zW}igW5}1+l%Af{-cC@TZ*9i4kF-hx!rsm&+!izj*GG+44;c6uYXGn`FeM?r%tGFWh zup(H4M53k7tZekZ6(THb3xNmhhF$?0SQ$(EQ9MYhLs=RH%0{OpAd&lM8Uz&*orCwb z2nAdRsd`pdzFGE9guiy&RoID@sSlTz!K-7@SZ^MSdGa^be38i*Lu$oZK$9&?^S8qz z`Y-CQE&zH{e8_{yVKt^VXU@GJlM@gH;!i{)?N9-6)^l#YG|VdF>55gTMm zCvX(--^z{4;N|i@ltH+$#a{lH7>;o1kT0X3RL@0EK&Wqp#!!s1u8g|>?$qM>P(1`z zA>0k~ik)#9FpQ_MzH|yaE&er-(Jb_}7~>?K0wIgk9; zm;{y&u5GtkgM2vl5E3?XZ2gYpYgbM8YsUvMS?8-usG_}=fGd^bu(jwUYyzB&e6CUm zXGm*Jp#7Z|G4(H>68!Dx2vOf&|BE;+vhoj1G!JZ(E?mtGzk}HQ9LCJjV1b0Gecy6@s zk9B8EM|C4bRk6}b4jC8PJ07fZ4>P@Fl; z$}|7<<3RYwcUuBhrT$p~&7+COa66{1$4_G6i56Im2w-&NJ1wf>%Yucr6dah*3J5Pc#Mif-QX)&xc)VJ7W0{~h&|JRp=QVClP*ChJ4D15+j zuzpOo^=jJmGH4^}0Cz3n;{`V(S=SZdVWv_;$LmFC3Pa8|$c2p2D5z|F&hCt!a_jtQ zLwwLZ7{}K+jjEHPIw}%~c1cW|-|bcW)K2bqawt*sRLOraJw&n+3Rk(Dq>za-6D=Fs z)mqSML=Vplx$@T@d#RHac^vKR+`3B}*VN#r7*8RZ99bS!qC4mUHnS;gT30e{8bs+X zlVpU;_IY^p0baVu6Ulcj9(7!*uq|`dGS*8JOWp+ZM`b;~qVm=+yaQ}SYh&Mb{H==^ ztLXqcgAzN6kIkeu9(WNW;-37Ip~tFa<^BY&E-vzI0D+34VWtSGL!AAfy0^{8zk|{w zg%s1E4V?n?@u&=Yy#M93k+yi!RkA}`f=-JVQs=P}@oUX_l_)=?J3!oIdf)w1Z!rcl zf=GQ-jx~cWGM5H{cRG|Xx4R}}rImKAD`4BILuQB8OmTMBXx+rC54qt-75*|=3|248 z-TEgae(QE&lypB)(AEW4Ek}@{7c~xSb^QUw%e&7Pk&iUGH)-6N2-Wyv=&>xx@)dA+ z_{whkD2=IMk{13U+9-&YChp2c>}6u=I3~m@JX@b3nsj|=gig(u3u4dcJsuv>-kOU1WRTET93&Zbd`qNNgX{wzow0Zf2ngybhfQmq9q!V6;Kxzy>@-11+QEboCXi z&6gCNg~C`;Phpd{mBt2o{XoKcS3lK>|H~bqbOfD>*liAnjN>5;X|UV@9_<8B8aRGQ zf6L)EM|B);X5fff4~4yMW$4rMx1ju%ab5t&C;HU{&5~>C~qcK;zRu}K7+<4nIaYws&{Csr$J`n znXmwL(^Hih6pXH6>LLVAxCzLw(#mh8LR^s7qkZbn z+(ha2)0$mE9|*e>+~Yw*)A8?{)w|4DA81~vl~tN_!fM^+s{PQBtOm3>cK?NE*4LL= zsEdCqAGee|uw1qT$NRtgk?2}H8U_KPSp&+wsV33!<${4zOaH7r;$vokKDf22;_tgp zDDWEJHPk0>k!1r|dE8`~%O4jgz60)--z=&E2b~d|VNc7s-jU?f)Z}K^S@xJU@^uje zq&XQ~vGy>yD_+I0cAMSrv0><6PqN(9U;}Nxx--G0L_+|YqNmeaHj*f<;SQE`d7*ZeMeC&0 zH6NkRty>XOkOH3owDz~j2BW(~4gu8CHe1U&miv<=yf#!Je!Jl7D0~h_dd$faKq1OG zbxBWKrCmN8GaHW#M(02UOY3T}dQaHCaj77HK2FyuGcmNDx0H~PREwMNKEzNJBxD?D zDwj5MP@21RzeUCAZ-Cb;Ps~I%QTu%*|HU{kM;;Io4;`=TvbI&b2q8e;I(N`|)cn-& z0Zl*qII0L%9UW{+6Dyh}5vxb3s$3$@?B@V>D*sGuw^`*582waJOMFyN>+-TkwXMQU+gqs>frDR~M)#8yKA*+ggBhNU_hm8W)rO zO%HgT=t?gMn4n@pK=60G>GPI^cQeSkMfk8m9Tu>9+2-OxD+RfFU^4VqNr@SoKC!(v zRPcb|_k^Edi`hm$`2mx+|2H6{7Lp5vt%SWR>FV`70X58j{l&0HVFW9_ZjiPCgJuC8 z#fA!ZHHT6s6@uOyqrau3XP2+!DpP$^33IVNmYFnhk}@Lem!a6%BG}>F|K>PTQf<1G zmTgf`f|r?vZcL#b6948Z|(Bms81%k)u|rh}D%~sll>wdwkEn_+ruz$oOHsnR`Y%nbKhy)wx>r$w(pdN^6|N zTTdvRlBOX2lP{GT4obVay80AmDKD5VJjleIKBpfLTl=Z(>W?JF?g96KEs@D$tuh5A zSMV3DzmClM%51k@G=d8xO7|Y+UilgI*<$+p;xa5PQ=-|%0Z{P5=|i^$otXS<|1A*s zIvx40l^dww;Q+saZ(ezIMsC0LwUlnL_%3xq&swHqUo2=Od}&gyeVlYz$|RD<=Wg?; zd`@)&oM^b#Lnl5~beggPYl6<`sZ({}=BU#^@fszcpROjs@rR0bn~iv(v>>gIMkai? zy%GV;CiU$C6@nFMLsO;rcj`Z00#AX`VAPg@i3}9-R``*Bqm9Z>fTQNZBkF z2QM^%a_?wz08OIN7-r@p%p0N~HO6>?`|rJq*O=&o0FWr%Z)HP$)aHgtGSWC&Hdpiq zTENSdTlFmtSRc|*HEx^=sv8jg!&D;apIArbNvZmQ&)LAn$HD5(G<+z{w=lgB15Meb zIhJt5ngJl}I`X@1y&)H)&#j==eY~!C?w%xhD!+}~4sLc+9+hj0TRyyZi8qjx5zyVS zjI)`m1oN}*VHF;jq0FV!&Ow&cc6bpPC0x0ND${4&9zFSAxrki1%_ow$czg1cwWvb~ z570R_whmQ$blP$wbf8J!9?&fIc1k3?1pAk|4uHI*VT66&RyY2{1U3v5yKeW0XcR`L( zkGJpTt{t0^uYhueNyd@2 zcHK98fO|W};&MlykT8WP)_{&vSF0MpJZRrT2p5H?PyeoeG$&M=HG1>cu_)JA8^keW z!>0?rGfCK_d;5*OSOunx02k2t`%OgiRxv| zf;D>8EYmaP7lUqx(Jlp7|Kw{VHCSuYj1A2Y@t=zr&|d|2`C$K5V#YdM+m zF2M@Xr!WHAGx0*GV(}7rPxRDh)-n`*eBMUoOb>ZgwK4u`Z)0bzw&RP4N`Bm7Vbs4N z(&NG+(D^dPCbbUd~-vuppBo<9C9tVq248ouo+CO&fduhEL{eYL027e zYi)!o_jQQMFx!92wOyAXV@v~Z0(OX*YoSxa-SZX3DkW)`M08Z7Mid>h4sNE*W{?7E zr4wE}6{+qjfo_7~wJsqIUnK1$k9(5snpVhNV0MaIPaFG%uQfdF3oCi&iLl&y`&V(U z%3@RnPMANqCZRMx66d?q*OY`*wwL|i90xKX&QP-b&$_f7AF7ydU-MKKq`&S-9JMyD z;@-8UAQf!{afeXqXo(q{RiMU(rFA$kA>o`t-*ty?0JXeegygpr$3V_n;@*6>=9s9tg5lWu%S(iaP2x|4vdI{e*0--9e=UObCc7bM+& ziIt)t8u+%FxwP0l&tb3`E}rO1M3T!h33D6~b;@bkxM`nVnY#2|+|M>Cul4e2R;D^ z3bpWMG~>{p`{d(;`ZYWyfgYcMrr)wj|JNG?9!TvF+^s!ar0lED<}VEeX|vEv54jN#Yx{_Pz=rRw!(0#FHNAN3 z*E~O3NY@sYJ?|mpq_u-`I_`r;^Ln_pt^<{~HP0QqH1EH8F;pNTjC$mvYj$Xd)RIm} z>tM)V%;G36CC{IDw58=;x>i_aJ|i36xXWAwurP~kuz!gfLY=dDJECTmwhg!ifz99- z=j^X`Py98h3@njd6BUJD;<`nE1o0~u_%#@CQ2(<>o7wnGaSU&|o zjn7jgJRg0z9x=Vw2_-XndX%1!8~W)ExRJZ~QKB}s9D+L`Kp)Ux|c=l$5xhah-l z#J0gFX=pb@uS;l!gM%qw_edX`q1Ip2W@7?~Xn9=BBQ}a^-nzAupEz<7_F)%L_^s(3 zBR!?+&>t3W7KB^*-xu^tEOLxz;>d*iL@=t~=Izdj0dYN{f}#T`LjNd*u?~;}qGkf@ zDfwjCJqL6z=A3DF)@$S)KRhDRtBqAGJ`e)N*u4%Gepp& zNywkb6)i|1HpIn+kT_#Xz)|*EN|m_AL-%$Y|U#6 z!j}YFjGMkdF`3Z#*{^^L+I@RAudrGTuMpe2lS`e}Hj(|o z&F0%+z)69kJh=(Uju;_><`0mIY8xGe*7$YhjTEbg8jln*Th;0zCK$7RwgW7JK(AXELeploUWQ$_q|iM}HM-CO(lupxqMlPosXz`~5lW*ONFMoeh+~)Mx+ZBe5o-hc*fWmlEj-_c_C* z0^tvC;da3UC9yqAKOyDxoEda*Ibk@KGj=R|j3yJgfOK|01JNDkEAuwsYkcoxAQCii zdw2aBz`3t*H&nsOktMmNLYVrVX{PjVH}SvBYU}1pdvAjYE&^t!Df0k2ylmxXQ9)`k zU)7A~rOF)pR5wj+5r`)Ah9le7V%wQCbxO-NLX8)z4%W)*MQX!qac6C*R^zc?u4&KH z8~eRL&jpi>Mn28p!vD?GVtd{8fDXqH{m!<(IUkwGVA6Mn6>bRgEH#3EHu$vpcHzNx zRON(`dRk_#lQno>31|I7dt=4=@sl%$9*!suHLGbb^%TUUIW`6TJr#KxJUMYk81^!* zL>y>ED#=k$^@ZZbuiZr|cQ$0CDm+uvd+&Vpiz(ga-Rs7M^mT3zwVqReCp`OGEX%B| z5_Honim}cw+lqdeoo*o2ldtM8L}(E8^hY}*TG@ByktpJ3lJ}QP$uzo_c+8CoxwjI=d!%dV16EJl4 z-fk~7B+b+_IE(nWvs!@~oLGEjr&3vGn~KCwgK}T7EYQReG;A`zalLn%39GrefEfzX zdCEWhw!n>Z2~^l^Hv&#g3|`XYGmRl_Ozpr}B5GfZb^n>}Fwi`3 z3hjhzFfybmjaqN~eFyqGB|O)zYN~{v@|d3#zW-}KQ(8L_#~2Jjo|@7~FE=fgNytZ* zU3=?A)HwIWTuF*>c0DFV;^@V@N6=|IxL>zyhkwJBLgwMP71XB!0dku5Jw=5sP4Q|1 zmjdwZ$Bt(&M6ln2Iv~*vS*(7%8t&BC=UK;ByJ(f7@_>s*4Gez9pE=4+FYC}U%X*8& zs9^te45)=}UYnUZ=#IWEE2Qxhtt|wyROM%*pu;n&H>B5Y`+8Y-^-U8s=w?@W?0-4d z6-7b5wr%sUA1uRrY1u^(tNx+rv}PeZpYJdX8a$ES#8MhbEq%Z`y6*&M{* zS08XkG^)l+-;s!To%w+GSrp<(bls#Tm*_`~H6jU)N%9a7sXl;1_xXn#qa~iEQm9MrKpgDj3I^{){ZLXOE&A>BR~z)4&K>1$QYi1;s`Z5_CrrX zdYJ5&5r%UeR8zAw5DcVfVPUwv+ejUGaRlb?7%D)B6mPjSqQWAP=d6ME#E*mTEuLfCJk$y8-sRUrdeIYHNmA9M4ygSAIoPsevCb zoL<69Hobo*_CaY>NIhP5+pm4Xd$TQ{W{edBe{N5H$U@LOU;ra?`a+049B)k^Yxy$w zXayy^YmreE*IH&bQ2jPE3F8To=0l4<6xnr_RP9xv?Lef=gkpdc5_keB`mrPO6Kr~% z0f>w6Mp0nonIID4#hB$Rf#OMEm?)*Heh^tQLR-TBHcwoF42gBLBj-UwV3$wq(117& zF51;o)hCu~>X_NYj8dshsMSEdMzn*^f`@aBO#Hn{BHZhg0`4)8+!?O3+0zS=RgS^C`Nlfc71KK&`UfZlu|c#^ zaF@;`bys;DLswA@#ePp3u{ujC%Frf?H96Vm5B+guSP5diBU`F^2ht^L;u)WEoM24V zYcQcdc4V}@R|AYXCFcgwd0|B2*YJ1C8c$xu7;BzV7UlkpucYy1wJWhs(^gQc?e6j| z>wOB_(#lk2cR*9 z*ammP`u=*8&026jnCeJ@OqGB>Pq!dq%Zhu-F8V?MQCRmTgMK29I4KcTh9LIE9F_P! z_K|%=iyg?C04j0CEWNsEy0!RPcN2XrbCl$<&j`7A{n8)%PlV|5#HjKO(q`H^tE7rJ zAJ!IL6snaQ=Gb z+BJ%;otH|dCJ47Q!M1;#Ce|f#P=K(je5PKCr{~~)T3Z#-Foau!A1O>huHEzKE`^!e zq2N$0Tn7A8#EP>WpXGLHh1feruKbZDBr=~Ff5Ygu5c+&_*!{R^9dSTIC2$gT zm9CWxsA%s?2h`!^zyDQKV5IATGrCB0m7<}s%GN=deU4?S!J(*x*XdbVh^7&k8)3J) zNR)RvF1OjB!I%$nNu!&pEd~{RoZYKvkPzO!8|`=teUuXc6YhEwjZ5Rxt>1$2R@+FO ze>5eAO!wL#o_v9x6b|joC$ZVevHm(MVr~Y3bU-S@2I&vI=2FEnsU(;oy7f&IX&xHb z>0>)n01F)q@3Vi5RIcJXvU4)*LwXrP*47MYOW_ne^`j#5iufjJU}+5<{Mga3zBX`j zbhQZmdd~2Ho5of?qxZD$N_!s{EcB!MiY;6cknU={#VG{F;6|8pz7F-rI%KlT$l`Co zA7^-q?XxvKc;AH`Df;8J-kQB3k$k|<-M@13TMad}z;d}!rs#nvQA6^34>amvs5P7o ze)g?=crrsadE^W`xm)~vVQ%=i-cvCs)nj!u)L;PO`9~L-p@Duh)$&j*gxhqg9EcUP z2nIJ1;1yJFjq1fJ4r-Hu3rOW%U2xF`y-jEvNUkj{ag0@B>!yx(tF3Sp&{S!SR6zUF zQKsvusJoIZq*}U-2>g5Dx8_;+Wk@{<^}g|EIv{m@IJ|2aLrl=vz%ZvT%_A0^7MAPgj;SA3%HTe^JZDH%81B) zJn$pFJ7CpsLnvm3_X`WSVbW52iNczgpph9nzRiCP157hF>S$++XuWU#7DSepr~P}L!CZG{_)3bMi$W)~E~dqv zY|b0iDn)Z0?^Rn80Z5jKp}=)DS^0cDW=EzAkdVP$v=^R&4*D>2dVnOkR7nsX!%@_~ z6vA&gB0c06zBh}B={ThsEi5+HR0zZgUTY5KGlCxPRYi!#v_}0x?RA;xeA^x{-#0H0 z8{f?(xM$7&#ca(D3~FWgr!?{D-6~TiZh+d#4kgE42y^H%+2J`mW8OE~&0~z=`C_n6 zD9Z3e+W=aO+5M8n%i_n5b#PGqy!e3=#Nu!UW%;i3I(`#IaiWAQ)hIj00;nUCu^p4* z?BW{vtb(s5&5q)?y+>SXDWMUT4_4twBNpK~A{g~KTJ6cfQ~@RXc>sJQORrJwc+V1i z1||TJ_-fW0YP{8gQvjma1#ciT-xszS4fg!Yi=ybl4IZ`N?hGm5m=Lv}%c^+nU>;*% zSSAf?3{5r}TJSuYZmc?!-O`$Z?)ODl{%i7<`#jsOXBry=!9nJ-yTD3oi72; zjg#jb6d-hV9)j|-(?S3O;W(3J=lSQ3puFE}RoF8lLh(nWm}1SHGxwrYe_TzvAzuiW zzn6*GzHPVe7cNE82@fX(e&6r+odt>Dw0JPs{+SFeab=~;B?Hds(kMCb!!(KP#{YcQEkX`B%Cj2y1Cw6KeWQ z?5{@&K#Xw-}uuh7HOysQ=bw``4BvyO?l%Ha%|Fv{aR?$7wSnzA}_cnO`hs z|Kz{TaNs51*>R><9RKR0KG7PFltNK4Y{R-aVaPhMikhuwZ1F&;qu^=aZww`yQu>1Y zs-ZgmvEw?$5N!(DGtb|B}=vS2y+gzP^DWBRBEsy z^oft^M!s|^(wG5^E^DP?m+yl--_#I6OZUpK>fH;m-+QhJ<^sJe0}wJG5*{G?wu|0w zhr=<*Us$nPLU*3ALc=ppv$0g;J_vk#J(?Ey6@mFokQ-3K-v>LgO}U4O*ujDJw*v5w z$c!q=5VJ)fUtKZrBo9Jp>ek>Q=Fm;3BwWN!oc^B9ZxG8MTUe8ZJZ@MTSLZ` z(VGa8$}xlQK2W7L;y53f2Swu!Z_qEMk{Gq>ugW2lU zEysdz-piWLs#&&qHSW~6q;vg>;r6g@&VW$@UuL}Wf`eN_rqf?rWB=QC>U$_8e@o0! z@#Vi2YOwkNVL-FyVZS0Vjml_kv0rD1P(9wGn1rTLryMKP`xjBC9_#RWi3TW_&MD=lCvoK`rPw1i?;R*c!KJbRK z%L;GdUol2t?F4D9K7DlV&>ej*hpfvhcDgf+`3s^>dhaY>mr+>>F&oMm(LZ*C5`i}D zxZ4*|A!zL)uc#AfR2yxj#=Sd9FxI@NX{E0d?&Ezgb3|W4dP*iIjqd_&*$A(tdi*7t ze)V>&tM3sU94h42w>=SO&!TXcypw_>U9Vl0{*YApDrIb}nF26M)wT*k-e;+|?t8~$ z#gCYFfjJbk%->Zde#WcLxEM&3%F)?rq@<|Km~`~t z)q#?3LZiVXowluV>EUpJ;siYJGd#&3KXycS7^oJH<*hNQj;TB8M9eC*_A?88p01H@ zd@8%SMGaJVoM8nE;6L7Z5?pBeGXDCQ zuy2${0*xbytfy$xo_SOiIKwMAzg)KJ&^1&2sQx0Cz3`2FRL6=IVneNWFYpJ*`Nh*Q zh(7iF*pbvoH`U|CdCMoD7w`A?!eT~iy74t?15{g#HTTdq<=@$`;V^-DyXO(0?3P2% zVdLHe@KF&Bn5iP6^I~xBiDZI*HRKv?6?xO6k#O`@1V9jw%t?M$nQMy8kt~15&KEnD z?osS00*EFRtZ71Bkk<^)Hg&0{LP}wOs(6U;nSP$3v74`GPscK(YJ(Rk;8;em4cXJw z0GBfK`!e&Xp7H~}W&*Q=?xFjl|t&6j)@}&}DuQied9;wekvwwBh)U3f0?}#wzV<1v_(r_JH|q-GmiB0<4e(cn4yajQ{(^55A51s)IUxO2q`KBRj+C<$7B?LtriP6FBsvSszGnwm?lzRv4P zG;l;Eo8MP{ryxF3t`rQFGUEPiXQ_ybeq+m<>Wa26Bt@`XVqW0L172SQx4dN=e~!yM zBN5*6)t^NQe=`y0Wlv?BlaC^{iNl!^58bHve1K}iDW#=&j`O^O-t8y*NlTJvFjm$R z+0I@h%Ui!3ccn9VSp?AX_%ntP83J4(+L)#Q;ygs8bAx^hJt2t}D^o1|U+(}lhr%+6 zp8$z-e(VYc&K{?5Obehno&eMK5IP2yP?-L7qbNq4`(0`pR2;(9NYYg+%Q5%$j%#m4 zXs!}ET}~%V+VY#3{B#(@kvb6Yi4*ZnVjg}$dfrM|;7=9As1a=AZ*@KNF_o3O8k^C- z9BAA(?q76X+kW+#T-N;?;R;#In}lT7$8d8jmXaeixVE=%6U&r{kgG)e1w-(Pfz;^nwPCclq!UL44h-@%f)p?*kt1ntqmkITJX6E40?LCo@SQ9D3oHi<^B=eVBqOBBL zS}P-2V5Y#*9p}coSTUeVcTb?MkH%3r;4C=(sp3_FJ1mn@^U6W&^2@UX<;BV9S}Sq* zb%T{(+f^9@Pm|t>MwXi;R4G< z{*)w0vvIM%3eT%z%;*+GY86&%`Nqf}Sv?@)IE$j+8M&Lm11B#6xN?iNx%M9MprDtB zz)p}-eo!php*(WXZyuS2m+%=e($d*whaT*&ixhsRAd)!InTJA@X(5vHZ|oQh8F4xO zj(_Ya1>`Y-M%O8$#H7=UWe}cnPB-j)f9%*6qIX8E(BJcyVI#Il*fK3s;*$YbE|F{S z1aQeMPMku|J`el5Wo%bqaMh%6V__fnz(Vdl7iwQkur{PLpH_oq(O!#^LGfVv@%1OLwiT$msJj}L$`*a zW)u9|jfV3i<7mFPHS#&cWCyOY+vhP93@WlTdo&U698h{Z`z~{G5_YKUOw>M}36hPz z@vbC~U6BCRp%B!yTsG&pS^t`?NP!c)Kj+l8W^QTIVT^}Y+ zVId72KD{tWuIj?3L{C8vH*sL5!*iC(NU zJyF=f^P7QgI#-was!4Vho)T-!u|PEa@QMN1fJ$I4_uXnyw9{2ilf2i8LxNc*Kpt1} zIj__mqG(i_NO|(lIX==)Uh{htMJkhS!}`jlgFAa<@cI%B%;(%WD_h=_%Ie&Urz#vm zC6ZLBi-eppzj_H-e%XRI(cP<7SqL+Fon8{OZ0&VqymKkbtx_l!<=L1J_NnWWKl>IU zqfM@sGd)wn2pB}5*1x$WJgXVcGqI8`5B*eA75h8yTfk4~59kw^zbp$fu*4mHCjXLFyKvbI;E6*1 zyLT=`k{yL9o^Wu$=G4C7_YuCa?L0wysE*s+9eK8PVW3Fxnp6>$ z5Usb(B4<(elc}--l=O+hOc!jbrLLrUCTNIj%k&?vPq3XK&lxmK1BL+3!{prlTwZ?` z54(Js4#1#nVkw~`RcXG`u5ksVLdK*bZQlFuW_LgaN({4FQmGgStmnD&TYS-w9#%&A z@tBp&Iy6i*cM z2AH|)(<*K&DMRAPk#g(@jq_&n1TKN%Z5Y){fXM6ITQQL>oG4%};sM`mx%#xJ9TDpt z=vAt0I-ai3*FF9-hPG~=wGJUE=_V8dV31YUyO%z$-kKxya#q%DkOvGz`I~eGn#Y^Q z7Kjz6LyW>L$=aTg-nhdq&<;6^cd0aIVO-hhoA|?m-%Kw6v0rELsZWrxq*`9*PZbWK z15y8a@`$NM&?}k!O{_XYYWD_UO{ z*w1yL=oC?Ym?ZVI&?M+{E%*s%>TDuk)#E@9a)VV!;sX821C&s5($vJ;*r)*hz-cY> zYTH*Pt>^YAL5VJ8a(iJO%NYH|^kmhc&cd0*l9~l{myaOE6vbe6!?+I~Um}`y?_7%F z9S<)66sq_cF5w3y{F@jpPZLRoD|ta)KALIVJMPRWfE7P>q^U-V?0_vdhs3bd>#u?{ zq(cgJiD*}t`v6h)8;_@eem`f)u+r+eGSILn?cWjyprr2Lp5Y$WIE4EtnTTokoQSp` zo0qPCYwge7P}|-(xFoxsdw54f)}x3ISx7rn1*sQkAbVDEh(bMt9$#$wj(zYyxfeVY zhq0m9;EVw-QnJGA!E`)EA@Uj1e+e=LQJx|35MF^EnJhVIu~XS@Z~>aUMi^f6((Xiu z*6^*LBXva9WQeWqjsDn?^IJAIYQiOeJC-9^v2{~p+fWZ!%#RG`d#WR#RsFs%=?|A; zRAzWpx8_`i7?;13m7S^M!dO^I!RU24NUvC?!+FegW`xl&86Dz6)$FS;TM+g02S5)} zEP{Gg1h^<*pQ_rFH&BDGS>z~p8I4@cFXGxinkKbR1kXKHp~w-k7J%9vdV1z5GG+c0 z6p7&90#E`V)#KrNzTZh0=f=wCIU2Pv+_-9&EG+qc+W!nhNl`*jx8VyLHydiWHf>o5rt8_*6A?B z8RxNO@ovhVT}zPX@U1}}1{^J<%@Rj1ar<+bbm*0x{#%p+IyUDX;~|4RNZvzxip1gJp142x+%+ow0{C!L#?Ky|u3q8wjq z?Yt3X(|GZaA<(S~vz~Ts)UnSMa=16>j~$it=9M{$0LQu>o}Acjz5jPf^?*`$!}!$M zl{5eqSI5YC2ORphN=8ikQ+Nh$)(fqD^daUeaZx2v+7LA$P#et39kHl>^EZ&nW8>G0t{kCoVec~>yJ=p}Z^USh||6iw*AKb7;X^F{Sm8M@tZ#)gqB zXJqYv>}b%{WJ=WAw`M`{@oe9xO4ZBBO_a>jH+!%Yd&>IMF@w6sTNyP7ht)xi)aWk9 z$i+orB!S_J=!`swUu&gj>%UN})It4D#`R0vPzawcjQsGP^mI!= zQ*DUN6~Gd?ANO?EIpuC7Q}&nH^a4kGx@wuDYS>0#PkG}$jWp7SO(?t;3OGl)OAcdf zyN{8#aE?1s7F4=+YUTf2SRdd)=u-ne;XSS|ci4pt>^uFjqtldu)EKyy+PjpOF1AEo zxi)L|5o98C!5}lLOwJU}h9Vq~(MvJP@`#ncI|r%rvN7FlMuy5L#@=DKy-9UooJeKR zuY7tN@A@*r++Y|-qi|2Ou_RQqg|$X$6bM6+p`-JEcCJe%3v&L(D0jgG9!iRhf@0Hfi|TNA-0YT?Wk>>>VR1QP9X{y|3bR62bZm*b9CSjstpURcjj zQ~=Rs)6g6c!RBZX@^7Y=L+^ii=cswnC*gCc7B{I@*BNm?P2s|qY2j^g(iDcoDU1ak zvR04F6;4gkM}wE`q4CIp`^4GhWRYV^&+m&?7H*ewUKA-#*lvVik6$^Ws1}OE5GB*6 zJejTV3q9h3fGmIl004mfP}BbYpo9SE&XC{tGXBi?AB51!Ba;}T0T}*svLDpG!}dKE zbPhK5+f^{L@5pO3%TA9l@sdp{IzF1Izd&|l{hUq*ugK|+oI_cQ1cKhAZ5m9j$`L%v@Aj! z&YXKsv5?-PtzHKJvccMCMG07F2e^S`NRebZgA9#PMn)zFQ~YF40iqt><6=wEet!| z6gcJiE>JoyQqj(XU|%KryO~wMo11N@9Ka3KjzZe8Gfz>9f8UyQ=9YtE0h&WFP>jt0D`4 zeuQ?&(2j83#ax>ehQO;UsXfM~0Kf@T`~RyCW8S~|Jk7$5JJkCh3?Xp@A3E@KIuIvn zI%)W?@wr6NHrhWGeUGmM zhqMDutc3924nai?&B28WqHqM{D|N*M4uj_`=&9-8qKB)b1t{`E)oS78Bq9IU(TOw^ z%O|ugmUTO?N-rHW+tNyYsi^RQR23~Xl9AOwbL{i1&NOZLO73iZzuni)ID)Q)(7p@c(n}p1+o0?aJO>m&%0q~&bN4E(EndRpG|um1o!RG> zIY5skO)MmKC~0o0-M!sKd+?;|GBT+ROpX3FaewkPG4VV8x{C#Gl;_5T)*w~pEe9yA zL++=hNgXdTh7b}*e8h(mHV+{@Y+YJFcaSsW@SPIjrhu4&J$@s4)zbl zx5@7l4rwitR}+T5pPIydf8l?BKdM2pV1@x2aI6cs)iBS%Q*^|#4jsx`x)G^P_tW`~ zL#2ix5McN0{tnIHPKrxholCoHZO~~hAkhZXb;e>7f_;ib3C|#8$O{(vIo*l&O8k7xh9u&b(NTPAEA%J2H#HFy6n1M6GMOD2Fb+uWj#$=YFXZHp;ZR(bMv6b zn&Sj;f6KU-dC7YCG$J`P+||{FgvyNVn!f;?Sic~Lt|0`G9NnlH(!5m$d8izD%TMziQj*afYpYzyUS)REzJc5`XWV(4RQPag zGQMu}(tP6}NfO-UAJni4WeIDRECNwI>Sh!u1)BJRL^-cB7A|-fjr6i!47*e~m7vpJ zi~4GgIXwetwy+xkMN_3UUlIHPU=IKQXj*Oc5WD9u^)O(H9oByAI77MFo7_>aolU@w zFPB|^^{YpHui)iw>S993^l&Qy0Ob9vAL1wwMu8ZE5MOTg<2ar1U;k!4>FVrB4UB_({{jy|007YYKewlU zmqPN&$_S`ohdhC+65@ls9GPQe9{=R zj>p{EkwtBB50y)6$IsjnATB57`r^ZBtMt{e#u8JmAU)<z!PVw=LlHY_-5F(XN>zQMzLH>FkiFAtlgA{Z!vOez!9ZZ7Pdcjyx%O| zwoOQQtFjS zzYz%Wh}tiB5W6G5Tl}A%-4GPZ((|Kgw~^#*&~hM{v;SQZ^xyxAvNH)c@$;W?vuHKT zq*Z)CTbmSKq^`P7uvL1QaaE_Rj9>6$$4^6cOu;?9z*4FU&{JAt33rd}Eb_k7e3C?g zN;VySK+?g?Gy=4m6lu&8^GUG*egpKlV^0#t`FPAnAsK2G`C`uJZD$i=($5!+6=B=i zVFKo7hU*_PXs)wbmo4}S{~AbM(XqYqvguy7Eu~qWZlkx7cab5OP@x1yR;ZzUF^^swdl1@UlIKXZFwO8L={<%RreIq+%k=oAR;qx z0-TSig>pqg5DY>H9=>*TN_VYRwfM%drW;US+m;L#3<%=BM5*Z(QyYtBcV(2Pr)!a4 zKohRm?`-FA;HH+fjC!z+s{z*U?r)%E9nD}B6Fh$G#kl(Q*9M_4IGcux1@lf<4I7_> z5hEt2qrMAaeeQwWGy+9y#BExa%DnQc4tIi33X?OQ^{KdCX}&D zPr<~8-ew`xM||~7@eaVDTfl2@He4VH87W}Yh}BwT7Umi%s$l7OxB6H`6b=Oo*?5fb zCTm6-w)6MU)Pqc7k_fowQ}&IDzNna7Q_0yZu)a00-mA~zLJn+RC5=}iZ#zF~3J1dN zmPB>ZDjg!^yHG_i+USZ|GLTDDiqsG#s~qMub(^mk42S#YlD$X}&h)BZOkqtUQ%DIN zRHv4U+Xf{S|Jad+sg;F*12cXDAzK9_43z_N`cYe7CgMBlTVmK3*L;+=14pdVmp>n` z+_W2ZAV8ljUa>#w*ew|h0(oOF0`JlJ(WflEV;YQz~R}p(?)w{^Ad2p#Oi-Ohj znqe<}Z7Wz|{DlQ)@bTAPx7OU9A!$Ie{!zx@3E|1(;^ z52S5L*Z?L*odA;KCo_QaUuHlM;{Tf&zzqA78Svure`N;bk&B|zV0{C~0g-ds;;cn| zNgsJ4H9k1(l=P*l%)bNS&~>>NqJ#os)@pEgkzN|NGzxLZ+~ zV+glJtZs6ce&inv$E=!>Z|De)KUp}W`pIWgj7#N1lweo}aOcY5!L)~U1H(iE48DWsqFA` z&~7aPj9`84i+EiN({kIW>sN^heb7bFNIqwdhK=I7puVVG`ruxe7llLRjg_|9-3Ru8 z9XP|`6T_JhoIiG)7r=>LNi9?orQ2yf zD?crT{4LzztSEb}t%4h^sT>4@5D_rk2H4^16-++z88WM;5eaKAXSWys-8F-^YRSgd zK@wpWK?Fe^3Z?@tXf;xv5fJ}kyqREvz@{p)NtDk`EPhow9$zBZM*cdtdQ#ufLAzFw z2>5jJC%{s-x)gn>IsaGd>m(s=sOgr$#&QlGR12Wro&MO+CQQ@;?S>lQF>R_3Nr;cc z&Va=uZ)!5lYxpzH(>p~xKX%;bctAmHh@GQ$&sN`Rav*cL=E{7G@x$Y_kSZL=b@VNV zE+fz;&R!fBaSFEy_0|0^jHKOw*L5vhQ`@!e+Vwib7>*kY2v7TcTtd%WRvog;i(JRP zOBobEJQRm4&8|+mY{K%61w^y;M?5LsMPu-7eJJSUtLtZl^MQ-bVq&f`3Zfmj@XXcR zs?aYzDG5Nc$mXMpRgn4AWBE)R|>)E+|E4l2eih`s6?AAVjMzNqc_mUJ6iCU zM^Zq2!(dad;mVT`6D-+nwK|H|+aT zn+d^g0lzA?^T^YHIW|~Z|7f9!*GrFjq&))RMj_(8T94^wV&i&Q6)&X%PhnMPkT)!}l zRZM)z9gEo5+i7wNXlYK30#D2F=Egfk{b8EjR!6DIX7rjRwM)>J3KpYKS-LNG;GmF) z>&edKTM`wW>etRgjr+`4y^S09#cgLa{T63z>dJKcJVzUmgr3Q_a5Oi*PKwLpi1&p) zBs?z@95|yIUFJ&IgVFn&Pw?XV0_rP=n9u9i#{-e59yzIcd9lIAqk?F%|xfb$}1sXP(Gat;G93Gw0b*v+0@O8 z=q}2PG+2KnEEjkv3t?IgEb$rZ!mk!T*63*57 zWb1J+p@~&Ok^)vFDWUqq;jvb(ZjC+6VkN^*OmOUz`PTl1{hPT$Oxrk4Q0w#i+TdYh zr*(byQjM<)2T;q11TNKD@z~iNeTpM=(bz<;+i;@51CKhKPl(z)=QkM_SP&MlQ0?}| z7>@-by?Ese6g^!V$%^H`Q>>L6>5tr^#mW03`)z9h7pfS_VJU(Go}0jK>3`(baHMRh zF+4<=XC~N~Ne-&bFVOH6QBaArcZAEZH+fN`+h&)*jc7LC{dbA+jd$37M@-W8!9x(; zk0b9aQ&cD~7ibpYlzarVc|$d56KX7H1h{WQdZF-6KCg;Q6u_NALL+w3 zU9e*sUyPjKOh|1nyay>W&BJch{XxB@#r&Fe%Nj}yP`$JKH9A!<%wqbl)E3EXv!YY%xRtd?N-@vCFPg9h?C{2Xh!Xn z`n3Zkk`K~!88moyDcF(&m>)B!wK={Idu-pK#U$js8p1DQ)=Ms)XojFGM@L9LD6Gbn zIzh?JDzRJ{X8Xf8ygcSWu!^?rjVVo;JG=qxHIpXgnu06(%7ZZX_Kce zL6uaYr3zZ*HA(HK=}im85}`ygT+Qm}3ID<$J4%^5Go5P*N|a~|cfG88>*@@mrfx>n z6kJ;$a+GF_)|T01Da~|KNHTV+<%!0{>*zxCrhaBjv)0Pyh41)A%Ot`#?TrPWcn_Rt zcs2%^F-)Sk5+Ghajdl;3AZ&0}MIm*=8s?RKV60S`%{Kb^ofvWI?c@V>;uK6k@t|Pe zM2bRbMZCe?$}>1I$E`L8w>Yx=l_kxl&y5gHa%2qPnaS^QpKZut9uEC`z|{_M=I$po zZt(zbn#UhIs+ngOGkYGA@5J&R*{OY5%1aL{-6TLmx51o4y30*)#{*EMWRw59@saPh zaLPl+$QVma-nGgeNE&<7MNe-6+R#(ztbo{s{h8sF0rM-*VcFm7k8adIO{fKW9*Z^f zSP?!2)g4{zuIS53e~nva+~;3HkV9oq_y-f=!U^X2g>f5Xr-&NEm-C$OcNK0;UI)cA z{u2F~Hf@@Y^%~9C;_iWCKjH*7i!{He(BD*uuKOl=CwCBJ^!l-*Wx}V=K{PMr*1m2l z_RaC%Y`vG6KETyPX-tmzfrpr6uKIgB66EAWG8ok8f^l%Q@Kv=^dz@6e<-i7XU40dT z`{;&K_d8|K>{hj^srt~=`ZPUia+an5%28tBEnwXErnfBlvE-W=jc00n_OR*Yal^C_ zp%>H0C@?QaO?F1^!AJ`1zPm^jJ+__!M=**A-TEVF_kFS(VyCTQC50ET=r>)~j~!$7 z7bt+a4PqU!ryS!5d@dz;OdTuS<~`5{S8Z%PZ7^?xZ~7aX{?EbmceYE5aeNnc)#JOL zPi(~n_l8t5;>VFxv>~lo*k%2jR`zX(Xj=4{wXiXY(oA8w<%#-Zt4mFG?4Z;|N*-)h zrDFF~lFGsZPQ(!;u+ns1XU8A4k!==EYdO>D5e@Gbbj~90A)WGF;EMGir_}AD=4m@t zH$)3(FFhqAN4@CNNukWaj=x3`2iPLFME06Lc1%jjr^!5xi*-P*Rg(!qyQ5;wHl&J( zz5`7^d8@ey-xePPKyYb{q?kRVUH@r5tqTKPg{6x(!C#6(E4fYu4R7md@V{?cwP(Xi zGs*=uoIEn#6W(ZCUz&C#zZEFv^REGB4~-609n_wCgQYY@EtiE&UouFi)^%$0*N(>4 zw}BB4Sez-i-nrS()W9+o#RLlOEn9>tZr29 zy~tf|o0nUh<5htBF~}ZM{=lYaMvZiOWuPH9A!=O8c3}o3u?5JJ1})rl zdICEnGC{vSCu?tti!EPJ*pD3t>|$YE`y_1Mo^qrw|Bv)1krYP+x|R0DA}G81gxzSz z2$PbAc#*l_Wmw0Khu6I(U>))QPe#kz+qUhFZQC6?9ostl zc|V-<8_qwt#vXgDHCN55yI!sPkcn5({i#N5N+50uHe|L+wJ}6P*Z22x@>|9&&Doz< z;Yx_+aAv4e&Oo~c1RV?6=N+qasbS(Sc0n3!cgZ@Q>kG}givV8+_>u}TC%*bt92JnU zI6}VV;8F_>4d#+FuZ?vdBW|;M+$fOH>9EDtMRdE96EpT$ z7)(QJ_<#zLanWQQC-L5TX>y|BFI3Q?q8_0bt!6h!{Q#>~y>IjV7~n+i%F`k7h9)MQ zz*4t=ds{^!Tq9R`7X;~t=++L-y0mgO0NxS1V3&u!hM{o1v1)W$+>g~614WnHWs9z}wTdvUwt%&wG+r-I?9_7z;5KF~P5;!6;t z1q~!fWcIY6GufV4P?C3~O4MaKvwDQ@lQn*HoYi5m!=9@Vmr-^`Ur6ic$3Rw`Y|^}VQFmi%=DHDz#f#Hk+5+fHm02@~lkD{qTXh6d3CM?(mimnP=K z+~4H5F>K7Ee-90GYZ5(dV9QQKTLN);?Vt|kgTon|iDg_d#Q}E28N-oo6xO_q^`k8} zK|F9wwC|~xS)-@n%Jk#vUlHyv41t`&_kE%kP*|N38T!6K&PTp$ zE0*O`TYM|bK6L~_15VgrT?@r`ihH{?UJ5~cQs7_qPoAh&#fTH zyQ8#YqyY~>I6X6=g=olCcgmZ8CWQjiwWonJ{Z(@SgHv{)@pmoGtp20I|?}#p}I?l1=Axm)hCZ}(EjYe^9^a? zI8pAXO6}{|i@|Zz$=6S%csunz)<{Y9rxgD1R8cL3OK#bKkvY|Y^$JCHAS%StpDYq$ zXzu;cf{;TQLu~hgec>_5?0QB0{*?61rD&#hEKynZ0sZ@#z8TblULk?pPwLb0?NzLe zeRB5J0;(E0^R90ltR5v@T{=0XJ8gdmdHyHZ`n7O_*EJj?YJP^1*O?gMBTAfWrYN*hHt-qP>xTXJOB$hw~8yF$@iA9;E50 zq}~+W*lcOd7{|)g&y|tKA?=Knjo2%6ue#u2Cd9mIjwP`wY_sIoP6Yirh@Wmbf1RNl zm0pUq0C$vwjXu^pL_NVW*~j$YEsb8t0u;eHG|V)_NuYtMaey7|8*cQdFLgkrf_>WB z9-fx7reBjAzbUZq+wP*g2>U5?jwNs{FiaGl>JsPc@cu3jVpDUUAgSna-Es(!JO~@*G}7D=?LK zchOQ-9y-+}YaKu%~3J?xQZZU{5)>LH%CB8R}cDwzl)a+c~!^2FacYS=s8-qe0{ zb&%?4M-gL^88-<5IVl*pf=mGN`*+NeZCfw*~I z?4K>J2KvX)Oe7gzud-2A*np zY$&zMHD(M#);RC`6sIRmg*X#7x&_I}_V@$1QVQ;sYE>CXZI$h})4*#NcD3Eo=Q9fl*XHU+=$?S$k&r#x@gXJ>3WL{hGS- zx^5lybpFk3oz71*0jt_K{e*sBxwI-~jS{y%CueKmO2>ant4Tix$k_;WGxya*y?GJr zk4YEvivQ~u!vd~!u{FtkxwJq#PnLcy@Yy6WX%%K(if}Wlq8ky+M3Win{F+|h)0^ua z&VEV_yFshQRE;-f+r<#~#8_Y#{-+hYA38|_`tdEMz{7@)jG?NEJ01b?&>9*|*qERP zDy!t03?9q+;@?XQO>*j6dN2oKQaS^lsjseYH=z&cG{tLPXh?C!)kN1O8Cijff|l&J zk-YYM!5CilnzXhF_}JsA*Okd0gpTe9`>u2)-VQPWOPzuDqXXEne_rz+;4FBFJI*VD z^YL_?mh=$<^5(LYb*CPKXMK4t2wsO_T5yj9N0J8TLE8R(#a6 zBkcMgoy~3T{)(jaZlT!jl*LWAD6v!M&5eLZ(}xI8$jal%=gp;w>&)~K#X(-4{%%`8 zwEOxT7t?89*aAC()IwcFD)4M=K0gqLpK#5g6#N8kTihSP3wdPR$^De zw0R2_R~fTMy~Z?zDh7O##bso0GvDNn9Btt3@3{~zZLg$AuMG;EZC6NUQ}$QB$5o-3 zE`;u~o}W}symE^ap{=C5EaKr!ARTSTpsBQ*LvuNbfOE`wN^ZLwySH3qb$Zzm4d~C} z0D+%A(X}!MyPTy7jE~|n|Crpa#l^_Jfsif$RK+B``{8Y z&Oq)9pm%KAeK8F?qpgh4MaO&!KMAFwqvTw55b^PyDAL_kWgFjO3s2zJLr;bf3GVOm(wX-(2@!1F5~q>G;?Ys#4i}O79qdzM z>i|&S(rSy{@N_7)zqt+ftBfr~k@7t%!49JQ>S%cz3MKypR!;Pdc1UJOFegrw4;=jL>2GfM2|A1fa7-hjBzefyb|-S?SrYoO$l$Oc7Mi!3ZwQPBiKqo>`l*9w`L6JM z9MaV^%{Kq7iWXU1&r1!dbjo;fg@iP8{HjgRkO6LW#4CcPh6dOP$iC_k>Rl;1vgv&DL1dwZg#E zt%l$S`X9qDio@(Y4z_Fc@Azg$Xhp)6(#V;4yx{N^@vI{gs_gGs1|9u}H%z!0DH&zV zKtvQ3GGqM8xJaj+qXJ`@S^dm!;%o>i&tFVdD)nodilWM3XK*T+Y_YZYeD8jFc4g%5 zL8QO4FMP?Jc1$4=n<05w0d~aM?>jb(Lk>j42#(NSo^#A}KAr+O@HVG~O(lmb#5Crd zonvwr@uqLmXBdG0jHLJr=ZxPPwZ+SgJ$ej#q^fEs<5@(!mzurd8h578$fwTX5@D8cg;+^|9f=s> z8j;Skh?S4{(6jG$&nbYVa9}z0<-Q26DEI2XQBRfuA+Xim;E%+_)z;!@RDOC3WxY5w ztDfHo|MBGOfF6))t+5;fHg* z43_SmN!}MA_}W^(RB-#=Y%X6Zqs-YA{5@9=rWYYH0Klrr3(uC zP{87~I(|s}B0`7viDn;Cc%PRnckY6tw2dDmjHFM*>|O5lEXMB+O7p}_E8l`R2h%@% zQeGd4#^N_R?zm*b+~sso-TjnSVvOxE>ulC^u5lRu93_J6rXIBO`YfTFEmbJzK_b%Z z@auSkwZ4Nt(Ln+0%X=vLeUfK=|Ftj&oT@L|><%fY21cOtK%Kx^ecIWcGP{ZxmQYng zfGxcDf3+nPfmjr*!^>~{H4`ur=x&PZbYRo(-pD`>2nc+HtC=!!Hp8NSTF0F9Xd*_dJyBEMG zD6+Kwnp=MpzUq+g$0FSK*wrju&A9Ee{>40Of;CQC3NPU;2e6~Y`=0*x$b~Qq?z9!4 zZCXEoGDY=k?aIQFkqE>&>WEB)xMPPZoj|l<|8vwmJl`>yI`4OWL;wB$W@0Xmpz&0i zWUfr}K9A8xFN7eW-etcZ;v+e znX~4R5mddwL}`1x&F`$XjuLr>f=3P8L#`}`ZI>>6ZIWa9gMKx6gI~G`?GQ7>I`4wN zq+{F{@n>w85;`UwWw)SH6Cp$qll#ozFETpmS(OB|Xo2i{MYm2ZYj2)9vhqc%bI9 zzSjnP6;OJ-_^R0pZn z@|7bcZ2V;$k&Z(+LveABa*~*Mq1ipy`ZHFwTMn@eJ(iPr6w0HBPqw<-+|YP{9laQx zeV}r4=t!ngqX+D#W5y*9zZ(Y#!?~xfC#PkCBwTfd^uZ~`L-y~?OAsT2NmH`VE4|Ur z{A6A@+C06NK~XZ&P(&k3#$=xtFB?jzF**ue56K>j{IPpURdbP7keXz{cU$~c*@fcj_F$HN^vhggobwPl_7u~gOkvZukv>|j0FFXyRmufMPXJ-t+pmE zW90#wq=;_7QRd(CD-mUSEW9zPtkJSYN<~%@U{^BlObO-Ma0O~Gk31>V9-4`eaq@-< z$5FN-o1u;G)$X8ECZ^bpkjrRO-RpwNL6gn7;Hl+wk#sM+j1u=|ZBmP&O%8;B4;y_4!o_mr*pl+bGTg4C>u5{>Qo5g_IE zAMK3hKY$%G@nL?($E3V4)YRF#r5i+&7Q0*`;}bSI1%rVbY7w&(6)EI5IYAm;D%H|E zJ@+3I_!mwt_fk^8EpDVLr0tUdJ?zEPn11dvRh5Xi5c&7OO2MUSl*CBv63uYFo|nSz zi1ts!BSF2U15b4L+r6=KB}UazO<8OM+_)O85>RkObiozRH4>A%W9Tr2NWPkbs_uK^ z@m0r(Z$P245=9Amo?)5BwFEuv33kG)b@kY9;LD7Fs3c4ZfE~*=?(G8MGv|gXIh0&1 zHsoJ6i#npRTl7So!PEhD8a9z2a&I;cf_=blJR(Vc%s$MZA;w{==;%^buq#bkizq1 z@f<&~g*WK3Tg$?>P>T;Z_MZ?Ob40Tnq#*9dH)=RVtW^Kpk?CyG?3z#T35m~jETAX0 z31PTm(NGsy|G2L<;hZsm9h(O}3^7O$Z%4{04tK7EYNP<9Ahq+VLE1n4?-TN4E3cN;tC&skz@TpP`M~P-6M>_LhnCnkb z-f)t6bDH|mcbMI_yG8$A12Mf?daMTXWY`dDNOU2_%CtvCZ7fY;Bd_DK@JD}=yjvl5 zpZIEx3x0c-5M!bHu8W|lt{yY|5Mi=$7UAN#Qt6khgwE7W4y#CxsUE7X@Fl>Gvt!`- zz6SX`m7%U~J4}AEJl14?^L$I&%!i~y#-0Ti9oNNn%Q%jYjpiL@?icDtqa8_W~<0HJq9 z2}c9*)#MFWO)su}VOKseNskz?BeafI<9SDAm+IZm|->K=HPFRv-#3x;?cu(rFMwB3UUF6d` z-FlW?kGXc>AzL94e7kwfpQhVaGM`T{d8}~-@Hbcb3Za4e9oKWumdcE)7ms?3)Kez{moj6wk&{28+@^y?joJ#NeXKDH$rWyLY;3!|AziSLqht{eOG<=;psL`-kb#@6kqq|4cZNL@y_5uNkv6yHcIEl% zcA$iZMj}irG<0k%UhNLon%;NK2hx^9C|&_qbK}QjF)g?4NyuqIG+b}w3Ri#~@%3vj z8VEi5;S*OH9ncCBxtKcUT!ZckJ(AG8a5kvc%clwgm$w4K@W>p*@)zV^2rt$@)Z(R^ zz~^`Zf%%_|Ck`Xo<$2a^U-lHmXRf}AqKA(;h;dHC1PvR;qR8Em=&`v>=d52Gm75sv zOwMhA>nJKM@~|gVd5Z9LFkuiEP@qT)@{QUkU@ebJ#a8@>~Cp%8^ghSh}7v0h% zS#j6Qx#sc~zKEiNj5xwzG4i!+m}pmKN&q{OvNch$v7&iFV;!s$3NZ&CbAsuuTmBMc z2jRA7#e;1@@T9@{zb4p*6Sq5H-yP6Vupb=Q2yupmjsX#ui*C>!N*F}idU&M3?%CeIhl$M;9P5c@H4u*E=3_8^3w82KQJ6#FtPpdmF+NkW+JF83x8DD76Fo&!%Id(Z0kr zgYFE-1@?f{j%D6pIzfYT!=TW2K7tD=={7$Haz-6w5l++5AmX2Kukfa#!ioDP7-QP^ zy!sEa+YjJdtDc#v{zwdy-kIu|u2E8|wYoU028qhzo)8YD#F;ZNh}T2xzwIs6xH*Ug!_5u{V?Ilwnepr_LD~Vbd`^Ljs9p<1_6VD#o!J!fxPv=;leiR)I zE;;Wzx!tw!73}Vj7^l2-77{RdsnBy6OtMW*c4Hu_TxuPy0v&X~yfM}!B|H$E4>`?wh0g>iP*kq^2aYb<5rKMBadId_QL>iG|OME2j zSz45^`=M_ecIDWXds6i4#PfZb-Li=Vp}f1X z+$yqm@-g0X$%HniRS^NYmBQ4Lf!&5`oRrg5{+ z)k%L2UVn7Zgl}ew2tTKGnBHZ)es>m@K*0D6vLVN`r%1q%>hbZw`>QqG-huE}f4ZAP z8uc$xTJj@VQP*}~nzO9B3BJho*Um}Z__I#~|KP+~=&s@r7JV=QtM+}RNiTwhy+DYN z7Z^0~cAsv4$1YH_ItH=U_55?Tv{Mz1<~O)fs5uIv;^YfII23icFkY^D=w1WriXlj$ zKTHom1K2UlI>yzNyGb@)OTsqB<1Q)@TUK?~cIq`_mtq(m7JN;EX79r!44gx}p3l zaya(CojZnB7bJ;nKGw-!*w)HjGPHzE$`1x$KqAOT8>Kqlg^kA{k3{szUs;fUpVcjo zlnNS@tGVx(il2{7 zh&@duaNJp&_)vbW3~?!;=fLfWfhPJG-t=4Y+>nQ(zJK^-yNFX&;3WkaQB$9*8k4|x z@Bo!EVCAlJyuo?rg47WM>{zAf4RymTz3RpSQw;A z5oa8e+eH<14t|hoS<{J?eq$`}KD8KaQpXRMMoK6gM?VAX*hLf9 z&UB^PT>^V?T6QQpqvIyUE*G2y$4vHM+>xEfvl+j8giCOFoLoru{iJ*CeHl#K~y^D_J{y z=BX`6AFW8Ql(=^WXJyws_PmX|32*m7Jpp!{)GgG2Wa)Mho75ozSbPaI6JSl7S*moF zaOu~IPpGN$_!!yb`CHAFe|pEtLPH)t*vRaYE(D(jfJT~+B6f;Yt;)!f1;5h5z)&zv z%cUBWCU*oia2kCgw3k(EHT5?*FbMS?S-p3IV&Gj$BCZ|sLI};qrLi-KpdU;9ztVq3 zfQ@BOxE~$);BOq$leVuA(Ro>#lR}=FC(`0Zv5inT!c%p0uVPimIMjZAqWdMxEqgtB z&!O_q0CwEEHKVCWM105A-0kyTP@h6wT2v1^Ceq}*h~!`Tu`!7ltf#64;>7vtsIi@3 z2N7f*^AJYS$*3bzZtGFV+gO@u``@wqP*hqXZ#i1MiP^F{8B*XHwNl5%LE11eee0N; zJqVgOQ>BH{&+Gj(%VVF573)Jzn>Jh^kNAq65Tpd|n+oovat7k2Mp9HeF~_D&HNAA; z{520ZXIjC){ z;WD49av{|b%i!{K$a>+gM&Ug91c=+MV%RMBV!B@8sVVX#=tut$unakBq`otgEnUe4 znh?Y?RG4@V0^W1m>)!52t%Y!rX%L8G^y`JXN|Wqg#Oo1(UYCde{LUlRvFwQOz|J47 zq01NZC>B&ofo1m(w?F}Q{PpZEmRDwXToPhq`3^VIz2i%CYNJ<2Ud^8~e7~X*T4{Kg zgTTVlyj-lOzy}GV@2TK}E1q-gxx`R?DhN91eNcllp8Qvs<9oNFFs&&*2T^Vps8Qam zt@uFpB7#n6CvaTOq**iqxse?}KCp53>f+x!SuVij@s18*0m+U9de{>w`xu$+3T zN-T>HmmfyfRTlQsl(uQMvD)Dm3vU4mcj6zWJ7UrCVRgw22kG`XTE;XYRO(K8*k1A< zfv&EV`0DKWTfogr)ow0t=^L#rlcSU0|jw_r99UU-S$+ z(#QqgU)ugl_Q`mmbE>)2TdRQd-bxGdmTVg4)g`g^28mP#m@$|H2%cCobQFn0a0P-P z`5FmpcVqF6nZj?p00KHr{kIOHQs3&f8o-YD+xo*Y)#AAwnLshFq! z=BQ0m3x{^Tqr_s(wWcNgmHTXiQq#dJ)TBhiH zqn%U#&3iD_{C_l?^>fcLkHFP=d%Zpv2$;=c{%WoG&CV06_&6CSYY3pAmo1wAouKrvt z-F9#JX1*~e`VtS5hdHv)5z3a%!x4RyQiGy!@M_h{G`Gl16dIk){Hj}k-yNj})tVsV zGyC94N!CVSNzhB`=->z+8?Al#FrJ&FEJ4xLMI;8husW*Bcvp29wPwgRcF> zoX+aA_WbcIt5nRQ;%fdiLalvW6`EJo$(}d(m}#z=CH(5xvJBfCPsw|F@>S_z&{D9& z7^fR^&pV0FNOkKv9K53|c`Cs+%Ki#V0*;SSD5B?d5ZJo%;(fmAjP<6F0|Lsq<1+#6 z{kFhpg(yHa8L5+2{;y!Cf2%q@O;RJkj`}{FWk}5#e$1Q^)f4u#aX#=y3J!zV2D)q0 z6P)+A(mpS`mmBd<-1|}?`7D0F&Sqth`oPj9HOkR7Qx-B;HkdppS#|tBH@M5Bv_*kn zQzBm)X36gmifSDUx8GpCrD=Ji9l4xt{BtUFMP9x6Vf{RNV0&YK)Z9N@&%}Z}kobE4IG?g7ZM5&~wbbl!NQo{6T!Jfo#JvmCNu;2wjI#Qm7 z-T`yNKxk4Cg!#MK;#WjMS3A$3Js$C<;&ts1E}4F2&k8Lqh(9RSLRx5|TI(bT z;^fN(>6qy?5v;?{o7_Rarql8nd3EIfHB5vseMcI79k@K39+?WiPdY=*%eSuHY-h38 zBkwF>rH`QU(?C8 zVE#)+8MbF1>H6axrpy~|E;EshEdF4lmrayjDRy^#QH?K~UX%Q}%!QjQ^q9kuY+MpS zQt0+$oS2&9GKIV=lJ5>im-1ehS09oN1Jfm8tr%Dchf3EL z;<()C1lB6^+vWePAp-0eDh{7I8xsVjpJWECx0Jo#_DUiim<-5)ig4z%zmx9hBUnX8 z9w=28JRbckM0HL=B_Bv4{vgJJ{YCR|S%!o9w0}-|y@f<(x_x%tmvrG+X+$SQQ67ah2j1 zf&I&wiNLr|54}Q})gqG*$EBn*nkK4RImnCr!5~ey`9^goB3qw?#gdZK>f!DH&V)9XSk0mLTbb zwym+hdJ~BnObCwlXZ%jd#ywIpKTId~WoDFQp|=v-N<};iaQ>Quyc1MlKv**n*$!$d z(XkB;06R9RTsHZ*~1BT^{cm+oGnu19r@6&sRp*idh(4 z>&bCJSK(##UQo29%1MA+y)YE)vA&;qbde(3Mp^~-lwbB%yJdFB z5lzg(yM4SKQ1XHq&i4fz{AAWuPT8+gNogwNb@ZTgl5&G1D+6Y^1nOV~lJvFI?iQB0 z-4M_igd5O|nh*}jkayZ)6WaHNyLKE8EHL_%y?Affnv4JHGdN@i^oUg=&;rWBf@r$c zN3y$JEuQ0Y*okIYs1f8lcnN}b$(Gn%O%&sMRqX7odhn*dDI(?wQhMqf9{qT{GmTsS zdEE}FmoQj#qC@^JC#Uz5GM86&!0k8M2-ndt9Xd&K`+@{J)#QhrGHww4zDNj6DR)38 z9cVbUii+l$7w(qqL4y*sDGT1D04Ho3OPkhy)>67IDut`YiF`9pP$s6zbR+|c_8o6~ ztPK(=q2XAkHSn_@c{c&rab;u)2JUoF!3)C(V;*w}I#}QX2bx0b%1Xa28rAL6kn_`s0J{MzjgX8ZpGVnX$Ba8_DlAlC^5Y z|16-T7vkSkOP=*56|s;Z_}pM`d?R2o;Rkl5RsxaREh7sp3+I9G+-$wC!vnD6eU;6u z!?DXutJR%kPuNYg$L$6mC}0bajuY#5)8t?B(R%QezPBx=Zd+J%`d*#Oa7E{^aZ;0I z3cvss4_XFst8}0dzNg=Tu4**-x{mw2{k{9liveGsMw^};a>9E(xjy8TwIOt0H-z7( zZvQpXB31E&Ku(Jc2+}q-|EtyztfaHS7;vV2uCIUrY!b(0E_<{`Mdi$Fm>_nG@fKr0 zN?jw4=^0!Vwg4s5da?J+sf9H3yb3h1q7-O0tYt8h~cOpZfiCkuq@P)Fl z?|t)je+B$2s?5Xrc2MPRy^L&B?pw~Re#P;475ji2G}*Z}^~8!xdb*SmINAQGvOf-z zqK8wJ%~%bRirfi;F-tsswY&?=)@}fT@*q4%&=M~QK{+R74SX}ZkKGh~tpV{b(Cfta z18jZRk4rBe^```Kfd0`@Ef>^KpRup0l9%Q{M zt&3hD$qO%Tlat*P*ZH?cLhBoh;X>r4oq`!GF=LpRZg(C@8bUJXJF!kf;%lF9Pls!x z7Z(?(jXideOK%)Em8Tk+Q_f9zvm7%yAgr#!Qg71&L*GrZIovk54#73Z!b}AL8s|e9 zktfMc(>%6)oVSGNI4 zj9J<2%+x0WwYU85`Hs}t#y(v$PLegf)jJi8xdyaq`1tqHa^<@mL(t53W?hEWm=ymZ zdc&l9xv7YVVSxDj9bwNd#idwt0Vid`C#koBcY8SYOl)OHzdGE-MnXV))rii_U);9i zv)WZ5<&zeFk6yAhzajy6oHU(IK_cH_BFvlgeGIYD(aQS=#GPg4GaLzYU`B4nM1U5E zgbXt;tsBFCzL_Kh3rM!VQC??W85QTe(X7{_1m>qc#W34`7KK7*+Lm(QUG zG||3}nc}6H3$p2WI0jPmz30pKRQDfR#dX1n72FOXXvx%k*=eQ@&fOf!nTN*+TxX?a zmLD)ErLdamkp^Tn+u*Gf*YN3coq{h76i9Q}>})wLpn4ur_@vbmKo_M{$e=K`PGYI* zN2OE6xg;6iM{p>bvN!x)B%E9)=YRXkP_Vt_yC~%zNl-P*&Pw#}#{;5uS$!25pZPe{ zWIo2Xem{ADL5sYxKrl57a;o)`YM%-cmK;zC`I|0ts#0H^&h%zmcs&go{ev`w+4#NX z&6tq7d2E-w{WBl*r~koqy527QcS7{0PFFR@F5}R#JhCuiels-8i9MfGHU33GJ~2pO zml2*x+z>x=3SXS&MqZK{69)uxX&HYFe=Su!G{bx^+t~eU?qz#V+xv<{hRdQ ziT`GAQA;7u9pFNwPLuqr{1Ak7UIIV0rey-+`ERN@lw%lf;@4@fz`Q4*;XhK#^!i0+ zJ-3?2pKte@x71@pC0p4t_-|$}5(-oNj`n;UxHvD09%p7JlX5Bpza{ zNvQ~yw0FEKK#OMOpdJmthl)Qex58L; zsiwdGOYqcX7am$n)~*;_{CB)#e5*6dLxv%@%mIS+4Fq6Es|bDLWEt&0GBwuaa*;Qj zB0T5AnHgllm(lApI&nlk@)WthIm9jBwZbH*|HHRHN!;r^7xNG6Ksrxh^J9C#fQ_oT zv^I01M`{X(z`R*<8#b8xzSQH5xEFJl0B?yxO0teX+OlnjrdfsvP@_Q?^wE?_K6FT{ zM4w`FchXBwd?Z9<0K8_}lk@Ot*Y!M_sW%T)9y&El zD0*%m=DU(a9$l^HAfP3iU>!n#6w{x<4)OgVQ224Di+bw4F|M|p&l0!y>j_^h25jz>d++u+D?m z1Z8gUCfTc#%(#NEZH_H?)`0qZ)NsR^D?sR0NyI1NjZw`@i zICPmfr;FR`>+4fXm%8XHsX@{cGwsIf9I(aNX{VVMDBuemrIz+28aKF(j@BbKnPsxp z7k^!*bVP1^;X(=9pO(t^)PRw0VO12|7LDn=&6BOeD&Q4yxp}jtcWU3=u};hA170j* z#~ts$O0SRgoz5PoXK=+XRJNll(-BI59rF`jA&-`oO&}%ysypb!x3b|_waj*3*Q9g5 z!JCjlW{wA2m}B)z@p7%!F0%YnbHgBZXU|4_`xP53qiki9bJJmqRW(@wg?H z;=fF3EMQ-qo_~$LPXn$vOAu3MdX^&b4HFN%SN+SFqyx9Tag!wz8eGXxsgNq=z`1`DpaoFewU4`ot$t2C+B}lQBX}NK6&Dv2zgv?3h^7v`M$fHd z-J(bx#;GOeT9Mf96-uC+OhOY~uxb8t6Al&b*$EJvdV)rlt!7G=i;^O6s8qQ6G-Q$Q zp#$!v?dkm#3y*U@&b-T%q{w-`P8FgDqN+Et+Hf$x1_IczcXz3PpctZbVv`&(-Uco_ z4Y4yy8vdx?@MDcFwK|sy80CbGZxM=#kIWxVF9w8Kr4Y z3rIdV(EoPYCINS;JQ7yVPSqq~Wpk%45P;Rd@IR52EK)VV!bFvVd($o{lzkxXKO(#E zYihFsH+;f8jS=9sa=)Fx z_JUylS%4_?18h|HBL87%V+@&Y8iV;bLEb{z$({3Ai)kv_95YsmcXY-1TZBZzH&+Xi zcYZ{{|M3S$NkGs*J&9Pv4j;kPK!^L>~gIkcsyIV8_)>5(&1b z;#&f_!-qGNYQFW(N?xdY|BLup_?i4=uY$JrbiI(f#AE04ON6&cJ~{??e|y9$B>M2m zAwb=Po(8;GPDF{l4T3Zga-g{)L;~UHlAMhFu=PSt>uRDs%L*D;eeKpjKice_q#s z69~`^dMa%v-YYS7egtpK5|Bud@sRXX16hxX3Z_G5u2{Epr%6RbY zkj4S*`0P`;)6^31cb)^ULRIel+CNM%d&aT>Cuu~~!v|?5%7*fgnQ93~eS|!_GMR8_ zt{+(0xRMyj-2D&;;;CAAq91G!_Mf|6pXhgcqqZ>e|!uwr9M1#2*h4>VdBh5Tmg21T`ZfU9?{r1$W+|~CQ-Nx z-TrsW(LZ$#s$7e(Dy+5{Yrm{J;cQ1R7^YU%MTlb+OirdkFGyh65VC*~AgZcj8r6p1O4{Fi=go4R zBN0XP0FCJcect*y06Stc@JC5|%A*1swC-Uw`aiGF&Ye(Snvx4lHlb;E@1&ooo0Uu* zIo3#LUgMYF(xTq(3OVh9)&k5$S;@Hp#z_%T_r`f#{6lAa;B^#X3R!LLeL>baLYOg? z8D3sA-QwoJH0nURL{O4>Mh>5U5lSi$xrV>W_R^ZG8)iUtDvNS1HxG1+!>ezg&})=a zeGZ@aEPz~PdHiXcrJky-0-^3{ymVr(baPE|gXM&4quD8zBvz*vP6zt|b|fsQ7tS^7 zf{(K;kO^VjL@o$Iefm%FkL8>Fh;h&aO$28MG~@{Feg9erhXuo7Xh9P61)A^m!3FY= zG48E#G=oFvK9Gu4qn)9JU@D9KQMT9~(dgfFF^q&$+=!|V?5k2H zf$YN3F9m2!o~B}aFLi8`MAUFJO9&O zj=hWUx@v)i7xPxqwq5YwN*p|J8B(nz{DZZ{1lE18yFsOaE7;KT?y2MZ0EGVs3ZEmx za;r*jqTiX%_DeZvre=l@5LK>n!c?86{u}YN9h9Gg&iggqHa}g4C8Ht~DS9 z?gOx+Y(l1|Kn_TV*vod#)YY};BywMJAouUqW18dzEK+@UiF!LuhyOBh&Lq3un5VD! zQuorlWJ^Sd@Ux96wU*VbdsCO=Lo$$ZR>wjH>!mh;L!aWnRJF~*cVx%4cftpRACv>E7u zuY#)0Fk*Ao$dDA@y1(sZ-vSWZ0z#GF+U6QI#BVP`7Jwa9T7yf5*Cnu+!t{IY^8g@IYZ-y*41=g5mgzW6Bb@ml^IY;Qu{ zxzIFv`2L|9a9TAPfE^9Ova1D`WAF5(_4ti7{t*8S9X~|bGxY=7jiE33zF4rN)X=k= z_JAJJXz^TAibqw0XLXcy5s0_0ujA;hhDOj)Eb8p3?=Y`NUK_eSaCyS^3}%5JQ)!Vn zf?bcBg-LVV=nW4OF-yn-Ot}z(kt1`*9;Tm-Rrk+z;SJ*dA?}{KByGAdK$mUXwr$(CZL`a^ZFkv5m(gY0 zc2$=(`F;n3qdA$iCV#=TA~N%djNJR)w%qlDF42m&=x!>W_q$u{F1FZl$3HR&!8fcA{lZ2diuRaR-<4~C(2IZz-{e7}s`$AE?R@9QUbzZb-*92)*aoglq z*m`CDs-ovMToK6eX_B5^zla}Rh2W3@cFg`B3A;p%9U{}Lo_{i!#sgDoy?oa(R_@_A z??oAqOw zPtXRiW1YQ$ldc)v7OG>Kozg-w7avGIEC;w3=rvu|On?`T6O=wx+6#htiKcVt?ftM$ zmAK2rlDF{CBZ-Y`bJZz?u&D_K4j=w$s}w8}Y(K{unr%N)uHs8h#&=*ou|`3#>^0Uj z29=DyT;m&4VZCoj*ah2Tu;WJal2_iDmvYg07_WZ?D_C$dlQx}S@?iP|2OoK3;Pcup z$6W#*x_@@G3lj{ptECG7SEtezJBiJLS!=y0dpF0Y`U9|Ihl0HAriIQ>O{Cp=QeNfx zzmNaMB}jT*WjhPW|E;=e{cm3_8GpZ!9^o{mU7Q4u)Yl!cbQ3F2%l;v7Zfq(b44(p2 z{?rKy9^{TGBUlGMtU^0)SCSk;zv7bO;7to6)w{mBTzC*aCW~C?nNU?tkO=T6L}fdu z6eC0iCDR7?<%pybW|~sO9~4T0Sse>!28sH(nb0zr%JTDz@LE)>2)=i_Z}q27uXFh4 zt}ja0>VI5s`35y3|J8BejHr=xE#YZ77Y+O-C+(kmqDim44Zlg7n>p36YRcpg7ie$_ znJka3=ZYZOsm^9<(%x^ippDJ`wSz z?cy&<>sV})!cwOMVFiFg`48VatyheQD}ujXWu7;O=xG);hw@JgctM0YS{RFti&xRU_3#5j@Z#dqg^*BLkjF9+{5^)2^X}4o zG$7u2pBb=6qTd%WQ#O?@ehS?=*&ty`6-`sRMmA{>PbVGz7Cs4f5m-WuCyJ67BC&Oo zX~fhi^4XeCP>bsYmzV8G(q!BrcGmA^|Cz^Q5=nmBwLG@}l2Awe(N3y%{BwU}!tLaV zpW7VbA}F^yZp5x-AzZVC(=&0Md`%()u;bx_2y-yeDti!y-{)e-2<(<;YKA9XlObWr zw4La93UN2mzTsP!8~r$OOZOfv1i>@i$Ikk)?=F5+Z_UwUAZL4xBvk(3LWE~hjAk}~ zXnNi2YmMSASQE*H-eaXjX1UcPN^?x4 z=iKUfJTOH&(x{&qQ4nI}-o4<3WVFC``;7~R`=+U&EYAi0f+LyP1#K{%Td6l2# z+2RB2_zMS%ADXy-cQy;VKV1?nxF2g}_ThILxyd6W_;Xfn?(dCfr4lm@W6@t=*e#_n zX|y%9%B_U;x%a;wjKn#CIT*C%ZK~ax0+RJW`t<9On6S2H)m*5m%`%zEUR2+eqdprLXTTh*6`2Hc|h zWOSmDD0gRv5XPTkW+6T`q}HYb7g|KaBPZIIgJP#<;QeRk?0vWFV%&!S^zK52ya4U= zRB^irw9(3QcVbSp+%jY}&}n$$oP*KYF#SSkTwDaqF!%1UKtUFw=yJpJMM0j(@hG%b zt6Q>;W-u1}Ve{umlF0~`!V}${Xp{L%Lo%vxw^<3%R=jX%{sEww>zSVQ@{*Crsoak# z7&MNy&Qfi-lO!?&fL&1K|NA(O#jt!B(?vabsPgQ%s|*m+Q>lItnmN$Vh*YQiaB_} zz@vvjkSDelwmcvPS;`1O@6<1#*i;Mr^%A-~GP+47I6W zRuEU3g-Y!=`?y!3sA1Hg+R)H75!fQ2bRVvL5JAYl_Z5t74l=GUE!}s zQ^eZA>RX-Biai99&eZ-sIU6|veE4A2P6N_uv7eiZsOBy%LF3DpBM!JnaII+}iCFnI z6{lYz_wOIbjv=T*s!$l9;4t-6Ydn7~d}jFkqHaBv`3d)~*|%}6&iZp^^%fbBfWzcK zf_${p&O1Og=Rsm!8ae@X6lv7Z0=y3m&8jQZ8KJbFa}lKm*#YGme<6CkvOF&H;G$$Z zrEiaYKG>xajw@-KqFJIO^EX>r&?zNU1)_en^X4`_lp^#72 zH_9tcf-0dmR*%~TW)kM|N@81%z%(CK(PR=leeSSy}K3HL|G z&XX~~3SW;4FQVGHU3Mh1jV#Ya`^{m`xl)+Gyf4&GSwjpcB^a6C^ z(w&U>OjfQuT4e7&vCtYpLqexOtA7q>VgcbguR@=95eZwzp$PJ$k}UA^!aMj2BB9Dr z>`2CJ_c)ttb~NT2;iyzOg5A(G)D3tx6qPyyLlzKZ`bfd^qXB3hcIT2X4$`cH}UTOp}FRsj3g2`6N}o12$3rtGM@eH&Xz z|M#?h*%?a?JFx93g!boSjvX?tFFTLJwX_N*cWUr@^HKQ@&)qiPhzQBD6!J@)Ou_B= zJtsfFj!rz=uX%6VY7_hNL=4wWu{3`(^3uHQ?crT473 zV&&4jUu$w=K-)|^e~Z-HE6K-+`G4n_$9$! zp*5E^{(JCM1dBOV@JzN4Q{YbUItnrhBzESEh6Jhl+a(($GGAa_DO=df?aCV4?3XS? zLit)r49Vq!g_Bno>WDD)`D(tpEa!ED;@Zcm3hfB1EyrOA1#D0p^TPoG!}N<6zgW{i zKr*Ha6JkCN!p;w<8dq2HBATumCE~}V{G*kt0ec6*bm<+GkhY%Xu3WcE5yXokk&a;= zlwOs@`xzZ$0ech*6JW>8u*v0PLR6Jl{!S*gO7e5UQe_>bVxSGJm|G(@H=gUw;iRzr zzHzq9ci4*;TYfJS2iu#2aOXT_cSDWBYw+_tHV#oS7?~B|N=;*3o?cZtmSc`NzVDlk zDse4DGq+%5qkH%gfZFp284w#uM=Eb3OTznX)&$wbhR3t|4e2pt%UYpJ^>cRrQL0t zQu?`(yy>NRz0U?S%W$`srqT-E)B_yXh?^$vot-x}2> z9A9B@12)QOJTi_V?c|B1UXIW!&?w52C;u}mv9y@}m8KIgaP#+wpe_JYO}z~UZSxWR zXm}l9#}RxEn|uzJoYjPX>1-PxWFf>X8=IFO#M}_ctTHo27L7 zB|zD{kws%2S4gOez@Az#f{PZf%G_o}!T0?+un=}Ks``P%UVjygA|5{2#l;MDc{idJ z?^gzn0z6G~8^R$XFYRKAzM0p2a|VO?oBJcpSd2)Gv6u6b+{yM-NF0>*5suyrX?qvf z6wyFW@g$*FIi=X1!1E)G`;>gxnvKuFtX3KkNLZ^t=D+g{ZgYYu=DT7s>bF*|w-hzu zIz5~hbULbePsgCESl%|IzZnyPOT1*1vauESAH-C7x7PMo` zckJ$yU;41-uel-!L#X*w%fAg1Oy|Bb(#|7-PTA^duJBGg#8aX8lC7SJglwM+2#C-= z<}^cDM}08trt14RDgbu85JhE!t5z74?=`Fuy`dO~1em%s0{RRjDPO4xV2GLHkacwO znYVvm4m_WOEc;B`4CMa5DSbA=81e2g+sJRipVQ4O$`F!~G7JZl3x4CT)S>nqGgLpg zuhe~mS#f((R&YxAfy+P)kHIuuVKmCh)w-jO2RMZjYGu$Hg0XzRk}IOf7%+macPZ^A zDV&{-28$-aFL1d2#rcDrVX9i!J$p~h#6#PTOTy=>W?grtl2nvBq0~(GUo8Z_-?;Vw zJ$`LiPIn#C;MgT~sU6jx$mJkW`GyffPHN`U?f$`?PRsS;jh zMMVxfNbZFC>>@q?YaDj*@+e;`>UCck(Vn`gql5eG3Q=L;Clkfp{Sn4?ls*jY4ki+ z_-+;9rEXbV(nd&j9SE^n;$6PqL0qYT85uwXu)9oA9=bHUC)}vOvpnQv(cF$5(yeqI zS$4#wn;?G(sIQ$>QrvQF8TBBrTE^}4m`#-!f+mq0%}qLlD^Wp)8@1dJ9Im}StwM{( zz%GZP+LN8*(i^{;OHW1KSNo68%oBi+3o0ODbN{;F9_+fhg_2%|oUnzp$m3!Pl*997 zrKlJOKujijt*^iA!4@*^og-dql9< zFHswb4zLs2qhz(b%=^4Ba_TrmEmE1zd~^*2*pYI!8ig%1;8XFZl#>}| z=!qtU+H?Rtd07)Uc!d(^S=jUXzoW?YZ{zKAR*;kzQtm$zx_Io2WEq$g?fp&DcK^2A zf4nlv$TI>(=~FcwPYuwfd%}cnVmUc^vz2*dbhi32tA)LpTe@uSo;88SmJr#c5XEFC zzIf0@c-@(?@+B6FP>wcaLJ*R^<9X zFb?PvS&iThe2xfCvMmPKk*7@SeM}h<=$8DQbjQHNBl!RsJ+Oaw)|0Nm}z=@c(dXiCo_Wi!cX=`kWP?P zm&yM9JNZP*(ec}%0ao`dlvg&HQLN9JQq&PjqYy$cH>@I5-=(r*1?JEn`UQX;C7yAP z=2vUQ)x1<$DA!!;oBN4b`@voJzj&YY{JQ!xdohi=@p;A%=^Cj`!5g`6DK_3zjABFE z#IMVU*muECUaCX?ig^t5TJx44uk{**Miqw1C?CPnQc?j%2s`40IN)wS%X};i!3_HN z!;W5Y#d^dU-RwWK;OCJt(WF^;&5T!)vpQ-y2B?2`iS`i7u|>_r^`o1KCSmNT+{uUZD{#U|qG<4gm`eK`jL%@vRJ*0nWU=>88E4 zXw<4Nf+ix*T(@4ANR+@w4b6lfVI>wx5axA-+r1~MAG>ZRt?0wW^qb(QUxkXFO2d-D z2bH5zT-U>R$}FG>Q-rB(b)d~)b}9czF8ZUS^F4oq_4Dk%;1$Q4!d>ReSV3nv@YXi} z*>{mX1=!K_Ylk4$23J7i_p1E9$O@MIc&3)o2#J_WfBvT5S##d<^So6VWvV&6@PJwI z4vj`5k@La{wPRyaT7=$T55}>IU$X;3wKzQPDx2ex-&roC?l2^swmcYwybiD=7UkD% z)gU7}H#O9O471iw_xH#mUYdD1*@MV1B!=C3E)Xh~Z0c63#6vCD$63J|});TbtMOk(9-gXcy6=6U0g1`K>3C<3X*={xPFLu zfm+k%uidnYjjb&5@gz>*%IDY$JJ~|#q zsbkM7ie>reZ8&Rj&h!0fk9(Qxo_Q`6cOA(F@{GD%pS9CKz`JGy9APE)V;1AmU_&DRF1I)KY zRxe(tGxF!=*Q8S+C7kHCBSP2~lK};B&ZfwRi#Y5Sx-)T>pOUS zhf2dI&{amn)lJ^uV!cd2^<;wcG89WZq5=KMS?19v(&6_zVVfPANC{E8hSiul{e&Cu zT4GVATJ-uJ#!1v1aL-mN{<3sLBLA?~fzCu#wL?RKUiD~3IjD}+x+-tEAyaF|4+WN~NXT&$h=TJhTTL znexw>vZ6Xs9D2}QC>uK^{j~lY(@=GfIsiM?ZKI36qSm}FE{J&yO)?gIfon{a)adQf zxKrB%ri+52ic8@Wbfvx^j7BzKTvRB9S#Eb9Quz<j7zKhE3s)B_8tc}r9 zgOtSo?)0!*=878Iz6!k?MDsvQd24I}EPj3v^0U1v^rt9EcwM}>0y=%d;DQ>SKHe=0 zD1VZ;Mj@?Fb4l0~)@+@ zqV;aJxm)H@msKE1<_IZ5Z$fp83UdCm;5L3}Djc<;cmBWt>^Sf{Y~{Fl@-nk)h+I-| zMoXnCrVb4bS$!TIp@L>uNb^`zt`AvabkVyl&f}P4;V)BGBEs)$AXWu2I^s2wfd|kI z(UOoPGl*}pj)&@Gk$Df`MSZJw06q!+1jT58D>IN5(;h zk~}uE-JCdX9Xy}#ZHQCpJMUhXeLo?^L6830enk zQAQ1D`Osc+P^cs+gd)-?A#u@ZC~2_w{#2f0q`5-P$;fTBrN3EU3kKYRZAOzt zqVN~5HG5kalMTUfM`MF>WJT0)C~E$^fA!kZ@g;iX+85CKF&nvl?xZV?o9<>A=*}d> zYBKor1MCDWE5Ly3EQ&Xu`b|pEJ6j4YDfyd1g`hMvoT#U!2z$9viUqurir*ljc(aO5 zVkqaIPp1_36IyN`4Wpz@TKrif{7ebX4B3%Bv){WmwvaN9vjY%ga=gWvanJfL8JbQyMG^3<#Dmy3M}d6wu{4{yUKI`^?j}J9Pi`M{sqw(; z-4RL?#oMB85uY*%P>Ob~k(=L>qF@`lKDOv~lwJ$g3>4UtfyZG2A6hz+0efQbjN_ni z#?^m(A|6K6`p55(C>UyboVAmIE`lh-wWN{BY?28wz0(Q)JKTJD@!g&r;U7JIE*>oKSa`+J zR8J{Q%IL`;*u0(f<{_%xF2 z?fpq#VN92C`81ku7OhU(1NVUQ$`SvZwC6?S628mOx^1G#J83mYG4|J%pX}c|PbO zvE|X^l5mK@jYYfjM~i0Rum1HaRl|rV4Kq{D{$~YmtW*)&K8XQ}B=h2)kH$!UNDG|| zv80X&fnorKE7y2yG4;NzN4qG-gp)wwy3Y;0&}#DOC`&qH#Ci=AIiYH0k1N3uR~wgK zeI9k(V#exqh6U}PuOTZFr8y3PJ``FhBj~o=!CoG>Wpf2ZvvRnmGu@L z8scCpz>bP&)!RGtF5i8d9)0K2z@4tJn*r6$!Bx3O(Gj0MHm%~XTR1|N>wMb=HhG~K z$*|k(4qiL+JsRP?*)N>!Hay^%v@}A^Z*1u=5IvLUwPua1KxSK&n=Qp#2L;Ce=)w(; z=bdtQ{tQZBT%h`v30`c5|sohy6iGZRIJ?_xMetmC(cE&^d*&jH4(q((RP)%AF~UP*L*l4nYV zYt_4HB(28r$%LRd=J)ep8;{Nvs4b|qNc$idT%EmU)l>`FZcbWMZ$9luvF*aGut%uH zky|P#r^MbyPQ4_@5sBrdFcrUdMK^ir?0!@E5(+!k`s7f*&iC$swR707QV63!+N8_8 z{R!~Edar#*a$m;oXoxd#H^riYKr8+d;R4t(WoN}bPv*W_3hwja@q}!19W}p@reQQo z6Bb={b(U@@d2e$P9IfAGrOSb#b<#ED6PeW^JtGR7oZp~&?5`7<7GK->xIk$BwI2fG;#$^_aWffaWBNTAFYf*370DiE>uX9 zw>MpY_wbPAY7uxD24w0wtAk{1Hc{7u9}$~{eXlb_K8e;5_v#KHs`w9h!Xac3;;b5H^CFA4)i^?oBfqPLDVj@ZiKTF?5@D=s_se%;+BblW1Dnwh=i5w4&^Di z7vAMiEGt=AZhcieVW-RmrR`nDG3Xew?TZp!KpH)d^;<1$`%F+eVfzz!guOXwoi)@X zh>fFkgD@xrf+=`#6z*4(Y(H*z^~s+kP8w$OCj1Vr`7V{44u7ohmlk(BEGKJ4(jF9rPU514Ug9WhTcHbUv zH1iKphJEMBbC-k?z<^;Gy#;k8>v|IuU-Zjq=!_zh!p%d-Jex3D&$=awXo1`p-0tza zo9H~aQc6w-?8_crPPTsd=ey|4U$&<~iEOGTm}&`Wm(Z^Hi$cK?bEu63Dw4aGZZ3F3 z4JUTTZ#1lL91y84*RDA5u30K?kKy|!B8rY4V|4tjQKF0wj|S_IST=B(_Q@$dqV z#>BD@z|$;pMmX)niJ71O8>1+{7vQ+00od_kuO<|5-kGLqZNkpg?8u1=u-a72%Y@x zgwGV!J|@Rclhbs;w^n`V)P8N~Tkd_TzW&V35ISLKF3Nd&;aq@^fr_vM?{k1iXAoIU zA#okf<^3R$UTk}NSqYmuK8cPRQ3oTgLJXh6uwu&4U9JcP-kZ+hxu&7afPR-SPuPte zIXBb}u;VZN^dhIF#kTrRS&-w{T$;tQ(rYMR{vqm+3Z%I$N!n()1u;kpRH43TTF8&|rpuFx?m_8rrGARJ|6uH`^_q=pvkm1S!M zfhXS+?4$bix%Edgz!-O-S4*43Z`Y`Cu*#}_3Hde^9s9po4Fs)PtBpHhf1qp94wG^C zVc=0<(p#a3X*LG7>H_{H(YOCJ`8{gV(&qxjPpi>Nchck3p#IivsCR_-bC8c42dTkVjDSbO~C;m#?aKcF! z(xN>BlALwuWSQ2kw%~W$om&&?+`EN~9{Ev^0w)jpvpNz~PvyUPSF;wVHH`I2z~ui! zWS3{$I+_51?-T?*ab&4?M7OX7IiI=$LOuH2VAUz*!_NTI{P(11vrg+kcNkztI(n-^$=tVI_v<3UBXx& zy`e~Bj9f(Kq9(lh)nE3nsvmeoXIG9PVaN6UhFH;D%p{8gNAz;&%(d3KGv81R8r|Q= zevm1Cs@fr!CjPp~l_sr&Ah3DRD0!fD^2hR8KqT6aro^ht{K9FUs>bw3c5Hj+*g(s$ z7+I^J7qJ&X5yp-Bi8S68U>u4cV}ptVB>+3JI_C#D6y>711~?C&k|A0rs{lLI-9#*D zu1Kd?f*wVBysiz)rSKm$sZq+wy0MYS@CFXS4T7`{yDudP-5cX9T=63*EkFmo-dbNw zbZ*~QFnT17lp?#}QnNhcFPExy2EjAMBJaQ6!fsDoQ=jd#)F8W;VHbxbdwlmka!t}s zkE4u6n>9gM2U>{`Z_!WLJxL!Xz7>rZZP5Mx&T>h$gg7$84c$){KOWjO z$QH&W3mHJ>IHrurJB;0Vaidh%W^~H9;S<8Uyv0w9%1!}~gf|2Y?E=|pI=y@rdM=J8f@y>EaW4es?#s8HNn@i!ykTl=-pquX=Myvgnv5#e047_tk?0Nod- z4ddf!y&Zq!Yz2__9u;be6lNoV8LF?)u)6;v{RGRE$Ri+!*^URCy+a>#3bb`N_YFu?-g=|^Bn4HmdVzVTNXtT&7B@2+3JNaLKo?5!#8OT zH!zyOOJTSS^&1U?GCdT-a~=yDJ|^CZ?>baR0xj|M*`m>4)0{Aktp7cK2w+E-U#f>o z`O7xN=@nr}tqvF{$kt(zz`QxtFMDE>>a~$;Q#&xWJi}p~lfNn!&Wg33p%G(&aZLb= zpw%0}bBeQXf$(|_*{IV}@Ric8nJlC2hud!b$Vx<>kdKM!qI=}LlbeKeVk|~z+V&VF z$s$Hk##@)gcM%b@Tx?(4Uc0@$6-ZKuE2-%m4qkDbG;_kWNm_1{15tm`1 z$Zy-e1S{xCHq+%qEVY+sSOuox3U>M5SquX`tgg_Z%i+@*2{ZXVhdJZ%o~Md_WuG@* zgaFU-dc1!;o(Xqv;EXxnRBs)Aq5PXtkFa z)!!9VlvD4-&4)glAH^b8% zsCFsLFTYhR7rvILe~FjLj2u{ue@ZdIL9eDT0}qRY-}n93i7@OftN_#ZuKz72E8|QV zzthA4?3fddnmDdKW>k@9ZZV*f+ckrV=XZ?Z=^9zqK>b2Yktb9O?ytfFv-`i66YryZ z697Y8viq2JGCJ=C)z;;a;4vg%`0c4pH9$En?|Fn1EiC%-rza0mA%6=La6DruMCc%j zD3D>_$ygFTO`hXBzNOYwG`y(wnIGhUfhQ!mG&N4QS(ufZbu#d0=5XuD7YkZiLWfDJ`H!x!+4eTy zigY!e_kddbj>w)T5+m8`yF8>&IZp!T*y-P@>Uv>JZ!x>}#5Nu2KGYGQSa(ierlVcT zu6B1#+;%`D92;~YsKA28We|oE=xGjoqtM5v(jbGVTAUY~T|Y%Lv~<}saA(2}PAT^}q|Ewe zPx;ShRUZjh+kGS7R*#91$=`G;^;eF5z8>KMW<0WQoTmhKxn4S~@PC81!6c_#%cZVn?dq%bBCQJFh7lOqojA4UE4s#l9wx3;ar&5BUMDWX;18RxDT%WVYfM%~m(xiC_TYn7)r8@LQ$Pcph-y6ldRW zH}ttB7K{T%NZhCT9g|t^kA2qt7tfIjLcKt{0VKdo7+{PTzrVr_KzBaFZh}4fXg_VN zT^;s;1f*WZ^`R`5M8kLg+lK(aJ|qC%3Ew}DoLsaR5W~t$LRWEkr574S%Wqu=+8SmW zMq+*&9y1TigJP`?VShVx^_9Knv7nM=Jj%w(>cz3Ev>b(a>s~88dY>Ny>|jA$RFJbw zRiIj@rP$LU*2ZJLFwC*IRv~p#)0{3+85*>?>Fl!eHRYb%ay4(b7TuoR&oX!>=Bo9*vrn`cLJ)#g zly`Z9Nl2B6(&u5*&j?zjOS7~s)S4+Isw$4r^%iLZwb8a7FPrq#ML>C7E}IFE+XErc z0<-vgD^^bmfm$+wI5NvGX-eAn@pszznShmDA7Dp+-2DWFFXsX;55(ogPqL+LV@r|u z!TWhC^yv2TkSp?lY$zlY%$_YAkFk(1NdNlh{$fQdLc5|T>p2_u0@$%Qm$YDc*tvF2 zo{ow2v~MA?iOQfSUSD#8GOD$53T@pUfVoz19%Zs_-ge?m3N1xS|04Xi6%4!o`$%-9 zfSXcj*&y)}>A2I?b-CjiB6D|1N8f^Y5fc-H>PD;Ro%Nyc8>wsKSi-z5ZIOmidn<=D z_we^(EH}Xv{Bb695io@f>}U^%nZyd+3(HRsM)9Zh4`bFDL*5dX5{)X;H45% z!wn1sM06ZM;--LnIRhdF$R_~CCSS#&9%@rd~&* z%t?e0-;4okHCoDRIYwOU9TWbN5wAc)0t(|7C`7bKZWbg!UfhpERYy*hre6GVQkW2e zK{H$mv?xZG!f=A}wz%gywGKwl*8xQZ-ObM>nPEkY&?Br{{|&oRDg;^4y>>1S$k+wO z2^{?kvHJU>`pp*oC1Cd?>h%3zV(&DS`U_kkj}|W5KRf)BKz2j|!3sX_r<7`H7vq6h zLE}Q;_Q3yr5DNZV{gEz6vtSlDB~~QtM@BqKWR)$0j&?m-VG#@0J>j18-LT_|(}z_g zFGqCBV#+_PkmxHI^(u3@&{@+{2O$97XlLeC$4f?pvzXXZY|2jr|Kl5 zUNrAARK?9rB>a0#WYFC5J8jxb2zEGWU4VQ7VBE+oMj&&omgK0w15;zQtO0edKVqc? zj=s%D;~R2K+jMgZ)D_>ZC4;+f%^dw^?*(v-+NBlev7NIKL+V9N2I!mfYsnk7Euoe6 zSrZ%S69L>s8TSwfm%G)AFQlDtESV?9et|enUS~+!nf>%D8A&KBr(IeCiozuXm_m^y| zx$QU;e*pCazfmC4oaPrZEsV z?M50xHb>a69|IvZ?_2ESVDJ-On$n+RG1D)2Z?2AKyYspK?FIe+_Tsv8M9Q2iQ-X*U zD{T8;#60^dB$~?T`K~dTXPUX(UZA=R5fGVyZrV9Vz9y0$$4W2ezEDgu=(HN#q>Bj(?{14-y2=H=?$S4AR6Z zKhbVoywm&qFds<)=w(y<ir#e1+R|-Bnts}fOm7^vEJ~k!DKVMW`l@|8%G?76EmvD9N_#=Ug|cZq%wAfd z6DW}97a@seMj;TSGQLKB+h$H|lQC8CI{&t`-uuVtX;5P%hz0Z}hqq;E&kG?tMOWvG?Da)BSJFxBC(&l^c{q zkXTRmNj!PHCABUqok>KAv+}}pY%_Uym?;6_H=+*6x#f{$)!2uFaz#e7%6nEkx?vpp z82t$u-Bu7B)+h7Xs!3-ex61fwRu~flo*mi=CvHGV;LfjtJVLB%3IIEyQ7bb75+uWu zM!H*Isp(K99Pt6OIng5~!%uBT&l9JPl~?u92Uh+-h4|spObe^?AM#Y8kNS4)v)^Zz zN6E{+SNFo*4#(5c$F)$DdxhzgG*8D_pLbgwS&8+wg8s$QZST|Yk%JsXPYTgg(0CuDF2tZgXVR?~Y$gtF7=M=^NYkNn7xOR%TBR7xg&s!FCzt-x|btlN&+r zCpXdUyC*B=+Dln!&!C-^;XONfnD2m$^_o{9l?Yv)v)+)5YAy3>aLX{T1**@+0Cr>y zGopc77VP01^M6x5wWN=#FhltFIt?4*L}v)wmeePi-pt&Iq%AG(wikt$OV2V(72tGq zllf0z1dUWAKnPyj5>r_s(IM_aP4bv5o>CgA3dLPFcA;#?dr7~j?9!YlD(Wk8la^yn zjSLFw9fL>XL4ev$3v72#W5dKPsA2~~4;fx56?q|(1@^s(R?T?GO9m|!QYu^bEwuLnQ_=FqbMO&Lhf>;9j z%6R|lE6alUfA*D)L;?EBl(he^zB1t)IW{@r`tObM;?Fv4UfJfu&SG?abT1Zzyb+#l z+~Yp1Nou)?AYmSSw;+1b4WZIP%xekWb*{pN2^zZ*U7B2i;MEl0(-M)$zYrP*L#a^@bOB& z%Hh5UJe%a{Elu4c{5R4GHR0M=&!Ea0J8EJ8j$Ou6f=Ea;QI>&^n6_}&h`Eeh7RgVr zqTniX{L?r1s^1bx`BRQ+%PqrSe<6(5m5yvnR;uIDW9u`#$=9j@>zquR+tGS)hl`?+ z_w#k(uaEKPz4C&4sr}}cH9b-#NYm1fGO;`-fc$6g#M!iJ9DX{9^?l556< z%nM5iFEQ9U{S22u^x}~D$HO6KZsnH+z)tXr*T+KDH6-C@mdwJ|t{yQ*YNk}AZaPw- zuXlmpRVFjw`Sr^cFWLTdqmcJWf;4qty#Xu%qBFQ=$|F58?pj=9X`S0jwhLWw9C+6-t@PZP$^yTQ6Z z5z;_R^0ucZ#p?vGJaaH5>Rc4rSizFI+o4uYXJ5sqWQ5zxGd$7WTcw^+6DEFW> zIe9}@$mbF>+8FA|g3D<>?wX~KR@+b~DJ;Q#?;?R*CMQugDmU_FLz1(#7?xMW-_$fp zKFqPw59`ftz15(Ccq4o!c1==jzO->;6mt0(m@N`jZ~ia06KS#J(;TJ-XUy>(S20C5BkzC%V@HgY>*-Gv1m`e);q*kA6RrU;jue53fF6cK~_ z435keIP^Ar@$q#htn}D4&R4`oGb%}LS9mHm;O}rYa=7qWk0yhxcO2E>wb@}^$;Jv; zx6c|^U@K>Gq0cu9@h5;CS{EpC~)BVF(&?2H|%=J;g0RugC!YU>IP?dBMkJ#ADXiLn^Fx{GU< zSnVxAF0Or`ATQ-n-nIpIZ+tUdOEyt95H42_?2sbGt0}-|pqtN)G}o*{-13wYNOKxvxeLcPL%}C3+D7FYkebzU1K+Y8CF}4HJ;Ml^V=iVQ z0Y}w<4Fe!~O;iHZ{%__EMe68CFIzCR0GX9P-^S~a%tOCN6USrhRKC;PrHV!a8X9YF!F zOE$GI9Owf!{AqwM8v}kvG9?LF>_% zCAW%54-5^ju@zH=n>f8x`@25}m@nAECpVL;0yb8B+ZK|4p?RgEKvjFxJeq9oU%58w zPzGJ(l7D9hjW9^{m5^OIjyB+_Maw<8LS+c4xz9829v?&6z60)XLxlKsLI zw)O=-48AX!r84}gNfoi7HyTx+4F&@p`9`kY|L~N$zI2;^{CsLIk`09ZR?#uNA=CmE zF6}wW@X1kNn)ZJq}{*&yeiU z|GCuRiNclNxsz+^H}*2vFI-`!wMfQq!oi9aTo|;h{gK}1oAfCQP)FKqtr?*MqX~~e zaH~-j@Em--;{=|9_3)E1!)pKlxF2g58^yd6{k5a|gC&SS1Hw#tZfCTJ?^yQX$!Cmz z#}IMe2S&!QyL~m1ViDQ%*-(Vk*>w^)fIAckuf4iI&%eA1zN09U!|QXu^a2}e1!R($ zVRzrj7iALkCpXTJ&)y6#Ru|Q7_2AHNiF7f9 zJV&-?Vf8K|!!r~I*0Ox@ddrCb5tr>(pAB%{UEOyLe#-4(_4(OV;~Q?j7nm++VwHHy zAQ+S#84bDo+R>`r#Y(v6)n${M8!pOR_s6CFkPD{&(0=mQAt?yIw6pMa>A z06@#e9K>0zoeKKbzoewy@^Dy6*ZPa}tth<{JJcu~rFJg2=dRV5S=;Vok^+BCOO${Q zxY}^_6;UI~#t9!xIB-%dO_fC5Sc~%D5nHI10ukb1?MUNwhfWQ~v(5|H>Daz(Hj5S(V=3Tv@@REC`=^Y zTt1SH?i@Y+%?|!m9Gp1s(9his!PV3Y36Ra@i_j+BUj%TJm_h4=K?t1?x3v2Wa6&H@%VYli5Nkqvli1B4 zIuU4y?fd@sc+gOnD4Om$oP(yxq`Lu+W|@9}#=M{0o-kg5!*Akp5~A9-2{!2ZwC0P@ zz#r|8G`}-tvbONUd!|fGv-E4n$TruHBr+y>)f?BG76_7MIZ$DFJ3wPVp=Pg52T$01 zRKJe?R(Z7Wq3Amy%8ea8foLTny>?-66Si#6BIlqy9UI4=jAzK^P1Zfb_QgOh?6F@VU0Kar;II$!PNJ^{m72P?~aYqccQ({?XlDa3|xIgPF z-uG`#G6V;6&YkMZ5r;)M*=bLnV%sO8g~#3rH~5#w)oN*g4@#GB5C_uAySl5TW0}^M zWAS{l&kKW8cx@SjT$i%#nCvlTm(+~l?i^+CYsbo|;4@@|T$(sB36=Dt?KF|~v=Bj} z+2+7Helk z6heDfmHgM+i9G~dP~wor_qb5xD;Qi$4C5`OUNcWj$#$s4pW*9X@|Ahg9#2tNa8Hf3 zL+SOk8FwR&NH}y#0WtKhs3e8@Pv@rIY%vT_Mv`BRkXS?&0NDlX9Va1}eTh_f;?P@} z$K_D-pAx+6*#Ogd@@J>cCbEOQ(OCmc!yNiZhvmCj6>c_XRL?O1ui z1DSr8M{!;SBK_;ibm;fP*S zV>z?n=6`I|YsJ$Nml?m@53dc0sNow0qsW`CB@+vlrljFX#2AF`JKEC)QKmC3VipWF zoNfSe3{6CRsaKS?srFhw5Yuy%%44bNw!vrQy_ETnH^ zx2@0=lqMIYa#kUPM)8|N=U=2a?k^I$JH?NFTtBTzSF*QH-*W9x4S7$rTeD24KcxsOau`3nQ)lga90+m>DU9o^8rBd3d@H{BA1f(6)I z4DzPv5bs^tL1RT~8Fp7^XcHi{-`_Hr2jG3Vr6=A2Em`zY(NMdTQ|XpW&r7&evydh> z?M1-ygv*hah^j)D(>t%aJ-e-{!YA9!tM7``zGa_LYpfgnQOIOLCI(Y7h}1-D%pBwp zLWYwOPu8k^OWYE*9E?1bF?_B`HEuQhwTC1s^J~YCT!!_fps2d8&=-Y5t0~dYPH{?%NYm3F= zxeLHh10D8>d6Ux?F5h4WygmrbLC@AbrP^?D1|6j^Ufl3M?dKS?ZL*7aUk1 zpf>|R$<~_kYezsKoG@r#+#8tqk+mg_8c>xpWh`b09R;fgiqTkwA7#^F*n3B$AYE^A zoF!oIz1@N<(5zU;+<{9k@^x%R94O2yuqid&Wq%`Q<*(er`MNHB?T0hoH}(sB9xs~4 zr{Ca3Exv8om<~fSUzS*eCf>j}!%-k;#PSsQ9!w|DoMT++*K6BIUtXmcTorM1{&DD% zv(2R>_U{`LI}QC}LYt}^mqyd=b}UDm@%3r0EPAf#ygS8RJVpAoBf3v2NzS!&>mjnG zpNYUJ9+y!axZv@i-11!y;Ut;F{A7>{5%;OSaA2KPh-eATJAdZq zKpfnlFFZRw5PQM}C0EtU$Uv0#K3e>?jr*55n)~O5V*qUOe4(h9|3C);JTvNKawd~1eu9!{ms9wRe^B((xqj>3N0-7cUF>6qKbhswCctn3_hg3MfqHb(7C}Vez?aR zP!AG~QUg+h+GV(_d9wjngpW?IMyQ&~SI`=E$;3 zmPK>WdAX8EY9)s)8=WJ(hfr#k$Rteta03B`GOuMnwkcReB5%ZDfA`b=O~;VG^$TOS!n2O>aOyhb*_ zekMc4P6iFg4=eQW`HfwbCEM{@`S?PDN4PMSq`WWz0VEywsJ&0WwzqoOWC*`pC%hgf zmfqMzFP&MPSUE7dCr2|Ug?*@}D$N)ogpyQ6*61Vnf@bWZzfFwbNmAFxxoXLbY{faI&z!m(C_JUS+ zONEpnqIs?#ZeW+Pea>Ju_!uh;ivds)QRc#ZJ3q#qs;4~iFH6(a+|%mHVWJd$lV-12 zn;`_TG)@QAiE|W17^O8gu~FT1d9zsSH>+mVY%Kf2{*@+gLFz^^BpeKJ*lhlT93v8? zh(gYEBjO(Yt6HmUI_b+E?_BZ>>vb$H*VBrUWKX?r5GqdWsT9S&@Aacp_mtCQ`D@2e z!Hh3SxT62v4?K>@cx)Z^a+Kur-GCI*Uj<21uqyiiL?YSTe~q7OcsomUsE`5EfU((V z(UC)Y(A{+hHfCrO>?IH!kBH2+0sVwX&4w)!{7~tiF0Dv%EGw-^<-4y+rER&?CaCfP zkhA2ZqMyOl%SxY1<f>mP3H?IeHcKS>f+e}4DIV+U=<5-C|12ApoAqm&!uxXgo0 ztd9bQ&dn!Q5&eZCZbQF=&yn1JSt^!)ck1#zB_(u^xbErDOwVbT!UL*HBrU$A2EwNBFd9iTrp) zJtd31DlF@|y9v2hJYPUWuY+l(9p;(0K3h`_DUxF@s@Nk-9ll_AjCUJ12TOQI+mXpd z;RQuP=A8Fy$3o^;=?UnRPm+r1Jm)P*Ti1ymJz>;=s(OMpWtU{2QF_d|dngQoe7eM+ zvcHArZ}1)oIB#97Aicc_+#|qU?Py*zX{(5TPRy`sfq~*Ac~3a6?`aMt0A>&G1N1?B z3KHn<+epRR_il-smk>d&{_KG3(!@}}_fYA*YAI4p2vflw(CdO)MqzeGvadFNgowL5 z5ko_Y!wKnnE`Y*Exdk2gs0?pAXk26*K zE19@Oej-~_HkRC0F^E*?+F;M@p1SRXEza3oAh8)EhY92LVayLeBwwhd3 z1ZE+6=^Ja3D-^l6uhMcs?Ne^o7oL1u)a>;*K#Vb5(Krsklx8APNU|7*t; zw0FE!k-t!rU>DjY5O5D*(KVWGB+OvFs03|PH5!@1PwvZm6q~goAIM(EMN|N z*>^=Ua!uUQQa|eh0X8rJd?jp^2mZF^-}QCS4-tHvO>!XTlGpCBUH3TzEEg$hCz<3* zs%f(Gvpbg>amrve3kOHD=ZMG1p3s+s@!7tYsVwwGbH@TwRK^^9$BjCTTWQ^d!zk> zrddbmyI&2E%|wuUSwYjYy2w7(Qm!sO-oU?6dfI6}Cx*vM+xBE^P;mutB+lt|MroT;}&w$weel3u6dbqr;{FWNY8_d`@ zS#;f}hb#IPByS!k{*o90<$~0uQHQ?FqZpEhCn9`Z#L4Vf{NdyToj+3!p# z59$hKZH0;zka!vq?7JJ>*&H`T(88hdixBAa<~R31_DOP+0sm!MAT*u$j$R>)15K9P zrvd`8YE6A4s;JTB)T#CsO~SOX;f5MxcS*P+z8|^?Q+M9`VDw&C1XRuO-*iRuw4#Bb zU_hC79Ois;t-)b#5FJbe85a{LNG%azCAl5Njgl0gv7{fd{DA5w5GKBj^5<81&9`@x zSxb&#CU+Hlvsph-bqt`GUJex+e*L-P1Rv;H0v6oF2JkozMWSeJ;+lY=`U#rA9zYB8TXh0On8jO=y+pbBL1}_=GZfXK(P3e(pctU;zHvi3sHRB0~vld0-n{JhI{dc zgin?3p>6hZ|I4)rQv;;UagYm;$E3-^Bs>UZr%IB}|3EiZPUwmi$$9k08!So*YILYT zLDBjRR}LCgP@15nY=jagQ|1w%UTz_-x4qpDS}(63qfwsOa8Jz&Bh|pMh^K7}m~2ZI z3EeXT$(*6NVOO;5MnEQGOWrgyY!w!gij2^H+3@R&A2N}f;x^(CmVLH9JWYuItqlVp zMNNPl-gkX4`na};HUoMjf3>O4N!fhdtEsyl8F$ub!wvifu#`2595&0VLH@G}T4V+x ztF>G5Vi`Qnz$bbDgHjY*HIhA>!M4Zgci*Xc+U2l8%+RA|^?^|Tp6!rqjNV)>&_r;N zt{p0{G#I#bx;w(9Wm7 z?>0-m)~6uUj{MpPmT^w@ncZ;R%bHMjE!DPm|Ft8(a{mNA<2_&iU_P!=|D%u1>C;~` z%chTow1py~&$;ruG8)qIBc9GsAu(D#hH#mZau#kUqW=I~NJF&)vePe({$$4U0xE2r z#?*SUicHc5WZ^=geLubFY!i5eft>BWaHd4d1g&6EJ^<#`l<9}GTrODrBNel{{52>@=dxNcMxxeVwBz(Dj7Iama& z^o6cZrm5CHn5qcjPMrb-H`0vyoAB#e3=7N*q$6DUv4a%u3l=v-q6~f%mjmmM;F( z5E7-!fgeS`Si=AfvW{CuLS*58d`qsNdxpV?0~swOz)r_Hiyj!9gG~b3qpXo>p5Dhwi8IpXGq$%oe@z2T8sJiExq zv6VBs5s93~o={ZFyHW?b6G$xb#Xy#J_4}cyvg9wC5NG=KO?w=SIdNi^@2{hyb8ZDl z<5xnh0}%;QdDvL5A|*ZjgP>=KkNacqh}R=;-i zc4NtN%M9`XGOX^BoK$j&IFweR#pqIVrl8v;Ot^8wbEyL7`FXZcQdTIy5#eR$q$seT z4Cgr2C6$@K$GGq@4mx}`fo|V_HfICZ@l!l4`idBuxEaE7167=Sgsle{R@iHJ8EQ2q)T_l9P*OIUYNvRTUSs5xS zf3W@H1NstTUGp{kq5T!ti!5S>Wzm^ri(kc zB4?zum{ns(*JdTqE*jEw`U!}W?Sgph-Z`Kp05m7sG2&eu{`~XWxbFV9%9#x7c5Au! z^ph`Un=JwHYsZA_z6&Qdmq0>v8v|ZF3`Mw%x7DvftSoHr5}c*FPhwCV2{rlCtj;v# zDO%WQnM;nqKoLH#?pR+}wTo)1wi#I(Xe;;;kT91qp(17}dbptF{UCq}v~j{aSN#tQM*>Ihu3f#dWiJfw4=E}? zH%u)dsHfB-fHlcqPA{u8#w4oXHQ*XsN<`aO1JN?vsh^~KkjlkhI~HcKUVK|^X~|Lf zj@(V$2$se+ig%{ZP^_5RMBWc%k-(r$BNje>B4!6)j4)+9q^S8b?zj1YJ^05R3qDexr=KZqr%EOpCCc(0*!7XAy$gt7 z5A;HJ78v=5sOJeKXx{HYPMkZi*4G?}G)OUAlAhuqr!xwBw3vSt-f1IbFN8)DLwyL< z1xWsz(WoMcmdnsvf5Zbz^M5m-ip*g4YK0Dy5YkKZnGO{+PG1*dO$>> z8{jb>662BTN4L{F0Ci)j=0#`HDQH(A^^!f@j6mJxK^5sb73|)}_U65Grs?ycI@6i& z_27l!J&wA<`+v`qI{!+fU`N=DLyVc~-SXC=zuADbxBnZ#T!Q+l-;$xA1FE2)I_HPj z#iT1%Y;2|iY@o*=EhG1pp~U`8U2cA|sFq}uSn zzz?J-thsJ_oxlL`vIgiB0Hv5R?~=fShoiWrt@M^r7D~L>G(6Yb=Z{itfSx>z@e@cz53atuzT3Aez$hvQNIDqkm9Hwc&EF41H!g4rB?8rxgz2Rwa~L*R+s zAfT31ke_k9O^LF&erzKt3#*v;-rQIN%k0f38w0jBqmHx>Dj|*!Rfq>N0+Rext`UaC z;iNDYPMOD>>*2LD4yIHTI`5^mYH{+IK@7?ERsaqHkqa4gLBWo*w0j1!Ri?EqRs|MC zR2m9A;$QMB)=p1AKqjOGt}zeBMhR1=Ecr97*EE2VT9)XqDh|lna!hv z(Oa%R{JqtjX{pWMw}LA4@L3{JWEYuX!DS2Hffo!9eGu?Dp`s4X*}0s303oJ=9gYw} zGT~8W)(m+kMHv8=TgL2`4Zn7TTHBvnkjwnDId4Zl|9h()CJ4dhNWl2OwJHGcg?;Rb zVtXF(#33r?2i4>Ous9gU>dIY?eO^vCdbGoCX~hTN;WHv_a8dA$gydBVfg_PA?QT4J z1NEH*#Ht53wh4EScM#@`bkp;TPxbCUK_d5(;w1#j-AVN4kaWkFRn!-DDeo=M4&=G`9ga`WfE-n_opN z(yGU~bwT0|HR<8ZD?C^1_qI6$po%{FRN8D8imIm|dbkOJcG#Xr>Y;9* zi>1ITDOz3FiX(+cEbAnpUHeF_B3#UG?JylB?6E-nmI!ZlCwH+=8{*UqT{A z$34W#Y^CzJa6hAtKo>+VrP~0VI`F5itd8@)U7ARj3#I7U-)DNP6{JOCUr;}b+4D>U zT->l!Hmro6p-^gK9PIGnKG)yryo$@AHQ3(L&p^=+KI(9mn(e7v=zf5$1^&=3&-R;o zdesbk6%NnDWo|g1Dt>igK$~DK>?GUv8wA(x$tu$;rD({1?O5#spYxU(Z&}g5V4ym1 zzy0-Z>VYjYfuk34j>ra{xjT(?Ktp3w(q@o=^@MlCZ;M29364K_uj!P}9-E`tjE(f12D8BIhJ4BUTYM$NJ>1(_3 z<_5z+gAwPdT2XrgcKA5|2=UbrsD9FO77+zGZ`{qF0HkAr#<;j6V)uewvCL@x60Uou#Wo`D+`8xG>w2O7aGb&4eV{z zKn4+pR7b0?X-)4SKl3IX({0dKIbN);n?L1y0hE;A2#`pP0rbB*9}4dsk7nz2?mA;- z9cKc`*B1?teYlc|Y0UGrvyw6kRjMC7pewklS=@b|%d?|>?2>5}6w8+P%n6H;=h+og zlUa$yOltP3Y~K;c+;8g<+21@1c6ENeVq>lQ6gcN;@MJ0}d8aUZJj+C;Mg3eF?N$wp zbdSdK%i-OcAkpr_Be^J5on91qh#-d8c?Rd_250+|3Z8=_8@-T`$H1(@tihUrg@4oE z32^g1kn?7O!9g#aqOh$f7zDp|RQ|Em_3OHf5>c+qLd_aTWuNrua_x~Wm9c6ScTHN* zt!8;z-E{8$hx?QYjB?eYi%~itQ;leQ_Em`tw^rFAuXa8Df24c?afp*Q@297$^$mc& z6y%`y^mL2>edJeGuk0I2c%)K=_A1@V#)GMWtR9oa0=N((oN8+Vt&mdy$V_8xaRtaF z)q8@|+sjecf$28|nsqGGS33<}PET`xz-0AM%TLSs`}RT77pbVl)~vnw%Vq^>A%E>? z8`8C(yu+U+fNMdfGdK=^#7aE@!e!8kPQ2dJI6@d^0Z zh>!JSTNsOouI5)uNa57=?DmawD1a=1Zj3)6LzY#|-#geYf?>(N1~Z+men-G zIZ7HlqF{vhplDvVLP^?{-&_dE9A&lWN3Mf;@s}Gw=H2)?S3c8lkWTr2FM_hM%^j8Z z0|8C|h`sPC#H!Vz4tkU@;dPv@naU9sTYU`G!t_Ye&TSm_~slE z*+(_a^Am5b^17WAq7qCR)^#JH{%Xr`Zcq+|}R!^p2-3^uG zjlR+xzGBkGz-nK+!pQu^sWhqJt_bhJGYgKHvQjMn>k-?K3GE`au6bzvae>8dA-$3@_AT6Nmc}CFdf(EMVtsANA<}2Y*G~OBo!S zI7?KTNCIuT8-R1EMPp<;MVQskbQT=OSjRe#XxdXUkTVB?;`+d;SOfe!rcz$ky_W%m zAzycOGLL{dZaw7X@BulFri)gz-cD{ON-d+dSzb>*&VBSYR>T%|wy7R-hx(JF z_PcV9k=l{v*N%H$9~D-i7EQ~P0LN~*w78ca9{uz@z}bR`B#m4D;UJ#hRE~ljk__+N z#PbS5(HnWo7(zrAmkFE7x-FI%m9>mXosdw;d1-PK{tbTpku+y|Vm@ted;O;pV8bs4D3@pB7e)vq$t7yAuOFeudEeYLX~8 z<=jr+pYYK9pFSVwI?IyF@q!||;9%}b-$_xK&>(<{^{MZx?;Y>29dDg>yi!@0Y~uSz zB8Gcw%SViPS#sPFDR^bIM z6I|Zb(GY4brL^+}pUSX+j$EGD%1IXlB^Q* zZ};RmqPgMqWrq6sF=G9L%BS#Ms+7*K&QS!C%Zq`9oI?_#;j6- zH56km(L-w>f}k*yW7sUYiu%`%U+FL4B)ND~Vn9D|2l0Ni0?H>UgrT1xG2WuZf|Q8? z!09`=L!^R_kkMPH(UFIL)z$t@6B$|1-k%t+LO4q54-V%U#~?(QEY>=>8m)j2_{MdS zoPiW3$Q@#IwiM3*gwp0zV&Q?@$WXU@-Vy!4`|fLB^szljd&9p$fn$eLd5w4X=(qNEnMpbL|!6r-?iu z(Gb|UJ($*n%D^=-MX<89S5cs4y-)uVvpzhkYaQp5+^45|F(ENw-^359j#$UB;f6*E zLQ{)fhy`hsL`oT&e-xdAs_}A#7JkQ@Jc-Z$Ye%e=7afi*TPB`&qnml0Mz&_!RvYgl z8mB0EtI9#go*m|`Q-?ll=<3sD`K4&DQQK5P;jXb58py9cB03zjXx#|w4h1}%18uyS z?S`<-xCSnOW$-7RI6CFaD2EvQd@?Hl1#J|U+MLuEUAMQRU%o(!HPzBl>A}`HIMcjRm|B#Dn&F}6%!OGny zbuzx)wSTbq7~7`@LSoK`XgMnBaM0FS8Hi_Z^Y8A({?Nq!%;)l*4U@8~j|qIK&uNY} zC5mdJ*0D8Rm#j}nWueiNiZQZPw5TE5rbw!{8abq|`6G{B?@NJU~ zj!b1?99_A^jfoF@UZ?8h0+JtZohLUn3we_Ah<1L3w0#wq}%El&@%ysRH`RC%tp^3+TKn(+pap5gR z64ej5_cC28a7wsr{0Iy|xEQ)^G$fCLLAy<=7aT_XAmJm}<^80ffx0=tZ~=R4TTc^S z5YQ9OvK#B;8B|K&RBVPyART{;{mR1|8eoQwUhAG?PUc-kIUjsg+-jsX-uzB~?Wj6k zm90|%m%RQGt&tXi7=aPF%)IU`dyG!5KgZg*SauVPfYC4hM2*8k3CTBx{`Dm-ru96! z@5bPK2vj;B`69x_CW&40^l`}SoMH1^qV8Wj68HtKp&+Y%AT=Bj()RN}iVMKtpwl2Z zEtjgVTmQ`70~Th&Lxh}9TA@NL%l$IG$HFyxucGtaZflkG^fLb4L(BpL^1s)*=KJUm z7>_5KcXTe+rM)*6w^9M`Wyh>FeM3_{->d)H(Wnc$P&v8TwD~fjM<~+RgBWqOC7jK&guol40+oO3DjtG7(c_jFX zQbzu~=MmT$ery%FEw}J66zm_Nta&=#>2!G?`p9Yk<3y7z=0YxY;7 zfgnbIbN$-UTj7~%8Mod+se_HLgEWXCrFLqI5}F%hm=Svom*+R$ zW@WxC4FrA!Yt9&s#nhdM6fGdP&;#7KB81u$^Va!*NiYJ{me==+$AzKTsX7o_d%YUt zfJp+j(D@roXZiu90j0V&UoL09h?GIsgDEOm-c$$M>ABxsx>`vnuz#uoR>FqLB4b{v zxQ{-4eX_kqyY3Q` z#}fgq%92)?OZ0{G84P2+UG?GdnrfyLeJ>!d_EheAkm)0NOM11?PV*LESXYJC3yJmJ zX-U(3vatBg3TVd^DQ z)KEGmu@v#T(Ucx;o(cT-oWXpKzo7ssQ~AQ9n+tz(P6sM8P@YFB0OWf3l!FLS z%}jJiGDk|3j3+g=5>=*Z5>tE*FeN_u9{OkcFqW}P5V!o)J zMMc1Yto3sYhCG)hW3D=33c}YdjE%XI43V}KrBd+;t$J%-O zn^G5eM&u91pCESFqJh)7PP z84s&l#m-?Iy;k#V38cvY{buNd*PQ&hX~0=YQpE~Ob|eMMK&#=X{)z@BcZg_|9VaLB z2Qfv&5ykxROkz<7-iFV%szJIe<`U2d`oBI7Y{5^2ZgRRjG;gLxr@6fre$s~z*Yq~Bj>FFcZ%;e`#2S%0W9 zV{D7z7_0X{c!EEwMQIbXkw>(F1+la{R_aua;WsV(DS}_XCSu|3^!*bf%uoO$IR>6F z+X4odBc*<71%xO+T!*SXkL5*?Fp`_}ywkC;@ON4b8&hjZ5O;V`=v454Q<`qBFev-e zq4FWvf4y!vq?EDAV+Jw$dRBX1;>EViUf0t}E%hYg45=;qQYHH$^G-d*e0C12gZ=N5 zZ4~sOP8!8Bpn2wHeWii5tV&DVOtbyT_ANjIW|KZsUzXuyG{1-4pDEA2h9BO+7MdMq zJ0k)4z|Xe&_A40^_S{)ss)bJ#sfd3SX8s&hVMXlgEf2}0wUf93?kB|x#b4mZtg2JK z0t7+XE>e0}H^jC)`t>O=h9~Jg1I;6@vP81QyUSo6sS`j~Ea zhF4e6&OgV>g9>!mGaWxzwv;K2mn(Ari02=fR;F%Y3-0%ffE>1MIUNaRb>u64$?8{4 z{pGsb(_G9L{K2+K9U&zef1>4b*=WwMDpw%%#UAKgOCZhv_Q4G_bYsb?^4-8R%D!1g!dso8X53lwF8jtDgYMoy8s{!# zUt(0YjFrko0h6N=7Vma6K;ShUTop@lSA1>NIC{A!A(&j-o+y~haihUqwWdl~eQ8q9 z4h+yb>6MK<%}6I^8@5mMP2m1n?6Pl9Z}ma)*1)4Rm9@NO2CH(-1?pp^R=el~^2Dg+ zGAM4WZ#Zi=~)kS*(I<#!+$)=kbs8>HOJyZ+eQNplSQ4xq>O zKm5|NwQZ`F-X@GC<;mdsUUzFC6~@89yStER2T}REpx9>wPh07~>Lcc!rV_eFh_^B3 zcQFIOvb=1?T06zVlo36fapHcn3`&yb{$Je#q3wy?pK-2RO)ziem_3aR%wN2RQ%yqX z0~t@cCk8gG=vL!i6y&+ohc2;91hEb4eG6p0g$8?cL2T=p@*WiJF!>-@V6rJcc)7lJ zBidMW4=hi0EcwOzrDwWwMI-x>=w7x9)KcHTT@@?+-Di{^aWg{EQ+56XYMVPV&LL{N z&{>8DgUD%`*$;jN+DAi3w#|fCJ9j-okX<~03FwaS6pE3G%OuikTAW`CO$UbaxhMph z1?wo~zqv9*!fFd=3t!qg1uL7TSh;Q+&x|Io+826e z=2gMK!to@RUKz1dzx87cmw4tAyo^0#CF%s79XHIK-Npfp*m1vFWY?$2tt#;)YjkOIfXZ5gCmG*glvx7n8FVz!F9Y9|+3Am22w#X@9O)7ZT1;R6lahRi|L;g(7 zSEWy(n@@+H2!wj=)e|yA@b6^(gjM?)jbCzK{tao%ePU#l*}KSEF@ee2O8ufW9{YiX z^8`4uoRM#;NqA)|sey+cZn;#bn8xRcyj|o(cTrCG9BuyMS%id3R_rZUN%Tbb&2cwY z*d8b`NI8q%1**w7!J_@I9r>_#nlgFUWE)9l>U95kM{auVXn48z1Alt%(TL!1{HFz{ z&B~F_F$9n(B4C(jI#AnUn)sNlcKa$ad?B6dfyo6A5VMwK@mlkUV`ZWD579a(7R3%V zI?!~3?he76*Iw3sPxnDg)nLMdXoUF%6#=*@^HA&;LcD++82Uk5BL~M;Pk0#*fn%m> z(5CXo7b-$14FZzRD}u|sdRaI@`L0!+XL;`Yk$Q>LDvK2%UfdpX6_z?Y!GHOYC_V6b zAYvbr<3Uh|96q;j&cP}}S}WLqZ2Wcjg_VuCaEd2$(0~my=wC0kT>YmCn<3}_Xq%Y| z?FsSKH3#{4_-HNvxjUodTJvLe3`o7BZ_M}WBDi5&Z;nUiyGN*9u6aM|fND?ZNXQ+< z#FbiojB^QfkRSV(Kf}ywa~Lm-bo$))^mc%`JZW-^fnzw>PM%^A$gD{u?PekK(y9T5 zfMi#nUymj3*uWvVe>c&uu8xCeD9GAS{`Vgkl{JBMAClm_V{RR@X$VjP)aqT9_+E4d}<2G1iZR@z?`|3J;`H8kmx)uPc3{b{&R#IRV>65}p zX$ZCWK!kbU8d@JTuqLRxV-0bzKu;P3;G`lJkMO$`vW_uCHom zmD9gE;%V!aE;h70Xa4aOb#lcC6spe*DYO#rBT}uzw?|4gAiZB7q+H!SLU#B{{cNtB z^CAiWU0Zc2aPr*;5yQXlCJqTFvJ^^+Y@8a5-oXdl7GAX%lE zghGofW1bl-d#iLe#-7q(*U*6=SbSLg;cLwof#?^B8*(0Vg24)nR6&pXddIf0mp#%~ zsr7P@?psLHX=ob>s?^^x8#|2zh1gt0Y;GkS35Ei?&6DZp_&Ni{MOH3t{qNfYa}IzC zxxQ?`&YUD|;jAiruCo2Vf?4 znbR9#IvhMuxUb#zrV(xe`9NqZa|gfkfAgzcYX3j^GehYC_0biw+775lI_tQZ|Hs)q z_So7*T>>uKwr$(C>y&NVwr$(CZR3>fs#CVn^>otde!uoVxU!O++hVfhar8 z#eyZLL6bC63f8vl>ll?0xDY^4c!hJnpBcngQb7C&bGIK>VoYGn`G&6C_ih?t7_bDE z{k;)c1!S*!xKm9ZLI{&kOCi3pLf5xWd|LLE}vlK<8`Q2u_f7>TkF#We?k8D>IW5L6|~Pc7euERt8<6xu<979R2UPcE^Ee%>CMN<*50pCM9P@$oQJ;<3UMfcA42XvMYTtK?qWo-y=GHyfM-H zn=n5K@(TkJRumhTXF?BNsKuOVgqC>fi2Fh3rF9! zg}Ji5WiY2{?8R53kdjO;fj2M{5%-(Qbx0S!<^XU}FGr|7#jQWVhD!H9;lx02e@m}b zASIqEm+I2uj{XQ`F3RmPb-2lZE=@=dJ9oZiK!L~e2X#H!PFH28K2d7t{Mzxzryn9E z7;A6C2>KLOt16y4dd5@5+a>fN^HI$Wwp&b{ng61lRl*o&+A+u!JdU+u`i5dQ39-qx zYijXFTT^N@JRiX5eDYCm~e_d<16BVMH{w$yHss9OV1Zy?p6T#x3XJM>B(wpaa^F~nDZiHW9xb8~L5a%uy9cd$?&My?ij><2=I zE$Sd!rmjeS;yfRxocGMZZxI_-G(@{6JpY;uc_^_01=j@eK9;wtrKtRhgNg5F_C8!~H=c$?mtn8WjdE+2ZWR$6fA*NmC4<8#5VE zNd)(6N6?{o+|9R|t-0KN&H=<6Xj2CkWha`o=43?Wl~Y1yn;`x%l<-|Ey}!kn=X+3( z!mdrPjIu)r0JCnpe`}Qt4ddBne63Vd#{`9C&a8m>?seSyp1aXOo$DbausDJZyRh8cZ_0w}lug|qnl1#ePrv*( z8ng;nfO6H9sGw3`LLJ8W@rtgqKwbSRL~1omMK0HK^51+D;_b$W;m+)^&zXks66g%D zxYp_xTn4@1W$e~ACtL9jZuiy^+h-1jvs1o}6YwPuO}BP2nW67HTx5|9TjIHy4B89! zEM`6LJk1Z0r`u_vTtKI+qzC*tY*pJUIBd-~w4<2zEt;2A17P2LyxO3cCr;I0Wnx1x zCoT|jRsHTV?!)f(MUeyBzptVX`2i4KI-;y<`L17qYELT*e~g{fqSgCd2}LBEQC_Dk zDoi@pznw(`A|Zq-UViOJgMK#L4MjR7vKqRS5{79UhNBHIWvB{@f`+a3+1Day@(tm) zlCBTN{8g?AE|1++s3uFX3;2A!1?*IU?VaBOFe|mozCGr)ZX~fhY3qmR7(HE6%wP2V z+JM0N$Eh88KY#{DD#l+zbkPlKt21%Wc#GT1EPwSP;*DCTCoF+9I@yZDKM?M@@DL(V zG$iyEE=6jR6K|5OU}=>ND+;~+yK;1e(Lm?#3zJcP$n~~=*Hcj!IZXpwHat@vYx(>X(}0006L z-jLJ5T{zJES#9Z%5!DH{$J>_QowWIVI1a^rAi16a~^^#?BtD2X2Wg1OQXRTV$ z-kiEm#*b@lt3*PuI^4PxwAir6*e5Xz{V={BJ8+`k6?i=!65aG9R1l>S-UK9E}Kh83ip8+HEsn52w3M{ajr6Wvx6 zAbcLcWHM0%i+*>LJpSx=*YKG{^CnU1dnP#Q=t5j@nY$wpM3e=M_V0=u1AX0jch2KO zX70cLe5iReglsVjia6chbUZ8hBGNAtst88A@9+UDR*%6h{bn@!->t z*npo~x+Ci8VuKTVpPWHFyMpJ>L_Dc0x+Yvs1}FgLI|@{ES-zR|W;uCyRjk&ZFY59K z{^}1|%d0El?1T*}o}PY2f0H+P3jrX&p=1I^+uI??R$R zH4b$TZHBp?GGRQruJx}Soj4oDm4UX8(?mz0hj?@LXcnJX&;=ynFoo`7tYjI{tR)Rr zT9H{i;UDwmhIwxKt+FOtl8ELZM2U+cqlLG}!XtBb-dDT$0goa#Xt-&m?@#qM??JRI z&>C;WhH%D+X3XyMUj-|pdE=i3ngP9tCRVld7U%vsroScd)uLmsI!mOq?(XJK{Xmfp zIy?@{91pQW?_^dz_hkn>Z1>}7wLYPb^IQ*B%TL@rG95H=jnnjn@;c7(X6Wav+nrVOmu4k0;6?IrQ?;_5@0 z?QWpKCr2pJ?jK^G)}Bemj6C>vJ10lYEmBrx1XyAlr<~Kt@B@opHqGoXPE&W)Kdety z^>|mhOsf2DgKP%8^Nt8I2)0Cg|N5aXQTJia$u7xF(ZZ^qN)ZwM4p2}$TLno>MLGB8 zZnI1O+OhtD&V3x0Y94*(;Ent{%N?E zz(TMJOe9Pg8XS_cL$=(5K=J9LvlLtc2!(e!Z*Dl?$}tYca+rU>59U3eLf;nfhDl>f z3-e3yhrX7t0Ucmn0Fm0=G|6fRPP-~zk){RMq;PJbN&U!I5-;>h;gq?uISy*YHv6bG-#b)q;@(j$fFQ@E zhBTvA+yc7Vx>g|UD9`RL!iaZd;9|)vQU-Typ3b1>j}<`5<8Q*eE)4W-^4IatBX{afwDAk5jCD6Sog|rH)UtLlGvQ zWbJ%ooPFvwIvChwdj7TJ7+DnCixkoBWrzH&7QB*>QSH7~?YpJ7MI-KHC5LT3z8)a47bZ)o+*8G?c8y|EFUI-(*c#W#fAQ%JT7*3Xi*_@Lf?Ll+ozFN%*>jL-M- z)(ivrQi!NWtQ(4MdIM`$I4u_Jx?(wA*LedVB0UC3OWu&V zanHMa(yTf%7b&HD`+naRhvU}H*+Ip>yj{)xawd3))*GHm%Y|xnl3SD!S4W+bwT+H$U*q#;C z+6eh)!y8h2Z%|zAD(EB@!Ga=E;X1UEZ5P)o6jx3c4wn-ja#Na=S3)?wBK%2S`1@_0 zM@Ek5pRe0VRB$W^))&O3t^{+@Kc)8&*b$r{+9-#-^Y73qum=;_0xT|#9}_+j|1@Zc zeNGoGpFX+}n1D>+{wt38HmMw_Rn&oZIm9OK_!KBm6sX=GL0SJXRte3pG za?I-2j*khhNwdEqQ!K={Y{r=;_3TqQy-_eLphA(UwLj1Upvm;AYCOF)LfY<@0E*0a zQdgknA5ABbc772V-}S-b7v|DCJ`4#byRLW=L4{rD{XGY9G1P zo6g%vmtobaQ>~{o6j8pA+M%1p>8E~!RV?wRIDKixDNvIAq-zm20vagO`XI1D1m|Uw z=>i;=w+Bf3ZM(*j1ud96U}71L`^zq5{$MYkIIiYQZuZxXuqVE4?OEOJhV~$y@=5Qo zb;njzc}l~{Uiob~wbuP!d#f$H?+`@3KQvO}v2d{4-6)t-&}o3zmuGv??&;hDU%S0n zpG{<^m%#$gCWw7aKt!Q7p6Xxv^snLxn78gt-UUOEEYuT<1yT_x6_~U!x(F!|TbwD} z5t?Z+DeEjZk5W)P$EF<2n*4q_8*9hdnU2he{vRI5Jz z9OWGmpc~$4+)6<8zkDR3)m~_7$$m<()?J_y2AK5UWk-*-OVcIjeC%ahqo#|HgLp$9 zpcU6PasQ0e?43*G)olr2DU;$W8q2Xe>$t_DtQ!LD{Vlf$Mh3Jcvgn}w= z7ud4uAO|Zw)9?R$#$RoWe*`qh)p1_prLj_b^FCw&C*P@i#!8=#x~M{tf5 zgX()|g$N!_<1P(Kl^R`oMz(ZVK4Z@G7m|tI$>v71&Hd_n#Xx`jU!2xL^X|4a85ki&#h@sy6gIs?FBe&2>TX5cxJmbS8JsSrA zbJS0SPsW@$^;-F zOw^i5!m=tU`YE_Z(f4ad>+vXpemL1-yG?wfz@o5Xakk9B@xSOG?rMYEX4T^>R?iOb zDvS$2QeiWYuJ|$AcmV!R@LhMmQVO`_mbekit7M2z&}T&3c{Hpb;Voh?Ojo>uU2M>l zP0208;r;w0VX;`vlE$Ypesg5&CV?9R5;nd|l8t-$&={l?T~_)~ufIhy|G03OhUd4? z-t2l4h1cE5GgV?Mx(=KrYBcOJK;2o3K*wxn*fCfbtAi9}%f!g4F3x{C@@q#A*xzY4 z=Y)-)46TQv%;B)p0xKrZx+c~x~xQT04b;?i-^Vne>M+DRbA!%omBo`G<2EqmA7pUJQCmw8n1oz(|1{^Dnh^?^x;O+szPiS zw1;ODQi70;C65FjxohD^pa=q=+Qat_t5*5xz-Inz7HGc7oMo_4Rc_6A`7E2TX6XT0 zQ$os)SSKTl9@+hi)OkJRcAPK0A3Gmvne%@44WMHre2L*iRB!&rhs`X)6A(PpQaXvd zp87PY7pU;XQbXj!6O)g-~4w^fc?nJ$j_elG}}ovPPZzHMr0FRuJ5uwVjzgl#F=~PBkV(| z7ti7;IK`g?_r0xGnP^{6d1$JCU5?{#Bw0%KPA>h!aJM-+!nc)-R&%=1d2tHOFQVL) z%^29oYwuL%3fX+1q?Oy&isRMJgT}&qN?p6b2sem1LLp-}Y81u8q9Te8 zXUfA_{P_?!-xv?(Y)`&VpI^W=ijbYOUMSo*(pdkP4j-z|(@T><%$jp&+45`0A?lHU z_y<4eO!~?n1_Fs~YW-$Lx^7CNGh}^*qLg}Wr_dGn!8ID9RV60S(9Su`R;D&iKf`!H zOUySyA8CvlE#B63_ECB$g>@3)G3e50b?HMl638W|+znsA!(ng4<_<*jJn zQawqV{SRD#cNCW#F&JyCA3iTGiuL?RJZC|tE{igyjDpdEf|x2FIrA$CskCNMU6rbL zC_79Y+r82VPW>UKHgy==Z(jHsGK8QoZuAbZJwYL)uCkfx9k1sw_Hg4KkCR=@iN#X4 zC1CLl6u>OK2w`UELnyyRWyMgGU!9*PZ`!2q;gfBz0lkAm{n zg#&p|H;&!k9fXK!uKo`rZPJxaq#dc}f}OdlqT_DNA2ebE72G}CKzxJM)1q-dEm1NJ z*ue4wL%$MQVdoP-rA7AVC*V=BWqfxb2~nlwmd-(;UE56PZoGmeH>%N2^@ylZ$Rv#v zHL+??i)oUu{N;^O$GE2lM`aGA^>{z&2aHGFwZ^t?Kdz!*JHE(C(};kc%wJ(4kR}(0KcE!SwtxPvdSHhQuD;PnB*qYo6;=XRNI=w6>G7f zMPvwJ|FzcI1!nvJ*#L86od0&fkCf&;y&EHc3W(!hQu0}NZ8Q;rNE{0lgh6_a8Ag<8 zhtzM6hK>%g0igsyPTXHR0t%qsM-%8_9w-+-jQfXJ@{)-k3fSop`pGQb8czQvwE9O* zXSynJ62^LX{I{mzR|<9gc4Cj|qWYVoozt3I-25`Zjn(~J3p77$arCM>J^YE44_}+b9jbi zX|z`v3EFd3I6#VtwI5n|ybpfq%)ihi1`b$9JRy377PM$vg>7AD{uO7C|GJG4FHRCk z?_nS#o9ZAkZ83!TKr2V#5H0)^Ye>kWWV$V9wN5UbzTC$-8n6q5qh;9Qw$R>k)oX0g zu`*4@>g-9vh=OeTiVvZG%a5h`5FGq$TE0W_!a$xLZ;~Vb(X?zO1+8BOUcuNBWX5!I zGTof(8`*z)QE}`^yM8~*3O^1-=s!I)D;@Pag#k4#jEomg1qt{jLoSN&DuZZ`!Rf9n zdBGBYE~mQ{4P6#3Y16gEf6euQNVx>s{MwPUg44v~{c2X%P=^R_bEVepmc@KAv%$Q# zdAVq{saXN-1oK*uaKcmq;5yDg;8Wab5U=&nFVQ0XG))QN>6cQYSMR5Gu0a)d-bmH~ zT}J-C9)ijLDdvJ)kVt9j{Fsz-#{|cpPNmACU)L=;N1i#P%=opVR^?i2g6{6D*}pLmj1n*salw(yPQuX&!nD6B6P@8|%ZzqO zL%d*n*X{^qn-6ZPy?V?7V6*UZMsZ+tQ4GGTjwHai@V?xko+$!wO%VXn)tBn+HKIig zQ3MrEN?_cjX~P|_I(kA$`Ku{~GjTZ-IU>Tn@Y758VQHmLfY8s;4}zaEeS)n+IMs8y zkp9K~cY)Rz1G5Cx=DM{Y(?1Xb1{!vE7C)EWc;d9>pgI2A%UnHKXc-Cc-!}o;mvVX& z2ODq#F!Go5ApMfGHuNk5rXwMVWsHzR3$!3c61khMGB(qW#VY&4MqC9xK~KyE3_=43 zJz)S1>;6MZy?wLsPLHpIOAql8JoY}>)px7W?8<&PsR6MHs$z{nvTHk`%bBKD?#w!# za*W!2iI`_)%@$!f<+z>{$IdLabf1pzuN}QxsY{^-x_Oe?$^QvCq#GxtVXAekQYOAC zD%N=BGZe#ymdzg{Ojvks$NA@t%ieNs*{#m9^g`yu!vfEUSDvAk2F?|9pFw|D^mP}V zWxPSTiHP^X8gFDmJ&4Hr{;fYm1vnE1Y!o|CT3)`y!A2~!Mjbuvn|2on>CA-v!Y%Sq zjYVe(sokgMhW^QTTyKy?dY4PXmDbf?$J33V?Th^`S)`*N%e*VhKcPG+#L%JsJC3`a zr5pO!j-d$h(C>?;}dnEBLde zRwvT+@m5RR$3Tnu^|E|^QZPPVT#t<$W+XZUJP#+U??pwOXdkRusXdC%Wf;IG{Kl;o zPO^ZcVp{wiD|=#n-JC8Z=jxGhS|pp9e#``dXTDBRP(+T#G%Xq%V@(a*9T;C%M2k}U5SwLTgKPoFZM+ns<3MGH2ve6UEGPD~8~ zjBhK}DE+Y>Tb4M=~8NOK7<+o9GGDNkBq5MRblT*cdLMNJru zoaW#XmeSCyJi-en0JUsmVCqK9i<x?Q|qC(i{Ep7Z8gzn9ija%z~@7mZIT3|BI zt_YguNLTH5g??R(%boto5Ev%fj#{jGFXHjE5*5>sA49V4KfnpNYyK4=omLPWEpmc`tZ^-K9T~jO6@>HA6-NH~2S#5W+C-nyb!HR<}w|r9+7D zj);E;2TdWF8xcAbzE*p-SkrBqapBsVSx4~YNT&Lcvpq!)H{N7aCimfnKp+vU#t<8F z?ZAI?2e^CpqJ*tjJN&oJM56F+d{!ZM0axXc<{5)k+U=-!te<}=*lG69%lW2hTlx@N zu;oNUi$V|LsnDvC>6~daP8kh`zxWkG0weDpq%Jn$TKCi% z=2nlgt3LC5_a6u= z&i6WV6(<0u8SQNjyg+KDM?pS{Fd^kjl_*$2IH`xq?EcqNi>Kl{Ad!A{3Fj!gMJ|>) z59qzPw_Wx}vae^EQ^AjG0f|X=rEhGc)vI^Un@VoaGOHtkY8KHy1|TzLGVadw$gjd? zK-3g`QKfwAAf(ii{uHZ^-%WIJ^Ze;@^Z~CoMzEH6@VPH&o6(HOt+yD+U4r~&tb&#S8IbrU zCvYEYKLkFl34%$#>c6fi{5i-sSwElGS(L~j5SXM9z zkUCL?Dy!QlJyUR=b35jI2S@loL$L+k?^9!AUf zbJV`K0K*<<1JVhYs#00W7`Z&_7m|1=>2dWTsrt`Tcd`na(Vy)t&;MHoC@3CWD=*s7 z9QA*U{^uZ7JhK(sue<9#yS?e;RHz>tc`HL* ztGVvk$I&r#c1aNsNBQs7dN{|ZXWEVH{nw5NVz;|;U&%HQt4o5w@4PYPXv~ap2{6!T z&|A3~YSb|;fXle!8+`}Lr~SkJp$y5s-0Srtu|+Vx{b#RSLqU>hiHfv!hD`1C1*uDE z@ShVB9@X21Etm<|XhZ76Ra_mDGC`bgF7oeV<>ZmR{6*uo(W;aU1EB?EB0<}(yoO04 z5_tP=A>~9BB?I9FK)arV_Lt-z^kk&MJW~ILF}{D*-^lQF1M8sDx{L7Q)%(?6HlQeR zSXdcMLkfkeJJ6`*TOV7T>;^0Er(N{F@87S#M!5Lj3}=CqP&oWN zSyn}=$DPTfXmss&R~j~sW3hJv4fcAZx%mA2K%>t35H=Gb+vQN06m&ZqB% zu;aE&w5Cn*L`;(T=WBga351oabFc0b@$Bzf4#cwC5G&==aZjW9jKzgGFUF z=|A_lhdMm-2kl?oxL?~~ozYHKv~V9wA~X7B_l z@AJuNZDL^Y;}N>}nTNY1`+Zc58--}GvWziNv|X##ejaiFea53rp=^0${A)*TppNQW z#Z~8&63G?TXi0WkMFa3tp+3!de@8>NFt^$RNCll!FmV?yKco2s(bXymZ*-?m&OCW= z60wVr(3w21z>h|4rnc_USQ`zpdLA>d^Re~5@B+=#MW zZ>TvC139F`yKmq=Ss{og?C`Z}owSWRz<3)vQgQ-zfros=5qz32znqkQK|DpfjLk*i zpf2R#r&~=FOS&S(;vKwKZI9BMNBe8?Ye(ac;?YR!MGt=SRUk3QH(m5~80#v!;oVwY zdCb5QS{RtoO{|QZcseuVFddUeLSTwxBtXL)c!qPU|BB6)jaj||0m`7K&pg-S);kIq z(omCkvu$-Skzen8=@~h<|FVbN!r{^P!{kf?m=L98^vyxHJ<2>?*__jAlSG4(yZp`{ z?E-QQ>#N66>!dUm0q8h=H5-9zm5ynpIk&>fgR?@-K;HsB1 zQ@QbLN6$g7N->TZ`WXCE*UZ~;KXR|{bYL|&(4T&^tZ~xG6w~vBq}}nTqaou1Rv)2Z z=fK5sD|BAx-(}L*eh}|k!ivLvj?y7fQzYbu6vp}q@L8L|r%@X$@EbtetyqegK0AE5OH=LM}DWW{0q^X*9MjQ4*nQWJISB=vXfgo^XS! z%_aG{43%XK}PvIAi!W`hFG|#~2;F+IlUgX<`hVFNiA- z+CJ2Rpu(5}#{&G3Bojy1c?X{?iy3F+-G|;XsVrFbTek0zx0HObduv;4+Z;Tqsx4Dj zU~jwz;P$;)9H0_TiS=5|8iU$AgT})J&S(JeO0zd(*Gq;X04N8L>;KJ=bN#o&w53EfcmFp-4wx4u@?V0S4}Wtcg@T{i6X5lFy1+Sj0+W4zlQZ4d7#^-)hE?gT z{J}(bVUD@bs+UDvN2r|CyTRnXIm+7;_^l!?#wE@2N5~%*x+35aWvFpx`rv^6tc~ez2J%%Bbt)I-6oBs0!BNGWOq_)~*g7~j{J@~4b#5Vi>Ty70W_MMrTQ!Ur{w>h9s62oQ)fM>PJMZ}HGb zFJT0-d!R8UcC^+PHSxzt`G(AOfRSs6eW&25|Kv>ax*)86W^L|H)fMa}*Ch_t{X}2m zroIR_4!-WTa_zE!-5|aH%+uFB8SBk4z~SQ`0mg@bgz?O`DpmzFWh1N!@$)e_o=|cP zEer>#JtmuH7^;NLc8^~>F8T=WSDje^I$3q(Yzj8rp--qrfFHo9H5y_2L&>UV-cP8ht1K=3hJB1|oZr zKsa+US)dJMX?(ou{DXJ)Em0};vnF12D&!-rdRB<(L*#Mc zop{QPY?vSDg}^@^jGqb(Y6ZYyro^99zBN%OK!uB)EVpU12{*h$F>}K{a4)9yED8)i z!z$cDw%ChJ@bQD)ewE|db=t)gPR@t_-udu@3g@JkR|lFlbSZ9NXPv8j(h5y z;g0&8v@y(`m%wx8?f@jHMGxUYh!NS9NMWI#n~}jbl2e#y3pd~yKIY!oOUHx_S?Rr) zNn8SA4V2$I`=_R^yQpm6$XAR~A4J|-YNmD0inkjZq1a0+{eTA^HGg;=u5u+e>#K?^ z$raqe{C0shj2$79zjkGr72OSkJVJAa7rQfjbQP3P-2R=kLDFH@H&!Zhx>(D(NBv1} zp}sUA?Qjc*!V*{6KK^S*iVO8-W+CqZ@};cA#JA=>bL@Euf5EbfMsZ-TjCo>)FgAT_ zvG-SN1pv+ar+o?f*X%+<%t1h;pks;x+~Sbar}=C}Y52R$^Zh<9lu3z&ej3aR$0;&8 zdXZj_xeAN>6sVLJoqWikU1O{~7uO`or4hgB&(v%Ro4S;s`zcwJtbuo{2NTv|#oyxn z$b-a^YK`lQb*-1nbu*6ukWk)PA+k$)gIVJhE4>*$KieEeOh{78@ zOuHjLZ`v%CR7t-NDyJ|^m@U=%iXF36;J!%(_#6Y~>YM zPbvCnogqo$G;y^NJ8Vi9<@CC0hH_sklRhH2hyjjUMlsR>|2~&2eQFwzIf9G!Mp}fh z246czs(elkSD#dBPx-x8HQ5}#qY>cfuN_506fqk0d&c*~d9D;ySR zksj}CfHvA_?2C#FY1p!MS~w>c!_Igmb^s1kE~^+v`qmue+gaituIjVW5)l9u98Pp} zs}yn4bd4MFfznnUBq|3{bkNWxf*elQ*iS?sCQ7UFm`)9{Jm-K}@_KIJo)wBDPGh=O z{d7~}z@67YacOk~zN{TPtq4V3Mwxv4ZR$Wx7l&Hh{OtE12>v;f;+2)w0Xdo5*-{qE zMqjgEJ1U9BP|atuCaWKJaCC-@@u-+sAwXTqBm|Q}0y`CO4RARVLj$_@3|`m^ zE|x!wS%!0~7?ueX$rue~aQozCzBV(Rs|l_R^$&sjr;x^mW@~ZcVpx<)hL-Hx`O*z- z2-^OH6V4*YXwf37$`)mf^&B2HNXoQrlozr?>rOj7&ryXEfsY9x$?aTIykN{}k)CxH zWavR&kGPs1Ru@qN|INgqhxQ9d4$O)>vC^zI+oN+NLL&l|T?Sw)2Qe1T2$)3;POJEB zO$NU9j0j9k!V7YD?W4JCsRV>bse}{fz7LCdK6;C`^lBcHrjLaETr#fLmdw)rETeD@ z&<=aNC)M!m-4A}9T2ohahMY>qlbRJ$w1?9q8kYO>E(VkicwR=6@8+2?R8Ct;ZSdB? z*EIjobxsJZU@?Y?EcpL2Y&8=_vJj8+w5RKG;x13a zOQ8GW!Oe9CXm@O@jaV$m0wPl4ne~{&0DaK;kjP8#sF$@hQ^+pAQL2XctJaNDpL?}= zZdIPbiPD+Wgo&~&%q&Ia4hr_PC5&Ykh7V7T;NOwV_2*Td(I~{z zG8MUX(=+VX+YOIjH2D-l8Z!u{av0V?ks-CTEy1Fd-O?|Rm1g2@Pv9TFS4BpB%u z!Tn<_WY>{aB2vN-H{Kkrz)TynrRFGAHq^367${FEDQnvbqw1YQ1+j6u%S!A4=A9JT zFD1Ro1*$DAY)FCqUYVIVbj)s=a3KUoy@LCF_`ttpigJFxisrh=9!?5By{eXo_}hrp z+l)i+15$m<1r06ZD;ocpokW>A-TP%7g+XL)I~jcKllyDOp0@s2rquxk0OOHUGXalq zWe3&@kTvCva%__*|Gj6!^%b8jlA!5_<(x=e5u>(?GWa6Cr_iW_G`xjYIu&{A`J!_z zI&}UZ;2HdwCKKv#U~|zSP^?B>f+R}wj7Gw4OE|)#{>nCYeF3EzS z!qx`bO9#}g?PI&B_-n_>uB0H-hjUzWQOGNeFQEx>SQJTJd6?pu&|$_ z;)_uDu>#Qy-w^_s6sJFqh0Y&v{4Ca;#KeSsaKe{ql5?-*Up;1|X~leP1nn!nVj+K; z!4GDC0F%E!%|IDcg231#UCGc2=0aEy^`j3@lT~Gt2Ys8}mz5k1a^_K!=vyuq1_4o~ z*Y++ON*@BE1m8_JT3sHXyH}DFEqEGD%6HLP-X!yvGW*eVW)eg!uRb&Xwd1;jdw5Fu zH;(upR=vhC+5)`m`0)Xr2si-H%5fnDbtS;HxWWVEL1p@nUhz~jNgJ5YXz*qvy!tYb z4}e`{%gDKHO`O3KQ-z7u6<8@-@7Xa4&qI*SDx9<>)dSq5lD@&Eg04mRoo{_TcvpG| zI)EF$V##MG9v1Xj9ce;B_1C_QK0JJZlq6ejXd8&-Ne%gMpBqs&J$qs;V5>T(4pSAwl@!S;=(YL47o+3ub7-SuHZCoh)Z#e_Zm2D}T z?CxTpGNbh)WQ8XqqcV6Ufy<~#DgMfO#Gy$a{Dt(ILF$|3qI()BZVkC=V~bc&WQfy| zkvQB+h1Z=uA@-=7sG{m72@Uo%qD5!r$;|=8xV+G?RLepO&A^@*aMYuZ;y9F&BfVuJ zJ+v%=2i!3Y+g~^mQ>+F906@XLqt(1)$dpYciI&{?10Hr2s+Y?+_Z>j@P|PfS8#R)M zxA<$vx1hMJ4zx-K&$?r}4u1|#UXF1($R+Dbe5!eRFo^D-TR&73d&SMYd?>4WEl){8 z*P=FSSE6H4Gp~34%VB7nAhU**-V<%v_A(U`M^8hrm!XMEnn;%q7z)Bu>)B7Pb>!yXP)w&+RLI>;YROjuGWr%n6>$y z(=fZnE*-#pBHY)A1(a6bH)KbM5LFv)EJBiMAnzIa;Mb1O89kFcIHq3&)d2guhpYZv zATGjt|4G5u5Xu7`iTI;W{axH7n8EjAA?C}2F*3|nZy+=HO8DbUfzGkS6(rt}zakYr z8c5gD>n~HT0$0+djN+rRYzLSf%yA07AICW&4sf^Q}jm z>L&dL;iU`Ro;Bm)=n)WgiyhKJf=t55@h{(R?P0=j_8U2{uUv?8 z{|?icVe(Bic!*V0P~cjZq=N`J-xSwFGsVR-J{@e!W@-c(CUA_>MHd zqOavUf3!-^uY=Ej_7d$_UN6THx5~}bg;!VYyW#gBLLv*ad4!{n5;6g9N4q73-|rBJ z4aC286yVq^YbMhSk@;;GLDZ%LoW_Eb;N?JON1`@bc_;;;Cdf>8Kk=@9e{yxfhDyeV z^rSW@yU_F4w5pCWJ)MBzZUHL_o-c|>P@;B*-cn=jBuyPxJEw~Z!tP*0y}sDY3mdB8f-G3EO(^3%U}qRx%l0u@OXSgZ;R4u*kR8=ARvk=gm} z(-`oK$}%v9spqqNe(h)u##jd(Kp56NZE`5WOy<2N@5*om;ec67knQ+K4s zt##X2D{n>WdDPB!wQNERTbx*vr+S7Yk&Fk16GYpJ-k7+v0L{3X-?G~@a{EqWSGG;2 zA3$T!1!Af2W1we-H~<9zU?7pp9f#;O+)sMRxsV?B(StOEs3cbT<{2olCK8vkIj4(& z<+u^kjh-&@(ooR5;H=1znZbgMt0#jN>LsW!tllDC@M7 z2@pB_9U@i)^(wZ51|fI$a+41TE7MWxKYOi7ur0vpA&{GG8FXZ1q($U0kiirN6xPpo zGspCL%e_?8J{j6Ge=&v_`?Oe!Owy@a!RjA&*Ieew8^w09I>Gnw=JL68KBA+;R1wka zL{4^7_O~W#H3C>yusYf|jq_e}Dc#E8yR|!x@qV|I*j2qvZ-ac)2)^Z7B{wJsXP376 z|IXLOrU8Kn5;TPHd!+sda(&-IZ4QG5Vqzi96z1%; zUhA5JJ^B!UGI4I+bau!UbU1fnLqC7;Qd2NLQ`b6h@BbDCvqP984bSVh0XwFsUMous zFGkZ1+|_F;b53?>tT?KVDMY`%r$-z}S#yz1&9iLqC!qqlohCFjRJlT}e78RZf10ai z#w2Mm&5hGO-6WC%nGLaLZ|bvjmX`3BzOUNgWT5$9mN%C1BFtHex9d?SCJ#OK%At&# zwdL^@$q}od2^F*p5od?tKnR&yihWj{a>3wW`K#>*yEHCQ#1ukOY6M4c;29mlXR^SN z7+B{evl@ZMsSh+82B?r73K@-glPLSP~4|j4x1m^> zEK%wrGE5(&jwN|V(vnn((q1E~`v4>RN8Qu!7PDD(r~z)Iu#3UzaFTxQI7f7go*|@A zJZD$^gG`D+ba&i|2J0Z-)Skl`?;{Aj@8Brpc)TsVC!#lF+WB7j==$d%Y9iv6p1$?lrkgetkIs8g z9$v0Ws-G)7=}NTdRJ>v=38&1nJZIN$K#k`cH`~RB@guLjT@{QQGPMJ41P555kX}K- zpSEN29~s|OxtD;xA?xW@o(~1h|CzccGZ47Fjhv1X{5W|Snmg@wM7hbf z7smW%a3(xt;wAfaZUsnpSi*(yof-5~ij!=Q3vH8e9erHG*Ww%^HMi{rY5B0V3YOv+ zzuNLwzybZn$AlA|y2!;fjNa~&p<894FeTdRMiK|EZi{#9F9w zwyYQb4>Ze)`1Wt22nTBe;tsn6X)_rM8@vwBN@ebs_>aMrj_cnQvnAxMbEKnon>Nm@ z|LT!=>k@nh!VUkdn!33m>G%9s@wQnQSRZ|MB8gByasvUVDk~lu5GGZdWIlO`GJT&t zLZcYvCVGzAzD_E#Vq?iSZ$}iQjoxs&VI&d^Q#!VeB%^YkU zmC*S18u2_pbS-ZagMp}!-WZi{6910nQB-KqcsXSFua_Br|KTTMeNgKA%4ges?)9CL z=+6tQQ9G>6d!kYx7EHkg#=nZ`UEG${9vOX(zxuZ!F(g&90JIZ?YeOHnZk5HL<{N{0 z+3ZtJ0E9DSQu>ebMT^q7=qH@+GymF4S1idh^2!>!a>f{ zbJx_aC|d;HE0f>(uN{H@wsp<$aWZkZcr^{SE&#trg{5DY3(J=(e~tKExf`P^VY9kUTIQ~hE0`>QN1@l~ub|3R0@r5HC z9)g3%6&|0rSv}fx^%CB~*bI~g&s_{3Wp9O`#jHIh7Q}_&CsE7@spQw;M8jTYJc(c{ zI_!>+CYMK}(-KbS)4W$SP&~9Y<b6>$3@UPG8=`m{>qPEJEDsG4vSA~ zw=(EB!lWlM^XHWRW z7)co@T^^a7LV#PH@Yrq?T`qp!?zUe$k}f40|Kbg0)^u0TH#p$9LEPOTo72XEzL#Q; z%03|6_tygq71zDxGff?Q7Gi`j2WV^DX^)hfVtyEs!;8-#YHPi<22qlWQz!y*!xu%F zQX?ow4#nJq^&XNo#gV}GzS|;KK!H*W5~~TaQX=iqcLh6mX5dl7xa|j6z-&q$dwkoG z7_I({;B@u_=;MPOAqX;%@oVCs_)HT9$a2xlewuN+KpF}|X-ujSAC2T)^^6Kp5554$ z%C8+c9n%>!SO-X)Zf%{^co2_pp3*GQf$L2Kd$>CcV&pFu!7-Q8;}jQX%JqY-Gl(uu zJ8IFOG+Bx9&7U!b6K$5nn^+94L!23+F)nC;XcBDChT^4bn}~|jIUmEFSFud!;Kula zI~$!Vbs_N^r#|REkt^QIZGuwme>0}Y2}?f9R`z6iYZ*jP(KT?UdSkBeXN|O;VLc>+ zk+xLkUZiz#05(bJMXbWd*>A2H2CaY`;4YObDqbu9tBbKj{eRz+|M~y>^8h`}buOjX zEm$%B+jh0_92tS5IvTx433|N%)6AFuqg~uvE##*#u?mpy|GOv8`rn>>9q|8aPaYfB z=66rNocI6PlNZd2W04lD`(7^%`Tf5s8sVUU(=vNQSwMZ6Kp6l49+10uY5Xh*9 z4w#Px3c6{Gk-0gImPa`{q$nJ4gSFH2=UIKMX3-LMDcJYSE)!2!^XADDsAal3{e&4k6GYqC73z z6SYeXSM|H&nMh#O`aEWMoAq}mS#aZm+2hknZ1kMqYB&=DZOc-fqu-d{@vQ%BCWN-8 zdjtX{6IgtAoXHMwo+SNw0Z2g<@h~C?HVP_m@mU1`0RH^~e^q9{()fB_r+)g3Ff>#D zecj4%5yqYHg6NyKM){m$&>g#~1C59jsM zWB$-d1_&^~jD{h|g+}{F&nTO^Gck0o_H_hut-3E|_BhU1l!^99{w=vo|t%JBPD4@SWPDpv*RQ`vRTC31BYlyLBz0Vk)r+B@YOh6&~ z6FwHnCQ*qEI=SxGj~%r}$dHeEotgV_4N%fc3u z4fU6WU?=+Uvt2SU-Jk8fdJG#YX^nhz+i55-_yI=X=LTt70~?atXO~rmccP4Qe|tTh z_7og=??$S9L}~g2{T30a@f2DgN0)pta>06zYO5nj2zFTOO)S#nMIhof-Kahbd)B* zG8~dv;qUl7@>}|EOcD$`I^EtWVP<~UhdFY#74Sw3SZ2>H09W(LDrY#3003Ym{o~p4 zEn$2!e&a;>KA$W7EsF)n#D%6LG@^j^L8TpfrGxS_yP^ZHp4&s|aEgXQArhiG*YF*G zu<7P7kN1QgFptxAlCGPTU7uIR9RlC4 z%qKn`SG&1B4(g0Ry2Ea3V)sGXhJikHf=*aWA4QoUUO%T0JT<*RV8VhLVcXCx#uG@e ziCu=KR4DxxrydL&sStywY_YGZO)s^edE6BDLF>D`nj4XGBNT6UYHIjH!=e7F=h4FE zoRZG!61MVwd-o@H;m-sud#`4#7*NKn;2h#tOI51Ao78)dTjW8wzXDp&!L_7WB34}cMy5T9zH)g720dQ_GW zMUyHyjIDAICig9Q+bHRW^uAsF92uUhyHthtuyt!|gWu8ZJu?|1ejEA;1wwc*LlaH= z>IsCOsq~{*s0kKG@r}Wo0I!}X^xr%mj=MM-$WSQN@%K3N?!Q;0$A}HR zAkY#<>mtN^s7Rj|_EP73Bs-u7Hi{6LKN=tutDla^V#J6}?;kTDJCxjnuEj)jMHDZe zMw{Zz{bz}SK=`a;d@2KY%KumzWvW+P^L&C?U*_lTV8-V_9bCmzS%r8K@NIjyB%fp( zxr&`KYAoO=&8pSd{}@K*!%Py$t?z6wfGwM$ko1qCks~ zoryRHf3mW?ur%nBmPkPn5b7hRZ%9YL{T1Xo;w2L8()%2&2_!DAGBQ9NXeifvwperE zn=~>REr&x=pH}Qr>vu?U{AlQl+Sqi6@+()(OU!s-Em%3z6Fn4B~J2-bA>oICQZs#6cBo-J7>5;4IJk$rfZ2HB*j#4glz6NmQJ zZO3cj&GuTM)kiCE8nHj3v@q=M*N&ebU0oFtha6rmw@eYXSw7EJnbqvuf~xJIX!q3Ln8FzZ*_1+Y9Bd z9ifG%km8nC}#L!K}8!J{k-vP_bgjQ`M z$tV|HGv!roq|MAbk~ldI3L_JyH&tv#q-P%5(6h{La-W>bg{#tg%VoR&j;b!TnDNX& zliXhHd@R7MDnK)d6p^-rCE*msL3S#qI;7kz1}?|N!+3@ZMvp(ZRLG-$iFfDUL)!qX zC+H@JUR3hMjJEBu6Sl!)ppDwDKgLiDk%#vmeu7^+;_l3kO=J@L&Lcu%yNvsUr3Msz zRT$P)FRrhPmRRBj&)enZcLXjtSQYAr+E;r59-sRu&%9n2$+&CqiqX3I;)|73{1%9_ z*I35k#0{4~?}SxV;>Zm^6xJ}N^p+3Kf$}7V=pJY}+3fAnWkoj8=~1UT%$8O@KMhsn zrLOax3QyE#5vRBROS1a%MA`dN4XQ7GX5IR|=X!*H|>QRW`ryCaTE#ZE?eCsm6-;ISX~MUQ`h z|IHx#euL9OUiC5KB+Nf0e73eIS}Q3akQTSY9T%P>3?3SLIJ`a*wL1aiw6Ve!oujX` z<#2k-!2wcDc!9uRLjoaP7x;Ai@0j`I+SuqYm%L4MD<5m_=M$__ZT{R~dpZR1C@c z0(J9zFaB#O?N!y5%Zq10dZIR{bf5s==z1arXr8WPGO8b9u#X^H&nVK>74MwrUU=axk((p_08;)zA(J_7V1q)Z90#*iGvAx$OuVAczzjY$-=FK2G;E-%uJMsyA} zi;T(~e?uvde%CHGD$0z`LJ@tzrLhiG(Q);Lsd?Bl9|TjBI*AToCFU4k!u|b23lERd?V|F@Be<>+I`$?I0C&A${X6=RNE(c{TeU5V9MF=V#p1{e4kXCRjFUQ%nMpq zcnAk1W(%7|)FDVnO{;O?(2JwQ3(`~AVMVd&F@Y(#@I_@6&d9E1sHdN?oYIif;>=^* zQL6on@`7e2zl7x&4b=vN{w5d~S;t^H1Af7%`hWfJjpiK%z^PNq@c6ENw3(D1w};Im z43&m3NIGg4o0jYeV$`p{%cGl=7{|yTC{r_!4*O6)Ne6XH8BT) z%VR!F2C^Q7*hdXAdB%fC zMQ@Bl2Mwa&{YaNPzNPF_AHQJ>9ClRQ3QBmLN(xn0{}W67*!gt!7!Vu#V?g8e8Km1K zPqhl-v5*=DXS1$Z#GxAe!o!9c1=BFJ}5$ znMx?giCADVys0VO4s<89L_Y4FN-tIz;%L%9ELv}XrZ>j_u zU&VSRNVSP7(y-;avwu}#eN6}buN8q*6>_ti z^Fv}6J@Ms1+OW+_o?E80(F>k_?U*oJnn2bhpAhyV)|BuTMsR5SUWJpMAOR}u9PS%& zyIRRFNLOKfkABg{i_a%T^b1w9!m^NH-5^Z#YBIevX``SIQ4iYnHT0N)EZJ14CV=6G zh=X_3C+v9Gz!V&iBlN>Q+&>ZT>3|+_0OSD{6I``RjMxM&)=6<*mT38kcKucEZ@J~n z!^T9D``QcCI5m*eHf(&-&Rj4D=eGBO|Cdn>NUcD5GACqSMc=eIL@n64o ztcEo?-;&N@qE{6?u#-FvRcmywVh~{aQITe`W$)`?MWhu73nFF^KqGxFi+#a83fj17 z!$-Ik1FuM*&siR_HdIDRxI|A8*pARJ(u;JauD@aad*&&0ST6|2WU{6;lrOI|e$Bfj z$$v9dC{ETv6v@UxB3!hxA?u%6$67!s7ZhF|PvaL2V3<0ObtYhT-n{ZlQgfs*0Z5O0 z2ApPRCTjn$iL>2*{Y7Z}zxH||O*1VonlMZD8(R5OO0SS-2p{!{& z27JDI_l6Jyt2fTuIpvE`Yxp%Xf4iMF_3}+nDYdF>@5V1iQ}M6^L26HzDnhRfeq?6eGXl`0w6LdX1I&ycmjr<9_EbhG8}qh$&u z&Si_e;~iyYadSvkSs#}SG*hxAT}`EP>Tl|;U;0Ii;TyXZjbo-0#VdgGP{dew-gZmt z(O|YRH5fX0^%svCJ)rYm@P@NZ4CBWXd8K6tNDH>R9F!e~W&iwxE6y@;obSNzEFO7);EK17qW%}eX-Qebt+QkKhk0XSB4?OJf@Niq-K_eZJExo zh;9H!VcLGOgS{1zHgAjmo3p{Y8

g-26zTc~J$YGs?aJ0|)r`fTF$r2Ys9_pZKJ> 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�lB6^Ixq1#C<3KtzbA9b&QKe?0&Ejo-y-nu|Z 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�Q_!{djX7b|ML{Q1JugQaz6hjqq|++T5j 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

IQz(T$ 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/f{Mn7a+`1v>z(s$cMpzix68P_ZpiS7sA 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%0D39|k&{41zdH^$bx#?KzP`Iw%|&fkLO=E=oVaf4 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%0Ad&$E-*Y-=wGAhi!(X_5L{gwPReOoi3gC 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 wtalSJ0IWNY*2(t0( zM2i4B3EAjnq{R-}7ZV+SaTd^KMKV@cO~~WKeO6W>KY0RT=lP$|Q@cF#p4p%D5ed6Iu)zF@N8n1ag(zpF6qit?_9wRQ8dKmlf|i8W+XA3D`Hgt5hoO=f1Hqi3Uq^UFSexT~h!Mi3N7tD;8dMJ#nc%+I6c0Z52 zaJOc)9aGljeplfGXby0^a2(>-;|`+8c`$CGRcwHhqW!pN6@u5QLcpK_a)#hU%&qiR z13jqQ)+lgVyW73tYOqW`K`q+W!!BEoRFlLsjlyv^?!M#TN;)w^n!t_qiA%5BPI$$% zT^SVtmxtW{n@ePEIF{5njC&ZvOwQUg1ElBo>cwMz-5z&#I%IwkA`F9&NM+bBZyEgl zErSJ_h$N^5&LhjY>5=y3zm6czwR_#W(Dku@m0Iu7_EhDSK+3;@*Q!uAn3JHB0|mpF z`NUDkJ_^?k7FT*!Z8wBL31^Np4#ZBFX$Q~XEoCxAjjuC|^OEZ{{yj~JF4}-H$81RP z^_Ay!>|G<>9+xBh4?&zWkeZYV3A~Jw%*la0%cOUn=jHEHH+<(evjXl}I~xJMeDUE4 zXkv*eGgIhB&+3Y+&zbHZL4aiutGX>OO>HWvK!6uBw1`l$vA`Y0Nit~B!@(}!iajz2 z>^G1lI7MYs5%<#t@Z{5mWszO58ciOR>fDD@q3`Q$r2(LPHWVa;eWRvleeU7@X~iaa zK_U?h<~TRo zt7bwRX2@5p?_i~3UedS1vJ%^!|@Nj^{u6I0WBRc-LMiV{jOMriG06jV)

fZ?D$WPDo9!aisLt z&_!Li63D5lLH1Od%B6>YNLJ1rKO+f>1==eeg4%7P%sK28<7ux{J*KC)t zXm?eKUy(a zNA;5hMFu7Q?W=+UtqKruAi+;a!|p2dZ_u{>%U=Qf Wx#$Mr`^{6 30 { + _durationStorage[key] = removeHighAndLow(_durationStorage[key]) + } + _pointsInTime[key] = time.Now() +} + +// GetAveragePerformance will return the average durations for the event +func GetAveragePerformance(key string) float64 { + timestamp := _pointsInTime[key] + if timestamp.IsZero() { + return 0 + } + + delta := time.Since(timestamp).Seconds() + _durationStorage[key] = append(_durationStorage[key], delta) + if len(_durationStorage[key]) < 10 { + return 0 + } + _durationStorage[key] = removeHighAndLow(_durationStorage[key]) + return avg(_durationStorage[key]) +} + +func removeHighAndLow(values []float64) []float64 { + sort.Float64s(values) + return values[1 : len(values)-1] +} + +func avg(values []float64) float64 { + total := 0.0 + for _, number := range values { + total = total + number + } + average := total / float64(len(values)) + return average +} diff --git a/utils/utils.go b/utils/utils.go index 019d7280e..935e23f3e 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -4,6 +4,7 @@ import ( "bytes" "io/ioutil" "os" + "path" "path/filepath" "strings" @@ -39,7 +40,14 @@ func GetRelativePathFromAbsolutePath(path string) string { return filepath.Join(variant, file) } -//Copy copies the +func GetIndexFromFilePath(path string) string { + pathComponents := strings.Split(path, "/") + variant := pathComponents[len(pathComponents)-2] + + return variant +} + +//Copy copies the file to destination func Copy(source, destination string) error { input, err := ioutil.ReadFile(source) if err != nil { @@ -49,6 +57,11 @@ func Copy(source, destination string) error { return ioutil.WriteFile(destination, input, 0644) } +//Move moves the file to destination +func Move(source, destination string) error { + return os.Rename(source, destination) +} + // IsUserAgentABot returns if a web client user-agent is seen as a bot func IsUserAgentABot(userAgent string) bool { if userAgent == "" { @@ -97,3 +110,24 @@ func RenderSimpleMarkdown(raw string) string { return buf.String() } + +// GetCacheDurationSecondsForPath will return the number of seconds to cache an item +func GetCacheDurationSecondsForPath(filePath string) int { + if path.Base(filePath) == "thumbnail.jpg" { + // Thumbnails re-generate during live + return 20 + } else if path.Ext(filePath) == ".js" || path.Ext(filePath) == ".css" { + // Cache javascript & CSS + return 60 + } else if path.Ext(filePath) == ".ts" { + // Cache video segments as long as you want. They can't change. + // This matters most for local hosting of segments for recordings + // and not for live or 3rd party storage. + return 31557600 + } else if path.Ext(filePath) == ".m3u8" { + return 0 + } + + // Default cache length in seconds + return 30 +} diff --git a/webroot/index-video-only.html b/webroot/index-video-only.html index f0b2643ca..975291289 100644 --- a/webroot/index-video-only.html +++ b/webroot/index-video-only.html @@ -5,7 +5,7 @@ - + diff --git a/webroot/index.html b/webroot/index.html index 60d7a55ea..c60506ad0 100644 --- a/webroot/index.html +++ b/webroot/index.html @@ -26,7 +26,7 @@ - + diff --git a/webroot/js/components/player.js b/webroot/js/components/player.js index 22c4d2c77..8c60ac119 100644 --- a/webroot/js/components/player.js +++ b/webroot/js/components/player.js @@ -1,11 +1,11 @@ // https://docs.videojs.com/player -import videojs from '/js/web_modules/videojs/dist/video.min.js'; +import videojs from '/js/web_modules/videojs/core.js'; +import '/js/web_modules/@videojs/http-streaming/dist/videojs-http-streaming.min.js'; import { getLocalStorage, setLocalStorage } from '../utils/helpers.js'; import { PLAYER_VOLUME } from '../utils/constants.js'; const VIDEO_ID = 'video'; -// TODO: This directory is customizable in the config. So we should expose this via the config API. const URL_STREAM = `/hls/stream.m3u8`; // Video setup diff --git a/webroot/js/web_modules/@videojs/http-streaming/dist/videojs-http-streaming.min.js b/webroot/js/web_modules/@videojs/http-streaming/dist/videojs-http-streaming.min.js index a221d101f..7b077c24a 100644 --- a/webroot/js/web_modules/@videojs/http-streaming/dist/videojs-http-streaming.min.js +++ b/webroot/js/web_modules/@videojs/http-streaming/dist/videojs-http-streaming.min.js @@ -1,3999 +1,4 @@ -import { c as createCommonjsModule, a as commonjsGlobal, d as document_1, w as window_1$1, g as getDefaultExportFromCjs } from '../../../common/window-1e586371.js'; - -var _extends_1 = createCommonjsModule(function (module) { -function _extends() { - module.exports = _extends = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - - return target; - }; - - return _extends.apply(this, arguments); -} - -module.exports = _extends; -}); - -function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - - return self; -} - -var assertThisInitialized = _assertThisInitialized; - -var _typeof_1 = createCommonjsModule(function (module) { -function _typeof(obj) { - "@babel/helpers - typeof"; - - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - module.exports = _typeof = function _typeof(obj) { - return typeof obj; - }; - } else { - module.exports = _typeof = function _typeof(obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - - return _typeof(obj); -} - -module.exports = _typeof; -}); - -var getPrototypeOf = createCommonjsModule(function (module) { -function _getPrototypeOf(o) { - module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); -} - -module.exports = _getPrototypeOf; -}); - -function _inheritsLoose(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - subClass.__proto__ = superClass; -} - -var inheritsLoose = _inheritsLoose; - -var tuple = SafeParseTuple; - -function SafeParseTuple(obj, reviver) { - var json; - var error = null; - - try { - json = JSON.parse(obj, reviver); - } catch (err) { - error = err; - } - - return [error, json] -} - -var keycode = createCommonjsModule(function (module, exports) { -// Source: http://jsfiddle.net/vWx8V/ -// http://stackoverflow.com/questions/5603195/full-list-of-javascript-keycodes - -/** - * Conenience method returns corresponding value for given keyName or keyCode. - * - * @param {Mixed} keyCode {Number} or keyName {String} - * @return {Mixed} - * @api public - */ - -function keyCode(searchInput) { - // Keyboard Events - if (searchInput && 'object' === typeof searchInput) { - var hasKeyCode = searchInput.which || searchInput.keyCode || searchInput.charCode; - if (hasKeyCode) searchInput = hasKeyCode; - } - - // Numbers - if ('number' === typeof searchInput) return names[searchInput] - - // Everything else (cast to string) - var search = String(searchInput); - - // check codes - var foundNamedKey = codes[search.toLowerCase()]; - if (foundNamedKey) return foundNamedKey - - // check aliases - var foundNamedKey = aliases[search.toLowerCase()]; - if (foundNamedKey) return foundNamedKey - - // weird character? - if (search.length === 1) return search.charCodeAt(0) - - return undefined -} - -/** - * Compares a keyboard event with a given keyCode or keyName. - * - * @param {Event} event Keyboard event that should be tested - * @param {Mixed} keyCode {Number} or keyName {String} - * @return {Boolean} - * @api public - */ -keyCode.isEventKey = function isEventKey(event, nameOrCode) { - if (event && 'object' === typeof event) { - var keyCode = event.which || event.keyCode || event.charCode; - if (keyCode === null || keyCode === undefined) { return false; } - if (typeof nameOrCode === 'string') { - // check codes - var foundNamedKey = codes[nameOrCode.toLowerCase()]; - if (foundNamedKey) { return foundNamedKey === keyCode; } - - // check aliases - var foundNamedKey = aliases[nameOrCode.toLowerCase()]; - if (foundNamedKey) { return foundNamedKey === keyCode; } - } else if (typeof nameOrCode === 'number') { - return nameOrCode === keyCode; - } - return false; - } -}; - -exports = module.exports = keyCode; - -/** - * Get by name - * - * exports.code['enter'] // => 13 - */ - -var codes = exports.code = exports.codes = { - 'backspace': 8, - 'tab': 9, - 'enter': 13, - 'shift': 16, - 'ctrl': 17, - 'alt': 18, - 'pause/break': 19, - 'caps lock': 20, - 'esc': 27, - 'space': 32, - 'page up': 33, - 'page down': 34, - 'end': 35, - 'home': 36, - 'left': 37, - 'up': 38, - 'right': 39, - 'down': 40, - 'insert': 45, - 'delete': 46, - 'command': 91, - 'left command': 91, - 'right command': 93, - 'numpad *': 106, - 'numpad +': 107, - 'numpad -': 109, - 'numpad .': 110, - 'numpad /': 111, - 'num lock': 144, - 'scroll lock': 145, - 'my computer': 182, - 'my calculator': 183, - ';': 186, - '=': 187, - ',': 188, - '-': 189, - '.': 190, - '/': 191, - '`': 192, - '[': 219, - '\\': 220, - ']': 221, - "'": 222 -}; - -// Helper aliases - -var aliases = exports.aliases = { - 'windows': 91, - '⇧': 16, - '⌥': 18, - '⌃': 17, - '⌘': 91, - 'ctl': 17, - 'control': 17, - 'option': 18, - 'pause': 19, - 'break': 19, - 'caps': 20, - 'return': 13, - 'escape': 27, - 'spc': 32, - 'spacebar': 32, - 'pgup': 33, - 'pgdn': 34, - 'ins': 45, - 'del': 46, - 'cmd': 91 -}; - -/*! - * Programatically add the following - */ - -// lower case chars -for (i = 97; i < 123; i++) codes[String.fromCharCode(i)] = i - 32; - -// numbers -for (var i = 48; i < 58; i++) codes[i - 48] = i; - -// function keys -for (i = 1; i < 13; i++) codes['f'+i] = i + 111; - -// numpad keys -for (i = 0; i < 10; i++) codes['numpad '+i] = i + 96; - -/** - * Get by code - * - * exports.name[13] // => 'Enter' - */ - -var names = exports.names = exports.title = {}; // title for backward compat - -// Create reverse mapping -for (i in codes) names[codes[i]] = i; - -// Add aliases -for (var alias in aliases) { - codes[alias] = aliases[alias]; -} -}); - -var win; - -if (typeof window !== "undefined") { - win = window; -} else if (typeof commonjsGlobal !== "undefined") { - win = commonjsGlobal; -} else if (typeof self !== "undefined"){ - win = self; -} else { - win = {}; -} - -var window_1 = win; - -var isFunction_1 = isFunction; - -var toString = Object.prototype.toString; - -function isFunction (fn) { - if (!fn) { - return false - } - var string = toString.call(fn); - return string === '[object Function]' || - (typeof fn === 'function' && string !== '[object RegExp]') || - (typeof window !== 'undefined' && - // IE8 and below - (fn === window.setTimeout || - fn === window.alert || - fn === window.confirm || - fn === window.prompt)) -} - -/** - * @license - * slighly modified parse-headers 2.0.2 - * Copyright (c) 2014 David Björklund - * Available under the MIT license - * - */ - -var parseHeaders = function(headers) { - var result = {}; - - if (!headers) { - return result; - } - - headers.trim().split('\n').forEach(function(row) { - var index = row.indexOf(':'); - var key = row.slice(0, index).trim().toLowerCase(); - var value = row.slice(index + 1).trim(); - - if (typeof(result[key]) === 'undefined') { - result[key] = value; - } else if (Array.isArray(result[key])) { - result[key].push(value); - } else { - result[key] = [ result[key], value ]; - } - }); - - return result; -}; - -var xhr = createXHR; -// Allow use of default import syntax in TypeScript -var _default = createXHR; -createXHR.XMLHttpRequest = window_1.XMLHttpRequest || noop; -createXHR.XDomainRequest = "withCredentials" in (new createXHR.XMLHttpRequest()) ? createXHR.XMLHttpRequest : window_1.XDomainRequest; - -forEachArray(["get", "put", "post", "patch", "head", "delete"], function(method) { - createXHR[method === "delete" ? "del" : method] = function(uri, options, callback) { - options = initParams(uri, options, callback); - options.method = method.toUpperCase(); - return _createXHR(options) - }; -}); - -function forEachArray(array, iterator) { - for (var i = 0; i < array.length; i++) { - iterator(array[i]); - } -} - -function isEmpty(obj){ - for(var i in obj){ - if(obj.hasOwnProperty(i)) return false - } - return true -} - -function initParams(uri, options, callback) { - var params = uri; - - if (isFunction_1(options)) { - callback = options; - if (typeof uri === "string") { - params = {uri:uri}; - } - } else { - params = _extends_1({}, options, {uri: uri}); - } - - params.callback = callback; - return params -} - -function createXHR(uri, options, callback) { - options = initParams(uri, options, callback); - return _createXHR(options) -} - -function _createXHR(options) { - if(typeof options.callback === "undefined"){ - throw new Error("callback argument missing") - } - - var called = false; - var callback = function cbOnce(err, response, body){ - if(!called){ - called = true; - options.callback(err, response, body); - } - }; - - function readystatechange() { - if (xhr.readyState === 4) { - setTimeout(loadFunc, 0); - } - } - - function getBody() { - // Chrome with requestType=blob throws errors arround when even testing access to responseText - var body = undefined; - - if (xhr.response) { - body = xhr.response; - } else { - body = xhr.responseText || getXml(xhr); - } - - if (isJson) { - try { - body = JSON.parse(body); - } catch (e) {} - } - - return body - } - - function errorFunc(evt) { - clearTimeout(timeoutTimer); - if(!(evt instanceof Error)){ - evt = new Error("" + (evt || "Unknown XMLHttpRequest Error") ); - } - evt.statusCode = 0; - return callback(evt, failureResponse) - } - - // will load the data & process the response in a special response object - function loadFunc() { - if (aborted) return - var status; - clearTimeout(timeoutTimer); - if(options.useXDR && xhr.status===undefined) { - //IE8 CORS GET successful response doesn't have a status field, but body is fine - status = 200; - } else { - status = (xhr.status === 1223 ? 204 : xhr.status); - } - var response = failureResponse; - var err = null; - - if (status !== 0){ - response = { - body: getBody(), - statusCode: status, - method: method, - headers: {}, - url: uri, - rawRequest: xhr - }; - if(xhr.getAllResponseHeaders){ //remember xhr can in fact be XDR for CORS in IE - response.headers = parseHeaders(xhr.getAllResponseHeaders()); - } - } else { - err = new Error("Internal XMLHttpRequest Error"); - } - return callback(err, response, response.body) - } - - var xhr = options.xhr || null; - - if (!xhr) { - if (options.cors || options.useXDR) { - xhr = new createXHR.XDomainRequest(); - }else { - xhr = new createXHR.XMLHttpRequest(); - } - } - - var key; - var aborted; - var uri = xhr.url = options.uri || options.url; - var method = xhr.method = options.method || "GET"; - var body = options.body || options.data; - var headers = xhr.headers = options.headers || {}; - var sync = !!options.sync; - var isJson = false; - var timeoutTimer; - var failureResponse = { - body: undefined, - headers: {}, - statusCode: 0, - method: method, - url: uri, - rawRequest: xhr - }; - - if ("json" in options && options.json !== false) { - isJson = true; - headers["accept"] || headers["Accept"] || (headers["Accept"] = "application/json"); //Don't override existing accept header declared by user - if (method !== "GET" && method !== "HEAD") { - headers["content-type"] || headers["Content-Type"] || (headers["Content-Type"] = "application/json"); //Don't override existing accept header declared by user - body = JSON.stringify(options.json === true ? body : options.json); - } - } - - xhr.onreadystatechange = readystatechange; - xhr.onload = loadFunc; - xhr.onerror = errorFunc; - // IE9 must have onprogress be set to a unique function. - xhr.onprogress = function () { - // IE must die - }; - xhr.onabort = function(){ - aborted = true; - }; - xhr.ontimeout = errorFunc; - xhr.open(method, uri, !sync, options.username, options.password); - //has to be after open - if(!sync) { - xhr.withCredentials = !!options.withCredentials; - } - // Cannot set timeout with sync request - // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly - // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent - if (!sync && options.timeout > 0 ) { - timeoutTimer = setTimeout(function(){ - if (aborted) return - aborted = true;//IE9 may still call readystatechange - xhr.abort("timeout"); - var e = new Error("XMLHttpRequest timeout"); - e.code = "ETIMEDOUT"; - errorFunc(e); - }, options.timeout ); - } - - if (xhr.setRequestHeader) { - for(key in headers){ - if(headers.hasOwnProperty(key)){ - xhr.setRequestHeader(key, headers[key]); - } - } - } else if (options.headers && !isEmpty(options.headers)) { - throw new Error("Headers cannot be set on an XDomainRequest object") - } - - if ("responseType" in options) { - xhr.responseType = options.responseType; - } - - if ("beforeSend" in options && - typeof options.beforeSend === "function" - ) { - options.beforeSend(xhr); - } - - // Microsoft Edge browser sends "undefined" when send is called with undefined value. - // XMLHttpRequest spec says to pass null as body to indicate no body - // See https://github.com/naugtur/xhr/issues/100. - xhr.send(body || null); - - return xhr - - -} - -function getXml(xhr) { - // xhr.responseXML will throw Exception "InvalidStateError" or "DOMException" - // See https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseXML. - try { - if (xhr.responseType === "document") { - return xhr.responseXML - } - var firefoxBugTakenEffect = xhr.responseXML && xhr.responseXML.documentElement.nodeName === "parsererror"; - if (xhr.responseType === "" && !firefoxBugTakenEffect) { - return xhr.responseXML - } - } catch (e) {} - - return null -} - -function noop() {} -xhr.default = _default; - -/** - * Copyright 2013 vtt.js Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ - - -var _objCreate = Object.create || (function() { - function F() {} - return function(o) { - if (arguments.length !== 1) { - throw new Error('Object.create shim only accepts one parameter.'); - } - F.prototype = o; - return new F(); - }; -})(); - -// Creates a new ParserError object from an errorData object. The errorData -// object should have default code and message properties. The default message -// property can be overriden by passing in a message parameter. -// See ParsingError.Errors below for acceptable errors. -function ParsingError(errorData, message) { - this.name = "ParsingError"; - this.code = errorData.code; - this.message = message || errorData.message; -} -ParsingError.prototype = _objCreate(Error.prototype); -ParsingError.prototype.constructor = ParsingError; - -// ParsingError metadata for acceptable ParsingErrors. -ParsingError.Errors = { - BadSignature: { - code: 0, - message: "Malformed WebVTT signature." - }, - BadTimeStamp: { - code: 1, - message: "Malformed time stamp." - } -}; - -// Try to parse input as a time stamp. -function parseTimeStamp(input) { - - function computeSeconds(h, m, s, f) { - return (h | 0) * 3600 + (m | 0) * 60 + (s | 0) + (f | 0) / 1000; - } - - var m = input.match(/^(\d+):(\d{1,2})(:\d{1,2})?\.(\d{3})/); - if (!m) { - return null; - } - - if (m[3]) { - // Timestamp takes the form of [hours]:[minutes]:[seconds].[milliseconds] - return computeSeconds(m[1], m[2], m[3].replace(":", ""), m[4]); - } else if (m[1] > 59) { - // Timestamp takes the form of [hours]:[minutes].[milliseconds] - // First position is hours as it's over 59. - return computeSeconds(m[1], m[2], 0, m[4]); - } else { - // Timestamp takes the form of [minutes]:[seconds].[milliseconds] - return computeSeconds(0, m[1], m[2], m[4]); - } -} - -// A settings object holds key/value pairs and will ignore anything but the first -// assignment to a specific key. -function Settings() { - this.values = _objCreate(null); -} - -Settings.prototype = { - // Only accept the first assignment to any key. - set: function(k, v) { - if (!this.get(k) && v !== "") { - this.values[k] = v; - } - }, - // Return the value for a key, or a default value. - // If 'defaultKey' is passed then 'dflt' is assumed to be an object with - // a number of possible default values as properties where 'defaultKey' is - // the key of the property that will be chosen; otherwise it's assumed to be - // a single value. - get: function(k, dflt, defaultKey) { - if (defaultKey) { - return this.has(k) ? this.values[k] : dflt[defaultKey]; - } - return this.has(k) ? this.values[k] : dflt; - }, - // Check whether we have a value for a key. - has: function(k) { - return k in this.values; - }, - // Accept a setting if its one of the given alternatives. - alt: function(k, v, a) { - for (var n = 0; n < a.length; ++n) { - if (v === a[n]) { - this.set(k, v); - break; - } - } - }, - // Accept a setting if its a valid (signed) integer. - integer: function(k, v) { - if (/^-?\d+$/.test(v)) { // integer - this.set(k, parseInt(v, 10)); - } - }, - // Accept a setting if its a valid percentage. - percent: function(k, v) { - var m; - if ((m = v.match(/^([\d]{1,3})(\.[\d]*)?%$/))) { - v = parseFloat(v); - if (v >= 0 && v <= 100) { - this.set(k, v); - return true; - } - } - return false; - } -}; - -// Helper function to parse input into groups separated by 'groupDelim', and -// interprete each group as a key/value pair separated by 'keyValueDelim'. -function parseOptions(input, callback, keyValueDelim, groupDelim) { - var groups = groupDelim ? input.split(groupDelim) : [input]; - for (var i in groups) { - if (typeof groups[i] !== "string") { - continue; - } - var kv = groups[i].split(keyValueDelim); - if (kv.length !== 2) { - continue; - } - var k = kv[0]; - var v = kv[1]; - callback(k, v); - } -} - -function parseCue(input, cue, regionList) { - // Remember the original input if we need to throw an error. - var oInput = input; - // 4.1 WebVTT timestamp - function consumeTimeStamp() { - var ts = parseTimeStamp(input); - if (ts === null) { - throw new ParsingError(ParsingError.Errors.BadTimeStamp, - "Malformed timestamp: " + oInput); - } - // Remove time stamp from input. - input = input.replace(/^[^\sa-zA-Z-]+/, ""); - return ts; - } - - // 4.4.2 WebVTT cue settings - function consumeCueSettings(input, cue) { - var settings = new Settings(); - - parseOptions(input, function (k, v) { - switch (k) { - case "region": - // Find the last region we parsed with the same region id. - for (var i = regionList.length - 1; i >= 0; i--) { - if (regionList[i].id === v) { - settings.set(k, regionList[i].region); - break; - } - } - break; - case "vertical": - settings.alt(k, v, ["rl", "lr"]); - break; - case "line": - var vals = v.split(","), - vals0 = vals[0]; - settings.integer(k, vals0); - settings.percent(k, vals0) ? settings.set("snapToLines", false) : null; - settings.alt(k, vals0, ["auto"]); - if (vals.length === 2) { - settings.alt("lineAlign", vals[1], ["start", "center", "end"]); - } - break; - case "position": - vals = v.split(","); - settings.percent(k, vals[0]); - if (vals.length === 2) { - settings.alt("positionAlign", vals[1], ["start", "center", "end"]); - } - break; - case "size": - settings.percent(k, v); - break; - case "align": - settings.alt(k, v, ["start", "center", "end", "left", "right"]); - break; - } - }, /:/, /\s/); - - // Apply default values for any missing fields. - cue.region = settings.get("region", null); - cue.vertical = settings.get("vertical", ""); - try { - cue.line = settings.get("line", "auto"); - } catch (e) {} - cue.lineAlign = settings.get("lineAlign", "start"); - cue.snapToLines = settings.get("snapToLines", true); - cue.size = settings.get("size", 100); - // Safari still uses the old middle value and won't accept center - try { - cue.align = settings.get("align", "center"); - } catch (e) { - cue.align = settings.get("align", "middle"); - } - try { - cue.position = settings.get("position", "auto"); - } catch (e) { - cue.position = settings.get("position", { - start: 0, - left: 0, - center: 50, - middle: 50, - end: 100, - right: 100 - }, cue.align); - } - - - cue.positionAlign = settings.get("positionAlign", { - start: "start", - left: "start", - center: "center", - middle: "center", - end: "end", - right: "end" - }, cue.align); - } - - function skipWhitespace() { - input = input.replace(/^\s+/, ""); - } - - // 4.1 WebVTT cue timings. - skipWhitespace(); - cue.startTime = consumeTimeStamp(); // (1) collect cue start time - skipWhitespace(); - if (input.substr(0, 3) !== "-->") { // (3) next characters must match "-->" - throw new ParsingError(ParsingError.Errors.BadTimeStamp, - "Malformed time stamp (time stamps must be separated by '-->'): " + - oInput); - } - input = input.substr(3); - skipWhitespace(); - cue.endTime = consumeTimeStamp(); // (5) collect cue end time - - // 4.1 WebVTT cue settings list. - skipWhitespace(); - consumeCueSettings(input, cue); -} - -var TEXTAREA_ELEMENT = document_1.createElement("textarea"); - -var TAG_NAME = { - c: "span", - i: "i", - b: "b", - u: "u", - ruby: "ruby", - rt: "rt", - v: "span", - lang: "span" -}; - -// 5.1 default text color -// 5.2 default text background color is equivalent to text color with bg_ prefix -var DEFAULT_COLOR_CLASS = { - white: 'rgba(255,255,255,1)', - lime: 'rgba(0,255,0,1)', - cyan: 'rgba(0,255,255,1)', - red: 'rgba(255,0,0,1)', - yellow: 'rgba(255,255,0,1)', - magenta: 'rgba(255,0,255,1)', - blue: 'rgba(0,0,255,1)', - black: 'rgba(0,0,0,1)' -}; - -var TAG_ANNOTATION = { - v: "title", - lang: "lang" -}; - -var NEEDS_PARENT = { - rt: "ruby" -}; - -// Parse content into a document fragment. -function parseContent(window, input) { - function nextToken() { - // Check for end-of-string. - if (!input) { - return null; - } - - // Consume 'n' characters from the input. - function consume(result) { - input = input.substr(result.length); - return result; - } - - var m = input.match(/^([^<]*)(<[^>]*>?)?/); - // If there is some text before the next tag, return it, otherwise return - // the tag. - return consume(m[1] ? m[1] : m[2]); - } - - function unescape(s) { - TEXTAREA_ELEMENT.innerHTML = s; - s = TEXTAREA_ELEMENT.textContent; - TEXTAREA_ELEMENT.textContent = ""; - return s; - } - - function shouldAdd(current, element) { - return !NEEDS_PARENT[element.localName] || - NEEDS_PARENT[element.localName] === current.localName; - } - - // Create an element for this tag. - function createElement(type, annotation) { - var tagName = TAG_NAME[type]; - if (!tagName) { - return null; - } - var element = window.document.createElement(tagName); - var name = TAG_ANNOTATION[type]; - if (name && annotation) { - element[name] = annotation.trim(); - } - return element; - } - - var rootDiv = window.document.createElement("div"), - current = rootDiv, - t, - tagStack = []; - - while ((t = nextToken()) !== null) { - if (t[0] === '<') { - if (t[1] === "/") { - // If the closing tag matches, move back up to the parent node. - if (tagStack.length && - tagStack[tagStack.length - 1] === t.substr(2).replace(">", "")) { - tagStack.pop(); - current = current.parentNode; - } - // Otherwise just ignore the end tag. - continue; - } - var ts = parseTimeStamp(t.substr(1, t.length - 2)); - var node; - if (ts) { - // Timestamps are lead nodes as well. - node = window.document.createProcessingInstruction("timestamp", ts); - current.appendChild(node); - continue; - } - var m = t.match(/^<([^.\s/0-9>]+)(\.[^\s\\>]+)?([^>\\]+)?(\\?)>?$/); - // If we can't parse the tag, skip to the next tag. - if (!m) { - continue; - } - // Try to construct an element, and ignore the tag if we couldn't. - node = createElement(m[1], m[3]); - if (!node) { - continue; - } - // Determine if the tag should be added based on the context of where it - // is placed in the cuetext. - if (!shouldAdd(current, node)) { - continue; - } - // Set the class list (as a list of classes, separated by space). - if (m[2]) { - var classes = m[2].split('.'); - - classes.forEach(function(cl) { - var bgColor = /^bg_/.test(cl); - // slice out `bg_` if it's a background color - var colorName = bgColor ? cl.slice(3) : cl; - - if (DEFAULT_COLOR_CLASS.hasOwnProperty(colorName)) { - var propName = bgColor ? 'background-color' : 'color'; - var propValue = DEFAULT_COLOR_CLASS[colorName]; - - node.style[propName] = propValue; - } - }); - - node.className = classes.join(' '); - } - // Append the node to the current node, and enter the scope of the new - // node. - tagStack.push(m[1]); - current.appendChild(node); - current = node; - continue; - } - - // Text nodes are leaf nodes. - current.appendChild(window.document.createTextNode(unescape(t))); - } - - return rootDiv; -} - -// This is a list of all the Unicode characters that have a strong -// right-to-left category. What this means is that these characters are -// written right-to-left for sure. It was generated by pulling all the strong -// right-to-left characters out of the Unicode data table. That table can -// found at: http://www.unicode.org/Public/UNIDATA/UnicodeData.txt -var strongRTLRanges = [[0x5be, 0x5be], [0x5c0, 0x5c0], [0x5c3, 0x5c3], [0x5c6, 0x5c6], - [0x5d0, 0x5ea], [0x5f0, 0x5f4], [0x608, 0x608], [0x60b, 0x60b], [0x60d, 0x60d], - [0x61b, 0x61b], [0x61e, 0x64a], [0x66d, 0x66f], [0x671, 0x6d5], [0x6e5, 0x6e6], - [0x6ee, 0x6ef], [0x6fa, 0x70d], [0x70f, 0x710], [0x712, 0x72f], [0x74d, 0x7a5], - [0x7b1, 0x7b1], [0x7c0, 0x7ea], [0x7f4, 0x7f5], [0x7fa, 0x7fa], [0x800, 0x815], - [0x81a, 0x81a], [0x824, 0x824], [0x828, 0x828], [0x830, 0x83e], [0x840, 0x858], - [0x85e, 0x85e], [0x8a0, 0x8a0], [0x8a2, 0x8ac], [0x200f, 0x200f], - [0xfb1d, 0xfb1d], [0xfb1f, 0xfb28], [0xfb2a, 0xfb36], [0xfb38, 0xfb3c], - [0xfb3e, 0xfb3e], [0xfb40, 0xfb41], [0xfb43, 0xfb44], [0xfb46, 0xfbc1], - [0xfbd3, 0xfd3d], [0xfd50, 0xfd8f], [0xfd92, 0xfdc7], [0xfdf0, 0xfdfc], - [0xfe70, 0xfe74], [0xfe76, 0xfefc], [0x10800, 0x10805], [0x10808, 0x10808], - [0x1080a, 0x10835], [0x10837, 0x10838], [0x1083c, 0x1083c], [0x1083f, 0x10855], - [0x10857, 0x1085f], [0x10900, 0x1091b], [0x10920, 0x10939], [0x1093f, 0x1093f], - [0x10980, 0x109b7], [0x109be, 0x109bf], [0x10a00, 0x10a00], [0x10a10, 0x10a13], - [0x10a15, 0x10a17], [0x10a19, 0x10a33], [0x10a40, 0x10a47], [0x10a50, 0x10a58], - [0x10a60, 0x10a7f], [0x10b00, 0x10b35], [0x10b40, 0x10b55], [0x10b58, 0x10b72], - [0x10b78, 0x10b7f], [0x10c00, 0x10c48], [0x1ee00, 0x1ee03], [0x1ee05, 0x1ee1f], - [0x1ee21, 0x1ee22], [0x1ee24, 0x1ee24], [0x1ee27, 0x1ee27], [0x1ee29, 0x1ee32], - [0x1ee34, 0x1ee37], [0x1ee39, 0x1ee39], [0x1ee3b, 0x1ee3b], [0x1ee42, 0x1ee42], - [0x1ee47, 0x1ee47], [0x1ee49, 0x1ee49], [0x1ee4b, 0x1ee4b], [0x1ee4d, 0x1ee4f], - [0x1ee51, 0x1ee52], [0x1ee54, 0x1ee54], [0x1ee57, 0x1ee57], [0x1ee59, 0x1ee59], - [0x1ee5b, 0x1ee5b], [0x1ee5d, 0x1ee5d], [0x1ee5f, 0x1ee5f], [0x1ee61, 0x1ee62], - [0x1ee64, 0x1ee64], [0x1ee67, 0x1ee6a], [0x1ee6c, 0x1ee72], [0x1ee74, 0x1ee77], - [0x1ee79, 0x1ee7c], [0x1ee7e, 0x1ee7e], [0x1ee80, 0x1ee89], [0x1ee8b, 0x1ee9b], - [0x1eea1, 0x1eea3], [0x1eea5, 0x1eea9], [0x1eeab, 0x1eebb], [0x10fffd, 0x10fffd]]; - -function isStrongRTLChar(charCode) { - for (var i = 0; i < strongRTLRanges.length; i++) { - var currentRange = strongRTLRanges[i]; - if (charCode >= currentRange[0] && charCode <= currentRange[1]) { - return true; - } - } - - return false; -} - -function determineBidi(cueDiv) { - var nodeStack = [], - text = "", - charCode; - - if (!cueDiv || !cueDiv.childNodes) { - return "ltr"; - } - - function pushNodes(nodeStack, node) { - for (var i = node.childNodes.length - 1; i >= 0; i--) { - nodeStack.push(node.childNodes[i]); - } - } - - function nextTextNode(nodeStack) { - if (!nodeStack || !nodeStack.length) { - return null; - } - - var node = nodeStack.pop(), - text = node.textContent || node.innerText; - if (text) { - // TODO: This should match all unicode type B characters (paragraph - // separator characters). See issue #115. - var m = text.match(/^.*(\n|\r)/); - if (m) { - nodeStack.length = 0; - return m[0]; - } - return text; - } - if (node.tagName === "ruby") { - return nextTextNode(nodeStack); - } - if (node.childNodes) { - pushNodes(nodeStack, node); - return nextTextNode(nodeStack); - } - } - - pushNodes(nodeStack, cueDiv); - while ((text = nextTextNode(nodeStack))) { - for (var i = 0; i < text.length; i++) { - charCode = text.charCodeAt(i); - if (isStrongRTLChar(charCode)) { - return "rtl"; - } - } - } - return "ltr"; -} - -function computeLinePos(cue) { - if (typeof cue.line === "number" && - (cue.snapToLines || (cue.line >= 0 && cue.line <= 100))) { - return cue.line; - } - if (!cue.track || !cue.track.textTrackList || - !cue.track.textTrackList.mediaElement) { - return -1; - } - var track = cue.track, - trackList = track.textTrackList, - count = 0; - for (var i = 0; i < trackList.length && trackList[i] !== track; i++) { - if (trackList[i].mode === "showing") { - count++; - } - } - return ++count * -1; -} - -function StyleBox() { -} - -// Apply styles to a div. If there is no div passed then it defaults to the -// div on 'this'. -StyleBox.prototype.applyStyles = function(styles, div) { - div = div || this.div; - for (var prop in styles) { - if (styles.hasOwnProperty(prop)) { - div.style[prop] = styles[prop]; - } - } -}; - -StyleBox.prototype.formatStyle = function(val, unit) { - return val === 0 ? 0 : val + unit; -}; - -// Constructs the computed display state of the cue (a div). Places the div -// into the overlay which should be a block level element (usually a div). -function CueStyleBox(window, cue, styleOptions) { - StyleBox.call(this); - this.cue = cue; - - // Parse our cue's text into a DOM tree rooted at 'cueDiv'. This div will - // have inline positioning and will function as the cue background box. - this.cueDiv = parseContent(window, cue.text); - var styles = { - color: "rgba(255, 255, 255, 1)", - backgroundColor: "rgba(0, 0, 0, 0.8)", - position: "relative", - left: 0, - right: 0, - top: 0, - bottom: 0, - display: "inline", - writingMode: cue.vertical === "" ? "horizontal-tb" - : cue.vertical === "lr" ? "vertical-lr" - : "vertical-rl", - unicodeBidi: "plaintext" - }; - - this.applyStyles(styles, this.cueDiv); - - // Create an absolutely positioned div that will be used to position the cue - // div. Note, all WebVTT cue-setting alignments are equivalent to the CSS - // mirrors of them except middle instead of center on Safari. - this.div = window.document.createElement("div"); - styles = { - direction: determineBidi(this.cueDiv), - writingMode: cue.vertical === "" ? "horizontal-tb" - : cue.vertical === "lr" ? "vertical-lr" - : "vertical-rl", - unicodeBidi: "plaintext", - textAlign: cue.align === "middle" ? "center" : cue.align, - font: styleOptions.font, - whiteSpace: "pre-line", - position: "absolute" - }; - - this.applyStyles(styles); - this.div.appendChild(this.cueDiv); - - // Calculate the distance from the reference edge of the viewport to the text - // position of the cue box. The reference edge will be resolved later when - // the box orientation styles are applied. - var textPos = 0; - switch (cue.positionAlign) { - case "start": - textPos = cue.position; - break; - case "center": - textPos = cue.position - (cue.size / 2); - break; - case "end": - textPos = cue.position - cue.size; - break; - } - - // Horizontal box orientation; textPos is the distance from the left edge of the - // area to the left edge of the box and cue.size is the distance extending to - // the right from there. - if (cue.vertical === "") { - this.applyStyles({ - left: this.formatStyle(textPos, "%"), - width: this.formatStyle(cue.size, "%") - }); - // Vertical box orientation; textPos is the distance from the top edge of the - // area to the top edge of the box and cue.size is the height extending - // downwards from there. - } else { - this.applyStyles({ - top: this.formatStyle(textPos, "%"), - height: this.formatStyle(cue.size, "%") - }); - } - - this.move = function(box) { - this.applyStyles({ - top: this.formatStyle(box.top, "px"), - bottom: this.formatStyle(box.bottom, "px"), - left: this.formatStyle(box.left, "px"), - right: this.formatStyle(box.right, "px"), - height: this.formatStyle(box.height, "px"), - width: this.formatStyle(box.width, "px") - }); - }; -} -CueStyleBox.prototype = _objCreate(StyleBox.prototype); -CueStyleBox.prototype.constructor = CueStyleBox; - -// Represents the co-ordinates of an Element in a way that we can easily -// compute things with such as if it overlaps or intersects with another Element. -// Can initialize it with either a StyleBox or another BoxPosition. -function BoxPosition(obj) { - // Either a BoxPosition was passed in and we need to copy it, or a StyleBox - // was passed in and we need to copy the results of 'getBoundingClientRect' - // as the object returned is readonly. All co-ordinate values are in reference - // to the viewport origin (top left). - var lh, height, width, top; - if (obj.div) { - height = obj.div.offsetHeight; - width = obj.div.offsetWidth; - top = obj.div.offsetTop; - - var rects = (rects = obj.div.childNodes) && (rects = rects[0]) && - rects.getClientRects && rects.getClientRects(); - obj = obj.div.getBoundingClientRect(); - // In certain cases the outter div will be slightly larger then the sum of - // the inner div's lines. This could be due to bold text, etc, on some platforms. - // In this case we should get the average line height and use that. This will - // result in the desired behaviour. - lh = rects ? Math.max((rects[0] && rects[0].height) || 0, obj.height / rects.length) - : 0; - - } - this.left = obj.left; - this.right = obj.right; - this.top = obj.top || top; - this.height = obj.height || height; - this.bottom = obj.bottom || (top + (obj.height || height)); - this.width = obj.width || width; - this.lineHeight = lh !== undefined ? lh : obj.lineHeight; -} - -// Move the box along a particular axis. Optionally pass in an amount to move -// the box. If no amount is passed then the default is the line height of the -// box. -BoxPosition.prototype.move = function(axis, toMove) { - toMove = toMove !== undefined ? toMove : this.lineHeight; - switch (axis) { - case "+x": - this.left += toMove; - this.right += toMove; - break; - case "-x": - this.left -= toMove; - this.right -= toMove; - break; - case "+y": - this.top += toMove; - this.bottom += toMove; - break; - case "-y": - this.top -= toMove; - this.bottom -= toMove; - break; - } -}; - -// Check if this box overlaps another box, b2. -BoxPosition.prototype.overlaps = function(b2) { - return this.left < b2.right && - this.right > b2.left && - this.top < b2.bottom && - this.bottom > b2.top; -}; - -// Check if this box overlaps any other boxes in boxes. -BoxPosition.prototype.overlapsAny = function(boxes) { - for (var i = 0; i < boxes.length; i++) { - if (this.overlaps(boxes[i])) { - return true; - } - } - return false; -}; - -// Check if this box is within another box. -BoxPosition.prototype.within = function(container) { - return this.top >= container.top && - this.bottom <= container.bottom && - this.left >= container.left && - this.right <= container.right; -}; - -// Check if this box is entirely within the container or it is overlapping -// on the edge opposite of the axis direction passed. For example, if "+x" is -// passed and the box is overlapping on the left edge of the container, then -// return true. -BoxPosition.prototype.overlapsOppositeAxis = function(container, axis) { - switch (axis) { - case "+x": - return this.left < container.left; - case "-x": - return this.right > container.right; - case "+y": - return this.top < container.top; - case "-y": - return this.bottom > container.bottom; - } -}; - -// Find the percentage of the area that this box is overlapping with another -// box. -BoxPosition.prototype.intersectPercentage = function(b2) { - var x = Math.max(0, Math.min(this.right, b2.right) - Math.max(this.left, b2.left)), - y = Math.max(0, Math.min(this.bottom, b2.bottom) - Math.max(this.top, b2.top)), - intersectArea = x * y; - return intersectArea / (this.height * this.width); -}; - -// Convert the positions from this box to CSS compatible positions using -// the reference container's positions. This has to be done because this -// box's positions are in reference to the viewport origin, whereas, CSS -// values are in referecne to their respective edges. -BoxPosition.prototype.toCSSCompatValues = function(reference) { - return { - top: this.top - reference.top, - bottom: reference.bottom - this.bottom, - left: this.left - reference.left, - right: reference.right - this.right, - height: this.height, - width: this.width - }; -}; - -// Get an object that represents the box's position without anything extra. -// Can pass a StyleBox, HTMLElement, or another BoxPositon. -BoxPosition.getSimpleBoxPosition = function(obj) { - var height = obj.div ? obj.div.offsetHeight : obj.tagName ? obj.offsetHeight : 0; - var width = obj.div ? obj.div.offsetWidth : obj.tagName ? obj.offsetWidth : 0; - var top = obj.div ? obj.div.offsetTop : obj.tagName ? obj.offsetTop : 0; - - obj = obj.div ? obj.div.getBoundingClientRect() : - obj.tagName ? obj.getBoundingClientRect() : obj; - var ret = { - left: obj.left, - right: obj.right, - top: obj.top || top, - height: obj.height || height, - bottom: obj.bottom || (top + (obj.height || height)), - width: obj.width || width - }; - return ret; -}; - -// Move a StyleBox to its specified, or next best, position. The containerBox -// is the box that contains the StyleBox, such as a div. boxPositions are -// a list of other boxes that the styleBox can't overlap with. -function moveBoxToLinePosition(window, styleBox, containerBox, boxPositions) { - - // Find the best position for a cue box, b, on the video. The axis parameter - // is a list of axis, the order of which, it will move the box along. For example: - // Passing ["+x", "-x"] will move the box first along the x axis in the positive - // direction. If it doesn't find a good position for it there it will then move - // it along the x axis in the negative direction. - function findBestPosition(b, axis) { - var bestPosition, - specifiedPosition = new BoxPosition(b), - percentage = 1; // Highest possible so the first thing we get is better. - - for (var i = 0; i < axis.length; i++) { - while (b.overlapsOppositeAxis(containerBox, axis[i]) || - (b.within(containerBox) && b.overlapsAny(boxPositions))) { - b.move(axis[i]); - } - // We found a spot where we aren't overlapping anything. This is our - // best position. - if (b.within(containerBox)) { - return b; - } - var p = b.intersectPercentage(containerBox); - // If we're outside the container box less then we were on our last try - // then remember this position as the best position. - if (percentage > p) { - bestPosition = new BoxPosition(b); - percentage = p; - } - // Reset the box position to the specified position. - b = new BoxPosition(specifiedPosition); - } - return bestPosition || specifiedPosition; - } - - var boxPosition = new BoxPosition(styleBox), - cue = styleBox.cue, - linePos = computeLinePos(cue), - axis = []; - - // If we have a line number to align the cue to. - if (cue.snapToLines) { - var size; - switch (cue.vertical) { - case "": - axis = [ "+y", "-y" ]; - size = "height"; - break; - case "rl": - axis = [ "+x", "-x" ]; - size = "width"; - break; - case "lr": - axis = [ "-x", "+x" ]; - size = "width"; - break; - } - - var step = boxPosition.lineHeight, - position = step * Math.round(linePos), - maxPosition = containerBox[size] + step, - initialAxis = axis[0]; - - // If the specified intial position is greater then the max position then - // clamp the box to the amount of steps it would take for the box to - // reach the max position. - if (Math.abs(position) > maxPosition) { - position = position < 0 ? -1 : 1; - position *= Math.ceil(maxPosition / step) * step; - } - - // If computed line position returns negative then line numbers are - // relative to the bottom of the video instead of the top. Therefore, we - // need to increase our initial position by the length or width of the - // video, depending on the writing direction, and reverse our axis directions. - if (linePos < 0) { - position += cue.vertical === "" ? containerBox.height : containerBox.width; - axis = axis.reverse(); - } - - // Move the box to the specified position. This may not be its best - // position. - boxPosition.move(initialAxis, position); - - } else { - // If we have a percentage line value for the cue. - var calculatedPercentage = (boxPosition.lineHeight / containerBox.height) * 100; - - switch (cue.lineAlign) { - case "center": - linePos -= (calculatedPercentage / 2); - break; - case "end": - linePos -= calculatedPercentage; - break; - } - - // Apply initial line position to the cue box. - switch (cue.vertical) { - case "": - styleBox.applyStyles({ - top: styleBox.formatStyle(linePos, "%") - }); - break; - case "rl": - styleBox.applyStyles({ - left: styleBox.formatStyle(linePos, "%") - }); - break; - case "lr": - styleBox.applyStyles({ - right: styleBox.formatStyle(linePos, "%") - }); - break; - } - - axis = [ "+y", "-x", "+x", "-y" ]; - - // Get the box position again after we've applied the specified positioning - // to it. - boxPosition = new BoxPosition(styleBox); - } - - var bestPosition = findBestPosition(boxPosition, axis); - styleBox.move(bestPosition.toCSSCompatValues(containerBox)); -} - -function WebVTT$1() { - // Nothing -} - -// Helper to allow strings to be decoded instead of the default binary utf8 data. -WebVTT$1.StringDecoder = function() { - return { - decode: function(data) { - if (!data) { - return ""; - } - if (typeof data !== "string") { - throw new Error("Error - expected string data."); - } - return decodeURIComponent(encodeURIComponent(data)); - } - }; -}; - -WebVTT$1.convertCueToDOMTree = function(window, cuetext) { - if (!window || !cuetext) { - return null; - } - return parseContent(window, cuetext); -}; - -var FONT_SIZE_PERCENT = 0.05; -var FONT_STYLE = "sans-serif"; -var CUE_BACKGROUND_PADDING = "1.5%"; - -// Runs the processing model over the cues and regions passed to it. -// @param overlay A block level element (usually a div) that the computed cues -// and regions will be placed into. -WebVTT$1.processCues = function(window, cues, overlay) { - if (!window || !cues || !overlay) { - return null; - } - - // Remove all previous children. - while (overlay.firstChild) { - overlay.removeChild(overlay.firstChild); - } - - var paddedOverlay = window.document.createElement("div"); - paddedOverlay.style.position = "absolute"; - paddedOverlay.style.left = "0"; - paddedOverlay.style.right = "0"; - paddedOverlay.style.top = "0"; - paddedOverlay.style.bottom = "0"; - paddedOverlay.style.margin = CUE_BACKGROUND_PADDING; - overlay.appendChild(paddedOverlay); - - // Determine if we need to compute the display states of the cues. This could - // be the case if a cue's state has been changed since the last computation or - // if it has not been computed yet. - function shouldCompute(cues) { - for (var i = 0; i < cues.length; i++) { - if (cues[i].hasBeenReset || !cues[i].displayState) { - return true; - } - } - return false; - } - - // We don't need to recompute the cues' display states. Just reuse them. - if (!shouldCompute(cues)) { - for (var i = 0; i < cues.length; i++) { - paddedOverlay.appendChild(cues[i].displayState); - } - return; - } - - var boxPositions = [], - containerBox = BoxPosition.getSimpleBoxPosition(paddedOverlay), - fontSize = Math.round(containerBox.height * FONT_SIZE_PERCENT * 100) / 100; - var styleOptions = { - font: fontSize + "px " + FONT_STYLE - }; - - (function() { - var styleBox, cue; - - for (var i = 0; i < cues.length; i++) { - cue = cues[i]; - - // Compute the intial position and styles of the cue div. - styleBox = new CueStyleBox(window, cue, styleOptions); - paddedOverlay.appendChild(styleBox.div); - - // Move the cue div to it's correct line position. - moveBoxToLinePosition(window, styleBox, containerBox, boxPositions); - - // Remember the computed div so that we don't have to recompute it later - // if we don't have too. - cue.displayState = styleBox.div; - - boxPositions.push(BoxPosition.getSimpleBoxPosition(styleBox)); - } - })(); -}; - -WebVTT$1.Parser = function(window, vttjs, decoder) { - if (!decoder) { - decoder = vttjs; - vttjs = {}; - } - if (!vttjs) { - vttjs = {}; - } - - this.window = window; - this.vttjs = vttjs; - this.state = "INITIAL"; - this.buffer = ""; - this.decoder = decoder || new TextDecoder("utf8"); - this.regionList = []; -}; - -WebVTT$1.Parser.prototype = { - // If the error is a ParsingError then report it to the consumer if - // possible. If it's not a ParsingError then throw it like normal. - reportOrThrowError: function(e) { - if (e instanceof ParsingError) { - this.onparsingerror && this.onparsingerror(e); - } else { - throw e; - } - }, - parse: function (data) { - var self = this; - - // If there is no data then we won't decode it, but will just try to parse - // whatever is in buffer already. This may occur in circumstances, for - // example when flush() is called. - if (data) { - // Try to decode the data that we received. - self.buffer += self.decoder.decode(data, {stream: true}); - } - - function collectNextLine() { - var buffer = self.buffer; - var pos = 0; - while (pos < buffer.length && buffer[pos] !== '\r' && buffer[pos] !== '\n') { - ++pos; - } - var line = buffer.substr(0, pos); - // Advance the buffer early in case we fail below. - if (buffer[pos] === '\r') { - ++pos; - } - if (buffer[pos] === '\n') { - ++pos; - } - self.buffer = buffer.substr(pos); - return line; - } - - // 3.4 WebVTT region and WebVTT region settings syntax - function parseRegion(input) { - var settings = new Settings(); - - parseOptions(input, function (k, v) { - switch (k) { - case "id": - settings.set(k, v); - break; - case "width": - settings.percent(k, v); - break; - case "lines": - settings.integer(k, v); - break; - case "regionanchor": - case "viewportanchor": - var xy = v.split(','); - if (xy.length !== 2) { - break; - } - // We have to make sure both x and y parse, so use a temporary - // settings object here. - var anchor = new Settings(); - anchor.percent("x", xy[0]); - anchor.percent("y", xy[1]); - if (!anchor.has("x") || !anchor.has("y")) { - break; - } - settings.set(k + "X", anchor.get("x")); - settings.set(k + "Y", anchor.get("y")); - break; - case "scroll": - settings.alt(k, v, ["up"]); - break; - } - }, /=/, /\s/); - - // Create the region, using default values for any values that were not - // specified. - if (settings.has("id")) { - var region = new (self.vttjs.VTTRegion || self.window.VTTRegion)(); - region.width = settings.get("width", 100); - region.lines = settings.get("lines", 3); - region.regionAnchorX = settings.get("regionanchorX", 0); - region.regionAnchorY = settings.get("regionanchorY", 100); - region.viewportAnchorX = settings.get("viewportanchorX", 0); - region.viewportAnchorY = settings.get("viewportanchorY", 100); - region.scroll = settings.get("scroll", ""); - // Register the region. - self.onregion && self.onregion(region); - // Remember the VTTRegion for later in case we parse any VTTCues that - // reference it. - self.regionList.push({ - id: settings.get("id"), - region: region - }); - } - } - - // draft-pantos-http-live-streaming-20 - // https://tools.ietf.org/html/draft-pantos-http-live-streaming-20#section-3.5 - // 3.5 WebVTT - function parseTimestampMap(input) { - var settings = new Settings(); - - parseOptions(input, function(k, v) { - switch(k) { - case "MPEGT": - settings.integer(k + 'S', v); - break; - case "LOCA": - settings.set(k + 'L', parseTimeStamp(v)); - break; - } - }, /[^\d]:/, /,/); - - self.ontimestampmap && self.ontimestampmap({ - "MPEGTS": settings.get("MPEGTS"), - "LOCAL": settings.get("LOCAL") - }); - } - - // 3.2 WebVTT metadata header syntax - function parseHeader(input) { - if (input.match(/X-TIMESTAMP-MAP/)) { - // This line contains HLS X-TIMESTAMP-MAP metadata - parseOptions(input, function(k, v) { - switch(k) { - case "X-TIMESTAMP-MAP": - parseTimestampMap(v); - break; - } - }, /=/); - } else { - parseOptions(input, function (k, v) { - switch (k) { - case "Region": - // 3.3 WebVTT region metadata header syntax - parseRegion(v); - break; - } - }, /:/); - } - - } - - // 5.1 WebVTT file parsing. - try { - var line; - if (self.state === "INITIAL") { - // We can't start parsing until we have the first line. - if (!/\r\n|\n/.test(self.buffer)) { - return this; - } - - line = collectNextLine(); - - var m = line.match(/^WEBVTT([ \t].*)?$/); - if (!m || !m[0]) { - throw new ParsingError(ParsingError.Errors.BadSignature); - } - - self.state = "HEADER"; - } - - var alreadyCollectedLine = false; - while (self.buffer) { - // We can't parse a line until we have the full line. - if (!/\r\n|\n/.test(self.buffer)) { - return this; - } - - if (!alreadyCollectedLine) { - line = collectNextLine(); - } else { - alreadyCollectedLine = false; - } - - switch (self.state) { - case "HEADER": - // 13-18 - Allow a header (metadata) under the WEBVTT line. - if (/:/.test(line)) { - parseHeader(line); - } else if (!line) { - // An empty line terminates the header and starts the body (cues). - self.state = "ID"; - } - continue; - case "NOTE": - // Ignore NOTE blocks. - if (!line) { - self.state = "ID"; - } - continue; - case "ID": - // Check for the start of NOTE blocks. - if (/^NOTE($|[ \t])/.test(line)) { - self.state = "NOTE"; - break; - } - // 19-29 - Allow any number of line terminators, then initialize new cue values. - if (!line) { - continue; - } - self.cue = new (self.vttjs.VTTCue || self.window.VTTCue)(0, 0, ""); - // Safari still uses the old middle value and won't accept center - try { - self.cue.align = "center"; - } catch (e) { - self.cue.align = "middle"; - } - self.state = "CUE"; - // 30-39 - Check if self line contains an optional identifier or timing data. - if (line.indexOf("-->") === -1) { - self.cue.id = line; - continue; - } - // Process line as start of a cue. - /*falls through*/ - case "CUE": - // 40 - Collect cue timings and settings. - try { - parseCue(line, self.cue, self.regionList); - } catch (e) { - self.reportOrThrowError(e); - // In case of an error ignore rest of the cue. - self.cue = null; - self.state = "BADCUE"; - continue; - } - self.state = "CUETEXT"; - continue; - case "CUETEXT": - var hasSubstring = line.indexOf("-->") !== -1; - // 34 - If we have an empty line then report the cue. - // 35 - If we have the special substring '-->' then report the cue, - // but do not collect the line as we need to process the current - // one as a new cue. - if (!line || hasSubstring && (alreadyCollectedLine = true)) { - // We are done parsing self cue. - self.oncue && self.oncue(self.cue); - self.cue = null; - self.state = "ID"; - continue; - } - if (self.cue.text) { - self.cue.text += "\n"; - } - self.cue.text += line.replace(/\u2028/g, '\n').replace(/u2029/g, '\n'); - continue; - case "BADCUE": // BADCUE - // 54-62 - Collect and discard the remaining cue. - if (!line) { - self.state = "ID"; - } - continue; - } - } - } catch (e) { - self.reportOrThrowError(e); - - // If we are currently parsing a cue, report what we have. - if (self.state === "CUETEXT" && self.cue && self.oncue) { - self.oncue(self.cue); - } - self.cue = null; - // Enter BADWEBVTT state if header was not parsed correctly otherwise - // another exception occurred so enter BADCUE state. - self.state = self.state === "INITIAL" ? "BADWEBVTT" : "BADCUE"; - } - return this; - }, - flush: function () { - var self = this; - try { - // Finish decoding the stream. - self.buffer += self.decoder.decode(); - // Synthesize the end of the current cue or region. - if (self.cue || self.state === "HEADER") { - self.buffer += "\n\n"; - self.parse(); - } - // If we've flushed, parsed, and we're still on the INITIAL state then - // that means we don't have enough of the stream to parse the first - // line. - if (self.state === "INITIAL") { - throw new ParsingError(ParsingError.Errors.BadSignature); - } - } catch(e) { - self.reportOrThrowError(e); - } - self.onflush && self.onflush(); - return this; - } -}; - -var vtt = WebVTT$1; - -/** - * Copyright 2013 vtt.js Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var autoKeyword = "auto"; -var directionSetting = { - "": 1, - "lr": 1, - "rl": 1 -}; -var alignSetting = { - "start": 1, - "center": 1, - "end": 1, - "left": 1, - "right": 1, - "auto": 1, - "line-left": 1, - "line-right": 1 -}; - -function findDirectionSetting(value) { - if (typeof value !== "string") { - return false; - } - var dir = directionSetting[value.toLowerCase()]; - return dir ? value.toLowerCase() : false; -} - -function findAlignSetting(value) { - if (typeof value !== "string") { - return false; - } - var align = alignSetting[value.toLowerCase()]; - return align ? value.toLowerCase() : false; -} - -function VTTCue(startTime, endTime, text) { - /** - * Shim implementation specific properties. These properties are not in - * the spec. - */ - - // Lets us know when the VTTCue's data has changed in such a way that we need - // to recompute its display state. This lets us compute its display state - // lazily. - this.hasBeenReset = false; - - /** - * VTTCue and TextTrackCue properties - * http://dev.w3.org/html5/webvtt/#vttcue-interface - */ - - var _id = ""; - var _pauseOnExit = false; - var _startTime = startTime; - var _endTime = endTime; - var _text = text; - var _region = null; - var _vertical = ""; - var _snapToLines = true; - var _line = "auto"; - var _lineAlign = "start"; - var _position = "auto"; - var _positionAlign = "auto"; - var _size = 100; - var _align = "center"; - - Object.defineProperties(this, { - "id": { - enumerable: true, - get: function() { - return _id; - }, - set: function(value) { - _id = "" + value; - } - }, - - "pauseOnExit": { - enumerable: true, - get: function() { - return _pauseOnExit; - }, - set: function(value) { - _pauseOnExit = !!value; - } - }, - - "startTime": { - enumerable: true, - get: function() { - return _startTime; - }, - set: function(value) { - if (typeof value !== "number") { - throw new TypeError("Start time must be set to a number."); - } - _startTime = value; - this.hasBeenReset = true; - } - }, - - "endTime": { - enumerable: true, - get: function() { - return _endTime; - }, - set: function(value) { - if (typeof value !== "number") { - throw new TypeError("End time must be set to a number."); - } - _endTime = value; - this.hasBeenReset = true; - } - }, - - "text": { - enumerable: true, - get: function() { - return _text; - }, - set: function(value) { - _text = "" + value; - this.hasBeenReset = true; - } - }, - - "region": { - enumerable: true, - get: function() { - return _region; - }, - set: function(value) { - _region = value; - this.hasBeenReset = true; - } - }, - - "vertical": { - enumerable: true, - get: function() { - return _vertical; - }, - set: function(value) { - var setting = findDirectionSetting(value); - // Have to check for false because the setting an be an empty string. - if (setting === false) { - throw new SyntaxError("Vertical: an invalid or illegal direction string was specified."); - } - _vertical = setting; - this.hasBeenReset = true; - } - }, - - "snapToLines": { - enumerable: true, - get: function() { - return _snapToLines; - }, - set: function(value) { - _snapToLines = !!value; - this.hasBeenReset = true; - } - }, - - "line": { - enumerable: true, - get: function() { - return _line; - }, - set: function(value) { - if (typeof value !== "number" && value !== autoKeyword) { - throw new SyntaxError("Line: an invalid number or illegal string was specified."); - } - _line = value; - this.hasBeenReset = true; - } - }, - - "lineAlign": { - enumerable: true, - get: function() { - return _lineAlign; - }, - set: function(value) { - var setting = findAlignSetting(value); - if (!setting) { - console.warn("lineAlign: an invalid or illegal string was specified."); - } else { - _lineAlign = setting; - this.hasBeenReset = true; - } - } - }, - - "position": { - enumerable: true, - get: function() { - return _position; - }, - set: function(value) { - if (value < 0 || value > 100) { - throw new Error("Position must be between 0 and 100."); - } - _position = value; - this.hasBeenReset = true; - } - }, - - "positionAlign": { - enumerable: true, - get: function() { - return _positionAlign; - }, - set: function(value) { - var setting = findAlignSetting(value); - if (!setting) { - console.warn("positionAlign: an invalid or illegal string was specified."); - } else { - _positionAlign = setting; - this.hasBeenReset = true; - } - } - }, - - "size": { - enumerable: true, - get: function() { - return _size; - }, - set: function(value) { - if (value < 0 || value > 100) { - throw new Error("Size must be between 0 and 100."); - } - _size = value; - this.hasBeenReset = true; - } - }, - - "align": { - enumerable: true, - get: function() { - return _align; - }, - set: function(value) { - var setting = findAlignSetting(value); - if (!setting) { - throw new SyntaxError("align: an invalid or illegal alignment string was specified."); - } - _align = setting; - this.hasBeenReset = true; - } - } - }); - - /** - * Other spec defined properties - */ - - // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#text-track-cue-display-state - this.displayState = undefined; -} - -/** - * VTTCue methods - */ - -VTTCue.prototype.getCueAsHTML = function() { - // Assume WebVTT.convertCueToDOMTree is on the global. - return WebVTT.convertCueToDOMTree(window, this.text); -}; - -var vttcue = VTTCue; - -/** - * Copyright 2013 vtt.js Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -var scrollSetting = { - "": true, - "up": true -}; - -function findScrollSetting(value) { - if (typeof value !== "string") { - return false; - } - var scroll = scrollSetting[value.toLowerCase()]; - return scroll ? value.toLowerCase() : false; -} - -function isValidPercentValue(value) { - return typeof value === "number" && (value >= 0 && value <= 100); -} - -// VTTRegion shim http://dev.w3.org/html5/webvtt/#vttregion-interface -function VTTRegion() { - var _width = 100; - var _lines = 3; - var _regionAnchorX = 0; - var _regionAnchorY = 100; - var _viewportAnchorX = 0; - var _viewportAnchorY = 100; - var _scroll = ""; - - Object.defineProperties(this, { - "width": { - enumerable: true, - get: function() { - return _width; - }, - set: function(value) { - if (!isValidPercentValue(value)) { - throw new Error("Width must be between 0 and 100."); - } - _width = value; - } - }, - "lines": { - enumerable: true, - get: function() { - return _lines; - }, - set: function(value) { - if (typeof value !== "number") { - throw new TypeError("Lines must be set to a number."); - } - _lines = value; - } - }, - "regionAnchorY": { - enumerable: true, - get: function() { - return _regionAnchorY; - }, - set: function(value) { - if (!isValidPercentValue(value)) { - throw new Error("RegionAnchorX must be between 0 and 100."); - } - _regionAnchorY = value; - } - }, - "regionAnchorX": { - enumerable: true, - get: function() { - return _regionAnchorX; - }, - set: function(value) { - if(!isValidPercentValue(value)) { - throw new Error("RegionAnchorY must be between 0 and 100."); - } - _regionAnchorX = value; - } - }, - "viewportAnchorY": { - enumerable: true, - get: function() { - return _viewportAnchorY; - }, - set: function(value) { - if (!isValidPercentValue(value)) { - throw new Error("ViewportAnchorY must be between 0 and 100."); - } - _viewportAnchorY = value; - } - }, - "viewportAnchorX": { - enumerable: true, - get: function() { - return _viewportAnchorX; - }, - set: function(value) { - if (!isValidPercentValue(value)) { - throw new Error("ViewportAnchorX must be between 0 and 100."); - } - _viewportAnchorX = value; - } - }, - "scroll": { - enumerable: true, - get: function() { - return _scroll; - }, - set: function(value) { - var setting = findScrollSetting(value); - // Have to check for false as an empty string is a legal value. - if (setting === false) { - console.warn("Scroll: an invalid or illegal string was specified."); - } else { - _scroll = setting; - } - } - } - }); -} - -var vttregion = VTTRegion; - -var browserIndex = createCommonjsModule(function (module) { -/** - * Copyright 2013 vtt.js Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// Default exports for Node. Export the extended versions of VTTCue and -// VTTRegion in Node since we likely want the capability to convert back and -// forth between JSON. If we don't then it's not that big of a deal since we're -// off browser. - - - -var vttjs = module.exports = { - WebVTT: vtt, - VTTCue: vttcue, - VTTRegion: vttregion -}; - -window_1$1.vttjs = vttjs; -window_1$1.WebVTT = vttjs.WebVTT; - -var cueShim = vttjs.VTTCue; -var regionShim = vttjs.VTTRegion; -var nativeVTTCue = window_1$1.VTTCue; -var nativeVTTRegion = window_1$1.VTTRegion; - -vttjs.shim = function() { - window_1$1.VTTCue = cueShim; - window_1$1.VTTRegion = regionShim; -}; - -vttjs.restore = function() { - window_1$1.VTTCue = nativeVTTCue; - window_1$1.VTTRegion = nativeVTTRegion; -}; - -if (!window_1$1.VTTCue) { - vttjs.shim(); -} -}); - -var setPrototypeOf = createCommonjsModule(function (module) { -function _setPrototypeOf(o, p) { - module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - - return _setPrototypeOf(o, p); -} - -module.exports = _setPrototypeOf; -}); - -function _isNativeReflectConstruct() { - if (typeof Reflect === "undefined" || !Reflect.construct) return false; - if (Reflect.construct.sham) return false; - if (typeof Proxy === "function") return true; - - try { - Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); - return true; - } catch (e) { - return false; - } -} - -var isNativeReflectConstruct = _isNativeReflectConstruct; - -var construct = createCommonjsModule(function (module) { -function _construct(Parent, args, Class) { - if (isNativeReflectConstruct()) { - module.exports = _construct = Reflect.construct; - } else { - module.exports = _construct = function _construct(Parent, args, Class) { - var a = [null]; - a.push.apply(a, args); - var Constructor = Function.bind.apply(Parent, a); - var instance = new Constructor(); - if (Class) setPrototypeOf(instance, Class.prototype); - return instance; - }; - } - - return _construct.apply(null, arguments); -} - -module.exports = _construct; -}); - -function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - if (superClass) setPrototypeOf(subClass, superClass); -} - -var inherits = _inherits; - -var urlToolkit = createCommonjsModule(function (module, exports) { -// see https://tools.ietf.org/html/rfc1808 - -(function (root) { - var URL_REGEX = /^((?:[a-zA-Z0-9+\-.]+:)?)(\/\/[^\/?#]*)?((?:[^\/?#]*\/)*[^;?#]*)?(;[^?#]*)?(\?[^#]*)?(#.*)?$/; - var FIRST_SEGMENT_REGEX = /^([^\/?#]*)(.*)$/; - var SLASH_DOT_REGEX = /(?:\/|^)\.(?=\/)/g; - var SLASH_DOT_DOT_REGEX = /(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g; - - var URLToolkit = { - // If opts.alwaysNormalize is true then the path will always be normalized even when it starts with / or // - // E.g - // With opts.alwaysNormalize = false (default, spec compliant) - // http://a.com/b/cd + /e/f/../g => http://a.com/e/f/../g - // With opts.alwaysNormalize = true (not spec compliant) - // http://a.com/b/cd + /e/f/../g => http://a.com/e/g - buildAbsoluteURL: function (baseURL, relativeURL, opts) { - opts = opts || {}; - // remove any remaining space and CRLF - baseURL = baseURL.trim(); - relativeURL = relativeURL.trim(); - if (!relativeURL) { - // 2a) If the embedded URL is entirely empty, it inherits the - // entire base URL (i.e., is set equal to the base URL) - // and we are done. - if (!opts.alwaysNormalize) { - return baseURL; - } - var basePartsForNormalise = URLToolkit.parseURL(baseURL); - if (!basePartsForNormalise) { - throw new Error('Error trying to parse base URL.'); - } - basePartsForNormalise.path = URLToolkit.normalizePath( - basePartsForNormalise.path - ); - return URLToolkit.buildURLFromParts(basePartsForNormalise); - } - var relativeParts = URLToolkit.parseURL(relativeURL); - if (!relativeParts) { - throw new Error('Error trying to parse relative URL.'); - } - if (relativeParts.scheme) { - // 2b) If the embedded URL starts with a scheme name, it is - // interpreted as an absolute URL and we are done. - if (!opts.alwaysNormalize) { - return relativeURL; - } - relativeParts.path = URLToolkit.normalizePath(relativeParts.path); - return URLToolkit.buildURLFromParts(relativeParts); - } - var baseParts = URLToolkit.parseURL(baseURL); - if (!baseParts) { - throw new Error('Error trying to parse base URL.'); - } - if (!baseParts.netLoc && baseParts.path && baseParts.path[0] !== '/') { - // If netLoc missing and path doesn't start with '/', assume everthing before the first '/' is the netLoc - // This causes 'example.com/a' to be handled as '//example.com/a' instead of '/example.com/a' - var pathParts = FIRST_SEGMENT_REGEX.exec(baseParts.path); - baseParts.netLoc = pathParts[1]; - baseParts.path = pathParts[2]; - } - if (baseParts.netLoc && !baseParts.path) { - baseParts.path = '/'; - } - var builtParts = { - // 2c) Otherwise, the embedded URL inherits the scheme of - // the base URL. - scheme: baseParts.scheme, - netLoc: relativeParts.netLoc, - path: null, - params: relativeParts.params, - query: relativeParts.query, - fragment: relativeParts.fragment, - }; - if (!relativeParts.netLoc) { - // 3) If the embedded URL's is non-empty, we skip to - // Step 7. Otherwise, the embedded URL inherits the - // (if any) of the base URL. - builtParts.netLoc = baseParts.netLoc; - // 4) If the embedded URL path is preceded by a slash "/", the - // path is not relative and we skip to Step 7. - if (relativeParts.path[0] !== '/') { - if (!relativeParts.path) { - // 5) If the embedded URL path is empty (and not preceded by a - // slash), then the embedded URL inherits the base URL path - builtParts.path = baseParts.path; - // 5a) if the embedded URL's is non-empty, we skip to - // step 7; otherwise, it inherits the of the base - // URL (if any) and - if (!relativeParts.params) { - builtParts.params = baseParts.params; - // 5b) if the embedded URL's is non-empty, we skip to - // step 7; otherwise, it inherits the of the base - // URL (if any) and we skip to step 7. - if (!relativeParts.query) { - builtParts.query = baseParts.query; - } - } - } else { - // 6) The last segment of the base URL's path (anything - // following the rightmost slash "/", or the entire path if no - // slash is present) is removed and the embedded URL's path is - // appended in its place. - var baseURLPath = baseParts.path; - var newPath = - baseURLPath.substring(0, baseURLPath.lastIndexOf('/') + 1) + - relativeParts.path; - builtParts.path = URLToolkit.normalizePath(newPath); - } - } - } - if (builtParts.path === null) { - builtParts.path = opts.alwaysNormalize - ? URLToolkit.normalizePath(relativeParts.path) - : relativeParts.path; - } - return URLToolkit.buildURLFromParts(builtParts); - }, - parseURL: function (url) { - var parts = URL_REGEX.exec(url); - if (!parts) { - return null; - } - return { - scheme: parts[1] || '', - netLoc: parts[2] || '', - path: parts[3] || '', - params: parts[4] || '', - query: parts[5] || '', - fragment: parts[6] || '', - }; - }, - normalizePath: function (path) { - // The following operations are - // then applied, in order, to the new path: - // 6a) All occurrences of "./", where "." is a complete path - // segment, are removed. - // 6b) If the path ends with "." as a complete path segment, - // that "." is removed. - path = path.split('').reverse().join('').replace(SLASH_DOT_REGEX, ''); - // 6c) All occurrences of "/../", where is a - // complete path segment not equal to "..", are removed. - // Removal of these path segments is performed iteratively, - // removing the leftmost matching pattern on each iteration, - // until no matching pattern remains. - // 6d) If the path ends with "/..", where is a - // complete path segment not equal to "..", that - // "/.." is removed. - while ( - path.length !== (path = path.replace(SLASH_DOT_DOT_REGEX, '')).length - ) {} - return path.split('').reverse().join(''); - }, - buildURLFromParts: function (parts) { - return ( - parts.scheme + - parts.netLoc + - parts.path + - parts.params + - parts.query + - parts.fragment - ); - }, - }; - - module.exports = URLToolkit; -})(); -}); - -/*! @name m3u8-parser @version 4.4.0 @license Apache-2.0 */ - -function _extends() { - _extends = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - - return target; - }; - - return _extends.apply(this, arguments); -} - -function _inheritsLoose$1(subClass, superClass) { - subClass.prototype = Object.create(superClass.prototype); - subClass.prototype.constructor = subClass; - subClass.__proto__ = superClass; -} - -function _assertThisInitialized$1(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - - return self; -} - -/** - * @file stream.js - */ - -/** - * A lightweight readable stream implementation that handles event dispatching. - * - * @class Stream - */ -var Stream = -/*#__PURE__*/ -function () { - function Stream() { - this.listeners = {}; - } - /** - * Add a listener for a specified event type. - * - * @param {string} type the event name - * @param {Function} listener the callback to be invoked when an event of - * the specified type occurs - */ - - - var _proto = Stream.prototype; - - _proto.on = function on(type, listener) { - if (!this.listeners[type]) { - this.listeners[type] = []; - } - - this.listeners[type].push(listener); - } - /** - * Remove a listener for a specified event type. - * - * @param {string} type the event name - * @param {Function} listener a function previously registered for this - * type of event through `on` - * @return {boolean} if we could turn it off or not - */ - ; - - _proto.off = function off(type, listener) { - if (!this.listeners[type]) { - return false; - } - - var index = this.listeners[type].indexOf(listener); - this.listeners[type].splice(index, 1); - return index > -1; - } - /** - * Trigger an event of the specified type on this stream. Any additional - * arguments to this function are passed as parameters to event listeners. - * - * @param {string} type the event name - */ - ; - - _proto.trigger = function trigger(type) { - var callbacks = this.listeners[type]; - var i; - var length; - var args; - - if (!callbacks) { - return; - } // Slicing the arguments on every invocation of this method - // can add a significant amount of overhead. Avoid the - // intermediate object creation for the common case of a - // single callback argument - - - if (arguments.length === 2) { - length = callbacks.length; - - for (i = 0; i < length; ++i) { - callbacks[i].call(this, arguments[1]); - } - } else { - args = Array.prototype.slice.call(arguments, 1); - length = callbacks.length; - - for (i = 0; i < length; ++i) { - callbacks[i].apply(this, args); - } - } - } - /** - * Destroys the stream and cleans up. - */ - ; - - _proto.dispose = function dispose() { - this.listeners = {}; - } - /** - * Forwards all `data` events on this stream to the destination stream. The - * destination stream should provide a method `push` to receive the data - * events as they arrive. - * - * @param {Stream} destination the stream that will receive all `data` events - * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options - */ - ; - - _proto.pipe = function pipe(destination) { - this.on('data', function (data) { - destination.push(data); - }); - }; - - return Stream; -}(); - -/** - * A stream that buffers string input and generates a `data` event for each - * line. - * - * @class LineStream - * @extends Stream - */ - -var LineStream = -/*#__PURE__*/ -function (_Stream) { - _inheritsLoose$1(LineStream, _Stream); - - function LineStream() { - var _this; - - _this = _Stream.call(this) || this; - _this.buffer = ''; - return _this; - } - /** - * Add new data to be parsed. - * - * @param {string} data the text to process - */ - - - var _proto = LineStream.prototype; - - _proto.push = function push(data) { - var nextNewline; - this.buffer += data; - nextNewline = this.buffer.indexOf('\n'); - - for (; nextNewline > -1; nextNewline = this.buffer.indexOf('\n')) { - this.trigger('data', this.buffer.substring(0, nextNewline)); - this.buffer = this.buffer.substring(nextNewline + 1); - } - }; - - return LineStream; -}(Stream); - -/** - * "forgiving" attribute list psuedo-grammar: - * attributes -> keyvalue (',' keyvalue)* - * keyvalue -> key '=' value - * key -> [^=]* - * value -> '"' [^"]* '"' | [^,]* - */ - -var attributeSeparator = function attributeSeparator() { - var key = '[^=]*'; - var value = '"[^"]*"|[^,]*'; - var keyvalue = '(?:' + key + ')=(?:' + value + ')'; - return new RegExp('(?:^|,)(' + keyvalue + ')'); -}; -/** - * Parse attributes from a line given the separator - * - * @param {string} attributes the attribute line to parse - */ - - -var parseAttributes = function parseAttributes(attributes) { - // split the string using attributes as the separator - var attrs = attributes.split(attributeSeparator()); - var result = {}; - var i = attrs.length; - var attr; - - while (i--) { - // filter out unmatched portions of the string - if (attrs[i] === '') { - continue; - } // split the key and value - - - attr = /([^=]*)=(.*)/.exec(attrs[i]).slice(1); // trim whitespace and remove optional quotes around the value - - attr[0] = attr[0].replace(/^\s+|\s+$/g, ''); - attr[1] = attr[1].replace(/^\s+|\s+$/g, ''); - attr[1] = attr[1].replace(/^['"](.*)['"]$/g, '$1'); - result[attr[0]] = attr[1]; - } - - return result; -}; -/** - * A line-level M3U8 parser event stream. It expects to receive input one - * line at a time and performs a context-free parse of its contents. A stream - * interpretation of a manifest can be useful if the manifest is expected to - * be too large to fit comfortably into memory or the entirety of the input - * is not immediately available. Otherwise, it's probably much easier to work - * with a regular `Parser` object. - * - * Produces `data` events with an object that captures the parser's - * interpretation of the input. That object has a property `tag` that is one - * of `uri`, `comment`, or `tag`. URIs only have a single additional - * property, `line`, which captures the entirety of the input without - * interpretation. Comments similarly have a single additional property - * `text` which is the input without the leading `#`. - * - * Tags always have a property `tagType` which is the lower-cased version of - * the M3U8 directive without the `#EXT` or `#EXT-X-` prefix. For instance, - * `#EXT-X-MEDIA-SEQUENCE` becomes `media-sequence` when parsed. Unrecognized - * tags are given the tag type `unknown` and a single additional property - * `data` with the remainder of the input. - * - * @class ParseStream - * @extends Stream - */ - - -var ParseStream = -/*#__PURE__*/ -function (_Stream) { - _inheritsLoose$1(ParseStream, _Stream); - - function ParseStream() { - var _this; - - _this = _Stream.call(this) || this; - _this.customParsers = []; - _this.tagMappers = []; - return _this; - } - /** - * Parses an additional line of input. - * - * @param {string} line a single line of an M3U8 file to parse - */ - - - var _proto = ParseStream.prototype; - - _proto.push = function push(line) { - var _this2 = this; - - var match; - var event; // strip whitespace - - line = line.trim(); - - if (line.length === 0) { - // ignore empty lines - return; - } // URIs - - - if (line[0] !== '#') { - this.trigger('data', { - type: 'uri', - uri: line - }); - return; - } // map tags - - - var newLines = this.tagMappers.reduce(function (acc, mapper) { - var mappedLine = mapper(line); // skip if unchanged - - if (mappedLine === line) { - return acc; - } - - return acc.concat([mappedLine]); - }, [line]); - newLines.forEach(function (newLine) { - for (var i = 0; i < _this2.customParsers.length; i++) { - if (_this2.customParsers[i].call(_this2, newLine)) { - return; - } - } // Comments - - - if (newLine.indexOf('#EXT') !== 0) { - _this2.trigger('data', { - type: 'comment', - text: newLine.slice(1) - }); - - return; - } // strip off any carriage returns here so the regex matching - // doesn't have to account for them. - - - newLine = newLine.replace('\r', ''); // Tags - - match = /^#EXTM3U/.exec(newLine); - - if (match) { - _this2.trigger('data', { - type: 'tag', - tagType: 'm3u' - }); - - return; - } - - match = /^#EXTINF:?([0-9\.]*)?,?(.*)?$/.exec(newLine); - - if (match) { - event = { - type: 'tag', - tagType: 'inf' - }; - - if (match[1]) { - event.duration = parseFloat(match[1]); - } - - if (match[2]) { - event.title = match[2]; - } - - _this2.trigger('data', event); - - return; - } - - match = /^#EXT-X-TARGETDURATION:?([0-9.]*)?/.exec(newLine); - - if (match) { - event = { - type: 'tag', - tagType: 'targetduration' - }; - - if (match[1]) { - event.duration = parseInt(match[1], 10); - } - - _this2.trigger('data', event); - - return; - } - - match = /^#ZEN-TOTAL-DURATION:?([0-9.]*)?/.exec(newLine); - - if (match) { - event = { - type: 'tag', - tagType: 'totalduration' - }; - - if (match[1]) { - event.duration = parseInt(match[1], 10); - } - - _this2.trigger('data', event); - - return; - } - - match = /^#EXT-X-VERSION:?([0-9.]*)?/.exec(newLine); - - if (match) { - event = { - type: 'tag', - tagType: 'version' - }; - - if (match[1]) { - event.version = parseInt(match[1], 10); - } - - _this2.trigger('data', event); - - return; - } - - match = /^#EXT-X-MEDIA-SEQUENCE:?(\-?[0-9.]*)?/.exec(newLine); - - if (match) { - event = { - type: 'tag', - tagType: 'media-sequence' - }; - - if (match[1]) { - event.number = parseInt(match[1], 10); - } - - _this2.trigger('data', event); - - return; - } - - match = /^#EXT-X-DISCONTINUITY-SEQUENCE:?(\-?[0-9.]*)?/.exec(newLine); - - if (match) { - event = { - type: 'tag', - tagType: 'discontinuity-sequence' - }; - - if (match[1]) { - event.number = parseInt(match[1], 10); - } - - _this2.trigger('data', event); - - return; - } - - match = /^#EXT-X-PLAYLIST-TYPE:?(.*)?$/.exec(newLine); - - if (match) { - event = { - type: 'tag', - tagType: 'playlist-type' - }; - - if (match[1]) { - event.playlistType = match[1]; - } - - _this2.trigger('data', event); - - return; - } - - match = /^#EXT-X-BYTERANGE:?([0-9.]*)?@?([0-9.]*)?/.exec(newLine); - - if (match) { - event = { - type: 'tag', - tagType: 'byterange' - }; - - if (match[1]) { - event.length = parseInt(match[1], 10); - } - - if (match[2]) { - event.offset = parseInt(match[2], 10); - } - - _this2.trigger('data', event); - - return; - } - - match = /^#EXT-X-ALLOW-CACHE:?(YES|NO)?/.exec(newLine); - - if (match) { - event = { - type: 'tag', - tagType: 'allow-cache' - }; - - if (match[1]) { - event.allowed = !/NO/.test(match[1]); - } - - _this2.trigger('data', event); - - return; - } - - match = /^#EXT-X-MAP:?(.*)$/.exec(newLine); - - if (match) { - event = { - type: 'tag', - tagType: 'map' - }; - - if (match[1]) { - var attributes = parseAttributes(match[1]); - - if (attributes.URI) { - event.uri = attributes.URI; - } - - if (attributes.BYTERANGE) { - var _attributes$BYTERANGE = attributes.BYTERANGE.split('@'), - length = _attributes$BYTERANGE[0], - offset = _attributes$BYTERANGE[1]; - - event.byterange = {}; - - if (length) { - event.byterange.length = parseInt(length, 10); - } - - if (offset) { - event.byterange.offset = parseInt(offset, 10); - } - } - } - - _this2.trigger('data', event); - - return; - } - - match = /^#EXT-X-STREAM-INF:?(.*)$/.exec(newLine); - - if (match) { - event = { - type: 'tag', - tagType: 'stream-inf' - }; - - if (match[1]) { - event.attributes = parseAttributes(match[1]); - - if (event.attributes.RESOLUTION) { - var split = event.attributes.RESOLUTION.split('x'); - var resolution = {}; - - if (split[0]) { - resolution.width = parseInt(split[0], 10); - } - - if (split[1]) { - resolution.height = parseInt(split[1], 10); - } - - event.attributes.RESOLUTION = resolution; - } - - if (event.attributes.BANDWIDTH) { - event.attributes.BANDWIDTH = parseInt(event.attributes.BANDWIDTH, 10); - } - - if (event.attributes['PROGRAM-ID']) { - event.attributes['PROGRAM-ID'] = parseInt(event.attributes['PROGRAM-ID'], 10); - } - } - - _this2.trigger('data', event); - - return; - } - - match = /^#EXT-X-MEDIA:?(.*)$/.exec(newLine); - - if (match) { - event = { - type: 'tag', - tagType: 'media' - }; - - if (match[1]) { - event.attributes = parseAttributes(match[1]); - } - - _this2.trigger('data', event); - - return; - } - - match = /^#EXT-X-ENDLIST/.exec(newLine); - - if (match) { - _this2.trigger('data', { - type: 'tag', - tagType: 'endlist' - }); - - return; - } - - match = /^#EXT-X-DISCONTINUITY/.exec(newLine); - - if (match) { - _this2.trigger('data', { - type: 'tag', - tagType: 'discontinuity' - }); - - return; - } - - match = /^#EXT-X-PROGRAM-DATE-TIME:?(.*)$/.exec(newLine); - - if (match) { - event = { - type: 'tag', - tagType: 'program-date-time' - }; - - if (match[1]) { - event.dateTimeString = match[1]; - event.dateTimeObject = new Date(match[1]); - } - - _this2.trigger('data', event); - - return; - } - - match = /^#EXT-X-KEY:?(.*)$/.exec(newLine); - - if (match) { - event = { - type: 'tag', - tagType: 'key' - }; - - if (match[1]) { - event.attributes = parseAttributes(match[1]); // parse the IV string into a Uint32Array - - if (event.attributes.IV) { - if (event.attributes.IV.substring(0, 2).toLowerCase() === '0x') { - event.attributes.IV = event.attributes.IV.substring(2); - } - - event.attributes.IV = event.attributes.IV.match(/.{8}/g); - event.attributes.IV[0] = parseInt(event.attributes.IV[0], 16); - event.attributes.IV[1] = parseInt(event.attributes.IV[1], 16); - event.attributes.IV[2] = parseInt(event.attributes.IV[2], 16); - event.attributes.IV[3] = parseInt(event.attributes.IV[3], 16); - event.attributes.IV = new Uint32Array(event.attributes.IV); - } - } - - _this2.trigger('data', event); - - return; - } - - match = /^#EXT-X-START:?(.*)$/.exec(newLine); - - if (match) { - event = { - type: 'tag', - tagType: 'start' - }; - - if (match[1]) { - event.attributes = parseAttributes(match[1]); - event.attributes['TIME-OFFSET'] = parseFloat(event.attributes['TIME-OFFSET']); - event.attributes.PRECISE = /YES/.test(event.attributes.PRECISE); - } - - _this2.trigger('data', event); - - return; - } - - match = /^#EXT-X-CUE-OUT-CONT:?(.*)?$/.exec(newLine); - - if (match) { - event = { - type: 'tag', - tagType: 'cue-out-cont' - }; - - if (match[1]) { - event.data = match[1]; - } else { - event.data = ''; - } - - _this2.trigger('data', event); - - return; - } - - match = /^#EXT-X-CUE-OUT:?(.*)?$/.exec(newLine); - - if (match) { - event = { - type: 'tag', - tagType: 'cue-out' - }; - - if (match[1]) { - event.data = match[1]; - } else { - event.data = ''; - } - - _this2.trigger('data', event); - - return; - } - - match = /^#EXT-X-CUE-IN:?(.*)?$/.exec(newLine); - - if (match) { - event = { - type: 'tag', - tagType: 'cue-in' - }; - - if (match[1]) { - event.data = match[1]; - } else { - event.data = ''; - } - - _this2.trigger('data', event); - - return; - } // unknown tag type - - - _this2.trigger('data', { - type: 'tag', - data: newLine.slice(4) - }); - }); - } - /** - * Add a parser for custom headers - * - * @param {Object} options a map of options for the added parser - * @param {RegExp} options.expression a regular expression to match the custom header - * @param {string} options.customType the custom type to register to the output - * @param {Function} [options.dataParser] function to parse the line into an object - * @param {boolean} [options.segment] should tag data be attached to the segment object - */ - ; - - _proto.addParser = function addParser(_ref) { - var _this3 = this; - - var expression = _ref.expression, - customType = _ref.customType, - dataParser = _ref.dataParser, - segment = _ref.segment; - - if (typeof dataParser !== 'function') { - dataParser = function dataParser(line) { - return line; - }; - } - - this.customParsers.push(function (line) { - var match = expression.exec(line); - - if (match) { - _this3.trigger('data', { - type: 'custom', - data: dataParser(line), - customType: customType, - segment: segment - }); - - return true; - } - }); - } - /** - * Add a custom header mapper - * - * @param {Object} options - * @param {RegExp} options.expression a regular expression to match the custom header - * @param {Function} options.map function to translate tag into a different tag - */ - ; - - _proto.addTagMapper = function addTagMapper(_ref2) { - var expression = _ref2.expression, - map = _ref2.map; - - var mapFn = function mapFn(line) { - if (expression.test(line)) { - return map(line); - } - - return line; - }; - - this.tagMappers.push(mapFn); - }; - - return ParseStream; -}(Stream); - -function decodeB64ToUint8Array(b64Text) { - var decodedString = window_1$1.atob(b64Text || ''); - var array = new Uint8Array(decodedString.length); - - for (var i = 0; i < decodedString.length; i++) { - array[i] = decodedString.charCodeAt(i); - } - - return array; -} - -/** - * A parser for M3U8 files. The current interpretation of the input is - * exposed as a property `manifest` on parser objects. It's just two lines to - * create and parse a manifest once you have the contents available as a string: - * - * ```js - * var parser = new m3u8.Parser(); - * parser.push(xhr.responseText); - * ``` - * - * New input can later be applied to update the manifest object by calling - * `push` again. - * - * The parser attempts to create a usable manifest object even if the - * underlying input is somewhat nonsensical. It emits `info` and `warning` - * events during the parse if it encounters input that seems invalid or - * requires some property of the manifest object to be defaulted. - * - * @class Parser - * @extends Stream - */ - -var Parser = -/*#__PURE__*/ -function (_Stream) { - _inheritsLoose$1(Parser, _Stream); - - function Parser() { - var _this; - - _this = _Stream.call(this) || this; - _this.lineStream = new LineStream(); - _this.parseStream = new ParseStream(); - - _this.lineStream.pipe(_this.parseStream); - /* eslint-disable consistent-this */ - - - var self = _assertThisInitialized$1(_this); - /* eslint-enable consistent-this */ - - - var uris = []; - var currentUri = {}; // if specified, the active EXT-X-MAP definition - - var currentMap; // if specified, the active decryption key - - var _key; - - var noop = function noop() {}; - - var defaultMediaGroups = { - 'AUDIO': {}, - 'VIDEO': {}, - 'CLOSED-CAPTIONS': {}, - 'SUBTITLES': {} - }; // This is the Widevine UUID from DASH IF IOP. The same exact string is - // used in MPDs with Widevine encrypted streams. - - var widevineUuid = 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed'; // group segments into numbered timelines delineated by discontinuities - - var currentTimeline = 0; // the manifest is empty until the parse stream begins delivering data - - _this.manifest = { - allowCache: true, - discontinuityStarts: [], - segments: [] - }; // update the manifest with the m3u8 entry from the parse stream - - _this.parseStream.on('data', function (entry) { - var mediaGroup; - var rendition; - ({ - tag: function tag() { - // switch based on the tag type - (({ - 'allow-cache': function allowCache() { - this.manifest.allowCache = entry.allowed; - - if (!('allowed' in entry)) { - this.trigger('info', { - message: 'defaulting allowCache to YES' - }); - this.manifest.allowCache = true; - } - }, - byterange: function byterange() { - var byterange = {}; - - if ('length' in entry) { - currentUri.byterange = byterange; - byterange.length = entry.length; - - if (!('offset' in entry)) { - this.trigger('info', { - message: 'defaulting offset to zero' - }); - entry.offset = 0; - } - } - - if ('offset' in entry) { - currentUri.byterange = byterange; - byterange.offset = entry.offset; - } - }, - endlist: function endlist() { - this.manifest.endList = true; - }, - inf: function inf() { - if (!('mediaSequence' in this.manifest)) { - this.manifest.mediaSequence = 0; - this.trigger('info', { - message: 'defaulting media sequence to zero' - }); - } - - if (!('discontinuitySequence' in this.manifest)) { - this.manifest.discontinuitySequence = 0; - this.trigger('info', { - message: 'defaulting discontinuity sequence to zero' - }); - } - - if (entry.duration > 0) { - currentUri.duration = entry.duration; - } - - if (entry.duration === 0) { - currentUri.duration = 0.01; - this.trigger('info', { - message: 'updating zero segment duration to a small value' - }); - } - - this.manifest.segments = uris; - }, - key: function key() { - if (!entry.attributes) { - this.trigger('warn', { - message: 'ignoring key declaration without attribute list' - }); - return; - } // clear the active encryption key - - - if (entry.attributes.METHOD === 'NONE') { - _key = null; - return; - } - - if (!entry.attributes.URI) { - this.trigger('warn', { - message: 'ignoring key declaration without URI' - }); - return; - } // check if the content is encrypted for Widevine - // Widevine/HLS spec: https://storage.googleapis.com/wvdocs/Widevine_DRM_HLS.pdf - - - if (entry.attributes.KEYFORMAT === widevineUuid) { - var VALID_METHODS = ['SAMPLE-AES', 'SAMPLE-AES-CTR', 'SAMPLE-AES-CENC']; - - if (VALID_METHODS.indexOf(entry.attributes.METHOD) === -1) { - this.trigger('warn', { - message: 'invalid key method provided for Widevine' - }); - return; - } - - if (entry.attributes.METHOD === 'SAMPLE-AES-CENC') { - this.trigger('warn', { - message: 'SAMPLE-AES-CENC is deprecated, please use SAMPLE-AES-CTR instead' - }); - } - - if (entry.attributes.URI.substring(0, 23) !== 'data:text/plain;base64,') { - this.trigger('warn', { - message: 'invalid key URI provided for Widevine' - }); - return; - } - - if (!(entry.attributes.KEYID && entry.attributes.KEYID.substring(0, 2) === '0x')) { - this.trigger('warn', { - message: 'invalid key ID provided for Widevine' - }); - return; - } // if Widevine key attributes are valid, store them as `contentProtection` - // on the manifest to emulate Widevine tag structure in a DASH mpd - - - this.manifest.contentProtection = { - 'com.widevine.alpha': { - attributes: { - schemeIdUri: entry.attributes.KEYFORMAT, - // remove '0x' from the key id string - keyId: entry.attributes.KEYID.substring(2) - }, - // decode the base64-encoded PSSH box - pssh: decodeB64ToUint8Array(entry.attributes.URI.split(',')[1]) - } - }; - return; - } - - if (!entry.attributes.METHOD) { - this.trigger('warn', { - message: 'defaulting key method to AES-128' - }); - } // setup an encryption key for upcoming segments - - - _key = { - method: entry.attributes.METHOD || 'AES-128', - uri: entry.attributes.URI - }; - - if (typeof entry.attributes.IV !== 'undefined') { - _key.iv = entry.attributes.IV; - } - }, - 'media-sequence': function mediaSequence() { - if (!isFinite(entry.number)) { - this.trigger('warn', { - message: 'ignoring invalid media sequence: ' + entry.number - }); - return; - } - - this.manifest.mediaSequence = entry.number; - }, - 'discontinuity-sequence': function discontinuitySequence() { - if (!isFinite(entry.number)) { - this.trigger('warn', { - message: 'ignoring invalid discontinuity sequence: ' + entry.number - }); - return; - } - - this.manifest.discontinuitySequence = entry.number; - currentTimeline = entry.number; - }, - 'playlist-type': function playlistType() { - if (!/VOD|EVENT/.test(entry.playlistType)) { - this.trigger('warn', { - message: 'ignoring unknown playlist type: ' + entry.playlist - }); - return; - } - - this.manifest.playlistType = entry.playlistType; - }, - map: function map() { - currentMap = {}; - - if (entry.uri) { - currentMap.uri = entry.uri; - } - - if (entry.byterange) { - currentMap.byterange = entry.byterange; - } - }, - 'stream-inf': function streamInf() { - this.manifest.playlists = uris; - this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups; - - if (!entry.attributes) { - this.trigger('warn', { - message: 'ignoring empty stream-inf attributes' - }); - return; - } - - if (!currentUri.attributes) { - currentUri.attributes = {}; - } - - _extends(currentUri.attributes, entry.attributes); - }, - media: function media() { - this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups; - - if (!(entry.attributes && entry.attributes.TYPE && entry.attributes['GROUP-ID'] && entry.attributes.NAME)) { - this.trigger('warn', { - message: 'ignoring incomplete or missing media group' - }); - return; - } // find the media group, creating defaults as necessary - - - var mediaGroupType = this.manifest.mediaGroups[entry.attributes.TYPE]; - mediaGroupType[entry.attributes['GROUP-ID']] = mediaGroupType[entry.attributes['GROUP-ID']] || {}; - mediaGroup = mediaGroupType[entry.attributes['GROUP-ID']]; // collect the rendition metadata - - rendition = { - default: /yes/i.test(entry.attributes.DEFAULT) - }; - - if (rendition.default) { - rendition.autoselect = true; - } else { - rendition.autoselect = /yes/i.test(entry.attributes.AUTOSELECT); - } - - if (entry.attributes.LANGUAGE) { - rendition.language = entry.attributes.LANGUAGE; - } - - if (entry.attributes.URI) { - rendition.uri = entry.attributes.URI; - } - - if (entry.attributes['INSTREAM-ID']) { - rendition.instreamId = entry.attributes['INSTREAM-ID']; - } - - if (entry.attributes.CHARACTERISTICS) { - rendition.characteristics = entry.attributes.CHARACTERISTICS; - } - - if (entry.attributes.FORCED) { - rendition.forced = /yes/i.test(entry.attributes.FORCED); - } // insert the new rendition - - - mediaGroup[entry.attributes.NAME] = rendition; - }, - discontinuity: function discontinuity() { - currentTimeline += 1; - currentUri.discontinuity = true; - this.manifest.discontinuityStarts.push(uris.length); - }, - 'program-date-time': function programDateTime() { - if (typeof this.manifest.dateTimeString === 'undefined') { - // PROGRAM-DATE-TIME is a media-segment tag, but for backwards - // compatibility, we add the first occurence of the PROGRAM-DATE-TIME tag - // to the manifest object - // TODO: Consider removing this in future major version - this.manifest.dateTimeString = entry.dateTimeString; - this.manifest.dateTimeObject = entry.dateTimeObject; - } - - currentUri.dateTimeString = entry.dateTimeString; - currentUri.dateTimeObject = entry.dateTimeObject; - }, - targetduration: function targetduration() { - if (!isFinite(entry.duration) || entry.duration < 0) { - this.trigger('warn', { - message: 'ignoring invalid target duration: ' + entry.duration - }); - return; - } - - this.manifest.targetDuration = entry.duration; - }, - totalduration: function totalduration() { - if (!isFinite(entry.duration) || entry.duration < 0) { - this.trigger('warn', { - message: 'ignoring invalid total duration: ' + entry.duration - }); - return; - } - - this.manifest.totalDuration = entry.duration; - }, - start: function start() { - if (!entry.attributes || isNaN(entry.attributes['TIME-OFFSET'])) { - this.trigger('warn', { - message: 'ignoring start declaration without appropriate attribute list' - }); - return; - } - - this.manifest.start = { - timeOffset: entry.attributes['TIME-OFFSET'], - precise: entry.attributes.PRECISE - }; - }, - 'cue-out': function cueOut() { - currentUri.cueOut = entry.data; - }, - 'cue-out-cont': function cueOutCont() { - currentUri.cueOutCont = entry.data; - }, - 'cue-in': function cueIn() { - currentUri.cueIn = entry.data; - } - })[entry.tagType] || noop).call(self); - }, - uri: function uri() { - currentUri.uri = entry.uri; - uris.push(currentUri); // if no explicit duration was declared, use the target duration - - if (this.manifest.targetDuration && !('duration' in currentUri)) { - this.trigger('warn', { - message: 'defaulting segment duration to the target duration' - }); - currentUri.duration = this.manifest.targetDuration; - } // annotate with encryption information, if necessary - - - if (_key) { - currentUri.key = _key; - } - - currentUri.timeline = currentTimeline; // annotate with initialization segment information, if necessary - - if (currentMap) { - currentUri.map = currentMap; - } // prepare for the next URI - - - currentUri = {}; - }, - comment: function comment() {// comments are not important for playback - }, - custom: function custom() { - // if this is segment-level data attach the output to the segment - if (entry.segment) { - currentUri.custom = currentUri.custom || {}; - currentUri.custom[entry.customType] = entry.data; // if this is manifest-level data attach to the top level manifest object - } else { - this.manifest.custom = this.manifest.custom || {}; - this.manifest.custom[entry.customType] = entry.data; - } - } - })[entry.type].call(self); - }); - - return _this; - } - /** - * Parse the input string and update the manifest object. - * - * @param {string} chunk a potentially incomplete portion of the manifest - */ - - - var _proto = Parser.prototype; - - _proto.push = function push(chunk) { - this.lineStream.push(chunk); - } - /** - * Flush any remaining input. This can be handy if the last line of an M3U8 - * manifest did not contain a trailing newline but the file has been - * completely received. - */ - ; - - _proto.end = function end() { - // flush any buffered input - this.lineStream.push('\n'); - } - /** - * Add an additional parser for non-standard tags - * - * @param {Object} options a map of options for the added parser - * @param {RegExp} options.expression a regular expression to match the custom header - * @param {string} options.type the type to register to the output - * @param {Function} [options.dataParser] function to parse the line into an object - * @param {boolean} [options.segment] should tag data be attached to the segment object - */ - ; - - _proto.addParser = function addParser(options) { - this.parseStream.addParser(options); - } - /** - * Add a custom header mapper - * - * @param {Object} options - * @param {RegExp} options.expression a regular expression to match the custom header - * @param {Function} options.map function to translate tag into a different tag - */ - ; - - _proto.addTagMapper = function addTagMapper(options) { - this.parseStream.addTagMapper(options); - }; - - return Parser; -}(Stream); - -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } - -var URLToolkit = _interopDefault(urlToolkit); -var window$1 = _interopDefault(window_1$1); - -var resolveUrl = function resolveUrl(baseUrl, relativeUrl) { - // return early if we don't need to resolve - if (/^[a-z]+:/i.test(relativeUrl)) { - return relativeUrl; - } // if the base URL is relative then combine with the current location - - - if (!/\/\//i.test(baseUrl)) { - baseUrl = URLToolkit.buildAbsoluteURL(window$1.location && window$1.location.href || '', baseUrl); - } - - return URLToolkit.buildAbsoluteURL(baseUrl, relativeUrl); -}; - -var resolveUrl_1 = resolveUrl; - -function _interopDefault$1 (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } - -var window$2 = _interopDefault$1(window_1$1); - -var atob = function atob(s) { - return window$2.atob ? window$2.atob(s) : Buffer.from(s, 'base64').toString('binary'); -}; - -function decodeB64ToUint8Array$1(b64Text) { - var decodedString = atob(b64Text); - var array = new Uint8Array(decodedString.length); - - for (var i = 0; i < decodedString.length; i++) { - array[i] = decodedString.charCodeAt(i); - } - - return array; -} - -var decodeB64ToUint8Array_1 = decodeB64ToUint8Array$1; +import { c as createCommonjsModule, g as getDefaultExportFromCjs, d as document_1, w as window_1, a as core, b as commonjsGlobal } from '../../../common/core-02e93804.js'; //[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] //[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] @@ -4007,7 +12,7 @@ var tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\: //S_TAG, S_ATTR, S_EQ, S_ATTR_NOQUOT_VALUE //S_ATTR_SPACE, S_ATTR_END, S_TAG_SPACE, S_TAG_CLOSE var S_TAG = 0;//tag name offerring -var S_ATTR = 1;//attr name offerring +var S_ATTR = 1;//attr name offerring var S_ATTR_SPACE=2;//attr name end and space offer var S_EQ = 3;//=space? var S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only) @@ -4016,7 +21,7 @@ var S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer) var S_TAG_CLOSE = 7;//closed el function XMLReader(){ - + } XMLReader.prototype = { @@ -4046,7 +51,7 @@ function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){ function entityReplacer(a){ var k = a.slice(1,-1); if(k in entityMap){ - return entityMap[k]; + return entityMap[k]; }else if(k.charAt(0) === '#'){ return fixedFromCharCode(parseInt(k.substr(1).replace('x','0x'))) }else { @@ -4075,7 +80,7 @@ function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){ var lineEnd = 0; var linePattern = /.*(?:\r\n?|\n)|.*$/g; var locator = domBuilder.locator; - + var parseStack = [{currentNSMap:defaultNSMapCopy}]; var closeMap = {}; var start = 0; @@ -4085,9 +90,9 @@ function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){ if(tagStart<0){ if(!source.substr(start).match(/^\s*$/)){ var doc = domBuilder.doc; - var text = doc.createTextNode(source.substr(start)); - doc.appendChild(text); - domBuilder.currentElement = text; + var text = doc.createTextNode(source.substr(start)); + doc.appendChild(text); + domBuilder.currentElement = text; } return; } @@ -4100,15 +105,15 @@ function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){ var tagName = source.substring(tagStart+2,end); var config = parseStack.pop(); if(end<0){ - - tagName = source.substring(tagStart+2).replace(/[\s<].*/,''); - //console.error('#@@@@@@'+tagName) - errorHandler.error("end tag name: "+tagName+' is not complete:'+config.tagName); - end = tagStart+1+tagName.length; - }else if(tagName.match(/\s',start+9); domBuilder.startCDATA(); domBuilder.characters(source,start+9,end-start-9); - domBuilder.endCDATA(); + domBuilder.endCDATA(); return end+3; } //1 && /!doctype/i.test(matchs[0][0])){ @@ -4534,7 +539,7 @@ function parseDCC(source,start,domBuilder,errorHandler){//sure start with '0; + return this.attributes.length>0; }, lookupPrefix:function(namespaceURI){ - var el = this; - while(el){ - var map = el._nsMap; - //console.dir(map) - if(map){ - for(var n in map){ - if(map[n] == namespaceURI){ - return n; - } - } - } - el = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode; - } - return null; + var el = this; + while(el){ + var map = el._nsMap; + //console.dir(map) + if(map){ + for(var n in map){ + if(map[n] == namespaceURI){ + return n; + } + } + } + el = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode; + } + return null; }, // Introduced in DOM Level 3: lookupNamespaceURI:function(prefix){ - var el = this; - while(el){ - var map = el._nsMap; - //console.dir(map) - if(map){ - if(prefix in map){ - return map[prefix] ; - } - } - el = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode; - } - return null; + var el = this; + while(el){ + var map = el._nsMap; + //console.dir(map) + if(map){ + if(prefix in map){ + return map[prefix] ; + } + } + el = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode; + } + return null; }, // Introduced in DOM Level 3: isDefaultNamespace:function(namespaceURI){ - var prefix = this.lookupPrefix(namespaceURI); - return prefix == null; + var prefix = this.lookupPrefix(namespaceURI); + return prefix == null; } }; @@ -5106,7 +1111,7 @@ function _onUpdateChild(doc,el,newChild){ /** * attributes; * children; - * + * * writeable properties: * nodeValue,Attr:value,CharacterData:data * prefix @@ -5148,8 +1153,8 @@ function _insertBefore(parentNode,newChild,nextChild){ newFirst.previousSibling = pre; newLast.nextSibling = nextChild; - - + + if(pre){ pre.nextSibling = newFirst; }else { @@ -5198,8 +1203,8 @@ Document.prototype = { doctype : null, documentElement : null, _inc : 1, - - insertBefore : function(newChild, refChild){//raises + + insertBefore : function(newChild, refChild){//raises if(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){ var child = newChild.firstChild; while(child){ @@ -5212,7 +1217,7 @@ Document.prototype = { if(this.documentElement == null && newChild.nodeType == ELEMENT_NODE){ this.documentElement = newChild; } - + return _insertBefore(this,newChild,refChild),(newChild.ownerDocument = this),newChild; }, removeChild : function(oldChild){ @@ -5238,7 +1243,7 @@ Document.prototype = { }); return rtv; }, - + //document factory method: createElement : function(tagName){ var node = new Element(); @@ -5335,7 +1340,7 @@ Document.prototype = { return node; } }; -_extends$1(Document,Node); +_extends(Document,Node); function Element() { @@ -5361,7 +1366,7 @@ function Element() { var attr = this.getAttributeNode(name); attr && this.removeAttributeNode(attr); }, - + //four real opeartion method appendChild:function(newChild){ if(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){ @@ -5385,7 +1390,7 @@ function Element() { var old = this.getAttributeNodeNS(namespaceURI, localName); old && this.removeAttributeNode(old); }, - + hasAttributeNS : function(namespaceURI, localName){ return this.getAttributeNodeNS(namespaceURI, localName)!=null; }, @@ -5401,7 +1406,7 @@ function Element() { getAttributeNodeNS : function(namespaceURI, localName){ return this.attributes.getNamedItemNS(namespaceURI, localName); }, - + getElementsByTagName : function(tagName){ return new LiveNodeList(this,function(base){ var ls = []; @@ -5422,7 +1427,7 @@ function Element() { } }); return ls; - + }); } }; @@ -5430,10 +1435,10 @@ Document.prototype.getElementsByTagName = Element.prototype.getElementsByTagName Document.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS; -_extends$1(Element,Node); +_extends(Element,Node); function Attr() { }Attr.prototype.nodeType = ATTRIBUTE_NODE; -_extends$1(Attr,Node); +_extends(Attr,Node); function CharacterData() { @@ -5449,7 +1454,7 @@ function CharacterData() { }, insertData: function(offset,text) { this.replaceData(offset,0,text); - + }, appendChild:function(newChild){ throw new Error(ExceptionMessage[HIERARCHY_REQUEST_ERR]) @@ -5465,7 +1470,7 @@ function CharacterData() { this.length = text.length; } }; -_extends$1(CharacterData,Node); +_extends(CharacterData,Node); function Text() { }Text.prototype = { nodeName : "#text", @@ -5483,48 +1488,48 @@ function Text() { return newNode; } }; -_extends$1(Text,CharacterData); +_extends(Text,CharacterData); function Comment() { }Comment.prototype = { nodeName : "#comment", nodeType : COMMENT_NODE }; -_extends$1(Comment,CharacterData); +_extends(Comment,CharacterData); function CDATASection() { }CDATASection.prototype = { nodeName : "#cdata-section", nodeType : CDATA_SECTION_NODE }; -_extends$1(CDATASection,CharacterData); +_extends(CDATASection,CharacterData); function DocumentType() { }DocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE; -_extends$1(DocumentType,Node); +_extends(DocumentType,Node); function Notation() { }Notation.prototype.nodeType = NOTATION_NODE; -_extends$1(Notation,Node); +_extends(Notation,Node); function Entity() { }Entity.prototype.nodeType = ENTITY_NODE; -_extends$1(Entity,Node); +_extends(Entity,Node); function EntityReference() { }EntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE; -_extends$1(EntityReference,Node); +_extends(EntityReference,Node); function DocumentFragment() { }DocumentFragment.prototype.nodeName = "#document-fragment"; DocumentFragment.prototype.nodeType = DOCUMENT_FRAGMENT_NODE; -_extends$1(DocumentFragment,Node); +_extends(DocumentFragment,Node); function ProcessingInstruction() { } ProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE; -_extends$1(ProcessingInstruction,Node); +_extends(ProcessingInstruction,Node); function XMLSerializer(){} XMLSerializer.prototype.serializeToString = function(node,isHtml,nodeFilter){ return nodeSerializeToString.call(node,isHtml,nodeFilter); @@ -5557,12 +1562,12 @@ function needNamespaceDefine(node,isHTML, visibleNamespaces) { if (!prefix && !uri){ return false; } - if (prefix === "xml" && uri === "http://www.w3.org/XML/1998/namespace" + if (prefix === "xml" && uri === "http://www.w3.org/XML/1998/namespace" || uri == 'http://www.w3.org/2000/xmlns/'){ return false; } - - var i = visibleNamespaces.length; + + var i = visibleNamespaces.length; //console.log('@@@@',node.tagName,prefix,uri,visibleNamespaces) while (i--) { var ns = visibleNamespaces[i]; @@ -5601,12 +1606,12 @@ function serializeToString(node,buf,isHTML,nodeFilter,visibleNamespaces){ var len = attrs.length; var child = node.firstChild; var nodeName = node.tagName; - - isHTML = (htmlns === node.namespaceURI) ||isHTML; + + isHTML = (htmlns === node.namespaceURI) ||isHTML; buf.push('<',nodeName); - - - + + + for(var i=0;i'); //if is cdata child node @@ -5827,7 +1832,7 @@ try{ } } }); - + function getTextContent(node){ switch(node.nodeType){ case ELEMENT_NODE: @@ -5866,7 +1871,7 @@ var dom = { var domParser = createCommonjsModule(function (module, exports) { function DOMParser(options){ this.options = options ||{locator:{}}; - + } DOMParser.prototype.parseFromString = function(source,mimeType){ var options = this.options; @@ -5879,7 +1884,7 @@ DOMParser.prototype.parseFromString = function(source,mimeType){ if(locator){ domBuilder.setDocumentLocator(locator); } - + sax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator); sax.domBuilder = options.domBuilder || domBuilder; if(/\/x?html?$/.test(mimeType)){ @@ -5924,8 +1929,8 @@ function buildErrorHandler(errorImpl,domBuilder,locator){ /** * +ContentHandler+ErrorHandler * +LexicalHandler+EntityResolver2 - * -DeclHandler-DTDHandler - * + * -DeclHandler-DTDHandler + * * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2 * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html @@ -5940,13 +1945,13 @@ function position(locator,node){ /** * @see org.xml.sax.ContentHandler#startDocument * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html - */ + */ DOMHandler.prototype = { startDocument : function() { - this.doc = new DOMImplementation().createDocument(null, null, null); - if (this.locator) { - this.doc.documentURI = this.locator.systemId; - } + this.doc = new DOMImplementation().createDocument(null, null, null); + if (this.locator) { + this.doc.documentURI = this.locator.systemId; + } }, startElement:function(namespaceURI, localName, qName, attrs) { var doc = this.doc; @@ -5954,7 +1959,7 @@ DOMHandler.prototype = { var len = attrs.length; appendElement(this, el); this.currentElement = el; - + this.locator && position(this.locator,el); for (var i = 0 ; i < len; i++) { var namespaceURI = attrs.getURI(i); @@ -6007,7 +2012,7 @@ DOMHandler.prototype = { }, setDocumentLocator:function (locator) { if(this.locator = locator){// && !('lineNumber' in locator)){ - locator.lineNumber = 0; + locator.lineNumber = 0; } }, //LexicalHandler @@ -6017,7 +2022,7 @@ DOMHandler.prototype = { this.locator && position(this.locator,comm); appendElement(this, comm); }, - + startCDATA:function() { //used in characters() methods this.cdata = true; @@ -6025,7 +2030,7 @@ DOMHandler.prototype = { endCDATA:function() { this.cdata = false; }, - + startDTD:function(name, publicId, systemId) { var impl = this.doc.implementation; if (impl && impl.createDocumentType) { @@ -6117,51995 +2122,9 @@ function appendElement (hander,node) { //} }); -/*! @name mpd-parser @version 0.10.0 @license Apache-2.0 */ - -var isObject = function isObject(obj) { - return !!obj && typeof obj === 'object'; -}; - -var merge = function merge() { - for (var _len = arguments.length, objects = new Array(_len), _key = 0; _key < _len; _key++) { - objects[_key] = arguments[_key]; - } - - return objects.reduce(function (result, source) { - Object.keys(source).forEach(function (key) { - if (Array.isArray(result[key]) && Array.isArray(source[key])) { - result[key] = result[key].concat(source[key]); - } else if (isObject(result[key]) && isObject(source[key])) { - result[key] = merge(result[key], source[key]); - } else { - result[key] = source[key]; - } - }); - return result; - }, {}); -}; -var values = function values(o) { - return Object.keys(o).map(function (k) { - return o[k]; - }); -}; - -var range = function range(start, end) { - var result = []; - - for (var i = start; i < end; i++) { - result.push(i); - } - - return result; -}; -var flatten = function flatten(lists) { - return lists.reduce(function (x, y) { - return x.concat(y); - }, []); -}; -var from = function from(list) { - if (!list.length) { - return []; - } - - var result = []; - - for (var i = 0; i < list.length; i++) { - result.push(list[i]); - } - - return result; -}; -var findIndexes = function findIndexes(l, key) { - return l.reduce(function (a, e, i) { - if (e[key]) { - a.push(i); - } - - return a; - }, []); -}; - -var errors = { - INVALID_NUMBER_OF_PERIOD: 'INVALID_NUMBER_OF_PERIOD', - DASH_EMPTY_MANIFEST: 'DASH_EMPTY_MANIFEST', - DASH_INVALID_XML: 'DASH_INVALID_XML', - NO_BASE_URL: 'NO_BASE_URL', - MISSING_SEGMENT_INFORMATION: 'MISSING_SEGMENT_INFORMATION', - SEGMENT_TIME_UNSPECIFIED: 'SEGMENT_TIME_UNSPECIFIED', - UNSUPPORTED_UTC_TIMING_SCHEME: 'UNSUPPORTED_UTC_TIMING_SCHEME' -}; - -/** - * @typedef {Object} SingleUri - * @property {string} uri - relative location of segment - * @property {string} resolvedUri - resolved location of segment - * @property {Object} byterange - Object containing information on how to make byte range - * requests following byte-range-spec per RFC2616. - * @property {String} byterange.length - length of range request - * @property {String} byterange.offset - byte offset of range request - * - * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.1 - */ - -/** - * Converts a URLType node (5.3.9.2.3 Table 13) to a segment object - * that conforms to how m3u8-parser is structured - * - * @see https://github.com/videojs/m3u8-parser - * - * @param {string} baseUrl - baseUrl provided by nodes - * @param {string} source - source url for segment - * @param {string} range - optional range used for range calls, - * follows RFC 2616, Clause 14.35.1 - * @return {SingleUri} full segment information transformed into a format similar - * to m3u8-parser - */ - -var urlTypeToSegment = function urlTypeToSegment(_ref) { - var _ref$baseUrl = _ref.baseUrl, - baseUrl = _ref$baseUrl === void 0 ? '' : _ref$baseUrl, - _ref$source = _ref.source, - source = _ref$source === void 0 ? '' : _ref$source, - _ref$range = _ref.range, - range = _ref$range === void 0 ? '' : _ref$range, - _ref$indexRange = _ref.indexRange, - indexRange = _ref$indexRange === void 0 ? '' : _ref$indexRange; - var segment = { - uri: source, - resolvedUri: resolveUrl_1(baseUrl || '', source) - }; - - if (range || indexRange) { - var rangeStr = range ? range : indexRange; - var ranges = rangeStr.split('-'); - var startRange = parseInt(ranges[0], 10); - var endRange = parseInt(ranges[1], 10); // byterange should be inclusive according to - // RFC 2616, Clause 14.35.1 - - segment.byterange = { - length: endRange - startRange + 1, - offset: startRange - }; - } - - return segment; -}; -var byteRangeToString = function byteRangeToString(byterange) { - // `endRange` is one less than `offset + length` because the HTTP range - // header uses inclusive ranges - var endRange = byterange.offset + byterange.length - 1; - return byterange.offset + "-" + endRange; -}; - -/** - * Functions for calculating the range of available segments in static and dynamic - * manifests. - */ - -var segmentRange = { - /** - * Returns the entire range of available segments for a static MPD - * - * @param {Object} attributes - * Inheritied MPD attributes - * @return {{ start: number, end: number }} - * The start and end numbers for available segments - */ - static: function _static(attributes) { - var duration = attributes.duration, - _attributes$timescale = attributes.timescale, - timescale = _attributes$timescale === void 0 ? 1 : _attributes$timescale, - sourceDuration = attributes.sourceDuration; - return { - start: 0, - end: Math.ceil(sourceDuration / (duration / timescale)) - }; - }, - - /** - * Returns the current live window range of available segments for a dynamic MPD - * - * @param {Object} attributes - * Inheritied MPD attributes - * @return {{ start: number, end: number }} - * The start and end numbers for available segments - */ - dynamic: function dynamic(attributes) { - var NOW = attributes.NOW, - clientOffset = attributes.clientOffset, - availabilityStartTime = attributes.availabilityStartTime, - _attributes$timescale2 = attributes.timescale, - timescale = _attributes$timescale2 === void 0 ? 1 : _attributes$timescale2, - duration = attributes.duration, - _attributes$start = attributes.start, - start = _attributes$start === void 0 ? 0 : _attributes$start, - _attributes$minimumUp = attributes.minimumUpdatePeriod, - minimumUpdatePeriod = _attributes$minimumUp === void 0 ? 0 : _attributes$minimumUp, - _attributes$timeShift = attributes.timeShiftBufferDepth, - timeShiftBufferDepth = _attributes$timeShift === void 0 ? Infinity : _attributes$timeShift; - var now = (NOW + clientOffset) / 1000; - var periodStartWC = availabilityStartTime + start; - var periodEndWC = now + minimumUpdatePeriod; - var periodDuration = periodEndWC - periodStartWC; - var segmentCount = Math.ceil(periodDuration * timescale / duration); - var availableStart = Math.floor((now - periodStartWC - timeShiftBufferDepth) * timescale / duration); - var availableEnd = Math.floor((now - periodStartWC) * timescale / duration); - return { - start: Math.max(0, availableStart), - end: Math.min(segmentCount, availableEnd) - }; - } -}; -/** - * Maps a range of numbers to objects with information needed to build the corresponding - * segment list - * - * @name toSegmentsCallback - * @function - * @param {number} number - * Number of the segment - * @param {number} index - * Index of the number in the range list - * @return {{ number: Number, duration: Number, timeline: Number, time: Number }} - * Object with segment timing and duration info - */ - -/** - * Returns a callback for Array.prototype.map for mapping a range of numbers to - * information needed to build the segment list. - * - * @param {Object} attributes - * Inherited MPD attributes - * @return {toSegmentsCallback} - * Callback map function - */ - -var toSegments = function toSegments(attributes) { - return function (number, index) { - var duration = attributes.duration, - _attributes$timescale3 = attributes.timescale, - timescale = _attributes$timescale3 === void 0 ? 1 : _attributes$timescale3, - periodIndex = attributes.periodIndex, - _attributes$startNumb = attributes.startNumber, - startNumber = _attributes$startNumb === void 0 ? 1 : _attributes$startNumb; - return { - number: startNumber + number, - duration: duration / timescale, - timeline: periodIndex, - time: index * duration - }; - }; -}; -/** - * Returns a list of objects containing segment timing and duration info used for - * building the list of segments. This uses the @duration attribute specified - * in the MPD manifest to derive the range of segments. - * - * @param {Object} attributes - * Inherited MPD attributes - * @return {{number: number, duration: number, time: number, timeline: number}[]} - * List of Objects with segment timing and duration info - */ - -var parseByDuration = function parseByDuration(attributes) { - var _attributes$type = attributes.type, - type = _attributes$type === void 0 ? 'static' : _attributes$type, - duration = attributes.duration, - _attributes$timescale4 = attributes.timescale, - timescale = _attributes$timescale4 === void 0 ? 1 : _attributes$timescale4, - sourceDuration = attributes.sourceDuration; - - var _segmentRange$type = segmentRange[type](attributes), - start = _segmentRange$type.start, - end = _segmentRange$type.end; - - var segments = range(start, end).map(toSegments(attributes)); - - if (type === 'static') { - var index = segments.length - 1; // final segment may be less than full segment duration - - segments[index].duration = sourceDuration - duration / timescale * index; - } - - return segments; -}; - -/** - * Translates SegmentBase into a set of segments. - * (DASH SPEC Section 5.3.9.3.2) contains a set of nodes. Each - * node should be translated into segment. - * - * @param {Object} attributes - * Object containing all inherited attributes from parent elements with attribute - * names as keys - * @return {Object.} list of segments - */ - -var segmentsFromBase = function segmentsFromBase(attributes) { - var baseUrl = attributes.baseUrl, - _attributes$initializ = attributes.initialization, - initialization = _attributes$initializ === void 0 ? {} : _attributes$initializ, - sourceDuration = attributes.sourceDuration, - _attributes$timescale = attributes.timescale, - timescale = _attributes$timescale === void 0 ? 1 : _attributes$timescale, - _attributes$indexRang = attributes.indexRange, - indexRange = _attributes$indexRang === void 0 ? '' : _attributes$indexRang, - duration = attributes.duration; // base url is required for SegmentBase to work, per spec (Section 5.3.9.2.1) - - if (!baseUrl) { - throw new Error(errors.NO_BASE_URL); - } - - var initSegment = urlTypeToSegment({ - baseUrl: baseUrl, - source: initialization.sourceURL, - range: initialization.range - }); - var segment = urlTypeToSegment({ - baseUrl: baseUrl, - source: baseUrl, - indexRange: indexRange - }); - segment.map = initSegment; // If there is a duration, use it, otherwise use the given duration of the source - // (since SegmentBase is only for one total segment) - - if (duration) { - var segmentTimeInfo = parseByDuration(attributes); - - if (segmentTimeInfo.length) { - segment.duration = segmentTimeInfo[0].duration; - segment.timeline = segmentTimeInfo[0].timeline; - } - } else if (sourceDuration) { - segment.duration = sourceDuration / timescale; - segment.timeline = 0; - } // This is used for mediaSequence - - - segment.number = 0; - return [segment]; -}; -/** - * Given a playlist, a sidx box, and a baseUrl, update the segment list of the playlist - * according to the sidx information given. - * - * playlist.sidx has metadadata about the sidx where-as the sidx param - * is the parsed sidx box itself. - * - * @param {Object} playlist the playlist to update the sidx information for - * @param {Object} sidx the parsed sidx box - * @return {Object} the playlist object with the updated sidx information - */ - -var addSegmentsToPlaylist = function addSegmentsToPlaylist(playlist, sidx, baseUrl) { - // Retain init segment information - var initSegment = playlist.sidx.map ? playlist.sidx.map : null; // Retain source duration from initial master manifest parsing - - var sourceDuration = playlist.sidx.duration; // Retain source timeline - - var timeline = playlist.timeline || 0; - var sidxByteRange = playlist.sidx.byterange; - var sidxEnd = sidxByteRange.offset + sidxByteRange.length; // Retain timescale of the parsed sidx - - var timescale = sidx.timescale; // referenceType 1 refers to other sidx boxes - - var mediaReferences = sidx.references.filter(function (r) { - return r.referenceType !== 1; - }); - var segments = []; // firstOffset is the offset from the end of the sidx box - - var startIndex = sidxEnd + sidx.firstOffset; - - for (var i = 0; i < mediaReferences.length; i++) { - var reference = sidx.references[i]; // size of the referenced (sub)segment - - var size = reference.referencedSize; // duration of the referenced (sub)segment, in the timescale - // this will be converted to seconds when generating segments - - var duration = reference.subsegmentDuration; // should be an inclusive range - - var endIndex = startIndex + size - 1; - var indexRange = startIndex + "-" + endIndex; - var attributes = { - baseUrl: baseUrl, - timescale: timescale, - timeline: timeline, - // this is used in parseByDuration - periodIndex: timeline, - duration: duration, - sourceDuration: sourceDuration, - indexRange: indexRange - }; - var segment = segmentsFromBase(attributes)[0]; - - if (initSegment) { - segment.map = initSegment; - } - - segments.push(segment); - startIndex += size; - } - - playlist.segments = segments; - return playlist; -}; - -var mergeDiscontiguousPlaylists = function mergeDiscontiguousPlaylists(playlists) { - var mergedPlaylists = values(playlists.reduce(function (acc, playlist) { - // assuming playlist IDs are the same across periods - // TODO: handle multiperiod where representation sets are not the same - // across periods - var name = playlist.attributes.id + (playlist.attributes.lang || ''); // Periods after first - - if (acc[name]) { - var _acc$name$segments; - - // first segment of subsequent periods signal a discontinuity - if (playlist.segments[0]) { - playlist.segments[0].discontinuity = true; - } - - (_acc$name$segments = acc[name].segments).push.apply(_acc$name$segments, playlist.segments); // bubble up contentProtection, this assumes all DRM content - // has the same contentProtection - - - if (playlist.attributes.contentProtection) { - acc[name].attributes.contentProtection = playlist.attributes.contentProtection; - } - } else { - // first Period - acc[name] = playlist; - } - - return acc; - }, {})); - return mergedPlaylists.map(function (playlist) { - playlist.discontinuityStarts = findIndexes(playlist.segments, 'discontinuity'); - return playlist; - }); -}; - -var addSegmentInfoFromSidx = function addSegmentInfoFromSidx(playlists, sidxMapping) { - if (sidxMapping === void 0) { - sidxMapping = {}; - } - - if (!Object.keys(sidxMapping).length) { - return playlists; - } - - for (var i in playlists) { - var playlist = playlists[i]; - - if (!playlist.sidx) { - continue; - } - - var sidxKey = playlist.sidx.uri + '-' + byteRangeToString(playlist.sidx.byterange); - var sidxMatch = sidxMapping[sidxKey] && sidxMapping[sidxKey].sidx; - - if (playlist.sidx && sidxMatch) { - addSegmentsToPlaylist(playlist, sidxMatch, playlist.sidx.resolvedUri); - } - } - - return playlists; -}; - -var formatAudioPlaylist = function formatAudioPlaylist(_ref) { - var _attributes; - - var attributes = _ref.attributes, - segments = _ref.segments, - sidx = _ref.sidx; - var playlist = { - attributes: (_attributes = { - NAME: attributes.id, - BANDWIDTH: attributes.bandwidth, - CODECS: attributes.codecs - }, _attributes['PROGRAM-ID'] = 1, _attributes), - uri: '', - endList: (attributes.type || 'static') === 'static', - timeline: attributes.periodIndex, - resolvedUri: '', - targetDuration: attributes.duration, - segments: segments, - mediaSequence: segments.length ? segments[0].number : 1 - }; - - if (attributes.contentProtection) { - playlist.contentProtection = attributes.contentProtection; - } - - if (sidx) { - playlist.sidx = sidx; - } - - return playlist; -}; -var formatVttPlaylist = function formatVttPlaylist(_ref2) { - var _attributes2; - - var attributes = _ref2.attributes, - segments = _ref2.segments; - - if (typeof segments === 'undefined') { - // vtt tracks may use single file in BaseURL - segments = [{ - uri: attributes.baseUrl, - timeline: attributes.periodIndex, - resolvedUri: attributes.baseUrl || '', - duration: attributes.sourceDuration, - number: 0 - }]; // targetDuration should be the same duration as the only segment - - attributes.duration = attributes.sourceDuration; - } - - return { - attributes: (_attributes2 = { - NAME: attributes.id, - BANDWIDTH: attributes.bandwidth - }, _attributes2['PROGRAM-ID'] = 1, _attributes2), - uri: '', - endList: (attributes.type || 'static') === 'static', - timeline: attributes.periodIndex, - resolvedUri: attributes.baseUrl || '', - targetDuration: attributes.duration, - segments: segments, - mediaSequence: segments.length ? segments[0].number : 1 - }; -}; -var organizeAudioPlaylists = function organizeAudioPlaylists(playlists, sidxMapping) { - if (sidxMapping === void 0) { - sidxMapping = {}; - } - - var mainPlaylist; - var formattedPlaylists = playlists.reduce(function (a, playlist) { - var role = playlist.attributes.role && playlist.attributes.role.value || ''; - var language = playlist.attributes.lang || ''; - var label = 'main'; - - if (language) { - var roleLabel = role ? " (" + role + ")" : ''; - label = "" + playlist.attributes.lang + roleLabel; - } // skip if we already have the highest quality audio for a language - - - if (a[label] && a[label].playlists[0].attributes.BANDWIDTH > playlist.attributes.bandwidth) { - return a; - } - - a[label] = { - language: language, - autoselect: true, - default: role === 'main', - playlists: addSegmentInfoFromSidx([formatAudioPlaylist(playlist)], sidxMapping), - uri: '' - }; - - if (typeof mainPlaylist === 'undefined' && role === 'main') { - mainPlaylist = playlist; - mainPlaylist.default = true; - } - - return a; - }, {}); // if no playlists have role "main", mark the first as main - - if (!mainPlaylist) { - var firstLabel = Object.keys(formattedPlaylists)[0]; - formattedPlaylists[firstLabel].default = true; - } - - return formattedPlaylists; -}; -var organizeVttPlaylists = function organizeVttPlaylists(playlists, sidxMapping) { - if (sidxMapping === void 0) { - sidxMapping = {}; - } - - return playlists.reduce(function (a, playlist) { - var label = playlist.attributes.lang || 'text'; // skip if we already have subtitles - - if (a[label]) { - return a; - } - - a[label] = { - language: label, - default: false, - autoselect: false, - playlists: addSegmentInfoFromSidx([formatVttPlaylist(playlist)], sidxMapping), - uri: '' - }; - return a; - }, {}); -}; -var formatVideoPlaylist = function formatVideoPlaylist(_ref3) { - var _attributes3; - - var attributes = _ref3.attributes, - segments = _ref3.segments, - sidx = _ref3.sidx; - var playlist = { - attributes: (_attributes3 = { - NAME: attributes.id, - AUDIO: 'audio', - SUBTITLES: 'subs', - RESOLUTION: { - width: attributes.width, - height: attributes.height - }, - CODECS: attributes.codecs, - BANDWIDTH: attributes.bandwidth - }, _attributes3['PROGRAM-ID'] = 1, _attributes3), - uri: '', - endList: (attributes.type || 'static') === 'static', - timeline: attributes.periodIndex, - resolvedUri: '', - targetDuration: attributes.duration, - segments: segments, - mediaSequence: segments.length ? segments[0].number : 1 - }; - - if (attributes.contentProtection) { - playlist.contentProtection = attributes.contentProtection; - } - - if (sidx) { - playlist.sidx = sidx; - } - - return playlist; -}; -var toM3u8 = function toM3u8(dashPlaylists, sidxMapping) { - var _mediaGroups; - - if (sidxMapping === void 0) { - sidxMapping = {}; - } - - if (!dashPlaylists.length) { - return {}; - } // grab all master attributes - - - var _dashPlaylists$0$attr = dashPlaylists[0].attributes, - duration = _dashPlaylists$0$attr.sourceDuration, - _dashPlaylists$0$attr2 = _dashPlaylists$0$attr.type, - type = _dashPlaylists$0$attr2 === void 0 ? 'static' : _dashPlaylists$0$attr2, - suggestedPresentationDelay = _dashPlaylists$0$attr.suggestedPresentationDelay, - _dashPlaylists$0$attr3 = _dashPlaylists$0$attr.minimumUpdatePeriod, - minimumUpdatePeriod = _dashPlaylists$0$attr3 === void 0 ? 0 : _dashPlaylists$0$attr3; - - var videoOnly = function videoOnly(_ref4) { - var attributes = _ref4.attributes; - return attributes.mimeType === 'video/mp4' || attributes.contentType === 'video'; - }; - - var audioOnly = function audioOnly(_ref5) { - var attributes = _ref5.attributes; - return attributes.mimeType === 'audio/mp4' || attributes.contentType === 'audio'; - }; - - var vttOnly = function vttOnly(_ref6) { - var attributes = _ref6.attributes; - return attributes.mimeType === 'text/vtt' || attributes.contentType === 'text'; - }; - - var videoPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(videoOnly)).map(formatVideoPlaylist); - var audioPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(audioOnly)); - var vttPlaylists = dashPlaylists.filter(vttOnly); - var master = { - allowCache: true, - discontinuityStarts: [], - segments: [], - endList: true, - mediaGroups: (_mediaGroups = { - AUDIO: {}, - VIDEO: {} - }, _mediaGroups['CLOSED-CAPTIONS'] = {}, _mediaGroups.SUBTITLES = {}, _mediaGroups), - uri: '', - duration: duration, - playlists: addSegmentInfoFromSidx(videoPlaylists, sidxMapping), - minimumUpdatePeriod: minimumUpdatePeriod * 1000 - }; - - if (type === 'dynamic') { - master.suggestedPresentationDelay = suggestedPresentationDelay; - } - - if (audioPlaylists.length) { - master.mediaGroups.AUDIO.audio = organizeAudioPlaylists(audioPlaylists, sidxMapping); - } - - if (vttPlaylists.length) { - master.mediaGroups.SUBTITLES.subs = organizeVttPlaylists(vttPlaylists, sidxMapping); - } - - return master; -}; - -/** - * Calculates the R (repetition) value for a live stream (for the final segment - * in a manifest where the r value is negative 1) - * - * @param {Object} attributes - * Object containing all inherited attributes from parent elements with attribute - * names as keys - * @param {number} time - * current time (typically the total time up until the final segment) - * @param {number} duration - * duration property for the given - * - * @return {number} - * R value to reach the end of the given period - */ -var getLiveRValue = function getLiveRValue(attributes, time, duration) { - var NOW = attributes.NOW, - clientOffset = attributes.clientOffset, - availabilityStartTime = attributes.availabilityStartTime, - _attributes$timescale = attributes.timescale, - timescale = _attributes$timescale === void 0 ? 1 : _attributes$timescale, - _attributes$start = attributes.start, - start = _attributes$start === void 0 ? 0 : _attributes$start, - _attributes$minimumUp = attributes.minimumUpdatePeriod, - minimumUpdatePeriod = _attributes$minimumUp === void 0 ? 0 : _attributes$minimumUp; - var now = (NOW + clientOffset) / 1000; - var periodStartWC = availabilityStartTime + start; - var periodEndWC = now + minimumUpdatePeriod; - var periodDuration = periodEndWC - periodStartWC; - return Math.ceil((periodDuration * timescale - time) / duration); -}; -/** - * Uses information provided by SegmentTemplate.SegmentTimeline to determine segment - * timing and duration - * - * @param {Object} attributes - * Object containing all inherited attributes from parent elements with attribute - * names as keys - * @param {Object[]} segmentTimeline - * List of objects representing the attributes of each S element contained within - * - * @return {{number: number, duration: number, time: number, timeline: number}[]} - * List of Objects with segment timing and duration info - */ - - -var parseByTimeline = function parseByTimeline(attributes, segmentTimeline) { - var _attributes$type = attributes.type, - type = _attributes$type === void 0 ? 'static' : _attributes$type, - _attributes$minimumUp2 = attributes.minimumUpdatePeriod, - minimumUpdatePeriod = _attributes$minimumUp2 === void 0 ? 0 : _attributes$minimumUp2, - _attributes$media = attributes.media, - media = _attributes$media === void 0 ? '' : _attributes$media, - sourceDuration = attributes.sourceDuration, - _attributes$timescale2 = attributes.timescale, - timescale = _attributes$timescale2 === void 0 ? 1 : _attributes$timescale2, - _attributes$startNumb = attributes.startNumber, - startNumber = _attributes$startNumb === void 0 ? 1 : _attributes$startNumb, - timeline = attributes.periodIndex; - var segments = []; - var time = -1; - - for (var sIndex = 0; sIndex < segmentTimeline.length; sIndex++) { - var S = segmentTimeline[sIndex]; - var duration = S.d; - var repeat = S.r || 0; - var segmentTime = S.t || 0; - - if (time < 0) { - // first segment - time = segmentTime; - } - - if (segmentTime && segmentTime > time) { - // discontinuity - // TODO: How to handle this type of discontinuity - // timeline++ here would treat it like HLS discontuity and content would - // get appended without gap - // E.G. - // - // - // - // - // would have $Time$ values of [0, 1, 2, 5] - // should this be appened at time positions [0, 1, 2, 3],(#EXT-X-DISCONTINUITY) - // or [0, 1, 2, gap, gap, 5]? (#EXT-X-GAP) - // does the value of sourceDuration consider this when calculating arbitrary - // negative @r repeat value? - // E.G. Same elements as above with this added at the end - // - // with a sourceDuration of 10 - // Would the 2 gaps be included in the time duration calculations resulting in - // 8 segments with $Time$ values of [0, 1, 2, 5, 6, 7, 8, 9] or 10 segments - // with $Time$ values of [0, 1, 2, 5, 6, 7, 8, 9, 10, 11] ? - time = segmentTime; - } - - var count = void 0; - - if (repeat < 0) { - var nextS = sIndex + 1; - - if (nextS === segmentTimeline.length) { - // last segment - if (type === 'dynamic' && minimumUpdatePeriod > 0 && media.indexOf('$Number$') > 0) { - count = getLiveRValue(attributes, time, duration); - } else { - // TODO: This may be incorrect depending on conclusion of TODO above - count = (sourceDuration * timescale - time) / duration; - } - } else { - count = (segmentTimeline[nextS].t - time) / duration; - } - } else { - count = repeat + 1; - } - - var end = startNumber + segments.length + count; - var number = startNumber + segments.length; - - while (number < end) { - segments.push({ - number: number, - duration: duration / timescale, - time: time, - timeline: timeline - }); - time += duration; - number++; - } - } - - return segments; -}; - -var identifierPattern = /\$([A-z]*)(?:(%0)([0-9]+)d)?\$/g; -/** - * Replaces template identifiers with corresponding values. To be used as the callback - * for String.prototype.replace - * - * @name replaceCallback - * @function - * @param {string} match - * Entire match of identifier - * @param {string} identifier - * Name of matched identifier - * @param {string} format - * Format tag string. Its presence indicates that padding is expected - * @param {string} width - * Desired length of the replaced value. Values less than this width shall be left - * zero padded - * @return {string} - * Replacement for the matched identifier - */ - -/** - * Returns a function to be used as a callback for String.prototype.replace to replace - * template identifiers - * - * @param {Obect} values - * Object containing values that shall be used to replace known identifiers - * @param {number} values.RepresentationID - * Value of the Representation@id attribute - * @param {number} values.Number - * Number of the corresponding segment - * @param {number} values.Bandwidth - * Value of the Representation@bandwidth attribute. - * @param {number} values.Time - * Timestamp value of the corresponding segment - * @return {replaceCallback} - * Callback to be used with String.prototype.replace to replace identifiers - */ - -var identifierReplacement = function identifierReplacement(values) { - return function (match, identifier, format, width) { - if (match === '$$') { - // escape sequence - return '$'; - } - - if (typeof values[identifier] === 'undefined') { - return match; - } - - var value = '' + values[identifier]; - - if (identifier === 'RepresentationID') { - // Format tag shall not be present with RepresentationID - return value; - } - - if (!format) { - width = 1; - } else { - width = parseInt(width, 10); - } - - if (value.length >= width) { - return value; - } - - return "" + new Array(width - value.length + 1).join('0') + value; - }; -}; -/** - * Constructs a segment url from a template string - * - * @param {string} url - * Template string to construct url from - * @param {Obect} values - * Object containing values that shall be used to replace known identifiers - * @param {number} values.RepresentationID - * Value of the Representation@id attribute - * @param {number} values.Number - * Number of the corresponding segment - * @param {number} values.Bandwidth - * Value of the Representation@bandwidth attribute. - * @param {number} values.Time - * Timestamp value of the corresponding segment - * @return {string} - * Segment url with identifiers replaced - */ - -var constructTemplateUrl = function constructTemplateUrl(url, values) { - return url.replace(identifierPattern, identifierReplacement(values)); -}; -/** - * Generates a list of objects containing timing and duration information about each - * segment needed to generate segment uris and the complete segment object - * - * @param {Object} attributes - * Object containing all inherited attributes from parent elements with attribute - * names as keys - * @param {Object[]|undefined} segmentTimeline - * List of objects representing the attributes of each S element contained within - * the SegmentTimeline element - * @return {{number: number, duration: number, time: number, timeline: number}[]} - * List of Objects with segment timing and duration info - */ - -var parseTemplateInfo = function parseTemplateInfo(attributes, segmentTimeline) { - if (!attributes.duration && !segmentTimeline) { - // if neither @duration or SegmentTimeline are present, then there shall be exactly - // one media segment - return [{ - number: attributes.startNumber || 1, - duration: attributes.sourceDuration, - time: 0, - timeline: attributes.periodIndex - }]; - } - - if (attributes.duration) { - return parseByDuration(attributes); - } - - return parseByTimeline(attributes, segmentTimeline); -}; -/** - * Generates a list of segments using information provided by the SegmentTemplate element - * - * @param {Object} attributes - * Object containing all inherited attributes from parent elements with attribute - * names as keys - * @param {Object[]|undefined} segmentTimeline - * List of objects representing the attributes of each S element contained within - * the SegmentTimeline element - * @return {Object[]} - * List of segment objects - */ - -var segmentsFromTemplate = function segmentsFromTemplate(attributes, segmentTimeline) { - var templateValues = { - RepresentationID: attributes.id, - Bandwidth: attributes.bandwidth || 0 - }; - var _attributes$initializ = attributes.initialization, - initialization = _attributes$initializ === void 0 ? { - sourceURL: '', - range: '' - } : _attributes$initializ; - var mapSegment = urlTypeToSegment({ - baseUrl: attributes.baseUrl, - source: constructTemplateUrl(initialization.sourceURL, templateValues), - range: initialization.range - }); - var segments = parseTemplateInfo(attributes, segmentTimeline); - return segments.map(function (segment) { - templateValues.Number = segment.number; - templateValues.Time = segment.time; - var uri = constructTemplateUrl(attributes.media || '', templateValues); - return { - uri: uri, - timeline: segment.timeline, - duration: segment.duration, - resolvedUri: resolveUrl_1(attributes.baseUrl || '', uri), - map: mapSegment, - number: segment.number - }; - }); -}; - -/** - * Converts a (of type URLType from the DASH spec 5.3.9.2 Table 14) - * to an object that matches the output of a segment in videojs/mpd-parser - * - * @param {Object} attributes - * Object containing all inherited attributes from parent elements with attribute - * names as keys - * @param {Object} segmentUrl - * node to translate into a segment object - * @return {Object} translated segment object - */ - -var SegmentURLToSegmentObject = function SegmentURLToSegmentObject(attributes, segmentUrl) { - var baseUrl = attributes.baseUrl, - _attributes$initializ = attributes.initialization, - initialization = _attributes$initializ === void 0 ? {} : _attributes$initializ; - var initSegment = urlTypeToSegment({ - baseUrl: baseUrl, - source: initialization.sourceURL, - range: initialization.range - }); - var segment = urlTypeToSegment({ - baseUrl: baseUrl, - source: segmentUrl.media, - range: segmentUrl.mediaRange - }); - segment.map = initSegment; - return segment; -}; -/** - * Generates a list of segments using information provided by the SegmentList element - * SegmentList (DASH SPEC Section 5.3.9.3.2) contains a set of nodes. Each - * node should be translated into segment. - * - * @param {Object} attributes - * Object containing all inherited attributes from parent elements with attribute - * names as keys - * @param {Object[]|undefined} segmentTimeline - * List of objects representing the attributes of each S element contained within - * the SegmentTimeline element - * @return {Object.} list of segments - */ - - -var segmentsFromList = function segmentsFromList(attributes, segmentTimeline) { - var duration = attributes.duration, - _attributes$segmentUr = attributes.segmentUrls, - segmentUrls = _attributes$segmentUr === void 0 ? [] : _attributes$segmentUr; // Per spec (5.3.9.2.1) no way to determine segment duration OR - // if both SegmentTimeline and @duration are defined, it is outside of spec. - - if (!duration && !segmentTimeline || duration && segmentTimeline) { - throw new Error(errors.SEGMENT_TIME_UNSPECIFIED); - } - - var segmentUrlMap = segmentUrls.map(function (segmentUrlObject) { - return SegmentURLToSegmentObject(attributes, segmentUrlObject); - }); - var segmentTimeInfo; - - if (duration) { - segmentTimeInfo = parseByDuration(attributes); - } - - if (segmentTimeline) { - segmentTimeInfo = parseByTimeline(attributes, segmentTimeline); - } - - var segments = segmentTimeInfo.map(function (segmentTime, index) { - if (segmentUrlMap[index]) { - var segment = segmentUrlMap[index]; - segment.timeline = segmentTime.timeline; - segment.duration = segmentTime.duration; - segment.number = segmentTime.number; - return segment; - } // Since we're mapping we should get rid of any blank segments (in case - // the given SegmentTimeline is handling for more elements than we have - // SegmentURLs for). - - }).filter(function (segment) { - return segment; - }); - return segments; -}; - -var generateSegments = function generateSegments(_ref) { - var attributes = _ref.attributes, - segmentInfo = _ref.segmentInfo; - var segmentAttributes; - var segmentsFn; - - if (segmentInfo.template) { - segmentsFn = segmentsFromTemplate; - segmentAttributes = merge(attributes, segmentInfo.template); - } else if (segmentInfo.base) { - segmentsFn = segmentsFromBase; - segmentAttributes = merge(attributes, segmentInfo.base); - } else if (segmentInfo.list) { - segmentsFn = segmentsFromList; - segmentAttributes = merge(attributes, segmentInfo.list); - } - - var segmentsInfo = { - attributes: attributes - }; - - if (!segmentsFn) { - return segmentsInfo; - } - - var segments = segmentsFn(segmentAttributes, segmentInfo.timeline); // The @duration attribute will be used to determin the playlist's targetDuration which - // must be in seconds. Since we've generated the segment list, we no longer need - // @duration to be in @timescale units, so we can convert it here. - - if (segmentAttributes.duration) { - var _segmentAttributes = segmentAttributes, - duration = _segmentAttributes.duration, - _segmentAttributes$ti = _segmentAttributes.timescale, - timescale = _segmentAttributes$ti === void 0 ? 1 : _segmentAttributes$ti; - segmentAttributes.duration = duration / timescale; - } else if (segments.length) { - // if there is no @duration attribute, use the largest segment duration as - // as target duration - segmentAttributes.duration = segments.reduce(function (max, segment) { - return Math.max(max, Math.ceil(segment.duration)); - }, 0); - } else { - segmentAttributes.duration = 0; - } - - segmentsInfo.attributes = segmentAttributes; - segmentsInfo.segments = segments; // This is a sidx box without actual segment information - - if (segmentInfo.base && segmentAttributes.indexRange) { - segmentsInfo.sidx = segments[0]; - segmentsInfo.segments = []; - } - - return segmentsInfo; -}; -var toPlaylists = function toPlaylists(representations) { - return representations.map(generateSegments); -}; - -var findChildren = function findChildren(element, name) { - return from(element.childNodes).filter(function (_ref) { - var tagName = _ref.tagName; - return tagName === name; - }); -}; -var getContent = function getContent(element) { - return element.textContent.trim(); -}; - -var parseDuration = function parseDuration(str) { - var SECONDS_IN_YEAR = 365 * 24 * 60 * 60; - var SECONDS_IN_MONTH = 30 * 24 * 60 * 60; - var SECONDS_IN_DAY = 24 * 60 * 60; - var SECONDS_IN_HOUR = 60 * 60; - var SECONDS_IN_MIN = 60; // P10Y10M10DT10H10M10.1S - - var durationRegex = /P(?:(\d*)Y)?(?:(\d*)M)?(?:(\d*)D)?(?:T(?:(\d*)H)?(?:(\d*)M)?(?:([\d.]*)S)?)?/; - var match = durationRegex.exec(str); - - if (!match) { - return 0; - } - - var _match$slice = match.slice(1), - year = _match$slice[0], - month = _match$slice[1], - day = _match$slice[2], - hour = _match$slice[3], - minute = _match$slice[4], - second = _match$slice[5]; - - return parseFloat(year || 0) * SECONDS_IN_YEAR + parseFloat(month || 0) * SECONDS_IN_MONTH + parseFloat(day || 0) * SECONDS_IN_DAY + parseFloat(hour || 0) * SECONDS_IN_HOUR + parseFloat(minute || 0) * SECONDS_IN_MIN + parseFloat(second || 0); -}; -var parseDate = function parseDate(str) { - // Date format without timezone according to ISO 8601 - // YYY-MM-DDThh:mm:ss.ssssss - var dateRegex = /^\d+-\d+-\d+T\d+:\d+:\d+(\.\d+)?$/; // If the date string does not specifiy a timezone, we must specifiy UTC. This is - // expressed by ending with 'Z' - - if (dateRegex.test(str)) { - str += 'Z'; - } - - return Date.parse(str); -}; - -var parsers = { - /** - * Specifies the duration of the entire Media Presentation. Format is a duration string - * as specified in ISO 8601 - * - * @param {string} value - * value of attribute as a string - * @return {number} - * The duration in seconds - */ - mediaPresentationDuration: function mediaPresentationDuration(value) { - return parseDuration(value); - }, - - /** - * Specifies the Segment availability start time for all Segments referred to in this - * MPD. For a dynamic manifest, it specifies the anchor for the earliest availability - * time. Format is a date string as specified in ISO 8601 - * - * @param {string} value - * value of attribute as a string - * @return {number} - * The date as seconds from unix epoch - */ - availabilityStartTime: function availabilityStartTime(value) { - return parseDate(value) / 1000; - }, - - /** - * Specifies the smallest period between potential changes to the MPD. Format is a - * duration string as specified in ISO 8601 - * - * @param {string} value - * value of attribute as a string - * @return {number} - * The duration in seconds - */ - minimumUpdatePeriod: function minimumUpdatePeriod(value) { - return parseDuration(value); - }, - - /** - * Specifies the suggested presentation delay. Format is a - * duration string as specified in ISO 8601 - * - * @param {string} value - * value of attribute as a string - * @return {number} - * The duration in seconds - */ - suggestedPresentationDelay: function suggestedPresentationDelay(value) { - return parseDuration(value); - }, - - /** - * specifices the type of mpd. Can be either "static" or "dynamic" - * - * @param {string} value - * value of attribute as a string - * - * @return {string} - * The type as a string - */ - type: function type(value) { - return value; - }, - - /** - * Specifies the duration of the smallest time shifting buffer for any Representation - * in the MPD. Format is a duration string as specified in ISO 8601 - * - * @param {string} value - * value of attribute as a string - * @return {number} - * The duration in seconds - */ - timeShiftBufferDepth: function timeShiftBufferDepth(value) { - return parseDuration(value); - }, - - /** - * Specifies the PeriodStart time of the Period relative to the availabilityStarttime. - * Format is a duration string as specified in ISO 8601 - * - * @param {string} value - * value of attribute as a string - * @return {number} - * The duration in seconds - */ - start: function start(value) { - return parseDuration(value); - }, - - /** - * Specifies the width of the visual presentation - * - * @param {string} value - * value of attribute as a string - * @return {number} - * The parsed width - */ - width: function width(value) { - return parseInt(value, 10); - }, - - /** - * Specifies the height of the visual presentation - * - * @param {string} value - * value of attribute as a string - * @return {number} - * The parsed height - */ - height: function height(value) { - return parseInt(value, 10); - }, - - /** - * Specifies the bitrate of the representation - * - * @param {string} value - * value of attribute as a string - * @return {number} - * The parsed bandwidth - */ - bandwidth: function bandwidth(value) { - return parseInt(value, 10); - }, - - /** - * Specifies the number of the first Media Segment in this Representation in the Period - * - * @param {string} value - * value of attribute as a string - * @return {number} - * The parsed number - */ - startNumber: function startNumber(value) { - return parseInt(value, 10); - }, - - /** - * Specifies the timescale in units per seconds - * - * @param {string} value - * value of attribute as a string - * @return {number} - * The aprsed timescale - */ - timescale: function timescale(value) { - return parseInt(value, 10); - }, - - /** - * Specifies the constant approximate Segment duration - * NOTE: The element also contains an @duration attribute. This duration - * specifies the duration of the Period. This attribute is currently not - * supported by the rest of the parser, however we still check for it to prevent - * errors. - * - * @param {string} value - * value of attribute as a string - * @return {number} - * The parsed duration - */ - duration: function duration(value) { - var parsedValue = parseInt(value, 10); - - if (isNaN(parsedValue)) { - return parseDuration(value); - } - - return parsedValue; - }, - - /** - * Specifies the Segment duration, in units of the value of the @timescale. - * - * @param {string} value - * value of attribute as a string - * @return {number} - * The parsed duration - */ - d: function d(value) { - return parseInt(value, 10); - }, - - /** - * Specifies the MPD start time, in @timescale units, the first Segment in the series - * starts relative to the beginning of the Period - * - * @param {string} value - * value of attribute as a string - * @return {number} - * The parsed time - */ - t: function t(value) { - return parseInt(value, 10); - }, - - /** - * Specifies the repeat count of the number of following contiguous Segments with the - * same duration expressed by the value of @d - * - * @param {string} value - * value of attribute as a string - * @return {number} - * The parsed number - */ - r: function r(value) { - return parseInt(value, 10); - }, - - /** - * Default parser for all other attributes. Acts as a no-op and just returns the value - * as a string - * - * @param {string} value - * value of attribute as a string - * @return {string} - * Unparsed value - */ - DEFAULT: function DEFAULT(value) { - return value; - } -}; -/** - * Gets all the attributes and values of the provided node, parses attributes with known - * types, and returns an object with attribute names mapped to values. - * - * @param {Node} el - * The node to parse attributes from - * @return {Object} - * Object with all attributes of el parsed - */ - -var parseAttributes$1 = function parseAttributes(el) { - if (!(el && el.attributes)) { - return {}; - } - - return from(el.attributes).reduce(function (a, e) { - var parseFn = parsers[e.name] || parsers.DEFAULT; - a[e.name] = parseFn(e.value); - return a; - }, {}); -}; - -var keySystemsMap = { - 'urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b': 'org.w3.clearkey', - 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed': 'com.widevine.alpha', - 'urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95': 'com.microsoft.playready', - 'urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb': 'com.adobe.primetime' -}; -/** - * Builds a list of urls that is the product of the reference urls and BaseURL values - * - * @param {string[]} referenceUrls - * List of reference urls to resolve to - * @param {Node[]} baseUrlElements - * List of BaseURL nodes from the mpd - * @return {string[]} - * List of resolved urls - */ - -var buildBaseUrls = function buildBaseUrls(referenceUrls, baseUrlElements) { - if (!baseUrlElements.length) { - return referenceUrls; - } - - return flatten(referenceUrls.map(function (reference) { - return baseUrlElements.map(function (baseUrlElement) { - return resolveUrl_1(reference, getContent(baseUrlElement)); - }); - })); -}; -/** - * Contains all Segment information for its containing AdaptationSet - * - * @typedef {Object} SegmentInformation - * @property {Object|undefined} template - * Contains the attributes for the SegmentTemplate node - * @property {Object[]|undefined} timeline - * Contains a list of atrributes for each S node within the SegmentTimeline node - * @property {Object|undefined} list - * Contains the attributes for the SegmentList node - * @property {Object|undefined} base - * Contains the attributes for the SegmentBase node - */ - -/** - * Returns all available Segment information contained within the AdaptationSet node - * - * @param {Node} adaptationSet - * The AdaptationSet node to get Segment information from - * @return {SegmentInformation} - * The Segment information contained within the provided AdaptationSet - */ - -var getSegmentInformation = function getSegmentInformation(adaptationSet) { - var segmentTemplate = findChildren(adaptationSet, 'SegmentTemplate')[0]; - var segmentList = findChildren(adaptationSet, 'SegmentList')[0]; - var segmentUrls = segmentList && findChildren(segmentList, 'SegmentURL').map(function (s) { - return merge({ - tag: 'SegmentURL' - }, parseAttributes$1(s)); - }); - var segmentBase = findChildren(adaptationSet, 'SegmentBase')[0]; - var segmentTimelineParentNode = segmentList || segmentTemplate; - var segmentTimeline = segmentTimelineParentNode && findChildren(segmentTimelineParentNode, 'SegmentTimeline')[0]; - var segmentInitializationParentNode = segmentList || segmentBase || segmentTemplate; - var segmentInitialization = segmentInitializationParentNode && findChildren(segmentInitializationParentNode, 'Initialization')[0]; // SegmentTemplate is handled slightly differently, since it can have both - // @initialization and an node. @initialization can be templated, - // while the node can have a url and range specified. If the has - // both @initialization and an subelement we opt to override with - // the node, as this interaction is not defined in the spec. - - var template = segmentTemplate && parseAttributes$1(segmentTemplate); - - if (template && segmentInitialization) { - template.initialization = segmentInitialization && parseAttributes$1(segmentInitialization); - } else if (template && template.initialization) { - // If it is @initialization we convert it to an object since this is the format that - // later functions will rely on for the initialization segment. This is only valid - // for - template.initialization = { - sourceURL: template.initialization - }; - } - - var segmentInfo = { - template: template, - timeline: segmentTimeline && findChildren(segmentTimeline, 'S').map(function (s) { - return parseAttributes$1(s); - }), - list: segmentList && merge(parseAttributes$1(segmentList), { - segmentUrls: segmentUrls, - initialization: parseAttributes$1(segmentInitialization) - }), - base: segmentBase && merge(parseAttributes$1(segmentBase), { - initialization: parseAttributes$1(segmentInitialization) - }) - }; - Object.keys(segmentInfo).forEach(function (key) { - if (!segmentInfo[key]) { - delete segmentInfo[key]; - } - }); - return segmentInfo; -}; -/** - * Contains Segment information and attributes needed to construct a Playlist object - * from a Representation - * - * @typedef {Object} RepresentationInformation - * @property {SegmentInformation} segmentInfo - * Segment information for this Representation - * @property {Object} attributes - * Inherited attributes for this Representation - */ - -/** - * Maps a Representation node to an object containing Segment information and attributes - * - * @name inheritBaseUrlsCallback - * @function - * @param {Node} representation - * Representation node from the mpd - * @return {RepresentationInformation} - * Representation information needed to construct a Playlist object - */ - -/** - * Returns a callback for Array.prototype.map for mapping Representation nodes to - * Segment information and attributes using inherited BaseURL nodes. - * - * @param {Object} adaptationSetAttributes - * Contains attributes inherited by the AdaptationSet - * @param {string[]} adaptationSetBaseUrls - * Contains list of resolved base urls inherited by the AdaptationSet - * @param {SegmentInformation} adaptationSetSegmentInfo - * Contains Segment information for the AdaptationSet - * @return {inheritBaseUrlsCallback} - * Callback map function - */ - -var inheritBaseUrls = function inheritBaseUrls(adaptationSetAttributes, adaptationSetBaseUrls, adaptationSetSegmentInfo) { - return function (representation) { - var repBaseUrlElements = findChildren(representation, 'BaseURL'); - var repBaseUrls = buildBaseUrls(adaptationSetBaseUrls, repBaseUrlElements); - var attributes = merge(adaptationSetAttributes, parseAttributes$1(representation)); - var representationSegmentInfo = getSegmentInformation(representation); - return repBaseUrls.map(function (baseUrl) { - return { - segmentInfo: merge(adaptationSetSegmentInfo, representationSegmentInfo), - attributes: merge(attributes, { - baseUrl: baseUrl - }) - }; - }); - }; -}; -/** - * Tranforms a series of content protection nodes to - * an object containing pssh data by key system - * - * @param {Node[]} contentProtectionNodes - * Content protection nodes - * @return {Object} - * Object containing pssh data by key system - */ - -var generateKeySystemInformation = function generateKeySystemInformation(contentProtectionNodes) { - return contentProtectionNodes.reduce(function (acc, node) { - var attributes = parseAttributes$1(node); - var keySystem = keySystemsMap[attributes.schemeIdUri]; - - if (keySystem) { - acc[keySystem] = { - attributes: attributes - }; - var psshNode = findChildren(node, 'cenc:pssh')[0]; - - if (psshNode) { - var pssh = getContent(psshNode); - var psshBuffer = pssh && decodeB64ToUint8Array_1(pssh); - acc[keySystem].pssh = psshBuffer; - } - } - - return acc; - }, {}); -}; -/** - * Maps an AdaptationSet node to a list of Representation information objects - * - * @name toRepresentationsCallback - * @function - * @param {Node} adaptationSet - * AdaptationSet node from the mpd - * @return {RepresentationInformation[]} - * List of objects containing Representaion information - */ - -/** - * Returns a callback for Array.prototype.map for mapping AdaptationSet nodes to a list of - * Representation information objects - * - * @param {Object} periodAttributes - * Contains attributes inherited by the Period - * @param {string[]} periodBaseUrls - * Contains list of resolved base urls inherited by the Period - * @param {string[]} periodSegmentInfo - * Contains Segment Information at the period level - * @return {toRepresentationsCallback} - * Callback map function - */ - - -var toRepresentations = function toRepresentations(periodAttributes, periodBaseUrls, periodSegmentInfo) { - return function (adaptationSet) { - var adaptationSetAttributes = parseAttributes$1(adaptationSet); - var adaptationSetBaseUrls = buildBaseUrls(periodBaseUrls, findChildren(adaptationSet, 'BaseURL')); - var role = findChildren(adaptationSet, 'Role')[0]; - var roleAttributes = { - role: parseAttributes$1(role) - }; - var attrs = merge(periodAttributes, adaptationSetAttributes, roleAttributes); - var contentProtection = generateKeySystemInformation(findChildren(adaptationSet, 'ContentProtection')); - - if (Object.keys(contentProtection).length) { - attrs = merge(attrs, { - contentProtection: contentProtection - }); - } - - var segmentInfo = getSegmentInformation(adaptationSet); - var representations = findChildren(adaptationSet, 'Representation'); - var adaptationSetSegmentInfo = merge(periodSegmentInfo, segmentInfo); - return flatten(representations.map(inheritBaseUrls(attrs, adaptationSetBaseUrls, adaptationSetSegmentInfo))); - }; -}; -/** - * Maps an Period node to a list of Representation inforamtion objects for all - * AdaptationSet nodes contained within the Period - * - * @name toAdaptationSetsCallback - * @function - * @param {Node} period - * Period node from the mpd - * @param {number} periodIndex - * Index of the Period within the mpd - * @return {RepresentationInformation[]} - * List of objects containing Representaion information - */ - -/** - * Returns a callback for Array.prototype.map for mapping Period nodes to a list of - * Representation information objects - * - * @param {Object} mpdAttributes - * Contains attributes inherited by the mpd - * @param {string[]} mpdBaseUrls - * Contains list of resolved base urls inherited by the mpd - * @return {toAdaptationSetsCallback} - * Callback map function - */ - -var toAdaptationSets = function toAdaptationSets(mpdAttributes, mpdBaseUrls) { - return function (period, index) { - var periodBaseUrls = buildBaseUrls(mpdBaseUrls, findChildren(period, 'BaseURL')); - var periodAtt = parseAttributes$1(period); - var parsedPeriodId = parseInt(periodAtt.id, 10); // fallback to mapping index if Period@id is not a number - - var periodIndex = window_1$1.isNaN(parsedPeriodId) ? index : parsedPeriodId; - var periodAttributes = merge(mpdAttributes, { - periodIndex: periodIndex - }); - var adaptationSets = findChildren(period, 'AdaptationSet'); - var periodSegmentInfo = getSegmentInformation(period); - return flatten(adaptationSets.map(toRepresentations(periodAttributes, periodBaseUrls, periodSegmentInfo))); - }; -}; -/** - * Traverses the mpd xml tree to generate a list of Representation information objects - * that have inherited attributes from parent nodes - * - * @param {Node} mpd - * The root node of the mpd - * @param {Object} options - * Available options for inheritAttributes - * @param {string} options.manifestUri - * The uri source of the mpd - * @param {number} options.NOW - * Current time per DASH IOP. Default is current time in ms since epoch - * @param {number} options.clientOffset - * Client time difference from NOW (in milliseconds) - * @return {RepresentationInformation[]} - * List of objects containing Representation information - */ - -var inheritAttributes = function inheritAttributes(mpd, options) { - if (options === void 0) { - options = {}; - } - - var _options = options, - _options$manifestUri = _options.manifestUri, - manifestUri = _options$manifestUri === void 0 ? '' : _options$manifestUri, - _options$NOW = _options.NOW, - NOW = _options$NOW === void 0 ? Date.now() : _options$NOW, - _options$clientOffset = _options.clientOffset, - clientOffset = _options$clientOffset === void 0 ? 0 : _options$clientOffset; - var periods = findChildren(mpd, 'Period'); - - if (!periods.length) { - throw new Error(errors.INVALID_NUMBER_OF_PERIOD); - } - - var mpdAttributes = parseAttributes$1(mpd); - var mpdBaseUrls = buildBaseUrls([manifestUri], findChildren(mpd, 'BaseURL')); - mpdAttributes.sourceDuration = mpdAttributes.mediaPresentationDuration || 0; - mpdAttributes.NOW = NOW; - mpdAttributes.clientOffset = clientOffset; - return flatten(periods.map(toAdaptationSets(mpdAttributes, mpdBaseUrls))); -}; - -var stringToMpdXml = function stringToMpdXml(manifestString) { - if (manifestString === '') { - throw new Error(errors.DASH_EMPTY_MANIFEST); - } - - var parser = new domParser.DOMParser(); - var xml = parser.parseFromString(manifestString, 'application/xml'); - var mpd = xml && xml.documentElement.tagName === 'MPD' ? xml.documentElement : null; - - if (!mpd || mpd && mpd.getElementsByTagName('parsererror').length > 0) { - throw new Error(errors.DASH_INVALID_XML); - } - - return mpd; -}; - -/** - * Parses the manifest for a UTCTiming node, returning the nodes attributes if found - * - * @param {string} mpd - * XML string of the MPD manifest - * @return {Object|null} - * Attributes of UTCTiming node specified in the manifest. Null if none found - */ - -var parseUTCTimingScheme = function parseUTCTimingScheme(mpd) { - var UTCTimingNode = findChildren(mpd, 'UTCTiming')[0]; - - if (!UTCTimingNode) { - return null; - } - - var attributes = parseAttributes$1(UTCTimingNode); - - switch (attributes.schemeIdUri) { - case 'urn:mpeg:dash:utc:http-head:2014': - case 'urn:mpeg:dash:utc:http-head:2012': - attributes.method = 'HEAD'; - break; - - case 'urn:mpeg:dash:utc:http-xsdate:2014': - case 'urn:mpeg:dash:utc:http-iso:2014': - case 'urn:mpeg:dash:utc:http-xsdate:2012': - case 'urn:mpeg:dash:utc:http-iso:2012': - attributes.method = 'GET'; - break; - - case 'urn:mpeg:dash:utc:direct:2014': - case 'urn:mpeg:dash:utc:direct:2012': - attributes.method = 'DIRECT'; - attributes.value = Date.parse(attributes.value); - break; - - case 'urn:mpeg:dash:utc:http-ntp:2014': - case 'urn:mpeg:dash:utc:ntp:2014': - case 'urn:mpeg:dash:utc:sntp:2014': - default: - throw new Error(errors.UNSUPPORTED_UTC_TIMING_SCHEME); - } - - return attributes; -}; - -var parse$1 = function parse(manifestString, options) { - if (options === void 0) { - options = {}; - } - - return toM3u8(toPlaylists(inheritAttributes(stringToMpdXml(manifestString), options)), options.sidxMapping); -}; -/** - * Parses the manifest for a UTCTiming node, returning the nodes attributes if found - * - * @param {string} manifestString - * XML string of the MPD manifest - * @return {Object|null} - * Attributes of UTCTiming node specified in the manifest. Null if none found - */ - - -var parseUTCTiming = function parseUTCTiming(manifestString) { - return parseUTCTimingScheme(stringToMpdXml(manifestString)); -}; - -/** - * mux.js - * - * Copyright (c) Brightcove - * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE - */ -var toUnsigned = function(value) { - return value >>> 0; -}; - -var toHexString = function(value) { - return ('00' + value.toString(16)).slice(-2); -}; - -var bin = { - toUnsigned: toUnsigned, - toHexString: toHexString -}; - -var - inspectMp4, - textifyMp4, - toUnsigned$1 = bin.toUnsigned, - parseMp4Date = function(seconds) { - return new Date(seconds * 1000 - 2082844800000); - }, - parseSampleFlags = function(flags) { - return { - isLeading: (flags[0] & 0x0c) >>> 2, - dependsOn: flags[0] & 0x03, - isDependedOn: (flags[1] & 0xc0) >>> 6, - hasRedundancy: (flags[1] & 0x30) >>> 4, - paddingValue: (flags[1] & 0x0e) >>> 1, - isNonSyncSample: flags[1] & 0x01, - degradationPriority: (flags[2] << 8) | flags[3] - }; - }, - /** - * Returns the string representation of an ASCII encoded four byte buffer. - * @param buffer {Uint8Array} a four-byte buffer to translate - * @return {string} the corresponding string - */ - parseType = function(buffer) { - var result = ''; - result += String.fromCharCode(buffer[0]); - result += String.fromCharCode(buffer[1]); - result += String.fromCharCode(buffer[2]); - result += String.fromCharCode(buffer[3]); - return result; - }, - // Find the data for a box specified by its path - findBox = function(data, path) { - var results = [], - i, size, type, end, subresults; - - if (!path.length) { - // short-circuit the search for empty paths - return null; - } - - for (i = 0; i < data.byteLength;) { - size = toUnsigned$1(data[i] << 24 | - data[i + 1] << 16 | - data[i + 2] << 8 | - data[i + 3]); - - type = parseType(data.subarray(i + 4, i + 8)); - - end = size > 1 ? i + size : data.byteLength; - - if (type === path[0]) { - if (path.length === 1) { - // this is the end of the path and we've found the box we were - // looking for - results.push(data.subarray(i + 8, end)); - } else { - // recursively search for the next box along the path - subresults = findBox(data.subarray(i + 8, end), path.slice(1)); - if (subresults.length) { - results = results.concat(subresults); - } - } - } - i = end; - } - - // we've finished searching all of data - return results; - }, - nalParse = function(avcStream) { - var - avcView = new DataView(avcStream.buffer, avcStream.byteOffset, avcStream.byteLength), - result = [], - i, - length; - for (i = 0; i + 4 < avcStream.length; i += length) { - length = avcView.getUint32(i); - i += 4; - - // bail if this doesn't appear to be an H264 stream - if (length <= 0) { - result.push('MALFORMED DATA'); - continue; - } - - switch (avcStream[i] & 0x1F) { - case 0x01: - result.push('slice_layer_without_partitioning_rbsp'); - break; - case 0x05: - result.push('slice_layer_without_partitioning_rbsp_idr'); - break; - case 0x06: - result.push('sei_rbsp'); - break; - case 0x07: - result.push('seq_parameter_set_rbsp'); - break; - case 0x08: - result.push('pic_parameter_set_rbsp'); - break; - case 0x09: - result.push('access_unit_delimiter_rbsp'); - break; - default: - result.push('UNKNOWN NAL - ' + avcStream[i] & 0x1F); - break; - } - } - return result; - }, - - // registry of handlers for individual mp4 box types - parse$2 = { - // codingname, not a first-class box type. stsd entries share the - // same format as real boxes so the parsing infrastructure can be - // shared - avc1: function(data) { - var view = new DataView(data.buffer, data.byteOffset, data.byteLength); - return { - dataReferenceIndex: view.getUint16(6), - width: view.getUint16(24), - height: view.getUint16(26), - horizresolution: view.getUint16(28) + (view.getUint16(30) / 16), - vertresolution: view.getUint16(32) + (view.getUint16(34) / 16), - frameCount: view.getUint16(40), - depth: view.getUint16(74), - config: inspectMp4(data.subarray(78, data.byteLength)) - }; - }, - avcC: function(data) { - var - view = new DataView(data.buffer, data.byteOffset, data.byteLength), - result = { - configurationVersion: data[0], - avcProfileIndication: data[1], - profileCompatibility: data[2], - avcLevelIndication: data[3], - lengthSizeMinusOne: data[4] & 0x03, - sps: [], - pps: [] - }, - numOfSequenceParameterSets = data[5] & 0x1f, - numOfPictureParameterSets, - nalSize, - offset, - i; - - // iterate past any SPSs - offset = 6; - for (i = 0; i < numOfSequenceParameterSets; i++) { - nalSize = view.getUint16(offset); - offset += 2; - result.sps.push(new Uint8Array(data.subarray(offset, offset + nalSize))); - offset += nalSize; - } - // iterate past any PPSs - numOfPictureParameterSets = data[offset]; - offset++; - for (i = 0; i < numOfPictureParameterSets; i++) { - nalSize = view.getUint16(offset); - offset += 2; - result.pps.push(new Uint8Array(data.subarray(offset, offset + nalSize))); - offset += nalSize; - } - return result; - }, - btrt: function(data) { - var view = new DataView(data.buffer, data.byteOffset, data.byteLength); - return { - bufferSizeDB: view.getUint32(0), - maxBitrate: view.getUint32(4), - avgBitrate: view.getUint32(8) - }; - }, - esds: function(data) { - return { - version: data[0], - flags: new Uint8Array(data.subarray(1, 4)), - esId: (data[6] << 8) | data[7], - streamPriority: data[8] & 0x1f, - decoderConfig: { - objectProfileIndication: data[11], - streamType: (data[12] >>> 2) & 0x3f, - bufferSize: (data[13] << 16) | (data[14] << 8) | data[15], - maxBitrate: (data[16] << 24) | - (data[17] << 16) | - (data[18] << 8) | - data[19], - avgBitrate: (data[20] << 24) | - (data[21] << 16) | - (data[22] << 8) | - data[23], - decoderConfigDescriptor: { - tag: data[24], - length: data[25], - audioObjectType: (data[26] >>> 3) & 0x1f, - samplingFrequencyIndex: ((data[26] & 0x07) << 1) | - ((data[27] >>> 7) & 0x01), - channelConfiguration: (data[27] >>> 3) & 0x0f - } - } - }; - }, - ftyp: function(data) { - var - view = new DataView(data.buffer, data.byteOffset, data.byteLength), - result = { - majorBrand: parseType(data.subarray(0, 4)), - minorVersion: view.getUint32(4), - compatibleBrands: [] - }, - i = 8; - while (i < data.byteLength) { - result.compatibleBrands.push(parseType(data.subarray(i, i + 4))); - i += 4; - } - return result; - }, - dinf: function(data) { - return { - boxes: inspectMp4(data) - }; - }, - dref: function(data) { - return { - version: data[0], - flags: new Uint8Array(data.subarray(1, 4)), - dataReferences: inspectMp4(data.subarray(8)) - }; - }, - hdlr: function(data) { - var - view = new DataView(data.buffer, data.byteOffset, data.byteLength), - result = { - version: view.getUint8(0), - flags: new Uint8Array(data.subarray(1, 4)), - handlerType: parseType(data.subarray(8, 12)), - name: '' - }, - i = 8; - - // parse out the name field - for (i = 24; i < data.byteLength; i++) { - if (data[i] === 0x00) { - // the name field is null-terminated - i++; - break; - } - result.name += String.fromCharCode(data[i]); - } - // decode UTF-8 to javascript's internal representation - // see http://ecmanaut.blogspot.com/2006/07/encoding-decoding-utf8-in-javascript.html - result.name = decodeURIComponent(escape(result.name)); - - return result; - }, - mdat: function(data) { - return { - byteLength: data.byteLength, - nals: nalParse(data) - }; - }, - mdhd: function(data) { - var - view = new DataView(data.buffer, data.byteOffset, data.byteLength), - i = 4, - language, - result = { - version: view.getUint8(0), - flags: new Uint8Array(data.subarray(1, 4)), - language: '' - }; - if (result.version === 1) { - i += 4; - result.creationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes - i += 8; - result.modificationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes - i += 4; - result.timescale = view.getUint32(i); - i += 8; - result.duration = view.getUint32(i); // truncating top 4 bytes - } else { - result.creationTime = parseMp4Date(view.getUint32(i)); - i += 4; - result.modificationTime = parseMp4Date(view.getUint32(i)); - i += 4; - result.timescale = view.getUint32(i); - i += 4; - result.duration = view.getUint32(i); - } - i += 4; - // language is stored as an ISO-639-2/T code in an array of three 5-bit fields - // each field is the packed difference between its ASCII value and 0x60 - language = view.getUint16(i); - result.language += String.fromCharCode((language >> 10) + 0x60); - result.language += String.fromCharCode(((language & 0x03e0) >> 5) + 0x60); - result.language += String.fromCharCode((language & 0x1f) + 0x60); - - return result; - }, - mdia: function(data) { - return { - boxes: inspectMp4(data) - }; - }, - mfhd: function(data) { - return { - version: data[0], - flags: new Uint8Array(data.subarray(1, 4)), - sequenceNumber: (data[4] << 24) | - (data[5] << 16) | - (data[6] << 8) | - (data[7]) - }; - }, - minf: function(data) { - return { - boxes: inspectMp4(data) - }; - }, - // codingname, not a first-class box type. stsd entries share the - // same format as real boxes so the parsing infrastructure can be - // shared - mp4a: function(data) { - var - view = new DataView(data.buffer, data.byteOffset, data.byteLength), - result = { - // 6 bytes reserved - dataReferenceIndex: view.getUint16(6), - // 4 + 4 bytes reserved - channelcount: view.getUint16(16), - samplesize: view.getUint16(18), - // 2 bytes pre_defined - // 2 bytes reserved - samplerate: view.getUint16(24) + (view.getUint16(26) / 65536) - }; - - // if there are more bytes to process, assume this is an ISO/IEC - // 14496-14 MP4AudioSampleEntry and parse the ESDBox - if (data.byteLength > 28) { - result.streamDescriptor = inspectMp4(data.subarray(28))[0]; - } - return result; - }, - moof: function(data) { - return { - boxes: inspectMp4(data) - }; - }, - moov: function(data) { - return { - boxes: inspectMp4(data) - }; - }, - mvex: function(data) { - return { - boxes: inspectMp4(data) - }; - }, - mvhd: function(data) { - var - view = new DataView(data.buffer, data.byteOffset, data.byteLength), - i = 4, - result = { - version: view.getUint8(0), - flags: new Uint8Array(data.subarray(1, 4)) - }; - - if (result.version === 1) { - i += 4; - result.creationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes - i += 8; - result.modificationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes - i += 4; - result.timescale = view.getUint32(i); - i += 8; - result.duration = view.getUint32(i); // truncating top 4 bytes - } else { - result.creationTime = parseMp4Date(view.getUint32(i)); - i += 4; - result.modificationTime = parseMp4Date(view.getUint32(i)); - i += 4; - result.timescale = view.getUint32(i); - i += 4; - result.duration = view.getUint32(i); - } - i += 4; - - // convert fixed-point, base 16 back to a number - result.rate = view.getUint16(i) + (view.getUint16(i + 2) / 16); - i += 4; - result.volume = view.getUint8(i) + (view.getUint8(i + 1) / 8); - i += 2; - i += 2; - i += 2 * 4; - result.matrix = new Uint32Array(data.subarray(i, i + (9 * 4))); - i += 9 * 4; - i += 6 * 4; - result.nextTrackId = view.getUint32(i); - return result; - }, - pdin: function(data) { - var view = new DataView(data.buffer, data.byteOffset, data.byteLength); - return { - version: view.getUint8(0), - flags: new Uint8Array(data.subarray(1, 4)), - rate: view.getUint32(4), - initialDelay: view.getUint32(8) - }; - }, - sdtp: function(data) { - var - result = { - version: data[0], - flags: new Uint8Array(data.subarray(1, 4)), - samples: [] - }, i; - - for (i = 4; i < data.byteLength; i++) { - result.samples.push({ - dependsOn: (data[i] & 0x30) >> 4, - isDependedOn: (data[i] & 0x0c) >> 2, - hasRedundancy: data[i] & 0x03 - }); - } - return result; - }, - sidx: function(data) { - var view = new DataView(data.buffer, data.byteOffset, data.byteLength), - result = { - version: data[0], - flags: new Uint8Array(data.subarray(1, 4)), - references: [], - referenceId: view.getUint32(4), - timescale: view.getUint32(8), - earliestPresentationTime: view.getUint32(12), - firstOffset: view.getUint32(16) - }, - referenceCount = view.getUint16(22), - i; - - for (i = 24; referenceCount; i += 12, referenceCount--) { - result.references.push({ - referenceType: (data[i] & 0x80) >>> 7, - referencedSize: view.getUint32(i) & 0x7FFFFFFF, - subsegmentDuration: view.getUint32(i + 4), - startsWithSap: !!(data[i + 8] & 0x80), - sapType: (data[i + 8] & 0x70) >>> 4, - sapDeltaTime: view.getUint32(i + 8) & 0x0FFFFFFF - }); - } - - return result; - }, - smhd: function(data) { - return { - version: data[0], - flags: new Uint8Array(data.subarray(1, 4)), - balance: data[4] + (data[5] / 256) - }; - }, - stbl: function(data) { - return { - boxes: inspectMp4(data) - }; - }, - stco: function(data) { - var - view = new DataView(data.buffer, data.byteOffset, data.byteLength), - result = { - version: data[0], - flags: new Uint8Array(data.subarray(1, 4)), - chunkOffsets: [] - }, - entryCount = view.getUint32(4), - i; - for (i = 8; entryCount; i += 4, entryCount--) { - result.chunkOffsets.push(view.getUint32(i)); - } - return result; - }, - stsc: function(data) { - var - view = new DataView(data.buffer, data.byteOffset, data.byteLength), - entryCount = view.getUint32(4), - result = { - version: data[0], - flags: new Uint8Array(data.subarray(1, 4)), - sampleToChunks: [] - }, - i; - for (i = 8; entryCount; i += 12, entryCount--) { - result.sampleToChunks.push({ - firstChunk: view.getUint32(i), - samplesPerChunk: view.getUint32(i + 4), - sampleDescriptionIndex: view.getUint32(i + 8) - }); - } - return result; - }, - stsd: function(data) { - return { - version: data[0], - flags: new Uint8Array(data.subarray(1, 4)), - sampleDescriptions: inspectMp4(data.subarray(8)) - }; - }, - stsz: function(data) { - var - view = new DataView(data.buffer, data.byteOffset, data.byteLength), - result = { - version: data[0], - flags: new Uint8Array(data.subarray(1, 4)), - sampleSize: view.getUint32(4), - entries: [] - }, - i; - for (i = 12; i < data.byteLength; i += 4) { - result.entries.push(view.getUint32(i)); - } - return result; - }, - stts: function(data) { - var - view = new DataView(data.buffer, data.byteOffset, data.byteLength), - result = { - version: data[0], - flags: new Uint8Array(data.subarray(1, 4)), - timeToSamples: [] - }, - entryCount = view.getUint32(4), - i; - - for (i = 8; entryCount; i += 8, entryCount--) { - result.timeToSamples.push({ - sampleCount: view.getUint32(i), - sampleDelta: view.getUint32(i + 4) - }); - } - return result; - }, - styp: function(data) { - return parse$2.ftyp(data); - }, - tfdt: function(data) { - var result = { - version: data[0], - flags: new Uint8Array(data.subarray(1, 4)), - baseMediaDecodeTime: toUnsigned$1(data[4] << 24 | data[5] << 16 | data[6] << 8 | data[7]) - }; - if (result.version === 1) { - result.baseMediaDecodeTime *= Math.pow(2, 32); - result.baseMediaDecodeTime += toUnsigned$1(data[8] << 24 | data[9] << 16 | data[10] << 8 | data[11]); - } - return result; - }, - tfhd: function(data) { - var - view = new DataView(data.buffer, data.byteOffset, data.byteLength), - result = { - version: data[0], - flags: new Uint8Array(data.subarray(1, 4)), - trackId: view.getUint32(4) - }, - baseDataOffsetPresent = result.flags[2] & 0x01, - sampleDescriptionIndexPresent = result.flags[2] & 0x02, - defaultSampleDurationPresent = result.flags[2] & 0x08, - defaultSampleSizePresent = result.flags[2] & 0x10, - defaultSampleFlagsPresent = result.flags[2] & 0x20, - durationIsEmpty = result.flags[0] & 0x010000, - defaultBaseIsMoof = result.flags[0] & 0x020000, - i; - - i = 8; - if (baseDataOffsetPresent) { - i += 4; // truncate top 4 bytes - // FIXME: should we read the full 64 bits? - result.baseDataOffset = view.getUint32(12); - i += 4; - } - if (sampleDescriptionIndexPresent) { - result.sampleDescriptionIndex = view.getUint32(i); - i += 4; - } - if (defaultSampleDurationPresent) { - result.defaultSampleDuration = view.getUint32(i); - i += 4; - } - if (defaultSampleSizePresent) { - result.defaultSampleSize = view.getUint32(i); - i += 4; - } - if (defaultSampleFlagsPresent) { - result.defaultSampleFlags = view.getUint32(i); - } - if (durationIsEmpty) { - result.durationIsEmpty = true; - } - if (!baseDataOffsetPresent && defaultBaseIsMoof) { - result.baseDataOffsetIsMoof = true; - } - return result; - }, - tkhd: function(data) { - var - view = new DataView(data.buffer, data.byteOffset, data.byteLength), - i = 4, - result = { - version: view.getUint8(0), - flags: new Uint8Array(data.subarray(1, 4)) - }; - if (result.version === 1) { - i += 4; - result.creationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes - i += 8; - result.modificationTime = parseMp4Date(view.getUint32(i)); // truncating top 4 bytes - i += 4; - result.trackId = view.getUint32(i); - i += 4; - i += 8; - result.duration = view.getUint32(i); // truncating top 4 bytes - } else { - result.creationTime = parseMp4Date(view.getUint32(i)); - i += 4; - result.modificationTime = parseMp4Date(view.getUint32(i)); - i += 4; - result.trackId = view.getUint32(i); - i += 4; - i += 4; - result.duration = view.getUint32(i); - } - i += 4; - i += 2 * 4; - result.layer = view.getUint16(i); - i += 2; - result.alternateGroup = view.getUint16(i); - i += 2; - // convert fixed-point, base 16 back to a number - result.volume = view.getUint8(i) + (view.getUint8(i + 1) / 8); - i += 2; - i += 2; - result.matrix = new Uint32Array(data.subarray(i, i + (9 * 4))); - i += 9 * 4; - result.width = view.getUint16(i) + (view.getUint16(i + 2) / 65536); - i += 4; - result.height = view.getUint16(i) + (view.getUint16(i + 2) / 65536); - return result; - }, - traf: function(data) { - return { - boxes: inspectMp4(data) - }; - }, - trak: function(data) { - return { - boxes: inspectMp4(data) - }; - }, - trex: function(data) { - var view = new DataView(data.buffer, data.byteOffset, data.byteLength); - return { - version: data[0], - flags: new Uint8Array(data.subarray(1, 4)), - trackId: view.getUint32(4), - defaultSampleDescriptionIndex: view.getUint32(8), - defaultSampleDuration: view.getUint32(12), - defaultSampleSize: view.getUint32(16), - sampleDependsOn: data[20] & 0x03, - sampleIsDependedOn: (data[21] & 0xc0) >> 6, - sampleHasRedundancy: (data[21] & 0x30) >> 4, - samplePaddingValue: (data[21] & 0x0e) >> 1, - sampleIsDifferenceSample: !!(data[21] & 0x01), - sampleDegradationPriority: view.getUint16(22) - }; - }, - trun: function(data) { - var - result = { - version: data[0], - flags: new Uint8Array(data.subarray(1, 4)), - samples: [] - }, - view = new DataView(data.buffer, data.byteOffset, data.byteLength), - // Flag interpretation - dataOffsetPresent = result.flags[2] & 0x01, // compare with 2nd byte of 0x1 - firstSampleFlagsPresent = result.flags[2] & 0x04, // compare with 2nd byte of 0x4 - sampleDurationPresent = result.flags[1] & 0x01, // compare with 2nd byte of 0x100 - sampleSizePresent = result.flags[1] & 0x02, // compare with 2nd byte of 0x200 - sampleFlagsPresent = result.flags[1] & 0x04, // compare with 2nd byte of 0x400 - sampleCompositionTimeOffsetPresent = result.flags[1] & 0x08, // compare with 2nd byte of 0x800 - sampleCount = view.getUint32(4), - offset = 8, - sample; - - if (dataOffsetPresent) { - // 32 bit signed integer - result.dataOffset = view.getInt32(offset); - offset += 4; - } - - // Overrides the flags for the first sample only. The order of - // optional values will be: duration, size, compositionTimeOffset - if (firstSampleFlagsPresent && sampleCount) { - sample = { - flags: parseSampleFlags(data.subarray(offset, offset + 4)) - }; - offset += 4; - if (sampleDurationPresent) { - sample.duration = view.getUint32(offset); - offset += 4; - } - if (sampleSizePresent) { - sample.size = view.getUint32(offset); - offset += 4; - } - if (sampleCompositionTimeOffsetPresent) { - // Note: this should be a signed int if version is 1 - sample.compositionTimeOffset = view.getUint32(offset); - offset += 4; - } - result.samples.push(sample); - sampleCount--; - } - - while (sampleCount--) { - sample = {}; - if (sampleDurationPresent) { - sample.duration = view.getUint32(offset); - offset += 4; - } - if (sampleSizePresent) { - sample.size = view.getUint32(offset); - offset += 4; - } - if (sampleFlagsPresent) { - sample.flags = parseSampleFlags(data.subarray(offset, offset + 4)); - offset += 4; - } - if (sampleCompositionTimeOffsetPresent) { - // Note: this should be a signed int if version is 1 - sample.compositionTimeOffset = view.getUint32(offset); - offset += 4; - } - result.samples.push(sample); - } - return result; - }, - 'url ': function(data) { - return { - version: data[0], - flags: new Uint8Array(data.subarray(1, 4)) - }; - }, - vmhd: function(data) { - var view = new DataView(data.buffer, data.byteOffset, data.byteLength); - return { - version: data[0], - flags: new Uint8Array(data.subarray(1, 4)), - graphicsmode: view.getUint16(4), - opcolor: new Uint16Array([view.getUint16(6), - view.getUint16(8), - view.getUint16(10)]) - }; - } - }; - - -/** - * Return a javascript array of box objects parsed from an ISO base - * media file. - * @param data {Uint8Array} the binary data of the media to be inspected - * @return {array} a javascript array of potentially nested box objects - */ -inspectMp4 = function(data) { - var - i = 0, - result = [], - view, - size, - type, - end, - box; - - // Convert data from Uint8Array to ArrayBuffer, to follow Dataview API - var ab = new ArrayBuffer(data.length); - var v = new Uint8Array(ab); - for (var z = 0; z < data.length; ++z) { - v[z] = data[z]; - } - view = new DataView(ab); - - while (i < data.byteLength) { - // parse box data - size = view.getUint32(i); - type = parseType(data.subarray(i + 4, i + 8)); - end = size > 1 ? i + size : data.byteLength; - - // parse type-specific data - box = (parse$2[type] || function(data) { - return { - data: data - }; - })(data.subarray(i + 8, end)); - box.size = size; - box.type = type; - - // store this box and move to the next - result.push(box); - i = end; - } - return result; -}; - -/** - * Returns a textual representation of the javascript represtentation - * of an MP4 file. You can use it as an alternative to - * JSON.stringify() to compare inspected MP4s. - * @param inspectedMp4 {array} the parsed array of boxes in an MP4 - * file - * @param depth {number} (optional) the number of ancestor boxes of - * the elements of inspectedMp4. Assumed to be zero if unspecified. - * @return {string} a text representation of the parsed MP4 - */ -textifyMp4 = function(inspectedMp4, depth) { - var indent; - depth = depth || 0; - indent = new Array(depth * 2 + 1).join(' '); - - // iterate over all the boxes - return inspectedMp4.map(function(box, index) { - - // list the box type first at the current indentation level - return indent + box.type + '\n' + - - // the type is already included and handle child boxes separately - Object.keys(box).filter(function(key) { - return key !== 'type' && key !== 'boxes'; - - // output all the box properties - }).map(function(key) { - var prefix = indent + ' ' + key + ': ', - value = box[key]; - - // print out raw bytes as hexademical - if (value instanceof Uint8Array || value instanceof Uint32Array) { - var bytes = Array.prototype.slice.call(new Uint8Array(value.buffer, value.byteOffset, value.byteLength)) - .map(function(byte) { - return ' ' + ('00' + byte.toString(16)).slice(-2); - }).join('').match(/.{1,24}/g); - if (!bytes) { - return prefix + '<>'; - } - if (bytes.length === 1) { - return prefix + '<' + bytes.join('').slice(1) + '>'; - } - return prefix + '<\n' + bytes.map(function(line) { - return indent + ' ' + line; - }).join('\n') + '\n' + indent + ' >'; - } - - // stringify generic objects - return prefix + - JSON.stringify(value, null, 2) - .split('\n').map(function(line, index) { - if (index === 0) { - return line; - } - return indent + ' ' + line; - }).join('\n'); - }).join('\n') + - - // recursively textify the child boxes - (box.boxes ? '\n' + textifyMp4(box.boxes, depth + 1) : ''); - }).join('\n'); -}; - -var mp4Inspector = { - inspect: inspectMp4, - textify: textifyMp4, - parseType: parseType, - findBox: findBox, - parseTraf: parse$2.traf, - parseTfdt: parse$2.tfdt, - parseHdlr: parse$2.hdlr, - parseTfhd: parse$2.tfhd, - parseTrun: parse$2.trun, - parseSidx: parse$2.sidx -}; - -var toUnsigned$2 = bin.toUnsigned; -var toHexString$1 = bin.toHexString; - -var timescale, startTime, compositionStartTime, getVideoTrackIds, getTracks; - -/** - * Parses an MP4 initialization segment and extracts the timescale - * values for any declared tracks. Timescale values indicate the - * number of clock ticks per second to assume for time-based values - * elsewhere in the MP4. - * - * To determine the start time of an MP4, you need two pieces of - * information: the timescale unit and the earliest base media decode - * time. Multiple timescales can be specified within an MP4 but the - * base media decode time is always expressed in the timescale from - * the media header box for the track: - * ``` - * moov > trak > mdia > mdhd.timescale - * ``` - * @param init {Uint8Array} the bytes of the init segment - * @return {object} a hash of track ids to timescale values or null if - * the init segment is malformed. - */ -timescale = function(init) { - var - result = {}, - traks = mp4Inspector.findBox(init, ['moov', 'trak']); - - // mdhd timescale - return traks.reduce(function(result, trak) { - var tkhd, version, index, id, mdhd; - - tkhd = mp4Inspector.findBox(trak, ['tkhd'])[0]; - if (!tkhd) { - return null; - } - version = tkhd[0]; - index = version === 0 ? 12 : 20; - id = toUnsigned$2(tkhd[index] << 24 | - tkhd[index + 1] << 16 | - tkhd[index + 2] << 8 | - tkhd[index + 3]); - - mdhd = mp4Inspector.findBox(trak, ['mdia', 'mdhd'])[0]; - if (!mdhd) { - return null; - } - version = mdhd[0]; - index = version === 0 ? 12 : 20; - result[id] = toUnsigned$2(mdhd[index] << 24 | - mdhd[index + 1] << 16 | - mdhd[index + 2] << 8 | - mdhd[index + 3]); - return result; - }, result); -}; - -/** - * Determine the base media decode start time, in seconds, for an MP4 - * fragment. If multiple fragments are specified, the earliest time is - * returned. - * - * The base media decode time can be parsed from track fragment - * metadata: - * ``` - * moof > traf > tfdt.baseMediaDecodeTime - * ``` - * It requires the timescale value from the mdhd to interpret. - * - * @param timescale {object} a hash of track ids to timescale values. - * @return {number} the earliest base media decode start time for the - * fragment, in seconds - */ -startTime = function(timescale, fragment) { - var trafs, baseTimes, result; - - // we need info from two childrend of each track fragment box - trafs = mp4Inspector.findBox(fragment, ['moof', 'traf']); - - // determine the start times for each track - baseTimes = [].concat.apply([], trafs.map(function(traf) { - return mp4Inspector.findBox(traf, ['tfhd']).map(function(tfhd) { - var id, scale, baseTime; - - // get the track id from the tfhd - id = toUnsigned$2(tfhd[4] << 24 | - tfhd[5] << 16 | - tfhd[6] << 8 | - tfhd[7]); - // assume a 90kHz clock if no timescale was specified - scale = timescale[id] || 90e3; - - // get the base media decode time from the tfdt - baseTime = mp4Inspector.findBox(traf, ['tfdt']).map(function(tfdt) { - var version, result; - - version = tfdt[0]; - result = toUnsigned$2(tfdt[4] << 24 | - tfdt[5] << 16 | - tfdt[6] << 8 | - tfdt[7]); - if (version === 1) { - result *= Math.pow(2, 32); - result += toUnsigned$2(tfdt[8] << 24 | - tfdt[9] << 16 | - tfdt[10] << 8 | - tfdt[11]); - } - return result; - })[0]; - baseTime = baseTime || Infinity; - - // convert base time to seconds - return baseTime / scale; - }); - })); - - // return the minimum - result = Math.min.apply(null, baseTimes); - return isFinite(result) ? result : 0; -}; - -/** - * Determine the composition start, in seconds, for an MP4 - * fragment. - * - * The composition start time of a fragment can be calculated using the base - * media decode time, composition time offset, and timescale, as follows: - * - * compositionStartTime = (baseMediaDecodeTime + compositionTimeOffset) / timescale - * - * All of the aforementioned information is contained within a media fragment's - * `traf` box, except for timescale info, which comes from the initialization - * segment, so a track id (also contained within a `traf`) is also necessary to - * associate it with a timescale - * - * - * @param timescales {object} - a hash of track ids to timescale values. - * @param fragment {Unit8Array} - the bytes of a media segment - * @return {number} the composition start time for the fragment, in seconds - **/ -compositionStartTime = function(timescales, fragment) { - var trafBoxes = mp4Inspector.findBox(fragment, ['moof', 'traf']); - var baseMediaDecodeTime = 0; - var compositionTimeOffset = 0; - var trackId; - - if (trafBoxes && trafBoxes.length) { - // The spec states that track run samples contained within a `traf` box are contiguous, but - // it does not explicitly state whether the `traf` boxes themselves are contiguous. - // We will assume that they are, so we only need the first to calculate start time. - var parsedTraf = mp4Inspector.parseTraf(trafBoxes[0]); - - for (var i = 0; i < parsedTraf.boxes.length; i++) { - if (parsedTraf.boxes[i].type === 'tfhd') { - trackId = parsedTraf.boxes[i].trackId; - } else if (parsedTraf.boxes[i].type === 'tfdt') { - baseMediaDecodeTime = parsedTraf.boxes[i].baseMediaDecodeTime; - } else if (parsedTraf.boxes[i].type === 'trun' && parsedTraf.boxes[i].samples.length) { - compositionTimeOffset = parsedTraf.boxes[i].samples[0].compositionTimeOffset || 0; - } - } - } - - // Get timescale for this specific track. Assume a 90kHz clock if no timescale was - // specified. - var timescale = timescales[trackId] || 90e3; - - // return the composition start time, in seconds - return (baseMediaDecodeTime + compositionTimeOffset) / timescale; -}; - -/** - * Find the trackIds of the video tracks in this source. - * Found by parsing the Handler Reference and Track Header Boxes: - * moov > trak > mdia > hdlr - * moov > trak > tkhd - * - * @param {Uint8Array} init - The bytes of the init segment for this source - * @return {Number[]} A list of trackIds - * - * @see ISO-BMFF-12/2015, Section 8.4.3 - **/ -getVideoTrackIds = function(init) { - var traks = mp4Inspector.findBox(init, ['moov', 'trak']); - var videoTrackIds = []; - - traks.forEach(function(trak) { - var hdlrs = mp4Inspector.findBox(trak, ['mdia', 'hdlr']); - var tkhds = mp4Inspector.findBox(trak, ['tkhd']); - - hdlrs.forEach(function(hdlr, index) { - var handlerType = mp4Inspector.parseType(hdlr.subarray(8, 12)); - var tkhd = tkhds[index]; - var view; - var version; - var trackId; - - if (handlerType === 'vide') { - view = new DataView(tkhd.buffer, tkhd.byteOffset, tkhd.byteLength); - version = view.getUint8(0); - trackId = (version === 0) ? view.getUint32(12) : view.getUint32(20); - - videoTrackIds.push(trackId); - } - }); - }); - - return videoTrackIds; -}; - -/** - * Get all the video, audio, and hint tracks from a non fragmented - * mp4 segment - */ -getTracks = function(init) { - var traks = mp4Inspector.findBox(init, ['moov', 'trak']); - var tracks = []; - - traks.forEach(function(trak) { - var track = {}; - var tkhd = mp4Inspector.findBox(trak, ['tkhd'])[0]; - var view, version; - - // id - if (tkhd) { - view = new DataView(tkhd.buffer, tkhd.byteOffset, tkhd.byteLength); - version = view.getUint8(0); - - track.id = (version === 0) ? view.getUint32(12) : view.getUint32(20); - } - - var hdlr = mp4Inspector.findBox(trak, ['mdia', 'hdlr'])[0]; - - // type - if (hdlr) { - var type = mp4Inspector.parseType(hdlr.subarray(8, 12)); - - if (type === 'vide') { - track.type = 'video'; - } else if (type === 'soun') { - track.type = 'audio'; - } else { - track.type = type; - } - } - - - // codec - var stsd = mp4Inspector.findBox(trak, ['mdia', 'minf', 'stbl', 'stsd'])[0]; - - if (stsd) { - var sampleDescriptions = stsd.subarray(8); - // gives the codec type string - track.codec = mp4Inspector.parseType(sampleDescriptions.subarray(4, 8)); - - var codecBox = mp4Inspector.findBox(sampleDescriptions, [track.codec])[0]; - var codecConfig, codecConfigType; - - if (codecBox) { - // https://tools.ietf.org/html/rfc6381#section-3.3 - if ((/^[a-z]vc[1-9]$/i).test(track.codec)) { - // we don't need anything but the "config" parameter of the - // avc1 codecBox - codecConfig = codecBox.subarray(78); - codecConfigType = mp4Inspector.parseType(codecConfig.subarray(4, 8)); - - if (codecConfigType === 'avcC' && codecConfig.length > 11) { - track.codec += '.'; - - // left padded with zeroes for single digit hex - // profile idc - track.codec += toHexString$1(codecConfig[9]); - // the byte containing the constraint_set flags - track.codec += toHexString$1(codecConfig[10]); - // level idc - track.codec += toHexString$1(codecConfig[11]); - } else { - // TODO: show a warning that we couldn't parse the codec - // and are using the default - track.codec = 'avc1.4d400d'; - } - } else if ((/^mp4[a,v]$/i).test(track.codec)) { - // we do not need anything but the streamDescriptor of the mp4a codecBox - codecConfig = codecBox.subarray(28); - codecConfigType = mp4Inspector.parseType(codecConfig.subarray(4, 8)); - - if (codecConfigType === 'esds' && codecConfig.length > 20 && codecConfig[19] !== 0) { - track.codec += '.' + toHexString$1(codecConfig[19]); - // this value is only a single digit - track.codec += '.' + toHexString$1((codecConfig[20] >>> 2) & 0x3f).replace(/^0/, ''); - } else { - // TODO: show a warning that we couldn't parse the codec - // and are using the default - track.codec = 'mp4a.40.2'; - } - } else ; - } - } - - var mdhd = mp4Inspector.findBox(trak, ['mdia', 'mdhd'])[0]; - - if (mdhd && tkhd) { - var index = version === 0 ? 12 : 20; - - track.timescale = toUnsigned$2(mdhd[index] << 24 | - mdhd[index + 1] << 16 | - mdhd[index + 2] << 8 | - mdhd[index + 3]); - } - - tracks.push(track); - }); - - return tracks; -}; - -var probe = { - // export mp4 inspector's findBox and parseType for backwards compatibility - findBox: mp4Inspector.findBox, - parseType: mp4Inspector.parseType, - timescale: timescale, - startTime: startTime, - compositionStartTime: compositionStartTime, - videoTrackIds: getVideoTrackIds, - tracks: getTracks -}; - -/** - * mux.js - * - * Copyright (c) Brightcove - * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE - * - * Reads in-band caption information from a video elementary - * stream. Captions must follow the CEA-708 standard for injection - * into an MPEG-2 transport streams. - * @see https://en.wikipedia.org/wiki/CEA-708 - * @see https://www.gpo.gov/fdsys/pkg/CFR-2007-title47-vol1/pdf/CFR-2007-title47-vol1-sec15-119.pdf - */ - -// Supplemental enhancement information (SEI) NAL units have a -// payload type field to indicate how they are to be -// interpreted. CEAS-708 caption content is always transmitted with -// payload type 0x04. -var USER_DATA_REGISTERED_ITU_T_T35 = 4, - RBSP_TRAILING_BITS = 128; - -/** - * Parse a supplemental enhancement information (SEI) NAL unit. - * Stops parsing once a message of type ITU T T35 has been found. - * - * @param bytes {Uint8Array} the bytes of a SEI NAL unit - * @return {object} the parsed SEI payload - * @see Rec. ITU-T H.264, 7.3.2.3.1 - */ -var parseSei = function(bytes) { - var - i = 0, - result = { - payloadType: -1, - payloadSize: 0 - }, - payloadType = 0, - payloadSize = 0; - - // go through the sei_rbsp parsing each each individual sei_message - while (i < bytes.byteLength) { - // stop once we have hit the end of the sei_rbsp - if (bytes[i] === RBSP_TRAILING_BITS) { - break; - } - - // Parse payload type - while (bytes[i] === 0xFF) { - payloadType += 255; - i++; - } - payloadType += bytes[i++]; - - // Parse payload size - while (bytes[i] === 0xFF) { - payloadSize += 255; - i++; - } - payloadSize += bytes[i++]; - - // this sei_message is a 608/708 caption so save it and break - // there can only ever be one caption message in a frame's sei - if (!result.payload && payloadType === USER_DATA_REGISTERED_ITU_T_T35) { - var userIdentifier = String.fromCharCode( - bytes[i + 3], - bytes[i + 4], - bytes[i + 5], - bytes[i + 6]); - - if (userIdentifier === 'GA94') { - result.payloadType = payloadType; - result.payloadSize = payloadSize; - result.payload = bytes.subarray(i, i + payloadSize); - break; - } else { - result.payload = void 0; - } - } - - // skip the payload and parse the next message - i += payloadSize; - payloadType = 0; - payloadSize = 0; - } - - return result; -}; - -// see ANSI/SCTE 128-1 (2013), section 8.1 -var parseUserData = function(sei) { - // itu_t_t35_contry_code must be 181 (United States) for - // captions - if (sei.payload[0] !== 181) { - return null; - } - - // itu_t_t35_provider_code should be 49 (ATSC) for captions - if (((sei.payload[1] << 8) | sei.payload[2]) !== 49) { - return null; - } - - // the user_identifier should be "GA94" to indicate ATSC1 data - if (String.fromCharCode(sei.payload[3], - sei.payload[4], - sei.payload[5], - sei.payload[6]) !== 'GA94') { - return null; - } - - // finally, user_data_type_code should be 0x03 for caption data - if (sei.payload[7] !== 0x03) { - return null; - } - - // return the user_data_type_structure and strip the trailing - // marker bits - return sei.payload.subarray(8, sei.payload.length - 1); -}; - -// see CEA-708-D, section 4.4 -var parseCaptionPackets = function(pts, userData) { - var results = [], i, count, offset, data; - - // if this is just filler, return immediately - if (!(userData[0] & 0x40)) { - return results; - } - - // parse out the cc_data_1 and cc_data_2 fields - count = userData[0] & 0x1f; - for (i = 0; i < count; i++) { - offset = i * 3; - data = { - type: userData[offset + 2] & 0x03, - pts: pts - }; - - // capture cc data when cc_valid is 1 - if (userData[offset + 2] & 0x04) { - data.ccData = (userData[offset + 3] << 8) | userData[offset + 4]; - results.push(data); - } - } - return results; -}; - -var discardEmulationPreventionBytes = function(data) { - var - length = data.byteLength, - emulationPreventionBytesPositions = [], - i = 1, - newLength, newData; - - // Find all `Emulation Prevention Bytes` - while (i < length - 2) { - if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0x03) { - emulationPreventionBytesPositions.push(i + 2); - i += 2; - } else { - i++; - } - } - - // If no Emulation Prevention Bytes were found just return the original - // array - if (emulationPreventionBytesPositions.length === 0) { - return data; - } - - // Create a new array to hold the NAL unit data - newLength = length - emulationPreventionBytesPositions.length; - newData = new Uint8Array(newLength); - var sourceIndex = 0; - - for (i = 0; i < newLength; sourceIndex++, i++) { - if (sourceIndex === emulationPreventionBytesPositions[0]) { - // Skip this byte - sourceIndex++; - // Remove this position index - emulationPreventionBytesPositions.shift(); - } - newData[i] = data[sourceIndex]; - } - - return newData; -}; - -// exports -var captionPacketParser = { - parseSei: parseSei, - parseUserData: parseUserData, - parseCaptionPackets: parseCaptionPackets, - discardEmulationPreventionBytes: discardEmulationPreventionBytes, - USER_DATA_REGISTERED_ITU_T_T35: USER_DATA_REGISTERED_ITU_T_T35 -}; - -/** - * mux.js - * - * Copyright (c) Brightcove - * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE - * - * A lightweight readable stream implemention that handles event dispatching. - * Objects that inherit from streams should call init in their constructors. - */ - -var Stream$1 = function() { - this.init = function() { - var listeners = {}; - /** - * Add a listener for a specified event type. - * @param type {string} the event name - * @param listener {function} the callback to be invoked when an event of - * the specified type occurs - */ - this.on = function(type, listener) { - if (!listeners[type]) { - listeners[type] = []; - } - listeners[type] = listeners[type].concat(listener); - }; - /** - * Remove a listener for a specified event type. - * @param type {string} the event name - * @param listener {function} a function previously registered for this - * type of event through `on` - */ - this.off = function(type, listener) { - var index; - if (!listeners[type]) { - return false; - } - index = listeners[type].indexOf(listener); - listeners[type] = listeners[type].slice(); - listeners[type].splice(index, 1); - return index > -1; - }; - /** - * Trigger an event of the specified type on this stream. Any additional - * arguments to this function are passed as parameters to event listeners. - * @param type {string} the event name - */ - this.trigger = function(type) { - var callbacks, i, length, args; - callbacks = listeners[type]; - if (!callbacks) { - return; - } - // Slicing the arguments on every invocation of this method - // can add a significant amount of overhead. Avoid the - // intermediate object creation for the common case of a - // single callback argument - if (arguments.length === 2) { - length = callbacks.length; - for (i = 0; i < length; ++i) { - callbacks[i].call(this, arguments[1]); - } - } else { - args = []; - i = arguments.length; - for (i = 1; i < arguments.length; ++i) { - args.push(arguments[i]); - } - length = callbacks.length; - for (i = 0; i < length; ++i) { - callbacks[i].apply(this, args); - } - } - }; - /** - * Destroys the stream and cleans up. - */ - this.dispose = function() { - listeners = {}; - }; - }; -}; - -/** - * Forwards all `data` events on this stream to the destination stream. The - * destination stream should provide a method `push` to receive the data - * events as they arrive. - * @param destination {stream} the stream that will receive all `data` events - * @param autoFlush {boolean} if false, we will not call `flush` on the destination - * when the current stream emits a 'done' event - * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options - */ -Stream$1.prototype.pipe = function(destination) { - this.on('data', function(data) { - destination.push(data); - }); - - this.on('done', function(flushSource) { - destination.flush(flushSource); - }); - - this.on('partialdone', function(flushSource) { - destination.partialFlush(flushSource); - }); - - this.on('endedtimeline', function(flushSource) { - destination.endTimeline(flushSource); - }); - - this.on('reset', function(flushSource) { - destination.reset(flushSource); - }); - - return destination; -}; - -// Default stream functions that are expected to be overridden to perform -// actual work. These are provided by the prototype as a sort of no-op -// implementation so that we don't have to check for their existence in the -// `pipe` function above. -Stream$1.prototype.push = function(data) { - this.trigger('data', data); -}; - -Stream$1.prototype.flush = function(flushSource) { - this.trigger('done', flushSource); -}; - -Stream$1.prototype.partialFlush = function(flushSource) { - this.trigger('partialdone', flushSource); -}; - -Stream$1.prototype.endTimeline = function(flushSource) { - this.trigger('endedtimeline', flushSource); -}; - -Stream$1.prototype.reset = function(flushSource) { - this.trigger('reset', flushSource); -}; - -var stream = Stream$1; - -// ----------------- -// Link To Transport -// ----------------- - - - - -var CaptionStream = function() { - - CaptionStream.prototype.init.call(this); - - this.captionPackets_ = []; - - this.ccStreams_ = [ - new Cea608Stream(0, 0), // eslint-disable-line no-use-before-define - new Cea608Stream(0, 1), // eslint-disable-line no-use-before-define - new Cea608Stream(1, 0), // eslint-disable-line no-use-before-define - new Cea608Stream(1, 1) // eslint-disable-line no-use-before-define - ]; - - this.reset(); - - // forward data and done events from CCs to this CaptionStream - this.ccStreams_.forEach(function(cc) { - cc.on('data', this.trigger.bind(this, 'data')); - cc.on('partialdone', this.trigger.bind(this, 'partialdone')); - cc.on('done', this.trigger.bind(this, 'done')); - }, this); - -}; - -CaptionStream.prototype = new stream(); -CaptionStream.prototype.push = function(event) { - var sei, userData, newCaptionPackets; - - // only examine SEI NALs - if (event.nalUnitType !== 'sei_rbsp') { - return; - } - - // parse the sei - sei = captionPacketParser.parseSei(event.escapedRBSP); - - // ignore everything but user_data_registered_itu_t_t35 - if (sei.payloadType !== captionPacketParser.USER_DATA_REGISTERED_ITU_T_T35) { - return; - } - - // parse out the user data payload - userData = captionPacketParser.parseUserData(sei); - - // ignore unrecognized userData - if (!userData) { - return; - } - - // Sometimes, the same segment # will be downloaded twice. To stop the - // caption data from being processed twice, we track the latest dts we've - // received and ignore everything with a dts before that. However, since - // data for a specific dts can be split across packets on either side of - // a segment boundary, we need to make sure we *don't* ignore the packets - // from the *next* segment that have dts === this.latestDts_. By constantly - // tracking the number of packets received with dts === this.latestDts_, we - // know how many should be ignored once we start receiving duplicates. - if (event.dts < this.latestDts_) { - // We've started getting older data, so set the flag. - this.ignoreNextEqualDts_ = true; - return; - } else if ((event.dts === this.latestDts_) && (this.ignoreNextEqualDts_)) { - this.numSameDts_--; - if (!this.numSameDts_) { - // We've received the last duplicate packet, time to start processing again - this.ignoreNextEqualDts_ = false; - } - return; - } - - // parse out CC data packets and save them for later - newCaptionPackets = captionPacketParser.parseCaptionPackets(event.pts, userData); - this.captionPackets_ = this.captionPackets_.concat(newCaptionPackets); - if (this.latestDts_ !== event.dts) { - this.numSameDts_ = 0; - } - this.numSameDts_++; - this.latestDts_ = event.dts; -}; - -CaptionStream.prototype.flushCCStreams = function(flushType) { - this.ccStreams_.forEach(function(cc) { - return flushType === 'flush' ? cc.flush() : cc.partialFlush(); - }, this); -}; - -CaptionStream.prototype.flushStream = function(flushType) { - // make sure we actually parsed captions before proceeding - if (!this.captionPackets_.length) { - this.flushCCStreams(flushType); - return; - } - - // In Chrome, the Array#sort function is not stable so add a - // presortIndex that we can use to ensure we get a stable-sort - this.captionPackets_.forEach(function(elem, idx) { - elem.presortIndex = idx; - }); - - // sort caption byte-pairs based on their PTS values - this.captionPackets_.sort(function(a, b) { - if (a.pts === b.pts) { - return a.presortIndex - b.presortIndex; - } - return a.pts - b.pts; - }); - - this.captionPackets_.forEach(function(packet) { - if (packet.type < 2) { - // Dispatch packet to the right Cea608Stream - this.dispatchCea608Packet(packet); - } - // this is where an 'else' would go for a dispatching packets - // to a theoretical Cea708Stream that handles SERVICEn data - }, this); - - this.captionPackets_.length = 0; - this.flushCCStreams(flushType); -}; - -CaptionStream.prototype.flush = function() { - return this.flushStream('flush'); -}; - -// Only called if handling partial data -CaptionStream.prototype.partialFlush = function() { - return this.flushStream('partialFlush'); -}; - -CaptionStream.prototype.reset = function() { - this.latestDts_ = null; - this.ignoreNextEqualDts_ = false; - this.numSameDts_ = 0; - this.activeCea608Channel_ = [null, null]; - this.ccStreams_.forEach(function(ccStream) { - ccStream.reset(); - }); -}; - -// From the CEA-608 spec: -/* - * When XDS sub-packets are interleaved with other services, the end of each sub-packet shall be followed - * by a control pair to change to a different service. When any of the control codes from 0x10 to 0x1F is - * used to begin a control code pair, it indicates the return to captioning or Text data. The control code pair - * and subsequent data should then be processed according to the FCC rules. It may be necessary for the - * line 21 data encoder to automatically insert a control code pair (i.e. RCL, RU2, RU3, RU4, RDC, or RTD) - * to switch to captioning or Text. -*/ -// With that in mind, we ignore any data between an XDS control code and a -// subsequent closed-captioning control code. -CaptionStream.prototype.dispatchCea608Packet = function(packet) { - // NOTE: packet.type is the CEA608 field - if (this.setsTextOrXDSActive(packet)) { - this.activeCea608Channel_[packet.type] = null; - } else if (this.setsChannel1Active(packet)) { - this.activeCea608Channel_[packet.type] = 0; - } else if (this.setsChannel2Active(packet)) { - this.activeCea608Channel_[packet.type] = 1; - } - if (this.activeCea608Channel_[packet.type] === null) { - // If we haven't received anything to set the active channel, or the - // packets are Text/XDS data, discard the data; we don't want jumbled - // captions - return; - } - this.ccStreams_[(packet.type << 1) + this.activeCea608Channel_[packet.type]].push(packet); -}; - -CaptionStream.prototype.setsChannel1Active = function(packet) { - return ((packet.ccData & 0x7800) === 0x1000); -}; -CaptionStream.prototype.setsChannel2Active = function(packet) { - return ((packet.ccData & 0x7800) === 0x1800); -}; -CaptionStream.prototype.setsTextOrXDSActive = function(packet) { - return ((packet.ccData & 0x7100) === 0x0100) || - ((packet.ccData & 0x78fe) === 0x102a) || - ((packet.ccData & 0x78fe) === 0x182a); -}; - -// ---------------------- -// Session to Application -// ---------------------- - -// This hash maps non-ASCII, special, and extended character codes to their -// proper Unicode equivalent. The first keys that are only a single byte -// are the non-standard ASCII characters, which simply map the CEA608 byte -// to the standard ASCII/Unicode. The two-byte keys that follow are the CEA608 -// character codes, but have their MSB bitmasked with 0x03 so that a lookup -// can be performed regardless of the field and data channel on which the -// character code was received. -var CHARACTER_TRANSLATION = { - 0x2a: 0xe1, // á - 0x5c: 0xe9, // é - 0x5e: 0xed, // í - 0x5f: 0xf3, // ó - 0x60: 0xfa, // ú - 0x7b: 0xe7, // ç - 0x7c: 0xf7, // ÷ - 0x7d: 0xd1, // Ñ - 0x7e: 0xf1, // ñ - 0x7f: 0x2588, // █ - 0x0130: 0xae, // ® - 0x0131: 0xb0, // ° - 0x0132: 0xbd, // ½ - 0x0133: 0xbf, // ¿ - 0x0134: 0x2122, // ™ - 0x0135: 0xa2, // ¢ - 0x0136: 0xa3, // £ - 0x0137: 0x266a, // ♪ - 0x0138: 0xe0, // à - 0x0139: 0xa0, // - 0x013a: 0xe8, // è - 0x013b: 0xe2, // â - 0x013c: 0xea, // ê - 0x013d: 0xee, // î - 0x013e: 0xf4, // ô - 0x013f: 0xfb, // û - 0x0220: 0xc1, // Á - 0x0221: 0xc9, // É - 0x0222: 0xd3, // Ó - 0x0223: 0xda, // Ú - 0x0224: 0xdc, // Ü - 0x0225: 0xfc, // ü - 0x0226: 0x2018, // ‘ - 0x0227: 0xa1, // ¡ - 0x0228: 0x2a, // * - 0x0229: 0x27, // ' - 0x022a: 0x2014, // — - 0x022b: 0xa9, // © - 0x022c: 0x2120, // ℠ - 0x022d: 0x2022, // • - 0x022e: 0x201c, // “ - 0x022f: 0x201d, // ” - 0x0230: 0xc0, // À - 0x0231: 0xc2, // Â - 0x0232: 0xc7, // Ç - 0x0233: 0xc8, // È - 0x0234: 0xca, // Ê - 0x0235: 0xcb, // Ë - 0x0236: 0xeb, // ë - 0x0237: 0xce, // Î - 0x0238: 0xcf, // Ï - 0x0239: 0xef, // ï - 0x023a: 0xd4, // Ô - 0x023b: 0xd9, // Ù - 0x023c: 0xf9, // ù - 0x023d: 0xdb, // Û - 0x023e: 0xab, // « - 0x023f: 0xbb, // » - 0x0320: 0xc3, // Ã - 0x0321: 0xe3, // ã - 0x0322: 0xcd, // Í - 0x0323: 0xcc, // Ì - 0x0324: 0xec, // ì - 0x0325: 0xd2, // Ò - 0x0326: 0xf2, // ò - 0x0327: 0xd5, // Õ - 0x0328: 0xf5, // õ - 0x0329: 0x7b, // { - 0x032a: 0x7d, // } - 0x032b: 0x5c, // \ - 0x032c: 0x5e, // ^ - 0x032d: 0x5f, // _ - 0x032e: 0x7c, // | - 0x032f: 0x7e, // ~ - 0x0330: 0xc4, // Ä - 0x0331: 0xe4, // ä - 0x0332: 0xd6, // Ö - 0x0333: 0xf6, // ö - 0x0334: 0xdf, // ß - 0x0335: 0xa5, // ¥ - 0x0336: 0xa4, // ¤ - 0x0337: 0x2502, // │ - 0x0338: 0xc5, // Å - 0x0339: 0xe5, // å - 0x033a: 0xd8, // Ø - 0x033b: 0xf8, // ø - 0x033c: 0x250c, // ┌ - 0x033d: 0x2510, // ┐ - 0x033e: 0x2514, // └ - 0x033f: 0x2518 // ┘ -}; - -var getCharFromCode = function(code) { - if (code === null) { - return ''; - } - code = CHARACTER_TRANSLATION[code] || code; - return String.fromCharCode(code); -}; - -// the index of the last row in a CEA-608 display buffer -var BOTTOM_ROW = 14; - -// This array is used for mapping PACs -> row #, since there's no way of -// getting it through bit logic. -var ROWS = [0x1100, 0x1120, 0x1200, 0x1220, 0x1500, 0x1520, 0x1600, 0x1620, - 0x1700, 0x1720, 0x1000, 0x1300, 0x1320, 0x1400, 0x1420]; - -// CEA-608 captions are rendered onto a 34x15 matrix of character -// cells. The "bottom" row is the last element in the outer array. -var createDisplayBuffer = function() { - var result = [], i = BOTTOM_ROW + 1; - while (i--) { - result.push(''); - } - return result; -}; - -var Cea608Stream = function(field, dataChannel) { - Cea608Stream.prototype.init.call(this); - - this.field_ = field || 0; - this.dataChannel_ = dataChannel || 0; - - this.name_ = 'CC' + (((this.field_ << 1) | this.dataChannel_) + 1); - - this.setConstants(); - this.reset(); - - this.push = function(packet) { - var data, swap, char0, char1, text; - // remove the parity bits - data = packet.ccData & 0x7f7f; - - // ignore duplicate control codes; the spec demands they're sent twice - if (data === this.lastControlCode_) { - this.lastControlCode_ = null; - return; - } - - // Store control codes - if ((data & 0xf000) === 0x1000) { - this.lastControlCode_ = data; - } else if (data !== this.PADDING_) { - this.lastControlCode_ = null; - } - - char0 = data >>> 8; - char1 = data & 0xff; - - if (data === this.PADDING_) { - return; - - } else if (data === this.RESUME_CAPTION_LOADING_) { - this.mode_ = 'popOn'; - - } else if (data === this.END_OF_CAPTION_) { - // If an EOC is received while in paint-on mode, the displayed caption - // text should be swapped to non-displayed memory as if it was a pop-on - // caption. Because of that, we should explicitly switch back to pop-on - // mode - this.mode_ = 'popOn'; - this.clearFormatting(packet.pts); - // if a caption was being displayed, it's gone now - this.flushDisplayed(packet.pts); - - // flip memory - swap = this.displayed_; - this.displayed_ = this.nonDisplayed_; - this.nonDisplayed_ = swap; - - // start measuring the time to display the caption - this.startPts_ = packet.pts; - - } else if (data === this.ROLL_UP_2_ROWS_) { - this.rollUpRows_ = 2; - this.setRollUp(packet.pts); - } else if (data === this.ROLL_UP_3_ROWS_) { - this.rollUpRows_ = 3; - this.setRollUp(packet.pts); - } else if (data === this.ROLL_UP_4_ROWS_) { - this.rollUpRows_ = 4; - this.setRollUp(packet.pts); - } else if (data === this.CARRIAGE_RETURN_) { - this.clearFormatting(packet.pts); - this.flushDisplayed(packet.pts); - this.shiftRowsUp_(); - this.startPts_ = packet.pts; - - } else if (data === this.BACKSPACE_) { - if (this.mode_ === 'popOn') { - this.nonDisplayed_[this.row_] = this.nonDisplayed_[this.row_].slice(0, -1); - } else { - this.displayed_[this.row_] = this.displayed_[this.row_].slice(0, -1); - } - } else if (data === this.ERASE_DISPLAYED_MEMORY_) { - this.flushDisplayed(packet.pts); - this.displayed_ = createDisplayBuffer(); - } else if (data === this.ERASE_NON_DISPLAYED_MEMORY_) { - this.nonDisplayed_ = createDisplayBuffer(); - - } else if (data === this.RESUME_DIRECT_CAPTIONING_) { - if (this.mode_ !== 'paintOn') { - // NOTE: This should be removed when proper caption positioning is - // implemented - this.flushDisplayed(packet.pts); - this.displayed_ = createDisplayBuffer(); - } - this.mode_ = 'paintOn'; - this.startPts_ = packet.pts; - - // Append special characters to caption text - } else if (this.isSpecialCharacter(char0, char1)) { - // Bitmask char0 so that we can apply character transformations - // regardless of field and data channel. - // Then byte-shift to the left and OR with char1 so we can pass the - // entire character code to `getCharFromCode`. - char0 = (char0 & 0x03) << 8; - text = getCharFromCode(char0 | char1); - this[this.mode_](packet.pts, text); - this.column_++; - - // Append extended characters to caption text - } else if (this.isExtCharacter(char0, char1)) { - // Extended characters always follow their "non-extended" equivalents. - // IE if a "è" is desired, you'll always receive "eè"; non-compliant - // decoders are supposed to drop the "è", while compliant decoders - // backspace the "e" and insert "è". - - // Delete the previous character - if (this.mode_ === 'popOn') { - this.nonDisplayed_[this.row_] = this.nonDisplayed_[this.row_].slice(0, -1); - } else { - this.displayed_[this.row_] = this.displayed_[this.row_].slice(0, -1); - } - - // Bitmask char0 so that we can apply character transformations - // regardless of field and data channel. - // Then byte-shift to the left and OR with char1 so we can pass the - // entire character code to `getCharFromCode`. - char0 = (char0 & 0x03) << 8; - text = getCharFromCode(char0 | char1); - this[this.mode_](packet.pts, text); - this.column_++; - - // Process mid-row codes - } else if (this.isMidRowCode(char0, char1)) { - // Attributes are not additive, so clear all formatting - this.clearFormatting(packet.pts); - - // According to the standard, mid-row codes - // should be replaced with spaces, so add one now - this[this.mode_](packet.pts, ' '); - this.column_++; - - if ((char1 & 0xe) === 0xe) { - this.addFormatting(packet.pts, ['i']); - } - - if ((char1 & 0x1) === 0x1) { - this.addFormatting(packet.pts, ['u']); - } - - // Detect offset control codes and adjust cursor - } else if (this.isOffsetControlCode(char0, char1)) { - // Cursor position is set by indent PAC (see below) in 4-column - // increments, with an additional offset code of 1-3 to reach any - // of the 32 columns specified by CEA-608. So all we need to do - // here is increment the column cursor by the given offset. - this.column_ += (char1 & 0x03); - - // Detect PACs (Preamble Address Codes) - } else if (this.isPAC(char0, char1)) { - - // There's no logic for PAC -> row mapping, so we have to just - // find the row code in an array and use its index :( - var row = ROWS.indexOf(data & 0x1f20); - - // Configure the caption window if we're in roll-up mode - if (this.mode_ === 'rollUp') { - // This implies that the base row is incorrectly set. - // As per the recommendation in CEA-608(Base Row Implementation), defer to the number - // of roll-up rows set. - if (row - this.rollUpRows_ + 1 < 0) { - row = this.rollUpRows_ - 1; - } - - this.setRollUp(packet.pts, row); - } - - if (row !== this.row_) { - // formatting is only persistent for current row - this.clearFormatting(packet.pts); - this.row_ = row; - } - // All PACs can apply underline, so detect and apply - // (All odd-numbered second bytes set underline) - if ((char1 & 0x1) && (this.formatting_.indexOf('u') === -1)) { - this.addFormatting(packet.pts, ['u']); - } - - if ((data & 0x10) === 0x10) { - // We've got an indent level code. Each successive even number - // increments the column cursor by 4, so we can get the desired - // column position by bit-shifting to the right (to get n/2) - // and multiplying by 4. - this.column_ = ((data & 0xe) >> 1) * 4; - } - - if (this.isColorPAC(char1)) { - // it's a color code, though we only support white, which - // can be either normal or italicized. white italics can be - // either 0x4e or 0x6e depending on the row, so we just - // bitwise-and with 0xe to see if italics should be turned on - if ((char1 & 0xe) === 0xe) { - this.addFormatting(packet.pts, ['i']); - } - } - - // We have a normal character in char0, and possibly one in char1 - } else if (this.isNormalChar(char0)) { - if (char1 === 0x00) { - char1 = null; - } - text = getCharFromCode(char0); - text += getCharFromCode(char1); - this[this.mode_](packet.pts, text); - this.column_ += text.length; - - } // finish data processing - - }; -}; -Cea608Stream.prototype = new stream(); -// Trigger a cue point that captures the current state of the -// display buffer -Cea608Stream.prototype.flushDisplayed = function(pts) { - var content = this.displayed_ - // remove spaces from the start and end of the string - .map(function(row) { - try { - return row.trim(); - } catch (e) { - // Ordinarily, this shouldn't happen. However, caption - // parsing errors should not throw exceptions and - // break playback. - // eslint-disable-next-line no-console - console.error('Skipping malformed caption.'); - return ''; - } - }) - // combine all text rows to display in one cue - .join('\n') - // and remove blank rows from the start and end, but not the middle - .replace(/^\n+|\n+$/g, ''); - - if (content.length) { - this.trigger('data', { - startPts: this.startPts_, - endPts: pts, - text: content, - stream: this.name_ - }); - } -}; - -/** - * Zero out the data, used for startup and on seek - */ -Cea608Stream.prototype.reset = function() { - this.mode_ = 'popOn'; - // When in roll-up mode, the index of the last row that will - // actually display captions. If a caption is shifted to a row - // with a lower index than this, it is cleared from the display - // buffer - this.topRow_ = 0; - this.startPts_ = 0; - this.displayed_ = createDisplayBuffer(); - this.nonDisplayed_ = createDisplayBuffer(); - this.lastControlCode_ = null; - - // Track row and column for proper line-breaking and spacing - this.column_ = 0; - this.row_ = BOTTOM_ROW; - this.rollUpRows_ = 2; - - // This variable holds currently-applied formatting - this.formatting_ = []; -}; - -/** - * Sets up control code and related constants for this instance - */ -Cea608Stream.prototype.setConstants = function() { - // The following attributes have these uses: - // ext_ : char0 for mid-row codes, and the base for extended - // chars (ext_+0, ext_+1, and ext_+2 are char0s for - // extended codes) - // control_: char0 for control codes, except byte-shifted to the - // left so that we can do this.control_ | CONTROL_CODE - // offset_: char0 for tab offset codes - // - // It's also worth noting that control codes, and _only_ control codes, - // differ between field 1 and field2. Field 2 control codes are always - // their field 1 value plus 1. That's why there's the "| field" on the - // control value. - if (this.dataChannel_ === 0) { - this.BASE_ = 0x10; - this.EXT_ = 0x11; - this.CONTROL_ = (0x14 | this.field_) << 8; - this.OFFSET_ = 0x17; - } else if (this.dataChannel_ === 1) { - this.BASE_ = 0x18; - this.EXT_ = 0x19; - this.CONTROL_ = (0x1c | this.field_) << 8; - this.OFFSET_ = 0x1f; - } - - // Constants for the LSByte command codes recognized by Cea608Stream. This - // list is not exhaustive. For a more comprehensive listing and semantics see - // http://www.gpo.gov/fdsys/pkg/CFR-2010-title47-vol1/pdf/CFR-2010-title47-vol1-sec15-119.pdf - // Padding - this.PADDING_ = 0x0000; - // Pop-on Mode - this.RESUME_CAPTION_LOADING_ = this.CONTROL_ | 0x20; - this.END_OF_CAPTION_ = this.CONTROL_ | 0x2f; - // Roll-up Mode - this.ROLL_UP_2_ROWS_ = this.CONTROL_ | 0x25; - this.ROLL_UP_3_ROWS_ = this.CONTROL_ | 0x26; - this.ROLL_UP_4_ROWS_ = this.CONTROL_ | 0x27; - this.CARRIAGE_RETURN_ = this.CONTROL_ | 0x2d; - // paint-on mode - this.RESUME_DIRECT_CAPTIONING_ = this.CONTROL_ | 0x29; - // Erasure - this.BACKSPACE_ = this.CONTROL_ | 0x21; - this.ERASE_DISPLAYED_MEMORY_ = this.CONTROL_ | 0x2c; - this.ERASE_NON_DISPLAYED_MEMORY_ = this.CONTROL_ | 0x2e; -}; - -/** - * Detects if the 2-byte packet data is a special character - * - * Special characters have a second byte in the range 0x30 to 0x3f, - * with the first byte being 0x11 (for data channel 1) or 0x19 (for - * data channel 2). - * - * @param {Integer} char0 The first byte - * @param {Integer} char1 The second byte - * @return {Boolean} Whether the 2 bytes are an special character - */ -Cea608Stream.prototype.isSpecialCharacter = function(char0, char1) { - return (char0 === this.EXT_ && char1 >= 0x30 && char1 <= 0x3f); -}; - -/** - * Detects if the 2-byte packet data is an extended character - * - * Extended characters have a second byte in the range 0x20 to 0x3f, - * with the first byte being 0x12 or 0x13 (for data channel 1) or - * 0x1a or 0x1b (for data channel 2). - * - * @param {Integer} char0 The first byte - * @param {Integer} char1 The second byte - * @return {Boolean} Whether the 2 bytes are an extended character - */ -Cea608Stream.prototype.isExtCharacter = function(char0, char1) { - return ((char0 === (this.EXT_ + 1) || char0 === (this.EXT_ + 2)) && - (char1 >= 0x20 && char1 <= 0x3f)); -}; - -/** - * Detects if the 2-byte packet is a mid-row code - * - * Mid-row codes have a second byte in the range 0x20 to 0x2f, with - * the first byte being 0x11 (for data channel 1) or 0x19 (for data - * channel 2). - * - * @param {Integer} char0 The first byte - * @param {Integer} char1 The second byte - * @return {Boolean} Whether the 2 bytes are a mid-row code - */ -Cea608Stream.prototype.isMidRowCode = function(char0, char1) { - return (char0 === this.EXT_ && (char1 >= 0x20 && char1 <= 0x2f)); -}; - -/** - * Detects if the 2-byte packet is an offset control code - * - * Offset control codes have a second byte in the range 0x21 to 0x23, - * with the first byte being 0x17 (for data channel 1) or 0x1f (for - * data channel 2). - * - * @param {Integer} char0 The first byte - * @param {Integer} char1 The second byte - * @return {Boolean} Whether the 2 bytes are an offset control code - */ -Cea608Stream.prototype.isOffsetControlCode = function(char0, char1) { - return (char0 === this.OFFSET_ && (char1 >= 0x21 && char1 <= 0x23)); -}; - -/** - * Detects if the 2-byte packet is a Preamble Address Code - * - * PACs have a first byte in the range 0x10 to 0x17 (for data channel 1) - * or 0x18 to 0x1f (for data channel 2), with the second byte in the - * range 0x40 to 0x7f. - * - * @param {Integer} char0 The first byte - * @param {Integer} char1 The second byte - * @return {Boolean} Whether the 2 bytes are a PAC - */ -Cea608Stream.prototype.isPAC = function(char0, char1) { - return (char0 >= this.BASE_ && char0 < (this.BASE_ + 8) && - (char1 >= 0x40 && char1 <= 0x7f)); -}; - -/** - * Detects if a packet's second byte is in the range of a PAC color code - * - * PAC color codes have the second byte be in the range 0x40 to 0x4f, or - * 0x60 to 0x6f. - * - * @param {Integer} char1 The second byte - * @return {Boolean} Whether the byte is a color PAC - */ -Cea608Stream.prototype.isColorPAC = function(char1) { - return ((char1 >= 0x40 && char1 <= 0x4f) || (char1 >= 0x60 && char1 <= 0x7f)); -}; - -/** - * Detects if a single byte is in the range of a normal character - * - * Normal text bytes are in the range 0x20 to 0x7f. - * - * @param {Integer} char The byte - * @return {Boolean} Whether the byte is a normal character - */ -Cea608Stream.prototype.isNormalChar = function(char) { - return (char >= 0x20 && char <= 0x7f); -}; - -/** - * Configures roll-up - * - * @param {Integer} pts Current PTS - * @param {Integer} newBaseRow Used by PACs to slide the current window to - * a new position - */ -Cea608Stream.prototype.setRollUp = function(pts, newBaseRow) { - // Reset the base row to the bottom row when switching modes - if (this.mode_ !== 'rollUp') { - this.row_ = BOTTOM_ROW; - this.mode_ = 'rollUp'; - // Spec says to wipe memories when switching to roll-up - this.flushDisplayed(pts); - this.nonDisplayed_ = createDisplayBuffer(); - this.displayed_ = createDisplayBuffer(); - } - - if (newBaseRow !== undefined && newBaseRow !== this.row_) { - // move currently displayed captions (up or down) to the new base row - for (var i = 0; i < this.rollUpRows_; i++) { - this.displayed_[newBaseRow - i] = this.displayed_[this.row_ - i]; - this.displayed_[this.row_ - i] = ''; - } - } - - if (newBaseRow === undefined) { - newBaseRow = this.row_; - } - - this.topRow_ = newBaseRow - this.rollUpRows_ + 1; -}; - -// Adds the opening HTML tag for the passed character to the caption text, -// and keeps track of it for later closing -Cea608Stream.prototype.addFormatting = function(pts, format) { - this.formatting_ = this.formatting_.concat(format); - var text = format.reduce(function(text, format) { - return text + '<' + format + '>'; - }, ''); - this[this.mode_](pts, text); -}; - -// Adds HTML closing tags for current formatting to caption text and -// clears remembered formatting -Cea608Stream.prototype.clearFormatting = function(pts) { - if (!this.formatting_.length) { - return; - } - var text = this.formatting_.reverse().reduce(function(text, format) { - return text + ''; - }, ''); - this.formatting_ = []; - this[this.mode_](pts, text); -}; - -// Mode Implementations -Cea608Stream.prototype.popOn = function(pts, text) { - var baseRow = this.nonDisplayed_[this.row_]; - - // buffer characters - baseRow += text; - this.nonDisplayed_[this.row_] = baseRow; -}; - -Cea608Stream.prototype.rollUp = function(pts, text) { - var baseRow = this.displayed_[this.row_]; - - baseRow += text; - this.displayed_[this.row_] = baseRow; - -}; - -Cea608Stream.prototype.shiftRowsUp_ = function() { - var i; - // clear out inactive rows - for (i = 0; i < this.topRow_; i++) { - this.displayed_[i] = ''; - } - for (i = this.row_ + 1; i < BOTTOM_ROW + 1; i++) { - this.displayed_[i] = ''; - } - // shift displayed rows up - for (i = this.topRow_; i < this.row_; i++) { - this.displayed_[i] = this.displayed_[i + 1]; - } - // clear out the bottom row - this.displayed_[this.row_] = ''; -}; - -Cea608Stream.prototype.paintOn = function(pts, text) { - var baseRow = this.displayed_[this.row_]; - - baseRow += text; - this.displayed_[this.row_] = baseRow; -}; - -// exports -var captionStream = { - CaptionStream: CaptionStream, - Cea608Stream: Cea608Stream -}; - -var discardEmulationPreventionBytes$1 = captionPacketParser.discardEmulationPreventionBytes; -var CaptionStream$1 = captionStream.CaptionStream; - - - -/** - * Maps an offset in the mdat to a sample based on the the size of the samples. - * Assumes that `parseSamples` has been called first. - * - * @param {Number} offset - The offset into the mdat - * @param {Object[]} samples - An array of samples, parsed using `parseSamples` - * @return {?Object} The matching sample, or null if no match was found. - * - * @see ISO-BMFF-12/2015, Section 8.8.8 - **/ -var mapToSample = function(offset, samples) { - var approximateOffset = offset; - - for (var i = 0; i < samples.length; i++) { - var sample = samples[i]; - - if (approximateOffset < sample.size) { - return sample; - } - - approximateOffset -= sample.size; - } - - return null; -}; - -/** - * Finds SEI nal units contained in a Media Data Box. - * Assumes that `parseSamples` has been called first. - * - * @param {Uint8Array} avcStream - The bytes of the mdat - * @param {Object[]} samples - The samples parsed out by `parseSamples` - * @param {Number} trackId - The trackId of this video track - * @return {Object[]} seiNals - the parsed SEI NALUs found. - * The contents of the seiNal should match what is expected by - * CaptionStream.push (nalUnitType, size, data, escapedRBSP, pts, dts) - * - * @see ISO-BMFF-12/2015, Section 8.1.1 - * @see Rec. ITU-T H.264, 7.3.2.3.1 - **/ -var findSeiNals = function(avcStream, samples, trackId) { - var - avcView = new DataView(avcStream.buffer, avcStream.byteOffset, avcStream.byteLength), - result = [], - seiNal, - i, - length, - lastMatchedSample; - - for (i = 0; i + 4 < avcStream.length; i += length) { - length = avcView.getUint32(i); - i += 4; - - // Bail if this doesn't appear to be an H264 stream - if (length <= 0) { - continue; - } - - switch (avcStream[i] & 0x1F) { - case 0x06: - var data = avcStream.subarray(i + 1, i + 1 + length); - var matchingSample = mapToSample(i, samples); - - seiNal = { - nalUnitType: 'sei_rbsp', - size: length, - data: data, - escapedRBSP: discardEmulationPreventionBytes$1(data), - trackId: trackId - }; - - if (matchingSample) { - seiNal.pts = matchingSample.pts; - seiNal.dts = matchingSample.dts; - lastMatchedSample = matchingSample; - } else if (lastMatchedSample) { - // If a matching sample cannot be found, use the last - // sample's values as they should be as close as possible - seiNal.pts = lastMatchedSample.pts; - seiNal.dts = lastMatchedSample.dts; - } else { - // eslint-disable-next-line no-console - console.log("We've encountered a nal unit without data. See mux.js#233."); - break; - } - - result.push(seiNal); - break; - } - } - - return result; -}; - -/** - * Parses sample information out of Track Run Boxes and calculates - * the absolute presentation and decode timestamps of each sample. - * - * @param {Array} truns - The Trun Run boxes to be parsed - * @param {Number} baseMediaDecodeTime - base media decode time from tfdt - @see ISO-BMFF-12/2015, Section 8.8.12 - * @param {Object} tfhd - The parsed Track Fragment Header - * @see inspect.parseTfhd - * @return {Object[]} the parsed samples - * - * @see ISO-BMFF-12/2015, Section 8.8.8 - **/ -var parseSamples = function(truns, baseMediaDecodeTime, tfhd) { - var currentDts = baseMediaDecodeTime; - var defaultSampleDuration = tfhd.defaultSampleDuration || 0; - var defaultSampleSize = tfhd.defaultSampleSize || 0; - var trackId = tfhd.trackId; - var allSamples = []; - - truns.forEach(function(trun) { - // Note: We currently do not parse the sample table as well - // as the trun. It's possible some sources will require this. - // moov > trak > mdia > minf > stbl - var trackRun = mp4Inspector.parseTrun(trun); - var samples = trackRun.samples; - - samples.forEach(function(sample) { - if (sample.duration === undefined) { - sample.duration = defaultSampleDuration; - } - if (sample.size === undefined) { - sample.size = defaultSampleSize; - } - sample.trackId = trackId; - sample.dts = currentDts; - if (sample.compositionTimeOffset === undefined) { - sample.compositionTimeOffset = 0; - } - sample.pts = currentDts + sample.compositionTimeOffset; - - currentDts += sample.duration; - }); - - allSamples = allSamples.concat(samples); - }); - - return allSamples; -}; - -/** - * Parses out caption nals from an FMP4 segment's video tracks. - * - * @param {Uint8Array} segment - The bytes of a single segment - * @param {Number} videoTrackId - The trackId of a video track in the segment - * @return {Object.} A mapping of video trackId to - * a list of seiNals found in that track - **/ -var parseCaptionNals = function(segment, videoTrackId) { - // To get the samples - var trafs = probe.findBox(segment, ['moof', 'traf']); - // To get SEI NAL units - var mdats = probe.findBox(segment, ['mdat']); - var captionNals = {}; - var mdatTrafPairs = []; - - // Pair up each traf with a mdat as moofs and mdats are in pairs - mdats.forEach(function(mdat, index) { - var matchingTraf = trafs[index]; - mdatTrafPairs.push({ - mdat: mdat, - traf: matchingTraf - }); - }); - - mdatTrafPairs.forEach(function(pair) { - var mdat = pair.mdat; - var traf = pair.traf; - var tfhd = probe.findBox(traf, ['tfhd']); - // Exactly 1 tfhd per traf - var headerInfo = mp4Inspector.parseTfhd(tfhd[0]); - var trackId = headerInfo.trackId; - var tfdt = probe.findBox(traf, ['tfdt']); - // Either 0 or 1 tfdt per traf - var baseMediaDecodeTime = (tfdt.length > 0) ? mp4Inspector.parseTfdt(tfdt[0]).baseMediaDecodeTime : 0; - var truns = probe.findBox(traf, ['trun']); - var samples; - var seiNals; - - // Only parse video data for the chosen video track - if (videoTrackId === trackId && truns.length > 0) { - samples = parseSamples(truns, baseMediaDecodeTime, headerInfo); - - seiNals = findSeiNals(mdat, samples, trackId); - - if (!captionNals[trackId]) { - captionNals[trackId] = []; - } - - captionNals[trackId] = captionNals[trackId].concat(seiNals); - } - }); - - return captionNals; -}; - -/** - * Parses out inband captions from an MP4 container and returns - * caption objects that can be used by WebVTT and the TextTrack API. - * @see https://developer.mozilla.org/en-US/docs/Web/API/VTTCue - * @see https://developer.mozilla.org/en-US/docs/Web/API/TextTrack - * Assumes that `probe.getVideoTrackIds` and `probe.timescale` have been called first - * - * @param {Uint8Array} segment - The fmp4 segment containing embedded captions - * @param {Number} trackId - The id of the video track to parse - * @param {Number} timescale - The timescale for the video track from the init segment - * - * @return {?Object[]} parsedCaptions - A list of captions or null if no video tracks - * @return {Number} parsedCaptions[].startTime - The time to show the caption in seconds - * @return {Number} parsedCaptions[].endTime - The time to stop showing the caption in seconds - * @return {String} parsedCaptions[].text - The visible content of the caption - **/ -var parseEmbeddedCaptions = function(segment, trackId, timescale) { - var seiNals; - - // the ISO-BMFF spec says that trackId can't be zero, but there's some broken content out there - if (trackId === null) { - return null; - } - - seiNals = parseCaptionNals(segment, trackId); - - return { - seiNals: seiNals[trackId], - timescale: timescale - }; -}; - -/** - * Converts SEI NALUs into captions that can be used by video.js - **/ -var CaptionParser = function() { - var isInitialized = false; - var captionStream; - - // Stores segments seen before trackId and timescale are set - var segmentCache; - // Stores video track ID of the track being parsed - var trackId; - // Stores the timescale of the track being parsed - var timescale; - // Stores captions parsed so far - var parsedCaptions; - // Stores whether we are receiving partial data or not - var parsingPartial; - - /** - * A method to indicate whether a CaptionParser has been initalized - * @returns {Boolean} - **/ - this.isInitialized = function() { - return isInitialized; - }; - - /** - * Initializes the underlying CaptionStream, SEI NAL parsing - * and management, and caption collection - **/ - this.init = function(options) { - captionStream = new CaptionStream$1(); - isInitialized = true; - parsingPartial = options ? options.isPartial : false; - - // Collect dispatched captions - captionStream.on('data', function(event) { - // Convert to seconds in the source's timescale - event.startTime = event.startPts / timescale; - event.endTime = event.endPts / timescale; - - parsedCaptions.captions.push(event); - parsedCaptions.captionStreams[event.stream] = true; - }); - }; - - /** - * Determines if a new video track will be selected - * or if the timescale changed - * @return {Boolean} - **/ - this.isNewInit = function(videoTrackIds, timescales) { - if ((videoTrackIds && videoTrackIds.length === 0) || - (timescales && typeof timescales === 'object' && - Object.keys(timescales).length === 0)) { - return false; - } - - return trackId !== videoTrackIds[0] || - timescale !== timescales[trackId]; - }; - - /** - * Parses out SEI captions and interacts with underlying - * CaptionStream to return dispatched captions - * - * @param {Uint8Array} segment - The fmp4 segment containing embedded captions - * @param {Number[]} videoTrackIds - A list of video tracks found in the init segment - * @param {Object.} timescales - The timescales found in the init segment - * @see parseEmbeddedCaptions - * @see m2ts/caption-stream.js - **/ - this.parse = function(segment, videoTrackIds, timescales) { - var parsedData; - - if (!this.isInitialized()) { - return null; - - // This is not likely to be a video segment - } else if (!videoTrackIds || !timescales) { - return null; - - } else if (this.isNewInit(videoTrackIds, timescales)) { - // Use the first video track only as there is no - // mechanism to switch to other video tracks - trackId = videoTrackIds[0]; - timescale = timescales[trackId]; - - // If an init segment has not been seen yet, hold onto segment - // data until we have one. - // the ISO-BMFF spec says that trackId can't be zero, but there's some broken content out there - } else if (trackId === null || !timescale) { - segmentCache.push(segment); - return null; - } - - // Now that a timescale and trackId is set, parse cached segments - while (segmentCache.length > 0) { - var cachedSegment = segmentCache.shift(); - - this.parse(cachedSegment, videoTrackIds, timescales); - } - - parsedData = parseEmbeddedCaptions(segment, trackId, timescale); - - if (parsedData === null || !parsedData.seiNals) { - return null; - } - - this.pushNals(parsedData.seiNals); - // Force the parsed captions to be dispatched - this.flushStream(); - - return parsedCaptions; - }; - - /** - * Pushes SEI NALUs onto CaptionStream - * @param {Object[]} nals - A list of SEI nals parsed using `parseCaptionNals` - * Assumes that `parseCaptionNals` has been called first - * @see m2ts/caption-stream.js - **/ - this.pushNals = function(nals) { - if (!this.isInitialized() || !nals || nals.length === 0) { - return null; - } - - nals.forEach(function(nal) { - captionStream.push(nal); - }); - }; - - /** - * Flushes underlying CaptionStream to dispatch processed, displayable captions - * @see m2ts/caption-stream.js - **/ - this.flushStream = function() { - if (!this.isInitialized()) { - return null; - } - - if (!parsingPartial) { - captionStream.flush(); - } else { - captionStream.partialFlush(); - } - }; - - /** - * Reset caption buckets for new data - **/ - this.clearParsedCaptions = function() { - parsedCaptions.captions = []; - parsedCaptions.captionStreams = {}; - }; - - /** - * Resets underlying CaptionStream - * @see m2ts/caption-stream.js - **/ - this.resetCaptionStream = function() { - if (!this.isInitialized()) { - return null; - } - - captionStream.reset(); - }; - - /** - * Convenience method to clear all captions flushed from the - * CaptionStream and still being parsed - * @see m2ts/caption-stream.js - **/ - this.clearAllCaptions = function() { - this.clearParsedCaptions(); - this.resetCaptionStream(); - }; - - /** - * Reset caption parser - **/ - this.reset = function() { - segmentCache = []; - trackId = null; - timescale = null; - - if (!parsedCaptions) { - parsedCaptions = { - captions: [], - // CC1, CC2, CC3, CC4 - captionStreams: {} - }; - } else { - this.clearParsedCaptions(); - } - - this.resetCaptionStream(); - }; - - this.reset(); -}; - -var captionParser = CaptionParser; - -/** - * mux.js - * - * Copyright (c) Brightcove - * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE - */ - -var streamTypes = { - H264_STREAM_TYPE: 0x1B, - ADTS_STREAM_TYPE: 0x0F, - METADATA_STREAM_TYPE: 0x15 -}; - -var MAX_TS = 8589934592; - -var RO_THRESH = 4294967296; - -var TYPE_SHARED = 'shared'; - -var handleRollover = function(value, reference) { - var direction = 1; - - if (value > reference) { - // If the current timestamp value is greater than our reference timestamp and we detect a - // timestamp rollover, this means the roll over is happening in the opposite direction. - // Example scenario: Enter a long stream/video just after a rollover occurred. The reference - // point will be set to a small number, e.g. 1. The user then seeks backwards over the - // rollover point. In loading this segment, the timestamp values will be very large, - // e.g. 2^33 - 1. Since this comes before the data we loaded previously, we want to adjust - // the time stamp to be `value - 2^33`. - direction = -1; - } - - // Note: A seek forwards or back that is greater than the RO_THRESH (2^32, ~13 hours) will - // cause an incorrect adjustment. - while (Math.abs(reference - value) > RO_THRESH) { - value += (direction * MAX_TS); - } - - return value; -}; - -var TimestampRolloverStream = function(type) { - var lastDTS, referenceDTS; - - TimestampRolloverStream.prototype.init.call(this); - - // The "shared" type is used in cases where a stream will contain muxed - // video and audio. We could use `undefined` here, but having a string - // makes debugging a little clearer. - this.type_ = type || TYPE_SHARED; - - this.push = function(data) { - - // Any "shared" rollover streams will accept _all_ data. Otherwise, - // streams will only accept data that matches their type. - if (this.type_ !== TYPE_SHARED && data.type !== this.type_) { - return; - } - - if (referenceDTS === undefined) { - referenceDTS = data.dts; - } - - data.dts = handleRollover(data.dts, referenceDTS); - data.pts = handleRollover(data.pts, referenceDTS); - - lastDTS = data.dts; - - this.trigger('data', data); - }; - - this.flush = function() { - referenceDTS = lastDTS; - this.trigger('done'); - }; - - this.endTimeline = function() { - this.flush(); - this.trigger('endedtimeline'); - }; - - this.discontinuity = function() { - referenceDTS = void 0; - lastDTS = void 0; - }; - - this.reset = function() { - this.discontinuity(); - this.trigger('reset'); - }; -}; - -TimestampRolloverStream.prototype = new stream(); - -var timestampRolloverStream = { - TimestampRolloverStream: TimestampRolloverStream, - handleRollover: handleRollover -}; - -var parsePid = function(packet) { - var pid = packet[1] & 0x1f; - pid <<= 8; - pid |= packet[2]; - return pid; -}; - -var parsePayloadUnitStartIndicator = function(packet) { - return !!(packet[1] & 0x40); -}; - -var parseAdaptionField = function(packet) { - var offset = 0; - // if an adaption field is present, its length is specified by the - // fifth byte of the TS packet header. The adaptation field is - // used to add stuffing to PES packets that don't fill a complete - // TS packet, and to specify some forms of timing and control data - // that we do not currently use. - if (((packet[3] & 0x30) >>> 4) > 0x01) { - offset += packet[4] + 1; - } - return offset; -}; - -var parseType$1 = function(packet, pmtPid) { - var pid = parsePid(packet); - if (pid === 0) { - return 'pat'; - } else if (pid === pmtPid) { - return 'pmt'; - } else if (pmtPid) { - return 'pes'; - } - return null; -}; - -var parsePat = function(packet) { - var pusi = parsePayloadUnitStartIndicator(packet); - var offset = 4 + parseAdaptionField(packet); - - if (pusi) { - offset += packet[offset] + 1; - } - - return (packet[offset + 10] & 0x1f) << 8 | packet[offset + 11]; -}; - -var parsePmt = function(packet) { - var programMapTable = {}; - var pusi = parsePayloadUnitStartIndicator(packet); - var payloadOffset = 4 + parseAdaptionField(packet); - - if (pusi) { - payloadOffset += packet[payloadOffset] + 1; - } - - // PMTs can be sent ahead of the time when they should actually - // take effect. We don't believe this should ever be the case - // for HLS but we'll ignore "forward" PMT declarations if we see - // them. Future PMT declarations have the current_next_indicator - // set to zero. - if (!(packet[payloadOffset + 5] & 0x01)) { - return; - } - - var sectionLength, tableEnd, programInfoLength; - // the mapping table ends at the end of the current section - sectionLength = (packet[payloadOffset + 1] & 0x0f) << 8 | packet[payloadOffset + 2]; - tableEnd = 3 + sectionLength - 4; - - // to determine where the table is, we have to figure out how - // long the program info descriptors are - programInfoLength = (packet[payloadOffset + 10] & 0x0f) << 8 | packet[payloadOffset + 11]; - - // advance the offset to the first entry in the mapping table - var offset = 12 + programInfoLength; - while (offset < tableEnd) { - var i = payloadOffset + offset; - // add an entry that maps the elementary_pid to the stream_type - programMapTable[(packet[i + 1] & 0x1F) << 8 | packet[i + 2]] = packet[i]; - - // move to the next table entry - // skip past the elementary stream descriptors, if present - offset += ((packet[i + 3] & 0x0F) << 8 | packet[i + 4]) + 5; - } - return programMapTable; -}; - -var parsePesType = function(packet, programMapTable) { - var pid = parsePid(packet); - var type = programMapTable[pid]; - switch (type) { - case streamTypes.H264_STREAM_TYPE: - return 'video'; - case streamTypes.ADTS_STREAM_TYPE: - return 'audio'; - case streamTypes.METADATA_STREAM_TYPE: - return 'timed-metadata'; - default: - return null; - } -}; - -var parsePesTime = function(packet) { - var pusi = parsePayloadUnitStartIndicator(packet); - if (!pusi) { - return null; - } - - var offset = 4 + parseAdaptionField(packet); - - if (offset >= packet.byteLength) { - // From the H 222.0 MPEG-TS spec - // "For transport stream packets carrying PES packets, stuffing is needed when there - // is insufficient PES packet data to completely fill the transport stream packet - // payload bytes. Stuffing is accomplished by defining an adaptation field longer than - // the sum of the lengths of the data elements in it, so that the payload bytes - // remaining after the adaptation field exactly accommodates the available PES packet - // data." - // - // If the offset is >= the length of the packet, then the packet contains no data - // and instead is just adaption field stuffing bytes - return null; - } - - var pes = null; - var ptsDtsFlags; - - // PES packets may be annotated with a PTS value, or a PTS value - // and a DTS value. Determine what combination of values is - // available to work with. - ptsDtsFlags = packet[offset + 7]; - - // PTS and DTS are normally stored as a 33-bit number. Javascript - // performs all bitwise operations on 32-bit integers but javascript - // supports a much greater range (52-bits) of integer using standard - // mathematical operations. - // We construct a 31-bit value using bitwise operators over the 31 - // most significant bits and then multiply by 4 (equal to a left-shift - // of 2) before we add the final 2 least significant bits of the - // timestamp (equal to an OR.) - if (ptsDtsFlags & 0xC0) { - pes = {}; - // the PTS and DTS are not written out directly. For information - // on how they are encoded, see - // http://dvd.sourceforge.net/dvdinfo/pes-hdr.html - pes.pts = (packet[offset + 9] & 0x0E) << 27 | - (packet[offset + 10] & 0xFF) << 20 | - (packet[offset + 11] & 0xFE) << 12 | - (packet[offset + 12] & 0xFF) << 5 | - (packet[offset + 13] & 0xFE) >>> 3; - pes.pts *= 4; // Left shift by 2 - pes.pts += (packet[offset + 13] & 0x06) >>> 1; // OR by the two LSBs - pes.dts = pes.pts; - if (ptsDtsFlags & 0x40) { - pes.dts = (packet[offset + 14] & 0x0E) << 27 | - (packet[offset + 15] & 0xFF) << 20 | - (packet[offset + 16] & 0xFE) << 12 | - (packet[offset + 17] & 0xFF) << 5 | - (packet[offset + 18] & 0xFE) >>> 3; - pes.dts *= 4; // Left shift by 2 - pes.dts += (packet[offset + 18] & 0x06) >>> 1; // OR by the two LSBs - } - } - return pes; -}; - -var parseNalUnitType = function(type) { - switch (type) { - case 0x05: - return 'slice_layer_without_partitioning_rbsp_idr'; - case 0x06: - return 'sei_rbsp'; - case 0x07: - return 'seq_parameter_set_rbsp'; - case 0x08: - return 'pic_parameter_set_rbsp'; - case 0x09: - return 'access_unit_delimiter_rbsp'; - default: - return null; - } -}; - -var videoPacketContainsKeyFrame = function(packet) { - var offset = 4 + parseAdaptionField(packet); - var frameBuffer = packet.subarray(offset); - var frameI = 0; - var frameSyncPoint = 0; - var foundKeyFrame = false; - var nalType; - - // advance the sync point to a NAL start, if necessary - for (; frameSyncPoint < frameBuffer.byteLength - 3; frameSyncPoint++) { - if (frameBuffer[frameSyncPoint + 2] === 1) { - // the sync point is properly aligned - frameI = frameSyncPoint + 5; - break; - } - } - - while (frameI < frameBuffer.byteLength) { - // look at the current byte to determine if we've hit the end of - // a NAL unit boundary - switch (frameBuffer[frameI]) { - case 0: - // skip past non-sync sequences - if (frameBuffer[frameI - 1] !== 0) { - frameI += 2; - break; - } else if (frameBuffer[frameI - 2] !== 0) { - frameI++; - break; - } - - if (frameSyncPoint + 3 !== frameI - 2) { - nalType = parseNalUnitType(frameBuffer[frameSyncPoint + 3] & 0x1f); - if (nalType === 'slice_layer_without_partitioning_rbsp_idr') { - foundKeyFrame = true; - } - } - - // drop trailing zeroes - do { - frameI++; - } while (frameBuffer[frameI] !== 1 && frameI < frameBuffer.length); - frameSyncPoint = frameI - 2; - frameI += 3; - break; - case 1: - // skip past non-sync sequences - if (frameBuffer[frameI - 1] !== 0 || - frameBuffer[frameI - 2] !== 0) { - frameI += 3; - break; - } - - nalType = parseNalUnitType(frameBuffer[frameSyncPoint + 3] & 0x1f); - if (nalType === 'slice_layer_without_partitioning_rbsp_idr') { - foundKeyFrame = true; - } - frameSyncPoint = frameI - 2; - frameI += 3; - break; - default: - // the current byte isn't a one or zero, so it cannot be part - // of a sync sequence - frameI += 3; - break; - } - } - frameBuffer = frameBuffer.subarray(frameSyncPoint); - frameI -= frameSyncPoint; - frameSyncPoint = 0; - // parse the final nal - if (frameBuffer && frameBuffer.byteLength > 3) { - nalType = parseNalUnitType(frameBuffer[frameSyncPoint + 3] & 0x1f); - if (nalType === 'slice_layer_without_partitioning_rbsp_idr') { - foundKeyFrame = true; - } - } - - return foundKeyFrame; -}; - - -var probe$1 = { - parseType: parseType$1, - parsePat: parsePat, - parsePmt: parsePmt, - parsePayloadUnitStartIndicator: parsePayloadUnitStartIndicator, - parsePesType: parsePesType, - parsePesTime: parsePesTime, - videoPacketContainsKeyFrame: videoPacketContainsKeyFrame -}; - -/** - * mux.js - * - * Copyright (c) Brightcove - * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE - * - * Utilities to detect basic properties and metadata about Aac data. - */ - -var ADTS_SAMPLING_FREQUENCIES = [ - 96000, - 88200, - 64000, - 48000, - 44100, - 32000, - 24000, - 22050, - 16000, - 12000, - 11025, - 8000, - 7350 -]; - -var isLikelyAacData = function(data) { - if ((data[0] === 'I'.charCodeAt(0)) && - (data[1] === 'D'.charCodeAt(0)) && - (data[2] === '3'.charCodeAt(0))) { - return true; - } - return false; -}; - -var parseSyncSafeInteger = function(data) { - return (data[0] << 21) | - (data[1] << 14) | - (data[2] << 7) | - (data[3]); -}; - -// return a percent-encoded representation of the specified byte range -// @see http://en.wikipedia.org/wiki/Percent-encoding -var percentEncode = function(bytes, start, end) { - var i, result = ''; - for (i = start; i < end; i++) { - result += '%' + ('00' + bytes[i].toString(16)).slice(-2); - } - return result; -}; - -// return the string representation of the specified byte range, -// interpreted as ISO-8859-1. -var parseIso88591 = function(bytes, start, end) { - return unescape(percentEncode(bytes, start, end)); // jshint ignore:line -}; - -var parseId3TagSize = function(header, byteIndex) { - var - returnSize = (header[byteIndex + 6] << 21) | - (header[byteIndex + 7] << 14) | - (header[byteIndex + 8] << 7) | - (header[byteIndex + 9]), - flags = header[byteIndex + 5], - footerPresent = (flags & 16) >> 4; - - if (footerPresent) { - return returnSize + 20; - } - return returnSize + 10; -}; - -var parseAdtsSize = function(header, byteIndex) { - var - lowThree = (header[byteIndex + 5] & 0xE0) >> 5, - middle = header[byteIndex + 4] << 3, - highTwo = header[byteIndex + 3] & 0x3 << 11; - - return (highTwo | middle) | lowThree; -}; - -var parseType$2 = function(header, byteIndex) { - if ((header[byteIndex] === 'I'.charCodeAt(0)) && - (header[byteIndex + 1] === 'D'.charCodeAt(0)) && - (header[byteIndex + 2] === '3'.charCodeAt(0))) { - return 'timed-metadata'; - } else if ((header[byteIndex] & 0xff === 0xff) && - ((header[byteIndex + 1] & 0xf0) === 0xf0)) { - return 'audio'; - } - return null; -}; - -var parseSampleRate = function(packet) { - var i = 0; - - while (i + 5 < packet.length) { - if (packet[i] !== 0xFF || (packet[i + 1] & 0xF6) !== 0xF0) { - // If a valid header was not found, jump one forward and attempt to - // find a valid ADTS header starting at the next byte - i++; - continue; - } - return ADTS_SAMPLING_FREQUENCIES[(packet[i + 2] & 0x3c) >>> 2]; - } - - return null; -}; - -var parseAacTimestamp = function(packet) { - var frameStart, frameSize, frame, frameHeader; - - // find the start of the first frame and the end of the tag - frameStart = 10; - if (packet[5] & 0x40) { - // advance the frame start past the extended header - frameStart += 4; // header size field - frameStart += parseSyncSafeInteger(packet.subarray(10, 14)); - } - - // parse one or more ID3 frames - // http://id3.org/id3v2.3.0#ID3v2_frame_overview - do { - // determine the number of bytes in this frame - frameSize = parseSyncSafeInteger(packet.subarray(frameStart + 4, frameStart + 8)); - if (frameSize < 1) { - return null; - } - frameHeader = String.fromCharCode(packet[frameStart], - packet[frameStart + 1], - packet[frameStart + 2], - packet[frameStart + 3]); - - if (frameHeader === 'PRIV') { - frame = packet.subarray(frameStart + 10, frameStart + frameSize + 10); - - for (var i = 0; i < frame.byteLength; i++) { - if (frame[i] === 0) { - var owner = parseIso88591(frame, 0, i); - if (owner === 'com.apple.streaming.transportStreamTimestamp') { - var d = frame.subarray(i + 1); - var size = ((d[3] & 0x01) << 30) | - (d[4] << 22) | - (d[5] << 14) | - (d[6] << 6) | - (d[7] >>> 2); - size *= 4; - size += d[7] & 0x03; - - return size; - } - break; - } - } - } - - frameStart += 10; // advance past the frame header - frameStart += frameSize; // advance past the frame body - } while (frameStart < packet.byteLength); - return null; -}; - -var utils = { - isLikelyAacData: isLikelyAacData, - parseId3TagSize: parseId3TagSize, - parseAdtsSize: parseAdtsSize, - parseType: parseType$2, - parseSampleRate: parseSampleRate, - parseAacTimestamp: parseAacTimestamp -}; - -/** - * mux.js - * - * Copyright (c) Brightcove - * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE - */ -var - ONE_SECOND_IN_TS = 90000, // 90kHz clock - secondsToVideoTs, - secondsToAudioTs, - videoTsToSeconds, - audioTsToSeconds, - audioTsToVideoTs, - videoTsToAudioTs, - metadataTsToSeconds; - -secondsToVideoTs = function(seconds) { - return seconds * ONE_SECOND_IN_TS; -}; - -secondsToAudioTs = function(seconds, sampleRate) { - return seconds * sampleRate; -}; - -videoTsToSeconds = function(timestamp) { - return timestamp / ONE_SECOND_IN_TS; -}; - -audioTsToSeconds = function(timestamp, sampleRate) { - return timestamp / sampleRate; -}; - -audioTsToVideoTs = function(timestamp, sampleRate) { - return secondsToVideoTs(audioTsToSeconds(timestamp, sampleRate)); -}; - -videoTsToAudioTs = function(timestamp, sampleRate) { - return secondsToAudioTs(videoTsToSeconds(timestamp), sampleRate); -}; - -/** - * Adjust ID3 tag or caption timing information by the timeline pts values - * (if keepOriginalTimestamps is false) and convert to seconds - */ -metadataTsToSeconds = function(timestamp, timelineStartPts, keepOriginalTimestamps) { - return videoTsToSeconds(keepOriginalTimestamps ? timestamp : timestamp - timelineStartPts); -}; - -var clock = { - ONE_SECOND_IN_TS: ONE_SECOND_IN_TS, - secondsToVideoTs: secondsToVideoTs, - secondsToAudioTs: secondsToAudioTs, - videoTsToSeconds: videoTsToSeconds, - audioTsToSeconds: audioTsToSeconds, - audioTsToVideoTs: audioTsToVideoTs, - videoTsToAudioTs: videoTsToAudioTs, - metadataTsToSeconds: metadataTsToSeconds -}; - -var handleRollover$1 = timestampRolloverStream.handleRollover; -var probe$2 = {}; -probe$2.ts = probe$1; -probe$2.aac = utils; -var ONE_SECOND_IN_TS$1 = clock.ONE_SECOND_IN_TS; - -var - MP2T_PACKET_LENGTH = 188, // bytes - SYNC_BYTE = 0x47; - -/** - * walks through segment data looking for pat and pmt packets to parse out - * program map table information - */ -var parsePsi_ = function(bytes, pmt) { - var - startIndex = 0, - endIndex = MP2T_PACKET_LENGTH, - packet, type; - - while (endIndex < bytes.byteLength) { - // Look for a pair of start and end sync bytes in the data.. - if (bytes[startIndex] === SYNC_BYTE && bytes[endIndex] === SYNC_BYTE) { - // We found a packet - packet = bytes.subarray(startIndex, endIndex); - type = probe$2.ts.parseType(packet, pmt.pid); - - switch (type) { - case 'pat': - if (!pmt.pid) { - pmt.pid = probe$2.ts.parsePat(packet); - } - break; - case 'pmt': - if (!pmt.table) { - pmt.table = probe$2.ts.parsePmt(packet); - } - break; - } - - // Found the pat and pmt, we can stop walking the segment - if (pmt.pid && pmt.table) { - return; - } - - startIndex += MP2T_PACKET_LENGTH; - endIndex += MP2T_PACKET_LENGTH; - continue; - } - - // If we get here, we have somehow become de-synchronized and we need to step - // forward one byte at a time until we find a pair of sync bytes that denote - // a packet - startIndex++; - endIndex++; - } -}; - -/** - * walks through the segment data from the start and end to get timing information - * for the first and last audio pes packets - */ -var parseAudioPes_ = function(bytes, pmt, result) { - var - startIndex = 0, - endIndex = MP2T_PACKET_LENGTH, - packet, type, pesType, pusi, parsed; - - var endLoop = false; - - // Start walking from start of segment to get first audio packet - while (endIndex <= bytes.byteLength) { - // Look for a pair of start and end sync bytes in the data.. - if (bytes[startIndex] === SYNC_BYTE && - (bytes[endIndex] === SYNC_BYTE || endIndex === bytes.byteLength)) { - // We found a packet - packet = bytes.subarray(startIndex, endIndex); - type = probe$2.ts.parseType(packet, pmt.pid); - - switch (type) { - case 'pes': - pesType = probe$2.ts.parsePesType(packet, pmt.table); - pusi = probe$2.ts.parsePayloadUnitStartIndicator(packet); - if (pesType === 'audio' && pusi) { - parsed = probe$2.ts.parsePesTime(packet); - if (parsed) { - parsed.type = 'audio'; - result.audio.push(parsed); - endLoop = true; - } - } - break; - } - - if (endLoop) { - break; - } - - startIndex += MP2T_PACKET_LENGTH; - endIndex += MP2T_PACKET_LENGTH; - continue; - } - - // If we get here, we have somehow become de-synchronized and we need to step - // forward one byte at a time until we find a pair of sync bytes that denote - // a packet - startIndex++; - endIndex++; - } - - // Start walking from end of segment to get last audio packet - endIndex = bytes.byteLength; - startIndex = endIndex - MP2T_PACKET_LENGTH; - endLoop = false; - while (startIndex >= 0) { - // Look for a pair of start and end sync bytes in the data.. - if (bytes[startIndex] === SYNC_BYTE && - (bytes[endIndex] === SYNC_BYTE || endIndex === bytes.byteLength)) { - // We found a packet - packet = bytes.subarray(startIndex, endIndex); - type = probe$2.ts.parseType(packet, pmt.pid); - - switch (type) { - case 'pes': - pesType = probe$2.ts.parsePesType(packet, pmt.table); - pusi = probe$2.ts.parsePayloadUnitStartIndicator(packet); - if (pesType === 'audio' && pusi) { - parsed = probe$2.ts.parsePesTime(packet); - if (parsed) { - parsed.type = 'audio'; - result.audio.push(parsed); - endLoop = true; - } - } - break; - } - - if (endLoop) { - break; - } - - startIndex -= MP2T_PACKET_LENGTH; - endIndex -= MP2T_PACKET_LENGTH; - continue; - } - - // If we get here, we have somehow become de-synchronized and we need to step - // forward one byte at a time until we find a pair of sync bytes that denote - // a packet - startIndex--; - endIndex--; - } -}; - -/** - * walks through the segment data from the start and end to get timing information - * for the first and last video pes packets as well as timing information for the first - * key frame. - */ -var parseVideoPes_ = function(bytes, pmt, result) { - var - startIndex = 0, - endIndex = MP2T_PACKET_LENGTH, - packet, type, pesType, pusi, parsed, frame, i, pes; - - var endLoop = false; - - var currentFrame = { - data: [], - size: 0 - }; - - // Start walking from start of segment to get first video packet - while (endIndex < bytes.byteLength) { - // Look for a pair of start and end sync bytes in the data.. - if (bytes[startIndex] === SYNC_BYTE && bytes[endIndex] === SYNC_BYTE) { - // We found a packet - packet = bytes.subarray(startIndex, endIndex); - type = probe$2.ts.parseType(packet, pmt.pid); - - switch (type) { - case 'pes': - pesType = probe$2.ts.parsePesType(packet, pmt.table); - pusi = probe$2.ts.parsePayloadUnitStartIndicator(packet); - if (pesType === 'video') { - if (pusi && !endLoop) { - parsed = probe$2.ts.parsePesTime(packet); - if (parsed) { - parsed.type = 'video'; - result.video.push(parsed); - endLoop = true; - } - } - if (!result.firstKeyFrame) { - if (pusi) { - if (currentFrame.size !== 0) { - frame = new Uint8Array(currentFrame.size); - i = 0; - while (currentFrame.data.length) { - pes = currentFrame.data.shift(); - frame.set(pes, i); - i += pes.byteLength; - } - if (probe$2.ts.videoPacketContainsKeyFrame(frame)) { - var firstKeyFrame = probe$2.ts.parsePesTime(frame); - - // PTS/DTS may not be available. Simply *not* setting - // the keyframe seems to work fine with HLS playback - // and definitely preferable to a crash with TypeError... - if (firstKeyFrame) { - result.firstKeyFrame = firstKeyFrame; - result.firstKeyFrame.type = 'video'; - } else { - // eslint-disable-next-line - console.warn( - 'Failed to extract PTS/DTS from PES at first keyframe. ' + - 'This could be an unusual TS segment, or else mux.js did not ' + - 'parse your TS segment correctly. If you know your TS ' + - 'segments do contain PTS/DTS on keyframes please file a bug ' + - 'report! You can try ffprobe to double check for yourself.' - ); - } - } - currentFrame.size = 0; - } - } - currentFrame.data.push(packet); - currentFrame.size += packet.byteLength; - } - } - break; - } - - if (endLoop && result.firstKeyFrame) { - break; - } - - startIndex += MP2T_PACKET_LENGTH; - endIndex += MP2T_PACKET_LENGTH; - continue; - } - - // If we get here, we have somehow become de-synchronized and we need to step - // forward one byte at a time until we find a pair of sync bytes that denote - // a packet - startIndex++; - endIndex++; - } - - // Start walking from end of segment to get last video packet - endIndex = bytes.byteLength; - startIndex = endIndex - MP2T_PACKET_LENGTH; - endLoop = false; - while (startIndex >= 0) { - // Look for a pair of start and end sync bytes in the data.. - if (bytes[startIndex] === SYNC_BYTE && bytes[endIndex] === SYNC_BYTE) { - // We found a packet - packet = bytes.subarray(startIndex, endIndex); - type = probe$2.ts.parseType(packet, pmt.pid); - - switch (type) { - case 'pes': - pesType = probe$2.ts.parsePesType(packet, pmt.table); - pusi = probe$2.ts.parsePayloadUnitStartIndicator(packet); - if (pesType === 'video' && pusi) { - parsed = probe$2.ts.parsePesTime(packet); - if (parsed) { - parsed.type = 'video'; - result.video.push(parsed); - endLoop = true; - } - } - break; - } - - if (endLoop) { - break; - } - - startIndex -= MP2T_PACKET_LENGTH; - endIndex -= MP2T_PACKET_LENGTH; - continue; - } - - // If we get here, we have somehow become de-synchronized and we need to step - // forward one byte at a time until we find a pair of sync bytes that denote - // a packet - startIndex--; - endIndex--; - } -}; - -/** - * Adjusts the timestamp information for the segment to account for - * rollover and convert to seconds based on pes packet timescale (90khz clock) - */ -var adjustTimestamp_ = function(segmentInfo, baseTimestamp) { - if (segmentInfo.audio && segmentInfo.audio.length) { - var audioBaseTimestamp = baseTimestamp; - if (typeof audioBaseTimestamp === 'undefined') { - audioBaseTimestamp = segmentInfo.audio[0].dts; - } - segmentInfo.audio.forEach(function(info) { - info.dts = handleRollover$1(info.dts, audioBaseTimestamp); - info.pts = handleRollover$1(info.pts, audioBaseTimestamp); - // time in seconds - info.dtsTime = info.dts / ONE_SECOND_IN_TS$1; - info.ptsTime = info.pts / ONE_SECOND_IN_TS$1; - }); - } - - if (segmentInfo.video && segmentInfo.video.length) { - var videoBaseTimestamp = baseTimestamp; - if (typeof videoBaseTimestamp === 'undefined') { - videoBaseTimestamp = segmentInfo.video[0].dts; - } - segmentInfo.video.forEach(function(info) { - info.dts = handleRollover$1(info.dts, videoBaseTimestamp); - info.pts = handleRollover$1(info.pts, videoBaseTimestamp); - // time in seconds - info.dtsTime = info.dts / ONE_SECOND_IN_TS$1; - info.ptsTime = info.pts / ONE_SECOND_IN_TS$1; - }); - if (segmentInfo.firstKeyFrame) { - var frame = segmentInfo.firstKeyFrame; - frame.dts = handleRollover$1(frame.dts, videoBaseTimestamp); - frame.pts = handleRollover$1(frame.pts, videoBaseTimestamp); - // time in seconds - frame.dtsTime = frame.dts / ONE_SECOND_IN_TS$1; - frame.ptsTime = frame.dts / ONE_SECOND_IN_TS$1; - } - } -}; - -/** - * inspects the aac data stream for start and end time information - */ -var inspectAac_ = function(bytes) { - var - endLoop = false, - audioCount = 0, - sampleRate = null, - timestamp = null, - frameSize = 0, - byteIndex = 0, - packet; - - while (bytes.length - byteIndex >= 3) { - var type = probe$2.aac.parseType(bytes, byteIndex); - switch (type) { - case 'timed-metadata': - // Exit early because we don't have enough to parse - // the ID3 tag header - if (bytes.length - byteIndex < 10) { - endLoop = true; - break; - } - - frameSize = probe$2.aac.parseId3TagSize(bytes, byteIndex); - - // Exit early if we don't have enough in the buffer - // to emit a full packet - if (frameSize > bytes.length) { - endLoop = true; - break; - } - if (timestamp === null) { - packet = bytes.subarray(byteIndex, byteIndex + frameSize); - timestamp = probe$2.aac.parseAacTimestamp(packet); - } - byteIndex += frameSize; - break; - case 'audio': - // Exit early because we don't have enough to parse - // the ADTS frame header - if (bytes.length - byteIndex < 7) { - endLoop = true; - break; - } - - frameSize = probe$2.aac.parseAdtsSize(bytes, byteIndex); - - // Exit early if we don't have enough in the buffer - // to emit a full packet - if (frameSize > bytes.length) { - endLoop = true; - break; - } - if (sampleRate === null) { - packet = bytes.subarray(byteIndex, byteIndex + frameSize); - sampleRate = probe$2.aac.parseSampleRate(packet); - } - audioCount++; - byteIndex += frameSize; - break; - default: - byteIndex++; - break; - } - if (endLoop) { - return null; - } - } - if (sampleRate === null || timestamp === null) { - return null; - } - - var audioTimescale = ONE_SECOND_IN_TS$1 / sampleRate; - - var result = { - audio: [ - { - type: 'audio', - dts: timestamp, - pts: timestamp - }, - { - type: 'audio', - dts: timestamp + (audioCount * 1024 * audioTimescale), - pts: timestamp + (audioCount * 1024 * audioTimescale) - } - ] - }; - - return result; -}; - -/** - * inspects the transport stream segment data for start and end time information - * of the audio and video tracks (when present) as well as the first key frame's - * start time. - */ -var inspectTs_ = function(bytes) { - var pmt = { - pid: null, - table: null - }; - - var result = {}; - - parsePsi_(bytes, pmt); - - for (var pid in pmt.table) { - if (pmt.table.hasOwnProperty(pid)) { - var type = pmt.table[pid]; - switch (type) { - case streamTypes.H264_STREAM_TYPE: - result.video = []; - parseVideoPes_(bytes, pmt, result); - if (result.video.length === 0) { - delete result.video; - } - break; - case streamTypes.ADTS_STREAM_TYPE: - result.audio = []; - parseAudioPes_(bytes, pmt, result); - if (result.audio.length === 0) { - delete result.audio; - } - break; - } - } - } - return result; -}; - -/** - * Inspects segment byte data and returns an object with start and end timing information - * - * @param {Uint8Array} bytes The segment byte data - * @param {Number} baseTimestamp Relative reference timestamp used when adjusting frame - * timestamps for rollover. This value must be in 90khz clock. - * @return {Object} Object containing start and end frame timing info of segment. - */ -var inspect = function(bytes, baseTimestamp) { - var isAacData = probe$2.aac.isLikelyAacData(bytes); - - var result; - - if (isAacData) { - result = inspectAac_(bytes); - } else { - result = inspectTs_(bytes); - } - - if (!result || (!result.audio && !result.video)) { - return null; - } - - adjustTimestamp_(result, baseTimestamp); - - return result; -}; - -var tsInspector = { - inspect: inspect, - parseAudioPes_: parseAudioPes_ -}; - -function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } -} - -function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; -} - -var createClass = _createClass; - -/*! @name @videojs/vhs-utils @version 1.3.0 @license MIT */ - -/** - * @file stream.js - */ - -/** - * A lightweight readable stream implemention that handles event dispatching. - * - * @class Stream - */ -var Stream$2 = -/*#__PURE__*/ -function () { - function Stream() { - this.listeners = {}; - } - /** - * Add a listener for a specified event type. - * - * @param {string} type the event name - * @param {Function} listener the callback to be invoked when an event of - * the specified type occurs - */ - - - var _proto = Stream.prototype; - - _proto.on = function on(type, listener) { - if (!this.listeners[type]) { - this.listeners[type] = []; - } - - this.listeners[type].push(listener); - } - /** - * Remove a listener for a specified event type. - * - * @param {string} type the event name - * @param {Function} listener a function previously registered for this - * type of event through `on` - * @return {boolean} if we could turn it off or not - */ - ; - - _proto.off = function off(type, listener) { - if (!this.listeners[type]) { - return false; - } - - var index = this.listeners[type].indexOf(listener); // TODO: which is better? - // In Video.js we slice listener functions - // on trigger so that it does not mess up the order - // while we loop through. - // - // Here we slice on off so that the loop in trigger - // can continue using it's old reference to loop without - // messing up the order. - - this.listeners[type] = this.listeners[type].slice(0); - this.listeners[type].splice(index, 1); - return index > -1; - } - /** - * Trigger an event of the specified type on this stream. Any additional - * arguments to this function are passed as parameters to event listeners. - * - * @param {string} type the event name - */ - ; - - _proto.trigger = function trigger(type) { - var callbacks = this.listeners[type]; - - if (!callbacks) { - return; - } // Slicing the arguments on every invocation of this method - // can add a significant amount of overhead. Avoid the - // intermediate object creation for the common case of a - // single callback argument - - - if (arguments.length === 2) { - var length = callbacks.length; - - for (var i = 0; i < length; ++i) { - callbacks[i].call(this, arguments[1]); - } - } else { - var args = Array.prototype.slice.call(arguments, 1); - var _length = callbacks.length; - - for (var _i = 0; _i < _length; ++_i) { - callbacks[_i].apply(this, args); - } - } - } - /** - * Destroys the stream and cleans up. - */ - ; - - _proto.dispose = function dispose() { - this.listeners = {}; - } - /** - * Forwards all `data` events on this stream to the destination stream. The - * destination stream should provide a method `push` to receive the data - * events as they arrive. - * - * @param {Stream} destination the stream that will receive all `data` events - * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options - */ - ; - - _proto.pipe = function pipe(destination) { - this.on('data', function (data) { - destination.push(data); - }); - }; - - return Stream; -}(); - -var stream$1 = Stream$2; - -/*! @name pkcs7 @version 1.0.4 @license Apache-2.0 */ - -/** - * Returns the subarray of a Uint8Array without PKCS#7 padding. - * - * @param padded {Uint8Array} unencrypted bytes that have been padded - * @return {Uint8Array} the unpadded bytes - * @see http://tools.ietf.org/html/rfc5652 - */ -function unpad(padded) { - return padded.subarray(0, padded.byteLength - padded[padded.byteLength - 1]); -} - -/*! @name aes-decrypter @version 3.0.2 @license Apache-2.0 */ - -/** - * @file aes.js - * - * This file contains an adaptation of the AES decryption algorithm - * from the Standford Javascript Cryptography Library. That work is - * covered by the following copyright and permissions notice: - * - * Copyright 2009-2010 Emily Stark, Mike Hamburg, Dan Boneh. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR - * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE - * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation - * are those of the authors and should not be interpreted as representing - * official policies, either expressed or implied, of the authors. - */ - -/** - * Expand the S-box tables. - * - * @private - */ -var precompute = function precompute() { - var tables = [[[], [], [], [], []], [[], [], [], [], []]]; - var encTable = tables[0]; - var decTable = tables[1]; - var sbox = encTable[4]; - var sboxInv = decTable[4]; - var i; - var x; - var xInv; - var d = []; - var th = []; - var x2; - var x4; - var x8; - var s; - var tEnc; - var tDec; // Compute double and third tables - - for (i = 0; i < 256; i++) { - th[(d[i] = i << 1 ^ (i >> 7) * 283) ^ i] = i; - } - - for (x = xInv = 0; !sbox[x]; x ^= x2 || 1, xInv = th[xInv] || 1) { - // Compute sbox - s = xInv ^ xInv << 1 ^ xInv << 2 ^ xInv << 3 ^ xInv << 4; - s = s >> 8 ^ s & 255 ^ 99; - sbox[x] = s; - sboxInv[s] = x; // Compute MixColumns - - x8 = d[x4 = d[x2 = d[x]]]; - tDec = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100; - tEnc = d[s] * 0x101 ^ s * 0x1010100; - - for (i = 0; i < 4; i++) { - encTable[i][x] = tEnc = tEnc << 24 ^ tEnc >>> 8; - decTable[i][s] = tDec = tDec << 24 ^ tDec >>> 8; - } - } // Compactify. Considerable speedup on Firefox. - - - for (i = 0; i < 5; i++) { - encTable[i] = encTable[i].slice(0); - decTable[i] = decTable[i].slice(0); - } - - return tables; -}; - -var aesTables = null; -/** - * Schedule out an AES key for both encryption and decryption. This - * is a low-level class. Use a cipher mode to do bulk encryption. - * - * @class AES - * @param key {Array} The key as an array of 4, 6 or 8 words. - */ - -var AES = -/*#__PURE__*/ -function () { - function AES(key) { - /** - * The expanded S-box and inverse S-box tables. These will be computed - * on the client so that we don't have to send them down the wire. - * - * There are two tables, _tables[0] is for encryption and - * _tables[1] is for decryption. - * - * The first 4 sub-tables are the expanded S-box with MixColumns. The - * last (_tables[01][4]) is the S-box itself. - * - * @private - */ - // if we have yet to precompute the S-box tables - // do so now - if (!aesTables) { - aesTables = precompute(); - } // then make a copy of that object for use - - - this._tables = [[aesTables[0][0].slice(), aesTables[0][1].slice(), aesTables[0][2].slice(), aesTables[0][3].slice(), aesTables[0][4].slice()], [aesTables[1][0].slice(), aesTables[1][1].slice(), aesTables[1][2].slice(), aesTables[1][3].slice(), aesTables[1][4].slice()]]; - var i; - var j; - var tmp; - var sbox = this._tables[0][4]; - var decTable = this._tables[1]; - var keyLen = key.length; - var rcon = 1; - - if (keyLen !== 4 && keyLen !== 6 && keyLen !== 8) { - throw new Error('Invalid aes key size'); - } - - var encKey = key.slice(0); - var decKey = []; - this._key = [encKey, decKey]; // schedule encryption keys - - for (i = keyLen; i < 4 * keyLen + 28; i++) { - tmp = encKey[i - 1]; // apply sbox - - if (i % keyLen === 0 || keyLen === 8 && i % keyLen === 4) { - tmp = sbox[tmp >>> 24] << 24 ^ sbox[tmp >> 16 & 255] << 16 ^ sbox[tmp >> 8 & 255] << 8 ^ sbox[tmp & 255]; // shift rows and add rcon - - if (i % keyLen === 0) { - tmp = tmp << 8 ^ tmp >>> 24 ^ rcon << 24; - rcon = rcon << 1 ^ (rcon >> 7) * 283; - } - } - - encKey[i] = encKey[i - keyLen] ^ tmp; - } // schedule decryption keys - - - for (j = 0; i; j++, i--) { - tmp = encKey[j & 3 ? i : i - 4]; - - if (i <= 4 || j < 4) { - decKey[j] = tmp; - } else { - decKey[j] = decTable[0][sbox[tmp >>> 24]] ^ decTable[1][sbox[tmp >> 16 & 255]] ^ decTable[2][sbox[tmp >> 8 & 255]] ^ decTable[3][sbox[tmp & 255]]; - } - } - } - /** - * Decrypt 16 bytes, specified as four 32-bit words. - * - * @param {number} encrypted0 the first word to decrypt - * @param {number} encrypted1 the second word to decrypt - * @param {number} encrypted2 the third word to decrypt - * @param {number} encrypted3 the fourth word to decrypt - * @param {Int32Array} out the array to write the decrypted words - * into - * @param {number} offset the offset into the output array to start - * writing results - * @return {Array} The plaintext. - */ - - - var _proto = AES.prototype; - - _proto.decrypt = function decrypt(encrypted0, encrypted1, encrypted2, encrypted3, out, offset) { - var key = this._key[1]; // state variables a,b,c,d are loaded with pre-whitened data - - var a = encrypted0 ^ key[0]; - var b = encrypted3 ^ key[1]; - var c = encrypted2 ^ key[2]; - var d = encrypted1 ^ key[3]; - var a2; - var b2; - var c2; // key.length === 2 ? - - var nInnerRounds = key.length / 4 - 2; - var i; - var kIndex = 4; - var table = this._tables[1]; // load up the tables - - var table0 = table[0]; - var table1 = table[1]; - var table2 = table[2]; - var table3 = table[3]; - var sbox = table[4]; // Inner rounds. Cribbed from OpenSSL. - - for (i = 0; i < nInnerRounds; i++) { - a2 = table0[a >>> 24] ^ table1[b >> 16 & 255] ^ table2[c >> 8 & 255] ^ table3[d & 255] ^ key[kIndex]; - b2 = table0[b >>> 24] ^ table1[c >> 16 & 255] ^ table2[d >> 8 & 255] ^ table3[a & 255] ^ key[kIndex + 1]; - c2 = table0[c >>> 24] ^ table1[d >> 16 & 255] ^ table2[a >> 8 & 255] ^ table3[b & 255] ^ key[kIndex + 2]; - d = table0[d >>> 24] ^ table1[a >> 16 & 255] ^ table2[b >> 8 & 255] ^ table3[c & 255] ^ key[kIndex + 3]; - kIndex += 4; - a = a2; - b = b2; - c = c2; - } // Last round. - - - for (i = 0; i < 4; i++) { - out[(3 & -i) + offset] = sbox[a >>> 24] << 24 ^ sbox[b >> 16 & 255] << 16 ^ sbox[c >> 8 & 255] << 8 ^ sbox[d & 255] ^ key[kIndex++]; - a2 = a; - a = b; - b = c; - c = d; - d = a2; - } - }; - - return AES; -}(); - -/** - * A wrapper around the Stream class to use setTimeout - * and run stream "jobs" Asynchronously - * - * @class AsyncStream - * @extends Stream - */ - -var AsyncStream = -/*#__PURE__*/ -function (_Stream) { - inheritsLoose(AsyncStream, _Stream); - - function AsyncStream() { - var _this; - - _this = _Stream.call(this, stream$1) || this; - _this.jobs = []; - _this.delay = 1; - _this.timeout_ = null; - return _this; - } - /** - * process an async job - * - * @private - */ - - - var _proto = AsyncStream.prototype; - - _proto.processJob_ = function processJob_() { - this.jobs.shift()(); - - if (this.jobs.length) { - this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay); - } else { - this.timeout_ = null; - } - } - /** - * push a job into the stream - * - * @param {Function} job the job to push into the stream - */ - ; - - _proto.push = function push(job) { - this.jobs.push(job); - - if (!this.timeout_) { - this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay); - } - }; - - return AsyncStream; -}(stream$1); - -/** - * Convert network-order (big-endian) bytes into their little-endian - * representation. - */ - -var ntoh = function ntoh(word) { - return word << 24 | (word & 0xff00) << 8 | (word & 0xff0000) >> 8 | word >>> 24; -}; -/** - * Decrypt bytes using AES-128 with CBC and PKCS#7 padding. - * - * @param {Uint8Array} encrypted the encrypted bytes - * @param {Uint32Array} key the bytes of the decryption key - * @param {Uint32Array} initVector the initialization vector (IV) to - * use for the first round of CBC. - * @return {Uint8Array} the decrypted bytes - * - * @see http://en.wikipedia.org/wiki/Advanced_Encryption_Standard - * @see http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_Block_Chaining_.28CBC.29 - * @see https://tools.ietf.org/html/rfc2315 - */ - - -var decrypt = function decrypt(encrypted, key, initVector) { - // word-level access to the encrypted bytes - var encrypted32 = new Int32Array(encrypted.buffer, encrypted.byteOffset, encrypted.byteLength >> 2); - var decipher = new AES(Array.prototype.slice.call(key)); // byte and word-level access for the decrypted output - - var decrypted = new Uint8Array(encrypted.byteLength); - var decrypted32 = new Int32Array(decrypted.buffer); // temporary variables for working with the IV, encrypted, and - // decrypted data - - var init0; - var init1; - var init2; - var init3; - var encrypted0; - var encrypted1; - var encrypted2; - var encrypted3; // iteration variable - - var wordIx; // pull out the words of the IV to ensure we don't modify the - // passed-in reference and easier access - - init0 = initVector[0]; - init1 = initVector[1]; - init2 = initVector[2]; - init3 = initVector[3]; // decrypt four word sequences, applying cipher-block chaining (CBC) - // to each decrypted block - - for (wordIx = 0; wordIx < encrypted32.length; wordIx += 4) { - // convert big-endian (network order) words into little-endian - // (javascript order) - encrypted0 = ntoh(encrypted32[wordIx]); - encrypted1 = ntoh(encrypted32[wordIx + 1]); - encrypted2 = ntoh(encrypted32[wordIx + 2]); - encrypted3 = ntoh(encrypted32[wordIx + 3]); // decrypt the block - - decipher.decrypt(encrypted0, encrypted1, encrypted2, encrypted3, decrypted32, wordIx); // XOR with the IV, and restore network byte-order to obtain the - // plaintext - - decrypted32[wordIx] = ntoh(decrypted32[wordIx] ^ init0); - decrypted32[wordIx + 1] = ntoh(decrypted32[wordIx + 1] ^ init1); - decrypted32[wordIx + 2] = ntoh(decrypted32[wordIx + 2] ^ init2); - decrypted32[wordIx + 3] = ntoh(decrypted32[wordIx + 3] ^ init3); // setup the IV for the next round - - init0 = encrypted0; - init1 = encrypted1; - init2 = encrypted2; - init3 = encrypted3; - } - - return decrypted; -}; -/** - * The `Decrypter` class that manages decryption of AES - * data through `AsyncStream` objects and the `decrypt` - * function - * - * @param {Uint8Array} encrypted the encrypted bytes - * @param {Uint32Array} key the bytes of the decryption key - * @param {Uint32Array} initVector the initialization vector (IV) to - * @param {Function} done the function to run when done - * @class Decrypter - */ - - -var Decrypter = -/*#__PURE__*/ -function () { - function Decrypter(encrypted, key, initVector, done) { - var step = Decrypter.STEP; - var encrypted32 = new Int32Array(encrypted.buffer); - var decrypted = new Uint8Array(encrypted.byteLength); - var i = 0; - this.asyncStream_ = new AsyncStream(); // split up the encryption job and do the individual chunks asynchronously - - this.asyncStream_.push(this.decryptChunk_(encrypted32.subarray(i, i + step), key, initVector, decrypted)); - - for (i = step; i < encrypted32.length; i += step) { - initVector = new Uint32Array([ntoh(encrypted32[i - 4]), ntoh(encrypted32[i - 3]), ntoh(encrypted32[i - 2]), ntoh(encrypted32[i - 1])]); - this.asyncStream_.push(this.decryptChunk_(encrypted32.subarray(i, i + step), key, initVector, decrypted)); - } // invoke the done() callback when everything is finished - - - this.asyncStream_.push(function () { - // remove pkcs#7 padding from the decrypted bytes - done(null, unpad(decrypted)); - }); - } - /** - * a getter for step the maximum number of bytes to process at one time - * - * @return {number} the value of step 32000 - */ - - - var _proto = Decrypter.prototype; - - /** - * @private - */ - _proto.decryptChunk_ = function decryptChunk_(encrypted, key, initVector, decrypted) { - return function () { - var bytes = decrypt(encrypted, key, initVector); - decrypted.set(bytes, encrypted.byteOffset); - }; - }; - - createClass(Decrypter, null, [{ - key: "STEP", - get: function get() { - // 4 * 8000; - return 32000; - } - }]); - - return Decrypter; -}(); - -/** - * @license - * Video.js 7.9.6 - * Copyright Brightcove, Inc. - * Available under Apache License Version 2.0 - * - * - * Includes vtt.js - * Available under Apache License Version 2.0 - * - */ - -var version = "7.9.6"; - -/** - * @file create-logger.js - * @module create-logger - */ - -var history = []; -/** - * Log messages to the console and history based on the type of message - * - * @private - * @param {string} type - * The name of the console method to use. - * - * @param {Array} args - * The arguments to be passed to the matching console method. - */ - -var LogByTypeFactory = function LogByTypeFactory(name, log) { - return function (type, level, args) { - var lvl = log.levels[level]; - var lvlRegExp = new RegExp("^(" + lvl + ")$"); - - if (type !== 'log') { - // Add the type to the front of the message when it's not "log". - args.unshift(type.toUpperCase() + ':'); - } // Add console prefix after adding to history. - - - args.unshift(name + ':'); // Add a clone of the args at this point to history. - - if (history) { - history.push([].concat(args)); // only store 1000 history entries - - var splice = history.length - 1000; - history.splice(0, splice > 0 ? splice : 0); - } // If there's no console then don't try to output messages, but they will - // still be stored in history. - - - if (!window_1$1.console) { - return; - } // Was setting these once outside of this function, but containing them - // in the function makes it easier to test cases where console doesn't exist - // when the module is executed. - - - var fn = window_1$1.console[type]; - - if (!fn && type === 'debug') { - // Certain browsers don't have support for console.debug. For those, we - // should default to the closest comparable log. - fn = window_1$1.console.info || window_1$1.console.log; - } // Bail out if there's no console or if this type is not allowed by the - // current logging level. - - - if (!fn || !lvl || !lvlRegExp.test(type)) { - return; - } - - fn[Array.isArray(args) ? 'apply' : 'call'](window_1$1.console, args); - }; -}; - -function createLogger(name) { - // This is the private tracking variable for logging level. - var level = 'info'; // the curried logByType bound to the specific log and history - - var logByType; - /** - * Logs plain debug messages. Similar to `console.log`. - * - * Due to [limitations](https://github.com/jsdoc3/jsdoc/issues/955#issuecomment-313829149) - * of our JSDoc template, we cannot properly document this as both a function - * and a namespace, so its function signature is documented here. - * - * #### Arguments - * ##### *args - * Mixed[] - * - * Any combination of values that could be passed to `console.log()`. - * - * #### Return Value - * - * `undefined` - * - * @namespace - * @param {Mixed[]} args - * One or more messages or objects that should be logged. - */ - - var log = function log() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - logByType('log', level, args); - }; // This is the logByType helper that the logging methods below use - - - logByType = LogByTypeFactory(name, log); - /** - * Create a new sublogger which chains the old name to the new name. - * - * For example, doing `videojs.log.createLogger('player')` and then using that logger will log the following: - * ```js - * mylogger('foo'); - * // > VIDEOJS: player: foo - * ``` - * - * @param {string} name - * The name to add call the new logger - * @return {Object} - */ - - log.createLogger = function (subname) { - return createLogger(name + ': ' + subname); - }; - /** - * Enumeration of available logging levels, where the keys are the level names - * and the values are `|`-separated strings containing logging methods allowed - * in that logging level. These strings are used to create a regular expression - * matching the function name being called. - * - * Levels provided by Video.js are: - * - * - `off`: Matches no calls. Any value that can be cast to `false` will have - * this effect. The most restrictive. - * - `all`: Matches only Video.js-provided functions (`debug`, `log`, - * `log.warn`, and `log.error`). - * - `debug`: Matches `log.debug`, `log`, `log.warn`, and `log.error` calls. - * - `info` (default): Matches `log`, `log.warn`, and `log.error` calls. - * - `warn`: Matches `log.warn` and `log.error` calls. - * - `error`: Matches only `log.error` calls. - * - * @type {Object} - */ - - - log.levels = { - all: 'debug|log|warn|error', - off: '', - debug: 'debug|log|warn|error', - info: 'log|warn|error', - warn: 'warn|error', - error: 'error', - DEFAULT: level - }; - /** - * Get or set the current logging level. - * - * If a string matching a key from {@link module:log.levels} is provided, acts - * as a setter. - * - * @param {string} [lvl] - * Pass a valid level to set a new logging level. - * - * @return {string} - * The current logging level. - */ - - log.level = function (lvl) { - if (typeof lvl === 'string') { - if (!log.levels.hasOwnProperty(lvl)) { - throw new Error("\"" + lvl + "\" in not a valid log level"); - } - - level = lvl; - } - - return level; - }; - /** - * Returns an array containing everything that has been logged to the history. - * - * This array is a shallow clone of the internal history record. However, its - * contents are _not_ cloned; so, mutating objects inside this array will - * mutate them in history. - * - * @return {Array} - */ - - - log.history = function () { - return history ? [].concat(history) : []; - }; - /** - * Allows you to filter the history by the given logger name - * - * @param {string} fname - * The name to filter by - * - * @return {Array} - * The filtered list to return - */ - - - log.history.filter = function (fname) { - return (history || []).filter(function (historyItem) { - // if the first item in each historyItem includes `fname`, then it's a match - return new RegExp(".*" + fname + ".*").test(historyItem[0]); - }); - }; - /** - * Clears the internal history tracking, but does not prevent further history - * tracking. - */ - - - log.history.clear = function () { - if (history) { - history.length = 0; - } - }; - /** - * Disable history tracking if it is currently enabled. - */ - - - log.history.disable = function () { - if (history !== null) { - history.length = 0; - history = null; - } - }; - /** - * Enable history tracking if it is currently disabled. - */ - - - log.history.enable = function () { - if (history === null) { - history = []; - } - }; - /** - * Logs error messages. Similar to `console.error`. - * - * @param {Mixed[]} args - * One or more messages or objects that should be logged as an error - */ - - - log.error = function () { - for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - return logByType('error', level, args); - }; - /** - * Logs warning messages. Similar to `console.warn`. - * - * @param {Mixed[]} args - * One or more messages or objects that should be logged as a warning. - */ - - - log.warn = function () { - for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - args[_key3] = arguments[_key3]; - } - - return logByType('warn', level, args); - }; - /** - * Logs debug messages. Similar to `console.debug`, but may also act as a comparable - * log if `console.debug` is not available - * - * @param {Mixed[]} args - * One or more messages or objects that should be logged as debug. - */ - - - log.debug = function () { - for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - args[_key4] = arguments[_key4]; - } - - return logByType('debug', level, args); - }; - - return log; -} - -/** - * @file log.js - * @module log - */ -var log = createLogger('VIDEOJS'); -var createLogger$1 = log.createLogger; - -/** - * @file obj.js - * @module obj - */ - -/** - * @callback obj:EachCallback - * - * @param {Mixed} value - * The current key for the object that is being iterated over. - * - * @param {string} key - * The current key-value for object that is being iterated over - */ - -/** - * @callback obj:ReduceCallback - * - * @param {Mixed} accum - * The value that is accumulating over the reduce loop. - * - * @param {Mixed} value - * The current key for the object that is being iterated over. - * - * @param {string} key - * The current key-value for object that is being iterated over - * - * @return {Mixed} - * The new accumulated value. - */ -var toString$1 = Object.prototype.toString; -/** - * Get the keys of an Object - * - * @param {Object} - * The Object to get the keys from - * - * @return {string[]} - * An array of the keys from the object. Returns an empty array if the - * object passed in was invalid or had no keys. - * - * @private - */ - -var keys = function keys(object) { - return isObject$1(object) ? Object.keys(object) : []; -}; -/** - * Array-like iteration for objects. - * - * @param {Object} object - * The object to iterate over - * - * @param {obj:EachCallback} fn - * The callback function which is called for each key in the object. - */ - - -function each(object, fn) { - keys(object).forEach(function (key) { - return fn(object[key], key); - }); -} -/** - * Array-like reduce for objects. - * - * @param {Object} object - * The Object that you want to reduce. - * - * @param {Function} fn - * A callback function which is called for each key in the object. It - * receives the accumulated value and the per-iteration value and key - * as arguments. - * - * @param {Mixed} [initial = 0] - * Starting value - * - * @return {Mixed} - * The final accumulated value. - */ - -function reduce(object, fn, initial) { - if (initial === void 0) { - initial = 0; - } - - return keys(object).reduce(function (accum, key) { - return fn(accum, object[key], key); - }, initial); -} -/** - * Object.assign-style object shallow merge/extend. - * - * @param {Object} target - * @param {Object} ...sources - * @return {Object} - */ - -function assign(target) { - for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - sources[_key - 1] = arguments[_key]; - } - - if (Object.assign) { - return _extends_1.apply(void 0, [target].concat(sources)); - } - - sources.forEach(function (source) { - if (!source) { - return; - } - - each(source, function (value, key) { - target[key] = value; - }); - }); - return target; -} -/** - * Returns whether a value is an object of any kind - including DOM nodes, - * arrays, regular expressions, etc. Not functions, though. - * - * This avoids the gotcha where using `typeof` on a `null` value - * results in `'object'`. - * - * @param {Object} value - * @return {boolean} - */ - -function isObject$1(value) { - return !!value && typeof value === 'object'; -} -/** - * Returns whether an object appears to be a "plain" object - that is, a - * direct instance of `Object`. - * - * @param {Object} value - * @return {boolean} - */ - -function isPlain(value) { - return isObject$1(value) && toString$1.call(value) === '[object Object]' && value.constructor === Object; -} - -/** - * @file computed-style.js - * @module computed-style - */ -/** - * A safe getComputedStyle. - * - * This is needed because in Firefox, if the player is loaded in an iframe with - * `display:none`, then `getComputedStyle` returns `null`, so, we do a - * null-check to make sure that the player doesn't break in these cases. - * - * @function - * @param {Element} el - * The element you want the computed style of - * - * @param {string} prop - * The property name you want - * - * @see https://bugzilla.mozilla.org/show_bug.cgi?id=548397 - */ - -function computedStyle(el, prop) { - if (!el || !prop) { - return ''; - } - - if (typeof window_1$1.getComputedStyle === 'function') { - var computedStyleValue = window_1$1.getComputedStyle(el); - return computedStyleValue ? computedStyleValue.getPropertyValue(prop) || computedStyleValue[prop] : ''; - } - - return ''; -} - -/** - * @file dom.js - * @module dom - */ -/** - * Detect if a value is a string with any non-whitespace characters. - * - * @private - * @param {string} str - * The string to check - * - * @return {boolean} - * Will be `true` if the string is non-blank, `false` otherwise. - * - */ - -function isNonBlankString(str) { - // we use str.trim as it will trim any whitespace characters - // from the front or back of non-whitespace characters. aka - // Any string that contains non-whitespace characters will - // still contain them after `trim` but whitespace only strings - // will have a length of 0, failing this check. - return typeof str === 'string' && Boolean(str.trim()); -} -/** - * Throws an error if the passed string has whitespace. This is used by - * class methods to be relatively consistent with the classList API. - * - * @private - * @param {string} str - * The string to check for whitespace. - * - * @throws {Error} - * Throws an error if there is whitespace in the string. - */ - - -function throwIfWhitespace(str) { - // str.indexOf instead of regex because str.indexOf is faster performance wise. - if (str.indexOf(' ') >= 0) { - throw new Error('class has illegal whitespace characters'); - } -} -/** - * Produce a regular expression for matching a className within an elements className. - * - * @private - * @param {string} className - * The className to generate the RegExp for. - * - * @return {RegExp} - * The RegExp that will check for a specific `className` in an elements - * className. - */ - - -function classRegExp(className) { - return new RegExp('(^|\\s)' + className + '($|\\s)'); -} -/** - * Whether the current DOM interface appears to be real (i.e. not simulated). - * - * @return {boolean} - * Will be `true` if the DOM appears to be real, `false` otherwise. - */ - - -function isReal() { - // Both document and window will never be undefined thanks to `global`. - return document_1 === window_1$1.document; -} -/** - * Determines, via duck typing, whether or not a value is a DOM element. - * - * @param {Mixed} value - * The value to check. - * - * @return {boolean} - * Will be `true` if the value is a DOM element, `false` otherwise. - */ - -function isEl(value) { - return isObject$1(value) && value.nodeType === 1; -} -/** - * Determines if the current DOM is embedded in an iframe. - * - * @return {boolean} - * Will be `true` if the DOM is embedded in an iframe, `false` - * otherwise. - */ - -function isInFrame() { - // We need a try/catch here because Safari will throw errors when attempting - // to get either `parent` or `self` - try { - return window_1$1.parent !== window_1$1.self; - } catch (x) { - return true; - } -} -/** - * Creates functions to query the DOM using a given method. - * - * @private - * @param {string} method - * The method to create the query with. - * - * @return {Function} - * The query method - */ - -function createQuerier(method) { - return function (selector, context) { - if (!isNonBlankString(selector)) { - return document_1[method](null); - } - - if (isNonBlankString(context)) { - context = document_1.querySelector(context); - } - - var ctx = isEl(context) ? context : document_1; - return ctx[method] && ctx[method](selector); - }; -} -/** - * Creates an element and applies properties, attributes, and inserts content. - * - * @param {string} [tagName='div'] - * Name of tag to be created. - * - * @param {Object} [properties={}] - * Element properties to be applied. - * - * @param {Object} [attributes={}] - * Element attributes to be applied. - * - * @param {module:dom~ContentDescriptor} content - * A content descriptor object. - * - * @return {Element} - * The element that was created. - */ - - -function createEl(tagName, properties, attributes, content) { - if (tagName === void 0) { - tagName = 'div'; - } - - if (properties === void 0) { - properties = {}; - } - - if (attributes === void 0) { - attributes = {}; - } - - var el = document_1.createElement(tagName); - Object.getOwnPropertyNames(properties).forEach(function (propName) { - var val = properties[propName]; // See #2176 - // We originally were accepting both properties and attributes in the - // same object, but that doesn't work so well. - - if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') { - log.warn('Setting attributes in the second argument of createEl()\n' + 'has been deprecated. Use the third argument instead.\n' + ("createEl(type, properties, attributes). Attempting to set " + propName + " to " + val + ".")); - el.setAttribute(propName, val); // Handle textContent since it's not supported everywhere and we have a - // method for it. - } else if (propName === 'textContent') { - textContent(el, val); - } else if (el[propName] !== val) { - el[propName] = val; - } - }); - Object.getOwnPropertyNames(attributes).forEach(function (attrName) { - el.setAttribute(attrName, attributes[attrName]); - }); - - if (content) { - appendContent(el, content); - } - - return el; -} -/** - * Injects text into an element, replacing any existing contents entirely. - * - * @param {Element} el - * The element to add text content into - * - * @param {string} text - * The text content to add. - * - * @return {Element} - * The element with added text content. - */ - -function textContent(el, text) { - if (typeof el.textContent === 'undefined') { - el.innerText = text; - } else { - el.textContent = text; - } - - return el; -} -/** - * Insert an element as the first child node of another - * - * @param {Element} child - * Element to insert - * - * @param {Element} parent - * Element to insert child into - */ - -function prependTo(child, parent) { - if (parent.firstChild) { - parent.insertBefore(child, parent.firstChild); - } else { - parent.appendChild(child); - } -} -/** - * Check if an element has a class name. - * - * @param {Element} element - * Element to check - * - * @param {string} classToCheck - * Class name to check for - * - * @return {boolean} - * Will be `true` if the element has a class, `false` otherwise. - * - * @throws {Error} - * Throws an error if `classToCheck` has white space. - */ - -function hasClass(element, classToCheck) { - throwIfWhitespace(classToCheck); - - if (element.classList) { - return element.classList.contains(classToCheck); - } - - return classRegExp(classToCheck).test(element.className); -} -/** - * Add a class name to an element. - * - * @param {Element} element - * Element to add class name to. - * - * @param {string} classToAdd - * Class name to add. - * - * @return {Element} - * The DOM element with the added class name. - */ - -function addClass(element, classToAdd) { - if (element.classList) { - element.classList.add(classToAdd); // Don't need to `throwIfWhitespace` here because `hasElClass` will do it - // in the case of classList not being supported. - } else if (!hasClass(element, classToAdd)) { - element.className = (element.className + ' ' + classToAdd).trim(); - } - - return element; -} -/** - * Remove a class name from an element. - * - * @param {Element} element - * Element to remove a class name from. - * - * @param {string} classToRemove - * Class name to remove - * - * @return {Element} - * The DOM element with class name removed. - */ - -function removeClass(element, classToRemove) { - if (element.classList) { - element.classList.remove(classToRemove); - } else { - throwIfWhitespace(classToRemove); - element.className = element.className.split(/\s+/).filter(function (c) { - return c !== classToRemove; - }).join(' '); - } - - return element; -} -/** - * The callback definition for toggleClass. - * - * @callback module:dom~PredicateCallback - * @param {Element} element - * The DOM element of the Component. - * - * @param {string} classToToggle - * The `className` that wants to be toggled - * - * @return {boolean|undefined} - * If `true` is returned, the `classToToggle` will be added to the - * `element`. If `false`, the `classToToggle` will be removed from - * the `element`. If `undefined`, the callback will be ignored. - */ - -/** - * Adds or removes a class name to/from an element depending on an optional - * condition or the presence/absence of the class name. - * - * @param {Element} element - * The element to toggle a class name on. - * - * @param {string} classToToggle - * The class that should be toggled. - * - * @param {boolean|module:dom~PredicateCallback} [predicate] - * See the return value for {@link module:dom~PredicateCallback} - * - * @return {Element} - * The element with a class that has been toggled. - */ - -function toggleClass(element, classToToggle, predicate) { - // This CANNOT use `classList` internally because IE11 does not support the - // second parameter to the `classList.toggle()` method! Which is fine because - // `classList` will be used by the add/remove functions. - var has = hasClass(element, classToToggle); - - if (typeof predicate === 'function') { - predicate = predicate(element, classToToggle); - } - - if (typeof predicate !== 'boolean') { - predicate = !has; - } // If the necessary class operation matches the current state of the - // element, no action is required. - - - if (predicate === has) { - return; - } - - if (predicate) { - addClass(element, classToToggle); - } else { - removeClass(element, classToToggle); - } - - return element; -} -/** - * Apply attributes to an HTML element. - * - * @param {Element} el - * Element to add attributes to. - * - * @param {Object} [attributes] - * Attributes to be applied. - */ - -function setAttributes(el, attributes) { - Object.getOwnPropertyNames(attributes).forEach(function (attrName) { - var attrValue = attributes[attrName]; - - if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) { - el.removeAttribute(attrName); - } else { - el.setAttribute(attrName, attrValue === true ? '' : attrValue); - } - }); -} -/** - * Get an element's attribute values, as defined on the HTML tag. - * - * Attributes are not the same as properties. They're defined on the tag - * or with setAttribute. - * - * @param {Element} tag - * Element from which to get tag attributes. - * - * @return {Object} - * All attributes of the element. Boolean attributes will be `true` or - * `false`, others will be strings. - */ - -function getAttributes(tag) { - var obj = {}; // known boolean attributes - // we can check for matching boolean properties, but not all browsers - // and not all tags know about these attributes, so, we still want to check them manually - - var knownBooleans = ',' + 'autoplay,controls,playsinline,loop,muted,default,defaultMuted' + ','; - - if (tag && tag.attributes && tag.attributes.length > 0) { - var attrs = tag.attributes; - - for (var i = attrs.length - 1; i >= 0; i--) { - var attrName = attrs[i].name; - var attrVal = attrs[i].value; // check for known booleans - // the matching element property will return a value for typeof - - if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(',' + attrName + ',') !== -1) { - // the value of an included boolean attribute is typically an empty - // string ('') which would equal false if we just check for a false value. - // we also don't want support bad code like autoplay='false' - attrVal = attrVal !== null ? true : false; - } - - obj[attrName] = attrVal; - } - } - - return obj; -} -/** - * Get the value of an element's attribute. - * - * @param {Element} el - * A DOM element. - * - * @param {string} attribute - * Attribute to get the value of. - * - * @return {string} - * The value of the attribute. - */ - -function getAttribute(el, attribute) { - return el.getAttribute(attribute); -} -/** - * Set the value of an element's attribute. - * - * @param {Element} el - * A DOM element. - * - * @param {string} attribute - * Attribute to set. - * - * @param {string} value - * Value to set the attribute to. - */ - -function setAttribute(el, attribute, value) { - el.setAttribute(attribute, value); -} -/** - * Remove an element's attribute. - * - * @param {Element} el - * A DOM element. - * - * @param {string} attribute - * Attribute to remove. - */ - -function removeAttribute(el, attribute) { - el.removeAttribute(attribute); -} -/** - * Attempt to block the ability to select text. - */ - -function blockTextSelection() { - document_1.body.focus(); - - document_1.onselectstart = function () { - return false; - }; -} -/** - * Turn off text selection blocking. - */ - -function unblockTextSelection() { - document_1.onselectstart = function () { - return true; - }; -} -/** - * Identical to the native `getBoundingClientRect` function, but ensures that - * the method is supported at all (it is in all browsers we claim to support) - * and that the element is in the DOM before continuing. - * - * This wrapper function also shims properties which are not provided by some - * older browsers (namely, IE8). - * - * Additionally, some browsers do not support adding properties to a - * `ClientRect`/`DOMRect` object; so, we shallow-copy it with the standard - * properties (except `x` and `y` which are not widely supported). This helps - * avoid implementations where keys are non-enumerable. - * - * @param {Element} el - * Element whose `ClientRect` we want to calculate. - * - * @return {Object|undefined} - * Always returns a plain object - or `undefined` if it cannot. - */ - -function getBoundingClientRect(el) { - if (el && el.getBoundingClientRect && el.parentNode) { - var rect = el.getBoundingClientRect(); - var result = {}; - ['bottom', 'height', 'left', 'right', 'top', 'width'].forEach(function (k) { - if (rect[k] !== undefined) { - result[k] = rect[k]; - } - }); - - if (!result.height) { - result.height = parseFloat(computedStyle(el, 'height')); - } - - if (!result.width) { - result.width = parseFloat(computedStyle(el, 'width')); - } - - return result; - } -} -/** - * Represents the position of a DOM element on the page. - * - * @typedef {Object} module:dom~Position - * - * @property {number} left - * Pixels to the left. - * - * @property {number} top - * Pixels from the top. - */ - -/** - * Get the position of an element in the DOM. - * - * Uses `getBoundingClientRect` technique from John Resig. - * - * @see http://ejohn.org/blog/getboundingclientrect-is-awesome/ - * - * @param {Element} el - * Element from which to get offset. - * - * @return {module:dom~Position} - * The position of the element that was passed in. - */ - -function findPosition(el) { - if (!el || el && !el.offsetParent) { - return { - left: 0, - top: 0, - width: 0, - height: 0 - }; - } - - var width = el.offsetWidth; - var height = el.offsetHeight; - var left = 0; - var top = 0; - - do { - left += el.offsetLeft; - top += el.offsetTop; - el = el.offsetParent; - } while (el); - - return { - left: left, - top: top, - width: width, - height: height - }; -} -/** - * Represents x and y coordinates for a DOM element or mouse pointer. - * - * @typedef {Object} module:dom~Coordinates - * - * @property {number} x - * x coordinate in pixels - * - * @property {number} y - * y coordinate in pixels - */ - -/** - * Get the pointer position within an element. - * - * The base on the coordinates are the bottom left of the element. - * - * @param {Element} el - * Element on which to get the pointer position on. - * - * @param {EventTarget~Event} event - * Event object. - * - * @return {module:dom~Coordinates} - * A coordinates object corresponding to the mouse position. - * - */ - -function getPointerPosition(el, event) { - var position = {}; - var boxTarget = findPosition(event.target); - var box = findPosition(el); - var boxW = box.width; - var boxH = box.height; - var offsetY = event.offsetY - (box.top - boxTarget.top); - var offsetX = event.offsetX - (box.left - boxTarget.left); - - if (event.changedTouches) { - offsetX = event.changedTouches[0].pageX - box.left; - offsetY = event.changedTouches[0].pageY + box.top; - } - - position.y = 1 - Math.max(0, Math.min(1, offsetY / boxH)); - position.x = Math.max(0, Math.min(1, offsetX / boxW)); - return position; -} -/** - * Determines, via duck typing, whether or not a value is a text node. - * - * @param {Mixed} value - * Check if this value is a text node. - * - * @return {boolean} - * Will be `true` if the value is a text node, `false` otherwise. - */ - -function isTextNode(value) { - return isObject$1(value) && value.nodeType === 3; -} -/** - * Empties the contents of an element. - * - * @param {Element} el - * The element to empty children from - * - * @return {Element} - * The element with no children - */ - -function emptyEl(el) { - while (el.firstChild) { - el.removeChild(el.firstChild); - } - - return el; -} -/** - * This is a mixed value that describes content to be injected into the DOM - * via some method. It can be of the following types: - * - * Type | Description - * -----------|------------- - * `string` | The value will be normalized into a text node. - * `Element` | The value will be accepted as-is. - * `TextNode` | The value will be accepted as-is. - * `Array` | A one-dimensional array of strings, elements, text nodes, or functions. These functions should return a string, element, or text node (any other return value, like an array, will be ignored). - * `Function` | A function, which is expected to return a string, element, text node, or array - any of the other possible values described above. This means that a content descriptor could be a function that returns an array of functions, but those second-level functions must return strings, elements, or text nodes. - * - * @typedef {string|Element|TextNode|Array|Function} module:dom~ContentDescriptor - */ - -/** - * Normalizes content for eventual insertion into the DOM. - * - * This allows a wide range of content definition methods, but helps protect - * from falling into the trap of simply writing to `innerHTML`, which could - * be an XSS concern. - * - * The content for an element can be passed in multiple types and - * combinations, whose behavior is as follows: - * - * @param {module:dom~ContentDescriptor} content - * A content descriptor value. - * - * @return {Array} - * All of the content that was passed in, normalized to an array of - * elements or text nodes. - */ - -function normalizeContent(content) { - // First, invoke content if it is a function. If it produces an array, - // that needs to happen before normalization. - if (typeof content === 'function') { - content = content(); - } // Next up, normalize to an array, so one or many items can be normalized, - // filtered, and returned. - - - return (Array.isArray(content) ? content : [content]).map(function (value) { - // First, invoke value if it is a function to produce a new value, - // which will be subsequently normalized to a Node of some kind. - if (typeof value === 'function') { - value = value(); - } - - if (isEl(value) || isTextNode(value)) { - return value; - } - - if (typeof value === 'string' && /\S/.test(value)) { - return document_1.createTextNode(value); - } - }).filter(function (value) { - return value; - }); -} -/** - * Normalizes and appends content to an element. - * - * @param {Element} el - * Element to append normalized content to. - * - * @param {module:dom~ContentDescriptor} content - * A content descriptor value. - * - * @return {Element} - * The element with appended normalized content. - */ - -function appendContent(el, content) { - normalizeContent(content).forEach(function (node) { - return el.appendChild(node); - }); - return el; -} -/** - * Normalizes and inserts content into an element; this is identical to - * `appendContent()`, except it empties the element first. - * - * @param {Element} el - * Element to insert normalized content into. - * - * @param {module:dom~ContentDescriptor} content - * A content descriptor value. - * - * @return {Element} - * The element with inserted normalized content. - */ - -function insertContent(el, content) { - return appendContent(emptyEl(el), content); -} -/** - * Check if an event was a single left click. - * - * @param {EventTarget~Event} event - * Event object. - * - * @return {boolean} - * Will be `true` if a single left click, `false` otherwise. - */ - -function isSingleLeftClick(event) { - // Note: if you create something draggable, be sure to - // call it on both `mousedown` and `mousemove` event, - // otherwise `mousedown` should be enough for a button - if (event.button === undefined && event.buttons === undefined) { - // Why do we need `buttons` ? - // Because, middle mouse sometimes have this: - // e.button === 0 and e.buttons === 4 - // Furthermore, we want to prevent combination click, something like - // HOLD middlemouse then left click, that would be - // e.button === 0, e.buttons === 5 - // just `button` is not gonna work - // Alright, then what this block does ? - // this is for chrome `simulate mobile devices` - // I want to support this as well - return true; - } - - if (event.button === 0 && event.buttons === undefined) { - // Touch screen, sometimes on some specific device, `buttons` - // doesn't have anything (safari on ios, blackberry...) - return true; - } // `mouseup` event on a single left click has - // `button` and `buttons` equal to 0 - - - if (event.type === 'mouseup' && event.button === 0 && event.buttons === 0) { - return true; - } - - if (event.button !== 0 || event.buttons !== 1) { - // This is the reason we have those if else block above - // if any special case we can catch and let it slide - // we do it above, when get to here, this definitely - // is-not-left-click - return false; - } - - return true; -} -/** - * Finds a single DOM element matching `selector` within the optional - * `context` of another DOM element (defaulting to `document`). - * - * @param {string} selector - * A valid CSS selector, which will be passed to `querySelector`. - * - * @param {Element|String} [context=document] - * A DOM element within which to query. Can also be a selector - * string in which case the first matching element will be used - * as context. If missing (or no element matches selector), falls - * back to `document`. - * - * @return {Element|null} - * The element that was found or null. - */ - -var $ = createQuerier('querySelector'); -/** - * Finds a all DOM elements matching `selector` within the optional - * `context` of another DOM element (defaulting to `document`). - * - * @param {string} selector - * A valid CSS selector, which will be passed to `querySelectorAll`. - * - * @param {Element|String} [context=document] - * A DOM element within which to query. Can also be a selector - * string in which case the first matching element will be used - * as context. If missing (or no element matches selector), falls - * back to `document`. - * - * @return {NodeList} - * A element list of elements that were found. Will be empty if none - * were found. - * - */ - -var $$ = createQuerier('querySelectorAll'); - -var Dom = /*#__PURE__*/Object.freeze({ - __proto__: null, - isReal: isReal, - isEl: isEl, - isInFrame: isInFrame, - createEl: createEl, - textContent: textContent, - prependTo: prependTo, - hasClass: hasClass, - addClass: addClass, - removeClass: removeClass, - toggleClass: toggleClass, - setAttributes: setAttributes, - getAttributes: getAttributes, - getAttribute: getAttribute, - setAttribute: setAttribute, - removeAttribute: removeAttribute, - blockTextSelection: blockTextSelection, - unblockTextSelection: unblockTextSelection, - getBoundingClientRect: getBoundingClientRect, - findPosition: findPosition, - getPointerPosition: getPointerPosition, - isTextNode: isTextNode, - emptyEl: emptyEl, - normalizeContent: normalizeContent, - appendContent: appendContent, - insertContent: insertContent, - isSingleLeftClick: isSingleLeftClick, - $: $, - $$: $$ -}); - -/** - * @file setup.js - Functions for setting up a player without - * user interaction based on the data-setup `attribute` of the video tag. - * - * @module setup - */ -var _windowLoaded = false; -var videojs; -/** - * Set up any tags that have a data-setup `attribute` when the player is started. - */ - -var autoSetup = function autoSetup() { - // Protect against breakage in non-browser environments and check global autoSetup option. - if (!isReal() || videojs.options.autoSetup === false) { - return; - } - - var vids = Array.prototype.slice.call(document_1.getElementsByTagName('video')); - var audios = Array.prototype.slice.call(document_1.getElementsByTagName('audio')); - var divs = Array.prototype.slice.call(document_1.getElementsByTagName('video-js')); - var mediaEls = vids.concat(audios, divs); // Check if any media elements exist - - if (mediaEls && mediaEls.length > 0) { - for (var i = 0, e = mediaEls.length; i < e; i++) { - var mediaEl = mediaEls[i]; // Check if element exists, has getAttribute func. - - if (mediaEl && mediaEl.getAttribute) { - // Make sure this player hasn't already been set up. - if (mediaEl.player === undefined) { - var options = mediaEl.getAttribute('data-setup'); // Check if data-setup attr exists. - // We only auto-setup if they've added the data-setup attr. - - if (options !== null) { - // Create new video.js instance. - videojs(mediaEl); - } - } // If getAttribute isn't defined, we need to wait for the DOM. - - } else { - autoSetupTimeout(1); - break; - } - } // No videos were found, so keep looping unless page is finished loading. - - } else if (!_windowLoaded) { - autoSetupTimeout(1); - } -}; -/** - * Wait until the page is loaded before running autoSetup. This will be called in - * autoSetup if `hasLoaded` returns false. - * - * @param {number} wait - * How long to wait in ms - * - * @param {module:videojs} [vjs] - * The videojs library function - */ - - -function autoSetupTimeout(wait, vjs) { - if (vjs) { - videojs = vjs; - } - - window_1$1.setTimeout(autoSetup, wait); -} -/** - * Used to set the internal tracking of window loaded state to true. - * - * @private - */ - - -function setWindowLoaded() { - _windowLoaded = true; - window_1$1.removeEventListener('load', setWindowLoaded); -} - -if (isReal()) { - if (document_1.readyState === 'complete') { - setWindowLoaded(); - } else { - /** - * Listen for the load event on window, and set _windowLoaded to true. - * - * We use a standard event listener here to avoid incrementing the GUID - * before any players are created. - * - * @listens load - */ - window_1$1.addEventListener('load', setWindowLoaded); - } -} - -/** - * @file stylesheet.js - * @module stylesheet - */ -/** - * Create a DOM syle element given a className for it. - * - * @param {string} className - * The className to add to the created style element. - * - * @return {Element} - * The element that was created. - */ - -var createStyleElement = function createStyleElement(className) { - var style = document_1.createElement('style'); - style.className = className; - return style; -}; -/** - * Add text to a DOM element. - * - * @param {Element} el - * The Element to add text content to. - * - * @param {string} content - * The text to add to the element. - */ - -var setTextContent = function setTextContent(el, content) { - if (el.styleSheet) { - el.styleSheet.cssText = content; - } else { - el.textContent = content; - } -}; - -/** - * @file guid.js - * @module guid - */ -// Default value for GUIDs. This allows us to reset the GUID counter in tests. -// -// The initial GUID is 3 because some users have come to rely on the first -// default player ID ending up as `vjs_video_3`. -// -// See: https://github.com/videojs/video.js/pull/6216 -var _initialGuid = 3; -/** - * Unique ID for an element or function - * - * @type {Number} - */ - -var _guid = _initialGuid; -/** - * Get a unique auto-incrementing ID by number that has not been returned before. - * - * @return {number} - * A new unique ID. - */ - -function newGUID() { - return _guid++; -} - -/** - * @file dom-data.js - * @module dom-data - */ -var FakeWeakMap; - -if (!window_1$1.WeakMap) { - FakeWeakMap = /*#__PURE__*/function () { - function FakeWeakMap() { - this.vdata = 'vdata' + Math.floor(window_1$1.performance && window_1$1.performance.now() || Date.now()); - this.data = {}; - } - - var _proto = FakeWeakMap.prototype; - - _proto.set = function set(key, value) { - var access = key[this.vdata] || newGUID(); - - if (!key[this.vdata]) { - key[this.vdata] = access; - } - - this.data[access] = value; - return this; - }; - - _proto.get = function get(key) { - var access = key[this.vdata]; // we have data, return it - - if (access) { - return this.data[access]; - } // we don't have data, return nothing. - // return undefined explicitly as that's the contract for this method - - - log('We have no data for this element', key); - return undefined; - }; - - _proto.has = function has(key) { - var access = key[this.vdata]; - return access in this.data; - }; - - _proto["delete"] = function _delete(key) { - var access = key[this.vdata]; - - if (access) { - delete this.data[access]; - delete key[this.vdata]; - } - }; - - return FakeWeakMap; - }(); -} -/** - * Element Data Store. - * - * Allows for binding data to an element without putting it directly on the - * element. Ex. Event listeners are stored here. - * (also from jsninja.com, slightly modified and updated for closure compiler) - * - * @type {Object} - * @private - */ - - -var DomData = window_1$1.WeakMap ? new WeakMap() : new FakeWeakMap(); - -/** - * @file events.js. An Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/) - * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible) - * This should work very similarly to jQuery's events, however it's based off the book version which isn't as - * robust as jquery's, so there's probably some differences. - * - * @file events.js - * @module events - */ -/** - * Clean up the listener cache and dispatchers - * - * @param {Element|Object} elem - * Element to clean up - * - * @param {string} type - * Type of event to clean up - */ - -function _cleanUpEvents(elem, type) { - if (!DomData.has(elem)) { - return; - } - - var data = DomData.get(elem); // Remove the events of a particular type if there are none left - - if (data.handlers[type].length === 0) { - delete data.handlers[type]; // data.handlers[type] = null; - // Setting to null was causing an error with data.handlers - // Remove the meta-handler from the element - - if (elem.removeEventListener) { - elem.removeEventListener(type, data.dispatcher, false); - } else if (elem.detachEvent) { - elem.detachEvent('on' + type, data.dispatcher); - } - } // Remove the events object if there are no types left - - - if (Object.getOwnPropertyNames(data.handlers).length <= 0) { - delete data.handlers; - delete data.dispatcher; - delete data.disabled; - } // Finally remove the element data if there is no data left - - - if (Object.getOwnPropertyNames(data).length === 0) { - DomData["delete"](elem); - } -} -/** - * Loops through an array of event types and calls the requested method for each type. - * - * @param {Function} fn - * The event method we want to use. - * - * @param {Element|Object} elem - * Element or object to bind listeners to - * - * @param {string} type - * Type of event to bind to. - * - * @param {EventTarget~EventListener} callback - * Event listener. - */ - - -function _handleMultipleEvents(fn, elem, types, callback) { - types.forEach(function (type) { - // Call the event method for each one of the types - fn(elem, type, callback); - }); -} -/** - * Fix a native event to have standard property values - * - * @param {Object} event - * Event object to fix. - * - * @return {Object} - * Fixed event object. - */ - - -function fixEvent(event) { - if (event.fixed_) { - return event; - } - - function returnTrue() { - return true; - } - - function returnFalse() { - return false; - } // Test if fixing up is needed - // Used to check if !event.stopPropagation instead of isPropagationStopped - // But native events return true for stopPropagation, but don't have - // other expected methods like isPropagationStopped. Seems to be a problem - // with the Javascript Ninja code. So we're just overriding all events now. - - - if (!event || !event.isPropagationStopped) { - var old = event || window_1$1.event; - event = {}; // Clone the old object so that we can modify the values event = {}; - // IE8 Doesn't like when you mess with native event properties - // Firefox returns false for event.hasOwnProperty('type') and other props - // which makes copying more difficult. - // TODO: Probably best to create a whitelist of event props - - for (var key in old) { - // Safari 6.0.3 warns you if you try to copy deprecated layerX/Y - // Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation - // and webkitMovementX/Y - if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation' && key !== 'webkitMovementX' && key !== 'webkitMovementY') { - // Chrome 32+ warns if you try to copy deprecated returnValue, but - // we still want to if preventDefault isn't supported (IE8). - if (!(key === 'returnValue' && old.preventDefault)) { - event[key] = old[key]; - } - } - } // The event occurred on this element - - - if (!event.target) { - event.target = event.srcElement || document_1; - } // Handle which other element the event is related to - - - if (!event.relatedTarget) { - event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement; - } // Stop the default browser action - - - event.preventDefault = function () { - if (old.preventDefault) { - old.preventDefault(); - } - - event.returnValue = false; - old.returnValue = false; - event.defaultPrevented = true; - }; - - event.defaultPrevented = false; // Stop the event from bubbling - - event.stopPropagation = function () { - if (old.stopPropagation) { - old.stopPropagation(); - } - - event.cancelBubble = true; - old.cancelBubble = true; - event.isPropagationStopped = returnTrue; - }; - - event.isPropagationStopped = returnFalse; // Stop the event from bubbling and executing other handlers - - event.stopImmediatePropagation = function () { - if (old.stopImmediatePropagation) { - old.stopImmediatePropagation(); - } - - event.isImmediatePropagationStopped = returnTrue; - event.stopPropagation(); - }; - - event.isImmediatePropagationStopped = returnFalse; // Handle mouse position - - if (event.clientX !== null && event.clientX !== undefined) { - var doc = document_1.documentElement; - var body = document_1.body; - event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); - event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); - } // Handle key presses - - - event.which = event.charCode || event.keyCode; // Fix button for mouse clicks: - // 0 == left; 1 == middle; 2 == right - - if (event.button !== null && event.button !== undefined) { - // The following is disabled because it does not pass videojs-standard - // and... yikes. - - /* eslint-disable */ - event.button = event.button & 1 ? 0 : event.button & 4 ? 1 : event.button & 2 ? 2 : 0; - /* eslint-enable */ - } - } - - event.fixed_ = true; // Returns fixed-up instance - - return event; -} -/** - * Whether passive event listeners are supported - */ - -var _supportsPassive; - -var supportsPassive = function supportsPassive() { - if (typeof _supportsPassive !== 'boolean') { - _supportsPassive = false; - - try { - var opts = Object.defineProperty({}, 'passive', { - get: function get() { - _supportsPassive = true; - } - }); - window_1$1.addEventListener('test', null, opts); - window_1$1.removeEventListener('test', null, opts); - } catch (e) {// disregard - } - } - - return _supportsPassive; -}; -/** - * Touch events Chrome expects to be passive - */ - - -var passiveEvents = ['touchstart', 'touchmove']; -/** - * Add an event listener to element - * It stores the handler function in a separate cache object - * and adds a generic handler to the element's event, - * along with a unique id (guid) to the element. - * - * @param {Element|Object} elem - * Element or object to bind listeners to - * - * @param {string|string[]} type - * Type of event to bind to. - * - * @param {EventTarget~EventListener} fn - * Event listener. - */ - -function on(elem, type, fn) { - if (Array.isArray(type)) { - return _handleMultipleEvents(on, elem, type, fn); - } - - if (!DomData.has(elem)) { - DomData.set(elem, {}); - } - - var data = DomData.get(elem); // We need a place to store all our handler data - - if (!data.handlers) { - data.handlers = {}; - } - - if (!data.handlers[type]) { - data.handlers[type] = []; - } - - if (!fn.guid) { - fn.guid = newGUID(); - } - - data.handlers[type].push(fn); - - if (!data.dispatcher) { - data.disabled = false; - - data.dispatcher = function (event, hash) { - if (data.disabled) { - return; - } - - event = fixEvent(event); - var handlers = data.handlers[event.type]; - - if (handlers) { - // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off. - var handlersCopy = handlers.slice(0); - - for (var m = 0, n = handlersCopy.length; m < n; m++) { - if (event.isImmediatePropagationStopped()) { - break; - } else { - try { - handlersCopy[m].call(elem, event, hash); - } catch (e) { - log.error(e); - } - } - } - } - }; - } - - if (data.handlers[type].length === 1) { - if (elem.addEventListener) { - var options = false; - - if (supportsPassive() && passiveEvents.indexOf(type) > -1) { - options = { - passive: true - }; - } - - elem.addEventListener(type, data.dispatcher, options); - } else if (elem.attachEvent) { - elem.attachEvent('on' + type, data.dispatcher); - } - } -} -/** - * Removes event listeners from an element - * - * @param {Element|Object} elem - * Object to remove listeners from. - * - * @param {string|string[]} [type] - * Type of listener to remove. Don't include to remove all events from element. - * - * @param {EventTarget~EventListener} [fn] - * Specific listener to remove. Don't include to remove listeners for an event - * type. - */ - -function off(elem, type, fn) { - // Don't want to add a cache object through getElData if not needed - if (!DomData.has(elem)) { - return; - } - - var data = DomData.get(elem); // If no events exist, nothing to unbind - - if (!data.handlers) { - return; - } - - if (Array.isArray(type)) { - return _handleMultipleEvents(off, elem, type, fn); - } // Utility function - - - var removeType = function removeType(el, t) { - data.handlers[t] = []; - - _cleanUpEvents(el, t); - }; // Are we removing all bound events? - - - if (type === undefined) { - for (var t in data.handlers) { - if (Object.prototype.hasOwnProperty.call(data.handlers || {}, t)) { - removeType(elem, t); - } - } - - return; - } - - var handlers = data.handlers[type]; // If no handlers exist, nothing to unbind - - if (!handlers) { - return; - } // If no listener was provided, remove all listeners for type - - - if (!fn) { - removeType(elem, type); - return; - } // We're only removing a single handler - - - if (fn.guid) { - for (var n = 0; n < handlers.length; n++) { - if (handlers[n].guid === fn.guid) { - handlers.splice(n--, 1); - } - } - } - - _cleanUpEvents(elem, type); -} -/** - * Trigger an event for an element - * - * @param {Element|Object} elem - * Element to trigger an event on - * - * @param {EventTarget~Event|string} event - * A string (the type) or an event object with a type attribute - * - * @param {Object} [hash] - * data hash to pass along with the event - * - * @return {boolean|undefined} - * Returns the opposite of `defaultPrevented` if default was - * prevented. Otherwise, returns `undefined` - */ - -function trigger(elem, event, hash) { - // Fetches element data and a reference to the parent (for bubbling). - // Don't want to add a data object to cache for every parent, - // so checking hasElData first. - var elemData = DomData.has(elem) ? DomData.get(elem) : {}; - var parent = elem.parentNode || elem.ownerDocument; // type = event.type || event, - // handler; - // If an event name was passed as a string, creates an event out of it - - if (typeof event === 'string') { - event = { - type: event, - target: elem - }; - } else if (!event.target) { - event.target = elem; - } // Normalizes the event properties. - - - event = fixEvent(event); // If the passed element has a dispatcher, executes the established handlers. - - if (elemData.dispatcher) { - elemData.dispatcher.call(elem, event, hash); - } // Unless explicitly stopped or the event does not bubble (e.g. media events) - // recursively calls this function to bubble the event up the DOM. - - - if (parent && !event.isPropagationStopped() && event.bubbles === true) { - trigger.call(null, parent, event, hash); // If at the top of the DOM, triggers the default action unless disabled. - } else if (!parent && !event.defaultPrevented && event.target && event.target[event.type]) { - if (!DomData.has(event.target)) { - DomData.set(event.target, {}); - } - - var targetData = DomData.get(event.target); // Checks if the target has a default action for this event. - - if (event.target[event.type]) { - // Temporarily disables event dispatching on the target as we have already executed the handler. - targetData.disabled = true; // Executes the default action. - - if (typeof event.target[event.type] === 'function') { - event.target[event.type](); - } // Re-enables event dispatching. - - - targetData.disabled = false; - } - } // Inform the triggerer if the default was prevented by returning false - - - return !event.defaultPrevented; -} -/** - * Trigger a listener only once for an event. - * - * @param {Element|Object} elem - * Element or object to bind to. - * - * @param {string|string[]} type - * Name/type of event - * - * @param {Event~EventListener} fn - * Event listener function - */ - -function one(elem, type, fn) { - if (Array.isArray(type)) { - return _handleMultipleEvents(one, elem, type, fn); - } - - var func = function func() { - off(elem, type, func); - fn.apply(this, arguments); - }; // copy the guid to the new function so it can removed using the original function's ID - - - func.guid = fn.guid = fn.guid || newGUID(); - on(elem, type, func); -} -/** - * Trigger a listener only once and then turn if off for all - * configured events - * - * @param {Element|Object} elem - * Element or object to bind to. - * - * @param {string|string[]} type - * Name/type of event - * - * @param {Event~EventListener} fn - * Event listener function - */ - -function any(elem, type, fn) { - var func = function func() { - off(elem, type, func); - fn.apply(this, arguments); - }; // copy the guid to the new function so it can removed using the original function's ID - - - func.guid = fn.guid = fn.guid || newGUID(); // multiple ons, but one off for everything - - on(elem, type, func); -} - -var Events = /*#__PURE__*/Object.freeze({ - __proto__: null, - fixEvent: fixEvent, - on: on, - off: off, - trigger: trigger, - one: one, - any: any -}); - -/** - * @file fn.js - * @module fn - */ -var UPDATE_REFRESH_INTERVAL = 30; -/** - * Bind (a.k.a proxy or context). A simple method for changing the context of - * a function. - * - * It also stores a unique id on the function so it can be easily removed from - * events. - * - * @function - * @param {Mixed} context - * The object to bind as scope. - * - * @param {Function} fn - * The function to be bound to a scope. - * - * @param {number} [uid] - * An optional unique ID for the function to be set - * - * @return {Function} - * The new function that will be bound into the context given - */ - -var bind = function bind(context, fn, uid) { - // Make sure the function has a unique ID - if (!fn.guid) { - fn.guid = newGUID(); - } // Create the new function that changes the context - - - var bound = fn.bind(context); // Allow for the ability to individualize this function - // Needed in the case where multiple objects might share the same prototype - // IF both items add an event listener with the same function, then you try to remove just one - // it will remove both because they both have the same guid. - // when using this, you need to use the bind method when you remove the listener as well. - // currently used in text tracks - - bound.guid = uid ? uid + '_' + fn.guid : fn.guid; - return bound; -}; -/** - * Wraps the given function, `fn`, with a new function that only invokes `fn` - * at most once per every `wait` milliseconds. - * - * @function - * @param {Function} fn - * The function to be throttled. - * - * @param {number} wait - * The number of milliseconds by which to throttle. - * - * @return {Function} - */ - -var throttle = function throttle(fn, wait) { - var last = window_1$1.performance.now(); - - var throttled = function throttled() { - var now = window_1$1.performance.now(); - - if (now - last >= wait) { - fn.apply(void 0, arguments); - last = now; - } - }; - - return throttled; -}; -/** - * Creates a debounced function that delays invoking `func` until after `wait` - * milliseconds have elapsed since the last time the debounced function was - * invoked. - * - * Inspired by lodash and underscore implementations. - * - * @function - * @param {Function} func - * The function to wrap with debounce behavior. - * - * @param {number} wait - * The number of milliseconds to wait after the last invocation. - * - * @param {boolean} [immediate] - * Whether or not to invoke the function immediately upon creation. - * - * @param {Object} [context=window] - * The "context" in which the debounced function should debounce. For - * example, if this function should be tied to a Video.js player, - * the player can be passed here. Alternatively, defaults to the - * global `window` object. - * - * @return {Function} - * A debounced function. - */ - -var debounce = function debounce(func, wait, immediate, context) { - if (context === void 0) { - context = window_1$1; - } - - var timeout; - - var cancel = function cancel() { - context.clearTimeout(timeout); - timeout = null; - }; - /* eslint-disable consistent-this */ - - - var debounced = function debounced() { - var self = this; - var args = arguments; - - var _later = function later() { - timeout = null; - _later = null; - - if (!immediate) { - func.apply(self, args); - } - }; - - if (!timeout && immediate) { - func.apply(self, args); - } - - context.clearTimeout(timeout); - timeout = context.setTimeout(_later, wait); - }; - /* eslint-enable consistent-this */ - - - debounced.cancel = cancel; - return debounced; -}; - -/** - * @file src/js/event-target.js - */ -/** - * `EventTarget` is a class that can have the same API as the DOM `EventTarget`. It - * adds shorthand functions that wrap around lengthy functions. For example: - * the `on` function is a wrapper around `addEventListener`. - * - * @see [EventTarget Spec]{@link https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventTarget} - * @class EventTarget - */ - -var EventTarget = function EventTarget() {}; -/** - * A Custom DOM event. - * - * @typedef {Object} EventTarget~Event - * @see [Properties]{@link https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent} - */ - -/** - * All event listeners should follow the following format. - * - * @callback EventTarget~EventListener - * @this {EventTarget} - * - * @param {EventTarget~Event} event - * the event that triggered this function - * - * @param {Object} [hash] - * hash of data sent during the event - */ - -/** - * An object containing event names as keys and booleans as values. - * - * > NOTE: If an event name is set to a true value here {@link EventTarget#trigger} - * will have extra functionality. See that function for more information. - * - * @property EventTarget.prototype.allowedEvents_ - * @private - */ - - -EventTarget.prototype.allowedEvents_ = {}; -/** - * Adds an `event listener` to an instance of an `EventTarget`. An `event listener` is a - * function that will get called when an event with a certain name gets triggered. - * - * @param {string|string[]} type - * An event name or an array of event names. - * - * @param {EventTarget~EventListener} fn - * The function to call with `EventTarget`s - */ - -EventTarget.prototype.on = function (type, fn) { - // Remove the addEventListener alias before calling Events.on - // so we don't get into an infinite type loop - var ael = this.addEventListener; - - this.addEventListener = function () {}; - - on(this, type, fn); - this.addEventListener = ael; -}; -/** - * An alias of {@link EventTarget#on}. Allows `EventTarget` to mimic - * the standard DOM API. - * - * @function - * @see {@link EventTarget#on} - */ - - -EventTarget.prototype.addEventListener = EventTarget.prototype.on; -/** - * Removes an `event listener` for a specific event from an instance of `EventTarget`. - * This makes it so that the `event listener` will no longer get called when the - * named event happens. - * - * @param {string|string[]} type - * An event name or an array of event names. - * - * @param {EventTarget~EventListener} fn - * The function to remove. - */ - -EventTarget.prototype.off = function (type, fn) { - off(this, type, fn); -}; -/** - * An alias of {@link EventTarget#off}. Allows `EventTarget` to mimic - * the standard DOM API. - * - * @function - * @see {@link EventTarget#off} - */ - - -EventTarget.prototype.removeEventListener = EventTarget.prototype.off; -/** - * This function will add an `event listener` that gets triggered only once. After the - * first trigger it will get removed. This is like adding an `event listener` - * with {@link EventTarget#on} that calls {@link EventTarget#off} on itself. - * - * @param {string|string[]} type - * An event name or an array of event names. - * - * @param {EventTarget~EventListener} fn - * The function to be called once for each event name. - */ - -EventTarget.prototype.one = function (type, fn) { - // Remove the addEventListener aliasing Events.on - // so we don't get into an infinite type loop - var ael = this.addEventListener; - - this.addEventListener = function () {}; - - one(this, type, fn); - this.addEventListener = ael; -}; - -EventTarget.prototype.any = function (type, fn) { - // Remove the addEventListener aliasing Events.on - // so we don't get into an infinite type loop - var ael = this.addEventListener; - - this.addEventListener = function () {}; - - any(this, type, fn); - this.addEventListener = ael; -}; -/** - * This function causes an event to happen. This will then cause any `event listeners` - * that are waiting for that event, to get called. If there are no `event listeners` - * for an event then nothing will happen. - * - * If the name of the `Event` that is being triggered is in `EventTarget.allowedEvents_`. - * Trigger will also call the `on` + `uppercaseEventName` function. - * - * Example: - * 'click' is in `EventTarget.allowedEvents_`, so, trigger will attempt to call - * `onClick` if it exists. - * - * @param {string|EventTarget~Event|Object} event - * The name of the event, an `Event`, or an object with a key of type set to - * an event name. - */ - - -EventTarget.prototype.trigger = function (event) { - var type = event.type || event; // deprecation - // In a future version we should default target to `this` - // similar to how we default the target to `elem` in - // `Events.trigger`. Right now the default `target` will be - // `document` due to the `Event.fixEvent` call. - - if (typeof event === 'string') { - event = { - type: type - }; - } - - event = fixEvent(event); - - if (this.allowedEvents_[type] && this['on' + type]) { - this['on' + type](event); - } - - trigger(this, event); -}; -/** - * An alias of {@link EventTarget#trigger}. Allows `EventTarget` to mimic - * the standard DOM API. - * - * @function - * @see {@link EventTarget#trigger} - */ - - -EventTarget.prototype.dispatchEvent = EventTarget.prototype.trigger; -var EVENT_MAP; - -EventTarget.prototype.queueTrigger = function (event) { - var _this = this; - - // only set up EVENT_MAP if it'll be used - if (!EVENT_MAP) { - EVENT_MAP = new Map(); - } - - var type = event.type || event; - var map = EVENT_MAP.get(this); - - if (!map) { - map = new Map(); - EVENT_MAP.set(this, map); - } - - var oldTimeout = map.get(type); - map["delete"](type); - window_1$1.clearTimeout(oldTimeout); - var timeout = window_1$1.setTimeout(function () { - // if we cleared out all timeouts for the current target, delete its map - if (map.size === 0) { - map = null; - EVENT_MAP["delete"](_this); - } - - _this.trigger(event); - }, 0); - map.set(type, timeout); -}; - -/** - * @file mixins/evented.js - * @module evented - */ -/** - * Returns whether or not an object has had the evented mixin applied. - * - * @param {Object} object - * An object to test. - * - * @return {boolean} - * Whether or not the object appears to be evented. - */ - -var isEvented = function isEvented(object) { - return object instanceof EventTarget || !!object.eventBusEl_ && ['on', 'one', 'off', 'trigger'].every(function (k) { - return typeof object[k] === 'function'; - }); -}; -/** - * Adds a callback to run after the evented mixin applied. - * - * @param {Object} object - * An object to Add - * @param {Function} callback - * The callback to run. - */ - - -var addEventedCallback = function addEventedCallback(target, callback) { - if (isEvented(target)) { - callback(); - } else { - if (!target.eventedCallbacks) { - target.eventedCallbacks = []; - } - - target.eventedCallbacks.push(callback); - } -}; -/** - * Whether a value is a valid event type - non-empty string or array. - * - * @private - * @param {string|Array} type - * The type value to test. - * - * @return {boolean} - * Whether or not the type is a valid event type. - */ - - -var isValidEventType = function isValidEventType(type) { - return (// The regex here verifies that the `type` contains at least one non- - // whitespace character. - typeof type === 'string' && /\S/.test(type) || Array.isArray(type) && !!type.length - ); -}; -/** - * Validates a value to determine if it is a valid event target. Throws if not. - * - * @private - * @throws {Error} - * If the target does not appear to be a valid event target. - * - * @param {Object} target - * The object to test. - */ - - -var validateTarget = function validateTarget(target) { - if (!target.nodeName && !isEvented(target)) { - throw new Error('Invalid target; must be a DOM node or evented object.'); - } -}; -/** - * Validates a value to determine if it is a valid event target. Throws if not. - * - * @private - * @throws {Error} - * If the type does not appear to be a valid event type. - * - * @param {string|Array} type - * The type to test. - */ - - -var validateEventType = function validateEventType(type) { - if (!isValidEventType(type)) { - throw new Error('Invalid event type; must be a non-empty string or array.'); - } -}; -/** - * Validates a value to determine if it is a valid listener. Throws if not. - * - * @private - * @throws {Error} - * If the listener is not a function. - * - * @param {Function} listener - * The listener to test. - */ - - -var validateListener = function validateListener(listener) { - if (typeof listener !== 'function') { - throw new Error('Invalid listener; must be a function.'); - } -}; -/** - * Takes an array of arguments given to `on()` or `one()`, validates them, and - * normalizes them into an object. - * - * @private - * @param {Object} self - * The evented object on which `on()` or `one()` was called. This - * object will be bound as the `this` value for the listener. - * - * @param {Array} args - * An array of arguments passed to `on()` or `one()`. - * - * @return {Object} - * An object containing useful values for `on()` or `one()` calls. - */ - - -var normalizeListenArgs = function normalizeListenArgs(self, args) { - // If the number of arguments is less than 3, the target is always the - // evented object itself. - var isTargetingSelf = args.length < 3 || args[0] === self || args[0] === self.eventBusEl_; - var target; - var type; - var listener; - - if (isTargetingSelf) { - target = self.eventBusEl_; // Deal with cases where we got 3 arguments, but we are still listening to - // the evented object itself. - - if (args.length >= 3) { - args.shift(); - } - - type = args[0]; - listener = args[1]; - } else { - target = args[0]; - type = args[1]; - listener = args[2]; - } - - validateTarget(target); - validateEventType(type); - validateListener(listener); - listener = bind(self, listener); - return { - isTargetingSelf: isTargetingSelf, - target: target, - type: type, - listener: listener - }; -}; -/** - * Adds the listener to the event type(s) on the target, normalizing for - * the type of target. - * - * @private - * @param {Element|Object} target - * A DOM node or evented object. - * - * @param {string} method - * The event binding method to use ("on" or "one"). - * - * @param {string|Array} type - * One or more event type(s). - * - * @param {Function} listener - * A listener function. - */ - - -var listen = function listen(target, method, type, listener) { - validateTarget(target); - - if (target.nodeName) { - Events[method](target, type, listener); - } else { - target[method](type, listener); - } -}; -/** - * Contains methods that provide event capabilities to an object which is passed - * to {@link module:evented|evented}. - * - * @mixin EventedMixin - */ - - -var EventedMixin = { - /** - * Add a listener to an event (or events) on this object or another evented - * object. - * - * @param {string|Array|Element|Object} targetOrType - * If this is a string or array, it represents the event type(s) - * that will trigger the listener. - * - * Another evented object can be passed here instead, which will - * cause the listener to listen for events on _that_ object. - * - * In either case, the listener's `this` value will be bound to - * this object. - * - * @param {string|Array|Function} typeOrListener - * If the first argument was a string or array, this should be the - * listener function. Otherwise, this is a string or array of event - * type(s). - * - * @param {Function} [listener] - * If the first argument was another evented object, this will be - * the listener function. - */ - on: function on() { - var _this = this; - - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - var _normalizeListenArgs = normalizeListenArgs(this, args), - isTargetingSelf = _normalizeListenArgs.isTargetingSelf, - target = _normalizeListenArgs.target, - type = _normalizeListenArgs.type, - listener = _normalizeListenArgs.listener; - - listen(target, 'on', type, listener); // If this object is listening to another evented object. - - if (!isTargetingSelf) { - // If this object is disposed, remove the listener. - var removeListenerOnDispose = function removeListenerOnDispose() { - return _this.off(target, type, listener); - }; // Use the same function ID as the listener so we can remove it later it - // using the ID of the original listener. - - - removeListenerOnDispose.guid = listener.guid; // Add a listener to the target's dispose event as well. This ensures - // that if the target is disposed BEFORE this object, we remove the - // removal listener that was just added. Otherwise, we create a memory leak. - - var removeRemoverOnTargetDispose = function removeRemoverOnTargetDispose() { - return _this.off('dispose', removeListenerOnDispose); - }; // Use the same function ID as the listener so we can remove it later - // it using the ID of the original listener. - - - removeRemoverOnTargetDispose.guid = listener.guid; - listen(this, 'on', 'dispose', removeListenerOnDispose); - listen(target, 'on', 'dispose', removeRemoverOnTargetDispose); - } - }, - - /** - * Add a listener to an event (or events) on this object or another evented - * object. The listener will be called once per event and then removed. - * - * @param {string|Array|Element|Object} targetOrType - * If this is a string or array, it represents the event type(s) - * that will trigger the listener. - * - * Another evented object can be passed here instead, which will - * cause the listener to listen for events on _that_ object. - * - * In either case, the listener's `this` value will be bound to - * this object. - * - * @param {string|Array|Function} typeOrListener - * If the first argument was a string or array, this should be the - * listener function. Otherwise, this is a string or array of event - * type(s). - * - * @param {Function} [listener] - * If the first argument was another evented object, this will be - * the listener function. - */ - one: function one() { - var _this2 = this; - - for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - var _normalizeListenArgs2 = normalizeListenArgs(this, args), - isTargetingSelf = _normalizeListenArgs2.isTargetingSelf, - target = _normalizeListenArgs2.target, - type = _normalizeListenArgs2.type, - listener = _normalizeListenArgs2.listener; // Targeting this evented object. - - - if (isTargetingSelf) { - listen(target, 'one', type, listener); // Targeting another evented object. - } else { - // TODO: This wrapper is incorrect! It should only - // remove the wrapper for the event type that called it. - // Instead all listners are removed on the first trigger! - // see https://github.com/videojs/video.js/issues/5962 - var wrapper = function wrapper() { - _this2.off(target, type, wrapper); - - for (var _len3 = arguments.length, largs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - largs[_key3] = arguments[_key3]; - } - - listener.apply(null, largs); - }; // Use the same function ID as the listener so we can remove it later - // it using the ID of the original listener. - - - wrapper.guid = listener.guid; - listen(target, 'one', type, wrapper); - } - }, - - /** - * Add a listener to an event (or events) on this object or another evented - * object. The listener will only be called once for the first event that is triggered - * then removed. - * - * @param {string|Array|Element|Object} targetOrType - * If this is a string or array, it represents the event type(s) - * that will trigger the listener. - * - * Another evented object can be passed here instead, which will - * cause the listener to listen for events on _that_ object. - * - * In either case, the listener's `this` value will be bound to - * this object. - * - * @param {string|Array|Function} typeOrListener - * If the first argument was a string or array, this should be the - * listener function. Otherwise, this is a string or array of event - * type(s). - * - * @param {Function} [listener] - * If the first argument was another evented object, this will be - * the listener function. - */ - any: function any() { - var _this3 = this; - - for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - args[_key4] = arguments[_key4]; - } - - var _normalizeListenArgs3 = normalizeListenArgs(this, args), - isTargetingSelf = _normalizeListenArgs3.isTargetingSelf, - target = _normalizeListenArgs3.target, - type = _normalizeListenArgs3.type, - listener = _normalizeListenArgs3.listener; // Targeting this evented object. - - - if (isTargetingSelf) { - listen(target, 'any', type, listener); // Targeting another evented object. - } else { - var wrapper = function wrapper() { - _this3.off(target, type, wrapper); - - for (var _len5 = arguments.length, largs = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { - largs[_key5] = arguments[_key5]; - } - - listener.apply(null, largs); - }; // Use the same function ID as the listener so we can remove it later - // it using the ID of the original listener. - - - wrapper.guid = listener.guid; - listen(target, 'any', type, wrapper); - } - }, - - /** - * Removes listener(s) from event(s) on an evented object. - * - * @param {string|Array|Element|Object} [targetOrType] - * If this is a string or array, it represents the event type(s). - * - * Another evented object can be passed here instead, in which case - * ALL 3 arguments are _required_. - * - * @param {string|Array|Function} [typeOrListener] - * If the first argument was a string or array, this may be the - * listener function. Otherwise, this is a string or array of event - * type(s). - * - * @param {Function} [listener] - * If the first argument was another evented object, this will be - * the listener function; otherwise, _all_ listeners bound to the - * event type(s) will be removed. - */ - off: function off$1(targetOrType, typeOrListener, listener) { - // Targeting this evented object. - if (!targetOrType || isValidEventType(targetOrType)) { - off(this.eventBusEl_, targetOrType, typeOrListener); // Targeting another evented object. - } else { - var target = targetOrType; - var type = typeOrListener; // Fail fast and in a meaningful way! - - validateTarget(target); - validateEventType(type); - validateListener(listener); // Ensure there's at least a guid, even if the function hasn't been used - - listener = bind(this, listener); // Remove the dispose listener on this evented object, which was given - // the same guid as the event listener in on(). - - this.off('dispose', listener); - - if (target.nodeName) { - off(target, type, listener); - off(target, 'dispose', listener); - } else if (isEvented(target)) { - target.off(type, listener); - target.off('dispose', listener); - } - } - }, - - /** - * Fire an event on this evented object, causing its listeners to be called. - * - * @param {string|Object} event - * An event type or an object with a type property. - * - * @param {Object} [hash] - * An additional object to pass along to listeners. - * - * @return {boolean} - * Whether or not the default behavior was prevented. - */ - trigger: function trigger$1(event, hash) { - return trigger(this.eventBusEl_, event, hash); - } -}; -/** - * Applies {@link module:evented~EventedMixin|EventedMixin} to a target object. - * - * @param {Object} target - * The object to which to add event methods. - * - * @param {Object} [options={}] - * Options for customizing the mixin behavior. - * - * @param {string} [options.eventBusKey] - * By default, adds a `eventBusEl_` DOM element to the target object, - * which is used as an event bus. If the target object already has a - * DOM element that should be used, pass its key here. - * - * @return {Object} - * The target object. - */ - -function evented(target, options) { - if (options === void 0) { - options = {}; - } - - var _options = options, - eventBusKey = _options.eventBusKey; // Set or create the eventBusEl_. - - if (eventBusKey) { - if (!target[eventBusKey].nodeName) { - throw new Error("The eventBusKey \"" + eventBusKey + "\" does not refer to an element."); - } - - target.eventBusEl_ = target[eventBusKey]; - } else { - target.eventBusEl_ = createEl('span', { - className: 'vjs-event-bus' - }); - } - - assign(target, EventedMixin); - - if (target.eventedCallbacks) { - target.eventedCallbacks.forEach(function (callback) { - callback(); - }); - } // When any evented object is disposed, it removes all its listeners. - - - target.on('dispose', function () { - target.off(); - window_1$1.setTimeout(function () { - target.eventBusEl_ = null; - }, 0); - }); - return target; -} - -/** - * @file mixins/stateful.js - * @module stateful - */ -/** - * Contains methods that provide statefulness to an object which is passed - * to {@link module:stateful}. - * - * @mixin StatefulMixin - */ - -var StatefulMixin = { - /** - * A hash containing arbitrary keys and values representing the state of - * the object. - * - * @type {Object} - */ - state: {}, - - /** - * Set the state of an object by mutating its - * {@link module:stateful~StatefulMixin.state|state} object in place. - * - * @fires module:stateful~StatefulMixin#statechanged - * @param {Object|Function} stateUpdates - * A new set of properties to shallow-merge into the plugin state. - * Can be a plain object or a function returning a plain object. - * - * @return {Object|undefined} - * An object containing changes that occurred. If no changes - * occurred, returns `undefined`. - */ - setState: function setState(stateUpdates) { - var _this = this; - - // Support providing the `stateUpdates` state as a function. - if (typeof stateUpdates === 'function') { - stateUpdates = stateUpdates(); - } - - var changes; - each(stateUpdates, function (value, key) { - // Record the change if the value is different from what's in the - // current state. - if (_this.state[key] !== value) { - changes = changes || {}; - changes[key] = { - from: _this.state[key], - to: value - }; - } - - _this.state[key] = value; - }); // Only trigger "statechange" if there were changes AND we have a trigger - // function. This allows us to not require that the target object be an - // evented object. - - if (changes && isEvented(this)) { - /** - * An event triggered on an object that is both - * {@link module:stateful|stateful} and {@link module:evented|evented} - * indicating that its state has changed. - * - * @event module:stateful~StatefulMixin#statechanged - * @type {Object} - * @property {Object} changes - * A hash containing the properties that were changed and - * the values they were changed `from` and `to`. - */ - this.trigger({ - changes: changes, - type: 'statechanged' - }); - } - - return changes; - } -}; -/** - * Applies {@link module:stateful~StatefulMixin|StatefulMixin} to a target - * object. - * - * If the target object is {@link module:evented|evented} and has a - * `handleStateChanged` method, that method will be automatically bound to the - * `statechanged` event on itself. - * - * @param {Object} target - * The object to be made stateful. - * - * @param {Object} [defaultState] - * A default set of properties to populate the newly-stateful object's - * `state` property. - * - * @return {Object} - * Returns the `target`. - */ - -function stateful(target, defaultState) { - assign(target, StatefulMixin); // This happens after the mixing-in because we need to replace the `state` - // added in that step. - - target.state = assign({}, target.state, defaultState); // Auto-bind the `handleStateChanged` method of the target object if it exists. - - if (typeof target.handleStateChanged === 'function' && isEvented(target)) { - target.on('statechanged', target.handleStateChanged); - } - - return target; -} - -/** - * @file string-cases.js - * @module to-lower-case - */ - -/** - * Lowercase the first letter of a string. - * - * @param {string} string - * String to be lowercased - * - * @return {string} - * The string with a lowercased first letter - */ -var toLowerCase = function toLowerCase(string) { - if (typeof string !== 'string') { - return string; - } - - return string.replace(/./, function (w) { - return w.toLowerCase(); - }); -}; -/** - * Uppercase the first letter of a string. - * - * @param {string} string - * String to be uppercased - * - * @return {string} - * The string with an uppercased first letter - */ - -var toTitleCase = function toTitleCase(string) { - if (typeof string !== 'string') { - return string; - } - - return string.replace(/./, function (w) { - return w.toUpperCase(); - }); -}; -/** - * Compares the TitleCase versions of the two strings for equality. - * - * @param {string} str1 - * The first string to compare - * - * @param {string} str2 - * The second string to compare - * - * @return {boolean} - * Whether the TitleCase versions of the strings are equal - */ - -var titleCaseEquals = function titleCaseEquals(str1, str2) { - return toTitleCase(str1) === toTitleCase(str2); -}; - -/** - * @file merge-options.js - * @module merge-options - */ -/** - * Merge two objects recursively. - * - * Performs a deep merge like - * {@link https://lodash.com/docs/4.17.10#merge|lodash.merge}, but only merges - * plain objects (not arrays, elements, or anything else). - * - * Non-plain object values will be copied directly from the right-most - * argument. - * - * @static - * @param {Object[]} sources - * One or more objects to merge into a new object. - * - * @return {Object} - * A new object that is the merged result of all sources. - */ - -function mergeOptions() { - var result = {}; - - for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) { - sources[_key] = arguments[_key]; - } - - sources.forEach(function (source) { - if (!source) { - return; - } - - each(source, function (value, key) { - if (!isPlain(value)) { - result[key] = value; - return; - } - - if (!isPlain(result[key])) { - result[key] = {}; - } - - result[key] = mergeOptions(result[key], value); - }); - }); - return result; -} - -var MapSham = /*#__PURE__*/function () { - function MapSham() { - this.map_ = {}; - } - - var _proto = MapSham.prototype; - - _proto.has = function has(key) { - return key in this.map_; - }; - - _proto["delete"] = function _delete(key) { - var has = this.has(key); - delete this.map_[key]; - return has; - }; - - _proto.set = function set(key, value) { - this.set_[key] = value; - return this; - }; - - _proto.forEach = function forEach(callback, thisArg) { - for (var key in this.map_) { - callback.call(thisArg, this.map_[key], key, this); - } - }; - - return MapSham; -}(); - -var Map$1 = window_1$1.Map ? window_1$1.Map : MapSham; - -var SetSham = /*#__PURE__*/function () { - function SetSham() { - this.set_ = {}; - } - - var _proto = SetSham.prototype; - - _proto.has = function has(key) { - return key in this.set_; - }; - - _proto["delete"] = function _delete(key) { - var has = this.has(key); - delete this.set_[key]; - return has; - }; - - _proto.add = function add(key) { - this.set_[key] = 1; - return this; - }; - - _proto.forEach = function forEach(callback, thisArg) { - for (var key in this.set_) { - callback.call(thisArg, key, key, this); - } - }; - - return SetSham; -}(); - -var Set = window_1$1.Set ? window_1$1.Set : SetSham; - -/** - * Player Component - Base class for all UI objects - * - * @file component.js - */ -/** - * Base class for all UI Components. - * Components are UI objects which represent both a javascript object and an element - * in the DOM. They can be children of other components, and can have - * children themselves. - * - * Components can also use methods from {@link EventTarget} - */ - -var Component = /*#__PURE__*/function () { - /** - * A callback that is called when a component is ready. Does not have any - * paramters and any callback value will be ignored. - * - * @callback Component~ReadyCallback - * @this Component - */ - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - * - * @param {Object[]} [options.children] - * An array of children objects to intialize this component with. Children objects have - * a name property that will be used if more than one component of the same type needs to be - * added. - * - * @param {Component~ReadyCallback} [ready] - * Function that gets called when the `Component` is ready. - */ - function Component(player, options, ready) { - // The component might be the player itself and we can't pass `this` to super - if (!player && this.play) { - this.player_ = player = this; // eslint-disable-line - } else { - this.player_ = player; - } - - this.isDisposed_ = false; // Hold the reference to the parent component via `addChild` method - - this.parentComponent_ = null; // Make a copy of prototype.options_ to protect against overriding defaults - - this.options_ = mergeOptions({}, this.options_); // Updated options with supplied options - - options = this.options_ = mergeOptions(this.options_, options); // Get ID from options or options element if one is supplied - - this.id_ = options.id || options.el && options.el.id; // If there was no ID from the options, generate one - - if (!this.id_) { - // Don't require the player ID function in the case of mock players - var id = player && player.id && player.id() || 'no_player'; - this.id_ = id + "_component_" + newGUID(); - } - - this.name_ = options.name || null; // Create element if one wasn't provided in options - - if (options.el) { - this.el_ = options.el; - } else if (options.createEl !== false) { - this.el_ = this.createEl(); - } // if evented is anything except false, we want to mixin in evented - - - if (options.evented !== false) { - // Make this an evented object and use `el_`, if available, as its event bus - evented(this, { - eventBusKey: this.el_ ? 'el_' : null - }); - } - - stateful(this, this.constructor.defaultState); - this.children_ = []; - this.childIndex_ = {}; - this.childNameIndex_ = {}; - this.setTimeoutIds_ = new Set(); - this.setIntervalIds_ = new Set(); - this.rafIds_ = new Set(); - this.namedRafs_ = new Map$1(); - this.clearingTimersOnDispose_ = false; // Add any child components in options - - if (options.initChildren !== false) { - this.initChildren(); - } - - this.ready(ready); // Don't want to trigger ready here or it will before init is actually - // finished for all children that run this constructor - - if (options.reportTouchActivity !== false) { - this.enableTouchActivity(); - } - } - /** - * Dispose of the `Component` and all child components. - * - * @fires Component#dispose - */ - - - var _proto = Component.prototype; - - _proto.dispose = function dispose() { - // Bail out if the component has already been disposed. - if (this.isDisposed_) { - return; - } - /** - * Triggered when a `Component` is disposed. - * - * @event Component#dispose - * @type {EventTarget~Event} - * - * @property {boolean} [bubbles=false] - * set to false so that the dispose event does not - * bubble up - */ - - - this.trigger({ - type: 'dispose', - bubbles: false - }); - this.isDisposed_ = true; // Dispose all children. - - if (this.children_) { - for (var i = this.children_.length - 1; i >= 0; i--) { - if (this.children_[i].dispose) { - this.children_[i].dispose(); - } - } - } // Delete child references - - - this.children_ = null; - this.childIndex_ = null; - this.childNameIndex_ = null; - this.parentComponent_ = null; - - if (this.el_) { - // Remove element from DOM - if (this.el_.parentNode) { - this.el_.parentNode.removeChild(this.el_); - } - - if (DomData.has(this.el_)) { - DomData["delete"](this.el_); - } - - this.el_ = null; - } // remove reference to the player after disposing of the element - - - this.player_ = null; - } - /** - * Determine whether or not this component has been disposed. - * - * @return {boolean} - * If the component has been disposed, will be `true`. Otherwise, `false`. - */ - ; - - _proto.isDisposed = function isDisposed() { - return Boolean(this.isDisposed_); - } - /** - * Return the {@link Player} that the `Component` has attached to. - * - * @return {Player} - * The player that this `Component` has attached to. - */ - ; - - _proto.player = function player() { - return this.player_; - } - /** - * Deep merge of options objects with new options. - * > Note: When both `obj` and `options` contain properties whose values are objects. - * The two properties get merged using {@link module:mergeOptions} - * - * @param {Object} obj - * The object that contains new options. - * - * @return {Object} - * A new object of `this.options_` and `obj` merged together. - */ - ; - - _proto.options = function options(obj) { - if (!obj) { - return this.options_; - } - - this.options_ = mergeOptions(this.options_, obj); - return this.options_; - } - /** - * Get the `Component`s DOM element - * - * @return {Element} - * The DOM element for this `Component`. - */ - ; - - _proto.el = function el() { - return this.el_; - } - /** - * Create the `Component`s DOM element. - * - * @param {string} [tagName] - * Element's DOM node type. e.g. 'div' - * - * @param {Object} [properties] - * An object of properties that should be set. - * - * @param {Object} [attributes] - * An object of attributes that should be set. - * - * @return {Element} - * The element that gets created. - */ - ; - - _proto.createEl = function createEl$1(tagName, properties, attributes) { - return createEl(tagName, properties, attributes); - } - /** - * Localize a string given the string in english. - * - * If tokens are provided, it'll try and run a simple token replacement on the provided string. - * The tokens it looks for look like `{1}` with the index being 1-indexed into the tokens array. - * - * If a `defaultValue` is provided, it'll use that over `string`, - * if a value isn't found in provided language files. - * This is useful if you want to have a descriptive key for token replacement - * but have a succinct localized string and not require `en.json` to be included. - * - * Currently, it is used for the progress bar timing. - * ```js - * { - * "progress bar timing: currentTime={1} duration={2}": "{1} of {2}" - * } - * ``` - * It is then used like so: - * ```js - * this.localize('progress bar timing: currentTime={1} duration{2}', - * [this.player_.currentTime(), this.player_.duration()], - * '{1} of {2}'); - * ``` - * - * Which outputs something like: `01:23 of 24:56`. - * - * - * @param {string} string - * The string to localize and the key to lookup in the language files. - * @param {string[]} [tokens] - * If the current item has token replacements, provide the tokens here. - * @param {string} [defaultValue] - * Defaults to `string`. Can be a default value to use for token replacement - * if the lookup key is needed to be separate. - * - * @return {string} - * The localized string or if no localization exists the english string. - */ - ; - - _proto.localize = function localize(string, tokens, defaultValue) { - if (defaultValue === void 0) { - defaultValue = string; - } - - var code = this.player_.language && this.player_.language(); - var languages = this.player_.languages && this.player_.languages(); - var language = languages && languages[code]; - var primaryCode = code && code.split('-')[0]; - var primaryLang = languages && languages[primaryCode]; - var localizedString = defaultValue; - - if (language && language[string]) { - localizedString = language[string]; - } else if (primaryLang && primaryLang[string]) { - localizedString = primaryLang[string]; - } - - if (tokens) { - localizedString = localizedString.replace(/\{(\d+)\}/g, function (match, index) { - var value = tokens[index - 1]; - var ret = value; - - if (typeof value === 'undefined') { - ret = match; - } - - return ret; - }); - } - - return localizedString; - } - /** - * Return the `Component`s DOM element. This is where children get inserted. - * This will usually be the the same as the element returned in {@link Component#el}. - * - * @return {Element} - * The content element for this `Component`. - */ - ; - - _proto.contentEl = function contentEl() { - return this.contentEl_ || this.el_; - } - /** - * Get this `Component`s ID - * - * @return {string} - * The id of this `Component` - */ - ; - - _proto.id = function id() { - return this.id_; - } - /** - * Get the `Component`s name. The name gets used to reference the `Component` - * and is set during registration. - * - * @return {string} - * The name of this `Component`. - */ - ; - - _proto.name = function name() { - return this.name_; - } - /** - * Get an array of all child components - * - * @return {Array} - * The children - */ - ; - - _proto.children = function children() { - return this.children_; - } - /** - * Returns the child `Component` with the given `id`. - * - * @param {string} id - * The id of the child `Component` to get. - * - * @return {Component|undefined} - * The child `Component` with the given `id` or undefined. - */ - ; - - _proto.getChildById = function getChildById(id) { - return this.childIndex_[id]; - } - /** - * Returns the child `Component` with the given `name`. - * - * @param {string} name - * The name of the child `Component` to get. - * - * @return {Component|undefined} - * The child `Component` with the given `name` or undefined. - */ - ; - - _proto.getChild = function getChild(name) { - if (!name) { - return; - } - - return this.childNameIndex_[name]; - } - /** - * Returns the descendant `Component` following the givent - * descendant `names`. For instance ['foo', 'bar', 'baz'] would - * try to get 'foo' on the current component, 'bar' on the 'foo' - * component and 'baz' on the 'bar' component and return undefined - * if any of those don't exist. - * - * @param {...string[]|...string} names - * The name of the child `Component` to get. - * - * @return {Component|undefined} - * The descendant `Component` following the given descendant - * `names` or undefined. - */ - ; - - _proto.getDescendant = function getDescendant() { - for (var _len = arguments.length, names = new Array(_len), _key = 0; _key < _len; _key++) { - names[_key] = arguments[_key]; - } - - // flatten array argument into the main array - names = names.reduce(function (acc, n) { - return acc.concat(n); - }, []); - var currentChild = this; - - for (var i = 0; i < names.length; i++) { - currentChild = currentChild.getChild(names[i]); - - if (!currentChild || !currentChild.getChild) { - return; - } - } - - return currentChild; - } - /** - * Add a child `Component` inside the current `Component`. - * - * - * @param {string|Component} child - * The name or instance of a child to add. - * - * @param {Object} [options={}] - * The key/value store of options that will get passed to children of - * the child. - * - * @param {number} [index=this.children_.length] - * The index to attempt to add a child into. - * - * @return {Component} - * The `Component` that gets added as a child. When using a string the - * `Component` will get created by this process. - */ - ; - - _proto.addChild = function addChild(child, options, index) { - if (options === void 0) { - options = {}; - } - - if (index === void 0) { - index = this.children_.length; - } - - var component; - var componentName; // If child is a string, create component with options - - if (typeof child === 'string') { - componentName = toTitleCase(child); - var componentClassName = options.componentClass || componentName; // Set name through options - - options.name = componentName; // Create a new object & element for this controls set - // If there's no .player_, this is a player - - var ComponentClass = Component.getComponent(componentClassName); - - if (!ComponentClass) { - throw new Error("Component " + componentClassName + " does not exist"); - } // data stored directly on the videojs object may be - // misidentified as a component to retain - // backwards-compatibility with 4.x. check to make sure the - // component class can be instantiated. - - - if (typeof ComponentClass !== 'function') { - return null; - } - - component = new ComponentClass(this.player_ || this, options); // child is a component instance - } else { - component = child; - } - - if (component.parentComponent_) { - component.parentComponent_.removeChild(component); - } - - this.children_.splice(index, 0, component); - component.parentComponent_ = this; - - if (typeof component.id === 'function') { - this.childIndex_[component.id()] = component; - } // If a name wasn't used to create the component, check if we can use the - // name function of the component - - - componentName = componentName || component.name && toTitleCase(component.name()); - - if (componentName) { - this.childNameIndex_[componentName] = component; - this.childNameIndex_[toLowerCase(componentName)] = component; - } // Add the UI object's element to the container div (box) - // Having an element is not required - - - if (typeof component.el === 'function' && component.el()) { - // If inserting before a component, insert before that component's element - var refNode = null; - - if (this.children_[index + 1]) { - // Most children are components, but the video tech is an HTML element - if (this.children_[index + 1].el_) { - refNode = this.children_[index + 1].el_; - } else if (isEl(this.children_[index + 1])) { - refNode = this.children_[index + 1]; - } - } - - this.contentEl().insertBefore(component.el(), refNode); - } // Return so it can stored on parent object if desired. - - - return component; - } - /** - * Remove a child `Component` from this `Component`s list of children. Also removes - * the child `Component`s element from this `Component`s element. - * - * @param {Component} component - * The child `Component` to remove. - */ - ; - - _proto.removeChild = function removeChild(component) { - if (typeof component === 'string') { - component = this.getChild(component); - } - - if (!component || !this.children_) { - return; - } - - var childFound = false; - - for (var i = this.children_.length - 1; i >= 0; i--) { - if (this.children_[i] === component) { - childFound = true; - this.children_.splice(i, 1); - break; - } - } - - if (!childFound) { - return; - } - - component.parentComponent_ = null; - this.childIndex_[component.id()] = null; - this.childNameIndex_[toTitleCase(component.name())] = null; - this.childNameIndex_[toLowerCase(component.name())] = null; - var compEl = component.el(); - - if (compEl && compEl.parentNode === this.contentEl()) { - this.contentEl().removeChild(component.el()); - } - } - /** - * Add and initialize default child `Component`s based upon options. - */ - ; - - _proto.initChildren = function initChildren() { - var _this = this; - - var children = this.options_.children; - - if (children) { - // `this` is `parent` - var parentOptions = this.options_; - - var handleAdd = function handleAdd(child) { - var name = child.name; - var opts = child.opts; // Allow options for children to be set at the parent options - // e.g. videojs(id, { controlBar: false }); - // instead of videojs(id, { children: { controlBar: false }); - - if (parentOptions[name] !== undefined) { - opts = parentOptions[name]; - } // Allow for disabling default components - // e.g. options['children']['posterImage'] = false - - - if (opts === false) { - return; - } // Allow options to be passed as a simple boolean if no configuration - // is necessary. - - - if (opts === true) { - opts = {}; - } // We also want to pass the original player options - // to each component as well so they don't need to - // reach back into the player for options later. - - - opts.playerOptions = _this.options_.playerOptions; // Create and add the child component. - // Add a direct reference to the child by name on the parent instance. - // If two of the same component are used, different names should be supplied - // for each - - var newChild = _this.addChild(name, opts); - - if (newChild) { - _this[name] = newChild; - } - }; // Allow for an array of children details to passed in the options - - - var workingChildren; - var Tech = Component.getComponent('Tech'); - - if (Array.isArray(children)) { - workingChildren = children; - } else { - workingChildren = Object.keys(children); - } - - workingChildren // children that are in this.options_ but also in workingChildren would - // give us extra children we do not want. So, we want to filter them out. - .concat(Object.keys(this.options_).filter(function (child) { - return !workingChildren.some(function (wchild) { - if (typeof wchild === 'string') { - return child === wchild; - } - - return child === wchild.name; - }); - })).map(function (child) { - var name; - var opts; - - if (typeof child === 'string') { - name = child; - opts = children[name] || _this.options_[name] || {}; - } else { - name = child.name; - opts = child; - } - - return { - name: name, - opts: opts - }; - }).filter(function (child) { - // we have to make sure that child.name isn't in the techOrder since - // techs are registerd as Components but can't aren't compatible - // See https://github.com/videojs/video.js/issues/2772 - var c = Component.getComponent(child.opts.componentClass || toTitleCase(child.name)); - return c && !Tech.isTech(c); - }).forEach(handleAdd); - } - } - /** - * Builds the default DOM class name. Should be overriden by sub-components. - * - * @return {string} - * The DOM class name for this object. - * - * @abstract - */ - ; - - _proto.buildCSSClass = function buildCSSClass() { - // Child classes can include a function that does: - // return 'CLASS NAME' + this._super(); - return ''; - } - /** - * Bind a listener to the component's ready state. - * Different from event listeners in that if the ready event has already happened - * it will trigger the function immediately. - * - * @return {Component} - * Returns itself; method can be chained. - */ - ; - - _proto.ready = function ready(fn, sync) { - if (sync === void 0) { - sync = false; - } - - if (!fn) { - return; - } - - if (!this.isReady_) { - this.readyQueue_ = this.readyQueue_ || []; - this.readyQueue_.push(fn); - return; - } - - if (sync) { - fn.call(this); - } else { - // Call the function asynchronously by default for consistency - this.setTimeout(fn, 1); - } - } - /** - * Trigger all the ready listeners for this `Component`. - * - * @fires Component#ready - */ - ; - - _proto.triggerReady = function triggerReady() { - this.isReady_ = true; // Ensure ready is triggered asynchronously - - this.setTimeout(function () { - var readyQueue = this.readyQueue_; // Reset Ready Queue - - this.readyQueue_ = []; - - if (readyQueue && readyQueue.length > 0) { - readyQueue.forEach(function (fn) { - fn.call(this); - }, this); - } // Allow for using event listeners also - - /** - * Triggered when a `Component` is ready. - * - * @event Component#ready - * @type {EventTarget~Event} - */ - - - this.trigger('ready'); - }, 1); - } - /** - * Find a single DOM element matching a `selector`. This can be within the `Component`s - * `contentEl()` or another custom context. - * - * @param {string} selector - * A valid CSS selector, which will be passed to `querySelector`. - * - * @param {Element|string} [context=this.contentEl()] - * A DOM element within which to query. Can also be a selector string in - * which case the first matching element will get used as context. If - * missing `this.contentEl()` gets used. If `this.contentEl()` returns - * nothing it falls back to `document`. - * - * @return {Element|null} - * the dom element that was found, or null - * - * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors) - */ - ; - - _proto.$ = function $$1(selector, context) { - return $(selector, context || this.contentEl()); - } - /** - * Finds all DOM element matching a `selector`. This can be within the `Component`s - * `contentEl()` or another custom context. - * - * @param {string} selector - * A valid CSS selector, which will be passed to `querySelectorAll`. - * - * @param {Element|string} [context=this.contentEl()] - * A DOM element within which to query. Can also be a selector string in - * which case the first matching element will get used as context. If - * missing `this.contentEl()` gets used. If `this.contentEl()` returns - * nothing it falls back to `document`. - * - * @return {NodeList} - * a list of dom elements that were found - * - * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors) - */ - ; - - _proto.$$ = function $$$1(selector, context) { - return $$(selector, context || this.contentEl()); - } - /** - * Check if a component's element has a CSS class name. - * - * @param {string} classToCheck - * CSS class name to check. - * - * @return {boolean} - * - True if the `Component` has the class. - * - False if the `Component` does not have the class` - */ - ; - - _proto.hasClass = function hasClass$1(classToCheck) { - return hasClass(this.el_, classToCheck); - } - /** - * Add a CSS class name to the `Component`s element. - * - * @param {string} classToAdd - * CSS class name to add - */ - ; - - _proto.addClass = function addClass$1(classToAdd) { - addClass(this.el_, classToAdd); - } - /** - * Remove a CSS class name from the `Component`s element. - * - * @param {string} classToRemove - * CSS class name to remove - */ - ; - - _proto.removeClass = function removeClass$1(classToRemove) { - removeClass(this.el_, classToRemove); - } - /** - * Add or remove a CSS class name from the component's element. - * - `classToToggle` gets added when {@link Component#hasClass} would return false. - * - `classToToggle` gets removed when {@link Component#hasClass} would return true. - * - * @param {string} classToToggle - * The class to add or remove based on (@link Component#hasClass} - * - * @param {boolean|Dom~predicate} [predicate] - * An {@link Dom~predicate} function or a boolean - */ - ; - - _proto.toggleClass = function toggleClass$1(classToToggle, predicate) { - toggleClass(this.el_, classToToggle, predicate); - } - /** - * Show the `Component`s element if it is hidden by removing the - * 'vjs-hidden' class name from it. - */ - ; - - _proto.show = function show() { - this.removeClass('vjs-hidden'); - } - /** - * Hide the `Component`s element if it is currently showing by adding the - * 'vjs-hidden` class name to it. - */ - ; - - _proto.hide = function hide() { - this.addClass('vjs-hidden'); - } - /** - * Lock a `Component`s element in its visible state by adding the 'vjs-lock-showing' - * class name to it. Used during fadeIn/fadeOut. - * - * @private - */ - ; - - _proto.lockShowing = function lockShowing() { - this.addClass('vjs-lock-showing'); - } - /** - * Unlock a `Component`s element from its visible state by removing the 'vjs-lock-showing' - * class name from it. Used during fadeIn/fadeOut. - * - * @private - */ - ; - - _proto.unlockShowing = function unlockShowing() { - this.removeClass('vjs-lock-showing'); - } - /** - * Get the value of an attribute on the `Component`s element. - * - * @param {string} attribute - * Name of the attribute to get the value from. - * - * @return {string|null} - * - The value of the attribute that was asked for. - * - Can be an empty string on some browsers if the attribute does not exist - * or has no value - * - Most browsers will return null if the attibute does not exist or has - * no value. - * - * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute} - */ - ; - - _proto.getAttribute = function getAttribute$1(attribute) { - return getAttribute(this.el_, attribute); - } - /** - * Set the value of an attribute on the `Component`'s element - * - * @param {string} attribute - * Name of the attribute to set. - * - * @param {string} value - * Value to set the attribute to. - * - * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/setAttribute} - */ - ; - - _proto.setAttribute = function setAttribute$1(attribute, value) { - setAttribute(this.el_, attribute, value); - } - /** - * Remove an attribute from the `Component`s element. - * - * @param {string} attribute - * Name of the attribute to remove. - * - * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/removeAttribute} - */ - ; - - _proto.removeAttribute = function removeAttribute$1(attribute) { - removeAttribute(this.el_, attribute); - } - /** - * Get or set the width of the component based upon the CSS styles. - * See {@link Component#dimension} for more detailed information. - * - * @param {number|string} [num] - * The width that you want to set postfixed with '%', 'px' or nothing. - * - * @param {boolean} [skipListeners] - * Skip the componentresize event trigger - * - * @return {number|string} - * The width when getting, zero if there is no width. Can be a string - * postpixed with '%' or 'px'. - */ - ; - - _proto.width = function width(num, skipListeners) { - return this.dimension('width', num, skipListeners); - } - /** - * Get or set the height of the component based upon the CSS styles. - * See {@link Component#dimension} for more detailed information. - * - * @param {number|string} [num] - * The height that you want to set postfixed with '%', 'px' or nothing. - * - * @param {boolean} [skipListeners] - * Skip the componentresize event trigger - * - * @return {number|string} - * The width when getting, zero if there is no width. Can be a string - * postpixed with '%' or 'px'. - */ - ; - - _proto.height = function height(num, skipListeners) { - return this.dimension('height', num, skipListeners); - } - /** - * Set both the width and height of the `Component` element at the same time. - * - * @param {number|string} width - * Width to set the `Component`s element to. - * - * @param {number|string} height - * Height to set the `Component`s element to. - */ - ; - - _proto.dimensions = function dimensions(width, height) { - // Skip componentresize listeners on width for optimization - this.width(width, true); - this.height(height); - } - /** - * Get or set width or height of the `Component` element. This is the shared code - * for the {@link Component#width} and {@link Component#height}. - * - * Things to know: - * - If the width or height in an number this will return the number postfixed with 'px'. - * - If the width/height is a percent this will return the percent postfixed with '%' - * - Hidden elements have a width of 0 with `window.getComputedStyle`. This function - * defaults to the `Component`s `style.width` and falls back to `window.getComputedStyle`. - * See [this]{@link http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/} - * for more information - * - If you want the computed style of the component, use {@link Component#currentWidth} - * and {@link {Component#currentHeight} - * - * @fires Component#componentresize - * - * @param {string} widthOrHeight - 8 'width' or 'height' - * - * @param {number|string} [num] - 8 New dimension - * - * @param {boolean} [skipListeners] - * Skip componentresize event trigger - * - * @return {number} - * The dimension when getting or 0 if unset - */ - ; - - _proto.dimension = function dimension(widthOrHeight, num, skipListeners) { - if (num !== undefined) { - // Set to zero if null or literally NaN (NaN !== NaN) - if (num === null || num !== num) { - num = 0; - } // Check if using css width/height (% or px) and adjust - - - if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) { - this.el_.style[widthOrHeight] = num; - } else if (num === 'auto') { - this.el_.style[widthOrHeight] = ''; - } else { - this.el_.style[widthOrHeight] = num + 'px'; - } // skipListeners allows us to avoid triggering the resize event when setting both width and height - - - if (!skipListeners) { - /** - * Triggered when a component is resized. - * - * @event Component#componentresize - * @type {EventTarget~Event} - */ - this.trigger('componentresize'); - } - - return; - } // Not setting a value, so getting it - // Make sure element exists - - - if (!this.el_) { - return 0; - } // Get dimension value from style - - - var val = this.el_.style[widthOrHeight]; - var pxIndex = val.indexOf('px'); - - if (pxIndex !== -1) { - // Return the pixel value with no 'px' - return parseInt(val.slice(0, pxIndex), 10); - } // No px so using % or no style was set, so falling back to offsetWidth/height - // If component has display:none, offset will return 0 - // TODO: handle display:none and no dimension style using px - - - return parseInt(this.el_['offset' + toTitleCase(widthOrHeight)], 10); - } - /** - * Get the computed width or the height of the component's element. - * - * Uses `window.getComputedStyle`. - * - * @param {string} widthOrHeight - * A string containing 'width' or 'height'. Whichever one you want to get. - * - * @return {number} - * The dimension that gets asked for or 0 if nothing was set - * for that dimension. - */ - ; - - _proto.currentDimension = function currentDimension(widthOrHeight) { - var computedWidthOrHeight = 0; - - if (widthOrHeight !== 'width' && widthOrHeight !== 'height') { - throw new Error('currentDimension only accepts width or height value'); - } - - computedWidthOrHeight = computedStyle(this.el_, widthOrHeight); // remove 'px' from variable and parse as integer - - computedWidthOrHeight = parseFloat(computedWidthOrHeight); // if the computed value is still 0, it's possible that the browser is lying - // and we want to check the offset values. - // This code also runs wherever getComputedStyle doesn't exist. - - if (computedWidthOrHeight === 0 || isNaN(computedWidthOrHeight)) { - var rule = "offset" + toTitleCase(widthOrHeight); - computedWidthOrHeight = this.el_[rule]; - } - - return computedWidthOrHeight; - } - /** - * An object that contains width and height values of the `Component`s - * computed style. Uses `window.getComputedStyle`. - * - * @typedef {Object} Component~DimensionObject - * - * @property {number} width - * The width of the `Component`s computed style. - * - * @property {number} height - * The height of the `Component`s computed style. - */ - - /** - * Get an object that contains computed width and height values of the - * component's element. - * - * Uses `window.getComputedStyle`. - * - * @return {Component~DimensionObject} - * The computed dimensions of the component's element. - */ - ; - - _proto.currentDimensions = function currentDimensions() { - return { - width: this.currentDimension('width'), - height: this.currentDimension('height') - }; - } - /** - * Get the computed width of the component's element. - * - * Uses `window.getComputedStyle`. - * - * @return {number} - * The computed width of the component's element. - */ - ; - - _proto.currentWidth = function currentWidth() { - return this.currentDimension('width'); - } - /** - * Get the computed height of the component's element. - * - * Uses `window.getComputedStyle`. - * - * @return {number} - * The computed height of the component's element. - */ - ; - - _proto.currentHeight = function currentHeight() { - return this.currentDimension('height'); - } - /** - * Set the focus to this component - */ - ; - - _proto.focus = function focus() { - this.el_.focus(); - } - /** - * Remove the focus from this component - */ - ; - - _proto.blur = function blur() { - this.el_.blur(); - } - /** - * When this Component receives a `keydown` event which it does not process, - * it passes the event to the Player for handling. - * - * @param {EventTarget~Event} event - * The `keydown` event that caused this function to be called. - */ - ; - - _proto.handleKeyDown = function handleKeyDown(event) { - if (this.player_) { - // We only stop propagation here because we want unhandled events to fall - // back to the browser. - event.stopPropagation(); - this.player_.handleKeyDown(event); - } - } - /** - * Many components used to have a `handleKeyPress` method, which was poorly - * named because it listened to a `keydown` event. This method name now - * delegates to `handleKeyDown`. This means anyone calling `handleKeyPress` - * will not see their method calls stop working. - * - * @param {EventTarget~Event} event - * The event that caused this function to be called. - */ - ; - - _proto.handleKeyPress = function handleKeyPress(event) { - this.handleKeyDown(event); - } - /** - * Emit a 'tap' events when touch event support gets detected. This gets used to - * support toggling the controls through a tap on the video. They get enabled - * because every sub-component would have extra overhead otherwise. - * - * @private - * @fires Component#tap - * @listens Component#touchstart - * @listens Component#touchmove - * @listens Component#touchleave - * @listens Component#touchcancel - * @listens Component#touchend - */ - ; - - _proto.emitTapEvents = function emitTapEvents() { - // Track the start time so we can determine how long the touch lasted - var touchStart = 0; - var firstTouch = null; // Maximum movement allowed during a touch event to still be considered a tap - // Other popular libs use anywhere from 2 (hammer.js) to 15, - // so 10 seems like a nice, round number. - - var tapMovementThreshold = 10; // The maximum length a touch can be while still being considered a tap - - var touchTimeThreshold = 200; - var couldBeTap; - this.on('touchstart', function (event) { - // If more than one finger, don't consider treating this as a click - if (event.touches.length === 1) { - // Copy pageX/pageY from the object - firstTouch = { - pageX: event.touches[0].pageX, - pageY: event.touches[0].pageY - }; // Record start time so we can detect a tap vs. "touch and hold" - - touchStart = window_1$1.performance.now(); // Reset couldBeTap tracking - - couldBeTap = true; - } - }); - this.on('touchmove', function (event) { - // If more than one finger, don't consider treating this as a click - if (event.touches.length > 1) { - couldBeTap = false; - } else if (firstTouch) { - // Some devices will throw touchmoves for all but the slightest of taps. - // So, if we moved only a small distance, this could still be a tap - var xdiff = event.touches[0].pageX - firstTouch.pageX; - var ydiff = event.touches[0].pageY - firstTouch.pageY; - var touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff); - - if (touchDistance > tapMovementThreshold) { - couldBeTap = false; - } - } - }); - - var noTap = function noTap() { - couldBeTap = false; - }; // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s - - - this.on('touchleave', noTap); - this.on('touchcancel', noTap); // When the touch ends, measure how long it took and trigger the appropriate - // event - - this.on('touchend', function (event) { - firstTouch = null; // Proceed only if the touchmove/leave/cancel event didn't happen - - if (couldBeTap === true) { - // Measure how long the touch lasted - var touchTime = window_1$1.performance.now() - touchStart; // Make sure the touch was less than the threshold to be considered a tap - - if (touchTime < touchTimeThreshold) { - // Don't let browser turn this into a click - event.preventDefault(); - /** - * Triggered when a `Component` is tapped. - * - * @event Component#tap - * @type {EventTarget~Event} - */ - - this.trigger('tap'); // It may be good to copy the touchend event object and change the - // type to tap, if the other event properties aren't exact after - // Events.fixEvent runs (e.g. event.target) - } - } - }); - } - /** - * This function reports user activity whenever touch events happen. This can get - * turned off by any sub-components that wants touch events to act another way. - * - * Report user touch activity when touch events occur. User activity gets used to - * determine when controls should show/hide. It is simple when it comes to mouse - * events, because any mouse event should show the controls. So we capture mouse - * events that bubble up to the player and report activity when that happens. - * With touch events it isn't as easy as `touchstart` and `touchend` toggle player - * controls. So touch events can't help us at the player level either. - * - * User activity gets checked asynchronously. So what could happen is a tap event - * on the video turns the controls off. Then the `touchend` event bubbles up to - * the player. Which, if it reported user activity, would turn the controls right - * back on. We also don't want to completely block touch events from bubbling up. - * Furthermore a `touchmove` event and anything other than a tap, should not turn - * controls back on. - * - * @listens Component#touchstart - * @listens Component#touchmove - * @listens Component#touchend - * @listens Component#touchcancel - */ - ; - - _proto.enableTouchActivity = function enableTouchActivity() { - // Don't continue if the root player doesn't support reporting user activity - if (!this.player() || !this.player().reportUserActivity) { - return; - } // listener for reporting that the user is active - - - var report = bind(this.player(), this.player().reportUserActivity); - var touchHolding; - this.on('touchstart', function () { - report(); // For as long as the they are touching the device or have their mouse down, - // we consider them active even if they're not moving their finger or mouse. - // So we want to continue to update that they are active - - this.clearInterval(touchHolding); // report at the same interval as activityCheck - - touchHolding = this.setInterval(report, 250); - }); - - var touchEnd = function touchEnd(event) { - report(); // stop the interval that maintains activity if the touch is holding - - this.clearInterval(touchHolding); - }; - - this.on('touchmove', report); - this.on('touchend', touchEnd); - this.on('touchcancel', touchEnd); - } - /** - * A callback that has no parameters and is bound into `Component`s context. - * - * @callback Component~GenericCallback - * @this Component - */ - - /** - * Creates a function that runs after an `x` millisecond timeout. This function is a - * wrapper around `window.setTimeout`. There are a few reasons to use this one - * instead though: - * 1. It gets cleared via {@link Component#clearTimeout} when - * {@link Component#dispose} gets called. - * 2. The function callback will gets turned into a {@link Component~GenericCallback} - * - * > Note: You can't use `window.clearTimeout` on the id returned by this function. This - * will cause its dispose listener not to get cleaned up! Please use - * {@link Component#clearTimeout} or {@link Component#dispose} instead. - * - * @param {Component~GenericCallback} fn - * The function that will be run after `timeout`. - * - * @param {number} timeout - * Timeout in milliseconds to delay before executing the specified function. - * - * @return {number} - * Returns a timeout ID that gets used to identify the timeout. It can also - * get used in {@link Component#clearTimeout} to clear the timeout that - * was set. - * - * @listens Component#dispose - * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout} - */ - ; - - _proto.setTimeout = function setTimeout(fn, timeout) { - var _this2 = this; - - // declare as variables so they are properly available in timeout function - // eslint-disable-next-line - var timeoutId; - fn = bind(this, fn); - this.clearTimersOnDispose_(); - timeoutId = window_1$1.setTimeout(function () { - if (_this2.setTimeoutIds_.has(timeoutId)) { - _this2.setTimeoutIds_["delete"](timeoutId); - } - - fn(); - }, timeout); - this.setTimeoutIds_.add(timeoutId); - return timeoutId; - } - /** - * Clears a timeout that gets created via `window.setTimeout` or - * {@link Component#setTimeout}. If you set a timeout via {@link Component#setTimeout} - * use this function instead of `window.clearTimout`. If you don't your dispose - * listener will not get cleaned up until {@link Component#dispose}! - * - * @param {number} timeoutId - * The id of the timeout to clear. The return value of - * {@link Component#setTimeout} or `window.setTimeout`. - * - * @return {number} - * Returns the timeout id that was cleared. - * - * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearTimeout} - */ - ; - - _proto.clearTimeout = function clearTimeout(timeoutId) { - if (this.setTimeoutIds_.has(timeoutId)) { - this.setTimeoutIds_["delete"](timeoutId); - window_1$1.clearTimeout(timeoutId); - } - - return timeoutId; - } - /** - * Creates a function that gets run every `x` milliseconds. This function is a wrapper - * around `window.setInterval`. There are a few reasons to use this one instead though. - * 1. It gets cleared via {@link Component#clearInterval} when - * {@link Component#dispose} gets called. - * 2. The function callback will be a {@link Component~GenericCallback} - * - * @param {Component~GenericCallback} fn - * The function to run every `x` seconds. - * - * @param {number} interval - * Execute the specified function every `x` milliseconds. - * - * @return {number} - * Returns an id that can be used to identify the interval. It can also be be used in - * {@link Component#clearInterval} to clear the interval. - * - * @listens Component#dispose - * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval} - */ - ; - - _proto.setInterval = function setInterval(fn, interval) { - fn = bind(this, fn); - this.clearTimersOnDispose_(); - var intervalId = window_1$1.setInterval(fn, interval); - this.setIntervalIds_.add(intervalId); - return intervalId; - } - /** - * Clears an interval that gets created via `window.setInterval` or - * {@link Component#setInterval}. If you set an inteval via {@link Component#setInterval} - * use this function instead of `window.clearInterval`. If you don't your dispose - * listener will not get cleaned up until {@link Component#dispose}! - * - * @param {number} intervalId - * The id of the interval to clear. The return value of - * {@link Component#setInterval} or `window.setInterval`. - * - * @return {number} - * Returns the interval id that was cleared. - * - * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearInterval} - */ - ; - - _proto.clearInterval = function clearInterval(intervalId) { - if (this.setIntervalIds_.has(intervalId)) { - this.setIntervalIds_["delete"](intervalId); - window_1$1.clearInterval(intervalId); - } - - return intervalId; - } - /** - * Queues up a callback to be passed to requestAnimationFrame (rAF), but - * with a few extra bonuses: - * - * - Supports browsers that do not support rAF by falling back to - * {@link Component#setTimeout}. - * - * - The callback is turned into a {@link Component~GenericCallback} (i.e. - * bound to the component). - * - * - Automatic cancellation of the rAF callback is handled if the component - * is disposed before it is called. - * - * @param {Component~GenericCallback} fn - * A function that will be bound to this component and executed just - * before the browser's next repaint. - * - * @return {number} - * Returns an rAF ID that gets used to identify the timeout. It can - * also be used in {@link Component#cancelAnimationFrame} to cancel - * the animation frame callback. - * - * @listens Component#dispose - * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame} - */ - ; - - _proto.requestAnimationFrame = function requestAnimationFrame(fn) { - var _this3 = this; - - // Fall back to using a timer. - if (!this.supportsRaf_) { - return this.setTimeout(fn, 1000 / 60); - } - - this.clearTimersOnDispose_(); // declare as variables so they are properly available in rAF function - // eslint-disable-next-line - - var id; - fn = bind(this, fn); - id = window_1$1.requestAnimationFrame(function () { - if (_this3.rafIds_.has(id)) { - _this3.rafIds_["delete"](id); - } - - fn(); - }); - this.rafIds_.add(id); - return id; - } - /** - * Request an animation frame, but only one named animation - * frame will be queued. Another will never be added until - * the previous one finishes. - * - * @param {string} name - * The name to give this requestAnimationFrame - * - * @param {Component~GenericCallback} fn - * A function that will be bound to this component and executed just - * before the browser's next repaint. - */ - ; - - _proto.requestNamedAnimationFrame = function requestNamedAnimationFrame(name, fn) { - var _this4 = this; - - if (this.namedRafs_.has(name)) { - return; - } - - this.clearTimersOnDispose_(); - fn = bind(this, fn); - var id = this.requestAnimationFrame(function () { - fn(); - - if (_this4.namedRafs_.has(name)) { - _this4.namedRafs_["delete"](name); - } - }); - this.namedRafs_.set(name, id); - return name; - } - /** - * Cancels a current named animation frame if it exists. - * - * @param {string} name - * The name of the requestAnimationFrame to cancel. - */ - ; - - _proto.cancelNamedAnimationFrame = function cancelNamedAnimationFrame(name) { - if (!this.namedRafs_.has(name)) { - return; - } - - this.cancelAnimationFrame(this.namedRafs_.get(name)); - this.namedRafs_["delete"](name); - } - /** - * Cancels a queued callback passed to {@link Component#requestAnimationFrame} - * (rAF). - * - * If you queue an rAF callback via {@link Component#requestAnimationFrame}, - * use this function instead of `window.cancelAnimationFrame`. If you don't, - * your dispose listener will not get cleaned up until {@link Component#dispose}! - * - * @param {number} id - * The rAF ID to clear. The return value of {@link Component#requestAnimationFrame}. - * - * @return {number} - * Returns the rAF ID that was cleared. - * - * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/cancelAnimationFrame} - */ - ; - - _proto.cancelAnimationFrame = function cancelAnimationFrame(id) { - // Fall back to using a timer. - if (!this.supportsRaf_) { - return this.clearTimeout(id); - } - - if (this.rafIds_.has(id)) { - this.rafIds_["delete"](id); - window_1$1.cancelAnimationFrame(id); - } - - return id; - } - /** - * A function to setup `requestAnimationFrame`, `setTimeout`, - * and `setInterval`, clearing on dispose. - * - * > Previously each timer added and removed dispose listeners on it's own. - * For better performance it was decided to batch them all, and use `Set`s - * to track outstanding timer ids. - * - * @private - */ - ; - - _proto.clearTimersOnDispose_ = function clearTimersOnDispose_() { - var _this5 = this; - - if (this.clearingTimersOnDispose_) { - return; - } - - this.clearingTimersOnDispose_ = true; - this.one('dispose', function () { - [['namedRafs_', 'cancelNamedAnimationFrame'], ['rafIds_', 'cancelAnimationFrame'], ['setTimeoutIds_', 'clearTimeout'], ['setIntervalIds_', 'clearInterval']].forEach(function (_ref) { - var idName = _ref[0], - cancelName = _ref[1]; - - // for a `Set` key will actually be the value again - // so forEach((val, val) =>` but for maps we want to use - // the key. - _this5[idName].forEach(function (val, key) { - return _this5[cancelName](key); - }); - }); - _this5.clearingTimersOnDispose_ = false; - }); - } - /** - * Register a `Component` with `videojs` given the name and the component. - * - * > NOTE: {@link Tech}s should not be registered as a `Component`. {@link Tech}s - * should be registered using {@link Tech.registerTech} or - * {@link videojs:videojs.registerTech}. - * - * > NOTE: This function can also be seen on videojs as - * {@link videojs:videojs.registerComponent}. - * - * @param {string} name - * The name of the `Component` to register. - * - * @param {Component} ComponentToRegister - * The `Component` class to register. - * - * @return {Component} - * The `Component` that was registered. - */ - ; - - Component.registerComponent = function registerComponent(name, ComponentToRegister) { - if (typeof name !== 'string' || !name) { - throw new Error("Illegal component name, \"" + name + "\"; must be a non-empty string."); - } - - var Tech = Component.getComponent('Tech'); // We need to make sure this check is only done if Tech has been registered. - - var isTech = Tech && Tech.isTech(ComponentToRegister); - var isComp = Component === ComponentToRegister || Component.prototype.isPrototypeOf(ComponentToRegister.prototype); - - if (isTech || !isComp) { - var reason; - - if (isTech) { - reason = 'techs must be registered using Tech.registerTech()'; - } else { - reason = 'must be a Component subclass'; - } - - throw new Error("Illegal component, \"" + name + "\"; " + reason + "."); - } - - name = toTitleCase(name); - - if (!Component.components_) { - Component.components_ = {}; - } - - var Player = Component.getComponent('Player'); - - if (name === 'Player' && Player && Player.players) { - var players = Player.players; - var playerNames = Object.keys(players); // If we have players that were disposed, then their name will still be - // in Players.players. So, we must loop through and verify that the value - // for each item is not null. This allows registration of the Player component - // after all players have been disposed or before any were created. - - if (players && playerNames.length > 0 && playerNames.map(function (pname) { - return players[pname]; - }).every(Boolean)) { - throw new Error('Can not register Player component after player has been created.'); - } - } - - Component.components_[name] = ComponentToRegister; - Component.components_[toLowerCase(name)] = ComponentToRegister; - return ComponentToRegister; - } - /** - * Get a `Component` based on the name it was registered with. - * - * @param {string} name - * The Name of the component to get. - * - * @return {Component} - * The `Component` that got registered under the given name. - * - * @deprecated In `videojs` 6 this will not return `Component`s that were not - * registered using {@link Component.registerComponent}. Currently we - * check the global `videojs` object for a `Component` name and - * return that if it exists. - */ - ; - - Component.getComponent = function getComponent(name) { - if (!name || !Component.components_) { - return; - } - - return Component.components_[name]; - }; - - return Component; -}(); -/** - * Whether or not this component supports `requestAnimationFrame`. - * - * This is exposed primarily for testing purposes. - * - * @private - * @type {Boolean} - */ - - -Component.prototype.supportsRaf_ = typeof window_1$1.requestAnimationFrame === 'function' && typeof window_1$1.cancelAnimationFrame === 'function'; -Component.registerComponent('Component', Component); - -/** - * @file browser.js - * @module browser - */ -var USER_AGENT = window_1$1.navigator && window_1$1.navigator.userAgent || ''; -var webkitVersionMap = /AppleWebKit\/([\d.]+)/i.exec(USER_AGENT); -var appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null; -/** - * Whether or not this device is an iPod. - * - * @static - * @const - * @type {Boolean} - */ - -var IS_IPOD = /iPod/i.test(USER_AGENT); -/** - * The detected iOS version - or `null`. - * - * @static - * @const - * @type {string|null} - */ - -var IOS_VERSION = function () { - var match = USER_AGENT.match(/OS (\d+)_/i); - - if (match && match[1]) { - return match[1]; - } - - return null; -}(); -/** - * Whether or not this is an Android device. - * - * @static - * @const - * @type {Boolean} - */ - -var IS_ANDROID = /Android/i.test(USER_AGENT); -/** - * The detected Android version - or `null`. - * - * @static - * @const - * @type {number|string|null} - */ - -var ANDROID_VERSION = function () { - // This matches Android Major.Minor.Patch versions - // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned - var match = USER_AGENT.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i); - - if (!match) { - return null; - } - - var major = match[1] && parseFloat(match[1]); - var minor = match[2] && parseFloat(match[2]); - - if (major && minor) { - return parseFloat(match[1] + '.' + match[2]); - } else if (major) { - return major; - } - - return null; -}(); -/** - * Whether or not this is a native Android browser. - * - * @static - * @const - * @type {Boolean} - */ - -var IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537; -/** - * Whether or not this is Mozilla Firefox. - * - * @static - * @const - * @type {Boolean} - */ - -var IS_FIREFOX = /Firefox/i.test(USER_AGENT); -/** - * Whether or not this is Microsoft Edge. - * - * @static - * @const - * @type {Boolean} - */ - -var IS_EDGE = /Edg/i.test(USER_AGENT); -/** - * Whether or not this is Google Chrome. - * - * This will also be `true` for Chrome on iOS, which will have different support - * as it is actually Safari under the hood. - * - * @static - * @const - * @type {Boolean} - */ - -var IS_CHROME = !IS_EDGE && (/Chrome/i.test(USER_AGENT) || /CriOS/i.test(USER_AGENT)); -/** - * The detected Google Chrome version - or `null`. - * - * @static - * @const - * @type {number|null} - */ - -var CHROME_VERSION = function () { - var match = USER_AGENT.match(/(Chrome|CriOS)\/(\d+)/); - - if (match && match[2]) { - return parseFloat(match[2]); - } - - return null; -}(); -/** - * The detected Internet Explorer version - or `null`. - * - * @static - * @const - * @type {number|null} - */ - -var IE_VERSION = function () { - var result = /MSIE\s(\d+)\.\d/.exec(USER_AGENT); - var version = result && parseFloat(result[1]); - - if (!version && /Trident\/7.0/i.test(USER_AGENT) && /rv:11.0/.test(USER_AGENT)) { - // IE 11 has a different user agent string than other IE versions - version = 11.0; - } - - return version; -}(); -/** - * Whether or not this is desktop Safari. - * - * @static - * @const - * @type {Boolean} - */ - -var IS_SAFARI = /Safari/i.test(USER_AGENT) && !IS_CHROME && !IS_ANDROID && !IS_EDGE; -/** - * Whether or not this is a Windows machine. - * - * @static - * @const - * @type {Boolean} - */ - -var IS_WINDOWS = /Windows/i.test(USER_AGENT); -/** - * Whether or not this device is touch-enabled. - * - * @static - * @const - * @type {Boolean} - */ - -var TOUCH_ENABLED = isReal() && ('ontouchstart' in window_1$1 || window_1$1.navigator.maxTouchPoints || window_1$1.DocumentTouch && window_1$1.document instanceof window_1$1.DocumentTouch); -/** - * Whether or not this device is an iPad. - * - * @static - * @const - * @type {Boolean} - */ - -var IS_IPAD = /iPad/i.test(USER_AGENT) || IS_SAFARI && TOUCH_ENABLED && !/iPhone/i.test(USER_AGENT); -/** - * Whether or not this device is an iPhone. - * - * @static - * @const - * @type {Boolean} - */ -// The Facebook app's UIWebView identifies as both an iPhone and iPad, so -// to identify iPhones, we need to exclude iPads. -// http://artsy.github.io/blog/2012/10/18/the-perils-of-ios-user-agent-sniffing/ - -var IS_IPHONE = /iPhone/i.test(USER_AGENT) && !IS_IPAD; -/** - * Whether or not this is an iOS device. - * - * @static - * @const - * @type {Boolean} - */ - -var IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD; -/** - * Whether or not this is any flavor of Safari - including iOS. - * - * @static - * @const - * @type {Boolean} - */ - -var IS_ANY_SAFARI = (IS_SAFARI || IS_IOS) && !IS_CHROME; - -var browser = /*#__PURE__*/Object.freeze({ - __proto__: null, - IS_IPOD: IS_IPOD, - IOS_VERSION: IOS_VERSION, - IS_ANDROID: IS_ANDROID, - ANDROID_VERSION: ANDROID_VERSION, - IS_NATIVE_ANDROID: IS_NATIVE_ANDROID, - IS_FIREFOX: IS_FIREFOX, - IS_EDGE: IS_EDGE, - IS_CHROME: IS_CHROME, - CHROME_VERSION: CHROME_VERSION, - IE_VERSION: IE_VERSION, - IS_SAFARI: IS_SAFARI, - IS_WINDOWS: IS_WINDOWS, - TOUCH_ENABLED: TOUCH_ENABLED, - IS_IPAD: IS_IPAD, - IS_IPHONE: IS_IPHONE, - IS_IOS: IS_IOS, - IS_ANY_SAFARI: IS_ANY_SAFARI -}); - -/** - * @file time-ranges.js - * @module time-ranges - */ - -/** - * Returns the time for the specified index at the start or end - * of a TimeRange object. - * - * @typedef {Function} TimeRangeIndex - * - * @param {number} [index=0] - * The range number to return the time for. - * - * @return {number} - * The time offset at the specified index. - * - * @deprecated The index argument must be provided. - * In the future, leaving it out will throw an error. - */ - -/** - * An object that contains ranges of time. - * - * @typedef {Object} TimeRange - * - * @property {number} length - * The number of time ranges represented by this object. - * - * @property {module:time-ranges~TimeRangeIndex} start - * Returns the time offset at which a specified time range begins. - * - * @property {module:time-ranges~TimeRangeIndex} end - * Returns the time offset at which a specified time range ends. - * - * @see https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges - */ - -/** - * Check if any of the time ranges are over the maximum index. - * - * @private - * @param {string} fnName - * The function name to use for logging - * - * @param {number} index - * The index to check - * - * @param {number} maxIndex - * The maximum possible index - * - * @throws {Error} if the timeRanges provided are over the maxIndex - */ -function rangeCheck(fnName, index, maxIndex) { - if (typeof index !== 'number' || index < 0 || index > maxIndex) { - throw new Error("Failed to execute '" + fnName + "' on 'TimeRanges': The index provided (" + index + ") is non-numeric or out of bounds (0-" + maxIndex + ")."); - } -} -/** - * Get the time for the specified index at the start or end - * of a TimeRange object. - * - * @private - * @param {string} fnName - * The function name to use for logging - * - * @param {string} valueIndex - * The property that should be used to get the time. should be - * 'start' or 'end' - * - * @param {Array} ranges - * An array of time ranges - * - * @param {Array} [rangeIndex=0] - * The index to start the search at - * - * @return {number} - * The time that offset at the specified index. - * - * @deprecated rangeIndex must be set to a value, in the future this will throw an error. - * @throws {Error} if rangeIndex is more than the length of ranges - */ - - -function getRange(fnName, valueIndex, ranges, rangeIndex) { - rangeCheck(fnName, rangeIndex, ranges.length - 1); - return ranges[rangeIndex][valueIndex]; -} -/** - * Create a time range object given ranges of time. - * - * @private - * @param {Array} [ranges] - * An array of time ranges. - */ - - -function createTimeRangesObj(ranges) { - if (ranges === undefined || ranges.length === 0) { - return { - length: 0, - start: function start() { - throw new Error('This TimeRanges object is empty'); - }, - end: function end() { - throw new Error('This TimeRanges object is empty'); - } - }; - } - - return { - length: ranges.length, - start: getRange.bind(null, 'start', 0, ranges), - end: getRange.bind(null, 'end', 1, ranges) - }; -} -/** - * Create a `TimeRange` object which mimics an - * {@link https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges|HTML5 TimeRanges instance}. - * - * @param {number|Array[]} start - * The start of a single range (a number) or an array of ranges (an - * array of arrays of two numbers each). - * - * @param {number} end - * The end of a single range. Cannot be used with the array form of - * the `start` argument. - */ - - -function createTimeRanges(start, end) { - if (Array.isArray(start)) { - return createTimeRangesObj(start); - } else if (start === undefined || end === undefined) { - return createTimeRangesObj(); - } - - return createTimeRangesObj([[start, end]]); -} - -/** - * @file buffer.js - * @module buffer - */ -/** - * Compute the percentage of the media that has been buffered. - * - * @param {TimeRange} buffered - * The current `TimeRange` object representing buffered time ranges - * - * @param {number} duration - * Total duration of the media - * - * @return {number} - * Percent buffered of the total duration in decimal form. - */ - -function bufferedPercent(buffered, duration) { - var bufferedDuration = 0; - var start; - var end; - - if (!duration) { - return 0; - } - - if (!buffered || !buffered.length) { - buffered = createTimeRanges(0, 0); - } - - for (var i = 0; i < buffered.length; i++) { - start = buffered.start(i); - end = buffered.end(i); // buffered end can be bigger than duration by a very small fraction - - if (end > duration) { - end = duration; - } - - bufferedDuration += end - start; - } - - return bufferedDuration / duration; -} - -/** - * @file fullscreen-api.js - * @module fullscreen-api - * @private - */ -/** - * Store the browser-specific methods for the fullscreen API. - * - * @type {Object} - * @see [Specification]{@link https://fullscreen.spec.whatwg.org} - * @see [Map Approach From Screenfull.js]{@link https://github.com/sindresorhus/screenfull.js} - */ - -var FullscreenApi = { - prefixed: true -}; // browser API methods - -var apiMap = [['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror', 'fullscreen'], // WebKit -['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror', '-webkit-full-screen'], // Mozilla -['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror', '-moz-full-screen'], // Microsoft -['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError', '-ms-fullscreen']]; -var specApi = apiMap[0]; -var browserApi; // determine the supported set of functions - -for (var i = 0; i < apiMap.length; i++) { - // check for exitFullscreen function - if (apiMap[i][1] in document_1) { - browserApi = apiMap[i]; - break; - } -} // map the browser API names to the spec API names - - -if (browserApi) { - for (var _i = 0; _i < browserApi.length; _i++) { - FullscreenApi[specApi[_i]] = browserApi[_i]; - } - - FullscreenApi.prefixed = browserApi[0] !== specApi[0]; -} - -/** - * @file media-error.js - */ -/** - * A Custom `MediaError` class which mimics the standard HTML5 `MediaError` class. - * - * @param {number|string|Object|MediaError} value - * This can be of multiple types: - * - number: should be a standard error code - * - string: an error message (the code will be 0) - * - Object: arbitrary properties - * - `MediaError` (native): used to populate a video.js `MediaError` object - * - `MediaError` (video.js): will return itself if it's already a - * video.js `MediaError` object. - * - * @see [MediaError Spec]{@link https://dev.w3.org/html5/spec-author-view/video.html#mediaerror} - * @see [Encrypted MediaError Spec]{@link https://www.w3.org/TR/2013/WD-encrypted-media-20130510/#error-codes} - * - * @class MediaError - */ - -function MediaError(value) { - // Allow redundant calls to this constructor to avoid having `instanceof` - // checks peppered around the code. - if (value instanceof MediaError) { - return value; - } - - if (typeof value === 'number') { - this.code = value; - } else if (typeof value === 'string') { - // default code is zero, so this is a custom error - this.message = value; - } else if (isObject$1(value)) { - // We assign the `code` property manually because native `MediaError` objects - // do not expose it as an own/enumerable property of the object. - if (typeof value.code === 'number') { - this.code = value.code; - } - - assign(this, value); - } - - if (!this.message) { - this.message = MediaError.defaultMessages[this.code] || ''; - } -} -/** - * The error code that refers two one of the defined `MediaError` types - * - * @type {Number} - */ - - -MediaError.prototype.code = 0; -/** - * An optional message that to show with the error. Message is not part of the HTML5 - * video spec but allows for more informative custom errors. - * - * @type {String} - */ - -MediaError.prototype.message = ''; -/** - * An optional status code that can be set by plugins to allow even more detail about - * the error. For example a plugin might provide a specific HTTP status code and an - * error message for that code. Then when the plugin gets that error this class will - * know how to display an error message for it. This allows a custom message to show - * up on the `Player` error overlay. - * - * @type {Array} - */ - -MediaError.prototype.status = null; -/** - * Errors indexed by the W3C standard. The order **CANNOT CHANGE**! See the - * specification listed under {@link MediaError} for more information. - * - * @enum {array} - * @readonly - * @property {string} 0 - MEDIA_ERR_CUSTOM - * @property {string} 1 - MEDIA_ERR_ABORTED - * @property {string} 2 - MEDIA_ERR_NETWORK - * @property {string} 3 - MEDIA_ERR_DECODE - * @property {string} 4 - MEDIA_ERR_SRC_NOT_SUPPORTED - * @property {string} 5 - MEDIA_ERR_ENCRYPTED - */ - -MediaError.errorTypes = ['MEDIA_ERR_CUSTOM', 'MEDIA_ERR_ABORTED', 'MEDIA_ERR_NETWORK', 'MEDIA_ERR_DECODE', 'MEDIA_ERR_SRC_NOT_SUPPORTED', 'MEDIA_ERR_ENCRYPTED']; -/** - * The default `MediaError` messages based on the {@link MediaError.errorTypes}. - * - * @type {Array} - * @constant - */ - -MediaError.defaultMessages = { - 1: 'You aborted the media playback', - 2: 'A network error caused the media download to fail part-way.', - 3: 'The media playback was aborted due to a corruption problem or because the media used features your browser did not support.', - 4: 'The media could not be loaded, either because the server or network failed or because the format is not supported.', - 5: 'The media is encrypted and we do not have the keys to decrypt it.' -}; // Add types as properties on MediaError -// e.g. MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED = 4; - -for (var errNum = 0; errNum < MediaError.errorTypes.length; errNum++) { - MediaError[MediaError.errorTypes[errNum]] = errNum; // values should be accessible on both the class and instance - - MediaError.prototype[MediaError.errorTypes[errNum]] = errNum; -} // jsdocs for instance/static members added above - -/** - * Returns whether an object is `Promise`-like (i.e. has a `then` method). - * - * @param {Object} value - * An object that may or may not be `Promise`-like. - * - * @return {boolean} - * Whether or not the object is `Promise`-like. - */ -function isPromise(value) { - return value !== undefined && value !== null && typeof value.then === 'function'; -} -/** - * Silence a Promise-like object. - * - * This is useful for avoiding non-harmful, but potentially confusing "uncaught - * play promise" rejection error messages. - * - * @param {Object} value - * An object that may or may not be `Promise`-like. - */ - -function silencePromise(value) { - if (isPromise(value)) { - value.then(null, function (e) {}); - } -} - -/** - * @file text-track-list-converter.js Utilities for capturing text track state and - * re-creating tracks based on a capture. - * - * @module text-track-list-converter - */ - -/** - * Examine a single {@link TextTrack} and return a JSON-compatible javascript object that - * represents the {@link TextTrack}'s state. - * - * @param {TextTrack} track - * The text track to query. - * - * @return {Object} - * A serializable javascript representation of the TextTrack. - * @private - */ -var trackToJson_ = function trackToJson_(track) { - var ret = ['kind', 'label', 'language', 'id', 'inBandMetadataTrackDispatchType', 'mode', 'src'].reduce(function (acc, prop, i) { - if (track[prop]) { - acc[prop] = track[prop]; - } - - return acc; - }, { - cues: track.cues && Array.prototype.map.call(track.cues, function (cue) { - return { - startTime: cue.startTime, - endTime: cue.endTime, - text: cue.text, - id: cue.id - }; - }) - }); - return ret; -}; -/** - * Examine a {@link Tech} and return a JSON-compatible javascript array that represents the - * state of all {@link TextTrack}s currently configured. The return array is compatible with - * {@link text-track-list-converter:jsonToTextTracks}. - * - * @param {Tech} tech - * The tech object to query - * - * @return {Array} - * A serializable javascript representation of the {@link Tech}s - * {@link TextTrackList}. - */ - - -var textTracksToJson = function textTracksToJson(tech) { - var trackEls = tech.$$('track'); - var trackObjs = Array.prototype.map.call(trackEls, function (t) { - return t.track; - }); - var tracks = Array.prototype.map.call(trackEls, function (trackEl) { - var json = trackToJson_(trackEl.track); - - if (trackEl.src) { - json.src = trackEl.src; - } - - return json; - }); - return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function (track) { - return trackObjs.indexOf(track) === -1; - }).map(trackToJson_)); -}; -/** - * Create a set of remote {@link TextTrack}s on a {@link Tech} based on an array of javascript - * object {@link TextTrack} representations. - * - * @param {Array} json - * An array of `TextTrack` representation objects, like those that would be - * produced by `textTracksToJson`. - * - * @param {Tech} tech - * The `Tech` to create the `TextTrack`s on. - */ - - -var jsonToTextTracks = function jsonToTextTracks(json, tech) { - json.forEach(function (track) { - var addedTrack = tech.addRemoteTextTrack(track).track; - - if (!track.src && track.cues) { - track.cues.forEach(function (cue) { - return addedTrack.addCue(cue); - }); - } - }); - return tech.textTracks(); -}; - -var textTrackConverter = { - textTracksToJson: textTracksToJson, - jsonToTextTracks: jsonToTextTracks, - trackToJson_: trackToJson_ -}; - -var MODAL_CLASS_NAME = 'vjs-modal-dialog'; -/** - * The `ModalDialog` displays over the video and its controls, which blocks - * interaction with the player until it is closed. - * - * Modal dialogs include a "Close" button and will close when that button - * is activated - or when ESC is pressed anywhere. - * - * @extends Component - */ - -var ModalDialog = /*#__PURE__*/function (_Component) { - inheritsLoose(ModalDialog, _Component); - - /** - * Create an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - * - * @param {Mixed} [options.content=undefined] - * Provide customized content for this modal. - * - * @param {string} [options.description] - * A text description for the modal, primarily for accessibility. - * - * @param {boolean} [options.fillAlways=false] - * Normally, modals are automatically filled only the first time - * they open. This tells the modal to refresh its content - * every time it opens. - * - * @param {string} [options.label] - * A text label for the modal, primarily for accessibility. - * - * @param {boolean} [options.pauseOnOpen=true] - * If `true`, playback will will be paused if playing when - * the modal opens, and resumed when it closes. - * - * @param {boolean} [options.temporary=true] - * If `true`, the modal can only be opened once; it will be - * disposed as soon as it's closed. - * - * @param {boolean} [options.uncloseable=false] - * If `true`, the user will not be able to close the modal - * through the UI in the normal ways. Programmatic closing is - * still possible. - */ - function ModalDialog(player, options) { - var _this; - - _this = _Component.call(this, player, options) || this; - _this.opened_ = _this.hasBeenOpened_ = _this.hasBeenFilled_ = false; - - _this.closeable(!_this.options_.uncloseable); - - _this.content(_this.options_.content); // Make sure the contentEl is defined AFTER any children are initialized - // because we only want the contents of the modal in the contentEl - // (not the UI elements like the close button). - - - _this.contentEl_ = createEl('div', { - className: MODAL_CLASS_NAME + "-content" - }, { - role: 'document' - }); - _this.descEl_ = createEl('p', { - className: MODAL_CLASS_NAME + "-description vjs-control-text", - id: _this.el().getAttribute('aria-describedby') - }); - textContent(_this.descEl_, _this.description()); - - _this.el_.appendChild(_this.descEl_); - - _this.el_.appendChild(_this.contentEl_); - - return _this; - } - /** - * Create the `ModalDialog`'s DOM element - * - * @return {Element} - * The DOM element that gets created. - */ - - - var _proto = ModalDialog.prototype; - - _proto.createEl = function createEl() { - return _Component.prototype.createEl.call(this, 'div', { - className: this.buildCSSClass(), - tabIndex: -1 - }, { - 'aria-describedby': this.id() + "_description", - 'aria-hidden': 'true', - 'aria-label': this.label(), - 'role': 'dialog' - }); - }; - - _proto.dispose = function dispose() { - this.contentEl_ = null; - this.descEl_ = null; - this.previouslyActiveEl_ = null; - - _Component.prototype.dispose.call(this); - } - /** - * Builds the default DOM `className`. - * - * @return {string} - * The DOM `className` for this object. - */ - ; - - _proto.buildCSSClass = function buildCSSClass() { - return MODAL_CLASS_NAME + " vjs-hidden " + _Component.prototype.buildCSSClass.call(this); - } - /** - * Returns the label string for this modal. Primarily used for accessibility. - * - * @return {string} - * the localized or raw label of this modal. - */ - ; - - _proto.label = function label() { - return this.localize(this.options_.label || 'Modal Window'); - } - /** - * Returns the description string for this modal. Primarily used for - * accessibility. - * - * @return {string} - * The localized or raw description of this modal. - */ - ; - - _proto.description = function description() { - var desc = this.options_.description || this.localize('This is a modal window.'); // Append a universal closeability message if the modal is closeable. - - if (this.closeable()) { - desc += ' ' + this.localize('This modal can be closed by pressing the Escape key or activating the close button.'); - } - - return desc; - } - /** - * Opens the modal. - * - * @fires ModalDialog#beforemodalopen - * @fires ModalDialog#modalopen - */ - ; - - _proto.open = function open() { - if (!this.opened_) { - var player = this.player(); - /** - * Fired just before a `ModalDialog` is opened. - * - * @event ModalDialog#beforemodalopen - * @type {EventTarget~Event} - */ - - this.trigger('beforemodalopen'); - this.opened_ = true; // Fill content if the modal has never opened before and - // never been filled. - - if (this.options_.fillAlways || !this.hasBeenOpened_ && !this.hasBeenFilled_) { - this.fill(); - } // If the player was playing, pause it and take note of its previously - // playing state. - - - this.wasPlaying_ = !player.paused(); - - if (this.options_.pauseOnOpen && this.wasPlaying_) { - player.pause(); - } - - this.on('keydown', this.handleKeyDown); // Hide controls and note if they were enabled. - - this.hadControls_ = player.controls(); - player.controls(false); - this.show(); - this.conditionalFocus_(); - this.el().setAttribute('aria-hidden', 'false'); - /** - * Fired just after a `ModalDialog` is opened. - * - * @event ModalDialog#modalopen - * @type {EventTarget~Event} - */ - - this.trigger('modalopen'); - this.hasBeenOpened_ = true; - } - } - /** - * If the `ModalDialog` is currently open or closed. - * - * @param {boolean} [value] - * If given, it will open (`true`) or close (`false`) the modal. - * - * @return {boolean} - * the current open state of the modaldialog - */ - ; - - _proto.opened = function opened(value) { - if (typeof value === 'boolean') { - this[value ? 'open' : 'close'](); - } - - return this.opened_; - } - /** - * Closes the modal, does nothing if the `ModalDialog` is - * not open. - * - * @fires ModalDialog#beforemodalclose - * @fires ModalDialog#modalclose - */ - ; - - _proto.close = function close() { - if (!this.opened_) { - return; - } - - var player = this.player(); - /** - * Fired just before a `ModalDialog` is closed. - * - * @event ModalDialog#beforemodalclose - * @type {EventTarget~Event} - */ - - this.trigger('beforemodalclose'); - this.opened_ = false; - - if (this.wasPlaying_ && this.options_.pauseOnOpen) { - player.play(); - } - - this.off('keydown', this.handleKeyDown); - - if (this.hadControls_) { - player.controls(true); - } - - this.hide(); - this.el().setAttribute('aria-hidden', 'true'); - /** - * Fired just after a `ModalDialog` is closed. - * - * @event ModalDialog#modalclose - * @type {EventTarget~Event} - */ - - this.trigger('modalclose'); - this.conditionalBlur_(); - - if (this.options_.temporary) { - this.dispose(); - } - } - /** - * Check to see if the `ModalDialog` is closeable via the UI. - * - * @param {boolean} [value] - * If given as a boolean, it will set the `closeable` option. - * - * @return {boolean} - * Returns the final value of the closable option. - */ - ; - - _proto.closeable = function closeable(value) { - if (typeof value === 'boolean') { - var closeable = this.closeable_ = !!value; - var close = this.getChild('closeButton'); // If this is being made closeable and has no close button, add one. - - if (closeable && !close) { - // The close button should be a child of the modal - not its - // content element, so temporarily change the content element. - var temp = this.contentEl_; - this.contentEl_ = this.el_; - close = this.addChild('closeButton', { - controlText: 'Close Modal Dialog' - }); - this.contentEl_ = temp; - this.on(close, 'close', this.close); - } // If this is being made uncloseable and has a close button, remove it. - - - if (!closeable && close) { - this.off(close, 'close', this.close); - this.removeChild(close); - close.dispose(); - } - } - - return this.closeable_; - } - /** - * Fill the modal's content element with the modal's "content" option. - * The content element will be emptied before this change takes place. - */ - ; - - _proto.fill = function fill() { - this.fillWith(this.content()); - } - /** - * Fill the modal's content element with arbitrary content. - * The content element will be emptied before this change takes place. - * - * @fires ModalDialog#beforemodalfill - * @fires ModalDialog#modalfill - * - * @param {Mixed} [content] - * The same rules apply to this as apply to the `content` option. - */ - ; - - _proto.fillWith = function fillWith(content) { - var contentEl = this.contentEl(); - var parentEl = contentEl.parentNode; - var nextSiblingEl = contentEl.nextSibling; - /** - * Fired just before a `ModalDialog` is filled with content. - * - * @event ModalDialog#beforemodalfill - * @type {EventTarget~Event} - */ - - this.trigger('beforemodalfill'); - this.hasBeenFilled_ = true; // Detach the content element from the DOM before performing - // manipulation to avoid modifying the live DOM multiple times. - - parentEl.removeChild(contentEl); - this.empty(); - insertContent(contentEl, content); - /** - * Fired just after a `ModalDialog` is filled with content. - * - * @event ModalDialog#modalfill - * @type {EventTarget~Event} - */ - - this.trigger('modalfill'); // Re-inject the re-filled content element. - - if (nextSiblingEl) { - parentEl.insertBefore(contentEl, nextSiblingEl); - } else { - parentEl.appendChild(contentEl); - } // make sure that the close button is last in the dialog DOM - - - var closeButton = this.getChild('closeButton'); - - if (closeButton) { - parentEl.appendChild(closeButton.el_); - } - } - /** - * Empties the content element. This happens anytime the modal is filled. - * - * @fires ModalDialog#beforemodalempty - * @fires ModalDialog#modalempty - */ - ; - - _proto.empty = function empty() { - /** - * Fired just before a `ModalDialog` is emptied. - * - * @event ModalDialog#beforemodalempty - * @type {EventTarget~Event} - */ - this.trigger('beforemodalempty'); - emptyEl(this.contentEl()); - /** - * Fired just after a `ModalDialog` is emptied. - * - * @event ModalDialog#modalempty - * @type {EventTarget~Event} - */ - - this.trigger('modalempty'); - } - /** - * Gets or sets the modal content, which gets normalized before being - * rendered into the DOM. - * - * This does not update the DOM or fill the modal, but it is called during - * that process. - * - * @param {Mixed} [value] - * If defined, sets the internal content value to be used on the - * next call(s) to `fill`. This value is normalized before being - * inserted. To "clear" the internal content value, pass `null`. - * - * @return {Mixed} - * The current content of the modal dialog - */ - ; - - _proto.content = function content(value) { - if (typeof value !== 'undefined') { - this.content_ = value; - } - - return this.content_; - } - /** - * conditionally focus the modal dialog if focus was previously on the player. - * - * @private - */ - ; - - _proto.conditionalFocus_ = function conditionalFocus_() { - var activeEl = document_1.activeElement; - var playerEl = this.player_.el_; - this.previouslyActiveEl_ = null; - - if (playerEl.contains(activeEl) || playerEl === activeEl) { - this.previouslyActiveEl_ = activeEl; - this.focus(); - } - } - /** - * conditionally blur the element and refocus the last focused element - * - * @private - */ - ; - - _proto.conditionalBlur_ = function conditionalBlur_() { - if (this.previouslyActiveEl_) { - this.previouslyActiveEl_.focus(); - this.previouslyActiveEl_ = null; - } - } - /** - * Keydown handler. Attached when modal is focused. - * - * @listens keydown - */ - ; - - _proto.handleKeyDown = function handleKeyDown(event) { - // Do not allow keydowns to reach out of the modal dialog. - event.stopPropagation(); - - if (keycode.isEventKey(event, 'Escape') && this.closeable()) { - event.preventDefault(); - this.close(); - return; - } // exit early if it isn't a tab key - - - if (!keycode.isEventKey(event, 'Tab')) { - return; - } - - var focusableEls = this.focusableEls_(); - var activeEl = this.el_.querySelector(':focus'); - var focusIndex; - - for (var i = 0; i < focusableEls.length; i++) { - if (activeEl === focusableEls[i]) { - focusIndex = i; - break; - } - } - - if (document_1.activeElement === this.el_) { - focusIndex = 0; - } - - if (event.shiftKey && focusIndex === 0) { - focusableEls[focusableEls.length - 1].focus(); - event.preventDefault(); - } else if (!event.shiftKey && focusIndex === focusableEls.length - 1) { - focusableEls[0].focus(); - event.preventDefault(); - } - } - /** - * get all focusable elements - * - * @private - */ - ; - - _proto.focusableEls_ = function focusableEls_() { - var allChildren = this.el_.querySelectorAll('*'); - return Array.prototype.filter.call(allChildren, function (child) { - return (child instanceof window_1$1.HTMLAnchorElement || child instanceof window_1$1.HTMLAreaElement) && child.hasAttribute('href') || (child instanceof window_1$1.HTMLInputElement || child instanceof window_1$1.HTMLSelectElement || child instanceof window_1$1.HTMLTextAreaElement || child instanceof window_1$1.HTMLButtonElement) && !child.hasAttribute('disabled') || child instanceof window_1$1.HTMLIFrameElement || child instanceof window_1$1.HTMLObjectElement || child instanceof window_1$1.HTMLEmbedElement || child.hasAttribute('tabindex') && child.getAttribute('tabindex') !== -1 || child.hasAttribute('contenteditable'); - }); - }; - - return ModalDialog; -}(Component); -/** - * Default options for `ModalDialog` default options. - * - * @type {Object} - * @private - */ - - -ModalDialog.prototype.options_ = { - pauseOnOpen: true, - temporary: true -}; -Component.registerComponent('ModalDialog', ModalDialog); - -/** - * Common functionaliy between {@link TextTrackList}, {@link AudioTrackList}, and - * {@link VideoTrackList} - * - * @extends EventTarget - */ - -var TrackList = /*#__PURE__*/function (_EventTarget) { - inheritsLoose(TrackList, _EventTarget); - - /** - * Create an instance of this class - * - * @param {Track[]} tracks - * A list of tracks to initialize the list with. - * - * @abstract - */ - function TrackList(tracks) { - var _this; - - if (tracks === void 0) { - tracks = []; - } - - _this = _EventTarget.call(this) || this; - _this.tracks_ = []; - /** - * @memberof TrackList - * @member {number} length - * The current number of `Track`s in the this Trackist. - * @instance - */ - - Object.defineProperty(assertThisInitialized(_this), 'length', { - get: function get() { - return this.tracks_.length; - } - }); - - for (var i = 0; i < tracks.length; i++) { - _this.addTrack(tracks[i]); - } - - return _this; - } - /** - * Add a {@link Track} to the `TrackList` - * - * @param {Track} track - * The audio, video, or text track to add to the list. - * - * @fires TrackList#addtrack - */ - - - var _proto = TrackList.prototype; - - _proto.addTrack = function addTrack(track) { - var index = this.tracks_.length; - - if (!('' + index in this)) { - Object.defineProperty(this, index, { - get: function get() { - return this.tracks_[index]; - } - }); - } // Do not add duplicate tracks - - - if (this.tracks_.indexOf(track) === -1) { - this.tracks_.push(track); - /** - * Triggered when a track is added to a track list. - * - * @event TrackList#addtrack - * @type {EventTarget~Event} - * @property {Track} track - * A reference to track that was added. - */ - - this.trigger({ - track: track, - type: 'addtrack', - target: this - }); - } - } - /** - * Remove a {@link Track} from the `TrackList` - * - * @param {Track} rtrack - * The audio, video, or text track to remove from the list. - * - * @fires TrackList#removetrack - */ - ; - - _proto.removeTrack = function removeTrack(rtrack) { - var track; - - for (var i = 0, l = this.length; i < l; i++) { - if (this[i] === rtrack) { - track = this[i]; - - if (track.off) { - track.off(); - } - - this.tracks_.splice(i, 1); - break; - } - } - - if (!track) { - return; - } - /** - * Triggered when a track is removed from track list. - * - * @event TrackList#removetrack - * @type {EventTarget~Event} - * @property {Track} track - * A reference to track that was removed. - */ - - - this.trigger({ - track: track, - type: 'removetrack', - target: this - }); - } - /** - * Get a Track from the TrackList by a tracks id - * - * @param {string} id - the id of the track to get - * @method getTrackById - * @return {Track} - * @private - */ - ; - - _proto.getTrackById = function getTrackById(id) { - var result = null; - - for (var i = 0, l = this.length; i < l; i++) { - var track = this[i]; - - if (track.id === id) { - result = track; - break; - } - } - - return result; - }; - - return TrackList; -}(EventTarget); -/** - * Triggered when a different track is selected/enabled. - * - * @event TrackList#change - * @type {EventTarget~Event} - */ - -/** - * Events that can be called with on + eventName. See {@link EventHandler}. - * - * @property {Object} TrackList#allowedEvents_ - * @private - */ - - -TrackList.prototype.allowedEvents_ = { - change: 'change', - addtrack: 'addtrack', - removetrack: 'removetrack' -}; // emulate attribute EventHandler support to allow for feature detection - -for (var event in TrackList.prototype.allowedEvents_) { - TrackList.prototype['on' + event] = null; -} - -/** - * Anywhere we call this function we diverge from the spec - * as we only support one enabled audiotrack at a time - * - * @param {AudioTrackList} list - * list to work on - * - * @param {AudioTrack} track - * The track to skip - * - * @private - */ - -var disableOthers = function disableOthers(list, track) { - for (var i = 0; i < list.length; i++) { - if (!Object.keys(list[i]).length || track.id === list[i].id) { - continue; - } // another audio track is enabled, disable it - - - list[i].enabled = false; - } -}; -/** - * The current list of {@link AudioTrack} for a media file. - * - * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotracklist} - * @extends TrackList - */ - - -var AudioTrackList = /*#__PURE__*/function (_TrackList) { - inheritsLoose(AudioTrackList, _TrackList); - - /** - * Create an instance of this class. - * - * @param {AudioTrack[]} [tracks=[]] - * A list of `AudioTrack` to instantiate the list with. - */ - function AudioTrackList(tracks) { - var _this; - - if (tracks === void 0) { - tracks = []; - } - - // make sure only 1 track is enabled - // sorted from last index to first index - for (var i = tracks.length - 1; i >= 0; i--) { - if (tracks[i].enabled) { - disableOthers(tracks, tracks[i]); - break; - } - } - - _this = _TrackList.call(this, tracks) || this; - _this.changing_ = false; - return _this; - } - /** - * Add an {@link AudioTrack} to the `AudioTrackList`. - * - * @param {AudioTrack} track - * The AudioTrack to add to the list - * - * @fires TrackList#addtrack - */ - - - var _proto = AudioTrackList.prototype; - - _proto.addTrack = function addTrack(track) { - var _this2 = this; - - if (track.enabled) { - disableOthers(this, track); - } - - _TrackList.prototype.addTrack.call(this, track); // native tracks don't have this - - - if (!track.addEventListener) { - return; - } - - track.enabledChange_ = function () { - // when we are disabling other tracks (since we don't support - // more than one track at a time) we will set changing_ - // to true so that we don't trigger additional change events - if (_this2.changing_) { - return; - } - - _this2.changing_ = true; - disableOthers(_this2, track); - _this2.changing_ = false; - - _this2.trigger('change'); - }; - /** - * @listens AudioTrack#enabledchange - * @fires TrackList#change - */ - - - track.addEventListener('enabledchange', track.enabledChange_); - }; - - _proto.removeTrack = function removeTrack(rtrack) { - _TrackList.prototype.removeTrack.call(this, rtrack); - - if (rtrack.removeEventListener && rtrack.enabledChange_) { - rtrack.removeEventListener('enabledchange', rtrack.enabledChange_); - rtrack.enabledChange_ = null; - } - }; - - return AudioTrackList; -}(TrackList); - -/** - * Un-select all other {@link VideoTrack}s that are selected. - * - * @param {VideoTrackList} list - * list to work on - * - * @param {VideoTrack} track - * The track to skip - * - * @private - */ - -var disableOthers$1 = function disableOthers(list, track) { - for (var i = 0; i < list.length; i++) { - if (!Object.keys(list[i]).length || track.id === list[i].id) { - continue; - } // another video track is enabled, disable it - - - list[i].selected = false; - } -}; -/** - * The current list of {@link VideoTrack} for a video. - * - * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotracklist} - * @extends TrackList - */ - - -var VideoTrackList = /*#__PURE__*/function (_TrackList) { - inheritsLoose(VideoTrackList, _TrackList); - - /** - * Create an instance of this class. - * - * @param {VideoTrack[]} [tracks=[]] - * A list of `VideoTrack` to instantiate the list with. - */ - function VideoTrackList(tracks) { - var _this; - - if (tracks === void 0) { - tracks = []; - } - - // make sure only 1 track is enabled - // sorted from last index to first index - for (var i = tracks.length - 1; i >= 0; i--) { - if (tracks[i].selected) { - disableOthers$1(tracks, tracks[i]); - break; - } - } - - _this = _TrackList.call(this, tracks) || this; - _this.changing_ = false; - /** - * @member {number} VideoTrackList#selectedIndex - * The current index of the selected {@link VideoTrack`}. - */ - - Object.defineProperty(assertThisInitialized(_this), 'selectedIndex', { - get: function get() { - for (var _i = 0; _i < this.length; _i++) { - if (this[_i].selected) { - return _i; - } - } - - return -1; - }, - set: function set() {} - }); - return _this; - } - /** - * Add a {@link VideoTrack} to the `VideoTrackList`. - * - * @param {VideoTrack} track - * The VideoTrack to add to the list - * - * @fires TrackList#addtrack - */ - - - var _proto = VideoTrackList.prototype; - - _proto.addTrack = function addTrack(track) { - var _this2 = this; - - if (track.selected) { - disableOthers$1(this, track); - } - - _TrackList.prototype.addTrack.call(this, track); // native tracks don't have this - - - if (!track.addEventListener) { - return; - } - - track.selectedChange_ = function () { - if (_this2.changing_) { - return; - } - - _this2.changing_ = true; - disableOthers$1(_this2, track); - _this2.changing_ = false; - - _this2.trigger('change'); - }; - /** - * @listens VideoTrack#selectedchange - * @fires TrackList#change - */ - - - track.addEventListener('selectedchange', track.selectedChange_); - }; - - _proto.removeTrack = function removeTrack(rtrack) { - _TrackList.prototype.removeTrack.call(this, rtrack); - - if (rtrack.removeEventListener && rtrack.selectedChange_) { - rtrack.removeEventListener('selectedchange', rtrack.selectedChange_); - rtrack.selectedChange_ = null; - } - }; - - return VideoTrackList; -}(TrackList); - -/** - * The current list of {@link TextTrack} for a media file. - * - * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist} - * @extends TrackList - */ - -var TextTrackList = /*#__PURE__*/function (_TrackList) { - inheritsLoose(TextTrackList, _TrackList); - - function TextTrackList() { - return _TrackList.apply(this, arguments) || this; - } - - var _proto = TextTrackList.prototype; - - /** - * Add a {@link TextTrack} to the `TextTrackList` - * - * @param {TextTrack} track - * The text track to add to the list. - * - * @fires TrackList#addtrack - */ - _proto.addTrack = function addTrack(track) { - var _this = this; - - _TrackList.prototype.addTrack.call(this, track); - - if (!this.queueChange_) { - this.queueChange_ = function () { - return _this.queueTrigger('change'); - }; - } - - if (!this.triggerSelectedlanguagechange) { - this.triggerSelectedlanguagechange_ = function () { - return _this.trigger('selectedlanguagechange'); - }; - } - /** - * @listens TextTrack#modechange - * @fires TrackList#change - */ - - - track.addEventListener('modechange', this.queueChange_); - var nonLanguageTextTrackKind = ['metadata', 'chapters']; - - if (nonLanguageTextTrackKind.indexOf(track.kind) === -1) { - track.addEventListener('modechange', this.triggerSelectedlanguagechange_); - } - }; - - _proto.removeTrack = function removeTrack(rtrack) { - _TrackList.prototype.removeTrack.call(this, rtrack); // manually remove the event handlers we added - - - if (rtrack.removeEventListener) { - if (this.queueChange_) { - rtrack.removeEventListener('modechange', this.queueChange_); - } - - if (this.selectedlanguagechange_) { - rtrack.removeEventListener('modechange', this.triggerSelectedlanguagechange_); - } - } - }; - - return TextTrackList; -}(TrackList); - -/** - * @file html-track-element-list.js - */ - -/** - * The current list of {@link HtmlTrackElement}s. - */ -var HtmlTrackElementList = /*#__PURE__*/function () { - /** - * Create an instance of this class. - * - * @param {HtmlTrackElement[]} [tracks=[]] - * A list of `HtmlTrackElement` to instantiate the list with. - */ - function HtmlTrackElementList(trackElements) { - if (trackElements === void 0) { - trackElements = []; - } - - this.trackElements_ = []; - /** - * @memberof HtmlTrackElementList - * @member {number} length - * The current number of `Track`s in the this Trackist. - * @instance - */ - - Object.defineProperty(this, 'length', { - get: function get() { - return this.trackElements_.length; - } - }); - - for (var i = 0, length = trackElements.length; i < length; i++) { - this.addTrackElement_(trackElements[i]); - } - } - /** - * Add an {@link HtmlTrackElement} to the `HtmlTrackElementList` - * - * @param {HtmlTrackElement} trackElement - * The track element to add to the list. - * - * @private - */ - - - var _proto = HtmlTrackElementList.prototype; - - _proto.addTrackElement_ = function addTrackElement_(trackElement) { - var index = this.trackElements_.length; - - if (!('' + index in this)) { - Object.defineProperty(this, index, { - get: function get() { - return this.trackElements_[index]; - } - }); - } // Do not add duplicate elements - - - if (this.trackElements_.indexOf(trackElement) === -1) { - this.trackElements_.push(trackElement); - } - } - /** - * Get an {@link HtmlTrackElement} from the `HtmlTrackElementList` given an - * {@link TextTrack}. - * - * @param {TextTrack} track - * The track associated with a track element. - * - * @return {HtmlTrackElement|undefined} - * The track element that was found or undefined. - * - * @private - */ - ; - - _proto.getTrackElementByTrack_ = function getTrackElementByTrack_(track) { - var trackElement_; - - for (var i = 0, length = this.trackElements_.length; i < length; i++) { - if (track === this.trackElements_[i].track) { - trackElement_ = this.trackElements_[i]; - break; - } - } - - return trackElement_; - } - /** - * Remove a {@link HtmlTrackElement} from the `HtmlTrackElementList` - * - * @param {HtmlTrackElement} trackElement - * The track element to remove from the list. - * - * @private - */ - ; - - _proto.removeTrackElement_ = function removeTrackElement_(trackElement) { - for (var i = 0, length = this.trackElements_.length; i < length; i++) { - if (trackElement === this.trackElements_[i]) { - if (this.trackElements_[i].track && typeof this.trackElements_[i].track.off === 'function') { - this.trackElements_[i].track.off(); - } - - if (typeof this.trackElements_[i].off === 'function') { - this.trackElements_[i].off(); - } - - this.trackElements_.splice(i, 1); - break; - } - } - }; - - return HtmlTrackElementList; -}(); - -/** - * @file text-track-cue-list.js - */ - -/** - * @typedef {Object} TextTrackCueList~TextTrackCue - * - * @property {string} id - * The unique id for this text track cue - * - * @property {number} startTime - * The start time for this text track cue - * - * @property {number} endTime - * The end time for this text track cue - * - * @property {boolean} pauseOnExit - * Pause when the end time is reached if true. - * - * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcue} - */ - -/** - * A List of TextTrackCues. - * - * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist} - */ -var TextTrackCueList = /*#__PURE__*/function () { - /** - * Create an instance of this class.. - * - * @param {Array} cues - * A list of cues to be initialized with - */ - function TextTrackCueList(cues) { - TextTrackCueList.prototype.setCues_.call(this, cues); - /** - * @memberof TextTrackCueList - * @member {number} length - * The current number of `TextTrackCue`s in the TextTrackCueList. - * @instance - */ - - Object.defineProperty(this, 'length', { - get: function get() { - return this.length_; - } - }); - } - /** - * A setter for cues in this list. Creates getters - * an an index for the cues. - * - * @param {Array} cues - * An array of cues to set - * - * @private - */ - - - var _proto = TextTrackCueList.prototype; - - _proto.setCues_ = function setCues_(cues) { - var oldLength = this.length || 0; - var i = 0; - var l = cues.length; - this.cues_ = cues; - this.length_ = cues.length; - - var defineProp = function defineProp(index) { - if (!('' + index in this)) { - Object.defineProperty(this, '' + index, { - get: function get() { - return this.cues_[index]; - } - }); - } - }; - - if (oldLength < l) { - i = oldLength; - - for (; i < l; i++) { - defineProp.call(this, i); - } - } - } - /** - * Get a `TextTrackCue` that is currently in the `TextTrackCueList` by id. - * - * @param {string} id - * The id of the cue that should be searched for. - * - * @return {TextTrackCueList~TextTrackCue|null} - * A single cue or null if none was found. - */ - ; - - _proto.getCueById = function getCueById(id) { - var result = null; - - for (var i = 0, l = this.length; i < l; i++) { - var cue = this[i]; - - if (cue.id === id) { - result = cue; - break; - } - } - - return result; - }; - - return TextTrackCueList; -}(); - -/** - * @file track-kinds.js - */ - -/** - * All possible `VideoTrackKind`s - * - * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-videotrack-kind - * @typedef VideoTrack~Kind - * @enum - */ -var VideoTrackKind = { - alternative: 'alternative', - captions: 'captions', - main: 'main', - sign: 'sign', - subtitles: 'subtitles', - commentary: 'commentary' -}; -/** - * All possible `AudioTrackKind`s - * - * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-audiotrack-kind - * @typedef AudioTrack~Kind - * @enum - */ - -var AudioTrackKind = { - 'alternative': 'alternative', - 'descriptions': 'descriptions', - 'main': 'main', - 'main-desc': 'main-desc', - 'translation': 'translation', - 'commentary': 'commentary' -}; -/** - * All possible `TextTrackKind`s - * - * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-texttrack-kind - * @typedef TextTrack~Kind - * @enum - */ - -var TextTrackKind = { - subtitles: 'subtitles', - captions: 'captions', - descriptions: 'descriptions', - chapters: 'chapters', - metadata: 'metadata' -}; -/** - * All possible `TextTrackMode`s - * - * @see https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode - * @typedef TextTrack~Mode - * @enum - */ - -var TextTrackMode = { - disabled: 'disabled', - hidden: 'hidden', - showing: 'showing' -}; - -/** - * A Track class that contains all of the common functionality for {@link AudioTrack}, - * {@link VideoTrack}, and {@link TextTrack}. - * - * > Note: This class should not be used directly - * - * @see {@link https://html.spec.whatwg.org/multipage/embedded-content.html} - * @extends EventTarget - * @abstract - */ - -var Track = /*#__PURE__*/function (_EventTarget) { - inheritsLoose(Track, _EventTarget); - - /** - * Create an instance of this class. - * - * @param {Object} [options={}] - * Object of option names and values - * - * @param {string} [options.kind=''] - * A valid kind for the track type you are creating. - * - * @param {string} [options.id='vjs_track_' + Guid.newGUID()] - * A unique id for this AudioTrack. - * - * @param {string} [options.label=''] - * The menu label for this track. - * - * @param {string} [options.language=''] - * A valid two character language code. - * - * @abstract - */ - function Track(options) { - var _this; - - if (options === void 0) { - options = {}; - } - - _this = _EventTarget.call(this) || this; - var trackProps = { - id: options.id || 'vjs_track_' + newGUID(), - kind: options.kind || '', - label: options.label || '', - language: options.language || '' - }; - /** - * @memberof Track - * @member {string} id - * The id of this track. Cannot be changed after creation. - * @instance - * - * @readonly - */ - - /** - * @memberof Track - * @member {string} kind - * The kind of track that this is. Cannot be changed after creation. - * @instance - * - * @readonly - */ - - /** - * @memberof Track - * @member {string} label - * The label of this track. Cannot be changed after creation. - * @instance - * - * @readonly - */ - - /** - * @memberof Track - * @member {string} language - * The two letter language code for this track. Cannot be changed after - * creation. - * @instance - * - * @readonly - */ - - var _loop = function _loop(key) { - Object.defineProperty(assertThisInitialized(_this), key, { - get: function get() { - return trackProps[key]; - }, - set: function set() {} - }); - }; - - for (var key in trackProps) { - _loop(key); - } - - return _this; - } - - return Track; -}(EventTarget); - -/** - * @file url.js - * @module url - */ -/** - * @typedef {Object} url:URLObject - * - * @property {string} protocol - * The protocol of the url that was parsed. - * - * @property {string} hostname - * The hostname of the url that was parsed. - * - * @property {string} port - * The port of the url that was parsed. - * - * @property {string} pathname - * The pathname of the url that was parsed. - * - * @property {string} search - * The search query of the url that was parsed. - * - * @property {string} hash - * The hash of the url that was parsed. - * - * @property {string} host - * The host of the url that was parsed. - */ - -/** - * Resolve and parse the elements of a URL. - * - * @function - * @param {String} url - * The url to parse - * - * @return {url:URLObject} - * An object of url details - */ - -var parseUrl = function parseUrl(url) { - var props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host']; // add the url to an anchor and let the browser parse the URL - - var a = document_1.createElement('a'); - a.href = url; // IE8 (and 9?) Fix - // ie8 doesn't parse the URL correctly until the anchor is actually - // added to the body, and an innerHTML is needed to trigger the parsing - - var addToBody = a.host === '' && a.protocol !== 'file:'; - var div; - - if (addToBody) { - div = document_1.createElement('div'); - div.innerHTML = ""; - a = div.firstChild; // prevent the div from affecting layout - - div.setAttribute('style', 'display:none; position:absolute;'); - document_1.body.appendChild(div); - } // Copy the specific URL properties to a new object - // This is also needed for IE8 because the anchor loses its - // properties when it's removed from the dom - - - var details = {}; - - for (var i = 0; i < props.length; i++) { - details[props[i]] = a[props[i]]; - } // IE9 adds the port to the host property unlike everyone else. If - // a port identifier is added for standard ports, strip it. - - - if (details.protocol === 'http:') { - details.host = details.host.replace(/:80$/, ''); - } - - if (details.protocol === 'https:') { - details.host = details.host.replace(/:443$/, ''); - } - - if (!details.protocol) { - details.protocol = window_1$1.location.protocol; - } - - if (addToBody) { - document_1.body.removeChild(div); - } - - return details; -}; -/** - * Get absolute version of relative URL. Used to tell Flash the correct URL. - * - * @function - * @param {string} url - * URL to make absolute - * - * @return {string} - * Absolute URL - * - * @see http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue - */ - -var getAbsoluteURL = function getAbsoluteURL(url) { - // Check if absolute URL - if (!url.match(/^https?:\/\//)) { - // Convert to absolute URL. Flash hosted off-site needs an absolute URL. - var div = document_1.createElement('div'); - div.innerHTML = "x"; - url = div.firstChild.href; - } - - return url; -}; -/** - * Returns the extension of the passed file name. It will return an empty string - * if passed an invalid path. - * - * @function - * @param {string} path - * The fileName path like '/path/to/file.mp4' - * - * @return {string} - * The extension in lower case or an empty string if no - * extension could be found. - */ - -var getFileExtension = function getFileExtension(path) { - if (typeof path === 'string') { - var splitPathRe = /^(\/?)([\s\S]*?)((?:\.{1,2}|[^\/]+?)(\.([^\.\/\?]+)))(?:[\/]*|[\?].*)$/; - var pathParts = splitPathRe.exec(path); - - if (pathParts) { - return pathParts.pop().toLowerCase(); - } - } - - return ''; -}; -/** - * Returns whether the url passed is a cross domain request or not. - * - * @function - * @param {string} url - * The url to check. - * - * @param {Object} [winLoc] - * the domain to check the url against, defaults to window.location - * - * @param {string} [winLoc.protocol] - * The window location protocol defaults to window.location.protocol - * - * @param {string} [winLoc.host] - * The window location host defaults to window.location.host - * - * @return {boolean} - * Whether it is a cross domain request or not. - */ - -var isCrossOrigin = function isCrossOrigin(url, winLoc) { - if (winLoc === void 0) { - winLoc = window_1$1.location; - } - - var urlInfo = parseUrl(url); // IE8 protocol relative urls will return ':' for protocol - - var srcProtocol = urlInfo.protocol === ':' ? winLoc.protocol : urlInfo.protocol; // Check if url is for another domain/origin - // IE8 doesn't know location.origin, so we won't rely on it here - - var crossOrigin = srcProtocol + urlInfo.host !== winLoc.protocol + winLoc.host; - return crossOrigin; -}; - -var Url = /*#__PURE__*/Object.freeze({ - __proto__: null, - parseUrl: parseUrl, - getAbsoluteURL: getAbsoluteURL, - getFileExtension: getFileExtension, - isCrossOrigin: isCrossOrigin -}); - -/** - * Takes a webvtt file contents and parses it into cues - * - * @param {string} srcContent - * webVTT file contents - * - * @param {TextTrack} track - * TextTrack to add cues to. Cues come from the srcContent. - * - * @private - */ - -var parseCues = function parseCues(srcContent, track) { - var parser = new window_1$1.WebVTT.Parser(window_1$1, window_1$1.vttjs, window_1$1.WebVTT.StringDecoder()); - var errors = []; - - parser.oncue = function (cue) { - track.addCue(cue); - }; - - parser.onparsingerror = function (error) { - errors.push(error); - }; - - parser.onflush = function () { - track.trigger({ - type: 'loadeddata', - target: track - }); - }; - - parser.parse(srcContent); - - if (errors.length > 0) { - if (window_1$1.console && window_1$1.console.groupCollapsed) { - window_1$1.console.groupCollapsed("Text Track parsing errors for " + track.src); - } - - errors.forEach(function (error) { - return log.error(error); - }); - - if (window_1$1.console && window_1$1.console.groupEnd) { - window_1$1.console.groupEnd(); - } - } - - parser.flush(); -}; -/** - * Load a `TextTrack` from a specified url. - * - * @param {string} src - * Url to load track from. - * - * @param {TextTrack} track - * Track to add cues to. Comes from the content at the end of `url`. - * - * @private - */ - - -var loadTrack = function loadTrack(src, track) { - var opts = { - uri: src - }; - var crossOrigin = isCrossOrigin(src); - - if (crossOrigin) { - opts.cors = crossOrigin; - } - - var withCredentials = track.tech_.crossOrigin() === 'use-credentials'; - - if (withCredentials) { - opts.withCredentials = withCredentials; - } - - xhr(opts, bind(this, function (err, response, responseBody) { - if (err) { - return log.error(err, response); - } - - track.loaded_ = true; // Make sure that vttjs has loaded, otherwise, wait till it finished loading - // NOTE: this is only used for the alt/video.novtt.js build - - if (typeof window_1$1.WebVTT !== 'function') { - if (track.tech_) { - // to prevent use before define eslint error, we define loadHandler - // as a let here - track.tech_.any(['vttjsloaded', 'vttjserror'], function (event) { - if (event.type === 'vttjserror') { - log.error("vttjs failed to load, stopping trying to process " + track.src); - return; - } - - return parseCues(responseBody, track); - }); - } - } else { - parseCues(responseBody, track); - } - })); -}; -/** - * A representation of a single `TextTrack`. - * - * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack} - * @extends Track - */ - - -var TextTrack = /*#__PURE__*/function (_Track) { - inheritsLoose(TextTrack, _Track); - - /** - * Create an instance of this class. - * - * @param {Object} options={} - * Object of option names and values - * - * @param {Tech} options.tech - * A reference to the tech that owns this TextTrack. - * - * @param {TextTrack~Kind} [options.kind='subtitles'] - * A valid text track kind. - * - * @param {TextTrack~Mode} [options.mode='disabled'] - * A valid text track mode. - * - * @param {string} [options.id='vjs_track_' + Guid.newGUID()] - * A unique id for this TextTrack. - * - * @param {string} [options.label=''] - * The menu label for this track. - * - * @param {string} [options.language=''] - * A valid two character language code. - * - * @param {string} [options.srclang=''] - * A valid two character language code. An alternative, but deprioritized - * version of `options.language` - * - * @param {string} [options.src] - * A url to TextTrack cues. - * - * @param {boolean} [options.default] - * If this track should default to on or off. - */ - function TextTrack(options) { - var _this; - - if (options === void 0) { - options = {}; - } - - if (!options.tech) { - throw new Error('A tech was not provided.'); - } - - var settings = mergeOptions(options, { - kind: TextTrackKind[options.kind] || 'subtitles', - language: options.language || options.srclang || '' - }); - var mode = TextTrackMode[settings.mode] || 'disabled'; - var default_ = settings["default"]; - - if (settings.kind === 'metadata' || settings.kind === 'chapters') { - mode = 'hidden'; - } - - _this = _Track.call(this, settings) || this; - _this.tech_ = settings.tech; - _this.cues_ = []; - _this.activeCues_ = []; - _this.preload_ = _this.tech_.preloadTextTracks !== false; - var cues = new TextTrackCueList(_this.cues_); - var activeCues = new TextTrackCueList(_this.activeCues_); - var changed = false; - var timeupdateHandler = bind(assertThisInitialized(_this), function () { - // Accessing this.activeCues for the side-effects of updating itself - // due to its nature as a getter function. Do not remove or cues will - // stop updating! - // Use the setter to prevent deletion from uglify (pure_getters rule) - this.activeCues = this.activeCues; - - if (changed) { - this.trigger('cuechange'); - changed = false; - } - }); - - if (mode !== 'disabled') { - _this.tech_.ready(function () { - _this.tech_.on('timeupdate', timeupdateHandler); - }, true); - } - - Object.defineProperties(assertThisInitialized(_this), { - /** - * @memberof TextTrack - * @member {boolean} default - * If this track was set to be on or off by default. Cannot be changed after - * creation. - * @instance - * - * @readonly - */ - "default": { - get: function get() { - return default_; - }, - set: function set() {} - }, - - /** - * @memberof TextTrack - * @member {string} mode - * Set the mode of this TextTrack to a valid {@link TextTrack~Mode}. Will - * not be set if setting to an invalid mode. - * @instance - * - * @fires TextTrack#modechange - */ - mode: { - get: function get() { - return mode; - }, - set: function set(newMode) { - var _this2 = this; - - if (!TextTrackMode[newMode]) { - return; - } - - mode = newMode; - - if (!this.preload_ && mode !== 'disabled' && this.cues.length === 0) { - // On-demand load. - loadTrack(this.src, this); - } - - if (mode !== 'disabled') { - this.tech_.ready(function () { - _this2.tech_.on('timeupdate', timeupdateHandler); - }, true); - } else { - this.tech_.off('timeupdate', timeupdateHandler); - } - /** - * An event that fires when mode changes on this track. This allows - * the TextTrackList that holds this track to act accordingly. - * - * > Note: This is not part of the spec! - * - * @event TextTrack#modechange - * @type {EventTarget~Event} - */ - - - this.trigger('modechange'); - } - }, - - /** - * @memberof TextTrack - * @member {TextTrackCueList} cues - * The text track cue list for this TextTrack. - * @instance - */ - cues: { - get: function get() { - if (!this.loaded_) { - return null; - } - - return cues; - }, - set: function set() {} - }, - - /** - * @memberof TextTrack - * @member {TextTrackCueList} activeCues - * The list text track cues that are currently active for this TextTrack. - * @instance - */ - activeCues: { - get: function get() { - if (!this.loaded_) { - return null; - } // nothing to do - - - if (this.cues.length === 0) { - return activeCues; - } - - var ct = this.tech_.currentTime(); - var active = []; - - for (var i = 0, l = this.cues.length; i < l; i++) { - var cue = this.cues[i]; - - if (cue.startTime <= ct && cue.endTime >= ct) { - active.push(cue); - } else if (cue.startTime === cue.endTime && cue.startTime <= ct && cue.startTime + 0.5 >= ct) { - active.push(cue); - } - } - - changed = false; - - if (active.length !== this.activeCues_.length) { - changed = true; - } else { - for (var _i = 0; _i < active.length; _i++) { - if (this.activeCues_.indexOf(active[_i]) === -1) { - changed = true; - } - } - } - - this.activeCues_ = active; - activeCues.setCues_(this.activeCues_); - return activeCues; - }, - // /!\ Keep this setter empty (see the timeupdate handler above) - set: function set() {} - } - }); - - if (settings.src) { - _this.src = settings.src; - - if (!_this.preload_) { - // Tracks will load on-demand. - // Act like we're loaded for other purposes. - _this.loaded_ = true; - } - - if (_this.preload_ || default_ || settings.kind !== 'subtitles' && settings.kind !== 'captions') { - loadTrack(_this.src, assertThisInitialized(_this)); - } - } else { - _this.loaded_ = true; - } - - return _this; - } - /** - * Add a cue to the internal list of cues. - * - * @param {TextTrack~Cue} cue - * The cue to add to our internal list - */ - - - var _proto = TextTrack.prototype; - - _proto.addCue = function addCue(originalCue) { - var cue = originalCue; - - if (window_1$1.vttjs && !(originalCue instanceof window_1$1.vttjs.VTTCue)) { - cue = new window_1$1.vttjs.VTTCue(originalCue.startTime, originalCue.endTime, originalCue.text); - - for (var prop in originalCue) { - if (!(prop in cue)) { - cue[prop] = originalCue[prop]; - } - } // make sure that `id` is copied over - - - cue.id = originalCue.id; - cue.originalCue_ = originalCue; - } - - var tracks = this.tech_.textTracks(); - - for (var i = 0; i < tracks.length; i++) { - if (tracks[i] !== this) { - tracks[i].removeCue(cue); - } - } - - this.cues_.push(cue); - this.cues.setCues_(this.cues_); - } - /** - * Remove a cue from our internal list - * - * @param {TextTrack~Cue} removeCue - * The cue to remove from our internal list - */ - ; - - _proto.removeCue = function removeCue(_removeCue) { - var i = this.cues_.length; - - while (i--) { - var cue = this.cues_[i]; - - if (cue === _removeCue || cue.originalCue_ && cue.originalCue_ === _removeCue) { - this.cues_.splice(i, 1); - this.cues.setCues_(this.cues_); - break; - } - } - }; - - return TextTrack; -}(Track); -/** - * cuechange - One or more cues in the track have become active or stopped being active. - */ - - -TextTrack.prototype.allowedEvents_ = { - cuechange: 'cuechange' -}; - -/** - * A representation of a single `AudioTrack`. If it is part of an {@link AudioTrackList} - * only one `AudioTrack` in the list will be enabled at a time. - * - * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotrack} - * @extends Track - */ - -var AudioTrack = /*#__PURE__*/function (_Track) { - inheritsLoose(AudioTrack, _Track); - - /** - * Create an instance of this class. - * - * @param {Object} [options={}] - * Object of option names and values - * - * @param {AudioTrack~Kind} [options.kind=''] - * A valid audio track kind - * - * @param {string} [options.id='vjs_track_' + Guid.newGUID()] - * A unique id for this AudioTrack. - * - * @param {string} [options.label=''] - * The menu label for this track. - * - * @param {string} [options.language=''] - * A valid two character language code. - * - * @param {boolean} [options.enabled] - * If this track is the one that is currently playing. If this track is part of - * an {@link AudioTrackList}, only one {@link AudioTrack} will be enabled. - */ - function AudioTrack(options) { - var _this; - - if (options === void 0) { - options = {}; - } - - var settings = mergeOptions(options, { - kind: AudioTrackKind[options.kind] || '' - }); - _this = _Track.call(this, settings) || this; - var enabled = false; - /** - * @memberof AudioTrack - * @member {boolean} enabled - * If this `AudioTrack` is enabled or not. When setting this will - * fire {@link AudioTrack#enabledchange} if the state of enabled is changed. - * @instance - * - * @fires VideoTrack#selectedchange - */ - - Object.defineProperty(assertThisInitialized(_this), 'enabled', { - get: function get() { - return enabled; - }, - set: function set(newEnabled) { - // an invalid or unchanged value - if (typeof newEnabled !== 'boolean' || newEnabled === enabled) { - return; - } - - enabled = newEnabled; - /** - * An event that fires when enabled changes on this track. This allows - * the AudioTrackList that holds this track to act accordingly. - * - * > Note: This is not part of the spec! Native tracks will do - * this internally without an event. - * - * @event AudioTrack#enabledchange - * @type {EventTarget~Event} - */ - - this.trigger('enabledchange'); - } - }); // if the user sets this track to selected then - // set selected to that true value otherwise - // we keep it false - - if (settings.enabled) { - _this.enabled = settings.enabled; - } - - _this.loaded_ = true; - return _this; - } - - return AudioTrack; -}(Track); - -/** - * A representation of a single `VideoTrack`. - * - * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotrack} - * @extends Track - */ - -var VideoTrack = /*#__PURE__*/function (_Track) { - inheritsLoose(VideoTrack, _Track); - - /** - * Create an instance of this class. - * - * @param {Object} [options={}] - * Object of option names and values - * - * @param {string} [options.kind=''] - * A valid {@link VideoTrack~Kind} - * - * @param {string} [options.id='vjs_track_' + Guid.newGUID()] - * A unique id for this AudioTrack. - * - * @param {string} [options.label=''] - * The menu label for this track. - * - * @param {string} [options.language=''] - * A valid two character language code. - * - * @param {boolean} [options.selected] - * If this track is the one that is currently playing. - */ - function VideoTrack(options) { - var _this; - - if (options === void 0) { - options = {}; - } - - var settings = mergeOptions(options, { - kind: VideoTrackKind[options.kind] || '' - }); - _this = _Track.call(this, settings) || this; - var selected = false; - /** - * @memberof VideoTrack - * @member {boolean} selected - * If this `VideoTrack` is selected or not. When setting this will - * fire {@link VideoTrack#selectedchange} if the state of selected changed. - * @instance - * - * @fires VideoTrack#selectedchange - */ - - Object.defineProperty(assertThisInitialized(_this), 'selected', { - get: function get() { - return selected; - }, - set: function set(newSelected) { - // an invalid or unchanged value - if (typeof newSelected !== 'boolean' || newSelected === selected) { - return; - } - - selected = newSelected; - /** - * An event that fires when selected changes on this track. This allows - * the VideoTrackList that holds this track to act accordingly. - * - * > Note: This is not part of the spec! Native tracks will do - * this internally without an event. - * - * @event VideoTrack#selectedchange - * @type {EventTarget~Event} - */ - - this.trigger('selectedchange'); - } - }); // if the user sets this track to selected then - // set selected to that true value otherwise - // we keep it false - - if (settings.selected) { - _this.selected = settings.selected; - } - - return _this; - } - - return VideoTrack; -}(Track); - -/** - * @memberof HTMLTrackElement - * @typedef {HTMLTrackElement~ReadyState} - * @enum {number} - */ - -var NONE = 0; -var LOADING = 1; -var LOADED = 2; -var ERROR = 3; -/** - * A single track represented in the DOM. - * - * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#htmltrackelement} - * @extends EventTarget - */ - -var HTMLTrackElement = /*#__PURE__*/function (_EventTarget) { - inheritsLoose(HTMLTrackElement, _EventTarget); - - /** - * Create an instance of this class. - * - * @param {Object} options={} - * Object of option names and values - * - * @param {Tech} options.tech - * A reference to the tech that owns this HTMLTrackElement. - * - * @param {TextTrack~Kind} [options.kind='subtitles'] - * A valid text track kind. - * - * @param {TextTrack~Mode} [options.mode='disabled'] - * A valid text track mode. - * - * @param {string} [options.id='vjs_track_' + Guid.newGUID()] - * A unique id for this TextTrack. - * - * @param {string} [options.label=''] - * The menu label for this track. - * - * @param {string} [options.language=''] - * A valid two character language code. - * - * @param {string} [options.srclang=''] - * A valid two character language code. An alternative, but deprioritized - * vesion of `options.language` - * - * @param {string} [options.src] - * A url to TextTrack cues. - * - * @param {boolean} [options.default] - * If this track should default to on or off. - */ - function HTMLTrackElement(options) { - var _this; - - if (options === void 0) { - options = {}; - } - - _this = _EventTarget.call(this) || this; - var readyState; - var track = new TextTrack(options); - _this.kind = track.kind; - _this.src = track.src; - _this.srclang = track.language; - _this.label = track.label; - _this["default"] = track["default"]; - Object.defineProperties(assertThisInitialized(_this), { - /** - * @memberof HTMLTrackElement - * @member {HTMLTrackElement~ReadyState} readyState - * The current ready state of the track element. - * @instance - */ - readyState: { - get: function get() { - return readyState; - } - }, - - /** - * @memberof HTMLTrackElement - * @member {TextTrack} track - * The underlying TextTrack object. - * @instance - * - */ - track: { - get: function get() { - return track; - } - } - }); - readyState = NONE; - /** - * @listens TextTrack#loadeddata - * @fires HTMLTrackElement#load - */ - - track.addEventListener('loadeddata', function () { - readyState = LOADED; - - _this.trigger({ - type: 'load', - target: assertThisInitialized(_this) - }); - }); - return _this; - } - - return HTMLTrackElement; -}(EventTarget); - -HTMLTrackElement.prototype.allowedEvents_ = { - load: 'load' -}; -HTMLTrackElement.NONE = NONE; -HTMLTrackElement.LOADING = LOADING; -HTMLTrackElement.LOADED = LOADED; -HTMLTrackElement.ERROR = ERROR; - -/* - * This file contains all track properties that are used in - * player.js, tech.js, html5.js and possibly other techs in the future. - */ - -var NORMAL = { - audio: { - ListClass: AudioTrackList, - TrackClass: AudioTrack, - capitalName: 'Audio' - }, - video: { - ListClass: VideoTrackList, - TrackClass: VideoTrack, - capitalName: 'Video' - }, - text: { - ListClass: TextTrackList, - TrackClass: TextTrack, - capitalName: 'Text' - } -}; -Object.keys(NORMAL).forEach(function (type) { - NORMAL[type].getterName = type + "Tracks"; - NORMAL[type].privateName = type + "Tracks_"; -}); -var REMOTE = { - remoteText: { - ListClass: TextTrackList, - TrackClass: TextTrack, - capitalName: 'RemoteText', - getterName: 'remoteTextTracks', - privateName: 'remoteTextTracks_' - }, - remoteTextEl: { - ListClass: HtmlTrackElementList, - TrackClass: HTMLTrackElement, - capitalName: 'RemoteTextTrackEls', - getterName: 'remoteTextTrackEls', - privateName: 'remoteTextTrackEls_' - } -}; - -var ALL = _extends_1({}, NORMAL, REMOTE); - -REMOTE.names = Object.keys(REMOTE); -NORMAL.names = Object.keys(NORMAL); -ALL.names = [].concat(REMOTE.names).concat(NORMAL.names); - -/** - * An Object containing a structure like: `{src: 'url', type: 'mimetype'}` or string - * that just contains the src url alone. - * * `var SourceObject = {src: 'http://ex.com/video.mp4', type: 'video/mp4'};` - * `var SourceString = 'http://example.com/some-video.mp4';` - * - * @typedef {Object|string} Tech~SourceObject - * - * @property {string} src - * The url to the source - * - * @property {string} type - * The mime type of the source - */ - -/** - * A function used by {@link Tech} to create a new {@link TextTrack}. - * - * @private - * - * @param {Tech} self - * An instance of the Tech class. - * - * @param {string} kind - * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata) - * - * @param {string} [label] - * Label to identify the text track - * - * @param {string} [language] - * Two letter language abbreviation - * - * @param {Object} [options={}] - * An object with additional text track options - * - * @return {TextTrack} - * The text track that was created. - */ - -function createTrackHelper(self, kind, label, language, options) { - if (options === void 0) { - options = {}; - } - - var tracks = self.textTracks(); - options.kind = kind; - - if (label) { - options.label = label; - } - - if (language) { - options.language = language; - } - - options.tech = self; - var track = new ALL.text.TrackClass(options); - tracks.addTrack(track); - return track; -} -/** - * This is the base class for media playback technology controllers, such as - * {@link Flash} and {@link HTML5} - * - * @extends Component - */ - - -var Tech = /*#__PURE__*/function (_Component) { - inheritsLoose(Tech, _Component); - - /** - * Create an instance of this Tech. - * - * @param {Object} [options] - * The key/value store of player options. - * - * @param {Component~ReadyCallback} ready - * Callback function to call when the `HTML5` Tech is ready. - */ - function Tech(options, ready) { - var _this; - - if (options === void 0) { - options = {}; - } - - if (ready === void 0) { - ready = function ready() {}; - } - - // we don't want the tech to report user activity automatically. - // This is done manually in addControlsListeners - options.reportTouchActivity = false; - _this = _Component.call(this, null, options, ready) || this; // keep track of whether the current source has played at all to - // implement a very limited played() - - _this.hasStarted_ = false; - - _this.on('playing', function () { - this.hasStarted_ = true; - }); - - _this.on('loadstart', function () { - this.hasStarted_ = false; - }); - - ALL.names.forEach(function (name) { - var props = ALL[name]; - - if (options && options[props.getterName]) { - _this[props.privateName] = options[props.getterName]; - } - }); // Manually track progress in cases where the browser/flash player doesn't report it. - - if (!_this.featuresProgressEvents) { - _this.manualProgressOn(); - } // Manually track timeupdates in cases where the browser/flash player doesn't report it. - - - if (!_this.featuresTimeupdateEvents) { - _this.manualTimeUpdatesOn(); - } - - ['Text', 'Audio', 'Video'].forEach(function (track) { - if (options["native" + track + "Tracks"] === false) { - _this["featuresNative" + track + "Tracks"] = false; - } - }); - - if (options.nativeCaptions === false || options.nativeTextTracks === false) { - _this.featuresNativeTextTracks = false; - } else if (options.nativeCaptions === true || options.nativeTextTracks === true) { - _this.featuresNativeTextTracks = true; - } - - if (!_this.featuresNativeTextTracks) { - _this.emulateTextTracks(); - } - - _this.preloadTextTracks = options.preloadTextTracks !== false; - _this.autoRemoteTextTracks_ = new ALL.text.ListClass(); - - _this.initTrackListeners(); // Turn on component tap events only if not using native controls - - - if (!options.nativeControlsForTouch) { - _this.emitTapEvents(); - } - - if (_this.constructor) { - _this.name_ = _this.constructor.name || 'Unknown Tech'; - } - - return _this; - } - /** - * A special function to trigger source set in a way that will allow player - * to re-trigger if the player or tech are not ready yet. - * - * @fires Tech#sourceset - * @param {string} src The source string at the time of the source changing. - */ - - - var _proto = Tech.prototype; - - _proto.triggerSourceset = function triggerSourceset(src) { - var _this2 = this; - - if (!this.isReady_) { - // on initial ready we have to trigger source set - // 1ms after ready so that player can watch for it. - this.one('ready', function () { - return _this2.setTimeout(function () { - return _this2.triggerSourceset(src); - }, 1); - }); - } - /** - * Fired when the source is set on the tech causing the media element - * to reload. - * - * @see {@link Player#event:sourceset} - * @event Tech#sourceset - * @type {EventTarget~Event} - */ - - - this.trigger({ - src: src, - type: 'sourceset' - }); - } - /* Fallbacks for unsupported event types - ================================================================================ */ - - /** - * Polyfill the `progress` event for browsers that don't support it natively. - * - * @see {@link Tech#trackProgress} - */ - ; - - _proto.manualProgressOn = function manualProgressOn() { - this.on('durationchange', this.onDurationChange); - this.manualProgress = true; // Trigger progress watching when a source begins loading - - this.one('ready', this.trackProgress); - } - /** - * Turn off the polyfill for `progress` events that was created in - * {@link Tech#manualProgressOn} - */ - ; - - _proto.manualProgressOff = function manualProgressOff() { - this.manualProgress = false; - this.stopTrackingProgress(); - this.off('durationchange', this.onDurationChange); - } - /** - * This is used to trigger a `progress` event when the buffered percent changes. It - * sets an interval function that will be called every 500 milliseconds to check if the - * buffer end percent has changed. - * - * > This function is called by {@link Tech#manualProgressOn} - * - * @param {EventTarget~Event} event - * The `ready` event that caused this to run. - * - * @listens Tech#ready - * @fires Tech#progress - */ - ; - - _proto.trackProgress = function trackProgress(event) { - this.stopTrackingProgress(); - this.progressInterval = this.setInterval(bind(this, function () { - // Don't trigger unless buffered amount is greater than last time - var numBufferedPercent = this.bufferedPercent(); - - if (this.bufferedPercent_ !== numBufferedPercent) { - /** - * See {@link Player#progress} - * - * @event Tech#progress - * @type {EventTarget~Event} - */ - this.trigger('progress'); - } - - this.bufferedPercent_ = numBufferedPercent; - - if (numBufferedPercent === 1) { - this.stopTrackingProgress(); - } - }), 500); - } - /** - * Update our internal duration on a `durationchange` event by calling - * {@link Tech#duration}. - * - * @param {EventTarget~Event} event - * The `durationchange` event that caused this to run. - * - * @listens Tech#durationchange - */ - ; - - _proto.onDurationChange = function onDurationChange(event) { - this.duration_ = this.duration(); - } - /** - * Get and create a `TimeRange` object for buffering. - * - * @return {TimeRange} - * The time range object that was created. - */ - ; - - _proto.buffered = function buffered() { - return createTimeRanges(0, 0); - } - /** - * Get the percentage of the current video that is currently buffered. - * - * @return {number} - * A number from 0 to 1 that represents the decimal percentage of the - * video that is buffered. - * - */ - ; - - _proto.bufferedPercent = function bufferedPercent$1() { - return bufferedPercent(this.buffered(), this.duration_); - } - /** - * Turn off the polyfill for `progress` events that was created in - * {@link Tech#manualProgressOn} - * Stop manually tracking progress events by clearing the interval that was set in - * {@link Tech#trackProgress}. - */ - ; - - _proto.stopTrackingProgress = function stopTrackingProgress() { - this.clearInterval(this.progressInterval); - } - /** - * Polyfill the `timeupdate` event for browsers that don't support it. - * - * @see {@link Tech#trackCurrentTime} - */ - ; - - _proto.manualTimeUpdatesOn = function manualTimeUpdatesOn() { - this.manualTimeUpdates = true; - this.on('play', this.trackCurrentTime); - this.on('pause', this.stopTrackingCurrentTime); - } - /** - * Turn off the polyfill for `timeupdate` events that was created in - * {@link Tech#manualTimeUpdatesOn} - */ - ; - - _proto.manualTimeUpdatesOff = function manualTimeUpdatesOff() { - this.manualTimeUpdates = false; - this.stopTrackingCurrentTime(); - this.off('play', this.trackCurrentTime); - this.off('pause', this.stopTrackingCurrentTime); - } - /** - * Sets up an interval function to track current time and trigger `timeupdate` every - * 250 milliseconds. - * - * @listens Tech#play - * @triggers Tech#timeupdate - */ - ; - - _proto.trackCurrentTime = function trackCurrentTime() { - if (this.currentTimeInterval) { - this.stopTrackingCurrentTime(); - } - - this.currentTimeInterval = this.setInterval(function () { - /** - * Triggered at an interval of 250ms to indicated that time is passing in the video. - * - * @event Tech#timeupdate - * @type {EventTarget~Event} - */ - this.trigger({ - type: 'timeupdate', - target: this, - manuallyTriggered: true - }); // 42 = 24 fps // 250 is what Webkit uses // FF uses 15 - }, 250); - } - /** - * Stop the interval function created in {@link Tech#trackCurrentTime} so that the - * `timeupdate` event is no longer triggered. - * - * @listens {Tech#pause} - */ - ; - - _proto.stopTrackingCurrentTime = function stopTrackingCurrentTime() { - this.clearInterval(this.currentTimeInterval); // #1002 - if the video ends right before the next timeupdate would happen, - // the progress bar won't make it all the way to the end - - this.trigger({ - type: 'timeupdate', - target: this, - manuallyTriggered: true - }); - } - /** - * Turn off all event polyfills, clear the `Tech`s {@link AudioTrackList}, - * {@link VideoTrackList}, and {@link TextTrackList}, and dispose of this Tech. - * - * @fires Component#dispose - */ - ; - - _proto.dispose = function dispose() { - // clear out all tracks because we can't reuse them between techs - this.clearTracks(NORMAL.names); // Turn off any manual progress or timeupdate tracking - - if (this.manualProgress) { - this.manualProgressOff(); - } - - if (this.manualTimeUpdates) { - this.manualTimeUpdatesOff(); - } - - _Component.prototype.dispose.call(this); - } - /** - * Clear out a single `TrackList` or an array of `TrackLists` given their names. - * - * > Note: Techs without source handlers should call this between sources for `video` - * & `audio` tracks. You don't want to use them between tracks! - * - * @param {string[]|string} types - * TrackList names to clear, valid names are `video`, `audio`, and - * `text`. - */ - ; - - _proto.clearTracks = function clearTracks(types) { - var _this3 = this; - - types = [].concat(types); // clear out all tracks because we can't reuse them between techs - - types.forEach(function (type) { - var list = _this3[type + "Tracks"]() || []; - var i = list.length; - - while (i--) { - var track = list[i]; - - if (type === 'text') { - _this3.removeRemoteTextTrack(track); - } - - list.removeTrack(track); - } - }); - } - /** - * Remove any TextTracks added via addRemoteTextTrack that are - * flagged for automatic garbage collection - */ - ; - - _proto.cleanupAutoTextTracks = function cleanupAutoTextTracks() { - var list = this.autoRemoteTextTracks_ || []; - var i = list.length; - - while (i--) { - var track = list[i]; - this.removeRemoteTextTrack(track); - } - } - /** - * Reset the tech, which will removes all sources and reset the internal readyState. - * - * @abstract - */ - ; - - _proto.reset = function reset() {} - /** - * Get the value of `crossOrigin` from the tech. - * - * @abstract - * - * @see {Html5#crossOrigin} - */ - ; - - _proto.crossOrigin = function crossOrigin() {} - /** - * Set the value of `crossOrigin` on the tech. - * - * @abstract - * - * @param {string} crossOrigin the crossOrigin value - * @see {Html5#setCrossOrigin} - */ - ; - - _proto.setCrossOrigin = function setCrossOrigin() {} - /** - * Get or set an error on the Tech. - * - * @param {MediaError} [err] - * Error to set on the Tech - * - * @return {MediaError|null} - * The current error object on the tech, or null if there isn't one. - */ - ; - - _proto.error = function error(err) { - if (err !== undefined) { - this.error_ = new MediaError(err); - this.trigger('error'); - } - - return this.error_; - } - /** - * Returns the `TimeRange`s that have been played through for the current source. - * - * > NOTE: This implementation is incomplete. It does not track the played `TimeRange`. - * It only checks whether the source has played at all or not. - * - * @return {TimeRange} - * - A single time range if this video has played - * - An empty set of ranges if not. - */ - ; - - _proto.played = function played() { - if (this.hasStarted_) { - return createTimeRanges(0, 0); - } - - return createTimeRanges(); - } - /** - * Set whether we are scrubbing or not - * - * @abstract - * - * @see {Html5#setScrubbing} - */ - ; - - _proto.setScrubbing = function setScrubbing() {} - /** - * Causes a manual time update to occur if {@link Tech#manualTimeUpdatesOn} was - * previously called. - * - * @fires Tech#timeupdate - */ - ; - - _proto.setCurrentTime = function setCurrentTime() { - // improve the accuracy of manual timeupdates - if (this.manualTimeUpdates) { - /** - * A manual `timeupdate` event. - * - * @event Tech#timeupdate - * @type {EventTarget~Event} - */ - this.trigger({ - type: 'timeupdate', - target: this, - manuallyTriggered: true - }); - } - } - /** - * Turn on listeners for {@link VideoTrackList}, {@link {AudioTrackList}, and - * {@link TextTrackList} events. - * - * This adds {@link EventTarget~EventListeners} for `addtrack`, and `removetrack`. - * - * @fires Tech#audiotrackchange - * @fires Tech#videotrackchange - * @fires Tech#texttrackchange - */ - ; - - _proto.initTrackListeners = function initTrackListeners() { - var _this4 = this; - - /** - * Triggered when tracks are added or removed on the Tech {@link AudioTrackList} - * - * @event Tech#audiotrackchange - * @type {EventTarget~Event} - */ - - /** - * Triggered when tracks are added or removed on the Tech {@link VideoTrackList} - * - * @event Tech#videotrackchange - * @type {EventTarget~Event} - */ - - /** - * Triggered when tracks are added or removed on the Tech {@link TextTrackList} - * - * @event Tech#texttrackchange - * @type {EventTarget~Event} - */ - NORMAL.names.forEach(function (name) { - var props = NORMAL[name]; - - var trackListChanges = function trackListChanges() { - _this4.trigger(name + "trackchange"); - }; - - var tracks = _this4[props.getterName](); - - tracks.addEventListener('removetrack', trackListChanges); - tracks.addEventListener('addtrack', trackListChanges); - - _this4.on('dispose', function () { - tracks.removeEventListener('removetrack', trackListChanges); - tracks.removeEventListener('addtrack', trackListChanges); - }); - }); - } - /** - * Emulate TextTracks using vtt.js if necessary - * - * @fires Tech#vttjsloaded - * @fires Tech#vttjserror - */ - ; - - _proto.addWebVttScript_ = function addWebVttScript_() { - var _this5 = this; - - if (window_1$1.WebVTT) { - return; - } // Initially, Tech.el_ is a child of a dummy-div wait until the Component system - // signals that the Tech is ready at which point Tech.el_ is part of the DOM - // before inserting the WebVTT script - - - if (document_1.body.contains(this.el())) { - // load via require if available and vtt.js script location was not passed in - // as an option. novtt builds will turn the above require call into an empty object - // which will cause this if check to always fail. - if (!this.options_['vtt.js'] && isPlain(browserIndex) && Object.keys(browserIndex).length > 0) { - this.trigger('vttjsloaded'); - return; - } // load vtt.js via the script location option or the cdn of no location was - // passed in - - - var script = document_1.createElement('script'); - script.src = this.options_['vtt.js'] || 'https://vjs.zencdn.net/vttjs/0.14.1/vtt.min.js'; - - script.onload = function () { - /** - * Fired when vtt.js is loaded. - * - * @event Tech#vttjsloaded - * @type {EventTarget~Event} - */ - _this5.trigger('vttjsloaded'); - }; - - script.onerror = function () { - /** - * Fired when vtt.js was not loaded due to an error - * - * @event Tech#vttjsloaded - * @type {EventTarget~Event} - */ - _this5.trigger('vttjserror'); - }; - - this.on('dispose', function () { - script.onload = null; - script.onerror = null; - }); // but have not loaded yet and we set it to true before the inject so that - // we don't overwrite the injected window.WebVTT if it loads right away - - window_1$1.WebVTT = true; - this.el().parentNode.appendChild(script); - } else { - this.ready(this.addWebVttScript_); - } - } - /** - * Emulate texttracks - * - */ - ; - - _proto.emulateTextTracks = function emulateTextTracks() { - var _this6 = this; - - var tracks = this.textTracks(); - var remoteTracks = this.remoteTextTracks(); - - var handleAddTrack = function handleAddTrack(e) { - return tracks.addTrack(e.track); - }; - - var handleRemoveTrack = function handleRemoveTrack(e) { - return tracks.removeTrack(e.track); - }; - - remoteTracks.on('addtrack', handleAddTrack); - remoteTracks.on('removetrack', handleRemoveTrack); - this.addWebVttScript_(); - - var updateDisplay = function updateDisplay() { - return _this6.trigger('texttrackchange'); - }; - - var textTracksChanges = function textTracksChanges() { - updateDisplay(); - - for (var i = 0; i < tracks.length; i++) { - var track = tracks[i]; - track.removeEventListener('cuechange', updateDisplay); - - if (track.mode === 'showing') { - track.addEventListener('cuechange', updateDisplay); - } - } - }; - - textTracksChanges(); - tracks.addEventListener('change', textTracksChanges); - tracks.addEventListener('addtrack', textTracksChanges); - tracks.addEventListener('removetrack', textTracksChanges); - this.on('dispose', function () { - remoteTracks.off('addtrack', handleAddTrack); - remoteTracks.off('removetrack', handleRemoveTrack); - tracks.removeEventListener('change', textTracksChanges); - tracks.removeEventListener('addtrack', textTracksChanges); - tracks.removeEventListener('removetrack', textTracksChanges); - - for (var i = 0; i < tracks.length; i++) { - var track = tracks[i]; - track.removeEventListener('cuechange', updateDisplay); - } - }); - } - /** - * Create and returns a remote {@link TextTrack} object. - * - * @param {string} kind - * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata) - * - * @param {string} [label] - * Label to identify the text track - * - * @param {string} [language] - * Two letter language abbreviation - * - * @return {TextTrack} - * The TextTrack that gets created. - */ - ; - - _proto.addTextTrack = function addTextTrack(kind, label, language) { - if (!kind) { - throw new Error('TextTrack kind is required but was not provided'); - } - - return createTrackHelper(this, kind, label, language); - } - /** - * Create an emulated TextTrack for use by addRemoteTextTrack - * - * This is intended to be overridden by classes that inherit from - * Tech in order to create native or custom TextTracks. - * - * @param {Object} options - * The object should contain the options to initialize the TextTrack with. - * - * @param {string} [options.kind] - * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata). - * - * @param {string} [options.label]. - * Label to identify the text track - * - * @param {string} [options.language] - * Two letter language abbreviation. - * - * @return {HTMLTrackElement} - * The track element that gets created. - */ - ; - - _proto.createRemoteTextTrack = function createRemoteTextTrack(options) { - var track = mergeOptions(options, { - tech: this - }); - return new REMOTE.remoteTextEl.TrackClass(track); - } - /** - * Creates a remote text track object and returns an html track element. - * - * > Note: This can be an emulated {@link HTMLTrackElement} or a native one. - * - * @param {Object} options - * See {@link Tech#createRemoteTextTrack} for more detailed properties. - * - * @param {boolean} [manualCleanup=true] - * - When false: the TextTrack will be automatically removed from the video - * element whenever the source changes - * - When True: The TextTrack will have to be cleaned up manually - * - * @return {HTMLTrackElement} - * An Html Track Element. - * - * @deprecated The default functionality for this function will be equivalent - * to "manualCleanup=false" in the future. The manualCleanup parameter will - * also be removed. - */ - ; - - _proto.addRemoteTextTrack = function addRemoteTextTrack(options, manualCleanup) { - var _this7 = this; - - if (options === void 0) { - options = {}; - } - - var htmlTrackElement = this.createRemoteTextTrack(options); - - if (manualCleanup !== true && manualCleanup !== false) { - // deprecation warning - log.warn('Calling addRemoteTextTrack without explicitly setting the "manualCleanup" parameter to `true` is deprecated and default to `false` in future version of video.js'); - manualCleanup = true; - } // store HTMLTrackElement and TextTrack to remote list - - - this.remoteTextTrackEls().addTrackElement_(htmlTrackElement); - this.remoteTextTracks().addTrack(htmlTrackElement.track); - - if (manualCleanup !== true) { - // create the TextTrackList if it doesn't exist - this.ready(function () { - return _this7.autoRemoteTextTracks_.addTrack(htmlTrackElement.track); - }); - } - - return htmlTrackElement; - } - /** - * Remove a remote text track from the remote `TextTrackList`. - * - * @param {TextTrack} track - * `TextTrack` to remove from the `TextTrackList` - */ - ; - - _proto.removeRemoteTextTrack = function removeRemoteTextTrack(track) { - var trackElement = this.remoteTextTrackEls().getTrackElementByTrack_(track); // remove HTMLTrackElement and TextTrack from remote list - - this.remoteTextTrackEls().removeTrackElement_(trackElement); - this.remoteTextTracks().removeTrack(track); - this.autoRemoteTextTracks_.removeTrack(track); - } - /** - * Gets available media playback quality metrics as specified by the W3C's Media - * Playback Quality API. - * - * @see [Spec]{@link https://wicg.github.io/media-playback-quality} - * - * @return {Object} - * An object with supported media playback quality metrics - * - * @abstract - */ - ; - - _proto.getVideoPlaybackQuality = function getVideoPlaybackQuality() { - return {}; - } - /** - * Attempt to create a floating video window always on top of other windows - * so that users may continue consuming media while they interact with other - * content sites, or applications on their device. - * - * @see [Spec]{@link https://wicg.github.io/picture-in-picture} - * - * @return {Promise|undefined} - * A promise with a Picture-in-Picture window if the browser supports - * Promises (or one was passed in as an option). It returns undefined - * otherwise. - * - * @abstract - */ - ; - - _proto.requestPictureInPicture = function requestPictureInPicture() { - var PromiseClass = this.options_.Promise || window_1$1.Promise; - - if (PromiseClass) { - return PromiseClass.reject(); - } - } - /** - * A method to check for the value of the 'disablePictureInPicture'

/
' - }, { - // this element and its contents can be hidden from assistive techs since - // it is made extraneous by the announcement of the control text - // for the current time and duration displays - 'aria-hidden': true - }); - }; - - return TimeDivider; -}(Component); - -Component.registerComponent('TimeDivider', TimeDivider); - -/** - * Displays the time left in the video - * - * @extends Component - */ - -var RemainingTimeDisplay = /*#__PURE__*/function (_TimeDisplay) { - inheritsLoose(RemainingTimeDisplay, _TimeDisplay); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - */ - function RemainingTimeDisplay(player, options) { - var _this; - - _this = _TimeDisplay.call(this, player, options) || this; - - _this.on(player, 'durationchange', _this.updateContent); - - return _this; - } - /** - * Builds the default DOM `className`. - * - * @return {string} - * The DOM `className` for this object. - */ - - - var _proto = RemainingTimeDisplay.prototype; - - _proto.buildCSSClass = function buildCSSClass() { - return 'vjs-remaining-time'; - } - /** - * Create the `Component`'s DOM element with the "minus" characted prepend to the time - * - * @return {Element} - * The element that was created. - */ - ; - - _proto.createEl = function createEl$1() { - var el = _TimeDisplay.prototype.createEl.call(this); - - el.insertBefore(createEl('span', {}, { - 'aria-hidden': true - }, '-'), this.contentEl_); - return el; - } - /** - * Update remaining time display. - * - * @param {EventTarget~Event} [event] - * The `timeupdate` or `durationchange` event that caused this to run. - * - * @listens Player#timeupdate - * @listens Player#durationchange - */ - ; - - _proto.updateContent = function updateContent(event) { - if (typeof this.player_.duration() !== 'number') { - return; - } - - var time; // @deprecated We should only use remainingTimeDisplay - // as of video.js 7 - - if (this.player_.ended()) { - time = 0; - } else if (this.player_.remainingTimeDisplay) { - time = this.player_.remainingTimeDisplay(); - } else { - time = this.player_.remainingTime(); - } - - this.updateTextNode_(time); - }; - - return RemainingTimeDisplay; -}(TimeDisplay); -/** - * The text that is added to the `RemainingTimeDisplay` for screen reader users. - * - * @type {string} - * @private - */ - - -RemainingTimeDisplay.prototype.labelText_ = 'Remaining Time'; -/** - * The text that should display over the `RemainingTimeDisplay`s controls. Added to for localization. - * - * @type {string} - * @private - * - * @deprecated in v7; controlText_ is not used in non-active display Components - */ - -RemainingTimeDisplay.prototype.controlText_ = 'Remaining Time'; -Component.registerComponent('RemainingTimeDisplay', RemainingTimeDisplay); - -/** - * Displays the live indicator when duration is Infinity. - * - * @extends Component - */ - -var LiveDisplay = /*#__PURE__*/function (_Component) { - inheritsLoose(LiveDisplay, _Component); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - */ - function LiveDisplay(player, options) { - var _this; - - _this = _Component.call(this, player, options) || this; - - _this.updateShowing(); - - _this.on(_this.player(), 'durationchange', _this.updateShowing); - - return _this; - } - /** - * Create the `Component`'s DOM element - * - * @return {Element} - * The element that was created. - */ - - - var _proto = LiveDisplay.prototype; - - _proto.createEl = function createEl$1() { - var el = _Component.prototype.createEl.call(this, 'div', { - className: 'vjs-live-control vjs-control' - }); - - this.contentEl_ = createEl('div', { - className: 'vjs-live-display', - innerHTML: "" + this.localize('Stream Type') + "\xA0" + this.localize('LIVE') - }, { - 'aria-live': 'off' - }); - el.appendChild(this.contentEl_); - return el; - }; - - _proto.dispose = function dispose() { - this.contentEl_ = null; - - _Component.prototype.dispose.call(this); - } - /** - * Check the duration to see if the LiveDisplay should be showing or not. Then show/hide - * it accordingly - * - * @param {EventTarget~Event} [event] - * The {@link Player#durationchange} event that caused this function to run. - * - * @listens Player#durationchange - */ - ; - - _proto.updateShowing = function updateShowing(event) { - if (this.player().duration() === Infinity) { - this.show(); - } else { - this.hide(); - } - }; - - return LiveDisplay; -}(Component); - -Component.registerComponent('LiveDisplay', LiveDisplay); - -/** - * Displays the live indicator when duration is Infinity. - * - * @extends Component - */ - -var SeekToLive = /*#__PURE__*/function (_Button) { - inheritsLoose(SeekToLive, _Button); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - */ - function SeekToLive(player, options) { - var _this; - - _this = _Button.call(this, player, options) || this; - - _this.updateLiveEdgeStatus(); - - if (_this.player_.liveTracker) { - _this.on(_this.player_.liveTracker, 'liveedgechange', _this.updateLiveEdgeStatus); - } - - return _this; - } - /** - * Create the `Component`'s DOM element - * - * @return {Element} - * The element that was created. - */ - - - var _proto = SeekToLive.prototype; - - _proto.createEl = function createEl$1() { - var el = _Button.prototype.createEl.call(this, 'button', { - className: 'vjs-seek-to-live-control vjs-control' - }); - - this.textEl_ = createEl('span', { - className: 'vjs-seek-to-live-text', - innerHTML: this.localize('LIVE') - }, { - 'aria-hidden': 'true' - }); - el.appendChild(this.textEl_); - return el; - } - /** - * Update the state of this button if we are at the live edge - * or not - */ - ; - - _proto.updateLiveEdgeStatus = function updateLiveEdgeStatus() { - // default to live edge - if (!this.player_.liveTracker || this.player_.liveTracker.atLiveEdge()) { - this.setAttribute('aria-disabled', true); - this.addClass('vjs-at-live-edge'); - this.controlText('Seek to live, currently playing live'); - } else { - this.setAttribute('aria-disabled', false); - this.removeClass('vjs-at-live-edge'); - this.controlText('Seek to live, currently behind live'); - } - } - /** - * On click bring us as near to the live point as possible. - * This requires that we wait for the next `live-seekable-change` - * event which will happen every segment length seconds. - */ - ; - - _proto.handleClick = function handleClick() { - this.player_.liveTracker.seekToLiveEdge(); - } - /** - * Dispose of the element and stop tracking - */ - ; - - _proto.dispose = function dispose() { - if (this.player_.liveTracker) { - this.off(this.player_.liveTracker, 'liveedgechange', this.updateLiveEdgeStatus); - } - - this.textEl_ = null; - - _Button.prototype.dispose.call(this); - }; - - return SeekToLive; -}(Button); - -SeekToLive.prototype.controlText_ = 'Seek to live, currently playing live'; -Component.registerComponent('SeekToLive', SeekToLive); - -/** - * Keep a number between a min and a max value - * - * @param {number} number - * The number to clamp - * - * @param {number} min - * The minimum value - * @param {number} max - * The maximum value - * - * @return {number} - * the clamped number - */ -var clamp = function clamp(number, min, max) { - number = Number(number); - return Math.min(max, Math.max(min, isNaN(number) ? min : number)); -}; - -/** - * The base functionality for a slider. Can be vertical or horizontal. - * For instance the volume bar or the seek bar on a video is a slider. - * - * @extends Component - */ - -var Slider = /*#__PURE__*/function (_Component) { - inheritsLoose(Slider, _Component); - - /** - * Create an instance of this class - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - */ - function Slider(player, options) { - var _this; - - _this = _Component.call(this, player, options) || this; // Set property names to bar to match with the child Slider class is looking for - - _this.bar = _this.getChild(_this.options_.barName); // Set a horizontal or vertical class on the slider depending on the slider type - - _this.vertical(!!_this.options_.vertical); - - _this.enable(); - - return _this; - } - /** - * Are controls are currently enabled for this slider or not. - * - * @return {boolean} - * true if controls are enabled, false otherwise - */ - - - var _proto = Slider.prototype; - - _proto.enabled = function enabled() { - return this.enabled_; - } - /** - * Enable controls for this slider if they are disabled - */ - ; - - _proto.enable = function enable() { - if (this.enabled()) { - return; - } - - this.on('mousedown', this.handleMouseDown); - this.on('touchstart', this.handleMouseDown); - this.on('keydown', this.handleKeyDown); - this.on('click', this.handleClick); // TODO: deprecated, controlsvisible does not seem to be fired - - this.on(this.player_, 'controlsvisible', this.update); - - if (this.playerEvent) { - this.on(this.player_, this.playerEvent, this.update); - } - - this.removeClass('disabled'); - this.setAttribute('tabindex', 0); - this.enabled_ = true; - } - /** - * Disable controls for this slider if they are enabled - */ - ; - - _proto.disable = function disable() { - if (!this.enabled()) { - return; - } - - var doc = this.bar.el_.ownerDocument; - this.off('mousedown', this.handleMouseDown); - this.off('touchstart', this.handleMouseDown); - this.off('keydown', this.handleKeyDown); - this.off('click', this.handleClick); - this.off(this.player_, 'controlsvisible', this.update); - this.off(doc, 'mousemove', this.handleMouseMove); - this.off(doc, 'mouseup', this.handleMouseUp); - this.off(doc, 'touchmove', this.handleMouseMove); - this.off(doc, 'touchend', this.handleMouseUp); - this.removeAttribute('tabindex'); - this.addClass('disabled'); - - if (this.playerEvent) { - this.off(this.player_, this.playerEvent, this.update); - } - - this.enabled_ = false; - } - /** - * Create the `Slider`s DOM element. - * - * @param {string} type - * Type of element to create. - * - * @param {Object} [props={}] - * List of properties in Object form. - * - * @param {Object} [attributes={}] - * list of attributes in Object form. - * - * @return {Element} - * The element that gets created. - */ - ; - - _proto.createEl = function createEl(type, props, attributes) { - if (props === void 0) { - props = {}; - } - - if (attributes === void 0) { - attributes = {}; - } - - // Add the slider element class to all sub classes - props.className = props.className + ' vjs-slider'; - props = assign({ - tabIndex: 0 - }, props); - attributes = assign({ - 'role': 'slider', - 'aria-valuenow': 0, - 'aria-valuemin': 0, - 'aria-valuemax': 100, - 'tabIndex': 0 - }, attributes); - return _Component.prototype.createEl.call(this, type, props, attributes); - } - /** - * Handle `mousedown` or `touchstart` events on the `Slider`. - * - * @param {EventTarget~Event} event - * `mousedown` or `touchstart` event that triggered this function - * - * @listens mousedown - * @listens touchstart - * @fires Slider#slideractive - */ - ; - - _proto.handleMouseDown = function handleMouseDown(event) { - var doc = this.bar.el_.ownerDocument; - - if (event.type === 'mousedown') { - event.preventDefault(); - } // Do not call preventDefault() on touchstart in Chrome - // to avoid console warnings. Use a 'touch-action: none' style - // instead to prevent unintented scrolling. - // https://developers.google.com/web/updates/2017/01/scrolling-intervention - - - if (event.type === 'touchstart' && !IS_CHROME) { - event.preventDefault(); - } - - blockTextSelection(); - this.addClass('vjs-sliding'); - /** - * Triggered when the slider is in an active state - * - * @event Slider#slideractive - * @type {EventTarget~Event} - */ - - this.trigger('slideractive'); - this.on(doc, 'mousemove', this.handleMouseMove); - this.on(doc, 'mouseup', this.handleMouseUp); - this.on(doc, 'touchmove', this.handleMouseMove); - this.on(doc, 'touchend', this.handleMouseUp); - this.handleMouseMove(event); - } - /** - * Handle the `mousemove`, `touchmove`, and `mousedown` events on this `Slider`. - * The `mousemove` and `touchmove` events will only only trigger this function during - * `mousedown` and `touchstart`. This is due to {@link Slider#handleMouseDown} and - * {@link Slider#handleMouseUp}. - * - * @param {EventTarget~Event} event - * `mousedown`, `mousemove`, `touchstart`, or `touchmove` event that triggered - * this function - * - * @listens mousemove - * @listens touchmove - */ - ; - - _proto.handleMouseMove = function handleMouseMove(event) {} - /** - * Handle `mouseup` or `touchend` events on the `Slider`. - * - * @param {EventTarget~Event} event - * `mouseup` or `touchend` event that triggered this function. - * - * @listens touchend - * @listens mouseup - * @fires Slider#sliderinactive - */ - ; - - _proto.handleMouseUp = function handleMouseUp() { - var doc = this.bar.el_.ownerDocument; - unblockTextSelection(); - this.removeClass('vjs-sliding'); - /** - * Triggered when the slider is no longer in an active state. - * - * @event Slider#sliderinactive - * @type {EventTarget~Event} - */ - - this.trigger('sliderinactive'); - this.off(doc, 'mousemove', this.handleMouseMove); - this.off(doc, 'mouseup', this.handleMouseUp); - this.off(doc, 'touchmove', this.handleMouseMove); - this.off(doc, 'touchend', this.handleMouseUp); - this.update(); - } - /** - * Update the progress bar of the `Slider`. - * - * @return {number} - * The percentage of progress the progress bar represents as a - * number from 0 to 1. - */ - ; - - _proto.update = function update() { - var _this2 = this; - - // In VolumeBar init we have a setTimeout for update that pops and update - // to the end of the execution stack. The player is destroyed before then - // update will cause an error - // If there's no bar... - if (!this.el_ || !this.bar) { - return; - } // clamp progress between 0 and 1 - // and only round to four decimal places, as we round to two below - - - var progress = this.getProgress(); - - if (progress === this.progress_) { - return progress; - } - - this.progress_ = progress; - this.requestNamedAnimationFrame('Slider#update', function () { - // Set the new bar width or height - var sizeKey = _this2.vertical() ? 'height' : 'width'; // Convert to a percentage for css value - - _this2.bar.el().style[sizeKey] = (progress * 100).toFixed(2) + '%'; - }); - return progress; - } - /** - * Get the percentage of the bar that should be filled - * but clamped and rounded. - * - * @return {number} - * percentage filled that the slider is - */ - ; - - _proto.getProgress = function getProgress() { - return Number(clamp(this.getPercent(), 0, 1).toFixed(4)); - } - /** - * Calculate distance for slider - * - * @param {EventTarget~Event} event - * The event that caused this function to run. - * - * @return {number} - * The current position of the Slider. - * - position.x for vertical `Slider`s - * - position.y for horizontal `Slider`s - */ - ; - - _proto.calculateDistance = function calculateDistance(event) { - var position = getPointerPosition(this.el_, event); - - if (this.vertical()) { - return position.y; - } - - return position.x; - } - /** - * Handle a `keydown` event on the `Slider`. Watches for left, rigth, up, and down - * arrow keys. This function will only be called when the slider has focus. See - * {@link Slider#handleFocus} and {@link Slider#handleBlur}. - * - * @param {EventTarget~Event} event - * the `keydown` event that caused this function to run. - * - * @listens keydown - */ - ; - - _proto.handleKeyDown = function handleKeyDown(event) { - // Left and Down Arrows - if (keycode.isEventKey(event, 'Left') || keycode.isEventKey(event, 'Down')) { - event.preventDefault(); - event.stopPropagation(); - this.stepBack(); // Up and Right Arrows - } else if (keycode.isEventKey(event, 'Right') || keycode.isEventKey(event, 'Up')) { - event.preventDefault(); - event.stopPropagation(); - this.stepForward(); - } else { - // Pass keydown handling up for unsupported keys - _Component.prototype.handleKeyDown.call(this, event); - } - } - /** - * Listener for click events on slider, used to prevent clicks - * from bubbling up to parent elements like button menus. - * - * @param {Object} event - * Event that caused this object to run - */ - ; - - _proto.handleClick = function handleClick(event) { - event.stopPropagation(); - event.preventDefault(); - } - /** - * Get/set if slider is horizontal for vertical - * - * @param {boolean} [bool] - * - true if slider is vertical, - * - false is horizontal - * - * @return {boolean} - * - true if slider is vertical, and getting - * - false if the slider is horizontal, and getting - */ - ; - - _proto.vertical = function vertical(bool) { - if (bool === undefined) { - return this.vertical_ || false; - } - - this.vertical_ = !!bool; - - if (this.vertical_) { - this.addClass('vjs-slider-vertical'); - } else { - this.addClass('vjs-slider-horizontal'); - } - }; - - return Slider; -}(Component); - -Component.registerComponent('Slider', Slider); - -var percentify = function percentify(time, end) { - return clamp(time / end * 100, 0, 100).toFixed(2) + '%'; -}; -/** - * Shows loading progress - * - * @extends Component - */ - - -var LoadProgressBar = /*#__PURE__*/function (_Component) { - inheritsLoose(LoadProgressBar, _Component); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - */ - function LoadProgressBar(player, options) { - var _this; - - _this = _Component.call(this, player, options) || this; - _this.partEls_ = []; - - _this.on(player, 'progress', _this.update); - - return _this; - } - /** - * Create the `Component`'s DOM element - * - * @return {Element} - * The element that was created. - */ - - - var _proto = LoadProgressBar.prototype; - - _proto.createEl = function createEl$1() { - var el = _Component.prototype.createEl.call(this, 'div', { - className: 'vjs-load-progress' - }); - - var wrapper = createEl('span', { - className: 'vjs-control-text' - }); - var loadedText = createEl('span', { - textContent: this.localize('Loaded') - }); - var separator = document_1.createTextNode(': '); - this.percentageEl_ = createEl('span', { - className: 'vjs-control-text-loaded-percentage', - textContent: '0%' - }); - el.appendChild(wrapper); - wrapper.appendChild(loadedText); - wrapper.appendChild(separator); - wrapper.appendChild(this.percentageEl_); - return el; - }; - - _proto.dispose = function dispose() { - this.partEls_ = null; - this.percentageEl_ = null; - - _Component.prototype.dispose.call(this); - } - /** - * Update progress bar - * - * @param {EventTarget~Event} [event] - * The `progress` event that caused this function to run. - * - * @listens Player#progress - */ - ; - - _proto.update = function update(event) { - var _this2 = this; - - this.requestNamedAnimationFrame('LoadProgressBar#update', function () { - var liveTracker = _this2.player_.liveTracker; - - var buffered = _this2.player_.buffered(); - - var duration = liveTracker && liveTracker.isLive() ? liveTracker.seekableEnd() : _this2.player_.duration(); - - var bufferedEnd = _this2.player_.bufferedEnd(); - - var children = _this2.partEls_; - var percent = percentify(bufferedEnd, duration); - - if (_this2.percent_ !== percent) { - // update the width of the progress bar - _this2.el_.style.width = percent; // update the control-text - - textContent(_this2.percentageEl_, percent); - _this2.percent_ = percent; - } // add child elements to represent the individual buffered time ranges - - - for (var i = 0; i < buffered.length; i++) { - var start = buffered.start(i); - var end = buffered.end(i); - var part = children[i]; - - if (!part) { - part = _this2.el_.appendChild(createEl()); - children[i] = part; - } // only update if changed - - - if (part.dataset.start === start && part.dataset.end === end) { - continue; - } - - part.dataset.start = start; - part.dataset.end = end; // set the percent based on the width of the progress bar (bufferedEnd) - - part.style.left = percentify(start, bufferedEnd); - part.style.width = percentify(end - start, bufferedEnd); - } // remove unused buffered range elements - - - for (var _i = children.length; _i > buffered.length; _i--) { - _this2.el_.removeChild(children[_i - 1]); - } - - children.length = buffered.length; - }); - }; - - return LoadProgressBar; -}(Component); - -Component.registerComponent('LoadProgressBar', LoadProgressBar); - -/** - * Time tooltips display a time above the progress bar. - * - * @extends Component - */ - -var TimeTooltip = /*#__PURE__*/function (_Component) { - inheritsLoose(TimeTooltip, _Component); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The {@link Player} that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - */ - function TimeTooltip(player, options) { - var _this; - - _this = _Component.call(this, player, options) || this; - _this.update = throttle(bind(assertThisInitialized(_this), _this.update), UPDATE_REFRESH_INTERVAL); - return _this; - } - /** - * Create the time tooltip DOM element - * - * @return {Element} - * The element that was created. - */ - - - var _proto = TimeTooltip.prototype; - - _proto.createEl = function createEl() { - return _Component.prototype.createEl.call(this, 'div', { - className: 'vjs-time-tooltip' - }, { - 'aria-hidden': 'true' - }); - } - /** - * Updates the position of the time tooltip relative to the `SeekBar`. - * - * @param {Object} seekBarRect - * The `ClientRect` for the {@link SeekBar} element. - * - * @param {number} seekBarPoint - * A number from 0 to 1, representing a horizontal reference point - * from the left edge of the {@link SeekBar} - */ - ; - - _proto.update = function update(seekBarRect, seekBarPoint, content) { - var tooltipRect = findPosition(this.el_); - var playerRect = getBoundingClientRect(this.player_.el()); - var seekBarPointPx = seekBarRect.width * seekBarPoint; // do nothing if either rect isn't available - // for example, if the player isn't in the DOM for testing - - if (!playerRect || !tooltipRect) { - return; - } // This is the space left of the `seekBarPoint` available within the bounds - // of the player. We calculate any gap between the left edge of the player - // and the left edge of the `SeekBar` and add the number of pixels in the - // `SeekBar` before hitting the `seekBarPoint` - - - var spaceLeftOfPoint = seekBarRect.left - playerRect.left + seekBarPointPx; // This is the space right of the `seekBarPoint` available within the bounds - // of the player. We calculate the number of pixels from the `seekBarPoint` - // to the right edge of the `SeekBar` and add to that any gap between the - // right edge of the `SeekBar` and the player. - - var spaceRightOfPoint = seekBarRect.width - seekBarPointPx + (playerRect.right - seekBarRect.right); // This is the number of pixels by which the tooltip will need to be pulled - // further to the right to center it over the `seekBarPoint`. - - var pullTooltipBy = tooltipRect.width / 2; // Adjust the `pullTooltipBy` distance to the left or right depending on - // the results of the space calculations above. - - if (spaceLeftOfPoint < pullTooltipBy) { - pullTooltipBy += pullTooltipBy - spaceLeftOfPoint; - } else if (spaceRightOfPoint < pullTooltipBy) { - pullTooltipBy = spaceRightOfPoint; - } // Due to the imprecision of decimal/ratio based calculations and varying - // rounding behaviors, there are cases where the spacing adjustment is off - // by a pixel or two. This adds insurance to these calculations. - - - if (pullTooltipBy < 0) { - pullTooltipBy = 0; - } else if (pullTooltipBy > tooltipRect.width) { - pullTooltipBy = tooltipRect.width; - } - - this.el_.style.right = "-" + pullTooltipBy + "px"; - this.write(content); - } - /** - * Write the time to the tooltip DOM element. - * - * @param {string} content - * The formatted time for the tooltip. - */ - ; - - _proto.write = function write(content) { - textContent(this.el_, content); - } - /** - * Updates the position of the time tooltip relative to the `SeekBar`. - * - * @param {Object} seekBarRect - * The `ClientRect` for the {@link SeekBar} element. - * - * @param {number} seekBarPoint - * A number from 0 to 1, representing a horizontal reference point - * from the left edge of the {@link SeekBar} - * - * @param {number} time - * The time to update the tooltip to, not used during live playback - * - * @param {Function} cb - * A function that will be called during the request animation frame - * for tooltips that need to do additional animations from the default - */ - ; - - _proto.updateTime = function updateTime(seekBarRect, seekBarPoint, time, cb) { - var _this2 = this; - - this.requestNamedAnimationFrame('TimeTooltip#updateTime', function () { - var content; - - var duration = _this2.player_.duration(); - - if (_this2.player_.liveTracker && _this2.player_.liveTracker.isLive()) { - var liveWindow = _this2.player_.liveTracker.liveWindow(); - - var secondsBehind = liveWindow - seekBarPoint * liveWindow; - content = (secondsBehind < 1 ? '' : '-') + formatTime(secondsBehind, liveWindow); - } else { - content = formatTime(time, duration); - } - - _this2.update(seekBarRect, seekBarPoint, content); - - if (cb) { - cb(); - } - }); - }; - - return TimeTooltip; -}(Component); - -Component.registerComponent('TimeTooltip', TimeTooltip); - -/** - * Used by {@link SeekBar} to display media playback progress as part of the - * {@link ProgressControl}. - * - * @extends Component - */ - -var PlayProgressBar = /*#__PURE__*/function (_Component) { - inheritsLoose(PlayProgressBar, _Component); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The {@link Player} that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - */ - function PlayProgressBar(player, options) { - var _this; - - _this = _Component.call(this, player, options) || this; - _this.update = throttle(bind(assertThisInitialized(_this), _this.update), UPDATE_REFRESH_INTERVAL); - return _this; - } - /** - * Create the the DOM element for this class. - * - * @return {Element} - * The element that was created. - */ - - - var _proto = PlayProgressBar.prototype; - - _proto.createEl = function createEl() { - return _Component.prototype.createEl.call(this, 'div', { - className: 'vjs-play-progress vjs-slider-bar' - }, { - 'aria-hidden': 'true' - }); - } - /** - * Enqueues updates to its own DOM as well as the DOM of its - * {@link TimeTooltip} child. - * - * @param {Object} seekBarRect - * The `ClientRect` for the {@link SeekBar} element. - * - * @param {number} seekBarPoint - * A number from 0 to 1, representing a horizontal reference point - * from the left edge of the {@link SeekBar} - */ - ; - - _proto.update = function update(seekBarRect, seekBarPoint) { - var timeTooltip = this.getChild('timeTooltip'); - - if (!timeTooltip) { - return; - } - - var time = this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime(); - timeTooltip.updateTime(seekBarRect, seekBarPoint, time); - }; - - return PlayProgressBar; -}(Component); -/** - * Default options for {@link PlayProgressBar}. - * - * @type {Object} - * @private - */ - - -PlayProgressBar.prototype.options_ = { - children: [] -}; // Time tooltips should not be added to a player on mobile devices - -if (!IS_IOS && !IS_ANDROID) { - PlayProgressBar.prototype.options_.children.push('timeTooltip'); -} - -Component.registerComponent('PlayProgressBar', PlayProgressBar); - -/** - * The {@link MouseTimeDisplay} component tracks mouse movement over the - * {@link ProgressControl}. It displays an indicator and a {@link TimeTooltip} - * indicating the time which is represented by a given point in the - * {@link ProgressControl}. - * - * @extends Component - */ - -var MouseTimeDisplay = /*#__PURE__*/function (_Component) { - inheritsLoose(MouseTimeDisplay, _Component); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The {@link Player} that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - */ - function MouseTimeDisplay(player, options) { - var _this; - - _this = _Component.call(this, player, options) || this; - _this.update = throttle(bind(assertThisInitialized(_this), _this.update), UPDATE_REFRESH_INTERVAL); - return _this; - } - /** - * Create the DOM element for this class. - * - * @return {Element} - * The element that was created. - */ - - - var _proto = MouseTimeDisplay.prototype; - - _proto.createEl = function createEl() { - return _Component.prototype.createEl.call(this, 'div', { - className: 'vjs-mouse-display' - }); - } - /** - * Enqueues updates to its own DOM as well as the DOM of its - * {@link TimeTooltip} child. - * - * @param {Object} seekBarRect - * The `ClientRect` for the {@link SeekBar} element. - * - * @param {number} seekBarPoint - * A number from 0 to 1, representing a horizontal reference point - * from the left edge of the {@link SeekBar} - */ - ; - - _proto.update = function update(seekBarRect, seekBarPoint) { - var _this2 = this; - - var time = seekBarPoint * this.player_.duration(); - this.getChild('timeTooltip').updateTime(seekBarRect, seekBarPoint, time, function () { - _this2.el_.style.left = seekBarRect.width * seekBarPoint + "px"; - }); - }; - - return MouseTimeDisplay; -}(Component); -/** - * Default options for `MouseTimeDisplay` - * - * @type {Object} - * @private - */ - - -MouseTimeDisplay.prototype.options_ = { - children: ['timeTooltip'] -}; -Component.registerComponent('MouseTimeDisplay', MouseTimeDisplay); - -var STEP_SECONDS = 5; // The multiplier of STEP_SECONDS that PgUp/PgDown move the timeline. - -var PAGE_KEY_MULTIPLIER = 12; -/** - * Seek bar and container for the progress bars. Uses {@link PlayProgressBar} - * as its `bar`. - * - * @extends Slider - */ - -var SeekBar = /*#__PURE__*/function (_Slider) { - inheritsLoose(SeekBar, _Slider); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - */ - function SeekBar(player, options) { - var _this; - - _this = _Slider.call(this, player, options) || this; - - _this.setEventHandlers_(); - - return _this; - } - /** - * Sets the event handlers - * - * @private - */ - - - var _proto = SeekBar.prototype; - - _proto.setEventHandlers_ = function setEventHandlers_() { - this.update_ = bind(this, this.update); - this.update = throttle(this.update_, UPDATE_REFRESH_INTERVAL); - this.on(this.player_, ['ended', 'durationchange', 'timeupdate'], this.update); - - if (this.player_.liveTracker) { - this.on(this.player_.liveTracker, 'liveedgechange', this.update); - } // when playing, let's ensure we smoothly update the play progress bar - // via an interval - - - this.updateInterval = null; - this.on(this.player_, ['playing'], this.enableInterval_); - this.on(this.player_, ['ended', 'pause', 'waiting'], this.disableInterval_); // we don't need to update the play progress if the document is hidden, - // also, this causes the CPU to spike and eventually crash the page on IE11. - - if ('hidden' in document_1 && 'visibilityState' in document_1) { - this.on(document_1, 'visibilitychange', this.toggleVisibility_); - } - }; - - _proto.toggleVisibility_ = function toggleVisibility_(e) { - if (document_1.hidden) { - this.disableInterval_(e); - } else { - this.enableInterval_(); // we just switched back to the page and someone may be looking, so, update ASAP - - this.update(); - } - }; - - _proto.enableInterval_ = function enableInterval_() { - if (this.updateInterval) { - return; - } - - this.updateInterval = this.setInterval(this.update, UPDATE_REFRESH_INTERVAL); - }; - - _proto.disableInterval_ = function disableInterval_(e) { - if (this.player_.liveTracker && this.player_.liveTracker.isLive() && e && e.type !== 'ended') { - return; - } - - if (!this.updateInterval) { - return; - } - - this.clearInterval(this.updateInterval); - this.updateInterval = null; - } - /** - * Create the `Component`'s DOM element - * - * @return {Element} - * The element that was created. - */ - ; - - _proto.createEl = function createEl() { - return _Slider.prototype.createEl.call(this, 'div', { - className: 'vjs-progress-holder' - }, { - 'aria-label': this.localize('Progress Bar') - }); - } - /** - * This function updates the play progress bar and accessibility - * attributes to whatever is passed in. - * - * @param {EventTarget~Event} [event] - * The `timeupdate` or `ended` event that caused this to run. - * - * @listens Player#timeupdate - * - * @return {number} - * The current percent at a number from 0-1 - */ - ; - - _proto.update = function update(event) { - var _this2 = this; - - var percent = _Slider.prototype.update.call(this); - - this.requestNamedAnimationFrame('SeekBar#update', function () { - var currentTime = _this2.player_.ended() ? _this2.player_.duration() : _this2.getCurrentTime_(); - var liveTracker = _this2.player_.liveTracker; - - var duration = _this2.player_.duration(); - - if (liveTracker && liveTracker.isLive()) { - duration = _this2.player_.liveTracker.liveCurrentTime(); - } - - if (_this2.percent_ !== percent) { - // machine readable value of progress bar (percentage complete) - _this2.el_.setAttribute('aria-valuenow', (percent * 100).toFixed(2)); - - _this2.percent_ = percent; - } - - if (_this2.currentTime_ !== currentTime || _this2.duration_ !== duration) { - // human readable value of progress bar (time complete) - _this2.el_.setAttribute('aria-valuetext', _this2.localize('progress bar timing: currentTime={1} duration={2}', [formatTime(currentTime, duration), formatTime(duration, duration)], '{1} of {2}')); - - _this2.currentTime_ = currentTime; - _this2.duration_ = duration; - } // update the progress bar time tooltip with the current time - - - if (_this2.bar) { - _this2.bar.update(getBoundingClientRect(_this2.el()), _this2.getProgress()); - } - }); - return percent; - } - /** - * Get the value of current time but allows for smooth scrubbing, - * when player can't keep up. - * - * @return {number} - * The current time value to display - * - * @private - */ - ; - - _proto.getCurrentTime_ = function getCurrentTime_() { - return this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime(); - } - /** - * Get the percentage of media played so far. - * - * @return {number} - * The percentage of media played so far (0 to 1). - */ - ; - - _proto.getPercent = function getPercent() { - var currentTime = this.getCurrentTime_(); - var percent; - var liveTracker = this.player_.liveTracker; - - if (liveTracker && liveTracker.isLive()) { - percent = (currentTime - liveTracker.seekableStart()) / liveTracker.liveWindow(); // prevent the percent from changing at the live edge - - if (liveTracker.atLiveEdge()) { - percent = 1; - } - } else { - percent = currentTime / this.player_.duration(); - } - - return percent; - } - /** - * Handle mouse down on seek bar - * - * @param {EventTarget~Event} event - * The `mousedown` event that caused this to run. - * - * @listens mousedown - */ - ; - - _proto.handleMouseDown = function handleMouseDown(event) { - if (!isSingleLeftClick(event)) { - return; - } // Stop event propagation to prevent double fire in progress-control.js - - - event.stopPropagation(); - this.player_.scrubbing(true); - this.videoWasPlaying = !this.player_.paused(); - this.player_.pause(); - - _Slider.prototype.handleMouseDown.call(this, event); - } - /** - * Handle mouse move on seek bar - * - * @param {EventTarget~Event} event - * The `mousemove` event that caused this to run. - * - * @listens mousemove - */ - ; - - _proto.handleMouseMove = function handleMouseMove(event) { - if (!isSingleLeftClick(event)) { - return; - } - - var newTime; - var distance = this.calculateDistance(event); - var liveTracker = this.player_.liveTracker; - - if (!liveTracker || !liveTracker.isLive()) { - newTime = distance * this.player_.duration(); // Don't let video end while scrubbing. - - if (newTime === this.player_.duration()) { - newTime = newTime - 0.1; - } - } else { - if (distance >= 0.99) { - liveTracker.seekToLiveEdge(); - return; - } - - var seekableStart = liveTracker.seekableStart(); - var seekableEnd = liveTracker.liveCurrentTime(); - newTime = seekableStart + distance * liveTracker.liveWindow(); // Don't let video end while scrubbing. - - if (newTime >= seekableEnd) { - newTime = seekableEnd; - } // Compensate for precision differences so that currentTime is not less - // than seekable start - - - if (newTime <= seekableStart) { - newTime = seekableStart + 0.1; - } // On android seekableEnd can be Infinity sometimes, - // this will cause newTime to be Infinity, which is - // not a valid currentTime. - - - if (newTime === Infinity) { - return; - } - } // Set new time (tell player to seek to new time) - - - this.player_.currentTime(newTime); - }; - - _proto.enable = function enable() { - _Slider.prototype.enable.call(this); - - var mouseTimeDisplay = this.getChild('mouseTimeDisplay'); - - if (!mouseTimeDisplay) { - return; - } - - mouseTimeDisplay.show(); - }; - - _proto.disable = function disable() { - _Slider.prototype.disable.call(this); - - var mouseTimeDisplay = this.getChild('mouseTimeDisplay'); - - if (!mouseTimeDisplay) { - return; - } - - mouseTimeDisplay.hide(); - } - /** - * Handle mouse up on seek bar - * - * @param {EventTarget~Event} event - * The `mouseup` event that caused this to run. - * - * @listens mouseup - */ - ; - - _proto.handleMouseUp = function handleMouseUp(event) { - _Slider.prototype.handleMouseUp.call(this, event); // Stop event propagation to prevent double fire in progress-control.js - - - if (event) { - event.stopPropagation(); - } - - this.player_.scrubbing(false); - /** - * Trigger timeupdate because we're done seeking and the time has changed. - * This is particularly useful for if the player is paused to time the time displays. - * - * @event Tech#timeupdate - * @type {EventTarget~Event} - */ - - this.player_.trigger({ - type: 'timeupdate', - target: this, - manuallyTriggered: true - }); - - if (this.videoWasPlaying) { - silencePromise(this.player_.play()); - } else { - // We're done seeking and the time has changed. - // If the player is paused, make sure we display the correct time on the seek bar. - this.update_(); - } - } - /** - * Move more quickly fast forward for keyboard-only users - */ - ; - - _proto.stepForward = function stepForward() { - this.player_.currentTime(this.player_.currentTime() + STEP_SECONDS); - } - /** - * Move more quickly rewind for keyboard-only users - */ - ; - - _proto.stepBack = function stepBack() { - this.player_.currentTime(this.player_.currentTime() - STEP_SECONDS); - } - /** - * Toggles the playback state of the player - * This gets called when enter or space is used on the seekbar - * - * @param {EventTarget~Event} event - * The `keydown` event that caused this function to be called - * - */ - ; - - _proto.handleAction = function handleAction(event) { - if (this.player_.paused()) { - this.player_.play(); - } else { - this.player_.pause(); - } - } - /** - * Called when this SeekBar has focus and a key gets pressed down. - * Supports the following keys: - * - * Space or Enter key fire a click event - * Home key moves to start of the timeline - * End key moves to end of the timeline - * Digit "0" through "9" keys move to 0%, 10% ... 80%, 90% of the timeline - * PageDown key moves back a larger step than ArrowDown - * PageUp key moves forward a large step - * - * @param {EventTarget~Event} event - * The `keydown` event that caused this function to be called. - * - * @listens keydown - */ - ; - - _proto.handleKeyDown = function handleKeyDown(event) { - if (keycode.isEventKey(event, 'Space') || keycode.isEventKey(event, 'Enter')) { - event.preventDefault(); - event.stopPropagation(); - this.handleAction(event); - } else if (keycode.isEventKey(event, 'Home')) { - event.preventDefault(); - event.stopPropagation(); - this.player_.currentTime(0); - } else if (keycode.isEventKey(event, 'End')) { - event.preventDefault(); - event.stopPropagation(); - this.player_.currentTime(this.player_.duration()); - } else if (/^[0-9]$/.test(keycode(event))) { - event.preventDefault(); - event.stopPropagation(); - var gotoFraction = (keycode.codes[keycode(event)] - keycode.codes['0']) * 10.0 / 100.0; - this.player_.currentTime(this.player_.duration() * gotoFraction); - } else if (keycode.isEventKey(event, 'PgDn')) { - event.preventDefault(); - event.stopPropagation(); - this.player_.currentTime(this.player_.currentTime() - STEP_SECONDS * PAGE_KEY_MULTIPLIER); - } else if (keycode.isEventKey(event, 'PgUp')) { - event.preventDefault(); - event.stopPropagation(); - this.player_.currentTime(this.player_.currentTime() + STEP_SECONDS * PAGE_KEY_MULTIPLIER); - } else { - // Pass keydown handling up for unsupported keys - _Slider.prototype.handleKeyDown.call(this, event); - } - }; - - _proto.dispose = function dispose() { - this.disableInterval_(); - this.off(this.player_, ['ended', 'durationchange', 'timeupdate'], this.update); - - if (this.player_.liveTracker) { - this.on(this.player_.liveTracker, 'liveedgechange', this.update); - } - - this.off(this.player_, ['playing'], this.enableInterval_); - this.off(this.player_, ['ended', 'pause', 'waiting'], this.disableInterval_); // we don't need to update the play progress if the document is hidden, - // also, this causes the CPU to spike and eventually crash the page on IE11. - - if ('hidden' in document_1 && 'visibilityState' in document_1) { - this.off(document_1, 'visibilitychange', this.toggleVisibility_); - } - - _Slider.prototype.dispose.call(this); - }; - - return SeekBar; -}(Slider); -/** - * Default options for the `SeekBar` - * - * @type {Object} - * @private - */ - - -SeekBar.prototype.options_ = { - children: ['loadProgressBar', 'playProgressBar'], - barName: 'playProgressBar' -}; // MouseTimeDisplay tooltips should not be added to a player on mobile devices - -if (!IS_IOS && !IS_ANDROID) { - SeekBar.prototype.options_.children.splice(1, 0, 'mouseTimeDisplay'); -} - -Component.registerComponent('SeekBar', SeekBar); - -/** - * The Progress Control component contains the seek bar, load progress, - * and play progress. - * - * @extends Component - */ - -var ProgressControl = /*#__PURE__*/function (_Component) { - inheritsLoose(ProgressControl, _Component); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - */ - function ProgressControl(player, options) { - var _this; - - _this = _Component.call(this, player, options) || this; - _this.handleMouseMove = throttle(bind(assertThisInitialized(_this), _this.handleMouseMove), UPDATE_REFRESH_INTERVAL); - _this.throttledHandleMouseSeek = throttle(bind(assertThisInitialized(_this), _this.handleMouseSeek), UPDATE_REFRESH_INTERVAL); - - _this.enable(); - - return _this; - } - /** - * Create the `Component`'s DOM element - * - * @return {Element} - * The element that was created. - */ - - - var _proto = ProgressControl.prototype; - - _proto.createEl = function createEl() { - return _Component.prototype.createEl.call(this, 'div', { - className: 'vjs-progress-control vjs-control' - }); - } - /** - * When the mouse moves over the `ProgressControl`, the pointer position - * gets passed down to the `MouseTimeDisplay` component. - * - * @param {EventTarget~Event} event - * The `mousemove` event that caused this function to run. - * - * @listen mousemove - */ - ; - - _proto.handleMouseMove = function handleMouseMove(event) { - var seekBar = this.getChild('seekBar'); - - if (!seekBar) { - return; - } - - var playProgressBar = seekBar.getChild('playProgressBar'); - var mouseTimeDisplay = seekBar.getChild('mouseTimeDisplay'); - - if (!playProgressBar && !mouseTimeDisplay) { - return; - } - - var seekBarEl = seekBar.el(); - var seekBarRect = findPosition(seekBarEl); - var seekBarPoint = getPointerPosition(seekBarEl, event).x; // The default skin has a gap on either side of the `SeekBar`. This means - // that it's possible to trigger this behavior outside the boundaries of - // the `SeekBar`. This ensures we stay within it at all times. - - seekBarPoint = clamp(seekBarPoint, 0, 1); - - if (mouseTimeDisplay) { - mouseTimeDisplay.update(seekBarRect, seekBarPoint); - } - - if (playProgressBar) { - playProgressBar.update(seekBarRect, seekBar.getProgress()); - } - } - /** - * A throttled version of the {@link ProgressControl#handleMouseSeek} listener. - * - * @method ProgressControl#throttledHandleMouseSeek - * @param {EventTarget~Event} event - * The `mousemove` event that caused this function to run. - * - * @listen mousemove - * @listen touchmove - */ - - /** - * Handle `mousemove` or `touchmove` events on the `ProgressControl`. - * - * @param {EventTarget~Event} event - * `mousedown` or `touchstart` event that triggered this function - * - * @listens mousemove - * @listens touchmove - */ - ; - - _proto.handleMouseSeek = function handleMouseSeek(event) { - var seekBar = this.getChild('seekBar'); - - if (seekBar) { - seekBar.handleMouseMove(event); - } - } - /** - * Are controls are currently enabled for this progress control. - * - * @return {boolean} - * true if controls are enabled, false otherwise - */ - ; - - _proto.enabled = function enabled() { - return this.enabled_; - } - /** - * Disable all controls on the progress control and its children - */ - ; - - _proto.disable = function disable() { - this.children().forEach(function (child) { - return child.disable && child.disable(); - }); - - if (!this.enabled()) { - return; - } - - this.off(['mousedown', 'touchstart'], this.handleMouseDown); - this.off(this.el_, 'mousemove', this.handleMouseMove); - this.handleMouseUp(); - this.addClass('disabled'); - this.enabled_ = false; - } - /** - * Enable all controls on the progress control and its children - */ - ; - - _proto.enable = function enable() { - this.children().forEach(function (child) { - return child.enable && child.enable(); - }); - - if (this.enabled()) { - return; - } - - this.on(['mousedown', 'touchstart'], this.handleMouseDown); - this.on(this.el_, 'mousemove', this.handleMouseMove); - this.removeClass('disabled'); - this.enabled_ = true; - } - /** - * Handle `mousedown` or `touchstart` events on the `ProgressControl`. - * - * @param {EventTarget~Event} event - * `mousedown` or `touchstart` event that triggered this function - * - * @listens mousedown - * @listens touchstart - */ - ; - - _proto.handleMouseDown = function handleMouseDown(event) { - var doc = this.el_.ownerDocument; - var seekBar = this.getChild('seekBar'); - - if (seekBar) { - seekBar.handleMouseDown(event); - } - - this.on(doc, 'mousemove', this.throttledHandleMouseSeek); - this.on(doc, 'touchmove', this.throttledHandleMouseSeek); - this.on(doc, 'mouseup', this.handleMouseUp); - this.on(doc, 'touchend', this.handleMouseUp); - } - /** - * Handle `mouseup` or `touchend` events on the `ProgressControl`. - * - * @param {EventTarget~Event} event - * `mouseup` or `touchend` event that triggered this function. - * - * @listens touchend - * @listens mouseup - */ - ; - - _proto.handleMouseUp = function handleMouseUp(event) { - var doc = this.el_.ownerDocument; - var seekBar = this.getChild('seekBar'); - - if (seekBar) { - seekBar.handleMouseUp(event); - } - - this.off(doc, 'mousemove', this.throttledHandleMouseSeek); - this.off(doc, 'touchmove', this.throttledHandleMouseSeek); - this.off(doc, 'mouseup', this.handleMouseUp); - this.off(doc, 'touchend', this.handleMouseUp); - }; - - return ProgressControl; -}(Component); -/** - * Default options for `ProgressControl` - * - * @type {Object} - * @private - */ - - -ProgressControl.prototype.options_ = { - children: ['seekBar'] -}; -Component.registerComponent('ProgressControl', ProgressControl); - -/** - * Toggle Picture-in-Picture mode - * - * @extends Button - */ - -var PictureInPictureToggle = /*#__PURE__*/function (_Button) { - inheritsLoose(PictureInPictureToggle, _Button); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - * - * @listens Player#enterpictureinpicture - * @listens Player#leavepictureinpicture - */ - function PictureInPictureToggle(player, options) { - var _this; - - _this = _Button.call(this, player, options) || this; - - _this.on(player, ['enterpictureinpicture', 'leavepictureinpicture'], _this.handlePictureInPictureChange); - - _this.on(player, ['disablepictureinpicturechanged', 'loadedmetadata'], _this.handlePictureInPictureEnabledChange); // TODO: Deactivate button on player emptied event. - - - _this.disable(); - - return _this; - } - /** - * Builds the default DOM `className`. - * - * @return {string} - * The DOM `className` for this object. - */ - - - var _proto = PictureInPictureToggle.prototype; - - _proto.buildCSSClass = function buildCSSClass() { - return "vjs-picture-in-picture-control " + _Button.prototype.buildCSSClass.call(this); - } - /** - * Enables or disables button based on document.pictureInPictureEnabled property value - * or on value returned by player.disablePictureInPicture() method. - */ - ; - - _proto.handlePictureInPictureEnabledChange = function handlePictureInPictureEnabledChange() { - if (document_1.pictureInPictureEnabled && this.player_.disablePictureInPicture() === false) { - this.enable(); - } else { - this.disable(); - } - } - /** - * Handles enterpictureinpicture and leavepictureinpicture on the player and change control text accordingly. - * - * @param {EventTarget~Event} [event] - * The {@link Player#enterpictureinpicture} or {@link Player#leavepictureinpicture} event that caused this function to be - * called. - * - * @listens Player#enterpictureinpicture - * @listens Player#leavepictureinpicture - */ - ; - - _proto.handlePictureInPictureChange = function handlePictureInPictureChange(event) { - if (this.player_.isInPictureInPicture()) { - this.controlText('Exit Picture-in-Picture'); - } else { - this.controlText('Picture-in-Picture'); - } - - this.handlePictureInPictureEnabledChange(); - } - /** - * This gets called when an `PictureInPictureToggle` is "clicked". See - * {@link ClickableComponent} for more detailed information on what a click can be. - * - * @param {EventTarget~Event} [event] - * The `keydown`, `tap`, or `click` event that caused this function to be - * called. - * - * @listens tap - * @listens click - */ - ; - - _proto.handleClick = function handleClick(event) { - if (!this.player_.isInPictureInPicture()) { - this.player_.requestPictureInPicture(); - } else { - this.player_.exitPictureInPicture(); - } - }; - - return PictureInPictureToggle; -}(Button); -/** - * The text that should display over the `PictureInPictureToggle`s controls. Added for localization. - * - * @type {string} - * @private - */ - - -PictureInPictureToggle.prototype.controlText_ = 'Picture-in-Picture'; -Component.registerComponent('PictureInPictureToggle', PictureInPictureToggle); - -/** - * Toggle fullscreen video - * - * @extends Button - */ - -var FullscreenToggle = /*#__PURE__*/function (_Button) { - inheritsLoose(FullscreenToggle, _Button); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - */ - function FullscreenToggle(player, options) { - var _this; - - _this = _Button.call(this, player, options) || this; - - _this.on(player, 'fullscreenchange', _this.handleFullscreenChange); - - if (document_1[player.fsApi_.fullscreenEnabled] === false) { - _this.disable(); - } - - return _this; - } - /** - * Builds the default DOM `className`. - * - * @return {string} - * The DOM `className` for this object. - */ - - - var _proto = FullscreenToggle.prototype; - - _proto.buildCSSClass = function buildCSSClass() { - return "vjs-fullscreen-control " + _Button.prototype.buildCSSClass.call(this); - } - /** - * Handles fullscreenchange on the player and change control text accordingly. - * - * @param {EventTarget~Event} [event] - * The {@link Player#fullscreenchange} event that caused this function to be - * called. - * - * @listens Player#fullscreenchange - */ - ; - - _proto.handleFullscreenChange = function handleFullscreenChange(event) { - if (this.player_.isFullscreen()) { - this.controlText('Non-Fullscreen'); - } else { - this.controlText('Fullscreen'); - } - } - /** - * This gets called when an `FullscreenToggle` is "clicked". See - * {@link ClickableComponent} for more detailed information on what a click can be. - * - * @param {EventTarget~Event} [event] - * The `keydown`, `tap`, or `click` event that caused this function to be - * called. - * - * @listens tap - * @listens click - */ - ; - - _proto.handleClick = function handleClick(event) { - if (!this.player_.isFullscreen()) { - this.player_.requestFullscreen(); - } else { - this.player_.exitFullscreen(); - } - }; - - return FullscreenToggle; -}(Button); -/** - * The text that should display over the `FullscreenToggle`s controls. Added for localization. - * - * @type {string} - * @private - */ - - -FullscreenToggle.prototype.controlText_ = 'Fullscreen'; -Component.registerComponent('FullscreenToggle', FullscreenToggle); - -/** - * Check if volume control is supported and if it isn't hide the - * `Component` that was passed using the `vjs-hidden` class. - * - * @param {Component} self - * The component that should be hidden if volume is unsupported - * - * @param {Player} player - * A reference to the player - * - * @private - */ -var checkVolumeSupport = function checkVolumeSupport(self, player) { - // hide volume controls when they're not supported by the current tech - if (player.tech_ && !player.tech_.featuresVolumeControl) { - self.addClass('vjs-hidden'); - } - - self.on(player, 'loadstart', function () { - if (!player.tech_.featuresVolumeControl) { - self.addClass('vjs-hidden'); - } else { - self.removeClass('vjs-hidden'); - } - }); -}; - -/** - * Shows volume level - * - * @extends Component - */ - -var VolumeLevel = /*#__PURE__*/function (_Component) { - inheritsLoose(VolumeLevel, _Component); - - function VolumeLevel() { - return _Component.apply(this, arguments) || this; - } - - var _proto = VolumeLevel.prototype; - - /** - * Create the `Component`'s DOM element - * - * @return {Element} - * The element that was created. - */ - _proto.createEl = function createEl() { - return _Component.prototype.createEl.call(this, 'div', { - className: 'vjs-volume-level', - innerHTML: '' - }); - }; - - return VolumeLevel; -}(Component); - -Component.registerComponent('VolumeLevel', VolumeLevel); - -/** - * The bar that contains the volume level and can be clicked on to adjust the level - * - * @extends Slider - */ - -var VolumeBar = /*#__PURE__*/function (_Slider) { - inheritsLoose(VolumeBar, _Slider); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - */ - function VolumeBar(player, options) { - var _this; - - _this = _Slider.call(this, player, options) || this; - - _this.on('slideractive', _this.updateLastVolume_); - - _this.on(player, 'volumechange', _this.updateARIAAttributes); - - player.ready(function () { - return _this.updateARIAAttributes(); - }); - return _this; - } - /** - * Create the `Component`'s DOM element - * - * @return {Element} - * The element that was created. - */ - - - var _proto = VolumeBar.prototype; - - _proto.createEl = function createEl() { - return _Slider.prototype.createEl.call(this, 'div', { - className: 'vjs-volume-bar vjs-slider-bar' - }, { - 'aria-label': this.localize('Volume Level'), - 'aria-live': 'polite' - }); - } - /** - * Handle mouse down on volume bar - * - * @param {EventTarget~Event} event - * The `mousedown` event that caused this to run. - * - * @listens mousedown - */ - ; - - _proto.handleMouseDown = function handleMouseDown(event) { - if (!isSingleLeftClick(event)) { - return; - } - - _Slider.prototype.handleMouseDown.call(this, event); - } - /** - * Handle movement events on the {@link VolumeMenuButton}. - * - * @param {EventTarget~Event} event - * The event that caused this function to run. - * - * @listens mousemove - */ - ; - - _proto.handleMouseMove = function handleMouseMove(event) { - if (!isSingleLeftClick(event)) { - return; - } - - this.checkMuted(); - this.player_.volume(this.calculateDistance(event)); - } - /** - * If the player is muted unmute it. - */ - ; - - _proto.checkMuted = function checkMuted() { - if (this.player_.muted()) { - this.player_.muted(false); - } - } - /** - * Get percent of volume level - * - * @return {number} - * Volume level percent as a decimal number. - */ - ; - - _proto.getPercent = function getPercent() { - if (this.player_.muted()) { - return 0; - } - - return this.player_.volume(); - } - /** - * Increase volume level for keyboard users - */ - ; - - _proto.stepForward = function stepForward() { - this.checkMuted(); - this.player_.volume(this.player_.volume() + 0.1); - } - /** - * Decrease volume level for keyboard users - */ - ; - - _proto.stepBack = function stepBack() { - this.checkMuted(); - this.player_.volume(this.player_.volume() - 0.1); - } - /** - * Update ARIA accessibility attributes - * - * @param {EventTarget~Event} [event] - * The `volumechange` event that caused this function to run. - * - * @listens Player#volumechange - */ - ; - - _proto.updateARIAAttributes = function updateARIAAttributes(event) { - var ariaValue = this.player_.muted() ? 0 : this.volumeAsPercentage_(); - this.el_.setAttribute('aria-valuenow', ariaValue); - this.el_.setAttribute('aria-valuetext', ariaValue + '%'); - } - /** - * Returns the current value of the player volume as a percentage - * - * @private - */ - ; - - _proto.volumeAsPercentage_ = function volumeAsPercentage_() { - return Math.round(this.player_.volume() * 100); - } - /** - * When user starts dragging the VolumeBar, store the volume and listen for - * the end of the drag. When the drag ends, if the volume was set to zero, - * set lastVolume to the stored volume. - * - * @listens slideractive - * @private - */ - ; - - _proto.updateLastVolume_ = function updateLastVolume_() { - var _this2 = this; - - var volumeBeforeDrag = this.player_.volume(); - this.one('sliderinactive', function () { - if (_this2.player_.volume() === 0) { - _this2.player_.lastVolume_(volumeBeforeDrag); - } - }); - }; - - return VolumeBar; -}(Slider); -/** - * Default options for the `VolumeBar` - * - * @type {Object} - * @private - */ - - -VolumeBar.prototype.options_ = { - children: ['volumeLevel'], - barName: 'volumeLevel' -}; -/** - * Call the update event for this Slider when this event happens on the player. - * - * @type {string} - */ - -VolumeBar.prototype.playerEvent = 'volumechange'; -Component.registerComponent('VolumeBar', VolumeBar); - -/** - * The component for controlling the volume level - * - * @extends Component - */ - -var VolumeControl = /*#__PURE__*/function (_Component) { - inheritsLoose(VolumeControl, _Component); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options={}] - * The key/value store of player options. - */ - function VolumeControl(player, options) { - var _this; - - if (options === void 0) { - options = {}; - } - - options.vertical = options.vertical || false; // Pass the vertical option down to the VolumeBar if - // the VolumeBar is turned on. - - if (typeof options.volumeBar === 'undefined' || isPlain(options.volumeBar)) { - options.volumeBar = options.volumeBar || {}; - options.volumeBar.vertical = options.vertical; - } - - _this = _Component.call(this, player, options) || this; // hide this control if volume support is missing - - checkVolumeSupport(assertThisInitialized(_this), player); - _this.throttledHandleMouseMove = throttle(bind(assertThisInitialized(_this), _this.handleMouseMove), UPDATE_REFRESH_INTERVAL); - - _this.on('mousedown', _this.handleMouseDown); - - _this.on('touchstart', _this.handleMouseDown); // while the slider is active (the mouse has been pressed down and - // is dragging) or in focus we do not want to hide the VolumeBar - - - _this.on(_this.volumeBar, ['focus', 'slideractive'], function () { - _this.volumeBar.addClass('vjs-slider-active'); - - _this.addClass('vjs-slider-active'); - - _this.trigger('slideractive'); - }); - - _this.on(_this.volumeBar, ['blur', 'sliderinactive'], function () { - _this.volumeBar.removeClass('vjs-slider-active'); - - _this.removeClass('vjs-slider-active'); - - _this.trigger('sliderinactive'); - }); - - return _this; - } - /** - * Create the `Component`'s DOM element - * - * @return {Element} - * The element that was created. - */ - - - var _proto = VolumeControl.prototype; - - _proto.createEl = function createEl() { - var orientationClass = 'vjs-volume-horizontal'; - - if (this.options_.vertical) { - orientationClass = 'vjs-volume-vertical'; - } - - return _Component.prototype.createEl.call(this, 'div', { - className: "vjs-volume-control vjs-control " + orientationClass - }); - } - /** - * Handle `mousedown` or `touchstart` events on the `VolumeControl`. - * - * @param {EventTarget~Event} event - * `mousedown` or `touchstart` event that triggered this function - * - * @listens mousedown - * @listens touchstart - */ - ; - - _proto.handleMouseDown = function handleMouseDown(event) { - var doc = this.el_.ownerDocument; - this.on(doc, 'mousemove', this.throttledHandleMouseMove); - this.on(doc, 'touchmove', this.throttledHandleMouseMove); - this.on(doc, 'mouseup', this.handleMouseUp); - this.on(doc, 'touchend', this.handleMouseUp); - } - /** - * Handle `mouseup` or `touchend` events on the `VolumeControl`. - * - * @param {EventTarget~Event} event - * `mouseup` or `touchend` event that triggered this function. - * - * @listens touchend - * @listens mouseup - */ - ; - - _proto.handleMouseUp = function handleMouseUp(event) { - var doc = this.el_.ownerDocument; - this.off(doc, 'mousemove', this.throttledHandleMouseMove); - this.off(doc, 'touchmove', this.throttledHandleMouseMove); - this.off(doc, 'mouseup', this.handleMouseUp); - this.off(doc, 'touchend', this.handleMouseUp); - } - /** - * Handle `mousedown` or `touchstart` events on the `VolumeControl`. - * - * @param {EventTarget~Event} event - * `mousedown` or `touchstart` event that triggered this function - * - * @listens mousedown - * @listens touchstart - */ - ; - - _proto.handleMouseMove = function handleMouseMove(event) { - this.volumeBar.handleMouseMove(event); - }; - - return VolumeControl; -}(Component); -/** - * Default options for the `VolumeControl` - * - * @type {Object} - * @private - */ - - -VolumeControl.prototype.options_ = { - children: ['volumeBar'] -}; -Component.registerComponent('VolumeControl', VolumeControl); - -/** - * Check if muting volume is supported and if it isn't hide the mute toggle - * button. - * - * @param {Component} self - * A reference to the mute toggle button - * - * @param {Player} player - * A reference to the player - * - * @private - */ -var checkMuteSupport = function checkMuteSupport(self, player) { - // hide mute toggle button if it's not supported by the current tech - if (player.tech_ && !player.tech_.featuresMuteControl) { - self.addClass('vjs-hidden'); - } - - self.on(player, 'loadstart', function () { - if (!player.tech_.featuresMuteControl) { - self.addClass('vjs-hidden'); - } else { - self.removeClass('vjs-hidden'); - } - }); -}; - -/** - * A button component for muting the audio. - * - * @extends Button - */ - -var MuteToggle = /*#__PURE__*/function (_Button) { - inheritsLoose(MuteToggle, _Button); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - */ - function MuteToggle(player, options) { - var _this; - - _this = _Button.call(this, player, options) || this; // hide this control if volume support is missing - - checkMuteSupport(assertThisInitialized(_this), player); - - _this.on(player, ['loadstart', 'volumechange'], _this.update); - - return _this; - } - /** - * Builds the default DOM `className`. - * - * @return {string} - * The DOM `className` for this object. - */ - - - var _proto = MuteToggle.prototype; - - _proto.buildCSSClass = function buildCSSClass() { - return "vjs-mute-control " + _Button.prototype.buildCSSClass.call(this); - } - /** - * This gets called when an `MuteToggle` is "clicked". See - * {@link ClickableComponent} for more detailed information on what a click can be. - * - * @param {EventTarget~Event} [event] - * The `keydown`, `tap`, or `click` event that caused this function to be - * called. - * - * @listens tap - * @listens click - */ - ; - - _proto.handleClick = function handleClick(event) { - var vol = this.player_.volume(); - var lastVolume = this.player_.lastVolume_(); - - if (vol === 0) { - var volumeToSet = lastVolume < 0.1 ? 0.1 : lastVolume; - this.player_.volume(volumeToSet); - this.player_.muted(false); - } else { - this.player_.muted(this.player_.muted() ? false : true); - } - } - /** - * Update the `MuteToggle` button based on the state of `volume` and `muted` - * on the player. - * - * @param {EventTarget~Event} [event] - * The {@link Player#loadstart} event if this function was called - * through an event. - * - * @listens Player#loadstart - * @listens Player#volumechange - */ - ; - - _proto.update = function update(event) { - this.updateIcon_(); - this.updateControlText_(); - } - /** - * Update the appearance of the `MuteToggle` icon. - * - * Possible states (given `level` variable below): - * - 0: crossed out - * - 1: zero bars of volume - * - 2: one bar of volume - * - 3: two bars of volume - * - * @private - */ - ; - - _proto.updateIcon_ = function updateIcon_() { - var vol = this.player_.volume(); - var level = 3; // in iOS when a player is loaded with muted attribute - // and volume is changed with a native mute button - // we want to make sure muted state is updated - - if (IS_IOS && this.player_.tech_ && this.player_.tech_.el_) { - this.player_.muted(this.player_.tech_.el_.muted); - } - - if (vol === 0 || this.player_.muted()) { - level = 0; - } else if (vol < 0.33) { - level = 1; - } else if (vol < 0.67) { - level = 2; - } // TODO improve muted icon classes - - - for (var i = 0; i < 4; i++) { - removeClass(this.el_, "vjs-vol-" + i); - } - - addClass(this.el_, "vjs-vol-" + level); - } - /** - * If `muted` has changed on the player, update the control text - * (`title` attribute on `vjs-mute-control` element and content of - * `vjs-control-text` element). - * - * @private - */ - ; - - _proto.updateControlText_ = function updateControlText_() { - var soundOff = this.player_.muted() || this.player_.volume() === 0; - var text = soundOff ? 'Unmute' : 'Mute'; - - if (this.controlText() !== text) { - this.controlText(text); - } - }; - - return MuteToggle; -}(Button); -/** - * The text that should display over the `MuteToggle`s controls. Added for localization. - * - * @type {string} - * @private - */ - - -MuteToggle.prototype.controlText_ = 'Mute'; -Component.registerComponent('MuteToggle', MuteToggle); - -/** - * A Component to contain the MuteToggle and VolumeControl so that - * they can work together. - * - * @extends Component - */ - -var VolumePanel = /*#__PURE__*/function (_Component) { - inheritsLoose(VolumePanel, _Component); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options={}] - * The key/value store of player options. - */ - function VolumePanel(player, options) { - var _this; - - if (options === void 0) { - options = {}; - } - - if (typeof options.inline !== 'undefined') { - options.inline = options.inline; - } else { - options.inline = true; - } // pass the inline option down to the VolumeControl as vertical if - // the VolumeControl is on. - - - if (typeof options.volumeControl === 'undefined' || isPlain(options.volumeControl)) { - options.volumeControl = options.volumeControl || {}; - options.volumeControl.vertical = !options.inline; - } - - _this = _Component.call(this, player, options) || this; - - _this.on(player, ['loadstart'], _this.volumePanelState_); - - _this.on(_this.muteToggle, 'keyup', _this.handleKeyPress); - - _this.on(_this.volumeControl, 'keyup', _this.handleVolumeControlKeyUp); - - _this.on('keydown', _this.handleKeyPress); - - _this.on('mouseover', _this.handleMouseOver); - - _this.on('mouseout', _this.handleMouseOut); // while the slider is active (the mouse has been pressed down and - // is dragging) we do not want to hide the VolumeBar - - - _this.on(_this.volumeControl, ['slideractive'], _this.sliderActive_); - - _this.on(_this.volumeControl, ['sliderinactive'], _this.sliderInactive_); - - return _this; - } - /** - * Add vjs-slider-active class to the VolumePanel - * - * @listens VolumeControl#slideractive - * @private - */ - - - var _proto = VolumePanel.prototype; - - _proto.sliderActive_ = function sliderActive_() { - this.addClass('vjs-slider-active'); - } - /** - * Removes vjs-slider-active class to the VolumePanel - * - * @listens VolumeControl#sliderinactive - * @private - */ - ; - - _proto.sliderInactive_ = function sliderInactive_() { - this.removeClass('vjs-slider-active'); - } - /** - * Adds vjs-hidden or vjs-mute-toggle-only to the VolumePanel - * depending on MuteToggle and VolumeControl state - * - * @listens Player#loadstart - * @private - */ - ; - - _proto.volumePanelState_ = function volumePanelState_() { - // hide volume panel if neither volume control or mute toggle - // are displayed - if (this.volumeControl.hasClass('vjs-hidden') && this.muteToggle.hasClass('vjs-hidden')) { - this.addClass('vjs-hidden'); - } // if only mute toggle is visible we don't want - // volume panel expanding when hovered or active - - - if (this.volumeControl.hasClass('vjs-hidden') && !this.muteToggle.hasClass('vjs-hidden')) { - this.addClass('vjs-mute-toggle-only'); - } - } - /** - * Create the `Component`'s DOM element - * - * @return {Element} - * The element that was created. - */ - ; - - _proto.createEl = function createEl() { - var orientationClass = 'vjs-volume-panel-horizontal'; - - if (!this.options_.inline) { - orientationClass = 'vjs-volume-panel-vertical'; - } - - return _Component.prototype.createEl.call(this, 'div', { - className: "vjs-volume-panel vjs-control " + orientationClass - }); - } - /** - * Dispose of the `volume-panel` and all child components. - */ - ; - - _proto.dispose = function dispose() { - this.handleMouseOut(); - - _Component.prototype.dispose.call(this); - } - /** - * Handles `keyup` events on the `VolumeControl`, looking for ESC, which closes - * the volume panel and sets focus on `MuteToggle`. - * - * @param {EventTarget~Event} event - * The `keyup` event that caused this function to be called. - * - * @listens keyup - */ - ; - - _proto.handleVolumeControlKeyUp = function handleVolumeControlKeyUp(event) { - if (keycode.isEventKey(event, 'Esc')) { - this.muteToggle.focus(); - } - } - /** - * This gets called when a `VolumePanel` gains hover via a `mouseover` event. - * Turns on listening for `mouseover` event. When they happen it - * calls `this.handleMouseOver`. - * - * @param {EventTarget~Event} event - * The `mouseover` event that caused this function to be called. - * - * @listens mouseover - */ - ; - - _proto.handleMouseOver = function handleMouseOver(event) { - this.addClass('vjs-hover'); - on(document_1, 'keyup', bind(this, this.handleKeyPress)); - } - /** - * This gets called when a `VolumePanel` gains hover via a `mouseout` event. - * Turns on listening for `mouseout` event. When they happen it - * calls `this.handleMouseOut`. - * - * @param {EventTarget~Event} event - * The `mouseout` event that caused this function to be called. - * - * @listens mouseout - */ - ; - - _proto.handleMouseOut = function handleMouseOut(event) { - this.removeClass('vjs-hover'); - off(document_1, 'keyup', bind(this, this.handleKeyPress)); - } - /** - * Handles `keyup` event on the document or `keydown` event on the `VolumePanel`, - * looking for ESC, which hides the `VolumeControl`. - * - * @param {EventTarget~Event} event - * The keypress that triggered this event. - * - * @listens keydown | keyup - */ - ; - - _proto.handleKeyPress = function handleKeyPress(event) { - if (keycode.isEventKey(event, 'Esc')) { - this.handleMouseOut(); - } - }; - - return VolumePanel; -}(Component); -/** - * Default options for the `VolumeControl` - * - * @type {Object} - * @private - */ - - -VolumePanel.prototype.options_ = { - children: ['muteToggle', 'volumeControl'] -}; -Component.registerComponent('VolumePanel', VolumePanel); - -/** - * The Menu component is used to build popup menus, including subtitle and - * captions selection menus. - * - * @extends Component - */ - -var Menu = /*#__PURE__*/function (_Component) { - inheritsLoose(Menu, _Component); - - /** - * Create an instance of this class. - * - * @param {Player} player - * the player that this component should attach to - * - * @param {Object} [options] - * Object of option names and values - * - */ - function Menu(player, options) { - var _this; - - _this = _Component.call(this, player, options) || this; - - if (options) { - _this.menuButton_ = options.menuButton; - } - - _this.focusedChild_ = -1; - - _this.on('keydown', _this.handleKeyDown); // All the menu item instances share the same blur handler provided by the menu container. - - - _this.boundHandleBlur_ = bind(assertThisInitialized(_this), _this.handleBlur); - _this.boundHandleTapClick_ = bind(assertThisInitialized(_this), _this.handleTapClick); - return _this; - } - /** - * Add event listeners to the {@link MenuItem}. - * - * @param {Object} component - * The instance of the `MenuItem` to add listeners to. - * - */ - - - var _proto = Menu.prototype; - - _proto.addEventListenerForItem = function addEventListenerForItem(component) { - if (!(component instanceof Component)) { - return; - } - - this.on(component, 'blur', this.boundHandleBlur_); - this.on(component, ['tap', 'click'], this.boundHandleTapClick_); - } - /** - * Remove event listeners from the {@link MenuItem}. - * - * @param {Object} component - * The instance of the `MenuItem` to remove listeners. - * - */ - ; - - _proto.removeEventListenerForItem = function removeEventListenerForItem(component) { - if (!(component instanceof Component)) { - return; - } - - this.off(component, 'blur', this.boundHandleBlur_); - this.off(component, ['tap', 'click'], this.boundHandleTapClick_); - } - /** - * This method will be called indirectly when the component has been added - * before the component adds to the new menu instance by `addItem`. - * In this case, the original menu instance will remove the component - * by calling `removeChild`. - * - * @param {Object} component - * The instance of the `MenuItem` - */ - ; - - _proto.removeChild = function removeChild(component) { - if (typeof component === 'string') { - component = this.getChild(component); - } - - this.removeEventListenerForItem(component); - - _Component.prototype.removeChild.call(this, component); - } - /** - * Add a {@link MenuItem} to the menu. - * - * @param {Object|string} component - * The name or instance of the `MenuItem` to add. - * - */ - ; - - _proto.addItem = function addItem(component) { - var childComponent = this.addChild(component); - - if (childComponent) { - this.addEventListenerForItem(childComponent); - } - } - /** - * Create the `Menu`s DOM element. - * - * @return {Element} - * the element that was created - */ - ; - - _proto.createEl = function createEl$1() { - var contentElType = this.options_.contentElType || 'ul'; - this.contentEl_ = createEl(contentElType, { - className: 'vjs-menu-content' - }); - this.contentEl_.setAttribute('role', 'menu'); - - var el = _Component.prototype.createEl.call(this, 'div', { - append: this.contentEl_, - className: 'vjs-menu' - }); - - el.appendChild(this.contentEl_); // Prevent clicks from bubbling up. Needed for Menu Buttons, - // where a click on the parent is significant - - on(el, 'click', function (event) { - event.preventDefault(); - event.stopImmediatePropagation(); - }); - return el; - }; - - _proto.dispose = function dispose() { - this.contentEl_ = null; - this.boundHandleBlur_ = null; - this.boundHandleTapClick_ = null; - - _Component.prototype.dispose.call(this); - } - /** - * Called when a `MenuItem` loses focus. - * - * @param {EventTarget~Event} event - * The `blur` event that caused this function to be called. - * - * @listens blur - */ - ; - - _proto.handleBlur = function handleBlur(event) { - var relatedTarget = event.relatedTarget || document_1.activeElement; // Close menu popup when a user clicks outside the menu - - if (!this.children().some(function (element) { - return element.el() === relatedTarget; - })) { - var btn = this.menuButton_; - - if (btn && btn.buttonPressed_ && relatedTarget !== btn.el().firstChild) { - btn.unpressButton(); - } - } - } - /** - * Called when a `MenuItem` gets clicked or tapped. - * - * @param {EventTarget~Event} event - * The `click` or `tap` event that caused this function to be called. - * - * @listens click,tap - */ - ; - - _proto.handleTapClick = function handleTapClick(event) { - // Unpress the associated MenuButton, and move focus back to it - if (this.menuButton_) { - this.menuButton_.unpressButton(); - var childComponents = this.children(); - - if (!Array.isArray(childComponents)) { - return; - } - - var foundComponent = childComponents.filter(function (component) { - return component.el() === event.target; - })[0]; - - if (!foundComponent) { - return; - } // don't focus menu button if item is a caption settings item - // because focus will move elsewhere - - - if (foundComponent.name() !== 'CaptionSettingsMenuItem') { - this.menuButton_.focus(); - } - } - } - /** - * Handle a `keydown` event on this menu. This listener is added in the constructor. - * - * @param {EventTarget~Event} event - * A `keydown` event that happened on the menu. - * - * @listens keydown - */ - ; - - _proto.handleKeyDown = function handleKeyDown(event) { - // Left and Down Arrows - if (keycode.isEventKey(event, 'Left') || keycode.isEventKey(event, 'Down')) { - event.preventDefault(); - event.stopPropagation(); - this.stepForward(); // Up and Right Arrows - } else if (keycode.isEventKey(event, 'Right') || keycode.isEventKey(event, 'Up')) { - event.preventDefault(); - event.stopPropagation(); - this.stepBack(); - } - } - /** - * Move to next (lower) menu item for keyboard users. - */ - ; - - _proto.stepForward = function stepForward() { - var stepChild = 0; - - if (this.focusedChild_ !== undefined) { - stepChild = this.focusedChild_ + 1; - } - - this.focus(stepChild); - } - /** - * Move to previous (higher) menu item for keyboard users. - */ - ; - - _proto.stepBack = function stepBack() { - var stepChild = 0; - - if (this.focusedChild_ !== undefined) { - stepChild = this.focusedChild_ - 1; - } - - this.focus(stepChild); - } - /** - * Set focus on a {@link MenuItem} in the `Menu`. - * - * @param {Object|string} [item=0] - * Index of child item set focus on. - */ - ; - - _proto.focus = function focus(item) { - if (item === void 0) { - item = 0; - } - - var children = this.children().slice(); - var haveTitle = children.length && children[0].className && /vjs-menu-title/.test(children[0].className); - - if (haveTitle) { - children.shift(); - } - - if (children.length > 0) { - if (item < 0) { - item = 0; - } else if (item >= children.length) { - item = children.length - 1; - } - - this.focusedChild_ = item; - children[item].el_.focus(); - } - }; - - return Menu; -}(Component); - -Component.registerComponent('Menu', Menu); - -/** - * A `MenuButton` class for any popup {@link Menu}. - * - * @extends Component - */ - -var MenuButton = /*#__PURE__*/function (_Component) { - inheritsLoose(MenuButton, _Component); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options={}] - * The key/value store of player options. - */ - function MenuButton(player, options) { - var _this; - - if (options === void 0) { - options = {}; - } - - _this = _Component.call(this, player, options) || this; - _this.menuButton_ = new Button(player, options); - - _this.menuButton_.controlText(_this.controlText_); - - _this.menuButton_.el_.setAttribute('aria-haspopup', 'true'); // Add buildCSSClass values to the button, not the wrapper - - - var buttonClass = Button.prototype.buildCSSClass(); - _this.menuButton_.el_.className = _this.buildCSSClass() + ' ' + buttonClass; - - _this.menuButton_.removeClass('vjs-control'); - - _this.addChild(_this.menuButton_); - - _this.update(); - - _this.enabled_ = true; - - _this.on(_this.menuButton_, 'tap', _this.handleClick); - - _this.on(_this.menuButton_, 'click', _this.handleClick); - - _this.on(_this.menuButton_, 'keydown', _this.handleKeyDown); - - _this.on(_this.menuButton_, 'mouseenter', function () { - _this.addClass('vjs-hover'); - - _this.menu.show(); - - on(document_1, 'keyup', bind(assertThisInitialized(_this), _this.handleMenuKeyUp)); - }); - - _this.on('mouseleave', _this.handleMouseLeave); - - _this.on('keydown', _this.handleSubmenuKeyDown); - - return _this; - } - /** - * Update the menu based on the current state of its items. - */ - - - var _proto = MenuButton.prototype; - - _proto.update = function update() { - var menu = this.createMenu(); - - if (this.menu) { - this.menu.dispose(); - this.removeChild(this.menu); - } - - this.menu = menu; - this.addChild(menu); - /** - * Track the state of the menu button - * - * @type {Boolean} - * @private - */ - - this.buttonPressed_ = false; - this.menuButton_.el_.setAttribute('aria-expanded', 'false'); - - if (this.items && this.items.length <= this.hideThreshold_) { - this.hide(); - } else { - this.show(); - } - } - /** - * Create the menu and add all items to it. - * - * @return {Menu} - * The constructed menu - */ - ; - - _proto.createMenu = function createMenu() { - var menu = new Menu(this.player_, { - menuButton: this - }); - /** - * Hide the menu if the number of items is less than or equal to this threshold. This defaults - * to 0 and whenever we add items which can be hidden to the menu we'll increment it. We list - * it here because every time we run `createMenu` we need to reset the value. - * - * @protected - * @type {Number} - */ - - this.hideThreshold_ = 0; // Add a title list item to the top - - if (this.options_.title) { - var titleEl = createEl('li', { - className: 'vjs-menu-title', - innerHTML: toTitleCase(this.options_.title), - tabIndex: -1 - }); - this.hideThreshold_ += 1; - var titleComponent = new Component(this.player_, { - el: titleEl - }); - menu.addItem(titleComponent); - } - - this.items = this.createItems(); - - if (this.items) { - // Add menu items to the menu - for (var i = 0; i < this.items.length; i++) { - menu.addItem(this.items[i]); - } - } - - return menu; - } - /** - * Create the list of menu items. Specific to each subclass. - * - * @abstract - */ - ; - - _proto.createItems = function createItems() {} - /** - * Create the `MenuButtons`s DOM element. - * - * @return {Element} - * The element that gets created. - */ - ; - - _proto.createEl = function createEl() { - return _Component.prototype.createEl.call(this, 'div', { - className: this.buildWrapperCSSClass() - }, {}); - } - /** - * Allow sub components to stack CSS class names for the wrapper element - * - * @return {string} - * The constructed wrapper DOM `className` - */ - ; - - _proto.buildWrapperCSSClass = function buildWrapperCSSClass() { - var menuButtonClass = 'vjs-menu-button'; // If the inline option is passed, we want to use different styles altogether. - - if (this.options_.inline === true) { - menuButtonClass += '-inline'; - } else { - menuButtonClass += '-popup'; - } // TODO: Fix the CSS so that this isn't necessary - - - var buttonClass = Button.prototype.buildCSSClass(); - return "vjs-menu-button " + menuButtonClass + " " + buttonClass + " " + _Component.prototype.buildCSSClass.call(this); - } - /** - * Builds the default DOM `className`. - * - * @return {string} - * The DOM `className` for this object. - */ - ; - - _proto.buildCSSClass = function buildCSSClass() { - var menuButtonClass = 'vjs-menu-button'; // If the inline option is passed, we want to use different styles altogether. - - if (this.options_.inline === true) { - menuButtonClass += '-inline'; - } else { - menuButtonClass += '-popup'; - } - - return "vjs-menu-button " + menuButtonClass + " " + _Component.prototype.buildCSSClass.call(this); - } - /** - * Get or set the localized control text that will be used for accessibility. - * - * > NOTE: This will come from the internal `menuButton_` element. - * - * @param {string} [text] - * Control text for element. - * - * @param {Element} [el=this.menuButton_.el()] - * Element to set the title on. - * - * @return {string} - * - The control text when getting - */ - ; - - _proto.controlText = function controlText(text, el) { - if (el === void 0) { - el = this.menuButton_.el(); - } - - return this.menuButton_.controlText(text, el); - } - /** - * Dispose of the `menu-button` and all child components. - */ - ; - - _proto.dispose = function dispose() { - this.handleMouseLeave(); - - _Component.prototype.dispose.call(this); - } - /** - * Handle a click on a `MenuButton`. - * See {@link ClickableComponent#handleClick} for instances where this is called. - * - * @param {EventTarget~Event} event - * The `keydown`, `tap`, or `click` event that caused this function to be - * called. - * - * @listens tap - * @listens click - */ - ; - - _proto.handleClick = function handleClick(event) { - if (this.buttonPressed_) { - this.unpressButton(); - } else { - this.pressButton(); - } - } - /** - * Handle `mouseleave` for `MenuButton`. - * - * @param {EventTarget~Event} event - * The `mouseleave` event that caused this function to be called. - * - * @listens mouseleave - */ - ; - - _proto.handleMouseLeave = function handleMouseLeave(event) { - this.removeClass('vjs-hover'); - off(document_1, 'keyup', bind(this, this.handleMenuKeyUp)); - } - /** - * Set the focus to the actual button, not to this element - */ - ; - - _proto.focus = function focus() { - this.menuButton_.focus(); - } - /** - * Remove the focus from the actual button, not this element - */ - ; - - _proto.blur = function blur() { - this.menuButton_.blur(); - } - /** - * Handle tab, escape, down arrow, and up arrow keys for `MenuButton`. See - * {@link ClickableComponent#handleKeyDown} for instances where this is called. - * - * @param {EventTarget~Event} event - * The `keydown` event that caused this function to be called. - * - * @listens keydown - */ - ; - - _proto.handleKeyDown = function handleKeyDown(event) { - // Escape or Tab unpress the 'button' - if (keycode.isEventKey(event, 'Esc') || keycode.isEventKey(event, 'Tab')) { - if (this.buttonPressed_) { - this.unpressButton(); - } // Don't preventDefault for Tab key - we still want to lose focus - - - if (!keycode.isEventKey(event, 'Tab')) { - event.preventDefault(); // Set focus back to the menu button's button - - this.menuButton_.focus(); - } // Up Arrow or Down Arrow also 'press' the button to open the menu - - } else if (keycode.isEventKey(event, 'Up') || keycode.isEventKey(event, 'Down')) { - if (!this.buttonPressed_) { - event.preventDefault(); - this.pressButton(); - } - } - } - /** - * Handle a `keyup` event on a `MenuButton`. The listener for this is added in - * the constructor. - * - * @param {EventTarget~Event} event - * Key press event - * - * @listens keyup - */ - ; - - _proto.handleMenuKeyUp = function handleMenuKeyUp(event) { - // Escape hides popup menu - if (keycode.isEventKey(event, 'Esc') || keycode.isEventKey(event, 'Tab')) { - this.removeClass('vjs-hover'); - } - } - /** - * This method name now delegates to `handleSubmenuKeyDown`. This means - * anyone calling `handleSubmenuKeyPress` will not see their method calls - * stop working. - * - * @param {EventTarget~Event} event - * The event that caused this function to be called. - */ - ; - - _proto.handleSubmenuKeyPress = function handleSubmenuKeyPress(event) { - this.handleSubmenuKeyDown(event); - } - /** - * Handle a `keydown` event on a sub-menu. The listener for this is added in - * the constructor. - * - * @param {EventTarget~Event} event - * Key press event - * - * @listens keydown - */ - ; - - _proto.handleSubmenuKeyDown = function handleSubmenuKeyDown(event) { - // Escape or Tab unpress the 'button' - if (keycode.isEventKey(event, 'Esc') || keycode.isEventKey(event, 'Tab')) { - if (this.buttonPressed_) { - this.unpressButton(); - } // Don't preventDefault for Tab key - we still want to lose focus - - - if (!keycode.isEventKey(event, 'Tab')) { - event.preventDefault(); // Set focus back to the menu button's button - - this.menuButton_.focus(); - } - } - } - /** - * Put the current `MenuButton` into a pressed state. - */ - ; - - _proto.pressButton = function pressButton() { - if (this.enabled_) { - this.buttonPressed_ = true; - this.menu.show(); - this.menu.lockShowing(); - this.menuButton_.el_.setAttribute('aria-expanded', 'true'); // set the focus into the submenu, except on iOS where it is resulting in - // undesired scrolling behavior when the player is in an iframe - - if (IS_IOS && isInFrame()) { - // Return early so that the menu isn't focused - return; - } - - this.menu.focus(); - } - } - /** - * Take the current `MenuButton` out of a pressed state. - */ - ; - - _proto.unpressButton = function unpressButton() { - if (this.enabled_) { - this.buttonPressed_ = false; - this.menu.unlockShowing(); - this.menu.hide(); - this.menuButton_.el_.setAttribute('aria-expanded', 'false'); - } - } - /** - * Disable the `MenuButton`. Don't allow it to be clicked. - */ - ; - - _proto.disable = function disable() { - this.unpressButton(); - this.enabled_ = false; - this.addClass('vjs-disabled'); - this.menuButton_.disable(); - } - /** - * Enable the `MenuButton`. Allow it to be clicked. - */ - ; - - _proto.enable = function enable() { - this.enabled_ = true; - this.removeClass('vjs-disabled'); - this.menuButton_.enable(); - }; - - return MenuButton; -}(Component); - -Component.registerComponent('MenuButton', MenuButton); - -/** - * The base class for buttons that toggle specific track types (e.g. subtitles). - * - * @extends MenuButton - */ - -var TrackButton = /*#__PURE__*/function (_MenuButton) { - inheritsLoose(TrackButton, _MenuButton); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - */ - function TrackButton(player, options) { - var _this; - - var tracks = options.tracks; - _this = _MenuButton.call(this, player, options) || this; - - if (_this.items.length <= 1) { - _this.hide(); - } - - if (!tracks) { - return assertThisInitialized(_this); - } - - var updateHandler = bind(assertThisInitialized(_this), _this.update); - tracks.addEventListener('removetrack', updateHandler); - tracks.addEventListener('addtrack', updateHandler); - - _this.player_.on('ready', updateHandler); - - _this.player_.on('dispose', function () { - tracks.removeEventListener('removetrack', updateHandler); - tracks.removeEventListener('addtrack', updateHandler); - }); - - return _this; - } - - return TrackButton; -}(MenuButton); - -Component.registerComponent('TrackButton', TrackButton); - -/** - * @file menu-keys.js - */ - -/** - * All keys used for operation of a menu (`MenuButton`, `Menu`, and `MenuItem`) - * Note that 'Enter' and 'Space' are not included here (otherwise they would - * prevent the `MenuButton` and `MenuItem` from being keyboard-clickable) - * @typedef MenuKeys - * @array - */ -var MenuKeys = ['Tab', 'Esc', 'Up', 'Down', 'Right', 'Left']; - -/** - * The component for a menu item. `
  • ` - * - * @extends ClickableComponent - */ - -var MenuItem = /*#__PURE__*/function (_ClickableComponent) { - inheritsLoose(MenuItem, _ClickableComponent); - - /** - * Creates an instance of the this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options={}] - * The key/value store of player options. - * - */ - function MenuItem(player, options) { - var _this; - - _this = _ClickableComponent.call(this, player, options) || this; - _this.selectable = options.selectable; - _this.isSelected_ = options.selected || false; - _this.multiSelectable = options.multiSelectable; - - _this.selected(_this.isSelected_); - - if (_this.selectable) { - if (_this.multiSelectable) { - _this.el_.setAttribute('role', 'menuitemcheckbox'); - } else { - _this.el_.setAttribute('role', 'menuitemradio'); - } - } else { - _this.el_.setAttribute('role', 'menuitem'); - } - - return _this; - } - /** - * Create the `MenuItem's DOM element - * - * @param {string} [type=li] - * Element's node type, not actually used, always set to `li`. - * - * @param {Object} [props={}] - * An object of properties that should be set on the element - * - * @param {Object} [attrs={}] - * An object of attributes that should be set on the element - * - * @return {Element} - * The element that gets created. - */ - - - var _proto = MenuItem.prototype; - - _proto.createEl = function createEl(type, props, attrs) { - // The control is textual, not just an icon - this.nonIconControl = true; - return _ClickableComponent.prototype.createEl.call(this, 'li', assign({ - className: 'vjs-menu-item', - innerHTML: "" + this.localize(this.options_.label) + "", - tabIndex: -1 - }, props), attrs); - } - /** - * Ignore keys which are used by the menu, but pass any other ones up. See - * {@link ClickableComponent#handleKeyDown} for instances where this is called. - * - * @param {EventTarget~Event} event - * The `keydown` event that caused this function to be called. - * - * @listens keydown - */ - ; - - _proto.handleKeyDown = function handleKeyDown(event) { - if (!MenuKeys.some(function (key) { - return keycode.isEventKey(event, key); - })) { - // Pass keydown handling up for unused keys - _ClickableComponent.prototype.handleKeyDown.call(this, event); - } - } - /** - * Any click on a `MenuItem` puts it into the selected state. - * See {@link ClickableComponent#handleClick} for instances where this is called. - * - * @param {EventTarget~Event} event - * The `keydown`, `tap`, or `click` event that caused this function to be - * called. - * - * @listens tap - * @listens click - */ - ; - - _proto.handleClick = function handleClick(event) { - this.selected(true); - } - /** - * Set the state for this menu item as selected or not. - * - * @param {boolean} selected - * if the menu item is selected or not - */ - ; - - _proto.selected = function selected(_selected) { - if (this.selectable) { - if (_selected) { - this.addClass('vjs-selected'); - this.el_.setAttribute('aria-checked', 'true'); // aria-checked isn't fully supported by browsers/screen readers, - // so indicate selected state to screen reader in the control text. - - this.controlText(', selected'); - this.isSelected_ = true; - } else { - this.removeClass('vjs-selected'); - this.el_.setAttribute('aria-checked', 'false'); // Indicate un-selected state to screen reader - - this.controlText(''); - this.isSelected_ = false; - } - } - }; - - return MenuItem; -}(ClickableComponent); - -Component.registerComponent('MenuItem', MenuItem); - -/** - * The specific menu item type for selecting a language within a text track kind - * - * @extends MenuItem - */ - -var TextTrackMenuItem = /*#__PURE__*/function (_MenuItem) { - inheritsLoose(TextTrackMenuItem, _MenuItem); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - */ - function TextTrackMenuItem(player, options) { - var _this; - - var track = options.track; - var tracks = player.textTracks(); // Modify options for parent MenuItem class's init. - - options.label = track.label || track.language || 'Unknown'; - options.selected = track.mode === 'showing'; - _this = _MenuItem.call(this, player, options) || this; - _this.track = track; // Determine the relevant kind(s) of tracks for this component and filter - // out empty kinds. - - _this.kinds = (options.kinds || [options.kind || _this.track.kind]).filter(Boolean); - - var changeHandler = function changeHandler() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - _this.handleTracksChange.apply(assertThisInitialized(_this), args); - }; - - var selectedLanguageChangeHandler = function selectedLanguageChangeHandler() { - for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - _this.handleSelectedLanguageChange.apply(assertThisInitialized(_this), args); - }; - - player.on(['loadstart', 'texttrackchange'], changeHandler); - tracks.addEventListener('change', changeHandler); - tracks.addEventListener('selectedlanguagechange', selectedLanguageChangeHandler); - - _this.on('dispose', function () { - player.off(['loadstart', 'texttrackchange'], changeHandler); - tracks.removeEventListener('change', changeHandler); - tracks.removeEventListener('selectedlanguagechange', selectedLanguageChangeHandler); - }); // iOS7 doesn't dispatch change events to TextTrackLists when an - // associated track's mode changes. Without something like - // Object.observe() (also not present on iOS7), it's not - // possible to detect changes to the mode attribute and polyfill - // the change event. As a poor substitute, we manually dispatch - // change events whenever the controls modify the mode. - - - if (tracks.onchange === undefined) { - var event; - - _this.on(['tap', 'click'], function () { - if (typeof window_1$1.Event !== 'object') { - // Android 2.3 throws an Illegal Constructor error for window.Event - try { - event = new window_1$1.Event('change'); - } catch (err) {// continue regardless of error - } - } - - if (!event) { - event = document_1.createEvent('Event'); - event.initEvent('change', true, true); - } - - tracks.dispatchEvent(event); - }); - } // set the default state based on current tracks - - - _this.handleTracksChange(); - - return _this; - } - /** - * This gets called when an `TextTrackMenuItem` is "clicked". See - * {@link ClickableComponent} for more detailed information on what a click can be. - * - * @param {EventTarget~Event} event - * The `keydown`, `tap`, or `click` event that caused this function to be - * called. - * - * @listens tap - * @listens click - */ - - - var _proto = TextTrackMenuItem.prototype; - - _proto.handleClick = function handleClick(event) { - var referenceTrack = this.track; - var tracks = this.player_.textTracks(); - - _MenuItem.prototype.handleClick.call(this, event); - - if (!tracks) { - return; - } - - for (var i = 0; i < tracks.length; i++) { - var track = tracks[i]; // If the track from the text tracks list is not of the right kind, - // skip it. We do not want to affect tracks of incompatible kind(s). - - if (this.kinds.indexOf(track.kind) === -1) { - continue; - } // If this text track is the component's track and it is not showing, - // set it to showing. - - - if (track === referenceTrack) { - if (track.mode !== 'showing') { - track.mode = 'showing'; - } // If this text track is not the component's track and it is not - // disabled, set it to disabled. - - } else if (track.mode !== 'disabled') { - track.mode = 'disabled'; - } - } - } - /** - * Handle text track list change - * - * @param {EventTarget~Event} event - * The `change` event that caused this function to be called. - * - * @listens TextTrackList#change - */ - ; - - _proto.handleTracksChange = function handleTracksChange(event) { - var shouldBeSelected = this.track.mode === 'showing'; // Prevent redundant selected() calls because they may cause - // screen readers to read the appended control text unnecessarily - - if (shouldBeSelected !== this.isSelected_) { - this.selected(shouldBeSelected); - } - }; - - _proto.handleSelectedLanguageChange = function handleSelectedLanguageChange(event) { - if (this.track.mode === 'showing') { - var selectedLanguage = this.player_.cache_.selectedLanguage; // Don't replace the kind of track across the same language - - if (selectedLanguage && selectedLanguage.enabled && selectedLanguage.language === this.track.language && selectedLanguage.kind !== this.track.kind) { - return; - } - - this.player_.cache_.selectedLanguage = { - enabled: true, - language: this.track.language, - kind: this.track.kind - }; - } - }; - - _proto.dispose = function dispose() { - // remove reference to track object on dispose - this.track = null; - - _MenuItem.prototype.dispose.call(this); - }; - - return TextTrackMenuItem; -}(MenuItem); - -Component.registerComponent('TextTrackMenuItem', TextTrackMenuItem); - -/** - * A special menu item for turning of a specific type of text track - * - * @extends TextTrackMenuItem - */ - -var OffTextTrackMenuItem = /*#__PURE__*/function (_TextTrackMenuItem) { - inheritsLoose(OffTextTrackMenuItem, _TextTrackMenuItem); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - */ - function OffTextTrackMenuItem(player, options) { - // Create pseudo track info - // Requires options['kind'] - options.track = { - player: player, - // it is no longer necessary to store `kind` or `kinds` on the track itself - // since they are now stored in the `kinds` property of all instances of - // TextTrackMenuItem, but this will remain for backwards compatibility - kind: options.kind, - kinds: options.kinds, - "default": false, - mode: 'disabled' - }; - - if (!options.kinds) { - options.kinds = [options.kind]; - } - - if (options.label) { - options.track.label = options.label; - } else { - options.track.label = options.kinds.join(' and ') + ' off'; - } // MenuItem is selectable - - - options.selectable = true; // MenuItem is NOT multiSelectable (i.e. only one can be marked "selected" at a time) - - options.multiSelectable = false; - return _TextTrackMenuItem.call(this, player, options) || this; - } - /** - * Handle text track change - * - * @param {EventTarget~Event} event - * The event that caused this function to run - */ - - - var _proto = OffTextTrackMenuItem.prototype; - - _proto.handleTracksChange = function handleTracksChange(event) { - var tracks = this.player().textTracks(); - var shouldBeSelected = true; - - for (var i = 0, l = tracks.length; i < l; i++) { - var track = tracks[i]; - - if (this.options_.kinds.indexOf(track.kind) > -1 && track.mode === 'showing') { - shouldBeSelected = false; - break; - } - } // Prevent redundant selected() calls because they may cause - // screen readers to read the appended control text unnecessarily - - - if (shouldBeSelected !== this.isSelected_) { - this.selected(shouldBeSelected); - } - }; - - _proto.handleSelectedLanguageChange = function handleSelectedLanguageChange(event) { - var tracks = this.player().textTracks(); - var allHidden = true; - - for (var i = 0, l = tracks.length; i < l; i++) { - var track = tracks[i]; - - if (['captions', 'descriptions', 'subtitles'].indexOf(track.kind) > -1 && track.mode === 'showing') { - allHidden = false; - break; - } - } - - if (allHidden) { - this.player_.cache_.selectedLanguage = { - enabled: false - }; - } - }; - - return OffTextTrackMenuItem; -}(TextTrackMenuItem); - -Component.registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem); - -/** - * The base class for buttons that toggle specific text track types (e.g. subtitles) - * - * @extends MenuButton - */ - -var TextTrackButton = /*#__PURE__*/function (_TrackButton) { - inheritsLoose(TextTrackButton, _TrackButton); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options={}] - * The key/value store of player options. - */ - function TextTrackButton(player, options) { - if (options === void 0) { - options = {}; - } - - options.tracks = player.textTracks(); - return _TrackButton.call(this, player, options) || this; - } - /** - * Create a menu item for each text track - * - * @param {TextTrackMenuItem[]} [items=[]] - * Existing array of items to use during creation - * - * @return {TextTrackMenuItem[]} - * Array of menu items that were created - */ - - - var _proto = TextTrackButton.prototype; - - _proto.createItems = function createItems(items, TrackMenuItem) { - if (items === void 0) { - items = []; - } - - if (TrackMenuItem === void 0) { - TrackMenuItem = TextTrackMenuItem; - } - - // Label is an override for the [track] off label - // USed to localise captions/subtitles - var label; - - if (this.label_) { - label = this.label_ + " off"; - } // Add an OFF menu item to turn all tracks off - - - items.push(new OffTextTrackMenuItem(this.player_, { - kinds: this.kinds_, - kind: this.kind_, - label: label - })); - this.hideThreshold_ += 1; - var tracks = this.player_.textTracks(); - - if (!Array.isArray(this.kinds_)) { - this.kinds_ = [this.kind_]; - } - - for (var i = 0; i < tracks.length; i++) { - var track = tracks[i]; // only add tracks that are of an appropriate kind and have a label - - if (this.kinds_.indexOf(track.kind) > -1) { - var item = new TrackMenuItem(this.player_, { - track: track, - kinds: this.kinds_, - kind: this.kind_, - // MenuItem is selectable - selectable: true, - // MenuItem is NOT multiSelectable (i.e. only one can be marked "selected" at a time) - multiSelectable: false - }); - item.addClass("vjs-" + track.kind + "-menu-item"); - items.push(item); - } - } - - return items; - }; - - return TextTrackButton; -}(TrackButton); - -Component.registerComponent('TextTrackButton', TextTrackButton); - -/** - * The chapter track menu item - * - * @extends MenuItem - */ - -var ChaptersTrackMenuItem = /*#__PURE__*/function (_MenuItem) { - inheritsLoose(ChaptersTrackMenuItem, _MenuItem); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - */ - function ChaptersTrackMenuItem(player, options) { - var _this; - - var track = options.track; - var cue = options.cue; - var currentTime = player.currentTime(); // Modify options for parent MenuItem class's init. - - options.selectable = true; - options.multiSelectable = false; - options.label = cue.text; - options.selected = cue.startTime <= currentTime && currentTime < cue.endTime; - _this = _MenuItem.call(this, player, options) || this; - _this.track = track; - _this.cue = cue; - track.addEventListener('cuechange', bind(assertThisInitialized(_this), _this.update)); - return _this; - } - /** - * This gets called when an `ChaptersTrackMenuItem` is "clicked". See - * {@link ClickableComponent} for more detailed information on what a click can be. - * - * @param {EventTarget~Event} [event] - * The `keydown`, `tap`, or `click` event that caused this function to be - * called. - * - * @listens tap - * @listens click - */ - - - var _proto = ChaptersTrackMenuItem.prototype; - - _proto.handleClick = function handleClick(event) { - _MenuItem.prototype.handleClick.call(this); - - this.player_.currentTime(this.cue.startTime); - this.update(this.cue.startTime); - } - /** - * Update chapter menu item - * - * @param {EventTarget~Event} [event] - * The `cuechange` event that caused this function to run. - * - * @listens TextTrack#cuechange - */ - ; - - _proto.update = function update(event) { - var cue = this.cue; - var currentTime = this.player_.currentTime(); // vjs.log(currentTime, cue.startTime); - - this.selected(cue.startTime <= currentTime && currentTime < cue.endTime); - }; - - return ChaptersTrackMenuItem; -}(MenuItem); - -Component.registerComponent('ChaptersTrackMenuItem', ChaptersTrackMenuItem); - -/** - * The button component for toggling and selecting chapters - * Chapters act much differently than other text tracks - * Cues are navigation vs. other tracks of alternative languages - * - * @extends TextTrackButton - */ - -var ChaptersButton = /*#__PURE__*/function (_TextTrackButton) { - inheritsLoose(ChaptersButton, _TextTrackButton); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - * - * @param {Component~ReadyCallback} [ready] - * The function to call when this function is ready. - */ - function ChaptersButton(player, options, ready) { - return _TextTrackButton.call(this, player, options, ready) || this; - } - /** - * Builds the default DOM `className`. - * - * @return {string} - * The DOM `className` for this object. - */ - - - var _proto = ChaptersButton.prototype; - - _proto.buildCSSClass = function buildCSSClass() { - return "vjs-chapters-button " + _TextTrackButton.prototype.buildCSSClass.call(this); - }; - - _proto.buildWrapperCSSClass = function buildWrapperCSSClass() { - return "vjs-chapters-button " + _TextTrackButton.prototype.buildWrapperCSSClass.call(this); - } - /** - * Update the menu based on the current state of its items. - * - * @param {EventTarget~Event} [event] - * An event that triggered this function to run. - * - * @listens TextTrackList#addtrack - * @listens TextTrackList#removetrack - * @listens TextTrackList#change - */ - ; - - _proto.update = function update(event) { - if (!this.track_ || event && (event.type === 'addtrack' || event.type === 'removetrack')) { - this.setTrack(this.findChaptersTrack()); - } - - _TextTrackButton.prototype.update.call(this); - } - /** - * Set the currently selected track for the chapters button. - * - * @param {TextTrack} track - * The new track to select. Nothing will change if this is the currently selected - * track. - */ - ; - - _proto.setTrack = function setTrack(track) { - if (this.track_ === track) { - return; - } - - if (!this.updateHandler_) { - this.updateHandler_ = this.update.bind(this); - } // here this.track_ refers to the old track instance - - - if (this.track_) { - var remoteTextTrackEl = this.player_.remoteTextTrackEls().getTrackElementByTrack_(this.track_); - - if (remoteTextTrackEl) { - remoteTextTrackEl.removeEventListener('load', this.updateHandler_); - } - - this.track_ = null; - } - - this.track_ = track; // here this.track_ refers to the new track instance - - if (this.track_) { - this.track_.mode = 'hidden'; - - var _remoteTextTrackEl = this.player_.remoteTextTrackEls().getTrackElementByTrack_(this.track_); - - if (_remoteTextTrackEl) { - _remoteTextTrackEl.addEventListener('load', this.updateHandler_); - } - } - } - /** - * Find the track object that is currently in use by this ChaptersButton - * - * @return {TextTrack|undefined} - * The current track or undefined if none was found. - */ - ; - - _proto.findChaptersTrack = function findChaptersTrack() { - var tracks = this.player_.textTracks() || []; - - for (var i = tracks.length - 1; i >= 0; i--) { - // We will always choose the last track as our chaptersTrack - var track = tracks[i]; - - if (track.kind === this.kind_) { - return track; - } - } - } - /** - * Get the caption for the ChaptersButton based on the track label. This will also - * use the current tracks localized kind as a fallback if a label does not exist. - * - * @return {string} - * The tracks current label or the localized track kind. - */ - ; - - _proto.getMenuCaption = function getMenuCaption() { - if (this.track_ && this.track_.label) { - return this.track_.label; - } - - return this.localize(toTitleCase(this.kind_)); - } - /** - * Create menu from chapter track - * - * @return {Menu} - * New menu for the chapter buttons - */ - ; - - _proto.createMenu = function createMenu() { - this.options_.title = this.getMenuCaption(); - return _TextTrackButton.prototype.createMenu.call(this); - } - /** - * Create a menu item for each text track - * - * @return {TextTrackMenuItem[]} - * Array of menu items - */ - ; - - _proto.createItems = function createItems() { - var items = []; - - if (!this.track_) { - return items; - } - - var cues = this.track_.cues; - - if (!cues) { - return items; - } - - for (var i = 0, l = cues.length; i < l; i++) { - var cue = cues[i]; - var mi = new ChaptersTrackMenuItem(this.player_, { - track: this.track_, - cue: cue - }); - items.push(mi); - } - - return items; - }; - - return ChaptersButton; -}(TextTrackButton); -/** - * `kind` of TextTrack to look for to associate it with this menu. - * - * @type {string} - * @private - */ - - -ChaptersButton.prototype.kind_ = 'chapters'; -/** - * The text that should display over the `ChaptersButton`s controls. Added for localization. - * - * @type {string} - * @private - */ - -ChaptersButton.prototype.controlText_ = 'Chapters'; -Component.registerComponent('ChaptersButton', ChaptersButton); - -/** - * The button component for toggling and selecting descriptions - * - * @extends TextTrackButton - */ - -var DescriptionsButton = /*#__PURE__*/function (_TextTrackButton) { - inheritsLoose(DescriptionsButton, _TextTrackButton); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - * - * @param {Component~ReadyCallback} [ready] - * The function to call when this component is ready. - */ - function DescriptionsButton(player, options, ready) { - var _this; - - _this = _TextTrackButton.call(this, player, options, ready) || this; - var tracks = player.textTracks(); - var changeHandler = bind(assertThisInitialized(_this), _this.handleTracksChange); - tracks.addEventListener('change', changeHandler); - - _this.on('dispose', function () { - tracks.removeEventListener('change', changeHandler); - }); - - return _this; - } - /** - * Handle text track change - * - * @param {EventTarget~Event} event - * The event that caused this function to run - * - * @listens TextTrackList#change - */ - - - var _proto = DescriptionsButton.prototype; - - _proto.handleTracksChange = function handleTracksChange(event) { - var tracks = this.player().textTracks(); - var disabled = false; // Check whether a track of a different kind is showing - - for (var i = 0, l = tracks.length; i < l; i++) { - var track = tracks[i]; - - if (track.kind !== this.kind_ && track.mode === 'showing') { - disabled = true; - break; - } - } // If another track is showing, disable this menu button - - - if (disabled) { - this.disable(); - } else { - this.enable(); - } - } - /** - * Builds the default DOM `className`. - * - * @return {string} - * The DOM `className` for this object. - */ - ; - - _proto.buildCSSClass = function buildCSSClass() { - return "vjs-descriptions-button " + _TextTrackButton.prototype.buildCSSClass.call(this); - }; - - _proto.buildWrapperCSSClass = function buildWrapperCSSClass() { - return "vjs-descriptions-button " + _TextTrackButton.prototype.buildWrapperCSSClass.call(this); - }; - - return DescriptionsButton; -}(TextTrackButton); -/** - * `kind` of TextTrack to look for to associate it with this menu. - * - * @type {string} - * @private - */ - - -DescriptionsButton.prototype.kind_ = 'descriptions'; -/** - * The text that should display over the `DescriptionsButton`s controls. Added for localization. - * - * @type {string} - * @private - */ - -DescriptionsButton.prototype.controlText_ = 'Descriptions'; -Component.registerComponent('DescriptionsButton', DescriptionsButton); - -/** - * The button component for toggling and selecting subtitles - * - * @extends TextTrackButton - */ - -var SubtitlesButton = /*#__PURE__*/function (_TextTrackButton) { - inheritsLoose(SubtitlesButton, _TextTrackButton); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - * - * @param {Component~ReadyCallback} [ready] - * The function to call when this component is ready. - */ - function SubtitlesButton(player, options, ready) { - return _TextTrackButton.call(this, player, options, ready) || this; - } - /** - * Builds the default DOM `className`. - * - * @return {string} - * The DOM `className` for this object. - */ - - - var _proto = SubtitlesButton.prototype; - - _proto.buildCSSClass = function buildCSSClass() { - return "vjs-subtitles-button " + _TextTrackButton.prototype.buildCSSClass.call(this); - }; - - _proto.buildWrapperCSSClass = function buildWrapperCSSClass() { - return "vjs-subtitles-button " + _TextTrackButton.prototype.buildWrapperCSSClass.call(this); - }; - - return SubtitlesButton; -}(TextTrackButton); -/** - * `kind` of TextTrack to look for to associate it with this menu. - * - * @type {string} - * @private - */ - - -SubtitlesButton.prototype.kind_ = 'subtitles'; -/** - * The text that should display over the `SubtitlesButton`s controls. Added for localization. - * - * @type {string} - * @private - */ - -SubtitlesButton.prototype.controlText_ = 'Subtitles'; -Component.registerComponent('SubtitlesButton', SubtitlesButton); - -/** - * The menu item for caption track settings menu - * - * @extends TextTrackMenuItem - */ - -var CaptionSettingsMenuItem = /*#__PURE__*/function (_TextTrackMenuItem) { - inheritsLoose(CaptionSettingsMenuItem, _TextTrackMenuItem); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - */ - function CaptionSettingsMenuItem(player, options) { - var _this; - - options.track = { - player: player, - kind: options.kind, - label: options.kind + ' settings', - selectable: false, - "default": false, - mode: 'disabled' - }; // CaptionSettingsMenuItem has no concept of 'selected' - - options.selectable = false; - options.name = 'CaptionSettingsMenuItem'; - _this = _TextTrackMenuItem.call(this, player, options) || this; - - _this.addClass('vjs-texttrack-settings'); - - _this.controlText(', opens ' + options.kind + ' settings dialog'); - - return _this; - } - /** - * This gets called when an `CaptionSettingsMenuItem` is "clicked". See - * {@link ClickableComponent} for more detailed information on what a click can be. - * - * @param {EventTarget~Event} [event] - * The `keydown`, `tap`, or `click` event that caused this function to be - * called. - * - * @listens tap - * @listens click - */ - - - var _proto = CaptionSettingsMenuItem.prototype; - - _proto.handleClick = function handleClick(event) { - this.player().getChild('textTrackSettings').open(); - }; - - return CaptionSettingsMenuItem; -}(TextTrackMenuItem); - -Component.registerComponent('CaptionSettingsMenuItem', CaptionSettingsMenuItem); - -/** - * The button component for toggling and selecting captions - * - * @extends TextTrackButton - */ - -var CaptionsButton = /*#__PURE__*/function (_TextTrackButton) { - inheritsLoose(CaptionsButton, _TextTrackButton); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - * - * @param {Component~ReadyCallback} [ready] - * The function to call when this component is ready. - */ - function CaptionsButton(player, options, ready) { - return _TextTrackButton.call(this, player, options, ready) || this; - } - /** - * Builds the default DOM `className`. - * - * @return {string} - * The DOM `className` for this object. - */ - - - var _proto = CaptionsButton.prototype; - - _proto.buildCSSClass = function buildCSSClass() { - return "vjs-captions-button " + _TextTrackButton.prototype.buildCSSClass.call(this); - }; - - _proto.buildWrapperCSSClass = function buildWrapperCSSClass() { - return "vjs-captions-button " + _TextTrackButton.prototype.buildWrapperCSSClass.call(this); - } - /** - * Create caption menu items - * - * @return {CaptionSettingsMenuItem[]} - * The array of current menu items. - */ - ; - - _proto.createItems = function createItems() { - var items = []; - - if (!(this.player().tech_ && this.player().tech_.featuresNativeTextTracks) && this.player().getChild('textTrackSettings')) { - items.push(new CaptionSettingsMenuItem(this.player_, { - kind: this.kind_ - })); - this.hideThreshold_ += 1; - } - - return _TextTrackButton.prototype.createItems.call(this, items); - }; - - return CaptionsButton; -}(TextTrackButton); -/** - * `kind` of TextTrack to look for to associate it with this menu. - * - * @type {string} - * @private - */ - - -CaptionsButton.prototype.kind_ = 'captions'; -/** - * The text that should display over the `CaptionsButton`s controls. Added for localization. - * - * @type {string} - * @private - */ - -CaptionsButton.prototype.controlText_ = 'Captions'; -Component.registerComponent('CaptionsButton', CaptionsButton); - -/** - * SubsCapsMenuItem has an [cc] icon to distinguish captions from subtitles - * in the SubsCapsMenu. - * - * @extends TextTrackMenuItem - */ - -var SubsCapsMenuItem = /*#__PURE__*/function (_TextTrackMenuItem) { - inheritsLoose(SubsCapsMenuItem, _TextTrackMenuItem); - - function SubsCapsMenuItem() { - return _TextTrackMenuItem.apply(this, arguments) || this; - } - - var _proto = SubsCapsMenuItem.prototype; - - _proto.createEl = function createEl(type, props, attrs) { - var innerHTML = "" + this.localize(this.options_.label); - - if (this.options_.track.kind === 'captions') { - innerHTML += "\n \n " + this.localize('Captions') + "\n "; - } - - innerHTML += ''; - - var el = _TextTrackMenuItem.prototype.createEl.call(this, type, assign({ - innerHTML: innerHTML - }, props), attrs); - - return el; - }; - - return SubsCapsMenuItem; -}(TextTrackMenuItem); - -Component.registerComponent('SubsCapsMenuItem', SubsCapsMenuItem); - -/** - * The button component for toggling and selecting captions and/or subtitles - * - * @extends TextTrackButton - */ - -var SubsCapsButton = /*#__PURE__*/function (_TextTrackButton) { - inheritsLoose(SubsCapsButton, _TextTrackButton); - - function SubsCapsButton(player, options) { - var _this; - - if (options === void 0) { - options = {}; - } - - _this = _TextTrackButton.call(this, player, options) || this; // Although North America uses "captions" in most cases for - // "captions and subtitles" other locales use "subtitles" - - _this.label_ = 'subtitles'; - - if (['en', 'en-us', 'en-ca', 'fr-ca'].indexOf(_this.player_.language_) > -1) { - _this.label_ = 'captions'; - } - - _this.menuButton_.controlText(toTitleCase(_this.label_)); - - return _this; - } - /** - * Builds the default DOM `className`. - * - * @return {string} - * The DOM `className` for this object. - */ - - - var _proto = SubsCapsButton.prototype; - - _proto.buildCSSClass = function buildCSSClass() { - return "vjs-subs-caps-button " + _TextTrackButton.prototype.buildCSSClass.call(this); - }; - - _proto.buildWrapperCSSClass = function buildWrapperCSSClass() { - return "vjs-subs-caps-button " + _TextTrackButton.prototype.buildWrapperCSSClass.call(this); - } - /** - * Create caption/subtitles menu items - * - * @return {CaptionSettingsMenuItem[]} - * The array of current menu items. - */ - ; - - _proto.createItems = function createItems() { - var items = []; - - if (!(this.player().tech_ && this.player().tech_.featuresNativeTextTracks) && this.player().getChild('textTrackSettings')) { - items.push(new CaptionSettingsMenuItem(this.player_, { - kind: this.label_ - })); - this.hideThreshold_ += 1; - } - - items = _TextTrackButton.prototype.createItems.call(this, items, SubsCapsMenuItem); - return items; - }; - - return SubsCapsButton; -}(TextTrackButton); -/** - * `kind`s of TextTrack to look for to associate it with this menu. - * - * @type {array} - * @private - */ - - -SubsCapsButton.prototype.kinds_ = ['captions', 'subtitles']; -/** - * The text that should display over the `SubsCapsButton`s controls. - * - * - * @type {string} - * @private - */ - -SubsCapsButton.prototype.controlText_ = 'Subtitles'; -Component.registerComponent('SubsCapsButton', SubsCapsButton); - -/** - * An {@link AudioTrack} {@link MenuItem} - * - * @extends MenuItem - */ - -var AudioTrackMenuItem = /*#__PURE__*/function (_MenuItem) { - inheritsLoose(AudioTrackMenuItem, _MenuItem); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - */ - function AudioTrackMenuItem(player, options) { - var _this; - - var track = options.track; - var tracks = player.audioTracks(); // Modify options for parent MenuItem class's init. - - options.label = track.label || track.language || 'Unknown'; - options.selected = track.enabled; - _this = _MenuItem.call(this, player, options) || this; - _this.track = track; - - _this.addClass("vjs-" + track.kind + "-menu-item"); - - var changeHandler = function changeHandler() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - _this.handleTracksChange.apply(assertThisInitialized(_this), args); - }; - - tracks.addEventListener('change', changeHandler); - - _this.on('dispose', function () { - tracks.removeEventListener('change', changeHandler); - }); - - return _this; - } - - var _proto = AudioTrackMenuItem.prototype; - - _proto.createEl = function createEl(type, props, attrs) { - var innerHTML = "" + this.localize(this.options_.label); - - if (this.options_.track.kind === 'main-desc') { - innerHTML += "\n \n " + this.localize('Descriptions') + "\n "; - } - - innerHTML += ''; - - var el = _MenuItem.prototype.createEl.call(this, type, assign({ - innerHTML: innerHTML - }, props), attrs); - - return el; - } - /** - * This gets called when an `AudioTrackMenuItem is "clicked". See {@link ClickableComponent} - * for more detailed information on what a click can be. - * - * @param {EventTarget~Event} [event] - * The `keydown`, `tap`, or `click` event that caused this function to be - * called. - * - * @listens tap - * @listens click - */ - ; - - _proto.handleClick = function handleClick(event) { - var tracks = this.player_.audioTracks(); - - _MenuItem.prototype.handleClick.call(this, event); - - for (var i = 0; i < tracks.length; i++) { - var track = tracks[i]; - track.enabled = track === this.track; - } - } - /** - * Handle any {@link AudioTrack} change. - * - * @param {EventTarget~Event} [event] - * The {@link AudioTrackList#change} event that caused this to run. - * - * @listens AudioTrackList#change - */ - ; - - _proto.handleTracksChange = function handleTracksChange(event) { - this.selected(this.track.enabled); - }; - - return AudioTrackMenuItem; -}(MenuItem); - -Component.registerComponent('AudioTrackMenuItem', AudioTrackMenuItem); - -/** - * The base class for buttons that toggle specific {@link AudioTrack} types. - * - * @extends TrackButton - */ - -var AudioTrackButton = /*#__PURE__*/function (_TrackButton) { - inheritsLoose(AudioTrackButton, _TrackButton); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options={}] - * The key/value store of player options. - */ - function AudioTrackButton(player, options) { - if (options === void 0) { - options = {}; - } - - options.tracks = player.audioTracks(); - return _TrackButton.call(this, player, options) || this; - } - /** - * Builds the default DOM `className`. - * - * @return {string} - * The DOM `className` for this object. - */ - - - var _proto = AudioTrackButton.prototype; - - _proto.buildCSSClass = function buildCSSClass() { - return "vjs-audio-button " + _TrackButton.prototype.buildCSSClass.call(this); - }; - - _proto.buildWrapperCSSClass = function buildWrapperCSSClass() { - return "vjs-audio-button " + _TrackButton.prototype.buildWrapperCSSClass.call(this); - } - /** - * Create a menu item for each audio track - * - * @param {AudioTrackMenuItem[]} [items=[]] - * An array of existing menu items to use. - * - * @return {AudioTrackMenuItem[]} - * An array of menu items - */ - ; - - _proto.createItems = function createItems(items) { - if (items === void 0) { - items = []; - } - - // if there's only one audio track, there no point in showing it - this.hideThreshold_ = 1; - var tracks = this.player_.audioTracks(); - - for (var i = 0; i < tracks.length; i++) { - var track = tracks[i]; - items.push(new AudioTrackMenuItem(this.player_, { - track: track, - // MenuItem is selectable - selectable: true, - // MenuItem is NOT multiSelectable (i.e. only one can be marked "selected" at a time) - multiSelectable: false - })); - } - - return items; - }; - - return AudioTrackButton; -}(TrackButton); -/** - * The text that should display over the `AudioTrackButton`s controls. Added for localization. - * - * @type {string} - * @private - */ - - -AudioTrackButton.prototype.controlText_ = 'Audio Track'; -Component.registerComponent('AudioTrackButton', AudioTrackButton); - -/** - * The specific menu item type for selecting a playback rate. - * - * @extends MenuItem - */ - -var PlaybackRateMenuItem = /*#__PURE__*/function (_MenuItem) { - inheritsLoose(PlaybackRateMenuItem, _MenuItem); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - */ - function PlaybackRateMenuItem(player, options) { - var _this; - - var label = options.rate; - var rate = parseFloat(label, 10); // Modify options for parent MenuItem class's init. - - options.label = label; - options.selected = rate === 1; - options.selectable = true; - options.multiSelectable = false; - _this = _MenuItem.call(this, player, options) || this; - _this.label = label; - _this.rate = rate; - - _this.on(player, 'ratechange', _this.update); - - return _this; - } - /** - * This gets called when an `PlaybackRateMenuItem` is "clicked". See - * {@link ClickableComponent} for more detailed information on what a click can be. - * - * @param {EventTarget~Event} [event] - * The `keydown`, `tap`, or `click` event that caused this function to be - * called. - * - * @listens tap - * @listens click - */ - - - var _proto = PlaybackRateMenuItem.prototype; - - _proto.handleClick = function handleClick(event) { - _MenuItem.prototype.handleClick.call(this); - - this.player().playbackRate(this.rate); - } - /** - * Update the PlaybackRateMenuItem when the playbackrate changes. - * - * @param {EventTarget~Event} [event] - * The `ratechange` event that caused this function to run. - * - * @listens Player#ratechange - */ - ; - - _proto.update = function update(event) { - this.selected(this.player().playbackRate() === this.rate); - }; - - return PlaybackRateMenuItem; -}(MenuItem); -/** - * The text that should display over the `PlaybackRateMenuItem`s controls. Added for localization. - * - * @type {string} - * @private - */ - - -PlaybackRateMenuItem.prototype.contentElType = 'button'; -Component.registerComponent('PlaybackRateMenuItem', PlaybackRateMenuItem); - -/** - * The component for controlling the playback rate. - * - * @extends MenuButton - */ - -var PlaybackRateMenuButton = /*#__PURE__*/function (_MenuButton) { - inheritsLoose(PlaybackRateMenuButton, _MenuButton); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - */ - function PlaybackRateMenuButton(player, options) { - var _this; - - _this = _MenuButton.call(this, player, options) || this; - - _this.updateVisibility(); - - _this.updateLabel(); - - _this.on(player, 'loadstart', _this.updateVisibility); - - _this.on(player, 'ratechange', _this.updateLabel); - - return _this; - } - /** - * Create the `Component`'s DOM element - * - * @return {Element} - * The element that was created. - */ - - - var _proto = PlaybackRateMenuButton.prototype; - - _proto.createEl = function createEl$1() { - var el = _MenuButton.prototype.createEl.call(this); - - this.labelEl_ = createEl('div', { - className: 'vjs-playback-rate-value', - innerHTML: '1x' - }); - el.appendChild(this.labelEl_); - return el; - }; - - _proto.dispose = function dispose() { - this.labelEl_ = null; - - _MenuButton.prototype.dispose.call(this); - } - /** - * Builds the default DOM `className`. - * - * @return {string} - * The DOM `className` for this object. - */ - ; - - _proto.buildCSSClass = function buildCSSClass() { - return "vjs-playback-rate " + _MenuButton.prototype.buildCSSClass.call(this); - }; - - _proto.buildWrapperCSSClass = function buildWrapperCSSClass() { - return "vjs-playback-rate " + _MenuButton.prototype.buildWrapperCSSClass.call(this); - } - /** - * Create the playback rate menu - * - * @return {Menu} - * Menu object populated with {@link PlaybackRateMenuItem}s - */ - ; - - _proto.createMenu = function createMenu() { - var menu = new Menu(this.player()); - var rates = this.playbackRates(); - - if (rates) { - for (var i = rates.length - 1; i >= 0; i--) { - menu.addChild(new PlaybackRateMenuItem(this.player(), { - rate: rates[i] + 'x' - })); - } - } - - return menu; - } - /** - * Updates ARIA accessibility attributes - */ - ; - - _proto.updateARIAAttributes = function updateARIAAttributes() { - // Current playback rate - this.el().setAttribute('aria-valuenow', this.player().playbackRate()); - } - /** - * This gets called when an `PlaybackRateMenuButton` is "clicked". See - * {@link ClickableComponent} for more detailed information on what a click can be. - * - * @param {EventTarget~Event} [event] - * The `keydown`, `tap`, or `click` event that caused this function to be - * called. - * - * @listens tap - * @listens click - */ - ; - - _proto.handleClick = function handleClick(event) { - // select next rate option - var currentRate = this.player().playbackRate(); - var rates = this.playbackRates(); // this will select first one if the last one currently selected - - var newRate = rates[0]; - - for (var i = 0; i < rates.length; i++) { - if (rates[i] > currentRate) { - newRate = rates[i]; - break; - } - } - - this.player().playbackRate(newRate); - } - /** - * Get possible playback rates - * - * @return {Array} - * All possible playback rates - */ - ; - - _proto.playbackRates = function playbackRates() { - return this.options_.playbackRates || this.options_.playerOptions && this.options_.playerOptions.playbackRates; - } - /** - * Get whether playback rates is supported by the tech - * and an array of playback rates exists - * - * @return {boolean} - * Whether changing playback rate is supported - */ - ; - - _proto.playbackRateSupported = function playbackRateSupported() { - return this.player().tech_ && this.player().tech_.featuresPlaybackRate && this.playbackRates() && this.playbackRates().length > 0; - } - /** - * Hide playback rate controls when they're no playback rate options to select - * - * @param {EventTarget~Event} [event] - * The event that caused this function to run. - * - * @listens Player#loadstart - */ - ; - - _proto.updateVisibility = function updateVisibility(event) { - if (this.playbackRateSupported()) { - this.removeClass('vjs-hidden'); - } else { - this.addClass('vjs-hidden'); - } - } - /** - * Update button label when rate changed - * - * @param {EventTarget~Event} [event] - * The event that caused this function to run. - * - * @listens Player#ratechange - */ - ; - - _proto.updateLabel = function updateLabel(event) { - if (this.playbackRateSupported()) { - this.labelEl_.innerHTML = this.player().playbackRate() + 'x'; - } - }; - - return PlaybackRateMenuButton; -}(MenuButton); -/** - * The text that should display over the `FullscreenToggle`s controls. Added for localization. - * - * @type {string} - * @private - */ - - -PlaybackRateMenuButton.prototype.controlText_ = 'Playback Rate'; -Component.registerComponent('PlaybackRateMenuButton', PlaybackRateMenuButton); - -/** - * Just an empty spacer element that can be used as an append point for plugins, etc. - * Also can be used to create space between elements when necessary. - * - * @extends Component - */ - -var Spacer = /*#__PURE__*/function (_Component) { - inheritsLoose(Spacer, _Component); - - function Spacer() { - return _Component.apply(this, arguments) || this; - } - - var _proto = Spacer.prototype; - - /** - * Builds the default DOM `className`. - * - * @return {string} - * The DOM `className` for this object. - */ - _proto.buildCSSClass = function buildCSSClass() { - return "vjs-spacer " + _Component.prototype.buildCSSClass.call(this); - } - /** - * Create the `Component`'s DOM element - * - * @return {Element} - * The element that was created. - */ - ; - - _proto.createEl = function createEl() { - return _Component.prototype.createEl.call(this, 'div', { - className: this.buildCSSClass() - }); - }; - - return Spacer; -}(Component); - -Component.registerComponent('Spacer', Spacer); - -/** - * Spacer specifically meant to be used as an insertion point for new plugins, etc. - * - * @extends Spacer - */ - -var CustomControlSpacer = /*#__PURE__*/function (_Spacer) { - inheritsLoose(CustomControlSpacer, _Spacer); - - function CustomControlSpacer() { - return _Spacer.apply(this, arguments) || this; - } - - var _proto = CustomControlSpacer.prototype; - - /** - * Builds the default DOM `className`. - * - * @return {string} - * The DOM `className` for this object. - */ - _proto.buildCSSClass = function buildCSSClass() { - return "vjs-custom-control-spacer " + _Spacer.prototype.buildCSSClass.call(this); - } - /** - * Create the `Component`'s DOM element - * - * @return {Element} - * The element that was created. - */ - ; - - _proto.createEl = function createEl() { - var el = _Spacer.prototype.createEl.call(this, { - className: this.buildCSSClass() - }); // No-flex/table-cell mode requires there be some content - // in the cell to fill the remaining space of the table. - - - el.innerHTML = "\xA0"; - return el; - }; - - return CustomControlSpacer; -}(Spacer); - -Component.registerComponent('CustomControlSpacer', CustomControlSpacer); - -/** - * Container of main controls. - * - * @extends Component - */ - -var ControlBar = /*#__PURE__*/function (_Component) { - inheritsLoose(ControlBar, _Component); - - function ControlBar() { - return _Component.apply(this, arguments) || this; - } - - var _proto = ControlBar.prototype; - - /** - * Create the `Component`'s DOM element - * - * @return {Element} - * The element that was created. - */ - _proto.createEl = function createEl() { - return _Component.prototype.createEl.call(this, 'div', { - className: 'vjs-control-bar', - dir: 'ltr' - }); - }; - - return ControlBar; -}(Component); -/** - * Default options for `ControlBar` - * - * @type {Object} - * @private - */ - - -ControlBar.prototype.options_ = { - children: ['playToggle', 'volumePanel', 'currentTimeDisplay', 'timeDivider', 'durationDisplay', 'progressControl', 'liveDisplay', 'seekToLive', 'remainingTimeDisplay', 'customControlSpacer', 'playbackRateMenuButton', 'chaptersButton', 'descriptionsButton', 'subsCapsButton', 'audioTrackButton', 'fullscreenToggle'] -}; - -if ('exitPictureInPicture' in document_1) { - ControlBar.prototype.options_.children.splice(ControlBar.prototype.options_.children.length - 1, 0, 'pictureInPictureToggle'); -} - -Component.registerComponent('ControlBar', ControlBar); - -/** - * A display that indicates an error has occurred. This means that the video - * is unplayable. - * - * @extends ModalDialog - */ - -var ErrorDisplay = /*#__PURE__*/function (_ModalDialog) { - inheritsLoose(ErrorDisplay, _ModalDialog); - - /** - * Creates an instance of this class. - * - * @param {Player} player - * The `Player` that this class should be attached to. - * - * @param {Object} [options] - * The key/value store of player options. - */ - function ErrorDisplay(player, options) { - var _this; - - _this = _ModalDialog.call(this, player, options) || this; - - _this.on(player, 'error', _this.open); - - return _this; - } - /** - * Builds the default DOM `className`. - * - * @return {string} - * The DOM `className` for this object. - * - * @deprecated Since version 5. - */ - - - var _proto = ErrorDisplay.prototype; - - _proto.buildCSSClass = function buildCSSClass() { - return "vjs-error-display " + _ModalDialog.prototype.buildCSSClass.call(this); - } - /** - * Gets the localized error message based on the `Player`s error. - * - * @return {string} - * The `Player`s error message localized or an empty string. - */ - ; - - _proto.content = function content() { - var error = this.player().error(); - return error ? this.localize(error.message) : ''; - }; - - return ErrorDisplay; -}(ModalDialog); -/** - * The default options for an `ErrorDisplay`. - * - * @private - */ - - -ErrorDisplay.prototype.options_ = _extends_1({}, ModalDialog.prototype.options_, { - pauseOnOpen: false, - fillAlways: true, - temporary: false, - uncloseable: true -}); -Component.registerComponent('ErrorDisplay', ErrorDisplay); - -var LOCAL_STORAGE_KEY = 'vjs-text-track-settings'; -var COLOR_BLACK = ['#000', 'Black']; -var COLOR_BLUE = ['#00F', 'Blue']; -var COLOR_CYAN = ['#0FF', 'Cyan']; -var COLOR_GREEN = ['#0F0', 'Green']; -var COLOR_MAGENTA = ['#F0F', 'Magenta']; -var COLOR_RED = ['#F00', 'Red']; -var COLOR_WHITE = ['#FFF', 'White']; -var COLOR_YELLOW = ['#FF0', 'Yellow']; -var OPACITY_OPAQUE = ['1', 'Opaque']; -var OPACITY_SEMI = ['0.5', 'Semi-Transparent']; -var OPACITY_TRANS = ['0', 'Transparent']; // Configuration for the various element. - -var selectConfigs = { - backgroundColor: { - selector: '.vjs-bg-color > select', - id: 'captions-background-color-%s', - label: 'Color', - options: [COLOR_BLACK, COLOR_WHITE, COLOR_RED, COLOR_GREEN, COLOR_BLUE, COLOR_YELLOW, COLOR_MAGENTA, COLOR_CYAN] - }, - backgroundOpacity: { - selector: '.vjs-bg-opacity > select', - id: 'captions-background-opacity-%s', - label: 'Transparency', - options: [OPACITY_OPAQUE, OPACITY_SEMI, OPACITY_TRANS] - }, - color: { - selector: '.vjs-fg-color > select', - id: 'captions-foreground-color-%s', - label: 'Color', - options: [COLOR_WHITE, COLOR_BLACK, COLOR_RED, COLOR_GREEN, COLOR_BLUE, COLOR_YELLOW, COLOR_MAGENTA, COLOR_CYAN] - }, - edgeStyle: { - selector: '.vjs-edge-style > select', - id: '%s', - label: 'Text Edge Style', - options: [['none', 'None'], ['raised', 'Raised'], ['depressed', 'Depressed'], ['uniform', 'Uniform'], ['dropshadow', 'Dropshadow']] - }, - fontFamily: { - selector: '.vjs-font-family > select', - id: 'captions-font-family-%s', - label: 'Font Family', - options: [['proportionalSansSerif', 'Proportional Sans-Serif'], ['monospaceSansSerif', 'Monospace Sans-Serif'], ['proportionalSerif', 'Proportional Serif'], ['monospaceSerif', 'Monospace Serif'], ['casual', 'Casual'], ['script', 'Script'], ['small-caps', 'Small Caps']] - }, - fontPercent: { - selector: '.vjs-font-percent > select', - id: 'captions-font-size-%s', - label: 'Font Size', - options: [['0.50', '50%'], ['0.75', '75%'], ['1.00', '100%'], ['1.25', '125%'], ['1.50', '150%'], ['1.75', '175%'], ['2.00', '200%'], ['3.00', '300%'], ['4.00', '400%']], - "default": 2, - parser: function parser(v) { - return v === '1.00' ? null : Number(v); - } - }, - textOpacity: { - selector: '.vjs-text-opacity > select', - id: 'captions-foreground-opacity-%s', - label: 'Transparency', - options: [OPACITY_OPAQUE, OPACITY_SEMI] - }, - // Options for this object are defined below. - windowColor: { - selector: '.vjs-window-color > select', - id: 'captions-window-color-%s', - label: 'Color' - }, - // Options for this object are defined below. - windowOpacity: { - selector: '.vjs-window-opacity > select', - id: 'captions-window-opacity-%s', - label: 'Transparency', - options: [OPACITY_TRANS, OPACITY_SEMI, OPACITY_OPAQUE] - } -}; -selectConfigs.windowColor.options = selectConfigs.backgroundColor.options; -/** - * Get the actual value of an option. - * - * @param {string} value - * The value to get - * - * @param {Function} [parser] - * Optional function to adjust the value. - * - * @return {Mixed} - * - Will be `undefined` if no value exists - * - Will be `undefined` if the given value is "none". - * - Will be the actual value otherwise. - * - * @private - */ - -function parseOptionValue(value, parser) { - if (parser) { - value = parser(value); - } - - if (value && value !== 'none') { - return value; - } -} -/** - * Gets the value of the selected '].join(''); - })).concat('').join(''); - } - /** - * Create foreground color element for the component - * - * @return {string} - * An HTML string. - * - * @private - */ - ; - - _proto.createElFgColor_ = function createElFgColor_() { - var legendId = "captions-text-legend-" + this.id_; - return ['
    ', "", this.localize('Text'), '', this.createElSelect_('color', legendId), '', this.createElSelect_('textOpacity', legendId), '', '
    '].join(''); - } - /** - * Create background color element for the component - * - * @return {string} - * An HTML string. - * - * @private - */ - ; - - _proto.createElBgColor_ = function createElBgColor_() { - var legendId = "captions-background-" + this.id_; - return ['
    ', "", this.localize('Background'), '', this.createElSelect_('backgroundColor', legendId), '', this.createElSelect_('backgroundOpacity', legendId), '', '
    '].join(''); - } - /** - * Create window color element for the component - * - * @return {string} - * An HTML string. - * - * @private - */ - ; - - _proto.createElWinColor_ = function createElWinColor_() { - var legendId = "captions-window-" + this.id_; - return ['
    ', "", this.localize('Window'), '', this.createElSelect_('windowColor', legendId), '', this.createElSelect_('windowOpacity', legendId), '', '
    '].join(''); - } - /** - * Create color elements for the component - * - * @return {Element} - * The element that was created - * - * @private - */ - ; - - _proto.createElColors_ = function createElColors_() { - return createEl('div', { - className: 'vjs-track-settings-colors', - innerHTML: [this.createElFgColor_(), this.createElBgColor_(), this.createElWinColor_()].join('') - }); - } - /** - * Create font elements for the component - * - * @return {Element} - * The element that was created. - * - * @private - */ - ; - - _proto.createElFont_ = function createElFont_() { - return createEl('div', { - className: 'vjs-track-settings-font', - innerHTML: ['
    ', this.createElSelect_('fontPercent', '', 'legend'), '
    ', '
    ', this.createElSelect_('edgeStyle', '', 'legend'), '
    ', '
    ', this.createElSelect_('fontFamily', '', 'legend'), '
    '].join('') - }); - } - /** - * Create controls for the component - * - * @return {Element} - * The element that was created. - * - * @private - */ - ; - - _proto.createElControls_ = function createElControls_() { - var defaultsDescription = this.localize('restore all settings to the default values'); - return createEl('div', { - className: 'vjs-track-settings-controls', - innerHTML: ["', ""].join('') - }); - }; - - _proto.content = function content() { - return [this.createElColors_(), this.createElFont_(), this.createElControls_()]; - }; - - _proto.label = function label() { - return this.localize('Caption Settings Dialog'); - }; - - _proto.description = function description() { - return this.localize('Beginning of dialog window. Escape will cancel and close the window.'); - }; - - _proto.buildCSSClass = function buildCSSClass() { - return _ModalDialog.prototype.buildCSSClass.call(this) + ' vjs-text-track-settings'; - } - /** - * Gets an object of text track settings (or null). - * - * @return {Object} - * An object with config values parsed from the DOM or localStorage. - */ - ; - - _proto.getValues = function getValues() { - var _this3 = this; - - return reduce(selectConfigs, function (accum, config, key) { - var value = getSelectedOptionValue(_this3.$(config.selector), config.parser); - - if (value !== undefined) { - accum[key] = value; - } - - return accum; - }, {}); - } - /** - * Sets text track settings from an object of values. - * - * @param {Object} values - * An object with config values parsed from the DOM or localStorage. - */ - ; - - _proto.setValues = function setValues(values) { - var _this4 = this; - - each(selectConfigs, function (config, key) { - setSelectedOption(_this4.$(config.selector), values[key], config.parser); - }); - } - /** - * Sets all ` elements in the DOM of this component. +// +// Possible keys include: +// +// `default`: +// The default option index. Only needs to be provided if not zero. +// `parser`: +// A function which is used to parse the value from the selected option in +// a customized way. +// `selector`: +// The selector used to find the associated element. + * + * @param {Element} el + * the element to look in + * + * @param {Function} [parser] + * Optional function to adjust the value. + * + * @return {Mixed} + * - Will be `undefined` if no value exists + * - Will be `undefined` if the given value is "none". + * - Will be the actual value otherwise. + * + * @private + */ + + +function getSelectedOptionValue(el, parser) { + var value = el.options[el.options.selectedIndex].value; + return parseOptionValue(value, parser); +} +/** + * Sets the selected "].join("")})).concat("").join("")},t.createElFgColor_=function(){var e="captions-text-legend-"+this.id_;return ['
    ','',this.localize("Text"),"",this.createElSelect_("color",e),'',this.createElSelect_("textOpacity",e),"","
    "].join("")},t.createElBgColor_=function(){var e="captions-background-"+this.id_;return ['
    ','',this.localize("Background"),"",this.createElSelect_("backgroundColor",e),'',this.createElSelect_("backgroundOpacity",e),"","
    "].join("")},t.createElWinColor_=function(){var e="captions-window-"+this.id_;return ['
    ','',this.localize("Window"),"",this.createElSelect_("windowColor",e),'',this.createElSelect_("windowOpacity",e),"","
    "].join("")},t.createElColors_=function(){return S("div",{className:"vjs-track-settings-colors",innerHTML:[this.createElFgColor_(),this.createElBgColor_(),this.createElWinColor_()].join("")})},t.createElFont_=function(){return S("div",{className:"vjs-track-settings-font",innerHTML:['
    ',this.createElSelect_("fontPercent","","legend"),"
    ",'
    ',this.createElSelect_("edgeStyle","","legend"),"
    ",'
    ',this.createElSelect_("fontFamily","","legend"),"
    "].join("")})},t.createElControls_=function(){var e=this.localize("restore all settings to the default values");return S("div",{className:"vjs-track-settings-controls",innerHTML:['",'"].join("")})},t.content=function(){return [this.createElColors_(),this.createElFont_(),this.createElControls_()]},t.label=function(){return this.localize("Caption Settings Dialog")},t.description=function(){return this.localize("Beginning of dialog window. Escape will cancel and close the window.")},t.buildCSSClass=function(){return n.prototype.buildCSSClass.call(this)+" vjs-text-track-settings"},t.getValues=function(){var r=this;return function(i,n,e){return void 0===e&&(e=0),s(i).reduce(function(e,t){return n(e,i[t],t)},e)}(Ar,function(e,t,i){var n=function(e,t){return Ir(e.options[e.options.selectedIndex].value,t)}(r.$(t.selector),t.parser);return void 0!==n&&(e[i]=n),e},{})},t.setValues=function(i){var n=this;a(Ar,function(e,t){!function(e,t,i){if(t)for(var n=0;nthis.options_.liveTolerance;this.timeupdateSeen_&&n!==1/0||(s=!1),s!==this.behindLiveEdge_&&(this.behindLiveEdge_=s,this.trigger("liveedgechange"));}},t.handleDurationchange=function(){this.player_.duration()===1/0&&this.liveWindow()>=this.options_.trackingThreshold?(this.player_.options_.liveui&&this.player_.addClass("vjs-liveui"),this.startTracking()):(this.player_.removeClass("vjs-liveui"),this.stopTracking());},t.startTracking=function(){this.isTracking()||(this.timeupdateSeen_||(this.timeupdateSeen_=this.player_.hasStarted()),this.trackingInterval_=this.setInterval(this.trackLive_,30),this.trackLive_(),this.on(this.player_,["play","pause"],this.trackLive_),this.timeupdateSeen_?this.on(this.player_,"seeked",this.handleSeeked):(this.one(this.player_,"play",this.handlePlay),this.one(this.player_,"timeupdate",this.handleFirstTimeupdate)));},t.handleFirstTimeupdate=function(){this.timeupdateSeen_=!0,this.on(this.player_,"seeked",this.handleSeeked);},t.handleSeeked=function(){var e=Math.abs(this.liveCurrentTime()-this.player_.currentTime());this.seekedBehindLive_=!this.skipNextSeeked_&&2":switch(u){case Ls:i.setTagName(e.slice(t,o));case Us:case Ms:case Bs:break;case Rs:case Os:"/"===(c=e.slice(t,o)).slice(-1)&&(i.closed=!0,c=c.slice(0,-1));case Ds:u===Ds&&(c=a),u==Rs?(s.warning('attribute "'+c+'" missed quot(")!!'),i.add(a,c.replace(/&#?\w+;/g,r),t)):("http://www.w3.org/1999/xhtml"===n[""]&&c.match(/^(?:disabled|checked|selected)$/i)||s.warning('attribute "'+c+'" missed value!! "'+c+'" instead!!'),i.add(c,c,t));break;case Ns:throw new Error("attribute value missed!!")}return o;case"€":l=" ";default:if(l<=" ")switch(u){case Ls:i.setTagName(e.slice(t,o)),u=Ms;break;case Os:a=e.slice(t,o),u=Ds;break;case Rs:var c=e.slice(t,o).replace(/&#?\w+;/g,r);s.warning('attribute "'+c+'" missed quot(")!!'),i.add(a,c,t);case Us:u=Ms;}else switch(u){case Ds:i.tagName;"http://www.w3.org/1999/xhtml"===n[""]&&a.match(/^(?:disabled|checked|selected)$/i)||s.warning('attribute "'+a+'" missed value!! "'+a+'" instead2!!'),i.add(a,a,t),t=o,u=Os;break;case Us:s.warning('attribute space is required"'+a+'"!!');case Ms:u=Os,t=o;break;case Ns:u=Rs,t=o;break;case Bs:throw new Error("elements closed character '/' and '>' must be connected to")}}o++;}}function Vs(e,t,i){for(var n=e.tagName,r=null,s=e.length;s--;){var a=e[s],o=a.qName,u=a.value;if(0<(d=o.indexOf(":")))var l=a.prefix=o.slice(0,d),c=o.slice(d+1),h="xmlns"===l&&c;else l=null,h="xmlns"===(c=o)&&"";a.localName=c,!1!==h&&(null==r&&(r={},zs(i,i={})),i[h]=r[h]=u,a.uri="http://www.w3.org/2000/xmlns/",t.startPrefixMapping(h,u));}for(s=e.length;s--;){(l=(a=e[s]).prefix)&&("xml"===l&&(a.uri="http://www.w3.org/XML/1998/namespace"),"xmlns"!==l&&(a.uri=i[l||""]));}var d;c=0<(d=n.indexOf(":"))?(l=e.prefix=n.slice(0,d),e.localName=n.slice(d+1)):(l=null,e.localName=n);var p=e.uri=i[l||""];if(t.startElement(p,c,n,e),!e.closed)return e.currentNSMap=i,e.localNSMap=r,!0;if(t.endElement(p,c,n),r)for(l in r)t.endPrefixMapping(l);}function qs(e,t,i,n,r){if(/^(?:script|textarea)$/i.test(i)){var s=e.indexOf("",t),a=e.substring(t+1,s);if(/[&<]/.test(a))return /^script$/i.test(i)||(a=a.replace(/&#?\w+;/g,n)),r.characters(a,0,a.length),s}return t+1}function Ws(e,t,i,n){var r=n[i];return null==r&&((r=e.lastIndexOf(""))",t+9);return i.startCDATA(),i.characters(e,t+9,r-t-9),i.endCDATA(),r+3}var s=function(e,t){var i,n=[],r=/'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;r.lastIndex=t,r.exec(e);for(;i=r.exec(e);)if(n.push(i),i[1])return n}(e,t),a=s.length;if(1",t);if(n){var r=e.substring(t,n).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);if(r){r[0].length;return i.processingInstruction(r[1],r[2]),n+2}return -1}return -1}function Ks(e){}function Ys(e,t){return e.__proto__=t,e}js.prototype={parse:function(e,t,i){var n=this.domBuilder;n.startDocument(),zs(t,t={}),function(i,e,n,r,s){function a(e){var t=e.slice(1,-1);return t in n?n[t]:"#"===t.charAt(0)?function(e){if(65535>10),i=56320+(1023&e);return String.fromCharCode(t,i)}return String.fromCharCode(e)}(parseInt(t.substr(1).replace("x","0x"))):(s.error("entity not found:"+e),e)}function t(e){if(f",m+3),_=i.substring(m+2,y),b=d.pop();y<0?(_=i.substring(m+2).replace(/[\s<].*/,""),s.error("end tag name: "+_+" is not complete:"+b.tagName),y=m+1+_.length):_.match(/\s"==e&&">")||"&"==e&&"&"||'"'==e&&"""||"&#"+e.charCodeAt()+";"}function Ia(e,t){if(t(e))return !0;if(e=e.firstChild)do{if(Ia(e,t))return !0}while(e=e.nextSibling)}function Pa(){}function La(e,t,i){e&&e._inc++,"http://www.w3.org/2000/xmlns/"==i.namespaceURI&&delete t._nsMap[i.prefix?i.localName:""];}function Oa(e,t,i){if(e&&e._inc){e._inc++;var n=t.childNodes;if(i)n[n.length++]=i;else {for(var r=t.firstChild,s=0;r;)r=(n[s++]=r).nextSibling;n.length=s;}}}function Da(e,t){var i=t.previousSibling,n=t.nextSibling;return i?i.nextSibling=n:e.firstChild=n,n?n.previousSibling=i:e.lastChild=i,Oa(e.ownerDocument,e),t}function Na(e,t,i){var n=t.parentNode;if(n&&n.removeChild(t),t.nodeType===ha){var r=t.firstChild;if(null==r)return t;var s=t.lastChild;}else r=s=t;var a=i?i.previousSibling:e.lastChild;for(r.previousSibling=a,s.nextSibling=i,a?a.nextSibling=r:e.firstChild=r,null==i?e.lastChild=s:i.previousSibling=s;r.parentNode=e,r!==s&&(r=r.nextSibling););return Oa(e.ownerDocument||e,e),t.nodeType==ha&&(t.firstChild=t.lastChild=null),t}function Ra(){this._nsMap={};}function Ua(){}function Ma(){}function Ba(){}function ja(){}function Fa(){}function Ha(){}function Va(){}function qa(){}function Wa(){}function za(){}function Ga(){}function Xa(){}function Ka(e,t){var i=[],n=9==this.nodeType?this.documentElement:this,r=n.prefix,s=n.namespaceURI;if(s&&null==r&&null==(r=n.lookupPrefix(s)))var a=[{namespace:s,prefix:null}];return $a(this,i,e,t,a),i.join("")}function Ya(e,t,i){var n=e.prefix||"",r=e.namespaceURI;if(!n&&!r)return !1;if("xml"===n&&"http://www.w3.org/XML/1998/namespace"===r||"http://www.w3.org/2000/xmlns/"==r)return !1;for(var s=i.length;s--;){var a=i[s];if(a.prefix==n)return a.namespace!=r}return !0}function $a(e,t,i,n,r){if(n){if(!(e=n(e)))return;if("string"==typeof e)return void t.push(e)}switch(e.nodeType){case ta:r=r||[];var s=e.attributes,a=s.length,o=e.firstChild,u=e.tagName;i=Zs===e.namespaceURI||i,t.push("<",u);for(var l=0;l"),i&&/^script$/i.test(u))for(;o;)o.data?t.push(o.data):$a(o,t,i,n,r),o=o.nextSibling;else for(;o;)$a(o,t,i,n,r),o=o.nextSibling;t.push("");}else t.push("/>");return;case la:case ha:for(o=e.firstChild;o;)$a(o,t,i,n,r),o=o.nextSibling;return;case ia:return t.push(" ",e.name,'="',e.value.replace(/[<&"]/g,Aa),'"');case na:return t.push(e.data.replace(/[<&]/g,Aa));case ra:return t.push("");case ua:return t.push("\x3c!--",e.data,"--\x3e");case ca:var f=e.publicId,m=e.systemId;if(t.push("');else if(m&&"."!=m)t.push(' SYSTEM "',m,'">');else {var g=e.internalSubset;g&&t.push(" [",g,"]"),t.push(">");}return;case oa:return t.push("");case sa:return t.push("&",e.nodeName,";");default:t.push("??",e.nodeName);}}function Qa(e,t,i){e[t]=i;}ya.prototype=Error.prototype,Qs(pa,ya),_a.prototype={length:0,item:function(e){return this[e]||null},toString:function(e,t){for(var i=[],n=0;nt.attributes.bandwidth||(e[r]={language:n,autoselect:!0,default:"main"===i,playlists:oo([function(e){var t,i=e.attributes,n=e.segments,r=e.sidx,s={attributes:(t={NAME:i.id,BANDWIDTH:i.bandwidth,CODECS:i.codecs},t["PROGRAM-ID"]=1,t),uri:"",endList:"static"===(i.type||"static"),timeline:i.periodIndex,resolvedUri:"",targetDuration:i.duration,segments:n,mediaSequence:n.length?n[0].number:1};return i.contentProtection&&(s.contentProtection=i.contentProtection),r&&(s.sidx=r),s}(t)],a),uri:""},"undefined"==typeof o&&"main"===i&&((o=t).default=!0)),e},{});o||(t[Object.keys(t)[0]].default=!0);return t}(h,t)),d.length&&(p.mediaGroups.SUBTITLES.subs=function(e,n){return void 0===n&&(n={}),e.reduce(function(e,t){var i=t.attributes.lang||"text";return e[i]||(e[i]={language:i,default:!1,autoselect:!1,playlists:oo([function(e){var t,i=e.attributes,n=e.segments;return "undefined"==typeof n&&(n=[{uri:i.baseUrl,timeline:i.periodIndex,resolvedUri:i.baseUrl||"",duration:i.sourceDuration,number:0}],i.duration=i.sourceDuration),{attributes:(t={NAME:i.id,BANDWIDTH:i.bandwidth},t["PROGRAM-ID"]=1,t),uri:"",endList:"static"===(i.type||"static"),timeline:i.periodIndex,resolvedUri:i.baseUrl||"",targetDuration:i.duration,segments:n,mediaSequence:n.length?n[0].number:1}}(t)],n),uri:""}),e},{})}(d,t)),p}function co(e,t){for(var i,n,r,s,a,o,u,l,c,h,d,p,f=e.type,m=void 0===f?"static":f,g=e.minimumUpdatePeriod,v=void 0===g?0:g,y=e.media,_=void 0===y?"":y,b=e.sourceDuration,T=e.timescale,S=void 0===T?1:T,k=e.startNumber,C=void 0===k?1:k,E=e.periodIndex,w=[],x=-1,A=0;A>>2,dependsOn:3&e[0],isDependedOn:(192&e[1])>>>6,hasRedundancy:(48&e[1])>>>4,paddingValue:(14&e[1])>>>1,isNonSyncSample:1&e[1],degradationPriority:e[2]<<8|e[3]}}function Io(e){var t="";return t+=String.fromCharCode(e[0]),t+=String.fromCharCode(e[1]),t+=String.fromCharCode(e[2]),t+=String.fromCharCode(e[3])}var Po,Lo,Oo,Do,No,Ro,Uo,Mo={DOMImplementation:wa,XMLSerializer:Xa},Bo=t(function(e,t){function i(e){this.options=e||{locator:{}};}function l(){this.cdata=!1;}function c(e,t){t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber;}function h(e){if(e)return "\n@"+(e.systemId||"")+"#[line:"+e.lineNumber+",col:"+e.columnNumber+"]"}function r(e,t,i){return "string"==typeof e?e.substr(t,i):e.length>=t+i||t?new java.lang.String(e,t,i)+"":e}function d(e,t){e.currentElement?e.currentElement.appendChild(t):e.doc.appendChild(t);}i.prototype.parseFromString=function(e,t){var i=this.options,n=new p,r=i.domBuilder||new l,s=i.errorHandler,a=i.locator,o=i.xmlns||{},u={lt:"<",gt:">",amp:"&",quot:'"',apos:"'"};return a&&r.setDocumentLocator(a),n.errorHandler=function(n,e,r){if(!n){if(e instanceof l)return e;n=e;}var s={},a=n instanceof Function;function t(t){var i=n[t];!i&&a&&(i=2==n.length?function(e){n(t,e);}:n),s[t]=i&&function(e){i("[xmldom "+t+"]\t"+e+h(r));}||function(){};}return r=r||{},t("warning"),t("error"),t("fatalError"),s}(s,r,a),n.domBuilder=i.domBuilder||r,/\/x?html?$/.test(t)&&(u.nbsp=" ",u.copy="©",o[""]="http://www.w3.org/1999/xhtml"),o.xml=o.xml||"http://www.w3.org/XML/1998/namespace",e?n.parse(e,o,u):n.errorHandler.error("invalid doc source"),r.doc},l.prototype={startDocument:function(){this.doc=(new n).createDocument(null,null,null),this.locator&&(this.doc.documentURI=this.locator.systemId);},startElement:function(e,t,i,n){var r=this.doc,s=r.createElementNS(e,i||t),a=n.length;d(this,s),this.currentElement=s,this.locator&&c(this.locator,s);for(var o=0;o>>0},Qo=function(e){return ("00"+e.toString(16)).slice(-2)},Jo=$o,Zo={avc1:function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);return {dataReferenceIndex:t.getUint16(6),width:t.getUint16(24),height:t.getUint16(26),horizresolution:t.getUint16(28)+t.getUint16(30)/16,vertresolution:t.getUint16(32)+t.getUint16(34)/16,frameCount:t.getUint16(40),depth:t.getUint16(74),config:Po(e.subarray(78,e.byteLength))}},avcC:function(e){var t,i,n,r,s=new DataView(e.buffer,e.byteOffset,e.byteLength),a={configurationVersion:e[0],avcProfileIndication:e[1],profileCompatibility:e[2],avcLevelIndication:e[3],lengthSizeMinusOne:3&e[4],sps:[],pps:[]},o=31&e[5];for(n=6,r=0;r>>2&63,bufferSize:e[13]<<16|e[14]<<8|e[15],maxBitrate:e[16]<<24|e[17]<<16|e[18]<<8|e[19],avgBitrate:e[20]<<24|e[21]<<16|e[22]<<8|e[23],decoderConfigDescriptor:{tag:e[24],length:e[25],audioObjectType:e[26]>>>3&31,samplingFrequencyIndex:(7&e[26])<<1|e[27]>>>7&1,channelConfiguration:e[27]>>>3&15}}}},ftyp:function(e){for(var t=new DataView(e.buffer,e.byteOffset,e.byteLength),i={majorBrand:Io(e.subarray(0,4)),minorVersion:t.getUint32(4),compatibleBrands:[]},n=8;nMALFORMED DATA");else switch(31&e[t]){case 1:r.push("slice_layer_without_partitioning_rbsp");break;case 5:r.push("slice_layer_without_partitioning_rbsp_idr");break;case 6:r.push("sei_rbsp");break;case 7:r.push("seq_parameter_set_rbsp");break;case 8:r.push("pic_parameter_set_rbsp");break;case 9:r.push("access_unit_delimiter_rbsp");break;default:r.push("UNKNOWN NAL - "+e[t]&31);}return r}(e)}},mdhd:function(e){var t,i=new DataView(e.buffer,e.byteOffset,e.byteLength),n=4,r={version:i.getUint8(0),flags:new Uint8Array(e.subarray(1,4)),language:""};return 1===r.version?(n+=4,r.creationTime=xo(i.getUint32(n)),n+=8,r.modificationTime=xo(i.getUint32(n)),n+=4,r.timescale=i.getUint32(n),n+=8):(r.creationTime=xo(i.getUint32(n)),n+=4,r.modificationTime=xo(i.getUint32(n)),n+=4,r.timescale=i.getUint32(n),n+=4),r.duration=i.getUint32(n),n+=4,t=i.getUint16(n),r.language+=String.fromCharCode(96+(t>>10)),r.language+=String.fromCharCode(96+((992&t)>>5)),r.language+=String.fromCharCode(96+(31&t)),r},mdia:function(e){return {boxes:Po(e)}},mfhd:function(e){return {version:e[0],flags:new Uint8Array(e.subarray(1,4)),sequenceNumber:e[4]<<24|e[5]<<16|e[6]<<8|e[7]}},minf:function(e){return {boxes:Po(e)}},mp4a:function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength),i={dataReferenceIndex:t.getUint16(6),channelcount:t.getUint16(16),samplesize:t.getUint16(18),samplerate:t.getUint16(24)+t.getUint16(26)/65536};return 28>4,isDependedOn:(12&e[t])>>2,hasRedundancy:3&e[t]});return i},sidx:function(e){var t,i=new DataView(e.buffer,e.byteOffset,e.byteLength),n={version:e[0],flags:new Uint8Array(e.subarray(1,4)),references:[],referenceId:i.getUint32(4),timescale:i.getUint32(8),earliestPresentationTime:i.getUint32(12),firstOffset:i.getUint32(16)},r=i.getUint16(22);for(t=24;r;t+=12,r--)n.references.push({referenceType:(128&e[t])>>>7,referencedSize:2147483647&i.getUint32(t),subsegmentDuration:i.getUint32(t+4),startsWithSap:!!(128&e[t+8]),sapType:(112&e[t+8])>>>4,sapDeltaTime:268435455&i.getUint32(t+8)});return n},smhd:function(e){return {version:e[0],flags:new Uint8Array(e.subarray(1,4)),balance:e[4]+e[5]/256}},stbl:function(e){return {boxes:Po(e)}},stco:function(e){var t,i=new DataView(e.buffer,e.byteOffset,e.byteLength),n={version:e[0],flags:new Uint8Array(e.subarray(1,4)),chunkOffsets:[]},r=i.getUint32(4);for(t=8;r;t+=4,r--)n.chunkOffsets.push(i.getUint32(t));return n},stsc:function(e){var t,i=new DataView(e.buffer,e.byteOffset,e.byteLength),n=i.getUint32(4),r={version:e[0],flags:new Uint8Array(e.subarray(1,4)),sampleToChunks:[]};for(t=8;n;t+=12,n--)r.sampleToChunks.push({firstChunk:i.getUint32(t),samplesPerChunk:i.getUint32(t+4),sampleDescriptionIndex:i.getUint32(t+8)});return r},stsd:function(e){return {version:e[0],flags:new Uint8Array(e.subarray(1,4)),sampleDescriptions:Po(e.subarray(8))}},stsz:function(e){var t,i=new DataView(e.buffer,e.byteOffset,e.byteLength),n={version:e[0],flags:new Uint8Array(e.subarray(1,4)),sampleSize:i.getUint32(4),entries:[]};for(t=12;t>6,sampleHasRedundancy:(48&e[21])>>4,samplePaddingValue:(14&e[21])>>1,sampleIsDifferenceSample:!!(1&e[21]),sampleDegradationPriority:t.getUint16(22)}},trun:function(e){var t,i={version:e[0],flags:new Uint8Array(e.subarray(1,4)),samples:[]},n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=1&i.flags[2],s=4&i.flags[2],a=1&i.flags[1],o=2&i.flags[1],u=4&i.flags[1],l=8&i.flags[1],c=n.getUint32(4),h=8;for(r&&(i.dataOffset=n.getInt32(h),h+=4),s&&c&&(t={flags:Ao(e.subarray(h,h+4))},h+=4,a&&(t.duration=n.getUint32(h),h+=4),o&&(t.size=n.getUint32(h),h+=4),l&&(t.compositionTimeOffset=n.getUint32(h),h+=4),i.samples.push(t),c--);c--;)t={},a&&(t.duration=n.getUint32(h),h+=4),o&&(t.size=n.getUint32(h),h+=4),u&&(t.flags=Ao(e.subarray(h,h+4)),h+=4),l&&(t.compositionTimeOffset=n.getUint32(h),h+=4),i.samples.push(t);return i},"url ":function(e){return {version:e[0],flags:new Uint8Array(e.subarray(1,4))}},vmhd:function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);return {version:e[0],flags:new Uint8Array(e.subarray(1,4)),graphicsmode:t.getUint16(4),opcolor:new Uint16Array([t.getUint16(6),t.getUint16(8),t.getUint16(10)])}}},eu={inspect:Po=function(e){for(var t,i,n,r,s,a=0,o=[],u=new ArrayBuffer(e.length),l=new Uint8Array(u),c=0;c":t+"<\n"+n.map(function(e){return s+" "+e}).join("\n")+"\n"+s+" >":t+"<>"}return t+JSON.stringify(i,null,2).split("\n").map(function(e,t){return 0===t?e:s+" "+e}).join("\n")}).join("\n")+(r.boxes?"\n"+Lo(r.boxes,t+1):"")}).join("\n")},parseType:Io,findBox:function e(t,i){var n,r,s,a,o,u=[];if(!i.length)return null;for(n=0;n>>2&63).replace(/^0/,"")):n.codec="mp4a.40.2"));}var h=eu.findBox(e,["mdia","mdhd"])[0];if(h&&r){var d=0===i?12:20;n.timescale=tu(h[d]<<24|h[1+d]<<16|h[2+d]<<8|h[3+d]);}p.push(n);}),p};function nu(){this.init=function(){var s={};this.on=function(e,t){s[e]||(s[e]=[]),s[e]=s[e].concat(t);},this.off=function(e,t){var i;return !!s[e]&&(i=s[e].indexOf(t),s[e]=s[e].slice(),s[e].splice(i,1),-1>>8,r=255&t,t!==this.PADDING_)if(t===this.RESUME_CAPTION_LOADING_)this.mode_="popOn";else if(t===this.END_OF_CAPTION_)this.mode_="popOn",this.clearFormatting(e.pts),this.flushDisplayed(e.pts),i=this.displayed_,this.displayed_=this.nonDisplayed_,this.nonDisplayed_=i,this.startPts_=e.pts;else if(t===this.ROLL_UP_2_ROWS_)this.rollUpRows_=2,this.setRollUp(e.pts);else if(t===this.ROLL_UP_3_ROWS_)this.rollUpRows_=3,this.setRollUp(e.pts);else if(t===this.ROLL_UP_4_ROWS_)this.rollUpRows_=4,this.setRollUp(e.pts);else if(t===this.CARRIAGE_RETURN_)this.clearFormatting(e.pts),this.flushDisplayed(e.pts),this.shiftRowsUp_(),this.startPts_=e.pts;else if(t===this.BACKSPACE_)"popOn"===this.mode_?this.nonDisplayed_[this.row_]=this.nonDisplayed_[this.row_].slice(0,-1):this.displayed_[this.row_]=this.displayed_[this.row_].slice(0,-1);else if(t===this.ERASE_DISPLAYED_MEMORY_)this.flushDisplayed(e.pts),this.displayed_=pu();else if(t===this.ERASE_NON_DISPLAYED_MEMORY_)this.nonDisplayed_=pu();else if(t===this.RESUME_DIRECT_CAPTIONING_)"paintOn"!==this.mode_&&(this.flushDisplayed(e.pts),this.displayed_=pu()),this.mode_="paintOn",this.startPts_=e.pts;else if(this.isSpecialCharacter(n,r))s=du((n=(3&n)<<8)|r),this[this.mode_](e.pts,s),this.column_++;else if(this.isExtCharacter(n,r))"popOn"===this.mode_?this.nonDisplayed_[this.row_]=this.nonDisplayed_[this.row_].slice(0,-1):this.displayed_[this.row_]=this.displayed_[this.row_].slice(0,-1),s=du((n=(3&n)<<8)|r),this[this.mode_](e.pts,s),this.column_++;else if(this.isMidRowCode(n,r))this.clearFormatting(e.pts),this[this.mode_](e.pts," "),this.column_++,14==(14&r)&&this.addFormatting(e.pts,["i"]),1==(1&r)&&this.addFormatting(e.pts,["u"]);else if(this.isOffsetControlCode(n,r))this.column_+=3&r;else if(this.isPAC(n,r)){var a=mu.indexOf(7968&t);"rollUp"===this.mode_&&(a-this.rollUpRows_+1<0&&(a=this.rollUpRows_-1),this.setRollUp(e.pts,a)),a!==this.row_&&(this.clearFormatting(e.pts),this.row_=a),1&r&&-1===this.formatting_.indexOf("u")&&this.addFormatting(e.pts,["u"]),16==(16&t)&&(this.column_=4*((14&t)>>1)),this.isColorPAC(r)&&14==(14&r)&&this.addFormatting(e.pts,["i"]);}else this.isNormalChar(n)&&(0===r&&(r=null),s=du(n),s+=du(r),this[this.mode_](e.pts,s),this.column_+=s.length);}else this.lastControlCode_=null;};};gu.prototype=new hu,gu.prototype.flushDisplayed=function(e){var t=this.displayed_.map(function(e){try{return e.trim()}catch(e){return ""}}).join("\n").replace(/^\n+|\n+$/g,"");t.length&&this.trigger("data",{startPts:this.startPts_,endPts:e,text:t,stream:this.name_});},gu.prototype.reset=function(){this.mode_="popOn",this.topRow_=0,this.startPts_=0,this.displayed_=pu(),this.nonDisplayed_=pu(),this.lastControlCode_=null,this.column_=0,this.row_=14,this.rollUpRows_=2,this.formatting_=[];},gu.prototype.setConstants=function(){0===this.dataChannel_?(this.BASE_=16,this.EXT_=17,this.CONTROL_=(20|this.field_)<<8,this.OFFSET_=23):1===this.dataChannel_&&(this.BASE_=24,this.EXT_=25,this.CONTROL_=(28|this.field_)<<8,this.OFFSET_=31),this.PADDING_=0,this.RESUME_CAPTION_LOADING_=32|this.CONTROL_,this.END_OF_CAPTION_=47|this.CONTROL_,this.ROLL_UP_2_ROWS_=37|this.CONTROL_,this.ROLL_UP_3_ROWS_=38|this.CONTROL_,this.ROLL_UP_4_ROWS_=39|this.CONTROL_,this.CARRIAGE_RETURN_=45|this.CONTROL_,this.RESUME_DIRECT_CAPTIONING_=41|this.CONTROL_,this.BACKSPACE_=33|this.CONTROL_,this.ERASE_DISPLAYED_MEMORY_=44|this.CONTROL_,this.ERASE_NON_DISPLAYED_MEMORY_=46|this.CONTROL_;},gu.prototype.isSpecialCharacter=function(e,t){return e===this.EXT_&&48<=t&&t<=63},gu.prototype.isExtCharacter=function(e,t){return (e===this.EXT_+1||e===this.EXT_+2)&&32<=t&&t<=63},gu.prototype.isMidRowCode=function(e,t){return e===this.EXT_&&32<=t&&t<=47},gu.prototype.isOffsetControlCode=function(e,t){return e===this.OFFSET_&&33<=t&&t<=35},gu.prototype.isPAC=function(e,t){return e>=this.BASE_&&e"},"");this[this.mode_](e,i);},gu.prototype.clearFormatting=function(e){if(this.formatting_.length){var t=this.formatting_.reverse().reduce(function(e,t){return e+""},"");this.formatting_=[],this[this.mode_](e,t);}},gu.prototype.popOn=function(e,t){var i=this.nonDisplayed_[this.row_];i+=t,this.nonDisplayed_[this.row_]=i;},gu.prototype.rollUp=function(e,t){var i=this.displayed_[this.row_];i+=t,this.displayed_[this.row_]=i;},gu.prototype.shiftRowsUp_=function(){var e;for(e=0;e>>4&&(t+=e[4]+1),t}function Iu(e){switch(e){case 5:return "slice_layer_without_partitioning_rbsp_idr";case 6:return "sei_rbsp";case 7:return "seq_parameter_set_rbsp";case 8:return "pic_parameter_set_rbsp";case 9:return "access_unit_delimiter_rbsp";default:return null}}function Pu(e){return e[0]<<21|e[1]<<14|e[2]<<7|e[3]}var Ru={parseType:function(e,t){var i=wu(e);return 0===i?"pat":i===t?"pmt":t?"pes":null},parsePat:function(e){var t=xu(e),i=4+Au(e);return t&&(i+=e[i]+1),(31&e[i+10])<<8|e[i+11]},parsePmt:function(e){var t={},i=xu(e),n=4+Au(e);if(i&&(n+=e[n]+1),1&e[n+5]){var r;r=3+((15&e[n+1])<<8|e[n+2])-4;for(var s=12+((15&e[n+10])<<8|e[n+11]);s=e.byteLength)return null;var i,n=null;return 192&(i=e[t+7])&&((n={}).pts=(14&e[t+9])<<27|(255&e[t+10])<<20|(254&e[t+11])<<12|(255&e[t+12])<<5|(254&e[t+13])>>>3,n.pts*=4,n.pts+=(6&e[t+13])>>>1,n.dts=n.pts,64&i&&(n.dts=(14&e[t+14])<<27|(255&e[t+15])<<20|(254&e[t+16])<<12|(255&e[t+17])<<5|(254&e[t+18])>>>3,n.dts*=4,n.dts+=(6&e[t+18])>>>1)),n},videoPacketContainsKeyFrame:function(e){for(var t=4+Au(e),i=e.subarray(t),n=0,r=0,s=!1;r>4?20+i:10+i},parseAdtsSize:function(e,t){var i=(224&e[t+5])>>5,n=e[t+4]<<3;return 6144&e[t+3]|n|i},parseType:function(e,t){return e[t]==="I".charCodeAt(0)&&e[t+1]==="D".charCodeAt(0)&&e[t+2]==="3".charCodeAt(0)?"timed-metadata":!0&e[t]&&240==(240&e[t+1])?"audio":null},parseSampleRate:function(e){for(var t=0;t+5>>2];t++;}return null},parseAacTimestamp:function(e){var t,i,n;t=10,64&e[5]&&(t+=4,t+=Pu(e.subarray(10,14)));do{if((i=Pu(e.subarray(t+4,t+8)))<1)return null;if("PRIV"===String.fromCharCode(e[t],e[t+1],e[t+2],e[t+3])){n=e.subarray(t+10,t+i+10);for(var r=0;r>>2;return a*=4,a+=3&s[7]}}t+=10,t+=i;}while(te.length){i=!0;break}null===s&&(t=e.subarray(o,o+a),s=Fu.aac.parseAacTimestamp(t)),o+=a;break;case"audio":if(e.length-o<7){i=!0;break}if((a=Fu.aac.parseAdtsSize(e,o))>e.length){i=!0;break}null===r&&(t=e.subarray(o,o+a),r=Fu.aac.parseSampleRate(t)),n++,o+=a;break;default:o++;}if(i)return null}if(null===r||null===s)return null;var u=Wu/r;return {audio:[{type:"audio",dts:s,pts:s},{type:"audio",dts:s+1024*n*u,pts:s+1024*n*u}]}}(e):qu(e))&&(i.audio||i.video)?(function(e,t){if(e.audio&&e.audio.length){var i=t;"undefined"==typeof i&&(i=e.audio[0].dts),e.audio.forEach(function(e){e.dts=ju(e.dts,i),e.pts=ju(e.pts,i),e.dtsTime=e.dts/Wu,e.ptsTime=e.pts/Wu;});}if(e.video&&e.video.length){var n=t;if("undefined"==typeof n&&(n=e.video[0].dts),e.video.forEach(function(e){e.dts=ju(e.dts,n),e.pts=ju(e.pts,n),e.dtsTime=e.dts/Wu,e.ptsTime=e.pts/Wu;}),e.firstKeyFrame){var r=e.firstKeyFrame;r.dts=ju(r.dts,n),r.pts=ju(r.pts,n),r.dtsTime=r.dts/Wu,r.ptsTime=r.dts/Wu;}}}(i,t),i):null};function Xu(e,t){for(var i=0;i>8|e>>>24}function Qu(e,t,i){var n,r,s,a,o,u,l,c,h,d=new Int32Array(e.buffer,e.byteOffset,e.byteLength>>2),p=new il(Array.prototype.slice.call(t)),f=new Uint8Array(e.byteLength),m=new Int32Array(f.buffer);for(n=i[0],r=i[1],s=i[2],a=i[3],h=0;h>7))^e]=e;for(t=i=0;!h[t];t^=n||1,i=f[i]||1)for(s=(s=i^i<<1^i<<2^i<<3^i<<4)>>8^255&s^99,o=16843009*p[r=p[n=p[d[h[t]=s]=t]]]^65537*r^257*n^16843008*t,a=257*p[s]^16843008*s,e=0;e<4;e++)l[e][t]=a=a<<24^a>>>8,c[e][s]=o=o<<24^o>>>8;for(e=0;e<5;e++)l[e]=l[e].slice(0),c[e]=c[e].slice(0);return u}(),this._tables=[[tl[0][0].slice(),tl[0][1].slice(),tl[0][2].slice(),tl[0][3].slice(),tl[0][4].slice()],[tl[1][0].slice(),tl[1][1].slice(),tl[1][2].slice(),tl[1][3].slice(),tl[1][4].slice()]];var r=this._tables[0][4],s=this._tables[1],a=e.length,o=1;if(4!==a&&6!==a&&8!==a)throw new Error("Invalid aes key size");var u=e.slice(0),l=[];for(this._key=[u,l],t=a;t<4*a+28;t++)n=u[t-1],(t%a==0||8===a&&t%a==4)&&(n=r[n>>>24]<<24^r[n>>16&255]<<16^r[n>>8&255]<<8^r[255&n],t%a==0&&(n=n<<8^n>>>24^o<<24,o=o<<1^283*(o>>7))),u[t]=u[t-a]^n;for(i=0;t;i++,t--)n=u[3&i?t:t-4],l[i]=t<=4||i<4?n:s[0][r[n>>>24]]^s[1][r[n>>16&255]]^s[2][r[n>>8&255]]^s[3][r[255&n]];}return e.prototype.decrypt=function(e,t,i,n,r,s){var a,o,u,l,c=this._key[1],h=e^c[0],d=n^c[1],p=i^c[2],f=t^c[3],m=c.length/4-2,g=4,v=this._tables[1],y=v[0],_=v[1],b=v[2],T=v[3],S=v[4];for(l=0;l>>24]^_[d>>16&255]^b[p>>8&255]^T[255&f]^c[g],o=y[d>>>24]^_[p>>16&255]^b[f>>8&255]^T[255&h]^c[g+1],u=y[p>>>24]^_[f>>16&255]^b[h>>8&255]^T[255&d]^c[g+2],f=y[f>>>24]^_[h>>16&255]^b[d>>8&255]^T[255&p]^c[g+3],g+=4,h=a,d=o,p=u;for(l=0;l<4;l++)r[(3&-l)+s]=S[h>>>24]<<24^S[d>>16&255]<<16^S[p>>8&255]<<8^S[255&f]^c[g++],a=h,h=d,d=p,p=f,f=a;},e}(),nl=function(t){function e(){var e;return (e=t.call(this,Yu)||this).jobs=[],e.delay=1,e.timeout_=null,e}ze(e,t);var i=e.prototype;return i.processJob_=function(){this.jobs.shift()(),this.jobs.length?this.timeout_=setTimeout(this.processJob_.bind(this),this.delay):this.timeout_=null;},i.push=function(e){this.jobs.push(e),this.timeout_||(this.timeout_=setTimeout(this.processJob_.bind(this),this.delay));},e}(Yu),rl=function(){function u(e,t,i,n){var r=u.STEP,s=new Int32Array(e.buffer),a=new Uint8Array(e.byteLength),o=0;for(this.asyncStream_=new nl,this.asyncStream_.push(this.decryptChunk_(s.subarray(o,o+r),t,i,a)),o=r;oDate.now()}function Al(e){return e.excludeUntil&&e.excludeUntil===1/0}function Il(e){var t=xl(e);return !e.disabled&&!t}function Pl(e,t){return t.attributes&&t.attributes[e]}function Ll(e,t){if(1===e.playlists.length)return !0;var i=t.attributes.BANDWIDTH||Number.MAX_VALUE;return 0===e.playlists.filter(function(e){return !!Il(e)&&(e.attributes.BANDWIDTH||0)i+.25*s.duration)return null;n=s;}return {segment:n,estimatedStart:n.videoTimingInfo?n.videoTimingInfo.transmuxedPresentationStart:i-n.duration,type:n.videoTimingInfo?"accurate":"estimate"}}(n,t);if(!s)return r({message:"valid programTime was not found"});if("estimate"===s.type)return r({message:"Accurate programTime could not be determined. Please seek to e.seekTime and try again",seekTime:s.estimatedStart});var a={mediaSeconds:n},o=function(e,t){if(!t.dateTimeObject)return null;var i=t.videoTimingInfo.transmuxerPrependedSeconds,n=e-(t.videoTimingInfo.transmuxedPresentationStart+i);return new Date(t.dateTimeObject.getTime()+1e3*n)}(n,s.segment);return o&&(a.programDateTime=o.toISOString()),r(null,a)}function Hl(e){var t=e.programTime,i=e.playlist,n=e.retryCount,r=void 0===n?2:n,s=e.seekTo,a=e.pauseAfterSeek,o=void 0===a||a,u=e.tech,l=e.callback;if(!l)throw new Error("seekToProgramTime: callback must be provided");if("undefined"==typeof t||!i||!s)return l({message:"seekToProgramTime: programTime, seekTo and playlist must be provided"});if(!i.endList&&!u.hasStarted_)return l({message:"player must be playing a live stream to start buffering"});if(!function(e){if(!e.segments||0===e.segments.length)return !1;for(var t=0;t "+e.end(i));return t.join(", ")}function Gl(e){for(var t=[],i=0;i=e&&i.removeCue(r);}function Kl(e){return isNaN(e)||Math.abs(e)===1/0?Number.MAX_VALUE:e}function Yl(e,t,i){var n=y.WebKitDataCue||y.VTTCue;if(t&&t.forEach(function(e){var t=e.stream;this.inbandTextTracks_[t].addCue(new n(e.startTime+this.timestampOffset,e.endTime+this.timestampOffset,e.text));},e),i){var r=Kl(e.mediaSource_.duration);if(i.forEach(function(e){var i=e.cueTime+this.timestampOffset;!("number"!=typeof i||y.isNaN(i)||i<0)&&i<1/0&&e.frames.forEach(function(e){var t=new n(i,i,e.value||e.url||e.data||"");t.frame=e,t.value=e,function(e){Object.defineProperties(e.frame,{id:{get:function(){return cs.log.warn("cue.frame.id is deprecated. Use cue.value.key instead."),e.value.key}},value:{get:function(){return cs.log.warn("cue.frame.value is deprecated. Use cue.value.data instead."),e.value.data}},privateData:{get:function(){return cs.log.warn("cue.frame.privateData is deprecated. Use cue.value.data instead."),e.value.data}}});}(t),this.metadataTrack_.addCue(t);},this);},e),e.metadataTrack_&&e.metadataTrack_.cues&&e.metadataTrack_.cues.length){for(var s=e.metadataTrack_.cues,a=[],o=0;o>>1,e.samplingfrequencyindex<<7|e.channelcount<<3,6,1,2]))},m=function(e){return l(S.hdlr,A[e])},f=function(e){var t=new Uint8Array([0,0,0,0,0,0,0,2,0,0,0,3,0,1,95,144,e.duration>>>24&255,e.duration>>>16&255,e.duration>>>8&255,255&e.duration,85,196,0,0]);return e.samplerate&&(t[12]=e.samplerate>>>24&255,t[13]=e.samplerate>>>16&255,t[14]=e.samplerate>>>8&255,t[15]=255&e.samplerate),l(S.mdhd,t)},p=function(e){return l(S.mdia,f(e),m(e.type),n(e))},s=function(e){return l(S.mfhd,new Uint8Array([0,0,0,0,(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e]))},n=function(e){return l(S.minf,"video"===e.type?l(S.vmhd,I):l(S.smhd,P),t(),v(e))},a=function(e,t){for(var i=[],n=t.length;n--;)i[n]=_(t[n]);return l.apply(null,[S.moof,s(e)].concat(i))},o=function(e){for(var t=e.length,i=[];t--;)i[t]=h(e[t]);return l.apply(null,[S.moov,c(4294967295)].concat(i).concat(u(e)))},u=function(e){for(var t=e.length,i=[];t--;)i[t]=b(e[t]);return l.apply(null,[S.mvex].concat(i))},c=function(e){var t=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,2,0,1,95,144,(4278190080&e)>>24,(16711680&e)>>16,(65280&e)>>8,255&e,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return l(S.mvhd,t)},g=function(e){var t,i,n=e.samples||[],r=new Uint8Array(4+n.length);for(i=0;i>>8),s.push(255&n[t].byteLength),s=s.concat(Array.prototype.slice.call(n[t]));for(t=0;t>>8),a.push(255&r[t].byteLength),a=a.concat(Array.prototype.slice.call(r[t]));if(i=[S.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(65280&e.width)>>8,255&e.width,(65280&e.height)>>8,255&e.height,0,72,0,0,0,72,0,0,0,0,0,0,0,1,19,118,105,100,101,111,106,115,45,99,111,110,116,114,105,98,45,104,108,115,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),l(S.avcC,new Uint8Array([1,e.profileIdc,e.profileCompatibility,e.levelIdc,255].concat([n.length],s,[r.length],a))),l(S.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192]))],e.sarRatio){var o=e.sarRatio[0],u=e.sarRatio[1];i.push(l(S.pasp,new Uint8Array([(4278190080&o)>>24,(16711680&o)>>16,(65280&o)>>8,255&o,(4278190080&u)>>24,(16711680&u)>>16,(65280&u)>>8,255&u])));}return l.apply(null,i)},M=function(e){return l(S.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,(65280&e.channelcount)>>8,255&e.channelcount,(65280&e.samplesize)>>8,255&e.samplesize,0,0,0,0,(65280&e.samplerate)>>8,255&e.samplerate,0,0]),i(e))},d=function(e){var t=new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,(4278190080&e.id)>>24,(16711680&e.id)>>16,(65280&e.id)>>8,255&e.id,0,0,0,0,(4278190080&e.duration)>>24,(16711680&e.duration)>>16,(65280&e.duration)>>8,255&e.duration,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,(65280&e.width)>>8,255&e.width,0,0,(65280&e.height)>>8,255&e.height,0,0]);return l(S.tkhd,t)},_=function(e){var t,i,n,r,s,a;return t=l(S.tfhd,new Uint8Array([0,0,0,58,(4278190080&e.id)>>24,(16711680&e.id)>>16,(65280&e.id)>>8,255&e.id,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0])),s=Math.floor(e.baseMediaDecodeTime/(1+V)),a=Math.floor(e.baseMediaDecodeTime%(1+V)),i=l(S.tfdt,new Uint8Array([1,0,0,0,s>>>24&255,s>>>16&255,s>>>8&255,255&s,a>>>24&255,a>>>16&255,a>>>8&255,255&a])),"audio"===e.type?(n=T(e,92),l(S.traf,t,i,n)):(r=g(e),n=T(e,r.length+92),l(S.traf,t,i,n,r))},h=function(e){return e.duration=e.duration||4294967295,l(S.trak,d(e),p(e))},b=function(e){var t=new Uint8Array([0,0,0,0,(4278190080&e.id)>>24,(16711680&e.id)>>16,(65280&e.id)>>8,255&e.id,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return "video"!==e.type&&(t[t.length-1]=0),l(S.trex,t)},F=function(e,t){var i=0,n=0,r=0,s=0;return e.length&&(void 0!==e[0].duration&&(i=1),void 0!==e[0].size&&(n=2),void 0!==e[0].flags&&(r=4),void 0!==e[0].compositionTimeOffset&&(s=8)),[0,0,i|n|r|s,1,(4278190080&e.length)>>>24,(16711680&e.length)>>>16,(65280&e.length)>>>8,255&e.length,(4278190080&t)>>>24,(16711680&t)>>>16,(65280&t)>>>8,255&t]},j=function(e,t){var i,n,r,s,a,o;for(t+=20+16*(s=e.samples||[]).length,r=F(s,t),(n=new Uint8Array(r.length+16*s.length)).set(r),i=r.length,o=0;o>>24,n[i++]=(16711680&a.duration)>>>16,n[i++]=(65280&a.duration)>>>8,n[i++]=255&a.duration,n[i++]=(4278190080&a.size)>>>24,n[i++]=(16711680&a.size)>>>16,n[i++]=(65280&a.size)>>>8,n[i++]=255&a.size,n[i++]=a.flags.isLeading<<2|a.flags.dependsOn,n[i++]=a.flags.isDependedOn<<6|a.flags.hasRedundancy<<4|a.flags.paddingValue<<1|a.flags.isNonSyncSample,n[i++]=61440&a.flags.degradationPriority,n[i++]=15&a.flags.degradationPriority,n[i++]=(4278190080&a.compositionTimeOffset)>>>24,n[i++]=(16711680&a.compositionTimeOffset)>>>16,n[i++]=(65280&a.compositionTimeOffset)>>>8,n[i++]=255&a.compositionTimeOffset;return l(S.trun,n)},B=function(e,t){var i,n,r,s,a,o;for(t+=20+8*(s=e.samples||[]).length,r=F(s,t),(i=new Uint8Array(r.length+8*s.length)).set(r),n=r.length,o=0;o>>24,i[n++]=(16711680&a.duration)>>>16,i[n++]=(65280&a.duration)>>>8,i[n++]=255&a.duration,i[n++]=(4278190080&a.size)>>>24,i[n++]=(16711680&a.size)>>>16,i[n++]=(65280&a.size)>>>8,i[n++]=255&a.size;return l(S.trun,i)},T=function(e,t){return "audio"===e.type?B(e,t):j(e,t)};r=function(){return l(S.ftyp,k,C,k,E)};function q(e,t){var i={size:0,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0,degradationPriority:0,isNonSyncSample:1}};return i.dataOffset=t,i.compositionTimeOffset=e.pts-e.dts,i.duration=e.duration,i.size=4*e.length,i.size+=e.byteLength,e.keyFrame&&(i.flags.dependsOn=2,i.flags.isNonSyncSample=0),i}function W(e){for(var t=[];e--;)t.push(0);return t}function z(){if(!X){var e={96e3:[ae,[227,64],W(154),[56]],88200:[ae,[231],W(170),[56]],64e3:[ae,[248,192],W(240),[56]],48e3:[ae,[255,192],W(268),[55,148,128],W(54),[112]],44100:[ae,[255,192],W(268),[55,163,128],W(84),[112]],32e3:[ae,[255,192],W(268),[55,234],W(226),[112]],24e3:[ae,[255,192],W(268),[55,255,128],W(268),[111,112],W(126),[224]],16e3:[ae,[255,192],W(268),[55,255,128],W(268),[111,255],W(269),[223,108],W(195),[1,192]],12e3:[oe,W(268),[3,127,248],W(268),[6,255,240],W(268),[13,255,224],W(268),[27,253,128],W(259),[56]],11025:[oe,W(268),[3,127,248],W(268),[6,255,240],W(268),[13,255,224],W(268),[27,255,192],W(268),[55,175,128],W(108),[112]],8e3:[oe,W(268),[3,121,16],W(47),[7]]};X=function(i){return Object.keys(i).reduce(function(e,t){return e[t]=new Uint8Array(i[t].reduce(function(e,t){return e.concat(t)},[])),e},{})}(e);}return X}function G(){G.prototype.init.call(this),this.captionPackets_=[],this.ccStreams_=[new Ae(0,0),new Ae(0,1),new Ae(1,0),new Ae(1,1)],this.reset(),this.ccStreams_.forEach(function(e){e.on("data",this.trigger.bind(this,"data")),e.on("partialdone",this.trigger.bind(this,"partialdone")),e.on("done",this.trigger.bind(this,"done"));},this);}var X,K,Y,$,Q,J=function(e){return l(S.mdat,e)},Z=a,ee=function(e){var t,i=r(),n=o(e);return (t=new Uint8Array(i.byteLength+n.byteLength)).set(i),t.set(n,i.byteLength),t},te=function(e){var t,i,n=[],r=[];for(r.byteLength=0,r.nalCount=0,r.duration=0,t=n.byteLength=0;t=i?e:(t.minSegmentDts=1/0,e.filter(function(e){return e.dts>=i&&(t.minSegmentDts=Math.min(t.minSegmentDts,e.dts),t.minSegmentPts=t.minSegmentDts,!0)}))},fe=function(e){var t,i,n=[];for(t=0;t>>8,r=255&t,t!==this.PADDING_)if(t===this.RESUME_CAPTION_LOADING_)this.mode_="popOn";else if(t===this.END_OF_CAPTION_)this.mode_="popOn",this.clearFormatting(e.pts),this.flushDisplayed(e.pts),i=this.displayed_,this.displayed_=this.nonDisplayed_,this.nonDisplayed_=i,this.startPts_=e.pts;else if(t===this.ROLL_UP_2_ROWS_)this.rollUpRows_=2,this.setRollUp(e.pts);else if(t===this.ROLL_UP_3_ROWS_)this.rollUpRows_=3,this.setRollUp(e.pts);else if(t===this.ROLL_UP_4_ROWS_)this.rollUpRows_=4,this.setRollUp(e.pts);else if(t===this.CARRIAGE_RETURN_)this.clearFormatting(e.pts),this.flushDisplayed(e.pts),this.shiftRowsUp_(),this.startPts_=e.pts;else if(t===this.BACKSPACE_)"popOn"===this.mode_?this.nonDisplayed_[this.row_]=this.nonDisplayed_[this.row_].slice(0,-1):this.displayed_[this.row_]=this.displayed_[this.row_].slice(0,-1);else if(t===this.ERASE_DISPLAYED_MEMORY_)this.flushDisplayed(e.pts),this.displayed_=Ee();else if(t===this.ERASE_NON_DISPLAYED_MEMORY_)this.nonDisplayed_=Ee();else if(t===this.RESUME_DIRECT_CAPTIONING_)"paintOn"!==this.mode_&&(this.flushDisplayed(e.pts),this.displayed_=Ee()),this.mode_="paintOn",this.startPts_=e.pts;else if(this.isSpecialCharacter(n,r))s=Ce((n=(3&n)<<8)|r),this[this.mode_](e.pts,s),this.column_++;else if(this.isExtCharacter(n,r))"popOn"===this.mode_?this.nonDisplayed_[this.row_]=this.nonDisplayed_[this.row_].slice(0,-1):this.displayed_[this.row_]=this.displayed_[this.row_].slice(0,-1),s=Ce((n=(3&n)<<8)|r),this[this.mode_](e.pts,s),this.column_++;else if(this.isMidRowCode(n,r))this.clearFormatting(e.pts),this[this.mode_](e.pts," "),this.column_++,14==(14&r)&&this.addFormatting(e.pts,["i"]),1==(1&r)&&this.addFormatting(e.pts,["u"]);else if(this.isOffsetControlCode(n,r))this.column_+=3&r;else if(this.isPAC(n,r)){var a=xe.indexOf(7968&t);"rollUp"===this.mode_&&(a-this.rollUpRows_+1<0&&(a=this.rollUpRows_-1),this.setRollUp(e.pts,a)),a!==this.row_&&(this.clearFormatting(e.pts),this.row_=a),1&r&&-1===this.formatting_.indexOf("u")&&this.addFormatting(e.pts,["u"]),16==(16&t)&&(this.column_=4*((14&t)>>1)),this.isColorPAC(r)&&14==(14&r)&&this.addFormatting(e.pts,["i"]);}else this.isNormalChar(n)&&(0===r&&(r=null),s=Ce(n),s+=Ce(r),this[this.mode_](e.pts,s),this.column_+=s.length);}else this.lastControlCode_=null;};};Ae.prototype=new H,Ae.prototype.flushDisplayed=function(e){var t=this.displayed_.map(function(e){try{return e.trim()}catch(e){return ""}}).join("\n").replace(/^\n+|\n+$/g,"");t.length&&this.trigger("data",{startPts:this.startPts_,endPts:e,text:t,stream:this.name_});},Ae.prototype.reset=function(){this.mode_="popOn",this.topRow_=0,this.startPts_=0,this.displayed_=Ee(),this.nonDisplayed_=Ee(),this.lastControlCode_=null,this.column_=0,this.row_=14,this.rollUpRows_=2,this.formatting_=[];},Ae.prototype.setConstants=function(){0===this.dataChannel_?(this.BASE_=16,this.EXT_=17,this.CONTROL_=(20|this.field_)<<8,this.OFFSET_=23):1===this.dataChannel_&&(this.BASE_=24,this.EXT_=25,this.CONTROL_=(28|this.field_)<<8,this.OFFSET_=31),this.PADDING_=0,this.RESUME_CAPTION_LOADING_=32|this.CONTROL_,this.END_OF_CAPTION_=47|this.CONTROL_,this.ROLL_UP_2_ROWS_=37|this.CONTROL_,this.ROLL_UP_3_ROWS_=38|this.CONTROL_,this.ROLL_UP_4_ROWS_=39|this.CONTROL_,this.CARRIAGE_RETURN_=45|this.CONTROL_,this.RESUME_DIRECT_CAPTIONING_=41|this.CONTROL_,this.BACKSPACE_=33|this.CONTROL_,this.ERASE_DISPLAYED_MEMORY_=44|this.CONTROL_,this.ERASE_NON_DISPLAYED_MEMORY_=46|this.CONTROL_;},Ae.prototype.isSpecialCharacter=function(e,t){return e===this.EXT_&&48<=t&&t<=63},Ae.prototype.isExtCharacter=function(e,t){return (e===this.EXT_+1||e===this.EXT_+2)&&32<=t&&t<=63},Ae.prototype.isMidRowCode=function(e,t){return e===this.EXT_&&32<=t&&t<=47},Ae.prototype.isOffsetControlCode=function(e,t){return e===this.OFFSET_&&33<=t&&t<=35},Ae.prototype.isPAC=function(e,t){return e>=this.BASE_&&e"},"");this[this.mode_](e,i);},Ae.prototype.clearFormatting=function(e){if(this.formatting_.length){var t=this.formatting_.reverse().reduce(function(e,t){return e+""},"");this.formatting_=[],this[this.mode_](e,t);}},Ae.prototype.popOn=function(e,t){var i=this.nonDisplayed_[this.row_];i+=t,this.nonDisplayed_[this.row_]=i;},Ae.prototype.rollUp=function(e,t){var i=this.displayed_[this.row_];i+=t,this.displayed_[this.row_]=i;},Ae.prototype.shiftRowsUp_=function(){var e;for(e=0;e>>2;o*=4,o+=3&a[7],r.timeStamp=o,void 0===t.pts&&void 0===t.dts&&(t.pts=r.timeStamp,t.dts=r.timeStamp),this.trigger("timestamp",r);}t.frames.push(r),i+=10,i+=n;}while(i>>4&&(i+=e[i]+1),0===t.pid)t.type="pat",n(e.subarray(i),t),this.trigger("data",t);else if(t.pid===this.pmtPid)for(t.type="pmt",n(e.subarray(i),t),this.trigger("data",t);this.packetsWaitingForPmt.length;)this.processPes_.apply(this,this.packetsWaitingForPmt.shift());else void 0===this.programMapTable?this.packetsWaitingForPmt.push([e,i,t]):this.processPes_(e,i,t);},this.processPes_=function(e,t,i){i.pid===this.programMapTable.video?i.streamType=Oe.H264_STREAM_TYPE:i.pid===this.programMapTable.audio?i.streamType=Oe.ADTS_STREAM_TYPE:i.streamType=this.programMapTable["timed-metadata"][i.pid],i.type="pes",i.data=e.subarray(t),this.trigger("data",i);};}).prototype=new H,Fe.STREAM_TYPES={h264:27,adts:15},(He=function(){function n(e,t,i){var n,r,s=new Uint8Array(e.size),a={type:t},o=0,u=0;if(e.data.length&&!(e.size<9)){for(a.trackId=e.data[0].pid,o=0;o>>3,t.pts*=4,t.pts+=(6&e[13])>>>1,t.dts=t.pts,64&i&&(t.dts=(14&e[14])<<27|(255&e[15])<<20|(254&e[16])<<12|(255&e[17])<<5|(254&e[18])>>>3,t.dts*=4,t.dts+=(6&e[18])>>>1)),t.data=e.subarray(9+e[8]);}(s,a),n="video"===t||a.packetLength<=e.size,(i||n)&&(e.size=0,e.data.length=0),n&&l.trigger("data",a);}}var t,l=this,r={data:[],size:0},s={data:[],size:0},a={data:[],size:0};He.prototype.init.call(this),this.push=function(i){({pat:function(){},pes:function(){var e,t;switch(i.streamType){case Oe.H264_STREAM_TYPE:e=r,t="video";break;case Oe.ADTS_STREAM_TYPE:e=s,t="audio";break;case Oe.METADATA_STREAM_TYPE:e=a,t="timed-metadata";break;default:return}i.payloadUnitStartIndicator&&n(e,t,!0),e.data.push(i),e.size+=i.data.byteLength;},pmt:function(){var e={type:"metadata",tracks:[]};null!==(t=i.programMapTable).video&&e.tracks.push({timelineStartInfo:{baseMediaDecodeTime:0},id:+t.video,codec:"avc",type:"video"}),null!==t.audio&&e.tracks.push({timelineStartInfo:{baseMediaDecodeTime:0},id:+t.audio,codec:"adts",type:"audio"}),l.trigger("data",e);}})[i.type]();},this.reset=function(){r.size=0,r.data.length=0,s.size=0,s.data.length=0,this.trigger("reset");},this.flushStreams_=function(){n(r,"video"),n(s,"audio"),n(a,"timed-metadata");},this.flush=function(){this.flushStreams_(),this.trigger("done");};}).prototype=new H;var We={PAT_PID:0,MP2T_PACKET_LENGTH:188,TransportPacketStream:je,TransportParseStream:Fe,ElementaryStream:He,TimestampRolloverStream:qe,CaptionStream:Le.CaptionStream,Cea608Stream:Le.Cea608Stream,MetadataStream:Ve};for(var ze in Oe)Oe.hasOwnProperty(ze)&&(We[ze]=Oe[ze]);var Ge,Xe=We,Ke=ue,Ye=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];(Ge=function(u){var l,c=0;Ge.prototype.init.call(this),this.push=function(e){var t,i,n,r,s,a,o=0;if(u||(c=0),"audio"===e.type)for(l?(r=l,(l=new Uint8Array(r.byteLength+e.data.byteLength)).set(r),l.set(e.data,r.byteLength)):l=e.data;o+5>5,a=(s=1024*(1+(3&l[o+6])))*Ke/Ye[(60&l[o+2])>>>2],n=o+t,l.byteLength>>6&3),channelcount:(1&l[o+2])<<2|(192&l[o+3])>>>6,samplerate:Ye[(60&l[o+2])>>>2],samplingfrequencyindex:(60&l[o+2])>>>2,samplesize:16,data:l.subarray(o+7+i,n)}),c++,l.byteLength===n)return void(l=void 0);l=l.subarray(n);}else o++;},this.flush=function(){c=0,this.trigger("done");},this.reset=function(){l=void 0,this.trigger("reset");},this.endTimeline=function(){l=void 0,this.trigger("endedtimeline");};}).prototype=new H;var $e,Qe,Je,Ze=Ge,et=function(n){var r=n.byteLength,s=0,a=0;this.length=function(){return 8*r},this.bitsAvailable=function(){return 8*r+a},this.loadWord=function(){var e=n.byteLength-r,t=new Uint8Array(4),i=Math.min(4,r);if(0===i)throw new Error("no bytes available");t.set(n.subarray(e,e+i)),s=new DataView(t.buffer).getUint32(0),a=8*i,r-=i;},this.skipBits=function(e){var t;e>>32-t;return 0<(a-=t)?s<<=t:0>>e))return s<<=e,a-=e,e;return this.loadWord(),e+this.skipLeadingZeros()},this.skipUnsignedExpGolomb=function(){this.skipBits(1+this.skipLeadingZeros());},this.skipExpGolomb=function(){this.skipBits(1+this.skipLeadingZeros());},this.readUnsignedExpGolomb=function(){var e=this.skipLeadingZeros();return this.readBits(e+1)-1},this.readExpGolomb=function(){var e=this.readUnsignedExpGolomb();return 1&e?1+e>>>1:-1*(e>>>1)},this.readBoolean=function(){return 1===this.readBits(1)},this.readUnsignedByte=function(){return this.readBits(8)},this.loadWord();};(Qe=function(){var n,r,s=0;Qe.prototype.init.call(this),this.push=function(e){for(var t,i=(r=r?((t=new Uint8Array(r.byteLength+e.data.byteLength)).set(r),t.set(e.data,r.byteLength),t):e.data).byteLength;s>4?20+i:10+i},st=function(e,t){var i=(224&e[t+5])>>5,n=e[t+4]<<3;return 6144&e[t+3]|n|i};(tt=function(){var o=new Uint8Array,u=0;tt.prototype.init.call(this),this.setTimestamp=function(e){u=e;},this.push=function(e){var t,i,n,r,s=0,a=0;for(o.length?(r=o.length,(o=new Uint8Array(e.byteLength+r)).set(o.subarray(0,r)),o.set(e,r)):o=e;3<=o.length-a;)if(o[a]!=="I".charCodeAt(0)||o[a+1]!=="D".charCodeAt(0)||o[a+2]!=="3".charCodeAt(0))if(255!=(255&o[a])||240!=(240&o[a+1]))a++;else {if(o.length-a<7)break;if(a+(s=st(o,a))>o.length)break;n={type:"audio",data:o.subarray(a,a+s),pts:u,dts:u},this.trigger("data",n),a+=s;}else {if(o.length-a<10)break;if(a+(s=rt(o,a))>o.length)break;i={type:"timed-metadata",data:o.subarray(a,a+s)},this.trigger("data",i),a+=s;}t=o.length-a,o=0n.pts?t++:(i++,s-=r.byteLength,a-=r.nalCount,o-=r.duration);return 0===i?e:i===e.length?null:((u=e.slice(i)).byteLength=s,u.duration=o,u.nalCount=a,u.pts=u[0].pts,u.dts=u[0].dts,u)},this.alignGopsAtEnd_=function(e){var t,i,n,r,s,a,o;for(t=f.length-1,i=e.length-1,s=null,a=!1;0<=t&&0<=i;){if(n=f[t],r=e[i],n.pts===r.pts){a=!0;break}n.pts>r.pts?t--:(t===f.length-1&&(s=i),i--);}if(!a&&null===s)return null;if(0===(o=a?i:s))return e;var u=e.slice(o),l=u.reduce(function(e,t){return e.byteLength+=t.byteLength,e.duration+=t.duration,e.nalCount+=t.nalCount,e},{byteLength:0,duration:0,nalCount:0});return u.byteLength=l.byteLength,u.duration=l.duration,u.nalCount=l.nalCount,u.pts=u[0].pts,u.dts=u[0].dts,u},this.alignGopsWith=function(e){f=e;};}).prototype=new H,(ht=function(e,t){this.numberOfTracks=0,this.metadataStream=t,"undefined"!=typeof(e=e||{}).remux?this.remuxTracks=!!e.remux:this.remuxTracks=!0,"boolean"==typeof e.keepOriginalTimestamps?this.keepOriginalTimestamps=e.keepOriginalTimestamps:this.keepOriginalTimestamps=!1,this.pendingTracks=[],this.videoTrack=null,this.pendingBoxes=[],this.pendingCaptions=[],this.pendingMetadata=[],this.pendingBytes=0,this.emittedTracks=0,ht.prototype.init.call(this),this.push=function(e){return e.text?this.pendingCaptions.push(e):e.frames?this.pendingMetadata.push(e):(this.pendingTracks.push(e.track),this.pendingBytes+=e.boxes.byteLength,"video"===e.track.type&&(this.videoTrack=e.track,this.pendingBoxes.push(e.boxes)),void("audio"===e.track.type&&(this.audioTrack=e.track,this.pendingBoxes.unshift(e.boxes))))};}).prototype=new H,ht.prototype.flush=function(e){var t,i,n,r,s=0,a={captions:[],captionStreams:{},metadata:[],info:{}},o=0;if(this.pendingTracks.length=this.numberOfTracks&&(this.trigger("done"),this.emittedTracks=0))}if(this.videoTrack?(o=this.videoTrack.timelineStartInfo.pts,ft.forEach(function(e){a.info[e]=this.videoTrack[e];},this)):this.audioTrack&&(o=this.audioTrack.timelineStartInfo.pts,pt.forEach(function(e){a.info[e]=this.audioTrack[e];},this)),this.videoTrack||this.audioTrack){for(1===this.pendingTracks.length?a.type=this.pendingTracks[0].type:a.type="combined",this.emittedTracks+=this.pendingTracks.length,n=ee(this.pendingTracks),a.initSegment=new Uint8Array(n.byteLength),a.initSegment.set(n),a.data=new Uint8Array(this.pendingBytes),r=0;r=this.numberOfTracks&&(this.trigger("done"),this.emittedTracks=0);},ht.prototype.setRemux=function(e){this.remuxTracks=e;},(ct=function(r){var s,a,o=this,i=!0;ct.prototype.init.call(this),r=r||{},this.baseMediaDecodeTime=r.baseMediaDecodeTime||0,this.transmuxPipeline_={},this.setupAacPipeline=function(){var t={};(this.transmuxPipeline_=t).type="aac",t.metadataStream=new Xe.MetadataStream,t.aacStream=new dt,t.audioTimestampRolloverStream=new Xe.TimestampRolloverStream("audio"),t.timedMetadataTimestampRolloverStream=new Xe.TimestampRolloverStream("timed-metadata"),t.adtsStream=new Ze,t.coalesceStream=new ht(r,t.metadataStream),t.headOfPipeline=t.aacStream,t.aacStream.pipe(t.audioTimestampRolloverStream).pipe(t.adtsStream),t.aacStream.pipe(t.timedMetadataTimestampRolloverStream).pipe(t.metadataStream).pipe(t.coalesceStream),t.metadataStream.on("timestamp",function(e){t.aacStream.setTimestamp(e.timeStamp);}),t.aacStream.on("data",function(e){"timed-metadata"!==e.type||t.audioSegmentStream||(a=a||{timelineStartInfo:{baseMediaDecodeTime:o.baseMediaDecodeTime},codec:"adts",type:"audio"},t.coalesceStream.numberOfTracks++,t.audioSegmentStream=new lt(a,r),t.audioSegmentStream.on("timingInfo",o.trigger.bind(o,"audioTimingInfo")),t.adtsStream.pipe(t.audioSegmentStream).pipe(t.coalesceStream)),o.trigger("trackinfo",{hasAudio:!!a,hasVideo:!!s});}),t.coalesceStream.on("data",this.trigger.bind(this,"data")),t.coalesceStream.on("done",this.trigger.bind(this,"done"));},this.setupTsPipeline=function(){var n={};(this.transmuxPipeline_=n).type="ts",n.metadataStream=new Xe.MetadataStream,n.packetStream=new Xe.TransportPacketStream,n.parseStream=new Xe.TransportParseStream,n.elementaryStream=new Xe.ElementaryStream,n.timestampRolloverStream=new Xe.TimestampRolloverStream,n.adtsStream=new Ze,n.h264Stream=new mt,n.captionStream=new Xe.CaptionStream,n.coalesceStream=new ht(r,n.metadataStream),n.headOfPipeline=n.packetStream,n.packetStream.pipe(n.parseStream).pipe(n.elementaryStream).pipe(n.timestampRolloverStream),n.timestampRolloverStream.pipe(n.h264Stream),n.timestampRolloverStream.pipe(n.adtsStream),n.timestampRolloverStream.pipe(n.metadataStream).pipe(n.coalesceStream),n.h264Stream.pipe(n.captionStream).pipe(n.coalesceStream),n.elementaryStream.on("data",function(e){var t,i=r.keepOriginalTimestamps?0:o.baseMediaDecodeTime;if("metadata"===e.type){for(t=e.tracks.length;t--;)s||"video"!==e.tracks[t].type?a||"audio"!==e.tracks[t].type||((a=e.tracks[t]).timelineStartInfo.baseMediaDecodeTime=i):(s=e.tracks[t]).timelineStartInfo.baseMediaDecodeTime=i;s&&!n.videoSegmentStream&&(n.coalesceStream.numberOfTracks++,n.videoSegmentStream=new ut(s,r),n.videoSegmentStream.on("timelineStartInfo",function(e){a&&!r.keepOriginalTimestamps&&(a.timelineStartInfo=e,n.audioSegmentStream.setEarliestDts(e.dts-o.baseMediaDecodeTime));}),n.videoSegmentStream.on("processedGopsInfo",o.trigger.bind(o,"gopInfo")),n.videoSegmentStream.on("segmentTimingInfo",o.trigger.bind(o,"videoSegmentTimingInfo")),n.videoSegmentStream.on("baseMediaDecodeTime",function(e){a&&n.audioSegmentStream.setVideoBaseMediaDecodeTime(e);}),n.videoSegmentStream.on("timingInfo",o.trigger.bind(o,"videoTimingInfo")),n.h264Stream.pipe(n.videoSegmentStream).pipe(n.coalesceStream)),a&&!n.audioSegmentStream&&(n.coalesceStream.numberOfTracks++,n.audioSegmentStream=new lt(a,r),n.audioSegmentStream.on("timingInfo",o.trigger.bind(o,"audioTimingInfo")),n.adtsStream.pipe(n.audioSegmentStream).pipe(n.coalesceStream)),o.trigger("trackinfo",{hasAudio:!!a,hasVideo:!!s});}}),n.coalesceStream.on("data",this.trigger.bind(this,"data")),n.coalesceStream.on("id3Frame",function(e){e.dispatchType=n.metadataStream.dispatchType,o.trigger("id3Frame",e);}),n.coalesceStream.on("caption",this.trigger.bind(this,"caption")),n.coalesceStream.on("done",this.trigger.bind(this,"done"));},this.setBaseMediaDecodeTime=function(e){var t=this.transmuxPipeline_;this.baseMediaDecodeTime=e,a&&(a.timelineStartInfo.dts=void 0,a.timelineStartInfo.pts=void 0,ve(a),t.audioTimestampRolloverStream&&t.audioTimestampRolloverStream.discontinuity()),s&&(t.videoSegmentStream&&(t.videoSegmentStream.gopCache_=[]),s.timelineStartInfo.dts=void 0,s.timelineStartInfo.pts=void 0,ve(s),t.captionStream.reset()),t.timestampRolloverStream&&t.timestampRolloverStream.discontinuity();},this.setAudioAppendStart=function(e){a&&this.transmuxPipeline_.audioSegmentStream.setAudioAppendStart(e);},this.setRemux=function(e){var t=this.transmuxPipeline_;r.remux=e,t&&t.coalesceStream&&t.coalesceStream.setRemux(e);},this.alignGopsWith=function(e){s&&this.transmuxPipeline_.videoSegmentStream&&this.transmuxPipeline_.videoSegmentStream.alignGopsWith(e);},this.push=function(e){if(i){var t=gt(e);t&&"aac"!==this.transmuxPipeline_.type?this.setupAacPipeline():t||"ts"===this.transmuxPipeline_.type||this.setupTsPipeline(),i=!1;}this.transmuxPipeline_.headOfPipeline.push(e);},this.flush=function(){i=!0,this.transmuxPipeline_.headOfPipeline.flush();},this.endTimeline=function(){this.transmuxPipeline_.headOfPipeline.endTimeline();},this.reset=function(){this.transmuxPipeline_.headOfPipeline&&this.transmuxPipeline_.headOfPipeline.reset();},this.resetCaptions=function(){this.transmuxPipeline_.captionStream&&this.transmuxPipeline_.captionStream.reset();};}).prototype=new H;var yt={Transmuxer:ct,VideoSegmentStream:ut,AudioSegmentStream:lt,AUDIO_PROPERTIES:pt,VIDEO_PROPERTIES:ft,generateVideoSegmentTimingInfo:ot};function _t(e,t){for(var i=0;in);r++);return e.slice(r)}(this.gopBuffer_,this.mediaSource_.player_?this.mediaSource_.player_.currentTime():null,this.timeMapping_)}),this.transmuxer_.postMessage({action:"push",data:e.buffer,byteOffset:e.byteOffset,byteLength:e.byteLength},[e.buffer]),this.transmuxer_.postMessage({action:"flush"});}},{key:"appendGopInfo_",value:function(e){this.gopBuffer_=function(e,t,i){if(!t.length)return e;if(i)return t.slice();for(var n=t[0].pts,r=0;r=n);r++);return e.slice(0,r).concat(t)}(this.gopBuffer_,e.data.gopInfo,this.safeAppend_);}},{key:"remove",value:function(e,t){if(this.videoBuffer_&&(this.videoBuffer_.updating=!0,this.videoBuffer_.remove(e,t),this.gopBuffer_=function(e,t,i,n){for(var r=Math.ceil(9e4*(t-n)),s=Math.ceil(9e4*(i-n)),a=e.slice(),o=e.length;o--&&!(e[o].pts<=s););if(-1===o)return a;for(var u=o+1;u--&&!(e[u].pts<=r););return u=Math.max(u,0),a.splice(u,o-u+1),a}(this.gopBuffer_,e,t,this.timeMapping_)),!this.audioDisabled_&&this.audioBuffer_&&(this.audioBuffer_.updating=!0,this.audioBuffer_.remove(e,t)),Xl(e,t,this.metadataTrack_),this.inbandTextTracks_)for(var i in this.inbandTextTracks_)Xl(e,t,this.inbandTextTracks_[i]);}},{key:"processPendingSegments_",value:function(){var e={video:{segments:[],bytes:0},audio:{segments:[],bytes:0},captions:[],metadata:[]};if(!this.pendingBuffers_.length)return this.trigger("updateend"),void(this.bufferUpdating_=!1);e=this.pendingBuffers_.reduce(function(e,t){var i=t.type,n=t.data,r=t.initSegment;return e[i].segments.push(n),e[i].bytes+=n.byteLength,e[i].initSegment=r,t.captions&&(e.captions=e.captions.concat(t.captions)),t.info&&(e[i].info=t.info),t.metadata&&(e.metadata=e.metadata.concat(t.metadata)),e},e),this.videoBuffer_||this.audioBuffer_||(0===e.video.bytes&&(this.videoCodec_=null),0===e.audio.bytes&&(this.audioCodec_=null),this.createRealSourceBuffers_()),e.audio.info&&this.mediaSource_.trigger({type:"audioinfo",info:e.audio.info}),e.video.info&&this.mediaSource_.trigger({type:"videoinfo",info:e.video.info}),this.appendAudioInitSegment_&&(!this.audioDisabled_&&this.audioBuffer_&&(e.audio.segments.unshift(e.audio.initSegment),e.audio.bytes+=e.audio.initSegment.byteLength),this.appendAudioInitSegment_=!1);var t=!1;this.videoBuffer_&&e.video.bytes?(e.video.segments.unshift(e.video.initSegment),e.video.bytes+=e.video.initSegment.byteLength,this.concatAndAppendSegments_(e.video,this.videoBuffer_)):!this.videoBuffer_||!this.audioDisabled_&&this.audioBuffer_||(t=!0),Yl(this,e.captions,e.metadata),!this.audioDisabled_&&this.audioBuffer_&&this.concatAndAppendSegments_(e.audio,this.audioBuffer_),this.pendingBuffers_.length=0,t&&this.trigger("updateend"),this.bufferUpdating_=!1;}},{key:"concatAndAppendSegments_",value:function(e,t){var i=0,n=void 0;if(e.bytes){n=new Uint8Array(e.bytes),e.segments.forEach(function(e){n.set(e,i),i+=e.byteLength;});try{t.updating=!0,t.appendBuffer(n);}catch(e){this.mediaSource_.player_&&this.mediaSource_.player_.error({code:-3,type:"APPEND_BUFFER_ERR",message:e.message,originalError:e});}}}},{key:"abort",value:function(){this.videoBuffer_&&this.videoBuffer_.abort(),!this.audioDisabled_&&this.audioBuffer_&&this.audioBuffer_.abort(),this.transmuxer_&&this.transmuxer_.postMessage({action:"reset"}),this.pendingBuffers_.length=0,this.bufferUpdating_=!1;}},{key:"dispose",value:function(){this.transmuxer_&&this.transmuxer_.terminate(),this.trigger("dispose"),this.off();}}]),Cc);function Cc(e,t){el(this,Cc);var i=ul(this,(Cc.__proto__||Object.getPrototypeOf(Cc)).call(this,cs.EventTarget));i.timestampOffset_=0,i.pendingBuffers_=[],i.bufferUpdating_=!1,i.mediaSource_=e,i.codecs_=t,i.audioCodec_=null,i.videoCodec_=null,i.audioDisabled_=!1,i.appendAudioInitSegment_=!0,i.gopBuffer_=[],i.timeMapping_=0,i.safeAppend_=11<=cs.browser.IE_VERSION;var n={remux:!1,alignGopsAtEnd:i.safeAppend_};return i.codecs_.forEach(function(e){_c(e)?i.audioCodec_=e:bc(e)&&(i.videoCodec_=e);}),i.transmuxer_=new Tc,i.transmuxer_.postMessage({action:"init",options:n}),i.transmuxer_.onmessage=function(e){return "data"===e.data.action?i.data_(e):"done"===e.data.action?i.done_(e):"gopInfo"===e.data.action?i.appendGopInfo_(e):"videoSegmentTimingInfo"===e.data.action?i.videoSegmentTimingInfo_(e.data.videoSegmentTimingInfo):void 0},Object.defineProperty(i,"timestampOffset",{get:function(){return this.timestampOffset_},set:function(e){"number"==typeof e&&0<=e&&(this.timestampOffset_=e,this.appendAudioInitSegment_=!0,this.gopBuffer_.length=0,this.timeMapping_=0,this.transmuxer_.postMessage({action:"setTimestampOffset",timestampOffset:e}));}}),Object.defineProperty(i,"appendWindowStart",{get:function(){return (this.videoBuffer_||this.audioBuffer_).appendWindowStart},set:function(e){this.videoBuffer_&&(this.videoBuffer_.appendWindowStart=e),this.audioBuffer_&&(this.audioBuffer_.appendWindowStart=e);}}),Object.defineProperty(i,"updating",{get:function(){return !!(this.bufferUpdating_||!this.audioDisabled_&&this.audioBuffer_&&this.audioBuffer_.updating||this.videoBuffer_&&this.videoBuffer_.updating)}}),Object.defineProperty(i,"buffered",{get:function(){return function(e,t,i){var n=null,r=null,s=0,a=[],o=[];if(!e&&!t)return cs.createTimeRange();if(!e)return t.buffered;if(!t)return e.buffered;if(i)return e.buffered;if(0===e.buffered.length&&0===t.buffered.length)return cs.createTimeRange();for(var u=e.buffered,l=t.buffered,c=u.length;c--;)a.push({time:u.start(c),type:"start"}),a.push({time:u.end(c),type:"end"});for(c=l.length;c--;)a.push({time:l.start(c),type:"start"}),a.push({time:l.end(c),type:"end"});for(a.sort(function(e,t){return e.time-t.time}),c=0;cthis.nativeMediaSource_.duration||isNaN(this.nativeMediaSource_.duration))&&(this.nativeMediaSource_.duration=t);}},{key:"addSourceBuffer",value:function(e){var t=void 0,i=yc(e);if(/^(video|audio)\/mp2t$/i.test(i.type)){var n=[];i.parameters&&i.parameters.codecs&&(n=i.parameters.codecs.split(","),n=(n=fc(n)).filter(function(e){return _c(e)||bc(e)})),0===n.length&&(n=["avc1.4d400d","mp4a.40.2"]),t=new kc(this,n),0!==this.sourceBuffers.length&&(this.sourceBuffers[0].createRealSourceBuffers_(),t.createRealSourceBuffers_(),this.sourceBuffers[0].audioDisabled_=!0);}else t=this.nativeMediaSource_.addSourceBuffer(e);return this.sourceBuffers.push(t),t}},{key:"dispose",value:function(){this.trigger("dispose"),this.off(),this.sourceBuffers.forEach(function(e){e.dispose&&e.dispose();}),this.sourceBuffers.length=0;}}]),wc);function wc(){el(this,wc);var s=ul(this,(wc.__proto__||Object.getPrototypeOf(wc)).call(this)),e=void 0;for(e in s.nativeMediaSource_=new y.MediaSource,s.nativeMediaSource_)e in wc.prototype||"function"!=typeof s.nativeMediaSource_[e]||(s[e]=s.nativeMediaSource_[e].bind(s.nativeMediaSource_));return s.duration_=NaN,Object.defineProperty(s,"duration",{get:function(){return this.duration_===1/0?this.duration_:this.nativeMediaSource_.duration},set:function(e){(this.duration_=e)===1/0||(this.nativeMediaSource_.duration=e);}}),Object.defineProperty(s,"seekable",{get:function(){return this.duration_===1/0?cs.createTimeRanges([[0,this.nativeMediaSource_.duration]]):this.nativeMediaSource_.seekable}}),Object.defineProperty(s,"readyState",{get:function(){return this.nativeMediaSource_.readyState}}),Object.defineProperty(s,"activeSourceBuffers",{get:function(){return this.activeSourceBuffers_}}),s.sourceBuffers=[],s.activeSourceBuffers_=[],s.updateActiveSourceBuffers_=function(){if(s.activeSourceBuffers_.length=0,1===s.sourceBuffers.length){var e=s.sourceBuffers[0];return e.appendAudioInitSegment_=!0,e.audioDisabled_=!e.audioCodec_,void s.activeSourceBuffers_.push(e)}for(var i=!1,n=!0,t=0;t"):function(){}}function Fc(){}var Hc=(sl(Vc,[{key:"createSourceBuffer_",value:function(e,t){var i=this;this.sourceBuffer_=this.mediaSource.addSourceBuffer(e),this.logger_("created SourceBuffer"),t&&(t.trigger("sourcebufferadded"),this.mediaSource.sourceBuffers.length<2)?t.on("sourcebufferadded",function(){i.start_();}):this.start_();}},{key:"start_",value:function(){var t=this;this.started_=!0,this.onUpdateendCallback_=function(){var e=t.pendingCallback_;t.pendingCallback_=null,t.sourceBuffer_.removing=!1,t.logger_("buffered ["+zl(t.buffered())+"]"),e&&e(),t.runCallback_();},this.sourceBuffer_.addEventListener("updateend",this.onUpdateendCallback_),this.runCallback_();}},{key:"abort",value:function(e){var t=this;this.processedAppend_&&this.queueCallback_(function(){t.sourceBuffer_.abort();},e);}},{key:"appendBuffer",value:function(e,t){var i=this;this.processedAppend_=!0,this.queueCallback_(function(){e.videoSegmentTimingInfoCallback&&i.sourceBuffer_.addEventListener("videoSegmentTimingInfo",e.videoSegmentTimingInfoCallback),i.sourceBuffer_.appendBuffer(e.bytes);},function(){e.videoSegmentTimingInfoCallback&&i.sourceBuffer_.removeEventListener("videoSegmentTimingInfo",e.videoSegmentTimingInfoCallback),t();});}},{key:"buffered",value:function(){return this.sourceBuffer_?this.sourceBuffer_.buffered:cs.createTimeRanges()}},{key:"remove",value:function(e,t,i){var n=this,r=2 "+t+"]"),n.sourceBuffer_.removing=!0,n.sourceBuffer_.remove(e,t);},r);}},{key:"updating",value:function(){return !this.sourceBuffer_||this.sourceBuffer_.updating||!!this.pendingCallback_&&this.pendingCallback_!==Fc}},{key:"timestampOffset",value:function(e){var t=this;return "undefined"!=typeof e&&(this.queueCallback_(function(){t.sourceBuffer_.timestampOffset=e,t.runCallback_();}),this.timestampOffset_=e),this.timestampOffset_}},{key:"queueCallback_",value:function(e,t){this.callbacks_.push([e.bind(this),t]),this.runCallback_();}},{key:"runCallback_",value:function(){var e=void 0;!this.updating()&&this.callbacks_.length&&this.started_&&(e=this.callbacks_.shift(),this.pendingCallback_=e[1],e[0]());}},{key:"dispose",value:function(){function e(){t.sourceBuffer_&&"open"===t.mediaSource.readyState&&t.sourceBuffer_.abort(),t.sourceBuffer_.removeEventListener("updateend",e);}var t=this;this.sourceBuffer_.removeEventListener("updateend",this.onUpdateendCallback_),this.sourceBuffer_.removing?this.sourceBuffer_.addEventListener("updateend",e):e();}}]),Vc);function Vc(e,t,i,n){el(this,Vc),this.callbacks_=[],this.pendingCallback_=null,this.timestampOffset_=0,this.mediaSource=e,this.processedAppend_=!1,this.type_=i,this.mimeType_=t,this.logger_=jc("SourceUpdater["+i+"]["+t+"]"),"closed"===e.readyState?e.addEventListener("sourceopen",this.createSourceBuffer_.bind(this,t,n)):this.createSourceBuffer_(t,n);}function qc(e){e.forEach(function(e){e.abort();});}function Wc(e,t){return t.timedout?{status:t.status,message:"HLS request timed-out at URL: "+t.uri,code:eh,xhr:t}:t.aborted?{status:t.status,message:"HLS request aborted at URL: "+t.uri,code:th,xhr:t}:e?{status:t.status,message:"HLS request errored at URL: "+t.uri,code:Zc,xhr:t}:null}function zc(i,n,r){var s=0,a=!1;return function(e,t){if(!a)return e?(a=!0,qc(i),r(e,t)):(s+=1)===i.length?(t.endOfAllRequests=Date.now(),t.encryptedBytes?function(n,r,s){n.addEventListener("message",function e(t){if(t.data.source===r.requestId){n.removeEventListener("message",e);var i=t.data.decrypted;return r.bytes=new Uint8Array(i.bytes,i.byteOffset,i.byteLength),s(null,r)}});var e=void 0;e=r.key.bytes.slice?r.key.bytes.slice():new Uint32Array(Array.prototype.slice.call(r.key.bytes)),n.postMessage(Ul({source:r.requestId,encrypted:r.encryptedBytes,key:e,iv:r.key.iv}),[r.encryptedBytes.buffer,e.buffer]);}(n,t,r):r(null,t)):void 0}}function Gc(t,i){return function(e){return t.stats=cs.mergeOptions(t.stats,function(e){var t=e.target,i={bandwidth:1/0,bytesReceived:0,roundTripTime:Date.now()-t.requestTime||0};return i.bytesReceived=e.loaded,i.bandwidth=Math.floor(i.bytesReceived/i.roundTripTime*8*1e3),i}(e)),!t.stats.firstBytesReceivedAt&&t.stats.bytesReceived&&(t.stats.firstBytesReceivedAt=Date.now()),i(e,t)}}function Xc(e,t,i,n,r,s,a){var o=[],u=zc(o,i,a);if(r.key&&!r.key.bytes){var l=e(cs.mergeOptions(t,{uri:r.key.resolvedUri,responseType:"arraybuffer"}),function(s,a){return function(e,t){var i=t.response,n=Wc(e,t);if(n)return a(n,s);if(16!==i.byteLength)return a({status:t.status,message:"Invalid HLS key at URL: "+t.uri,code:Zc,xhr:t},s);var r=new DataView(i);return s.key.bytes=new Uint32Array([r.getUint32(0),r.getUint32(4),r.getUint32(8),r.getUint32(12)]),a(null,s)}}(r,u));o.push(l);}if(r.map&&!r.map.bytes){var c=e(cs.mergeOptions(t,{uri:r.map.resolvedUri,responseType:"arraybuffer",headers:Dl(r.map)}),function(r,s,a){return function(e,t){var i=t.response,n=Wc(e,t);return n?a(n,r):0===i.byteLength?a({status:t.status,message:"Empty HLS segment content at URL: "+t.uri,code:Zc,xhr:t},r):(r.map.bytes=new Uint8Array(t.response),s&&!s.isInitialized()&&s.init(),r.map.timescales=ru.timescale(r.map.bytes),r.map.videoTrackIds=ru.videoTrackIds(r.map.bytes),a(null,r))}}(r,n,u));o.push(c);}var h=e(cs.mergeOptions(t,{uri:r.resolvedUri,responseType:"arraybuffer",headers:Dl(r)}),function(s,a,o){return function(e,t){var i=t.response,n=Wc(e,t),r=void 0;return n?o(n,s):0===i.byteLength?o({status:t.status,message:"Empty HLS segment content at URL: "+t.uri,code:Zc,xhr:t},s):(s.stats=function(e){return {bandwidth:e.bandwidth,bytesReceived:e.bytesReceived||0,roundTripTime:e.roundTripTime||0}}(t),s.key?s.encryptedBytes=new Uint8Array(t.response):s.bytes=new Uint8Array(t.response),a&&s.map&&s.map.bytes&&(a.isInitialized()||a.init(),(r=a.parse(s.bytes,s.map.videoTrackIds,s.map.timescales))&&r.captions&&(s.captionStreams=r.captionStreams,s.fmp4Captions=r.captions)),o(null,s))}}(r,n,u));return h.addEventListener("progress",Gc(r,s)),o.push(h),function(){return qc(o)}}function Kc(e,t){var i;return e&&(i=y.getComputedStyle(e))?i[t]:""}function Yc(e,n){var r=e.slice();e.sort(function(e,t){var i=n(e,t);return 0===i?r.indexOf(e)-r.indexOf(t):i});}function $c(e,t){var i=void 0,n=void 0;return e.attributes.BANDWIDTH&&(i=e.attributes.BANDWIDTH),i=i||y.Number.MAX_VALUE,t.attributes.BANDWIDTH&&(n=t.attributes.BANDWIDTH),i-(n=n||y.Number.MAX_VALUE)}function Qc(e){return "number"==typeof e&&isFinite(e)}var Jc={GOAL_BUFFER_LENGTH:30,MAX_GOAL_BUFFER_LENGTH:60,GOAL_BUFFER_LENGTH_RATE:1,INITIAL_BANDWIDTH:4194304,BANDWIDTH_VARIANCE:1.2,BUFFER_LOW_WATER_LINE:0,MAX_BUFFER_LOW_WATER_LINE:30,BUFFER_LOW_WATER_LINE_RATE:1},Zc=2,eh=-101,th=-102,ih=(ol(nh,cs.EventTarget),sl(nh,[{key:"resetStats_",value:function(){this.mediaBytesTransferred=0,this.mediaRequests=0,this.mediaRequestsAborted=0,this.mediaRequestsTimedout=0,this.mediaRequestsErrored=0,this.mediaTransferDuration=0,this.mediaSecondsLoaded=0;}},{key:"dispose",value:function(){this.trigger("dispose"),this.state="DISPOSED",this.pause(),this.abort_(),this.sourceUpdater_&&this.sourceUpdater_.dispose(),this.resetStats_(),this.captionParser_&&this.captionParser_.reset(),this.checkBufferTimeout_&&y.clearTimeout(this.checkBufferTimeout_),this.syncController_&&this.triggerSyncInfoUpdate_&&this.syncController_.off("syncinfoupdate",this.triggerSyncInfoUpdate_),this.off();}},{key:"abort",value:function(){"WAITING"===this.state?(this.abort_(),this.state="READY",this.paused()||this.monitorBuffer_()):this.pendingSegment_&&(this.pendingSegment_=null);}},{key:"abort_",value:function(){this.pendingSegment_&&this.pendingSegment_.abortRequests(),this.pendingSegment_=null;}},{key:"error",value:function(e){return "undefined"!=typeof e&&(this.error_=e),this.pendingSegment_=null,this.error_}},{key:"endOfStream",value:function(){this.ended_=!0,this.pause(),this.trigger("ended");}},{key:"buffered_",value:function(){return this.sourceUpdater_?this.sourceUpdater_.buffered():cs.createTimeRanges()}},{key:"initSegment",value:function(e,t){var i=1 "+(e.id||e.uri)+"]"),this.trigger("syncinfoupdate"),"INIT"===this.state&&this.couldBeginLoading_())return this.init_();if(n&&n.uri===e.uri){var a=e.mediaSequence-n.mediaSequence;this.logger_("live window shift ["+a+"]"),null!==this.mediaIndex&&(this.mediaIndex-=a),r&&(r.mediaIndex-=a,0<=r.mediaIndex&&(r.segment=e.segments[r.mediaIndex])),this.syncController_.saveExpiredSegmentInfo(n,e);}else null!==this.mediaIndex&&this.resyncLoader();}}},{key:"pause",value:function(){this.checkBufferTimeout_&&(y.clearTimeout(this.checkBufferTimeout_),this.checkBufferTimeout_=null);}},{key:"paused",value:function(){return null===this.checkBufferTimeout_}},{key:"mimeType",value:function(e,t){this.mimeType_||(this.mimeType_=e,this.sourceBufferEmitter_=t,"INIT"===this.state&&this.couldBeginLoading_()&&this.init_());}},{key:"resetEverything",value:function(e){this.ended_=!1,this.resetLoader(),this.remove(0,1/0,e),this.captionParser_&&this.captionParser_.clearAllCaptions(),this.trigger("reseteverything");}},{key:"resetLoader",value:function(){this.fetchAtBuffer_=!1,this.resyncLoader();}},{key:"resyncLoader",value:function(){this.mediaIndex=null,this.syncPoint_=null,this.abort();}},{key:"remove",value:function(e,t,i){if(t===1/0&&(t=this.duration_()),this.sourceUpdater_&&this.sourceUpdater_.remove(e,t,i),Xl(e,t,this.segmentMetadataTrack_),this.inbandTextTracks_)for(var n in this.inbandTextTracks_)Xl(e,t,this.inbandTextTracks_[n]);}},{key:"monitorBuffer_",value:function(){this.checkBufferTimeout_&&y.clearTimeout(this.checkBufferTimeout_),this.checkBufferTimeout_=y.setTimeout(this.monitorBufferTick_.bind(this),1);}},{key:"monitorBufferTick_",value:function(){"READY"===this.state&&this.fillBuffer_(),this.checkBufferTimeout_&&y.clearTimeout(this.checkBufferTimeout_),this.checkBufferTimeout_=y.setTimeout(this.monitorBufferTick_.bind(this),500);}},{key:"fillBuffer_",value:function(){if(!this.sourceUpdater_.updating()){this.syncPoint_||(this.syncPoint_=this.syncController_.getSyncPoint(this.playlist_,this.duration_(),this.currentTimeline_,this.currentTime_()));var e=this.checkBuffer_(this.buffered_(),this.playlist_,this.mediaIndex,this.hasPlayed_(),this.currentTime_(),this.syncPoint_);e&&(this.isEndOfStream_(e.mediaIndex)?this.endOfStream():e.mediaIndex===this.playlist_.segments.length-1&&"ended"===this.mediaSource_.readyState&&!this.seeking_()||(e.timeline!==this.currentTimeline_&&(this.syncController_.reset(),e.timestampOffset=e.startOfSegment,this.captionParser_&&this.captionParser_.clearAllCaptions()),this.loadSegment_(e)));}}},{key:"isEndOfStream_",value:function(e,t){return function(e,t,i){if(!e||!t)return !1;var n=i===e.segments.length;return e.endList&&"open"===t.readyState&&n}(1=this.goalBufferLength_())return null;if(!n&&1<=u)return null;if(null===s)return i=this.getSyncSegmentCandidate_(t),this.generateSegmentInfo_(t,i,null,!0);if(null!==i)return t.segments[i],o=a,this.generateSegmentInfo_(t,i+1,o,!1);if(this.fetchAtBuffer_){var l=Zl.getMediaInfoForTime(t,a,s.segmentIndex,s.time);i=l.mediaIndex,o=l.startTime;}else {var c=Zl.getMediaInfoForTime(t,r,s.segmentIndex,s.time);i=c.mediaIndex,o=c.startTime;}return this.generateSegmentInfo_(t,i,o,!1)}},{key:"getSyncSegmentCandidate_",value:function(e){var t=this;if(-1===this.currentTimeline_)return 0;var i=e.segments.map(function(e,t){return {timeline:e.timeline,segmentIndex:t}}).filter(function(e){return e.timeline===t.currentTimeline_});return i.length?i[Math.min(i.length-1,1)].segmentIndex:Math.max(e.segments.length-1,0)}},{key:"generateSegmentInfo_",value:function(e,t,i,n){if(t<0||t>=e.segments.length)return null;var r=e.segments[t];return {requestId:"segment-loader-"+Math.random(),uri:r.resolvedUri,mediaIndex:t,isSyncRequest:n,startOfSegment:i,playlist:e,bytes:null,encryptedBytes:null,timestampOffset:null,timeline:r.timeline,duration:r.duration,segment:r}}},{key:"abortRequestEarly_",value:function(e){if(this.hls_.tech_.paused()||!this.xhrOptions_.timeout||!this.playlist_.attributes.BANDWIDTH)return !1;if(Date.now()-(e.firstBytesReceivedAt||Date.now())<1e3)return !1;var t=this.currentTime_(),i=e.bandwidth,n=this.pendingSegment_.duration,r=Zl.estimateSegmentRequestTime(n,i,this.playlist_,e.bytesReceived),s=function(e,t,i){var n=2 "+n+"] in timeline ["+c+"]"].join(" ")}(t)),this.sourceUpdater_.appendBuffer({bytes:t.bytes,videoSegmentTimingInfoCallback:this.handleVideoSegmentTimingInfo_.bind(this,t.requestId)},this.handleUpdateEnd_.bind(this));}else this.state="READY";}},{key:"handleVideoSegmentTimingInfo_",value:function(e,t){if(this.pendingSegment_&&e===this.pendingSegment_.requestId){var i=this.pendingSegment_.segment;i.videoTimingInfo||(i.videoTimingInfo={}),i.videoTimingInfo.transmuxerPrependedSeconds=t.videoSegmentTimingInfo.prependedContentDuration||0,i.videoTimingInfo.transmuxedPresentationStart=t.videoSegmentTimingInfo.start.presentation,i.videoTimingInfo.transmuxedPresentationEnd=t.videoSegmentTimingInfo.end.presentation,i.videoTimingInfo.baseMediaDecodeTime=t.videoSegmentTimingInfo.baseMediaDecodeTime;}}},{key:"handleUpdateEnd_",value:function(){if(!this.pendingSegment_)return this.state="READY",void(this.paused()||this.monitorBuffer_());var e=this.pendingSegment_,t=e.segment,i=null!==this.mediaIndex;this.pendingSegment_=null,this.recordThroughput_(e),this.addSegmentMetadataCue_(e),this.state="READY",this.mediaIndex=e.mediaIndex,this.fetchAtBuffer_=!0,this.currentTimeline_=e.timeline,this.trigger("syncinfoupdate"),t.end&&this.currentTime_()-t.end>3*e.playlist.targetDuration?this.resetEverything():(i&&this.trigger("bandwidthupdate"),this.trigger("progress"),this.isEndOfStream_(e.mediaIndex+1,e.playlist)&&this.endOfStream(),this.paused()||this.monitorBuffer_());}},{key:"recordThroughput_",value:function(e){var t=this.throughput.rate,i=Date.now()-e.endOfAllRequests+1,n=Math.floor(e.byteLength/i*8*1e3);this.throughput.rate+=(n-t)/++this.throughput.count;}},{key:"addSegmentMetadataCue_",value:function(e){if(this.segmentMetadataTrack_){var t=e.segment,i=t.start,n=t.end;if(Qc(i)&&Qc(n)){Xl(i,n,this.segmentMetadataTrack_);var r=y.WebKitDataCue||y.VTTCue,s={custom:t.custom,dateTimeObject:t.dateTimeObject,dateTimeString:t.dateTimeString,bandwidth:e.playlist.attributes.BANDWIDTH,resolution:e.playlist.attributes.RESOLUTION,codecs:e.playlist.attributes.CODECS,byteLength:e.byteLength,uri:e.uri,timeline:e.timeline,playlist:e.playlist.id,start:i,end:n},a=new r(i,n,JSON.stringify(s));a.value=s,this.segmentMetadataTrack_.addCue(a);}}}}]),nh);function nh(e){el(this,nh);var t=ul(this,(nh.__proto__||Object.getPrototypeOf(nh)).call(this));if(!e)throw new TypeError("Initialization settings are required");if("function"!=typeof e.currentTime)throw new TypeError("No currentTime getter specified");if(!e.mediaSource)throw new TypeError("No MediaSource specified");return t.bandwidth=e.bandwidth,t.throughput={rate:0,count:0},t.roundTrip=NaN,t.resetStats_(),t.mediaIndex=null,t.hasPlayed_=e.hasPlayed,t.currentTime_=e.currentTime,t.seekable_=e.seekable,t.seeking_=e.seeking,t.duration_=e.duration,t.mediaSource_=e.mediaSource,t.hls_=e.hls,t.loaderType_=e.loaderType,t.startingMedia_=void 0,t.segmentMetadataTrack_=e.segmentMetadataTrack,t.goalBufferLength_=e.goalBufferLength,t.sourceType_=e.sourceType,t.inbandTextTracks_=e.inbandTextTracks,t.state_="INIT",t.checkBufferTimeout_=null,t.error_=void 0,t.currentTimeline_=-1,t.pendingSegment_=null,t.mimeType_=null,t.sourceUpdater_=null,t.xhrOptions_=null,t.activeInitSegmentId_=null,t.initSegments_={},t.cacheEncryptionKeys_=e.cacheEncryptionKeys,t.keyCache_={},"main"===t.loaderType_?t.captionParser_=new Su:t.captionParser_=null,t.decrypter_=e.decrypter,t.syncController_=e.syncController,t.syncPoint_={segmentIndex:0,time:0},t.triggerSyncInfoUpdate_=function(){return t.trigger("syncinfoupdate")},t.syncController_.on("syncinfoupdate",t.triggerSyncInfoUpdate_),t.mediaSource_.addEventListener("sourceopen",function(){return t.ended_=!1}),t.fetchAtBuffer_=!1,t.logger_=jc("SegmentLoader["+t.loaderType_+"]"),Object.defineProperty(t,"state",{get:function(){return this.state_},set:function(e){e!==this.state_&&(this.logger_(this.state_+" -> "+e),this.state_=e);}}),t}function rh(e){return decodeURIComponent(escape(String.fromCharCode.apply(null,e)))}var sh=new Uint8Array("\n\n".split("").map(function(e){return e.charCodeAt(0)})),ah=(ol(oh,ih),sl(oh,[{key:"buffered_",value:function(){if(!this.subtitlesTrack_||!this.subtitlesTrack_.cues.length)return cs.createTimeRanges();var e=this.subtitlesTrack_.cues,t=e[0].startTime,i=e[e.length-1].startTime;return cs.createTimeRanges([[t,i]])}},{key:"initSegment",value:function(e,t){var i=1=r.adStartTime&&t<=r.adEndTime)return r}return null}var lh=Gu,ch=[{name:"VOD",run:function(e,t,i,n,r){if(i===1/0)return null;return {time:0,segmentIndex:0}}},{name:"ProgramDateTime",run:function(e,t,i,n,r){if(!e.datetimeToDisplayTime)return null;var s=t.segments||[],a=null,o=null;r=r||0;for(var u=0;uo){var u=void 0;u=a<0?i.start-Sl(t,e.mediaIndex,r):i.end+Sl(t,e.mediaIndex+1,r),this.discontinuities[s]={time:u,accuracy:o};}}}},{key:"dispose",value:function(){this.trigger("dispose"),this.off();}}]),dh);function dh(){el(this,dh);var e=ul(this,(dh.__proto__||Object.getPrototypeOf(dh)).call(this));return e.inspectCache_=void 0,e.timelines=[],e.discontinuities=[],e.datetimeToDisplayTime=null,e.logger_=jc("SyncController"),e}function ph(e,t){e.abort(),e.pause(),t&&t.activePlaylistLoader&&(t.activePlaylistLoader.pause(),t.activePlaylistLoader=null);}function fh(e,t){(t.activePlaylistLoader=e).load();}function mh(t){["AUDIO","SUBTITLES","CLOSED-CAPTIONS"].forEach(function(e){_h[e](e,t);});var i=t.mediaTypes,e=t.masterPlaylistLoader,n=t.tech,r=t.hls;["AUDIO","SUBTITLES"].forEach(function(e){i[e].activeGroup=function(s,a){return function(t){var e=a.masterPlaylistLoader,i=a.mediaTypes[s].groups,n=e.media();if(!n)return null;var r=null;return n.attributes[s]&&(r=i[n.attributes[s]]),r=r||i.main,"undefined"==typeof t?r:null===t?null:r.filter(function(e){return e.id===t.id})[0]||null}}(e,t),i[e].activeTrack=bh[e](e,t),i[e].onGroupChanged=function(o,u){return function(){var e=u.segmentLoaders,t=e[o],i=e.main,n=u.mediaTypes[o],r=n.activeTrack(),s=n.activeGroup(r),a=n.activePlaylistLoader;ph(t,n),s&&(s.playlistLoader?(t.resyncLoader(),fh(s.playlistLoader,n)):a&&i.resetEverything());}}(e,t),i[e].onTrackChanged=function(o,u){return function(){var e=u.segmentLoaders,t=e[o],i=e.main,n=u.mediaTypes[o],r=n.activeTrack(),s=n.activeGroup(r),a=n.activePlaylistLoader;ph(t,n),s&&(s.playlistLoader?(a!==s.playlistLoader&&(t.track&&t.track(r),t.resetEverything()),fh(s.playlistLoader,n)):i.resetEverything());}}(e,t);});var s=i.AUDIO.activeGroup(),a=(s.filter(function(e){return e.default})[0]||s[0]).id;function o(){i.AUDIO.onTrackChanged(),n.trigger({type:"usage",name:"hls-audio-change"});}for(var u in i.AUDIO.tracks[a].enabled=!0,i.AUDIO.onTrackChanged(),e.on("mediachange",function(){["AUDIO","SUBTITLES"].forEach(function(e){return i[e].onGroupChanged()});}),n.audioTracks().addEventListener("change",o),n.remoteTextTracks().addEventListener("change",i.SUBTITLES.onTrackChanged),r.on("dispose",function(){n.audioTracks().removeEventListener("change",o),n.remoteTextTracks().removeEventListener("change",i.SUBTITLES.onTrackChanged);}),n.clearTracks("audio"),i.AUDIO.tracks)n.audioTracks().addTrack(i.AUDIO.tracks[u]);}var gh=new lc("./decrypter-worker.worker.js",function(e,t){var i,c,g,n,r,u,a,s=this;i=function(e,t,i){return t&&o(e.prototype,t),i&&o(e,i),e},c=null,d.prototype.decrypt=function(e,t,i,n,r,s){var a=this._key[1],o=e^a[0],u=n^a[1],l=i^a[2],c=t^a[3],h=void 0,d=void 0,p=void 0,f=a.length/4-2,m=void 0,g=4,v=this._tables[1],y=v[0],_=v[1],b=v[2],T=v[3],S=v[4];for(m=0;m>>24]^_[u>>16&255]^b[l>>8&255]^T[255&c]^a[g],d=y[u>>>24]^_[l>>16&255]^b[c>>8&255]^T[255&o]^a[g+1],p=y[l>>>24]^_[c>>16&255]^b[o>>8&255]^T[255&u]^a[g+2],c=y[c>>>24]^_[o>>16&255]^b[u>>8&255]^T[255&l]^a[g+3],g+=4,o=h,u=d,l=p;for(m=0;m<4;m++)r[(3&-m)+s]=S[o>>>24]<<24^S[u>>16&255]<<16^S[l>>8&255]<<8^S[255&c]^a[g++],h=o,o=u,u=l,l=c,c=h;},g=d,l.prototype.on=function(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t);},l.prototype.off=function(e,t){if(!this.listeners[e])return !1;var i=this.listeners[e].indexOf(t);return this.listeners[e].splice(i,1),-1>2),r=new g(Array.prototype.slice.call(t)),s=new Uint8Array(e.byteLength),a=new Int32Array(s.buffer),o=void 0,u=void 0,l=void 0,c=void 0,h=void 0,d=void 0,p=void 0,f=void 0,m=void 0;for(o=i[0],u=i[1],l=i[2],c=i[3],m=0;m>7))^s]=s;for(a=o=0;!n[a];a^=c||1,o=l[o]||1)for(d=(d=o^o<<1^o<<2^o<<3^o<<4)>>8^255&d^99,f=16843009*u[h=u[c=u[r[n[a]=d]=a]]]^65537*h^257*c^16843008*a,p=257*u[d]^16843008*d,s=0;s<4;s++)t[s][a]=p=p<<24^p>>>8,i[s][d]=f=f<<24^f>>>8;for(s=0;s<5;s++)t[s]=t[s].slice(0),i[s]=i[s].slice(0);return e}(),this._tables=[[c[0][0].slice(),c[0][1].slice(),c[0][2].slice(),c[0][3].slice(),c[0][4].slice()],[c[1][0].slice(),c[1][1].slice(),c[1][2].slice(),c[1][3].slice(),c[1][4].slice()]];var t=void 0,i=void 0,n=void 0,r=void 0,s=void 0,a=this._tables[0][4],o=this._tables[1],u=e.length,l=1;if(4!==u&&6!==u&&8!==u)throw new Error("Invalid aes key size");for(r=e.slice(0),s=[],this._key=[r,s],t=u;t<4*u+28;t++)n=r[t-1],(t%u==0||8===u&&t%u==4)&&(n=a[n>>>24]<<24^a[n>>16&255]<<16^a[n>>8&255]<<8^a[255&n],t%u==0&&(n=n<<8^n>>>24^l<<24,l=l<<1^283*(l>>7))),r[t]=r[t-u]^n;for(i=0;t;i++,t--)n=r[3&i?t:t-4],s[i]=t<=4||i<4?n:o[0][a[n>>>24]]^o[1][a[n>>16&255]]^o[2][a[n>>8&255]]^o[3][a[255&n]];}function l(){h(this,l),this.listeners={};}function p(){h(this,p);var e=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return !t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,r.call(this,n));return e.jobs=[],e.delay=1,e.timeout_=null,e}function v(e){return e<<24|(65280&e)<<8|(16711680&e)>>8|e>>>24}function f(e,t,i,n){h(this,f);var r=f.STEP,s=new Int32Array(e.buffer),a=new Uint8Array(e.byteLength),o=0;for(this.asyncStream_=new u,this.asyncStream_.push(this.decryptChunk_(s.subarray(o,o+r),t,i,a)),o=r;or.end(0)||r.start(0)>e.end(0)?this.seekable_=r:this.seekable_=cs.createTimeRanges([[e.start(0)>r.start(0)?e.start(0):r.start(0),e.end(0) "+n);try{t.mediaSource.duration=n;}catch(e){cs.log.warn("Failed to set media source duration",e);}t.tech_.trigger("durationchange"),t.mediaSource.removeEventListener("sourceopen",e);}var t=this,i=this.mediaSource.duration,n=Th.Playlist.duration(this.masterPlaylistLoader_.media()),r=this.tech_.buffered();0=t.end(t.length-1)))return this.techWaiting_();5<=this.consecutiveUpdates&&e===this.lastRecordedTime?(this.consecutiveUpdates++,this.waiting_()):e===this.lastRecordedTime?this.consecutiveUpdates++:(this.consecutiveUpdates=0,this.lastRecordedTime=e);}}},{key:"cancelTimer_",value:function(){this.consecutiveUpdates=0,this.timer_&&(this.logger_("cancelTimer_"),clearTimeout(this.timer_)),this.timer_=null;}},{key:"fixesBadSeeks_",value:function(){if(!this.tech_.seeking())return !1;var e=this.seekable(),t=this.tech_.currentTime(),i=void 0;return this.afterSeekableWindow_(e,t,this.media(),this.allowSeeksWithinUnsafeLiveWindow)&&(i=e.end(e.length-1)),this.beforeSeekableWindow_(e,t)&&(i=e.start(0)+.1),"undefined"!=typeof i&&(this.logger_("Trying to seek outside of seekable at time "+t+" with seekable range "+zl(e)+". Seeking to "+i+"."),this.tech_.setCurrentTime(i),!0)}},{key:"waiting_",value:function(){if(!this.techWaiting_()){var e=this.tech_.currentTime(),t=this.tech_.buffered(),i=ql(t,e);return i.length&&e+3<=i.end(0)?(this.cancelTimer_(),this.tech_.setCurrentTime(e),this.logger_("Stopped at "+e+" while inside a buffered region ["+i.start(0)+" -> "+i.end(0)+"]. Attempting to resume playback by seeking to the current time."),void this.tech_.trigger({type:"usage",name:"hls-unknown-waiting"})):void 0}}},{key:"techWaiting_",value:function(){var e=this.seekable(),t=this.tech_.currentTime();if(this.tech_.seeking()&&this.fixesBadSeeks_())return !0;if(this.tech_.seeking()||null!==this.timer_)return !0;if(this.beforeSeekableWindow_(e,t)){var i=e.end(e.length-1);return this.logger_("Fell out of live window at time "+t+". Seeking to live point (seekable end) "+i),this.cancelTimer_(),this.tech_.setCurrentTime(i),this.tech_.trigger({type:"usage",name:"hls-live-resync"}),!0}var n=this.tech_.buffered(),r=Wl(n,t);if(this.videoUnderflow_(r,n,t))return this.cancelTimer_(),this.tech_.setCurrentTime(t),this.tech_.trigger({type:"usage",name:"hls-video-underflow"}),!0;if(0i||e.height>n})).filter(function(e){return e.width===f[0].width&&e.height===f[0].height}),u=m[m.length-1],g=m.filter(function(e){return e.bandwidth===u.bandwidth})[0]);var v=g||p||l||a[0]||s[0];return v?v.playlist:null}(this.playlists.master,this.systemBandwidth,parseInt(Kc(this.tech_.el(),"width"),10)*e,parseInt(Kc(this.tech_.el(),"height"),10)*e,this.limitRenditionByPlayerDimensions)},INITIAL_PLAYLIST_SELECTOR:function(){var e=this.playlists.master.playlists.filter(Zl.isEnabled);return Yc(e,function(e,t){return $c(e,t)}),e.filter(function(e){return mc(e.attributes.CODECS).videoCodec})[0]||null},comparePlaylistBandwidth:$c,comparePlaylistResolution:function(e,t){var i=void 0,n=void 0;return e.attributes.RESOLUTION&&e.attributes.RESOLUTION.width&&(i=e.attributes.RESOLUTION.width),i=i||y.Number.MAX_VALUE,t.attributes.RESOLUTION&&t.attributes.RESOLUTION.width&&(n=t.attributes.RESOLUTION.width),i===(n=n||y.Number.MAX_VALUE)&&e.attributes.BANDWIDTH&&t.attributes.BANDWIDTH?e.attributes.BANDWIDTH-t.attributes.BANDWIDTH:i-n},xhr:Ol()};["GOAL_BUFFER_LENGTH","MAX_GOAL_BUFFER_LENGTH","GOAL_BUFFER_LENGTH_RATE","BUFFER_LOW_WATER_LINE","MAX_BUFFER_LOW_WATER_LINE","BUFFER_LOW_WATER_LINE_RATE","BANDWIDTH_VARIANCE"].forEach(function(t){Object.defineProperty(Lh,t,{get:function(){return cs.log.warn("using Hls."+t+" is UNSAFE be sure you know what you are doing"),Jc[t]},set:function(e){cs.log.warn("using Hls."+t+" is UNSAFE be sure you know what you are doing"),"number"!=typeof e||e<0?cs.log.warn("value of Hls."+t+" must be greater than or equal to 0"):Jc[t]=e;}});});function Oh(e){return /^(audio|video|application)\/(x-|vnd\.apple\.)?mpegurl/i.test(e)?"hls":/^application\/dash\+xml/i.test(e)?"dash":null}function Dh(e,t){for(var i=t.media(),n=-1,r=0;r