1
0
mirror of git://f0xx.org/android_cast synced 2026-07-29 04:38:53 +03:00

docs mostly

This commit is contained in:
Anton Afanasyeu
2026-06-05 12:41:11 +02:00
parent 9eca43b9f8
commit c5857e65f6
26 changed files with 5240 additions and 477 deletions

331
docs/INFRA.pdf Normal file
View File

@@ -0,0 +1,331 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 18 0 R /F4 20 0 R /F5 21 0 R /F6 22 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
>>
endobj
4 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 716.2874 87.48504 727.2874 ] /Subtype /Link /Type /Annot
>>
endobj
5 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 705.2874 191.101 716.2874 ] /Subtype /Link /Type /Annot
>>
endobj
6 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 694.2874 98.58904 705.2874 ] /Subtype /Link /Type /Annot
>>
endobj
7 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 683.2874 111.925 694.2874 ] /Subtype /Link /Type /Annot
>>
endobj
8 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 45.68504 672.2874 165.293 683.2874 ] /Subtype /Link /Type /Annot
>>
endobj
9 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 59.68504 661.8499 153.06 671.8499 ] /Subtype /Link /Type /Annot
>>
endobj
10 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 59.68504 651.8499 131.37 661.8499 ] /Subtype /Link /Type /Annot
>>
endobj
11 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 59.68504 641.8499 165.9825 651.8499 ] /Subtype /Link /Type /Annot
>>
endobj
12 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 45.68504 631.2874 172.845 642.2874 ] /Subtype /Link /Type /Annot
>>
endobj
13 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 45.68504 620.2874 161.725 631.2874 ] /Subtype /Link /Type /Annot
>>
endobj
14 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 45.68504 609.2874 75.02904 620.2874 ] /Subtype /Link /Type /Annot
>>
endobj
15 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 25 0 R /Fit ] /Rect [ 45.68504 598.2874 166.181 609.2874 ] /Subtype /Link /Type /Annot
>>
endobj
16 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 25 0 R /Fit ] /Rect [ 45.68504 587.2874 117.277 598.2874 ] /Subtype /Link /Type /Annot
>>
endobj
17 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 25 0 R /Fit ] /Rect [ 45.68504 576.2874 135.949 587.2874 ] /Subtype /Link /Type /Annot
>>
endobj
18 0 obj
<<
/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
>>
endobj
19 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R
14 0 R 15 0 R 16 0 R 17 0 R ] /Contents 44 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 43 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
>>
endobj
20 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
21 0 obj
<<
/BaseFont /ZapfDingbats /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
22 0 obj
<<
/BaseFont /Symbol /Name /F6 /Subtype /Type1 /Type /Font
>>
endobj
23 0 obj
<<
/Contents 45 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 43 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
24 0 obj
<<
/Contents 46 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 43 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
25 0 obj
<<
/Contents 47 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 43 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
26 0 obj
<<
/Outlines 28 0 R /PageMode /UseNone /Pages 43 0 R /Type /Catalog
>>
endobj
27 0 obj
<<
/Author (Android Cast project) /CreationDate (D:20260605123817+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260605123817+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Android Cast \204 production infrastructure) /Trapped /False
>>
endobj
28 0 obj
<<
/Count 15 /First 29 0 R /Last 42 0 R /Type /Outlines
>>
endobj
29 0 obj
<<
/Dest [ 23 0 R /Fit ] /Next 30 0 R /Parent 28 0 R /Title (1. Topology)
>>
endobj
30 0 obj
<<
/Dest [ 23 0 R /Fit ] /Next 31 0 R /Parent 28 0 R /Prev 29 0 R /Title (2. Port 8089 \204 not the androidcast vhost)
>>
endobj
31 0 obj
<<
/Dest [ 23 0 R /Fit ] /Next 32 0 R /Parent 28 0 R /Prev 30 0 R /Title (3. Public URLs)
>>
endobj
32 0 obj
<<
/Dest [ 23 0 R /Fit ] /Next 33 0 R /Parent 28 0 R /Prev 31 0 R /Title (4. Disk layout \(BE\))
>>
endobj
33 0 obj
<<
/Count 3 /Dest [ 24 0 R /Fit ] /First 34 0 R /Last 36 0 R /Next 37 0 R /Parent 28 0 R
/Prev 32 0 R /Title (5. Nginx \204 source of truth in repo)
>>
endobj
34 0 obj
<<
/Dest [ 24 0 R /Fit ] /Next 35 0 R /Parent 33 0 R /Title (BE apps.conf today \(typical\))
>>
endobj
35 0 obj
<<
/Dest [ 24 0 R /Fit ] /Next 36 0 R /Parent 33 0 R /Prev 34 0 R /Title (Hub location \(correct\))
>>
endobj
36 0 obj
<<
/Dest [ 24 0 R /Fit ] /Parent 33 0 R /Prev 35 0 R /Title (Reload \(BE only for hub deploy\))
>>
endobj
37 0 obj
<<
/Dest [ 24 0 R /Fit ] /Next 38 0 R /Parent 28 0 R /Prev 33 0 R /Title (6. Local sshfs workspace \(not in git\))
>>
endobj
38 0 obj
<<
/Dest [ 24 0 R /Fit ] /Next 39 0 R /Parent 28 0 R /Prev 37 0 R /Title (7. FE nginx \204 two server names)
>>
endobj
39 0 obj
<<
/Dest [ 24 0 R /Fit ] /Next 40 0 R /Parent 28 0 R /Prev 38 0 R /Title (8. Verify)
>>
endobj
40 0 obj
<<
/Dest [ 25 0 R /Fit ] /Next 41 0 R /Parent 28 0 R /Prev 39 0 R /Title (9. Backend app \(crashes / tickets\))
>>
endobj
41 0 obj
<<
/Dest [ 25 0 R /Fit ] /Next 42 0 R /Parent 28 0 R /Prev 40 0 R /Title (10. Rules for agents)
>>
endobj
42 0 obj
<<
/Dest [ 25 0 R /Fit ] /Parent 28 0 R /Prev 41 0 R /Title (11. Changelog \(infra doc\))
>>
endobj
43 0 obj
<<
/Count 4 /Kids [ 19 0 R 23 0 R 24 0 R 25 0 R ] /Type /Pages
>>
endobj
44 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 874
>>
stream
Gatn%9lldX&;KZQ'mk$`Xb$QCd9E-ne'<2!WCqU/702(<@u3f%WW.A_E8oH4[Ru9_Cl]mY5-3UB]+dB?B`FXl!G33S/gsO<Z450BKTIcoSkXZ-k](1T8<be]KK,!K(Si52LXX17r."r9Ji*&X"A$c71o-eR'7;-T$55e8`t1F2eqNVl/cbPG6;oPQq5f,2Pq9;B$Fo6<_V4`oBXB8Cgf@$6,rZa_2?%I#\:Ep-A8gD^T8u7scZhTC*Ds[KeBF\%7,e(<S2qd/i25<<?tR&h?jY<:':;dZWn$es&230a@>:CDBknb=s+/-ui[8`,p&'Dl4tUa"2YEZim@Vfic1kQr5]%WFdL,4ALgkUSr89;F8Y7lo8#HKqA$-g2ikCEef-bNq])dbTUr+NNA\jZ6p`R)Ze(];MN;YtBPknm0"j#6NeQ!)d=%e=NLm$@\iRuR$JXagKT]QL0U=Z9Kq>.sZ+SNf!?j&Z1/,=8=&>NF"pW>mVgCha@=u=BQ.!dlc%Di(hf7XUYm]gAFi([\e)?a2B_9ph4HYBFLf1m2mj77S2n"<]Amn]DF1fmk=gcCRNj-$K3Xa&5d"dH)!YYc<2`%+5SX+M(KT8k4iLqjYP;M-^c`k[5T44A/5d!FE6)tgP>gsSTSZ']!PVa&7dWpPE?,P8[r+Sf?R=PShTU.GW<'=umWS@'o-`ep2tR.5POAC:4O;_/^O;AcnH>N*(L/t9]j2HnMu#cu_u#s,cjX]s=cnT\%EbMIB`jVIg$`J!l3$kt188jnmT<%.]\Hb``Mk]+Ehg7$s$XngD;_scREVo@qYm#0og/;?otY2jKi>%b(oRg%SKi^%71`KXR\D:<Vj3+mr2kY3]$;JAMDh@h6N!:sT81&~>endstream
endobj
45 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3271
>>
stream
Gb!l"=`<%c&q9SY-t'<1B#`e(;:I_]YoP4P9Jj1iJcuQ"'\/A6:i%aU3VLYqp8r3R+t4R-BbDu$<c!WXAl[I5oi3lEJq>Y@s)kdNQZJ7,<)>H>Y<Xrj"6OfH4[8i<R@;AW9PHUD'a(PZ6o&o>_#&'fDc@*JRUj9_$`_)#muX7J'1PgWY@nB?Hf?S"fm#6Q]I6O(K)$5.QqnZPZV!ak%_+>da@cRHM+M^t$aQK=!I*Q,CG/clqtkCD9+q*n'ga;$`90B1q"+J;Q8m.bcYW9(i+k!^GTnTJC;SW38chQ+7+4jN,i'Llec[8Ae8.LkeXcqhS'<4f,u)q0n4(rJ7BlV+8[;DU"`J.C,&qW-eDIU%`b$l0;`fT6DYMSuOl:D%?5Ho858mYZIC'+>d:&cFlHW\/juCS%$3E,tIrn-8<`<bE-B4;\0k<Le85Q'c^6puk]+eaJJ=TkU\"mmmhd9_qICtlSbC5"_%Yo`)4J]&n8>2Vu>7r2Vim@b=?qF[^Yd2]]HIOeLo][r8(kL`EYhjXu'">#5#LaNif6J:a53\D2Lj2@HEuIrKY$]L`6fS<%4er[:MrW%hhjcRH&(/\kPR2tg+C"ErCdTHt4(7okfe)9cle1*lIgHuJkLOB=[;O(?h#_sO=L&s-#6$,8N\7LYZ_`f;deDaS"R,S;)aF>O+h9Kk>&lQBiltCiR)2E?0-'^:$'mq@H8tNLmHbfV3g&T1?(OFC+\QE`e-jAr7^JJl[iZ9Sn(uB_DXK]:(6U$-+`>lSa9gW25lk_t$o#TLXEY3UKr#Rt2o-KDh0MX$$*E*pFjLAf/pe\:L\^hV^Ko/-T'eh:D(fL1`Z6&@\M`8i$#qY@rG^e)-MPWNDdX#*5N)!s1MNRdL8dN<rVkUjU5a):ZJP#u'OLV)^^$+ppIaO_AO!@TUR;O&qU,@MjTCmp9*9F(%q#l#%H(5MJ9e^_J62OH?Bk`a?Ts!3[krV:l%#YaW@?JoMi2E!J(3gcJ@Mk$8t)UIACE;"P75-7I)7jW7`U1eA<!]D$G'd6]%T?a</V'jJ5]J1>+1bT7!;jr3E:YnA[M;Q_8fOLI/Z-a(tRJ'8OA_!-ZWBq>=CuMWI*YlfuFiFYit$6&\1@38O/$BMr/UD,J]p&N6UVs5nVr7YIj6pg?pts0(pMbYAkmAp#\;h)=K6o;[U!`I>!?IJLV4D5MIc;c^hp"8]#^%Z]#nt/*5k]U?E0GQhUFG!RU%70Ap'eH!6g_7"-I[9H];XbNm9o:UB*F"?YPT>_K$%M.<\rVV`eA(!-iHaH7Yo9PD?Y4j@rfko:d89<rS]IKD]U;eR]M0od+@s1p+obbF18&&!Jn"pl'gQDBNe'lhZGNtUlJ;ijT1b5AT)Q1dgRVW#BUJ%kusS\;S%I=tna]g,7/$M\&!6\ZnbJET%ghU4gmou)tEM>o3bVg/j"://8j_)+53&(5:Nb:j@")"6j'r4hnEL)7,h[%i(Mc*='HML>W`>M<)eTT)qRZ.O$,^XM8:j;%,q#Sk8mIQ,mWg)45lVNBc05,tFJIdIU-Hf8nj0"`?Z]Dtm`C?<#%1<*nA+#S+EXjtkg@:,^@MAhb#i3B,'7H^!=3mXc8Oe!km]#ktuHGAm/i/\4pB$D=b]k?,S]g/sR_4+P_2D]EFg(1.GqSR1i_Sa9.^W(Wt!(L8RglnY)VU\*RjDrMBRq>V]m504@s,j-;hJek?Xm=0mp8be:?eq2?q`ZL\25o0hSX0>94@C_%Yol<e-kfs7#m/i94E?/gSet!0nGJu?cg&DjPTnfbD[j,JKoU#&[!!ZTgE=JJju19kD/-#HSf3eETsuM:TI]&%qeWdPaG*oG*ep@30XA^#%0o8@U402QO"46p5-Q-&8MHo:Jt(H3:()T&-BN%7)3Lfn@=Q$Y[o"6,bNM0?]:t7*rR`]]mN(:;gfg&tGlh=o(4KUm1NKg+YVD0+g%6,4'$u7oHccJm;ePtb5P"Dt35K.KID>fL:=i*Ip)mR4ksr0_BaS$9%,%(D2c](5$rZJdRj%AKJO>a>F<='Gm()e;HN9QU&*;GpPR9GCV?=([hV(`ChDtZH4P0,hq<B*TQj^6`I)Ps[(W]7dD]8g##VgMm*aP+_8^WWudmlnU0;7jFhEb>8*o`Pm(afo8[bXG4K51P+d#U</W+bkn*93JH\fOA?PpItfZ&%9MVPT`Wqd*-*@"(@b%RaJnrE-hE03,_'1oaD)RXkmu:/NaO,Y<#gjgt,rbqRq\Z].fBpdG%apChGe;-gB8X1DZc0P/5ce]7tCfGtg'VC)*HRrkTi1fMp1QIA>k=J`.G[S/$.@B9h2YS8f#;p9$s0I8KA%a#X.g1-KWGgajsc<i>%X]S!C'ZmZ*G-%BI'%aDqI9BmYBDKjc%G!'e6["J%"m?m;g!XL7h?m1BM-5-hbhd(,G7]IlbT3P^cpZ9=<=9nFZlGmkHHpM3ds5E/%]3KKmq'R/rY=?5E-ZHB@0gcB'd4Ja:aAKq5`+1t;.;GWF[sMab-[MiC@mf]r,=UU`teO"V0l\QlI?Fbm9*MuW)nE,TTEqO(hqN(*Q&TqC/peH7U-sKa:&N7o6Bg8>CGtF`+^2[*laT.)64=Wj+4S#?1F,\g$Lu$lc"O.V2$[7B4Ll(\6d[e)WMI.*nWX?`kLi]]E`U=A+^17]s3p[6W__tl1SS/CG6/^SbJn0iFLioD+Fca`K(5h6KLM09le/V,#k4k[n\!s1N"hK73>%-:cru%Ma%IpD3AbL$L#ERHKPBZBrml$QOJ6W#FPXN&ur"t%o?i6qCh[);gHc>C8l3)k_l"p0*UDO>/u3,(UN"LF!-U$X?YF_:?]g3d&5/e$9+YDJN!:3`@Jg*pWW%S.h%Vl!Z&$q-DEuE(C0#b$N-IY@Xu+Yf*o_nA6K$6E29X:qNIB!M:AjXZm'YC0I0"A[FX-7@W&W\$%nB:*EbJl.rV3gcM!p1hh&gUlX9OZGj3$ZE?]RR_N(j8\&Tac]O2aQ?Xar'C#hA<YH5jTgpu+u_sA763HcW#`(^>LKb_Uk:pHUT'gOj\Y"FSRZm0DAB&dKMMkV6Z(_U)!nQ54N=1V'"'=8eWIDKo48EQN(5YV3G/0LZDiS*j/"E;"bPQbl8VsheQX27V\Fs?b:[r4#hQp1*]H'@_&314',-fj8aJk:5b4iji&4TB>:N"/(cS$?^cGP&fm@,f])8P"ns>D!H_=JMn<N9/M;O^'q(Mqm[OIh2#]80UASIaW>$4na<L2jp'$,+$4qk*+@@Tepa'?Sj-jgAH^'1T4TCO\:l<SGa8D@;lJ~>endstream
endobj
46 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3237
>>
stream
Gb!#^>Ar99&q9SY(`9q7mEpg74.W;3^ogle#Hm+\8Us*j.u=R$Z:i?G&ELTufqh70.T19hZpnP(]A/hQG'<#;),X6"LWY+[28Hg/R,(T3.Qf84l9pD_pMg(Mnb34CcSTL5B[d%*eF=&>a4KCNpu0DS#Ua<jk_;H(WgYW<)K5n=T.Yq0.[I2(oCr51<NWoe&,AkUP_rE5MHNh1[AB,ml<]\>)mnB@^9PZ]oR$[0]K[QmbhU;&ESu1]RQVu[rkuHc(.:?5+ffE"^4D&8nF2VQo`tI9`2T1t9Z9+bD$uO_8r87&0OZX&3XJqMF-G[)[<ZME.sF")q8A2T*Q/rGh)Yt=cgs*/)PJY$p.spm!$2:FZVi`C]BSUCZR"ZNj0L,bqog76Q>E-b9I><L)o`-E%\F*1.Wor^#Cc#Veh"soa)M:k"@+HTdLLiCj8Y`(Lojjl6)",OrmqNe^fFX+!peW$6hlHZPh%0F0-A>FV>e#'IZ-(okG-F*#4O&`:fSm`6EF6Pm,.]8!M"$=dl%n&-Bf(cU6^>5H\+P?\t@?V5MS!q9,7!/dg3WH=p.K]XHM#om+gaschfXJ:N";r'/s,QkH-[W##>ZSA@sJK?1jZ'6"+%JGLU7:>-<-"^Y$Ckgm67/g2@g&nX;ldm0K;@;2kP2Fa$eBa&82K<A4j`s'#]T$d;W$Ji)>'O$UF/N,Q!:";-H:e>m!9:CZ&>a<ukIC5)p\P>2aHAZ1Vq3`o#I/e;0-_Gm47%X#Pp>>EdC[=o(UN-/nZTmL)#`j%\K!2(A>!*%?8p_pR*CMn`cNUUAS07:7f8Xq]j*ZrVmUMdEeR1K,]8=1gACQqT5LolaBG=uS_'^g,]$:bs>GA>UUgp88J4k:$Yn#i.O->!+CEVKTDOCg$F>BpSnT\sT9.Z.GbJJ3JbU&t>eZjB)!88pDUD[EA,c8["O!pVCnd5:4k1hdWJG='Y5Nkuf!KsCA47?6;\BoHB<$TC9@+cZ]6\urkji&3;*b!$l2h<T=$p*d]&NdC+p5e(3#Tbpo\0/"S75e&(R'I3u(@@+QN.ZuaB_M3s;;#k0.[@aLS=U-AT]SYo'bEApZbiP7j>hM`=`?h$Gl\7XmIldulL4O8UV*kH7H0X].i_c%k'XOqcFO(_]ZO"HVBr,L*e!L@g&<51tf>?F@kO[@Z5!KO7kHtG%`3rItp!"fliNEcrfAfk9<CHThR1t\aZnuF)LPajZ[^qQ.#h:)G/;B5j<(?AV(r5':)8N.9<fE0R.RZA@M@9*'BsD+,?`'UkdPq>SF"sBI&*uG2[YmuDL_"7g[2"tLMmNGrHt`Xbm(5?dlti!kSf8`Ujb%Tb9k]l68-2tjI8@6]g<HU.2>&JPAWrb0-lF\V@&\H9`7@MgCJCGBTX&)?j+5gH17sJ(iOd*&o/?o`C"M!`c#_HkRbER^&d=/;DCB6uX\G#`+c(J-[2"e;9;I8-$@"75^jIm=F<pjV(@bST7?C6mYS6giRYDc%k5%13G#@C2)GoTJo8+Q.b[BB&iSj2L=qeK-q3s,9;6=^\l:ChVgUZRWn9sM+[d[''Z*ANS1U!,ck(IFUe]:74.,ur=DN_tDXEE&O8s.4S<h"6KLQ&*=-N^q)kKGrHY_omJrs,8X")5u(5%EMMZp$I)*QB[GKb;VT!n9f+CUc@P0s3dNSN]7qI#<ENXGK_j9JLJAm,i;CJX^gl2I`Db;A[b(>)&E7@Ic6!mFR?8p&"`K1UM_@Rir0LF1L$A?&_2l^s"O"B.td>m]?`0Q]g,(r[2mjZY,WN[bL1C]H=<91n1U&5PAV"0'us1D/C_)Vh7@EmP+LFL-d6l#140#p-pW>UZI/mNUWNnZ0S1\iMDWj0<U_Q00\N)nSXRKW_+^illjcJ1J6+2_O^lBS)R`P1#;UZ8EpB-%"@sPj9OJ0$;)9\7Eif^gr,8+85bD>Rca5e8I_CTNnQQ\ZaFhjM1m"7^jBKTkk/#8'XfarS0jWY,4sjrTo37^UFs;ng;N:-@JKD#qa#s.18Y_1'edP9(p>)e0g+r<N',r(Z'X_43lV/g@MHe/:KF0XQTSJ"9aBI'V2Is27a6ha"/RJ7*NW4S:=k`(G(DYY!IJBD8KUmCY*FE!#eWZ<X!]QJcdm)ZIQ:!-:X,_h@GG*P+s5%gGfDKlc^mU*r("l/j\<K^+b8'1auDIImb>dolc7d&<V@SW@=M=UpW'=b@q=3bonsM6W/;,gcQ_fTPPK*EDoY3b+oPC(r/;H$[Ui6rEV?t[f;Nge%!>gX>L)P0FXtXK[<,G2UpKhqD:t<>AZ^;N]h,7oF^f$p!Hh17o\?jG'+Z-<b@n/i%`]&sg*D[+<aZqe*qL0!bDH!Hnn*/`(:79K)&*m=0JIH#^#Zs_*i1*;[\ckf*O@tPX/8fj3&*0mUi[]hhUsfAI76/:f44YEWhC*4>Pdh,8B3@k>KQ<5lR]VpBjQk#'Gh,?qnXgM0X[F.Z3)9&)Xb9UePN6mf6$B"a&hlnNdZANO5`QS+emI12M-%jnqZR@7.#HIlEqI8aY8a^ZhNDA(@lGMZdUP!OPbf,NXP!F`O_<k]._2bRoAMua/aB[iTU+%Sb2\J:&c:dhk0G0&*6p&iIe(6Pg24SM^_$"<H(8@!]?Jt7%r+"T<rHO-S>(flWP2'CH[M26W<`:bpm1^M'$X\iTZDgjU8sg",,E$^Lc:=O;4>2Ti!kbW?Qs.A'MnR0M%V"2g\38/Z"S:=fE@KXFH5=lpAS(cE^5HD"=/L?#OpfqlI:4W1!%30Xr8rphb.hg0S85`rte?e`C*X>k(3cr*)_%k`*E?0-&</X]jc()Z9G0cCM)thh%jZA(6mMTacG+M'CW<<\>.=+3Fc!)0@m?l$@g6@^pfi#/2WW/Mn*jTtSs=RO3%J'8FT!g*CmW#j)=T>I^.V]5#m'K9mpeDRYaSgGFh=V\t'cY2!^4"G`6G]^6%RUK^,J8^U2N>SLLm(:&n8QH.CY.C!K^G%l>S2T^7&UVi(d<e7aI[Dl%i$Ds2t3-p'T6d`"M'2IW[2M&U[%i2cc20(9jkEODk@J/,&]aYK\RXTp($o=M=cQ^ccSSmEWq_,gU5'jK[^<Yoh,tr79neSR)X86,9K_`8Y2SM<-,3`ZMQc0SXR=C,qqqun:G&8NN;lOLm$qXf?fVI^P9rn:5IKh*%1#_c)lUrFjFcCaG.db7AjNus;VJ5GCjr'`=JicO?&M.<+DZJ)nSJ1-:DMTBT[dPZ&n'-l--L*M:*L6'il#?0B8K\_4~>endstream
endobj
47 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1515
>>
stream
GatU3>BALZ&:WeDlm#)ZZ%Ocl9HQkug9dYI$D"mbP>R8=27DU;,+!e/<ot#=TQP:0gW8*6^>8b]!WaBMV#3tCJF3u;B*8Koi<2^0"Yf;\l*,><,>6-$oV-Nm#8"q\kI3JQlJXWNP4_t2^b>j_X`F#lQKq,Ql[tWm^#MDF-$MHn""O]qeJ#poN,**Y&bt/FdD5hls1n-N?@Im;>lZ)6Kt@=-HJGb:Li7e?V+p@/(e,d2iTf_DZorF4B3,llF81t8,3L=m_3A?@0&X@[d6,>4XF?`%@jT)R@G9Kf;(j5]2q5MJa@!PnFk)U]LoFiQ+D(kOn$d2#:A"1,l@8u6<sj'Fki-l,h$57&EFm)lI[u+'cPd5(9fZ`NCQVCI?oDhBbnVKTc_Z2!Y<P(H@X16<Dp02JHOR/6c&[o#^RknQLC<-t(@e?;,gqEIfj#JX"jc/-G6ta++r,;4*IPQu%Dtutroq3u+4VauM2ss`TQhW\=\\k.<g-Q!UX/N\8(]kdGC5Z#a"HXd<e*r0.#`&$;W3A,`JiW;C26kCfEuZ4d?q!,j33lW+#fZ+<UENYV^G9?WEhA?l!>e6LF8t08c-8l9k#dLK@lX+;ZOSa!cKV5kV2cl:U+M>r.%LeDCQcd@cGek(]KnP`,el?qtXWh+-acA-pGK.E5Z>5?0Uc+,Vt1[6=)\"9SGAqd^JW09GEt.B^b-bj9+7ZFp^b5THf\<G@3Jp>'!u#Q;Q`3F8s"g6+=MsK-M9NC`u5b@"Up&S):@s"Cmj5@)b@ofG_&,2TFFoKZ;6bL8AT!"%3+eiGNKMfTVD8=%Orq>>6:Vb\[_qUame_0n8b+-JMOs),(1!gk(q3EoU2?G)'X20p1/sXAa3`[`d!L6)=o&[6!aeF\pI!M9I_`>UrNL1gN\TB+o%ikPBf]J*<_Ll6q#[%0!#$GIh/g00Q(=T&[:dZlu=8.P[N<hG8ssD/S!dGD>bIb)iJFPk1fT'?AbV&sGL4MTZLH9fOqM`LDXck&MIoegoeG,8s%T7Ftb*EJ<Lf)uVBsU\^>KiQYO*nolr,P4ncU(jYVoL,rhjfX3I1O$$,k"`u49/_i'6;Rpns<'5+Y=F)=EN`[%BNP`[=n5CGKm51#!9JJENDl'O).h[0qfI)"b?.a%s"l@tsYjHfj>6Lf,3aC`Js)$`mbD7.GEP*P?KL)h^Xlm0-.r9dgl9p*V"qSc$:-e<7>)m@"&Fj4U&/mh:V\5MW-AQiAI4[l!jbjBs*0Kg<"'s9-d&hd-/YL8nBP!`%!UGR7!M,C538O,<B$qIf,!UD"\Nf0+\XUa-+oBM,Ur%7bo/c0cW8WL@8h([aQR&,%B#Ll%dZ_f.%KnbVG#'&4a$P>Of)D9jORb@GS1H">O78.jEt)10`/Y:EgVWK!SKNh\n?ALa2WU)oHrj,\WA$E8qhC_-26Ta7+=,nErqo[3KR[5=0RMapY#6+$)ueu@s4(WZ7;bJ%pG#4kN=B,E2CS9Pdd^@V]iaQ*mn<I1Yi/asn%&_2rrAb4Z1J~>endstream
endobj
xref
0 48
0000000000 65535 f
0000000061 00000 n
0000000146 00000 n
0000000253 00000 n
0000000365 00000 n
0000000513 00000 n
0000000660 00000 n
0000000808 00000 n
0000000955 00000 n
0000001102 00000 n
0000001248 00000 n
0000001395 00000 n
0000001544 00000 n
0000001692 00000 n
0000001840 00000 n
0000001989 00000 n
0000002137 00000 n
0000002285 00000 n
0000002433 00000 n
0000002549 00000 n
0000002862 00000 n
0000002968 00000 n
0000003052 00000 n
0000003130 00000 n
0000003336 00000 n
0000003542 00000 n
0000003748 00000 n
0000003835 00000 n
0000004153 00000 n
0000004228 00000 n
0000004321 00000 n
0000004459 00000 n
0000004568 00000 n
0000004684 00000 n
0000004855 00000 n
0000004967 00000 n
0000005086 00000 n
0000005201 00000 n
0000005335 00000 n
0000005463 00000 n
0000005567 00000 n
0000005698 00000 n
0000005813 00000 n
0000005922 00000 n
0000006004 00000 n
0000006969 00000 n
0000010332 00000 n
0000013661 00000 n
trailer
<<
/ID
[<12469c2730c47a48460adf663f7f8cb3><12469c2730c47a48460adf663f7f8cb3>]
% ReportLab generated PDF document -- digest (opensource)
/Info 27 0 R
/Root 26 0 R
/Size 48
>>
startxref
15268
%%EOF