From dc04d0d91122b56d3c0f137c22712681441c83fa Mon Sep 17 00:00:00 2001 From: wokar Date: Sun, 15 May 2016 23:39:20 +0200 Subject: [PATCH 1/5] Added lgtv platform to control a LG Smart TV running NetCast 3.0 (LG Smart TV models released in 2012) and NetCast 4.0 (LG Smart TV models released in 2013). --- source/_components/media_player.lgtv.markdown | 44 ++++++++++++++++++ source/images/supported_brands/lg.png | Bin 0 -> 27517 bytes 2 files changed, 44 insertions(+) create mode 100644 source/_components/media_player.lgtv.markdown create mode 100644 source/images/supported_brands/lg.png diff --git a/source/_components/media_player.lgtv.markdown b/source/_components/media_player.lgtv.markdown new file mode 100644 index 000000000000..1f6a157a4701 --- /dev/null +++ b/source/_components/media_player.lgtv.markdown @@ -0,0 +1,44 @@ +--- +layout: page +title: "LG TV" +description: "Instructions how to integrate a LG TV (Netcast 3.0 & 4.0) within Home Assistant." +date: 2016-05-12 23:22 +sidebar: true +comments: false +sharing: true +footer: true +logo: lg.png +ha_category: Media Player +ha_iot_class: "Local Poll" +ha_release: 0.20 +---------------- + +The `lgtv` platform allows you to control a LG Smart TV running NetCast 3.0 +(LG Smart TV models released in 2012) and NetCast 4.0 (LG Smart TV models released in 2013). +For the new LG WebOS TV's use the [webostv](/components/mediaplayer.webostv) platform. + +To add a LG TV to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + platform: lgtv + host: 192.168.0.20 + access_token: 889955 + name: Living Room TV +``` + +Configuration variables: + +- **host** *Required*: The IP of the LG Smart TV, e.g. 192.168.0.20 +- **access_token** *Optional*: The access token needed to connect. +- **name** *Optional*: The name you would like to give to the LG Smart TV. The default is "LG TV Remote". + +To get the access token for your TV configure the `lgtv` platform in Home Assistant without the `access_token`. +After starting Home Assistant the TV will display the access token on screen. +Just add the token to your configuration and restart Home Assistant and the media player component for your LG TV will show up. + +

+The access token will not change until you factory reset your TV. +

+ diff --git a/source/images/supported_brands/lg.png b/source/images/supported_brands/lg.png new file mode 100644 index 0000000000000000000000000000000000000000..d08ff623959376cda9f3bcc6aa234fd5143970f1 GIT binary patch literal 27517 zcmY(p19T=)vo4%uVsm2Kw%@$5&53Q>wrx!8WMWNh+qUiG&UeoF&wp>PwR`WbuKiS1 zukN+Gp4t%#a^eWEIItifAPABYK&5~E?7wCU4f*ffR`Mhd0`il}LPSJCQbdGE!O_mt z!rBA`L?fh014=;Qi-9LQaCa4b0!uQ32tw~I;`6J|MzH=^ul0Kw%S)Rd zHW$JlR-8io4OFO0Z1#T0^HuR;#~vgf3()lg0II)JtS`&x*T4x}7Bb>WRO zHoD&BC8o&m68`I}wrf7G?e*k)_8k%{^J55fmcnlf1Ksq=4Dl}>7KqPZxCbE+Xb1r! z@OWx|A1OxI;2?b|M&dO}fwyD8Nk|AK5c1_!{QgXVWJWxDnQTE?DO+7lOYH00`}14y zkn;HpfZN=|1;LE;Ssj({U0DGef@b1(K4J*+CrTOcwYJRzDk{a73Nll_gMo(qo`!gP z4+T?)F2@SS@fYDGfGHlNK?tP`)MiX73yfADDLVl72J9=jDHhye2bl|2NtkB@@--hz z2L!Vh!ycb4Fl&e71QMwijR}6Jmn|J4N*|*th*2Likccff3>q1C;0FxAFrMx=yafO< zp4%9XTZAB<5FK_S_)W-ym=Q@Qq(-bAj}*T@B6@)N&--Xp0ChpM z;#8T?g0Ko?1-xq986YPAr$UxFTP6a1=#r3j!RU#(GtC>`8%{eKf21zZPFYd;R$){L zTd7SUM5$N-L*Z9(yEMC06R;_&pdZ>$g;@>DP6mtu&Ix8d7Q2tm(6#gM@|@phdJ97hrd4aY8%EE6?TEmJY``45(suok`+=NfPgY>i@# zc#WM09zQ}ZE>^}ZxF-1O=O)=E1%H5U=vJgaut3lk&8N|u2_)N(h+hBRtX-~t(NHgV zIB>3jynOK+59`q`>24aW8qONt8gh*b_0bL1^^SFxjc;`&^-GPhjaPNI4cK)M^@nwv##sj9 zbx{rLb;I>}W`2LWhk8c}hIR)NhGs`@v(bjA$1KJ@;_pe!1dk~&Inz+oxt6(WymYKK zCN|bK0yaE0+}hOLq4_fTK>0lQa`@~#GTdFMy z1fzynhUh}?hcpF~2GfS*MdkyOMFW9jz)(?xLfFEuLh?cpLnda?dXRdSdK8D>t! z?!_;^!Q}wrBx;3fhH{CTb2==dcO?g2)S%Ru<#^?~<%DyvbG>tEze`Q9jAcxejMq#A zMkB{OM^i@xQu@cS$H+&UMtzbolb#a<83l`l6zUYX%4dphekn>aE7i+6h)N2Lij=EZ zC}k+FYH^FaCcr9*s*_6|Hjk;RiY}TjiY+2pqFM@DsxPK4hAj9jFqSi#-&n-6)3BMc zd$9AfjkB9Ig=-mCOI3T=_}bWA(p-|`qvQzXSn*uD6uXeRXgjw&s5~N`yPWnv#yreF zKp|kkmA7ja9+Gn_DETmUu(PR*CblHWnHnP%k zWN~7$$FbS9_-m$XWjDDSP@7|0dd$OWWN73xW!C>}h^@P-6JFI=PhRP)PpRiOUbhmj zb86|Zd>+(Y78v(k6J8-6Di}^!nq90Pau}D~re3yi&0Fa1f6wJ=yl|I028bwuqv=3 z=qWHK@LZ$}zz47mVF`u|*+SY!j6%YN!Gx1X$cs^k8Hv+~V~eVa3@k(hHi@z-A##5* z_c2o%9vQM5NgKB8W-0bXJ$p5!dwv5@d9Gq z2~H*VzC_2ZF$iU}xvPk#5drbzz}o zTVeInn!$$n&+jHcHB9w6=cnCNGj~hO220oCe9h9<9Pz56PnLVf0pfg4RmV!l@b#4o zg{!S=h+DPGy9?t(>$A-Ey4&@sPu6=7(gXpYr}@i`Zmpc%F=>o=3t^=|_hRXW+kM1d z(vok;S1M>oK&tRy?-FrwL9;>1?i0#mLPwES(WcRx5mH_zpAU;Iw*bp76EpiM4>#{2 zf71uu%j)oP{j^(Yk{*%X@5z}-^v(ls%~z=d)z7NEiyZFHwl9y4*Hehvki})i+8%lW zzaT&5x`9TOM!F7fuR(j0m&>n~sLI{S4y*F(lkJplOyBJf;dhbmx9-QmxCFvy0Tb&w z8x_CQ?~O)_uGc&1k+jX~KQ_&mw0bE$Pgh)*beBUuB7U@Q40m0hVXJYNUc_Ery9W|? zwM8J=bNb!gAl?;_AlL9923R0;lX_9SRzq2T?xv&gX_%!RTP^!nWQLFroIYvlUn_kw& z0iWQPDL;=-G-%&W$8PFu`)$K$)oJo-{_BsZ^;B84&q`z5Z&NFxM%eyb67Lp;OhvKwK40yCWxh^E^k2|B`%H5^E=IG{KSkR}S z%^Xdcjg^n}9m}WZ4(pH5;09n1qu8df(Y2GglCK!=c?g|}+xgl^IvVy2$BVniYbylw z3MzIxX;dq{CU@KQetCbEhX&%N#5BpuPF~XIR3q66*y6Ub&k1ZXyLi1#Rd&?!s&{aB z?L4Pn!3iq(nQxvyQe8P{>76FMeO(14^sW}T^=Fat7Hto?=Gn&C$$4jci$^qv95a@d z>PAn&cX~gZ^^Nl5RZlfa;fYKWGLwhSH( zLXoeLGfJ6A43D{wWR6IVH;(wJyH~H2s?=teCYGI*lvK*i<;>}vlcb6pOg$w2>UqHJV>4DUdgm=V|}t7>%}^l~P=epKCK!Ez4Jc^j${ER7Xvs zSua-4c4u{@bKt`W;xxo8N@_~==W;Sza&z*gz_!z_Y`jXfaPdr?&T6AJ zbeTeLyjxdSUC*zy;Cje?zp~`;=rQ$jsf%NQ-kaA5>fL6G_jku$j^i(!%@Y2p=fG=9 zey;br_Lk4tzx%7*@}J?LN5XUQeRWsiuVtI*^U7%s%P=jH&(v{d1kQs5Uh6Fyg4bl;A~<1X5d zwCBr=yha@e+f&|19|o<%-+CY4(;tLn`q+yZg;XEkLc2Yf;xNa`wtR6scF6Vd*9_mC zf00nTkQFslfIt`r$wJ}qpZ$zi2IVef=835{Rc|OcrekR-+?9~=m6EeKYcMI z)+C!neMLz|j)t^*wgYbD@Z?i?I{bfpz*B=|hwuk~3nkONy}it%@s~eRj>{G2#7dHu zY8zAK?N0xm{K$P|@Dex{y;@iu?JWN=gHR4p7EL;)h|EikPKixM$RTWH(hyK$R^%2L zbv{pXt3Xk|VV6;FvyxmUs~ul1U$SC9*_^RsGoQ0tvYEAAY%O0aah9(6RUvZ0af-P8 z>q;(`A=dVaAixXtIfdXv;LnMR=fNviE8~--(sy}4c5h+9eLn_iO3|TFu{_+c6U7{5 zoIJko&u2dCweOJO=zHl7^`%A*C%OAvIFwrDpZD83nr9jW8W}$C76`Yow_SgsR$XG^ z-tyo%;RVlaEPWK$l{QjeX_`gW4nK#Ua&CU~guR`9_gqQ%!bU17>lPlsge8HbAA{KI zB7mU&1i?c9S#k%tPz90Ug!_AN03!3Ym-hjx2rCbt|D(zudcYsGIJE`ziU^)e(Q-^` z28}0tlHzsOWt-*V_HV6O?us8CI24(ze^mZZ zp2Ry-o;p03VYgygLQ4hfict=cmw=mE9y$IbPc>N5=b+Q3?;w9Si&c^%okFN_w1vCE z&$ZNrB1v2s!yJ)6@MDN)G?ylc9}0;K;Rgl-w<0(q$iuB9^T|TVqnFC}nDCxvmB947<=iv_E3P&x#cenNon3P)>|Z^3s*i zwN$NIvswFGG+glFsZrNkA7<~(b^6_cG-efeWsB2$EJaPOPf-rL4dfx$G1l>!(*x<* zSgoo1h#Gis2+=U#dA0-!p7VzamPi{U5yVZDaN@>uS{;=3R8(=?JZG^1rg9uUa$A~D zonv4TeX&kI2jPk(k6#(#)w5g6oUnBtU!<;7pRMLxZr+YLGqW7ENNm?O60h>R`Tbgo zX`9TpeQv|*woZquY4f#B+&!)F_9N8_=4>Rd zdDbVr{`y}2x?TUK>-ngaxb0!L|3SRNGy;B@55osOua6H9*@#CqMt~45pAjv?%?uG{ z@=YhEgHDAz_wNco+iAbSdQp9`0!I-R(-Es8K1`4t0Y%58fp;OCjEEJDQ?xwgtEk07 zk|9)s(H5N)^MQmKCf^g-`*GvM_HIF8fp0;1`ZPZ|4>fDYoK3`pW{Jg)J)91f{*(@< zX{-TBwN+|hWxPEMx?i^MeAwsY;wXLxeJ68Ug2Eo2_fm6{1knm!0wFD73jhOD_R*7! z79JVW8N%(kpu!}EDn%%~-seUYud9v2HmW*`hjp&uOi(Z3dez ze0!sueCk~xJ|EszA6pP3Py{e%a0YM)u;-EbQPDA((TZ_h=<-?iT(_UZce~|eSqA~= z_eMV`tCYp%S91v@TP9A%*{04WnMd&_oJRaKu~hyjXDdq4owx4jd=)i3C2C_xKh9@< zXr-MGv^Rxn$5>3-R^QpYXiMYgxZUyiv>#pvy#GLwCJcG7cy5HRLVAo_h&72FmV4vB z&yve7_if^-y>EAf=|F94f7vqeaqhQta$k2iUVM)CyZ;uv|2|~=y8qnsJ7N41%)cRo zK?}_2?K23elUvc|V%-2CfT|6dCT&G#2sa#nBSSe2vlj9d$taXkAe@0bVR_(4`JoCI z3gHCZ=->3WSs6|lbGM8Nr7qNMSg@G6)I*|DdR?|u`Z<0p+c!I4;wHd8I3ct?TQc>O zxRLhWER{~pVac~y!4=F4Dh!G8hZ&|i7boL0)3lMCa{ybEuO$84^D z(wi`xpH2y8E0+jagKE=vBGi`wR$DP2XnYe6i7-+*m~El21N4Fg7tpNeq~!49TS+Eb+B?eXbkkY#Qp z7P?)W!hA2-l{USG#QS{?KNEt)`uRxphAD=$DWmf6 za}aZGy$=PBTjJ~7UCS*@ED<^}wcTEmZ`+Q?uhfe-SFT%p-vr0h<(|~v{O#L8i1e;5 zZQ?dagG84sm!u93|^s3<8GD)LOpJ@lX9g^oc}r zMe$@`|53*<_7a*-ARusP|7oBgnb}w%AfTESD*u=pSs5N9I~xWAV>?3=26r3#f7&1* zeC|B|hBhY721M>Q*0xSO?))VGrNQ%W{2wtR3DJM4I9u_PXviuMiP$-s5V13`F))z` zz!DJ=@i`is@+bkt{%88XD}EAlXJ>mJMn*R`HwHIW20KSHMrLkqZbl{+Miv(Oe;V{o z9=6T~?)0`!r2h@_|KR{loQxbT?42#_Y>EDZYhY;S;>=G%@*hM0d;GVb&K9Qsza?9z z{|W0~fQWaIj*|gv{O~9bn_nkw%got za}Ovr8_3r$EPuaWZJatCWplHdO-+DnSK8Wma5zoj2hhhGHoqQsPd*}uD2M*K#BS2Lt^n0!= zEgvzTJ`nKM?&yRWk0*!Kc;=D_zU@mFRLE= z0>)R?ND3{O0WiSFEs4fO=t>N!Mp_cSf|SeY3qJ&KIUbaVP*J`;9DEqcm6h<&3Y-O1 zwZboZa-0gQ84c|)eH(tQ%*+{7Yhe``w!(cwl%(wN)&bx^X$g@4KL(6NdAPi!u(P$7 zsTKI(5gPL&+QK&upFlYVw*~MZoRX$JW*@rO3NfY7ds-mbZad^|l2@_Gf$~iKQtW>1 z)4UfHtTIxbo)8t)Z%}NL*Pl3ikZK?=BQANgKY^zmiuHXTUjL^<1&J|UaLMm)b z%GOuzVk={wt$^rgj(>fS?a5J#Q+h(}fCrCNFHc2nz}>;c#IR(};=8%nn*CDF7u=F>Z^6gk+k+ zbPpSXSeT8Iy{MoBRMmvNj7uZrO{59>szQhqh9(?`EYF8J)bD@=UDuw2CCqEU_>~Dm zT}^QCOI;A0CqyU@H9^Fi)47s{W~ii8w=Z^`5S)gS=)IGBB$EX-!eW#|b#{g>+aBzI zCLg3ACA&BToVe#FsuXQ`$PWN1I>M!4BAQ08KMW3EWTG7|vH6O+-mkDopF{78nJP9* z9K{|tLKsW_#ABTxMZH!~BSs!5$qa1BD&Lv~>Zu1WXMdqQ6h-&At+|Qbh4X9uOSf+* zms)|CY$pc5lSPPxj4VqmDOt;na04=mtjLduP^X+1jX&mBiR{Rrun>h*E>Ti)V$Oh0 zs$h{WtmNd>!n0S=5pJEB^grm}*m^^)dDF#Q>%z&W2oH>CdCc;K#)AoXilP#KdtM>W_D8JJ zjeEZOK(WmAf({|<#10ZaCdnM3vdH9$2(_waZ!)Jy{rATpI&lyofji!&_=HSWLPp9# z}QQHzF2{$bH z7Hy`r0QOwq6D7IR4a#)$7TY)m#{e8%w|0d5%09F584qD8CP&a74yTWF~R6bNm^KQm?8UsNQf!lqn^- zVxed*86zD3OM0=SC4uSHdZO*y7V%o{J~94b>bUM`=6fCq6p+6hP6ZUgd#m!gu&8Q% z5`)imCV>4ZBkHXKpNX5r{Z+UY6Kb8ZXiktC^z!PIz-Gy{Fp~cx=|3QVi;@BR&yWb z?3@@DF)li#b-@nM5{^|7pTZIc6{Qn_mlAr+tiAvE8OYGg# z@Y|s3?TSl{O-gQmp6$ys|JEfgv&ojn?e}L;~x6S+vJKi14gatjuSB$ z&}c^N^p!C(afr-NHH3gJgnljP-*wJe=zdDW*4+qMUwbX$=tGM-TuMYt3&Bhc6D}Do z;(sn~do@qfG4GAMOC_rqMMtoBbJ#sO|B;<_#H%`(LZ$5sO^+ws+)ySA!|Rx&&~XG3 zf(XU*p0RDXSBy#307E4QF0SAN*ad^nV8)kRaC0i@ZiDG)bN#bl?WXwp zfGgqYNDC>0<)2(1gp!sKX)blj_JxX%9Ar~yS7@&ou@QU&UPlV+l$=H~q9*ijOaVG9uCBVTS01gv{-fv>L#(TQ4iA#4Fy>x#F zFp$8aAWOHNo~G3q?}}o%ZpC167_o&wf=7b%5s;1$Ys@Ftk93}~z!PwjusJLDG*}JG zS$p2Ht9;&a8+R*53a4QbIZ%nN-7@FCX!k*(Ku63nZRvg_)TiNnAZhkr5ce_L#p!>5 z_~I4Mib>$WrrHVwzx`U6Bqe4xV_R-8fE!6z`spBBj&r~LK@U5fS&WYTxDvlf;&!(` zXI)t4OW5Yfe;mksutz_39?rFOAg?qf`~&K)z;=gPA1^S>39n66A)&RZDtjE&gz8XR zUR9Od^88FeUA~Ea$_X3ZK?O(dfJF=yBT|_PyYzS7y-xl`r+Y^tH@bW^$(8; z-~o=dO|#jpV<-1}KNg=69_&;`xIY(i0E+C@td3IbQRB4GQ%ahV{!+dIn)2Z?c!r3eV(Pfq_Sg3Y5WyANpXuIA1?0iaZ}VfC!_#5Vc!T*)T?*cM(bW5nEDk z8qrx!swygbrO%&8x_S+;r1uR7qiYeXn&!mieVA#gJC!Xy@W(l3P&DhJ1=YkUj?2598S`KA=!_lwqig?%%r{uet}cZBZUbQok*CV1y_d zG?;|41GN?d7h0P-BT&pUtM9mm->dFJ-cNj@M=*jJ^C!`(6DxOsS?%`BNI^!z4>Zcc z@e^{8j7@Q0K|fNK`{y5H>)jYzNavjgR~yN?FD)Lk)oqIpkBN6m3S9+>V>JQ}Wa330 zUI-)qBX3xy0?ZK7U!0Y zVce_qaEX+;f%XI|zVYi%{y?j3;a)R44q{Lah~9L9bRY~V_*Gn(=oQy#MBoqK43ePPgpl>W_j_YWt1l+ae-?+JN(TCk?e z;vIJPN<^9;b@2J25+gDIAByGLk$^(7a-;MUAjw58&TrYAFcGA0)bXkGU=O{QV0w@+ zB&)84*l+a#efSw85~aZ$W6OC~#-fv9z2S6RI}tEk9sgO1Hhl-| z%(hFS=d&m9KL^z<^`B3KMr3KmECSp)U6iXXvOd}vY}W<1`qCYA|5m9#cB{Xzyu1i= z^YZ+UZ3*Gei;EboYy>+oLw%2~im9E$BVtO(m=b6Js?Y7;@2#4?s51|AuR3N4# z@7+@74HivzS?W;OF)e?VnalwT0=UXqb@>Mz+V$iP=LbAEDlI8u`$9jmdnwX2+I->E zZeC~l;2akFq!SVnY;CqMZT8NPzpk)RUPns75pC8&5eVN<8m3zzu{BSj8|uqp{g;%a zc45Pa-!nt7{*LCeMs2&pbqM$%4Vjt|z5dbhJ2^rSUYiLl5S5r19+z@$UnPA=-So@a zym$Q41rdxU6z}~A_vP`NZTyw#iyya!ZPbR_GCT0lSgv+p70&tkTwOfBEToJ&qDTR&Vu8 z@NtCXH$*bI>ljw29MdS*lp2VV0yJo6DR^oY(p`yF?3*_~`cn`Q7y8FzRTJ-Qai0^3 zKj4Q7>-$Prt@u-XuQh6K!8L-J<0j`4TU7?M>1G~5ak7nILunk-BYw>x>EG)0M;HeQ zN>CHU>&Xn0s5HZ4Ge3XkwhRfJyeNv;U2SqMeGm&{t3GT0)E}3QtcHosfk2ZzYp-`D zo;B(K+bGh$`@E;bPW$I(XMn}rdh!jx0YleAfjxYKiX&*9WhDSs;%SDLCbW4@j7*kJ z=ujKUXi_k@aR}8-K-gwzj;jbZ8*l%NW?)OQw^#n^oqkKV8*yJ8z9^n3RB2EQag&Nm z;k|;N7fZzcr=9>TsVbc$aTn!S_aQ@3Cl6}yTyl@S2&#-jXT(Kkp68>@hP+|wfxN*$ z`TLr49vXL9Job1?yrNu7kpW}PYX zEe^-Gom=vEUj&v6N$H>)JB9)MZP(F&=X^+9OF9i#WGj&Ft`Wk%d%ZW!q6}_HLH<+@ zTiO43TPHC2fXw@B35hhrE=Ane$D~~rsK%~V5}`Gh_5A^!NF6hdm1!};XcLecbZDNz zjU6pVV{>aL9Y6uOvUod;Y$B9pAUU{tHEpA zGpq7@^T@8b*`7|94Tg;-!HVr56SUbQd61m>mNAkB;9#Vz*m3%+%Ikw09-DOxQS@}h zh~`~@nQnWO1(EukyUp(+!tCa4ZZVyWX1g`+Y#VX(6TtJV;TlVlttEwTWo;9#tp~kq zj+jA?hoVJg-55S5?mO8+z9+XsC4Na67?B(nE*psO8o|mPVWQVx?gjj<^=7(#w@B4> zt%$B8usl>GOpJxnouJ*u%8(fc??%xL>tfVf{IGzkx;(hw?4&wZXe!1D9nrKfTY;aLOdPnovrgzQH95dB~;Hh;dBCj zMh)7McR-*G^z;}*X>NJofWL;=A9vxkndT%c&gluSiwM@j_fCZ?l{G(9c8BSbXMy{Y5olCD4w1>C;(-bGfpo;reR1 z?wGhk6llo^N+|(Y`C1s4AS0B*W%(PQg@(gWrbhHO=EQ8?$0fpsVYGRNQTDw{O4Vxk z=d`G4q2f6|3|Oz~Vtx?X`4FcUm%v&Qx<{28+m^{=_A_;G(BS&t0%CwMMiP7YMy}Ke8FoNhZS+|Q&rg)LJohK^-xTC4 zcxADzyGKmB9<-el-;qxKO6zo2c-`4!ovbDD!UQgq%F1O+qI+i(67(nbq7beZ8!>~| z)qkz*7>i*|xgn7z>UMLW8FB&e)x;QztVeJyI$^X7J<0RY8dgw;>&qqDKr$d21m0RF z0{QnNiQ`d>!65aRDMaf-^buW!$wZC?ojL?VIajoepBHSKu-s3mVh8Av0_;tC>}nMI zcj1YYW76wC)JHY^0=DeBbUM)dmVNFQtp_s6oA2O|vDi|-OY&f6|mtg znvS*qk@}($J1VFli&;aO?L>Ht*$_`bN&DtCgWf8>*9AEit6W_H*S|r?U6kwJ1CA9v zCrz-*g5;Ca#@4lm7K!P)nwHmT4&}=Xm1gh11K;ovBa+k3%XnU-4)EIkH8ivu^v6Kix>$Dv^*~GN z0pp%o-&nXTJu8(?evrK{P zo?#>|eEeW+xh~?^8B=T{F_Nu=WMn6X=s+_b1-d{4FvVWx`gqDd+37q$KCy_>;*(p^gMyb6g_yEm5jEW#v-~UOkIJB8V`JJq%pl&& z{+h~mTaCS-e%|7V~JzWZx^ zaFKUovyY`STx5EuSMz0no^zM4L|a~X9{>AaCMG6Cb3Pj(QD8pidI6Z+P9wdPj!q0FJhM|;ci4+jfpInvzk!7&|A{_oq1_36y zuOGo`)%MO_mxg--Z7dF6ogD@Qph}C56p4FKZ@LEW58gvZaKHQh6b&}I#S*{G{&mF` z8xG`SvGz<_z-CTBlZ;0R(@Ey*#xn7G_6kTABg9cpC2hzL8(Ur<>ebRK{T4>+A1Dg zL3cH>z4diTlb|wfC|n^g(r~dK^b%VTFxNrNwLv;04HK`Xji@R%xccL4{uqnUz-wrl z(L*;JApLEUtri($RNH{Fmy}6mc8KrSxqVj~?fcyi}uV6|X4ff*Hx>@)k!d z5K&fiJEIB|Av`3F+5)dQn~Ammu$zuyrticY+88*ctN93zm(mG8H8F%fQ&1VPn?G%xY$-(v)WyD9Gk%mjE}2tbeH7 z;X9mzJ2C?H+K+c|BI~?T<2P9$PVc3&)ytBs;hqx0#kZ4@gn{D}COe>J_=ECo1Zmg7 zCQlf%!l>7T336OCgi;%S+73v7KW=)0T$UQIG7QcZG;9K6A8y(cWS8u1@(v zn)!wyQnzRvsSGu(Ufctl6X6BZ5Vdqq}>| zIb7U|D}Ly2r?UC_(usC}r^Xg4G(i$hiC>J@8TT5FS61(7iGj*X#zvtAUKcc&EI;j= zY(HIE)997n*|8d}8{WIda%2)({+^pabiiXo3~y2tL%R3MgSf`S2?Zs9 zRl&SX#-9q?W1-rn1Xc7|0!fJ&>AdDSU8pA;`G zgmk}J&!4}KZ|(tek>*^p;H}rZmBp@dbOVs+K@nL!u8_|-F2u-1|B7%;*btKPxiYSF zNOjWo?2l+g=0a( z&94zuH8OFo6k_&3Z)_=S`RmSL=f$F8LTh!B1Sv5)2GrqlP52-?Zkh@KBA$ZmR?lh~^u9 z-mVoH;F)qlbSNiH7)ML|?aHPm8xVNE9DvT(TD=Z?Ja>Xc`O(2^(AS?w^CTBBB7)@* zO>`C$-f2`Jvqv6t&bB3Ud~K(0QsI#)|1c&Jp35IN$6=TguhI_-s{Q?hD568C{bQjN zj>FN3pr=}Mz}y^7NQ6Hr)I9g8^pzUedb^f%i@nVD^T6V??w0EtR^nXf&>>->kMF@X z);kRFVmp?{e$yP0gm#+sD|`^81#ZEiY&Cz<5gtea`&)7GcPCyG-qdI-&q&8|46R#m z@Zln+2S*~Bq;+*QVnK66e9yxg3-^S)oK)n_dRtP2kaBz}=}_iAxmyzrr$zunRX|Sxny{@|knP=o=&osa zSXj+t-Gynxi~9f{E*bI#eBcp8|Gd1-3UVhvj;f-J{$_4njA!HFewq9K{HF zOh~K*`Fu!lNpjub^s-L=KGoHMG%G5EkB(Fb({d{tNs`w&=S8#%lrxUs~!cXpsSIJR|&dh&P#}&otH;lZg)Hj_Qs&=j#d(N%z}nJ8DM`*`LBoLvL&jt{z$Ikej|7|}Yie&3U#8+f#EGkMJ+ zxJ1@A{(aVEgP9lRjpqSwwJ-yKJL5U3BLbtKbe!N?TA_0j0||J&0aTXT;QDppQMn!w zXMChk`*H!apG!x`W1$aMGE=KFB%H?+3o(p;Ku$FP^m<1T*UTlrw0Y!RtlMV{;yOD#5Xn zHndjoC%<3v;-p1lik^Cb7dFv!G|z2qjk5LroLVJoehh;N3>#X{#=GGXzp9HVQ8MBE zy(rEb7Q0IL?51Asc0wD=TdM#D>DnwZQqVQnR$0VMaz-?3O~^Bs=Ejy9YD7;a)Fe8M zFwJuyA#uzIJR|eU-I_JRO9_WJ%v7;DlLw-bWCc&fFOCcCJJmuxC!`CZJMt7ls}AAx zI&u1my8Y}4=yZ2Px<>3eKyPiKn%?bZ0awnpe#~pWQrk;;wjG#V-8{Muw7HJRUj>GzBDa;6%KW(ortZP_8@$P@L1iK+B0-EnSZqda zMm2NC1Qpr#$TRMv540 z2M@7^qDpMcRJ?(?-Im{Be7MAa zFV|(i-^4G5JF=_sC#lRFFkloG)|K21>&xbX68PW@SqtU9LH683gP%kpf-Y1>4$X^z zbLTmW9wR`-9);uU96BTW3sF8tU=gtvpM!8t)StS}H3CiPePD1*&~O4VkAp$Rpa(Gj zN!->rTLSy_@m8@Y2|U}$jNIv~>s^2bMRJN@ybHiLvvh?ONsbKByX2@lr>bXGj1o9> zYuZ6!i)UAS)ch|2uaobtS^8iie!H8NES2>`sG*CGjKTi~&192(S5;uWpN6|U@hpKs5Sp#Z#cw*bl8XHBD8NR*O56MY#?TGE zQiXPUJj7-W7Utr9Hz6~JBCH5azGx->dWsqy!AeHni6AK~y4W08(VObd$dG~rs>Ati z4#=Ppe+720q<9_Gy$HB+KIx9kVR0z1PVaWKqQMm?U=K*=C>g z@z-QA&Rr7QMR9y}mbMQN0!I=6tFyhcQ8|};s~gp+K$Ei^kU{$=OT-yJ-%A=$IWBnt zI1lzWRErHgZ6#kk;X!PTxo0jgoK3Zpt_CBGoAcMB4!pCHJ# zX-n?bkn?5Y9e_GIFNLoAmzDIHUA{HjRFYjI3zE(2PtXj`Fw6YZX2+QQOZaMF zd}=69$5%ta335T-6!M!_I){hyhetU(ZEeos{|bO^sZ2lX#lS2*`?+M=Z5UlOiR_rO;3!y zF{L4#Btp_U-{+OuE=H6c3O3=7io5$Sk<&I7jrtQzSbf(xTc8jHj0(|VR$p|>d47t{ z8H8ygbZ)96LKy8N@3WIQZCD-r`WUfsohsZEWq5ei#4d=M4fUOekCIy+qo{V1Gi&;7RWS z5DLr0O&uOd!CQu_2n=DlFAI9a%s&3S2GcpW+!Qd~JZ_Zm3<{6|MSqPW8pe^GdNl^n5M3*AdDF(`P=P&-X}|%e+hoGw zo5?cZUI>K5zKIHpPsoH#L}L|Y-wQa}@b1RUMQ>T@Og<~=ic}1+&Y>Y z<>@?tvp{wQwmoODN1oUZSpP2-Q%^=mJWe#d*9RuwLE2rXuap5S>1tO3Xs(=-BaWHO zkZUVzj|u)y0I@1g)uWb!)i&g_^(56ZgtYuHBxm)7l)i%dZ!e11NL~i? zR(SdQ7-Qv3rPQsMhwt+wpOk4lx|qn*%w4v%b+xG2xP|JcRBcHiry>-CwOZ7zKo&2a zigOaFaO`8!C&XBuy_<3Pa7;v$pOa;Zs9NsmXhcBjP&8lJv9}1zR<5=n5)>Sbkd#kX zk0m6W3{@{==}?T$+&cv8rOzXw5SFk5p5{e^h#Uc)zumaC*0>Q5hU0*ag70N(QA1I$ zOa_Gu19*&4CB@-Ul!|GHV}wJjb;Q$=aE{;*VMJqoKJnN*MM&=VHm*VR)`D<=!>ZOK zPVu-+yEUC+_zXS+C?(`@OhnU0kS+r{IieEh(;QC8%gCa+5z`137a{hNGmy+pc6L_~ zBb5~wqxqfn%yFPMl#A!3W_xQnZJUH4)YFr(`J~?onL{^!RMb<^IC$$ux`|^8QA)|I zmOq?(sLX_&G(5BbuS>Z!f7!ifuX%fm*S%1~qb70G0HNachNVj)vJ4CZfkE8rn=pMU znp+QZOx%n{uGq)$z>&t6R-kOx9@~8o&l{g}d9HT-B~#I~xP+&JN*v6IpCcm2O+s(t ztLjT+RyK~%+7IP?f5tI?M?@+d<0z@1sr0NvU^}&{HylP_T?NlEK5S3aW^PMR{+5B> zUV4gaL?Z_!5@tkPt<-o3kdT^Dg4E0AB6iR~)bSkYCaygdZQ6{)_1kzsGdCb|Pf-hH z4^0f0w(txL<~^dvV?u;{jEQ(i-M&7@m{hxH>QH5pxJPITPuQu|xfcYYb2m@_M{W{N zO9^!6z9Rhn@uyKuL5$`~Dw#Od5yTgsKo@qmbmA4K_v_h3)}4ACorrwkW#kP-=4CU9 zR0nL+T}?R`T8E_|`rTb9d2gjjO9&kd$;(5^)#s8M6(O3vySR~tb!}XQWl`Pv7+#Aw z93qP|*yDLRqVfnpaXg?|JpSm938R?{bafbxy6gnh4M{{@E}x-^sLkPfIM*}85j|S= z7HyS`MP&-&Li%<_xI&S3Ad}<%EyakQHUk;6XHW@3YeN(r94<%MJIi>Q0yVeQNw60P za$&Xsn=tf(*+}C(u4a6=xnz6$9bROmZLkQ-L@?{kM@hTM{W#u$F|Ht&VrK4kj>L^r z9_BBOls#wwUU=hOJowi~P)?Dz)^{|t6QL=+wx@l0HMeT>^TMeN(#)1xk+@pexK3Ut z&2%c_b|q3}1(0YiG7g*jr6Q%RdME3A}9(o$b3y|kv z{eoAJ@Km9i2Cq# zraA2Sc;J<~(!PzGQF{Ho7|hc;o0HjR_~+JHI5mWepzLXQ115)n)E6`^v>)jo`zR9G zffVyBX>|yDH*G;Q4{1!xD6n}@3$+!Rc5wKL2^cZw3@;7B>v%beCDg@_m%e^I9lzKZ z9XrN)_aX5L4`g(9!u&a>+s$;7(o?N-F^{kxM+=9smIkiG+tQ#C(?RUBC^5=c&yOSsS}ZM>3q~byBslb!%$5r z+<>VWh9 zlOYp^03o;Dw5TpVQm1edzjen>4B$ejM8GnJgnYXy>Ra}3_i#7o*X}Kt+Qbpi0gSo< zUfe<4VD7Bb@xr3FjT=dbprwzF1gvjyBN0IU&@8;mi;7qA5YP+Ho`q?XC)%1&I@cEy zsZL}ZCJbh(n)azRa7(&0AGC0*Gw)XN+MODH>)7h{3$3i&Niy9dBENE}TqhZJ?S)wP z?4yWp;xWOLd{wieyl4fL550imnLKA~#7M-^Z43_=fA6+sNczR=h&!FTOLf|*+tchf zzP;3HYF>N$uMTb@geRA<5Zdsihkx3#AaSb@$~|gmez1JJbe9W*-b$^XhcZ?AmWR^w zj1^77giHz|_EN=(>s{HmU5hy0opWgK0cs^gVaMvV2t4!>GKY*qkb9L{IB#mE0HqPT zFy_jOsNK!;$4{VfM5L2-UU==Fc$^mwcSPi4EsoNb=7G+SQ<^{d)}2N~F3(YgBXPyW z=i;Zod)O}cY7QfS@H`dQ6DS1jNMUU;f9T1V@YwTyYzaIijYq7c1wz zcud3a*Zug&?0xdr|L*v<$v%f-(VUHxZry=*UVoF?+SC-b?$nzRxCVCb0DH`RTep$a zc=WN77P0vZ@d(Ij-o^{PqIlSTL-iUYf8(>r;*h0;r`t&SS6ozteUCrSnO7!as2kW+ z+JKgU+={$)4>A|tibD3xGRj-o(KiWjjz3qw3pxHfs!-X8SqlyL}@7S+C;3!%#Z&Nse>}Z zlRV*eA$24KKIVcDDB8Vigef8lgPcS3EOL+!Uw<{W|JTo{=2O9AveK#H&5qJhO^3|o zu2DmCu)&BilS8>dzOt?e$LsvmmL4%F8O1RngT*5bNUOe+^bLX3mde+Q+@S=0^LcdX zoS&}>?o|>PbIEx~o^vhgw;lx2xY)?swChIbdXXyZ`{hF@-o3}RPDgQkKIy#q2>jx+ zDBrgcG4*5vT%5FpO<}IOA3B8|0l*#~p!VVWb0}v3<&Z0BcMye0$5_rzMsuxZ3hJv- zL(?YP?Rd?M)WYMjs<&=H_Kmk;?Addfg38`i16zCs zx44$JTxj^GOAh2F6P~v@bo^oZ5@u*S#)&e=lv8?c4#wYkE5*7??YLNQWxu(Y`&!5G z#LK_Eh)sWa43$-trel{76@#hQT!Dt~e+CuXHXw#)AGG>}WW*C991jUSD)NZQ`MVZ0 zF*$+Xnoo{KwIh&lTSrifI_yCK-NT;NJWp!n(r|!P8=L5z+$}JKhxBha$oeE9|NehN zQvNU;*k5FdwR?8%#P(l2NcGzcZiV1vwu&l`l-@Ow`)V#U&?y zdmpWEemD{7V8t(ZN4sTzJm{Lk|cshOZp4J+ZMzn*a<-=hCB+4Er0@{Q6A!*28 z^mU}OXWh>Q!YCp_Nl6J-{_!E?EZ>EUQPkjO+D*|cCp96;_r8n?-@g~5++2tVCHVBF zQ8_)hIQX2{w_qO1KdcvW^>p(i)p-u#@U5?Y5fergV9T!k#z|~LCx?V0D49@NYS&{h z;qXv&tvPAPskxi%I-F!b?}aTctH3Q+U5rtMBaR`Lo=55aoXAhx2#K|cryBaS&wLoK z-1{c#*A^pTEcXyes>NPCIc5|pKKb8R&COF&E;=8vB#hL=Bux9r^;k;@R@vu%iHt+s zb2Fa821>Um;v)hYRMc)pEChMT-Uf4F6~iekwFKBtdEY9VbC0?|vSsg(IEb1_LdjnDddb}zG@tUb%eAXA?ZC~{8-%i zrQ7i0tBdfD=U>HcO4J5W>Xyjeuu99?jp=HR;|NMg${yJ;S2nSlTX-j-g1y!3jH2PD zG-ovAlN2!}IT2^inuhb|pM}X2C)n9{O4|{A?M zR&fK~G68Z8lLCeDM+0w1AUl}5_fgn9lXW!jT2gHg;$Fnt+r~&xweUR50s(350PA&PDl;euYh6{tPlE zU4bYqs&al57?p&~t*t1z?)zB$yBbViaDff$*#Bb^iE8(sakvzOWnc}V~1*O7P8 zIcOwuiUY;O#&KPu3`?k@5`W*{Fg$NE;&>!+V--)X;rdY%$CzbxZ{W;7J&ZADQUXb% z1{MI`m{w@hI53ZD_K-m8I?i)j(B93kLFrh6U*bCCao`x z-_Uj@%teiI|+xu&b1pViy-5!a+WVcx142=_{4jX^#^ccHr%>?4f5%1t@nxj2G5dmmTmyFpQC-**`R+-%jP?jyN63+oT54M& zF7E((z10J%3r@cI|Nh016C zg0yLuAaJk_QPtj6jPV>Y)$H1igXc`Z(9hk7(KDtYJ%vOk0n4WX9CaU!WIfM&l z#G!-)l>5osaq+kBKsx7hMnIaM_(kZe#_=?jRl$>Q)V{}xpdo@Xi$82T2G|ML!tqT| zIo2}uCPa^$h*X&Hiiwck{OUa@d*nW(Pv#tnQmsI76QVNMqa^cks4XSjB*8VLuU(6g zoKNKz6!6k09(E`IlY=z#T}u{UeV_=nJNBS~=>@m!;asK&SYATB<@GJp6X2LI1P7k{ zOgr_~(g#p$dua%_`+~MV@jQ|q zeFnp#CnK>S#WX6KC_-<^p%Q8g=X4vNL&4|o!ufZ75g8ndn~4875GqvY|HBreCF4=T z9RZ^Ajv|~$!tJLL_D zGHOJZZ9&N-o=0%YB^Wky28IkB%7X!UT?5;`GzGr3bExl2DI9hO18jXCDG^oZ?ivwIh-SyVHX#T}> z$YFj1xsfiwc~>(DUfKw)c}ZwEP|YFeYZ(9aAK>iIe;lbCi}w@Isf4$- zQsqXM>qe81NR{^J-Y#)GyXHg$8|uO2uiWj&5IsoIXOO}RsmkmA&;~C0>N?DWJ9gk8 zHxM@e<}D0rIfOx}qY=kVd_m5Ansi%V5{GC!c%*9OR`R-aIQ{+yFzbe^5zoo32~k{m zPM!AaFUctYfnFsd)yIZ*L~@SH6|QyYZLd%%9zX3Fn+;LW&bL2NL}H&HE1my-q|10%Ev0h7gDq}>;4_%$oz+qnGJ7jxg(#o1B?_upn9 zDUF9v4&hN>)RJiC;%<;)@D{56v~ZYNvwl0d&jyUX>${lwu^TX?u)xyqODUXX(Eszk zhd|#Dkq?$|1gxV(Y}3oHW9{9)LG6a8IK-PrZjf$Q*9W-Gfs+wL>jWWQhZ4mF*A}id zHBtaUJzkTuHGsP(6M0bL=u|3z^85oz=QPCA#mNCl_;}_+)Rsz0^J*w&;F;n4jVI~w zY*s`Ua7~A*K0%(D7o?cHC7y9fI6(^e>Ng)E7km$y7v78+w|@*{=gqb?AXUMwgT3!t zxxWH^3V}W)B9*-3WW03OUTowLZ_DTYNK{`$WS@z+VVPX)Z(s8Bx?SFl9qg0SQY(KFx!SSZs3dB@-?gwfT_Mci}&rP zbuN--S~tWFNrD-5MBOkhZcpNLBUuaLaKVM|Zkb&8zIq=^olhtcdC>DXh3w&gYvkHb z>F&KKTE7VgSFA(X()Fl&VKWDBJIGf`i2^*tg2Dm4skW%tesV$(5{~`V@wb%WHQdV~ zcjLa+E5~BsjETsZ&WEb{nR#^Qx{@=lF~iH^{7&}Ul}+X7s(hMzx-c%B(G4NtzAeBh z@Y5NRI_(T6j5-C1+U+8ocp`E|^M_sf?AXvj>Qhyhm7}7l7!~AHmE2`o&Almg+^yJ1 z0fnx46vr_mTB7({61%v}bR=dEL<%(v(y8T}!Sm75d2_f9n2*wamN4TGv}4|3K~9=g zW$Re3NN!yf(D5FH(bj8m+9)nQ>liVoE!|ao`DwYpt{CNlw)Qj~uL&14b(Yqt&@MXL zjtyW6u$`4N-2LPcQCKM);Mj3``-#H*oK?pWH&NfMS;7S(gl!d`Yu5Wz-9N z``x8j#U+MHYJ3P-3(h|q=gpsINw{#~>4m#3d2czMdwCJ#%*X6AW^@`SJbom*(v)#9 zKg{*J($Z2?a5+M2b2^$hYtTUGoNw)hl?gA0IrQO=%S(HvmMmR{=U;gp7hiBrx9fcT z-AgZ2&H+~h;Q&sHm$E;G*G0nd+$Gsw`MvYZEuHW*6g0wos`C_1j*n|lZPEDYuYQZw zo3`UuKlla;cp#?pQ^{PfE&}@H{lCYOmFsc$?YCjdqzQ(sQg3?juaDx3-}^m2_JO$= zKY9d;NR&Ems=H<<51jeN*Y3gWm!@|&%8}th%}A}s>S_}861@1@TX<#3YE;xU@=6{m zACr)#ju?t77Mw!@Kg;$92`AKi-JHH1nQsqV99+e%SFhWEZ{Bq~W}p5_w^KMJh$y_Y zZ3N}bdE{pVVV2O3ED?;@lILvcoQM{PP>SAh;sP@F*pye*w$;CrgoUT%&Fy@*Y}<~1 zy!Zw_bIsYf{qvtj0gpP9;VVQ`r%}D6b_NB{<=UjRoa&xlHQSIO!7s|Dldpmdc zW(*_h3hF&R@X+7z`Jet7SI!uXFWqu23aPUw&Z!P#*~&Gz^~2x8onQYD?z;U8yc<>r zVX96dCNE!?rrydgQl32tt8^6Jbx7hwDapwQOuLX;GE`&fra9$^C{npYz_JDoYvo9R z|JS$$?7ZsC)TD^W;wIpU+#Gn@r*6e(NeuDShIgit8x7a)FTu5!ooBm0<*s3qj6*b~ z5rVDxa1D)f&1gzNH56RCVKc@IABt>u?<&K%eEr~EzJ!#Te<{CL7rlwk|M&rXiI*MR zdee1017Uo-xM$9tg)?SMwGDX5emNDuA$Z4fdVbnf+=dUzMO0{@%+)bKh}z%_WJx(bQHkxpTS819r%A(R9QIzV1$w`td? zZ8`VX?CR>M5kf(Z+>)qL_n*YyAN!`wRg|~FXcJw11GkfKIYD6+$04}O z+m+Lyx6aUh`o-69&bVQ?>avSM1f=>Yt{&Cl0v;RSjH|OF2<`A~Xw(UuTt{bJG)Gk3 zU7qeOe{J@wBiEJ0Pn-IbwoAvQ>&mPRf#SG2HArDt6mPFud&aJ0J2m}8)G26A0S{|Y zmczZnisX<+2OmEB{7cxveOEVp@Csy88u|EB&*Gnpmt(=SF<7&HGw%QWgBDXliYqU_ z*ydLyoY=p`-NY+auj5>))NZyLH6kDL&zysa6ULEyjo`gP-^AJcmQg-SDQH;y-U{sG zfi6P644&qc!~D*ieFmma<-wLjLRT*LR@^<@x%}*V>+!Km=V8LQv2rqjiMu3BVTJHI zyhL^xhx9tg{@tbTv7GC%mr`2!4x=vR3~Kz(<#~50+ybMxA}A5sd&^ha?R?v*8Kcf) z2z4$eb0_n>xwB0`qqH3Xt=q5>?=D$}b(^+Y+#GJW)M5E&Ovp23W`*sJ@l^=A6SP0f ziHCsS9Y*LC9kL0TmvFKA&M*JKq+KfGel88{J9vmab}X;PtjEqh`$%Lvv58tDidRFS z!!LgG2i)|HpBVC8df|K&a?bR?<1gTjZ~qV*Hg3jH&VxR9CRggc~nFbXen39nQs+IJWQ`FT88mb;m0yk4JDRdGf> z;sio&_pLDH+`e-EAO4K1zWM{~<{q`VGf%^ryfi@vo-FwCcks8zp0rJtA|TBlAA9l{ z++Xr~AI@cTh4oQ;7|M#6A8Y0!Twye8aU@@?5#ZP{|yU`Z56{K*a~oY){jsNnfxb zVkzT|4|~a_R6VI$seB^X!jT0w!Cy>q^BrIPEx!BRTk!FZ++YN)jLw`rlbrK@{KtI{ zavn9!hKCzBZ^qp}`vcBDZ9M*sf)tfs=7Mw2Cb18~SH5yTW}Q9_7hiauUDNWw!;fS0 z-h=q%e|*ux2yP<82OoX}zklgBxSMNg-8KD0)LlrOlyKqwc_#&65Z&Wb%^ues^r2I7 zlDUy^OJ%K{nv>@D{z^e}8cD)VJHHTM z29@L9@BX_Hrph^LRvzZfnHeG=Udm0%%@!xC`|t-w1(sj00&IYr8OSp)DqxyzDeD?|R`3=*m9E+Ad5#dB+|;yNm8 z!Fgxntsngwci!_0%$xoihgGL>elrFm$u%@_SKcBRhkPP`mC6%*5HYFGD1n3{SS6g# zUCe*{-q&pMuOa3`k3Nlk#id3_3cH`>7?m>!nbbIu(VR|%tGqJEeUTVvLs-?Xlvm(n zCB@qiQ(+xfQ}{FdTKol$%dmfSR75J4%?>Y7?3v@6b^ zYiGK-VV6Vt3wQ{lGz#8c{2mssSc5x${96nkn1)NwnT?ySyV@2=g?V22+LvYkZ zL=a944zaufY75Ab&EBX(S30eGTbxG5(l(o?%b{Qx=GK?M&9C3NxH_MLmUS+fa4xe%-lC5uwTYVH}^O-ZEUD_za8WOnV@iyce$ zvED;1k91zvJT@!CmIaEb3gwK_F<7VbmJ`41&abO?KPT!6Iw#Rjji_V3Dr@So=*_on zVy&K9h$kcNF_Bw4hUX8n#l@Ya73~^6$m7Pg?k~6A-Bm+ria<`EJ{6hqkKzvx|AX8k zmg$VMo>$1JIg-w`mQ>3SoY`p@^yWX`v1AHI6d1?RkZ?WE*M5EZ4qU(RLK8H&eB9d+ zk`!YvTW~(sZrp-zJn$s;>_3RhE;`qUQDKzUZX)^?oz=~Hc=It(ATSNBKmRKpefk9} z(+K8W$6?>1x8BCR4?ly?U3(73jw!V4CX5|}1>|;rd-`RJpt%0DsZ%)23u48pHMsxJ zkKz1c+Q+{_#AvA1pIv%^0fW2=SJ^unK>DAhEYZ$UGF zX}mq*XJ5Mw4?OZD{^grL!HDckq;cp}O(K$D;me=6!G?!!m{P+7V4izv5&rARMYwoe zz74a=DymV=GXVenlUHED1?L(uibx%iTNzkR*Q4w9@jJfoX(H`Qc>UdFxaQ7#Fd#05 zH-*Haw6+1cX-SweDjzp4Jl_^j6@Lba{o(KYD}MLz6Zrhy_h58>4oVO62KUm#xap!Z z@zEPT7?KVajx4~PJRk6X9{4-%_}zcNy9Ys%A%m5uyBM4B9x~KFMGHNcNdr0 zvv(hgSUwS_{Ni{UM>?f#;(*FqVrCadTyXpL9j5hQ!Vl&aR<|Bm~*Z@`=#IPu!9#Jn3LjqAZk5w7 zV|T)KEK674{Y2CibWWn58rmUAXT=bL=~3@01CPh3qGyh+ye=?1w=2 zA>afs-H*{9vL6Ed5NHR1ej;iIj{c8+2=p8R{Y2DrnDxi#hd?_B^b=7#aP)ulL!jpn Z`2X Date: Tue, 17 May 2016 21:31:39 +0200 Subject: [PATCH 2/5] Update media_player.lgtv.markdown --- source/_components/media_player.lgtv.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_components/media_player.lgtv.markdown b/source/_components/media_player.lgtv.markdown index 1f6a157a4701..2ffafd165b24 100644 --- a/source/_components/media_player.lgtv.markdown +++ b/source/_components/media_player.lgtv.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "LG TV" +title: "LG Netcast TV" description: "Instructions how to integrate a LG TV (Netcast 3.0 & 4.0) within Home Assistant." date: 2016-05-12 23:22 sidebar: true @@ -13,7 +13,7 @@ ha_iot_class: "Local Poll" ha_release: 0.20 ---------------- -The `lgtv` platform allows you to control a LG Smart TV running NetCast 3.0 +The `lg_netcast` platform allows you to control a LG Smart TV running NetCast 3.0 (LG Smart TV models released in 2012) and NetCast 4.0 (LG Smart TV models released in 2013). For the new LG WebOS TV's use the [webostv](/components/mediaplayer.webostv) platform. @@ -22,7 +22,7 @@ To add a LG TV to your installation, add the following to your `configuration.ya ```yaml # Example configuration.yaml entry media_player: - platform: lgtv + platform: lg_netcast host: 192.168.0.20 access_token: 889955 name: Living Room TV @@ -34,7 +34,7 @@ Configuration variables: - **access_token** *Optional*: The access token needed to connect. - **name** *Optional*: The name you would like to give to the LG Smart TV. The default is "LG TV Remote". -To get the access token for your TV configure the `lgtv` platform in Home Assistant without the `access_token`. +To get the access token for your TV configure the `lg_netcast` platform in Home Assistant without the `access_token`. After starting Home Assistant the TV will display the access token on screen. Just add the token to your configuration and restart Home Assistant and the media player component for your LG TV will show up. From b4b86177f50e476c6071659eff0f8d43da3a0d64 Mon Sep 17 00:00:00 2001 From: wokar Date: Tue, 17 May 2016 21:32:31 +0200 Subject: [PATCH 3/5] Rename media_player.lgtv.markdown to media_player.lg_netcast.markdown --- ...edia_player.lgtv.markdown => media_player.lg_netcast.markdown} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename source/_components/{media_player.lgtv.markdown => media_player.lg_netcast.markdown} (100%) diff --git a/source/_components/media_player.lgtv.markdown b/source/_components/media_player.lg_netcast.markdown similarity index 100% rename from source/_components/media_player.lgtv.markdown rename to source/_components/media_player.lg_netcast.markdown From c2a98b8e7683e8cc55ccebd950aabfceddc1b7d2 Mon Sep 17 00:00:00 2001 From: wokar Date: Mon, 3 Oct 2016 22:14:35 +0200 Subject: [PATCH 4/5] added description of the include/exclude entities/domains feature for history component. --- source/_components/history.markdown | 42 ++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/source/_components/history.markdown b/source/_components/history.markdown index e7fedec64f38..51fafb641037 100644 --- a/source/_components/history.markdown +++ b/source/_components/history.markdown @@ -18,8 +18,33 @@ The `history` component will track everything that is going on within Home Assis To enable the history option in your installation, add the following to your `configuration.yaml` file: ```yaml -# Example configuration.yaml entry +# Example configuration.yaml entry without any filters history: + +# Example configuration.yaml entry with exclude +history: + exclude: + domains: + - automation + - sun + - weblink + - group + - updater + entities: + - sensor.last_boot + - sensor.date + +# Example configuration.yaml entry with include and exclude +history: + include: + domains: + - sensor + - switch + - media_player + exclude: + entities: + - sensor.last_boot + - sensor.date ```

@@ -32,6 +57,21 @@ history: Events are saved in a local database. Google Graphs is used to draw the graph. Drawing is happening 100% in your browser. No data is transferred to anyone at any time.

+ +Configuration variables: + +- **exclude** (*Optional*): Configure which components should **not** be displayed. +- **include** (*Optional*): Configure which components should be displayed. +- **entities** (*Optional*): The list of entity ids to be included/excluded from the history. +- **domains** (*Optional*): The list of domains to be included/excluded from the history. + +Without any `include` or `exclude` configuration the history displays graphs for every entity (well that's not exactly true - for instance `hidden` entities or `scenes` are never shown) on a given date. If you are only interested in some of the entities you several options: + +- define domains and entities to `exclude` (aka. blacklist) +- define domains and entities to display by using the `include` configuration (aka. whitelist). +- use the `include` list to define the domains/entities to display, and exclude some of them with in the `exclude` list. This makes sense if you for instance include the sensor domain, but want to exclude some specific sensor like in the example above. + + #### {% linkable_title Implementation details %} The history is stored in a SQLite database `home-assistant.db` within your config directory. From 31e87fd913d9443baf18b4d4704f97a1bc955c25 Mon Sep 17 00:00:00 2001 From: wokar Date: Thu, 6 Oct 2016 21:57:26 +0200 Subject: [PATCH 5/5] o moved configuration examples to the section where the filtering is explained o improved configuration variables description --- source/_components/history.markdown | 68 +++++++++++++++++------------ 1 file changed, 39 insertions(+), 29 deletions(-) diff --git a/source/_components/history.markdown b/source/_components/history.markdown index 51fafb641037..09f021e41744 100644 --- a/source/_components/history.markdown +++ b/source/_components/history.markdown @@ -18,22 +18,57 @@ The `history` component will track everything that is going on within Home Assis To enable the history option in your installation, add the following to your `configuration.yaml` file: ```yaml -# Example configuration.yaml entry without any filters +# Basic configuration.yaml entry history: +``` + +

+ + + +

+ +

+Events are saved in a local database. Google Graphs is used to draw the graph. Drawing is happening 100% in your browser. No data is transferred to anyone at any time. +

+ + +Configuration variables: + +- **exclude** (*Optional*): Configure which components should **not** be displayed. + - **entities** (*Optional*): The list of entity ids to be excluded from the history. + - **domains** (*Optional*): The list of domains to be excluded from the history. +- **include** (*Optional*): Configure which components should be displayed. + - **entities** (*Optional*): The list of entity ids to be included from the history. + - **domains** (*Optional*): The list of domains to be included from the history. +Without any `include` or `exclude` configuration the history displays graphs for every entity (well that's not exactly true - for instance `hidden` entities or `scenes` are never shown) on a given date. If you are only interested in some of the entities you several options: + +- Define domains and entities to `exclude` (aka. blacklist). This is convenient when you are basically happy with the information displayed, but just want to remove some entities or domains. Usually these are entities/domains which do not change (like `weblink`) or rarely change (`updater` or `automation`). +```yaml # Example configuration.yaml entry with exclude history: exclude: domains: - automation - - sun - weblink - - group - updater entities: - sensor.last_boot - sensor.date - +``` +- Define domains and entities to display by using the `include` configuration (aka. whitelist). If you have a lot of entities in your system and your `exclude` lists possibly get very large, it might be better just to define the entities or domains to display. +```yaml +# Example configuration.yaml entry with include +history: + include: + domains: + - sensor + - switch + - media_player +``` +- Use the `include` list to define the domains/entities to display, and exclude some of them with in the `exclude` list. This makes sense if you for instance include the `sensor` domain, but want to exclude some specific sensors. Instead of adding every sensor entity to the `include` `entities` list just include the `sensor` domain and exclude the sensor entities you are not interested in. +```yaml # Example configuration.yaml entry with include and exclude history: include: @@ -47,31 +82,6 @@ history: - sensor.date ``` -

- - - -

- -

-Events are saved in a local database. Google Graphs is used to draw the graph. Drawing is happening 100% in your browser. No data is transferred to anyone at any time. -

- - -Configuration variables: - -- **exclude** (*Optional*): Configure which components should **not** be displayed. -- **include** (*Optional*): Configure which components should be displayed. -- **entities** (*Optional*): The list of entity ids to be included/excluded from the history. -- **domains** (*Optional*): The list of domains to be included/excluded from the history. - -Without any `include` or `exclude` configuration the history displays graphs for every entity (well that's not exactly true - for instance `hidden` entities or `scenes` are never shown) on a given date. If you are only interested in some of the entities you several options: - -- define domains and entities to `exclude` (aka. blacklist) -- define domains and entities to display by using the `include` configuration (aka. whitelist). -- use the `include` list to define the domains/entities to display, and exclude some of them with in the `exclude` list. This makes sense if you for instance include the sensor domain, but want to exclude some specific sensor like in the example above. - - #### {% linkable_title Implementation details %} The history is stored in a SQLite database `home-assistant.db` within your config directory.