From df28b5e12fc4db0e9b9f2f47e548f6c5a72a31eb Mon Sep 17 00:00:00 2001 From: Mark Oliver Jensen Date: Fri, 1 Jul 2022 11:06:41 +0200 Subject: [PATCH] init --- README.md | 3 + assets/banner-772x250.jpg | Bin 0 -> 14053 bytes assets/icon-128x128.png | Bin 0 -> 3745 bytes assets/icon-256x256.png | Bin 0 -> 8362 bytes assets/screenshot-1.png | Bin 0 -> 198223 bytes assets/screenshot-10.png | Bin 0 -> 39641 bytes assets/screenshot-11.png | Bin 0 -> 131494 bytes assets/screenshot-2.png | Bin 0 -> 24229 bytes assets/screenshot-3.png | Bin 0 -> 81035 bytes assets/screenshot-4.png | Bin 0 -> 25300 bytes assets/screenshot-5.png | Bin 0 -> 15165 bytes assets/screenshot-6.png | Bin 0 -> 245820 bytes assets/screenshot-7.png | Bin 0 -> 141831 bytes assets/screenshot-8.png | Bin 0 -> 46345 bytes assets/screenshot-9.png | Bin 0 -> 60919 bytes lib/class-sendgrid-filters.php | 16 + lib/class-sendgrid-mc-optin.php | 279 ++ lib/class-sendgrid-nlvx-widget.php | 319 ++ lib/class-sendgrid-nlvx.php | 189 ++ lib/class-sendgrid-settings.php | 862 ++++++ lib/class-sendgrid-statistics.php | 190 ++ lib/class-sendgrid-tools.php | 1489 +++++++++ lib/class-sendgrid-virtual-pages.php | 155 + lib/integration/class-buddypress-override.php | 40 + lib/integration/class-buddypress.php | 25 + lib/sendgrid/class-sendgrid-api.php | 57 + lib/sendgrid/class-sendgrid-php.php | 55 + lib/sendgrid/class-sendgrid-smtp.php | 129 + lib/sendgrid/class-sendgrid-translator.php | 1028 +++++++ .../interfaces/class-sendgrid-interface.php | 7 + lib/sendgrid/sendgrid-api-v3.php | 1124 +++++++ lib/sendgrid/sendgrid-wp-mail.php | 429 +++ readme.txt | 666 ++++ vendor/autoload.php | 4 + vendor/is_mail.php | 1182 ++++++++ .../Exception/DomainOutOfBoundsException.php | 15 + .../Exception/LabelOutOfBoundsException.php | 13 + .../Exception/OutOfBoundsException.php | 10 + vendor/punycode/LICENSE | 19 + vendor/punycode/Punycode.php | 363 +++ vendor/sendgrid-php/Client.php | 138 + vendor/sendgrid-php/SendGrid.php | 161 + vendor/sendgrid-php/SendGrid/Email.php | 692 +++++ vendor/sendgrid-php/SendGrid/Exception.php | 14 + vendor/sendgrid-php/SendGrid/Response.php | 40 + vendor/sendgrid-php/resources/api_keys.php | 58 + vendor/sendgrid-php/resources/asm_groups.php | 33 + .../resources/asm_suppressions.php | 51 + .../sendgrid-php/resources/global_stats.php | 40 + vendor/smtpapi-php/Smtpapi.php | 23 + vendor/smtpapi-php/Smtpapi/Header.php | 293 ++ .../smoothness/images/animated-overlay.gif | Bin 0 -> 1738 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 212 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 208 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 335 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 207 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 262 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 262 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 332 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 280 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 6922 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4549 bytes .../images/ui-icons_454545_256x240.png | Bin 0 -> 6992 bytes .../images/ui-icons_888888_256x240.png | Bin 0 -> 6999 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4549 bytes .../smoothness/jquery-ui-1.10.3.custom.css | 677 +++++ view/css/select2.min.css | 1 + view/css/sendgrid.css | 439 +++ view/images/loader.gif | Bin 0 -> 10207 bytes view/images/logo.png | Bin 0 -> 67625 bytes view/images/logo32.png | Bin 0 -> 1560 bytes view/js/jquery.flot.js | 2696 +++++++++++++++++ view/js/jquery.flot.symbol.js | 71 + view/js/jquery.flot.time.js | 431 +++ view/js/jquery.flot.togglelegend.js | 319 ++ view/js/jquery.ui.datepicker.js | 2038 +++++++++++++ view/js/select2.full.min.js | 3 + view/js/sendgrid.settings-v1.7.3.js | 146 + view/js/sendgrid.stats-v1.7.3.js | 461 +++ view/partials/sendgrid_stats_compliance.php | 12 + view/partials/sendgrid_stats_deliveries.php | 12 + view/partials/sendgrid_stats_engagement.php | 12 + view/partials/sendgrid_stats_widget.php | 109 + view/sendgrid_contextual_help.php | 195 ++ view/sendgrid_settings.php | 49 + view/sendgrid_settings_general.php | 165 + view/sendgrid_settings_multisite.php | 83 + view/sendgrid_settings_nav.php | 11 + view/sendgrid_settings_nlvx.php | 226 ++ view/sendgrid_settings_test_contact.php | 35 + view/sendgrid_settings_test_email.php | 52 + view/sendgrid_stats.php | 53 + wpsendgrid.php | 89 + 93 files changed, 18596 insertions(+) create mode 100644 README.md create mode 100644 assets/banner-772x250.jpg create mode 100644 assets/icon-128x128.png create mode 100644 assets/icon-256x256.png create mode 100644 assets/screenshot-1.png create mode 100644 assets/screenshot-10.png create mode 100644 assets/screenshot-11.png create mode 100644 assets/screenshot-2.png create mode 100644 assets/screenshot-3.png create mode 100644 assets/screenshot-4.png create mode 100644 assets/screenshot-5.png create mode 100644 assets/screenshot-6.png create mode 100644 assets/screenshot-7.png create mode 100644 assets/screenshot-8.png create mode 100644 assets/screenshot-9.png create mode 100644 lib/class-sendgrid-filters.php create mode 100644 lib/class-sendgrid-mc-optin.php create mode 100644 lib/class-sendgrid-nlvx-widget.php create mode 100644 lib/class-sendgrid-nlvx.php create mode 100644 lib/class-sendgrid-settings.php create mode 100644 lib/class-sendgrid-statistics.php create mode 100644 lib/class-sendgrid-tools.php create mode 100644 lib/class-sendgrid-virtual-pages.php create mode 100644 lib/integration/class-buddypress-override.php create mode 100644 lib/integration/class-buddypress.php create mode 100644 lib/sendgrid/class-sendgrid-api.php create mode 100644 lib/sendgrid/class-sendgrid-php.php create mode 100644 lib/sendgrid/class-sendgrid-smtp.php create mode 100644 lib/sendgrid/class-sendgrid-translator.php create mode 100644 lib/sendgrid/interfaces/class-sendgrid-interface.php create mode 100644 lib/sendgrid/sendgrid-api-v3.php create mode 100644 lib/sendgrid/sendgrid-wp-mail.php create mode 100644 readme.txt create mode 100644 vendor/autoload.php create mode 100644 vendor/is_mail.php create mode 100644 vendor/punycode/Exception/DomainOutOfBoundsException.php create mode 100644 vendor/punycode/Exception/LabelOutOfBoundsException.php create mode 100644 vendor/punycode/Exception/OutOfBoundsException.php create mode 100644 vendor/punycode/LICENSE create mode 100644 vendor/punycode/Punycode.php create mode 100644 vendor/sendgrid-php/Client.php create mode 100644 vendor/sendgrid-php/SendGrid.php create mode 100644 vendor/sendgrid-php/SendGrid/Email.php create mode 100644 vendor/sendgrid-php/SendGrid/Exception.php create mode 100644 vendor/sendgrid-php/SendGrid/Response.php create mode 100644 vendor/sendgrid-php/resources/api_keys.php create mode 100644 vendor/sendgrid-php/resources/asm_groups.php create mode 100644 vendor/sendgrid-php/resources/asm_suppressions.php create mode 100644 vendor/sendgrid-php/resources/global_stats.php create mode 100644 vendor/smtpapi-php/Smtpapi.php create mode 100644 vendor/smtpapi-php/Smtpapi/Header.php create mode 100644 view/css/datepicker/smoothness/images/animated-overlay.gif create mode 100644 view/css/datepicker/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 view/css/datepicker/smoothness/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 view/css/datepicker/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 view/css/datepicker/smoothness/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 view/css/datepicker/smoothness/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 view/css/datepicker/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 view/css/datepicker/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 view/css/datepicker/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 view/css/datepicker/smoothness/images/ui-icons_222222_256x240.png create mode 100644 view/css/datepicker/smoothness/images/ui-icons_2e83ff_256x240.png create mode 100644 view/css/datepicker/smoothness/images/ui-icons_454545_256x240.png create mode 100644 view/css/datepicker/smoothness/images/ui-icons_888888_256x240.png create mode 100644 view/css/datepicker/smoothness/images/ui-icons_cd0a0a_256x240.png create mode 100644 view/css/datepicker/smoothness/jquery-ui-1.10.3.custom.css create mode 100755 view/css/select2.min.css create mode 100644 view/css/sendgrid.css create mode 100644 view/images/loader.gif create mode 100644 view/images/logo.png create mode 100644 view/images/logo32.png create mode 100644 view/js/jquery.flot.js create mode 100644 view/js/jquery.flot.symbol.js create mode 100644 view/js/jquery.flot.time.js create mode 100644 view/js/jquery.flot.togglelegend.js create mode 100644 view/js/jquery.ui.datepicker.js create mode 100755 view/js/select2.full.min.js create mode 100644 view/js/sendgrid.settings-v1.7.3.js create mode 100644 view/js/sendgrid.stats-v1.7.3.js create mode 100644 view/partials/sendgrid_stats_compliance.php create mode 100644 view/partials/sendgrid_stats_deliveries.php create mode 100644 view/partials/sendgrid_stats_engagement.php create mode 100644 view/partials/sendgrid_stats_widget.php create mode 100644 view/sendgrid_contextual_help.php create mode 100644 view/sendgrid_settings.php create mode 100644 view/sendgrid_settings_general.php create mode 100644 view/sendgrid_settings_multisite.php create mode 100644 view/sendgrid_settings_nav.php create mode 100644 view/sendgrid_settings_nlvx.php create mode 100644 view/sendgrid_settings_test_contact.php create mode 100644 view/sendgrid_settings_test_email.php create mode 100644 view/sendgrid_stats.php create mode 100644 wpsendgrid.php diff --git a/README.md b/README.md new file mode 100644 index 0000000..99f0ec2 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# sendgrid-email-delivery-simplified + +A plugin that is no longer available, but we still need it. diff --git a/assets/banner-772x250.jpg b/assets/banner-772x250.jpg new file mode 100644 index 0000000000000000000000000000000000000000..72c035fd56a51c12c7f1bf4e75c0e7436e8bd8ae GIT binary patch literal 14053 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 SHaZ?D#v55>nQ|!;=>Gw}>;`NA literal 0 HcmV?d00001 diff --git a/assets/icon-128x128.png b/assets/icon-128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..846f7e7353aa0598b04870b8cc2847488b34e97f GIT binary patch literal 3745 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 literal 0 HcmV?d00001 diff --git a/assets/icon-256x256.png b/assets/icon-256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..955a93999b3b7a17c8e63c72122e7133481ac46c GIT binary patch literal 8362 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 Kl&^ko5&1v5Lu$?d literal 0 HcmV?d00001 diff --git a/assets/screenshot-1.png b/assets/screenshot-1.png new file mode 100644 index 0000000000000000000000000000000000000000..9680d989559ac92cdb3168a1c8c5ae140e2f6ff8 GIT binary patch literal 198223 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%0A3{yD= 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

OO z=x%QFE;*0u>iq1>th}wfbRXlM;@9FCk2(3-S1UVx)lfa!L*q#RbN69n>7r5``*s@s z`MiyBn2vN4P?v_uFc9_L5+3YdjWqNcJS`)GzefUM_UhV@3dXae%US&tLl59T3R^!j z0vAs%Em2Cpst~_PWATt5lWkvn*~gSJ0R>k6@VatF>%XL_8;#43IOK3PIs)LN=X-rG zxq#p2Sk@HIN9v%YqM>-El}LO zEmqv2xCQs(?heHXPH=a3cWtra1b3I>Zo!MY!=~^5?ZaI6ljJ!VS+i!{GqIQp_q^8+ zPxSYlO8bVreV$X`;mkA_5X&RQLy8)$8_r|lHJV1d3!lU!VR-5K0X*sApspkOd^2D2 z>JL9VU08aDE0s}}_hB=68dyCubr%C9t%~i|RN=eLA2{ezC^u})H7Pn(cqo)V?_(2i z&2RUI;u#ZC#(1*-jEUzLsR6ou$uVfgccW+$KYBE>5{M(-eX8d4IV&HOD3Fk)C@3s! zf5`aY`lokg*s{>W3mS_o;)oYNXhF>FTEt5k3riH)JM1t(WaOa8u771T2GWZ;YjX#P zqH{j!?h$v_OxH!%pbjEsp+b^gEif+Jiiq)V^&wYl^fMV-*ftHjE=)^<^^n9Ys|J!xC`p1_TUSDG66z5GpnKyVvzb0{h7xn`XvCzsBe= z`@zx{-}^?e|vqz-a-5XD=Ih>R3Pkk%#*X3wuc{NY)4 zCw+iajfyY5`fT?SPcP==N+nV@#h^b9OOY|tWY-ttHQGuaQWfl4z*CV`6dNbjz)e3Q zu_1ti@YYwN^3x@~#hBEUStm>n7_CMEQr#}m#rRV=BU`;UG%&9A8vaI&)N9a!9Ef-|rEu_kE4x_KZu3)!A!xnWh@4b$kD(xN*rUarc~|vj zw&L-7G^+BP*6A1?4$9RSSqp@lO(tUI;swfNal9g~x+J^khrwUtveQvkE0=9jkH|V12)jLW)n!_Ln+kwwo7F;~K+H?I&UClY~WE z^|kbUZs0-`i;WKOT3{GZPBiu)`Sa!N)693u8-b=)zZaDJfR@XYoWbfLC-Z+_T*`_NvrCCx^T zJu%PF+}%f*Sci$YV5$BUtwY{Kn?_~^&7~$fXD&6|ky*S^mXST{d6r#=h-6@?xIk;X zlPR-fnWeY$MVm1)GVg&fNjJQ|l~Ffa^Y5?x+2nmkS_l?Q?4KmOqLZWiUSpbfyjriY zMCnpdl9x;{zP%eEU9{g-Gz(2sX;W93=PZBZSoh<4@pN=1+<(^FWf|i~nxb%p-9^|T zoY#hsB*t{)YT9Y@ps|YJ7RfpEa=^hYHPCnSrL66fsHo_i&u%sY@d#(E86WtV3eT`;-ZSNlwX ze-t2dPll6{e|E!>&v%Q-FJKX?Kv8`f<$_&t>f-Ac>f13gy@+Z^bajO_>xlHK@X_aq(W2vyg+pe-=&eVA#-q8Y!= zb~q-{)`&smAhC}BZ95i=%PkZGL;$`$$DqTACZw@8hRx}YFp9VpR*+`bk(x;$a6>1d z#TY{SGV&c>yTNi>l&(Cx1?35}Su@A|mZ5#W(|Z!}!S{6jHtlMF)wz8aT6dZO?Q^To z-AN&7EENTz(KA|Ts7_IB{ZB+a{GSe_DTQS8#VdaFE0lE5 z?nhq){KD+Q))^Bq5?cL143aD5a7LQF7CWVt1D0%h{=ujLVWM{;2Hj-(tii<87oy_64tJ3=gYq=;6H=lPiS>k zsfBdB_W3+d^!4Q{67QXVp&r*6K^hcthHRjpaMxEu3>tjs5KSh0-ICw$AHV){HkppJ zA+xZ-pRIR>LAQd~Q%YVOIr?E_xuls)rENI<^yyp+`jACY_9yJo+xqM%CR5KU&TOSW zzY1@Dc?t_;t#E1+k5gpS{hVtHB~CQPq;SUqgHp*dc%BfaREQHH4m<0n<<)d8Lg{*u z78Bf2v!7M$4?=;n#H4Bv-kYyWtCQ1Kr_;#PNb!&;i|DsjVi2V6fg`)hn6Kne516~~HRDwyP>ERHU#Aq#kRB8Lbs_iv(;*6X?U9zjS@7hhLVfd6ArtwnpkUM~0<8a+jBZTx z4$)(^_9F>HPOQ-!Rabk?PoWKF@t1?(#ec8VmQZj!1{7z0_HPQMa~<^v-j}V zv1UUIq`?nd>)b?z>UzJ1)drle}A&268_M(%g_TVPt$32>Bf>|^U+B%gqqL^sRsROCW{reztknOSj zvuY=z0GJz=)KeW2BmMLZY$RG=NfL}`J@d^g4U)^LDSx%0YWJsUfAfR8+rjRD$^B*-g=?m#Qa8hCx0BY6&kpxz?i+KaVMO8-hO}CKBt+15&on? zhEZcnxyQU7&FO%~KC%|rqvwg4oNC5rTrmEijId`Bzi4=%0C>U?fWo>Qk9YW09ejh* z!$$YOu*-IbF`<9SgU_=vPwx37QN&Umr%d3Ayi34;DRSJpl|vwTYw^WI^1OooTN3J*`6k>|7+2p zHr-Bzj=%TePu;Z$;y{WFY$^6gE+=S2>?s|lYQ)bt{pt0M8FI++3L>)Z?1>Q3pQbN;=Z`tOT}4yh89f%1p!-==XKIb$w@ z^jcBOZ>)a$y-W5BcF|AOAN5~-K8NpGS@oeSti%uicG>2|w`kS}tDVkzKKHH^-gIsK zii+H+XdH7#z>oI=N)nLC~Y*7G`pHVn>qVmE5%qE$AU|y6N)b_SC*24?Y zz5P@hXMRIdR1;)gfLg5`4xdJo&0Pn0KPw(mM1#}>XOCI49v}fDjNF>=nh(pc%?BD) z-($=)J5Vg9?}*r=3QF#7RDN%DU$L0TFimVh`$u+yh2103FLW6Gd|t)_Mx*ujIgHvL zQD1$q^DWjLBqDFgGhEa562rRvDa?pr&;?I@GttF(;dwrtVB1{B#h1V4@bJOdau_qq zectMMqeQi+)&gs|g5=;c;9`O_1@%4?9S@5lDW{?%t^YQPmy zj=&f*;z>`A-o>>zT|^|@O%Lh|L3vR5W?1rYr`FN;v)(re`C=X*LX8dP zw>&50&2C~7WL>ykHYG;fn+mQwze|T5>0JijefUvxcI43{s!Dcul`kYUpba3q3bt&B6mL2T3_rn|OcG}lRcK~Nx zu=XKCoCe?Viz*fY@0hgY#G~2JPH*S?bRW{PNQMgSXfkhe(j40zr=YQHQtC6ximb`Y z%-v6K234O8+l{vQ9evQx*JFhyyVn{1SN*{GJASp7VEY^Pf&%cN|B76&%n-D&2V0KU zJ=Iv=vL2`Rxwg!lZIldYM8i7?DiR4e{T zi#YN&-ZEf`*h)k)RJ^aIVbS2-JNXS395^fyH5{FGP{2a*V)9nSA#q~}lv7zvc06dr zC3bXjc!v?C)MoEO`;>mD(OX~xN%)P2r^`e|Eg~g#Qp5p!X}lUwixK5*wLvuh_PSy+ z+22|EgvmU4C)w{hu9{KFN@nGc3JodyTdQ&KHTL5&LmA#A+EE~q@t2_$86E08{%my( z=A)o>nB_v@K%1@Yn$(rz;f8k62wQhl&IzZ@3jrc~_}GSx4Z$AjNxeuiGksdC`0VxX zQQXp+20OX|C!UvoTB_#k0^~qi*BSj}vm2Lh=`Y^}+j0aEI?;Xww|m|}Hs`$weJL7Q zZB#=e6CQ}F>D@4^B2OaBn!F?zTVhU>x2Df*Dm!e3iP>ullC#9YYL z!7UDc9z(-`oW~e1CXvtm(_We)j3&0=2XW15YE3gqgxF)!*g`AuOPgI7{EWacO4zT> zVU*Z50VBK3=Z`tM>aqJhO->gr0G@nllHSZ&MTa**vzsl0^_&!*pf_*XjqADNgaG|q z=H7xi`1sEIZ)6YxvSRHr-Y5*oPsN;{(5b;=JcHf$odUVBZXZdQL>6gS2~o*KFc&&t z6FT*yD+B68jO@jGH?@z5)nk6OU%01&7#yE zY>riH7>PI|5z>-cL;wg!hWc?eK1_MQ@AAt!|6V7d%$ z#Hk8A>>V#k^cH!saMXuyW)5l%hQB7M=@E~-MizqV&}Puc%pZh{D(?f=FBnYrv!y#E zW`9{9@~KSnBwT*+P!bLgO}uA*JJz!?RLe2q|5`Ia|4R8JU;fAcS`@`AO7(ZV2t0VOrvW3IGq1c65NxUtndK>cJj+!yXuu?fGtE5ecmJxS_9Q5Ra zQ4_WbLe1^o>VD#n^z)TLo$OdmSqTeyu#+q`$)NU27x2i3{UFX5G9OZRPV%TP4pr87 z7pt=qRhtc#b)>ko0{!h?lgj2rgr`za^b|3^NAhhFkiy9Rfi>Te};JzF;Xb(;JX_ z3|z^r?V7OI0OaU!aOv50Io#9RO^LRZ*_Ni56pI~jCTZ0AzWr9{%I1=5yF4EJ+3*Xy+>UehY}#O{~}XIRRXq_Xt3WmZ6P3Y;<16PMHfexX4R{^uMJ3kgm!$aF(w_kD(oh9`Np-NgiG`6H#LfC`i^zRDV zO}ROlImm1yaD%gF^S$}WO0Ub9sNC2UlxOJ!DL}zEv#tWNm)Ll?RBePQEDH- zCuwR-rHIXFN|^u?I=*Qq92Zjr5Vbu&vMpY??LHPxo*HVwNH-Lhu>`)poe=nq9E$%M z0_eQ@(+!Utk20t3f%#|Hrq% z`CpQMRTj}$g9dnZD(DSf!s_DZ39YprJYf<&;;|mxKLu{!TD@>1nCQ!WkdBrV7<+6|n_bq`M^?=9F0+|E;B<&vQab8= z`?s?r4zkixM9=SjXMTf}#9o|S;cudJEO(lnDC5i?MstSu>x_`4x7k~x@VeRro%gkr ziQ0{A7;B>qkZ&zO3gD@>p7tjtQJLoN)Sq~(a|hYi%7#OB3EcY+Gw zMn3DbIx{vBMF&1vprI)t6&;PsI1C^0Cz(5fLS-DxLEb2z5wcz&5ytC~>12lATrQRf zEp8S?723h*YiQS%xUp%R;|`?58`inGF^GlB+fmKXHhN9Cus1CQa`9~LU6_(h zHex4xyUp9#OZQUO=`&o0$6Q(r1a?GR+MDZ<>RV$#PQ%5;_u(~`NEy`Ob{2XzT~VTk*E8K;|=6zWr#0q0J^JN)o zPQl3=OPD(Z1xZd>^Fq0_HuQs4@V2)UQX!qG#d&tl0*%0>nCA@JsW!a!NOF^JF1=7$ zOP45O!PNObdOvb=*@Hzo@-a?jduu;?+WXmxUv4Se$nuKxkkKAu_QEQVe~$Gd&*w!l zar({F$&;|+R(c2I#q+AeQh^X`J&-1?aeH-X1MJ_3gA{*|?{5m24rP80y^W7AZfzVF zGbSI|QeL0<&X(?!cI$yx4Z)r>y-*_^+ZE2P9)^)6%{P1x!%ZnmOJ+z z!V&@FP*!#a!!}gafq0La6BkM76R*C%+ z@T11#6Dx>h;&_Hd<9j^?Xv7|Qb&wM}`Xl}_-_z$av^_E*;|io$L=>celfa#%pdh2h;Vkw zwf(S8L@8;S-v;#63kUth-{3C;@km-9W!0w=)V>i_#2u@-kriLOqd++w-zc^6iVJtP zz$or7T3<$otF>_ZV7#vHA3*oNTYv+&SB}D} z7%$Gj(a8&kf+W)7J&{Ka!!m-NcY?k$p7r_rEQhpWLCc?-zX^Q008vCPoQ?Xf#Exz( z`FAUvD7r{CM2kizgDXrp)H=`l?>P?50oNDAx;I~jrK@=yB=M)ZCK%R3D>n=u&pEXw zq?|`_o>4ouL#c)>PPZ%doLA8jwkfw})-i(z)~xgQ#I*o9(B}4-aK%%}%eDog5q-e0s6dmAkSJ_=VdfZ=yAs?uwto@m!?$K$Jw{CbabN|7n~(m9yjj(f^fCV)oW)IE*)kuJFBhvM}nJv zIQr3CakbCI@T~V-Ct%)z=}(wrjR}~%-;-fUe9__h(Ao&ixN-%l^je_pU#6!m ztZ+zDo!ogM!!Xo$DI!vnr(wlEaxw6tPfz-fd;Erw1P>*dNF`U%dVD#1NuQaJ5b!=! zoMzgBk-z!T9H#z@&643L>;YLBgXKo|#q#i(5N;sjzJUhbJpqmjy#C}XI88OocWHWhRPe8# zOwLm$>(G(N`iAy0c1&52-(XU&yMk#VdGCnK57082oZ(u6WJaQ`B{MmD$}aS(X{v6r zXTXtYMj4&%OQ?#2SA_PoQtDKD}hFgVm^q9C(6GAik+4!5oQH5t7NI`u*iMeSz%@m3L1>o1ld+Lm>= zbbJlsLq;U}4m796$1#Q1$1q)w$pa{|w`T|U-Q2n2b)1=U#1k+lEd7Qo^)SY(j_m3l zxh^p!yXS2+{Qb(B-p4j<-db8W?N;LI^S)m8(mgyiOZWYDzyo5#8Lh|H(%(nR`1j7P zhu@T25Cwg@;f*36yh2%NqVF-zAV*MI6?B^0qB6Sky;dd=!aUJQ2**s!xl0624*4@` zT4RK%K_J8|#%+Q}cP|- zq8Rv&LLij@wx4*;MzV;{)4CTNXrIU4kzRz66tQ^^ZS!`@OLNB^qE&ylI55u$!*qbq zcFEHT(|Be9wefmCnb-wy!U)ld4M4y76M`k3WS&3RSnJR-Z z+JH_5K#tPrZx2_XrZW1EVUQ>PNcSS+y_>92pj0S!i%ZG`fxy?lZXOlcRkA?6=a>qKE9} z#KM20Xt}SqO&bP>kxi$5#FWZA1q_)xpG3zsM~w1(6s0MTd7xgb?M|6FN#R0id@&qN zZhEU7LC((x+tTssb`mnbc^L`SHkUehHYLUJ7XstK;yN~jy9xly+;451WNFOqyn+$A*?l+9rm;_n1H42e zlad-)Zr3IIY|<;+{>+H$Az7TVV?(@g!&6wyrAJ-Q7KlwwfYxa1* z&EfyVRJ&b~(w4**dAx}m9-DW?AqQH2Z~HdbHmas6ohINze?CXj&(CJy5k&8Ny8pVM zfTGOPOwLvuATBiVnbdiogaQgg$T7I<(dQ#~2@&+Wdqvgtq?TUATpfIHSx`5`nw(sC zLmbM$H(5u%EsN0u6Y9_Ct>speF+xwYV{soTSN&P;`p%qT8|}tJ0*HD7+W@TN35mS~ z6f1u`43s;}7(G~#Y)tdRUj%R=B)r_mjI3lnzYcSByfP*^Po1?jrGIpH2ta`<;6T zWM9c`W#Pd6FfD@J=DYke0!K~@0fj?b6W^`HrgwrQASkZ0y5 z{sm$$#odD(6m0x9>9#qJ>!m&+$jll$QKbEJ9A4rDkW@HtPinnxLeiF)J*>cNsF)!D$lHShZ?0Rn!JfiO-g|SY5We6rtuT|V! znVgcz*tux%W&TwkAWw$94$XT9Cy@Z+{DDzM_wl%|Rw~r%8tG3l`s9X2qz8t3csG9B z&<1s#gZ8Q{!H?gob~|qTdbAZ0r+9J z%b^t(gI?to_Hfzg&^8jgm*p6c`FfJL!DjOR(KOFT97?4rs>kcCV86jen6e(D7G1FLHX_&)smfi6pbzwFic<`>A6eB42E z$IxtkDmxWR9-_Ig<5Et_<$M3a(W!aDBH~zh|ECX8Z5$qdhBzm=?-~*zj>5ML45o`& zHaQ9hOy)ae6nfT~@J1(>`BXV)@nNU0*9HW$1B1xw9`EiPhcYwIVk#O&(S|>TnC#pP`-r z6x;QsCr$|haM}1YvrcMxihGR1O`#r4SLi1cb;ot3Ck}5OxAmC@AMp84R~c7m752Rp z-mGkr6zrAt-?MEt#rswq^2|f$_{B|;KvSKYt&uwBn;(+wBtw?y=D4f|L*}o7`Eq;K zl*nX-*Q7bY6?sL7Z;wMZ?@eIaIWj`+TX?)WN1X|B$F=~`^v1Lx$0jK8qFPmpMVwEr zHI&Rg1E+ z(|tGL^_|70RvNc{=*_u7e@T6)*EC!HuK3qpcV;@rFOFU!1(C39Xtd^o3e&HyZ*w2; z3)J_A#faaGa|GqIwY`T|l@gNoTj`zrq*874Wn>>ekcYiE`cR7tNXJMYr?)c3?zZMO zPRCw6(Y`+tIpjsYzQ($dHF>c-$zOi$@KEk687pI6g8d)wV;@1DM-vu7Txfx1NdN%- zCR0se()(3AA@F2V>_UK2<7M$0c(6_hE2mS{cgvA#+>(~dKlmuaJ{nv~rA<)}bX8swWZG?`sGGHpL&4{Nb9~B``;5Ha zd{x4bL_D5P0Ucx^Q0qp$(X=PKPnv<9bv|PLP1`P!*F(5F#^(W-Q>aqVz$bdlcPL~L_R0pPFoD7-L#cww;M;n~stLpu z{0e&{txGevnGhj|VQezZvl$0Dw4)c^%6*>fls`G80 zeUv!{USJzW%6;uk9?MuxN9SbX>2vb~AdkscE~qOpc;4qZp$`b3@>Ur(rhgwYwcgwim1T#^C&_ED+HEdT|D;Q`Pqe7ujMT#iJ?~*0Ts6R!DXY=vu z&gbiA>DB%KM)PE*$4ph2&4ApIGL9ok4@&Y+Ui8b=^~`Dgj@a1V=K8*6+mDyt2~p(I zEz3Sc;!T>It?kb==WyYhr+tzW$#aqZp}^n7Ai%3ZdC?eoCl)oSOz?f`Re^`C45tJ! zx2%pyGIr&K&cr?sd$uVkYRdQYXACc7Yy(z55@fgkiTcH6IDr#83;?m>}v( zPH__5b(**%{s)HYmVP>-WA37QB0*0B-q+4*C>{yY6VEG8k$t$aEMxD%4O1E*$H!X3 z&Q>R1h_29>F@yn2KN}h5A-i&NyFy)z0lB20rXm_R{XY68QZcoO@-Z8AjEYlX-7cAL z|GVC0bMU1nWl8V$e9hs|e+HfvfDojkM2nByq9iHr;xSWU@h8~j83?T zZWXuZSkWJHlaJt5q{DGZNLMdqMo(XGF4FdT!+(%wqlW^H4}s0)k61CtDnv?Z*s$t< zB-r~KSUMOx5SR3K{rEW0`eIKnb$iC;d5Y`DyHjOdA}k^jhOaO)x#)^41xZciXWL^M zi*w46Jz~GwhEH3P~3xX?)*tHogz(WGiv`96FaB`Nelky6S9-pIra3pGx5MCL*#6$aS+^*pfi+Na|Ff&e7Ki)up|mTG)hs)^{dWdwrI-Qj}EdB$6i5?Oq0(LGOoFm?EI+ z1n=ExCf+z5jkkByGcLYhF?$b$Vrgg>+wIm2i+*(n&7M`%9;MDUdNu8=;`e|qS%rud z!@MuQbT;|IFR%P=y1jo*b_gH5H8^d!+$AIdg>d*D);!L0@6kTUvHr8!|D?Z?c|CoO z%E}3;s`I^Z1jMAN4UC$@JxOr&<}^|R#X7^%Q4tuPlSckYh1A{BiLeMGkSai zP>Wt~!8#g_hBe+somg3*?^$50o!ALoI~?E_yhR-QBZe{Av_A(ovgYU{)s&iyfTKj- z$v0NR$v}+5_UGj|$-lRl6c(D4YjJz4A5(ChITXs@Nv(cU~;;SS1XvryZCP+mDX4qIV^QCNp2n*Omg*#s27{gIL_^i>* z#Q{$1*puc0)lV~W%%4DMF^Mkj5456KD9?hUSnzZnRVGsB5qFzT+jR1u!b2+K4DJj} zTyEyw#I?sq-5DpFtn6=W-vL_^Rzf9u^+PZQp5ubNdFT&Eh_p@ytWy>s z7k7*2e3eXDYZ<2ve)`E7i3L+6(UDC!IkEqI#Kdfi;Q0Rg$$}C)*#)$n+(SyWKs_(vrZ5rjgiv7+A1C%U(>uBUbC4e57U$=hQpqLUoX%li|5=#52~S zU=PwvIg2GcLw%$6WQ+`lf0ZzP^FMNl*?pm>eS<&V)`!#gtS!rmk<(GzIbnA1Wq#jS ze&h4@ZP7uhy;jPMmV6rDwLm>aZ9;)`W4GI1P?*UjfaSps(G}gH<4;lTEH-UqQ!ZmG zEa|GGL&r2#fMIep9X(@+TJ1+fLk@DiWW~A(Y@r8 zV+|)xi~lG3$eKV{1fEjbb#C2JXK-9V6p|2X3WiOH-t||SQC(&tln=& zo5VrWN1wIQZ$%}-5*F=skdYiG>OJ{J-;?lYU!6AI>$Yln*lu2xh`5XvAXwZ)695=& zgJ-Ym>lL^V={Pe;SttVqM%evow7rhQIa;1XI`Iw0z%kYW@QOQu3#gFm^kf{*3pJ#3 zIHCJg)ava*^-V1gmRHn@(n!7|R!lbeBoQ55*y)?!kPn`k5GI1?&lZmpj}j5~xEtJ# zw_Yf!-ykYPx`qAlZUF zOvY97-F>dVBW1;5>uA6|7ZYbHW=D1A~IKGo{|0H{xViI|)eU5`ML@dq+iu!S$Y4F5)KYmcv z*41IYuYzc613bSzooUtttfQ(~G#p)qhTaa|H{El|_s{g^4)*A27#qH*A80J_CMDe7 zIgcs3T<894%AGHn=bcbi8*PE%e|w!WJVzok-|HnDK&aUNi`xQyQG!zpJ0W9{;uN9G zTLs~`%nq^%;@BezrQ5Ih>l&J$pzwjF$jyHu+cZcZfrckIj_)Z&7@i-0bvJ9wHjc`zsr zMf-krnM(wM9e6gD^zTL9=l!`RXz@0bnxWPGvrmtlL`U9Jl94QGcYhJNPw-?(FIUeq z9!zt#2Lh^sNsIPMgQ}Ne#-crhc32}iU&+ez`LlyT6I4n`5@gH5u{!Xh*4UL#2m-QE zTL8MCIzUC8C%=ihE}KYkT~tu4gz0VUkYJ4&0Nx#;#i ze40)1vb4_nC-|BJs@+(3b&~@?nCCZwal-3 z1`5~>uYC=1`>xR5>#}bt74>>tyo%w5gP3J@d4P+Lw_NV!!mAN;!9E%$36X9X1OKPF`HZkQ{E0~8V@PRE-wT&q z$l`E3*=4h7fEI$eCr>y&ClCf77*Pu*^Ps}_b#Sb~Yxw##d=FrSd3v{sF$B>FPihI< zk75?9YxB`l!hTU+V(2%sD!kl9-<>)h5&a9%0)xTdH%+q7}8xXpKYJtV4^ z5{uy4#ziSolbMF5R@7=$mvCHo`a3gKS$j6y;R&ImA&D8hBL^WJ%C-)f(sf))sH;F9 z+x|ixbH&nhhnLLvPPqLkkrL5ee$1FT5+~rkplkuvsoZ>k1DUsxFVUJ#Sp+%6jHVHU zW(L=yTrD@3&MM=A4IrwJvl|4Hmg>pJOV8GPIF zdSSw^|H3!0!ACM__c=7Ks95XU;7@+T*6U*UhtZD8!$%`b@w61RiKgI@(f}fZZ~QO! z!QzCmxpI@9#MPbQvLRA(VWq#*t{Ih4YB!5IufGd)7D9M*h!ZCrAG{K-0B^@GFM@;W z6mh#-;aQPnt(ZeQ&&mCVbjIB=~3ABAkNd$`dug*9~4hiqp=eVRX3|n(4*ueg+3$<{zHgXBsXEnZ5n}nU2j! zAiRBZQb`e-Oj2ZMq$#iSufTIl((8f9LJ23bv+f{^7;+x6J6T+oDYvQ#1FT=V(^Bir z59;LZu%wwPT-5{qa@I9>Chjvqk?jk=qVIEH7z)7FBz^UEXP#`O-_r&Ev5DbPe%>*O z4$CvQ5AwH5GrU#%LhS~nE;LtpzN@}D*9xQ0=9B-JI?vCZx{prcgI#g~l9$M7w_1vE z8I1+|74_MaI|Tt+*FN%;7spaE$)Xn-W7Q+Q=~ww{qgt2svhj-5tZmGR6IMN^eZ7}#gM0>YS^kzio{ucz865=%6;C)AUbb<812x3TsUA-4l z+Ti2Td7L0aR7`kBdt^K!VEl$p`M!KyS+M8bEI-a_i{Jxj_nG-OH-5O!IC`ng0W+D@ z&o;bp(lqrYrZr?e$wqr&J7|M>01C%ndLpG{V~^1RuPw!Q?-a%p5I&)B!wY2yI_)-; zYUAR`jEmGnoNTWg9cs!QPtM2}J9?{<;Mplq2A(fwQ@bukvMsXVI&}8wRz*f(xr)aY z$eea&7uh)94{6KwKRTuR^)jluIYcVTfKO^{{C|0~UNleEm`6Z>SVPwV_LtgrxwH?b z^*n>ka{Vy#-6DmC4>v3U@G$6yxjEtm*`YQp8BzZb0U^B3y2&nUNQ{RPBW35Ko=83r+gi1D{>uZ236aXOFz;y zSk;k@yfH^E{DgIWS(swJ|DdrVlO)KrK9r$~eR&MsNKHIctC($}vC?j}67P(=wvSH& z9THEYUlT{cJxE$hRGc37Q~Ad+dDl#X-vGtsJOk{y_xi}b2aNDa4Kc8AFU53lVVh>| zoML-H6AQHvxK}A*bJ+X7k8+pmT;2G#Cva6t*I?Myop?L(O*3+NxWHco4_>FL2y?E% zCw~sw)!bmORnbt|g`%_eWqD;!)V{d*<$-TjZHLEYUCQT{(Ov%pE~qVO(xA(u6IUo}VO9-b63vOW+&Xf{gs z-6v8^yS>~9IANJSn_(U^U$oNk9?-viSoa$6SX5MAq1yQW@zed|2t|tL?QwWo+9wA6 zwokOQv|%wZ>Um)ymp#F4h5)#|r=I*dVY?yIRYxFl+uL!nh4&uEr|}IZFv^lGuk#N`X8%AEeL%JRv?MySD5tm$mOrx7hA%oVRC0x`0M>1N#)-o>5cBM z8LZ{2V+Xx~oc);`DVsj(F7X6u8Jh!#GFVu25>;SqSVvtTFuwWfN=c}4Dr?AsJ?q&& zVImIR(M-OEto>`_Ccbr@a))p5B9?Lbm*=60+8s(S8C8axgL3su=GVX?7Ot8wDW)&? zOy8az=^5Xv4n5WdvX03y?1HB z%W2G>I~ltFj&LZ(h_k+5+-aiV-VuHl_J1Vczl3KQ?pG+CNF`n&@d3fE^@P)AsTOv_ z_l+M8ojB@!?4Z#*bo{QN#Z>!-B6G;`L9V>j!SFA$CWa8CpyI`2Ox_LY5p^dR+IE4t zGcEXu{o5d^Zmp?w@@)a|(iC&pDfczlj+)PuX!2(U}-naNaadR8|k!<3g@6jzi*anR`5q3&a$(1HjJ={xz z&R03eUcPjqJxY$D)~Jx|0R?MZX%($RwSLxFPfUn>iZHpX}ys1Hebz;W1y(L7SC;lh)x; zxVmCEIjaTC!8BmfRJUy-%u2xX`el1kBA(w>p2b@zt7s56NTtD>2>ZIZZ&7VH$nBw< zlfX}qJ8NKVnf~X)lba$t8_mI+!Al=>FjkJ^u-O?qU(lvBr% zS!;OaVeftSb;mYaZepJ){~7^F$reYf+i&)g&_xJ#LaY}C5Hbz`17<{p7cyN=NhCG; z^G{A$wK-7|9;3;OL68Cx`ohq@M-v05El8x!TIgr&Fu8CiN7*@}0meX22`WA#IqbMh zC_x!Pao?8|g=nrxQ5L!~6Ia*^cRqt`xbT?(zblLA-2lI;QZ9bnWM{t!W7q(Gdkn<8e)-+?y81 zrz5mvjk-Xqjlb?*s9(B9`N6nxfiftc^V1#lS_ZRNSp@z7#aAdzg{w}>hzt3IACPwP z1o_U$u0L@|Fd%DHbDzWYMBCYa5i*R~YN-M6og>d-|3^yeUtcAw7^SkEwjAOalLuAk zFTkOaFtIV`3?Ry4fBqRBB}85`LPv`Qg{3aal*Or#@oT6DB=VDr8XkH_QG_hj=(3Hz zt^6~5ZlqWa3Ya{_IHEjg^TRzxcQxYtL8#PWaDVpO8c6YiF(D-8F5=?z{&wUSs6%N_ z(B$5~(-wvnBj|2C_v25m(HG*ZU9rdC3zt`3MYoHSJdD{Zd1=vyV*(Y@8T<_PuM8+f zrMs#miN=n~h5|F9)I)g0Bum}Q(|>*p*(M19g$8vz+b8CN-ib%(H2Vs7^`qB$2E|*J zs~j|kITMAydxiX;BLH>0#z=pE$JPGiw98Sbp~pY4_`QEM%2-}FQt;kbK{$%185KX< zdbSi2fdwRkIQ2-OqE$0vcaAZQZ{cndr(l0FUmmuj@VDG(qhp-Rf;!ts3Kf{E$p^as zOa>!uEW?*$Tv8Thf_1Tk?-zku0?Miu{-Td-CNqC0ngTqFZ(^+%KYCsgL88ep^8KS`|BLf4%`YL%BYDi=$ z^td-HVl1Cl2BClbL8P+`VEduts^4r>Raa>rDO^?VJ^{UtBpRe0l^L7dFtFggzE$YN z{wbOGx9LI(Xk*l&LJHcQtiOm)hg6VXI(1wF3f{ueR%oH(2*MnZ>>z7lTdp)dGz)r6jc?pnW5bZU|&%x8d(GKWaUmedw+WX=90o2p^wcICJw zUw?TsCO-2JP)}W!FjASzLRw;mv)$bjus2dE-^Br>UqmoZ(3CVe{uO0pDZ#ef8s--# zYjV?uz(cJVTN`6?y!(p;{K4skAwpj`L}eX4`G;4mQ7YrfC;(vS5W#&Cb1_U$C($8U zmI!snXL0H++I4sBe13^A6UGxXkv~nJ0f=;VPNPU-Y(otjB9d(JvWh@fID;O5`k6AS z17!wc|BOQIdX7Y`gurIMPoB>!29jJ#-VIl74vPFhButE)qgQf<-5~h;ANoL8RkTAO zS-OtDY{2;IQpSuuoU`_5MYT{uHvmw?mzbDbT?mlSDYqF3`VYSnBmedaAz{pXlVY+&5gK?e~Ax-VH+oT=cJ8B46>>V_3t-no~>@Ds+pS3 z`$b2NUyezjF!zf=+f?VhsS71(UAe?m-F1Jqsr|yqF*!)8ddz@2Gj7X?ETdh9G@GO% zRJ|9tt6A4Xm~OHUnX0J-UmeF|OIZib&}Wy=p~`Wm1G*f9_eU=S#K1eTxY~&;{{->p z8)y%mTJ=PC#U0smjig%X3vD^J8}zfb*54oO>@Yx_v_~B&4S!|!Cjzu(GDb-{21cm& z;|&QbE1IGc2kfo~!Nu68*aYot@6r7dehf zFQ~DqWX>Vre|Rwq6_)-kUt_zoDJoVYki{Gh4pNvO5AM41RFWm4S zE(~kw*aQfxmLJKIBA|L*$mW;Y=l-%Z z9>`lEs>}w~EI>0_Yr{XxM3&34dR~t0v$iL#XBTP<=-MZ4Rw2moa)#Or6tF~sMG^&5 z?>Oob6la9A+JNh>jdCV*0JydfQsN<7QT#=$S2~No#kURdm)?=s%5<1&D2&Y$G^wB|PwbB*{TOnh+~J z!)v2C@3YdI;ul&h7jl44aq}Mf@n1#iccen@?4_C?hcn^4p1v?EX@0cDjs64e$6);l*C`Q5H>eet!NF?vN^Msreu= z3OV#P35b25RC4pegUz$wME1+)J+6k?&ukL0W=Px(@=*&?q?8%BU{YrQ6CT_~@s3G% z9Pe@s^_rpwM`3e1b(TquhQ>80>=Fe`nhBT$d7SQCy97tw8=`P6qm0ec++StHTPFUR zQo)BzF3ooI71@2|gAF|{i=9Nob8PvmOxN6qV>N3CF{6Bls+8&!~v?Ztr5W`j!*KdX!GS(QFM>BufE0E&zgTG{Rxe&31D9B=*-M`65)J$r?-ZA+*_f zl}E{tVwtu`D^Me7tb>ue#TAyLDxWP@*HF9-uO}6sNNC|fmYFrtTALA zYgp0x1pBwDcH2qdgZi?^Kz@HW8Ifzven4+i4qe@(ia2+T#ULFHb7Zzmu*?9*UM zupN}@eB|tf)SW(vkQ;nhc@hzqZvPpabt#= zzH?9;J8kVJ#%7wYoa>GVxk4S1{ac6z&&8R#WArHrkooI?zgg`t8K^!{f19bXa^~X! zyZ_lrCq91qE4<6-Ivwbu9HlBu&Rl(KTIN3TY~fn&1$hKDOdw18Vb{Ay`|6OM33~QuP5%`W%z`rv@7BK3rzN34bZ`H0-)hht?0c0 zpQ8{8 zDux|T%vd2&gEG4E4l3Bm1kYkD z*U9qB3j)aHqVM%HRkmP?Zf*cX12h5PE3@e1F~sPwenV!M$pQ$~>>>eUj-X*N5z0Sz zsFLv$n46pT_xB5NOuDS? zAmaGic$fO`82p6&AZFvhSsQH_I+oJNi8`pVo1ME<%7oyfeeMRrGk=Qnms8iqz44`D zvWqXjM3EL{8R&)fM#{)R>JC~_+98iDtW&$_w7{A!QjnMycfq%?9gR9NE&doU@n}kr z<3#MkA@bb)CEIj+AgFZwxS2YA=dOHXdMQ+gYkFGXvhR<@sDhkCYEmakwdkm(M;ltq z&hQp`srlTJM7$1B3S;5qe=?bcywDyt82IFjslzqZV&TawQd`)lL*wJ)2MmBXk_jd3 zLSC1hyT8;GQYF?4+b$Lw|Mjm`0s&ez+V3?gAYCD@;k5v=JBv>7_+eTEA-2!lvK*fL zpwwCs;rOI}0tdjve6r&x()KvMT+9w1BZ3?8btTV=g0yKj?~)`r4Mc45>x(~~M<$ge zSquk5SI9X+MKkL9J%7g1TTOjc^CXK;C8^tevptP3QLzL2&)icnLW8bQ97IPAzf;px#c%#=8-LP6v`#sFKtbDoOeH=R%n{ZrYCRe~D6J|Kq&JgI33Apz9f#0SRnAj@ z(_&Ce7njVjgIlsty=HSvpcXp|1-votb=RR2>>t1R4Y>+3eL6H{uTFt|A8+F1SF843D-#_d&`Jo(5p|+-3Oo zk0|fIQyDqR$wiYUP2-C>Xttes*woB2+yC7jWL}iVq3n+02coe7ZCd30tuhpnBx6X} zF|nYfIok7H@IO!eVV}TDRBOC&0AfbEkgUCjN^p79<5BSk>tUgQ$W6VdMAzqnLj(a(cx)96T zxa{@FIB@&pf44f1oE&JJpgis!>b=3GzDK~qqD*)P)tFBpa_~yI*?+5BiIHD9Wm>*!o#*#ia5rS>0O&kN`c49A?6mD5!=|eU!1NBlE}U2*2O4Ckp_e z^Va#G=OGf<7PCNJ-rg=U2We@mHqQ}91G{{mm*c>CA3Gws=!p{D%>_JfW_nb0UukG4 zo)veQed$Nf;ih|=oyrHiEKrqPY=h&y_#q!bQj@mlqy=Oh*s09XKU`O*j-(u**CK$# zU;_LgV{cjlouzUAXA|yiOQ{B}lBt4SGBQzdJyzkaOg&O^}ypSP(!?_o1 zx}zl`#6txGM&XC|YJ)#75>KWflPCYV^8t`!1H0>?RFV*55jiLqmX+dhH&Vx8ER_sK zTYU`(9;ze3Qk1kvh;*TeidC>dy@Tyt9s8g=?e#8GfENLPpT=v7EYRQ$YeQ78hRD7R z8f8B10$Av38Va_!z`1Ol6>wHF_9-`OoR?W9lO}pOOBxvdl9i*bYj+Ddz3X&P+YAY+ zgIwt6NPkDsz>Hx#xdjv9hsVq8d<3*Ic=y2~>x;8KuD@s~((iqn0D$l3-?CV`p@%E! z!9xqG(O+B&ZGT@?2zIzS-qMgZT>ANAvmD7xMb|v25F}spr8ncqBQ_v<3#0~QM|H)v zn!aaj-y^}-Pe*Z8_u_e!WecM&D$}OV;30IJq1f2qWmMeWdMvdicerKjTtxE`lWvd0 zp2@FEwz`2J9qE~kaIbA=P);wSo_nf>tS6p(I@)KW_Sg&LEk9gqVuuGyQdSo`g9Q4I z=iuk9x)S4~#uzLUB^(*yc4c~9x6yy*#*mMvZ9xjUB@sd$OFp7?Hof=VHqKq;cy;Fk z!8Z!6KWuX~xKP~0cz$)p&?#)opB(Oav)Oblh8}LpEm}OmQZL_OtnM4^YWnJzMB!tj zI+@GsiYT7sK=_!cr8-$+-b0MS2kpW59an_*^MV{>Nnr8tF2IHFH7+oy?NY($c-GNtCRV4KGgP4acR^Jn~^dHYBdJAIOs zr&BMWOVgX(`Y`bVGtM#GiL&V%uY8eKczf5;%Au-Xl|(kaPkcf6UqX>HJh5we5Xq}b zwJnBhI7#vCqYPRM=PwT1701>TpYFDU2U9(+yHlBqt|KT=*HQ(2-l5fpWcy7Z-y)Q5 zUbgD+?c;i#yF)L`Hp7~_A}i)aEqR$iONfvpQqV`r0Bg6n$SHfs7#ZJ3iKI!ECWQrc z+ih3jOR|WzcQR%}=I>RY*ByqmaD0vJa)GbmG(6}U%{8rfG4s&Fn3ydU(P-Nqrw^($ zqp{qN{7Fj+%1;4$NDi5#M665`R_p{e$383r@n1|@7BEopBw}{jbYgbqqLe*)=z$l7bVQ;h z{Z^%4&nPH~1SUiK8Ojh_M{(wHPmfoloXE42My`Tx1uqdsY^|2l%AcO(_#VvOhpc+P zvq%!rmZ&v?AcE%DF)5!{geG;w7D}~z?!UwhLS_#gu1Qk8p2H<#D%M8FvEUn05U;J} zhFqSs${#x$vd+l2;O`3Fp@dA5X~^*LBgel?W<0t#HcDs89bY|?J>HR15-a|weRidH znC`}7)e&EGNhi&i9WA^gZn9tN;NLJvv*oeYU`%$&R6~^CRy)iGxNzV7y3XNK`b-#=*nm6nRrDBJgNDuzo#)WjpJ`pgiN1EKZlbn(*JQ2L-@87FK`mdB-5YCTt=RB zYEReb@)WgUK9x)OcE{UA=bJj3DIwaf{!XW&@Ksw0!KSHU0A8g1insC~4W1Y=e0410 zdyddC{FIcM5fRpqQ=RXvJJn{;r|Q9!U#spRTXPE(6&e*}Vf5rfNx`Q+1@aQI{)nz$LtwcF6y2?c1nqSnk~3t~0bb?9?CdzhaJXDZ8wsjCxUOT{nk~v*-`v>c zQ`lsh%J^46wX^XfJx9qSecYVBaxvyZ)pfGnSvE2Ho(q_K^EGrn3*SdrIQ6FH0ySO- zDfWg0GFzJQR_wUXFPvLdJuY~@E>6M*wuq869AqMYuk^-^aKT7l<=yoSsFgA`)Jx{e z!^G&@anIbi$ygq<6%s_)pC@3F{c6}MpjnA%_;Ax*N?>Dg9o#9!!o$V~t*EFNM!yv8 zYK!x2h^ZBujH&4j(dc~eT@XySME*wl;%aYF7vA{-Vy@kyET@5?4n3+7QGLT5cF^}Q z%m5x9J`CNLO(^;p%jkgLU1zdx1d%6hm>J*9!jQWx4O}$d9z~ajL_K|^A9?Syn_Zss zG|cFeKQWO0;TGPUcT6egBDN5dh?{eBcZOmjSVu+Fe8^NB5&s>mW);fgDoz9$FKN4@Rahe zIaiJ+bx1SZv+Z=^0^Ep?s-GM0UaI7v{))@~Bv1XteOC6-i|dG|e7dOv{c{s?Ut(AD zSz7wh`FTB(R6Xl{^Ep@M?p|!RxBX3+e5L)ZL+0twuH#kX={@5+K1TO9)i}AMKIoUT zuhGrnxoNlUCxgfbkLn0U@%Bo@#9N`>lNGj$qR$rfaAoRCh)C~0I3oRU>=2MRXz*s_ zr}23+O#GkxNTg73*fyC2aJ{RSIP3kgRpwh`^>hMwO?TM$O zi%SZ>_qiyC-ONxe!6ogVBIXAYxbWS!@=WZ|1s3n>2qJVvR9;Sm;6` zr=f}I;@lX$XVTA1OnbJxPo1mu0Gv=bbK-SFP+peEdH zNmw|=?M}AkvB#^0%>h9?>L|GEQn1%BF@&a@D}Jx;zUZ?0H8o(qRph+Cq-Ol*Ep;RT zH*D%IvRLZGb3#?)>&EfRP%;7#FKr(bh zuf#AgZtJCSbK3GuclY-l5v3fAr*gufuHw1JRJnHfij?p3oI9$J+r+g;SLRHv`ut^F zyHTp1umIpxRKz(^;H8uY*uv0}gau5VCjLpb3?BflZS^k@z%>4vp_9y_8~WN?Yli8I z+SNa@Icd2{TJZHPKE(z1dc`~J`EBka8&+*@c^}X%{>{rnGLrSP3GK+&<>=ASijng) zt>YU^pF3+rpRb>w#vfNZ%Z^RiDcIUaw5i<5BkOkzyoz>UvhQlS}*sm9l zTp7{>6lIwdyL~-(c^eK(EC?shEV#Y`c$ZjD0U;DjTl<%V66$sDpoE1`P+(yG^8to; zy!x+M0Drz}(1b+~({M>cc%+UYr019%yE<`y~NokpIc&u&wb&z14@KgBdw7vd?q~xK9Er={Mh5 zkhBbkHEZDD3uQaMNAXr0RJ@p%rYnIGM^j5TFYfR-ZB!P@LC;MrFMFCpH4hgrf=OVJ zQOTFzv|=dz1W@%Ip3M7?Q2oTC;kzegA_H|f%;qDjnlO&XAEriU2bZy^HSk~DHX~6J zF#3E?q{#v{u#<+#Y?n;rb39_js*)7=BU;BEdYC>{y&6hCo^MhaT>bEOdz!ZWbZtM) zd4D|GrvSm-69WlCs5-~17g2hU4987Wsoebf1#_Ino`1hLqSEt?oNhj*L>-A#6xHqg zEZVNtE8XL+U0ril0~5h$Sf@(;TZ6|d9Z}#2jGTvsw%~6b z4FpA@yEXz+%;kpHK`Lx+b>+)oqznl+I3l;8AhPauSdoYXAsn6Gu@WR!bEh4EkQPB9q;1$S8Ho!x*FJIvp~wmA}$V-wFRJR!>7;GSWv;k~^o8caj__ zQt!yictC@Pi@@@n67%CmBgwbSWg_SstS#&(=|;236F7Q$VcMH7rleIV4bu}8B#nEE z-s7N0T+}F4b#zE133T*pA`of=tJvl}$aRGfHyLQ6!qw4MszMU(D<-p z^aS`Q+n;ZqqRiUD+WguJ``j}~%0Y0K3dw>wRAgVnHPxd_03A(8P{B`%w}p68`FrhF zF74(Amcsl*S*QST59_2N=QHt!fEVHi9>IXe(c|6^p}nNu7gV3dw|aeN6hmEZz&dCG zj`kzZ(YnJ<0?((+2}l&vuHg@E?vP4?wnKRQHXFa>_De^S!b`5lJ-?yz(R2lndMQB8 z5{*_pMoq`_z=|>9<6$Nt+A8^}jdKQnW)aeB$NJuE8*X~;OBiJ}KT2}qsIY_8NMC-> z(bI2Kr6Bc!%XS!+%e(u@hruuZLo)v(p#G`he$N#LsoYA8RrU0O0l!8P6$(#h@80OH zr88LvvA7yv+?5FGD28qPAh5KfuOsYV*H%S#?V*7h)VYG_~r*b}o)|u%+ zVLe}J^1q630`lgp@AgBl&A5*+eifm9iwLbVoDHX={!&g!DxwVV z)SwuuwKrmb-3k(Ns;{ui7Zw~&z2(jzy5ZN^SH+7@26vf|%8FXli=#CmUiB@AN?KTT zd~g~y7_P9i+sIb?(RhzS$W#Rn-(T9W>WCPAL+mn;9s5I(rc~dBzDVX~M~K$(F>;fJ zTCt=yM9TVBHHTU|KmVN`z!w)?+!REx+rsa_(BgUi>sS|`wN>^ z>~jqdnG^E8>`8ep%E^*_k3X7Qc^qvFV@Um2zUa30rc~e)S;q~wm^0kX1UhacOl_0G z>FvJX8VYOqSDJ4VKp`v|7g6(kTf;M^m~vZR(IMxj*6&tGA%YQj8K2L1(gk~>;_Z)) zF!Dz42o>KZ=lDwLUb%a)GS<_Tpv=BTFv{i5mt+yxPBYt^DTzBje;sPEQ&{d(n4XI| z(pV9inn6aHI#ULY4K#?lu2g$m71lrM9eu+)qehFO?y@f)X#F()B)s}qT}iE)R7sr? zCUYyK&5CWWJ8iI~eq7E6mre0@%emmUmLk2U@^?O8-*$QfZfa^msjYSGCMW8Ey=X*F z_Cl(AvLKb=l{TNLnGXZvoIn-okIFxwcE)lfi`6mcOnMEr6CJ{?kj0$_ae}CN$pXT3 z0@+EjkfmY*2h^mcU?qu2_1dRK4 z0xKUMO1RyANuh8=Kfh_qUlpaH;$+3&eB;GBriOqSKTVc)=)ldm06ynYL8^LJX|uh3 znOqjH0t+4B2f5VXe|{+R!=itzTB@~FH~vzpM#ux1m{{QEJj8qFp-Is)mW|4D^BkMB z&Q)m+@M!-@%Wiq&twfS&sE#07uTPi2ybz_~7sI0>7V&{&JzZZ6MV8#5@v`}R!ICWT zSw@_9#y!XR=6*az)Ui{IZ(je6hNJ1A7mA}xYt-2os`O$AvWgOHV&W#R!O@0-o0l)T zv1_y_cMbt1<4Qm@qAKn7M%%vIVXmO_IsAEYGh?yUN+axDLP;Q1$S|Md|i#$6P0zHiZaudi>tw$F?b-(Dov*3+tx3!APo zauURakVS#x^mC>)?|!23v3s)(n`eswoj1kbhZT3iM-I=NuFvNgWiy$*Ck>Gdy)(A8 zrJ2)fc&1}OO-{ouK!`FuE<^4H=in7!mHRuG!D-k;iEYwSp2_y^&W&dAsQzeoHzEf} zN>%Vk{HZ?=WhkZK4LRDpl@dA_?jzjs@wTV{m~ikV9*;_IUbps>k(F)`HfyZ8K*V^3 zS7g%LRk6*yvbme<+b~9)=sZ>lJ4&(E^DW4Iur-hlPD^@?c*_e{q;Y!4d}GvpVY&}_`zP7>y0@(p+u^E8Dj^=^_)1>6ox$GCKF?j92s|+md++|)ehkid63l3GHLpyMCN0IP-gtGT%0_>an zkJn&k*rWyIJG$mhtkvf2j2@G14W99lU%BKONt-5n8=>D#I-3Wn(U2SI+uX* zRT_J~871mA#M`|%^hB&I>OBrRm1A0_)Gxz8j!RHH;(1>$csURqOemfH!JXdIb5f-H zqLY(q9p+ixh$UbD(DgL#p^*V3kw{)WZ;}l_M+X+~5C;WeP&`J;kS2uxbou47)(kZZ7h)G-;o z8MsOF#0+`2yatb`CY_vJQHZ-Dghs@AFabh?d9TAA5oA0xzVkqXe!Pm!n;T%);QB!u zRP_d6p1k)+fwN+qx*>dVNO<)dTAMi7VK6c9$Njp(U84KP?YCC0wHF?YTd!Qy1KaxY zDiwIq)!Tz{*Q3Vxy!MQv`t(3HQ{U(yl@)hB#%CdS?%k_nW3B(&)ybh6JbZJM?sYWB zoX=enPp9(pjci%kEOukkJhzy(UJ&U(X@utLw#~X;@Rv1T}I_F+&)Hkc`p)muT5PI^F|`>PpzdO zO79E_r-tL+$QqxvIO{WfZ%Y}{i=riX`7G#BSq%72t8LA}IOF&EB;B^U^5UN}J-BN3 z7!b5_`N}ddChUD4W_{vr4ZY~}*3^&3XnoM%3#j0v>>}$Ob$I^(o$(hdpnE@-W>qT^ z!-#~*L4Z_{LYmFa{H!}F++fhBW}Jl1MY=+R;Ys-{+hqBgUVLuT_=^=YjHIg}?DHGm zh0n&%W3d(I2A(|UKNBKtV)W=GmW3J0$gAO;iB6j&m#RiWbgFzYD2q+7<|F+2@#TX}tJolv;nx=W?CF zW0~q@^VTHoOz3H8fa@|f*d_sAVo8wNY4Z7vGmt8t~sy{C~&vYpXzF-R_HaZswYGVl@ID`R?js zX}RWX0km{{Uc|r<>j4goQF?><`I+{$GX+1p zAj_o1eoL9MW&-dsN9Wld<0h&eEJ5d1qLNaQtww^OHls@1z zqGD-LhIHywAqCM(l0KUSkLnSiU9r@x_m)WZ!tH5+YrNUDsety50&tHrC^`% z0^Sz-2CZB%(@c7?`P>N*JbRvue%$90e4PF5=5Vg)<~s*3ALa8lwahKSk|VlICDCA2 zfUeYP3k}Mr+qX06*rkrA74=g4$?b#@At%*Sn@_eW9$2(~ zc`aZy=Rh=3YAxwuX-cq$Ie{NhZ&g#Lrk=0WBJ91=U+kFnxu-A5;LD6omPkbQT;+@L z^dk2nzKq+IdbL_Vt-jmED1m0h4~-)(ALL(74tz<+KU(&F>}h8Q4QjK_%&{b_N^6JC`r*nAr-%mA&CP>0h*`_b%|oqc4l#8=x+|^L=s~5g zWOCL}NC}mNWqCk~lpqBshMEHh2S*rNz%#?5NSK_>ljG8$z&fvILt4o8PH+wZ?&^W3 zhfRkIaWwaF&E85-3Hh`q-%>rH5j*NV=??~22jy@R!7qnyo_$?Ix0XH!B$4HkZtJ!f za$G-AzzOKgKC3R;OEquDP2h9PD~e>?Nrz`UEcJPm4mbnVfyPw3A}&wIqlV8u&viV` zT8rqzz7Ng`I2Z7}f;l=db`iPlH$5HowdhfFZ`;TDn~2??H3Y#U+!3MyVQJq z%QEw0AKY&13EU=6YVuATF=M(K1a?aU`=$R6BjF3@?*$kF@!V&+(KPdvd#?V7*1x^e z8;$Pba^3z2J)~HjMw!1~I7^YHbsBNq?i-c+RZy(QWs{l7iDt&ODU39)sTk9|w?X33 z5I)7enmrh=XhOitnYf25+P0v_v?P@UOk3f^4#2u@OE?=9dKmZQsU<`03i`mqAH1Bm zfOo$9{+IhU9)b-h9GrTywuM1f9I|kDpdFN8AxsPpwOU=q%nO#`=sdVL_v2KF_?W1- z79w*HontyBVSK$2rH7zl-uvcj`Z(Q3L#3lk@iQv6kydUoz7>*J(V7_$8a*Ja%QN*WPqB8_1j-jvXs$pvGbek2a8^CX!MgAMV%Y;=$Uc5$lH( z2qH`HN_Q8m=S+qSM^oC4Tgf3q4Kw4=ZiGcvVqqOm69+mjld{pNa!nm%9y8 z;eEfL-D;Z!17~0h=o0iSfjkzZ?PW%nDVq&9%Jht*k8<;e0Ca@*_Y7v{;yz&Tnqn>^ zf)TUQkL}@bG^0kP_db->3_PCr?ZbC?8M2Q&s-##(O95$u@Aj2r8>NW;A58O~Hq<7G zWirr&N5wCFo|?3nsx9$&R2$LN3`0kvRw9&LOdhq+lj09t?QIVlu%gm`B6$8V+VLyq zk(l&B;LDWBPSEnVFHsm>Lo@hl-(Qz!H>Dona0A;-`9Nhhr>VCuom5DDKG^HK;`&r-k1F%SwOSFP2&d$*mM> z#|o6^Sdy0(m^e*#`@M9}$@>ykb|{)2pT>tVab=LO)YcVVWb`JL zl;AAXTCyr86E@H`QQA%5Hq@SSj+jAw>srku05Eu6w}R&BfZZSOUKXqLhuv$?tNx~8 zMOGKzB9xem7nbr$R#3d!w*7B|&rJUZS!`@!5C8x`o$gP@XyZKyICZn713uVk!Mstm zag%4B7UVugn0a-dGM}Z5(#pXO4^S=wn}l){NXw4>4EivVp%q0Is=BhInLgPeN6QZ` zV>aBS3X`1sMtFGM#y^{q$w#7oYYkZqraI%Y0u1j{B5Pmb{K9E9lQl>paWj|xB<_TRdeou^ zXO}a~ZYs~KgYBl~Me`=75f)9)9KZ%bq-7XZVb?cB+S78=Rm!Y&>S3We+5~#vGknQuZ@Dql-4>iB7_PnlEjasIwPcDcwekcuw2}Z+)1>`j zoLyl_l>bRFExAq&uIJzI|s2tmFlB5X(R!B+(W6b%~Qs4@c}i*ofGIPv_QOoQL0kH<+>-EL6Z}Tqy1l8 z)KCKGk2kn47Y{>vnV0wNttqQ6NiFXw?{$npz;Jeel8e<+tkU-Die>y8DKA~XQWt+c zq_4H+%}IgNFYyi$XQ87trW+_l8DI=Eu_*+Md>pqr&W)Q%igd!3$5#w9ktYSUhOLQ7 zSF_;BbCLnTCW&U0EOX7V;U=cG2qiz}1p<>T?L@!us4CcBo(D5&n%rp}vw9tJ1dR{% zX~Gtv{cq1q2&IygxZ8nH{#~Xx^4k4P6iO#1K3sB@^|FLUQ+PG46b%Zr2t5`o$3FQV z5KAbVI14b0FC))lxroa=Y{@@RYP}2OSfl}!0a+f@r^^qdq7u+MdBXKt8=m`ESVeRXOA^X>&T8eel!YX zjT`m{vOG?Huc516CfV5!#$%rSjh>9fi20D*af8#6#vOf^X=rc!;$)oZsTcblWlWa@ zl-gNu!iGS2r4f(*zqk?w<^&ZcNTcoZiW#@efBluX0(J{B`%XiKvF1QS%hKY{T3O@! zKKhp~&Kz7F(u>s;v9UxX2|46)NaoEo*vrf#1zp=>&e|Mg>A=Bn zIozy>=e(R7PjyjT5*pOjbP{pJjofkIqsb+Ng73zO9`|Jb4_f;dyX{E#^FtYO?QEv* zBZghFhczPRCcz=}d7+MEqWS!Qq1}++zd=EMKSSVJ+z<6k15 zz2iQOTQ$K!s4|<4o{7aVs`q&Z4k%tVcC_Gjp?pFEQKIoxCfHdPWBkCEu4F7ZR*q zE{A;bxJSQ9AkX+OuKFKPJm)(ok|f)YrKl<>{Y=nBT-CgUtCXG_ML*xbU@I|u57Bsu z51}y}8YuMjKfNDTetfRkHIPv8yehZ8hPt*B%}NHmoQ(7@@dc~k8b_qwmd_;7)3J>S zs*8oH8^=#jBjNz5i)eeST9>%9lK|46Lk*vH9l;zRNJ_w!9~!r4SjcQqhTJl^o&bw7 zxmJuUl|8>&oN||fgt#7Ds)V+mSWJ>=(3{G-?n8-rB60JZEJOtydb?rJ>1<4U(hdDV zQACI`#r?b$!Xn7s_U>@EYw9VIWI5a!13QuA-L@|TrY{;jy#3@0u&X~8&ZtytbXyCI za>o$}#kQp2G4Su{{ui6q<3d#Is>Ny8@NT(ymb8;B!k(Ju?<~^?fDBG6V*Jc8uyt?H zOnX?orhvS!YmMM1YJPNBJ{8$?*W$jwqt9%mw<~2NyLF5{o&sD&o9+O!!AM0-R5E|L zfZsFzmFGo!Ss$I}sZ1U@6*ZT;`y4F8qv5c7`MjZY6ofkH=ulC5J1;HiL^<;*5a~5l zqqjUTHa#p2@&m;6)2qYn?~F(iSI@hx%V7TTsM%D5)ITn z$^hXRW6`=}uh0N~l&|%B#`IwSRZe&)s%;KYKLOR>*_A;`f{yaWh609u21bRCDo}#r%9DXmYlT1Hbe2HakTea<`O^F2^|TaCOdmgj*N+OwX@KD)&_q^&3iQ^KQVHx;A!c${SfNEy3-qx*+< zP|vPi%dp}2HUCqV>(T!3tlVkR@O8Op$DS(k+hT(5j@H7s32@Lk+0Dl81Vv?~scb{~ zauk*6QQuvq0rp%Am;Po5txDe8<*vtW3vJ>^aTpz&5f~ zzrz%9h}y6bx57Ge!EJ(>(IAn#A;a_c%EG3p{HC1@CH+7#lk<5PHH;gPlH~UFdQVlQ zuJv8Ua-h#Di&Wl(uvKz4KG}TqFGrTy05H&F*&0^6*#&V$SXeF-p<%l6&h@*x$;QGw z{28NSPREbE0dmuCCcTML;yN0?OUodntDBKD3bu0*X0trl`D4b>St3Hn8Wk;r&E6Lo z@JACUpg|MPN8GVe`LX4AhQGO?!sLoQW-T>h-Tpv-)k*RkZUnL9(*k6gifm}}X-(4m*f5}yGPT%kFMAG&iwd2(X8X~2Xv^& z`@A=HMHJNJ`)5K2yPs35mP3bE%7f?w9k<~h-%nNJTXj*QiXS(js^^uba#XIeVp_#B z8STD`{LtfMxh>(5CY$3V!cHSB!XC9fJGO|<=wBsPLYCyZoWb||DQnq6xq4ji` zdL%bGHgWi4EA(Oxhpv%$eQ!c2PVUnfuC-65|93#sjstpwp^cpEo1JLgV76u094Alj zM3d3`c`X7}v@yZ)oX)KrA~d2yU}vSJvm-kne^i0PjZ#BQ#oL%u6KkVA7sguP!>yrB z^@kPaImZpC$6+q9Qz4~XnP~{>cm2k|sF?HfD?1wPLPS{qDdOoK^%whr{+%g8cxDx1 zesqSgiwPliYkEZOxksL364`o(a4NIof%T%-*nO~@^Y+hgubHWarl_l;RNA2lVv3Eb zIIo4NACA;Ec!=;DP}-VTEiP@DwdTqVyi{a8{jc3Hc+?f1=>oFW;X$~0z5tCL2NQ{OblAwo#-d$RO8o`k$s5>0iQ<*RsC|wj& zWt|=S`L=^=z59y-j{|PO+OB@dYcwDuEv*szZM-JHqQqJD>G(p5Jdttt!}|4+FH1i` zvwk7dW!rIlNav$`Z(uH>4(vmpy~Bgm2atT*D)1iPif3qouYhJuL$~2r zQ(Q@vK9Qhi75X-zDth;fpQ=1kG|%2D#c>d+jVMATj2|(Ydv)7G{I)sl(DtNcYKGT$ zmxnxbwihG03@tj_OTB(E)GE^P@K>vLNDVHi7XG(WOfL9r*8a&Bn* z{;V!uM-*8k=@V-28@X{6fo7??iNzpj)+M;^CC2kg4mLFRp^-18-3v+un^O`n(P6Y% zu&T_cwfX~ZbtBr`(o8tzIjT z&Zq96r4BqFK-sV!HP%bx)J8azQL4X{JS8=Kn39M<~gw!LuSLO8R1^T+lpcy+^}HChpga(VR%zb|Q@6x=B6jV=fAltzS?7_!w}}+ogFk zL!$RaG2Rs0{DT}w-#w{S#UFKkV1zQY;9ahwFPS|1@=bFtN~JCJB*C7~8R$oS5ewZF z_=R%gqrLg~o(<-)U_62Q+E^Z@Mv~)F=hAYfesX9)vjlK5S)UrEfeD<>i#4d@Qlb5E z4W>3^`i?{+%r!WRdXIYU@+ksNGCcRf%t4kQ<-VB^$Uyx!wLw2r6v`|bQm1C}tqWhE zDhKpM9w)L<8$7Zm27rrj?bm5EM8F7N$zSXJhlRceW&_JpoK^U<$0MXh!i8fWygpfo z>HU5MaV)Yy2lSjDQb`NlA^}1%JbrKIS_paE>2$?6!+Xwd_ssHrIign#uAip;R{*YG zU;hiL2EM$3B)q=J28zOBgV%rbPy=IGeM5kiguN5==M`sy(^I)1+Tyncq$p-eYGTy3 z?>fdbj3l$uXtuM#0H$V;#sH_wm;%UYO2&Ia7sqaI^z|INAU``1JC7t z=Ck2FWd@&_IM8ys$8o0r$x5`;-G3iG|+T=zER_t0evE&$3w@$ zS1+4p)}_k6ZszCxwnc>p!(^Z}(TI>~k8-JsHU}Bbwr0D2jDy!y@NRV8?FTe8fnbud zyiBYoy-Ud)zDVbXsYKg3jKrwx8n@YjJ$0!>S7I$8c&uFWoGEGyGGgqZ(~~d_z{DdHS{|tqoteh_0SYR zMKl_330(9#4&HKU+RbcSH>F&k=dH2FZX(<85saUL(~)C9ols=GP(PtvKt7Qg>Y2-; z5NG<@CD>spogFrt#e{ehRM z&Q?Z)o6^c)NbBKRtkts}KB;3;LphL|$lyzoY8;C@#q#@!W!qs|PfB9IB}Gmpy2E{o z^py6<2@hZ5`k?i?csBjsCHE0(Cc(^wUJ(1Tr`r zGLIIY88kQGXTpQb+@2)R#=ylYBaIF>XTR&u5=3yX1+v73NYYg>ue{Grb0ml5NfAg( zH8p>D(~&+Hd9Pw?(483LNd-g-vj9V5g!6R&fq7w#@nc*%alZ%2@fQ@NwD{80cqpzA zsT41A<(^aXs=6ClPyaBjt4AwY5UFq2Bhdxz&rD*aMj4f}qdZw4P~51?y>l>G#=go= z==(PTu(HI;*C4pSTAycyXJTRS-*V5jj$iQRB=PBrPbc(ld8dtLvc6AY?>~Z%on5qN z@lfkpWbUIyI3~iY)0;ot*L`D?NB_+e&M-=sAZX^aZ_VsN@>m_1Nswaq+91ze;VN<| z5@;GUeraGwB(Ac>LR64GjNRaF2ex@+?>MDYBZFre4}FoFbDUZoP12g<8^N;mct4z< zHV0N837mB1XX%HDzdfiX4qPEonAH>J0h(aV`dU=EqYAA(3Q#inT^dkpmZFNM0JrA_ zhMsQG8ic(M+feK2 z&G6HP*WLB1L&bZUQJXC<;^wI$5#9)kVZ9MlKQtqGixxi~H7y~1n+2InOpaULG(x8D zek@4GGu^ATKyLT#4a>gC=xNvnYCZM6^Qi3)o%?!jJfnbgEGWanfe3^<>gHbL%2OC5 z&;qrPrK+I1ZwOS9Bd53Te@0Qw>aMDbPkh#(d4o?yB_j zGim7AIB{s0mc2B2-$t@8STR--H?>m^6PMr-2Xb--9)&YT=GZH<_uGYaO^OeCQ4n{P znbomej^nU4R zwxU^3*`#*559Dl?I9up>?iDp#=E;1uucS{Q?m3*>#zcFEqwxWcSylMS@GYlpAjE|g zh`e^b?9=f}02Fez4YwchTmBg0a5bvFMtvu0NApVc#9=r7tv0#Tb+k>lG=#lL=2^#en$eyaDgAO&uBat+d->^&TTa`+< z4|zWIzU%n#QHS0(Z3+%6wG*i{XtwA_j}(?re@%kaH)Rd-1_cpS8|OAqOk03WPkYZb z=7;%@`Bkr2-zvADG|SId&{Sd|pNj|$r+o1r%@6kDtZmLM-|!=D&;U) zo3=Lvs@3Pl5pj-FRi8BNaRT@CH>qDmZ-n!NPs;fU?DebGWXqF|zyX=^GPZ)I=KL3s%JyQ-xL6 z6`uVOr^$yOv+rqeg&^o6H?_~wcrnp%(RN!iV*TjQMd|}MNA2#3G*ao{GF^26>?vCS z26Z#D@;B_F*S1y`xT-vjCscK9C;;_8$WpbJGc>`R3kBPdJz0}6{e>76RdP9mz#vx; zjs}MzzYD=<4nB)LlQpR~j$hTMN5ugx_v3?$qC0t5q1So0tqE#Bh?_;FR8^1I<2KMb zK$?2GGAq(*Z?dw^D%1^Y#*F^lMxnXIAdaf|WTFDKWD-MXGWX)Z_>D zCyShRMsW%FKEhjBQ8dKLF?=H zIu_&CuCzQ&i`ijYoR$W$bC&ug>Q3-GC#1p_I9a2x%oq6nZLozPo?tauz2fNMAq1rj z7Zt^uVLk)7M+uKv+RDhR4uv2o&a2XD#43jQh&`U#IL~6)84tHuXL(ysq~)iZjYSFm zuTIlp$#{}vJRHcP!UIN2t!0h?m>eBexX-K&TZv6k11^))fKjH4TZ?S~4}?{TOs z`S2=v>7?NYU%@m<3bd@4hz7@M&Q?ItNiWJH`k7^%a}Lisa{$-XYp(ER-Tg3!KX1R^>g;T3>$awS5GMq z+}TXCvEvvK5f+hBzl?|){v>%mVzwSxnjxNJw?V{zLl#}AU$Ug_kz}dUmA3Uwlb1o( z_))z|gSH4_|3@@dRuE1|LvQRb1=y*q)r)qn;eM{(cy?q*X!2oS{l0+mrSsg_chL8i z_DvOr$h#7chqzDfIa2<^F`UrCUk;)sM6ok?8WC~((nuow9{7_e$l~3z&LpB2%xLFL zc_QLx>rBq0ZKJiS=$;HMo=l?8>ASPH?J)YSFP%wS2bQvzA1JSy-gT@O7IQ0fe zIHWDAr0I5_oQ|*EA>KOcLhqVZ+wBoFSg&AwzADkI3CZuNnlV8ac(}`O`7lB<6$$Fz ztK(if!IlqyVK5Cx4fi9JVoiHak1ki&k=ZE94n`@-aFI1gz4WlAXfaLll%6Uf&TdGR zU-69l5o*28@+$P3WvA#{hF-sw&l2Q`o(F%jB>BHsl3mg9Q4Lh^;PY9q+i;5MM8oFe zQPq9apdeI^Yaa!t~{RTdSl4;Wu+y-Q5r=6%oZ0nsr;WG0F3*uJS z7b8xyIWV+(6z0o`buu#++C1t3O)oZI1v?JGJG|6ubzF>K&jKo@+J5K?l9}6mGaPh{$M7%_$B!>lUQn>U?eH}%>eceRXVv0PAW?AGF zUENn%aTfv4vF24Z-oc9Wu*t_!;F=Pl2Y-9SAs&X(g@IwwQlG=ZyqH^ z`T8g_eikqfwfG`pD(+)SA@3##sLD|An9=^6%+Y@P zu#@g^QK08`8QuGYvKmwje=(46v`@=T6aR=esxL;z>+2Y5H%3-*)@5_->e@AS|p?+#i_!Wp=iIIea=`b1aotkI{ zUVuaIv0ik%uHb-$H)8bTO#kGp)0+V|ZPzV0JLhVM@t7eulH(^>W4-QE?HSzrr&r60 zLrDpMoY=-}-wRobSiLXFl}dXhAbF?Qw^Q1Bb&7=9@_6OpqWTT3lb}5WmK8TW4oZMz zzO@ZiJm;tRL?uAIp)v>HJ{7y7V?G0cyB6t;BsbMJt(AKxA;}F3kHTTJicUI< z0JWS$s(mR90W!ppx=a|U1f_0wMkK7yALIAx#ywxhR!RQoAJK#e?f>G!cyznqD5wju z`0~?$_Hb@oxU+4jZFn+{!5(e8mQVnEI>F!B*MTntfqGaYk9*ox25owDiSs6&eGyoV zFV7DE147*0R(j>{~ZB)1~7o65XddUTrOzOy~`3njTGhdEq zM_Ke*plSnH$!Q6{%sGeVvg{otR1;VAWRHpkaly=Ny=jqQ-K0!e6OUQ_e zsx1;MR4iDxUKUta)EK|2c82`fqzS6`u7@-Ug>E&+FM_>+sEQLy9kQotn|&??d8RT1 zEeJwgy@l`*m$lSj=n#Nv{(< zbZso;-{Px4UBp1W@NL<|IqJ#w{DK1GyNhkGlq&BDIaHHUE@?DT3v^~BuYJrY&09A| zS#qS`iUoUh8o=Uk{b_>0{SCX&10Ec^bKGoWp4IHLrEb;t+~A!OecpCF6RN7!pAMWGk- z;N5d``=(rGh-PkQO_=iJ#c>NVDW5o!7zIAxqtuNacw6rhL}lM3*RHDTE$WTsiJJyr zYsH=2#D$xVxFZk=0a>pyAJAIP2uGLXJCI9)Irl;}iIMx1$R&-vp@zQx79e5bK}lB8 zlq=1NgGj`jG4YDsm2;ND%s-2%T3TBx7}!Kga@kPSUM&2ke}F(zCOvhuDy?Xrl~gI08F{lqkYY2bbK zpjmsw(7ttykC1d?YgDcF%=c`_`9PAyPaJkOhS{^4jh10++h&x-8JEi=oXQ-6AFYtR*l>?hM^_p^C&CG#c z_F2i2_J>_@(dL&7yQ-4-J_9=Lo0|EEES_F}QzVbCb0rNc@U4G9ye?7;XG6m(a{8^?}`^}c874to{?rq>uZ@HAD>HRt&VM&2u=?e6i)jfq39Xo8D(a?NjS9F z&cau!)y$Rf3$CZ1sM-vBOB$p$tv4US)VNHRM_I2nsZe9bqt{#?*_IflS;KbG-633d znWfB2KzrjgNU(1Fvia=#)w+>gy3xdM(SoCe6}t_?ImZDG7)v*nv>C!z{8Y@mpZ6-; zl&kD5ICPsa{0*x1*-m;_>zc3!e)O#xzl*|O5L_YT1{^l%` z8i?chCJqGOC4?Q|CoKJEiV=+-Ovbz=<_SFdvAt*~?s)lhO*TVvD>_iy6p&~+WAF== zgPC`B&sYoCP_jCE3<_`>K-!yzJUANMHKBZT(KJ-=up{Cr-Q5)pu;ge*BrU0kuTIQA zT_8-NQvT-JoqAjyDcm~pB9Sf@$TVao-27~{pqME|rjNyxg+x%~d6_1VKHhHgygQgr zf3s`qE1&PY&N`zC)iJWG{wd{5QE>&4LWO|Ew_&UTTWu>fyZb7)qMG!U+3O*d|ADyeJl z28QM~3@{VJ*4h*`F!yO*xlV>j~*DEsgW!Soo~1i~srelW&+3A+$A z4YDNAs(oX#L%g#?v-}+&7?RbvR10~20?CrG5<0gyYX zpp3h&f~ep&QecEt{^rHjxWq)j$ZWV3m|v^0E6s5!q%b{dT9a3r8g2^Si;*@PsFM@| zD}D1Vf0R!{lyDxA`O}b z8)G!%D8@JS?zM7E&`1OOm&&FUO0yb`K`0oatc9}HDs5VykjLWddYtkLeE^Ks1@u`j zy>A3kv z^MC1T?G<30DU+14g~04i#V{=2XO#k3E|raPNUO!T1o_t%b$Ux2uMoTM*W3FU&-6?YQyh9fbT!0_CU47@Os(VM=`-%{ zW1HrCsMfop*JvGj6!dm{lh~4yRxfU|BE}dI$PzR|;fcgI3Ip`l0;gB?+d8o~Qeu<- zhlBcch{946yk$Nc@wfU4G`m(e@^n}Oms&Feu%wh6ESVn_7urp<-3bm%warwnK%OX@ z5~rh0+msnP^gC#bd-K&dP1UODYw^mun?>$?4w&D4vrB)M71^(<_rg?vkaZ@X$CbM~W%0$l!VtOpRmVBcdd znTn@4gPMz#n9K^BKXXfRkKKm<&9s4&RV;o@ITS*^{9D@4;9%3pUZP><_FFQIa;;c9 zVs92=AzO86(?y%IL6(>BY46jnpy~9DC(THcyINPCY_Tk_0&=vt8n_W|+fFkt%$m)} zF|zZ;d7j-_h#2AbscM4*HHQpOQ`P8Y^RwP>!ULjpLTtr)r#(>tWC?ttmsMJlDw%&Q$u?9B9%2H7mx+Lk5os*`#{b z@AOqx8*uwGVTxDzlyanmT#6g|b97yHNUD|(C}C#NX0G9@=D*izp91854g2KYMq2!} z;N>X0c8t+MUd`&o)6HZ^b>$ff-bs(|rOI>0HR~t}NUEqG>t_>+K8vng_j%;4-6pnt zS~CLkmCdIC123t06B(iC?Dn@Yh~kr8UjeN8=#!_PKh{oH+nwsyK~|J4$0W5Gipniy ze`HPiKJ*Apq96Y4`FwC;3>J$YN3j#g-8(jl(|yoVylDl-{kad5$%)h<_SexCgj6n+=tFS&W%e?9K+ z=u7!=N#eqc$@-JQ_AyUk>o3{MAN+D4KSm%p)5T{?p3dgLTw(f1c6^j*^ozCmlTBY9 zIGLxAZID3&eJJ`=f{fm@Y5;Ahm6#|4^=we6H#?egBgr=}m51v+nF!(>U(oc>(A1;+ zXGob|3b>zGbmv2_YerqRJr80c4-?RpLzu$%7VIxiLA`A8Ek~h8R<$=+Gxtq8FOP(% z=!H}#E-sDoJ1~A=0}>23Bt)3XIb`xXus!5k+b69L%P@_Z9x!~iEE^fYUNkP(%R%3^ zWxX(R(5+Hsef(U~J_e4m-rNig^~T@zF#88%vL;NtQ3obs23@=i&){ND@xqViBn|$X z`o@IHA}%hza)HieenY5mtE@4@DDUIE!N#%s!scza``NKMfX$p>-g6G62-tV$ z;b+`_g*X_H5DXLQ*CbDqy!)63cxao^C;&|X7? z0F0}d=$KBkW-aX>P#zpKm*LM|Qgz1bJu99JODnET0fm-7fPC*x*UPWhdGL&*x5O_j zS5TD5(&vljUb&Qe|sg1MjWGW+=9L z_y+Sz!QnWC3covy(6fd@=dNulZ8k(UG9}cb>zWg~6w3~v9m?EKrhO!voSyWXo%mwX zre0=WLmktthEli71F_qaiBK8>ceBj;?k*gLryroGaT5QHTiaI1KV^oWIy*uFf-rlo zt24@(siN25^yh!d1I{={%;1&Y^d6vZ~+jUP#~9m;%&7T zGM4}(Qt>2G%4YlKiE8e?j#>qYqjwQ z9+AV|ydTo72&A6A@rU-v3Nx+vIcfJAVPpp7$7_s!Jw9ay&4PEDiCX6BY#1Xw10@>h zCgGhk0;y#x=&j?cCHZUvR!+odeVl<~pG)cq95B8emRA$L8psx&HmDf23yOpwFM=>^ zh5qPJ2x1}>Z6E1?>i7X^?jxGdra$W^0KD^1LMk*-Qp3Pgyi+?KJ2)g2=Mg@yz2~d) zzw{FDjHW*R?OguwG4{GJ7v)+rUw+0jP0?#sM#WLeeG*J+$`JC^k(nCs8}+Q~__^_f zW1~>xV?S?^QVp8$XANoblUHU~y)FuX_?`X~N!DpvtMT1V3amQG;H0cARNSc(L}MTxYESFs{jJ+fd*YQQq#e{^4+yh zLH=L$AXmW!Y2 z%gxDh8H3L9alN9PPLPt&Vx*~x$UkE4ua2rF&C!GdXJdAaR$PJcZpFO0WrVrl_)&!I z%t7k=oscTl=#`bTNqDmjp`p*(GFukunURd-`{^T6rIFwhnd{OJ78asih;p?`GH!OQ zm?2dF#-OCvsmJe+Z3U>Z@Ee>gwK|i3Y~ZjYeEcVa2|klk5N(jV#>bn;9Hb49`1~L8 zYYFWqyt)0*;vH!k;gGq+_-OrGaVqwv3`J}#+t{*5O72O>L;{F0C}KFkdE{?qsx1;MkgqY@M7 zLm|(^{;j;iGaYO6#7dmYB|eeN&Co<#soRRa zcZ|l0E!7$+Rf|M?g(ZrL)7wn0)m55z<`oW9f{4PW1PY3Hk)5_(MSC_3 zG3-G$_B(yy_?ArX6W&#qJEJUKfmvB%JrA)@g1YmmCAJEBNh4b*T)a^+RK$*sEL^J^ zI))5;{Pa?;1qEB+cil77C%&JPfPjQS6#;)hNq0W_^CLpRlLSEg@o`OM^l9V=H3NhE z4{8AcJw~1H??;jt%?#k}gkoc3LDbzkEgK8N7#O-)P(7_CKO)5Bh}#Su?DBFUFmFvm z$|)B8km#esrUFf3OzNAnU-SPiS;PndRSUWNJcskID}x9;qUHcDQFDu9m^9$R-J^$w z;bH60_EFDSvas}n-xY7CIrt1bZ0UG^e`$9=fgUdzW5jsOzVz9LuTTWPs{cQ2K(%y+ zgc?y0g5mi4iUCx6pgHy6(Wv#0{ma95tk3C`(XDFtV>h8$o6={mk5)*d@o0{DKI#D; z^gj4Q8fT#Zcn;T&85pI0mm#JU@ZIbicOkG{%4N*q(BiB|@h}-1`_D(hOG93Yb;QM? zV_{>{F*7T@*kl)P@;}KBnE7q5uJ~8QF+DVK?7{Bu?n-C2=!{G5NZ*pb>d8u6Fg?WH zA90<)XO{NVcs`OHi9yJ`*8dRqW$3vI8S_}vxJ<+C9@C=UyI|vp?DvqsbHoPFv$Brg zckpAw;AxVOljj*Y?6txSKB}aB{rbMjRTcNo0p!RC@C?jGU^rdvFnjj7xJeKz_S2@EPi(c zsz{E^EBQ2N>eX7$8pENXqJzjo>e8vOSMT&YVv9`;0; z&~cxvS6&f+7S}~8V#LeSAFlCNi%4mWK7~*@T0(_U6%(ML8T&uaKH=P(PGMpV^oE#r z>?d@H$f())dQE00E|z7Jk&_==bPAyCG_j1qi<zI5r{w$RFY}}_&gE(zpj`w z7=8MzXfzLlm6w})wD#fI%EG3vk@{-62|A^XAa^V@wIIXuhlCFAv&<87NrNEh$1Q)L z*<~N}-;+RO4dLvfy%QfpC-`@VaL_}pcGe=$rDcr3ArpKZ>S*maK40MQNN8{NNKu^o zu5rx9T{7J+7(p`_FV{*(F-L^S{-LkJL>+ThqiIGC&;6ymNH)gGX6(Ja-L?wXT>@}G z08Y^;b$+;uYxq0PpO%~!2@$xx!!~h+@!PcFMIfmyEzJwkL~;?R(sM4lg5b;ye%N5U zRL;qUSGUYc3?F!Y)9)v6|B-H&w1(=~zgP}zOcNNcD8Hhn`nuHYYSY)-J7>f0vYf$g zCa=BQytYSKA^v-4(?WkekM+kD`d`npgv8+aIANTETV{TaB-FfY?@a|j;7MNtAkblG zA@7k^)H*4Cor8(WJm(TMW#6HyCLkoVb4b@)q^gz|X_A#h{%edOe~miH=RnE7TnkXM z6M=}2T`M{mBY>kz3d58maC>9pL&y9mc)YZ^4ZAu|o7nr?H?5%t%#)f^D{O@nU%xS@ zhkN#z5c_l9iFCrFYVGj;YwlB@Swamdo{b}Lq>JRSo6K`7zygxeedZ3PAT0EN3sC?J zEiOZX6jm;qOV(YV>>$47;O^f(2m&gaO2nvXytoPNFCQr43Z>{ck3hq}kDk$)hoQz* z!ZJF*Fsf0h$Wi^{?n@PWJyqioOiE@zE$=SOH|R3B@36nSPoz^bptH6Lb`hvUA}IJ& ze7{;{*pb(q6^ZsojXTq!dU$x)H8M#6mmh?wi;rLuGCAD>nb%;Fz!fb!9dK_|P|Bzc zT&33u`^)qU!QKt%ezfn21-0Db-ryhWsyKZ$QhHY~&?-(tPTtcL%=u^C2?_%49;P1& zZJ}b!S#2;pI0k%#r9APO9LONq+tqzDc2Zmz{%(07GkAc`2EwqpasyJ4%$}Pn08>=e zwgwbxhH`E@vkO_8WJRx>&W~MX#ae0)BEK7nI555}qYHXV40tu0#R}=PikwV_9&}IU z9+oJUB49(l>{e(o)u}#YXXV}w79NTE3dUcnE2-)@I>4kgh-|Or0t_ctfk0ixMz7PT z605pXH^=KwGk+Nj5ZrgpmxSJ41|b3QJvH?mOH-%J4H91NQ!Ij6geSALgC@+gkq%3F zOf@s>Z*2;b7LVPZE!_l$C(0&wEC)`#wF9^9rBtzIVKYUh$I|!v&D?)X>T9|)zkJGL zZE?#V+gh<3spEV2h$JmEZhsOxGnwMMZ2(X5-WzhYBiXmX#t@qF&vE*n36j(P3Z7xM zf#&*En~1)jafRIcLZ^6d!oifyj!oAz)u3+vi%*kS!>VJ9eP&$lcdMbgl3YbIJ=v)! z6b(9t8Sx73wDf?NOLIXdPyRZemA3oKQM84GYt1&UlTk@(-U*8ffM>%&NpFFM(fr~T zc}3AU|0vQwEAXop@G6iF8_gtk0zgR;%vUxRGfNmjYJ z@!E@vOsuc#-F1vjQj{HkH&UNW%+Aj1?>{sztEi|kMwD#1H5hweQTLRiUnsplSvk%= z@~o?|q9-iIT;yA9A!TT3Xi}NpO!MwK`7E#1$`&R-r0It+R?W9rf-p%4XL( zV+(uf*E{!&I$ovNrj>IGPNVAyB^Q4cX62~LfM(7=ge4#y)NkV zmtJgM19awh{Z28wyTy9 zG!ut4a@9SBSz*{=ka?1kw|XtuRY~I@SE#YQ!<$Ga>|STCfS1Rt_?)-HoL2SVpfs~# zMSe9GvAk_I2X7bX0{bFL6?tP%zuJJ%_`KPk)okNd*stI(>7VHxle^+6GP?xI8Z~M1 zU-WL?KbcK*KHW?ce(?l8j=b;FGW^mzCobV-p~9@- z_17+FDrb2Vo<;U|dCdpbF4X6$Yj<_q*<3g6 z@(A+RW-sW@Gc6eUgr20`l&)NUtOfz`7b1@06g>f(Lr9uF9RnQRN1mXjY&S2hc|`w$ z@8xuPi*C4n!6_oay00{n-E<9k2u7b&+?m6tQ+9C(qgbv1gJZlR41r>GeGp^e! zj}MWIV*Kv~x363E*puuhK23>d`F6w_!~Ny({|Kdl2VhsBdD^25gQrfy_MB7C)T#=N zRaUntQ9MJ)bufMxCU28MS3(DCy=*GsHYd9gv<#SgAs1Ca` z3$zyz5&Gr!FFBW(Ct!u`dlX@V+|6D2G;1Vt#BwZeX75K|w;;1PZPiMhrSVgjDP;^G zuQiwNPMB@~$LlTX!WoEDW#RtVAtK|Mw!|_xcC*3|#vi84;3Bm|XH!fS3)2 z+Ls3NM89M!AkFbnrkVD^iuIT@=s1r5Mz`*mTZ&ncZ{&4%AKi*#;JWUo;~j>zi(4rl zxy$;4^Vl2u+>c-Hv#=RwnNBY~e2Ppdvo&}b4hJP@$7P*ZzYQeg)!#GeJ1x2_tP|y^ zmhVLe2ZZjkt{-`A#O)r6W!i zlrs{UfnRxMD}i*ZR;0$RK0U_z-v*_nLolD(*pn;z2N~p4m%~*KA~#oGLNcbdy~ow& zT}TF~GsocPDhV>xo$s5iBuQi0Y8OnG&Dcy27kHV-q}A`nNI9bbK!5X|A0jQ z-SOPo8+7rkKf-DAES#8{SU_;7XI^+i8AAoLe2{SY(Ypv8C`(v&g|wKEnOIV1Wwo$% z`AB%8eJNJSqNSIPgqkiW^1_JRM zD;Rl*ibBe7w*577PIxT7rAa95Qsl7h9}H)ll0F%|RMw@n)D_4I;3t6k z6+NAuuN>%wD@P_3$13#-*(-4FQ~OFLTio~j>=w55M)*8n_-FTLCpj#u=NTtP*r~O$Bl!Bq{6zJS!hbq7 zyFIU}v)Knz6)uDvi>VqIR@fi6Zqo~UujGMKIAqXV4hnj%@3JdZBVv+|9TLX5&o8JU_u?}H#!?^0ZbtP>pJ(LY zC{MEmi+r^EHs;+aw8;MgoPR9Y*O=F2<>jw#i9etOe#Qa6F1UC$-9vyVF)69Ey81l= z0)mv9yO&q&cz`DX=dCjeCZ)QzG% zdarTf*_Rlo^d*)r$Z)IzuL+ntoJ+FWa!uxak=r`-o3OUrS}I0Ip8Zi8;)rT)YWf#yt|QQPLv5I=qW0~cTue5?54Y<#M!VvdXFF7^xjrm=Qg z)Y5dzeGZGcRqbQj4KI`2Ql7NLto^i(rf7^lb^ERA-|8u=vNRN43aP6%?YC}K-FxLC zBY0@4r|!d*^q0l0zx}V5tivIx2EVsemJ2#CM(Ca<*bBEHf!5?|4~X&6uhzc-RxzV! zcJjZse+(|cDI?!$v6#(&EKDhH^&1v*VZ=ZpoWye5ax!plb>a?h%D zJ63DYBqPx{UZAGgahz1d&wr&B(K(KAH2SDxe4aU-Wz{bQH#Gg9H52?)9t3;RAzFMX zD!e$PrfE6fM?OZ>bjfs7aPS{C#{D=PQ9sB?73I89e zAQG8#3P~u^iSF2>2O2OkH8V5*^t*!pZZi@M7(zlil{BBf0#g<0IyyRjCNTr5?LgT7 zj@=*Cor(e1{@y7+2?7-!@zUH40R@HG0V#0X`8C&X8slGXtC$;%0IwxwBmzm+V3MJ~ zF@A^q*Ztp?{T^#=+xHt^?G@tx>o)kBB?-77BpA86|E=4K!2^Rl9a~`dzx@FkOyb#- zXqEm&ApWPqV(MTFSNw(HN$jr}`!`nq^$kxN{0HbR6~_N}*N~u=LNSWfnSh%>{$5Qj z|MAg><&!uG6_q5Id~|Noo36j@41`_)Sj4=3{o1ttow3z;Zpg;Q1|~5v@$2PpDF0Wz zQ8%DqlHU0Qq}$xcSF?hdx|*6A>)Fc8?w+3iQ`dRNCB1iXJk6FiG}paZQkmu`%M`t7 zj>?gmxe^zSu3JLf3(?fl%AKhxj?BFkap5XWeG+luNEFQ-D(O|g4G-Sush(Rs`~|;1 zczrp)bI$jC-sk-IA|=#%Dchgkg?h*OGDm2gnMb)+y_+2y16Ms9G0@c1War?B3i8!A zGb<#I)+~kt0(<}J003mB)o=e;C#$^n+wN`6o;Fz{+?;(3jh>I6?I;WwG(vMDs z<}&75f8nug7!}7IfmIdbTtt+(wYxa-HR^*YgcZw{AdtX#3bSwj5Sg^e>|4ePY(EvQ z-Y5zh~9R@($UQ-2cXEzuSeanrXVXf&jDON32{@Ir7x*B(w`retWI&d5xzJ z!=&+=Q(;rdQ|{rq18weuq*E~{YI~{|4G3#k(M$_T&%o6i=_2%{dPZ_oaU0e-e0knQ zh61Ou%8y(?K0=u?15U>03m9Hs5$H?FqSI|L*FfEa#>zv`$U>;iV-08t>*d1B?=^p{ zNjX){qS+2#3Lo7OEu3Qs4PXlN5B7BjUaK?G3c{3SIrc`>yU zgYKY8jcqigDR`?51~6=E_%ly(*`HB;0xi1Dw(HlKMnJm741J*}!xruYxrMxlk0%#-u5_17zjBXI%-SKhGk|A#t~+;iSjz>Vau&*|NgtKm-P# zTnX8d{t7@$EbSNG9L?D06Q=}coZGElqAS9|Z=~=O`ouX9_V}I=DjR47h*`aNN#*FL z#g=7y0Z@=zPqME+rb&5eH(=DnD6_Cz+PF?!Ec)EHz3S_xC(3d4gXBw%q^3d9^5%~M z)<70hUCYFAtDP5SXHv7H|I@PRgHC;C#E#2%p-#~tZP1kgrZM_3lmH+op< z64$*Q6lt_&uQyiDo~OlF)f&5<0aS*xBC7trLP!s4Ow?=YHeRG%9gk=={n z!e-pv!IJ&Pqz`u3fwe!x{^lQ@dKpDu@H@)heLjHhfkwQ#=#9XF_Po^m-O+Kpj!(18 zM03#aZ*~r)gUYh1qPcH4fG*^*Iz#j7hx*J8lWN)nHMiBQ2{jL$==1)a z;?f%=E3=!Ej>nKM-aO#ucU&Jl@iF*wXuVQ(Xy_g znlhPEj^d|lIhl_02rz3q#7<$a@%)KmSq7vdvjsV|^g3%p5Rd|kujtGb8lD=#_?0URI;SR2m( zoq6mj0lq+#1xh0*lmm(7=<-MgXpsBT*pX;+4YCUGkY2<285jLX2gX3KP66L$b-adER!6?)=QI# zXNoNG#}{V`6SUE`f1TX5q4M#DH|Fs!Hi!v5U-dStbWnikWfaaUApP)7SB@740Oq$| z+QRfkQhi7lj$tkvFc6CZko0P~;T26yUMg~ANQ8mrPId8OKJ5SJf%1+M*NykXkOdU# zsQ84)r*)s8t;E#WmqF-7 zk6mm-Y+3HwxY<&MV)%Iei%=K@cMrDpGD_RZ0K3AnKzz2m67cHdw=T+8^8|Bpo+WUx zhTh?i2A?fOz=bbd@RcYZvZ+_fo1JG^BCGjC3m~SAalC%7a9oT=)HNjukMa0v19J)c zZJHI|0_LUi{p5qKGfII$?Ql@%vkcKKB(MJiuV_LQq%69#-=n9j@6!xN&Yk%9R{xQ- zXJ_GZC+-F-Uo5dQpz2p!iud*hOHVbxHYU2XH5j_;WtrQyhEii2ZbB*)nE_xJINiSk`pZhySa4Ql3m_W$S)E<&tBqh5$z8b z;&b&ASA(pr?pSK^!=4B=W4jXM;SQ8UOpUXjJvHdz*r?g(_W7jGbMKEHD-RhMCc?uK z$0wF!A9+qz&!!-`OU25r=mlk%;_5-VmG%df-}J0o}g!&Db*v{LQE?{oQ?9rHaKhl^CqbUW7{4!TOdn;QUj$=C@iAzX* zvo$`&|xQRv|`m2 z333pt?$<^?69xHpUH2y?zay-DQB`bsSnq)e*dJXcydM5P`PN5)@FRlKj*imF=K zh1vD%jg1$mRvL7OBU)wc9PFH-W+}3>zE*<2eWfj?ri28;xaL+TU6Y+;j6&U=@4Tht zKfGnjwS%{tgSAoGoq5o=lMSPEHU-GY=tO^si;vIg>LPj{$=Ga6D9!ixVKyM1N0%Os zw(^@zh+3U$>M8N$;d0wg#k!D}wreT~oN%z5#b9$nQyQ%CeGlp?V$*ud6WTR?#pm4# ze>jb2*8IxKBC*X@i`Imxz^r*^q5y7ryXp?%(0;27(-NC4%c5?(0+|48dDPEBjjdjV zYIr5I(FY9(c4oV)_g_ZC`vgO2Qtuh_D(a2|c1+1wZ{5EP2#8TX8qg*=@C^ewCA!{v z*fu~soH0^xF&&XKH`b(9ql+;W)5I1hZTKx4Ezm84%zM@Ob?QIIdY%-azOQOEgG}Ke z_g&k7-(k*in&rdY)YUC#F9?6mnoIhd4w$drusJ#6zof=4l~!API9xo zTjJ_lM=x|pOU{t0y>!xM`Fw=XB|C`?FrSkT$#-`y43GY@Sw=-_2N8NLvIBpP^w*kf z;AhXC?Ff)XGGXI#xPOVl-OTo1otc@*x9Nxmy)G;Da6U2d>b!(nn8f)ZO}~JRkYm2> zWbe@`B*byoT9LSH>b_*m0f?BGgVlm%znojpBTIkaNBqTSUz7z2w6a44AiOVGaeQ$yZ-Y+lph}JxL zBQH0PcOfZDveZLwq#*oP!T*_Ane0bAb_B4V6XA5cY1ayIHvr_f*X6Fw8Aw<9wd99a z^$?UMQ_W>|z-#?VUnfxhM^>MeVRj$F=W6>U*f{fZR7|kaGSdZlJY3K@VE|^pbG)wQ zC46VZp{n^pe+u<(*tw1;Kd<9)u8N7HcZ4O-Cph#F!b)j)3>Z?z5b1EYk>nb}vK5&- z%P)f$pFcgDzhqsm{-d}Lj^$&{Vf43--caD@=C*0<>b@KkZkqLOgYA`@bnvXo-DIxF zboB2(t3AiVds;G6D@{k7lb1KA5x&0gHh2LwC+oyr=Lcl9AM4s+s&Q0`0qEWg=jjRN zv_KuW)Oj2CE0w{?+-wfDi1vp0^IxsBs6?S&CM8|uF19%mz#@ImzM-qO$_bxK*jKc< zYR#ODIR~uHWiU2-f^4_if2oq0B%Oo8^#-AFfm2Y><`tNt{{D;W{s zfdri*LN&A~HT5)Nn_P1)e)WCV{pfOcnU0PQIi(vuKNSc}MY~6eqOEyO2(obJOIIo< zvz)qN0~$?KH@`CK;Vu>48F31ibdK4C|9@*@+7fV%5WbJqi2cmvkd3Lw7ebG(6)u_kE7~ zeLdfQ;JJTdm<@Yhwbr#h@3pS|N%5UD1}X_E3=9m$8=2S2Ffj17Ffg#^PmrMBU?VE2 zK!3nGDNBpP&JD2m!oY~aym>9A>IQqTh^C|J{2=m>)XXVFfd;|HE5Kpu*e|Hn=b}0L zHY4jJ@pe#A2~_D@z?@(8UeSH*Ial*{%OfUySxG`|e2p^TX?0O)QxF7<3iO}$3s`nG zrHm3fc(`gG<8#`i+e800ynh8V`sJK2bLf2dD*5u-OL+T3qy4Hle1oDN99|X-B7-O_ z>VH1+r*tUrYk6zw{`ZT2uKCe*_$AsQ{Q3P(JRG{Yz@~+9KI6Z4`TL(>S(oAexIM!- zBO=kb%iv_MtjeFyhSzRG{^x1`X;hX9Do55~d|^aF!Eeok{vA@S7uKKc7cImy5S?dK zAZ330Pmlg{OLX&Vir>4+AnN~)vBM9jlEJN>`sX+hjh_kq*&n!cWj|P(LP49-SHBL~ z&j)a1ZF>IMA4L9q7k1gVikDUrTN!dqL{fWA z&5h(D@pw|X<>E;C$8fekJ<%4mDh5UL#csdBp8N2|Gxtdi5;D)?Y7eUr?Qz_WfA4AW z^$B6}`BkjxKBE%-44!W&6=BI&M+#EcX&IFHlR7@~``pxz#iNPD)?A^99dnJ-RRyZv z{+}!wBWFj-U*&bxx{6O4G|Y9|%xk*4QSJpGKcj0&XsTyrF39AYCUwjh}p%Pe!y};z`PzD6) z`f7(nojf-JDXU35Ut$^VscJGnw_r_nwn-#;1YeCrAF3jA+`LV?oEo22}8+W1+9+B&yM!!Bljf?gicNZ7gr|bA{8+N1~m!ToYcNhzByn;(ssVcYV#6n&aCAQVK$1la+?Hy*qR2Q zLjbm{Ru-$(^29iu8rH_iKN<7^5g9eJFI+>8l<)N_IEO3r_8LEmy zZteHoA2A}ZR6sJ85FV-rhm_pCrjNl*Z4)!hmu*;|Voct2me_Wd0;_h}H$7Q=#637w zwharMF$jEeT&qa7G2{KXu{~c*RF#6fBadb?g`=dCjva=Eew0|~F5on@Ds~xrfA=sY z4Juardg`P8Lj9V09jZkC54v3f%!&lgU3P zkfIvilwwzm5!2l=pKM&bov0{cN9u|IeI^<19UBl+QldK3$nPq$WgY8D!iNl(oKy=X zlgC72J=gsXki*uPbn~hRIMekoSTH+c5Ta}?Qujd?O%Jge)z3k!IW5-GY_vvEk5sLf zRj`l0ndg(%h~evo7^s&yIXF(I?)_v`uukr< z8BF{+Cfbcw=>)?h((kj2+|XP?2b$EhWYXfos2sDY9?CE@`K7R`r!)3)axfT}7W{nB zP1%q0P8fch^sGgM7Tj@J1talMq&)D%e9Wad63+U1OruA=oB?xdjXR=tKrPq#Q%d~c ztPYND+D8J5y_wXqqRPEK0U!D;0~5zm^aKov#~&ze9^q|f+f^??pZUqOjz5t_| zy1t7vT=$RZ0ChzSx^Y?FtO|w z2)$^zHmm;FK3b?(>ZtlSJ{r$73vj&KO0^wM3yFHKS<2{}aVJx0F)04A^K;y$N7|Wb z-m05*UatSm7V4c{0wSk3*iU|u&qebiO+*upkgA7MeSfqbU|357oZcn^aq(^_W38i7 z4n`bm8i0VnWA!t>gK_}kv;Hq}T=<|Up%KJG_o{NSee>|<^R=kq;=AQ_ZGuyp1-lhI zp$*%)CG#J(t(9`uR%O8yy|V_|gRi=V1M9=de#e^jTXx!_daEm|?>GOj~qVh7ZJG78YR@ z+i@pzCHMA(uvl7)%z{4$aDHI0-Pxe5e-@T}Ax{``B;A=-@M zRuKYJ!VUL6?mX+!r?zM-lb*)@{83NzQ+L)JDfe0@!{tid_f^o4sa^O+?D!9T43Mlt zP9EIgFf5yxO=~OeY$C|-!F7?bwK>h6`q4XHGOH==Gg&d4~PM^y#+20zJ+pa;|C6U4>BcN{d9ZKFkDv*$2sD2LG2KDz&VHU zHC-d@l%REHOV{G!L-+zg^{VM_R_6yt{-%RjsP^;q6PE))*jquh)=uX$HzE{M6Haqi zAx!b^bPx93>dRCJ!A$D@MHkzut0K?5gz?b1p<~Le$HloT?TM3qxGS9nEL9~kE~Rc* zt|O1>Y|nkdeg?2C1VO)oRjKSwz}+rt0@yA zaH=~OB--F>T%W8OU%D+7wvqu{v~Mn}Hkoy4{9zdUm42=s=4JS9+yJbF@Ydj*$A}K4 z#*)g1G5cx$GDxAq2E6hdC~rgOKB^q7gItZFyN)MoC!sl z&uee*IGXudF^uH(DipfwH=jiUs@}lc+m6x2zfwuyHu>>fiOA<(o&StttY-^xvg&&A zyG$5b=UjW{H`A)4*d_ws^f~0M^cs%SX%hDhCDh;rk^rY=Ysm~qawfwC=Ik~m>Fuu2 z{8kQ&{Da{uj|?IItDp*F`FI;!hq&rS|KFEh$28%IELIs6FDkAPcuC{DSUK6cv(!T( z2Ylu=M>Jolhw$}WU{mSkCnaj7&ne3cUQeGSmYEk`(yjZ(LB;*F)Hs{ zc0HbgKQw?n7ebRxgMD_VCnB@rcKBC#?diTg-nG#!R8^MBqSkC!B!s%u%ErJnTa{9R z)&)^$lyX!6*uZQjn8(%$oa&5&O_$uuL7Ef;Def0YdK!i0wz5v?#y}V?Z?(^-NB#Mu zG<^h>7`McJkKa4O;Pf!fTQ!|b|35;-hjk@^s?UdYu=h`eB-;FhBg=-+ltBFVoB6?I z5EzK=TPSTw|9Rn%8Y*yfleM1w<|m2|Rg@*1U5{C^EjG=%WvooLBa zR-U$vC&LW;fM_^tKPip?S)3_1my)Nw>>!i9Sk7p9rxKClHq6Hc1e?UKxD0W&ZNJF2 z4;{`?J7Eo-F>eD<@{eB0LMVFqxY|QILn(>IpTC{d-T_#S6e>|&Kboucl_IU&_`uWh zqFOQXWvLqXfxK)UmtyaC7WD(1C5Vh}_@k8aLQXoCXs$YQRzO)C3*2tl)B(CA4AOwS zg=*uz)4&gU`lNWFY1BE`_;V^~didv0tu^(s6HYY-`bct~J!`$JVT<|Xkwx!>?M zU>8$b{JLkr0TBy#n;LQuiyhR{1{|PUDwKVZ1`C}_q^o&iEzuo|88c6FQ9is(EIvLR zS6OpI5K}g&wDLBYt+NDf;WF^)P#tSXE>*y%dAEzlER9IqI-E(nk9{&cP8OR;lp^$= zf=~)a9@oBteex+(^urV@$LBI*3pwG)ZU{cwVE%*jP(G)!i(=^0?=khyzJbX;n{KX3 zTxn0-$&IdJd_PMe+QI3rKO;6Dd84#PW#?RE_w*JZ!P;m2q%XQ{F;Bi&!=$d|5zgL8 z-YHX}?#MT;X(&W$kHY8`hz-)vFXQ;HzFh>uDY>F-o>U4C& zU8B_B%+NP43b$4b;lfOy7~KrD&E`)4Y*X(BNnMxl(XxsSOm-bEH>SJG3DC<4)Mc1& zt82;m7r$>J_>h9-^Rb)WaS`&BeL|0|yHo(2ReyF)_IyMmM4ww**-7aI5YAyB0z@;= zlvm!PZw9gW;P+6?YQlt{hRx%Q?-4~59M=qK*ff?O?l_1Ra^qfJ%o#h-!ILL5kSj5e zmV(Pz+;%B~7=5db=qH&|0n{fMe`zJ?!3E!_+j{GLxqRl?MIg8{5%+aFujBc(scf5Z z624KV%wm7bx%+d|eem$`e83xTa5Q9p8f*3Y9mz#XT1ddD(CO(F0?Mo0Xm+8w@6!{# z>Id;(ZK_3(d-WvzRq{dO=4MvGM&756-LF0~Pv0k;`N&u68rT;kIWd7#X~EU?6|M)0 zUlz7)LwC^K+asM?^zqNB-qXEdudtG;UZQu#U&`Q<@f>4R)0YuSdL^6PCf|wao>_c+ z58Rl14)6ZR7JGTTMJM3Lm6^ivx)qzYbMIDbKy&U&P`WV7ZSe!q_cJqt^#$+biO+HO zPKSb-pV#jqBFZ|pq)eJxA4}<@`7HV6N2YWa^IDf<;nba%nHb*fWDbt4>TfS398#);ir9l#@?25bguQE1lz8ptHb*DC&PEnMCk9wW!owHNyL_gNWthsE{1%W{xOweg zw&dPEBAx<5DOFwNVok=7gpkxNP!G@$qN(IlU|qzFE;Z*c{&O!dz1eu{ZppDt zdQtr1y5 zpmP`)C=STEs#4)>b) zDo;Kgxiss!2A1ji_LfmdYJoYtp06mV&A#u!hl=-UeLzBm;oz=CNE$U(e3L_=$GY05%?HFhicz)-EHOlZ3PTd ziI_%NVFgRT_Rb8wp6Bf8Ly6$YCn#yzG>R+k{s>PCsQeJ_vWDGmp6ha&$9m{wX&>>g zO2~SN>PDZH;FJIH3x>>oe%wZDw14-N+xzmRL!2M7$JToOiO+0Cyt;=fm!M2#_tOpQ z#8epg*Lz1I_=P)gpk~qxf zE&>zzxv{>*dfm^l@uV(XN+Pjt@vP*n2?*E9SEce{_j}WBzw}8?8EbEzT0aSGmu+Ad zcBUY_gSNIeL&d%Q`U;9B-#NwWkdkdSqWXwT%Mvrz_a6^U*n8U~F3?bVe7}3XO?b($ zMB8dhBembDCzj$lBJK>Upy$yk-e^!*RGB3+0dsFe}P zJri>5+T6x@L1)qK^G+vZz)Ao&ssGm5jrn+1qJI*nV5KLe%jC*FTK%DBZoRfF?cuBp zLO8qYi{~up;g`o5Omoz>>t*2g~9i#5p0l#hDi!)Uzj zUsFD?THk2oy64ok1XvD&^?KUL?kQ@FZdQDib5E3f5YMV7pLcu` z2c7RGpOlD=a`)?W0oiO=Cu8)Dd|$o%N^psR=K37A$uLjn3&T@1lq&Kt<-#R*cV?HP zTg>e?!iq;+_IbV850UVoChGG*6b_NMEsmJs3SFmhaM zHD}RwgJ`@8rs#+eB*?G}>&i;;{b%z@5F-iX6P@HZ z#_Z&1+HNE7s5s_X$CB{ftl~wYd#meWp07o_&6WpVE2qM~x2mTtnBp+RAlC0;A`zHm zF~)P$o|{_N#P^LWizBNqp7}oG|bI-rA~3V z!7SZc!|TbD7aa08mcYC$prdivwJqCLYc()z7tN-tZ1=T#o^eRdocVo6vp%h!Yv8e( z2i?X2AwXy-RDg2)L4;9Dm^`jVor>OygkpMYO?q{;A;Y6OtadDe@VCfO5B3;5&i#TD z(uzDp=*!3>QVlL55sxw02M;Ckm0(FVB3DFU&gyX=-a9Cm98~ylvIl``@@2*nU-o%; z(wE=DvQ;p-wv~Y4s6qF1Dpa?5X2V=3E_?;2dv!0YCmRv6AK`K0S=s9rD~rHc%tj|d zn%8}vip*Wov%+cqQSYYvYdkMyDi+L>TpG5HSq2(iEKDr>>Nw(?oUKx3uM>T8nd(Ww zq8`@g^;}Jju{AD9)dWJXMUwQ7=fcWGig?sz{XO7!vwZgKH{cHD+6b@2S`Dy+R=(Jqs4(VP%vF&K?`Q#*TUu-FWSKURBxv zM`_X?9I`=YmK3WH_XYk>;+Y(_ZFsvu?#9uQ$vxHbx-|t9!n!O!!liII<~Nj~{zXT* z&VAY-yl0)pZ&=qc^o*uWcpe^iE6-3i2mKWD!$3hDq;B<*Ea^*w?7w7Y92T)N z$)s--H)2a^W_5oIoWboalZ8&&qVky7d?3^+-9KG8!*Y(u?trpqie^1{p6@z2=k0mn z1gHeb`rH_syw5Pz5t)y0+3>7(r#!oO*P$NyA>6Gu=Iq>dH-P53QPO7j8J7Lj9uO_D z$#VW}1q(-7x=YG5?jD3P_wY4qz->UvSj6S?`p4;4e3E!F!=(~kswt6PBpa2Q-9 zYf`(>li83@nel11#oHapB!!m`NK%$vF^BU{g(#HDVdY;+0;kJUBmhhAk)u~<2%!>T z%kT;2?7V6lX2JUCrJsvm9cCTyGJHsac28DYJcb(&~*y>v;_cG+MD8 zKQ7abyj;?aWN~h*9`anxIdmF{-v0$uq${tGR7`=i{mp8?6oTLwhI>1N$fIfzf*!u- zCqI#H{V=n1ssP?e+fd{lMZsrQ=s3NObk zmR2YQi)+rInx9D_kji16HNb9n$BHgOwBe4lt^pSE{{wvQ~O90Cr1T+&ri8kaXC$RduJX z#|V|Bv#rVy9w)4Jsw9u%g`_-INPqnTO$LxqDPCK za#nQ9tQj4Ci3UM2q{GAA0$bt8=*+`acN$>vO*JzU8f71zk{7JK#Tj-< zkcPAA7DtIp#d>=oA5j&x;ykbOEj9;^HCc@^E=RaYT34G1ut?~=9M@k9wobq+>HONG ze)&xB>WHAvSejez_U!Z2y{OJa?#)eu^%hShwv>|bl40GDb=#*reS$hYkDu+Oay2d zAMm1Mshq#enzeQ|um0ldpx3AqAV(az1n?dnpI;~Iyz4ptUb1&1z~GTHBViruIPF!3 zhVwmlvwVeJKsZ+np1%KXk(Q`L@0fA9z*}nCfB;9Hy zt(=m3`<&s4C70p6Wr-%MN8=eo{LE*Y*t9Z=JsJ_VIuh*^)@l7M3++AdgRpbIa~%JG zk0iv3QMt zr8D5%eZW(~Gpe?BIb*)(tg6uIVfsA5RZs3%7ognNXuEkoduG<5^6pGO2%RTVF462f zvS0Lc&0)0JUruPKUO4I#`+->IoRtzsRh0TU5IDy8jqBemn*S*EN;*|vb#-{>xeBCWLK?-)sQIl;BNHHBZXzxa zw3Ud}%;d>7P(H#He{Sh1FQ0~G!MzG?YO4qv1S!UKJby;ob9umX(?||5>O5q@)~d%k zBVA?L9L_V8o=B=Tf948~#kMyN^(G3{fvNNc){@^z{=0dtsQgS^cn^M#fD%`JKR+rC z`H~>+X!%o*tZQ}HC~39ZqxQLst;r7wTicTwO% zb0?g#rmz3G*MI)$@Mm$DP@NXRzwQ4UGP}t`b0>WaDNp~rP+JJioj|5cwSL)*{`$DW z3C*2Q&)kVhn#rFj62CqKXznCDmiW&L|Le&AX5^n$4PB2boc>mViMTJJ z6=CJ6qBb^%YRqYfKhsAi(*DuW*uK`>e_2UZ7YekH(!TH`eon_G%7^16a$TQ^%`?m` zrN5TsIGum+`Q*u0=pP8E#F4zbCeJ*X&p9Z~B4PE+r1f*EM7r8;pHA`4K{2-Q@u!#z=SSUqK z%~Oq8Y@LAb_DFrjQ)49a-t8Zi>q4*j!kjAz^?z{*A3R_yhO@b(z+&>t!l8-nt)8LZoq4kLRiEEnlKVZZ z8gjov!?e~7>uzvEkIC!~S7Ruy<`rdjEuR4TdMz}LRK+plWr?OCGNDp-4X>qg7us=U zJL0HJZf8}W#s{418+xtL{BWLxXJC3jr=`19;1o_K{YW2+d+MHW{>*Ncu~LCa9^Dim zl(6vTANT1c*1-&W*kg#7tVb3|%#H{1iP6o$fxmpd9z}sJsuOcQNiY8>G;w5!^6_|W zjuR1)VLaR~pt?>gnU1n1_>!XQ>PpFNOTo-~_x*CFp2Qbx72gc)W@P6`vQma?^B`k= zox2ZshOkMbpvNVM*j!wvox`trwh;RwUcIr#;4KH)^-M2f&iq3FIah$T+XETDsn29OL&QX(dC9e%qJk~f5E1Qh)>1Kr=kP?eh z-YezgRo}(g^$+^0u{$9U)wv+ESgHRXZF~2hN`AF$2G1* z&t~^ygJLb2_ukzR7X#0qUS9B%CBd@l{CCYks}HmZPrgO3&!9~~QZH$o&7b zZB)Lc-*dRD@@I@JMqPbb4Q)Gi#>2R#509i+OwHhwV zjE2cLP>OXQL{zmfc4jf1#l6X8FL@bR>O8And9(M9dE!gHw0pg{%Fb!C#G;dV$rwuw zZ@6?XAb2{6Sju>Zci*H{#pB9djV1CiXTfk}v~&92PqNXDrT`!mNnR0fYNniVp-N9L z60xsLkYzqywsy)R7$c14xxduijC*5_Kd~2EMOe(&E`91GBB8Z<-Y-wVev4$RwItPz zkkNPBo)T0W6vI*0&^&jR&bm(WkH0yw^Dlu4ZB1}_$U`gjmm7Z}PWk(C@7}MMp+o`L zRGp<>`diQ-L#II0;0NoDGx<0(Kh9G_A;SZ@OomNBDFbg>s$xK zwT?o=YVl2$bS>l>4HHdb_{5X5+K#6KJG7|ZzW9yC>({b+z%jGKDy*mcZ50r$#cL4t z0_U+!%PZZ;Mo*#}Y8=;~lFT)jg{gHG*^<&15lgquv1~?I7;|;zKFD0DUbfvJ~hiX@KP9x~r7O7GnSwh^|oI!-~4oWt*NI zqwGz#8GDnCuf+hQbbi+wqk?s)HYGG>e8sd|6`>z-s=(S);R{A1nx+5|Bz~T#Y2ZNiAR<9d+GBHWmuuMC<+qq?ez-yA;5s6hWz{BsK9khrw{KGI z3(iviX>k_H;_V2HYgI=CV8ItpA?qtg!H@DcaHDEu0Nf!SO79yLr4BMyo)5jQ=( zKFF$@AXMKAJ1$Lt)+iC(`(tHQ|? z6~C4qG)A?H|IB$>YMAVOdp2P5g@jJ?Yn!SXW!-GVQI9>pvQ6P9w~l)<&q z7kpL;nIchn*PhW3DJoM8+v~6k+PcI~j4M%a6Er)Zx0X-BCW0IEm?a`^>#n}P=(nFU zbbH7hi#{u4$rG-l#5yKpj#`@d#>vwYnk{rvx(kqx7f8dp9!XD57N#In?#;?GpbTC{ zluxUI>tc3UsYSnzs6tNAD~|&p&R^tEn3=d;kOr}5XLcvRzR+pNKT*E))ZKT8a6DJp zX1Np{IbvFQ0FdQ>6>7SrJ*Kbqt4lFhO03=#iY)zA28_#Od2fyHU1mElg8V!Q35^UV z6qEJRLoA}q-W*#qywG0?)#4QM;Fo;#aP?n4(^+Vc^_Rns?sx^u3!b*n+p~Wyc2&}=7-^4a@Z|h_uGd3;FTEC_u-qvpx7>+LOcTSxqj2-#rVKdf+5Rr+ zYu;2!-O>i=^Rbd1SSWIUJcfCS8>Mi{LcPSs?m;+=|yl4_uRTc2Qr1 z3px?289$ko)NH#2j7ahM!d1M}MOwJ!s4eb>pkF8bJL4TRaC%4CT+a*>P|m!YcBy&v zh|ez^!&Az9850Gn8o;5i7cSxCY48ycL2wHNeD-M2Z5GLY=a%4^_K~2VW%B}2u_s;I zou=)Nc->Hw#mvs|;`MaC@VI6&tUdUt!=CVq?Jx75&kaV7tzB;u3~aSzpI6)T38ibW zxT3TX+U1pYPkm%*w5mq%iK!nPiMZ&(FA+SVKOiI`+ge(NhAp&%8n?g{ zd(juu-r@eK3!#!ZL{vfo z{^9=EcRhsCM^r}U+-X-pT252$r(0^HS=pq}UiLSVV;FBlTnJQ<20W*(Q?PQjo>bSC zv6Gw9i6-T`Q;JVk&W5;HR#gga(Kn=lGUp~H#EB_NRpe-!Z8btjOI+Q6i<&=xL!Uoa zVCD=(BU=l<4b$H|U9`6*`0H?V_ed#sM2UX)nXj z7SgaIZ}OKo(o{DP0oq!jPxrnFN1I2+(U(W#k(wqmpMF`4bRATEUd)Oe$Ovr08$Xaq zb~ouX$24+*N132W2lzk@TK-@dPji7@cLUa+u{{g+4_0)b z^n3ly)JnHsoHP)%cFfolq)l3o`%8`2-ydt0pa-%@vy;Q&(#5i_1;|{3Q)?oB_Kv>| z<}vE0<+(5w}b&V(VP%;1T0XV1rZ!7-_eubZR_|1g8qf7gRT>N}cMG9F2i`!Pn^(%b*Y>+`J~beIQfN1JswITy5a8Hfw-B1>giBBegidE zVR!Ah-wz2vy)8TR_LpOvfE{|cy#+RK$lrd!P1^5q%%d-%@uxp%z=1tRs-3Znrxfwe z?Ni8|u=aOE;ZpnB))C#{c2Hz_&2YYIqgi`{cH&Q)1T&QPhgo{P?y!Qjx!x|}c(3|` zuHdb-r8Y@yZ0|ERTh?Kl;F4KoJwj!0wOW73jxlv-eeed2hsn;9n)?yu2xH-LEZ zYl64hOoX$;+kg_y-0-W|e?3B$$`fc2PaQ?)`8f~lcScQp&Cs)`MS>%a z1%s8ad;<8T<-VR;uHktpZ#E|KS8x5|1v}KBIUQ(etlDbcD`s0qYNKym2CstGfideG zR;qb3nmsL~3QLdJOAGG3b8h*lc1x5|WV1Ham&cp8r(0d8pp*6PDKav96kg^_0t0PR zSSDSg@xj0}4y|COlCFdh84s199}3qS2TmnQ>Sd38221H-B2uR7 z-(fRsEdWe|uYOrQOL)-!TRqti<1Ka`Ks&F@FKx28-!Ee*F77<#Pm)o+`4l+|V`4k+ z*K**_>tlvQFiMQ!bj>|1qaE&eYdE7)eTa8JRpP$P^jxS4m0mi}VDl?2(Jj_4Mk+rN z9RS;UsrYCtraFYm$rg#O8}1PmJ-BXkZfw%ioJF~CA!L8L&s`fVOff0!RMPtHEonb1 z-p(^Pb#SY0;pMjn7IcjKo9(JIg|N!)@_ZR|J3Oty=#?Ck$)|)OvX3c1IAj}t!_7>M zl@xXzHt{#33C;RlS8ARM!juX0vZn#-SF>dP`Aj*g32P~m<-4@l_mftUXHdk`mv5#f zltt20QcZT-CsI$mwO4VX`i+cBKwd5-ydj3U)^M~ge~+M*kh=)^Bo|U8960RmdAcU& znyVx?-Tf%_-ryevn0fM&^h%I_uf8PZlrHnA7hbTZO6oB73ca?S0zA5ym zKsN9B1Quxc2u_sXEf>t&T)#58Mw<5hB<_t=JJuh;8*y+UVlW4=GfsT31*F1#8SC3| zL(aET=(DxAuh`V*@M`e?Mu-L!g5~Jt#e6Q`Xx6NvAk1d=RWUtlm}hnK8hCz?dC8Z^ zs{6^uANEONOM9ZV#QViIBDg)JMvJF|D(YF3?+muvJi5`F)a0ywk0{dtKTm-%eR4QK zi1z}*GH=U{YpQ$>B36lR@W=!xL<;DN)`+e5CzFy71a#%rfsaQ<_1fs(GfK8&5%+0Kz0uSOz>ouhn(2kkiyfwU zk3q9n@|FgQg$KsVoWxt%QwFnhGDQ3Boi!zXg)}bIjP9@y-)lG==`yEdSoQtRUo?Hz zB&u6s$V{){6ZE8v@91RF&E)NTPE2QKvpIL)HFpdxXlj}!IR*+Eq|z#!(VXV(Rg%UH zlOZRqXKEVvmSt>?^3ifwR_DtD;JmxHu===94kEZFJoz~d@y4V5xa^pcV|;{W>^P{c zZsqaHePMW?M(CR!_vKP9hkYb`S!HxX*1d_@JIOa0jXl2|yY(YO5-U$qmc7y#MN|>b z9yD=LQ=&>K-I(WTCQ0!5aCeM6o{N~BCG7g7Z)f7ZlY6ZGFzJp7eVtNlL9WC5Tu;*b zJK06@C7mskKBE{!Aej%Q!QGQuUaeThG5p*3=QZ|!gK7VFOe^_*>KJsoOXzqnKmZv zorQD)MFL-a*V8qi3b}PLa!17R*U};(;ERpwMjTR;&Lq4YKRBfBa6owM_q|)9AJ<;g zN1D}7m3~C+)!ZzA{4xi&PfK$~gfR}B*kxVNCFdU4IYq1p)Mc=CNrM`R$Yv(!vrg%E zah~jf#}@JiibE3*z#7FeaoF1FI0lJC4XaJSZL=L0X1y2Q1)Ii2OMwlvt~m_r1Z0}t z+U4=ZuyqKtILv^(X>cNF5^|RO%RarbhvsI|U!`32_6SoD!_MahQU1(&mb}F2#Jmk1 z5uLokTS+ZMtXFPcE|I;n?>2H}-#d-t^fbVfOI9zL+Eqe$BbE;Jjl>1a>>-QX*NWVF3y=KJ*Vc52}qm8AGu$>*B;o>?^vizH=@I@{U= z9-7K(-=cSh5wiSt>ZEkaZ)x7nE!Ue>mN-4BM@Bz}HMONmRiIa5)-!M9U zL7hm&B5QgHH#?}f?gMWt8NR+vP^R&N$QfBtY38n`q|Tt>+CW?T^V%}YH*daOkny+p znjzGm{bG8_=A)^ozwCur%Mqml!KdNZ=C zSx!mGCV_8z!q`$M>iB`F)4cM*AMFXMSeGZMwJWQ-qWcc6VAY!!(RvE^aXFWsZQS=* zPJ%uc^ZqG}$AJc(n^+2i>hhPi7atb0Avn0y5n zZKoaiV0%43F_biCI^^sHYult>QRCEXl(4ke@eEV(VkYh5wa4o$AdrA(!5+T6af{@` z?nM5Z4Cjy;DhCT9;aj&-n|GxM6_g`=;X2NvU%fS}(BJ4Kh8`S_c6A+%bOYL3HQHlR z1;w`mdsI$96!Q=LZ#3g|!h(VVPfaoe38Zb$E>s6Yh(rVs=FXSuY4`lM9W`hi{Cvz9 z^DSTc@F89~Zfnk)eZ>@*6%IUr^UnL|GS1sL!0{1_ca@rLIIQvK^X`$?un(Sr-_=?wRv4(!KiXz%kJc<(ulb`x#kcU<01rkL@}g2<>i$Deym9>! z@_fT^FJaa}KF@v0Y~ktY+ewF?LdQQ5n%)IkcM1IrI?EINl59~o7q{Zu(>_jlwT259 zqoA9%4vj2$Yi7;CR0L&BjE*00LeeAKN0l%m-&PwHCvL+HOu;&bRs&X;O!n@J%ZtVhqoq1Z2Bw(#?n^ghTH zHuj&)1}aEZplqp6kR5trk4-MCQ5vG7E+zQ$K`@A^Pfi|x&^=%HscKigqS^PKs)-<$ z!XOILWC;_-{0}cdMfd+0*}w73|HGhf_DT`(0}u5oA6l7GrVmVu`0X`bf4%W*1s-m( z*;P6z^TVlsVkOEi#))U%46UaE0yt?A`AdI6Mu(O3pYVTy!6yw+j2ad9LISn6-H&7# z2?3$jxAT|s3@A#{P=Zq4rq5R_sc;!M24kg#&r`7eMPZ_5P~JM9GD@)jOPTiH$O;n* zk1$c8PUsx<)vH&c_p86L-G4YOSPr&F8@Wc!0_4(z>f}s*;907+yt1-;{&sQ>s9Dl3 zITvGRXcI49rQYSWlp&X!PJWPo-Oa-w06oE{KC@>z+&_YyofE>reU{1 z?X9@))fzd^p8zrz9bCP&pGmR$WiC?vl8zip4bJ1=vsi(i2Gp96a$3C~V_unUch*y! zvRe&i?hgr3?hrwMLyviKxHN1=`%DprnmjYdCkk(UXcwu^sxUI3`f^#?(w5T{6Gk{x z;k6c+C>;G|M~eWVZ}@O;68uyP|Cu9F5MoCvIbUce4^d_%e!`@kbRNaNW9Qiz*_%#juCBOql#4>aBW&f9YLiV-~uDQ=N1G@iP4w4q$ zaHVwilDNb*(|-THOz_OCg=56zk#Lz8!mQ?bGF5%ZFyA`ra>pQ82VvGs;P(PrHW{a- z7VhV$`UVox6>S!aX#KFD6fc`v=N$#5VuzOVK6f98QPZdPbcIvD8%xl6?^Fgm`^#nr zQi1ZqvZYX&i(}GHp(ip6+>T_4W8_T#r@i+IYijGlMg?ht2#SD$6hTF)DosF&fFK~! zYiQD2K)RF=5XFLsNE49WONi7!D4_^Q?+FA#5ormblL(=lxc9f+`rVz2b8-Iv%f))u zlQqj&V~#e*eCJ%LZX0Pm_SM}HlN;X;H_I*MWL}j*7h3sRMYXIL}`!F@K%V?@7|)Z60pu87Kbb*AZ@IPxSXJ%e7AKSe*= z-Dtg2UE>@(H{ZM&yDQ)l80w+evCsG+ZfSNZH&1_2tuz^YvSNh0wcoWm4XbnI+32+k zqt=#J>0sGU`!#c$K2U!8L4Q@f{|=?AM)My5C>{B91oD;( z1PKvB@j3@7qv*60CVB&EyCx579T)iv_`!Fvdh=28_s0O+HSl>BGRT#mCVGspE{mUH z+G$RiQa{VecG@oE@l#Ptcx1ie>!f_9h+DdS;;cGaR!i7j-Ue@!Tj6VqFq3Pi6K=OL z`w-nl222Q{V)xv2rlLmf2)01<{Vpvq1}MpFDI`igY}KY^ySy@?v(fn?hIhix1JamH zez#waYw$63gTzbZ^fdiLt%sixgGY{KT_2PTEFp<=ovHSQ-t=#d?{KM2++H*Z$iy9L zRLJur+xST%EVY_1OZ-T}8?pT6%Z$V4%^@N*8R3p7OAWKdL#EXT4Q& z^DUUlON@fp7tFeQ-)GQnI<>aQBIu6K%+Mlox~^X=wcKCtX&9&Gpf|_8JQro9R3X z;b3H+Za2{J^oq}3yl4!~r~7iUPKVFMl`pZoWNA8tH8q!ZudZQczP{@4Hq5`g7b1Vz z#|@S9E%uVC%dxsl#oTY{Y$aOO4R0mRH>*YrgMg-ZbJv);!&QsYPqC4>C@DUL@i*&6 z@kfVeSDR0Dd>+#K+5;Vnq@y)+tCo-8gUje&ARX!>ffSHZ#z0<%A6IDCxeGhGV=2aK zEP}$XKHxrA2IgnH9m)UIOTy&(ESS>u)djY5kv1!1zLu12qhEaxxO_GgBgUg$D}SJB zc1X98)=O(mRj)(j&gcEAw~@M9bYZeEWcF?%jq{4K#j~M~ivS(Z&cdpMTK=mnE=)0z zw`#dF4i;~%`e}^c-!i17on)894Q7GUdc#VQQ)`#^k*z8sv(6nRlDs1otb>F-V?c68Bk#Ba^ga!6^Ta_;H@Te$TE% z!6ogis^`N9IZ-JJZL!PNAL=a!T=zB{iK@{b zUqm8ATN%LnYHK#a8Nns23F=L)Uif_7ewFU&(9^895dpc#=ej@-;80r&}UkSJGkEPz6r3viq?2`W~G@O1It`V^t=F|P{ z@ek)v(QDm>a}F+t8<<5SQ-AuK`3i5HceNH~X>-|~V@?}{p1bF1&)e#KItD&_3pC!g*OWxUv(a3MCjc{nOFzeOhg6@qK>u> zOg`!{zuuKwZLGykp_9GsN>qE3B#NNR@&m_UveV`<3S9F#;JIoynMwU3m%fUI%B9*u ztX7}dl^PIBDH=v6XnK~Ro6jP%@O(SXi)>yIO+dBib!Y05!Z35;SJ|0tJH}OEiJ8}g z=cHcusP=-U#kH<=*@r)L{E$4er{w6J7_is0^srxiU1t48|BP+5yp{kB?PmsHzYrxI zZ`g^S7p1my4}^q;g`+{S2j(()u>8ZukZ$|{cQ$87E%`)|fa?9-7$^4S;$*2ihEK3^ z9*G_oo;v<$LN$mCxP6hVj9(H_wDeh9D-nR!Yshnls99eHDy1zbN>Q8Huwm%lr<1r7 z{)M)R@m=ma>Mh*Dr$9}FYbktK1)#1arT$OzSd+|YQ5l6=TNBo=k@`ipb<`zmH+TX$ z+0AYW`CSMOtg}G^@!OIRKDsk`eLoq?d}G!irYMfjX@mP83Y9X$=_THW5e9t^`-v1?#~q*PIX!uKGe;KdTjS~hh-!&)xGqnFH60MVYl%X>Diy#B@pt02BGyg08|8LF|Muj12l>*z3x;1`8B_vsAUe^+Y_FU>} z@Lvoq>|1YurtP)A`i~tTON7LU@N0~jr_WPRP+|3WiFM%|HN=3Rg_JW3-ka;@MHFr9 z*e0Wru^|(Wvj{`xjioY!fh_UvzP?Mh0b1(me9PVC8w~%546_LZCA!u-?jq$T`vamw z$-*tY*0P<`LJy@V%tTVYp!N~f-{5ZdfB*ptButnM$!uoJ;I{&VB=md4Q9ID>{H3!zWx&uO3 z_175&lrnm-q0(?1kX$ID3TE(+onjs17)pVs&%8V#fdbhaBid6M2f zxrs9-R`(mr;k`VQ|29NFHR#-RC8boQkP0QlrUNG3_9c^Cx{N20sE7D!l^)m{p{AP72)889kAM1*GlC*VIP74) zTORufBV7CFdrxSi(WoBm?!hZ#VUSYXyQdFPkF406z%b{TYuY@ad27O02x;v&!UN~^ z322ddwNY#YNZQBFax@Q11-FRQ4Zg^uI(z)xtqJbSpn}9G4 zwu#QTbf!|{ScBI!s}otEtE`A~8*YbFLe=<>Ze#DJCm!6K=KtGwoS^h#=go|klex&p z>=eGUejU7d2bxsrw65TNY{}#fjopUus?##q-9tlpMo!HiXS&q~=x)DV#Eu>cVx;q5 zEDoS;!kr=?rM`!tj^X^w&)2{v+XVZP9c^R9sr9ArQ~2*hggTf>UE!rUdlUIi;)%HH<@kmdI1eJw|#(PZzUtIw7U zoVX|&L?~lqrPR5RqawYFx+cH*s4!q08ci(IUwj_gU2)FD8m5^Cag4-iujRbf*+sT7 zSvdj6iQ*JU}-!tU!PBpebPQx8kF76vv9o}M0*|=vDd2A=|XfkLu z-nIKSQ5!gLDSNmcW@^16bB5rvOCw*xc_wh+6_olLrYS`rYF&Zs~h+cw!lg{oH$6NJ-epa zuc4{8Ush#%H$8ZC;1G&Eh-HaSuq^d=F~Rceu@^V) zMXLhQBg*rk%Y0wy;}~mq#yR!-hXJGfwY5(X04M7gtd`4`NPP0x&~2??0RGXM?tQ4| zi$3wt%!>sYTE|B<{UKA7YZ`Wx;hsS3;#DJ4g_Z&Tz`3J|vp#a>IDC7q9lB3}Y1p0l4eT|h#~=V+ht2C3x%vn9 zf{adj8@m=*rmhm%g~W)KK>Fwg3m5SWxRnKs>B4G>gr++|3UvW=aNaXgPHC` zKFJg#9+;)Zh`7?=f1DaxaJ<4ze>$&}WuU^LWb}AR;3Y{vHREZ%eCy(^Jj)>OQLXR= zIV(h+-)9=_I(??V8%}N=Q!86KpGi+53?^RmWy!2nCwN#K$#IE4uA5plulC-@RJ30G4jURDH3|-=H{pMeH*h9 z-wv>!F}HhPi0N@%3F=Z)O{so(XQ%LTMnciPOVTxBgMQk&W!XIewR(x#eE8Vssi4DN2J>}#?*wLbZqcd>DM*9^< zFWk?y7{J(rKbmlU?7dYbFM02u_>&{)1O;&3RZKJL1Z4u%fjMZNHKnOPUCw@_igv9O z!>gY#{Fvq+zZ<4x$1?k2z5{6+&mK-sS&sN#t4tF;i~4q8*)3Efuy0?Z&t_Q|o!Ne! z@1H8noD@OMcJmJe>3H8OQLull(Y86VkNy>3zP~`hJsEc)!2A9`1pRF~3UkP0aZyZM z`W55;^_=$>B~{gHF9DNZp8T)p;j;A1gUGY*`~DTAznVG6PxhAoYy5v~`PUzj@BSw( z|0t2I==;P(wrvRw=6}^JJW_Zt_cHstipyb2cq)ax?{R3zSMz`E4c(PkCG*FRAG@3z zds+N%c>mX3?yD0?mkJ)J7-;{YpS%-Pbk1>*`$bIuScShLy!U)$I&KUP8nXP`JNfQ` z6gjxJchkd0{IU{1i<8@?0KSos7*qYjQhd-33zM2KkKg~3lpB0x&F5p(mi)sagxj<5 zW@^{4#~%)BA>VGQYDY-nCz0YH$@@fZIwN{BwOCReNAcP zLg~kJ@Xr9pY_f#nMnA|T)qfRQ>kx5_$*9-26o8c0K<15L&kmls_UK7JL>TM94TZc* z+`a^%*W0MYjIGv4=!1R|I@$VCdQa+|Q|H;QLu*qAF$TBJh;S0pRDA4&sF=VR*=^cBFi7WRzMbv(E#K!xC(Gk3jkiWx)wJ?Z}7H;AAZ96WaK+!AA%cl?0Mc-YAN~!7RjPCjWu6OAp=b2)de84# zCu>!w3=Xb?76SyZk*rQ?UM01f55YQ6nQGIqzT=}f4#^;uI^O;a5`3T7^srLV<1zJ~ z73R>j^wAh=S?vt!qoI+Is+)?nxOOTj3<))ZEa;RXQ}SRpj-lek>$l1TL5n=k!>n=a zmctEkrULP;H&QGoIj1pB8+h>v^|B7Ka`<;Zl)<=c3l0r(4Ln*E9!zq(yO=ykoGuz3A7E zciVQk_o@Sj&PSUHCnyAwx2sHCQ-t*(iMRz$b?ggW_OhgBeLWY8l9Tn>vHmg%w4-%YxB@qxJq?&LLC2i924>M|Gmfr%tN}V5}lX4HE(J zlq8s#ipkVIEd=5Du79wpxxu^W{*iursC&t1KBMLJO0o5mIK~HM}JYG?8 zs1WbO2wZ*_^Ga$hXtNJ}aBs&>5cl0@w7{oCw{^>b8+s%<@S&N#KClK+H}CDUp-cxm z?h9E1LSpXZ3$3Zh%>;I#Y#r!WN{^ z+J|e=ZuQAX1&WLtK{8vn_nk?Z(qivbf$vNL_V!ypRUC#MOeJ*_B#CuWF6l@_Wxwbq zQ{v;{xSA;_(Mpi?sc_jQPZV{AHAxyMuF5pY?(5^RmVIo9xwmeVeHo6bTBq9CdrdZ) z5+UU5W!5Y5K@hGjQ16{D2n!u;fOc=4MnteZZIp3t^nfTbA_jsC@(k2s%(!J~LX?%c zBuv_#Htf&6B#%#oac0XP3N1>oTjb2N_Qlz0} zE${nhU^*IhX3Gt-A;AjQ12jGxW{U*-7d8gmb}v|2nbAA?<^uQo>MLUAN^5)sfcFPk z&TJmvV^ zK2SC`^>_UkEjy-T1XOD<`K6WBzeFclHzjgUG!gx&bUH9J;YG_4T;|6oXkeA!O>gbstSe7p}xF6CV&}jXg0~XPhTC7l{+g5+#xa)oGkgMkRmPD#A!({JFxfRnV3K7@K8D<2taG-1Sw6J66W`Z6lq zs8RL)vCx9EW576ozmyd_H zHTT3cwviZm9+d6mnUNdaKlIMUdb2)7G9`{vp>GXxroW#S8JA1H6r?1bw z_SaqujTTf-+C`o0>?cJ)(h>#jj_XtIcz*~IN$meT@Y+G>k$yO+>*lxoA=l##`ZQck z`CXbbmkL&I!CWTl2z8tJd#4eqGFm2uFRO>%=z)AE{h_`K;7dM@$nj0*urY4vbjIvq zouE57JkdhZOyO8PMb7ubHPErD{10*V)uiP(>GYv5(h7S0hcV8Y9ij4so*|CG;4ELX z4aRBL*~8(J^BGuGuu{O$7a)u4%i?#E8M24H3EF6@s)1k#K|R7J0BH8O`187 zug@J7hUBw5qOH3r>?D?og&RquAs9u_Tl!SdvG~eWu`KY*YiB-Y?$$WYcp3O^O(#is zx$>T&UsMD_LhD=#y{&vGb|A7hAWC90@+Lg-Q<>8> z#zVMz{E`P==yOUP%hPLA9NA%*%C)liudbNxXB_O~_Qic&v#s(eJxLj2XAs~!;c5Bv0PtkJD)4MuI?YD zY!fY8SS*rE88F+kMlC0#4I(-ojW%R~%eiq)u7EVa;)*%K^+iH^o@FV>pD$hJP7ikW z)b$eULQ&BeeoTy}LCT94m+6TUcidajuwK~#=AzJ2FdiBVQI~yU%N48k*#jmFGPJb( zod57}V7NnrNQtVTW%u8HCCpeoh=1O)}F@qVXJ(v(H@J5Jy?5?twiO>15+Go(dsNZcxRUJy_eT-&o;CwMU~a2wBEQzIHT8-=ANV?WthH-{ zCOn9B!(p<^Q5ts@H>2fra1dlEzC&Kv@fGl`{-jB`fv*rhNul~AZpTrycw%;U)&HO? z8moW`q6-!^Jl=$@yz$Y|L*5H%VY#CxQsnU16_%n1F4>iJ#39V@bEjU!1{u{XA{w=} zg4~6dhP6gTpYiD?DnVVMJzBU;<)V$(XC98O#?FuW-DB5IkyLIRSk>(>$=6>mZw{&r z_`qc@ZmBJzKdEOpaaC7(WuUU)t1`B^Dj=>APErMirHFv_(6`uMtm_dRjrZC-`RCWp zgiM$|=Ca;SM84yaaP#(zzToqEHwEpqB_=vnB*6W!dHF4ElDKhDWcAx!_Qbn%#SmYFf-DPXIc1Aww0tE6`D0^wGO#jax&b(xqV{|>!>P|k1ugd zAbn^L!dijm?n6L0e*7-Dn30gzcZ#G;vRkkd;GchxmzKhM=8~n9!sOMHo$>Xh0WUQf zct(F{4AkDA{yyAW72Y;w_$dPlI?~;r7G8fju(sK|r2rLNx;TFONkfp(h^HP_FKPSrs_QY3 zWM`YC2AVBfstj)0621ep1D}I65F4TC!T`cDG?4!+c#mv?KYr^7qdCbF4!gk%^lpg987gg zzI1(-j^iO?M<{ScsdeU-_@fFVroPcv;oE+#?zZ!I>g(R}d$zR||=ySQarX`%p z9-8F!!Na;znH)D;f{%737;8s@?ky^0yU7J(Ue1kS_pd#9V}>$ZJs2xvK9xpSVAiPI zn44fw)(B90xn0^x@C8n9NMr6gR5=2^`V)t#vFFI!u|N6G3RQM*yWJAFaN=~6???1S z%}miYiK*7R0bK#SHcO!B^U_H2XtFmE6(*mO@hx;J3KT+U$v$oFmBgkp+HuD$r z!RyvzB5YT?&;zo|hj%nN)oz&EzrP^*kP&#@GcbOq?UX9Ga)RbM++&mIJ5U+d0J^+y zzV;13qTgFCK7Pu&Zdzp3hHsj`%p!TPl_6LX_&WVyVJt|JujNhWJ5p%&0#i57cGi3^ zaB;>>5pIz?$3BttxP`h60!$4uaU7r3+!hUYt}eNn;f|)$!7sSV~n&iAwOh;Q%rJ#q9?%~8yvgZX7u}s|mCCX$`0PB+ z=JiJc&KjA@lJ5Edm6Qxb`K=B<;+!o4-YGo2bI!rv4G*%7*HZZOWI;UXhkvRfdVf$!qIy0n*AG)9REGY?I7wRJ; z*!?m^tP(P&E!&E&w2P0)Dy?xEX9T6<4YnG*GwQ7#v0_3Xt39vArn9l3KT@joW1<9H z4hQxF@3o~sA|#i;D1Fog%E_!$wfmnUzG&&muoR_Wunsc&c(z-vWPYXQXwo&n`(+`8 zPwKSD4%AQXnfz)Ngc2&6S?tGa9Xj%ACVRcp<3$QumvFVUTcq9>|2kYMVA9YipZu2< z=K$;wRxpU3ZRya7-qQP4W_3=cGjFkQ!2t-wb_dColamozk* zQC3~l73FwqVMFZ6m{E4&yggdfrV-1~x*j}{Y9YNVN;Z}CntHIEfmlrXl=jp zk2QAcjFP4*j@ds2=kF%&S8tDD2xIHahmXoV=L)&qMKVC#U>8J+B?m8m~xYfZ&XGf zPUWWU`768cncUgIaJY^D_ED2^4O?|X{+Q9xXAv*CEtaB{u)|Y3Uo7gy3}rh2=25<& zPPcD6Lb3@$?U(ZpQz6NXjnt@6o1}UIl(&_`Q0fc#wLu9l+(2o%r9PGjC?!tZg zyH6vYk`xQmOHibYu~?B6*=Rsw3G?RFS@=(T3~FwEPrgq-BU%p+*2zh%Mv6bPu2Vao z8z~hp!UIZ~1TRe}%n?d#@l%^wP8T4IGr?<)(G?`LfJkizjZ`m24yV zTyeFxie*5!kI|fjLHjfCt;91 z&y`NHULQ2%%&KyC&2nK_q!!a~&%5CR9XkP--X=72917?d9Z&kK4&PlrJ%n?>Dulw{ z1%_4y(TKhMde<{M{bHcLO~f-3pakj_Z|!|g%r8lK3T_l^41(4$&+7 zqjp&SlzdLfDujH0duoMWPh-sFt76fR(+^`8==ywGLT!rCeF#J|uAQ*3jtXM|6x(1V zqTl>5^;RJIGllq9uSngqtG9H_VI!Wp;+C}9|Cyu@Zme4Mc0wdCyag7YJ&eGOoBgPw zjw#XNy(TJ@LhK&{7J0u*F4end;z<|)#?SY238Ovp07=t%a-l9cr|O$0v?o}q7ej?~ z&ci5L?p0C>86TKs`$C;_^ib_8gJkDI$05Jl@k-F1_~OW%hh)!bsDsF zTP~U^pGrV-e`+phAheM~%FugB~OCY|=6h+r}raxaczcxnf7fG9ym&bUUEox)bpG^opo_ z>Zh@4fg}t)%ST)&axk){0R@aHT!z^JGoD_nHDfOs5tf9GM)oWOuNZlzP1w0t;b+m) zQJhLWYIOaiP6kamkndBQn&w!py6i^9)~2VYtcs@>1x6%Sbxh1TsotfrxPSll>2gM7 zA10ACCe7JJ7Bx5n&S1P$Z9C*^=}Al>(uX2zoyC{t6nj!?j1AiFp5&x{X9Dy5emc;c zMWypOmy?epBl1fyznDzfC+&8L9#l@gzn~WMz(0JieGlN?yIJXLyCE)smVNC9o2+vk z56BLsN-#?OD=djP`yZIL%Reyf)Wp){6%3BG+ir;=oFX;!a6`~?5Gj{1*aQ*7qS`!n zX#(gW(o-~n9Kf6l>=XQcWi@*573oATq>G!(1iC&u@+KUbPbo6LT?7VN@s}kpU;sjC zWikQ8u{hL(bEMRpZ}-XJ7Qi^^r6MuVkL!-mMq&Ew{+iBaiVVRyT_E7)o7~dMm(EAp z{J{5dx=KQQ)-`IDCGafahO3^;uOQ9gP(+Oo)tO~$YHQcc`~ko9+2W>;r@nJy4|ftc zxvm*rLvcE;1I=b%o$eDmHuvKo=lrh-7BG+Z50^Du|9H=a^v0pYr9LGw_;vksreHT~ zZv#517`rMaT0>gqe?)w?S8H?CT)srJAY^f9^6`?jI#%`=x_WMLUZ~Wgu~Mp2p6@yb z&?peuEy7ozD{F-3sn&$P@h>d)$hs@E#u9G(f&lAAPWu}@RW%H)EdRwCrD zb@^<1iNY``*Hg*l6ng?0BOnxe1@jg!)r=gR#1HXHMOSmz+@qanL%zTFq0S?AEtKvUE{sZN7WmySA z5FG$mWcele*h{XaDxP=^PB-E{4$Clp&>HlD9DXdg7 zH&2-Y{|nxypwc%ZLn9IZ8E|P=3ikedp6S98rMchKtuRh0P8QhLLDpnu3S7q6+{=O+ z{1=9-w#VN+kB@lxTgeBxe}kF$7?h^zc%N)g=J}5%Uix8v|0=EFM!Sh%jR}c8y_Q4f zVGHLkEf2rKMuuFz=1eNS3Jqg0O*Lf#8gP|)=JMp9q}6PfHt3q19zFd_n|a}6{q|*F z?dbdtS-d)N-Bo7mh=zmkcttd!+e{?u!nuuSCb#}U;>y@>!a&Yz>1&f2G-m#3pYLBh3HeUrCo1X+qlV<4 z%47Hw6;;hv(DYlwxth9qN~X zX3EuUfM1|E#jTYVqt%$9>w{JT*du5y2m_|_QKXyigGmso{tiKtX zpE~+YKv#?cVsdaz<4JPaKminSBpV93_vjCbPEb~}6(YiFkoRrw|Dk*2`e&@d!U(f{ znNlVN-IW%<7TT<3MlkE8lR_eRUMYK{KP!hvUK_kgiH3@NJwS7>&s&YG9zRBU ztseCpbqcQedaa_YHLNG(%U_yhOD)Hpam(euDP7h0YU?-H8rg)LVtx>!L`tAewnp=Z zHXZOWkIGUJ3o|@J3}pE*q2+uXe1#&_VSC%>(t-|PW5su@b?~qqP~wvmhEKn3WBQAA z9H~mSC($R_dP9%uMoV9$ucGuUQ_W5UXR6lK6LGIm(k{kpv23F>!LB$#fGq{&__|2b z>S?ase$F6Qv-I|EW00&1POyjY2k(@Wsm`$vCZZ*qud)q>`hQY@Z=SD4QUFQc6^Eq} zS;rp7mR#l1C`z<4uDY5pG0`-WGbH3){rSBosY^jXEns@;`mpyg=DP^&`dA};VeQ;J znZQI-u?=>lklRSon%-TH^kMcB!I&8x)jj12eAiHS}$QRS3K^0 zHjyv8JI)83^4$J!rhQQ6^`d~_Y~_1*GikUiV@hyF_D$TC;cna)Lt?7`X=x7%G{r6E__9TVh)lNZXPJ?~|)PQvpmPygH%j!dD1+} z8T7JbCv|csZ7+2fyVf>VxqSnD(=AhhBlOK9zs4fGEUut07qh-TI#1mTHh{dyf_p3n0)XbUrJq-cRasvX2KG&m=Yn5D=TK%`Dw(ap_)aBFX8**!R%SGIkiok%+ z?mcad@T`RY;x@B$DJ9#&Ro99zq}q+O05sE%E#eHv7{NIWz2&T3_gz4CfLpO%E&#f7 z}70xQg3@wQ|{+e%%3{nu=q5n`^z|-UHO#sy?;5 z{ewD=O?lDM{=>}-a5tML(Z?ZhdFJ;)ji1>r)Sr#TJpu!Jnkq8K<+D5Gu}exf<)z2t2Dp#6t3^l$3~6WuE&MQ(a~E5E2H^>V z;|S0!((+SCEzpkm%~&*qcpFej00+c;B;(-V!8S~=1$A@?strqt(obEYdEreQ<0czMW((}F zKeXnJJk)=_vmL!0>gCe2`yIU{0n=t|aX*-h`0pvL>y7udVMx|N23L{KzDW!ui=CBg z?Cvzvfr^&zgFf!&=D$p=H|mDy)>JU)GWn=nq7{IpaJmaNK>A)yNmOzFMBV&uMWY|_ zmQw&<^)TEnc`e~)&aEkccC)OBPUPPHZ_$4q<_Et08zlL!W(I$dBU4W6R6W~28AQQC zcBaT^o2l`FbHVRKq%l$it^imv_{q5J-f&{4UDbbk=`fRP-bk2*WK{)9RH zJ04fk$P)ktlgq}yrHuL3Z;FXm#yFiM+c4|?hKW-<@;#ne!)PrHVRH}NRx zGrLW2h(p7SAH(Webh!ncDy2(Rq!REEw7G|%Zt7MpAi4bi$b6yDS@Aj&;KYyxm-xN9zS z|4t`!kLp1jTErkAhn}=U3$v@C=&;h7Vg(PieV11H z5kLI4v_|cs&vD>GhEc0n(l=_DRH3mS)nnDi5F3k3*qK7oXHxbAHk+6Om3q>id;0jRvw=v@**-6wo#Ey^ zfCHr~^io+AS31tN*kKtp$3(tW0Q=7?t?IrhF{PWfH~>@bzwWJe!IuIPRT5zs74+e% zAgSV9Yk0-Xd}E7LAZA=*#^Zbi>MFs0wF9sqjoh%B-uU>_&3+48III7dv7(1Om;Y00 zDDrc!7X9bqS}mC?Y6`&#c3!5NQMf7T#UE}jmm^4w6~BnJzV$#1msU;RM%DH2oCNQ# zD(~l7l|nm1HM~ri@qu7BEy(tE2+9%j?|!g*Ks?v0E{*PLoRQM7z5Ot9Zu+rXQ%g^4 zN-MrQMQU!dd!#fQ0PeX)P*jDUq0SzcY9b(o!>i~E=!o^v7F|C$T~4iq1KT}P`Tk?B zqsY?W6i@j69@!8KcKoZ7)VZji$;bv0LEUF@`AOC~ae{UV%)`1wn(ir(?#(y7M|#pY z!ms#ybT1nC!NL;UEyu^)Jalc5|LP*-HIuK2Fdfwe&E=JDfs>Th)+{Df+(juspl6os7 zbZPq9*z#JN6}C|#_kvd6l&fFE+KdK*l3L|J*+@}#8&Ozqj7k=BFE_@VyLGcWvJvWa zTSwD3tt-cr1a2b5tuA`^X>{`&5$xz%6l}uio@cJ3TTIS}p*b&9=7Iv~^a)D8P({dhl<@d~Q=iq3+=8vs) z00Ny>@1t*~0_`?7--tEgl#*_wJ~VrRbKk5SuCTH@?oDfP1(F|Dd)2T!Un&FSQ5r8OCTVn10%m2h-(VEdpXloKlV>*K z{n>Ydf*E(=BB913K?H@(0ow9`pNlOTHdeltmS^rGRHn0=dxfu}54s~Cony=#_c`rI zqdE-b96eM(p>It4#>F_ed_unW=B@8ekWSB?(NZsjZ)_=nG)!ya7chtg?niJ$=*_2Er<$i1KBuiK z?d=-XnezyZyI=xXp)(XrX5&vM+uRP`vZ`483I0V^WuArGKL9R)5B6`;E!v{0 zhCkWqY?)=3Na(fDy=XkcH$fFX>R?*-%cQvZEM=;32)i3IctH+hx<|74PHhA=-Cn*P zgrRS>i9vJ|hee0sel+Mw*%W?#rCstoS0H{X*%4J}wcb`V@-8;XY3rYzvnfD`z-k|! z4$90XrGA7xHusx8zED;K6%?EnV#fG}0kcAzM$Bs-=BUtST;EM8t#Q1kf$+*953RmCnFU*|u=J5Bwxd>h zWO-71@*P7N5R;Zz%x4lMx;KYjuHAQFZ0n^IK{1?ih5Q{p+2y$5%cV7%A?4z;Ji#Gprb31Ew?o#(8#$R2MR{*qmC(6jBcVLEjjDheC1r)?j* zX|r3m%d$Y8Bc3C&ygA7YXdc=X84((WA?n zSMG%xteR0!E#BrnG@gif24LFLb#7X9ExwBG)OCI%%>rF|6`b=K$eZDF8KT6vycWt3 zmvT7sRJvB9c{8%>#<{5BF}U#}gR@7Nkj*%i1~aK*@BZ>)Ug2sx`6wzmy1dI$eU6bZ z4!o&>sGK*mB0zmXJa@t!4(0VhXLK7!`FBps7poR%J$*(Pd?*fs0Rh>cs+py5jaM$y zEElbfpn{eo;@4WU*!NOKH)55V+FNnm{DS5cq*C3JL2{P$r^+?U96pP3iCH%ybVf$$ zjU6|y^9;|J=s;FGqXTAQiE( z9eqPtEfaWqxuJH!;okR^`6C(Ln_hMnRHtETb=$8XZwLP=hg-skH*`Tcz9wV{nhSjP z3)Aj}zN7086|=q^ewSd)<+`Tqb9n=r-yAux{JOf$=h^Ei?`cNB(}_Q`jI0GAAn8o> zRmhPIwI`=cM1@CUeQ%|K@>vOJ4y;TSX&Z@=3}+uR3TwMxyl)n6yl?t*v?FVa9;*w| zy8LNv#Y$bnBBWp7o;hNx>jos3O7Zw{#Jt0zI4I{W=v6ic_R#QVYw79*Gvars$Gwy9 zq}6}Iu<~zv=5GxvO_SxF?R;8y!bt$;$)j7qR2DP!&8Vq$M3#%6Fy3^qQSpR-*SYW2 zCT&`iNWR32vv1Uw7XZN8o41!f0Gq zdpw`+go0|DD+E^6!@5Zj0wECl00T;%%xZfi*L) zbR)FF>BA?pFuvLEnN?^zD8Ga7&IDO30J|?i^`Tt{s zmwyKNp9ai~;@=)#lDOL$Yi}WM+kkCi3twg#=3BVk+2A;8L4P{k9<1Ux4xy%7;x$7& z?fwI=r89-_dcKyuWL}aR=+aC+g}jo?SiiisDcu2DI)^K-L~axz!OOBcoozo;s#Xre zyHN7#eE{DI_2EBK9nQ1fXhn)ty>lW?aiWc}Ocq+^+i89Rdb^M;%+uDioP-&f6iQdyJrf?An|r;bW}IclHWvP zG+z%ZG1l4~{huT=#G80kb~mIJ^pZaS<5<@nne!OvySTN<2r3mjpJz9-#pnQiS3Q#K z`pM>FeYYW2%nP|Hl}Ro#>rWQgXF!!Yxw}=k$dLmUFcX}VS4j2J6r%v%Wim#rLqB9p zP?Zdy4+IBhH6>9UKGt@-4X0L*dMOU)&)}7ld=}eQ!T*>>S!x%OJ)N_4ZzRXi4kWF=(LDaDbj z#qSeNUhN0-Ju*3e70tD#$1`5(UAm1`v zHkU6ldVs?h87tq-qZN=%fh%Y0z8Qi(Zl$CGEUn;aZduq%gQxZH;)gb&={TuPYr`LH z6^|YY?s}93ETnS7kH2v~OjI&kH5d~ltIb;#!D7SXWa})TQZnXYK)hDhWbL@t){}o1 z&bzQWX5G1*afu-6T2b3Q?v?A|^Y%X4lz+`VgcM`GUKV44CLY1s8DAu*DysI*Q@zP+N+Okwx?#3S~>$n1j!7luruyD}w6xc-&W^|AEkxp?081+)P?92+i zk+V63FL)6(hHTj<&3YTY7_|A>8B)6NiHD~&(;U1MizT`jZ|Ay3`qzRynZWeGa+!5{ zhIJVi80+aJG1MujvY7M>0CVQHdV0C|@XFRN_r`)L^M&=zws!KcjYD?ikUE{SCwwbT zf7#_LufgMcv*k+!^GgK9dpIdeMYNUuq@FZ>VUt=F*S|-6X>s^|ungf1O7Ngp7vnWH zqyD)h1|p;l>u0FVGD18g(S{&`s%Ii&)Pi5~kKaf|onQWPw(<%y!{TrhgjG*qdh-Ra z&)QvRw`i-x08E=r_I=8`coC1&EinFYxzw}imHBtSakoDG(Ixc(>xJQe7T6|vRU{HR z1H(M;^G}z)e&#&h=uBbw+HDVTc3NgJXniI#Qx-rB^o_-MOeIWF!}EVS*-|?Vx{vK| zeQOAiq?}uS0cHDfvgDm2W{)Oy8HH=oJ{G?(Z=~nTrzYo$R+9cjA3*_mz`X zG`gS)HOafGGc5Qtn1i+o48&x4z^gptiiX=*Rnf}p$aps>Rvo;&-b{`uxpJr*vfc$9P`_G` z8*azn1L{5rPEHcvquBJ71&yQ+Gd$aIlzM|74c=ZfRTId*J^enVc0C^>@z?rPgA>Yz zy#PNETQXCZ4d+AH1J0N*HXV?c|Ck@uNdg&l3gLAd(kbpNik2c6qYO~yiKM>3TQB};>{bjy)*Dt(-a2k@U2S?`=3x!{s+GAUzUQ6k{*(es zJTbqfZw(*sww4UIF%k7Ot<4F75zG}k0iIm}-E#}eTbyvU#YKwmo}ksTC=3(8h6Uj8 z6^nbO@++q>Ya9~$vLJ#xoKJV%-fg5&G($xlCKPbY1CYY?AwX4FKjLlwx*-a zBbkhu`DtB1cD9NIdR=ytbK3>n_Lx)z#l0h^U#Yqqv*uPbFmj zX*`L>V~vQ6k*4bPjBzUn^ky|igd17aj_4||iaC3?TTmC*YzjxMr!WyekV7Gx*0D>^ z{B|+VNNfN`re{?iQ&LqB9bz$1x{mc%4~}gQ&R4p0(>{7g z-C&NhCv9mdBp#rK-mq3_`!Vd$q!Z>HQvFiXewp?v*z8$;@z)#*PJoG&E(lVd%kjbO8wEC7Ge-v0*fdiqEtPK(-&0NRq|q2DIJ1XtZcC%}o? zLQ(9R@Ns@!`5A_bJOA(Zwx6j1-@nWJZucrkI9a*d_ireOi~I`+x3Oa&6AZmbmf7w2 zJb^jY9pJ`ny#4MgrkDN3m*)vDnLP_K|J|AN4#dN8jMyC8{xI_q0oz^ey!#to{+;yp zbE(X1cCFuO`lrm~)YOuvxu{9`Wn`&Bndq0vk@>-h$VkD412)M|;T0>B9FuU^I|4y_ za9i_F(1Tk!WY=%ckX1{=F(fJ;8lb(4Pq!Dr-~!=T zvZq>bWbk++zL$0ayz;cibE&UF=rlO7!>IU9aC!>iTb>-j`If&ON}5pWFF06SuTz0j zvj3Q&P4T#_OrV{nU{^-i8sbc-p{19mH(x8PG}{dY-W*jJI!`~=M8n$=2@VR&wnux$ z-$PX46*vtX(X-6png*)TZuZ+&|M*$y?Nwy1RL&^LgQ|?@GH~rdd>cvLx`gEBeSc&c zk)JX1QutONrs)7dTQb*WC?>rBR85B+AQE%HQ^mlv{v_D01~qL{C*umXZz~yfYfgBy zigi?RJK@sSSX*n-jFp<9-WZB!ORxA$EVL`J?#lg@C`l+wmoyme_UqI90dO?8TgANoFT z&7fWkpUIv0_ep?;+K)>7t4t0vV{nuwJcX~f8r}x*U5Hf_+ zJ)XoXs@|5f_Z#a*Xcl3b1T0rm9X(#YDB{Ia<>d=j&wF2g2u|LekYNe zO?Y^?G8ik9TdmMOja1siV#>hBSX*t+jfUkPc116jb2y3RT|~g<5cXH5+fj>EZS%ILY!Prv4HPDuYidnLRk+Bv-Ev6m0v@oiD>*7AF9_K;;jt93 zHoz)F@`kh@?Yb|p=S$K4%I-^ckplzI7h(N*`g|TrM88pIbv=){50Bnc+UG_%yn*Dq z8G_+w&QLyIF9Mgh^3)fz_#rpmU>Y`OeQ^qnpBlQtM{nNGWt>y@eP-A$c6=~dqpthX z;`-qu&VofB!Je3PXe&9bb+y=M&iLm2C-<`4%{cB=7$*?QyV)l7jJc0~NLMHlKn@_$ zTYaA7M_xoM@bzTJ(qj|vr#aV$9%d@(tRnVT9y2kBSn~)ad0-ogKbhE4r#Zk+&hH~@ zv}GJ?BK?QLZip?`BzlYtblSes&j@j$;0o8jh&Z;Izf-6W>2dar%r0Q$_z%c? zBcM~{IV64SF=_SX{-&Nq)xtp$hWtihGo1E~1DtCGqOxY)>UL1=DYk%lBsOz33{bNU z`gjew-$O<593Foouv(r1kd=OwBZ}~(T`!S3AtC4Q$Def^u2VGGW6KwPNx_##qlFgd zY>MwKF!OGOt!DZ?>F<8rbptD?&bU(L=$+2<64&L0Q9lqGnSIrltxUmV&Hz5L+ooH)HiZgy=LJEIKQs5sa|%Nk=HO07o7x3E`GsM~zxi97l@q42Ym0~RUPBm??+n)BTtTI>+B~z0; zub7QGzD|@*%ebf>oaJj+zKM9<3YTiQ^PU25;jOV-53<55-}0i(vnmY4LG~UqYabGe zr_nF&0M~6(c^Xn(p$G}Njo-WqAC}UrKKiCZ!D(sLQO08_b0*PsjE*GaXbfWfiQ(;g zgDqh4%{%iuJ)B{FNW zL@&m^M0+K#Qo$CjDA4UhXU77@yq~=pJm2)BRu6q?@&@S00SFb8RnVK3o2%_Q_u)CT zz`15f?9VyQJ-A&6GpL%kyLd4vg~yT$ty7S1xzZjy(XbKuWBDKsze&$St?>K|#5g9Z z+%u=w8hk418dZ@Ek4se zc6q3Q|YT*$<%Jd3;%IAn8#%&su5o%2#e>p%55bZMWw-;uHUSKuwK=yga*8 zjp(B17?M5|(8Foc>*2Qx@GM}@-Cx&rv=c>IMC|q%$gALh_r5QWs4Xro-ydvGUC=hg zPqjAY?`wYi9w=P|ot=6=I{Qdd`>{QAWCEmF+Z~x$b9H5Fjd!%~+jucU9O3DdR4Trw zmB-_>*0AvvjswRvestg7>~t6yOZ;_oC?;zrhLj_%7xc_8hYbuEi@|&;o{TCz6jc+` zTY5)>j+&jBi7M?_3XjY)ICeQ!8YcU+pz*UZV~Y*(Gobk6;*Xz^Nm0GIlyis%ctqLf z)xP2%@43ME_~*d;uQ3L}Z&PqY1`TJ@k3Q5M z`zty4q%Xe)vW|6;)eve0eWEub!!8Zvp$KL)RdtJ(53(mxg|dpMK@?x+MTU;)u)QB0JaRR?+rNWzn{_xC8# z)M+yb;YJt=WTR~55ls4Phe1-DSGRX^2mhJ0(tHC;G~r#tonRVk?9r`XB^8o@0Tb91ZZOUuy}c z`O2QWYSjsie_)g(&~y3J#NZ5Xhxc{q=SbV4;=TL@=7srE@G>ha*c1B*!Ogxgf>q?i zv-oiYC*;T;-9=Jfr-@yk1K?;$)Y2D-Q$H^^XfIabd5H27iBd6Wx9=$=-R|+Q30ARx zx#W2hwC`Zgc!ki-rfVd!6SWqU@)42ivNx~fhxVv^aO5)gqT}Ex3&4ZJgUOGc`0x)D zc`Eyy=_2j>>rE3y2cXTQ^~}#w%+lny9<|R4F*z4+W?~gcQ0!mg6P*AWap`^sW zmb&G0WN`~JK@>j%@JWhHfD9GqMkqe~k_LS^whV8P#2=T&XD z+M!&+h3HkU$`eUkWv2yml}9v%!&_&p)h|3h37)UD566odSr^MHzN@-!AHN9pR3tX& z4wNYf+tnAp`7+aw8m}_-aooGzanc%zJEn)bQR5|y9cPhA%;og-nD+hK6!j0lQtE7xzr)v1ommkj zz7ehoL~CPhMva8m=$oU*b-oTj&iU?UPx8(6MKC#Up%3vTPF6Hyh-y~61` zN9vQAJT<&|k6Bq#D6_pC{LyvFR4>Z>B4NmpPMvY`w#qqNkfd&#^~l*Amfoo-T%px3 zC{Sf$>>)&N$o2;6nd)D>D#j!>4(Ftj@oRY-FylH!Xf!?R)k6yaE^_X5#vvu=ogKVJ z$aZ95(qDK>OJD&Q8MS!CE{qCOAC7$G;3G7{l2Lzf^>Ul0uD0)cW`S!qvr+?*XG6m;i~KQS!r5pB^|i069nxsS-4=cIZAjM*^+w^hm0ZcI z)~ztA_Ce>X)%p9Cwd zbTs9!6gkAE&>G^A)~(NgpYiF_3hG;ClsA(MV+@oUe>9dVE7@fg#+o@3&lbNX zdzIh?v4=q;2TTr5Ijd{BL_RP^0i~O`71{=v#{VBG0CozDETQ&9eJ@3{YZZV1h4q5s zMtXV$mjt9bDsM0pP172zpQ4TZq+2x}l6Ct}9{RAIH}A3@k3%h}Mfx3SOt#IA2Bn~+ zPaT@?Y5;Lq3z zI3w)(!QF|o zIr)onGYd;}`Ep^`fS6UjdS)T{$^EBn5Bm@K{~>~2kV;?8ZjGpQbS#_Ie&yEY%?J~^ z_=jgp=Z!sA{w#%?{I*Y3dCdrVtD@KSy({`~#G7L$liP$OD}e0FHjRjAoqlA2)y6jn z^#wylzD5;3C_1{exb`M)dzZJv4hzf3d~LUbkB$CU9~#099$LtKGwC4M0r{csQ8LVM z;fn$OO!8Tj4ho~91wdhld$-7QM>%nb)HF+L^*!_N{!|j>^>K(_zHSq+0!)KDb9zw8ZHAHL)wIT`pXKH z_5#3?+^mIHWQY2%-Kzt3NM?iT6;FUaZ55X)KJCHb}c!hHw|UD!M-{_z0kuUNO;rl+0G~z zwQal<_J?eI0Sv)t8sSN@eZLrACqQrZ0J^_W#XjnY#gjon`thtE&48YRgB4{ zCxwge0o8A%e5Z?~CVj;b14>ocKJz#WK9zi8`ft%VkAOpDeOS-L(bmouQ6YP}*z)>9 ziCGtzHgy^?DP3LK+bP_eWgGEU|DwpCY5s5wt<)SGONkhIvq#-c+~}JzYcr3fm48Eb zmvPDLuykjS@YO9y!3yD9T0_IPzoqFs7aTL37HKd=uN})n8^JFrdK*#tN@FLZtpuUE zD`~4Un7i-g zUuQLBYWLO(67ETVU0+)^7cD#fXF-`UqV^kz=8Cr~@%|g-n3W<)W^ri6aOIyrj{2Ws z{r^2)!c5AKaq*mc|M|1Hqg&5%NrHBU8$`ZaTxz1~(;cpOrvM@QRMVuqR;YUSuDa0#Dfxq8qE^q}9wC@fcYRd7e=%N$Ut z1sXDzcIj?K{gTiba)N+bD9p{2H8I8a`CP4U`fz`3&CifY_kj+a$SSAWQ5+r-?6Wzc z;@6afoS~Fip9`_nKT0<2UvUckm<_or8&(Cd!D{=%T~UcQ%r}B8vOFI;g)~SX+x1N5 zmgoTCiSOzkX>Rtfed_As3*WSxw0@D`sRsZHuqtCs4(8mIx&(Jufgao2zjvpX~V!=x`)1(&WHyRJQ=kb=8B&AK*801sSXNNtD{G0B3bxeLtt=TJ^~} zImB|rgImf<`LhXp?>?jbB&NF?PMK6Z*OnuU*2=71q9o`Sg_v%Azco{6QZZgw`|a`h z=g0Wij1ZpCXZDWr6;hX-XTGE6VT&3KOTZ{?2F?7Ir*`W)*1M0&@MvYoHq=`}?dS3C zH)ta5QW{!VIndX>*oF!d!KH z(-wx1v$PnCV|Y6EZT51BFPw=&|?n+^uG-Bu0T|$ZwzfU2HfNgxP4-7TI{a zfr7f;_2P}RVNwhSj&lKYilzcq+1G!b`hn)nNONrZIr=h{ZIAEwg}2D6ZbO6DvRJO3 z`8NrNxs*Pj?qA1B!(|=i6EYA-EFTh4^K&-ijaHr@ z*^A1Y-*9;oCT4hz;N#@w@2-+vpx-o{1K3nJvQKYXW&jf5V6PMPGrK4~f52&z&^d9q zH)dFK+B=Y5j`PtOENWGsC-jK4yZE1uF2AtW@6u?5P|0};&`<0Md7Pa)npemt^SET@ z`Px%aV>qHID=`I|g6n2D$Hu|;xeHbO`aRL@3ex&&v#DA6OUbI`v=F0)y@txd>fpiS z&t)1KKKg4*5!JJb6nziNxK{mi4k>HbUpi&naTx2$VQ+B)V{g{*uvF zpf+@nEpfhl+lz)~vn0Q**v2yH*evZ(HmDL9YBt?_${`*d+yW7hSG1JEGH6oC6=x8L zoBz%t#?8uOOz&&+LkoYj4pg8+wnQpGwYGM2AbL47;qE{KQ)u zG_!igA%907omAC%K?`badd&q0&zUyQP(E-)*d56i{>^U{7Q_Mn78}>cyqzvSN2EHB znKlLZx`vijf-3-+46Lmqprc_SwH_q7NAy^V{i4iX-)GuTVb_x6;AewFI9H~V1smuy zc~sw#@+&^|XTW4(ek`^`{;VflE0oVQS!ZAziPG_}m=(g~4jE(&I#x#Gl2@K240jeo zs0j!~`}{|IG9m^C)GXn1g0*C=k=Q|UOgY5dGs!{ulziCp{3#)lPZ%yM2EPGG$R zRP_5G-ag)G^Usd)5%-w11Rl47LygaAXEbYt-d}8e+$E1_;$6lqTH2Q1_;gPg+b&n(zGbufn9>n4$d zGn^K%@%;*8Wn@+5dLv;Du#(J1ZbGU2Ed%FJE2{mznyq`o8SNd~-tgU-jTC{yuG`DROixcHO)ehK!Ji;%!{6+={h44JVH9BO%q|y|{-z>t(79c`BCQPHaAo@np5igj*Hsd4~RX(N)VX~Of~K^qkz z^W~1ZqkAVTkQHWh1*d(g$7(kg(ewwh7VB#}kU2Sp6c?d?(aN(4Q70IY82cdR(x0S- zSrld42cnUU8$kWxnqG?L2irnSgH8s%`vZPokhlxhFGRbkf7b9Sjpe%q}v{VxoN?|9jz#LxJwIH$>`ynAllb2o8`ruNHd4)VU4!$ z;}`jy87)c1O@rk-JY)8bT<#QeqkczImg)j_u$++h&-kj$VVqonQN4|7dO;Q_CgKXezwQp`(LIZhf0#Y z&hOzT++#XvdkuH)-DTqRS*y*~oB?yU^GA+At*CoN2#U$Q*%(Xw0aaE`fRRvWB%0uR zpijoMZ*+5lpL2B28^Qi6C97F3JH;GsvFr9q0#>n&cXj_zIC)782Y*R_)wq9jI9ael zQqhh^dFT*Lf@Y_sJAi^Qga_V&uweE_3Zl_`dgKFXSHw>^5i8v%Z5<*B%V8g)u6f_} zJ@a&%1{7ThCCPP}-Tu#FND*$T4LRhP@IvoP775-s`YUy>1P$A-N=NZ43AnEb>b-w= z#v@gvEC@4t0kZF-W)$;|&FYzT!PnRSW@|}Vq&Q2&*>^h+46kF8GRn`tYx$3TYm=lm#r5 zB>SPw{&G;=ns5vgNoJq#Q-H=!Qr@N{`50ZdA%GgSqALf-otQGyQS0=+gSp#m_2~TT z=GPUS=;7OFV;=R#iD%`Qgx3u^ikX8HRg?7 zx4nl{SD}JsnaAc&=U-%Pbt3!SzeXBY+l@DFDV5D1D{T-;nhy(~?vtyEH6TpdVXus7?j)}M|3 zAGzmWE&Bgca=I&$|Nlki{bem#SpKry+dBLgjDtI?I>!~l)a?qF`Iuf4v71#_Ggyh} z5~mo_IA31;m&P-OYcMAB-%2HT9KFN-C;XfMi@1z&)boOg5I&Lmbaf-G)WX6d4Nd*j z_v1F~SN^O&lOyD_n%?_!ey#Sbbv}A5_DI+UST;?VDa_i5B1}P&48dBO?dcQ5lcn;p zSau1cAShH&Zr#;{79kxV`g)Tzk04TSt5lV&dZ^VT6fx>d}_sW)AEMFh**{ zMt!)s++DnFz4-C845u=tn6Hk*@M_uht0HTSs5wr$W8z-d7OElBj6c@qQGZbu z%wZ!5e6dro$kTWwoJPIE`lvh~iZJV;5{2{(TncSFV6f!Dx7wzw{fFXUD&g-aI4+R=>j*{Lx?4{370oy7GFY)+DNf}XMnOT$P}^a}+BNj)+SR`PYwxZ- z7bVf=NPGyAC}gQ7g~w(#jNaYx>WAFpmTOpOSrt+m0)PP;XjpO()X$ zB>@{Me6D7}G0Sl`6r4)8uNfYkX`A|PT|ERpG-L@#Re#;~r199Rb~k>=t0$i6zt3i z)Jifw&ty{(Ur()W)Moh;3$ASNDjF`proE8?1a-2 zjLL=2QGZM@r=PUGsVUZ!YaXqk+3(q;3POa)f)p-qu|x~HNRhiFMepf`UG1zt_~6Y< z+vNAuw9?OACx3KtOF=?0y8Q1_QCtVP1Wqg)TLfd0>TtyO!iiAPDdj2|p?{x1CY3fD z`qro!k2CLun?$li>t(f>)7)n?Y_v)&E$ySrnZoNyO8Cb|-Zb=jOa*Ky#4_Wurm}UU zNwNXpwwj8DQ$1=0<>MH8kX5Xy|!$1rZo^ZXZfI#XQ4(K3vbgbM#2-15-BlF#ky|9{M5 zn+n;Drp$Q!Z}9pXkAF9KAvG_?SP)}j$$@PuGAW7QH;Uw?a6tOnEMsey`FB9~FogN& zoi{j`ZyfKg+8h^K;AhM;Ri`;eC@WFx^n2U!V5bRir^yx#yO7LSOa8w!!JN=z)X=K7 zs8uX1hG)BGMQ9tr+dJ|*DsR)C%rXBC%-cfLe|9cNSpf2KEzq7GcNI&YtBax@_)jl> zTly+h;zf%yk@Avo(M&LF5;yZdYPMx4dVJ`lLz*+H99p}d#42j|9s+j_g0nj7?Ygc9?tLes|9(n zTA&x>-~@T|7Gg;_sju{&olaDDlfXjbh+tN4R4#w~Dxo`kxmH1_H2Ts#gXJ!O~KkAtI zTMkO(nU1&c2H{dXRwjeO%)^L~VPfu8^7n=d{}iXzGFEGQ#;3YoCP;wBUG{9CQ-4V2DzLd8}6DDeYQ2E3boziX4*hQ{2bqzB9a zCrZ|QTK8C=iuYKO_lC7|`c53-ZyG-$lzuC3529b)u|Zt*Jo&4?Q??0m>Qnad7GeRU z!S!kXa$@4))<7-d-dP}7rNks1C6Za5hJBfM3)ggOIA9qMfj(3$y>aE37{l*MLEpySDH8Laj$%sNrZNkWAPllh{{i`RqnvuUcv+LI(} z83&S9@gq2GNY<`)u(NM|U1Pwq-0mAV|4MsM5~_OuyrjG5ENk1OzyU%9&wR=6 z%YM7-!{-S{9OGtx-me=Q6aQ{<(l$0JKB`G=iHM0mW*W>aANT`;F!4~OGYws~&P0lu zb3LU`0Luf}Gx5=ky7XFFW$0b?{eSFEzjW5V{OOa3G;PoJ_WssoGr4a#(~i$-EUjfl zM%P@-7=?_!0Xlqr)nl7;jY!TArYh8YsQg6SYcs04CQ%rN7Ev z;}r_iuxg|(Y@TVN02e=*d=uqzKG1OD7i9lUjnVVcU-xV;_;wUwE)z6PX3I~ysh!c;CSvBWs+hswtKYXA ze>>5(raiP(PAK_k*w@zrWlJjp-!k|7_Uawe_{V~(m(U|TTSs+z@~uTl<3HQW!~;r2 z4?;t~j(m-|RlW)Nt?Aj_Bj$>3m&13$%x{di9ez%L*SwkX_M{+EsQ~ujkUczNxB>`J z>RoVlXWnNI3}AM?{rMel<3-wSffTkItXWW>#?V}7%RtY8#&y5!+31MM+UW&;k4qq=mV5SN3 zE{;L3g=f$`5;wl^`7y5?b3LonSpu! zsv;F@`SsC_YxK5cBSG&}*Sb^1qCGiY58qiSn*WBcl!%nr5qF^tV-;1wOJg_ISIU~H zPFhLQD`)XbO)uSN$~sDvFwTNf~wn zsmZCkpfu={)>1%xZ z^~dt&XvP4uG`)WNNC)A;pW{1k#sVF&)tPfom-$s1rnXOkpXV!YqNQ3S$`FqhgmFZx zUaZn5-QeU=k^NC5*{k=W7Oe|ID2@_RZpWAq)*Ub%Y|w5D`aHD6kCZ%dFO($P3(Q}F z^?J5DwF;Na=zT7#ae5F(qW8qK~{6QQB{WN0I=yGsJzo+hc2x@(Wm}X=Fb35H~I53K~S9IQ; z^-_(;%%-TM*Z-pJJ;R#n)^1_-!3H8IO+i3FdXuUkMJXb^*H8qcCm(KZ={He46g;iLp$<4n^XLbn4^V?eRK10gg z`)o5-@cvdUT@UW;tybEUP8Q@A(~Ss}tzsl8Kn{?DuOjhqpTNv+yn>RW+|BKSqDL@1 zIi=e126zXH@=aE6fC~xrUG`ZfKLAWqv!5R0o!>v+Ow2GNQaEfjQmZ{DBo%|i5}aj1 zplBDlaOmYS<$GQQ#c&MdO|CcXFlbd$>L1US=bD)vK1N2-&co`19yj*_K2Cb*vsWAi z6uUVtV6d{y{%|gX)|B9_iACjV5(j9~X3-pnee!jG@%PP^xFA#R0NY=hMCGRD1Z{0l zheoEAixVm+kT@Kg3`L6sb1f4;hEu?=Bt0Ci)+Su$Jx=J|FMZd8*Mo&OLgzY$JU+7w z!tHM*zkN*g(%yqG3Bl?wqDm2@Bm5Ehm+gZv*k|tNqi;XG?XrF5$ndOR1|j=x+g}QfZd3BA%vdDjQ{sdac<+jM#D^jrGT(HGX(!s# zne8jDmUP|GnjM2n*tP zU$08n={(NrXbdeERG4jFj|{XbVY#Jh*f;V@m$x8(3o$wlqXqhxw({+Q&at6haD=M( ztGD~>(WB;Ge_P*wOeh|{9+_>?x_O0}Eu1&YTI1$VqAO9Qhdj-g?T>!etKf6x0(Y_T zakxeZ6shR2pOnXMQlIH@@GjQ+{9*4D$Cr)GILE>2a2?Z1D_^Jh`MqjY z(3{p*B<3;auOQk_J8m*v^UM^Vr5GM%36;5BBts0Q8?!?e>3u6iSE$?oUxb7ui|DPuq_c@FYILx(vD7v?Fpr<(8P+W?5e7PpK9P8J-KjAnYCmAo>}b^gPFp@{mM32{9a z3WMEGWw0I$G-K>xQHQk^?l=mJ0%avl6bRzX9jU8RleEV?rSvJt`rd~!az(zRpgDYT zP|XpiLQz;3vQ?ZC%4YFUEnh3o7Mw*;zFWAOQ%ctd4U}(*)0$D1f`_x@`71QtjR~*M zpe!~L>K9R1EtwJ_;pTWDMe9`~scvw?1Ib>NORE$gDV(Y5Dgj`Qai$8+d)+W(qcq-; z0Yn<*7O!R>59{805vFh+U5D@~_Z+a~LUu_L{fd)tt&hyxbf>SLFbQ{p-B4sQE}Z+c zS2lE9`2+U>#hDY9HhMu!VO{SfIt3rg|mMpUn;EJ$FbRGjel|$PJeSE`|38$$=Db z>NJCVBroc;3zP&urT|0fn_zy@bjVPP01lv2-hHS#$E$U~grc!7Ns&G4nZ0nmI{A`< z_#I6mL46pzbIGp_WNlJXi)&|K-e&~F>+r|XhA(zDH+MnOfL-0<%gx4On#UeGl^snJ z)Upil_Zs=@y;|kuUheSz32Q;|4mt~^{r#U(33aSlSapshwlH&kvSLC(ynEDaKtIX^ZJFN@-R%RMAaJdgu{|x=HSp*OQFaB9CiPZ+fW%kut|AY{+7NVVoJc3c0 ziEPw_{H9+`y8Dr4CwC$}s+gO+S0EWuU)fd(pCSzFotL)L9gtP5d19}a#BD*r@vyO-7WZxUSY6L1QP@Shw8B!36O{vL{W-3+HMV&Th;fq`AI@sW#pz{S`-yz16_GK z;e?JE>v8hd)lgM+DjR2-NAykEw0=f47<<~oi_9tnRSlmGuZM{Fc(i3b_13CElu>NY zCpPMljCi?}8R#Y?}G2d=-_qQmw zplGLcB7Iy+#ld+IvXpHHZsL=ukmCesafD2TF(1|&#ql*HX<{LIKDw#h)HQDO9?=|N zPPP*{AU1r#QK8z4EhEQlsG_KPP?&4)@S9nV`r)49>Yk^;(VNwiIiGPS4x}-g`C!C`1C#tdRB9%h8 z2W@|^S28~E1*VJ?*>o3LiY!!OEY(>pf9l1Uz4MOl%+bDAhuaJ&V{>$r2Ok4KFbT}( z``^=CmY%;Vic|co&S~^R1NH&g<@0-0^%IfSKsfzYpNxVlhSCn+iP20nwM9gz=_G%k zh?ln#jLA*ePCGe%4RNY^e@31e_rmFMe4n z37Hl1g@1~NDrgu`k;7g2I2;`V^QIDNG>TdS-8JWvyclhYCra94ML*OzLE9g`Z;nxD z?&~9XDKDa}cTfSdqXW*wZ=3#g-k8Q=oc)08&@WDXMh&LKB>4*wWyQ>q_(GvGyRV~M z`K3#bzpl7`XL?$XYRYCMuA6%1cuQN7d&e`WvhP%bbO(S*DoG7Uj|i@50=?1A7(`qA zL{r@wjT>_dtG_X~%ePtYsUO07Ru6pitepjxr`6}Y&zLebymdy(XO=wJ&zxtxOfKY= z`{zwU<-VFSt3Lnq^P+GoytPNSNS8Lp?5hQjZ0cn?RkxGH1i!AZ5y-&oj#(NG*Hu#` z@=XG#-dE?)3$5trn&Yg0PRz$O>yn%Dz)>ysxCVU{>Sf*YH#R(bw}u@XL1{c4sD@eZ z`z?Ryl=Jnx9~-17(5P+krG41HvMQG7`ciP&dl<_mRHWT|Z(pY|k#_s#nvUCMupT|g zL5oWy+CovQT;alyt*DWnIz5ZAt!t00#<5$qPBSoD!-{2;FGG9Y!O-)ejak`LgHBbr z^%VqS)(DRfqT7>DOlJetezI?G?k-BWY+h@5#H=9jUGF^7x^Wok9Y5UB@dOFKY}T5G zPJ3qL9{er^u8B0)$8{fgnDOjEGM7pI)_w3ex7LU>!{9sDiEkf)_Hd#G;Mo+Lc1J*| zwn|-x3+Uj<=PdG*7d-*Wj>1+lhSICSt}rQzRXJP6#})386LU*+wvv8A(d~%SKp;5R zM&vUOBTG?ab|)Z_H}Zj6vpti2$diy1s_5e!Nz(%}PCiEl+lEK}YuuI{6=aUMq!U$t za7)n@!U%1X=r+@9l&1R4B6dBs(=rDbQwrv_*{9RwQ3TE%f;xf(J@{bqjXg{bWKzD5 z6*ajT1ONP3V!V;rQ3A>xrS#B9UvX6BD*2%~DRBob_?7je7+{trf=1CM8P{PcGAImd zQje&DizY-8J<4*9rFEe3Sj}oO0#CP!@McRW!&dujPNL~mKr;;)K#9Iwruq}0LGhVw zi!tK+lHqGUAX6XD(uafkXlI6Z?hVY#_Z3)T<38lNlruEAmWihl<(P31JuWKRfA!1gcaQbDs5}L9atQkx zP;k##Y{~TF(TP9l38Szhf79k1bg(wv*@1V+d^IctsvZHT>^RXs<`=Z*L z+uJa;WyHxWb6!rf{F>|vJ&&}d^=LW|W4u!XqB#~>!atrTGzFQ-D=>E+v=;s$eH6Q) zmo-m$GD<4BoiJMzo2$hkyU#}D2d6*RXaqTzehe5343jAOX1L^SOXDOHW3wxseNii< zideeIbE|V%eU6Mj%l;^PPq^&z^ZG5#=M2;6?3jmu0CH$)4y_|EQ~l|7V<;KbpMi{z z6x?@=*;JUtCvz3&K?glR@)5IL$1H|V$!x;x6eBDl#B@xrVqE4rIyo06QQyq`Vgy-y z(FBIoG$-iIny~5myPDFOe+rc66FtXhKi(od>8OM})?fY^#vjUz^z={qCVx?5pOB;c zy6%ShI_!@B#=}Qd><96n1&W#Ru6eMvgRZgg=K;l;7n%SG`jOje>!-0h*M?utwAo-J zQTgyRV|Qn2PFSk6qGL%YnEH{iWtK;e~PfMLo#sJLo>Ic z*MA63J_)@XJR6yLPSbx7^=8^5GOz27EDq~5rN^O)NjT9fzQ6PJgCBqI=hV0B#+h73 zk5UslXSDiPYaL@_m1i@4xek>yy^e$lWZ()LV8-y8iqUy^(^?5b6rQ=Y2C)U4CaaE?CnvBujGD zP5)$B=-Z3)Haf-FdMq&oo%T!=ueoz=!Uwwy+RXWvDmEs8cp3LNR88c~wmbV$bDjQge##V8ngxH<$j<)5Pj6w|aue~TiEp{3aq_Zg zMXsaq0Ra}u2b|mfC~(KXr@+01j5@FulTNDO8uXrTwY|5Y>fDKFxcA#Wk5GsH^tqAU z)aA}R(qMXS-irr>I;~w4Qb{(Gd^PiGSJV7J_^i9=he5P@80+{8?X=CoB8M}0a``@T zt@aG;>^*hSM&w=8QE+TWKk8FaJp|`o3vyra?b}1o(YZA z!xku$3k`FD+Mj?PYuJjYT=>HX8dz6qM{j3N1biV$%>Pr-XXuR|RLWt9*>~pmbEtQThI1<`KY-${@LR$|_xQW+gQHeo#t*vA+8k$`YYs zovkPuh7Ct@+72C78jtmVSv+(Hnup*Hpq|bVJw3xhLWfzYrm58jy4bhSAs(Gjr`p?q zhEW}n(eD`WwWj9yH5y#)yXLdb)xfKxR@hDVT7wyKIFeq68V!`zZz?t1d?v~db zyE`4zS;R-tpLxb`oB7-}d%;c?Zjkq(SI;oh*G_R7ZSFrE8kHrJ!GYuu`ov9V>8laQ zk1UZ5yPN)sbc|r}qnI295~yLIBttn2m7ms&;17)9uPf11-wqh)Bt2sL)I0$0|DpW3zo4CZ>W4a(Ie*oBiw z`CO}sgC3tf*6tVas=5y@&R8oJnm;X`>`Mm?3$7J{7@6YZ zoj7+G6X7dJM0$-lpbE@yVktc3R%dA*M$IW;&5NE^9-|o=-eAi)^DL1H)r-khh{Omr zr@GACk(KDu@E`$Xn%e*d%$+@!kH64IPgqQ0*MwAlv51}L%?KC{)m@X>N&C>o(dYzu|OCG(R$*S5#dl$GziCA1p5CyS+S5g<|RfjTo0O^WRLMfIs6ve5e zmKskfIqSEa+}z(0sspyRjQ0$7n4GmhSAD0W>fLLV4K3$}GZmSR3U=M5Ac1~HWSm4Y zxsO$6m#3i`1x}&YSt34H?67R-!b^lR_3WuhcY43M*Sz68W@tH@GI$>Q9q+`%`}gpI z@N9NSukp+2U&$RUM|at-)@Zhao6h>hOpcLfIe?ij99CrJG2lPB3QN>hT9K zOBR$bSIhN#^@T?^NxCp_xbjnYZ_JSB6 z32`?>Xx5oxz6p9nYdPIlb?TXNZ=^H@n5Bep=HkvVO6s3D z1M)p0%aDy18r9bH}nitBanvewO#NjR{b2?sRYm+RLjyo==q z-wTMV3}a4l-DzB&1_`TLRt+S~u9@9OEC*>!TCC>S50CcuBsv3zYB&I7 z8t1EJ65Sf0SkCb7{6BBW%u=@8Uxd$%wA)zmI?`iyj~~=H5AAe%MN~Jdmf{LU#^>}F z@URLyLclP52@P{MovEO&@}W9?+8rrsN?$GY^zN`V9hm?Vfq)&C>bRWlevK{|cciMH zTLe;DvkpG4Cz~(8?%k+CutsYLcS%#pn5z@s{R2HNvA zKCi1S=)`-cruZF)CocW>BQ(0-&4?aDPDH9rS!}US3I;gS+x7!^1glWLWXJD%*5#wv zKFWvRhk-C_6Ezpp1LmGC?5gL7mRDtNbUyCxL5PL&e}VTKvxYqrKm>Z}XPBPL!&Hci z`valWK7t{RFFo9tq?W;l+q0oH zb*Rvki%*T$SM;M{_PD}xm^T6hvUhd#p@MrJ=LOnMId7z1?tCK1n=$6nV%& zC#6@y-qkYc7eBMtkWj6j2(z8sYv$=@-w~Nk(a}|&I>Fb$FPUCzNOg3>2Tz{w7s%%1 zkQ&^)4phL)qpjR8@CvY_wiDm4(a~CPKO<*szj`Pbi`q?T9C7r@Ig{miAOfB$dL#Sl z=va+2-^=~=UpGX%G?G2M_#E0(Ka15`)SB-3rP4R&&XEFEC)p^HUR4ZQ2E5`3x)eKt z;sgDbVR>`9*Tp&TXS)u8u;=UR{b5sQ^DCe7E^25P$Fpxn1vE4H^(Nk`_*Ledfwls{ z`AmXOaq8HookYsNZfx5e5J$jA=qN%sYZe+7DSznqQtzN-7+dbmI~<;sHL2`LAhL9P z#`x0kRjIGz8}P2`Mao=cp=O<7wgS}gFwp}3KHe$teR)IAXs$w$3?|i8gIBZ3AS*^A zD8{S>k`vf`vz4oH*EYVAKSPJ1bQZDa2MEydFJ9&MV2$Gxvh53Jb~wb98J)VBF-}PwzeZVOG4zBp0Kj1Ipzg%MFe^uT6yNAy-VNjDZ zv;y{Wl$=)LSPa)b>Erifv&}!V&fmNKg2Z}-re!Y#V%+rbU!MKHo7H?r*-{#4)17V+ zJ5w$ul+pYMrl0Pb7JF-_dtxxOC*l>qQo=jl2Yz$`+1NLK3V|FR+@_+eIri+({sfY1 zqWka83Q>@5qs(kMH!+pW=JoK2^E`?0k@{l??7FP42X>aAw-RW&*=Iv|bPt9pb@JX6 zgQipc+EROpy1U_Qa;k}z zI0eaNVZwcmDX=}=64TW;YSw27l#QM(`J8YSyya4y`jpHP@Vu{cvg&YU8bZZw)D)D! z^*KVPeB`D*!)^Q3CuP6?S+4y042uYIz}4^N%&aV{45YZe&`*pVC;ji*V;>-vvVrAs z<=aB8c!{#jk?cm_1fUCsocaA_m3B_i zbqW3E%MO}c*+_dFAYI3~H?qMx_4`DpJguNZfLGva;#^Ly%Tn)M%#rRxx|}elmhZ-a zOQ{~T{W6I?A7M1M41`CuLO>26aggWc|Czj?^!V!XHH!B2o20#;M2m>>D*An(f@`0^5YaAfEb2Z51IbY9cJeRqU@?6SgdpM zjMT8<5kL~Y`$V~yU)y9>PSFEmv%2P`mAo`xl7gastz$}KxEe*9-yzWbTYvQ`+94y) z%5LFdU-~73_~g}d?j6mHlO9t<)?^)uy8FU=Dpi9;C$_s?hR(G`r_CMjP67yIZE+f3JcShAYsr$7*<_rG!tjho+yPDV8$|MfANq!gM zq~SX-hw;P~Y$OfSEQYHfzGP}-4DqDgZkbB|-q&tyX?G^H=S6sJMU|=i0`<(g$o`_$ zZc;pcHMx}#LjQA;TS2UddGJZW#>n^eqzY=)7eyzEUPr+`M~>+vbKsL~io;vOExp1O z5Y%HUm%Bz9;zq;o%k7L2$DX;IS=vpPI+O)3TUj24EF{YOR%Qv82)paX2G+sJEOw1uQhkJ~3exa}+{w3hjbW3uyVDF5PK&IkD$D|GQ zcfzB-WK(K~H?Jg|z8Zt`-ZCwZKOtBPUAnxh=S9~n2A<0l7df~EtrF`sZV^p~tfSLsg@@JZlwS5NR0 z_s@eAAYyVlo=2Iby&Ri)-j;T|wmP*&{o~xhkh2%bSbOw?5si>IQh-+oRQjZ3*xfgG zKbeN{!FMU0ySqae!!p>-TI322=whKN^IXO}qApU+ zzQmU&FP7TMe1M~BI-|cz^*-A=*{E6or_%cW8)li6gi4+r=z=;YhrNEOuCuj5vz#lH z4mz`G-`l9P=-?*CPdd?X{UTz@BW>~^vGb!O3W&LGmD*|t+&71W}23hEk$8;5weqF zj6UhJfGo#Lw^eB_Yi74IOGvFGFUTFBGjmWRTlejfL!d-{lKhH zXz@3+$4JOv@#U585zQJBD;d?OoC(2B)sy~Drr0$R_}MLSCIVTTrq>IY+@n_>O?UHw z44G}&k?||1%}lW)B)|!Hu#ypkB80g#cT8@W8nDXLKpU6@YeBL1_|#tIIZ|=!x1_s* z#yhHq1hx5Iia#e9_?iy4J8|WyByM~j&`5olq;>lPMx?&BAu^Lb@nKRxgEHJ@@n(2> z0%+FkaX`&@NM3~Z!FqadvSa9a-QJDJja!u)sFjz*WhPnS;i-3p)vuzKrGP@AgK_uT^24SPp0ut{$NRI5U)2th8s(JEox5E!j%?c>Q;?5{|M-pR=15S2%I(mu<<7uU03K}D%wVA92lFlZBey#t)0*7WhVE)Si6)PvISu`S(#jyiS-uERby zsXDqCnaKX9$F!cmb8nECry$a1B5i!sh$Tw%orG*@y!^PzwZTu7N~7 zc7%Or5&FAYC})P3I(sv$(|eY3EQS*AP6h5Ev!N}_t;q$@c}jl0h>!HiLRgb zLDRds80Osutb6jrYxvyi@EelN1ts_9E8kx~r@etG-MmKCSAJ0CsU7a$8A-uYL>?cO zn-7ZfMt#&Om8EfjlJRU2%MyKHdb3h$;JOtWu0NGqN2hdEmWl2?^iqrKF7pHlCq0ws z=+C||nmYU(mr!9I%(YbItiQcwi6*Ch$5~=91u;Z}x|Qdv!|nWERiUuBD$RjdjPFtA z3*3@X%H{CF7*$4NaWKh$m=CiO;%nk^bmT_Dm!*ws!Jc3q0}>xL4-kxw56iGufN6HX zEQ;$YB#u9G@OVV~CmfPOw{Sta1HKe%I39!DGy*oU5FizK>GBKA)eU9@-co3PY)Z-s zenm23-VpTrsB`>CkDg!@@Ft@52{H5)_*>b63M=mf7bBg?t)bgua{x!TtmR~;jh*~0 z`XAQCAJI+TX+yaW)vj=y=p|C;o2pa~P84a+1Up3RlIsUEb?H1qp>6%n$>sw((jU0! z1h=z7iunD z;v~*^TQ)=13IA=IJ0^uC4q&Pp!+kLPa=LQD9c}BAmmH~N?B6N7$`-k#TO72pT^n}CX$(oF3 zeD?!r*y^ut$eu`aPSa+sKQnWPGV+ekUL(ChgP+yIfn5qL{~s^8sBuMBlF$34%B_HE zT_@7Oxegtlv%^0BCKTi+M9IBf6pTm-lsV*+1Y;E14ZR&;NUb~RkI==Tn}78=t2Qfa zG|`m0)^KL}qii3+S&3mT9lH9Z;M7J>t?15rmpuki@aAo5;FaD>38@X-%-LOLd_|u; zS@J4O4veHwE~N0pbI)hIyBQ~J+*A{(^`d%WIQaIx6@Qo(dc#i_(l8l1W zMQN;yYNnT5z)knyvLeG(pMK4C8$3>BU13)!t;)YT4X1FN1H`?dTy5j3?G*>?Wg8VJ zwJq1?c3b1?fqHEmKZs0Q>F?7XesA=AHmTBZIh-#PD?2c_wDLsuyhA|fSLvmno~s0j zSxNZ?c>Ns}N1$6ibDUHvs#wBV$E-xr7#9Mq_uVCb|CUTVnbhXMIz0_>4>k_UdVucK zQ9MJp-}`OBCp?fs2mVSlCAG4n1B^d*{_2hVY1&kly^U(S}q!e*fnhi-|i* zE8%9px@}y|Ljo@|M`mb${gw2*#IR)EpXwhKZ}3cRMh9rLzi!9&{X$nUZPLi&GO!tO z!2A1+$BBLvz39O+FT8S+l#UW*9`Bg8?yk#g(1KxT`|%a>jDj~XoMJLE>s+h@nnP$(IB&9t?h%|DsgK`Q)is^eU)+17)|ba0;@i$n#!pe*tC zFIf?tz}5MHjU&e}d$Me*LtrV<&v1uL!7nRpJ2OxSrGYr73&R&L-oqrZG*Ok|odx!c zJbOza`C$gnDbxe^dmKHHC?j8?!+mU?RpryK;QD8j~ck&Y_XJfsWF!b`4 z>*~0S!JLXYT$Q(9Mbz_U_Kb})q{B)dJ!9Lk;^G;1XX?bD?Op}(1VmW<=wsMeku+Ri z?CQ^-m27bG_BAFB#Tm-%*pTVWh#Mg7Ch#Eg592>doZYzb84&h2g~KaLak6TdrNv+7 zRUyl0#bKRKG3A!Z{T6}iHoF{$D%FRtjcAsQ%Zq)nr#9Narcd{oK1Ql*dVcC&;d#aboS^+(bF6m=2QJ@)NE3;_1ScO8!@FP4*`&Sl zps}}WD6{%2kN2}F$n&(8!M>P=e@8-QG_r}74}ghGvE0VTT$nB2X`dN&yKFpcm1!Yj z?-wdT$XajVCN0i7nE;|oP1O4q%1cW>5f>gSNLA`sCSJXRg03ngsDKwopL4XUJSjTo zn#N+4zcKKWI{`r|?i2!s9@9S+&X_iC?j@R4oPK6(>Zu2tBUCi-XO}-o!dQ?9gn_cR zlo`~qi1AIn1enxC~iwf!(Tw>(v+%kE2!Ta_Bqmq;*a<)5g8QNkdAn-Wi~$ z6glIMkhNv&W_HiR<~z(dtx~$WyPqZ)Z73_L92_pk9`n5{Kpw`%_POlx@fS=B#VQ!Y zBF>VIzIOrtq)PgL7muA9g2YwXmyi6`kfHMGiQ^f=rY@tG&sI-SsMm)*>2_y&UJdXP z`{ZZqJ64FDC;uAcjaQ+ldapk-RgVER;>SDsp`X8=_A712x#a)GkiED5ikHvEMZ7Po z&1WJ`%lx~4_r(G0^07j=7;Nv^%*Vw%igJT$xudoiODUAf9b-y_?_n`N9|_b@ zO!)f?ezdhlojSXLb$+?Msf{^NxdE*<$1Lf&=+#Hm4MP@qN@U1tnnMv2MqwM;k{Zu- z`~1Afg!x-;{_vN+q90DGG1Q02HMT*kOuDJdFJRjF-(pm{nDt9u? zV63<{0Phqb2sKB~prB}A7V{Q~n&av1&Angi!8{S;N2r&?csD`+Q6u!n&p4TJMrGFp z+#B|EiMJ(iI|$v6ECC^0ojFz1_}aM#W}Tje2lLu__>`=g6WPuH5=A?a z(T|D_ZbjTwR=A7v@k}+k`c{-A|6R*r&;+2j2-~(SJh5fTM!kHStPx+lN+`6F3O6Kr zeaA?$6la~az=U5`cts=x>gTAihx#FDj_gvNXyKD;j}6kZt_aO_6k54)LT7~VCfY$a z8Bxgw2eEQ9GLb!xw?mYfFkH^Rl|?pufh0}df8?^Ydym+DrekPNRFjHnecd~& z)HafmlP#bEjUeLp)Z@Z#I)ai6{1|E#0Qw^(Bbw;Rn90Y-}ZhhW{xs> zDuYif1r~-DO}@Mpd(@SzdDIt3eMhskqpX4>X02Fjhy}Is9$^1O0o6%quO{&nS+0It z3CSs4wu)K^RSL?!>CHo`qJdn2sdML|G`#6Do=e@Xx*Hpp^|{sEl}mTEzboGStBg8V zw2HuRmo;K3IpfUmWkSA^Ve*%|<7Kfa??uc5R6hn3O{8Thh?eHk=P9w2WriChj0>|R zhCFc%w|Le>xH|fnneiPC{q_atfuMp&tdX=rh8;H(PK)gWd(npt>$iqv*%9?=8fEH? zpN578-Aiqo5=)4<*FvdxX?S1$J!w3Uk@f+letpRfE1||ZvRJpx~24-vs-2pF?;ST z+}KZpatr&-HK|T-kS?;ADEtcUltlJ@NO=Y zv_xuX)CoUP)#RX@n5hSER9vT_lw$nf0%%@N8!G6JMZX|=KjT(JQtio*=XoZj)521E zbfQxwwf{~1?pWcr9q>@dJIrd0@acDz59MS9!k}vDxXOXGcQMq)xUBR20AyW^Yx5+3 zeEWwt-(%S*bjCi>Z%>TTs&VIk%d^s+j+tR)vJi(ybIvH73e7Hp=C3<4`dDJ zfji@2=`puMW0t4~OXf|y8ctqej7UjtNARa&zX51Y%G`EDL$ehw{{n%aox3E|HdcxW zZpoU-gL@UbhdX0yo(XmgUC+xeOC$uI^lM1aBKzZt1g+tpB8)aqNB@XS0?yS>aM!OI zyjFZ&ROX@Q=m4oIz1qFD+Es{4^3|`o85?bra%P_$v;4E>rFT_-UcZ;#+T#aj*%!pJ zJQ@?iIffEdd#R2l4ZkkZfw>s^96MXWj@z<$`hQ$}X!vuB_#yBIv-lbW;tRfFwB-D= ztQ=Q_u!b8fk!iU+*5pvHL;wC0(<>YJGI2<=j!RuMIV(j>IwvrIZ+}QZYk-xTtXiEt zizqXugY|>Kw(^eQ^O#(-x>6-zOq^zCalW2#nbIPFg6_`q=LBLV8?u^O98?&2H?~!} zElqnZ_I4J`yS@+19F+YN-vDuuM_XjAo-mnd_Yh_BvoT5i8hJ**4^I}B4r!Xth7;p z73GG@FuY1lT-g1v)fU~-FDsU(($5^K0W0KxXYU$9$hY>jBYNtPk3ls5^o3ThPsnu3 zz$G+++xW@q6r~vp0KrD4vm3qwY}BEkk&T4(P{bp;14c;W>!HD;Qo-Hi(KMV=Ht^{N zHjA?bh}R$2r-?F84;+`#X75l2WI#)?&9)vlE+%z(g{`Fz?*ke?+i%UExN7c>O3h}K z$(}#3;`UPA+RBS+9vTn*JH4P08Wf{d^s4b3&<;G07@IsaR0>_gp!&BxeQRz?7*BVE zQu3wfr^hKOoJVPDg;0B+-y!==DBD+{}RE4L5%(HKnbCHMVlK zR`xRThY`<#Kc-@B{|a`3*F5Szf7A7qeD&~laZ;DgFxGX)0i8sTkA28K;0fU{hoLDA zXKJmQQn9*K`El&U;lJ{n;te7hsc!xCs83$DkEON;8fl?ofrx0Y>a78!9%`2bKJ}kH zFW;D>k6>>J4U2m~V`j~7qIJ+aqtwiE{tTdmv!?uy2f%FWTR6&=f=JG~geB&o%Yt{`BhPfFNTsB)cq82Sjh&w8rDMh1U-GFxnBn(%!*ggpWoOri zYALQrK6#bkx5gMW2tRnLxOX-NMBYichvc7W?OfZjaa7e*9{KW6_B)|9!;8&Ed#SF2 z9$S`yF}0n%Rq50;1>44tASs>$3PgBs!IX3yM+%j;g)rtvh9Vs77wX>5NB2sn-~72{ z2fZa@Xb)?-kNTa_<1eFcW!<+95PQZ{v*UyJa#}Mf_%ZV9h+QuSw^i3NyNuw^^^DjL zJ$dCdY@7tn(7BTSr1T|u#7T`#T@$olOng*lx)PxInskz68?Si1YZM25HD7ocX@Qoz z4OJy@QN6lzSi3@ZVsAeBtZVq`i74j&M4#_$PZ)VMU|!7!VXMEOrC+{=JC;NC z$R96Xm?r=!dk2@>*|tbh-15AVp&8ToWu}{Y$TKAs`A))Hk-$uAyjzz?rGVR9`fcOz zMFjWF^OKN0@9Pj2GfrQWC`kr%3?7WKef*}H`N-kf^h6#?6g0hUyYhmBtfEv|sao0R zz>jVZlULt6t zov6xpApLatCr7cy=oPPCyrA4I?{+SuK?G=B=2%Z2q2ZjES-R1c+)YeXgJpjlt@)ym z`|IE|*VQsv&ByHDq`D)vy53xE0kX|M<$K@_jV{ZiAh6dU;~fBKL~yzlxdyW7&A!-_ zdCjez-l@Zv42pZqwGb1h#S+in`B2J}LW+Wyi0b>BZKznu!n3H>2py6$2%yP{m*EQY zvFdBw*zTaCdC7E0r$Bu0yO$l43SAYCqM1rmlHLS12k`Ho6cg=kSSqc}ET7g@yOeu0 zaMzd{MN=wamgcAQAN>BtAW>5+l9105l23srme;u@ z55E3wtY=O?|l1rg&BjZBii9V%k z^o5?$+}ZSl`I-3j^S7ILh~09_nWmb!5;4ArNIx3u$!)?H0O=TcqcgI2nIi~y3pamq zQw|o7SIy|M{#MOAT1iE{a(ygM2)%kQ%W!wCr+l4!NJuze@`!g1V}RMe=hMlRN!&u9 zu}s~amfCLWSG&@1)rIH4+fDq!%OwxYtr#ydnw8;uJ?hjGucnUuvsYDfT?KP_V_;eb=i$6Q3rpY);m#7BqD-x>d)(g_`xw zwYbQ&^Col}cvsC!H!eSati*RGz@Hf1w|U;}+lN8+i>Dv^uthD1hV<1$3)%>X1g-#W z80b=GDBQ-OQ?g$P^fhm#5hXmS7x_}jzAAUG_pqa0&};15PzJueVrOG)KZI4rzah|J z80(^M*1CMLVrLHBCWo7xJuF4M5+L|)T)AiDAy64CJ14Y>A6*EF2WGe3tR_{-4s)GK zowZK=vAWilI8J1sFc$?rX+=H|d9eBN@`GrttnHe-MEmt&uZ3wwgT?^9fVsWj$@KGGoF*$laqg4oJlnPJh$N6+Gv08q7C*Q2y_-rW)ASko&we+gN! zgjWf_dM_~6C*W;FiTzMwvZ&iPp_NCe_i!4uqtO86_oIn3&#%4FxD&Wlv91PpO1f>y z1Er}Hggs532t*--q~&Can}M3RxIXYCd1|c-Z;o1!&-$Ugwu(!+Zpzf`72^V98C{7M zA_0045Mc1vkrkJ;VTI4)2(pUfemGTzbF$xK&`;y7>rn@>nfU&+=Ny1=HvM^HfCWpc z%Y)s>wRQ%<&1&`1#tzYTwWVbu@yV@pal4bDX!&zn zqo?|ZiIx=#h2~O{^73TS_c|4_dv!h~rLsVlSIgiSZimmEsYA}^Su=yq@fz_OAS|fr(1Tg#R>Wufy==FFWfU9Ke#k4SJ6qRSOT7!S?ly#7 z&lg(WP)n=xf1F%2pH`k)^VtiSlRi0Tn0m@V{aTT+D($V2s)q7BFz=m)I04B*K1nrh zJ}a}B(n?F2DXbY-nb*t_N(yIA^B6v-V@2qf_ zb0Xk+QAi=!=U`Y#lB`1QLC3y0xl3vkWZv#GkQAWaQH{=4hjoPQX z62``j9s949bUd(#YW?7tRmN5n|3`Va)#;&u*1 z+~gsX_BJFTe92@oIZ{Jz40A{2@qBWw*0@Y&jvQ4^5p8@G2K>z6QvK1iUsLavV_l&e z>InG-B%qS4_|~Os575)5#i3@7u89rsJ*K{!h@;98z`uiMTPlYGp7U1v-^eg(3?9h~ ztYvh)=uz6==iB5Di^m@)RNwRAszBS(6zDLOy<=x}_sPLh?&!=F*7|Eau-+tyCi z5ndlzcUA0qZch4#0zrU7YHvrKiBU~&ZVf^}Q{bZWt>0?y+gPZB-#A|3R_Fw&WPYot z$@x(S1CxrVlDTfZ*`x(j#A}3KByin2b%$PWn11Ab0;||1qKHz0dGqFka^IZRq8?Lk zQK8m3n|NDi=ing(!4HdTnn0_D$JDvv&T0pzyERCvk6(wrauQIVdG?Tl=dK{(Xa{Z! zkRkz9IWDxxbQjM(U|gymQLE4;8gby~hntnJr`~w}z3a{Kk|ey><6wI*UxPU}_%*$0 zSFyJDu7&+$dF0rCP5;w`G}^g;}BI&NaL7eRE2Y_V$P@yue7fRkPbZ{X;?^+vbveTw>;Y zZ-tEv5v@I_@4BzmvbYLV5Lt$AaO2AVqH zY{-g*6|D`=Par-t@yrxx3!hxt@6mgFeZ=CJI6UP@xe|rQP&=NbV$en~_&c56Ro+hW zJ7i%taWA?0c7)$&oAC=PH|}4k#ZP&DQwZX#x#iVCIq>ElLB76s?9?fmtr`yQ zZt=9zXBV5VpTI>Yo0$uzYSzS~$5IaU2wGoG)p$RCcY%RdG5Ib?geE1SL?rR^lR0ah zQ>CfXpYJ91VO`7RMSiCU=u<-*93>l72}^1RZ_f>5^Vnh)9%UX(Fx|X!a?a(1%2W{1 zCE{)ZOSrLn>hMV^fj3A+G;)5MwkWaNP=EEQaa(-;#ne;oa?a7null6}PBgZc+ip_& zB&7*D>_Qn2eQ#-BS}$KbNf&im-X!1T`gMLLaU+GJoVa?flad-B_;yk3XN+$ft^9~m=%GM1lK=*_S+ z8_GQ*KMDXhUw)eOwS7@-de#PK>IYXmITiOWdbaTf(oLwx-iEup#8FafX{FuQ?~wz4 zWI~f4qk*5tq@TN5E!KMLN&DI>?)n9jZC*Ey`w%J}vEmIjP$S-Q|Jqk$XpKPaw1V?- zRQQCbb|=1Y-T#c#T&Em%e9X3V8PNMR`?sU@Sb6zS8(_a{UCz54lm6jhO4?wH&XMlH zVTDkJe4z6?N&=bXdqUQ?g~|Bh%_at%^ht(3CD)#~Ev7e*23IX63#7})iMv@={U;O{ zHn!5GD!-$4!Ii`7ni)f9XdX1gmM9Q$Kai5H%!Ivd8WP1WW>x>7<+ovr?q#LoT@m3? zPmxL~{HtwJ{3qnNQ{-5ks87cE@_yH~h`saw9?*`rG0c?U95H4|P~59wg7e7=u~>0?FZl5IcGdoI-3|A~}7rNFq8 zSl6oPZqmrntvZ~62IIpwo?|zGMESb>fK1DSTM#@hkGt6S&An4h%c(ybnV=n-AA$q6 zSj>hhUuX0oI$Ot>B2EFvZ{q$5fp@{Wmp2xL`B05Yfux(^|K-VyA4r`bcqG_IVh>Lk z$dzG7MIb3f9eII`dyX_*t&r^DqOkxUtM=N2deLoo&uockDdluOoF-};l#43WyuLVp zUYd>Lp5leH5LLRzWnTAyb=vmtEM?%divLRAp-kC=70BW+3HP~%RLC8w$#K}~INp@$ zze6>$OEi)){0gWGpoLfT}HO^P**E+m)G(!johNAu}{yqAj!#zj&ep!I8?9sVH z13xJS0P09fp;ht3Z}^+STw9G3piq(q8n$S4lJPQl7z$%oy!EfVHA-Y0L|N1Sw*saA zv^a53{?mXWegBDL|EXF3?#G}0%s;>XZ-f60d_PRG!4VE^Q%=?BWikA#bn1WG{eS+@ z|JAeqg!})uXOwZ5odN}JIR2*&XomrCEO5kfxH7q0h&dh!TsyQp{quI%z`sf;Zo-RJ zgXXc$@Z-W=AO5z<`dtCq!x~N15Lr!~8zBj6>5k=Y`0@+$oAi^kGYpDr%B1u` zlROsIRmYCL4FJk*q*zDkYZ$CKk*7wUbeHXTxr}I*YO9p%l4DTC_>(96@9b$xV^_)* zJ4fI}yo+xGf4PKyzHdTc$c91Z&v{boOd6C-kVihdy%Nmc9zqyQT54QBPn|_6`1@y_ zo|@a>lB@459|wr%T0xHha!A-%U8r*Htgjc>PmkUy)N*e!_ASqG%v6JW1{(*jIPu_M z=PdC6x~#e=6HCkItgz8`5g}u=cm}lR&61QF-({6&<;)bi4(v+5cfR3crC0WTMh3FJ z$v-xPn2H^Ab1da^PRkmLxWn)kc6>)wbwO_X^nV6KDQjU`U{826NlfK?hd=&^-+#_{ zdYVN}Wc%)qkggviR#!t5ckv1us;}+mg_C1$#4WvD3{}KdJ;;BTRi4?Tv;8P8@(MK_ z%}1gfsWXZcmg6X??oZ!%~gmtx(&8xd8~Kl1JV)Y0BZsls{% zuQC<6qn}w8?Plm24d!#(g-wbG!6m~Tard^=569nfm^L#XBu+80!ygm{Jrp}hU-S({@CX*6qc*}tCS#4az z<%koa#!3i!YhxOTL6>B$vZd^WE;W(+QYocG-~XkR9)c_=Y&F?$H7wN|@Dpo9xuQJr z-kBzpP)W!@8Fji(d)+mFzd6!scwnGdJZqXU)*By1d#9_;b@R7>zvfi4_Zt!>KC{hJ^Fh;`$C5c?3!5&<;X)5b^N_jnq2l6_inIX24Uq zU3!M6_!w_~_@%3M3wmU?-$vtn!ejW4Lv7v!!lwdj6czTDaU&f2S0)daVwc`#9)0p} zY-_%3dW&+z_22Xc!fu0;U%rrgs8ByU`4&Qq5f9~;;)A2cf>s)BImP#15K}g0wiLM% zYVPwV9*C8XEIidDehBV|j*&Q}H@B>|)=v=-{dYh+FP32DWJIXl4U9-NyK!T0`Mv%pX0)q3d*TvPQ30;s zDl+Up%XRA51_##KlZ}2?_8Z}7p=rs4aGu*gUk$?%5q$ICvvH~%Mx#COt$a&-`)64* zPP}YawX9P%Oq)_{`xl*9jei@clbW3WRksx5@(=xQgA+6J|JMMC`yn1}Ui0u1*I>uq z_Rmh#-2G@BA@dMQx|%adlEcvY@4}mtw$;^R(x$m4`czKt7$0=ey&5uKz}j4~xTxfV z?rknJpLUDwTM?9q1>Bg91>TjQGV*8Q_*kU< z(p-iYX5+m45M`$Q2I4+vyB~P0glPm%Judd)$h19TY@+@9&F-&Skvf9=wr8eQp3llW zO3w*?eYqMm>w|^`@(`hvN(2X@X#iYEvfSIDPGuP(9AKiImtG7II*aa!#D{eDbnE^I6X{ zmDiEZdz;kJI{jl)2K8BUThn@pjTZ7zg@UhrSJmE5l2y_p&8|cFcl3ui3VmPmUWd{S zcaG?NB+PPIuva2fq&fA#pCV7+_gtw734Y$HGxq8V+J)ZG7j`~l*!!*I?)61Vt`W4D zw#3`luu$f0TfXBeX2?B#(Y_|Diuw5=Ka;dcx92iFD4?Rd&TOGXUc%N0}2{+S=hw2IL zmtThIvc6F{pZC`81NWz|mrZ_zcP7~=4u#Q)P&3hg%Xa-KUR&sG?-iFTKB%?863r|c ztpj(98MeOfSwr^fZ*UCWBH0LIUWC(6*M5miq3pj(`pw{}OqoPW<0gyu^+Iv!wBs@O zjH8>ys3|IS%mN4F17EWJ^k5DS=5=4H4m}gkHDvtY)eQXbacTJ>z0THel>1pIWX(?v z2sP;&{J>Msu6}ox9d228mwv7`;bI3Jpqf3Qve)s(EgP_tG0pn#F^iTMA)eIWpKid9 zE%k8LT;b>|pORH$@ZiG2xVZM%6_}bQo$Xzg^)*xr(i>>5Qs@ zw|vb8J}-&B>?(2I1*#NP?vK7S4b0+eqA{E@{5-ve8t#RYGfbr#sOTa=>HIhWukR9ofj&+c+a^#pxudh@>J}`Z6B}lEy1|FY} z^Y^|*B>g`)s{=S6%2$yqkN*3_B0S{(hOBQ;7g{9BtVN8Vv1gKdI=z0gU9aZ)F z07nIotUzhpJ`E zK~IN%`qk%_I{1hPu_tBi+M&LRRKWI@P&U>si@Dnxk&ttTJpN4@ zT1yQ?MKfn;C@0ZSsM+{3-1X91V8N!VMYUqxy9O$|JPvQBsRhg1dudW`{ME7VdpfqC zJkd4=`zDIjNJ8-Sl`Hej#wgti&9M}0U#10mU-XeJ<$f1&g;qn3b3`>uz=TRfBjq8> zhG{h}_A2v?GcDQ>)>72=C!(V&7UqgV-jt#|rG8dX3+GA=T65Uapiz4WivIQ0QQYny;TQSrfas|j- zoxpORIV1EiI1Aw*NRY+CrAu(s0Il)(a7@W8F4Mv54?iOuauamOmNz?zrv9;oTI<{n z(q|lYR_j&x)HiF)Hu_@xJ!99U^eNXw#v0KK@t1=in0Xn4*W)XKLS^|(?OBJFkW1Zk zF`)$wJDT(}#iI8_1*4cb_j>RA$fWTBZWnZ6S~}@m&=e`-Oy15pxN)p~AeW2wL9)UZ z(1q+cubRB9boAGWY_Wy2HKbX-PKROjO#64?FZebH9`a@UalKDmNHT!TbWx>2??}kI znPK?H?*JUvjm)Gf4{fHn;i1rgCUQqV3Qe`6e~zOwadvXEGGI-V@4OU2nBtw&0L0W4 zG7x*|nmkOsaBeVNV7=m><)OcH8@3FFC|k(0==By8*NCo)w}d;rS=Q$8ui*^|L?9u3 zqGueacLlf?eXorpkv>W2Tqr#}(WRg)tPl?Mf?<6TO%2GkJttIxA5_8`_B2+o>j%L}pM71DUQL zTL4k8;gwf@{d|tB@6iPg*PUp-!X8qD+i%llFrnzaq(M(kSoz2b)|ZA$XR zU&0VjZL5UL;UDCAZ{iDdd~_n;6Jt(g=?=Ec*d z|BNfT(}4?7!y6UF_ZZzEhzTCA63A!l7EWS1C6urKNgvsL6%%SU>9CJ?5R3YxpQx9l z4Om6QuW)U=TTA5(~uOJL1E^(LwIai;vQKm73*YL?|cJcEa0b*JI@(nLf(Keg0( zz(-*@Yow%{LgN#T_Y8lW{t_m270wQl<)Iu+Z#V7p^rh6xO&HYl(%Mwei;Ts#8fCW( z&IvBinZU|V_z;#vVVx_#;Ox~-|Pf_ zGe9h#LA2pSm>UN*Yt;U#SO%4r!PY9+OMLt;&G%x`s#gN30q6g^gj0(NzP8?hFITIb z+<%;GzpLhnl@p9NlB?N*+!)X9$Bg?Kyffbj ztLKlFAkWd&>pZD8^O^4B22WY)=n6k_uhh7-R{9~GN|ydcdOTII<>3qCOdsd1dccZ3 zCNX%(ov-A#(&&0(nZ&)4--|eh)*wkmDYg{`z$Dei#sL8;ettVZUIjt~7#I!-Ke<1G zLf`Uf0J{NHRfAvH0b}T~U4*=}5!(iOcGRVAr%1tSvtz2u)?@u4ENEf)?C|SJm$4#O z&fDHQ?r-Ya4Su%24~l@~o~@{U zVlmp*__4uT)$YmQ;8REh1d$szMDUh>Q#>;yD7YFO6Vs8N{RVzag*yMws`awKT?>;= z!_Ga7t$t>i%k07)7vjxT&J|PGJeZ%9D<~m*kSAbO`K$zesXjh$-yi+4#V$wc34c?;_V2y}X zIbGo?PfJLnOKq9AV~Y`(jA#_LD=5cH$C?!RT%`e|&c8659reRMvwg@q-_`NY@*6}# z%(9l3Kgs0AnenC zkj?(w-7mGmHi9w%I@0mjNDuq-|KeQA9HbD<_>1kKHj8T)cI|x#!;1vJ1iVT7l+X9Z z5%?-+E7xDqhN;G~YZS5lV{J}6ia+7F6ZQBf9zl6b{ije+4C&>+j%hlvWdB#YGk>wy zzuNus3;qNJ{?qRCUxGk+?O*MFxxs$|Y$yK2-|Z+5{_5u>p22O=$hoxGr@?ZO=1HIi zViuO3nGqM$=UGwN0bdb{;PzXl**#pnf9pl|o1n?E*oU9~8jl}S3-ZE#fRlbsbyEex zSh%_^9@W+DGFOOOsnM4R4ch^V78t+cDZ*cnu;Dvk(y|8kC#7{_*cGhc+V>Zmer~ zfy`6ru5%g&HYP0{o?b>M@cDXh8u9mczA9I99&SdtEH`?ZG;Z(B!x_8US^(=k{hbfJh9>%6 z&3vwa1P(n_`}~i}Lza1Wi!5`b#!uJUn$e;jdg;4b-M^(Oq|C)a>tcU)CxD7e+6TqU zuPgY%TH+krM;|wY;pmOw#0~S<?3+Xa-woJVjLlEKn}zDK~P35kA|pI*iplwwf|kxhV`9g)a)HQ54Ow zDQzf%+*4OE+12oj=3fe?vjvHm0?@OueQ0C!K8Fi49AByWz26@;SW4sy+-h^nWq0n-ZnG zciZJ@=uM+QiwOK9BMXvJQO+aVDjd2Q*)PpW&xYVu_2I?17mk|=fxt`5AD0f@^0G@U zS6F0+2HX{kvFiU?!_BhM>p!F!CD~uv2l^qGzFZ_;o7%*tny7r!D}XJeO|Ykmzd|GY zapH*roMk#GP#oPrz&&Z9mJ48+mYr`*e+k;RJG1~P%ZOD-Nyze*LaP4BgrzY-$Fe$d z+Qryt4Nq?CJAVn>`cwo2y3i33h^EH$`^;HlcxaPGPD$RTm7x~<%V3^rM#9FQE7lQO zw}(zU@V$IfC1K3q@b?UaLxh2twO}*mmnYU=jW(X_0_E(4hs~IQ{{!j zNZ#Dru-)IvJQmRWMXAC1P0&BCF#SgP*e|8{Ek8TvqWU-!Y~i0M zL!|~Je?FlTN%HTf4SYCm(quvhU=_l~ zVUpy+Dt_y=k`_nD4b8$k4%eBe-ft#I?nE8W&gZkY^3I1G>3ATsNOsWMM;fG)H zD%Ho^Bgyu%y-a8S?Df2583x&Ya(t);ZY{n$wk(k}X*?|O zoh;%x^-2cYb*1tS?$$nO;mrerG1lljS{1&dJV!Ym50V~jV!w10R<%1Rmc+qMGL{#s z_SPIn?jjqO-dud#K995)zO@+00H=8J_^*uW3o;X82y1d@pF(_P0kkW~XBK_5rCYxj z=@8YYqp*T(K}H3PrNmSNn@p}ZCBb>mf(1pzQ%y}+Lz>DYgfhP_LW%%GP!SNqCLFS{ zeTNY1dlwWe^t~%~Ue|pGLCOu0_j@8=dhxER@Fu3KDrh)FBctKw>N5%h-99lX??Dol zGE21TULa)_U)+mA>ErLTO@{cd9}wOlf^YB&zM57?VgGXERA0JGyPW%)fpeh_)RC1S z+hJTK1V)v{Ejd9(i*#5gNtNN>Vg5=|^>fo}7sd-gCbSNo7}Bb~a&oAKycl{!{tJBh z#_7ettMI&`%0X9{{%F*|OMkEb9jGea<>AyRN zj1~Rf-8t@WYOcY$poFeF@(Zv4@5!|wTcCoVUUkXhU906XZw6v}JtLf*^z;(3@ogDV zO6^?JM-D08`2+7Gs#@Z(urM23J`UU@FKkXq4p3D$U)pMdLBQ$8M{D$x}3K`ngAZ`9VYh)Y}un6PYkC zcgwcbHNdzu4IaHRS*I#%k-O<$It%dBZX1~9u0!WzGaks2M4s$s@9C>r11A^TVrboK|eOF2r)K8yl zFA+WSn>B7JY!wFUm2XmK1EymS6^Pl3`NR~1pM@fd)pW7yx8oAsD@Av+nj4;*o=fqz zGPSnjHff8??6ah==MhBjmr`7y;Ekwr02kQDw4%gmiwz^`79@|tZ}T5Sj%T}uH(O?{ zAb#7%QE3MYrOJ&Dz^=1i_ipib5C1HdK zo8osewkJQ$W2v<%hG?pvk0rXx#431RJze!=gCObOYixUN#T7cChby)$s*Zqg4o$3PTrG}`>jF#PRmVhv5IWXC>C(tp zj-aD-u(<6J{y5;WkEq?K8=EtR@O3!_kPmOKvuJ8kp&OBgVb&p-eunX8zzEGs%$f^I z1(bq8I7Hv=b%>s?jIFX)SPrP#NrA**haGs)4@BKCjUx2J)Td-P626YF4888DI?@%A z*w#$O*OW%K8JSqPZuml9rO*IiD33=gk%4x+$r4KIIz12T?}043{fA?}qa9bQqePBB zf=9M|&iAvD&C~9o^}f6h!#wEh>r%_bFZjfxWC27}mHxHlFYgtCcoi@zlZ{Q*IL}(6 zVyc%2g}$zXZ8{G$^?6`)3WWcyTNPF(gyG}(e)x9ANYb%0HJ^mW1H?#p<$xT2>VCnpFI8zo2dahP3+C=n|zqeB#u{t z0a>j6w>L4i5JZCDBQ;)f#u4A`#yI)pBchc5Cz-@J1R73X*;L|hS8S;={XrAhiR;GC z{+I=rk%Ov3;>X9G_czw0JkU%Z7v}^i8kn%Woz!&j_~?jm+<4Q;$jV^x3dMO1t6n&5 zsv6`A(?2t%&OaCQY(#$&Zku@nw63nyD_<$_u)2Khds~=fml5lD(ZN)Zr+LmGK)(R& znCT~k<=3l(X^xqBs*UgL4lV2}$^-WlSy-BM(MmP@6o*m*74@E1v-=vSI9r(<@7=AX zBF@&H-vZNPOGx?WIZL+NnKWd7$P3P9yB0#wvqAS!LK62hQ(u6aFiJ)52Q#h->rtfM zHxOY4TYaG*Zv8sD)^-SE^@Yv?{Q;x;7%*`~(dE`Wl2NUc2Q;}-32}o+W%N;`(`RZ# z^vvPP8%qE)m1hW=IcQOF`;!D#FXI^tTJ_g7`fnXykto3jhBOc9&wzYbUGL7V&mRv?%j{Yy8*i* z8+R!_T-^Tn-a)OGw|DZRVp1i^tnd%ryDxgi-@2G&R&CZ!?Bkxj^|Y6M#HH3unq~A# z@wK4|rgBRT1P@ymL8&&(tNr}>iE1Qso!rf{xhqee23G-XlSR+$>{B7IDH!IM7*>V$ zFZkgLihaA;@5B6y_nDJ@E$&Dude>jZrN4eQoqcer}b&C!p=XNMb_s#IMYw*4# zUe0H9_lWmI6+mE9+p)UDElJ@F^W+!(!J_xX@6JT2(zF=2pRFFsYca0&)aL?4TTQsJ z?rV;%T>KrPSLE9^XORb}tLb>v*LVVCTpZXI^DKi8Ee zC3X%k*-!3At&|*f{?-~37K9uxl}L}9C?7+YTKd+nJ_=A-aCEd6Q5s93xmLjTDk=j& z*AZYn(Hy$Ty1!A7IoHk+Dz2rl54-tA;2NCW%w)`r-*;>0*!E|+Q8h8iw01Ou-^%?- z$k2r^u7+czyJWxYgzNWkJsAz${Br^)4xOl&SgvWe@`<^aN+}~oi!>Vti$gZ1OQoCi zgyAV4woaz2^QT|6L{Vjtc3<^=tLMR2<_i0TCNU0uBaDxcbZ?}E>5S=qnFQzAc2Bwv zX--F->W=k;V`qd8S1)pV*Om5Zu*9V`r7;@P%;EWG2#Imfb zisLB|2@Fgx{V=x?9E=HMeUXYkUUOQQP&El#14|p7pmIjy zD%mTibJ*{MtdgCzZq2JiKz2mW1dIiku|wyDx2%ZnHS>{HB|at9@4rd!Zgj`WCp}F4 z+Xw@Qc~p|jI5}5VZ--c%Qp+M?2cxo+ zJ9-?lKVQyu`_aixq|0Y3VKMu5pk5F zEGF8ccod!l66i#s2aOE}Q3qqiu|4U*kKCInJNaKsPT3GgT^O&Q`gG2(xW#yjanH+a zs7MpObns(4zy;(`g?Fqlr6j^9YpQ${L`>zN;muU`_F^O)RQk4PFhYmJPe0Qt2s__6C8~PzGfkOs8K<{57Kcf-k4@JRMdjLBo z`NU`9CbO`SX?^nZC2Jsr9o{%6f7I!>^f^yIAT&tPXzbnYCkQ+4_TfffB&7DC zQSjaEtwrwFR!2LEsmDKmkX}1A`W+P?kbv2X!X@ob4jrnvkH6~&ux2tf9Q}+qssj#> z`0$H`khLDPSxxR9+R*BhnPKEhj)FE0B7lFOB){Oq6F6c+UQK5y?#rtG=Lt({eXSlxpZyCRZP>L2!YE+3`t}h8 zU~1q#lp=Jkf8HdI)p+^ECU;AiH}X^q2mVi^%WxNKAk;Av53?P5u1agJ+G?N{MooF8 z-*HLD=H|PSA*PcNP^3v7gx_WF3Pf1CMr(Dk*={>2=_s#l`@=G;+1AyMDaVnxa6Y>> zST=%3qGXoNcj&HpKPJ>NY(`F6*2=LwKUXco3hjDD#&%ie(pp)@KE<%IqEH44Y|i_} z>|<~#udPq3JwTnAkoLUem+j@yZ1UNmDc}ByzCVI_&3cqBQG)RKTk9Upl2yB#at5Uhn@rbNJe<=JbL`RUz!CUD0RFjj|> z$r6ysf)pGF>8#x4w@aw$>5Q#JZpkf< zmf}y>FRIDHPQMuLN()zF5WaR_`?t~cES(HjKba)%2|JpHN%YVea{)EoNmYZ)9xf(3 z2O*+LpS375d)vCWr=(%wnJoK2DNyiwsNmtg3*iyjU%Tx9-uU!mnMv|uY;BD65rPC3 zN1>z?fy=y?sTmt{!M1-VxU3*)uLr- zEM-ck5-CWBc&=XXcA?zFh$TlokCh}l|3$~hx(mBAjPQUGN?32UI^b#1>#Ci>e3`}p z6_k7p^M|^#AQU$xVVR}rMZkyHfBqEyx792ji z86P5aC&TsGv0!_iCGG3{MC{Uo_f#u+aJ~{NtKwoP(ag%sO!7>cmKPY)w-t_Lx+V9_ zDxD$IBP8f!gw%waeZ2Exo!~Oc+19X=cch7{?+nRpyAB<;RkqeYtbd3fYMjr@ z6V0r~$*EE#&rKAB5D^+ojo<`~dZ!3SMpHTe__F&_6+WL>yB54$X2j1ljsJwvJ7heT zkvi+qN^L=r$0yS}Z$ik&>lV(gUwvo+kx(g_9cOIg&em5Lw0ZV4MK7TSBlNtL(@`So zu0j)cVZ;#T8y7$4S{yEb@pTbzKlt@x27*QP?371VhWVDaB$6?OyN};r`J%(kvYiSI zlxhA{Rc$@MqxIrVE2TI%NQL$1cjNXa69J*h?=eHNP?Z2f$ta~k{4j>0Dh`#t^Bdf!fVo- z5{y+b1;Q*zy1=+0sfZa+xg?~A)+JZCAQAG-^Y*}(8*V)y+cHbJqq1=6loDLWeOF@L zc|RPa5r~hANEkxJ`}Fc2GSjfOPZjO#ehLQw^CV<#EikYy7#qB__@P(d^HtZyP18X< zAUK<&vR`&#KKW4|6vr(ahpYZ_E@c~jzkkbM*?^QI|9K!*n0fU0w4Lh@;zZ(#6!A8lNJ4Y@MOAHd5fiY|uf?cezPq_qkK!;M0>+gB=Y;{^^ggm#a-;27a6 zcm$SfBX6_a$koC#zS2WGpO zYYXlYoux;37P@mJELLGiO(o@{pk5k4FACT&#E~vQt#e#9`ypt27g5n?@j(AF{4SZz zW35`7b=-vp(Ecmr-B9xO(xLGJH|A^a8z}OCQ#$eUrzhWV)OML|81a z*MxMOv%iqqJ-Fn#4H#b0zw5cbGsu+uLAht|6^28i`FtR25IqcLt?sPkawp#n#q_Dw zP|<-gac;cpJxths|7iy`>k7FlOBA&bV5LhhCPq&~#Vx(1oS#F&9j%9Ja*qVSihs+! zog2cL#`eD3P!{w$;S~*k%>GJw>+dq}pIMK?(v4-}Q4T-p?=@RO2Sasc1DvuWY4}CQ zib|o|Q652-x%~`cT^kW+e@Zpi9_Ur)k#?4wO-$IYXPx-pSm_}!f$ac*>4f``z zZzTnlgV43906zWUp$5tK#Mvu{zL4}<+jVD@mSU~zL6^TqX(>KMzoq?&z@3fc0`%s} z2GyO6mF_(VP$uP##u(Pl(j>3Xeh@F?8VE;iNc5%GL24Q&hTn#n0!N=`BoP4vXWKjq z-^RQQJ;fKKQ%l5%;evIc9GM}dlP>-&dCH*NO3z$YA`TtU@ARSyqCk2d`oSGu*%MgT zL*5$iinl#d?#PsCYJHvnK(QYP3U*{M>PvNI1%SC7?3`f}i-TyCFNK}FEou?I7NunR zc7iO$^S9or6u1$`Jio*9|dg|0OhS!i6dJ=|* zijai2X8mIh=*9#;+>5B=C_8Q1+*@>>U}{Uoe{cd$U(4{nQpd1E3b3acemHx zu3#s&Dp!%{-R00Uoi8N-6WGIt&WlAJnnz~4k<}$E_E+Cc<~Paa_E%%i$S`cCNQfon zE20mcDbi^t(m&$V1$a9bgaAPhDZAHJ{B1{`Fm{GuqVZSjs(K>`_%l<-HG@Vs6Jl8l zhoEPJCtQ@qa+f9hF~;tk{8ZT}w!1GSk-sfu1m`rmin=p9mQ*#E3R~bE+eF3BrkKKF zB}aD|G$80wFs{xly|T0zmezfMmm&4}Ii)a8xX_gsF@*vV;zTXVb!5gosOz*qg?JS+WuDZ_tD5zCLWMQA@wRpG6|a3;HU6t&F5eeOcLo(@m%w!O})t2QDibR|`L~xKF4QH#xiy50ciapk2ZD!r++n-pj+5N~6?qBOk<3 z3(f8=br4xou7|^!Ig__K52jnbLJO&&T_I;qZ%E9$w!qZSjA4>#MoTbVo`=cBopoPg zB`>!2dRjv=hgziZ#+avr1u;o@KwubP+wZVqn)*Hv5|HEXeQgpGANaJ-(DJgW+v_iA zNUMJ}70*j!r~6DID&78PMeP&6@`h;DT8N>k0bm6cr^I@=Eg!&-Syc6NqIA*^IHAEp zItL7NFj^LqNW0L=b!A6A*j?NB(<`_qLAKxX)ecaXZenFJrX1A7&7GCd>GbL0H@BE4 zYpG8dU&Cnv0&mms!_EGGyuD{wQ%e^%eC!1Q#iIxasDMZp5Re)x2q*|h5JC~@B*2m0 zqaq?okuF_DI!PdqgpPvJA<_~;l^P&~&_YZ?k~g06Jm-0Te%E__^J~NG%$_~7_L{ZU z-1nNwoh?XQIEu3`T6xTj6LZK-+t?wfa613nR12=zNYtt>AiwTl)(%^NnI}^nS%>XS z##^%K3cizqfJnD6BQm&s;c9+eWL|SS8#raK02nfA`GuobHymZW=9;ceX(R3K!>E3_ zs{Zt&Ue0800Pnz7;2Io<8waB8PD!Epxi-F%gy0Q*uk)Yuy2}j(jB(`lv6N5oC*11- zY$76;5AT;!F`GYaI=4f9bUoLUxN~;qg>tfo%z&H7w-wvsbzm6SVMqEIQUABHfW1_8 zqW7twIxh{xj_a3j=Hb4HPJ4yJ4{<)Hd^TgJDH+$eYf)V)OevS_5024$F8^psmW+yi zcA&!pQMkfeHykcMjlmv$p61(89#ehq%i}LG#@Tto{6CPn{9gW`wX1#-4%raujd(NM z&T(lWei4+&h?#%66kG-aZbyqtT<*0S-+6DY6!bnPWnqvw7{R0$+#cCM$&!|5Kvz(* zejhG+9Q`Kc$zLH#)T9VMK+lYHi`7QgyD+@09WbSqx-a>T@U}b8l!hs|uxdeGj*kbg zVl5Ib51&vJc~*_%Bm{EpzwSnW-E@oonTkoa{Yq^&jO3e;(}8+PyW2(WiEvGChTD?d z8*FK}69E*R-={NFu;5flnKQf&KSSyVSh)>(Jkth>`QnNZ$A0^5eeF+wdfjBmV3>Xu z)4d{rWK^8P)=p|@cp4&%m(%Ky1+F}tOF_f0w{P>X&mlC#a1Y?Tp~oMKczCSJU2)Pa zkzP_0t3W;;8I(T;qQ37I$&(Y7TuiLAxvZbJjA<5@_?=ZXTX5Hl+#3yBB>(Ix(evyr z;VlI`>Joki7GJi0DEnFAr`$9qv~pHq^K)kF+=zj>mQR(Uee*RRi?zVe>WHzn_p54` zQ^uBR8P_J%H!b-$U@-|o>5p+R>}`Zh2Dm+Nyg}oNlU&RrM6~Awd-csFvQ1l^{Ae?% z@_|yML(_2RA(T_D8I60`S*sf{1lJaZ*!T@$ONes!9B~nMVJP4M7IH4r%&|)y7v&yc z?eKM5IXvGhXb;xJ4`xZSue9X4z#CL3*j9RX-S)u~JfL<_TB_hwVK^g-o1ql~u*D>pG9Lr@ruQ8O~Sj zt|M+``*sMu#&)$nc)$Z+?Vv+syb~tg^h-)u_fm?^a~nw9V!*#c$`yG_h>} zhzWqiD(AlW4tH+ZyIc3!Tb=KU8{M3eN+hjp^-MJ?xnY57swDx-4-%JS4zta^iWI&4 zCk*to@2>c_QRg^D&jI)5#zQ4bn20g)gc?~3*Q*6v2Oq;RGfG(N>mb<1(=rz)=WKS3 z#~k%y%UwyU?wT)01@qgZ7VGQA^V|-yaNuXxV|UaD`tGOE*8FUs)MeYY{7uNi`n zj{DQ+2i)_wzG#*k9zo&8(RMyBgAR~w@5%JocrCqYuNiw)_x_$pS5`yx^x@|yP+ywf zatR_}RpM&Z{rSf9rC*CuMa|b6y@CC^0z$`X@iht~MQH~lDhCfpM2%_or73=IOXZ7w z;YIu^@-|b7CBEn5&Q7_M++H))&L>Spws0XZpq;xsWro5OV2g}<0w$y0mWqLjZy?iN z&gEz_u97e{(fNp3zq6GCIQo!>))ciyDNbeqKS8th!oQFQABXT8(v3vNTTODhS3GBS(ye;XAySAwx!YrI z(SLMnxr~+iIJw*-Kgh7Nj-Wf?c0N2b{_$fBQy%)1q$DUTOT4Q)H4=a_1W*ZZbo*eXBXIDCj(m=Poh{ccPnWd zn?uF7S3J2<&%dz4>kXih=c&;T-`~=`e@-J*)vQKck*kXSicNkF6VJ=U#4#n}j^8xw zv4|K$scfV+bE~-_R_-0YU8?ocLtU2k^D}%7OjSBinUh*ts%dRssPvx}e%<@GV*Bgz zf56NC0TcffrTy!U{{a*KD=PXQs3CV(<-#c>##j8hM)=%Bc{D6V^i4(- z7vX8=6In|39yj~I!6>^&{}*~aMNNXSGT_}&RZl$h9`%)b9x?X6ddXoYzH^;d4g%ZU z@9f@t*uA4U1O3tyM0n<>a=fokB#E6pZR~%={RM1f@Co4JWISW@5D4D=-QAmDcqA}% ztJVHLsB0gy(J^f;nLXGebOxK-4R&jAM1BpwX}7}k5s#(VOh*#hw4vrvO+%qQTBhfU z?NRVE@SJx*F4wyB36`w^_C4s^|n@!eQnJggFB2Ac`xl%1`pNRLvB`Lr^G zs4;_kHsN#g-lG%TFfdnek3wt$U+qg+-F=MFq)EILkL%=0`+q{+!C|dH9~7{F+CTcq zf7r6qEyF-El$b13ndJ!1-(-x|>bz<{CZY0a$-N@I$)4)?5c8>QbRTlnk(A&x80mM5 z>ry`Y8CIwJdy?Y<(O&6alLm}|g?27CX)3k_9h^_MvH4sATdCsCGKq_hs-LfiHH~%R zPIyc>HleHUjFyc=i8e?FEF!7C*_CPkpjd;gT5(>ydsxpb3ozTh+--hR|G_4-CxXHQ z!>ynvV?OoIrOB#YncRpz{cfsxLSB2s%MxcysSNAGmHBy&hFYxzk_z|hWKfpJrTzs} z$5pERC@BcN!*h%Bj=x)_`>?H#Iuzi$1|p|(N|y7koC&a@sr!4V+4^lUln%ML2Y+Iu#TAi>n^Pid$UBFaZ*!2g9 z{C6JT{A=UkuW$O#kK%uM1^;|y|KB$({vY!ZG_sEpKy{Qf+@!U&!ua89|G<==PD?{z zZ`*nHEZ2rx4n=-Z%6sXQeX((z)Fd@f1u`#WH_yG;|MJ3SK%31k_&yh#8%a5TC}MxiHkG^Fx2@70cPpt`PBoYhsuR$P!27qGcG@FFfwC;8jzL5R}U9X{yKr0~je z&}n>C?lL%F^BGbU8on`-=n;OS-Alin>eSmionoptp-7BboNnbWsPPBNu$VKELO~+r zcXp{iJ4@oex=Aq)j$y8fSiz-etn#gw2D2i5xlP}O2g*EOF)&ikaSGGBf_>Z<+_0a}#_r2ib5kz?S@@!q)aXE*J5EhGwVBUIvX%wl!q% zf#x=2h0(wO<51CYLw`{_gV8MQq8k$3%0+YJG3+V9Inq_!Z6SAX(g#8>g-g{|ZpGD( z(~V5;M2A*@#_^{DTUL}il-87)^{RP+nV9Q%0_d&+eYAmc!fr zI)>|MrJ9d3$sUWb`D3MYw*bPdG3Jr{zt~;zAZiTtGHMc}WU1CsGq^84Lc-=LVMg~n zH@V13pF}Z;UTuisFPhjd*l;76D*S=GCow$YgEb!z*oihu+&|*NY=k?O>s}k7smeU_ zbLi|BJ>~nA3EK&a0lIz;w9U64j2h*k>We-M$fkWVnVeqpr1$!n2**7V%GQ7=2u(HJ z7!3^;bp)$tk8q*Z67HCYXg-0%^vlW_>midu|2MSpVF}?LA`}BzW zP&EPGOc>r%ae0QkHlf0_C6%t}zK3u=E7La@YmZI4D~h8RDbgAMy!t}z^9)3{D5|MB z)UPf#KJ?Of*cZ95pyO|w(;UHp!2Y!{MU-Gm${%FpVvC4ZA+7CF+eg@QN(K-~m_c z*zaujj`Xeu`392$H(nIQCm$$wHok|EETR~~lrQXb7u4t&W4qIa3`9GYmW9(ghE^Cj z@TqRJXPDTjgB@>%d~YvHl=p?rLoRtw*(1;eH$wWv*(Uws*!aVfiqhP?0queEZGx~! zy@^#-Zq_hIaGg4g_Ab}4d~gbGaJvnsMl-!6=@w7A&hy>Cb%A(doQg!5v<`8Z??av) z>1C>1GB@Fh!^Ll{Ks9$(K7tE%@PRU_cZas1X`GpI=`rv>a{~m8YWdHVg-6Job8z@+ zq^JETezP~;JmPq~kUp2O_hGU-p9fGbI=*e2nCV#R8dR-w+2~m9ebroK@>(4=RQ0f8Pv^@J9#`s37pdr@pW7ZQ=o4cmA$7LvS%u}QcV#wP+lqTxAz9dWUOLRn^g%~3o4vKKm0z#If^k7^2J7eLnY88At_Nt5<{bB~ivAwp zyBVD8uP0x@$x_pQ4jj%I#9^afa{&-Pltd}$=&bH1x#$~~iDsri{!8)4(eyY8NMvCp z$~hYc?X7Fp86Wb>DIlw)_SVP1l!gEeD_^(hksTprS0jzMN~YM z)TjDUT@YP%ePu_iT)mtzz4nt+5bw#_9y>{I<1i+UJ^p(gdI3{(*`M=ex%O6!V$<-= z5_?(5Bn%(J8(iTP>|+A=a4zQ(Il(-jksoToaC_k}{cYqP#b+!1!ia5yG?tyuMfr&A zR-Ela+Kku{qW-?cm8Zh|P2G1L)b?J^m+TvOVU4f!QE&t+-q#6H&@fk%m>CL#IFcHJ zY(z zPZLu12s`s&<%8HmF?IbHi(`(Ij^S6>GU@DGE{>}57*>SUaMdvv0kKTs6?8l7)WSlZ*Tv_!c?jmY9<1V@#ZeQDQ((q11SKhmOH*@be`t*^zeV36lWsyBi zrieH7UbOS2Tfv2%9bEj?N~7VjI{Hba^80w-h>;}NPUVPj065OK32Ip`(@@Q9sJ+dR<53w!VJj6}tzH8Y z*0YhgF)6m+#cSxpqGwknYAdPw^m6#mIH&niE^_tYJ8;O;jL_`x7A-A*e4v50FH>P$ zqi$}>1<+0%fhgdMsA60s?bzvLs3ft&Vsi^saDY2J!vMRD=VTE7w6A@O>$P&!bO;RM zkv;0~2&T+Kar(%>4vzIKhso2$-tyVR2(tOB!@1toFN5Q0

oQMsrEXVFFwFru|KY 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 literal 0 HcmV?d00001 diff --git a/assets/screenshot-3.png b/assets/screenshot-3.png new file mode 100644 index 0000000000000000000000000000000000000000..eda5bead44ce126717cb03c6b7a5f27b2fb2ec91 GIT binary patch literal 81035 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

0^rtRdR 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 O@L8Byo7R|IzVQ#RSiZUd literal 0 HcmV?d00001 diff --git a/assets/screenshot-5.png b/assets/screenshot-5.png new file mode 100644 index 0000000000000000000000000000000000000000..742215d61d32147ad35887766383135b4bf7886b GIT binary patch literal 15165 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 Ww4PnrD-r;{4lyAq!76?ozyATVlKrm$ literal 0 HcmV?d00001 diff --git a/assets/screenshot-6.png b/assets/screenshot-6.png new file mode 100644 index 0000000000000000000000000000000000000000..802971b40da816700a27dbc609e57349e1001cc4 GIT binary patch literal 245820 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%0DjJIbRStae7woYfWX$rmWnt<45-K%c6Q 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 literal 0 HcmV?d00001 diff --git a/assets/screenshot-7.png b/assets/screenshot-7.png new file mode 100644 index 0000000000000000000000000000000000000000..ce8d8b8c2ad67e26a4a3bb3b3e87321176d697bd GIT binary patch literal 141831 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 IT|?jh2b2OB^Z)<= literal 0 HcmV?d00001 diff --git a/assets/screenshot-8.png b/assets/screenshot-8.png new file mode 100644 index 0000000000000000000000000000000000000000..503f167ebb9e1469f07930ba93427644cc447cf3 GIT binary patch literal 46345 zcmd43RahK4*9Hm{r?|UYk%8jw?(XhT+}+)ZySux)TY*yC-Q67y-Ftsq{&RaS&ec4V zCzGtKWJ%t4WkO}8MPQ+^pn-sZV8uiQ<$-`e?tp-RJt4tATCBaO3qL-9?d3)Iffq-p zy@7yufy4y)6kUK%G9Y-BjIf8^lVCxhDHH?|QSaB>qZ!9jh?&MErRsJY>v3+`k=z#gUL+I&%|IBY&^4$G zve(lFgZz^I_o95~mTSnX#%?k`Wm|Iv- zwZ1dQ${vmjM=?sg;s9*V{7|U3Hq8ITTSb24`y`I~ogyXqAevY~j@#(ZZTnd3Rmz7v z9^ezJ9WEfPPR@i@)AI891PRbu6@KhWQuu`afuazh&xROgjHQZ~;xPOt#^iSPqwa_d zDBE=TO-$Q#g+gID`6DdxMea0hu1AT8L;8Gue%uVG+$Mj`abb?|u`A{)5O@RjB-u3! z`xRo5bjn_VM(QD}W%Je>U3uiT0E*AX#)TKuhf&6`7J1EO_G_u$qrdcV_$Bdq9O05G zSA7ZsG2NW3;1v{h@wMm&v%k~faM{Amf3hN^<;H7dW~R`YK!!b@^YPb0Y$+Z&gYqx* z{5ZaU?zzj_$9D5r z=dP@k3Hb!nAQbef0|rW1^AU~F-s8(6G)PA&6AyR2E&Hpe=BGjtUv-jiC;?2UV=Awa zUL9+~Sys4u#^z7_t9Ak5k=29m&NnDd4>&>eT;>NWodwDZ@3s24b5?7i&CQ@##F24m z!1|eK&QIB*df1;&Ug6w2rU{qba}i(GU(U%v*I)*$vfgD2_|=-*S}EECtl>!Y9?@xe z-?tI&5|k z^_L0X{0c>RB^TgVj%4>Hv(!h&)|CLtk>1L78( zy96zee`-Q#&h2~%F<8ytDG;xr4sdqbWptD`1J0o&9@S7&kKLBV3j3+bsP8d)4|DmP zI_~nq8ucU*7@qg3y+gdWrMP27;bLQx_=nCFgxAZd%woCm=UmGe!8S_D(PVK~6!bDo z)>yE$R$0OnK&Qh#$!OXyFEC=P;23d8&s`n-)Js#U%YWR*g*;^Sz*~XtzH}BkaL!QR zcX%mg;p7@HBz@#;GGBASx!YhUVbKr|0o)7!$dHVi74lqv+54QHEV#vwAI-7&}}7k#;? zA#N847R+b-9jQukZEi;ND3(YDa}Q%OX{=a9lR7~vB}f$CEQt3>pv?y>FoO}E^y$AR zcCsQEF&dx^{mWk@iTDJ*ju}jH@rZz28j{L1(hHv$*e^j^d{(g25hFoNPmSj%iVtvh z<8`mGo$F6s(GdMnHXT1+H>hkl)g;<H;%UrIq1vOtZ7ar}_h*J8Up)7JI}T4yBPQBJe%!v&oQtEv()y3k!ol85ykXj~+Y* z?*}kXcZYa`&=9u}pETcJUv-*e*1G>W0>1m^>W)-+NigUs^ z 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 xX<>vC-1T5n+DWPoKa_ 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 z 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 literal 0 HcmV?d00001 diff --git a/lib/class-sendgrid-filters.php b/lib/class-sendgrid-filters.php new file mode 100644 index 0000000..fe83cad --- /dev/null +++ b/lib/class-sendgrid-filters.php @@ -0,0 +1,16 @@ +query_vars['__sg_api'] ) ) + { + $this->handle_request(); + exit; + } + } + + /** + * Handle Requests + * This is where compute the email from the token and subscribe the user_error() + * + * @return void + */ + protected function handle_request() { + global $wp; + + $token = $wp->query_vars['token']; + if ( ! $token ) + { + wp_redirect( 'sg-subscription-missing-token' ); + exit(); + } + + $transient = Sendgrid_Tools::get_transient_sendgrid( $token ); + + if ( ! $transient or + ! is_array( $transient ) or + ! isset( $transient['email'] ) or + ! isset( $transient['first_name'] ) or + ! isset( $transient['last_name'] ) ) + { + wp_redirect( 'sg-subscription-invalid-token' ); + exit(); + } + + $subscribed = Sendgrid_NLVX::create_and_add_recipient_to_list( + $transient['email'], + $transient['first_name'], + $transient['last_name'] ); + + if ( $subscribed ) + { + $page = Sendgrid_Tools::get_mc_signup_confirmation_page_url(); + + if ( $page == false ) { + Sendgrid_Tools::set_transient_sendgrid( $token, null ); + + wp_redirect( 'sg-subscription-success' ); + exit(); + } + else + { + $page = add_query_arg( 'sg_token', $token, $page ); + + wp_redirect( $page ); + exit(); + } + + return; + } + else + { + wp_redirect( 'sg-error' ); + exit(); + } + } + + /** + * Send OptIn email + * + * @param string $email Email of subscribed user + * @param string $first_name First Name of subscribed user + * @param string $last_name Last Name of subscribed user + * @return bool + */ + public static function send_confirmation_email( $email, $first_name = '', $last_name = '', $from_settings = false ) { + $subject = htmlspecialchars_decode( Sendgrid_Tools::get_mc_signup_email_subject() ); + $content = htmlspecialchars_decode( Sendgrid_Tools::get_mc_signup_email_content() ); + $content_text = htmlspecialchars_decode( Sendgrid_Tools::get_mc_signup_email_content_text() ); + + if ( false == $subject or false == $content or false == $content_text ) { + return false; + } + + $subject = stripslashes( $subject ); + $content = stripslashes( $content ); + $content_text = stripslashes( $content_text ); + $to = array( $email ); + + $token = Sendgrid_OptIn_API_Endpoint::generate_email_token( $email, $first_name, $last_name ); + + $transient = Sendgrid_Tools::get_transient_sendgrid( $token ); + + if ( $transient and isset( $transient['email'] ) and ! $from_settings ) { + return false; + } + + if ( false == Sendgrid_Tools::set_transient_sendgrid( $token, + array( + 'email' => $email, + 'first_name' => $first_name, + 'last_name' => $last_name ), + 24 * 60 * 60 ) and ! $from_settings and $transient ) { + return false; + } + + $confirmation_link = site_url() . '/?__sg_api=1&token=' . $token; + $headers = new SendGrid\Email(); + $headers->addSubstitution( '%confirmation_link%', array( $confirmation_link ) ) + ->addCategory( 'wp_sendgrid_subscription_widget' ); + + add_filter( 'sendgrid_mail_text', function() use ( &$content_text ) { return $content_text; } ); + + $result = wp_mail( $to, $subject, $content, $headers ); + + return $result; + } + + /** + * Generates a hash from an email address using sha1 + * + * @return string hash from email address + */ + private static function generate_email_token( $email ){ + return hash( "sha1", $email ); + } +} + +/** + * register first name as a shortcode + * + * @param array $atts an associative array of attributes + * + * @return string first name + */ +function register_shortcode_first_name($atts) +{ + if ( ! isset( $_GET['sg_token'] ) ) { + return ''; + } + + $token = $_GET['sg_token']; + $transient = Sendgrid_Tools::get_transient_sendgrid( $token ); + + if ( ! $transient || + ! is_array( $transient ) || + ! isset( $transient['first_name'] ) ) + { + return ''; + } + + return $transient['first_name']; +} + +/** + * register last name as a shortcode + * + * @param array $atts an associative array of attributes + * + * @return string last name + */ +function register_shortcode_last_name($atts) +{ + if ( ! isset( $_GET['sg_token'] ) ) { + return ''; + } + + $token = $_GET['sg_token']; + $transient = Sendgrid_Tools::get_transient_sendgrid( $token ); + + if ( ! $transient or + ! is_array( $transient ) or + ! isset( $transient['last_name'] ) ) + { + return ''; + } + + return $transient['last_name']; +} + +/** + * register email as a shortcode + * + * @param array $atts an associative array of attributes + * + * @return string email + */ +function register_shortcode_email($atts) +{ + if ( ! isset( $_GET['sg_token'] ) ) { + return ''; + } + + $token = $_GET['sg_token']; + $transient = Sendgrid_Tools::get_transient_sendgrid( $token ); + + if ( ! $transient or + ! is_array( $transient ) or + ! isset( $transient['email'] ) ) + { + return ''; + } + + return $transient['email']; +} + +/** + * register shortcodes + * + * @return void + */ +function sg_register_shortcodes() +{ + add_shortcode( 'sendgridSubscriptionFirstName', 'register_shortcode_first_name' ); + add_shortcode( 'sendgridSubscriptionLastName', 'register_shortcode_last_name' ); + add_shortcode( 'sendgridSubscriptionEmail', 'register_shortcode_email' ); +} + +function sg_invalidate_token() { + if ( ! isset( $_GET['sg_token'] ) ) { + return; + } + + $token = $_GET['sg_token']; + $transient = Sendgrid_Tools::get_transient_sendgrid( $token ); + + if ( $token and $transient ) { + Sendgrid_Tools::set_transient_sendgrid( $token, null ); + } +} + +// Initialize OptIn Endopint +new Sendgrid_OptIn_API_Endpoint(); + +add_action( 'init', 'sg_create_subscribe_general_error_page' ); +add_action( 'init', 'sg_create_subscribe_missing_token_error_page' ); +add_action( 'init', 'sg_create_subscribe_invalid_token_error_page' ); +add_action( 'init', 'sg_create_subscribe_success_page' ); +add_action( 'init', 'sg_register_shortcodes' ); +add_action( 'wp_footer', 'sg_invalidate_token' ); \ No newline at end of file diff --git a/lib/class-sendgrid-nlvx-widget.php b/lib/class-sendgrid-nlvx-widget.php new file mode 100644 index 0000000..9560dd2 --- /dev/null +++ b/lib/class-sendgrid-nlvx-widget.php @@ -0,0 +1,319 @@ + 'SendGrid Marketing Campaigns Subscription Widget' + ) + ); + } + + /** + * Method called to render the back-end form (dashboard form) + * + * @param mixed $instance the widget instance + * + * @return void + */ + public function form( $instance ) { + if ( isset( $instance['title'] ) ) { + $title = $instance['title']; + } else { + $title = self::DEFAULT_TITLE; + } + + if ( isset( $instance['text'] ) ) { + $text = $instance['text']; + } else { + $text = self::DEFAULT_MESSAGE; + } + + if ( isset( $instance['error_text'] ) ) { + $error_text = $instance['error_text']; + } else { + $error_text = self::DEFAULT_ERROR_MESSAGE; + } + + if ( isset( $instance['error_email_text'] ) ) { + $error_email_text = $instance['error_email_text']; + } else { + $error_email_text = self::DEFAULT_ERROR_EMAIL_MESSAGE; + } + + if ( isset( $instance['success_text'] ) ) { + $success_text = $instance['success_text']; + } else { + $success_text = self::DEFAULT_SUBSCRIBE_MESSAGE; + } + + // Widget title input + echo '

'; + echo ''; + echo ''; + echo '

'; + + // Widget text input + echo '

'; + echo ''; + echo ''; + echo '

'; + + // Widget error text input + echo '

'; + echo ''; + echo ''; + echo '

'; + + // Widget email error text input + echo '

'; + echo ''; + echo ''; + echo '

'; + + // Widget success text input + echo '

'; + echo ''; + echo ''; + echo '

'; + } + + /** + * Method called to update the widget parameters in the back-end + * + * @param mixed $new_instance the new widget instance + * @param mixed $old_instance the old widget instance + * + * @return mixed the widget instace to save + */ + public function update( $new_instance, $old_instance ) { + $instance = array(); + $instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : ''; + $instance['text'] = ( ! empty( $new_instance['text'] ) ) ? $new_instance['text'] : ''; + $instance['error_text'] = ( ! empty( $new_instance['error_text'] ) ) ? $new_instance['error_text'] : ''; + $instance['error_email_text'] = ( ! empty( $new_instance['error_email_text'] ) ) ? $new_instance['error_email_text'] : ''; + $instance['success_text'] = ( ! empty( $new_instance['success_text'] ) ) ? $new_instance['success_text'] : ''; + + return $instance; + } + + /** + * Method called to render the front-end of the widget + * + * @param mixed $args wordpress provided arguments + * @param mixed $instance the widget instance + * + * @return void + */ + public function widget( $args, $instance ) { + $title = self::DEFAULT_TITLE; + if ( isset( $instance['title'] ) ) { + $title = apply_filters( 'widget_title', $instance['title'] ); + } + + $text = self::DEFAULT_MESSAGE; + if ( isset( $instance['text'] ) ) { + $text = apply_filters( 'widget_text', $instance['text'] ); + } + + $error_text = self::DEFAULT_ERROR_MESSAGE; + if ( isset( $instance['error_text'] ) ) { + $error_text = apply_filters( 'widget_text', $instance['error_text'] ); + } + + $error_email_text = self::DEFAULT_ERROR_EMAIL_MESSAGE; + if ( isset( $instance['error_email_text'] ) ) { + $error_email_text = apply_filters( 'widget_text', $instance['error_email_text'] ); + } + + $success_text = self::DEFAULT_SUBSCRIBE_MESSAGE; + if ( isset( $instance['success_text'] ) ) { + $success_text = apply_filters( 'widget_text', $instance['success_text'] ); + } + + // Theme style + echo $args['before_widget']; + + if ( ! empty( $title ) ) { + echo $args['before_title'] . $title . $args['after_title']; + } + + // Form was submitted + if ( isset( $_POST['sendgrid_mc_email'] ) ) { + $process_form_reponse = $this->process_subscription(); + if ( self::SUCCESS_EMAIL_SEND == $process_form_reponse ) { + echo '

' . $success_text . '

'; + } elseif ( self::INVALID_EMAIL_ERROR == $process_form_reponse ) { + echo '

' . $error_email_text . '

'; + $this->display_form(); + } else { + echo '

' . $error_text . '

'; + $this->display_form(); + } + } else { + // Display form + if ( ! empty( $text ) ) { + echo '

' . $text . '

'; + } + + $this->display_form(); + } + + // Theme style + echo $args['after_widget']; + } + + /** + * Method that processes the subscription params + * + * @return void + */ + private function process_subscription() { + $email_split = explode( "@", htmlspecialchars($_POST['sendgrid_mc_email'], ENT_QUOTES, 'UTF-8') ); + + if ( isset( $email_split[1] ) ) { + $email_domain = $email_split[1]; + + try { + $Punycode = new Punycode(); + $email_domain = $Punycode->decode( $email_split[1] ); + } + catch ( Exception $e ) { + } + + $email = $email_split[0] . '@' . $email_domain; + } else { + $email = htmlspecialchars( $_POST['sendgrid_mc_email'], ENT_QUOTES, 'UTF-8 '); + } + + // Bad call + if ( ! isset( $email ) or ! Sendgrid_Tools::is_valid_email( $email ) ) { + return self::INVALID_EMAIL_ERROR; + } + + if ( 'true' == Sendgrid_Tools::get_mc_opt_req_fname_lname() and 'true' == Sendgrid_Tools::get_mc_opt_incl_fname_lname() ) { + if ( ! isset( $_POST['sendgrid_mc_first_name'] ) or empty( $_POST['sendgrid_mc_first_name'] ) ) { + return self::ERROR_EMAIL_SEND; + } + if ( ! isset( $_POST['sendgrid_mc_last_name'] ) or empty( $_POST['sendgrid_mc_last_name'] ) ) { + return self::ERROR_EMAIL_SEND; + } + } + + if ( isset( $_POST['sendgrid_mc_first_name'] ) and isset( $_POST['sendgrid_mc_last_name'] ) ) { + Sendgrid_OptIn_API_Endpoint::send_confirmation_email( + $email, + htmlspecialchars( $_POST['sendgrid_mc_first_name'], ENT_QUOTES, 'UTF-8' ), + htmlspecialchars( $_POST['sendgrid_mc_last_name'], ENT_QUOTES, 'UTF-8' ) + ); + } else { + Sendgrid_OptIn_API_Endpoint::send_confirmation_email( $email ); + } + + return self::SUCCESS_EMAIL_SEND; + } + + /** + * Method that displays the subscription form + * + * @return void + */ + private function display_form() { + $email_label = stripslashes( Sendgrid_Tools::get_mc_email_label() ); + if ( false == $email_label ) { + $email_label = Sendgrid_Settings::DEFAULT_EMAIL_LABEL; + } + + $first_name_label = stripslashes( Sendgrid_Tools::get_mc_first_name_label() ); + if ( false == $first_name_label ) { + $first_name_label = Sendgrid_Settings::DEFAULT_FIRST_NAME_LABEL; + } + + $last_name_label = stripslashes( Sendgrid_Tools::get_mc_last_name_label() ); + if ( false == $last_name_label ) { + $last_name_label = Sendgrid_Settings::DEFAULT_LAST_NAME_LABEL; + } + + $subscribe_label = stripslashes( Sendgrid_Tools::get_mc_subscribe_label() ); + if ( false == $subscribe_label ) { + $subscribe_label = Sendgrid_Settings::DEFAULT_SUBSCRIBE_LABEL; + } + + $input_padding = "padding: "; + $input_padding .= Sendgrid_Tools::get_mc_input_padding_by_position( 'top' ) . 'px '; + $input_padding .= Sendgrid_Tools::get_mc_input_padding_by_position( 'right' ) . 'px '; + $input_padding .= Sendgrid_Tools::get_mc_input_padding_by_position( 'bottom' ) . 'px '; + $input_padding .= Sendgrid_Tools::get_mc_input_padding_by_position( 'left' ) . 'px;'; + + $button_padding = "margin: "; + $button_padding .= Sendgrid_Tools::get_mc_button_padding_by_position( 'top' ) . 'px '; + $button_padding .= Sendgrid_Tools::get_mc_button_padding_by_position( 'right' ) . 'px '; + $button_padding .= Sendgrid_Tools::get_mc_button_padding_by_position( 'bottom' ) . 'px '; + $button_padding .= Sendgrid_Tools::get_mc_button_padding_by_position( 'left' ) . 'px;'; + + $require_fname_lname = ''; + + echo '
'; + + if ( 'true' == Sendgrid_Tools::get_mc_opt_incl_fname_lname() ) { + if ( 'true' == Sendgrid_Tools::get_mc_opt_req_fname_lname() ) { + $require_fname_lname = "required"; + $first_name_label .= "*"; + $last_name_label .= "*"; + } + + echo '
'; + echo '
'; + echo ' '; + echo '
'; + echo '
'; + echo ' '; + echo '
'; + echo '
'; + echo '
'; + echo '
'; + echo ' '; + echo '
'; + echo '
'; + echo ' '; + echo '
'; + echo '
'; + } + + echo '
'; + echo '
'; + echo ' '; + echo '
'; + echo '
'; + echo ' '; + echo '
'; + echo '
'; + + echo '
'; + echo ' '; + echo '
'; + echo '
'; + } +} diff --git a/lib/class-sendgrid-nlvx.php b/lib/class-sendgrid-nlvx.php new file mode 100644 index 0000000..12cf8d4 --- /dev/null +++ b/lib/class-sendgrid-nlvx.php @@ -0,0 +1,189 @@ + array( + 'Authorization' => $auth + ), + 'decompress' => false, + 'timeout' => Sendgrid_Tools::get_request_timeout() + ); + + $url = Sendgrid_NLVX::NLVX_API_URL . '/lists'; + + $response = wp_remote_get( $url, $args ); + + if ( ! is_array( $response ) or ! isset( $response['body'] ) ) { + return false; + } + + $lists_response = json_decode($response['body'], true); + if ( isset( $lists_response['lists'] ) ) { + return $lists_response['lists']; + } + + return false; + } + + /** + * Adds a recipient in the SendGrid MC contact db + * + * @param string $email The email of the recipient + * @param string $first_name The first name of the recipient + * @param string $last_name The last name of the recipient + * + * @return mixed The recipient ID if successful, false otherwise. + */ + public static function add_recipient($email, $first_name = '', $last_name = '') + { + $auth = Sendgrid_NLVX::get_auth_header_value(); + + if ( false == $auth ) { + return false; + } + + $args = array( + 'headers' => array( + 'Authorization' => $auth + ), + 'decompress' => false, + 'timeout' => Sendgrid_Tools::get_request_timeout() + ); + + $url = Sendgrid_NLVX::NLVX_API_URL . '/recipients'; + + $contact = array('email' => $email); + + if ( '' != $first_name ) { + $contact['first_name'] = $first_name; + } + + if ( '' != $last_name ) { + $contact['last_name'] = $last_name; + } + + $req_body = json_encode(array($contact)); + $args['body'] = $req_body; + + $response = wp_remote_post( $url, $args ); + + if ( ! is_array( $response ) or ! isset( $response['body'] ) ) { + return false; + } + + $recipient_response = json_decode($response['body'], true); + if ( isset( $recipient_response['error_count'] ) and 0 != $recipient_response['error_count'] ) { + return false; + } + + if ( ! isset( $recipient_response['persisted_recipients'] ) or ! isset( $recipient_response['persisted_recipients'][0] ) ) { + return false; + } + + return $recipient_response['persisted_recipients'][0]; + } + + /** + * Adds a recipient in the specified list + * + * @param string $recipient_id the ID of the recipient. + * @param string $list_id the ID of the list. + * + * @return bool True if successful, false otherwise. + */ + public static function add_recipient_to_list($recipient_id, $list_id) + { + $auth = Sendgrid_NLVX::get_auth_header_value(); + + if ( false == $auth ) { + return false; + } + + $args = array( + 'headers' => array( + 'Authorization' => $auth + ), + 'decompress' => false, + 'timeout' => Sendgrid_Tools::get_request_timeout() + ); + + $url = Sendgrid_NLVX::NLVX_API_URL . '/lists/'. $list_id . '/recipients/' . $recipient_id; + + $response = wp_remote_post( $url, $args ); + + if ( ! is_array( $response ) or ! isset( $response['body'] ) ) { + return false; + } + + if ( isset( $response['response']['code'] ) && 201 == $response['response']['code'] ) { + return true; + } + + return false; + } + + /** + * Adds a recipient in the SendGrid MC contact db and adds it to the list + * + * @param string $email The email of the recipient + * @param string $first_name The first name of the recipient + * @param string $last_name The last name of the recipient + * + * @return bool True if successful, false otherwise. + */ + public static function create_and_add_recipient_to_list($email, $first_name = '', $last_name = '') + { + $list_id = Sendgrid_Tools::get_mc_list_id(); + if ( false == $list_id ) { + return false; + } + + $recipient_id = Sendgrid_NLVX::add_recipient($email, $first_name, $last_name); + if ( false == $recipient_id ) { + return false; + } + + return Sendgrid_NLVX::add_recipient_to_list($recipient_id, $list_id); + } +} \ No newline at end of file diff --git a/lib/class-sendgrid-settings.php b/lib/class-sendgrid-settings.php new file mode 100644 index 0000000..85b2358 --- /dev/null +++ b/lib/class-sendgrid-settings.php @@ -0,0 +1,862 @@ +
Invalid nonce. Refresh the page and try again.'; + + public static $plugin_directory; + + /** + * Settings class constructor + * + * @param string $plugin_directory name of the plugin directory + * + * @return void + */ + public function __construct( $plugin_directory ) + { + self::$plugin_directory = $plugin_directory; + add_action( 'init', array( __CLASS__, 'set_up_menu' ) ); + } + + /** + * Method that is called to set up the settings menu + * + * @return void + */ + public static function set_up_menu() + { + if ( ( ! is_multisite() and current_user_can('manage_options') ) || ( is_multisite() and ! is_main_site() and get_option( 'sendgrid_can_manage_subsite' ) ) ) { + // Add SendGrid settings page in the menu + add_action( 'admin_menu', array( __CLASS__, 'add_settings_menu' ) ); + // Add SendGrid settings page in the plugin list + add_filter( 'plugin_action_links_' . self::$plugin_directory, array( __CLASS__, 'add_settings_link' ) ); + } elseif ( is_multisite() and is_main_site() ) { + // Add SendGrid settings page in the network admin menu + add_action( 'network_admin_menu', array( __CLASS__, 'add_network_settings_menu' ) ); + } + // Add SendGrid Help contextual menu in the settings page + add_filter( 'contextual_help', array( __CLASS__, 'show_contextual_help' ), 10, 3 ); + // Add SendGrid javascripts in header + add_action( 'admin_enqueue_scripts', array( __CLASS__, 'add_headers' ) ); + } + /** + * Add SendGrid settings page in the menu + * + * @return void + */ + public static function add_settings_menu() { + add_options_page( __( 'SendGrid' ), __( 'SendGrid' ), 'manage_options', 'sendgrid-settings', + array( __CLASS__, 'show_settings_page' )); + } + + /** + * Add SendGrid settings page in the network menu + * + * @return void + */ + public static function add_network_settings_menu() { + add_menu_page( __( 'SendGrid Settings' ), __( 'SendGrid Settings' ), 'manage_options', 'sendgrid-settings', + array( __CLASS__, 'show_settings_page' )); + } + + /** + * Add SendGrid settings page in the plugin list + * + * @param mixed $links links + * + * @return mixed links + */ + public static function add_settings_link( $links ) + { + $settings_link = '
Settings'; + array_unshift( $links, $settings_link ); + + return $links; + } + + /** + * Add SendGrid Help contextual menu in the settings page + * + * @param mixed $contextual_help contextual help + * @param integer $screen_id screen id + * @param integer $screen screen + * + * @return string + */ + public static function show_contextual_help( $contextual_help, $screen_id, $screen ) + { + if ( SENDGRID_PLUGIN_STATISTICS == $screen_id or SENDGRID_PLUGIN_SETTINGS == $screen_id ) + { + $contextual_help = file_get_contents( dirname( __FILE__ ) . '/../view/sendgrid_contextual_help.php' ); + } + + return $contextual_help; + } + + /** + * Include css & javascripts we need for SendGrid settings page and widget + * + * @return void + */ + public static function add_headers( $hook ) + { + if ( strpos( $hook, 'sendgrid-settings' ) === false ) { + return; + } + + wp_enqueue_style( 'sendgrid', plugin_dir_url( __FILE__ ) . '../view/css/sendgrid.css' ); + wp_enqueue_style( 'select2', plugin_dir_url( __FILE__ ) . '../view/css/select2.min.css' ); + + wp_enqueue_script( 'select2', plugin_dir_url( __FILE__ ) . '../view/js/select2.full.min.js', array('jquery') ); + wp_enqueue_script( 'sendgrid', plugin_dir_url( __FILE__ ) . '../view/js/sendgrid.settings-v1.7.3.js', array('jquery', 'select2') ); + } + + /** + * Display SendGrid settings page content + * + * @return void + */ + public static function show_settings_page() + { + $response = null; + $error_from_update = false; + + if ( 'POST' == $_SERVER['REQUEST_METHOD'] and ! isset( $_POST['sg_dismiss_widget_notice'] ) ) { + $response = self::do_post( $_POST ); + if ( isset( $response['status'] ) and $response['status'] == 'error' ) { + $error_from_update = true; + } + } + + $status = ''; + $message = ''; + + $api_key = stripslashes( Sendgrid_Tools::get_api_key() ); + $send_method = stripslashes( Sendgrid_Tools::get_send_method() ); + $name = stripslashes( Sendgrid_Tools::get_from_name() ); + $email = stripslashes( Sendgrid_Tools::get_from_email() ); + $reply_to = stripslashes( Sendgrid_Tools::get_reply_to() ); + $categories = stripslashes( Sendgrid_Tools::get_categories() ); + $template = stripslashes( Sendgrid_Tools::get_template() ); + $port = stripslashes( Sendgrid_Tools::get_port() ); + $content_type = stripslashes( Sendgrid_Tools::get_content_type() ); + $unsubscribe_group_id = stripslashes( Sendgrid_Tools::get_unsubscribe_group() ); + $stats_categories = stripslashes( Sendgrid_Tools::get_stats_categories() ); + + $mc_api_key = stripslashes( Sendgrid_Tools::get_mc_api_key() ); + $mc_list_id = stripslashes( Sendgrid_Tools::get_mc_list_id() ); + $mc_opt_use_transactional = stripslashes( Sendgrid_Tools::get_mc_opt_use_transactional() ); + $mc_opt_incl_fname_lname = stripslashes( Sendgrid_Tools::get_mc_opt_incl_fname_lname() ); + $mc_opt_req_fname_lname = stripslashes( Sendgrid_Tools::get_mc_opt_req_fname_lname() ); + $mc_signup_confirmation_page = stripslashes( Sendgrid_Tools::get_mc_signup_confirmation_page() ); + + // input padding + $mc_signup_input_padding_top = stripslashes( Sendgrid_Tools::get_mc_input_padding_by_position( 'top' ) ); + $mc_signup_input_padding_right = stripslashes( Sendgrid_Tools::get_mc_input_padding_by_position( 'right' ) ); + $mc_signup_input_padding_bottom = stripslashes( Sendgrid_Tools::get_mc_input_padding_by_position( 'bottom' ) ); + $mc_signup_input_padding_left = stripslashes( Sendgrid_Tools::get_mc_input_padding_by_position( 'left' ) ); + + // button padding + $mc_signup_button_padding_top = stripslashes( Sendgrid_Tools::get_mc_button_padding_by_position( 'top' ) ); + $mc_signup_button_padding_right = stripslashes( Sendgrid_Tools::get_mc_button_padding_by_position( 'right' ) ); + $mc_signup_button_padding_bottom = stripslashes( Sendgrid_Tools::get_mc_button_padding_by_position( 'bottom' ) ); + $mc_signup_button_padding_left = stripslashes( Sendgrid_Tools::get_mc_button_padding_by_position( 'left' ) ); + + $mc_signup_email_subject = Sendgrid_Tools::get_mc_signup_email_subject(); + if ( false == $mc_signup_email_subject ) { + $mc_signup_email_subject = self::DEFAULT_SIGNUP_EMAIL_SUBJECT . get_bloginfo('name'); + } + $mc_signup_email_subject = stripslashes( $mc_signup_email_subject ); + + $mc_signup_email_content = Sendgrid_Tools::get_mc_signup_email_content(); + if ( false == $mc_signup_email_content ) { + $mc_signup_email_content = self::DEFAULT_SIGNUP_EMAIL_CONTENT . get_bloginfo('name') . '</p>'; + } + $mc_signup_email_content = stripslashes( $mc_signup_email_content ); + + $mc_signup_email_content_text = Sendgrid_Tools::get_mc_signup_email_content_text(); + if ( false == $mc_signup_email_content_text ) { + $mc_signup_email_content_text = self::DEFAULT_SIGNUP_EMAIL_CONTENT_TEXT . get_bloginfo('name'); + } + $mc_signup_email_content_text = stripslashes( $mc_signup_email_content_text ); + + $confirmation_pages = get_pages( array( 'parent' => 0 ) ); + + $checked_use_transactional = ''; + if ( 'true' == $mc_opt_use_transactional ) { + $checked_use_transactional = 'checked'; + } + + $checked_incl_fname_lname = ''; + if ( 'true' == $mc_opt_incl_fname_lname ) { + $checked_incl_fname_lname = 'checked'; + } + + $checked_req_fname_lname = ''; + if ( 'true' == $mc_opt_req_fname_lname ) { + $checked_req_fname_lname = 'checked'; + } + + $contact_list_id_is_valid = false; + $contact_lists = Sendgrid_NLVX::get_all_lists(); + + // If the response to get all contact lists did not fail + if ( false != $contact_lists ) { + // If there's no list ID in the DB + if ( empty( $mc_list_id ) ) { + // The MC API key was just set but no contact list ID is set + // even though the select shows the first one as selected by default. + // We set the first list ID in the database in order to enable the contact upload test. + if ( isset( $contact_lists[0] ) and isset( $contact_lists[0]['id'] ) ) { + $mc_list_id = $contact_lists[0]['id']; + Sendgrid_Tools::set_mc_list_id( $mc_list_id ); + $contact_list_id_is_valid = true; + } + } else { + // Check the validity of the list ID set in the database + foreach ( $contact_lists as $key => $list ) { + if ( $mc_list_id == $list['id'] ) { + $contact_list_id_is_valid = true; + break; + } + } + } + } + + $allowed_send_methods = array( 'API' ); + if ( class_exists( 'Swift' ) ) { + $allowed_send_methods[] = 'SMTP'; + } + + $is_mc_api_key_valid = true; + if ( 'true' == $mc_opt_use_transactional and ! empty( $api_key ) ) { + if ( ! Sendgrid_Tools::check_api_key_mc( $api_key ) ) { + $is_mc_api_key_valid = false; + } + } else if ( 'true' != $mc_opt_use_transactional ) { + if ( ! Sendgrid_Tools::check_api_key_mc( $mc_api_key ) ) { + $is_mc_api_key_valid = false; + } + } + + $is_api_key_valid = false; + + if ( ! $error_from_update ) { + if ( ! in_array( strtoupper( $send_method ), $allowed_send_methods ) ) { + $message = 'Invalid send method configured in the config file, available methods are: ' . join( ", ", $allowed_send_methods ); + $status = 'error'; + } + + if ( ! empty( $api_key ) ) { + if ( ! Sendgrid_Tools::check_api_key( $api_key, true ) ) { + $message = 'API Key is invalid or without permissions.'; + $status = 'error'; + } elseif ( 'true' == $mc_opt_use_transactional and ! $is_mc_api_key_valid ) { + $message = 'The configured API Key for subscription widget is invalid, empty or without permissions.'; + $status = 'error'; + } elseif ( 'error' != $status ) { + $status = 'valid_auth'; + $is_api_key_valid = true; + } + } + + if ( $template and ! Sendgrid_Tools::check_template( $template ) ) { + $message = 'Template not found.'; + $status = 'error'; + } + + if ( ! in_array( $port, Sendgrid_Tools::$allowed_ports ) ) { + $message = 'Invalid port configured in the config file, available ports are: ' . join( ",", Sendgrid_Tools::$allowed_ports ); + $status = 'error'; + } + + if ( defined( 'SENDGRID_CONTENT_TYPE' ) ) { + if ( ! in_array( SENDGRID_CONTENT_TYPE, Sendgrid_Tools::$allowed_content_type ) ) { + $message = 'Invalid content type, available content types are: "plaintext" or "html".'; + $status = 'error'; + } + } + + if ( defined( 'SENDGRID_FROM_EMAIL' ) ) { + if ( ! Sendgrid_Tools::is_valid_email( SENDGRID_FROM_EMAIL ) ) { + $message = 'Sending email address is not valid in config file.'; + $status = 'error'; + } + } + + if ( defined( 'SENDGRID_REPLY_TO' ) ) { + if ( ! Sendgrid_Tools::is_valid_email( SENDGRID_REPLY_TO ) ) { + $message = 'Reply email address is not valid in config file.'; + $status = 'error'; + } + } + } + + // get unsubscribe groups + $unsubscribe_groups = Sendgrid_Tools::get_all_unsubscribe_groups(); + $no_permission_on_unsubscribe_groups = false; + + if ( 'true' != Sendgrid_Tools::get_asm_permission() ) { + $no_permission_on_unsubscribe_groups = true; + } + + // get form configuration + $mc_signup_email_label = Sendgrid_Tools::get_mc_email_label(); + if ( false == $mc_signup_email_label ) { + $mc_signup_email_label = self::DEFAULT_EMAIL_LABEL; + } + $mc_signup_email_label = stripslashes( $mc_signup_email_label ); + + $mc_signup_first_name_label = Sendgrid_Tools::get_mc_first_name_label(); + if ( false == $mc_signup_first_name_label ) { + $mc_signup_first_name_label = self::DEFAULT_FIRST_NAME_LABEL; + } + $mc_signup_first_name_label = stripslashes( $mc_signup_first_name_label ); + + $mc_signup_last_name_label = Sendgrid_Tools::get_mc_last_name_label(); + if ( false == $mc_signup_last_name_label ) { + $mc_signup_last_name_label = self::DEFAULT_LAST_NAME_LABEL; + } + $mc_signup_last_name_label = stripslashes( $mc_signup_last_name_label ); + + $mc_signup_subscribe_label = Sendgrid_Tools::get_mc_subscribe_label(); + if ( false == $mc_signup_subscribe_label ) { + $mc_signup_subscribe_label = self::DEFAULT_SUBSCRIBE_LABEL; + } + $mc_signup_subscribe_label = stripslashes( $mc_signup_subscribe_label ); + + $is_env_send_method = defined( 'SENDGRID_SEND_METHOD' ); + $is_env_api_key = defined( 'SENDGRID_API_KEY' ); + $is_env_port = defined( 'SENDGRID_PORT' ); + $is_env_content_type = defined( 'SENDGRID_CONTENT_TYPE' ); + $is_env_unsubscribe_group = defined( 'SENDGRID_UNSUBSCRIBE_GROUP' ); + $is_env_mc_api_key = defined( 'SENDGRID_MC_API_KEY' ); + $is_env_mc_list_id = defined( 'SENDGRID_MC_LIST_ID' ); + $is_env_mc_opt_use_transactional = defined( 'SENDGRID_MC_OPT_USE_TRANSACTIONAL' ); + $is_env_mc_opt_incl_fname_lname = defined( 'SENDGRID_MC_OPT_INCL_FNAME_LNAME' ); + $is_env_mc_opt_req_fname_lname = defined( 'SENDGRID_MC_OPT_REQ_FNAME_LNAME' ); + $is_env_mc_signup_email_subject = defined( 'SENDGRID_MC_SIGNUP_EMAIL_SUBJECT' ); + $is_env_mc_signup_email_content = defined( 'SENDGRID_MC_SIGNUP_EMAIL_CONTENT' ); + $is_env_mc_signup_email_content_text = defined( 'SENDGRID_MC_SIGNUP_EMAIL_CONTENT_TEXT' ); + $is_env_mc_signup_confirmation_page = defined( 'SENDGRID_MC_SIGNUP_CONFIRMATION_PAGE' ); + $is_env_mc_email_label = defined( 'SENDGRID_MC_EMAIL_LABEL' ); + $is_env_mc_first_name_label = defined( 'SENDGRID_MC_FIRST_NAME_LABEL' ); + $is_env_mc_last_name_label = defined( 'SENDGRID_MC_LAST_NAME_LABEL' ); + $is_env_mc_subscribe_label = defined( 'SENDGRID_MC_SUBSCRIBE_LABEL' ); + + if ( $response and $status != 'error' ) { + $message = $response['message']; + $status = $response['status']; + if( array_key_exists( 'error_type', $response ) ) { + $error_type = $response['error_type']; + } + } + + if ( $api_key != '' and ! Sendgrid_Tools::check_api_key_stats( $api_key ) ) { + $warning_message = 'The configured API key does not have statistics permissions. You will not be able to see the statistics page.'; + $warning_status = 'notice notice-warning'; + } + + if ( $is_mc_api_key_valid and ! $is_api_key_valid ) { + $warning_message = 'You need to configure an API Key for sending subscription emails on the General tab.'; + $warning_status = 'notice notice-warning'; + $warning_exclude_tab = 'general'; + Sendgrid_Tools::set_mc_auth_valid( 'false' ); + } else if ( $is_mc_api_key_valid and $is_api_key_valid ) { + Sendgrid_Tools::set_mc_auth_valid( 'true' ); + } + + require_once dirname( __FILE__ ) . '/../view/sendgrid_settings.php'; + } + + /** + * Routes processing of request parameters depending on the source section of the settings page + * + * @param mixed $params array of parameters from $_POST + * + * @return mixed response array from the save or send functions + */ + private static function do_post( $params ) { + + if ( ! isset( $params['sgnonce'] ) ) { + die( self::NONCE_ERROR ); + } + + if ( ! wp_verify_nonce( $params['sgnonce'], 'sgnonce' ) ) { + die( self::NONCE_ERROR ); + } + + if ( isset( $params['mc_settings'] ) and $params['mc_settings'] ) { + return self::save_mc_settings( $params ); + } + + if ( isset( $params['email_test'] ) and $params['email_test'] ) { + return self::send_test_email( $params ); + } + + if ( isset( $params['contact_upload_test'] ) and $params['contact_upload_test'] ) { + return self::send_contact_upload_test( $params ); + } + + if ( isset( $params['subsite_settings'] ) and $params['subsite_settings'] ) { + return self::save_subsite_settings( $params ); + } + + return self::save_general_settings( $params ); + } + + /** + * Saves the Subsite settings sent from the settings page + * + * @param mixed $params array of parameters from $_POST + * + * @return mixed response array with message and status + */ + private static function save_subsite_settings( $params ) { + $limit = 50; + $offset = 0; + + if ( isset( $_GET['limit'] ) ) { + $limit = intval( $_GET['limit'] ); + } + + if ( isset( $_GET['offset'] ) ) { + $offset = intval( $_GET['offset'] ); + } + + $sites = get_sites( array( 'number' => $limit, 'offset' => $offset ) ); + foreach( $sites as $site ) { + if ( isset( $params['checked_sites'][$site->blog_id] ) and + 'on' == $params['checked_sites'][$site->blog_id] ) { + update_blog_option( $site->blog_id, 'sendgrid_can_manage_subsite', 1 ); + } else { + update_blog_option( $site->blog_id, 'sendgrid_can_manage_subsite', 0 ); + } + } + + return array( + 'message' => 'Options are saved.', + 'status' => 'updated' + ); + } + + /** + * Saves the Marketing Campaigns parameters sent from the settings page + * + * @param mixed $params array of parameters from $_POST + * + * @return mixed response array with message and status + */ + private static function save_mc_settings( $params ) { + // Use Transactional Option + $use_transactional_key = false; + + if ( ! defined( 'SENDGRID_MC_OPT_USE_TRANSACTIONAL' ) ) { + if ( isset( $params['sendgrid_mc_use_transactional'] ) ) { + $use_transactional_key = true; + Sendgrid_Tools::set_mc_opt_use_transactional( 'true' ); + } else { + Sendgrid_Tools::set_mc_opt_use_transactional( 'false' ); + } + } else { + $use_transactional_key = ( 'true' == SENDGRID_MC_OPT_USE_TRANSACTIONAL ? true : false ); + } + + // If Use Transactional Is Set check the API key for MC scopes. + if ( $use_transactional_key ) { + $apikey = Sendgrid_Tools::get_api_key(); + if ( false == $apikey or empty( $apikey ) ) { + $response = array( + 'message' => 'API Key is empty.', + 'status' => 'error' + ); + + return $response; + } + + if ( ! Sendgrid_Tools::check_api_key_mc( $apikey ) ) { + $response = array( + 'message' => 'API Key is invalid or without permissions.', + 'status' => 'error' + ); + + return $response; + } + } + + if ( false == $use_transactional_key and ! defined( 'SENDGRID_MC_API_KEY' ) ) { + // MC API Key was set empty on purpose + if ( ! isset( $params['sendgrid_mc_apikey'] ) or empty( $params['sendgrid_mc_apikey'] ) ) { + $response = array( + 'message' => 'API Key is empty.', + 'status' => 'error' + ); + + Sendgrid_Tools::set_mc_api_key( '' ); + } else { + // MC API Key was set, check scopes and save if correct + $apikey = htmlspecialchars( $params['sendgrid_mc_apikey'], ENT_QUOTES, 'UTF-8' ); + + if ( ! Sendgrid_Tools::check_api_key_mc( $apikey ) ) { + $response = array( + 'message' => 'API Key is invalid or without permissions.', + 'status' => 'error' + ); + } else { + Sendgrid_Tools::set_mc_api_key( $apikey ); + } + } + } + + if ( ! defined( 'SENDGRID_MC_OPT_INCL_FNAME_LNAME' ) ) { + if ( isset( $params['sendgrid_mc_incl_fname_lname'] ) ) { + Sendgrid_Tools::set_mc_opt_incl_fname_lname( 'true' ); + } else { + Sendgrid_Tools::set_mc_opt_incl_fname_lname( 'false' ); + } + } + + if ( ! defined( 'SENDGRID_MC_OPT_REQ_FNAME_LNAME' ) ) { + if ( isset( $params['sendgrid_mc_req_fname_lname'] ) ) { + Sendgrid_Tools::set_mc_opt_req_fname_lname( 'true' ); + } else { + Sendgrid_Tools::set_mc_opt_req_fname_lname( 'false' ); + } + } + + if ( isset( $params['sendgrid_mc_contact_list'] ) and ! defined( 'SENDGRID_MC_LIST_ID' ) ) { + $mc_list_id = htmlspecialchars( $params['sendgrid_mc_contact_list'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_mc_list_id( $mc_list_id ); + } + + if ( ! defined( 'SENDGRID_MC_SIGNUP_EMAIL_SUBJECT' ) ) { + if ( ! isset( $params['sendgrid_mc_email_subject'] ) or empty( $params['sendgrid_mc_email_subject'] ) ) { + $response = array( + 'message' => 'Signup email subject cannot be empty.', + 'status' => 'error' + ); + } else { + $email_subject = htmlspecialchars( $params['sendgrid_mc_email_subject'] , ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_mc_signup_email_subject( $email_subject ); + } + } + + if ( ! defined( 'SENDGRID_MC_SIGNUP_EMAIL_CONTENT' ) ) { + if ( ! isset( $params['sendgrid_mc_email_content'] ) or empty( $params['sendgrid_mc_email_content'] ) ) { + $response = array( + 'message' => 'Signup email content cannot be empty.', + 'status' => 'error' + ); + } else { + $html_content = htmlspecialchars( $params['sendgrid_mc_email_content'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_mc_signup_email_content( $html_content ); + } + } + + if ( ! defined( 'SENDGRID_MC_SIGNUP_EMAIL_CONTENT_TEXT' ) ) { + if ( ! isset( $params['sendgrid_mc_email_content_text'] ) or empty( $params['sendgrid_mc_email_content_text'] ) ) { + $response = array( + 'message' => 'Signup email content plain/text cannot be empty.', + 'status' => 'error' + ); + } else { + $plaintext_content = htmlspecialchars( $params['sendgrid_mc_email_content_text'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_mc_signup_email_content_text( $plaintext_content ); + } + } + + if ( isset( $params['sendgrid_mc_signup_page'] ) and ! defined( 'SENDGRID_MC_SIGNUP_CONFIRMATION_PAGE' ) ) { + $signup_page = htmlspecialchars( $params['sendgrid_mc_signup_page'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_mc_signup_confirmation_page( $signup_page ); + } + + // form configuration + // labels + if ( isset( $params['sendgrid_mc_email_label'] ) and ! defined( 'SENDGRID_MC_EMAIL_LABEL' ) ) { + $email_label = htmlspecialchars( $params['sendgrid_mc_email_label'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_mc_email_label( $email_label ); + } + if ( isset( $params['sendgrid_mc_first_name_label'] ) and ! defined( 'SENDGRID_MC_FIRST_NAME_LABEL' ) ) { + $first_name_label = htmlspecialchars( $params['sendgrid_mc_first_name_label'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_mc_first_name_label( $first_name_label ); + } + if ( isset( $params['sendgrid_mc_last_name_label'] ) and ! defined( 'SENDGRID_MC_LAST_NAME_LABEL' ) ) { + $last_name_label = htmlspecialchars( $params['sendgrid_mc_last_name_label'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_mc_last_name_label( $last_name_label ); + } + if ( isset( $params['sendgrid_mc_subscribe_label'] ) and ! defined( 'SENDGRID_MC_SUBSCRIBE_LABEL' ) ) { + $subscribe_label = htmlspecialchars( $params['sendgrid_mc_subscribe_label'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_mc_subscribe_label( $subscribe_label ); + } + // input padding + if ( isset( $params['sendgrid_mc_input_padding_top'] ) ) { + $padding = htmlspecialchars( $params['sendgrid_mc_input_padding_top'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_mc_input_padding( 'top', $padding ); + } + if ( isset( $params['sendgrid_mc_input_padding_right'] ) ) { + $padding = htmlspecialchars( $params['sendgrid_mc_input_padding_right'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_mc_input_padding( 'right', $padding ); + } + if ( isset( $params['sendgrid_mc_input_padding_bottom'] ) ) { + $padding = htmlspecialchars( $params['sendgrid_mc_input_padding_bottom'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_mc_input_padding( 'bottom', $padding ); + } + if ( isset( $params['sendgrid_mc_input_padding_left'] ) ) { + $padding = htmlspecialchars( $params['sendgrid_mc_input_padding_left'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_mc_input_padding( 'left', $padding ); + } + // button padding + if ( isset( $params['sendgrid_mc_button_padding_top'] ) ) { + $padding = htmlspecialchars( $params['sendgrid_mc_button_padding_top'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_mc_button_padding( 'top', $padding ); + } + if ( isset( $params['sendgrid_mc_button_padding_right'] ) ) { + $padding = htmlspecialchars( $params['sendgrid_mc_button_padding_right'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_mc_button_padding( 'right', $padding ); + } + if ( isset( $params['sendgrid_mc_button_padding_bottom'] ) ) { + $padding = htmlspecialchars( $params['sendgrid_mc_button_padding_bottom'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_mc_button_padding( 'bottom', $padding ); + } + if ( isset( $params['sendgrid_mc_button_padding_left'] ) ) { + $padding = htmlspecialchars( $params['sendgrid_mc_button_padding_left'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_mc_button_padding( 'left', $padding ); + } + + if ( isset( $response ) and $response['status'] == 'error' ) { + return $response; + } + + return array( + 'message' => 'Options are saved.', + 'status' => 'updated' + ); + } + + /** + * Saves the General Settings parameters sent from the settings page + * + * @param mixed $params array of parameters from $_POST + * + * @return mixed response array with message and status + */ + private static function save_general_settings( $params ) { + if ( ! defined( 'SENDGRID_API_KEY' ) ) { + if ( ! isset( $params['sendgrid_apikey'] ) or empty( $params['sendgrid_apikey'] ) ) { + $response = array( + 'message' => 'API Key is empty.', + 'status' => 'error' + ); + + Sendgrid_Tools::set_api_key( '' ); + + return $response; + } + + if ( ! Sendgrid_Tools::check_api_key( $params['sendgrid_apikey'], true ) ) { + $response = array( + 'message' => 'API Key is invalid or without permissions.', + 'status' => 'error' + ); + + return $response; + } + + if ( 'true' == Sendgrid_Tools::get_mc_opt_use_transactional() and ! Sendgrid_Tools::check_api_key_mc( $params['sendgrid_apikey'] ) ) { + $response = array( + 'message' => 'This API key is also used for the Subscription Widget but does not have Marketing Campaigns permissions.', + 'status' => 'error' + ); + + return $response; + } + + Sendgrid_Tools::set_api_key( $params['sendgrid_apikey'] ); + } + + if ( isset( $params['sendgrid_name'] ) ) { + $from_name = htmlspecialchars( $params['sendgrid_name'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_from_name( $from_name ); + } + + if ( isset( $params['sendgrid_email'] ) ) { + if ( ! empty( $params['sendgrid_email'] ) and ! Sendgrid_Tools::is_valid_email( $params['sendgrid_email'] ) ) { + $response = array( + 'message' => 'Sending email address is not valid.', + 'status' => 'error' + ); + } else { + // Although it should be rejected by email validity, just to be extra safe + $from_email = htmlspecialchars( $params['sendgrid_email'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_from_email( $from_email ); + } + } + + if ( isset( $params['sendgrid_reply_to'] ) ) { + if ( ! empty( $params['sendgrid_reply_to'] ) and ! Sendgrid_Tools::is_valid_email( $params['sendgrid_reply_to'] ) ) { + $response = array( + 'message' => 'Reply email address is not valid.', + 'status' => 'error' + ); + } else { + // Although it should be rejected by email validity, just to be extra safe + $reply_to_email = htmlspecialchars( $params['sendgrid_reply_to'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_reply_to( $reply_to_email ); + } + } + + if ( isset( $params['sendgrid_categories'] ) ) { + $categories = htmlspecialchars( $params['sendgrid_categories'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_categories( $categories ); + } + + if ( isset( $params['sendgrid_stats_categories'] ) ) { + $stats_categories = htmlspecialchars( $params['sendgrid_stats_categories'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_stats_categories( $stats_categories ); + } + + if ( isset( $params['sendgrid_template'] ) ) { + $template_id = htmlspecialchars( $params['sendgrid_template'], ENT_QUOTES, 'UTF-8' ); + if ( ! Sendgrid_Tools::check_template( $template_id ) ) { + $response = array( + 'message' => 'Template not found.', + 'status' => 'error' + ); + } else { + Sendgrid_Tools::set_template( $template_id ); + } + } + + if ( isset( $params['send_method'] ) ) { + $send_method = htmlspecialchars( $params['send_method'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_send_method( $send_method ); + } + + if ( isset( $params['sendgrid_port'] ) ) { + $port = htmlspecialchars( $params['sendgrid_port'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_port( $port ); + } + + if ( isset( $params['content_type'] ) ) { + $content_type = htmlspecialchars( $params['content_type'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_content_type( $content_type ); + } + + if ( isset( $params['unsubscribe_group'] ) ) { + $unsubscribe_group = htmlspecialchars( $params['unsubscribe_group'], ENT_QUOTES, 'UTF-8' ); + Sendgrid_Tools::set_unsubscribe_group( $unsubscribe_group ); + } + + if( isset( $response ) and $response['status'] == 'error') { + return $response; + } + + return array( + 'message' => 'Options are saved.', + 'status' => 'updated' + ); + } + + /** + * Sends a test email using the parameters specified in the settings page + * + * @param mixed $params array of parameters from $_POST + * + * @return mixed response array with message and status + */ + private static function send_test_email( $params ) { + $to = $params['sendgrid_to']; + if ( ! Sendgrid_Tools::is_valid_email( $to ) ) { + return array( + 'message' => 'Email address in field "To" is not valid.', + 'status' => 'error', + 'error_type' => 'sending' + ); + } + + $subject = stripslashes( $params['sendgrid_subj'] ); + $body = stripslashes( $params['sendgrid_body'] ); + $headers = $params['sendgrid_headers']; + if ( ! Sendgrid_Tools::valid_emails_in_headers( $headers ) ) { + return array( + 'message' => 'One or more email addresses in field "headers" are not valid.', + 'status' => 'error', + 'error_type' => 'sending' + ); + } + + if ( preg_match( '/content-type:\s*text\/html/i', $headers ) ) { + $body_br = nl2br( $body ); + } else { + $body_br = $body; + } + + $sent = wp_mail( $to, $subject, $body_br, $headers ); + if ( true === $sent ) { + return array( + 'message' => 'Email was sent.', + 'status' => 'updated' + ); + } + + return array( + 'message' => 'Email wasn\'t sent.', + 'status' => 'error', + 'error_type' => 'sending' + ); + } + + /** + * Uploads a contact using the parameters specified in the settings page + * + * @param mixed $params array of parameters from $_POST + * + * @return mixed response array with message and status + */ + private static function send_contact_upload_test( $params ) { + $email = $params['sendgrid_test_email']; + if ( ! Sendgrid_Tools::is_valid_email( $email ) ) { + return array( + 'message' => 'Email address provided is invalid.', + 'status' => 'error', + 'error_type' => 'upload' + ); + } + + $apikey = Sendgrid_Tools::get_api_key(); + if ( ! Sendgrid_Tools::check_api_key( $apikey, true ) ) { + return array( + 'message' => 'API Key used for mail send is invalid or without permissions.', + 'status' => 'error', + 'error_type' => 'upload' + ); + } + + if ( false == Sendgrid_OptIn_API_Endpoint::send_confirmation_email( $email, '', '', true ) ) { + return array( + 'message' => 'An error occured when trying send the subscription email. Please make sure you have configured all settings properly.', + 'status' => 'error', + 'error_type' => 'upload' + ); + } + + return array( + 'message' => 'Subscription confirmation email was sent.', + 'status' => 'updated' + ); + } +} \ No newline at end of file diff --git a/lib/class-sendgrid-statistics.php b/lib/class-sendgrid-statistics.php new file mode 100644 index 0000000..38ffa75 --- /dev/null +++ b/lib/class-sendgrid-statistics.php @@ -0,0 +1,190 @@ + wp_create_nonce('sendgrid-nonce') + ) + ); + } + + /** + * Get SendGrid stats from API and return JSON response, + * this function work like a page and is used for ajax request by javascript functions + * + * @return void; + */ + public static function get_ajax_statistics() + { + if ( ! isset( $_POST['sendgrid_nonce'] ) || ! wp_verify_nonce( $_POST['sendgrid_nonce'], 'sendgrid-nonce') ) { + die( 'Permissions check failed' ); + } + + $parameters = array(); + $parameters['apikey'] = Sendgrid_Tools::get_api_key(); + $parameters['data_type'] = 'global'; + + if ( array_key_exists( 'days', $_POST ) ) { + $parameters['days'] = $_POST['days']; + } else { + $parameters['start_date'] = $_POST['start_date']; + $parameters['end_date'] = $_POST['end_date']; + } + + $endpoint = 'v3/stats'; + + if ( isset( $_POST['type'] ) && 'general' != $_POST['type'] ) { + if( 'wordpress' == $_POST['type'] ) { + $parameters['categories'] = 'wp_sendgrid_plugin'; + } else { + $parameters['categories'] = urlencode( $_POST['type'] ); + } + $endpoint = 'v3/categories/stats'; + } + echo Sendgrid_Tools::do_request( $endpoint, $parameters ); + + die(); + } + +} diff --git a/lib/class-sendgrid-tools.php b/lib/class-sendgrid-tools.php new file mode 100644 index 0000000..ed9fbac --- /dev/null +++ b/lib/class-sendgrid-tools.php @@ -0,0 +1,1489 @@ + false, + 'timeout' => Sendgrid_Tools::get_request_timeout() + ) + ); + + if ( ! is_array( $response ) or ! isset( $response['body'] ) ) { + return false; + } + + $response = json_decode( $response['body'], true ); + + if ( isset( $response['error'] ) ) { + return false; + } + + self::set_transient_sendgrid( self::CHECK_CREDENTIALS_CACHE_KEY, self::VALID_CREDENTIALS_STATUS, 2 * 60 * 60 ); + + return true; + } + + /** + * Check apikey scopes + * + * @param string $apikey sendgrid apikey + * + * @return bool + */ + public static function check_api_key_scopes( $apikey, $scopes ) + { + if ( ! $apikey or ! is_array( $scopes ) ) { + return false; + } + + $url = 'https://api.sendgrid.com/v3/scopes'; + + $args = array( + 'headers' => array( + 'Authorization' => 'Bearer ' . $apikey ), + 'decompress' => false, + 'timeout' => Sendgrid_Tools::get_request_timeout() + ); + + $response = wp_remote_get( $url, $args ); + + if ( ! is_array( $response ) or ! isset( $response['body'] ) ) { + return false; + } + + $response = json_decode( $response['body'], true ); + + if ( isset( $response['errors'] ) ) { + return false; + } + + if ( ! isset( $response['scopes'] ) ) { + return false; + } + + foreach ( $scopes as $scope ) { + if ( ! in_array( $scope, $response['scopes'] ) ) { + return false; + } + } + + return true; + } + + /** + * Check apikey + * + * @param string $apikey sendgrid apikey + * + * @return bool + */ + public static function check_api_key( $apikey, $clear_cache = false ) + { + if ( ! $apikey ) { + return false; + } + + if ( $clear_cache ) { + self::set_transient_sendgrid( self::CHECK_API_KEY_CACHE_KEY, null ); + } + + $valid_apikey = self::get_transient_sendgrid( self::CHECK_API_KEY_CACHE_KEY ); + + if ( self::VALID_CREDENTIALS_STATUS == $valid_apikey ) { + return true; + } + + // check unsubscribe group permission + if ( Sendgrid_Tools::check_api_key_scopes( $apikey, array( "asm.groups.read" ) ) ) { + Sendgrid_Tools::set_asm_permission( 'true' ); + } else { + Sendgrid_Tools::set_asm_permission( 'false' ); + } + + if ( ! Sendgrid_Tools::check_api_key_scopes( $apikey, array( "mail.send" ) ) ) { + return false; + } + + self::set_transient_sendgrid( self::CHECK_API_KEY_CACHE_KEY, self::VALID_CREDENTIALS_STATUS, 2 * 60 * 60 ); + + return true; + } + + /** + * Check template + * + * @param string $template sendgrid template + * + * @return bool + */ + public static function check_template( $template ) + { + if ( '' == $template ) { + return true; + } + + $url = 'v3/templates/' . $template; + + $response = Sendgrid_Tools::do_request( $url ); + + if ( ! $response ) { + return false; + } + + $response = json_decode( $response, true ); + if ( isset( $response['error'] ) or ( isset( $response['errors'] ) and isset( $response['errors'][0]['message'] ) ) ) { + return false; + } + + return true; + } + + /** + * Make request to SendGrid API + * + * @param type $api + * @param type $parameters + * + * @return json + */ + public static function do_request( $api = 'v3/stats', $parameters = array() ) + { + $args = array( + 'headers' => array( + 'Authorization' => 'Bearer ' . self::get_api_key() + ), + 'decompress' => false, + 'timeout' => Sendgrid_Tools::get_request_timeout() + ); + + $data = urldecode( http_build_query( $parameters ) ); + $url = "https://api.sendgrid.com/$api?$data"; + + $response = wp_remote_get( $url, $args ); + + if ( ! is_array( $response ) or ! isset( $response['body'] ) ) { + return false; + } + + return $response['body']; + } + + /** + * Return api_key from the database or global variable + * + * @return mixed api key, false if the value is not found + */ + public static function get_api_key() + { + if ( defined( 'SENDGRID_API_KEY' ) ) { + return SENDGRID_API_KEY; + } else { + return Sendgrid_Tools::get_sendgrid_option( 'api_key' ); + } + } + + /** + * Return MC api_key from the database or global variable + * + * @return mixed api key, false if the value is not found + */ + public static function get_mc_api_key() + { + if ( defined( 'SENDGRID_MC_API_KEY' ) ) { + return SENDGRID_MC_API_KEY; + } else { + return Sendgrid_Tools::get_sendgrid_option( 'mc_api_key' ); + } + } + + /** + * Return list_id from the database or global variable + * + * @return mixed list id, false if the value is not found + */ + public static function get_mc_list_id() + { + if ( defined( 'SENDGRID_MC_LIST_ID' ) ) { + return SENDGRID_MC_LIST_ID; + } else { + return Sendgrid_Tools::get_sendgrid_option( 'mc_list_id' ); + } + } + + /** + * Return the value for the option to use the transactional credentials from the database or global variable + * + * @return mixed 'true' or 'false', false if the value is not found + */ + public static function get_mc_opt_use_transactional() + { + if ( defined( 'SENDGRID_MC_OPT_USE_TRANSACTIONAL' ) ) { + return SENDGRID_MC_OPT_USE_TRANSACTIONAL; + } else { + return Sendgrid_Tools::get_sendgrid_option( 'mc_opt_use_transactional' ); + } + } + + /** + * Return the value for the option to require first name and last name on subscribe from the database or global variable + * + * @return mixed 'true' or 'false', false if the value is not found + */ + public static function get_mc_opt_req_fname_lname() + { + if ( defined( 'SENDGRID_MC_OPT_REQ_FNAME_LNAME' ) ) { + return SENDGRID_MC_OPT_REQ_FNAME_LNAME; + } else { + return Sendgrid_Tools::get_sendgrid_option( 'mc_opt_req_fname_lname' ); + } + } + + /** + * Return the value for the option to include first name and last name on subscribe from the database or global variable + * + * @return mixed 'true' or 'false', false if the value is not found + */ + public static function get_mc_opt_incl_fname_lname() + { + if ( defined( 'SENDGRID_MC_OPT_INCL_FNAME_LNAME' ) ) { + return SENDGRID_MC_OPT_INCL_FNAME_LNAME; + } else { + return Sendgrid_Tools::get_sendgrid_option( 'mc_opt_incl_fname_lname' ); + } + } + + /** + * Return the value for the signup email subject from the database or global variable + * + * @return mixed signup email subject, false if the value is not found + */ + public static function get_mc_signup_email_subject() + { + if ( defined( 'SENDGRID_MC_SIGNUP_EMAIL_SUBJECT' ) ) { + return SENDGRID_MC_SIGNUP_EMAIL_SUBJECT; + } else { + return Sendgrid_Tools::get_sendgrid_option( 'mc_signup_email_subject' ); + } + } + + /** + * Return the value for the signup email contents from the database or global variable + * + * @return mixed signup email contents, false if the value is not found + */ + public static function get_mc_signup_email_content() + { + if ( defined( 'SENDGRID_MC_SIGNUP_EMAIL_CONTENT' ) ) { + return SENDGRID_MC_SIGNUP_EMAIL_CONTENT; + } else { + $signup_email_content = Sendgrid_Tools::get_sendgrid_option( 'mc_signup_email_content' ); + return htmlspecialchars_decode( $signup_email_content, ENT_QUOTES ); + } + } + + /** + * Return the value for the signup email contents (plain text) from the database or global variable + * + * @return mixed signup email contents - plain text, false if the value is not found + */ + public static function get_mc_signup_email_content_text() + { + if ( defined( 'SENDGRID_MC_SIGNUP_EMAIL_CONTENT_TEXT' ) ) { + return SENDGRID_MC_SIGNUP_EMAIL_CONTENT_TEXT; + } else { + $signup_email_text = Sendgrid_Tools::get_sendgrid_option( 'mc_signup_email_content_text' ); + return htmlspecialchars_decode( $signup_email_text, ENT_QUOTES ); + } + } + + /** + * Return the value for the signup confirmation page from the database or global variable + * + * @return mixed signup confirmation page, false if the value is not found + */ + public static function get_mc_signup_confirmation_page() + { + if ( defined( 'SENDGRID_MC_SIGNUP_CONFIRMATION_PAGE' ) ) { + return SENDGRID_MC_SIGNUP_CONFIRMATION_PAGE; + } else { + return Sendgrid_Tools::get_sendgrid_option( 'mc_signup_confirmation_page' ); + } + } + + /** + * Return the value for the signup confirmation page url + * + * @return mixed signup confirmation page url, false if the value is not found + */ + public static function get_mc_signup_confirmation_page_url() + { + $page_id = self::get_mc_signup_confirmation_page(); + if ( false == $page_id or 'default' == $page_id ) { + return false; + } + + $confirmation_pages = get_pages( array( 'parent' => 0 ) ); + foreach ( $confirmation_pages as $key => $page ) { + if ( $page->ID == $page_id ) { + return $page->guid; + } + } + + return false; + } + + /** + * Return the value for flag that signifies if the MC authentication settings are valid + * + * @return mixed 'true' or 'false', false if the value is not found + */ + public static function get_mc_auth_valid() + { + return Sendgrid_Tools::get_sendgrid_option( 'mc_auth_valid' ); + } + + /** + * Return the value for flag that signifies if the widget notice has been dismissed + * + * @return mixed 'true' or 'false', false if the value is not found + */ + public static function get_mc_widget_notice_dismissed() + { + return Sendgrid_Tools::get_sendgrid_option( 'mc_widget_notice_dismissed' ); + } + + /** + * Sets api_key in the database + * + * @param type string $apikey + * + * @return bool + */ + public static function set_api_key( $apikey ) + { + return Sendgrid_Tools::update_sendgrid_option( 'api_key', $apikey ); + } + + /** + * Sets MC api_key in the database + * + * @param type string $apikey + * + * @return bool + */ + public static function set_mc_api_key( $apikey ) + { + return Sendgrid_Tools::update_sendgrid_option( 'mc_api_key', $apikey ); + } + + /** + * Sets list id in the database + * + * @param type string $list_id + * + * @return bool + */ + public static function set_mc_list_id( $list_id ) + { + return Sendgrid_Tools::update_sendgrid_option( 'mc_list_id', $list_id ); + } + + /** + * Sets the value for the option to use the transactional credentials in the database + * + * @param type string $use_transactional ( 'true' or 'false' ) + * + * @return bool + */ + public static function set_mc_opt_use_transactional( $use_transactional ) + { + return Sendgrid_Tools::update_sendgrid_option( 'mc_opt_use_transactional', $use_transactional ); + } + + /** + * Sets the option for fname and lname requirement in the database + * + * @param type string $req_fname_lname ( 'true' or 'false' ) + * + * @return bool + */ + public static function set_mc_opt_req_fname_lname( $req_fname_lname ) + { + return Sendgrid_Tools::update_sendgrid_option( 'mc_opt_req_fname_lname', $req_fname_lname ); + } + + /** + * Sets the option for fname and lname inclusion in the database + * + * @param type string $incl_fname_lname ( 'true' or 'false' ) + * + * @return bool + */ + public static function set_mc_opt_incl_fname_lname( $incl_fname_lname ) + { + return Sendgrid_Tools::update_sendgrid_option( 'mc_opt_incl_fname_lname', $incl_fname_lname ); + } + + /** + * Sets the signup email subject in the database + * + * @param type string $email_subject + * + * @return bool + */ + public static function set_mc_signup_email_subject( $email_subject ) + { + return Sendgrid_Tools::update_sendgrid_option( 'mc_signup_email_subject', $email_subject ); + } + + /** + * Sets the signup email contents in the database + * + * @param type string $email_content + * + * @return bool + */ + public static function set_mc_signup_email_content( $email_content ) + { + $email_content = htmlspecialchars( $email_content, ENT_QUOTES, 'UTF-8' ); + return Sendgrid_Tools::update_sendgrid_option( 'mc_signup_email_content', $email_content ); + } + + /** + * Sets the signup email contents (plain text) in the database + * + * @param type string $email_content + * + * @return bool + */ + public static function set_mc_signup_email_content_text( $email_content ) + { + $email_content = htmlspecialchars( $email_content, ENT_QUOTES, 'UTF-8' ); + return Sendgrid_Tools::update_sendgrid_option( 'mc_signup_email_content_text', $email_content ); + } + + /** + * Sets the signup confirmation page in the database + * + * @param type string $confirmation_page + * + * @return bool + */ + public static function set_mc_signup_confirmation_page( $confirmation_page ) + { + return Sendgrid_Tools::update_sendgrid_option( 'mc_signup_confirmation_page', $confirmation_page ); + } + + /** + * Sets a flag that signifies that the authentication for MC is valid + * + * @param type string $auth_valid ( 'true' or 'false' ) + * + * @return bool + */ + public static function set_mc_auth_valid( $auth_valid ) + { + return Sendgrid_Tools::update_sendgrid_option( 'mc_auth_valid', $auth_valid ); + } + + /** + * Sets a flag that signifies that the subscription widget notice has been dismissed + * + * @param type string $notice_dismissed ( 'true' or 'false' ) + * + * @return bool + */ + public static function set_mc_widget_notice_dismissed( $notice_dismissed ) + { + return Sendgrid_Tools::update_sendgrid_option( 'mc_widget_notice_dismissed', $notice_dismissed ); + } + + /** + * Return send method from the database or global variable + * + * @return string send_method + */ + public static function get_send_method() + { + if ( defined( 'SENDGRID_SEND_METHOD' ) ) { + return SENDGRID_SEND_METHOD; + } elseif ( Sendgrid_Tools::get_sendgrid_option( 'api', false ) ) { + return Sendgrid_Tools::get_sendgrid_option( 'api' ); + } else { + return 'api'; + } + } + + /** + * Sets the send method in the database + * + * @param type string $method + * + * @return bool + */ + public static function set_send_method( $method ) + { + return Sendgrid_Tools::update_sendgrid_option( 'api', $method ); + } + + /** + * Return port from the database or global variable + * + * @return mixed port, false if the value is not found + */ + public static function get_port() + { + if ( defined( 'SENDGRID_PORT' ) ) { + return SENDGRID_PORT; + } else { + return Sendgrid_Tools::get_sendgrid_option( 'port', Sendgrid_SMTP::TLS ); + } + } + + /** + * Sets the port in the database + * + * @param type string $port + * + * @return bool + */ + public static function set_port( $port ) + { + return Sendgrid_Tools::update_sendgrid_option( 'port', $port ); + } + + /** + * Return from name from the database or global variable + * + * @return mixed from_name, false if the value is not found + */ + public static function get_from_name() + { + if ( defined( 'SENDGRID_FROM_NAME' ) ) { + return SENDGRID_FROM_NAME; + } else { + return Sendgrid_Tools::get_sendgrid_option( 'from_name' ); + } + } + + /** + * Sets from name in the database + * + * @param type string $name + * + * @return bool + */ + public static function set_from_name( $name ) + { + return Sendgrid_Tools::update_sendgrid_option( 'from_name', $name ); + } + + /** + * Return from email address from the database or global variable + * + * @return mixed from_email, false if the value is not found + */ + public static function get_from_email() + { + if ( defined( 'SENDGRID_FROM_EMAIL' ) ) { + return SENDGRID_FROM_EMAIL; + } else { + return Sendgrid_Tools::get_sendgrid_option( 'from_email' ); + } + } + + /** + * Sets from email in the database + * + * @param type string $email + * + * @return bool + */ + public static function set_from_email( $email ) + { + return Sendgrid_Tools::update_sendgrid_option( 'from_email', $email ); + } + + /** + * Return reply to email address from the database or global variable + * + * @return mixed reply_to, false if the value is not found + */ + public static function get_reply_to() + { + if ( defined( 'SENDGRID_REPLY_TO' ) ) { + return SENDGRID_REPLY_TO; + } else { + return Sendgrid_Tools::get_sendgrid_option( 'reply_to' ); + } + } + + /** + * Sets reply to email in the database + * + * @param type string $email + * + * @return bool + */ + public static function set_reply_to( $email ) + { + return Sendgrid_Tools::update_sendgrid_option( 'reply_to', $email ); + } + + /** + * Return categories from the database or global variable + * + * @return mixed categories, false if the value is not found + */ + public static function get_categories() + { + if ( defined( 'SENDGRID_CATEGORIES' ) ) { + return SENDGRID_CATEGORIES; + } else { + return Sendgrid_Tools::get_sendgrid_option( 'categories' ); + } + } + + /** + * Sets categories in the database + * + * @param type string $categories + * + * @return bool + */ + public static function set_categories( $categories ) + { + return Sendgrid_Tools::update_sendgrid_option( 'categories', $categories ); + } + + /** + * Return stats categories from the database or global variable + * + * @return mixed categories, false if the value is not found + */ + public static function get_stats_categories() + { + if ( defined( 'SENDGRID_STATS_CATEGORIES' ) ) { + return SENDGRID_STATS_CATEGORIES; + } else { + return Sendgrid_Tools::get_sendgrid_option( 'stats_categories' ); + } + } + + /** + * Sets stats categories in the database + * + * @param type string $categories + * + * @return bool + */ + public static function set_stats_categories( $categories ) + { + return Sendgrid_Tools::update_sendgrid_option( 'stats_categories', $categories ); + } + + /** + * Return categories array + * + * @return array categories + */ + public static function get_categories_array() + { + $general_categories = Sendgrid_Tools::get_categories(); + $stats_categories = Sendgrid_Tools::get_stats_categories(); + $general_categories_array = $general_categories? explode( ',', trim( $general_categories ) ):array(); + $stats_categories_array = $stats_categories? explode( ',', trim( $stats_categories ) ):array(); + return array_unique( array_merge( $general_categories_array, $stats_categories_array ) ); + } + + /** + * Return template from the database or global variable + * + * @return mixed template string, false if the value is not found + */ + public static function get_template() + { + if ( defined( 'SENDGRID_TEMPLATE' ) ) { + return SENDGRID_TEMPLATE; + } else { + return Sendgrid_Tools::get_sendgrid_option( 'template' ); + } + } + + /** + * Sets the template in the database + * + * @param type string $template + * + * @return bool + */ + public static function set_template( $template ) + { + return Sendgrid_Tools::update_sendgrid_option( 'template', $template ); + } + + /** + * Return content type from the database or global variable + * + * @return mixed content_type string, false if the value is not found + */ + public static function get_content_type() + { + if ( defined( 'SENDGRID_CONTENT_TYPE' ) ) { + return SENDGRID_CONTENT_TYPE; + } else { + return Sendgrid_Tools::get_sendgrid_option( 'content_type' ); + } + } + + /** + * Sets the unsubscribe group in the database + * + * @param type string $unsubscribe_group + * + * @return bool + */ + public static function set_unsubscribe_group( $unsubscribe_group ) + { + return Sendgrid_Tools::update_sendgrid_option( 'unsubscribe_group', $unsubscribe_group ); + } + + /** + * Return unsubscribe group from the database or global variable + * + * @return mixed unsubscribe group string, false if the value is not found + */ + public static function get_unsubscribe_group() + { + if ( defined( 'SENDGRID_UNSUBSCRIBE_GROUP' ) ) { + return SENDGRID_UNSUBSCRIBE_GROUP; + } else { + return Sendgrid_Tools::get_sendgrid_option( 'unsubscribe_group' ); + } + } + + /** + * Set asm_permission value in db + * + * @param type string $permission + * + * @return bool + */ + public static function set_asm_permission( $permission ) + { + return Sendgrid_Tools::update_sendgrid_option( 'asm_permission', $permission ); + } + + /** + * Get asm_permission value from db + * + * @return mixed asm_permission value + */ + public static function get_asm_permission() + { + return Sendgrid_Tools::get_sendgrid_option( 'asm_permission' ); + } + + /** + * Returns the unsubscribe groups from SendGrid + * + * @return mixed an array of groups if the request is successful, false otherwise. + */ + public static function get_all_unsubscribe_groups() + { + $url = 'v3/asm/groups'; + + if ( 'true' != self::get_asm_permission() ) { + return false; + } + + $response = Sendgrid_Tools::do_request( $url ); + + if ( ! $response ) { + return false; + } + + $response = json_decode( $response, true ); + if ( isset( $response['error'] ) or ( isset( $response['errors'] ) and isset( $response['errors'][0]['message'] ) ) ) { + return false; + } + + return $response; + } + + /** + * Sets the content-type in the database + * + * @param type string $content_type + * + * @return bool + */ + public static function set_content_type( $content_type ) + { + return Sendgrid_Tools::update_sendgrid_option( 'content_type', $content_type ); + } + + /** + * Sets email label in the database + * + * @param type string $email_label + * + * @return bool + */ + public static function set_mc_email_label( $email_label ) + { + return Sendgrid_Tools::update_sendgrid_option( 'mc_email_label', $email_label ); + } + + /** + * Return email label from the database or global variable + * + * @return mixed email, false if the value is not found + */ + public static function get_mc_email_label() + { + if ( defined( 'SENDGRID_MC_EMAIL_LABEL' ) ) { + return SENDGRID_MC_EMAIL_LABEL; + } else { + return Sendgrid_Tools::get_sendgrid_option( 'mc_email_label' ); + } + } + + /** + * Sets first name label in the database + * + * @param type string $first_name_label + * + * @return bool + */ + public static function set_mc_first_name_label( $first_name_label ) + { + return Sendgrid_Tools::update_sendgrid_option( 'mc_first_name_label', $first_name_label ); + } + + /** + * Return first name label from the database or global variable + * + * @return mixed label, false if the value is not found + */ + public static function get_mc_first_name_label() + { + if ( defined( 'SENDGRID_MC_FIRST_NAME_LABEL' ) ) { + return SENDGRID_MC_FIRST_NAME_LABEL; + } else { + return Sendgrid_Tools::get_sendgrid_option( 'mc_first_name_label' ); + } + } + + /** + * Sets last name label in the database + * + * @param type string $last_name_label + * + * @return bool + */ + public static function set_mc_last_name_label( $last_name_label ) + { + return Sendgrid_Tools::update_sendgrid_option( 'mc_last_name_label', $last_name_label ); + } + + /** + * Return last name label from the database or global variable + * + * @return mixed label, false if the value is not found + */ + public static function get_mc_last_name_label() + { + if ( defined( 'SENDGRID_MC_LAST_NAME_LABEL' ) ) { + return SENDGRID_MC_LAST_NAME_LABEL; + } else { + return Sendgrid_Tools::get_sendgrid_option( 'mc_last_name_label' ); + } + } + + /** + * Sets subscribe label in the database + * + * @param type string $subscribe_label + * + * @return bool + */ + public static function set_mc_subscribe_label( $subscribe_label ) + { + return Sendgrid_Tools::update_sendgrid_option( 'mc_subscribe_label', $subscribe_label ); + } + + /** + * Return subscribe label from the database or global variable + * + * @return mixed label, false if the value is not found + */ + public static function get_mc_subscribe_label() + { + if ( defined( 'SENDGRID_MC_SUBSCRIBE_LABEL' ) ) { + return SENDGRID_MC_SUBSCRIBE_LABEL; + } else { + return Sendgrid_Tools::get_sendgrid_option( 'mc_subscribe_label' ); + } + } + + /** + * Sets input padding in the database + * + * @param type string $position + * @param type int $value + * + * @return bool + */ + public static function set_mc_input_padding( $position, $value = 0 ) + { + if ( "" == $value ) { + $value = 0; + } + $values = json_decode( self::get_mc_input_padding(), true ) ; + if ( !isset( $values ) or !is_array($values) ) { + $values = array( + 'top' => 10, + 'right' => 0, + 'bottom' => 0, + 'left' => 0 + ); + } + + // set the new value + $values[$position] = $value; + + return Sendgrid_Tools::update_sendgrid_option( 'mc_input_padding', json_encode( $values ) ); + } + + /** + * Return input padding by from the database + * + * @return mixed json with the padding value, false if the value is not found + */ + public static function get_mc_input_padding() + { + return Sendgrid_Tools::get_sendgrid_option( 'mc_input_padding' ); + } + + /** + * Return input padding by position from the database + * + * @param string $position position + * @return integer padding value + */ + public static function get_mc_input_padding_by_position( $position ) + { + $padding = Sendgrid_Tools::get_sendgrid_option( 'mc_input_padding' ); + + if ( false == $padding ) { + if ( $position == "top" ) { + return 10; + } + + return 0; + } + $padding = json_decode( $padding, true ); + if ( !isset( $padding[$position] ) ) { + return 0; + } + + return $padding[$position]; + } + + /** + * Sets button padding in the database + * + * @param type string $position + * @param type int $value + * + * @return bool + */ + public static function set_mc_button_padding( $position, $value = 0 ) + { + if ( "" == $value ) { + $value = 0; + } + $values = json_decode( self::get_mc_button_padding(), true ); + if ( !isset( $values ) or !is_array($values) ) { + $values = array( + 'top' => 10, + 'right' => 0, + 'bottom' => 0, + 'left' => 0 + ); + } + + // set the new value + $values[$position] = $value; + + return Sendgrid_Tools::update_sendgrid_option( 'mc_button_padding', json_encode( $values ) ); + } + + /** + * Return button padding by from the database + * + * @return mixed json with the padding value, false if the value is not found + */ + public static function get_mc_button_padding() + { + return Sendgrid_Tools::get_sendgrid_option( 'mc_button_padding' ); + } + + /** + * Return button padding by position from the database + * + * @param string $position position + * @return integer padding value + */ + public static function get_mc_button_padding_by_position( $position ) + { + $padding = Sendgrid_Tools::get_sendgrid_option( 'mc_button_padding' ); + + if ( false == $padding ) { + if ( $position == "top" ) + { + return 10; + } + + return 0; + } + $padding = json_decode( $padding, true ); + if ( !isset( $padding[$position] ) ) { + return 0; + } + + return $padding[$position]; + } + + /** + * Check apikey stats permissions + * + * @param string $apikey sendgrid apikey + * @param bool $clear_cache true to not use cache + * + * @return bool + */ + public static function check_api_key_stats( $apikey, $clear_cache = false ) + { + // clear cache + if ( $clear_cache ) { + self::set_transient_sendgrid( self::CHECK_API_KEY_STATS_CACHE_KEY, null ); + } + + // get info from cache + $valid_apikey_stats = self::get_transient_sendgrid( self::CHECK_API_KEY_STATS_CACHE_KEY ); + + if ( self::VALID_CREDENTIALS_STATUS == $valid_apikey_stats ) { + return true; + } + + $required_scopes = array( 'stats.read', 'categories.stats.read', 'categories.stats.sums.read' ); + + $check_scopes = Sendgrid_Tools::check_api_key_scopes( $apikey, $required_scopes ); + + // set cache + if ( $check_scopes ) { + self::set_transient_sendgrid( self::CHECK_API_KEY_STATS_CACHE_KEY, self::VALID_CREDENTIALS_STATUS, 2 * 60 * 60 ); + } + + return $check_scopes; + } + + /** + * Check apikey marketing campaigns permissions + * + * @param string $apikey sendgrid apikey + * + * @return bool + */ + public static function check_api_key_mc( $apikey ) + { + $required_scopes = array( 'marketing_campaigns.create', 'marketing_campaigns.read', 'marketing_campaigns.update', 'marketing_campaigns.delete' ); + + return Sendgrid_Tools::check_api_key_scopes( $apikey, $required_scopes ); + } + + /** + * Returns true if the email is valid, false otherwise + * + * @return bool + */ + public static function is_valid_email( $email ) + { + if ( filter_var( $email, FILTER_VALIDATE_EMAIL ) and ( SendGrid_ThirdParty::is_email( $email ) ) ) { + return true; + } + + return false; + } + + /** + * Returns true if all the emails in the headers are valid, false otherwise + * + * @param mixed $headers string or array of headers + * + * @return bool + */ + public static function valid_emails_in_headers( $headers ) + { + if ( ! is_array( $headers ) ) { + // Explode the headers out, so this function can take both + // string headers and an array of headers. + $tempheaders = explode( "\n", str_replace( "\r\n", "\n", $headers ) ); + } else { + $tempheaders = $headers; + } + + // If it's actually got contents + if ( ! empty( $tempheaders ) ) { + // Iterate through the raw headers + foreach ( (array) $tempheaders as $header ) { + if ( false === strpos( $header, ':' ) ) { + continue; + } + // Explode them out + list( $name, $content ) = explode( ':', trim( $header ), 2 ); + + // Cleanup crew + $name = trim( $name ); + $content = trim( $content ); + + switch ( strtolower( $name ) ) { + // Mainly for legacy -- process a From: header if it's there + case 'from': + if ( false !== strpos( $content, '<' ) ) { + $from_email = substr( $content, strpos( $content, '<' ) + 1 ); + $from_email = str_replace( '>', '', $from_email ); + $from_email = trim( $from_email ); + } else { + $from_email = trim( $content ); + } + + if( ! Sendgrid_Tools::is_valid_email( $from_email ) ) { + return false; + } + + break; + case 'cc': + $cc = explode( ',', $content ); + foreach ( $cc as $key => $recipient ) { + if( ! Sendgrid_Tools::is_valid_email( trim( $recipient ) ) ) { + return false; + } + } + + break; + case 'bcc': + $bcc = explode( ',', $content ); + foreach ( $bcc as $key => $recipient ) { + if( ! Sendgrid_Tools::is_valid_email( trim( $recipient ) ) ) { + return false; + } + } + + break; + case 'reply-to': + if( ! Sendgrid_Tools::is_valid_email( $content ) ) { + return false; + } + + break; + case 'x-smtpapi-to': + $xsmtpapi_tos = explode( ',', trim( $content ) ); + foreach ( $xsmtpapi_tos as $xsmtpapi_to ) { + if( ! Sendgrid_Tools::is_valid_email( trim( $xsmtpapi_to ) ) ) { + return false; + } + } + + break; + default: + break; + } + } + } + + return true; + } + + /** + * Returns the string content of the input with "" replaced by "url" + * + * @return string + */ + public static function remove_all_tag_urls( $content ) + { + return preg_replace('/<(https?:\/\/[^>]*)>/im', '$1', $content); + } + + /** + * Set/update the value of a transient using database. + * + * @param string $transient Transient name. Expected to not be SQL-escaped. Must be + * 172 characters or fewer in length. + * @param mixed $value Transient value. Must be serializable if non-scalar. + * Expected to not be SQL-escaped. + * @param int $expiration Optional. Time until expiration in seconds. Default 0 (no expiration). + * @return bool False if value was not set and true if value was set. + */ + public static function set_transient_sendgrid( $transient, $value, $expiration = 0 ) { + $old_cache_value = wp_using_ext_object_cache(); + wp_using_ext_object_cache( false ); + + if ( ! is_multisite() || ( is_multisite() and ! is_main_site() and get_option( 'sendgrid_can_manage_subsite' ) ) ) { + $set_transient_result = set_transient( $transient, $value, $expiration ); + } else { + $set_transient_result = set_site_transient( $transient, $value, $expiration ); + } + + wp_using_ext_object_cache( $old_cache_value ); + + return $set_transient_result; + } + + /** + * Get the value of a transient from database. + * + * If the transient does not exist, does not have a value, or has expired, + * then the return value will be false. + * + * @param string $transient Transient name. Expected to not be SQL-escaped. + * @return mixed Value of transient. + */ + public static function get_transient_sendgrid( $transient ) { + $old_cache_value = wp_using_ext_object_cache(); + wp_using_ext_object_cache( false ); + + if ( ! is_multisite() || ( is_multisite() and ! is_main_site() and get_option( 'sendgrid_can_manage_subsite' ) ) ) { + $value = get_transient( $transient ); + } else { + $value = get_site_transient( $transient ); + } + + wp_using_ext_object_cache( $old_cache_value ); + + return $value; + } + + /** + * Function that outputs the XSS sanitized string of the current request URI, + * this is used in all plugin settings forms. + * + * @return string XSS sanitized form action attribute + */ + public static function get_form_action() { + // Get the original query string + $original_query_string = $_SERVER['QUERY_STRING']; + parse_str( $original_query_string, $get_params ); + $count_of_parameters = count( $get_params ); + + // No get parameters are set + if ( ! count( $get_params ) ) { + return $_SERVER['REQUEST_URI']; + } + + // Perform sanitization for XSS + $sanitized_query_string = ''; + $current_parameter_count = 0; + + foreach ( $get_params as $key => $value ) { + $value = urldecode( $value ); + $value = htmlspecialchars( $value ); + $value = urlencode( $value ); + $sanitized_query_string .= $key . '=' . $value; + + // Append & if it's not the last element + if ( ++$current_parameter_count !== $count_of_parameters ) { + $sanitized_query_string .= '&'; + } + } + + $request_uri = str_replace( $original_query_string, $sanitized_query_string, $_SERVER['REQUEST_URI'] ); + // This might be redundant, but certain online url encoders omit the ~ character when encoding + $request_uri = str_replace( '%7E', '~', $request_uri ); + return $request_uri; + } + + /** + * Function that returns an array of data used on the multisite pagination, + * The array will contain the total number of pages, the current page and + * HTML for the previous and next buttons. + * + * @param type int $offset + * @param type int $limit + * + * @return array data used by the multisite view + */ + public static function get_multisite_pagination( $offset, $limit ) { + $pagination = array(); + + // Fetch sites based on pagination + $total_site_count = get_blog_count(); + $sites_remaining = $total_site_count - $offset - $limit; + + $total_page_count = 1; + $current_page = 1; + + if ( $limit != 0 ) { + $total_page_count = ceil( $total_site_count / $limit ); + $current_page = ceil( $offset / $limit ) + 1; + } + + // Create previous button HTML code + $previous_button = ''; + if ( $offset != 0 and $limit != 0 ) { + $previous_offset = ( $offset - $limit < 0 ? 0 : $offset - $limit ); + $previous_button .= ''; + $previous_button .= translate( 'Previous' ) . ''; + } + + $next_button = ''; + if ( $sites_remaining > 0 and $limit != 0 ) { + $next_offset = $offset + $limit; + $next_button .= ''; + $next_button .= translate( 'Next' ) . ''; + } + + $pagination['total_pages'] = $total_page_count; + $pagination['current_page'] = $current_page; + $pagination['previous_button'] = $previous_button; + $pagination['next_button'] = $next_button; + + return $pagination; + } + + /** + * Returns configured timeout for API requests + * + * @return integer timeout in seconds + */ + public static function get_request_timeout() + { + if ( defined( 'SENDGRID_REQUEST_TIMEOUT' ) ) { + return SENDGRID_REQUEST_TIMEOUT; + } else { + return self::DEFAULT_TIMEOUT; + } + } +} + +/** + * Function that registers the SendGrid plugin widgets + * + * @return void + */ +function register_sendgrid_widgets() { + register_widget( 'SendGrid_NLVX_Widget' ); +} + +/** + * Function that unregisters the SendGrid plugin widgets + * + * @return void + */ +function unregister_sendgrid_widgets() { + unregister_widget( 'SendGrid_NLVX_Widget' ); +} + +/** + * Function that outputs the SendGrid widget notice + * + * @return void + */ +function sg_subscription_widget_admin_notice() { + if( ! current_user_can('manage_options') ) { + return; + } + + echo '
'; + echo '

'; + echo _e( 'Check out the new SendGrid Subscription Widget! See the SendGrid Plugin settings page in order to configure it.' ); + echo '

'; + echo ''; + echo ''; + echo '
'; + echo '

'; + echo '
'; +} diff --git a/lib/class-sendgrid-virtual-pages.php b/lib/class-sendgrid-virtual-pages.php new file mode 100644 index 0000000..96cc197 --- /dev/null +++ b/lib/class-sendgrid-virtual-pages.php @@ -0,0 +1,155 @@ +slug = $args['slug']; + $this->title = isset( $args['title'] ) ? $args['title'] : ''; + $this->content = isset( $args['content'] ) ? $args['content'] : ''; + $this->author = isset( $args['author'] ) ? $args['author'] : 1; + $this->date = isset( $args['date'] ) ? $args['date'] : current_time( 'mysql' ); + $this->dategmt = isset( $args['date'] ) ? $args['date'] : current_time( 'mysql', 1 ); + $this->type = isset( $args['type'] ) ? $args['type'] : 'page'; + + add_filter( 'the_posts', array( &$this, 'virtualPage' ) ); + } + + /** + * Filter to create virtual page content + * + * @param mixed $posts posts saved in wp + * @return mixed $posts posts saved in wp + */ + public function virtualPage( $posts ) + { + global $wp, $wp_query; + + $post = new stdClass; + + $post->ID = -1; + $post->post_author = $this->author; + $post->post_date = $this->date; + $post->post_date_gmt = $this->dategmt; + $post->post_content = $this->content; + $post->post_title = $this->title; + $post->post_excerpt = ''; + $post->post_status = 'publish'; + $post->comment_status = 'closed'; + $post->ping_status = 'closed'; + $post->post_password = ''; + $post->post_name = $this->slug; + $post->to_ping = ''; + $post->pinged = ''; + $post->modified = $post->post_date; + $post->modified_gmt = $post->post_date_gmt; + $post->post_content_filtered = ''; + $post->post_parent = 0; + $post->guid = get_home_url('/' . $this->slug); + $post->menu_order = 0; + $post->post_tyle = $this->type; + $post->post_mime_type = ''; + $post->comment_count = 0; + + $posts = array( $post ); + + $wp_query->is_page = TRUE; + $wp_query->is_singular = TRUE; + $wp_query->is_home = FALSE; + $wp_query->is_archive = FALSE; + $wp_query->is_category = FALSE; + + unset( $wp_query->query['error'] ); + $wp_query->query_vars['error'] = ''; + $wp_query->is_404 = FALSE; + + remove_filter( 'the_posts', array( &$this, 'virtualPage' ) ); + + return $posts; + } + } +} + +/** + * Filter to create general error page + * + * @return void + */ +function sg_create_subscribe_general_error_page() +{ + $url = basename( $_SERVER['REQUEST_URI'] ); + + if ( $url == 'sg-error' ) + { + $args = array('slug' => 'sg-error', + 'title' => 'Subscribe error', + 'content' => 'Something went wrong while trying to send information.' ); + $pg = new SGVirtualPage( $args ); + } +} + +/** + * Filter to create invalid token error page + * + * @return void + */ +function sg_create_subscribe_invalid_token_error_page() +{ + $url = basename( $_SERVER['REQUEST_URI'] ); + + if ( $url == 'sg-subscription-invalid-token' ) + { + $args = array( 'slug' => 'sg-subscription-invalid-token', + 'title' => 'Subscribe error', + 'content' => 'Token is invalid, you are not subscribed to our newsletter.' ); + $pg = new SGVirtualPage( $args ); + } +} + +/** + * Filter to create missing token error page + * + * @return void + */ +function sg_create_subscribe_missing_token_error_page() +{ + $url = basename( $_SERVER['REQUEST_URI'] ); + + if ( $url == 'sg-subscription-missing-token' ) + { + $args = array( 'slug' => 'sg-subscription-missing-token', + 'title' => 'Subscribe error', + 'content' => 'Token is missing, you are not subscribed to our newsletter.' ); + $pg = new SGVirtualPage( $args ); + } +} + +/** + * Filter to create subscribe success page + * + * @return void + */ +function sg_create_subscribe_success_page() +{ + $url = basename( $_SERVER['REQUEST_URI'] ); + + if ( $url == 'sg-subscription-success' ) + { + $args = array( 'slug' => 'sg-subscription-success', + 'title' => 'Subscribe success', + 'content' => 'You have been successfully subscribed to our newsletter.' ); + $pg = new SGVirtualPage( $args ); + } +} \ No newline at end of file diff --git a/lib/integration/class-buddypress-override.php b/lib/integration/class-buddypress-override.php new file mode 100644 index 0000000..11e4344 --- /dev/null +++ b/lib/integration/class-buddypress-override.php @@ -0,0 +1,40 @@ +get_to(); + $to = array(); + foreach ( $recipients as $recipient ) { + $to[] = $recipient->get_address(); + } + + $subject = $email->get_subject( 'replace-tokens' ); + $message = normalize_whitespace( $email->get_content_plaintext( 'replace-tokens' ) ); + + if ( defined( 'SENDGRID_DISABLE_BP_NORMALIZE_WHITESPACE' ) ) { + $message = $email->get_content_plaintext( 'replace-tokens' ); + } + + $filter_set = false; + + if ( 'plaintext' != Sendgrid_Tools::get_content_type() ) { + add_filter( 'wp_mail_content_type', array( $this, 'set_html_content_type' ), 100 ); + $filter_set = true; + $message = $email->get_template( 'add-content' ); + } + + $result = wp_mail( $to, $subject, $message ); + + if ( $filter_set ) { + remove_filter( 'wp_mail_content_type', array( $this, 'set_html_content_type' ) ); + } + + return $result; + } + + function set_html_content_type( $content_type ) { + return 'text/html'; + } +} \ No newline at end of file diff --git a/lib/integration/class-buddypress.php b/lib/integration/class-buddypress.php new file mode 100644 index 0000000..ce5edac --- /dev/null +++ b/lib/integration/class-buddypress.php @@ -0,0 +1,25 @@ +method = "apikey"; + $this->apikey = $password_or_apikey; + } else { + $this->method = "credentials"; + $this->username = $username; + $this->password = $password_or_apikey; + } + } + + public function send(SendGrid\Email $email) { + $data = array( + 'headers' => array( + 'Content-Type' => 'application/json', + 'User-Agent' => 'sendgrid/wordpress;php', + 'Authorization' => 'Bearer ' . $this->apikey + ), + 'body' => Sendgrid_Translator::to_api_v3( $email ), + 'decompress' => false, + 'timeout' => Sendgrid_Tools::get_request_timeout() + ); + + // Send the request + $response = wp_remote_post( self::URL, $data ); + + // Check that the response fields are set + if ( !is_array( $response ) or + !isset( $response['response'] ) or + !isset( $response['response']['code'] ) ) { + return false; + } + + // Check for success code range (200-299) + $response_code = (int) $response['response']['code']; + if ( $response_code >= 200 and + $response_code < 300 ) { + return true; + } + + return false; + } +} \ No newline at end of file diff --git a/lib/sendgrid/class-sendgrid-php.php b/lib/sendgrid/class-sendgrid-php.php new file mode 100644 index 0000000..3e70a03 --- /dev/null +++ b/lib/sendgrid/class-sendgrid-php.php @@ -0,0 +1,55 @@ + false, + "message" => "Swift Class not loaded. Please activate Swift plugin or use API." + ); + + return null; + } + + $smtp = new Sendgrid_SMTP( "apikey", Sendgrid_Tools::get_api_key() ); + + if ( Sendgrid_Tools::get_port() ) { + if ( in_array( Sendgrid_Tools::get_port(), Sendgrid_Tools::$allowed_ports ) ) { + $smtp->set_port( Sendgrid_Tools::get_port() ); + } else { + $smtp->set_port( Sendgrid_SMTP::TLS ); + } + } + + return $smtp; + } +} \ No newline at end of file diff --git a/lib/sendgrid/class-sendgrid-smtp.php b/lib/sendgrid/class-sendgrid-smtp.php new file mode 100644 index 0000000..6e29df2 --- /dev/null +++ b/lib/sendgrid/class-sendgrid-smtp.php @@ -0,0 +1,129 @@ +username = $username; + $this->password = $password; + + //set the default port + $this->port = self::TLS; + } + + /* set_port + * set the SMTP outgoing port number + * @param Int $port - the port number to use + * @return the SMTP object + */ + public function set_port( $port ) { + $this->port = $port; + + return $this; + } + + /* send + * Send the Mail Message + * @param Mail $mail - the SendGridMailMessage to be sent + * @return true if mail was sendable (not necessarily sent) + */ + public function send( SendGrid\Email $mail ) { + $swift = $this->get_swift_instance($this->port); + + $message = $this->map_to_swift( $mail ); + + try + { + $sent = $swift->send( $message, $failures ); + } + catch(Exception $e) + { + return false; + } + + return ( $sent === 0 ) ? false : true; + } + + /* get_swift_instance + * initialize and return the swift transport instance + * @return the Swift_Mailer instance + */ + private function get_swift_instance( $port ) { + if ( ! isset( $this->swift_instances[$port] ) ) { + $transport = \Swift_SmtpTransport::newInstance( 'smtp.sendgrid.net', $port ); + $transport->setUsername( $this->username ); + $transport->setPassword( $this->password ); + + $swift = \Swift_Mailer::newInstance( $transport ); + + $this->swift_instances[$port] = $swift; + } + + return $this->swift_instances[$port]; + } + + /* map_to_swift + * Maps the SendGridMail Object to the SwiftMessage object + * @param Mail $mail - the SendGridMail object + * @return the SwiftMessage object + */ + private function map_to_swift( SendGrid\Email $mail ) { + $message = new \Swift_Message( $mail->getSubject() ); + + /* + * Since we're sending transactional email, we want the message to go to one person at a time, rather + * than a bulk send on one message. In order to do this, we'll have to send the list of recipients through the headers + * but Swift still requires a 'to' address. So we'll falsify it with the from address, as it will be + * ignored anyway. + */ + $message->setTo( $mail->to ); + $message->setFrom( $mail->getFrom( true ) ); + $message->setCc( $mail->getCcs() ); + $message->setBcc( $mail->getBccs() ); + + if ( $mail->getHtml() ) { + $message->setBody($mail->getHtml(), 'text/html'); + if ( $mail->getText() ) $message->addPart( $mail->getText(), 'text/plain' ); + } else { + $message->setBody( $mail->getText(), 'text/plain' ); + } + + if ( ( $replyto = $mail->getReplyTo() ) ) { + $message->setReplyTo( $replyto ); + } + + $attachments = $mail->getAttachments(); + + //add any attachments that were added + if ( $attachments ) { + foreach ( $attachments as $attachment ) { + $message->attach( \Swift_Attachment::fromPath( $attachment['file'] ) ); + } + } + + $message_headers = $message->getHeaders(); + $message_headers->addTextHeader( "x-smtpapi", $mail->smtpapi->jsonString() ); + + return $message; + } +} diff --git a/lib/sendgrid/class-sendgrid-translator.php b/lib/sendgrid/class-sendgrid-translator.php new file mode 100644 index 0000000..862d318 --- /dev/null +++ b/lib/sendgrid/class-sendgrid-translator.php @@ -0,0 +1,1028 @@ + 0 ) { + return true; + } + + return false; + } + + /** + * Returns an array of filter settings for the specified filter key from the SMTPAPI header of a v2 Email + * + * @param type SendGrid\Email $email_v2 + * @param type string $filter_key + * @param type array $filter_settings + * @param type string $filter_enabled + * + * @return array + */ + private static function get_smtp_filter_settings( + SendGrid\Email $email_v2, + $filter_key, + $filter_settings, + $filter_enabled = 'enable' + ) { + $filter_sub_label = 'settings'; + $output_array = array(); + + if ( ! is_array( $filter_settings ) ) { + return $output_array; + } + + // Check that the SMTPAPI header filter object is not malformed + if ( ! is_array( $email_v2->smtpapi->filters ) ) { + return $output_array; + } + + // Check that the filter object exists + if ( ! isset( $email_v2->smtpapi->filters[ $filter_key ] ) ) { + return $output_array; + } + + // Check that 'settings' exist under filter + if ( ! isset( $email_v2->smtpapi->filters[ $filter_key ][ $filter_sub_label ] ) ) { + return $output_array; + } + + // Avoid PHP warning when foreaching for settings by making sure it's an array + if ( ! is_array( $email_v2->smtpapi->filters[ $filter_key ][ $filter_sub_label ] ) ) { + return $output_array; + } + + // Make sure there is an enabled flag + if ( ! isset( $email_v2->smtpapi->filters[ $filter_key ][ $filter_sub_label ][ $filter_enabled ] ) ) { + return $output_array; + } + + // If it's not enabled, return empty array, no need to make the payload bigger + if ( ! $email_v2->smtpapi->filters[ $filter_key ][ $filter_sub_label ][ $filter_enabled ] ) { + return $output_array; + } + + foreach ( $email_v2->smtpapi->filters[ $filter_key ][ $filter_sub_label ] as $setting_key => $setting_value ) { + if ( in_array( $setting_key, $filter_settings ) ) { + $output_array[ $setting_key ] = $setting_value; + } + } + + return $output_array; + } + + /** + * Sets the From address and FromName (if set) to a V3 Email from a V2 Email + * - for API V3 the From email address is mandatory and it may not include Unicode encoding + * - for API V3 the FromName is optional + * + * @param type SendGridV3\Mail $email_v3 + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_from_v3( + SendGridV3\Mail $email_v3, + SendGrid\Email $email_v2 + ) { + $from_name = null; + + if ( isset( $email_v2->fromName ) and self::is_valid_string( $email_v2->fromName ) ) { + $from_name = trim( $email_v2->fromName ); + } + + $from = new SendGridV3\Email( $from_name, trim( $email_v2->from ) ); + $email_v3->setFrom( $from ); + } + + /** + * Sets the Subject (if set) to a V3 Email from a V2 Email + * - for API V3 the Subject field is optional + * + * @param type SendGridV3\Mail $email_v3 + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_subject_v3( + SendGridV3\Mail $email_v3, + SendGrid\Email $email_v2 + ) { + if ( isset( $email_v2->subject ) and self::is_valid_string( $email_v2->subject ) ) { + $email_v3->setSubject( $email_v2->subject ); + } + } + + /** + * Sets the plaintext content (if set) to a V3 Email from a V2 Email + * - for API V3 at least one content object must be present (either plaintext or html) + * + * @param type SendGridV3\Mail $email_v3 + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_text_content_v3( + SendGridV3\Mail $email_v3, + SendGrid\Email $email_v2 + ) { + if ( isset( $email_v2->text ) and self::is_valid_string( $email_v2->text ) ) { + $text_content = new SendGridV3\Content( 'text/plain', $email_v2->text ); + $email_v3->addContent($text_content); + } + } + + /** + * Sets the HTML content (if set) to a V3 Email from a V2 Email + * - for API V3 at least one content object must be present (either plaintext or html) + * + * @param type SendGridV3\Mail $email_v3 + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_html_content_v3( + SendGridV3\Mail $email_v3, + SendGrid\Email $email_v2 + ) { + if ( isset( $email_v2->html ) and self::is_valid_string( $email_v2->html ) ) { + $html_content = new SendGridV3\Content( 'text/html', $email_v2->html ); + $email_v3->addContent($html_content); + } + } + + /** + * Sets the To addresses and ToNames (if set) to a V3 Personalization Object from a V2 Email + * - for API V3 at least one recipient (To email address) must be present + * - for API V3 the To Name is optional + * - also adds substitutions, custom args and send each at, if present for each email + * + * @param type SendGridV3\Mail $email_v3 + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_tos_v3( + SendGridV3\Mail $email_v3, + SendGrid\Email $email_v2 + ) { + if ( ! is_array( $email_v2->to ) ) { + return; + } + + // Create a new personalization for this To + $personalization = new SendGridV3\Personalization(); + + foreach ( $email_v2->to as $index => $address ) { + if ( ! self::is_valid_string( $address ) ) { + continue; + } + + $to_name = null; + $to_address = trim( $address ); + + if ( isset( $email_v2->toName[ $index ] ) and + self::is_valid_string( $email_v2->toName[ $index ] ) ) { + $to_name = trim( $email_v2->toName[ $index ] ); + } + + $recipient = new SendGridV3\Email( $to_name, $to_address ); + + // Add the values + $personalization->addTo( $recipient ); + self::set_substitutions_v3( $index, $personalization, $email_v2 ); + self::set_custom_args_v3( $index, $personalization, $email_v2 ); + self::set_send_each_at_v3( $index, $personalization, $email_v2 ); + } + + // Append the personalization to the email + $email_v3->addPersonalization( $personalization ); + } + + /** + * Sets the CC addresses and CCNames (if set) to a V3 Personalization Object from a V2 Email + * - for API V3 the CC addresses are optional + * - for API V3 the CC Name is optional for all CC addresses + * + * @param type SendGridV3\Personalization $personalization + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_ccs_v3( + SendGridV3\Personalization $personalization, + SendGrid\Email $email_v2 + ) { + if ( ! is_array( $email_v2->cc ) ) { + return; + } + + foreach ( $email_v2->cc as $index => $address ) { + // Check if "cc name" is set + $cc_name = null; + if ( self::is_valid_string( $email_v2->ccName[ $index ] ) ) { + $cc_name = trim( $email_v2->ccName[ $index ] ); + } + + $recipient = new SendGridV3\Email( $cc_name, $address ); + $personalization->addCc( $recipient ); + } + } + + /** + * Sets the BCC addresses and BCCNames (if set) to a V3 Personalization Object from a V2 Email + * - for API V3 the BCC addresses are optional + * - for API V3 the BCC Name is optional for all BCC addresses + * + * @param type SendGridV3\Personalization $personalization + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_bccs_v3( + SendGridV3\Personalization $personalization, + SendGrid\Email $email_v2 + ) { + if ( ! is_array( $email_v2->bcc ) ) { + return; + } + + foreach ( $email_v2->bcc as $index => $address ) { + // Check if "bcc name" is set + $bcc_name = null; + if ( self::is_valid_string( $email_v2->bccName[ $index ] ) ) { + $bcc_name = trim( $email_v2->bccName[ $index ] ); + } + + $recipient = new SendGridV3\Email( $bcc_name, $address ); + $personalization->addBcc( $recipient ); + } + } + + /** + * Sets the ReplyTo address (if set) to a V3 Email from a V2 Email + * - for API V3 the ReplyTo email address is optional and it may not include Unicode encoding + * + * @param type SendGridV3\Mail $email_v3 + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_reply_to_v3( + SendGridV3\Mail $email_v3, + SendGrid\Email $email_v2 + ) { + if ( isset( $email_v2->replyTo ) and self::is_valid_string( $email_v2->replyTo ) ) { + $email_v3->setReplyTo( new SendGridV3\Email( null, trim( $email_v2->replyTo ) ) ); + } + } + + /** + * Sets the Headers (if set) to a V3 Email from a V2 Email + * - for API V3 the CC addresses are optional + * - for API V3 the CC Name is optional for all CC addresses + * + * @param type SendGridV3\Mail $email_v3 + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_headers_v3( + SendGridV3\Mail $email_v3, + SendGrid\Email $email_v2 + ) { + if ( ! is_array( $email_v2->headers ) ) { + return; + } + + foreach ( $email_v2->headers as $header => $value ) { + $email_v3->addHeader( $header, $value ); + } + } + + /** + * Sets the Attachments (if set) to a V3 Email from a V2 Email + * - only attaches file if it's present at specified path and readable + * - only the content and filename fields are mandatory + * - content field must be base64 encoded + * + * @param type SendGridV3\Mail $email_v3 + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_attachments_v3( + SendGridV3\Mail $email_v3, + SendGrid\Email $email_v2 + ) { + if ( ! is_array( $email_v2->attachments ) ) { + return; + } + + foreach ( $email_v2->attachments as $index => $file_info ) { + if ( ! isset( $file_info[ 'file' ] ) or ! isset( $file_info[ 'basename' ] ) ) { + continue; + } + + $file_contents = file_get_contents( $file_info[ 'file' ] ); + + // file_get_contents retuns a bool or non-bool which evaluates to false if it fails + if ( ! $file_contents ) { + continue; + } + + $file_contents = base64_encode( $file_contents ); + + // base64_encode returns a bool or non-bool which evaluates to false if it fails + if ( ! $file_contents ) { + continue; + } + + $attachment = new SendGridV3\Attachment(); + $attachment->setContent( $file_contents ); + $attachment->setFilename( $file_info[ 'basename' ] ); + + // Set the custom filename if specified + if ( isset( $file_info[ 'custom_filename' ] ) and + self::is_valid_string( $file_info[ 'custom_filename' ] ) ) { + $attachment->setFilename( trim( $file_info[ 'custom_filename' ] ) ); + } + + // Set the Content ID if specified + if ( isset( $file_info[ 'cid' ] ) and + self::is_valid_string( $file_info[ 'cid' ] ) ) { + $attachment->setContentID( trim( $file_info[ 'cid' ] ) ); + } + + $email_v3->addAttachment( $attachment ); + } + } + + /** + * Sets the Substitution (if set) to a V3 Personalization from a V2 Email + * + * @param type integer $index + * @param type SendGridV3\Personalization $personalization + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_substitutions_v3 ( + $index, + SendGridV3\Personalization $personalization, + SendGrid\Email $email_v2 + ) { + if ( ! is_array( $email_v2->smtpapi->sub ) ) { + return; + } + + foreach ( $email_v2->smtpapi->sub as $key => $array_values ) { + if ( isset( $array_values[ $index ] ) ) { + $personalization->addSubstitution( $key, $array_values[ $index ] ); + } + } + } + + /** + * Sets the Custom Args (if set) to a V3 Personalization from a V2 Email + * + * @param type integer $index + * @param type SendGridV3\Personalization $personalization + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_custom_args_v3 ( + $index, + SendGridV3\Personalization $personalization, + SendGrid\Email $email_v2 + ) { + if ( ! is_array( $email_v2->smtpapi->unique_args ) ) { + return; + } + + foreach ( $email_v2->smtpapi->unique_args as $key => $array_values ) { + if ( isset( $array_values[ $index ] ) ) { + $personalization->addCustomArg( $key, $array_values[ $index ] ); + } + } + } + + /** + * Sets the SendAt for each XSMTPAPI To (if set) to a V3 Personalization from a V2 Email + * - for API V3 the valus of send_at is a an integer (UNIX Timestamp) + * + * @param type integer $index + * @param type SendGridV3\Personalization $personalization + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_send_each_at_v3 ( + $index, + SendGridV3\Personalization $personalization, + SendGrid\Email $email_v2 + ) { + if ( ! is_array( $email_v2->smtpapi->send_each_at ) ) { + return; + } + + if ( isset( $email_v2->smtpapi->send_each_at[ $index ] ) ) { + + if( is_string( $email_v2->smtpapi->send_each_at[ $index ] ) ) { + $personalization->setSendAt( intval( trim( $email_v2->smtpapi->send_each_at[ $index ] ) ) ); + } else { + $personalization->setSendAt( $email_v2->smtpapi->send_each_at[ $index ] ); + } + } + } + + /** + * Sets the SMTPAPI To addresses and ToNames (if set) to a V3 Personalization Object from a V2 Email + * - for API V3 at least one recipient (To email address) must be present + * - for API V3 the To Name is optional + * - SMTPAPI headers have the ToNames in <> brackets, they need to be extracted + * - will also set substitution per email + * - each SMTPAPI to will have it's own personalization + * + * @param type SendGridV3\Mail $email_v3 + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_smtpapi_tos_v3 ( + SendGridV3\Mail $email_v3, + SendGrid\Email $email_v2 + ) { + if ( ! is_array( $email_v2->smtpapi->to ) ) { + return; + } + + foreach ( $email_v2->smtpapi->to as $index => $address ) { + if ( ! self::is_valid_string( $address ) ) { + continue; + } + + $to_name = null; + $to_address = trim( $address ); + + // If there is a ToName + if ( strstr( $address, '<' ) ) { + // Match for any string followed by any string between <> brackets + preg_match( '/(.*?)<([^>]+)>/', $address, $output_array ); + + // 3nd Grouping (position 2 in array) will be the email address + if ( isset( $output_array[ 2 ] ) ) { + $to_address = trim( $output_array[ 2 ] ); + } + + // 2rd Grouping (position 1 in array) will be the ToName + if ( isset( $output_array[ 1 ] ) ) { + $to_name = trim( $output_array[ 1 ] ); + } + } + + // If no <> brackets are found, there should only be one email address + $recipient = new SendGridV3\Email( $to_name, $to_address ); + + // Create a new personalization for this To + $personalization = new SendGridV3\Personalization(); + + // Add the SMTPAPI Values + $personalization->addTo( $recipient ); + self::set_substitutions_v3( $index, $personalization, $email_v2 ); + self::set_custom_args_v3( $index, $personalization, $email_v2 ); + self::set_send_each_at_v3( $index, $personalization, $email_v2 ); + + // Append the personalization to the email + $email_v3->addPersonalization( $personalization ); + } + } + + /** + * Sets the Categories (if set) to a V3 Email from a V2 Email + * - for API V3 the Categories are optional + * - for API V3 each category must not exceed 255 characters + * - for API V3 you can have no more than 10 categories per request + * + * @param type SendGridV3\Mail $email_v3 + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_categories_v3( + SendGridV3\Mail $email_v3, + SendGrid\Email $email_v2 + ) { + if ( ! is_array( $email_v2->smtpapi->category ) ) { + return; + } + + foreach ( $email_v2->smtpapi->category as $index => $category ) { + $email_v3->addCategory( trim( $category ) ); + } + } + + /** + * Sets the Sections (if set) to a V3 Email from a V2 Email + * - for API V3 the Sections are optional + * + * @param type SendGridV3\Mail $email_v3 + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_sections_v3( + SendGridV3\Mail $email_v3, + SendGrid\Email $email_v2 + ) { + if ( ! is_array( $email_v2->smtpapi->section ) ) { + return; + } + + foreach ( $email_v2->smtpapi->section as $key => $section ) { + $email_v3->addSection( $key, $section ); + } + } + + /** + * Sets the SendAt (if set) to a V3 Email from a V2 Email + * - for API V3 send_at is an integer and is optional + * + * @param type SendGridV3\Mail $email_v3 + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_send_at_v3( + SendGridV3\Mail $email_v3, + SendGrid\Email $email_v2 + ) { + if ( ! $email_v2->smtpapi->send_at ) { + return; + } + + if ( is_string( $email_v2->smtpapi->send_at ) ) { + $email_v3->setSendAt( intval( trim( $email_v2->smtpapi->send_at ) ) ); + } else { + $email_v3->setSendAt( $email_v2->smtpapi->send_at ); + } + } + + /** + * Sets the ASM Group ID (if set) to a V3 Email from a V2 Email + * - for API V3 the ASM setting is an object and is optional + * - for API V3 the ASM group_id is mandatory for each object + * + * @param type SendGridV3\Mail $email_v3 + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_asm_group_id_v3( + SendGridV3\Mail $email_v3, + SendGrid\Email $email_v2 + ) { + if ( ! $email_v2->smtpapi->asm_group_id ) { + return; + } + + $asm = new SendGridV3\ASM(); + if ( is_string( $email_v2->smtpapi->asm_group_id ) ) { + $asm->setGroupId( intval( trim( $email_v2->smtpapi->asm_group_id ) ) ); + } else { + $asm->setGroupId( $email_v2->smtpapi->asm_group_id ); + } + + $email_v3->setASM( $asm ); + } + + /** + * Sets the IP Pool Name (if set) to a V3 Email from a V2 Email + * - for API V3 the IP Pool Name is a string and is optional + * - for API V3 the IP Pool Name must be between 2 and 64 characters in length + * + * @param type SendGridV3\Mail $email_v3 + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_ip_pool_v3( + SendGridV3\Mail $email_v3, + SendGrid\Email $email_v2 + ) { + if ( ! is_string( $email_v2->smtpapi->ipPool ) ) { + return; + } + + $email_v3->setIpPoolName( $email_v2->smtpapi->ipPool ); + } + + /** + * Sets the Template ID (if set) to a V3 Email from a V2 Email + * - for API V3 the Template ID is a string and is optional + * + * @param type SendGridV3\Mail $email_v3 + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_template_id_v3( + SendGridV3\Mail $email_v3, + SendGrid\Email $email_v2 + ) { + $filter_key = 'templates'; + $filter_settings = array( 'template_id' ); + + $settings = self::get_smtp_filter_settings( $email_v2, $filter_key, $filter_settings ); + + // Fix for wrong label from V2 library + if ( ! count( $settings ) ) { + $settings = self::get_smtp_filter_settings( $email_v2, $filter_key, $filter_settings, 'enabled' ); + } + + if ( isset( $settings[ 'template_id' ] ) ) { + $email_v3->setTemplateId( $settings[ 'template_id' ] ); + } + } + + /** + * Sets the BCC Mail Setting (if set) to a V3 Email from a V2 Email + * - for API V3 the BCC Mail Setting is an object and is optional + * + * @param type SendGridV3\Mail $email_v3 + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_bcc_setting_v3( + SendGridV3\Mail $email_v3, + SendGrid\Email $email_v2 + ) { + $filter_key = 'bcc'; + $filter_settings = array( 'email' ); + + $settings = self::get_smtp_filter_settings( $email_v2, $filter_key, $filter_settings ); + + if ( isset( $settings[ 'email' ] ) ) { + $bcc_settings = new SendGridV3\BccSettings(); + $bcc_settings->setEnable( true ); + $bcc_settings->setEmail( $settings[ 'email' ] ); + + if ( ! isset( $email_v3->mail_settings ) ) { + $mail_settings = new SendGridV3\MailSettings(); + $email_v3->setMailSettings( $mail_settings ); + } + + $email_v3->getMailSettings()->setBccSettings( $bcc_settings ); + } + } + + /** + * Sets the Bypass List Management Mail Setting (if set) to a V3 Email from a V2 Email + * - for API V3 the Bypass List Management is an object and is optional + * + * @param type SendGridV3\Mail $email_v3 + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_bypass_management_v3( + SendGridV3\Mail $email_v3, + SendGrid\Email $email_v2 + ) { + $filter_key = 'bypass_list_management'; + $filter_settings = array( 'enable' ); + + $settings = self::get_smtp_filter_settings( $email_v2, $filter_key, $filter_settings ); + + if ( isset( $settings[ 'enable' ] ) ) { + $bypass_settings = new SendGridV3\BypassListManagement(); + $bypass_settings->setEnable( true ); + + if ( ! isset( $email_v3->mail_settings ) ) { + $mail_settings = new SendGridV3\MailSettings(); + $email_v3->setMailSettings( $mail_settings ); + } + + $email_v3->getMailSettings()->setBypassListManagement( $bypass_settings ); + } + } + + /** + * Sets the Spam Check Mail Setting (if set) to a V3 Email from a V2 Email + * - for API V3 the Spam Check is an object and is optional + * + * @param type SendGridV3\Mail $email_v3 + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_spam_check_v3( + SendGridV3\Mail $email_v3, + SendGrid\Email $email_v2 + ) { + $filter_key = 'spamcheck'; + $filter_settings = array( 'maxscore', 'url' ); + + $settings = self::get_smtp_filter_settings( $email_v2, $filter_key, $filter_settings ); + + if ( isset( $settings[ 'maxscore' ] ) or isset( $settings[ 'url' ] ) ) { + $spamcheck_settings = new SendGridV3\SpamCheck(); + $spamcheck_settings->setEnable( true ); + + if ( isset( $settings[ 'maxscore' ] ) ) { + $spamcheck_settings->setThreshold( $settings[ 'maxscore' ] ); + } + + if ( isset( $settings[ 'url' ] ) ) { + $spamcheck_settings->setPostToUrl( $settings[ 'url' ] ); + } + + if ( ! isset( $email_v3->mail_settings ) ) { + $mail_settings = new SendGridV3\MailSettings(); + $email_v3->setMailSettings( $mail_settings ); + } + + $email_v3->getMailSettings()->setSpamCheck( $spamcheck_settings ); + } + } + + /** + * Sets the Email Footer Setting (if set) to a V3 Email from a V2 Email + * - for API V3 the Email Footer Setting is an object and is optional + * + * @param type SendGridV3\Mail $email_v3 + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_email_footer_v3( + SendGridV3\Mail $email_v3, + SendGrid\Email $email_v2 + ) { + $filter_key = 'footer'; + $filter_settings = array( 'text/html', 'text/plain' ); + + $settings = self::get_smtp_filter_settings( $email_v2, $filter_key, $filter_settings ); + + if ( isset( $settings[ 'text/html' ] ) or isset( $settings[ 'text/plain' ] ) ) { + $footer_settings = new SendGridV3\Footer(); + $footer_settings->setEnable( true ); + + if ( isset( $settings[ 'text/html' ] ) ) { + $footer_settings->setHtml( $settings[ 'text/html' ] ); + } + + if ( isset( $settings[ 'text/plain' ] ) ) { + $footer_settings->setText( $settings[ 'text/plain' ] ); + } + + if ( ! isset( $email_v3->mail_settings ) ) { + $mail_settings = new SendGridV3\MailSettings(); + $email_v3->setMailSettings( $mail_settings ); + } + + $email_v3->getMailSettings()->setFooter( $footer_settings ); + } + } + + /** + * Sets the Click Tracking Setting (if set) to a V3 Email from a V2 Email + * - for API V3 the Click Tracking Setting is an object and is optional + * + * @param type SendGridV3\Mail $email_v3 + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_click_tracking_v3( + SendGridV3\Mail $email_v3, + SendGrid\Email $email_v2 + ) { + $filter_key = 'clicktrack'; + $filter_settings = array( 'enable' ); + + $settings = self::get_smtp_filter_settings( $email_v2, $filter_key, $filter_settings ); + + if ( isset( $settings[ 'enable' ] ) ) { + $click_tracking_settings = new SendGridV3\ClickTracking(); + $click_tracking_settings->setEnable( true ); + $click_tracking_settings->setEnableText( true ); + + if ( ! isset( $email_v3->tracking_settings ) ) { + $tracking_setings = new SendGridV3\TrackingSettings(); + $email_v3->setTrackingSettings( $tracking_setings ); + } + + $email_v3->getTrackingSettings()->setClickTracking( $click_tracking_settings ); + } + } + + /** + * Sets the Open Tracking Setting (if set) to a V3 Email from a V2 Email + * - for API V3 the Open Tracking Setting is an object and is optional + * + * @param type SendGridV3\Mail $email_v3 + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_open_tracking_v3( + SendGridV3\Mail $email_v3, + SendGrid\Email $email_v2 + ) { + $filter_key = 'opentrack'; + $filter_settings = array( 'enable', 'replace' ); + + $settings = self::get_smtp_filter_settings( $email_v2, $filter_key, $filter_settings ); + + if ( isset( $settings[ 'enable' ] ) and isset( $settings[ 'replace' ] ) ) { + $open_tracking_settings = new SendGridV3\OpenTracking(); + if ( $settings[ 'enable' ] ) { + $open_tracking_settings->setEnable( true ); + } + + $open_tracking_settings->setSubstitutionTag( $settings[ 'replace' ] ); + + if ( ! isset( $email_v3->tracking_settings ) ) { + $tracking_setings = new SendGridV3\TrackingSettings(); + $email_v3->setTrackingSettings( $tracking_setings ); + } + + $email_v3->getTrackingSettings()->setOpenTracking( $open_tracking_settings ); + } + } + + /** + * Sets the Subscription Tracking Setting (if set) to a V3 Email from a V2 Email + * - for API V3 the Subscription Tracking Setting is an object and is optional + * + * @param type SendGridV3\Mail $email_v3 + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_subscription_tracking_v3( + SendGridV3\Mail $email_v3, + SendGrid\Email $email_v2 + ) { + $filter_key = 'subscriptiontrack'; + $filter_settings = array( 'enable', 'replace', 'text/html', 'text/plain' ); + + $settings = self::get_smtp_filter_settings( $email_v2, $filter_key, $filter_settings ); + + if ( isset( $settings[ 'enable' ] ) ) { + $subscription_tracking_settings = new SendGridV3\SubscriptionTracking(); + + if ( $settings[ 'enable' ] ) { + $subscription_tracking_settings->setEnable( true ); + } + + if( isset( $settings[ 'replace' ] ) ) { + $subscription_tracking_settings->setSubstitutionTag( $settings[ 'replace' ] ); + } + + if( isset( $settings[ 'text/html' ] ) ) { + $subscription_tracking_settings->setHtml( $settings[ 'text/html' ] ); + } + + if( isset( $settings[ 'text/plain' ] ) ) { + $subscription_tracking_settings->setText( $settings[ 'text/plain' ] ); + } + + if ( ! isset( $email_v3->tracking_settings ) ) { + $tracking_setings = new SendGridV3\TrackingSettings(); + $email_v3->setTrackingSettings( $tracking_setings ); + } + + $email_v3->getTrackingSettings()->setSubscriptionTracking( $subscription_tracking_settings ); + } + } + + /** + * Sets the Google Analytics Tracking Setting (if set) to a V3 Email from a V2 Email + * - for API V3 the Google Analytics Tracking Setting is an object and is optional + * + * @param type SendGridV3\Mail $email_v3 + * @param type SendGrid\Email $email_v2 + * + * @return void + */ + private static function set_ganalytics_v3( + SendGridV3\Mail $email_v3, + SendGrid\Email $email_v2 + ) { + $filter_key = 'ganalytics'; + $filter_settings = array( 'enable', 'utm_source', 'utm_medium', 'utm_term', 'utm_content', 'utm_campaign' ); + + $settings = self::get_smtp_filter_settings( $email_v2, $filter_key, $filter_settings ); + + if ( isset( $settings[ 'enable' ] ) ) { + $ganalytics_tracking_settings = new SendGridV3\Ganalytics(); + + if ( $settings[ 'enable' ] ) { + $ganalytics_tracking_settings->setEnable( true ); + } + + if( isset( $settings[ 'utm_source' ] ) ) { + $ganalytics_tracking_settings->setCampaignSource( $settings[ 'utm_source' ] ); + } + + if( isset( $settings[ 'utm_medium' ] ) ) { + $ganalytics_tracking_settings->setCampaignMedium( $settings[ 'utm_medium' ] ); + } + + if( isset( $settings[ 'utm_term' ] ) ) { + $ganalytics_tracking_settings->setCampaignTerm( $settings[ 'utm_term' ] ); + } + + if( isset( $settings[ 'utm_content' ] ) ) { + $ganalytics_tracking_settings->setCampaignContent( $settings[ 'utm_content' ] ); + } + + if( isset( $settings[ 'utm_campaign' ] ) ) { + $ganalytics_tracking_settings->setCampaignName( $settings[ 'utm_campaign' ] ); + } + + if ( ! isset( $email_v3->tracking_settings ) ) { + $tracking_setings = new SendGridV3\TrackingSettings(); + $email_v3->setTrackingSettings( $tracking_setings ); + } + + $email_v3->getTrackingSettings()->setGanalytics( $ganalytics_tracking_settings ); + } + } + + /** + * Returns a JSON encoded object for an API V3 mail send request, + * from a V2 SendGrid Email object (v2 library). + * + * @param type SendGrid\Email $email_v2 + * + * @return string + */ + public static function to_api_v3( SendGrid\Email $email_v2 ) { + // Initialization + $email_v3 = new SendGridV3\Mail(); + + // Standard fields transformation + self::set_from_v3( $email_v3, $email_v2 ); + self::set_subject_v3( $email_v3, $email_v2 ); + self::set_text_content_v3( $email_v3, $email_v2 ); + self::set_html_content_v3( $email_v3, $email_v2 ); + self::set_reply_to_v3( $email_v3, $email_v2 ); + self::set_headers_v3( $email_v3, $email_v2 ); + self::set_attachments_v3( $email_v3, $email_v2 ); + + // XSMTPAPI Standard transformations + self::set_categories_v3( $email_v3, $email_v2 ); + self::set_sections_v3( $email_v3, $email_v2 ); + self::set_send_at_v3( $email_v3, $email_v2 ); + self::set_asm_group_id_v3( $email_v3, $email_v2 ); + self::set_ip_pool_v3( $email_v3, $email_v2 ); + + // Mail Settings + self::set_template_id_v3( $email_v3, $email_v2 ); + self::set_bcc_setting_v3( $email_v3, $email_v2 ); + self::set_bypass_management_v3( $email_v3, $email_v2 ); + self::set_spam_check_v3( $email_v3, $email_v2 ); + self::set_email_footer_v3( $email_v3, $email_v2 ); + + // Tracking settings + self::set_click_tracking_v3( $email_v3, $email_v2 ); + self::set_open_tracking_v3( $email_v3, $email_v2 ); + self::set_subscription_tracking_v3( $email_v3, $email_v2 ); + self::set_ganalytics_v3( $email_v3, $email_v2 ); + + // Exclusive Tos + self::set_smtpapi_tos_v3( $email_v3, $email_v2 ); + + // Personalization transformation + if ( ! is_array( $email_v3->personalization ) or + count( $email_v3->personalization ) == 0 ) { + self::set_tos_v3( $email_v3, $email_v2 ); + } + + // Set the CCs and BCCs to the first To + if ( is_array( $email_v3->personalization ) and + isset( $email_v3->personalization[0] ) ) { + self::set_ccs_v3( $email_v3->personalization[0], $email_v2 ); + self::set_bccs_v3( $email_v3->personalization[0], $email_v2 ); + } + + // Return API v3 formatted JSON + return json_encode( $email_v3 ); + } +} \ No newline at end of file diff --git a/lib/sendgrid/interfaces/class-sendgrid-interface.php b/lib/sendgrid/interfaces/class-sendgrid-interface.php new file mode 100644 index 0000000..6f99048 --- /dev/null +++ b/lib/sendgrid/interfaces/class-sendgrid-interface.php @@ -0,0 +1,7 @@ + + * @copyright 2016 SendGrid + * @license https://opensource.org/licenses/MIT The MIT License + * @link http://packagist.org/packages/sendgrid/sendgrid + */ +namespace SendGridV3; + +class ReplyTo implements \JsonSerializable +{ + private + $email; + + public function __construct($email) + { + $this->email = $email; + } + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function jsonSerialize() + { + return array_filter( + [ + 'email' => $this->getEmail() + ] + ); + } +} + +class ClickTracking implements \JsonSerializable +{ + private + $enable, + $enable_text; + + public function setEnable($enable) + { + $this->enable = $enable; + } + + public function getEnable() + { + return $this->enable; + } + + public function setEnableText($enable_text) + { + $this->enable_text = $enable_text; + } + + public function getEnableText() + { + return $this->enable_text; + } + + public function jsonSerialize() + { + return array_filter( + [ + 'enable' => $this->getEnable(), + 'enable_text' => $this->getEnableText() + ] + ); + } +} + +class OpenTracking implements \JsonSerializable +{ + private + $enable, + $substitution_tag; + + public function setEnable($enable) + { + $this->enable = $enable; + } + + public function getEnable() + { + return $this->enable; + } + + public function setSubstitutionTag($substitution_tag) + { + $this->substitution_tag = $substitution_tag; + } + + public function getSubstitutionTag() + { + return $this->substitution_tag; + } + + public function jsonSerialize() + { + return array_filter( + [ + 'enable' => $this->getEnable(), + 'substitution_tag' => $this->getSubstitutionTag() + ] + ); + } +} + +class SubscriptionTracking implements \JsonSerializable +{ + private + $enable, + $text, + $html, + $substitution_tag; + + public function setEnable($enable) + { + $this->enable = $enable; + } + + public function getEnable() + { + return $this->enable; + } + + public function setText($text) + { + $this->text = $text; + } + + public function getText() + { + return $this->text; + } + + public function setHtml($html) + { + $this->html = $html; + } + + public function getHtml() + { + return $this->html; + } + + public function setSubstitutionTag($substitution_tag) + { + $this->substitution_tag = $substitution_tag; + } + + public function getSubstitutionTag() + { + return $this->substitution_tag; + } + + public function jsonSerialize() + { + return array_filter( + [ + 'enable' => $this->getEnable(), + 'text' => $this->getText(), + 'html' => $this->getHtml(), + 'substitution_tag' => $this->getSubstitutionTag() + ] + ); + } +} + +class Ganalytics implements \JsonSerializable +{ + private + $enable, + $utm_source, + $utm_medium, + $utm_term, + $utm_content, + $utm_campaign; + + public function setEnable($enable) + { + $this->enable = $enable; + } + + public function getEnable() + { + return $this->enable; + } + + public function setCampaignSource($utm_source) + { + $this->utm_source = $utm_source; + } + + public function getCampaignSource() + { + return $this->utm_source; + } + + public function setCampaignMedium($utm_medium) + { + $this->utm_medium = $utm_medium; + } + + public function getCampaignMedium() + { + return $this->utm_medium; + } + + public function setCampaignTerm($utm_term) + { + $this->utm_term = $utm_term; + } + + public function getCampaignTerm() + { + return $this->utm_term; + } + + public function setCampaignContent($utm_content) + { + $this->utm_content = $utm_content; + } + + public function getCampaignContent() + { + return $this->utm_content; + } + + public function setCampaignName($utm_campaign) + { + $this->utm_campaign = $utm_campaign; + } + + public function getCampaignName() + { + return $this->utm_campaign; + } + + public function jsonSerialize() + { + return array_filter( + [ + 'enable' => $this->getEnable(), + 'utm_source' => $this->getCampaignSource(), + 'utm_medium' => $this->getCampaignMedium(), + 'utm_term' => $this->getCampaignTerm(), + 'utm_content' => $this->getCampaignContent(), + 'utm_campaign' => $this->getCampaignName() + ] + ); + } +} + +class TrackingSettings implements \JsonSerializable +{ + private + $click_tracking, + $open_tracking, + $subscription_tracking, + $ganalytics; + + public function setClickTracking($click_tracking) + { + $this->click_tracking = $click_tracking; + } + + public function getClickTracking() + { + return $this->click_tracking; + } + + public function setOpenTracking($open_tracking) + { + $this->open_tracking = $open_tracking; + } + + public function getOpenTracking() + { + return $this->open_tracking; + } + + public function setSubscriptionTracking($subscription_tracking) + { + $this->subscription_tracking = $subscription_tracking; + } + + public function getSubscriptionTracking() + { + return $this->subscription_tracking; + } + + public function setGanalytics($ganalytics) + { + $this->ganalytics = $ganalytics; + } + + public function getGanalytics() + { + return $this->ganalytics; + } + + public function jsonSerialize() + { + return array_filter( + [ + 'click_tracking' => $this->getClickTracking(), + 'open_tracking' => $this->getOpenTracking(), + 'subscription_tracking' => $this->getSubscriptionTracking(), + 'ganalytics' => $this->getGanalytics() + ] + ); + } +} + +class BccSettings implements \JsonSerializable +{ + private + $enable, + $email; + + public function setEnable($enable) + { + $this->enable = $enable; + } + + public function getEnable() + { + return $this->enable; + } + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function jsonSerialize() + { + return array_filter( + [ + 'enable' => $this->getEnable(), + 'email' => $this->getEmail() + ] + ); + } +} + +class BypassListManagement implements \JsonSerializable +{ + private + $enable; + + public function setEnable($enable) + { + $this->enable = $enable; + } + + public function getEnable() + { + return $this->enable; + } + + public function jsonSerialize() + { + return array_filter( + [ + 'enable' => $this->getEnable() + ] + ); + } +} + +class Footer implements \JsonSerializable +{ + private + $enable, + $text, + $html; + + public function setEnable($enable) + { + $this->enable = $enable; + } + + public function getEnable() + { + return $this->enable; + } + + public function setText($text) + { + $this->text = $text; + } + + public function getText() + { + return $this->text; + } + + public function setHtml($html) + { + $this->html = $html; + } + + public function getHtml() + { + return $this->html; + } + + public function jsonSerialize() + { + return array_filter( + [ + 'enable' => $this->getEnable(), + 'text' => $this->getText(), + 'html' => $this->getHtml() + ] + ); + } +} + +class SandBoxMode implements \JsonSerializable +{ + private + $enable; + + public function setEnable($enable) + { + $this->enable = $enable; + } + + public function getEnable() + { + return $this->enable; + } + public function jsonSerialize() + { + return array_filter( + [ + 'enable' => $this->getEnable() + ] + ); + } +} + +class SpamCheck implements \JsonSerializable +{ + private + $enable, + $threshold, + $post_to_url; + + public function setEnable($enable) + { + $this->enable = $enable; + } + + public function getEnable() + { + return $this->enable; + } + + public function setThreshold($threshold) + { + $this->threshold = $threshold; + } + + public function getThreshold() + { + return $this->threshold; + } + + public function setPostToUrl($post_to_url) + { + $this->post_to_url = $post_to_url; + } + + public function getPostToUrl() + { + return $this->post_to_url; + } + + public function jsonSerialize() + { + return array_filter( + [ + 'enable' => $this->getEnable(), + 'threshold' => $this->getThreshold(), + 'post_to_url' => $this->getPostToUrl() + ] + ); + } +} + +class MailSettings implements \JsonSerializable +{ + private + $bcc, + $bypass_list_management, + $footer, + $sandbox_mode, + $spam_check; + + public function setBccSettings($bcc) + { + $this->bcc = $bcc; + } + + public function getBccSettings() + { + return $this->bcc; + } + + public function setBypassListManagement($bypass_list_management) + { + $this->bypass_list_management = $bypass_list_management; + } + + public function getBypassListManagement() + { + return $this->bypass_list_management; + } + + public function setFooter($footer) + { + $this->footer = $footer; + } + + public function getFooter() + { + return $this->footer; + } + + public function setSandboxMode($sandbox_mode) + { + $this->sandbox_mode = $sandbox_mode; + } + + public function getSandboxMode() + { + return $this->sandbox_mode; + } + + public function setSpamCheck($spam_check) + { + $this->spam_check = $spam_check; + } + + public function getSpamCheck() + { + return $this->spam_check; + } + + public function jsonSerialize() + { + return array_filter( + [ + 'bcc' => $this->getBccSettings(), + 'bypass_list_management' => $this->getBypassListManagement(), + 'footer' => $this->getFooter(), + 'sandbox_mode' => $this->getSandboxMode(), + 'spam_check' => $this->getSpamCheck() + ] + ); + } +} + +class ASM implements \JsonSerializable +{ + private + $group_id, + $groups_to_display; + + public function setGroupId($group_id) + { + $this->group_id = $group_id; + } + + public function getGroupId() + { + return $this->group_id; + } + + public function setGroupsToDisplay($group_ids) + { + $this->groups_to_display = $group_ids; + } + + public function getGroupsToDisplay() + { + return $this->groups_to_display; + } + + public function jsonSerialize() + { + return array_filter( + [ + 'group_id' => $this->getGroupId(), + 'groups_to_display' => $this->getGroupsToDisplay() + ] + ); + } +} + +class Attachment implements \JsonSerializable +{ + private + $content, + $type, + $filename, + $disposition, + $content_id; + + public function setContent($content) + { + $this->content = $content; + } + + public function getContent() + { + return $this->content; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setFilename($filename) + { + $this->filename = $filename; + } + + public function getFilename() + { + return $this->filename; + } + + public function setDisposition($disposition) + { + $this->disposition = $disposition; + } + + public function getDisposition() + { + return $this->disposition; + } + + public function setContentID($content_id) + { + $this->content_id = $content_id; + } + + public function getContentID() + { + return $this->content_id; + } + + public function jsonSerialize() + { + return array_filter( + [ + 'content' => $this->getContent(), + 'type' => $this->getType(), + 'filename' => $this->getFilename(), + 'disposition' => $this->getDisposition(), + 'content_id' => $this->getContentID() + ] + ); + } +} + +class Content implements \JsonSerializable +{ + private + $type, + $value; + + public function __construct($type, $value) + { + $this->type = $type; + $this->value = $value; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } + + public function jsonSerialize() + { + return array_filter( + [ + 'type' => $this->getType(), + 'value' => $this->getValue() + ] + ); + } +} + +class Personalization implements \JsonSerializable +{ + private + $tos, + $ccs, + $bccs, + $subject, + $headers, + $substitutions, + $custom_args, + $send_at; + + public function addTo($email) + { + $this->tos[] = $email; + } + + public function getTos() + { + return $this->tos; + } + + public function addCc($email) + { + $this->ccs[] = $email; + } + + public function getCcs() + { + return $this->ccs; + } + + public function addBcc($email) + { + $this->bccs[] = $email; + } + + public function getBccs() + { + return $this->bccs; + } + + public function setSubject($subject) + { + $this->subject = $subject; + } + + public function getSubject() + { + return $this->subject; + } + + public function addHeader($key, $value) + { + $this->headers[$key] = $value; + } + + public function getHeaders() + { + return $this->headers; + } + + public function addSubstitution($key, $value) + { + $this->substitutions[$key] = $value; + } + + public function getSubstitutions() + { + return $this->substitutions; + } + + public function addCustomArg($key, $value) + { + $this->custom_args[$key] = $value; + } + + public function getCustomArgs() + { + return $this->custom_args; + } + + public function setSendAt($send_at) + { + $this->send_at = $send_at; + } + + public function getSendAt() + { + return $this->send_at; + } + + public function jsonSerialize() + { + return array_filter( + [ + 'to' => $this->getTos(), + 'cc' => $this->getCcs(), + 'bcc' => $this->getBccs(), + 'subject' => $this->subject, + 'headers' => $this->getHeaders(), + 'substitutions' => $this->getSubstitutions(), + 'custom_args' => $this->getCustomArgs(), + 'send_at' => $this->getSendAt() + ] + ); + } +} + +class Email implements \JsonSerializable +{ + private + $name, + $email; + + public function __construct($name, $email) + { + $this->name = $name; + $this->email = $email; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function jsonSerialize() + { + return array_filter( + [ + 'name' => $this->getName(), + 'email' => $this->getEmail() + ] + ); + } +} + +/** + * The final request body object + */ +class Mail implements \JsonSerializable +{ + const VERSION = '1.0.0'; + + protected + $namespace = 'SendGrid'; + + public + $from, + $personalization, + $subject, + $contents, + $attachments, + $template_id, + $sections, + $headers, + $categories, + $custom_args, + $send_at, + $batch_id, + $asm, + $ip_pool_name, + $mail_settings, + $tracking_settings, + $reply_to; + + public function __construct($from = null, $subject = null, $to = null, $content = null) + { + if (!empty($from) && !empty($subject) && !empty($to) && !empty($content)) + { + $this->setFrom($from); + $personalization = new Personalization(); + $personalization->addTo($to); + $this->addPersonalization($personalization); + $this->setSubject($subject); + $this->addContent($content); + } + + } + + public function setFrom($email) + { + $this->from = $email; + } + + public function getFrom() + { + return $this->from; + } + + public function addPersonalization($personalization) + { + $this->personalization[] = $personalization; + } + + public function getPersonalizations() + { + return $this->personalization; + } + + public function setSubject($subject) + { + $this->subject = $subject; + } + + public function getSubject() + { + return $this->subject; + } + + public function addContent($content) + { + $this->contents[] = $content; + } + + public function getContents() + { + return $this->contents; + } + + public function addAttachment($attachment) + { + $this->attachments[] = $attachment; + } + + public function getAttachments() + { + return $this->attachments; + } + + public function setTemplateId($template_id) + { + $this->template_id = $template_id; + } + + public function getTemplateId() + { + return $this->template_id; + } + + public function addSection($key, $value) + { + $this->sections[$key] = $value; + } + + public function getSections() + { + return $this->sections; + } + + public function addHeader($key, $value) + { + $this->headers[$key] = $value; + } + + public function getHeaders() + { + return $this->headers; + } + + public function addCategory($category) + { + $this->categories[] = $category; + } + + public function getCategories() + { + return $this->categories; + } + + public function addCustomArg($key, $value) + { + $this->custom_args[$key] = $value; + } + + public function getCustomArgs() + { + return $this->custom_args; + } + + public function setSendAt($send_at) + { + $this->send_at = $send_at; + } + + public function getSendAt() + { + return $this->send_at; + } + + public function setBatchId($batch_id) + { + $this->batch_id = $batch_id; + } + + public function getBatchId() + { + return $this->batch_id; + } + + public function setASM($asm) + { + $this->asm = $asm; + } + + public function getASM() + { + return $this->asm; + } + + public function setIpPoolName($ip_pool_name) + { + $this->ip_pool_name = $ip_pool_name; + } + + public function getIpPoolName() + { + return $this->ip_pool_name; + } + + public function setMailSettings($mail_settings) + { + $this->mail_settings = $mail_settings; + } + + public function getMailSettings() + { + return $this->mail_settings; + } + + public function setTrackingSettings($tracking_settings) + { + $this->tracking_settings = $tracking_settings; + } + + public function getTrackingSettings() + { + return $this->tracking_settings; + } + + public function setReplyTo($reply_to) + { + $this->reply_to = $reply_to; + } + + public function getReplyTo() + { + return $this->reply_to; + } + + public function jsonSerialize() + { + return array_filter( + [ + 'from' => $this->getFrom(), + 'personalizations' => $this->getPersonalizations(), + 'subject' => $this->getSubject(), + 'content' => $this->getContents(), + 'attachments' => $this->getAttachments(), + 'template_id' => $this->getTemplateId(), + 'sections' => $this->getSections(), + 'headers' => $this->getHeaders(), + 'categories' => $this->getCategories(), + 'custom_args' => $this->getCustomArgs(), + 'send_at' => $this->getSendAt(), + 'batch_id' => $this->getBatchId(), + 'asm' => $this->getASM(), + 'ip_pool_name' => $this->getIpPoolName(), + 'mail_settings' => $this->getMailSettings(), + 'tracking_settings' => $this->getTrackingSettings(), + 'reply_to' => $this->getReplyTo() + ] + ); + } +} diff --git a/lib/sendgrid/sendgrid-wp-mail.php b/lib/sendgrid/sendgrid-wp-mail.php new file mode 100644 index 0000000..4bafbf5 --- /dev/null +++ b/lib/sendgrid/sendgrid-wp-mail.php @@ -0,0 +1,429 @@ +' when both are set. If + * just 'wp_mail_from' is set, then just the email address will be used with no + * name. + * + * The default content type is 'text/plain' which does not allow using HTML. + * However, you can set the content type of the email by using the + * 'wp_mail_content_type' filter. + * + * The default charset is based on the charset used on the blog. The charset can + * be set using the 'wp_mail_charset' filter. + * + * @since 1.2.1 + * @uses apply_filters() Calls 'wp_mail' hook on an array of all of the parameters. + * @uses apply_filters() Calls 'wp_mail_from' hook to get the from email address. + * @uses apply_filters() Calls 'wp_mail_from_name' hook to get the from address name. + * @uses apply_filters() Calls 'wp_mail_content_type' hook to get the email content type. + * @uses apply_filters() Calls 'wp_mail_charset' hook to get the email charset + * + * @param string|array $to Array or comma-separated list of email addresses to send message. + * @param string $subject Email subject + * @param string $message Message contents + * @param string|array $headers Optional. Additional headers. + * @param string|array $attachments Optional. Files to attach. + * @return bool Whether the email contents were sent successfully. + */ +function wp_mail( $to, $subject, $message, $headers = '', $attachments = array() ) +{ + $header_is_object = false; + + if ( $headers instanceof SendGrid\Email ) { + $header_is_object = true; + + $mail = $headers; + + // Compact the input, apply the filters, and extract them back out - empty header + extract( apply_filters( 'wp_mail', compact( 'to', 'subject', 'message', '', 'attachments' ) ) ); + + } else { + $mail = new SendGrid\Email(); + + // Compact the input, apply the filters, and extract them back out + extract( apply_filters( 'wp_mail', compact( 'to', 'subject', 'message', 'headers', 'attachments' ) ) ); + } + + $method = Sendgrid_Tools::get_send_method(); + + // prepare attachments + $attached_files = array(); + if ( ! empty( $attachments ) ) { + if ( ! is_array( $attachments ) ) { + $pos = strpos( ',', $attachments ); + if ( false !== $pos ) { + $attachments = preg_split( '/,\s*/', $attachments ); + } else { + $attachments = explode( "\n", str_replace( "\r\n", "\n", $attachments ) ); + } + } + + if ( is_array( $attachments ) ) { + foreach ( $attachments as $attachment ) { + if ( file_exists( $attachment ) ) { + $attached_files[] = $attachment; + } + } + } + } + + // Headers + $cc = array(); + $bcc = array(); + $unique_args = array(); + $from_name = $mail->getFromName(); + $from_email = $mail->getFrom(); + $replyto = $mail->getReplyTo(); + + if ( false === $header_is_object ) { + if ( empty( $headers ) ) { + $headers = array(); + } else { + if ( ! is_array( $headers ) ) { + // Explode the headers out, so this function can take both + // string headers and an array of headers. + $tempheaders = explode( "\n", str_replace( "\r\n", "\n", $headers ) ); + } else { + $tempheaders = $headers; + } + $headers = array(); + + // If it's actually got contents + if ( ! empty( $tempheaders ) ) { + // Iterate through the raw headers + foreach ( (array) $tempheaders as $header ) { + if ( false === strpos( $header, ':' ) ) { + if ( false !== stripos( $header, 'boundary=' ) ) { + $parts = preg_split( '/boundary=/i', trim( $header ) ); + $boundary = trim( str_replace( array( "'", '"' ), '', $parts[1] ) ); + } + continue; + } + // Explode them out + list( $name, $content ) = explode( ':', trim( $header ), 2 ); + + // Cleanup crew + $name = trim( $name ); + $content = trim( $content ); + + switch ( strtolower( $name ) ) { + // Mainly for legacy -- process a From: header if it's there + case 'from': + if ( false !== strpos( $content, '<' ) ) { + // So... making my life hard again? + $from_name = substr( $content, 0, strpos( $content, '<' ) - 1 ); + $from_name = str_replace( '"', '', $from_name ); + $from_name = trim( $from_name ); + + $from_email = substr( $content, strpos( $content, '<' ) + 1 ); + $from_email = str_replace( '>', '', $from_email ); + $from_email = trim( $from_email ); + } else { + $from_email = trim( $content ); + } + break; + case 'content-type': + if ( false !== strpos( $content, ';' ) ) { + list( $type, $charset ) = explode( ';', $content ); + $content_type = trim( $type ); + if ( false !== stripos( $charset, 'charset=' ) ) { + $charset = trim( str_replace( array( 'charset=', '"' ), '', $charset ) ); + } elseif ( false !== stripos( $charset, 'boundary=' ) ) { + $boundary = trim( str_replace( array( 'BOUNDARY=', 'boundary=', '"' ), '', $charset ) ); + $charset = ''; + } + } else { + $content_type = trim( $content ); + } + break; + case 'cc': + $cc = array_merge( (array) $cc, explode( ',', $content ) ); + foreach ( $cc as $key => $recipient ) { + $cc[ $key ] = trim( $recipient ); + } + break; + case 'bcc': + $bcc = array_merge( (array) $bcc, explode( ',', $content ) ); + foreach ( $bcc as $key => $recipient ) { + $bcc[ $key ] = trim( $recipient ); + } + break; + case 'reply-to': + $replyto = $content; + break; + case 'unique-args': + if ( false !== strpos( $content, ';' ) ) { + $unique_args = explode( ';', $content ); + } + else { + $unique_args = (array) trim( $content ); + } + foreach ( $unique_args as $unique_arg ) { + if ( false !== strpos( $content, '=' ) ) { + list( $key, $val ) = explode( '=', $unique_arg ); + $mail->addUniqueArg( trim( $key ), trim( $val ) ); + } + } + break; + case 'template': + $template_ok = Sendgrid_Tools::check_template( trim( $content ) ); + if ( $template_ok ) { + $mail->setTemplateId( trim( $content ) ); + } elseif ( Sendgrid_Tools::get_template() ) { + $mail->setTemplateId( Sendgrid_Tools::get_template() ); + } + break; + case 'categories': + $categories = explode( ',', trim( $content ) ); + foreach ( $categories as $category ) { + $mail->addCategory( $category ); + } + break; + case 'x-smtpapi-to': + $xsmtpapi_tos = explode( ',', trim( $content ) ); + foreach ( $xsmtpapi_tos as $xsmtpapi_to ) { + $mail->addSmtpapiTo( trim( $xsmtpapi_to ) ); + } + break; + case 'substitutions': + if ( false !== strpos( $content, ';' ) ) { + $substitutions = explode( ';', $content ); + } + else { + $substitutions = (array) trim( $content ); + } + foreach ( $substitutions as $substitution ) { + if ( false !== strpos( $content, '=' ) ) { + list( $key, $val ) = explode( '=', $substitution ); + $mail->addSubstitution( '%' . trim( $key ) . '%', explode( ',', trim( $val ) ) ); + } + } + break; + case 'sections': + if ( false !== strpos( $content, ';' ) ) { + $sections = explode( ';', $content ); + } + else { + $sections = (array) trim( $content ); + } + foreach ( $sections as $section ) { + if ( false !== strpos( $content, '=' ) ) { + list( $key, $val ) = explode( '=', $section ); + $mail->addSection( '%' . trim( $key ) . '%', trim( $val ) ); + } + } + break; + default: + // Add it to our grand headers array + $headers[trim( $name )] = trim( $content ); + break; + } + } + } + } + } + + // From email and name + // If we don't have a name from the input headers + if ( ! isset( $from_name ) or ! $from_name ) { + $from_name = htmlspecialchars_decode( Sendgrid_Tools::get_from_name() ); + } + + /* If we don't have an email from the input headers default to wordpress@$sitename + * Some hosts will block outgoing mail from this address if it doesn't exist but + * there's no easy alternative. Defaulting to admin_email might appear to be another + * option but some hosts may refuse to relay mail from an unknown domain. See + * http://trac.wordpress.org/ticket/5007. + */ + + if ( ! isset( $from_email ) ) { + $from_email = trim( Sendgrid_Tools::get_from_email() ); + if (! $from_email) { + // Get the site domain and get rid of www. + $sitename = strtolower( $_SERVER['SERVER_NAME'] ); + if ( ! $sitename and ( 'smtp' == $method ) ) { + return false; + } + + if ( 'www.' == substr( $sitename, 0, 4 ) ) { + $sitename = substr( $sitename, 4 ); + } + + $from_email = "wordpress@$sitename"; + } + } + + // Plugin authors can override the potentially troublesome default + $from_email = apply_filters( 'wp_mail_from' , $from_email ); + $from_name = apply_filters( 'wp_mail_from_name', $from_name ); + + // Set destination addresses + if ( !is_array( $to ) ) + $to = explode( ',', $to ); + + // Add any CC and BCC recipients + if ( ! empty( $cc ) ) { + foreach ( (array) $cc as $key => $recipient ) { + // Break $recipient into name and address parts if in the format "Foo " + if ( preg_match( '/(.*)<(.+)>/', $recipient, $matches ) ) { + if ( count( $matches ) == 3 ) { + $cc[ $key ] = trim( $matches[2] ); + } + } + } + } + + if ( ! empty( $bcc ) ) { + foreach ( (array) $bcc as $key => $recipient ) { + // Break $recipient into name and address parts if in the format "Foo " + if( preg_match( '/(.*)<(.+)>/', $recipient, $matches ) ) { + if ( 3 == count( $matches ) ) { + $bcc[ $key ] = trim( $matches[2] ); + } + } + } + } + + $toname = array(); + foreach ( (array) $to as $key => $recipient ) { + $toname[ $key ] = " "; + // Break $recipient into name and address parts if in the format "Foo " + if ( preg_match( '/(.*)<(.+)>/', $recipient, $matches ) ) { + if ( 3 == count( $matches ) ) { + $to[ $key ] = trim( $matches[2] ); + $toname[ $key ] = trim( $matches[1] ); + } + } + } + + // Set Content-Type from header of from global variable + $global_content_type = Sendgrid_Tools::get_content_type(); + if ( ! isset( $content_type ) ) { + if ( ! ( $global_content_type ) or ( 'plaintext' == $global_content_type ) ) { + $content_type = 'text/plain'; + } elseif ( 'html' == $global_content_type ) { + $content_type = 'text/html'; + } else { + $content_type = 'text/plain'; + } + } + + if ( ! array_key_exists( 'sendgrid_override_template', $GLOBALS['wp_filter'] ) ) { + $template = Sendgrid_Tools::get_template(); + if ( $template ) { + $mail->setTemplateId( $template ); + } + } else { + $message = apply_filters( 'sendgrid_override_template', $message, $content_type ); + } + + $content_type = apply_filters( 'wp_mail_content_type', $content_type ); + + $text_content = $message; + // check if setText() is set in the header + $text_content_header = $mail->getText(); + if ( isset( $text_content_header ) and false != $text_content_header ) { + $text_content = $text_content_header; + } + // check if filter sendgrid_mail_text is set + if ( array_key_exists( 'sendgrid_mail_text' , $GLOBALS['wp_filter'] ) ) { + $text_content = apply_filters( 'sendgrid_mail_text', $text_content ); + } + + $mail->setSubject( $subject ) + ->setText( $text_content ) + ->addCategory( SENDGRID_CATEGORY ) + ->setFrom( $from_email ); + + if ( 'api' == $method ) { + $mail->addTo( $to , $toname ); + } else { + $mail->addTo( $to ); + } + + $categories = explode( ',', Sendgrid_Tools::get_categories() ); + foreach ($categories as $category) { + $mail->addCategory($category); + } + + // send HTML content + if ( 'text/plain' !== $content_type ) { + $html_content = Sendgrid_Tools::remove_all_tag_urls( $message ); + + if ( array_key_exists( 'sendgrid_mail_html' , $GLOBALS['wp_filter'] ) ) { + $html_content = apply_filters( 'sendgrid_mail_html', $html_content ); + } + + $mail->setHtml( $html_content ); + } + + // set from name + if ( $from_email ) { + $mail->setFromName( $from_name ); + } + + // set from cc + if ( count( $cc ) ) { + $mail->setCcs( $cc ); + } + + // set from bcc + if ( count( $bcc ) ) { + $mail->setBccs( $bcc ); + } + + if ( ! isset( $replyto ) or false == $replyto ) { + $replyto = trim( Sendgrid_Tools::get_reply_to() ); + } + + $reply_to_found = preg_match( '/.*<(.*)>.*/i', $replyto, $result ); + if ( $reply_to_found ) { + $replyto = $result[1]; + } + + $mail->setReplyTo( $replyto ); + + // add attachemnts + if ( count( $attached_files ) ) { + $mail->setAttachments( $attached_files ); + } + + // set unsubscribe group + $unsubscribe_group_id = Sendgrid_Tools::get_unsubscribe_group(); + if ( $unsubscribe_group_id and $unsubscribe_group_id != 0 ) { + $mail->setAsmGroupId( $unsubscribe_group_id ); + } + + $sendgrid = Sendgrid_WP::get_instance(); + + if ( ! $sendgrid ) { + return false; + } + + return $sendgrid->send( $mail ); +} + + +if ( ! function_exists( 'set_html_content_type' ) ) +{ + /** + * Return the content type used to send html emails + * + * return string Conteny-type needed to send HTML emails + */ + function set_html_content_type() + { + return 'text/html'; + } +} diff --git a/readme.txt b/readme.txt new file mode 100644 index 0000000..652426c --- /dev/null +++ b/readme.txt @@ -0,0 +1,666 @@ +=== SendGrid === +Contributors: SendGrid +Donate link: http://sendgrid.com/ +Tags: email, email reliability, email templates, sendgrid, smtp, transactional email, wp_mail,email infrastructure, email marketing, marketing email, deliverability, email deliverability, email delivery, email server, mail server, email integration, cloud email +Requires at least: 4.6 +Tested up to: 4.9 +Stable tag: 1.11.9 +License: GPLv2 or later +License URI: http://www.gnu.org/licenses/gpl-2.0.html + +NO LONGER MAINTAINED. Send emails and upload contacts through SendGrid from your WordPress installation using SMTP or API integration. + +== Description == + +*This plugin is no longer supported and will not work with the latest WordPress release. Feel free to fork the code from [GitHub](https://github.com/sendgrid/wordpress/) and revise the plugin to work for your needs. To learn more about Twilio SendGrid services visit SendGrid.com.* + +What is the SendGrid WordPress Plugin? + +SendGrid’s cloud-based email infrastructure relieves businesses of the cost and complexity of maintaining custom email systems. SendGrid provides reliable deliverability, scalability, and real-time analytics along with flexible APIs that make custom integration with your application a breeze. + +SendGrid’s WordPress plugin replaces WordPress’s default wp_mail() function by using either an SMTP or API integration with SendGrid to send outgoing email from your WordPress installation. It also allows you to upload contacts directly to your SendGrid Marketing Campaigns account via a subscription widget. + +By using the SendGrid plugin, you will be able to take advantage of improved deliverability and an expanded feature set, including tracking and analytics, to enhance user engagement on your WordPress installation. SendGrid also provides world class customer support, should you run into any issues. + +For more details, [consult our official documentation](https://sendgrid.com/docs/Integrate/Tutorials/WordPress/index.html). + +For assistance you can contact SendGrid Support from the [SendGrid Support Portal](https://support.sendgrid.com/). Click **Login & Contact Support**, and then **Contact Support** to see your support contact options. Paying SendGrid customers have the option to contact support via phone, chat, or by submitting a ticket using our web form. All SendGrid customers have the option to submit a ticket using our web form. + += The Subscription Widget = + +SendGrid’s WordPress Subscription Widget makes it easy for people visiting your WordPress site to subscribe to your marketing emails, such as any newsletters, announcements, or promotional offers you may send. Upon signup, they’ll automatically receive an opt-in email allowing them to confirm their desire to begin receiving your emails. This confirmation constitutes “double opt-in,” a deliverability best practice. + +For more details, consult the official documentation for the [Subscription Widget](https://sendgrid.com/docs/Integrate/Tutorials/WordPress/subscription_widget.html) + += Multisite = + +If you are using the SendGrid plugin in a Multisite environment, you need to Network Activate it. You can then access the settings page on the network dashboard and the configure settings will be used for all sites. + +You can enable access for SendGrid settings to each subsite in the Multisite Settings tab. If the checkbox is unchecked then that site will not see the SendGrid settings page and it will use the settings set on the network. +Warning! When you activate SendGrid management for a subsite, that site will not be able to send emails until the admin updates the SendGrid settings on that subsite. + +If you already had the plugin installed in a Multisite environment and you update to versions after 1.9.0 you may need to reconfigure your plugin. + + +== Installation == + +Requirements: + +1. PHP version >= 5.6 and <= 7.1. Installing this plugin on PHP versions 5.3 and earlier will cause your website to break. +Installation on PHP versions 5.4 and 5.5 will work but it is not recommended. +2. To send emails through SMTP you need to also install the 'Swift Mailer' plugin. ( https://wordpress.org/plugins/swift-mailer/ ) +3. If wp_mail() function has been declared by another plugin that you have installed, you won't be able to use the SendGrid plugin + +To upload the SendGrid Plugin .ZIP file: + +1. Upload the WordPress SendGrid Plugin to the /wp-contents/plugins/ folder. +2. Activate the plugin from the "Plugins" menu in WordPress. +3. Create a SendGrid account at http://sendgrid.com/partner/wordpress +4. Navigate to "Settings" -> "SendGrid Settings" and enter your SendGrid credentials + +To auto install the SendGrid Plugin from the WordPress admin: + +1. Navigate to "Plugins" -> "Add New" +2. Search for "SendGrid Plugin" and click "Install Now" for the "SendGrid Plugin" listing. +3. Activate the plugin from the "Plugins" menu in WordPress, or from the plugin installation screen. +4. Create a SendGrid account at http://sendgrid.com/partner/wordpress +5. Navigate to "Settings" -> "SendGrid Settings" and enter your SendGrid credentials. + +For Multisite: + +1. Navigate to "My Sites" -> "Network Admin" -> "Plugins" +2. Click on "Add New" +3. Search for "SendGrid Plugin" and click "Install Now" for the "SendGrid Plugin" listing. +4. Network Activate the plugin from the "Plugins" menu in WordPress, or from the plugin installation screen. +5. Create a SendGrid account at http://sendgrid.com/partner/wordpress +6. Navigate to "My Sites" -> "Network Admin" -> "Dashboard" +7. Click on the "SendGrid Settings" item in the menu on the left and enter your SendGrid credentials. + += Global Settings = + +SendGrid settings can optionally be defined as global variables (wp-config.php): + +1. Set the API key. You need to make sure you set the Mail Send permissions to FULL ACCESS, Stats to READ ACCESS and Template Engine to READ or FULL ACCESS when you created the api key on SendGrid side, so you can send emails and see statistics on wordpress): + * API key: define('SENDGRID_API_KEY', 'sendgrid_api_key'); + +2. Set email related settings: + * Send method ('api' or 'smtp'): define('SENDGRID_SEND_METHOD', 'api'); + * From name: define('SENDGRID_FROM_NAME', 'Example Name'); + * From email: define('SENDGRID_FROM_EMAIL', 'from_email@example.com'); + * Reply to email: define('SENDGRID_REPLY_TO', 'reply_to@example.com'); + * Categories: define('SENDGRID_CATEGORIES', 'category_1,category_2'); + * Template: define('SENDGRID_TEMPLATE', 'templateID'); + * Content-type: define('SENDGRID_CONTENT_TYPE', 'html'); + * Unsubscribe Group: define('SENDGRID_UNSUBSCRIBE_GROUP', 'unsubscribeGroupId'); + + +3. Set widget related settings: + * Marketing Campaigns API key: define('SENDGRID_MC_API_KEY', 'sendgrid_mc_api_key'); + * Use the same authentication as for sending emails ('true' or 'false'): define('SENDGRID_MC_OPT_USE_TRANSACTIONAL', 'false'); + * The contact list ID: define('SENDGRID_MC_LIST_ID', 'listID'); + * Display the first and last name fields ('true' or 'false'): define('SENDGRID_MC_OPT_INCL_FNAME_LNAME', 'true'); + * First and last name fields are required ('true' or 'false'): define('SENDGRID_MC_OPT_REQ_FNAME_LNAME', 'true'); + * Signup confirmation email subject: define('SENDGRID_MC_SIGNUP_EMAIL_SUBJECT', 'Confirm subscription'); + * Signup confirmation email content: define('SENDGRID_MC_SIGNUP_EMAIL_CONTENT', '<a href="%confirmation_link%">click here</a>'); + * Signup confirmation page ID: define('SENDGRID_MC_SIGNUP_CONFIRMATION_PAGE', 'page_id'); + +4. Other configuration options: + * Set a custom timeout for API requests to SendGrid in seconds: define('SENDGRID_REQUEST_TIMEOUT', 10); + += Filters = + +Use HTML content type for a single email: + +`add_filter('wp_mail_content_type', 'set_html_content_type'); + +// Send the email + +remove_filter('wp_mail_content_type', 'set_html_content_type');` + +Change the email contents for all emails before they are sent: + +`function change_content( $message, $content_type ) { + if ( 'text/plain' == $content_type ) { + $message = $message . ' will be sent as text ' ; + } else { + $message = $message . ' will be sent as text and HTML '; + } + + return $message; +} + +add_filter( 'sendgrid_override_template', 'change_content' );` + +Changing the text content of all emails before they are sent: + +`function change_sendgrid_text_email( $message ) { + return $message . ' changed by way of text filter '; +} + +add_filter( 'sendgrid_mail_text', 'change_sendgrid_text_email' );` + +Changing the HTML content of all emails before they are sent: + +`function change_sendgrid_html_email( $message ) { + return $message . ' changed by way of html filter '; +} + +add_filter( 'sendgrid_mail_html', 'change_sendgrid_html_email' );` + +Note that all HTML emails sent through our plugin also contain the HTML body in the text part and that content will pass through the "sendgrid_mail_text" filter as well. + +== Frequently asked questions == + += Is there any official documentation for this plugin ? = + +Yes. [You can find it here](https://sendgrid.com/docs/Integrate/Tutorials/WordPress/index.html) + += What PHP versions are supported ? = + +Plugin versions 1.11.x were tested and confirmed to work on PHP 5.4, 5.5, 5.6, 7.0, 7.1. It DOES NOT work on PHP 5.3 and earlier. + +Plugin versions 1.10.x were tested and confirmed to work on PHP 5.3, 5.4, 5.5 and 5.6. It DOES NOT work on PHP 7.0 and later. + += What credentials do I need to add on settings page ? = + +Create a SendGrid account at https://sendgrid.com/ and generate a new API key on . + += How can I define a plugin setting to be used for all sites ? = + +Add it into your wp-config.php file. Example: `define('SENDGRID_API_KEY', 'your_api_key');`. + += How to use SendGrid with WP Better Emails plugin ? = + +If you have WP Better Emails plugin installed and you want to use the template defined here instead of the SendGrid template you can add the following code in your functions.php file from your theme: + +`function use_wpbe_template( $message, $content_type ) { + global $wp_better_emails; + if ( 'text/plain' == $content_type ) { + $message = $wp_better_emails->process_email_text( $message ); + } else { + $message = $wp_better_emails->process_email_html( $message ); + } + + return $message; +} +add_filter( 'sendgrid_override_template', 'use_wpbe_template', 10, 2 );` + +Using the default templates from WP Better Emails will cause all emails to be sent as HTML (i.e. text/html content-type). In order to send emails as plain text (i.e. text/plain content-type) you should remove the HTML Template from WP Better Emails settings page. This is can be done by removing the '%content%' tag from the HTML template. + += Why are my emails sent as HTML instead of plain text ? = + +For a detailed explanation see this page: https://sendgrid.com/docs/Classroom/Build/Format_Content/plain_text_emails_converted_to_html.html + += Will contacts from the widget be uploaded to Marketing Campaigns or Legacy Newsletter ? = + +The contacts will only be uploaded to Marketing Campaigns. + += What permissions should my API keys have ? = + +For the API Key used for sending emails (the General tab): + - Full Access to Mail Send. + - Read Access to Stats. + - Read Access to Supressions > Unsubscribe Groups. + - Read Access to Template Engine. +For the API Key used for contact upload (the Subscription Widget tab): + - Full Access to Marketing Campaigns. + += Can I disable the opt-in email ? = + +No. SendGrid’s Email Policy requires all email addressing being sent to by SendGrid customers be confirmed opt-in addresses. + += Can I change the content of the emails before they are sent ? = + +Yes. You must add a filter that does that. You need to declare a function that takes the content of the email as argument and then call add_filter() with the name "sendgrid_mail_text" or "sendgrid_mail_html", depending on what part of the email you want to change. + +If you want to change the text content of all the emails before they are sent you can do it like this : + +`function change_sendgrid_text_email( $message ) { + return $message . ' changed by way of text filter '; +} + +add_filter( 'sendgrid_mail_text', 'change_sendgrid_text_email' );` + +If you want to change HTML content of all the emails before they are sent you can do it like this : + +`function change_sendgrid_html_email( $message ) { + return $message . ' changed by way of html filter '; +} + +add_filter( 'sendgrid_mail_html', 'change_sendgrid_html_email' );` + +Note that what is changed depends of the content-type that you have set in the settings page or overwritten by way of filter. For "text/plain" only the text part is overwritten by the filter. For "text/html" both the text and the HTML filters are called. + +The code snippets above are usually added in the functions.php file of your theme. + += Can I use this plugin with BuddyPress ? = + +Yes. Our plugin required special integration with BuddyPress and it's regularly tested to ensure it behaves as expected. If you have noticed issues caused by installing this plugin along with BuddyPress, you can add the following line to your wp-config.php to disable it : + +`define('SENDGRID_DISABLE_BUDDYPRESS', '1');` + +If you're trying to send plaintext emails using BuddyPress, keep in mind that by default the whitespace content of those emails is normalized. + +That means that some newlines might be missing if you expect them to be there. + +To disable this functionality, you need to add the following line in your wp-config.php file: + +`define('SENDGRID_DISABLE_BP_NORMALIZE_WHITESPACE', '1');` + += Can I use shortcodes to customize the subscription confirmation page ? = + +Yes. You need to create custom page and select it from the settings page. You can place any of these shortcodes in the body of that page. Here's an example : + +`Hi [sendgridSubscriptionFirstName] [sendgridSubscriptionLastName], +Your email address : [sendgridSubscriptionEmail] has been successfully added. +You'll hear from us soon!` + +You need to enable the use of the First Name and Last Name fields from the settings page in order to use the shortcodes for them. + += Does this plugin support Multisite? = + +Yes. This plugin has basic Multisite support. You need to Network Activate this plugin. + +The settings for all sites in the network can be configured only by the Network Admin in the Network Admin Dashboard. + +Since 1.10.5 the Network Admin can delegate the configuration for each subsite to their respective owners. This will allow any subsite to use it's own SendGrid Plugin configuration. + += How can I further customize my emails? = + +When calling the wp_mail() function you can send a SendGrid PHP email object in the headers argument. + +Here is an example: + +`$email = new SendGrid\Email(); +$email + ->setFrom('me@bar.com') + ->setHtml('Hello World!') + ->addCategory('customCategory') +; + +wp_mail('foo@bar.com', 'Subject goes here', 'Message goes here', $email); +` + +You can find more examples here: https://github.com/sendgrid/sendgrid-php/blob/v4.0.2/README.md + += My server is slow. Can I increase the timeout for API requests? = + +Yes. You can define a constant in your wp-config.php file like this: + +`define('SENDGRID_REQUEST_TIMEOUT', 10);` + +The value is in seconds, this means that API requests will wait 10 seconds for a reponse from the SendGrid API server until timing out. + +== Screenshots == + +1. Go to Admin Panel, section Plugins and activate the SendGrid plugin. If you want to send emails through SMTP you need to install also the 'Swift Mailer' plugin. +2. After activation "Settings" link will appear. +3. Go to settings page and provide your SendGrid API Key. On this page you can set also the default "Name", "Sending Address" and "Reply Address". +4. If you provide valid credentials, a form which can be used to send test emails will appear. Here you can test the plugin sending some emails. +5. Header provided in the send test email form. +6. If you click in the right corner from the top of the page on the "Help" button, a popup window with more information will appear. +7. Select the time interval for which you want to see SendGrid statistics and charts. +8. You can configure the port number when using SMTP method. +9. You can configure categories for which you would like to see your stats. +10. You can use substitutions for emails using X-SMTPAPI headers. +11. You can configure the subscription widget. + +== Changelog == + += 1.11.9 = +* Updated README to indicate that the plugin is no longer supported. += 1.11.8 = +* Updated the plugin description to direct users to support.sendgrid.com for questions. +* Updated the "tested up to" field to confirm the latest version of the plugin wordes with the latest version of wordpress. += 1.11.7 = +* Added a configuration parameter of API request timeout in seconds +* Fixed an issue that made the HTML subscription emails break links += 1.11.6 = +* Added a feature flag to disable whitespace normalization in BuddyPress plaintext emails +* Fixed an issue where the from name and email subjects would incorrectly display the ampersand symbol += 1.11.5 = +* Fixed a potential stored XSS issue on the backend settings form +* Fixed a potential CSRF issue on the backend settings form += 1.11.4 = +* Fixed an issue where TO field recipients could not see each other in the email header += 1.11.3 = +* Fixed an issue where the send test form was displayed when no API key was set +* Fixed an issue where the subscription test form was not displayed for the default contact list +* Fixed an issue where the virtual pages for Subscription errors was not displayed +* Fixed an issue where there was no notification for option update on the Multisite settings page +* Fixed an issue where there was no notification when an API key was not set on the General tab when there was one on the Subscription Widget tab += 1.11.2 = +* Relaxed PHP requirement to at least version 5.4. += 1.11.1 = +* Confirmed compatibility with PHP 7 and 7.1 +* Removed some legacy code that caused warnings in PHP 7 +* Fixed issue where the statistics page would show up in menu even if the API key did not have stats permissions += 1.11.0 = +* BREAKING CHANGE: DO NOT UPGRADE IF YOU USE PHP <= 5.3. Only PHP 5.4 and later versions are supported. +* BREAKING CHANGE: Username & Password is no longer supported. Change your settings to use an API Key before updating +* API Mail Send was changed to use the V3 SendGrid API +* Emails sent with the V2 Email Object will now be translated to V3 +* BREAKING CHANGE: The date parameter on the V2 object is no longer supported +* BREAKING CHANGE: When using the V2 object with SMTPAPI Tos, the BCC and CCs will only be applied to the first address += 1.10.9 = +* Added pagination on multisite settings page +* Fixed an FAQ link +* Changed a class method to protected for extensibility (user contribution) +* Added some CSS classes for subscription widget (user contribution) +* Added warning when API Key doesn't have statistics permissions +* The statistics page will not show up in menu or dashboard when API key does not have stats permissions += 1.10.8 = +* Fixed an XSS vulnerability in the settings forms that would allow other admins to inject scripts += 1.10.7 = +* Add port 2525 for SMTP +* Use cache for stats widget on dashboard += 1.10.6 = +* Fixed logos and fonts on Stats page += 1.10.5 = +* Added settings page on multisite to give access to self manage SendGrid plugin to each subsite += 1.10.4 = +* Set transient token for Marketing Campaign in database += 1.10.3 = +* Add option to configure text version using setText() function from the header +* Tested up to 4.7 += 1.10.2 = +* Add options to configure subscription widget form (labels, padding) += 1.10.1 = +* Fixed a javascript error and a PHP warning += 1.10.0 = +* Added basic Multisite functionality +* WARNING: Multisite users need to network activate this plugin and reconfigure it. +* Fixed an issue where other users would see the SendGrid statistics widget on the dashboard. += 1.9.5 = +* Fixed an issue with the Reply-To field += 1.9.4 = +* Added Unsubscribe Group option +* Improved email validation += 1.9.3 = +* Added BuddyPress integration +* MC API Key is now saved on focusout +* Added posibility of using plain text template for subscription confirmation email +* Added posibility of adding shortcodes to subscription confirmation pages += 1.9.2 = +* Improved response time on admin dashboard += 1.9.1 = +* Added filters that allow the change of text or HTML content of all emails before they are sent +* Fixed an issue with the widget admin notice += 1.9.0 = +* Added the SendGrid Subscription Widget +* The settings page now has tabs to separate the configuration of general settings from the widget settings +* Fixed an issue where a 'gzinflate()' warning was displayed in Query Monitor for each plugin request +* Fixed an issue where the API Key would be deleted from the db if it was set in wp-config += 1.8.2 = +* Update SendGrid logos += 1.8.1 = +* Added possibility to override the email template += 1.8.0 = +* Added SendGrid\Email() for $header +* Fix Send Test form not being displayed issue += 1.7.6 = +* Updated validation for email addresses in the headers field of the send test email form +* Add ability to have and individual email sent to each recipient by setting x-smtpapi-to in headers += 1.7.5 = +* Fixed an issue with the reset password email from Wordpress +* Updated validation for email addresses +* Fixed an issue where some errors were not displayed on the settings page +* Add substitutions functionality += 1.7.4 = +* Fixed some failing requests during API Key checks +* Fixed an error that appeared on fresh installs regarding invalid port setting += 1.7.3 = +* Add global config for content-type +* Validate send_method and port set in config file +* Be able to define categories for which you would like to see your stats += 1.7.2 = +* Check your credentials after updating, you might need to reenter your credentials +* Fixed mcrypt library depencency issue += 1.7.1 = +* BREAKING CHANGE: Don't make update if you don't have mcrypt php library enabled +* Fixed a timeout issue from version 1.7.0 += 1.7.0 = +* BREAKING CHANGE : wp_mail() now returns only true/false to mirror the return values of the original wp_mail(). If you have written something custom in your function.php that depends on the old behavior of the wp_mail() you should check your code to make sure it will still work right with boolean as return value instead of array +* BREAKING CHANGE: Don't make update if you don't have mcrypt php library enabled +* Added the possibility of setting the api key or username/password empty +* Added the possibility of selecting the authentication method +* Removed dependency on cURL, now all API requests are made through Wordpress +* Sending mail via SMTP now supports API keys +* Security improvements +* Refactored old code += 1.6.9 = +* Add categories in headers, add errror message on statistics page if API key is not having permissions += 1.6.8 = +* Update api_key validation += 1.6.7 = +* Ability to use email templates, fix category statistics, display sender test form if we only have sending errors += 1.6.6 = +* Remove $plugin variable to avoid conflict with other plugins += 1.6.5 = +* Add configurable port number for SMTP method, Specify full path for sendgrid php library, Fix special characters and new lines issues += 1.6.4 = +* Add support for toName in API method, Add required Text Domain += 1.6.3 = +* Update Smtp class name to avoid conflicts += 1.6.2 = +* Add Api Keys for authentication, use the last version of Sendgrid library: https://github.com/sendgrid/sendgrid-php/releases/tag/v3.2.0 += 1.6.1 = +* Add unique arguments += 1.6 = +* Fix setTo method in SMTP option, update documentation, add link to SendGrid portal += 1.5.4 = +* Updated the plugin to use the last version of Sendgrid library: https://github.com/sendgrid/sendgrid-php/releases/tag/v3.0.0 += 1.5.3 = +* Fix attachments issue += 1.5.2 = +* Fix urlencoded username issue += 1.5.1 = +* Fix wp_remote issue += 1.5.0 = +* Updated the plugin to use the last version of Sendgrid library: https://github.com/sendgrid/sendgrid-php/releases/tag/v2.2.0 += 1.4.6 = +* Added constants for SendGrid settings += 1.4.5 = +* Fix changelog order in readme file += 1.4.4 = +* Fix unicode filename for icon-128x128.png image += 1.4.3 = +* Update plugin logo, description, screenshots on installation page += 1.4.2 = +* Added SendGrid Statistics for the categories added in the SendGrid Settings Page += 1.4.1 = +* Added support to set additional categories += 1.4 = +* Fix warnings for static method, add notice for php version < 5.3.0, refactor plugin code += 1.3.2 = +* Fix URL for loading image += 1.3.1 = +* Fixed reply-to to accept: "name " += 1.3 = +* Added support for WordPress 3.8, fixed visual issues for WordPress 3.7 += 1.2.1 = +* Fix errors: set_html_content_type error, WP_DEBUG enabled notice, Reply-To header is overwritten by default option += 1.2 = +* Added statistics for emails sent through WordPress plugin += 1.1.3 = +* Fix missing argument warning message += 1.1.2 = +* Fix display for october charts += 1.1.1 = +* Added default category on sending += 1.1 = +* Added SendGrid Statistics += 1.0 = +* Fixed issue: Add error message when PHP-curl extension is not enabled. + +== Upgrade notice == + += 1.11.8 = +* Updated the plugin description to direct users to support.sendgrid.com for questions. +* Updated the "tested up to" field to confirm the latest version of the plugin wordes with the latest version of wordpress. += 1.11.7 = +* Added a configuration parameter of API request timeout in seconds +* Fixed an issue that made the HTML subscription emails break links += 1.11.6 = +* Added a feature flag to disable whitespace normalization in BuddyPress plaintext emails +* Fixed an issue where the from name and email subjects would incorrectly display the ampersand symbol += 1.11.5 = +* Fixed a potential stored XSS issue on the backend settings form +* Fixed a potential CSRF issue on the backend settings form += 1.11.4 = +* Fixed an issue where TO field recipients could not see each other in the email header += 1.11.3 = +* Fixed an issue where the send test form was displayed when no API key was set +* Fixed an issue where the subscription test form was not displayed for the default contact list +* Fixed an issue where the virtual pages for Subscription errors was not displayed +* Fixed an issue where there was no notification for option update on the Multisite settings page +* Fixed an issue where there was no notification when an API key was not set on the General tab when there was one on the Subscription Widget tab += 1.11.2 = +* Relaxed PHP requirement to at least version 5.4. += 1.11.1 = +* Confirmed compatibility with PHP 7 and 7.1 +* Removed some legacy code that caused warnings in PHP 7 +* Fixed issue where the statistics page would show up in menu even if the API key did not have stats permissions += 1.11.0 = +* BREAKING CHANGE: DO NOT UPGRADE IF YOU USE PHP <= 5.3. Only PHP 5.4 and later versions are supported. +* BREAKING CHANGE: Username & Password is no longer supported. Change your settings to use an API Key before updating +* API Mail Send was changed to use the V3 SendGrid API +* Emails sent with the V2 Email Object will now be translated to V3 +* BREAKING CHANGE: The date parameter on the V2 object is no longer supported +* BREAKING CHANGE: When using the V2 object with SMTPAPI Tos, the BCC and CCs will only be applied to the first address += 1.10.9 = +* Added pagination on multisite settings page +* Fixed an FAQ link +* Changed a class method to protected for extensibility (user contribution) +* Added some CSS classes for subscription widget (user contribution) +* Added warning when API Key doesn't have statistics permissions +* The statistics page will not show up in menu or dashboard when API key does not have stats permissions += 1.10.8 = +* Fixed an XSS vulnerability in the settings forms that would allow other admins to inject scripts += 1.10.7 = +* Add port 2525 for SMTP +* Use cache for stats widget on dashboard += 1.10.6 = +* Fixed logos and fonts on Stats page += 1.10.5 = +* Added settings page on multisite to give access to self manage SendGrid plugin to each subsite += 1.10.4 = +* Set transient token for Marketing Campaign in database += 1.10.3 = +* Add option to configure text version using setText() function from the header +* Tested up to 4.7 += 1.10.2 = +* Add options to configure subscription widget form (labels, padding) += 1.10.1 = +* Fixed a javascript error and a PHP warning += 1.10.0 = +* Added basic Multisite functionality +* WARNING: Multisite users need to network activate this plugin and reconfigure it. +* Fixed an issue where other users would see the SendGrid statistics widget on the dashboard. += 1.9.5 = +* Fixed an issue with the Reply-To field += 1.9.4 = +* Added Unsubscribe Group option +* Improved email validation += 1.9.3 = +* Added BuddyPress integration +* MC API Key is now saved on focusout +* Added posibility of using plain text template for subscription confirmation email +* Added posibility of adding shortcodes to subscription confirmation pages += 1.9.2 = +* Improved response time on admin dashboard += 1.9.1 = +* Added filters that allow the change of text or HTML content of all emails before they are sent +* Fixed an issue with the widget admin notice += 1.9.0 = +* Added the SendGrid Subscription Widget +* The settings page now has tabs to separate the configuration of general settings from the widget settings +* Fixed an issue where a 'gzinflate()' warning was displayed in Query Monitor for each plugin request +* Fixed an issue where the API Key would be deleted from the db if it was set in wp-config += 1.8.2 = +* Update SendGrid logos += 1.8.1 = +* Added possibility to override the email template += 1.8.0 = +* Added SendGrid\Email() for $header +* Fix Send Test form not being displayed issue += 1.7.6 = +* Updated validation for email addresses in the headers field of the send test email form +* Add ability to have and individual email sent to each recipient by setting x-smtpapi-to in headers += 1.7.5 = +* Fixed an issue with the reset password email from Wordpress +* Updated validation for email addresses +* Fixed an issue where some errors were not displayed on the settings page +* Add substitutions functionality += 1.7.4 = +* Fixed some failing requests during API Key checks +* Fixed an error that appeared on fresh installs regarding invalid port setting += 1.7.3 = +* Add global config for content-type +* Validate send_method and port set in config file +* Be able to define categories for which you would like to see your stats += 1.7.2 = +* Check your credentials after updating, you might need to reenter your credentials +* Fixed mcrypt library depencency issue += 1.7.1 = +* BREAKING CHANGE: Don't make update if you don't have mcrypt php library enabled +* Fixed a timeout issue from version 1.7.0 += 1.7.0 = +* BREAKING CHANGE : wp_mail() now returns only true/false to mirror the return values of the original wp_mail(). If you have written something custom in your function.php that depends on the old behavior of the wp_mail() you should check your code to make sure it will still work right with boolean as return value instead of array +* BREAKING CHANGE: Don't make update if you don't have mcrypt php library enabled +* Added the possibility of setting the api key or username/password empty +* Added the possibility of selecting the authentication method +* Removed dependency on cURL, now all API requests are made through Wordpress +* Sending mail via SMTP now supports API keys +* Security improvements +* Refactored old code += 1.6.9 = +* Add categories in headers, add errror message on statistics page if API key is not having permissions += 1.6.8 = +* Update api_key validation += 1.6.7 = +* Ability to use email templates, fix category statistics, display sender test form if we only have sending errors += 1.6.6 = +* Remove $plugin variable to avoid conflict with other plugins += 1.6.5 = +* Add configurable port number for SMTP method, Specify full path for sendgrid php library, Fix special characters and new lines issues += 1.6.4 = +* Add support for toName in API method, Add required Text Domain += 1.6.3 = +* Update Smtp class name to avoid conflicts += 1.6.2 = +* Add Api Keys for authentication, use the last version of Sendgrid library: https://github.com/sendgrid/sendgrid-php/releases/tag/v3.2.0 += 1.6.1 = +* Add unique arguments += 1.6 = +* Fix setTo method in SMTP option, update documentation, add link to SendGrid portal += 1.5.4 = +* Updated the plugin to use the last version of Sendgrid library: https://github.com/sendgrid/sendgrid-php/releases/tag/v3.0.0 += 1.5.3 = +* Fix attachments issue += 1.5.2 = +* Fix urlencoded username issue += 1.5.1 = +* Fix wp_remote issue += 1.5.0 = +* Updated the plugin to use the last version of Sendgrid library: https://github.com/sendgrid/sendgrid-php/releases/tag/v2.2.0 += 1.4.6 = +* Added constants for SendGrid settings += 1.4.5 = +* Fix changelog order in readme file += 1.4.4 = +* Fix unicode filename for icon-128x128.png image += 1.4.3 = +* Update plugin logo, description, screenshots on installation page += 1.4.2 = +* Added SendGrid Statistics for the categories added in the SendGrid Settings Page += 1.4.1 = +* Added support to set additional categories += 1.4 = +* Fix warnings for static method, add notice for php version < 5.3.0, refactor plugin code += 1.3 = +* Added support for WordPress 3.8, fixed visual issues for WordPress 3.7 += 1.2 = +* Now you can switch between Sendgrid general statistics and Sendgrid WordPress statistics. += 1.1 = +* SendGrid Statistics can be used by selecting the time interval for which you want to see your statistics. diff --git a/vendor/autoload.php b/vendor/autoload.php new file mode 100644 index 0000000..e15bdf4 --- /dev/null +++ b/vendor/autoload.php @@ -0,0 +1,4 @@ + + * Test schema documentation Copyright © 2011, Daniel Marschall
+ * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * - Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * - Neither the name of Dominic Sayers nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * @package is_email + * @author Dominic Sayers + * @copyright 2008-2011 Dominic Sayers + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + * @link http://www.dominicsayers.com/isemail + * @version 3.04.1 - Changed my link to http://isemail.info throughout + */ + +// The quality of this code has been improved greatly by using PHPLint +// Copyright (c) 2010 Umberto Salsi +// This is free software; see the license for copying conditions. +// More info: http://www.icosaedro.it/phplint/ +/*. + require_module 'standard'; + require_module 'pcre'; +.*/ + +if (!defined('ISEMAIL_VALID')) { +/*:diagnostic constants start:*/ +// This part of the code is generated using data from test/meta.xml. Beware of making manual alterations + // Categories + define('ISEMAIL_VALID_CATEGORY', 1); + define('ISEMAIL_DNSWARN', 7); + define('ISEMAIL_RFC5321', 15); + define('ISEMAIL_CFWS', 31); + define('ISEMAIL_DEPREC', 63); + define('ISEMAIL_RFC5322', 127); + define('ISEMAIL_ERR', 255); + + // Diagnoses + // Address is valid + define('ISEMAIL_VALID', 0); + // Address is valid but a DNS check was not successful + define('ISEMAIL_DNSWARN_NO_MX_RECORD', 5); + define('ISEMAIL_DNSWARN_NO_RECORD', 6); + // Address is valid for SMTP but has unusual elements + define('ISEMAIL_RFC5321_TLD', 9); + define('ISEMAIL_RFC5321_TLDNUMERIC', 10); + define('ISEMAIL_RFC5321_QUOTEDSTRING', 11); + define('ISEMAIL_RFC5321_ADDRESSLITERAL', 12); + define('ISEMAIL_RFC5321_IPV6DEPRECATED', 13); + // Address is valid within the message but cannot be used unmodified for the envelope + define('ISEMAIL_CFWS_COMMENT', 17); + define('ISEMAIL_CFWS_FWS', 18); + // Address contains deprecated elements but may still be valid in restricted contexts + define('ISEMAIL_DEPREC_LOCALPART', 33); + define('ISEMAIL_DEPREC_FWS', 34); + define('ISEMAIL_DEPREC_QTEXT', 35); + define('ISEMAIL_DEPREC_QP', 36); + define('ISEMAIL_DEPREC_COMMENT', 37); + define('ISEMAIL_DEPREC_CTEXT', 38); + define('ISEMAIL_DEPREC_CFWS_NEAR_AT', 49); + // The address is only valid according to the broad definition of RFC 5322. It is otherwise invalid. + define('ISEMAIL_RFC5322_DOMAIN', 65); + define('ISEMAIL_RFC5322_TOOLONG', 66); + define('ISEMAIL_RFC5322_LOCAL_TOOLONG', 67); + define('ISEMAIL_RFC5322_DOMAIN_TOOLONG', 68); + define('ISEMAIL_RFC5322_LABEL_TOOLONG', 69); + define('ISEMAIL_RFC5322_DOMAINLITERAL', 70); + define('ISEMAIL_RFC5322_DOMLIT_OBSDTEXT', 71); + define('ISEMAIL_RFC5322_IPV6_GRPCOUNT', 72); + define('ISEMAIL_RFC5322_IPV6_2X2XCOLON', 73); + define('ISEMAIL_RFC5322_IPV6_BADCHAR', 74); + define('ISEMAIL_RFC5322_IPV6_MAXGRPS', 75); + define('ISEMAIL_RFC5322_IPV6_COLONSTRT', 76); + define('ISEMAIL_RFC5322_IPV6_COLONEND', 77); + // Address is invalid for any purpose + define('ISEMAIL_ERR_EXPECTING_DTEXT', 129); + define('ISEMAIL_ERR_NOLOCALPART', 130); + define('ISEMAIL_ERR_NODOMAIN', 131); + define('ISEMAIL_ERR_CONSECUTIVEDOTS', 132); + define('ISEMAIL_ERR_ATEXT_AFTER_CFWS', 133); + define('ISEMAIL_ERR_ATEXT_AFTER_QS', 134); + define('ISEMAIL_ERR_ATEXT_AFTER_DOMLIT', 135); + define('ISEMAIL_ERR_EXPECTING_QPAIR', 136); + define('ISEMAIL_ERR_EXPECTING_ATEXT', 137); + define('ISEMAIL_ERR_EXPECTING_QTEXT', 138); + define('ISEMAIL_ERR_EXPECTING_CTEXT', 139); + define('ISEMAIL_ERR_BACKSLASHEND', 140); + define('ISEMAIL_ERR_DOT_START', 141); + define('ISEMAIL_ERR_DOT_END', 142); + define('ISEMAIL_ERR_DOMAINHYPHENSTART', 143); + define('ISEMAIL_ERR_DOMAINHYPHENEND', 144); + define('ISEMAIL_ERR_UNCLOSEDQUOTEDSTR', 145); + define('ISEMAIL_ERR_UNCLOSEDCOMMENT', 146); + define('ISEMAIL_ERR_UNCLOSEDDOMLIT', 147); + define('ISEMAIL_ERR_FWS_CRLF_X2', 148); + define('ISEMAIL_ERR_FWS_CRLF_END', 149); + define('ISEMAIL_ERR_CR_NO_LF', 150); +// End of generated code +/*:diagnostic constants end:*/ + + // function control + define('ISEMAIL_THRESHOLD' , 16); + + // Email parts + define('ISEMAIL_COMPONENT_LOCALPART' , 0); + define('ISEMAIL_COMPONENT_DOMAIN' , 1); + define('ISEMAIL_COMPONENT_LITERAL' , 2); + define('ISEMAIL_CONTEXT_COMMENT' , 3); + define('ISEMAIL_CONTEXT_FWS' , 4); + define('ISEMAIL_CONTEXT_QUOTEDSTRING' , 5); + define('ISEMAIL_CONTEXT_QUOTEDPAIR' , 6); + + // Miscellaneous string constants + define('ISEMAIL_STRING_AT' , '@'); + define('ISEMAIL_STRING_BACKSLASH' , '\\'); + define('ISEMAIL_STRING_DOT' , '.'); + define('ISEMAIL_STRING_DQUOTE' , '"'); + define('ISEMAIL_STRING_OPENPARENTHESIS' , '('); + define('ISEMAIL_STRING_CLOSEPARENTHESIS', ')'); + define('ISEMAIL_STRING_OPENSQBRACKET' , '['); + define('ISEMAIL_STRING_CLOSESQBRACKET' , ']'); + define('ISEMAIL_STRING_HYPHEN' , '-'); + define('ISEMAIL_STRING_COLON' , ':'); + define('ISEMAIL_STRING_DOUBLECOLON' , '::'); + define('ISEMAIL_STRING_SP' , ' '); + define('ISEMAIL_STRING_HTAB' , "\t"); + define('ISEMAIL_STRING_CR' , "\r"); + define('ISEMAIL_STRING_LF' , "\n"); + define('ISEMAIL_STRING_IPV6TAG' , 'IPv6:'); + // US-ASCII visible characters not valid for atext (http://tools.ietf.org/html/rfc5322#section-3.2.3) + define('ISEMAIL_STRING_SPECIALS' , '()<>[]:;@\\,."'); +} + +class SendGrid_ThirdParty { +/** + * Check that an email address conforms to RFCs 5321, 5322 and others + * + * As of Version 3.0, we are now distinguishing clearly between a Mailbox + * as defined by RFC 5321 and an addr-spec as defined by RFC 5322. Depending + * on the context, either can be regarded as a valid email address. The + * RFC 5321 Mailbox specification is more restrictive (comments, white space + * and obsolete forms are not allowed) + * + * @param string $email The email address to check + * @param boolean $checkDNS If true then a DNS check for MX records will be made + * @param mixed $errorlevel Determines the boundary between valid and invalid addresses. + * Status codes above this number will be returned as-is, + * status codes below will be returned as ISEMAIL_VALID. Thus the + * calling program can simply look for ISEMAIL_VALID if it is + * only interested in whether an address is valid or not. The + * errorlevel will determine how "picky" is_email() is about + * the address. + * + * If omitted or passed as false then is_email() will return + * true or false rather than an integer error or warning. + * + * NB Note the difference between $errorlevel = false and + * $errorlevel = 0 + * @param array $parsedata If passed, returns the parsed address components + */ +/*.mixed.*/ + public static function is_email($email, $checkDNS = false, $errorlevel = false, &$parsedata = array()) { + // Check that $email is a valid address. Read the following RFCs to understand the constraints: + // (http://tools.ietf.org/html/rfc5321) + // (http://tools.ietf.org/html/rfc5322) + // (http://tools.ietf.org/html/rfc4291#section-2.2) + // (http://tools.ietf.org/html/rfc1123#section-2.1) + // (http://tools.ietf.org/html/rfc3696) (guidance only) +// version 2.0: Enhance $diagnose parameter to $errorlevel +// version 3.0: Introduced status categories +// revision 3.1: BUG: $parsedata was passed by value instead of by reference + + if (is_bool($errorlevel)) { + $threshold = ISEMAIL_VALID; + $diagnose = (bool) $errorlevel; + } else { + $diagnose = true; + + switch ((int) $errorlevel) { + case E_WARNING: $threshold = ISEMAIL_THRESHOLD; break; // For backward compatibility + case E_ERROR: $threshold = ISEMAIL_VALID; break; // For backward compatibility + default: $threshold = (int) $errorlevel; + } + } + + $return_status = array(ISEMAIL_VALID); + + // Parse the address into components, character by character + $raw_length = strlen($email); + $context = ISEMAIL_COMPONENT_LOCALPART; // Where we are + $context_stack = array($context); // Where we have been + $context_prior = ISEMAIL_COMPONENT_LOCALPART; // Where we just came from + $token = ''; // The current character + $token_prior = ''; // The previous character + $parsedata = array( + ISEMAIL_COMPONENT_LOCALPART => '', + ISEMAIL_COMPONENT_DOMAIN => '' + ); // For the components of the address + + $atomlist = array( + ISEMAIL_COMPONENT_LOCALPART => array(''), + ISEMAIL_COMPONENT_DOMAIN => array('') + ); // For the dot-atom elements of the address + $element_count = 0; + $element_len = 0; + $hyphen_flag = false; // Hyphen cannot occur at the end of a subdomain + $end_or_die = false; // CFWS can only appear at the end of the element + +//-echo ""; // debug + for ($i = 0; $i < $raw_length; $i++) { + $token = $email[$i]; +//-echo ""; // debug + + switch ($context) { + //------------------------------------------------------------- + // local-part + //------------------------------------------------------------- + case ISEMAIL_COMPONENT_LOCALPART: + // http://tools.ietf.org/html/rfc5322#section-3.4.1 + // local-part = dot-atom / quoted-string / obs-local-part + // + // dot-atom = [CFWS] dot-atom-text [CFWS] + // + // dot-atom-text = 1*atext *("." 1*atext) + // + // quoted-string = [CFWS] + // DQUOTE *([FWS] qcontent) [FWS] DQUOTE + // [CFWS] + // + // obs-local-part = word *("." word) + // + // word = atom / quoted-string + // + // atom = [CFWS] 1*atext [CFWS] + switch ($token) { + // Comment + case ISEMAIL_STRING_OPENPARENTHESIS: + if ($element_len === 0) + // Comments are OK at the beginning of an element + $return_status[] = ($element_count === 0) ? ISEMAIL_CFWS_COMMENT : ISEMAIL_DEPREC_COMMENT; + else { + $return_status[] = ISEMAIL_CFWS_COMMENT; + $end_or_die = true; // We can't start a comment in the middle of an element, so this better be the end + } + + $context_stack[] = $context; + $context = ISEMAIL_CONTEXT_COMMENT; + break; + // Next dot-atom element + case ISEMAIL_STRING_DOT: + if ($element_len === 0) + // Another dot, already? + $return_status[] = ($element_count === 0) ? ISEMAIL_ERR_DOT_START : ISEMAIL_ERR_CONSECUTIVEDOTS; // Fatal error + else + // The entire local-part can be a quoted string for RFC 5321 + // If it's just one atom that is quoted then it's an RFC 5322 obsolete form + if ($end_or_die) $return_status[] = ISEMAIL_DEPREC_LOCALPART; + + $end_or_die = false; // CFWS & quoted strings are OK again now we're at the beginning of an element (although they are obsolete forms) + $element_len = 0; + $element_count++; + $parsedata[ISEMAIL_COMPONENT_LOCALPART] .= $token; + $atomlist[ISEMAIL_COMPONENT_LOCALPART][$element_count] = ''; + + break; + // Quoted string + case ISEMAIL_STRING_DQUOTE: + if ($element_len === 0) { + // The entire local-part can be a quoted string for RFC 5321 + // If it's just one atom that is quoted then it's an RFC 5322 obsolete form + $return_status[] = ($element_count === 0) ? ISEMAIL_RFC5321_QUOTEDSTRING : ISEMAIL_DEPREC_LOCALPART; + + $parsedata[ISEMAIL_COMPONENT_LOCALPART] .= $token; + $atomlist[ISEMAIL_COMPONENT_LOCALPART][$element_count] .= $token; + $element_len++; + $end_or_die = true; // Quoted string must be the entire element + $context_stack[] = $context; + $context = ISEMAIL_CONTEXT_QUOTEDSTRING; + } else { + $return_status[] = ISEMAIL_ERR_EXPECTING_ATEXT; // Fatal error + } + + break; + // Folding White Space + case ISEMAIL_STRING_CR: + case ISEMAIL_STRING_SP: + case ISEMAIL_STRING_HTAB: + if (($token === ISEMAIL_STRING_CR) && ((++$i === $raw_length) || ($email[$i] !== ISEMAIL_STRING_LF))) {$return_status[] = ISEMAIL_ERR_CR_NO_LF; break;} // Fatal error + + if ($element_len === 0) + $return_status[] = ($element_count === 0) ? ISEMAIL_CFWS_FWS : ISEMAIL_DEPREC_FWS; + else + $end_or_die = true; // We can't start FWS in the middle of an element, so this better be the end + + $context_stack[] = $context; + $context = ISEMAIL_CONTEXT_FWS; + $token_prior = $token; + + break; + // @ + case ISEMAIL_STRING_AT: + // At this point we should have a valid local-part + if (count($context_stack) !== 1) die('Unexpected item on context stack'); + + if ($parsedata[ISEMAIL_COMPONENT_LOCALPART] === '') + $return_status[] = ISEMAIL_ERR_NOLOCALPART; // Fatal error + elseif ($element_len === 0) $return_status[] = ISEMAIL_ERR_DOT_END; // Fatal error + // http://tools.ietf.org/html/rfc5321#section-4.5.3.1.1 + // The maximum total length of a user name or other local-part is 64 + // octets. + elseif (strlen($parsedata[ISEMAIL_COMPONENT_LOCALPART]) > 64) + $return_status[] = ISEMAIL_RFC5322_LOCAL_TOOLONG; + // http://tools.ietf.org/html/rfc5322#section-3.4.1 + // Comments and folding white space + // SHOULD NOT be used around the "@" in the addr-spec. + // + // http://tools.ietf.org/html/rfc2119 + // 4. SHOULD NOT This phrase, or the phrase "NOT RECOMMENDED" mean that + // there may exist valid reasons in particular circumstances when the + // particular behavior is acceptable or even useful, but the full + // implications should be understood and the case carefully weighed + // before implementing any behavior described with this label. + elseif (($context_prior === ISEMAIL_CONTEXT_COMMENT) || ($context_prior === ISEMAIL_CONTEXT_FWS)) + $return_status[] = ISEMAIL_DEPREC_CFWS_NEAR_AT; + + // Clear everything down for the domain parsing + $context = ISEMAIL_COMPONENT_DOMAIN; // Where we are + $context_stack = array($context); // Where we have been + $element_count = 0; + $element_len = 0; + $end_or_die = false; // CFWS can only appear at the end of the element + + break; + // atext + default: + // http://tools.ietf.org/html/rfc5322#section-3.2.3 + // atext = ALPHA / DIGIT / ; Printable US-ASCII + // "!" / "#" / ; characters not including + // "$" / "%" / ; specials. Used for atoms. + // "&" / "'" / + // "*" / "+" / + // "-" / "/" / + // "=" / "?" / + // "^" / "_" / + // "`" / "{" / + // "|" / "}" / + // "~" + if ($end_or_die) { + // We have encountered atext where it is no longer valid + switch ($context_prior) { + case ISEMAIL_CONTEXT_COMMENT: + case ISEMAIL_CONTEXT_FWS: + $return_status[] = ISEMAIL_ERR_ATEXT_AFTER_CFWS; + break; + case ISEMAIL_CONTEXT_QUOTEDSTRING: + $return_status[] = ISEMAIL_ERR_ATEXT_AFTER_QS; + break; + default: + die ("More atext found where none is allowed, but unrecognised prior context: $context_prior"); + } + } else { + $context_prior = $context; + $ord = ord($token); + + if (($ord < 33) || ($ord > 126) || ($ord === 10) || (!is_bool(strpos(ISEMAIL_STRING_SPECIALS, $token)))) + $return_status[] = ISEMAIL_ERR_EXPECTING_ATEXT; // Fatal error + + $parsedata[ISEMAIL_COMPONENT_LOCALPART] .= $token; + $atomlist[ISEMAIL_COMPONENT_LOCALPART][$element_count] .= $token; + $element_len++; + } + } + + break; + //------------------------------------------------------------- + // Domain + //------------------------------------------------------------- + case ISEMAIL_COMPONENT_DOMAIN: + // http://tools.ietf.org/html/rfc5322#section-3.4.1 + // domain = dot-atom / domain-literal / obs-domain + // + // dot-atom = [CFWS] dot-atom-text [CFWS] + // + // dot-atom-text = 1*atext *("." 1*atext) + // + // domain-literal = [CFWS] "[" *([FWS] dtext) [FWS] "]" [CFWS] + // + // dtext = %d33-90 / ; Printable US-ASCII + // %d94-126 / ; characters not including + // obs-dtext ; "[", "]", or "\" + // + // obs-domain = atom *("." atom) + // + // atom = [CFWS] 1*atext [CFWS] + + + // http://tools.ietf.org/html/rfc5321#section-4.1.2 + // Mailbox = Local-part "@" ( Domain / address-literal ) + // + // Domain = sub-domain *("." sub-domain) + // + // address-literal = "[" ( IPv4-address-literal / + // IPv6-address-literal / + // General-address-literal ) "]" + // ; See Section 4.1.3 + + // http://tools.ietf.org/html/rfc5322#section-3.4.1 + // Note: A liberal syntax for the domain portion of addr-spec is + // given here. However, the domain portion contains addressing + // information specified by and used in other protocols (e.g., + // [RFC1034], [RFC1035], [RFC1123], [RFC5321]). It is therefore + // incumbent upon implementations to conform to the syntax of + // addresses for the context in which they are used. + // is_email() author's note: it's not clear how to interpret this in + // the context of a general email address validator. The conclusion I + // have reached is this: "addressing information" must comply with + // RFC 5321 (and in turn RFC 1035), anything that is "semantically + // invisible" must comply only with RFC 5322. + switch ($token) { + // Comment + case ISEMAIL_STRING_OPENPARENTHESIS: + if ($element_len === 0) + // Comments at the start of the domain are deprecated in the text + // Comments at the start of a subdomain are obs-domain + // (http://tools.ietf.org/html/rfc5322#section-3.4.1) + $return_status[] = ($element_count === 0) ? ISEMAIL_DEPREC_CFWS_NEAR_AT : ISEMAIL_DEPREC_COMMENT; + else { + $return_status[] = ISEMAIL_CFWS_COMMENT; + $end_or_die = true; // We can't start a comment in the middle of an element, so this better be the end + } + + $context_stack[] = $context; + $context = ISEMAIL_CONTEXT_COMMENT; + break; + // Next dot-atom element + case ISEMAIL_STRING_DOT: + if ($element_len === 0) + // Another dot, already? + $return_status[] = ($element_count === 0) ? ISEMAIL_ERR_DOT_START : ISEMAIL_ERR_CONSECUTIVEDOTS; // Fatal error + elseif ($hyphen_flag) + // Previous subdomain ended in a hyphen + $return_status[] = ISEMAIL_ERR_DOMAINHYPHENEND; // Fatal error + else + // Nowhere in RFC 5321 does it say explicitly that the + // domain part of a Mailbox must be a valid domain according + // to the DNS standards set out in RFC 1035, but this *is* + // implied in several places. For instance, wherever the idea + // of host routing is discussed the RFC says that the domain + // must be looked up in the DNS. This would be nonsense unless + // the domain was designed to be a valid DNS domain. Hence we + // must conclude that the RFC 1035 restriction on label length + // also applies to RFC 5321 domains. + // + // http://tools.ietf.org/html/rfc1035#section-2.3.4 + // labels 63 octets or less + if ($element_len > 63) $return_status[] = ISEMAIL_RFC5322_LABEL_TOOLONG; + + $end_or_die = false; // CFWS is OK again now we're at the beginning of an element (although it may be obsolete CFWS) + $element_len = 0; + $element_count++; + $atomlist[ISEMAIL_COMPONENT_DOMAIN][$element_count] = ''; + $parsedata[ISEMAIL_COMPONENT_DOMAIN] .= $token; + + break; + // Domain literal + case ISEMAIL_STRING_OPENSQBRACKET: + if ($parsedata[ISEMAIL_COMPONENT_DOMAIN] === '') { + $end_or_die = true; // Domain literal must be the only component + $element_len++; + $context_stack[] = $context; + $context = ISEMAIL_COMPONENT_LITERAL; + $parsedata[ISEMAIL_COMPONENT_DOMAIN] .= $token; + $atomlist[ISEMAIL_COMPONENT_DOMAIN][$element_count] .= $token; + $parsedata[ISEMAIL_COMPONENT_LITERAL] = ''; + } else { + $return_status[] = ISEMAIL_ERR_EXPECTING_ATEXT; // Fatal error + } + + break; + // Folding White Space + case ISEMAIL_STRING_CR: + case ISEMAIL_STRING_SP: + case ISEMAIL_STRING_HTAB: + if (($token === ISEMAIL_STRING_CR) && ((++$i === $raw_length) || ($email[$i] !== ISEMAIL_STRING_LF))) {$return_status[] = ISEMAIL_ERR_CR_NO_LF; break;} // Fatal error + + if ($element_len === 0) + $return_status[] = ($element_count === 0) ? ISEMAIL_DEPREC_CFWS_NEAR_AT : ISEMAIL_DEPREC_FWS; + else { + $return_status[] = ISEMAIL_CFWS_FWS; + $end_or_die = true; // We can't start FWS in the middle of an element, so this better be the end + } + + $context_stack[] = $context; + $context = ISEMAIL_CONTEXT_FWS; + $token_prior = $token; + break; + // atext + default: + // RFC 5322 allows any atext... + // http://tools.ietf.org/html/rfc5322#section-3.2.3 + // atext = ALPHA / DIGIT / ; Printable US-ASCII + // "!" / "#" / ; characters not including + // "$" / "%" / ; specials. Used for atoms. + // "&" / "'" / + // "*" / "+" / + // "-" / "/" / + // "=" / "?" / + // "^" / "_" / + // "`" / "{" / + // "|" / "}" / + // "~" + + // But RFC 5321 only allows letter-digit-hyphen to comply with DNS rules (RFCs 1034 & 1123) + // http://tools.ietf.org/html/rfc5321#section-4.1.2 + // sub-domain = Let-dig [Ldh-str] + // + // Let-dig = ALPHA / DIGIT + // + // Ldh-str = *( ALPHA / DIGIT / "-" ) Let-dig + // + if ($end_or_die) { + // We have encountered atext where it is no longer valid + switch ($context_prior) { + case ISEMAIL_CONTEXT_COMMENT: + case ISEMAIL_CONTEXT_FWS: + $return_status[] = ISEMAIL_ERR_ATEXT_AFTER_CFWS; + break; + case ISEMAIL_COMPONENT_LITERAL: + $return_status[] = ISEMAIL_ERR_ATEXT_AFTER_DOMLIT; + break; + default: + die ("More atext found where none is allowed, but unrecognised prior context: $context_prior"); + } + } + + $ord = ord($token); + $hyphen_flag = false; // Assume this token isn't a hyphen unless we discover it is + + if (($ord < 33) || ($ord > 126) || (!is_bool(strpos(ISEMAIL_STRING_SPECIALS, $token)))) { + $return_status[] = ISEMAIL_ERR_EXPECTING_ATEXT; // Fatal error + } elseif ($token === ISEMAIL_STRING_HYPHEN) { + if ($element_len === 0) { + // Hyphens can't be at the beginning of a subdomain + $return_status[] = ISEMAIL_ERR_DOMAINHYPHENSTART; // Fatal error + } + + $hyphen_flag = true; + } elseif (!(($ord > 47 && $ord < 58) || ($ord > 64 && $ord < 91) || ($ord > 96 && $ord < 123))) { + // Not an RFC 5321 subdomain, but still OK by RFC 5322 + $return_status[] = ISEMAIL_RFC5322_DOMAIN; + } + + $parsedata[ISEMAIL_COMPONENT_DOMAIN] .= $token; + $atomlist[ISEMAIL_COMPONENT_DOMAIN][$element_count] .= $token; + $element_len++; + } + + break; + //------------------------------------------------------------- + // Domain literal + //------------------------------------------------------------- + case ISEMAIL_COMPONENT_LITERAL: + // http://tools.ietf.org/html/rfc5322#section-3.4.1 + // domain-literal = [CFWS] "[" *([FWS] dtext) [FWS] "]" [CFWS] + // + // dtext = %d33-90 / ; Printable US-ASCII + // %d94-126 / ; characters not including + // obs-dtext ; "[", "]", or "\" + // + // obs-dtext = obs-NO-WS-CTL / quoted-pair + switch ($token) { + // End of domain literal + case ISEMAIL_STRING_CLOSESQBRACKET: + if ((int) max($return_status) < ISEMAIL_DEPREC) { + // Could be a valid RFC 5321 address literal, so let's check + + // http://tools.ietf.org/html/rfc5321#section-4.1.2 + // address-literal = "[" ( IPv4-address-literal / + // IPv6-address-literal / + // General-address-literal ) "]" + // ; See Section 4.1.3 + // + // http://tools.ietf.org/html/rfc5321#section-4.1.3 + // IPv4-address-literal = Snum 3("." Snum) + // + // IPv6-address-literal = "IPv6:" IPv6-addr + // + // General-address-literal = Standardized-tag ":" 1*dcontent + // + // Standardized-tag = Ldh-str + // ; Standardized-tag MUST be specified in a + // ; Standards-Track RFC and registered with IANA + // + // dcontent = %d33-90 / ; Printable US-ASCII + // %d94-126 ; excl. "[", "\", "]" + // + // Snum = 1*3DIGIT + // ; representing a decimal integer + // ; value in the range 0 through 255 + // + // IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp + // + // IPv6-hex = 1*4HEXDIG + // + // IPv6-full = IPv6-hex 7(":" IPv6-hex) + // + // IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" + // [IPv6-hex *5(":" IPv6-hex)] + // ; The "::" represents at least 2 16-bit groups of + // ; zeros. No more than 6 groups in addition to the + // ; "::" may be present. + // + // IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal + // + // IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" + // [IPv6-hex *3(":" IPv6-hex) ":"] + // IPv4-address-literal + // ; The "::" represents at least 2 16-bit groups of + // ; zeros. No more than 4 groups in addition to the + // ; "::" and IPv4-address-literal may be present. + // + // is_email() author's note: We can't use ip2long() to validate + // IPv4 addresses because it accepts abbreviated addresses + // (xxx.xxx.xxx), expanding the last group to complete the address. + // filter_var() validates IPv6 address inconsistently (up to PHP 5.3.3 + // at least) -- see http://bugs.php.net/bug.php?id=53236 for example + $max_groups = 8; + $matchesIP = array(); + /*.mixed.*/ $index = false; + $addressliteral = $parsedata[ISEMAIL_COMPONENT_LITERAL]; + + // Extract IPv4 part from the end of the address-literal (if there is one) + if (preg_match('/\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/', $addressliteral, $matchesIP) > 0) { + $index = strrpos($addressliteral, $matchesIP[0]); + if ($index !== 0) $addressliteral = substr($addressliteral, 0, $index) . '0:0'; // Convert IPv4 part to IPv6 format for further testing + } + + if ($index === 0) { + // Nothing there except a valid IPv4 address, so... + $return_status[] = ISEMAIL_RFC5321_ADDRESSLITERAL; + } elseif (strncasecmp($addressliteral, ISEMAIL_STRING_IPV6TAG, 5) !== 0) { + $return_status[] = ISEMAIL_RFC5322_DOMAINLITERAL; + } else { + $IPv6 = substr($addressliteral, 5); + $matchesIP = explode(ISEMAIL_STRING_COLON, $IPv6); // Revision 2.7: Daniel Marschall's new IPv6 testing strategy + $groupCount = count($matchesIP); + $index = strpos($IPv6,ISEMAIL_STRING_DOUBLECOLON); + + if ($index === false) { + // We need exactly the right number of groups + if ($groupCount !== $max_groups) + $return_status[] = ISEMAIL_RFC5322_IPV6_GRPCOUNT; + } else { + if ($index !== strrpos($IPv6,ISEMAIL_STRING_DOUBLECOLON)) + $return_status[] = ISEMAIL_RFC5322_IPV6_2X2XCOLON; + else { + if ($index === 0 || $index === (strlen($IPv6) - 2)) $max_groups++; // RFC 4291 allows :: at the start or end of an address with 7 other groups in addition + + if ($groupCount > $max_groups) + $return_status[] = ISEMAIL_RFC5322_IPV6_MAXGRPS; + elseif ($groupCount === $max_groups) + $return_status[] = ISEMAIL_RFC5321_IPV6DEPRECATED; // Eliding a single "::" + } + } + + // Revision 2.7: Daniel Marschall's new IPv6 testing strategy + if ((substr($IPv6, 0, 1) === ISEMAIL_STRING_COLON) && (substr($IPv6, 1, 1) !== ISEMAIL_STRING_COLON)) + $return_status[] = ISEMAIL_RFC5322_IPV6_COLONSTRT; // Address starts with a single colon + elseif ((substr($IPv6, -1) === ISEMAIL_STRING_COLON) && (substr($IPv6, -2, 1) !== ISEMAIL_STRING_COLON)) + $return_status[] = ISEMAIL_RFC5322_IPV6_COLONEND; // Address ends with a single colon + elseif (count(preg_grep('/^[0-9A-Fa-f]{0,4}$/', $matchesIP, PREG_GREP_INVERT)) !== 0) + $return_status[] = ISEMAIL_RFC5322_IPV6_BADCHAR; // Check for unmatched characters + else + $return_status[] = ISEMAIL_RFC5321_ADDRESSLITERAL; + } + } else + $return_status[] = ISEMAIL_RFC5322_DOMAINLITERAL; + + + $parsedata[ISEMAIL_COMPONENT_DOMAIN] .= $token; + $atomlist[ISEMAIL_COMPONENT_DOMAIN][$element_count] .= $token; + $element_len++; + $context_prior = $context; + $context = (int) array_pop($context_stack); + break; + case ISEMAIL_STRING_BACKSLASH: + $return_status[] = ISEMAIL_RFC5322_DOMLIT_OBSDTEXT; + $context_stack[] = $context; + $context = ISEMAIL_CONTEXT_QUOTEDPAIR; + break; + // Folding White Space + case ISEMAIL_STRING_CR: + case ISEMAIL_STRING_SP: + case ISEMAIL_STRING_HTAB: + if (($token === ISEMAIL_STRING_CR) && ((++$i === $raw_length) || ($email[$i] !== ISEMAIL_STRING_LF))) {$return_status[] = ISEMAIL_ERR_CR_NO_LF; break;} // Fatal error + + $return_status[] = ISEMAIL_CFWS_FWS; + + $context_stack[] = $context; + $context = ISEMAIL_CONTEXT_FWS; + $token_prior = $token; + break; + // dtext + default: + // http://tools.ietf.org/html/rfc5322#section-3.4.1 + // dtext = %d33-90 / ; Printable US-ASCII + // %d94-126 / ; characters not including + // obs-dtext ; "[", "]", or "\" + // + // obs-dtext = obs-NO-WS-CTL / quoted-pair + // + // obs-NO-WS-CTL = %d1-8 / ; US-ASCII control + // %d11 / ; characters that do not + // %d12 / ; include the carriage + // %d14-31 / ; return, line feed, and + // %d127 ; white space characters + $ord = ord($token); + + // CR, LF, SP & HTAB have already been parsed above + if (($ord > 127) || ($ord === 0) || ($token === ISEMAIL_STRING_OPENSQBRACKET)) { + $return_status[] = ISEMAIL_ERR_EXPECTING_DTEXT; // Fatal error + break; + } elseif (($ord < 33) || ($ord === 127)) { + $return_status[] = ISEMAIL_RFC5322_DOMLIT_OBSDTEXT; + } + + $parsedata[ISEMAIL_COMPONENT_LITERAL] .= $token; + $parsedata[ISEMAIL_COMPONENT_DOMAIN] .= $token; + $atomlist[ISEMAIL_COMPONENT_DOMAIN][$element_count] .= $token; + $element_len++; + } + + break; + //------------------------------------------------------------- + // Quoted string + //------------------------------------------------------------- + case ISEMAIL_CONTEXT_QUOTEDSTRING: + // http://tools.ietf.org/html/rfc5322#section-3.2.4 + // quoted-string = [CFWS] + // DQUOTE *([FWS] qcontent) [FWS] DQUOTE + // [CFWS] + // + // qcontent = qtext / quoted-pair + switch ($token) { + // Quoted pair + case ISEMAIL_STRING_BACKSLASH: + $context_stack[] = $context; + $context = ISEMAIL_CONTEXT_QUOTEDPAIR; + break; + // Folding White Space + // Inside a quoted string, spaces are allowed as regular characters. + // It's only FWS if we include HTAB or CRLF + case ISEMAIL_STRING_CR: + case ISEMAIL_STRING_HTAB: + if (($token === ISEMAIL_STRING_CR) && ((++$i === $raw_length) || ($email[$i] !== ISEMAIL_STRING_LF))) {$return_status[] = ISEMAIL_ERR_CR_NO_LF; break;} // Fatal error + + // http://tools.ietf.org/html/rfc5322#section-3.2.2 + // Runs of FWS, comment, or CFWS that occur between lexical tokens in a + // structured header field are semantically interpreted as a single + // space character. + + // http://tools.ietf.org/html/rfc5322#section-3.2.4 + // the CRLF in any FWS/CFWS that appears within the quoted-string [is] + // semantically "invisible" and therefore not part of the quoted-string + $parsedata[ISEMAIL_COMPONENT_LOCALPART] .= ISEMAIL_STRING_SP; + $atomlist[ISEMAIL_COMPONENT_LOCALPART][$element_count] .= ISEMAIL_STRING_SP; + $element_len++; + + $return_status[] = ISEMAIL_CFWS_FWS; + $context_stack[] = $context; + $context = ISEMAIL_CONTEXT_FWS; + $token_prior = $token; + break; + // End of quoted string + case ISEMAIL_STRING_DQUOTE: + $parsedata[ISEMAIL_COMPONENT_LOCALPART] .= $token; + $atomlist[ISEMAIL_COMPONENT_LOCALPART][$element_count] .= $token; + $element_len++; + $context_prior = $context; + $context = (int) array_pop($context_stack); + break; + // qtext + default: + // http://tools.ietf.org/html/rfc5322#section-3.2.4 + // qtext = %d33 / ; Printable US-ASCII + // %d35-91 / ; characters not including + // %d93-126 / ; "\" or the quote character + // obs-qtext + // + // obs-qtext = obs-NO-WS-CTL + // + // obs-NO-WS-CTL = %d1-8 / ; US-ASCII control + // %d11 / ; characters that do not + // %d12 / ; include the carriage + // %d14-31 / ; return, line feed, and + // %d127 ; white space characters + $ord = ord($token); + + if (($ord > 127) || ($ord === 0) || ($ord === 10)) { + $return_status[] = ISEMAIL_ERR_EXPECTING_QTEXT; // Fatal error + } elseif (($ord < 32) || ($ord === 127)) + $return_status[] = ISEMAIL_DEPREC_QTEXT; + + $parsedata[ISEMAIL_COMPONENT_LOCALPART] .= $token; + $atomlist[ISEMAIL_COMPONENT_LOCALPART][$element_count] .= $token; + $element_len++; + } + + // http://tools.ietf.org/html/rfc5322#section-3.4.1 + // If the + // string can be represented as a dot-atom (that is, it contains no + // characters other than atext characters or "." surrounded by atext + // characters), then the dot-atom form SHOULD be used and the quoted- + // string form SHOULD NOT be used. +// To do + break; + //------------------------------------------------------------- + // Quoted pair + //------------------------------------------------------------- + case ISEMAIL_CONTEXT_QUOTEDPAIR: + // http://tools.ietf.org/html/rfc5322#section-3.2.1 + // quoted-pair = ("\" (VCHAR / WSP)) / obs-qp + // + // VCHAR = %d33-126 ; visible (printing) characters + // WSP = SP / HTAB ; white space + // + // obs-qp = "\" (%d0 / obs-NO-WS-CTL / LF / CR) + // + // obs-NO-WS-CTL = %d1-8 / ; US-ASCII control + // %d11 / ; characters that do not + // %d12 / ; include the carriage + // %d14-31 / ; return, line feed, and + // %d127 ; white space characters + // + // i.e. obs-qp = "\" (%d0-8, %d10-31 / %d127) + $ord = ord($token); + + if ($ord > 127) + $return_status[] = ISEMAIL_ERR_EXPECTING_QPAIR; // Fatal error + elseif ((($ord < 31) && ($ord !== 9)) || ($ord === 127)) // SP & HTAB are allowed + $return_status[] = ISEMAIL_DEPREC_QP; + + // At this point we know where this qpair occurred so + // we could check to see if the character actually + // needed to be quoted at all. + // http://tools.ietf.org/html/rfc5321#section-4.1.2 + // the sending system SHOULD transmit the + // form that uses the minimum quoting possible. +// To do: check whether the character needs to be quoted (escaped) in this context + $context_prior = $context; + $context = (int) array_pop($context_stack); // End of qpair + $token = ISEMAIL_STRING_BACKSLASH . $token; + + switch ($context) { + case ISEMAIL_CONTEXT_COMMENT: + break; + case ISEMAIL_CONTEXT_QUOTEDSTRING: + $parsedata[ISEMAIL_COMPONENT_LOCALPART] .= $token; + $atomlist[ISEMAIL_COMPONENT_LOCALPART][$element_count] .= $token; + $element_len += 2; // The maximum sizes specified by RFC 5321 are octet counts, so we must include the backslash + break; + case ISEMAIL_COMPONENT_LITERAL: + $parsedata[ISEMAIL_COMPONENT_DOMAIN] .= $token; + $atomlist[ISEMAIL_COMPONENT_DOMAIN][$element_count] .= $token; + $element_len += 2; // The maximum sizes specified by RFC 5321 are octet counts, so we must include the backslash + break; + default: + die("Quoted pair logic invoked in an invalid context: $context"); + } + + break; + //------------------------------------------------------------- + // Comment + //------------------------------------------------------------- + case ISEMAIL_CONTEXT_COMMENT: + // http://tools.ietf.org/html/rfc5322#section-3.2.2 + // comment = "(" *([FWS] ccontent) [FWS] ")" + // + // ccontent = ctext / quoted-pair / comment + switch ($token) { + // Nested comment + case ISEMAIL_STRING_OPENPARENTHESIS: + // Nested comments are OK + $context_stack[] = $context; + $context = ISEMAIL_CONTEXT_COMMENT; + break; + // End of comment + case ISEMAIL_STRING_CLOSEPARENTHESIS: + $context_prior = $context; + $context = (int) array_pop($context_stack); + + // http://tools.ietf.org/html/rfc5322#section-3.2.2 + // Runs of FWS, comment, or CFWS that occur between lexical tokens in a + // structured header field are semantically interpreted as a single + // space character. + // + // is_email() author's note: This *cannot* mean that we must add a + // space to the address wherever CFWS appears. This would result in + // any addr-spec that had CFWS outside a quoted string being invalid + // for RFC 5321. +// if (($context === ISEMAIL_COMPONENT_LOCALPART) || ($context === ISEMAIL_COMPONENT_DOMAIN)) { +// $parsedata[$context] .= ISEMAIL_STRING_SP; +// $atomlist[$context][$element_count] .= ISEMAIL_STRING_SP; +// $element_len++; +// } + + break; + // Quoted pair + case ISEMAIL_STRING_BACKSLASH: + $context_stack[] = $context; + $context = ISEMAIL_CONTEXT_QUOTEDPAIR; + break; + // Folding White Space + case ISEMAIL_STRING_CR: + case ISEMAIL_STRING_SP: + case ISEMAIL_STRING_HTAB: + if (($token === ISEMAIL_STRING_CR) && ((++$i === $raw_length) || ($email[$i] !== ISEMAIL_STRING_LF))) {$return_status[] = ISEMAIL_ERR_CR_NO_LF; break;} // Fatal error + + $return_status[] = ISEMAIL_CFWS_FWS; + + $context_stack[] = $context; + $context = ISEMAIL_CONTEXT_FWS; + $token_prior = $token; + break; + // ctext + default: + // http://tools.ietf.org/html/rfc5322#section-3.2.3 + // ctext = %d33-39 / ; Printable US-ASCII + // %d42-91 / ; characters not including + // %d93-126 / ; "(", ")", or "\" + // obs-ctext + // + // obs-ctext = obs-NO-WS-CTL + // + // obs-NO-WS-CTL = %d1-8 / ; US-ASCII control + // %d11 / ; characters that do not + // %d12 / ; include the carriage + // %d14-31 / ; return, line feed, and + // %d127 ; white space characters + $ord = ord($token); + + if (($ord > 127) || ($ord === 0) || ($ord === 10)) { + $return_status[] = ISEMAIL_ERR_EXPECTING_CTEXT; // Fatal error + break; + } elseif (($ord < 32) || ($ord === 127)) { + $return_status[] = ISEMAIL_DEPREC_CTEXT; + } + } + + break; + //------------------------------------------------------------- + // Folding White Space + //------------------------------------------------------------- + case ISEMAIL_CONTEXT_FWS: + // http://tools.ietf.org/html/rfc5322#section-3.2.2 + // FWS = ([*WSP CRLF] 1*WSP) / obs-FWS + // ; Folding white space + + // But note the erratum: + // http://www.rfc-editor.org/errata_search.php?rfc=5322&eid=1908: + // In the obsolete syntax, any amount of folding white space MAY be + // inserted where the obs-FWS rule is allowed. This creates the + // possibility of having two consecutive "folds" in a line, and + // therefore the possibility that a line which makes up a folded header + // field could be composed entirely of white space. + // + // obs-FWS = 1*([CRLF] WSP) + if ($token_prior === ISEMAIL_STRING_CR) { + if ($token === ISEMAIL_STRING_CR) { + $return_status[] = ISEMAIL_ERR_FWS_CRLF_X2; // Fatal error + break; + } + + if (isset($crlf_count)) { + if (++$crlf_count > 1) + $return_status[] = ISEMAIL_DEPREC_FWS; // Multiple folds = obsolete FWS + } else $crlf_count = 1; + } + + switch ($token) { + case ISEMAIL_STRING_CR: + if ((++$i === $raw_length) || ($email[$i] !== ISEMAIL_STRING_LF)) + $return_status[] = ISEMAIL_ERR_CR_NO_LF; // Fatal error + + break; + case ISEMAIL_STRING_SP: + case ISEMAIL_STRING_HTAB: + break; + default: + if ($token_prior === ISEMAIL_STRING_CR) { + $return_status[] = ISEMAIL_ERR_FWS_CRLF_END; // Fatal error + break; + } + + if (isset($crlf_count)) unset($crlf_count); + + $context_prior = $context; + $context = (int) array_pop($context_stack); // End of FWS + + // http://tools.ietf.org/html/rfc5322#section-3.2.2 + // Runs of FWS, comment, or CFWS that occur between lexical tokens in a + // structured header field are semantically interpreted as a single + // space character. + // + // is_email() author's note: This *cannot* mean that we must add a + // space to the address wherever CFWS appears. This would result in + // any addr-spec that had CFWS outside a quoted string being invalid + // for RFC 5321. +// if (($context === ISEMAIL_COMPONENT_LOCALPART) || ($context === ISEMAIL_COMPONENT_DOMAIN)) { +// $parsedata[$context] .= ISEMAIL_STRING_SP; +// $atomlist[$context][$element_count] .= ISEMAIL_STRING_SP; +// $element_len++; +// } + + $i--; // Look at this token again in the parent context + } + + $token_prior = $token; + break; + //------------------------------------------------------------- + // A context we aren't expecting + //------------------------------------------------------------- + default: + die("Unknown context: $context"); + } + +//-echo ""; // debug + if ((int) max($return_status) > ISEMAIL_RFC5322) break; // No point going on if we've got a fatal error + } + + // Some simple final tests + if ((int) max($return_status) < ISEMAIL_RFC5322) { + if ($context === ISEMAIL_CONTEXT_QUOTEDSTRING) $return_status[] = ISEMAIL_ERR_UNCLOSEDQUOTEDSTR; // Fatal error + elseif ($context === ISEMAIL_CONTEXT_QUOTEDPAIR) $return_status[] = ISEMAIL_ERR_BACKSLASHEND; // Fatal error + elseif ($context === ISEMAIL_CONTEXT_COMMENT) $return_status[] = ISEMAIL_ERR_UNCLOSEDCOMMENT; // Fatal error + elseif ($context === ISEMAIL_COMPONENT_LITERAL) $return_status[] = ISEMAIL_ERR_UNCLOSEDDOMLIT; // Fatal error + elseif ($token === ISEMAIL_STRING_CR) $return_status[] = ISEMAIL_ERR_FWS_CRLF_END; // Fatal error + elseif ($parsedata[ISEMAIL_COMPONENT_DOMAIN] === '') $return_status[] = ISEMAIL_ERR_NODOMAIN; // Fatal error + elseif ($element_len === 0) $return_status[] = ISEMAIL_ERR_DOT_END; // Fatal error + elseif ($hyphen_flag) $return_status[] = ISEMAIL_ERR_DOMAINHYPHENEND; // Fatal error + // http://tools.ietf.org/html/rfc5321#section-4.5.3.1.2 + // The maximum total length of a domain name or number is 255 octets. + elseif (strlen($parsedata[ISEMAIL_COMPONENT_DOMAIN]) > 255) + $return_status[] = ISEMAIL_RFC5322_DOMAIN_TOOLONG; + // http://tools.ietf.org/html/rfc5321#section-4.1.2 + // Forward-path = Path + // + // Path = "<" [ A-d-l ":" ] Mailbox ">" + // + // http://tools.ietf.org/html/rfc5321#section-4.5.3.1.3 + // The maximum total length of a reverse-path or forward-path is 256 + // octets (including the punctuation and element separators). + // + // Thus, even without (obsolete) routing information, the Mailbox can + // only be 254 characters long. This is confirmed by this verified + // erratum to RFC 3696: + // + // http://www.rfc-editor.org/errata_search.php?rfc=3696&eid=1690 + // However, there is a restriction in RFC 2821 on the length of an + // address in MAIL and RCPT commands of 254 characters. Since addresses + // that do not fit in those fields are not normally useful, the upper + // limit on address lengths should normally be considered to be 254. + elseif (strlen($parsedata[ISEMAIL_COMPONENT_LOCALPART] . ISEMAIL_STRING_AT . $parsedata[ISEMAIL_COMPONENT_DOMAIN]) > 254) + $return_status[] = ISEMAIL_RFC5322_TOOLONG; + // http://tools.ietf.org/html/rfc1035#section-2.3.4 + // labels 63 octets or less + elseif ($element_len > 63) $return_status[] = ISEMAIL_RFC5322_LABEL_TOOLONG; + } + + // Check DNS? + $dns_checked = false; + + if ($checkDNS && ((int) max($return_status) < ISEMAIL_DNSWARN) && function_exists('dns_get_record')) { + // http://tools.ietf.org/html/rfc5321#section-2.3.5 + // Names that can + // be resolved to MX RRs or address (i.e., A or AAAA) RRs (as discussed + // in Section 5) are permitted, as are CNAME RRs whose targets can be + // resolved, in turn, to MX or address RRs. + // + // http://tools.ietf.org/html/rfc5321#section-5.1 + // The lookup first attempts to locate an MX record associated with the + // name. If a CNAME record is found, the resulting name is processed as + // if it were the initial name. ... If an empty list of MXs is returned, + // the address is treated as if it was associated with an implicit MX + // RR, with a preference of 0, pointing to that host. + // + // is_email() author's note: We will regard the existence of a CNAME to be + // sufficient evidence of the domain's existence. For performance reasons + // we will not repeat the DNS lookup for the CNAME's target, but we will + // raise a warning because we didn't immediately find an MX record. + if ($element_count === 0) $parsedata[ISEMAIL_COMPONENT_DOMAIN] .= '.'; // Checking TLD DNS seems to work only if you explicitly check from the root + + $result = @dns_get_record($parsedata[ISEMAIL_COMPONENT_DOMAIN], DNS_MX); // Not using checkdnsrr because of a suspected bug in PHP 5.3 (http://bugs.php.net/bug.php?id=51844) + + if ((is_bool($result) && !(bool) $result)) + $return_status[] = ISEMAIL_DNSWARN_NO_RECORD; // Domain can't be found in DNS + else { + if (count($result) === 0) { + $return_status[] = ISEMAIL_DNSWARN_NO_MX_RECORD; // MX-record for domain can't be found + $result = @dns_get_record($parsedata[ISEMAIL_COMPONENT_DOMAIN], DNS_A + DNS_CNAME); + + if (count($result) === 0) + $return_status[] = ISEMAIL_DNSWARN_NO_RECORD; // No usable records for the domain can be found + } else $dns_checked = true; + } + } + + // Check for TLD addresses + // ----------------------- + // TLD addresses are specifically allowed in RFC 5321 but they are + // unusual to say the least. We will allocate a separate + // status to these addresses on the basis that they are more likely + // to be typos than genuine addresses (unless we've already + // established that the domain does have an MX record) + // + // http://tools.ietf.org/html/rfc5321#section-2.3.5 + // In the case + // of a top-level domain used by itself in an email address, a single + // string is used without any dots. This makes the requirement, + // described in more detail below, that only fully-qualified domain + // names appear in SMTP transactions on the public Internet, + // particularly important where top-level domains are involved. + // + // TLD format + // ---------- + // The format of TLDs has changed a number of times. The standards + // used by IANA have been largely ignored by ICANN, leading to + // confusion over the standards being followed. These are not defined + // anywhere, except as a general component of a DNS host name (a label). + // However, this could potentially lead to 123.123.123.123 being a + // valid DNS name (rather than an IP address) and thereby creating + // an ambiguity. The most authoritative statement on TLD formats that + // the author can find is in a (rejected!) erratum to RFC 1123 + // submitted by John Klensin, the author of RFC 5321: + // + // http://www.rfc-editor.org/errata_search.php?rfc=1123&eid=1353 + // However, a valid host name can never have the dotted-decimal + // form #.#.#.#, since this change does not permit the highest-level + // component label to start with a digit even if it is not all-numeric. + if (!$dns_checked && ((int) max($return_status) < ISEMAIL_DNSWARN)) { + if ($element_count === 0) $return_status[] = ISEMAIL_RFC5321_TLD; + + if (is_numeric($atomlist[ISEMAIL_COMPONENT_DOMAIN][$element_count][0])) + $return_status[] = ISEMAIL_RFC5321_TLDNUMERIC; + } + + $return_status = array_unique($return_status); + $final_status = (int) max($return_status); + + if (count($return_status) !== 1) array_shift($return_status); // remove redundant ISEMAIL_VALID + + $parsedata['status'] = $return_status; + + if ($final_status < $threshold) $final_status = ISEMAIL_VALID; + + return ($diagnose) ? $final_status : ($final_status < ISEMAIL_THRESHOLD); + } +} +?> \ No newline at end of file diff --git a/vendor/punycode/Exception/DomainOutOfBoundsException.php b/vendor/punycode/Exception/DomainOutOfBoundsException.php new file mode 100644 index 0000000..ef57687 --- /dev/null +++ b/vendor/punycode/Exception/DomainOutOfBoundsException.php @@ -0,0 +1,15 @@ + + */ +class DomainOutOfBoundsException extends OutOfBoundsException +{ + +} diff --git a/vendor/punycode/Exception/LabelOutOfBoundsException.php b/vendor/punycode/Exception/LabelOutOfBoundsException.php new file mode 100644 index 0000000..bc7e493 --- /dev/null +++ b/vendor/punycode/Exception/LabelOutOfBoundsException.php @@ -0,0 +1,13 @@ + + */ +class LabelOutOfBoundsException extends OutOfBoundsException +{ +} \ No newline at end of file diff --git a/vendor/punycode/Exception/OutOfBoundsException.php b/vendor/punycode/Exception/OutOfBoundsException.php new file mode 100644 index 0000000..0573292 --- /dev/null +++ b/vendor/punycode/Exception/OutOfBoundsException.php @@ -0,0 +1,10 @@ + + */ +class OutOfBoundsException extends \RuntimeException +{ +} \ No newline at end of file diff --git a/vendor/punycode/LICENSE b/vendor/punycode/LICENSE new file mode 100644 index 0000000..963c72a --- /dev/null +++ b/vendor/punycode/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2014 TrueServer B.V. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/vendor/punycode/Punycode.php b/vendor/punycode/Punycode.php new file mode 100644 index 0000000..80892b0 --- /dev/null +++ b/vendor/punycode/Punycode.php @@ -0,0 +1,363 @@ + 0, 'b' => 1, 'c' => 2, 'd' => 3, 'e' => 4, 'f' => 5, + 'g' => 6, 'h' => 7, 'i' => 8, 'j' => 9, 'k' => 10, 'l' => 11, + 'm' => 12, 'n' => 13, 'o' => 14, 'p' => 15, 'q' => 16, 'r' => 17, + 's' => 18, 't' => 19, 'u' => 20, 'v' => 21, 'w' => 22, 'x' => 23, + 'y' => 24, 'z' => 25, '0' => 26, '1' => 27, '2' => 28, '3' => 29, + '4' => 30, '5' => 31, '6' => 32, '7' => 33, '8' => 34, '9' => 35 + ); + + /** + * Character encoding + * + * @param string + */ + protected $encoding; + + /** + * Constructor + * + * @param string $encoding Character encoding + */ + public function __construct($encoding = 'UTF-8') + { + $this->encoding = $encoding; + } + + /** + * Encode a domain to its Punycode version + * + * @param string $input Domain name in Unicode to be encoded + * @return string Punycode representation in ASCII + */ + public function encode($input) + { + $input = mb_strtolower($input, $this->encoding); + $parts = explode('.', $input); + foreach ($parts as &$part) { + $length = strlen($part); + if ($length < 1) { + throw new LabelOutOfBoundsException(sprintf('The length of any one label is limited to between 1 and 63 octets, but %s given.', $length)); + } + $part = $this->encodePart($part); + } + $output = implode('.', $parts); + $length = strlen($output); + if ($length > 255) { + throw new DomainOutOfBoundsException(sprintf('A full domain name is limited to 255 octets (including the separators), %s given.', $length)); + } + + return $output; + } + + /** + * Encode a part of a domain name, such as tld, to its Punycode version + * + * @param string $input Part of a domain name + * @return string Punycode representation of a domain part + */ + protected function encodePart($input) + { + $codePoints = $this->listCodePoints($input); + + $n = static::INITIAL_N; + $bias = static::INITIAL_BIAS; + $delta = 0; + $h = $b = count($codePoints['basic']); + + $output = ''; + foreach ($codePoints['basic'] as $code) { + $output .= $this->codePointToChar($code); + } + if ($input === $output) { + return $output; + } + if ($b > 0) { + $output .= static::DELIMITER; + } + + $codePoints['nonBasic'] = array_unique($codePoints['nonBasic']); + sort($codePoints['nonBasic']); + + $i = 0; + $length = mb_strlen($input, $this->encoding); + while ($h < $length) { + $m = $codePoints['nonBasic'][$i++]; + $delta = $delta + ($m - $n) * ($h + 1); + $n = $m; + + foreach ($codePoints['all'] as $c) { + if ($c < $n || $c < static::INITIAL_N) { + $delta++; + } + if ($c === $n) { + $q = $delta; + for ($k = static::BASE;; $k += static::BASE) { + $t = $this->calculateThreshold($k, $bias); + if ($q < $t) { + break; + } + + $code = $t + (($q - $t) % (static::BASE - $t)); + $output .= static::$encodeTable[$code]; + + $q = ($q - $t) / (static::BASE - $t); + } + + $output .= static::$encodeTable[$q]; + $bias = $this->adapt($delta, $h + 1, ($h === $b)); + $delta = 0; + $h++; + } + } + + $delta++; + $n++; + } + $out = static::PREFIX . $output; + $length = strlen($out); + if ($length > 63 || $length < 1) { + throw new LabelOutOfBoundsException(sprintf('The length of any one label is limited to between 1 and 63 octets, but %s given.', $length)); + } + + return $out; + } + + /** + * Decode a Punycode domain name to its Unicode counterpart + * + * @param string $input Domain name in Punycode + * @return string Unicode domain name + */ + public function decode($input) + { + $input = strtolower($input); + $parts = explode('.', $input); + foreach ($parts as &$part) { + $length = strlen($part); + if ($length > 63 || $length < 1) { + throw new LabelOutOfBoundsException(sprintf('The length of any one label is limited to between 1 and 63 octets, but %s given.', $length)); + } + if (strpos($part, static::PREFIX) !== 0) { + continue; + } + + $part = substr($part, strlen(static::PREFIX)); + $part = $this->decodePart($part); + } + $output = implode('.', $parts); + $length = strlen($output); + if ($length > 255) { + throw new DomainOutOfBoundsException(sprintf('A full domain name is limited to 255 octets (including the separators), %s given.', $length)); + } + + return $output; + } + + /** + * Decode a part of domain name, such as tld + * + * @param string $input Part of a domain name + * @return string Unicode domain part + */ + protected function decodePart($input) + { + $n = static::INITIAL_N; + $i = 0; + $bias = static::INITIAL_BIAS; + $output = ''; + + $pos = strrpos($input, static::DELIMITER); + if ($pos !== false) { + $output = substr($input, 0, $pos++); + } else { + $pos = 0; + } + + $outputLength = strlen($output); + $inputLength = strlen($input); + while ($pos < $inputLength) { + $oldi = $i; + $w = 1; + + for ($k = static::BASE;; $k += static::BASE) { + $digit = static::$decodeTable[$input[$pos++]]; + $i = $i + ($digit * $w); + $t = $this->calculateThreshold($k, $bias); + + if ($digit < $t) { + break; + } + + $w = $w * (static::BASE - $t); + } + + $bias = $this->adapt($i - $oldi, ++$outputLength, ($oldi === 0)); + $n = $n + (int) ($i / $outputLength); + $i = $i % ($outputLength); + $output = mb_substr($output, 0, $i, $this->encoding) . $this->codePointToChar($n) . mb_substr($output, $i, $outputLength - 1, $this->encoding); + + $i++; + } + + return $output; + } + + /** + * Calculate the bias threshold to fall between TMIN and TMAX + * + * @param integer $k + * @param integer $bias + * @return integer + */ + protected function calculateThreshold($k, $bias) + { + if ($k <= $bias + static::TMIN) { + return static::TMIN; + } elseif ($k >= $bias + static::TMAX) { + return static::TMAX; + } + return $k - $bias; + } + + /** + * Bias adaptation + * + * @param integer $delta + * @param integer $numPoints + * @param boolean $firstTime + * @return integer + */ + protected function adapt($delta, $numPoints, $firstTime) + { + $delta = (int) ( + ($firstTime) + ? $delta / static::DAMP + : $delta / 2 + ); + $delta += (int) ($delta / $numPoints); + + $k = 0; + while ($delta > ((static::BASE - static::TMIN) * static::TMAX) / 2) { + $delta = (int) ($delta / (static::BASE - static::TMIN)); + $k = $k + static::BASE; + } + $k = $k + (int) (((static::BASE - static::TMIN + 1) * $delta) / ($delta + static::SKEW)); + + return $k; + } + + /** + * List code points for a given input + * + * @param string $input + * @return array Multi-dimension array with basic, non-basic and aggregated code points + */ + protected function listCodePoints($input) + { + $codePoints = array( + 'all' => array(), + 'basic' => array(), + 'nonBasic' => array(), + ); + + $length = mb_strlen($input, $this->encoding); + for ($i = 0; $i < $length; $i++) { + $char = mb_substr($input, $i, 1, $this->encoding); + $code = $this->charToCodePoint($char); + if ($code < 128) { + $codePoints['all'][] = $codePoints['basic'][] = $code; + } else { + $codePoints['all'][] = $codePoints['nonBasic'][] = $code; + } + } + + return $codePoints; + } + + /** + * Convert a single or multi-byte character to its code point + * + * @param string $char + * @return integer + */ + protected function charToCodePoint($char) + { + $code = ord($char[0]); + if ($code < 128) { + return $code; + } elseif ($code < 224) { + return (($code - 192) * 64) + (ord($char[1]) - 128); + } elseif ($code < 240) { + return (($code - 224) * 4096) + ((ord($char[1]) - 128) * 64) + (ord($char[2]) - 128); + } else { + return (($code - 240) * 262144) + ((ord($char[1]) - 128) * 4096) + ((ord($char[2]) - 128) * 64) + (ord($char[3]) - 128); + } + } + + /** + * Convert a code point to its single or multi-byte character + * + * @param integer $code + * @return string + */ + protected function codePointToChar($code) + { + if ($code <= 0x7F) { + return chr($code); + } elseif ($code <= 0x7FF) { + return chr(($code >> 6) + 192) . chr(($code & 63) + 128); + } elseif ($code <= 0xFFFF) { + return chr(($code >> 12) + 224) . chr((($code >> 6) & 63) + 128) . chr(($code & 63) + 128); + } else { + return chr(($code >> 18) + 240) . chr((($code >> 12) & 63) + 128) . chr((($code >> 6) & 63) + 128) . chr(($code & 63) + 128); + } + } +} diff --git a/vendor/sendgrid-php/Client.php b/vendor/sendgrid-php/Client.php new file mode 100644 index 0000000..da71d5d --- /dev/null +++ b/vendor/sendgrid-php/Client.php @@ -0,0 +1,138 @@ +apiKey = $apiKey; + $this->options = $options; + } else { + throw new InvalidArgumentException('Need an api key!'); + } + + $this->options['turn_off_ssl_verification'] = (isset($this->options['turn_off_ssl_verification']) && $this->options['turn_off_ssl_verification'] == true); + if (!isset($this->options['raise_exceptions'])) { + $this->options['raise_exceptions'] = true; + } + $protocol = isset($this->options['protocol']) ? $this->options['protocol'] : 'https'; + $host = isset($this->options['host']) ? $this->options['host'] : 'api.sendgrid.com'; + $port = isset($this->options['port']) ? $this->options['port'] : ''; + + $this->url = isset($this->options['url']) ? $this->options['url'] : $protocol . '://' . $host . ($port ? ':' . $port : ''); + if (isset($this->options['endpoint'])) { + $this->endpoint = $this->options['endpoint']; + } + $this->client = $this->prepareHttpClient(); + $this->api_keys = new APIKeys($this); + $this->asm_groups = new ASMGroups($this); + $this->asm_suppressions = new ASMSuppressions($this); + $this->global_stats = new GlobalStats($this); + } + + /** + * Prepares the HTTP client + * + * @return \Guzzle\Http\Client + */ + private function prepareHttpClient() + { + $guzzleOption = array( + 'request.options' => array( + 'verify' => !$this->options['turn_off_ssl_verification'], + 'exceptions' => (isset($this->options['enable_guzzle_exceptions']) && $this->options['enable_guzzle_exceptions'] == true) + ) + ); + + $guzzleOption['request.options']['headers'] = array('Authorization' => 'Bearer ' . $this->apiKey, 'Content-Type' => 'application/json', 'Accept'=> '*/*'); + + // Using http proxy + if (isset($this->options['proxy'])) { + $guzzleOption['request.options']['proxy'] = $this->options['proxy']; + } + + $client = new \Guzzle\Http\Client($this->url, $guzzleOption); + $client->setUserAgent('sendgrid/' . $this->version . ';php'); + + return $client; + } + + public function setClient($client) + { + $this->client = $client; + } + + /** + * The following *Request functions make the HTTP API requests to SendGrid + * + * @param $api is an endpoint object defined in the resources + * @param $data is array of parameters + * + * @return Guzzle Response object: http://guzzle3.readthedocs.org/http-client/response.html + */ + + public function postRequest($api, $data) + { + $url = $this->url . $api->getEndpoint(); + $response = $this->client->post($url, null, json_encode($data))->send(); + return $response; + } + + public function patchRequest($api, $data) + { + $url = $this->url . $api->getEndpoint(); + $response = $this->client->patch($url, null, json_encode($data))->send(); + return $response; + } + + public function getRequest($api){ + $url = $this->url . $api->getEndpoint(); + $response = $this->client->get($url)->send(); + return $response; + } + + public function deleteRequest($api){ + $url = $this->url . $api->getEndpoint(); + $response = $this->client->delete($url)->send(); + return $response; + } + + public static function register_autoloader() + { + spl_autoload_register(array('Client', 'autoloader')); + } + + public static function autoloader($class) + { + // Check that the class starts with 'Client' + if ($class == 'Client' || stripos($class, 'Client\\') === 0) { + $file = str_replace('\\', '/', $class); + + if (file_exists(dirname(__FILE__) . '/' . $file . '.php')) { + require_once(dirname(__FILE__) . '/' . $file . '.php'); + } + } + } +} diff --git a/vendor/sendgrid-php/SendGrid.php b/vendor/sendgrid-php/SendGrid.php new file mode 100644 index 0000000..0f7d390 --- /dev/null +++ b/vendor/sendgrid-php/SendGrid.php @@ -0,0 +1,161 @@ + 'application/json', 'Accept'=> '*/*'), + $client, + $options; + + public + $apiUser, + $apiKey, + $url, + $endpoint, + $version = self::VERSION; + + public function __construct($apiUserOrKey, $apiKeyOrOptions = null, $options = array()) + { + // Check if given a username + password or api key + if (is_string($apiKeyOrOptions)) { + // Username and password + $this->apiUser = $apiUserOrKey; + $this->apiKey = $apiKeyOrOptions; + $this->options = $options; + } elseif (is_array($apiKeyOrOptions) || $apiKeyOrOptions === null) { + // API key + $this->apiKey = $apiUserOrKey; + $this->apiUser = null; + + // With options + if (is_array($apiKeyOrOptions)) { + $this->options = $apiKeyOrOptions; + } + } else { + // Won't be thrown? + throw new InvalidArgumentException('Need a username + password or api key!'); + } + + $this->options['turn_off_ssl_verification'] = (isset($this->options['turn_off_ssl_verification']) && $this->options['turn_off_ssl_verification'] == true); + if (!isset($this->options['raise_exceptions'])) { + $this->options['raise_exceptions'] = true; + } + $protocol = isset($this->options['protocol']) ? $this->options['protocol'] : 'https'; + $host = isset($this->options['host']) ? $this->options['host'] : 'api.sendgrid.com'; + $port = isset($this->options['port']) ? $this->options['port'] : ''; + + $this->url = isset($this->options['url']) ? $this->options['url'] : $protocol . '://' . $host . ($port ? ':' . $port : ''); + $this->endpoint = isset($this->options['endpoint']) ? $this->options['endpoint'] : '/api/mail.send.json'; + + $this->client = $this->prepareHttpClient(); + } + + /** + * Prepares the HTTP client + * + * @return \Guzzle\Http\Client + */ + private function prepareHttpClient() + { + $guzzleOption = array( + 'request.options' => array( + 'verify' => !$this->options['turn_off_ssl_verification'], + 'exceptions' => (isset($this->options['enable_guzzle_exceptions']) && $this->options['enable_guzzle_exceptions'] == true) + ) + ); + + // Using api key + if ($this->apiUser === null) { + $guzzleOption['request.options']['headers'] = array('Authorization' => 'Bearer ' . $this->apiKey); + } + + // Using http proxy + if (isset($this->options['proxy'])) { + $guzzleOption['request.options']['proxy'] = $this->options['proxy']; + } + + // Using timeout + if (isset($this->options['timeout'])) { + $guzzleOption['request.options']['timeout'] = $this->options['timeout']; + } + + $client = new \Guzzle\Http\Client($this->url, $guzzleOption); + $client->setUserAgent('sendgrid/' . $this->version . ';php'); + + return $client; + } + + /** + * @return array The protected options array + */ + public function getOptions() + { + return $this->options; + } + + /** + * Makes a post request to SendGrid to send an email + * + * @param SendGrid\Email $email Email object built + * + * @throws SendGrid\Exception if the response code is not 200 + * @return stdClass SendGrid response object + */ + public function send(SendGrid\Email $email) + { + $form = $email->toWebFormat(); + + // Using username password + if ($this->apiUser !== null) { + $form['api_user'] = $this->apiUser; + $form['api_key'] = $this->apiKey; + } + + $response = $this->postRequest($this->endpoint, $form); + + if ($response->code != 200 && $this->options['raise_exceptions']) { + throw new SendGrid\Exception($response->raw_body, $response->code); + } + + return $response; + } + + /** + * Makes the actual HTTP request to SendGrid + * + * @param $endpoint string endpoint to post to + * @param $form array web ready version of SendGrid\Email + * + * @return SendGrid\Response + */ + public function postRequest($endpoint, $form) + { + $req = $this->client->post($endpoint, null, $form); + + $res = $req->send(); + + $response = new SendGrid\Response($res->getStatusCode(), $res->getHeaders(), $res->getBody(true), $res->json()); + + return $response; + } + + public static function register_autoloader() + { + spl_autoload_register(array('SendGrid', 'autoloader')); + } + + public static function autoloader($class) + { + // Check that the class starts with 'SendGrid' + if ($class == 'SendGrid' || stripos($class, 'SendGrid\\') === 0) { + $file = str_replace('\\', '/', $class); + + if (file_exists(dirname(__FILE__) . '/' . $file . '.php')) { + require_once(dirname(__FILE__) . '/' . $file . '.php'); + } + } + } +} diff --git a/vendor/sendgrid-php/SendGrid/Email.php b/vendor/sendgrid-php/SendGrid/Email.php new file mode 100644 index 0000000..6c6451a --- /dev/null +++ b/vendor/sendgrid-php/SendGrid/Email.php @@ -0,0 +1,692 @@ +fromName = false; + $this->replyTo = false; + $this->smtpapi = new \Smtpapi\Header(); + } + + /** + * _removeFromList + * Given a list of key/value pairs, removes the associated keys + * where a value matches the given string ($item) + * + * @param Array $list - the list of key/value pairs + * @param String $item - the value to be removed + */ + private function _removeFromList(&$list, $item, $key_field = null) + { + foreach ($list as $key => $val) { + if ($key_field) { + if ($val[$key_field] == $item) { + unset($list[$key]); + } + } else { + if ($val == $item) { + unset($list[$key]); + } + } + } + //repack the indices + $list = array_values($list); + } + + public function addTo($email, $name = null) + { + if ($this->to == null) { + $this->to = array(); + } + + if (is_array($email)) { + foreach ($email as $e) { + $this->to[] = $e; + } + } else { + $this->to[] = $email; + } + + if (is_array($name)) { + foreach ($name as $n) { + $this->addToName($n); + } + } elseif ($name) { + $this->addToName($name); + } + + return $this; + } + + public function addSmtpapiTo($email, $name = null) + { + $this->smtpapi->addTo($email, $name); + + return $this; + } + + public function setTos(array $emails) + { + $this->to = $emails; + + return $this; + } + + public function setSmtpapiTos(array $emails) + { + $this->smtpapi->setTos($emails); + + return $this; + } + + public function addToName($name) + { + if ($this->toName == null) { + $this->toName = array(); + } + + $this->toName[] = $name; + + return $this; + } + + public function getToNames() + { + return $this->toName; + } + + public function setFrom($email) + { + $this->from = $email; + + return $this; + } + + public function getFrom($as_array = false) + { + if ($as_array && ($name = $this->getFromName())) { + return array("$this->from" => $name); + } else { + return $this->from; + } + } + + public function setFromName($name) + { + $this->fromName = $name; + + return $this; + } + + public function getFromName() + { + return $this->fromName; + } + + public function setReplyTo($email) + { + $this->replyTo = $email; + + return $this; + } + + public function getReplyTo() + { + return $this->replyTo; + } + + public function setCc($email) + { + $this->cc = array($email); + + return $this; + } + + public function setCcs(array $email_list) + { + $this->cc = $email_list; + + return $this; + } + + public function addCc($email, $name = null) + { + if ($this->cc == null) { + $this->cc = array(); + } + + if (is_array($email)) { + foreach ($email as $e) { + $this->cc[] = $e; + } + } else { + $this->cc[] = $email; + } + + if (is_array($name)) { + foreach ($name as $n) { + $this->addCcName($n); + } + } elseif ($name) { + $this->addCcName($name); + } + + return $this; + } + + public function addCcName($name) + { + if ($this->ccName == null) { + $this->ccName = array(); + } + + $this->ccName[] = $name; + + return $this; + } + + public function removeCc($email) + { + $this->_removeFromList($this->cc, $email); + + return $this; + } + + public function getCcs() + { + return $this->cc; + } + + public function getCcNames() + { + return $this->ccName; + } + + public function setBcc($email) + { + $this->bcc = array($email); + + return $this; + } + + public function setBccs($email_list) + { + $this->bcc = $email_list; + + return $this; + } + + public function addBcc($email, $name = null) + { + if ($this->bcc == null) { + $this->bcc = array(); + } + + if (is_array($email)) { + foreach ($email as $e) { + $this->bcc[] = $e; + } + } else { + $this->bcc[] = $email; + } + + if (is_array($name)) { + foreach ($name as $n) { + $this->addBccName($n); + } + } elseif ($name) { + $this->addBccName($name); + } + + return $this; + } + + public function addBccName($name) + { + if ($this->bccName == null) { + $this->bccName = array(); + } + + $this->bccName[] = $name; + + return $this; + } + + public function getBccNames() + { + return $this->bccName; + } + + public function removeBcc($email) + { + $this->_removeFromList($this->bcc, $email); + + return $this; + } + + public function getBccs() + { + return $this->bcc; + } + + public function setSubject($subject) + { + $this->subject = $subject; + + return $this; + } + + public function getSubject() + { + return $this->subject; + } + + public function setDate($date) + { + $this->date = $date; + + return $this; + } + + public function getDate() + { + return $this->date; + } + + public function setText($text) + { + $this->text = $text; + + return $this; + } + + public function getText() + { + return $this->text; + } + + public function setHtml($html) + { + $this->html = $html; + + return $this; + } + + public function getHtml() + { + return $this->html; + } + + public function setSendAt($timestamp) + { + $this->smtpapi->setSendAt($timestamp); + + return $this; + } + + public function setSendEachAt(array $timestamps) + { + $this->smtpapi->setSendEachAt($timestamps); + + return $this; + } + + public function addSendEachAt($timestamp) + { + $this->smtpapi->addSendEachAt($timestamp); + + return $this; + } + + /** + * Convenience method to add template + * + * @param string The id of the template + * + * @return $this + */ + public function setTemplateId($templateId) + { + $this->addFilter('templates', 'enabled', 1); + $this->addFilter('templates', 'template_id', $templateId); + + return $this; + } + + /** Convenience method to set asm group id + * + * @param string the group id + * + * @return $this + */ + public function setAsmGroupId($groupId) + { + $this->smtpapi->setASMGroupID($groupId); + + return $this; + } + + public function setAttachments(array $files) + { + $this->attachments = array(); + + foreach ($files as $filename => $file) { + if (is_string($filename)) { + $this->addAttachment($file, $filename); + } else { + $this->addAttachment($file); + } + } + + return $this; + } + + public function setAttachment($file, $custom_filename = null, $cid = null) + { + $this->attachments = array($this->getAttachmentInfo($file, $custom_filename, $cid)); + + return $this; + } + + public function addAttachment($file, $custom_filename = null, $cid = null) + { + $this->attachments[] = $this->getAttachmentInfo($file, $custom_filename, $cid); + + return $this; + } + + public function getAttachments() + { + return $this->attachments; + } + + public function removeAttachment($file) + { + $this->_removeFromList($this->attachments, $file, "file"); + + return $this; + } + + private function getAttachmentInfo($file, $custom_filename = null, $cid = null) + { + $info = pathinfo($file); + $info['file'] = $file; + if (!is_null($custom_filename)) { + $info['custom_filename'] = $custom_filename; + } + if ($cid !== null) { + $info['cid'] = $cid; + } + + return $info; + } + + public function setCategories($categories) + { + $this->smtpapi->setCategories($categories); + + return $this; + } + + public function setCategory($category) + { + $this->smtpapi->setCategory($category); + + return $this; + } + + public function addCategory($category) + { + $this->smtpapi->addCategory($category); + + return $this; + } + + public function removeCategory($category) + { + $this->smtpapi->removeCategory($category); + + return $this; + } + + public function setSubstitutions($key_value_pairs) + { + $this->smtpapi->setSubstitutions($key_value_pairs); + + return $this; + } + + public function addSubstitution($from_value, array $to_values) + { + $this->smtpapi->addSubstitution($from_value, $to_values); + + return $this; + } + + public function setSections(array $key_value_pairs) + { + $this->smtpapi->setSections($key_value_pairs); + + return $this; + } + + public function addSection($from_value, $to_value) + { + $this->smtpapi->addSection($from_value, $to_value); + + return $this; + } + + public function setUniqueArgs(array $key_value_pairs) + { + $this->smtpapi->setUniqueArgs($key_value_pairs); + + return $this; + } + + ## synonym method + public function setUniqueArguments(array $key_value_pairs) + { + $this->smtpapi->setUniqueArgs($key_value_pairs); + + return $this; + } + + public function addUniqueArg($key, $value) + { + $this->smtpapi->addUniqueArg($key, $value); + + return $this; + } + + ## synonym method + public function addUniqueArgument($key, $value) + { + $this->smtpapi->addUniqueArg($key, $value); + + return $this; + } + + public function setFilters($filter_settings) + { + $this->smtpapi->setFilters($filter_settings); + + return $this; + } + + ## synonym method + public function setFilterSettings($filter_settings) + { + $this->smtpapi->setFilters($filter_settings); + + return $this; + } + + public function addFilter($filter_name, $parameter_name, $parameter_value) + { + $this->smtpapi->addFilter($filter_name, $parameter_name, $parameter_value); + + return $this; + } + + ## synonym method + public function addFilterSetting($filter_name, $parameter_name, $parameter_value) + { + $this->smtpapi->addFilter($filter_name, $parameter_name, $parameter_value); + + return $this; + } + + public function getHeaders() + { + return $this->headers; + } + + public function getHeadersJson() + { + if (count($this->getHeaders()) <= 0) { + return "{}"; + } + + return json_encode($this->getHeaders(), JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP); + } + + public function setHeaders($key_value_pairs) + { + $this->headers = $key_value_pairs; + + return $this; + } + + public function addHeader($key, $value) + { + $this->headers[$key] = $value; + + return $this; + } + + public function removeHeader($key) + { + unset($this->headers[$key]); + + return $this; + } + + public function getSmtpapi() + { + return $this->smtpapi; + } + + public function toWebFormat() + { + $web = array( + 'to' => $this->to, + 'from' => $this->getFrom(), + 'x-smtpapi' => $this->smtpapi->jsonString(), + 'subject' => $this->getSubject(), + 'text' => $this->getText(), + 'html' => $this->getHtml(), + 'headers' => $this->getHeadersJson(), + ); + + if ($this->getToNames()) { + $web['toname'] = $this->getToNames(); + } + if ($this->getCcs()) { + $web['cc'] = $this->getCcs(); + } + if ($this->getCcNames()) { + $web['ccname'] = $this->getCcNames(); + } + if ($this->getBccs()) { + $web['bcc'] = $this->getBccs(); + } + if ($this->getBccNames()) { + $web['bccname'] = $this->getBccNames(); + } + if ($this->getFromName()) { + $web['fromname'] = $this->getFromName(); + } + if ($this->getReplyTo()) { + $web['replyto'] = $this->getReplyTo(); + } + if ($this->getDate()) { + $web['date'] = $this->getDate(); + } + if ($this->smtpapi->to && (count($this->smtpapi->to) > 0)) { + $web['to'] = ""; + } + + $web = $this->updateMissingTo($web); + + if ($this->getAttachments()) { + foreach ($this->getAttachments() as $f) { + $file = $f['file']; + $extension = null; + if (array_key_exists('extension', $f)) { + $extension = $f['extension']; + }; + $filename = $f['filename']; + $full_filename = $filename; + + if (isset($extension)) { + $full_filename = $filename . '.' . $extension; + } + if (array_key_exists('custom_filename', $f)) { + $full_filename = $f['custom_filename']; + } + + if (array_key_exists('cid', $f)) { + $web['content[' . $full_filename . ']'] = $f['cid']; + } + + $contents = '@' . $file; + + // Guzzle handles this for us. + // http://guzzle3.readthedocs.org/en/latest/http-client/request.html#post-requests + // if (class_exists('CurlFile', false)) { // php >= 5.5 + // $contents = new \CurlFile($file, $extension, $filename); + // } + + $web['files[' . $full_filename . ']'] = $contents; + }; + } + + return $web; + } + + /** + * There needs to be at least 1 to address, or else the mail won't send. + * This method modifies the data that will be sent via either Rest + */ + public function updateMissingTo($data) + { + if ($this->smtpapi->to && (count($this->smtpapi->to) > 0)) { + $data['to'] = $this->getFrom(); + } + + return $data; + } +} diff --git a/vendor/sendgrid-php/SendGrid/Exception.php b/vendor/sendgrid-php/SendGrid/Exception.php new file mode 100644 index 0000000..9fc26e2 --- /dev/null +++ b/vendor/sendgrid-php/SendGrid/Exception.php @@ -0,0 +1,14 @@ +message)->errors; + } +} diff --git a/vendor/sendgrid-php/SendGrid/Response.php b/vendor/sendgrid-php/SendGrid/Response.php new file mode 100644 index 0000000..077238e --- /dev/null +++ b/vendor/sendgrid-php/SendGrid/Response.php @@ -0,0 +1,40 @@ +code = $code; + $this->headers = $headers; + $this->raw_body = $raw_body; + $this->body = $body; + } + + public function getCode() + { + return $this->code; + } + + public function getHeaders() + { + return $this->headers; + } + + public function getRawBody() + { + return $this->raw_body; + } + + public function getBody() + { + return $this->body; + } +} diff --git a/vendor/sendgrid-php/resources/api_keys.php b/vendor/sendgrid-php/resources/api_keys.php new file mode 100644 index 0000000..d72c175 --- /dev/null +++ b/vendor/sendgrid-php/resources/api_keys.php @@ -0,0 +1,58 @@ +name = NULL; + $this->base_endpoint = "/v3/api_keys"; + $this->endpoint = "/v3/api_keys"; + $this->client = $client; + } + + public function getBaseEndpoint(){ + return $this->base_endpoint; + } + + public function getEndpoint(){ + return $this->endpoint; + } + + public function getName(){ + return $this->name; + } + + public function setEndpoint($endpoint){ + $this->endpoint = $endpoint; + } + + public function get(){ + return $this->client->getRequest($this); + } + + public function post($name){ + $data = array( + 'name' => $name, + ); + return $this->client->postRequest($this, $data); + } + + public function patch($api_key_id, $name){ + $data = array( + 'name' => $name, + ); + $this->endpoint = $this->base_endpoint . "/" . $api_key_id; + return $this->client->patchRequest($this, $data); + } + + public function delete($api_key_id){ + $this->endpoint = $this->base_endpoint . "/" . $api_key_id; + return $this->client->deleteRequest($this); + } +} \ No newline at end of file diff --git a/vendor/sendgrid-php/resources/asm_groups.php b/vendor/sendgrid-php/resources/asm_groups.php new file mode 100644 index 0000000..c74b1f8 --- /dev/null +++ b/vendor/sendgrid-php/resources/asm_groups.php @@ -0,0 +1,33 @@ +name = NULL; + $this->base_endpoint = "/v3/asm/groups"; + $this->endpoint = "/v3/asm/groups"; + $this->client = $client; + } + + public function getBaseEndpoint(){ + return $this->base_endpoint; + } + + public function getEndpoint(){ + return $this->endpoint; + } + + public function setEndpoint($endpoint){ + $this->endpoint = $endpoint; + } + + public function get(){ + return $this->client->getRequest($this); + } +} \ No newline at end of file diff --git a/vendor/sendgrid-php/resources/asm_suppressions.php b/vendor/sendgrid-php/resources/asm_suppressions.php new file mode 100644 index 0000000..30d55ef --- /dev/null +++ b/vendor/sendgrid-php/resources/asm_suppressions.php @@ -0,0 +1,51 @@ +base_endpoint = "/v3/asm"; + $this->endpoint = "/v3/asm"; + $this->client = $client; + } + + public function getBaseEndpoint(){ + return $this->base_endpoint; + } + + public function getEndpoint(){ + return $this->endpoint; + } + + public function setEndpoint($endpoint){ + $this->endpoint = $endpoint; + } + + public function get($group_id=Null){ + if ( $group_id != Null ) { + $this->endpoint = $this->base_endpoint . "/groups/" . $group_id . "/suppressions"; + } + return $this->client->getRequest($this); + } + + public function post($group_id=Null, $email=Null){ + if ( !is_array($email) ) { + $email = array($email); + } + $this->endpoint = $this->base_endpoint . "/groups/" . $group_id . "/suppressions"; + $data = array( + 'recipient_emails' => $email, + ); + return $this->client->postRequest($this, $data); + } + + public function delete($group_id=Null, $email=Null){ + $this->endpoint = $this->base_endpoint . "/groups/" . $group_id . "/suppressions/" . $email; + return $this->client->deleteRequest($this); + } +} \ No newline at end of file diff --git a/vendor/sendgrid-php/resources/global_stats.php b/vendor/sendgrid-php/resources/global_stats.php new file mode 100644 index 0000000..b139767 --- /dev/null +++ b/vendor/sendgrid-php/resources/global_stats.php @@ -0,0 +1,40 @@ +name = NULL; + $this->base_endpoint = "/v3/stats"; + $this->endpoint = "/v3/stats"; + $this->client = $client; + } + + public function getBaseEndpoint(){ + return $this->base_endpoint; + } + + public function getEndpoint(){ + return $this->endpoint; + } + + public function setEndpoint($endpoint){ + $this->endpoint = $endpoint; + } + + public function get($start_date, $end_date=Null, $aggregated_by=Null){ + $this->endpoint = $this->base_endpoint . "?start_date=" . $start_date; + if($end_date != Null){ + $this->endpoint = $this->endpoint . "&end_date=" . $end_date; + } + if($aggregated_by != Null){ + $this->endpoint = $this->endpoint . "&aggregated_by=" . $aggregated_by; + } + return $this->client->getRequest($this); + } +} \ No newline at end of file diff --git a/vendor/smtpapi-php/Smtpapi.php b/vendor/smtpapi-php/Smtpapi.php new file mode 100644 index 0000000..17e7a1c --- /dev/null +++ b/vendor/smtpapi-php/Smtpapi.php @@ -0,0 +1,23 @@ +to[] = $name ? sprintf('%s <%s>', $name, $email) : $email; + + return $this; + } + + /** + * @param array $emails + * @return $this + */ + public function setTos(array $emails) + { + $this->to = $emails; + return $this; + } + + /** + * @param int $send_at + * @return $this + */ + public function setSendAt($send_at) + { + $this->send_at = $send_at; + $this->send_each_at = array(); + + return $this; + } + + /** + * @param array $send_each_at + * @return $this + */ + public function setSendEachAt(array $send_each_at) + { + $this->send_each_at = $send_each_at; + $this->send_at = null; + + return $this; + } + + /** + * @param int $send_at + * @return $this + */ + public function addSendEachAt($send_at) + { + $this->send_at = null; + $this->send_each_at[] = $send_at; + + return $this; + } + + /** + * @param string $from_value + * @param array $to_values + * @return $this + */ + public function addSubstitution($from_value, array $to_values) + { + $this->sub[$from_value] = $to_values; + + return $this; + } + + /** + * @param array $key_value_pairs + * @return $this + */ + public function setSubstitutions(array $key_value_pairs) + { + $this->sub = $key_value_pairs; + + return $this; + } + + /** + * @param mixed $key + * @param mixed $value + * @return $this + */ + public function addUniqueArg($key, $value) + { + $this->unique_args[$key] = $value; + + return $this; + } + + /** + * @param array $key_value_pairs + * @return $this + */ + public function setUniqueArgs(array $key_value_pairs) + { + $this->unique_args = $key_value_pairs; + + return $this; + } + + /** + * @param string $category + * @return $this + */ + public function addCategory($category) + { + $this->category[] = $category; + + return $this; + } + + /** + * @param array $categories + * @return $this + */ + public function setCategories(array $categories) + { + $this->category = $categories; + + return $this; + } + + /** + * @param string $category + * @return $this + */ + public function setCategory($category) + { + $this->category = array($category); + return $this; + } + + /** + * @param string $from_value + * @param string $to_value + * @return $this + */ + public function addSection($from_value, $to_value) + { + $this->section[$from_value] = $to_value; + + return $this; + } + + /** + * @param array $key_value_pairs + * @return $this + */ + public function setSections(array $key_value_pairs) + { + $this->section = $key_value_pairs; + + return $this; + } + + /** + * @param string $filter_name + * @param string $parameter_name + * @param mixed $parameter_value + * @return $this + */ + public function addFilter($filter_name, $parameter_name, $parameter_value) + { + $this->filters[$filter_name]['settings'][$parameter_name] = $parameter_value; + + return $this; + } + + /** + * @param array $filter_setting + * @return $this + */ + public function setFilters(array $filter_setting) + { + $this->filters = $filter_setting; + + return $this; + } + + /** + * @return array filters + */ + public function getFilters() + { + return $this->filters; + } + + /** + * @param string $group_id + * @return $this + */ + public function setASMGroupID($group_id) + { + $this->asm_group_id = $group_id; + + return $this; + } + + /** + * @param string $name + * @return $this + */ + public function setIpPool($name) + { + $this->ipPool = $name; + + return $this; + } + + /** + * @return array + */ + private function toArray() + { + $data = array(); + + if ($this->to) { + $data['to'] = $this->to; + } + if ($this->sub) { + $data['sub'] = $this->sub; + } + if ($this->unique_args) { + $data['unique_args'] = $this->unique_args; + } + if ($this->category) { + $data['category'] = $this->category; + } + if ($this->section) { + $data['section'] = $this->section; + } + if ($this->filters) { + $data['filters'] = $this->filters; + } + if ($this->send_at) { + $data['send_at'] = $this->send_at; + } + if ($this->send_each_at) { + $data['send_each_at'] = $this->send_each_at; + } + if ($this->asm_group_id) { + $data['asm_group_id'] = $this->asm_group_id; + } + if ($this->ipPool) { + $data['ip_pool'] = $this->ipPool; + } + + return $data; + } + + /** + * @param null $options + * @return string + */ + public function jsonString($options = null) + { + if ($options === null) { + $options = JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP; + } + + if (count($this->toArray()) <= 0) { + return '{}'; + } + + // unescape 5.3 PHP's escaping of forward slashes + return str_replace( + '\\/', '/', + json_encode($this->toArray(), $options) + ); + } +} diff --git a/view/css/datepicker/smoothness/images/animated-overlay.gif b/view/css/datepicker/smoothness/images/animated-overlay.gif new file mode 100644 index 0000000000000000000000000000000000000000..d441f75ebfbdf26a265dfccd670120d25c0a341c GIT binary patch literal 1738 zcmZ|OX;ji_6b5ixNYt8>l?gOuO)6lU%W(mxn(`>1S(XO;u`D+P%xqBvMr|w-Vyr1s z7R|Cn0b8|Hu<=Zmv1mFqh9Fj!NuZfKB2MP$e75`XJ@>=!y!Ux9xR3x;EW!q1^V>X| znVFuRUN`NqJ2)ybXh%e__h!!pv(M|S3+?9F%(K}zyE40MGyhWF5-IDgL&=%2-9`Nk z!1@8uk4t%_{(K~>N;sK&dzJbwJ=$kYTlL=$%#0Pfh>U{%i@~wWbvYsD_K-D`&+u1( z#Ma`>%q<^UhzGvi(hyE`zCD{-=2|zL5>wnB=DE!U?(CZG%q4@lDnCq_%&3DCla#(X zmBhDD+RN$aMWWHm?ig*>1Onn6~r?Ma~N2JKAxN>H%UtRyRqS)6Um!-Tz%-r=& zQmTb^JFIe3W^-kAm`}`2P|niMh>RYyd)S^f(dbrx965?rzbhP|XeP}o&&DSZ4|oYQ z)I{f!SfycYw?3=9W;o-B%U5xs(pP267X~9-7L|4WzaYexC0GtG8wWygm63rF{llCEraxzkc=IxvFQ-y37=_;e5 zJLq^gsSO0Ayz?a>E_?{dmUc+t#qv$)XN8$<<}rQ#)lsiw+pmL&J>~+hgpo>i$m+;l zZIa_ZRIfSeT$~v5d`EBV&*k`apPgjv&B|+d`Q!nyu{L4rs%ZfoF0*Kq8I%ByOcFpL zK=>wzofZo<+0GZLCnWM3oQ^pb(gRSf02;~cEn@LJ>~XB9IkEX{$N#Z`m%>S!U{uPx zloI%bLdo$Adxlh(Uv^yX7s5G&C zLwNRG>~T?G{kzupp8EcyLGPoPf)@&9Wqfw_l&uU-6cexk%5;uQg%wb=0k_733{i#& z1a2p)gV3S2+QG1-K9tZ}E~I<(P0r2aFFY-c{o?TUOz3Xjod#TLE2A_c?*T7t z=1>~%YW450{Qqno4t`}gvLnuMrcu8+#xEBoY%2_+Mb#Z6S38+r*M4O`-+!zl(@m`D zQsi|GA2l3gEy}LFe<#Hv8?$_L#u8E|3-bP$*La*E>B{X!Sy4i6?TKam!49aXCAW4S*P_O^H4^*DpiA40o}Uqw~Eo&veh1`|8i zD2$x+>_b^bXE4N;AW=5>iYak2%!JAh0j1*k1{p#iRCjbB7!cSws~U{1IA@acLII$t z$>X#A+^s6iJ5~DFG!xa?>z{=lxtdi1rzbM-(nqAu3D8h-&64xo6|E!p?pK0xT;qoK z`6%+SpBk+~M?nO}>2mTw!A{yZ6O>Z@kwSd4;8aWU5z!P~tQl?u==^+R`{OmOS}oZh zOXQ3{6kuz?Is^n^L7;9ieB9C+8B{>t+pDrlq4xGDDn#T#3T5$l1g`FTQkU;b-981j zNm{zC`$wn7etklM#qHI4=3m5gwa6DNS{?Z!vSObi_od{4eUo=_S2BKNpkSdiqe(k9WtkeM79;2-%CFbb)aB=&H1?i1}uwFzoZQ(38Kn1zBP ORn*B%u*Wk|4g3!*Rv{Mv literal 0 HcmV?d00001 diff --git a/view/css/datepicker/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png b/view/css/datepicker/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..5967cefcce7992f828367cc84611f4bb39180e52 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F1SA+{?>A)!QcOwS?k)_>#w|r1Kptm-M`SUO z_5fqIli7AahM1>|V~EA+ zRdP`(kYX@0Ff`URu+TL!4KcK|GBvd_GSxLOw=ys=+H}_zMMG|WN@iLmZVk@wQyYOA O7(8A5T-G@yGywpVUNgV| literal 0 HcmV?d00001 diff --git a/view/css/datepicker/smoothness/images/ui-bg_flat_75_ffffff_40x100.png b/view/css/datepicker/smoothness/images/ui-bg_flat_75_ffffff_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..75396ddb3fcba164a40f27c3ea6d48eabce73668 GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F2qYNp$opRhQcOwS?k)_Bce{j_0C}7R9+AaB z+5?Q;PG;Ky8A6^ejv*T7lYj6t@hpC#;TbB#aBAWwna#KLs)4eqC9V-ADTyViR>?)F zK#IZ0z|dINz(Uu^G{n%-%GA`#$VAt`+{(aU%F%0`C>nC}Q!>*kacg)wBhM75fx*+& K&t;ucLK6TM#5H69 literal 0 HcmV?d00001 diff --git a/view/css/datepicker/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png b/view/css/datepicker/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..a3484b7fe8c66968a6d7d235432d721d3389f8da GIT binary patch literal 335 zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fCnc6a#?2AmP!?*K(O3p^r= zfwTu0yPeFo12TF&T^vI^j=w#x$i?I+((tf;UXnmgbH|3oY>pC!)f}(GR!16S-u+#{ ze6YEqRkW=8vGl=5qArKM<9}TC-}iEvB{zdaTcX5$wyRTK&AL>h>FVdQ&MBb@0C{e9T>t<8 literal 0 HcmV?d00001 diff --git a/view/css/datepicker/smoothness/images/ui-bg_glass_65_ffffff_1x400.png b/view/css/datepicker/smoothness/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..6af6863c6c22afb4bc907ebc2c0585ae18ff399f GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^j6gI2NH8$CE1Q=ADW)WEcNYf6yIsOdfIQ9ukH}&m z?E%JaC$sH<3_(v9#}JM4$r%X}t&0mp9yKsb%{ak$*<@oTP*SzTHKHUXu_V~p>sDZ)L)z4*} HQ$iB};)^m; literal 0 HcmV?d00001 diff --git a/view/css/datepicker/smoothness/images/ui-bg_glass_75_dadada_1x400.png b/view/css/datepicker/smoothness/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..52f3ef4f02c3229f44d6d390d5bfae19d43faa86 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&0LWmFTHNUZq?nSt-Ch3w7g=q17Rci)@Q5r1 z(jH*!b~4)z#PD=+46!(!T=8puqDZgOs>RXUCGx5b?-VBQkUm|IuXOmYJrBRJgj{Vx zMbNnqUkncy+qa2-mWYc>swkcIuvGK#>(0d)B7)5f`@$Ei28nH~0h*~=;u=wsl30>z zm0Xkxq!^4042^XSEOd=bLkumgOiitfOmz*+tqcr|Hr=&F(U6;;l9^VCTZ8la)JC8N N22WQ%mvv4FO#odEPNx6> literal 0 HcmV?d00001 diff --git a/view/css/datepicker/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png b/view/css/datepicker/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..2fd02bf21d61872bbc524045bf3672d7127c9cec GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&0LWmFTHNUZq?nSt-Ch3w7g=q17Rci)@Q5r1 z(jH*!b~4)z#PD=+46!(!TrvH)L6@80)r*_cdCvDr%)6ghVL16=s@mbz7H!uRdGeDa z?kzLg)16i!f8fKx84s0>4xs`#zl%v-=Q8eV{r(~v8;@0qVMxH59 O1B0ilpUXO@geCyj_)m2J literal 0 HcmV?d00001 diff --git a/view/css/datepicker/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png b/view/css/datepicker/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..c5d9ec23fe92fe82fac192ecc281832ef046412e GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fCnc6a#?2AmP!?*K(O3p^r= zfwTu0yPeFo12VciT^vI^j=w#>k(V)1qW$CZ|6)SVV-&*#dav<$DMuV&n0Dbpw@al&C_85n3U hI{h6*LvDUbW?Cg~4N?D#y@47SJYD@<);T3K0RY{TbS?k@ literal 0 HcmV?d00001 diff --git a/view/css/datepicker/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/view/css/datepicker/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..5c3970bb334639b6db88dc2404d1a6c443882e8c GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q?nSt-Ch3w7g=q17Rci)@Q5r1 z(jH*!b~4)z$cXZEaSV~ToLo`U+vu0Ue0cG9p8hWqa?gxxGLm=1A1u)Cewe3oSeCaf zI$k30UHXoTXA5lSJe(zTcE%W-S*bfB&J`pw9sa4-R?IGW?p~6`>jMSP&M+u3 zY@9al)zrvpHlQu4C9V-ADTyViR>?)FK#IZ0z|dINz(Uu^G{n%-%GA`#$VAt`+{(aU i%F%0`C>nC}Q!>*kacg)wBhM75fx*+&&t;ucLK6UDXIoAH literal 0 HcmV?d00001 diff --git a/view/css/datepicker/smoothness/images/ui-icons_222222_256x240.png b/view/css/datepicker/smoothness/images/ui-icons_222222_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..c1cb1170c8b3795835b8831ab81fa9ae63b606b1 GIT binary patch literal 6922 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 QJ~;stWz}Trq%1=J3#jBGg8%>k literal 0 HcmV?d00001 diff --git a/view/css/datepicker/smoothness/images/ui-icons_2e83ff_256x240.png b/view/css/datepicker/smoothness/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..84b601bf0f726bf95801da487deaf2344a32e4b8 GIT binary patch literal 4549 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 F{{S81aohj^ literal 0 HcmV?d00001 diff --git a/view/css/datepicker/smoothness/images/ui-icons_454545_256x240.png b/view/css/datepicker/smoothness/images/ui-icons_454545_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..b6db1acdd433be80a472b045018f25c7f2cf7e08 GIT binary patch literal 6992 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 literal 0 HcmV?d00001 diff --git a/view/css/datepicker/smoothness/images/ui-icons_cd0a0a_256x240.png b/view/css/datepicker/smoothness/images/ui-icons_cd0a0a_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..ed5b6b0930f672fa08e9b9bdbe5e55370fd1dc30 GIT binary patch literal 4549 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 DTfr$v literal 0 HcmV?d00001 diff --git a/view/css/datepicker/smoothness/jquery-ui-1.10.3.custom.css b/view/css/datepicker/smoothness/jquery-ui-1.10.3.custom.css new file mode 100644 index 0000000..11ab30f --- /dev/null +++ b/view/css/datepicker/smoothness/jquery-ui-1.10.3.custom.css @@ -0,0 +1,677 @@ +/*! jQuery UI - v1.10.3 - 2013-08-27 +* http://jqueryui.com +* Includes: jquery.ui.core.css, jquery.ui.datepicker.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +* Copyright 2013 jQuery Foundation and other contributors Licensed MIT */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { + display: none; +} +.ui-helper-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.ui-helper-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + line-height: 1.3; + text-decoration: none; + font-size: 100%; + list-style: none; +} +.ui-helper-clearfix:before, +.ui-helper-clearfix:after { + content: ""; + display: table; + border-collapse: collapse; +} +.ui-helper-clearfix:after { + clear: both; +} +.ui-helper-clearfix { + min-height: 0; /* support: IE7 */ +} +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter:Alpha(Opacity=0); +} + +.ui-front { + z-index: 100; +} + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { + cursor: default !important; +} + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.ui-datepicker { + width: 17em; + padding: .2em .2em 0; + display: none; +} +.ui-datepicker .ui-datepicker-header { + position: relative; + padding: .2em 0; +} +.ui-datepicker .ui-datepicker-prev, +.ui-datepicker .ui-datepicker-next { + position: absolute; + top: 2px; + width: 1.8em; + height: 1.8em; + margin-top: 3px; +} +.ui-datepicker .ui-datepicker-next { + margin-right: 3px; +} +.ui-datepicker .ui-datepicker-prev { + margin-left: 3px; +} +.ui-datepicker .ui-datepicker-prev-hover, +.ui-datepicker .ui-datepicker-next-hover { + top: 1px; +} +.ui-datepicker .ui-datepicker-prev { + left: 2px; +} +.ui-datepicker .ui-datepicker-next { + right: 2px; +} +.ui-datepicker .ui-datepicker-prev-hover { + left: 1px; +} +.ui-datepicker .ui-datepicker-next-hover { + right: 1px; +} +.ui-datepicker .ui-datepicker-prev span, +.ui-datepicker .ui-datepicker-next span { + display: block; + position: absolute; + left: 50%; + margin-left: -8px; + top: 50%; + margin-top: -8px; +} +.ui-datepicker .ui-datepicker-title { + margin: 0 2.3em; + line-height: 1.8em; + text-align: center; +} +.ui-datepicker .ui-datepicker-title select { + font-size: 1em; + margin: 1px 0; +} +.ui-datepicker select.ui-datepicker-month-year { + width: 100%; +} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { + width: 49%; +} +.ui-datepicker table { + width: 100%; + font-size: .9em; + border-collapse: collapse; + margin: 0 0 .4em; +} +.ui-datepicker th { + padding: .7em .3em; + text-align: center; + font-weight: normal; + border: 0; +} +.ui-datepicker td { + border: 0; + padding: 1px; +} +.ui-datepicker td span, +.ui-datepicker td a { + display: block; + padding: .2em; + text-align: right; + text-decoration: none; +} +.ui-datepicker .ui-datepicker-buttonpane { + background-image: none; + margin: .7em 0 0 0; + padding: 0 .2em; + border-left: 0; + border-right: 0; + border-bottom: 0; +} +.ui-datepicker .ui-datepicker-buttonpane button { + float: right; + margin: .5em .2em .4em; + cursor: pointer; + padding: .2em .6em .3em .6em; + width: auto; + overflow: visible; +} +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { + float: left; +} + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { + width: auto; +} +.ui-datepicker-multi .ui-datepicker-group { + float: left; +} +.ui-datepicker-multi .ui-datepicker-group table { + width: 95%; + margin: 0 auto .4em; +} +.ui-datepicker-multi-2 .ui-datepicker-group { + width: 50%; +} +.ui-datepicker-multi-3 .ui-datepicker-group { + width: 33.3%; +} +.ui-datepicker-multi-4 .ui-datepicker-group { + width: 25%; +} +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { + border-left-width: 0; +} +.ui-datepicker-multi .ui-datepicker-buttonpane { + clear: left; +} +.ui-datepicker-row-break { + clear: both; + width: 100%; + font-size: 0; +} + +/* RTL support */ +.ui-datepicker-rtl { + direction: rtl; +} +.ui-datepicker-rtl .ui-datepicker-prev { + right: 2px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next { + left: 2px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-prev:hover { + right: 1px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next:hover { + left: 1px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane { + clear: right; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button { + float: left; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, +.ui-datepicker-rtl .ui-datepicker-group { + float: right; +} +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { + border-right-width: 0; + border-left-width: 1px; +} + +/* Component containers +----------------------------------*/ +.ui-widget { + font-family: Verdana,Arial,sans-serif; + font-size: 1.1em; +} +.ui-widget .ui-widget { + font-size: 1em; +} +.ui-widget input, +.ui-widget select, +.ui-widget textarea, +.ui-widget button { + font-family: Verdana,Arial,sans-serif; + font-size: 1em; +} +.ui-widget-content { + border: 1px solid #dfdfdf; + -webkit-box-shadow: inset 0 1px 0 #fff; + box-shadow: inset 0 1px 0 #fff; + background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; + color: #222222; + background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; + color: #222222; +} +.ui-widget-content a { + color: #222222; +} +.ui-widget-header { + background: #f1f1f1; + background-image: -webkit-gradient(linear,left bottom,left top,from(#ececec),to(#f9f9f9)); + background-image: -webkit-linear-gradient(bottom,#ececec,#f9f9f9); + background-image: -moz-linear-gradient(bottom,#ececec,#f9f9f9); + background-image: -o-linear-gradient(bottom,#ececec,#f9f9f9); + background-image: linear-gradient(to top,#ececec,#f9f9f9); + border:1px solid #dfdfdf; + -webkit-box-shadow: inset 0 1px 0 #fff; + box-shadow: inset 0 1px 0 #fff; + -webkit-border-radius: 3px; + border-radius: 3px; + color: #464646; + font-weight: normal; +} +.ui-widget-header a { + color: #222222; +} + +/* Interaction states +----------------------------------*/ +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default { + border: 1px solid #d3d3d3; + background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; + font-weight: normal; + color: #555555; + + background: #f1f1f1; + background-image: -webkit-gradient(linear,left bottom,left top,from(#ececec),to(#f9f9f9)); + background-image: -webkit-linear-gradient(bottom,#ececec,#f9f9f9); + background-image: -moz-linear-gradient(bottom,#ececec,#f9f9f9); + background-image: -o-linear-gradient(bottom,#ececec,#f9f9f9); + background-image: linear-gradient(to top,#ececec,#f9f9f9); + border-color: #dfdfdf; + -webkit-box-shadow: inset 0 1px 0 #fff; + box-shadow: inset 0 1px 0 #fff; + color: #464646; +} +.ui-state-default a, +.ui-state-default a:link, +.ui-state-default a:visited { + color: #555555; + text-decoration: none; +} +.ui-state-hover, +.ui-widget-content .ui-state-hover, +.ui-widget-header .ui-state-hover, +.ui-state-focus, +.ui-widget-content .ui-state-focus, +.ui-widget-header .ui-state-focus { + border: 1px solid #999999; +} +.ui-state-hover a, +.ui-state-hover a:hover, +.ui-state-hover a:link, +.ui-state-hover a:visited { + color: #212121; + text-decoration: none; +} +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active { + border: 1px solid #aaaaaa; + background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; + font-weight: normal; + color: #212121; +} +.ui-state-active a, +.ui-state-active a:link, +.ui-state-active a:visited { + color: #212121; + text-decoration: none; +} + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, +.ui-widget-content .ui-state-highlight, +.ui-widget-header .ui-state-highlight { + border: 1px solid #fcefa1; + background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; + color: #363636; +} +.ui-state-highlight a, +.ui-widget-content .ui-state-highlight a, +.ui-widget-header .ui-state-highlight a { + color: #363636; +} +.ui-state-error, +.ui-widget-content .ui-state-error, +.ui-widget-header .ui-state-error { + border: 1px solid #cd0a0a; + background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; + color: #cd0a0a; +} +.ui-state-error a, +.ui-widget-content .ui-state-error a, +.ui-widget-header .ui-state-error a { + color: #cd0a0a; +} +.ui-state-error-text, +.ui-widget-content .ui-state-error-text, +.ui-widget-header .ui-state-error-text { + color: #cd0a0a; +} +.ui-priority-primary, +.ui-widget-content .ui-priority-primary, +.ui-widget-header .ui-priority-primary { + font-weight: normal; +} +.ui-priority-secondary, +.ui-widget-content .ui-priority-secondary, +.ui-widget-header .ui-priority-secondary { + opacity: .7; + filter:Alpha(Opacity=70); + font-weight: normal; +} +.ui-state-disabled, +.ui-widget-content .ui-state-disabled, +.ui-widget-header .ui-state-disabled { + opacity: .35; + filter:Alpha(Opacity=35); + background-image: none; +} +.ui-state-disabled .ui-icon { + filter:Alpha(Opacity=35); /* For IE8 - See #6059 */ +} + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + width: 16px; + height: 16px; +} +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url(images/ui-icons_222222_256x240.png); +} +.ui-widget-header .ui-icon { + background-image: url(images/ui-icons_222222_256x240.png); +} +.ui-state-default .ui-icon { + background-image: url(images/ui-icons_888888_256x240.png); +} +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon { + background-image: url(images/ui-icons_454545_256x240.png); +} +.ui-state-active .ui-icon { + background-image: url(images/ui-icons_454545_256x240.png); +} +.ui-state-highlight .ui-icon { + background-image: url(images/ui-icons_2e83ff_256x240.png); +} +.ui-state-error .ui-icon, +.ui-state-error-text .ui-icon { + background-image: url(images/ui-icons_cd0a0a_256x240.png); +} + +/* positioning */ +.ui-icon-blank { background-position: 16px 16px; } +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-on { background-position: -96px -144px; } +.ui-icon-radio-off { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 4px; +} + +/* Overlays */ +.ui-widget-overlay { + background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; + opacity: .3; + filter: Alpha(Opacity=30); +} +.ui-widget-shadow { + margin: -8px 0 0 -8px; + padding: 8px; + background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; + opacity: .3; + filter: Alpha(Opacity=30); + border-radius: 8px; +} diff --git a/view/css/select2.min.css b/view/css/select2.min.css new file mode 100755 index 0000000..76de04d --- /dev/null +++ b/view/css/select2.min.css @@ -0,0 +1 @@ +.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} diff --git a/view/css/sendgrid.css b/view/css/sendgrid.css new file mode 100644 index 0000000..b605adf --- /dev/null +++ b/view/css/sendgrid.css @@ -0,0 +1,439 @@ +/* SendGrid stats */ + +/* + Helpers +*/ +.pull-left { + float: left; +} +.pull-right { + float: right; +} + +.pull-left.sendgrid-statistics-header { + width: 50%; + margin-bottom: 10px; +} + +.pull-right.sendgrid-statistics-change-type #sendgrid-statistics-change-type { + margin-top: 12px; +} + +.clearfix-clear { + clear: both; +} + +.clearfix:before, .clearfix:after { + content: "."; + display: block; + height: 0; + overflow: hidden; +} + +.clearfix:after { + clear: both; +} + +.clearfix { + zoom: 1; /* IE < 8 */ +} + +.code { + background-color: #F8F8F8; + border: 1px solid #DDDDDD; + border-radius: 3px 3px 3px 3px; + font-size: 13px; + line-height: 19px; + overflow: auto; + padding: 6px 10px; +} + +.full-width { + width: 100%; + margin: 0px!important; +} + +/* + Filters +*/ +.sendgrid-filters-container { + float:right; + margin-right: 2.4%; + margin-left: 2.3%; +} + +.sendgrid-filters-container .loading { + float: right; + padding-top: 2px; + margin-top: 6px; + margin-right: 4px; +} + +.wordpress-new.sendgrid-filters-container .loading { + margin-top: 9px; +} + +.sendgrid-filters { + float: right; +} + +.sendgrid-filters label { + display: inline-block; + height: 18px; + width: 65px; + margin-left: 5px; +} + +.wordpress-new.sendgrid-filters-container label { + height: 24px; +} + +.sendgrid-filters #sendgrid-start-date, .sendgrid-filters #sendgrid-end-date { + width: 95px; + margin-top: 5px; +} + +.sendgrid-filters a.button { + margin-left: 2px; + margin-top: 5px; +} + +#ui-datepicker-div { + display: none; +} + +/* + Statistics +*/ +.sendgrid-container { + width: 100%; + position: relative; +} + +.sendgrid-container .loading { + position: absolute; + width: 48px; + height: 48px; + left: 50%; + top: 50%; + margin-left: -24px; + margin-top: -24px; +} + +.sendgrid-container .sendgrid-statistics { + width: 100%; + height: 300px; +} + +.sendgrid-container .widget { + float: left; + width: 189px; + margin-top: 15px; + cursor: default; +} + +.sendgrid-container .widget .widget-top { + cursor: default; + height: auto; +} + +.sendgrid-container .widget .widget-top .widget-title { + padding: 0px; +} + +.sendgrid-container .widget .widget-inside { + display: block; + text-align: center; + min-height: 70px; + border-top: none!important; + padding: 10px; +} + +.wordpress-new.sendgrid-container .widget .widget-inside { + min-height: 78px; +} + +.sendgrid-container .widget .widget-inside h2 { + font-weight: bold; +} + +.sendgrid-container .widget:first-of-type { + margin-left: 0px; +} + +#sendgrid_statistics_widget .inside { + padding-left: 0px; + padding-right: 0px; + padding-bottom: 0px; + margin-bottom: 0px; +} + +.sendgrid-container .widget.others { + font-weight: bold; + width: 30%; + margin-left: 2.3%; + margin-bottom: 15px; +} + +.sendgrid-container .widget.others:last-of-type { + margin-left: 0px; + margin-right: 2.3%; + float: right; +} + +.sendgrid-container .widget.others .widget-title h4 { + line-height: 15px; + margin: 0!important; + padding: 10px!important; +} + +.sendgrid-container .widget.others .row { + margin-bottom: 2px; +} + +.sendgrid-container .widget.others .row:last-of-type { + margin-bottom: 0px; +} + +.sendgrid-container .widget.others .row .square { + display: inline-block; + width: 10px; + height: 10px; + margin-right: 5px; + -webkit-box-shadow: 1px 1px 0 rgba(40, 40, 40, 0.3) inset; + -moz-box-shadow: 1px 1px 0 rgba(40, 40, 40, 0.3) inset; + box-shadow: 1px 1px 0 rgba(40, 40, 40, 0.3) inset; + -webkit-box-shadow: 1px 1px 0 rgba(40, 40, 40, 0.3) inset; + -moz-box-shadow: 1px 1px 0 rgba(40, 40, 40, 0.3) inset; + box-shadow: 1px 1px 0 rgba(40, 40, 40, 0.3) inset; +} + +.sendgrid-container .more-statistics { + float: right; + margin-bottom: 15px; + margin-right: 2.3%; +} + +.sendgrid-statistics-legend { + width: 100%; + height: 22px; + margin-top: 15px; +} + +.sendgrid-statistics-legend .legendLabel { + padding-right: 10px; +} + +.sendgrid-statistics-legend .legendLabel:last-of-type { + padding-right: 0px; +} + +#sendgrid-statistics-page .postbox .hndle { + cursor: default; +} + +#icon-sendgrid { + background: url("../images/logo32.png") no-repeat; + height: 34px; + display: block; +} + +.sendgrid_settings_mc_input_padding_label { + padding-left: 5px; +} + +/* + Responsive +*/ +@media (min-width: 1500px) { + .columns-4 .sendgrid-container .widget.others { + width: 46%; + } + + .wordpress-dashboard-new.sendgrid-container .widget.others { + width: 46.55%; + } + + .columns-4 .sendgrid-container .widget.others:last-of-type, + .wordpress-dashboard-new.sendgrid-container .widget.others:last-of-type { + display: block; + padding: 0px; + margin-top: 0px; + margin-right: 2.3%; + margin-left: 2.3%; + width: 95.4%; + } +} + +@media (min-width: 1000px) and (max-width: 1800px) { + .columns-3 .sendgrid-container .widget.others { + width: 46%; + } + + .columns-3 .sendgrid-container .widget.others:last-of-type { + display: block; + padding: 0px; + margin-top: 0px; + margin-right: 2.3%; + margin-left: 2.3%; + width: 95.4%; + } +} + +@media (min-width: 1360px) and (max-width: 1500px) { + .columns-4 .sendgrid-container .widget.others:first-of-type { + margin-top: 10px; + } + + .columns-4 .sendgrid-container .widget.others { + display: block; + padding: 0px; + margin-top: 0px; + margin-right: 2.3%; + margin-left: 2.3%; + width: 95.4%; + } +} + +@media (min-width: 1000px) and (max-width: 1360px) { + .columns-2 .sendgrid-container .widget.others, + .columns-4 .sendgrid-container .widget.others { + width: 46%; + } + + .wordpress-dashboard-new.sendgrid-container .widget.others { + width: 46.55%; + } + + .columns-2 .sendgrid-container .widget.others:last-of-type, + .columns-4 .sendgrid-container .widget.others:last-of-type, + .wordpress-dashboard-new.sendgrid-container .widget.others:last-of-type { + display: block; + padding: 0px; + margin-top: 0px; + margin-right: 2.3%; + margin-left: 2.3%; + width: 95.4%; + } +} + +@media (min-width: 800px) and (max-width: 1000px) { + .columns-2 .sendgrid-container .widget.others:first-of-type, + .columns-3 .sendgrid-container .widget.others:first-of-type, + .columns-4 .sendgrid-container .widget.others:first-of-type, + .wordpress-dashboard-new.sendgrid-container .widget.others:first-of-type { + margin-top: 10px; + } + + .columns-2 .sendgrid-container .widget.others, + .columns-3 .sendgrid-container .widget.others, + .columns-4 .sendgrid-container .widget.others, + .wordpress-dashboard-new.sendgrid-container .widget.others { + display: block; + padding: 0px; + margin-top: 0px; + margin-right: 2.3%; + margin-left: 2.3%; + width: 95.4%; + } +} + +@media (min-width: 560px) and (max-width: 782px) { + .sendgrid-filters #sendgrid-start-date, + .sendgrid-filters #sendgrid-end-date { + width: 110px; + } + + .sendgrid-container .widget.others { + width: 46%; + } + + .wordpress-new.sendgrid-container .widget.others { + width: 46.5%; + } + + .sendgrid-container .widget.others:last-of-type { + display: block; + padding: 0px; + margin-top: 0px; + margin-right: 2.3%; + margin-left: 2.3%; + width: 95.4%; + } +} + +@media (max-width: 559px) { + .sendgrid-filters #sendgrid-start-date, + .sendgrid-filters #sendgrid-end-date { + width: 110px; + } + + .sendgrid-container .widget.others:first-of-type { + margin-top: 10px; + } + + .sendgrid-container .widget.others { + display: block; + padding: 0px; + margin-top: 0px; + margin-right: 2.3%; + margin-left: 2.3%; + width: 95.4%; + } +} + +.creds { + display: none; +} + +#sendgrid-statistics-page .error { + width: 1660px; +} + +.sendgrid-settings-top-header { + margin-top: 0px; +} + +.sengrid-settings-select { + width: 435px; +} + +.sendgrid-settings-select { + width: 350px; +} + +.sendgrid-settings-key { + width: 350px; +} + +.sengrid-settings-nav-bar { + font-size: 0.9em; + padding-bottom: 0px; + margin-bottom: 20px!important; +} + +.sendgrid-multisite-pagination { + width: auto; + position: relative; + float: right; + margin: 0px; + padding: 5px; +} + +.sendgrid-multisite-button { + width: 6em; + text-align: center; +} + +.sendgrid-multisite-submit { + margin-top: 0px; + padding-top: 5px; +} + +.sendgrid-page-numbers { + position: relative; + float: left; + margin: 0px; + padding: 5px; + text-align: center; +} \ No newline at end of file diff --git a/view/images/loader.gif b/view/images/loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..46118a8f14993f6b958131a04426484a4d2d88d3 GIT binary patch literal 10207 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 literal 0 HcmV?d00001 diff --git a/view/images/logo.png b/view/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..cf119649eb2115ab785c389f5ce5b2478fbee8c3 GIT binary patch literal 67625 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 Z&stpKx%5E^!v#=r?dj_0vd$@?2>=?9fOG%= literal 0 HcmV?d00001 diff --git a/view/js/jquery.flot.js b/view/js/jquery.flot.js new file mode 100644 index 0000000..8037e2d --- /dev/null +++ b/view/js/jquery.flot.js @@ -0,0 +1,2696 @@ +/* Javascript plotting library for jQuery, version 0.8 alpha. + +Copyright (c) 2007-2012 IOLA and Ole Laursen. +Licensed under the MIT license. + +*/ + +// first an inline dependency, jquery.colorhelpers.js, we inline it here +// for convenience + +/* Plugin for jQuery for working with colors. + * + * Version 1.1. + * + * Inspiration from jQuery color animation plugin by John Resig. + * + * Released under the MIT license by Ole Laursen, October 2009. + * + * Examples: + * + * $.color.parse("#fff").scale('rgb', 0.25).add('a', -0.5).toString() + * var c = $.color.extract($("#mydiv"), 'background-color'); + * console.log(c.r, c.g, c.b, c.a); + * $.color.make(100, 50, 25, 0.4).toString() // returns "rgba(100,50,25,0.4)" + * + * Note that .scale() and .add() return the same modified object + * instead of making a new one. + * + * V. 1.1: Fix error handling so e.g. parsing an empty string does + * produce a color rather than just crashing. + */ +(function(B){B.color={};B.color.make=function(F,E,C,D){var G={};G.r=F||0;G.g=E||0;G.b=C||0;G.a=D!=null?D:1;G.add=function(J,I){for(var H=0;H=1){return"rgb("+[G.r,G.g,G.b].join(",")+")"}else{return"rgba("+[G.r,G.g,G.b,G.a].join(",")+")"}};G.normalize=function(){function H(J,K,I){return KI?I:K)}G.r=H(0,parseInt(G.r),255);G.g=H(0,parseInt(G.g),255);G.b=H(0,parseInt(G.b),255);G.a=H(0,G.a,1);return G};G.clone=function(){return B.color.make(G.r,G.b,G.g,G.a)};return G.normalize()};B.color.extract=function(D,C){var E;do{E=D.css(C).toLowerCase();if(E!=""&&E!="transparent"){break}D=D.parent()}while(!B.nodeName(D.get(0),"body"));if(E=="rgba(0, 0, 0, 0)"){E="transparent"}return B.color.parse(E)};B.color.parse=function(F){var E,C=B.color.make;if(E=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(F)){return C(parseInt(E[1],10),parseInt(E[2],10),parseInt(E[3],10))}if(E=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(F)){return C(parseInt(E[1],10),parseInt(E[2],10),parseInt(E[3],10),parseFloat(E[4]))}if(E=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(F)){return C(parseFloat(E[1])*2.55,parseFloat(E[2])*2.55,parseFloat(E[3])*2.55)}if(E=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(F)){return C(parseFloat(E[1])*2.55,parseFloat(E[2])*2.55,parseFloat(E[3])*2.55,parseFloat(E[4]))}if(E=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(F)){return C(parseInt(E[1],16),parseInt(E[2],16),parseInt(E[3],16))}if(E=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(F)){return C(parseInt(E[1]+E[1],16),parseInt(E[2]+E[2],16),parseInt(E[3]+E[3],16))}var D=B.trim(F).toLowerCase();if(D=="transparent"){return C(255,255,255,0)}else{E=A[D]||[0,0,0];return C(E[0],E[1],E[2])}};var A={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery); + +// the actual Flot code +(function($) { + function Plot(placeholder, data_, options_, plugins) { + // data is on the form: + // [ series1, series2 ... ] + // where series is either just the data as [ [x1, y1], [x2, y2], ... ] + // or { data: [ [x1, y1], [x2, y2], ... ], label: "some label", ... } + + var series = [], + options = { + // the color theme used for graphs + colors: ["#edc240", "#afd8f8", "#cb4b4b", "#4da74d", "#9440ed"], + legend: { + show: true, + noColumns: 1, // number of colums in legend table + labelFormatter: null, // fn: string -> string + labelBoxBorderColor: "#ccc", // border color for the little label boxes + container: null, // container (as jQuery object) to put legend in, null means default on top of graph + position: "ne", // position of default legend container within plot + margin: 5, // distance from grid edge to default legend container within plot + backgroundColor: null, // null means auto-detect + backgroundOpacity: 0.85, // set to 0 to avoid background + sorted: null // default to no legend sorting + }, + xaxis: { + show: null, // null = auto-detect, true = always, false = never + position: "bottom", // or "top" + mode: null, // null or "time" + timezone: null, // "browser" for local to the client or timezone for timezone-js + font: null, // null (derived from CSS in placeholder) or object like { size: 11, style: "italic", weight: "bold", family: "sans-serif", variant: "small-caps" } + color: null, // base color, labels, ticks + tickColor: null, // possibly different color of ticks, e.g. "rgba(0,0,0,0.15)" + transform: null, // null or f: number -> number to transform axis + inverseTransform: null, // if transform is set, this should be the inverse function + min: null, // min. value to show, null means set automatically + max: null, // max. value to show, null means set automatically + autoscaleMargin: null, // margin in % to add if auto-setting min/max + ticks: null, // either [1, 3] or [[1, "a"], 3] or (fn: axis info -> ticks) or app. number of ticks for auto-ticks + tickFormatter: null, // fn: number -> string + labelWidth: null, // size of tick labels in pixels + labelHeight: null, + reserveSpace: null, // whether to reserve space even if axis isn't shown + tickLength: null, // size in pixels of ticks, or "full" for whole line + alignTicksWithAxis: null, // axis number or null for no sync + + // mode specific options + tickDecimals: null, // no. of decimals, null means auto + tickSize: null, // number or [number, "unit"] + minTickSize: null, // number or [number, "unit"] + monthNames: null, // list of names of months + timeformat: null, // format string to use + twelveHourClock: false // 12 or 24 time in time mode + }, + yaxis: { + autoscaleMargin: 0.02, + position: "left" // or "right" + }, + xaxes: [], + yaxes: [], + series: { + points: { + show: false, + radius: 3, + lineWidth: 2, // in pixels + fill: true, + fillColor: "#ffffff", + symbol: "circle" // or callback + }, + lines: { + // we don't put in show: false so we can see + // whether lines were actively disabled + lineWidth: 2, // in pixels + fill: false, + fillColor: null, + steps: false + // Omit 'zero', so we can later default its value to + // match that of the 'fill' option. + }, + bars: { + show: false, + lineWidth: 2, // in pixels + barWidth: 1, // in units of the x axis + fill: true, + fillColor: null, + align: "left", // "left", "right", or "center" + horizontal: false, + zero: true + }, + shadowSize: 3, + highlightColor: null + }, + grid: { + show: true, + aboveData: false, + color: "#545454", // primary color used for outline and labels + backgroundColor: null, // null for transparent, else color + borderColor: null, // set if different from the grid color + tickColor: null, // color for the ticks, e.g. "rgba(0,0,0,0.15)" + margin: 0, // distance from the canvas edge to the grid + labelMargin: 5, // in pixels + axisMargin: 8, // in pixels + borderWidth: 2, // in pixels + minBorderMargin: null, // in pixels, null means taken from points radius + markings: null, // array of ranges or fn: axes -> array of ranges + markingsColor: "#f4f4f4", + markingsLineWidth: 2, + // interactive stuff + clickable: false, + hoverable: false, + autoHighlight: true, // highlight in case mouse is near + mouseActiveRadius: 10 // how far the mouse can be away to activate an item + }, + interaction: { + redrawOverlayInterval: 1000/60 // time between updates, -1 means in same flow + }, + hooks: {} + }, + canvas = null, // the canvas for the plot itself + overlay = null, // canvas for interactive stuff on top of plot + eventHolder = null, // jQuery object that events should be bound to + ctx = null, octx = null, + xaxes = [], yaxes = [], + plotOffset = { left: 0, right: 0, top: 0, bottom: 0}, + canvasWidth = 0, canvasHeight = 0, + plotWidth = 0, plotHeight = 0, + hooks = { + processOptions: [], + processRawData: [], + processDatapoints: [], + processOffset: [], + drawBackground: [], + drawSeries: [], + draw: [], + bindEvents: [], + drawOverlay: [], + legendInserted: [], + shutdown: [] + }, + plot = this; + + // public functions + plot.setData = setData; + plot.setupGrid = setupGrid; + plot.draw = draw; + plot.getPlaceholder = function() { return placeholder; }; + plot.getCanvas = function() { return canvas; }; + plot.getPlotOffset = function() { return plotOffset; }; + plot.width = function () { return plotWidth; }; + plot.height = function () { return plotHeight; }; + plot.offset = function () { + var o = eventHolder.offset(); + o.left += plotOffset.left; + o.top += plotOffset.top; + return o; + }; + plot.getData = function () { return series; }; + plot.getAxes = function () { + var res = {}, i; + $.each(xaxes.concat(yaxes), function (_, axis) { + if (axis) + res[axis.direction + (axis.n != 1 ? axis.n : "") + "axis"] = axis; + }); + return res; + }; + plot.getXAxes = function () { return xaxes; }; + plot.getYAxes = function () { return yaxes; }; + plot.c2p = canvasToAxisCoords; + plot.p2c = axisToCanvasCoords; + plot.getOptions = function () { return options; }; + plot.highlight = highlight; + plot.unhighlight = unhighlight; + plot.triggerRedrawOverlay = triggerRedrawOverlay; + plot.pointOffset = function(point) { + return { + left: parseInt(xaxes[axisNumber(point, "x") - 1].p2c(+point.x) + plotOffset.left, 10), + top: parseInt(yaxes[axisNumber(point, "y") - 1].p2c(+point.y) + plotOffset.top, 10) + }; + }; + plot.shutdown = shutdown; + plot.resize = function () { + getCanvasDimensions(); + resizeCanvas(canvas); + resizeCanvas(overlay); + }; + + // public attributes + plot.hooks = hooks; + + // initialize + initPlugins(plot); + parseOptions(options_); + setupCanvases(); + setData(data_); + setupGrid(); + draw(); + bindEvents(); + + + function executeHooks(hook, args) { + args = [plot].concat(args); + for (var i = 0; i < hook.length; ++i) + hook[i].apply(this, args); + } + + function initPlugins() { + for (var i = 0; i < plugins.length; ++i) { + var p = plugins[i]; + p.init(plot); + if (p.options) + $.extend(true, options, p.options); + } + } + + function parseOptions(opts) { + var i; + + $.extend(true, options, opts); + + if (options.xaxis.color == null) + options.xaxis.color = options.grid.color; + if (options.yaxis.color == null) + options.yaxis.color = options.grid.color; + + if (options.xaxis.tickColor == null) // backwards-compatibility + options.xaxis.tickColor = options.grid.tickColor; + if (options.yaxis.tickColor == null) // backwards-compatibility + options.yaxis.tickColor = options.grid.tickColor; + + if (options.grid.borderColor == null) + options.grid.borderColor = options.grid.color; + if (options.grid.tickColor == null) + options.grid.tickColor = $.color.parse(options.grid.color).scale('a', 0.22).toString(); + + // fill in defaults in axes, copy at least always the + // first as the rest of the code assumes it'll be there + for (i = 0; i < Math.max(1, options.xaxes.length); ++i) + options.xaxes[i] = $.extend(true, {}, options.xaxis, options.xaxes[i]); + for (i = 0; i < Math.max(1, options.yaxes.length); ++i) + options.yaxes[i] = $.extend(true, {}, options.yaxis, options.yaxes[i]); + + // backwards compatibility, to be removed in future + if (options.xaxis.noTicks && options.xaxis.ticks == null) + options.xaxis.ticks = options.xaxis.noTicks; + if (options.yaxis.noTicks && options.yaxis.ticks == null) + options.yaxis.ticks = options.yaxis.noTicks; + if (options.x2axis) { + options.xaxes[1] = $.extend(true, {}, options.xaxis, options.x2axis); + options.xaxes[1].position = "top"; + } + if (options.y2axis) { + options.yaxes[1] = $.extend(true, {}, options.yaxis, options.y2axis); + options.yaxes[1].position = "right"; + } + if (options.grid.coloredAreas) + options.grid.markings = options.grid.coloredAreas; + if (options.grid.coloredAreasColor) + options.grid.markingsColor = options.grid.coloredAreasColor; + if (options.lines) + $.extend(true, options.series.lines, options.lines); + if (options.points) + $.extend(true, options.series.points, options.points); + if (options.bars) + $.extend(true, options.series.bars, options.bars); + if (options.shadowSize != null) + options.series.shadowSize = options.shadowSize; + if (options.highlightColor != null) + options.series.highlightColor = options.highlightColor; + + // save options on axes for future reference + for (i = 0; i < options.xaxes.length; ++i) + getOrCreateAxis(xaxes, i + 1).options = options.xaxes[i]; + for (i = 0; i < options.yaxes.length; ++i) + getOrCreateAxis(yaxes, i + 1).options = options.yaxes[i]; + + // add hooks from options + for (var n in hooks) + if (options.hooks[n] && options.hooks[n].length) + hooks[n] = hooks[n].concat(options.hooks[n]); + + executeHooks(hooks.processOptions, [options]); + } + + function setData(d) { + series = parseData(d); + fillInSeriesOptions(); + processData(); + } + + function parseData(d) { + var res = []; + for (var i = 0; i < d.length; ++i) { + var s = $.extend(true, {}, options.series); + + if (d[i].data != null) { + s.data = d[i].data; // move the data instead of deep-copy + delete d[i].data; + + $.extend(true, s, d[i]); + + d[i].data = s.data; + } + else + s.data = d[i]; + res.push(s); + } + + return res; + } + + function axisNumber(obj, coord) { + var a = obj[coord + "axis"]; + if (typeof a == "object") // if we got a real axis, extract number + a = a.n; + if (typeof a != "number") + a = 1; // default to first axis + return a; + } + + function allAxes() { + // return flat array without annoying null entries + return $.grep(xaxes.concat(yaxes), function (a) { return a; }); + } + + function canvasToAxisCoords(pos) { + // return an object with x/y corresponding to all used axes + var res = {}, i, axis; + for (i = 0; i < xaxes.length; ++i) { + axis = xaxes[i]; + if (axis && axis.used) + res["x" + axis.n] = axis.c2p(pos.left); + } + + for (i = 0; i < yaxes.length; ++i) { + axis = yaxes[i]; + if (axis && axis.used) + res["y" + axis.n] = axis.c2p(pos.top); + } + + if (res.x1 !== undefined) + res.x = res.x1; + if (res.y1 !== undefined) + res.y = res.y1; + + return res; + } + + function axisToCanvasCoords(pos) { + // get canvas coords from the first pair of x/y found in pos + var res = {}, i, axis, key; + + for (i = 0; i < xaxes.length; ++i) { + axis = xaxes[i]; + if (axis && axis.used) { + key = "x" + axis.n; + if (pos[key] == null && axis.n == 1) + key = "x"; + + if (pos[key] != null) { + res.left = axis.p2c(pos[key]); + break; + } + } + } + + for (i = 0; i < yaxes.length; ++i) { + axis = yaxes[i]; + if (axis && axis.used) { + key = "y" + axis.n; + if (pos[key] == null && axis.n == 1) + key = "y"; + + if (pos[key] != null) { + res.top = axis.p2c(pos[key]); + break; + } + } + } + + return res; + } + + function getOrCreateAxis(axes, number) { + if (!axes[number - 1]) + axes[number - 1] = { + n: number, // save the number for future reference + direction: axes == xaxes ? "x" : "y", + options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis) + }; + + return axes[number - 1]; + } + + function fillInSeriesOptions() { + + var neededColors = series.length, maxIndex = -1, i; + + // Subtract the number of series that already have fixed colors or + // color indexes from the number that we still need to generate. + + for (i = 0; i < series.length; ++i) { + var sc = series[i].color; + if (sc != null) { + neededColors--; + if (typeof sc == "number" && sc > maxIndex) { + maxIndex = sc; + } + } + } + + // If any of the series have fixed color indexes, then we need to + // generate at least as many colors as the highest index. + + if (neededColors <= maxIndex) { + neededColors = maxIndex + 1; + } + + // Generate all the colors, using first the option colors and then + // variations on those colors once they're exhausted. + + var c, colors = [], colorPool = options.colors, + colorPoolSize = colorPool.length, variation = 0; + + for (i = 0; i < neededColors; i++) { + + c = $.color.parse(colorPool[i % colorPoolSize] || "#666"); + + // Each time we exhaust the colors in the pool we adjust + // a scaling factor used to produce more variations on + // those colors. The factor alternates negative/positive + // to produce lighter/darker colors. + + // Reset the variation after every few cycles, or else + // it will end up producing only white or black colors. + + if (i % colorPoolSize == 0 && i) { + if (variation >= 0) { + if (variation < 0.5) { + variation = -variation - 0.2; + } else variation = 0; + } else variation = -variation; + } + + colors[i] = c.scale('rgb', 1 + variation); + } + + // Finalize the series options, filling in their colors + + var colori = 0, s; + for (i = 0; i < series.length; ++i) { + s = series[i]; + + // assign colors + if (s.color == null) { + s.color = colors[colori].toString(); + ++colori; + } + else if (typeof s.color == "number") + s.color = colors[s.color].toString(); + + // turn on lines automatically in case nothing is set + if (s.lines.show == null) { + var v, show = true; + for (v in s) + if (s[v] && s[v].show) { + show = false; + break; + } + if (show) + s.lines.show = true; + } + + // If nothing was provided for lines.zero, default it to match + // lines.fill, since areas by default should extend to zero. + + if (s.lines.zero == null) { + s.lines.zero = !!s.lines.fill; + } + + // setup axes + s.xaxis = getOrCreateAxis(xaxes, axisNumber(s, "x")); + s.yaxis = getOrCreateAxis(yaxes, axisNumber(s, "y")); + } + } + + function processData() { + var topSentry = Number.POSITIVE_INFINITY, + bottomSentry = Number.NEGATIVE_INFINITY, + fakeInfinity = Number.MAX_VALUE, + i, j, k, m, length, + s, points, ps, x, y, axis, val, f, p, + data, format; + + function updateAxis(axis, min, max) { + if (min < axis.datamin && min != -fakeInfinity) + axis.datamin = min; + if (max > axis.datamax && max != fakeInfinity) + axis.datamax = max; + } + + $.each(allAxes(), function (_, axis) { + // init axis + axis.datamin = topSentry; + axis.datamax = bottomSentry; + axis.used = false; + }); + + for (i = 0; i < series.length; ++i) { + s = series[i]; + s.datapoints = { points: [] }; + + executeHooks(hooks.processRawData, [ s, s.data, s.datapoints ]); + } + + // first pass: clean and copy data + for (i = 0; i < series.length; ++i) { + s = series[i]; + + data = s.data; + format = s.datapoints.format; + + if (!format) { + format = []; + // find out how to copy + format.push({ x: true, number: true, required: true }); + format.push({ y: true, number: true, required: true }); + + if (s.bars.show || (s.lines.show && s.lines.fill)) { + var autoscale = !!((s.bars.show && s.bars.zero) || (s.lines.show && s.lines.zero)); + format.push({ y: true, number: true, required: false, defaultValue: 0, autoscale: autoscale }); + if (s.bars.horizontal) { + delete format[format.length - 1].y; + format[format.length - 1].x = true; + } + } + + s.datapoints.format = format; + } + + if (s.datapoints.pointsize != null) + continue; // already filled in + + s.datapoints.pointsize = format.length; + + ps = s.datapoints.pointsize; + points = s.datapoints.points; + + var insertSteps = s.lines.show && s.lines.steps; + s.xaxis.used = s.yaxis.used = true; + + for (j = k = 0; j < data.length; ++j, k += ps) { + p = data[j]; + + var nullify = p == null; + if (!nullify) { + for (m = 0; m < ps; ++m) { + val = p[m]; + f = format[m]; + + if (f) { + if (f.number && val != null) { + val = +val; // convert to number + if (isNaN(val)) + val = null; + else if (val == Infinity) + val = fakeInfinity; + else if (val == -Infinity) + val = -fakeInfinity; + } + + if (val == null) { + if (f.required) + nullify = true; + + if (f.defaultValue != null) + val = f.defaultValue; + } + } + + points[k + m] = val; + } + } + + if (nullify) { + for (m = 0; m < ps; ++m) { + val = points[k + m]; + if (val != null) { + f = format[m]; + // extract min/max info + if (f.x) + updateAxis(s.xaxis, val, val); + if (f.y) + updateAxis(s.yaxis, val, val); + } + points[k + m] = null; + } + } + else { + // a little bit of line specific stuff that + // perhaps shouldn't be here, but lacking + // better means... + if (insertSteps && k > 0 + && points[k - ps] != null + && points[k - ps] != points[k] + && points[k - ps + 1] != points[k + 1]) { + // copy the point to make room for a middle point + for (m = 0; m < ps; ++m) + points[k + ps + m] = points[k + m]; + + // middle point has same y + points[k + 1] = points[k - ps + 1]; + + // we've added a point, better reflect that + k += ps; + } + } + } + } + + // give the hooks a chance to run + for (i = 0; i < series.length; ++i) { + s = series[i]; + + executeHooks(hooks.processDatapoints, [ s, s.datapoints]); + } + + // second pass: find datamax/datamin for auto-scaling + for (i = 0; i < series.length; ++i) { + s = series[i]; + points = s.datapoints.points, + ps = s.datapoints.pointsize; + format = s.datapoints.format; + + var xmin = topSentry, ymin = topSentry, + xmax = bottomSentry, ymax = bottomSentry; + + for (j = 0; j < points.length; j += ps) { + if (points[j] == null) + continue; + + for (m = 0; m < ps; ++m) { + val = points[j + m]; + f = format[m]; + if (!f || f.autoscale === false || val == fakeInfinity || val == -fakeInfinity) + continue; + + if (f.x) { + if (val < xmin) + xmin = val; + if (val > xmax) + xmax = val; + } + if (f.y) { + if (val < ymin) + ymin = val; + if (val > ymax) + ymax = val; + } + } + } + + if (s.bars.show) { + // make sure we got room for the bar on the dancing floor + var delta; + + switch (s.bars.align) { + case "left": + delta = 0; + break; + case "right": + delta = -s.bars.barWidth; + break; + case "center": + delta = -s.bars.barWidth / 2; + break; + default: + throw new Error("Invalid bar alignment: " + s.bars.align); + } + + if (s.bars.horizontal) { + ymin += delta; + ymax += delta + s.bars.barWidth; + } + else { + xmin += delta; + xmax += delta + s.bars.barWidth; + } + } + + updateAxis(s.xaxis, xmin, xmax); + updateAxis(s.yaxis, ymin, ymax); + } + + $.each(allAxes(), function (_, axis) { + if (axis.datamin == topSentry) + axis.datamin = null; + if (axis.datamax == bottomSentry) + axis.datamax = null; + }); + } + + ////////////////////////////////////////////////////////////////////////////////// + // Returns the display's ratio between physical and device-independent pixels. + // + // This is the ratio between the width that the browser advertises and the number + // of pixels actually available in that space. The iPhone 4, for example, has a + // device-independent width of 320px, but its screen is actually 640px wide. It + // therefore has a pixel ratio of 2, while most normal devices have a ratio of 1. + + function getPixelRatio(cctx) { + var devicePixelRatio = window.devicePixelRatio || 1; + var backingStoreRatio = + cctx.webkitBackingStorePixelRatio || + cctx.mozBackingStorePixelRatio || + cctx.msBackingStorePixelRatio || + cctx.oBackingStorePixelRatio || + cctx.backingStorePixelRatio || 1; + + return devicePixelRatio / backingStoreRatio; + } + + function makeCanvas(cls) { + + var c = document.createElement('canvas'); + c.className = cls; + + $(c).css({ direction: "ltr", position: "absolute", left: 0, top: 0 }) + .appendTo(placeholder); + + // If HTML5 Canvas isn't available, fall back to Excanvas + + if (!c.getContext) { + if (window.G_vmlCanvasManager) { + c = window.G_vmlCanvasManager.initElement(c); + } else { + throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode."); + } + } + + var cctx = c.getContext("2d"); + + // Increase the canvas density based on the display's pixel ratio; basically + // giving the canvas more pixels without increasing the size of its element, + // to take advantage of the fact that retina displays have that many more + // pixels than they actually use for page & element widths. + + var pixelRatio = getPixelRatio(cctx); + + c.width = canvasWidth * pixelRatio; + c.height = canvasHeight * pixelRatio; + c.style.width = canvasWidth + "px"; + c.style.height = canvasHeight + "px"; + + // Save the context so we can reset in case we get replotted + + cctx.save(); + + // Scale the coordinate space to match the display density; so even though we + // may have twice as many pixels, we still want lines and other drawing to + // appear at the same size; the extra pixels will just make them crisper. + + cctx.scale(pixelRatio, pixelRatio); + + return c; + } + + function getCanvasDimensions() { + canvasWidth = placeholder.width(); + canvasHeight = placeholder.height(); + + if (canvasWidth <= 0 || canvasHeight <= 0) + throw new Error("Invalid dimensions for plot, width = " + canvasWidth + ", height = " + canvasHeight); + } + + function resizeCanvas(c) { + + var cctx = c.getContext("2d"); + + // Handle pixel ratios > 1 for retina displays, as explained in makeCanvas + + var pixelRatio = getPixelRatio(cctx); + + // Resizing should reset the state (excanvas seems to be buggy though) + + if (c.style.width != canvasWidth) { + c.width = canvasWidth * pixelRatio; + c.style.width = canvasWidth + "px"; + } + + if (c.style.height != canvasHeight) { + c.height = canvasHeight * pixelRatio; + c.style.height = canvasHeight + "px"; + } + + // so try to get back to the initial state (even if it's + // gone now, this should be safe according to the spec) + cctx.restore(); + + // and save again + cctx.save(); + + // Apply scaling for retina displays, as explained in makeCanvas + + cctx.scale(pixelRatio, pixelRatio); + } + + function setupCanvases() { + var reused, + existingCanvas = placeholder.children("canvas.flot-base"), + existingOverlay = placeholder.children("canvas.flot-overlay"); + + if (existingCanvas.length == 0 || existingOverlay == 0) { + // init everything + + placeholder.html(""); // make sure placeholder is clear + + placeholder.css({ padding: 0 }); // padding messes up the positioning + + if (placeholder.css("position") == 'static') + placeholder.css("position", "relative"); // for positioning labels and overlay + + getCanvasDimensions(); + + canvas = makeCanvas("flot-base"); + overlay = makeCanvas("flot-overlay"); // overlay canvas for interactive features + + reused = false; + } + else { + // reuse existing elements + + canvas = existingCanvas.get(0); + overlay = existingOverlay.get(0); + + reused = true; + } + + ctx = canvas.getContext("2d"); + octx = overlay.getContext("2d"); + + // define which element we're listening for events on + eventHolder = $(overlay); + + if (reused) { + // run shutdown in the old plot object + placeholder.data("plot").shutdown(); + + // reset reused canvases + plot.resize(); + + // make sure overlay pixels are cleared (canvas is cleared when we redraw) + octx.clearRect(0, 0, canvasWidth, canvasHeight); + + // then whack any remaining obvious garbage left + eventHolder.unbind(); + placeholder.children().not([canvas, overlay]).remove(); + } + + // save in case we get replotted + placeholder.data("plot", plot); + } + + function bindEvents() { + // bind events + if (options.grid.hoverable) { + eventHolder.mousemove(onMouseMove); + + // Use bind, rather than .mouseleave, because we officially + // still support jQuery 1.2.6, which doesn't define a shortcut + // for mouseenter or mouseleave. This was a bug/oversight that + // was fixed somewhere around 1.3.x. We can return to using + // .mouseleave when we drop support for 1.2.6. + + eventHolder.bind("mouseleave", onMouseLeave); + } + + if (options.grid.clickable) + eventHolder.click(onClick); + + executeHooks(hooks.bindEvents, [eventHolder]); + } + + function shutdown() { + if (redrawTimeout) + clearTimeout(redrawTimeout); + + eventHolder.unbind("mousemove", onMouseMove); + eventHolder.unbind("mouseleave", onMouseLeave); + eventHolder.unbind("click", onClick); + + executeHooks(hooks.shutdown, [eventHolder]); + } + + function setTransformationHelpers(axis) { + // set helper functions on the axis, assumes plot area + // has been computed already + + function identity(x) { return x; } + + var s, m, t = axis.options.transform || identity, + it = axis.options.inverseTransform; + + // precompute how much the axis is scaling a point + // in canvas space + if (axis.direction == "x") { + s = axis.scale = plotWidth / Math.abs(t(axis.max) - t(axis.min)); + m = Math.min(t(axis.max), t(axis.min)); + } + else { + s = axis.scale = plotHeight / Math.abs(t(axis.max) - t(axis.min)); + s = -s; + m = Math.max(t(axis.max), t(axis.min)); + } + + // data point to canvas coordinate + if (t == identity) // slight optimization + axis.p2c = function (p) { return (p - m) * s; }; + else + axis.p2c = function (p) { return (t(p) - m) * s; }; + // canvas coordinate to data point + if (!it) + axis.c2p = function (c) { return m + c / s; }; + else + axis.c2p = function (c) { return it(m + c / s); }; + } + + function measureTickLabels(axis) { + var opts = axis.options, ticks = axis.ticks || [], + axisw = opts.labelWidth || 0, axish = opts.labelHeight || 0, + f = axis.font; + + ctx.save(); + ctx.font = f.style + " " + f.variant + " " + f.weight + " " + f.size + "px '" + f.family + "'"; + + for (var i = 0; i < ticks.length; ++i) { + var t = ticks[i]; + + t.lines = []; + t.width = t.height = 0; + + if (!t.label) + continue; + + // accept various kinds of newlines, including HTML ones + // (you can actually split directly on regexps in Javascript, + // but IE < 9 is unfortunately broken) + var lines = (t.label + "").replace(/
|\r\n|\r/g, "\n").split("\n"); + for (var j = 0; j < lines.length; ++j) { + var line = { text: lines[j] }, + m = ctx.measureText(line.text); + + line.width = m.width; + // m.height might not be defined, not in the + // standard yet + line.height = m.height != null ? m.height : f.size; + + // add a bit of margin since font rendering is + // not pixel perfect and cut off letters look + // bad, this also doubles as spacing between + // lines + line.height += Math.round(f.size * 0.15); + + t.width = Math.max(line.width, t.width); + t.height += line.height; + + t.lines.push(line); + } + + if (opts.labelWidth == null) + axisw = Math.max(axisw, t.width); + if (opts.labelHeight == null) + axish = Math.max(axish, t.height); + } + ctx.restore(); + + axis.labelWidth = Math.ceil(axisw); + axis.labelHeight = Math.ceil(axish); + } + + function allocateAxisBoxFirstPhase(axis) { + // find the bounding box of the axis by looking at label + // widths/heights and ticks, make room by diminishing the + // plotOffset; this first phase only looks at one + // dimension per axis, the other dimension depends on the + // other axes so will have to wait + + var lw = axis.labelWidth, + lh = axis.labelHeight, + pos = axis.options.position, + tickLength = axis.options.tickLength, + axisMargin = options.grid.axisMargin, + padding = options.grid.labelMargin, + all = axis.direction == "x" ? xaxes : yaxes, + index, innermost; + + // determine axis margin + var samePosition = $.grep(all, function (a) { + return a && a.options.position == pos && a.reserveSpace; + }); + if ($.inArray(axis, samePosition) == samePosition.length - 1) + axisMargin = 0; // outermost + + // determine tick length - if we're innermost, we can use "full" + if (tickLength == null) { + var sameDirection = $.grep(all, function (a) { + return a && a.reserveSpace; + }); + + innermost = $.inArray(axis, sameDirection) == 0; + if (innermost) + tickLength = "full"; + else + tickLength = 5; + } + + if (!isNaN(+tickLength)) + padding += +tickLength; + + // compute box + if (axis.direction == "x") { + lh += padding; + + if (pos == "bottom") { + plotOffset.bottom += lh + axisMargin; + axis.box = { top: canvasHeight - plotOffset.bottom, height: lh }; + } + else { + axis.box = { top: plotOffset.top + axisMargin, height: lh }; + plotOffset.top += lh + axisMargin; + } + } + else { + lw += padding; + + if (pos == "left") { + axis.box = { left: plotOffset.left + axisMargin, width: lw }; + plotOffset.left += lw + axisMargin; + } + else { + plotOffset.right += lw + axisMargin; + axis.box = { left: canvasWidth - plotOffset.right, width: lw }; + } + } + + // save for future reference + axis.position = pos; + axis.tickLength = tickLength; + axis.box.padding = padding; + axis.innermost = innermost; + } + + function allocateAxisBoxSecondPhase(axis) { + // now that all axis boxes have been placed in one + // dimension, we can set the remaining dimension coordinates + if (axis.direction == "x") { + axis.box.left = plotOffset.left - axis.labelWidth / 2; + axis.box.width = canvasWidth - plotOffset.left - plotOffset.right + axis.labelWidth; + } + else { + axis.box.top = plotOffset.top - axis.labelHeight / 2; + axis.box.height = canvasHeight - plotOffset.bottom - plotOffset.top + axis.labelHeight; + } + } + + function adjustLayoutForThingsStickingOut() { + // possibly adjust plot offset to ensure everything stays + // inside the canvas and isn't clipped off + + var minMargin = options.grid.minBorderMargin, + margins = { x: 0, y: 0 }, i, axis; + + // check stuff from the plot (FIXME: this should just read + // a value from the series, otherwise it's impossible to + // customize) + if (minMargin == null) { + minMargin = 0; + for (i = 0; i < series.length; ++i) + minMargin = Math.max(minMargin, 2 * (series[i].points.radius + series[i].points.lineWidth/2)); + } + + margins.x = margins.y = Math.ceil(minMargin); + + // check axis labels, note we don't check the actual + // labels but instead use the overall width/height to not + // jump as much around with replots + $.each(allAxes(), function (_, axis) { + var dir = axis.direction; + if (axis.reserveSpace) + margins[dir] = Math.ceil(Math.max(margins[dir], (dir == "x" ? axis.labelWidth : axis.labelHeight) / 2)); + }); + + plotOffset.left = Math.max(margins.x, plotOffset.left); + plotOffset.right = Math.max(margins.x, plotOffset.right); + plotOffset.top = Math.max(margins.y, plotOffset.top); + plotOffset.bottom = Math.max(margins.y, plotOffset.bottom); + } + + function setupGrid() { + var i, axes = allAxes(), showGrid = options.grid.show; + + // Initialize the plot's offset from the edge of the canvas + + for (var a in plotOffset) { + var margin = options.grid.margin || 0; + plotOffset[a] = typeof margin == "number" ? margin : margin[a] || 0; + } + + executeHooks(hooks.processOffset, [plotOffset]); + + // If the grid is visible, add its border width to the offset + + for (var a in plotOffset) { + if(typeof(options.grid.borderWidth) == "object") { + plotOffset[a] += showGrid ? options.grid.borderWidth[a] : 0; + } + else { + plotOffset[a] += showGrid ? options.grid.borderWidth : 0; + } + } + + // init axes + $.each(axes, function (_, axis) { + axis.show = axis.options.show; + if (axis.show == null) + axis.show = axis.used; // by default an axis is visible if it's got data + + axis.reserveSpace = axis.show || axis.options.reserveSpace; + + setRange(axis); + }); + + if (showGrid) { + // determine from the placeholder the font size ~ height of font ~ 1 em + var fontDefaults = { + style: placeholder.css("font-style"), + size: Math.round(0.8 * (+placeholder.css("font-size").replace("px", "") || 13)), + variant: placeholder.css("font-variant"), + weight: placeholder.css("font-weight"), + family: placeholder.css("font-family") + }; + + var allocatedAxes = $.grep(axes, function (axis) { return axis.reserveSpace; }); + + $.each(allocatedAxes, function (_, axis) { + // make the ticks + setupTickGeneration(axis); + setTicks(axis); + snapRangeToTicks(axis, axis.ticks); + + // find labelWidth/Height for axis + axis.font = $.extend({}, fontDefaults, axis.options.font); + measureTickLabels(axis); + }); + + // with all dimensions calculated, we can compute the + // axis bounding boxes, start from the outside + // (reverse order) + for (i = allocatedAxes.length - 1; i >= 0; --i) + allocateAxisBoxFirstPhase(allocatedAxes[i]); + + // make sure we've got enough space for things that + // might stick out + adjustLayoutForThingsStickingOut(); + + $.each(allocatedAxes, function (_, axis) { + allocateAxisBoxSecondPhase(axis); + }); + } + + plotWidth = canvasWidth - plotOffset.left - plotOffset.right; + plotHeight = canvasHeight - plotOffset.bottom - plotOffset.top; + + // now we got the proper plot dimensions, we can compute the scaling + $.each(axes, function (_, axis) { + setTransformationHelpers(axis); + }); + + insertLegend(); + } + + function setRange(axis) { + var opts = axis.options, + min = +(opts.min != null ? opts.min : axis.datamin), + max = +(opts.max != null ? opts.max : axis.datamax), + delta = max - min; + + if (delta == 0.0) { + // degenerate case + var widen = max == 0 ? 1 : 0.01; + + if (opts.min == null) + min -= widen; + // always widen max if we couldn't widen min to ensure we + // don't fall into min == max which doesn't work + if (opts.max == null || opts.min != null) + max += widen; + } + else { + // consider autoscaling + var margin = opts.autoscaleMargin; + if (margin != null) { + if (opts.min == null) { + min -= delta * margin; + // make sure we don't go below zero if all values + // are positive + if (min < 0 && axis.datamin != null && axis.datamin >= 0) + min = 0; + } + if (opts.max == null) { + max += delta * margin; + if (max > 0 && axis.datamax != null && axis.datamax <= 0) + max = 0; + } + } + } + axis.min = min; + axis.max = max; + } + + function setupTickGeneration(axis) { + var opts = axis.options; + + // estimate number of ticks + var noTicks; + if (typeof opts.ticks == "number" && opts.ticks > 0) + noTicks = opts.ticks; + else + // heuristic based on the model a*sqrt(x) fitted to + // some data points that seemed reasonable + noTicks = 0.3 * Math.sqrt(axis.direction == "x" ? canvasWidth : canvasHeight); + + axis.delta = (axis.max - axis.min) / noTicks; + + // Time mode was moved to a plug-in in 0.8, but since so many people use this + // we'll add an especially friendly make sure they remembered to include it. + + if (opts.mode == "time" && !axis.tickGenerator) { + throw new Error("Time mode requires the flot.time plugin."); + } + + // Flot supports base-10 axes; any other mode else is handled by a plug-in, + // like flot.time.js. + + if (!axis.tickGenerator) { + + axis.tickGenerator = function (axis) { + var maxDec = opts.tickDecimals, + dec = -Math.floor(Math.log(axis.delta) / Math.LN10); + + if (maxDec != null && dec > maxDec) + dec = maxDec; + + var magn = Math.pow(10, -dec), + norm = axis.delta / magn, // norm is between 1.0 and 10.0 + size, + + ticks = [], + start, + i = 0, + v = Number.NaN, + prev; + + if (norm < 1.5) + size = 1; + else if (norm < 3) { + size = 2; + // special case for 2.5, requires an extra decimal + if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) { + size = 2.5; + ++dec; + } + } + else if (norm < 7.5) + size = 5; + else size = 10; + + size *= magn; + + if (opts.minTickSize != null && size < opts.minTickSize) + size = opts.minTickSize; + + axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec); + axis.tickSize = opts.tickSize || size; + + start = floorInBase(axis.min, axis.tickSize) + + do { + prev = v; + v = start + i * axis.tickSize; + ticks.push(v); + ++i; + } while (v < axis.max && v != prev); + return ticks; + }; + + axis.tickFormatter = function (value, axis) { + + var factor = Math.pow(10, axis.tickDecimals); + var formatted = "" + Math.round(value * factor) / factor; + + // If tickDecimals was specified, ensure that we have exactly that + // much precision; otherwise default to the value's own precision. + + if (axis.tickDecimals != null) { + var decimal = formatted.indexOf("."); + var precision = decimal == -1 ? 0 : formatted.length - decimal - 1; + if (precision < axis.tickDecimals) { + return (precision ? formatted : formatted + ".") + ("" + factor).substr(1, axis.tickDecimals - precision); + } + } + + return formatted; + }; + } + + if ($.isFunction(opts.tickFormatter)) + axis.tickFormatter = function (v, axis) { return "" + opts.tickFormatter(v, axis); }; + + if (opts.alignTicksWithAxis != null) { + var otherAxis = (axis.direction == "x" ? xaxes : yaxes)[opts.alignTicksWithAxis - 1]; + if (otherAxis && otherAxis.used && otherAxis != axis) { + // consider snapping min/max to outermost nice ticks + var niceTicks = axis.tickGenerator(axis); + if (niceTicks.length > 0) { + if (opts.min == null) + axis.min = Math.min(axis.min, niceTicks[0]); + if (opts.max == null && niceTicks.length > 1) + axis.max = Math.max(axis.max, niceTicks[niceTicks.length - 1]); + } + + axis.tickGenerator = function (axis) { + // copy ticks, scaled to this axis + var ticks = [], v, i; + for (i = 0; i < otherAxis.ticks.length; ++i) { + v = (otherAxis.ticks[i].v - otherAxis.min) / (otherAxis.max - otherAxis.min); + v = axis.min + v * (axis.max - axis.min); + ticks.push(v); + } + return ticks; + }; + + // we might need an extra decimal since forced + // ticks don't necessarily fit naturally + if (!axis.mode && opts.tickDecimals == null) { + var extraDec = Math.max(0, -Math.floor(Math.log(axis.delta) / Math.LN10) + 1), + ts = axis.tickGenerator(axis); + + // only proceed if the tick interval rounded + // with an extra decimal doesn't give us a + // zero at end + if (!(ts.length > 1 && /\..*0$/.test((ts[1] - ts[0]).toFixed(extraDec)))) + axis.tickDecimals = extraDec; + } + } + } + } + + function setTicks(axis) { + var oticks = axis.options.ticks, ticks = []; + if (oticks == null || (typeof oticks == "number" && oticks > 0)) + ticks = axis.tickGenerator(axis); + else if (oticks) { + if ($.isFunction(oticks)) + // generate the ticks + ticks = oticks(axis); + else + ticks = oticks; + } + + // clean up/labelify the supplied ticks, copy them over + var i, v; + axis.ticks = []; + for (i = 0; i < ticks.length; ++i) { + var label = null; + var t = ticks[i]; + if (typeof t == "object") { + v = +t[0]; + if (t.length > 1) + label = t[1]; + } + else + v = +t; + if (label == null) + label = axis.tickFormatter(v, axis); + if (!isNaN(v)) + axis.ticks.push({ v: v, label: label }); + } + } + + function snapRangeToTicks(axis, ticks) { + if (axis.options.autoscaleMargin && ticks.length > 0) { + // snap to ticks + if (axis.options.min == null) + axis.min = Math.min(axis.min, ticks[0].v); + if (axis.options.max == null && ticks.length > 1) + axis.max = Math.max(axis.max, ticks[ticks.length - 1].v); + } + } + + function draw() { + ctx.clearRect(0, 0, canvasWidth, canvasHeight); + + executeHooks(hooks.drawBackground, [ctx]); + + var grid = options.grid; + + // draw background, if any + if (grid.show && grid.backgroundColor) + drawBackground(); + + if (grid.show && !grid.aboveData) { + drawGrid(); + drawAxisLabels(); + } + + for (var i = 0; i < series.length; ++i) { + executeHooks(hooks.drawSeries, [ctx, series[i]]); + drawSeries(series[i]); + } + + executeHooks(hooks.draw, [ctx]); + + if (grid.show && grid.aboveData) { + drawGrid(); + drawAxisLabels(); + } + } + + function extractRange(ranges, coord) { + var axis, from, to, key, axes = allAxes(); + + for (var i = 0; i < axes.length; ++i) { + axis = axes[i]; + if (axis.direction == coord) { + key = coord + axis.n + "axis"; + if (!ranges[key] && axis.n == 1) + key = coord + "axis"; // support x1axis as xaxis + if (ranges[key]) { + from = ranges[key].from; + to = ranges[key].to; + break; + } + } + } + + // backwards-compat stuff - to be removed in future + if (!ranges[key]) { + axis = coord == "x" ? xaxes[0] : yaxes[0]; + from = ranges[coord + "1"]; + to = ranges[coord + "2"]; + } + + // auto-reverse as an added bonus + if (from != null && to != null && from > to) { + var tmp = from; + from = to; + to = tmp; + } + + return { from: from, to: to, axis: axis }; + } + + function drawBackground() { + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + ctx.fillStyle = getColorOrGradient(options.grid.backgroundColor, plotHeight, 0, "rgba(255, 255, 255, 0)"); + ctx.fillRect(0, 0, plotWidth, plotHeight); + ctx.restore(); + } + + function drawGrid() { + var i, axes, bw, bc; + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + // draw markings + var markings = options.grid.markings; + if (markings) { + if ($.isFunction(markings)) { + axes = plot.getAxes(); + // xmin etc. is backwards compatibility, to be + // removed in the future + axes.xmin = axes.xaxis.min; + axes.xmax = axes.xaxis.max; + axes.ymin = axes.yaxis.min; + axes.ymax = axes.yaxis.max; + + markings = markings(axes); + } + + for (i = 0; i < markings.length; ++i) { + var m = markings[i], + xrange = extractRange(m, "x"), + yrange = extractRange(m, "y"); + + // fill in missing + if (xrange.from == null) + xrange.from = xrange.axis.min; + if (xrange.to == null) + xrange.to = xrange.axis.max; + if (yrange.from == null) + yrange.from = yrange.axis.min; + if (yrange.to == null) + yrange.to = yrange.axis.max; + + // clip + if (xrange.to < xrange.axis.min || xrange.from > xrange.axis.max || + yrange.to < yrange.axis.min || yrange.from > yrange.axis.max) + continue; + + xrange.from = Math.max(xrange.from, xrange.axis.min); + xrange.to = Math.min(xrange.to, xrange.axis.max); + yrange.from = Math.max(yrange.from, yrange.axis.min); + yrange.to = Math.min(yrange.to, yrange.axis.max); + + if (xrange.from == xrange.to && yrange.from == yrange.to) + continue; + + // then draw + xrange.from = xrange.axis.p2c(xrange.from); + xrange.to = xrange.axis.p2c(xrange.to); + yrange.from = yrange.axis.p2c(yrange.from); + yrange.to = yrange.axis.p2c(yrange.to); + + if (xrange.from == xrange.to || yrange.from == yrange.to) { + // draw line + ctx.beginPath(); + ctx.strokeStyle = m.color || options.grid.markingsColor; + ctx.lineWidth = m.lineWidth || options.grid.markingsLineWidth; + ctx.moveTo(xrange.from, yrange.from); + ctx.lineTo(xrange.to, yrange.to); + ctx.stroke(); + } + else { + // fill area + ctx.fillStyle = m.color || options.grid.markingsColor; + ctx.fillRect(xrange.from, yrange.to, + xrange.to - xrange.from, + yrange.from - yrange.to); + } + } + } + + // draw the ticks + axes = allAxes(); + bw = options.grid.borderWidth; + + for (var j = 0; j < axes.length; ++j) { + var axis = axes[j], box = axis.box, + t = axis.tickLength, x, y, xoff, yoff; + if (!axis.show || axis.ticks.length == 0) + continue; + + ctx.strokeStyle = axis.options.tickColor || $.color.parse(axis.options.color).scale('a', 0.22).toString(); + ctx.lineWidth = 1; + + // find the edges + if (axis.direction == "x") { + x = 0; + if (t == "full") + y = (axis.position == "top" ? 0 : plotHeight); + else + y = box.top - plotOffset.top + (axis.position == "top" ? box.height : 0); + } + else { + y = 0; + if (t == "full") + x = (axis.position == "left" ? 0 : plotWidth); + else + x = box.left - plotOffset.left + (axis.position == "left" ? box.width : 0); + } + + // draw tick bar + if (!axis.innermost) { + ctx.beginPath(); + xoff = yoff = 0; + if (axis.direction == "x") + xoff = plotWidth; + else + yoff = plotHeight; + + if (ctx.lineWidth == 1) { + x = Math.floor(x) + 0.5; + y = Math.floor(y) + 0.5; + } + + ctx.moveTo(x, y); + ctx.lineTo(x + xoff, y + yoff); + ctx.stroke(); + } + + // draw ticks + ctx.beginPath(); + for (i = 0; i < axis.ticks.length; ++i) { + var v = axis.ticks[i].v; + + xoff = yoff = 0; + + if (v < axis.min || v > axis.max + // skip those lying on the axes if we got a border + || (t == "full" + && ((typeof bw == "object" && bw[axis.position] > 0) || bw > 0) + && (v == axis.min || v == axis.max))) + continue; + + if (axis.direction == "x") { + x = axis.p2c(v); + yoff = t == "full" ? -plotHeight : t; + + if (axis.position == "top") + yoff = -yoff; + } + else { + y = axis.p2c(v); + xoff = t == "full" ? -plotWidth : t; + + if (axis.position == "left") + xoff = -xoff; + } + + if (ctx.lineWidth == 1) { + if (axis.direction == "x") + x = Math.floor(x) + 0.5; + else + y = Math.floor(y) + 0.5; + } + + ctx.moveTo(x, y); + ctx.lineTo(x + xoff, y + yoff); + } + + ctx.stroke(); + } + + + // draw border + if (bw) { + // If either borderWidth or borderColor is an object, then draw the border + // line by line instead of as one rectangle + bc = options.grid.borderColor; + if(typeof bw == "object" || typeof bc == "object") { + if (typeof bw !== "object") { + bw = {top: bw, right: bw, bottom: bw, left: bw}; + } + if (typeof bc !== "object") { + bc = {top: bc, right: bc, bottom: bc, left: bc}; + } + + if (bw.top > 0) { + ctx.strokeStyle = bc.top; + ctx.lineWidth = bw.top; + ctx.beginPath(); + ctx.moveTo(0 - bw.left, 0 - bw.top/2); + ctx.lineTo(plotWidth, 0 - bw.top/2); + ctx.stroke(); + } + + if (bw.right > 0) { + ctx.strokeStyle = bc.right; + ctx.lineWidth = bw.right; + ctx.beginPath(); + ctx.moveTo(plotWidth + bw.right / 2, 0 - bw.top); + ctx.lineTo(plotWidth + bw.right / 2, plotHeight); + ctx.stroke(); + } + + if (bw.bottom > 0) { + ctx.strokeStyle = bc.bottom; + ctx.lineWidth = bw.bottom; + ctx.beginPath(); + ctx.moveTo(plotWidth + bw.right, plotHeight + bw.bottom / 2); + ctx.lineTo(0, plotHeight + bw.bottom / 2); + ctx.stroke(); + } + + if (bw.left > 0) { + ctx.strokeStyle = bc.left; + ctx.lineWidth = bw.left; + ctx.beginPath(); + ctx.moveTo(0 - bw.left/2, plotHeight + bw.bottom); + ctx.lineTo(0- bw.left/2, 0); + ctx.stroke(); + } + } + else { + ctx.lineWidth = bw; + ctx.strokeStyle = options.grid.borderColor; + ctx.strokeRect(-bw/2, -bw/2, plotWidth + bw, plotHeight + bw); + } + } + + ctx.restore(); + } + + function drawAxisLabels() { + ctx.save(); + + $.each(allAxes(), function (_, axis) { + if (!axis.show || axis.ticks.length == 0) + return; + + var box = axis.box, f = axis.font; + // placeholder.append('
') // debug + + ctx.fillStyle = axis.options.color; + // Important: Don't use quotes around axis.font.family! Just around single + // font names like 'Times New Roman' that have a space or special character in it. + ctx.font = f.style + " " + f.variant + " " + f.weight + " " + f.size + "px " + f.family; + ctx.textAlign = "start"; + // middle align the labels - top would be more + // natural, but browsers can differ a pixel or two in + // where they consider the top to be, so instead we + // middle align to minimize variation between browsers + // and compensate when calculating the coordinates + ctx.textBaseline = "middle"; + + for (var i = 0; i < axis.ticks.length; ++i) { + var tick = axis.ticks[i]; + if (!tick.label || tick.v < axis.min || tick.v > axis.max) + continue; + + var x, y, offset = 0, line; + for (var k = 0; k < tick.lines.length; ++k) { + line = tick.lines[k]; + + if (axis.direction == "x") { + x = plotOffset.left + axis.p2c(tick.v) - line.width/2; + if (axis.position == "bottom") + y = box.top + box.padding; + else + y = box.top + box.height - box.padding - tick.height; + } + else { + y = plotOffset.top + axis.p2c(tick.v) - tick.height/2; + if (axis.position == "left") + x = box.left + box.width - box.padding - line.width; + else + x = box.left + box.padding; + } + + // account for middle aligning and line number + y += line.height/2 + offset; + offset += line.height; + + if (!!(window.opera && window.opera.version().split('.')[0] < 12)) { + // FIXME: LEGACY BROWSER FIX + // AFFECTS: Opera < 12.00 + + // round the coordinates since Opera + // otherwise switches to more ugly + // rendering (probably non-hinted) and + // offset the y coordinates since it seems + // to be off pretty consistently compared + // to the other browsers + x = Math.floor(x); + y = Math.ceil(y - 2); + } + ctx.fillText(line.text, x, y); + } + } + }); + + ctx.restore(); + } + + function drawSeries(series) { + if (series.lines.show) + drawSeriesLines(series); + if (series.bars.show) + drawSeriesBars(series); + if (series.points.show) + drawSeriesPoints(series); + } + + function drawSeriesLines(series) { + function plotLine(datapoints, xoffset, yoffset, axisx, axisy) { + var points = datapoints.points, + ps = datapoints.pointsize, + prevx = null, prevy = null; + + ctx.beginPath(); + for (var i = ps; i < points.length; i += ps) { + var x1 = points[i - ps], y1 = points[i - ps + 1], + x2 = points[i], y2 = points[i + 1]; + + if (x1 == null || x2 == null) + continue; + + // clip with ymin + if (y1 <= y2 && y1 < axisy.min) { + if (y2 < axisy.min) + continue; // line segment is outside + // compute new intersection point + x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.min; + } + else if (y2 <= y1 && y2 < axisy.min) { + if (y1 < axisy.min) + continue; + x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.min; + } + + // clip with ymax + if (y1 >= y2 && y1 > axisy.max) { + if (y2 > axisy.max) + continue; + x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.max; + } + else if (y2 >= y1 && y2 > axisy.max) { + if (y1 > axisy.max) + continue; + x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.max; + } + + // clip with xmin + if (x1 <= x2 && x1 < axisx.min) { + if (x2 < axisx.min) + continue; + y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.min; + } + else if (x2 <= x1 && x2 < axisx.min) { + if (x1 < axisx.min) + continue; + y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.min; + } + + // clip with xmax + if (x1 >= x2 && x1 > axisx.max) { + if (x2 > axisx.max) + continue; + y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.max; + } + else if (x2 >= x1 && x2 > axisx.max) { + if (x1 > axisx.max) + continue; + y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.max; + } + + if (x1 != prevx || y1 != prevy) + ctx.moveTo(axisx.p2c(x1) + xoffset, axisy.p2c(y1) + yoffset); + + prevx = x2; + prevy = y2; + ctx.lineTo(axisx.p2c(x2) + xoffset, axisy.p2c(y2) + yoffset); + } + ctx.stroke(); + } + + function plotLineArea(datapoints, axisx, axisy) { + var points = datapoints.points, + ps = datapoints.pointsize, + bottom = Math.min(Math.max(0, axisy.min), axisy.max), + i = 0, top, areaOpen = false, + ypos = 1, segmentStart = 0, segmentEnd = 0; + + // we process each segment in two turns, first forward + // direction to sketch out top, then once we hit the + // end we go backwards to sketch the bottom + while (true) { + if (ps > 0 && i > points.length + ps) + break; + + i += ps; // ps is negative if going backwards + + var x1 = points[i - ps], + y1 = points[i - ps + ypos], + x2 = points[i], y2 = points[i + ypos]; + + if (areaOpen) { + if (ps > 0 && x1 != null && x2 == null) { + // at turning point + segmentEnd = i; + ps = -ps; + ypos = 2; + continue; + } + + if (ps < 0 && i == segmentStart + ps) { + // done with the reverse sweep + ctx.fill(); + areaOpen = false; + ps = -ps; + ypos = 1; + i = segmentStart = segmentEnd + ps; + continue; + } + } + + if (x1 == null || x2 == null) + continue; + + // clip x values + + // clip with xmin + if (x1 <= x2 && x1 < axisx.min) { + if (x2 < axisx.min) + continue; + y1 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.min; + } + else if (x2 <= x1 && x2 < axisx.min) { + if (x1 < axisx.min) + continue; + y2 = (axisx.min - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.min; + } + + // clip with xmax + if (x1 >= x2 && x1 > axisx.max) { + if (x2 > axisx.max) + continue; + y1 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x1 = axisx.max; + } + else if (x2 >= x1 && x2 > axisx.max) { + if (x1 > axisx.max) + continue; + y2 = (axisx.max - x1) / (x2 - x1) * (y2 - y1) + y1; + x2 = axisx.max; + } + + if (!areaOpen) { + // open area + ctx.beginPath(); + ctx.moveTo(axisx.p2c(x1), axisy.p2c(bottom)); + areaOpen = true; + } + + // now first check the case where both is outside + if (y1 >= axisy.max && y2 >= axisy.max) { + ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.max)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.max)); + continue; + } + else if (y1 <= axisy.min && y2 <= axisy.min) { + ctx.lineTo(axisx.p2c(x1), axisy.p2c(axisy.min)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(axisy.min)); + continue; + } + + // else it's a bit more complicated, there might + // be a flat maxed out rectangle first, then a + // triangular cutout or reverse; to find these + // keep track of the current x values + var x1old = x1, x2old = x2; + + // clip the y values, without shortcutting, we + // go through all cases in turn + + // clip with ymin + if (y1 <= y2 && y1 < axisy.min && y2 >= axisy.min) { + x1 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.min; + } + else if (y2 <= y1 && y2 < axisy.min && y1 >= axisy.min) { + x2 = (axisy.min - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.min; + } + + // clip with ymax + if (y1 >= y2 && y1 > axisy.max && y2 <= axisy.max) { + x1 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y1 = axisy.max; + } + else if (y2 >= y1 && y2 > axisy.max && y1 <= axisy.max) { + x2 = (axisy.max - y1) / (y2 - y1) * (x2 - x1) + x1; + y2 = axisy.max; + } + + // if the x value was changed we got a rectangle + // to fill + if (x1 != x1old) { + ctx.lineTo(axisx.p2c(x1old), axisy.p2c(y1)); + // it goes to (x1, y1), but we fill that below + } + + // fill triangular section, this sometimes result + // in redundant points if (x1, y1) hasn't changed + // from previous line to, but we just ignore that + ctx.lineTo(axisx.p2c(x1), axisy.p2c(y1)); + ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); + + // fill the other rectangle if it's there + if (x2 != x2old) { + ctx.lineTo(axisx.p2c(x2), axisy.p2c(y2)); + ctx.lineTo(axisx.p2c(x2old), axisy.p2c(y2)); + } + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + ctx.lineJoin = "round"; + + var lw = series.lines.lineWidth, + sw = series.shadowSize; + // FIXME: consider another form of shadow when filling is turned on + if (lw > 0 && sw > 0) { + // draw shadow as a thick and thin line with transparency + ctx.lineWidth = sw; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + // position shadow at angle from the mid of line + var angle = Math.PI/18; + plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/2), Math.cos(angle) * (lw/2 + sw/2), series.xaxis, series.yaxis); + ctx.lineWidth = sw/2; + plotLine(series.datapoints, Math.sin(angle) * (lw/2 + sw/4), Math.cos(angle) * (lw/2 + sw/4), series.xaxis, series.yaxis); + } + + ctx.lineWidth = lw; + ctx.strokeStyle = series.color; + var fillStyle = getFillStyle(series.lines, series.color, 0, plotHeight); + if (fillStyle) { + ctx.fillStyle = fillStyle; + plotLineArea(series.datapoints, series.xaxis, series.yaxis); + } + + if (lw > 0) + plotLine(series.datapoints, 0, 0, series.xaxis, series.yaxis); + ctx.restore(); + } + + function drawSeriesPoints(series) { + function plotPoints(datapoints, radius, fillStyle, offset, shadow, axisx, axisy, symbol) { + var points = datapoints.points, ps = datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + var x = points[i], y = points[i + 1]; + if (x == null || x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) + continue; + + ctx.beginPath(); + x = axisx.p2c(x); + y = axisy.p2c(y) + offset; + if (symbol == "circle") + ctx.arc(x, y, radius, 0, shadow ? Math.PI : Math.PI * 2, false); + else + symbol(ctx, x, y, radius, shadow); + ctx.closePath(); + + if (fillStyle) { + ctx.fillStyle = fillStyle; + ctx.fill(); + } + ctx.stroke(); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + var lw = series.points.lineWidth, + sw = series.shadowSize, + radius = series.points.radius, + symbol = series.points.symbol; + if (lw > 0 && sw > 0) { + // draw shadow in two steps + var w = sw / 2; + ctx.lineWidth = w; + ctx.strokeStyle = "rgba(0,0,0,0.1)"; + plotPoints(series.datapoints, radius, null, w + w/2, true, + series.xaxis, series.yaxis, symbol); + + ctx.strokeStyle = "rgba(0,0,0,0.2)"; + plotPoints(series.datapoints, radius, null, w/2, true, + series.xaxis, series.yaxis, symbol); + } + + ctx.lineWidth = lw; + ctx.strokeStyle = series.color; + plotPoints(series.datapoints, radius, + getFillStyle(series.points, series.color), 0, false, + series.xaxis, series.yaxis, symbol); + ctx.restore(); + } + + function drawBar(x, y, b, barLeft, barRight, offset, fillStyleCallback, axisx, axisy, c, horizontal, lineWidth) { + var left, right, bottom, top, + drawLeft, drawRight, drawTop, drawBottom, + tmp; + + // in horizontal mode, we start the bar from the left + // instead of from the bottom so it appears to be + // horizontal rather than vertical + if (horizontal) { + drawBottom = drawRight = drawTop = true; + drawLeft = false; + left = b; + right = x; + top = y + barLeft; + bottom = y + barRight; + + // account for negative bars + if (right < left) { + tmp = right; + right = left; + left = tmp; + drawLeft = true; + drawRight = false; + } + } + else { + drawLeft = drawRight = drawTop = true; + drawBottom = false; + left = x + barLeft; + right = x + barRight; + bottom = b; + top = y; + + // account for negative bars + if (top < bottom) { + tmp = top; + top = bottom; + bottom = tmp; + drawBottom = true; + drawTop = false; + } + } + + // clip + if (right < axisx.min || left > axisx.max || + top < axisy.min || bottom > axisy.max) + return; + + if (left < axisx.min) { + left = axisx.min; + drawLeft = false; + } + + if (right > axisx.max) { + right = axisx.max; + drawRight = false; + } + + if (bottom < axisy.min) { + bottom = axisy.min; + drawBottom = false; + } + + if (top > axisy.max) { + top = axisy.max; + drawTop = false; + } + + left = axisx.p2c(left); + bottom = axisy.p2c(bottom); + right = axisx.p2c(right); + top = axisy.p2c(top); + + // fill the bar + if (fillStyleCallback) { + c.beginPath(); + c.moveTo(left, bottom); + c.lineTo(left, top); + c.lineTo(right, top); + c.lineTo(right, bottom); + c.fillStyle = fillStyleCallback(bottom, top); + c.fill(); + } + + // draw outline + if (lineWidth > 0 && (drawLeft || drawRight || drawTop || drawBottom)) { + c.beginPath(); + + // FIXME: inline moveTo is buggy with excanvas + c.moveTo(left, bottom + offset); + if (drawLeft) + c.lineTo(left, top + offset); + else + c.moveTo(left, top + offset); + if (drawTop) + c.lineTo(right, top + offset); + else + c.moveTo(right, top + offset); + if (drawRight) + c.lineTo(right, bottom + offset); + else + c.moveTo(right, bottom + offset); + if (drawBottom) + c.lineTo(left, bottom + offset); + else + c.moveTo(left, bottom + offset); + c.stroke(); + } + } + + function drawSeriesBars(series) { + function plotBars(datapoints, barLeft, barRight, offset, fillStyleCallback, axisx, axisy) { + var points = datapoints.points, ps = datapoints.pointsize; + + for (var i = 0; i < points.length; i += ps) { + if (points[i] == null) + continue; + drawBar(points[i], points[i + 1], points[i + 2], barLeft, barRight, offset, fillStyleCallback, axisx, axisy, ctx, series.bars.horizontal, series.bars.lineWidth); + } + } + + ctx.save(); + ctx.translate(plotOffset.left, plotOffset.top); + + // FIXME: figure out a way to add shadows (for instance along the right edge) + ctx.lineWidth = series.bars.lineWidth; + ctx.strokeStyle = series.color; + + var barLeft; + + switch (series.bars.align) { + case "left": + barLeft = 0; + break; + case "right": + barLeft = -series.bars.barWidth; + break; + case "center": + barLeft = -series.bars.barWidth / 2; + break; + default: + throw new Error("Invalid bar alignment: " + series.bars.align); + } + + var fillStyleCallback = series.bars.fill ? function (bottom, top) { return getFillStyle(series.bars, series.color, bottom, top); } : null; + plotBars(series.datapoints, barLeft, barLeft + series.bars.barWidth, 0, fillStyleCallback, series.xaxis, series.yaxis); + ctx.restore(); + } + + function getFillStyle(filloptions, seriesColor, bottom, top) { + var fill = filloptions.fill; + if (!fill) + return null; + + if (filloptions.fillColor) + return getColorOrGradient(filloptions.fillColor, bottom, top, seriesColor); + + var c = $.color.parse(seriesColor); + c.a = typeof fill == "number" ? fill : 0.4; + c.normalize(); + return c.toString(); + } + + function insertLegend() { + + placeholder.find(".legend").remove(); + + if (!options.legend.show) + return; + + var fragments = [], entries = [], rowStarted = false, + lf = options.legend.labelFormatter, s, label; + + // Build a list of legend entries, with each having a label and a color + + for (var i = 0; i < series.length; ++i) { + s = series[i]; + if (s.label) { + label = lf ? lf(s.label, s) : s.label; + if (label) { + entries.push({ + label: label, + color: s.color + }); + } + } + } + + // Sort the legend using either the default or a custom comparator + + if (options.legend.sorted) { + if ($.isFunction(options.legend.sorted)) { + entries.sort(options.legend.sorted); + } else { + var ascending = options.legend.sorted != "descending"; + entries.sort(function(a, b) { + return a.label == b.label ? 0 : ( + (a.label < b.label) != ascending ? 1 : -1 // Logical XOR + ); + }); + } + } + + // Generate markup for the list of entries, in their final order + + for (var i = 0; i < entries.length; ++i) { + + var entry = entries[i]; + + if (i % options.legend.noColumns == 0) { + if (rowStarted) + fragments.push(''); + fragments.push('
'); + rowStarted = true; + } + + fragments.push( + '' + + '' + ); + } + + if (rowStarted) + fragments.push(''); + + if (fragments.length == 0) + return; + + var table = '
$context|",(($end_or_die) ? 'true' : 'false'),"|$token|" . max($return_status) . "$context|",(($end_or_die) ? 'true' : 'false'),"|$token|" . max($return_status) . "
' + entry.label + '
' + fragments.join("") + '
'; + if (options.legend.container != null) + var legend = $(options.legend.container).html(table); + else { + var pos = "", + p = options.legend.position, + m = options.legend.margin; + if (m[0] == null) + m = [m, m]; + if (p.charAt(0) == "n") + pos += 'top:' + (m[1] + plotOffset.top) + 'px;'; + else if (p.charAt(0) == "s") + pos += 'bottom:' + (m[1] + plotOffset.bottom) + 'px;'; + if (p.charAt(1) == "e") + pos += 'right:' + (m[0] + plotOffset.right) + 'px;'; + else if (p.charAt(1) == "w") + pos += 'left:' + (m[0] + plotOffset.left) + 'px;'; + var legend = $('
' + table.replace('style="', 'style="position:absolute;' + pos +';') + '
').appendTo(placeholder); + if (options.legend.backgroundOpacity != 0.0) { + // put in the transparent background + // separately to avoid blended labels and + // label boxes + var c = options.legend.backgroundColor; + if (c == null) { + c = options.grid.backgroundColor; + if (c && typeof c == "string") + c = $.color.parse(c); + else + c = $.color.extract(legend, 'background-color'); + c.a = 1; + c = c.toString(); + } + var div = legend.children(); + $('
').prependTo(legend).css('opacity', options.legend.backgroundOpacity); + } + + executeHooks(hooks.legendInserted, [legend]); + } + + executeHooks(hooks.legendInserted, [legend]); + } + + + // interactive features + + var highlights = [], + redrawTimeout = null; + + // returns the data item the mouse is over, or null if none is found + function findNearbyItem(mouseX, mouseY, seriesFilter) { + var maxDistance = options.grid.mouseActiveRadius, + smallestDistance = maxDistance * maxDistance + 1, + item = null, foundPoint = false, i, j, ps; + + for (i = series.length - 1; i >= 0; --i) { + if (!seriesFilter(series[i])) + continue; + + var s = series[i], + axisx = s.xaxis, + axisy = s.yaxis, + points = s.datapoints.points, + mx = axisx.c2p(mouseX), // precompute some stuff to make the loop faster + my = axisy.c2p(mouseY), + maxx = maxDistance / axisx.scale, + maxy = maxDistance / axisy.scale; + + ps = s.datapoints.pointsize; + // with inverse transforms, we can't use the maxx/maxy + // optimization, sadly + if (axisx.options.inverseTransform) + maxx = Number.MAX_VALUE; + if (axisy.options.inverseTransform) + maxy = Number.MAX_VALUE; + + if (s.lines.show || s.points.show) { + for (j = 0; j < points.length; j += ps) { + var x = points[j], y = points[j + 1]; + if (x == null) + continue; + + // For points and lines, the cursor must be within a + // certain distance to the data point + if (x - mx > maxx || x - mx < -maxx || + y - my > maxy || y - my < -maxy) + continue; + + // We have to calculate distances in pixels, not in + // data units, because the scales of the axes may be different + var dx = Math.abs(axisx.p2c(x) - mouseX), + dy = Math.abs(axisy.p2c(y) - mouseY), + dist = dx * dx + dy * dy; // we save the sqrt + + // use <= to ensure last point takes precedence + // (last generally means on top of) + if (dist < smallestDistance) { + smallestDistance = dist; + item = [i, j / ps]; + } + } + } + + if (s.bars.show && !item) { // no other point can be nearby + var barLeft = s.bars.align == "left" ? 0 : -s.bars.barWidth/2, + barRight = barLeft + s.bars.barWidth; + + for (j = 0; j < points.length; j += ps) { + var x = points[j], y = points[j + 1], b = points[j + 2]; + if (x == null) + continue; + + // for a bar graph, the cursor must be inside the bar + if (series[i].bars.horizontal ? + (mx <= Math.max(b, x) && mx >= Math.min(b, x) && + my >= y + barLeft && my <= y + barRight) : + (mx >= x + barLeft && mx <= x + barRight && + my >= Math.min(b, y) && my <= Math.max(b, y))) + item = [i, j / ps]; + } + } + } + + if (item) { + i = item[0]; + j = item[1]; + ps = series[i].datapoints.pointsize; + + return { datapoint: series[i].datapoints.points.slice(j * ps, (j + 1) * ps), + dataIndex: j, + series: series[i], + seriesIndex: i }; + } + + return null; + } + + function onMouseMove(e) { + if (options.grid.hoverable) + triggerClickHoverEvent("plothover", e, + function (s) { return s["hoverable"] != false; }); + } + + function onMouseLeave(e) { + if (options.grid.hoverable) + triggerClickHoverEvent("plothover", e, + function (s) { return false; }); + } + + function onClick(e) { + triggerClickHoverEvent("plotclick", e, + function (s) { return s["clickable"] != false; }); + } + + // trigger click or hover event (they send the same parameters + // so we share their code) + function triggerClickHoverEvent(eventname, event, seriesFilter) { + var offset = eventHolder.offset(), + canvasX = event.pageX - offset.left - plotOffset.left, + canvasY = event.pageY - offset.top - plotOffset.top, + pos = canvasToAxisCoords({ left: canvasX, top: canvasY }); + + pos.pageX = event.pageX; + pos.pageY = event.pageY; + + var item = findNearbyItem(canvasX, canvasY, seriesFilter); + + if (item) { + // fill in mouse pos for any listeners out there + item.pageX = parseInt(item.series.xaxis.p2c(item.datapoint[0]) + offset.left + plotOffset.left, 10); + item.pageY = parseInt(item.series.yaxis.p2c(item.datapoint[1]) + offset.top + plotOffset.top, 10); + } + + if (options.grid.autoHighlight) { + // clear auto-highlights + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.auto == eventname && + !(item && h.series == item.series && + h.point[0] == item.datapoint[0] && + h.point[1] == item.datapoint[1])) + unhighlight(h.series, h.point); + } + + if (item) + highlight(item.series, item.datapoint, eventname); + } + + placeholder.trigger(eventname, [ pos, item ]); + } + + function triggerRedrawOverlay() { + var t = options.interaction.redrawOverlayInterval; + if (t == -1) { // skip event queue + drawOverlay(); + return; + } + + if (!redrawTimeout) + redrawTimeout = setTimeout(drawOverlay, t); + } + + function drawOverlay() { + redrawTimeout = null; + + // draw highlights + octx.save(); + octx.clearRect(0, 0, canvasWidth, canvasHeight); + octx.translate(plotOffset.left, plotOffset.top); + + var i, hi; + for (i = 0; i < highlights.length; ++i) { + hi = highlights[i]; + + if (hi.series.bars.show) + drawBarHighlight(hi.series, hi.point); + else + drawPointHighlight(hi.series, hi.point); + } + octx.restore(); + + executeHooks(hooks.drawOverlay, [octx]); + } + + function highlight(s, point, auto) { + if (typeof s == "number") + s = series[s]; + + if (typeof point == "number") { + var ps = s.datapoints.pointsize; + point = s.datapoints.points.slice(ps * point, ps * (point + 1)); + } + + var i = indexOfHighlight(s, point); + if (i == -1) { + highlights.push({ series: s, point: point, auto: auto }); + + triggerRedrawOverlay(); + } + else if (!auto) + highlights[i].auto = false; + } + + function unhighlight(s, point) { + if (s == null && point == null) { + highlights = []; + triggerRedrawOverlay(); + } + + if (typeof s == "number") + s = series[s]; + + if (typeof point == "number") + point = s.data[point]; + + var i = indexOfHighlight(s, point); + if (i != -1) { + highlights.splice(i, 1); + + triggerRedrawOverlay(); + } + } + + function indexOfHighlight(s, p) { + for (var i = 0; i < highlights.length; ++i) { + var h = highlights[i]; + if (h.series == s && h.point[0] == p[0] + && h.point[1] == p[1]) + return i; + } + return -1; + } + + function drawPointHighlight(series, point) { + var x = point[0], y = point[1], + axisx = series.xaxis, axisy = series.yaxis, + highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(); + + if (x < axisx.min || x > axisx.max || y < axisy.min || y > axisy.max) + return; + + var pointRadius = series.points.radius + series.points.lineWidth / 2; + octx.lineWidth = pointRadius; + octx.strokeStyle = highlightColor; + var radius = 1.5 * pointRadius; + x = axisx.p2c(x); + y = axisy.p2c(y); + + octx.beginPath(); + if (series.points.symbol == "circle") + octx.arc(x, y, radius, 0, 2 * Math.PI, false); + else + series.points.symbol(octx, x, y, radius, false); + octx.closePath(); + octx.stroke(); + } + + function drawBarHighlight(series, point) { + var highlightColor = (typeof series.highlightColor === "string") ? series.highlightColor : $.color.parse(series.color).scale('a', 0.5).toString(), + fillStyle = highlightColor, + barLeft = series.bars.align == "left" ? 0 : -series.bars.barWidth/2; + + octx.lineWidth = series.bars.lineWidth; + octx.strokeStyle = highlightColor; + + drawBar(point[0], point[1], point[2] || 0, barLeft, barLeft + series.bars.barWidth, + 0, function () { return fillStyle; }, series.xaxis, series.yaxis, octx, series.bars.horizontal, series.bars.lineWidth); + } + + function getColorOrGradient(spec, bottom, top, defaultColor) { + if (typeof spec == "string") + return spec; + else { + // assume this is a gradient spec; IE currently only + // supports a simple vertical gradient properly, so that's + // what we support too + var gradient = ctx.createLinearGradient(0, top, 0, bottom); + + for (var i = 0, l = spec.colors.length; i < l; ++i) { + var c = spec.colors[i]; + if (typeof c != "string") { + var co = $.color.parse(defaultColor); + if (c.brightness != null) + co = co.scale('rgb', c.brightness); + if (c.opacity != null) + co.a *= c.opacity; + c = co.toString(); + } + gradient.addColorStop(i / (l - 1), c); + } + + return gradient; + } + } + } + + $.plot = function(placeholder, data, options) { + //var t0 = new Date(); + var plot = new Plot($(placeholder), data, options, $.plot.plugins); + //(window.console ? console.log : alert)("time used (msecs): " + ((new Date()).getTime() - t0.getTime())); + return plot; + }; + + $.plot.version = "0.8-alpha"; + + $.plot.plugins = []; + + // round to nearby lower multiple of base + function floorInBase(n, base) { + return base * Math.floor(n / base); + } + +})(jQuery); \ No newline at end of file diff --git a/view/js/jquery.flot.symbol.js b/view/js/jquery.flot.symbol.js new file mode 100644 index 0000000..cc181ff --- /dev/null +++ b/view/js/jquery.flot.symbol.js @@ -0,0 +1,71 @@ +/* Flot plugin that adds some extra symbols for plotting points. + +Copyright (c) 2007-2013 IOLA and Ole Laursen. +Licensed under the MIT license. + +The symbols are accessed as strings through the standard symbol options: + + series: { + points: { + symbol: "square" // or "diamond", "triangle", "cross" + } + } + +*/ + +(function ($) { + function processRawData(plot, series, datapoints) { + // we normalize the area of each symbol so it is approximately the + // same as a circle of the given radius + + var handlers = { + square: function (ctx, x, y, radius, shadow) { + // pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2 + var size = radius * Math.sqrt(Math.PI) / 2; + ctx.rect(x - size, y - size, size + size, size + size); + }, + diamond: function (ctx, x, y, radius, shadow) { + // pi * r^2 = 2s^2 => s = r * sqrt(pi/2) + var size = radius * Math.sqrt(Math.PI / 2); + ctx.moveTo(x - size, y); + ctx.lineTo(x, y - size); + ctx.lineTo(x + size, y); + ctx.lineTo(x, y + size); + ctx.lineTo(x - size, y); + }, + triangle: function (ctx, x, y, radius, shadow) { + // pi * r^2 = 1/2 * s^2 * sin (pi / 3) => s = r * sqrt(2 * pi / sin(pi / 3)) + var size = radius * Math.sqrt(2 * Math.PI / Math.sin(Math.PI / 3)); + var height = size * Math.sin(Math.PI / 3); + ctx.moveTo(x - size/2, y + height/2); + ctx.lineTo(x + size/2, y + height/2); + if (!shadow) { + ctx.lineTo(x, y - height/2); + ctx.lineTo(x - size/2, y + height/2); + } + }, + cross: function (ctx, x, y, radius, shadow) { + // pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2 + var size = radius * Math.sqrt(Math.PI) / 2; + ctx.moveTo(x - size, y - size); + ctx.lineTo(x + size, y + size); + ctx.moveTo(x - size, y + size); + ctx.lineTo(x + size, y - size); + } + }; + + var s = series.points.symbol; + if (handlers[s]) + series.points.symbol = handlers[s]; + } + + function init(plot) { + plot.hooks.processDatapoints.push(processRawData); + } + + $.plot.plugins.push({ + init: init, + name: 'symbols', + version: '1.0' + }); +})(jQuery); diff --git a/view/js/jquery.flot.time.js b/view/js/jquery.flot.time.js new file mode 100644 index 0000000..15f5281 --- /dev/null +++ b/view/js/jquery.flot.time.js @@ -0,0 +1,431 @@ +/* Pretty handling of time axes. + +Copyright (c) 2007-2013 IOLA and Ole Laursen. +Licensed under the MIT license. + +Set axis.mode to "time" to enable. See the section "Time series data" in +API.txt for details. + +*/ + +(function($) { + + var options = { + xaxis: { + timezone: null, // "browser" for local to the client or timezone for timezone-js + timeformat: null, // format string to use + twelveHourClock: false, // 12 or 24 time in time mode + monthNames: null // list of names of months + } + }; + + // round to nearby lower multiple of base + + function floorInBase(n, base) { + return base * Math.floor(n / base); + } + + // Returns a string with the date d formatted according to fmt. + // A subset of the Open Group's strftime format is supported. + + function formatDate(d, fmt, monthNames, dayNames) { + + if (typeof d.strftime == "function") { + return d.strftime(fmt); + } + + var leftPad = function(n, pad) { + n = "" + n; + pad = "" + (pad == null ? "0" : pad); + return n.length == 1 ? pad + n : n; + }; + + var r = []; + var escape = false; + var hours = d.getHours(); + var isAM = hours < 12; + + if (monthNames == null) { + monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; + } + + if (dayNames == null) { + dayNames = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; + } + + var hours12; + + if (hours > 12) { + hours12 = hours - 12; + } else if (hours == 0) { + hours12 = 12; + } else { + hours12 = hours; + } + + for (var i = 0; i < fmt.length; ++i) { + + var c = fmt.charAt(i); + + if (escape) { + switch (c) { + case 'a': c = "" + dayNames[d.getDay()]; break; + case 'b': c = "" + monthNames[d.getMonth()]; break; + case 'd': c = leftPad(d.getDate()); break; + case 'e': c = leftPad(d.getDate(), " "); break; + case 'h': // For back-compat with 0.7; remove in 1.0 + case 'H': c = leftPad(hours); break; + case 'I': c = leftPad(hours12); break; + case 'l': c = leftPad(hours12, " "); break; + case 'm': c = leftPad(d.getMonth() + 1); break; + case 'M': c = leftPad(d.getMinutes()); break; + // quarters not in Open Group's strftime specification + case 'q': + c = "" + (Math.floor(d.getMonth() / 3) + 1); break; + case 'S': c = leftPad(d.getSeconds()); break; + case 'y': c = leftPad(d.getFullYear() % 100); break; + case 'Y': c = "" + d.getFullYear(); break; + case 'p': c = (isAM) ? ("" + "am") : ("" + "pm"); break; + case 'P': c = (isAM) ? ("" + "AM") : ("" + "PM"); break; + case 'w': c = "" + d.getDay(); break; + } + r.push(c); + escape = false; + } else { + if (c == "%") { + escape = true; + } else { + r.push(c); + } + } + } + + return r.join(""); + } + + // To have a consistent view of time-based data independent of which time + // zone the client happens to be in we need a date-like object independent + // of time zones. This is done through a wrapper that only calls the UTC + // versions of the accessor methods. + + function makeUtcWrapper(d) { + + function addProxyMethod(sourceObj, sourceMethod, targetObj, targetMethod) { + sourceObj[sourceMethod] = function() { + return targetObj[targetMethod].apply(targetObj, arguments); + }; + }; + + var utc = { + date: d + }; + + // support strftime, if found + + if (d.strftime != undefined) { + addProxyMethod(utc, "strftime", d, "strftime"); + } + + addProxyMethod(utc, "getTime", d, "getTime"); + addProxyMethod(utc, "setTime", d, "setTime"); + + var props = ["Date", "Day", "FullYear", "Hours", "Milliseconds", "Minutes", "Month", "Seconds"]; + + for (var p = 0; p < props.length; p++) { + addProxyMethod(utc, "get" + props[p], d, "getUTC" + props[p]); + addProxyMethod(utc, "set" + props[p], d, "setUTC" + props[p]); + } + + return utc; + }; + + // select time zone strategy. This returns a date-like object tied to the + // desired timezone + + function dateGenerator(ts, opts) { + if (opts.timezone == "browser") { + return new Date(ts); + } else if (!opts.timezone || opts.timezone == "utc") { + return makeUtcWrapper(new Date(ts)); + } else if (typeof timezoneJS != "undefined" && typeof timezoneJS.Date != "undefined") { + var d = new timezoneJS.Date(); + // timezone-js is fickle, so be sure to set the time zone before + // setting the time. + d.setTimezone(opts.timezone); + d.setTime(ts); + return d; + } else { + return makeUtcWrapper(new Date(ts)); + } + } + + // map of app. size of time units in milliseconds + + var timeUnitSize = { + "second": 1000, + "minute": 60 * 1000, + "hour": 60 * 60 * 1000, + "day": 24 * 60 * 60 * 1000, + "month": 30 * 24 * 60 * 60 * 1000, + "quarter": 3 * 30 * 24 * 60 * 60 * 1000, + "year": 365.2425 * 24 * 60 * 60 * 1000 + }; + + // the allowed tick sizes, after 1 year we use + // an integer algorithm + + var baseSpec = [ + [1, "second"], [2, "second"], [5, "second"], [10, "second"], + [30, "second"], + [1, "minute"], [2, "minute"], [5, "minute"], [10, "minute"], + [30, "minute"], + [1, "hour"], [2, "hour"], [4, "hour"], + [8, "hour"], [12, "hour"], + [1, "day"], [2, "day"], [3, "day"], + [0.25, "month"], [0.5, "month"], [1, "month"], + [2, "month"] + ]; + + // we don't know which variant(s) we'll need yet, but generating both is + // cheap + + var specMonths = baseSpec.concat([[3, "month"], [6, "month"], + [1, "year"]]); + var specQuarters = baseSpec.concat([[1, "quarter"], [2, "quarter"], + [1, "year"]]); + + function init(plot) { + plot.hooks.processOptions.push(function (plot, options) { + $.each(plot.getAxes(), function(axisName, axis) { + + var opts = axis.options; + + if (opts.mode == "time") { + axis.tickGenerator = function(axis) { + + var ticks = []; + var d = dateGenerator(axis.min, opts); + var minSize = 0; + + // make quarter use a possibility if quarters are + // mentioned in either of these options + + var spec = (opts.tickSize && opts.tickSize[1] === + "quarter") || + (opts.minTickSize && opts.minTickSize[1] === + "quarter") ? specQuarters : specMonths; + + if (opts.minTickSize != null) { + if (typeof opts.tickSize == "number") { + minSize = opts.tickSize; + } else { + minSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]]; + } + } + + for (var i = 0; i < spec.length - 1; ++i) { + if (axis.delta < (spec[i][0] * timeUnitSize[spec[i][1]] + + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2 + && spec[i][0] * timeUnitSize[spec[i][1]] >= minSize) { + break; + } + } + + var size = spec[i][0]; + var unit = spec[i][1]; + + // special-case the possibility of several years + + if (unit == "year") { + + // if given a minTickSize in years, just use it, + // ensuring that it's an integer + + if (opts.minTickSize != null && opts.minTickSize[1] == "year") { + size = Math.floor(opts.minTickSize[0]); + } else { + + var magn = Math.pow(10, Math.floor(Math.log(axis.delta / timeUnitSize.year) / Math.LN10)); + var norm = (axis.delta / timeUnitSize.year) / magn; + + if (norm < 1.5) { + size = 1; + } else if (norm < 3) { + size = 2; + } else if (norm < 7.5) { + size = 5; + } else { + size = 10; + } + + size *= magn; + } + + // minimum size for years is 1 + + if (size < 1) { + size = 1; + } + } + + axis.tickSize = opts.tickSize || [size, unit]; + var tickSize = axis.tickSize[0]; + unit = axis.tickSize[1]; + + var step = tickSize * timeUnitSize[unit]; + + if (unit == "second") { + d.setSeconds(floorInBase(d.getSeconds(), tickSize)); + } else if (unit == "minute") { + d.setMinutes(floorInBase(d.getMinutes(), tickSize)); + } else if (unit == "hour") { + d.setHours(floorInBase(d.getHours(), tickSize)); + } else if (unit == "month") { + d.setMonth(floorInBase(d.getMonth(), tickSize)); + } else if (unit == "quarter") { + d.setMonth(3 * floorInBase(d.getMonth() / 3, + tickSize)); + } else if (unit == "year") { + d.setFullYear(floorInBase(d.getFullYear(), tickSize)); + } + + // reset smaller components + + d.setMilliseconds(0); + + if (step >= timeUnitSize.minute) { + d.setSeconds(0); + } + if (step >= timeUnitSize.hour) { + d.setMinutes(0); + } + if (step >= timeUnitSize.day) { + d.setHours(0); + } + if (step >= timeUnitSize.day * 4) { + d.setDate(1); + } + if (step >= timeUnitSize.month * 2) { + d.setMonth(floorInBase(d.getMonth(), 3)); + } + if (step >= timeUnitSize.quarter * 2) { + d.setMonth(floorInBase(d.getMonth(), 6)); + } + if (step >= timeUnitSize.year) { + d.setMonth(0); + } + + var carry = 0; + var v = Number.NaN; + var prev; + + do { + + prev = v; + v = d.getTime(); + ticks.push(v); + + if (unit == "month" || unit == "quarter") { + if (tickSize < 1) { + + // a bit complicated - we'll divide the + // month/quarter up but we need to take + // care of fractions so we don't end up in + // the middle of a day + + d.setDate(1); + var start = d.getTime(); + d.setMonth(d.getMonth() + + (unit == "quarter" ? 3 : 1)); + var end = d.getTime(); + d.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize); + carry = d.getHours(); + d.setHours(0); + } else { + d.setMonth(d.getMonth() + + tickSize * (unit == "quarter" ? 3 : 1)); + } + } else if (unit == "year") { + d.setFullYear(d.getFullYear() + tickSize); + } else { + d.setTime(v + step); + } + } while (v < axis.max && v != prev); + + return ticks; + }; + + axis.tickFormatter = function (v, axis) { + + var d = dateGenerator(v, axis.options); + + // first check global format + + if (opts.timeformat != null) { + return formatDate(d, opts.timeformat, opts.monthNames, opts.dayNames); + } + + // possibly use quarters if quarters are mentioned in + // any of these places + + var useQuarters = (axis.options.tickSize && + axis.options.tickSize[1] == "quarter") || + (axis.options.minTickSize && + axis.options.minTickSize[1] == "quarter"); + + var t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]]; + var span = axis.max - axis.min; + var suffix = (opts.twelveHourClock) ? " %p" : ""; + var hourCode = (opts.twelveHourClock) ? "%I" : "%H"; + var fmt; + + if (t < timeUnitSize.minute) { + fmt = hourCode + ":%M:%S" + suffix; + } else if (t < timeUnitSize.day) { + if (span < 2 * timeUnitSize.day) { + fmt = hourCode + ":%M" + suffix; + } else { + fmt = "%b %d " + hourCode + ":%M" + suffix; + } + } else if (t < timeUnitSize.month) { + fmt = "%b %d"; + } else if ((useQuarters && t < timeUnitSize.quarter) || + (!useQuarters && t < timeUnitSize.year)) { + if (span < timeUnitSize.year) { + fmt = "%b"; + } else { + fmt = "%b %Y"; + } + } else if (useQuarters && t < timeUnitSize.year) { + if (span < timeUnitSize.year) { + fmt = "Q%q"; + } else { + fmt = "Q%q %Y"; + } + } else { + fmt = "%Y"; + } + + var rt = formatDate(d, fmt, opts.monthNames, opts.dayNames); + + return rt; + }; + } + }); + }); + } + + $.plot.plugins.push({ + init: init, + options: options, + name: 'time', + version: '1.0' + }); + + // Time-axis support used to be in Flot core, which exposed the + // formatDate function on the plot object. Various plugins depend + // on the function, so we need to re-expose it here. + + $.plot.formatDate = formatDate; + +})(jQuery); diff --git a/view/js/jquery.flot.togglelegend.js b/view/js/jquery.flot.togglelegend.js new file mode 100644 index 0000000..17afb24 --- /dev/null +++ b/view/js/jquery.flot.togglelegend.js @@ -0,0 +1,319 @@ +/* + + Allows series to be toggled using their entries in the chart legend. + Supports series groups. + + TODO: + * Allow toggling to be disabled for individual series + * Disable visual feedback (usually so dev can implement their own) + + + */ + +(function ( $ ) { + + var options = { + series: { + toggle: { + enabled: true + } + } + }, + state = { + add: function ( plot, label ) { + + var placeholder = $(plot.getPlaceholder()), + data = placeholder.data("togglestates"); + + if ( !$.isArray(data) ) { + + data = [ ]; + + } + + if ( $.inArray(label, data) === -1 ) { + + data.push(label); + + } + + placeholder.data("togglestates", data); + + }, + remove: function ( plot, label ) { + + var placeholder = $(plot.getPlaceholder()), + data = placeholder.data("togglestates"); + + if ( $.isArray(data) ) { + + if ( $.inArray(label, data) > -1 ) { + + data.splice($.inArray(label, data), 1); + placeholder.data("togglestates", data); + + } + + } + + } + }, + toggle = function ( el, plot, datasets ) { + + var cell, + label, + swatch, + isCell = el.is("td"); + + if ( isCell || (el.parents("td").length) ) { + + cell = ( isCell ? el : el.parents("td") ); + + // Acquire the label and colour swatch of whatever + // legend item the user just clicked. + if ( cell.hasClass("legendLabel") ) { + + label = cell; + swatch = cell.prev(".legendColorBox"); + + } else { + + label = cell.next(".legendLabel"); + swatch = cell; + + } + + var series = getSeries(label.text(), datasets); + + if ( series.toggle.enabled ) { + + if ( label.hasClass("flotSeriesHidden") ) { + + label.removeClass("flotSeriesHidden"); + toggleSwatch(swatch, true); + showSeries(label.text(), plot, datasets); + + } else { + + label.addClass("flotSeriesHidden"); + toggleSwatch(swatch); + hideSeries(label.text(), plot, datasets); + + } + + } + + } + + }, + setupSwatch = function ( swatch ) { + + swatch.data("flotcolor", swatch.find("div div").css("border-top-color")); + + }, + toggleSwatch = function ( swatch, show ) { + + if ( show ) { + + swatch.find("div div").css("border-color", swatch.data("flotcolor")); + + } else { + + swatch.find("div div").css("border-color", "transparent"); + + } + + }, + redraw = function ( plot, datasets ) { + + plot.setData(datasets.visible); + plot.draw(); + + }, + getSeries = function ( label, datasets ) { + + for ( var i = 0; i < datasets.all.length; i++ ) { + + if ( datasets.all[i].label === label ) { + + return datasets.all[i]; + + } + + } + + }, + hideSeries = function ( label, plot, datasets ) { + + for ( var i = 0; i < datasets.visible.length; i++ ) { + + if ( datasets.visible[i].label === label ) { + + // Hide this series + datasets.visible.splice(i, 1); + state.add(plot, label); + break; + + } + + } + + redraw(plot, datasets); + + }, + showAll = function ( ) { + plot.setData(datasets.all); + }, + showSeries = function ( label, plot, datasets ) { + + var i, j, + outDataset = []; + + // Find the series we want to show + for ( var i = 0; i < datasets.all.length; i++ ) { + + if ( datasets.all[i].label === label ) { + + datasets.visible.push(datasets.all[i]); + + } + + } + + // Sometimes the order of items in the datasets array is important + // (especially when lines or areas overlap one another) + for ( i = 0; i < datasets.all.length; i++ ) { + + for ( j = 0; j < datasets.visible.length; j++ ) { + + if ( datasets.all[i].label === datasets.visible[j].label ) { + + outDataset.push(datasets.all[i]); + state.remove(plot, label); + break; + + } + + } + + } + + datasets.visible = outDataset; + + redraw(plot, datasets); + + }, + init = function ( _plot ) { + + var datasets = { }, + initDraw = false, + legend; + + _plot.hooks.draw.push(function ( _plot ) { + + var placeholder, toggleStates, lenToggleStates, i; + + if ( !initDraw ) { + + placeholder = $(_plot.getPlaceholder()); + toggleStates = [ ]; + + // This stops the calls to draw from creating an infinite loop + initDraw = true; + + + // Look for an existing toggleLegend config + if ( $.isArray(placeholder.data("togglestates")) ) { + + toggleStates = placeholder.data("togglestates"); + + lenToggleStates = toggleStates.length; + + // Initialise the line states + for ( i = 0; i < lenToggleStates; i++ ) { + + //hideSeries(toggleStates[i], _plot, datasets); + // Find the corresponding legend entry and click it! + // (Yucky!) + toggle(legend.find("td").filter(function ( ) { + + return $(this).text() === toggleStates[i]; + + }), _plot, datasets); + + } + + } else { + + placeholder.data("togglestates", toggleStates); + + } + + } + + }); + + _plot.hooks.legendInserted.push(function ( _plot, _legend ) { + + var plot = _plot, + toggleStates = [ ], + cells = _legend.find("td"), + entries = [ ]; + + datasets = { + visible: plot.getData(), + toggle: [ ], + all: plot.getData().slice() + }; + + legend = _legend; + + // Split into objects containing each legend item's + // colour box and label. + for ( var i = 0; i < cells.length; i += 2 ) { + + entries.push({ + swatch: $(cells[i]), + label: $(cells[i + 1]) + }); + + } + + for ( var e in entries ) { + + if ( entries.hasOwnProperty(e) ) { + + setupSwatch(entries[e].swatch); + + } + + } + + legend + .unbind("click.flot") + .bind("selectstart", function ( e ) { + + e.preventDefault(); + + return false; + + }) + .bind("click.flot", function ( e ) { + + toggle($(e.target), plot, datasets); + + }) + .find("td").css("cursor", "pointer"); + + }); + + }; + + $.plot.plugins.push({ + init: init, + options: options, + name: 'toggleLegend', + version: '0.3' + }); + +}(jQuery)); \ No newline at end of file diff --git a/view/js/jquery.ui.datepicker.js b/view/js/jquery.ui.datepicker.js new file mode 100644 index 0000000..8afddbd --- /dev/null +++ b/view/js/jquery.ui.datepicker.js @@ -0,0 +1,2038 @@ +/*! + * jQuery UI Datepicker 1.10.3 + * http://jqueryui.com + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://api.jqueryui.com/datepicker/ + * + * Depends: + * jquery.ui.core.js + */ +(function( $, undefined ) { + +$.extend($.ui, { datepicker: { version: "1.10.3" } }); + +var PROP_NAME = "datepicker", + instActive; + +/* Date picker manager. + Use the singleton instance of this class, $.datepicker, to interact with the date picker. + Settings for (groups of) date pickers are maintained in an instance object, + allowing multiple different settings on the same page. */ + +function Datepicker() { + this._curInst = null; // The current instance in use + this._keyEvent = false; // If the last event was a key event + this._disabledInputs = []; // List of date picker inputs that have been disabled + this._datepickerShowing = false; // True if the popup picker is showing , false if not + this._inDialog = false; // True if showing within a "dialog", false if not + this._mainDivId = "ui-datepicker-div"; // The ID of the main datepicker division + this._inlineClass = "ui-datepicker-inline"; // The name of the inline marker class + this._appendClass = "ui-datepicker-append"; // The name of the append marker class + this._triggerClass = "ui-datepicker-trigger"; // The name of the trigger marker class + this._dialogClass = "ui-datepicker-dialog"; // The name of the dialog marker class + this._disableClass = "ui-datepicker-disabled"; // The name of the disabled covering marker class + this._unselectableClass = "ui-datepicker-unselectable"; // The name of the unselectable cell marker class + this._currentClass = "ui-datepicker-current-day"; // The name of the current day marker class + this._dayOverClass = "ui-datepicker-days-cell-over"; // The name of the day hover marker class + this.regional = []; // Available regional settings, indexed by language code + this.regional[""] = { // Default regional settings + closeText: "Done", // Display text for close link + prevText: "Prev", // Display text for previous month link + nextText: "Next", // Display text for next month link + currentText: "Today", // Display text for current month link + monthNames: ["January","February","March","April","May","June", + "July","August","September","October","November","December"], // Names of months for drop-down and formatting + monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], // For formatting + dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], // For formatting + dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], // For formatting + dayNamesMin: ["Su","Mo","Tu","We","Th","Fr","Sa"], // Column headings for days starting at Sunday + weekHeader: "Wk", // Column header for week of the year + dateFormat: "mm/dd/yy", // See format options on parseDate + firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ... + isRTL: false, // True if right-to-left language, false if left-to-right + showMonthAfterYear: false, // True if the year select precedes month, false for month then year + yearSuffix: "" // Additional text to append to the year in the month headers + }; + this._defaults = { // Global defaults for all the date picker instances + showOn: "focus", // "focus" for popup on focus, + // "button" for trigger button, or "both" for either + showAnim: "fadeIn", // Name of jQuery animation for popup + showOptions: {}, // Options for enhanced animations + defaultDate: null, // Used when field is blank: actual date, + // +/-number for offset from today, null for today + appendText: "", // Display text following the input box, e.g. showing the format + buttonText: "...", // Text for trigger button + buttonImage: "", // URL for trigger button image + buttonImageOnly: false, // True if the image appears alone, false if it appears on a button + hideIfNoPrevNext: false, // True to hide next/previous month links + // if not applicable, false to just disable them + navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links + gotoCurrent: false, // True if today link goes back to current selection instead + changeMonth: false, // True if month can be selected directly, false if only prev/next + changeYear: false, // True if year can be selected directly, false if only prev/next + yearRange: "c-10:c+10", // Range of years to display in drop-down, + // either relative to today's year (-nn:+nn), relative to currently displayed year + // (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n) + showOtherMonths: false, // True to show dates in other months, false to leave blank + selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable + showWeek: false, // True to show week of the year, false to not show it + calculateWeek: this.iso8601Week, // How to calculate the week of the year, + // takes a Date and returns the number of the week for it + shortYearCutoff: "+10", // Short year values < this are in the current century, + // > this are in the previous century, + // string value starting with "+" for current year + value + minDate: null, // The earliest selectable date, or null for no limit + maxDate: null, // The latest selectable date, or null for no limit + duration: "fast", // Duration of display/closure + beforeShowDay: null, // Function that takes a date and returns an array with + // [0] = true if selectable, false if not, [1] = custom CSS class name(s) or "", + // [2] = cell title (optional), e.g. $.datepicker.noWeekends + beforeShow: null, // Function that takes an input field and + // returns a set of custom settings for the date picker + onSelect: null, // Define a callback function when a date is selected + onChangeMonthYear: null, // Define a callback function when the month or year is changed + onClose: null, // Define a callback function when the datepicker is closed + numberOfMonths: 1, // Number of months to show at a time + showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0) + stepMonths: 1, // Number of months to step back/forward + stepBigMonths: 12, // Number of months to step back/forward for the big links + altField: "", // Selector for an alternate field to store selected dates into + altFormat: "", // The date format to use for the alternate field + constrainInput: true, // The input is constrained by the current date format + showButtonPanel: false, // True to show button panel, false to not show it + autoSize: false, // True to size the input for the date format, false to leave as is + disabled: false // The initial disabled state + }; + $.extend(this._defaults, this.regional[""]); + this.dpDiv = bindHover($("
")); +} + +$.extend(Datepicker.prototype, { + /* Class name added to elements to indicate already configured with a date picker. */ + markerClassName: "hasDatepicker", + + //Keep track of the maximum number of rows displayed (see #7043) + maxRows: 4, + + // TODO rename to "widget" when switching to widget factory + _widgetDatepicker: function() { + return this.dpDiv; + }, + + /* Override the default settings for all instances of the date picker. + * @param settings object - the new settings to use as defaults (anonymous object) + * @return the manager object + */ + setDefaults: function(settings) { + extendRemove(this._defaults, settings || {}); + return this; + }, + + /* Attach the date picker to a jQuery selection. + * @param target element - the target input field or division or span + * @param settings object - the new settings to use for this date picker instance (anonymous) + */ + _attachDatepicker: function(target, settings) { + var nodeName, inline, inst; + nodeName = target.nodeName.toLowerCase(); + inline = (nodeName === "div" || nodeName === "span"); + if (!target.id) { + this.uuid += 1; + target.id = "dp" + this.uuid; + } + inst = this._newInst($(target), inline); + inst.settings = $.extend({}, settings || {}); + if (nodeName === "input") { + this._connectDatepicker(target, inst); + } else if (inline) { + this._inlineDatepicker(target, inst); + } + }, + + /* Create a new instance object. */ + _newInst: function(target, inline) { + var id = target[0].id.replace(/([^A-Za-z0-9_\-])/g, "\\\\$1"); // escape jQuery meta chars + return {id: id, input: target, // associated target + selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection + drawMonth: 0, drawYear: 0, // month being drawn + inline: inline, // is datepicker inline or not + dpDiv: (!inline ? this.dpDiv : // presentation div + bindHover($("
")))}; + }, + + /* Attach the date picker to an input field. */ + _connectDatepicker: function(target, inst) { + var input = $(target); + inst.append = $([]); + inst.trigger = $([]); + if (input.hasClass(this.markerClassName)) { + return; + } + this._attachments(input, inst); + input.addClass(this.markerClassName).keydown(this._doKeyDown). + keypress(this._doKeyPress).keyup(this._doKeyUp); + this._autoSize(inst); + $.data(target, PROP_NAME, inst); + //If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665) + if( inst.settings.disabled ) { + this._disableDatepicker( target ); + } + }, + + /* Make attachments based on settings. */ + _attachments: function(input, inst) { + var showOn, buttonText, buttonImage, + appendText = this._get(inst, "appendText"), + isRTL = this._get(inst, "isRTL"); + + if (inst.append) { + inst.append.remove(); + } + if (appendText) { + inst.append = $("" + appendText + ""); + input[isRTL ? "before" : "after"](inst.append); + } + + input.unbind("focus", this._showDatepicker); + + if (inst.trigger) { + inst.trigger.remove(); + } + + showOn = this._get(inst, "showOn"); + if (showOn === "focus" || showOn === "both") { // pop-up date picker when in the marked field + input.focus(this._showDatepicker); + } + if (showOn === "button" || showOn === "both") { // pop-up date picker when button clicked + buttonText = this._get(inst, "buttonText"); + buttonImage = this._get(inst, "buttonImage"); + inst.trigger = $(this._get(inst, "buttonImageOnly") ? + $("").addClass(this._triggerClass). + attr({ src: buttonImage, alt: buttonText, title: buttonText }) : + $("").addClass(this._triggerClass). + html(!buttonImage ? buttonText : $("").attr( + { src:buttonImage, alt:buttonText, title:buttonText }))); + input[isRTL ? "before" : "after"](inst.trigger); + inst.trigger.click(function() { + if ($.datepicker._datepickerShowing && $.datepicker._lastInput === input[0]) { + $.datepicker._hideDatepicker(); + } else if ($.datepicker._datepickerShowing && $.datepicker._lastInput !== input[0]) { + $.datepicker._hideDatepicker(); + $.datepicker._showDatepicker(input[0]); + } else { + $.datepicker._showDatepicker(input[0]); + } + return false; + }); + } + }, + + /* Apply the maximum length for the date format. */ + _autoSize: function(inst) { + if (this._get(inst, "autoSize") && !inst.inline) { + var findMax, max, maxI, i, + date = new Date(2009, 12 - 1, 20), // Ensure double digits + dateFormat = this._get(inst, "dateFormat"); + + if (dateFormat.match(/[DM]/)) { + findMax = function(names) { + max = 0; + maxI = 0; + for (i = 0; i < names.length; i++) { + if (names[i].length > max) { + max = names[i].length; + maxI = i; + } + } + return maxI; + }; + date.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ? + "monthNames" : "monthNamesShort")))); + date.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ? + "dayNames" : "dayNamesShort"))) + 20 - date.getDay()); + } + inst.input.attr("size", this._formatDate(inst, date).length); + } + }, + + /* Attach an inline date picker to a div. */ + _inlineDatepicker: function(target, inst) { + var divSpan = $(target); + if (divSpan.hasClass(this.markerClassName)) { + return; + } + divSpan.addClass(this.markerClassName).append(inst.dpDiv); + $.data(target, PROP_NAME, inst); + this._setDate(inst, this._getDefaultDate(inst), true); + this._updateDatepicker(inst); + this._updateAlternate(inst); + //If disabled option is true, disable the datepicker before showing it (see ticket #5665) + if( inst.settings.disabled ) { + this._disableDatepicker( target ); + } + // Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements + // http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height + inst.dpDiv.css( "display", "block" ); + }, + + /* Pop-up the date picker in a "dialog" box. + * @param input element - ignored + * @param date string or Date - the initial date to display + * @param onSelect function - the function to call when a date is selected + * @param settings object - update the dialog date picker instance's settings (anonymous object) + * @param pos int[2] - coordinates for the dialog's position within the screen or + * event - with x/y coordinates or + * leave empty for default (screen centre) + * @return the manager object + */ + _dialogDatepicker: function(input, date, onSelect, settings, pos) { + var id, browserWidth, browserHeight, scrollX, scrollY, + inst = this._dialogInst; // internal instance + + if (!inst) { + this.uuid += 1; + id = "dp" + this.uuid; + this._dialogInput = $(""); + this._dialogInput.keydown(this._doKeyDown); + $("body").append(this._dialogInput); + inst = this._dialogInst = this._newInst(this._dialogInput, false); + inst.settings = {}; + $.data(this._dialogInput[0], PROP_NAME, inst); + } + extendRemove(inst.settings, settings || {}); + date = (date && date.constructor === Date ? this._formatDate(inst, date) : date); + this._dialogInput.val(date); + + this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null); + if (!this._pos) { + browserWidth = document.documentElement.clientWidth; + browserHeight = document.documentElement.clientHeight; + scrollX = document.documentElement.scrollLeft || document.body.scrollLeft; + scrollY = document.documentElement.scrollTop || document.body.scrollTop; + this._pos = // should use actual width/height below + [(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY]; + } + + // move input on screen for focus, but hidden behind dialog + this._dialogInput.css("left", (this._pos[0] + 20) + "px").css("top", this._pos[1] + "px"); + inst.settings.onSelect = onSelect; + this._inDialog = true; + this.dpDiv.addClass(this._dialogClass); + this._showDatepicker(this._dialogInput[0]); + if ($.blockUI) { + $.blockUI(this.dpDiv); + } + $.data(this._dialogInput[0], PROP_NAME, inst); + return this; + }, + + /* Detach a datepicker from its control. + * @param target element - the target input field or division or span + */ + _destroyDatepicker: function(target) { + var nodeName, + $target = $(target), + inst = $.data(target, PROP_NAME); + + if (!$target.hasClass(this.markerClassName)) { + return; + } + + nodeName = target.nodeName.toLowerCase(); + $.removeData(target, PROP_NAME); + if (nodeName === "input") { + inst.append.remove(); + inst.trigger.remove(); + $target.removeClass(this.markerClassName). + unbind("focus", this._showDatepicker). + unbind("keydown", this._doKeyDown). + unbind("keypress", this._doKeyPress). + unbind("keyup", this._doKeyUp); + } else if (nodeName === "div" || nodeName === "span") { + $target.removeClass(this.markerClassName).empty(); + } + }, + + /* Enable the date picker to a jQuery selection. + * @param target element - the target input field or division or span + */ + _enableDatepicker: function(target) { + var nodeName, inline, + $target = $(target), + inst = $.data(target, PROP_NAME); + + if (!$target.hasClass(this.markerClassName)) { + return; + } + + nodeName = target.nodeName.toLowerCase(); + if (nodeName === "input") { + target.disabled = false; + inst.trigger.filter("button"). + each(function() { this.disabled = false; }).end(). + filter("img").css({opacity: "1.0", cursor: ""}); + } else if (nodeName === "div" || nodeName === "span") { + inline = $target.children("." + this._inlineClass); + inline.children().removeClass("ui-state-disabled"); + inline.find("select.ui-datepicker-month, select.ui-datepicker-year"). + prop("disabled", false); + } + this._disabledInputs = $.map(this._disabledInputs, + function(value) { return (value === target ? null : value); }); // delete entry + }, + + /* Disable the date picker to a jQuery selection. + * @param target element - the target input field or division or span + */ + _disableDatepicker: function(target) { + var nodeName, inline, + $target = $(target), + inst = $.data(target, PROP_NAME); + + if (!$target.hasClass(this.markerClassName)) { + return; + } + + nodeName = target.nodeName.toLowerCase(); + if (nodeName === "input") { + target.disabled = true; + inst.trigger.filter("button"). + each(function() { this.disabled = true; }).end(). + filter("img").css({opacity: "0.5", cursor: "default"}); + } else if (nodeName === "div" || nodeName === "span") { + inline = $target.children("." + this._inlineClass); + inline.children().addClass("ui-state-disabled"); + inline.find("select.ui-datepicker-month, select.ui-datepicker-year"). + prop("disabled", true); + } + this._disabledInputs = $.map(this._disabledInputs, + function(value) { return (value === target ? null : value); }); // delete entry + this._disabledInputs[this._disabledInputs.length] = target; + }, + + /* Is the first field in a jQuery collection disabled as a datepicker? + * @param target element - the target input field or division or span + * @return boolean - true if disabled, false if enabled + */ + _isDisabledDatepicker: function(target) { + if (!target) { + return false; + } + for (var i = 0; i < this._disabledInputs.length; i++) { + if (this._disabledInputs[i] === target) { + return true; + } + } + return false; + }, + + /* Retrieve the instance data for the target control. + * @param target element - the target input field or division or span + * @return object - the associated instance data + * @throws error if a jQuery problem getting data + */ + _getInst: function(target) { + try { + return $.data(target, PROP_NAME); + } + catch (err) { + throw "Missing instance data for this datepicker"; + } + }, + + /* Update or retrieve the settings for a date picker attached to an input field or division. + * @param target element - the target input field or division or span + * @param name object - the new settings to update or + * string - the name of the setting to change or retrieve, + * when retrieving also "all" for all instance settings or + * "defaults" for all global defaults + * @param value any - the new value for the setting + * (omit if above is an object or to retrieve a value) + */ + _optionDatepicker: function(target, name, value) { + var settings, date, minDate, maxDate, + inst = this._getInst(target); + + if (arguments.length === 2 && typeof name === "string") { + return (name === "defaults" ? $.extend({}, $.datepicker._defaults) : + (inst ? (name === "all" ? $.extend({}, inst.settings) : + this._get(inst, name)) : null)); + } + + settings = name || {}; + if (typeof name === "string") { + settings = {}; + settings[name] = value; + } + + if (inst) { + if (this._curInst === inst) { + this._hideDatepicker(); + } + + date = this._getDateDatepicker(target, true); + minDate = this._getMinMaxDate(inst, "min"); + maxDate = this._getMinMaxDate(inst, "max"); + extendRemove(inst.settings, settings); + // reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided + if (minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined) { + inst.settings.minDate = this._formatDate(inst, minDate); + } + if (maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined) { + inst.settings.maxDate = this._formatDate(inst, maxDate); + } + if ( "disabled" in settings ) { + if ( settings.disabled ) { + this._disableDatepicker(target); + } else { + this._enableDatepicker(target); + } + } + this._attachments($(target), inst); + this._autoSize(inst); + this._setDate(inst, date); + this._updateAlternate(inst); + this._updateDatepicker(inst); + } + }, + + // change method deprecated + _changeDatepicker: function(target, name, value) { + this._optionDatepicker(target, name, value); + }, + + /* Redraw the date picker attached to an input field or division. + * @param target element - the target input field or division or span + */ + _refreshDatepicker: function(target) { + var inst = this._getInst(target); + if (inst) { + this._updateDatepicker(inst); + } + }, + + /* Set the dates for a jQuery selection. + * @param target element - the target input field or division or span + * @param date Date - the new date + */ + _setDateDatepicker: function(target, date) { + var inst = this._getInst(target); + if (inst) { + this._setDate(inst, date); + this._updateDatepicker(inst); + this._updateAlternate(inst); + } + }, + + /* Get the date(s) for the first entry in a jQuery selection. + * @param target element - the target input field or division or span + * @param noDefault boolean - true if no default date is to be used + * @return Date - the current date + */ + _getDateDatepicker: function(target, noDefault) { + var inst = this._getInst(target); + if (inst && !inst.inline) { + this._setDateFromField(inst, noDefault); + } + return (inst ? this._getDate(inst) : null); + }, + + /* Handle keystrokes. */ + _doKeyDown: function(event) { + var onSelect, dateStr, sel, + inst = $.datepicker._getInst(event.target), + handled = true, + isRTL = inst.dpDiv.is(".ui-datepicker-rtl"); + + inst._keyEvent = true; + if ($.datepicker._datepickerShowing) { + switch (event.keyCode) { + case 9: $.datepicker._hideDatepicker(); + handled = false; + break; // hide on tab out + case 13: sel = $("td." + $.datepicker._dayOverClass + ":not(." + + $.datepicker._currentClass + ")", inst.dpDiv); + if (sel[0]) { + $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]); + } + + onSelect = $.datepicker._get(inst, "onSelect"); + if (onSelect) { + dateStr = $.datepicker._formatDate(inst); + + // trigger custom callback + onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); + } else { + $.datepicker._hideDatepicker(); + } + + return false; // don't submit the form + case 27: $.datepicker._hideDatepicker(); + break; // hide on escape + case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ? + -$.datepicker._get(inst, "stepBigMonths") : + -$.datepicker._get(inst, "stepMonths")), "M"); + break; // previous month/year on page up/+ ctrl + case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ? + +$.datepicker._get(inst, "stepBigMonths") : + +$.datepicker._get(inst, "stepMonths")), "M"); + break; // next month/year on page down/+ ctrl + case 35: if (event.ctrlKey || event.metaKey) { + $.datepicker._clearDate(event.target); + } + handled = event.ctrlKey || event.metaKey; + break; // clear on ctrl or command +end + case 36: if (event.ctrlKey || event.metaKey) { + $.datepicker._gotoToday(event.target); + } + handled = event.ctrlKey || event.metaKey; + break; // current on ctrl or command +home + case 37: if (event.ctrlKey || event.metaKey) { + $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), "D"); + } + handled = event.ctrlKey || event.metaKey; + // -1 day on ctrl or command +left + if (event.originalEvent.altKey) { + $.datepicker._adjustDate(event.target, (event.ctrlKey ? + -$.datepicker._get(inst, "stepBigMonths") : + -$.datepicker._get(inst, "stepMonths")), "M"); + } + // next month/year on alt +left on Mac + break; + case 38: if (event.ctrlKey || event.metaKey) { + $.datepicker._adjustDate(event.target, -7, "D"); + } + handled = event.ctrlKey || event.metaKey; + break; // -1 week on ctrl or command +up + case 39: if (event.ctrlKey || event.metaKey) { + $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), "D"); + } + handled = event.ctrlKey || event.metaKey; + // +1 day on ctrl or command +right + if (event.originalEvent.altKey) { + $.datepicker._adjustDate(event.target, (event.ctrlKey ? + +$.datepicker._get(inst, "stepBigMonths") : + +$.datepicker._get(inst, "stepMonths")), "M"); + } + // next month/year on alt +right + break; + case 40: if (event.ctrlKey || event.metaKey) { + $.datepicker._adjustDate(event.target, +7, "D"); + } + handled = event.ctrlKey || event.metaKey; + break; // +1 week on ctrl or command +down + default: handled = false; + } + } else if (event.keyCode === 36 && event.ctrlKey) { // display the date picker on ctrl+home + $.datepicker._showDatepicker(this); + } else { + handled = false; + } + + if (handled) { + event.preventDefault(); + event.stopPropagation(); + } + }, + + /* Filter entered characters - based on date format. */ + _doKeyPress: function(event) { + var chars, chr, + inst = $.datepicker._getInst(event.target); + + if ($.datepicker._get(inst, "constrainInput")) { + chars = $.datepicker._possibleChars($.datepicker._get(inst, "dateFormat")); + chr = String.fromCharCode(event.charCode == null ? event.keyCode : event.charCode); + return event.ctrlKey || event.metaKey || (chr < " " || !chars || chars.indexOf(chr) > -1); + } + }, + + /* Synchronise manual entry and field/alternate field. */ + _doKeyUp: function(event) { + var date, + inst = $.datepicker._getInst(event.target); + + if (inst.input.val() !== inst.lastVal) { + try { + date = $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"), + (inst.input ? inst.input.val() : null), + $.datepicker._getFormatConfig(inst)); + + if (date) { // only if valid + $.datepicker._setDateFromField(inst); + $.datepicker._updateAlternate(inst); + $.datepicker._updateDatepicker(inst); + } + } + catch (err) { + } + } + return true; + }, + + /* Pop-up the date picker for a given input field. + * If false returned from beforeShow event handler do not show. + * @param input element - the input field attached to the date picker or + * event - if triggered by focus + */ + _showDatepicker: function(input) { + input = input.target || input; + if (input.nodeName.toLowerCase() !== "input") { // find from button/image trigger + input = $("input", input.parentNode)[0]; + } + + if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput === input) { // already here + return; + } + + var inst, beforeShow, beforeShowSettings, isFixed, + offset, showAnim, duration; + + inst = $.datepicker._getInst(input); + if ($.datepicker._curInst && $.datepicker._curInst !== inst) { + $.datepicker._curInst.dpDiv.stop(true, true); + if ( inst && $.datepicker._datepickerShowing ) { + $.datepicker._hideDatepicker( $.datepicker._curInst.input[0] ); + } + } + + beforeShow = $.datepicker._get(inst, "beforeShow"); + beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {}; + if(beforeShowSettings === false){ + return; + } + extendRemove(inst.settings, beforeShowSettings); + + inst.lastVal = null; + $.datepicker._lastInput = input; + $.datepicker._setDateFromField(inst); + + if ($.datepicker._inDialog) { // hide cursor + input.value = ""; + } + if (!$.datepicker._pos) { // position below input + $.datepicker._pos = $.datepicker._findPos(input); + $.datepicker._pos[1] += input.offsetHeight; // add the height + } + + isFixed = false; + $(input).parents().each(function() { + isFixed |= $(this).css("position") === "fixed"; + return !isFixed; + }); + + offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]}; + $.datepicker._pos = null; + //to avoid flashes on Firefox + inst.dpDiv.empty(); + // determine sizing offscreen + inst.dpDiv.css({position: "absolute", display: "block", top: "-1000px"}); + $.datepicker._updateDatepicker(inst); + // fix width for dynamic number of date pickers + // and adjust position before showing + offset = $.datepicker._checkOffset(inst, offset, isFixed); + inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ? + "static" : (isFixed ? "fixed" : "absolute")), display: "none", + left: offset.left + "px", top: offset.top + "px"}); + + if (!inst.inline) { + showAnim = $.datepicker._get(inst, "showAnim"); + duration = $.datepicker._get(inst, "duration"); + inst.dpDiv.zIndex($(input).zIndex()+1); + $.datepicker._datepickerShowing = true; + + if ( $.effects && $.effects.effect[ showAnim ] ) { + inst.dpDiv.show(showAnim, $.datepicker._get(inst, "showOptions"), duration); + } else { + inst.dpDiv[showAnim || "show"](showAnim ? duration : null); + } + + if ( $.datepicker._shouldFocusInput( inst ) ) { + inst.input.focus(); + } + + $.datepicker._curInst = inst; + } + }, + + /* Generate the date picker content. */ + _updateDatepicker: function(inst) { + this.maxRows = 4; //Reset the max number of rows being displayed (see #7043) + instActive = inst; // for delegate hover events + inst.dpDiv.empty().append(this._generateHTML(inst)); + this._attachHandlers(inst); + inst.dpDiv.find("." + this._dayOverClass + " a").mouseover(); + + var origyearshtml, + numMonths = this._getNumberOfMonths(inst), + cols = numMonths[1], + width = 17; + + inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""); + if (cols > 1) { + inst.dpDiv.addClass("ui-datepicker-multi-" + cols).css("width", (width * cols) + "em"); + } + inst.dpDiv[(numMonths[0] !== 1 || numMonths[1] !== 1 ? "add" : "remove") + + "Class"]("ui-datepicker-multi"); + inst.dpDiv[(this._get(inst, "isRTL") ? "add" : "remove") + + "Class"]("ui-datepicker-rtl"); + + if (inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) { + inst.input.focus(); + } + + // deffered render of the years select (to avoid flashes on Firefox) + if( inst.yearshtml ){ + origyearshtml = inst.yearshtml; + setTimeout(function(){ + //assure that inst.yearshtml didn't change. + if( origyearshtml === inst.yearshtml && inst.yearshtml ){ + inst.dpDiv.find("select.ui-datepicker-year:first").replaceWith(inst.yearshtml); + } + origyearshtml = inst.yearshtml = null; + }, 0); + } + }, + + // #6694 - don't focus the input if it's already focused + // this breaks the change event in IE + // Support: IE and jQuery <1.9 + _shouldFocusInput: function( inst ) { + return inst.input && inst.input.is( ":visible" ) && !inst.input.is( ":disabled" ) && !inst.input.is( ":focus" ); + }, + + /* Check positioning to remain on screen. */ + _checkOffset: function(inst, offset, isFixed) { + var dpWidth = inst.dpDiv.outerWidth(), + dpHeight = inst.dpDiv.outerHeight(), + inputWidth = inst.input ? inst.input.outerWidth() : 0, + inputHeight = inst.input ? inst.input.outerHeight() : 0, + viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()), + viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop()); + + offset.left -= (this._get(inst, "isRTL") ? (dpWidth - inputWidth) : 0); + offset.left -= (isFixed && offset.left === inst.input.offset().left) ? $(document).scrollLeft() : 0; + offset.top -= (isFixed && offset.top === (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0; + + // now check if datepicker is showing outside window viewport - move to a better place if so. + offset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ? + Math.abs(offset.left + dpWidth - viewWidth) : 0); + offset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ? + Math.abs(dpHeight + inputHeight) : 0); + + return offset; + }, + + /* Find an object's position on the screen. */ + _findPos: function(obj) { + var position, + inst = this._getInst(obj), + isRTL = this._get(inst, "isRTL"); + + while (obj && (obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden(obj))) { + obj = obj[isRTL ? "previousSibling" : "nextSibling"]; + } + + position = $(obj).offset(); + return [position.left, position.top]; + }, + + /* Hide the date picker from view. + * @param input element - the input field attached to the date picker + */ + _hideDatepicker: function(input) { + var showAnim, duration, postProcess, onClose, + inst = this._curInst; + + if (!inst || (input && inst !== $.data(input, PROP_NAME))) { + return; + } + + if (this._datepickerShowing) { + showAnim = this._get(inst, "showAnim"); + duration = this._get(inst, "duration"); + postProcess = function() { + $.datepicker._tidyDialog(inst); + }; + + // DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed + if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) { + inst.dpDiv.hide(showAnim, $.datepicker._get(inst, "showOptions"), duration, postProcess); + } else { + inst.dpDiv[(showAnim === "slideDown" ? "slideUp" : + (showAnim === "fadeIn" ? "fadeOut" : "hide"))]((showAnim ? duration : null), postProcess); + } + + if (!showAnim) { + postProcess(); + } + this._datepickerShowing = false; + + onClose = this._get(inst, "onClose"); + if (onClose) { + onClose.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : ""), inst]); + } + + this._lastInput = null; + if (this._inDialog) { + this._dialogInput.css({ position: "absolute", left: "0", top: "-100px" }); + if ($.blockUI) { + $.unblockUI(); + $("body").append(this.dpDiv); + } + } + this._inDialog = false; + } + }, + + /* Tidy up after a dialog display. */ + _tidyDialog: function(inst) { + inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar"); + }, + + /* Close date picker if clicked elsewhere. */ + _checkExternalClick: function(event) { + if (!$.datepicker._curInst) { + return; + } + + var $target = $(event.target), + inst = $.datepicker._getInst($target[0]); + + if ( ( ( $target[0].id !== $.datepicker._mainDivId && + $target.parents("#" + $.datepicker._mainDivId).length === 0 && + !$target.hasClass($.datepicker.markerClassName) && + !$target.closest("." + $.datepicker._triggerClass).length && + $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) || + ( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst !== inst ) ) { + $.datepicker._hideDatepicker(); + } + }, + + /* Adjust one of the date sub-fields. */ + _adjustDate: function(id, offset, period) { + var target = $(id), + inst = this._getInst(target[0]); + + if (this._isDisabledDatepicker(target[0])) { + return; + } + this._adjustInstDate(inst, offset + + (period === "M" ? this._get(inst, "showCurrentAtPos") : 0), // undo positioning + period); + this._updateDatepicker(inst); + }, + + /* Action for current link. */ + _gotoToday: function(id) { + var date, + target = $(id), + inst = this._getInst(target[0]); + + if (this._get(inst, "gotoCurrent") && inst.currentDay) { + inst.selectedDay = inst.currentDay; + inst.drawMonth = inst.selectedMonth = inst.currentMonth; + inst.drawYear = inst.selectedYear = inst.currentYear; + } else { + date = new Date(); + inst.selectedDay = date.getDate(); + inst.drawMonth = inst.selectedMonth = date.getMonth(); + inst.drawYear = inst.selectedYear = date.getFullYear(); + } + this._notifyChange(inst); + this._adjustDate(target); + }, + + /* Action for selecting a new month/year. */ + _selectMonthYear: function(id, select, period) { + var target = $(id), + inst = this._getInst(target[0]); + + inst["selected" + (period === "M" ? "Month" : "Year")] = + inst["draw" + (period === "M" ? "Month" : "Year")] = + parseInt(select.options[select.selectedIndex].value,10); + + this._notifyChange(inst); + this._adjustDate(target); + }, + + /* Action for selecting a day. */ + _selectDay: function(id, month, year, td) { + var inst, + target = $(id); + + if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) { + return; + } + + inst = this._getInst(target[0]); + inst.selectedDay = inst.currentDay = $("a", td).html(); + inst.selectedMonth = inst.currentMonth = month; + inst.selectedYear = inst.currentYear = year; + this._selectDate(id, this._formatDate(inst, + inst.currentDay, inst.currentMonth, inst.currentYear)); + }, + + /* Erase the input field and hide the date picker. */ + _clearDate: function(id) { + var target = $(id); + this._selectDate(target, ""); + }, + + /* Update the input field with the selected date. */ + _selectDate: function(id, dateStr) { + var onSelect, + target = $(id), + inst = this._getInst(target[0]); + + dateStr = (dateStr != null ? dateStr : this._formatDate(inst)); + if (inst.input) { + inst.input.val(dateStr); + } + this._updateAlternate(inst); + + onSelect = this._get(inst, "onSelect"); + if (onSelect) { + onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); // trigger custom callback + } else if (inst.input) { + inst.input.trigger("change"); // fire the change event + } + + if (inst.inline){ + this._updateDatepicker(inst); + } else { + this._hideDatepicker(); + this._lastInput = inst.input[0]; + if (typeof(inst.input[0]) !== "object") { + inst.input.focus(); // restore focus + } + this._lastInput = null; + } + }, + + /* Update any alternate field to synchronise with the main field. */ + _updateAlternate: function(inst) { + var altFormat, date, dateStr, + altField = this._get(inst, "altField"); + + if (altField) { // update alternate field too + altFormat = this._get(inst, "altFormat") || this._get(inst, "dateFormat"); + date = this._getDate(inst); + dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst)); + $(altField).each(function() { $(this).val(dateStr); }); + } + }, + + /* Set as beforeShowDay function to prevent selection of weekends. + * @param date Date - the date to customise + * @return [boolean, string] - is this date selectable?, what is its CSS class? + */ + noWeekends: function(date) { + var day = date.getDay(); + return [(day > 0 && day < 6), ""]; + }, + + /* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition. + * @param date Date - the date to get the week for + * @return number - the number of the week within the year that contains this date + */ + iso8601Week: function(date) { + var time, + checkDate = new Date(date.getTime()); + + // Find Thursday of this week starting on Monday + checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); + + time = checkDate.getTime(); + checkDate.setMonth(0); // Compare with Jan 1 + checkDate.setDate(1); + return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1; + }, + + /* Parse a string value into a date object. + * See formatDate below for the possible formats. + * + * @param format string - the expected format of the date + * @param value string - the date in the above format + * @param settings Object - attributes include: + * shortYearCutoff number - the cutoff year for determining the century (optional) + * dayNamesShort string[7] - abbreviated names of the days from Sunday (optional) + * dayNames string[7] - names of the days from Sunday (optional) + * monthNamesShort string[12] - abbreviated names of the months (optional) + * monthNames string[12] - names of the months (optional) + * @return Date - the extracted date value or null if value is blank + */ + parseDate: function (format, value, settings) { + if (format == null || value == null) { + throw "Invalid arguments"; + } + + value = (typeof value === "object" ? value.toString() : value + ""); + if (value === "") { + return null; + } + + var iFormat, dim, extra, + iValue = 0, + shortYearCutoffTemp = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff, + shortYearCutoff = (typeof shortYearCutoffTemp !== "string" ? shortYearCutoffTemp : + new Date().getFullYear() % 100 + parseInt(shortYearCutoffTemp, 10)), + dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort, + dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames, + monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort, + monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames, + year = -1, + month = -1, + day = -1, + doy = -1, + literal = false, + date, + // Check whether a format character is doubled + lookAhead = function(match) { + var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); + if (matches) { + iFormat++; + } + return matches; + }, + // Extract a number from the string value + getNumber = function(match) { + var isDoubled = lookAhead(match), + size = (match === "@" ? 14 : (match === "!" ? 20 : + (match === "y" && isDoubled ? 4 : (match === "o" ? 3 : 2)))), + digits = new RegExp("^\\d{1," + size + "}"), + num = value.substring(iValue).match(digits); + if (!num) { + throw "Missing number at position " + iValue; + } + iValue += num[0].length; + return parseInt(num[0], 10); + }, + // Extract a name from the string value and convert to an index + getName = function(match, shortNames, longNames) { + var index = -1, + names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) { + return [ [k, v] ]; + }).sort(function (a, b) { + return -(a[1].length - b[1].length); + }); + + $.each(names, function (i, pair) { + var name = pair[1]; + if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) { + index = pair[0]; + iValue += name.length; + return false; + } + }); + if (index !== -1) { + return index + 1; + } else { + throw "Unknown name at position " + iValue; + } + }, + // Confirm that a literal character matches the string value + checkLiteral = function() { + if (value.charAt(iValue) !== format.charAt(iFormat)) { + throw "Unexpected literal at position " + iValue; + } + iValue++; + }; + + for (iFormat = 0; iFormat < format.length; iFormat++) { + if (literal) { + if (format.charAt(iFormat) === "'" && !lookAhead("'")) { + literal = false; + } else { + checkLiteral(); + } + } else { + switch (format.charAt(iFormat)) { + case "d": + day = getNumber("d"); + break; + case "D": + getName("D", dayNamesShort, dayNames); + break; + case "o": + doy = getNumber("o"); + break; + case "m": + month = getNumber("m"); + break; + case "M": + month = getName("M", monthNamesShort, monthNames); + break; + case "y": + year = getNumber("y"); + break; + case "@": + date = new Date(getNumber("@")); + year = date.getFullYear(); + month = date.getMonth() + 1; + day = date.getDate(); + break; + case "!": + date = new Date((getNumber("!") - this._ticksTo1970) / 10000); + year = date.getFullYear(); + month = date.getMonth() + 1; + day = date.getDate(); + break; + case "'": + if (lookAhead("'")){ + checkLiteral(); + } else { + literal = true; + } + break; + default: + checkLiteral(); + } + } + } + + if (iValue < value.length){ + extra = value.substr(iValue); + if (!/^\s+/.test(extra)) { + throw "Extra/unparsed characters found in date: " + extra; + } + } + + if (year === -1) { + year = new Date().getFullYear(); + } else if (year < 100) { + year += new Date().getFullYear() - new Date().getFullYear() % 100 + + (year <= shortYearCutoff ? 0 : -100); + } + + if (doy > -1) { + month = 1; + day = doy; + do { + dim = this._getDaysInMonth(year, month - 1); + if (day <= dim) { + break; + } + month++; + day -= dim; + } while (true); + } + + date = this._daylightSavingAdjust(new Date(year, month - 1, day)); + if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) { + throw "Invalid date"; // E.g. 31/02/00 + } + return date; + }, + + /* Standard date formats. */ + ATOM: "yy-mm-dd", // RFC 3339 (ISO 8601) + COOKIE: "D, dd M yy", + ISO_8601: "yy-mm-dd", + RFC_822: "D, d M y", + RFC_850: "DD, dd-M-y", + RFC_1036: "D, d M y", + RFC_1123: "D, d M yy", + RFC_2822: "D, d M yy", + RSS: "D, d M y", // RFC 822 + TICKS: "!", + TIMESTAMP: "@", + W3C: "yy-mm-dd", // ISO 8601 + + _ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + + Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000), + + /* Format a date object into a string value. + * The format can be combinations of the following: + * d - day of month (no leading zero) + * dd - day of month (two digit) + * o - day of year (no leading zeros) + * oo - day of year (three digit) + * D - day name short + * DD - day name long + * m - month of year (no leading zero) + * mm - month of year (two digit) + * M - month name short + * MM - month name long + * y - year (two digit) + * yy - year (four digit) + * @ - Unix timestamp (ms since 01/01/1970) + * ! - Windows ticks (100ns since 01/01/0001) + * "..." - literal text + * '' - single quote + * + * @param format string - the desired format of the date + * @param date Date - the date value to format + * @param settings Object - attributes include: + * dayNamesShort string[7] - abbreviated names of the days from Sunday (optional) + * dayNames string[7] - names of the days from Sunday (optional) + * monthNamesShort string[12] - abbreviated names of the months (optional) + * monthNames string[12] - names of the months (optional) + * @return string - the date in the above format + */ + formatDate: function (format, date, settings) { + if (!date) { + return ""; + } + + var iFormat, + dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort, + dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames, + monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort, + monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames, + // Check whether a format character is doubled + lookAhead = function(match) { + var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); + if (matches) { + iFormat++; + } + return matches; + }, + // Format a number, with leading zero if necessary + formatNumber = function(match, value, len) { + var num = "" + value; + if (lookAhead(match)) { + while (num.length < len) { + num = "0" + num; + } + } + return num; + }, + // Format a name, short or long as requested + formatName = function(match, value, shortNames, longNames) { + return (lookAhead(match) ? longNames[value] : shortNames[value]); + }, + output = "", + literal = false; + + if (date) { + for (iFormat = 0; iFormat < format.length; iFormat++) { + if (literal) { + if (format.charAt(iFormat) === "'" && !lookAhead("'")) { + literal = false; + } else { + output += format.charAt(iFormat); + } + } else { + switch (format.charAt(iFormat)) { + case "d": + output += formatNumber("d", date.getDate(), 2); + break; + case "D": + output += formatName("D", date.getDay(), dayNamesShort, dayNames); + break; + case "o": + output += formatNumber("o", + Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3); + break; + case "m": + output += formatNumber("m", date.getMonth() + 1, 2); + break; + case "M": + output += formatName("M", date.getMonth(), monthNamesShort, monthNames); + break; + case "y": + output += (lookAhead("y") ? date.getFullYear() : + (date.getYear() % 100 < 10 ? "0" : "") + date.getYear() % 100); + break; + case "@": + output += date.getTime(); + break; + case "!": + output += date.getTime() * 10000 + this._ticksTo1970; + break; + case "'": + if (lookAhead("'")) { + output += "'"; + } else { + literal = true; + } + break; + default: + output += format.charAt(iFormat); + } + } + } + } + return output; + }, + + /* Extract all possible characters from the date format. */ + _possibleChars: function (format) { + var iFormat, + chars = "", + literal = false, + // Check whether a format character is doubled + lookAhead = function(match) { + var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); + if (matches) { + iFormat++; + } + return matches; + }; + + for (iFormat = 0; iFormat < format.length; iFormat++) { + if (literal) { + if (format.charAt(iFormat) === "'" && !lookAhead("'")) { + literal = false; + } else { + chars += format.charAt(iFormat); + } + } else { + switch (format.charAt(iFormat)) { + case "d": case "m": case "y": case "@": + chars += "0123456789"; + break; + case "D": case "M": + return null; // Accept anything + case "'": + if (lookAhead("'")) { + chars += "'"; + } else { + literal = true; + } + break; + default: + chars += format.charAt(iFormat); + } + } + } + return chars; + }, + + /* Get a setting value, defaulting if necessary. */ + _get: function(inst, name) { + return inst.settings[name] !== undefined ? + inst.settings[name] : this._defaults[name]; + }, + + /* Parse existing date and initialise date picker. */ + _setDateFromField: function(inst, noDefault) { + if (inst.input.val() === inst.lastVal) { + return; + } + + var dateFormat = this._get(inst, "dateFormat"), + dates = inst.lastVal = inst.input ? inst.input.val() : null, + defaultDate = this._getDefaultDate(inst), + date = defaultDate, + settings = this._getFormatConfig(inst); + + try { + date = this.parseDate(dateFormat, dates, settings) || defaultDate; + } catch (event) { + dates = (noDefault ? "" : dates); + } + inst.selectedDay = date.getDate(); + inst.drawMonth = inst.selectedMonth = date.getMonth(); + inst.drawYear = inst.selectedYear = date.getFullYear(); + inst.currentDay = (dates ? date.getDate() : 0); + inst.currentMonth = (dates ? date.getMonth() : 0); + inst.currentYear = (dates ? date.getFullYear() : 0); + this._adjustInstDate(inst); + }, + + /* Retrieve the default date shown on opening. */ + _getDefaultDate: function(inst) { + return this._restrictMinMax(inst, + this._determineDate(inst, this._get(inst, "defaultDate"), new Date())); + }, + + /* A date may be specified as an exact value or a relative one. */ + _determineDate: function(inst, date, defaultDate) { + var offsetNumeric = function(offset) { + var date = new Date(); + date.setDate(date.getDate() + offset); + return date; + }, + offsetString = function(offset) { + try { + return $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"), + offset, $.datepicker._getFormatConfig(inst)); + } + catch (e) { + // Ignore + } + + var date = (offset.toLowerCase().match(/^c/) ? + $.datepicker._getDate(inst) : null) || new Date(), + year = date.getFullYear(), + month = date.getMonth(), + day = date.getDate(), + pattern = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g, + matches = pattern.exec(offset); + + while (matches) { + switch (matches[2] || "d") { + case "d" : case "D" : + day += parseInt(matches[1],10); break; + case "w" : case "W" : + day += parseInt(matches[1],10) * 7; break; + case "m" : case "M" : + month += parseInt(matches[1],10); + day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); + break; + case "y": case "Y" : + year += parseInt(matches[1],10); + day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); + break; + } + matches = pattern.exec(offset); + } + return new Date(year, month, day); + }, + newDate = (date == null || date === "" ? defaultDate : (typeof date === "string" ? offsetString(date) : + (typeof date === "number" ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime())))); + + newDate = (newDate && newDate.toString() === "Invalid Date" ? defaultDate : newDate); + if (newDate) { + newDate.setHours(0); + newDate.setMinutes(0); + newDate.setSeconds(0); + newDate.setMilliseconds(0); + } + return this._daylightSavingAdjust(newDate); + }, + + /* Handle switch to/from daylight saving. + * Hours may be non-zero on daylight saving cut-over: + * > 12 when midnight changeover, but then cannot generate + * midnight datetime, so jump to 1AM, otherwise reset. + * @param date (Date) the date to check + * @return (Date) the corrected date + */ + _daylightSavingAdjust: function(date) { + if (!date) { + return null; + } + date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0); + return date; + }, + + /* Set the date(s) directly. */ + _setDate: function(inst, date, noChange) { + var clear = !date, + origMonth = inst.selectedMonth, + origYear = inst.selectedYear, + newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date())); + + inst.selectedDay = inst.currentDay = newDate.getDate(); + inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth(); + inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear(); + if ((origMonth !== inst.selectedMonth || origYear !== inst.selectedYear) && !noChange) { + this._notifyChange(inst); + } + this._adjustInstDate(inst); + if (inst.input) { + inst.input.val(clear ? "" : this._formatDate(inst)); + } + }, + + /* Retrieve the date(s) directly. */ + _getDate: function(inst) { + var startDate = (!inst.currentYear || (inst.input && inst.input.val() === "") ? null : + this._daylightSavingAdjust(new Date( + inst.currentYear, inst.currentMonth, inst.currentDay))); + return startDate; + }, + + /* Attach the onxxx handlers. These are declared statically so + * they work with static code transformers like Caja. + */ + _attachHandlers: function(inst) { + var stepMonths = this._get(inst, "stepMonths"), + id = "#" + inst.id.replace( /\\\\/g, "\\" ); + inst.dpDiv.find("[data-handler]").map(function () { + var handler = { + prev: function () { + $.datepicker._adjustDate(id, -stepMonths, "M"); + }, + next: function () { + $.datepicker._adjustDate(id, +stepMonths, "M"); + }, + hide: function () { + $.datepicker._hideDatepicker(); + }, + today: function () { + $.datepicker._gotoToday(id); + }, + selectDay: function () { + $.datepicker._selectDay(id, +this.getAttribute("data-month"), +this.getAttribute("data-year"), this); + return false; + }, + selectMonth: function () { + $.datepicker._selectMonthYear(id, this, "M"); + return false; + }, + selectYear: function () { + $.datepicker._selectMonthYear(id, this, "Y"); + return false; + } + }; + $(this).bind(this.getAttribute("data-event"), handler[this.getAttribute("data-handler")]); + }); + }, + + /* Generate the HTML for the current state of the date picker. */ + _generateHTML: function(inst) { + var maxDraw, prevText, prev, nextText, next, currentText, gotoDate, + controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin, + monthNames, monthNamesShort, beforeShowDay, showOtherMonths, + selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate, + cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows, + printDate, dRow, tbody, daySettings, otherMonth, unselectable, + tempDate = new Date(), + today = this._daylightSavingAdjust( + new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate())), // clear time + isRTL = this._get(inst, "isRTL"), + showButtonPanel = this._get(inst, "showButtonPanel"), + hideIfNoPrevNext = this._get(inst, "hideIfNoPrevNext"), + navigationAsDateFormat = this._get(inst, "navigationAsDateFormat"), + numMonths = this._getNumberOfMonths(inst), + showCurrentAtPos = this._get(inst, "showCurrentAtPos"), + stepMonths = this._get(inst, "stepMonths"), + isMultiMonth = (numMonths[0] !== 1 || numMonths[1] !== 1), + currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) : + new Date(inst.currentYear, inst.currentMonth, inst.currentDay))), + minDate = this._getMinMaxDate(inst, "min"), + maxDate = this._getMinMaxDate(inst, "max"), + drawMonth = inst.drawMonth - showCurrentAtPos, + drawYear = inst.drawYear; + + if (drawMonth < 0) { + drawMonth += 12; + drawYear--; + } + if (maxDate) { + maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(), + maxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate())); + maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw); + while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) { + drawMonth--; + if (drawMonth < 0) { + drawMonth = 11; + drawYear--; + } + } + } + inst.drawMonth = drawMonth; + inst.drawYear = drawYear; + + prevText = this._get(inst, "prevText"); + prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText, + this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)), + this._getFormatConfig(inst))); + + prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ? + "" + prevText + "" : + (hideIfNoPrevNext ? "" : "" + prevText + "")); + + nextText = this._get(inst, "nextText"); + nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText, + this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)), + this._getFormatConfig(inst))); + + next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ? + "" + nextText + "" : + (hideIfNoPrevNext ? "" : "" + nextText + "")); + + currentText = this._get(inst, "currentText"); + gotoDate = (this._get(inst, "gotoCurrent") && inst.currentDay ? currentDate : today); + currentText = (!navigationAsDateFormat ? currentText : + this.formatDate(currentText, gotoDate, this._getFormatConfig(inst))); + + controls = (!inst.inline ? "" : ""); + + buttonPanel = (showButtonPanel) ? "
" + (isRTL ? controls : "") + + (this._isInRange(inst, gotoDate) ? "" : "") + (isRTL ? "" : controls) + "
" : ""; + + firstDay = parseInt(this._get(inst, "firstDay"),10); + firstDay = (isNaN(firstDay) ? 0 : firstDay); + + showWeek = this._get(inst, "showWeek"); + dayNames = this._get(inst, "dayNames"); + dayNamesMin = this._get(inst, "dayNamesMin"); + monthNames = this._get(inst, "monthNames"); + monthNamesShort = this._get(inst, "monthNamesShort"); + beforeShowDay = this._get(inst, "beforeShowDay"); + showOtherMonths = this._get(inst, "showOtherMonths"); + selectOtherMonths = this._get(inst, "selectOtherMonths"); + defaultDate = this._getDefaultDate(inst); + html = ""; + dow; + for (row = 0; row < numMonths[0]; row++) { + group = ""; + this.maxRows = 4; + for (col = 0; col < numMonths[1]; col++) { + selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay)); + cornerClass = " ui-corner-all"; + calender = ""; + if (isMultiMonth) { + calender += "
"; + } + calender += "
" + + (/all|left/.test(cornerClass) && row === 0 ? (isRTL ? next : prev) : "") + + (/all|right/.test(cornerClass) && row === 0 ? (isRTL ? prev : next) : "") + + this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate, + row > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers + "
" + + ""; + thead = (showWeek ? "" : ""); + for (dow = 0; dow < 7; dow++) { // days of the week + day = (dow + firstDay) % 7; + thead += "= 5 ? " class='ui-datepicker-week-end'" : "") + ">" + + "" + dayNamesMin[day] + ""; + } + calender += thead + ""; + daysInMonth = this._getDaysInMonth(drawYear, drawMonth); + if (drawYear === inst.selectedYear && drawMonth === inst.selectedMonth) { + inst.selectedDay = Math.min(inst.selectedDay, daysInMonth); + } + leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7; + curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate + numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043) + this.maxRows = numRows; + printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays)); + for (dRow = 0; dRow < numRows; dRow++) { // create date picker rows + calender += ""; + tbody = (!showWeek ? "" : ""); + for (dow = 0; dow < 7; dow++) { // create date picker days + daySettings = (beforeShowDay ? + beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, ""]); + otherMonth = (printDate.getMonth() !== drawMonth); + unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] || + (minDate && printDate < minDate) || (maxDate && printDate > maxDate); + tbody += ""; // display selectable date + printDate.setDate(printDate.getDate() + 1); + printDate = this._daylightSavingAdjust(printDate); + } + calender += tbody + ""; + } + drawMonth++; + if (drawMonth > 11) { + drawMonth = 0; + drawYear++; + } + calender += "
" + this._get(inst, "weekHeader") + "
" + + this._get(inst, "calculateWeek")(printDate) + "" + // actions + (otherMonth && !showOtherMonths ? " " : // display for other months + (unselectable ? "" + printDate.getDate() + "" : "" + printDate.getDate() + "")) + "
" + (isMultiMonth ? "
" + + ((numMonths[0] > 0 && col === numMonths[1]-1) ? "
" : "") : ""); + group += calender; + } + html += group; + } + html += buttonPanel; + inst._keyEvent = false; + return html; + }, + + /* Generate the month and year header. */ + _generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate, + secondary, monthNames, monthNamesShort) { + + var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear, + changeMonth = this._get(inst, "changeMonth"), + changeYear = this._get(inst, "changeYear"), + showMonthAfterYear = this._get(inst, "showMonthAfterYear"), + html = "
", + monthHtml = ""; + + // month selection + if (secondary || !changeMonth) { + monthHtml += "" + monthNames[drawMonth] + ""; + } else { + inMinYear = (minDate && minDate.getFullYear() === drawYear); + inMaxYear = (maxDate && maxDate.getFullYear() === drawYear); + monthHtml += ""; + } + + if (!showMonthAfterYear) { + html += monthHtml + (secondary || !(changeMonth && changeYear) ? " " : ""); + } + + // year selection + if ( !inst.yearshtml ) { + inst.yearshtml = ""; + if (secondary || !changeYear) { + html += "" + drawYear + ""; + } else { + // determine range of years to display + years = this._get(inst, "yearRange").split(":"); + thisYear = new Date().getFullYear(); + determineYear = function(value) { + var year = (value.match(/c[+\-].*/) ? drawYear + parseInt(value.substring(1), 10) : + (value.match(/[+\-].*/) ? thisYear + parseInt(value, 10) : + parseInt(value, 10))); + return (isNaN(year) ? thisYear : year); + }; + year = determineYear(years[0]); + endYear = Math.max(year, determineYear(years[1] || "")); + year = (minDate ? Math.max(year, minDate.getFullYear()) : year); + endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear); + inst.yearshtml += ""; + + html += inst.yearshtml; + inst.yearshtml = null; + } + } + + html += this._get(inst, "yearSuffix"); + if (showMonthAfterYear) { + html += (secondary || !(changeMonth && changeYear) ? " " : "") + monthHtml; + } + html += "
"; // Close datepicker_header + return html; + }, + + /* Adjust one of the date sub-fields. */ + _adjustInstDate: function(inst, offset, period) { + var year = inst.drawYear + (period === "Y" ? offset : 0), + month = inst.drawMonth + (period === "M" ? offset : 0), + day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period === "D" ? offset : 0), + date = this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year, month, day))); + + inst.selectedDay = date.getDate(); + inst.drawMonth = inst.selectedMonth = date.getMonth(); + inst.drawYear = inst.selectedYear = date.getFullYear(); + if (period === "M" || period === "Y") { + this._notifyChange(inst); + } + }, + + /* Ensure a date is within any min/max bounds. */ + _restrictMinMax: function(inst, date) { + var minDate = this._getMinMaxDate(inst, "min"), + maxDate = this._getMinMaxDate(inst, "max"), + newDate = (minDate && date < minDate ? minDate : date); + return (maxDate && newDate > maxDate ? maxDate : newDate); + }, + + /* Notify change of month/year. */ + _notifyChange: function(inst) { + var onChange = this._get(inst, "onChangeMonthYear"); + if (onChange) { + onChange.apply((inst.input ? inst.input[0] : null), + [inst.selectedYear, inst.selectedMonth + 1, inst]); + } + }, + + /* Determine the number of months to show. */ + _getNumberOfMonths: function(inst) { + var numMonths = this._get(inst, "numberOfMonths"); + return (numMonths == null ? [1, 1] : (typeof numMonths === "number" ? [1, numMonths] : numMonths)); + }, + + /* Determine the current maximum date - ensure no time components are set. */ + _getMinMaxDate: function(inst, minMax) { + return this._determineDate(inst, this._get(inst, minMax + "Date"), null); + }, + + /* Find the number of days in a given month. */ + _getDaysInMonth: function(year, month) { + return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate(); + }, + + /* Find the day of the week of the first of a month. */ + _getFirstDayOfMonth: function(year, month) { + return new Date(year, month, 1).getDay(); + }, + + /* Determines if we should allow a "next/prev" month display change. */ + _canAdjustMonth: function(inst, offset, curYear, curMonth) { + var numMonths = this._getNumberOfMonths(inst), + date = this._daylightSavingAdjust(new Date(curYear, + curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1)); + + if (offset < 0) { + date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth())); + } + return this._isInRange(inst, date); + }, + + /* Is the given date in the accepted range? */ + _isInRange: function(inst, date) { + var yearSplit, currentYear, + minDate = this._getMinMaxDate(inst, "min"), + maxDate = this._getMinMaxDate(inst, "max"), + minYear = null, + maxYear = null, + years = this._get(inst, "yearRange"); + if (years){ + yearSplit = years.split(":"); + currentYear = new Date().getFullYear(); + minYear = parseInt(yearSplit[0], 10); + maxYear = parseInt(yearSplit[1], 10); + if ( yearSplit[0].match(/[+\-].*/) ) { + minYear += currentYear; + } + if ( yearSplit[1].match(/[+\-].*/) ) { + maxYear += currentYear; + } + } + + return ((!minDate || date.getTime() >= minDate.getTime()) && + (!maxDate || date.getTime() <= maxDate.getTime()) && + (!minYear || date.getFullYear() >= minYear) && + (!maxYear || date.getFullYear() <= maxYear)); + }, + + /* Provide the configuration settings for formatting/parsing. */ + _getFormatConfig: function(inst) { + var shortYearCutoff = this._get(inst, "shortYearCutoff"); + shortYearCutoff = (typeof shortYearCutoff !== "string" ? shortYearCutoff : + new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)); + return {shortYearCutoff: shortYearCutoff, + dayNamesShort: this._get(inst, "dayNamesShort"), dayNames: this._get(inst, "dayNames"), + monthNamesShort: this._get(inst, "monthNamesShort"), monthNames: this._get(inst, "monthNames")}; + }, + + /* Format the given date for display. */ + _formatDate: function(inst, day, month, year) { + if (!day) { + inst.currentDay = inst.selectedDay; + inst.currentMonth = inst.selectedMonth; + inst.currentYear = inst.selectedYear; + } + var date = (day ? (typeof day === "object" ? day : + this._daylightSavingAdjust(new Date(year, month, day))) : + this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); + return this.formatDate(this._get(inst, "dateFormat"), date, this._getFormatConfig(inst)); + } +}); + +/* + * Bind hover events for datepicker elements. + * Done via delegate so the binding only occurs once in the lifetime of the parent div. + * Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker. + */ +function bindHover(dpDiv) { + var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a"; + return dpDiv.delegate(selector, "mouseout", function() { + $(this).removeClass("ui-state-hover"); + if (this.className.indexOf("ui-datepicker-prev") !== -1) { + $(this).removeClass("ui-datepicker-prev-hover"); + } + if (this.className.indexOf("ui-datepicker-next") !== -1) { + $(this).removeClass("ui-datepicker-next-hover"); + } + }) + .delegate(selector, "mouseover", function(){ + if (!$.datepicker._isDisabledDatepicker( instActive.inline ? dpDiv.parent()[0] : instActive.input[0])) { + $(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"); + $(this).addClass("ui-state-hover"); + if (this.className.indexOf("ui-datepicker-prev") !== -1) { + $(this).addClass("ui-datepicker-prev-hover"); + } + if (this.className.indexOf("ui-datepicker-next") !== -1) { + $(this).addClass("ui-datepicker-next-hover"); + } + } + }); +} + +/* jQuery extend now ignores nulls! */ +function extendRemove(target, props) { + $.extend(target, props); + for (var name in props) { + if (props[name] == null) { + target[name] = props[name]; + } + } + return target; +} + +/* Invoke the datepicker functionality. + @param options string - a command, optionally followed by additional parameters or + Object - settings for attaching new datepicker functionality + @return jQuery object */ +$.fn.datepicker = function(options){ + + /* Verify an empty collection wasn't passed - Fixes #6976 */ + if ( !this.length ) { + return this; + } + + /* Initialise the date picker. */ + if (!$.datepicker.initialized) { + $(document).mousedown($.datepicker._checkExternalClick); + $.datepicker.initialized = true; + } + + /* Append datepicker main container to body if not exist. */ + if ($("#"+$.datepicker._mainDivId).length === 0) { + $("body").append($.datepicker.dpDiv); + } + + var otherArgs = Array.prototype.slice.call(arguments, 1); + if (typeof options === "string" && (options === "isDisabled" || options === "getDate" || options === "widget")) { + return $.datepicker["_" + options + "Datepicker"]. + apply($.datepicker, [this[0]].concat(otherArgs)); + } + if (options === "option" && arguments.length === 2 && typeof arguments[1] === "string") { + return $.datepicker["_" + options + "Datepicker"]. + apply($.datepicker, [this[0]].concat(otherArgs)); + } + return this.each(function() { + typeof options === "string" ? + $.datepicker["_" + options + "Datepicker"]. + apply($.datepicker, [this].concat(otherArgs)) : + $.datepicker._attachDatepicker(this, options); + }); +}; + +$.datepicker = new Datepicker(); // singleton instance +$.datepicker.initialized = false; +$.datepicker.uuid = new Date().getTime(); +$.datepicker.version = "1.10.3"; + +})(jQuery); diff --git a/view/js/select2.full.min.js b/view/js/select2.full.min.js new file mode 100755 index 0000000..684edf3 --- /dev/null +++ b/view/js/select2.full.min.js @@ -0,0 +1,3 @@ +/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.slice(0,n.length-1).concat(a),k=0;k0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=v.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),n.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(a){if(e(r,a)){var c=r[a];delete r[a],t[a]=!0,m.apply(b,c)}if(!e(q,a)&&!e(t,a))throw new Error("No "+a);return q[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(a,c,d,f){var h,k,l,m,n,s,u=[],v=typeof d;if(f=f||a,"undefined"===v||"function"===v){for(c=!c.length&&d.length?["require","exports","module"]:c,n=0;n0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;hc;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;a>c;c++){var d=Math.floor(36*Math.random());b+=d.toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e":">",'"':""","'":"'","/":"/"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('
    ');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('
  • '),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()}),e=b.$results.find(".select2-results__option[aria-selected]");e.each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("aria-selected","true"):b.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"treeitem","aria-selected":"false"};b.disabled&&(delete d["aria-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["aria-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d.role="group",d["aria-label"]=b.text,delete d["aria-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";a(h);this.template(b,h);for(var i=[],j=0;j",{"class":"select2-results__options select2-results__options--nested"});m.append(i),g.append(h),g.append(m)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("unselect",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("aria-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):0>h-g&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-b+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(b){var c=a(this),e=c.data("data");return"true"===c.attr("aria-selected")?void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{})):void d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){var a=this.$results.find(".select2-results__option--highlighted");return a},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),2>=c?this.$results.scrollTop(0):(g>this.$results.outerHeight()||0>g)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){var a={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46};return a}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a,b){var d=this,e=(a.id+"-container",a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),d.$selection.focus(),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2"),e=a(".select2.select2-container--open");e.each(function(){var b=a(this);if(this!=d[0]){var c=b.data("element");c.select2("close")}})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){var c=b.find(".selection");c.append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html(''),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()}),a.on("selection:update",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},e.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},e.prototype.selectionContainer=function(){return a("")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.prop("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('
      '),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){e.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!e.options.get("disabled")){var c=a(this),d=c.parent(),f=d.data("data");e.trigger("unselect",{originalEvent:b,data:f})}})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},d.prototype.selectionContainer=function(){var b=a('
    • ×
    • ');return b},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d1;if(d||c)return a.call(this,b);this.clear();var e=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(e)},b}),b.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e0||0===c.length)){var d=a('×');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented();var b=a.which;if(b===c.BACKSPACE&&""===e.$search.val()){var d=e.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var f=d.data("data");e.searchRemoveChoice(f),a.preventDefault()}}});var f=document.documentMode,g=f&&11>=f;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){return g?void e.$selection.off("input.search input.searchcheck"):void e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(g&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{var b=this.$search.val().length+1;a=.75*b+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){var a={"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"};return a}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),d+=null!=c.id?"-"+c.id.toString():"-"+a.generateChars(4)},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change"); +if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h0&&b.term.length>this.maximumInputLength?void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;return d.maximumSelectionLength>0&&f>=d.maximumSelectionLength?void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}}):void a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("focus",function(){c.isOpen()&&e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){var b=e.showSearch(a);b?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){var c=e.$results.offset().top+e.$results.outerHeight(!1),d=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1);c+50>=d&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('
    • '),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a(""),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id,h=this.$container.parents().filter(b.hasScroll);h.off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.topf.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),(null!=l.tokenSeparators||null!=l.tokenizer)&&(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){var h=e.children[g],i=c(d,h);null==i&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var j=b(e.text).toUpperCase(),k=b(d.term).toUpperCase();return j.indexOf(k)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)};var E=new D;return E}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return 0>=e?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;i>h;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),(null==a||0===a.length)&&(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null; +},e.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("select2/compat/utils",["jquery"],function(a){function b(b,c,d){var e,f,g=[];e=a.trim(b.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0===this.indexOf("select2-")&&g.push(this)})),e=a.trim(c.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each(function(){0!==this.indexOf("select2-")&&(f=d(this),null!=f&&g.push(f))})),b.attr("class",g.join(" "))}return{syncCssClasses:b}}),b.define("select2/compat/containerCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("containerCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptContainerCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("containerCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/dropdownCss",["jquery","./utils"],function(a,b){function c(a){return null}function d(){}return d.prototype.render=function(d){var e=d.call(this),f=this.options.get("dropdownCssClass")||"";a.isFunction(f)&&(f=f(this.$element));var g=this.options.get("adaptDropdownCssClass");if(g=g||c,-1!==f.indexOf(":all:")){f=f.replace(":all:","");var h=g;g=function(a){var b=h(a);return null!=b?b+" "+a:a}}var i=this.options.get("dropdownCss")||{};return a.isFunction(i)&&(i=i(this.$element)),b.syncCssClasses(e,this.$element,g),e.css(i),e.addClass(f),e},d}),b.define("select2/compat/initSelection",["jquery"],function(a){function b(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"),this.initSelection=c.get("initSelection"),this._isInitialized=!1,a.call(this,b,c)}return b.prototype.current=function(b,c){var d=this;return this._isInitialized?void b.call(this,c):void this.initSelection.call(null,this.$element,function(b){d._isInitialized=!0,a.isArray(b)||(b=[b]),c(b)})},b}),b.define("select2/compat/inputData",["jquery"],function(a){function b(a,b,c){this._currentData=[],this._valueSeparator=c.get("valueSeparator")||",","hidden"===b.prop("type")&&c.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a ` +
      + + +
      +
      + + +
      + sendgrid-statisticsdashboard" class="button button-primary">Apply + +
      + +
      +
      ' ) and ! isset( $_GET['page'] ) ) ? "wordpress-dashboard-new" : "" ); ?> + ' ) ? "wordpress-new" : ""); ?>" style="position:relative;"> +
      +
      +

      Deliveries

      +
      +
      +
      +
      + Requests +
      +
      0
      +
      +
      +
      + Drop +
      +
      0%
      +
      +
      +
      + Delivered +
      +
      0%
      +
      +
      +
      + +
      +
      +

      Compliance

      +
      +
      +
      +
      + Spam Reports +
      +
      0%
      +
      +
      +
      + Bounces +
      +
      0%
      +
      +
      +
      + Blocks +
      +
      0%
      +
      +
      +
      + +
      +
      +

      Engagement

      +
      +
      +
      +
      + Unsubscribes +
      +
      0%
      +
      +
      +
      + Unique Opens +
      +
      0%
      +
      +
      +
      + Opens +
      +
      0%
      +
      +
      +
      + Clicks +
      +
      0%
      +
      +
      +
      +
      + + + See charts +
      + +
      diff --git a/view/sendgrid_contextual_help.php b/view/sendgrid_contextual_help.php new file mode 100644 index 0000000..6e587f8 --- /dev/null +++ b/view/sendgrid_contextual_help.php @@ -0,0 +1,195 @@ + +

      + Email Delivery. Simplified. +

      +

      + SendGrid's cloud-based email infrastructure relieves businesses of the cost and complexity + of maintaining custom email systems. SendGrid provides reliable delivery, scalability and real-time + analytics along with flexible APIs that make custom integration a breeze. +

      +

      + Before to use this plugin, you'll need to create your very own SendGrid account. + Go ahead and do so at http://sendgrid.com/partner/wordpress +

      +

      + To have the SendGrid plugin running after you activated it, please go to plugin's + settings page and set the SendGrid credentials, and the way your email will be sent through SMTP or API. +
      + You can also set default values for the 'Name', 'Sending Address' and the 'Reply Address' + in this page, so that you don\'t need to set these headers every time you want to send an email from your + application. +

      +

      + After you have done these configurations, all your emails sent from your WordPress installation will go through SendGrid. +

      +

      + Now let see how simple is to send a text email: +
      +

      + <?php wp_mail('to@address.com\', 'Email Subject', 'Email Body'); ?> +
      +
      + Where: +
      +
        +
      • $to - Array or comma-separated list of email addresses to send message.
      • +
      • $subject - Email subject
      • +
      • $message - Message contents>
      • +
      • $headers - Array or SendGrid\Email() object. Optional.
      • +
      • $attachments - Array or "\n"/"," separated list of files to attach. Optional.
      • +
      + The wp_mail function is sending text emails as default. If you want to send an email with HTML content you have + to set the content type to 'text/html' running + + add_filter('wp_mail_content_type', 'set_html_content_type'); + + function before to wp_mail() one. +
      +
      + After wp_mail function you need to run the + + remove_filter('wp_mail_content_type', 'set_html_content_type'); + + to remove the 'text/html' filter to avoid conflicts -- http://core.trac.wordpress.org/ticket/23578 +
      +
      + Example about how to send an HTML email using different headers: +
      +
      + Using array for $headers: +
      +
      + $subject = 'test plugin' +
      + $message = 'testing wordpress plugin' +
      + $to = array('address1@sendgrid.com', 'Address2 ', 'address3@sendgrid.com'); +
      +
      + $headers = array() +
      + $headers[] = 'From: Me Myself '; +
      + $headers[] = 'Cc: address4@sendgrid.com'; +
      + $headers[] = 'Bcc: address5@sendgrid.com'; +
      + $headers[] = 'unique-args:customer=mycustomer;location=mylocation'; +
      + $headers[] = 'categories: category1, category2'; +
      + $headers[] = 'template: templateID'; +
      +
      + $attachments = array('/tmp/img1.jpg', '/tmp/img2.jpg'); +
      +
      + add_filter('wp_mail_content_type', 'set_html_content_type'); +
      + $mail = wp_mail($to, $subject, $message, $headers, $attachments); +
      + remove_filter('wp_mail_content_type', 'set_html_content_type'); +
      +
      + Using SendGrid\Email() for $headers: +
      +
      + $subject = 'Test SendGrid plugin'; +
      + $message = 'testing WordPress plugin'; +
      + $to = array('address1@sendgrid.com', 'Address2 ', 'address3@sendgrid.com'); +
      +
      + $headers = new SendGrid\Email(); +
      + $headers
      + ->setFromName("Me Myself") +
      + ->setFrom("me@example.net") +
      + ->setCc("address4@sendgrid.com") +
      + ->setBcc("address5@sendgrid.com") +
      + ->setUniqueArgs(array('customer' => 'mycustomer', 'location' => 'mylocation')) +
      + ->addCategory('category1') +
      + ->addCategory('category2') +
      + ->setTemplateId('templateID'); +
      +
      + $attachments = array('/tmp/img1.jpg', '/tmp/img2.jpg'); +
      + add_filter('wp_mail_content_type', 'set_html_content_type'); +
      + $mail = wp_mail($to, $subject, $message, $headers, $attachments); +
      + remove_filter('wp_mail_content_type', 'set_html_content_type'); +
      +
      + How to use Substitution and Sections +
      +
      + $subject = 'Hey %name%, you work at %place%'; +
      + $message = 'testing WordPress plugin'; +
      + $to = array('address1@sendgrid.com'); +
      +
      + $headers = new SendGrid\Email(); +
      + $headers +
      + ->addSmtpapiTo("john@somewhere.com") +
      + ->addSmtpapiTo("harry@somewhere.com") +
      + ->addSmtpapiTo("Bob@somewhere.com") +
      + ->addSubstitution("%name%", array("John", "Harry", "Bob")) +
      + ->addSubstitution("%place%", array("%office%", "%office%", "%home%")) +
      + ->addSection("%office%", "an office") +
      + ->addSection("%home%", "your house"); +
      +
      + $mail = wp_mail($to, $subject, $message, $headers);` +
      +
      + More examples for using SendGrid SMTPAPI header: https://github.com/sendgrid/smtpapi-php/ +
      +
      + Categories used for emails can be set: +
        +
      • globally, for all emails sent, by setting the 'Categories' field in the 'Mail settings' section
      • +
      • per email by adding the category in the headers array: $headers[] = 'categories: category1, category2';
      • +
      + If you would like to configure categories for statistics, you can configure it by setting the 'Categories' field in the 'Statistics settings' section +
      +
      +

      Define SendGrid settings as global variables (wp-config.php):

      +

      +

        +
      1. Set the API Key: +
          +
        • API Key: define('SENDGRID_API_KEY', 'sendgrid_api_key');
        • +
        +
      2. +
      3. Set email related settings: +
          +
        • Send method ('api' or 'smtp'): define('SENDGRID_SEND_METHOD', 'api');
        • +
        • From name: define('SENDGRID_FROM_NAME', 'Example Name');
        • +
        • From email: define('SENDGRID_FROM_EMAIL', 'from_email@example.com');
        • +
        • Reply to email: define('SENDGRID_REPLY_TO', 'reply_to@example.com');
        • +
        • Categories: define('SENDGRID_CATEGORIES', 'category_1,category_2');
        • +
        +
      4. +
      +

      +

      \ No newline at end of file diff --git a/view/sendgrid_settings.php b/view/sendgrid_settings.php new file mode 100644 index 0000000..57f862f --- /dev/null +++ b/view/sendgrid_settings.php @@ -0,0 +1,49 @@ +
      + + + + + 'General', 'marketing' => 'Subscription Widget' ); + + // If network settings display settings for subsites + if ( is_multisite() and is_main_site() ) { + $tabs['multisite'] = 'Multisite Settings'; + } + + $active_tab = current( array_keys( $tabs ) ); + if ( isset( $_GET['tab'] ) ) { + $selected_tab = $_GET['tab']; + if ( array_key_exists( $selected_tab, $tabs ) ) { + $active_tab = $selected_tab; + } + } + ?> + + +
      +

      + +

      +
      + + + + +
      +

      + +

      +
      + + + + +
      diff --git a/view/sendgrid_settings_general.php b/view/sendgrid_settings_general.php new file mode 100644 index 0000000..796dbee --- /dev/null +++ b/view/sendgrid_settings_general.php @@ -0,0 +1,165 @@ + +
      + + + + + + + + + + + + + + + + + + + + + + + +
      +

      +
      + " > +
      + + +

      + +

      + +
      +

      + +

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      +
      + > +

      +
      + > +

      +
      + > + +

      +
      + > + +

      + Categories must be separated by commas (Example: category1,category2).') ?>

      +
      + > + +

      + Example: 0b1240a5-188d-4ea7-93c1-19a7a89466b2.') ?>

      +
      + +
      + +

      The API Key needs to have 'Unsubscribe Groups' permissions to be able to select a group.") ?>

      +
      +
      + + + + + + + + + + + + + +
      +

      +
      + > + +

      + Categories must be separated by commas (Example: category1,category2).') ?>

      +
      +

      + +

      +
      +

      + +

      + + +
      +
      + \ No newline at end of file diff --git a/view/sendgrid_settings_multisite.php b/view/sendgrid_settings_multisite.php new file mode 100644 index 0000000..fb2efc5 --- /dev/null +++ b/view/sendgrid_settings_multisite.php @@ -0,0 +1,83 @@ + + $offset, 'number' => $limit ) ); +?> + +

      + '; + echo translate( 'If the checkbox is unchecked then that site will not see the SendGrid settings page and will use the settings set on the network.' ) . '
      '; + echo '' . translate( 'Warning!' ) . ''; + echo translate( ' When you activate the management for a subsite, that site will not be able to send emails until the subsite admin updates his SendGrid settings.' ); + ?> +

      + +

      + +

      + +
      + + + + + + + + + + + + + + + $site ): ?> + blog_id ) ): ?> + blog_id ); ?> + > + + + + + + + + + +
      + +
      blog_id; ?>blogname; ?>public ? "true" : "false"; ?> + siteurl; ?> + + blog_id, 'sendgrid_can_manage_subsite', 0 ) ? "checked" : "" ) ?> /> +
      +

      + +

      +

      + +

      + + +
      + \ No newline at end of file diff --git a/view/sendgrid_settings_nav.php b/view/sendgrid_settings_nav.php new file mode 100644 index 0000000..a6c0879 --- /dev/null +++ b/view/sendgrid_settings_nav.php @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/view/sendgrid_settings_nlvx.php b/view/sendgrid_settings_nlvx.php new file mode 100644 index 0000000..4bbdbde --- /dev/null +++ b/view/sendgrid_settings_nlvx.php @@ -0,0 +1,226 @@ + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      +
      + " size="50" > +

      +
      + > +

      +
      +

      +
      + +

      +
      + > +

      +
      + > +

      +
      +

      +
      + + + + + + + + + + + +

      +
      + + + + + + + + + + + +

      +
      +

      + +

      +
      +
      +

      + +

      + + + '; + } + + if ( $is_env_mc_list_id ) { + echo ''; + } + + if ( $is_env_mc_signup_confirmation_page ) { + echo ''; + } + + if ( $is_mc_api_key_valid ) { + echo ''; + } + ?> +
      +
      + \ No newline at end of file diff --git a/view/sendgrid_settings_test_contact.php b/view/sendgrid_settings_test_contact.php new file mode 100644 index 0000000..a4d005b --- /dev/null +++ b/view/sendgrid_settings_test_contact.php @@ -0,0 +1,35 @@ + + +
      + + + + + + + + + + + + + + + +
      +

      +
      + +

      +
      + +
      +
      + + \ No newline at end of file diff --git a/view/sendgrid_settings_test_email.php b/view/sendgrid_settings_test_email.php new file mode 100644 index 0000000..1f06f62 --- /dev/null +++ b/view/sendgrid_settings_test_email.php @@ -0,0 +1,52 @@ + + +
      + + + + + + + + + + + + + + + + + + + + + +
      +

      +
      + +
      + +
      + +
      + +
      + + + +

      + +

      +
      + + \ No newline at end of file diff --git a/view/sendgrid_stats.php b/view/sendgrid_stats.php new file mode 100644 index 0000000..6229b30 --- /dev/null +++ b/view/sendgrid_stats.php @@ -0,0 +1,53 @@ +
      +
      +
      + + + +
      +

      SendGrid Wordpress Statistics

      + + + +
      +

      + +

      +
      + + SendGrid Portal +
      +
      + +
      + +
      +
      +
      +
      +

      SendGrid Statistics

      +
      + +
      +
      + + +
      +
      +
      +
      \ No newline at end of file diff --git a/wpsendgrid.php b/wpsendgrid.php new file mode 100644 index 0000000..e64bbc5 --- /dev/null +++ b/wpsendgrid.php @@ -0,0 +1,89 @@ +

      ' . __('SendGrid: Plugin requires PHP >= 5.4.0.') . '

      '; + } + + return; +} + +if ( function_exists('wp_mail') ) +{ + /** + * wp_mail has been declared by another process or plugin, so you won't be able to use SENDGRID until the problem is solved. + */ + add_action( 'admin_notices', 'wp_mail_already_declared_notice' ); + + /** + * Display the notice that wp_mail function was declared by another plugin + * + * return void + */ + function wp_mail_already_declared_notice() + { + echo '

      ' . __( 'SendGrid: wp_mail has been declared by another process or plugin, so you won\'t be able to use SendGrid until the conflict is solved.' ) . '

      '; + } + + return; +} + +// Load plugin files +require_once plugin_dir_path( __FILE__ ) . 'lib/class-sendgrid-tools.php'; +require_once plugin_dir_path( __FILE__ ) . 'lib/class-sendgrid-settings.php'; +require_once plugin_dir_path( __FILE__ ) . 'lib/class-sendgrid-mc-optin.php'; +require_once plugin_dir_path( __FILE__ ) . 'lib/class-sendgrid-statistics.php'; +require_once plugin_dir_path( __FILE__ ) . 'lib/sendgrid/sendgrid-wp-mail.php'; +require_once plugin_dir_path( __FILE__ ) . 'lib/class-sendgrid-nlvx-widget.php'; +require_once plugin_dir_path( __FILE__ ) . 'lib/class-sendgrid-virtual-pages.php'; +require_once plugin_dir_path( __FILE__ ) . 'lib/class-sendgrid-filters.php'; + +// Widget Registration +if ( 'true' == Sendgrid_Tools::get_mc_auth_valid() ) { + add_action( 'widgets_init', 'register_sendgrid_widgets' ); +} else { + add_action( 'widgets_init', 'unregister_sendgrid_widgets' ); +} + +// Widget notice dismissed +if ( isset( $_POST['sg_dismiss_widget_notice'] ) ) { + Sendgrid_Tools::set_mc_widget_notice_dismissed( 'true' ); +} + +// Display widget notice +if ( 'true' != Sendgrid_Tools::get_mc_widget_notice_dismissed() and + ( !is_multisite() or ( is_multisite() and ( get_option( 'sendgrid_can_manage_subsite' ) or is_main_site() ) ) ) ) { + add_action( 'admin_notices', 'sg_subscription_widget_admin_notice' ); +} + +// Initialize SendGrid Settings +new Sendgrid_Settings( plugin_basename( __FILE__ ) ); + +// Initialize SendGrid Statistics +new Sendgrid_Statistics(); + +// Initialize SendGrid Filters +new Sendgrid_Filters(); \ No newline at end of file