From b4a0c9f9de9d715538a1718922d6ab01a40f7ce3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rog=C3=A9rio=20Brito?= Date: Thu, 4 Jan 2018 03:48:45 -0200 Subject: [PATCH] New upstream version 2017.12.31 --- AUTHORS | 233 +++++++++++++++++ ChangeLog | 199 +++++++++++++- MANIFEST.in | 6 +- Makefile | 18 +- README.md | 5 + README.txt | 9 + devscripts/run_tests.sh | 3 +- docs/supportedsites.md | 41 +-- setup.cfg | 6 + setup.py | 1 + test/test_InfoExtractor.py | 96 ++++++- test/test_YoutubeDL.py | 8 +- test/test_utils.py | 1 + test/testdata/f4m/custom_base_url.f4m | 10 + test/testdata/m3u8/pluzz_francetv_11507.m3u8 | 14 + test/testdata/m3u8/teamcoco_11995.m3u8 | 16 ++ test/testdata/m3u8/toggle_mobile_12211.m3u8 | 13 + test/testdata/m3u8/twitch_vod.m3u8 | 20 ++ test/testdata/m3u8/vidio.m3u8 | 10 + test/testdata/mpd/float_duration.mpd | 18 ++ test/testdata/mpd/urls_only.mpd | 218 ++++++++++++++++ youtube-dl | Bin 1594421 -> 1612474 bytes youtube-dl.1 | 14 + youtube_dl/YoutubeDL.py | 5 +- youtube_dl/downloader/fragment.py | 3 +- youtube_dl/downloader/hls.py | 3 +- youtube_dl/downloader/http.py | 3 +- youtube_dl/extractor/abc.py | 61 +++-- youtube_dl/extractor/afreecatv.py | 17 +- youtube_dl/extractor/animeondemand.py | 6 +- youtube_dl/extractor/ard.py | 7 +- youtube_dl/extractor/atresplayer.py | 2 +- youtube_dl/extractor/aws.py | 78 ++++++ youtube_dl/extractor/bambuser.py | 2 +- youtube_dl/extractor/bbc.py | 2 +- youtube_dl/extractor/br.py | 146 ++++++++++- youtube_dl/extractor/brightcove.py | 116 +++++---- youtube_dl/extractor/byutv.py | 71 ++--- youtube_dl/extractor/cartoonnetwork.py | 2 +- youtube_dl/extractor/cbslocal.py | 10 +- youtube_dl/extractor/ccma.py | 2 +- youtube_dl/extractor/collegerama.py | 93 ------- youtube_dl/extractor/common.py | 76 +++--- youtube_dl/extractor/crunchyroll.py | 168 +++++++----- youtube_dl/extractor/cspan.py | 23 +- youtube_dl/extractor/dailymotion.py | 49 ---- youtube_dl/extractor/daisuki.py | 86 +++--- youtube_dl/extractor/discovery.py | 122 ++++----- youtube_dl/extractor/discoverygo.py | 79 +++--- youtube_dl/extractor/disney.py | 12 +- youtube_dl/extractor/dramafever.py | 2 +- youtube_dl/extractor/drtuber.py | 5 +- youtube_dl/extractor/ellentube.py | 133 ++++++++++ youtube_dl/extractor/ellentv.py | 101 ------- youtube_dl/extractor/espn.py | 103 ++++++-- youtube_dl/extractor/extractors.py | 55 ++-- youtube_dl/extractor/faz.py | 34 ++- youtube_dl/extractor/fczenit.py | 40 +-- youtube_dl/extractor/filmweb.py | 42 +++ youtube_dl/extractor/firstpost.py | 50 ---- youtube_dl/extractor/fktv.py | 51 ---- youtube_dl/extractor/fox.py | 25 +- youtube_dl/extractor/fox9.py | 5 +- youtube_dl/extractor/francetv.py | 50 ++-- youtube_dl/extractor/freespeech.py | 31 +-- youtube_dl/extractor/funimation.py | 2 +- youtube_dl/extractor/gamersyde.py | 70 ----- youtube_dl/extractor/gamespot.py | 8 +- youtube_dl/extractor/generic.py | 87 ++++--- youtube_dl/extractor/instagram.py | 143 +++++----- youtube_dl/extractor/internazionale.py | 64 +++++ youtube_dl/extractor/itv.py | 148 ++++++----- youtube_dl/extractor/jwplatform.py | 2 +- youtube_dl/extractor/kaltura.py | 9 +- youtube_dl/extractor/livestream.py | 2 +- youtube_dl/extractor/mailru.py | 59 +++-- youtube_dl/extractor/massengeschmacktv.py | 77 ++++++ youtube_dl/extractor/mediasite.py | 214 +++++++++++++++ youtube_dl/extractor/mnet.py | 30 ++- youtube_dl/extractor/mtv.py | 15 +- youtube_dl/extractor/nexx.py | 66 +++-- youtube_dl/extractor/nick.py | 57 +++- youtube_dl/extractor/noco.py | 2 +- youtube_dl/extractor/nowtv.py | 261 ------------------- youtube_dl/extractor/odnoklassniki.py | 10 +- youtube_dl/extractor/once.py | 3 +- youtube_dl/extractor/openload.py | 44 +++- youtube_dl/extractor/orf.py | 6 +- youtube_dl/extractor/pandatv.py | 11 +- youtube_dl/extractor/patreon.py | 2 +- youtube_dl/extractor/pbs.py | 1 + youtube_dl/extractor/performgroup.py | 83 ++++++ youtube_dl/extractor/playtvak.py | 20 +- youtube_dl/extractor/pluralsight.py | 13 +- youtube_dl/extractor/porncom.py | 6 +- youtube_dl/extractor/rai.py | 36 +++ youtube_dl/extractor/roosterteeth.py | 2 +- youtube_dl/extractor/rozhlas.py | 2 +- youtube_dl/extractor/safari.py | 2 +- youtube_dl/extractor/sandia.py | 65 ----- youtube_dl/extractor/scrippsnetworks.py | 103 ++------ youtube_dl/extractor/sevenplus.py | 67 +++++ youtube_dl/extractor/shahid.py | 164 +++++++++--- youtube_dl/extractor/slutload.py | 14 +- youtube_dl/extractor/sonyliv.py | 15 +- youtube_dl/extractor/spankbang.py | 8 +- youtube_dl/extractor/stretchinternet.py | 48 ++++ youtube_dl/extractor/tbs.py | 137 +++++++--- youtube_dl/extractor/tnaflix.py | 44 +++- youtube_dl/extractor/toutv.py | 33 ++- youtube_dl/extractor/turner.py | 48 ++-- youtube_dl/extractor/tva.py | 2 + youtube_dl/extractor/tvnow.py | 175 +++++++++++++ youtube_dl/extractor/twentythreevideo.py | 77 ++++++ youtube_dl/extractor/twitch.py | 2 +- youtube_dl/extractor/twitter.py | 141 +++++----- youtube_dl/extractor/udemy.py | 13 +- youtube_dl/extractor/ufctv.py | 55 ++++ youtube_dl/extractor/umg.py | 103 ++++++++ youtube_dl/extractor/vidzi.py | 4 +- youtube_dl/extractor/viki.py | 2 +- youtube_dl/extractor/vimeo.py | 11 +- youtube_dl/extractor/vk.py | 4 +- youtube_dl/extractor/voot.py | 12 +- youtube_dl/extractor/vshare.py | 54 +++- youtube_dl/extractor/vvvvid.py | 22 +- youtube_dl/extractor/wsj.py | 5 +- youtube_dl/extractor/xhamster.py | 103 +++++++- youtube_dl/extractor/xiami.py | 11 +- youtube_dl/extractor/youku.py | 10 +- youtube_dl/extractor/youtube.py | 22 +- youtube_dl/postprocessor/xattrpp.py | 6 +- youtube_dl/utils.py | 5 +- youtube_dl/version.py | 2 +- 134 files changed, 4161 insertions(+), 1913 deletions(-) create mode 100644 AUTHORS create mode 100644 setup.cfg create mode 100644 test/testdata/f4m/custom_base_url.f4m create mode 100644 test/testdata/m3u8/pluzz_francetv_11507.m3u8 create mode 100644 test/testdata/m3u8/teamcoco_11995.m3u8 create mode 100644 test/testdata/m3u8/toggle_mobile_12211.m3u8 create mode 100644 test/testdata/m3u8/twitch_vod.m3u8 create mode 100644 test/testdata/m3u8/vidio.m3u8 create mode 100644 test/testdata/mpd/float_duration.mpd create mode 100644 test/testdata/mpd/urls_only.mpd create mode 100644 youtube_dl/extractor/aws.py delete mode 100644 youtube_dl/extractor/collegerama.py create mode 100644 youtube_dl/extractor/ellentube.py delete mode 100644 youtube_dl/extractor/ellentv.py create mode 100644 youtube_dl/extractor/filmweb.py delete mode 100644 youtube_dl/extractor/firstpost.py delete mode 100644 youtube_dl/extractor/fktv.py delete mode 100644 youtube_dl/extractor/gamersyde.py create mode 100644 youtube_dl/extractor/internazionale.py create mode 100644 youtube_dl/extractor/massengeschmacktv.py create mode 100644 youtube_dl/extractor/mediasite.py delete mode 100644 youtube_dl/extractor/nowtv.py create mode 100644 youtube_dl/extractor/performgroup.py delete mode 100644 youtube_dl/extractor/sandia.py create mode 100644 youtube_dl/extractor/sevenplus.py create mode 100644 youtube_dl/extractor/stretchinternet.py create mode 100644 youtube_dl/extractor/tvnow.py create mode 100644 youtube_dl/extractor/twentythreevideo.py create mode 100644 youtube_dl/extractor/ufctv.py create mode 100644 youtube_dl/extractor/umg.py diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..7e01224 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,233 @@ +Ricardo Garcia Gonzalez +Danny Colligan +Benjamin Johnson +Vasyl' Vavrychuk +Witold Baryluk +Paweł Paprota +Gergely Imreh +Rogério Brito +Philipp Hagemeister +Sören Schulze +Kevin Ngo +Ori Avtalion +shizeeg +Filippo Valsorda +Christian Albrecht +Dave Vasilevsky +Jaime Marquínez Ferrándiz +Jeff Crouse +Osama Khalid +Michael Walter +M. Yasoob Ullah Khalid +Julien Fraichard +Johny Mo Swag +Axel Noack +Albert Kim +Pierre Rudloff +Huarong Huo +Ismael Mejía +Steffan Donal +Andras Elso +Jelle van der Waa +Marcin Cieślak +Anton Larionov +Takuya Tsuchida +Sergey M. +Michael Orlitzky +Chris Gahan +Saimadhav Heblikar +Mike Col +Oleg Prutz +pulpe +Andreas Schmitz +Michael Kaiser +Niklas Laxström +David Triendl +Anthony Weems +David Wagner +Juan C. Olivares +Mattias Harrysson +phaer +Sainyam Kapoor +Nicolas Évrard +Jason Normore +Hoje Lee +Adam Thalhammer +Georg Jähnig +Ralf Haring +Koki Takahashi +Ariset Llerena +Adam Malcontenti-Wilson +Tobias Bell +Naglis Jonaitis +Charles Chen +Hassaan Ali +Dobrosław Żybort +David Fabijan +Sebastian Haas +Alexander Kirk +Erik Johnson +Keith Beckman +Ole Ernst +Aaron McDaniel (mcd1992) +Magnus Kolstad +Hari Padmanaban +Carlos Ramos +5moufl +lenaten +Dennis Scheiba +Damon Timm +winwon +Xavier Beynon +Gabriel Schubiner +xantares +Jan Matějka +Mauroy Sébastien +William Sewell +Dao Hoang Son +Oskar Jauch +Matthew Rayfield +t0mm0 +Tithen-Firion +Zack Fernandes +cryptonaut +Adrian Kretz +Mathias Rav +Petr Kutalek +Will Glynn +Max Reimann +Cédric Luthi +Thijs Vermeir +Joel Leclerc +Christopher Krooss +Ondřej Caletka +Dinesh S +Johan K. Jensen +Yen Chi Hsuan +Enam Mijbah Noor +David Luhmer +Shaya Goldberg +Paul Hartmann +Frans de Jonge +Robin de Rooij +Ryan Schmidt +Leslie P. Polzer +Duncan Keall +Alexander Mamay +Devin J. Pohly +Eduardo Ferro Aldama +Jeff Buchbinder +Amish Bhadeshia +Joram Schrijver +Will W. +Mohammad Teimori Pabandi +Roman Le Négrate +Matthias Küch +Julian Richen +Ping O. +Mister Hat +Peter Ding +jackyzy823 +George Brighton +Remita Amine +Aurélio A. Heckert +Bernhard Minks +sceext +Zach Bruggeman +Tjark Saul +slangangular +Behrouz Abbasi +ngld +nyuszika7h +Shaun Walbridge +Lee Jenkins +Anssi Hannula +Lukáš Lalinský +Qijiang Fan +Rémy Léone +Marco Ferragina +reiv +Muratcan Simsek +Evan Lu +flatgreen +Brian Foley +Vignesh Venkat +Tom Gijselinck +Founder Fang +Andrew Alexeyew +Saso Bezlaj +Erwin de Haan +Jens Wille +Robin Houtevelts +Patrick Griffis +Aidan Rowe +mutantmonkey +Ben Congdon +Kacper Michajłow +José Joaquín Atria +Viťas Strádal +Kagami Hiiragi +Philip Huppert +blahgeek +Kevin Deldycke +inondle +Tomáš Čech +Déstin Reed +Roman Tsiupa +Artur Krysiak +Jakub Adam Wieczorek +Aleksandar Topuzović +Nehal Patel +Rob van Bekkum +Petr Zvoníček +Pratyush Singh +Aleksander Nitecki +Sebastian Blunt +Matěj Cepl +Xie Yanbo +Philip Xu +John Hawkinson +Rich Leeper +Zhong Jianxin +Thor77 +Mattias Wadman +Arjan Verwer +Costy Petrisor +Logan B +Alex Seiler +Vijay Singh +Paul Hartmann +Stephen Chen +Fabian Stahl +Bagira +Odd Stråbø +Philip Herzog +Thomas Christlieb +Marek Rusinowski +Tobias Gruetzmacher +Olivier Bilodeau +Lars Vierbergen +Juanjo Benages +Xiao Di Guan +Thomas Winant +Daniel Twardowski +Jeremie Jarosh +Gerard Rovira +Marvin Ewald +Frédéric Bournival +Timendum +gritstub +Adam Voss +Mike Fährmann +Jan Kundrát +Giuseppe Fabiano +Örn Guðjónsson +Parmjit Virk +Genki Sky +Ľuboš Katrinec +Corey Nicholson +Ashutosh Chaudhary +John Dong +Tatsuyuki Ishi +Daniel Weber +Kay Bouché diff --git a/ChangeLog b/ChangeLog index 8af3682..bfffb1f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,198 @@ +version 2017.12.31 + +Core ++ [extractor/common] Add container meta field for formats extracted + in _parse_mpd_formats (#13616) ++ [downloader/hls] Use HTTP headers for key request +* [common] Use AACL as the default fourcc when AudioTag is 255 +* [extractor/common] Fix extraction of DASH formats with the same + representation id (#15111) + +Extractors ++ [slutload] Add support for mobile URLs (#14806) +* [abc:iview] Bypass geo restriction +* [abc:iview] Fix extraction (#14711, #14782, #14838, #14917, #14963, #14985, + #15035, #15057, #15061, #15071, #15095, #15106) +* [openload] Fix extraction (#15118) +- [sandia] Remove extractor +- [collegerama] Remove extractor ++ [mediasite] Add support for sites based on Mediasite Video Platform (#5428, + #11185, #14343) ++ [ufctv] Add support for ufc.tv (#14520) +* [pluralsight] Fix missing first line of subtitles (#11118) +* [openload] Fallback on f-page extraction (#14665, #14879) +* [vimeo] Improve password protected videos extraction (#15114) +* [aws] Fix canonical/signed headers generation on python 2 (#15102) + + +version 2017.12.28 + +Extractors ++ [internazionale] Add support for internazionale.it (#14973) +* [playtvak] Relax video regular expression and make description optional + (#15037) ++ [filmweb] Add support for filmweb.no (#8773, #10368) ++ [23video] Add support for 23video.com ++ [espn] Add support for fivethirtyeight.com (#6864) ++ [umg:de] Add support for universal-music.de (#11582, #11584) ++ [espn] Add support for espnfc and extract more formats (#8053) +* [youku] Update ccode (#14880) ++ [openload] Add support for oload.stream (#15070) +* [youku] Fix list extraction (#15065) + + +version 2017.12.23 + +Core +* [extractor/common] Move X-Forwarded-For setup code into _request_webpage ++ [YoutubeDL] Add support for playlist_uploader and playlist_uploader_id in + output template (#11427, #15018) ++ [extractor/common] Introduce uploader, uploader_id and uploader_url + meta fields for playlists (#11427, #15018) +* [downloader/fragment] Encode filename of fragment being removed (#15020) ++ [utils] Add another date format pattern (#14999) + +Extractors ++ [kaltura] Add another embed pattern for entry_id ++ [7plus] Add support for 7plus.com.au (#15043) +* [animeondemand] Relax login error regular expression ++ [shahid] Add support for show pages (#7401) ++ [youtube] Extract uploader, uploader_id and uploader_url for playlists + (#11427, #15018) +* [afreecatv] Improve format extraction (#15019) ++ [cspan] Add support for audio only pages and catch page errors (#14995) ++ [mailru] Add support for embed URLs (#14904) +* [crunchyroll] Future-proof XML element checks (#15013) +* [cbslocal] Fix timestamp extraction (#14999, #15000) +* [discoverygo] Correct TTML subtitle extension +* [vk] Make view count optional (#14979) +* [disney] Skip Apple FairPlay formats (#14982) +* [voot] Fix format extraction (#14758) + + +version 2017.12.14 + +Core +* [postprocessor/xattr] Clarify NO_SPACE message (#14970) +* [downloader/http] Return actual download result from real_download (#14971) + +Extractors ++ [itv] Extract more subtitles and duration +* [itv] Improve extraction (#14944) ++ [byutv] Add support for geo restricted videos +* [byutv] Fix extraction (#14966, #14967) ++ [bbccouk] Fix extraction for 320k HLS streams ++ [toutv] Add support for special video URLs (#14179) +* [discovery] Fix free videos extraction (#14157, #14954) +* [tvnow] Fix extraction (#7831) ++ [nickelodeon:br] Add support for nickelodeon brazil websites (#14893) +* [nick] Improve extraction (#14876) +* [tbs] Fix extraction (#13658) + + +version 2017.12.10 + +Core ++ [utils] Add sami mimetype to mimetype2ext + +Extractors +* [culturebox] Improve video id extraction (#14947) +* [twitter] Improve extraction (#14197) ++ [udemy] Extract more HLS formats +* [udemy] Improve course id extraction (#14938) ++ [stretchinternet] Add support for portal.stretchinternet.com (#14576) +* [ellentube] Fix extraction (#14407, #14570) ++ [raiplay:playlist] Add support for playlists (#14563) +* [sonyliv] Bypass geo restriction +* [sonyliv] Extract higher quality formats (#14922) +* [fox] Extract subtitles ++ [fox] Add support for Adobe Pass authentication (#14205, #14489) +- [dailymotion:cloud] Remove extractor (#6794) +* [xhamster] Fix thumbnail extraction (#14780) ++ [xhamster] Add support for mobile URLs (#14780) +* [generic] Don't pass video id as mpd id while extracting DASH (#14902) +* [ard] Skip invalid stream URLs (#14906) +* [porncom] Fix metadata extraction (#14911) +* [pluralsight] Detect agreement request (#14913) +* [toutv] Fix login (#14614) + + +version 2017.12.02 + +Core ++ [downloader/fragment] Commit part file after each fragment ++ [extractor/common] Add durations for DASH fragments with bare SegmentURLs ++ [extractor/common] Add support for DASH manifests with SegmentLists with + bare SegmentURLs (#14844) ++ [utils] Add hvc1 codec code to parse_codecs + +Extractors +* [xhamster] Fix extraction (#14884) +* [youku] Update ccode (#14872) +* [mnet] Fix format extraction (#14883) ++ [xiami] Add Referer header to API request +* [mtv] Correct scc extention in extracted subtitles (#13730) +* [vvvvid] Fix extraction for kenc videos (#13406) ++ [br] Add support for BR Mediathek videos (#14560, #14788) ++ [daisuki] Add support for motto.daisuki.com (#14681) +* [odnoklassniki] Fix API metadata request (#14862) +* [itv] Fix HLS formats extraction ++ [pbs] Add another media id regular expression + + +version 2017.11.26 + +Core +* [extractor/common] Use final URL when dumping request (#14769) + +Extractors +* [fczenit] Fix extraction +- [firstpost] Remove extractor +* [freespeech] Fix extraction +* [nexx] Extract more formats ++ [openload] Add support for openload.link (#14763) +* [empflix] Relax URL regular expression +* [empflix] Fix extractrion +* [tnaflix] Don't modify download URLs (#14811) +- [gamersyde] Remove extractor +* [francetv:generationwhat] Fix extraction ++ [massengeschmacktv] Add support for Massengeschmack TV +* [fox9] Fix extraction +* [faz] Fix extraction and add support for Perform Group embeds (#14714) ++ [performgroup] Add support for performgroup.com ++ [jwplatform] Add support for iframes (#14828) +* [culturebox] Fix extraction (#14827) +* [youku] Fix extraction; update ccode (#14815) +* [livestream] Make SMIL extraction non fatal (#14792) ++ [drtuber] Add support for mobile URLs (#14772) ++ [spankbang] Add support for mobile URLs (#14771) +* [instagram] Fix description, timestamp and counters extraction (#14755) + + +version 2017.11.15 + +Core +* [common] Skip Apple FairPlay m3u8 manifests (#14741) +* [YoutubeDL] Fix playlist range optimization for --playlist-items (#14740) + +Extractors +* [vshare] Capture and output error message +* [vshare] Fix extraction (#14473) +* [crunchyroll] Extract old RTMP formats +* [tva] Fix extraction (#14736) +* [gamespot] Lower preference of HTTP formats (#14652) +* [instagram:user] Fix extraction (#14699) +* [ccma] Fix typo (#14730) +- Remove sensitive data from logging in messages +* [instagram:user] Fix extraction (#14699) ++ [gamespot] Add support for article URLs (#14652) +* [gamespot] Skip Brightcove Once HTTP formats (#14652) +* [cartoonnetwork] Update tokenizer_src (#14666) ++ [wsj] Recognize another URL pattern (#14704) +* [pandatv] Update API URL and sign format URLs (#14693) +* [crunchyroll] Use old login method (#11572) + + version 2017.11.06 Core @@ -25,8 +220,8 @@ Extractors + [fxnetworks] Extract series metadata (#14603) + [younow] Add support for younow.com (#9255, #9432, #12436) * [dctptv] Fix extraction (#14599) -* [youtube] Restrict embed regex (#14600) -* [vimeo] Restrict iframe embed regex (#14600) +* [youtube] Restrict embed regular expression (#14600) +* [vimeo] Restrict iframe embed regular expression (#14600) * [soundgasm] Improve extraction (#14588) - [myvideo] Remove extractor (#8557) + [nbc] Add support for classic-tv videos (#14575) diff --git a/MANIFEST.in b/MANIFEST.in index 5743f60..4e43e99 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,7 +1,9 @@ include README.md -include test/*.py -include test/*.json +include LICENSE +include AUTHORS +include ChangeLog include youtube-dl.bash-completion include youtube-dl.fish include youtube-dl.1 recursive-include docs Makefile conf.py *.rst +recursive-include test * diff --git a/Makefile b/Makefile index c74eea7..fe24781 100644 --- a/Makefile +++ b/Makefile @@ -36,8 +36,17 @@ test: ot: offlinetest +# Keep this list in sync with devscripts/run_tests.sh offlinetest: codetest - $(PYTHON) -m nose --verbose test --exclude test_download.py --exclude test_age_restriction.py --exclude test_subtitles.py --exclude test_write_annotations.py --exclude test_youtube_lists.py --exclude test_iqiyi_sdk_interpreter.py --exclude test_socks.py + $(PYTHON) -m nose --verbose test \ + --exclude test_age_restriction.py \ + --exclude test_download.py \ + --exclude test_iqiyi_sdk_interpreter.py \ + --exclude test_socks.py \ + --exclude test_subtitles.py \ + --exclude test_write_annotations.py \ + --exclude test_youtube_lists.py \ + --exclude test_youtube_signature.py tar: youtube-dl.tar.gz @@ -101,7 +110,7 @@ _EXTRACTOR_FILES = $(shell find youtube_dl/extractor -iname '*.py' -and -not -in youtube_dl/extractor/lazy_extractors.py: devscripts/make_lazy_extractors.py devscripts/lazy_load_template.py $(_EXTRACTOR_FILES) $(PYTHON) devscripts/make_lazy_extractors.py $@ -youtube-dl.tar.gz: youtube-dl README.md README.txt youtube-dl.1 youtube-dl.bash-completion youtube-dl.zsh youtube-dl.fish ChangeLog +youtube-dl.tar.gz: youtube-dl README.md README.txt youtube-dl.1 youtube-dl.bash-completion youtube-dl.zsh youtube-dl.fish ChangeLog AUTHORS @tar -czf youtube-dl.tar.gz --transform "s|^|youtube-dl/|" --owner 0 --group 0 \ --exclude '*.DS_Store' \ --exclude '*.kate-swp' \ @@ -110,11 +119,10 @@ youtube-dl.tar.gz: youtube-dl README.md README.txt youtube-dl.1 youtube-dl.bash- --exclude '*~' \ --exclude '__pycache__' \ --exclude '.git' \ - --exclude 'testdata' \ --exclude 'docs/_build' \ -- \ bin devscripts test youtube_dl docs \ - ChangeLog LICENSE README.md README.txt \ + ChangeLog AUTHORS LICENSE README.md README.txt \ Makefile MANIFEST.in youtube-dl.1 youtube-dl.bash-completion \ - youtube-dl.zsh youtube-dl.fish setup.py \ + youtube-dl.zsh youtube-dl.fish setup.py setup.cfg \ youtube-dl diff --git a/README.md b/README.md index ea321d5..47b0640 100644 --- a/README.md +++ b/README.md @@ -511,6 +511,9 @@ The basic usage is not to set any template arguments when downloading a single f - `average_rating` (numeric): Average rating give by users, the scale used depends on the webpage - `comment_count` (numeric): Number of comments on the video - `age_limit` (numeric): Age restriction for the video (years) + - `is_live` (boolean): Whether this video is a live stream or a fixed-length video + - `start_time` (numeric): Time in seconds where the reproduction should start, as specified in the URL + - `end_time` (numeric): Time in seconds where the reproduction should end, as specified in the URL - `format` (string): A human-readable description of the format - `format_id` (string): Format code specified by `--format` - `format_note` (string): Additional info about the format @@ -536,6 +539,8 @@ The basic usage is not to set any template arguments when downloading a single f - `playlist_index` (numeric): Index of the video in the playlist padded with leading zeros according to the total length of the playlist - `playlist_id` (string): Playlist identifier - `playlist_title` (string): Playlist title + - `playlist_uploader` (string): Full name of the playlist uploader + - `playlist_uploader_id` (string): Nickname or id of the playlist uploader Available for the video that belongs to some logical chapter or section: diff --git a/README.txt b/README.txt index 4b7adfd..0a748ea 100644 --- a/README.txt +++ b/README.txt @@ -596,6 +596,12 @@ with sequence type are: used depends on the webpage - comment_count (numeric): Number of comments on the video - age_limit (numeric): Age restriction for the video (years) +- is_live (boolean): Whether this video is a live stream or a + fixed-length video +- start_time (numeric): Time in seconds where the reproduction should + start, as specified in the URL +- end_time (numeric): Time in seconds where the reproduction should + end, as specified in the URL - format (string): A human-readable description of the format - format_id (string): Format code specified by --format - format_note (string): Additional info about the format @@ -625,6 +631,9 @@ with sequence type are: with leading zeros according to the total length of the playlist - playlist_id (string): Playlist identifier - playlist_title (string): Playlist title +- playlist_uploader (string): Full name of the playlist uploader +- playlist_uploader_id (string): Nickname or id of the playlist + uploader Available for the video that belongs to some logical chapter or section: diff --git a/devscripts/run_tests.sh b/devscripts/run_tests.sh index 6ba2672..dd37a80 100755 --- a/devscripts/run_tests.sh +++ b/devscripts/run_tests.sh @@ -1,6 +1,7 @@ #!/bin/bash -DOWNLOAD_TESTS="age_restriction|download|subtitles|write_annotations|iqiyi_sdk_interpreter|youtube_lists" +# Keep this list in sync with the `offlinetest` target in Makefile +DOWNLOAD_TESTS="age_restriction|download|iqiyi_sdk_interpreter|socks|subtitles|write_annotations|youtube_lists|youtube_signature" test_set="" multiprocess_args="" diff --git a/docs/supportedsites.md b/docs/supportedsites.md index 6009df5..75bd5c9 100644 --- a/docs/supportedsites.md +++ b/docs/supportedsites.md @@ -3,6 +3,7 @@ - **1up.com** - **20min** - **220.ro** + - **23video** - **24video** - **3qsdn**: 3Q SDN - **3sat** @@ -10,6 +11,7 @@ - **56.com** - **5min** - **6play** + - **7plus** - **8tracks** - **91porn** - **9c9media** @@ -112,16 +114,16 @@ - **BokeCC** - **BostonGlobe** - **Bpb**: Bundeszentrale für politische Bildung - - **BR**: Bayerischer Rundfunk Mediathek + - **BR**: Bayerischer Rundfunk - **BravoTV** - **Break** - **brightcove:legacy** - **brightcove:new** + - **BRMediathek**: Bayerischer Rundfunk Mediathek - **bt:article**: Bergens Tidende Articles - **bt:vestlendingen**: Bergens Tidende - Vestlendingen - **BuzzFeed** - **BYUtv** - - **BYUtvEvent** - **Camdemy** - **CamdemyFolder** - **CamWithHer** @@ -169,7 +171,6 @@ - **CNN** - **CNNArticle** - **CNNBlogs** - - **CollegeRama** - **ComCarCoff** - **ComedyCentral** - **ComedyCentralFullEpisodes** @@ -197,9 +198,8 @@ - **dailymotion** - **dailymotion:playlist** - **dailymotion:user** - - **DailymotionCloud** - - **Daisuki** - - **DaisukiPlaylist** + - **DaisukiMotto** + - **DaisukiMottoPlaylist** - **daum.net** - **daum.net:clip** - **daum.net:playlist** @@ -242,8 +242,9 @@ - **eHow** - **Einthusan** - **eitb.tv** - - **EllenTV** - - **EllenTV:clips** + - **EllenTube** + - **EllenTubePlaylist** + - **EllenTubeVideo** - **ElPais**: El País - **Embedly** - **EMPFlix** @@ -266,10 +267,10 @@ - **fc2** - **fc2:embed** - **Fczenit** - - **fernsehkritik.tv** - **filmon** - **filmon:channel** - - **Firstpost** + - **Filmweb** + - **FiveThirtyEight** - **FiveTV** - **Flickr** - **Flipagram** @@ -283,7 +284,7 @@ - **foxnews:article** - **foxnews:insider** - **FoxSports** - - **france2.fr:generation-quoi** + - **france2.fr:generation-what** - **FranceCulture** - **FranceInter** - **FranceTV** @@ -301,7 +302,6 @@ - **GameInformer** - **GameOne** - **gameone:playlist** - - **Gamersyde** - **GameSpot** - **GameStar** - **Gaskrank** @@ -361,6 +361,7 @@ - **InfoQ** - **Instagram** - **instagram:user**: Instagram user profile + - **Internazionale** - **InternetVideoArchive** - **IPrima** - **iqiyi**: 爱奇艺 @@ -441,11 +442,13 @@ - **mangomolo:live** - **mangomolo:video** - **ManyVids** + - **massengeschmack.tv** - **MatchTV** - **MDR**: MDR.DE and KiKA - **media.ccc.de** - **Medialaan** - **Mediaset** + - **Mediasite** - **Medici** - **megaphone.fm**: megaphone.fm embedded players - **Meipai**: 美拍 @@ -539,6 +542,7 @@ - **nhl.com:videocenter:category**: NHL videocenter category - **nick.com** - **nick.de** + - **nickelodeon:br** - **nickelodeonru** - **nicknight** - **niconico**: ニコニコ動画 @@ -557,8 +561,6 @@ - **nowness** - **nowness:playlist** - **nowness:series** - - **NowTV** (Currently broken) - - **NowTVList** - **nowvideo**: NowVideo - **Noz** - **npo**: npo.nl, ntr.nl, omroepwnl.nl, zapp.nl and npo3.nl @@ -608,6 +610,7 @@ - **pcmag** - **PearVideo** - **People** + - **PerformGroup** - **periscope**: Periscope - **periscope:user**: Periscope user videos - **PhilharmonieDeParis**: Philharmonie de Paris @@ -662,6 +665,7 @@ - **Rai** - **RaiPlay** - **RaiPlayLive** + - **RaiPlayPlaylist** - **RBMARadio** - **RDS**: RDS.ca - **RedBullTV** @@ -713,7 +717,6 @@ - **safari**: safaribooksonline.com online video - **safari:api** - **safari:course**: safaribooksonline.com online courses - - **Sandia**: Sandia National Laboratories - **Sapo**: SAPO Vídeos - **savefrom.net** - **SBS**: sbs.com.au @@ -729,6 +732,7 @@ - **Servus** - **Sexu** - **Shahid** + - **ShahidShow** - **Shared**: shared.sx - **ShowRoomLive** - **Sina** @@ -781,6 +785,7 @@ - **streamcloud.eu** - **StreamCZ** - **StreetVoice** + - **StretchInternet** - **SunPorno** - **SVT** - **SVTPlay**: SVT Play and Öppet arkiv @@ -792,7 +797,7 @@ - **tagesschau:player** - **Tass** - **TastyTrade** - - **TBS** (Currently broken) + - **TBS** - **TDSLifeway** - **teachertube**: teachertube.com videos - **teachertube:user:collection**: teachertube.com user and collection videos @@ -863,6 +868,8 @@ - **tvland.com** - **TVN24** - **TVNoe** + - **TVNow** + - **TVNowList** - **tvp**: Telewizja Polska - **tvp:embed**: Telewizja Polska - **tvp:series** @@ -884,7 +891,9 @@ - **udemy** - **udemy:course** - **UDNEmbed**: 聯合影音 + - **UFCTV** - **UKTVPlay** + - **umg:de**: Universal Music Deutschland - **Unistra** - **Unity** - **uol.com.br** diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..2dc06ff --- /dev/null +++ b/setup.cfg @@ -0,0 +1,6 @@ +[wheel] +universal = True + +[flake8] +exclude = youtube_dl/extractor/__init__.py,devscripts/buildserver.py,devscripts/lazy_load_template.py,devscripts/make_issue_template.py,setup.py,build,.git +ignore = E402,E501,E731 diff --git a/setup.py b/setup.py index 67d6633..7dbb580 100644 --- a/setup.py +++ b/setup.py @@ -109,6 +109,7 @@ setup( author_email='ytdl@yt-dl.org', maintainer='Sergey M.', maintainer_email='dstftw@gmail.com', + license='Unlicense', packages=[ 'youtube_dl', 'youtube_dl.extractor', 'youtube_dl.downloader', diff --git a/test/test_InfoExtractor.py b/test/test_InfoExtractor.py index 686c63e..7b31d51 100644 --- a/test/test_InfoExtractor.py +++ b/test/test_InfoExtractor.py @@ -493,9 +493,20 @@ jwplayer("mediaplayer").setup({"abouttext":"Visit Indie DB","aboutlink":"http:\/ _TEST_CASES = [ ( # https://github.com/rg3/youtube-dl/issues/13919 + # Also tests duplicate representation ids, see + # https://github.com/rg3/youtube-dl/issues/15111 'float_duration', 'http://unknown/manifest.mpd', [{ + 'manifest_url': 'http://unknown/manifest.mpd', + 'ext': 'm4a', + 'format_id': '318597', + 'format_note': 'DASH audio', + 'protocol': 'http_dash_segments', + 'acodec': 'mp4a.40.2', + 'vcodec': 'none', + 'tbr': 61.587, + }, { 'manifest_url': 'http://unknown/manifest.mpd', 'ext': 'mp4', 'format_id': '318597', @@ -562,7 +573,89 @@ jwplayer("mediaplayer").setup({"abouttext":"Visit Indie DB","aboutlink":"http:\/ 'width': 1920, 'height': 1080, }] - ), + ), ( + # https://github.com/rg3/youtube-dl/pull/14844 + 'urls_only', + 'http://unknown/manifest.mpd', + [{ + 'manifest_url': 'http://unknown/manifest.mpd', + 'ext': 'mp4', + 'format_id': 'h264_aac_144p_m4s', + 'format_note': 'DASH video', + 'protocol': 'http_dash_segments', + 'acodec': 'mp4a.40.2', + 'vcodec': 'avc3.42c01e', + 'tbr': 200, + 'width': 256, + 'height': 144, + }, { + 'manifest_url': 'http://unknown/manifest.mpd', + 'ext': 'mp4', + 'format_id': 'h264_aac_240p_m4s', + 'format_note': 'DASH video', + 'protocol': 'http_dash_segments', + 'acodec': 'mp4a.40.2', + 'vcodec': 'avc3.42c01e', + 'tbr': 400, + 'width': 424, + 'height': 240, + }, { + 'manifest_url': 'http://unknown/manifest.mpd', + 'ext': 'mp4', + 'format_id': 'h264_aac_360p_m4s', + 'format_note': 'DASH video', + 'protocol': 'http_dash_segments', + 'acodec': 'mp4a.40.2', + 'vcodec': 'avc3.42c01e', + 'tbr': 800, + 'width': 640, + 'height': 360, + }, { + 'manifest_url': 'http://unknown/manifest.mpd', + 'ext': 'mp4', + 'format_id': 'h264_aac_480p_m4s', + 'format_note': 'DASH video', + 'protocol': 'http_dash_segments', + 'acodec': 'mp4a.40.2', + 'vcodec': 'avc3.42c01e', + 'tbr': 1200, + 'width': 856, + 'height': 480, + }, { + 'manifest_url': 'http://unknown/manifest.mpd', + 'ext': 'mp4', + 'format_id': 'h264_aac_576p_m4s', + 'format_note': 'DASH video', + 'protocol': 'http_dash_segments', + 'acodec': 'mp4a.40.2', + 'vcodec': 'avc3.42c01e', + 'tbr': 1600, + 'width': 1024, + 'height': 576, + }, { + 'manifest_url': 'http://unknown/manifest.mpd', + 'ext': 'mp4', + 'format_id': 'h264_aac_720p_m4s', + 'format_note': 'DASH video', + 'protocol': 'http_dash_segments', + 'acodec': 'mp4a.40.2', + 'vcodec': 'avc3.42c01e', + 'tbr': 2400, + 'width': 1280, + 'height': 720, + }, { + 'manifest_url': 'http://unknown/manifest.mpd', + 'ext': 'mp4', + 'format_id': 'h264_aac_1080p_m4s', + 'format_note': 'DASH video', + 'protocol': 'http_dash_segments', + 'acodec': 'mp4a.40.2', + 'vcodec': 'avc3.42c01e', + 'tbr': 4400, + 'width': 1920, + 'height': 1080, + }] + ) ] for mpd_file, mpd_url, expected_formats in _TEST_CASES: @@ -601,5 +694,6 @@ jwplayer("mediaplayer").setup({"abouttext":"Visit Indie DB","aboutlink":"http:\/ self.ie._sort_formats(formats) expect_value(self, formats, expected_formats, None) + if __name__ == '__main__': unittest.main() diff --git a/test/test_YoutubeDL.py b/test/test_YoutubeDL.py index 4af92fb..f0f5a84 100644 --- a/test/test_YoutubeDL.py +++ b/test/test_YoutubeDL.py @@ -466,11 +466,11 @@ class TestFormatSelection(unittest.TestCase): ydl = YDL({'simulate': True}) self.assertEqual(ydl._default_format_spec({}), 'bestvideo+bestaudio/best') - ydl = YDL({'is_live': True}) - self.assertEqual(ydl._default_format_spec({}), 'best/bestvideo+bestaudio') + ydl = YDL({}) + self.assertEqual(ydl._default_format_spec({'is_live': True}), 'best/bestvideo+bestaudio') - ydl = YDL({'simulate': True, 'is_live': True}) - self.assertEqual(ydl._default_format_spec({}), 'bestvideo+bestaudio/best') + ydl = YDL({'simulate': True}) + self.assertEqual(ydl._default_format_spec({'is_live': True}), 'bestvideo+bestaudio/best') ydl = YDL({'outtmpl': '-'}) self.assertEqual(ydl._default_format_spec({}), 'best/bestvideo+bestaudio') diff --git a/test/test_utils.py b/test/test_utils.py index cc13f79..0857c0f 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -343,6 +343,7 @@ class TestUtil(unittest.TestCase): self.assertEqual(unified_timestamp('Feb 7, 2016 at 6:35 pm'), 1454870100) self.assertEqual(unified_timestamp('2017-03-30T17:52:41Q'), 1490896361) self.assertEqual(unified_timestamp('Sep 11, 2013 | 5:49 AM'), 1378878540) + self.assertEqual(unified_timestamp('December 15, 2017 at 7:49 am'), 1513324140) def test_determine_ext(self): self.assertEqual(determine_ext('http://example.com/foo/bar.mp4/?download'), 'mp4') diff --git a/test/testdata/f4m/custom_base_url.f4m b/test/testdata/f4m/custom_base_url.f4m new file mode 100644 index 0000000..74e1539 --- /dev/null +++ b/test/testdata/f4m/custom_base_url.f4m @@ -0,0 +1,10 @@ + + + recorded + http://vod.livestream.com/events/0000000000673980/ + 269.293 + AAAAm2Fic3QAAAAAAAAAAQAAAAPoAAAAAAAEG+0AAAAAAAAAAAAAAAAAAQAAABlhc3J0AAAAAAAAAAABAAAAAQAAAC4BAAAAVmFmcnQAAAAAAAAD6AAAAAAEAAAAAQAAAAAAAAAAAAAXcAAAAC0AAAAAAAQHQAAAE5UAAAAuAAAAAAAEGtUAAAEYAAAAAAAAAAAAAAAAAAAAAAA= + + AgAKb25NZXRhRGF0YQgAAAAIAAhkdXJhdGlvbgBAcNSwIMSbpgAFd2lkdGgAQJQAAAAAAAAABmhlaWdodABAhoAAAAAAAAAJZnJhbWVyYXRlAEA4/7DoLwW3AA12aWRlb2RhdGFyYXRlAECe1DLgjcobAAx2aWRlb2NvZGVjaWQAQBwAAAAAAAAADWF1ZGlvZGF0YXJhdGUAQGSimlvaPKQADGF1ZGlvY29kZWNpZABAJAAAAAAAAAAACQ== + + diff --git a/test/testdata/m3u8/pluzz_francetv_11507.m3u8 b/test/testdata/m3u8/pluzz_francetv_11507.m3u8 new file mode 100644 index 0000000..0809f5a --- /dev/null +++ b/test/testdata/m3u8/pluzz_francetv_11507.m3u8 @@ -0,0 +1,14 @@ +#EXTM3U + #EXT-X-VERSION:5 + #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Francais",DEFAULT=NO,FORCED=NO,URI="http://replayftv-pmd.francetv.fr/subtitles/2017/16/156589847-1492488987.m3u8",LANGUAGE="fra" + #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",LANGUAGE="fra",NAME="Francais",DEFAULT=YES, AUTOSELECT=YES +#EXT-X-STREAM-INF:SUBTITLES="subs",AUDIO="aac",PROGRAM-ID=1,BANDWIDTH=180000,RESOLUTION=256x144,CODECS="avc1.66.30, mp4a.40.2" +http://replayftv-vh.akamaihd.net/i/streaming-adaptatif_france-dom-tom/2017/S16/J2/156589847-58f59130c1f52-,standard1,standard2,standard3,standard4,standard5,.mp4.csmil/index_0_av.m3u8?null=0 +#EXT-X-STREAM-INF:SUBTITLES="subs",AUDIO="aac",PROGRAM-ID=1,BANDWIDTH=303000,RESOLUTION=320x180,CODECS="avc1.66.30, mp4a.40.2" +http://replayftv-vh.akamaihd.net/i/streaming-adaptatif_france-dom-tom/2017/S16/J2/156589847-58f59130c1f52-,standard1,standard2,standard3,standard4,standard5,.mp4.csmil/index_1_av.m3u8?null=0 +#EXT-X-STREAM-INF:SUBTITLES="subs",AUDIO="aac",PROGRAM-ID=1,BANDWIDTH=575000,RESOLUTION=512x288,CODECS="avc1.66.30, mp4a.40.2" +http://replayftv-vh.akamaihd.net/i/streaming-adaptatif_france-dom-tom/2017/S16/J2/156589847-58f59130c1f52-,standard1,standard2,standard3,standard4,standard5,.mp4.csmil/index_2_av.m3u8?null=0 +#EXT-X-STREAM-INF:SUBTITLES="subs",AUDIO="aac",PROGRAM-ID=1,BANDWIDTH=831000,RESOLUTION=704x396,CODECS="avc1.77.30, mp4a.40.2" +http://replayftv-vh.akamaihd.net/i/streaming-adaptatif_france-dom-tom/2017/S16/J2/156589847-58f59130c1f52-,standard1,standard2,standard3,standard4,standard5,.mp4.csmil/index_3_av.m3u8?null=0 +#EXT-X-STREAM-INF:SUBTITLES="subs",AUDIO="aac",PROGRAM-ID=1,BANDWIDTH=1467000,RESOLUTION=1024x576,CODECS="avc1.77.30, mp4a.40.2" +http://replayftv-vh.akamaihd.net/i/streaming-adaptatif_france-dom-tom/2017/S16/J2/156589847-58f59130c1f52-,standard1,standard2,standard3,standard4,standard5,.mp4.csmil/index_4_av.m3u8?null=0 diff --git a/test/testdata/m3u8/teamcoco_11995.m3u8 b/test/testdata/m3u8/teamcoco_11995.m3u8 new file mode 100644 index 0000000..a6e4216 --- /dev/null +++ b/test/testdata/m3u8/teamcoco_11995.m3u8 @@ -0,0 +1,16 @@ +#EXTM3U +#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-0",NAME="Default",AUTOSELECT=YES,DEFAULT=YES,URI="hls/CONAN_020217_Highlight_show-audio-160k_v4.m3u8" +#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-1",NAME="Default",AUTOSELECT=YES,DEFAULT=YES,URI="hls/CONAN_020217_Highlight_show-audio-64k_v4.m3u8" +#EXT-X-I-FRAME-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=37862000,CODECS="avc1.4d001f",URI="hls/CONAN_020217_Highlight_show-2m_iframe.m3u8" +#EXT-X-I-FRAME-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=18750000,CODECS="avc1.4d001e",URI="hls/CONAN_020217_Highlight_show-1m_iframe.m3u8" +#EXT-X-I-FRAME-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=6535000,CODECS="avc1.42001e",URI="hls/CONAN_020217_Highlight_show-400k_iframe.m3u8" +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2374000,RESOLUTION=1024x576,CODECS="avc1.4d001f,mp4a.40.2",AUDIO="audio-0" +hls/CONAN_020217_Highlight_show-2m_v4.m3u8 +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1205000,RESOLUTION=640x360,CODECS="avc1.4d001e,mp4a.40.2",AUDIO="audio-0" +hls/CONAN_020217_Highlight_show-1m_v4.m3u8 +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=522000,RESOLUTION=400x224,CODECS="avc1.42001e,mp4a.40.2",AUDIO="audio-0" +hls/CONAN_020217_Highlight_show-400k_v4.m3u8 +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=413000,RESOLUTION=400x224,CODECS="avc1.42001e,mp4a.40.5",AUDIO="audio-1" +hls/CONAN_020217_Highlight_show-400k_v4.m3u8 +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=71000,CODECS="mp4a.40.5",AUDIO="audio-1" +hls/CONAN_020217_Highlight_show-audio-64k_v4.m3u8 diff --git a/test/testdata/m3u8/toggle_mobile_12211.m3u8 b/test/testdata/m3u8/toggle_mobile_12211.m3u8 new file mode 100644 index 0000000..69604e6 --- /dev/null +++ b/test/testdata/m3u8/toggle_mobile_12211.m3u8 @@ -0,0 +1,13 @@ +#EXTM3U +#EXT-X-VERSION:4 +#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",LANGUAGE="eng",NAME="English",URI="http://k.toggle.sg/fhls/p/2082311/sp/208231100/serveFlavor/entryId/0_89q6e8ku/v/2/pv/1/flavorId/0_sa2ntrdg/name/a.mp4/index.m3u8" +#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",LANGUAGE="und",NAME="Undefined",URI="http://k.toggle.sg/fhls/p/2082311/sp/208231100/serveFlavor/entryId/0_89q6e8ku/v/2/pv/1/flavorId/0_r7y0nitg/name/a.mp4/index.m3u8" + +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=155648,RESOLUTION=320x180,AUDIO="audio" +http://k.toggle.sg/fhls/p/2082311/sp/208231100/serveFlavor/entryId/0_89q6e8ku/v/2/pv/1/flavorId/0_qlk9hlzr/name/a.mp4/index.m3u8 +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=502784,RESOLUTION=480x270,AUDIO="audio" +http://k.toggle.sg/fhls/p/2082311/sp/208231100/serveFlavor/entryId/0_89q6e8ku/v/2/pv/1/flavorId/0_oefackmi/name/a.mp4/index.m3u8 +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=827392,RESOLUTION=640x360,AUDIO="audio" +http://k.toggle.sg/fhls/p/2082311/sp/208231100/serveFlavor/entryId/0_89q6e8ku/v/12/pv/1/flavorId/0_vyg9pj7k/name/a.mp4/index.m3u8 +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1396736,RESOLUTION=854x480,AUDIO="audio" +http://k.toggle.sg/fhls/p/2082311/sp/208231100/serveFlavor/entryId/0_89q6e8ku/v/12/pv/1/flavorId/0_50n4psvx/name/a.mp4/index.m3u8 diff --git a/test/testdata/m3u8/twitch_vod.m3u8 b/test/testdata/m3u8/twitch_vod.m3u8 new file mode 100644 index 0000000..7617277 --- /dev/null +++ b/test/testdata/m3u8/twitch_vod.m3u8 @@ -0,0 +1,20 @@ +#EXTM3U +#EXT-X-TWITCH-INFO:ORIGIN="s3",CLUSTER="edgecast_vod",REGION="EU",MANIFEST-CLUSTER="edgecast_vod",USER-IP="109.171.17.81" +#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="chunked",NAME="Source",AUTOSELECT=YES,DEFAULT=YES +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=3214134,CODECS="avc1.100.31,mp4a.40.2",RESOLUTION="1280x720",VIDEO="chunked" +https://vod.edgecast.hls.ttvnw.net/e5da31ab49_riotgames_15001215120_261543898/chunked/index-muted-HM49I092CC.m3u8 +#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="high",NAME="High",AUTOSELECT=YES,DEFAULT=YES +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1603789,CODECS="avc1.42C01F,mp4a.40.2",RESOLUTION="1280x720",VIDEO="high" +https://vod.edgecast.hls.ttvnw.net/e5da31ab49_riotgames_15001215120_261543898/high/index-muted-HM49I092CC.m3u8 +#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="medium",NAME="Medium",AUTOSELECT=YES,DEFAULT=YES +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=893387,CODECS="avc1.42C01E,mp4a.40.2",RESOLUTION="852x480",VIDEO="medium" +https://vod.edgecast.hls.ttvnw.net/e5da31ab49_riotgames_15001215120_261543898/medium/index-muted-HM49I092CC.m3u8 +#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="low",NAME="Low",AUTOSELECT=YES,DEFAULT=YES +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=628347,CODECS="avc1.42C01E,mp4a.40.2",RESOLUTION="640x360",VIDEO="low" +https://vod.edgecast.hls.ttvnw.net/e5da31ab49_riotgames_15001215120_261543898/low/index-muted-HM49I092CC.m3u8 +#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="mobile",NAME="Mobile",AUTOSELECT=YES,DEFAULT=YES +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=280474,CODECS="avc1.42C00D,mp4a.40.2",RESOLUTION="400x226",VIDEO="mobile" +https://vod.edgecast.hls.ttvnw.net/e5da31ab49_riotgames_15001215120_261543898/mobile/index-muted-HM49I092CC.m3u8 +#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="audio_only",NAME="Audio Only",AUTOSELECT=NO,DEFAULT=NO +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=182725,CODECS="mp4a.40.2",VIDEO="audio_only" +https://vod.edgecast.hls.ttvnw.net/e5da31ab49_riotgames_15001215120_261543898/audio_only/index-muted-HM49I092CC.m3u8 diff --git a/test/testdata/m3u8/vidio.m3u8 b/test/testdata/m3u8/vidio.m3u8 new file mode 100644 index 0000000..89c2444 --- /dev/null +++ b/test/testdata/m3u8/vidio.m3u8 @@ -0,0 +1,10 @@ +#EXTM3U + +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=300000,RESOLUTION=480x270,NAME="270p 3G" +https://cdn1-a.production.vidio.static6.com/uploads/165683/dj_ambred-4383-b300.mp4.m3u8 + +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=600000,RESOLUTION=640x360,NAME="360p SD" +https://cdn1-a.production.vidio.static6.com/uploads/165683/dj_ambred-4383-b600.mp4.m3u8 + +#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1200000,RESOLUTION=1280x720,NAME="720p HD" +https://cdn1-a.production.vidio.static6.com/uploads/165683/dj_ambred-4383-b1200.mp4.m3u8 diff --git a/test/testdata/mpd/float_duration.mpd b/test/testdata/mpd/float_duration.mpd new file mode 100644 index 0000000..8dc1d2d --- /dev/null +++ b/test/testdata/mpd/float_duration.mpd @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/test/testdata/mpd/urls_only.mpd b/test/testdata/mpd/urls_only.mpd new file mode 100644 index 0000000..2b9d595 --- /dev/null +++ b/test/testdata/mpd/urls_only.mpd @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/youtube-dl b/youtube-dl index 3b69288626280e3c15249625c3a0b8972223a9e6..d00c30eba1c9fbb46745744ed936827f4a71d556 100755 GIT binary patch delta 372000 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%0Ay*f4L=#>*eai^Gi6-p2FV%e*^f} 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

jV8^| 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

*+DUMq-Aq5q-UnU$L%p@|Lqk31OyP7g6MY#mTYx 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

?iJ4#8wu*k~oKoR*YK!(gyLfF;n(+z2XI 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 c?^MaIfmHvj+t delta 354578 zcmV(vKoN0dElam>99&X zYGZe*JZZK!iG94e_0je{du#9B_P+gO8)!^guMbVbv@S!SXdVtPx7A<6>_0b-p!U$B zy#oM$9lkOS+by+Ii6PX4ts6K5702l z(W868MlpeHPSBy`3 zD5;Ckmf^|4_Wprk$!({Jkg|=RW2DNq=>_(Gc?!Mp^x*#T4MQ>@AqG&B;^kQauExe> zjg8LKglMtDMq$ZNM!_=2Fp@cfeYn53OLL`;;HOv`0elBmRTMx3?!zVpc1Up~gg5Xx z&0KD~LLf$xe_wfR6UL!7+)_=1bt+?9+Y3h#>>$nc4qH)-g;t#qV(-AD&b)Aa%_t{- zTL`kpfRQv6DMNb(FE6nO(7~qJLir*kiZOyYY%ob7oRC2?C_t97T>uy!aNJKrP>jS^ zFr7ir$VQIm<0MdZbVx$UIdI*$e+wBU^%(f_#DM?>wqIEY6vD2yiVOCGK!C~=DiTU@ z0=;%YFQ|8RYMVb8_XXdW zOMa8+c>_1;BRI@E725<_9hh72&T-FWr9oT`>rvOKrA7gg%`O9U6%@wMaFy9r0XS?B za5s40@pTgB^}ysosh^ zg|X<(Fcy;ayRf4`HYXgmHyoq{9#iirlil1H0usHG_uMNti)9+$d{;3=5Me>KXe=c~ z7g1BAg!lwrW|qF*fsMghhh0|+i;idn9F(a{+ey>J3^BdRWNwp_S=}W99UhZ_-7gIU z9TFwAq=gVYV-Yr7lf2y=7Dl+h4c^$SCW%e@+iusT1{1;gsBGqw?%gINd;YypowBW2 z*QA7J9m?o$7I1(a3O0;F1CM`VOn@&)e@97zlQ`Z*5Awk_&P=a~0r>foVh*8R zST!|K3@i{8d~7NWu}eW$v;|O*KpM2mfJ<6C92?6u>sE`?XaqFz;85`NG>sDS2&S%Dtv?cp`uB74DkaMQU`l5vAv<`4Lb}E>dKsg%)^jlrYkI986vrRMyDl1 ze%ybg!oJBHdEh~J?xDfOIt($P0uRQ((YqOrqeDDJRfB?JuBPD)A;c@lnN6_k!w4q* zm3JAwFzq8R5$U`c5W+7w2@I%uRl39lgjHuQ`$BAh`l1k#rpSnD)^tnm6kilvW(q%S ze}wDA+@`wTL6Yf^b1tDj8p^LSfs6R^7J+|3XpEu~UrJV(2y-aKI$!k~tSFNRgdOxS zG5XIBjn>i9;b2i54paeGBkWHkhbptGq#fjkDJ;1EyHV1s8E=G}8q+P2%K+VQO{-`ucp+gE>y z(9F9VhvIS*0BU=Ux}{gWR{uGOtM#g9V6uA2c-3w%-7Qf89@q)?L8N!VrsL~>W0*s+ zbZ4PN`}nq!(H(2)Ze`Bh!&M0e>_E>_a=VaLTd735wtOU~apMzM<0Q&r(@-NAD$vG< z)~c`|*iKS`Dq$Ke*d2jD8r3bM)oy<}7D3V%{nd@-)uV;Vs3c##QOQC{FlrHyU*w8P zyMfTK0OZ<5uuVNRdCyL77RsA7UA`{rr|7ck7#0f5@;;MI429K4&9r}4>kxfn z-e7d{Eg_VN;4(xgO@lDyEkHS)%5jQ!%0rwk-7}PP4<(;;OfNF`7z`ryxXt}iyiTt* zilP>KztLUahgOJMAb8&{q`R==-{cBTrP!|0|SXziv0vmcPk2EX?Z+!dGl7w5NuuIQI1wH zp1NiBSP_iK^s&P(Kl44<5u6HkdyufMTog21k6xBa*_g&*hziJzb`=DCfyf5nDb2fC z8~n*__&-SCPxmf*7x<5zsB0N-&gzRDyYN3&-LM?@pWiuJx-)+R!zH#4Jc=bI48&&O zHEx3&qt1=4PvndwxW2huMNo4WQ(-c31w|B_+8`?Kb2|ceW9l=!4&F}>Z9EF8I*SQ9 z2W+9mH6{~TcA@i1-y0vN{zM)E$Pi|9jk)?7tX;kUF1GF2W zDm2gf_(0uDr06eo@J9+m!lM>6{cZrj)LeJc;*6Do$1H}CO?j-UeZe_%K z!O=NxqV;U?glD;Ny7NU(fe2RpDnXpONjlXkt1ZD()B=AKv5IsUWvN93L?#4Gk+Amc z_jh(TpFFFl`;@*_dkyFkG+6{kQ2wE8L?1-W5Ij-5TW!+wEk}^d!!uIkdh=*qgI9I9 zX-5kF*O4nLYVPdGA1>&_o;L1#c#_oQ0A-7QFhaMf>C4*2t9SdIW~?USj+jw#17K);*8+S85~??dpU*8M`MRVkb;xmnVy^-=~6fA-^|i%C)wzcJli zIx*S6p4{JJYd6-`ifiQvsbf9zY4Q>UlNcZ%D^`D_u7HUYSs|>H3%ghSsgXtg70;OM z^kqSec8q1GnR)T*KvkT<3ASj2grH{Qi+)W5uNh^6F)eS5>dc`hY)=(RcI~Uaq6~yZ zghtZUQqORQ3yTA0Dzgiv0hiWqRK1;w@g0XHE$@32p&qzAs8-2|=nNAP#eETpW*`k4?<2B_9DPLZXzx9 zUqMu6gnj}6Q17ePZf9l@s{noMbyUSlXwY8YH5i?x59QG8HUnc&tHE=!wd*s-P~o*) z!Bwm+V-9>{Mr41BFnt=&#vDBM@@!0Oc@}>rV3%=t*nPEh`_4Rk#sw@l3ncHncW9XH z{?TWz-@WzY&pVfhci3uqg3dk7=Be)&8ldF$o%yV;U{F=qMaQQPXwzD*M`^%CHG1r? zEZ?O3$AL044l}kt1!Zr$^Cyw zEv3p;lViO3Vc52zZj;x}Z)$_ckCGhdBk5U~2P(tO8VK$If*>lLVC#OAaBm#40rH-_ z)H2%+$G#_y!Qz0~fk@ZqtqTNJj8>*%mThA?=~AVwzqWDIKskkDE((|tyQ~r6`8B~F z&Ec9#4|M3rjXWg!ow5+JKHh)BV}@lJ zN77tYHkKRx?(I7pt;1J`hj$N`j$ZW-g?0398{sd(p8`**PPm({p)Uyi@AlrUyKNk4 z6n*bs!AT}fDUoGKb{yN?PR6kv#}nVim!#9SN1Ku;iEWBhNXnOVvfs|b`6XxV_wx_F zKX&Q@fB*?9PNw%>d#`mo(~${;YoSmm6i|h#lj`UkD$;ih9K(mHmhTuB$Otrl-}v9~ zN#y!})7~cn2jxzqU0Vt&@pj2TxK{SbAlni~JdrQ0hwppY4;K>RlL{^bvGF>*4$9#bmU! zcn@-h_VkYA^h66-Sy4n8&2qm!8Hyc>xGP9omi zXw9eES;FbGS}mfi*;KSp+x9bbW0P;}R|l`N^LN_lo0HA#Z3jG3@dYEgGm}B>K>}|m zlZ5T$3a^3PX9?ruu5c5Ra_%Vt^n#O}?nMHbmXqY}y8#=MpzjtA`%`4)B%G9~Ua3)Z z|JIYl@5BLFlZo&%0&+5wzVH?ccahEWlYLoh@+SgayOSyMOaj+fvv=}-0RlLQllSwv1N8Lole6?@4*G;z(<_(1{ztFz7cNC6UpwMoIQXlt|uKxOo#krok$NRub}k^*Rele_vL6>zLJ1DI_J z7vh37Kc}GUA2Rl*FnyEo`uGA2%9HB*a0w18>(Egm7GY(RWBig_QLM$6TIte;4@p|> zCi}HeSJTMkMSyKh8AQzp$yEg|Z&Ji@KA?~abbia$$lmpbb+Y`>P89gd-UH!Z-pmDR z8UH;Pb|a)a^eS7^FA{|*Zpp`k=6^;@_*RJdvr+vuDu2T5glgl5?(GfmJxi#=$rKneU<7wpHc;IVYu$UXF0Bf5*#Vv6o z7eJ5)lcJgP(I>Y7YCa&@KwesQ*QC{?AJtT2HP^f8w(fVnfqwe()8j!6va~NgeepRKpQXdI0Nbko+nWn^@pjdSXXt*|JUQGu++BChqw6TX zjl>Y2q^Ku+qP5u2!VMZ;gap#$y?PNyDWMvqLN|OJt9WiXcXJQ0R0V~WOL($`XDRX3 zoPWa#XxiTmjf;LoY-f6J9=r^V_3@Y4S#j97t=hUQ4&GMotFc{u&CQfJI#5@=%ge}g z&4{@RJdw>L*i1`gDti~m7IFIqtT5n=noU2QyPxW77FLBzR}ewH{usBeUoO+9^4aso zBf5?hzh1)O9gf6!W78iPcT$Dh3RKGB;D3@y5YdzH{BBmZg_5vP&g755i_5RteSxV* zGbAz#GAMeqIuZ$e1YTWsXGtLRgxH3z(2x=`X_%j+zu-m7%5p>avR9?~24-cs*;`rG z6x}6jN+ro$M;APr0aEx`u{24@-wF3PUQg~8G#KX1DSx>X zx6Z?u4}R$DvbY$G$E*f$m7*;_cZPNawjJ-r3qpGFOea)y%UEznmc#X{*-3tA#htuH z??1Y_pEX3tHZ2>}^3y?p1C_|PJE`;b>|h_QYyCS9$d8mn_#7UaVpYEu=HvCz0iNvh zD1Eh_X?xj_FDmO2YPzf^WOC&B|$e?Rfk;MmenUix$Rd(J9M}HPlA!GEG zFI<$yRixU2O|6?`lWEy?tHbF6WtM7_NouQw$<>wMOGRIhuAfRxo~`Un#bFN>0d%ym z^pD9o0J1b59Lj|;)tJ|Bnz}dB{@9=R%6L1%%M^CG!K}WUUK_m-Wq@_#mNnuZ-pX|a7+fwpWz_z zltYuKr8@DXS2}ea<31sy8LibxNbjjI;1BFT*y2Q3L^CiKq?N$zC#ex{*aeZ28`Zjc zB5o34Xbc{FA!iV5ODRnr$vPX|xbZm%rv^5ufm%^pM+e87Cwr$yhkxCp~Nc6Dv6P_D*Pj1)s*WdLj4AQIu=UZMuJ;KHit z91Cj&Q3kXqokgKuBDfA*@bC6!uL_5a3j)p7Lj4gE7b%~4<=%JFsL}wHYX<$y^K?YJb>jhcA?m!U@{q#x02ie_wuSaWVgDK+^AZ=QcmSkz zia&^7BtaTSJdB|D$k~(r=P@1+i;f_SqBW1!k92Zl_F8NS`qeI$MYlo?GD zCaP$%TPlHn?vbE$=SfPB)b&835~I9b{SDWZ0f#Aj<&&alx{6+LGbz!fo+zYLKX(uLQZOJV0VCi--1-xY!sswRN3b&yvADV+ z{3{Kp;pkg}!KsTpqdb^`vmn>pzcn;T%iXDsU1&HHCztcX&6AH+!V!oi;u`s8-E=Cg zOE2Y8d4Gu?6=GOW5mHN)MDx&1yfDVUaQ`l}{1J{&C=5fNwj4GHHIK`gCsJe zz%DXVbpD-7%y=$&!wvB>2aHRa+_SzD_DnQfS4z?JKFYkirg;NY+dw;BKNYv2gysqJtYgSi^X15D3|1oioL^#bTYsVmIY!8f>)tg)IV?~-jLR9f;>%W8 z8<^o5q0I2fXG@nXNyk|3U>Y}PZyDQh-~b7>$n zG*lW&Weq!~+w0-ow2R6!ID}7=n)+s%WvJxh`C3Lz>iuD{s-;@-aG3hp%gX_tFfN<$ z34f=FluT^%&eW2GhDt|x;W8DnWW#YjV^65f|t7N0ut!}Xf>i0?b<^= z`uPXFv3FFqv#Gsu67Q7cjVY4t_M6|1^9zoDNROkNDu7P8N*)*X^yDnBD*OtF;WrgGJQhw+pJ7ihuGe zi%{je%C}pk@>k|vY~>&xr`df7XnN3K^g6z!GqIjd&ySCfPR@3=yQgO#_xBEWjhkz? zABS;b==Nc<-guKByf3Dnf<#zKD|AkYAN*i6Hq9pdyKEaMliefpTwe)0k2_L^MtxSw zlbMGX*6z?hL>D)>E;`f5s zbj|r7dyhIhJJ>(o2{G7vc8p9pF?~SNX!(t*77>jB;$6ql^ROHci$uS}ihj&~icI)}Wm>m0|gRCO zQNg@(ertpTTtE($-pI}4t7?!ggga1N_o02@q5b>25bXY;oeV+d`TkDCroeBjDYX}e zgKu|4Qr!t=!Q4m)o=Oj0!+`OVi*CGC0ZgzYo&jhkqdr9tLS)N7cZc zq5cXsvu{yN0pi&YLp-a17&XRm(FwsE2(U0RFQzn9=v3CM28J53!(%W7`|cyawlR_F zVHoAqMo__r9sruLm)OhOT9+s=Qp?qaQ`{;9mNM$5utAX+rKn*SG33Se!^8}m$WR62 zG@jP%JE$na?;6mY+kdwWrD6j&$#C&W`Vu*tsAb#q$}m@LJ@a}jOdk)CSKrA{N$3OXWL{=|Ewo+FL5uRD2{4FN_fvAaZ(l>0vZay(KG!18&u^g+}s9#6zeyKKFp%Mi7XaIkpy4qmQFOlD1Q(G(*=&wIn#7!5Yg-3 zf}D^ai#PJ`>J9)8Dc2H(kej34d23f81(9GaQ7J%* zT|oABC5Mq-6yUhhJ(KBZ{*Hr!c1Xx^^?)kF{wqpvi) zo>ZE@!Zk9s($vr2R7D>OdPDxM7NCM&e=tiPTouX|u&9mTVbdgoI|-<*ru)#1O+#y0 z)Y{-RNPnJT3#uG$uu?dEGPsPMq|U;^OETKW|JZcjR9ezR79!HvZkld~0WOr* z_IpHny>41ixt@y zIo4%)&6G_mFWr1vd%RN38CD$hYW?C$1D^w#K7U{gAnF3EXMNv>^q`>mDcVrp6jC26 zWO1VV1A5rlD-ETEU{DUCBVePDsm}_8-!O zj(P#Ov3Ce#EBVBuQJRie$cr`N7Af5+{^685@b@!~>9EB!4EHXjUi9fM-5M^llg=v*bM`-kT*qQ=+LE z>CxDGo-xcG4YTJPiisY*m+j5W#4#lX#)x_WC#FW?ggY`o>P6g9WF*Fv7#r_6dxQ{> ztBk~yOBx;ZX+(X`(CYMQME$W*y+7te19g4syQvhJO={ zccOioqrN#u0|I{F83-8=@B`myb3kpPD5)pX6c0YfdZJI&{aXWgpEOc_Xw0Th)8R)3 zDf)yEe`>Z#V^60B>U?_l>ZboEeN1B?CuT<(cVx`bnBW}G%r*&2<9h=kSF~ps@!7vwwQZueJ?Z z3TW&>X2MBh53UW&|3M@AV`?De51P0?JOiKCRPx%y=QWM!IyS0b(}=DE1NdvAyq+lI&jNZeD6OFNlF?VE8NSJX+v-cTy zWUM&$h7g+bK4I?>CKH&@hBEPt-Ecy1P7;HXCp5*AYh!f?2L|R8Pa^g)V2o&za7hE7 z6Pmb5YS7XoV>pdrPG~wN_eRNxrXwL}QP729}~52Hu#Xh=v)N!;I;Tb=)_mBc^2-|6wN5;))Z4 zz~Y1x&60%qI5n2cl<+wa41ZBEU7bDD8U10kP?Xg|%2=|~9p zBsNGfAtWazpHE^gX@4fpxTMj0a?7jOD4EhQQ*)RpAvsNqDNc!OQgcU0iEPq|0em{* zHjTxV66(@I@3fB6&|s=*$cY9qq!aGQAh0xIkPHe*2_dP;*3wUu_{o^KG~r>IPFYwq zN^gzCjN3GpVM<6&&FM&ql2cP!OK&;RfHNb^XQo7*5k50hbbrqXpV`R3Qbx=wGo{~* zker!}IwK@!GqXB7j~SUA5k9lj7*R&}%uE8y5^mG%DCO$L9A)fH#oQ(`LP&ONOh
    i+1S%315=ICy0AmpApx(^IE@2UE|$r(OVN1x3p{ygSHqs`Amil3G2Ev&`< zL5Fe~I;XTkhj4WW#DD()IsizAudPEzIwWkLT+ueD zL;6b3VGWo|VJz@37;05EILcY28;HCk{f1;DQ-p}d#khp}61?o;Kk z2Xzes+<*R^Ge&-5W^A5P2KjyTBIneb#Ag0B<%2kpmOYgbF1iA1~X@tOL%P_=SOQe&CE*&rCk2|1L5L=DDx`$>~u6tOHI?CI#fbCbYaB&k7{@ zn&{wl90oUm*Km%*SpsuIPf$YV6t)oGiHAmoe{qG#3ozFDX%J=34qzMV%-B-m)H5gR z^?xSUNMUZNz*|50?2qD`0uj9az~wU7vIQ56lL)4u3?BpTwphu(ioKk!Q~F)_YE$`p$blG0z(B zK62ju1V(RRJzE6+7A#FzQO@R&`N@eto%PT>PAhpvl)p9hj5*la=hVVQ#nz!nHYarJ zH%?A~MZ$`+%<0w^m5BRs>eSx(KH6{Bt$-hK!7!fmOa#7T1jds%F<0T%E@uGqGk=n| zRdRzKJ8%1wxQ|MKzCwg}2W?b)$JOF%D|jcI3k$?KDR9j#B8sj5`hQ`O4KCfin>aA9 zOW$(kBnBAFn#BLM3S4pP1E(h5fBiq^$$g7w|9)CvJ6ptEwm$p)v30JuX>8km1m|W$ zl-(xwv;9ZVi)WcZ(A$Ld?HK*+n193FKGJjS#I-}yzSExp=QQN99h$S9(f!mAYEOye zcYsxS;Z3p5F0rbePczhm1whujvmo*fn05%mJHQK)LIyG9ofKqn6ZJd9NO!Vv5KqmV zH-xM=UU;qV?@sLiKm+qg-tE}X=^jcnc!e%}P<@%qgkr$)uq@`i@-CVxTAk%56X zobE?3!7%y)Up>~dkK^z@@>6q6XL^ZKnCr2hwo8c_O8dpbILnv>z!Y? z2Yg5C>|KxqJq`tSpq_yezRiUJ4k zM6y4?t&Js}H!&Q&66fP=6vKkJshWv{U9LOuMqb)CIqks*&I>*BhUws=OusLz!-MxC zXAs<&8_B`G$T3?w6RD;)>fkLWC+XM=LmT5d_?IXF$IhT|>3eX(d2sB>ir76k&+`IP zaQY}3kAl1;?iafHoije;24BQ3j~e!* zg5u?nS~~>ZTM!BkPdEckN=7m&jFVv;UR%yT2gf3xC9VTJ zZo;|JLfwZ)qU5b-F#aRL{n5l^jK{S6kG<>C<<#*9&IwJq;`me~`zb6RJn>sD1&%kl zPz2kRk$=9+>C>6#Ag0Sw&GAPrL1;GMKPEgM`z9eA(`rA4b0&FLF!{zYQT=g{^}WC} zD>x=X0TH)==HoL?PqNv_B&}m2#N!!S*y72}p!t8%c>m=Uq|Flo`Q*R;$1DoWz2bx> z=_H;MdCUn>$H^>B@p3}&gkoiynUh;I+S1cs(|@2&J-mW>4cu+~U;iWYCk7Hv-{wW$ z`sil2;cTXT*k#a65GB5|gebuoc+S==GVi_L9p<&)1(|pWbLiigc1rtOd9nRjzrb(a zcBGVS}l(ytjL#HR4j2EY-QudTi@uxRl*u!%c z0{%}Tw0lzzc1l~(=`CJh78um&4rgH;5kf&i=_o{|L(a#@X+j7k&0fo;;7xp?j6Uaz=2UjlI%H&xo|o zf=Qe#fKY9URcA!mXR&!>clM4`ul>TNb#}xVun>%7TF=1oqF~_he4NESuh1y1*E3+@ z#k-Ib&PcA!6V};*Oh@%a2|Zgfmw&nE7M$ne)JCmm@3|yeDeLLyH1_jRk^P_3$~nJA z)r5hpO`;hw4>bKdlK@3c^S0)-R_Yz_jDe}XKR?y-SwuCm4@%jj%HbSkM3YB zV>~CyJWpoD-Ts`Y==^ifFH_ii+9Th4(ag&X%)F<8z6aL&88!%@J?0#nX77t*1`v* z^#pZyM;hKoeBNYmOv3!{rTetsX+8fQOnP2V*+P6h@H!?M+YG zEJ@Z|w%1^CkvJ{X#Zuww^QH~_Ek!+@B|&_~%(EgB*EFn+rA`Tbtm4JVX}_@6XUc)f zowki9u`YONC4XP^#@w?a7Z<&K?pc%CX|);k<@|F+JFOL4_wOZmYb_gfu=cbKnX7ib zz)Do$xb3x7Tl+*ESXb^A26kAf^?b?3HCUTU6T56%_pF9peSsXSJn-!Uxu%h>cq1_| z%ZgW;xD^{_*t!UMUR$v=&nnsW>PmCPHf&au0@e_7mVfMB$u4MzEv*Swz#`Ej#nZHy z!1FO}b+u`&eWsYz>Z%3lJ46#WZp(ULZ7S>`h#5;ZPs;Lg&JB#^$~U^iY!I`SJ&<+0 z0NAQ^J+ac3u?Cq&9;;H95jGprS$6L{w-FQTFJB%SVs%HU#Df85!TfLLfUP$L7MgVCDH_sG;;-y0diZlZJ?|?#g&9| znTYnQf@5G8m^MAEF$@0rcmFGW$oU$WK|`o`0_1@o+X#iefDB3Xq>6Z7J^W#p{#c)@31LQa8|9PFxdTxZ4Bz<*oC zs*oL(c@Zn|UjTqM>EK{LKPDac ziaiiJED#PZd|J~cX&p$yYs(f2;EUUbRTSlg+|J^g{`q&LI;tv zY{%Y*Ttu*K@oWRoUe$IQbM`(ej(=m_Vp*fkB7kjv50!AZYFj(3_ip1ssb#x9VFk97 zFf93Rfmoe{Xy~*8oEUWI94LDI;t6nWpzFBbL+(f ztL@u>myV5}vF;wFPU}@BtABBEH|SV9XAOVVT0c>|1Y0P>cDkwdN!w~*y({6ydKzP0 zGHnG`R>Uez%wMxX$J)mitLms@ER|ESjdj!(Zw&l&Pfh!pHUFJx+?N3J!q`iWYrIP;cWkd@2opx7$!(toFC>M)8I?Y8N8 zuMUgWD?!%U#S>RY@$w+i*F#KluCELqD2#unrqV52W==MlE)0hs7W zQ)ct;)&99^2%V~sCL?H!qK z)c>G#X3I8)^-=6XkZC*ZvBfDV5AZx!KF9tpr9vC*zpJ}>>%_6@7qFgagft+~J zAf9xC>CLiLgG@?Ubo8gId|4A~(fZ0-!cikt{&uV zPhHBPcz;@-njD#$9TB=8vq88ZU|671uCc)K%9TMlwYIsakvs51z1Is{k6I*~U?|($ zaEw{0T;NDchp}^P^eh8WW-1nVQw0U57G+rQW*FZhS7AcKMV2C^(U;}?o2R}$FVY_l z4i;0F2PiN~MaAgEyqG?gA3J%(S~n%X0*gf6YJV*_gV?!EJPr+qmNU!&INBez|4o+n zaDvn5sj#@L#03oFvGY0xK*-%f7I!H^7@058H%!7T$3xTHfj33tFLDEMe7}|4PqVmz zPQ?3T3^V)~ItYC)^(nX~OeNc6ZO0QYh<>t${2c(-{=7K7?^9cgz{`7!6A$g97GaEw z+<(O)+5|0f(BkIw{_+0O>I?SeX+T{AZpcs|qoYx_Y6WaY znRsSQ&1oGlk@Nxz4~f-Mpcrg~Lp8%*Gk?m)913~@{5P1=Lo{wh0@9Rd_=)M&8zLZ+ z8O&KmCjKLQ5`=Apqd0;7CeEz~RO`d48sLz7KEsLABHUr18`PeN1Qdy|xe+f6b}1h@ zFP&DtzS7bj%v;;bJy=zd^Rtuhr5K$rUlG`Ngxl*DVoiDbYuw%gmDq9U&(10z!C!_z=TeGA_gMQro)rbr?}jJdVJ65Ok!Am{%{!d z13$_Dj@xF^%$ka19>a7kKpTXQo_~-3Qa!I1-@xYAn`KTKjK<9-69c;1R&)vzMI_4D zg6%e67{<_Qd6flAVGK_wMz3a2I%pA|cMXnGOY;R<$RN_k6^TC!>rr1Ev>f#XD%Rr} zA`t#x^V1Yvk9c8tUnd$4A_^vgtIcEzb#s+?{l1zwvB);Wm?Z*5@)KuS^M6u*mn9fa zqPEN^5(Vlu5&?8^ah=@tzVOR4E@LC^RznnOKnFPp40#Pde*G0z4K63U^h;|GDKdZ} z%U4R`m4RdXG9qa_9(Xr?H%Yy&9}%Ojp{E>j;S59;WguO}gIPF}Gb+PB?qM8TisN$h zb{ic6r_RagX3l4tMR&#A6Mx5oPrXIKU8Ctti!p#*uhYLc{{o;!IkKfTDFrCk*@Lr> zY>?l093nv&prIpfkbQPnP%{F<)?`V(<#IEf3(@T9Wg{15q{oDUsnUbHlB<-@)6}00;x3=oFb+)N+y<+*^L&|uEq9HbiebqCTyT~O z9@??)6$Z61`gjHzn9Ah$69;v|b9T4qVHAKG$W5@vVt}V!=Ek9p*vAX8<`q0W~9Q<(|PC#(~l%(10=JxLX^XBWV?SGv&yKndY`ELK<@aXto zC#PrU??3$Z@po5Zn8FfcPkNA{9>vng`@2|=uJY(MJQp=8R-ZQ&I3VZA0LZ%U`-4<8 zEcq;l*^L@nV|6Wt&Wt?6xAfx_p_NJ^?~}OBV;l-mW;QV@K|a^PCZ9MFA|H}-kp+9A ze-{^>NS{G0C4XY~Qv3!Ig8V@jzo#|rDkTq^EaIdeZ*INY+3s!~ZSS0RPj!b)1SwG=xsUXW%O*QazDM-#IyNM|_hPE?-=| zKv&MS45i8_q=s@NavuvDPCLIiB3kXr-c1S?W66Omc7J%GSHH@EybuYn*z^)VnUm5? zXTAKil(?6@+U4!D`ehIHM{&VGk*Ccrwb;?E`c-~CQJ9aq5!QRMG+XU*43rs)9Y$zZ zj7FZvu|p0~yY}IvcH@P0j)bNnF(obr@`l`(7n=*ew-(kGuAbF5FbxX7e01^eM_11t zeSwb#q<`05tv9~>z3y5f$-=^b3QY<*n<59VxsQtHVh%b4|6a6l-^uF&xEBDz73btb0I-g~=!;ue|e z-hYwcsE0Ai)Eqbrn#3seep5vri!%9yroHaCFJA)%b@0nu__B;&_FSe_7Ad>(n7kpE z&E2|P_7p8&Ag8{A#pB%76$kE*XVJAD7nxZI4=f*ul9bK9YXSl5%Ua|og(U*iDgd>=r?QA5Co3~()h%$o-i)OWx_?={hLi5r0AfI$zsXjiKNZ~ZPh*|BI0koJ z8<2Tt>TxX%OOZ{v$3V~o`5vkh5Vhh9i7SfX;VoJX{| z!Kr^EfoY=kLjFTtb)SpGj*ruT_Y0c9V~Lj}-hJ(J81$NXks5YYSAofsV1V?;NPOxn zu`n6j`JuiP=vp2G;V$Js6L%V~M)d@wfJnm4sf>G(0pds@M}}9VelG5>F7B>!eBbBd zDNmcO=K&Uc93yD=0Bx;}hgfPlUv$7q;DCQ67gh;37orJ$G0hSRo0r75g|O%hpd@>( zoEBgcLB7jD7T^@)hlO!sg$73;2ldRkGh>`%#+?|em?|h^6bb!d=IEC}_&1wUl1YO@ zfbu2qQ6p7rLYrUi7Y_o(ChpDaHKRjI19EPP%@}h8;@CQIomsEcutZ#qzdR#g>*9aj z&L~YWjSKB|sNM7Fx0{_!AKd5?HM)7@C*G(Wo3Ye#tw#9eEeD!Rw{9Ddc z*_GA0-MaH@p-5F1mPpnx&qsgTN9!1EFC;Yqh#gz|do;0WsWeL}zimR}Af?=(uMH4Y zSZ=Y>v|B)RfC`_Cg65I70Dj|bR~!zSjy-O>o1@eb<4K(-DIP*d>mcNID3z#53$R3G zgKyAv0_rcsaAWj@CFnVjSIKm(nwEoXK4c~vPI-0)xyzBeZ%-M-iovJo zYj=_stBQ+%KWg3vaMFMA2Z2XtWBj#{3m2O!O(_1+H8|`Ix zGd8quFT*CW{aRt_zi;}#p9EANrG0M(Sn2|Y?*f4i1yT3MJ{*77{5!utqwBAlD>L1O zbKx#5h!y2t)$MKFRW@{&w=#CG%0g-x9Ke9t?s{43;K-jF{MqD-nwm?YF5R*aW9!B~ zTRG&oFDN8f%f{1;PH*l)Rp z;H%d+0lJQxU{rrn*;Ru=q}Q*UXH|?>)ZG-Dd@W`@M~rI`A^CPy)h)9`?$9DrT9+RF zp|G3IdebECgM`#PE?dGB#@qnmc>p`vhF)v$c!$zqsaVs4sF++Psqb66`1fP$SN`!Z zB-qHiQ23e5(DgcS7i$GB$X^O;1V}aUr=i#P?aO7_WO;v<#Jaz2R2^6<$E4SnKo=(3 zE|EWWjv|yN?;3QP=zEcykqj)ieT>`8tFnQdg12Ma5Yl_t2tqFd8l4zd;2?#}?uyso zmJvNn)WW|F5;{7*!j^m)f%U*Ps4BP)h>@3IG5A001Be zAt=T|-vF0FT>*O?F)lDRCkjwY0|XQR000O8AP6BSsh5|bg=PQ%3%A-`0emoj){6cx z+!7Sg-PLkAYX{W^?AoNttw7CdS4DH}xcmM1TO`uOkM+?$v zqrF&9rw~7a9mGvORmpwf6Qd{3y&`#4`}PJh9=$#XnV9r?syMN1%L5HD)E)GUlV+b) zob|yYt*g1N!!aCP0+J#bRjXuw4URgfI4J+Mu9}hy)rjVj1?C?Sf+w2~%4;Z2^S47D zqi{s_e&&^XQR@TCS@*zThu4>yv+jY}T)Inwd-?%)M%`48PPjo;dGOuXs&r7UglO+B zcfO)~xyNp&d`0)d&#G#_*rIauHZTS@o7d+TcqnnKAifA<3T@wUPs7v}lK)wblejro| z7!}Rk9;J7^#~kw@6^sXHTcwe<<(h1zJ+h%j4R+Xz726UjZaWaqCSuG7b}S$9BC+7g zHrdo7FIMPh*-BqH(pOV|+Dwlp87|?UvCu7PTHUPctcmSp-ZdgiI1Nuv9rk1&%FwX# z$1pV?z^7tt?x;S1xxo_}!$tKE%{FT&R8mB^izb3?t=>R3YMd)0TS;S=Jll4O`7$*H zK-4BmS^8peRm`f1x=?|IsMfQ!Hl3sq>uQEV2UrhDJ9!;743jl~)#cbWCb7(_mDwvL zS3{G0^t@BHpJQ+ukQu_HOP+$5ST1;Pj*m{BynS-!_bY$xR6h4BJ8#Q>d2fI1yk4*wiq&f|jW^``4s5Fu0=Wuy@UH#b0Slo| z1nGZ`F#>+3P)k35uSU(!h4}vp{*Mn1-~YJ%`&sqP@K2*NQQd9x zGZ!x@+D85?O(VeqQVhFn$3U522iD124zNU=CFmmm1w~|ZG6=vcooNp6%K#5I6cUVlY#0cibwbb~#iI2;kJZ(k^v(D z2bX1%0W^QcAY3gQ+ccuESGrrAO*`hvw`;m)CXA!y$XWQ5iQr(!*+mSEljUs5MiX~(>J za0gPi9VX#OA4-ns)vyj4&N)NOQE4TfwAO^x1I!|WLC~akfxsFhoxz)be+8%r%Zw61 zGbn#X4mse|1`sc7@ox3gKK*(0{=ZCADeQvPUx8Bb-{;h;;ru+D;3;JZ+Yb-GY$tH&xbmt@$w}E(d=xB0aXQMN?qzEAV#oZ`kFYP=m}9-Y239 z<@H|Qt- z1!Jd91ZIOKCY4wZ^ZJVvO?^_(^FZc7`E~!xo8M!wMj6+XOdglKlmR4v4Kyp-Rjwvp ze!D*c32Y3v@`4TX!zZJr7+;pFR;R1D5a^mw;#r41@GIz}=If&e1kcBD67|G< z?lwagSQ5A{7<#=oU%!9#r=yd;jmAhmA}M%ng)w(r^kGwBX)6nVyNi-J zWVr}^VQJW1wuhIEl>r-ng(82WsFL1~crFX#dcdP34@O>)d6l(b$)paXa0rEayj^@>F0pKdYOt*)0oFKai`z~%`<-CSP zUXz35-cNh)@0pP4qrW8;I zh!{$CfKv}0`XWKjJT&WWIt7W>C_b;~1^HBbo;4`o8k?qTz!L%Auz%jDKgq-me(4#k ztMO&2?nAUQ1kGe8w{$CR;E6P^Zj~;@w|A=MF;CJ3gLZQ(LN>ZCW}Hx z+L8iHHTJmS5Fknzw|~1I1%x{pZEt2Kcpp#Qc7Tk|;?Or4jT;R^D8>U`(Np{)`L+n& z^4@3?X4vs;|^DQl||Z7B`{ zc+;bnU1+hd95#E zm-?jfq{N=UX1m2>>XBGBF~%RqJ{uEAmLI`(0n_P8gW>kUO(0oghOs+Ay0;7d$CnwJ z0UUqOcv2%hK(t3sHZ0ylCaF>dn6mrPvUi!IP7J1hS_-jOZ3#OR2p;}4axzfd>?gMn z-x@|wW_h;>;MyAez3z!Jvtg~C51S22cLsiZtQnztJfut3*~NUq3@5-Ca@iiiGpXr2 zxvmXs$ij)7gXQ_Y!`l$N;DtnF^aSaFGuD3&mp<9_0i=$3ApP`N+Ein`qiZcoy9!p9 zuc6_e+x9Jw`?Y^y4=K5Om!l#@ z$Q7@;s>;nGQd?~$T>wT+w6=KFRTV;ZV4k(S0h8bu7{6E-$bub?&vm;1gu~IbHw=FV z*wKN-%(nHS?Y_6ba4>Zi)2a4Dbzkq(C{pX9A|F~ECZ=wdlQkEtH9ndQ;+PI5Wm#iD zQ`E8gBjn0-=+sGAlrkQ4(hrP6_ncfmrbihF|#_%B2N68!wAs0 z+aD39vrTk1t%d4!#9Bx~wv?`(R4#uZ^|_+)7~U*NV0HE~$i;%e5-iXH+^eeP;7_-! zvVHMJ$p#=>3@CX*mabRR-QU^nLxJxoU1O@TF*e#V{D8VE(;qVG!vGTGfT5i2{3ZQL z_5Ipg_`o=rau8Nq?7Rh~<44c0;(XMiG3NaWE6z7XaUu0yC(g_1YFQJ)fKEe_Rt{?xyrJD*C@4C;d2pD7 z`gb{A1nmxZLBgsUGZ*kMu+V>s;Kk|2E_6c|!OQ;1HuwK9Z<$L}5~tQeP#$uz>p8DE zJ66HCn2qxbvA6_}@}1|bF*THYY&B73RUB(w0s?l(cVQ+_2%4_O@{HZ=PCP-F* zjYt$Q8%!7lOO)Z(t?0YoHzxX(s2t>0Y}6PH9VqO@>7Z_`G#r!sgibgH-9au6xd;I6 zk41xFUFe&f(X4I)I<6bcHzy0Ixnc6SI9Vb#dVXq3ZCfGu1e4;2LN{41Tv8B+4>kLd zeAFt0h@HvF>^S$T$vqyi<5H+wbE_qTiMXpn<-Y!?_7FyQlNy{A(shb4=$Fu)0T+K2 ztLzrVz}jh(U5u$u>1VA5`k-@a&NMa~+SOxk)H=6}j6IB%GRpX1{}lM# zLH7?$Ons-UzozwIG5Z4y!5GiT&YDbA(S6!uU;J#@{QxDn90a->(kHKXa3ZoR5iitf zvE+bwoMDKx?3+9`(tSdJN zt3fxzEn>OK_#9g<3*Qaoyr z07UnU&=Q9HbGSyJm8X!U);eUQ1g}gip}5@n!j-?>DvhsDZgnyfs9t$_PhyKQ3e{AA z>rhD+F7KUGEiiw+oD(!DQb&Uz`;rwN&0$ca7UCqIQ zXkNQ3%-<${pj6NaB~Arp>h5y7i^(Sv4MJt`&dS00Kpe%-i&X_4`U}V=v`Bss+raYL zi^24}YQW(^whSBXE+wSoSy zUX39KknXR2?lE}a7MXQEvJeY%VtpToy?hFAvUKO~JM$esi;L8EWhPWmKY1f$j_GW9 zt-hY(2Zm$R;@D#*{C@Iey;>%i=Nv|hX9N&wl|)YLT<-qT1vD8)B-N3H_)>XTl1QBCGs@`ekC@6#yh*ZwD0Q9YrpP6c$-0#k+7TH7# ziR8fe+hAPO)vB0*CbQSK=^*Ti9r2@Gj|f*Gd((ffT=u4a4(0B=uiv87txBqNYpmU| zE+%zScFnjOs$0j}TRU#S-8zvSlrI&%$7eeN_c$ANIJQI5l1ChQ1m(@EMG2Qcu^tV? zVl11iw|QqY6UoPOg1w*+t5g6N0=pn2j49K_`LXwUQ`PV@kMH+=l44rv^{vJe^K)ba z?`VHZzk(&p&@MdQxz>VV?$Ax$Ge2InX+5?P`d#76#j(+|S?3R>U=r8p10dL7H8w^W zDzE6M)Y>O2wQtCe)KyM|D$(kwDO2eo4;)G^MjdC&U+l_UP&Z`G5TT8kDQ}@lUoQo5 z>sY%#UitKTDb1l&6I0msf9Bb!^BrOJM=|vXc>9zj2og ztR7%0Gh(v0eHa1FBIoCHS1ClYWM0U*u;#4+KR+m7Wgl&pqjkFyVwt&&GPGo0Upjvi zY+Dxk^+>usOn!Rrt+eq)3Fh|@nh7#y+rf}&wOyD+p^dU~44w#biX%r#c@YOs`3zZK}nDHI2W21A{V_+E*b0hL>MQ!C?#U#E7pxjSRW&dm}LrzQ~ zlwmf~riG|k6FWk!y5TBsY9Uj$z6XC?ymyTdhu5R5Nr&&+{=*0FhVRa@-Wf=HdD`dd zaHxeI9&&{P#jGwaPh2)x#t_;{;ZM~)V}q`71zlfmXLET4+2q@GLkZ#?QeQ8sf2}R# zyE3x+wVxF8QFXpvu3K$C?hS|+{2<6pxyXXrz2xhJ$@AE;ph6H`R=WPo3(a>xvjHy#o&4{^_u zC5>W7(Fk7;x^b8$*-v}#d%8DXt58NP4;~5hmRF7iE&54CpD0O5km{`wkHO}pH1_jo zE$$r@nMv6oop%f45gB~D?y7$X$yP^`Ofa(PdS)%HKSuN<5u=+-lJDNWJx=6Rxe#}kv~R*pG>c*e13iZ`2n0&S_=XtPP^De>;Qa`> zX~^i!Wohf#OxY>OZ0ts=WwKlQ<*gjo(GAhD7trFqYpmeI?O9AzhIW6fo9YU*8yA8V zm6v5%Q^3ac)cA(NA&b3_?>J^b;%`e}=2KAFJpJvPXK#|Hkf=gT0x0RBALmPPx(AWb zk+UWL8t$E`B^kYW!81Wyu22NhV!P7MpmGxKzN&Mu?y^*f7|#}F-iHSQ>@`U9*CnQx zUDq+?*qlX#`Vg?Jpkr5MGZM^=lPX)44QVwIYyz?&m813fS@M63I-x~C(Fv0tXyxcM zfdyd@Zn2K%C1kf3GCo=hPL}kOR7!{?KCr+&$Cx75&>htkLBJR(9Q3ej=*;y+2}{td zStY&+kZ_uwSnz*Fx0W3Tcz{^$&@y~URt?I525L%6XrxrIKpGzsfPkjFwga<_@gQo~ zWuv=h5IwcR-P{knwcGWWciC>s(y9iGzdd;P@Lbeck01xa!{+?)!&^aM>ruHonLVrp z+kg0*-~8swo{ip90onkC2_LE4IFOTT-I(*c)n$y)4#a-}LHWT+&4TDKPX!o$R4LwN zBQU0>5dcA}y>5d#7D&WixvNQNqRFQfJCtCDqY~BhL>@tJ8-WBN2iOoHSGzb~+nD%4 zdaeT?OzX8+fk`7-qAGtiyonKo7A25s(cFR^UInd)j*H#7a5VbuN^H4swg2NKH*rceYn53_q)f|oQKZxfsc`piL4`(>n4?W!I=a$vbzOJ zFwS68&yTR@1HbQ_<)9;Gb#3g$;dbE~!d}?6lB=6A5tQ2Dv{!_ekckOLaKND5&eIfV zb;S0d_8P4j@;JI1p2bx)+V!_lJ8EsQqCO0HrF4I#%!wv=R2(xIW6SOr-w}CgW;z@> zH|uRvB@slgQ%rq52@D*}*HYi)GuhfpU&R8>;1M^1w!m}u^m4pus#v~oPXqRxW z2d@*sL1sTyv*+?Kf`befyMRKW4!{n929kfRi&?c&+f$N3oDLAeTdCQqMisobXiFbc zoL+xASb$skz#vsu3{6nY)dSg|l1VBkEEWKKmRr{!;l+ZT1n%BF3VbFv8AZtECQy17 zS85(b4P9H)IJDQ29@U~yzb_P-)R**2 zBT}pj>bl(w(v2ViyH<0YoG*5sP4|)JDh^NqMCOqMrDy86Z(@_$s8$hZXKEY2`Ax8x zm}hCZNVl2)urWw9nfmbyI5jy_756DFvRgw@iarmdl|3kc@>B@%^8g8Hq-Y;bS|`*~lGy*b#74 zwPZo2tMjf99#iyBL;+C8p(1!>6zyIwSvVG-x5W|uxKrsgWgj4S$XJbV|6u*-3jP}qsr#Q^S;`XBY+2vFQlzWhl?Z3 zijB)kelgZQC3xiOLag%wYTAFsV#U-=1^oQHThlv*!Zd}v>(%)!#2eaF89F>rS`4&J7ALg}U{*oa;D`|d zXi`t!zB*36KY0m@Ql9_+{`v^Mq8Pecx!`uoWd6f$=q!FEO^6~~OZZlZTUQ4Vezyvnd zWjlcK15qFM8?4L;(vyX@99MN@dlTO?Rz0HJytpg{Xe`8>BKd5k$_GFi`uCF;Z^+^w z?gGk&j}Pxhf?F@t#go|BVYWm!P#JrR`#P2arI=+QCVq>D8}WZ~r%D}eh<$C}1}MrX zddPFNo9l(_$B1D_f!CLCtj@o=Z^zRGT9*mtK1SOSGE&ja3s&#K@%RIpscgPCT`ZSZ zWkU)em*034;$eY$$c4#?=#Br1dSa`~Xn{I|cqzAV-PD$W$EnOz)Xo0yZ~#Xm<##D? zOQ$1(z7PR}pnZRCXJ^-8$H0FOppBy3ZTA4_SmKfeN+G0|1Bm+)nFEL!nnE%?@lrH& zsKVU9O2Z;m%o740RbqfB*kYs9*om$14(zzg`)RR&^@j~Rh(WuoO_8OZa? z4N7cYZWf%u&3yKYFFESvotK=|ZMxFiu;xBJ&D%XtG%tS#b7z{D^}1*ti*(YwDiPAW zO)DKV|CjPs68+oTy4;rRT}FhHvGB3Ob0WL#Pqg0bW)WK(rzJQtD`jR5r(JUsbSR+Q zX2VUl42tr%4!O9^<-?ih&lKq*BTsV=~RrS%sO(*~<*+nCJN?$D31$lmvYMi~zSR2Wp4Nugg&_Sa^4!QB|Mtin=++bDGRv(DQ*92L^}i z$dd}sod{<1(KG>L-%Jax`I06H?Z)3vjH`eAfbaB#6N|pr$9=uK+Lvf}WhO0jx0M<6 zWAVzU+Ms)8^u6om69*7MhYkx~Z$54y@05Q~e%XTt_3xw3_VaR8;JVu4kk2jPJD;U> zgM#}0eER0K-mBzbwm;G!zH&f3E;fn}Dw9qaF$yn9jmohfZRZnjP0kL7p*mST z7<3y`us)yH<@qc8dVEZwZDSLFX7hhoa-dCa;;65e?Mj+LEGde2JjDaMjs1POCie|< z-kh&ztEz^DdZ&#`nLa0@^(vW8VZ`Y2a0NoH)E}(S@V%JL%E{o4&?#4pY~p&kct_q! zh^h&vf`F%6;0lpPh-Y$Z!UG&Y8NuoZC2hnx)_!DC7s{g-I!pP_{p2aS=j(rswi_@8 z&zC{sDb6x}wl-gBp=JFNg{ad}0VLRbHQa6y>FJwS$4}nA_|way{OE6QPdhV{s3%h? zrDXOgm1pV;nRRMJe;WFOnW?IFuKpI=VfqlH)_P4u9q3ph0f2LaHcclFpQ1hNh3`Fs%0B;r`ih z|A1#j8q)Q0V-lN=79wfS;IXbXt?n{rKQRD!_u75h3-*@n7(!FWynAGyhWu`A}=?MUSAKPleW|oH4ea$ZP13n)1kCdk0Bc!Xl1i9 z4B{78=*ps`WpRd@k_;a@DRGafsXhVGdT_U4b9wH{d&u+LpSA-7vyARdxHKr9L>QM$ zJ@IvMKlwAbermg9fV<(S0m#!zm&jUBXLzYF5~r(KHKODB;QN1*m-1jQ-(pON@vJHr zs{zEhIKs-5DQO8gTL$Gv7{X}Hm{frjt3o-g-_;z39pd)(I%N0!{X!q9Pzyv3j?gR% z{wcWmE>>@s%hL-nKH1ita4{wj0vSv2M{WdE_pRm%f9v61BdQNnK~w?` z42i{Y6e!uO6{COmG;nU+Wt=D=X4%cUPGpyZ_fvQ)*3hgPvtBg#o(sc1b*pxUiu4*u zAyCU01GaI*t)hDT9w1Fvq975G;d zcJ!J71K&%h#zYSF^R2OWbsiKyJgWa*%n{?{%3%|89|M1CHpmX4f6oClzq?*kuUtYJi!Q+vyI~s@*It5EvOA0-8lypMO#0lcK$dsZ>AF z67Lr4VS=ya1;w)`r{5)_SA$Jwfj1Z&3FEQMid%?GC~Z54nd*UV(CzK`yyHK@DP&EL zOT7A`*oHr-%KtrigX-P?8@_N?vcZa5lg@(aIts&vy~@uQY7aB(1JoKE~n^TfI<+1eyYayxy4V0wfmgfgDqtQrku>S*MX)uLXn2CxcVz^9Px zh7MG*AAp18VcIY;$-qPrY+nuyVECHTUChL!+eQXE^=;{OC&VyI%*;nIFJUe*;^4({ z(uX*d6h;-)Nf$O?>ZjlatTvm&0YFqpTYuk+gR;ui+WNzf9 zY}NH7tt&!j){-qCw^$8-Y{6G$OjM!Q$0n=11HTEp@N#;SUG{&ID~cEj zpPUc^%2mOik4v>rahK9Us9~Kg?6knP^g?Udl3~i+GldiT^~rjnvr2d-HcN_FO#3`q z_uBirbJ16NcSCd+26ZrafE~+1m#OPEA76-bq-zKTR$--O-XF-x9VTHK?82N!;9eA=pEzFv;pZ)&lZPbvXK3#N<(=#^{ zW2DqFD)y2~fXsQB%_2`vd=Dl1nh#EL~0gZH) zlmmpqki)X7GgSQ1fa5HHGZB=WL^2ZSWVH;}fcOn=`xkiqh#!9jN3Y);y?(o;NMubX zWxVGV1-~STeFSYueGpZ2k1GK!6nCcu`;ByQl6@5GR!IH5PEj(F&!(S9O`_<;;&LGn zXWub-$y35u*zD>_$!r;-YNs(!R>tHGQA!!}%XB1mn&lW^E=_enw{`_4JvKwVsMbh# z+8ZZGp_SZO{lI@`c#efAl~8Lm=kg$!wK%(Lmlfd2%{Mk=*;xy)-z%ypNy1;P;-$6Q zPfgw;CFBQ(66}Rb1D=-`9W$n1OyOWL{bKINFasD51dvQSg_o0F5(BAXO)?p18!o`6 zg6>^Msh@{CEkxMcp(cg~{8^-Z3n!bVN5G%jfum%4DB6F6Bj8t~W(%ULy+0?Qv`w6vkGHZ56Gchx~k)4KCm{NY3dfK3MPHopM%-UbLyd>g=#?*7IeXyFr_PbeGc;6o9PyLXIiwxqp3?mTwr zrs$xXqTLE)lI{Fv^4-6CHq^F*8sVg0{kxM7e<(vBhK-h(nW9S7oVD@$^QFq*~ zH~)#b`#*4e>*}9sJ4~+N?Cwrxtq$=!bYyW8D))cw49J!?8r2Jj$GTMTwL;KYk#7*Aa-`m>@A{pznGeN!)95002 zhW}xrGB{{MYB=YGO!$Zg@eBf&_bl^L%D0!}Nf5%|%TO}FB!C>W0|IGiwV(`_&?s4G zKwW>1A?ix%i5c? zALPkGeER<6rJn+IIMmbU95Wz=wK^Hax@Ml-Q>z-Wc*0flvF!NT1m{6hW=>j@u(X5pnX9A_)Ig{$(4m0>t9Xa|YQB*K- z6!!y)$eTaqp=bF}fnKznXdcxIoeNEJ7oGosiEHJ|qnK_Cc(Cb&}In(SUzi zmlC4tdvxap$H}oSKxjvkQPGx^^E*s{VkPOGZW#lC3F-(*0zfnHEU0o~}$)mxS za4UBD^5}GbKRG?#PqM8eIz4{;=*xdzxK1|NXo1gvquLk!95u_!a`Efrdzl?-nH1og zRW{_BpbqLv8E+dvk?laPbYB$tqFAjOx7GHx9Z*r&+hk#M>sE<@rN;rH&y?;B@*F)b zb4w1B)d8o0@30O%aU@H%2cWGhW|XjE+TtGp8UKPHAU?cX@D_+v5h#EphNgdW3v)kmUv4wNrRR`V~3hz z=*g?s!7*}z0E5F+EFhAfu6BRLYHpG3?(U)+7JU5f=*crKbvVt<-h@dy&8y9r4Smk zp1LClPaXrzVj*T=Z}<1b?)2(eZe-opvjUS84{EHU7Jyj7`W14dtY=$Dl{cj- z*=qA)>q33m;8IpaJZoaR_AqT$^BT;s(857|G5v_tsxOMgYB~RryjqXx+n-Ob8!!NF z29f&2LXD{5^3t7FNmqZOEEt{y=P>#mB@5glGP_es#t10#O8*cD_p(z59wF$SqNZl6 zDHoOW?eT%0YzfMmIygVy=JTQs^Kl6zPG({ktUSR({@wGE>w=g~5K4m*Z53#OJSi*@Er9?8 zkj+zm2kiBJ9m{{$Wk(S;7?HU`#UO=rKn&SEx_@#o@jd0KVMYLvh@Ks+2$!+(k$rtIT?Bt&U~AYV+}Od0AmP6|Otx zt<@E*hs%zuf-k&9=(oh)WFsUh^kV@FP%d)))8Hw7`m=wtgNDlKa9HI{EqD&)jqu(w zOSQ8Lua^I=X0yWdBp{8>1}H`frH}W!(uY?k`J2DQ){N-|+IQL+n(-1@t{-vrZ714L^`*-wm3Lqk+1 ztnyV9Q$txEBYW6CSqf9y7uDV_WTmo^DhJ$4zoQqK-i38V+?rE?w`OTiu{6Y_{_R$mtk*j{pEVzBE*+YNx(V*{kGP|(J`nwN+0dYC398P7si|mkrW)zVLs%UnLbGQ>Am7t^_ zL7nT_Bw32G%{8D~oTFx7*y#`!(9Sic#{jw?uUm2GBF?DDKzWOdmuRvKq2Fi4tpy~z zTMYNdd%wqdnv^Th!}mOlL#$UChZhUfKEQzD06!SfjEs|2ELvA1YAJLDP2xQypAUb# zh4DO*k;bH7O@~>fsx`10_cdO=ZsGey1!YmYR~j32-yIU-<>*YF))z=5D&r#F!icr(y5N7KiHFG=JvGo>ul;0ev1`8o=FohDYgo_Vg70(= zXJ4!JPt$2 zt#rPC^vC+#KgF-75KKwPyE!R~@m#u0S7?)BT0vMO;Y8MNaX!;8pw+_Vt5Hkwz;3uO| z3IG5ECYMed0vwloY!?le7f%HmmuvU|JAX^g4Cn7}hV;G_70I%Fr@EG98R1nUT15)} z!X+2=nshbKMZvO?E7sCdu2z;r$o`w+73;tMM~Zs2+N0Do7gZ(dUgRAw*{yi3OF;|P zT9SiOO;7LJt`BJg2tE80wn3B>jalynWi3-JXL18; zpSo%Xr-{9ervzIG?j8vp$h8t5@9+O*LP6r&4_`hGHisWt7vxaNnkxPR3e@E>F=2S- zP1e=4*DdSC%gv&!FTg__oKnwc^tc?yX99fX91((l+?tdZK2NGUC z5iS>X+w+>s11pSc@4zpN<_E%SOw*F7QQ1KvISMGa9lI_{t)X)=kqyf^Ew!+n5YM=e z8tAlmk&1$JG`(Vq7F0n-@S2!nCb9!9kV^tvX$3OUNi-R>r1jBNa*%oefhExF zj*gm1O70I_8ZE3dv?NHArhkPRYs;hMgtU=e1uCyeeqj0YC|NV-kcM0;sM(`dy@11W zr3E$umK7Lp@=M~GwjK^tf^X8J0*|q;K!)g~`CHb&fjWE?JyI96Ews3wzx?x);l`v! zNun&pt9GVnE2?ZYfV`IGO0;AC-SQmkg+lrR??3>Dl@!YleGS_E^?%kD+E}hjGMs|; zh5SN~=o3XTa)W}n=a)m?wJnxxpG?zYaSqgZVmU~>V_M{p@rjd>lXLLH>warZg$XsLp5j%DzIPaU=jH z48D%82_~Q)I1*Cu34ciYB1i{-9WWg71zL(mzT@Cbi|3GbYpp}3EnXYN*2Kc31Mo31#~v6KktExZBz~5D$`~g*ejfbd&{un*#;u+Rd)$Hx? z1Y6rJiLN8Z>=r!Y$e*=R0a3Lk8HB}~yfk$>Fyj%iK65+}vNmd+fSK(cH*~6?R(iBd z(IGN6$EB!PoFos?2(HoNLlhzWl#`F#QG)o38G{w$ripv!Y6W$&`0j2_bg1SUs+uEP`ni9mM00o}nngBkv&2acNo z*fKBCsi|JX4LK$(V?drCF+#(5AkyZ zXD#eVTdk1A5KqY=a{{C8+m5Y0Ax>`52Gl>1S(d{|BIy3Xgr}npt;uFEgx}PHCt$RO z*D!YlG9Wglf03N(2}8nZ$`J9quH?oWsiBL}N}5#h?^e;;M1AHQA;Ha+c<;d%f6$rW-8KyM9;z`TfwSb%R6I@>9GEECN#gbPX#Y_rt+)Ub?`bDVm8o^PB##%MX66MKYCC%6}7vvbtIg)Jnj zM4|if>u$_P{UpIM;DDW*)v*4S`~)NQuH^DS8X+a$_3syq0P&MLxD^jL2Dhz4%B2QM z|JgBiR89gA^z@=T|32sG)*k^rlK^ff&v4E7e{v9AS>XE)M_8n#?yfrq_dZ7StBHAh z!3P<)m!@4)Ko-TpEa46=8#friSP={}8*<}K46gGoYfERne8E^9dLKXL^x!5l>2y|u z`5VZe$&Gz*8si1YH2-Mn!qY2lYXIALmQcI#@AdF1rtGU8T>ekJAf_Z*7WbLyYoxh= ze~U`LeeKv2uTc%Whfl4>&(g&!D4s=g&rcH5p7J}G@k6C#tynO{VI)Q{jMYK zAjAl5ridojXk6~l-pF~}kHYv(-J|U|=f%f!;CR8cJiI7xT!)6FWAX$LcrwvuZl=yt zfa}2)Z%O!TP>TP=$psamxnL&W82&JmKUCpMFN9Wm&&_2UV?4Bfx`(;`g^NxGfAUbu zkPA8kpaNb*u4h4CGnC-xuM^*ewuPCmS^6U~JR+9UrX?Tx+FVXcY&MG#FO_O z{NNN`VUcDyx`62Uju&56OyvDUf7^uoFfY-%VbT%alOGfE&Ml#7OR>DpFQvzI<#Y)0OrKlQa!Y=k5HB_31tCj^&G~gZO@nK5-iaESo^W9px67)`i#(;oWB{3; zC}z1)lZ&)C@4AWT@A2OyCFQ8Y6gA$&X(^{=p25oUOljbEK!bIV$J3kJe_87nOGh@$ zVvofVv!GFAc*L-4^C5R6cp|?mL1uTRmwXN71F#zi@rOS91WSt|!2fAWa2WgFn>6;0 z^OM1a3kIl}SHSQ+^5WZ+cTYkr`~7#RGq*F3`{dJ~Pw6}}>DJ}BbQI-0UVe40sUxCJ# zAvKjKOLh{U=iJnd<;2s(_Qi6p8I6wvk)Vj0A{hXbt+x5^w*dJ5A~|=NIew8uEOrh8}i5*Zu7!G)^mo6}peOu5FbBEHNV4LF}g2$7* z-mpz9BI^x}eZn$-cBj)DMd9Gkc8McNY>(k3Izcm*kREw-NG#BWqMkAqvEwfKbI^wL zdPpa}GCAkz@AI>ifINc!Ar5ka^Hofiu$-=2PPB?~zTebR)jK<3K|mKak?IU; z3o&M#R9;L=di7C9#VIk^Jp131J(_ zsMm7>%sF}&@bfdXIAC8}=-IPp=oAHX1&(s1pn%AAENB!W;lt6~h;S4}(sf@F$_Vm2 zX#=^lr&yey*_WpureIsc4|oV$*Tm3EKXb{+SrOq!u6pAVPkWbv1OgR*)#P(~d2@Sx zef4oRJ+sfJr?cCS(;EgFuhY-RAEvW+S7#^Y>mM$!E~kG%;X zMlUCmqgMwbF9M!o@M`?>@WohvywV^0`r}A{{C!}p;zP^fD;kV{Xy}qh`_RT~OGe}C zFbRT_{eG7@KTOXqPKP(sf8I_n-%O9eLHmD8-4c||GCydTZRXRmxgdihM7717h%w>_ z#A)aN52B)*qZQt$)a;4~zu~HWi(~pTZ{)mnxX#*DTEH zYUXxqQ9@f$$6mz*ouX>YcRi3fYYCHDM3D*e!-lWMmWo9V!6>3A;1(sqvm&+}`C=7} zT!uX{jBzL;K9qz*>HMKKHVv1<@vA)!4h8rb9$E+1#5$~h37C9u0h5}5gYPTgpdsM! zdkc7x3n;SB@riS919T(-IO+t=HH2H7VCMLyN3g8e1C-%!9{~uU^fh2{EA$pvNx6*) z2V}JYQzi5_AvlFzLo&;xw5w<7AT=B18Z?q>SA=yOG28Dd_JI$BqWEzVcmq`~LcAjFB@k4U6&-Axug(p4 zVHD1gY%CGk++l=-rZIoc@6cH)1R@4We9q5mpyzr=TDbc~3Ikgo1gX`H8(8o=g7Ygq zEjwlenh(`qn7J;4Ou>>J3Y8^8X)d{?Sm)UaSi?1c`%t80vuGNL@PNZ?Kk#;|rF&{VgLaN#=&=}H+0tGbE2XYRZEtQ?I5QMZ-Nl(kyiw5^DP_DU z30(_a2L!4uh=OJZke&+5=r?$!p`p9aE+G$?h2So;vAbxjpd4`sBtcX=kftkih^0P_ zC$Z#z24-yXQ3g=Zq015!2$uw8iPPpn_jWb?Jy-V4Y3FNZ!7Ff$xmA4oMY+`bPU4?xuQ8yAC~M6W3yk6eHjaKy=iYJ3Iz=lQs0qsE19A# zEoj-Ia!U(MCr*_BH1qA-X@VD)E(+Q_2MI4)p+ zyhozo)UCgm{fedxA>RYB@?7a88o||c3%f3( zkkppiz`a~McNc5=^lH@n%Dq*lN}#|wwio5%sDyp(lH@@O(J z4c&J^{1|fdHNNJQa!9q+kSgiER>HzoW8D7*pxVKygj~C^DBZ9f44!nZ`qK&yEr#m^ zH&ClY_Ky>ZAM+y1)NA9eTie|V=*Vt%3)v%0*ttk$FKWTm55oX6{;dX**D#TPK+Y*l z@7zehYK;hoFTY1LG}F#6<FhzECpCx59H$F-_<4#UYavwi=?hc>3vL!bQK666_zHv7|<(Dvs z7%=F|o~m1M=aC<3LX~(C&~yNx~ek^Lmp5e0MZv52V2W75*y? z5~-28Lr*^0AfVOSuDg6X8}ItFfVT3!JL>ffbIaAP^=>x1R(H@{$)r6r-ZFrgu1;ur+b59emFzgHrlHq)%lpFMYp}cRnG1B7mTTsUj|C zYP^8?U>Ca^Lh@^hCG1ZY^0IrxmItFvl!#hbX3!AQ2^(6ipT0pW*wo!vZ9fd%ZK+zP zv6H@R8>Lomn!+mEQ+aEDg{zCu1Nc^c#*(h(ZATI#>&=RfJ+;;y z1l^TqOWHmqT}jY7)aN&~T^)7i3Eg}(V@1Y5yVYtlN$Y==>ds(39v^q~GXHZk9>JI!vq?9f9N$@g!0;cK2a}GLH&rXWf^TiQ+p_Fi zR8~7$X3wlM-&yPO*1b)WZKrxtGvBRnqqlD%dqSI^DpL;KA5Pjtev6J7TvqNGvS({{ zRsZemO0>pwPXVA*dQ2v5>9JL0@y|wwG&QUX;@Xw_0G*A0uONukx@r8}k=s03=uP^< zDb==x>3n?GSM$C6=b*XVmw7zVb7W(@X_Z{Pzv%Q|IyD{FHSO+8mCOb``myt5`*;0z zZeQDd^(_~rm21%2b)WuMdg~ou+N-GD{{c`-0|XQR000O8AP6BS@xTb@cntsmt}*}s z9RM5vd2e;Miwy!{4Nc>g^YrQ2P#%Y~!Ie&7Qdy|y*oO7jhVfZX8 zmq0VCy}%sO!aGD9ix6CuKwRDA_Xrl7szrOxlobfk??^T$u>K#nHX8z2CJIO@_6tf0 z000*nm+_Sb8O_w>!8qPv8H<$croT+%h_) z(981=mmfgj{HuOfAEV%jF+*Ad$OqxQoh_x@f#Z&B*R`E-9~TftoG@(5+!hkYu}#A~ zfmcqkOlcx+uv&3N-AXtGAy zKXk7ALtFn)=^qpW`k?(oZO_`=pogj_L!t{I_V9Tte*tQn`IV!G?1A5H1lc6{5N^f#Dun%Ur$ zh*pp`$#YUfRM-Ni)E4x{PJx2qCACAABzmNFqr%z~iAe9Sr?&?8Z~ybusbX zap+A+uj}{p;t%o5$HynLSSL9q0l`wIRC#~t_^x-HjB=g!m#@$Tganz} z0cZ0qu+HP(YX#J+659}6!BaL8`_1uMPi+2B8Su=6;4%b z30;C(K~WuXR7boEOSddrBDta^In)4H!HBakjwm{6o!|0T!Q z5W!b(KpBT5{x_$`b?m{gpW)C>SS*D)IS@=CZ4Q6cC+s*+l6(WXvp2A~#*vLPVn-qF zd%o{DzH{UNg;S4GI*F!~#G^PG77V8V z#;Drvl`>($RCHUi4Gq_-kZUTEZ!+DSstrZm-3qfhTgEgGKdYHfdxByft;|+rIV3(| z8CAnw-mdA3PfEhKvx2bv8ytsAI1bipEb)I;Z(WGhm8l37gi%cqznK4NEuLFf*5CIM zRvEQ3pT(sia9S>)Ys^~I)$G~&wvuTQl-5H0mh{HthIuM1jeky_ROB|`6YcLetgN-3 z^q!yoB-S{4VZxL3Q(r$D-P)M0D%NVqX(Ozb5ny4p-8N1~39EM6#&o9fOf?!tX6S#J zFwirkv)ijMShp5t=_eXVN={UXw3Qwg{1LhUv>52eRpC@~8d5BbMrzf2pbqXfawURP z`Dv$F#lE-Xd9gN)ZT1XnS1?^bBsdds&eK5T1&`>-4z4y-LX^}9V1i`;XR=7wU1>xY z4!Mw4J9XTLCN<5UeA7CL_c2wPR3(H6)lApER!cb(u{r4x!o6p1wF2Z_^U zpthz^kII0#KK=^}IuJ+oqQYQ16B|yes9b$Q1}~TqMl4l9Ix*_83=`Em!hE&WhxKRfhaQzL0-O)!Yvm zW0nBW_!oVUdrQ=0zk47{yCjtd0FaOjs(hK%cO#Qk^&A^;+mmp7ik0H?W!;zbx>@(R zeP2t(z*apyIL`J(H+Jt+AXh~iW|$?%EUWj9FyFOqk)Igd{K!>u2C$EA9==d&lB-_p zHVLS5$#E+B<#n>UNW#nM)5U-GGWk@Qgfu&<84w0cnW+#a$t}Xy;FRu+svg`CBKTGy zHHUkTy^d<}%|X94jWEm^;H*5hu^saK3*2E+mXZD+|CmmO<1@!`KRCxgRz&D%Kmc%r z!*CJ}!r>rv!|5m-;ql1Far8qV>po?gUBJazT`CC7-NsLI zR%0?eMepz}T4A`!u3)Ia)w;StmZtAKB+3Rbp;p?m-lfOy!r=rzsc z>zeuyp*F@z>lgJSqSi(DTBB946&d@I%0{@&NRzSIBad6N1&v%Da{iJRf?hy0DQ~u5 zM&`50{sn@r!2v>ptR!!T=bkjwOqGhp%zy!j;VN{ZZ@~MeS6ug}cWX>pjrYlY5Cj~? zBwFDtqsc)ezlWo@=T#Y8KR40tzX7)rOae+(3MbT#0CWlf0NE#(@oxhhmx7@JD}Niu z6@J&R7{|4DX|vQW?-a_Yvdsc&UDt?Y1BIk4mb*h~ti5%2DN3M?NLAmb7p3O1{=@#eM*X{>!uNQSTuTO zXWO-9#Wn3ff{IwO8;bb9q;2@v2qpS1(VS3#pFwb`7>3k|fhD}{7TKdnamThz+kZw3 zS2AtMFb(WKV0tB&bt=rv%qW`dIB20~W30%_w--Bn!p6cJ>$TXCZY=z^gMZqHlYLQl ziwj$>b(XFsTIh`YR_XS_^~Gz_t+%d&fX#6nKfhgIE$M5+buDLpZgw`em0tY(+}O6D z9sX%#3-8LkZr9lz3KGdGU8Q#=}3}5PtsVFNpdk#WPn1-0qWM zxwEvq1VmW58_98fTjS;sN8Jz3r`{_icr@1(8Z8DgLzqH3@4U0TV}Idx9PEqEJ6G;3 zs%=#!+Kz15M7wA#xw1=415gp`4N+{Bs~3$cU5EZ|)`eQL-nbayR;i2is!%I~o~2D< zw7KHQL|v^>6MK!a(roo`11pMHRm5&h!8M_-R9mgOP_5&57XoWYQi|U4-SV9_7Qjb;eGF$$HRX=LBp^1DLdXf@gChj$G!1W;6dEMG%9MuaV5p<8x*W^ zP9r>CNr4!wR)4kGZ75=+TB|ozxh|@WMiuvjvQQCgt!}T?NSim_Ejg}{#8h`CGj{F1 zdiTW;O)r>qNZE_Sn`T@9R;}49E4a~vI9A1#YPHgmyJZ!En^=~+Lb>~LV5KekiGa2C z3Ze}p+|>F>rCW#)HArxk=ZX+HohD;CN*>K^zd8n(~rDAodC_eMa-$+XH$_B25T##<3mv!>fg<%f z1b?VTE0e9xLXQ>i{o^(7-Vs!D$b0sI_wWRHPrv*A>!)b=^egYrpGOJlHBknFBr|4O zU3o{{u{WLm8R$aMnm`vwJVL5fUZi#8U1ft9>j~>$uAr_7wVF^7 z&N$TC4Ez42LuaGt*xfKy_C&=!1i(93Vg!>QK=bgwFgo##o})IpyB9sy=}9&&vEg`| zdz+qq#;EeUJ-$xGT;yu#-Pn5 zAAWeiQ@NRx+_tVof+3;lLq19P=|^;AmMNTF$8O*^8s$pXhLu{Dp?yX4hd#D<+Bp?k z$X*~!B%PI_pb=TSP4Ixybm=#XH-DvtYqzd1r%w)IlkREqI?Q+Us)dhWC?c*jOJUud zrBc8NF8BuAWk>|=8>WF1Bw^a1jPP&HwZVv6SFd(D*SI8mY?(MX^%98BPUwPz9GR$d z=z_zc3y68Q6ujRlvM~xpgtslMxL9q|rIc|e*07EZ7p54^tJEV<=x7=re}8?&M{{Lz zz`Yf5Ek3oRI^rNYd1Ttjh7yG^Y(2xAxg{{3^axf*@3nl5NHwtog_#Qzq`Skczcbfl zB!KJ@3UO;oj%yQ(kIAzvIh_=KGA)K#6&xbFvX&k^%wW^?8ARDMWSyyua$_N*$Y04* zban60j2Tme;O9tJmE$C&ukXs$5s;I?Zi4F_G?0U6WzxW`N$#~%)pYkVG#YS9lnqdDfKNH|M|SCE4aU%`a8G3#Q0!HT78C!&6GEmCs{EUz|NSxYqZh=#+};bfM}xPQPwd&PZEFB%=% zNW%u7&{;t3HWHI#LJ(mxMqe)`EC2+-)V_{w3SmM|k?z-Qw=EX3?|qq|zue<}*lN!R z2S9~=^4}sWrr{E!k28&a$&nZZ@*U5?bIN5d`<69U6hwK}!Lkh**~aU5JDUdRMT?i9 zTJdX>XlWx>UX0602?9vQm!7Hu9DkJ5L)VT|73 z?H$RoP1jURt<5oI225uQkI5lSf~ak7Lrb4nhZisex4COUIRup}V%wt&D(lP^I<=NU z29uvKW7=|t$dQrH4x_fw|9*J)@b7QGc1-cg22< zk&lJ11S7|Y2ONmz=49pevY-XQtt49(HdH>su#gu5LvJvUbG#528}9^8a$#r2Hr=oW ziC^#Lo*DY;Kr*aa z3d>5woVDi+E|LD1jx33&GJkR_U2jQ)fu==7H~Tc3MkyCeC^?o!AR5EybE!l!g^m6` zohr^@pno{j)3);XN$rrRA;AIC9EUDP#^uP{u5L;6FM-0XJUt~-V{vi-M1T?=wnPI0 z8~VNr9w*M&?O4Eg#`OOJP)h>@6aWAK2ml}mAt>2{>>^ME004;!0Jm(c0tzMx<@ znhXE{(wBeI0!n{rQ`<=PyMIL&Qz=Qo2L#9@UTlg=NWvC@R6=%V*LYOIYTL@_8nuLz znaO|O_g=T;)@3_Ptv*m#-S0m8wdP3_Fx#GIX_j!?W?m3SNy@U&n?)|SeJ|yS%Tk-vXzkrwM&>iHsHHaiR+mjl7T z3%Sj|rd@i)C0g4_)5N>aQZD5Cg4{)tM2UQtB|Z;{^EeWz>!eQc{!8SA-Hz4ibY{LI z1UnDCfZv3#dEkWZ<%L<2z#0;m{jc+@%h&ejk5_EO5@VUBu{awJ2IkptwOZZvtuqI) z^rEom5}tp%zRL&n4)%OF_1y8DyKfm1+11V4%WH*9;sR8Fr(Z#WI5NQ#F%aG&w7pQl zpMUsp^&k7)?fa{f9kDFaz&~-~*#D+bTwmONd}Y5sfA#M2`T`LUP!viKx#=hN7EIuT zJrQ%~H!oa(<+2cT&jpL->>^8|m`ikTFK+BtH=lp6Z$DmMd;)Y6GUL@d{QLR> z|6X0v-_OQW!rWebx~08;(r-!eixYR*P4KyRWq`$u;Z^~qst=zZ8r?Oh2bQ#5Z z89sl1{^D@Pk7fry&wf69@zQ;Ea^lRMJNM6yUK~Dik96waHO6D#`R02fwIKjV=Ya26 zu7B?`U0-iJKVYjUanU@UVBjt;^Fonw$0Z}ho`5LmvIS2Dq}Uop-K7)L9S1 z3WlBHox~D53tk|1qgCifj%%;@Jua9f1aeQ2=etA$GogaQXeFc!VGXOJ^Ja{1vV{5G zjE4d@Vj+YCIX zwOPvDvWR56Cju2nl${61^PPL2Bkq5lcz7a7U0&GN=kG79s=DV<5)|sjANJC7U5?g_ zvs9Qy$X7Pn5z5M1mPR!FEQS_%RPv&v^pgG^|B$ zY47*44k0Yfm^29-7QzBG7UO>#(-?yUQ1VW(`B^4>KHAfJI#}5=tct2R_OUxSkaD7! zQ6oFrb9@f{GyUzkP6&l#Z)~Cuoetu0rCZT$1Dp{_&52O^RtW%PrA@;+8q5`yF5EOe zhm;H;A&~)w%65dK3%z{IF{g|$+m{LLfDSa9yE4^=ggZW@1uyj+-}`@qSF427qbwjb zFmo(xfi;a zmup@wb$3deNpmuBQqk={J%dJvI{_6!sQI`KI%6n{RnL0sDFm=oA5EB&BdZ3NJKuV1 z9~xCtrU4fcShVQLDrMAxi-RG=l2S!=3zeRH+i(1vtU{$EgJDfCB4{U*+FPlHYW;6w zp)Q6_xz0X5kn(>#fhSZaoN-gf*3~9M79F_3mXvXuExESn;B0c|I=w&6d;gv8gB&{6 z7BOnt>_d9vp=+)Mn&`qz>(b;Ml#ZpD*enVmvu3bl@HTVF&wt;Yy6FoS7 zRyt1PPsuCLa(MLE&Nwvh?v9N}{v-y4J=hJ-ufR^?5AJ{5{ee08buitx1`TaU{*-;e z2slIoaj>y3(If<#kZo+l(HtB2fYnfg?Ostvl)DAOv^q30`J)ICrWGOjRYf3-2S}rM z-on-Tp>;dSb$FS8$=aevoC@}gK6UzKd>a9kXJR%{u$~XDV9I`;#O|(r*lOVdOWIDh zEI4adhK_$LS49D~oqP^b_Uneg#3%RRdKdIXL}7c>eYr?2e<`peMUn?ZQgr6oADSYrv^5z-ps-NVt{{U=&}?F_TY>2;K;_K%bpIN{)7EK zI_Mu%C&K#kJ#Q=DIKF7fLzSw~?v_PSXj+stSk>4Zm(1~UNuK6g7+6EMlTXqh#>))e zmwA0#jr}zrN+2MYmmeQamvG7+tJIFaLDl2_{=lLU2J#IFXE_ey$z{HdTlg<1RB+#fp;+tI{Q9(9pr~;oWZZ{;* z#M_eltwB*x<%zxH#8wENioutagzC?6`rA7>aqj2$N5=;*4t_p3I663Xk6#`>JDKs9 z^ZEU;^Sm!s^DU+(R#0ep3{Qb_Y52Plu1J61C;=kbg&4#>p7a+HO4rk=mEshz;p(C&4gr%`s=`(rt0A=KHax$H0t`;hp7>4spBJYCP=$koN1* zML2Knz*KaW(*&)IKIBC%Yq;&nzw?kI$ohKuV-D?C!(K(ZkWN%?jG70fYLtIko0ZD% zsc4ScIyl8eZS2@KbFF9tM{lrmQZPKN`-K|yL{QLk@2|kr?J@^eG_L!zDE?+PY|GsY zH`SMwK8h21h54WID&zmsoPgw-k9m zjjA=;2(~1c4Q^P9UiC?n*>F98DHx)!oBJYN=U__a@Rld2&+WGq^45RpNV}%kQ|Rua zuRYSs9(c`IeOncJ;nMNxnwdE2vcrbfbd8~M3ATNC)jF;I3GMU~h^W)-+h_(ZW$_`a!{pf5z=L(E|&+$Ir3sZAfb)y3em2LmRul%e# z@zkV`NH^-B;C8JCCK-Rww9q{L&H4RN&uC;7IEBAGWV(Iqvw`O(!!_J%#aRu6Y z;?jo(CGFQCwG0Tr&G}8{w$1ZbLw=_R`?SmDmaU2>*jv)|=G{sH4M@JILw#@X!Ai4H zj+Dlxqb1?thl!OQqmp2@X;f-+!#4v>S*5Tmt^g7)!2L~yS^I>eq@}tVtj_-cw{717Ttf=9bgk#Z4gdft zFPHI^1{;^|A_FIX#__+N;wr}hXbS)deu&gW);N(|tK+z-tt6eHWXu6LkcdHmIUFQ8 zjruBmi~j0AzgTw^hmoFEe! zXO2U{)jHvVWN`>^%!xw5IE~W1y<&i~y&T8%lGQ4SON8@(I7rTJ1*e`!cmc6sG2@|E zg8VsuJwGdk%}j(*T8`>_1RkHke5){K4!acx@>50ijPr!&-+s*~a2B#Oe+^^dB;1LU znB^bVl&8$`GfqXA#Q8T6DF~VGq=NfY6o9vDDwd9@Cd<}1=43o_e$5#Fbg-T(mCJ}iY;rzc02rJo$ZznhzzOS5-ExnJR3nm+qoc>^e) zri`b8{mxz2Na6?-+e5G(QZb)dJ^kc|Z>~e1B~IvnznJ%p+12yk=O6Iz{DXCQa`n8I z|9uAVmnY`4-ifxCvv+a!{^C8bHvflw$43LTX-7muR)JAq(Ny_^c`b2mohBc%6^n&j z8Y7E+;~hhl(gm~5y`>R_%w+~}ZoGjXu_1UOe)HMNLK$8$9;a-{V(Ta5`ovE>N$lJ| zwrAsisXegmuU(I(_+dD;?ZIHA9n=hlundkLdIH$2`Ob%YWW6M!AjwfM5FB2uN9_?2 ziiqJD@J=M}1b8QscT)1+M)Fze@oexPH*u6uzeza#7_Oai2v9G0#=5B^ zB(ned;^GG)y_1akqa*S*5#&_@D_ihJqz8eq8e21MF-t zn+#_*JDg1qCw`xLvl0AbQ_pwp>ESpS?69-3J+}WqOL#(P=7-56E#v3Yca;gG>ySmp z`!x$eQQW#nd;|2wQsY&I5VKbp!$d{r_JiP!_t_wQ$8#7W-g-?<{tx z@tZXSg^foJjbmoqgi&PK_Q;;uhZEjCdO1J^r0c>Nbus&uHBwaa(G)>hc z!2rQg2h*=bvVI4wLp(T^pp}h(&ZfiJU_9+GQE=y=-v?|8QEWIH2aF94hm$G1vDtKT z_$U)C8TkSe1!*CnTM?A@0ha0Yy@5CFkEY|n$Y+%KHa#4=Lptd*=26exX_?b4J78&< zdAJNy5+@`|z@Rvx*EEc%8Lv; zq%H@fOrwhI4xbtp5+y`8tBuw9B~4%K#Ra52qM~AJHU;I^oO526?Qi>OSLz>FQd$sIh znXTLy_ygn(gf(Z^A-g$W!5V2bPMAU|cg?ym!t@P{Xgw4iMNuSw$z18nXjT8X+xU!D z+C{J&{}DoDPqi==vAHzWOmhef+EufxsLZAaIYO+WRxFUic}P|#X#$o0E$x6o=#4ug zUgdUMqfN7}tRSj&0g&o<3#M2HfGB>o#tTb<@#0r&yi$}RsRDD?5y46$Y=^JTh$TL) znbWnXIH0U%K2BkO_xjWYEkC@(QE-&`Rj(sV&9BstB+ga^a~Nb8yfRR7=@D|GmOCRB z_#>k$#E@|6?C<4}!oy}T$g$B-WZaZ*r47p$t+#;qR~tw8lkZ-iNT~glx$F3L;e8uY*)N5pRLPL%p#dPCX(EC zDuwl$01auW-r8wLtIF55QoyI(V^XwmKsLi(`_Y!ZmvEV24b6esF4#Iz)={PD|hcw?Q;3PQ16KQ zFvY8SR+1}OiOY^iEe+m*~#ky`ZP6A2IFaes*$HemjS$R)_aWRZtJKtikhc} z!m!l(V-@y4$u9rZl4A$C690>(-(^ww>Pfw+mPL$D$?)froE8M4(;M9}JlA*ZNRCq*9u%pI`af<*Ng zSiAhHTA9+f(DOrto>tIQ)G9HXx@=BV#$@<^DPfC69n@4dJw(B&jG+9c*2hKJx><)8 z1A1duP!P}Fz5DAsJm_fdExPvN4FhP7J^zJ}tvK>teEv7b?(B8KO-xJjuEWz5YpX1- z8xAe=1Y)N^X~Awj|0hnprC{V+7Q%`z08x-Qginy+E;)e+AAJ7L!lm5&roHhuX6tHy zb11VmI|l@I1F)bNGw?J;H9>Bb3%=0`C_o?I3MffGRrcO(H8jkl+SmN@RbeQ zY^4`KP!UWPY?To%p^|lSDZ$Mb?6zrtV{@*3vmD^bTl!p{Djx5<$?Zk5e$A+lEyn%c z$qU_lcGCOCS`J>c?E$b?Oi&Wj6+7PdJ&Y0Qr72n1ms<&V-toR9uy1vtFGr-9cUjI@ z%{O|XT{SVPPFT?ataYn2`#NPuHk+br1-mA7Q>j`_>9jSPhX)uXX%>lNj8lz&fTKId6^WYqq4e)j?(9pOA~HZ3Dcd2>^%S60#UvbC$wdm}Cf-~YZY z+%Job#P)R@c;4HGnW`0O#*+qrO*8o0kFXJ5oS$KouWlCT zb1h0RhA%_;|F7CrQ-ID^MlnEwvMPo$x-oM{0t?I`ID{s@NOestL${=Vx`Ev5WTCn- zzCD2iET@qHaLs&nX@c6!D@+6BUrYppttntWu_RP&%#wFW8mG=Pg$=xB%F~@1YGr5Q zs9p^nC~wK*8tHh@?$uRLd7dA1X85fXa97t>g)5r*9o@-$T6cBYFINfOk~66PVSmS7 zK1dNYbyqZsloV-mX_f4Mrx0N4W>P*}v#=I<>sh0BgxK{C9Z=+Lh9gZJ(Mp`RL5`8R(?IX>c%%J~>OC!p; zggxo^w-~r~8e(|@tdVd<etWK!>rYTUhhr zw%$Rfz7f%7HLYDrd3$6Aw)bDR+A#wwAquOOW&+6y008c%DJyEX}!5Bs54d@gmAe zjv}_UR=(ggCe`yiMnV0I*gT?s^))AJYoUO4f;5iPq{5vhVLG|zISP21mpw$64DqUq z`sOiSzb`nASoPXkGvHHWO!7R4vl+iSCFFw0h>y7`d zo#S^DzjxMucWmzxuU|TI9!I7!bvQXY`QRPwe)w^EI018}23>YJo1C7V!mA7UReZkG zPvT?3{LL*x`Uzfwi;f1;b}!4*S&m}FToQGIsPMa(bR*P-ZUj>VUByZvjJiWNKpEvl zly>{QF5r=XqNvN#h+>q}w40>CocIMvkhjt65BnQ`8~t9dKOU<2b(&7bcqE)8As%gx zM}q*PzVB}iaX8vQgWh-;Zf=mlYt$Y_VSPMI0}g|m(^jvs0R3t|Tj&x3=piuTY`E$z zr#vF!{iMV-PAgmk6XWn%XiQj;(~Lvhr3pORA{%(L5r!gG!w|h0jQhPYhPZ7Gd*hKG z_E*Ax6ges}Mx%|fv$@L8c@g^wqJjyznUk&0HEo^mE}iRa_RkjdV=L0^hGxRcvpHqP zEyW}?;2}+-2Ls&#F!Cc}glP`yFry5Fg=?Uh%e7mrg5{c zakIbC#R$4~{ep2|cEU-?$NpxoHyDqeTPrFpO@W<=~!xGQNKnY6a)Q!657hJ=7cdWHb&p$Gz8hi1F(I8u+jK!R8-u zu0I^Sae99@=l&+H00AkHTE<9_6P^k=%LHLa_m-0DRLa~O@}bnZlywDGH!2bYe-|u& zdNUq(H{Nt%z52sS&4y2_nb;Oyj5r`CGw}8-FUZo|uGW-*pPx=nyxotJ!!sf9dnmf4 zH*VkAbb5xhPm|*Qt#SU=*iCSr!txHC!CT|wS$Fzo(Cfis(+Imiou2kbKb865VE5zn zgFyP_SAMYn8yohAzo+ZLOK<&`mp}i1>+sO7^2YQ4GRN-0v3L68^ao)Z0DHZ)#anOp zcv_~pD%=pyTN==mEd?DSNWuOcZi}e_2-O`j4~(<+!^6zt3cf;n~!gQwqKP3 z=1q>Lr$>8}l{TIrVu^AeN3MWTIQvH*r-yo2pLg)uV_6O?@_@iaPWgieDJ8h6&?YA* zM<*ivFLsG}et3NT{r>dy$H|`9DZi3S*nI{|^ZcP>_yyE?4Gm9HZafgaka0(&v$;3f zpPVTmP5PlCG{}8Mh03D@D;OhxN|PDMTloO?0!_d?%nJcMW)1X@lcR6&c42@f#zR`D zqyvR0E{MTXBd4>uC{w{ENHM%%y3v=0d3-WCn4TX9d)1?Q|ER)>NoaWBZ{$%?Qlbc| zN{f*wEK5M~5nmlIN@p~&Y;BloX?3agQ~^e%x@1@`WUpP?DCTA@`(2pM%SwV%$w$(djra38j_@v4rZ zy@(4DN0!=z$PKV@Q69{JPBU`fvSC^~%zjry7oXo>t;_Sr_KS)K*1JCQfLuM88F7%Vm0c{h)iN zM$^|s$*^wXxiu-fZ@;ia+}G_F5YEzs2(Wr?vJQTwVzUSM7;AXVXFHYQc~Zca!cOZ8vUZ8;TxRrA)PR}|Y71g>i1c4^)C z7N`ETxV#{a+6b0VqT_cyg^+Uc{t~a-KYOC(j$%HS-|xlOIT4vvem6S{f9wW0%v0cR zEjg)8(t7RUv_vBfcyC~qsuU@ z9R6spSXrol>avU^*wP}P5la-z;>?!8lIS+SCQYe6dbQs4sglFi4zEqZGKP?XqwOD1 z#02~Ma0cke_m23_(lT;A$YXOF!VUp{7Z-ZgVjAn3TiOvrLrQN*0;9zxqmz)kRdbT( z7)RxC%S0@o)NBRZ(v*FD**&`+UGT8`8b(()nGT$Pdut@ynUi}=XF{vLUDB6NIgVOw z!PW#8k(o`!U2?ah!eW1`_%DPi=2GdO(ErtC&J#o_eJ|_pc1D201Bwi=Q<+rar<(T& zYpS1WcB1qSYB}5Z2b_P>8}t9F?aJiyqF(C~)+9~TdDWyY$_X9$*MMPOIh2!_S@u?2 z_G%!1V;klsSJO1WfHI97Q znIo>95;Tw}S2(WEF>?uX8Frw%S#5~Q8G8kP?BcM;3OLapk#8Ln4%3A#F)O4xD0iHRo`mF_ygM_=HSa4wv%o8~2MsA>v zzt-zqtnj77qH6#0xYS%K*jHPu#tD1% zb0f#;$W0-xUAYiKawU!tD=Pi+s-MBKtf=zUIY773s`9V&+${2A`xZzZ5T0N%b@fAn z{M&lh{M|tN*2d5-{p;s8*5b#5>ao?MlmX~aKDB?0s$!`{gX#BF{{v7<0|b|id>0tE zG+qOqA-7(H1Jw%(MV<(K0|x*Aw-T3;mjfM_U4R!0muLM49DjRn+c*;cKc9lwTq5b# z@gsi34(bNo*0>8U%@x_~9u8?C&=O^{kwh&?ImxB@?l(h9vLrj(-8In0CTD*0elU_E zA-*5wI+x7%2~RR1HOW&Rh>-a)*G$q_9UK%Fl9k`^Mhk&=5rT9Bkt8B55iZk6EFQI_ zffll$K$48=l7Gbh@|CXcbIoH_Ub_bbJ{877N+CPuEQ$s23F)UIW%h`ttpi0H15yXU`D5t>2NmdPx>@E8%=1xPiet%_3wXNUKgUQq?#Zjr>58S;`Zjf z|MA`Xe_md<^tJ@Ii=S`d{Mr1%j{_cZ&Mk5qc+(s8$NlkidDox_aq?Wmh2>qdtb#;^#*`E=np1`SHtPF2JR%` z7}bfEbQ+yaW`@z0 z@uq#FxsDm$Ey6sYnnRkibj4G~Bu`f)q)&>Rkbju3);h%lP2+pj1_^U%SOI5vHX5{U z^9+(YgusB5j6bq?!=&Q+sf|+7`PP)-Xmr+}?CP69#?vGNlEH9#Iy;+8W~Y0Re5e6q z+G&3<9Q048ZLAGv4}Ku>6rBTQw!MC-`8=bNCThpwhvZU|P%xD`*gI6l0!{Rq5$A@c zD}UyYHA7=M&`rpL$m0-*A5zrIP(7?g%*cj^OtfGF3R!81Y;uuh&g0PJU_^O*{-<(p zG#gGw1jgOUobA~EVoNDx5%FUIS>Y-cM@7rPkBbGA(u8$L23_Vs z$k2nDL#nR7V%l=~n6|E0aq)-q21m=-KH(b!Jf_A(KWy8$QU=_AV9SiInA>u@9VaFt9pkSR);v!MRe$72 zIpnBvlh=+8!y#4)TI(eC6{9j(`;x8LV@s0bUMTNP$T!4{r}+<1)e00+#Nhn!*6sdy z;l1er#oJcEN~1tQBiV9*8z4<-9_u-3-$=Haf~`EG9Gugf!%am^4*ZhRB@`>vpFuh= zTv3DV5cY@-fQ54`B(GLClF=9n0Dsbg#*i893bO99#kIr6tY(JCBukCav<^u8%H;{w z;A|ecNVkm+*4}RXzbcV7EiK1l7SkstPl7JZc(*Ylp`L$5pJb98m9wuFwD1 z)DEC{Aa=XVQHH&|v12zFBY&9m@F;+-VTZN7E9~V*BIRoVOVTa^J|Y+}eh;KcSBH7o z+2-G`X_~V5k1zG-f#vu!%YDIOR(w2t+x`26=K|fg!*8E2zWuFO_z%e~tSkwA!L$eL9pZ%HJS<3$kbg)k!QBTYAq4S6;RxL z+0J4LYMP!k8xq5dXA$B=aDaB>^B+`Wd4j!X`y&s%U~ARIsVrnM%vuQ1hcYZyg4si>a{(! zcik&I*d#tA|AE|x)f}d<*5(zphP}6ZAV7_n2Le7Muuy3FRDZP9w#ZlZzu&Em?b_B< z3YX14vKJJhJH$H4`B0Fe8Ms1{qYwq~wtrB6Oiq+j87T!^xd!pjg`@bQeUgF~HdrMEwD-NC?(3(_ zwveJfy!N&>o)2q1$Wtvj!)b(?)?57l0k?UV1Dp;DXlF>clrR7QnbVi?l?EHPI;I28 z5Py*OA@cv_Rfwi*xiS13q>RrJNiQ>gqC#6Lx5Wa+2exRG5Bo9=9^J%$-;uXuZ?nG~ z5Y5&_4Z^v*`7w*&eP2a7eC%9RAuw=0}SFpU7Y%%?B(Bae8Cqw$6Uqt zW7vBI0_v<==$ZA(dPzAL%ooRroZnA5Uw^U&5%9i&NP{gQ8s#G_Iq;7MicOQhh0 z)wgq%RH_vDKxNV^L_lp42RembVMRE^%O<@IE6kr_S!lwNxJ-CbG{tAJ+Trs!SSESE8Hv%9(p+6eZ-j7ISEA^^w4g!ik~IHmYF4=#?B?0tPG^ z0>-GiC`kvGKtbnOUDn8fC99vZiBMM@^m^+8{&%Ev;CNTsnw)l4?(M9=R!A=zSPB?; zwFSshIjmxKzOU$u>3S9wctO9QcYkGtjHaRbcospCzaS7Wo8fOlB%MeB!vd6qL?nmH9SCMPT& z8fIf(=^6Diy_$}PI$A9Ke4om0B@qe`PLGmBM zbIWPl(#9&V)a1q+L7-)1XesY&b})Y`ozV8*S3h55yNdA9ztRD8C+MUj(#iHBem8kr79Kt7qLb;O&Wg*|;mMkeh-MOjh3L?$PqxOv7hk1%7rwgL%ao z)ws_bd4QK$AsY}Hch%~y&wsmc&W$?dDg)M{kW(=imJvMJObk-8L+~GI;$Wc4j{>H4tuO9kw|B?pH-Z;RuXL$p_o(2^n+zNuuPkJg)@h z+$D?C6XDa4mOd1J3|iNdodb_y(M*2zU`32od0;K{1ZL7&lG9m5`U>rvfS}a#nXJmi z@tprrt%Ma#g!p74`O?eQr$+J0=pE-Zm1d(7oLZylhQM16T7M=&8qBT(8)rewt+445eJDFUC4Upyt&hi6+NoGqX<92H7XCookxUWK>+5n!X>G{7Lh`J;iw` zVfx#N`Y&ZReX9HJ;?GQEUYE^rDn5y*jCIvtIHdV{e&2IFNf|TA zd*5)Xv)Yve6r1gBcL;vuw%PpJeRcG$bt`^o!+-I&lecJj1J$AaZhl()1%y;G@n@z5 z(PU+l(0^AxM#<2uey>@cpd<@YEotc$^7TWhY1)>`V$_*+?L4yv0WMRN^XeTa-twven3ePc-tI-`DPbK6wuicI&JTE(xpi|)`?>#lk6M5oI$vb zujBduYpD}h3$&!0Xr-^}a}guY2B1DuLx0=lv1xV8H_M3+>Q@{qC~Y|LEMwE@O(tj| zDu90c1|N8QzaHsO31W(|GvaS4a#RMjfBCE$d%_#R>`gHCMr`^RfL_CyN09bl`7?u? zui;aMonCvyq0r&$gU7Hd?hHO2LyDIM5|=8?hZK)r{0wm4(g2r1=q6hSgK)g9HGgH- z&C6AfuAJdPGVp+plcY8_4^q8J$N~$fgSX#(YgHfDC;~Yu#!X)~5oO2qnuJ~1L2;ZGqJlZH>vWJNmTt-cMYA>A)Vvse_lM|6px`RQ-9=3*! zmOUFcy6xV$F&=bhjoxtL+QUw3(i^mPTH75fRG0h7yB9B>{juz%w|_^*iACIOF_XJ+ zrQ0&4RuF zxKVFITz@)#mA=yD>0`Kb#OfpY2(P0_{CDZ_5yq`|p=VW@7<7ZH8o2~G%?)m@q)k5{ zE*D?#Q8TmNl72-OY;1tZE6_QpwhY~aqH^W9&AB~sL(dIKlz(cr22B*G+Wm{Q>)Den ztlSma)_vHamz$k7M7esXK=B^g`}3O@u(Gaa9bsjafBqfzfxWbs|NOgk6<`ht@7I4U zfBna&sk>La3A$aoH){3mQNQnuC-!XEZue)-Wa{>Z?y%J{oLw@ZcYEFOu-omGAat03 z-3a|Q#C%u!1%IhKbT46gfCoi9P_YaFEjRu&Xi~GF5wC+tC86;Jdo&MxWFpbU60b%P zLKA*MiOU9^5Xd16H!BA(mF%0{>FaKdlq9~&*SvO%*S`1!^5iD6k|wMbZsU!64J!~i zzy3F(KLj9ITB7M+|0jiiY9P#Zztf+!hrQm&>A7xa(0`c>dXv$t1+t_&7&xOM!W_2Y zbS}ezVdg$FVG+!#C1}QBxJ9oZ=$Ew(HWsRh`}_OW zOHlD|?0+rj%jnOHSj9J(u53=ulPC-X`1&5yoqay{2l)i{x%%}vsEK8+;K%JH?!l)( zFr|*YUCal&lFWy}rIR9zOn=;jWKP0`^$MH+-@pD1PIBylmFj_MO^-0m0;&=)ED#Mr z+91rUZ|vF3w=J|PMAl}-^UG{7)Qej1L35hdEq^u_9vWU8+ovn2kR<}K;n{{PJrNw* zAk9P`M*Dy$`W9pi&vHPy*@P*eVx1uk2g6=x+%3V7hMn$jD-vdqSFl;{N@4Z}&%&6% zx~+b@+n8_Rw6qsdBMh9Y224@7BW<-upFVuJyv^aoTDDGXIQ^~Xn92iI|G@eqbi~p+ zVt*nrJeMY|UdQeX;B0X~GwRs`w+H$|x9iM0t>HL@hOUu8yFUUt=oJf0y>`3(dm;n% zd^!%o)x4MhP&bcoikoQ9YX;tS3Huq<^3k|I9`0sVS%D^cJ)fr3>k<<4cZ*BZE3Iqb z1}oUz4eQv&oNCVz2pv`*sG>krrrZinaDVNFsFrdybVkKPEY8mK7kE`-JrO3Cqow^R z@S)wK(Dm&UgOJXv;ds-mOdbQFy;zGLH{)?2cH+$?;b<<+yDc>y&&w?Vx?Ah~H=VI8Z&|3uS(8C7ibRRt+I z0$~Reo!-p17P7-|6$H>e5E+{3Hr`Yubg(?&lO%~vfbuMP0HrO?T{FW#_Ih%SS0fhnV z%u67&G2V|2OZJdoSpEmO2rOL?!dau}lNfD46rXr*)$t9dQM=sA!$ z71RaN-Vqy~^vg?@jqMF58tF;$Q!3`AO8!;o_G0_n>H?uUc%QI4%zr(dkl2#`7_hdm z3QD3>B_D{o1p}(7Rb@tSFb^#9nUNvS@P|5EN;P&v2@sDc>x_UcV}D>tvbdDFf8X71 zEE}@lzJB`pfaheP^op47T(M;fX9_sFLE;WDe19sRR&;#DHAZl#J1zluMKSO#j)zB7 z)8ps(w4%6Y%H>Q*?|;%axh@aN9vcE8J76~J-br2e<05@ce4p8u zN?r5uC+5aRR^T3-H%{YNIsRE#fgWHSLIeHQyBzQMZ=GBAMjWN*Ux1 z_57F5+e{H4RV{^cN+o5HKT=j2HQ`%(N5=KwuNUIi)T$|E;ygq=Fsf}@B@B^Os!T=J zpd_cfLgy2XGp}H(ucr8@^ag|vrc-z9mHYME<9}Dxbi*}mZE}GdMUaPFi#a|t2PJ-u zDN%8%m1+d^6?0}4-4 zNe&W^_}n|7j{GU3#F##u;qQRNT%hzA%j76R#`jAqM;UDuszc^Bixe$msRG5ySf)VP zGJP`9sPo|3Oso<88i+4a;0p3eJADxu<$qKO{4_u--igjsa~LTrnQc>~V;o3-Ycs22 zyVY#>+pTsBz5FiFKPI#hWYDvhHhf)VleA=fF`P9@#~GhhIdBf|#gD{)^SK{^E9+6) zrVmO7SMHX9j>Mk4h-P8%8!o~Fl_!8FWmM7K9!Bp%4+Dy!$$YlJN2@5SP~$y=D}NjF z^BB7#>-aemXsOEZb30Mh*flmwwBqFkgC9X4IIvQMih&tZ)yHQoZ>QYZYp6!>xO1V0 zu-f9Eizg}uYZIx4%vp|1p9j_n-n1(BdrNyuQHP9y^;@mF@Ir|&k1MWV$-1!&aRm$U zY_MJo=Cfw#PnXZn)Ozmwz9jFX<$nn(fU?t&>|nCWlTqo7j2|`aPe#W}ZWDtvqtjvu zqEkg1sz5c-@Het=8e+x(oEXliDledM4Amf2H`j;C-Arad>hQ00xKXJ-6-|FK7 z>Q#ebU;NC{+R**)VJ04hx)KJL`X&1bW_qBRRgkM4PDTka2az$8G9vPJUcv#9!VpCB|LggjO*1+r|%iBt&RU&6}1947uPb%NB<1#l=mG(r{f~LPac6 z33pKe%c^{3l(jO-*)K9LC+}cuVn>)=6U~oVTe8SMSaFt!-6SH!5ugCA^&2=ysmN9cMscUDatdu2ssiGM?aZO@u3Vgu!n zjcA(A_LE_pRZss?KYvtDSio8B4~83sgddB1LfGCG;s*2e?u<7owf9xCUjm84+hoZHE81D&4h$4Jry>V8QvW9ms)7P+m5Gy{-frr26JS!GYz4%YQ;&ot;*HTxSO_Op*fnt?>C?uqpm#iv@N@6> z%3W-f>Vc>aD%<)if&>hOmNxo*KMBoAL!{^eQ(5Dx={S5@&wnpWRVHR<6E#Rwo79p^ zv{Gjns}?_0vCu{8!rR=@x>c=&_RUk#xw<$t;lz-Cgp&*u*Qbf;JQMFdBlC7iGjbWz z@vi3L@}^!nFh%@X@Fw#Cl)h!WU(#?~)>tgbBF1d@%79PA& zMH;SyV6jRQ3V%NnqJy+BplieOahvX^blJ-LC0$V06fOB!x!jE}ehaVd?+lWXkn*$R zC(nv;#u&huj4$>uf-i_Yig){u)4FNgfa263ex&@u=rBcjIHi>gE53UJTGYw$n*^=1 zrkjOH3gz}+szwIPG+Doedj1RxqJ=o+$dgp5z#+%eQ-4q1FmNZ`5EH+uPlLhFL8V!| zEfyZyXH{l6fC+&4mAYc|ci7p~lN!Y-y$0QujX~RsI>jlW>v)CvfU}=j3RP;;;Pi4g z^HJW$D7doLz_XGmVu)fuF$%ryNlqr{a&%a!{&f16%K4*TYL&gTyA!KKo#O}Ai7C_| zzq5Kw|9`?K3SAReg-V@F07;`PVXg>;>GpSG|s z*uIuQTT>ty%tE@}uH3^tDK%OX+tx8%S#?HuSW8D}rs0rL&16Q)LL!eJWRaDeoI#$s z44PLGGSDyCO3`gpNv*%)=wasU)Y}g%amA{d<}t>B0-jl)*>yQ_8c-5M3{zru!Cxu# z41bOxqf8%<*q&ay;aWa}sagz&z)Kow8S=Iqt^)mKzR{x?JZ*10mogM#zi;M&mt3yt zyen(JDqYZ~I>TX8{7A4@o24AOq-GmuwbTirV13xGl{Ua)(jCrl^V0h-UVG`ExUitph?}=Hbvdh8I_JcapheBR z5T7N-Yf>94RCutm*WwFz{3ac$+WfOhD{6C@b;`Vu-aO^y&viNw@X?Wq9xFaPEPsx5 zPKu8*Sk*-WW5o+EDaRh`(P&gMPGy`?RAd7;MzY1Lz=nRVj<3-7jTtG#M!Ur&Mlyr= zQvAhq-BHFQ@!2mr(g^4Ge=VLMf-AAQRlIqNQ)ciTQWE%^E96pMO|EuCO@aJvH$ELT z{;Sm(6Z|*Ut%8p;JHi1kXM!RZs((x*(8CdD*^-l#=LSlfI@f*w-G9D%dmO&;{`}(Y z6TkJt_k-ik@ktZ-YhxR1!Ul+gAP0Jl5KisJGMKtv1Kp1igTS*Lw*g0bqdi{F8xAbV zCfqjSR(69O%IHXD?EhD`=WIM1EeqDs)IPuqEbA)_;m4@UU_(O5K^11xR5;=>^c1&3qt;UxCL5bD7-cn>xcVnF54 zD}o2ugsX5tcj?nbM5s3?wAd5$lvH{H`x4)pEj;wmD~;|T!5@L#H@#TkjGe|t18yDo zJx17-%Hxq7My6a3`FGUm(0?sSX4K6siLE#ew^x2bHlJ-cij!oZMitBs_rCHLE2d*X z{S@GA48}RX3kOVxwWj!;ux356qb#P!!fsguoE&16F130IkuXh0m=&0FgScz7$?=io zo_!|$e2CN;)87(*5P9u?*tntOK}u_Zjszf@(P;}Z?K%j&XrDGgwSSYA;uG;TXW8PR z5G{TG^69hJXhMDa?D);AqqomMIE=v_4C!$UQq^|hdQ(fMteiICq>-D8MFFYdg?n-3 zZVghIv;cP#X*y((046OV9%Fh&(&}mt>vgWY4tMQs0eFS3@616c3>S!93PeZn`Akx?V~@zS>-s=_VWEJw zM4%Zaqe%$5F@Lh(+xa3&B#fLqx|sR~WzhvAPc!`AQT#R@ekf%^m$xu*YvX&1E7$6_ ztSNeD(dA!&9$Dm;o~Q}CtsN0$bJgms9jDvb6$(%3C_2f~OB zMqPK@YPWjrNoVGcCw6~4n04$)tLOBl6L+}7O0`=mSbvm)Nn++}ipV7KV^zFW&RWbb z*G}x~m;^4J11{qNX18Q;=q;T-!-YOB&Tix@Wc~RvGZ|b~{x&5wAU~d|D(Qgcd_K*B zv!vDAu-?0{TuE6@SggW;Cm|eyxHfcEjV$KWN zH0nc9d4H|?U&xGyMh414{ZS}Nz>VCGcrUhK^5`vQxV4;lL!Zs?W31zFw}e!phU}b2 zVerZIE!ZT!yVfT8wO@4L5$o(voyn{}ZrkplGn(2nx7)Gpfzz{lc56B+Of@CVYo}Lw zVi9Z;e=2$CWKQb;B?KE!thwal)BxSRfC5(o{0*hLFLW5D4nH)-_$pyX(qYX?flxoZ^lNE$u@XMBICRGb$3cj12A za-0^+OK{kSZa^vbIk>!Z^^KHgqIh#T(Mi=}=NKpWgG4Yq>>h1n`i9E+2C@I%0v5UD z^ff|MJMNz2RXZ|x@lvaX3rSZlvkPu4*GWBl@NgK+aZI6rhY-p%h;dKA0ZF?X*mqyw zG!Ri6aN^DP|eVdj0M5>*< z(cR6rWL#JJ3E9i~f)Iyb5dNrYCW}HWZ@0Sq0owqb!at;w zTc(CDDKQ+oOuu10=kS~|$B5mMe3=#b@0p>Jt1i>S4y|4G%21MlmI4L%*M9z?P63I% z%RbH5->;UBb?QKJ)8~`WwwtBYihIO^Cdkv39`d5K#~v`-nEZ&!8A(vfNAhNW!|!xz zMw93eHldl!FZ6#(BbAaBRZ&uNU(xNFlB(}oUe8GVRa$`0&3NhXrc;lg`lNPfb5UBL zwz^;(UJ}D10$VDl!uG%rVeE2@XlBm5;K6%~MV{16duRkH?A9M1LVa2;i;ta^M65At zwtNe=ySsI=rkDzC)j4{Ah0Zp`$K$YdYurTEVS)0{o-J`Yb8fpz zrp(abKuLeaL26u(lzNU_5vU*P@z2}OpNG( zRi1U7?OPRXFNvPY)GyhX@8aplVWP;p(5y^V-@8?iNG_lOg zRSBLEK3*t z^zmIL4n)Ch@aEYK9%B8#IBV}bzcZINS5}BDPQuYJjuu%s9A;?(9T`pLi}`TekF&UM zrpQr!6#e1A9}UM1-iLk^^}|U&=!H(li5i_f=uLW7M~%pAb)d~x<=n(>iTKW!L12et ze>l;9P_}Gk?O^-OxfY5i%3jn9hhcy`L*W~w{eF<8lWs5$7u{$)SajpjV$u!6MHFP? zdD4r5M&Uy`(WEyrQs5jRNi`*pm8A207q5!zE!cxE5w@^_{hMcndm8d{WFbXjf++BN zgJzL|83BVFOpXwlp_RhP6d7%Nj**$DZ_5mSz078W#eZS9yHh_P5V|x)WO%INVBqj@;*VwQ<6sP=hxo+jf3 zsGr3+2%Dr5n>6YTCsCx%CwJ_xt4m$Mgjjh-BU9(oQj4Y>VTP0<)eDCU&Z%- zalWL5o!gH310x5-2`@Q!NT={|D_YA>>>Q=w8;?fNwPYLyG3es%FzUm=McKSNN#kBO zSY)H&XgnPB28%{@5{^buZxjYb;-{t#i$j%vVS21QsYCK24lB=G;9UVOHY^rjEm>$q zO~dC9!uVjrikg-^^B9D%N;36k-f#`F$-orPx)^Sq-N9_8 zRfQU)R6Ov@nD8fLOi3SC@m-ESlgBQY)%i8X>vN9_QLh3d;SCBOODI*pU9WF{$+YM3 z_Ndi`chRrT8w4s7_W%v3OqvZ2WG04Sn8?gp3m$B2Lhrs%Epq?GnGVj>cQT@9(#Ju~ zq-m(dpkeK;j_}RUD7U;9jB0angU$ZWJ&;XcMsP(NE8-2Nd?VzKZ#%M;=gkHu~Vlux{Bw^9Os4Dch7KFn-{W9Nk<900F2cLB2=Ab|REj_2Ile;-}6Nk}{ zJ{U%wvrGTi`eO-qZ##BRwWtKc>$2Msn$6C`&8{HBANS1r0!DjFm=W54U{gGShzPle zt~iitzruXjTkqi}Llm%WZ7`|37{k82^+u$(L-Bl|T!(8g>#+0+18Z`f1Ip<XmB#uo~iK}=ebtOfW@;M3~S!?g}X6NP=fQ0t2++}`)z?~@yYn$W0t zUI2qzK;@XVD88HL*LzsDJy^JtjE^DdOo4(4Qg0q3Mjcyd&|7nV7KBo^IjgrKbY3-O zIcjpnp;;Ke3JfvGp+L?x-pK}wF1^ig22-Xz(A?OC-FA z`Ln#3QRQSqJ5?utOS*PmUIyKp(&jqNbI)dDZRbjC6r*_UuZr1_W!OufV{U3-#_!qe z8oD}v#2=|>JD~aal*EiY!)k!faZ~qTKm>#5i?%}fAS_wm>pw{=!Kw;Ns;(nJF*S9j z<5WbO^)gQ$1+u={C6O2)eqvprog0A8E%EMUyZs+95kGW)E)A@%c-{nH7O&{yXtsed zEr?;XMZfy3jJ7D&QRjdP2QjCcvu=w$;w=H}q9>feMC}Gn)2ft##Z;*sVk$GXtOhK^ zm+-$d;?b3U`?)m7t%4QjnSjSpKP05n*5+1ibiB#cl@WJ7S$dtpM9(IP%dSEl%-f6RVlR3C#-Z*Dk#^ODKwa(eJ;el<6II9yKF=5N>EhLb=u?+r1_tl zTM0-m$3ZKvs27o$NI>uin0S z_1*dG>sQ~`9QSjq0G@o2>c-#5*ygxEx9^JUsc4zKHE^DliMOr51goGC%u(1Z;rlH+ zw1RB_{s>I2@A>)9uV!ETbpDOeZxMSbk_>4$Z0(W3@!fp}TJ09L5K|LCcfUzz@qXvX zKBFyvfETS|z27FZj<&8&YGAom6E9lxr2O5dZAL##v);N9&P@fmavf=m*P&T&+t^Q0 z19<%rRe;wA83%`%Xy^)kSpuD(iq0&)W z26un?`JF>sI1!ozZ_!XiHo14f`FjUFXdqLpmGn_{!nEHl3Icd-nM1!i2WC;i5ihbpO z{!4Et-fdU6xn__;@|Fm?HDJkF)-$SANAGLxy}zE#^WC-)*vb$`10AbUxsmur+i;|e zOZ6om1fA`5p)5!N&=N0ds(S~LqJ`Sz4*U?Vvng+qF6ceSp9o{C2CgWCOe`Z`bzUeI4gP%IMYQ5_H5t6-nV8x zl`nx5;%m;A7!!IZm;s5r0G-mP5 z1pR~7fU1x_UJCeN*+sKqpj8yEIaGYcBO6+s^mI$&jhI|vv2M2Vz!j?KY1F!Z{l95~ z2%Mx)=S>J<*c;C?1%;mSy1(CtPz zTJ__%78}&K(x$*tQ=H02x`#!25Q`mdz3Sm^@?!(sP5b>{v)wXiG@Zpub});9bW@ym z0C_-$zxrzx$W44Qf5S$KIu3^XY_>SQE*$K^yCnPO4}9>zp*_f-RLtA|08mQ<1QY-O z00;me2q7pCA-G$e2><|)9RL6tm+^808J9F=1R#ICSnF=v$QAzYry#aikZMeccah#Y z!EWOqL6b$0%Wi?#5N0@s*3`UVIJE2p?vwOqpP?_17wZ|4l1PcNowQi}u*sQo&Ya74 zF2g@*alv?gd7{-aF~g%o6q&YIB(PpdVBairmILvtoXAhp36lc7I~3FyHFBQ!GhI- zNM7Xa+D%F1aser1kjws(gd2RH9336SDXA*$mv^tujDb3nlZO1&+2Z-x`@d?Zn*Iy9 z1;ML$2|{~U=Par7EA0(1jsoFIZ^#$F{rrFW)$_&2cdwB{=*F|Rf1w1`szv&ADP>tb zJDJUlXD6%G>U=tRMg=~bS4stbHF)%fhX-cNR|keJvAp>_PAnRFzHK>k zpnedrFr>b1Tfr_H#~3Uak0mk>O=!2766%FX;0KVHPB;hC3xmX@5C*2_N4DcI>Ns({ zBe>zlpey#Q^u~52mno?I=NvTp^*?_VXkY(DK?s6gK%b29FsNd|ONF>bGV@Pjh)5jT z)C+yO2ga8oJLlZHMut$9QMSP+0k?|}g!qvdD=gTH^(;`0i4$}h2p zGOdE8&?u|`%kZwgZ3y>~V7a~>MFF@@=(51WT0z|q7({kLV&8*@kP!V5P#6>kK@@XPrFtC4_i9*9B<1Bx)q(8FPe9Ts87zVqpD(tJ;%dh{gs}v}y$4mQ2 z=$Y>@0?`~Z-m)AgaJ?|L8KpJ?mJ--4`>mK>!?AZm|33sZ!C)eMvEF04leAot-b8Ul zu(Bs;n2BYN0IrGII@xg%D`1ZKeT^dOJdrJVw{O{I29lJ^TdaQ{55T~2X-u5RPwc?A zSP+FtX1}qAlIKqMy23}}-bKfT$}mW9zX*>iXsal!2gyXyUeq}4I)PEgzlNU8~!kIADB1Ju8H=B2u`&35_p!5 z){^~^V{SQCxI2Gx>_Y3JonILw+Cl(H7tqe%Mg?hdtRc+0Ib8kLlk~C1cvYt4cEOn% zvte2R5%IENnr=t%mVbIFin^?f$wp2|(ATG0OU;T^-l)C;sy2+B1Ga28S*lLoaJGk{ z+Lv%+49pZi2*9gRj@Jru{X&ooR)x4apCTz&S$=K|Hw=HBT)$0KC0w+_e}ZGadGW;! z?k4&sh4TOb4JqC(3^6uPg>F2(SWGvCF^85RS8JRZsF(ku}^#ojIs?ha7*1MEV$am(q*2TOHso0Ueq0{AyH0 zuMi&KC$(G_Vwd@D@J0m+iAg1!0;%vkE^9;gT-DJbw0W{4=44OXM$D%{Exu4+F7)X? z3Z5GRu(wvgjG>$=#KwM!)JturtdSf5;eKxmA2w?iBF(4B}P-9U}T|n z6UwbLSvoDm<&4&sJ;$OAYMO0N8mcb{$3usoo(%ohqN_0odBLIT2H~y5uJX4MKUw_- zx0||ck83lsmyaj?QmP2s0^3_`c~os}nR|bARK4%k(N;{?yL!lLh>x{T`Z`7*F;9-$ z;qGFHgobn>Z%YN<=A|vfYGog%eQJc?%jfU)eXw@MO;s&NbnR3(FWb0jw6OGSdZOvi zmMks=oVrtIYUx{F9&1VvXQ%p-Rk)sD|4dI`khFpws6#rU_v>%gJ9F#sv5NQAYzKct z{HOSHYzNn>#WZh^)4m!h2i;L>z8!6e>emgZ`>4xwhEMCRV7SYt#` zqUN068``lB*N9pIzg)^k%6i!n9~363cvuqU7%>UIwe!d!QREv${oKwlheTbgZ{zW} zubZt-l|!05#NHi$fITj9N$`FpzBhl^2~VNopW$J5G*n}5xI2W<{#0FxLKZkwr%e*5 zEn`bH*^_`-yWQST0rgWYU@^>v-rF=T%3EV!@EGT`E>*)c##5b}pUKDpqHqZE+vo6*jowH3Vqc110jFo{ueU) zPXF(6KHC2St?mgybEQ#ck7tF#{I6JW4kbk+V-QBA@&7f9yDr!=b(c^zQLP(J_kV8~ z>DEU^k=``lP9y8Vyf>C_qq?P5BgyC|q5j=*>(EYWH(Ts@^PxVnWnPUokq4W{R={$< zbKErpRY#&ms=y0_`_CRjQDA);$vLF?P*Ff%7}J@K>O4ga-scMy>v=l z9BbWxe%f3ucZ0YUdh}nn)^Y^91qxK88}2v+000~em!WJ68<#$c7Ydiacmx`M#a3-^ zqec+^?q9K&_6p<-jvd<=l*GEK{t)S;R*h4sH4a)}arO>avqF6e$ zNRiFX%kyM*<{8JFrO5Z=vM4$6eMHlo@dA|@4Ov9|gcgM3M07f}fs;-rmN8by(v)RQ zz-<<@*>k~hSTJ6DSY<&I(RgfstuxNSrPB!$ECl-b&->!(cBbzoFx(D;$N%H=m)l?b z``^EyYs9t3qR7S6?e+AjyI!w7%a{h6vUu_=##g;HF2YAJeIQRHD|&`L{q2fIH;W6? z!DehOKf#IHlcy0Cd4e~-v_ABvKl}tXW2#k<^V!|}4&WC5sCW5jB~LVe7b$!|2WU&- zwqVDji5)oj(wsQaz#IE$4jf?Ip#PO$K@8^XzoXBoh1y*y3Kh>UeAD| z$fvRx3+-37!3oxumGz~IzI!9Jn}ub`#!qD^%~pF9UzQ#98Ic%&`JCXyC)IfAf+TSl z0hfBr+Rb0(zV&{h5n<3v5FrDt6=!9x%l6#)>^knitJR7IVtkvd zvkhI7Ajc~LaTSf`3jErj1DS3MUau`k7I8xBp*!$+vWiahIkH_SDCDvUbF)vfcX z_hNKCaqeYWx1rI0g(0XLTaG4AtEMtKEz~U*w2~nHSD1%=q&BfO^)7-t$%IVn3s&-w zTqigUB8-H)PnB4r40K@ZWu5>rTVV6=&*opCT`s(Pnq+Ty8t~?t*FWImgvJZYC87-7gIqF#9P~O~XLK1M*Z1}1cP(l#!!(pbx|3)^_v8H)ouSbh1qkBx{Hflz4mr~Aj(|vF0 zW$U_Lmp}X;|%+O6PTd+V{a&{Bt74ug|+;)w}W~01@T0yPO^~IS7 z+E6zZG$8zJ^ZJHmd@{WL!DZ}JxB^9R;a#M5$#u0raklR2+TO)Tjm))T(V9i|zIeD< zp5Fk;tH=J0zIeETe!uF$_tr*uty>IB6p%;%UlnhAFDFP{)9mWAtt|fnw{v_1+A<0@ zsc64e0{{T<2A42i0~?oSjTaM_iS82{m!Pi%3qQalHI|g5S(mxEU@ea);?1dJC}J$jV7w`k426B1?ZFfMdOuI87#i zmybp7JfI#3#k;zWyzFU5~b%rX0k|kI95A7sF-1eebImuQoO0Jh|r5tX(sm5 zvrn?3YZHc!O${&5S3&a;kP~WvDT>W8jJwE!%6kM4xD#CCC2ghHl1hOx@D3?0nBz0t zh`i^^5Kq{9t$Gc0Ht+A@%Bw_7CQNj7xuF{X6GbH;5L@Tyn74 z6x_|cdcd|RY2C03yk`XrZtgFB^0_s2Z5!A-&`hfh;COMp(9_0VfRKz@!*|A;mBMH# zX38dQc*;fD-DgeazLIPrrw4Pg0d@KbO8GCC1K=Mtf|qWd74u4DmC;zc)y8Iq7qZ&TaE!jzIN*NdS~;}h z#r-LKi;lL&g!{Vwt5)i7^I%{uVR4P1ow6f`GyI(6KMTa~e$eJl@Vz!0vdO0Bhn&^Q z4Z;Qh)$E1t5f6}7aqu5dO9KQH0000803Zkr ziWEr7iPr_#YwY#*Bs-)n`If}(&_6R^!_@iC;kkaKo{~^TOpLlDGqKkx#Y!e52;$6S z3W9*JB$djLOfbYjz?lI>xh~Csbt)#*$Q*U#R&P(|LJcA^Qow(W&H;V*(qjeM`v$Of?qzIkwc=&V`EbNvfF4}QtyweXM=h;)ZA(gtgnsA z%kCh0)|h|)oUnfgWEG#jf6k&8m%ev^THe*OYPmEsesS8r=%eAwFK%r=Pv@B;LmFOV zN(w<4<1TlJa{(RTQd2Pk4!ZEcxv=9m_Zoh?fxnu@V5T08CMY$aJx!-xObz8;NR_97 z8eB4t)zltU;HBA+v(Os@ z=E1>mr@6DN!bB{Ch=m3f7eUTMku}!Z^_zZce@Vv);nr%DlXQ1oVwmAzWqlVOIm*K$ zeL5wtYA3(0<@FsR&=`Aam=t!Op5&aS8V7;c zlxZ@i6Ci&>071+cNG!ul6B!d!!d4Vhe4jAX`9MW9CGRO40a~!luIn4Q8E45*V9eHU1>Mg@ zzt(@;%;S6z5Zm0{Ywhm(ZQox5Whs|53L?y}HEDmF%WpUL)@{vTpj^6+`|Dzz4PDjr zMib0x?b4hu5z0)MZhKArZq1r4_DCw`%w2Ap>lMq{tp_Ed%vCcGh+H!?Hc4gQxCP@aNFdy1wk!oM`Md1-tT8@;}b zd*J^j_fNd$e*3^b@Y?N8r@RrjQ%O0Ua;ASx;QAKT50-^g(PXpXpOU1Nb#TsagdLf+ zIk{$Okc&|DLS^uH%GdIW=jl|c>(#8fQ>f8ucl-{ROqfT>PdQ_Q=u3a+ z?uY*)|9$#8{`(r<`d%FQApfoM)i%Ij;4W|E9`M(&+a~~f(Lz1;6bCXA__)uyBeA*yH|z7C)jq#pOzG!yr^7$eva4q=h$B@#coIw z9FHrAh$D`g?GB2WIy}d?SF)YEu$t$BlhCt`mzGMdvoHi)!^0L<-h?WfktSehWzJtG zGk^2OxG&}PEVWTp)=q^*hHqqV1Mm9JfeO=2~TOU-=bP(i*S}zJV$Yy)v~Tg93z^SyppIcDBwuU zs3a9;Vm50P6`3__mI=>uUK|&^FEW1hO;$LOylN54T2dyC2y=$uqJ@lk6&Ji9b1f)w zB}kms6_%72Lm3r33~Z+nC5+%AKFFNSXVz>sOBfacy?y)P&42qVbL8CG>ILzqH`nif zjsN)l8eO2uI7nHF%k64qUTz;A9`2UbWs>ChZkb@IWVe5=?q98}pD)eJ-+qzbOY-_F zO$q-S*D2-JN=a$@`YwHC8IAdytB*Gy!SwA9{j4sdu9&e!+81~NH%sM1yO3YK6=pcW zmBcGXM9JkMC4UQs7deL1xq48TXH+_%)jIHO*A7?4y!V@@Yvp(2MnQsoFWPL9kYL{r zBC>I!B(S5M9d4ZA5(*`YQ<_Lv*k{nFQe~|5GgzaQgnc_ce*MiBB^MpxYu^m^)_?dDBNV8Ykw0r3rG}(B#P{i_!)uBg7wsK zPK3mH2?iX0V@FQ7_U#i;T{4c-IK@)O=-N(Tht9AhkNWO$j$TG6{3;B+(X(1sd|%-l zuLxTtyby#jMV-K3saW6w!(RFeFNhLWJG#=HwTgT%2-oM>%&*b0h3-LU-f1 zo4^BF0)NMM*Z+&n#?6ytPH5@Kykh8WlZztoqsj#xb3sH2A(t1BN?hy(e(3mXAl7%1 z9kk`n-vzF3dmdR&0+{jz+1t-^zjoZUz42^&LhAiY|EDBFaYZnTNi!`>NGzKppt+qI z>dHwqfCr@M6*F4=;8tyx?v0`x*!0``HnJUjx>5`9MSpF986n8iaLi8E{S>c zF-TR%sgi4QO8G;f%l=vL!aTM;ye@D~6Vdm6*^D9`-}194jlNKG^ra@%_lt2CYOXW{ zcv~9OcM785O?Du#H-)r$0I0niV_*koP;_?j4&GbD8tGI~)9u9Mh^jn&LJu@6b%$N< zi8R}+U}`*CjX=!|Yht3K6V%fH)YbOI5|jW}?U)y@8Yazyi zqY-l^&U9g?JE;J)U8fqi9f;eG?f_5qZ)4ex>JxcW zUZpS+#pmt4^@1(YG3k`Fj0c*^gWBhVT``Ig+L@{SWLZyGI1su&$Y)Kk0WGrY66``XdJgaSQvko3_|FS9o_vY26)hn4LK1f zpl|7UJ?sQ`ate~0!EU7l z000&Zmmw+y8w+D^Y;0v`WpZI{VV4ne1R;N2Z`(E$efO{6!vM*xBkS9evCb&kU#2e`#KzPdC|!j9*) zd-C?>_0{X-&FwXMfrRm>)K)I$(<#||3hjAssggpLs(XuP(_erxEcIHaHyQpoH5WHO zGWyf%p5lvi{d{cfQSUC7cT0`9s$YMr_E+1hno)|(n4^8X({P7q1HpnQz`hr{Aq2j^ zp){Uh*vuSk1BvY!wjF9rPQ&ChsKWS>lTz#u$4SFk5JkkMF^$pzMrNQ=s(V;_Jt1>sF82|p;^UL2G#r}aKssuJ3u=SkkL8XVJs-{3EF?au9WH% zd&iNsQa~QH<$LsmIii4a;PMd|MXqIALop~wBG^{3f>)6S(|9cN4acn7BVh=b|Ire| zdUkKU+di0!`TfFrwiqvd7>rR0+yt1-9M7_&XmGW;CM?dk+RX7C&$Hvuwg(K$tyTg} zC{}fGTw7b~UoZ0K<7=n;Ul4yU3ULfLP6H1dUvF-#sk8B2+ua1N1Jrfsf?$QS;^9R~ zJy-vNi;%?eg&&6GB8sVhL8wQ3&)JX&_wzom6jIGn3N#KjGH)K|8?|;@%~%jgQI}Y1-1=J3UOgo|fV!zo zf7@F&_s1}qZb25MAaH+Gk?N4iKqY=JL3~^)!T7_#;qv)dfMdSL1kdg=^EBgXhrd^| zAeJDW80o!P@`+5Vn|bcJ+Gbi3Ev&&v~#DPhsM%V?{n~e^}jA113fF`OjPGGV-gFGQ4<)(voKo*zk7Yi{!^?u3 zYU?&9?bG(pZ9g9?z89j@pX5oCkl8%P-2+VjN5K2XEBh?+N!ebY^|Lp3dOvpF`WT%H zuYK z!9y60Ci!9+S8@QoF9P`RvuKj%@6+VxxER!*mew=qWRgS(v8)O}llAf}sg`kRS2(YK zs%12pr%6^>&+{_M;zeRT1CZA5RWS!-MM+WQ-WSWbD3fTF{j$odq@_SHPcob>Uy&mD zWtEhb`-*B>4?isC0-oqkUm|vzUuN?>o+ia;wzIGi3@C|^BoHQpE0RTi0YI`zakZ?H zX|zbDX>5R7Rq4F6p}c$*Jw14~|MvNRF~f+@66iS2zyu)hGrN`X>I_OCh!PqoOQ<16 zGf(0SW@Rzgqf6(|jUqWqK19{kQWTsfK-r5lgRXw4+(*kIukuMQU=Tv0Dv#WGJor!* z@ubR&13iTaKa1iDx<6i3lE7x^2f}f@SSCdYR4<rzj!X6 zq_Y%i1748p*bk8@log;>JYHgd5xXJr3@9jqr^S_cTFigW(@gy!V%FXG0MmUQCG%vV z);B+@6i)f~WeWdfC6f6UUrgq}C4$3jmMa43<>Q}|N!8z_IvX1s__kOOmNgj#RCDwN z6*5aCvP2ogMG{o!2^URD_#Rh-;4HmJvLFuLzIi^7r3IB}DDgO7RaE(ZBAq6A(1RA~ zTiK_lP#Ko*49GL6@= z6eU7VY@lUO!r+oAJcU6_f$-sRTwDd0=jr4e-$TtzkRA+s3LT`@{sJRfjgzO(8L0Xh zzzUuu0zsZ(Ec3EV$MdUyKr%Pr^=9`OI?^QWJyo)Ru`KfJObKG`ez^p`_E@!2JA3ScHGF3KwX>VGI<`NZrqq%7{Av)S z758P5XH^VDlB6^Tallhr2GA0a3k?RAaR5wFbWIdc&F%;D6ac{#SR;jEK@tPLxO@;_ z#OXX9W6uQF{37swd}vR*gmqaV&5VKD1i!3ekeaTQt~2NqvORAR>*GL|m3bKe(kH+h;pKWjvm!o2jtT3O zcK@LFbpPmwL2wRxS8zTp`wiU%#wCCJl+NdXPiS*KSs;*)Q3zzIKTIBXER@}%8mYLJ%}gH zaCGxgI)x>hPOEc3QIejWR~^71Ul7$ZAS^*s27>%B?&vlVL*+Ti@}G&A2r&^6CU6~Y zY=6@QBge^qo-L?C(Whs9= zE3p4qtEn;nP`SYlL)Glas;?inQ2iZZ?Inoc0dxOswHQMcfHA&8iC)nk31-uaIGZ%} zLqdvw;w8vl9{_c*OP3&+Bf@ZZt?KX_KrQF-RZ`%d6&(HaEO<>niSzeXDElF_qFOAc ztHrW`#oP(x5l)Ou{X}^gRt4`a3LH__1Q*bH_8>*ZK>(sqQVelh?7*uxP*nh88T~Es z3mjgT{CA=LCL4nepz!2{HRuGEfk=CiFvB8$b;L9-&!aM-Ex6oh z0L}xVOx6c^{(uB0@jEO7JQA&kCS+S6u_f>^sM%NZQY3R46bM!8;h=zzy;?WW(iHym zL*#EYiKWAQT7wqyr&mVJf=!IWtw@qR&nM99DC7~5r9C8eUE0HRp%5>-=%A0S)Z{s89YEH0)n)KXFnAH#`@lpWUVaGThcJVN*ASck2M<9v}XK_-B+V7~(g z9^S)QDi_cX-eLpl8Eh_@Y@tJ!zJ*S0ZEfMv@jO*0Y&yFjTf}~KTTlTW1$Z2PfOD-i zVI?BS(Bq`4lA?(u=5cnmLNO-@p3ASKP!5vO*$60A>@G<*e0$Wmp-3o^L1DomD_~H5 zpj9uy<8lF7C6!M%h5?KF@%ob6TPU-nxTG&}rK!M|`pJ z|D!CWJHSd-#l)sJ3tueR!PGOxxOj)v)RVZa;`cCZ=WuYMVWoKiPdl*X|5Xq~;^29L zwi}Xu49zMsQGHVW;rRGnqY9d3vgq95$bBOPizki zEoCKEZ3p=gCl$Bu^g}Xd#W+GMVe*PD0y!UzcjXzJdl#3y_co0t%h58mf`b+vD`-8# zMCZ_RYJ9a6hD<0UbjlqR4upP~*f+;7UiZ}jV-$Rs=V;FoxV{t6CxJg$wWaQ4R68L%WcqySwY#g+}nMO<3Oz&EB`dq}m1SbIpdSucMM z>@tJS3oW@{MLuACr)>qmV-LJ*7T7^RO{bP<%7*nmh~LMuT`BY&K5c`8@_yTUy$#ev zVQ9?SE@9diAceGlK_l+aO{Nw#n2%hmiq_wGP!w$ZMxFTd;Wq*LQ-|F`e5MJY13Bun zwFB*k2SpfSxjkEf*o`Y0HvnlWQCl_A$L_pE^oXV3BxQq7f2>VWwV+pOcvux z^K=4iOdFG)^KY)FE5X(;N={*^s@jtxL4%5_jqFD}^Dq#9I29&%u0#9rt|*P)gWg}@ z^Ww$Rr+tt$lgw!MGA?DcskD6w3$xatZl9Mt)0~*5|!iW@WF;S*EBzQbO zb-U)@$Y2jf_Lh8D0)A3FA(RO)d)L~cI%rQ-Bbh>0oW<>R(W$Gfbj!LfzwuOw*+vsF%w1)(;oo%Dz&Rrv zusW)Q84=2V*e4Uft3-leK)g$k)v@vnL%dOcwRB(P8#$X=l#*}6Dx}p$tEd33U+9Cl z6s;N-vphHkJye0A*vU&VK#wE@hOTc)Z0@(NQ1;G2MW|yV&n!a{^;@{|tOpmNxHlwh zgFJVAC|v!CDBms-;#kenur|lPmF0Gb5b8U42M9|z)MV6u zfjVwTQ-QOYqVTYsUop$;aFWH(Q9>>#8%3T2{3=&RYI&kYB^>aMZqQVpnB(R}dZrJX z+#_6a^K_BQ)8qabc{Gv65w~IIG-dOx-c=G8!Vg5OIdyE5ZYZK{v59jbvPiP_0A61) z3m#5E`1GS)SWIGER9FKQ(8K}ADog%c_jc6A$sb`c9Sj+$b z<7YXYi5M%I0jM`h$03i}&^^?U4%iFn1KO(n+uF&-5&68L?eDv!n5WssDT|l!S!o{o zb+h;ekYA=}nRc5Kb3)qPla2B+fkQCDT;@wO>!cF_HZ5U_FSM9_T;O5%Sv)6y)n-8& z{-C$F%E(CE9|b?1C#2yrv~G<=hmc7-6fYPfXQ)LXAH%W&RwOKQ=?6Hm&Usff$PZRs zQIX>(_wE?J85^Y`1;Sb?^684HQV;~yMxyjn%`%ygW2uz+w00$%8f{*;Rj7S~HYevG zFTmba-&1~<xmHpQa23&u#>AW9@jcnNwh-WVDQUp@^&i|R<=JI~1U z!8^TkL>njb93_w{C*2Fk(q|~BnHVRvYeFa%`X}*1t%sN5@MGzoWNlwt){I81rrtFq zi*@xKK5B!LUYLi|?x5sN4}sJ+eOw2mrqsD)nU)9=I)SL=<(e>&!lF2TE8+#CZJAFe zaajrEauGupX(E+hQY8gJw<}w85naLwT#MEkP3r zc?d@o-t~^zf;S4@W~6OgNDoufds`S@y-U+D3=67&4J5C4N?-${=W177Rkmc(o8~gNhm(yfvxxa-_>?N_9}g4NBBx+yZw1&TJDek{F_P@YYCTXsFbm zt>%V*a4=bwaPUO|H2Hvcs94T;I7-vB!QRzK%zzfy>-50)>36Sx?0d!z2kgRhFaI8Y z`-?Ja8_>yE(Ia%(0lg>pdm(ukF8y4$$7b`V$pZcGH&EFnBpCd8w4A3EetAN7lh_9Y zkW@|jW&?WY&ka`@ehTPXEp(@7$Hb$5Z_{}!WJs^cepSb@ZL-`4zWsA zEuJp0<-fpR)`c1>T1J(vqNUov4biZwT@wsDJ{!r+tc)=W#3@W{|;^2L9g)$jQ zg8EvBR45JziFnIXTy}uxui>OMMXDose09mu9-?cp1_VP%r=~JdI`0Unb|MEvYuLKk zA%|50`^Z>DB}BdfI-V$F!3Gf1%V-IDWs;!#$3@b2 zkV*)Q*u&d@V}u4g#)L}?&GcHCPxZYTAdE}v3};LbY>Di+lm)25i4oDqKdPOWpdE@! zE`$V>qj=6}0%@O)6}H66V@E^e3pjo#SBhl-p3@aR(FRO;^W&s4S^T zTrHD|RN-`FDdq?Iausxym{qWgc9&`C39%-|Bi!@u6lDnkj3%+r9Ak3%Cuf@@RqaU#ImF}>B1O)AR zLytTp%}h?Mg++WNr}WCy;OSdn`5c{skY7}6W_DY#s7f7)L@zB#i?scSPbrWa@ZxiE zs`gKRe*}ZgN~xiu-e5PW>w0;a3mTUg%@rBIS!3X6of7HmVc*IyZvK(>6OEPVluAx5 zq;bkvP6V{)la$ovYMm>LsUz~S&~Axci&#A_OXx=eD9f)(wG7Z>12#VH-#KZNHJM9W zOo~tC%@p9|RgBgQHuFy}Z9_ho_I{+jgqs=xe7kSjb#UxFN6D9{anA;dxS;DpBdK@L*HHyakG?;66@B-Y*ZW6DnmZHW>jg=F zS|g-sc7}o{APC^5BZRly(jJbl@S-OS1dgy-S}sb#%TQ2G(U?;h>_pH&zB)TcH|a}q z*b~r|jkBo<^w~u*O6c!bWaFZ39o8z&v!Fbv9&wdOlp2A&^#N9MiaTOF?;E&y^6Kr& z<2Q!~E;&uZxRtfDb7>YnjcjPT4*>m*Mt2h68`0{&WdbC()5iDYTT;%V6fukHA z$cw}pJC||642w-{*unCBx@5)-s1h>S#>U1MYNbxEf<1=Lk92?qc>YpyzUV^)Z3BFu zK>QW~RP(j5!Uuif*i6a&60XD3nJnvQ3O)bd^QMlZ}zaRVM2mIJOLrUDppK< zZ<0v@%)MlxMsRl{S_BSS)n7-Xooi0I8hNW;K${k$AS5lS>sWUG?tjadh#tVl*8=tj?etsRjV zx%Jv3>R=D&N3sthfaZyfs791deKY${9MJ-bwGBrV#JwIP*VJ&KLW}ekqq8DkEqh@) z4f}0WeVG^UL5{^v+4TH>J$d^JDS(JYE`DoGn$sZOYp!6(8MyB31`gFraRx6d6jOs9 z+INx47HFKiLXUxt{F!v&lBG|)S%jRy5y z<74eMYs3X0ejz4_h1V$?ZY^N7eOd}E!7P4nItu)G_)IcT{AT)pbdQ345ot+DICOqf z5{`U2mxq2rd5IWH=(vYGF_th6Ukl}oa>{|C5=2^RR~I9Q2%+hr_g3o|g?ct=;kznDwJop`A!q0i3Q185=~Axm}dSLz`}m9>J-SWEPUB z7jedJVCWNsvMNn~gA(Y%k|j?xa?|x+L3Vmd?6VWD2-ofS9H)vkkolPI08hmr6co`O z0O_ODG+iai3?{D;6{I#Fd8yr6iuG;VVW>n;RK_H0+p6nqcgs2Fs}nv&^RO0wGt>sT5@raNT>_-+!0}MB z7N~8VEa0z)2((bs&2z$h}lej^+ouWOi0W(T9mIjWL-x}rN;vsxW! zi})uaUX8dVczChXGojU;n^9J4!^A~WjPo)Hg&RYIhg1zjl}B)ZPm-+XEsvk@WSWdu zXQ#p2l8ixrOeVqYGU(kd`yK)rg^jRo2fZe=3@mhxR!flNdVMJ<;8rH}0K9kAq+Jni zs$@4vGd`3d_ogH#nT`gfwU0ylHs(mmz&ZsU&3gAdh^^JJu-&+8%TG!{;m~7e&)n_h zXe}|zsyFM%s=SSzgpsFWc&a*4f9VA(ge?WPRw(&@FiDn`C-@suj%V3eLjyVZYMew! zbI^eZW)hkKeD_dvZC=mvgKCL1Tlr11MVuOkHPKBw^qmdaTcI8=adeo;!}=RkOxA}< zfSjg!;XcNaMA?@E^Wh;Y$S0E(sy#;`I=DCrJJkEvm!t6Q?Sq@zTr;SE)ot7x&O)Y6&hAI3U=bB}`cQ|z0BtPz$hFX9Fw{)OTkz0{PJ z-s%bIMV$uM?7h^aF{3wY&Z`YzGgw_2urIHZu~1x9@;GA!sFXVHDnf}MQhd#)FVLzA z)}x?-Es9QdhxbmUx%#iC&DnyP1KB9^&n-xWEF2u4%e0dgsg)t1< z@=&ksUof)3UJ$;`NY{eqOMwe{HzBkmenOo^d4^St)gb^4d@-f*WxqxS#G*XI@kylI zCv|x8UqhfH;YP@6kjnV|r4!gIn8M_rLDS0DDGo zacs7~mg!j!Mr0Vr71IlEh5eJQQ`0hagsMGshbV)|c`|vwPU))5o3r$6RZxgy1Dd`O zr2NcjL zeFL0pK@XIr{-=c1!BeagbTA&~%p-E|O+-?(hMBmCJE}(PcBK#JeqE7z$==84a!O6RDv`71s2?dQ3#yWD1gTJDgZ#TJANXBuw{dsgV;ZF(r zDwheBG&z9D>PCqbY#9Nuqs!Q|%f~KzWRU!3$j($S` ziP9Ox+LfFFF9%0Vu$=s(el7qq7M03kvbO=Wy8(o|q1RD=opcofEX_G=_n``vv{$!S z!A#h_tWyhO>@J`z_z{GJ3bi{kc{O|rOD&y~0BJ*6ucIV!ut5)so0FgpdF2+cERCu# zEABK|RAS7%Z|dvFz78=QX45nVN(4mbMR}esM?qbu6}~Oet?|d#FU7U64_7iCSC6zA z!y!HFW0SytA}Vy|#;hbkT8$j;Ky63d_3Hq0K#aeT&*u5|qi>gwdZRm!``>OZA9!C?ry?C76-Q4sIVpBM>GBF4_}z_}@BfACr4d?W-zHV!=D0zYpS20g$~c;yMQq#;Qv+g8xeG>=ziYp6 z6me=mjp7im{+mj3^&>)q@dTsaMd%V((1pM%i4aQJV3zh;PB8{^?HGs}+}UbAM}3Q9 zM->X0ed+P)vD`I*t!pg}<=;~n3We4eM^ji`AxuNfe;$iN2FRR2ZZv+l!&%FEHU?XT zxE8ZKg%j+I{>vi$kA!l{O2w+AsHSJFAsPlh2aHgqe()%`x3lFrWg@sJig2n#+P=|Z z`haVV#MB76wcm%u{b8D(p&qfW_L04#zbCuUTri{_ocB)=y2Gh2Rjw~t2MUEFoIsnQ z8pUd9f5LhuoPl9Eb9OEKxCDC?UwG(M0&{(heqt|6DLcH_|8w+u|M-W1VxO@12mk$) zW>Zvj;8imRfY=Nc~HS zZ|AGt#ok3Z`uahC6qm~n9_Jb};b5=_)0$Obe|^H^afw5uK<9fwUXCc%JUqp}J^$zp zYBH)5O+EO=?@nM$TKEn=kKesR>>AZ=E>3ZfP>-x9GrSy!r0E5j%@bn`pN?n&JFG(= zuWE}|s}bxYpkOwV(L>upYzk|N?B{v@ezo+h;5D$t8nQsE`oep|KJ!Ttr*>QvFIrTq zf4`4Tl?>^7+XK2N2I$^<@H^>QD-N9)OQDLSFS`6KLtdJO-W5x0?sWk+Q?Cf)TUx3( zr(|uSj$i%c<>>`U5B6^1YN|h5wR8hbS{)6R)!m@Xo4D54h=kL`wr}C<5|8$RmQXS* ze%IZH7^~$xNtQi9OB#9BZjH0xpEN=He}y5-)%7jvkQI@ls`No7+bFKBs%ac|lU_xB1hi@ZFhdVmp zJKx8~cXOR$R#UNjo7Rzi6uaJP+T%6lmDfLKeF4!KJ#VEwUC!mmJX}tPibQ19f7aE^ zG1g|-eP9pOz=3%R)J-zoc5KU~Cfmu(Exy|@oM5k3w5Q*$wL%t_wzXa)t^&Hz)ao^_g3yFU;fus{?bRy_ z^ZeeBXL*>`zZ|`KsqQ&9YwX*&e_BTnev)h|{kvFt5mo;|IaE)X%E-CW8cHk6vMx?~ zm=%$aRnY)_J$BX3q6|9i+QR2BDSNJKT*`R8o=sul5fVx1uP0d1k7%DhxEcGQMe`qs z|2QRiUa3(z09R9(P5}xIKlJ&gQLh*^UM#HhM6t#bp4=`^gWILhkWgLWe|I?Geo$Y{ z@o24p8j39%y)G~#7or2b4XCJ8kC6?KLX; znocSIJ098{X^v8mr1kva7=x$QJ;#kt&=d_$L%?1d?bSNha1K?XzORE)`>xWRtm~S& zVM(7WgJ|l#!V?@w{j*ezf5PhnOnr%~Dp@Q^7bGfReB0I@J>hbs8ah*ldZTrWDA}z^ zC<(}JZS8q}cE)oOw)!CuW8kJE8CwUyzZXMRsPDN7(q~NWGTVJ<~6a^K&PlP%O;0bc~wAiuyNyax%R0r(_M}d~m$BJU^mm)m_ zu2OocV`K=&^<-*$f5RQWdirV?dSR5*ftb`iT+<63nT!G;dW~tD_k!O-GO>iPHNe;! zB}#g^i$r-D`?&# z1AwtfihP9BFcxN9D^_bqo{Qve_z04dXzYh)x@C;`V-P6 z=Gl#8B26-ha5KF{pRYAjXad^y7kzBjmQu*+0qwkEFg2enYDNu5wCxJ-4i1d(HB{I? zTiJ@+s)*0l8Q4rIuYH4!s45?7K|~hT>?f~F9=T2)q(i! z8eUjtDxpS*e?}o2uJNMF>ara^cvUTNqb{<6@&#rig>v3_6+Jz8w*U6|v8|<>&EvCj zZwpo#dZ&4&S$%(<6e5lwH5+grWMEGYpC;R0kq@nkI7prZ;*zd{Cpuh;fl5Y84m-T8 z$PX90rCnMNb@4ReEASMnG=}Vmi;@Cua&hp}fBu`77*Pnjp&-4%LA=bXXJ{@H zUjCeA1DmC=6{I8QOZiv2dl*d^aoZSl!0?_{lhPxp-t?Uop<1RqiR=mKdZ*>%pDl;R z+8opDwK+s0pIRcH5>-83I<-a`!5d@5T7Dh-xJcsnUzqqjm??2>U8ht6?ep z16v9?e`eJcxRvPjwVw(j3Q+4|%CoyF~vzb{Z)%S?B)I=W%A%O3Ae=I-6)_$&ZxKt1}`xw9n~ zkOZz+hF9$%O4}ejdH`O9_2t$xv~%L%C(fCXe{JEd4{62*@R)vPW!e<2LA4J@ z*$=7vqVukq%&$?$G@*pVUV%SN#rOiT&Q&uK)5Le}1l|YaC z<^{cdtqjDtkt!~mrAjjuX-xEFQ!+<-N|7~*Iwk+EVi~ee==`Ym-%qUaS<+(LdUyCn{>El?HYCMXo$9|3pHiI z5SG?^N&S>EPsXgXLb#WUa&vi(<`U|SzNtuoW-?6Q`ZES-UzG{_SYi4$q?kFaBYS~& zS}oRY{W+_|0(7Ir(MZ)eON{8Sg`%ZUU86~(`l-j$jy4ZyhN3`*l;h(ze+z*avAGOR zSWR=vhAWD7AT_x^B=aQ(Fj-~9Buf#zUD;J$!D0COB3_rNUi2AhS@-)jk<^S&ZEt zS3E*};qdY8QvMCyc{{NsJqh4;&@;w2FtFz&q%mvgLIV>!Mvc?f8==@?DfZiwCuQ$2 z1T3fJhdvF?i>uz_JsK?FKE=)fppVwHd`zbw(erOeDMetCPGEjde;@bZbiQ4eQSrmb zQxrqx`@P4nzZH)j;bo?G_n>ot1!s1?uxL{pZDd#Ekqv$hC=V$gZ-n;q&Ykyhapr`z zqPx(BT8FCkI4=oZ$#+#ZSOVzb1pit$9ckC{aw4g@(94b`MFe5W-g>cN1NymE^*{w1 zw5~FO^_^r>p#?YBf34}eM3|iVkA}LAi9C6fg?V`T>UjV8bB#!I^b&GsRxGziaiGOx zZchO5PqNDME@qj#Sf5nO*Th33A*G2AC4f-pkLOF2e2Nz-Ce=`VJu-B=pW7!>e=Nat z?+7WcKer346n6o5+hff&npVs@}igFtDxOZF;wh zO*r>$ur-(R)-%8Rp2%9S@-o-ftDe4bxcAfNtni%mVY5>T2HP)bXM z`0%d0OZ2qCdCxcCcZ2vITtLiyzh-_BIp^CI-1vF3e|-4z`{;Q8yXTlv z;5VyAe^|yd_Q83dPSHTSWn(?$fa>Vx@U`=1dnce&+VE<7$9cDiF*gdn`O0~t-D2?V zH~Q@-ckax7)2WL`Jeud16e7}?+F86v=U36JNI?*SFP&$%oSY|%nAQP>!+b>v=d}D~ z!)=}{dyHxMj4D18_0;;cuid*d>a_ORQ@ib%f6fYaWY6O*oD6q@XSgLeFV@eJGYa2y zRhKE+BGmo{%=U&nQb5{e5E9RgT4wtrYX_6Km<9qwziyHz58V0G+Pt+7vGffibFV&d zxVxwT;upZ}nFh{U_P=GZkWNelS)7*QB?g=)t-)NGipK-8TDU^8jLUB7W*cxo)tg3tBEA~Be?%h| zzc{mTD%GBAkrZLkl9TXHW`#dw!sIH1ytjD1@#nLt)LArg)Ly)K?j6N+#i82)7L%WRpt>Uq z`1=AZ2j+UQq`{EEEK<)T2p0OEe*(_^K+u#`roSRGXHc>tUwK$sJ$oXKu!z4G;{rWY zvs%q@S{04WUZ&IP++UAhd25{~n3}|2O}z8gyGWBuz7XuMO94&zqQMg?vZx7-o>&K{DwVNmBota%UaP&u53P{9xRKd!fB&$jfj3y* zJq*QYOm_`N-V2X^Jm3_-7$87?ZOGKnzV6i|iJZdMUDa-Vk-*zO(V`3|_HGCF`OE@8 zpZvOPjCva7Gu-Zhi1cjZ^H;MYdg_^U!lvU;XaW+vURYhtHx@C;DHQF%4C-%BP-~E0 zBp5zK_QOA|)ERPPc3TYiDV;#b!~AA3am z(1&jt&`0eM`s6noecX@r=%aFoH;c@CT@cHl29ccY4EBLR3^C&@?vkIgD9t^F_b6CE zUq9U1R*L`tyk3n#UO7*u?JKHn)5aU6X!ZTvH5v1uzssjr*IAPufApDRj30#!GLpA! zW2PEbd@JG>3T!V2)?`biOlqYEHj#eD80d#5UJ`lo%3tyf27T!D-h;5r+EM%#2q&Ns zVpO=OUf3?G1g60Nd7e(E3A#xvS5?__&h+?GxF@g1y(0Yf55r;a@ow+&AMjg$)W0(v zKBCBNQun25nqX~7f1H!-!E;Ikm5gR-HjU?V)>HO--_koeO+V^~H8lf%FnKBQD1lF% z4Y)^@YvGSLnlikp&x@BvTOkA=pUF@HM8dckwIMbxz)L)+j5^ ztnVU<{I57eINu{sS1vKcFb8|Hs?hb&(P)J^qXNJaf8OC$_{H1VKF%bD#-|q?E1k{> zFW%8%K^&b0xCbw=+NnVYq77p&bE&c2Hb^umZc*TSzmF|cK+6(WABMFEKI@jA%SFOXP-V5^?h*{e~$@#2XEbF21RAw$eJ zbn+yef9=e0JDKe)!qZ(OyqAEVtE9pd+(<)-KMSYP)DYSlJ#a^tSNSBLn`7fAyya;6 zkz&r&YPk(O5STf)yTY zLPATtnx;8jOK(Fv;NpQ7@vRpE7(g_ma6`-$f0|AcuiiX8c!TP^Fplv8LAY4nr$0L} z{<%!X3;dg(ozb7=3b5jlf}7m(HFyOHL1>7gIoUY0>H+_uiq?=~W2#L;b5w&s{Th)K zx+mF?N4j?do?NSqp&eq*k0ebev7b(OfArD`er#IV`6toJY<|I$x1)&U^QgiASO?TN zf4Tp@)4Fa#@zXH%TQ)P09`r3My?){pWHFDkvlRyRFqyeQHVy9$kwa`TjV=7Lisxx{ zWkEHbT?10Z63xu{eGLdot89WXA6^62h0~jwytNjBR1F(I^rLIQ5t?ZOjC#@qio13B zf~Qxl?`?5()-0Yj_Q6N!&9k^H?Fr=He>b3mC|+Vt11~uk@2&xv17kIGrJhX8*-G)<}Cngd0%y*m;4^MXKz(ILQ>O5;6 zFUHdtLo1(qC4pa^1ta`A~~P6Btv6O5Kp>7^Pp1;_1{l zJ-H?AK8;}gpbPh`MsZ94c4>p$tQl7!8BMb{&m_--8LrTdwxVt5^&lz)kZfMb9-F|7 zBh0M;bGT*srSOe_uNkFu>mBvcf2|tRuwBMiluFGG*@5^(*k&#yX<_4&gzsfZZ~caJ zD@buoQfbUeW@0ORg6kKL;WTjYmWQ8O*$w%59W;+W1fXn|exTsS@nQ*#E(R?1bXbQqU`=1If5rXP*Pf`HaxnFH zxV0$OP2;xW2g8_EK}UY`#R_gIE|QhXw`I+{aDXPh5gr1{G#MvZ8CTl@J4j>FGF8!m ziitS_xp|$zqFs&2jl4L!zj*~juo@@B>3lPV4Kyh?AKu%3aErd;tF4`T zJ3IE;{OoAn_`xM6e2+9mw~Ra6n(Tr}oS`VjDML6l26;mNXxu)3avsm;NyZs7_TR^gIOQAP z`_mj2$o?Gn2dx#0sYJBAK#nTVM+Vtm_?wXMG8B-ZE-eJWf86HwXzSDRVt8+~W#8@6 zuw2_s_(!s4r~)JO)N-zDwv1%YsW~d)lmRlpA324w2}T5kYk(x@hoV|}Z1kQ5PuhE-(W^X>LNB2BEx)r=( zo7gH-28!V6f14MibRj=DZja4j&_+C$h%{gnC^=HhgX^)~uOEDMzdvfgwK#~vVlS?i z=#WRRdq$z|h!x~uo#iZqqj@yqGZ{vSkUx8}fWf`Td0qka#Y-8L@dIW#iW1J0(Zq;P z+9^c=Jp`Dj3T~Z6yR>tkE>v&HnWUC@QWa*)j2o+Ie*r?0^rhsH;X=LPun?F`3D{1T zvS4j67^Sc+-zsjVs>{ft)Gte7Ck0+jYF8*=i-T=PuH&t2V1Wj{;3217KS4E)*{_USPSE8P%a<3rlCR@q0ER0qUjJPo?={=N#(p`k&*-l5K0|zc#Xe6rUsoL!Jr%kbXN_|D#XyXw?{i1GEqF( z!I+uPc3x0d-5tx}4UI=Zo)+deUgP<#;7{k!e`Qt~R7E~rO%gJL!(zdk-c|=6Hg-vL ztG=&@jm2;IF?;7HAn2Ok*-lq&9DAo0?Ca)61Def45kK%opFvZq4176@?XH=_X;zpu z7h$!Tw-L6h_v+gZ01P+9+B3T=1tkD@vOC;{wS`F(H!;VQXYL~G8Ple9uvJBY0_ ze;J(AX!RASfhkiE2XqDj56m(}GoN5$GE5kz#8dEkly4XLG_z#Y16jfY6<6sro#8T_ zCw$DTFkn$UPSF-eS)E~#&XofXvMWs8t1?)7fQn9%5*Y@pRZz9EFyfjcjyVGjR|zWi zXxUjbtR>@=qYmFbr9}^Wq;FZ6#SHMaIZ4wWI((WWe2boiQy?ud^sd2A&X z=WwUWjL}eaF^ce3tNd2?1b%8Wy#|U&2hC}Z*8njUx+q2Lx$&gCBoDSVC3VDD@2P9} z4@v%}i3Mv~DY=~NNMcyxe=k+n+2)kxWet=@`^4J(yryQA206_qWOO}uGV)3c1eEdq z9JgastkpxenwE{`%}KXqvj<#rE-BeR?U6T#&$S(j$N>MT8!(#Ifv0!tiSPGV1@;>7 z5-?uZxOMR7&{a#`NH6` z+I7y|D_4h7BqNgMdqwzHIz~Unb2QMF$0I;HY|xZoej+|PE9|e#NZ_dLmd*^Ojb?kK zbkO0lt0j-uAZH zzn@epEj)i1L1ZO{e@V$jXNg6O+1pg^n=&}r9t1n1`=cF0hk7eWN6E-2L?Ko9J}Atw z4%W@bE4(ioykh^4oP0%)sTt7tbX0Hi{;3u81qmdfJmhI9)CBqL>q8 z)SdvAba%9Ep)^CtJj;t}mBA5ael>70fz~zbMiQ4PUW$T8e}KUi-Lw^`!?p})s;0Un zwWJHNt9e|AY!Hkn(nO4c{Sq~9YU~p2CZ3!w5s(*ekB)Io^sp;0C&|mjnt~A zbG1QWjGs%qe+FjGAm*Yd#O1R|<$|VknWPN@iUVkvlky86JF-VnXG%6)6}g&7%*&n{ zL#6m-H!5HXh;j>PlJIL%9=$Upy|(Q~l9J2wqLCw1i!@)5eC-c!PnJxfhtOlHAFi`GguDsgpD*8|LIVfN&w;Y24N zHn?vHKA^>up4Oo^)NoY*jVy#p%S$O(QqRZp{g>ar-T(f;=bBB`TKEdRzXop+i$*oFHzi_e@egQf3#tq;5ey>A&s#q5}%gt5=Em0Jhv>Nx7@kk z_3dhPDaJ2^)P)aHhBvkP;^67wzPCYJDC!KB@r9Eo-jNqt$Dkqp8=>qoVh54)a#=4y z@Beu42KJQUcl$4&{&e{C_y_7?_xeUXbeE6k$=>$X)|O`zZkG;l!(g$X%@$$ofAh*O z)GcXqF3+}5t8pv%4#YP0p2=sV_z+M^)2f_bpa%#V`{*FEi1E&e2bdn|Dg)k+k$Uim zJPM9-;9Fq{Op7AeR(bF~NtP;mQ!A(x4!)DBZtD}Q0Q=k#aVCCjel2cE+@8{<5^~C! zX)_m@6UD~kF}66)5r%MNQu;qle>iJ5vQWY6$z(0o5_-Q*_`*w^ZmdV|ihA}2`05aj zu?LNjwEmfroHh$I?TK#=j$S=~OQ&wHlY@rP;LPJ@zQve7ufL`B_~_mAZvW)NpHJ}# z+nVT6I55CA#u{nPj*B0VI@!!6BIostw5)y?Ij6QTg88cZUF7g{D|pK>e?x;Kss9UJ z&*KW|y1uAf)Ofp7uy^9<&g0(W-P`w{e%$N#5J~WB$PvoiH~q($I;HWVV=L-nSOOIN zXU|TEyRNWJ`t*W!ih=XyLcQ_xvkuYoE@-V@wD}p(nm?v=B?2*Eg zYpV!@eX*UQ2*GI5?mr%Im%?=@J79@ z9LnVs;De-@LP#pPjZVXF)wRT1%*S>&Cqh@L3At3-Rku&L%nB6EJ{&u_k#3|o; zYB+;n(yw`#0Y2?Dw5Gl(sM!-fbE-n)3U4Z>f`~SE~}R`f_6i{g<@N^0&o2I)--HPuYq{| zwQ*9746xUn(cfk2`W>gGo(-V^g}r8MtwoH}^G--vN7Yt0o9`O?nz5WxN( zE*TqTZ?;Sff7cEN6>Bl;4F6`!!*vt?=d2I~Z8fGq)86*gOF?L!2F#0Pq9Xt)FGqSe zK$m*xDcyD;RgUa?-@5%tEx8wCj1boDD^ArAO*s~U^=d{JG^&_9uAwn?OOi*ZHpg(Z zi7`ef!&qnxuOY=A7PGFaaPVKNs7L_eD=jnGd6mM{e}vF6ih|uk9g|-(p-;9Mlr`oRR5DiDX*A(PRuYT#$z=BQwYFzYr!@+E;u(ZJ{W75kbVVG~ zs40UwReBL}S8_Z=NmoTFOU;1MUKdcKR9Q@Fg?yPhj4J+Y9sW!mMm0~ij!%495zBNS z^G%tLf7PII3Wwv2rXG2~hbg~Pql#G1^u-1;UpYH2z46OMxSnE+U$1|;?W(E8#?=q6 z3v8(@!0vm+?4X4D?stjxvvsv^H0_9M!e#gW`djbhub)ou_8)&jFkglYZUkp!SZAsw z|J7c%V|4*`-KL>KD>R6*MYULBb$8#R%es3CfBL^08y-up%C~8uRe2XrK0`a|cl6w4 zk>ffC5#1iwUr^+J&jxLrdI%SkBgcx&O5uI#k4Z_bAM4$>n7EM%gfq^%^(>=|nd|xP z+FEo1wre@FHBDCwGW%gaoTy&KM0lF476!}kZAMrW)g1*L3~`hlH#01%EFQ(g2`?aKO5hGoA0PQLc(EM=%g&!uVwg#&Xsu(6^@{bT`by5TMBUGHMI ztmRi$lS#puCwk`06kmKaOHnv$cQzv51xcD2s~~AClES4A@t84%>#Y_pT6C8pOD~q8 zHcKakWrC%*KEEiv4)5*-^-#5I?+oEbe{Ait;U;SgCMw3&ghh*ni(uwGpeB=&X&=M> z4~6N@7z=VNd56`!VJ{vw8JO7GB?>h)Z=^62UmHrUxlKf6*4`-cXynm6S=&_n3OzL? zg8S6#^{gVTSMW}T+ov7O5M79Y3U(q0uSG&|zS?3F;UST2&hSs|a=DE5+2jF_e{0Nx z2n)8jwN8fJmi0(i5d;^H)?7O@-J5Fno!4JE6rFOe5z*xqzHlh7IE3f(Ql0ZX@dCvl z(B^GCY%jfrv?hA~N=_IF|+Tr~X2Fz$>0;{t$ zW0s#^^8NE6)f#O#)T>+T4<8QLX! zKIM-B(spCm3|AmpbJbzAGNWQYBb(%V873k<}st z8|Ctqd0PWZSvNHrFAaIcx+bTw`lWZ(y2m2*pzOMM9e{wb^?Hao6mq*cy z{ns@qAVd(7DerD>;!nB}nw6Vdn=VSqZKEg~;zvxOz@0|fe3Qiis$9Qaj~{dcs`E8)MV&^#Y+;c=a4pjOtXYV%yaCtth!eH|GvlN>e>2$|HS>m+J&NYUWasrF zmQBXlug3prG)9HnJWf>BykvrS5A zKAB(b%fJ#6dbv5-didbpS34235Hq%bX+SImRTwd%q4iOa_5oe=q9(AypSW$4J34$RoKDi?IUw=E+6u zxVO+sKq1*a^9}&X4 ze<$)26|h9NS}qc`bsaU1!QH@rAJaF6b~U8=35Ad=yIFBJ*M&Hv(9%av*mf3V&F#Sg&Cv`)9wbAPAQ>oq;nU}SgH6AzZe ziZu?RW|#EAv5ig0QtMFV6zA0KcZOa>Bzbt(oh+W8J1~BwuT%!-lDp0Q@{#xt2MlnIX6-Vw^sD{K34lAaT6sL|e1K)fTX~ zN2#-do4RI~>(ECBaDCzWao(8Nf1BR6uNVK!2#H&C%!sUshX&2J`JgEu^sJ){Vfi)R zQKZ*T6=Sa@IIU}$ml&Ci5==;-wMF`xiq!Iea?O@rashXufH6wsOyC+trqc_C9=NXh#vEq8w-#O|H#(?RejnHt4K#_4z|#CaoEsShIL09`JvnHqTASjjqgF=UtLNO)Y87$hp1Vm zK>zjzk;(j^dzl8dR-$M?ga$$8Avn~^Cu^a!#PpRg)*wUmhy3wdf7-Eh&2)JvuRgbN znRLhiJ%S^;%mgevldy<-ZKVosqcr)k`i;I{o6U4bh|m*bS6x3V4qKpGdVa>nve&dh z-olUY?P#gat{II0h@j>*5Z5R422Xv4Z(Y8VY3M{SW(u%(Rc+qe+P=5By#@b$60GBS zlATf763+ijS>Sxhe;b-RHC9on>|V9tOI2wdY^%>Aer&(8+vQN)hnE(R8WHs6>Pe?O zvRa8X$x+yZ?6<1a3cHb;giWly68qX%UP)?qTBBp~8k<{Y!GAfg2Gwh8ZUO7Lyyt~0 z((YK^0*WwX)SY$^aanZl7j1|~7`FxX+c$hXU6*2qqG5G}e?KeYMbZtf5jmBZ3;J;5 zUlkx1q*&a;SJ@Q*{QBVo{#m4@^oL&`CErbfK}IlMAEwZ-4oFvbO8nIQeC0=l6S86w zwcwIVguV!F^5fL*auV>$F3wTHQP`OuRNesqw9lvmZcl!pn~{S6q%V-sXK7NnNi*F~ zRo_zNiQR(Pf2`}5P^uBYnd6|L#kqoA9Fu zBw`K{z=yYc@3#9$sU98K8pyYA_fG!$<>}o{O}x9;p$!8WIQa0(mW>%dLMc%-&-<<5 zPj$s9hMPL$$oW!@HBa9saEu|flP}w)hF9hkh*zZ&e_$7isZJ9>L3l1>Hd?d*>YjpO z`{CAuW<;O|zN02WM&zf@HG-tADmHY6wY9U}V&e3vi`l1U9NjStJrBf*^TEz(@Fg2g zz6{LV56y7DL{sCJXhogRSq{b%*JQq$V!j19CAma`;WsDzxX9m=PLdhpnxO z5~CEOe+I#t<52^r>89A%lX!cLM1~)uTf15~Tx0fX=ep9#EP9_@DL1z@{8dIj!XdRC z&J;Lt>4Yx0HFpPBilus&n|8x~MCs&NOWd}i+D)e%qr7D$i53Px6v7-h2rTjlk$Tsi zp+)8c1KAkZ&&0jmla{>_Ki;*tqt@a>xfUPTe``^!v^Ah7aTd}VTwyMg*hzG`?x+j< ziNKS({H^gzQ?_nm*PnJh7D;asWMB6z1A7+=tC=J}r{@j5w?*|Pj#4*{)+7+0g?GK( z9Y2kLTwe-`bc!K)CP_N)v2E7T;rD~h+9=m7khU&>_)oBeF>XDd#7}+2?Yh+1h2_eR ze_Z^#YG90#_4}rRa0BKoKcBi4GyP><{I7@b$uwt5uLz`dI6rleDDcxrxt0e+x50EI z$h#dI?YB$&?KV02xh2`@oiEY+Bm@`9=d`>^F+7g~&W$8J89P8f;NYjam0dHTLwQl5 zi}t8YHs8w&Wmg~&WmQnx2HWC$gUE4shPNV zpJXvfz6tbZx*1Em`D(Z`y+0d{x5p2L-^AZc#}B^x zdOV#ao7{@92=Wsfz|5?1YSyy6yI#617S33Fe?K#GrTmu6JBe!J( zMW@}i{*EYHBW~hH-E1xG3$2Z053OI1YQkZS{Z^@UxYOjr+I`Y=O6|aW+B+$|sayER`i0PVgyNMy2wL1)e|DxEYDX#u1lMs`s$lBKiIXBiRs)N!}<%z@lp_K46 zE4bRYtmkI1RdLmhqvQkUcNTXq0Y#bjI)AONIc*v6C)E*X)>VQTf25u(?}}6Oa=V5Z zG5Ih_mQ`>BC;r1KX}eRQ`nj6Vr2*HxDN00C_tFS{`_ymqVXT3b48)Uz!Yc1%tdP}P zhPqZI<4oO}p0vZGdys$*yiI=@7a86H4&P?)v-~m(UL3wS2*?xgHVG|c@>f@(;b^TL zNmK)kv5BM=JuMf`e|=wk;@maIN7uP){yA66>&;uQo3EB19=-U?tK}^aevhl=Ff!|E zxjRYbU2$_-EU-;?#i4@duDEqOUCv|u(zl-o=+d{E4ub}|-{v+ky8brz$%~`m(b4gn z)7{``k>{wr)XB-bspaHpXHibG(ITA`d6~~D))r>NRk=A&f5$~!Ty4%~I}g8ku>JKY zE|(v?y(iD@g}#Y!SUyiLsu6?0-eYn{t)pPsWI5MCmLqe6_&Fa#F zv89;j9xJT6*=f|69r4XPQe2>u6@J!4f1ar@wa8b@F`^HA$g^;Wa<9ABi`+iK&)N)U zMc&y>d3o)0f8pzWnw!FcVYpJ*fOO_qg~GQrSw=S9fJdwE4jNS*A3%{!!L0wXo=Cw8 zf+Wf+1pnI#^d2*3>rKuTSxD)YWC+|gqMtJt*i8uKgCya`x)1X`}aWA3PfBNys zHYp~4da?hyR*Pf;YDG=U5BDDKP!e~jNPqXAJa3Zqf4m#lZJlLJ_9PM6xNy7T_Wavq z<5dXGGfS662^Vs{Wd!Wgez3VobnijT$@XbI(e_W|+lq+!fkRa5i}E9tGtL97I!~^` z0ydKw$cO6Kba@WjO7J57puxfq3Aym)Z(F2gnPLRDGBdKBruR zKx7|8f3!LM;-@ChTyKbO8{!Yb`O^XULt~=JQaEHrBGP#SXvc4}t_h~Hk-g-Vui0-W z-;Gb106v9-pn)<5CdcsHcJ{Q;6qi`-inU6fuCGyrsRQk#`q1bSO)4!of^Kz5mMR#N z*{;iR+z^e_5uHO@^@)@n1NX5LP10$ufkl|(e`FP%wB$QHSV2-ccp^7n{q}}{A0@F% z&)zl)xnFkZxpgaiE#zrS90@u`H^6Q_Bdk43;>l6ZpfG6gZGWqSC*H|ME#s+LJXPDN zRvZIKFgPfRydeZZYrnh~C(Ta_@_QbLLoc16FNi}H{+R|Eh_w3EsnVk7xTYdhTr|)O ze~j$2CqZsjOMZJP6%kh)nDlUn@2TkdxF*81JO#&$hSb8Vt_ zK9F=wH!e>;9yo>=cm3SuEg9xj=0`n~AiVhYwr;_jKPL~l+^_s)oQo{&g+)RLD0C6J z5p1ZbvG>yo1Le>D3Ol5+t~jHY zqBAz*nM%^MMav?+z$+TlxQdauw5a+7-@oS9Pw{PAY6FYtx)C9F;yli>WbR&1e=@rv zOALa0Z5NWlaaxtpGASZzJ86apf^zvfDUP_cA8r7_!`zDXf{P$Kd%<^2NCNQg_7+1gc(e~}Z_xXkBpmL$gpZmWJ-SB$4E3yP@|)qxvjEArlz zzWCKMe>5a7HcEIh5!JG`;%8D7;^0Nm0x3@5>u=?C#z!ZA-8{X!dGgmkp5E>E9`F9~ zU3rJEdhKmI#)A9zyRxhX1#kR9r`Bow@*$GM5afjX2paLlT{%e^MLSQvPanAS*deqs$grL zMN&=i@FgTC9KIdqUIMKleocOyw8Tj7sWdN=_Pa@{xk3IM*)1o5&K_sa@talbh3Z+n zdVPz(en7@*)?Zsv^pIbWe?r%C`nzMRDQIjPvIKvU_oQ1o?=wa@{Y8ULOLrSQ;f3I- zde>Rrve!gS@r&mV0?KWY6iW=6V1O%g*lU8z`CQ&6!%B;wAfe?Pf9T7;19$*iK%~FR z^5BBjfqs8ZCKZK^o#vBrQ&Ht6?iYX#knuKEr}YF2B*ten!k+p$2uzj}HeR2U2^4FU z8p@N?g3>VI#!&Wq-@-0{ed|Bw&F>@OvVZc|N2hl-AN51E5gVTIy5rjRuHagY-@?$P zbioc@<(Glc1au!CCDULGZ+}rOTZwqLX#9H=jvPSySQ-sYiyWo|#4lWZNl}us4fG*c zElG2qo?&XZvmr^^mIJlH75jj>v!c{nwS3LNB!RD&VS?nx0_IH532Pa z8531cvFRZz{w}je>pNI5sZMBIdM-QzJkhUoSaqMbj+N#1H%DmvxX)k z)Dq4qUv|Sh(46lE9@ZIaG%)z4Pae=1tS?H9s1t=0<(%TpQfAiBvF=YB2eQn|supNe z#>$Htvv`x*m?Aq$(B=Uxih$KY*uK0GawZsD@o1+UF5ZfYJp<{#UsWjusaOnX&1UV%^p9R!23$=r7 z=jEn$DTmAhC4ZsRy6XujY$vGE^{$b+C4L_-;?&KcVd&S*W7;`vxTSs6_qykB`pyVt zPYmYAKld=y;+77urjv>)t5Q$JK_I25^2u1jAd-GTPX7;PE%KKBX`fnDIJZ#TbWS(Ziu#)EmSfZstx10&`zK)AL!uID*9@sItj>?B+`LkS zYH~fGPkoo()OMg-G7gfcFIh)gzbev7+eynHC8jM+YX)h}y`(jFNo(#St@i%bX=^TN zOIB<|Pk&cMmIP!@x=8&@Dzzw!G2x4&%WBCAeGP}+%lz`!*kM4fdZBkp%%pJ97A7vH0M-G)p4c+4wk!;6h6v~Umt%K`G))NM))2&^byG9<6=4e zh#5;!TY#B{tQkW4H|oa&ZyKB0S$G%zV^a8t8GqN|pK{sXh2t<1@?#+6P+&{!ApzZQ z&~%9xK+M3Zx654-l#mnr4pfI4!c|*3VRM!A@;PXZq{` zHh*ph_3_!eYkf4=%T0|Vz#B@x!yL6~o*RaM3h>q;2+cHiv1JUlg=u#a*Z=OvcO%IM z)GDi4wn8k@Y4rF(CeXO2Q|9JY<-3gr$-k(VO@~EeI-At;VrtCJ(Fx4xtN#dr+)Upf zGRn8c1J{-G1ucWy7+}QvL0~<@K}Qr;tAF8KJ5A|Sct{&Ynu_=R2^7IF)mlxz$N5Xu%^EU6>hMS`|<58>l34619R}kbk$V|luto) zgU`x#@4dMIRE3Vq&+P5mlcJbCW6#yxUGamCbG7tdC$WkfbI@M8i(>++P9n)4$bYFs zh-NiE1mRTx94IRhPQ)6iy`M{z>3=S*z<7&%{Ig|`_bC5mtM7Vf1o&l@SIMK3cj3k< zNW$;eW81zZd3GQ`7x|xcVqe`)`R>Ge#A6goqi8Wj#zpPRWE!G~> zr5vaJGM?w-&5N%_JEQxXWii?Ox!jDG>E}8W!}4 z9yZ8bl&7o(PiARELF3C)>qej;T*9bB zP(KWCvx?yKKT zkJYUXeov0OkjZL{?*_+FIY*rIe^R@S%hk5Nlck|lD8jxA>nFXa8=XZ3bipx}20!(# z1A$O|$&$-9rfG5(9hGj~J@M0On~}XXtx>@r_6)ny4FRj09)Q2PPpHu*#_(Tr-$=o_ zVPDi7o8}&)3&MCrUVk=87IriO3DI6G1C+L-BAJsil8)A@*Z#4&q2pL{?)4`j>EB); z^+Gg4D7VVcXMLHVgICX7bzI<-H5JAt&nAQ#jZ#ME3I$Ch& z0!Rh7=m&5L-RQr0rsaPHr8S=Kzslsz5&7WuZdsmc1Q&^~|M+=R0g{1EP7@31Q$ z>Bqa#IO%VW&_JQx1%#Hu!-*VbRy(8cR6f`1wk;1(yOd)x~}`%UnrYn+J7 zVJ7b;cQe|b?d)uPalpFyU_kNQ9#}s%<-v_M7X+~8UcqPBjO@Ab7+zcLoqpxMBR4l# zD+qV%Zvoug*3vw*7C--%{*iU!njKtk3i0=_xl1?SjbRS4fuh_L@+a-b55KC9*dRkI zo1us^BY!CpwcGx!Fh7eaE=@ck)BW;3|4Gj9??qmWQ?IjFw+p>O=GA!f7jy1Nv|h`F ze{Z-=dt-l?eB-<^#0NTJaP72gNy&LDctw#?vfL;x=8`>1E4mIr$(QID0exwJBy3!i zk!fRl>+7xM#vs`E>fY8eIC=_SDfH3TTmHC}{(qsaaUL)~D9F8={&s(`^QnKbe0_?} z^zX(WzwF!h_D$@W$D&rtk3jPv5VXx3cOB`mw)1@+dHIqGnmupNB6zJE+D%Q2MTC~d zM%swmM~-^X*0Lu9R>SE&wr!1Q0-en-{P|071xHDOGrc*_v$G1$U&Qb<)8ecIZ;oHQ zet*IF%$Z@0V!w;@tstK%;c7IS$L0B`yqtN%3rQwN2qup;&a-zOP` z?jfIiR$QQ@4{R4I^X_fM#>?_c4AlZPP(v_MU*NgnQ~|P)8O_GySHD2wJ}ftwYxzWpf{cXVho5P*U(5Vcrcb!;Wa>U&`C>!VOn;KnSTp` z0g(eVIf8NldkU8Yb^wZDDTKp?PIS#v*L9`zZ-k2y-L{RulR~%(ZkM~k6N>wV=M_3i z1Q+pql?1m7vUBsOFKS{o;lbn75~l#cHa7O4_3p=Y85;uFkrUL-0wX4{uw0=z8Pkns z%+?n*&DsCo5scYPCwcxpl`DLjV}C|LiE0`cUMO6$T5=)dvtlzXItFBZdm(zhl*wdO zByzTLEW?G5ruP__~5#VQ6_3aF#DeM|hi;@;Jg;5a&jXFO+sAC+2El zbbN4h91ffu=4gtsmtI_!34ah4Qq_4})*u`q*}SVOnQxa^JfJe9&K0GBY4DvsfYBdC z6bmYftok@YQm0jI`bAmFH>@KzpIF*B4$P00{E9aZ8mZqR934K7iYE|` zahxO_dq#haHmbQ0k8>5}gE z0}2OtmpsU^y)sypD}oO1`n1k8!0Zauz*Uh>FsP{;)`5C4As0AYY&OMrqIEH;m5A)C zjPOJf^$Dx!TH3_4)_(ji(*$Gb)%Ye$@8Xf-On!X>1RF)9SZ+e`-w%)WxUH2(2Q@g_qzp0=`EsfkqdEw~OxQ zsYj+1{P<5aIqh>%_9pYvz&&zY>$nV5( z6kzDvKaJ;jMsscEa|4Y0-du=pU={Bp%8iyxKYvP0XnHn$`R98YoAdlE&FG$SuMbCNOte8Hj~|79ZGaA?n{_rp}T)x=0ENzC&qZ_<+G=W3(+E+b(Fe z%F81EaDP=xOyXeDU(3FN>MvtsT6F0o{7W^R4+}n$4H?)e$^JeV?h+DEtaSv^FRY++ z>OEc7q6*H_v2ajWW#sSQ%gYg-m05#~HeFPi7bq_+d*No-7pi6adNPFVi$Yh_J7B6C zf0sVcT@E}|(7{zS`vp-&a6~qmLs&0L0n@X7iGSwhM)Dor4&|zJrv-MIX~2day7`F5 zX?3V5*<^Hlo`BFlA*X#xttR4^2%AfEbg=*C$q&)L9{i>E5e^6+Pqv2NfK>h)-K1o) zI}{EOrHtth7)xPE8+G|W`C|Xi(VKhA{Mylg&J9GR#iO3g;ydYpRtK++XgDc+F zV1M=YqmL)s&_C+r9qey^m#>0AXCIxsE8iXA#aB4e(#EL!*U}4hdLy~OJLg3*qQgy( zw_Cf{oSVktPX=8TNj#UPXF*ofS?|pkZbWi3w-v5uu2`z+)gOA*df{P408Ns)3N~(+ z8|vz;;e9CV344KgS%n`Od_&%#HVe@+n}4@RV0%FruGx|^;geMM2##gZAyc>k3kcxa z;P{n6s%=-tWLg_;vwkKFzTFG9I%-wn^vUQ~S(-$y*W0|D?dj-ca>hOW4_WZ2K91`v zXi+D`2*coTAA;LyAdnUGuJTnN_&YF}+bOLoL7RGAdC)lsGLMlrQ#+JV^qMo5xi|_* zUBXydSk4mPzfUM@%QBh3wv;HW=QA}}wir=uOJ@JQ&x)`aE|a3VQll`Kue0}C*f99m z{|C2iL}x;5pUL@1U0>H(_@fGt*shX#%F~r%J`5>y*_x4i8+f@3}tn;%Ss1>DrnXP$|jF zI1PWj(KHr8@B%t=dSX_F)!J7A+}Ce^K0R}PKYvXQh%ri%NbYZLP9~G4H{-{#-wec% zheny{r?=;CkW0OB2O=J4ug^{{&tJN4j$i(AdUk>oC0WLrqVd^)xQfw~EEr_k;2$%U zEDq_IHAn>gn26Z7Kn7AZ-62af7mVsam{xzm#RnwkBV3X*7|EGPJ$B%A;ac%bONr=^ z6~cWn2?IfWcf$Jk!mJ3;G=;eus*MIQUS(W>do7e8uVKxa!oG5edJmazX2PvS>Jj64 z!jpgOj?-|$DQ`u|dvyDT`AWtjyL*z6n!e(kV zGC&aps0JCvB8?6VbyqSfdJ#qkP;}m9%xY(>Cg8?2fQF0EsDLIENg=9gpHc(0p)bf- zP?OM<35^pu;mOEU&SY3ih1LRG6E1%~i_9G=ILmpgMPpTHr}{eLzR%D%qBN1_oW)C4 zUMQ@YMi{WnKPx(y{QC<1>)O~ae66vRGWT7i&aY?G-%9PrOhzJ230z5Ib(q@Ks59HfC(Z?V7T)_A~M878{IVxwdn+~cX>sM30#2FgQK zb~sQjItF#XzEa(2S2df@j;!aKX>eFGT&@?GSht-qgUunn(KJX7a6Br`r3h>Npd3cJ zny*dc_mK7jMiQYdvrnE%3>kllzXARoK`3PY!DXD5f%^zq2nwr|aUf&{;2w~*X#k14 zo_n-4by_O3%^?yA8<^9vY{=^tvO(jagrAL@30{>1XCyFSW|c_~J`W*qgdQ{N5*HRo z&8*t6DwfTG5r9qR3X_^(%PQgW7+@JC_G=mrQ%r~B6x8a25SF0n0pov=lBQ@-swfE! zA?xJS`1n?ENI+78=#pH?$2_1hQsi~T5CUV`SLH-J+}fN9D24mX_Jd8$z1ivRb(@tW zhu)0wl$^dJ)b{~~mC^ax!Ach{a^c1aLxnP${6SRmn9OLCJecJQ{z3Ie-RAakNfCZ=h9>Oa?rL``j8O!F(7Btc4X-6mz&qreHc> zVF8l6L}{R?Ct~eez9Kz+XEn)-sk)v}{DpGHqu9-o^s)s&1}Y2z_6AFZYF7ysu@aw4 z0i{tt783~Fs5^AbhinMRE1+Ikb8I;f9t9`Deq~(*2|5%u$uECU9N&UbX#iz1cCi8o zu+vzgQm7Dx5lt9VR|__c+Av}`-zcT)tVWV)1jKXYZ9{plwIF>g^-t~L ze+S=7xHkr*2!H1DsF=LrkvoBYqW_fKS!Ha0c_LRAil<=tA{UVANzoT+&IC3=*LYg- z&j4^Bu^jTiy19QwXyN`8Gb_&TQiU#j-XNHl!C#%-XV6{JLDi7HECDDiEQo&1S zHV`ybo)AK6iv@rdiUDj_V<%!F3RttkejGCbUJPTBT})`0p*n=(HDyPYfB+#5P;W>D zSf5Lb)Zl#6JcS_2N^=DaIDj8yfMA5huq-!!0Ur72$kKmpx7y9pXj~bEDUE9wnk&OG zuIo@+Ftll?2e(?2%!Us_ta2z*jpM<+lVI};piw0?YvH^N=4^8?&*yFLk6)j@%I0mc zp12)>9n7PBtjeR94fx$56eWL+tzOeQ!iUiAVad9^CJ=*ue+^;_`NlBkpzv$|wb{cm z-umn6)8>Em#wPrG^yBr$k%cmDxzAuq?H^vX?7iz}7ChX)!uNmu&B|tfmnRpO7iiI0 z8EHV%STdoSOQx3qoRHcuWDqNC2wxEQ!DnqAss|8D0)LZ5T!Ptb$EKmpeG%9b40QpE zZ7%J;h(o)xy|d$Nm1-9Qi$K?hXb1|_3R~`@QgeSS>K#lf@Z~t#uD?+;G<^2~RYr%w z@OF`_j2OlTA5dj-qE#ji`Okm-H*y@3Q&jsyrZ!GhUx3TUQ;dNGgGdV3@z80~n>pk2O&LK-a_nT> z-^70g`a8^N4IH}N?K`ab-aRfgVF|4`KLs0$gK2*H|-WSddr@Y>~z`Wb`r2moQR-69$0|`4=V~iQR3rw_AHFVQ`M6jKTXt<~iH{my`3i z#J+{#p1?Z|40XBGgl`qF+Sy z>j`PsLg>%XDe{JqSF`SspKuPTO6*^=?vc~Hdr#IMMyl8M2CW^o)82Ies;$8mZP9IK zZ{Y31Q`+_ahmral^~DXHQ1X8cOq}8r^)&RF597Ama-7{d8B8-dliy|Ax@9DzQW@oY zhH0@dHv~(mUbpLD(W8o8TX{(5fTv~68gu?1JNF=lSyUW=PjVLeP>LsX=Dpy)LiqhD zvjYm51s-)ePG_%M_D&H7Qx_(i-UvTilr^fT@dGYV*!da-%>T^aFRXutny=PpvJg~Y zCIj{3n9y5*HO?1TiB+DEFd3WLI13Bdoh@!lT~bN1&*Nl-DH3lA@*wToJDr`5^L_n0 zCM93it5?2AaaHn5Dw5Jd&Lg_uIBW{j*O}H(s0#>}@+-ZeU`5{!`EZojJ6n)DTB}u( zbry};hqJiWsTTjTD5Q}h9Ro=;P(cy4e#R+4}X)B=~!S%dV`gj_(L`wB_Z zmIzdN0~j1}h*y8O{v9co2LNCkSbrrdOJtZ+j@Iu3>d!1>z<3e@`V-2-F`KV%7fo}z zmALgNsDA#(LiL!ag(DpcDY>N*KPmWpFkmsRJnE#Z!K#+bAh4m0aI|zGq28?m+i*(b z8-b%zOq0BrP68}ey%81Vn2H^@clKI4TkX{%Xr1NpaOHnf5vNbc8EBc(kQ4Lm*|Al_ z>?Nr6065>!5ujZKPbKOGY(|3{Li+-+DFy>wqIduxKFGdS-WwbrKU-XEBxqF!n08HFr0OonKGH;oA{?Fs@wfqZx>Fh zW0bxo8{2=o*;{AP+ip91+g|k6X=Tj2ndsg8^|$hOO1%xph54C+n#?{_s_jOE-@;$N z^ch206l&QCvHTyVAR_oMA*v!_f4Yirguu9($`R${m@Z0-j_#gvVP0+Bqbw>0D zsRZOQ_l8Yfn%vxbWc4^Y+*nHE`- zF_Y7zQ3N%ysqe0A=bAht`Az%Us^QMluBR1)U>B4>j8?SEWVH9M@6motBQv1mzE8>B zKDi@Lvz~(vTU(8c*s3a#eZbJ~?y;u{e{0=_$%>PWh1w!$Mq*;N8>GEskqxzX(Cjq# ztXhAAz}3dj+lu=WL9yidbFxz>+5#eY2_#5af4dED711XpX^R{lk}XRUw=2Z@3y0RT zvZK$O$4k4_AbZ^gF&*edU2!?0zfh{U*VKR8 z!>$bV)VOZuAL@)IM%0E;9XuSjIww4PkPmlq&N1S{GH0)MhP=J7#+=#Y85rfM-wU5g zV%vx0sl>}(2;|`VCeI>X19fbu2ImH@?DxyZhf2BP_@FG{a{EFA5LIIp+iF&a_v$gS zwv5UvjxjOL-ok6gn2)$+cH1!)IZ1y`vbI3ks|!^gsXffsz0jzWplvVF0{hCYYG+~& ztzx)TnRdO1RZGV$VEg2DyV+_zThhjdm_`@L^xk$RK;udzTHM&XfKJbu{No-GxL)Cc zZ@PE)ium{#5z~bt*4Nk9uHJ7yBdRy@dhI8HI|}y6ncAcKlL(WrxRU%UT)lsbIZV-~ zF9l4p;|9!-0DXSx!P^wVQpob#7u35cu0;TtK7|^VdkykCF6JR=1HZ5G8wQ+kiF;H2 z$bLV!HRGz$WfdMSVPPkrlW8AKWvhDs`MSqudl(pXpuAX{UeVE{IFzmE%t zY9+2nk1B)`9IBOAWsZRFVHSD>zlXIC$a)-KDX3Kh0340$r9t{WR<1Dooy=(t{O{zK z%3FZ=A^sX0dQ>HpJeFs=8jtqam3SyR_iCfB;=o*heKg`$>yipDtMz{6Bpx(e=&=);n2T*V*U32tF7v511~Y zKAMZ-MS=NnS-CWdzv46y!xRE}t;(qzXkq!e0*5L)S8Cy5z*jjQkwK~qj|AaDriVbd zkm(^1)-0yRekB%NqCbBMv&(Ai{2WSs^(DVAZ#2(fH`^0hKSO60T=jOZYDfk_NBzuJ+|Kw7m8&uXokgJF`Y0-K^e-nr19$JT`iLDb+D0y@hdIA6)8bfd}j6)u(@Tcx)_cHXpkc&W$M} z-Lp=8Hx4$BV)o_WJo1hsevx&|{h1|yjDsKZj=Fl;7kYM}g0Al5TuU>Xg(6`GmD6c6 zo1vL zpX$kE%#P-i+;%MbpK+fwYpT!p*~z$K3$-RMsB<3z4rG69suPH&kv}ecLe)xM-w(3E4);&8h=9{I)HM*<0 zuzv z?;4(%2<`P!gX=)Kui*WS08> zU}4S?6`v!ZBL1&tuCJ$YBZ$BEQ@B)jc7P&j*?Ulxp(?95h&ev=UJy*k&|+J_2UvyT^U{T6Vc6oA$PncroudPQT%4qsM8k5tWO|oK z?V?*|b-yZ}!bez1;sfqcaxokvTd$CND|^~4G0`EVar)=H_i zy_5PgA4UmsH`GL^8!BWfG^7qi1l<3*vB@O7Lp-&Y44eQQ z>qsu5rtx5hN8w`p&pJeXwqO1)NUGgjr3PICi5rLhP#tj0JA2=b07*DGH8AZtjBh_nFXRP|t2joV^)TMk*iAsM!mED@ST|r{uWvNA zb)HELHk`R#TWUVDTdDhu@0lT~dfmn3b~d~Swy4rpNdEX{w5CZ<~eO|?8%$(}>L7u51Ee>MgaTrIcFv#n!A15iDD>)BlM zOG4A_O=l6+M+`UsUBGx$PE{~SH10Tbr~epFi&;xLqOD2hgmoNmKBMS>Jcq}tG^UhRgpMffi+Rnz=>GJKn6h0^!(FOT0bO}E7f z+2SJlbuLMhI|7{q%87%m;N?*9jLYe~L<*Os8g?+UbVC)x%~^3|HGUOHT(EBw?3+Xm z%vJ`T!7gG$Z;@sZLeH!*@l@O^!C87K3sGd;ir}ICy1aj20;4jOSH|K-Q#yK%CSYUr zW7n8UIL54mR2))e-~@WsM%`o)M$ILTthLdMF*6YSEqQoePNcS9IZ-p%r`N!Wq~t9& z$|#%daAEW6U4vK~z)HsR)*J_h6Tc~}F+0LPSAvJZXu4-&mvAwNq9*Yc22Nhb$|rDD z7`a!!sw015LDI%DAuIORP&eKzl6ax+fa;5g^w>^gA(0g>tE(px4|Nqo;$cgrxAuQ+ z)wg`wR>`e@VUApC9vroNHrhyS4lU#p%ZzY=L0!QzMHPw({SClSzkV41c6Mo^?haP6 zr^IOb8t74IIfBz~q0cgU%s1gOUPN7bgadpQW>0?`c(L_jlZ4m_vjj2Hu))l_^=gwB zpk+5eBfiZyDgw5l3y%&#O(DqC=yB9Vl&L;UVK6!+kSXy7{|#j->`tM%{Th53_X_D>mX+l?1+Z1R|yC1kb#mh+0_-c}3K`E2QRi zy^nt-JumV;5k2oC(W{mcualE&U@Sn@2HwHp|E@g$RlIKQuXFNTwDrzKTkrFqXDzvO z=s@)Or2<)uN;~`&xcG=bHj}90ro_zq;roLhdj|)-gQM55HvxYQ7TrUXYf>%HnvPip5s`#10v&(B`0bbd;*wtu_r^Q^w_Kx^*C3v{Hr>IL zD!k&~MMsS;MC$MOYrG{i!bYgvHHjqlz>T3i1H6V7$E|!U+!^vtcBBupdwLuii5~7r zvAHY@>C#@?(m+62Sl-~z1PyDD@+?>Ip3Gcf9BM_uIZl+aa#!S|M|2yZaY8k{F=sv3 z%Mgnc4)0qXs&OHKo0ToxcPJI-f>LV4@6aWAK2ml}mAt)p+ zxtcloVL_3B$kfO^LLJpM3|>B@w~8*Mb12r@Hk6zNs5H~X~4XQ zOP13}92}U5oE;p5xTfW&ahxXQf~zD<$B#0nzD#pN(JCa5L`h*E5O{xhBE2;Ck~Cor zHBcl>_%vgepFh0UBOy-$?=hot;ZZ4bJt*R0K987JYwUR?Pfkg0Eu_rE*-5)?pPf8BJlwXNGruWd`E4uB=k0qQ zu(W-9W}kifg9mS>ZgWJN;oWP;Qp~Q#-rMoy0ytS0&B>?pk9yeqJf3`>!07b5ddJ5C zH(4h{2?TKL<|LO9!|8Jgo=e!0ykiNX zj*N5e6RjNqsNJNJCv$Sm=L;#wxi86E=5xW*q{8y4qEHsmWyFQ_04IK0B&b-oGB3XI z3Vm6=@=ju%`xjro;Vy|M+Os@3noL zX+kQn9PkGE)2O*%G?I&^Pjl9cA@w3rG3q6Oa1bs)6(Q*?V$X1TDRtZJkQq1~XZ^ha zxj>YWCM0)7Q*x;^B^RJ6`LM02Vh}(|=R8AtB_bG{4C#O9ctE?sU^ED3)OBgt3r7AZ zbce@1e{?jgM({V?+v^-3xyOL#dEDglgroSTc;M1sG;`+DD0&`P``zJSKUhnQenurHQ!{t#8s$P;CG>xcAq^nhHp58ytEgiQ%=nTOvJdXK1S5X9i0I*}x zOc)DT(9D1GR5D*SAt9m&-f7Gr^#G#}Y5tAn;#rRSTEHx)`O@umhMmE0;O=UzDL7JT zN2Stt^>nWy!fwmi)D&?1s~6PGhmFG!_9bfc%b9iu!-f3)WC6*DH=mIU#-o z&zI%4Kv+Cu0qUuoUmGZ~KT@6kNJWa~F$6)d{GNaN?0L=~9QV7&gMN39*Td+3uh+j! zF0b7oIY;5J6Kdh)0=9WBC1XEH@`a$nb(`Hz=eXH*I|H}t_M08ob(w6s!`lRZo+&}{ zm_fOVu|{|L-JW~o_J;i}q9Viacmd=Fs!@vG=B3G4jx?8PA=qB2C8ehw+UbsthyCGT z7gc{xck1IG*H`Z@KVSUoW{mqh?8YBHy+8jv#%$3hThMIU(@?T9Icu8C$R@Y!CpH=`rw8%RpfeiqkDGrci`n zz(%?)GP%qc5PpOfY&G-1W*MEc)%p_lo|%6@K8=+a=U}zav`5&N!QxeS)GF1*3EMDP zE5gI-!jp{vQV7w?IX;(zZ4SR_d$G@N8d#LQnA zDj3bdQ#qTnM|*=v>GHzK5p*C{y?0^pNb@T@lxsGih6pUbH#$ zsjs#xj`~A4chq%zkZeQO?O4vP`So0qG|Sn{*DlnYCd+s4vf`i1-uxMC*uy3hUOAJ$?>#{`A(umG+@ z9mO+4o~2Tbvys+@qEjq+P1**fR zYF8xCp)zeebO6?h2@Y@RsWdFj&NWoOQsp zgq~3r!nz}WgPfQYJ~V%s(D(m>^A80Plm{ooD5RWlHTFK9e;7BmT@A7TA`Dkrj?;im zIfGLP3r_I>QFUnQ@A~sGj(*9V`jV|(9tGNAM8)FYaiqL?D1Og(RRpbi_?3U}>&i*V`yaw=76$ zT9)Z|gC4EM(`JI0<64@_l?~=|(|0CK_h*Jxrh|7FR7xk>YciRRLfY8bOY5%aBvX7h5U@>XY7S$45kD!JiN4Gw>pD^S-k5yecIxqA_}B4H?DT0f}>G)hc~t_PrIr0%>nkyow)bHc~0rsKxv z>8>XEF|_5bq44@~^*^i?&E_ox0>QvhL*ZlxsY~3TxGzgOI2i51c{xSQ-l=1b1+ZB6 zl{?2BeGF3Sl~i@DpyK+2gODMsNggE%^QXMSuBjCOmN5p%%(ovTlLr01Ed338w?cC8 zx9c_rw;>96l7L;J6aWATN0%Wg1RIxHp%)OBSpg6lf5ki5a@;tQ@BRv`G(APy#Zuje z+Oo!N%iW%}EQKw5cS4dGC=#rq#iLA+I^0&o{=#o zcJ-Bqe?fMQP;nR{oIu#ILf;RA4BOkl2@kI0h+1(NWgwj-c0HbfXio_IYzByYH((~a zj@#l9i=r?xO(XKoOi03Cz@lMhxj;>>h;I30I;@)4(j8@u0` zZGK?i62?+Zj9YZYemgmQC!hGPf6wBZ73&M$^e0cASRUn^yr!;qu z2ES0wO2TTTJAGFm`WugF>{@_r8QQ7b4l(D6>)B=`nbMNTOTqECwYBvNz9y8U0OZPz zmn2>?;!qzLAdc&S@`&wnI`^0jBl6MNkiB)`1)VBjhuXHeWYlJn)_N6&7cOhHNlOwk zebT%=a%34}f$_LEVyi zH{Tq6IDC2X5#FBW3esAzKpFMTWq&+0L5-k3v`Noy>Foxn6a-dVVAE&=;PP7rf4ls) z0V*fD+=R>Sb*J3|vN!E!z~`xaCkG#;bid~~S_r=j@Gu831EBqmq8N0iJ3^;B*P{!@ zldmSMI@e-`wTxUI`;;5t>EatBVwWzvGQLu9&c>X^%%_17dhVr54L=D2BR0Mou!=nf zUXoq$Rv|{qw@1iAcQTyMMsu67f5~`0V}tQ%*c(hJV>4?qvmK@malx`o+qGgCSO_Cu z*@!G635k*F21-7o0^f9pIw>%fxv zx?22L1q=NzYy2eQ#5n4MmKI;sFAE8#wDU>POscYBlWsN1U& zl3>6&z`O=;??K>gf-%$i>|OiQ$gM)5WAt3##aZoE-k};HcqakA%)=}GZsp}|o767^ zzIi3|-Gp8FkPyJyGkj_-e}R3&hpfee)eyNBWI2WhbINQ37J~%i-~pN8E&>Cs-xQb@ z6jWNX5c**D*04vXY%(22H(I>@p+*=n;Vdya8C4c|joztRQQKU=Y&C5P`y_p6Msty{F0Mw)X)r5bY>M zp;t8{wf5=br_Yn#f1ul&4c4r<*}m18`FG%%93#*5Q0g=fy0h-6Rj+4=fz;>g@}U0n ztO{PALo zy;=6Ze>XiwgMb<~vo2U*t zNH^^{DKzJ_%B=12$a(XN!B*!4(`6kQyEsXzzUNYY6_WGOFb#MB|R_=m@ z%8a)OP63Er-@v@gHYZm23BjnMRIj1gc_GT#ap!g2FtE|kk3LAu}N$;dI$tXAO_ zL+@b(?qUgf5n5MI7#!qDEHl0pj z_H^xZ>#TLIV}At*;=BMNX?CFRiy{-WzE)hK=GA&qPp7)`Y+pZv43=a%sg}-|>1jS) zX&&|GHYNUUX$wd5PkZNjJJX1+*7#7od70vi%3jgBU;%Q3ypk7K;DIdSbGVeZ9IRpU zpzMb3&UAm`E%H;&L_5DyDCfQ`rya%AYL}lYoD>NZ?(F5vr1&GYVAo{=8dxlnl_m)_*(wTGds~ouF`Pd@ z{|d2fiT4(yt}KZ6wmxwdVbI{a+UXfTv)i5XXZltpBEVvhszs)_1dp4vpq+e(vU{rCH4TrRg;$a&OvIVJJ_Us)Q|9WGsTh#-c;@Bk9=3BDwZtCW zu^4lvX}^P8xz*3~pU==(!MlEBjARRP0ns#>i+^<(Ee1O`VG<{EX4u{ic)f)2oyoL6 zt{RYJ=kw@{Kiz}>ZGQzm4IE6&&a~4nZSbmXcw7)(H^BxDYiyN9V3(j=$6ci4Qt&n4 zZL9?e-~<_nPz-??et@XG!D!mms~ni-@w=D*IQU?`I(q-+?XRX;W#hbQcJusb(=y4Y zwtu`r(y`fe%PoHFMrio})kmsB(PW{PpfFg%p0=__t@9@(P>CF3g>_+y9)y-b>SaKP z#SjiK#-5&6UyyGJg#_sa;tsQ2YGRPWA|gX|+L8cRNt}0Z9dS)BOPgU52;|rd(>kD( z5#K{#0*=IWXTf4kBs_ZU0MK+0#>KdLw14=+h3p0is|CQ;h*_qIkD7_51NI;jU#&dX z5*q?Lmx0~!5(xj%S882!d>Xh8B-X7*as^=>c~V+8nxHEJTB+Tn3?AW zalq`ny*Je3=tgT*<|(2&L;tao!q7h;Xjwvn$b=B~eTCp`1K(g1zi;FzEf5OUHbYA} z(`_X5s)kJ3vh}}tv@DbJmS^4Xw(*Uh<_I#^i(0?+$3p{i?km@hmoG5NUgPbOVIe2( zTWxZOvEvV{z;9L|{+v#-!mSx?vwtpyjDj1vNv8RoMHD70Eq$o#oAo2cOZKY>(x-P} zxNVj)Ghy&SXu^(O69ssP6<%t}>EB8e5GA+pewk;NI~?VZkZpTblC5lz^qTqJXvMVi zebJ4hWwK$L2)%|O+pbj@m7`W62UlpW2Z?MmWo-nMHrVqZzu)Te0i^eg1%Cnct1e&J zWW5^;te}c!^Zg85v$yrH%rvN%k>{^f0wUIn`w}WJ_6jyA?upCY0NaNaB*dk+khQp0 z+z_fWP}8HqqMhH0-NO===7?XC?zDvPyxcjg{!(XB4sAICT=30HC3Si#bUpBGSx!tg z6yfrO0~LRIu2(Xvv|wKsL4R%~<{@DHeYR;R{?@!NH#d~KI$TQYBEPP~S#&D0%UaHg zo<)9L1E=gwW|teFWIR#sYGBn}%>23ruGFb0ZfYP)Wg!5U?rY#vhX|1ARSitB6btjJ zz}*&BvP~|r6CyT&is}{~se3RRYg5k+F2K;dy)9`@JhHaP5>kpiD1S+}&Y$ihHnH23 z-Xhdqc2?o+>ilW7*`d_;|dMa2wJd z&znP5OhV7DZuJR<%s+SgN#LyCgsSXWr#*n(rBo_-2&wtfz0&HN^m5g=KzR|FxaY5akp@TyADHOWxzW@)#1k|oR>>uDL z%w9dZ;Cqm>9e#Ru^7h@^_Xm2tJ{A7g%TYw80MwSD=%uv_2K8s2pz6X?3vB5*o9g}( z(w5~Tk`T@uP^^W^0?_56fW#%R9?5)@yWd%Djw(~rG$GB=t$(L#n21U&8!6#WB$RC; z(?U!L=t@%$1rkkSO7q7a?g*<7`g%=0(OgSZ$-Nge@ZY+`K+QAj19%#Mb6wO&-{!Vj z4x!c~`E>(qmYGXo>S6NiTVAX~De2U`a^~%tK2_?fm3&X2%IeAdg;w~R^{wqJ5wC7) zi|1PIC>s5Cnt!VC8Y3&CR{d0?uh90n{+zF9aK^EJl13weNbHS1eW8H|(Vy=i%nQYn zH6=faq_ug}rX1?7NUdfkxb#nDdfrho`^tviee#}7S=)Uxwo?93F_R5PQlt?16H(q& zCAdfabidq5%@if!{6XQ6Zda-=Nx1aF=EN)24S%=9lUB)I*IqU|$;^HQV10pF z-T}ASCG)}+m_Ri%peuKqS{CEn5ZJ20K|D+g($EI86`M(~54+t-&32MlP!V+@C@)}Y zi$=QU^TnRvv+R`xY~=*_`toc2#0jU6gAtj$$OI!jd)k)jfB?X*R}6{mVUt$v3j+I! z(~(oO?tgj;apLHvEE^1#TfR*hSq;yb?m@$i?ZBO!t9{31p3V1wA*>A(bRB5rjj0;` z3K_soSh|f?SlzY7R&hnSgmRqIig+cNz)B*9XZg)58U>L5K?xX$Q!{Z$G9XF2@cr4; z)SU9y;8`UYXCANE1xWKSOyxR=pKF=UON&HHJ%2$MQ}6)f1?lQFGX)CFrVFckP4iA$ znO4DXK-HbbXLv4MNgj%M6t`~Ab&+t1T38Z9Y_0QJAxac0v2%k;rT*-Y@!+f#lO?@m zg*MmE;e)Dbj)-G-3CZ5?sCfNh?cG(1M4sqgJ5RowA1BxM8+!f9LGlcldR%<_ulad# z^MCN@!-0AH^4Eip=G*tL-@bZza`Yi31Oe7|FNqLxZwpry7d7413y7@GDYnSuD_QBe zRu~u*%YcaG}%ayY*-gKzPr z$#Ld)dfT!#z4oS;gKrN#!1wX^=)+0;g-q>YtuWVB6k;%8;)wnFYg|@1vq9pE#g%<-)Dav(8ei!UVj!0#j9gIVX@y82 zIt&tFd3ELqA`D+PSJI`ASJoVCMjyqm)Wo7dmp-qSJ~%6+jG+_$YNA>zE2k-ZR(~AD z$2f#a!zMH)b|TwrX)zAuA$l!cYl*1>p7Z69+M$O}!(?pr`PZv|XHewzzdQsl? zD@%c&7-?lpYi-ry+>INk2bdzUiECVALapJ!psiM2I961eBf`W8kmZJ0U)J4VP+i-l zY2G%y^I+Yk%@g%k`i!UJG7}1KO@D9dW@o=#8llvh&4W}6MFlRcy3VNo^sR4Ta9e(zCMF(@NcCKCJ3SRRI(aT^H8zcuhH^7lD3rEKgu$Z5&s>34gmIglqf% zR{jv|hx`gG6F}e5f}%I#X|OaJIz(_K!00dzShyc!t>7${eRBZJpOR-=Iwu$ z-6~Z1XPxvw^;suiSOD$H&JH+7*?*~Z%s+AAFx7eq-6zb$8bx*Z!Qn3l>qt(&;L+`8 z^`je|>Na_UAMz{S$ceC39$$(*DJR-tP-}(0%XUz?Y=s{V@ExdA4dvbtUzNKQAA8K; z%mRZjY-V`Wh*-ioB!BznY%u6gdL6V|h5QK<-@bu=cq0g(T;dFv{U(Pgwp669g{q}` zhioz!4xH(1NXO22GMR((?T+WeozZB_x`V-BHk=G*vk_yx;b=DKTKhDKmwUb8csL!8 zrjxGGHNM^~xj!Aw4My#uHR<-8`DE0!oY`PJnLESbaMBx3=zqYT{}slDIKO+nM}6V3 zLD@XCTo$t(2sMj@eK$~{)Q3t}D%J|;6c!qOn#7rr?(D5VwbO2|TT$&DdQ0u|PW8=3 z!_jao)i<^WyBH5ReSd8s)^O9u7O8Mpm}nM$UAbON6tN(0Vm+51ONb-R_^E{W{z3bR>*4|z z6X5Dp7hcU54A|cS^tG*GC7kpWr@6*X)qy|$vyFR-QRm(tEz-Z_GmO%K!^RHMdaMNP z3Xm6?(3<{yN8XnD&}-eAlu$z(`tBnQ^0YUO&kk9ieq;F=sQ+9dtMr-mTH(NJ9=$%= zm7RCuhFsS4`E~#l#}4S9P?DXztw!? z02T$|LGYnkRuzj$)X1{OQrc-r8gsZ?NN3?y;HXD4`ro?;fFJ-;Nz(~tECcu0-P`+i zzg>oT8WZ0SS8|nu?-LPcX)ehs5iI54M?ykQqhfEbo(O0Gqv87NTahN~_nam?jhipn z+Y6O!lcjN-CTqce7fG1To@7p$O!In$NugNJ>w5$r9PnAdd=4ys&g7so2uVF?toN^^ zhWf51qNqhQqfwgNRzoZTn)r7zj;im*xLKa3c{NtcP#a4L)#xoqA0mh$ zkvQxNUJZXM6)4X%oBcHRlQe;9Kq4nWM)3zPkt#k}FQU#vT=YmO;y-`+8aiy=^ z*4j}{!IN6A#o4ewBZZ7W&Fxz@`Nv&K1Og@@@(xJ0inDusXEe_Ry@gY9NN#?bk&E+B zmmmLneKY$)K3rU#&%VqqFVD!27hf)~`_hY5P%0>YwyZ6ua$EbgjOH}nwplCgMdtJLF^N*D zoPCq8U_i(|Ih$P{*5L=7{B(Iu3W@sTzVw$0E&JrA^luOeM(*KRdHnP2BMH+yrV<^V zkO1(1Yn5;{#UcSJ(t^S-0pnMIiA7?5D=PSXxjyrMp8XRMs9R6W^PC}bJeYtz4BXKu zaL3+oI33{r@`VpV9qqKDVuUDboeA3y57{9 zP8bdGAR}&#r?zJ~mNg#p0U3FoJ2on3a|nr#ml63;#)s&pJn_=Rt75q{z{K zgKFCJW94HU(AB!VX5AwM8OB1hY>fuLo>0pNjkMOr5R=v21I>$OE26A`G9l{KKmjyI zojKgXliopIuIZ5K6fZLl_OK(uC&W_06XZP|dJFOotb z&M(qc&fsK|pj&2(2efx?Ey-JAk2b@9oJy+F-OJ{DX}*TCu5ow}41C7XC@p?Ked?ts zY(LB6>ebo2x|>(EvUMwKRdbZQM19S%Oe7f{2XT|uvbKpqKbHxvzd~}^%FL!%VoZv?oGvFu1d!sB=Z6jaIS)2zOxMZMNFAht6xT7FPZG9Vk6*7>2c zVB@StQ-^}}EPd2Fm4V)|%s>SLlAzwURFMej*YN0tND1}V2r&@JQE;0asr}lZh0}kp zAb&pD!5%6>cL9MzB_OuhLSs9B7H@#JbBm%y70uf-D)(0fpBapX=tnFG^{rd#)n)pY z9QE|;F&bbjlrh7Y6HX74agtd{%C|!GU1Tpl= zV_o}!iU>;qnUWBYNJ4g?Lt@wT@5By zGCZ7UhM8k=BQjlESg)~vOPlw~nr6d#H3|E%yPEj*WRL7*GS{+*KKrVKUbb@qZa%51 zSiBj;7{+fZQEHAYHQA=OYrZX)=rwm@Qq!=`#d`7jm!B`% zlInu8If$yvf0MF5R2z_@j}=YNzrI@@7#)^g*Qf&$A~K?rAF!i;gqF&teC|>$qnQ+G zqTHiSCX*_kwT3mL4dT{B7rOfdEAV6WM~V#H6d@n2(6pi(C~GU`Wx=j^ct^=z_d6|J zyHe__CH>2?6&8R^ce1m+X`ryXiz)x_&D9uF`M-MmjUJ_Wf3=yY-&%b`zY+b6$W?Lp z|2Cw*(~ok@v?6MMI?*{j{Lk6pzpTUQ^3QBZD=k|+=^yS!djekVKL21}$)RAFf)vuq zzLtB(*cC9#nb4{0PQx+9t|kn^i8}?3jg7}AueEyhZTSqlEp-fM)M?fJx9*{l@@F*= zErIRwHWP*V^(mtg-I4GLJ8 z-?G~`*f(^yW#y(4%_ncnx2KDs)_Apw1IQNvj=g!0NPS1kmG6zybz0N3RuPW$Q0A;& zn$UdtoR!y&XY|Yd16i-zhPQBvf6W}w6AV;Gp#Z6BwX*qDEVQ1gQAspYRUhT~)IA)K zddBGg7*czGu|(+R}m;rDGU3x{y|H0S?hxtiiFcB(tFp~FoMy_ zfeiq55ZI0~<`p*U5=%vGXDYxu6t|_b6<(-$^Gl$<_0t|!(a%Ym6{5I#k{fPomvwbE zFYRnJ7~68&xb{hC#`(u2IUjNa+TDUTBu88thLHJhbEyVXY-w z7n-W6J#Tm~r4+I}V_Zixe#he1w?7?R{N=BAdjS}0%<5qAfe!{&2V)O^kis#iya1-a)YEm3-bU zKSY23aP#Bp)8+CSc-?w8*WO(TTP?3waP-(*!7F6yog>eB6`Tql4I3Y9guUGw?8i6z zisJo^NaF)ZA++RvhGPgbb>K}~ZVbXHiW$+s^RZ(?kHtpL>6{$RUd8j-dNzxXj+0{? z$8>#vc;qm#*pMRzJ;QX;s`qpK+{TUqCRjZ*5H&pvxj5Xf3lwN>@90eODUeHx*)Ow(!^_oAGKKno&ONL+ zMqdnf#*y!V?%p<5UeHxh6-mOr0{uW@2r~fFIA#B#eqj9WvNU%cl5{zj=#c0pAM8sR zG%wT(EbO6 zmo(@{+QbGAt%dX-S7Z#W0uoc`kqP9PG zY23y=MUPKGeGCOPH6^NLQT1n_cgAGj%fL z&Sva#S8#560p%liY}^$ps$nL?MXG(nX$t)%2yvd9BJx40mmscp1dT7guKM@Y(|a~eCW3PCr9JFGI5kKPDH_VyTMhP+25>NGOD*CZdNr_ zz+?skq)$@SU(%|7?6Zy76s^t&gs`DBMCBL<<1g(E~d(mZK7c;dIzJE2SK=-zundWZiSDnSmO@Oqr%MVB$!aB1RY8uxB*- zLLdBKXzjWqE!w-7!7~{4Gpjif1PTYkI%FIL000{fm$6d@9G6bD1_+l>uLd7~ z#aC@_+cpsX?q5NmC@3wqY$s{b1xOovqjF zd(WNWQ(<5I!Yb}xEio4>(1tII(*MDx7AHJ{wu%X!vLs8G0MpULfmwCp*i52-$iz}m zJYa3T4mgMaf|v;bNn2-p<3>Qr1a53d-h?bA zH*Ce0Kr-8eJOHu)E|#xdKh1D9vEG3pyx6lmChdJJAUDe58>Q zS_=JD6!?N5TlA~mM~5Fu2V66@+ReU43%-QmEYrqMxd>z~Y$eml@Qbi$PP_t+M2cm^ z#RwqLBcu+n0+6p-@#*WM!;^nO`s*?`xy0OO@3hO`|C4j`LGd3# zM0|x<`%s?rj)ic4NU-zV-3g8iv`ve3;<057JU_Kl8wHNFtPO3e)h1O{{vSvNYexfP%<=(P0?JhVyXuoE>M%=5uYU?6eIp+6V^1D2@o=Q9IvBBkLMI z4!60Al5Ka19B&1<=Z=-!)fwsBZC_<{z9=%;xKGb5RltgWCim@H&l~Z}Dz{qw9$D?S z{CL!KZKvBy*?W#quq}4iuPhA8S<*-|?6t+l*b@y}qAjW(%Q6t5v!9asW|I}v!7M&@ zmC)F|=tlQbc1D~99ck??6ko>1GTXyJH!hhm#%5)CV*Ks@7>`$Yv{#&DR$zSxIxKrBs6-M(0BSY&vm@=M^m{xL#Tva74H_Psd7dAbmc_eHC9_`T5U%#w=H z`_3BhrWP`_sfgXX3A-8G`sUdKCd(Jd<`}{YJJx$9k*QgR!RqI>-E(8QD8R2eQO>%0 zJmJ8_&UCgMX%4wzbGEsIzX7)zwFbij3c(+AVB81*04N%lLH!3Cmjby4Cx7d6+qe<` z?!N*}CZ$-L6!m_zK2L7qq?x%~JC`*5VCy�ZNETf&-9t9NYhU7Y|W<$gZ!Kn{q6P z`RcH<3hbN&x8Vulw~xeUkmf9Qg$u`2R8TU=qO6Cl;{nU8NGdf-fLiTmwH(E`Snll z--Q4AFDS}4^k8g3xlG{Ha^rL_!hPFJV$S8n?@`i0#ffMxiH|Q;0qu~Jk z8U2`)p1`;00~XO1b?}#Y!Z8Wex=`AO!C)2)2E!WLL(ObC7C4n1o4rKosGK9hZ!#sV zsX<<`Jlv6B=zk|s(wg)mqXX6B;hkVf;;&1wq2jSnxVgFUcaf|^LB~d4@J&fQSo$9J z6xmaBxZ~p1gTx@X7gMYZTfl^WV?d1QB8JaA7~{!gNJo?5IGXNzIT;A^4a? zd!wNnR%{{C1XU>yy~FT!i_QtynMi~)qN6p!vQWa+eaw>7|9=M5p(G-07BQ*Q1P~Q{ znFCRHDb74XJwZ2uN)Dj}^TA#&SPDc;Xo9nXL!ues(FjA92-YNuqX-X1YfS5l$KhFW z8>T8t!GCgXfc>u!eVSR2DXk?tQ%AiUE>ej0H3w`W_l7|*06^pQbQ%OhjAx_CC?aGO zPX>eW_X1?l*aD*6T`F$#1=+geD~B$%cA^!Q7inATbQ)i}`GghqHJTMYG{zIGz7- zLBGKX^q~~&pfddaX(RBu_6WHRlaxWv4GB(0C4DBM)sbzKV-yOC6V)iI#LBY&7^lPsn zL0!VpP0OY2T43}ke0q2O@q-ID%T{r&!3G@$0@QQtxJ_`1K^1xo05h<6PwIwHs(-?4 zV8K$8H2flY*3)7d6TNUCNkv!AN*Pf48(Q?7;x?y_i%w6Gqs{3wH5wCJm6iGnN26O^ z1gnahCX)U}M|5nk3+Y$VCbC!3L9bA+9X@XD_E7_M4Dvk3y|LS^{r02by}v%`I*r=8 z?lFvynberyE-Q5@*MgI&$e@V_4}b3m8rSV;5`yw#CuP?l}gj4PH0o=4`z zZawZ4E!5RjWnJJa&u7H0A)D$$)s|b(vb&a=Cafp_1N))frA0Dw+OP=N3mlxBzJ*|? ztrQz+VJ&>@tQ+zln}0S8_Hmx8i8uHU+3*=M_J>S87|@yr*c5;^&YgO-D0vdU zju=pqP!(eiGKs^)5!mxU1Q~7G56zs-2<+b;46@0NF_glAWmRP=LoaJjo4I*rgSPbvxBDv`tPoH(syC@=%z z%`?pd1^Jak5<`cDY$ev~|NVLR^Xm`iC-v$Dax$s5&(QEgV_>RTxKqA5;47d}XhF%T zYAW|rvQ?UkqRK4xw|`b)pf%IQLY0QQhem0Lus-8BR2wYmU~#ZCo9yk=W7&SkT$Pdr z|G`>fJyln;2WtiCJ!B!(kqT(dt}W^R-DZ$m6|suVaobwAWxCEVOAg4@w8IiL3EI`D6tp9glmc6*^`zT@ zZP}C9Jc;1(vg*y>x9XzVeiPYYg8p)bJwC*;Rzhoef^y7KTt~p1QY-O00;me z2q7r7#TUbR1-FU92JIjU*+d?=#0dZZw;q>az5*MUo8ty6e|vMAND}{FpJLY891zPw zPg_z&ad{nW)>pBUvYp(+R;UpS5(xs90Y8$m0ri|IoY zQZw?yJOh_e&sat)SH3%5WcZ=s`5u!CAzS%(%wV1+-#PW1$oa}FT zaea95<^^{Hjt zvw1)lOw9=K5hkg(2#;vwnEIdtYomc~+1+-huX8hW0x%Qa()!GmW`P|_3(CJv?u2kA z86mO3Z|>xG2wJ9PryQGjev}A3E-(Y#;?PUfe<&HTQA@-b4b7zyvITo6>KX3c(eRe< zoBWo)n7}_pz4@ff_BCa%nOt7fL`khoq?JK_Z~%?nXi_VXmUB|bsB1VF$<&2lE;~q` z7jdR)rPXQx$n`qE=dYC9N*AdyXQ4+|;F16`<=zi1t-w*70!eLOEqEk7M;tC(TIZKW zf3_yM*nYSI=HH4|OgSmzjA_ZvsboNr{<)_3-pDyx6aj(~>RMz? z%iX{OFfrRPbrOM^Y0$s*7Yht{$0L-J=UgGrGo7_Y-n`UxQ35}X45+VAw>^;qa4;32 za1lHpDJh)*>KkPlGJCRDC|*FL?_mXce+2>&czdbLw4wtUR_IJiEYDjqN2sc($6R~4 zytQsVy_)Uc&PC;&>@6M3V&1_6Cjs<@Alk$27q8UT{;~E_2l7&R$XgjClya;X=V07i zf}ugR!a*>aARbrQQ3pI$Y(A>;!J~7Rk;s?9IZoUmcr*!n2$&f$YjPdNrHgi8e+QOV z>behfo^mTn?0z;iE>6zt`^U$Vw`Z@D{uIgvbqw`bJsv|zzHMp8>l3%4EW^&tCw;cB zCtI-a{-tBRx@jMbU{(I70hRurU$x|t>*>|CXin?wR3IxL<+jv+$-O`5boGvY>ib_H zxQ%-!S{heN?2v2MDp)}b%P}M1e^@F24kosOTw0w{G$`x=4=A>KSKf)7$ixz8&7bnQd zARNVnsc`?^B!3~UhTTKGub+F+hEBKxF!4O*j%l3S)6n7uC_2!OX)x*hSeyaZR{t-= z8OlL~97M=Lq#Ok0*dgS4f41FaY-lr!GJAN)+DC^+qmDUhk4)GYZ3?HSZYBrhJq3i_ zdompRKRFx+?QW;nZMUBcM@Z}%3$4R(&>M{YU*d5C^#8g%FugP^M@LZZ2Ks9s%fE5y zuc(J8I3I<+=RO)M8ktaz76l=`&&nu}$xb4WnLr}BR($7J%r_h>f9u48CoHH)*9uwS zQj@8Qj@`VaqC!CdhUu{u4_pVN!1&Ajf1MB)qAml=7%yrmrT@VQ zW)1Nmpa>-p1PicH!bd361e1`|uh{Vsa0B620lNSYrqm_Q)UzPnV9rWGf;g9`0U;>X z(u?GB(S6%eA#k8YrO6FuuA{_WwQM< ziM~ZT!4}QPS(J=7LPC+A_)+BBcdf8Dh0JjH5_WE8e_D$M0jBh~t^DyxF%A!-4JEBW zEt_JZ;CA}&o9$I88oBR#YHE3jP_(DH*f18)sriNE+`i3K#oM>LpmN7PTtc2(Vkj)| z*?glYt0{1st>Z1J&lqjxYj$InqPSTu^_~!B4z1%${@aN72!>p12Gc81TYhjn9m|UJ zznN0Se|QT2)Z<@nt^H(H)mr=7v3C6HPnubO!o>Phr_y1c_U!H<>zS6>v*$Zkub+I$lQYiSUl(-Bq?_w1OA}$A$J>u&)Rl9hA%^{UBJ?lcqG9gf5t3)tV1I| z3^_^=BL_ta7$Z?ZpbPCrN$SJwCZnI_1{8sTC%GShR7rNDh_Au3bvwvKOWgrkWAh;; ze=6;UO@l9e=zv0>$Zr7PLJndrGPrs{++f$ zNThXRl;?6=HE=HZNhwEE4-UXoFloeJ>0|b|GsTUZxpX~;c5DNRl)+p%&007Pnmq9TH8<*dz7YvtY{RbMCeEtRy ze+o-?c@d?zD_98$-JTBizO-G-jh)tP5(nF%po9N@V<*i^Te{>+;>`Pa=9!74ND#(R zu5-ySMm))c)F@ARC@8}**G!UFIZjEC%yA+k6NDm3M7k2VP9t&kq$LTpkR?ZuYaXi= zhvy)8{`!tDufBcxadYR}v(gf4fqANZf2Zp>P8buV(51Y~XG~sSc`d!&Gb@At{c>}C ziGTcagN8`D3#~IXI_vkn(b;mjoCMtwmD0>h|sy?2P}jXY;tZjNLP24TD**8I%UCJ!`Cge|S7N z7#t1y3!!@%lfRyOvsk2*^-}VS(cWCdk?Yqg6Z*-hJUwEcPY%N9RlW}v$>F*DIkyCuVlttAGu$xVe@q*h3298 z`krelgfySGBGRFdtoV+FJ6(@ukteg1aC61dmF%plui(QZxXciB$($AB*QsOQe=1ENf7pcSg`oBi zWf8)xXdMh@mA7QG416uS$UKrk+o$jfBA!wb$6hNk>7MgQl7x+aUQG8#N`}L6XW~vx z%YeoUXrD4U-O-!vSHxtxZ7pvrcbwW?$w<8N*;6czd<1qH4ku!EZf1~E9yJ3y1(I#CaWTnh;)&c;z!VM~xX)FlEC83?n-Egs| zT(no&@EdM*owax<(PY!+y%OpB3>v*mLSv;7pIf;;G(&CrA!qV=*hUnq@6jSg#kk2} zuNqhmw$KQFi$X<0c#5~tUmL+kLc*OZ1I5$k&yrwWFMNX<0Jvyme{1YUJO-GU1~ASN zGa}1IN~7BuXD$qtz8Y{xObIXZk4LEXi}Z?HSDhINB- zD@?YN&EpjNFeMX^2O`O1J*;=6wL&f7y55<*cSTU29$xjMoXqJ5?+z7p_$!!bh_DRv+ zKkLI9R|!-VoT@igPW#@m!d2h9*3bH|>1&Izb^gu9+B)yrUF*Y+#j>a?sYzK|)i&4M zH~$B>lmiD{ND62)FtPCj007Vpmq9TH9G0*b1()&+1R#HvS8H?PHWdBNuh3*?$7Tb> z<`tl&X{Jl2neJ{oU6L z-(G&Y{)lh>{)EOz7~hnNE!G5D*(@)lHd9=V&Q)oBa}pfI1r?j!IvSeCXfELSCa5E zqp|h%X;1rh+rzHo4hKue?)TibJs^Zw%fXOYE*)6icG-nP(U@{af#Wudbct#(3+JIq zZpk{k*G`5XuJ>0IS02-AS41jw1@to^QRt#8qS(GMWzrEmQalV2INBR^dYz$VcPMq1 zF6n=Fmu=Fg_OdgeL)#kk2c#O$XHpSA0sy<)9$1}TzdP77iX$&16jPl7#A#c0&+1y8 zeXP`s37nR{B+B`ABbg}KJ*Quv8>NoDLqVtzSrhJ&rN_{k6O?nv>53`YD#jyW@{Nq! zP5F4Yiraqs>`nC9IQM&jKG%DZzLR8c7!rS7`s5Kv^d8WZ=*$>JmoeomaM;OlHV1vz zwOQvJZWcYa&-KUd4K3C_@3&geRbdRgl zCcY67#Fy2^$~zum8g2p&4a-vzv+8gxYRR247h%DOhgm8urevPmKtOsXG5ShKh8%xE z3-ode`+Dr)fvN3kg&pXS)(g{kb+odPc`pt0zJN|cZlT;zpdj{>#~{N2V(<&JS20sZ zX&}3lpT0J18Ict$Qp`Jmvjua0Evo!^bdZ{}`av zCyl)HMluuH2*EftDo9!C@E_XO~p$0PZ|G2nWF zzg&Kv0C7fUJ#w_U@q>qiOwiL~0gJeVv(B-D0bu>`v7ms29sJ-mr4o!q%{2*_l%)AB z29*fp+g=>6A-(v%|E!(R*TjFRfo@YT^n1l?M`mHJJuVgYdEkU`pfl=aBKj5$EpU#@ z=us&H^F|r4UWropW+~x(!7TR2j{p8J@AVw3hbZY_?zG?Hgp?BE3k;+=g{xdzlIM9! z_5Bk7Y|$>ZShTyuxup5;odt}+#=g5GhfW9H znb~>nJT~Gi(R@G3WzLE3Yc$Cims+0EkYVD-R1%J2(d$JDaS*a3Vd)<0RT{CEA0fG_l=7D^WDUn zCRPjE?u4qxSS`-NDmeUI@2;)~=9Rf3B1^9a8}{FQM7!M%C<^?usOEpQvg|j>b`h?g z4-^w-hcV4Ai>#g#I%oTC}D@sE#7}R#cJ0Mq5=v>Nr97Wd<>CP#zetJjutVl!Rzf7PNP_8uXDVi z=|+1^b|j9E2{92Nro~K?<9v2X^iZGue#a@%L`GAgA;m_+jutjMswHm?sePL8M)q5xUI5Q zMnVZSVTX7MQLBG8TkC(PD2RzBnYQ0Vi^hqTASfW9gMM?56r_PrWlCJ~ z|9mUx*Y?_(8)W{vX zfD8dG2laB+A{N$G?9olS-HAd^Vp=oCmVG=~c~E zr1_knST$R!RWbyLqrL`=%|k6Nc=;4VB~#!*xhE_b3a?k=DQRk){ekoU6)ZK{$GTDo zWz<4h)=@1 zK?P9=Ee(J32&UH84GLu~u+j&@1@Q&Tc}R@%)z<=4uYpv{KcQDO+ue*x$TdR0`h?!L z`WirYoe0A`ZGmW{Q2{AlqO`&A&`fubsHgJiWkF9n7!r5$Qzh&Sr(>I(?VPH;&cgL) z!YZ9^w8iXe7bI@jsZ9mC2-2i%d9u?!DjXWjy8M3#Y!0}}e~myowGSsSOr^(xu*V-D zj2oQWx`BWYfUSAxEG~^o^d;2HghJLh5u^&~0iZ#HV3dcnwgJ%i6-KxFn&zobq!uBG z;^l8J6cY1D__!ew)ZE8P1SDT25Rie}8iDgb5tC6qd#sF#=4*s3dpeDzlHd6mXOe|1 zUKW2M_$iX~1JS$BNP+Qi^#nPu5aeB@(C1D*RpDt!-;Gv9a?!^gWIDn9(l~j?xuVR^ zkehE+2G`3~{pO%bX>tLbS8eL*-8#>8S6k)$!3Gk#9-^|-H8n`ShvjAyeBdOvc@m_E z#;q;t)dnWcIjVRy?k0=|g9<@!_@r)|f$D$c0;568IEAqb#c%Q;rega-bp)L#tjjNe9zrAG^wH1#rD(?b9_0?$jTbDe)a!JFO zJnXKgzR)pNi~266ece*ss=(skvAOL_|ul%ZV|VnfB_Pb50-y`{7e8HTb#wj3P2l{S_w?5atj{;OM+s~{O)d3 zBMOTmVZ+eu9SI9#(bTp7W!n^t8OQKXC|*jk9sPtj7FNnEp)PEcF=G-*Yl~8B?KlqtX?8w<0I{1hY0jszLnkkhH90vN5*-5@++APC~X0V0}wY&Qd3FHE;I)<0ZBWg9$S z6~vbEvlZkLoTu(I-SzvQZ>})Za|^OUf!nxgJn9H4@t~I|_R=8z_q7dYdA3xg;Iv#6 zLV_|NpvYs{J&>Kh**F@-_RbEZ#J?qX29&4&0Z>Z=1efiy7Z{gC>;xCLOLzy@6$8Tw8PFHnM)tuSnH-*;GxPN>XQYId2wq zvB#pMSQ>jbFDZzGD3~O`fTV2s*KapSq8pIU*~-kazy5H)bvK~-ukTNlDCKYe`@J@Q zi|)ZhR0*QxJ%EC2fIdsR2acHj3}WhR$@RjQL#RPA>I@xR3}n<)SI?tA#(-7J53 zSbXuH&q}_b`~&f|d~2gL$7}CX zKT1YIk*P1DqlP$%DX*=3C*^f7-$`jIuQ3(toyufNQ-Pz*2ui*;R<_hJm0AqQT3r~i z5mxxsaOWhZY$}-;Z}4knt-&QMEZ3t#Mj zY;8e>+EQwoLQZ1JJgUdj+?Rj;G*4x&M0b{DSZXJuM1UMFJ{?NWyQ*)04WYzJ(Yam? zP@^+xyAXWPClew|w;xAIVJvGAV)Jj z6joU!BlKaIUvXcI+E3u1MOX8lh*ChpDCCt!D5|4U%W2^HS-O)QCI+ z!bnvWOyC&+;RJ^2bx!3OgUkp_$6!^QD&W)HZEYk0CLZcolIyjFySC4&Ip8*?B{@x{mg&W7tzKwM2sqk(tyY3HfvIIUUR%coAR@2j|uV z230sxAI|oyuof&*Q8C>bWlm5U9nK65C!PhNoP6tA0++j%qlo+TjdKL)TTIETx_1B- zL2Ei;3p#(xYC(8<#}qVdNx~LnmQ#W`4zAw{K{bB}*h$E!UOkQ%C9GKhhiycg6ywSls| z>KvR!)>j;4ROn$?f}QOtAdxumU=9d!YM);jr_ZlU*&h|nN+&VpwIS8DAw^9MOb-NW zTK>sq#%8#V?8{{1O;`AY1F&eB%*-x7Zl?FgSpwgbwW%suz-ne|Xn>wXEf@_9pKAt3 zgQb5BW2}o)C4*|&SJk3Xt;r?Th!Z{q!ThzI7Pb6TOPlP$wBg2PYS>;gb2?GoYuH*7 zKzP+_qiZlJMJZcG1T-B{GQPna`|VItNFWtr7$_ z!74G9oopzO3bxjgj`3s=Lp2#<$sjT{#t47GS0};&`QAX}z zgX~c|{$yZBp)?(zh>!-9ovEi)3%?)Olg2PA*h+t>LdpJ4YaezaoE% z>DcfM6`GS`stki-pNXlywPY|b*llCH)=+ZWm+Gce1X+3%KXX)b(bsX>zNUnIjr%Z{ zZ|mIGQ)PXwN9xM?jCW<$`JHtR-x&XyR8oG>2{U&Rn}`#sHn@(i+Po2!Fe0A(wmDzU z2tNDP&hKfz$W7PMK09|3Q}(y^_Z)vg9#M9{u;ck&zz|K83|r)rI3XMk+|N()LLD)t zLwt$2PwbIBY!b2!bCIg0XwDqOJ&Qc%_Gq-wAO7H&Kg|Y!Q830zqhSvya&_DvPqf?P z_vF(1DqYx&c;+*ruNz6O=X?;^fS;r$GiyGGE7M<=tU9Vix61m?o=?CnrHFq*5T3g7 zrZ|H>T{4q84v+hEQ;>WvZ_B^f8~XDTr)kNX0TNd>;DD00P@Sl%>mE_13pPBaIhuDG zJtva-E$V_7-}0AFOb{uGN;YGVb4s~DkRqQG^$43m3vH*U$HGA`2oWtio4WN4S%8?f zxXTD(7{2Brn__B(vi2A z07mJKr0rLW1 z0boswdNGKkhG{Z54xV9+cO@oLn+Y%zsgO}-geE!y7yF$zdhz?SDb{~lMLAj(21{jU zbj2=Y7Kg2qiO@sU{cg5!5-D+sfg{z{>b(;U z7@z~cl#*AO^Gr}=xtv5Mk6^Wh9km?Msk0_|2Nsahw->u7@iAqv6d#m11y;skXPg`s7mgq-@(YhGxrh0$A>VP)9ie?FaSGP$gwQ#%o>01=q&s9U|{HQSZ@Et zN_+pE;lFc5L8i>oNnCjwKmraAAdO;luP~8xtMbr*ggnEb5>TU{(#Z;)$s z2{0Es&VZ@dg@jH7_1uHZ2yF@Tqa?y0Gs1`L1gTLXWuAXs1WX#Qo+r;J69MNL#j;j| zNb1uyBVSSvhEK`BE8Z{3>H$?f6~BKx!pE zs|aa(hcSO*duF@nY7j}?^zOFaXde_??Y_CIdVq*#P2bSsS`DICp9S4j+zWO?agGP% zezx^bl4jd6_Qwa~>>hn_NAez!10d{ez!^MENqWV?-)As{8~(`X9)Ml&#t0~_(iFY8 zA7w_+9hktKDk#i(@36hYh*;3ReZRu@A@$&$PkMj%>Pls3&G^y0A3-!=T1M@d^K|bd zj57{j!CnefD>FmSVSw}G0HQ#HkGMs83IH<%7^Q;)^sJh*X^7Rq(Ri<#d(&_t-)P2h zG~KYWh;ORgn%EKso!YkMdI*-Qi>i|ym8pWIW@+$lHUiU;9!&1tR+FTUfQ9S~Z zI)ss6kMD?p5-GuT9$s2gn*bW#S+jpufuoB1KXYRq0oo4`uTRNpLMA|IG~S(_`&M>A z|1mu5Mx(pH{d`0qFtWgqZK0t)*!BqW@OXV9^!^pfWB&_-TfYh)zwIBG;w@SVkAO_; z0Kferm;k(c?>MkWN8AP!(aFNtE636cUrCktbt-m!_p7f?B@FoEu}`>m=;417_<$4W z_mab58I+Lu7OxX(aFsPt=2^pU2|x^T0UJ#F@n1WM@{$=kmp_voy&e%}Pgjzu7ppB( z)Og)VNu9{lVA(`f^*+{G#`i*NSWq{&Rh2qgVXx){hjYPSP_GBY_LPhYDpnoat7bfq znDQiVgAZ#!dGrD0o1?E%wXAZ9O)eKLR5y7s$GN}EkB zvcX9=WFDp>8yt1R>_fcdwLMW(_0%(EDQz3QrcNCgKhnA%j)YDy$&{mc@i75*K zehisA=>#x}Y6MG<5>tOxMqf-$YLK6|b4H*@NxC@P1&U0ZSiyrF60GVdRFZmxNZ`)< z>6)UzRID#oyd%Mj;VlAj$D5=wYg%&xs~8SbQAH>HIQA3ic_8_-|I7cUrrR(-DU?3L zS(i~CO#rKphF!{D3#)R*a@YzmPBiq(n$$^5Y2ZIn8u*VX{q%pq0LI}teK?@kF#g{* zd2wIFmUQWqDtwv8l<)2#SKM6#O8qm){ME#S#Rt=b(-RTjd6oC^(ltFAsF~%Ka=WcI zGBCbVBSYJ}HYdY=f0Pa)Q@=*(UoTO5txB@?(m`ZutHIRaF@cmIM(fVfR_wG*J;F)G zx|lm7jR+%wt>=GU>k$c%@fwqpKG=O-IspMi7vSR+0ZA7RwR?p-(OO!Hd-}~^9h+k* zMdwrY^Sx2tOM6k7Y~3N6lf4G2`GN_*{S?fFUTXZs8e8)t!dE_6u^F1uY|lUlr`(q9 z9B+bruoMNi81N&NvRhfnC)KrWL`L-M9z~a6_zZs`?zDfTzKt{evjMC z?id`u#NKZ0K17e z6ZDK>!Z?5b#^lpEO~uWeO+wg_K1xMl*3Bq0g3U8<+HzvpJV7A%l>y`y$6 zROUS({GLlLZP4A~0GjAQb_W0W28}XqpwsuwvqCsBWrlx!Hktq@_?H{OeJ6P3xGJoL z2D^W^ph{@D5=BrRd%=k64ZEz+7)NCx!ObWW;k9`SURiCv?q0$-R@xk8)mZj}hz%k; z>wX8}Nvxwx#tJaH45mKFLEJ|hb74tAU@BXS>Szqz-fswEv^Fq)Hl_`YCv7gY!^3x= z01F}|isnC&}Ml zZ3*PLj{inOX~0|Z)bZbFctns=2dGlbIT9T#`O12WjHjfOK9=3`4` z1GXP9D%xB{6>Z#GhxyE%w0Or$C=nLYNL?9vZ@L|2%ABq$wl?T-dy0yDS{|OKfB9ep zmg)b55{8_v4B9S!V$#DdJp94pFT19XE+2P@?s|U#Imx#Hfd+<&O_?2vtO;Zh!!YYooh4<20Xa|A7ShWX&g{z>>^nuf_np8f%p{VnGNrAXkK1 zRW&OL0z(0_A%p7Lvjqxf*foFE4ERn9`W#Xm(}vF6DpR`FY=|2G>s|%K;^!VKRk8=~Y&d8JmAQyaY4A&#F!e zj9CLq0=sBWxoT+r^U7j5Vx>e3_qbf1`cO5XKnN^=jjPH3equgRf(g#&#JvOCQDT#^ zD)JwUuMP+tGh{zzlDU{wNCqYqOZuzu1k>=DZ$h!sOo&CP>T#=3Mq?3SLa;j59a_Ez26;fscP-TBYOl&R?LL8A zWWY#+EZP_C?@ojWW{q-=8>PbU*RPf1_xJDO?SkbfEjt%f*F7I&vf8heIxOe5Gk}L zV|*!fYal6RjeUjKWE0F{xnHduFJ>naH`8G%Vste7b1Ej2@OE=E%^|Z0D=ETzUJM(R z?fatOejBRnRs+y!wMgc>gNFulr7=_}N~DCzq?Qn;x<@~>L_}_k`Ot8?gIaCxhhc5Bu zj^m^>dayyeXbPLUELWeLdXV-8+y)tIwaEF>6Q!u&i~5xv69k3({33v`AHv zqPA0tec(fj#e{)i*Xeggt6+th5*kk^2wyL}1qlrW%#VL#kwO-RWOlcATj4OieEsVJG>eJ)R zx0Hf@q^9hep2oZR{iS?M%Z~hjmpmI^LYThmtji{l^GmYLHi1(%AEp@6Ap zT9vm$%>smciIM zh0I2I_r+$%=lXM!4`T1p9;*vEYN6u{S&x&imazA3!9G{-zo6sgSG1^$@~beUYfmFN zEM9-q{*bcyd1TQSi=r^Ktll~7eOR<$5rJE32>0Px?~n1fDNdOWqr%-JFa= zJR#9W29YgP^c^ZwqKRgKbJZ<|sKH!)3`KE1`ZDiE3F8I7MQ$6N{UMbTPOHxx+{20B z0#rxtRQfkCO8q_t=9S~OFA1>wGFvf4h#Y_J%H@!V)n5#XDmc_QAV*z_ks_GupTY1E z*2x6wPQ3TDJ+G9LV37v_?BferbjLdNwX+eyf$=K&O#*yH!_ZRduXX{M#oj%(PRr9i zE#18d#ThwK@H>7BgrGhlngI~W)jMxwB1_V;JpFWIL?+-RDw+WlIl&`Q_tJJIv@L)4 zwuy$c8vcV56D678ZerNC)qJCeQkmWtw+FrLVlP1>eb2Z|K(=bV5H$!0HTpHM08z|r z-rLr@(vHHvqsZNATWUTLxp&x{=kTvC=MW;ox>ifcl`pG!iJK5ozuu9?xWfvPom)5Kn(djPZyeU+hE5-2D&&sv9aeO+*Gt2x76mtkFLz z>dQd5N40}@zKfFBwSE#Wn*OrV_AhIVKfdu&rGGQyqZ?p$)YKz)mo9x*t>{y>P_e^h zm^;R?kR2GS#AvCa8Qs|FZ%90W{oEr1P;e8EqL!{EanIR5!WB%zwQAp)Te)Q zGNJ@?-}G0CM$w|o?Fydy}SbC}IF1!hWR0-`oo3uU_rd0R_GrLEUi@o74!nk^cS z)^D6J6!hI@rp|SQFe$(J(1Vh88#BTSOt;@S_Bfi zFOl1q$h;_;FdDy$AN5||1(np@DbOS7Q+vI8VubFiSN z*F4#2DuAi3Z`ffwCIVPkTiB#_gQqNu6Q?WFKi4|*@R^r;ErNfm{lF_r0?W$qJHx*N z{D*NCLSOkf`C~(v@Rsk`rYBBr5H3kqii_1;hnuIF!5_DdMZS%a-2^v|VAQ)jSgcjCB^!^ZtJcH1Y97qd?h>6qH8XV#Nlgs5J7v-ikx~9xJ%X%f5sAnC?O+Ca*FE z6ZTpb(o0VbmWPvEl}P|1;4*kq6ntUH@U|ueg$D+D@98uP9`7-KKN_bm50^0~r{ek% zzNoUDAKovv;9c5?dU*BJ#NxH_e*DzExL|u(NTW{Qn{D1y?>IY&Hg02*Y=;e zYfS2J>^SS5zsa(F=3QG~7h~yZBen)})ihMl&^AoA zPu-q!KL+a7f}GfpOD!-N6}ok8O9U6G5p5KT7NSUTGI01dy77aCYoV^nAdl!KCK?2U zi{I9H_RW7k{e4((ZKb@rTF}+ik_(gJA#FZXdvvpYGSM#cVP9R{1#v1b}<>(jXLKX+17{$7Lz3qpK+SSKr5kzcswOJ-dk$cd0F~1mi(+x+3SFB`AIJ4 zI;($=9G>z4-95)QYIouE*9$^GKKOcN==}1ii#~UCTmnlk2Y*h!4dO``;R`h6viEr1 z=j_KINeJS{YC@Q%7{t4HG?2HxtJI78~> zA8D#(v6qyBF?o|DUhYiUpm~cS{I^EfO2F`;%8Kd$_l(I5aMM;<%?rTueNaf2RHqmL zFARxMvFati-xqwwH%iuU0zs5RxFr>YZyT!Xiq}U{U5(x}sfr$k^n{8=tKkwpsqudX ze&D@B0-o(d!{(Gp1E!QiFi=xl5B&*d>-5O;P-B<|}>tqS;l)@BCyfuIXb&=6?o z4`5oD^mk}jIOu-wyytzv+(UoK0g+rUYKu~|Y3(XR6Cu3%fTL_?R1ah)GDDmanTXq8n*bOee zYv2pJ2I`-iYVUol!`u_Mi&MhO478 z8kQF#K{a#9`I}@f`MCy$-na4FG!!$*TZwd(GVYmiVj^9o7y9hdeDs|+Mqhsn=4xT6 z)$+GLy@b(Mmn!Hd7BgQpmmJF+8{WAl1U&&wCQ zd$j0WxS3uo*VjBfduz;&pr|U}U19>nqH7UdTOJ|?!p|Y_BlNMIbvZjavqK$A_DI}4 z?Kpz$Ri0RO^ND3<8q;It z?N?q2np?#X%Zv3w{Nlv)?HK*Y?92WC<1C+nJM#%z-N>>_xo!oGdJ!-fug4bQj%z}b| z1f*#zI)eH*6ZO>^xZlO(_5}6>fjfS)7^64f~bKTWCx7EfG{G>9%ypWY6rx8n# zoC+un-C9=0>#p9JBwpytSnczrVhi<}GNnMT8 z8Xsw$2IG+(l8*PpzTwD1Jay0rOoyc@$jJTrtdhN|Qfwl&Usf(*X)&d22s%P7LA%~J zOg`rfyT%tZD01?$q6sxBHNGa?=R4fq`;pPk3`;eLMRZWeX1UYGNRQRNuTs;6&`+{RlcGx+3sHvi400wROrq;0ZW zN2a)KDiMFcZP~WGxpDt-k@c<~-SGk7&In6(|zziCYmDByMov!le?bD1{cOzhM23m|Z)GlNMI8c6R5RZ)WG= z`^br1KkBwn%Dw8c=CL?L7<(yC8O0d+VLxUZrI8OfiUXfhMuJ4kftC}8VH|&rP+O4~ zZys?*93Ha*At8OjN09u4Qx^0IOQ@!4PC$|bJ$7Ex$md&|#uSO!(hw~C^5OQ@BmCm| zHd;eW?{VHwHd?isvC$d~2DW8xcurLj*cMA`uY8xrpxjyY-Su|8y0SlS>N(Ng=I$PF zyiq5)bO=RnA;k%dBc2IOW1)ZEXw>w|#3FQ?(xOfmJ<@4BSm-pGO}esF_s9Yvi_0qu zw7KMZ^|FZ%kHW6+a4?+s&Q-1?Q(j6IN=1((UJv`XG~DL_l{)c7oQX>${)mh0ojA`< zvg7O&!QnVN5!cyUkWO1jTmtF`d{@~q$QR-#0+qb_4*RwEjl@^+S$uyI?~%9?XXxge z_$banyvRK z4=xOe8^Z>)(1x0VKTyG>|1p=K1|}s$S?jE z2Vrc7@SdH_t-<$X_t{h1QUtbP>xMON+PXa*gK~+KOWmCAjXRPfOB7PprK$xJV@_?Q z>ZmX%mxD2!y7Xd(h_XU{gp}E|RbgqReV1@*TzwDdYspv4U^&@V8R8kJrJK(NlE8jDflTsB;OKpa^KZ&@gBK*T}5xi0C zr9>A`y=%fpW%?ADh3SK3Eato2?k?&rc+GI<0uF9}4epNy(fcr1eET5i$J;oZ-5>StqK!?Z z@0Fz27gyK7_qRB?<>y-Zb5!sHJ5WarZ$T?EDoFVZtqLW{vt$#x^O|KUHz5%^(S+MD zAzBNjLnxh+$8Z>rrjvhoT!!!O1EzH90x~um4kxqe$?y26lEs4NWa3qy5bs45ICzh0pm z@mrJ30s?C6vQlOeEw)yutcXjebIuqa$CF{Qif1RI35!=WiAR5@lks?R%BQ@Y*ppX2 zi;Xglux3PJRt`pBnB;u~?WzXEtv`Y?g$0F{I&*|mVv`O05IDcaZA;dyaiMCLNku5$ zv6VA8*M7s)^BPp4Q3G>r#D)S=AYw)XKN@T$d6dG~fiwDhVeBSPR~Zo!0M66^L<(j5y~x5C?5VlZ&}jqC zw+BfbejG)b<@ZfNSRqYA%Z032`_C~YJubejE>e;elNEn7G8Xz1^j@IY32HY07nu#Z z6s7Hu;w6p^6YGtAg`_gR$@1icsw)7Ny|hG1M`Bd26IQ5!D>uJ~1b<7fCc=I5R?eP* z%N|#q397v{4w}KANA}|V^~!|RmsGL8dDXN|U5j$|J3ZwSHYPtdd02l_BLF@z@0%mKM@eBkZe|=PIPunmQ{hnW8p`kbs z(w4!hc7>=CsZe~LAx2|?sd7F*8($rL?{G_eiKFpPj|yG`mX0;d6Q&;eJ-+e4 z1u!GR6G2uloJ#uQ$X7E5poj7G^a}mGyH*%(uB6O_JM46zJKStG3&(O>c?*@;iBh&C zC(yke(eQHKJsCV6TMFNCjx5(S3fh@>KU0kF`I~;se>G?35abGqf47>Fv}fAej5s{k z8K=Fd>vw~}zz;}2JonE}&xqgidwstb{0RGlW(rjvppXVqC2qBgP^ih80{OP`R`18z z*=|Hq$%u|kbZMXmURCFMT?dRaP8m4ucKe@FR_oYLFx4mJCMUzE+EC|c;XG%{Z;h0X zV)d@Gx&ACgg_uAH(~M;#Pn8LSWup@tbXY(xAEFSoET z-6Sl3lHA&xH8??4eBDB?C}-6R`CSYmcD zQM21Pib&TyAfi^tFc&1BI=EL7y285guBPKs6)xt^vAcM*eztUD5>jkh_SVGhI5%1s zrCc>ttIr>sn`K#mCRKsMmXVRV0lMTo<}8VXrr?2TwLmn=aqY~8s)MtPBq4nN1ju_; zKg_UZu=fKB8kEmk>-zRw<-MxLLdsBKQM;R0ssJu1(!kW1RIx-9SA3Xn=ll8=T}(T1F)nC z<|B}7UDT(b6XTmBxe2V-~O%x^w2@@Yi|?wM3vJlmbx-QxD{Rx2(4wBKgfjVSCH zXr;BVRvj71RiO6nen~Muhlb za2Ud>oFl?Ar33d#bPzFO0Sv?VFr>xklL@fPIy^-bQw25HXNm>L3Rb2PC_yP;6(D?D zDg6VNP0^_P(^x`fCRnW)uUd5y%_caQq7aezYz<0!##^-W!QV;66Tr zZ&E9%RJg2vH3-8v(c2g$-U+Fx3yujQShZF79-Khv`KRl2G%5^daih(0O31Xph6_fe zrY!BRx^?yt*tf=S(q5mYhBqCr>UochP<}{z>HfY9!GCy#Rgb!2w$Tl|Jc&IyVvJUOWuiw_6x49_DyIGkf69gy7vNqXUdVZ$cI3u(4P%6+O!cP+S3Le zb((s@F+A&)x20)~H}sWejM46U4;cFJRqY_~%>p$RlD0?JIoi?=mD+@QeL*+$=@>Ud z*xm8IDe!Z_q*}@MD@Q+^)p9hLuhy=aFpm!>-90El_o}~W>R!cmkIB1~hx!=cO6FXY zNb*KhWb}N0@3>2Ez1($uU#_6~uB-ZDHdLW*Ez}a_aYcO|h}PN!2-mgQOjHX_P#Oer z04E8BejfTk9>T~Ab6>l`^I(z?oF|DN!PNeD=C1V@P)h>@mu|cl7?(x;2N;*EycY_W z$5{s&m(b%72)D){2=@vJVRjaYumu1BJD0I16C9V~D+nZi>u=jO5dZGKfuM|%^8^ZyD=l6@V^K15B#Y#1<2|QO= zNSuqDHH3o5l3{YM-Oji&iL{bLagjGPB{%qra!>t3*6~(%YP_iHcXi zxcZsXUv589a*~{#yuSNsWHp*@E$QGfpg844x3nsmT1(Ve0V7~x0_qLz zel(v2WM=yd+j9fQ_86Hh!Z1uCH=;fZr`C9y6+6)IJVs^? zvVxaT1IFl{i4zI?l#l?7{yg-^o^1!S$Xx_U6wH&kAGn0E$X~d26nnPof3LT9 zgZfQbf-uB1#gOch#A;ZwG#MlCqb(x((cTKoDHH(Bo-{gvFx0p~AJ>7lk;MO&A|Lic zz1<)wc(=hMiceyZE0(M2ql5ivt#0~%vb504&V_!)byT!sgfdy4_EW011vVboMjtDQ zXdE$WyRqZ?)LVFww_u?Y65n%NI|%mjxt9K|@#y4cQ`9$u6h+G8`nFB=#*WEcvxG^e zZwZ`FpZ{zeS6xNmxawWpS~b=PqvOBsQ#04jEv`gPrKth?JfU+#7qjZ(6Im6<>f z8TM+-Xa{f024IaoH8kZ~#AW`0L2PJgjYdew9{eyOec4u|-{X!M0ibaT~$~yfe|3Q?R0qH4a6R_Ys&?uEg3%oD%X+#j)>Wo&E=y zZ`x>aheo#dXT!)>#9P!q0O|#wC&uncrB>H%t+tH1sGk?;=KcBmB|5u*>XG&MX=sDd z1bjF)l^ic@-GouUzdA4&t1nLl{n65}vKtMI(Xxl>ZVh1e#?}r1dO(H0vl|QAuP+S- z&Bp=P$fg=(toLWKCftD9cG#o*ow7b*4{hcMV9lj5cwf2C6n-ow3Y-1|qFloeMbO50?{{f1r3K+eH`j;@cx zBV7@zwxNL}hSHUnP$Z!c9_we#RMHtbg5V4{J$B#ChA|u+biwT>OH0;wJoBosJ(^>K zgmJXS$wIjWgYc_kbWr^yLXYQVr>h-vaBZYz4iEOTbzy8w7)SmCYX5WHIUu0cD-nzI z)T%{uxNMKi8aIkKJ+)S8X%sj8H2#$E@7Vd#zDEafytP`Ebq70Xzl}-<36s~r!T+~^ zG6?bt3TG=g2x|}k075sHk(UD-mk_@f4VU-~1R8(6TWfOLNRs~VQ`E@g25A!{0r074 zw%To}d(^9zJ!7w9A|x461PWx?c+e<-l0EH+y~h6ApR04|CVP_2EIf!8B~j`gh8-k; ztgOtetjsU7pr^zNZ0;}iNgO%qj{C6|;&Gpu>?-O! zX{U4Al)GQN0O`sTA8sBTA9bp?Ub#VRIRFL%}znHbX=mZ6Ob7}`mSjQm%bZN+r$NF z@hB++w2ZNO2?PvNac=5#H%VLEwtsf<-8@c+KK<$a;Tk zy{B|aj5jhWhw1d-RLO1f>)Y3-N{4)oS@>o4uhKXv6t@q#4FX|MMN};h0-Ro8BtDO|A(?)8W&P7SjD4Sbvd31aC_JvKC=l! zntk$2DC8NDE7m!O|K+xj5@zBpNJOFn0qB8Mcc$)>xD^gJB^P@Bn8A?l^yyz`U;;<*o#t z1miN#S);>TiXO8UOjvZqx;Rwn+_t1eZvj>$6H@Lz5T~FdeiH4zfRLHIXG(v_R^Y5) z-!mn)qcsq*CveEOmV@fMA#Z#Co*zGI(Gel>$aepTWJsP1yom~`fW&-*ZN87JjNVa=>;oMMJeRB z^10eoNhCGs=?uIEC4r!1^g0E8o|3nWku2aYc(jb?nDlz#!svkqMDd)dw%g-E#7y*z z>B!i^$1~yy0Wk%+48l*u0r?v#8x16lH1JaMSGG2U{}n`%EpD9d@TGt4&^TI_b~zKg z_wMBZFr6ilFSlj0H*d)gAQKk1+g#_$`Z=Sh|6|K#=n5=LevzAWrQ^$NCKgy#Bd3E0ET> zq4adV_U#lhiEG@{)*}Ml7DO-m?@X3VhcDoR#P9WBxXgB{0 zvH>zBzusJfa8*9#{i1mGaDO~x4x88mt4}9-f5?A^)Ba#Eoj4BDm_`SBU6hUQX@luN z8;*>Azd{tRBqFqFB&F8-+PFXLj|;rM6)Xm>Pd!mHSBh0Ld?_m4`H8P`>EC}meI>U!+4 zf(>^QY}m6@3Y#iqxm}Ac?LIVAVh_8RG>8>Fbne?Hu>&ji0G)qRj$XWk939}oXvS!$ja3>h7?yub#=K#_ zug=*VeysyH34JaumxWdQ!`JL~0Y9?%N^UkVTo}RbVkoZYRj)Mzid`A5q5f2{YK4WP zQA9t-f0$%R7HalroBFV$RInrZvN0H!V!;|9b;uwbX!@h$!R_|a2KpG>Hw@whQw4wZ z7rRVzkt9voHJ0Ect^U%cF?KaJfY0V)<uvzPD?;L_)O>-XVVru=Z+(X}#Pc-t?Y$rJvK#e$N%b^}0oyL?e)S z88T<~JDQAz=Uu^~_sI0TbuON__fpK7G~f=-bJ&W%lDoau*@qu5Ui^6WVGlslUPA?1 z)%^HSX?J0bI6&7Q3nf&F<;(qoZjd z;dh{C5f)-q*0`%Oo~7>80k9f7_Hd$6-LjnF)YctqIM$}t(9#Uc8BIspPWbQi*qlxb zLz_MT|D7=MhWX?ljC(b3*9^LbcK|qJI?=|HDu64LFxsdNt9A(&wGF!^SR}r7-*YEe zD!SrovRro_Jbhwcdd1dawa9Q?7Yo7~vrxJcVANpY7tJd}0y0tsB>9{!#l z`4H?Gr;aFVN2omSDxx4Kq&3s;DcDsZl%N^fn~j3Zc?mUqy=CM`1%;B3%F&g$+hanK4eIJq|zXcFhv@sF*Sc6pY2{-O`vqq zrn>Qft@Rd!A+>?^O=a{a`smh8WsJwe!DLXYii!nw!^tHqFN(;0d2X~{t-QX~wxJyL zZz`VdvEZ=fO>UO8WBA>}32N)C{O#l|X@%@FqJH8y-ij^SN+U}giX&cOs{xmg$YT|G;&pRP zSOlRlq!PRZKF8BY$V-qkAe2eWhqxF|>0S6Q2n>oNh|bCbT?>D3ec*A{la8_qxd6{X zcPU(}4)wUpshd=|f?1)g)zNE07K14xW=;)5A8R$A@$8{&$PXsNxlKn*n+)05)`s@n z8cpY8eNNeQYOr0?yf!wB!9!vZwsQ)qk&S9(ADcgka@gkqPYG|X6YXm33Qf*X3EBRK zJXLg`pLaj5*uj6|ueZYkG?$?n(>tT$us`bSyLsoI9HJ`uujW&8upnLdtY-xg7PV0H zdO_HWmK1X~RhhNKBN3(oA^*BmAp}7+CyTkH=EG=J9I8%-1Hgj+F6SBz$B-o-;9Rd= zzUC|>zd^0Mj70|>h`L^@#DI)29p34yqrRa{9vMmR({3!h&_yIr-6iC$ z0;sn*1kWB+laL&3>anEr2#ErspG2Ihh(k4nSKNo-3|?w+Oslcu1{nSP0H48~BA2`s3i={x!F z)qwL)LH_~XdwO_yB3;(Gxel3c$6kkkzh3bOLgTBOYgC^cO7)Qnl9P=Y^-ZEGq}3&> zz9m!j-!^u7N)kq&V1863(ZBqD0^?D%e^2L+%K37sufMwph`&}{TVGaDA_(@Eyuc& zS^5e_Ugjm_IW^)dGdqIDp6E?jyz+izp~8lTU?mZ|QL8}TX_}Zb6Uu-2R=X(dhRT$$HqFZK*KUNxr_EAUSZo&+ zt6DtM&g4C-RdO|r%Dg)j;Wi3Y8Q}?jWiX!OS7p7Zc2Tx87`OKpTOq{dyhmDS4_3Q_ zq4GUF`|!iX3)zI+!)|1frrQTu)A2q%$I4N3L#y=!p)*-w-rWefVJ+)wsGQe9>FoFJ zeEezr^RNG$y#L8suTQ*x4lZ8~|Nem7{L9TX)P{+W1Wip;@(YTD8TfrrKaVaZhuYv> ztBK=?#8@m9cGp8N+#h-rk`c-UNMe8Kw%1K$WKen@6c{vxcfDsKdFz=xE1i;*xFW&! z2%k;d*~$RMB8#r9!CE=X=3Q5aYDMr`h)D9S)J%F5JbhKhuD;0B@ZoG$O6Z#%{0e4_ zLpBetcI%&7`M7GTzq6I<;j1W{@r~`%H{bgJ?tbV#KWMkk4}Smay*KlAxq5$iQrzyJjPKiBNhPC?}8y*UJ^SUpJF{<>oxIrdH%IYF(+`$Q{* zyuamIWi2sK>*iYOMQr5=6x)BhyAX9IbUROWFB+7DtuOH}`&c#pD|e#8a7iwirvm zPf;5#Rc2$gsMWNB@wvxFOfG3oyS63*cHM;L1?4M$(M@C~6=kwZ*Fag9!IB#2_VI}T zw*?`LC&tROw(1ab(uMr2AIHDmz9}D0@;m^xE(=$%%r8U!;x72r8H>=JcZSA|GsFcN zH|EgDnL{!~6YuYmih)iPFASIB{}7f%CMg5u*xF*6=fB}dU5I}}33F-|dfmUezUud{ zPhk6h`gI@p2ZIz51vDd24`ZkyOCx04-3+BWxm<4C%t4$}ldL@^ZpX2PAJM+#7Vfg* zm6Bx&+AU&x z7Z7X_PE=XYY!PcPhKrSsQ1}wR8tyxb&O01Z9ZW>^@ZobItKp<#=Sqi1=}vG&DX_l` zaXGBS>Bmxj}!lM zkDZHfNeKS0c?@G#eg@3yXCL!62wG>(Q`KxRimW{?t|<35H6Fc5Xs$bB(U{f=4n&VB z#ue0DLVY?(FlZe1rgeZYC#VEZj1$mohR#pVraf(`l~lzOYD!TT%!*o4O#EO%sA1y= zp$$Q>_AGy4!-VRQm?_$^#J9*Hn3>Z=Q!+Do-u99uYot7gO(A!gW;kV^XgB$tx~?vQ zE*W*gElp_liU#4aAJ#_O`hx@CVAhD&berQn?WcMPFxX*(U8zN_iK18n+bhheZ&E54 zDzlPzi7V-z-t?vx`6RsQ(^3Sl^b zOSMB()(G9q8-qsv!7wtr2&FW{(O5h<^v;CxJV!Enm}vx&B(Oq0~W2@ zCJlc(e`0wrUep1&B-Z_5#~*h>Ys)Yxoj6|G~pIzpX7Vqald zLccUAXtXBDr~*N4Ze~YVnkmx?qC;+nuTt4NQLsz7;pRKU&;f%+tEso^dt%*M!b2OY z=E+@wxqAsXz)+yl7zy>(1Xz>mdDkB|CE?n;fH5y5`{eFV8)NRu48_vk29x$M6@`CH ztatxw3y2dDCB_kAAK5I3PE=&BVw6NiyDCfjWl%#ZOK0VOn3!-Uhkf;bKJ=e__0SJ% zbEaS0~aORuzRTz3xmBNENl~rLekCzv}&O@h|D@y{I3wHxsd5z<;T7xfLCd{)F z5<+g0X1!@1mf2*s$TF{{1IbqPQTu=5lz>j|1>G2#ete|pJ3SFxGhWak5&C0JJ2G7N zfph1A)>jt)D5s}Jiz8H(xea-JZAza^fE(qcob2V|6dRhj#JD4DwE|%y=LhbL)ni#Q zGV>0p^4ep&Z32a(yVb>cZq&VFlXqC|uG{d#9oxLS*)=Q~SmiqlrxH@vjwyftH~M6` z)D2zFhg(MbdfwP^hVR|>|GnQ=8gKVpw|kSUg4NTkL+qxHrL<$H3&qepVh&8G1f<62 zKfgO|9qzKoh9<59n(FR+k#NKN%OsS@R>U2QfJ6Cf*b*C!zUIdC1?g_4W!4$*l)oBZ z6h?mnP)h>@6aWAK2ml}mAt<+0U*jiY#D8)?;KjV_uN0diQh+g>b(pv95JKoV7wT4x*hzn2vC zw9}Rc%bfY<{a`9Zfe1-!T}vPY@uCt^qq^jYU_f%NLDF1#Udxc+d8w5N6HyeR>;xXl zRNTL4NfRw(iwJAYbJZcRhs=3aL<{n)M1MJJ?iG~^2&*O4yrW4d#8)6nQ>kZO;CWt> zQ>Dw64@Ty1K&a=x{j1VX)qJ8e;4I zRrZ(C5@>?l=L)^YzALB67MeaMBUw`g@ z|6xVb)IYOZszf`6a-;Ls)dWWz%uMHJcaPBrSRE_Nm5HgD3G5Iyy^ z3*X1#bG83&By#lJZ}VZ0B4Vr69oD04v>X&Kl!Fn=2<9f?{> z&Xw+E-N@Jx!jm*Qt^z8P%%o%wFH^of(#LBRbSfhhZ}4k)u|5XzHdgPCaqy!*>ztjL zHsd)cKbV$l@N$Ms%1f0BSr8>^nZVsJ-=h#LfNEtT*lfo{~u)8aFPE>S7O1QGY4)AQ7FVArYnKWepRC^U_sxY$2yR$WKh9lacREJNmuh z**T&&VsQQcDegGA6|QexS+Vq=>_*Cf?=#(OrA_sDYe{LPn!EX$685UkGE%fSW! z000)3p@aw^mtTDdB!A6v+cprs>nYG?GNfvfaxBGhHB~*C)J@z;(=>M4gX3}_5|mJb z1Py?e-PG^i1qf0kMafQX#YGgbzaMrN3nYT4C=8QA6@r8zqG`^BLPbU+9+Qw!MFeJY zFt7`P3t7^?1AQw+ud4TcqG zp(vAW#v&s!!Z~?!{_9(>oDnRXV@Wccl5!@dkqQ??X-R`Y#ITg;HLRZHT%De{rFFxp zp$-3d`S$du@Z*QKXoiHdR4SLp)6vL1o~~A_Pr>kb0h|&zKWRrsH#8<(>g9{SMwfe| zPw}4rFG=Sl9)AtpKTG&GRO@Dn2UPDA~HK&v2lkSS5iV?l` z65K&!~0X_bTstA9;giMa4cPqv z@V{`Hp+X`o(TX62uL#13aejrcGLRE2*d1E(LKxh)sX;i4QOX7B*#)B)iU3aKCK~dJ z=3&fN8RJ+3b1n+vA@l^L>n1W*6UnaxUHAyW^qxa=gk84;ivD z>wla+eYL8xlxyv7vsAks(}q3PODJs+0U&BkeBqd%vvSF?Q0tN6j3z{yGXz-PLE_bG z35VoYTGGYkdUBFlTB|64Bf@p`bUD#*j3yQNv;|j3sikR=Sls~x0m)*wM8!r#s2MCl zdmowx?jh%R8Ap&RvvKeu*mr8IJVQg{nSZm4B}^xP6Px`E2QnG1jn{c$4XjQ=*ShQ> z*D=f1W7t?6W61RzQiIS!p^~)|hKi_7qbJuJ(Z->UhPA<+x>Yk8 zcvu&nU3=8DW=)t2z7Rx8jZFv5maqo2O_pV>?QPA_#j-oc_)1T4D5N4}qJw_d1b4uWuKSDQletL2iemF7xnCp7Fo!aw`ZA;bb@FV@~YVdk&+H_oxwYxjL?0UNC zVApI$rE*i8y9}rE7^CYcqM359hkp&*0*El0yN>4!1DV5|`5bPlZV3-0G|g^5kv;}P zMN()|lnxR&lw~n@+t>)_sSe>yh<3gIEBtS|)7ukde%-VSgQ>+04we zc(*$a6zIC82_gpl0|8Qt?AWngmXTK#@RA(5q5N)3*widRk;4&9+|N77^stRrXYT{J z!!R6?-H2CXBeJ|s06#^LFAtkiIvASnI=N{4y{zrA2Z!ksoyW)o#}tov-CXt*&gQs( z09bo2;XK#pQqoUN;5>UEK7VvbJWz$U==^_e>DEh7FLg5j%x?Km;k2qp@T$20t_LV# zd+T-m9#Y(XVIN*H`P|&TP@#H)J&0_Ob}3L}6{oM?sy9 z6MwB^GX!_G$(pe)>-KQ!1-|iMV;Yz$cj3R55tw%?k)vE)k11`pJS*F<)QXIY#c7x!oA)9Ehn{9WK z&-?dIP?}{c{9VtblYYp0eZ3(rxM~=`TC=%et>0IPBNX zcbC%frAk>ec}X4u1Of7FWV6Tyj{O@ne<8mlr${#YqL$PndDqrRJ*?ZQs&l?` zD^`CZ_#}wZ{%fJgL(zWmBBUe{TsJK8f@0Sdq9h|U7m753j@W;Vqa0HdvllPw2Ery! z6i=SmHLD4=e3B$2olx0NL$Y&~Q{?A_);+EXOy%K8moKa0{!ZP@DP$<0G=KI&fS;<) z#W}^;<^5PrVH2-r8=-2hT+ldVYf)XDM*eNJCu!cl~+kz55bfYp!oS@T}2+n zY<^h*2IeGD3Y~wi@`_Be+ns7SuM1-WlnHfHlGd~B?XpdlPM!l@+50y@6o6~$bB-x^L*ZH>JM=r`Pch9uNLY%c+4v&lco6TYMw*~Y9_<@ z^G@R7U~Y)#Peyb$x4Qg+ogK&M8q;Qdgj}N-O}f1;OHCs!@=>#^)81LrkdGS5y|b;R zn(-QsH0ysXr`#lyl}&mj1fbsZDN9Xbay@FAj^Mdz@JSlr6tPB)ws=JcDw-}u&}ixD zc4uKy7@OmWjk0FqvSz<~c0BDgYN&V5dQCM{q=UknG#x{6ukf1Ys{sP##dOksu~(Jn z7m%kYjH8A%y-s@=EuJmZBa zVHCyJ!0%{k&MGKvPa7tPnyK1~NihekiVl1z7JnEfwF W@VpXrdt-HAS5(tL{*n(W(zP$2*uOs>WZez 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

    S&&{c^s+UBv!@=+6;5O* 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 z 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
    rtPz<0QxAH4A$r$*6_h>%={wtTxxl>&@Q%RQ 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 Zirkp7R`75dE*UOq^0E`HnxsUh)_;|o=b8Wj diff --git a/youtube-dl.1 b/youtube-dl.1 index 9ab22b0..410fce1 100644 --- a/youtube-dl.1 +++ b/youtube-dl.1 @@ -1066,6 +1066,15 @@ scale used depends on the webpage .IP \[bu] 2 \f[C]age_limit\f[] (numeric): Age restriction for the video (years) .IP \[bu] 2 +\f[C]is_live\f[] (boolean): Whether this video is a live stream or a +fixed\-length video +.IP \[bu] 2 +\f[C]start_time\f[] (numeric): Time in seconds where the reproduction +should start, as specified in the URL +.IP \[bu] 2 +\f[C]end_time\f[] (numeric): Time in seconds where the reproduction +should end, as specified in the URL +.IP \[bu] 2 \f[C]format\f[] (string): A human\-readable description of the format .IP \[bu] 2 \f[C]format_id\f[] (string): Format code specified by @@ -1120,6 +1129,11 @@ padded with leading zeros according to the total length of the playlist \f[C]playlist_id\f[] (string): Playlist identifier .IP \[bu] 2 \f[C]playlist_title\f[] (string): Playlist title +.IP \[bu] 2 +\f[C]playlist_uploader\f[] (string): Full name of the playlist uploader +.IP \[bu] 2 +\f[C]playlist_uploader_id\f[] (string): Nickname or id of the playlist +uploader .PP Available for the video that belongs to some logical chapter or section: .IP \[bu] 2 diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index 342d6b4..ace80f1 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -948,7 +948,8 @@ class YoutubeDL(object): report_download(n_entries) else: # iterable if playlistitems: - entries = make_playlistitems_entries(list(ie_entries)) + entries = make_playlistitems_entries(list(itertools.islice( + ie_entries, 0, max(playlistitems)))) else: entries = list(itertools.islice( ie_entries, playliststart, playlistend)) @@ -974,6 +975,8 @@ class YoutubeDL(object): 'playlist': playlist, 'playlist_id': ie_result.get('id'), 'playlist_title': ie_result.get('title'), + 'playlist_uploader': ie_result.get('uploader'), + 'playlist_uploader_id': ie_result.get('uploader_id'), 'playlist_index': i + playliststart, 'extractor': ie_result['extractor'], 'webpage_url': ie_result['webpage_url'], diff --git a/youtube_dl/downloader/fragment.py b/youtube_dl/downloader/fragment.py index 93002e4..ea5e3a4 100644 --- a/youtube_dl/downloader/fragment.py +++ b/youtube_dl/downloader/fragment.py @@ -107,11 +107,12 @@ class FragmentFD(FileDownloader): def _append_fragment(self, ctx, frag_content): try: ctx['dest_stream'].write(frag_content) + ctx['dest_stream'].flush() finally: if self.__do_ytdl_file(ctx): self._write_ytdl_file(ctx) if not self.params.get('keep_fragments', False): - os.remove(ctx['fragment_filename_sanitized']) + os.remove(encodeFilename(ctx['fragment_filename_sanitized'])) del ctx['fragment_filename_sanitized'] def _prepare_frag_download(self, ctx): diff --git a/youtube_dl/downloader/hls.py b/youtube_dl/downloader/hls.py index 1a6e226..4dc3ab4 100644 --- a/youtube_dl/downloader/hls.py +++ b/youtube_dl/downloader/hls.py @@ -163,7 +163,8 @@ class HlsFD(FragmentFD): return False if decrypt_info['METHOD'] == 'AES-128': iv = decrypt_info.get('IV') or compat_struct_pack('>8xq', media_sequence) - decrypt_info['KEY'] = decrypt_info.get('KEY') or self.ydl.urlopen(decrypt_info['URI']).read() + decrypt_info['KEY'] = decrypt_info.get('KEY') or self.ydl.urlopen( + self._prepare_url(info_dict, decrypt_info['URI'])).read() frag_content = AES.new( decrypt_info['KEY'], AES.MODE_CBC, iv).decrypt(frag_content) self._append_fragment(ctx, frag_content) diff --git a/youtube_dl/downloader/http.py b/youtube_dl/downloader/http.py index 8a6638c..3ff26ff 100644 --- a/youtube_dl/downloader/http.py +++ b/youtube_dl/downloader/http.py @@ -284,8 +284,7 @@ class HttpFD(FileDownloader): while count <= retries: try: establish_connection() - download() - return True + return download() except RetryDownload as e: count += 1 if count <= retries: diff --git a/youtube_dl/extractor/abc.py b/youtube_dl/extractor/abc.py index 60f753b..87017ed 100644 --- a/youtube_dl/extractor/abc.py +++ b/youtube_dl/extractor/abc.py @@ -1,6 +1,9 @@ from __future__ import unicode_literals +import hashlib +import hmac import re +import time from .common import InfoExtractor from ..compat import compat_str @@ -10,6 +13,7 @@ from ..utils import ( int_or_none, parse_iso8601, try_get, + update_url_query, ) @@ -101,21 +105,24 @@ class ABCIE(InfoExtractor): class ABCIViewIE(InfoExtractor): IE_NAME = 'abc.net.au:iview' _VALID_URL = r'https?://iview\.abc\.net\.au/programs/[^/]+/(?P[^/?#]+)' + _GEO_COUNTRIES = ['AU'] # ABC iview programs are normally available for 14 days only. _TESTS = [{ - 'url': 'http://iview.abc.net.au/programs/diaries-of-a-broken-mind/ZX9735A001S00', + 'url': 'http://iview.abc.net.au/programs/call-the-midwife/ZW0898A003S00', 'md5': 'cde42d728b3b7c2b32b1b94b4a548afc', 'info_dict': { - 'id': 'ZX9735A001S00', + 'id': 'ZW0898A003S00', 'ext': 'mp4', - 'title': 'Diaries Of A Broken Mind', - 'description': 'md5:7de3903874b7a1be279fe6b68718fc9e', - 'upload_date': '20161010', - 'uploader_id': 'abc2', - 'timestamp': 1476064920, + 'title': 'Series 5 Ep 3', + 'description': 'md5:e0ef7d4f92055b86c4f33611f180ed79', + 'upload_date': '20171228', + 'uploader_id': 'abc1', + 'timestamp': 1514499187, + }, + 'params': { + 'skip_download': True, }, - 'skip': 'Video gone', }] def _real_extract(self, url): @@ -126,20 +133,30 @@ class ABCIViewIE(InfoExtractor): title = video_params.get('title') or video_params['seriesTitle'] stream = next(s for s in video_params['playlist'] if s.get('type') == 'program') - format_urls = [ - try_get(stream, lambda x: x['hds-unmetered'], compat_str)] - - # May have higher quality video - sd_url = try_get( - stream, lambda x: x['streams']['hds']['sd'], compat_str) - if sd_url: - format_urls.append(sd_url.replace('metered', 'um')) - - formats = [] - for format_url in format_urls: - if format_url: - formats.extend( - self._extract_akamai_formats(format_url, video_id)) + house_number = video_params.get('episodeHouseNumber') + path = '/auth/hls/sign?ts={0}&hn={1}&d=android-mobile'.format( + int(time.time()), house_number) + sig = hmac.new( + 'android.content.res.Resources'.encode('utf-8'), + path.encode('utf-8'), hashlib.sha256).hexdigest() + token = self._download_webpage( + 'http://iview.abc.net.au{0}&sig={1}'.format(path, sig), video_id) + + def tokenize_url(url, token): + return update_url_query(url, { + 'hdnea': token, + }) + + for sd in ('sd', 'sd-low'): + sd_url = try_get( + stream, lambda x: x['streams']['hls'][sd], compat_str) + if not sd_url: + continue + formats = self._extract_m3u8_formats( + tokenize_url(sd_url, token), video_id, 'mp4', + entry_protocol='m3u8_native', m3u8_id='hls', fatal=False) + if formats: + break self._sort_formats(formats) subtitles = {} diff --git a/youtube_dl/extractor/afreecatv.py b/youtube_dl/extractor/afreecatv.py index e6513c7..513dd81 100644 --- a/youtube_dl/extractor/afreecatv.py +++ b/youtube_dl/extractor/afreecatv.py @@ -228,10 +228,19 @@ class AfreecaTVIE(InfoExtractor): r'^(\d{8})_', key, 'upload date', default=None) file_duration = int_or_none(file_element.get('duration')) format_id = key if key else '%s_%s' % (video_id, file_num) - formats = self._extract_m3u8_formats( - file_url, video_id, 'mp4', entry_protocol='m3u8_native', - m3u8_id='hls', - note='Downloading part %d m3u8 information' % file_num) + if determine_ext(file_url) == 'm3u8': + formats = self._extract_m3u8_formats( + file_url, video_id, 'mp4', entry_protocol='m3u8_native', + m3u8_id='hls', + note='Downloading part %d m3u8 information' % file_num) + else: + formats = [{ + 'url': file_url, + 'format_id': 'http', + }] + if not formats: + continue + self._sort_formats(formats) file_info = common_entry.copy() file_info.update({ 'id': format_id, diff --git a/youtube_dl/extractor/animeondemand.py b/youtube_dl/extractor/animeondemand.py index 69d3633..e4fa72f 100644 --- a/youtube_dl/extractor/animeondemand.py +++ b/youtube_dl/extractor/animeondemand.py @@ -78,15 +78,15 @@ class AnimeOnDemandIE(InfoExtractor): post_url = urljoin(self._LOGIN_URL, post_url) response = self._download_webpage( - post_url, None, 'Logging in as %s' % username, + post_url, None, 'Logging in', data=urlencode_postdata(login_form), headers={ 'Referer': self._LOGIN_URL, }) if all(p not in response for p in ('>Logout<', 'href="/users/sign_out"')): error = self._search_regex( - r'

    (.+?)

    ', - response, 'error', default=None) + r']+\bclass=(["\'])(?:(?!\1).)*\balert\b(?:(?!\1).)*\1[^>]*>(?P.+?)

    ', + response, 'error', default=None, group='error') if error: raise ExtractorError('Unable to login: %s' % error, expected=True) raise ExtractorError('Unable to log in') diff --git a/youtube_dl/extractor/ard.py b/youtube_dl/extractor/ard.py index 915f886..ef73d5a 100644 --- a/youtube_dl/extractor/ard.py +++ b/youtube_dl/extractor/ard.py @@ -5,6 +5,7 @@ import re from .common import InfoExtractor from .generic import GenericIE +from ..compat import compat_str from ..utils import ( determine_ext, ExtractorError, @@ -126,6 +127,8 @@ class ARDMediathekIE(InfoExtractor): quality = stream.get('_quality') server = stream.get('_server') for stream_url in stream_urls: + if not isinstance(stream_url, compat_str) or '//' not in stream_url: + continue ext = determine_ext(stream_url) if quality != 'auto' and ext in ('f4m', 'm3u8'): continue @@ -146,13 +149,11 @@ class ARDMediathekIE(InfoExtractor): 'play_path': stream_url, 'format_id': 'a%s-rtmp-%s' % (num, quality), } - elif stream_url.startswith('http'): + else: f = { 'url': stream_url, 'format_id': 'a%s-%s-%s' % (num, ext, quality) } - else: - continue m = re.search(r'_(?P\d+)x(?P\d+)\.mp4$', stream_url) if m: f.update({ diff --git a/youtube_dl/extractor/atresplayer.py b/youtube_dl/extractor/atresplayer.py index 01fa308..1a31ebe 100644 --- a/youtube_dl/extractor/atresplayer.py +++ b/youtube_dl/extractor/atresplayer.py @@ -87,7 +87,7 @@ class AtresPlayerIE(InfoExtractor): self._LOGIN_URL, urlencode_postdata(login_form)) request.add_header('Content-Type', 'application/x-www-form-urlencoded') response = self._download_webpage( - request, None, 'Logging in as %s' % username) + request, None, 'Logging in') error = self._html_search_regex( r'(?s)]+class="[^"]*\blist_error\b[^"]*">(.+?)', diff --git a/youtube_dl/extractor/aws.py b/youtube_dl/extractor/aws.py new file mode 100644 index 0000000..dccfeaf --- /dev/null +++ b/youtube_dl/extractor/aws.py @@ -0,0 +1,78 @@ +# coding: utf-8 +from __future__ import unicode_literals + +import datetime +import hashlib +import hmac + +from .common import InfoExtractor +from ..compat import compat_urllib_parse_urlencode + + +class AWSIE(InfoExtractor): + _AWS_ALGORITHM = 'AWS4-HMAC-SHA256' + _AWS_REGION = 'us-east-1' + + def _aws_execute_api(self, aws_dict, video_id, query=None): + query = query or {} + amz_date = datetime.datetime.utcnow().strftime('%Y%m%dT%H%M%SZ') + date = amz_date[:8] + headers = { + 'Accept': 'application/json', + 'Host': self._AWS_PROXY_HOST, + 'X-Amz-Date': amz_date, + 'X-Api-Key': self._AWS_API_KEY + } + session_token = aws_dict.get('session_token') + if session_token: + headers['X-Amz-Security-Token'] = session_token + + def aws_hash(s): + return hashlib.sha256(s.encode('utf-8')).hexdigest() + + # Task 1: http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html + canonical_querystring = compat_urllib_parse_urlencode(query) + canonical_headers = '' + for header_name, header_value in sorted(headers.items()): + canonical_headers += '%s:%s\n' % (header_name.lower(), header_value) + signed_headers = ';'.join([header.lower() for header in sorted(headers.keys())]) + canonical_request = '\n'.join([ + 'GET', + aws_dict['uri'], + canonical_querystring, + canonical_headers, + signed_headers, + aws_hash('') + ]) + + # Task 2: http://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html + credential_scope_list = [date, self._AWS_REGION, 'execute-api', 'aws4_request'] + credential_scope = '/'.join(credential_scope_list) + string_to_sign = '\n'.join([self._AWS_ALGORITHM, amz_date, credential_scope, aws_hash(canonical_request)]) + + # Task 3: http://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html + def aws_hmac(key, msg): + return hmac.new(key, msg.encode('utf-8'), hashlib.sha256) + + def aws_hmac_digest(key, msg): + return aws_hmac(key, msg).digest() + + def aws_hmac_hexdigest(key, msg): + return aws_hmac(key, msg).hexdigest() + + k_signing = ('AWS4' + aws_dict['secret_key']).encode('utf-8') + for value in credential_scope_list: + k_signing = aws_hmac_digest(k_signing, value) + + signature = aws_hmac_hexdigest(k_signing, string_to_sign) + + # Task 4: http://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html + headers['Authorization'] = ', '.join([ + '%s Credential=%s/%s' % (self._AWS_ALGORITHM, aws_dict['access_key'], credential_scope), + 'SignedHeaders=%s' % signed_headers, + 'Signature=%s' % signature, + ]) + + return self._download_json( + 'https://%s%s%s' % (self._AWS_PROXY_HOST, aws_dict['uri'], '?' + canonical_querystring if canonical_querystring else ''), + video_id, headers=headers) diff --git a/youtube_dl/extractor/bambuser.py b/youtube_dl/extractor/bambuser.py index 0eb1930..633c575 100644 --- a/youtube_dl/extractor/bambuser.py +++ b/youtube_dl/extractor/bambuser.py @@ -59,7 +59,7 @@ class BambuserIE(InfoExtractor): self._LOGIN_URL, urlencode_postdata(login_form)) request.add_header('Referer', self._LOGIN_URL) response = self._download_webpage( - request, None, 'Logging in as %s' % username) + request, None, 'Logging in') login_error = self._html_search_regex( r'(?s)
    (.+?)
    ', diff --git a/youtube_dl/extractor/bbc.py b/youtube_dl/extractor/bbc.py index 5525f7c..8b20c03 100644 --- a/youtube_dl/extractor/bbc.py +++ b/youtube_dl/extractor/bbc.py @@ -386,7 +386,7 @@ class BBCCoUkIE(InfoExtractor): m3u8_id=format_id, fatal=False)) if re.search(self._USP_RE, href): usp_formats = self._extract_m3u8_formats( - re.sub(self._USP_RE, r'/\1\.ism/\1\.m3u8', href), + re.sub(self._USP_RE, r'/\1.ism/\1.m3u8', href), programme_id, ext='mp4', entry_protocol='m3u8_native', m3u8_id=format_id, fatal=False) for f in usp_formats: diff --git a/youtube_dl/extractor/br.py b/youtube_dl/extractor/br.py index 2c32b6a..9bde7f2 100644 --- a/youtube_dl/extractor/br.py +++ b/youtube_dl/extractor/br.py @@ -1,20 +1,23 @@ # coding: utf-8 from __future__ import unicode_literals +import json import re from .common import InfoExtractor from ..utils import ( + determine_ext, ExtractorError, int_or_none, parse_duration, + parse_iso8601, xpath_element, xpath_text, ) class BRIE(InfoExtractor): - IE_DESC = 'Bayerischer Rundfunk Mediathek' + IE_DESC = 'Bayerischer Rundfunk' _VALID_URL = r'(?Phttps?://(?:www\.)?br(?:-klassik)?\.de)/(?:[a-z0-9\-_]+/)+(?P[a-z0-9\-_]+)\.html' _TESTS = [ @@ -123,10 +126,10 @@ class BRIE(InfoExtractor): for asset in assets.findall('asset'): format_url = xpath_text(asset, ['downloadUrl', 'url']) asset_type = asset.get('type') - if asset_type == 'HDS': + if asset_type.startswith('HDS'): formats.extend(self._extract_f4m_formats( format_url + '?hdcore=3.2.0', media_id, f4m_id='hds', fatal=False)) - elif asset_type == 'HLS': + elif asset_type.startswith('HLS'): formats.extend(self._extract_m3u8_formats( format_url, media_id, 'mp4', 'm3u8_native', m3u8_id='hds', fatal=False)) else: @@ -169,3 +172,140 @@ class BRIE(InfoExtractor): } for variant in variants.findall('variant') if xpath_text(variant, 'url')] thumbnails.sort(key=lambda x: x['width'] * x['height'], reverse=True) return thumbnails + + +class BRMediathekIE(InfoExtractor): + IE_DESC = 'Bayerischer Rundfunk Mediathek' + _VALID_URL = r'https?://(?:www\.)?br\.de/mediathek/video/[^/?&#]*?-(?Pav:[0-9a-f]{24})' + + _TESTS = [{ + 'url': 'https://www.br.de/mediathek/video/gesundheit-die-sendung-vom-28112017-av:5a1e6a6e8fce6d001871cc8e', + 'md5': 'fdc3d485835966d1622587d08ba632ec', + 'info_dict': { + 'id': 'av:5a1e6a6e8fce6d001871cc8e', + 'ext': 'mp4', + 'title': 'Die Sendung vom 28.11.2017', + 'description': 'md5:6000cdca5912ab2277e5b7339f201ccc', + 'timestamp': 1511942766, + 'upload_date': '20171129', + } + }] + + def _real_extract(self, url): + clip_id = self._match_id(url) + + clip = self._download_json( + 'https://proxy-base.master.mango.express/graphql', + clip_id, data=json.dumps({ + "query": """{ + viewer { + clip(id: "%s") { + title + description + duration + createdAt + ageRestriction + videoFiles { + edges { + node { + publicLocation + fileSize + videoProfile { + width + height + bitrate + encoding + } + } + } + } + captionFiles { + edges { + node { + publicLocation + } + } + } + teaserImages { + edges { + node { + imageFiles { + edges { + node { + publicLocation + width + height + } + } + } + } + } + } + } + } +}""" % clip_id}).encode(), headers={ + 'Content-Type': 'application/json', + })['data']['viewer']['clip'] + title = clip['title'] + + formats = [] + for edge in clip.get('videoFiles', {}).get('edges', []): + node = edge.get('node', {}) + n_url = node.get('publicLocation') + if not n_url: + continue + ext = determine_ext(n_url) + if ext == 'm3u8': + formats.extend(self._extract_m3u8_formats( + n_url, clip_id, 'mp4', 'm3u8_native', + m3u8_id='hls', fatal=False)) + else: + video_profile = node.get('videoProfile', {}) + tbr = int_or_none(video_profile.get('bitrate')) + format_id = 'http' + if tbr: + format_id += '-%d' % tbr + formats.append({ + 'format_id': format_id, + 'url': n_url, + 'width': int_or_none(video_profile.get('width')), + 'height': int_or_none(video_profile.get('height')), + 'tbr': tbr, + 'filesize': int_or_none(node.get('fileSize')), + }) + self._sort_formats(formats) + + subtitles = {} + for edge in clip.get('captionFiles', {}).get('edges', []): + node = edge.get('node', {}) + n_url = node.get('publicLocation') + if not n_url: + continue + subtitles.setdefault('de', []).append({ + 'url': n_url, + }) + + thumbnails = [] + for edge in clip.get('teaserImages', {}).get('edges', []): + for image_edge in edge.get('node', {}).get('imageFiles', {}).get('edges', []): + node = image_edge.get('node', {}) + n_url = node.get('publicLocation') + if not n_url: + continue + thumbnails.append({ + 'url': n_url, + 'width': int_or_none(node.get('width')), + 'height': int_or_none(node.get('height')), + }) + + return { + 'id': clip_id, + 'title': title, + 'description': clip.get('description'), + 'duration': int_or_none(clip.get('duration')), + 'timestamp': parse_iso8601(clip.get('createdAt')), + 'age_limit': int_or_none(clip.get('ageRestriction')), + 'formats': formats, + 'subtitles': subtitles, + 'thumbnails': thumbnails, + } diff --git a/youtube_dl/extractor/brightcove.py b/youtube_dl/extractor/brightcove.py index 0ed59bc..f045050 100644 --- a/youtube_dl/extractor/brightcove.py +++ b/youtube_dl/extractor/brightcove.py @@ -464,7 +464,7 @@ class BrightcoveNewIE(AdobePassIE): 'timestamp': 1441391203, 'upload_date': '20150904', 'uploader_id': '929656772001', - 'formats': 'mincount:22', + 'formats': 'mincount:20', }, }, { # with rtmp streams @@ -478,7 +478,7 @@ class BrightcoveNewIE(AdobePassIE): 'timestamp': 1433556729, 'upload_date': '20150606', 'uploader_id': '4036320279001', - 'formats': 'mincount:41', + 'formats': 'mincount:39', }, 'params': { # m3u8 download @@ -564,59 +564,7 @@ class BrightcoveNewIE(AdobePassIE): return entries - def _real_extract(self, url): - url, smuggled_data = unsmuggle_url(url, {}) - self._initialize_geo_bypass(smuggled_data.get('geo_countries')) - - account_id, player_id, embed, video_id = re.match(self._VALID_URL, url).groups() - - webpage = self._download_webpage( - 'http://players.brightcove.net/%s/%s_%s/index.min.js' - % (account_id, player_id, embed), video_id) - - policy_key = None - - catalog = self._search_regex( - r'catalog\(({.+?})\);', webpage, 'catalog', default=None) - if catalog: - catalog = self._parse_json( - js_to_json(catalog), video_id, fatal=False) - if catalog: - policy_key = catalog.get('policyKey') - - if not policy_key: - policy_key = self._search_regex( - r'policyKey\s*:\s*(["\'])(?P.+?)\1', - webpage, 'policy key', group='pk') - - api_url = 'https://edge.api.brightcove.com/playback/v1/accounts/%s/videos/%s' % (account_id, video_id) - try: - json_data = self._download_json(api_url, video_id, headers={ - 'Accept': 'application/json;pk=%s' % policy_key - }) - except ExtractorError as e: - if isinstance(e.cause, compat_HTTPError) and e.cause.code == 403: - json_data = self._parse_json(e.cause.read().decode(), video_id)[0] - message = json_data.get('message') or json_data['error_code'] - if json_data.get('error_subcode') == 'CLIENT_GEO': - self.raise_geo_restricted(msg=message) - raise ExtractorError(message, expected=True) - raise - - errors = json_data.get('errors') - if errors and errors[0].get('error_subcode') == 'TVE_AUTH': - custom_fields = json_data['custom_fields'] - tve_token = self._extract_mvpd_auth( - smuggled_data['source_url'], video_id, - custom_fields['bcadobepassrequestorid'], - custom_fields['bcadobepassresourceid']) - json_data = self._download_json( - api_url, video_id, headers={ - 'Accept': 'application/json;pk=%s' % policy_key - }, query={ - 'tveToken': tve_token, - }) - + def _parse_brightcove_metadata(self, json_data, video_id): title = json_data['name'].strip() formats = [] @@ -682,6 +630,7 @@ class BrightcoveNewIE(AdobePassIE): }) formats.append(f) + errors = json_data.get('errors') if not formats and errors: error = errors[0] raise ExtractorError( @@ -708,9 +657,64 @@ class BrightcoveNewIE(AdobePassIE): 'thumbnail': json_data.get('thumbnail') or json_data.get('poster'), 'duration': duration, 'timestamp': parse_iso8601(json_data.get('published_at')), - 'uploader_id': account_id, + 'uploader_id': json_data.get('account_id'), 'formats': formats, 'subtitles': subtitles, 'tags': json_data.get('tags', []), 'is_live': is_live, } + + def _real_extract(self, url): + url, smuggled_data = unsmuggle_url(url, {}) + self._initialize_geo_bypass(smuggled_data.get('geo_countries')) + + account_id, player_id, embed, video_id = re.match(self._VALID_URL, url).groups() + + webpage = self._download_webpage( + 'http://players.brightcove.net/%s/%s_%s/index.min.js' + % (account_id, player_id, embed), video_id) + + policy_key = None + + catalog = self._search_regex( + r'catalog\(({.+?})\);', webpage, 'catalog', default=None) + if catalog: + catalog = self._parse_json( + js_to_json(catalog), video_id, fatal=False) + if catalog: + policy_key = catalog.get('policyKey') + + if not policy_key: + policy_key = self._search_regex( + r'policyKey\s*:\s*(["\'])(?P.+?)\1', + webpage, 'policy key', group='pk') + + api_url = 'https://edge.api.brightcove.com/playback/v1/accounts/%s/videos/%s' % (account_id, video_id) + try: + json_data = self._download_json(api_url, video_id, headers={ + 'Accept': 'application/json;pk=%s' % policy_key + }) + except ExtractorError as e: + if isinstance(e.cause, compat_HTTPError) and e.cause.code == 403: + json_data = self._parse_json(e.cause.read().decode(), video_id)[0] + message = json_data.get('message') or json_data['error_code'] + if json_data.get('error_subcode') == 'CLIENT_GEO': + self.raise_geo_restricted(msg=message) + raise ExtractorError(message, expected=True) + raise + + errors = json_data.get('errors') + if errors and errors[0].get('error_subcode') == 'TVE_AUTH': + custom_fields = json_data['custom_fields'] + tve_token = self._extract_mvpd_auth( + smuggled_data['source_url'], video_id, + custom_fields['bcadobepassrequestorid'], + custom_fields['bcadobepassresourceid']) + json_data = self._download_json( + api_url, video_id, headers={ + 'Accept': 'application/json;pk=%s' % policy_key + }, query={ + 'tveToken': tve_token, + }) + + return self._parse_brightcove_metadata(json_data, video_id) diff --git a/youtube_dl/extractor/byutv.py b/youtube_dl/extractor/byutv.py index 8ef0896..4bf4efe 100644 --- a/youtube_dl/extractor/byutv.py +++ b/youtube_dl/extractor/byutv.py @@ -3,20 +3,19 @@ from __future__ import unicode_literals import re from .common import InfoExtractor -from ..utils import ExtractorError class BYUtvIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?byutv\.org/watch/(?!event/)(?P[0-9a-f-]+)(?:/(?P[^/?#&]+))?' + _VALID_URL = r'https?://(?:www\.)?byutv\.org/(?:watch|player)/(?!event/)(?P[0-9a-f-]+)(?:/(?P[^/?#&]+))?' _TESTS = [{ 'url': 'http://www.byutv.org/watch/6587b9a3-89d2-42a6-a7f7-fd2f81840a7d/studio-c-season-5-episode-5', 'info_dict': { - 'id': '6587b9a3-89d2-42a6-a7f7-fd2f81840a7d', + 'id': 'ZvanRocTpW-G5_yZFeltTAMv6jxOU9KH', 'display_id': 'studio-c-season-5-episode-5', 'ext': 'mp4', 'title': 'Season 5 Episode 5', - 'description': 'md5:e07269172baff037f8e8bf9956bc9747', - 'thumbnail': r're:^https?://.*\.jpg$', + 'description': 'md5:1d31dc18ef4f075b28f6a65937d22c65', + 'thumbnail': r're:^https?://.*', 'duration': 1486.486, }, 'params': { @@ -26,6 +25,9 @@ class BYUtvIE(InfoExtractor): }, { 'url': 'http://www.byutv.org/watch/6587b9a3-89d2-42a6-a7f7-fd2f81840a7d', 'only_matching': True, + }, { + 'url': 'https://www.byutv.org/player/27741493-dc83-40b0-8420-e7ae38a2ae98/byu-football-toledo-vs-byu-93016?listid=4fe0fee5-0d3c-4a29-b725-e4948627f472&listindex=0&q=toledo', + 'only_matching': True, }] def _real_extract(self, url): @@ -33,16 +35,16 @@ class BYUtvIE(InfoExtractor): video_id = mobj.group('id') display_id = mobj.group('display_id') or video_id - webpage = self._download_webpage(url, display_id) - episode_code = self._search_regex( - r'(?s)episode:(.*?\}),\s*\n', webpage, 'episode information') - - ep = self._parse_json( - episode_code, display_id, transform_source=lambda s: - re.sub(r'(\n\s+)([a-zA-Z]+):\s+\'(.*?)\'', r'\1"\2": "\3"', s)) - - if ep['providerType'] != 'Ooyala': - raise ExtractorError('Unsupported provider %s' % ep['provider']) + ep = self._download_json( + 'https://api.byutv.org/api3/catalog/getvideosforcontent', video_id, + query={ + 'contentid': video_id, + 'channel': 'byutv', + 'x-byutv-context': 'web$US', + }, headers={ + 'x-byutv-context': 'web$US', + 'x-byutv-platformkey': 'xsaaw9c7y5', + })['ooyalaVOD'] return { '_type': 'url_transparent', @@ -50,44 +52,7 @@ class BYUtvIE(InfoExtractor): 'url': 'ooyala:%s' % ep['providerId'], 'id': video_id, 'display_id': display_id, - 'title': ep['title'], + 'title': ep.get('title'), 'description': ep.get('description'), 'thumbnail': ep.get('imageThumbnail'), } - - -class BYUtvEventIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?byutv\.org/watch/event/(?P[0-9a-f-]+)' - _TEST = { - 'url': 'http://www.byutv.org/watch/event/29941b9b-8bf6-48d2-aebf-7a87add9e34b', - 'info_dict': { - 'id': '29941b9b-8bf6-48d2-aebf-7a87add9e34b', - 'ext': 'mp4', - 'title': 'Toledo vs. BYU (9/30/16)', - }, - 'params': { - 'skip_download': True, - }, - 'add_ie': ['Ooyala'], - } - - def _real_extract(self, url): - video_id = self._match_id(url) - - webpage = self._download_webpage(url, video_id) - - ooyala_id = self._search_regex( - r'providerId\s*:\s*(["\'])(?P(?:(?!\1).)+)\1', - webpage, 'ooyala id', group='id') - - title = self._search_regex( - r'class=["\']description["\'][^>]*>\s*

    ([^<]+)

    ', webpage, - 'title').strip() - - return { - '_type': 'url_transparent', - 'ie_key': 'Ooyala', - 'url': 'ooyala:%s' % ooyala_id, - 'id': video_id, - 'title': title, - } diff --git a/youtube_dl/extractor/cartoonnetwork.py b/youtube_dl/extractor/cartoonnetwork.py index 086ec90..6aeebd7 100644 --- a/youtube_dl/extractor/cartoonnetwork.py +++ b/youtube_dl/extractor/cartoonnetwork.py @@ -31,7 +31,7 @@ class CartoonNetworkIE(TurnerBaseIE): 'http://www.cartoonnetwork.com/video-seo-svc/episodeservices/getCvpPlaylist?networkName=CN2&' + query, video_id, { 'secure': { 'media_src': 'http://androidhls-secure.cdn.turner.com/toon/big', - 'tokenizer_src': 'http://www.cartoonnetwork.com/cntv/mvpd/processors/services/token_ipadAdobe.do', + 'tokenizer_src': 'https://token.vgtf.net/token/token_mobile', }, }, { 'url': url, diff --git a/youtube_dl/extractor/cbslocal.py b/youtube_dl/extractor/cbslocal.py index 7d78e3a..90852a9 100644 --- a/youtube_dl/extractor/cbslocal.py +++ b/youtube_dl/extractor/cbslocal.py @@ -91,12 +91,10 @@ class CBSLocalIE(AnvatoIE): info_dict = self._extract_anvato_videos(webpage, display_id) - time_str = self._html_search_regex( - r'class="entry-date">([^<]+)<', webpage, 'released date', default=None) - if time_str: - timestamp = unified_timestamp(time_str) - else: - timestamp = parse_iso8601(self._html_search_meta('uploadDate', webpage)) + timestamp = unified_timestamp(self._html_search_regex( + r'class="(?:entry|post)-date"[^>]*>([^<]+)', webpage, + 'released date', default=None)) or parse_iso8601( + self._html_search_meta('uploadDate', webpage)) info_dict.update({ 'display_id': display_id, diff --git a/youtube_dl/extractor/ccma.py b/youtube_dl/extractor/ccma.py index 39938c9..bec0a82 100644 --- a/youtube_dl/extractor/ccma.py +++ b/youtube_dl/extractor/ccma.py @@ -93,7 +93,7 @@ class CCMAIE(InfoExtractor): 'description': clean_html(informacio.get('descripcio')), 'duration': duration, 'timestamp': timestamp, - 'thumnails': thumbnails, + 'thumbnails': thumbnails, 'subtitles': subtitles, 'formats': formats, } diff --git a/youtube_dl/extractor/collegerama.py b/youtube_dl/extractor/collegerama.py deleted file mode 100644 index 6a41db8..0000000 --- a/youtube_dl/extractor/collegerama.py +++ /dev/null @@ -1,93 +0,0 @@ -from __future__ import unicode_literals - -import json - -from .common import InfoExtractor -from ..utils import ( - float_or_none, - int_or_none, - sanitized_Request, -) - - -class CollegeRamaIE(InfoExtractor): - _VALID_URL = r'https?://collegerama\.tudelft\.nl/Mediasite/Play/(?P[\da-f]+)' - _TESTS = [ - { - 'url': 'https://collegerama.tudelft.nl/Mediasite/Play/585a43626e544bdd97aeb71a0ec907a01d', - 'md5': '481fda1c11f67588c0d9d8fbdced4e39', - 'info_dict': { - 'id': '585a43626e544bdd97aeb71a0ec907a01d', - 'ext': 'mp4', - 'title': 'Een nieuwe wereld: waarden, bewustzijn en techniek van de mensheid 2.0.', - 'description': '', - 'thumbnail': r're:^https?://.*\.jpg(?:\?.*?)?$', - 'duration': 7713.088, - 'timestamp': 1413309600, - 'upload_date': '20141014', - }, - }, - { - 'url': 'https://collegerama.tudelft.nl/Mediasite/Play/86a9ea9f53e149079fbdb4202b521ed21d?catalog=fd32fd35-6c99-466c-89d4-cd3c431bc8a4', - 'md5': 'ef1fdded95bdf19b12c5999949419c92', - 'info_dict': { - 'id': '86a9ea9f53e149079fbdb4202b521ed21d', - 'ext': 'wmv', - 'title': '64ste Vakantiecursus: Afvalwater', - 'description': 'md5:7fd774865cc69d972f542b157c328305', - 'thumbnail': r're:^https?://.*\.jpg(?:\?.*?)?$', - 'duration': 10853, - 'timestamp': 1326446400, - 'upload_date': '20120113', - }, - }, - ] - - def _real_extract(self, url): - video_id = self._match_id(url) - - player_options_request = { - 'getPlayerOptionsRequest': { - 'ResourceId': video_id, - 'QueryString': '', - } - } - - request = sanitized_Request( - 'http://collegerama.tudelft.nl/Mediasite/PlayerService/PlayerService.svc/json/GetPlayerOptions', - json.dumps(player_options_request)) - request.add_header('Content-Type', 'application/json') - - player_options = self._download_json(request, video_id) - - presentation = player_options['d']['Presentation'] - title = presentation['Title'] - description = presentation.get('Description') - thumbnail = None - duration = float_or_none(presentation.get('Duration'), 1000) - timestamp = int_or_none(presentation.get('UnixTime'), 1000) - - formats = [] - for stream in presentation['Streams']: - for video in stream['VideoUrls']: - thumbnail_url = stream.get('ThumbnailUrl') - if thumbnail_url: - thumbnail = 'http://collegerama.tudelft.nl' + thumbnail_url - format_id = video['MediaType'] - if format_id == 'SS': - continue - formats.append({ - 'url': video['Location'], - 'format_id': format_id, - }) - self._sort_formats(formats) - - return { - 'id': video_id, - 'title': title, - 'description': description, - 'thumbnail': thumbnail, - 'duration': duration, - 'timestamp': timestamp, - 'formats': formats, - } diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index e2d9f52..5b6a09c 100644 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@ -301,8 +301,9 @@ class InfoExtractor(object): There must be a key "entries", which is a list, an iterable, or a PagedList object, each element of which is a valid dictionary by this specification. - Additionally, playlists can have "title", "description" and "id" attributes - with the same semantics as videos (see above). + Additionally, playlists can have "id", "title", "description", "uploader", + "uploader_id", "uploader_url" attributes with the same semantics as videos + (see above). _type "multi_video" indicates that there are multiple videos that @@ -494,6 +495,16 @@ class InfoExtractor(object): self.to_screen('%s' % (note,)) else: self.to_screen('%s: %s' % (video_id, note)) + + # Some sites check X-Forwarded-For HTTP header in order to figure out + # the origin of the client behind proxy. This allows bypassing geo + # restriction by faking this header's value to IP that belongs to some + # geo unrestricted country. We will do so once we encounter any + # geo restriction error. + if self._x_forwarded_for_ip: + if 'X-Forwarded-For' not in headers: + headers['X-Forwarded-For'] = self._x_forwarded_for_ip + if isinstance(url_or_request, compat_urllib_request.Request): url_or_request = update_Request( url_or_request, data=data, headers=headers, query=query) @@ -523,15 +534,6 @@ class InfoExtractor(object): if isinstance(url_or_request, (compat_str, str)): url_or_request = url_or_request.partition('#')[0] - # Some sites check X-Forwarded-For HTTP header in order to figure out - # the origin of the client behind proxy. This allows bypassing geo - # restriction by faking this header's value to IP that belongs to some - # geo unrestricted country. We will do so once we encounter any - # geo restriction error. - if self._x_forwarded_for_ip: - if 'X-Forwarded-For' not in headers: - headers['X-Forwarded-For'] = self._x_forwarded_for_ip - urlh = self._request_webpage(url_or_request, video_id, note, errnote, fatal, data=data, headers=headers, query=query) if urlh is False: assert not fatal @@ -592,19 +594,11 @@ class InfoExtractor(object): if not encoding: encoding = self._guess_encoding_from_content(content_type, webpage_bytes) if self._downloader.params.get('dump_intermediate_pages', False): - try: - url = url_or_request.get_full_url() - except AttributeError: - url = url_or_request - self.to_screen('Dumping request to ' + url) + self.to_screen('Dumping request to ' + urlh.geturl()) dump = base64.b64encode(webpage_bytes).decode('ascii') self._downloader.to_screen(dump) if self._downloader.params.get('write_pages', False): - try: - url = url_or_request.get_full_url() - except AttributeError: - url = url_or_request - basen = '%s_%s' % (video_id, url) + basen = '%s_%s' % (video_id, urlh.geturl()) if len(basen) > 240: h = '___' + hashlib.md5(basen.encode('utf-8')).hexdigest() basen = basen[:240 - len(h)] + h @@ -1356,6 +1350,9 @@ class InfoExtractor(object): if '#EXT-X-FAXS-CM:' in m3u8_doc: # Adobe Flash Access return [] + if re.search(r'#EXT-X-SESSION-KEY:.*?URI="skd://', m3u8_doc): # Apple FairPlay + return [] + formats = [] format_url = lambda u: ( @@ -1883,6 +1880,7 @@ class InfoExtractor(object): 'language': lang if lang not in ('mul', 'und', 'zxx', 'mis') else None, 'format_note': 'DASH %s' % content_type, 'filesize': filesize, + 'container': mimetype2ext(mime_type) + '_dash', } f.update(parse_codecs(representation_attrib.get('codecs'))) representation_ms_info = extract_multisegment_info(representation, adaption_set_ms_info) @@ -1980,6 +1978,22 @@ class InfoExtractor(object): }) segment_index += 1 representation_ms_info['fragments'] = fragments + elif 'segment_urls' in representation_ms_info: + # Segment URLs with no SegmentTimeline + # Example: https://www.seznam.cz/zpravy/clanek/cesko-zasahne-vitr-o-sile-vichrice-muze-byt-i-zivotu-nebezpecny-39091 + # https://github.com/rg3/youtube-dl/pull/14844 + fragments = [] + segment_duration = float_or_none( + representation_ms_info['segment_duration'], + representation_ms_info['timescale']) if 'segment_duration' in representation_ms_info else None + for segment_url in representation_ms_info['segment_urls']: + fragment = { + location_key(segment_url): segment_url, + } + if segment_duration: + fragment['duration'] = segment_duration + fragments.append(fragment) + representation_ms_info['fragments'] = fragments # NB: MPD manifest may contain direct URLs to unfragmented media. # No fragments key is present in this case. if 'fragments' in representation_ms_info: @@ -1994,16 +2008,14 @@ class InfoExtractor(object): f['url'] = initialization_url f['fragments'].append({location_key(initialization_url): initialization_url}) f['fragments'].extend(representation_ms_info['fragments']) - try: - existing_format = next( - fo for fo in formats - if fo['format_id'] == representation_id) - except StopIteration: - full_info = formats_dict.get(representation_id, {}).copy() - full_info.update(f) - formats.append(full_info) - else: - existing_format.update(f) + # According to [1, 5.3.5.2, Table 7, page 35] @id of Representation + # is not necessarily unique within a Period thus formats with + # the same `format_id` are quite possible. There are numerous examples + # of such manifests (see https://github.com/rg3/youtube-dl/issues/15111, + # https://github.com/rg3/youtube-dl/issues/13919) + full_info = formats_dict.get(representation_id, {}).copy() + full_info.update(f) + formats.append(full_info) else: self.report_warning('Unknown MIME type %s in DASH manifest' % mime_type) return formats @@ -2043,7 +2055,7 @@ class InfoExtractor(object): stream_timescale = int_or_none(stream.get('TimeScale')) or timescale stream_name = stream.get('Name') for track in stream.findall('QualityLevel'): - fourcc = track.get('FourCC') + fourcc = track.get('FourCC', 'AACL' if track.get('AudioTag') == '255' else None) # TODO: add support for WVC1 and WMAP if fourcc not in ('H264', 'AVC1', 'AACL'): self.report_warning('%s is not a supported codec' % fourcc) diff --git a/youtube_dl/extractor/crunchyroll.py b/youtube_dl/extractor/crunchyroll.py index 8bdaf0c..b92f254 100644 --- a/youtube_dl/extractor/crunchyroll.py +++ b/youtube_dl/extractor/crunchyroll.py @@ -38,11 +38,32 @@ class CrunchyrollBaseIE(InfoExtractor): _LOGIN_FORM = 'login_form' _NETRC_MACHINE = 'crunchyroll' + def _call_rpc_api(self, method, video_id, note=None, data=None): + data = data or {} + data['req'] = 'RpcApi' + method + data = compat_urllib_parse_urlencode(data).encode('utf-8') + return self._download_xml( + 'http://www.crunchyroll.com/xml/', + video_id, note, fatal=False, data=data, headers={ + 'Content-Type': 'application/x-www-form-urlencoded', + }) + def _login(self): (username, password) = self._get_login_info() if username is None: return + self._download_webpage( + 'https://www.crunchyroll.com/?a=formhandler', + None, 'Logging in', 'Wrong login info', + data=urlencode_postdata({ + 'formname': 'RpcApiUser_Login', + 'next_url': 'https://www.crunchyroll.com/acct/membership', + 'name': username, + 'password': password, + })) + + ''' login_page = self._download_webpage( self._LOGIN_URL, None, 'Downloading login page') @@ -86,6 +107,7 @@ class CrunchyrollBaseIE(InfoExtractor): raise ExtractorError('Unable to login: %s' % error, expected=True) raise ExtractorError('Unable to log in') + ''' def _real_initialize(self): self._login() @@ -365,15 +387,19 @@ Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text def _get_subtitles(self, video_id, webpage): subtitles = {} for sub_id, sub_name in re.findall(r'\bssid=([0-9]+)"[^>]+?\btitle="([^"]+)', webpage): - sub_page = self._download_webpage( - 'http://www.crunchyroll.com/xml/?req=RpcApiSubtitle_GetXml&subtitle_script_id=' + sub_id, - video_id, note='Downloading subtitles for ' + sub_name) - id = self._search_regex(r'id=\'([0-9]+)', sub_page, 'subtitle_id', fatal=False) - iv = self._search_regex(r'([^<]+)', sub_page, 'subtitle_iv', fatal=False) - data = self._search_regex(r'([^<]+)', sub_page, 'subtitle_data', fatal=False) - if not id or not iv or not data: + sub_doc = self._call_rpc_api( + 'Subtitle_GetXml', video_id, + 'Downloading subtitles for ' + sub_name, data={ + 'subtitle_script_id': sub_id, + }) + if sub_doc is None: continue - subtitle = self._decrypt_subtitles(data, iv, id).decode('utf-8') + sid = sub_doc.get('id') + iv = xpath_text(sub_doc, 'iv', 'subtitle iv') + data = xpath_text(sub_doc, 'data', 'subtitle data') + if not sid or not iv or not data: + continue + subtitle = self._decrypt_subtitles(data, iv, sid).decode('utf-8') lang_code = self._search_regex(r'lang_code=["\']([^"\']+)', subtitle, 'subtitle_lang_code', fatal=False) if not lang_code: continue @@ -444,65 +470,79 @@ Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text for fmt in available_fmts: stream_quality, stream_format = self._FORMAT_IDS[fmt] video_format = fmt + 'p' - streamdata_req = sanitized_Request( - 'http://www.crunchyroll.com/xml/?req=RpcApiVideoPlayer_GetStandardConfig&media_id=%s&video_format=%s&video_quality=%s' - % (video_id, stream_format, stream_quality), - compat_urllib_parse_urlencode({'current_page': url}).encode('utf-8')) - streamdata_req.add_header('Content-Type', 'application/x-www-form-urlencoded') - streamdata = self._download_xml( - streamdata_req, video_id, - note='Downloading media info for %s' % video_format) - stream_info = streamdata.find('./{default}preload/stream_info') - video_encode_id = xpath_text(stream_info, './video_encode_id') - if video_encode_id in video_encode_ids: - continue - video_encode_ids.append(video_encode_id) - - video_file = xpath_text(stream_info, './file') - if not video_file: - continue - if video_file.startswith('http'): - formats.extend(self._extract_m3u8_formats( - video_file, video_id, 'mp4', entry_protocol='m3u8_native', - m3u8_id='hls', fatal=False)) - continue - - video_url = xpath_text(stream_info, './host') - if not video_url: - continue - metadata = stream_info.find('./metadata') - format_info = { - 'format': video_format, - 'format_id': video_format, - 'height': int_or_none(xpath_text(metadata, './height')), - 'width': int_or_none(xpath_text(metadata, './width')), - } - - if '.fplive.net/' in video_url: - video_url = re.sub(r'^rtmpe?://', 'http://', video_url.strip()) - parsed_video_url = compat_urlparse.urlparse(video_url) - direct_video_url = compat_urlparse.urlunparse(parsed_video_url._replace( - netloc='v.lvlt.crcdn.net', - path='%s/%s' % (remove_end(parsed_video_url.path, '/'), video_file.split(':')[-1]))) - if self._is_valid_url(direct_video_url, video_id, video_format): - format_info.update({ - 'url': direct_video_url, - }) - formats.append(format_info) + stream_infos = [] + streamdata = self._call_rpc_api( + 'VideoPlayer_GetStandardConfig', video_id, + 'Downloading media info for %s' % video_format, data={ + 'media_id': video_id, + 'video_format': stream_format, + 'video_quality': stream_quality, + 'current_page': url, + }) + if streamdata is not None: + stream_info = streamdata.find('./{default}preload/stream_info') + if stream_info is not None: + stream_infos.append(stream_info) + stream_info = self._call_rpc_api( + 'VideoEncode_GetStreamInfo', video_id, + 'Downloading stream info for %s' % video_format, data={ + 'media_id': video_id, + 'video_format': stream_format, + 'video_encode_quality': stream_quality, + }) + if stream_info is not None: + stream_infos.append(stream_info) + for stream_info in stream_infos: + video_encode_id = xpath_text(stream_info, './video_encode_id') + if video_encode_id in video_encode_ids: continue + video_encode_ids.append(video_encode_id) - format_info.update({ - 'url': video_url, - 'play_path': video_file, - 'ext': 'flv', - }) - formats.append(format_info) - self._sort_formats(formats) + video_file = xpath_text(stream_info, './file') + if not video_file: + continue + if video_file.startswith('http'): + formats.extend(self._extract_m3u8_formats( + video_file, video_id, 'mp4', entry_protocol='m3u8_native', + m3u8_id='hls', fatal=False)) + continue - metadata = self._download_xml( - 'http://www.crunchyroll.com/xml', video_id, - note='Downloading media info', query={ - 'req': 'RpcApiVideoPlayer_GetMediaMetadata', + video_url = xpath_text(stream_info, './host') + if not video_url: + continue + metadata = stream_info.find('./metadata') + format_info = { + 'format': video_format, + 'height': int_or_none(xpath_text(metadata, './height')), + 'width': int_or_none(xpath_text(metadata, './width')), + } + + if '.fplive.net/' in video_url: + video_url = re.sub(r'^rtmpe?://', 'http://', video_url.strip()) + parsed_video_url = compat_urlparse.urlparse(video_url) + direct_video_url = compat_urlparse.urlunparse(parsed_video_url._replace( + netloc='v.lvlt.crcdn.net', + path='%s/%s' % (remove_end(parsed_video_url.path, '/'), video_file.split(':')[-1]))) + if self._is_valid_url(direct_video_url, video_id, video_format): + format_info.update({ + 'format_id': 'http-' + video_format, + 'url': direct_video_url, + }) + formats.append(format_info) + continue + + format_info.update({ + 'format_id': 'rtmp-' + video_format, + 'url': video_url, + 'play_path': video_file, + 'ext': 'flv', + }) + formats.append(format_info) + self._sort_formats(formats, ('height', 'width', 'tbr', 'fps')) + + metadata = self._call_rpc_api( + 'VideoPlayer_GetMediaMetadata', video_id, + note='Downloading media info', data={ 'media_id': video_id, }) diff --git a/youtube_dl/extractor/cspan.py b/youtube_dl/extractor/cspan.py index 171820e..67d6df4 100644 --- a/youtube_dl/extractor/cspan.py +++ b/youtube_dl/extractor/cspan.py @@ -4,13 +4,14 @@ import re from .common import InfoExtractor from ..utils import ( - int_or_none, - unescapeHTML, - find_xpath_attr, - smuggle_url, determine_ext, ExtractorError, extract_attributes, + find_xpath_attr, + get_element_by_class, + int_or_none, + smuggle_url, + unescapeHTML, ) from .senateisvp import SenateISVPIE from .ustream import UstreamIE @@ -68,6 +69,10 @@ class CSpanIE(InfoExtractor): 'uploader': 'HouseCommittee', 'uploader_id': '12987475', }, + }, { + # Audio Only + 'url': 'https://www.c-span.org/video/?437336-1/judiciary-antitrust-competition-policy-consumer-rights', + 'only_matching': True, }] BRIGHTCOVE_URL_TEMPLATE = 'http://players.brightcove.net/%s/%s_%s/index.html?videoId=%s' @@ -111,7 +116,15 @@ class CSpanIE(InfoExtractor): title = self._og_search_title(webpage) surl = smuggle_url(senate_isvp_url, {'force_title': title}) return self.url_result(surl, 'SenateISVP', video_id, title) + video_id = self._search_regex( + r'jwsetup\.clipprog\s*=\s*(\d+);', + webpage, 'jwsetup program id', default=None) + if video_id: + video_type = 'program' if video_type is None or video_id is None: + error_message = get_element_by_class('VLplayer-error-message', webpage) + if error_message: + raise ExtractorError(error_message) raise ExtractorError('unable to find video id and type') def get_text_attr(d, attr): @@ -138,7 +151,7 @@ class CSpanIE(InfoExtractor): entries = [] for partnum, f in enumerate(files): formats = [] - for quality in f['qualities']: + for quality in f.get('qualities', []): formats.append({ 'format_id': '%s-%sp' % (get_text_attr(quality, 'bitrate'), get_text_attr(quality, 'height')), 'url': unescapeHTML(get_text_attr(quality, 'file')), diff --git a/youtube_dl/extractor/dailymotion.py b/youtube_dl/extractor/dailymotion.py index 21a2d02..0e7d587 100644 --- a/youtube_dl/extractor/dailymotion.py +++ b/youtube_dl/extractor/dailymotion.py @@ -413,52 +413,3 @@ class DailymotionUserIE(DailymotionPlaylistIE): 'title': full_user, 'entries': self._extract_entries(user), } - - -class DailymotionCloudIE(DailymotionBaseInfoExtractor): - _VALID_URL_PREFIX = r'https?://api\.dmcloud\.net/(?:player/)?embed/' - _VALID_URL = r'%s[^/]+/(?P[^/?]+)' % _VALID_URL_PREFIX - _VALID_EMBED_URL = r'%s[^/]+/[^\'"]+' % _VALID_URL_PREFIX - - _TESTS = [{ - # From http://www.francetvinfo.fr/economie/entreprises/les-entreprises-familiales-le-secret-de-la-reussite_933271.html - # Tested at FranceTvInfo_2 - 'url': 'http://api.dmcloud.net/embed/4e7343f894a6f677b10006b4/556e03339473995ee145930c?auth=1464865870-0-jyhsm84b-ead4c701fb750cf9367bf4447167a3db&autoplay=1', - 'only_matching': True, - }, { - # http://www.francetvinfo.fr/societe/larguez-les-amarres-le-cobaturage-se-developpe_980101.html - 'url': 'http://api.dmcloud.net/player/embed/4e7343f894a6f677b10006b4/559545469473996d31429f06?auth=1467430263-0-90tglw2l-a3a4b64ed41efe48d7fccad85b8b8fda&autoplay=1', - 'only_matching': True, - }] - - @classmethod - def _extract_dmcloud_url(cls, webpage): - mobj = re.search(r']+src=[\'"](%s)[\'"]' % cls._VALID_EMBED_URL, webpage) - if mobj: - return mobj.group(1) - - mobj = re.search( - r']+id=[\'"]dmcloudUrlEmissionSelect[\'"][^>]+value=[\'"](%s)[\'"]' % cls._VALID_EMBED_URL, - webpage) - if mobj: - return mobj.group(1) - - def _real_extract(self, url): - video_id = self._match_id(url) - - webpage = self._download_webpage_no_ff(url, video_id) - - title = self._html_search_regex(r'([^>]+)', webpage, 'title') - - video_info = self._parse_json(self._search_regex( - r'var\s+info\s*=\s*([^;]+);', webpage, 'video info'), video_id) - - # TODO: parse ios_url, which is in fact a manifest - video_url = video_info['mp4_url'] - - return { - 'id': video_id, - 'url': video_url, - 'title': title, - 'thumbnail': video_info.get('thumbnail_url'), - } diff --git a/youtube_dl/extractor/daisuki.py b/youtube_dl/extractor/daisuki.py index 58cc986..5c9ac68 100644 --- a/youtube_dl/extractor/daisuki.py +++ b/youtube_dl/extractor/daisuki.py @@ -13,33 +13,30 @@ from ..aes import ( from ..utils import ( bytes_to_intlist, bytes_to_long, - clean_html, + extract_attributes, ExtractorError, intlist_to_bytes, - get_element_by_id, js_to_json, int_or_none, long_to_bytes, pkcs1pad, - remove_end, ) -class DaisukiIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?daisuki\.net/[^/]+/[^/]+/[^/]+/watch\.[^.]+\.(?P\d+)\.html' +class DaisukiMottoIE(InfoExtractor): + _VALID_URL = r'https?://motto\.daisuki\.net/framewatch/embed/[^/]+/(?P[0-9a-zA-Z]{3})' _TEST = { - 'url': 'http://www.daisuki.net/tw/en/anime/watch.TheIdolMasterCG.11213.html', + 'url': 'http://motto.daisuki.net/framewatch/embed/embedDRAGONBALLSUPERUniverseSurvivalsaga/V2e/760/428', 'info_dict': { - 'id': '11213', + 'id': 'V2e', 'ext': 'mp4', - 'title': '#01 Who is in the pumpkin carriage? - THE IDOLM@STER CINDERELLA GIRLS', + 'title': '#117 SHOWDOWN OF LOVE! ANDROIDS VS UNIVERSE 2!!', 'subtitles': { 'mul': [{ 'ext': 'ttml', }], }, - 'creator': 'BANDAI NAMCO Entertainment', }, 'params': { 'skip_download': True, # AES-encrypted HLS stream @@ -73,15 +70,17 @@ class DaisukiIE(InfoExtractor): n, e = self._RSA_KEY encrypted_aeskey = long_to_bytes(pow(bytes_to_long(padded_aeskey), e, n)) - init_data = self._download_json('http://www.daisuki.net/bin/bgn/init', video_id, query={ - 's': flashvars.get('s', ''), - 'c': flashvars.get('ss3_prm', ''), - 'e': url, - 'd': base64.b64encode(intlist_to_bytes(aes_cbc_encrypt( - bytes_to_intlist(json.dumps(data)), - aes_key, iv))).decode('ascii'), - 'a': base64.b64encode(encrypted_aeskey).decode('ascii'), - }, note='Downloading JSON metadata' + (' (try #%d)' % (idx + 1) if idx > 0 else '')) + init_data = self._download_json( + 'http://motto.daisuki.net/fastAPI/bgn/init/', + video_id, query={ + 's': flashvars.get('s', ''), + 'c': flashvars.get('ss3_prm', ''), + 'e': url, + 'd': base64.b64encode(intlist_to_bytes(aes_cbc_encrypt( + bytes_to_intlist(json.dumps(data)), + aes_key, iv))).decode('ascii'), + 'a': base64.b64encode(encrypted_aeskey).decode('ascii'), + }, note='Downloading JSON metadata' + (' (try #%d)' % (idx + 1) if idx > 0 else '')) if 'rtn' in init_data: encrypted_rtn = init_data['rtn'] @@ -98,14 +97,11 @@ class DaisukiIE(InfoExtractor): aes_key, iv)).decode('utf-8').rstrip('\0'), video_id) + title = rtn['title_str'] + formats = self._extract_m3u8_formats( rtn['play_url'], video_id, ext='mp4', entry_protocol='m3u8_native') - title = remove_end(self._og_search_title(webpage), ' - DAISUKI') - - creator = self._html_search_regex( - r'Creator\s*:\s*([^<]+)', webpage, 'creator', fatal=False) - subtitles = {} caption_url = rtn.get('caption_url') if caption_url: @@ -120,21 +116,18 @@ class DaisukiIE(InfoExtractor): 'title': title, 'formats': formats, 'subtitles': subtitles, - 'creator': creator, } -class DaisukiPlaylistIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)daisuki\.net/[^/]+/[^/]+/[^/]+/detail\.(?P[a-zA-Z0-9]+)\.html' +class DaisukiMottoPlaylistIE(InfoExtractor): + _VALID_URL = r'https?://motto\.daisuki\.net/(?Pinformation)/' _TEST = { - 'url': 'http://www.daisuki.net/tw/en/anime/detail.TheIdolMasterCG.html', + 'url': 'http://motto.daisuki.net/information/', 'info_dict': { - 'id': 'TheIdolMasterCG', - 'title': 'THE IDOLM@STER CINDERELLA GIRLS', - 'description': 'md5:0f2c028a9339f7a2c7fbf839edc5c5d8', + 'title': 'DRAGON BALL SUPER', }, - 'playlist_count': 26, + 'playlist_mincount': 117, } def _real_extract(self, url): @@ -142,18 +135,19 @@ class DaisukiPlaylistIE(InfoExtractor): webpage = self._download_webpage(url, playlist_id) - episode_pattern = r'''(?sx) - ]+delay="[^"]+/(\d+)/movie\.jpg".+? - ]+class=".*?\bepisodeNumber\b.*?">(?:]+>)?([^<]+)''' - entries = [{ - '_type': 'url_transparent', - 'url': url.replace('detail', 'watch').replace('.html', '.' + movie_id + '.html'), - 'episode_id': episode_id, - 'episode_number': int_or_none(episode_id), - } for movie_id, episode_id in re.findall(episode_pattern, webpage)] - - playlist_title = remove_end( - self._og_search_title(webpage, fatal=False), ' - Anime - DAISUKI') - playlist_description = clean_html(get_element_by_id('synopsisTxt', webpage)) - - return self.playlist_result(entries, playlist_id, playlist_title, playlist_description) + entries = [] + for li in re.findall(r'(]+?data-product_id="[a-zA-Z0-9]{3}"[^>]+>)', webpage): + attr = extract_attributes(li) + ad_id = attr.get('data-ad_id') + product_id = attr.get('data-product_id') + if ad_id and product_id: + episode_id = attr.get('data-chapter') + entries.append({ + '_type': 'url_transparent', + 'url': 'http://motto.daisuki.net/framewatch/embed/%s/%s/760/428' % (ad_id, product_id), + 'episode_id': episode_id, + 'episode_number': int_or_none(episode_id), + 'ie_key': 'DaisukiMotto', + }) + + return self.playlist_result(entries, playlist_title='DRAGON BALL SUPER') diff --git a/youtube_dl/extractor/discovery.py b/youtube_dl/extractor/discovery.py index 55853f7..f9cec1d 100644 --- a/youtube_dl/extractor/discovery.py +++ b/youtube_dl/extractor/discovery.py @@ -1,14 +1,18 @@ from __future__ import unicode_literals -from .common import InfoExtractor +import random +import re +import string + +from .discoverygo import DiscoveryGoBaseIE from ..utils import ( - parse_duration, - parse_iso8601, + ExtractorError, + update_url_query, ) -from ..compat import compat_str +from ..compat import compat_HTTPError -class DiscoveryIE(InfoExtractor): +class DiscoveryIE(DiscoveryGoBaseIE): _VALID_URL = r'''(?x)https?://(?:www\.)?(?: discovery| investigationdiscovery| @@ -19,79 +23,65 @@ class DiscoveryIE(InfoExtractor): sciencechannel| tlc| velocity - )\.com/(?:[^/]+/)*(?P[^./?#]+)''' + )\.com(?P/tv-shows/[^/]+/(?:video|full-episode)s/(?P[^./?#]+))''' _TESTS = [{ - 'url': 'http://www.discovery.com/tv-shows/mythbusters/videos/mission-impossible-outtakes.htm', + 'url': 'https://www.discovery.com/tv-shows/cash-cab/videos/dave-foley', 'info_dict': { - 'id': '20769', + 'id': '5a2d9b4d6b66d17a5026e1fd', 'ext': 'mp4', - 'title': 'Mission Impossible Outtakes', - 'description': ('Watch Jamie Hyneman and Adam Savage practice being' - ' each other -- to the point of confusing Jamie\'s dog -- and ' - 'don\'t miss Adam moon-walking as Jamie ... behind Jamie\'s' - ' back.'), - 'duration': 156, - 'timestamp': 1302032462, - 'upload_date': '20110405', - 'uploader_id': '103207', + 'title': 'Dave Foley', + 'description': 'md5:4b39bcafccf9167ca42810eb5f28b01f', + 'duration': 608, }, 'params': { 'skip_download': True, # requires ffmpeg } }, { - 'url': 'http://www.discovery.com/tv-shows/mythbusters/videos/mythbusters-the-simpsons', - 'info_dict': { - 'id': 'mythbusters-the-simpsons', - 'title': 'MythBusters: The Simpsons', - }, - 'playlist_mincount': 10, - }, { - 'url': 'http://www.animalplanet.com/longfin-eels-maneaters/', - 'info_dict': { - 'id': '78326', - 'ext': 'mp4', - 'title': 'Longfin Eels: Maneaters?', - 'description': 'Jeremy Wade tests whether or not New Zealand\'s longfin eels are man-eaters by covering himself in fish guts and getting in the water with them.', - 'upload_date': '20140725', - 'timestamp': 1406246400, - 'duration': 116, - 'uploader_id': '103207', - }, - 'params': { - 'skip_download': True, # requires ffmpeg - } + 'url': 'https://www.investigationdiscovery.com/tv-shows/final-vision/full-episodes/final-vision', + 'only_matching': True, }] + _GEO_COUNTRIES = ['US'] + _GEO_BYPASS = False def _real_extract(self, url): - display_id = self._match_id(url) - info = self._download_json(url + '?flat=1', display_id) - - video_title = info.get('playlist_title') or info.get('video_title') + path, display_id = re.match(self._VALID_URL, url).groups() + webpage = self._download_webpage(url, display_id) - entries = [] + react_data = self._parse_json(self._search_regex( + r'window\.__reactTransmitPacket\s*=\s*({.+?});', + webpage, 'react data'), display_id) + content_blocks = react_data['layout'][path]['contentBlocks'] + video = next(cb for cb in content_blocks if cb.get('type') == 'video')['content']['items'][0] + video_id = video['id'] - for idx, video_info in enumerate(info['playlist']): - subtitles = {} - caption_url = video_info.get('captionsUrl') - if caption_url: - subtitles = { - 'en': [{ - 'url': caption_url, - }] - } + access_token = self._download_json( + 'https://www.discovery.com/anonymous', display_id, query={ + 'authLink': update_url_query( + 'https://login.discovery.com/v1/oauth2/authorize', { + 'client_id': react_data['application']['apiClientId'], + 'redirect_uri': 'https://fusion.ddmcdn.com/app/mercury-sdk/180/redirectHandler.html', + 'response_type': 'anonymous', + 'state': 'nonce,' + ''.join([random.choice(string.ascii_letters) for _ in range(32)]), + }) + })['access_token'] - entries.append({ - '_type': 'url_transparent', - 'url': 'http://players.brightcove.net/103207/default_default/index.html?videoId=ref:%s' % video_info['referenceId'], - 'id': compat_str(video_info['id']), - 'title': video_info['title'], - 'description': video_info.get('description'), - 'duration': parse_duration(video_info.get('video_length')), - 'webpage_url': video_info.get('href') or video_info.get('url'), - 'thumbnail': video_info.get('thumbnailURL'), - 'alt_title': video_info.get('secondary_title'), - 'timestamp': parse_iso8601(video_info.get('publishedDate')), - 'subtitles': subtitles, - }) + try: + stream = self._download_json( + 'https://api.discovery.com/v1/streaming/video/' + video_id, + display_id, headers={ + 'Authorization': 'Bearer ' + access_token, + }) + except ExtractorError as e: + if isinstance(e.cause, compat_HTTPError) and e.cause.code == 403: + e_description = self._parse_json( + e.cause.read().decode(), display_id)['description'] + if 'resource not available for country' in e_description: + self.raise_geo_restricted(countries=self._GEO_COUNTRIES) + if 'Authorized Networks' in e_description: + raise ExtractorError( + 'This video is only available via cable service provider subscription that' + ' is not currently supported. You may want to use --cookies.', expected=True) + raise ExtractorError(e_description) + raise - return self.playlist_result(entries, display_id, video_title) + return self._extract_video_info(video, stream, display_id) diff --git a/youtube_dl/extractor/discoverygo.py b/youtube_dl/extractor/discoverygo.py index 7cd5d42..3368c4c 100644 --- a/youtube_dl/extractor/discoverygo.py +++ b/youtube_dl/extractor/discoverygo.py @@ -5,6 +5,7 @@ import re from .common import InfoExtractor from ..compat import compat_str from ..utils import ( + determine_ext, extract_attributes, ExtractorError, int_or_none, @@ -27,42 +28,9 @@ class DiscoveryGoBaseIE(InfoExtractor): velocitychannel )go\.com/%s(?P[^/?#&]+)''' - -class DiscoveryGoIE(DiscoveryGoBaseIE): - _VALID_URL = DiscoveryGoBaseIE._VALID_URL_TEMPLATE % r'(?:[^/]+/)+' - _GEO_COUNTRIES = ['US'] - _TEST = { - 'url': 'https://www.discoverygo.com/bering-sea-gold/reaper-madness/', - 'info_dict': { - 'id': '58c167d86b66d12f2addeb01', - 'ext': 'mp4', - 'title': 'Reaper Madness', - 'description': 'md5:09f2c625c99afb8946ed4fb7865f6e78', - 'duration': 2519, - 'series': 'Bering Sea Gold', - 'season_number': 8, - 'episode_number': 6, - 'age_limit': 14, - }, - } - - def _real_extract(self, url): - display_id = self._match_id(url) - - webpage = self._download_webpage(url, display_id) - - container = extract_attributes( - self._search_regex( - r'(]+class=["\']video-player-container[^>]+>)', - webpage, 'video container')) - - video = self._parse_json( - container.get('data-video') or container.get('data-json'), - display_id) - + def _extract_video_info(self, video, stream, display_id): title = video['name'] - stream = video.get('stream') if not stream: if video.get('authenticated') is True: raise ExtractorError( @@ -106,7 +74,11 @@ class DiscoveryGoIE(DiscoveryGoBaseIE): not subtitle_url.startswith('http')): continue lang = caption.get('fileLang', 'en') - subtitles.setdefault(lang, []).append({'url': subtitle_url}) + ext = determine_ext(subtitle_url) + subtitles.setdefault(lang, []).append({ + 'url': subtitle_url, + 'ext': 'ttml' if ext == 'xml' else ext, + }) return { 'id': video_id, @@ -124,6 +96,43 @@ class DiscoveryGoIE(DiscoveryGoBaseIE): } +class DiscoveryGoIE(DiscoveryGoBaseIE): + _VALID_URL = DiscoveryGoBaseIE._VALID_URL_TEMPLATE % r'(?:[^/]+/)+' + _GEO_COUNTRIES = ['US'] + _TEST = { + 'url': 'https://www.discoverygo.com/bering-sea-gold/reaper-madness/', + 'info_dict': { + 'id': '58c167d86b66d12f2addeb01', + 'ext': 'mp4', + 'title': 'Reaper Madness', + 'description': 'md5:09f2c625c99afb8946ed4fb7865f6e78', + 'duration': 2519, + 'series': 'Bering Sea Gold', + 'season_number': 8, + 'episode_number': 6, + 'age_limit': 14, + }, + } + + def _real_extract(self, url): + display_id = self._match_id(url) + + webpage = self._download_webpage(url, display_id) + + container = extract_attributes( + self._search_regex( + r'(]+class=["\']video-player-container[^>]+>)', + webpage, 'video container')) + + video = self._parse_json( + container.get('data-video') or container.get('data-json'), + display_id) + + stream = video.get('stream') + + return self._extract_video_info(video, stream, display_id) + + class DiscoveryGoPlaylistIE(DiscoveryGoBaseIE): _VALID_URL = DiscoveryGoBaseIE._VALID_URL_TEMPLATE % '' _TEST = { diff --git a/youtube_dl/extractor/disney.py b/youtube_dl/extractor/disney.py index 968c4c7..0eee82f 100644 --- a/youtube_dl/extractor/disney.py +++ b/youtube_dl/extractor/disney.py @@ -10,6 +10,7 @@ from ..utils import ( compat_str, determine_ext, ExtractorError, + update_url_query, ) @@ -108,9 +109,16 @@ class DisneyIE(InfoExtractor): continue tbr = int_or_none(flavor.get('bitrate')) if tbr == 99999: - formats.extend(self._extract_m3u8_formats( + # wrong ks(Kaltura Signature) causes 404 Error + flavor_url = update_url_query(flavor_url, {'ks': ''}) + m3u8_formats = self._extract_m3u8_formats( flavor_url, video_id, 'mp4', - m3u8_id=flavor_format, fatal=False)) + m3u8_id=flavor_format, fatal=False) + for f in m3u8_formats: + # Apple FairPlay + if '/fpshls/' in f['url']: + continue + formats.append(f) continue format_id = [] if flavor_format: diff --git a/youtube_dl/extractor/dramafever.py b/youtube_dl/extractor/dramafever.py index 95883a0..6b60e54 100644 --- a/youtube_dl/extractor/dramafever.py +++ b/youtube_dl/extractor/dramafever.py @@ -54,7 +54,7 @@ class DramaFeverBaseIE(AMPIE): request = sanitized_Request( self._LOGIN_URL, urlencode_postdata(login_form)) response = self._download_webpage( - request, None, 'Logging in as %s' % username) + request, None, 'Logging in') if all(logout_pattern not in response for logout_pattern in ['href="/accounts/logout/"', '>Log out<']): diff --git a/youtube_dl/extractor/drtuber.py b/youtube_dl/extractor/drtuber.py index c5d56a9..c88b312 100644 --- a/youtube_dl/extractor/drtuber.py +++ b/youtube_dl/extractor/drtuber.py @@ -10,7 +10,7 @@ from ..utils import ( class DrTuberIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?drtuber\.com/(?:video|embed)/(?P\d+)(?:/(?P[\w-]+))?' + _VALID_URL = r'https?://(?:(?:www|m)\.)?drtuber\.com/(?:video|embed)/(?P\d+)(?:/(?P[\w-]+))?' _TESTS = [{ 'url': 'http://www.drtuber.com/video/1740434/hot-perky-blonde-naked-golf', 'md5': '93e680cf2536ad0dfb7e74d94a89facd', @@ -28,6 +28,9 @@ class DrTuberIE(InfoExtractor): }, { 'url': 'http://www.drtuber.com/embed/489939', 'only_matching': True, + }, { + 'url': 'http://m.drtuber.com/video/3893529/lingerie-blowjob-from-beautiful-teen', + 'only_matching': True, }] @staticmethod diff --git a/youtube_dl/extractor/ellentube.py b/youtube_dl/extractor/ellentube.py new file mode 100644 index 0000000..5444732 --- /dev/null +++ b/youtube_dl/extractor/ellentube.py @@ -0,0 +1,133 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import ( + clean_html, + extract_attributes, + float_or_none, + int_or_none, + try_get, +) + + +class EllenTubeBaseIE(InfoExtractor): + def _extract_data_config(self, webpage, video_id): + details = self._search_regex( + r'(<[^>]+\bdata-component=(["\'])[Dd]etails.+?>)', webpage, + 'details') + return self._parse_json( + extract_attributes(details)['data-config'], video_id) + + def _extract_video(self, data, video_id): + title = data['title'] + + formats = [] + duration = None + for entry in data.get('media'): + if entry.get('id') == 'm3u8': + formats = self._extract_m3u8_formats( + entry['url'], video_id, 'mp4', + entry_protocol='m3u8_native', m3u8_id='hls') + duration = int_or_none(entry.get('duration')) + break + self._sort_formats(formats) + + def get_insight(kind): + return int_or_none(try_get( + data, lambda x: x['insight']['%ss' % kind])) + + return { + 'extractor_key': EllenTubeIE.ie_key(), + 'id': video_id, + 'title': title, + 'description': data.get('description'), + 'duration': duration, + 'thumbnail': data.get('thumbnail'), + 'timestamp': float_or_none(data.get('publishTime'), scale=1000), + 'view_count': get_insight('view'), + 'like_count': get_insight('like'), + 'formats': formats, + } + + +class EllenTubeIE(EllenTubeBaseIE): + _VALID_URL = r'''(?x) + (?: + ellentube:| + https://api-prod\.ellentube\.com/ellenapi/api/item/ + ) + (?P[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}) + ''' + _TESTS = [{ + 'url': 'https://api-prod.ellentube.com/ellenapi/api/item/0822171c-3829-43bf-b99f-d77358ae75e3', + 'md5': '2fabc277131bddafdd120e0fc0f974c9', + 'info_dict': { + 'id': '0822171c-3829-43bf-b99f-d77358ae75e3', + 'ext': 'mp4', + 'title': 'Ellen Meets Las Vegas Survivors Jesus Campos and Stephen Schuck', + 'description': 'md5:76e3355e2242a78ad9e3858e5616923f', + 'thumbnail': r're:^https?://.+?', + 'duration': 514, + 'timestamp': 1508505120, + 'upload_date': '20171020', + 'view_count': int, + 'like_count': int, + } + }, { + 'url': 'ellentube:734a3353-f697-4e79-9ca9-bfc3002dc1e0', + 'only_matching': True, + }] + + def _real_extract(self, url): + video_id = self._match_id(url) + data = self._download_json( + 'https://api-prod.ellentube.com/ellenapi/api/item/%s' % video_id, + video_id) + return self._extract_video(data, video_id) + + +class EllenTubeVideoIE(EllenTubeBaseIE): + _VALID_URL = r'https?://(?:www\.)?ellentube\.com/video/(?P.+?)\.html' + _TEST = { + 'url': 'https://www.ellentube.com/video/ellen-meets-las-vegas-survivors-jesus-campos-and-stephen-schuck.html', + 'only_matching': True, + } + + def _real_extract(self, url): + display_id = self._match_id(url) + webpage = self._download_webpage(url, display_id) + video_id = self._extract_data_config(webpage, display_id)['id'] + return self.url_result( + 'ellentube:%s' % video_id, ie=EllenTubeIE.ie_key(), + video_id=video_id) + + +class EllenTubePlaylistIE(EllenTubeBaseIE): + _VALID_URL = r'https?://(?:www\.)?ellentube\.com/(?:episode|studios)/(?P.+?)\.html' + _TESTS = [{ + 'url': 'https://www.ellentube.com/episode/dax-shepard-jordan-fisher-haim.html', + 'info_dict': { + 'id': 'dax-shepard-jordan-fisher-haim', + 'title': "Dax Shepard, 'DWTS' Team Jordan Fisher & Lindsay Arnold, HAIM", + 'description': 'md5:bfc982194dabb3f4e325e43aa6b2e21c', + }, + 'playlist_count': 6, + }, { + 'url': 'https://www.ellentube.com/studios/macey-goes-rving0.html', + 'only_matching': True, + }] + + def _real_extract(self, url): + display_id = self._match_id(url) + webpage = self._download_webpage(url, display_id) + data = self._extract_data_config(webpage, display_id)['data'] + feed = self._download_json( + 'https://api-prod.ellentube.com/ellenapi/api/feed/?%s' + % data['filter'], display_id) + entries = [ + self._extract_video(elem, elem['id']) + for elem in feed if elem.get('type') == 'VIDEO' and elem.get('id')] + return self.playlist_result( + entries, display_id, data.get('title'), + clean_html(data.get('description'))) diff --git a/youtube_dl/extractor/ellentv.py b/youtube_dl/extractor/ellentv.py deleted file mode 100644 index e0a13dd..0000000 --- a/youtube_dl/extractor/ellentv.py +++ /dev/null @@ -1,101 +0,0 @@ -# coding: utf-8 -from __future__ import unicode_literals - -from .common import InfoExtractor -from .kaltura import KalturaIE -from ..utils import NO_DEFAULT - - -class EllenTVIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?(?:ellentv|ellentube)\.com/videos/(?P[a-z0-9_-]+)' - _TESTS = [{ - 'url': 'http://www.ellentv.com/videos/0-ipq1gsai/', - 'md5': '4294cf98bc165f218aaa0b89e0fd8042', - 'info_dict': { - 'id': '0_ipq1gsai', - 'ext': 'mov', - 'title': 'Fast Fingers of Fate', - 'description': 'md5:3539013ddcbfa64b2a6d1b38d910868a', - 'timestamp': 1428035648, - 'upload_date': '20150403', - 'uploader_id': 'batchUser', - }, - }, { - # not available via http://widgets.ellentube.com/ - 'url': 'http://www.ellentv.com/videos/1-szkgu2m2/', - 'info_dict': { - 'id': '1_szkgu2m2', - 'ext': 'flv', - 'title': "Ellen's Amazingly Talented Audience", - 'description': 'md5:86ff1e376ff0d717d7171590e273f0a5', - 'timestamp': 1255140900, - 'upload_date': '20091010', - 'uploader_id': 'ellenkaltura@gmail.com', - }, - 'params': { - 'skip_download': True, - }, - }] - - def _real_extract(self, url): - video_id = self._match_id(url) - - URLS = ('http://widgets.ellentube.com/videos/%s' % video_id, url) - - for num, url_ in enumerate(URLS, 1): - webpage = self._download_webpage( - url_, video_id, fatal=num == len(URLS)) - - default = NO_DEFAULT if num == len(URLS) else None - - partner_id = self._search_regex( - r"var\s+partnerId\s*=\s*'([^']+)", webpage, 'partner id', - default=default) - - kaltura_id = self._search_regex( - [r'id="kaltura_player_([^"]+)"', - r"_wb_entry_id\s*:\s*'([^']+)", - r'data-kaltura-entry-id="([^"]+)'], - webpage, 'kaltura id', default=default) - - if partner_id and kaltura_id: - break - - return self.url_result('kaltura:%s:%s' % (partner_id, kaltura_id), KalturaIE.ie_key()) - - -class EllenTVClipsIE(InfoExtractor): - IE_NAME = 'EllenTV:clips' - _VALID_URL = r'https?://(?:www\.)?ellentv\.com/episodes/(?P[a-z0-9_-]+)' - _TEST = { - 'url': 'http://www.ellentv.com/episodes/meryl-streep-vanessa-hudgens/', - 'info_dict': { - 'id': 'meryl-streep-vanessa-hudgens', - 'title': 'Meryl Streep, Vanessa Hudgens', - }, - 'playlist_mincount': 5, - } - - def _real_extract(self, url): - playlist_id = self._match_id(url) - - webpage = self._download_webpage(url, playlist_id) - playlist = self._extract_playlist(webpage, playlist_id) - - return { - '_type': 'playlist', - 'id': playlist_id, - 'title': self._og_search_title(webpage), - 'entries': self._extract_entries(playlist) - } - - def _extract_playlist(self, webpage, playlist_id): - json_string = self._search_regex(r'playerView.addClips\(\[\{(.*?)\}\]\);', webpage, 'json') - return self._parse_json('[{' + json_string + '}]', playlist_id) - - def _extract_entries(self, playlist): - return [ - self.url_result( - 'kaltura:%s:%s' % (item['kaltura_partner_id'], item['kaltura_entry_id']), - KalturaIE.ie_key(), video_id=item['kaltura_entry_id']) - for item in playlist] diff --git a/youtube_dl/extractor/espn.py b/youtube_dl/extractor/espn.py index 7a74360..127c69b 100644 --- a/youtube_dl/extractor/espn.py +++ b/youtube_dl/extractor/espn.py @@ -1,6 +1,9 @@ from __future__ import unicode_literals +import re + from .common import InfoExtractor +from .once import OnceIE from ..compat import compat_str from ..utils import ( determine_ext, @@ -9,22 +12,27 @@ from ..utils import ( ) -class ESPNIE(InfoExtractor): +class ESPNIE(OnceIE): _VALID_URL = r'''(?x) https?:// (?: - (?:(?:\w+\.)+)?espn\.go| - (?:www\.)?espn - )\.com/ - (?: - (?: - video/clip| - watch/player - ) (?: - \?.*?\bid=| - /_/id/ - ) + (?: + (?:(?:\w+\.)+)?espn\.go| + (?:www\.)?espn + )\.com/ + (?: + (?: + video/(?:clip|iframe/twitter)| + watch/player + ) + (?: + .*?\?.*?\bid=| + /_/id/ + ) + ) + )| + (?:www\.)espnfc\.(?:com|us)/(?:video/)?[^/]+/\d+/video/ ) (?P\d+) ''' @@ -77,6 +85,15 @@ class ESPNIE(InfoExtractor): }, { 'url': 'http://www.espn.com/video/clip/_/id/17989860', 'only_matching': True, + }, { + 'url': 'https://espn.go.com/video/iframe/twitter/?cms=espn&id=10365079', + 'only_matching': True, + }, { + 'url': 'http://www.espnfc.us/video/espn-fc-tv/86/video/3319154/nashville-unveiled-as-the-newest-club-in-mls', + 'only_matching': True, + }, { + 'url': 'http://www.espnfc.com/english-premier-league/23/video/3324163/premier-league-in-90-seconds-golden-tweets', + 'only_matching': True, }] def _real_extract(self, url): @@ -93,7 +110,9 @@ class ESPNIE(InfoExtractor): def traverse_source(source, base_source_id=None): for source_id, source in source.items(): - if isinstance(source, compat_str): + if source_id == 'alert': + continue + elif isinstance(source, compat_str): extract_source(source, base_source_id) elif isinstance(source, dict): traverse_source( @@ -106,7 +125,9 @@ class ESPNIE(InfoExtractor): return format_urls.add(source_url) ext = determine_ext(source_url) - if ext == 'smil': + if OnceIE.suitable(source_url): + formats.extend(self._extract_once_formats(source_url)) + elif ext == 'smil': formats.extend(self._extract_smil_formats( source_url, video_id, fatal=False)) elif ext == 'f4m': @@ -117,12 +138,24 @@ class ESPNIE(InfoExtractor): source_url, video_id, 'mp4', entry_protocol='m3u8_native', m3u8_id=source_id, fatal=False)) else: - formats.append({ + f = { 'url': source_url, 'format_id': source_id, - }) - - traverse_source(clip['links']['source']) + } + mobj = re.search(r'(\d+)p(\d+)_(\d+)k\.', source_url) + if mobj: + f.update({ + 'height': int(mobj.group(1)), + 'fps': int(mobj.group(2)), + 'tbr': int(mobj.group(3)), + }) + if source_id == 'mezzanine': + f['preference'] = 1 + formats.append(f) + + links = clip.get('links', {}) + traverse_source(links.get('source', {})) + traverse_source(links.get('mobile', {})) self._sort_formats(formats) description = clip.get('caption') or clip.get('description') @@ -144,9 +177,6 @@ class ESPNIE(InfoExtractor): class ESPNArticleIE(InfoExtractor): _VALID_URL = r'https?://(?:espn\.go|(?:www\.)?espn)\.com/(?:[^/]+/)*(?P[^/]+)' _TESTS = [{ - 'url': 'https://espn.go.com/video/iframe/twitter/?cms=espn&id=10365079', - 'only_matching': True, - }, { 'url': 'http://espn.go.com/nba/recap?gameId=400793786', 'only_matching': True, }, { @@ -175,3 +205,34 @@ class ESPNArticleIE(InfoExtractor): return self.url_result( 'http://espn.go.com/video/clip?id=%s' % video_id, ESPNIE.ie_key()) + + +class FiveThirtyEightIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?fivethirtyeight\.com/features/(?P[^/?#]+)' + _TEST = { + 'url': 'http://fivethirtyeight.com/features/how-the-6-8-raiders-can-still-make-the-playoffs/', + 'info_dict': { + 'id': '21846851', + 'ext': 'mp4', + 'title': 'FiveThirtyEight: The Raiders can still make the playoffs', + 'description': 'Neil Paine breaks down the simplest scenario that will put the Raiders into the playoffs at 8-8.', + 'timestamp': 1513960621, + 'upload_date': '20171222', + }, + 'params': { + 'skip_download': True, + }, + 'expected_warnings': ['Unable to download f4m manifest'], + } + + def _real_extract(self, url): + video_id = self._match_id(url) + + webpage = self._download_webpage(url, video_id) + + video_id = self._search_regex( + r'data-video-id=["\'](?P\d+)', + webpage, 'video id', group='id') + + return self.url_result( + 'http://espn.go.com/video/clip?id=%s' % video_id, ESPNIE.ie_key()) diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index d084707..e64defe 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -127,7 +127,10 @@ from .bloomberg import BloombergIE from .bokecc import BokeCCIE from .bostonglobe import BostonGlobeIE from .bpb import BpbIE -from .br import BRIE +from .br import ( + BRIE, + BRMediathekIE, +) from .bravotv import BravoTVIE from .breakcom import BreakIE from .brightcove import ( @@ -135,10 +138,7 @@ from .brightcove import ( BrightcoveNewIE, ) from .buzzfeed import BuzzFeedIE -from .byutv import ( - BYUtvIE, - BYUtvEventIE, -) +from .byutv import BYUtvIE from .c56 import C56IE from .camdemy import ( CamdemyIE, @@ -205,7 +205,6 @@ from .cnn import ( CNNArticleIE, ) from .coub import CoubIE -from .collegerama import CollegeRamaIE from .comedycentral import ( ComedyCentralFullEpisodesIE, ComedyCentralIE, @@ -243,11 +242,10 @@ from .dailymotion import ( DailymotionIE, DailymotionPlaylistIE, DailymotionUserIE, - DailymotionCloudIE, ) from .daisuki import ( - DaisukiIE, - DaisukiPlaylistIE, + DaisukiMottoIE, + DaisukiMottoPlaylistIE, ) from .daum import ( DaumIE, @@ -309,9 +307,10 @@ from .ehow import EHowIE from .eighttracks import EightTracksIE from .einthusan import EinthusanIE from .eitb import EitbIE -from .ellentv import ( - EllenTVIE, - EllenTVClipsIE, +from .ellentube import ( + EllenTubeIE, + EllenTubeVideoIE, + EllenTubePlaylistIE, ) from .elpais import ElPaisIE from .embedly import EmbedlyIE @@ -322,6 +321,7 @@ from .escapist import EscapistIE from .espn import ( ESPNIE, ESPNArticleIE, + FiveThirtyEightIE, ) from .esri import EsriVideoIE from .etonline import ETOnlineIE @@ -344,11 +344,10 @@ from .filmon import ( FilmOnIE, FilmOnChannelIE, ) -from .firstpost import FirstpostIE +from .filmweb import FilmwebIE from .firsttv import FirstTVIE from .fivemin import FiveMinIE from .fivetv import FiveTVIE -from .fktv import FKTVIE from .flickr import FlickrIE from .flipagram import FlipagramIE from .folketinget import FolketingetIE @@ -375,7 +374,7 @@ from .francetv import ( FranceTVIE, FranceTVEmbedIE, FranceTVInfoIE, - GenerationQuoiIE, + GenerationWhatIE, CultureboxIE, ) from .freesound import FreesoundIE @@ -391,7 +390,6 @@ from .gameone import ( GameOneIE, GameOnePlaylistIE, ) -from .gamersyde import GamersydeIE from .gamespot import GameSpotIE from .gamestar import GameStarIE from .gaskrank import GaskrankIE @@ -467,6 +465,7 @@ from .indavideo import ( ) from .infoq import InfoQIE from .instagram import InstagramIE, InstagramUserIE +from .internazionale import InternazionaleIE from .internetvideoarchive import InternetVideoArchiveIE from .iprima import IPrimaIE from .iqiyi import IqiyiIE @@ -572,9 +571,11 @@ from .mangomolo import ( MangomoloLiveIE, ) from .manyvids import ManyVidsIE +from .massengeschmacktv import MassengeschmackTVIE from .matchtv import MatchTVIE from .mdr import MDRIE from .mediaset import MediasetIE +from .mediasite import MediasiteIE from .medici import MediciIE from .megaphone import MegaphoneIE from .meipai import MeipaiIE @@ -688,6 +689,7 @@ from .nhl import ( ) from .nick import ( NickIE, + NickBrIE, NickDeIE, NickNightIE, NickRuIE, @@ -720,10 +722,6 @@ from .nowness import ( NownessPlaylistIE, NownessSeriesIE, ) -from .nowtv import ( - NowTVIE, - NowTVListIE, -) from .noz import NozIE from .npo import ( AndereTijdenIE, @@ -789,6 +787,7 @@ from .patreon import PatreonIE from .pbs import PBSIE from .pearvideo import PearVideoIE from .people import PeopleIE +from .performgroup import PerformGroupIE from .periscope import ( PeriscopeIE, PeriscopeUserIE, @@ -855,6 +854,7 @@ from .radiofrance import RadioFranceIE from .rai import ( RaiPlayIE, RaiPlayLiveIE, + RaiPlayPlaylistIE, RaiIE, ) from .rbmaradio import RBMARadioIE @@ -912,7 +912,6 @@ from .rutube import ( from .rutv import RUTVIE from .ruutu import RuutuIE from .ruv import RuvIE -from .sandia import SandiaIE from .safari import ( SafariIE, SafariApiIE, @@ -929,8 +928,12 @@ from .senateisvp import SenateISVPIE from .sendtonews import SendtoNewsIE from .servingsys import ServingSysIE from .servus import ServusIE +from .sevenplus import SevenPlusIE from .sexu import SexuIE -from .shahid import ShahidIE +from .shahid import ( + ShahidIE, + ShahidShowIE, +) from .shared import ( SharedIE, VivoIE, @@ -998,6 +1001,7 @@ from .streamango import StreamangoIE from .streamcloud import StreamcloudIE from .streamcz import StreamCZIE from .streetvoice import StreetVoiceIE +from .stretchinternet import StretchInternetIE from .sunporno import SunPornoIE from .svt import ( SVTIE, @@ -1100,6 +1104,10 @@ from .tvigle import TvigleIE from .tvland import TVLandIE from .tvn24 import TVN24IE from .tvnoe import TVNoeIE +from .tvnow import ( + TVNowIE, + TVNowListIE, +) from .tvp import ( TVPEmbedIE, TVPIE, @@ -1113,6 +1121,7 @@ from .tvplayer import TVPlayerIE from .tweakers import TweakersIE from .twentyfourvideo import TwentyFourVideoIE from .twentymin import TwentyMinutenIE +from .twentythreevideo import TwentyThreeVideoIE from .twitch import ( TwitchVideoIE, TwitchChapterIE, @@ -1135,8 +1144,10 @@ from .udemy import ( UdemyCourseIE ) from .udn import UDNEmbedIE +from .ufctv import UFCTVIE from .uktvplay import UKTVPlayIE from .digiteka import DigitekaIE +from .umg import UMGDeIE from .unistra import UnistraIE from .unity import UnityIE from .uol import UOLIE diff --git a/youtube_dl/extractor/faz.py b/youtube_dl/extractor/faz.py index 4bc8fc5..312ee2a 100644 --- a/youtube_dl/extractor/faz.py +++ b/youtube_dl/extractor/faz.py @@ -1,7 +1,10 @@ # coding: utf-8 from __future__ import unicode_literals +import re + from .common import InfoExtractor +from ..compat import compat_etree_fromstring from ..utils import ( xpath_element, xpath_text, @@ -43,10 +46,15 @@ class FazIE(InfoExtractor): webpage = self._download_webpage(url, video_id) description = self._og_search_description(webpage) - config_xml_url = self._search_regex( - r'videoXMLURL\s*=\s*"([^"]+)', webpage, 'config xml url') - config = self._download_xml( - config_xml_url, video_id, 'Downloading config xml') + media = self._html_search_regex( + r"data-videojs-media='([^']+)", + webpage, 'media') + if media == 'extern': + perform_url = self._search_regex( + r"]+?src='((?:http:)?//player\.performgroup\.com/eplayer/eplayer\.html#/?[0-9a-f]{26}\.[0-9a-z]{26})", + webpage, 'perform url') + return self.url_result(perform_url) + config = compat_etree_fromstring(media) encodings = xpath_element(config, 'ENCODINGS', 'encodings', True) formats = [] @@ -55,12 +63,24 @@ class FazIE(InfoExtractor): if encoding is not None: encoding_url = xpath_text(encoding, 'FILENAME') if encoding_url: - formats.append({ + tbr = xpath_text(encoding, 'AVERAGEBITRATE', 1000) + if tbr: + tbr = int_or_none(tbr.replace(',', '.')) + f = { 'url': encoding_url, 'format_id': code.lower(), 'quality': pref, - 'tbr': int_or_none(xpath_text(encoding, 'AVERAGEBITRATE')), - }) + 'tbr': tbr, + 'vcodec': xpath_text(encoding, 'CODEC'), + } + mobj = re.search(r'(\d+)x(\d+)_(\d+)\.mp4', encoding_url) + if mobj: + f.update({ + 'width': int(mobj.group(1)), + 'height': int(mobj.group(2)), + 'tbr': tbr or int(mobj.group(3)), + }) + formats.append(f) self._sort_formats(formats) return { diff --git a/youtube_dl/extractor/fczenit.py b/youtube_dl/extractor/fczenit.py index 8d1010b..8db7c59 100644 --- a/youtube_dl/extractor/fczenit.py +++ b/youtube_dl/extractor/fczenit.py @@ -2,7 +2,10 @@ from __future__ import unicode_literals from .common import InfoExtractor -from ..compat import compat_urlparse +from ..utils import ( + int_or_none, + float_or_none, +) class FczenitIE(InfoExtractor): @@ -14,6 +17,8 @@ class FczenitIE(InfoExtractor): 'id': '41044', 'ext': 'mp4', 'title': 'Так пишется история: казанский разгром ЦСКА на «Зенит-ТВ»', + 'timestamp': 1462283735, + 'upload_date': '20160503', }, } @@ -21,28 +26,31 @@ class FczenitIE(InfoExtractor): video_id = self._match_id(url) webpage = self._download_webpage(url, video_id) - video_title = self._html_search_regex( - r'<[^>]+class=\"photoalbum__title\">([^<]+)', webpage, 'title') + msi_id = self._search_regex( + r"(?s)config\s*=\s*{.+?video_id\s*:\s*'([^']+)'", webpage, 'msi id') - video_items = self._parse_json(self._search_regex( - r'arrPath\s*=\s*JSON\.parse\(\'(.+)\'\)', webpage, 'video items'), - video_id) - - def merge_dicts(*dicts): - ret = {} - for a_dict in dicts: - ret.update(a_dict) - return ret + msi_data = self._download_json( + 'http://player.fc-zenit.ru/msi/video', msi_id, query={ + 'video': msi_id, + })['data'] + title = msi_data['name'] formats = [{ - 'url': compat_urlparse.urljoin(url, video_url), - 'tbr': int(tbr), - } for tbr, video_url in merge_dicts(*video_items).items()] + 'format_id': q.get('label'), + 'url': q['url'], + 'height': int_or_none(q.get('label')), + } for q in msi_data['qualities'] if q.get('url')] self._sort_formats(formats) + tags = [tag['label'] for tag in msi_data.get('tags', []) if tag.get('label')] + return { 'id': video_id, - 'title': video_title, + 'title': title, + 'thumbnail': msi_data.get('preview'), 'formats': formats, + 'duration': float_or_none(msi_data.get('duration')), + 'timestamp': int_or_none(msi_data.get('date')), + 'tags': tags, } diff --git a/youtube_dl/extractor/filmweb.py b/youtube_dl/extractor/filmweb.py new file mode 100644 index 0000000..56000bc --- /dev/null +++ b/youtube_dl/extractor/filmweb.py @@ -0,0 +1,42 @@ +from __future__ import unicode_literals + +import re + +from .common import InfoExtractor + + +class FilmwebIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?filmweb\.no/(?Ptrailere|filmnytt)/article(?P\d+)\.ece' + _TEST = { + 'url': 'http://www.filmweb.no/trailere/article1264921.ece', + 'md5': 'e353f47df98e557d67edaceda9dece89', + 'info_dict': { + 'id': '13033574', + 'ext': 'mp4', + 'title': 'Det som en gang var', + 'upload_date': '20160316', + 'timestamp': 1458140101, + 'uploader_id': '12639966', + 'uploader': 'Live Roaldset', + } + } + + def _real_extract(self, url): + article_type, article_id = re.match(self._VALID_URL, url).groups() + if article_type == 'filmnytt': + webpage = self._download_webpage(url, article_id) + article_id = self._search_regex(r'data-videoid="(\d+)"', webpage, 'article id') + embed_code = self._download_json( + 'https://www.filmweb.no/template_v2/ajax/json_trailerEmbed.jsp', + article_id, query={ + 'articleId': article_id, + })['embedCode'] + iframe_url = self._proto_relative_url(self._search_regex( + r']+src="([^"]+)', embed_code, 'iframe url')) + + return { + '_type': 'url_transparent', + 'id': article_id, + 'url': iframe_url, + 'ie_key': 'TwentyThreeVideo', + } diff --git a/youtube_dl/extractor/firstpost.py b/youtube_dl/extractor/firstpost.py deleted file mode 100644 index e8936cb..0000000 --- a/youtube_dl/extractor/firstpost.py +++ /dev/null @@ -1,50 +0,0 @@ -from __future__ import unicode_literals - -from .common import InfoExtractor - - -class FirstpostIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?firstpost\.com/[^/]+/.*-(?P[0-9]+)\.html' - - _TEST = { - 'url': 'http://www.firstpost.com/india/india-to-launch-indigenous-aircraft-carrier-monday-1025403.html', - 'md5': 'ee9114957692f01fb1263ed87039112a', - 'info_dict': { - 'id': '1025403', - 'ext': 'mp4', - 'title': 'India to launch indigenous aircraft carrier INS Vikrant today', - 'description': 'md5:feef3041cb09724e0bdc02843348f5f4', - } - } - - def _real_extract(self, url): - video_id = self._match_id(url) - page = self._download_webpage(url, video_id) - - title = self._html_search_meta('twitter:title', page, 'title', fatal=True) - description = self._html_search_meta('twitter:description', page, 'title') - - data = self._download_xml( - 'http://www.firstpost.com/getvideoxml-%s.xml' % video_id, video_id, - 'Downloading video XML') - - item = data.find('./playlist/item') - thumbnail = item.find('./image').text - - formats = [ - { - 'url': details.find('./file').text, - 'format_id': details.find('./label').text.strip(), - 'width': int(details.find('./width').text.strip()), - 'height': int(details.find('./height').text.strip()), - } for details in item.findall('./source/file_details') if details.find('./file').text - ] - self._sort_formats(formats) - - return { - 'id': video_id, - 'title': title, - 'description': description, - 'thumbnail': thumbnail, - 'formats': formats, - } diff --git a/youtube_dl/extractor/fktv.py b/youtube_dl/extractor/fktv.py deleted file mode 100644 index 2958452..0000000 --- a/youtube_dl/extractor/fktv.py +++ /dev/null @@ -1,51 +0,0 @@ -from __future__ import unicode_literals - -from .common import InfoExtractor -from ..utils import ( - clean_html, - determine_ext, - js_to_json, -) - - -class FKTVIE(InfoExtractor): - IE_NAME = 'fernsehkritik.tv' - _VALID_URL = r'https?://(?:www\.)?fernsehkritik\.tv/folge-(?P[0-9]+)(?:/.*)?' - - _TEST = { - 'url': 'http://fernsehkritik.tv/folge-1', - 'md5': '21f0b0c99bce7d5b524eb1b17b1c6d79', - 'info_dict': { - 'id': '1', - 'ext': 'mp4', - 'title': 'Folge 1 vom 10. April 2007', - 'thumbnail': r're:^https?://.*\.jpg$', - }, - } - - def _real_extract(self, url): - episode = self._match_id(url) - - webpage = self._download_webpage( - 'http://fernsehkritik.tv/folge-%s/play' % episode, episode) - title = clean_html(self._html_search_regex( - '

    ([^<]+)

    ', webpage, 'title')) - thumbnail = self._search_regex(r'POSTER\s*=\s*"([^"]+)', webpage, 'thumbnail', fatal=False) - sources = self._parse_json(self._search_regex(r'(?s)MEDIA\s*=\s*(\[.+?\]);', webpage, 'media'), episode, js_to_json) - - formats = [] - for source in sources: - furl = source.get('src') - if furl: - formats.append({ - 'url': furl, - 'format_id': determine_ext(furl), - }) - self._sort_formats(formats) - - return { - 'id': episode, - 'title': title, - 'formats': formats, - 'thumbnail': thumbnail, - } diff --git a/youtube_dl/extractor/fox.py b/youtube_dl/extractor/fox.py index 5f98d01..11d6c9c 100644 --- a/youtube_dl/extractor/fox.py +++ b/youtube_dl/extractor/fox.py @@ -11,6 +11,7 @@ from ..utils import ( parse_duration, try_get, unified_timestamp, + update_url_query, ) @@ -62,7 +63,8 @@ class FOXIE(AdobePassIE): duration = int_or_none(video.get('durationInSeconds')) or int_or_none( video.get('duration')) or parse_duration(video.get('duration')) timestamp = unified_timestamp(video.get('datePublished')) - age_limit = parse_age_limit(video.get('contentRating')) + rating = video.get('contentRating') + age_limit = parse_age_limit(rating) data = try_get( video, lambda x: x['trackingData']['properties'], dict) or {} @@ -77,8 +79,24 @@ class FOXIE(AdobePassIE): release_year = int_or_none(video.get('releaseYear')) if data.get('authRequired'): - # TODO: AP - pass + resource = self._get_mvpd_resource( + 'fbc-fox', title, video.get('guid'), rating) + release_url = update_url_query( + release_url, { + 'auth': self._extract_mvpd_auth( + url, video_id, 'fbc-fox', resource) + }) + + subtitles = {} + for doc_rel in video.get('documentReleases', []): + rel_url = doc_rel.get('url') + if not url or doc_rel.get('format') != 'SCC': + continue + subtitles['en'] = [{ + 'url': rel_url, + 'ext': 'scc', + }] + break info = { 'id': video_id, @@ -93,6 +111,7 @@ class FOXIE(AdobePassIE): 'episode': episode, 'episode_number': episode_number, 'release_year': release_year, + 'subtitles': subtitles, } urlh = self._request_webpage(HEADRequest(release_url), video_id) diff --git a/youtube_dl/extractor/fox9.py b/youtube_dl/extractor/fox9.py index 56d9975..17dfffa 100644 --- a/youtube_dl/extractor/fox9.py +++ b/youtube_dl/extractor/fox9.py @@ -2,7 +2,6 @@ from __future__ import unicode_literals from .anvato import AnvatoIE -from ..utils import js_to_json class FOX9IE(AnvatoIE): @@ -34,9 +33,9 @@ class FOX9IE(AnvatoIE): video_id = self._parse_json( self._search_regex( - r'AnvatoPlaylist\s*\(\s*(\[.+?\])\s*\)\s*;', + r"this\.videosJson\s*=\s*'(\[.+?\])';", webpage, 'anvato playlist'), - video_id, transform_source=js_to_json)[0]['video'] + video_id)[0]['video'] return self._get_anvato_videos( 'anvato_epfox_app_web_prod_b3373168e12f423f41504f207000188daf88251b', diff --git a/youtube_dl/extractor/francetv.py b/youtube_dl/extractor/francetv.py index 2bcbb3e..095bb39 100644 --- a/youtube_dl/extractor/francetv.py +++ b/youtube_dl/extractor/francetv.py @@ -3,7 +3,6 @@ from __future__ import unicode_literals import re -import json from .common import InfoExtractor from ..compat import compat_urlparse @@ -14,10 +13,7 @@ from ..utils import ( parse_duration, determine_ext, ) -from .dailymotion import ( - DailymotionIE, - DailymotionCloudIE, -) +from .dailymotion import DailymotionIE class FranceTVBaseInfoExtractor(InfoExtractor): @@ -291,10 +287,6 @@ class FranceTVInfoIE(FranceTVBaseInfoExtractor): page_title = mobj.group('title') webpage = self._download_webpage(url, page_title) - dmcloud_url = DailymotionCloudIE._extract_dmcloud_url(webpage) - if dmcloud_url: - return self.url_result(dmcloud_url, DailymotionCloudIE.ie_key()) - dailymotion_urls = DailymotionIE._extract_urls(webpage) if dailymotion_urls: return self.playlist_result([ @@ -308,31 +300,32 @@ class FranceTVInfoIE(FranceTVBaseInfoExtractor): return self._extract_video(video_id, catalogue) -class GenerationQuoiIE(InfoExtractor): - IE_NAME = 'france2.fr:generation-quoi' - _VALID_URL = r'https?://generation-quoi\.france2\.fr/portrait/(?P[^/?#]+)' +class GenerationWhatIE(InfoExtractor): + IE_NAME = 'france2.fr:generation-what' + _VALID_URL = r'https?://generation-what\.francetv\.fr/[^/]+/video/(?P[^/?#]+)' - _TEST = { - 'url': 'http://generation-quoi.france2.fr/portrait/garde-a-vous', + _TESTS = [{ + 'url': 'http://generation-what.francetv.fr/portrait/video/present-arms', 'info_dict': { - 'id': 'k7FJX8VBcvvLmX4wA5Q', + 'id': 'wtvKYUG45iw', 'ext': 'mp4', - 'title': 'Génération Quoi - Garde à Vous', - 'uploader': 'Génération Quoi', - }, - 'params': { - # It uses Dailymotion - 'skip_download': True, + 'title': 'Generation What - Garde à vous - FRA', + 'uploader': 'Generation What', + 'uploader_id': 'UCHH9p1eetWCgt4kXBYCb3_w', + 'upload_date': '20160411', }, - } + }, { + 'url': 'http://generation-what.francetv.fr/europe/video/present-arms', + 'only_matching': True, + }] def _real_extract(self, url): display_id = self._match_id(url) - info_url = compat_urlparse.urljoin(url, '/medias/video/%s.json' % display_id) - info_json = self._download_webpage(info_url, display_id) - info = json.loads(info_json) - return self.url_result('http://www.dailymotion.com/video/%s' % info['id'], - ie='Dailymotion') + webpage = self._download_webpage(url, display_id) + youtube_id = self._search_regex( + r"window\.videoURL\s*=\s*'([0-9A-Za-z_-]{11})';", + webpage, 'youtube id') + return self.url_result(youtube_id, 'Youtube', youtube_id) class CultureboxIE(FranceTVBaseInfoExtractor): @@ -363,6 +356,7 @@ class CultureboxIE(FranceTVBaseInfoExtractor): raise ExtractorError('Video %s is not available' % name, expected=True) video_id, catalogue = self._search_regex( - r'"http://videos\.francetv\.fr/video/([^@]+@[^"]+)"', webpage, 'video id').split('@') + r'["\'>]https?://videos\.francetv\.fr/video/([^@]+@.+?)["\'<]', + webpage, 'video id').split('@') return self._extract_video(video_id, catalogue) diff --git a/youtube_dl/extractor/freespeech.py b/youtube_dl/extractor/freespeech.py index 7fa271b..486a49c 100644 --- a/youtube_dl/extractor/freespeech.py +++ b/youtube_dl/extractor/freespeech.py @@ -1,37 +1,34 @@ from __future__ import unicode_literals -import re -import json - from .common import InfoExtractor class FreespeechIE(InfoExtractor): IE_NAME = 'freespeech.org' - _VALID_URL = r'https?://(?:www\.)?freespeech\.org/video/(?P.+)' + _VALID_URL = r'https?://(?:www\.)?freespeech\.org/stories/(?P<id>.+)' _TEST = { 'add_ie': ['Youtube'], - 'url': 'https://www.freespeech.org/video/obama-romney-campaign-colorado-ahead-debate-0', + 'url': 'http://www.freespeech.org/stories/fcc-announces-net-neutrality-rollback-whats-stake/', 'info_dict': { - 'id': 'poKsVCZ64uU', - 'ext': 'webm', - 'title': 'Obama, Romney Campaign in Colorado Ahead of Debate', - 'description': 'Obama, Romney Campaign in Colorado Ahead of Debate', - 'uploader': 'freespeechtv', + 'id': 'waRk6IPqyWM', + 'ext': 'mp4', + 'title': 'What\'s At Stake - Net Neutrality Special', + 'description': 'Presented by MNN and FSTV', + 'upload_date': '20170728', 'uploader_id': 'freespeechtv', - 'upload_date': '20121002', + 'uploader': 'freespeechtv', }, } def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - title = mobj.group('title') - webpage = self._download_webpage(url, title) - info_json = self._search_regex(r'jQuery\.extend\(Drupal\.settings, ({.*?})\);', webpage, 'info') - info = json.loads(info_json) + display_id = self._match_id(url) + webpage = self._download_webpage(url, display_id) + youtube_url = self._search_regex( + r'data-video-url="([^"]+)"', + webpage, 'youtube url') return { '_type': 'url', - 'url': info['jw_player']['basic_video_node_player']['file'], + 'url': youtube_url, 'ie_key': 'Youtube', } diff --git a/youtube_dl/extractor/funimation.py b/youtube_dl/extractor/funimation.py index 8c37509..107f658 100644 --- a/youtube_dl/extractor/funimation.py +++ b/youtube_dl/extractor/funimation.py @@ -57,7 +57,7 @@ class FunimationIE(InfoExtractor): try: data = self._download_json( 'https://prod-api-funimationnow.dadcdigital.com/api/auth/login/', - None, 'Logging in as %s' % username, data=urlencode_postdata({ + None, 'Logging in', data=urlencode_postdata({ 'username': username, 'password': password, })) diff --git a/youtube_dl/extractor/gamersyde.py b/youtube_dl/extractor/gamersyde.py deleted file mode 100644 index a218a69..0000000 --- a/youtube_dl/extractor/gamersyde.py +++ /dev/null @@ -1,70 +0,0 @@ -from __future__ import unicode_literals - -import re - -from .common import InfoExtractor -from ..utils import ( - js_to_json, - parse_duration, - remove_start, -) - - -class GamersydeIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?gamersyde\.com/hqstream_(?P<display_id>[\da-z_]+)-(?P<id>\d+)_[a-z]{2}\.html' - _TEST = { - 'url': 'http://www.gamersyde.com/hqstream_bloodborne_birth_of_a_hero-34371_en.html', - 'md5': 'f38d400d32f19724570040d5ce3a505f', - 'info_dict': { - 'id': '34371', - 'ext': 'mp4', - 'duration': 372, - 'title': 'Bloodborne - Birth of a hero', - 'thumbnail': r're:^https?://.*\.jpg$', - } - } - - def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') - display_id = mobj.group('display_id') - - webpage = self._download_webpage(url, display_id) - - playlist = self._parse_json( - self._search_regex( - r'(?s)playlist: \[({.+?})\]\s*}\);', webpage, 'files'), - display_id, transform_source=js_to_json) - - formats = [] - for source in playlist['sources']: - video_url = source.get('file') - if not video_url: - continue - format_id = source.get('label') - f = { - 'url': video_url, - 'format_id': format_id, - } - m = re.search(r'^(?P<height>\d+)[pP](?P<fps>\d+)fps', format_id) - if m: - f.update({ - 'height': int(m.group('height')), - 'fps': int(m.group('fps')), - }) - formats.append(f) - self._sort_formats(formats) - - title = remove_start(playlist['title'], '%s - ' % video_id) - thumbnail = playlist.get('image') - duration = parse_duration(self._search_regex( - r'Length:</label>([^<]+)<', webpage, 'duration', fatal=False)) - - return { - 'id': video_id, - 'display_id': display_id, - 'title': title, - 'thumbnail': thumbnail, - 'duration': duration, - 'formats': formats, - } diff --git a/youtube_dl/extractor/gamespot.py b/youtube_dl/extractor/gamespot.py index 6d177cb..ab647dd 100644 --- a/youtube_dl/extractor/gamespot.py +++ b/youtube_dl/extractor/gamespot.py @@ -14,7 +14,7 @@ from ..utils import ( class GameSpotIE(OnceIE): - _VALID_URL = r'https?://(?:www\.)?gamespot\.com/videos/(?:[^/]+/\d+-|embed/)(?P<id>\d+)' + _VALID_URL = r'https?://(?:www\.)?gamespot\.com/(?:video|article)s/(?:[^/]+/\d+-|embed/)(?P<id>\d+)' _TESTS = [{ 'url': 'http://www.gamespot.com/videos/arma-3-community-guide-sitrep-i/2300-6410818/', 'md5': 'b2a30deaa8654fcccd43713a6b6a4825', @@ -38,6 +38,9 @@ class GameSpotIE(OnceIE): }, { 'url': 'https://www.gamespot.com/videos/embed/6439218/', 'only_matching': True, + }, { + 'url': 'https://www.gamespot.com/articles/the-last-of-us-2-receives-new-ps4-trailer/1100-6454469/', + 'only_matching': True, }] def _real_extract(self, url): @@ -108,7 +111,8 @@ class GameSpotIE(OnceIE): onceux_url = self._parse_json(unescapeHTML(onceux_json), page_id).get('metadataUri') if onceux_url: formats.extend(self._extract_once_formats(re.sub( - r'https?://[^/]+', 'http://once.unicornmedia.com', onceux_url))) + r'https?://[^/]+', 'http://once.unicornmedia.com', onceux_url), + http_formats_preference=-1)) if not formats: for quality in ['sd', 'hd']: diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py index 2a9c3e2..cc4c90b 100644 --- a/youtube_dl/extractor/generic.py +++ b/youtube_dl/extractor/generic.py @@ -59,10 +59,7 @@ from .tnaflix import TNAFlixNetworkEmbedIE from .drtuber import DrTuberIE from .redtube import RedTubeIE from .vimeo import VimeoIE -from .dailymotion import ( - DailymotionIE, - DailymotionCloudIE, -) +from .dailymotion import DailymotionIE from .dailymail import DailyMailIE from .onionstudios import OnionStudiosIE from .viewlift import ViewLiftEmbedIE @@ -102,6 +99,8 @@ from .joj import JojIE from .megaphone import MegaphoneIE from .vzaar import VzaarIE from .channel9 import Channel9IE +from .vshare import VShareIE +from .mediasite import MediasiteIE class GenericIE(InfoExtractor): @@ -1098,9 +1097,9 @@ class GenericIE(InfoExtractor): }, # jwplayer rtmp { - 'url': 'http://www.suffolk.edu/sjc/', + 'url': 'http://www.suffolk.edu/sjc/live.php', 'info_dict': { - 'id': 'sjclive', + 'id': 'live', 'ext': 'flv', 'title': 'Massachusetts Supreme Judicial Court Oral Arguments', 'uploader': 'www.suffolk.edu', @@ -1108,7 +1107,7 @@ class GenericIE(InfoExtractor): 'params': { 'skip_download': True, }, - 'skip': 'does not contain a video anymore', + 'skip': 'Only has video a few mornings per month, see http://www.suffolk.edu/sjc/', }, # Complex jwplayer { @@ -1135,6 +1134,19 @@ class GenericIE(InfoExtractor): 'skip_download': True, } }, + { + # JWPlatform iframe + 'url': 'https://www.mediaite.com/tv/dem-senator-claims-gary-cohn-faked-a-bad-connection-during-trump-call-to-get-him-off-the-phone/', + 'md5': 'ca00a040364b5b439230e7ebfd02c4e9', + 'info_dict': { + 'id': 'O0c5JcKT', + 'ext': 'mp4', + 'upload_date': '20171122', + 'timestamp': 1511366290, + 'title': 'Dem Senator Claims Gary Cohn Faked a Bad Connection During Trump Call to Get Him Off the Phone', + }, + 'add_ie': [JWPlatformIE.ie_key()], + }, { # Video.js embed, multiple formats 'url': 'http://ortcam.com/solidworks-урок-6-настройка-чертежа_33f9b7351.html', @@ -1458,23 +1470,6 @@ class GenericIE(InfoExtractor): 'timestamp': 1432570283, }, }, - # Dailymotion Cloud video - { - 'url': 'http://replay.publicsenat.fr/vod/le-debat/florent-kolandjian,dominique-cena,axel-decourtye,laurence-abeille,bruno-parmentier/175910', - 'md5': 'dcaf23ad0c67a256f4278bce6e0bae38', - 'info_dict': { - 'id': 'x2uy8t3', - 'ext': 'mp4', - 'title': 'Sauvons les abeilles ! - Le débat', - 'description': 'md5:d9082128b1c5277987825d684939ca26', - 'thumbnail': r're:^https?://.*\.jpe?g$', - 'timestamp': 1434970506, - 'upload_date': '20150622', - 'uploader': 'Public Sénat', - 'uploader_id': 'xa9gza', - }, - 'skip': 'File not found.', - }, # OnionStudios embed { 'url': 'http://www.clickhole.com/video/dont-understand-bitcoin-man-will-mumble-explanatio-2537', @@ -1921,6 +1916,28 @@ class GenericIE(InfoExtractor): 'title': 'Rescue Kit 14 Free Edition - Getting started', }, 'playlist_count': 4, + }, + { + # vshare embed + 'url': 'https://youtube-dl-demo.neocities.org/vshare.html', + 'md5': '17b39f55b5497ae8b59f5fbce8e35886', + 'info_dict': { + 'id': '0f64ce6', + 'title': 'vl14062007715967', + 'ext': 'mp4', + } + }, + { + 'url': 'http://www.heidelberg-laureate-forum.org/blog/video/lecture-friday-september-23-2016-sir-c-antony-r-hoare/', + 'md5': 'aecd089f55b1cb5a59032cb049d3a356', + 'info_dict': { + 'id': '90227f51a80c4d8f86c345a7fa62bd9a1d', + 'ext': 'mp4', + 'title': 'Lecture: Friday, September 23, 2016 - Sir Tony Hoare', + 'description': 'md5:5a51db84a62def7b7054df2ade403c6c', + 'timestamp': 1474354800, + 'upload_date': '20160920', + } } # { # # TODO: find another test @@ -2171,7 +2188,7 @@ class GenericIE(InfoExtractor): return self.playlist_result(self._parse_xspf(doc, video_id), video_id) elif re.match(r'(?i)^(?:{[^}]+})?MPD$', doc.tag): info_dict['formats'] = self._parse_mpd_formats( - doc, video_id, + doc, mpd_base_url=compat_str(full_response.geturl()).rpartition('/')[0], mpd_url=url) self._sort_formats(info_dict['formats']) @@ -2680,11 +2697,6 @@ class GenericIE(InfoExtractor): if senate_isvp_url: return self.url_result(senate_isvp_url, 'SenateISVP') - # Look for Dailymotion Cloud videos - dmcloud_url = DailymotionCloudIE._extract_dmcloud_url(webpage) - if dmcloud_url: - return self.url_result(dmcloud_url, 'DailymotionCloud') - # Look for OnionStudios embeds onionstudios_url = OnionStudiosIE._extract_url(webpage) if onionstudios_url: @@ -2879,6 +2891,21 @@ class GenericIE(InfoExtractor): return self.playlist_from_matches( channel9_urls, video_id, video_title, ie=Channel9IE.ie_key()) + vshare_urls = VShareIE._extract_urls(webpage) + if vshare_urls: + return self.playlist_from_matches( + vshare_urls, video_id, video_title, ie=VShareIE.ie_key()) + + # Look for Mediasite embeds + mediasite_urls = MediasiteIE._extract_urls(webpage) + if mediasite_urls: + entries = [ + self.url_result(smuggle_url( + compat_urlparse.urljoin(url, mediasite_url), + {'UrlReferrer': url}), ie=MediasiteIE.ie_key()) + for mediasite_url in mediasite_urls] + return self.playlist_result(entries, video_id, video_title) + def merge_dicts(dict1, dict2): merged = {} for k, v in dict1.items(): diff --git a/youtube_dl/extractor/instagram.py b/youtube_dl/extractor/instagram.py index 4667335..a77f619 100644 --- a/youtube_dl/extractor/instagram.py +++ b/youtube_dl/extractor/instagram.py @@ -1,5 +1,6 @@ from __future__ import unicode_literals +import itertools import re from .common import InfoExtractor @@ -7,7 +8,6 @@ from ..compat import compat_str from ..utils import ( get_element_by_attribute, int_or_none, - limit_length, lowercase_escape, try_get, ) @@ -130,13 +130,21 @@ class InstagramIE(InfoExtractor): video_url = media.get('video_url') height = int_or_none(media.get('dimensions', {}).get('height')) width = int_or_none(media.get('dimensions', {}).get('width')) - description = media.get('caption') + description = try_get( + media, lambda x: x['edge_media_to_caption']['edges'][0]['node']['text'], + compat_str) or media.get('caption') thumbnail = media.get('display_src') - timestamp = int_or_none(media.get('date')) + timestamp = int_or_none(media.get('taken_at_timestamp') or media.get('date')) uploader = media.get('owner', {}).get('full_name') uploader_id = media.get('owner', {}).get('username') - like_count = int_or_none(media.get('likes', {}).get('count')) - comment_count = int_or_none(media.get('comments', {}).get('count')) + + def get_count(key, kind): + return int_or_none(try_get( + media, (lambda x: x['edge_media_%s' % key]['count'], + lambda x: x['%ss' % kind]['count']))) + like_count = get_count('preview_like', 'like') + comment_count = get_count('to_comment', 'comment') + comments = [{ 'author': comment.get('user', {}).get('username'), 'author_id': comment.get('user', {}).get('id'), @@ -212,7 +220,7 @@ class InstagramIE(InfoExtractor): class InstagramUserIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?instagram\.com/(?P<username>[^/]{2,})/?(?:$|[?#])' + _VALID_URL = r'https?://(?:www\.)?instagram\.com/(?P<id>[^/]{2,})/?(?:$|[?#])' IE_DESC = 'Instagram user profile' IE_NAME = 'instagram:user' _TEST = { @@ -221,82 +229,79 @@ class InstagramUserIE(InfoExtractor): 'id': 'porsche', 'title': 'porsche', }, - 'playlist_mincount': 2, - 'playlist': [{ - 'info_dict': { - 'id': '614605558512799803_462752227', - 'ext': 'mp4', - 'title': '#Porsche Intelligent Performance.', - 'thumbnail': r're:^https?://.*\.jpg', - 'uploader': 'Porsche', - 'uploader_id': 'porsche', - 'timestamp': 1387486713, - 'upload_date': '20131219', - }, - }], + 'playlist_count': 5, 'params': { 'extract_flat': True, 'skip_download': True, + 'playlistend': 5, } } - def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - uploader_id = mobj.group('username') + def _entries(self, uploader_id): + query = { + '__a': 1, + } - entries = [] - page_count = 0 - media_url = 'http://instagram.com/%s/media' % uploader_id - while True: + def get_count(kind): + return int_or_none(try_get( + node, lambda x: x['%ss' % kind]['count'])) + + for page_num in itertools.count(1): page = self._download_json( - media_url, uploader_id, - note='Downloading page %d ' % (page_count + 1), - ) - page_count += 1 + 'https://instagram.com/%s/' % uploader_id, uploader_id, + note='Downloading page %d' % page_num, + fatal=False, query=query) + if not page: + break + + nodes = try_get(page, lambda x: x['user']['media']['nodes'], list) + if not nodes: + break + + max_id = None - for it in page['items']: - if it.get('type') != 'video': + for node in nodes: + node_id = node.get('id') + if node_id: + max_id = node_id + + if node.get('__typename') != 'GraphVideo' and node.get('is_video') is not True: + continue + video_id = node.get('code') + if not video_id: continue - like_count = int_or_none(it.get('likes', {}).get('count')) - user = it.get('user', {}) - - formats = [{ - 'format_id': k, - 'height': v.get('height'), - 'width': v.get('width'), - 'url': v['url'], - } for k, v in it['videos'].items()] - self._sort_formats(formats) - - thumbnails_el = it.get('images', {}) - thumbnail = thumbnails_el.get('thumbnail', {}).get('url') - - # In some cases caption is null, which corresponds to None - # in python. As a result, it.get('caption', {}) gives None - title = (it.get('caption') or {}).get('text', it['id']) - - entries.append({ - 'id': it['id'], - 'title': limit_length(title, 80), - 'formats': formats, + + info = self.url_result( + 'https://instagram.com/p/%s/' % video_id, + ie=InstagramIE.ie_key(), video_id=video_id) + + description = try_get( + node, [lambda x: x['caption'], lambda x: x['text']['id']], + compat_str) + thumbnail = node.get('thumbnail_src') or node.get('display_src') + timestamp = int_or_none(node.get('date')) + + comment_count = get_count('comment') + like_count = get_count('like') + view_count = int_or_none(node.get('video_views')) + + info.update({ + 'description': description, 'thumbnail': thumbnail, - 'webpage_url': it.get('link'), - 'uploader': user.get('full_name'), - 'uploader_id': user.get('username'), + 'timestamp': timestamp, + 'comment_count': comment_count, 'like_count': like_count, - 'timestamp': int_or_none(it.get('created_time')), + 'view_count': view_count, }) - if not page['items']: + yield info + + if not max_id: break - max_id = page['items'][-1]['id'].split('_')[0] - media_url = ( - 'http://instagram.com/%s/media?max_id=%s' % ( - uploader_id, max_id)) - return { - '_type': 'playlist', - 'entries': entries, - 'id': uploader_id, - 'title': uploader_id, - } + query['max_id'] = max_id + + def _real_extract(self, url): + uploader_id = self._match_id(url) + return self.playlist_result( + self._entries(uploader_id), uploader_id, uploader_id) diff --git a/youtube_dl/extractor/internazionale.py b/youtube_dl/extractor/internazionale.py new file mode 100644 index 0000000..10ba1f6 --- /dev/null +++ b/youtube_dl/extractor/internazionale.py @@ -0,0 +1,64 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import unified_timestamp + + +class InternazionaleIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?internazionale\.it/video/(?:[^/]+/)*(?P<id>[^/?#&]+)' + _TEST = { + 'url': 'https://www.internazionale.it/video/2015/02/19/richard-linklater-racconta-una-scena-di-boyhood', + 'md5': '3e39d32b66882c1218e305acbf8348ca', + 'info_dict': { + 'id': '265968', + 'display_id': 'richard-linklater-racconta-una-scena-di-boyhood', + 'ext': 'mp4', + 'title': 'Richard Linklater racconta una scena di Boyhood', + 'description': 'md5:efb7e5bbfb1a54ae2ed5a4a015f0e665', + 'timestamp': 1424354635, + 'upload_date': '20150219', + 'thumbnail': r're:^https?://.*\.jpg$', + }, + 'params': { + 'format': 'bestvideo', + }, + } + + def _real_extract(self, url): + display_id = self._match_id(url) + + webpage = self._download_webpage(url, display_id) + + DATA_RE = r'data-%s=(["\'])(?P<value>(?:(?!\1).)+)\1' + + title = self._search_regex( + DATA_RE % 'video-title', webpage, 'title', default=None, + group='value') or self._og_search_title(webpage) + + video_id = self._search_regex( + DATA_RE % 'job-id', webpage, 'video id', group='value') + video_path = self._search_regex( + DATA_RE % 'video-path', webpage, 'video path', group='value') + + video_base = 'https://video.internazionale.it/%s/%s.' % (video_path, video_id) + + formats = self._extract_m3u8_formats( + video_base + 'm3u8', display_id, 'mp4', + entry_protocol='m3u8_native', m3u8_id='hls', fatal=False) + formats.extend(self._extract_mpd_formats( + video_base + 'mpd', display_id, mpd_id='dash', fatal=False)) + self._sort_formats(formats) + + timestamp = unified_timestamp(self._html_search_meta( + 'article:published_time', webpage, 'timestamp')) + + return { + 'id': video_id, + 'display_id': display_id, + 'title': title, + 'thumbnail': self._og_search_thumbnail(webpage), + 'description': self._og_search_description(webpage), + 'timestamp': timestamp, + 'formats': formats, + } diff --git a/youtube_dl/extractor/itv.py b/youtube_dl/extractor/itv.py index 26c48e4..18a7d7f 100644 --- a/youtube_dl/extractor/itv.py +++ b/youtube_dl/extractor/itv.py @@ -4,6 +4,7 @@ from __future__ import unicode_literals import uuid import xml.etree.ElementTree as etree import json +import re from .common import InfoExtractor from ..compat import ( @@ -25,7 +26,7 @@ from ..utils import ( class ITVIE(InfoExtractor): _VALID_URL = r'https?://(?:www\.)?itv\.com/hub/[^/]+/(?P<id>[0-9a-zA-Z]+)' _GEO_COUNTRIES = ['GB'] - _TEST = { + _TESTS = [{ 'url': 'http://www.itv.com/hub/mr-bean-animated-series/2a2936a0053', 'info_dict': { 'id': '2a2936a0053', @@ -36,7 +37,11 @@ class ITVIE(InfoExtractor): # rtmp download 'skip_download': True, }, - } + }, { + # unavailable via data-playlist-url + 'url': 'https://www.itv.com/hub/through-the-keyhole/2a2271a0033', + 'only_matching': True, + }] def _real_extract(self, url): video_id = self._match_id(url) @@ -100,6 +105,18 @@ class ITVIE(InfoExtractor): 'Content-Type': 'text/xml; charset=utf-8', 'SOAPAction': 'http://tempuri.org/PlaylistService/GetPlaylist', }) + + info = self._search_json_ld(webpage, video_id, default={}) + formats = [] + subtitles = {} + + def extract_subtitle(sub_url): + ext = determine_ext(sub_url, 'ttml') + subtitles.setdefault('en', []).append({ + 'url': sub_url, + 'ext': 'ttml' if ext == 'xml' else ext, + }) + resp_env = self._download_xml( params['data-playlist-url'], video_id, headers=headers, data=etree.tostring(req_env)) @@ -110,41 +127,59 @@ class ITVIE(InfoExtractor): if fault_code == 'InvalidGeoRegion': self.raise_geo_restricted( msg=fault_string, countries=self._GEO_COUNTRIES) - raise ExtractorError('%s said: %s' % (self.IE_NAME, fault_string)) - title = xpath_text(playlist, 'EpisodeTitle', fatal=True) - video_element = xpath_element(playlist, 'VideoEntries/Video', fatal=True) - media_files = xpath_element(video_element, 'MediaFiles', fatal=True) - rtmp_url = media_files.attrib['base'] + elif fault_code != 'InvalidEntity': + raise ExtractorError( + '%s said: %s' % (self.IE_NAME, fault_string), expected=True) + info.update({ + 'title': self._og_search_title(webpage), + 'episode_title': params.get('data-video-episode'), + 'series': params.get('data-video-title'), + }) + else: + title = xpath_text(playlist, 'EpisodeTitle', default=None) + info.update({ + 'title': title, + 'episode_title': title, + 'episode_number': int_or_none(xpath_text(playlist, 'EpisodeNumber')), + 'series': xpath_text(playlist, 'ProgrammeTitle'), + 'duration': parse_duration(xpath_text(playlist, 'Duration')), + }) + video_element = xpath_element(playlist, 'VideoEntries/Video', fatal=True) + media_files = xpath_element(video_element, 'MediaFiles', fatal=True) + rtmp_url = media_files.attrib['base'] - formats = [] - for media_file in media_files.findall('MediaFile'): - play_path = xpath_text(media_file, 'URL') - if not play_path: - continue - tbr = int_or_none(media_file.get('bitrate'), 1000) - f = { - 'format_id': 'rtmp' + ('-%d' % tbr if tbr else ''), - 'play_path': play_path, - # Providing this swfVfy allows to avoid truncated downloads - 'player_url': 'http://www.itv.com/mercury/Mercury_VideoPlayer.swf', - 'page_url': url, - 'tbr': tbr, - 'ext': 'flv', - } - app = self._search_regex( - 'rtmpe?://[^/]+/(.+)$', rtmp_url, 'app', default=None) - if app: - f.update({ - 'url': rtmp_url.split('?', 1)[0], - 'app': app, - }) - else: - f['url'] = rtmp_url - formats.append(f) - - ios_playlist_url = params.get('data-video-playlist') + for media_file in media_files.findall('MediaFile'): + play_path = xpath_text(media_file, 'URL') + if not play_path: + continue + tbr = int_or_none(media_file.get('bitrate'), 1000) + f = { + 'format_id': 'rtmp' + ('-%d' % tbr if tbr else ''), + 'play_path': play_path, + # Providing this swfVfy allows to avoid truncated downloads + 'player_url': 'http://www.itv.com/mercury/Mercury_VideoPlayer.swf', + 'page_url': url, + 'tbr': tbr, + 'ext': 'flv', + } + app = self._search_regex( + 'rtmpe?://[^/]+/(.+)$', rtmp_url, 'app', default=None) + if app: + f.update({ + 'url': rtmp_url.split('?', 1)[0], + 'app': app, + }) + else: + f['url'] = rtmp_url + formats.append(f) + + for caption_url in video_element.findall('ClosedCaptioningURIs/URL'): + if caption_url.text: + extract_subtitle(caption_url.text) + + ios_playlist_url = params.get('data-video-playlist') or params.get('data-video-id') hmac = params.get('data-video-hmac') - if ios_playlist_url and hmac: + if ios_playlist_url and hmac and re.match(r'https?://', ios_playlist_url): headers = self.geo_verification_headers() headers.update({ 'Accept': 'application/vnd.itv.vod.playlist.v2+json', @@ -159,12 +194,12 @@ class ITVIE(InfoExtractor): 'token': '' }, 'device': { - 'manufacturer': 'Apple', - 'model': 'iPad', + 'manufacturer': 'Safari', + 'model': '5', 'os': { - 'name': 'iPhone OS', - 'version': '9.3', - 'type': 'ios' + 'name': 'Windows NT', + 'version': '6.1', + 'type': 'desktop' } }, 'client': { @@ -173,10 +208,10 @@ class ITVIE(InfoExtractor): }, 'variantAvailability': { 'featureset': { - 'min': ['hls', 'aes'], - 'max': ['hls', 'aes'] + 'min': ['hls', 'aes', 'outband-webvtt'], + 'max': ['hls', 'aes', 'outband-webvtt'] }, - 'platformTag': 'mobile' + 'platformTag': 'dotcom' } }).encode(), headers=headers, fatal=False) if ios_playlist: @@ -197,27 +232,22 @@ class ITVIE(InfoExtractor): formats.append({ 'url': href, }) - self._sort_formats(formats) + subs = video_data.get('Subtitles') + if isinstance(subs, list): + for sub in subs: + if not isinstance(sub, dict): + continue + href = sub.get('Href') + if isinstance(href, compat_str): + extract_subtitle(href) + if not info.get('duration'): + info['duration'] = parse_duration(video_data.get('Duration')) - subtitles = {} - for caption_url in video_element.findall('ClosedCaptioningURIs/URL'): - if not caption_url.text: - continue - ext = determine_ext(caption_url.text, 'ttml') - subtitles.setdefault('en', []).append({ - 'url': caption_url.text, - 'ext': 'ttml' if ext == 'xml' else ext, - }) + self._sort_formats(formats) - info = self._search_json_ld(webpage, video_id, default={}) info.update({ 'id': video_id, - 'title': title, 'formats': formats, 'subtitles': subtitles, - 'episode_title': title, - 'episode_number': int_or_none(xpath_text(playlist, 'EpisodeNumber')), - 'series': xpath_text(playlist, 'ProgrammeTitle'), - 'duartion': parse_duration(xpath_text(playlist, 'Duration')), }) return info diff --git a/youtube_dl/extractor/jwplatform.py b/youtube_dl/extractor/jwplatform.py index 33d55f7..c9bcbb0 100644 --- a/youtube_dl/extractor/jwplatform.py +++ b/youtube_dl/extractor/jwplatform.py @@ -24,7 +24,7 @@ class JWPlatformIE(InfoExtractor): @staticmethod def _extract_url(webpage): mobj = re.search( - r'<script[^>]+?src=["\'](?P<url>(?:https?:)?//content.jwplatform.com/players/[a-zA-Z0-9]{8})', + r'<(?:script|iframe)[^>]+?src=["\'](?P<url>(?:https?:)?//content.jwplatform.com/players/[a-zA-Z0-9]{8})', webpage) if mobj: return mobj.group('url') diff --git a/youtube_dl/extractor/kaltura.py b/youtube_dl/extractor/kaltura.py index bdac2df..562e25f 100644 --- a/youtube_dl/extractor/kaltura.py +++ b/youtube_dl/extractor/kaltura.py @@ -125,9 +125,12 @@ class KalturaIE(InfoExtractor): (?:https?:)?//cdnapi(?:sec)?\.kaltura\.com(?::\d+)?/(?:(?!(?P=q1)).)*\b(?:p|partner_id)/(?P<partner_id>\d+)(?:(?!(?P=q1)).)* (?P=q1).*? (?: - entry_?[Ii]d| - (?P<q2>["'])entry_?[Ii]d(?P=q2) - )\s*:\s* + (?: + entry_?[Ii]d| + (?P<q2>["'])entry_?[Ii]d(?P=q2) + )\s*:\s*| + \[\s*(?P<q2_1>["'])entry_?[Ii]d(?P=q2_1)\s*\]\s*=\s* + ) (?P<q3>["'])(?P<id>(?:(?!(?P=q3)).)+)(?P=q3) ''', webpage) or re.search( diff --git a/youtube_dl/extractor/livestream.py b/youtube_dl/extractor/livestream.py index 317ebbc..c4776bb 100644 --- a/youtube_dl/extractor/livestream.py +++ b/youtube_dl/extractor/livestream.py @@ -114,7 +114,7 @@ class LivestreamIE(InfoExtractor): smil_url = video_data.get('smil_url') if smil_url: - formats.extend(self._extract_smil_formats(smil_url, video_id)) + formats.extend(self._extract_smil_formats(smil_url, video_id, fatal=False)) m3u8_url = video_data.get('m3u8_url') if m3u8_url: diff --git a/youtube_dl/extractor/mailru.py b/youtube_dl/extractor/mailru.py index f7cc3c8..6b7c5e3 100644 --- a/youtube_dl/extractor/mailru.py +++ b/youtube_dl/extractor/mailru.py @@ -13,8 +13,15 @@ from ..utils import ( class MailRuIE(InfoExtractor): IE_NAME = 'mailru' IE_DESC = 'Видео@Mail.Ru' - _VALID_URL = r'https?://(?:(?:www|m)\.)?my\.mail\.ru/(?:video/.*#video=/?(?P<idv1>(?:[^/]+/){3}\d+)|(?:(?P<idv2prefix>(?:[^/]+/){2})video/(?P<idv2suffix>[^/]+/\d+))\.html)' - + _VALID_URL = r'''(?x) + https?:// + (?:(?:www|m)\.)?my\.mail\.ru/ + (?: + video/.*\#video=/?(?P<idv1>(?:[^/]+/){3}\d+)| + (?:(?P<idv2prefix>(?:[^/]+/){2})video/(?P<idv2suffix>[^/]+/\d+))\.html| + (?:video/embed|\+/video/meta)/(?P<metaid>\d+) + ) + ''' _TESTS = [ { 'url': 'http://my.mail.ru/video/top#video=/mail/sonypicturesrus/75/76', @@ -23,7 +30,7 @@ class MailRuIE(InfoExtractor): 'id': '46301138_76', 'ext': 'mp4', 'title': 'Новый Человек-Паук. Высокое напряжение. Восстание Электро', - 'timestamp': 1393232740, + 'timestamp': 1393235077, 'upload_date': '20140224', 'uploader': 'sonypicturesrus', 'uploader_id': 'sonypicturesrus@mail.ru', @@ -40,7 +47,7 @@ class MailRuIE(InfoExtractor): 'title': 'Samsung Galaxy S5 Hammer Smash Fail Battery Explosion', 'timestamp': 1397039888, 'upload_date': '20140409', - 'uploader': 'hitech@corp.mail.ru', + 'uploader': 'hitech', 'uploader_id': 'hitech@corp.mail.ru', 'duration': 245, }, @@ -65,28 +72,42 @@ class MailRuIE(InfoExtractor): { 'url': 'http://m.my.mail.ru/mail/3sktvtr/video/_myvideo/138.html', 'only_matching': True, + }, + { + 'url': 'https://my.mail.ru/video/embed/7949340477499637815', + 'only_matching': True, + }, + { + 'url': 'http://my.mail.ru/+/video/meta/7949340477499637815', + 'only_matching': True, } ] def _real_extract(self, url): mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('idv1') - - if not video_id: - video_id = mobj.group('idv2prefix') + mobj.group('idv2suffix') - - webpage = self._download_webpage(url, video_id) + meta_id = mobj.group('metaid') + + video_id = None + if meta_id: + meta_url = 'https://my.mail.ru/+/video/meta/%s' % meta_id + else: + video_id = mobj.group('idv1') + if not video_id: + video_id = mobj.group('idv2prefix') + mobj.group('idv2suffix') + webpage = self._download_webpage(url, video_id) + page_config = self._parse_json(self._search_regex( + r'(?s)<script[^>]+class="sp-video__page-config"[^>]*>(.+?)</script>', + webpage, 'page config', default='{}'), video_id, fatal=False) + if page_config: + meta_url = page_config.get('metaUrl') or page_config.get('video', {}).get('metaUrl') + else: + meta_url = None video_data = None - - page_config = self._parse_json(self._search_regex( - r'(?s)<script[^>]+class="sp-video__page-config"[^>]*>(.+?)</script>', - webpage, 'page config', default='{}'), video_id, fatal=False) - if page_config: - meta_url = page_config.get('metaUrl') or page_config.get('video', {}).get('metaUrl') - if meta_url: - video_data = self._download_json( - meta_url, video_id, 'Downloading video meta JSON', fatal=False) + if meta_url: + video_data = self._download_json( + meta_url, video_id or meta_id, 'Downloading video meta JSON', + fatal=not video_id) # Fallback old approach if not video_data: diff --git a/youtube_dl/extractor/massengeschmacktv.py b/youtube_dl/extractor/massengeschmacktv.py new file mode 100644 index 0000000..cfcc6b2 --- /dev/null +++ b/youtube_dl/extractor/massengeschmacktv.py @@ -0,0 +1,77 @@ +from __future__ import unicode_literals + +import re + +from .common import InfoExtractor +from ..utils import ( + clean_html, + determine_ext, + int_or_none, + js_to_json, + mimetype2ext, + parse_filesize, +) + + +class MassengeschmackTVIE(InfoExtractor): + IE_NAME = 'massengeschmack.tv' + _VALID_URL = r'https?://(?:www\.)?massengeschmack\.tv/play/(?P<id>[^?&#]+)' + + _TEST = { + 'url': 'https://massengeschmack.tv/play/fktv202', + 'md5': 'a9e054db9c2b5a08f0a0527cc201e8d3', + 'info_dict': { + 'id': 'fktv202', + 'ext': 'mp4', + 'title': 'Fernsehkritik-TV - Folge 202', + }, + } + + def _real_extract(self, url): + episode = self._match_id(url) + + webpage = self._download_webpage(url, episode) + title = clean_html(self._html_search_regex( + '<h3>([^<]+)</h3>', webpage, 'title')) + thumbnail = self._search_regex(r'POSTER\s*=\s*"([^"]+)', webpage, 'thumbnail', fatal=False) + sources = self._parse_json(self._search_regex(r'(?s)MEDIA\s*=\s*(\[.+?\]);', webpage, 'media'), episode, js_to_json) + + formats = [] + for source in sources: + furl = source.get('src') + if not furl: + continue + furl = self._proto_relative_url(furl) + ext = determine_ext(furl) or mimetype2ext(source.get('type')) + if ext == 'm3u8': + formats.extend(self._extract_m3u8_formats( + furl, episode, 'mp4', 'm3u8_native', + m3u8_id='hls', fatal=False)) + else: + formats.append({ + 'url': furl, + 'format_id': determine_ext(furl), + }) + + for (durl, format_id, width, height, filesize) in re.findall(r'''(?x) + <a[^>]+?href="(?P<url>(?:https:)?//[^"]+)".*? + <strong>(?P<format_id>.+?)</strong>.*? + <small>(?:(?P<width>\d+)x(?P<height>\d+))?\s+?\((?P<filesize>[\d,]+\s*[GM]iB)\)</small> + ''', webpage): + formats.append({ + 'url': durl, + 'format_id': format_id, + 'width': int_or_none(width), + 'height': int_or_none(height), + 'filesize': parse_filesize(filesize), + 'vcodec': 'none' if format_id.startswith('Audio') else None, + }) + + self._sort_formats(formats, ('width', 'height', 'filesize', 'tbr')) + + return { + 'id': episode, + 'title': title, + 'formats': formats, + 'thumbnail': thumbnail, + } diff --git a/youtube_dl/extractor/mediasite.py b/youtube_dl/extractor/mediasite.py new file mode 100644 index 0000000..0e2645c --- /dev/null +++ b/youtube_dl/extractor/mediasite.py @@ -0,0 +1,214 @@ +# coding: utf-8 +from __future__ import unicode_literals + +import re +import json + +from .common import InfoExtractor +from ..compat import ( + compat_str, + compat_urlparse, +) +from ..utils import ( + ExtractorError, + float_or_none, + mimetype2ext, + unescapeHTML, + unsmuggle_url, + urljoin, +) + + +class MediasiteIE(InfoExtractor): + _VALID_URL = r'(?xi)https?://[^/]+/Mediasite/Play/(?P<id>[0-9a-f]{32,34})(?P<query>\?[^#]+|)' + _TESTS = [ + { + 'url': 'https://hitsmediaweb.h-its.org/mediasite/Play/2db6c271681e4f199af3c60d1f82869b1d', + 'info_dict': { + 'id': '2db6c271681e4f199af3c60d1f82869b1d', + 'ext': 'mp4', + 'title': 'Lecture: Tuesday, September 20, 2016 - Sir Andrew Wiles', + 'description': 'Sir Andrew Wiles: “Equations in arithmetic”\\n\\nI will describe some of the interactions between modern number theory and the problem of solving equations in rational numbers or integers\\u0027.', + 'timestamp': 1474268400.0, + 'upload_date': '20160919', + }, + }, + { + 'url': 'http://mediasite.uib.no/Mediasite/Play/90bb363295d945d6b548c867d01181361d?catalog=a452b7df-9ae1-46b7-a3ba-aceeb285f3eb', + 'info_dict': { + 'id': '90bb363295d945d6b548c867d01181361d', + 'ext': 'mp4', + 'upload_date': '20150429', + 'title': '5) IT-forum 2015-Dag 1 - Dungbeetle - How and why Rain created a tiny bug tracker for Unity', + 'timestamp': 1430311380.0, + }, + }, + { + 'url': 'https://collegerama.tudelft.nl/Mediasite/Play/585a43626e544bdd97aeb71a0ec907a01d', + 'md5': '481fda1c11f67588c0d9d8fbdced4e39', + 'info_dict': { + 'id': '585a43626e544bdd97aeb71a0ec907a01d', + 'ext': 'mp4', + 'title': 'Een nieuwe wereld: waarden, bewustzijn en techniek van de mensheid 2.0.', + 'description': '', + 'thumbnail': r're:^https?://.*\.jpg(?:\?.*)?$', + 'duration': 7713.088, + 'timestamp': 1413309600, + 'upload_date': '20141014', + }, + }, + { + 'url': 'https://collegerama.tudelft.nl/Mediasite/Play/86a9ea9f53e149079fbdb4202b521ed21d?catalog=fd32fd35-6c99-466c-89d4-cd3c431bc8a4', + 'md5': 'ef1fdded95bdf19b12c5999949419c92', + 'info_dict': { + 'id': '86a9ea9f53e149079fbdb4202b521ed21d', + 'ext': 'wmv', + 'title': '64ste Vakantiecursus: Afvalwater', + 'description': 'md5:7fd774865cc69d972f542b157c328305', + 'thumbnail': r're:^https?://.*\.jpg(?:\?.*?)?$', + 'duration': 10853, + 'timestamp': 1326446400, + 'upload_date': '20120113', + }, + }, + { + 'url': 'http://digitalops.sandia.gov/Mediasite/Play/24aace4429fc450fb5b38cdbf424a66e1d', + 'md5': '9422edc9b9a60151727e4b6d8bef393d', + 'info_dict': { + 'id': '24aace4429fc450fb5b38cdbf424a66e1d', + 'ext': 'mp4', + 'title': 'Xyce Software Training - Section 1', + 'description': r're:(?s)SAND Number: SAND 2013-7800.{200,}', + 'upload_date': '20120409', + 'timestamp': 1333983600, + 'duration': 7794, + } + } + ] + + # look in Mediasite.Core.js (Mediasite.ContentStreamType[*]) + _STREAM_TYPES = { + 0: 'video1', # the main video + 2: 'slide', + 3: 'presentation', + 4: 'video2', # screencast? + 5: 'video3', + } + + @staticmethod + def _extract_urls(webpage): + return [ + unescapeHTML(mobj.group('url')) + for mobj in re.finditer( + r'(?xi)<iframe\b[^>]+\bsrc=(["\'])(?P<url>(?:(?:https?:)?//[^/]+)?/Mediasite/Play/[0-9a-f]{32,34}(?:\?.*?)?)\1', + webpage)] + + def _real_extract(self, url): + url, data = unsmuggle_url(url, {}) + mobj = re.match(self._VALID_URL, url) + resource_id = mobj.group('id') + query = mobj.group('query') + + webpage, urlh = self._download_webpage_handle(url, resource_id) # XXX: add UrlReferrer? + redirect_url = compat_str(urlh.geturl()) + + # XXX: might have also extracted UrlReferrer and QueryString from the html + service_path = compat_urlparse.urljoin(redirect_url, self._html_search_regex( + r'<div[^>]+\bid=["\']ServicePath[^>]+>(.+?)</div>', webpage, resource_id, + default='/Mediasite/PlayerService/PlayerService.svc/json')) + + player_options = self._download_json( + '%s/GetPlayerOptions' % service_path, resource_id, + headers={ + 'Content-type': 'application/json; charset=utf-8', + 'X-Requested-With': 'XMLHttpRequest', + }, + data=json.dumps({ + 'getPlayerOptionsRequest': { + 'ResourceId': resource_id, + 'QueryString': query, + 'UrlReferrer': data.get('UrlReferrer', ''), + 'UseScreenReader': False, + } + }).encode('utf-8'))['d'] + + presentation = player_options['Presentation'] + title = presentation['Title'] + + if presentation is None: + raise ExtractorError( + 'Mediasite says: %s' % player_options['PlayerPresentationStatusMessage'], + expected=True) + + thumbnails = [] + formats = [] + for snum, Stream in enumerate(presentation['Streams']): + stream_type = Stream.get('StreamType') + if stream_type is None: + continue + + video_urls = Stream.get('VideoUrls') + if not isinstance(video_urls, list): + video_urls = [] + + stream_id = self._STREAM_TYPES.get( + stream_type, 'type%u' % stream_type) + + stream_formats = [] + for unum, VideoUrl in enumerate(video_urls): + video_url = VideoUrl.get('Location') + if not video_url or not isinstance(video_url, compat_str): + continue + # XXX: if Stream.get('CanChangeScheme', False), switch scheme to HTTP/HTTPS + + media_type = VideoUrl.get('MediaType') + if media_type == 'SS': + stream_formats.extend(self._extract_ism_formats( + video_url, resource_id, + ism_id='%s-%u.%u' % (stream_id, snum, unum), + fatal=False)) + elif media_type == 'Dash': + stream_formats.extend(self._extract_mpd_formats( + video_url, resource_id, + mpd_id='%s-%u.%u' % (stream_id, snum, unum), + fatal=False)) + else: + stream_formats.append({ + 'format_id': '%s-%u.%u' % (stream_id, snum, unum), + 'url': video_url, + 'ext': mimetype2ext(VideoUrl.get('MimeType')), + }) + + # TODO: if Stream['HasSlideContent']: + # synthesise an MJPEG video stream '%s-%u.slides' % (stream_type, snum) + # from Stream['Slides'] + # this will require writing a custom downloader... + + # disprefer 'secondary' streams + if stream_type != 0: + for fmt in stream_formats: + fmt['preference'] = -1 + + thumbnail_url = Stream.get('ThumbnailUrl') + if thumbnail_url: + thumbnails.append({ + 'id': '%s-%u' % (stream_id, snum), + 'url': urljoin(redirect_url, thumbnail_url), + 'preference': -1 if stream_type != 0 else 0, + }) + formats.extend(stream_formats) + + self._sort_formats(formats) + + # XXX: Presentation['Presenters'] + # XXX: Presentation['Transcript'] + + return { + 'id': resource_id, + 'title': title, + 'description': presentation.get('Description'), + 'duration': float_or_none(presentation.get('Duration'), 1000), + 'timestamp': float_or_none(presentation.get('UnixTime'), 1000), + 'formats': formats, + 'thumbnails': thumbnails, + } diff --git a/youtube_dl/extractor/mnet.py b/youtube_dl/extractor/mnet.py index 6a85dcb..0e26ca1 100644 --- a/youtube_dl/extractor/mnet.py +++ b/youtube_dl/extractor/mnet.py @@ -40,21 +40,29 @@ class MnetIE(InfoExtractor): def _real_extract(self, url): video_id = self._match_id(url) + # TODO: extract rtmp formats + # no stype -> rtmp url + # stype=H -> m3u8 url + # stype=M -> mpd url info = self._download_json( - 'http://content.api.mnet.com/player/vodConfig?id=%s&ctype=CLIP' % video_id, - video_id, 'Downloading vod config JSON')['data']['info'] + 'http://content.api.mnet.com/player/vodConfig', + video_id, 'Downloading vod config JSON', query={ + 'id': video_id, + 'ctype': 'CLIP', + 'stype': 'H', + })['data']['info'] title = info['title'] - rtmp_info = self._download_json( - info['cdn'], video_id, 'Downloading vod cdn JSON') - - formats = [{ - 'url': rtmp_info['serverurl'] + rtmp_info['fileurl'], - 'ext': 'flv', - 'page_url': url, - 'player_url': 'http://flvfile.mnet.com/service/player/201602/cjem_player_tv.swf?v=201602191318', - }] + cdn_data = self._download_json( + info['cdn'], video_id, 'Downloading vod cdn JSON')['data'][0] + m3u8_url = cdn_data['url'] + token = cdn_data.get('token') + if token and token != '-': + m3u8_url += '?' + token + formats = self._extract_wowza_formats( + m3u8_url, video_id, skip_protocols=['rtmp', 'rtsp', 'f4m']) + self._sort_formats(formats) description = info.get('ment') duration = parse_duration(info.get('time')) diff --git a/youtube_dl/extractor/mtv.py b/youtube_dl/extractor/mtv.py index 1154a35..7a3b57a 100644 --- a/youtube_dl/extractor/mtv.py +++ b/youtube_dl/extractor/mtv.py @@ -115,10 +115,17 @@ class MTVServicesInfoExtractor(InfoExtractor): if transcript.get('kind') != 'captions': continue lang = transcript.get('srclang') - subtitles[lang] = [{ - 'url': compat_str(typographic.get('src')), - 'ext': typographic.get('format') - } for typographic in transcript.findall('./typographic')] + for typographic in transcript.findall('./typographic'): + sub_src = typographic.get('src') + if not sub_src: + continue + ext = typographic.get('format') + if ext == 'cea-608': + ext = 'scc' + subtitles.setdefault(lang, []).append({ + 'url': compat_str(sub_src), + 'ext': ext + }) return subtitles def _get_video_info(self, itemdoc, use_hls=True): diff --git a/youtube_dl/extractor/nexx.py b/youtube_dl/extractor/nexx.py index 071879b..9203c04 100644 --- a/youtube_dl/extractor/nexx.py +++ b/youtube_dl/extractor/nexx.py @@ -28,7 +28,7 @@ class NexxIE(InfoExtractor): _TESTS = [{ # movie 'url': 'https://api.nexx.cloud/v3/748/videos/byid/128907', - 'md5': '16746bfc28c42049492385c989b26c4a', + 'md5': '828cea195be04e66057b846288295ba1', 'info_dict': { 'id': '128907', 'ext': 'mp4', @@ -42,9 +42,6 @@ class NexxIE(InfoExtractor): 'timestamp': 1384264416, 'upload_date': '20131112', }, - 'params': { - 'format': 'bestvideo', - }, }, { # episode 'url': 'https://api.nexx.cloud/v3/741/videos/byid/247858', @@ -62,7 +59,6 @@ class NexxIE(InfoExtractor): 'season_number': 2, }, 'params': { - 'format': 'bestvideo', 'skip_download': True, }, }, { @@ -193,35 +189,67 @@ class NexxIE(InfoExtractor): stream_data = video['streamdata'] language = general.get('language_raw') or '' - # TODO: reverse more cdns and formats + # TODO: reverse more cdns cdn = stream_data['cdnType'] assert cdn == 'azure' azure_locator = stream_data['azureLocator'] - AZURE_URL = 'http://nx-p%02d.akamaized.net/' + AZURE_URL = 'http://nx%s%02d.akamaized.net/' - for secure in ('s', ''): - cdn_shield = stream_data.get('cdnShieldHTTP%s' % secure.upper()) - if cdn_shield: - azure_base = 'http%s://%s' % (secure, cdn_shield) - break - else: - azure_base = AZURE_URL % int(stream_data['azureAccount'].replace('nexxplayplus', '')) + def get_cdn_shield_base(shield_type='', prefix='-p'): + for secure in ('', 's'): + cdn_shield = stream_data.get('cdnShield%sHTTP%s' % (shield_type, secure.upper())) + if cdn_shield: + return 'http%s://%s' % (secure, cdn_shield) + else: + return AZURE_URL % (prefix, int(stream_data['azureAccount'].replace('nexxplayplus', ''))) + azure_stream_base = get_cdn_shield_base() is_ml = ',' in language - azure_m3u8_url = '%s%s/%s_src%s.ism/Manifest(format=m3u8-aapl)' % ( - azure_base, azure_locator, video_id, ('_manifest' if is_ml else '')) + azure_manifest_url = '%s%s/%s_src%s.ism/Manifest' % ( + azure_stream_base, azure_locator, video_id, ('_manifest' if is_ml else '')) + '%s' protection_token = try_get( video, lambda x: x['protectiondata']['token'], compat_str) if protection_token: - azure_m3u8_url += '?hdnts=%s' % protection_token + azure_manifest_url += '?hdnts=%s' % protection_token formats = self._extract_m3u8_formats( - azure_m3u8_url, video_id, 'mp4', entry_protocol='m3u8_native', - m3u8_id='%s-hls' % cdn) + azure_manifest_url % '(format=m3u8-aapl)', + video_id, 'mp4', 'm3u8_native', + m3u8_id='%s-hls' % cdn, fatal=False) + formats.extend(self._extract_mpd_formats( + azure_manifest_url % '(format=mpd-time-csf)', + video_id, mpd_id='%s-dash' % cdn, fatal=False)) + formats.extend(self._extract_ism_formats( + azure_manifest_url % '', video_id, ism_id='%s-mss' % cdn, fatal=False)) + + azure_progressive_base = get_cdn_shield_base('Prog', '-d') + azure_file_distribution = stream_data.get('azureFileDistribution') + if azure_file_distribution: + fds = azure_file_distribution.split(',') + if fds: + for fd in fds: + ss = fd.split(':') + if len(ss) == 2: + tbr = int_or_none(ss[0]) + if tbr: + f = { + 'url': '%s%s/%s_src_%s_%d.mp4' % ( + azure_progressive_base, azure_locator, video_id, ss[1], tbr), + 'format_id': '%s-http-%d' % (cdn, tbr), + 'tbr': tbr, + } + width_height = ss[1].split('x') + if len(width_height) == 2: + f.update({ + 'width': int_or_none(width_height[0]), + 'height': int_or_none(width_height[1]), + }) + formats.append(f) + self._sort_formats(formats) return { diff --git a/youtube_dl/extractor/nick.py b/youtube_dl/extractor/nick.py index 310eea2..7edd684 100644 --- a/youtube_dl/extractor/nick.py +++ b/youtube_dl/extractor/nick.py @@ -10,7 +10,7 @@ from ..utils import update_url_query class NickIE(MTVServicesInfoExtractor): # None of videos on the website are still alive? IE_NAME = 'nick.com' - _VALID_URL = r'https?://(?:(?:www|beta)\.)?nick(?:jr)?\.com/(?:[^/]+/)?(?:videos/clip|[^/]+/videos)/(?P<id>[^/?#.]+)' + _VALID_URL = r'https?://(?P<domain>(?:(?:www|beta)\.)?nick(?:jr)?\.com)/(?:[^/]+/)?(?:videos/clip|[^/]+/videos)/(?P<id>[^/?#.]+)' _FEED_URL = 'http://udat.mtvnservices.com/service1/dispatch.htm' _GEO_COUNTRIES = ['US'] _TESTS = [{ @@ -69,8 +69,59 @@ class NickIE(MTVServicesInfoExtractor): 'mgid': uri, } - def _extract_mgid(self, webpage): - return self._search_regex(r'data-contenturi="([^"]+)', webpage, 'mgid') + def _real_extract(self, url): + domain, display_id = re.match(self._VALID_URL, url).groups() + video_data = self._download_json( + 'http://%s/data/video.endLevel.json' % domain, + display_id, query={ + 'urlKey': display_id, + }) + return self._get_videos_info(video_data['player'] + video_data['id']) + + +class NickBrIE(MTVServicesInfoExtractor): + IE_NAME = 'nickelodeon:br' + _VALID_URL = r'https?://(?P<domain>(?:www\.)?nickjr|mundonick\.uol)\.com\.br/(?:programas/)?[^/]+/videos/(?:episodios/)?(?P<id>[^/?#.]+)' + _TESTS = [{ + 'url': 'http://www.nickjr.com.br/patrulha-canina/videos/210-labirinto-de-pipoca/', + 'only_matching': True, + }, { + 'url': 'http://mundonick.uol.com.br/programas/the-loud-house/videos/muitas-irmas/7ljo9j', + 'only_matching': True, + }] + + def _real_extract(self, url): + domain, display_id = re.match(self._VALID_URL, url).groups() + webpage = self._download_webpage(url, display_id) + uri = self._search_regex( + r'data-(?:contenturi|mgid)="([^"]+)', webpage, 'mgid') + video_id = self._id_from_uri(uri) + config = self._download_json( + 'http://media.mtvnservices.com/pmt/e1/access/index.html', + video_id, query={ + 'uri': uri, + 'configtype': 'edge', + }, headers={ + 'Referer': url, + }) + info_url = self._remove_template_parameter(config['feedWithQueryParams']) + if info_url == 'None': + if domain.startswith('www.'): + domain = domain[4:] + content_domain = { + 'mundonick.uol': 'mundonick.com.br', + 'nickjr': 'br.nickelodeonjunior.tv', + }[domain] + query = { + 'mgid': uri, + 'imageEp': content_domain, + 'arcEp': content_domain, + } + if domain == 'nickjr.com.br': + query['ep'] = 'c4b16088' + info_url = update_url_query( + 'http://feeds.mtvnservices.com/od/feed/intl-mrss-player-feed', query) + return self._get_videos_info_from_url(info_url, video_id) class NickDeIE(MTVServicesInfoExtractor): diff --git a/youtube_dl/extractor/noco.py b/youtube_dl/extractor/noco.py index 8b83e1f..a9f9b10 100644 --- a/youtube_dl/extractor/noco.py +++ b/youtube_dl/extractor/noco.py @@ -70,7 +70,7 @@ class NocoIE(InfoExtractor): return login = self._download_json( - self._LOGIN_URL, None, 'Logging in as %s' % username, + self._LOGIN_URL, None, 'Logging in', data=urlencode_postdata({ 'a': 'login', 'cookie': '1', diff --git a/youtube_dl/extractor/nowtv.py b/youtube_dl/extractor/nowtv.py deleted file mode 100644 index e43b371..0000000 --- a/youtube_dl/extractor/nowtv.py +++ /dev/null @@ -1,261 +0,0 @@ -# coding: utf-8 -from __future__ import unicode_literals - -import re - -from .common import InfoExtractor -from ..compat import compat_str -from ..utils import ( - ExtractorError, - determine_ext, - int_or_none, - parse_iso8601, - parse_duration, - remove_start, -) - - -class NowTVBaseIE(InfoExtractor): - _VIDEO_FIELDS = ( - 'id', 'title', 'free', 'geoblocked', 'articleLong', 'articleShort', - 'broadcastStartDate', 'seoUrl', 'duration', 'files', - 'format.defaultImage169Format', 'format.defaultImage169Logo') - - def _extract_video(self, info, display_id=None): - video_id = compat_str(info['id']) - - files = info['files'] - if not files: - if info.get('geoblocked', False): - raise ExtractorError( - 'Video %s is not available from your location due to geo restriction' % video_id, - expected=True) - if not info.get('free', True): - raise ExtractorError( - 'Video %s is not available for free' % video_id, expected=True) - - formats = [] - for item in files['items']: - if determine_ext(item['path']) != 'f4v': - continue - app, play_path = remove_start(item['path'], '/').split('/', 1) - formats.append({ - 'url': 'rtmpe://fms.rtl.de', - 'app': app, - 'play_path': 'mp4:%s' % play_path, - 'ext': 'flv', - 'page_url': 'http://rtlnow.rtl.de', - 'player_url': 'http://cdn.static-fra.de/now/vodplayer.swf', - 'tbr': int_or_none(item.get('bitrate')), - }) - self._sort_formats(formats) - - title = info['title'] - description = info.get('articleLong') or info.get('articleShort') - timestamp = parse_iso8601(info.get('broadcastStartDate'), ' ') - duration = parse_duration(info.get('duration')) - - f = info.get('format', {}) - thumbnail = f.get('defaultImage169Format') or f.get('defaultImage169Logo') - - return { - 'id': video_id, - 'display_id': display_id or info.get('seoUrl'), - 'title': title, - 'description': description, - 'thumbnail': thumbnail, - 'timestamp': timestamp, - 'duration': duration, - 'formats': formats, - } - - -class NowTVIE(NowTVBaseIE): - _WORKING = False - _VALID_URL = r'https?://(?:www\.)?nowtv\.(?:de|at|ch)/(?:rtl|rtl2|rtlnitro|superrtl|ntv|vox)/(?P<show_id>[^/]+)/(?:(?:list/[^/]+|jahr/\d{4}/\d{1,2})/)?(?P<id>[^/]+)/(?:player|preview)' - - _TESTS = [{ - # rtl - 'url': 'http://www.nowtv.de/rtl/bauer-sucht-frau/die-neuen-bauern-und-eine-hochzeit/player', - 'info_dict': { - 'id': '203519', - 'display_id': 'bauer-sucht-frau/die-neuen-bauern-und-eine-hochzeit', - 'ext': 'flv', - 'title': 'Inka Bause stellt die neuen Bauern vor', - 'description': 'md5:e234e1ed6d63cf06be5c070442612e7e', - 'thumbnail': r're:^https?://.*\.jpg$', - 'timestamp': 1432580700, - 'upload_date': '20150525', - 'duration': 2786, - }, - 'params': { - # rtmp download - 'skip_download': True, - }, - }, { - # rtl2 - 'url': 'http://www.nowtv.de/rtl2/berlin-tag-nacht/berlin-tag-nacht-folge-934/player', - 'info_dict': { - 'id': '203481', - 'display_id': 'berlin-tag-nacht/berlin-tag-nacht-folge-934', - 'ext': 'flv', - 'title': 'Berlin - Tag & Nacht (Folge 934)', - 'description': 'md5:c85e88c2e36c552dfe63433bc9506dd0', - 'thumbnail': r're:^https?://.*\.jpg$', - 'timestamp': 1432666800, - 'upload_date': '20150526', - 'duration': 2641, - }, - 'params': { - # rtmp download - 'skip_download': True, - }, - }, { - # rtlnitro - 'url': 'http://www.nowtv.de/rtlnitro/alarm-fuer-cobra-11-die-autobahnpolizei/hals-und-beinbruch-2014-08-23-21-10-00/player', - 'info_dict': { - 'id': '165780', - 'display_id': 'alarm-fuer-cobra-11-die-autobahnpolizei/hals-und-beinbruch-2014-08-23-21-10-00', - 'ext': 'flv', - 'title': 'Hals- und Beinbruch', - 'description': 'md5:b50d248efffe244e6f56737f0911ca57', - 'thumbnail': r're:^https?://.*\.jpg$', - 'timestamp': 1432415400, - 'upload_date': '20150523', - 'duration': 2742, - }, - 'params': { - # rtmp download - 'skip_download': True, - }, - }, { - # superrtl - 'url': 'http://www.nowtv.de/superrtl/medicopter-117/angst/player', - 'info_dict': { - 'id': '99205', - 'display_id': 'medicopter-117/angst', - 'ext': 'flv', - 'title': 'Angst!', - 'description': 'md5:30cbc4c0b73ec98bcd73c9f2a8c17c4e', - 'thumbnail': r're:^https?://.*\.jpg$', - 'timestamp': 1222632900, - 'upload_date': '20080928', - 'duration': 3025, - }, - 'params': { - # rtmp download - 'skip_download': True, - }, - }, { - # ntv - 'url': 'http://www.nowtv.de/ntv/ratgeber-geld/thema-ua-der-erste-blick-die-apple-watch/player', - 'info_dict': { - 'id': '203521', - 'display_id': 'ratgeber-geld/thema-ua-der-erste-blick-die-apple-watch', - 'ext': 'flv', - 'title': 'Thema u.a.: Der erste Blick: Die Apple Watch', - 'description': 'md5:4312b6c9d839ffe7d8caf03865a531af', - 'thumbnail': r're:^https?://.*\.jpg$', - 'timestamp': 1432751700, - 'upload_date': '20150527', - 'duration': 1083, - }, - 'params': { - # rtmp download - 'skip_download': True, - }, - }, { - # vox - 'url': 'http://www.nowtv.de/vox/der-hundeprofi/buero-fall-chihuahua-joel/player', - 'info_dict': { - 'id': '128953', - 'display_id': 'der-hundeprofi/buero-fall-chihuahua-joel', - 'ext': 'flv', - 'title': "Büro-Fall / Chihuahua 'Joel'", - 'description': 'md5:e62cb6bf7c3cc669179d4f1eb279ad8d', - 'thumbnail': r're:^https?://.*\.jpg$', - 'timestamp': 1432408200, - 'upload_date': '20150523', - 'duration': 3092, - }, - 'params': { - # rtmp download - 'skip_download': True, - }, - }, { - 'url': 'http://www.nowtv.de/rtl/bauer-sucht-frau/die-neuen-bauern-und-eine-hochzeit/preview', - 'only_matching': True, - }, { - 'url': 'http://www.nowtv.at/rtl/bauer-sucht-frau/die-neuen-bauern-und-eine-hochzeit/preview?return=/rtl/bauer-sucht-frau/die-neuen-bauern-und-eine-hochzeit', - 'only_matching': True, - }, { - 'url': 'http://www.nowtv.de/rtl2/echtzeit/list/aktuell/schnelles-geld-am-ende-der-welt/player', - 'only_matching': True, - }, { - 'url': 'http://www.nowtv.de/rtl2/zuhause-im-glueck/jahr/2015/11/eine-erschuetternde-diagnose/player', - 'only_matching': True, - }] - - def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - display_id = '%s/%s' % (mobj.group('show_id'), mobj.group('id')) - - info = self._download_json( - 'https://api.nowtv.de/v3/movies/%s?fields=%s' - % (display_id, ','.join(self._VIDEO_FIELDS)), display_id) - - return self._extract_video(info, display_id) - - -class NowTVListIE(NowTVBaseIE): - _VALID_URL = r'https?://(?:www\.)?nowtv\.(?:de|at|ch)/(?:rtl|rtl2|rtlnitro|superrtl|ntv|vox)/(?P<show_id>[^/]+)/list/(?P<id>[^?/#&]+)$' - - _SHOW_FIELDS = ('title', ) - _SEASON_FIELDS = ('id', 'headline', 'seoheadline', ) - - _TESTS = [{ - 'url': 'http://www.nowtv.at/rtl/stern-tv/list/aktuell', - 'info_dict': { - 'id': '17006', - 'title': 'stern TV - Aktuell', - }, - 'playlist_count': 1, - }, { - 'url': 'http://www.nowtv.at/rtl/das-supertalent/list/free-staffel-8', - 'info_dict': { - 'id': '20716', - 'title': 'Das Supertalent - FREE Staffel 8', - }, - 'playlist_count': 14, - }] - - def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - show_id = mobj.group('show_id') - season_id = mobj.group('id') - - fields = [] - fields.extend(self._SHOW_FIELDS) - fields.extend('formatTabs.%s' % field for field in self._SEASON_FIELDS) - fields.extend( - 'formatTabs.formatTabPages.container.movies.%s' % field - for field in self._VIDEO_FIELDS) - - list_info = self._download_json( - 'https://api.nowtv.de/v3/formats/seo?fields=%s&name=%s.php' - % (','.join(fields), show_id), - season_id) - - season = next( - season for season in list_info['formatTabs']['items'] - if season.get('seoheadline') == season_id) - - title = '%s - %s' % (list_info['title'], season['headline']) - - entries = [] - for container in season['formatTabPages']['items']: - for info in ((container.get('container') or {}).get('movies') or {}).get('items') or []: - entries.append(self._extract_video(info)) - - return self.playlist_result( - entries, compat_str(season.get('id') or season_id), title) diff --git a/youtube_dl/extractor/odnoklassniki.py b/youtube_dl/extractor/odnoklassniki.py index 854b680..8e13bcf 100644 --- a/youtube_dl/extractor/odnoklassniki.py +++ b/youtube_dl/extractor/odnoklassniki.py @@ -14,6 +14,7 @@ from ..utils import ( int_or_none, qualities, unescapeHTML, + urlencode_postdata, ) @@ -56,7 +57,7 @@ class OdnoklassnikiIE(InfoExtractor): 'url': 'http://ok.ru/video/64211978996595-1', 'md5': '2f206894ffb5dbfcce2c5a14b909eea5', 'info_dict': { - 'id': '64211978996595-1', + 'id': 'V_VztHT5BzY', 'ext': 'mp4', 'title': 'Космическая среда от 26 августа 2015', 'description': 'md5:848eb8b85e5e3471a3a803dae1343ed0', @@ -127,9 +128,14 @@ class OdnoklassnikiIE(InfoExtractor): if metadata: metadata = self._parse_json(metadata, video_id) else: + data = {} + st_location = flashvars.get('location') + if st_location: + data['st.location'] = st_location metadata = self._download_json( compat_urllib_parse_unquote(flashvars['metadataUrl']), - video_id, 'Downloading metadata JSON') + video_id, 'Downloading metadata JSON', + data=urlencode_postdata(data)) movie = metadata['movie'] diff --git a/youtube_dl/extractor/once.py b/youtube_dl/extractor/once.py index a637c8e..8ae5fad 100644 --- a/youtube_dl/extractor/once.py +++ b/youtube_dl/extractor/once.py @@ -11,7 +11,7 @@ class OnceIE(InfoExtractor): ADAPTIVE_URL_TEMPLATE = 'http://once.unicornmedia.com/now/master/playlist/%s/%s/%s/content.m3u8' PROGRESSIVE_URL_TEMPLATE = 'http://once.unicornmedia.com/now/media/progressive/%s/%s/%s/%s/content.mp4' - def _extract_once_formats(self, url): + def _extract_once_formats(self, url, http_formats_preference=None): domain_id, application_id, media_item_id = re.match( OnceIE._VALID_URL, url).groups() formats = self._extract_m3u8_formats( @@ -35,6 +35,7 @@ class OnceIE(InfoExtractor): 'format_id': adaptive_format['format_id'].replace( 'hls', 'http'), 'protocol': 'http', + 'preference': http_formats_preference, }) progressive_formats.append(progressive_format) self._check_formats(progressive_formats, media_item_id) diff --git a/youtube_dl/extractor/openload.py b/youtube_dl/extractor/openload.py index b50d6c7..b282bcf 100644 --- a/youtube_dl/extractor/openload.py +++ b/youtube_dl/extractor/openload.py @@ -112,6 +112,8 @@ class PhantomJSwrapper(object): return get_exe_version('phantomjs', version_re=r'([0-9.]+)') def __init__(self, extractor, required_version=None, timeout=10000): + self._TMP_FILES = {} + self.exe = check_executable('phantomjs', ['-v']) if not self.exe: raise ExtractorError('PhantomJS executable not found in PATH, ' @@ -130,7 +132,6 @@ class PhantomJSwrapper(object): self.options = { 'timeout': timeout, } - self._TMP_FILES = {} for name in self._TMP_FILE_NAMES: tmp = tempfile.NamedTemporaryFile(delete=False) tmp.close() @@ -140,7 +141,7 @@ class PhantomJSwrapper(object): for name in self._TMP_FILE_NAMES: try: os.remove(self._TMP_FILES[name].name) - except: + except (IOError, OSError, KeyError): pass def _save_cookies(self, url): @@ -242,7 +243,7 @@ class PhantomJSwrapper(object): class OpenloadIE(InfoExtractor): - _VALID_URL = r'https?://(?:openload\.(?:co|io)|oload\.tv)/(?:f|embed)/(?P<id>[a-zA-Z0-9-_]+)' + _VALID_URL = r'https?://(?:www\.)?(?:openload\.(?:co|io|link)|oload\.(?:tv|stream))/(?:f|embed)/(?P<id>[a-zA-Z0-9-_]+)' _TESTS = [{ 'url': 'https://openload.co/f/kUEfGclsU9o', @@ -283,9 +284,20 @@ class OpenloadIE(InfoExtractor): # for title and ext 'url': 'https://openload.co/embed/Sxz5sADo82g/', 'only_matching': True, + }, { + # unavailable via https://openload.co/embed/e-Ixz9ZR5L0/ but available + # via https://openload.co/f/e-Ixz9ZR5L0/ + 'url': 'https://openload.co/f/e-Ixz9ZR5L0/', + 'only_matching': True, }, { 'url': 'https://oload.tv/embed/KnG-kKZdcfY/', 'only_matching': True, + }, { + 'url': 'http://www.openload.link/f/KnG-kKZdcfY', + 'only_matching': True, + }, { + 'url': 'https://oload.stream/f/KnG-kKZdcfY', + 'only_matching': True, }] _USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36' @@ -298,20 +310,30 @@ class OpenloadIE(InfoExtractor): def _real_extract(self, url): video_id = self._match_id(url) - url = 'https://openload.co/embed/%s/' % video_id + url_pattern = 'https://openload.co/%%s/%s/' % video_id headers = { 'User-Agent': self._USER_AGENT, } - webpage = self._download_webpage(url, video_id, headers=headers) - - if 'File not found' in webpage or 'deleted by the owner' in webpage: - raise ExtractorError('File not found', expected=True, video_id=video_id) + for path in ('embed', 'f'): + page_url = url_pattern % path + last = path == 'f' + webpage = self._download_webpage( + page_url, video_id, 'Downloading %s webpage' % path, + headers=headers, fatal=last) + if not webpage: + continue + if 'File not found' in webpage or 'deleted by the owner' in webpage: + if not last: + continue + raise ExtractorError('File not found', expected=True, video_id=video_id) + break phantom = PhantomJSwrapper(self, required_version='2.0') - webpage, _ = phantom.get(url, html=webpage, video_id=video_id, headers=headers) + webpage, _ = phantom.get(page_url, html=webpage, video_id=video_id, headers=headers) - decoded_id = get_element_by_id('streamurl', webpage) + decoded_id = (get_element_by_id('streamurl', webpage) or + get_element_by_id('streamuri', webpage)) video_url = 'https://openload.co/stream/%s?mime=true' % decoded_id @@ -320,7 +342,7 @@ class OpenloadIE(InfoExtractor): 'title', default=None) or self._html_search_meta( 'description', webpage, 'title', fatal=True) - entries = self._parse_html5_media_entries(url, webpage, video_id) + entries = self._parse_html5_media_entries(page_url, webpage, video_id) entry = entries[0] if entries else {} subtitles = entry.get('subtitles') diff --git a/youtube_dl/extractor/orf.py b/youtube_dl/extractor/orf.py index 74fe801..c1fb580 100644 --- a/youtube_dl/extractor/orf.py +++ b/youtube_dl/extractor/orf.py @@ -49,13 +49,13 @@ class ORFTVthekIE(InfoExtractor): 'params': { 'skip_download': True, # rtsp downloads }, - '_skip': 'Blocked outside of Austria / Germany', + 'skip': 'Blocked outside of Austria / Germany', }, { 'url': 'http://tvthek.orf.at/topic/Fluechtlingskrise/10463081/Heimat-Fremde-Heimat/13879132/Senioren-betreuen-Migrantenkinder/13879141', - 'skip_download': True, + 'only_matching': True, }, { 'url': 'http://tvthek.orf.at/profile/Universum/35429', - 'skip_download': True, + 'only_matching': True, }] def _real_extract(self, url): diff --git a/youtube_dl/extractor/pandatv.py b/youtube_dl/extractor/pandatv.py index c86d707..13a2e7e 100644 --- a/youtube_dl/extractor/pandatv.py +++ b/youtube_dl/extractor/pandatv.py @@ -33,7 +33,7 @@ class PandaTVIE(InfoExtractor): video_id = self._match_id(url) config = self._download_json( - 'https://www.panda.tv/api_room?roomid=%s' % video_id, video_id) + 'https://www.panda.tv/api_room_v2?roomid=%s' % video_id, video_id) error_code = config.get('errno', 0) if error_code is not 0: @@ -66,6 +66,11 @@ class PandaTVIE(InfoExtractor): plflag1 = '4' live_panda = 'live_panda' if plflag0 < 1 else '' + plflag_auth = self._parse_json(video_info['plflag_list'], video_id) + sign = plflag_auth['auth']['sign'] + ts = plflag_auth['auth']['time'] + rid = plflag_auth['auth']['rid'] + quality_key = qualities(['OD', 'HD', 'SD']) suffix = ['_small', '_mid', ''] formats = [] @@ -77,8 +82,8 @@ class PandaTVIE(InfoExtractor): continue for pref, (ext, pl) in enumerate((('m3u8', '-hls'), ('flv', ''))): formats.append({ - 'url': 'https://pl%s%s.live.panda.tv/live_panda/%s%s%s.%s' - % (pl, plflag1, room_key, live_panda, suffix[quality], ext), + 'url': 'https://pl%s%s.live.panda.tv/live_panda/%s%s%s.%s?sign=%s&ts=%s&rid=%s' + % (pl, plflag1, room_key, live_panda, suffix[quality], ext, sign, ts, rid), 'format_id': '%s-%s' % (k, ext), 'quality': quality, 'source_preference': pref, diff --git a/youtube_dl/extractor/patreon.py b/youtube_dl/extractor/patreon.py index a6a2c27..d4b1d34 100644 --- a/youtube_dl/extractor/patreon.py +++ b/youtube_dl/extractor/patreon.py @@ -67,7 +67,7 @@ class PatreonIE(InfoExtractor): 'https://www.patreon.com/processLogin', compat_urllib_parse_urlencode(login_form).encode('utf-8') ) - login_page = self._download_webpage(request, None, note='Logging in as %s' % username) + login_page = self._download_webpage(request, None, note='Logging in') if re.search(r'onLoginFailed', login_page): raise ExtractorError('Unable to login, incorrect username and/or password', expected=True) diff --git a/youtube_dl/extractor/pbs.py b/youtube_dl/extractor/pbs.py index b51dcbe..f11d5da 100644 --- a/youtube_dl/extractor/pbs.py +++ b/youtube_dl/extractor/pbs.py @@ -421,6 +421,7 @@ class PBSIE(InfoExtractor): r'class="coveplayerid">([^<]+)<', # coveplayer r'<section[^>]+data-coveid="(\d+)"', # coveplayer from http://www.pbs.org/wgbh/frontline/film/real-csi/ r'<input type="hidden" id="pbs_video_id_[0-9]+" value="([0-9]+)"/>', # jwplayer + r"(?s)window\.PBS\.playerConfig\s*=\s*{.*?id\s*:\s*'([0-9]+)',", ] media_id = self._search_regex( diff --git a/youtube_dl/extractor/performgroup.py b/youtube_dl/extractor/performgroup.py new file mode 100644 index 0000000..26942bf --- /dev/null +++ b/youtube_dl/extractor/performgroup.py @@ -0,0 +1,83 @@ +# coding: utf-8 +from __future__ import unicode_literals + +import re + +from .common import InfoExtractor +from ..utils import int_or_none + + +class PerformGroupIE(InfoExtractor): + _VALID_URL = r'https?://player\.performgroup\.com/eplayer(?:/eplayer\.html|\.js)#/?(?P<id>[0-9a-f]{26})\.(?P<auth_token>[0-9a-z]{26})' + _TESTS = [{ + # http://www.faz.net/aktuell/sport/fussball/wm-2018-playoffs-schweiz-besiegt-nordirland-1-0-15286104.html + 'url': 'http://player.performgroup.com/eplayer/eplayer.html#d478c41c5d192f56b9aa859de8.1w4crrej5w14e1ed4s1ce4ykab', + 'md5': '259cb03d142e2e52471e8837ecacb29f', + 'info_dict': { + 'id': 'xgrwobuzumes1lwjxtcdpwgxd', + 'ext': 'mp4', + 'title': 'Liga MX: Keine Einsicht nach Horrorfoul', + 'description': 'md5:7cd3b459c82725b021e046ab10bf1c5b', + 'timestamp': 1511533477, + 'upload_date': '20171124', + } + }] + + def _call_api(self, service, auth_token, content_id, referer_url): + return self._download_json( + 'http://ep3.performfeeds.com/ep%s/%s/%s/' % (service, auth_token, content_id), + content_id, headers={ + 'Referer': referer_url, + 'Origin': 'http://player.performgroup.com', + }, query={ + '_fmt': 'json', + }) + + def _real_extract(self, url): + player_id, auth_token = re.search(self._VALID_URL, url).groups() + bootstrap = self._call_api('bootstrap', auth_token, player_id, url) + video = bootstrap['config']['dataSource']['sourceItems'][0]['videos'][0] + video_id = video['uuid'] + vod = self._call_api('vod', auth_token, video_id, url) + media = vod['videos']['video'][0]['media'] + + formats = [] + hls_url = media.get('hls', {}).get('url') + if hls_url: + formats.extend(self._extract_m3u8_formats(hls_url, video_id, 'mp4', 'm3u8_native', m3u8_id='hls', fatal=False)) + + hds_url = media.get('hds', {}).get('url') + if hds_url: + formats.extend(self._extract_f4m_formats(hds_url + '?hdcore', video_id, f4m_id='hds', fatal=False)) + + for c in media.get('content', []): + c_url = c.get('url') + if not c_url: + continue + tbr = int_or_none(c.get('bitrate'), 1000) + format_id = 'http' + if tbr: + format_id += '-%d' % tbr + formats.append({ + 'format_id': format_id, + 'url': c_url, + 'tbr': tbr, + 'width': int_or_none(c.get('width')), + 'height': int_or_none(c.get('height')), + 'filesize': int_or_none(c.get('fileSize')), + 'vcodec': c.get('type'), + 'fps': int_or_none(c.get('videoFrameRate')), + 'vbr': int_or_none(c.get('videoRate'), 1000), + 'abr': int_or_none(c.get('audioRate'), 1000), + }) + self._sort_formats(formats) + + return { + 'id': video_id, + 'title': video['title'], + 'description': video.get('description'), + 'thumbnail': video.get('poster'), + 'duration': int_or_none(video.get('duration')), + 'timestamp': int_or_none(video.get('publishedTime'), 1000), + 'formats': formats, + } diff --git a/youtube_dl/extractor/playtvak.py b/youtube_dl/extractor/playtvak.py index 391e1bd..4c5f579 100644 --- a/youtube_dl/extractor/playtvak.py +++ b/youtube_dl/extractor/playtvak.py @@ -24,7 +24,7 @@ class PlaytvakIE(InfoExtractor): 'id': 'A150730_150323_hodinovy-manzel_kuko', 'ext': 'mp4', 'title': 'Vyžeňte vosy a sršně ze zahrady', - 'description': 'md5:f93d398691044d303bc4a3de62f3e976', + 'description': 'md5:4436e61b7df227a093778efb7e373571', 'thumbnail': r're:(?i)^https?://.*\.(?:jpg|png)$', 'duration': 279, 'timestamp': 1438732860, @@ -36,9 +36,19 @@ class PlaytvakIE(InfoExtractor): 'info_dict': { 'id': 'A150624_164934_planespotting_cat', 'ext': 'flv', - 'title': 're:^Přímý přenos iDNES.cz [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$', + 'title': 're:^Planespotting [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$', 'description': 'Sledujte provoz na ranveji Letiště Václava Havla v Praze', - 'thumbnail': r're:(?i)^https?://.*\.(?:jpg|png)$', + 'is_live': True, + }, + 'params': { + 'skip_download': True, # requires rtmpdump + }, + }, { # another live stream, this one without Misc.videoFLV + 'url': 'https://slowtv.playtvak.cz/zive-sledujte-vlaky-v-primem-prenosu-dwi-/hlavni-nadrazi.aspx?c=A151218_145728_hlavni-nadrazi_plap', + 'info_dict': { + 'id': 'A151218_145728_hlavni-nadrazi_plap', + 'ext': 'flv', + 'title': 're:^Hlavní nádraží [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$', 'is_live': True, }, 'params': { @@ -95,7 +105,7 @@ class PlaytvakIE(InfoExtractor): webpage = self._download_webpage(url, video_id) info_url = self._html_search_regex( - r'Misc\.videoFLV\(\s*{\s*data\s*:\s*"([^"]+)"', webpage, 'info url') + r'Misc\.video(?:FLV)?\(\s*{\s*data\s*:\s*"([^"]+)"', webpage, 'info url') parsed_url = compat_urlparse.urlparse(info_url) @@ -160,7 +170,7 @@ class PlaytvakIE(InfoExtractor): if is_live: title = self._live_title(title) description = self._og_search_description(webpage, default=None) or self._html_search_meta( - 'description', webpage, 'description') + 'description', webpage, 'description', default=None) timestamp = None duration = None if not is_live: diff --git a/youtube_dl/extractor/pluralsight.py b/youtube_dl/extractor/pluralsight.py index f6a9131..aacc5d4 100644 --- a/youtube_dl/extractor/pluralsight.py +++ b/youtube_dl/extractor/pluralsight.py @@ -116,7 +116,7 @@ class PluralsightIE(PluralsightBaseIE): post_url = compat_urlparse.urljoin(self._LOGIN_URL, post_url) response = self._download_webpage( - post_url, None, 'Logging in as %s' % username, + post_url, None, 'Logging in', data=urlencode_postdata(login_form), headers={'Content-Type': 'application/x-www-form-urlencoded'}) @@ -131,6 +131,13 @@ class PluralsightIE(PluralsightBaseIE): if BLOCKED in response: raise ExtractorError( 'Unable to login: %s' % BLOCKED, expected=True) + MUST_AGREE = 'To continue using Pluralsight, you must agree to' + if any(p in response for p in (MUST_AGREE, '>Disagree<', '>Agree<')): + raise ExtractorError( + 'Unable to login: %s some documents. Go to pluralsight.com, ' + 'log in and agree with what Pluralsight requires.' + % MUST_AGREE, expected=True) + raise ExtractorError('Unable to log in') def _get_subtitles(self, author, clip_id, lang, name, duration, video_id): @@ -164,12 +171,12 @@ class PluralsightIE(PluralsightBaseIE): for num, current in enumerate(subs): current = subs[num] start, text = ( - float_or_none(dict_get(current, TIME_OFFSET_KEYS)), + float_or_none(dict_get(current, TIME_OFFSET_KEYS, skip_false_values=False)), dict_get(current, TEXT_KEYS)) if start is None or text is None: continue end = duration if num == len(subs) - 1 else float_or_none( - dict_get(subs[num + 1], TIME_OFFSET_KEYS)) + dict_get(subs[num + 1], TIME_OFFSET_KEYS, skip_false_values=False)) if end is None: continue srt += os.linesep.join( diff --git a/youtube_dl/extractor/porncom.py b/youtube_dl/extractor/porncom.py index 8218c7d..60ade06 100644 --- a/youtube_dl/extractor/porncom.py +++ b/youtube_dl/extractor/porncom.py @@ -77,12 +77,14 @@ class PornComIE(InfoExtractor): self._sort_formats(formats) view_count = str_to_int(self._search_regex( - r'class=["\']views["\'][^>]*><p>([\d,.]+)', webpage, + (r'Views:\s*</span>\s*<span>\s*([\d,.]+)', + r'class=["\']views["\'][^>]*><p>([\d,.]+)'), webpage, 'view count', fatal=False)) def extract_list(kind): s = self._search_regex( - r'(?s)<p[^>]*>%s:(.+?)</p>' % kind.capitalize(), + (r'(?s)%s:\s*</span>\s*<span>(.+?)</span>' % kind.capitalize(), + r'(?s)<p[^>]*>%s:(.+?)</p>' % kind.capitalize()), webpage, kind, fatal=False) return re.findall(r'<a[^>]+>([^<]+)</a>', s or '') diff --git a/youtube_dl/extractor/rai.py b/youtube_dl/extractor/rai.py index 5bf64a5..d223110 100644 --- a/youtube_dl/extractor/rai.py +++ b/youtube_dl/extractor/rai.py @@ -17,6 +17,7 @@ from ..utils import ( parse_duration, strip_or_none, try_get, + unescapeHTML, unified_strdate, unified_timestamp, update_url_query, @@ -249,6 +250,41 @@ class RaiPlayLiveIE(RaiBaseIE): } +class RaiPlayPlaylistIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?raiplay\.it/programmi/(?P<id>[^/?#&]+)' + _TESTS = [{ + 'url': 'http://www.raiplay.it/programmi/nondirloalmiocapo/', + 'info_dict': { + 'id': 'nondirloalmiocapo', + 'title': 'Non dirlo al mio capo', + 'description': 'md5:9f3d603b2947c1c7abb098f3b14fac86', + }, + 'playlist_mincount': 12, + }] + + def _real_extract(self, url): + playlist_id = self._match_id(url) + + webpage = self._download_webpage(url, playlist_id) + + title = self._html_search_meta( + ('programma', 'nomeProgramma'), webpage, 'title') + description = unescapeHTML(self._html_search_meta( + ('description', 'og:description'), webpage, 'description')) + print(description) + + entries = [] + for mobj in re.finditer( + r'<a\b[^>]+\bhref=(["\'])(?P<path>/raiplay/video/.+?)\1', + webpage): + video_url = urljoin(url, mobj.group('path')) + entries.append(self.url_result( + video_url, ie=RaiPlayIE.ie_key(), + video_id=RaiPlayIE._match_id(video_url))) + + return self.playlist_result(entries, playlist_id, title, description) + + class RaiIE(RaiBaseIE): _VALID_URL = r'https?://[^/]+\.(?:rai\.(?:it|tv)|rainews\.it)/dl/.+?-(?P<id>%s)(?:-.+?)?\.html' % RaiBaseIE._UUID_RE _TESTS = [{ diff --git a/youtube_dl/extractor/roosterteeth.py b/youtube_dl/extractor/roosterteeth.py index 46dfc78..8b70380 100644 --- a/youtube_dl/extractor/roosterteeth.py +++ b/youtube_dl/extractor/roosterteeth.py @@ -68,7 +68,7 @@ class RoosterTeethIE(InfoExtractor): login_request = self._download_webpage( self._LOGIN_URL, None, - note='Logging in as %s' % username, + note='Logging in', data=urlencode_postdata(login_form), headers={ 'Referer': self._LOGIN_URL, diff --git a/youtube_dl/extractor/rozhlas.py b/youtube_dl/extractor/rozhlas.py index f8eda8d..fccf694 100644 --- a/youtube_dl/extractor/rozhlas.py +++ b/youtube_dl/extractor/rozhlas.py @@ -21,7 +21,7 @@ class RozhlasIE(InfoExtractor): } }, { 'url': 'http://prehravac.rozhlas.cz/audio/3421320/embed', - 'skip_download': True, + 'only_matching': True, }] def _real_extract(self, url): diff --git a/youtube_dl/extractor/safari.py b/youtube_dl/extractor/safari.py index 909a6ba..cc6698f 100644 --- a/youtube_dl/extractor/safari.py +++ b/youtube_dl/extractor/safari.py @@ -61,7 +61,7 @@ class SafariBaseIE(InfoExtractor): request = sanitized_Request( self._LOGIN_URL, urlencode_postdata(login_form), headers=headers) login_page = self._download_webpage( - request, None, 'Logging in as %s' % username) + request, None, 'Logging in') if not is_logged(login_page): raise ExtractorError( diff --git a/youtube_dl/extractor/sandia.py b/youtube_dl/extractor/sandia.py deleted file mode 100644 index 96e43af..0000000 --- a/youtube_dl/extractor/sandia.py +++ /dev/null @@ -1,65 +0,0 @@ -# coding: utf-8 -from __future__ import unicode_literals - -import json - -from .common import InfoExtractor -from ..utils import ( - int_or_none, - mimetype2ext, -) - - -class SandiaIE(InfoExtractor): - IE_DESC = 'Sandia National Laboratories' - _VALID_URL = r'https?://digitalops\.sandia\.gov/Mediasite/Play/(?P<id>[0-9a-f]+)' - _TEST = { - 'url': 'http://digitalops.sandia.gov/Mediasite/Play/24aace4429fc450fb5b38cdbf424a66e1d', - 'md5': '9422edc9b9a60151727e4b6d8bef393d', - 'info_dict': { - 'id': '24aace4429fc450fb5b38cdbf424a66e1d', - 'ext': 'mp4', - 'title': 'Xyce Software Training - Section 1', - 'description': 're:(?s)SAND Number: SAND 2013-7800.{200,}', - 'upload_date': '20120409', - 'timestamp': 1333983600, - 'duration': 7794, - } - } - - def _real_extract(self, url): - video_id = self._match_id(url) - - presentation_data = self._download_json( - 'http://digitalops.sandia.gov/Mediasite/PlayerService/PlayerService.svc/json/GetPlayerOptions', - video_id, data=json.dumps({ - 'getPlayerOptionsRequest': { - 'ResourceId': video_id, - 'QueryString': '', - } - }), headers={ - 'Content-Type': 'application/json; charset=utf-8', - })['d']['Presentation'] - - title = presentation_data['Title'] - - formats = [] - for stream in presentation_data.get('Streams', []): - for fd in stream.get('VideoUrls', []): - formats.append({ - 'format_id': fd['MediaType'], - 'format_note': fd['MimeType'].partition('/')[2], - 'ext': mimetype2ext(fd['MimeType']), - 'url': fd['Location'], - 'protocol': 'f4m' if fd['MimeType'] == 'video/x-mp4-fragmented' else None, - }) - self._sort_formats(formats) - - return { - 'id': video_id, - 'title': title, - 'description': presentation_data.get('Description'), - 'formats': formats, - 'timestamp': int_or_none(presentation_data.get('UnixTime'), 1000), - 'duration': int_or_none(presentation_data.get('Duration'), 1000), - } diff --git a/youtube_dl/extractor/scrippsnetworks.py b/youtube_dl/extractor/scrippsnetworks.py index b446a02..4023aee 100644 --- a/youtube_dl/extractor/scrippsnetworks.py +++ b/youtube_dl/extractor/scrippsnetworks.py @@ -1,13 +1,11 @@ # coding: utf-8 from __future__ import unicode_literals -import datetime import json import hashlib -import hmac import re -from .common import InfoExtractor +from .aws import AWSIE from .anvato import AnvatoIE from ..utils import ( smuggle_url, @@ -16,7 +14,7 @@ from ..utils import ( ) -class ScrippsNetworksWatchIE(InfoExtractor): +class ScrippsNetworksWatchIE(AWSIE): IE_NAME = 'scrippsnetworks:watch' _VALID_URL = r'''(?x) https?:// @@ -64,44 +62,27 @@ class ScrippsNetworksWatchIE(InfoExtractor): 'travelchannel': 'trav', 'geniuskitchen': 'genius', } - _SNI_HOST = 'web.api.video.snidigital.com' - _AWS_REGION = 'us-east-1' - _AWS_IDENTITY_ID_JSON = json.dumps({ - 'IdentityId': '%s:7655847c-0ae7-4d9b-80d6-56c062927eb3' % _AWS_REGION - }) - _AWS_USER_AGENT = 'aws-sdk-js/2.80.0 callback' _AWS_API_KEY = 'E7wSQmq0qK6xPrF13WmzKiHo4BQ7tip4pQcSXVl1' - _AWS_SERVICE = 'execute-api' - _AWS_REQUEST = 'aws4_request' - _AWS_SIGNED_HEADERS = ';'.join([ - 'host', 'x-amz-date', 'x-amz-security-token', 'x-api-key']) - _AWS_CANONICAL_REQUEST_TEMPLATE = '''GET -%(uri)s - -host:%(host)s -x-amz-date:%(date)s -x-amz-security-token:%(token)s -x-api-key:%(key)s + _AWS_PROXY_HOST = 'web.api.video.snidigital.com' -%(signed_headers)s -%(payload_hash)s''' + _AWS_USER_AGENT = 'aws-sdk-js/2.80.0 callback' def _real_extract(self, url): mobj = re.match(self._VALID_URL, url) site_id, video_id = mobj.group('site', 'id') - def aws_hash(s): - return hashlib.sha256(s.encode('utf-8')).hexdigest() - + aws_identity_id_json = json.dumps({ + 'IdentityId': '%s:7655847c-0ae7-4d9b-80d6-56c062927eb3' % self._AWS_REGION + }).encode('utf-8') token = self._download_json( - 'https://cognito-identity.us-east-1.amazonaws.com/', video_id, - data=self._AWS_IDENTITY_ID_JSON.encode('utf-8'), + 'https://cognito-identity.%s.amazonaws.com/' % self._AWS_REGION, video_id, + data=aws_identity_id_json, headers={ 'Accept': '*/*', 'Content-Type': 'application/x-amz-json-1.1', 'Referer': url, - 'X-Amz-Content-Sha256': aws_hash(self._AWS_IDENTITY_ID_JSON), + 'X-Amz-Content-Sha256': hashlib.sha256(aws_identity_id_json).hexdigest(), 'X-Amz-Target': 'AWSCognitoIdentityService.GetOpenIdToken', 'X-Amz-User-Agent': self._AWS_USER_AGENT, })['Token'] @@ -124,64 +105,12 @@ x-api-key:%(key)s sts, './/{https://sts.amazonaws.com/doc/2011-06-15/}%s' % key, fatal=True) - access_key_id = get('AccessKeyId') - secret_access_key = get('SecretAccessKey') - session_token = get('SessionToken') - - # Task 1: http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html - uri = '/1/web/brands/%s/episodes/scrid/%s' % (self._SNI_TABLE[site_id], video_id) - datetime_now = datetime.datetime.utcnow().strftime('%Y%m%dT%H%M%SZ') - date = datetime_now[:8] - canonical_string = self._AWS_CANONICAL_REQUEST_TEMPLATE % { - 'uri': uri, - 'host': self._SNI_HOST, - 'date': datetime_now, - 'token': session_token, - 'key': self._AWS_API_KEY, - 'signed_headers': self._AWS_SIGNED_HEADERS, - 'payload_hash': aws_hash(''), - } - - # Task 2: http://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html - credential_string = '/'.join([date, self._AWS_REGION, self._AWS_SERVICE, self._AWS_REQUEST]) - string_to_sign = '\n'.join([ - 'AWS4-HMAC-SHA256', datetime_now, credential_string, - aws_hash(canonical_string)]) - - # Task 3: http://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html - def aws_hmac(key, msg): - return hmac.new(key, msg.encode('utf-8'), hashlib.sha256) - - def aws_hmac_digest(key, msg): - return aws_hmac(key, msg).digest() - - def aws_hmac_hexdigest(key, msg): - return aws_hmac(key, msg).hexdigest() - - k_secret = 'AWS4' + secret_access_key - k_date = aws_hmac_digest(k_secret.encode('utf-8'), date) - k_region = aws_hmac_digest(k_date, self._AWS_REGION) - k_service = aws_hmac_digest(k_region, self._AWS_SERVICE) - k_signing = aws_hmac_digest(k_service, self._AWS_REQUEST) - - signature = aws_hmac_hexdigest(k_signing, string_to_sign) - - auth_header = ', '.join([ - 'AWS4-HMAC-SHA256 Credential=%s' % '/'.join( - [access_key_id, date, self._AWS_REGION, self._AWS_SERVICE, self._AWS_REQUEST]), - 'SignedHeaders=%s' % self._AWS_SIGNED_HEADERS, - 'Signature=%s' % signature, - ]) - - mcp_id = self._download_json( - 'https://%s%s' % (self._SNI_HOST, uri), video_id, headers={ - 'Accept': '*/*', - 'Referer': url, - 'Authorization': auth_header, - 'X-Amz-Date': datetime_now, - 'X-Amz-Security-Token': session_token, - 'X-Api-Key': self._AWS_API_KEY, - })['results'][0]['mcpId'] + mcp_id = self._aws_execute_api({ + 'uri': '/1/web/brands/%s/episodes/scrid/%s' % (self._SNI_TABLE[site_id], video_id), + 'access_key': get('AccessKeyId'), + 'secret_key': get('SecretAccessKey'), + 'session_token': get('SessionToken'), + }, video_id)['results'][0]['mcpId'] return self.url_result( smuggle_url( diff --git a/youtube_dl/extractor/sevenplus.py b/youtube_dl/extractor/sevenplus.py new file mode 100644 index 0000000..9792f82 --- /dev/null +++ b/youtube_dl/extractor/sevenplus.py @@ -0,0 +1,67 @@ +# coding: utf-8 +from __future__ import unicode_literals + +import re + +from .brightcove import BrightcoveNewIE +from ..utils import update_url_query + + +class SevenPlusIE(BrightcoveNewIE): + IE_NAME = '7plus' + _VALID_URL = r'https?://(?:www\.)?7plus\.com\.au/(?P<path>[^?]+\?.*?\bepisode-id=(?P<id>[^&#]+))' + _TESTS = [{ + 'url': 'https://7plus.com.au/BEAT?episode-id=BEAT-001', + 'info_dict': { + 'id': 'BEAT-001', + 'ext': 'mp4', + 'title': 'S1 E1 - Help / Lucy In The Sky With Diamonds', + 'description': 'md5:37718bea20a8eedaca7f7361af566131', + 'uploader_id': '5303576322001', + 'upload_date': '20171031', + 'timestamp': 1509440068, + }, + 'params': { + 'format': 'bestvideo', + 'skip_download': True, + } + }, { + 'url': 'https://7plus.com.au/UUUU?episode-id=AUMS43-001', + 'only_matching': True, + }] + + def _real_extract(self, url): + path, episode_id = re.match(self._VALID_URL, url).groups() + + media = self._download_json( + 'https://videoservice.swm.digital/playback', episode_id, query={ + 'appId': '7plus', + 'deviceType': 'web', + 'platformType': 'web', + 'accountId': 5303576322001, + 'referenceId': 'ref:' + episode_id, + 'deliveryId': 'csai', + 'videoType': 'vod', + })['media'] + + for source in media.get('sources', {}): + src = source.get('src') + if not src: + continue + source['src'] = update_url_query(src, {'rule': ''}) + + info = self._parse_brightcove_metadata(media, episode_id) + + content = self._download_json( + 'https://component-cdn.swm.digital/content/' + path, + episode_id, headers={ + 'market-id': 4, + }, fatal=False) or {} + for item in content.get('items', {}): + if item.get('componentData', {}).get('componentType') == 'infoPanel': + for src_key, dst_key in [('title', 'title'), ('shortSynopsis', 'description')]: + value = item.get(src_key) + if value: + info[dst_key] = value + + return info diff --git a/youtube_dl/extractor/shahid.py b/youtube_dl/extractor/shahid.py index 374f7fa..5c2a620 100644 --- a/youtube_dl/extractor/shahid.py +++ b/youtube_dl/extractor/shahid.py @@ -1,22 +1,53 @@ # coding: utf-8 from __future__ import unicode_literals -import re import json +import math +import re -from .common import InfoExtractor +from .aws import AWSIE from ..compat import compat_HTTPError from ..utils import ( + clean_html, ExtractorError, + InAdvancePagedList, int_or_none, parse_iso8601, str_or_none, urlencode_postdata, - clean_html, ) -class ShahidIE(InfoExtractor): +class ShahidBaseIE(AWSIE): + _AWS_PROXY_HOST = 'api2.shahid.net' + _AWS_API_KEY = '2RRtuMHx95aNI1Kvtn2rChEuwsCogUd4samGPjLh' + + def _handle_error(self, e): + fail_data = self._parse_json( + e.cause.read().decode('utf-8'), None, fatal=False) + if fail_data: + faults = fail_data.get('faults', []) + faults_message = ', '.join([clean_html(fault['userMessage']) for fault in faults if fault.get('userMessage')]) + if faults_message: + raise ExtractorError(faults_message, expected=True) + + def _call_api(self, path, video_id, request=None): + query = {} + if request: + query['request'] = json.dumps(request) + try: + return self._aws_execute_api({ + 'uri': '/proxy/v2/' + path, + 'access_key': 'AKIAI6X4TYCIXM2B7MUQ', + 'secret_key': '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', + }, video_id, query) + except ExtractorError as e: + if isinstance(e.cause, compat_HTTPError): + self._handle_error(e) + raise + + +class ShahidIE(ShahidBaseIE): _NETRC_MACHINE = 'shahid' _VALID_URL = r'https?://shahid\.mbc\.net/ar/(?:serie|show|movie)s/[^/]+/(?P<type>episode|clip|movie)-(?P<id>\d+)' _TESTS = [{ @@ -41,34 +72,25 @@ class ShahidIE(InfoExtractor): 'only_matching': True }] - def _api2_request(self, *args, **kwargs): - try: - return self._download_json(*args, **kwargs) - except ExtractorError as e: - if isinstance(e.cause, compat_HTTPError): - fail_data = self._parse_json( - e.cause.read().decode('utf-8'), None, fatal=False) - if fail_data: - faults = fail_data.get('faults', []) - faults_message = ', '.join([clean_html(fault['userMessage']) for fault in faults if fault.get('userMessage')]) - if faults_message: - raise ExtractorError(faults_message, expected=True) - raise - def _real_initialize(self): email, password = self._get_login_info() if email is None: return - user_data = self._api2_request( - 'https://shahid.mbc.net/wd/service/users/login', - None, 'Logging in', data=json.dumps({ - 'email': email, - 'password': password, - 'basic': 'false', - }).encode('utf-8'), headers={ - 'Content-Type': 'application/json; charset=UTF-8', - })['user'] + try: + user_data = self._download_json( + 'https://shahid.mbc.net/wd/service/users/login', + None, 'Logging in', data=json.dumps({ + 'email': email, + 'password': password, + 'basic': 'false', + }).encode('utf-8'), headers={ + 'Content-Type': 'application/json; charset=UTF-8', + })['user'] + except ExtractorError as e: + if isinstance(e.cause, compat_HTTPError): + self._handle_error(e) + raise self._download_webpage( 'https://shahid.mbc.net/populateContext', @@ -81,25 +103,13 @@ class ShahidIE(InfoExtractor): 'sessionId': user_data['sessionId'], })) - def _get_api_data(self, response): - data = response.get('data', {}) - - error = data.get('error') - if error: - raise ExtractorError( - '%s returned error: %s' % (self.IE_NAME, '\n'.join(error.values())), - expected=True) - - return data - def _real_extract(self, url): page_type, video_id = re.match(self._VALID_URL, url).groups() if page_type == 'clip': page_type = 'episode' - playout = self._api2_request( - 'https://api2.shahid.net/proxy/v2/playout/url/' + video_id, - video_id, 'Downloading player JSON')['playout'] + playout = self._call_api( + 'playout/url/' + video_id, video_id)['playout'] if playout.get('drm'): raise ExtractorError('This video is DRM protected.', expected=True) @@ -107,13 +117,27 @@ class ShahidIE(InfoExtractor): formats = self._extract_m3u8_formats(playout['url'], video_id, 'mp4') self._sort_formats(formats) - video = self._get_api_data(self._download_json( + # video = self._call_api( + # 'product/id', video_id, { + # 'id': video_id, + # 'productType': 'ASSET', + # 'productSubType': page_type.upper() + # })['productModel'] + + response = self._download_json( 'http://api.shahid.net/api/v1_1/%s/%s' % (page_type, video_id), video_id, 'Downloading video JSON', query={ 'apiKey': 'sh@hid0nlin3', 'hash': 'b2wMCTHpSmyxGqQjJFOycRmLSex+BpTK/ooxy6vHaqs=', - }))[page_type] + }) + data = response.get('data', {}) + error = data.get('error') + if error: + raise ExtractorError( + '%s returned error: %s' % (self.IE_NAME, '\n'.join(error.values())), + expected=True) + video = data[page_type] title = video['title'] categories = [ category['name'] @@ -135,3 +159,57 @@ class ShahidIE(InfoExtractor): 'episode_id': video_id, 'formats': formats, } + + +class ShahidShowIE(ShahidBaseIE): + _VALID_URL = r'https?://shahid\.mbc\.net/ar/(?:show|serie)s/[^/]+/(?:show|series)-(?P<id>\d+)' + _TESTS = [{ + 'url': 'https://shahid.mbc.net/ar/shows/%D8%B1%D8%A7%D9%85%D8%B2-%D9%82%D8%B1%D8%B4-%D8%A7%D9%84%D8%A8%D8%AD%D8%B1/show-79187', + 'info_dict': { + 'id': '79187', + 'title': 'رامز قرش البحر', + 'description': 'md5:c88fa7e0f02b0abd39d417aee0d046ff', + }, + 'playlist_mincount': 32, + }, { + 'url': 'https://shahid.mbc.net/ar/series/How-to-live-Longer-(The-Big-Think)/series-291861', + 'only_matching': True + }] + _PAGE_SIZE = 30 + + def _real_extract(self, url): + show_id = self._match_id(url) + + product = self._call_api( + 'playableAsset', show_id, {'showId': show_id})['productModel'] + playlist = product['playlist'] + playlist_id = playlist['id'] + show = product.get('show', {}) + + def page_func(page_num): + playlist = self._call_api( + 'product/playlist', show_id, { + 'playListId': playlist_id, + 'pageNumber': page_num, + 'pageSize': 30, + 'sorts': [{ + 'order': 'DESC', + 'type': 'SORTDATE' + }], + }) + for product in playlist.get('productList', {}).get('products', []): + product_url = product.get('productUrl', []).get('url') + if not product_url: + continue + yield self.url_result( + product_url, 'Shahid', + str_or_none(product.get('id')), + product.get('title')) + + entries = InAdvancePagedList( + page_func, + math.ceil(playlist['count'] / self._PAGE_SIZE), + self._PAGE_SIZE) + + return self.playlist_result( + entries, show_id, show.get('title'), show.get('description')) diff --git a/youtube_dl/extractor/slutload.py b/youtube_dl/extractor/slutload.py index 7145d28..6fc2ff6 100644 --- a/youtube_dl/extractor/slutload.py +++ b/youtube_dl/extractor/slutload.py @@ -1,11 +1,13 @@ from __future__ import unicode_literals +import re + from .common import InfoExtractor class SlutloadIE(InfoExtractor): _VALID_URL = r'^https?://(?:\w+\.)?slutload\.com/video/[^/]+/(?P<id>[^/]+)/?$' - _TEST = { + _TESTS = [{ 'url': 'http://www.slutload.com/video/virginie-baisee-en-cam/TD73btpBqSxc/', 'md5': '868309628ba00fd488cf516a113fd717', 'info_dict': { @@ -15,11 +17,17 @@ class SlutloadIE(InfoExtractor): 'age_limit': 18, 'thumbnail': r're:https?://.*?\.jpg' } - } + }, { + # mobile site + 'url': 'http://mobile.slutload.com/video/masturbation-solo/fviFLmc6kzJ/', + 'only_matching': True, + }] def _real_extract(self, url): video_id = self._match_id(url) - webpage = self._download_webpage(url, video_id) + + desktop_url = re.sub(r'^(https?://)mobile\.', r'\1', url) + webpage = self._download_webpage(desktop_url, video_id) video_title = self._html_search_regex(r'<h1><strong>([^<]+)</strong>', webpage, 'title').strip() diff --git a/youtube_dl/extractor/sonyliv.py b/youtube_dl/extractor/sonyliv.py index accd112..c3078e2 100644 --- a/youtube_dl/extractor/sonyliv.py +++ b/youtube_dl/extractor/sonyliv.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals from .common import InfoExtractor +from ..utils import smuggle_url class SonyLIVIE(InfoExtractor): @@ -10,12 +11,12 @@ class SonyLIVIE(InfoExtractor): 'url': "http://www.sonyliv.com/details/episodes/5024612095001/Ep.-1---Achaari-Cheese-Toast---Bachelor's-Delight", 'info_dict': { 'title': "Ep. 1 - Achaari Cheese Toast - Bachelor's Delight", - 'id': '5024612095001', + 'id': 'ref:5024612095001', 'ext': 'mp4', - 'upload_date': '20160707', + 'upload_date': '20170923', 'description': 'md5:7f28509a148d5be9d0782b4d5106410d', - 'uploader_id': '4338955589001', - 'timestamp': 1467870968, + 'uploader_id': '5182475815001', + 'timestamp': 1506200547, }, 'params': { 'skip_download': True, @@ -26,9 +27,11 @@ class SonyLIVIE(InfoExtractor): 'only_matching': True, }] - BRIGHTCOVE_URL_TEMPLATE = 'http://players.brightcove.net/4338955589001/default_default/index.html?videoId=%s' + # BRIGHTCOVE_URL_TEMPLATE = 'http://players.brightcove.net/4338955589001/default_default/index.html?videoId=%s' + BRIGHTCOVE_URL_TEMPLATE = 'http://players.brightcove.net/5182475815001/default_default/index.html?videoId=ref:%s' def _real_extract(self, url): brightcove_id = self._match_id(url) return self.url_result( - self.BRIGHTCOVE_URL_TEMPLATE % brightcove_id, 'BrightcoveNew', brightcove_id) + smuggle_url(self.BRIGHTCOVE_URL_TEMPLATE % brightcove_id, {'geo_countries': ['IN']}), + 'BrightcoveNew', brightcove_id) diff --git a/youtube_dl/extractor/spankbang.py b/youtube_dl/extractor/spankbang.py index 2863e53..e6c2dcf 100644 --- a/youtube_dl/extractor/spankbang.py +++ b/youtube_dl/extractor/spankbang.py @@ -7,7 +7,7 @@ from ..utils import ExtractorError class SpankBangIE(InfoExtractor): - _VALID_URL = r'https?://(?:(?:www|[a-z]{2})\.)?spankbang\.com/(?P<id>[\da-z]+)/video' + _VALID_URL = r'https?://(?:(?:www|m|[a-z]{2})\.)?spankbang\.com/(?P<id>[\da-z]+)/video' _TESTS = [{ 'url': 'http://spankbang.com/3vvn/video/fantasy+solo', 'md5': '1cc433e1d6aa14bc376535b8679302f7', @@ -15,7 +15,7 @@ class SpankBangIE(InfoExtractor): 'id': '3vvn', 'ext': 'mp4', 'title': 'fantasy solo', - 'description': 'Watch fantasy solo free HD porn video - 05 minutes - dillion harper masturbates on a bed free adult movies.', + 'description': 'Watch fantasy solo free HD porn video - 05 minutes - Babe,Masturbation,Solo,Toy - dillion harper masturbates on a bed free adult movies sexy clips.', 'thumbnail': r're:^https?://.*\.jpg$', 'uploader': 'silly2587', 'age_limit': 18, @@ -28,6 +28,10 @@ class SpankBangIE(InfoExtractor): # no uploader 'url': 'http://spankbang.com/lklg/video/sex+with+anyone+wedding+edition+2', 'only_matching': True, + }, { + # mobile page + 'url': 'http://m.spankbang.com/1o2de/video/can+t+remember+her+name', + 'only_matching': True, }] def _real_extract(self, url): diff --git a/youtube_dl/extractor/stretchinternet.py b/youtube_dl/extractor/stretchinternet.py new file mode 100644 index 0000000..ae2ac1b --- /dev/null +++ b/youtube_dl/extractor/stretchinternet.py @@ -0,0 +1,48 @@ +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import int_or_none + + +class StretchInternetIE(InfoExtractor): + _VALID_URL = r'https?://portal\.stretchinternet\.com/[^/]+/portal\.htm\?.*?\beventId=(?P<id>\d+)' + _TEST = { + 'url': 'https://portal.stretchinternet.com/umary/portal.htm?eventId=313900&streamType=video', + 'info_dict': { + 'id': '313900', + 'ext': 'mp4', + 'title': 'Augustana (S.D.) Baseball vs University of Mary', + 'description': 'md5:7578478614aae3bdd4a90f578f787438', + 'timestamp': 1490468400, + 'upload_date': '20170325', + } + } + + def _real_extract(self, url): + video_id = self._match_id(url) + + stream = self._download_json( + 'https://neo-client.stretchinternet.com/streamservice/v1/media/stream/v%s' + % video_id, video_id) + + video_url = 'https://%s' % stream['source'] + + event = self._download_json( + 'https://neo-client.stretchinternet.com/portal-ws/getEvent.json', + video_id, query={ + 'clientID': 99997, + 'eventID': video_id, + 'token': 'asdf', + })['event'] + + title = event.get('title') or event['mobileTitle'] + description = event.get('customText') + timestamp = int_or_none(event.get('longtime')) + + return { + 'id': video_id, + 'title': title, + 'description': description, + 'timestamp': timestamp, + 'url': video_url, + } diff --git a/youtube_dl/extractor/tbs.py b/youtube_dl/extractor/tbs.py index e947453..eab22c3 100644 --- a/youtube_dl/extractor/tbs.py +++ b/youtube_dl/extractor/tbs.py @@ -4,58 +4,109 @@ from __future__ import unicode_literals import re from .turner import TurnerBaseIE -from ..utils import extract_attributes +from ..utils import ( + float_or_none, + int_or_none, + strip_or_none, +) class TBSIE(TurnerBaseIE): - # https://github.com/rg3/youtube-dl/issues/13658 - _WORKING = False - - _VALID_URL = r'https?://(?:www\.)?(?P<site>tbs|tntdrama)\.com/videos/(?:[^/]+/)+(?P<id>[^/?#]+)\.html' + _VALID_URL = r'https?://(?:www\.)?(?P<site>tbs|tntdrama)\.com/(?:movies|shows/[^/]+/(?:clips|season-\d+/episode-\d+))/(?P<id>[^/?#]+)' _TESTS = [{ - 'url': 'http://www.tbs.com/videos/people-of-earth/season-1/extras/2007318/theatrical-trailer.html', - 'md5': '9e61d680e2285066ade7199e6408b2ee', + 'url': 'http://www.tntdrama.com/shows/the-alienist/clips/monster', 'info_dict': { - 'id': '2007318', + 'id': '8d384cde33b89f3a43ce5329de42903ed5099887', 'ext': 'mp4', - 'title': 'Theatrical Trailer', - 'description': 'Catch the latest comedy from TBS, People of Earth, premiering Halloween night--Monday, October 31, at 9/8c.', + 'title': 'Monster', + 'description': 'Get a first look at the theatrical trailer for TNT’s highly anticipated new psychological thriller The Alienist, which premieres January 22 on TNT.', + 'timestamp': 1508175329, + 'upload_date': '20171016', }, - 'skip': 'TBS videos are deleted after a while', + 'params': { + # m3u8 download + 'skip_download': True, + } }, { - 'url': 'http://www.tntdrama.com/videos/good-behavior/season-1/extras/1538823/you-better-run.html', - 'md5': 'ce53c6ead5e9f3280b4ad2031a6fab56', - 'info_dict': { - 'id': '1538823', - 'ext': 'mp4', - 'title': 'You Better Run', - 'description': 'Letty Raines must figure out what she\'s running toward while running away from her past. Good Behavior premieres November 15 at 9/8c.', - }, - 'skip': 'TBS videos are deleted after a while', + 'url': 'http://www.tbs.com/shows/search-party/season-1/episode-1/explicit-the-mysterious-disappearance-of-the-girl-no-one-knew', + 'only_matching': True, + }, { + 'url': 'http://www.tntdrama.com/movies/star-wars-a-new-hope', + 'only_matching': True, }] def _real_extract(self, url): - domain, display_id = re.match(self._VALID_URL, url).groups() - site = domain[:3] + site, display_id = re.match(self._VALID_URL, url).groups() webpage = self._download_webpage(url, display_id) - video_params = extract_attributes(self._search_regex(r'(<[^>]+id="page-video"[^>]*>)', webpage, 'video params')) - query = None - clip_id = video_params.get('clipid') - if clip_id: - query = 'id=' + clip_id - else: - query = 'titleId=' + video_params['titleid'] - return self._extract_cvp_info( - 'http://www.%s.com/service/cvpXml?%s' % (domain, query), display_id, { - 'default': { - 'media_src': 'http://ht.cdn.turner.com/%s/big' % site, - }, - 'secure': { - 'media_src': 'http://androidhls-secure.cdn.turner.com/%s/big' % site, - 'tokenizer_src': 'http://www.%s.com/video/processors/services/token_ipadAdobe.do' % domain, - }, - }, { - 'url': url, - 'site_name': site.upper(), - 'auth_required': video_params.get('isAuthRequired') != 'false', - }) + video_data = self._parse_json(self._search_regex( + r'<script[^>]+?data-drupal-selector="drupal-settings-json"[^>]*?>({.+?})</script>', + webpage, 'drupal setting'), display_id)['turner_playlist'][0] + + media_id = video_data['mediaID'] + title = video_data['title'] + + streams_data = self._download_json( + 'http://medium.ngtv.io/media/%s/tv' % media_id, + media_id)['media']['tv'] + duration = None + chapters = [] + formats = [] + for supported_type in ('unprotected', 'bulkaes'): + stream_data = streams_data.get(supported_type, {}) + m3u8_url = stream_data.get('secureUrl') or stream_data.get('url') + if not m3u8_url: + continue + if stream_data.get('playlistProtection') == 'spe': + m3u8_url = self._add_akamai_spe_token( + 'http://www.%s.com/service/token_spe' % site, + m3u8_url, media_id, { + 'url': url, + 'site_name': site[:3].upper(), + 'auth_required': video_data.get('authRequired') == '1', + }) + formats.extend(self._extract_m3u8_formats( + m3u8_url, media_id, 'mp4', m3u8_id='hls', fatal=False)) + + duration = float_or_none(stream_data.get('totalRuntime') or video_data.get('duration')) + + if not chapters: + for chapter in stream_data.get('contentSegments', []): + start_time = float_or_none(chapter.get('start')) + duration = float_or_none(chapter.get('duration')) + if start_time is None or duration is None: + continue + chapters.append({ + 'start_time': start_time, + 'end_time': start_time + duration, + }) + self._sort_formats(formats) + + thumbnails = [] + for image_id, image in video_data.get('images', {}).items(): + image_url = image.get('url') + if not image_url or image.get('type') != 'video': + continue + i = { + 'id': image_id, + 'url': image_url, + } + mobj = re.search(r'(\d+)x(\d+)', image_url) + if mobj: + i.update({ + 'width': int(mobj.group(1)), + 'height': int(mobj.group(2)), + }) + thumbnails.append(i) + + return { + 'id': media_id, + 'title': title, + 'description': strip_or_none(video_data.get('descriptionNoTags') or video_data.get('shortDescriptionNoTags')), + 'duration': duration, + 'timestamp': int_or_none(video_data.get('created')), + 'season_number': int_or_none(video_data.get('season')), + 'episode_number': int_or_none(video_data.get('episode')), + 'cahpters': chapters, + 'thumbnails': thumbnails, + 'formats': formats, + } diff --git a/youtube_dl/extractor/tnaflix.py b/youtube_dl/extractor/tnaflix.py index 7e6ec34..0c2f8f1 100644 --- a/youtube_dl/extractor/tnaflix.py +++ b/youtube_dl/extractor/tnaflix.py @@ -21,6 +21,8 @@ class TNAFlixNetworkBaseIE(InfoExtractor): r'flashvars\.config\s*=\s*escape\("([^"]+)"', r'<input[^>]+name="config\d?" value="([^"]+)"', ] + _HOST = 'tna' + _VKEY_SUFFIX = '' _TITLE_REGEX = r'<input[^>]+name="title" value="([^"]+)"' _DESCRIPTION_REGEX = r'<input[^>]+name="description" value="([^"]+)"' _UPLOADER_REGEX = r'<input[^>]+name="username" value="([^"]+)"' @@ -72,7 +74,13 @@ class TNAFlixNetworkBaseIE(InfoExtractor): def _real_extract(self, url): mobj = re.match(self._VALID_URL, url) video_id = mobj.group('id') - display_id = mobj.group('display_id') if 'display_id' in mobj.groupdict() else video_id + for display_id_key in ('display_id', 'display_id_2'): + if display_id_key in mobj.groupdict(): + display_id = mobj.group(display_id_key) + if display_id: + break + else: + display_id = video_id webpage = self._download_webpage(url, display_id) @@ -81,8 +89,8 @@ class TNAFlixNetworkBaseIE(InfoExtractor): if not cfg_url: inputs = self._hidden_inputs(webpage) - cfg_url = ('https://cdn-fck.tnaflix.com/tnaflix/%s.fid?key=%s&VID=%s&premium=1&vip=1&alpha' - % (inputs['vkey'], inputs['nkey'], video_id)) + cfg_url = ('https://cdn-fck.%sflix.com/%sflix/%s%s.fid?key=%s&VID=%s&premium=1&vip=1&alpha' + % (self._HOST, self._HOST, inputs['vkey'], self._VKEY_SUFFIX, inputs['nkey'], video_id)) cfg_xml = self._download_xml( cfg_url, display_id, 'Downloading metadata', @@ -91,7 +99,8 @@ class TNAFlixNetworkBaseIE(InfoExtractor): formats = [] def extract_video_url(vl): - return re.sub(r'speed=\d+', 'speed=', unescapeHTML(vl.text)) + # Any URL modification now results in HTTP Error 403: Forbidden + return unescapeHTML(vl.text) video_link = cfg_xml.find('./videoLink') if video_link is not None: @@ -192,18 +201,21 @@ class TNAFlixNetworkEmbedIE(TNAFlixNetworkBaseIE): webpage)] -class TNAFlixIE(TNAFlixNetworkBaseIE): +class TNAEMPFlixBaseIE(TNAFlixNetworkBaseIE): + _DESCRIPTION_REGEX = r'(?s)>Description:</[^>]+>(.+?)<' + _UPLOADER_REGEX = r'<span>by\s*<a[^>]+\bhref=["\']/profile/[^>]+>([^<]+)<' + _CATEGORIES_REGEX = r'(?s)<span[^>]*>Categories:</span>(.+?)</div>' + + +class TNAFlixIE(TNAEMPFlixBaseIE): _VALID_URL = r'https?://(?:www\.)?tnaflix\.com/[^/]+/(?P<display_id>[^/]+)/video(?P<id>\d+)' _TITLE_REGEX = r'<title>(.+?) - (?:TNAFlix Porn Videos|TNAFlix\.com)' - _DESCRIPTION_REGEX = r'(?s)>Description:]+>(.+?)<' - _UPLOADER_REGEX = r'\s*Verified Member\s*\s*(.+?)<' - _CATEGORIES_REGEX = r'(?s)]*>Categories:(.+?)' _TESTS = [{ # anonymous uploader, no categories 'url': 'http://www.tnaflix.com/porn-stars/Carmella-Decesare-striptease/video553878', - 'md5': 'ecf3498417d09216374fc5907f9c6ec0', + 'md5': '7e569419fe6d69543d01e6be22f5f7c4', 'info_dict': { 'id': '553878', 'display_id': 'Carmella-Decesare-striptease', @@ -228,7 +240,7 @@ class TNAFlixIE(TNAFlixNetworkBaseIE): 'duration': 164, 'age_limit': 18, 'uploader': 'bobwhite39', - 'categories': ['Amateur Porn', 'Squirting Videos', 'Teen Girls 18+'], + 'categories': list, } }, { 'url': 'https://www.tnaflix.com/amateur-porn/bunzHD-Ms.Donk/video358632', @@ -236,14 +248,15 @@ class TNAFlixIE(TNAFlixNetworkBaseIE): }] -class EMPFlixIE(TNAFlixNetworkBaseIE): - _VALID_URL = r'https?://(?:www\.)?empflix\.com/videos/(?P.+?)-(?P[0-9]+)\.html' +class EMPFlixIE(TNAEMPFlixBaseIE): + _VALID_URL = r'https?://(?:www\.)?empflix\.com/(?:videos/(?P.+?)-|[^/]+/(?P[^/]+)/video)(?P[0-9]+)' - _UPLOADER_REGEX = r']+class="infoTitle"[^>]*>Uploaded By:(.+?)' + _HOST = 'emp' + _VKEY_SUFFIX = '-1' _TESTS = [{ 'url': 'http://www.empflix.com/videos/Amateur-Finger-Fuck-33051.html', - 'md5': 'b1bc15b6412d33902d6e5952035fcabc', + 'md5': 'bc30d48b91a7179448a0bda465114676', 'info_dict': { 'id': '33051', 'display_id': 'Amateur-Finger-Fuck', @@ -259,6 +272,9 @@ class EMPFlixIE(TNAFlixNetworkBaseIE): }, { 'url': 'http://www.empflix.com/videos/[AROMA][ARMD-718]-Aoi-Yoshino-Sawa-25826.html', 'only_matching': True, + }, { + 'url': 'https://www.empflix.com/amateur-porn/Amateur-Finger-Fuck/video33051', + 'only_matching': True, }] diff --git a/youtube_dl/extractor/toutv.py b/youtube_dl/extractor/toutv.py index e59ed26..2e7876c 100644 --- a/youtube_dl/extractor/toutv.py +++ b/youtube_dl/extractor/toutv.py @@ -1,6 +1,8 @@ # coding: utf-8 from __future__ import unicode_literals +import re + from .common import InfoExtractor from ..utils import ( int_or_none, @@ -14,7 +16,7 @@ from ..utils import ( class TouTvIE(InfoExtractor): _NETRC_MACHINE = 'toutv' IE_NAME = 'tou.tv' - _VALID_URL = r'https?://ici\.tou\.tv/(?P[a-zA-Z0-9_-]+(?:/S[0-9]+E[0-9]+)?)' + _VALID_URL = r'https?://ici\.tou\.tv/(?P[a-zA-Z0-9_-]+(?:/S[0-9]+[EC][0-9]+)?)' _access_token = None _claims = None @@ -35,13 +37,16 @@ class TouTvIE(InfoExtractor): }, { 'url': 'http://ici.tou.tv/hackers', 'only_matching': True, + }, { + 'url': 'https://ici.tou.tv/l-age-adulte/S01C501', + 'only_matching': True, }] def _real_initialize(self): email, password = self._get_login_info() if email is None: return - state = 'http://ici.tou.tv//' + state = 'http://ici.tou.tv/' webpage = self._download_webpage(state, None, 'Downloading homepage') toutvlogin = self._parse_json(self._search_regex( r'(?s)toutvlogin\s*=\s*({.+?});', webpage, 'toutvlogin'), None, js_to_json) @@ -54,16 +59,30 @@ class TouTvIE(InfoExtractor): 'scope': 'media-drmt openid profile email id.write media-validation.read.privileged', 'state': state, }) - login_form = self._search_regex( - r'(?s)(]+(?:id|name)="Form-login".+?)', login_webpage, 'login form') - form_data = self._hidden_inputs(login_form) + + def extract_form_url_and_data(wp, default_form_url, form_spec_re=''): + form, form_elem = re.search( + r'(?s)((]+?%s[^>]*?>).+?)' % form_spec_re, wp).groups() + form_data = self._hidden_inputs(form) + form_url = extract_attributes(form_elem).get('action') or default_form_url + return form_url, form_data + + post_url, form_data = extract_form_url_and_data( + login_webpage, + 'https://services.radio-canada.ca/auth/oauth/v2/authorize/login', + r'(?:id|name)="Form-login"') form_data.update({ 'login-email': email, 'login-password': password, }) - post_url = extract_attributes(login_form).get('action') or authorize_url - _, urlh = self._download_webpage_handle( + consent_webpage = self._download_webpage( post_url, None, 'Logging in', data=urlencode_postdata(form_data)) + post_url, form_data = extract_form_url_and_data( + consent_webpage, + 'https://services.radio-canada.ca/auth/oauth/v2/authorize/consent') + _, urlh = self._download_webpage_handle( + post_url, None, 'Following Redirection', + data=urlencode_postdata(form_data)) self._access_token = self._search_regex( r'access_token=([\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12})', urlh.geturl(), 'access token') diff --git a/youtube_dl/extractor/turner.py b/youtube_dl/extractor/turner.py index efeb677..e73b64a 100644 --- a/youtube_dl/extractor/turner.py +++ b/youtube_dl/extractor/turner.py @@ -18,9 +18,32 @@ from ..utils import ( class TurnerBaseIE(AdobePassIE): + _AKAMAI_SPE_TOKEN_CACHE = {} + def _extract_timestamp(self, video_data): return int_or_none(xpath_attr(video_data, 'dateCreated', 'uts')) + def _add_akamai_spe_token(self, tokenizer_src, video_url, content_id, ap_data): + secure_path = self._search_regex(r'https?://[^/]+(.+/)', video_url, 'secure path') + '*' + token = self._AKAMAI_SPE_TOKEN_CACHE.get(secure_path) + if not token: + query = { + 'path': secure_path, + 'videoId': content_id, + } + if ap_data.get('auth_required'): + query['accessToken'] = self._extract_mvpd_auth(ap_data['url'], content_id, ap_data['site_name'], ap_data['site_name']) + auth = self._download_xml( + tokenizer_src, content_id, query=query) + error_msg = xpath_text(auth, 'error/msg') + if error_msg: + raise ExtractorError(error_msg, expected=True) + token = xpath_text(auth, 'token') + if not token: + return video_url + self._AKAMAI_SPE_TOKEN_CACHE[secure_path] = token + return video_url + '?hdnea=' + token + def _extract_cvp_info(self, data_src, video_id, path_data={}, ap_data={}): video_data = self._download_xml(data_src, video_id) video_id = video_data.attrib['id'] @@ -33,7 +56,6 @@ class TurnerBaseIE(AdobePassIE): # rtmp_src = splited_rtmp_src[1] # aifp = xpath_text(video_data, 'akamai/aifp', default='') - tokens = {} urls = [] formats = [] rex = re.compile( @@ -67,26 +89,10 @@ class TurnerBaseIE(AdobePassIE): secure_path_data = path_data.get('secure') if not secure_path_data: continue - video_url = secure_path_data['media_src'] + video_url - secure_path = self._search_regex(r'https?://[^/]+(.+/)', video_url, 'secure path') + '*' - token = tokens.get(secure_path) - if not token: - query = { - 'path': secure_path, - 'videoId': content_id, - } - if ap_data.get('auth_required'): - query['accessToken'] = self._extract_mvpd_auth(ap_data['url'], video_id, ap_data['site_name'], ap_data['site_name']) - auth = self._download_xml( - secure_path_data['tokenizer_src'], video_id, query=query) - error_msg = xpath_text(auth, 'error/msg') - if error_msg: - raise ExtractorError(error_msg, expected=True) - token = xpath_text(auth, 'token') - if not token: - continue - tokens[secure_path] = token - video_url = video_url + '?hdnea=' + token + video_url = self._add_akamai_spe_token( + secure_path_data['tokenizer_src'], + secure_path_data['media_src'] + video_url, + content_id, ap_data) elif not re.match('https?://', video_url): base_path_data = path_data.get(ext, path_data.get('default', {})) media_src = base_path_data.get('media_src') diff --git a/youtube_dl/extractor/tva.py b/youtube_dl/extractor/tva.py index b57abea..0b863df 100644 --- a/youtube_dl/extractor/tva.py +++ b/youtube_dl/extractor/tva.py @@ -32,6 +32,8 @@ class TVAIE(InfoExtractor): video_data = self._download_json( 'https://videos.tva.ca/proxy/item/_' + video_id, video_id, headers={ 'Accept': 'application/json', + }, query={ + 'appId': '5955fc5f23eec60006c951f1', }) def get_attribute(key): diff --git a/youtube_dl/extractor/tvnow.py b/youtube_dl/extractor/tvnow.py new file mode 100644 index 0000000..e2169f2 --- /dev/null +++ b/youtube_dl/extractor/tvnow.py @@ -0,0 +1,175 @@ +# coding: utf-8 +from __future__ import unicode_literals + +import re + +from .common import InfoExtractor +from ..compat import compat_str +from ..utils import ( + ExtractorError, + parse_iso8601, + parse_duration, + update_url_query, +) + + +class TVNowBaseIE(InfoExtractor): + _VIDEO_FIELDS = ( + 'id', 'title', 'free', 'geoblocked', 'articleLong', 'articleShort', + 'broadcastStartDate', 'isDrm', 'duration', 'manifest.dashclear', + 'format.defaultImage169Format', 'format.defaultImage169Logo') + + def _call_api(self, path, video_id, query): + return self._download_json( + 'https://api.tvnow.de/v3/' + path, + video_id, query=query) + + def _extract_video(self, info, display_id): + video_id = compat_str(info['id']) + title = info['title'] + + mpd_url = info['manifest']['dashclear'] + if not mpd_url: + if info.get('isDrm'): + raise ExtractorError( + 'Video %s is DRM protected' % video_id, expected=True) + if info.get('geoblocked'): + raise ExtractorError( + 'Video %s is not available from your location due to geo restriction' % video_id, + expected=True) + if not info.get('free', True): + raise ExtractorError( + 'Video %s is not available for free' % video_id, expected=True) + + mpd_url = update_url_query(mpd_url, {'filter': ''}) + formats = self._extract_mpd_formats(mpd_url, video_id, mpd_id='dash', fatal=False) + formats.extend(self._extract_ism_formats( + mpd_url.replace('dash.', 'hss.').replace('/.mpd', '/Manifest'), + video_id, ism_id='mss', fatal=False)) + formats.extend(self._extract_m3u8_formats( + mpd_url.replace('dash.', 'hls.').replace('/.mpd', '/.m3u8'), + video_id, 'mp4', 'm3u8_native', m3u8_id='hls', fatal=False)) + self._sort_formats(formats) + + description = info.get('articleLong') or info.get('articleShort') + timestamp = parse_iso8601(info.get('broadcastStartDate'), ' ') + duration = parse_duration(info.get('duration')) + + f = info.get('format', {}) + thumbnail = f.get('defaultImage169Format') or f.get('defaultImage169Logo') + + return { + 'id': video_id, + 'display_id': display_id, + 'title': title, + 'description': description, + 'thumbnail': thumbnail, + 'timestamp': timestamp, + 'duration': duration, + 'formats': formats, + } + + +class TVNowIE(TVNowBaseIE): + _VALID_URL = r'https?://(?:www\.)?tvnow\.(?:de|at|ch)/(?:rtl(?:2|plus)?|nitro|superrtl|ntv|vox)/(?P[^/]+)/(?:(?:list/[^/]+|jahr/\d{4}/\d{1,2})/)?(?P[^/]+)/(?:player|preview)' + + _TESTS = [{ + # rtl + 'url': 'https://www.tvnow.de/rtl/alarm-fuer-cobra-11/freier-fall/player?return=/rtl', + 'info_dict': { + 'id': '385314', + 'display_id': 'alarm-fuer-cobra-11/freier-fall', + 'ext': 'mp4', + 'title': 'Freier Fall', + 'description': 'md5:8c2d8f727261adf7e0dc18366124ca02', + 'thumbnail': r're:^https?://.*\.jpg$', + 'timestamp': 1512677700, + 'upload_date': '20171207', + 'duration': 2862.0, + }, + }, { + # rtl2 + 'url': 'https://www.tvnow.de/rtl2/armes-deutschland/episode-0008/player', + 'only_matching': 'True', + }, { + # rtlnitro + 'url': 'https://www.tvnow.de/nitro/alarm-fuer-cobra-11-die-autobahnpolizei/auf-eigene-faust-pilot/player', + 'only_matching': 'True', + }, { + # superrtl + 'url': 'https://www.tvnow.de/superrtl/die-lustigsten-schlamassel-der-welt/u-a-ketchup-effekt/player', + 'only_matching': 'True', + }, { + # ntv + 'url': 'https://www.tvnow.de/ntv/startup-news/goetter-in-weiss/player', + 'only_matching': 'True', + }, { + # vox + 'url': 'https://www.tvnow.de/vox/auto-mobil/neues-vom-automobilmarkt-2017-11-19-17-00-00/player', + 'only_matching': 'True', + }, { + # rtlplus + 'url': 'https://www.tvnow.de/rtlplus/op-ruft-dr-bruckner/die-vernaehte-frau/player', + 'only_matching': 'True', + }] + + def _real_extract(self, url): + display_id = '%s/%s' % re.match(self._VALID_URL, url).groups() + + info = self._call_api( + 'movies/' + display_id, display_id, query={ + 'fields': ','.join(self._VIDEO_FIELDS), + }) + + return self._extract_video(info, display_id) + + +class TVNowListIE(TVNowBaseIE): + _VALID_URL = r'(?Phttps?://(?:www\.)?tvnow\.(?:de|at|ch)/(?:rtl(?:2|plus)?|nitro|superrtl|ntv|vox)/(?P[^/]+)/)list/(?P[^?/#&]+)$' + + _SHOW_FIELDS = ('title', ) + _SEASON_FIELDS = ('id', 'headline', 'seoheadline', ) + _VIDEO_FIELDS = ('id', 'headline', 'seoUrl', ) + + _TESTS = [{ + 'url': 'https://www.tvnow.de/rtl/30-minuten-deutschland/list/aktuell', + 'info_dict': { + 'id': '28296', + 'title': '30 Minuten Deutschland - Aktuell', + }, + 'playlist_mincount': 1, + }] + + def _real_extract(self, url): + base_url, show_id, season_id = re.match(self._VALID_URL, url).groups() + + fields = [] + fields.extend(self._SHOW_FIELDS) + fields.extend('formatTabs.%s' % field for field in self._SEASON_FIELDS) + fields.extend( + 'formatTabs.formatTabPages.container.movies.%s' % field + for field in self._VIDEO_FIELDS) + + list_info = self._call_api( + 'formats/seo', season_id, query={ + 'fields': ','.join(fields), + 'name': show_id + '.php' + }) + + season = next( + season for season in list_info['formatTabs']['items'] + if season.get('seoheadline') == season_id) + + title = '%s - %s' % (list_info['title'], season['headline']) + + entries = [] + for container in season['formatTabPages']['items']: + for info in ((container.get('container') or {}).get('movies') or {}).get('items') or []: + seo_url = info.get('seoUrl') + if not seo_url: + continue + entries.append(self.url_result( + base_url + seo_url + '/player', 'TVNow', info.get('id'))) + + return self.playlist_result( + entries, compat_str(season.get('id') or season_id), title) diff --git a/youtube_dl/extractor/twentythreevideo.py b/youtube_dl/extractor/twentythreevideo.py new file mode 100644 index 0000000..aa0c6e9 --- /dev/null +++ b/youtube_dl/extractor/twentythreevideo.py @@ -0,0 +1,77 @@ +from __future__ import unicode_literals + +import re + +from .common import InfoExtractor +from ..utils import int_or_none + + +class TwentyThreeVideoIE(InfoExtractor): + IE_NAME = '23video' + _VALID_URL = r'https?://video\.(?Ptwentythree\.net|23video\.com|filmweb\.no)/v\.ihtml/player\.html\?(?P.*?\bphoto(?:_|%5f)id=(?P\d+).*)' + _TEST = { + 'url': 'https://video.twentythree.net/v.ihtml/player.html?showDescriptions=0&source=site&photo%5fid=20448876&autoPlay=1', + 'md5': '75fcf216303eb1dae9920d651f85ced4', + 'info_dict': { + 'id': '20448876', + 'ext': 'mp4', + 'title': 'Video Marketing Minute: Personalized Video', + 'timestamp': 1513855354, + 'upload_date': '20171221', + 'uploader_id': '12258964', + 'uploader': 'Rasmus Bysted', + } + } + + def _real_extract(self, url): + domain, query, photo_id = re.match(self._VALID_URL, url).groups() + base_url = 'https://video.%s' % domain + photo_data = self._download_json( + base_url + '/api/photo/list?' + query, photo_id, query={ + 'format': 'json', + }, transform_source=lambda s: self._search_regex(r'(?s)({.+})', s, 'photo data'))['photo'] + title = photo_data['title'] + + formats = [] + + audio_path = photo_data.get('audio_download') + if audio_path: + formats.append({ + 'format_id': 'audio', + 'url': base_url + audio_path, + 'filesize': int_or_none(photo_data.get('audio_size')), + 'vcodec': 'none', + }) + + def add_common_info_to_list(l, template, id_field, id_value): + f_base = template % id_value + f_path = photo_data.get(f_base + 'download') + if not f_path: + return + l.append({ + id_field: id_value, + 'url': base_url + f_path, + 'width': int_or_none(photo_data.get(f_base + 'width')), + 'height': int_or_none(photo_data.get(f_base + 'height')), + 'filesize': int_or_none(photo_data.get(f_base + 'size')), + }) + + for f in ('mobile_high', 'medium', 'hd', '1080p', '4k'): + add_common_info_to_list(formats, 'video_%s_', 'format_id', f) + + thumbnails = [] + for t in ('quad16', 'quad50', 'quad75', 'quad100', 'small', 'portrait', 'standard', 'medium', 'large', 'original'): + add_common_info_to_list(thumbnails, '%s_', 'id', t) + + return { + 'id': photo_id, + 'title': title, + 'timestamp': int_or_none(photo_data.get('creation_date_epoch')), + 'duration': int_or_none(photo_data.get('video_length')), + 'view_count': int_or_none(photo_data.get('view_count')), + 'comment_count': int_or_none(photo_data.get('number_of_comments')), + 'uploader_id': photo_data.get('user_id'), + 'uploader': photo_data.get('display_name'), + 'thumbnails': thumbnails, + 'formats': formats, + } diff --git a/youtube_dl/extractor/twitch.py b/youtube_dl/extractor/twitch.py index fefcd28..bf57eac 100644 --- a/youtube_dl/extractor/twitch.py +++ b/youtube_dl/extractor/twitch.py @@ -101,7 +101,7 @@ class TwitchBaseIE(InfoExtractor): fail(clean_html(login_page)) redirect_page, handle = login_step( - login_page, handle, 'Logging in as %s' % username, { + login_page, handle, 'Logging in', { 'username': username, 'password': password, }) diff --git a/youtube_dl/extractor/twitter.py b/youtube_dl/extractor/twitter.py index 1b0b963..d7e4250 100644 --- a/youtube_dl/extractor/twitter.py +++ b/youtube_dl/extractor/twitter.py @@ -43,7 +43,7 @@ class TwitterBaseIE(InfoExtractor): class TwitterCardIE(TwitterBaseIE): IE_NAME = 'twitter:card' - _VALID_URL = r'https?://(?:www\.)?twitter\.com/i/(?:cards/tfw/v1|videos(?:/tweet)?)/(?P\d+)' + _VALID_URL = r'https?://(?:www\.)?twitter\.com/i/(?Pcards/tfw/v1|videos(?:/tweet)?)/(?P\d+)' _TESTS = [ { 'url': 'https://twitter.com/i/cards/tfw/v1/560070183650213889', @@ -51,11 +51,10 @@ class TwitterCardIE(TwitterBaseIE): 'info_dict': { 'id': '560070183650213889', 'ext': 'mp4', - 'title': 'Twitter Card', + 'title': 'Twitter web player', 'thumbnail': r're:^https?://.*\.jpg$', 'duration': 30.033, }, - 'skip': 'Video gone', }, { 'url': 'https://twitter.com/i/cards/tfw/v1/623160978427936768', @@ -63,11 +62,9 @@ class TwitterCardIE(TwitterBaseIE): 'info_dict': { 'id': '623160978427936768', 'ext': 'mp4', - 'title': 'Twitter Card', - 'thumbnail': r're:^https?://.*\.jpg', - 'duration': 80.155, + 'title': 'Twitter web player', + 'thumbnail': r're:^https?://.*(?:\bformat=|\.)jpg', }, - 'skip': 'Video gone', }, { 'url': 'https://twitter.com/i/cards/tfw/v1/654001591733886977', @@ -120,15 +117,15 @@ class TwitterCardIE(TwitterBaseIE): elif media_url.endswith('.mpd'): formats.extend(self._extract_mpd_formats(media_url, video_id, mpd_id='dash')) else: - vbr = int_or_none(dict_get(media_variant, ('bitRate', 'bitrate')), scale=1000) + tbr = int_or_none(dict_get(media_variant, ('bitRate', 'bitrate')), scale=1000) a_format = { 'url': media_url, - 'format_id': 'http-%d' % vbr if vbr else 'http', - 'vbr': vbr, + 'format_id': 'http-%d' % tbr if tbr else 'http', + 'tbr': tbr, } # Reported bitRate may be zero - if not a_format['vbr']: - del a_format['vbr'] + if not a_format['tbr']: + del a_format['tbr'] self._search_dimensions_in_video_url(a_format, media_url) @@ -150,79 +147,83 @@ class TwitterCardIE(TwitterBaseIE): bearer_token = self._search_regex( r'BEARER_TOKEN\s*:\s*"([^"]+)"', main_script, 'bearer token') - guest_token = self._search_regex( - r'document\.cookie\s*=\s*decodeURIComponent\("gt=(\d+)', - webpage, 'guest token') + # https://developer.twitter.com/en/docs/tweets/post-and-engage/api-reference/get-statuses-show-id api_data = self._download_json( - 'https://api.twitter.com/2/timeline/conversation/%s.json' % video_id, - video_id, 'Downloading mobile API data', + 'https://api.twitter.com/1.1/statuses/show/%s.json' % video_id, + video_id, 'Downloading API data', headers={ 'Authorization': 'Bearer ' + bearer_token, - 'x-guest-token': guest_token, }) - media_info = try_get(api_data, lambda o: o['globalObjects']['tweets'][video_id] - ['extended_entities']['media'][0]['video_info']) or {} + media_info = try_get(api_data, lambda o: o['extended_entities']['media'][0]['video_info']) or {} return self._parse_media_info(media_info, video_id) def _real_extract(self, url): - video_id = self._match_id(url) + path, video_id = re.search(self._VALID_URL, url).groups() config = None formats = [] duration = None - webpage = self._download_webpage(url, video_id) + urls = [url] + if path.startswith('cards/'): + urls.append('https://twitter.com/i/videos/' + video_id) - iframe_url = self._html_search_regex( - r']+src="((?:https?:)?//(?:www\.youtube\.com/embed/[^"]+|(?:www\.)?vine\.co/v/\w+/card))"', - webpage, 'video iframe', default=None) - if iframe_url: - return self.url_result(iframe_url) + for u in urls: + webpage = self._download_webpage(u, video_id) - config = self._parse_json(self._html_search_regex( - r'data-(?:player-)?config="([^"]+)"', webpage, - 'data player config', default='{}'), - video_id) + iframe_url = self._html_search_regex( + r']+src="((?:https?:)?//(?:www\.youtube\.com/embed/[^"]+|(?:www\.)?vine\.co/v/\w+/card))"', + webpage, 'video iframe', default=None) + if iframe_url: + return self.url_result(iframe_url) - if config.get('source_type') == 'vine': - return self.url_result(config['player_url'], 'Vine') + config = self._parse_json(self._html_search_regex( + r'data-(?:player-)?config="([^"]+)"', webpage, + 'data player config', default='{}'), + video_id) - periscope_url = PeriscopeIE._extract_url(webpage) - if periscope_url: - return self.url_result(periscope_url, PeriscopeIE.ie_key()) + if config.get('source_type') == 'vine': + return self.url_result(config['player_url'], 'Vine') - video_url = config.get('video_url') or config.get('playlist', [{}])[0].get('source') + periscope_url = PeriscopeIE._extract_url(webpage) + if periscope_url: + return self.url_result(periscope_url, PeriscopeIE.ie_key()) - if video_url: - if determine_ext(video_url) == 'm3u8': - formats.extend(self._extract_m3u8_formats(video_url, video_id, ext='mp4', m3u8_id='hls')) - else: - f = { - 'url': video_url, - } + video_url = config.get('video_url') or config.get('playlist', [{}])[0].get('source') + + if video_url: + if determine_ext(video_url) == 'm3u8': + formats.extend(self._extract_m3u8_formats(video_url, video_id, ext='mp4', m3u8_id='hls')) + else: + f = { + 'url': video_url, + } + + self._search_dimensions_in_video_url(f, video_url) - self._search_dimensions_in_video_url(f, video_url) + formats.append(f) - formats.append(f) + vmap_url = config.get('vmapUrl') or config.get('vmap_url') + if vmap_url: + formats.extend( + self._extract_formats_from_vmap_url(vmap_url, video_id)) - vmap_url = config.get('vmapUrl') or config.get('vmap_url') - if vmap_url: - formats.extend( - self._extract_formats_from_vmap_url(vmap_url, video_id)) + media_info = None - media_info = None + for entity in config.get('status', {}).get('entities', []): + if 'mediaInfo' in entity: + media_info = entity['mediaInfo'] - for entity in config.get('status', {}).get('entities', []): - if 'mediaInfo' in entity: - media_info = entity['mediaInfo'] + if media_info: + formats.extend(self._parse_media_info(media_info, video_id)) + duration = float_or_none(media_info.get('duration', {}).get('nanos'), scale=1e9) - if media_info: - formats.extend(self._parse_media_info(media_info, video_id)) - duration = float_or_none(media_info.get('duration', {}).get('nanos'), scale=1e9) + username = config.get('user', {}).get('screen_name') + if username: + formats.extend(self._extract_mobile_formats(username, video_id)) - username = config.get('user', {}).get('screen_name') - if username: - formats.extend(self._extract_mobile_formats(username, video_id)) + if formats: + break self._remove_duplicate_formats(formats) self._sort_formats(formats) @@ -258,9 +259,6 @@ class TwitterIE(InfoExtractor): 'uploader_id': 'freethenipple', 'duration': 12.922, }, - 'params': { - 'skip_download': True, # requires ffmpeg - }, }, { 'url': 'https://twitter.com/giphz/status/657991469417025536/photo/1', 'md5': 'f36dcd5fb92bf7057f155e7d927eeb42', @@ -277,7 +275,6 @@ class TwitterIE(InfoExtractor): 'skip': 'Account suspended', }, { 'url': 'https://twitter.com/starwars/status/665052190608723968', - 'md5': '39b7199856dee6cd4432e72c74bc69d4', 'info_dict': { 'id': '665052190608723968', 'ext': 'mp4', @@ -303,20 +300,16 @@ class TwitterIE(InfoExtractor): }, }, { 'url': 'https://twitter.com/jaydingeer/status/700207533655363584', - 'md5': '', 'info_dict': { 'id': '700207533655363584', 'ext': 'mp4', - 'title': 'あかさ - BEAT PROD: @suhmeduh #Damndaniel', - 'description': 'あかさ on Twitter: "BEAT PROD: @suhmeduh https://t.co/HBrQ4AfpvZ #Damndaniel https://t.co/byBooq2ejZ"', + 'title': 'JG - BEAT PROD: @suhmeduh #Damndaniel', + 'description': 'JG on Twitter: "BEAT PROD: @suhmeduh https://t.co/HBrQ4AfpvZ #Damndaniel https://t.co/byBooq2ejZ"', 'thumbnail': r're:^https?://.*\.jpg', - 'uploader': 'あかさ', + 'uploader': 'JG', 'uploader_id': 'jaydingeer', 'duration': 30.0, }, - 'params': { - 'skip_download': True, # requires ffmpeg - }, }, { 'url': 'https://twitter.com/Filmdrunk/status/713801302971588609', 'md5': '89a15ed345d13b86e9a5a5e051fa308a', @@ -342,9 +335,6 @@ class TwitterIE(InfoExtractor): 'uploader': 'Captain America', 'duration': 3.17, }, - 'params': { - 'skip_download': True, # requires ffmpeg - }, }, { 'url': 'https://twitter.com/OPP_HSD/status/779210622571536384', 'info_dict': { @@ -370,9 +360,6 @@ class TwitterIE(InfoExtractor): 'uploader_id': 'news_al3alm', 'duration': 277.4, }, - 'params': { - 'format': 'best[format_id^=http-]', - }, }, { 'url': 'https://twitter.com/i/web/status/910031516746514432', 'info_dict': { diff --git a/youtube_dl/extractor/udemy.py b/youtube_dl/extractor/udemy.py index 207c4a6..195f5ce 100644 --- a/youtube_dl/extractor/udemy.py +++ b/youtube_dl/extractor/udemy.py @@ -62,11 +62,11 @@ class UdemyIE(InfoExtractor): def _extract_course_info(self, webpage, video_id): course = self._parse_json( unescapeHTML(self._search_regex( - r'ng-init=["\'].*\bcourse=({.+?});', webpage, 'course', default='{}')), + r'ng-init=["\'].*\bcourse=({.+?})[;"\']', + webpage, 'course', default='{}')), video_id, fatal=False) or {} course_id = course.get('id') or self._search_regex( - (r'"id"\s*:\s*(\d+)', r'data-course-id=["\'](\d+)'), - webpage, 'course id') + r'data-course-id=["\'](\d+)', webpage, 'course id') return course_id, course.get('title') def _enroll_course(self, base_url, webpage, course_id): @@ -164,7 +164,7 @@ class UdemyIE(InfoExtractor): }) response = self._download_webpage( - self._LOGIN_URL, None, 'Logging in as %s' % username, + self._LOGIN_URL, None, 'Logging in', data=urlencode_postdata(login_form), headers={ 'Referer': self._ORIGIN_URL, @@ -257,6 +257,11 @@ class UdemyIE(InfoExtractor): video_url = source.get('file') or source.get('src') if not video_url or not isinstance(video_url, compat_str): continue + if source.get('type') == 'application/x-mpegURL' or determine_ext(video_url) == 'm3u8': + formats.extend(self._extract_m3u8_formats( + video_url, video_id, 'mp4', entry_protocol='m3u8_native', + m3u8_id='hls', fatal=False)) + continue format_id = source.get('label') f = { 'url': video_url, diff --git a/youtube_dl/extractor/ufctv.py b/youtube_dl/extractor/ufctv.py new file mode 100644 index 0000000..ab82381 --- /dev/null +++ b/youtube_dl/extractor/ufctv.py @@ -0,0 +1,55 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import ( + parse_duration, + parse_iso8601, +) + + +class UFCTVIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?ufc\.tv/video/(?P[^/]+)' + _TEST = { + 'url': 'https://www.ufc.tv/video/ufc-219-countdown-full-episode', + 'info_dict': { + 'id': '34167', + 'ext': 'mp4', + 'title': 'UFC 219 Countdown: Full Episode', + 'description': 'md5:26d4e8bf4665ae5878842d7050c3c646', + 'timestamp': 1513962360, + 'upload_date': '20171222', + }, + 'params': { + # m3u8 download + 'skip_download': True, + } + } + + def _real_extract(self, url): + display_id = self._match_id(url) + video_data = self._download_json(url, display_id, query={ + 'format': 'json', + }) + video_id = str(video_data['id']) + title = video_data['name'] + m3u8_url = self._download_json( + 'https://www.ufc.tv/service/publishpoint', video_id, query={ + 'type': 'video', + 'format': 'json', + 'id': video_id, + }, headers={ + 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0_1 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A402 Safari/604.1', + })['path'] + m3u8_url = m3u8_url.replace('_iphone.', '.') + formats = self._extract_m3u8_formats(m3u8_url, video_id, 'mp4') + self._sort_formats(formats) + + return { + 'id': video_id, + 'title': title, + 'description': video_data.get('description'), + 'duration': parse_duration(video_data.get('runtime')), + 'timestamp': parse_iso8601(video_data.get('releaseDate')), + 'formats': formats, + } diff --git a/youtube_dl/extractor/umg.py b/youtube_dl/extractor/umg.py new file mode 100644 index 0000000..d815cd9 --- /dev/null +++ b/youtube_dl/extractor/umg.py @@ -0,0 +1,103 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor +from ..utils import ( + int_or_none, + parse_filesize, + parse_iso8601, +) + + +class UMGDeIE(InfoExtractor): + IE_NAME = 'umg:de' + IE_DESC = 'Universal Music Deutschland' + _VALID_URL = r'https?://(?:www\.)?universal-music\.de/[^/]+/videos/[^/?#]+-(?P\d+)' + _TEST = { + 'url': 'https://www.universal-music.de/sido/videos/jedes-wort-ist-gold-wert-457803', + 'md5': 'ebd90f48c80dcc82f77251eb1902634f', + 'info_dict': { + 'id': '457803', + 'ext': 'mp4', + 'title': 'Jedes Wort ist Gold wert', + 'timestamp': 1513591800, + 'upload_date': '20171218', + } + } + + def _real_extract(self, url): + video_id = self._match_id(url) + video_data = self._download_json( + 'https://api.universal-music.de/graphql', + video_id, query={ + 'query': '''{ + universalMusic(channel:16) { + video(id:%s) { + headline + formats { + formatId + url + type + width + height + mimeType + fileSize + } + duration + createdDate + } + } +}''' % video_id})['data']['universalMusic']['video'] + + title = video_data['headline'] + hls_url_template = 'http://mediadelivery.universal-music-services.de/vod/mp4:autofill/storage/' + '/'.join(list(video_id)) + '/content/%s/file/playlist.m3u8' + + thumbnails = [] + formats = [] + + def add_m3u8_format(format_id): + m3u8_formats = self._extract_m3u8_formats( + hls_url_template % format_id, video_id, 'mp4', + 'm3u8_native', m3u8_id='hls', fatal='False') + if m3u8_formats and m3u8_formats[0].get('height'): + formats.extend(m3u8_formats) + + for f in video_data.get('formats', []): + f_url = f.get('url') + mime_type = f.get('mimeType') + if not f_url or mime_type == 'application/mxf': + continue + fmt = { + 'url': f_url, + 'width': int_or_none(f.get('width')), + 'height': int_or_none(f.get('height')), + 'filesize': parse_filesize(f.get('fileSize')), + } + f_type = f.get('type') + if f_type == 'Image': + thumbnails.append(fmt) + elif f_type == 'Video': + format_id = f.get('formatId') + if format_id: + fmt['format_id'] = format_id + if mime_type == 'video/mp4': + add_m3u8_format(format_id) + urlh = self._request_webpage(f_url, video_id, fatal=False) + if urlh: + first_byte = urlh.read(1) + if first_byte not in (b'F', b'\x00'): + continue + formats.append(fmt) + if not formats: + for format_id in (867, 836, 940): + add_m3u8_format(format_id) + self._sort_formats(formats, ('width', 'height', 'filesize', 'tbr')) + + return { + 'id': video_id, + 'title': title, + 'duration': int_or_none(video_data.get('duration')), + 'timestamp': parse_iso8601(video_data.get('createdDate'), ' '), + 'thumbnails': thumbnails, + 'formats': formats, + } diff --git a/youtube_dl/extractor/vidzi.py b/youtube_dl/extractor/vidzi.py index e64873b..ac35d55 100644 --- a/youtube_dl/extractor/vidzi.py +++ b/youtube_dl/extractor/vidzi.py @@ -28,10 +28,10 @@ class VidziIE(InfoExtractor): }, }, { 'url': 'http://vidzi.tv/embed-4z2yb0rzphe9-600x338.html', - 'skip_download': True, + 'only_matching': True, }, { 'url': 'http://vidzi.cc/cghql9yq6emu.html', - 'skip_download': True, + 'only_matching': True, }] def _real_extract(self, url): diff --git a/youtube_dl/extractor/viki.py b/youtube_dl/extractor/viki.py index 853e5c7..ad2a2a4 100644 --- a/youtube_dl/extractor/viki.py +++ b/youtube_dl/extractor/viki.py @@ -99,7 +99,7 @@ class VikiBaseIE(InfoExtractor): login = self._call_api( 'sessions.json', None, - 'Logging in as %s' % username, post_data=login_form) + 'Logging in', post_data=login_form) self._token = login.get('token') if not self._token: diff --git a/youtube_dl/extractor/vimeo.py b/youtube_dl/extractor/vimeo.py index cedb548..6af7056 100644 --- a/youtube_dl/extractor/vimeo.py +++ b/youtube_dl/extractor/vimeo.py @@ -468,11 +468,12 @@ class VimeoIE(VimeoBaseInfoExtractor): request = sanitized_Request(url, headers=headers) try: webpage, urlh = self._download_webpage_handle(request, video_id) + redirect_url = compat_str(urlh.geturl()) # Some URLs redirect to ondemand can't be extracted with # this extractor right away thus should be passed through # ondemand extractor (e.g. https://vimeo.com/73445910) - if VimeoOndemandIE.suitable(urlh.geturl()): - return self.url_result(urlh.geturl(), VimeoOndemandIE.ie_key()) + if VimeoOndemandIE.suitable(redirect_url): + return self.url_result(redirect_url, VimeoOndemandIE.ie_key()) except ExtractorError as ee: if isinstance(ee.cause, compat_HTTPError) and ee.cause.code == 403: errmsg = ee.cause.read() @@ -541,15 +542,15 @@ class VimeoIE(VimeoBaseInfoExtractor): if re.search(r']+?id="pw_form"', webpage) is not None: if '_video_password_verified' in data: raise ExtractorError('video password verification failed!') - self._verify_video_password(url, video_id, webpage) + self._verify_video_password(redirect_url, video_id, webpage) return self._real_extract( - smuggle_url(url, {'_video_password_verified': 'verified'})) + smuggle_url(redirect_url, {'_video_password_verified': 'verified'})) else: raise ExtractorError('Unable to extract info section', cause=e) else: if config.get('view') == 4: - config = self._verify_player_video_password(url, video_id) + config = self._verify_player_video_password(redirect_url, video_id) def is_rented(): if '>You rented this title.<' in webpage: diff --git a/youtube_dl/extractor/vk.py b/youtube_dl/extractor/vk.py index 105e172..d4838b3 100644 --- a/youtube_dl/extractor/vk.py +++ b/youtube_dl/extractor/vk.py @@ -67,7 +67,7 @@ class VKBaseIE(InfoExtractor): login_page = self._download_webpage( 'https://login.vk.com/?act=login', None, - note='Logging in as %s' % username, + note='Logging in', data=urlencode_postdata(login_form)) if re.search(r'onLoginFailed', login_page): @@ -414,7 +414,7 @@ class VKIE(VKBaseIE): view_count = str_to_int(self._search_regex( r'class=["\']mv_views_count[^>]+>\s*([\d,.]+)', - info_page, 'view count', fatal=False)) + info_page, 'view count', default=None)) formats = [] for format_id, format_url in data.items(): diff --git a/youtube_dl/extractor/voot.py b/youtube_dl/extractor/voot.py index 5de3deb..751b21e 100644 --- a/youtube_dl/extractor/voot.py +++ b/youtube_dl/extractor/voot.py @@ -2,7 +2,6 @@ from __future__ import unicode_literals from .common import InfoExtractor -from .kaltura import KalturaIE from ..utils import ( ExtractorError, int_or_none, @@ -21,7 +20,6 @@ class VootIE(InfoExtractor): 'ext': 'mp4', 'title': 'Ishq Ka Rang Safed - Season 01 - Episode 340', 'description': 'md5:06291fbbbc4dcbe21235c40c262507c1', - 'uploader_id': 'batchUser', 'timestamp': 1472162937, 'upload_date': '20160825', 'duration': 1146, @@ -63,6 +61,10 @@ class VootIE(InfoExtractor): entry_id = media['EntryId'] title = media['MediaName'] + formats = self._extract_m3u8_formats( + 'https://cdnapisec.kaltura.com/p/1982551/playManifest/pt/https/f/applehttp/t/web/e/' + entry_id, + video_id, 'mp4', m3u8_id='hls') + self._sort_formats(formats) description, series, season_number, episode, episode_number = [None] * 5 @@ -82,9 +84,8 @@ class VootIE(InfoExtractor): episode_number = int_or_none(value) return { - '_type': 'url_transparent', - 'url': 'kaltura:1982551:%s' % entry_id, - 'ie_key': KalturaIE.ie_key(), + 'extractor_key': 'Kaltura', + 'id': entry_id, 'title': title, 'description': description, 'series': series, @@ -95,4 +96,5 @@ class VootIE(InfoExtractor): 'duration': int_or_none(media.get('Duration')), 'view_count': int_or_none(media.get('ViewCounter')), 'like_count': int_or_none(media.get('like_counter')), + 'formats': formats, } diff --git a/youtube_dl/extractor/vshare.py b/youtube_dl/extractor/vshare.py index 5addbc2..e4ec778 100644 --- a/youtube_dl/extractor/vshare.py +++ b/youtube_dl/extractor/vshare.py @@ -1,14 +1,21 @@ # coding: utf-8 from __future__ import unicode_literals +import re + from .common import InfoExtractor +from ..compat import compat_chr +from ..utils import ( + decode_packed_codes, + ExtractorError, +) class VShareIE(InfoExtractor): _VALID_URL = r'https?://(?:www\.)?vshare\.io/[dv]/(?P[^/?#&]+)' _TESTS = [{ 'url': 'https://vshare.io/d/0f64ce6', - 'md5': '16d7b8fef58846db47419199ff1ab3e7', + 'md5': '17b39f55b5497ae8b59f5fbce8e35886', 'info_dict': { 'id': '0f64ce6', 'title': 'vl14062007715967', @@ -19,20 +26,49 @@ class VShareIE(InfoExtractor): 'only_matching': True, }] + @staticmethod + def _extract_urls(webpage): + return re.findall( + r']+?src=["\'](?P(?:https?:)?//(?:www\.)?vshare\.io/v/[^/?#&]+)', + webpage) + + def _extract_packed(self, webpage): + packed = self._search_regex( + r'(eval\(function.+)', webpage, 'packed code') + unpacked = decode_packed_codes(packed) + digits = self._search_regex(r'\[((?:\d+,?)+)\]', unpacked, 'digits') + digits = [int(digit) for digit in digits.split(',')] + key_digit = self._search_regex( + r'fromCharCode\(.+?(\d+)\)}', unpacked, 'key digit') + chars = [compat_chr(d - int(key_digit)) for d in digits] + return ''.join(chars) + def _real_extract(self, url): video_id = self._match_id(url) webpage = self._download_webpage( - 'https://vshare.io/d/%s' % video_id, video_id) + 'https://vshare.io/v/%s/width-650/height-430/1' % video_id, + video_id) title = self._html_search_regex( - r'(?s)
    (.+?)
    ', webpage, 'title') - video_url = self._search_regex( - r']+href=(["\'])(?P(?:https?:)?//.+?)\1[^>]*>[Cc]lick\s+here', - webpage, 'video url', group='url') + r'([^<]+)', webpage, 'title') + title = title.split(' - ')[0] + + error = self._html_search_regex( + r'(?s)]+\bclass=["\']xxx-error[^>]+>(.+?)%s' % self._extract_packed(webpage), + video_id)[0] + + self._sort_formats(info['formats']) + + info.update({ 'id': video_id, 'title': title, - 'url': video_url, - } + }) + + return info diff --git a/youtube_dl/extractor/vvvvid.py b/youtube_dl/extractor/vvvvid.py index 656a4b9..3d0dc40 100644 --- a/youtube_dl/extractor/vvvvid.py +++ b/youtube_dl/extractor/vvvvid.py @@ -22,6 +22,9 @@ class VVVVIDIE(InfoExtractor): 'ext': 'mp4', 'title': 'Ping Pong', }, + 'params': { + 'skip_download': True, + }, }, { # video_type == 'video/rcs' 'url': 'https://www.vvvvid.it/#!show/376/death-note-live-action/377/482493/episodio-01', @@ -31,6 +34,9 @@ class VVVVIDIE(InfoExtractor): 'ext': 'mp4', 'title': 'Episodio 01', }, + 'params': { + 'skip_download': True, + }, }] _conn_id = None @@ -116,8 +122,20 @@ class VVVVIDIE(InfoExtractor): embed_code = ds(embed_code) video_type = video_data.get('video_type') if video_type in ('video/rcs', 'video/kenc'): - formats.extend(self._extract_akamai_formats( - embed_code, video_id)) + embed_code = re.sub(r'https?://([^/]+)/z/', r'https://\1/i/', embed_code).replace('/manifest.f4m', '/master.m3u8') + if video_type == 'video/kenc': + kenc = self._download_json( + 'https://www.vvvvid.it/kenc', video_id, query={ + 'action': 'kt', + 'conn_id': self._conn_id, + 'url': embed_code, + }, fatal=False) or {} + kenc_message = kenc.get('message') + if kenc_message: + embed_code += '?' + ds(kenc_message) + formats.extend(self._extract_m3u8_formats( + embed_code, video_id, 'mp4', + m3u8_id='hls', fatal=False)) else: formats.extend(self._extract_wowza_formats( 'http://sb.top-ix.org/videomg/_definst_/mp4:%s/playlist.m3u8' % embed_code, video_id)) diff --git a/youtube_dl/extractor/wsj.py b/youtube_dl/extractor/wsj.py index 9b54877..67236f3 100644 --- a/youtube_dl/extractor/wsj.py +++ b/youtube_dl/extractor/wsj.py @@ -13,7 +13,7 @@ class WSJIE(InfoExtractor): _VALID_URL = r'''(?x) (?: https?://video-api\.wsj\.com/api-video/player/iframe\.html\?.*?\bguid=| - https?://(?:www\.)?(?:wsj|barrons)\.com/video/[^/]+/| + https?://(?:www\.)?(?:wsj|barrons)\.com/video/(?:[^/]+/)+| wsj: ) (?P[a-fA-F0-9-]{36}) @@ -38,6 +38,9 @@ class WSJIE(InfoExtractor): }, { 'url': 'http://www.barrons.com/video/capitalism-deserves-more-respect-from-millennials/F301217E-6F46-43AE-B8D2-B7180D642EE9.html', 'only_matching': True, + }, { + 'url': 'https://www.wsj.com/video/series/a-brief-history-of/the-modern-cell-carrier-how-we-got-here/980E2187-401D-48A1-B82B-1486CEE06CB9', + 'only_matching': True, }] def _real_extract(self, url): diff --git a/youtube_dl/extractor/xhamster.py b/youtube_dl/extractor/xhamster.py index be3624e..68652a2 100644 --- a/youtube_dl/extractor/xhamster.py +++ b/youtube_dl/extractor/xhamster.py @@ -6,10 +6,12 @@ from .common import InfoExtractor from ..compat import compat_str from ..utils import ( clean_html, + determine_ext, dict_get, ExtractorError, int_or_none, parse_duration, + try_get, unified_strdate, ) @@ -32,6 +34,7 @@ class XHamsterIE(InfoExtractor): 'display_id': 'femaleagent_shy_beauty_takes_the_bait', 'ext': 'mp4', 'title': 'FemaleAgent Shy beauty takes the bait', + 'timestamp': 1350194821, 'upload_date': '20121014', 'uploader': 'Ruseful2011', 'duration': 893, @@ -45,6 +48,7 @@ class XHamsterIE(InfoExtractor): 'display_id': 'britney_spears_sexy_booty', 'ext': 'mp4', 'title': 'Britney Spears Sexy Booty', + 'timestamp': 1379123460, 'upload_date': '20130914', 'uploader': 'jojo747400', 'duration': 200, @@ -61,6 +65,7 @@ class XHamsterIE(InfoExtractor): 'id': '5667973', 'ext': 'mp4', 'title': '....', + 'timestamp': 1454948101, 'upload_date': '20160208', 'uploader': 'parejafree', 'duration': 72, @@ -70,6 +75,10 @@ class XHamsterIE(InfoExtractor): 'params': { 'skip_download': True, }, + }, { + # mobile site + 'url': 'https://m.xhamster.com/videos/cute-teen-jacqueline-solo-masturbation-8559111', + 'only_matching': True, }, { 'url': 'https://xhamster.com/movies/2272726/amber_slayed_by_the_knight.html', 'only_matching': True, @@ -88,7 +97,8 @@ class XHamsterIE(InfoExtractor): video_id = mobj.group('id') or mobj.group('id_2') display_id = mobj.group('display_id') or mobj.group('display_id_2') - webpage = self._download_webpage(url, video_id) + desktop_url = re.sub(r'^(https?://(?:.+?\.)?)m\.', r'\1', url) + webpage = self._download_webpage(desktop_url, video_id) error = self._html_search_regex( r']+id=["\']videoClosed["\'][^>]*>(.+?)
    ', @@ -96,6 +106,83 @@ class XHamsterIE(InfoExtractor): if error: raise ExtractorError(error, expected=True) + age_limit = self._rta_search(webpage) + + def get_height(s): + return int_or_none(self._search_regex( + r'^(\d+)[pP]', s, 'height', default=None)) + + initials = self._parse_json( + self._search_regex( + r'window\.initials\s*=\s*({.+?})\s*;\s*\n', webpage, 'initials', + default='{}'), + video_id, fatal=False) + if initials: + video = initials['videoModel'] + title = video['title'] + formats = [] + for format_id, formats_dict in video['sources'].items(): + if not isinstance(formats_dict, dict): + continue + for quality, format_item in formats_dict.items(): + if format_id == 'download': + # Download link takes some time to be generated, + # skipping for now + continue + if not isinstance(format_item, dict): + continue + format_url = format_item.get('link') + filesize = int_or_none( + format_item.get('size'), invscale=1000000) + else: + format_url = format_item + filesize = None + if not isinstance(format_url, compat_str): + continue + formats.append({ + 'format_id': '%s-%s' % (format_id, quality), + 'url': format_url, + 'ext': determine_ext(format_url, 'mp4'), + 'height': get_height(quality), + 'filesize': filesize, + }) + self._sort_formats(formats) + + categories_list = video.get('categories') + if isinstance(categories_list, list): + categories = [] + for c in categories_list: + if not isinstance(c, dict): + continue + c_name = c.get('name') + if isinstance(c_name, compat_str): + categories.append(c_name) + else: + categories = None + + return { + 'id': video_id, + 'display_id': display_id, + 'title': title, + 'description': video.get('description'), + 'timestamp': int_or_none(video.get('created')), + 'uploader': try_get( + video, lambda x: x['author']['name'], compat_str), + 'thumbnail': video.get('thumbURL'), + 'duration': int_or_none(video.get('duration')), + 'view_count': int_or_none(video.get('views')), + 'like_count': int_or_none(try_get( + video, lambda x: x['rating']['likes'], int)), + 'dislike_count': int_or_none(try_get( + video, lambda x: x['rating']['dislikes'], int)), + 'comment_count': int_or_none(video.get('views')), + 'age_limit': age_limit, + 'categories': categories, + 'formats': formats, + } + + # Old layout fallback + title = self._html_search_regex( [r']*>([^<]+)', r']+itemprop=".*?caption.*?"[^>]+content="(.+?)"', @@ -119,8 +206,7 @@ class XHamsterIE(InfoExtractor): formats.append({ 'format_id': format_id, 'url': format_url, - 'height': int_or_none(self._search_regex( - r'^(\d+)[pP]', format_id, 'height', default=None)) + 'height': get_height(format_id), }) video_url = self._search_regex( @@ -148,8 +234,8 @@ class XHamsterIE(InfoExtractor): webpage, 'uploader', default='anonymous') thumbnail = self._search_regex( - [r'''thumb\s*:\s*(?P["'])(?P.+?)(?P=q)''', - r''']+poster=(?P["'])(?P.+?)(?P=q)[^>]*>'''], + [r'''["']thumbUrl["']\s*:\s*(?P["'])(?P.+?)(?P=q)''', + r''']+"poster"=(?P["'])(?P.+?)(?P=q)[^>]*>'''], webpage, 'thumbnail', fatal=False, group='thumbnail') duration = parse_duration(self._search_regex( @@ -167,8 +253,6 @@ class XHamsterIE(InfoExtractor): mobj = re.search(r'Comments \((?P\d+)\)', webpage) comment_count = mobj.group('commentcount') if mobj else 0 - age_limit = self._rta_search(webpage) - categories_html = self._search_regex( r'(?s)Categories:.+?)', webpage, 'categories', default=None) @@ -195,15 +279,16 @@ class XHamsterIE(InfoExtractor): class XHamsterEmbedIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?xhamster\.com/xembed\.php\?video=(?P\d+)' + _VALID_URL = r'https?://(?:.+?\.)?xhamster\.com/xembed\.php\?video=(?P\d+)' _TEST = { 'url': 'http://xhamster.com/xembed.php?video=3328539', 'info_dict': { 'id': '3328539', 'ext': 'mp4', 'title': 'Pen Masturbation', + 'timestamp': 1406581861, 'upload_date': '20140728', - 'uploader_id': 'anonymous', + 'uploader': 'ManyakisArt', 'duration': 5, 'age_limit': 18, } diff --git a/youtube_dl/extractor/xiami.py b/youtube_dl/extractor/xiami.py index d017e03..7f871c8 100644 --- a/youtube_dl/extractor/xiami.py +++ b/youtube_dl/extractor/xiami.py @@ -40,9 +40,12 @@ class XiamiBaseIE(InfoExtractor): 'subtitles': subtitles, } - def _extract_tracks(self, item_id, typ=None): + def _extract_tracks(self, item_id, referer, typ=None): playlist = self._download_json( - '%s/%s%s' % (self._API_BASE_URL, item_id, '/type/%s' % typ if typ else ''), item_id) + '%s/%s%s' % (self._API_BASE_URL, item_id, '/type/%s' % typ if typ else ''), + item_id, headers={ + 'Referer': referer, + }) return [ self._extract_track(track, item_id) for track in playlist['data']['trackList']] @@ -135,13 +138,13 @@ class XiamiSongIE(XiamiBaseIE): }] def _real_extract(self, url): - return self._extract_tracks(self._match_id(url))[0] + return self._extract_tracks(self._match_id(url), url)[0] class XiamiPlaylistBaseIE(XiamiBaseIE): def _real_extract(self, url): item_id = self._match_id(url) - return self.playlist_result(self._extract_tracks(item_id, self._TYPE), item_id) + return self.playlist_result(self._extract_tracks(item_id, url, self._TYPE), item_id) class XiamiAlbumIE(XiamiPlaylistBaseIE): diff --git a/youtube_dl/extractor/youku.py b/youtube_dl/extractor/youku.py index 0c4bc2e..c7947d4 100644 --- a/youtube_dl/extractor/youku.py +++ b/youtube_dl/extractor/youku.py @@ -154,7 +154,7 @@ class YoukuIE(InfoExtractor): # request basic data basic_data_params = { 'vid': video_id, - 'ccode': '0402' if 'tudou.com' in url else '0401', + 'ccode': '0507', 'client_ip': '192.168.1.1', 'utid': cna, 'client_ts': time.time() / 1000, @@ -240,7 +240,11 @@ class YoukuShowIE(InfoExtractor): }, { # Ongoing playlist. The initial page is the last one 'url': 'http://list.youku.com/show/id_za7c275ecd7b411e1a19e.html', - 'only_matchine': True, + 'only_matching': True, + }, { + # No data-id value. + 'url': 'http://list.youku.com/show/id_zefbfbd61237fefbfbdef.html', + 'only_matching': True, }] def _extract_entries(self, playlist_data_url, show_id, note, query): @@ -276,9 +280,9 @@ class YoukuShowIE(InfoExtractor): r']+id="(reload_\d+)', first_page, 'first page reload id') # The first reload_id has the same items as first_page reload_ids = re.findall(']+data-id="([^"]+)">', first_page) + entries.extend(initial_entries) for idx, reload_id in enumerate(reload_ids): if reload_id == first_page_reload_id: - entries.extend(initial_entries) continue _, new_entries = self._extract_entries( 'http://list.youku.com/show/episode', show_id, diff --git a/youtube_dl/extractor/youtube.py b/youtube_dl/extractor/youtube.py index 9943ddd..0919bef 100644 --- a/youtube_dl/extractor/youtube.py +++ b/youtube_dl/extractor/youtube.py @@ -2270,6 +2270,19 @@ class YoutubePlaylistIE(YoutubePlaylistBaseInfoExtractor): r'(?s)

    ]*>\s*(.*?)\s*

    ', page, 'title', default=None) + _UPLOADER_BASE = r'class=["\']pl-header-details[^>]+>\s*
  1. \s*]+\bhref=' + uploader = self._search_regex( + r'%s["\']/(?:user|channel)/[^>]+>([^<]+)' % _UPLOADER_BASE, + page, 'uploader', default=None) + mobj = re.search( + r'%s(["\'])(?P/(?:user|channel)/(?P.+?))\1' % _UPLOADER_BASE, + page) + if mobj: + uploader_id = mobj.group('uploader_id') + uploader_url = compat_urlparse.urljoin(url, mobj.group('path')) + else: + uploader_id = uploader_url = None + has_videos = True if not playlist_title: @@ -2280,8 +2293,15 @@ class YoutubePlaylistIE(YoutubePlaylistBaseInfoExtractor): except StopIteration: has_videos = False - return has_videos, self.playlist_result( + playlist = self.playlist_result( self._entries(page, playlist_id), playlist_id, playlist_title) + playlist.update({ + 'uploader': uploader, + 'uploader_id': uploader_id, + 'uploader_url': uploader_url, + }) + + return has_videos, playlist def _check_download_just_video(self, url, playlist_id): # Check if it's a video-specific URL diff --git a/youtube_dl/postprocessor/xattrpp.py b/youtube_dl/postprocessor/xattrpp.py index fbdfa02..b0aed9c 100644 --- a/youtube_dl/postprocessor/xattrpp.py +++ b/youtube_dl/postprocessor/xattrpp.py @@ -42,6 +42,7 @@ class XAttrMetadataPP(PostProcessor): 'user.dublincore.format': 'format', } + num_written = 0 for xattrname, infoname in xattr_mapping.items(): value = info.get(infoname) @@ -52,6 +53,7 @@ class XAttrMetadataPP(PostProcessor): byte_value = value.encode('utf-8') write_xattr(filename, xattrname, byte_value) + num_written += 1 return [], info @@ -62,8 +64,8 @@ class XAttrMetadataPP(PostProcessor): except XAttrMetadataError as e: if e.reason == 'NO_SPACE': self._downloader.report_warning( - 'There\'s no disk space left or disk quota exceeded. ' + - 'Extended attributes are not written.') + 'There\'s no disk space left, disk quota exceeded or filesystem xattr limit exceeded. ' + + (('Some ' if num_written else '') + 'extended attributes are not written.').capitalize()) elif e.reason == 'VALUE_TOO_LONG': self._downloader.report_warning( 'Unable to write extended attributes due to too long values.') diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 34866a5..2843a3d 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -159,6 +159,8 @@ DATE_FORMATS = ( '%Y-%m-%dT%H:%M', '%b %d %Y at %H:%M', '%b %d %Y at %H:%M:%S', + '%B %d %Y at %H:%M', + '%B %d %Y at %H:%M:%S', ) DATE_FORMATS_DAY_FIRST = list(DATE_FORMATS) @@ -2350,6 +2352,7 @@ def mimetype2ext(mt): 'ttml+xml': 'ttml', 'x-flv': 'flv', 'x-mp4-fragmented': 'mp4', + 'x-ms-sami': 'sami', 'x-ms-wmv': 'wmv', 'mpegurl': 'm3u8', 'x-mpegurl': 'm3u8', @@ -2372,7 +2375,7 @@ def parse_codecs(codecs_str): vcodec, acodec = None, None for full_codec in splited_codecs: codec = full_codec.split('.')[0] - if codec in ('avc1', 'avc2', 'avc3', 'avc4', 'vp9', 'vp8', 'hev1', 'hev2', 'h263', 'h264', 'mp4v'): + if codec in ('avc1', 'avc2', 'avc3', 'avc4', 'vp9', 'vp8', 'hev1', 'hev2', 'h263', 'h264', 'mp4v', 'hvc1'): if not vcodec: vcodec = full_codec elif codec in ('mp4a', 'opus', 'vorbis', 'mp3', 'aac', 'ac-3', 'ec-3', 'eac3', 'dtsc', 'dtse', 'dtsh', 'dtsl'): diff --git a/youtube_dl/version.py b/youtube_dl/version.py index 8b67d23..a3f84b9 100644 --- a/youtube_dl/version.py +++ b/youtube_dl/version.py @@ -1,3 +1,3 @@ from __future__ import unicode_literals -__version__ = '2017.11.06' +__version__ = '2017.12.31' -- 2.41.1