<7zXZִF!t/D]8Kvl Nϡ%x͢!k{tL]gf1H'w Ef>3w-:m ^bp}ACCpȚnhEY1D3B`z^04Ϻ Up[Sk1/8,64̗tH !gHBɿq=TGI<2R\BgDYnӝa2^s' HU{ҹP[兘83GGqqOÑܙ.>|NS@D,# G:ťjl^- +bunjtvgG%((e;LIœĄZ6\OZ@$|"[V,K6݇?=Wrզ*T  5`VXH Y!τ4?LG-(S(O^W@ 19 ZJR.⤐c!2G~v u]! q x iXëKs z7mu< ór _7l9]HA \:nI8eP (r#^!VN='w=˽7Tۚ!vzÇ;B8u?58ƈEÙ/gc""Xw2X⭾+}ĉZ%n +Epl깪 Dl%=dK&&M/%j>XFSy((Ao +Ѹz>j}l< ͷ~Ue]9}4ZSe yWNj:qL:JRNF@Q DE&3j#ڒRp0Ζ޾4gn©GC5gg3GK4.^>Wm&%kG cAɎs;kAS5mztkܛOj9 @vf_d(եs}e ܘ8k*)ulPb<Ɉq3) Up55u:~?GvS(e`K"'XGSS{3j>ilGU冡isp 3|fP j17fJF[9x5<B⇩9Py݅q,-?%0!δ)lΞH3zgBҕUP Tx$9n|lgo@U\{Kxv}S3Ǯ7co-+у$q.sᶒG QL룆^l$1?x'3w}g SfgƵ3A /bgp"BCKȾi><-Ai_>fӎɰ}uWr@Oԣ]DCΣ8/4s wc{\*@IJGl@H]giWN7`.=FMCY@LŜk}Fu1x֧V4j)31!x ui^,a'PuA9́J\:+ F:Q#K8-+ϰN+"ft΁z~Yi-29MB3e Ip2+&HG0şp*[_u;a>>`*Z~St~NP>pM>/5/KyKUE!Cf>.ʒPل~|n'sR{wԢ6 6 g |K 6V_gz[Tg2`Co}(mOpqFëZ EH\e0QqKU p_BY>z[m˜e;{멄>]6/9Vr8XNգ5Y"ϢBr //CѴT%|ںCdSᦗ0!$gI&.Nla3:+b߈bZʂv`оP;wbd߬2"tybb}TG>aeYCҐgaG$-?'D׍+ !|-ܻR@y=0|h>Of }®g3yF=aCc\)ʄc ,B FJ*a@AiWr|xZ1r#YI;[YBSp7jf$oYS^$ Gayxdox UL5]!KnMMXEaT'7(l2?5}0Q'QTH:dQpP[57I榦|(=Oto&,Nt6#tNcގ<7,͹~RmT ٜ0WM }W!oj]1eOdqJlc(8=o'@(^9fў#иU`fU*BO?w)(Pۉ8 ۑ f| kY Lr+}=Vy#{-|?BK<"lXv67؟ gOB:}2C 1K O$|BgF (*@~ \ܸ}RL,_ˇzZ HCYf/r?jS8V? _R,,T ů߁ 7vŝJ5x]3L0[UԬvY!3t ku*x_}iZ=fY݉h`7._@rܷfgdH1N1гrS)Km@)XڈpCvY/u-Ls焓$GzWTtÀHҪbL4TM:X#bפՔRa53c%dL< B6}9%/n)0*RҠ)h:M=a6%qhs:¸V)QvA˃U֢ 6$)èhfPu:Q6%nݷ)N)G>es+IT޸ZwKwDJqhuc;.g4J!=MjM)@'.1yɡv,HÆ@Vm'}~b:n 7{y5qzyp*~:1JZד?qY7f 70SC* u bJa0<93 Z&_Fy)&.hp.><ClAƭ9n&a>HS<7󋲶@gh.3-A)P֠>(E\ 9tnn\6rgA?AE$ȑCt8+ K#V ξxȻ>1)R-?_=.s q*xoᨹڄ:h+&'?ḧ{wp6jz%an])WI'0:h%^~J.d2U?Wp}\ma`U"b)-49|*/#hub1РvHڬjVȝ!/n~:D19%9۪ A{o--ּD&evTDr6Tհ0z.ץa%C$c^jEEޖ:_sֿZXx! gR<[ r,mACdDGJ؜0~u{YM{qC9側˰QO3P ?l!;)'[)T>=2K2/{:E)_l,C8A$81L|)cŒדtl'nX+w ,c&Y l&'lQ26en#Za4T巹kXNTK@QlRq^|pfFNL*$Gy_*@nRuvDmvoVTlw]A{be[zH#U u74~ɾ@o}'PB2߃m$'=bT,n2H(3\5`S X;j2V_aտ']M>7+}!5sc6lJL[֩lnY9P^EБtیN< BS\Ln!J;e"r?hC(8Ur1%^OY&Mޙ?oVnrr`%5I/MʃFtfL?v$: iZ{.T6<G\" (j<u wbK  VmQ6^oe%Vп|> b Uog[opzeX6q@+Rc傷^irg,r{*8"KAإzPAp+syaK *O.82˳b}ܺc4+~簸HXd8YO] Xs0Ϝt:Z40++QW>-5\T7y'G ivqίZ \ѶoG"F9 `| ~U(- ,.`}nB"cga Z &_d]=񷏖w0yCQJ gaN,$yμbɦP8 *pDum y[M&E4=Q}O泰'PYc1c' BLR'i+p6A&D_z$|I!&=w菭amkizc<** &>ԾBN]J,E^2XEwz,l \ iZ#bPJD7RSVaY΂ ۉÐ6+kWZ4l}U筬U-o`M"2:Vxd+x#rmKLl0 )*g5ya+;k"/{gUMΟ5KߔX3V1FRܢo*)Q@4DLۨzH L/YثS΂V X{@$I,EMbB0bGC^*'K/F֎92e+:FuPwg:d^ tyN_yA'zK;(/#G+ijH[bV\* 0LDB!/7 ƪaqXU'Mmg[srɢgH9 YOa HHR+FȥĒϋײK$ΝzBsM"ț  ȆE:K/5[\(gtd.<>JdM rȣ5 { v6l@g Vᩋ,ѳDfg \Oo7h8E$ns\v\a~hká1'd=c-cA?cP)&-.z6\k(h045C~ 9-8Q[-z>[Z2JMHB^)DJGoSfG˺AҗGBJ{hw_3:Jv-`Ċ{IAEf#wxdr_;~Z-O߃Ig2ca ^A/>"9wքr}wG"K 9BEFAB53VMzC&pPGgbNJЏ\]hgtﮊ%#xـf?eSMk(WZMrn֊rx1\ƴt6i=6Z;H`^hjn}x9ϑgˎ6XЀYp[[Bb0&9"4ګ- <01EֳyC.5oT-8"R(} =R(΀"nԄ70JnUFcW:n/eYʲyB"#`O.KX@ na٭?;9j@' xmZ)DZI|h!@D4+`-H|e+L+kW6k ;Sf<-[hcJWf@-sr Yޡp?\VcׅP`R SyϏZݔ7.L>˕Rqv. ' G'aӜ\j ;)Z5#E :'eibLls(8k j0Gi+d¤lt{Y|U/q}sG< rePNNi}2O#d}K/z&$"UK^Ɍ]~0M.*o Dgep{[f6ȔfZ ӰjH M0dQDܸnE4 qdƋok Q}|IE?h{2o%Ls| ^){nHe VwEgoԆNұe!Ϩf.G`خp X@a`1Ac#}Rzk=Px>¿^&]t{vh`]x1u 9"WU2e+cg̨cZA]AH Z2idBR#t@")E[OWMJ C\6xb _ôqL3nP ka31D<LcX‰_.;}­l.|+bEty$mܠapPR_0-6Nt35,C,!hWʈT81'99`j Bw9|{aS*5&u9. jt&D$mD8w;A &!Agr+-[WBU|j'^+b̴: 40"3p|%0zTTVi^j!r;f)o'sE&Ugk4UknqS ذ'Lc/ת 4g&m0==mmze5ٸƙ@ `@C 64 IM9M>Yw3b^&ͽ5GQOKF&gkD. ~9O<:'Dj4$t|RHS0SOi'zb}Rh ~dΑ`X,,32fVN}rڣ)j*ib﨣QBJm rFJ~i]B=2䘡o axNOha!$%GoJ;b>Od%OqaRq1a 5II:w*{PY@7cmi_pj^$] ~[ylvVNq(U)t .1y*V5$:!K􋪣ϚzS=A+fqO |hO gj5bo[3V4o&7hM IREBG"ssVt@Vdempp OxivckJm9eܛ9?QXS u΋F/RxͳIR&XfL_!Y49lngLl(he[0?LeF,AH-e!C΃Z޷\-jXOnbLǸ9-jFcx߳M-t4ԛf|+'nd!pD)KT :iQA7DkGSBJ;%F@ю0˼  <%f7Z}rH8`cےbDqPyOגq#.c09`m ܻi+N=] $}>b53+mBM%;jY,{jRg?Λa79t?s-*Aoq"eZLR{\U6lVߧikJG4}]17'u.~VqLd%*Ἱ^W|pQ ;ɸID${Lq`t"!G=bC2BE%d%Mײ>Ձ_'ގSH~7a:W ij˰VsyphĊ[ zJ?.ǮPVzxpS6NzcrTU-h7TX:Mx7Tk":B\ !AWN3@<("uDW k-<.;ل VwV]-`\(s`P|!H9[#%C IuERM!1P֑wMX 4OoOW`]F-뵝о(%]S& Ԕh-t ]' ;1>@Dts ۮ5C_nN﫹3@ƿCBN/{p](ޛ\{ e|m(N#fay ȔL Ep:y@m?;4mHA?(LX"\񲨔cg)YFGޞKwz%R^^luٷ\0^_I@q"(oVE";f9I-s+j#Eh.x[.Bn ͉ʄ:F@/Wϡ`4avlRZ_޽:>"FcV/M[}iN ;3E8cJK4:9 QigoSzP]nԛ?k;̌r/o՞;,\U W"~/]78uWU7̪$WW#m>~yweKoiעr{!D׭JY-TxQ誧<V4S<jׄncG1+NL-m^!xt#H5a .mݲLhTp!eD Y]p+%xSL(FU6FMsTMLANJzzl+?ImSdž*q;X!=8瀈ZL:x8>V XG@]T7j]M4\ ̦q؜bd E ȚNe :' ;[iؘWCɚ/ŷmSNdXsKS-W㛯}球(t)rɃgՎ~/_wb6k>a`Uq ew6얪˗~-,dҹlmꮂ )j8kJWȴ4Rk)ks N0FP+ԯuJ+1Q1,\v{dJ6%"ߚJ6XW7w l Zi 5 7dTFbA)352ep*Mt9۶ *Ug"hy'BSGƟzCԱ<~h(1s Y\D)bR푾 lgҤ|u\Ow )vZi_b̬_ ݩ≭jܸ\ppי;/]Ous1ZJruGSq6^WKVi@ W[+An~۷=g_,4V ڝZ+ <:tnE f!P}sEMJMxĈVRg~9/r`1ig\o:02ëДag ,c=k$ND>Ojڜ(lPݏ8SNEN 5=ĂRao(YyqWP :׆xK_Ps;TZJzчɚ&_JA>{#tIfD˰x!/LllX)t/3Ub"GnEɹ֒5c4[ 8%k1OTo9tS@Zic{et5'; `H5zGo`Wjl~T!97&#)o{aiie;3ib(R OL$Z3PZC(]AxD\RCtFG2.*)Cr !\ڕ`DI 9ncbI-3u:Ö!! ߑ-{Q-u,xx{q^%i~#<aUZ n 4^O˳Ẃg M1p{*+Q%B3.HKbfbɠ_AX+.f53x/tA|4n&mCU1Q6zm~z+ ݒg$xj1~Zqaw%.QWֹSbKLR7'C^N"%,`װ*&8Gn>˧Jj8 fY* 'ڃr*b+.`+vr$S`dzpg%zMgWY6tTmveT1o֋OӭBi^J}[݅q洅|U6,u>.]I,(. @ M"v?Ԑ.9=\iKdJo~:=)KNsgfuED]90{+D\s ( UbpǖXl5[S/XA'ƛ!WgЭ풧 -Td"+wF'E3Ŷd0gn #X T9Oưm+\Dry(3A,\)2pr~I U~ kd pa}X[1U'$ {֌69pPԂYl.2\ƪ#Q|eF1usll-Hq g`yH Sf,ABLP6PZzcGT%@4fqS5[kAP5M?3>` q=<,Xyk}rWrb)J2(ЗTFUs~/gֆWʟ"ɡ7[|`"G{Zaąe]6V2[jb7vW %ئ ER%?թGIFJmLw5Ԟto،-$&IpN lvÔ!@,N=ہ!9?JNGdCh-c6> wr@P>/ g@הRnmrcJ*FJƧNT+FfYU|ʈMÀX&$ TP,O31p}Jw5XGK sĀ1%jtN,1-;gS==f^4JE@ Ƭ(€;{96^lJ`BtC&Jսc\+m=F4>1.ڠ[,c l v%}eF&ϳcQ"ζ8J#ӼdW&n!΍Zjmm&:HxoPrYȐb04Ym䭢^ {6 =*rt;e c(S%m̋9ջ6?F@>˹ ^]Ak` Mpp.Z8XcW(ZlgELgpON^8';Hg^%'z"#oIil>\Yky8+N~d87mZ9Aj7ݬsDG Ң:uI @uj`-3nk/T j,SHeFH%F~2[:*癖FE,쨻rN端 bh(2z Љ t鈃%8俯&I9 2ES.-\bCv"},/hI 㓈)9r_*+>ԇb! ?W NNpBJm!@0pf0%pZu52 J{- uHXӞl||p @i#1فs)`BpJJ :&~#»-l*g7cq!?,ZVt²;Bdn>#y &F%.s.`2XnTS| Qy#wpW'cwZP3 s}^Ml͝D< ܬULzSP+x_5]b<#}*[Q~I})ZߥB}zj*09|9t9wbxɒFHK0 0-|eQ6Nǻ}887ⲑǸ@m݅`=3߶ǒC,rzuhj8g8RZQz0PS>ŜLVsEAf$#30ߪ%{:yBtlbpܣ GM j qs7 zCȁ56j<6oZ !hη @0=]6hzګWy?Th+7%-JÌލiT XU$\D ?3؇ #dt2tt^[s-"̟tC.>٩5G[l>vvŐ3 3.\f"z-bc?sw'g_%՛\oaas:*RY=cV~hPE}c8=#Vc TcC2SC%U뻸oRe'ٻj /r=^)|Ш,"L9c[:F(XkғIiujh|ʳ] uuK [e?intZ2- !K+#F,{=D DAo\M]:V7R8}f:{J칽L,r.xFrȄC\ĢrSk=O\;%`;}gF1mGM?i iX tu:yl曘Qg둞h\DoZ)@*܀zbSdCnup>U 6 #"<`wBfj[[g<R(τ=|X&J {'`@a e|u|"rOUi\%\%8M(g%x}v!liUMbBx ytm)HPJ؍yVuVƢ˭ QXbۗRY Wwp>BVp6WF|.X,r5O#2X-PoXb3¯v=fr},4b @dhPو@/z> K~mtJȟ8 / ȧx{R/iۧ.'. Oҳ?MIa_:DE6cU 8̎ji}A$rr]5 h]<oLJXox""#+MZ9Y9%mWHh=_mq3]rLqn $Zl6)#BDWXlej U ZjbtSQJp@2*S-lFTpmBM3c64|We_m\Dj{# 5yX!GZ#2B(!iRc/g3oEjSS=s*Rϫfŧܮn>$sF,)S8_M\?x/g3ǹĠ`q0كGP59'!˓$nɏ1ppt3J I.{"F; GRDz}gD@0|f'{ivsʄab j<A1Oooջ$˂*qmAwn oxC'`AQ۾ 3~2V;~Tx0/l"Mšk[uwS6 R"c (##H!Tcv }w}"21 FF֣=**o+#]8w?|zlE\- *cDst rDohRedY7?(AffD݆h [srk1pB~`= Qy4Mk%@C' ΅4YO"ZU 7h5خR0 @9fl9#4Avp+|};ӯ 4+PXah#CL%78_wBf3ى:q01vȔԃmyXIcoVT!{+)J5;)~kcQ~O]&mF!nJ#GPxI~1CLҽ7 \D:&H&/#Is-eU*(mrCOkTg4TMxŎ;=I6DWU긘JQ论# q|hЯTli~/ܪ$u JHK-];5"`2;Om/3(}"iagF+nzK.{H~O2 3R;|) bѲ[5[W[XҢ3L,t{Ֆ`Uz|eƙ@>I-$VR B$XKpOZh:@ ~%ǻ+=2|S\{+şOŸ=do4꣘pgv SI,͙rv?8ۭcƕ6[H$NBjO4BdLmȲgZ 8șDq/D 5vC%ݚM$ϋ[)3ꭔhˆZTVdDxBдм3qۣ9ZfAO +`t6G&FΛRN3oӽ0Pdi]N'?SJ2ezs -y<*n[]gD`Ua`ѲBL,Ii 7<3v![LKwX-Pc,,ǒVz9BuAã۔scSfx '.Ukf z0Y/ 3 ^!_)`ҚQmsug(GAÔOM!xȺ#$s+.;Dŝxx~4t+G~:5Ik+NW^+>* 8Jά-${mo2{+ oyz3ZqO/F,o;qR5[kE]nJ*^ 0<@Dw޺WPK<]qCgb~u$شAW-,#zAݍTW4#3Vh Enѐ! *gŋb3cq6:(~ѺotZ}5QTAR@` @40F5׫ZJȺA6]h2~b;Gno^"w7RRǚϧh™[X- ;2}l<~L>Zlo s>lN=тrԭ s7\l s7ym[&$gksggx(8yM񝎬! vj:ǭ<[B}EW%O eCz@47翎K GJ`yKӢꔸY +~פ)"AYe7Fvi@>;3;Y!)mRoj}Xr pLtܛ>R# 7qJ'߽ffp7~GH.pg^*F1TKJF-qҕ 4VϿo0) OZnco:2I|nt=^C8E0/)*lVH*?ט)>8sPZ[: SI4곁UcP>,IS\l"gi?{r^-x[42&Fi١@6??U_&)bUzYP6[0ꁫ%B7JHCaE ML:y5>]p_$tniQe2ع6)O'+pMfF_sN=DmW%׉@ ,L!q _^XulNkSgu#3 bμkez]E~Z0~Ȏ PB)ڏ#O& r1~ua"\k>- S ؙYwV,oXzx4ꃝ=]tou6Ul0b. N]{KL\`ܤA[46z*ZsIaTG \_Ya3k8u7G|=97Id vs ũ#fR;# *qS.@&H(PvߑF?%=mgxmt| eTxPɔȡJ5H}44;{r༕ |pW$b8YmETڌh(-= jV;6#1F4t9WV5z1O']."y*iYcUo?wJ;d~}0鐑 ׸:Ws*weχRʥŲMb~?Jjwt`?';bi]$" .8x:1a߈[Er 7q$ucos(# 6k$ܾUw׍'P/?Kh@C pGvF:<$ߕ"D^tee+@npE!R*8JJ'PGLA\!U`Pd hCڛ2HB_R#Im̧ f*"߉N .I< O# _nr7zPӝ6$ )P5|ljCHE SI^b$ O@hsCU1XJԊ(_{Za߸k,Zⵘ]kD4X뙏|IQdtN-2Zg t(_n'[9bIo_ȵ6~#uOlSav5[#apJNoȋ]8D=Pp{G! +ND:5z]*DY@wH'2KX4x| 9*7ͽ`+ fcя+O+MmeNo@+d>1tr^OU`*?=$QUˀQԡ}0qG/6rix}e|>[[?F|;eϥ{i1䙫#4t#׆wm7c=:I$amG 8 \YZ'IT{!D7/=^=sUZ *;'햚AM"Y|UWO*IpL9ÓWv0 V]a9" n8"Xzshb^UaXjԌw%.w7iU+$n'? 2r$pz5BhHT]g gYVq3Sŷ,1yDIYF%c;"]TÓtd`Ibj_:ol#v9~SѦ7c)=jr7;8vf2^Cs# PUm*-'J_nѣp*(}/^—X" ƺz،mt6ޚga: " >i?%)5A׃;0>!Մ9D~-k&{sH RߚU|qd*u {KU_]S&qĻ_L9Ηv>Q,Pd ^ {C<# M믕G3= 5ÝTxPrijkY2:-hLy5yO[%梢-BX=G}#2)87QZ~$<'_VVe6m=K^3֎rŽdIOzέVG;xCk׏prkA̴MܯG99LaƠYJ}}!VeWt[@UHbIFTS2D{sHYPY .`dFUrjd=CňR_]L:=V7kӈyR;۰`uc8~-'Y=`}gy4P }  2`Z! Cs yY}HφUո]zkdĂ]̰ߐ 3SE2.X@. '0~"=?O7 bAL4o=3?yWuFR_%G ZppdՏ}50nv{=GkKWhB "g }3=bz wѺX*T/1yv>"O~xkBqTәxcT$';fcjp22 5`vT*̀_n 5yq>>CZ>G.wF4!ApVa'(b3(0͍EA2oaL,WT]rfx:律!* nȧ0a>ɠߵ 'UuADʭl6F9 KB`+'߂qKc1xh|Y_<3*VScg2U?a4H~_]/Q4lyjzeec Bla?P ,tm^N7Wm!3C4QPTZJa ]@#a[FKpg9A lxzTsR) pJZ0P_<'ǰK91ҜM!̵7#.n|"0Jx&jӮ[1TUZ:e /k@UcRyjoi*RxX^:,(Y5lE)2J3888G~۞/mܨ7y9Kzy tf/>uA\2:9#Ei=YmšS36 yNe(BP@Ze sxȔ$f]8/# daqxBVNP|]l^+AV*of7:ux:@5"J)r57ę׿Zu=U.Kpsif` v矖s+F#{"`1s5÷QFѕW`40hv۴}helx6SO՟J:K$fI&])w v+dQmk 블1joY[iL `,s4.itfMԽu3I9pYAq>vku s2 tTmO;wEQ{+ͦ@BR],$.TԖNO$֑a|u1S[C^O}5"Mb{4{;Q?|fx;7Lu"zeQ:ʅx$J4`poKTkz<'Ճg*ieٍ퀚W}yrB5qp0mϋ {5@%zaJRt qaJ#h)O܎t|Bּ0 [8\zNoqG^in[pBbm|IƓ_EJ Y-R@_h~7>I,8Ic.y'j]pV I/,JM/kCE2AՃk~[D^b.I((OpIlO^d:ed(,5 &)Lj0D!3ޠ/EmKl_Z0E(9'ݐN_*l7vz52)n0ao}Rʢ744, >Se?j?w͍ߏyrt~^0Ȉl*ɥH`E0䳾7 UIhq=h_OY$e ƅ& 4U/ Xx~e<ڠ5u""W5NDdas/B}FLGA~|&+8s!&l1y/'(;Ro# KPW`% Hyʣby_YW>HD7Il:{=GGm3Evb.>&Of!/Q9։d1ïJ5*myL7NHrr6nz;DԬpW=V8\$ v/Cg )- &L+2JWA|vHM׫aZfuU q2Һ ZzK:%NYF!ɜ<|1=C8ܜvq}&d+`𕨫).Q#f;pjbwۮ.J^ 8$:m]ǒ`˷LY|.&L>q‘vn~o$Em\oA]v!FF9iq.M]Ggv9䅼K![W?/ץGDiMԖB#Bd /EG" Sz,H}t(:#Z{.Yg&01 g*,|#wp0l$CQVMU}KK[llo<rcy]EW'mC0)9kEEY;C u`~S ޣ!I w~`swh&r~fdjxT-N2ż:C1QZDp8Sysh@04te*&,D.ryL.ؔΑƝڶpu@e95侱4S%_Wsj#a[5$\x+1٤U&)C_x! B \H}+c Sv#<`șx'EϑZìNsp= UZW`t ܆|F<;i/I. +N)`ݺ>lgKG݊"v/B\.LKpR}!x\1D%lqؘ;E~3P-{lGCh [i mY];̥5bjFa}ft; q+zaM8=ƕF܇^z =>5JhUoY3';{* {3~ ;K5$jﳛkm !oPg";@6T2ΉZ:%}Y{# ~MA23y6țI4I&BJb([i9FT(OScYk9v,S.hAEA6aмNGy$+hk)˾a3m-qbx x~"H9+H )WS$d>|58:r,) q҃EL~Eӧ4}@L &e#!gHۆZw5I1n"~dQK3zuk /N d^'ّ$\+/z7Ӻs y;\M'N+RGq6 힛e,4Q!5xUZwf5 eTsiA[`kSv*;>&bd lV石m#v|H$z, /Ojl.ݙx8#~?\йzzs:YA,،eSTߑ[b$Nq@Meeiwܑ&J`C{,qhc,o/ L_U{:Xmy<}ˆ wQ]I=YQo,/Y0/ۼZ"}B̙F!wk%f̜x [2:B+B$2Y3􋎵0|nA}F-fNS/=QI]? V*Q2}4c ƿ|ԄU %Hbc\#d]/33K%'QZ5bI_An!|)嶋vurĉuړQ /p@V~oM[H6#蜝.:˃ { Fm]6 I&ࠍcSKku!9~vf<}t'2϶OxkesF M, G̯@.&Jdbi{ e¦J ܏`a AbN&E)eüGi̋iA<͕:3\Xo;3!"%C`@iHg>_=cpBo+1J ə#d蓼ܷ=e$lha:%YhQV%Yrh4QU6mSf~aڎ;fZ ߔjf!;+>>bhksyj΍p肫Ѳ!o?%kHLr'xC^^bDK 2@&dA4C6PS^"\@蟇,a$Wz Nsvzo!o\CG!:<>XU>ID$d'Ko!D#ժ,nwKdA;DA+TEf(Gx+qړb~h)eJYb&]-~.{9kZKM W Z|0 N#|~IB!-a[]K@̴/NgS("CIYq1li.V¦BLOIYos#f>M$+$*LQ8n- (SDTW IF;,A[Z&hUj2]G.J؊+%^K1u6\d_8(6,2޼hC]~"ƊEh#eb߭,tv'vJ;.a1F~c}6oJ>peQ+0cַ'd5M8*msw`M''3q|m3s[iw_nt#,Idzm0`6S(;k /M->>UվEAN>z TbltS(Ngi-79h2luh=I Z936]P$ zQ9D %BE 7 ܜ$0jAM&bB#A)c*?(=*2k ~1I4G@$|"@qN )ܟzF?Nesw:eKBtw0;1uk/[ _і{h ֽ'xXe/nP(b6[ zRE`mǖf"R izⶫvHTlmXC N`C<A Ob2]-] ;v۹I80r,VTd &nrj-$ƆJ24VL[+*aEj 7}Ax2UwWNF0d9}ߔ'A")Y15LTulA2L \I;!&G<ߨDY uÂrnJ QG[ƒ8ٍ^eyEf1WT\O *Nђ|FFx eB(رq}0JhVO##*jɴ[]vS׃{'P 0JԟQ5<#EaovCwٹ{=Ǥz4gfo2?~:!e$ɩ(*zV&7Vȴfb˾ %D!c&hKjEEE.eH`*jq*ڮ._Re80ELưp=tI ȑl,&|7vh0ڝ5 .FMgĊ%e$v+'g+K'a_XUyrſ-寧?3\Ή#IVǝ%iV_q#<XK`y?skczUo1Y},;ն:s@!4vfVNf'2-vβ.0' y4qh$(??'+bĚuUOxB? +׷S۟J_ۿ7gKD-F7\wsU"xگlvyTF@&ۅ,I-r$^t;CWq*S^g: f(ħ@uɵ1;ܽQ"Iޒ {GӃ"* eXqoKk) oہ/ 'Iז~mЦ#@*K 94r!eQix+bJ cw$"aA3Vd"&~#ݖ=(!|',O#;DvdWgŠ950[M_oF ,v/t \!lOa0V\V;ݷ' >#J۟k^cWw<D!FPkAW Ci?{uT5'"y-]0S<`e#=rlo3L+\YVId x]WT}x; &D>RbcnAᖿzTeL- 8c޽-n$F"FSKFg{8Ʈ@XFPՠIc/G zX#W$[l"i9*T5QBZX/'i*webKmFU26VaQ$~_)HiȖ:蟃HJ-]:0ӟp)kzQFz2w&)Ѹ"7¿?j359_K9$,*ׇeJ ,,ҫ'LT_G4^=KJ3 1g  df ;!@l ZO 8I2¹߀-WK帩q1Km BIK] ; TG@LmFΞHA%d\#0VU[#!9UEWˈޤ!k<.s-y)|BgvHFidzsV]zW!G\&_ѹ5Wi@&/Yj30iTMzA4Z7[< 1!Y˂覽B"@2ozC纙7R h 4P\1Iůw5-r-̸rpVwaDDrkX CH>8 W.^G.W`Mm߬P*`֌3ZG =ҿuM !& #~FD4z@J&O>J8_08-saEu1{9V{KTR S#–tN:= ̮nObD9#6 \KUZҵ G5Zݥa"F(+{fD^^~bkQ~+ ֈ ULtej499].?헥Kvj[ܸSYv+m_TS.&t|W%(Rp\ F/e%;uʱާ|o<{aEq؜:~Һ[$i4{K29P&>zVz+羐mErr_}~c+b"ah.Hǁ>Jgy&HH!aeZo)kS}Oܼʼn%C<"IjJHZфɲs 'Nc .[M×|3Bg?`МE2k+55'MzWZߦ% =9; 9 $k@3]t{Q<;"ec\jZ]ЙX^J~#Zg\c\Ta?^ ʥ*0@xc Or ;Z_Tkb1hB?:z5r>OIdDpxPy1Ba4$eve)zWxRl?:I+Zܱ6y_Ŀ`bO.Q{\k7RRl1˽&e񘔉"`i)3YBq"6$3avi&Ϥ ܱ`ǁtSg8P dUi2΂8Iy;sߋ5 NGъHȁ#Ld$A,)cnM{R }SݤN=ތsjU. % Ω|) aB)~Li3zd`LLɁ) Dó q ~My, uwqB umf Td8'v84LM8ynapi!a ,eU.e4+[h ƃOB 2_"kMM?< D:Ommay ֽ(QBѳE8 }f\U~,{m2i~=fǫ2fqOh14_ m#cY܆<Թ;LpEא%o]X 4@ yK|,S]vlˏ_/ sCc}8H4s Is n %f(p>"7#Q`wʕfF?5>>6G[㐦znGf3٧Ko! ,A3"vl_~d\ 9p)}/fl4ӳo  AO)V!ҲwOWV|%2(Cd0 ̖-Ó Փy#P"wsøu?*xDja\˾?oM=kf{jΠAIvorvdJuV\*~}bцb!10a5Z SZ{D$<;MuVR}÷jq3Vv$@ jEw|X͆ 3 bZw@͘/.Q9>z <Ԑ_fve*hDR c <T1%b&E?c)oA%RK2!vtWT~A(Tt=`ij:E9@.̀{O 5PEsvVVoJzQ8A&$r| - 6R5po y\5G5_U. ; :;c#Ӈ}B`羖R/H ̓ F 5^XLajp7ԫ$`,%tVu_h}P!!~r5#rS}MKu )9EWM78픻CLqb3r1c.TZQۏle_s?n㲩=?OZ-yb[r FH1eq!I '/ҳ{\6ԉ֊[/,ӫ Dt $($:I7dT/5ƣxĨ AqIuBlFFLƣė iW\/P:7l?iJ/ qުda N2 kOyV; Qqk-V w}OWVV,󬄯qv6nLV˳&Y.;o?Hp,ada+8 82݇Tq"a)LC!_Nj66^ӾwDA y {`sɵmuI;-y4בvhfU:&@@⤾R1Q1_ $ڄ",)kOa+۩.w?:hX?I/%Nn[wIgu{R1ֈh͞,y%Q?T5eQ26Ѿͻba3"x8.zԑ9t%Y]x$,η` }ny@(-ЌIŻ6HXT&c{$ŮD?w+h_FSËS[Tyl't v$)ϞnT`Jo_8a8ĹPRMRl ˣ`fr!}V ̠2Ɣ`^0"Z9.HS(K#~ _x{;ﲼ~r3b=3"dD79c~%-)v8FZRA{|9o~ W|nweqmi 﫢fjAg*# tGq%c4D #KO`9a!=dB`-2>*xC2r3qrK&f3Kw@ˈRdijzXpe5|\~Uvc~+7JRkS$ms=y *<\=;u+`>M.>m5xb)@ZIČ5SFZ$r]ۑV-=x.$|$_Byw{e =P[WX:;$7@*H%=O6ėyaji?'e;"5CdꌰݎF/ltA\U/wJbG]w-/x:Nt!B_? b Dʈ˪{u #-DŽdBa%Iap3<'n.R:wL3U^5hBI!K+~Q:q/Xia3iȲWf!`r׊;[mKk,d( |Rl:@9k [mz};G ]&q,aA4x(L8@D~啬MVHd zKxJ|@Ñ&Rx=r/ʎ x4.i!r^GW´kF@l]!ݦ&n,}J߮4-Q7) v+?T(Q0w0ӛ[&$v8j 1Iag;ͬ$b,}62 tAImSI 2n=r&o Q?U8(p%P2jMkU}Bjj e VXBT$(~^^o.$[؏K0*rO]DsQF{ +[Z{, @'Ѓ+ k[eHw'S!?ySF!9+ߺ* iUtPiox6{%}dNtF`\vyVNɻA1G8cY ?+|CH# ]8nN-s\LIB^iKU07>ʸ=7rrNZoQYH+ݩjRs#]990*',_8D;Dd $oaW0"L&ߡ!(")/e{ޡ |f?谉3}l{i%ڝue`$Yl3 M.r4LXa$ea.Eᇎ)p)%BCs'(5H#_2"v2>z#{Meb;SɷF!nNbG뱦C: M> pBw=4]PyG|ұ go.v@~ ak!%"p_ UuGB" BI[vh/E(ʜܿJgmNOB J˭Nj#= k%Ừ2R$3 JNfz62 .^}J2Y_"?J9t>rڧ/m |J B6+.G1+gJ1~^MJX dv^ag1ca8hp !RfgiZ*aIL,UN󨏛XqkEA۠'*skp'|w{oO0 S:47ю۳bu-1DU(p*: $Z6o9rcnؒZ@¦yi1/c2IWAO}~7nbg 2sO' UlyL72 ~*C؃[ӻ{qX,լ~`#b+Hs"Hs.pϕq'W?$ )$cถ]55KXv ٌKu(^{un.QN yYyYl0dg^<1؈7E.S[ah+.weTW*iIixQ|zzD?3z|Ɲ g g/>uS(3xQry3$> էy v#FpA +cYhJY]lS_|ːXy.3p )B2\  -ҡMC&F7Eyb$T( :ï#9sOGLE/96oڮ"a[Rָ.#AsL2¼6ćTYqv(ь0zTh'A$ыTe.ǩ *wk/]R=BpşaDvQ&ql%ƹN޵01``3TS>0F[ӿD]~:᤬[Kgr.<8Og1$qY ' rJfp7f8nCK_"qٜOKXSX\fsF7+"e;(#!{e˄5Dz<%b \AH0i;ǽDP˦Ĉ֫1gvFEf N!4sf? .xz-6-o71ق=ͦt@3 ӋZxWІ+5)՟@ 0JW/DziO BVu[\WA!`H..IѮsSv!52 RXHqb1ԧ5vkѻ\1_X@lItlcKO:v17#S'RLppaf 9oK's?Gqtg.Z,wٚ'8Z`+\sQZUWKw-BΘ|⢶gQυː|>/+3#{2gƘW+5niNUԄ1rEe85Az)ß;1l JX@L5 ƭ"W"U&wbVߤǶ~cLd!&@ĒJyt[ֳʜ.,Vv>;1,۫1"TU<+=TP[5E is|9*Pr˞E堖z"o;[s [ggyt< erշNT/oZ> #~ 3ͣ)r嘬 b5,dR:PS :;|C:VAEڃt]TnEӓm3fdo2m[]3亟KQ 'OQvΌk yJ(n-;*Vшrk,s'!?.~@=KzdEO/wp`Jveʝz ʵ>˩g -C'+UbR*sBWWw|ZVLțr+:Guf"dBA|^^N(=n ti甮_Ui,O]] 5<d UL8GQd^x36ZtOo *נh4D^$}2y? =¢@LW"#THP|Q淟;nY-N:[ɮvHǀ[ᵥ?ɠ`;] XJ1^2}efYcԒ >&/t_?boQmM^@Ns %-ܰTZ%MPB^inlx E P8$ޒ`yrָ];H,6(=cD-m(\s"iz:6tl';@g~zBsZv V-SqHOE1O7eo4ܐNw%`fR|he*;C G.c3XX,Q+%zѓ6cMWN޵~1إ '?5-;5mwz?v RHggXT9Yczǐ~MT=D:AlbZZiM?4򖳃|4@@_!.tnq,S6/%TX"KֹxZ^YDXFk u >VbtMQl8q5!Zc5 =}8Lp_.T-.  1T:ߺ)+޻ H!!=>hL$-J̈f.\d\ˏDj%5SŖ-/h.;"'}v+X/mc5.騯lH~)S@`$0fFyr%0mӢ#DvDE_ hf,U*?>Z k[C9ѷߝ|JmbY )2o&J*l/g/Ivf fvNC_dk>~[MCyܲx$NxrLz;vJKLN#ӌlշCR<^u!w)[ȭͻh|-8?YctX=v"asOU3-" |(*lLR Zkkq@`0ne,?}._ҧY61~nD d(>42c Jߛiy\Dv"8n y񐭸.gn wT7NmYz &DN[Gj]c<&SZA(CAUR Ea[Qq2Q.YjI KDԺb'Xfrsm>Ki/=U 7S# / @uOb ,N(bHWzm}arl M#Rd$HɤcXvjK{n#Qk Zu]-S-RLz܃D|aDfeo/wve$Ps|!Ik\~O =-=2[g|Mi̲<˕b?=VH_x~m g+V]TzN퇿';,jx; YUr Hn'|SL?D]c>Gzϣ&v@Q:Xpyȶ{uÇ 8\PKLJ1j<=r^t3Xfߣu vY9ϡۊ!z‹vE^alz}0}` 28 ]1MsC^e3 6jfoFRLT=ugRvDY~-rԔU(Rf30IRLa8{}DRwJECY P@Np)0GC\mYb-mWaW-Cx؀$4:ϲT!NLŤ}%0su7N4Xl2N]nnohh?4t=8Fݠ7;6CY\wevr7>F;5:Rp5Ϝ₃Fn"cު~c6AmjJFA7>k\ߠ벇k %}د61ϩаJJae{9w^em|5*-e6SQ+) ΂-f@/p+ ^c`SsPa}"Z|odvBVACk vD)ZY@" F ujRÂ/3\ͣ).@ȏJɭX Bb$Oy WYʆ1жb$`di<[RCH hMN\u2>zdZ- 5B 8Ɛx}j"{=Uy nIl{a8p+nЙ'SHH=>$ MC~OxjU*o ~'Nؐ&|yTܞeS:+/o)R o{+ڽ' rĐd8?>⃓_릲>y?r(#:6D rORHa./1ѬS[)5X_V)] &]w~B'tS1QkNTxOzMs7!0v=Es ]( ՙ~m?cS%9YpsVr|IWBgXGiHὑj5fK|ɽw%M-Hqี^[EE(z&DqsQWp)V,',o!AkpMYXxm^vp7+cAQȩ6a!d$t(7\Kє[__߄c9r(o}ѽ:*dqbmgCΚu4hNOU~Dy"n;ldsOQ1?0A^"MB:Gx&̄%FLd9Z=طeO ux_0pUM&dg}n)_hzV~`Y~ c'@wE$Ѐ9ƀ*KƜEJkhow`Zx~;nh W@j]K  m -訓30l1bLcL73DmL?-#mM\x儎{DñTwn*蕇:1֊ uYTo6L}3n\ JYGp큞qw.#b31HHy =5It~-`E7-Jq [;D k T-?"W ;.I '`cC|U#;K6x5>AclMZV?g4/h-[`A{[tRT/üfU >k,Ӄs`IhVm'`Aֹ2Ѕvgk}%&n{ hO*tʕHUghkH|&W .B7AS`7"] ӃFHhCr9XV I*u+ꤵR UNHMO8۸`hdob0G*;rW<5N 7"ZD=!doxd,uK 1>JhӉpNgbyV3VÊ%u8<6yc$ޑĔwukǻpQP?f~ȷ\W(9ަ&2ATcd;AI$o~=S`P /t^s\M$'!ۉ_Cg*I,ew1թhA\R@+F8 gdp,:iFp&&mt 8uUcSV\Zdk2*W-#^Qn>1 ]/կlz&:Bg5@*+yI\5Hæg.Z%GJH_)Ofr=%iw{YZ億BAK#NBVnʓ[KH>AhRMiScd3F?4_Xk5El&*{t5-n$`%)g+ (Uj7,╜9,_EWS(5|0hxS.K-5z w_1&nձʔUSfhJR'`!up9Ј&\ Y;yz&ٿlc!X:/J8}0P>j ޾>lc~=9}@;X3XRF >>-7@O/(bI(DA6䳼ںJLeNm@֒[vۈ?fR}> }DvLpPC̒PD܈|bZ2 QdWO э\(jQePYh-ii(%7aw"٤π|u9y0<zћ{04׿U+ v?-ӢxϺ.˳i6~V8[N?1*YW[#r#lO )ڳ|c#K(4qf56haB2̈́¿90 BGV5Lߨ]Ek8g_ I$_"vSMwTL迎˗i ІkURrp LPU&iF))4VV6LsU6QՕÙtz9֔I,X8Sqa/646pf͕w{Og&6_\g*D͢VMO3B/HƇSny-P>u H&duҁ=BxK03iדM^Uг XL[BNƧl:~u&M?$1t H7$ȕ-OgODϼ9頠^lj8,r dTԴӋ^^.2uQW3-XMM`:Rs GTzG8;c\ЈM-}9))YA[P8Bꤗ#5("BmJ BǑ ʍ/VçlZ *>#5tdgX~BdpU}|:ΠFG)plMs:xRESlkQPi/u7IiŸ)(5Fn: H# L~Ŭd_()1TTN]HHaK]EoWfVYSD#DX݇(S"xquXςB&tԲ$HtC+stW<lHg3a?֔(IGuzr?!*?.0cH;9 s& +~ V*}1ŋI)D%H_MrYlv94aͼ^R<19Q:QKfK2`:%_9?GPdMabg$I$ށDbɔ#Sͷ qEfyf3jY4ZŸv%q;,$x¸*qzH>t 9bQjB45aٓ-"4mF:LY4vU 2^tA]!݆"B]z[YK}ˏ2 :,mj)uCU oU2V@J=p!rgvb]"Ѵ~]$lĄ0-WR1x["J5x´@D`{̇hʙ [O6s.Z[{h<+9)"*~Zfw 03s)HV%4)3`; j_(8nOKT>qP0j4NGg:MXS_'H)܆"wouU"AW#St/˩>^OYLR\&r ǧt:6;<$U"x52 ݭ쪖]A!FDW0fiЎ `M(+1<0 .vcY)3[(Z> a 2,3~ Ơ5s1 u>sC; u8g5pKR- MvAק/}y ~#C]B 6ƶF}"S;٫4span> 'USINT' => 'smallint(4) UNSIGNED', 'BOOL' => 'tinyint(1) UNSIGNED', 'VCHAR' => 'varbinary(255)', 'VCHAR:' => 'varbinary(%d)', 'CHAR:' => 'binary(%d)', 'XSTEXT' => 'blob', 'XSTEXT_UNI'=> 'blob', 'STEXT' => 'blob', 'STEXT_UNI' => 'blob', 'TEXT' => 'blob', 'TEXT_UNI' => 'blob', 'MTEXT' => 'mediumblob', 'MTEXT_UNI' => 'mediumblob', 'TIMESTAMP' => 'int(11) UNSIGNED', 'DECIMAL' => 'decimal(5,2)', 'DECIMAL:' => 'decimal(%d,2)', 'PDECIMAL' => 'decimal(6,3)', 'PDECIMAL:' => 'decimal(%d,3)', 'VCHAR_UNI' => 'blob', 'VCHAR_UNI:'=> array('varbinary(%d)', 'limit' => array('mult', 3, 255, 'blob')), 'VCHAR_CI' => 'blob', 'VARBINARY' => 'varbinary(255)', ), ); foreach ($schema_data as $table_name => $table_data) { $table_name = str_replace('phpbb_', $prefix, $table_name); // Write comment about table echo "# Table: '{$table_name}'$newline"; // Create Table statement $generator = $textimage = false; // Do we need to DROP a fulltext index before we alter the table? if ($table_name == ($prefix . 'posts') && $drop_index) { echo "ALTER TABLE {$table_name}{$newline}"; echo "DROP INDEX post_text,{$newline}DROP INDEX post_subject,{$newline}DROP INDEX post_content;{$newline}{$newline}"; } $line = "ALTER TABLE {$table_name} $newline"; // Table specific so we don't get overlap $modded_array = array(); // Write columns one by one... foreach ($table_data['COLUMNS'] as $column_name => $column_data) { // Get type if (strpos($column_data[0], ':') !== false) { list($orig_column_type, $column_length) = explode(':', $column_data[0]); $column_type = sprintf($dbms_type_map['mysql_41'][$orig_column_type . ':'], $column_length); if (isset($dbms_type_map['mysql_40'][$orig_column_type . ':']['limit'][0])) { switch ($dbms_type_map['mysql_40'][$orig_column_type . ':']['limit'][0]) { case 'mult': if (($column_length * $dbms_type_map['mysql_40'][$orig_column_type . ':']['limit'][1]) > $dbms_type_map['mysql_40'][$orig_column_type . ':']['limit'][2]) { $modded_array[$column_name] = $column_type; } break; } } $orig_column_type .= ':'; } else { $orig_column_type = $column_data[0]; $other_column_type = $dbms_type_map['mysql_40'][$column_data[0]]; if ($other_column_type == 'text' || $other_column_type == 'blob') { $modded_array[$column_name] = $column_type; } $column_type = $dbms_type_map['mysql_41'][$column_data[0]]; } // Adjust default value if db-dependent specified if (is_array($column_data[1])) { $column_data[1] = (isset($column_data[1][$dbms])) ? $column_data[1][$dbms] : $column_data[1]['default']; } $line .= "\tMODIFY {$column_name} {$column_type} "; // For hexadecimal values do not use single quotes if (!is_null($column_data[1]) && substr($column_type, -4) !== 'text' && substr($column_type, -4) !== 'blob') { $line .= (strpos($column_data[1], '0x') === 0) ? "DEFAULT {$column_data[1]} " : "DEFAULT '{$column_data[1]}' "; } $line .= 'NOT NULL'; if (isset($column_data[2])) { if ($column_data[2] == 'auto_increment') { $line .= ' auto_increment'; } else if ($column_data[2] == 'true_sort') { $line .= ' COLLATE utf8_unicode_ci'; } else if ($column_data[2] == 'no_sort') { $line .= ' COLLATE utf8_bin'; } } else if (preg_match('/(?:var)?char|(?:medium)?text/i', $column_type)) { $line .= ' COLLATE utf8_bin'; } $line .= ",$newline"; } // Write Keys if (isset($table_data['KEYS'])) { foreach ($table_data['KEYS'] as $key_name => $key_data) { $temp = ''; if (!is_array($key_data[1])) { $key_data[1] = array($key_data[1]); } $temp .= ($key_data[0] == 'INDEX') ? "\tADD KEY" : ''; $temp .= ($key_data[0] == 'UNIQUE') ? "\tADD UNIQUE" : ''; $repair = false; foreach ($key_data[1] as $key => $col_name) { if (isset($modded_array[$col_name])) { $repair = true; } } if ($repair) { $line .= "\tDROP INDEX " . $key_name . ",$newline"; $line .= $temp; $line .= ' ' . $key_name . ' (' . implode(', ', $key_data[1]) . "),$newline"; } } } //$line .= "\tCONVERT TO CHARACTER SET `utf8`$newline"; $line .= "\tDEFAULT CHARSET=utf8 COLLATE=utf8_bin;$newline$newline"; echo $line . "$newline"; // Do we now need to re-add the fulltext index? ;) if ($table_name == ($prefix . 'posts') && $drop_index) { echo "ALTER TABLE $table_name ADD FULLTEXT (post_subject), ADD FULLTEXT (post_text), ADD FULLTEXT post_content (post_subject, post_text);{$newline}"; } } /** * Define the basic structure * The format: * array('{TABLE_NAME}' => {TABLE_DATA}) * {TABLE_DATA}: * COLUMNS = array({column_name} = array({column_type}, {default}, {auto_increment})) * PRIMARY_KEY = {column_name(s)} * KEYS = array({key_name} = array({key_type}, {column_name(s)})), * * Column Types: * INT:x => SIGNED int(x) * BINT => BIGINT * UINT => mediumint(8) UNSIGNED * UINT:x => int(x) UNSIGNED * TINT:x => tinyint(x) * USINT => smallint(4) UNSIGNED (for _order columns) * BOOL => tinyint(1) UNSIGNED * VCHAR => varchar(255) * CHAR:x => char(x) * XSTEXT_UNI => text for storing 100 characters (topic_title for example) * STEXT_UNI => text for storing 255 characters (normal input field with a max of 255 single-byte chars) - same as VCHAR_UNI * TEXT_UNI => text for storing 3000 characters (short text, descriptions, comments, etc.) * MTEXT_UNI => mediumtext (post text, large text) * VCHAR:x => varchar(x) * TIMESTAMP => int(11) UNSIGNED * DECIMAL => decimal number (5,2) * DECIMAL: => decimal number (x,2) * PDECIMAL => precision decimal number (6,3) * PDECIMAL: => precision decimal number (x,3) * VCHAR_UNI => varchar(255) BINARY * VCHAR_CI => varchar_ci for postgresql, others VCHAR */ function get_schema_struct() { $schema_data = array(); $schema_data['phpbb_attachments'] = array( 'COLUMNS' => array( 'attach_id' => array('UINT', NULL, 'auto_increment'), 'post_msg_id' => array('UINT', 0), 'topic_id' => array('UINT', 0), 'in_message' => array('BOOL', 0), 'poster_id' => array('UINT', 0), 'is_orphan' => array('BOOL', 1), 'physical_filename' => array('VCHAR', ''), 'real_filename' => array('VCHAR', ''), 'download_count' => array('UINT', 0), 'attach_comment' => array('TEXT_UNI', ''), 'extension' => array('VCHAR:100', ''), 'mimetype' => array('VCHAR:100', ''), 'filesize' => array('UINT:20', 0), 'filetime' => array('TIMESTAMP', 0), 'thumbnail' => array('BOOL', 0), ), 'PRIMARY_KEY' => 'attach_id', 'KEYS' => array( 'filetime' => array('INDEX', 'filetime'), 'post_msg_id' => array('INDEX', 'post_msg_id'), 'topic_id' => array('INDEX', 'topic_id'), 'poster_id' => array('INDEX', 'poster_id'), 'is_orphan' => array('INDEX', 'is_orphan'), ), ); $schema_data['phpbb_acl_groups'] = array( 'COLUMNS' => array( 'group_id' => array('UINT', 0), 'forum_id' => array('UINT', 0), 'auth_option_id' => array('UINT', 0), 'auth_role_id' => array('UINT', 0), 'auth_setting' => array('TINT:2', 0), ), 'KEYS' => array( 'group_id' => array('INDEX', 'group_id'), 'auth_opt_id' => array('INDEX', 'auth_option_id'), 'auth_role_id' => array('INDEX', 'auth_role_id'), ), ); $schema_data['phpbb_acl_options'] = array( 'COLUMNS' => array( 'auth_option_id' => array('UINT', NULL, 'auto_increment'), 'auth_option' => array('VCHAR:50', ''), 'is_global' => array('BOOL', 0), 'is_local' => array('BOOL', 0), 'founder_only' => array('BOOL', 0), ), 'PRIMARY_KEY' => 'auth_option_id', 'KEYS' => array( 'auth_option' => array('UNIQUE', 'auth_option'), ), ); $schema_data['phpbb_acl_roles'] = array( 'COLUMNS' => array( 'role_id' => array('UINT', NULL, 'auto_increment'), 'role_name' => array('VCHAR_UNI', ''), 'role_description' => array('TEXT_UNI', ''), 'role_type' => array('VCHAR:10', ''), 'role_order' => array('USINT', 0), ), 'PRIMARY_KEY' => 'role_id', 'KEYS' => array( 'role_type' => array('INDEX', 'role_type'), 'role_order' => array('INDEX', 'role_order'), ), ); $schema_data['phpbb_acl_roles_data'] = array( 'COLUMNS' => array( 'role_id' => array('UINT', 0), 'auth_option_id' => array('UINT', 0), 'auth_setting' => array('TINT:2', 0), ), 'PRIMARY_KEY' => array('role_id', 'auth_option_id'), 'KEYS' => array( 'ath_op_id' => array('INDEX', 'auth_option_id'), ), ); $schema_data['phpbb_acl_users'] = array( 'COLUMNS' => array( 'user_id' => array('UINT', 0), 'forum_id' => array('UINT', 0), 'auth_option_id' => array('UINT', 0), 'auth_role_id' => array('UINT', 0), 'auth_setting' => array('TINT:2', 0), ), 'KEYS' => array( 'user_id' => array('INDEX', 'user_id'), 'auth_option_id' => array('INDEX', 'auth_option_id'), 'auth_role_id' => array('INDEX', 'auth_role_id'), ), ); $schema_data['phpbb_banlist'] = array( 'COLUMNS' => array( 'ban_id' => array('UINT', NULL, 'auto_increment'), 'ban_userid' => array('UINT', 0), 'ban_ip' => array('VCHAR:40', ''), 'ban_email' => array('VCHAR_UNI:100', ''), 'ban_start' => array('TIMESTAMP', 0), 'ban_end' => array('TIMESTAMP', 0), 'ban_exclude' => array('BOOL', 0), 'ban_reason' => array('VCHAR_UNI', ''), 'ban_give_reason' => array('VCHAR_UNI', ''), ), 'PRIMARY_KEY' => 'ban_id', 'KEYS' => array( 'ban_end' => array('INDEX', 'ban_end'), 'ban_user' => array('INDEX', array('ban_userid', 'ban_exclude')), 'ban_email' => array('INDEX', array('ban_email', 'ban_exclude')), 'ban_ip' => array('INDEX', array('ban_ip', 'ban_exclude')), ), ); $schema_data['phpbb_bbcodes'] = array( 'COLUMNS' => array( 'bbcode_id' => array('USINT', 0), 'bbcode_tag' => array('VCHAR:16', ''), 'bbcode_helpline' => array('VCHAR_UNI', ''), 'display_on_posting' => array('BOOL', 0), 'bbcode_match' => array('TEXT_UNI', ''), 'bbcode_tpl' => array('MTEXT_UNI', ''), 'first_pass_match' => array('MTEXT_UNI', ''), 'first_pass_replace' => array('MTEXT_UNI', ''), 'second_pass_match' => array('MTEXT_UNI', ''), 'second_pass_replace' => array('MTEXT_UNI', ''), ), 'PRIMARY_KEY' => 'bbcode_id', 'KEYS' => array( 'display_on_post' => array('INDEX', 'display_on_posting'), ), ); $schema_data['phpbb_bookmarks'] = array( 'COLUMNS' => array( 'topic_id' => array('UINT', 0), 'user_id' => array('UINT', 0), ), 'PRIMARY_KEY' => array('topic_id', 'user_id'), ); $schema_data['phpbb_bots'] = array( 'COLUMNS' => array( 'bot_id' => array('UINT', NULL, 'auto_increment'), 'bot_active' => array('BOOL', 1), 'bot_name' => array('STEXT_UNI', ''), 'user_id' => array('UINT', 0), 'bot_agent' => array('VCHAR', ''), 'bot_ip' => array('VCHAR', ''), ), 'PRIMARY_KEY' => 'bot_id', 'KEYS' => array( 'bot_active' => array('INDEX', 'bot_active'), ), ); $schema_data['phpbb_config'] = array( 'COLUMNS' => array( 'config_name' => array('VCHAR', ''), 'config_value' => array('VCHAR_UNI', ''), 'is_dynamic' => array('BOOL', 0), ), 'PRIMARY_KEY' => 'config_name', 'KEYS' => array( 'is_dynamic' => array('INDEX', 'is_dynamic'), ), ); $schema_data['phpbb_confirm'] = array( 'COLUMNS' => array( 'confirm_id' => array('CHAR:32', ''), 'session_id' => array('CHAR:32', ''), 'confirm_type' => array('TINT:3', 0), 'code' => array('VCHAR:8', ''), 'seed' => array('UINT:10', 0), 'attempts' => array('UINT', 0), ), 'PRIMARY_KEY' => array('session_id', 'confirm_id'), 'KEYS' => array( 'confirm_type' => array('INDEX', 'confirm_type'), ), ); $schema_data['phpbb_disallow'] = array( 'COLUMNS' => array( 'disallow_id' => array('UINT', NULL, 'auto_increment'), 'disallow_username' => array('VCHAR_UNI:255', ''), ), 'PRIMARY_KEY' => 'disallow_id', ); $schema_data['phpbb_drafts'] = array( 'COLUMNS' => array( 'draft_id' => array('UINT', NULL, 'auto_increment'), 'user_id' => array('UINT', 0), 'topic_id' => array('UINT', 0), 'forum_id' => array('UINT', 0), 'save_time' => array('TIMESTAMP', 0), 'draft_subject' => array('STEXT_UNI', ''), 'draft_message' => array('MTEXT_UNI', ''), ), 'PRIMARY_KEY' => 'draft_id', 'KEYS' => array( 'save_time' => array('INDEX', 'save_time'), ), ); $schema_data['phpbb_extensions'] = array( 'COLUMNS' => array( 'extension_id' => array('UINT', NULL, 'auto_increment'), 'group_id' => array('UINT', 0), 'extension' => array('VCHAR:100', ''), ), 'PRIMARY_KEY' => 'extension_id', ); $schema_data['phpbb_extension_groups'] = array( 'COLUMNS' => array( 'group_id' => array('UINT', NULL, 'auto_increment'), 'group_name' => array('VCHAR_UNI', ''), 'cat_id' => array('TINT:2', 0), 'allow_group' => array('BOOL', 0), 'download_mode' => array('BOOL', 1), 'upload_icon' => array('VCHAR', ''), 'max_filesize' => array('UINT:20', 0), 'allowed_forums' => array('TEXT', ''), 'allow_in_pm' => array('BOOL', 0), ), 'PRIMARY_KEY' => 'group_id', ); $schema_data['phpbb_forums'] = array( 'COLUMNS' => array( 'forum_id' => array('UINT', NULL, 'auto_increment'), 'parent_id' => array('UINT', 0), 'left_id' => array('UINT', 0), 'right_id' => array('UINT', 0), 'forum_parents' => array('MTEXT', ''), 'forum_name' => array('STEXT_UNI', ''), 'forum_desc' => array('TEXT_UNI', ''), 'forum_desc_bitfield' => array('VCHAR:255', ''), 'forum_desc_options' => array('UINT:11', 7), 'forum_desc_uid' => array('VCHAR:8', ''), 'forum_link' => array('VCHAR_UNI', ''), 'forum_password' => array('VCHAR_UNI:40', ''), 'forum_style' => array('UINT', 0), 'forum_image' => array('VCHAR', ''), 'forum_rules' => array('TEXT_UNI', ''), 'forum_rules_link' => array('VCHAR_UNI', ''), 'forum_rules_bitfield' => array('VCHAR:255', ''), 'forum_rules_options' => array('UINT:11', 7), 'forum_rules_uid' => array('VCHAR:8', ''), 'forum_topics_per_page' => array('TINT:4', 0), 'forum_type' => array('TINT:4', 0), 'forum_status' => array('TINT:4', 0), 'forum_posts' => array('UINT', 0), 'forum_topics' => array('UINT', 0), 'forum_topics_real' => array('UINT', 0), 'forum_last_post_id' => array('UINT', 0), 'forum_last_poster_id' => array('UINT', 0), 'forum_last_post_subject' => array('STEXT_UNI', ''), 'forum_last_post_time' => array('TIMESTAMP', 0), 'forum_last_poster_name'=> array('VCHAR_UNI', ''), 'forum_last_poster_colour'=> array('VCHAR:6', ''), 'forum_flags' => array('TINT:4', 32), 'forum_options' => array('UINT:20', 0), 'display_subforum_list' => array('BOOL', 1), 'display_on_index' => array('BOOL', 1), 'enable_indexing' => array('BOOL', 1), 'enable_icons' => array('BOOL', 1), 'enable_prune' => array('BOOL', 0), 'prune_next' => array('TIMESTAMP', 0), 'prune_days' => array('UINT', 0), 'prune_viewed' => array('UINT', 0), 'prune_freq' => array('UINT', 0), ), 'PRIMARY_KEY' => 'forum_id', 'KEYS' => array( 'left_right_id' => array('INDEX', array('left_id', 'right_id')), 'forum_lastpost_id' => array('INDEX', 'forum_last_post_id'), ), ); $schema_data['phpbb_forums_access'] = array( 'COLUMNS' => array( 'forum_id' => array('UINT', 0), 'user_id' => array('UINT', 0), 'session_id' => array('CHAR:32', ''), ), 'PRIMARY_KEY' => array('forum_id', 'user_id', 'session_id'), ); $schema_data['phpbb_forums_track'] = array( 'COLUMNS' => array( 'user_id' => array('UINT', 0), 'forum_id' => array('UINT', 0), 'mark_time' => array('TIMESTAMP', 0), ), 'PRIMARY_KEY' => array('user_id', 'forum_id'), ); $schema_data['phpbb_forums_watch'] = array( 'COLUMNS' => array( 'forum_id' => array('UINT', 0), 'user_id' => array('UINT', 0), 'notify_status' => array('BOOL', 0), ), 'KEYS' => array( 'forum_id' => array('INDEX', 'forum_id'), 'user_id' => array('INDEX', 'user_id'), 'notify_stat' => array('INDEX', 'notify_status'), ), ); $schema_data['phpbb_groups'] = array( 'COLUMNS' => array( 'group_id' => array('UINT', NULL, 'auto_increment'), 'group_type' => array('TINT:4', 1), 'group_founder_manage' => array('BOOL', 0), 'group_skip_auth' => array('BOOL', 0), 'group_name' => array('VCHAR_CI', ''), 'group_desc' => array('TEXT_UNI', ''), 'group_desc_bitfield' => array('VCHAR:255', ''), 'group_desc_options' => array('UINT:11', 7), 'group_desc_uid' => array('VCHAR:8', ''), 'group_display' => array('BOOL', 0), 'group_avatar' => array('VCHAR', ''), 'group_avatar_type' => array('TINT:2', 0), 'group_avatar_width' => array('USINT', 0), 'group_avatar_height' => array('USINT', 0), 'group_rank' => array('UINT', 0), 'group_colour' => array('VCHAR:6', ''), 'group_sig_chars' => array('UINT', 0), 'group_receive_pm' => array('BOOL', 0), 'group_message_limit' => array('UINT', 0), 'group_max_recipients' => array('UINT', 0), 'group_legend' => array('BOOL', 1), ), 'PRIMARY_KEY' => 'group_id', 'KEYS' => array( 'group_legend_name' => array('INDEX', array('group_legend', 'group_name')), ), ); $schema_data['phpbb_icons'] = array( 'COLUMNS' => array( 'icons_id' => array('UINT', NULL, 'auto_increment'), 'icons_url' => array('VCHAR', ''), 'icons_width' => array('TINT:4', 0), 'icons_height' => array('TINT:4', 0), 'icons_order' => array('UINT', 0), 'display_on_posting' => array('BOOL', 1), ), 'PRIMARY_KEY' => 'icons_id', 'KEYS' => array( 'display_on_posting' => array('INDEX', 'display_on_posting'), ), ); $schema_data['phpbb_lang'] = array( 'COLUMNS' => array( 'lang_id' => array('TINT:4', NULL, 'auto_increment'), 'lang_iso' => array('VCHAR:30', ''), 'lang_dir' => array('VCHAR:30', ''), 'lang_english_name' => array('VCHAR_UNI:100', ''), 'lang_local_name' => array('VCHAR_UNI:255', ''), 'lang_author' => array('VCHAR_UNI:255', ''), ), 'PRIMARY_KEY' => 'lang_id', 'KEYS' => array( 'lang_iso' => array('INDEX', 'lang_iso'), ), ); $schema_data['phpbb_log'] = array( 'COLUMNS' => array( 'log_id' => array('UINT', NULL, 'auto_increment'), 'log_type' => array('TINT:4', 0), 'user_id' => array('UINT', 0), 'forum_id' => array('UINT', 0), 'topic_id' => array('UINT', 0), 'reportee_id' => array('UINT', 0), 'log_ip' => array('VCHAR:40', ''), 'log_time' => array('TIMESTAMP', 0), 'log_operation' => array('TEXT_UNI', ''), 'log_data' => array('MTEXT_UNI', ''), ), 'PRIMARY_KEY' => 'log_id', 'KEYS' => array( 'log_type' => array('INDEX', 'log_type'), 'log_time' => array('INDEX', 'log_time'), 'forum_id' => array('INDEX', 'forum_id'), 'topic_id' => array('INDEX', 'topic_id'), 'reportee_id' => array('INDEX', 'reportee_id'), 'user_id' => array('INDEX', 'user_id'), ), ); $schema_data['phpbb_moderator_cache'] = array( 'COLUMNS' => array( 'forum_id' => array('UINT', 0), 'user_id' => array('UINT', 0), 'username' => array('VCHAR_UNI:255', ''), 'group_id' => array('UINT', 0), 'group_name' => array('VCHAR_UNI', ''), 'display_on_index' => array('BOOL', 1), ), 'KEYS' => array( 'disp_idx' => array('INDEX', 'display_on_index'), 'forum_id' => array('INDEX', 'forum_id'), ), ); $schema_data['phpbb_modules'] = array( 'COLUMNS' => array( 'module_id' => array('UINT', NULL, 'auto_increment'), 'module_enabled' => array('BOOL', 1), 'module_display' => array('BOOL', 1), 'module_basename' => array('VCHAR', ''), 'module_class' => array('VCHAR:10', ''), 'parent_id' => array('UINT', 0), 'left_id' => array('UINT', 0), 'right_id' => array('UINT', 0), 'module_langname' => array('VCHAR', ''), 'module_mode' => array('VCHAR', ''), 'module_auth' => array('VCHAR', ''), ), 'PRIMARY_KEY' => 'module_id', 'KEYS' => array( 'left_right_id' => array('INDEX', array('left_id', 'right_id')), 'module_enabled' => array('INDEX', 'module_enabled'), 'class_left_id' => array('INDEX', array('module_class', 'left_id')), ), ); $schema_data['phpbb_poll_options'] = array( 'COLUMNS' => array( 'poll_option_id' => array('TINT:4', 0), 'topic_id' => array('UINT', 0), 'poll_option_text' => array('TEXT_UNI', ''), 'poll_option_total' => array('UINT', 0), ), 'KEYS' => array( 'poll_opt_id' => array('INDEX', 'poll_option_id'), 'topic_id' => array('INDEX', 'topic_id'), ), ); $schema_data['phpbb_poll_votes'] = array( 'COLUMNS' => array( 'topic_id' => array('UINT', 0), 'poll_option_id' => array('TINT:4', 0), 'vote_user_id' => array('UINT', 0), 'vote_user_ip' => array('VCHAR:40', ''), ), 'KEYS' => array( 'topic_id' => array('INDEX', 'topic_id'), 'vote_user_id' => array('INDEX', 'vote_user_id'), 'vote_user_ip' => array('INDEX', 'vote_user_ip'), ), ); $schema_data['phpbb_posts'] = array( 'COLUMNS' => array( 'post_id' => array('UINT', NULL, 'auto_increment'), 'topic_id' => array('UINT', 0), 'forum_id' => array('UINT', 0), 'poster_id' => array('UINT', 0), 'icon_id' => array('UINT', 0), 'poster_ip' => array('VCHAR:40', ''), 'post_time' => array('TIMESTAMP', 0), 'post_approved' => array('BOOL', 1), 'post_reported' => array('BOOL', 0), 'enable_bbcode' => array('BOOL', 1), 'enable_smilies' => array('BOOL', 1), 'enable_magic_url' => array('BOOL', 1), 'enable_sig' => array('BOOL', 1), 'post_username' => array('VCHAR_UNI:255', ''), 'post_subject' => array('STEXT_UNI', '', 'true_sort'), 'post_text' => array('MTEXT_UNI', ''), 'post_checksum' => array('VCHAR:32', ''), 'post_attachment' => array('BOOL', 0), 'bbcode_bitfield' => array('VCHAR:255', ''), 'bbcode_uid' => array('VCHAR:8', ''), 'post_postcount' => array('BOOL', 1), 'post_edit_time' => array('TIMESTAMP', 0), 'post_edit_reason' => array('STEXT_UNI', ''), 'post_edit_user' => array('UINT', 0), 'post_edit_count' => array('USINT', 0), 'post_edit_locked' => array('BOOL', 0), ), 'PRIMARY_KEY' => 'post_id', 'KEYS' => array( 'forum_id' => array('INDEX', 'forum_id'), 'topic_id' => array('INDEX', 'topic_id'), 'poster_ip' => array('INDEX', 'poster_ip'), 'poster_id' => array('INDEX', 'poster_id'), 'post_approved' => array('INDEX', 'post_approved'), 'post_username' => array('INDEX', 'post_username'), 'tid_post_time' => array('INDEX', array('topic_id', 'post_time')), ), ); $schema_data['phpbb_privmsgs'] = array( 'COLUMNS' => array( 'msg_id' => array('UINT', NULL, 'auto_increment'), 'root_level' => array('UINT', 0), 'author_id' => array('UINT', 0), 'icon_id' => array('UINT', 0), 'author_ip' => array('VCHAR:40', ''), 'message_time' => array('TIMESTAMP', 0), 'enable_bbcode' => array('BOOL', 1), 'enable_smilies' => array('BOOL', 1), 'enable_magic_url' => array('BOOL', 1), 'enable_sig' => array('BOOL', 1), 'message_subject' => array('STEXT_UNI', ''), 'message_text' => array('MTEXT_UNI', ''), 'message_edit_reason' => array('STEXT_UNI', ''), 'message_edit_user' => array('UINT', 0), 'message_attachment' => array('BOOL', 0), 'bbcode_bitfield' => array('VCHAR:255', ''), 'bbcode_uid' => array('VCHAR:8', ''), 'message_edit_time' => array('TIMESTAMP', 0), 'message_edit_count' => array('USINT', 0), 'to_address' => array('TEXT_UNI', ''), 'bcc_address' => array('TEXT_UNI', ''), 'message_reported' => array('BOOL', 0), ), 'PRIMARY_KEY' => 'msg_id', 'KEYS' => array( 'author_ip' => array('INDEX', 'author_ip'), 'message_time' => array('INDEX', 'message_time'), 'author_id' => array('INDEX', 'author_id'), 'root_level' => array('INDEX', 'root_level'), ), ); $schema_data['phpbb_privmsgs_folder'] = array( 'COLUMNS' => array( 'folder_id' => array('UINT', NULL, 'auto_increment'), 'user_id' => array('UINT', 0), 'folder_name' => array('VCHAR_UNI', ''), 'pm_count' => array('UINT', 0), ), 'PRIMARY_KEY' => 'folder_id', 'KEYS' => array( 'user_id' => array('INDEX', 'user_id'), ), ); $schema_data['phpbb_privmsgs_rules'] = array( 'COLUMNS' => array( 'rule_id' => array('UINT', NULL, 'auto_increment'), 'user_id' => array('UINT', 0), 'rule_check' => array('UINT', 0), 'rule_connection' => array('UINT', 0), 'rule_string' => array('VCHAR_UNI', ''), 'rule_user_id' => array('UINT', 0), 'rule_group_id' => array('UINT', 0), 'rule_action' => array('UINT', 0), 'rule_folder_id' => array('INT:11', 0), ), 'PRIMARY_KEY' => 'rule_id', 'KEYS' => array( 'user_id' => array('INDEX', 'user_id'), ), ); $schema_data['phpbb_privmsgs_to'] = array( 'COLUMNS' => array( 'msg_id' => array('UINT', 0), 'user_id' => array('UINT', 0), 'author_id' => array('UINT', 0), 'pm_deleted' => array('BOOL', 0), 'pm_new' => array('BOOL', 1), 'pm_unread' => array('BOOL', 1), 'pm_replied' => array('BOOL', 0), 'pm_marked' => array('BOOL', 0), 'pm_forwarded' => array('BOOL', 0), 'folder_id' => array('INT:11', 0), ), 'KEYS' => array( 'msg_id' => array('INDEX', 'msg_id'), 'author_id' => array('INDEX', 'author_id'), 'usr_flder_id' => array('INDEX', array('user_id', 'folder_id')), ), ); $schema_data['phpbb_profile_fields'] = array( 'COLUMNS' => array( 'field_id' => array('UINT', NULL, 'auto_increment'), 'field_name' => array('VCHAR_UNI', ''), 'field_type' => array('TINT:4', 0), 'field_ident' => array('VCHAR:20', ''), 'field_length' => array('VCHAR:20', ''), 'field_minlen' => array('VCHAR', ''), 'field_maxlen' => array('VCHAR', ''), 'field_novalue' => array('VCHAR_UNI', ''), 'field_default_value' => array('VCHAR_UNI', ''), 'field_validation' => array('VCHAR_UNI:20', ''), 'field_required' => array('BOOL', 0), 'field_show_on_reg' => array('BOOL', 0), 'field_show_on_vt' => array('BOOL', 0), 'field_show_profile' => array('BOOL', 0), 'field_hide' => array('BOOL', 0), 'field_no_view' => array('BOOL', 0), 'field_active' => array('BOOL', 0), 'field_order' => array('UINT', 0), ), 'PRIMARY_KEY' => 'field_id', 'KEYS' => array( 'fld_type' => array('INDEX', 'field_type'), 'fld_ordr' => array('INDEX', 'field_order'), ), ); $schema_data['phpbb_profile_fields_data'] = array( 'COLUMNS' => array( 'user_id' => array('UINT', 0), ), 'PRIMARY_KEY' => 'user_id', ); $schema_data['phpbb_profile_fields_lang'] = array( 'COLUMNS' => array( 'field_id' => array('UINT', 0), 'lang_id' => array('UINT', 0), 'option_id' => array('UINT', 0), 'field_type' => array('TINT:4', 0), 'lang_value' => array('VCHAR_UNI', ''), ), 'PRIMARY_KEY' => array('field_id', 'lang_id', 'option_id'), ); $schema_data['phpbb_profile_lang'] = array( 'COLUMNS' => array( 'field_id' => array('UINT', 0), 'lang_id' => array('UINT', 0), 'lang_name' => array('VCHAR_UNI', ''), 'lang_explain' => array('TEXT_UNI', ''), 'lang_default_value' => array('VCHAR_UNI', ''), ), 'PRIMARY_KEY' => array('field_id', 'lang_id'), ); $schema_data['phpbb_ranks'] = array( 'COLUMNS' => array( 'rank_id' => array('UINT', NULL, 'auto_increment'), 'rank_title' => array('VCHAR_UNI', ''), 'rank_min' => array('UINT', 0), 'rank_special' => array('BOOL', 0), 'rank_image' => array('VCHAR', ''), ), 'PRIMARY_KEY' => 'rank_id', ); $schema_data['phpbb_reports'] = array( 'COLUMNS' => array( 'report_id' => array('UINT', NULL, 'auto_increment'), 'reason_id' => array('USINT', 0), 'post_id' => array('UINT', 0), 'pm_id' => array('UINT', 0), 'user_id' => array('UINT', 0), 'user_notify' => array('BOOL', 0), 'report_closed' => array('BOOL', 0), 'report_time' => array('TIMESTAMP', 0), 'report_text' => array('MTEXT_UNI', ''), ), 'PRIMARY_KEY' => 'report_id', 'KEYS' => array( 'post_id' => array('INDEX', 'post_id'), 'pm_id' => array('INDEX', 'pm_id'), ), ); $schema_data['phpbb_reports_reasons'] = array( 'COLUMNS' => array( 'reason_id' => array('USINT', NULL, 'auto_increment'), 'reason_title' => array('VCHAR_UNI', ''), 'reason_description' => array('MTEXT_UNI', ''), 'reason_order' => array('USINT', 0), ), 'PRIMARY_KEY' => 'reason_id', ); $schema_data['phpbb_search_results'] = array( 'COLUMNS' => array( 'search_key' => array('VCHAR:32', ''), 'search_time' => array('TIMESTAMP', 0), 'search_keywords' => array('MTEXT_UNI', ''), 'search_authors' => array('MTEXT', ''), ), 'PRIMARY_KEY' => 'search_key', ); $schema_data['phpbb_search_wordlist'] = array( 'COLUMNS' => array( 'word_id' => array('UINT', NULL, 'auto_increment'), 'word_text' => array('VCHAR_UNI', ''), 'word_common' => array('BOOL', 0), 'word_count' => array('UINT', 0), ), 'PRIMARY_KEY' => 'word_id', 'KEYS' => array( 'wrd_txt' => array('UNIQUE', 'word_text'), 'wrd_cnt' => array('INDEX', 'word_count'), ), ); $schema_data['phpbb_search_wordmatch'] = array( 'COLUMNS' => array( 'post_id' => array('UINT', 0), 'word_id' => array('UINT', 0), 'title_match' => array('BOOL', 0), ), 'KEYS' => array( 'unq_mtch' => array('UNIQUE', array('word_id', 'post_id', 'title_match')), 'word_id' => array('INDEX', 'word_id'), 'post_id' => array('INDEX', 'post_id'), ), ); $schema_data['phpbb_sessions'] = array( 'COLUMNS' => array( 'session_id' => array('CHAR:32', ''), 'session_user_id' => array('UINT', 0), 'session_forum_id' => array('UINT', 0), 'session_last_visit' => array('TIMESTAMP', 0), 'session_start' => array('TIMESTAMP', 0), 'session_time' => array('TIMESTAMP', 0), 'session_ip' => array('VCHAR:40', ''), 'session_browser' => array('VCHAR:150', ''), 'session_forwarded_for' => array('VCHAR:255', ''), 'session_page' => array('VCHAR_UNI', ''), 'session_viewonline' => array('BOOL', 1), 'session_autologin' => array('BOOL', 0), 'session_admin' => array('BOOL', 0), ), 'PRIMARY_KEY' => 'session_id', 'KEYS' => array( 'session_time' => array('INDEX', 'session_time'), 'session_user_id' => array('INDEX', 'session_user_id'), 'session_fid' => array('INDEX', 'session_forum_id'), ), ); $schema_data['phpbb_sessions_keys'] = array( 'COLUMNS' => array( 'key_id' => array('CHAR:32', ''), 'user_id' => array('UINT', 0), 'last_ip' => array('VCHAR:40', ''), 'last_login' => array('TIMESTAMP', 0), ), 'PRIMARY_KEY' => array('key_id', 'user_id'), 'KEYS' => array( 'last_login' => array('INDEX', 'last_login'), ), ); $schema_data['phpbb_sitelist'] = array( 'COLUMNS' => array( 'site_id' => array('UINT', NULL, 'auto_increment'), 'site_ip' => array('VCHAR:40', ''), 'site_hostname' => array('VCHAR', ''), 'ip_exclude' => array('BOOL', 0), ), 'PRIMARY_KEY' => 'site_id', ); $schema_data['phpbb_smilies'] = array( 'COLUMNS' => array( 'smiley_id' => array('UINT', NULL, 'auto_increment'), // We may want to set 'code' to VCHAR:50 or check if unicode support is possible... at the moment only ASCII characters are allowed. 'code' => array('VCHAR_UNI:50', ''), 'emotion' => array('VCHAR_UNI:50', ''), 'smiley_url' => array('VCHAR:50', ''), 'smiley_width' => array('USINT', 0), 'smiley_height' => array('USINT', 0), 'smiley_order' => array('UINT', 0), 'display_on_posting'=> array('BOOL', 1), ), 'PRIMARY_KEY' => 'smiley_id', 'KEYS' => array( 'display_on_post' => array('INDEX', 'display_on_posting'), ), ); $schema_data['phpbb_styles'] = array( 'COLUMNS' => array( 'style_id' => array('UINT', NULL, 'auto_increment'), 'style_name' => array('VCHAR_UNI:255', ''), 'style_copyright' => array('VCHAR_UNI', ''), 'style_active' => array('BOOL', 1), 'style_path' => array('VCHAR:100', ''), 'bbcode_bitfield' => array('VCHAR:255', 'kNg='), 'style_parent_id' => array('UINT:4', 0), 'style_parent_tree' => array('TEXT', ''), ), 'PRIMARY_KEY' => 'style_id', 'KEYS' => array( 'style_name' => array('UNIQUE', 'style_name'), ), ); $schema_data['phpbb_topics'] = array( 'COLUMNS' => array( 'topic_id' => array('UINT', NULL, 'auto_increment'), 'forum_id' => array('UINT', 0), 'icon_id' => array('UINT', 0), 'topic_attachment' => array('BOOL', 0), 'topic_approved' => array('BOOL', 1), 'topic_reported' => array('BOOL', 0), 'topic_title' => array('STEXT_UNI', '', 'true_sort'), 'topic_poster' => array('UINT', 0), 'topic_time' => array('TIMESTAMP', 0), 'topic_time_limit' => array('TIMESTAMP', 0), 'topic_views' => array('UINT', 0), 'topic_replies' => array('UINT', 0), 'topic_replies_real' => array('UINT', 0), 'topic_status' => array('TINT:3', 0), 'topic_type' => array('TINT:3', 0), 'topic_first_post_id' => array('UINT', 0), 'topic_first_poster_name' => array('VCHAR_UNI', ''), 'topic_first_poster_colour' => array('VCHAR:6', ''), 'topic_last_post_id' => array('UINT', 0), 'topic_last_poster_id' => array('UINT', 0), 'topic_last_poster_name' => array('VCHAR_UNI', ''), 'topic_last_poster_colour' => array('VCHAR:6', ''), 'topic_last_post_subject' => array('STEXT_UNI', ''), 'topic_last_post_time' => array('TIMESTAMP', 0), 'topic_last_view_time' => array('TIMESTAMP', 0), 'topic_moved_id' => array('UINT', 0), 'topic_bumped' => array('BOOL', 0), 'topic_bumper' => array('UINT', 0), 'poll_title' => array('STEXT_UNI', ''), 'poll_start' => array('TIMESTAMP', 0), 'poll_length' => array('TIMESTAMP', 0), 'poll_max_options' => array('TINT:4', 1), 'poll_last_vote' => array('TIMESTAMP', 0), 'poll_vote_change' => array('BOOL', 0), ), 'PRIMARY_KEY' => 'topic_id', 'KEYS' => array( 'forum_id' => array('INDEX', 'forum_id'), 'forum_id_type' => array('INDEX', array('forum_id', 'topic_type')), 'last_post_time' => array('INDEX', 'topic_last_post_time'), 'topic_approved' => array('INDEX', 'topic_approved'), 'forum_appr_last' => array('INDEX', array('forum_id', 'topic_approved', 'topic_last_post_id')), 'fid_time_moved' => array('INDEX', array('forum_id', 'topic_last_post_time', 'topic_moved_id')), ), ); $schema_data['phpbb_topics_track'] = array( 'COLUMNS' => array( 'user_id' => array('UINT', 0), 'topic_id' => array('UINT', 0), 'forum_id' => array('UINT', 0), 'mark_time' => array('TIMESTAMP', 0), ), 'PRIMARY_KEY' => array('user_id', 'topic_id'), 'KEYS' => array( 'topic_id' => array('INDEX', 'topic_id'), 'forum_id' => array('INDEX', 'forum_id'), ), ); $schema_data['phpbb_topics_posted'] = array( 'COLUMNS' => array( 'user_id' => array('UINT', 0), 'topic_id' => array('UINT', 0), 'topic_posted' => array('BOOL', 0), ), 'PRIMARY_KEY' => array('user_id', 'topic_id'), ); $schema_data['phpbb_topics_watch'] = array( 'COLUMNS' => array( 'topic_id' => array('UINT', 0), 'user_id' => array('UINT', 0), 'notify_status' => array('BOOL', 0), ), 'KEYS' => array( 'topic_id' => array('INDEX', 'topic_id'), 'user_id' => array('INDEX', 'user_id'), 'notify_stat' => array('INDEX', 'notify_status'), ), ); $schema_data['phpbb_user_group'] = array( 'COLUMNS' => array( 'group_id' => array('UINT', 0), 'user_id' => array('UINT', 0), 'group_leader' => array('BOOL', 0), 'user_pending' => array('BOOL', 1), ), 'KEYS' => array( 'group_id' => array('INDEX', 'group_id'), 'user_id' => array('INDEX', 'user_id'), 'group_leader' => array('INDEX', 'group_leader'), ), ); $schema_data['phpbb_users'] = array( 'COLUMNS' => array( 'user_id' => array('UINT', NULL, 'auto_increment'), 'user_type' => array('TINT:2', 0), 'group_id' => array('UINT', 3), 'user_permissions' => array('MTEXT', ''), 'user_perm_from' => array('UINT', 0), 'user_ip' => array('VCHAR:40', ''), 'user_regdate' => array('TIMESTAMP', 0), 'username' => array('VCHAR_CI', ''), 'username_clean' => array('VCHAR_CI', ''), 'user_password' => array('VCHAR_UNI:40', ''), 'user_passchg' => array('TIMESTAMP', 0), 'user_pass_convert' => array('BOOL', 0), 'user_email' => array('VCHAR_UNI:100', ''), 'user_email_hash' => array('BINT', 0), 'user_birthday' => array('VCHAR:10', ''), 'user_lastvisit' => array('TIMESTAMP', 0), 'user_lastmark' => array('TIMESTAMP', 0), 'user_lastpost_time' => array('TIMESTAMP', 0), 'user_lastpage' => array('VCHAR_UNI:200', ''), 'user_last_confirm_key' => array('VCHAR:10', ''), 'user_last_search' => array('TIMESTAMP', 0), 'user_warnings' => array('TINT:4', 0), 'user_last_warning' => array('TIMESTAMP', 0), 'user_login_attempts' => array('TINT:4', 0), 'user_inactive_reason' => array('TINT:2', 0), 'user_inactive_time' => array('TIMESTAMP', 0), 'user_posts' => array('UINT', 0), 'user_lang' => array('VCHAR:30', ''), 'user_timezone' => array('DECIMAL', 0), 'user_dst' => array('BOOL', 0), 'user_dateformat' => array('VCHAR_UNI:30', 'd M Y H:i'), 'user_style' => array('UINT', 0), 'user_rank' => array('UINT', 0), 'user_colour' => array('VCHAR:6', ''), 'user_new_privmsg' => array('INT:4', 0), 'user_unread_privmsg' => array('INT:4', 0), 'user_last_privmsg' => array('TIMESTAMP', 0), 'user_message_rules' => array('BOOL', 0), 'user_full_folder' => array('INT:11', -3), 'user_emailtime' => array('TIMESTAMP', 0), 'user_topic_show_days' => array('USINT', 0), 'user_topic_sortby_type' => array('VCHAR:1', 't'), 'user_topic_sortby_dir' => array('VCHAR:1', 'd'), 'user_post_show_days' => array('USINT', 0), 'user_post_sortby_type' => array('VCHAR:1', 't'), 'user_post_sortby_dir' => array('VCHAR:1', 'a'), 'user_notify' => array('BOOL', 0), 'user_notify_pm' => array('BOOL', 1), 'user_notify_type' => array('TINT:4', 0), 'user_allow_pm' => array('BOOL', 1), 'user_allow_viewonline' => array('BOOL', 1), 'user_allow_viewemail' => array('BOOL', 1), 'user_allow_massemail' => array('BOOL', 1), 'user_options' => array('UINT:11', 230271), 'user_avatar' => array('VCHAR', ''), 'user_avatar_type' => array('TINT:2', 0), 'user_avatar_width' => array('USINT', 0), 'user_avatar_height' => array('USINT', 0), 'user_sig' => array('MTEXT_UNI', ''), 'user_sig_bbcode_uid' => array('VCHAR:8', ''), 'user_sig_bbcode_bitfield' => array('VCHAR:255', ''), 'user_from' => array('VCHAR_UNI:100', ''), 'user_icq' => array('VCHAR:15', ''), 'user_aim' => array('VCHAR_UNI', ''), 'user_yim' => array('VCHAR_UNI', ''), 'user_msnm' => array('VCHAR_UNI', ''), 'user_jabber' => array('VCHAR_UNI', ''), 'user_website' => array('VCHAR_UNI:200', ''), 'user_occ' => array('TEXT_UNI', ''), 'user_interests' => array('TEXT_UNI', ''), 'user_actkey' => array('VCHAR:32', ''), 'user_newpasswd' => array('VCHAR_UNI:40', ''), 'user_form_salt' => array('VCHAR_UNI:32', ''), 'user_new' => array('BOOL', 1), 'user_reminded' => array('TINT:4', 0), 'user_reminded_time' => array('TIMESTAMP', 0), ), 'PRIMARY_KEY' => 'user_id', 'KEYS' => array( 'user_birthday' => array('INDEX', 'user_birthday'), 'user_email_hash' => array('INDEX', 'user_email_hash'), 'user_type' => array('INDEX', 'user_type'), 'username_clean' => array('UNIQUE', 'username_clean'), ), ); $schema_data['phpbb_warnings'] = array( 'COLUMNS' => array( 'warning_id' => array('UINT', NULL, 'auto_increment'), 'user_id' => array('UINT', 0), 'post_id' => array('UINT', 0), 'log_id' => array('UINT', 0), 'warning_time' => array('TIMESTAMP', 0), ), 'PRIMARY_KEY' => 'warning_id', ); $schema_data['phpbb_words'] = array( 'COLUMNS' => array( 'word_id' => array('UINT', NULL, 'auto_increment'), 'word' => array('VCHAR_UNI', ''), 'replacement' => array('VCHAR_UNI', ''), ), 'PRIMARY_KEY' => 'word_id', ); $schema_data['phpbb_zebra'] = array( 'COLUMNS' => array( 'user_id' => array('UINT', 0), 'zebra_id' => array('UINT', 0), 'friend' => array('BOOL', 0), 'foe' => array('BOOL', 0), ), 'PRIMARY_KEY' => array('user_id', 'zebra_id'), ); return $schema_data; }