/[H9]/trunk/docs/Samlet/Samlet 1.doc
ViewVC logotype

Contents of /trunk/docs/Samlet/Samlet 1.doc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 263 - (show annotations) (download) (as text)
Thu Dec 13 10:12:34 2007 UTC (16 years, 5 months ago) by hedin
File MIME type: application/octet-stream
File size: 457216 byte(s)
Updated embedded docs.
1 ࡱ; t
2 
3  "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root Entry
4  
5  FMicrosoft Word-Dokument
6 MSWordDocWord.Document.89q
7 FMicrosoft Visio DrawingVisio 11.0 ShapesVisio.Drawing.119qW
8 [ddStandard$a$1$A$*$/B*OJQJCJmHsHPJ^JaJ_HtHnH`` Overskrift 1$@&
9 & F
10 & Fdh<$CJ5KHaJ \\\ Overskrift 2$@&
11 & F
12 & Fdh<$ 5aJ]\VV Overskrift 3@&
13 & F
14 & F<$ >*5aJ\BA@BAbsatz-Standardschriftart66 WW8Num2z1OJQJCJ^JaJ** WW8Num4z0OJQJ** WW8Num4z1OJQJ*!* WW8Num4z2OJQJ*1* WW8Num5z0OJQJ*A* WW8Num5z1OJQJ*Q* WW8Num5z2OJQJ*a* WW8Num6z0OJQJ*q* WW8Num6z1OJQJ** WW8Num6z2OJQJ** WW8Num8z1OJQJ** WW8Num8z2OJQJ** WW8Num8z3OJQJ** WW8Num9z0OJQJ** WW8Num9z1OJQJ** WW8Num9z2OJQJ,,
15 WW8Num10z0OJQJ,,
16 WW8Num10z1OJQJ,,
17 WW8Num10z2OJQJ,!,
18 WW8Num12z0OJQJ,1,
19 WW8Num12z1OJQJ,A,
20 WW8Num12z2OJQJ,Q,
21 WW8Num14z0OJQJ,a,
22 WW8Num14z1OJQJ,q,
23 WW8Num14z2OJQJ,,
24 WW8Num15z0OJQJ,,
25 WW8Num15z1OJQJ,,
26 WW8Num15z2OJQJ,,
27 WW8Num16z0OJQJ,,
28 WW8Num16z1OJQJ,,
29 WW8Num16z2OJQJ,,
30 WW8Num17z0OJQJ,,
31 WW8Num17z1OJQJ,,
32 WW8Num17z2OJQJ,,
33 WW8Num20z0OJQJ,!,
34 WW8Num20z1OJQJ,1,
35 WW8Num20z2OJQJ,A,
36 WW8Num21z0OJQJ,Q,
37 WW8Num21z1OJQJ,a,
38 WW8Num21z2OJQJ<q<Default Paragraph Font.Ur. Hyperlink B*ph>*)rSidetalLL
39 Overskrift :x$OJQJCJPJ^J aJ@B@ Brdtekst;1$*$x KHPJ
40 ^J "/"Liste<^J HH Billedtekst =xx $CJ6^J aJ]((Indeks> $^J BB Nummerliste?^]`DD Nummerliste2@^]`**Page No.A$a$>>2>TitelB$a$<CJ05KHaJ \<J<
41 UndertitelC$a$CJ6aJ]HBHHanging IndentD^]$`$$R$BottomECJ>>Indholdsfortegnelse 1FVVIndholdsfortegnelse 2G^]`VVIndholdsfortegnelse 3H^]`VVIndholdsfortegnelse 4I^]`VVIndholdsfortegnelse 5J^]`VVIndholdsfortegnelse 6K^]`VVIndholdsfortegnelse 7L^]`VVIndholdsfortegnelse 8M^]`VVIndholdsfortegnelse 9N^]`22 Sidehoved O z&. .Sidefod P z&FFTable Contents Q1$*$ $ OJ QJ PJ8"8 KodeSektion
42 R6>*`2`Indholdsfortegnelse 10"S %
43  ^ ]`0B0 TabelindholdT $BARBTabeloverskrift U$a$ $5\,b, RammeindholdV
44 4k,,[[[[[[[[[[[[[[[]H >TI ޭ>
45  
46    4 (f2HD\hjrl4n<qsuvx|t~TF@|`^ \@0&@|Shth(@
47  !"#$%&'()*+,-./0123456789:;<=>?@ABCD
48 UVoy{+-Gbd~BoqEG} "Oac} :jl);=W%46p)NPj & ( B [ ] w &''ɤˤֱ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX::X29<AUX\!8@P( 
49 
50 
51  `qqC" <
52 C ֡ #qT_toc34_toc78_toc91_toc125_toc133_toc139_toc397_toc417_toc479_toc666_toc751_toc800_toc872_toc904_toc914_toc917_toc923_toc939_toc954_toc971 E{"' ,4BD\Cg=4sD
53  E{"' ,4BD\Cg=4sD  
54
55    .OJQJCJ^JaJl.......)))()()()...OJQJhh))88)()()pp()  .@ @ .  .OJQJOJQJOJQJoppOJQJ@ @ OJQJOJQJoOJQJOJQJOJQJoPPOJQJ..pLp.@ @ ..L...PLP.OJQJOJQJ.OJQJ.OJQJCJ^JaJl....... 
56 WW8Num2WW8Num3WW8Num4WW8Num7WW8Num10WW8Num12WW8Num13WW8Num15WW8Num16WW8Num18WW8Num21@5282Y2Z2_222233
57 3-3.3<3334494:4F444455555555566677!777777W8Z8{8|88888 999g9h9w9999 :::J:K:U::::$;%;&<)<J<K<S<<<</=0=:=>> >>>?"?C?D?M????@@ @R@S@[@@@@)A*AAAAAA2B3B\\\\]V]W]_]q]r]z]]]]]]]]]2^A^M^N^j^}^~^^^^^^^0_M_N_h____
58 ` `8`w`x````a/a0aQaaaaaabjbkbbbbcBcCcdccccddAdsdtdddddteueeeeeeef-f.f """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" PGTimes New Roman5Symbol3&Arial] LucidasansTimes New Roman?DejaVu Sans?4Courier New;Wingdings_ StarSymbolArial Unicode MSOLucida Sans Unicode5TahomaO&Lucida Sans Unicode5&Tahoma5TahomaiLiberation SerifTimes New Roman?5Courier NewBhcfjff)y"NN)y"NN'0oDyK _toc34oDyK _toc78oDyK _toc91DyK 3.1.2.1 Valg|outlineqDyK _toc125qDyK _toc133qDyK _toc139DyK *6.1.5.1 Valg af databaseplatform.|outlineDyK 76.2.5.2 Generelle noter omkring databasedesign|outlineDyK "6.3.5.3 Tabel beskrivelse|outlineqDyK _toc397qDyK _toc417DyK $8.1.7.1 Generel beskrivelse|outlineDyK 8.2.7.2 IMEI|outlineDyK $8.3.7.3 Mulige forbedringer|outlineDyK 8.4.7.4 Funktioner|outlineqDyK _toc479DyK 8.6.7.6 Variabler|outlineDyK !8.7.7.7 Brugervejledning|outlineqDyK _toc666DyK 9.1.8.1 Beskrivelse|outlineDyK !9.2.8.2 Brugervejledning|outlineDyK 9.3.8.3 Funktioner|outlineqDyK _toc751DyK 10.1.9.1 TNTnet|outlineDyK 10.2.9.2 Design|outlineDyK 10.3.9.3 Layout.|outlineDyK (10.4.9.4 Software dokumentation|outlineqDyK _toc800qDyK _toc872DyK /10.5.9.5 Web klient bruger grnseflade|outlineqDyK _toc904qDyK _toc914qDyK _toc917qDyK _toc923qDyK _toc939qDyK _toc954qDyK _toc971DyK yK 2http://validator.w3.org/DdM+,^ `
59 
60 <A?2Eghe p!Eghe Eghe 8m (!x}Uus~{ò0(}yK%M#
61 !B˷$"t|iq -ȰԋhI0/ i&_$ ?gǯk;;7+K9/B.>K@$W&o)_ɂ?࢜"͟:(*Њv=*gr5kÇ76h}6~/7..IDj.-h;'Z. 绖ѶtѶ+۠*oOtn(:}7"Ư>om:y`|blp j/ӸQJ\=vzMr+%'J.R;[[w3n1_em_^6M[Mj}< /NkM<enWlnׇ|)}؟԰j7kS|qXGۓ&Uw*ք]:"=՞mIeu;qmXǔLܴeLپjk_&\q_ϖ>\χ>?|7`[>n'os;_ e]MkoV+عcsǑa7 AGC ̌x@+j03⻆ZO fFoP`f5D(i03^C$ fFcP `f7 
62 4uC fFeP `fĝ̌XoP `f 
63 !̌WC| fF|@̈ 
64 4q!B6Z"hj03fC" fF|@̈0D(&j03&Č@B"hWi03:CZ fF|@̈5D(&k03jC fF|@̈"h5WL fF\iP}E5D(h033̌@UnP}S4D(j03ڝ̌!Bv3#.3D(i03RC;̌!Bv3#>dP-`f%B fF!BC fF!BX"hǔ!BD"hk03BCm3#oP=̈3D(О`f 
65 4q!B\1D(О`fy/5ۆšx!B?̌x!B[ fFkP`f 
66 ̌x!B; fF@3#~@3#~@ۢ̈s 
67 ?k03lC fFeP`fęZ3#0D(̈ 
68 5q!B3#hP`f/"hh03dC] fF@;̈{̌x!B`fī 
69 P4D(4
70 CB/7D(Ў`f 
71 J fFhPUk03g 
72 ̌8@̈"h'h03XC̈c 
73 ̌8@̈ 
74 ~̌8@;IG"h4q!Bv3#5D(`f 
75 Ǎ8@;[k 
76 ̌x!B6D"hk03@Cm3#nP]̈"h5څ̌x!Bv3#dPM`fD fFkP}V{"hWh03b/C* fFL 
77 k5hPM`f@̈= 
78 4!B6U"h5xCm3#V"h_`f*Cm3#v2D(n`fc 
79 [5!BM fF,7D(j03b!Bv3#F̌"h41oPݧu@[u@[YG(k0g7ZsP-`
80 5~msP= hOh0g[SY^C\9}
81 (Vh0gJ ͠@[#hk0g j á@[h4>ms\Pm`
82 4>vmsPm`h5>OګYK5 @7 IAK9fP=(h0g}
83 }Y#msq@;f(i0g}>
84 \%9sPY_Ws>@+` h4Z' 欯sAV8(Ў`z!h]4 Zw 欯Bk0g}m
85 sׯ@5v(h0g=
86 YUd S@q |@ ǥ@6P93P(j4ڹYmsc@x3(Fj0g=&
87 Oi0g=n
88 1Y-m3#Z?B6^c4@DH@L"h`fDx\(Ю`fDa(Ю`fDf(j5:
89 5:>
90 /j03u ;hS4:
91 ǐh M̌h, fFΩm3#Z}@u fFM fFΟ6 fF[̌ȟ@[@̈9gP}G@Os@[̈P-`fDH(~̈yP-`fD\R(4:
92 %̌h ̌h7 R fFm1 fFο fF) fFcm3#6D(Vh03J fF: @[̈Vhk03j fF)@[̈Vh4m3#Z]$Pm`fD/
93 4tm3#Z3Pm`fD
94 ̌h@3#ZCP̈Vh`fzCm3#Z}RP̈Vh{4m3#ZaP`fD
95 ̌huAvH8(rUfF@ 4ۃ3#ZPk03{Z 棋 ;m]<N4+]i<86maM[xL >r z
96 +?;P,8 f<r.ts/5߼Z%5]ŵa^S;&\8n\<tYhuMO<d|eͽ7]Z. mvh-M6Be[|eͿE_"tYh/jko,W7]ڼgZ. m{j-M6BB[|e{ʭE"t o-7]fC.}eC.}7]&C.}q!MK_\g|ӥ/`|ӥ/K_\m|ӥ/>o|ӥ/>g|ӥ/K_\i|ӥ/>k|ӥ/>c|ӥ/.7Dn|ӥ/>i|ӥ/>a|ӥ/>n|ӥ/.3D"t鋏"t"tK oş"t?6D"t"t鋋 oŅ7]7] o o7]=7]<C.}ۆ7]]7]7]\C.}vC.}6C.}VC.}7] o97]lC.}q!M8K_a|ӥ/N3D"t7"t_4D'"t"t鋵7]ⵆ7]Ն7]╆7]7]7]e7]DC.}37]xC.}"C.}q!M8K_m|ӥ/2DG"t# oa7]PC.}<C.}q!MXc|ӥ/e|ӥ/2D"t鋧"t鋧"t7DO1DO2D"t} oކ7]b/C.}15D7]bl|ӥ/0D"t] o ojC.}K_d|ӥ/c|ӥ/7D o2C.}12DC.}1o|%|%|%{[M7]fK5t.ߏ|%;odMB{7])K~t7.|%{odMc}<7]Kq!t>v.|%t>O7]ϥM=|%t>o7]M|%)t>7]5M|%=tɾ7]}M3|%tɾ7]M|%&tɾ7] M|%;t7]*M|%{t7]M=|%{ t'7]rMf|%{Lt7]M|ӥ/ZhMhG7]\C.}:oEaK_.}:>oEvK_.}:_oE
97 >K_M.}:oEK_\b|ӥ/ZsMhs7]u^tֹ{|ӥ/ZMh7]u&tֹ|ӥ/ZMh7]u0tֹ|ӥ/Z_Mh#7]u;t鋫 oEoEoEWoEoEoECoEoEoE/oEӅoEwoEoEoEcoEozC.}.}.}.}.}7.}`.}.}.}.}.}=C.~yLG-:M߃qEcur]$w$]&ɖ[A6;pI˂݅; ZkºoCՊG~m{.cC1\4 ߵ\yy]qnjܑ ۑJ*]qk#s5ss5Ʈ{;Z$z( -_߅ߏ ~9\o⿄KWÇҸ>|<>
98 ǯo=xo1n;;qIYTTD=cӓhxR]tOEsѼ$R<v$I7_ \ZM!Y,yZ>A^_*K~R)DJ=٥n]ѢRuh2ZY:&zTm+EJA0J{7,{7~tgxFZJwgӿOpdwtF yN7"놧y-npz;;~՝r3 /NLbz~U\^Q*]&KE)wW74M* ss]9Tr3݆ t?@wdR\I|@rۑ^LjW%Cܜd>.I.pÓOӓ1grN&0މ/w;+1V_pܳT<枌gni<=-݃-6( ̓}װo[^^^nmko[0q $ rH.A:َ%=v="۷T1ޟvL)O\r~)r}#{\ d=^u,Ui׫n;dewzu-oɺ#r{-r-ޒMސqܞv)o;~Unro`/~I 7Z_~B_~_O~3~*c-ru>(d]$Bٟ{ݑu}NyYՒ5ke]˺nu$e]$Mu+u}Mֵ^ﲮe]ߒu'_aYWL<t.I:'U:t꒮{b#ؑ$ Š \ZLi;$%O6IpեAR`pkpqs0T.Uw:JGKRXraY׃e]ɺ%[ﲮɺUYd]$GYחd]7ɺnu]/Vtd4GmY}%ʺS=Y\@QPKC4<WOg.[:lָW3,Aur@Y3e]kd]ϕu":LuHYQe]?-:FuXYqd]ɺu':Vu녲u-:JuYaCd]ϕuu=Sui]( WPiv NLビcSc0(VӲ4
99 O`x FɺS]~Y}5V=υ}97Z}Y W-W>*E0_UQtWeOf]s l)$ to<e򌛦_}S\WyU$hFvH$Tl~tT垑ݪyF?AK+nzgO_?4w{~uV˂{(5tk&$ڧ'Oj>~Qh/;O>#ʵYE<(kka,MoDd83: Lf
100 
101 BA?bn#QxEdonngn#QxEdPNG
102 
103 IHDR&qsRGBIDATx^ٓfqw6Hj㉰_8V4H"-oUOU]UDt5 Hd"?_ҿ/wyK%oo_u0y.SPPPPPG?w̿+_N9"̗CCCC@MƳoogK{$c4j ?O_"M _'2SSԼ9/7[[gٯ@ׇ/H7Sw9¿/ܬ_SwC/u(p(p(p(Q;N%i1oۿs\2o_u*FCCCC?RwI;?Jvs(p(p(p(p(l
104 7Rtzӿz@Ry6O)ɰ[:%wSW7g{MY*ĕo&qY+L?[K_R?L/w Ao-+<CQzWB%^]z(+X;D
105 gζ^֋*S؞P)LKlߝӡGM&}
106 nqoopc|qLr7#لlZ&{KKĂqUxOFd<=&v6N5Zfr!DQ?C24ZVs@*SOh5=7Sb@jSE=r""_n ֽ]5LC>LӲG,o@0ccvKƛm2v%oT&\~G}jDz=PY7z\:T~ɛ ]bL|.n&}9ut:n+$4A0MP{ݫ@1q3AtPa
107 P^6I(l?#&M)Lԗ
108 $%w Q4o9ά=x3
109 -H}zG^<CS~L<w[W Z:3td
110 KaTN_}Uk_UP8!׮|CiT
111 pH0 ~ JVb Ǒ'T%~aRϿ˿w[V+'BzGJEC@^oz?0VLC}-爜'-2ߊ`:75ˏCcÖ`i Av|Xjƺ| - O~}"5]
112 |NTI <zONE^Œ"KJRV2mLm'M'KĂvJ n")]\ML{gwhV ݩIPs(8"5z`>ۤb7I֧x I<113 V唟 mcɶ}{W~rhv'I~BVdGaI+iزJT2n _-E,Sj?OeW4B_9%<mpApˉ+<aOC9GS(K_=LjqJ2a()J8<*2:~Uėgl2BQ~V
113 /Dξbw'SGLUL<P4T8~9!i(?C ۋkAI@"N&Kz؊Ej.P:J\ҫ Rt?nSb]h%{{'xz-cmTd$QN t+oKlOaU-U TL~2u'#!+FZY[D`+Ajr.Va҅H `*`fg'QlVf88B|R}s<־l:#AcQɃ4jGr']KU7gܶq88}(P6-]a"@Sb}%4M^#.mCD@72G@)ucțC_bhit /!E0y1OEȠ=\|A#r^F0.ˎ/0>Ďw*qۅey3=S[\=ֿosd0gtJuz4dw1+QwTDVZn"\ h`SRǶzR7
114 IZJ!Ot7FA4:m{(xAZ>Z
115 4R8bvܝCgLcbsS3+<2v{,ZymӓأyUImʞM`{lC<X:-i?cW?@qdjB*,~q<ӗk:@]>;Uys(oX;"ʼn|>F2,gkg*d*?;@'3]V288 H L~eh! @38Z!e!:RuH5T&1RɎD$*cJ+:t$+@_DOtp0JJt%V9>{(8"ey=N/F}HLd1ʉ~ƶW H+N*laj 2qZ߾ QqH쬔i_Z\d@1m4k!Co1?4C܎.UNRDpHQv#NU>ɓTxo
116 ޤ:_xUMX jl|_Ř2 ĵ'mv渹'0nhhUli0N,@I.bVV"]z]CEU2ǁPލ()hsS&2]%ڀ_/z9UtҪݩiOOT$~bQfR^J`'%^N`we>Y yX'b" x$Jl翿^QJOVz:5Z|zC+J{ !XZ)8I:_9_؀~~! ۥU`^q ʼ#[{]We՗U%'xBb ~NIL̾+h8
117 jOheκRJ7wR9s1I ofQ8ܯaI*ը~3`9Pi6M[E~:8
118 
119 ܥ3y"-D3c
120 iW~M@_PPU)@קo߼ԣTrZe2lUNNG8̀TeVR5[DT?7>:4ϺO&αͥ3PP=)W<CY!
121 l^&\uzee7)nW~
122 
123 |:v\!5]Sz5kpt0?|1;r b|:r(Rwm[ߵf#ۢ}9]~K
124 o@BoiPPe)&*]:3KO e[?ȡө׿ /f=B+|ݡgGy\]==?!,6ln#I/|թjTvﳠɯ^~r`r̥Xs|b݋xRym8_[_gGw6([ߗ#";z) !ze} CC'$0C}Ξ@j#TxvSi9 '5TMBu|~7ST_>!-'.;ϹZvl>vϊ+L:yy}<;N>}0]/ӷ lw+Wo y@88( kWZH~#w_ޝ x|m\y(p(zaX^,W˕|WZP5LH ӴK?]@.guW]vZuF6v[Sq*S5kkNA+!Ctyo뢳;<?>A
125 g73T
126 ߝ_7WWS!b8rjJL9QL$vSo].Ů {KqqpOomjUook„+e.’̸ӰRZ[/] Կw{/vGoM1"2 ~CC5 nw+:Ct)M%EIޅo.pB>nz/]ZnH'vYom޹G+WfvObUt\LZY*dco$fVSa;KpU0=aI2̝rzMWŏ 3M__TW?qL?<P%r~`ѯ]KuGm7;ps @}Xݠ$fx~(p(p( R ˖d HIf0Ĝn0p?/~ H #)eP@(W =)J$cF?t-Bp_T\zVΉh@
127 }{5]q ζҡWN",%r=% Hy5mU&8; x4XNomov,;c&(IĀQʼkzӰFh
128 YfÄnIh'S{-3UL?bt!:_}( R Q5[l:rR2sǎy0'HXIjP1yS61uzƚGޔ3/b \[~Ʈ:x$v^  fRDKe¶ۤ#OOðp̑7vP:8A*ƚ+]YwmxRnKIӝlA
129 ?+vpFCPkzeEOZT顡G7n^]Fۆd?w@ e+3"|`=ϡ'E$Ax~b>UD`řxq?_{!HՊ꧱Fxs|^OCCCO$իUޤ40X5xJ=a[egU}B0$oJpM~Y9?
130 
131 
132 |8^L˹cOogr獽Cjfa{1W
133 fqat888x=
134 C]F'=1: r5C&L> Jj"Ep MPPP)bZNxoOBgG=6zfS"r9+8d
135 :L#57ěc{(p(P<E?㳝'ĠL̰QPhnI0M6G=GY@qtPP)b.?1X-Kq6XoOhq:"-Z%DS=ϡF3(;ɀfK|y jW,Ef{gSߏ,J]yK"cq`
136 
137 |aX{o`-L mp'otL3uDNwv'F`_
138 OgV{Έj|+y<wR VpUp&E1(0@|!ÄOy$MS-TJ| w^eCCCEI)ZWJḺ2I:_qkbqiUI#
139 'm<FC 1 SU⼕LC=l4 @صPyyST1`n ]g"+UDLP-KM,!r9##&Lrǡ]w o &=::
140 
141 <H8=q: '_ <qT:.
142 `"wv=ZiK>' 9}YzDZBAfqT9ZJC#*I)KoXriX#݈Њ9L8Pjn膈^ tCCCBo ~eaÄyW~6فP~bԔ0%RbT˼.-Exzi2*Qb͌N8{`CloNp@~’I ^=CUX@"dl*\&q'P't-i'ѧ5A!Ц!)3b%5ΰdMCCCצk18GB F (ǁ1nDBE1`,lUg
143 ր[Ǡ]'Ñ 2s2~ğxkh3_@60U2DZ!n֝_Ud9)+`"h[},*hu0Li9!VswbrARN d9ϡGx HYbd7˱=q8ltT06B)*&M\bQԽM +aIz͹AN@N䵌jL&h*L25QŮ*'G߁IeA =%""ݝosJ
144 
145 |/r/o6B0h#<EwwY8#NMh/PY`lnAuX=<OZ
146 s[5QOaRQsY=3 V0( sW9 kb Uw*cJU
147 87´7OТ+\khvW8O>E
148 l}9]Ǐ3T@좃s m!H *= tv\ʴvc+_ݩIʈ͘a{M~g3;4B`hg8QouK]| B]}ɋZbesɈ vh
149 ^$<88x
150 ^t ={Zy&bD3%&_ֳ<e9Jď}݈E!^MoD&g )/ :8f*u6BI_M0c,~ *[2NP&Q$o*t=aT /-E^ ls{ҸָG޼ _^]$ n%{BȞdl\< !T$١U(ʟɟ "$MI,evI'M@E"F{l<ŀ| 1RyD;88@wkV k#M8#n*r#pl U"⡏1^t]:ZgD,>3=U{7F+zu<"<uu@
151 
152 |_W%ƚ1w$S7bl%e$eSmZ(%8ROC9Mr"Aq 1^Ҝya:p
153 3]CB?s$ES;}`kv):ٔėhCa_QrI2$tPPIZN)]ˢIx?RNPjbéՇM%ӟHW Y9=3C/?!yc_yMW-ؚZL< LQshI2ĜF
154 >9>@¡WEWrj?11wVðu<d+wM9=>QahEƲ)
155 R[N`ܝs%?2t'9TnHdT|NCC7DY8۱O,x>12iv|ҘnX\oPpQ_JWW_eGTl
156 /֡^u z˶;'iBJ u1a
157 Щ]Tר)QhKE{[:=/¹yjdjSBT.t6n][xtkD
158 
159 |t
160 <,Ղ7җ '%3{ G)7[0UXuw >Y
161 N<W$ Oh:tb4zҊ]{EYLٳwoD,y\s.p` B .2Bwmˏ>^W IB- H\XjwH:*I-%\ On\"TBeV.;_Uk'B^z}8DT
162 Z@!>M&c
163 =V?cx}9EUȉ7 B{q|l`Cq21E!3k!ry  bZ7楹;wހV/0[[^%bS2?`')uY+VkHO㿂.QNުApj]?nu $S$Ca YYaoC#jO^ѐ aqѺ'J4~.98)p{pŧޗC疽әlb1S68aq`dTOZ'-0G #^5<J@/N~A̞P吴S7C/;<**L 3R!.L 0&tEptj^VX6m)RdKF.T\&hxi`JʟyCCώ7DN 峏/:A1~aR4iQYSWހY1, *ϢR͠1>[y{DVLo TcWeq;$&ҍ2㰤]@}8ZwC?G~֤M(Xrk%I^'._k]NƼ *c7"༭ѰC(Uk|?-s$]R2{y>A
164 9xA [l~2ՌՋJDVߕ1#3zcphDz8HNgx9"
165 ~O9WT?#rfbg[雽 o6;dmnQ %,e"I~J_KIARoBU  ѭxBs_88(p[q-Ί`X] ׾u#  cKYkKJUIY4L kӠ8_,'jabzA^2mzz jh[o]yݞ@ Dus*iDC!~rh 䍃\eu%M:n̄Xzߜ 'PP cwϊr0e`ǷnD,BW ;e9V Ǐ+:S8>'y- q1nq*3>;
166 3ו '3v(\5jOٝjMZg wlKfCf,tpԮii+=Z_8ڤ`,f- rL߸Sir{sVI
167 
168 |^/rqEB/zgY`HĬm] Bk(O,uVQ"\qpC30ɛkDbi9Rӓ>SPP V@yH} JpOϖGS;',K`8K
169 VRџdO)$$oR_<w(ɉa/R^ԭE#͔w^]0 UX$sfv Md8:ϡ
170 |rJN8BR ׈qDe^v&en[J/=YT98(۲ ΄5wif-^)NGtCe6/<~'Jj(&!Ӈ_ ^̀q>5ǶlU)vEܙ<Ep|rQ?C!p^Pd݉* /EPP-)ɉWK8~l Pzy^,{"cjZÌ> IjDŽdmI/4gt73vCCCD4K*ͫ_zUy%^
171 ("4u-9$]E}A6 70| oLw[⚌k/zwpJ!h<aGX
172 [@Ȓ@]8]"ic.vYә \XBK4bb'^p1[w~S5 Ɗ rX[3S<+Z!die|G`V#Է
173 nPoq'PPg9ft~>3#'U~cg<cyr FzU,! Z PU`*鯆E>tLܟja<U/~L5,VB`.pT8CN%2AV PmX{*=*jβT]5QIՄ@vUqBG&W) `aV\ה!ᠭAPPೡrDL^"{K,6~==hL1xn[㕎w<~L0Kb2BN-2pUhof后9@ҩG3P*طeOOD8O/)pm(0>|F@,dN&Y'`5#9EK988xAxhiakˉ-^܅T1Nc1.ddF>+1+VlK2-c@gI+X„s2ɉث&fԈk<1BrTA]^Lu.呡ܙp۵j 50,[GF32^t?yu(p(p(p /{*δ kfHl}+7flCű:eAZ@au{?IP
174 qtCVE"yDJuoKQ,A8ϷU4D5 .>_Uw(CZmq)@Ԝ}\~zwաEwqD1*=g6M7jSxbR&~!C$08]BF%OfV63`e +jg¼W I֧>U\E:d0V J^-*`gyb[Q4_BJdKR0k P*IILҍKM^=jC:_nޗZf"~d]i9 oAmkd q_i *&T? IxPJ8Uz vefYu3Lxy5%;$qI PGa>АsUdֵiߐ6fCy+[䃧W!ŶJS*оs(p(p($
175 r]-Ѹ) dKƸn|ˏmgDъJs fk,2<b ˬdtNp a[s~UjGXjcs]U~Z.\jLtP:oo^,| `2ias3+V S;KŦVOatRj&ZK+4)]n{f'PPP& y'UCʇ("2,u\(p_|r>JHޤ%o8PM>oO#rITǺ'SaF<fg;
176 ANi]Mv;G<7)pr91&<g:D
177 Uky>;Y^βPPPP!
178 3;sop3=>
179  BK8"|SPPP ڎ畃lK<,cz_",0-=@Ke*;׻ga>9N%jgl!Z"kC)Zq(s,<sᓼqTq?:DP'q(p(p(%QrK\21,Dlt [wJLj;ҙ|8&4rRBtqEl3MVXU<5-p^gHMܠ,sxhj$q
180 >Rl sW"ߗ4N_ޝ#a/+qVqآ0_%0b)(GYJP9!T
181 6P<a %LVGB#܊z{ȳTfI2yӚrVw QT땬h;
182 +x
183 Z
184 p*n\B=T#7iCCCϔ7^RYqRX'\Lٟug<]^—w$i!paD_5@ɒEܩbWVfwapma]8~aQ?ϒs5(*SjK4\,Nĝ#HϢ:H2GıIN29C\.т0N
185 9 "&fk3(I!/-1 m{$ XL ,dw0k6d حac0whtu$>'z29]Z:{]e8ۄ\n{+?I<=֨YZwQt
186 vkK7
187 
188 |1!rpv)8t?Gai-wOcΔ+_+pHt-nN]pö́A„Tuӱ2M~=h?4<dg;FS~
189 4*53=v$wSgZ3NG6
190 9geJ!i[({?3saZ7%<MڢYcInKbk_]qʘj!z(T!H(gNkJȕZ"kn7< X!T7؈5D%rB9qmU]tNa(&M񷯃beم⿴F9<׎:&nn_ĪvK^\7(Cut ӓL-RDŽ
191 Wn(ЋKzfԙz?Pd&l}3PP {Ǡu3_$ꗛax7KUk$(ɵ#8y'Aiuö‡wxML? `\s
192 
193 |h9cر~'>vfRy1~GP43#ʜd
194 Kx1;CV GK$hd_ ϛ܋4q
195 
196 |:9>L.%_$QfI3._]c%iPɤYPAщyLħlv.EƋ'(`E _$ߏ(t=𥲘5f0N#D#nѫ!Í!8Ѵt8A<޸:փ~2ȡgA GlDWǦgէ"9'u3:,c=Q)˓"1  | ;$M\Z/;9}xEv
197 |I(wH~7êl =|lbXvLW1޳p s"pIDsP">@ը}j9v* x%AǟگA98,(`ف1o\wf0gէ"Qwp<md*ŎpF>pIZ4 ;/u3joTj,)R?wvLE _DQ:Oļ7LoqxpL9bf̀
198 9Gk>k̞''$ɪE{DeN<~ U_/e[XX9yĝI==l
199 8+cnGL0_"cҮGVgv۩vߑl/2Y~
200 ˯aA^]; SK7%2]Iꚁ%HpQ܌{)A {cP=P
201 a0k. UN1*yéa$D ar-p͐ۉhƢ?\B60^J q=x'Pˠնl;9AŶpxP ˞9oJ9171xb HHjY\&XV{c<+;st~9 J817BuTխkS+.?U/jTݞKT>*]Jm`,Q0/IIz~d7[[e5+[n$ˬ EVV~&z &rB GhK
202 ;L YH]Nt`i2PPk@<ªT`,p(KW!+ƶ 1,o(VEoK
203 ( fR4㊹  +`좎TkXmuPIΥ]kᓤHJ`q+F8G͛tc'
204 ZL, ̀hz0$c-B1=HRNUk+6Zy<
205 U&;aSc%XU=Ģbى 21kaI~Tey ʕjc͓UqOIIxt?!iQ_"vVBG H
206 U7=aτM>ZwDԔIkrt_gNM(&z{泤TY2tm%QP*z݃49=Tzu#Is&}>Lk98(pC[cG|p5v7z"Ԉrzk@~^W1蚋 _\k4Wy)?vrʙ&QԺf%O`Rg(-I%lG.T"#f%ўW^ uƚC'8(P]m&*m>ktok?8)pCzYHo %XB0U3P -QZ>Eu1F TtL0I$D\S|*A"R>"@*0V<74APΉ;jm-diBd`Ź TSP |w +kBjJ&VSHաHZ׾XF]bz]?SW(m݊\!k+cWWɱ*ϑ^~R]K)V~oՅ+ ,4ɑL*IcWo `@pT,s׾*:[჌q+A;)zEnvZI3w$=M(F
207 ;er+X&I
208 
209 |1-rgx^k]ػ`c(J9صiE?r2cOwUW+Ш!ecp豻p ]S`5A|նfsRb*3,Eϸ5Qb:lgO}*gt&Z)ޜȢ .s{u-Ԇ85.OljCCϗE;5\IVףz^# ~TC<[FE朖FU3Q,]iE$3~RcXO
210 _C88z'UqU7'oޖ2x
211 |E݇gս:EKIJ{KL'Ojb"Zf&ac.r+3=ʜ'4̟&/{Mz6"?\Tׅf )|(/r7ӏK:b/}|8};qLM7lz9T46<4_bAUWGJU[32}rk#3*Vg9U`
212 |cXS%f/Eua/E q~͵w;1D$1.BJ씹"p"mk~6ߢ'~3|ğOצ(7h
213 "y6,yG&69JPnjNܰO퉕LwZ33&bU%ӚW}Č+Nt9Y<M<[kG(6sn3jZ>UTWdª<Q|>w|c
214 cn/K.}<وLJ-w<Qx#&q)ĞSk1pxA+S1yFyu+H; hϨ2{$8xݔzSP -Ǣ-;S?OZ-XY+eafK$%ړ( iGl{[h]}Q ҴBo&"YtK]Oژxm?}3V*r6Eo\9[ؼIsIJろ-xg[|>MM*7{M:bY8srNs[,{_v
215 ֋L]p4knT~)a*h9g(sHw}mr(XQbR}0\pw#s:.JV?KXrS]xL;T:BKPL'1w Bb"=T7R27 6lH#`m;LVFmڳ `*a}چv˪惆 Ey
216 oP4'LUpgoi?ZIo@mF] Z#i`p c#9V]GmOVUܮ]n@;DpJw̍`mM ۗ'P@y TJS9gry=7ۗc.e ]k=/||Y:\k5#Q)Zk*]Oůw=qFLe 센W)46TkL,zt?2 q,#)<9| "y*'^@b:> prUF`Ӻn.~r(׋*5<5P 5Dܬ[$6FpJu/Tz#)…W4רQz>:,aCcrh/ؒMzڪ5]lJX9+;W/}9QU#lyʏsg(][)0/[=iN|6etAaX˷hQ8E0|Ffꦠ8[Vc+5+bB&kC#;O3
217 e
218 y0i0%e}[pFI#tI_Z6QP8
219 ظ Q 779mpm Pp]hwUm:T)|_]?<etmJ*E52|w~
220 |R!rl?r_fifeҫf|`z+rhTʗ]̛dl^]o-An3N}IM*cxٵdP;2g@Wץ iZbg'$NN'Oע[JՒV&Ї8@ՔQ ^]eF}{d1z&חxzo+a˰6[%xUH2BbȖ<t\W+V+-/h:xLqdSSJnݨLII2&E5þ޿/oqf]N)Jud}JW~[SW*!G -"c.# t.DɏYB
221 +?5kv8&$e@`+Ov&c ǕvjhK LD3j뭽:b>dhhNfzWiPH6}@X`*7>BILYQ~5
222 d"EEqB6
223 (CƗV,gqkCB"rJ}I;߮W*̄=Nd_ez ;-s@4Mh_U+1;@*Nnu\#ƙR#SkruEk_&uTB_Ƕ=+1t/џI [(Sb˱iEvM!ux4UpgAp%Y3WUdJuAz|U՞%`Cl9r5Ջ|)Ļ0i:COFóLu1v go"E1;m$/xGU|u[/Ef82~u>X@򏍢YC ӡibe6Ω&)*7göR/g6;&몜\17Za%FZq7x j\] Dtߺd$ZϛZJpA"!!`+:G5lo&ftԑ~FFŶheSuM;Ȅ9#u~t
224 9}ƾۘ&7hlڤ8&i值a7v7ITલ\ MüD_颤Ln*ϱy͊5=f
225 oɉ3ހStBu"7D[ڈ/=lw#tԦfpLrGi˜3&XOL=
226 fe6@*@0l~4
227 MqQP>*i#7?a>rxC|xiXl$WJ%MkәCqrXmMI}PRyrXq}Qܩ, ܱ=2:e23j1|b6 ˏC[]ɇw3 pvOu38zԧv*lpa7,\lu^,|*fu|*JSy0m1D_KnαGi湍>ǭ $שr,Z#/Po|>r"e m53my|ظ^=?ӸѼaPE^g}*X, f^f
228 Shh2Z>Wߝاm!?zwa؝{E/ \ D^`ơJs(,i[cƭ~~O8?J"#8c+AsP>bmo֔ӑQ;ɭrDxqä́g$_4~KT_|} ~TbK
229
230 l_bd]ې詽8oh9Iҥqbx'o|*c}\p>VyNޘHA߸C6rmm̵2O4iymED6 q*bd/E)u-:M81S]nVTX&4b ?RelRt l oF-_3os[J䈱\_Ք'˪jԞ$8p&=-0UHdM :1ڂq[ u)|Se[c%sY"|&I~h?D|U$ .<#ǽ~c6 7ۂ?˧RྖlQZ>K N4g325Sr-i'i x#|U΄M&&U#5x,E6H/xfpdaAG~Ϯ[ƚMJm-2f~gw竭xðF3a}9}Lj??|g 7b--7Z>Wg)H1 "~kG?bjXي_a>~p13Y%6ȬR
231 -.ǵƋ+E\ ??^zq_Ah'k:fNO\?։< /0FD3\C+ W=8Ʋ T8} GFEB| k7cQ dY(p0bտ1%?bs7iDi6'xKW4b3W#6KU0ԎHϹPK2+wCPpnY؂5+`E T{t&}@!^*덏d6kWJ^i5 uoGv~Іm%oILJ %\@^Or(45G0Lʬl$o!F_̈́F}l~+2Ww$f*Ao{@^77Ffo.p
232 nBT=^=wx-.L3":*|kf?ͽu-䯳UMlQ=+ ~FHky}9~BPK8yU{V>Q&
233 SbL;ž}l2S>~+%<C7uTķ7& *D]&@V̦\ ]`{~.Nx^;:^x|zfE]st
234 \_1ni eP4q 4K=wqNbh{}[/>sϾFdH*?8^ t0k:`&Fg"'"6:hh^]n0=[!5 ӓ0I#hyW>k^-q,8f&Ɛ_
235 b-F0C@Y]}9WZMVZOZk%Nc[7߼i`e֭*&t)- K,ݫmRaԐv,Lp ,yxsh2|53^CnVUP]oGz(6ScjFLjH=b z]Һ]+mr]@ش + R }hh.Ѩ obZzۇkRa:I[@(D5Jiv0rTvˑJL-{l4Q# &!ㅀ@0T%& \7o9N\괵p!o**YA!r,fߋոodڨڙk|MDDqƆIŒv4]Dپ|9 0tĭ|GV^}]:7>z?0Ms{i>QL,/jk[ hﴽ,3KXpg`7
236 LIb1УkfK`%'1]_Z#pB8Y<J2dIlд,&X{˩nR>.!G:Fm5ɹi[#RbZM6-R`Hw$q]t^ñ#75ynib&L"<]~iMa6+Yyc69i9}'rLƵQI h1;Tҽ\BgMM8tU֞Wbj! Vkkj >󐰆Ch]Dإ幮]i (^lY(&W}=ip8ŰBVLp4V}jZI| 1v\&U4ruK{7b\A5jIum;\[YI1ЦAn͍sA@&,7%b,7PbkkK+Z,lcaӒB ?=n3th`ܻ!P-&BHE|~uB,@ʴD Ry辜WΣ:bI41#l]np"6Vܷ7QO>&YuxۗC'oVҷZO
237 UNB{>YTW4)]5OnXز W?PE螝*%J7յV~+qj3 !ѵ2X' v2Ęj?*ո*窾|SBg{FpI]IMh/sltcw63+PMoK7iKF+Wi<=wlӅ2ۑM_{1m&|N8oҫfW|:VNscBH[Q=nk9`8ڦEzw؜ye"=cfV:qqd\JE&h/aa@Ȫ̠[¿Z)>L,iZc`;NvbϠq f"blTq1>{^PUlc|9ePLTZ"\Y
238 B\5BX ]mn&EMfo]֢Bu3ͩn=B6ʧО\$SGlܫ;)|*:8+'fnjhAzԸY|]L:RtE[_~=y2ieN䏘'Pij^mS㞾;6Ps<-.w|YB!ykCtL++`V3U Cd'`u\ ԊsKܞlW43>zOQԀ|-F8h)1fQhMԫ{[qm4
239 e 4dre"k-9sYgH(6ڮzqo~rd*=#"l̉`51*65TwB"u^vۢ*$o#Z-(
240 m;Qkkb7U0A}LK8𸢳gTqnL8r{A련>hrOE[ܗcak h_}%1ܰ/gy
241 I}o}D|̪z9j#eyG3x?V5hDܺ PdRoq_ΓNM>ynZNqplwȷLޣH:K?:Vy[[?>
242 퐕ay~UOl;G|Usm:+n-VAV,!$hc}]Sߙ|֮^># 0V8X0f f[e 7vKn ~f!x_f[cPm(a- ?qLb$3s6Z_}sM]74X9dxxnN1cmۯn5gOOFp3C~uyք<v)p߰<T+_xO >wT%;W~܍P/Gg3C{VS
243 x|R纒J薛\>FivG&WB" ↹ {m?iGj\rTd*{PdfXd3~)$o@¾5|Uk/7
244 >Whcv@kܗ'wINAh'DN> ݣ> ,'m%읏{=+ޣBħSEygA@bad}$?#
245 }9ϣN=G<XCoG~]8ۦ}ҥ(;a{V^__(2'iZζ4R^k=g_7|辜^9y?:(neD(w,{j2JbG~8axUשnywکixh*TkBaG녵$0*sl=ճ_Fb:
246 8/
247 ,(M28e7h#ɥo_C
248 x,|r2ʽzc㳂YZ1pX{6†a¼Ȇ8^"Vzb; ]>ׯ&~ápU_dsEu!\c%ҪPPP-)a-:X 8qXdŰZ IlƝ+\|+Pk:&K Ԋ8WGBU pU9H%^dAB?w|4P̌r'j"63'rY) Q
249 !5'~F%v0 |u'Yrr> k6R -U%bx؅"~WM0"UkW*O xpY8FQ76NkO%?h-z qT4~X2,'b; v@
250 pv&wYn, H^9Uqy`j \P}Cf{(p(!r`Ћx}2~j&n)+?h9dmDa8JJqU> ZNz =ju^򗿬bL< m2<tzuL'f: p{#tn3#J 튕CML7<R$d`oґ,'txҜG"'6H{KxUvl?i-a-c&!U~L@Ǭʷ hTL|D]+NPdz⒮-;Ʊ~f˪_uIܡiG踩ML$Nh;K0К΄bIЈP;g+s:yS:8x{
251 9'%iby1Dˊw!V|}eZ'ok!H5QԔrRbψ7;Ώ+v
252 'j>)(j$ !JmD]/QfΉz] s:1ϓ"vt5J W!M5(j+ax%yox(p(xg؉^cLI-즩;/.Ƀ`y Zjvm{fXޏ'K ew)Izux!h\JLv*;ۑJ<t+3o;Lan~m$)՚Í"׿N`vL/89CCC Ús b}&2c/=deKfCH]b.
253 A$v_;_Xlr*stV>
254 6Ye_;Op;zl%7DNMk}&Pr`(-jT.1^ȳSHYLdtڝoȶm[Ĺ7vW72!9j*oCX-˗UëC;u?7rl6澜Z$x}`ճY6yAr-˱W}}yMX4F|ǭ^:c_ 3~{7Ή:$GIN[9Agrj=ϧFv_۝MUṋ$^#jEkSX>6er"?;AsIe}TC3D"M< mF!6 ,IR rhyf5`e Ƌ,kA1N׀բ
255 +y7L$WQǍ⥞OWd k^qEe?y \|T&cz*6JeTIhG޼xoh(lI&gkBbhϠ{VZjn֯DC JSNn 5m sWSy
256 _5!S.54d77ڣ/ -Dz 4[0V ZZ/p릝PtuFvWTƾI>x_NBlKru˲TQ>5I7* DRw#NS-_tY&ū=~D*}MrxKYxY[lAosE`T<>Y܌K*ε-G۬?%l sWNk6*@pCz?2Ϫʤ{ڪ(/xCr"G#geg磩NJ)aOK609aQT?+Eʶˀ.rE\#LT#g[u!@|#{EPy(3OO@plkCUQFFmE^imգrvV;4\;wZ㸎!›^W
257 *-6#DAokۍCPT@bO HËh
258 0*kb }DT~2-;5tݬ +|`HAtmO8W&a9ɛr|Y##<bMe!+g릞k >Q2pf{|oLCyk
259 45ƆS 9L -"Ӝo\tl"JT,OLVgs=K7ۊ## UDK?i'?:WOBC}$oLVo1+qPO~lDuPBoȞ^}JGƱF׮(P:ZC{Z !P-?#2cHպ &QLFЗ0K7Zeɀ+ Q=mSOl M]۹Ɨ*I{ssWս4߇g#6z3 #uӡv?o&
260 \~D]F \;LDU)`oD 7TwXm,?  tK Z4uin,a-n+h9I3/Γ]KK+IbN9?1$:@ 6ZT["c#}:e>oC0l7"[1xa%7q P с+Pm+F/*;8'Bm:;̆k˷:>)x=Ŝ2:E1+AjC2(meu%Z\41tЮ-B9HL3>߇ga8T#5 ^e~/m;x%TdJL9j~">rAŢyߊ؞N"av!۠b~0fyc4fCdO-^q䮥Is}3hq@e6//5#8sAJVb4N7hof(CUeFܭse6}0W($Aks5A2eG㸊 .3B!l7ZKq|
261 ,NګY] rX A#EU`~E[b<S(޵c4 1%QV1nk_XOjG3|s> Ӭ#SHEuf6
262 <D")&
263 ( 1s5iۗ5Țf
264 MM?2v1#WJǴoDM)p&Ao[򴾋ɘ搅 =
265 OŚt3`u5Цy,UUnx(v :ﶇU!l2V}{N
266 nK͹ lۮe.ju #"&;v5UJ̈9~Jc3Qh]urXd܆ CbƬCfVtpLrۦ>U}%gXZW-L椯=U
267 sy_ߟHا(dϐhDOP=4 V{y A4
268 AzbTl*A1r
269  2;9D"g vzgg,aC̐5gTi͉>0{]66SDd&"cre+OqB3> +e^(vttޑ@oK03fT/|ҶzKUm^A~ǘB V (h,$`%cx$VgEN ]C+5ƴ` [::5bvsjUO&wD`+5F}*yf6KJs TϤr?ٲrX݈[#ORa-T]z368V~jx}1ɏ-wOfWs_dnk9DX6Ɔk9ߜdE,& 4UgZwva)Qf%'P&o"jRe5446 Ik :9)>ȥ̺H{>E(DrfXêpog J8^P"ލ B)!
270 .~ f! a31v<6u[{b"QM\5Ä㯴oa4_N+qv_ 5sC6\ B S ub{nrl;1oǩPiRpM:Vc+m7k2 N[~Gޘ-rn*a6>%mZneVdۡ)MDbʬl7#k _s/Lorܧ"n.7,QO{@] :rJ}]$:#Htz_ !mL㨢TT /"zgL9cڶD.ü7nPUd0~FrkDŨkWG81:ptӵ~gfilnȨY@Zu]߇gu} uA`<:P3_Z4еkT7hs04&z
271 9߄}IlR"M301UGpHfۧŰ|a
272 S\pڄnJ
273 "i>u|'0)? .!N/ْNԚiC?y#/KGYX:`qD M^d߄cu)H$hy<, %Pvbiz~ɦg-%jp UOz^BtƟ>$#uCyFז7FyT40}Mf$oq=Fj~??w>|/7ֆ&:ݶܗTxFIb-q¶o!q։YE7ξєc!ג4–)񼝤*y^.eDc? {sl„d[/Y>;Q]K+Il4S>ȱk{*'zr8ͭY[Q*㺼c}6|u:ĵS_u1iQt&h>G + gC.;f+#JQi9{B$bm1 "*ϣmy_ZC2jVdOxV_`J#cu7uY̢=wYqE
274 W oOB~
275 ġ>?Sym|xnb^cLpom҅G;-xƽ\ߊ)p_}9=M%dCK>ΔCq[J;s Z.<?dT|no^9A|' cX?߁flnL^Q^
276 rb_p=ᶾr^{$o'QO7[zq#iβl;3ru3B*ÛP??ǶÝ&oym͓y\PT/';p;R7G, zx{4^g}HJer^dRhZ7.;`6Rq`?/􃝃aͷJ f(FjNV\
277 ߆C$ltϷid֡m2jνG$D[Hhx{t_sZNU!~ph5g2Jr;FJ;d
278 YD2@Crh|)^)mA݄X OJӅo?C +/z bc2*Gu_yB>Ko8TtP?;g0TFZ#2tG}[6"vmktavo q0<HJxI'$8.A佬ێJWfS}fs0jw3qq j=n&KIgQG6ΞW(ߗ<&+|l q1T;J4/?+7H/RNn˿>2B9Q/r?Ǡ>khdgɈ&r} 7_<%\ukeK)!CXy8 $.bB,
279 K?5w*:i\uj.k+YbhLDVp"c-ꔟ!kN, 2nr`"N B KCO_].ѯFAH C뫺jT9JC5ŝ{Ůr|%
280 X]b~ /ݩMp}6;f[7zaR}$bNrrssj%bSQBx )7l S/S>&UE)g.IC'UzܔZ pc7?&Ifd IqծU?H'J;j} d >uШ)6V0s?!(rwDžDmqob#NeM[z7%“2{[6is\4^Uq3ĤW)ib3mA}D׵T(LAG&C% f6t=
281 +Z\cu~8n_}9TukҾ {TƋ{\ E\2}fz`6}þ;ʔYo+r4qL(3VN2Ut_ڂFô8͸D#,D 2^x#B5oZWRx!HVǖ4 ʋ#SqS/S
282 X}PJ5 s1|,~]]d7[ @  ؘW
283 P]sTn1t'^T@RJXFhJ6I&,o{DVzkנcZ׋6늆eS/.tb|6\7`qQ&x1v IG7TVX]ʔ@'$U445;;}-r}] k2%z;ލ0nT1JU&vDHD|Y%ZRg?u!,(˔S`tVLvhw/t
284 gq?#BԨLZ*rh1S:CKuM
285 w[v 슓ÇGtԶb%HOrg^^qM`.E #r]8נ ޗ\$lFnG(O}1F.Ac6|˱s̚K"!2-!i!Wˇ m艀Y('q L}^k@0h$hmrK)[&p&I L$=Rޫ nwKQ`H:ch:4F! Cs +7 "6 n`ILZ3a fnTuX6 G(3{i
286 < AJ>anYȸ~oG6m-s!V; ~_NgRaAjj+)TZni/1q+L7oM & >թwfB~Pa}ҚzWDêʱQlJ1(DF^e:uGvR#~aW2_jf@ȒAX0U d^ʬлʶvjqFE0S!򚞮v垆iˣ*3|dPbOŮjm4~F*U@<UIT2L[IԑU@~#ZU,y
287 9 o
288 nӱ9vYܗ66`ǃ^4F^;t} ׍iϕy3;BW1glz&gOZ;c㴏d]%NUkIJ"u=-:XC>o_z5Ez6&0tvgLVV-a*ցbaqЮc &Z)S$_ b+1Vih[ j]FɪTrl[ogw2pXt3g ־@m \7-n
289 osH1 {
290 GKK&3p\t;o&&GF {庉|q
291 93zwa }Z+6h+Z@?}0,/0vs'N-82ƫFnizI՜wZ6 E
292 .,K>}98qs/HHfC9V/%oB#uܕ-<c.Kjk!|gP6
293 *:~4gL Xt
294 <Bv_2* o2z|ղ9?sy.O`X
295 ,ǖLt2慄#1^
296 /­BGDJkV3woK%Wүv_gD;f8x;֭7{Cm/xΦxaw=JF);Wˢ5@Fxj 0OmG/穨q ɒTĀbUŧ X`EC9h{ԝppLN kz!˯ϣǼ/yZ}Wɏ;}JlhZ ~}U|A6P lO_ߦS;[C+Z~mUέʥν GWG$p<_ t?}tdbGypԊN Wk710:g&S;c2imM'~,d)rzˎnڄ9V[f:KCt{Y_[+b Yq}1U"8>_ՔhL/3)Ooy]zXflam&>9KgP
297 VرE0;󘜖V[ΗpEsdSrqk1~ߪS%Vzxn;>!Q*Y&o8 EIg/w\KWo4X`bJub%OI@;jOem77wqI:r̴Ɋ,Q7³s?6׊;"Y;LdhZX",NbjGdg-흻ly9X镾#Ҟڶx>!'r,
298 ZhkUVtu'x 6sv:EziїЫ^dӨLv%zTo7[CCC뉆ߴXNK2c[BX +D
299 _^Xqd@8YcD;I(&oNvEXk\/o!DRɒrɿGzZqAw@H5((Ip> etbPz,H&:{ xPPP)p?ͻ˱Ckc,ñ~
300 ->vX,
301 " W%>TN\7>b"\-|\Et-Kku.w2.\1=K$eg<
302 T+0%*z>2Ϧ}B󲚦pYj9_L)DG'ymCB8&+-|!LU⨷lqEP'Xt;RCg`Ƕ-K\e8AW ne*[ЕĝHksWf[N-ͲHc@p?+[It6@խ1
303 
304 ,cDm?Sl;\bB'ypxU튓U`dAJ3`Y4𭻽<..E\֤}b*&V .) ik2UuW Q5DhQ$ TF\8{,yS1' kKDSg!og,&o 6g}`xwV㎑m;$4GI0NձS 0\t"'I6ײj'?XqzFV!fUSZIIux9ATͦ|0/OTzi8Eg$<4 |㩸VT/5
305 6Ddfv@Dv5_&[X ty
306 
307 
308 %-ً}k$vo24qVٲ`%f%ĸcԂqc:4ˤR\mA;%p '5XbJU6-bW YUj5!\zs+A՗պ9j:eUDVrFQz"㨳 36TgCC k}9} 6śyo˞˳Q$fܦȔ"H`PyB`']ҷvBrsePU{^olq7wc/J</,޲#ӑalX{YyCq r %0i d UeUYzRM! MRҕFvff'!
309 fnRk@oݒMUe
310 l_>zv<!ZGM){6??=`ܘm6Z`#l¶aݪ/_`>5[_\`8wSPPxаF!f~_^*=M~Ujì '9P7_~a&aajՃC:rk@>n>rt~Se^yQoUVCDL yCqxvvѫV~/ߦ!oZRXsE6юId^{gTyA
311 <4/u(T
312 |6'=}ER}1۝C.yy1ͩ)7Wvwm"/Sp%;p|xM 2Tf0.p<>rx.Rr0<xޚլm=DW4L3MT~GOQo#P::WzÓ:{
313 ?/BoÈ.lI<?4GC;=Kdk4+"Lr=?^:|vVF']j;b 88C瓞zR 3:
314 M}v;z|Ҩ}h9o?_s7r"P8N|ea)Vtmx1iӭ]ӫ9d{9_M; ]|H{ro^|9(5{BR104!{%^ClPAh-
315 "B9uNAڨ iz@9~D dΥsKHē=Z*'+L1ث'LL{m)+k&=I׈U34ʴ,1omts76<2;4}C@;n"xY`3)X@oqZ6M_V JWO4AbQ +!we2ㆋ{ͥMW48%v'^ B/u]e:!Tb~qIw=p>!Xm0Q s=ZAꎀ! QK71&C#7qV+2I׵kG@pzI>ѹS|D"ϦfG&yT%~BY\͹J]e_Mgs6aI 4#㸒N+8G<ϣqoVW/[1 uR5'X5OJg_Q4šÔ'1Ӿi,<}{ͲQ%td15S-4R&>)PN_Lª-j0@ڽB8
316 Penr;-E]pPO€(qiTwi('*aܻhLK{DԟucW#ExFsx6dI]$Y]kOW^g5a\˩S<2+,2ѹ~Ń
317 !PM}h{UBF:Ӛ!V!&̑7gy*nޗ}qX_>>,]pp|>~}PćWZ>2q`B'Zܑd2lfШ/=v|]kcKo@gC;f0-x"&J)Rp
318 W|<JövJ[Gl ڝWNbZl% \+z]UJ~GA8>:BW4-WqẼ8:|!s?mfRZ)Iz3KlMϠGAaj}rM"18|ON fÇ
319 r-65ڀLd1#ǰV~tݚ}+Ps>DnB, o`)0!i!u$[VXe L ܓ P`֖=5J1OLIЪLIX>CЄ1/0!VݛWŌf *Szev0W^,aܙ\:Vд١27pG3OLL{e4w]fk2Vmyx*㮍[m+= j4_c"Ыr$2ygN62VxPVw73%#Zm !F TsQ>bWiyj_씀 lcsUc1JlJ.vDX˨d}slc$ݢW-WP^jz5T5i؝*Bf"4xHa`;qCj;}kNsR/z;(:o0ڥ|
320 *%WowF2l + iЧJA@H֞ ltXG9 eyMZN<˾rM-6uU5Aо6W-!N|9[k|u4} b1ӫ@[ 9;Mc 1k$u]_Mdu~c/9P}ȶ`XIu˧\ut4^^Lo:W~,2S:r0ӨaUps[Aq7aUx\`jVC)pSH
321 1dy?C=6:e?828(*oV*=.Sltk$4$Frk7E;nb˹fJ1mcqTfsO"w $>0s*7;(;1|*ڂ7+CХp
322 nYn^`>vɪ.7P+;3Ub$UL{櫫ݰ4R]pWL(Hhw)*neL2>B
323 mnƏF[.u6dn!@ =$ZDєO7 QxtmJh4 -@4+e+i:%]e濎~Ns}d]LٿMFyGF:xEG/'T!9ڪrƳߦq; h6zQ,YP+7ţUPK3-| 
324 
325 |.v|-ˡ6@S8ƿm_T[%k6x7$)᫁T UFNN\}`Pifm$^988xO
326 |r04K3tZ1nZ@L)٤$PK<zcw[?>;
327 rڬcam6t_F2 R6|
328 ]'vzϪ/T\؝gW!?ijX2L6- M~L!&yޓ k徜[!!Ǽg?ˢ%&|x]fj8YyDsLhrMqt4^"yS H(p(ePcޗsEǫ+jFoCM$6@4$am\ƦLjz G$iPPӤ Ú8[ޗ1Zok?;U]i2,,>(>^e/i-h#;CPd#a'iP೦G/b99PBt65m§u9_cWc=L+ww2iѺ*?u ~(p(SSt_r,OGݝWO[X<P<Nl8Ӎfp8ƾm@Uޅ,{$T'{@*^?2\EV,<pg(tg&|`za_#vr&,\q4&?cJffl>ڝƩ3^ &d=ۚYc̴Ԗ=oPcV;) h4f%:=nmnU*8av(U k"*uLIB'jc/Ğ00.WI߷X>CCנ7l"^o%u‱nz^gaHN
329 ua*!Ê).oo_h1ju=g-V "+^ñw &r"AHWqgQUr)T#ҢڔC;$e ժ^
330 T
331 }'U!QX/2YXrXk̏PPPaX)'`+ب93Wbl);Y=%Z+g2 _2|̝#Sl?<iQQO~Bq??nm̫͍'z9A+&е#vcq20T~֝G<nuʕ/o!B#xZU*&#[逄ϬeF.BޠPPP!h/=6 n]kq} YlL`|7ĒۥpA [0w*a#A06 )^~t2%e|,zD `zݫm2L`d׻mc|'eVX2H
332 mRВ]?w*S@dT;
333 
334 |muƹZ;cqc B,rOf#E˴/g$K6˒ o\%W
335 #^.4@'ٖ`cn١ TjG
336 cYRbjtթ0IyNQMzJgE>$oz5V=;_MPqj*+M?i)]fy}ç5i9t+Ze3u.rUD%i8Iôр_R+\\J3΂WͶ*z&/ dRt$Jl #Uf1aų-sP]鯎/ӽ/_'ZQ`EQGzv>k
337 rޱEƦ1r341=Xcܼ(vSV2.ή,4$3|6dL0Ͳ5Zʻ<fu)OlePq"x?+O\ ?8@ MVSb; ̃I#j]̓lɿ988x%
338 9 { M#aJ?XY2阻w2VT9M!!t1nqJn?O&۪bw}DR</Jy#ެQ=M
339 |/r>}9 hbɛAc0Oibml%y z6N+3^8-Å G2$o(lO/;#z=/Z5o@Cy_wLbCN$ZM*3 cC=ka qJM$kٷX>Iagh>G׼1tR_P -)ѓݗT:tn]&Bbj8<~g^Ĩh-1J4R?`y4nN|FS.y/"TŭCC]3M: q|"W@ncwuRBM!-n>@7en@[yc߾t=!y.Nm~uD?ٗG!iP(pc-2Eh+LFDkW6طCH
340 88@9Ǫ&ffyD=q^ň z^UsH7Y牮Lr;{@
341 |
342 aXc)&o[V JO#_!R0qL,{
343 VOb$`( 6*7%}M.i#mx#Bc]; FnZ4L~~}͊"iP (yj/
344 G˙JRaԕCM\ŽnMd"yj_>0br)Lz.G~'&~D⟦B
345 rBe11cYGh砨;h9 eRJ=)̹#JqڴiSqmpckE%1q%E aF( 6u9D~z&$SfKWE ee ,Y(ùvb Uu}zMWVk2 g% qP,4ԕ37S߇9_%9
346 
347 lhh+Bo`>܅GLO\ 4B'kb!/1)r%&R`i"L03(Sps{h0`^:Ax
348 %0\C{Ol,PDrDБЗۆAMlrTt`썈 pč0 abCZ@!◈a;"WuZ#/~ϝbZnODզAra}PP}(`q}#Je]07&~PW->>Dlz_@}䂸`mGgoKKx9Z"wm"0a>Nh%lcg5
349 VZhnh`c,L\%'H&20ǧv2*3kܵQARH]XuN -P[n6@JN]zhtFp\9F+ `<U%{MD{'CfG=P:-YTY9V?ԯ`|n<y{(p(7DNko
350 aj·1*T7˹KPͽO ũAgg 7dRZE9W[SJƈD)mŭ$WV,-lu$GC8NAmGmSvq$v{ xzML퐃kƃN5IPU= ~7|jq&؈3.NbbIl_% z*C
351 z.ZV'PP}(ӉqX͕1},Qc@%J7OyaCҬXWnJZ L_m"0XnORtPP1J?*yp*xΤ6 &g0ΫrG68Ťy\[PJWC@'> 6֣g`st0$Pխ""oV,ZպīVi7JʂbtT}y(p(<
352 9Lj\gmN(LJzeCI5jלBlW™)ndG$4H^װ{ GU< ϕl{NjMĶpgf}/3 a-J֔ugZLEEv TY{VJN ^1+\G%kw"v nZ@@ش$Vo2%>NDd
353 
354 'nk9"|e^9#vC}ق Gc\JKb֖6YFBӫ)^a
355 Wj4^^?KUpbmU)g|@X$ˏZ̘AU8hք*0t@vtYc6vc> a2:r3h[gܱk\z87%{X{T\ Pkf-B5PLm8P)p[iv$U,Fo/}i*3 go~0!3W:׃<Rz.TՔ?g͚_\6+Ny(3~0;z4d1E @Za ŀJʄH?@O04JGW/aDQɹ =7[Wk5PҫգFIQ:oއEλZAqMk{8;NXaZOQV3pOtO¡n.|Vs_̑Cq#Sn4/ d2dQݞ4(u>F[y؞GCK@,˩ 7V<4OpZ|ޓAu}j J19Uvv;CѸ['=VAGu3<7(/.*euշGohWGZ&o}8׆`YV?x
356 }9PvCZ3'Ѧħ&PU֞=!t7u*l:}~eGK}{I0=w`x =U[J$mj&O\WĦֿ=OE -Vˡ9߉M$Wbʅ-W5vz5w >I_a 2ؓ&Vu'BG+?gO9MlC\7%o Ei2ϥkC(SzP~Y,S&# &7꒸$}ÐԱ&3"K:~ޠ_ĖJi-1<s$3J>OZzgpkD
357 ;0?G
358 rtþk1Ţ_V_G.-@lSQR|~U38d[=/s̍z\(?Nڐ,bR(yS-#L!`icK꛷Mo\V'ڊT/K@}~
359 |xj}9Av'ڍa??oc&d[6V°WM_lb2w?^q@U>'AG38:Û0xA261jn2ﳠ'w} zgѩR-ˉ5ކl̷t<zd$ӿ3¹Q akg;W?IГpuDI@>´F6""Bє/ߐJ~xGX>i-ӱ
360 YkCx=Oρ(mX{}9^;cc|s|H@(8D{hQ26]@0;vuȄZ( r+Lz=Cv\OYA슶qn2zB`A1Ţtz;{롟Q]m_)؉ѴtXDZ@MaMkF2!{ʈ׾{qG'kNbQXPW#'4d\f
361 )+vg im$>
362 <O/gAq?-#8.qMZ'*hm8r0~g?S%5I >!NF/vLOhS* Y$$X<w-ͮ|9ReYbo=kU-1oUfA: veCPV]@f~_BJ*Ve~C<b 5R f~U\h
363 ȼfQ%Ă\L[C y! ܀Ҁkф/S}JO67ub|á [{z
364 
365 ,O>-.}WqpS7 0h|`9T|9#2 HomF˨;4jtv{6jV&pd򝤁KZں?G, G]C/]wo2Pˮ}G&_bHb:o `k ?ӑI0W+&|p$Ekբ® hҫc9'd$qE~T P:h8z4
366 |9}_%+HZί~+xKM-ai%6R-L_&OdF[pqw5Y:"hB"ir|-5 1.2q5n+GĚKz\#ݫ,e`hc8E,Wn 4} 5(glJ.n5$}5lAS̟RlƄ$|IefQq╓VtS+{ Z=r[]k̔BUģO84')ͥūڷs]Q0h<WRXGMc }x[GP5SH1>*iP=*MOH7!djB%&s(xLˉ%}9}*q+'6M':-/[{ )샱5?>Wt1ҲqvHA&EBr+CRst-Qg P+zx y|E/!ss$ Dn($'9;Xg䟦W̙ho^_Jz<7޹Vg38 UFgUCUg̺u fYvsu6`*`e!U:<gnPJ~FfBCI-fgOkPy}9W 0>U mb߆Ot57ACM/WA뛌aֻs_ɀ`׏.m_otJƬOgZʃ
367 c:4'kJH `u3X\!O;(<YdX`n5PbN Dq.lj"Cφ nRtP@>:UCq (QuƲ雉 ;PrE3p4}R{{E04"h>+ӴL>޻Pm(p[ˉX6/v֥[jb`NJgv´ p7)z4ֆ_İ&Dc"ӷn]J*+pfTN OĄR\>d[뎾o/Tc Og<HDpݕ&7B
368 [eKo(\B))Juw:m`$}u"Jh
369 V3_?
370 =@2bsD0BLr(QcQ̜ZMzsSic o@df_fy׭Fxb v3˴g+ɵ( )NiR}>ë+FcO uZknn_PIf=>XF<T'ѪZ @W ҍspZƆ³хIyY 1t'^!3hG8Uu1FLE4t@eFI!f;'ZkӴM] )~(sLỎ/LʼsHևPC2gtd{q~>bJ"9崰IZϬƣ7r=r_SxB2cԩy@Lȕ{VlL F뚩Ƣt68%N>{_RArVT,y#~\HOWH+Rs+m(\Z9 {nDP|R!ꑅ| Jb2V}պYy2XW}Z|8M~ø?u:^iؚ*jکb!kRMENO@&ho_xNϝϹ/_'uhw8`[]Vo#7ҧFг[+
371 =)NI_xO,ogzx w|,$l˹`g@ђXk-Mt7Uy=BjJ@>xO
372 r1%/~%pf``W|@uG 0R/6;`(sǖŒf_'.)
373 6‘&lkkLO_:gFLdCM?!ms[06_{h^CzY3bL"'r}=7ٮ/$
374 _h[t6rtÍ)Zb*N6Lyc܆A'dqTCM.2cM0!>łmxl&NݱF蛕YL9qǓ+SmN6{;iGͲi qY>;!3,87V_ nߗüބ&GkIb6x7ɛ>) ,|J/$
375 ozĭ\8]U@`_=+Ƌ3\gtsyk[V:^y暈+)Ϥܟ)u3ZG'ߗcv七ue|bf?>V3mģ[hۧ/FUO'_kB K{Vq>QT$I Hh3etNLv6=v87@Vy? OC]xwZ/>ϼ/g.3qhT"Hi]>'ܰf&ih}:X˅vz
376 "΍u;% ɁN \xЪuf̞¹9tIhS/)I9?M
377 6PPc[+*_vLmb& 4>]l/-eN4h!YP׃٪K$Bǝ'oA:B!ob3
378 =2!k<C<d-JZ¿;%jTpl'HIC9Gs"+b6+<Y{R{g馧_S'592/H?¯ڪk7K=ÊKX[ExTlR [t*5ڵ>:_XguAGPkm]h" zC ɘ^eh
379 [fۓ h< G&nrpluDojKW**LwFA B3:8r(coļx1S<12%e?f*f;倃&b֤֧/J0 ɤiI+orc %F2 ku d <YY8rIBtQp;`0 V'{Cuaffn6.VP>-yEѿy(p(p(@Xu6H,,{J,\/Ԃ b]P\uثBhaܹ/''fUIU1I#K /@t%=$[Dȫ -1#U\[R#k5#{QؖLwzVաS} б*ix\(V˾d8zͤS7n,3q|ބD}خal\Uٹ?|b]:esvM=%j(u?!C8A 4g9JDQ9)gQpm_K#,,{0 {`g{[
380 nh] Py^V1"F~Xu0q4"'_*7AR2W>Wuy
381 瀞2΋ώ|߲K@J'$<A(3!4'&ٹWhsus*u*XcIwAG2Mΐ*՗2B?>SqbrRk{24v}K89}CCCף}!8ȼCϰm#!]2%-Kِp(i J_8& T^ZOp
382 ~넆{U>hr%(1t
383 D U$ Ik ?PW+OAyhPG_׊*\vt I
384 "0$SߞSntx}c#xǿb@1)/G'HNlALx_iV8VܺIci=8jRU bW8{WhȏX4r?яBrNa-NDD)XX?̆zMqIZ7G[G?424%:I U9Ziq$=
385 F7Va
386 
387 
388 *n,{buz<ol6kιcX^}vaO[nMObpw<qP03֟Qc Tߧ
389 ۲Ɋ>{]CSP[UyxY&bˉ
390 DW|^>Z֧x}v9GmdݚS }s_ya 73}vJg_49 *7)p_M^uxjP!oBY%ʴCJGi0f`bbyf[ QFyp$ }~etؕ5w6ݗggmDm&q8/>iGae^]+ߩzD/j*6ZߦSH[Fѷ}*IQN9[3* - g!onzڊ'owvLhsxXrE$M4u0hQ޿J7I;mj-(oy Z߸2NLrhK WlՂt}Yٝ>Xf菿o_jvadks{ƞ#zh{0B7!ۚ;{+q
391 |PS Ց7߰]"nIXɞۿߗj7C[FZ4L3#|n'Pz휏K͟ع}
392 
393 8CHeA
394 cI'n @g;1,rO Wz Q@x~v _o?!:$`&c8 Z/>JYBdi~ (
395 ޳oʺ8l:#;Xkmȧ+;?_]so/`T
396 T!!#S`pxIZI蕏)tQ@H 8k TeNs|2rpXJ&liV"ۑm$=Cp:kmQGF5Bxν246ZG\~I]i1ҫrB~!G+󲁃 +cLZ^9jEGP:>-
397 p0jgOlQ,uiʸk8dG)T,X,ǫ5z岀]5]52Et!/;fh G7KAJCnP-Y8r8Vnh,"DuDype.wc8Oe{'l|GuSFkȨؚ|l[92 !<ȻWrzm}zh‹wnʠf@~~/'ؚ*wϚ#&+`DV%la`l'5HG|(q)χ%q'1\~6>}u--JyTqlZr~-Aӷvg_cXe*Dd > J&Զ pe+L*R`GףfO7kRԅ ؃ͽDK{ϤhY94[UzJ5*;L1+L0i֐"zh%)
398 &^ɏ`ʏ⹽";Ni'g
399 .%ǩKi 57"j]g~]_Wwu#V ˹[,,A(XP 4cFPs!R1S{>}Eկ#þޗ)LGuW4ѺV2- W&tR>PήJR4.w<2?A_Ʌ<ó&Q9-)QG*?J^QtxN2luvU+~NVD껝b0U%:;,6yVN?k"jZu4$dˣ\w1Wsg\8~]+I7O֨wC*N(E".!tʔIu\Q~PRඖֿ34a[ƚ߽n%bCMp<Z_v2q4C0_רo)12ܫL>ՊЫdN~$$V\ Z߭dTP
400 f~dUHW|u?;[mHaEhF+'2LRpFCV#:J8l0w4L-Z(4OsT:W!r?6)75$$™MҶLq^Syא I?vKcR{hNF"g$'}93O W }['TUgP&(:w,Wc xLRRJ{
401 W=e 2-{BϞ
402 ]`*SN6KΚ aѰ Bu˟LE$: RS]W)~F}
403 4ϼ&Xr&UjlPmԋM3҆YRm߷kn=mZR^nGzޖGB
404 |
405 \exukn=Xs^]+!,f|@Z oTTf F?}0g~Cz Ϧo&7Ug6vUmׅ eύ%B!˔GӲmX?FX&oԄ(3 ?X' êg Ӯw-FMl1rMh]I ?}7mJO&ߍ%6'cmPE3[X64w!WYx].<yu((pCع !`1ۥ~/,mt|ǎ բ|$PuEﭟPUǫSa 2XmMM8ȵW Yԭ*N+%#b;~V O `|#ň@*wGI'8v\G
406 p$(giAJ WГ0CK(3V1H>fFjSͩ)e'§1} >}q,>>'PS}_lX4>fSty
407 ??n1/6rbq"K%rǰؕVD jev½ZAn+hpSK#'|bx%&>?j߯p_'qCC8KY,L§0Sr=NM~؅rtdJKcE ^z&BL~ɞdLmWHIОS[bl#]z-zr=|KSy }Cɰ|CC"'N$xW_`LP@j^g &c!p?|6)RNAel5E1;IW3|4Ԡ(VNbD?9"W.:pB}<&{V96I"0IU'Ϯ?0o@賣APE(a-lӧis`* S8T㔛<)~hEqLM&GuA%d^lrQE&ÉF[/;?_ycQ5VaޏiP k1\Qsħi`y{\_0-xu<j$oε$ox|9WN̔(O"m";[FD77u3jI׋d-%#Pu7_@}"xL˱11}")m*u0Ć] 8b!=2eE/ g%eNmUqG3nNˡki.>}NϦ;-bU~*XH{1ve&b<(%9iFle6%]mT}Wp+&C& g?*(84zuz#q!7=̧[]o;ϡSA-qcha}}ByLoGrx9Ύ8O<:W cFȋtʝ"z^GާV#]8"ek9>'9(pC)˾7aFV;r)5V:6|e(˜[9qim;V$~/Ƚ֋uJ숫v~y`v"|G2gy0v_AQL;Rr6.Qzbi/R/DPX-~_B;;/EG V ӌ8yNё8鯋){bX>oWVͪrJV"<!S[?KoCZmS,ΊU)'&jYw)q[>T8<2a@w[,…1e/i2dp;{΁jv<i$~`.UDcn R_,r;Zţ04!|N)`njaRV*"ʀêxtxV1Dξ[[?S^a:(X'Q[_(zУ-֏\/Dp|$^]#TF0ͩ=PI,Pκ(#*`bO }xFϓ888V
408 ܈Wji/!dړ(J4L3aYI6pI~α`Wk֖2x"-"'6]} gGm(P:U^>2*7GtEa2]:K
409 $iKO#Hnbr2k<AŻ_s|*xIV6Z?=(
410 -<Len/Q\[*IYhW1J,QKÇ.6["M5B:b %*E|VA"WRM#EeX˱?Ps@`il2)8Uo.he$lVΫCCC;oc,3 ;XĔ
411 c,WKx-W_&x+Q"2e1KnU889^vW_ =I
412 @b#V4 CuV3q yi3!XQDWvX>4178V}
413 0elǘ\JB'!ae}/ð*O{U6\j"KvC281׽;"5D2ԩwx+T4L_ ]Go!4z&7F
414 1Eɇ }_:88xnZ;
415 hlVٱ F$rdBk1eWn-Km)GI x6u9U =2bA&J0ŚUk k BG:6F<5Vy`╷Gx t
416 2ǖX+UYotLe؆1:BuLS *Fk2Fȇ~
417 
418 
419 <Nޝa1}B gQ^ĘuX nqvZ]#u.4\%9Xb6H0zyId\s'p<^I‡Qȩh,l~ZG7\ww ElEjTߑɸ0) 6+(ȔJgu\aN+
420 ddO*_d\-'u}zuה;ѽ^AnƩPrx(#GM$;a[D< |%ʴ9T1&ʧ>걱T!yӫ':C#Fԧ6z
421 
422 
423 |81 I\b"ׇp&K"#{ vD$ܠYۦ'S;&6@<|AI*eē=JZN 4c 'ƞM77bK?m?(Pq|lp
424 p%Tc1\bUŧeO~@žUNH!j= ÉբT%^Ϡթr(p(p(<
425 KHd 2'Mp?v.<'պ'͓?#ƬKXQ!NsC6w'!<[8jo8>_GZɛxY{M򓟤^֦7H<Us'y]J8<ҮH$HNm|w51e"-B A C0#E* LOY4AWh94CC)hg%2imM'x2Ȥn& [>Gk^s
426 m͒:Y*C!*DG=%؆n!"DgUGT"=r
427 
428 
429 Y);ma@18Yq m oڡBĒWz 7GU&W3,Px$p"Uz czS B9`vz[Nks4&i0c>z>-JAQbSWJU>88xm
430 <x_^8ʌ#'tfzV8s4g ]__{ї[SbBt׿2/J0i'0PJ0qhmXBI\G̘)?Q <] ,z%znG;#YRĞ8ZkNo`D ⎿`zUXhʈ8ТTUM\aE ^ p]2c򔆅;)3
431 |$X' V+O60L
432 =zD=mpDgI5o%oOPPP) S2nޗqsLsf1|pKh<xb1Ler`ed?XW APYW-uj|LlIX/)Lb %HPȗ&֜=_Eˮu!"lHYW%*
433 !Efb988xm
434 9\YIJŐ1N Q2:ebbPb?jҶOtK~ZʎQ ]7]#@ܿw7-PX@׶|MȤo c1DsWf[EXêKq0 
435 \G%_?YDmGgV\'q(p(p(XNƆam?*~W:5e&VH~i[/U|vidLPʩ 21Jabĩm'%&6 Jm^av,u޿%˱C@# 4O!6ahǮKBGWteWvhlbӋIU!uf!$C^vbhCwg5l<Ę.Sa+đ$$(Qf4FXW&o
436 XUOsWm{X V%<8/MPV+);i' BUBIu~Qrd@H00SHв  )k_Jŵ :U q@H֣&A~no{q
437 
438 
439 ,zVٽ:X")pT[xe`v
440 ,Q2 {i%-ٸ1¥cݲ gkEP8qVD ݟkz,aH-sPZ7( 7~h0gJDWL#j~E1lfCj*ΤPPP>r1e,{82& |=aحI`lJ_$fupV&ty#</[~\k?$
441 ˱3*!LX^ƻ'4f{Cw3枼q@_'L&V\hLر1J,tܑ7o!"pX í>>ԯgT98j)Ό0sUe&0XUux=يG\b4NK?Ú4X\~Ag
442 mlzUhkhGTci`[x>§CCO>rf\''lzٟ*-Knc7$U}ܩM8_LvQCbzwSPPSa퓺/ǎHφ7p`X8O}Zo`ߐ7)gSpH2ŗ,ggM7xOzEv Lf^PPkx_NƽڭΎ>C4x[ސv_zvNrv-m?\<@Di(^T}ŧib3tG~8AZN>rވۼIEя~? {xry&ŋK_qKi!s; Chș]>K2
443 Z fGFm>#8[d;P}_ HorصE}أK+?.4'iɧ>vVx9/
444 SZf8Ok:_`: r+JӀ y/U%Lh~^PP -YH`ܓN&2cq^>Ks}ѓqOClE0w€AL`LT5mȃXedvpԄwJՐ@`bvx3QDuoo!#Z}u.sDcұ8s5s_$ޗm7^iŸ9bڙwuoBCce7C\r`SVfj#_)+7m rj)2IA}L?ˬJm؆!.Y$Pci8,}@2 Vp'Im)G m5wC(U rN8D8o;MV[g)p(p(p(p8 eZ0RXm|e\lwVB)6Ob->fDhlvSr}Hz$eup E)3T|ކ| oJ*Mu='ТHa'HE؞=#@ȠĔcqZJn~=y{(p(R n=bl}3Om JS"{VuLpgNBâE\S[8ɞ~IuVAWx_.ge˯<4FU\HPДH?=p]51X 2/Fg7X:ᦰC<88!r&|bIj$>lvJliˮOE0A~_@8Qx5)+%.P+-%+L#A4e(Ģd X t=BDݡ۠*=>1yU" D(JkV鯝
445 \Gbk\r|IC~=?88!rVF<pe+%ЁCd>
446 x4~G)1gwS?\N'mi'4]F7{.p9xI#2W8(0ɩnѯO?]zhְa!au2߆̧G-UMNWN"r6=e2Ꮒu%S wU HMaB衈>BUr;sP@LYx+d2L\vpDWł<)$ 3"GsnUG*`q\eP:E#QFZ#W< OistÚGgYթ-r?zh[GuPPP!
447 <x_NΖ&}r.q8ל)'eڭ)QPTx-;qt~Uɮ|?LlY HO@@CFGIքn]94x@: i0d:b%˿tZumLXq cv%CcXXy㮭b׎W=" nR`|ȰK {;C_|8 S/dwn?A@KE ч
448 Z!D1qbA_ɭtZ442I;gLK곦A/r/'F1CBi }6O'N<S[&o.nĽJބ#ycKlB>>1bi|\  ?g +̡W/>9߬feD /rgM Ri5ǡCn&[->)ӂ<`zs xԮyD;|Y:|8֠O3G>gZaFc&A>~<{A
449 <hXG`5}1\VL|@;<^Yjў 4ok@vt:'6m C̚xk0Ǡڄz|b.ѓ1Hϫ/uKQ tNi}tViNV}uvwX$@h%Y^q. pqf-WWѕ\N
450 bV] YfRdOQ§yNk= >wկ~G{AԗJE a 7kF(+CO[7;iKWS#,.Ƶޗpb?لGg<B!_V  0qzK=|bpV2z!8?A
451 pcƘ!尧%8V5kn(ԖDs3ܠc~?L C3I/)[{ō-HބvD?dgt!!?/u'ҝGkݗcȞ}gT"!M
452 e/g–OVubֿ]^=n{jg_Ն*ÿdh pZ~ۏiS -'/3N|[LO}T6 *runc;YU%R> ՄV`Sp<"vS :iSbb崦j+~,V陼^Q͛`%$o@a,wһ.h YuE(0Fk]H^"šz#c! 4N5aZhO{!)^Ca-e~'6 d@"ht |_,BqomeQʼn11F;u|oQ^xeXXFr+I^_vRXb &ka2kNC?eR tьlC0*EEe[5 3>~TX0o "QSdFhWW\N+o5X 5H1h'E<[P-Xu8Ȭ(`^WU?`.+z[x*^"@GTa0(bZJޢ'ce77!(l(PK0G+Z_m/Qb*%f*,,=;FnUzC_:CbnzK&E,]DYT d @ mokeQL+p)p9Z}9&MUfϾ RY G]dSڢ@]niޛǾʯQ t@/z[I8ɫx(_s}P6`&ze^eH[TdWX8kiC/XNU"^DZ|Koխ ÇzQo2hZ6mtft.Qw61“0k ]HRV}N+akZAs\05С͢"?5'ɦ+3YZCdBE(IJ+WEPjsêY9<7D B0y0->F"q7-M2È+锾}`MℇTy-$
453 ED-MKpgsp(J8m>;jbv )G0+ku P /Xa^%Dzؒ&!6ݢF|fO ǶW!8[!jޫ_ E"#y<1ZuTkteze\jMe(gI}=ƅVa8$jM>*Q= f.?~օϹL[]R cZNc߇a5#$DN'ry^|TؕbvWqUv>a$ef\Uȉ@ᾙyO$TkkjpB*_䨫 mWLɧXRʀƪ J h_:iP6dFeC2+xmt,ʯi"cˬ81}A~PeN,5"fHJC0Kh2lC 6|l\JllQf˒^VZgԒܷG>}JUR2~d 2"fsÿ/KU#m߯"i<76~KçW'7.崖}7 \L&LS8h$Ywڲ&Uo)44ku6,Q2g@}8ٗ9#rշ zpckfnańvby:Ja<a9trf5!%H2ż!'_̛ $I|"B6aX53j!,BEbUV]rG&_&+U nňJ]6M-݌x,!' RE * CC 7C+Xc|T5
454 &j)SJ*'2O9!HLY"8:R% gKhVBr*4,w2yjMÚߝZ'fؓ7? ,gܳ3"f_1(o ܵ?r }I $%W?Ɋ(Uw.Ϲf^U3
455 oE0<̎oߎSG؞ngE`+*0ó61Nڋcs(wci&,^G-C!f)PޡN[eί#uM("`_޻FӌYff" kL9c.mOrѮ4W=BUf& uZdX呗.?sM/QӕkK瘺ďpxFTf48KC5M,(D궵 BcXyPr -^ 'ӎ]wz\ = 2o/_n]anueN=+Qi#(~w~ˠqpȃR6%hɬG9a-$W2ܢp
456 cow gq\x \o\&Xf ?15qj(Ql9\OMb ;ӿUf egˈjju7{3ݽ`l*,n؄_:[$Uzh{C~bWZ_t)BlSŞGt.wԭi$)ȘЖ_BGr ?DBn`7RnB°a _gY ~<̃;rݽ3M0i:j"0Ҷ7I[j _ܜUdܬ:])_ ~+;(߸K) ߪ=0m<Uk}~^vkqZw² EXBRu`f=s-=[@Y cc1w
457 =4iأ-)hH\DD27APv.0C͌~Rrq;5zuOh~ȇգ%_x,lBGLbʉ-QYgC0:=߆޸Z>=/X EYoCυLrJqe.-Kϑ`!U+$ՄFBUe^ n!-2޷rHƔoJr᩟Jk=hnĜDs\ojBa,m-QFVEw_tsH|O.5#w"@GˆI d#m -PF2^0#avL]&;A֯Z_&֖c}8אW-$~99]Ucfnwa.'fwD`69s\0MlMyGJYِKv`pa,4U|1Us/#`o pRMKMn[^Tx=eu3spZXy|dL^'X ºK8B>~!!uiI4[M]|*S]&N'm0@$E7hJ}b`1zfPR^I2~)7k/ofnر1Yw+wqav:`yѻOa--Xw 8wi~˗UMBDP Jp>HG\6)mGgɷ/ ppCR͛09N)T /%Ln +#u#I~>Fߋa[,Tv.61!R_QKKcr; 7kgПȖ\fr5e\gj`2xj2pS=ݕy<ѭ{r̈́mDt-_ '*^3AhZyƎȻ直|M]>*!PέMGC"1L|J0қw-QY"{F8e +~uz!l~i\~T#nȵNt>:5MO]o\.3ZF­'gHK2ˢܴ,^fJm9#k[nP«ΖKzZk9ktP#HѰ[ BZZywdmHkmG%kpWrmG3[ѓW@h{Oư Dei@wĹ;t 7WE55R΂F]{Zb؜/62cgnI-_sfFSww?^+>^ _., O91^khwRN&6幖hbYFL@6άLx{p]Uү`yi[&!Y&[;6XlndɥmVn ;߰3H`8lHs~ kk 'Q9 H$zVM+׋픁!:fE0?s.n:IDAT$t@9 &F&QXb(Ҟ@+GYrbu4)0nfljn}q9ƭW篹8zlUZuMvʢo6¬@lDBHkTH|[LxHA)e#@H+ PJ3c{Qٻj*o|g+=/䵕:]q gq䥮$6iĈ&apkv/fWkXG
458 2!G߆ 9$^oQIOz1m+?̳ -=G$&&X&}+1/2:
459 W##km)jЭa9nY*#S9vߎ:zC߆5&$th$/{~O qvBiw&[Mx^g>Wa5̲ ȶw;(c<꽩Az=D}tIE[+kQW R("W"(aͻ٠`g;B=[\[5)ƨo[;Kj[~7 |5%nCB\QkinN,5_mHur~0u|U|̎dY*+ @B=`7 5oq7fUxHs~u w<l~ ºϲy3%mCv2cv,"$*mtUf/%
460 پPϜdcD$)SY@9.Z텘0<NVY͢ ?&b~bn0|d?W4n|I {EHORԗEUtER?m!oP!iA+"66ϭ^_o<mQb_ ӼZnv",Q*԰# |(L[v aAsK;;W/ϸ:/ L|u۲ ayH~#lT4O\ƌʣr[$[xk_c윅&'J7wB05 -"QUNk=qǖbjh)_BHIym|iH QЛS/fx[#1>`\^FH8bm\-2$Y!~F63!skkc+Cҁ$E[t>
461 ;xɞV uoYvGx|}H/w<mQo}$Am+jKUU?iz"% B}5$9
462 fw_Q-Ir^4]e5مkwi,A)qin Yy i\ VpeDe?ÀSO^D>I"|"
463 2m?K9a_͞|}E[x eHQ^&zu]TkIZU;7S 8")UMl/-*OUs'^;%q9z̈́6b){7 um[B1,z D]+wz[̠؃[h< 01»5ek{989[zFț 9=6~Kh:xW~bvz}0;%%6'D/W>ϙJGMSGU>[W>OoO.S[Zj%Ts vD27g>Rlڴ 7%jˆA=ʕ58c]m[ $A
464 '5yq,#]D&BG  j3[j{2b@HBH:BF9]O!ѾdS!QVlZ#dgGgb|:qd+C2ac5ц},)QZR|j~Y?ʰvi:<
465 uLco&Q+Uz[ 5W.3%k."ph{/\qH6ְ˔^l@㿮[-֋GX*MNjUkfOli.%L$w+P'ˠDPy"<]!%u( v7N }Â%Ãn'
466 &`G] >?)wDZep$s<[he~TSNctC6\
467 WY]dLXT sO7Up~4N{EHYVVa3M[  tm2n,)GyGȏq"MXs'范scOnUY-4wM̺;I@᡽Т=\s=ZV3ò'VRyNy܍Kd~ϰtU/pQqxC.g0~n;2ї˲+:mWJ]4Z]nw!c1$yl׃GsO,N'+7IK[eqݨ "+xZ|`N*h{%4mYk5b}~I eD3xdqa`KLȓ93a6fj0s$ kpԫ,?-&CT}`P0s微C1MBXGw I{UCh*"x}x8䲻#ujwxn`sapW(v4̡;dy?CL,Y-qA$۵`ՋᨼhXKP.TYR;{}2a&c2QOu׵a%\uQ3!|3, n_ܰFh8s:X(, p s]L*|]}UӱFynEH ާs8I&=r:q$8[ 3TF1iZ<#[al^'1Fp}Ltdnam!Ҽ[>\EEpՋîQ $> Lu}8HaD>jUx̻ #i4 l¨r뗞wu17<j&˂ȣ5i>1U yg*w&jᨕ? G|1M7.g5eTZUg7nxdW׬<OY"1M_S g+yN>j6iw4iWL )cT=+ -+*0 _q͟w7) TMz]su$ClY$Xk}RiT+0P+*c'9FMG۔aA`uGm"u8w<iL4侨ڒd&K?/Lh[or}Z뽺Xwu#w f1kywtQvzNJFxjS"BK_G.Ssb|tMus'ؼ&N#vå#HzK
468 燮`6Q"@\J[,cQą!b2Ip?yz؜Z%Bϵ8_ϫfYy 6C|2+7emECM #ln')@uj ȿ[K\s`=n@/6m *js!Έ)y-Q^Hv;L
469 ôgC2R5 pG[y|lyTFr3HLج+HDI@&IWª!i.Z_QP yȸ`
470 Dp~[yލH}-h.˜\G#d'AI7}~$$2o YqqWHnxil¾q9MXݸ608N>F
471 N= *"{9B)#_z߹^5Ś/M7 &O0b?)dnvJ7&%LK[ Ƹo<b4قښ%* g+7.Z]<Dd40\8Փwe.twb0WjQb,%[~i DUA)>#2ainwñ,-Gsmp gXrZ(T[9ffͿW_KH0]3l'ѫY\1°q ZދM̻!G̢'5^֭;A+c
472 kfjkra G'<&[UeY_r}X[Lݕn\[|:r-)߳aP I\k+0*gM2BbT}H)2F.3T$kF%)ndBmg1~讗Bp0ڸ4 >9WG>90;ed=[ Pt."ʑ7%7q41~V cߎ}U B$1[Y%M*YUnv]/=)v2 ɌQZ of^GmՎ9[͠S5Yjl>o/ JƦiIntk@ h_޷i֗2θǻ*S<1k65]m@'d;,Lij| 4¦!<;RSo)# UhO%1AuW,h o\ciX3:eAxoFaFxq?PB'TDsPmr5Lp=sUF|e IʺNð;QrC<genxE^Pk}`.z47VyT-$
473 F4
474 *)A eߏ¬LFւX!|j!ge*VQO8Lf=Tyf"-vY/Rv;9otlשV *~va+5o͏QP^)V(vS|ǵA5lv)qd
475 "MbBEJQ+o̻z?aN)_aEA0]`-U!;S<sD:}m8+JJޅG5Yxor4Cq5#+rȝRvk+=t9"0LjBKR3T/a *kaPΒBIT.SCUu*o_ٗ\4ْWӌi<CK&vM&
476 o2\!](_؍M
477 f7Ap+6 d~T.caqknDËSTS]s_V HB}.633Ga0.>fS1JGH9>Bk KnѕJ4h|M#wPBM`¼zx5AmۯE9GY`hUfq9)D KXgqb+li6vV/Fb kLQCfoA!񑱭]
478 l}My!^CB\$,Kӆ civas;xͺnn4aުQ߰Ib!)< \>o7C]j񺒬FPR\sUp]Gi6"o)zX4фS͆.1p6 ܪo?=B820vgF"M@8?B!ռ! 5pV=2<ӱv FzYm#l~a+̻}j^BhY2
479 (YKSwfeH{-@l8!F?Nz3{qP5)!V=>  o׊1K 2#U9mSe<<=9B8}-kTݴ/ho ΧetJ{G.w[=>0sH4q2 *9lZ6 ӭƪY{_2?kEnъ?<INۑ_d!UA6-~m$F\6Mo 0vWO _I۔*ElƦcjѳ]x/^-S_E*n>N2wCu M !``pS엘w~uj7j?C\;io5Cm8
480 {u'Z;ФkWF[l̛K![Ts-Ū A5]j{A'aتvOcAso];tP_wn)vme켴rM#7V[c \턮k.V
481 ~6<שUdCspKuW~94Pu{n`R
482 g Tبx`u/
483 3J}5Ka5ӕ>$'~M
484 !ڲ4^,nilM#.?_օe>T]%+|2IE WtF;PY>ob8N5 qk`im;lXzC^\LiⱻXU6[3qm;N ϐWXB?⿮S
485 (9\qit;lGAI(\Wvë%1#1aǡޑțcsi=jnr.P2xbRcDy1ѩߛ3Ez^
486 .6 ,qd<7hnBr4oRGfw
487 Tyrԣ$i\9,?qje#d,_q}Q܀mmtO/f^KIi qsbݱF8%5 fa_뻺.Q+l.[ӷ;x9ZW<߉NShC索ʛ4^%x;7nwX!b57He"{ot,@Fw\W"1xFp}ፔe]ϤѰͽ%+76*$f(B[v;D­p֞V~ S^z~r͝ Ғ7_xU3R/! whv^x&rb-1FK$12RC͉ȱ|G{ԉGa9
488 V8jIHK M{o'HÆX[ Q6o=7v[~5|{ə5~Ri!J5w^ۺi:dTfn?ތŪe/="1#{3m+V|7w\g<t ib*o}W՜ޑy%5JA/&{HbpnM+74qozfIQnﮌsE݈V`G۷3\7^,\ɦb{@=FtnXI>(#A~廪FʈmbRK$6g2k~W'ʆ`=-ڄD⡁Rf3d=/}8J(<VwG$ͷ:`8n ʿN/wny[EP4$i ]#fYH#^}'k37DB8:_-~,LBk<&{[nc͝/LejH}Co<*60Tn= {AFЖۘ߸*x4S $ `kBn3E5ެI|^w_ e;, z %3+83A]ӭvnf,t-jRZdѹ750u'ݞ#0:uxO1#WC4[J=^;0$x5RW>Ak ^$8*ji7FM^|h wx wA`k*?oC2|s$ڛ2wL*12d!"C5_CF䗞wHw&/&k .^{ؤ6w1&%,8{( Lcii1|nÆU}aQmS7t1T!ݵXץ^]v
489 v h/$ټa L3~WĄ ApHl%_\l/c_/Q搌Z/m6N%-Ě87Au1W8op;qM:Wjj#;B~o0Iã`\_yWH#%٫|4\)V-9|RZ:>SLEeJ= 쮿U`qq<o*~& cN"u$ґUv7`xj64ؕ nEF5Q[mm]NJ,To))M7ƕmMh)o%p 2i'7 ~.PH ^II?@K _;^r$OqgYĿ,yΒg@ `k棟;㨐ru!VFmԹ%NeGC)}PrBeϦWH~kVC(<7x7| $sޟƃȦ|ȌJ$Is<8;VOuAIJidtn=!wD6i[ڜ
490 Vb~as.3.ZV{*-_B{#+~? |$x]4Y:5[S8 &yA<=p\nzC+h"j/u8pe0uAcg$WMv/y |ⲴuErЏM Gn)eƻ^qU)٘K4{|ⶹ^"XT-g}7mN~>HJu/Ͼ)tW}ݵP}M2FCVH^LI3ap/{f j[Y2Fg\gQRs9" ~G籽|y^_,DSmC5
491 oo+r2tWM`$[ ە58'-d+L+"8^M? |$${9tz4dSٲ{P${ŽH׵5]QJyzw^y~M({K0x[5WŌ™c]';[_8;`C{FL0:7yU-UGoOHV٣a/׷G?E_rfA`g#nz eB{6uր) b=ikf8>/B/4Tp }%Sk|Q`,V2B|UV|^G1[L6bSVDj~Ǣz$kgk=cgb=jlnGM/obDzqA7֭
492 y.L4Nz!_ȏ>Qxr8f{ [[Id`#T]Ct37el?;c[pmyfwrWNG&5ľs0ۓBm0@oMͅUl؏T#Hm(Hr bī7dNXee&q.[GB04RNfrVF;:˿4_
493 Q|$wJpJφfg;wgeZS{f92q:k o9U婝!+gN" ~@[ıىʲdNBf"1'P&(wǑ n/o$oCIώ#Z9f8H)tVBʱ3ojp9%{:A*Az'|E~>Hg4=^xf2Xd<t&&+ !VXE՜M>et<&dU!F* B<Q MZ?=x0<MTIⅡBR=/2
494 (Izv ͆X?1hFݯnň^Nq՜qOb b2Vg{J^]kQW,"x<?M\TӫXyp~5LPa07yZrCsmy~~$/745}Bl Rk3=r)dʈd}ڞ|fjSSe L?#YA+/aw;$NO'QC{^[IFOPY4^;<Bdw=Ͷ<cR5 !ɭʲ!=B&d~tԾ.n~FG  &־^N0_c?c+%GYXR0FUfW[#bXTك ^0 A3x1e&K5;vp$by!ƫw,;]ǣ?3{(2"l||g"=(O&a²u̥OPDs[=mSvK ݅.,~^G>xr^]ރE *21gk2UQC2${9prxaTURìg">[9jX &2m=Ydn{]FWjDqrcZGimϞi(M,uWg"FLK?/prH;#J%W!-OG t q9΂qZ"IC_w,W&v ܺh:ٺFݧa~%KYD]__}>=.8fm15#t߀*1K"=63jNTxp4;RU3\wm{V~װ;?'G?J_&.SSm̔gP+Xnm=3[lL$lc͚t ,^"0q߫#dm f
495 c "d;0<c1s0^CY xho#չ"<nJ4\^mIH#.WC^v_.X߹n>g;)KUVoS%:k?cN/[%wcEHol֡EcK'F.{t敭oI]kʎfy:'1E {Qf`u`HO
496 r\֯W&8D؞QEݚ6X\4K5r4 זrJSpy6 |$??
497 4}P$dYv]zm0G 3'].qӣx'tMدKOoV~՜w+2^>W $( aMQbEtr3šZy7:@&OwD|EU.Q Ncϫ`PPGɶZ'I|ײCc=a+Ș~V|@}EoxF')X!Uޱ@FnG {9bfx*DgVV~VOkV }6^LH8}@!
498 FN'jqfSB!b<(1hR6C0u({@InrʈٓC!Kt%~}f4<`}5u<U /|Gz)Nkg^:FLXaHK(G!>N)<<M8ӐW~9Gg D yJ7}hSw_z b]8j~Os)#);hA;-Qu=j+v5LD ѩvA=~nc0{JSRG?t h]Tw'#^dF-8đ'G;lB>9 a o3I[:? |$=x{9 O5Ccf*v l2:=y*F73l4!9Ƿ89o|?&0,$"> 쎍:"K*Lh&yeq=9 #^s:ѵ dy<cwBT0x/=]wAؼv.cu],) <hk}?Hc6]wJ*/4{gB\J $~?ff|F%}NdOU/)'5O{RSXEtkwi}`| ̩40NxuoBZE'|Mg,u罒4IkaeG9:% `ͶH09t➝eAG D Te݊(f/gXNS97s[;#dN4YZ8 0dYrAf5xB=֑-ж}'l,W˒;vO9pUÝ.BbvNqLvxM{GeܡO4D[όFF;}_?skLkoLWoIVyD,s:[m|ք㨆Fr0
499 1 ߲ Hot:v-4d| |$sI sHڟ1 -cVvs;t'[YZ]K3Yٲ\z+["q;W0[ٍS~t@ Y:_< OTb]HzGX3UZ*4>W<F"kи]{QCε lqB%e&~|(G \xXq482PY(kCY
500 )ꬃ4E;glm-A^I%˛y0"ٚ^T5'AcxLM 6e2!029c4#&׍jrE74;Rv;^z<?+D~ډ9FV T]KsJH`^*/QG?I.[) UKThX>iWsirq8D<ġ2Y{pN_-0TuR΀Y[!o zpb/N Wv b$eԤz3cxue˗eucHaqB 9!6t9>F(B>WG2!\/`K`$ߌ2.$kG;E>ai{ 7&4S-0*H6ϭ>E$ 4ĖW/c#븺f}{ac%]w3]YYû@[wBr)HB2@qݽז_Ym?`X`mZE
501 x^X&1z
502 vB@$'dW#6ZqMsщv#, oM;R[ExkkAyYLoJ]9lͿG +$"rIc?o7/0eZa 1Usgr?0xƥNI-34_f^fw*2OChέp?„ТA/V/<@-W\sZKUgΆvyr]#^e8h`mԕ,B cOH |Rwpj6}y*Q;eN^j~aŹmЫYv2qԨ=WT}?HH˱זzwbl2QWcaJtrꥹ{ۺ\wn6 Eز}V|t1`}^iLmƮa-YL%ʻG~U\iDVwVp Y|yCdn&gUۄ r_,2Qga*(,Ȑ"Y&{6F XWizCS&ҧG |޸#߻z(l_ΞaSY.V3m%YG׍+<oaxdF,t},AliL!ԣ7q19Un yl7+f}qC^=ӲiCɪ+!j =UxY|"+)}c $=$޲kN5ጌ74۱T~$sI}b}B͚gCGʌ{oϊ.]̬v@^VbOkf2َ-Tɾ&%刴w/6foBrqzO滻EtVLydւDߚFDImU GXs㌅5ͨz=wF*m7Bd |$sIĚioKZ|3Tl 3Tc@rg&3R<}I57XAX663#xx8#"ck^1AWao30%43e֟'/ M*hkw>a{Vyחѓ4GKVoǒk9 Vu 2R y+\AG $r^NS|Ff~[~2Mn~LF
503 D=? wGC |,. >؁ (pZ q49Rl%̴t8GF
504 h YV@3iT^=3R 0yD0:5 ;q#NҔarpkլiimo/Ng
505 S L:pWQ!oG?QM06fF +V
506 f܉ey ƫ\ƲمICSIO1ive5c!aD†PiY7OSa ڳdΜrI[ql^T$3¬fHQM=ֶAe&2lΡPA"#R+<יELXdFd3 s0\Lz4:$0uh)a.z
507 83"p,,^짶ݳGl‰YI*q5jG4w![sm'IVʗBzP
508 gFF"Tx.
509 J̧#Li^KEi'ią̒Dr>&XuK%Gj>m?6Q2TGv377kWY_PB?͗R);@P!uhc< Zʷ6:˧8Sp7 n t ?Qn9noe\M|&l}WDǡ&֞Ǻ/;p7kw3uW& 72qB!ytW}GbuoHU3 S?^h6n{-Cc~LSu_ZtL9)AFaSԌڼ5q6֋4^vc,e;t}_{-m_;_خAC;4v+ȘӀ7F W47
510 o++!f"ulؔ%[jn<""S򴥰lX<&h&1[@mCdMh }t1rKߞ{#$-VnlmdusXf> _ZA鯹]*C,83#U6|~ѳ} FsMzlqGWTPmmmhU~} 5mP_5YAaWtw)Bcg2Qv`KX9WW/$[F?,xu5 paNx
511 ]yg/W&MR'CKI^<]lUs ψ~Jç#sSt]B)^a( 7
512 {95"a!s^xӵnM\:[%`d9LBt.`dG˚iݠAu1x7>_LP[,f ;0ͨE\..] Q[&\cTƂvE^=W+u6C YB(.W|%) a7j~6d+*Ru0OJ4xJZJɧ#FhSG1M77#%MבBla~dn {3_XLw?g7|!q%~@g̓Utu}WW@ ^G xSȌ*pF  \GY*-`s<
513 >[]+%k1sEޟg⽟b-_A&l2_UGMY(ĩ%/|ӥ Mx!<ISHJ}b͑0f )g:6[l*VuLLò_}/'} up"ǷB`-Q*xGi+XN+_xzW<{Դ~P;q2aLJйnI59FΉi2Ta!\vݝg}|rn|@ AB40[H3_{4+wܹPw`rO8ԩ&%$; wZlS+I4R#ɮԦQޭG`2 x_Co~'V띢~5SHa5f+M;mJ{z\0 Q mP2y۶-X0|_kO->|$ڛI`m!$$Ne\RɝA xlR\ʹ=m;a?}AA9vL1U w-|hqzT6 Ms<{KE:l OA4 U/
514 5܉ʖboBXRgk~(9nkƝP rRsLM(FI[ |[o\u*7-Mŗ^Hճb%N)LL750J q~iþʄdY`mT`v/QՒu<29( x,=v`< j"71UX:$kNѭӓ|?!WxMj8V'Y#Bb Am<GI4
515 
516 8 w;wʑj9|Lk"jW?c+sxG.${axI ϯ |$ CUnHo?̂yNZ_T57!]I K5 U)E6O!L6K!,_>_mَh VHKBK\\&lq5wW#lUdfLY~Q2k <LV&)k780D0 W5mO⫹|w-_<d'46 $|jw5]2s_駾ގShHGqYBdٞER{c,|.)B}_pYTLue_ mhjUG3%oX]=Ϋ-uO5ϣvƷoX[?GY(CY\-i!f>U:+#'MBl(g||(H欻c$ ͖<
517 GCFqlFd4$veb@O+6R_W|mxF6L
518 CqR#΂ԯv4 8|>xp9MfB4{gVw4`v2 I?$V?퇤g#UzQ&mMEә+VLQf*Jc"U¼Tͯabeϑa>knѥ) g!ʵo3w}94DW| ||#~qbuQPs{tc wb*C$[Ίlt_%WE¯|M *@8O !'p+έn+ϗ߯i=׺zV_W|>0 |%r_7m{fEp麀7][37K"qw;pXֲvۦfs(ܢY̑ͫ^bJFܲ~q6/|aBp$Ee9I`aThMbǾR/"&d#2im (:SMM5錚KD|VN\pWUP_'Ro UMK'nWx_PHU?LƬ9cvwrR %3'9Yėڨ^^/f2cͳ;tTmꂔx܆ 36m{=*ύg!aC Pn5.;du- /к`^#^u:yo_xS=Fvگ
519 []}DS{3~[4(})#2n4Ј{jtHiGW.'Lu&fw[0Ν buRZEé]HkI#Q5qg}&-0Ь4ߣV{^#H;[$^Po8%oT#xhn#ͱ>`$z|.7q1[TMwY<9Qxfnxnԕ]~p1-o{<% ɷ8~c>E> |%rMݷi<sfM0lPS5v_Q#7<;b.o179TTngy)@Q#pyTn2.pB!q~3^n-SWF8Wx=%l$s#l?TMq<Y|5^<RCI=kniuwd/tDկĶtx;#1"!W\IǗ?3.vܦ3fڙWN}_{+T@ }0?|eS@7c֗avSh7;.]%!p*+ikr TUSO9?\)`"prPYnG z-gUۣf}|.H i;u n怃x`Yio&owm 0dSG r^d)grb[1YI#
520 3έ܉B,V5G.lPe&ԓPU?٢]fE0ݬ#Z9V9$@BK0K
521 y`mQm qfBǸ(]]S)sƺ:q뱱vk'׾ZwI$Hm<Dn8IJьjy~GrqW!j@/ uo7W)֏y;ʏ}I`]> DLm;岭!,j9rYM IBQu>gl'PV:e,8+n_ˢ <xֻ|T'ePu7FX^6
522 :JP>r8m(fGAAH'
523 & oXmB'_o7 !'O#$XxxUbY?OPY(s 3pgXk21o!ƙ%34P#tV#gL^`ueہ f
524 3vUbweu79f`Fgk&#caOnwPacF&šo$vOsnu\I~UFC'(`p׫%Q{|$/*W1KL^|/
525 HVY&y]m#(:+(%mr,3XN*8_]ڂJ
526 YX)01Ua=$\lVԜ]H7SH=S@ْA'iY/|{d %$Q8"s-ud0׋=)dǮc|:-PˠX##횜j| $T샌Ϗ>7?lڳmo3jbʎ`-(T~vV*
527 ofoK.&^Mf[j2Dz𬪏b\6B6҇'#öVEZܺ,ðaٸ[78O&{iBBM8;89 Mr=W'4<VNOM CIFS) ,Ga[IVl}o죄|*7:k{`,beR=*)m|^#k %W`gX$OG {QWKgV0RdW=]䘩A{*߽
528 i0 r bʵb^{,ݝ=zvV @v ~|'$<bT祗{|WfKJ.'ۈ!dyHZޢ3A`jzT1fcLjzLJ[Huqq ТI¶8i;ڒa"27mU{;ʏ %f/nr8);z̮m}Å]~>L c4֙J dVI0๐rՇY];~nKheBȍoDp~T>Bc8 `2 <_1 wK
529 m);w'FxE/^D/ wx&Ҟ/Vy-|*?H,WtePB`V6/ΐ q/Il@[v&=CkǢ`xj]$tQVD]s][ib U2l<X؊Zc[yѯ`C*kYs
530 91'dcҶG˕!5ێJcJ_ڦJ#%e`e)3Jv>;xtwLqF庠 +dEΑ E2Jƌ2P$^ʹe^OG ;< (/˟lg&ldLdv 6AzJT^otVsqruQ!{Va~;QOdx:1}9YjϬbI.UeC?ĺ)sXS5LN#)jAZ n1WMԻk9і ]{wt+# [uڭ³-s'bK5Wch` [j$vwM0QbP"! T.ru#Vuf(vbзz%SGm _^>Z^xO@xYBf2.'&턮Mݪ XTP+/mrTVZ6RLq ;X0Q&>Y܎Pg|{ٳ#vXC5&jN][ \^x}v)2q՝ 7W}),5 ѼF<$[9=(H#
531 a栫7d;v |]Rk} t7X٬]~ie0b[K^#L Ifq>{Kz2\/atW)YI[[&US,imjK~vE6ڣ
532 έmx^̕~_ yRoh=8lk/9[TB.5l,":|ϭ>K]`90S(XҬy1*ku`2" 70؊iR Ks~K'H˗r[GJ zPՌ|AxU*Y<[Y[~euou`',,ie߻$V LY>&{4d8O)cCeQ*N <9in(64N,S!科*J5OFwo_F}Eҧ#nK13=b(gKS=#b7^&Ģ`vѷAV̙ f>ºw;홮z &l"&C$a1r ЀC+Qf[r3>We'uvޡ. [᷿c+ȐJAqGDm<ce`6j>_/;P dZ+D@\DAnm4^hXQ6rF؅_imŠDMҰ텖|WHߑJY^ܬ'rcm;y\z >{GCY,s߄~vP{~?mR߾3AC>ǹ[!jYIH Q'Mβo~5*#W\zr ?ejy!l/*犍*6%h%U!Q2OG %kM}vˇ,p<I)b[eƗeZʎq/
533 u%n
534 l)eDIF8:uZz78qod/5NY .d"I/c5RjE.!N[a?RIC ;x62tKZ1e4;P)pYw}HH?eb-;+(N?31=2v3`FgYpHukb#A::C%;_גNur>SR2nfZɊLۅ{T[EH X4$`Wm˕v֗<O0i>d2uctRߐ]+U0J ;Oh΃Dm0 zZh Z/n@UhgG =әjܳM~fفrE1Zrk~4!mPvB rNkj֑D$i pz|R $3l;#%[kC8AT4 XUO?XJJ{nn** r2{! f2Q
535 *W.m(t^/ixh| Kj׬T4_xȤఆq[#rI+Ii0r\ck=P\58k;қ"{{E:~ql^=^ fajJ߄^wvYY;Ou7au,U LO:M(W
536 Zx+v3 w&;"IN+oo@)B Ul ^JMͮt|3:_y*3RM=oڻX}k.>iOQ4@ȃ`])c2dfݵ 8|Mrf_^6Ĩ9ZcZI88oXa>TK{M#|G۟k lcȇ$xta,=7ni@ vÿ@jr::ٔ3GsJ7%1|w&Nƾ.7.ghqF}AOR;iP2gra;2l՟=A$Cdu}#qw57fvfc' `Kk\6F0Vuq ٍeC{(]Oq$\#RF5ڪ0kXoqǩDž,F8`*`%twNe3@4wp|,n)5"Ce}UA2d`.-}@F4ݣg5nLF_3 _Hn&,{2yK o4cTޚϾ΢tt&<; Hm]K~M
537 MB3hmƫyXdca>M\:K6K^yDNW-O4vVB tuQuw{h;u<VU~q\/iݣ H"WJ@ds֖X: SuÉH؍]Hp%Vȩ"vھ,,«\/7Q\) eCF'#ϭ_޸$^&OWbA}3.&5M`1T}l 4#XNG7)0?7\ڂ&<|H57c.uФJbcy\n`wr.9o y` Ѝsߎ㺎z, ? L|dz2IUcv\MʹP^S`8]|мݗ`<=6p|-n4^N—L6( &w aSw\= UwN}#$62~ oI_rbuOi`Ӧ tlJ'
538 -X*8EWEcc4E}+Ku])uK ͜2-ݘ]%W!# `LNgMd'Im,+plΤA^8?G$wb;fjgk;uY]YVŜV7&0 X kdK #G('(
539 %IWsH9Y)TS숦}(hBuH(ϭ߀޸=,"x1I<BWX
540 &9b^5uԱ d0l\ۙc >o9P2wum4gv% /RsNbXN2v
541 =U=7#v!y[,{U=k9yʊֻ0sof̴\3/"/E vG֝(?8NIQЍL?ୄXa*1x{irw5ALĪʤ 5w8S~UmV// cl8+dK;LbEĎYv?v |kĔ`/h/
542 u3`DJ(s~=/ᛩ)mdJmT3!΍z*cGa֝.Y`5戩=2%Y,,xn<HxжI{-Wwg7uݥi^9UX]C5'?k 6l،6g<P ^G߾nf8]}֗hCwD-krze# G SZDƽv_I!M _Jh<s!ӻ$ d!u0ݬҔmBt%ܺ ZQT ~%dRl7Ѵͦ`TC;M-=ϓ7+Gv7Oa8MCW$Qmp<N>Xhw 18
543 3{*t,Wn\pi$??Hl h>g2DEe:ck|G,yr1͗GL]@7vQVjU-/m-FmcAc#[V(&bݮcyψ\iC?ir//@|ÍxyH IG}#5o#(8Q%o YIߌ)$~3#iR5,WJ<EiS/T͓YNYDL)#i9m!<ڨZ-ÆhV?yfu 9؊c#5 rłrK(񩔩#/U apIf * G@`DQ͢`v^3w32!_[_^70UlkBHQ7}~5LHV3Brr
544 s ?$[Cd>3}3 P`qуF6lY=e{`f\<nHLFǐlXǗ)@l,°rUjr&өi'6oOo\e,i< .%t# _ʴ<Oؤfaj^e?Nohތ]+$x tT/3i]rU9S>fG=}@^Z95еwtNP}uw;dSJ_j5qpf2FѶ^HRݍH/J>!\^s]~^
545 ~T->ɶAmU8b
546 ොBqQJ8GM BB&қMVwT쌆<RlCz57.ל]y<ZzjAܸa[pM{}=WKˑ#cPM
547 7u=6Ef< MW5Tz} Y]]K/M1b=lTЪzo
548 b<n)Ty3N `q@,D}#* _W;`ȗ"ݱ}\c]Քbľc@l[qmߎG(zּ|k<ZGpݭ/9ۮƗW J7ot1~R#bTa
549 LJJw;Ŕqq?!lfmٯcI}bzӘ{95FٴM?r>x+,Ev%a ~Az@~m37Oko>gB0j;#+=b{d] kep]lt2
550 7T aL&<\z !A.6I*sJo(_\b+9uo|r6|;aрZuuX
551 97:ˆ 8Z>SD4el%Ws1;u{nv1CVIQԤ1 d2 z^/:??cxrvd\YWtz&nJ&uN\?}f kk~64=[ C0e|'`9ff#.ojir)¾IW*4(57&VO8[wdU?>1Zd[l#'_M}.j &i.zqW=1#T!ox|S9cS>r=5޿ѿ}QS$Cm.U{IG浢WmHa'zܙIhisOCNQJU1W ֪wh!-0ei;aU zd5KxqfwoJl^`fX0u]r%ynhd*$ȷMD.+$|Y<cՋT5p8QȑO@1VSe`})Q5rJ }g
552 Pe
553 u ' dk44#78>H#>Mr1mu~8(WBucX>H#^%б=sw$18⽳}$G |$HvIxK{G |$4 ܇=*eFIENDB` DdXU# `
554 
555 <A?2k_ES'PQ Gp!?_ES'PQ _ES'PQ -k1xWqLTG曷 oH΅"aI޶z[[=Қr1ibN{Wrjbrg-A9kkR XKδ/ڽyoY  7f~o7}-01h3&348HfҋNc%`j27_t dOdF8Y?[Z0]<% P[! ~ hЦSux`3[a ^ Rl|Y)/@5 /A~xqn(7A πr̃'qc2@q?cO9+7B
556 ,fX0p&K¨Q/H՘Hd=gqI3{߻3}w xLYtvp,k#O?haU$^Wpc/cw*tsd{ݝJاD]y(3+`NrwwqFۂ0gs֟|iB?34 '0bNf-m.+ Y]kv(BȺ9fBujoYgS&y>a*ݾK6C<e+ y
557 ee;<";@.n/)!"l$<I>4|2-ۨWQi)h9Sb+FF(S)w""b(eb.)0U0A$aTyjE #:Yo}=>;DNϼA>z<v=7N9f wؽC4}u/S毂ӲL?h]Ivy߾,X0=i1{1[;~8j-MV6FC뼟YކkS9\dc{hXy{cB]iNd 3yN >Uc?.i>C-AM]"[i+o oU
558 (גP~@54Nz=xv ڂT FǛ(_YxRxt=t<$?[Irݐ&w@rKre̗3 _&kpX |yC36_c#,[2,]ngi$4e#z(E>TuxUDܯrnݯ sCkpq"fD{a:dݤk
559 kEzj5V[jY'(:F`ҷ:&5zn%kBlBHٲEnF_M
560 QZNuD=[4IVRFi2HreJf(E2K>/o]m|Y'r#lSd-"]4r$[f
561 H=b"<ë:>ׄdݢq\q3#yOcG䘷z,e捘~ӱ'"o1C4L }o:vyˏ[^pǭx<N}|'>zj<۸s wj<gsfϞvx[4ϲM=:NO?7aZ82u|;~w!UV7Z0ŨrzGi~gT[=3yN49˱'_g&|N(uP`;UmZ|m?'.l=E\yɾn~b_8w]?h^+ͫ6s;h^W ̯,h21HP+tbdcc,Q;X+UxV-5V|y5xAXXz:եqU/:W}YT;xWKJZU?TR)|jSI:E)nb;@`ie%_8R8bѥi|0'fsBxhNp=yD"/EKqOh+'0 `hx
562 IndholdTorben Hørup Nielsen Normal.dotTorben Hørup Nielsen45@@#@l)6<@sj=G(q 
563     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcefghijklmnopqrstuvwxyz{|}~M 0@
564 Caolan80 \7lLL4h8D|280(@STc,6X2"XL8Kn*+e,dIndhold  TOC \o "1-9" \t "Overskrift 3;3;Overskrift 2;2;Overskrift 1;1;Titel;1" \h HYPERLINK \l "_toc34"Indhold 1  HYPERLINK \l "_toc78"1 Indledning 2  HYPERLINK \l "_toc91"2 Analyse 3  HYPERLINK \l "3.1.2.1 Valg|outline"2.1 Valg 4  HYPERLINK \l "_toc125"3 Systemdesign 5  HYPERLINK \l "_toc133"4 Hardware dokumentation 6  HYPERLINK \l "_toc139"5 Database dokumentation 7  HYPERLINK \l "6.1.5.1 Valg af databaseplatform.|outline"5.1 Valg af databaseplatform. 7  HYPERLINK \l "6.2.5.2 Generelle noter omkring databasedesign|outline"5.2 Generelle noter omkring databasedesign 7  HYPERLINK \l "6.3.5.3 Tabel beskrivelse|outline"5.3 Tabel beskrivelse 7  HYPERLINK \l "_toc397"6 SMS Protokol beskrivelse 10  HYPERLINK \l "_toc417"7 Software dokumentation for embedded software 11  HYPERLINK \l "8.1.7.1 Generel beskrivelse|outline"7.1 Generel beskrivelse 11  HYPERLINK \l "8.2.7.2 IMEI|outline"7.2 IMEI 11  HYPERLINK \l "8.3.7.3 Mulige forbedringer|outline"7.3 Mulige forbedringer 11  HYPERLINK \l "8.4.7.4 Funktioner|outline"7.4 Funktioner 11  HYPERLINK \l "_toc479" 7.5 Definitioner 13  HYPERLINK \l "8.6.7.6 Variabler|outline"7.6 Variabler 14  HYPERLINK \l "8.7.7.7 Brugervejledning|outline"7.7 Brugervejledning 15  HYPERLINK \l "_toc666"8 Software dokumentation for Server software 16  HYPERLINK \l "9.1.8.1 Beskrivelse|outline"8.1 Beskrivelse 16  HYPERLINK \l "9.2.8.2 Brugervejledning|outline"8.2 Brugervejledning 16  HYPERLINK \l "9.3.8.3 Funktioner|outline"8.3 Funktioner 17  HYPERLINK \l "_toc751"9 Software Dokumentation for web-software 22  HYPERLINK \l "10.1.9.1 TNTnet|outline"9.1 TNTnet 22  HYPERLINK \l "10.2.9.2 Design|outline"9.2 Design 24  HYPERLINK \l "10.3.9.3 Layout.|outline"9.3 Layout. 24  HYPERLINK \l "10.4.9.4 Software dokumentation|outline"9.4 Software dokumentation 25  HYPERLINK \l "_toc800"Ecpp moduler 25  HYPERLINK \l "_toc872"vrige filer 28  HYPERLINK \l "10.5.9.5 Web klient bruger grnseflade|outline"9.5 Web klient bruger grnseflade 29  HYPERLINK \l "_toc904"10 Idriftsttelse af systemet 30  HYPERLINK \l "_toc914"11 Accepttest Specifikation 31  HYPERLINK \l "_toc917"1)Overordnet 31  HYPERLINK \l "_toc923"2)Overvgnings enhed 31  HYPERLINK \l "_toc939"3)SMS Server-software 31  HYPERLINK \l "_toc954"4)Web-interface 32  HYPERLINK \l "_toc971"12 Konklusion 34 1 Indledning Vi har fet et projekt-oplg som bestr i at lave et overvgnings system, til at overvge flis fyre. Overvgningen skal ske gennem en server, hvilket betyder at vi skal have noget kommunikation op at kre, som kan sende dataene fra flis fyret, dertil har vi fet udleveret et Fargo maestro 20/100 som vi kobler til et picdem2 board gennem den serielle indgang. Vi laver et addon modul til pic boardet, som simulerer et flisfyr i henhold til opgaven. Serveren vil vre en dum server, som hndterer dataene som bliver modtaget fra overvgningsenhederne og gemmer disse i databasen, samt eksekverer kommandoerne som der bliver givet fra klienten. Klienten bliver web baseret og skrives i TNTnet. grunden til at vi vlger at lave den web-baseret, er at det efter vores mening er den mest hensigtsmssige lsning. Opgavefordelingen er som flger: Da vi har tre hovedomrder og vi har tre system-elementer har vi lavet opgavefordelingen sledes: Kevin tager sig af serveren Hedin laver hardware + embedded software Torben laver web software Dette er ikke en stringent opdeling da vi selvflgelig hjlper hinanden med de forskellige opgaver efter behov. 2 Analyse Producenterne af flisfyr og denne branche som helhed er endnu ikke net s langt mht. til interfacing og datakommunikation som andre automationsbrancher ssom pumpe-branchen, hvor kunderne konstant eftersprger flere muligheder for overvgning og styring. Hvis man kigger rundt p nettet og undersger de forskellige producenter af stokerfyr og lignende fyrtyper, s vil man opdage at de fleste af denne slags fyr har ganske vist en styringsenhed med en rkke sensorer og aktuatorer tilknyttet, som giver mulighed for at overvge og styre fyrets drift p en rkke forskellige parametre. Hvis man gr ind og kigger p billederne af de forskellige fyr kan man se at disse styringer ligner hinanden til forveksling. Mange af disse fyr bliver produceret af regulre smede-virksomheder hvor at man ikke kan forvente den at finde kompetencer inden for elektronik og programmering, kombineret giver dette anledning til disse to teorier: Et givent firma har udviklet standard general-purpose styringer til denne slags fyr og at producenten af fyret s kber sdan en styring og monterer p fyret. At en fyr styring er opbygget af en standard PLC (Programmable Logic Controller) og et standard displaymodul til en sdan plc. Derved kan man relativt let f tilkoblet de forskellige inputs og outputs og f det programmeret ved at konsultere en elektriker eller anden person med erfaring inden for automation. Kigger man p specifikationerne og databladende er der ikke meget der indikerer at man kan trkke data ud fra styringen der kan bruges i en overvgningsenhed som vores. Dog er der nogle enkelte der tilbyder data via et rs232 interface og et tilhrende windows program. Ud fra opgave oplgget lyder det ikke til at Serren AB er en decideret producent af anlg, men lyder mere som en virksomhed der tilbyder reparation og anden servicering af disse anlg og gerne vil udvide denne service med et fjernovervgningssystem. Hvis at et sdan system skal tilknyttes eksisterende fyr anlg vil dette betyde at Serren AB selv skal pmontere ekstra sensorer uden om den eksisterende styring og selv srge for videre behandling af disse data. Hvis datatudvekslingen skal optimeres skal man have fat i producenten af anlggene og bede om at f lavet mere et udvidet data-interface. Dette datainterface kunne laves p flere forskellige mder: En tt integreret lsning hvor kommunikations-enheden indgr direkte i styringen, enten p selv samme print, eller som en addon til printet hvor man p simpel vis kan f fat i de relevante data. Dette vil krve et meget tt samarbejde med producenten og vil ikke vre s fleksibelt mht. til frit at vlge mellem leverandrer. En anden mde kunne vre at dataene blev leveret via en kommunikations-snitflade i form a f.eks. et RS-232 og hvor man med simple kommandoer kunne aflse styringens parametre dog uden at komplicere selve styringens opbygning og modularitet. Den tredje mulighed var at man bad producenten om at levere dataene via en industriel fiel 
565     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~dbus og implementerede overvgningsenheden som en form for gateway imellem GSM modemet og fieldbussen. Denne lsning vil ydermere have den fordel at vi kan indsamle data fra andre enheder ssom varme cirkulationspumper, aircondition anlg osv. Serren AB kunne ogs gre det, at i stedet for at de selv str for overvgningen, kunne de ogs gre det at de slger overvgningssystemet til de strre kunder, sledes at en stor virksomhed eller en offentlig organisation selv kunne overvge sine anlg. 2.1 Valg Opgaveoplgget har ikke givet megen mulighed for at vlge hvordan dataene kommer ind til vores system, s vi aflser dataene som 4 digitale samt en analog indgang. Med hensyn til valg omkring microcontroller har vi valgt en chip fra Microchips PIC18 serie da det var dn vi var fortrolige med og vi viste at den havde de moduler vi skulle bruge ssom seriel UART og A/D konverter. Valget af kommunikationskanal imellem PIC og Serren AB s systemer var enkel, da opgaven foreskriver at dataene skal transmitteres pr SMS via GSM modems. I projektet skulle vi ligeledes bruge en database til at opbevare de indkomne data. Blandt de mange forskellige kommercielle og frie lsninger der er p markedet, har vi valgt et open source produkt med navnet PostgreSQL. Som bindeled imellem databasen har vi valgt at lave et serverprogram implementeret i C++/MFC, igen p grund af at det var elementer vi havde forudgende kendskab til. For at forenkle Serren AB s idriftsttelse af systemet valgte vi at implementere den del af systemet der skal bruges til dataudtrk og administration, som et web-interface. Derved er selve udrulningsfasen nrmest lig nul, da der ikke skal distribueres software, komponenter til de enkelte ansattes PC er. Som platform til web-interfacet har vi eksperimenteret lidt og valgt en TNTnet applikationsserver, denne platform har to klare fordele set fra vores synspunkt: t, at vi kunne genbruge vores viden inden for C og C++ programmeringssprogene og to at da modulerne bliver kompileret til maskinsprog er det en meget mere effektiv platform og kan dermed klare flere sidevisninger p samme hardware end nogle af de andre muligheder. 3 Systemdesign Systemet bestr af en microcontroller baseret overvgnings-enhed, to sms modemer, en server, PostgreSQL database samt et web administrations modul baseret p tntnet. Overvgnings-enheden bestr af en PIC microcontroller der skal aflse analoge og digitale vrdier fra fyret. De data der skal mles er kedeltemperaturen(analog), power failure, fremfrings fejl, om tanken er ved at vre tom samt om hvorvidt at der er flammer i fyrets brndselskammer. P de digitale indgange er der placeret lysdioder s at slut-brugeren kan aflse status direkte. De aflste vrdier skal afsendes til serveren via SMS. De afsendte sms er gives et unikt fortlbende nummer s at serveren kan identificere rkkeflgen. Konfiguration af enheden modtages pr sms. Serveren modtager data-rapporter fra enhederne via sms og gemmer disse i en PostgreSQL database. Serveren skal, nr den bliver trigget fra administrations-interfacet, kunne afsende konfigurations-sms'er til en eller flere enheder. Fra web interfacet kan kunden aflse de indkomne data, oprette og slette kunde-profiler samt trigge serveren til at afsende konfigurations-sms'er.  EMBED Microsoft Visio Drawing  4 Hardware dokumentation Vi har valgt at lave et addon modul til picdem2 boardet i stedet for at lave et design fra bunden, idet ingen af os har srlig meget styr p hardware, vi har dog lavet et diagram, se bilag XX, over hvilke komponenter p pic boardet vi bruger, sledes at det vil vre relativ nemt at lave et selvstndigt board. Addon boardet kan deles op i to sektioner, en som beskytter pic'en mod overspnding og en som simulerer I/O fra fyret. Diagrammer over disse to sektioner kan findes i bilag XX og XX. Grunden til at vi har sat en optokobler foran indgangene p pic'en er for at beskytte pic'en P den analoge indgang er vi hoppet over hvor grdet er lavest, idet vi ikke kan forsvare det hardware der skal til for at f lavet en galvanisk adskillelse mellem input fra fyret og indgangen p pic'en. Skulle det laves korrekt, skulle den variable spnding konverteres til en variabel strm, som derefter kres i gennem en liner optokobler. P den beskyttede side af optokobleren skulle den variable strm dernst konverteres tilbage til en variabel spnding, der kunne aflses med PIC'ens A/D converter. I den frdig udgave vil det dog vre mere sandsynligt at den analoge vrdi kom ind til pic styringen i form af en variabel strm i omrdet 4-20 mA. 5 Database dokumentation 5.1 Valg af databaseplatform. Vi har i dette projekt valgt at bruge PostgreSQL, som er en open source relational database mangagement system (RDBMS) som er fuld ACID compliant. ACID er en forkortelse for Atomicity, Consistency, Isolation og Durability og bruges til at beskrive hvor vidt at databasesystemet er til at hndtere database operationerne i isolerede blokke. Postgresql implementationen ligger sig tt op af SQL92/99 standarderne. 5.2 Generelle noter omkring databasedesign Da Serren AB tilbyder sine services til bl.a. institutioner og andre strre organisationer, er det vigtigt at en given kunde kan have mere end t fyr med n overvgnings enhed. Derfor er disse to entiteter splittet ud i hver sin tabel forbundet med en n til mange relation. Dette medvirker at kunden kan have lige s mange installationer som det er krvet og da hver installation har sit eget adresse-felt kan disse installationer vre fysisk placeret hvor som helst. For at sikre at alle dataene i databasen er konsistente og for at undg redundante data, er alle tabellerne normaliseret til 3. normalform. Normalisering er en flertrins proces som netop har til opgave at sikre et fornuftigt database design. For at gre designet simplere og effektivisere opslagene har vi valgt at udskifte de naturlige primre ngler med automatisk optllende tal-ngler. 5.3 Tabel beskrivelse Her beskrives tabellerne i databasen. For en grafisk reprsentation af tabellerne, se venligst bilag XX. Tabel: Customer Indeholder stamdata for Serren AB s kunder. 1 db row = 1 kunde. IDFortlbende heltal, primr ngleNameBeskriver kundens navn. Tekststreng af variabel lngde med maksimal lngde p 100 - herefter kaldet en varchar (max)AddressKundens postadresse. Varchar(255)PhonenrKundens telefonnummer. Varchar(30)ContactpersonNavnet p Serren AB s kontaktperson ved den pgldende kunde. Varchar(100) Tabel: Installation Beskriver installationen af en overvgningsenhed. En installation skal vre tilknyttet en kunde. 1 row = 1 installation IDFortlbende heltal, primr ngleDescriptionEt tekst felt hvor Serren AB, kan give den pgldende installation en kort beskrivelse eller et kaldenavn. Varchar(100)AddressAdressen p den bygning hvor installationen er monteret. Varchar(100)CustomerIDID et p den kunde som denne installation er tilknyttet. Heltal, fremmedngle i mod customer tabellen.BoilertypeEn valgfri beskrivelse af typen p det fyr der skal overvges. Varchar(100)InstallationPhoneNrTelefonnummeret p installationen. Bruges bde til at identificere indkomne log-data, men ogs nr at der skal udsendes konfigurations sms er til en installation. Varchar(30)IMEIIMEI nummeret p installationens GSM modem. Tekststreng med fast lngde p 15 tegn - herefter kaldet char(lngde)UpdaterateAngiver hvor ofte at installationen br afsende periodiske data-rapporter, angivet i minutter. Heltal.CommErrorIndikerer hvorvidt at installationen svarede tilbage p den seneste konfigurations sms. Boolean. Tabel: Logtable Indeholder de indkomne datarapporter fra installationerne. 1 row = 1 datarapport IDFortlbende heltal, primr ngleLogtimeTidspunktet hvor at datarapporten blev modtaget af serveren. Tidsstempel. TemperatureKedeltemperaturen mlt i grader Celcius. Heltal.FlamedetectorIndikerer hvorvidt at der var flammer I fyrets afbrndingskammer. Boolean.SolidFuelEmptyIndikerer om der var mere flis i flistanken. Boolean.ConveyorErrorAngiver om der var problemer med mekanismen til fremfring af brndsel. Boolean.PowerFailureAngiver om der var strmfejl p fyret. BooleanMessageNrHver bliver stemplet med et fortlbende nummer, dette nummer gemmes her. Heltal.InstallationIDID en p den installation som denne logbesked er tilknyttet. Heltal, fremmedngle imod Installation tabellen. Tabel: Command Da web-klienten og serveren ikke kommunikerer direkte sammen, bruges denne tabel til at brugerne af web-klienten kan sende kommandoer til serveren. Desuden virker tabellen som en historik over allerede udfrte kommandoer. 1 row = 1 kommando IDFortlbende heltal, primr ngleCreatedAngiver hvornr at kommandoen blev oprettet. TidsstempelExecutedAngiver hvornr at kommandoen blev udfrt af serveren. Hvis at dette felt ikke indeholder en vrdi, betyder det at den endnu ikke er udfrt. TidsstempelCommandIDAngiver hvad der skal udfres. Er vrdien 1, skal der udsendes konfigurations sms er til samtlige installationer. Hvis vrdien er 2 skal der udsendes en konfigurations sms til installationen angivet i nste felt.InstallationIDHvis CommandID er 2 bruges dette felt til at angive hvilken installation konfigurationen skal sendes til. Heltal, fremmedngle imod Installation tabellen. Tabel: Users Gemmer brugerkontiene til den administrative del af web-interfacet. 1 row = 1 bruger IDFortlbende heltal, primr ngleRealNameGemmer brugerens rigtige navn for at gre det enklere for brugeradministratoren at identificere den enkelte bruger konto. Varchar(100)UserNameIndeholder brugernavnet. Varchar(30)PasswordIndeholder brugerens kodeord, krypteret med en MD5 hash. Varchar(32)EnabledAngiver hvorvidt at kontoen er aktiv. Kan bruges til at gre en konto ubrugelig uden at fjerne den helt. Boolean.UserAdminAngiver om denne konto har rettighed til at administrere andre brugere. Boolean. Tabel: Config Indeholder de server konfigurationsparametre der skal kunne ndres via web-interfacet. 1 row = 1 konfigurations parameter. NameNavnet p parameteren. Varchar(50), primr ngle.ValueParameterens vrdi. Tekstfelt uden vre grnse. (datatype=text) 6 SMS Protokol beskrivelse Kommunikationen med vores sms modems foregr via RS232 og AT kommandoer. F.eks.  AT+COPS? som bruges til aflsning af operatr. AT kommandoer er en de facto standard til kommunikation med modemmer, udviklet af Hayes Communications. Vi har valgt at lave vores egen protokol som overbygning til sms, som ser sledes ud. Data update fra fyr: <sms counter>:<temperatur vrdi 0-100>:<flammedetektor 0/1>:<flismagasin tom 0/1>:<fremfringsfejl 0/1>:<power failure 0/1> eksempel: 4532:80:1:0:0:1 Konfigurations sms til fyr: <simpel tvrsum af modtagers IMEI>:<server tlf nummer>:<update rate i minutter> Eksempel: 43:87654321:75 Conf ok pakke: <Okay besked> Eksempel: conf ok 7 Software dokumentation for embedded software 7.1 Generel beskrivelse Hardwaren bestr af et picdem2 board med en pic18F452 mikroprocessor, hvor vi har lavet et addon modul til at simulere det input som et flisfyr skulle have leveret. Denne simulering bestr af fire on/off kontakter, et potmeter samt et sikkerheds kredslb, se bilag XX for diagram, til at beskytte pic'en mod overbelastning. For at kommunikere med serveren, har vi sat et Fargo Maestro 100 modem i RS-232/DB9 stikket p pic boardet, som vi kommunikerer med via rs232 med AT kommandoer. Se bilag XX og XX for at g et grafisk overblik over vores hardware. 7.2 IMEI Et IMEI nummer er et unikt nummer som alle GSM og UMTS telefoner har, ligesom en MAC adresse er unik for alle netkort. 7.3 Mulige forbedringer Pin koden er hardcoded i pic'en, det er en af de ting der eventuelt kan ndres p, sledes at man kan ndre pin koden fra serveren. En af de andre oplagte forbedringer vil vre at kunne lave et timestamp p sms'erne, f.eks. ved at pic boardet foresprger efter en opdateret tid/dato, nr pic boardet er frdig med init. 7.4 Funktioner void reset_recieve_buffer() Denne funktion bruges til at reset vores to message buffere, med tilhrende countere, disse buffere bruges til at gemme de sidste to linjer data der er sendt fra modemet, for at se hvordan disse buffere arbejder i forhold til hinanden, se bilag XX. void pic18_io_init() Her bliver portene som vi skal bruge p pic'en initialiseret, det drejer sig om RA0 til A/D input, RA5 til comm Error LED samt RB1-4 til digital input. void ad_init() Srger for at initialisere A/D registreret til at bruge RA0 indgangen, lave resultatet right justified, clear ADRES[H-L] for at vre sikker p at der ikke kommer en critical tilstand lige efter opstart fordi den tror at der er 90-100 grader i kedelen. void interrupt_init() Aktiverer alle de interrupts som vi skal bruge, hvilket er, timer1 og serial recieved interruptene. void timer_init() Bruger ekstern clock, prescale er sat til 1/8 og den udlser hvert sekund. Prescale betyder at vi slipper x/y af frekvensen igennem. Den eksterne clock er for vores vedkommende p 32,768KHz, hvilket vil sige at med en prescale p 1/8 s udlses TMR1 registrene 4096 gange i sekundet. Timer1 er en 16 bit counter, som bestr af to 8 bit registre, TMR1H og TMR1L. Vi har sat dem til EFFFh, som er 4096 mindre end overrun, hvilket vil sige at timer1 interruptet bliver udlst en gang i sekundet. void rs232_init() aktiverer den serielle forbindelse, samt stter baud raten til 1200. void modem_init() Henter IMEI nummeret fra modemet, sender en pin kode, hvis den mangler og sletter eventuelle sms beskeder, hvorefter pic'en venter p at f en OK tilbage fra modemet. void on_initial_recieve() Venter p at +WIND 11 findes i serial_recieve_buffer. Nr det findes i bufferen, s er modemet initialiseret, og global_modem_init bliver sat til 1 samt message bufferne bliver resat. interrupt interrupt_handler() Er vores hoved interrupt handler, som finder ud af hvilken interrupt der er udlst, hvorefter den tilhrende funktion bliver kaldt, derefter bliver interrupt flaget sat til 0 igen, og programmet fortstter hvor det slap. void serial_recieved() Bliver kaldt nr RCIF interruptet bliver udlst. Det der sker i funktionen er at den hlder det indkommende byte i global_serial_recieve_buffer. Der er dog nogle undtagelser, hvis det der bliver modtaget, er \n, s hopper vi bare ud igen, idet vi ikke kan bruge det til noget, det samme sker ved \r hvis det er den frste karakter der bliver modtaget. Modtager vi derudover en \r, s regner vi med at det var den sidste byte i denne omgang, og vi hlder indeholdet af global_message_buffer1 ned i global_message buffer2 og til sidst hlder vi indholdet af global_serial_recieve_buffer ned i global_message_buffer1, derved har vi gjort klar til at der kan modtages mere data, mens vi arbejder med det andet. void timer1_interrupt() Bliver kaldt hvert sekund, og tller global_time_counter samt global_emergency_counter 1 op. void update_lcd() Opdaterer lcd displayet 1 gang i sekundet. void send_update() Indsamler data fra flis fyret, lgger det ned i update variablen og sender det videre til send_sms() som hndtere selve afsendelsen til modemet. void send_sms(const unsigned char* payload) Beder modemet om at sende en sms med indeholdet i payload. Nr sms'en er sendt s bliver den slettet, fra modemet, og eeprom_writer() bliver kaldt for at gemme sms_counteren. void convert_temp() Omregner vrdien fra potmeteret til grader, og gemmer det i global_temp void eeprom_writer() Skriver telefon nummeret til serveren, sms counteren samt tidsintervallet mellem status sms'erne til eeprommen. void eeprom_reader() henter dataene ud fra eeprom'en som eeprom_writer() har lagt derned. void on_recieve() bliver kaldt i bunden af main loopet, for at tjekke om vi er frdige med at modtage noget data, er vi det, og det er en sms, s henter den sms nummeret ud fra det modtagende data, hvorefter den kalder void sms_recieved() og til sidst clearer message bufferne. void sms_recieved() starter med at bne den modtagende sms. Nr den har modtaget et OK fra modemet, s er hele sms'en hentet, og vi kan begyndt at dekode den. void Delay(int time) laver et delay p time tid i sekunder, time kan dog variere fra time til time-1, idet funktionen kigger p timer1 variablen, som udlser 1 gang i sekundet, s hvis time er 1, og Delay(int time) bliver kaldt 1ms fr timer1 udlser, s varer delayet reelt kun 1ms. void main() Er vores main loop, som krer det hele. De ting som krer i while(1) lkken er et tjek p om der er nogle kritiske tilstande, hvis der er, og global_emergency_timer er over 600 sekunder, s bliver der sendt en sms, til serveren. Den srger ogs for at der bliver sendt en status sms for hver X sekund, samt at reset global_emergency_counter. while(1) tjekker ogs om der er lavet ndringer i status intervallet ol. og fr skrevet det til eeprommen A/D konverteringen sker ogs i while(1) loopet. Sidst men ikke mindst s bliver on_recieve() kaldt fra while(1) som frnvnt. 7.5 Definitioner #defineforklaring.BUFFERbruges til at bestemme lngden p vores 3 buffere til at modtage/lagre modtaget data.PWRFAILpowerfail porten.FIREDETflammedetektor porten.FEEDINGfremfrings fejl porten.EMPTYTANKtom tank porten. 7.6 Variabler Dette er s en liste af vores variabler, samt en forklaring af hvad de bruges til. Variabel navn.Forklaring.unsigned char global_Pot_Hiindeholder ADRESH.unsigned char global_Pot_Loindeholder ADRESL.unsigned char global_serial_send[BUFFER]indeholder det data der skal sendes.unsigned char global_serial_recieve_buffer[BUFFER]indeholder in kommende data.unsigned char global_tempindeholder temperaturen i forbrndingskammeret i celsius.unsigned char global_message_buffer1[BUFFER]indeholder den nyeste frdigmodtagende linje fra modemet.unsigned char global_message_buffer2[BUFFER]indeholder den nst nyeste frdigmodtagende linje fra modemet.unsigned char global_message_buffer_length1indeholder lngden af message_buffer1 arrayet.unsigned char global_message_buffer_length2indeholder lngden af message_buffer2 arrayet.unsigned char global_lcd_buf[16]indeholder det data der skal skrives ud p displayet p pic'enunsigned char global_cell_nr[15]indeholder serveren telefon nummer.unsigned char global_sms_recieve_number[3]on_recieve() gemmer sms nummeret her, det er det nummer som skal bruges for at bne sms'erne i modemet.unsigned int global_serial_byte_countercounter til at holde styr p hvor meget data der er i global_serial_recieve_bufferunsigned int global_sms_counterholder styr p hvor mange sms'er der er sendt til serverenunsigned int global_time_counterbliver talt 1 op hver gang timer1 bliver udlstunsigned int global_emergency_counterbliver talt 1 op hver gang timer1 udlses, og sat til 0 hver gang der bliver sendt en kritisk sms.unsigned int global_time_intervalindeholder tidsintervallet mellem status sms'erneunsigned int global_imei_tversumindeholder den simple tversum af imei nummeretunsigned int global_temp_update_displaybliver sat = global_time_counter efter displayet er opdateret. displayet bliver kun opdateret hvis temp_update_display != time_counterbit recieve_donebliver sat hver gang en modtagelse er frdig.bit modem_initbliver sat nr modemet melder at det er klar.bit has_imeibliver sat nr imei tvrsummen er regnet ud. 7.7 Brugervejledning Under opstart af pic og modem lyser comm error led'en... nr den slukker, s er systemet oppe at kre. Efter opstart, lyser comm error lampen hvis der kommer en error fra modemet. Temperaturen i kedelen vises p displayet, og opdateres 1 gang i sekundet. 8 Software dokumentation for Server software 8.1 Beskrivelse Serveren i dette projekt skulle ikke vre et vrktj som vi plejer, men nrmere et bindeled mellem databasen og flisfyret, som s for en god ordens skyld kan skrive noget data i et logvindue s man kan se hvad der sker. Serveren er rimelig simpel opbygget, der er en seriel wrapper til at tage sig af det alt til det serielle (genbrugt fra tidligere projekt), en Server-Settings fil til at holde det data brugeren skal kunne ndre. En container fil til at holde de klasser og variabler jeg skulle bruge rundt omkring i projektet, og en trd der str og kalder alle de ndvendige funktionen, hvis der er brug for dem, trden ligger i CFlisfyrDlg som er min hovedklasse. 8.2 Brugervejledning Nr Serren AB starter deres serversoftware har de 3 valgmuligheder, fordelt p 2 knapper: Start: Denne knap starter med at tjekke om det er ndvendigt at sende en pinkode til modemet, hvis det er det bliver den sendt og vi venter p modemet er klar, hvorefter vi fortstter start fasen. Hvis ikke det er ndvendigt med en pinkode hopper vi direkte til start fasen. I startfasen starter vi med at lse i databasen hvad serverens eget telefon nummer er, skriver det p skrmen og starter main trden som ser efter data p den serielle port, lser i databasen om der skal sendes config sms er osv. Close: Bruges til at lukke programmet pnt ned. Ved at lukke seriel og database connection og stopper main lkken. Server-Settings.ini er en fil der skal ligge i rod mappen til server softwaren, hvor man kan ndre host, database, user, password for databasen, og vlge hvilken COM-port programmet skal bruge. 8.3 Funktioner  OnInitDialog: I denne standard oprettede funktion vlger jeg at kalde StartSerial() og DBConnect, samt stte min sms counter til 0. AppendText: Da jeg ofte havde brug for at tage den tekst der var i log vinduet og tilfje en ny line og noget nyt tekst valgte jeg at lave en funktion jeg kunne kalde med den streng der skulle tilfjes i den nye linje under teksten. Da jeg alligevel har fat i alt tekst der skrives her bliver der ogs sat et tidsstempel p s det er til at se hvornr der sidst kom noget ind. Her hndterer jeg ogs autoscroll, da det normalt reagere p enter fra brugeren. CheckAcknowledges: Denne funktion bruges til at tjekke op p om der er get over 5 minutter siden vi sendte konfigurations sms en ud og der ikke er kommet svar. Frst ser vi om der er get 300 sekunder eller derover, hvis der er det tjekkes der for om der er sendt 1 retry sms ud. I tilfldet at der er sendt 1 retry sms ud vil commerror p installationen blive sat til true i databasen, hvilket resultere i installationen vil st under critical p web siden. Hvis der ikke er blevet sendt en retry sms, vil der blive sendt en og counteren tlles op, samt der vil i log vinduet blive skrevet  Retry send config to <TLFNR> . DBConnect: I denne funktion indlser jeg data fra Server-Settings filen og opretter forbindelse til databasen. DBReadCommands: Denne funktion gr ind i databasen og ser i command, hvis den stder p en linje hvor der ikke er sat nogen executed tid p returnere den id, commandid og installationid til en data container til senere brug. DBReadPhone: Denne funktion bliver kaldt med et installationsid for at kunne hente det rigtige telefon nummer, imei nr, update rate og id p installationen, og returnere det til en data container klasse. Hvis der bliver sendt et 0 med som installations id vlger den at hente hele listen frem, da de s er tegn p vi skal sende en config sms til alle installationer. DeleteSms: Denne funktion kaldes nr vi lukker serveren, og nr vi har modtaget et fastlagt antal sms er, den sender en  at+cmgd=1,3 kommando ud til modemmet for at slette alle lste, sendte og usendte sms er. HandleAcknowledge: Hvis vi modtager en  conf ok besked kalder vi denne funktion med afsenderens telefonnummer, derefter leder vi vores liste igennem efter frste forekomst af dette nummer, som vi s sletter fra listen. keepaliveandread: Vi havde skrevet i kravspecifikationen at serveren skulle hente sit eget telefon nummer i databasen, og at den ville lse i databasen hver 15. Minut for at holde sig i live. Det blev denne funktion oprettet til. Frst prver jeg at kre sql strengen  select name, value from config; , hvis det lykkedes smider jeg det hentede data i en container til senere brug. Hvis der af en eller anden rsag ikke kan fs forbindelse med databasen, lukker jeg forbindelsen og bner den igen. OnBnClickedClose: Frst sttes continueThread til 0, for at stoppe main trden i at kre videre, s bliver DeleteSms() kaldt for at rydde op. Efter en pause ser vi om der er bent for en seriel forbindelse, som vi s lukker hvis der er, og det samme sker med database forbindelsen. Til slut lukker serveren ned. OnBnClickedStart: Frst Skrives der i logvinduet at vi tjekker og indstter pinkode hvis ndvendigt, hvorefter vi kalder SetPin(), s flusher jeg data p den serielle port inden jeg fortstter. Variablen continueThread sttes til 1, keepaliveandread() kaldes, der skrives til logvinduet ( Server phonenr read from db:  + <phonenr>) og main trden bliver kaldt. readFrame: Er en lille worker funktion til at lse dataen p den serielle forbindelse, og putte det i en vector som derefter returneres. runthread: Her ser vi efter om continueThread er forskellig fra 0, hvis den er det krer vi MyMainThread(). MyMainThread: Dette er selve hoveddelen af programmet. Vi starter med at se om der er data i k p den serielle forbindelse. Hvis der er data i k, lser vi det ind og ser om det er et + i teksten, da det vil indikere at vi har fet en modem kommando ind. I tilfldet der er et plus splittes teksten op i command og tekst, samt stter en bool til true for at markere vi har en plus kommando til senere. Efter vi har splittet dataene, ser vi om teksten er  ok eller  error , da det er beskeder der kun skal sendes til logvinduet. Hvis plus bool en er true, ser vi om command indeholder  cmti eller  wind . Ved  cmti : starter vi med at lede efter et  , som kommer lige fr tallet der indikere hvilken sms der er kommet ind, nr vi har fundet det  , stter vi smscount til alt til hjre for det og fjerner  : fra enden. S generere vi AT kommandoen og sender den af sted, og efter en lille pause kalder vi ReadSms(). Ved  wind : denne del er sdan set mest lavet som en lille fail safe, hvis vi skulle vre s uheldige at f en ekstra besked ind fra modem startup. S hvis vi fr sdan en skriver vi til logvinduet  Wind modtaget og teksten som vi modtog. Ellers skriver vi den tekst vi har modtaget til logvinduet. Vi tjekker ogs op p om ResetSms er net til 20, i hvilket tilflde vi kalder DeleteSms() og skriver til logvinduet  Sms er slettet da vi nede grnsen . Der tjekkes igen om p om continueThread er positiv, hvis dette er tilfldet kalder vi DBReadCommands og splitter dataen op, samt omregner commandid til en int som vi kan tjekke op p, i tilfldet at int en er over 1 er det et tegn p vi skal bruge det installationsid der er i containeren, ellers skal der nemlig sendes en config sms ud til alle. Derefter kalder vi sendconfig(). Efter config er blevet sendt holder vi en pause, og kalder CheckAcknowledges(), efterfulgt af endnu en pause. Til sidst i main trden ser vi om der er get 900 sekunder eller derover, hvis dette er tilfldet kaldes keepaliveandread(). ReadSms: Nr vi nr ind i readsms funktionen er AT kommandoen, til at gre det, allerede blevet sendt, s vi starter med at holde en rimelig lang pause, for at sikre os hele sms ens indhold er i den serielle k. Derefter lser vi den og skriver den p skrmen samt sender den videre til SmsSplit(). SendConfig: Frst ses der efter om commandid er 1 eller noget andet, hvis den er 1 kaldes inst = DBReadPhone( 0 ); ellers kaldes inst = DBReadPhone(InstallationsID); som beskriver om det er en eller alle der skal have tilsendt en config sms. Derefter fyldes telefonnummer, imeinummer og updaterate i strenge. S udregner vi tvrsummen af imei nummeret, som vi bruger s modtagerne kan se det er en config sms til den. Derp kaldes SendSmsHead() med telefonnummeret. Som det nste opbygges smsdataene, med den udregnede tvrsum, servertelefonnummer og updaterate, som bruges nr vi kalder SendSmsData. Til sidst tjekkes op p om IDnr er forskellig fra 0, da vi s skal tilfje installationsid og telefonnummer til listen over hvem der har fet tilsendt en config sms. SendSmsData: Efter SendSmsHead har taget sig af delen med at taste at kommandoen og indstte nummeret bliver der herfra sendt den data af sted der er blevet vedlagt i en vector, nr alle dataene er sendt ud til modemmet med de sm pauser sendes kommandoen 0x1A svarende til CTRL+Z, hvilket indikere for modemmet at vi er frdige med at skrive sms en og den skal sendes af sted. Modemmets svar skrives derefter til logvinduet. SendSmsHead: Her starter jeg p at sende sms erne, frst bliver der skrevet en del af ATkommandoen til modemmet (at+cmgs= ), derefter sender jeg det telefonnummer som blev sendt med da funktionen blev kaldt, og det hele afsluttes s med at stte et  og et carriage return p, og holde en lille pause. SetPin: Her starter vi med at sende  at+cpin? kommandoen ud, og afventer svar. I tilfldet at modemmet nsten lige er blevet startet op vlger vi at sge efter  +cpin:  i dataen fra den serielle port, da der sendes noget data vi ikke skal bruge lige som modemmet starter. Hvis modemmet returnere  +cpin: sim pin lses der i Server-Settings filen og at kommandoen genereres ( at+cpin=2595 ). Dataen sendes af sted og vi starter en lykke der venter p at f  wind: 11 tilbage, hvilket indikere at modemmet er oppe og kre. Hvis modemmet returnere  +cpin: ready skriver vi  No pincode needed og hopper hurtigt videre. Der er selvflgelig ogs muligheden at vi fr noget uventet data tilbage, hvilket vil resultere i der i logvinduet vil st  Error in set pin part of the code . SmsSplit: Her modtages sms en som den sendes fra modemmet, s jeg starter med at hente afsenderens nummer ud, og fjerner derefter alt fr den egentlige besked. Frst tjekkes beskeden for om den er  conf ok , hvis dette er tilfldet gr vi videre til HandleAcknowledge med afsenderens nummer. Ellers sikre vi os at dataen er inden for de rammer vi har specificeret i vores interne sms protokol. Nr sms en er sluppet igennem dette tjek bliver den delt op ved flere gange at blive sendt igennem Splitter(). S bliver installationsid p afsender telefonnummeret fundet, og det medtagede data puttes i logtabellen. Og der skrives i logvinduet  Sms added to Log . Splitter: Splitteren har en reference til de data den skal arbejde med, den sger efter  : i teksten og returnere teksten til venstre for det, og stter den data referencen peger p til alt til hjre for  : . StartSerial: Jeg starter med at lse i Server-Settings filen hvilken COM-port der skal bruges, og bner derefter den serielle forbindelse med en fastlagt baud rate p 1200. De 1200 blev valgt for at holde det ens p server og pic. tversum : Denne funktion bruges nr vi skal sende en config sms til installationerne, da vi har valg at de ikke skal reagere p sms er hvis ikke den starter med tvrsummen af deres imei nr. s vi sender imei nummeret vi har fra databasen ned og ligger dem sammen tal for tal, og returnerer resultatet. writeFrame: Writeframe er lavet til at tage en vector med noget data, og skrive det til den serielle forbindelse, men nogle sm pauser s modemmet ikke bliver  forpustet , hvorefter det hele sluttes af med at sende en carriage return og endnu en lille pause. 9 Software Dokumentation for web-software 9.1 TNTnet Da vi har valgt en ret ukendt platform til at basere vores web-interface p, vil vi bruge lidt plads p at beskrive hvad det er og hvordan det virker. TNTnet er en http applikationsserver hvor at man programmerer sine sider og moduler i C++. C++ er er ikke just et sprog man normalt forbinder med udvikling af web-sider da man inden for dette felt har haft en prference for fortolkede sprog s som perl, php eller visual basic eksekveret under ASP containeren og senest har pyton og ruby meldt sig p banen. Dermed ikke sagt at (semi-) kompilerede sprog ikke har vrt brugt  fleks er Java ret udbredt i form af JSP & servlets. TNTnet bestr af flere forskellige komponenter. Frst og fremmest bestr det af en selvstndig http server som har til opgave at modtage foresprgsler fra brugeres klient (browser) og udlevere det nskede dokument, hvad enten det er i form at noget statisk indhold ssom et billede / html dokument, eller om det er en dynamisk side der skal eksekveres for at genere outputtet til brugeren. En dynamisk side kaldes i tntnet termer for et modul, og disse moduler ligger som kompileret c++ i dynamiske biblioteker (dynamic shared libraries). Disse libraries indlses i hukommelsen og fjernes igen alt efter behovet, dog er levetiden af en ikke lngere brugt klasse konfigurrbar. De indkomne foresprgsler bliver dispatched sledes at de hver isr bliver varetaget i en separat trd, dette er selvflgelig den mest effektive model, men medvirker samtidig at hvis man i sit modul skal vre sikker p at det kode man nu laver er trdsikkert. TNTnet serveren kan afvikles p en bred vifte af unix-lignende operativsystemer. Dernst er TNTnet ogs en samling software biblioteker og klasser som varetager mange af de funktioner man har brug for i forbindelse med udvikling til web, ssom parsning af input, generering af output, hndtering af HTTP headere, cookies og sessions. Dette bibliotek indeholder ogs de klasser og interfaces der er ndvendige for at lave et side-modul som http-serveren kan indlse og eksekvere. Desuden er der et database bibliotek som implementerer et database abstraktionslag, sledes at man ikke selv skal hndtere de enkelte database-API er ssom libmysqlclient(MySQL) eller libpq (PostgreSQL). Dette bibliotek implementerer ogs en ensartet tilgang til database metodikker ssom transactions og prepared statements. For at programmere til tntnet skal man implementere hver modul som en klasse der nedarver fra tntnet::Component. Men for at undg at man skal kende alle detaljerne omkring denne klasse og metoden til at registrere sine klasser med hoved applikationen , men ogs fordi at mange web-udviklere kan lide at blande deres HTML kode med deres eksekverbare kode. For at hndtere dette har tntnet udviklerne lavet et srligt format kaldet ecpp. En ecpp fil er basalt set en almindelig html fil, hvor at man opbygger sit modul med almindelige html koder, disse formaterings koder kaldes ogs for  tags . Denne html-tilstand kan brydes med nogle specielle tags som ecpp formatet specificere hvormed at man kan skifte mellem html og c++ kode tilstand, p samme mde som php og asp har deres egne specielle tags til disse tilstandskift. Dette illustreres bedst med et lille eksempel: Dette format kan selvsagt ikke fortolkes direkte af en c++ compiler da det ikke lngere er et standard c++ format. Derfor skal ecpp filen frst igennem en ecpp compiler. Denne compiler tager ecpp filen og ud fra indholdet genererer den en klasse der nedarver fra tntnet::EcppComponent, der igen er nedarvede fra tntnet::Component og dermed passer ind i tntnet serverens eksekveringsmnster. Outputtet fra ecpp compileren er standard C++ og kan dermed kompileres til objekt filer der kan linkes sammen til et shared library, der kan indlses af tntnet serveren. Relationen mellem .ecpp og .cpp filerne er den samme som relationen mellem .jsp og en servlet komponent for dem der er bekendte med denne type Java-udvikling.  EMBED Microsoft Visio Drawing  9.2 Design Opbygningen af web-delen er splittet ud p mange separate moduler for at gre kodningen af det enkelte modul simplere. Datatilgngeligheden er lavet sledes at alle medarbejdere hos Serren AB kan g p sitet og aflse de indsamlede data og kontakt informationer omkring de enkelte kunder. Hvis at det er ndvendigt at ndre informationer vedrrende en kunde eller kundens installationer skal man logge p systemet. Dette system har sit eget modul til brugergodkendelse og kan derfor ikke godkende brugere op imod andre systemer. Godkendelse op imod f.eks. en LDAP server kunne komme p tale p lngere sigt. De brugere der kan logge p systemet kan opdeles i 2 kategorier Almindelige administrations brugere. Brugere med denne profil kan oprette, ndre og slette brugere og deres tilhrende installationer. Udsende konfigurationer til n eller alle installationer. ndre serverkonfigurations parametre. Superbrugere, der ud over at kunne det samme som den almindelige bruger ogs kan administrere bruger accounts. Af sikkerhedshensyn br passwords aldrig sendes i klartekst og det gr de selvflgelig heller ikke her, da de alle kodes til en MD5 hash i browseren og da md5 er en envejs algoritme har hverken web-server eller databasen nogen id om hvordan at passwordet ser ud i klartekst-form. Hvis at man har brug for mere sikkerhed vil det vre et oplagt valg at kre web-applikationen via Secure Sockets Layer (SSL). Webapplikationer er forskellige fra traditionelle programmer, idet at dataene i princippet kun lever i de millisekunder at eksekveringen finder sted, kan der ikke gemmes tilstanddata internt i programmet. Derfor er den slags data ndt til at blive leveret fra request til request via browseren, som s sender dataene tilbage i form af request variable eller cookies. Login data br iflge vores mening ikke sendes frem og tilbage i denne form s derfor bruges der en metode kaldet session data, hvor at web-serveren genererer en unik id som sendes til browseren som en cookie og derved returneres ved hver efterflgende request. Nu kan session afhngige data gemmes i server softwaren i et dertil indrettet omrde som laver en mapning imellem session-id en og de gemte data. Levetiden af disse sessionsdata kan konfigureres i tntnet serveren, og er fra vores side sat til 10 minutter. Dette medvirker at en bruger automatisk logges af administrationsdelen efter 10 minutters inaktivitet. 9.3 Layout. Layoutet er lavet i et simpelt, nrmest klassisk design, med en navigationsmenu i venstre side og selve indholdet i hjre side. Da vi ikke har kendskab til Serren AB og ikke har haft adgang til brevpapir eller lignende materiale fra firmaet har vi ikke kunnet afkode firmaets grafiske profil og har vret ndsaget til selv at fastlgge farvevalg mm. For at ge lsbarheden er der til selve indholdet valgt sort tekst p hvid baggrund, imens menuen er hvid p rd baggrund som ligeledes str i skarp kontrast til hinanden. Vi har valgt at bruge en almindelig serif font til indholdet, p nr teksten i temperatur grafen hvor at vi bruger billed-generatorens standard font. Al html koden er lavet sledes at det opfylder html 4.01 transitional standarden, og kan succesfuldt valideres med www konsortiets html valideringsmaskine ( HYPERLINK "http://validator.w3.org/"http://validator.w3.org/). For at vre sikker p resultatet er det desuden blevet afprvet i en rkke forskellige browsere: Mozilla Firefox 2.0, Internet Explorer 6 & Opera 9.20 9.4 Software dokumentation Ecpp moduler Se bilag XX for en grafisk reprsentation af flowet imellem komponenterne. header.ecpp & footer.ecpp Disse to filer har til opgave at generere alt indledende og afsluttende html der skal bruges i alle de vrige moduler. Header opbygger hele menuen og ud fra om den aktuelle bruger er logget p genereres de relevante menupunkter til administrationen. Header srger ogs for at stte to http headers som tvinger browseren og eventuelle proxy-servere til altid at hente en ny udgave af et givent dokument fra web-serveren, sledes at vi ikke risikerer at brugeren ser  gamle data. Det er op til det enkelte modul at srge for at disse to bliver kaldt p det rigtige tidspunkt. index.ecpp Et modul som ikke har andre opgaver ud over at vise en velkomstside samt at prsentere menuen for brugerne. critical.ecpp Viser alle installationer som enten har en kommunikations-fejl eller hvor at en eller flere parametre i den seneste indkomne sms er inden for det kritiske omrde. Dette gres ved frst at finde alle installationer og itererer over denne liste hvor efter at seneste sms udtrkkes for den enkelte installation. Hvis at dataene er kritiske skrives de kritiske vrdier og der linkes til installationdetails.ecpp. customerlist.ecpp Laver en liste over alle kunder registreret i systemet. For hver kunde udskrives kontakt informationer og en liste over de tilhrende installationer. Hver installation linker til installationdetails.ecpp. installationdetails.ecpp Modtager et installations id som argument, og ud fra dette id vises frst alle de essentielle data vedrrende den pgldende installation, de fleste data vises direkte i deres tekstform men indikationen af hvorvidt at der er kommunikationsfejl vises vha. bullet grafik komponenten. Dernst vises en temperatur kurve via et billed-link til temperaturegraph komponenten. Nederst p siden udskrives alle de indsamlede logdata i omvendt kronologisk orden, med grafisk fremhvning af parametrene sfremt nogle af disse er i kritisk tilstand. temperaturegraph.ecpp Dette modul fr ligeledes et installations id med som argument og bruger dette id til at finde de seneste 20 temperaturmlinger fra den pgldende installation og plottes i en kurve. For at f dataene til at st i en hensigtsmssig rkkeflge nr at de skal behandles udtrkkes de frst i en indre subquery hvorefter at min ydre query bare har til opgave at vende rkkeflgen. Dataene plottes i et billede via et 3. parts bibliotek kaldet libgd, som er et general purpose grafik bibliotek. Med dette bibliotek kan man oprette et billede fra bunden af eller indlse et eksisterende billede i hukommelsen. Nr man har et billede i hukommelsen, kan man s bruge funktionskald til biblioteket for at f tegnet forskellige grafik elementer ssom prikker, streger, cirkler, skrive tekster osv. Nr billedet er frdigt beder man biblioteket om at generere et billede til et specifikt output format (gdlib kan generere til bl.a. jpeg, png og gif) og angive hvorvidt dataene skal skrives direkte til en fil eller til et omrde i hukommelsen. Temperaturegraph har 3 forskellige faser / stadier. I frste fase oprettes billedet som et blankt billede. Der skrives overskrift og der tegnes markerings linier for hver 10. temperaturgrad. I anden fase trkkes dataene ud fra databasen og hvert punkt plottes i form af en firkant p 3x3 pixels. Hvis det nuvrende punkt ikke er den frste, tegnes der en linie fra det forrige punkt til det nuvrende. Sidste fase er at generere et billede i png-format ud fra libgd s interne bitmap-buffer. Png billedet laves med en kompressionsgrad p 1, hvilket giver det bedste forhold imellem tiden det tager at lave billedet og billedets strrelse mlt i bytes. Billedet, der genereres til en ram-buffer, udskrives direkte til TNTnet s output stream. login.ecpp Dette modul virker p sin vis p samme mde som mange af de vrige komponenter i administrationsdelen i det at modulet har til opgave bde at generere en formular til indtastning af data men den skal ogs tage imod de indtastede data nr at disse indsendes og behandle dataene. Formularen bestr af felter til hhv. brugernavn og password. Nr brugeren trykker p submit knappen krypteres passwordet med en md5 hash algoritme og dataene sendes tilbage til login komponenten. Nr login-dataene modtages verificeres disse i databasen og hvis at de var valide sttes session data der beskriver brugeren og browseren omdirigeres til index.ecpp. logout.ecpp Dette script Ryder alle sessionsdata omkring brugeren s brugeren fremstr som vrende ikke-godkendt og bliver omdirigeret til index komponenten. adm_customer_list.ecpp Dette er den frste komponent i administrationsdelen. I denne komponent, ligesom alle de vrige administrationskomponenter, undersges frst de tilhrende sessionsdata for at undersge om browseren der foresprger siden har en gyldig login-session. Hvis ikke omdirigeres til index. Dernst trkkes en liste af kunder fra databasen og udskriver disse til brugeren. For hver kunde laves der link til hhv. formularen til ndring af kunde data og en liste over kundens installationer. adm_customer_edit.ecpp Denne side bruges bde til at oprette nye kunder og til at ndre i eksisterende kunders stam-data. Om der skal laves det ene eller andet afgres ud fra det kundeid der overfres sammen med det frste kald til siden. Hvis id et er  1 s er det en ny kunde, ellers er det en eksisterende. Der opbygges en formular til indtastning af felterne navn, adresse, telefonnummer og kontakt person. Inden dataene indsendes valideres de med et JavaScript der undersger om kundenavn er p 3 karakterer eller mere. Grunden til at der ikke krves flere data end dette ene felt er at vi gr ud fra at disse stamdata ndvendigvis ogs m optrde andre steder i Serren AB s systemer, f.eks. i deres bogholderi-system. Hvis at det er en eksisterende kunde vises en knap til at slette kunden via adm_customer_delete, men brugeren sprges frst for at undg fejl-sletninger. Nr dataene bliver indsendt kigges frst p om det er en ny eller eksisterende kunde og fra dette enten oprettes en ny kunde profil i databasen eller den eksisterende kunden tilrettes med de indsendte data. Sfremt det var en nyoprettelse omdirigeres der til kunde-oversigten. adm_customer_delete.ecpp Denne komponent fr et kunde id og sletter den tilhrende kunde-profil i databasen og der omdirigeres til kunde oversigten. adm_installation_list.ecpp Denne komponent fr overfrt et kunde id via request URL en. Ud fra denne kunde id findes alle kundens installationer og disse vises i en liste hvorfra der linkes over til adm_installation_edit.ecpp. adm_installation_edit.ecpp Dette er en kombineret oprettelses-/ndringsformular og databehandler p samme mde som adm_customer_edit komponenten. De relevante data trkkes ud fra databasen og vises i formularen (medmindre at det er en nyoprettelse). Nr at dataene skal sendes tilbage til serveren via formularen verificeres de i et JavaScript ud fra flgende kriterier: Den generelle beskrivelse af installationen skal vre p 3 karakterer eller mere. Telefonnummeret skal vre et tal og hvis det ikke er 8 cifre langt sprges brugeren om det er det korrekte nummer. IMEI nummeret skal vre et tal og skal vre p 15 cifre. Opdateringsintervallet skal vre et tal og skal vre mellem 5 og 250. Ogs ved dette modul er der mulighed for at slette en installation via en knap (udfres i adm_installation_delete) Hvis det var en nyoprettelse omdirigeres til adm_installation_list komponenten. adm_installation_delete.ecpp Sletter den angivne installation fra databasen og omdirigerer til adm_installation_list.ecpp. adm_user_list.ecpp Frst kigges p om sessionsdataene beskriver en bruger der er logget ind med privilegier der omfatter brugeradministration. Dette tjek udfres ligeledes i adm_user_edit.ecpp og adm_user_delete.ecpp. Derefter vises en liste med alle brugere oprettet i systemet, og for hver bruger linkes til adm_user_edit.ecpp. adm_user_edit.ecpp Dette er en multi-funktions komponent p samme mde som adm_customer_edit.ecpp og adm_installation_edit.ecpp. Hvis der skal vises data for en eksisterende bruger hentes disse fra databasen  dog ikke passwordet  og vises i formularen. Inden formular-dataene sendes valideres de ud fra flgende kriterier Brugernavn m ikke vre blankt Hvis det er en ny bruger, m frste password felt ikke vre tomt. Hvis frste password felt indeholder en tekst-streng skal andet felt indeholde den samme streng  dette er for at undg et fejltastet password. Hvis dataene gr igennem valideringen og der er data i frste password felt, s krypteres disse med MD5 og andet password felt ryddes. adm_user_delete.ecpp Sletter den angivne bruger og omdirigerer til adm_user_list komponenten. adm_send_config.ecpp Denne side har to formularer der giver mulighed for at udsende konfigurationssms er til henholdsvis alle tilkoblede installationer eller en enkelt installation som brugeren vlger i en drop-down boks  den sidstnvne drop-down boks genereres i funktionen createInstallationSelector() i starten af filen. I bunden af siden vises hele kommando-historikken fra command tabellen sledes at brugeren kan se hvornr der sidst er udsendt sms er og hvilke der er i k til afsendelse. Begge formularer indsender dataene til adm_send_config.ecpp og i begge tilflde vil dataene blive indsat som en ny rkke i command tabellen. adm_server_config.ecpp I dette modul har brugeren mulighed for at ndre de server parameter der er almindeligt tilgngelige  hvilket p nuvrende tidspunkt kun er serverens telefonnummer. bullet.ecpp Dette er en billed-generator der genererer den farvede kommunikations indikator lampe der bruges i installationdetails komponenten. Komponenten modtager den nskede farve og strrelse og genererer et billede vha. libgd og returneres som et PNG billede. template.ecpp og adm_template.ecpp Disse to filer er skabeloner der kan bruges sfremt det skulle blive ndvendige at oprette enten en almindelig/offentlig komponent eller en administrations komponent. vrige filer dynamic/common.h Denne fil er hjemsted for nogle generelle udvidelser til C++ std::string da denne klasse fra  naturens side ikke er udstyret med funktioner til at borttrimme mellemrum og andre fyld-tegn. bool iswhitespace(unsigned char ch)  angiver hvorvidt en given char er et blanktegn (whitespace) string ltrim(string input)  fjerner alle blanktegn fra starten af strengen. string rtrim(string input)  fjerner alle blanktegn fra slutningen af strengen. string trim(string input)  fjerner blanktegn fra starten og slutningen af strengen. string nl2br(string input)  erstatter alle linieskift i en tekst streng med html tag et for et tvunget linieskift (<br>). Dette gr at tekststrenge der i databasen ligger som en streng fordelt p flere linier bliver vist som flere linier i browser vinduet. static/trim.js Indeholder en JavaScript implementation af trim() som fjerner blanktegn fra starten og slutningen af filen. static/md5.js Indeholder en JavaScript implementation af MD5 algoritmen. Denne implementation er kodet af Paul Johnston og er hjemmehrende p http://pajhome.org.uk/crypt/md5 static/stylesheet.css Layoutet p siden er defineret i dette Cascading StyleSheet (CSS) dokument. dynamic/gd-cpp/* Her ligger en C++ wrapper som indkapsler grafikbiblioteket libgd, som er lavet i rent C, i nogle relevante C++ klasser. Disse filer er lavet af Kevin Shepherd med en del input fra Torben. 9.5 Web klient bruger grnseflade Nr websiden bnes ser man ude til venstre en menu med punkterne:  Index ,  Critical systems ,  Customers & installations og  Login . Index: Denne knap bringer dig til forsiden med det knne billede. Critical systems: P denne side kan du se de systemer hvor den sidste opdatering indeholdte en kritisk tilstand. Hvis der er en installation med en kritisk tilstand kan du klikke p navnet og derved ryge ind p installationens log side. Logsiden indeholder alle de opsamlede data, samt en graf over temperaturen. Customers & installations: Denne side viser alle kunder, og under info om dem kan man se hvilke installationer de har, og komme til deres log sider ved at klikke p deres navn. Login: Bruges som en hver anden login side, denne giver adgang til vore administrations del af web klienten. Nr administrations delen startes har vi stadig de 4 muligheder fra fr, dog med logout i stedet for login. Vi fr 4 nye valgmuligheder:  Customer admin ,  Send configurations ,  Server configuration og  User admin .  User admin er dog kun aktiv hvis man er logget ind med en bruger der er bruger administrator. Customer admin: P denne side er der et link til  Create new customer og ud for hver kunde er der link til  edit customer og  manage installations . Alle 3 links sender en side hvor man kan gre hvad linket siger, create, edit og manage. Send configurations: Her kan man i en dropdown boks vlge den installation man vil sende en config sms til, ved at klikke p knappen under dropdown boksen. Hvis det ikke er hvad man nsker, er der en knap til at sende konfigurationer til alle. Server configuration: Her kan indtastes et nyt telefon nummer og trykkes p knappen  send foresprgsel for at skifte serverens telefon nummer i databasen. User Admin: Som tidligere sagt, er dette kun mulig hvis man er logget ind som bruger administrator. Her har man muligheden for at trykke p  Create new user og lave en ny bruger, eller trykke p et brugernavn og komme til en edit user side. Logout: Gr prcis hvad den siger, logger brugeren ud uden advarsel. 10 Idriftsttelse af systemet Her er nogle noter omkring hvilke skridt som Serren AB skal foretage i forbindelse med systemet, men er ogs for at give Serren AB s systemadministrator et overblik over de installerede systemer. Serverprogrammet er skrevet til i C++/MFC og skal derfor afvikles p en pc/server med en Windows variant installeret (2000 eller XP). Denne skal desuden have en seriel port til rdighed for at kunne kommunikere med GSM-modemet. Da systemet netop bruger et GSM modem til afsendelse og modtagelse af data skal serveren naturligvis stilles sledes at der er god dkning fra GSM netvrket. Denne Windows server skal ligeledes tilkobles det samme local area network (LAN) som den anden serverkomponent, Linux-serveren, befinder sig p. For at kunne tilg databasen skal der vre installeret en PostgreSQL ODBC driver. Server softwaren er udviklet p basis af version 08.02.05. For enkelthedens skyld leverer vi en pre-konfigureret Linux server med al den ndvendige software installeret, men denne kan selvflgelig integreres med anden Linux-installation hvis behovet opstr. Denne server skal tilkobles det samme LAN som Windows serveren. Blandt de mange forskellige Linux-distributioner der er p markedet har vi valgt en Debian v4.0, da denne stter sikkerhed og stabilitet i hjsdet og derfor er fremragende til serverbrug. P serveren er der installeret en PostgreSQL server v8.1.10 der kun tillader SSL-forbindelser fra netvrket. Database-superbrugeren kan kun logge p via lokale unix-sockets. For at drive web-interfacet er der installeret en tntserver samt de ndvendige libraries og databasemoduler (libgd + tntdb-pgsql). 11 Accepttest Specifikation Vi vil herunder have en accepttest specifikation, som henviser til kravspecifikationen og forklare hvordan de forskellige punkter skal testes. Henvisningerne er underpunkterne til kravspecifikationen 3.2 (Se bilag xx): Overordnet Testes ved at se om der er et picboard med addon-kort og gpsmodem til. Testes ved at starte server softwaren p computeren og se om det starter. Testes ved at g ind p websiden og logge ind og se om der kommer admin kontrol sider frem. Testes ved at se om der er en database installeret p Linux serveren. Overvgnings enhed Testes ved at aktivere de 4 switches og se om de tilkoblede leds skifter status. Testes ved at dreje potmetret i bund og derefter dreje det mod top, og aflse temperatur p LCD displayet. Testes ved at se p sammenkoblingen og konstatere det er et RS-232 interface. Udfr test 2.d.i, 2.d.ii, 2.d.iii og 2.d.iv Testes ved at afvente det antal minutter sidste config sms fra serveren satte, og se om der bliver sendt en sms. Testes ved at skifte tilstand p en af de kritiske kontakter (Power failure, Flammedetector, Fremfringsfejl) Testes ved at pille simkort ud af modemet. Og afvente hvad der sker. Testes ved at se i installations loggen i databasen om de nye sms er kommer i rkkeflge. Testes ved at sende en config sms med og se om serveren fr conf ok tilbage, og om der efter det valgte tidsrum kommer en update sms. Testes sammen med e) og ses ved at se p logvinduet p serveren. SMS Server-software Testes ved at se p sammenkoblingen og konstatere det er et RS-232 interface. Testes ved at aktivere en kritisk tilstand p fyret, og se om serveren lser smsen der bliver sendt til modemet og skriver det i logvinduet. Testes ved at se i installationsloggen fra den afsendende installation om smsen er blevet dekodet og tilfjet. Testes sammen med test 2.b Testes ved at stte web interfacet til at sende en config sms til 1 og alle personer, og se om de bliver sendt til udstyret. Testes ved der ikke skrives conf ok p en af config smserne og venter i 5 min for at se den blive sendt igen. Testes ved at vente yderligere 5 minutter, og derefter tjekke critical listen p web interfacet, hvor udstyret skal st med comm. error. Testes ved at ndre serverens telefonnummer via web interfacet og vente p serveren igen kre keepaliveandread() og lse det nye telefonnummer i logvinduet. Testes ved at vente 15min fra 2.e og se om den skriver telefonnummeret igen. Web-interface Udfr test 4.a.i, 4.a.ii og 4.a.iii Testes ved at bne  Critical systems siden og vente 2 min og se om den opdatere. Testes ved at trykke p  Customers & installations og se om der er de samme kunder som i databasen. Testes ved at trykke p en installation under en kunde og aflse dataene p skrmen. Testes ved at trykke p login og logge ind med  admin  admin Testes ved at trykke p  Customer admin og derefter  Create new customer , og oprette en test kunde, og se i databasen om den nye kunde er der. Testes ved ndre f.eks. adressen p test kunden, og se i databasen om det er blevet ndret. Testes ved slet test kunden og se om den bliver fjernet i databasen. Udfr test 4.4.a og 4.4.b Testes ved at trykke p  Send configurations og sende en config sms til en af installationerne Testes ved at trykke p  Send configurations og sende en config sms til alle installationerne. Testes ved at trykke p  Server configuration og ndre server phone nr: og derefter tjekke op p om det blev ndret i databasen. Testes under  User admin p samme mde som 4.a.iii med en test bruger i stedet. 12 Konklusion Forlbet i dette projekt er stort set get smertefrit. Til at starte med, kom vi vores forrige projekt i hu, og srgede for at begrnse vores opgave til et niveau vi var sikre p at vi nogenlunde ville kunne overskue. Under udformningen af kravspecifikationen havde vi nogle problemer med at f identificeret hvordan dataene til pic microcontrolleren skulle aflses, og mtte ogs ty til hjlp hos flere forskellige personer  da dette indebar en hardware viden som vi desvrre ikke selv har. Apropos hardware s m vi indrmme at omrdet omkring design og fremstilling af elektroniske kredslb p ingen mde er blandt vores strke sider. Dette har taget tid og har voldt mange frustrationer. Implementationen af softwaren er get godt, og har haft en rimelig blanding af bde kendte og nye, uudforskede komponenter. Dette har medvirket at vi alle har hstet nye erfaringer mht. til design og udvikling af software p de forskellige platforme. Tilfjelsen af en ekstra komponent i form af et GSM modem har vret ganske interessant og det har vret spndende at finde ud af hvordan det skulle bruges, og har ogs givet anledning til fremstilling af diverse kabler og debug vrktjer. Gruppearbejdet er get godt, men da dette nu er det 5. projekt hvor vi arbejder sammen i denne gruppestruktur kender vi selvflgelig hinandens styrker og svagheder. Dette medfrer at vi har vret gode til at supplere hinanden  og ved hvornr at vi skal lade hinanden vre i fred. Svendeprve rapport - Flisfyrovervgning Side  PAGE 34 af  NUMPAGES \*Arabic 34 Ecpp eksempel: <html> // starter i html tilstand <body> <{ //Nu er vi i C++ tilstand //her kan laves C++ kode }> //afslut c++ tilstand og g tilbage til html </body> </html> &(*FHJLz|~246VXZ\2468H jUj+UjUjIUjUjMUjUjoU0J8jUUEH J L z | ~ $
566 &
567 (
568
569
570
571
572
573
574
575 0 2 4 6 
576 @ B D F $ & ( * ~
577  <>j Uj UjUjUjjUjUj6UjUjTU0J8UjUC>@Brtv246Z\^`PRTvxz|
578  ^`b|~HJLhjln "RTjnUjUj*Uj Uj Uj Uj Uj] Uj
579 U0J8jS
580 UUCTVtvxzPRTLNPLNPRJLNnprIjUjDUjUjbUjUjUjUjPUjU0J8UDIbJNPQQQR R"R$R&|L|R| hrDdFv@ʒܒʓzЖĘ<4`(LNP&JԡFz&0ΩĬ~ζΩζΜζζζmHsHPJ^J_HtHCJPJ^JaJ_HtHmH sH PJ^J_HtHCJPJ^J_HtHPJ^J_HtHPJnH_HtHmHsHmH sH  UjUjDZ
581 VU ^J_HtH=@رlֶ&һȽؽ"4f|d4Z`DpH^ Ĺ֮ğmH sH ^J_HtHOJQJPJnH^J_HtH^J_HtHOJQJ"CJ5^JaJ_HtH\OJQJPJnH_HtHPJnHaJ_HtHmH sH PJ^J_HtHPJ^J_HtH> d&(v<* hZ^V-*.GGRMTMMMMM,g.gxgzg|gggij@n2`<nfЧޭémH sH mH sH 0J80J8j&U UjԟUj 
582 VU jUmHsH Uj0PJ^J_HtHPJnH_HtH^J_HtHOJQJmH sH ^J_HtHOJQJ>ޭz~ X (*d@~8*,.F(\> N   
583 *
584 :
585 >
586  ^JOJQJ6] 0J9U0J90J90J9U^JmH sH KJZ6~
587 4 G A#
588 F A#
589 F A#
590 G A#
591 G A#
592 G A#
593 F A#
594 F A#
595 F A#
596 G A#
597 F A#
598 F A#
599 F A#
600 
601 & F ^]`<4 D ( @^z l xH A#
602 H A#
603 G A#
604 G A#
605 G A#
606 G A#
607 F A#
608 G A#
609 G A#
610 G A#
611 F A#
612 G A#
613 G A#
614 G A#
615 G A#
616 G A#
617 G A#
618 Ptvx\d(;;;;;;;
619 & F ^]`$ 8#
620 F A#
621 G A#
622 G A#
623 G A#
624 G A#
625 F A#
626 F A#
627 G A#
628 ($v "6%''$)++--N1P1d2f2
629 & F ^]`
630 & F ^]`$;
631 & F hh^h]`;f22j5L7999;;;<>>.@0@AA<C>CH
632 & Fdh ^]`<$
633 & F ^]`HHIbJNPQQ&R(RZRT6VV\\D\
634 & F ^]`$;;;
635 & F ^]`$;;;;
636 & F ^]`$D\\__`ccfffgggjhphh$G$$G$
637 & Fdh ^]`<$
638 & Fdh ^]`<$
639 & Fdh ^]`<$hhhiiijjjUP$G$1$$40; #44l44l$G$$G$1$$40; #44l44l$G$$G$1$$40; #44l44ljZj\jxjkkk:k*l0lrl|$G$$G$1$$40; #44l44l$G$$G$1$$40; #44l44l$G$
640 rltll~mmmnn4nUP$G$1$$40; #44l44l$G$$G$1$$40; #44l44l$G$$G$1$$40; #44l44l4noooooo:q<qP1$$40; #44l44l$G$$G$1$$40; #44l44l$G$$G$1$$40; #44l44l$G$<qFq*r,rBrss&ss}$G$$G$1$$40; #44l44l$G$$G$1$$40; #44l44l$G$$G$sss tttttuu$G$$G$1$$40; #44l44l$G$$G$1$$40; #44l44l uuuvv8vvvvUP$G$1$$40; #44l44l$G$$G$1$$40; #44l44l$G$$G$1$$40; #44l44lvZw\wxwxx6xxxP1$$40; #44l44l$G$$G$1$$40; #44l44l$G$$G$1$$40; #44l44l$G$xxLyNylyHzJzLzjzL|R|||w$G$$G$1$$40; #44l44l$G$$G$1$$40; #44l44l$G$$G$ |||}},}^~`~t~UP$G$1$$40; #44l44l$G$$G$1$$40; #44l44l$G$$G$1$$40; #44l44lt~ "@vxz>D|$G$$G$1$$40; #44l44l$G$$G$1$$40; #44l44l$G$
641 UP$G$1$$40; #44l44l$G$$G$1$$40; #44l44l$G$$G$1$$40; #44l44lRTP1$$40; #44l44l$G$$G$1$$40; #44l44l$G$$G$1$$40; #44l44l$G$TVrhrև؇dfhh
642 & F ^]`$1$$40; #44l44l$G$$G$1$$40; #44l44l$G$$G$ tv"$NFZz|Th֍F
643 & F ^]`$Fv@ʒܒʓzЖĘ<4`(L;
644 & F ^]`;
645 & F hh^h]`;;;;;;
646 & F ^]`&JԡFz&0ΩĬ~@ ;8^8]` ;8^8]`;
647 & F ^]`;
648 & F hh^h]`; p8^8]`@رlֶ&һ; 8 ;8^8]`;
649 & F ^]`;
650 & F hh^h]`Ƚؽid_Q$G$Q$G$1$$40%47474747Q$G$Q$G$1$$40%47474747Q$G$Q$G$
651 & Fdh ^]`<$ "$4fh|UPQ$G$1$$40%47474747Q$G$Q$G$1$$40%47474747Q$G$Q$G$1$$40%47474747|dsniQ$G$Q$G$1$$40%47474747Q$G$Q$G$
652 & F ^]`1$$40%47474747Q$G$
653 4Z\`UPQ$G$1$$40%47474747Q$G$Q$G$1$$40%47474747Q$G$Q$G$1$$40%47474747`DFP1$$40%47474747Q$G$Q$G$1$$40%47474747Q$G$Q$G$1$$40%47474747Q$G$pH^}Q$G$Q$G$1$$40%47474747Q$G$Q$G$1$$40%47474747Q$G$Q$G$^` "dUPQ$G$1$$40%47474747Q$G$Q$G$1$$40%47474747Q$G$Q$G$1$$40%47474747&P1$$40%47474747Q$G$Q$G$1$$40%47474747Q$G$Q$G$1$$40%47474747Q$G$(*v<>}Q$G$Q$G$1$$40%47474747Q$G$Q$G$1$$40%47474747Q$G$Q$G$* UPQ$G$1$$40%47474747Q$G$Q$G$1$$40%47474747Q$G$Q$G$1$$40%47474747 hjZ\P1$$40%47474747Q$G$Q$G$1$$40%47474747Q$G$Q$G$1$$40%47474747Q$G$\^V:d&@R
654 & Fdh ^]`<$
655 & Fdh ^]`<$
656 & F ^]`$;;;
657 & F ^]`@ xz|~<b 6"RRRRR
658 & Fdh ^]`<$RLt*\0HDZ8B@BP0RRRRRRRRR0   
659 "
660 &`|  ""#&&RRRRRRR&''t))++-*.@.n/p/,3.3:$;&;B>@@
661 & Fdh ^]`<$
662 & F ^]`$RRR@:DDGFGGGGGGILPMRMMMMtRvRR|S
663 & F ^]`
664 & F ^]`$$a$$a$|ST|TTUUXX```ajcdeehh
665 & Fdh ^]`<$
666 & F ^]`
667 & F ^]`hi6iijmnnpoorr|ttwxy| RRRRRR
668 & F ^]`<$
669 & Fdh ^]`<$J0@n2`ޖ<nf,b RRRRRRR Z<Ч2p"LޭRR
670 & F ^]`RRR
671 & F
672 ^]`ڲTlf:z^bXtRR
673 & F ^]`R
674 & F ^]`<$RRRtzZj`
675 & F ^]`
676 & F ^]`
677 & F ^]`
678 & Fdh ^]`<$RRHJxzh
679 & F ^]`$
680 & F ^]`$
681 & F ^]`h~ X s; hh^h]`;
682 & F hh^h]`; 8^]`;
683 & F hh^h]` h^h]`;
684 & F ^]`
685 & F hh^h]` (*d@~ybO; 8^]`;
686 & F 8^]`;
687 & F 8^]`;
688 & F 8^]`;
689 & F 8^]`;
690 & F hh^h]`; hh^h]`;
691 & F hh^h]`8lY; 88^8]`;
692 & F 88^8]`; h^]`;
693 & F ^]`
694 & F hh^h]`;
695 & F hh^h]`; hh^h]`;
696 & F hh^h]`
697 *,.F(;
698 & F ^]`
699 & F hh^h]`;
700 & F 88^8]`;
701 & F ^]`; h^]`(\
702 & F ^]`$;
703 & F ^]`;
704 & F ^]` "$z|> N   
705 *
706 :
707 <
708 >
709 @
710 PO2. A!"#$2P1h3P(205. A!"#$2P1h3P(2(2 05. A!"#$2P1h3P(20 0Visio (TM) Drawing
711 AcHiahR8 !fffMMM333IyFwͩ|oݡHxUJ:DT5I[1hXT@.
712 /UbW##_b0zGz? L\&B1r&b%U& !oM $d ) P?;H$,Q,
713 & #&J , 5& ?D#//?M?\.? CA 
714 ~,,,'q/%P6$Y6 (}k?l)?"U   U%A3# o >S@#B:_a_ReUUeUeUeUeUeUePONODN`_ReUUeUeUeUeUUeUeUU/b SR%;5OM%>Qiq;RRRRgg Rqh>Qj /A^F' %p3:|bFpT#| |
715 | vi?=Os<34x,,,/RQmeY q]U@QvovL__q____OO_OOTYA`,X@L&/d2?ɖQ3YҨsUΡ̦xΟ@$"Jʼ& ͥ*@d2A??ϟJ[D! f:45ŧ5ŷ5@ 0 0D$#  
716  Q#b ;
717 Chߠ
718 Y ,00JDNrq(NN㊮NN(NN&&uc7D)KXXFNvvK&KD#KD#-D#NHGDB$KzzDKq%iz4
719 }1T\,Eu9fdhT,W'0΢Uܮ5E0 fI$[OmOC%ߑE##HZߪ  E,3Y&4JY&5&6<s9FaBaj+h8 8?&!3"DE=T;ܯ?w?@??8&t,'5UR^LY  Y7akKt//BJhuizpsĝa.1DTcAcpvOpM KKuhdX(G:iX IT[EEh.D#E,ah-50zG#zpvb
720 aHGmc/QP K{\Hp_ hd? pA?%?7?I?[;<t5j!
721 OO*FQ///F/K]SEn%cO@OOlE$g\Ey[EO_!_3_E_W_i_{_____VB506,HM.`e^MIa,>PbQaƒ2q? a%oXIoQfdoooSEX_O-OF6EDpE66Oҟm2Hg;pbӏ_
722 ,X7R[,<WbӤ69sc Rb"a2T^<C="ACoor<G5C+=Oaﲶ2TIR`zI6;]ї@<ұwr1r / Ma&3@MZ)gQ#zƎҨVB;Z`Яܯ@u[/lsx0aq&Iy$6ḢUxzb?btb}m8~{FwƿK $ub{+ߴPXEU 5GPH]!\$j-OOOO>asuYq3~Q?WTf<6S$F_x<?5z$P !1w7dR D6c 6^5O0'^8ExEE@($'n/jR-VfuOOdo{o_0 }G9kO5oZk__((]Tq?Q$6H/~ ? qBHE?d+|=P<#qjb(Ogoyo_:_L_^_'/ӸooS;ao-W,'H=xWWCN/r?=*C8Qҵ2%N7MH:R<Wb`lmXO#o|O2u!` EܕsD"Iw_#_k_}X:Loo$6HZԁ-CC U)2b@bGqb\n¿Կڏ.@"ҡnπϒϤ϶"4FXj|v !;rWbGV -?QcuW -?Qcuv2 *<N!sGC
723 .@c Yk} //1/C/U/g/y/y"#Р///G.bLb/ ??-???Q?c?u????????OO*O<ONO`OrOOOOOOOO$ͩ_)_;_M1rn_________o"o4oGoYoko}oooooooo 1CUg)%&{p?b=~Eb -?QcuKԏ
724 .@RdvଟП⟏%'((bdk\wsb\nȯگ"5GYk}ſ׿ 1CUJqZ)砂}Ϗϡj0Aq"4@FXj|ߎ߲*<N`r)*|+MkbjbQcu*<N`r&8yy,-_qqb<{ub/"/4/F/X/j/|//////// ??1?C?U?g?y????yy.{??>@N;OMO_OqOOOOOOOos __/_A_S_e_w_______q=8\1 oqN=b;bh1oU/0Mo_oqo:-b@bG3bDbפooooojm yt 2DV rb ;0} 1CxUgd3<Ib娏8i2Џȡ1 L-?Qcuϟ
725 .@RdvЯ⯀dXw7:g4="\nT9/2 ſ׿ 1CUgϴsϬ*<N`r߄ߖߨ U56 H@RdvA$6HZl~<dFw+&C{Orq_##Yh(v'
726 Rdv_H ////A/S/e/w///d
727 o:1/(7CHx/?!?}n|E?W?i?{???/A? ???`T/L?Od'Am[YE
728 +A GkOyJUO@AQOOEY3qO贁Nk*_(Bv__ooE1o'2q7Mo_oqor6Uj(DbH{7_V03WX@SO>a@HkDvH74jooږ YDo~OOOODVhzxC(>aRM7?S?\.?pPA,6{٣*٢bbbl~ 86HZl~ÿƏ؏ B Vdvπqџ YD$6HZl~ P Э!#5GYj2225Gҿ,>Pq ϘϳϏX!"0BXj>aSzUFDfP h>$/T 6D
729 UUF~@x<?F
730 BP(?43P? J+1:{
731 bj/b::I!H? ?^  0$1!`Document,daW aY rS a[ ,pS oo lS ,sO cPn!ri*U"ek"oO to !W,b] s cY ]fw ow"ae X!!fK rQ ^!iK n(#L!e} sN",jK !ee !!sK"i(!bO !1!-,S xY 6E4g",IG0OY 90Hi2|e^ {5kU o??)!)!2)%$`S F.| <`!.kbs{kWbsFzFzkF ABB
732 HOZB K?$6߈kdz:<
733 Drag thuesapWonodwipeK.a0r)Utd upU:N:b~߿\.??a߿,h??4DH D
734   =hj8>T ]]9 AUF~? ?F\.?QR6 
735 ijYA >HTIA zz
736 Illu}`l?LJTTlvu
737 Vb3%<& <!J
738 |>bX#S?P6 "rl*5"7b%HX"rbk"%TX"*31=&S"rU5 W@S"և3145 `?Copy0igTtk(c)k20@3kM0c0oKs0f21r0#Aa0i0n.k Al>@ 8sBBe@e0vT@d6@3 /`V0s_SFB6@cTm_!#5B0`S"7- iC0r5K9M3 7?:6" b4$J<&P%&?Lh7]L@ls4>Uh 3 @)W120D,@S"JSqSF?< %3"M{8Q o.o3=`oe5ekaoqcEA3o(oc@lHzs%„'&/@l/B95#<& QOuhSqouq?@brA
739 L`@dV#%tdTAQeE9 G]pv@OS?l lA]
740 ]hhC"Q6 @b#e7b 3lqX(b\U‰Y`!S"g?**2VQ<! -S"MR6HScu~5⢯Ms'2cy51+` 0@@heҿ+RT Mll~2!!IJ2Jl15P>  PB`1s03 B`QS"1~5AAWPP`iGDu*JȲ5ABaQ2` RTBocTBQ$H6!e
741 |ȿH~5A"
742 MJk?GZG#iC %:&BpXB/A/@bb 5BeYFuc-gZc5ߜֈ{8O&@PGR_ Q);M_>m w =_H'+Zu׾ _@tBeQBZ&Fi?w/#<][n?
743 $\]ZaĬ@OD?q`SB}F<@lPD[ op?+$J% UFDfP h>$/T 6D
744 UUF~@x<?F
745 BP(?43P? J+1:{
746 bj/b::I!H? ?  0$`pProcesS ,funO tuiM nW taS UkW Bm"iO ,UlM wO hm ra X!#,dm l!,pK,jM i] e*K ,m"sM"i"d%Ab[ z!!T#-Sc uxW 6$gm"uI0OW 90#2$|e^ d55kUo9?K?B)!)!2)%$` /| <`!kbs{kbs>F4Fzk%>F >A2
747 OBu D(2OVhz~ Drag thuesapWonodwipe+.cs*Wfuci: oObl-=l)cka!dh-1
748 H D  # =ih#4>T#3 A5AUF~? ?F\.?P6 Tuv` ??uJ
749 bkrr r.AšJYMJU5 !LK@#I;!@$5 `?CopyrigTt (c])r 20~ 3r uMj ch osb Ifp"a!rd !ap ib n r AUl h(s"e eh v d/`Vj s_SFBcTm!#5N~"06!5' #%0 5K)M6G# G'? *lW btrr&/Lh=L@l>61Uhh7PY!"  *#"JT3FFFr\F
750 BM)(aOAO#"A5N_IQEEFR_Ov[R52O;EBrA
751 RS#")(le
752 @j 7heGoj@8=ook8too q(b5@MCW?0v0v H"SFAr@K\/SqMRB_<NhCFi{z,%)t@@r uGj5q5{#5"C#"mZon+EBT MKK,"!"2JK\3;%Vq>#  @!2`a!sp s.2`A#"2,%q1BXVqajGDu*5AଚbA"` R"o͒c"4ڑAEDɏ,%A"MJa?)E[4C/G## %(p&"p"!0~Rb  %BevmHY bg|4G5nX)(S&@Vq2b~߿\.??a߿,h??4D_ Q);M_>m w =_Hu+fs k}bk_J?3U}FClQ#RL!M?
753 .X]{~a<@"D,Dlfr`~&@BT[ĥpUFDf h-TYYU?~@x<?F
754 ?BP(?h P?k " <ou]ofu2/u w` C&}nect&r`D
755 e-?{
756 H
757  ^   -}|5 p`I`V?}`xa833ސ]3σ3u 33?, ?Gxpx^& This coUnetrWaumtUcl#yrebtwe h *hp3is.HDD @# =hZ#<T$#3 2 U@bX?\.uP6
758 u
759 `u bA@Wu  ):/*P mu` W?ht~SuZaJU }@-?Dt7'2"sA-tBk'2"u( 2rq?@[I ?$%ۿ?
760 @h[r&Z  "#8*AL2- br>#@L'} V6lX-1u. Bj2u2Z2j2#u9r#ULH/MB#AD5 60`Vis_SE.cTm!#20AD%`;Copy<0igTt ?D1f@M)@c<0o+@ofdBUArX@Aad@iV@n3@ f@Al@ \HsBe*+@e<0v@d3@J@=#x#
761 A G{?9#n"E!0144 M70#AHB
762 53_lj#PSV6U8l>(UhnE qJ$&9"(Fn_g5Fe#pheo'T !! Jcxo)vR2'"U75a%O3W_74b5-6R `F2 5au\@|Q:0b)`R@As)@E T@xd@Di ei=G]U6Tg'2"qV!DHAn 6SWaHw+* O`EW
763 )FtGl'#[(7F
764 \)e?fYDHlPU !"#t4b (6@Tn@ Z.}C-L@7"AU !"#$t4b (6@Tn@ Z+/}C-D@B7"A%&t4b (6@Tn@ \_/
765 A-%$37X@$X.IR@XD/IR@X/CRH<(H<(H<(XE\XL0 REXY0 RE|Xf0 R(~i"S4gf8B!Bl?4'/"Gl=./?<X/dP5Dtos0t4( U`, LSFDTyB uh$T UFb (6@FTn@Fx<?8F
766 BP(?J_P ?a/<e @?\s nu ` """u ) ( @L&d2?r-(\.,(s.sU!&/ o!! &f O1O1 ` Fl wcartm0p2
767 v?285\H?Z?l9C n0e0tB r?2?4eT>A>A uk 4
768
769 A
770 A#HA\D K DKDuKD}AK}AHAKAHAKAH1K5DAKAH
771 AKAHAK
772 AHKDAKAHAKED>AGCP>Auu -au%a}Ac.aA/aA0
773 q113qA1$qƑA21q
774 A4>q5KqAc6XqA7eq>A/Aie}uc\Ap1}cKEZeAc}AU 5yIExH?@^@@~?@֘"?ߒ?QbIaC Kqf"*<"b}Acbz*b7Bt0 
775 qQ"OXaц\M
776  V~2pXq|>כbXܛ ?smhퟨe+T "\!! 3!<n~Dߟqq"\AU%Sid01t`1pѠ
777 g4Tfx## (0X\CiX䯣qDu3a q mI
778 qTFŋ'9 WˣqσIdϙ!B &8@OS?!&!&l8DA>qU` AEmOqWA1
779 WQo勎pib!RU
780 璅×!$b!0sU_?mr7A d $6HZlDjF4@ɏۍAcb(:L^pʟݯ$6H
781 ơ2˯3//W/i/%7N`R=/?οL^ OOϦSOeOϛO4_N`r߄ߖ&8J?no"F?oj|!t!1;?:YUUCs0?R:k}HFSFB< l1Ɇl1 5 5%7If35t?v2dj8e2dkQ/// //-"/&/z/6(E&cop
782 g0l r$l1{/
783 <{SFP50?B?R5H1:Q??_??OO%O7O mOO_gɏ40SOO϶"SD)"UET?_o%o7o)Tol߇ooogoykeZqÿN`BTfxBÃ56);M͟˟Q,7I[mI[mǯٯEWiM]/ϿϞp;MW?i?ϟ?MUO?M\r߄ߨߺߜ?:_8J\n%_7_NNMSNчN!&m75Ae5%C"ObA!`!5 @@L&d2?@@ пdeQ!fAPmQ!u`u%S`sQy82 @8p
784 /@)Q"pTArw%@z3DqlrrrpSsv~15A]&A2D1LQQR.C]-T:%WApMSsxr tNL p5Azsqr Qhpfd2rqǿ?@IQϕ?GOTpJTMQP/JMUw/&ɔ5Ay8/@Ned5Ns.D")5<H2 ?FeA!#B!IuM_B_4BI_4d.A_LTAoP>oPobotoooouoooo"4wPvxb~EqϰϿsrqB0BTfxFGOяMQ!*<N`r̟ޟ&I>P%Anȯگ>@ !-#dՒ!{@ !QAA,QIdEE׹ZGvV<h3@_MM?UHMUS5BB`H!! % &!"`р5l1ZU- h|3 SNEZ6|>5PbX5b#̖m#F|5+*$5B,!,!MR !$BnD///B"O45Bn3?5SiE@e1*cpΰg ??0?#4MRKQ0 5UWEni̸?YOhdKLDjzUMQ8Z@_ %5A E\OOAd@-.'_9XR_ZӺAOT_Al_~_S ozQzk4HAI(988@tV@OS?,$#o8yn4k1 n I HHN!$"QMYxOlu%ZwBSze_P#>{',$q^eI~t?F5-Ugv:*s.`@RdvwE yѸՖyѻ//'/9/K/]/o///֯?////ίG?n{OOoOOO_O _A__e_NUUϽ_r_T՟e*8c?HZl??TOO ݃Rk?}228<AhfT>oPobotooooooo(:L^p$6HZO1<1!ԏ:)69-?` (6?@8|`R`rksA'`0f0f*ϜD ţ%&е-\?Q"\T#o2q ?/L&k?KAu;BY$F0a(,5)O!XT#0e.M#'$&դ)W ;  9xk1kw4 ??=?g5w4`?OO?Bj¨|ؕر&
785 _!3&R 76Z!IuJ<6L>!k"OO0%8cdk_#5`soo߂C+`+]cop&l*r*]&]l&nPa
786 [foxoo߬=pջ~5*ӿo>- ctZb%/<ďVɌ Ϭ.T"# -9?Q:
787 }:C5I[m 2 9u
788 w?aEB!r;%%bac@xH@@L&d2?@wnk˿W q0@ qu` `MuB `O!mꜽ٭@("G@) rp9%VB @z3PVhp%ũƕϱϺνquC%%S/e 1i%գ!4)#l lrq!ՍWVD갖!8/' tN9zs %Ӣ ќoǶѴ2r"?@IV5?+3快pt 23Ev&?a/Dsѓru<oㇵ3#$}qW07??Q?U7#%r-辵B!~B!4"4FXj|DjF4@Ͽ4FbaB!&'&8J\_q⃘&5"Ә&ߥܑba 2DVh?
789 "4u_qRdvOt ~A*`_N`sd1|QI]w rN9?@$4<@B?@H?@`^ݿde(u@`up7(:q 2` (6?@fLHFń?NؑŹboonqevoA/Q!v "r\xXvxw@/R/d/v/\w>l////د(?:9#f@-dW?i?{?1szVu??????0 O2MMROdOJA~OOOOOOOrfq9_ TqV_z_______wpZW hPcg٧2oDoVohozlonqeDCU<%I|q\yƁtג}>syy#5GY$7k}=6ŏ׏ ]CUgy&2M>՟矆> 1CUgyYP̬ S-}p`'),)|v>5*m??@~?@u%.?Q N15\"r$1C0Gե-jycߞ >59|>%bX7:F#[mvH+$"!!!$3Bn {///"34S) #5S&ared lOibc0b1ymAgP/??#4M 0p'0pCSi?GOqoM:D 8
790 B 5AyeE'OOAd$-0_'XyREK?Z_%^BQ@xu>:DIힴ88V@OS?$#\o8>)3> I JN$QMx&u'wQ z?e_4#._'$՛q?e~Xt?F5̡ȯm p:D=M|rZzaA ?@L?@Vjտń½
791 <b#(=Tn@:Ż@ȟS ς Z!߷EWiݙV~W_߰߀S '18J`/;O?z0>PWfxK@ou( zHUZU !"#U$%&,U-./0U1234567t4b (6@TnC@ TaJKC-TmBU7
792 A@XJORH<(EX7K R\_i1_PJ@?`iK.PDDaiDK.PU1( UO"D&aUAUNj )h"T}
793 +U- \ |ɉ&Q-
794 -H*=(XiwPE!Q//,/fGArial UncodeMSj (  R$fSymbol$67fWingds*7
795 fEArial"z@D/ R$fGSwimunj (  R$fGPMingLUj (  R$fGMS PGothiqcj (  R$fGDotum"j (  R$fGSylaeqnj (  R$fGEstrangelWo dsaj (  R$fGVrindqaj (  R$fGShrutqij (  R$fGM_anglj (  R$fGTunga"j (  R$fGSendyqaj (  R$fGRavi"j (  R$fGDhenu"j (  R$fGLath#j (  R$fGawutmij (  R$fGCordia Neqwj (  R$fGMS Farsiwj ( _ R$fGulim"j (  R$fETimes NwRoanz@D$CLLBCL.BCM%B$C%M5BCZM9B4CM=BCMCBDCN9B̨CLN;BTCNMBܧCN:BCO:BCHO9B<CO9BԂCO;B4CO8BăC-P9BCfP8BCP:BdCPCBDCQ>B$CYQ8BCQGBGuideTheDocPage-1"Gestur Fom aDocumentViso 90Flow NrmaVi}so 0Co}nectrViso 01Viso 02Viso 03Viso 10Vi}so 1Viso 12Viso 13Viso 20Viso 21Vi}so 2Viso 23Viso 50Viso 51Viso 52Viso 53Viso 70Viso 80Flow MarkeFlow GrayBasicCostDurationResour cRow_1visVerionProces(Dynamic onetrTextPoWsiinDocument.2Proces.4,Dynamic onetr.6Document.7Document.8.Dynamic onetr10.Dynamic onUetr1Proces.9.Dynamic onetr12.Dynamic onetr13Document.14.Dynamic onetr15883|_SE3d_SG3L_SG3DKS%G3$k TG3T@%TE3dk)TG3kBTG3kaTG3kzTG3kTG3kTG3$kTG3DkTG3dkTG3kUG3k*UG3kCUG3k\UG3kuUG3$kUG3DkUG3dkUG3kUG3kUG3k VG3k$VG3 k=V!G3$ k^VG3ļ_zVE3ܼ_VE3\@VE3d kVG3 kVG3_VE3 kVG3 _VG3DLW)G3<K>W G3@^WE3,@bWE3<@fWE34@jWE3,@nWE3ĴlrWG3dlWG3TbfW.G3DlWG3$lWG3jlX/G3klDX/G3lsXG3klX/G3klX/G3mX!G3lll Y/G
796  !"#$%&'()*+,-./01234567UfU
797 U UUUt4b (6@TnC@ O0^RC-tpB*7
798 A%t4 dpB_^
799 A-@7AJ@X^NR@dX^6RH<(H<(JE XJ` REXW` RUPT/_a C{N
800 } w"4FX,h(j5@@(;6#\y
801 K_,eBdYiUX P Q|/A<k/w
802 FC_D\9oy^i0uR$_iP1S+!Lp) 'vKhaitciQwP2ͬ <YT?g _*'"Ddidu`H%ei`.g a6Oh+'0tS `ht Grundfos A/SGrundfos A/SMicrosoft Visio@Cr:GtRAg2 EMFlRlx@VISIODrawingLQAgBh ??d(@Q(Bh@Q׏=>>EFFMNN#%%[dbfqnfqnV][^^^mnn7;:݀UVVfgg=>>݆033=>>￿oooHOM=>>ݚfqn7;:*,,7;:OWUs|ϳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳNOO .//î۳ɌbzKתת߻߻߻߻߻߻߻߻{b{b=>>MUSfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnlqkqrifqnfqnfqnfqnfqnfqnfqnfqnfqnfqnZca=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳ=>>ݳEFF),+7;:7;:7;:7;:7;:7;:7;:7;:7;:D@<YJ=UH<HC<7;:7;:7;:7;:7;:7;:7;:7;:7;:033&'&翿rwFxwFaٯ͔nɎeΗrϙtўzdzLj]dzɌcݷ͕oٯῨLj]ת͕oӢўzîɌc̹Ɍcݷˑi۳ῨɌcпզϙuզϙuῨɌcпɌc۳UVV=>>=>>=>>Ɍcݷwxx=>>=>>=>>iTxOӸEFF*,,fqnfqnOWUӢўz~~~V][mxunqkU7rL),+ݳ\ebd>r&''hroݎ{a<TPMMNN~~~fqnݺbkiooofgg\ebݍ033=>>566033MUS^^^fqns|fqn=BA7;:=BAfqnyݚfqnV][7;:7;:V][fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^$  ~~~ńWӢҟ|wFܿwFɎeLj]ϙuLj]ϙu~xxMyU}q397fqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnqrifqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnqrifqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqn@GE^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn  r  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqsuvwxyz{݀^^^fqn݀^^^7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:@>:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:;=:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:7;:"%$fgga׿{ڱwFzKҟ|ńXˑjį׿Lj]ϙuMNN#%%7;:7;:7;:Lj]7;:7;:7;:^^^ϙu=>>033ݳOWU1)#zO\eb݀qM˹Zcaݺuj[~~~~~~ݎ{//-EFFEFF^^^fqnhro566=>>566hroݓ7;:=>>=>>=BA^^^fqnݠݺȚ݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^fqn݀^^^397fqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqnfqn@GE^^^՜.+,D՜.+,@ `ht  Grundfos A/S Page-1n DocumentfosProcessDynamic connector PagesMasters(`ht_PID_LINKBASE_VPID_ALTERNATENAMESA
803 FMicrosoft Visio DrawingVisio 11.0 ShapesVisio.Drawing.119q՜.+,D՜.+,P `ht Visio (TM) Drawing
804 ~vtjugR7 !fffMMM333Fwͩ}|kݝHxUJ:DT5I[1hXT@.
805 /UbW##_b0zGz? L\&B1r&b%U& !oM $d ) P?;H$,Q,
806 & #&J , 5& ?D#//?M?\.? CA 
807 ~,,,'q/%P6$Y6 (}k?l)?"U   U%A3# o >S@#B:_a_ReUUeUeUeUeUeUePONODN`_ReUUeUeUeUeUUeUeUU/b SR%;5OM%>Qiq;RRRRgg Rqh>Qj /A^F' %p3:|bFpT#| |
808 | vi?=Os<34x,,,/RQmeY q]U@QvovL__q____OO_OOTYA`,X@L&/d2?ɖQ3YҨsUΡ̦xΟ@$"Jʼ& ͥ*@d2A??ϟJ[D! f:45ŧ5ŷ5@ 0 0D$#  
809  Q#b ;
810 Chߠ
811 Y ,00JDNrq(NN㊮NN(NN&&uc7D)KXXFNvvK&KD#KD#-D#NHGDB$KzzDKq%iz4
812 }1T\,Eu9fdhT,W'0΢Uܮ5E0 fI$[OmOC%ߑE##HZߪ  E,3Y&4JY&5&6<s9FaBaj+h8 8?&!3"DE=T;ܯ?w?@??8&t,'5UR^LY  Y7akKt//BJhuizpsĝa.1DTcAcpvOpM KKuhdX(G:iX IT[EEh.D#E,ah-50zG#zpvb
813 aHGmc/QP K{\Hp_ hd? pA?%?7?I?[;<t5j!
814 OO*FQ///F/K]SEn%cO@OOlE$g\Ey[EO_!_3_E_W_i_{_____VB506,HM.`e^MIa,>PbQaƒ2q? a%oXIoQfdoooSEX_O-OF6EDpE66Oҟm2Hg;pbӏ_
815 ,X7R[,<WbӤ69sc Rb"a2T^<C="ACoor<G5C+=Oaﲶ2T<R`'67;]ї@<ұwr1r / Ma&3@MZ)gQ#zҨVB;Z`Яܯu[/lsxP0aq&&8JzUxzm 8~{FwƿKxbub{ߴXE%U 5 GPH] !O$]-OOOO>Tful3~O贁Nk?JTf/6S?]?0'^5x@E@E@@t$
816 'n/jRFfuOOo{o_0&G9O_KZk=_O_((]|Tq?Q);/q/ q58?Wf9|s???:etb< djb wOo"oOOO_/aoso;
817 o-W,'HhWWCo/?I=)<EҵNW?/M:RI<W`lm EO_%Oku!`E>1DˠI 2DVOO_&Xoo+oooo9}-P|)CeɍU=O2b@b~qbYk}_ſ׿ˏ);M_qσϕϧ%7v [mur+b{r 0BTfx 0BTfxv9r7 }5GYk}Uc &8J\n/"/y!?"I/[/m/{.bLbݠ////// ??0?B?T?f?y???????? OO-O?OQOcOuOO<OF#ͩOO(Ou1sr_)_;_M___q________oo&o8oJo\onooooooooo4)$?%7Ix[$p?by~Ebێ 0BTk}ŏ׏ 1CUgy8%&'џbd\ sb);M_q ˯ޯ&8J\nȿڿ=q(+&(8J0|ϕϧϹ%7[Ugyߝ߯ -?Qcu4))|*~ kb=gjb| 0BTfx -?Qcu"y+?,<,[qby{Cub_q//%/8/J/\/n/////////?"?4?F?X?"y-$ϐ??=tb>x??OO,O>OPObOtOO_bksOOOOO_ _2_D_V_h_z__a=8\0ٶ_a=b;bbh_U./_oor-b@b3bDbMo _oqooojmizoooobݏ١&8J\nT2-?ȀIbQY1AByq1<֏ 0BTfxjPşן 1CUgyT W3!)9ت]2\nȿڿ]ߧCUgyϋϯ -?QߵuU45 ߤ߶ߊJ@J 1CUgy'9K]oTGFw?3{bq#]#.@)h('}o@o HZl~/ /2/D/T$1a/r8/)6Hx///&n|/??$?6?H?~???2$DPT<?qd@1m[Y/E1 <GO"JErOAQOO5I3OONkO:2Iv____+E_'_2qp_oovlrvjP4R[H{`7,1_:V03@+Svz
818 [HkPWDBT[H`7@m4Voho Do'O9OKO]Ooo#5Gx3XjQeCt?C?\.?`+PAPՏk   |'}l8'9ZloSϥɏ믵 5Gd -UFDfP h>$/T 6D
819 UUF~@x<?F
820 BP(?43P? J+1:{
821 bj/b::I!H? ?  0$`pProcesS ,funO tuiM nW taS UkW Bm"iO ,UlM wO hm ra X!#,dm l!,pK,jM i] e*K ,m"sM"i"d%Ab[ z!!T#-Sc uxW 6$gm"uI0OW 90#2$|e^ d55kUo9?K?B)!)!2)%$` /| <`!kbs{kbs>F4Fzk%>F >A2
822 OBu D(2OVhz~ Drag thuesapWonodwipe+.cs*Wfuci: oObl-=l)cka!dh-1
823 H D  # =ih#4>T#3 A5AUF~? ?F\.?P6 Tuv` ??uJ
824 bkrr r.AšJYMJU5 !LK@#I;!@$5 `?CopyrigTt (c])r 20~ 3r uMj ch osb Ifp"a!rd !ap ib n r AUl h(s"e eh v d/`Vj s_SFBcTm!#5N~"06!5' #%0 5K)M6G# G'? *lW btrr&/Lh=L@l>61Uhh7PY!"  *#"JT3FFFr\F
825 BM)(aOAO#"A5N_IQEEFR_Ov[R52O;EBrA
826 RS#")(le
827 @j 7heGoj@8=ook8too q(b5@MCW?0v0v H"SFAr@K\/SqMRB_<NhCFi{z,%)t@@r uGj5q5{#5"C#"mZon+EBTM,"KK2JK\3;%Vq>#  @!2`a!sp s.2`A#"2,%q1BXVqajGDu*5AଚbA"` R"o͒c"4ڑAEDɏ,%A!MJa?)E[4C/G## %(p&"p"!0~Rb  %BevmHY bg|4G5n","X)(S&@Vq2b~߿\.??a߿,h??4D_ Q);M_>m w =_H'+fs k}bk_J?3UFkew#S`M?
828
829 V]{a @(D4Wk,e>VB@B|TRץp8$*5 7UFDfP h,TYYCUF\.?x<F
830 BP(?E P)?2o @L^^{J_@L&d2?sUB"! &B/eBH0$?w/&? )~  0 ;Q`#CBm0,link\netwBr2p 0r0pP11a0,d 0v0c 0O1^ ;
831 Yp!3u &?  ;;" ;;;gr330;G;#7Drag onut heqp
832 ad likb tw e cmGuiCaisd vOe]sBKcnTe)*`i]^o
833 9il^)n5k].b\.BP(?? M7Pfo??H D  ?h ^T,]]9 
834 AU@\.? ?@BϡP(?P6 u`u (bu]`u --+&1B=^@u` ?zu"2dTw_b .A! '8
835 P-#&,J`Uy"z!?&s?Ab?bAw#n#0O贁Nk?Fw@LU7 ;/
836 b"n#&$72?5B"7='?Z$Q=KW!Lw7W""2RW"M" 6v%n#AD5 ]`! 5@4@18`?CopyrigTt (c)@20@3@M@c@os@fBAr@Qa@i@n.@ Al)P Hs-Re*Pe@v?Pd!P ItP@qZ}PrU?|TrV"r##SOC@`сANyRu(yQ`i'`Qps-8R/d@9m @&W"$"SKbRGW"O2@AMBYq%O G&JM4{w`:AbbfM"$"\CICUMql>!Uhde A(<B#0P"J^X=r;2Kb$B"
837 B"
838 zB3-(JX4~0Kau3<BsA5dX4
839 ?@ '`0k{ 3ӎ3
840 3 MGO5/X4 qsU92PCE9X4von?&Rsr)#CE>X4h4F?@ p8̭ 3#RC[U\ArT93V]mt@hem]5rTC%MA&"$a$a2(ɤO2)֤B*\"+[RllbNN @//01@W!BAV2M]!AAAD" "` ]MPnuPa@ t>QrA]@S7a[m^$b`PBd. Nm`6[Ͽ PPr ϸO5AkGYA D?RAi@UϷEZ~APBQ߹E_;M SCRiP,Qy߀߽[U$1 L@cX߷Pe$6HBi)Pd@n@g﷼3MhR@!oVﹺYP
841 pzmB?Pn@7faLSTa@e PlPo#` AnPeiGPi@y<j& T@ [.`
842 "c򛱀ѻISeSƒbx`u AmV L "qd? r _5cTA e%r%r5rO5rErEr[UrkxerXkq<Po
843 @mtCRőeqqcu%vA\q(qqrxIoyEM3F%PA }i?R`NEWORK@WSH'PP^0 ;0Rd0s1RI^0Sla$@@X`31qBH >':)DNYqq/ue\A\Ar"(D' 4A3\Daabxα 6W6K\WaqqG` rPtrRyASTd&@xOsyA K@bVmK&\=uK$&\%5ƛ_t'SׄrsF3s͵NSYFuEeKpVp//(?/(xA\p~6?@Ig`{]otGOD@`h5rBAcb١/`Rop4a ex$JKFq*Bet ڀBڀc(CFvlAe;wbwrBtA_ oo-o(O@Yk@! ;C`<ob鉘gqHu+ 5)d5ukDWnmF|ky#DKT?
844 IS:a@oUBo=?\k PUFDf h-TYYU?~@x<?F
845 ?BP(?h P?k " <ou]ofu2/u w` C&}nect&r`D
846 e-?{
847 H
848  ^   -}|5 p`I`V?}`xa833ސ]3σ3u 33?, ?Gxpx^& This coUnetrWaumtUcl#yrebtwe h *hp3is.HDD @# =hZ#<T$#3 2 U@bX?\.uP6
849 u
850 `u bA@Wu  ):/*P mu` W?ht~SuZaJU }@-?Dt7'2"sA-tBk'2"u( 2rq?@[I ?$%ۿ?
851 @h[r6Z  "#8*AL2- br>#@L'} V6lX-1u. Bj2u2Z2j2#u9r#ULH/MB#AD5 60`Vis_SE.cTm!#20AD%`;Copy<0igTt ?D1f@M)@c<0o+@ofdBUArX@Aad@iV@n3@ f@Al@ \HsBe*+@e<0v@d3@J@=#x#
852 A G{?9#n"E&0444 M70#AHB
853 53_lj#PSV6U8l>(UhnE qJ$&9"(Fn_g5Fe#pheo'T !! Jcxo)vR2'"U75a%O3W_74b5-6R `F2 5au\@|Q:0b)`R@As)@E T@xd@Di ei=G]U6Tg'2"qV!DHAn 6SWaHw+* O`EW
854 )F_k=#\R!+7F
855 cX,Ge?foDkPUFDfP h(TPYYBUF~@x<?F
856 BP(?| P?
857 b//b@L&_d2?ct\.҆dsU:ȉH?/&k?J="ѤBS  0Kc`,dat b se, on e tiܨ"-or fUl w(cPa Iti!e^ %/UYo/?t!t!2\t%K` F/ `\i!/b7?/b7F(6>/F A2
858 ?&_ QJ /?|wxpf6lbx{s؅pwp  wwDrag onut heQp
859 idUct afl cm oUs dfr
860 >r!s(<Ia2e7`aQ GlPo e9ts.UH TD  # Uh <JT$iiY#RM>U}MUF~? ?FL&d2u?QoNuQ{` ?cu[
861 NbMV VAMA J~s$A
862 sQ   @QM Bt"MnK"NR@P'tr"
863 )Nrb#$u2&?&?r N]#K"L@R]#ҙ14e;-N`Vis_SE.c`m!#5W0106L"`?Copy ig`tW (0)020W030M0c o0of21rT0(Aa0i0n0] 0AlC@ 8UsGBe0e vY@d0M>7D00iERK_9T#3 7?i:P bJNVVV#]#0O贁7Nk?!&QMS&=]#/13FPF)"T$&_?-W)lJYAUttYYI 1Th1@-b3e3`Q(w]$m&?`0 P@#V"0'hAA
864 #'M 7& >2PS8WYmMpo*xcP&cK"8]*`ec/&@kAw$?# ? ygPV0-
865 %s"
866 Ba3U}io|4s2HqEc^o?rF`Y}v20 xrrgQxT5I oJ+f5oGnSz B zΉcgM&HqV50\.Qaԏ$a%?F r"*w hdM!q(i9]&,f$@d9/KPb
867 'c#0b"~1}BF(}0#yA&8x
868 & f 8f䳶과!rHPq
869 RU);M_qHmaxP Ā#bdz%Dї ܜEU}S*JR!ᣏċ p/8&,Aƫ sBQYasυϗϩϻHmd1 Ā"+͛ CvV5qAXz @%ߒZ @)&XqA(nU9 Yq!gfU}&&2Q<c5 cK" T%O);M |f V5V]/ r /6c~b5&8Jqq!nTQTT7q!gTQ)!$K"Q(k #?p'48/h; S` % &Bp]B4AZA_b ~5mD1+ #a#a#aqr-j2MhD #LS!5  \(}B`1s0 @B`RW1@A+?A3J5S3Du/Jo8LuѠ?7!K0S3 RYBo2c%iPEZgXW;G'2qB@F!QQZ%0_BZ!x-AF'Gga/= /
870 *5&@y{pb~߿P&d2??L(a߿i??4D_H'׿# +"x4Z~Dw+Fk,o12a2?
871 S߮3aܥO@74Dk;kP-\B3;@BU !"t4NT*"@|+.@ DV<}C-L@7"AUN!"$U%&'(U)*+,U-./0U1234t4NT*"@|+.@ C<AC-̣@,= :56t4NT*"@|+.@ dBw=
872 AJ-$37U !"7t4NT*"@|+.C@ V=C-DdBU7
873 An@m<IR@m.=IR@lm=DR@ܥm=ORH<(H<(H<(H<(nE\m> REĤm> RE4m> RE|m> R(kGSDl+B! k?)/"4k0S|k;/?Gm?>vPD$m4( U`, LSFDTyB uh$T UFNT*"@F|+.@Fx<?8F
874 BP(?J_P ?a/<e @?\s nu ` """u ) ( @L&d2?r-(\.,(s.sU!&/ o!! &f O1O1 ` Fl wcartm0p2
875 v?285\H?Z?l9C n0e0tB r?2?4eT>A>A uk 4
876
877 A
878 A#HA\DK D KDKDuK}AH}AKAHAKAHAK5D1KAHAKAHAK
879 AH
880 AKDAKAHAKED>AGPAuu=a #a1u5aF}A>aA!!A7
881 q1AA$qA#B1q
882 AFCKqAyyA/vAie}uc\uE uZe}A(a qRUuEE19~?@a?@~?@"5ⅅߎ?aC\Sc%*<1q}Abdq Ve`u7Bt005-ʉ\&
883  p~2 i &Xʇ'2q.!(H\ jUkOXKmDi+T\ !!!!n4ǯٯdq \AUAINp b0s0r0t@Ovvg @i @g-@e @h
884 0d@gD*<NB`"# &e8\}qu&
885 mIdnFŇ|B"Ӊ: HPo߿ސlDAHU@뽁AsUiOPWQQ+RU~ d 6HZlL
886 @}ijfIʏF?gf׈עb'9K]oɟ۟#5~$/k/Z/޿/ // gym)5GȀMYM
887 0d0mտ/?!?/oN`~ϴqw<N߅OOE)_G_`__=Oasg'9K]co!]E"-O#5A Rdv CV}!q}! 1CUg? /?̟?/u/?////B?;?M?_?q???=]E?OjucQ"A_oo'o9nERovo2ƑooOo-oo8SAQ&O8O\OnOO__e=\OewߠqE U_g_y_ߝ___l5|?RqA`l7wʳտ7y(U@$.{xH&d2?@BP(ԣRÝ&O x`Aw)p?(@z3,!p=LmYl~p/uC.XLXߺӓͧɊٹغ%I@a?D$6HI]Q%%$&2$?'?$=
888
889 )r*f$\\,$ɁɁ/$r1$QGS/ίঃ!A(`/
890 7Ɂ 5TC m-Pi@?/غ9P_]24f=Ҫ%)Ҁ%r%8B~"4DD-`ap????ި ت!`Otr]OoOOOިGHr
891 a<MR?Tsв0Vs~"
892 Lf4Fwvn?@ `0cf{i͈x<mŧjZ?@ p8h6edovj0101?01c{()0!"A ٹ"!o _4@W@Lclչgu `u^`A9mu7CB ZpLQHYbEXj05/6?6e/!@`s01#詒:Wi?a^ tN?zs LQzPx2!r`ۤѽ.Xt#0ONk?Fw'vV?2UA =__$_6[6LQOTɯ01o ` =դTu_?TAsQ&a$W`Fgo:o ;A Woɀ oUd1 3uU& á"x01Q\wa &e{<S+d@@ $O$UUSLRBA0#"9Q s#As;"ԟ搷!5UFUSomTiGdLQ\]WɔXW'2C=HQh!UVUUbjhXĂ1uA/B?xv!$=P&a4LRAbQQ !*A4_FX>7nSM
893 e@v
894 2!fx 5bQST3uW&݊1K!bPtګYi"dv_IIb#" /BUU܄ /JJ4#/LRe]Sd%x././\Q11T AXoyBJcQQo!kQ?kHo5=I}?v6ad6aO(:dQD
895 =@@n{Su ȏ@^ߗZ*}s;l8fno.oS8of[onogğq :&'9/ASew1Ѭ^ۯ#5Gk^Џ޿e<a<N`rτ?ϺϷ{\ q|AA q.|A) aIa,o\1}՝U@O+ ߂US?5KKH;
896 Eg]YIEo5@sթ/ ]s K[m'9KD0uQ u`?< qMUD-Q(:a!3EWi~>8??S//(R,R-^+/N(g%'?^!Q2MT$@RAc?u????`0 iHޝH@=EOHo0o+U7\n5GVR4/5 .|T b/y//////A?x/?5S*JRX/j(R?d?v????ȑ(5?>(5&OC0(F0<F@0x6A4k:Ia6IJd rq,é~ZAިHڃɠUEڅ@ɩibu6@`up`AvVcA(2\ި.gާbcTwgj"qbwoo bpWũaDfoonRr16v/B.Dj:AW `ڱ׿Ƿb tN,`zsf r6`'ϥ^2rJ?@IVJKTZDo#0O贁Nk?Fw)=4qpߐZEߘ6}H/@G@P^0q"<hʃu:I? -_'O9OKO]O|O4s?}U@`[-Q'ј\r'8Q8SڛYY,ʇ!ș0(Y+ @@MsE0NA[br5p¹Ē9qEWp$^r~反tR q0-{sc(gy(:L^pjɏ)k-`mTߩ$+(ԍA4r[[ndtߔߦuq*WeUbcA^manastrazwio
897 ga "4r^U+ș 5AQQđ,^?WOWy $FS=O $ >@$qd A,>2/]'cOKƛ5 (N.A%=ǚQ{OT{_>/?_Q_c_u____LHXCC$ɿ\b%lbu`u{e4o y+.?%==png a4qe2o??@c!a6??r1C5ȿYk}}w!/&4L^p܏$M^=oOa%yi{џ.H[60F]$ZalhǿEo% cRoZ$|h5`0 ?@pv@AIZlcYOڷbKh ܏$BZxHv,>Ao*yK}BůK]T} q1CUgy<m0h>BϡZ#GK 2!qJ~xJ1Cʆ U@ a a?oI1rZ edv5ŒaѣCaBnDA-鬣CO3בLjő!(\Xo'2`RqFH6A[6ղ7Om=ǟٟk!3EWi{]ïկ\\#/X| Ŀֿ"uϿq%I[Dm1-0ߞd/d??¼2϶9P?;/NeIO[Lu11 >%Fyrw {cs{17a{uq4'Xihyahqx!޵61r?@T@1r?OdpUP>e!up`ux `[A!VSQ!V%ج}LbS5;qHT)"pqrTUgް@z3QObUogoRpafo1on11sbch1…xQ!P".2b2:uWP'C/,R tN,P!zsV r!sQ!u$$^2r~?@I4)2~N$(#0ONk?FwSF!p ~/,'E/&6愾! /# {qs%2<g"?c _4wsDG?[(UsV ьwu]suE5!Eu脋/6ĐV5 @@2^]v@@8
898 B`U? ~y![u `Eo?<usPFcsbn{NLe4!<Nrϟ虏AY/y"<BQXb5
899 FDOkϷ
900 -5XE-5Ϟ^ϮD'E#FLKnuxse@v
901 K]oUU !"U#$%&U'()*U+,-.U/012U3456U7<=>U?@ABCDt4%NT*"@|+.C@ TZ|C-cB_b[
902 A@|ml[QRH<(EDm[ R\<j9@bZ@?j[.PDj[.PU1( UO"D&aUAUNj )h"T}
903 +U- \ |ɉ&Q-
904 -H*=(XiwPE!Q//,/fGArial UncodeMSj (  R$fSymbol$67fWingds*7
905 fEArial"z@D/ R$fGSwimunj (  R$fGPMingLUj (  R$fGMS PGothiqcj (  R$fGDotum"j (  R$fGSylaeqnj (  R$fGEstrangelWo dsaj (  R$fGVrindqaj (  R$fGShrutqij (  R$fGM_anglj (  R$fGTunga"j (  R$fGSendyqaj (  R$fGRavi"j (  R$fGDhenu"j (  R$fGLath#j (  R$fGawutmij (  R$fGCordia Neqwj (  R$fGMS Farsiwj ( _ R$fGulim"j (  R$fETimes NwRoanz@D$̊C>]LBDC].BC]%B4C]5BC^9BTCK^=B܉C^CBdC^9BC_;BtC?_MBC_:BC_:B C`9BC9`9BCr`;BC`8B,C`9BCa8B<CVa:BăCaCBLCa>B\Cb8BԂCIbGBGuideTheDocPage-1"Gestur Fom aProcesViso 90Flow NrmaVi}so 0Co}nectrViso 01Viso 02Viso 03Viso 10Vi}so 1Viso 12Viso 13Viso 20Viso 21Vi}so 2Viso 23Viso 50Viso 51Viso 52Viso 53Viso 70Viso 80Flow MarkeFlow GrayCostDurationResour cRow_1visVerionProces.3Com-linkManufctre ProductNmb ePartNumbe*ProductDes_ripinuAsetNumbrSerialNumbLocatinBuildngRoomDepart5mnShapeC5lsShapeT ySubhapeTyHasTextSolSH"visLegndSh7ap(Dynamic onetrTextPoWsiinDautbseProces.12Proces.2Proces.6,Dynamic onetr.7,Dynamic onetr.9Proces.10.Dynamic onUetr1Proces.13.Dynamic onetr14EE3DbddE3,btdG3bdG3ifd%G3bdG3@dE3 kdG3 kdG3 keG3 k0eG3 kJeG3$ kceG3D k|eG3d keG3 keG3 keG3 keG3 keG3kfG3$k+fG3DkDfG3dk]fG3kvfG3kfG3kfG3kfG3kfG3$kf!G3DkgG34@0gE3b4gE3kBgG3k\gG3bvgE3kgG3kgG3kgG34jfg G3\jfg$G3$khG3.e;h-G3DkhhG3jfh!G3dkhG3khG3bhE3khG3kiG3k!iG3jf;iG3bZiG3briE3jfi&G3.ei)G3jfi G3kiG3,@jE3$@ jE3@jE3@jE3ljG3Dl5jG3$lPjG3mkj.G3mj.G3dljG3mj/G3lkG34m0k/G
906  !"#$%&'()*+,-./0123456789:;<=>?@ABCDUbU
907 U UUUt4NT*"@|+.C@ KqqNC-eBU7
908 A%t4 cB_r
909 A-<@"7AJ@mqOR@m$r6RH<(H<(JE\ms REԵms RUPT/tbt C{N
910 } w"4FX,h(;WP@@(&`ծjf@SBjT P x/Aj<TbU
911 FCo^_oD$jg?R$\+!
912 @)̏. '\h1j՚ҮjbP2 _kT,jZ/r*'"DC ksH%j`.jt6Oh+'0lS `ht Grundfos A/SGrundfos A/SMicrosoft Visio@hC<GlR-N  EMFdRlx@VISIODrawingLQ-. ??d(8Q(.8Q0//蚔`__蚔`__]ZW蚔`__><:]ZW蚔`__><:]ZW蚔`__><:]ZW蚔`__><:]ZW蚔`__><:]ZW蚔`__><:]ZW蚔`__><:]ZW蚔`__><:]ZW蚔`__><:FCB蚔`__蚔><:><:><:><:><:><:><:aBkP>><:><:><:><:><:><:><:蚔`__Ԥ蚔`__Ԥ蚔`__0//Ԥ蚔`__ >=<Ԥ蚔`__ >=<Ԥ蚔`__ >=<Ԥ蚔`__ >=<Ԥ蚔`__ >=<Ԥ蚔`__ >=<蹲{wt{wt{wtwXwb{wt{wt{wt蚔`__ >=<]ZW><:MKI{wt{wt{wtwp}wr{wt{wt{wt><:.-,~{蚔`__ >=<???pppPOO]ZW~{URP蚔`__ >=<>=< `__{wt`__{wt??>]ZX><:]ZW蚔`__ >=<>=< `__{wtٯ`__{wt??>]ZX><:]ZW蚔`__ >=<>=< `__{wtܻ{L{Lўzî`__{wt??>]ZX><:]ZW蚔`__ F@<ѿF@<>/&udY}wr~zӢQ"wFwFwFLj]ٯ~fW{wt}qWI?c[V0ZI<]ZW蚔`__ oS?eϙuϙuϙuϙueoS?ǒ_;ϙuϙuϙuϙuϙuqMvgxJ{Lϙu۳ٯc ̹ݷqMwkyUϙuϙuϙuϙuϙuϙuϙuϙuhDeQ]ϙuϙuϙuϙuϙuϙuϙuϙuY5͕o͕ohD]ZW蚔`__ >=<>=< `__{wtݷˑiwFwF]Mˑi`__{wt??>]ZX><:{wt{wt{wt{wt{wt{wt]ZW蚔`__ >=<>=< `__{wt̹զRwF`__{wt??>]ZX><:WTR'%$=;9蚔`__ >=<>=< `__{wt`__{wt??>]ZX#"!}xv蚔`__ >=</.- `__tpm]ZW`__tpm]ZW??>FDBMKI{wtĹ{wt643xsq蚔`__ >=<OOO??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>GGGjfd310蹲{wt('&蚔`__ >=<ea_.-,><:><:><:><:><:><:><:{wt蚔`__ >=<ٹ蚔`__ >=<蚔`__ >=<蚔`__ >=<蚔`__ >=<蚔`__ /.-蚔`__xww??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>GGG蚔`__蚔`__tpm`__poo??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??>??> Grundfos A/S Page-1nProcess Comm-linkosDynamic connector Databaseonn PagesMasters(`ht_PID_LINKBASE_VPID_ALTERNATENAMESA՜.+,D՜.+,\Root Entry F@CompObjjOle
913 1TableR9Data
914 !SummaryInformation(WordDocumentdObjectPool_77748804 F_97655052
915 FOle
916  CompObj sObjInfo OCXNAMEcontentsVisioDocumentAcVisioInformation"SummaryInformation(SDocumentSummaryInformation8Ole
917 CompObjsObjInfoOCXNAMEcontentsVisioDocument ~vVisioInformation"SummaryInformation(HSDocumentSummaryInformation8DocumentSummaryInformation8t

Properties

Name Value
svn:mime-type application/octet-stream

  ViewVC Help
Powered by ViewVC 1.1.20