From 066a203e9e27287111c778e7989b5208ef4c4ddf Mon Sep 17 00:00:00 2001 From: xocko Date: Sat, 7 Nov 2026 10:32:59 +0100 Subject: [PATCH] KodiMov+ 1.0.0+kodimov.1: fork of Movistar+ 1.0.0 - New id plugin.video.kodimovplus, name KodiMov+, proxy port 57031 - Takes over the login of plugin.video.movistarplus on first run - Password-less login from the Movistar home network (autologin token traded for a classic token via the new servers' initData) - Hides the channels that can't play (LALIGA, Liga de Campeones) - Adds TVG2 and TeleVigo to the TV guide list - Re-exports the TV guide channel list every 6 hours Co-Authored-By: Claude Opus 5.5 --- Makefile | 2 +- README.md | 15 ++ __pycache__/service.cpython-315.pyc | Bin 0 -> 3219 bytes addon.xml | 21 +-- .../__pycache__/__init__.cpython-315.pyc | Bin 0 -> 162 bytes .../resource.language.en_gb/strings.po | 32 ++++ .../resource.language.es_es/strings.po | 32 ++++ .../lib/__pycache__/__init__.cpython-315.pyc | Bin 0 -> 126 bytes .../lib/__pycache__/addon.cpython-315.pyc | Bin 0 -> 900 bytes resources/lib/__pycache__/b64.cpython-315.pyc | Bin 0 -> 1023 bytes .../lib/__pycache__/cache.cpython-315.pyc | Bin 0 -> 4461 bytes .../__pycache__/customdialog.cpython-315.pyc | Bin 0 -> 2803 bytes .../lib/__pycache__/endpoints.cpython-315.pyc | Bin 0 -> 5068 bytes resources/lib/__pycache__/gui.cpython-315.pyc | Bin 0 -> 3441 bytes .../lib/__pycache__/iptv.cpython-315.pyc | Bin 0 -> 6872 bytes .../__pycache__/iptvmanager.cpython-315.pyc | Bin 0 -> 2338 bytes .../lib/__pycache__/kodimov.cpython-315.pyc | Bin 0 -> 11137 bytes resources/lib/__pycache__/log.cpython-315.pyc | Bin 0 -> 852 bytes .../lib/__pycache__/movistar.cpython-315.pyc | Bin 0 -> 96092 bytes .../lib/__pycache__/mysession.cpython-315.pyc | Bin 0 -> 1991 bytes .../lib/__pycache__/network.cpython-315.pyc | Bin 0 -> 1942 bytes .../lib/__pycache__/player.cpython-315.pyc | Bin 0 -> 1650 bytes .../lib/__pycache__/plugin.cpython-315.pyc | Bin 0 -> 56480 bytes .../lib/__pycache__/proxy.cpython-315.pyc | Bin 0 -> 17463 bytes .../lib/__pycache__/signature.cpython-315.pyc | Bin 0 -> 3624 bytes .../lib/__pycache__/timeconv.cpython-315.pyc | Bin 0 -> 1837 bytes .../lib/__pycache__/useragent.cpython-315.pyc | Bin 0 -> 898 bytes resources/lib/kodimov.py | 170 ++++++++++++++++++ resources/lib/movistar.py | 42 ++++- resources/lib/plugin.py | 39 +++- resources/lib/proxy.py | 6 +- resources/lib/signature.py | 55 ++++++ resources/settings.xml | 16 +- .../skins/default/1080i/customdialog.xml | 2 +- service.py | 10 +- 35 files changed, 412 insertions(+), 30 deletions(-) create mode 100644 __pycache__/service.cpython-315.pyc create mode 100644 resources/__pycache__/__init__.cpython-315.pyc create mode 100644 resources/lib/__pycache__/__init__.cpython-315.pyc create mode 100644 resources/lib/__pycache__/addon.cpython-315.pyc create mode 100644 resources/lib/__pycache__/b64.cpython-315.pyc create mode 100644 resources/lib/__pycache__/cache.cpython-315.pyc create mode 100644 resources/lib/__pycache__/customdialog.cpython-315.pyc create mode 100644 resources/lib/__pycache__/endpoints.cpython-315.pyc create mode 100644 resources/lib/__pycache__/gui.cpython-315.pyc create mode 100644 resources/lib/__pycache__/iptv.cpython-315.pyc create mode 100644 resources/lib/__pycache__/iptvmanager.cpython-315.pyc create mode 100644 resources/lib/__pycache__/kodimov.cpython-315.pyc create mode 100644 resources/lib/__pycache__/log.cpython-315.pyc create mode 100644 resources/lib/__pycache__/movistar.cpython-315.pyc create mode 100644 resources/lib/__pycache__/mysession.cpython-315.pyc create mode 100644 resources/lib/__pycache__/network.cpython-315.pyc create mode 100644 resources/lib/__pycache__/player.cpython-315.pyc create mode 100644 resources/lib/__pycache__/plugin.cpython-315.pyc create mode 100644 resources/lib/__pycache__/proxy.cpython-315.pyc create mode 100644 resources/lib/__pycache__/signature.cpython-315.pyc create mode 100644 resources/lib/__pycache__/timeconv.cpython-315.pyc create mode 100644 resources/lib/__pycache__/useragent.cpython-315.pyc create mode 100644 resources/lib/kodimov.py create mode 100644 resources/lib/signature.py diff --git a/Makefile b/Makefile index fb3dcc0..bf1cf7d 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ VERSION = $(shell ./get_version.py) -OUTPUT_DIR = plugin.video.movistarplus-$(VERSION) +OUTPUT_DIR = plugin.video.kodimovplus-$(VERSION) OUTPUT_FILE = $(OUTPUT_DIR).zip install: diff --git a/README.md b/README.md index beb79b2..46238dd 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,18 @@ +# KodiMov+ + +Fork of [Paco8's Movistar+ add-on](https://github.com/Paco8/plugin.video.movistarplus) (1.0.0) for Kodi, id `plugin.video.kodimovplus`. Installs from the xocko Kodi repository: +`https://git.anosanube.ovh/xocko/kodi-repo/raw/branch/main/repository.xocko.zip` + +What it adds: +- **Login from the Movistar home network**, no password. The home-network login gives a token for Movistar's new servers, which is traded once for a classic token; the classic servers renew it every 10 days. It needs the account number (taken from an existing login, or set in the settings) and an already registered device. +- **Takes over the login of plugin.video.movistarplus** on first run (same registered device, so no new device is added to the account). +- **Hides channels it can't play**: Movistar marks football and premium sports with `QMWatermark`; LALIGA and Liga de Campeones refuse their manifest, while M+ Deportes, DAZN and DAZN Baloncesto play and are kept (`resources/lib/kodimov.py`). +- **Extra free channels** in the TV guide list: TVG2 (10) and TeleVigo (155). +- **The TV guide list stays current**: re-exported every 6 hours, numbered with Movistar's own dial numbers. +- Its own proxy port (57031), so it can run next to the original. + +--- + ![GitHub release (latest by date)](https://img.shields.io/github/v/release/Paco8/plugin.video.movistarplus) ![GitHub all releases](https://img.shields.io/github/downloads/Paco8/plugin.video.movistarplus/total) diff --git a/__pycache__/service.cpython-315.pyc b/__pycache__/service.cpython-315.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8ac43a4478a3328af0b94cd5bd0b7f93e62d8f64 GIT binary patch literal 3219 zcmbtVO>7&-6`uX)&r&~@X#G+o4LP!8n{sT4wp`nB8pM(uI~3)rC?G0pid<3~Eq9sS zrA0AlK($7l);r7&-C6}Z` z0X}5Fou4<~ym{}<_a0|kTn+$R=gz<0{VfAP3@xliRVUA$;{fF0VgZD)DKLqtmP1M4WZ|;AtX6H=nK}7S4?{Y^xm+GIXRtP@UHCsypHi9dAZh z9$VHV?wGN2hen&R3s{rw@I8CMl^ZX!HqsIN0{{sEp)X$oFZC|W?(uH_SUUFFQ@vpY z-mw3P=IB>!x(iQ`p%cwMLl!u#TRhzP{pL3SJfIJ}^^Xan4=iEB zuJ6&IVa#aDNJ31G^PDJXyb={vD5GW+IlBrc*a+;1E1}6<`Gc4M?F7&M1lfF@x=!ce z!ptFj5=hh}Cea=+N6pc%;$hqkmTfYaCn3aa`|&6QIk&gXoB4~RVd5lwSJY(e2k9Ye zdhmHyMI+Qsg<7q7eVnUts~+u!GxWY^a0_dVFbcp6>bhjYT-R_i*`SlzPv=j^ESnp2 z61D6wb9Iii*0CPM==nCwkI(^YRv%Fvsq3=XF>F^*Wg5l}TRf`qnvmiRJL==Ss6}Jd zs%2`SVBZ11XHQ{w7SF?e9)6V;s=k!9Mq>z_*wf~KWkb#O8D#q`9)i_+Z+nUUeb`gi zZ`~tfP`7ihW>BlabJ$3YaRAH`Ua&xivGJgb<5r zf-G_9oPwgD*kGrk%z4F^&l?VvS8fO~K9F8DSc&K3Dwj#4*D`#3HZ3a}$ETBlbD|uB zS$rYTh-gQO=3w_?4Qw;^TPtfTw?0_=;O>&ncsCet**m0r$BW+a-!Fcd{359bFBOBA zzRs3{GbL}hK=+qj?mLlRM{d7U7#Mrx8vA1P>-RQKPZwR&1$uhR+4>AB202%3DJn_4 zs0LD}GG}rOGA5f6b8buSvz$Kbd;jOTHn_iA60m?=qv;6jgV-iv?v2@uG$Uq`f^;Np z4rfP4E0e$tAU-6OWBuTXWn+07x>&bh`b@86~ z@JGLEEgigAz&p0vJJ!4Ib*=Z`>;Gi=vx!psc>dTnP8Dd6P7fC8!NTESi9WrFpD~5q zI_)je-Un=nKE8s4eIpyB7MGa;aZ7KY~sm( zQoZ^>V4Jk*WY-4SRp?%LOuqAk0Nzoh3;AHi?Bq@^6zC} zQR3qUyAl<&OS1Ah5-a`a9#Ylh^yk2QoC?cq=U`>Zi2McRGz6eps1CyZ34vkQe{29d z@^@hW3vimhmT$q~ZQ%bF_@9y;7>DhQ0FwPM_lW4(Lgeb&#Jjf~t+$8rhs!u~>*(6i zo5#(K9-a0TY2O34?jI}q$4d10CLa8ba_Ce~k?OgBOs9r6sG%L4pqyKD+f8wY1?}#2 z`$zVVo%a_XwfXW#%WT`7E5EsN`|bQtneEWoLq+zG&JJ#{gJq^gXZngv-~HEhW?+LE zDAUd| - + @@ -17,16 +17,17 @@ - Movistar+ - Movistar+ - Watch live channels, recordings and video on demand content from Movistar+ in Kodi. Requires a subscription. - Vea canales en directo, grabaciones, U7D y TV a la carta de Movistar+ en Kodi. Se necesita estar abonado. + Movistar+ for Kodi, with automatic login from the Movistar home network + Movistar+ para Kodi, con inicio de sesión automático desde la red de Movistar + Fork of Paco8's Movistar+ add-on (plugin.video.movistarplus). Logs in by itself from the Movistar home network, keeps the channel list and numbers up to date, hides the channels that need stronger DRM than Kodi has, and adds free Galician channels (TVG2, TeleVigo) to the TV guide. Requires a Movistar+ subscription. + Fork del addon Movistar+ de Paco8 (plugin.video.movistarplus). Inicia sesión solo desde la red de Movistar, mantiene la lista y los números de los canales al día, oculta los canales que necesitan una protección que Kodi no tiene y añade canales gallegos gratuitos (TVG2, TeleVigo) a la guía. Se necesita estar abonado a Movistar+. + 1.0.0+kodimov.1: first KodiMov+ release, based on Movistar+ 1.0.0. This addon is not officially commissioned/supported by Movistar+. All product names, logos, and trademarks mentioned in this project are property of their respective owners. Este addon no ha sido realizado ni apoyado por Movistar+. Todos los nombres de productos, logotipos y marcas registradas mencionados en este proyecto son propiedad de sus respectivos dueños. all LGPL-2.1-or-later - - + https://git.anosanube.ovh/xocko/kodimovplus + https://git.anosanube.ovh/xocko/kodimovplus icon.png resources/fanart.png diff --git a/resources/__pycache__/__init__.cpython-315.pyc b/resources/__pycache__/__init__.cpython-315.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3509baae80f8a23479e272b6cb95bd732b3e1dd6 GIT binary patch literal 162 zcmWII>P{wBtAfo|@1K1TAG#UL?G8BQNJ_9ksEy<$P;{4L0 zAsXUCNxIx|M zl8uQ=^=IH85KAmvLzJZ(Qi3MNm3R6O5?0=1&N<(A&Ybhjx%05Y>jr*49v?rdBY>;} z+DC2$r|UdZ;b0z8C;@RqQ4snaBqZE%k%~bc$%sx*9ns`Dr%CPHx+bp;`>9%Xk@J%&X|UciEdKPd2ON>sj1s|PPdmhAwEdPnOY)N-Z1g{)wyO6 z${7S_ZHuhMLQkHqd+rge+eUGbgOSV3oyp|OcA4Nzh6sEXQ&$%X*~fWGLU`N*)%q*)L5F{PrWP3A4UE5As|KRg zj#$NW1mY*jUy~xcQsnJaRhrm?Tl=bOYh`m~Yh!cc^>R&(d{!d|f?O%o6yL7m+n%Z_ zH}-_#eL>n9dp7ob`HSE?kwF{!UB3p}m7jo6_?r-_b6Md(w3{n@p-hj$&Zu`fChkNL Gw|@coj>f_O literal 0 HcmV?d00001 diff --git a/resources/lib/__pycache__/b64.cpython-315.pyc b/resources/lib/__pycache__/b64.cpython-315.pyc new file mode 100644 index 0000000000000000000000000000000000000000..865dfc6a08761bcc64a7c07c95663d17bdc55733 GIT binary patch literal 1023 zcmdT@PiqrV5TDK4>?XTSlbBYaL2U33ji9BWL_PD4rJxbKIxm}T`V|~_znM2PZ{EC_c`xTP8X$c-KYulr z04%YIDKQnsE(%>-JJ66epe8Y?mSBk*VdOgMHr0(BlP7$ECAX9Hx#_t}YzOWx&9*zF z`VsFU086l~vQ#6n2rS(oh}x!Fg0lQmIF|{}g`Q*iZQF32z^10lc-Cw&-wgxXaCY~6 z8t_!x*>{-Zdlu$@K{84hAI8TBU0lrz>lQTQmqBGJ-9`^V))kS{7Sxl`{xUY8GL7Lw zQ;9A0R4mQ-4U7=`*7cb_mS&Mk(3f5(!=Q8TVOilCzQbdI=~*^cr!VJUykd+rreBxZE}alZo{1@C9l!Kctq;R$ZsHithLK4tORyV?tUDDQEGtw+Mnw;4T7dWslM+XzrDB$;C{$Ejnicj;WQ=RMh&r4bpm_m8D(hS` zj7}JY)HVz%hK!17q+%?iI|w^qd~V;SVss71>-e0ofJUi^?obi7AH|EVO+DWA+o5Ye zp+z)_X0s~7FCt0OUk#+^(g2?QfXp}0z7u6c3IkF&dis@I?UlZe;^}<8Tl*~&sq#ld HnB@5nSSPdl literal 0 HcmV?d00001 diff --git a/resources/lib/__pycache__/cache.cpython-315.pyc b/resources/lib/__pycache__/cache.cpython-315.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fa7dfe32af2a3047dd51105c407c0d201c512ece GIT binary patch literal 4461 zcmcgv-ER}w6~FUgd&VEJ^Bn>Xp@9@f35bM}qy@B176Pc?7%-G(!{FHCWLU?O-a8?S zR$V#!0s*a(tx(BBAJDdHL8??LRq8(O(tjW!7+cfyp=w`vS(Ri}DxP}IjO|Ra*=75( z*Pe6lJ@@;b-~HWl&sPP!1j1jx_~QC?45X|~9!u+sNz5N7EMU#k zXSxOx$q6-C9u7yvG%QD2uY*JmzDuD=kaoakkGOM>I5U*gvuSNyNoiC~8allh;Z2dL znKZ@yXV^=7yV*chrccwP$_{3@k46nAw# z7k8{fnrxaNSk<0j6K78_PNG<8ONetF4vo%@R2CT(9R;Oi6notg;#@b3fMK5f zGvH$n8NoSPA!^~RoU`NIB+kXS7#|aU04*@|b5}WoH-xLC+g1>rkMq$$DdULB<%VGJ z!yf#V(G@0pNDGN<%m!A}OeXj+*-66I4`
?9LhL_BA5^tEf+NO$#txg<3UK-9A1 z5szgclh>IkP9=;9)2+UzF@u@BrkkQZrDjc$s)!4Po3f&)g>rTg1lTfITL|u54(@&MUOsp*cWTuanD3qIoj*Qz zd~tul*Y?!c_UP?Z**D*Kr*WZavFBl9K|Yk14?VtA4Ajn#%#GX~eI*cYH)!F%A|HCq zaP-f^p&$3TKJW7l$a1o@)1W4#f{~LYjEq=n6wwL}Dk?bh9nFrMaHIw>*M_@0QsxX2 z=SSS-I^Cr{D!2eULfs06;(UxN*U|YmVueI;FKMxTO=w z#`!Xe!+_k)ctX5KOV8A#(dbFc*W(cuP z(lKi$6^uu#wsZyAZ^f91@anI&{bt7e|1kdIDD+Qp5DVxOIV>VuK&ADlZ9vfo!W0b+ zNKqPBjY&*7V2xa|3C{uR;!`HIEZqETJ79~*nx=PyL0h2@1}5B&JU#NQnc10JAIyHR zFj4UAe(Kr%+l#-y^2wFojQqL#FTH>2E%Xd7_Y8h^YNh9Fe&5-p;nAh5*Yd;Hp6$D4 z@$Q}8g}%iL4|@x~p1iN;@r`1ze*XQr_wW7!u^JTjX0J0n z8*!myVyM}aDUN6KF^8$}yo2p5@5E)?oKl(TLI;GI0<^FVh7{D^3cQ`ZUg*-t=#)%>lw6GeYj?!;=a?zT{L`;h$a9lqcH%l^fSg>d(Bxcl*ie7J9= zw*R^NhhVi({lDsV+?JfSTo*`vvu#V~&R6`B-<9qI>jlCOfi>~vp$l)a*huOA2S29b zjlir+Au5+s8!_0}!OvxVjCa~NCX~IEvXyl4o4r%rbwRYO|1MbH4RyEiJl-(ZZJ0dn zE{|W1b*^er2REi3_7#hr<)sg){Kt zL4?Kye9cijSrPD|!7EWM(sx;WPJ2=Bqi;b(;S`dM8^RQ?>sr?KZ-lHqV+PVxx2_3r zh9;+I7t}^C=O&{Tnq`}7PGBc*VVNhTW>iB>Q8;Ua4x+F;qrfD1@o7y>Db_?}l<)>i zrx}_a{3JV+n5u+ue07;6rgEqbLkspR5VPd(;+|qvFgLX756z#xbNb%c{qc{-?`J;F zJUCov>sxN?`?NRTHUKwD!`T)8IXE8Pn)%MT&btS4gR2PrVna)zp>w&R^AG3$c=^%g zLf5h7u4A80taJ^nG@Qy!7HjJBHT!Z}QLdS9nQK|x`&@2WmAv!v9eH8@Gihg03N9S_ z$bZN4(g(-p-+tn+&7HGO55;9gIPC!(=m_@$ksPVQ=OeyI;Q8oP6xfmJ45s~x^7H9L zrc@GCfT1Zf&^gWOieeK8nwf@C>_>4BMGp$_Q3yQ^!mL*mFp{Aqm4snXZ49q$=)GD| zl9>c!DJ^Lv)l5cF01^R*5}F}U-m>vF`|K37!sc&53Yt}?g=vs4&!p=3n zOW5&cl}iY%RS81#n%6BfzY6(;+BE{g-U93@;=`q;r;TX}OQpyu6mMRNd|0?Kr&zS)4bEfOsiz9QVpgxIu224E&SGf5X4e T`g^|w4zIm^@;?M3tE>M3GkF?O literal 0 HcmV?d00001 diff --git a/resources/lib/__pycache__/customdialog.cpython-315.pyc b/resources/lib/__pycache__/customdialog.cpython-315.pyc new file mode 100644 index 0000000000000000000000000000000000000000..15ed9bf6aceadedc677e22ca01ad56c331513d1c GIT binary patch literal 2803 zcmai0O>7fK6rT0&+8bw00*On0Fwmj~IVA}VB?VfQLc&kdfLUk&@zZ6qyK%Oxcf!n? zKu)Hr1XLA2C&CGODx6AB?X~KqMJ#03GN1@+W7yS5WspgzfOc4pqZnfJZ- z&G_K5L>z(q{`BeBpU4QAyi*qF2eM#6Q-I$|qzQY`9)SvbA~do`q+$xj4#f60QYmPg zsT{N|G}?sLAT5$ans`FWEDQWpsa`ScQbm)Jh}Ip5y^GTF6F!(0S!3RFOl;Y@>-aV? zT*?}ZQHtHXZ|hEO0u!GpmUGsj4)&_fER;4`*ajb`f>WPBRL~HOoUEr}Gx8t?*iYhT zqp~J~js_=)X);wt$|s33wLedNoEvZq7iZ0~U+!LlUjsr)1(%UXX6Zb)0nyL_r8g3O zkDy$|;w{!fm33(y0(1eF2$P+hk+qrR+vj}1N6gwjQNTB;0|f&TwcRl$86-Zd}iq$hs^)KC85>J?Y7L8WD;1_+wi^9goY zi~~7}&oKp`9?knc_E>D(HY~@>vN#>blOaBL1yT?0DY!r#gqJakVs8-OVogsTC^(H|z6tc0aZp|(HB$rJLWg^$Hx>`N$sfIWf5ZVa>_tuRSe zfm)Jq(#}_`tjhLcfpB;9I4H+|3mAe>5p3hoCU z=j)3Q<%@_YfAAtM%WW@~NpjySH6ph@L!g2%g9RqoR)j~$GqbR&#CBdwp}dLTYfw37 z7`5`OzJcdjg&&z%+1FyL31!w`L5pCxZQpdKYGTDo91%6CGqLCai^nUh*W?jFi)yjM zy_&MQbh}__M9M6&FRv`0JY?%?ltPF8=lob`M_(M;Dz>9>0jMoa82nxl_XlniO{(~pSeSd;(>*<-Coa`RWpU>HbiO0rlyW7OM9>cP*N2eNr(!VQKI#J+lD*ly{*4y z{}`A}d{x*zFU2qJzp(#-)cpEcLa6osjrlL-l`y?_M<4pFuW4t!2s{OLj^+J40d^98 zQ4n6MEaxl>dzEf+@~J y+70TtC7W8MN~+wCo|Oe~21iN=c#h+Q)NEoik0HFA;QJcE^Qe;O{@Ab~&^F literal 0 HcmV?d00001 diff --git a/resources/lib/__pycache__/endpoints.cpython-315.pyc b/resources/lib/__pycache__/endpoints.cpython-315.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4b4457762d7c30bd251026709f3bed6e85e0550b GIT binary patch literal 5068 zcmcIoOLH5?5njB^mq>yT-;!v`4>(F9uA(HiV;f;80FqFq01gPsB~=n+usa}zT;+kNFW0NXvT8!J?xK3MCP-c4T zShHyhYp|~BR9H+<;8|63h-u@hedr!EY}*o_s48~s#)i)7A8u%@sWur%urap`N2qO` zw5UcZ#}?_RSkste+OWHo&6f6xmEzu$2l;YG?Y{*3x%|^YHebkfHvcHBr-VyOGD28h z5_EuGs`U*5?Zpdd#}*yR9<{^~AiHOGU#LyIaooaSH4*NEP%^V^(AOZtv$dG6YRs(D zebpkoP7NYLKK%N|fdKC%Ym9RYKEW-Ll14xCf+9|Wg9jzNS(p$;0=@5 zDi(F3f+@DzH#Cp}%G!0@q{eYaZG#!oBL%(Vt@M=feU58A_fS*bqV8bBEx(3V(`xZD z(HPgMxeuyEgB?kAQ#D6um{)6HAWlUTCDZ{f5p3wJ@R;X;&_7jh0-*|mxz^YW;9)w= z8sV8U7)e{4Nq=YB!J?A}3^y}vo4l}DC*1^GXP%aF<-Lz`X=&*$;gpCBTr_;70l_vk z45C+BWxC(6MW%gjtCMa8i2FF*)TL}mL60GX%?WO1Z0?Y>PMTmYwk0$H-UFtS78Z=rL}gXz`&8JtmqOWrb|tbt9F7-I8EmJJT(EolUR$pw+2H4@jZ z6&k7;RB9w#2CjI;bzUNr;d+HsCeFt61RPE{1_Yh^_fYv|yfpAljk6;`HqRqOKuXKB zB^|w6nVjUd{OF{Ksb|_i076%|b1y{<+N36iAPG~X3;60M#y9QCa~>R~m;Z%2FBydG zT;WlnvbDXly|=r!n=cn~*^WBMH$$K9luHi_+xbyHHi=HL%1EnqB8Hhcw~VZ(Q>g2A*w_OW*SfW0Wy!3!Yl%m$?FL2ZDP^z}uc zB9s5=>fKM;FU1QVREeR>27np5Ov2>xh_ilRNX+yO&EXPZ(Zp^cJognU@abCU&Gtpx zM0QPB$8PC0W$!|pp*v8Yb_s_5L3rcTq_z$Sa{n5NzECzf)o=;jQhV;-G4QeMc!mv@ zD&^-u{+XOIay=4~j>zbwjv-5X(}ry8!nVi#A~fp?-VEYOZ1zx}xtFHmA>*F|9y0g5 zxn4ybX`Sx7PhLaUAeRk#Cog5PW(|tqX!$cj6&LdIWy+t4o8*j>y%eiKStlb!L%6?v zqZXXiIL65VG(gz>SE%MP>2cVQ5Nm(4&KWdEdzEZ%tCFu2p5!5mSs1#Z++KOBQYaM% znJ&}LKHe%8^V_?fG&HtHj2~v&#eC(9Qu*^!Y4a+jcb*fI1rv&ITn=6!c3JRhJ5 zdKkio9n6`Q64HFH#W|hkK$6-M1r2x|dhmvq8qw2md(YhGp_U85rV@1!#u`W0*H3h`nd+_S#?f_n{5gIK-lbh2_+~XNG|n zR851VvjYQN=;W*{jj*-7^{kxV$~}{hcKZ#YH)F#fkYh(?pl>)}{vi6)cAyw+@DhDD z|7LK+Q!}lca8)Mh{XRH0``F1ESjbUgIOKW@kSk%X6P!Sn(;ZC?&_v*ctItUS#F{>vn% zu$NNXj%?nB;)cEn3Qo{p$uaIu!kesC>yGVkQmyhR{6fNGlEi^{6EF~1jKUc7rSctY zDBdch0_Jd-h*X2t)WP!&>)0Fr3>rQt-oNG_z^ic4iZ}rJZ7dRr{C84`WF!Ap9{BOK z>F7y3?ZZzodr?0I+*k3%?sCIVz|wz9Nz8VW6@N@J<4R(wyDa<($xJGV_3mxQpOVZq zC6NLN^NqMaE%_NGF#~+^4^e+s@<}DJ2K;(C>d#3&r6iKTr?zAMb;-{wi51{)4W7@`;{J-{R|9>2iupGre^W^;bQiIIOEPOpVzIl_@ZXlqIvfDL zIrl8;-ooy2bdyXM4C;>m8R^X;b~{Vx;zeen7J0VqvCE&u=k literal 0 HcmV?d00001 diff --git a/resources/lib/__pycache__/gui.cpython-315.pyc b/resources/lib/__pycache__/gui.cpython-315.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6611e803fb16ee15d9da93325af862a6877972ce GIT binary patch literal 3441 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 literal 0 HcmV?d00001 diff --git a/resources/lib/__pycache__/log.cpython-315.pyc b/resources/lib/__pycache__/log.cpython-315.pyc new file mode 100644 index 0000000000000000000000000000000000000000..af79b090d4300300243273fb88c00c0e7812af36 GIT binary patch literal 852 zcmZuv&2JJx6rYb>zGPb!N;DM&4;U_zka#d5Mj8!hh+9++28r3STZFJInSn%Ynt+4R3$vbTUZD&YmhafyH>%iaV^(S2E31Ars(f=5BeU%>Q1&;D&E4t8NY z4k=?@g~W`Mur7ONq)c@GObCvdNk~6&JXa!_$^Vp5W^xsn7(8A%%|_vR2^2$7RGFVv z-9=NBC|Y#$SLh;ogj1AB^rzm++IlszqE#FI&DE)PF;9b9cCL{ zq2}CJux@o-?`C_|5x%0HzkXw>oEK_`HQL=26<*uo+^Abjfe}n{#3hxz%J8E^r8S=%vtE$b>f12H*?hrxWO7~^pO;ouL&gF`=0Vtm2v`U9VAn^FJ( literal 0 HcmV?d00001 diff --git a/resources/lib/__pycache__/movistar.cpython-315.pyc b/resources/lib/__pycache__/movistar.cpython-315.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bfa58e10be3e23d522e15e7920ad50cbfdb69e56 GIT binary patch literal 96092 zcmdSC3wRsXeJ2VKBwhqSg75d6;+qty_tU0CN}@!G9Fd?TQ!-5vph$@%=m9BNbnGy@ z=`ESs5uLO1IrOUz3g6y=?)52+*l|t@dWy?SA*`%A4$MSNHDj z{r%58Far){I&r_RJ0E#4bLPC~od5a1&v}>AZou`s|M~B)_oWyOWAq?jY0}M4AK+#Y z|5ps0@s#1DF`D!R}K}J$cd{aG%TyWU=S8Q@tm1 z0y*s7d}{DyULcR%TTVT_D}~)zPd#(8AW*>WZKu2^ivmTZhHOK*fwSitxb(}#9VT=M zSD>WdQfX*#{2e_sn1syvnaMG~*EcdXIp^a?rvgI8=+%IKYJSc)GC4i#=jQ~gckz|yN3m}cDx9_B2pXKp5ay@`-M!|B< zH+Rd=-@t9!@zJpfA8w3|lyN?QTCe$L<|x$-zjt!le^c{a3aFvDe)=0J2E#M#%Um`D zjGQ5ma-}$6$}!B~JM~++6#Sd;pW1KX((rG_y@j)KHvHQ0pN@YA{+(A0Esj8Hzb%l4 ze>46qoGW1EG6FU(GhpZ3fpqRFmz8U{VGKC9F)o|kIk}u%L%_x5BFx~tTpo+f zu#~GoSjN>NEa!G0tl;VpR&v+4dX~D1o8TJQT{YK;H#J-n!dk8w;SR0^VI9|su%2r} z*ud>X*vL(C?JQ3dcb)5Ccg?ul#qL_T-AL2Q?LpYa?M1kg+lR27+mEn=JAiN(cM#!j z?gn>=<=Mj>#`9k82*Q2bQH1-sClDUsoqK~nJBIKucO2mnt_$H&Zi?$>`JdoU z;Q2}JB*IQ^nmff}k8wSCKF*y+*u|Ye*v<7KJi(nsc#=DZ@D$gFu!rkMc$(u7p5e|T z>_s03SSe>w%OJZu$IWmacGt%ZAx%Gb0U?KxzsO?GbC>Wuz&(X}Vi>mEaX@Uf<2hF)T8#kb-~HECPpbhSs8YgwoRz@{dnWu_VTw$T~GTH}2=B1;^;v zm@g0*ne*T9%?Qo_?y)+hM_V8;E8V7hebb}-*ytSIF4#t=M;H7vt#dbp^ntUT=LZLe zM*0Q^g_Pctf(-@w=doPd$7C=_-6dcNuwnh_&1?}Q_S-#%X=xw~2KHo>ANwtMhb1ar zg@$3XeBWo4?-IY|29L2r%3BIx$eFlQE{!vbOO~?_XUb_?(){LO)GuE0XFy#HlvC`` zGkrPIYt_$my8OVUBeg?*8ZMIW`by=y#IMK5IT{m>2Dy!Xi^ozc#gADGh9bkz>~w~l zaM&r|an3#^R*o|mJchoq#FKm{mo5L68ip(6cYRgzUE;S-Za^Z+FqElVvh*GN){iK$ zPF0k2>#@r1k*gd36Y8(3r25Ud@I94$rCaoubM3uoFpT{=mBt-9fkL_l4F zQ2e+k;itdoQ>^AvR%~lz_h$Y;u~<8>e~Fq;azgy66+1C zp-7JXS17=V7sE!>-hnV(Pf_S?`e4b;@Hu?EGU zHM?>@3 z3=^ngSKlf5F7XREoA_=Hk3;Dl_E~-IkAI-m{hi(kEZ?{Qrni(u2Et^S*qm za?~T5nC-p)x2kv5n%;SmTM7s$MfsimcE1ZSCS$1rPb*=sk zPg2Zw+DbUuID-JE_W;MY`N5tjHT0$s9^`Q;HU2WIQE9;#&<@R)tI>t?8FG*1U*Inf zb!R`Dt-bZC(W*`4K|lW4eOXmYcj)$AAG6TRU%7|!FPrsxGqHQ~T;b}jq{;J4v#S6* z#FzOPyGrkORDG$}wB^F)dX+iq;2N;|Ai)^m#rEKaJe$TUr5u;GE}xCXIb&Y z>em}Ny)|5?8l8`~cj@D2dUa%BpKDaFPWfAv8v3nUtji{X*jv7BrnfD?5vN<^QRAc$ zIBpypXJe35=N9$2+0NkLTGZ{^A}wnZ`qH|Mw5)|l+qR9gZBiR{ZX@kZDQ$aF+Nb1k zNc?i`QreDfr0tN>?%GD$T~gZJ>a@yy2BnD^=-~FK-}YTev`fC@_R8z4*Vs(>zFr^p zY^yF!OMdRUc1v~bQ@4DJcI}hW?%zh*{ZiTk+emwW(lRP*PQEwL*NRw-je@hL;L_MS(Njq*k z^Go90gmJ=fz*KCQFg6@Mu~0ERd5s6#ePo>XPmlQd$!n7{qf-^*qu>pC4^}+?f?)0h zLvVI(p>=e2c4|^&__Y!1y}4q}_uO3D_0gN7fiZq^cCNXiv90k?#j{6tw(e|S$Pn|j z^p4J4n+F$u!Q~6IbPqK90*5HY0m0nIYFj9tn46mo9Bga5>Em0$p=WH(*{S(Jt1lo} z&ilrFypLZfc}%Ld1-l1K&6ZB$^$RJdx*nxVOvl!_=jIkNWDcZvlBX{56&P6|ZH#0E zg0YP+!s8=15-EJo)-nIg_(Fm2x!Fk`98>ixD&P?@Nr|V~O5-3{{Al9bXy9!lFc(7%8 ztZ~Dmj0BICHHZfdXL#gNc)Ma`HkE3uTF9R9&sFfg`M~7NwF)s!U?C$pqDXvGL5auF z1#feOnB(~u7V0;@<9*lgIeZYeT&tMz-IB^(a4KzJ!;#LI#Q`=N3$9-OsF%`Fb~8$0kO>hbI0uKR4s! z1AH9B?!GbGx_PjLkxNV4fuyqXgEuo98F5P0R%Z zw-=q9oWhJBl%gIv0w`~6LhMt6X~Enm&I$a|H(y9=Y`x*T-LO+IPx-H1^Ld3Fy~!fv z%!sn75u}=&8R30_`KdYHMcvEQU3r47`#D-}Xdq9lZNW@j`O!JvN#jC5K`^0A!7||+ z_0mvSo}C|scg?#;gphh2LN&oG zC9+PB-tZv--d>yXUlq)OiFu5Pkct)Q6YR7gCa;Yk0Z+Vdp4gGRg{pM2Dlr(WTEQaC zc_H_jZ%&jIpdGZ1Mo7FTq>2JQrJaI%j=w#k873i>-lBc9xYFo8AY@W$Qqd!mGvj{2 z78tz=umw0Jq5oMAJ>6BZ13p%4?#k9Fh=v`tN3ZIgj)>+Eg8I)dSxoEsSt+-D`&+bT!xLScbPeC5v= z;yHzj-p}5MSJf?gH_YYnsvYe2VT#Fe@V+%8X03hSS{vH2cf-2xp~GNvhq8{vt%afD zrnogTl+_lux(|a9^Q34lGC+#jLd}OG z<;P;V$5)I$apl~(@wpqp${)KLewt>;>oR_5GUV<0nbqLRl&cAqG_T!?mh6o=_r34j z_Y+6foim?16Dp`*+ZQe9SU!0EnodHHg%HRf#Ca5lU<9k)7S*0Qj*EcoJvwKeJW+k4Sl zSJt98E;jA8j8`&NU6IT-)~@>**>@H`w-Bt0WK=Dse&BSkTw3*RNlRcn|g20MhmxLJs&SFU$wpQ z#9Di_xMj^BEk3&F{pG38Os(w3SU;$32sJ(tt$k98I~q1u#Vc!9C%<04?v7UOTJMck zc1rIKhRtOUtp<0ldN}t+GWUtYS=)TavFup69JW@Wd)0N{Xnd8@8%=P5n1|-|Ag2j@BHB)f^Ak9Dnb4q~_F8Dl2d}Vy*lKvmvwe zzTFveRd3j9;%Gw2D<#1jF?ZvJyD?th9IHPXu0I;7e{!koPVaJWusH0fjXN^$oL)X1 zb5w*K6or#w3|8d6tcxmO*l;Fz#Fx^mC z^A8R~R@ny`1@~P5BdxKlJ>jf9>yweJCpTQ3@y1H@3za zpA0uX8EHJW!yD!!7s03Aul<^8Fj-`ybd{F?(6q zUWSpPaW8wNEaI+Qs(FxJ5bWAWuZY`ScN&))#WcYezUh7U`fpsnn{%&wqxJlTeL(X% zRNk@Pb+gF-f>DXBVlVTX3<(vv}U(FZNk<{0ED$8(H#e*s4HP>b-b)@w zTKu4GS7>*4wC%)FYRp;~2JA0t3R|10f~TVO`{meRBh}H`5!!V;+S(<@hKdl~6!%;T zJv9^a_%}TMwK=i0SX*znt@qx*MjIEJzm-VO${rpGJu?>@p5GXrU#|)6I}`2bjdh$4 zcbpFm3~h8=2tEHoB13D~+7@qWTX#mAj>@sYmaw&6zlH64LVJ6n?Wg6Wp(3PheSjIA z`cgWBJ9nO1ek$gy3_B}VTO-c)MeheK?O)D$v*=fgR=XmF4U66%oAcIr_VbTF>q#@X z@_%M9(q@S{(;9Q^2|M=9;Z*r$pIN?3 z{Pt1JNteeY6PyZ@0%Alk1{ET0 zM8O$`33FmsLLp?k?U#G6{7Rz^fiuy3?CK*LFX@8dN}WOxwI`B6Wxyyi^W@)~DE-;) zVMTn+rRXV}40X%tOnFJF(j8p5uIP;+P0 z)w$^Vz?tSPFV1_K>f!hKWa7H!Dki+WGgQA>ClZq*mAtlOAzBnkV z^(pW(@s@N&IXjo$V(}Z1LJzJIwV!nL5viSYDI$>+&f!VnoV3oiXthh-YNXAev|Q#E zsWs{>jjCFaGfS#PQFKeZ=Cakb=&>bHpQ3P=$hSo+G;QW`WRX60Dg9AXpi81;C~t1M zJf>j<{`Tp@S(OS?3YWV_+H3u(p42|#4<=oD5SPo7AuU+7P`wf_E?;*{6bL8hDK$W? zG10~fIe+38yM>a=Z}ylg4P_9Xas>lvEk?h&*f4+?iLqPAw<4d&a7-tC&wf$clW`CQ zH=vtubo%UMV9Yl)H44s|kalWtuzx_Xi(G`k+p|8QP`p1oIx{~Gb{n{wREl?gY!0j! zRzTPJvx4=)B&D122@Wyx1Y=hTsa>4|rygY{^Nb%kj*IM$7OI0M-sM96#TFT~5!bh+ zi}5=qy^k!%z<2TS6%39G&d&L{2{5P^n98YOC9VZANZwB2Uq&&4wX1um=XiHd7b51U z_rzX#lr}#%-m-roPvQB1MH-j|jP)^2FiG(m+zezZj26<86&%y5e)FU(BeH8!$NaOm z8RLtAeZk^|=Im`K)LJA>Suof97zq-`@S_w!?EqXnuaAlq_lu_y(_j&|1Er;cX`Y`F zta9tbY({T@cx)0gN8Aj2R9==mVy#NY{vPoG4p0!x8ds@Aeso34+vBd{;NY8=U%$N8 z94*}!cU7*|#a%_gu2@NPxTHDmYFOJHYdRcmIvjTu1{>q9lHkxor^RJm^ghfYGRXRh zHI`Ws&a8-K)`l}{BbjxJ*Wwi&i`SNB!sb%o!p%G1J^c3JyXn!UuElF1S6$d#AFpg& z8+`Zj+n4XQMq7HKl|4x97YSd`_~(|-1rJ6YJ7SKOu%qQ}&i6{bTY?QE)_*zNe>rqz zBHBM0aAm*+NyDMYv9bxy5)d04xqTedI+ZAc=ytgmp-Vt#REKbBT z3*=_jg)?cN$=oSzJykJ#L)hN1Ru{2%Y?yZu)2jSF(Y2pDy>ct!C|@!XMxU`b@sAJF zjFxh2Dl6AQjqm z8j>en3VeqZ0#q}N3}&a`&LqKLoxOug)xcmq4BeoIfpcl6pTCZVyKd{s$jmUZ=3L)v&nFjAT}^YyO7%7H!!$R+R0F>76LoG zf2!rY$Qy1s>jNNc%gWwzgRSLdF0l}F7O(+H}7_1PSV^aX3BQj{pQ=o<>J{=P`u#TL7 z9AKsCuJ?AZr$Vllu(>tfaguIZ!{#<(u+UmQ5_L4h96Q5~o$G_&x%{om@6|^4oCS#}^9RiUmF$4t)Bd!O)q~oAO@`hB@Qel#pX55I5(!lue7gA?$8gs}8vvBJL-) zTGtHm)Y&o#L`p@Py<=t*mGMEy_b{m91qF zPhbdvO@$B;Z7m@7`it{>iOC18wi_r0pGo8MeJ!j21Uqy=;7t*xCPZPhOYP@B?RRSB{p) zMhlhg>|HW2(WMS`LB->C_AO``EfA_j<#dUP{a9vt`@RNjc}z04Kn739p$BNv2$S%n zw4`F6+{Vt{r&{b{dl-JBSF&Xf<`i8FD2TV3aN9V*0Dyw^=K=}|EWk2MoK$utl-i*V zXZKqHE)*c4N84%C;6b%}Z2M5o7~4LevPuedq@<8^d6c@rXZz*$6cNZ28!obY1;h}= z^CPNFVR~D zod|PG$f8B?1c5$OAq1BKm)LVX0i+BBkHJBb#9b}zjKFA$wwze9gfbh#)<%e))ANJ& zxII6Z^JdBGC2@Ps$^;7@+R_+BlWCCXk9|=`bF;yAuIwgu36 zujcVUhonh$pPhsB0TmxY;TWzCtzVp%V$Y17~ei!D$(x zkbl*+FqANPSn;gKYZ|JQIq%?FnLvx!7Anz(qDYZz z{jYE*WRAj89ttVYRD(Xy$lMM7_Yu8ddSc|r-~C5?_swJkTk45b&KCWrsnA6V7^~aH zRBssPBsH0kAV?A*e41zok=-zYC!tVTti*1RHCadv=M=5mw~*#B>$c*!%qy@Os+x59 z0um+>DsG9&!m;;qepK@Pl8|Fh#Bnaf4MiP88(>Obd1hnO7aP6){^<3{=u~L>+34uA zkt=-UQXuLGu+<9&_{HUmF=u($S-xtDI9nFIP#jpiArcE}w4S~_TRq>#%_9C`@QN_` z;tYhqV^*s3N{RF+cp&|{t5CbY%X5UOp6ivYLs)Pr^4!EuMxGW-B1YPd)-XB8+o>WR zT1OGjQ1CAhV4t{7_t?SU*Z{$f9Wr@10p(0tWl2zxhwAtt`ou?(4WGEGhUq*o?E|f3 zK>n@-j-kq-$PG%u=91u*ADf%R@kd$8r4Vb2Xw)L2^~Y_y$ZSddia@!FT(%hLJ?|46zxvplOfM)*kvI-o&X4B#`va9$0uJ!T2IgD^~rx3P7S#@UnN z)1`PvQoJa;NaHj-f0WPU6mXRwU1&k3I;Y%Pq!f({(zq=3d&Fn68dLie98fL`b4=+i zOt67PG1DXB8092G-z@)CKwls4odidB5~`^F09!(ECgSWoe!S0fZt$Gv?6L0iLQ0QU zFt!M(=g12~D)Yr)7rEGslb%ZWoZw2tFy4@jVn-OW*(EW>`@u?v=B!{Lo-*BJo@e@r zP|yba?;`a{Fo>arNq3f>K+nuTU{)|gu@vgF4GvwrFR>Z?0D~ad;cR6FV#gVXA5)o1 zp$Q;eNS_S&sniazt_3r8EBIWIS=0&IleP!J1Qs>J?gSI?*3JBBFD1&+Y#1Vb8yF@) zQjFj+d&L%fV`YD6i#m439Q(qKeeZdHH1++d(7=W0iHjk}zKG)z7)e0xl7atEocY1j zFMDIo>i3=1YsXeE#T~B2F{pB%M{J3k~q+evebih8eVb|Y&Em>s1I8$>RPsdtvdMN7H!tTB>i1L z(=QeK=@;i++kYmiS;l>99U5&^F!|DBAn7i;4wbl>RDC}FqD%9nVOiM|%j%Kks!DBz zXN;UI-_+zZ3@cT%guEE^c4qrWVDhWzFR7Fe*iS5lwPRLywai92@%Yev! zwhX@V$u9#%&ge0!@hoV`qEh){@UOkt)9Z=OL-| z5GU8ZP{6F|!TFh-IRt}e9!f?>JcB1%_A}AILi+PnP)B&G$6Ix9XI zizuh4lcpw`8YUZg3Tl1jE-|6cjt>} zuqggZ+B5UV;5vZ-0TEET8>fn!WB&*Zq*bcrXB5m*@D&O$Q4Pshp#c99jGZ8@Ga+AL z>S$lkybJs`O27)U!Q^qnRns_$kI2>{CzbM*>4k(whoL1!Jq>oDJO&rRbbZIyj`uvK2N?DZ7RL1i9 z$lX|lN^Zpq%}DAf9z7{=&uo-^!23-JIXt9PS#tVhDb*O>K)ukUCqd^F_swvA2?aga zPHA}+LJqJq|4otmIp&>VPDDCHg!1oE;})ER#5P5OaluBK`Xo#l<^PhNQ@xX8bNmOm z<$s7kD+m`HB>I-?5)x{4>gazpfw1GidxJl^{Qb)zl6Oys zN2fzGd~`GravX>_<~E5sRtMMiMVzpwx({8tt}oZbY~}CU%E>PIx#j1Au1H2*$XfU3 z&Wz1GI~SVEFvT*=?L|B=LI=Oemv-~`U)5HMb8WFTW~k*5NgGtAv_a{tE3F$~JthO{ z%S;~2tvI7vNhX)A*|c=luO3GbtBzRz?ApTWR9Ro16lL8SJ;uI5IbY&8;Z7FoFjr+) zlqGEt>^T0ybG1S8!dR=g5{~Q%%PPIjF+LLB-%_6j7dx1 zO>11nJ4J^@32V$v?|wu;;BQbKfIyNVPSt7`bJ0)|tvUL!3~@3)+7RdCFkyE8=&ZR>{t}Cu1rOo)gg2B zW{5)bltGlwfAV|jFDwPv0?pJ&FMnYvq?Tc+zw>GkTa~`+$J=?W>YW$6sT*UTbR}%H zv4U+|FS~5jvIDnXTz3RX#KrfwxI^}&6{aUMWXo);ZPdxui*k%ag5RQvkI@<;vFBqp z(uBb9qqfwYQAc~su|MqC|6bRRdcWTrdd3@jW-9y)(;s_=2ch<&@fgVkUo@U3T8@4Y zc_w9uXt@`S7eK`ACnD}55ph}_gVpnE`ON);yewuS&f1WVSz% zU?FFImJ~mdz+0(;^y|I;fWA%@+J>)_TNul23gvuDMGvrI;&&`g_ z!=PZ=>nLRrh3N0cdR=|Ij1cAM?2uadDcGe(X)o6!HZ__7TT1kF%yS^UGbQ$F(!0W1 z)Y0bRQkxAjCVT>Y?>bLEy*~rTz2H4>JszwGT5@dPQpLRauAMMi&?H z|G%L2Yd)II@1$TC1@|cUBLo^PR~NXcq~$7oR~17;`{KXS_m=crt81B_>*27uLeXRu zJzzAidEcFSd+P4tXzQsBbC2>iNzXMEt&lH*7YrY&dMw1#LMp~TSAQ?5G{&=5moCL? zsWUyZ#G!sY;Si^Rc|%#SA|mS{__)|3K}hI;>a*s|jNNEwbUY4M(ijF(9=u7u^k8B_ zBa>W<14ps)rN}2(c;9t6}bAg`LmKgDhUle6YUud`ELQW83JP(KNBf8>F0%%<0kxYrpu;~qnQw$ zD<;4v(cUJQyJ0I^HHGR9MJo=in#c*CM#T~y$AJ3C`t|CWN%M!z`whe{;vsQh%D9cq zngoLLy!Ls#j-H2+N4)f~frK3g(|jR#mUMB-F)x1OfI)9fT*Q2@m2#1Pts=vKsTU{y zDO537waR<+2gjfoJ!$)pLrmRbfS0L63AvO4yFVGSqKC;>!hZ)2J^1$nIDD-49=tc{ z;1gIqI=lu@>k>r3N-=ELp3Y<8lq0KPy=GPV11mU;ahBXly@SqR3#S~th1Nd%34ReA zRiyVthQ6S}q|6v?GmZ8*;5#$kCT>;IrK{y_QT0o)_Df_$zsxu?CRN7S&1;*ONpAI2Ij72@Y4e2R?Y{EG_VNer!sVI=g$=R7o#Dcr>p9;k`Bur@ z=OTrtmRxZd!Z*Is_*&a5ZL6*8HIb}+OO_APv+hH&u;>d#!IKep&2r68)NRTseC^yT z=R(zcBRTtEa_Y{FxvRtO>eZ7WcQyQKpk_B*kAA6~um#1x>uQM_yD* za@+l)y0w(GJ@42eMIDH_wA^yPxPC2b?c_Vf>(i0qF2p^x+)4yd{Tu0cK)LaPBI(9i zwpzL2tcI~gsH7!Y)Vg$R>DKZYvb{L*iqAoWcz!cm(&Xw8rwjDiZefEagWtW%w6<< z=r&~L6D6Iu=odL!5*~&I7z}3ovycB{#4h3iTqccY2JL4BU&*NVX%g0*WH-#27PbQ>ZotpP4>FD7K ze*&;&A-|%fLdyO83s;_hLCJd(Z(%jfgcFxg1jAHh_(g8r1S2~~f($mzWBw^W-!A=j z;2`UpI2C8~Djhg6O6S5zAdI095)JQSc_tTpBjPwElxMUrx-laHr%@lkmpx;}{Blds z617(>jy`Z@-!*Glb6WkGjv;*HYR-SPCymF}002HRJyZyX7>0Rr5kdePQ9?!^G9Dk6Nw>TNM<%&f7p0$!__1?R+8`V$T z^SoCmm)^Zv`$q5Dv5k_}yWQ)yzjfxt-T6yqF>n+Gxu~OT)gE;;!XF-doBKA>i-Ga1 z+rvAqSO@=P0 z;a}2DU`=|f;l=rF9?KO2gRYEQGW1zdb}{rNNv+(>nRF>=ZH*dz+o5H-HyU`d1&2?8 zgXnXS;q-N&HI@V9(kzMIt-M(Iyx=1+?MBxc=EMyKJW5DFt717JIoj-Gw@GSus~%SCmHl(Z4J=mR~&;$(8>ytLW9H;I(Mh4p2nud#7uq@};48QMrhRi$8W(D62M>)f~=hUc30t@ZI8QOZR*8 zk*vX}eGs$>*&J5j?|o-QeE(sn`vFOxf4OI6BJ3z%ty=YbyWBA69C@kY@`Mm6M=!JBWKUcDJDX^rN#E_nrq`@>>G z){ciIhO(-qy)WBWaCS}6PpfhA%w`NP730Ami5cU(hzIbl5GG$*$iZL$FbJ|b)UJCG zbCFQ>Y!S)sw@FC0e#sih@QIeJG3H_=6Ld^b6D_BKh0@xQ+t^RMk5nGSiGfM@`2BSE z1OiY5*XYM267huclgHoy??-HaKqqW3M1Ahu$-qcr;~$ZjvHyF>_In7kY^-^iHS^ZE5@1rqEx-crVl9DcY&)m|-w;m^5Ie$P+{Emqn zZ32Dl(&M3n^Q-JE{FG#+$p5XQRICK@#GcwAOddfKUI=$x9(lbkv z^o+Rs3SU0a20dNb1VIl9#VX1s6mB`bZ1SbcEjOu7y3psAr-56psL;!FLMh2Qta7aq zw;cMq18D?DfM@+1KoT2q)Nz!oonu^ScE`BRpeya7|9a?T+9mJw6sOtgMV_(8mZWD{ zoZPR(fz~L2`Kwp)s%?Gco6~dI&~3z`p-Y~FpuNNh7E(!S>@De?ww)rk*`}qaP=a`X zynYJ`<$94$JUm`MovNisSzLqGVMI#QZ9{x1#dBqnzrq$qW!kthbt+(QIE6qR!Hm*utW|DNITK!I^rk|q)Tn+l6IgniaZMa(X6H@MA zBWBP$$;6{S;&ll<9o09gr*f{)7;3+L11n#@q()W#CQ3J4jeuQS)ZHxSkbhBM3*{_? zG_FrZ%B3>s$D>&Iml6*9ZzTzZp^vtsq)W~|)=pn;z&dE3OKCRDrO=A)Ld*R2;d(hs zpL!UjNWf2}Hn}Vblc}VZoHdKG@ zDaHmCGA6+78JVAaxh!#n6^n%s@Rl56Y3a(HM zMx2N_#eDGZ5LqoO6p={LC_~b-NYdky=hv?gV)T~?k~JpCLJ1lZ!Kb2`^-!D0Z;0jZ z4ChONmq`B6#TiP0Ll3t;S#UWOIAeDHYt64TFIjLD;+>i0nc$_Ut1boy>8{qhb)icm zq3P$~EGVtB$NzKM<`nVi}d;jLOw&b}(T)1826q z^l8n(Z^0M8Irr|uZ!Fxcx#!tv8`!W9Zj#P0uU1TtEGJJ=4$IEPP3^KZo>MHv6yv~y zB^+l~5U;GKsF!UkI8LoBUQ!A+)0tRFOSq&ZQqqQ3I5e&Berd(3`y07$<*wdb3q&e+ zMM`(Cd!wZX?{arvj2<}`Ej=fdQ5Uurk^0)%D1>67{#suCYha-VPkwO*5%tUI53PpW zyw|#4=??BdKXZ0aPH47e=Y(?WquC93q=u%uSGboB#ZR2PXa3=2$lkY9xzzn~{mNc= z*}_wh3(miBarIibv~}IRzUOxe?$*EGejHYkLE}r8DU;=g*F)U-A5Mn`FGWv06|z62 z$^Vp2{xI^Fx1qG%zmt#i2tx!(Kmgs`&Q3J$~q#2yAa*9>;fn6 zVTHlQ4xC(RzvKK6>i|B$K+wZCtgRG(AzNv@s5Ii*|7+DN+}HABmAl`sL=$3_`|dou z^z7@^OQw)(f83e5c>TZq7n3350JG!!_fItSwx$vQQ?4}J0Ts9Y^!ISHh<|<3qyum0 zVhBFcCtp{fIJ-wG*Pn6)43blJn0i^{bWnFqmG2Y32^Aekuc#%`C2wqu38#bJLk%re zW>i7`WF)!M-%;)SA%y%N;;tc${|4P(q=2z<7wJ8DL%}NsWfI&HdXICH{kM{w#E6F! z%Yb6!*5up-lRG7dP?7*|djF>cQO=@FKokWw&R7RUa= z3`gV{E2*#9zF_-ede9rqtcp0Qp;~3O$ISWgpdPfY1~$x1OvogXXzH=25oO=bfnF`* z0pAW`@}(!@&=V~v-u(d)IL*68G2na3nPmLj9Csc>tbDtaH{(r_owL>)Cct%4QOGBz}r%tjofMJHP5 z%w9bvfu6CA+T?W$g*xRBFVt*TysePRAVi?am##@(!jjyATt&%wK%)E+6EyCmb*xf^ zE7_b9=)58l1}X3GSQ%>_Oi7S+cvh2cc-9DW$;rKb{ry&Y*Wg;nBi8bqACNULL2E-g zo>6cEI~^N^kFn94IMQp*ALxKrRj|&dC#P=n?-EE)TD?T?^R!$AtN-eCoVX6tfnTM# zU!yoXe3H&j%`v~K()}Q~=g=i0E|;i|L|c{aN?)ZHZ&AQhlt$@pmV&P!AW7%w+I{YB~{;0ack7k7IW+kJNDl7g&cb$jxKC69|On$$=PJckX;(&Ls?ajAL_X; zlN5z|BJC$a{TG-svx{5$sIj?$(S&WKtJxd28tuv4aX9SXy^&syN>-+#P*57gF=e$l z)oWkKz7PANbi{5)NM%(8$faBge)ABcw1{Z^JyOfY)PqVe;W5hUpo|r%1KV^VgAV?p zf=Ve^<+5iC2+nH67TT5eD>quTQRHF*H1tNV9Xe1=&x~hix5~fS$MNTsa4HA~(0Xv} z%KxE)Fbdq-;%G(1n8>i5>!r)m0VJuqa6oW9j^-B=OA!J_l!%2n;l7OB5yO;`s zO(wFvj|V6T9~%5!TE5>!0K;MiE*P<_haIfqvn6}e_&v(4XgSJC1$toOYm_?yAqYlk zecj|pt~SPb|Fi--g@jR_-s}HNpyDr36p&Kce@()h{#_6Aqz`9=zbIJH0)uUNYWswj zKgLC)(T!TpU!-Va-U&OWTz9SlR_CtkyfEJP3CQIT`$dgPpp8mftcN4Ii0yj2saONULg%GrkkU`%hDQ7>{d_?uc@HTN2RG zJ}(OBBoSsNQHL^WGeYNgCKMKvU;TGlp6{XrWqAe*uI0UF?_CXDxDvYIkKMQxzCi{(w~Z&rR(Z;JGUZ{K z!P)jxLyGehtd+rWfrfF(a!HaIPaNmfc)oP}%cd`Pz1j1tJ->ElEj3!w94Tmt0} zjHwa$7pN~W&lAT(e)K%gD_!N*j;#;f%Mnf1#-cr5n$Ybup~sDELR;)V@6=Uxi_fB) zi)iFO&#Ak`^!{Xa3nM0|0`D2a54*!JG~w;Pz+R9pO_63PT6E}$-UA^qxnU<_yKUWLh$s2@nu zO#TQ3Pg0No(iRa&|0%_iunQ7FFeUtAG98g7ERGXYM*<_E&6R0YF^ei$wF-w2gM~6N zLXtklfzWDKxd<{#NeD4XC?acL~Zu8sC>n}tbyB|6k05>~N5&(B? zfsrJz4fQ;xeVNVU-^I-${`Kdv9z~x}x7vzVsi!{68HN>fT5k@5W2TGmKtV>~AIQ8? z@t7{)kDX{Z6IMeHbdv7>ih?={o}obDJju#ne~$Sg?!(gg4R+!Ti62zRR`%aSWF>vb z!zc?MlB5fHVRK&0T#6IggEuzJjf$TF@?sD?`pw<%9{i1i>)zPj6XCrlLY}8KnudRD zzAPepy2Jl}qUc5Z>vw)IMWsc6-DS4QVy%>kL>Txu3O%OBBL4UvN77D6nK1Bwi7|)lh(IyEnoIdfu!IRw6E3czV&hVb0s$ zcOwyC(HSF?Zr#c4Y)l-}m!Drsji*DL z|6`p0>B@vgX-+{f=hf2?OLr~T(b>z^*R890Ygv(k=2$^TxS(TwSEOLy-IQp-A*4A4 zDj(iql$9q% z;YZ5};ot;#sJh?UZ{42o5b4Z&q>Y&LIQ0+#&XSl#OkAvo7N~96aG(CJAs-ET>hTMxXL1I z))wMy^B+?1RlE{K*u*cC9N4p|NPT0pSpx28;&;>Z{7qy}?DNSd;J(Ml21ddIBcW%m zM+a_%ZoLS$LQl#$auDK4xkNwnDYxk7(yl%U-c(?XJxu0i(sIC0;7!*KkZI(SM}z%x4l)gr05s%vc(0Mp>DP7|Fj54j z$!$@$Y*Str8&Ok|LkEnxI+vuXt3OU|1zXQj8H`#g4P3U=f1nMJIhvB3J)|hk9z-Kl z$S{%0pobjbi)&m!$TgxjqH?ZDtDMUX(zqWtjr|Ul$rT`7A@!3h!W~nxWpUa*mPjK} zs_r?`Yg3g`Dmc1G5!Gwi9aE@PY0Mb8N_81>Yhm*BB~qRq15SvZCZ*D<)-q|e!mC1+ z(gm3fz(w-KRp}_Trf}7)&oz?jIM!AXGk?P7UZZZG+!wBPi_&+crLNKr4RXd#mr zQE4`fYgE_5HL=-okbRNn1osW;HM3tXsZrHQu0{QX_P44_R=?xg)K4gzeVg8CvpJC8e_?2w?R+R2-if?j3X7~-d=9MXyk->+)e$_%=`W7y5)Szyl>cn^=ucpvF&n&Pgz33_>L~GP>}jcW=T8z*w7D&M|dfExh55Z+d@Rle%`(`!3DQ+3z;B;*6>ly-F+S?w_y~+*xTh{ucYXM((V7{K#3G?mm7_{&r|xAKShA zCB3cBvvRClzq%Zp3v&xIXp!Cx15*?)Xme>&smiRSGF1m~r|8cd)XqIVC3jwh`wl#2 zc0+gu2$4M2I?Fy1h_ABd=FrC;S<@F7kD|iQ*bV zAeei|J?)H;e*2b0{rPVSHad|-q$!z+hgD4EgKJx_Zw{U!_+O<0f>c1pNjgZ}f80Oa zNroSzLK=#L9g1@hXNx1&$B&U!iLGaPc77^=lg7yn*R}ac@-+cBT;d)7AE_v(hU*}g zK&4K4{rpQ*|c0B#b$NEEhX8hbk9)9GhQ5KPCA&P@){j)CRm63-X7+< z_sjHxS(sQo{L~Qn@L;k^s4FwzK6QXZ1vOnM`3WoAEt;eQkD$qTOYyi*u?y- zkamKo>_=Ai+%iAA;E+?y%--a2@H;~OCzSth5D2#OveZ;^gM1Z-xz7y3*_l9o+vw&| zN=3b3Y!K4O=^8waFpq2G8~G-=V-swHzUf)Gg!7Klt5GO53t4Q!c8-nt0{+e!|IFmH zA3oxke-*#@p{`Ng_Jk)n=A(e`qGpj}I2;&k@4;z8a4`U1r-HS6mX3a(^yA1B#x469 zCHzkm&>6t|5(P{~`~uy*NWlYIB8wFC<5AX!oTG@ZBSJ`lAD2(lO&arKASy}zI(y?C zmGmJcOCFJhVIx+B=rAQqVQnjMhlq9YK^kLS*d6fll$EnMx@7(g^b)gillGYjnALRj@@ zd}`%l#8C!2^Q;P30u`48yWgl^-5)J#mWsOtC4W>(UeJnnsvBZUzmvC|w~`UDRji)b zu(f?RRjzfdW9|AoaPks->h&XW(ev7a(#lxru5jtD^{%`5zjHQHdJJYHZDem_OJC}X z+Dbwd2cx!wDifayB+xPOsi+E7?~7LK$6GR4X$)IS~3oz`#Lsl&uJd{+#N;<+N9qW6(bKqMC?q0sv5!rPvQbM*my*TOKT^yX> zaM!#&7|$&V9*pL~qt;UQa(%pf$6DIEwzqAej?sDUL1F3tsIIv%UAboIP2rp9p4_f>%P1D5AuKealcklx!{yWnSKtX=o#(X|@8Kd~67~OEx|2HyLN_~0cYuQkCt^4{F7*(y0 zMl1Kx7~gueWz|RqR3ACSx>e=`(>9!?t95Ih^?mO=y-{@tZZ}pfZ?vxEM~m9g{|R`) zBgbcPc*(0;z3}y>4QER{r);TvTRmlCTDqFGdh+YV8yU^vo{PyehCcj z^6P2!eD2iW!e0;~F1+^QD=)58!Vql5^XmTK{ExG1$T{E5H!iJIu5`arFJ$Gz|6aik zXfrwTgEbpqq?cA#5~yA?fgA#(6ybl1hu@YB&T5AXEpCeB!yCrZ$>m0J#^_$#_fAoycsF9sEVq)wM&nxD zJNEUnk)mUWJH6aO5L0hB?^fPD{Rb`4T_^8lM|br`OM7Vy6Aqlzyk5Y3k=Gl<%_9Ec zZa@}XJpp={(AbIz0k2p$~j31;smfKg{*z)p&$Np7m-0r;7xZJqHeZJ*G8yOVB5r|vX;Zu(+ zNw^so{b%4FF5;n(j{Oojtc*j%8OcqdmiFRKsZ>2fZNSz zD#lUd;8vSUg@VvXj#2w$iz&l_D>~!nxGtZ>rD9sL}1z zkg=%-7$bpNwP>xQ;G$B+UD;G$#5kcQmq++d9@md51}nlwJB38j!&x z_eSIRM4oAINoSK=H6}`8Y<*;!m2_Q6959zO!jj|foaFH#m@=-l6#Z{}ny5D{pb9z&bn#bfwKfOmM zN9|*BI8UF`$+3fSNEpb|?7g;Sj?;EwLvsY@Q|an}E#x3qb= zIyTE4KSvFUWKYg3)$skK8khqek5f)Hw*5XdY|)2sQVpV1FIvSo4x13Zzs9=5j}5kh;WU1!P_l&se8)o-8pC4xuh!TQVIrUu5S#Cbjv2NS%}$r=A_ zU@{=Oy|i?WfqUxGbh-);Gb8F#eqE1y^z{DGXv*5x1l&IIL=I; zcNC`|Fef_vZT|lQIHnUu`N;*i=z&)t;^7JwuWx)5YU&G4xYHS%=$O04x3H5Kz%3Q| zbBxW)T>bF3k%NB?!Q^{u;ErX8*2i@;V3#Ris-9TmIDVT_o}#-SQ1A=|qZAM$PDlZN zn7DpW8U(wT_s`FYnr!0v2#lBzm4fK2!2Ku`;3l8rll0GrD=8j0P<4)=h z4rZGsl~Up>(yi#ZR7jbemJUgfm~<-BWySzh86uMYDP!`fT$ru`;Sc*5)iD}^tAY8ht;ke8QBarmiWkvT8lTCVyldnUMOr8TP;H%eMw$zR_K zH^hZavBHjUVaNL3Na4}slMw17S%-8^LU;g&kC|2B%&OI^U<^hw4=z-!&|CwVX5zVpKJ z3&9JqjN11zKwT4+?W~Pg)`oWM1xE)=j&XP`z4pGN>_KJi>crQ`uE-SYlG``?_7zs91XV|z59Hu<;?pnXYOZa zkynyngUEwgKNPKfB9i&!Qs)O5nQO*(EpJ=ajsMyX_REP^8-o9Tdv6{d)ph0x*RI+( zl_a#6b_tNgz6b;e#3sa2hyrXDAtV7}QNb;-36m)Ob$^i@I|$o+l)Ft^Uid60&J$(6 z_OvqHp3q5p#?v!@R8cBQsm5)R$xKgrHjGI-?Ps>%d+t*Amac#-^E@;2d>3@;-gD1A z_uR9*=iT2eF>loaS3b`cnQ~Q6msh`6`&R9E)5N)W`O3-liSjid`Zv8?H`*3M91D0k zS~0R>v@K~Xy$j3klJc=8utkItn~1w7l-QcImD~k02PIbC3MESx$4bEBjF+rbDchd3 zmEEH&5yp9)I|{===`vVcy{uK2>L zvHLK~dT(uE4n6XcMGNm1ExdCH^{<%R99!J_sm(_NyY$AKn?=`)A}5lbn!BEw$v#BM zm@`out6TL91#;ACI4RX2zk3WWeeZgzCg+al+`cqniq$Na-xc33JR7fD74y`9L1)kX z)k8BDe9CP9GE4;S|5e?wNb~IuEzk1W*GgZhfovIyOX`Z| zfKT2V>aCE}6;)$}!RZv(SD8m3M@7voi&p^*2bqe#l zh&`UERvI8=&gZ^`-92TMBzSVkGC2h2u_uP>OyLWdl$OVvNaW0|AS7rxl9a6#0i3wL zv&_lhAl>^1N=W9+V;zLEd})K0ay>714)cQNH>dy!aXB5;rAGqI;|!dGiT9Y?@26;l zD9U4a9-$5_%u?DFUz&}{?Lu{GqC6Y%GkKgMoboAHnnLd15_%9qyO<_&(q4kCFv7*{ zyi@14L$Yw`)&YV4&b-!D)Qme289~T` z+>Bf+A+92Gf=68XYI3bqQpz~?wJ|d`uw<2am(1Wp@ zTbIVO?v^f~NJC4e9Hpf4Uy$@w#(b5-N5yTR`JStGlDkv&(dF^7@r~c9omdf{yZSS| zCa3DbQv?FGoQMy6`tgB@wnXDvyszN(s}IbU;lRr#gia76z{0IuoyJ}MaQ@Snz|#T~ zSRMYRBOas;ssb8P9-xE4WCMRLPt{DT(n^9nOa}Cr36Bk}Z=qH=D^bE?2}0{Lpax@f zrr|O>NVJ21lIuhmCDnZ<#`2YQ-%U`W+}$(L|sZ&U}h-> zNoRpw-n6yDj5cReOA&>Jhrc}gRX+oYD*Z&{2v9pW18OVST?(kJ+@tblKy3w63vE<+ zp9Hl{foFYB{;&BS#vT*j6DXX~S3EOIH40~7CNpb2?PW3_*kF%j9;M`2*%VN)yPn7v zC3~EVL&g@(oD;0QP!rFR6vnf7rDT~ppHa!=5*Z?r;w)AncI1pw8H%%3cy6{bW-BWV zZ^8eB;a!qiSh~qUtLpArp}MD6g2yVt*-A#*`}KR;9YGqNGw~To@fFuV%J}R~fIPv49G%0AB+0Wl;24 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�a{gxEEC(=wawx3F^fx%siA92LZo` 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 z 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 literal 0 HcmV?d00001 diff --git a/resources/lib/__pycache__/signature.cpython-315.pyc b/resources/lib/__pycache__/signature.cpython-315.pyc new file mode 100644 index 0000000000000000000000000000000000000000..92dd7503744ee41de9274bfbeb88bfcf1958b904 GIT binary patch literal 3624 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 literal 0 HcmV?d00001 diff --git a/resources/lib/__pycache__/useragent.cpython-315.pyc b/resources/lib/__pycache__/useragent.cpython-315.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b8099b0647d4fb60ba599edeb2862138a18d1c6e GIT binary patch literal 898 zcmah|L2DC16rR~lHr>#)DYb}#bc$Au*d!a8BBm%-nzYb1O;T&2%Cb#1c6F02GrKXS z6k;zP{3Tw*qdy}hLS^*iO@u<*gIC`q-Krq?*!Mo(H}k!HZ+5mg6bU1+A4f;e6B0sY zk@yCA&rTNr+Tc%70WY8&W;iD?DJL`e3UI5Tg(wT$Mg@5VvmjsqP$@`bh=rbn#!;$Q z1R*xC8k#_{;CGS7WFGbER@teTx^1~8HEhO*jVZO5T5AE;Oji&;+nuf77H zm%&fpLui9zOmsmAzf4W$ zc(iP?gl%mlJO+pV%&fcdomV_u?Y~#|3_1kcqu}g5gxBb+GWe#pU;A|7T34BDPn@Td zUFG_rGIgL#eZU=Ms;i{h6Q9-ep*nk@&VDR()wzx|cM2uoo4116bTXb4p!FdYPXc{u zL(?*3$*Oxz(!4XH&rD|sZQR{$?6s~wwqW*`jI68?4YU~ogjjF>vFXOLQMT%?!?rVI zvF@5S0fOX9WJ74Qv|lZz^02N~J=deAu2XR!RNN#gE(i^YAU-k`|3q(ouAU#yJ4A;C z9f80HW@}Exv(0;S6jE^kSRBH!j4}Q>i10&vfaboS$hXmW2Srb$z?jrQBPWA0tQ?0? M= 3: @@ -1419,7 +1449,7 @@ class Movistar(object): url = 'https://grmovistar.imagenio.telefonica.net/asfe/rest/tvMediaURLs?tvProgram.id='+ program_id +'&svc=startover' session_request = '{"contentID":' + program_id +',"streamType":"CUTV"}' args = urlencode({'action': 'play', 'stype': 'u7d', 'id': program_id, 'url': url, 'session_request': session_request}) - t['stream'] = 'plugin://plugin.video.movistarplus/?' + args + t['stream'] = 'plugin://plugin.video.kodimovplus/?' + args if False and self.add_extra_info and id in ['HOLLYW', 'TCM', 'AMC', 'MV3', 'MV2', 'CPSER', 'FOXGE', 'TNT']: i = {'id': e['id'], 'show_id': e['show_id']} diff --git a/resources/lib/plugin.py b/resources/lib/plugin.py index 508bbd0..c7691a9 100644 --- a/resources/lib/plugin.py +++ b/resources/lib/plugin.py @@ -662,6 +662,20 @@ def login(): else: show_notification(addon.getLocalizedString(30166)) # Failed +def network_login(): + account_number = addon.getSetting('account_number') + if not account_number and not m.cache.load_file('account.json') and not m.cache.load_file('tokens.json'): + account_number = input_window(addon.getLocalizedString(30502)) # Account number + if not account_number: return + addon.setSetting('account_number', account_number) + # Keeps device_id.conf: clearing the session would register a new device. + if m.try_network_login(account_number, force=True): + show_notification(addon.getLocalizedString(30503), xbmcgui.NOTIFICATION_INFO) # Logged in + xbmc.executebuiltin('Container.Refresh') + else: + reason = (m.network_login_result or (False, ''))[1] + show_notification(addon.getLocalizedString(30504).format(reason)) # Failed + def login_with_key(): filename = xbmcgui.Dialog().browseSingle(1, addon.getLocalizedString(30182), '', '.key') if filename: @@ -686,6 +700,7 @@ def export_credentials(): def select_account(id, name): m.switch_account(id) open_folder(name) + add_menu_option(addon.getLocalizedString(30501), get_url(action='network_login')) # Login from home network add_menu_option(addon.getLocalizedString(30183), get_url(action='login')) # Login with username if addon.getSettingBool('enable_key_login'): add_menu_option(addon.getLocalizedString(30181), get_url(action='login_with_key')) # Login with key @@ -750,11 +765,17 @@ def create_iptv_settings(): if os.path.exists(filename): res = xbmcgui.Dialog().yesno(addon.getLocalizedString(30322), addon.getLocalizedString(30323)) if res == False: return - save_iptv_settings(filename, 'Movistarplus', 'movistarplus', epg_url) + save_iptv_settings(filename, 'KodiMov+', 'kodimovplus', epg_url) export_epg_now() except: show_notification(addon.getLocalizedString(30324)) +def export_channels_now(): + if not m.logged: return + channels_filename = os.path.join(profile_dir, 'channels.m3u8') + if m.export_channels_to_m3u8(channels_filename, addon.getSettingBool('only_subscribed')): + LOG('export_channels_now: channel list changed') + def export_epg_now(): def report_progress(message): show_notification(addon.getLocalizedString(30314).format(message), xbmcgui.NOTIFICATION_INFO) @@ -816,6 +837,10 @@ def router(paramstring): login_with_key() elif params['action'] == 'login': login() + elif params['action'] == 'network_login': + network_login() + elif params['action'] == 'export_channels_now': + export_channels_now() elif params['action'] == 'export_key': export_key() elif params['action'] == 'export_credentials': @@ -880,8 +905,10 @@ def router(paramstring): add_menu_option(addon.getLocalizedString(30112), get_url(action='search'), icon='search.png') # Search add_menu_option(addon.getLocalizedString(30180), get_url(action='profiles'), icon='profiles.png') # Profiles add_menu_option(addon.getLocalizedString(30108), get_url(action='devices'), icon='devices.png') # Devices - elif m.expired_access_token: - show_notification(addon.getLocalizedString(30208)) + else: + if m.expired_access_token: + show_notification(addon.getLocalizedString(30208)) + add_menu_option(addon.getLocalizedString(30501), get_url(action='network_login'), icon='account.png') # Login from home network add_menu_option(addon.getLocalizedString(30160), get_url(action='accounts'), icon='account.png') # Accounts add_menu_option(addon.getLocalizedString(30450), get_url(action='show_donation_dialog'), icon='qr.png') # Donation @@ -902,8 +929,12 @@ def run(): reuse_devices = addon.getSettingBool('reuse_devices') LOG('profile_dir: {}'.format(profile_dir)) LOG('reuse_devices: {}'.format(reuse_devices)) - m = Movistar(profile_dir, reuse_devices=reuse_devices) + m = Movistar(profile_dir, reuse_devices=reuse_devices, + network_login=addon.getSettingBool('network_login'), + account_number=addon.getSetting('account_number')) m.add_extra_info = addon.getSettingBool('add_extra_info') + m.hide_unplayable = addon.getSettingBool('hide_unplayable') + m.add_extra_channels = addon.getSettingBool('extra_channels') if addon.getSettingBool('uhd'): m.quality = 'UHD' diff --git a/resources/lib/proxy.py b/resources/lib/proxy.py index 0d9545c..df8b198 100644 --- a/resources/lib/proxy.py +++ b/resources/lib/proxy.py @@ -78,7 +78,9 @@ def mvs(): if not mvs_o: from .movistar import Movistar reuse_devices = addon.getSettingBool('reuse_devices') - mvs_o = Movistar(profile_dir, reuse_devices) + mvs_o = Movistar(profile_dir, reuse_devices, + network_login=addon.getSettingBool('network_login'), + account_number=addon.getSetting('account_number')) return mvs_o @@ -263,7 +265,7 @@ class RequestHandler(BaseHTTPRequestHandler): HOST = '127.0.0.1' -PORT = 57011 +PORT = 57031 class ThreadedHTTPServer(ThreadingMixIn, HTTPServer): daemon_threads = True diff --git a/resources/lib/signature.py b/resources/lib/signature.py new file mode 100644 index 0000000..452a2b0 --- /dev/null +++ b/resources/lib/signature.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python +# encoding: utf-8 +# +# SPDX-License-Identifier: LGPL-2.1-or-later + +from __future__ import unicode_literals, absolute_import, division + +import hmac +import hashlib +import time +import random +import string +from urllib.parse import urlparse, urlsplit, parse_qs, urlencode, quote, unquote +from .b64 import encode_base64, decode_base64 +from .log import LOG + +def generate_nonce(length=24): + characters = string.ascii_lowercase + string.digits + nonce = ''.join(random.choice(characters) for _ in range(length)) + return encode_base64(nonce) + +def create_signature(method, url, token, scheme): + consumer_key = 'web_1.0.0' + consumer_secret = 'Rk1Qc2RaREJ0M1h1MkUwRWtJRmlxWGtpOVpOZFlGN3I=' + + nonce = generate_nonce() + #print('nonce', nonce) + + timestamp = int(time.time()) + + parsed_url = urlsplit(url) + path = parsed_url.netloc + parsed_url.path + query = parse_qs(parsed_url.query, keep_blank_values=True) + + options = { scheme: token, 'consumer_key': consumer_key, 'nonce': nonce, + 'signature_method': 'HMAC-SHA1', 'version': '1.0', 'timestamp': timestamp} + for k, v in query.items(): + options[k] = quote(v[0]) + + query_string = "&".join("{}={}".format(key, value) for key, value in sorted(options.items())) + #print(query_string) + + text = '{}&{}&{}'.format(method.upper(), quote(path, safe=''), quote(query_string, safe='')) + #print(text) + + key = decode_base64(consumer_secret.encode('utf-8')).encode('utf-8') + hashed = hmac.new(key, text.encode('utf-8'), hashlib.sha1).digest() + signature = encode_base64(hashed) + + res = 'consumer_key="{}",nonce="{}",signature_method="HMAC-SHA1",signature="{}",timestamp="{}",version="1.0"'.format(consumer_key, nonce, signature, timestamp) + return encode_base64(res) + +def get_auth(method, url, token, scheme='Bearer'): + signature = create_signature(method, url, token, scheme) + return 'OPPlus {}={},Signature={}'.format(scheme, token, signature) diff --git a/resources/settings.xml b/resources/settings.xml index 3719206..44293c7 100644 --- a/resources/settings.xml +++ b/resources/settings.xml @@ -1,5 +1,10 @@ + + + + + @@ -11,7 +16,7 @@ @@ -34,8 +39,8 @@ - - + + --> @@ -47,7 +52,7 @@ - + + - + diff --git a/resources/skins/default/1080i/customdialog.xml b/resources/skins/default/1080i/customdialog.xml index 2fdd7a3..c45d43d 100644 --- a/resources/skins/default/1080i/customdialog.xml +++ b/resources/skins/default/1080i/customdialog.xml @@ -43,7 +43,7 @@ 1030 70 font20_title - + center center FF000000 diff --git a/service.py b/service.py index fe89b5e..9e29564 100644 --- a/service.py +++ b/service.py @@ -4,6 +4,7 @@ from __future__ import unicode_literals import os +import time import xbmc import xbmcgui from resources.lib.proxy import Proxy @@ -29,7 +30,7 @@ def export_epg(): LOG('channels_needs_update: {} epg_needs_update: {}'.format(channels_needs_update, epg_needs_update)) if channels_needs_update or epg_needs_update: - xbmc.executebuiltin('RunPlugin(plugin://plugin.video.movistarplus/?action=export_epg_now)') + xbmc.executebuiltin('RunPlugin(plugin://plugin.video.kodimovplus/?action=export_epg_now)') if __name__ == '__main__': LOG('Service started') @@ -43,9 +44,16 @@ if __name__ == '__main__': except: pass + # Refreshes the TV guide channel list (new channels, new numbers) every + # 6 hours. Opening the add-on also renews the 10-day Movistar login. + next_export = time.time() + 60 monitor = xbmc.Monitor() while not monitor.abortRequested(): if monitor.waitForAbort(1): break + if time.time() >= next_export: + next_export = time.time() + 6 * 3600 + if addon.getSettingBool('export_channels') and not addon.getSettingBool('export_epg'): + xbmc.executebuiltin('RunPlugin(plugin://plugin.video.kodimovplus/?action=export_channels_now)') proxy.stop()