From 26c6bd9a5f23abb2dc004e1d83602c6b4f3f8a90 Mon Sep 17 00:00:00 2001 From: volio Date: Sun, 12 Jan 2020 15:56:02 +0800 Subject: [PATCH] support pjax --- Plugin.php | 133 +++++++++++++++-------------------- README.md | 17 +++-- {dist => assets}/editor.js | 50 +++++++------ assets/player.js | 16 +++++ assets/screenshot.png | Bin 20035 -> 0 bytes assets/screenshot_editor.png | Bin 25255 -> 0 bytes dist/util.js | 20 ------ 7 files changed, 108 insertions(+), 128 deletions(-) rename {dist => assets}/editor.js (60%) create mode 100644 assets/player.js delete mode 100644 assets/screenshot.png delete mode 100644 assets/screenshot_editor.png delete mode 100644 dist/util.js diff --git a/Plugin.php b/Plugin.php index bfa08bd..5730832 100644 --- a/Plugin.php +++ b/Plugin.php @@ -6,8 +6,8 @@ * * @package DPlayer * @author Volio - * @version 1.0.4 - * @link http://github.com/volio/DPlayer-for-typecho + * @version 1.1.0 + * @link https://niconiconi.org */ class DPlayer_Plugin implements Typecho_Plugin_Interface { @@ -20,8 +20,8 @@ class DPlayer_Plugin implements Typecho_Plugin_Interface */ public static function activate() { - Typecho_Plugin::factory('Widget_Abstract_Contents')->contentEx = ['DPlayer_Plugin', 'parsePlayer']; - Typecho_Plugin::factory('Widget_Abstract_Contents')->excerptEx = ['DPlayer_Plugin', 'parsePlayer']; + Typecho_Plugin::factory('Widget_Abstract_Contents')->contentEx = ['DPlayer_Plugin', 'replacePlayer']; + Typecho_Plugin::factory('Widget_Abstract_Contents')->excerptEx = ['DPlayer_Plugin', 'replacePlayer']; Typecho_Plugin::factory('Widget_Archive')->header = ['DPlayer_Plugin', 'playerHeader']; Typecho_Plugin::factory('Widget_Archive')->footer = ['DPlayer_Plugin', 'playerFooter']; Typecho_Plugin::factory('admin/write-post.php')->bottom = ['DPlayer_Plugin', 'addEditorButton']; @@ -44,10 +44,8 @@ public static function deactivate() */ public static function playerHeader() { - $url = Helper::options()->pluginUrl . '/DPlayer'; echo << - EOF; } @@ -66,29 +64,26 @@ public static function playerFooter() } echo << - + EOF; } /** * 内容标签替换 * - * @param string $content + * @param $text * @param $widget - * @param $lastResult + * @param $last * @return string */ - public static function parsePlayer($content, $widget, $lastResult) + public static function replacePlayer($text, $widget, $last) { - $content = empty($lastResult) ? $content : $lastResult; + $text = empty($last) ? $text : $last; if ($widget instanceof Widget_Archive) { - if (false === strpos($content, '[')) { - return $content; - } $pattern = self::get_shortcode_regex(['dplayer']); - $content = preg_replace_callback("/$pattern/", ['DPlayer_Plugin', 'parseCallback'], $content); + $text = preg_replace_callback("/$pattern/", ['DPlayer_Plugin', 'parseCallback'], $text); } - return $content; + return $text; } /** @@ -114,76 +109,64 @@ public static function parseCallback($matches) } //还原转义后的html //[dplayer title="Test Abc" artist="haha" id="1234543"/] - $attr = htmlspecialchars_decode($matches[3]); + $tag = htmlspecialchars_decode($matches[3]); //[dplayer]标签的属性,类型为array - $atts = self::shortcode_parse_atts($attr); - //播放器id - $id = md5(isset($atts['url']) ? $atts['url'] : 'default id'); + $attrs = self::shortcode_parse_atts($tag); + return DPlayer_Plugin::parsePlayer($attrs); + } + public static function parsePlayer($attrs) + { //播放器设置 - $theme = Typecho_Widget::widget('Widget_Options')->plugin('DPlayer')->theme; + $theme = Typecho_Widget::widget('Widget_Options')->plugin('DPlayer')->theme ?: '#FADFA3'; $api = Typecho_Widget::widget('Widget_Options')->plugin('DPlayer')->api; - if (!$theme) $theme = '#FADFA3'; - - //输出代码 - $playerCode = '
'; - $playerCode .= "
\n"; - $video = array( - 'url' => isset($atts['url']) ? $atts['url'] : '', - 'pic' => isset($atts['pic']) ? $atts['pic'] : '', - 'type' => isset($atts['type']) ? $atts['type'] : 'auto', - 'thumbnails' => isset($atts['thumbnails']) ? $atts['thumbnails'] : '', - ); - //弹幕部分配置文件 - $subtitle = [ - 'url' => isset($atts['subtitleurl']) ? $atts['subtitleurl'] : '', - 'type' => isset($atts['subtitletype']) ? $atts['subtitletype'] : 'webvtt', - 'fontSize' => isset($atts['subtitlefontsize']) ? $atts['subtitlefontsize'] : '25px', - 'bottom' => isset($atts['subtitlebottom']) ? $atts['subtitlebottom'] : '10%', - 'color' => isset($atts['subtitlecolor']) ? $atts['subtitlecolor'] : '#b7daff', - ]; - $danmaku = [ - 'id' => $id, - 'api' => $api, - 'maximum' => isset($atts['maximum']) ? $atts['maximum'] : 1000, - 'addition' => isset($atts['addition']) ? [$atts['addition']] : null, - 'user' => isset($atts['user']) ? $atts['user'] : 'DIYgod', - 'bottom' => isset($atts['bottom']) ? $atts['bottom'] : '15%', - 'unlimited' => true, - ]; - - //播放器默认属性 - $data = [ - 'id' => $id, + //播放器属性 + $config = [ 'live' => false, - 'autoplay' => false, - 'theme' => isset($atts['theme']) ? $atts['theme'] : '#FADFA3', - 'loop' => (isset($atts['loop']) && $atts['loop'] == 'true') ? true : false, - 'screenshot' => (isset($atts['screenshot']) && $atts['screenshot'] == 'true') ? true : false, + 'autoplay' => isset($attrs['autoplay']) && $attrs['autoplay'] == 'true', + 'theme' => isset($attrs['theme']) ? $attrs['theme'] : $theme, + 'loop' => isset($attrs['loop']) && $attrs['loop'] == 'true', + 'screenshot' => isset($attrs['screenshot']) && $attrs['screenshot'] == 'true', 'hotkey' => true, 'preload' => 'metadata', - 'lang' => isset($atts['lang']) ? $atts['lang'] : 'zh-cn', - 'logo' => isset($atts['logo']) ? $atts['logo'] : null, - 'volume' => isset($atts['volume']) ? $atts['volume'] : 0.7, + 'lang' => isset($attrs['lang']) ? $attrs['lang'] : 'zh-cn', + 'logo' => isset($attrs['logo']) ? $attrs['logo'] : null, + 'volume' => isset($attrs['volume']) ? $attrs['volume'] : 0.7, 'mutex' => true, + 'video' => [ + 'url' => isset($attrs['url']) ? $attrs['url'] : null, + 'pic' => isset($attrs['pic']) ? $attrs['pic'] : null, + 'type' => isset($attrs['type']) ? $attrs['type'] : 'auto', + 'thumbnails' => isset($attrs['thumbnails']) ? $attrs['thumbnails'] : null, + ], ]; - $data['video'] = $video; - $data['danmaku'] = (isset($atts['danmu']) && $atts['danmu'] == 'true') ? $danmaku : null; - $data['subtitle'] = isset($atts['subtitleurl']) ? $subtitle : null; - $data['autoplay'] = (isset($atts['autoplay']) && $atts['autoplay'] == 'true') ? true : false; - $data['theme'] = isset($atts['theme']) ? $atts['theme'] : $theme; - //加入头部数组 - $js = json_encode($data); - $playerCode .= <<dPlayerOptions.push({$js}); -EOF; - return $playerCode; + if (isset($attrs['danmu']) && $attrs['danmu'] == 'true') { + $config['danmaku'] = [ + 'id' => md5(isset($attrs['url']) ? $attrs['url'] : ''), + 'api' => $api, + 'maximum' => isset($attrs['maximum']) ? $attrs['maximum'] : 1000, + 'user' => isset($attrs['user']) ? $attrs['user'] : 'DIYgod', + 'bottom' => isset($attrs['bottom']) ? $attrs['bottom'] : '15%', + 'unlimited' => true, + ]; + } + if (isset($attrs['subtitle']) && $attrs['subtitle'] == 'true') { + $config['subtitle'] = [ + 'url' => isset($attrs['subtitleurl']) ? $attrs['subtitleurl'] : null, + 'type' => isset($attrs['subtitletype']) ? $attrs['subtitletype'] : 'webvtt', + 'fontSize' => isset($attrs['subtitlefontsize']) ? $attrs['subtitlefontsize'] : '25px', + 'bottom' => isset($attrs['subtitlebottom']) ? $attrs['subtitlebottom'] : '10%', + 'color' => isset($attrs['subtitlecolor']) ? $attrs['subtitlecolor'] : '#b7daff', + ]; + } + $json = json_encode($config); + return "
"; } public static function addEditorButton() { - $dir = Helper::options()->pluginUrl . '/DPlayer/dist/editor.js'; + $dir = Helper::options()->pluginUrl . '/DPlayer/assets/editor.js'; echo ""; } @@ -191,10 +174,10 @@ public static function config(Typecho_Widget_Helper_Form $form) { $theme = new Typecho_Widget_Helper_Form_Element_Text( 'theme', null, '#FADFA3', - _t('默认主题颜色'), _t('播放器默认的主题颜色,如 #372e21、#75c、red、blue,该设定会被[dplayer]标签中的theme属性覆盖,默认为 #FADFA3')); + _t('默认主题颜色'), _t('播放器默认的主题颜色,例如 #372e21、#75c、red、blue,该设定会被[dplayer]标签中的theme属性覆盖,默认为 #FADFA3')); $api = new Typecho_Widget_Helper_Form_Element_Text( - 'api', null, 'https://api.prprpr.me/dplayer/v3/', - _t('弹幕服务器地址'), _t('用于保存视频弹幕,默认为 https://api.prprpr.me/dplayer/v3/')); + 'api', null, '', + _t('弹幕服务器地址'), _t('用于保存视频弹幕,例如 https://api.prprpr.me/dplayer/v3/')); $hls = new Typecho_Widget_Helper_Form_Element_Radio('hls', array('0' => _t('不开启HLS支持'), '1' => _t('开启HLS支持')), '0', _t('HLS支持'), _t("开启后可解析 m3u8 格式视频")); $flv = new Typecho_Widget_Helper_Form_Element_Radio('flv', array('0' => _t('不开启FLV支持'), '1' => _t('开启FLV支持')), '0', _t('FLV支持'), _t("开启后可解析 flv 格式视频")); $form->addInput($theme); diff --git a/README.md b/README.md index 2502a8c..5898a0a 100644 --- a/README.md +++ b/README.md @@ -9,9 +9,9 @@ [dplayer url="http://xxx.com/xxx.mp4" pic="http://xxx.com/xxx.jpg"/] ``` -关闭弹幕 +开启弹幕 ``` -[dplayer url="http://xxx.com/xxx.mp4" pic="http://xxx.com/xxx.jpg" danmu="false"/] +[dplayer url="http://xxx.com/xxx.mp4" pic="http://xxx.com/xxx.jpg" danmu="true"/] ``` 开启自动播放 @@ -19,13 +19,16 @@ [dplayer url="http://xxx.com/xxx.mp4" pic="http://xxx.com/xxx.jpg" autoplay="true"/] ``` -添加额外弹幕源(例:bilibili弹幕) +更多参数待补充 + +### FAQ + +#### 1. Pjax页面切换? + +重新加载播放器回调函数 ``` -[dplayer url="http://xxx.com/xxx.mp4" pic="http://xxx.com/xxx.jpg" autoplay="true" addition="https://api.prprpr.me/dplayer/bilibili?aid=7286894"/] +loadDPlayer(); ``` -### 设置截图 -![](https://raw.githubusercontent.com/volio/DPlayer-for-typecho/master/assets/screenshot.png) - ### LICENSE MIT © [Volio](https://niconiconi.org) \ No newline at end of file diff --git a/dist/editor.js b/assets/editor.js similarity index 60% rename from dist/editor.js rename to assets/editor.js index ec7381b..dae85df 100644 --- a/dist/editor.js +++ b/assets/editor.js @@ -6,14 +6,14 @@ $(function () { $(document).on('click', '#wmd-dplayer-button', function () { $('body').append( '
' + - '
' + + '
' + '
' + '
' + '

插入视频

' + '

在下方输入参数

' + - '

' + - '

' + - '

' + + '

' + + '

' + + '

' + '

开启弹幕

' + '

自动播放

' + '
' + @@ -31,40 +31,38 @@ $(function () { }); //ok $(document).on('click', '#ok', function () { - var DP_url = document.getElementById('DP-url').value, - DP_pic = document.getElementById('DP-pic').value, - DP_danmu = document.getElementById('DP-danmu').checked ? true : false, - DP_autoplay = document.getElementById('DP-autoplay').checked ? true : false, - DP_addition = document.getElementById('DP-addition').value; - var tag = '[dplayer url="' + DP_url + '" pic="' + DP_pic + '" '; - if (!DP_danmu) tag += 'danmu="' + DP_danmu + '" '; - if (DP_autoplay) tag += 'autoplay="' + DP_autoplay + '" '; - if (DP_addition) tag += 'addition="' + DP_addition + '" '; + var url = document.getElementById('DP-url').value, + pic = document.getElementById('DP-pic').value, + danmu = !!document.getElementById('DP-danmu').checked, + autoplay = !!document.getElementById('DP-autoplay').checked; + var tag = '[dplayer url="' + url + '" pic="' + pic + '" '; + if (!danmu) tag += 'danmu="' + danmu + '" '; + if (autoplay) tag += 'autoplay="' + autoplay + '" '; tag += '/]\n'; - myField = document.getElementById('text'); + var editor = document.getElementById('text'); if (document.selection) { - myField.focus(); + editor.focus(); sel = document.selection.createRange(); sel.text = tag; - myField.focus(); + editor.focus(); } - else if (myField.selectionStart || myField.selectionStart == '0') { - var startPos = myField.selectionStart; - var endPos = myField.selectionEnd; + else if (editor.selectionStart || editor.selectionStart === '0') { + var startPos = editor.selectionStart; + var endPos = editor.selectionEnd; var cursorPos = startPos; - myField.value = myField.value.substring(0, startPos) + editor.value = editor.value.substring(0, startPos) + tag - + myField.value.substring(endPos, myField.value.length); + + editor.value.substring(endPos, myField.value.length); cursorPos += tag.length; - myField.focus(); - myField.selectionStart = cursorPos; - myField.selectionEnd = cursorPos; + editor.focus(); + editor.selectionStart = cursorPos; + editor.selectionEnd = cursorPos; } else { - myField.value += tag; - myField.focus(); + editor.value += tag; + editor.focus(); } $('#DPlayer-Panel').remove(); diff --git a/assets/player.js b/assets/player.js new file mode 100644 index 0000000..869946a --- /dev/null +++ b/assets/player.js @@ -0,0 +1,16 @@ +var dPlayers = []; +var loadDPlayer = function () { + var load = function (d, conf) { + conf.container = d; + dPlayers.push(new DPlayer(conf)); + }; + for (var i = 0; i < dPlayers.length; i++) { + dPlayers[i].destroy(); + } + dPlayers = []; + for (var j = 0, k = document.querySelectorAll('.dplayer'); j < k.length; j++) { + load(k[j], JSON.parse(k[j].dataset.config)); + } +}; + +document.addEventListener('DOMContentLoaded', loadDPlayer, !1); \ No newline at end of file diff --git a/assets/screenshot.png b/assets/screenshot.png deleted file mode 100644 index d7061918079807867cbb5d1800d241a14ac54b1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20035 zcmce;c{rOPZSR;x-?RcX;yOHo4&RdaQqgE{6|&0=Uvs359Z+A6B%S*ajFYKS2* zD~cK;2_n)~2_n=OMEH_E&vUNtI@k3*-}|2Po;Uy8N$z{^z4qQ~@4eRVx7PjE*ii2T zrw}I_8{3Ho_wSmrv9as3u^nhRdW888@Q|e>8`}l82X}SMo@Xx-d7hlcM=sMvBR+rQ z{h4?8)ImYPm)8z{<$N1=>b)iRxsxgmt&^W`Xa9Ol^pX0y0lQ5lj8^sap&@dE=+7TR z1@KePo?M}wv7VY(HF)fjdPqnA+BuiLh%)ykB{;tNQL|t#>&U#)( zqOMr8s6eVa)F=-_EX-KT3P5>$#lkK9SmLq`4Sow$VSQnXmO9ACx}H6m&bqX|Xg$Qb z9yuh=y2xLUKft`aI1qV^^^@x;vx97GPPd#6vaam^{i2hPBj-QlTJ3#El_M2IC5ptN zD$E{0wl~7j2lU%kg6w5HEUgRW;;c);d(*4##KwC zdb@Z!A8(L-^rnTZx!ZV857Ce0O zTROKDHB8~g?b*`7ZR>bm=vWlQEe&jUxt*fLEW#!(cs9LJZKo$bJ+NF+t9&pl@hITi zlLV0vgB%KcU`J`5%1Lp^?t3>ru#UFl+Vy57ynX*F|pHr&gX zBpGz#gr;+;#QX1A@DNG*W80+Xo|Tj(7<{66eOniEKP6zh!UP)rsa*iD#Vq>5m09-T zdT8=w!F$|iQ_^v{K&-Fh&aRf8aX`XVkPQ8m^w`FGJKy(eJEv95WZ$!z<1!G#5MRup znvLe)Monp_X;&6W9J;ou&t@M9j9KY(L^to3DBP&3zQ>W|2gD!!xD&3IT)3n+d!%M~ zLbf9fC!3kpyU7}1rn>P$FRaMHsE>0WlT}b7^rFgey)b=!@{w`J%M>4gWlne+D2+%p z@ff<&Zs1D}yTUAWK~Sv1q3M|-@vpkQ_;i)M_%}Vu-g7H-J2q<7Fuf!fa*U8 z2Auks2v}WAywZM(c~5?QoUy5&E0~)2kImr-`+s4RI6Dgu!dpctl$xT=$F0vyC{?0mme`$#{I&@K z$rj$>=1poJiP}ub*uqXwT1TxM;VEvNM3se_rbe^Q`0o9m$ShO{hT$L88=6{QvQVx) z(z_gP1j?#|4;02XQ#{S6&}Z1PvQg*+civ0^&P}tn`F7TE5%V1LigE6jS<>sCClXmB zclLhAO?ms|lr%F3HLajNZX^Dg&S8t;dV5>gzAjv)9DBsq)ZFP-&+t|iast(K+niGS z{7BiW1@DSsoP_1VFlgqTZ~qpjd6~~JZequiz*;pIJ~|7g-{^#*4Th>D97pm<>=Rgq} zf2!Z3SS8o`Czc<)^B!n6*Df1Q&M|;-f3w?sGmJY7=U))wb6$WE%Bo&Ar(Lk@z9*f^ z@2OF}%B=Ur0ao|bgv<$66~D%g8dVDcW6S@X(y~^viS(eU;9(=0x0RZ2!&~qL{RAMF zK*ZcoC#u{Ajk2JqAk5PrDZGNgeTr~tjPe`4rTESzD%_^Up@0921^@IN|1+!x-b8yi z!4Lq0d)C2DmF)n7hKI2oXKLkIzu1zj?LX~VU)GzE-q+nRSw1YdKv~*0FdO-uctPgCU+~J*KtT7T?&|`2K`}px|F4#Yx`vcd`cS)>*Fq zf}L_fvBj^BQ0r^t)t?!oxttK7y=2)%fzWn-QPxp|HI1PeCBA=vS@SFT3U9BGeGY{OV!Mw^ zdh-LRg%z|mtZk|8GFn4^OhHY)^InKzLhyRwo--J<)$!`ZbNeN?#)%L22_M4~-fAxS{Hr<-QyX>H`8Qpm7`s-Lw#ES2M^7=CslMO2C zJ{xYtrdcE9fD5(ibhkX;tffk7L*~W|zf@kjtBdLEOYb~l5$1JY4J_>T`Y&=hgPx@* zwLT%<(tRWnPkKH?YASs%qhBnSfv?JcmWUH3&?3yx8^ApQ5!^?J(cXvd@RJEYS2T_0 zv1cf0lST`D@THVe)KyWf5X~i8+hem~Qj8ilM9g-)FnP0ur&!)uGldcyk$!d~ByZuv zbt}dh461z|qMFP^)ToY-s@ zduB)t3;qP)BfqbP_yZ_KJ_hMYz6`KcC@nm{Q7-(RbeSc7mZ83ZZbDp**a**5TQfp- zjXMJ&1}(cpj?8UUX=A14vdrm1rHD?vQs{eZ%+2+eLDW!_nAN?c+4vQ&!0D{EnE|X9 z*#V8Ysah$_=Z==x_Q{&rRfYFusyI5@TEG@h*Bl&9cZl6}5IYqj!x<1UR6Gn3mPg=& zF*i0+^UCBt|A>0orV!B6k?9rD`X_$>nX}$6{hUR!1pQYLqH5)7aPQHl36?Jm5UwPb z_V^E(elg=QZG*J0Cv;n`c-psdE$a{)wa-5F9$vu|Ca2*`p<*&pj_D--w_21rpW#SN zIZE(g@LV5Ui?DVeIzm$mw6(!|dzt<7ovtI|xr@F;*4*=b&eU8Rd__FtCnOmkmNqY$rURX~XejDK7H9|nD5ijkx znk_n3l>a`=2#5*;~6voJ<|LwpcvgQ${cvnHCsER7e~C?$>3? zS-#qY7oWsk*pui6t?oO5vnMVM$KOp?5k`=RzK^i$Z{(>)>zyhOe*}`a>GLi_B{}G@ zOZpdOvzt3s3QE8dP1M723u_O8vJ6Gk3O6UcGUp)|eKbm@@ldZ%UP8tm#eP=W zj{z2s;b0@V`EBfett>3arYYJxKA$rJ>Gd6-NHueM_l3x)rG6Z+ z_CGSsd4d3*Pv2Z(sN`@@)Ly78)hrhRj8&v!@F^`nfHtPjdmBki#kA~ifg|tqX387z z`QJrUA9K04EaLHOD^a7W??!@ltCXAv z*uhUA4wl%9`?Uq{+rdOp_urR&oc^G-?dspSGpF2nFPH8gFcdoU-Wa5EBNvzc%PsSH zx0?YLlH-}Ybd~#RAVFy+K{G#^Rz4Ax8fO+`BzoYEA#+toAXK8RUTpQ>{vziDRk;Z8 z=vY5yUzPWsdsO0^j@+J(|7C}tLHSc<95^nSO2_nbW%0(CvaxN|9K9e)noQn^iqt!> z01%EDAX7j;3r%|IlM?pii-8N@5&^xk4nAR2&4?c*Hr3F1qsPZ`+&BF!e^a!sBe~TuI;_Xbv7~@_gbz&R! z@%#bG(0r=b&PYcD>;ZWZ<$!B`07t36a(<;f;Cw|*YSB*I^ANGA`HSzf7TFycO6U5g zn0=t*&{KbWXmPPs_aEmxmoX%Fze9yGE~#eiw={UONKF`}WFIU*s;Cp1!WM12RnfI2 zvTRapJ&mSURBJ1Ha|UgtWrS%{4hY7n+JL3KA45&KW(qAl2FBa4XZAsm`%k8tTkeo$ zjWAI_ks;q@TlyLeF~5<7F@LHz1OejbaYoiNOG(^RT!8;F7LF0{8qd5$d>&97bY82Z zYn#Ukac_99w*CE1{XN0$HTs7ep03Id?M*&clTH~jmEi4IoD{jb zU|}zz!h)GfFJUQ}0o-!@D7^ZnCv59%T=fWjV{)G@{T&@E^u|4J!w8^;LF9U z!^7$MpTI3QbQ3-EV^0Zn)La~|V&CY}7~A-oqaI=1;L_a<@%L-Uf4f}~GUU>`{zIh~ zC0F}JFVx@mQ)eepF3oqpA{uAMFEghdJP}mB;zrfPmA2oTvG3UGmlz#=ie8eHTj10_ zO!M~J69xUKPkG6?+COvYDBbSZq#wc;h|a&^=B3}muu%wpS&te2;-Rzr(hbh0UGqTWpedYDL@LS7uq~EZ*-y;1Q>*th1%C3hI#mv_mLeYj?OBIxj zF2x|x>)9W=RWrz_Qo!k%jqgBvC>|QQ6}mnFp~blA_P2Fw?l0xLq$6HCA{UyUGF@3C z_)K7^j~Oj`qh&DzlS0Fp2&+0mSKk__tw3s51&rS0U_3NxtEuYe2MH$$qHek`9Df*K zDekMwcdVs$0%atlIS48A-5>_5Fdh=7R&O?hnFbeA>ap`uODMM69)MU`vf=Qh zgoNb9q3Qs~SaHbDwkd(Z%^-U`2e|M0;fvxe#1^|lZT?n2YY72_GL>k4U@zEzYQ?&L zAk>n>(26*EDU|R`N!Ce8a`&8ft!}3Z$-f1OrU)0m#VtETN`?{ZB)cnxLtFxi`gmuz zU*8-kJvHOs3Zxe{PVFEsUPB}UeO?dH9wFjPY;5guk*?)x%oIfi}>g%blV6k;n5TJkjx$Itmahe z89FAgb2aavY6MTU=G(A`DRUBJ6Rl(VVfz!9gH>j0a{Cp#2wCjnBCRHvaID{M?S(Vg zK5L@FTCOHURg;#j#fa23+%;>txCQKX99=^=SPTn@j<%P^SBpOjNGT$KX!ukxgwy?6 z8rvG=SRE1SyQUx|jSeMf4PBx1-@gd`aZk+;LN9OVH22SvweEi4l2nQYsHlbdBPZ5Q z>b(|JJUZ+Ub9E4;LL<3c!o2x-?4GmMn`7QF_~lOcIc?o6b*akJnHh>{6_E7HT4@N zd7%%Q60S6mZkKmoT!?w=r$e7uuRB*`R2X(s5ZWw%q>yyVcRQb!&*z|M9cmA@G)VKu zlkEm0A8`bE>j9RPYyjgJs+hTPvM5{v30hwkbMh3*SUU3gT|jb=|JR<&-?QQ@g`q}? z*?BLz_V10K2@d@j^7D~0Lgg@ko=sS)izt+D`g!+++p!qvBM*>P=*!hbfv*8FYI*9l z!Cmp;s#M=Wcm}v~3D$rX=muMyG8U0xRB8!%q=v z`@A)VkiIGt3rMmfq%@6WlpoHTn0&L&hBWM-g~~A(-#CuI-Kr4tp9{?uUD|==%ergl z)J8uR6`H-SH#w>(eKt$3t^W2!e|_^ z&2-M?oW-S2ScZ`AM2il^0P_3dqj8JDXvcZMr50Lcu`PDJgaB-)K&=R$S z^rL5C3PG=W`jy>MS8Db)YC=r#If}7vwFy_6kPb4XIoc`t)$-OT_3#`ou}^h*~>i z`d8~JgzLmOSSN>18%r-WX(JVr)p*6wF5Y4)B3e3)>SZ?&=_Vj2Y31PP`=d?jgfDowFzM0^> zRBO8Ha)pPP=>9X}y;wBj6nUaHQMEUVaSJa&Ga=v;LR!Xq)2^A3bMa-}Q={J|)s;ZE zY1`x@Z6Gqtb5W97g%d!xPh@kLIk&WJTF-NZyANE)o}Ypj8(L8_t{Y(jQpMj zf7r_|-fy%NYIPZa(6N_r{qT8=W?eGR&Ioj2)$}Jq8)CX?iI(^*kEmuBKxx#o9&Wx@=xo3!) zh5MbtT|}=YzkRgOV{$b}j@p>t@$Fii%vH>4XZ67aPV4UWe654gFkVZ9Lqo=r?&bFN z(u^!ei8kx0n(P2;vKk|L-at-GXQRGu5CM4XT|AGG#?)@DEWEjFBkq&cQF}c@g&%OP z;JoMszK|yIugkPhnP+Lo)`ERMzKb`X!>5cD70XeU9>tMCzPEJ-X0nJZN&l9GTRkC;A@BM&=muX+DjIi7d(2y#LERsZ+I$k<+;!m$gdsu4Vm$ zZxSH{|IwlnJmsp*5~xF;Naz2i z(GeRUY&bwaRjMdRq{wZ@LpGDVM0|xxz)TSH#rL$x$Q~pA^wOm@G$1`ugbpdXdjDqB z1Ith_URb>1+5xb_mV(cSXqf?*a>g4n; z;PC6b3GJLhSsgL?xA8;ksqn>s7Ngd;b(N%=#tM2i<_JTtW+(cy9=P2y?5osN^p;ZN zshltEhAkh=R)rZJ@B+usT9WYBGJ+QUf*tyApOV`mdmg1rh77pz2|BN;#q>yrgM%%Epb~71bjMb$b7i<7IW@K_p5$kQG+Od`)`k;(TC%d8t~J~ zSL9?N&WBru3*`lXf6!bFq1tyfd3wiLh1eiWy6s9Yx!}kHqu?x(;;(5(*+mpt4M#?m z)vxqD)5MMc`3wpF6C*;Y8}!{tTn(@5d78okH-DT_)<1}m7Ae$QN-Uf@E;)8F|JgJT zmw@4y?Du#g#UwEQ91?cjx=?jeHM8N+tNOjT9 zr_$T?djj6Yu<03>?0yQelAe<~=Y9xk*I3&Uojn;`uqBfU;dynC+hjvTPcT` z5=0ksozSmHOxBx)I^}F$#rk#3d~MQu43^t*LS2ZmOH);eQ)|Hg{GIvHqn`9VJo3$# z#+Glj`^$DuSg?Hu{tes`F{vLc#{9wNbd_a+u)eh#-}`UV$5F%cezz`Z?f$uwqaG}~ z$-=K&hm^tVo(8!Z)`hxp5C3vikv-gxlEnGv`0}>yqOw>rwRSVn=fF*$YN&q3$0g|H z%VNd9$HgAKV)1WIbJcWehKAxbG1eByqyvxq@6g+RKU+u3W@90BEP7#bA==9chK2Hq z)s*7apFhZOF8fz3Ky@u5x1f9jN?^}_3YWr}QwrvT+F#agoSCgo$bwsVf9;i`e2ck$ zX!B`rt{k(fH;)5R=RU{^3-8qd${T{v@1*Oz8-E7<>P7yX?f;BdIA7!^T1 z=qu>!rK6N^e!~;1kK@jo<6$>xbE>-gAs_*dYui4E4ga>-`8W+?#LOANrO~ z!H`9VEw&$qVsS@yodjztJ<8)~}jEGG4qj$4H5>vANldckkftTbCk z22+=l;D_9t528G`Csd?>94$k}-Q!4R{?xSN6E+rwZdpJS``tnq&cYkLQQy>@)vs(5 zx?+-oK+KC5tT;Z-E&JmLZ*BW&d&$BiAazaJ>zG z=S2b)nKwDeii_aNbQVs>RXD;&#$r}GVOG`^!QKmZa;qQr;YmI=h<8@o2hIJ)@_Qxf z;J76n$Ho%;@n>K)#$oBYk_Nw~UM}E53A|Q~;$|VO;g^6IO`WyzofFiY^9GVsUuyY2 za92l}SCqXm*y!yMTvP}zw{NlO+;mZ$v1yptY4FQoPU&UljM{`0Hb}RQ`r@IpdPpx{ zFWPBkc(b00*T%FtY`y|9s8tIgjaKTMD@*CLaBQ^6y1{txn{k>iu(4OVra1)ejpD;} zPEft=?1zc*KY~K360|iAX5XSbtT>>*#pP4rWuwE@qK^5dnx$&=_LDR44Lj=;k#r}c z4O>Jxfik)nz-?ylTaL3x7W5|oDi+G)H*oz~NQm!i3%@4`kgb|48PqqVlv;)G22nXV z+0C$;hGyO6#&t4E@y3-3I?0!3?kSdLH$T*nkVOGvP3f)C_!uepTJadiqu} z@(P-E_$RICF%Ka7Xr(Sj5G}X9;AP zBT}TKmzt!D^Yx|ieir88aS)r`&oFO|Qvmz8+SD|fAwGb(R6>Nc$c&XO!1`_KP^L4? z1usf$%KcG$xmtK$Iw}3-uV*uOoS3$agS5!Wb!B~M5LJ(6G4hLOaLF><4o@X84}>z2TqvWJ}f z9(}pn%WaWyChwH3aou`wOap#0T3_R{D#ETZGqX(s>%m{;P z8gGelO4WdN#m#-^7V2lsG++y$I16$eMI-s;LpT841PirES*!Zh4X?Aro zGZb@%XEiP@$k824dG0&0mtgb9G)G7{#}i1A2Ebyn*|@Gk{}Fy7fA`-W*Gx{fs;Vk*rZ*)}g%!zgiw#ZE0^O#bSdX|N#x~gp~5Cn3HVjWfsTfOEtdgs zRPQ08VUTt`VaYrVf8AjHrugX8n*ZE5Dcj^{nq^5?0sdglLSth2q6w5xIvnIw9OQu3 zgA2@tPQ_n)f{vD3Yewf!cm&S}{!}QJ%5!qi5!$pL=|0Ddm-sl$BrR1Yc*Tuh&p6aM zYC3F03u>;wqPQe%`&EKVNAU zSEU*uS~9GG*{r9;I#|Z2RnUosDFAQpe$01u{W?DR6^C-0q?b^)?9+>AowT>UN7ybX zx`jD$Dx#7W)Y@@L-$L%0v?r>c%{chc@xsxydaoSz>zM+lT^pgoV5Hpr^wNwyLf{?h z3Au%F7mv}3#NM2}5E*nt*;Giah0JCLLaRvA23om%(_g#n3LgsUH`6Z!KLhuPc~(a1 zGdFQ4Ap{!4$t@4>(Iz$$%`ZzV%gWg7TJyUG8yrW6)wv`u{Fcn=%Yt$W`sKkf6`5dU z&=~Mtoj=M?eHqX~s;O#y_8)wgb}%!ZN4Xd>e%KN7@uNvNL6IDU6wwk?KjQL8bm*lC zXd-xv9jIxYDNjD2c~ct!+^(gqujb;{9neT^-C5Y5TuvETL2~u-9&sYr6!*$2^SRhp zttZ-=8npe>%1b*bLaQxh{A*~67K?#bv~Y9)A;dE$=8&S#?3lyG#x6e14oEg^EM;F5 zaBmzaI)*x`Ga3X&N+g;{BIbi2nAOR;sDo3tVgN1Sre9H=t!uQjPOkut{2#)cT*yF!=R-D4FL(Yt^&7L%0e|d0tg~TlmN)B6x|~ z1P1L~lCcGRKIgwQ8sEWzy}5sYpFnrPLy)s_BX{8M0&T19yB(;a=!eITH`0j8q2u(} z&(Q)kYoLuq@)P<%YgUr_w#G5un$adXl|WO;u*= z^VUKx`)bIch22~;k5{F^+rcFGLG-@k6U6N7z6nAlH_<(ATEs>RwdWzb{=x(_W%shDnEIYXgMHq&Km7p+phFFVx!lXQ9Q z4IDhx#mLhPK&?)x!NkaYW?GdGB&G%}_8!BZtN~|l3cr+nfbZcQ`n;y{64*1BdNrj<{v z3m-@Nv;n~zISiQAZep^cgW^)it>dxwe9dY`rA0DE0pfywaDas4R8iU#5dW>LGV^AS z<_(t;?ct#AdRq4_8OrI^vo&=Tl-7_fi^I;Qk?U;H3%5z(0=75wromO;ZW`1;mQUzA zZ{`f{4gQN}(2>&m%QBca5hEsx!Hox)-gNI)tCE#vPrzE%=4`O~qEf?FxK0}V zhP}|_*JY`YCBhQ?cSG^wYeCRMr7cy$sTxsccjI522$D~#C@t*Y84k}irntcY8of)V z2_s)W($}5dZUD(wa>A;0<){&Wd!01+U<1RTcvQ_xcR75CkjA}GPE%86#PU$~N^#Tx z|GBi{!B?!_@yu2o`_^xs>W3#f+QP<{UVwIA|D7rhlxv;Dnaqj6`OFO$pI5a<7WXq0 zB`8?-4Yh)5Q+LfrmOb0@#RCc^p{r2kNmpzGP2!>Vn!<)-4U4( z+Nq68XI3JhL5EU;W29Q9`NS7>(~5j3hy`7b;-9rtv8ITvF9W16Oa72MF*a3ZNE zH^YLE8*b3QSupOR^z?CsuDi#Ex>2Xr@)d+<=1Nf7ITVB_vh4}zAS{=5WzL7@*`d}a5F)WM1l;pm-EtBm z7I_TqfYf(tB&=^2O>-0guU8v#aE&Cj~?K#t8wD73wpRSeBOY&1MYBJI+Dux6us91mUO#D`N_VK<%$`lDA<*WXeBEnpJoGRME-WNeH4|L)uRE%$=IQpiX|z zP;0Wc!1}5YBtJsyNfUh&WUo;J*r(Axi|()0t$&MWBB?D3I?iRlUSd}+Va3T+&L1In zJDnxnhco&;)kxuyW$G8Dkdzy?&hFju5hISNRy4=mCI_v|xrgMgm$-OgZL^~AYG!tU z_2P}6N15fmoqjJrUR9j}+;9A1WVF2XzS&yUvM*vaJC%0rhl0CcUgy z&gu(_r0bJ;?j%`M{b%?klw23h;do||OdZ!N}*7-{5}U{G=ta>7SVKfRG8#;u?>_DbhCGs2CFj5u|@g*O;~}Vc{4gxoBT>C=f%n44sN^6KT>%m znD?EoqV7R|U+JLyIx*mcq1hEpl}6C!9GXg1ZX*Pk_gjrSj{ZgR&OYJ($MwIY`2Vix z*_@>#mnrM>ifRE+YhPb#CBdcZw|8&yLH;v_4+8q+Pyg9v3UW)~U!k>$ZxXb2?r&_I zzzt@h7@LHRm4pb5poq{=w2iH8N{X^gFj4uDm>&1yg^AS}p4SdR-SOlw{4{OLn71|u zI&%c54q)v5xT$9=3#etvb>V(jyu7gLGc%R)5*3%O_gb_BQEjcw<%Eb`m$HuCQlpe3 z719qqZpuyxzTelco%WQwBcTW~-QNB3G@I!H`mq9PGcyh6Cz!!H*{Xp3718~l4f-Y~ zi9$j`kNeK>8?4zoqI3^6zRbjjH*Mr$D_ZvArx>#VVAovWrzqQ+u)_7Rcu*#}&Mx8j zPMza!62u|={&JmTT2&WtsX%$BuVuHu{rw70BDDMEW+8r=z0#jJn1Dj532TDQgoTBr zq@^*$V3P3scH*`8wbt_3&7Ns#@BN9< zo~vtNluuXcf`Wn;FnN3H`C8gH2bgn{At{FV7`(kYlN(^VJJvVWC+@u!v?El5*eU3h z765??e8>5emI=%?yh)r0m0wX-SMMJnaU`v6KmFshAEz3$Xtn53HJI?p|GDTt#TU~z znQY7$QUXUW(jYTuOWFN<`Zr2K!nKBC;Rf|E9pSqOI+1e!GoN+S z%0=@~ttzG8LgK*jF44Ks!mOGV!oFgVLtoCCR^dIzT}7GZeM5sM$bSFNGFOj&o|f_+ zAa^&0tc@~1z`%17PDhBh17`6Wj+Z*V=u1YsedbPZcEN9EnrUvx z53%+rwk*9SCr?JQ`%NmdU2ljj4P>BKPS+i@{-3J#r9boue zO_2Be7tZ+a%#iv=fy|KlM2e9+p)o!nJ)Ba}4GbYu&6We0ef?~y%OMWXQ!bena<6HF zhm8$9NuOz)ID6&n7260`-xy>tiKCZ3Vp&t*l$=Rh9$nsSF4)D=ykP!qXQ-rrTWR7l zqj&f*MbQH5yUhZitIOJ6OX*L{Lxo9q({VrTB9g%c8f0cWOpr%S{)(7)zL4kA7uOx4 zeHVQ9#aYF_(bfUgPMfD^a&H!5(mt0??{e0{o9+l%D%n?tnJL^!azJ3`&x9Nir`;IO z7Sn;|&vye|d*#mFBc?fE_Kq4c>+a}~IhTHl7xeX_ryz|1{o*7=QE5K|`xoprl}*5c zw?6ax>U#Ukv)jnS4C&kv`P^<^?b#gbKXx@N+iv7&1nN>7FiHV-%V5ry#@jP|)NUis z!CIU7<2=Bg?}QW;3$>~B+zIyyF@1?Z!#W@&k?be$mqZ%v$^Vn}eR|2Q34$WDs_L_( z>1IhYKPvugN`F+1SSY#j%tY6+AP0b9Ard1|z<(3_S#q=axou96mLuZ0Xq@R3S*!GI zq^*+Sn)ECjgl9&%_(m+AhYC8{LC42uPc2coCpdaI(T14Q8VFW8pVRYiW38tH`H}ha zCU=l7Korc@xL9Ll0G#?xOA`)6+5J2;(@gx--f+*pPGZ(-AMMN_%R}{fAcgvBwCLRO zslukZ@}XaqTJYsCqtIYsW80O-ns&Jepae6IgS2ewJHwg6VJF`%D3k-3Z`36f*d=$^ zcWI&o%-l<~f?1OcX2vJ(8rB=F!-An3F*0fI;%h=*^#p1qtpz>H+46~76{KFz4EzVG zA*wAF-sRB%bx{isuR3Gp?3D}(_%2NI4w^y){&0q*g{s@}FwDR!=HwEiCIs_#sS^<*8>ie7(`)ZZk8V1Ir=g=biVOe9)F}6yns5 z7(@gn1YQxUVF@UxuonyDYbdZD%}<;=YPcJkoW0+k{B-X<-aiwT_AV%TWH%GiKn=m( z2=2{=;&I0C=)Q(bRdvVA^y2HA4aRylkNLI+TC5SN&zY4-eOH6uLCRD;s?7jYB9rao{9UY4>`+CeUQ5IE7s(=7UIfr2ebYuM=#sOSYS7> ztKbSsA_yBJxbr>R1*Y0)X_Rxev{G@_3%qm>G{)m*g#XnkPy?U6rx{R2i3J`PxMtER zJPb>CRyIjSycRypDP+zWAWFW;+&j4B1clQ-3fprkUXfc2thg$0;;6UnB~0U~g%YDi zOE_+8GIzV!MzNYUTmO-xrr>L+dD5&L){?BgoH70Ui+*3T&6#pvSshZ=Z)7$)EO}TJ zF=K$aYyj9`^cK2r(_)&2>v%s1&9sAqH;?)X<)Q!z}XZ z`f;;{tI}saz<~JD-95WfD#(1fTBOe&HdA?MMsWi{O4exkGmFfVZ`&v&9ZpnGIq zbFEEg(qdR6f~$6e3=$YE~Pd)_o z)t>Bgvf&XeVr6;To145k_`-DL@do~@n__M@>1ni;~&}ozdgWA+nw`JS&UM| z_~@9w^$g9cc^UZ?eLH~}TO{S8;}bh5KtO?Bm(R^G1!4Q#_pi8-Xf5(Os;D9$J)0Ji zvO<4ptDDWd|Kii)ne>loR}rx)H=_(l0V&{O2JvsI{Lv-{Rt0zX#aJf>o6|o|j{gDV z#EBJ?QHCiVoco^Pjzl86{SpL|;F17NGpn0d`ep8@tu!**za{nlUs;X3qT%a_3zTzZ zc`6_}wT?0^y8nD}Z*wyUSz9Y54Xjy00aJD3&yVTU%=C$JHZ8^r4{ldzHbN!Gvjl1^)hKLaZs6dM~KBGpP;P-5P7r-djnij9)9(G8d|^ zxSI2;{yABGPjNi{a}!t2!0)2f5a;PF=7Bajp`akItei7~1PW)W20-_wwf8y#G71VV zDJv;`O_h<#oJBVW#&JDAtc;+8DcW%R2!=4DrVZ%JwC2niOW3@I62aq7%Bm zB)7h%t};LGPr|lrl}2ELMaRo&<@*ISb^i3-zMB!EZ^9QK4x?D?JTupGVQ$XY+B##Y znZ9&?FxK^H7<2U~I5N%iuCAm^jgYGA*E-|QsW3tETfy&>ctZobksmfHBTU7t3!01K-$Bt zSQV=W%~<}A;DNc<0n@02RS z>na{IBP&DSG1D|LWweXaExxYgraal}Gl3M~n_9mCSIM77WHR4HIS!88Tw* z06#y!MVQCtgIx&oB>=GNE?svWBEnpIG*9#p4{$BWgNe%ydY5u~7vgxVg`J8|h0{E= zN2+#zRAJ7Pk4)xiGbx|ul9@_DFM%5WZt2Y3jR@1-?`iUwvX?J!sZ~H{!yLY6sTdg; z7=(-DDFZDQJ;um~yYcVg%-!pS?LFrBx3?ce*5>kX>2JDyrn(i%gSHwgp3Uxt%d3BQ zn=?J)+a7My>=`RU0-5zuW7(PEefBZ4bJ8T92rZ-ZHT#iauOKbC#efu_O(hL_0Z-72 zcO-$$khT?r#iz^>|9M%A9kV_kJlFm@7EB`sgUC6-VA+6QU*C=eFOBs@^N;eLFL`u_ zBRn&2VyDWyIjmGP1}4_yTS=z|0GKGn=TbniCsQjv;Zl4g1J zG&IaN0iba4>6bdil)>1W@d&{K%q(iIV5V88`~EC1(;LmsK5vj^QNp9WD<8DaTqZ8G zdxAP|CVuw4;(ok;oMT;6#l5{i8&e>0W4_&T2{1G+MqKP_5lvJ@$b z^{SC<;sHYsiJRtyJU^lC2DqxcLs%^GdsV)V7C7s zmTmHaOHqM%g87AoVYdDcSu1|qtu;(e|3OOJ{<)IPn-qDh8!Y0&1i2ed?J1M!t<|;m z-=*a` z--IN5<*{n*$&KeS%ZS+*?8@P8uS=>?$FBGx^6bg>OB4@cDK}ke6W+lP) zIVzv8C#|0Huh&!e8A!YUxXFbckZ-%Xuo-GV7t>(wjjhzw6Z&u8sDXKF-qRs~Kk_LX z=bVpM(Eesl-G`hFXiB(&GxKsJH`!FX>f(icLEyaxKBkW;C3EeML-5eL z>i*_Br{e9iHzw<&5+yG@{R@fyKihL>Q={fYz9OaP4_ww>wlxyg7f)THcIT%ha0Vr7 zW=iWa$R_Znl6_mBUwrh)>Fxb;r{kv1#%piq@-8o_e8UqeQnCK*-D?ZV)V1GO`38U3 za|_gl+5z0%!?jB(`a;O+g||G-ViomPG|&IkSO0PDtX=i{XGtxcd30`8*3LD1Ci!Q^ zI2fj1DE3?WS<0}xNRhW(@_R>2z|4hJz$rrDB5a^RpR6nGFRs2f^P2p&7%i)(?||dq zKYh;KW)|k?3W>7us+OL;tgPryLlRn4KFgiE?<1b)4KIo#~;wDM0 zGj?mu?`MVwzWj1!t$9;Qb8qGoLmvsy;0L6)@)+D(dHH+N)ta+nhm$$j@WN-|)Ei}_;TEz1E`-0{z zK69jcYnJbQRkdmBC%j&Fp=qD_$!yE=pBl%X|)6nRY z03Ms6!U0YMx((pdB4Ecx8Cc!r^*Hj{efF0xr{Aym_@=eQTy?RJ-1OD?wJ+s#cdXWc z96Dp<er(y=k?GJ&Yq#(NCAW?@=oj9St z&iB~6|KE2<{i^?0a^SRjRDZ1Anv`vz*m2kpt!HrbC+p-87Qt%ScNd<7E)S3W_2U0$BX`fR_;!-`?vUULjFi8N{3-4IU6nrJK=w0e$UHNJ88OkZ3FmHZ7 zjmsx5@R0ka=XR~BQePi|5BEvdf%<)_Rl`&-eoTqZ}#HOk`2%8 zK{`F=Mk^T{J?ypU^36YorWOBvcl`0wKTI>jJ3g(NUjQmydG-MnRIQW&_Ej~x-={vtGcVRRITO#RG-M-sB*)dqk z+V0!EJDUT_x_~RvOG;&ZymfB2-l~5VF~|3(9RtILwV!WsuUKlbHE-?jGrg(|3=8Jz zHLo<;`p$lFW<}hqg7%Y+tL4*UMG`!_hW< z_ucE|Z(YxP{qircn$!1pP4&vXK>ubqP45RSLGw`rZ6#qk2ow_FPy;&80dy!COA|0v zC}bGTSf{U_rN1z8yLtH5=|FX7fkJWe@Be;?e_(DhU;bT|J}?evU3?;c9hh8l7M_#^ xnV^eqjsU2~&CL<9tsmQ=b#qy-VAL%O>gR0K(Bkd{W z@65b&XU(ixv*wSvce&Q%5j}hF-#0$BKfjg{!^XOgg+L&%CB#MEAP^`A@XPZ$27FSJ z!W)V};3>H%DBHc!c6?}MV`*S)rvK2+*-HPRzLT*50^u}P^wrp5p*;BGl`TQlHJO>b z2VoDpoq1Olk1^>I65FavHilyt<3;2ieiFL&*5Yd0Gx&_0EKJ@`#e|{iZa3BO#Qe;Q z{o{ELTmh}z;rWH;%$-X|rS5s%1^(T{Ej0b#myoiXwq){ zVH%?Xf=xxuB6L$VzRixqE6B90w*iGu3vC#YNU{FkjwqwWlKDdpn^k$IMhIz-l$uW|yGoqCJ;XvmiOR$a>dQjX;TtDvAe+ezMps1)DRB#mevzK<;U zBKVBc#z;JDLnKW+l3GJl;xQ3j`hd>8XC^<&B%c%wDY}wADVj)&R8%vq3LA z)Ud2NW-VQLw^ld$0Z+GstG`3uAlANkbXhsAyG=?_#lC28xF<`3&hv?C0>>tg!$?|R zmzu+ezfDexb%+ z?VR4GOZa%&FTS9MpYoX7!qe|-aCT}MgOH-nl6(?Qt%C{iO`#u|xnG;_8Vf{*i-z|O z#k{(wG;C(NjF>2#Jg55{cHc!bR;u1)?)-s*G*kJKS!o9OjWfp1CmU=fN{??-(KG1L zw$GQF|00~*NH8j#_0A(zPoH1>WlG|&hs7MP+23d5KqDICqaEI88EeYA-NL@<;Z;V* z|2SjHRLXX;e0-$(C;rp^+9JsfFTD{d@7dC5qjmY(WmcuboX^n?{^+*~_EBOC?VsIw zPeww>Ks@B2=c74quoV@J$*4Ha8(p9?J(#PIowrvWkofk+gkiDAH!2@R9*v3tCho*% zXZ6X#A&WlL<{52du7roZHhSqj_ar7yqR!18S@4ebX8Xq9xWvp@%@KFcL|GBnR%|3y zdp<==v7h^#1LNvE)A4xFyT;w|5wod5>?8ED=r#e?;Zm2jL0lW%JZe6iwG0`fGaeFI zGGgJ&9&(07>15JdK`gzbVi*V$=>@rEEK}pQZ_Y;89tpH@_vcfbgX--aS}K~#95xZV z62JDsh=S7*Y9VQdQKc_(1)i2FlFMHG~Q`^zcZQMQ1~Q9Ejn-GQSErgA^Z~+Q6m=u^vp;L&*Yo2 zzD3sGei8GWA~EsBHhZu`#(PY~_XsSdYfJIecl3qE?TYArM#sCdY~_!qVUT=hWsLQ; ze)ll*3k8?-?pUA)N$5K3@w`G-L&VXe0I?t8@3+xsRFq3N87yW{X=7qoP{&`XVH+m> z=0xw)F_+4+k5YWjnyc_=Cz@BH_qmCdqGj3rC^=Hpilwolf*AKt-mfx~y>{@}uVY`J zP&^Z(_q*%=mSM8Y^uCw4nzt~zHszr#;azWqIJ~u+3Ot9OlZxMSyXGWhWLHVuWkG1o zEx1H{OKI1AxZ!4}ejV#Qm$RvHN*IM9=V6*MnvI{}bE3^!afC>_HIw8J#?)(PpKg&6Jf zaGkvS5$wOd&N{hg)8cNsk&9E7lyG$Vlk(^Ga!Vt6B zFEMt#lm6N`y8;FB&qq;atm-5UGrmOLQv2}3Pfqn4^LomrYdQ8zK2~5@+GB0B(k78p zryT5uf!jE)ShqzM6TRB#XJ04U<)En(@Z3Gou*MSk7<|vS%UDIs8RNFW1KG9T;uI!C zSpip@XT$jVg`J7o2RAavXv-txPX+a&3{KGTMn8H_VET}{M-99xulP>cqEW2$?7Cil z+q8JpHqAWMiPlfU$WSw5!{2{?S$$Lv$^Mj%7SiPA!SlIu)++)#fGdq8TxgUFLBA87 z{g|xfxgV~C9apNJ1_e~EC(ZX= zn$2_K)C+FO>($eoRoiy58&7oqUb5{gP15gNPO}zl|Jp4v?-BJZDZJ@|(UjwwGa=QT z^qW;oDaPiu=}#i^x}+~uJi+b5<}rPJLntXQi#YT7 z@7X-@!o;G;kF~_NpXgpA-oY9E7O=@8^!tTGp8ky6PRmZXsJxdu7w(5|kGJ0hd&PZS z`eaA;OflqU;4Xy?&X0CIjTCGOuevxlEpaJ=ILf%X4!IP}|vzwq#+b?z=@i z{7XLP8}*+DP3S&Tv1TrADX(@SvoKa@OvZy4MMW`^0pgDfzwZE3G-{#22q33cxP(H{_Hl{9{1r&Yn#KWfi zSSS9dr+wLL1JmN@9kl|{{g_^NP9u`xve!72t-oIiX-U zfclq9*yCp^Pwz~sJdD&|jHM(^m7V|Q#C)`wrJMB7`@PvD+TC1Qqj^mRidWicG~8iV;T-z1f-fBn5n6$u>^o$Sl_g=vt;hJK_a!N>R<=|kG zHmbbc`||e>eV$kAC)txe>n+cWA1f9cqoHOGMno(FA?vsPCR zLOh9Zj=OhH;5VC=@}ZF@rKo#%>u$a>ULR|=joM%*eO?)rhPT0}U^I*qqB{NqUqSeh zuW7DM7A7XW-_v3tL~}g9FS;hzxP2`NYU6_*;qf;bRg%xrH9qz+vr^i+iHPsM>)1pO=C;Ex5cM-lt+;m5&_1=aS4&_#+%j#my|Nn z$Rl)}Te1v|?~h@Rb>rMDv~M42l+U>&xx(l6JSW^r{o(|kHo`@M5Z;ToaR&yvvB zq&kX?Ne^$V+a^{!j9Kfe44$wgaG0&yZWlM?pZWXGY$4pK@Tp~JD@^m<>#sk3p;WMG zLzw)fX>~PhAoGu;Qp(+6oxU2Bz@OdvB;>G2HOU%iG^k{y1%m(#_7`s zpA5ysTR!%~Nv&>4Ez2SMbb$RshmapvR3`yCds&e6T$%MLe^Ej^^;!A4P zCQfDlu++$jxP^!Mtu|JzJ-_wuj`KcI&@{7}AslN8J-mzgjJDLF1*ahDUBym8+{Ala zpF8DQsy4oaMSoPxvU3SsZr?${6IE&q(zCMRej^;z5vQjj_U=M>LWYZ%>EB4iY+g$YrESyk zskrr=udQSgRZjjPb|@!f%tH#kzHAk9*RnAjosF5byVTCJ!MS6O8TKn0!Z{z*#jH@U zgr3=|hOmC}le%@g*5ZABapR7(4jqpW)dA|$3~S6v&ZukBH9{2d5N z^->8+=lB-&p;iCmB!(x0q)Uk~Yge(%I?;HD+|LVI><}4D7Af@VjhdMC;bTex^XL}F)tfdDmG2?Bufk5|40zh zzjhYGn7wq`DtX)`P5*T0?G5r(*1uuGRQoz5H+Si=`BKAZ21;ZqsGKHwD9PXS&b6#0 ztnls_#h_xnKuhRj`gEOT%%Vh&joeEi#KNne9iQXRK@NLiYF)Q_*TTLE6i_t2ZR)#R1Yx}ntotFi5zuq)av$gM`C8*Xv9pB`z%GmDo z`ty-sEFtDa7sY%nhCPbAsiVE+PqD=QEEeyv7xGt1cNdx+75Jq;Nq(bE7CD`YeO#A0 z8Q&%v(on_QcJls*5Y4ci(MhCPsl$g5?v-zwp=*v6!z-QBnIO}pC`F1e2)dMGIFhT`~pJwzq+XKt*#e!cH`oiP5*S8{l1pRrey z@1o>Ce3<2B7tur2*dswvWwv&C=@(0GddDxz`DJ1^HyOL*)ma+ij@s_O5^ zJMZ$9@3GEtZ)|Ql9Zzz<9OCx8jY_eK+B)oXd! zVX#lmlla27p4;t&rONgAZ-4G)YKVZra#w=%*QcTW1Pl);Dc|&MNZA-F{Zg-k|0z#Z zyJN<2m{T(`1)rQ;>+9>oGTWbYobE3_yg+Z0mzR&_btL=zSwg*nusMJ^xNfT2iMd%P zpT%~`Y;JBYOTCQkcyjoGmw@}+1|6l8FB-EPGyju|bSM)r?R{+F;YNg*LRht08uiL&jf z11FQATaAN*L6VX5_j4KO>HSgAFyspiXe}#u%e%Pn@XFlL_@6upT3EQN%S}fYyRu@0 zfqmaZo|&5)J$q0!*{vf+PT~8TvYukKVzatx_p{M_U77&GCmF{5)J{%LcbyqqTU*u3 zY#NoT;qiYN#`dgg42b@%+bkm*pfA{kg2%#%lKc zuFt#HF#TI39BD1(P;6`%^$7y*Ux_sDy;y9E%+jjS%-8D16*Mz!^p{16VPDpG^JcF) zM>_6^Lqw`SK+mv2&O5RHgIH&9S0%)glwl2__mEUvAr}$DEwe7L(1TRe7HE{SG`_7tGXY^#AkcPoCARPJ%t$@)@Sf6oDfl zVSrCdi*1f-(O0;hgZ1OIe2?}h%b@IW9{aVOlljR2Gt=!UccH0^ov|WQJh*JftAYTafr=am#3<)4Z+Ha06${DH~I zHXU)C!&&UQO&!ykrW_1PzcTFC&kn`o{QS<%J09nUcXUVxlM8BpJe?0YUI<{W)@%60 zd>vO%I+8xpoXjvFIC!ZgH1z?u&A^Hb^IAaNa*`)XZPoEq!_MprYb&c6m=R_ZC$B=s z-A@;lnl3h=qy$bE`cdt}!opB?_VySHgZN#K`cj)cM+=P$WiXWY=&-ay^CI~l0SzpaBg*ZRfA%{4)^5od%k&=Jbx!?nLv=A?)Rsx;i=|W&2_< zg-jguX=BA?HnKaU=ek`nVdCFe7F*2m%socL)}IPAC5B#rS6PnFv< z{CJx!X=B4SUb3Am8g$!a@JB2E@l&)tjE1U{IVqv3nPMuj;5)Z(3keB%^@{2(aCaE6 zPnO$1%SeAEBeOJaSu(e|`SPdgv(a+{(LcT(PpttuE4-3#r_H5P0MQTAUH?Vo=jP0$!I2X`AqjShk;)jH(OkvZiUM# z-cKDGFLw8O{sCj;R!lpttygaK->cDr?u}MBje-qTU)_NNlC1zHD;r1Fs@$b>!7P^XxJ|y%ZzA+ zlU?Uef1%}cm$F5F#xpcb9NO30E4{ifXwoZEgX;v<~tcb|vo5y{N7DcN0%4`U% zi^amv_?a^^?_?z<>C4K>;KHu6v6<0?fA;s+=}V()3bY8}+so@rwWwL%+-zjXt^5-~ zmy1t8@Y2A*Ahc!-*<#UJ9*y5#O0{%#EqP;(_2j6?Pq}Wp+t}Jlyn6MRhvz;*u%^;^ zgjuV)W2sYZq|o^0_wU~aa<#f+-gcQ3*{rEe^YiOi^v!=h=iZ;3KkZ7YsfC~ZGdVd)dlLs|sp@!% z&^cY>o};5yotB=ECGGGfM!=bOg-^#`& z!{fpQ+JA0!71=|ncB?{U?gx1DKllY_0Oi0kMqHiB621TMA!sjOSB%|q%Jr$`l)7Oe zjNNo;W8+rEDr`#FK%50rsCamI=;eNXezZL=MMOl9i-{7;?*H<`1+9B4?a{gKrmNkr zVmNiLF42(FIe%S^kx=oc>I+p>)lmDWCu&`*{f3g~MM$s}XDKre<&RicS_=F6)uq84 z8mXnT6MZJZ(ZG6lu5o&-++ctk4h*XPneR~Vt_1-Q%lQ9xV!zbg42DT zO1YX<#%FNlj4Hna4-O7=NM-HpZnZ}}X*OdzH&?H4Ak9|%Iop%6qf-w&?<>?oP8>d<>2P+N@ zJh%cQQG?lny6Z#ce0wboFNfNpLC#Na#`8Jf!NqlC(yB)FN=hQv)J#N}jqIRHMKfjE zF3T`#RlkpqkB{3Dq@wx&`>iRExcTD^W+;+9Urk+A)%&JHZcR-=aZY=!0)?i-gkJIS z56bOU16%cw?P|BulX!V?rfq0wSl}K&c%1LB>GGAcW|;Qup#Lq5p(NitWU5>av)*PKc-sSPRmfJ11Z4O3m|WqV`_<(|>G727>C6Y*(V8m+ ztk-Ywm^Mc8!=X`ay7@a-hPNf4RV?nUH?tL7%xe(n7sT@QNg>ryL*fD?^BrW88BQq&Y*6-UOxNmcRr5BPeIXJN`BL7XXg3P zFOBXjx$gN*_j!bao!vt&t`p{)2QZO$=K`1~`_{7*f8J*|kY{R$a>GS$@H9-b~mgqCNsXj0$M;CyjN_c!_xr47xs^3BKz45+--QTC1uJ^;af ze%E0nT9j>uQYEFTmHdL5#=*q&)v=6@iSdh$9wr|fX0D0<2D=z8Bp>Hr?PY-RNZxbrv&mB!L?_*z3B^DvmR$3Yr0;1bf zRbG|jc)()_x3(-`+4rZ4ITA7||AE$D?aw4~J>H^XU_lhfT7lZTmGX=jZzr z2HlBLWj6Z6f*ub5GG|Cewn--m1nIX&?KTo=0fa?|xx($tR)77#p!4gRR;XV~!rc|9 zV_@9q0gXC#6k;MG_tyLSpCIA|J$si-3g4tlqL&8-^uZ(IaolQwLFcsov*dKEf*g2|s}e6T$o4K$k#y3@_g&FS2FJliFpvHk;Yak^ND1suoD zh;9O%M)^|#fhpjB5wi_Rv#m5|R!bc!N85t68jgdr^*#ajZ_z+yqPwW8KM1F(5d}Pk z7@Gbx8$`VSjWtxF+IfGfKqZmgFlv|4-a3Lw<7>30ODF(iP(t`VVY_|;uoU|BnJJ;_ z6+rPCpVJXx@|3g7GxC#_)Ke}1OZosZ`OY@3S61>#NJwb6MSKTtiIFZ9t=$|<+L6E; z0+1dzdr;B`Yw@bb)qZ#GWwGUS9lq?rwVC|p@|{l3IF&M+XBU6@RTdn8gDii*6{rU~ z?2VQ**UnsHFkWoFu%x;=Uc#A@lJfD>CmoKsSeO`wUGZ?MuJXUsxe)+(#e?oY6PK3O z*_t@sIXrCAW5Xv;@=8dE<(!W92dFYNrHMQd0Qj$qOx^;%{^|LWlG0H!IT!YHY-}vl zh__*q`xLEK%_aN%_P~Gwpskr8PE7_jw<|w5T2U)2dmwJ|KVTs1Rl$(e=7{^QQK6W! z4m9Ov75|s%!Fa)0$IT}t9e1Y2{?8C%uGyDo88fiSr=Me4L}usP{dbKxDc7`raRW{-Dq!V6*^AzXJ4! zizk?Gmq`++TIov%wh*s9kd@D2ZaH=S1i{3_#Hd+`@B(Bk8M(LIFRO&amw$tl?qa!nAkFI~^bW&)jw)Fbng>c#4T&-zA z`$}IN9}vPqptc4wT&v_W#ZK3%I$iAYoDy$fPnxcaE*qB z=G(V#$|YO292VyomX?;Ea7Y7zDLjAvTsqa6|p*kHdXsW@g!~ifv5{Trw{x z+7B4m>GGMuO}3Msh3&}k{28AHhG{EsW~_wd#p<)KwkJDygilo8S5#mEn-xki*EcW- zgDD#>dz1kO8^o{0`u>aMJ+l8}+1=Hw&_Z@pFvilfd{e zwrY2rz7Xn8wq-lU}T zNYQUUL+Z@Ho_@O?lij&<$N6wjBI1c!6j0`SAt(Z%woW-463#c*xb-t*A#V%IPE1UU z$HDEcr6qHHy$jSX=hYw+CT4To(C*REH>g}Lu8H%-r0707wW5&Qqh;NlY3%@~NVJ`MGhs$H&XSsya*QLNZA{EPxWV6i!6BNh&e?`dqWKg_{pT%!MTA^%WOx#WQV;p+Z(A5M!%OWy*upfI*W;Mudm3>m1l z{iRMSdiozN4shB|R~N^vU0qChAT{iPrfIX<_c#FsdB<10AANnpzkc;^)kA#<3t?Ex zbCP<%^WsnmCa%SatsR^J%)h9Ki3!woxLspo;~b5O;y)hffP5CV^{!-j?qv_Qbqiie z!zI8D!+-@$Mny~ON6PB}CI=iww4CQesWr!V2ni<+IeC)sI2Z~~$zkMq@3HDO-Bmu? z-|vs5K$2WF`;{IFpbW(PE``=UTT4ry0s?NX5B;1kTTV=U89>;P$RF2C<{G%S*gkHy zy}0;RZ=8TZQLiJ0H6FxinE7*SYbH6o&U=rbnH!*)VO1m$z+)dj6|*n%gogma6&6So zK)QDJ_Zvn>V_{u_Hg%nkpC4qJMl%liDi?b~X3fA4AJ7B@1Wry)-f_esy&1SOgRw$m zMCC!B6kG-gCMG8QBV0BM*Uyf(ON_79b8D#i`AG!@1vfS}>=cnFchPMGfS-bb0vwC` zS1Lah;ZFj89RLH9gUt!g5(FG-8k**epxRoYPq^eV(AFsTo*LZ-w!}H)xH%Tt(jpF~ z4MMrZf)t<#<4Q;*$kD2qDrHXEo~iqwkgJ&x5fSm;(yxjij2#|!DAr;fNhztzaYMy2 zt69{#I!`t!+bRCpJ8Nb#?W?>|Kyi z5NpG^mVu%r%8VUfp9N67_;l~Mj`YC;q|pXzxqfmo0Z0+D00FH#18V?DNWUwd`x+)@ zf65EYhn8${B~vZ|qCxjZ?b=~BOvqgJ9{1SV*qCJ)*h9mMR)XU6&~oAI@VG}qL*u(@ z(GS)yTQ1Y?$E3Zzy$4&9vkgY2k?^*USeN%i@j6q(ZuO6P5G_OK3WcsiKXONHFr_&UEnYtYHh z15Rx+kX0u}?k)lnwlR&Cbrs>5W4@0L>FsFSP=TD%y7L z&yD#X0yH#YR8#*tZEowiYf#B{>q9{mTjc@p{QJJk)7fnSM<*8XlEQJ08bfcdBYB2 zxCI;DQ?VeM?i%5c;9zPNmfJ07rvso2#qogF0zC`ToIilfqoX6>yd<{y-ARH;pzQ$O z7lmpACsGfbfCxJIPgn%>uR)^!q4?9JFgh`@3t&t0?tC*bv?iGvIFU8d5V0>xzL&rjK5w+Bmsk1gi_^G_IP-w!?q3%K%-{2x3wtG*wfP=t4UFIB*e$VQv8X$ z$gO+5y-KYuc@g4S(c;k+gC=idkoQURF!`xsc9F=@+y9q4lStmq?kUKPRjX-7K$B)* z^9|C_0fBqUrNXfOU$X#bo@?Ie>FL%BEqI_9Qip$UadAD`pm_Q;0*EV#{&IH`4JYSu z)Y1C<{0H#45imBY(j9p0R%$Pfr*jLW;HEl+x?5W*=;^Uq&amyhV6N)^Gn;81K1^2L zWK_=cDl9Bi^RkfogeE&l-lfzPNJQm6B=sL^S}N_Y#!YKZ9~DTxKxyO1u9 z-<1R5;o$+UUWW3fbPP*M&)y4PoP79EO}E{bfF=V5qiSjdfgd3rJ${^T)Jyr5(-J9E z2J#FaQv$(W%eey(g}0}wvJ$CJAp8OY^`NCHcbiCJI-N`Y&d<+(4hbn4ZPLlVO+?f@ zT3|@0^y>l4zn8_He-Dgdp}gK;snG#RG#*Wa>s4WWImuIkENpE zOU1&eU#$#$#|K+*VL>m7Ny8tWFKknuIHY2aljnA711gz$TT?Kp={djKi50T13p}c4B*!Xd3DMZaARO^{6u zKtrY6j*i^(oE4VqI~Z!n0|00_Z8ZZPLJKLu%I0_ph)_`oh-lcX4bZI({WSfk55B{+ z$Jvv_#Kfl-6DJv)kx$eJ$;ruK2Kk4F=TI8J2Q17gY~DGBUCd5 zTJ%l3qG7mjWt%dJz{+OLxJwd0ho?9@X)5c<7rP>Y3YtvB>~`j)xAf*hK?==gCB|~7`PAI z%0no8I7oQ#qmT-CB1jKobT1d{pun(u@A7PWJVL`0_acaMsurLFhz3U+qx-(7lOT*| zs8y9tE+BoX7#0*@$Oy2I+W#J|1MSHGBKg#)$E(rfbWH3FgyXD_@x7TXBk$jd{k(Xg|J zgUEb;9Xxz-Sy|3D(07B*7KWuHCFh{9IrKq_fi-*^PSU`D8q8tG;(?m&g@Oj?fN`i= z@alXYb-z{#`UHyab+y~6PR*xhrb814Cs6X2CK-i=dh63w;UG`ke(>OjqZ*7uu9|b3 zIb4lCUDT>N&k?o|L(#4C*t#OABum*EH5Z1m@T3Z%5;f+WK5#M(b9Vl zsEF;sN-v2;#k;!qsN)9u`mFYA3Sio)FF1h0R6XkgM^P|(6^?5G1p-<-HZwCbg2R05 z51{FQ96^f-E)bam7hyiw%+#Wgx$V@U+C#JeiSHD%3E;HeU4UaSny3BYl?q6^##5Et zi1p!I8Wxr>5Tru+^5skICu|ZVIqBqpe`IN{F@Qs#MmBMwpj&_;uRE6AaEwv#a6le< z196*}xD~#(47?oU@!}^WoECae!;LQFG_SsXgu3Z+Kx$5{NM#L7(cg5gn?=KcHJG>V z34ufrR9J%*^t#Z%IiBGCvbA>b4*J8MuyIx+H@xyj zqDd)&B<#G`N>gUDhy^e}^xmsPK4MNzPIzMIwPm);Mgv))`RXxn4_2FF&qPDW%pyeECU0eH%fNPbywLbVb~eMm2mlTlA6UF-H`O<d9sxMvYqmK{4x)iVy;1q=5lQn{J_VMF2 zu!(AIyZL=Vd4%r)4Jb4|-VDDBf_eHdB@tlMdY^6AOe+%+5Hx}_b+YYwWvZS6KW+<3 zKwR==D$J#mllhRKMI^X5IRj9I38Ik$h^tKo6-t`U=mn#|)n9~~TTYfog6M5Blp}$Z z$6N?NK(h5t7635-9H-yk9WRIgLzMTVN#G}}B8OcVU>u||iquK|5h*>!m4|b+1OX?* za9i*p(##v(`n$E`#_PD129dG}5RgSjA)5fvif^x~07f7~jAou7rGPi2FCR5MxxKX1 z6vL|PRq4749ueQ}AAF&y1El1pJ0Z1Aon|&EsSi6Ygtew15V<3&%PDOHED9 zKoZVhLTZ5TD$}2P{==H(83}LRBxJ1p7iHHmG;Ai)a;s|%r}?f~#S_h>Q4dfW&IgDN zNNPw$4r*|;5TBg98>s~V+Ie+)y1#7PlkEL!6riHfbahqdApb%TA7s}I0D*|c0-_>f z*8F3}L87sWI?QCy6_0$d-`}KTfnl|#h?Kw# zlEE89N+E60%-ygZ>EttRfg7m5(vyNNd^S;L8_#X~3EG#iR7V3`20%`a1q2d72Y@Gs zl)%B$0w7tJ;Q@R~rOM?QR21LQh;9@A4kY9rJa_zm}C;A|$${&U0tj~GA`mjIy^B+^BACJH&q zc#e+8sP^pa>^G~%I$K(5O^Tp?i5xaY>Pn_PfDmYa=kuqtv(u@AQ478lnnf2R4+u*1 z6`3l5Yy*ne$T-pE5iG`?y>@02rAc6_2b<$WCs$`HHOnBT1LQ)8OG<*{1W+ehcpZ3R zflw^;8koh8d3i~^Ha5)WPmnNu!v?q*=-};;P=%PE0bo$z$h|++I32boTH`FMCEyeD z`qC_+n(8<{M#exupap1!S1`h9~ zg#{BJB%!H=XT!`_mx)DXdnt(8yzrhX=rJwHRH4&4fFZt0mnZQ z7Wpg)TaZSiLOMu*8FdW}#Xw~S0eu!61BGAeqgin=G0HP#`}N45fG1yUF)0aFen1Y< z{rheBvV7Wn7>aO>pjznXXq8%}Siekw_?{GVm0rQcVLPOhg{HFh>&xqBn?5Y>6&d$~ zJv&C+4#NU8r9SY+!@|RZhOf?;$^L1HB$u5!Oo#$5&W8vtW#?A^R^c=mphaS(ML$EURJC&KMR_Uid;X=OqM1y8s!N!l;MtHk&974I<$jQ$N*W zW@8J3P@_EHbMPwl*ww&SaTkMv6&DwO2!1@M5?^9tTcPw;#)`5#)1E>z%>pTa1cJCB zs1B$Xp7X~cK8yRu$C*&|X4BQApp1gv)PNLoAs%9uA<>Duk4?g1wK2j9S>=OF>TpQ+ zP(l_LLb*r{GtM6VO$upMoSmJ8Lk}VmFcg6CWcf3sBE9-GiOZUj-{k<}kM|Mh zf7f%}&Uc%U%?rV6zX4v`Qt{_8k624H+tUR|E?0W4@TI)Su> zVyTMggEIq@w-aRMEJ(P+oR}N8tVws=oiL}K_Co|jWxcNRWUV~t%O8T0A1#LQeOONZng!b5B!Vg z@bGWo;7|i8KRI!l4?tbO{vjnLMa9pr0T33Rn+h=12@u0!`PN;pfT0`;niZ_qHhEe8 zmoQYWuFyxu`?Hmpi_J#g1A_(DZ?`>#ERHxWl{0=w?Sa*ab+I~dp1lYcVG9rg#*x!O zuh`9>O2uX>adj>)zXO=@KHGpcf+_jV(9p3#ZVkS+&|>oImoK-0J{tFaLq{@ZlYy2K z)Ptos%ejpWX>oBs*89_qjY!hH&Ikz-w3xoWu&bliYNXI;Wwl~{im@oDq^Yojls{V_ z;*xi2yurJKbwPd{B=#H`FGsm3_x&GilmCsWa|ice-BU>&q+yviZ-|vaTw;rb9_`Dd z2NeitZq}VR>q3zw8%)2Ts!xL^jXDy;G~l>ixi||(=+{qAZ%-2-ZKJ*8-eh2`|L+2Y z|B00RuS1IG`=il+WMHar*{|K&-MyjA7)7}rD@_fl+Z)%fCz}km#Yq44LV8N9N-F@E zfkkpb`Myd3)AKwRj>pN_84u10Ze~+bMS)_WpQP6EP{EHNn z1>|HXE#(4mpk#EBlfwv8!d|KwIn)4yS|~RU4o2Fq5A~->PyuRlZYW2F;6POvjp&T$ z{y_hh9-oAyJ?ybmET<*Y*47r{9Nuk!e3~p^_rSm46l_g4U=?0;uv6WfG;9vmFpCmA zGb6yk!QqK}3F?VwE}+5qgoM_P4o15R2tFWP6p*-e|M=mRmX>~rh)~vZg-{$gxtCGF zixA5wxUmX|8$wNr;yX(3Cd<1a`&~fiXl0cKd7360=)~(cT_1RLbld_&ZJ1*UNoI(h zYVXdagVp_UVnRKNS*s2iTM+iy6GfUIkkv8U_rQk45@5DB@Cr-nIRrOZU60fWnc}Z1 zbl-rw320sj^Z?itu(t`69Zz<&;T{79O&)V_M1j(RT;Py}3Ef1$b`2SB&~@ILaQqw~ zH4~|1_QC^lRFI0;M@4a}dKJe}V6(U;JeQ$9z8@%(2DRAK_YASY3Wf9{McxjS~0ne^)s;KI5On0=shB{afoOl;mB zRmj+kP}u~BMV1!~A$+5%;^EVW~%zenzUv^TNZNIC!-S>CE;kLv{Obiz)EthQe^ByJ@kq+G0 z-*k@F)+s;=nrxr~mb?~=eB57;LHJL-|ZD6Cq8aL5?SDBm#=xZYp%3Ylm?iqPu`>)<}zPhTBAABp(=VOQ;u4;kfI=i{QsxE>WdG^cm?gripnKH6$EmDzfy2=`oeo-e0&qu zc6RiI?!X5U>fmr}ye-Nt+Dc%bgIHPXx?R-_@hWjZ9{yuLT8=yfz0Bc8fc*7C0w->7 zF3<)v#d?_PkT(aR!T->uEgH8Ts74FPXtn)12Ovg+oFrfh)`v-gq7Q+K<>YJ#8@9E# zw$|z70}F2l_V2-a#EcA=I4>uxa&BbEf>}E{T2?!6{|_u|2YUMjm?fWuJ-n30?s8xR zSxH|hRJeH3D9%tIVt_oV`+Mu1PGZMQYi zdwp0gwP|iPl=E}P)}-r5m1{`;By4?^Vl!v&qhK=rCfM?-E7kt}MZhja)`qI23=5Fk zew*O-Yk#O8NXvMqrc!+w)`-7yJ35>-%U1?A0N***Xu`{P&I08C67^JHK7?PbVQF7F z#20tRTxr6Kbnbr-is<$a59@}9F>9UpVeEl#7XW~k_|Ri|(W9!|ep{#ElRdbQc{+`m zW{@{BOd^#43;l0sRK@vh-OL{*o4*im}mu*1<)j-A&CaT z1kRsYKULpCT!A2aGq+|+9HMmJ6~51r3;Y6$0^X*00Z;&(()uKi1mHKwGHaz_P^r1x zM_u<6r0p`}D1h*-G9zKJ*=f|_I_H;|7;yswYJ6(x-=jyz@(sV#%lrYU+FV`yblRya zhOCL=e>|nd#YG7aM4SCFSJ`#3_#1?wPBBL+b8CU$F_ zgsiL~1l^5?az5{#yV}{=rKENTtb^kNOLKO8Jpiej9@lnvBcUTwa|WvdaRPCpyaINT z4_kYdarh>{&)0OU=&?;a~5-#&sUk%YK7OSgclsnRmM81x8U2mGaR z<>|l!wt=S0Y9nO{$l^>r1c_h1w17QoWoNh0OztQLu6NC*eG*Jic*=jwic=vyV}Aqz z5_pjdhUI*y7+Ho=ZX##AS2{Qs134-u@5*2#20=&=l9L#K3FwjKeXmOM9)ypSN9H+{ zrd3p8o0w~yol5(2r^9_L)JnEA8q2#Uf2t|j*j!!>eXOV;dG+;a69gmDCH12iRniI+ zMMSVzklx)P$2k&$Uln{e1+h0m$a9e7I}36a{ktEY%{&ObI*$;n-6;If>8N9|jG$@d3WRVxfniq=1GX zA}R{+ABqFOzTByva(5&HWhn!+InU8u&?|hClOMtWqW|3mxo70Ns!*k<4*^@lD~O=Q zi%UpQu(E!J)e8X_c>M=CDv&RUCMP6${EgM};BK4`ab(W3m~XO#b4i1DYj|v5ili+d zQ}o_o9o+seot$|z)P3K_(WO)*5m~2;NJ_HHp0%!Ql@@zro9t^18pcx5l_g0OqC^Xk zeK%Z0*~Y$`5;7WQFxJ7${h8~2&Uvms?sM+vJpSXD!|(h1E}zf){d#}-_yYT?2?WBM zoE#njf%WKJT2fLEOw-D{LF05Bz=7-m=fM4f{rhBqOq}pR*4>L2MN}cP5E^&bfP|NL z`qnIz7akUxAm)qjcwWMcGe8~C`|grHJgLnsjnk*Q^6l#Yf*b{a+^vL6#pANTa#M%* zz&z!kSX0x`fIh)0p9Z!8IDmvw0$Au@+h`1xCSbma#F)H1;noC%oCOZV12r|ZBkk?a zKHh|k#{KfTpd~#FrZz5bVcSXQtPz9PAz{=nw|AnIqocsNnl4eP zpozCZ#3KMO3@C)GDt&q2RRK-=jOnQXvR~olk&Lz-mRC9fMw{v#L}&x zH`woq0CO7-9l>^>s9{QFFqaxs(gB;xE=VZLmu`vdL zLydu5m~acSyc*fEguR;c>~Y=Ey}1p)oj)4Bx7bkE;!qPmf6-wBK2HHY)JwA9LbRZl z-$K#dkg0RkHl7Fr&qPCA_NQ8`mS@7V4ssqWb@|G6jBn(_6TS-r7!JN?tgJSIdW3Ip zt8e4$RL8HRte>7uzdOxQRW(+*vnCG#CTeZy0Bm|L)#Ca%p|I}9KG$7SE9L5kP5)@) zg5CG~Qc$YO!q;${4W<(-E}p))xTtuYsI2QWq@K{)L|YXOg4Cz9v~Z2AVkEejy8j$$Me^(U)y8LLBBW-Xro{I(n_NX?2>>T zHXrs>>FuQf=Gg?$t#8c)r$|sq7`!F_nS$<4SH-JWuhK1QQ$Ku=@l+v6Chxq$cjHIl zVgy0KC{{p{Kn{b-(UktcZO;L|$4~o59O`p(cc*ne=(*LrP%t@g-NC6LoZj5hq7brj z9%5*w&<8?#Q}If!3D@u-D7`zGV`Txrv0=GVvCGq6!v`s4Ww)U&ii{M>I{}d>z>^ng zB%jBLiS)W`^53$Mu>db`C){B0F3*GW-TtLbO#k5EWh<)-dVg`Hl#&rNPSNjBH1P59 zEs`8`_A14nMIf+R-~>3gJ&iu|++=!YK~h3u0vFppBd%7tv>EK|{2ODVRTw-l2xlhI z72MoHM`|}Eu;}8FUG4cdmc&>_M$VqHS@TZ9%@TX`AW5{-cl-A38y{!QJV9rI7@Cwe zeS;U;+V>8HF)_9yK)%Pcl2(8CSG~*2tGl(?+-%m|Y->$gz~&%mcPX-9j7Ng)aLK{~ zU}cfNTuUZbLq@6s1c23e^5hWE@82DAU%wX5I%j+S{1^6$8t1PHgwXX+#!3cSMVq=7 zQfG^{8w)S?u1Kq`t>YBKc@ZWEeO$%nxn>S|t zL#noygCBi10TCdq7x#6Rx-|E;DyWXj($W$}*sQ{P0*s@Gif{J1Zf++sL(7x;`}suT z1Dx6f_(V95c#*eah0&;n!?a=-itXaQQ0mVF7|`*+D=!#k;V_&^rAy^Bu(*OJ?+eTk z>NKDpcU+st@dB~nyROTmGIUOqjF?zj_L~#v5U?Who4Soj`*sH zoU*Nq$+`GVQgUYZON_q|4Cd?Cj^Mj|28Jg1d&CxYnHTCF05spwlTk#0kgc?_1y{(g zfw%JlthMFw0J+7@SqGN5k7LoCUsqCOPn>9+@xNqecX;uKKsX!+pWr>P#2QIBwG!rV z8sB}>?~aWESy42WT{-)5FHEZ$`1o&G#tD|7L9{~Lx^j!W6pO&706xd9vwaj2bw2^x zfdKl$SNe*p9{fCRjhx=-U}+AIs&DmZlzMw{b1+Kkw-quM#?Xrm zyW;d42Zx5H0@WWreAq}@y?pK3gT|X#ARPs1itXF~=)B2%AOTkbw$k^+@c$v&-aJ=u z7l1?me~Zh1=X?J@B-=maxT^51lSPT*D9OT)BQ0c~__9h-j6UX6g3D?Xk{g#lgVB~# zRxVRgQYx(sbyaxIaiAP|hKRXhF#VxgkI~-tQC6XYbxlmWt79h9cFkW|S(*6*At52( z8jrxhKVxi7Bgm^XX=xdc9*s@Xq2u<26orDWP$i`xn-y(pNZkfTTlAH<`1Olf!g0H6 zWw&))3-QrCw<@QXcSoJWnJnz#Nz6O>UlPr-$Gc_ENzt9=KMw2L>}1W{4UCz>Uukhv z-ZMAkE0&YvVtKu$zM`WyhvE<73nTEN=s{zHX-41GOh+_fJj&RJ^VafC?7B+vo!Ky> zmARJhPml3?j$d#-e}?7uThjZb^!hieh*PI$XhdmpZPlLrDhstzGG)cZPju*hE$p)z zB7P9r`4T+4iK!2#eW%8N$UR-GN0DqnFO50~A; zw5Pm;YG;jXYIGFi9!A}D@YPsH<@#Y=t&=Fiwf4m?ckY&a=m$wU*DUlNIOmCp@~Kd` zu@JCWxaGnN@R$8~P3rb0_Tag5n)D61z1%(`cj@Gs*2JWeL};om*@yjU<1Kh^z};!} zm-2W3e!}#boU|GkX2ybN6)qY>Qj={*1XU)CDogW=3R(U4?5+*QZ8MRIQkalGtXwH)Z*OnG0h`WXFg<4J`ekE6%h;d%cmwc8&=!fCV+7I3ZK zzdw<0yZJk?z5r&iS=_i`U~4-bJk(b*8%M{BsvrCA+kENTHU5J{&;t60h62XC1l5a~ zyQ^tg+`d+^(LcAF;(R=7y2QE^*EuD=I8XQR>J zeNJezIw%XZI%h;$Jor<~PmU!zUL$x#?$PGNu57tr zQFg-|I=(3ve;~EOlNME59&*wHP4+1s|A1dE9BD(ViOdt~(tg*6>Vo%a%JuGoj3yl& ztI zmxFfP3itNp<|4J~H_7JzUrist)qtvUU<|;+MQNSPEKy9 zLJ?7t$I-}v4+Cl$W?*m|LV(~Qbo$bL6+Q^&9Ux0n$Jy%9H4}6c_1iTotDNjVfY2iJ ze<}5Ts&*2ufpf=RCa&@1kS}6kOP~50fNOV5CX&i5-c$h?0 zKEQtkR&Q`HyNioUy4s~bkVqbgTQ&#aO^*W%WUlQdatlQvV7wtQg6+nRJ(JA@(2$Mx z8in#Xrg1kr9tswA+RWU1%$h?eLY@5Px}%27MA^Jr&~M=?ldpn8wHeg4U!&FG-X1Jd zy9qIQgH2O~b*=gDb*3hfJI`xQufNE%eA@>uHa7d!tBCP&FBru`!opDl?ytb&=R{~f z1vv+D$-3U;JLGB-%5(T}6ZFN;)%^4ts?9QFP@ro#yKr$=Mh?lMng0v7|3>o(`g+Gv z`IofaVx2+_DAZru7*Br1dPV&gY|X91g4m1Zgd4axr?)bjoqyfd)Iv({R7>4dPJ0-~ zDWM`0D}$CLSGNe%9O2rnMtymxaA?R=Mj5E(y}T`ulDTMU`3A?>0PqDUh0m@fmn?iA z1J5jft6LZL+t1z!j$P@h(3lFM$Ng%s7O9Y5a;zAe8_1hAq;Nn%sF|{HS%injEh55x z@`DTIl_NcP{uoP?H?cWRbWDC`#?Z7a_pQ{@^oB{TJ)*F{yEa2a@K6T@A<~o*olvBy z${k*-|5;NhfR%U8dai>%8yp{#gca@C3Ho21HK`S0HYM*ZqZ)Pn{g>HiDR4UkRPoHk zr=Tbt?dJ8ZUW->M7B$!Ff?14s4h@RMl`HyJuPSF7xgeFo7-@HazQKb67145S35i6i zR~r}Joa9ZlZ&K9!z6zM?W~Fb;I_L8T25!ihvF2bxAJ#KwH`hD6}exA09pet)IA@ zkK7JzqW_Hv%)QA;B>fVh*4`)S3?Bc@7zqBJ98ru#IOeR{Zo>`#27YcMUu zz4DXj&av{-2wZRfx!6&5Xhi>WhHj<3`~Al{L(24;m-uO%W323!ZTrpcs@#|_R|SYk ziXnYFv{e48sH8DN>SA|kyM32y$&PerRhmT7*Ym!gOpV{he3`N3uzMKBbc6l5Y+r#p z{f}7TfBvJ)+h+cOoc`YvAphkz-PR)Mi_tnBa_~PW1u*uYn#C-1>cZ3EzC)G^hGqr@ IdN(8g1^+8%nE(I) diff --git a/dist/util.js b/dist/util.js deleted file mode 100644 index 5e326f7..0000000 --- a/dist/util.js +++ /dev/null @@ -1,20 +0,0 @@ -var len = dPlayerOptions.length; -var dPlayers = []; -for (var i = 0; i < len; i++) { - dPlayers.push(new DPlayer({ - container: document.getElementById('player' + dPlayerOptions[i]['id']), - autoplay: dPlayerOptions[i]['autoplay'], - theme: dPlayerOptions[i]['theme'], - loop: dPlayerOptions[i]['loop'], - lang: dPlayerOptions[i]['lang'], - screenshot: dPlayerOptions[i]['screenshot'], - hotkey: dPlayerOptions[i]['hotkey'], - preload: dPlayerOptions[i]['preload'], - logo: dPlayerOptions[i]['logo'], - volume: dPlayerOptions[i]['volume'], - mutex: dPlayerOptions[i]['mutex'], - video: dPlayerOptions[i]['video'], - subtitle: dPlayerOptions[i]['subtitle'], - danmaku: dPlayerOptions[i]['danmaku'], - })); -} \ No newline at end of file