From 8e1bb1c395c30c668dd4fc89b57e1b2573df2a05 Mon Sep 17 00:00:00 2001 From: jensp Date: Wed, 26 Mar 2014 18:21:35 +0000 Subject: [PATCH] UML-Diagrams for the persistent entites in ccm-core (not completed yet). git-svn-id: https://svn.libreccm.org/ccm/trunk@2586 8810af33-2d31-482b-a856-94f89814c4df --- doc/PDLEntities.puml | 2 +- doc/ccm-core/ccm-core.png | Bin 0 -> 3805 bytes doc/ccm-core/ccm-core.puml | 18 +++++++ doc/ccm-core/com.arsdigita.auditing.iuml | 8 +++ .../com.arsdigita.categorization.iuml | 18 +++++++ doc/ccm-core/com.arsdigita.cms.iuml | 22 ++++++++ doc/ccm-core/com.arsdigita.formbuilder.iuml | 48 ++++++++++++++++++ doc/ccm-core/com.arsdigita.globalization.iuml | 9 ++++ doc/ccm-core/com.arsdigita.kernel.iuml | 36 +++++++++++++ .../com.arsdigita.kernel.permissions.iuml | 8 +++ doc/ccm-core/com.arsdigita.kernel.png | Bin 0 -> 38492 bytes doc/ccm-core/com.arsdigita.kernel.puml | 5 ++ doc/ccm-core/com.arsdigita.messaging.iuml | 16 ++++++ doc/ccm-core/com.arsdigita.notification.iuml | 9 ++++ doc/ccm-core/com.arsdigita.persistence.iuml | 8 +++ doc/ccm-core/com.arsdigita.portal.iuml | 15 ++++++ doc/ccm-core/com.arsdigita.preferences.iuml | 7 +++ 17 files changed, 228 insertions(+), 1 deletion(-) create mode 100644 doc/ccm-core/ccm-core.png create mode 100644 doc/ccm-core/ccm-core.puml create mode 100644 doc/ccm-core/com.arsdigita.auditing.iuml create mode 100644 doc/ccm-core/com.arsdigita.categorization.iuml create mode 100644 doc/ccm-core/com.arsdigita.cms.iuml create mode 100644 doc/ccm-core/com.arsdigita.formbuilder.iuml create mode 100644 doc/ccm-core/com.arsdigita.globalization.iuml create mode 100644 doc/ccm-core/com.arsdigita.kernel.iuml create mode 100644 doc/ccm-core/com.arsdigita.kernel.permissions.iuml create mode 100644 doc/ccm-core/com.arsdigita.kernel.png create mode 100644 doc/ccm-core/com.arsdigita.kernel.puml create mode 100644 doc/ccm-core/com.arsdigita.messaging.iuml create mode 100644 doc/ccm-core/com.arsdigita.notification.iuml create mode 100644 doc/ccm-core/com.arsdigita.persistence.iuml create mode 100644 doc/ccm-core/com.arsdigita.portal.iuml create mode 100644 doc/ccm-core/com.arsdigita.preferences.iuml diff --git a/doc/PDLEntities.puml b/doc/PDLEntities.puml index e1cc3d68d..1fd30e015 100644 --- a/doc/PDLEntities.puml +++ b/doc/PDLEntities.puml @@ -596,7 +596,7 @@ namespace com.arsdigita.forum { } -namespace com.arsdigita.globalization.Charset { +namespace com.arsdigita.globalization { class Charset class Locale diff --git a/doc/ccm-core/ccm-core.png b/doc/ccm-core/ccm-core.png new file mode 100644 index 0000000000000000000000000000000000000000..55dcee442e9cd4c89d15d38a37f270e67eccaadb GIT binary patch literal 3805 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" + +!include com.arsdigita.auditing.iuml +!include com.arsdigita.categorization.iuml +!include com.arsdigita.cms.iuml +!include com.arsdigita.formbuilder.iuml +!include com.arsdigita.globalization.iuml +!include com.arsdigita.kernel.iuml +!include com.arsdigita.kernel.permissions.iuml +!include com.arsdigita.messaging.iuml +!include com.arsdigita.notification.iuml +!include com.arsdigita.persistence.iuml +!include com.arsdigita.portal.iuml +!include com.arsdigita.preferences.iuml + +@enduml diff --git a/doc/ccm-core/com.arsdigita.auditing.iuml b/doc/ccm-core/com.arsdigita.auditing.iuml new file mode 100644 index 000000000..42ba3a338 --- /dev/null +++ b/doc/ccm-core/com.arsdigita.auditing.iuml @@ -0,0 +1,8 @@ +namespace com.arsdigita.auditing { + + class BasicAuditTrail <> + + com.arsdigita.kernel.ACSObject <|-- BasicAuditTrail + + BasicAuditTrail -- com.arsdigita.kernel.User +} \ No newline at end of file diff --git a/doc/ccm-core/com.arsdigita.categorization.iuml b/doc/ccm-core/com.arsdigita.categorization.iuml new file mode 100644 index 000000000..e364d427a --- /dev/null +++ b/doc/ccm-core/com.arsdigita.categorization.iuml @@ -0,0 +1,18 @@ +namespace com.arsdigita.categorization { + + class Category <> + class CategoryLocalization <> + class UseContext <> + class CategoryPurpose <> + + com.arsdigita.kernel.ACSObject <|-- Category + com.arsdigita.kernel.ACSObject <|-- CategoryLocalization + com.arsdigita.kernel.ACSObject <|-- CategoryPurpose + + UseContext -- com.arsdigita.kernel.ACSObject + Category -- com.arsdigita.kernel.ACSObject + + Category -- CategoryLocalization + Category -- UseContext + CategoryPurpose -- Category +} \ No newline at end of file diff --git a/doc/ccm-core/com.arsdigita.cms.iuml b/doc/ccm-core/com.arsdigita.cms.iuml new file mode 100644 index 000000000..1ba99b06e --- /dev/null +++ b/doc/ccm-core/com.arsdigita.cms.iuml @@ -0,0 +1,22 @@ +namespace com.arsdigita.cms { + + class ImageMimeType <> + class MimeTypeExtension <> + class MimeType <> + class MimeTypeStatus <> + class TextMimeType <> + + MimeType <|-- ImageMimeType + MimeType <|-- TextMimeType + + MimeType -- MimeTypeExtension + + +} + +namespace com.arsdigita.cms.authoring { + + class PostConvertHTML <> + class PreConvertHTML <> + +} \ No newline at end of file diff --git a/doc/ccm-core/com.arsdigita.formbuilder.iuml b/doc/ccm-core/com.arsdigita.formbuilder.iuml new file mode 100644 index 000000000..2ea606237 --- /dev/null +++ b/doc/ccm-core/com.arsdigita.formbuilder.iuml @@ -0,0 +1,48 @@ +namespace com.arsdigita.formbuilder { + + class Component <> + class DataDrivenSelect <> + class FormSection <> + class Listener <> + class MetaObject <> + class ObjectType <> + class Option <> + class PersistentDataQuery <> + class ProcessListener <> + class Widget <> + class WidgetLabel <> + + com.arsdigita.kernel.ACSObject <|-- Component + com.arsdigita.kernel.ACSObject <|-- Listener + com.arsdigita.kernel.ACSObject <|-- MetaObject + com.arsdigita.kernel.ACSObject <|-- PersistentDataQuery + com.arsdigita.kernel.ACSObject <|-- ProcessListener + + Component <|-- FormSection + Component <|-- Option + Component <|-- Widget + Component <|-- WidgetLabel + Widget <|-- DataDrivenSelect + + Listener -- Widget + FormSection -- ProcessListener + Widget -- WidgetLabel + +} + +namespace com.arsdigita.formbuilder.actions { + + class ConfirmEmailListener <> + class ConfirmRedirectListener <> + class RemoteServerPostListener <> + class SimpleEmailListener <> + class TemplateEmailListener <> + class XMLEmailListener <> + + com.arsdigita.formbuilder.ProcessListener <|-- ConfirmEmailListener + com.arsdigita.formbuilder.ProcessListener <|-- ConfirmRedirectListener + com.arsdigita.formbuilder.ProcessListener <|-- RemoteServerPostListener + com.arsdigita.formbuilder.ProcessListener <|-- SimpleEmailListener + com.arsdigita.formbuilder.ProcessListener <|-- TemplateEmailListener + com.arsdigita.formbuilder.ProcessListener <|-- XMLEmailListener +} \ No newline at end of file diff --git a/doc/ccm-core/com.arsdigita.globalization.iuml b/doc/ccm-core/com.arsdigita.globalization.iuml new file mode 100644 index 000000000..42b525902 --- /dev/null +++ b/doc/ccm-core/com.arsdigita.globalization.iuml @@ -0,0 +1,9 @@ +namespace com.arsdigita.globalization { + + class Charset + class Locale + class MessageCatalog + + Charset -- Locale + MessageCatalog -- Locale +} diff --git a/doc/ccm-core/com.arsdigita.kernel.iuml b/doc/ccm-core/com.arsdigita.kernel.iuml new file mode 100644 index 000000000..3ebc4de48 --- /dev/null +++ b/doc/ccm-core/com.arsdigita.kernel.iuml @@ -0,0 +1,36 @@ +namespace com.arsdigita.kernel { + + class ACSObject <> + class EmailAdress <> + class Group <> + class Party <> + class PartyEmail <> + class PersonName <> + class ResourceType <> + class Resource <> + class Role <> + class ObjectContext <> + class User <> + class UserAuthentication <> + + ACSObject <|-- Party + Party <|-- Group + Party <|-- User + + Group -- User + Group -- Role + ObjectContext -- ACSObject + Party -- PartyEmail + Party -- com.arsdigita.kernel.permissions.Permission + Party -- UserAuthentication + Resource -- ResourceType + User -- com.arsdigita.kernel.permissions.Permission + User -- PersonName + User -- UserAuthentication + +} + +namespace com.arsdigita.kernel.security { + class KeyStore +} + diff --git a/doc/ccm-core/com.arsdigita.kernel.permissions.iuml b/doc/ccm-core/com.arsdigita.kernel.permissions.iuml new file mode 100644 index 000000000..3f63726d4 --- /dev/null +++ b/doc/ccm-core/com.arsdigita.kernel.permissions.iuml @@ -0,0 +1,8 @@ +namespace com.arsdigita.kernel.permissions { + + class Permission <> + class Privilege <> + + Permission -- com.arsdigita.kernel.ACSObject + Permission -- Privilege +} \ No newline at end of file diff --git a/doc/ccm-core/com.arsdigita.kernel.png b/doc/ccm-core/com.arsdigita.kernel.png new file mode 100644 index 0000000000000000000000000000000000000000..6e4f21768a44f6d2b5de5d8129de9071aa5c9342 GIT binary patch literal 38492 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 z zf2(v>1c4+smA#hazp9z{yENcPeH8z<;eV#s|E8Bbkj89>vPHG&-rZt*mnF=srKptW z0dV9QgyYXb?~H#B@!)^Z^lm6L9ByldST5=QEA?s?3iyPH06JoJeXgqHt0?5g!PnNtM2BDk zm|DVQ@;`qeHq_IbEVsH3qrUxASk+ZlNgu(ezz{wvojqhyklx+d*%T&@6#4~}x=09&A6=?j z5VY}_eh#)2R5+dlH2Yb8Ken3QnLE4K+cl9>DswAs>gj=HD*WKLGchp{6%`GK_n*NX zJ6jSMovWE?g{~W7>ucf{1Y+Iyeq-HZEAd1_JOB`FL(kk(fQ;O2yg`SS{IbW_pdUNR z4BxmJs7o2pxLZfyZE;h2%;eNtGc^(9I(zzdeiu4aR8${S6&VzTgoM=8VnX=WJ}$!E zfrI)ZeZCOkWC?T=<2*=wmlh`bCk*f>lz;7*qQqpsj|d$ZRC>s%55gm^TXV)cu}#0stnWM?6%M_}sK??PIk zDD1;sW$^5}jFH-t)HWg3JZe+kYL?L5c zP|Hu_x(0c$;c#Yo0FEmPPimG%J8%Qh5y{&@9m6CaRU5 zit1uLq?>i8PSCn7bj^>r%5}H?Raa-(^!m+|L&C=J@AIP#Oq>3AK?A89PSZ(F+`6k_ z*Uiy;F}#(wYyO4^h=0Blvkj(LIr5cD*6LLxHWDH$Mq~+V6NPXrdG3t_xl0?VafJVr1{2h?o?V=(Z-1T z%dThFyt;oUnAJE4rKNnlMaKP?6QfiL<_SzUh=K&K;UTQtztPmdc3b1y23@2YHKa8B z)ebOb+q3;8BUiF7wUN!Y4%DuRSlaS_g~n|}IAzeo71@4JmbHU@LNh&gRagGbJ;8~< zuGn}W-Ti`Dh=VneK0C?j>fF>b5BF&OsQqwlK_+2%TRpj?I?7^Xn@5`Bzmrnul`dyY z&KD!y@sA0;hQ}ORb5y(gFY{|-hSOmq?1lLl`yKb{5V zy zHEKis-juSv4Ox{@ABQn7oAp+2B0shn;9Qdk_4WZ{aCSU)FZ8x(nNuqwBBmQGfEb^J-% zbx2K9Y9v=(U0y7RLSB48ET}!feOfKMc6_|_>TKmj*G8G~K@Nwx?!bC0UUVD6A#A9O z5k~E)>vh=()e54Tds}yjZ}3JSSFJ>)#wjqOyVUX~j&7XVsj_eQ=#C`%`*8+qwRV53 zC^1)EeX1&*Xh4T=@8Dwm&%<9k`g=fRPLg5`@7K*=Bbt(f%WZOnAH9{<-&anl+k^a6--Y(&a9)Y=!K6tsr83btyld7&e|ye>UV!p0OrQ=o&1w!zjor zDFi9uC)-~ez4c>oX8nlxR~c=N&5Y)1+2+HWL+SbiGp~a8fkJy%?W;)chX3`!)yct= zCd0|{uR?rHQh2)&%(0T}D_yZUYYBt-Gj;rsH1PxH!`1n&qGC(npW-FINO7MzR#;FR?LI70Ux9BKbHiCU+ZgXZmZ z_Lv<23%ohxp-$E7nqx8LiX>SY$+7~yyvCn&$uVZT^u}Laro?cXMjgQ? z>)PBEj$EqDe4jFBOns6U7uGM{sl9ONCXZyp{q1=R1;c9~D>EM+m6B%cs%EP@3953H z4VZ$5+_T&QVmQagN=Nvoif*dHKTNg62+=EMyOyxTvhl(2ePv5Xawb1U2tRN?IFcC< z7xpUK+~fz>j?(e-1_8B4XA|TM12xQv=FCx?`&I%sUZ8w zMb%ZIac)*eYd;twa%HW2u4L2)hQ1?OGQUX6r~EN_V^ zu->2HJ6wZU#Htnej&hH4x?C2^iOWgs9@i2uvEfaYJ%CZm1K^>VC<>)@5fQTXv;*P#Bq}N2C1-lWGo2!J-h{_XzH$ zx$n15O;Zw_tnI5l;x+z6+CEk{v!ud=A1cvQ+m|X0 z#9V3PpuB;G|8B`?GBMpe6o>|E2y1-?K=HW z7zHA}tU32*hIfcu{aP!%dmwMn!N)=}T7jUxC)~-7_+5AZ_wJ=AcH}jk57T2Xn>AAU}bZ!pf4)JhT|`hz^IYz0+MN1BDvK7Fbn-@_+Lm5I6n5R$FSvrSj})3 zKq1Jq7XV|ZgbY0YM^Y%F@%fX9##1Qp87jH_!PH~xm*|dNALvt+B7M%I+s8IhJ)Z`_0_yf~Ozh{iP%E`dl*iu$?-{j;F?kXtgJ+ zX(%_kFGTfdDQjY*rKvk{{^3bD>|v;^u{k&TAHJ;&7nj7&p|jLiSA}2?@z2;?}J1Ha!MSN=8Y1 zsm2OTr2h2cUYU!vmR>5r(|mk={C$Fa*?nKrJOSNqNHJbrRy&rK8>!kv&F!77D>LC#^3K|?VqZ0;Cxq=p!L*(kB-I+?E4ygNP9c+ zFF2Ov?xw7t3kyg)wta^Ydui;uT}d&uuHj!!6D&cJC+eb&ODv~cVTnP55|BeIxv zH^oG3J2mI?1Z%p|8S&YS@Cy1@*a?3X%c`5(y#h3p3uXmoJu_h6KP0UfzBGLV%gCW% zKS^ogEf=vRcc*6yQMrf0sET|RmvMAIUuodU!wrh325rcMQr7%`*EFQgKkO=ZJ7k)> zlV+clV#f8>Mq|Qp#wT7w0}K3Fux|E{v_fV1*GB&j3IrLd6b4yOGT7!X_{@w`<+7`% zBDv7MQv#AzC8c@X^*$kwsMJ z63>;l1E4UtUK_>{Ue-@%`fQ*a;aD@zxW#&j2grvEfTF-lX6?_z@mU-N>t1w$m_|)@ zzxqCwyk#8N!)#m04NiEiU=Y2(19tNHhffdi9#X0^n0524%KtEhBZA8!qfcXAKkvWittIKZ#ri<+c_i-v& zkVo_F9k=yOthJ*ynr%RGw7+es7BvBisVi>d39D_fQi|$owH0~NhjK$8QXTT#z|}Vb zX+fs;>-0(Y?wBEzd>b+$h2g+;dOsVmKHk$iqHh*&ztED>UW?3(^Yk<+0KMV_0|RAe zWThF8VgE^hJ+Ar2VfKy8oiM=oM_=i{&3STj?xXQ~0^$3py#f?N4=^8>lDd4FZkp5QGYm4dJV!wZSQYOAQnP!FU{1H7CgA6aNOul?^>qom76_JHFQXik2alYvS z`5U2p68{U=2oA!hG?sL%`Aou$?ao*LbGM@zlJQ~V8KaXp_O<^edrySSBljVdy;f|b zYuJ}tDSv1dHQVK2syT)BklUku?;eUa{UX---yI2MbinvWjKIhL`Voq$d>ealh7O9n zV2H&Qw^tWUr$uc7TJN%j!STD1)P@L|{Ez|TTYeKzT;X zNwTRbkGK=1|5bU;&8>cobN^Fz{UeRY>8?(?f6d`I#*OP*sWxWz$2T?hvGvZ~zN5iC zxHpjrc-QGz_)dvr5H=XjO z;7T`MklojS%^*i7;xXg9x;h(6#}S)WPE@RZt6Cmz&#FBM2`|x&fkh41dFq`C9>-La zWmko@vE6nVyWRQz?mU+0J?~=3+G6{Xvd&dkLHwaw;B9t!PvOb!x!)q&VwsXs-Uq%U zKiNr-(ybz2xOG??uyB-4u3s5+|_C4f%_4_ldolzXi3c<2*B=bq) zb3y3gZ`y|s?MSUIH}db&AqXbZSQvg;-hm~*Y(`MTlP=A<=}h&NhuCC;If_LZ-p5q# z?CKjCaYnyW+yiPP4HhPH-t&3I3m1SG-avZOwA@}19iXZKob^4G~B1#G=n^%hlAgE4gtm5zaIt&Sdal7w&j7Hy0yTm$Y-)ANxqN@wX2H;FlD!Gyx_eZQ?wDM}Z|8z(z|1IQ%6>dAizVwP@BX;fzh z#DeTk*V1WqzT!}fPuIr#{3Br~3~jv{F9V0+z_BcYLcP)4n{Wf#BWSs`Q1qISkxNhz zdO5_DR&u!zB&d0+tur5CF~z$*Rb@Qiq`14;Gsd%|M4EnP0*pXPY%?KPZE+&Fp9AN}JgqyH2i zj4z<&+(_)FI2~hmKNe5}e5QcA1958XB%g65mg#m6()Tn3p&m zk-H*_UCweu0}u=l`OL$@Qi~6=!FQnc-t&pD?putU2dLqx&m6U)yDcj)$P5qXK0kJt zaTPEOe7x|_E%g<&^e+g`mPlZVomeZ0To+WV6YV11GMm^yI85A3wP$SWGQvU&i%zOf zbz%<>#qZYf3kw1*W*5v0aUj?H5j%T5WKT=4X#VK2X(kYguayTvz;(Jv9sb@~FM|z+ zZ+_x)vXuN$k_9>ul%eym)?szPQM4A5FOQZd>+TKzbZ+M+ zB=T;FbI?z72wvcSRQ|M03F zu=-|RXmy!^_1{qp{Lo6YZSJ!m-|m4%v+wO2wJ(X3I95q4_@wythnq2GvUvUfvA04E zC>nl;xloA?DsUpRr`wPt)eIf%#W@Hx6Eg>snDfP{4ebX zeDAlVkfGM_OL$SUop-ZVY0T{H;Y{X4>W1@%>E*Io*pU?j%_a@nB ztDB*6q^H$EAUua}hb$xD&`fP}(Vg-!sg~Ga1LVG0)`V8kvAir`?^oiT5ggTy2hJrhm(Q zX!H7ZPhSH&PEsDBJ8wO7Jh*1val9hOFo;uI>iO$|3S!UYj&_03 zO#4+`U%MWC43Nabd1l6W`lrdOte=JGtlmqK&{-27DY-)fOmZoeyBJT=(L(!Io;(tyz0&TYMjAh*|I)S<=Z(|ltanT-3rl#HdAz6<2f zjD_+Krmqug$|)YyNtMc<@?)wuc$6JLlFa=b>dO^68-|jlNCNyfx0}6KT*;8j^}C2BGWU>+LP6;$y1Nrr)@?23(x+{8a~v(7^fI=4Sfx2bgeHE{KUcP*nDtC5vcJ{0#0$jUi+27N0A(rr?ap#P? ztg@2`yuoK-K%!OO1Iwv9eP(QI+z-MRqL*6jP0xP(NPbM`^S-+h#sXxs_V{OHLg5&o z;BD$dBGhcKZxS!NKvD{a!Yk-y1NjQa&Z%i>KTOgU7`#54art~Eoyklv&y&4$sx*t| za5!i$naFu`v-sNa;IDM5b7ew;icP`wyu6;Co{@lp=5ZGiV~@0^dN;fgd3|%4JrL^D zu7fub*5Nu7MwFRD;eIsJcKjXXGt2eiql@tx8cADe2DFr%-F!cI)0MJC>g6*P*sdN( zojifNMdc)6!dC{q%neXUnV+@Q4XEGC4}0yEut?Q-Mr!-= z&Gs$sZ#b#w_&4E~&o1??E5NZ3nMTLG-Ft; zlV2WEv$M;?Mb*^Cjrljv;A4S_H#{1cwoU=U?;PCmYiWR8nqLf5!9rgeL9OMlHu}IAwPIN8_WCL>#G3KBjsB*#3QwJJyU9E*B5`cejc4uR)K44n zm}rzf|8ZXul}X8>Pj+=qbC2^++WYtA88PDa*~|BsV`L7NJuQTrgu92_wAcKkReI6q z_?6XFBtu)_1j={A&zg4f2&FSJvGi}rzve??!*kn`y$jPwb8`oKyUa}oB&vtbxF6VT zW8^+7Rmf~9w&kf}5g#*qJ2^|zo_0SFJl^`1_LhQ%$?OvST~84jI1&Z2HwC)g}dxl(2uMW}`8)jOuDVoh!;V8Qi>#<7>0%_}TRc zV~l^kAdfe}qwzK@Gx%#=Is9mMvaZMtu1QaKyW{eXY<5>0WBrA`9ey@2)q8@AM5rwIJa!gE8@uH zAqLZy2F01`r-9VKo>R-1)#|r$PqmG8(DNuDiHO2-xt4oiT=a^Q(DW;1rF5~Ty1$Cq z8?(3k(6>UGLviuYGfl$qNLThzlizzigjoDPHs_fXpu#)VmYy8)r`{^jS?g6A_>@nS zrgeTNxq%7l4(?)RjrOKh9HBY)P>%CyTIV6}YUSYRjx#sAy5`8XPYZ8uRXN7aB=`8# zPa1o{x=%Z;758Aae3xV6>%Zd{pr|jyrPA>oDMWRNza%l3QeXPpW87|V-?LDmt%}%j zQk-<7|1fAc#r#S5kc+Ni8I;bgOyJgooB|G!tc}@XU{CnF9FN%AiyXz5)W1VC;-t0S zT9V(;X869J9dIo=rfNhU*@m#$`aYbapUrp_En0$3!;^v?UbE$&Cs@-mX++D3Exm#h zYz$jE2=q#(-;{p#NY#Agefu!*(`Qmrm9MH2=pSo%FI~-Z*K5q5V{Cf`w^C9ao6GMV zktZcZRH68uUj8a~n%bhu&)d4icYBkkJkkml2Q{Z!ehYqFe{mDc+fCu0<{M}zH#%t% zhIR6g=YECIo5%H5w;myPG=JV#R<9Pa#V!M3hg|7|21H<#G+7p7|08L?f0Iuh1gu`Id@MrSNJTEhwcSz#NmV& zWwGC{Sj4hDav!Sq|N8c~E?hl2 zA4Nh&GtJ0QD4o-B)t`**u+GB>_q!#srkr{Dnm8=1a7doZDq1s^S?jRqK6oZ-#-+1x z#{A;EH$A)2Of=@`75?pjuUzR$XX*%`;!y5nyDv!q-mh#4!x8lOlYplimbF(CcMd7` zX1;)B(%ye*il8>jVoAvjN9rSdbn4O~jV^%pWt@7sv5`8cKqGqLA6wVcuoV<#`z=BH zkCF|uca92Uvu{7;eSMr4QwMh8uii< za;khWJFNi?st)#cA>CWkJ>WO<1>J{LjB}{PD7c2?O_ruigc^mswwPvxSxTM@uhaYC zx>k<6jNJU%=r4cA&S5y&PspnCxcVvi?G2dLJk`1Rd4hG>nKE6ab5+TLw#B6dBlzj} z;ufoj-~3&1IZesb(sWf6w+2(7z*}NS3(DpR)KuBWHPS4zX5;}ySP*4t*KQ;v*nqMw zQW{#$Q11s*96^_Nic#>qw$i@b9V5ED*R`i)L7Vd8L^G!;by}d@Ts=KEyVtQWw86uhF*|hE7$9Jy)q#@z( z!9v{P%QIy|;)9xS^|lJP!yNI{vp~ETsv)vT1d`mQU4omnT$A>lTZfFOqx}gYJoiDB z&%kr5WHX3_+vsoGQti;o#77#DX`P2`C+2da(kScZyT5n6+Qmr$&Vf00Ma9$V3 z>*r;%sh_gzMah)!UPn5B`e`FyeIGMl>moF1%1*5kCGz~WxoE&**$dPb6rED} z_2;QzTB}jlT&H#&HqEFgfjkkMQ6o*CTxGMy?_Mx*?N2n$Q_hXIsq;%2rm2rvZVZlN z-1$v(u^LrR$%zM>Uh=;lHrk1D;BUcLV>IOLc6{_m9lMs?wRdn|aeP%|LYlwqWz#O( z+K=bqCAz7{ns=s1YOVRHIIjNFhjjU7)U;SNCsCwO8hch4L`WImTlXX=wP9 z!wVDz_N@*Yy+*4>f_2aq-jUyQKJdc~R1-lq7WV(p_0@50HQlt*dU}FZbOYxh!zQ6-yUs43{xT=4X+qzh4xevHdCyd?8+OQ74%CDS z{w5d33;I0EL959*ZLOJp{0Qx4@8p2&bA~+o0*o#lm3DUn0sxuW*+DY#5fOH)-PoYK z@(kkXE&-ZPwq?QdLu^0DxHC9y&O#ne??^wzpB`*~EI$v%J7PM}s=CK-U`ET(GG=KN z5p{8LaS=fBcQ%vHL+O_Ag$&|sk|INT*@g$<*Qdc@=^p0NIBZ5XZvr@ zYaB1X%kaj`PSQQxFiMvHMrB`oq^fH*J{0O1y-cQLy%4ot(nSe3cJKP`y0XO|EBRV- zCwr!*Om9wDFL#s1UUQfTl?EZhcjGeTVvkvDgPHr^N2Zel``klt=a|N{qyLM|Zn*Li zlotv57wk(533#mbYs;N<+J3=mv!m6&yGRf10X02zLYAJS`|j*)LCgFE4m+lg76!jE zv~{Wd4PfC=%!ST<^K*szc|iXQ{VNk4ma0G#=5t$RBC$W`|8rFD%;)1ud!!Ei!>ML` z`2x&1QL<}@b?i4haK!svqG%$&`Tq_54Ow0+T=YW~Bg&9AROWjIk(sL>Y&mV^%%nLW zyzGc`r$EoZyTs}a5T$^3G(IEwZddK_o3868HKvfoF<5?I5X{(_Zd>Y zvVO79>T#e%LQdU*cv2@+oEmff4cvq#LjQ|n-MztEH@6|!kX1XuA_w*5vX znnN3s=px$k&_~P@j7)ZyG1=9CbEay?okQTS`CXdTx^_8Ab5!Dh{Ykm;m%Zfz^}
cem>}W?6|ju*g3&?vK56KySQ#iK{8cZ!=$xtVdMML>?5(nDNaV4~ z)ZAGRb~;`UWz!Fv+yEQiwfj-=Se`^htBx%#MF$f%1fKuP2@leJGIscHpM~B*kUGcH zbElvyAufb;%xAhh{M1jD!1<7!&*eUZ)V9WaLdk*_4WD#XP<9}Tq! z=6>Sp3PNPX>iwzO4w$VWsHixvtqV=&H1Rccdt_!0v-BI5Nd{+w$08!E0&sRMmRuv_ z?nk7JeB<3bhKTLy;E$y2$HgG&+u)uD`u5fJcp`hBzBk4gadErB{Yr2i4$i#yHOu?T zX0Ll;pS$ZW_ec#9VPPmYN7=_V^w$emBKg;u<+|f;meKcai!YG=D09p2!kWd~U{Rq3 z+U8f+oNN>OfX(%Lz~;&lOA6<9lu}>g@>m>IW*7}|nW@xEYLSFgIbjVPSy;>lgUFrE zKACS%s-5rUbyXH@n~S!TV4pzn2{bj!M$;nN$DFptS)HHB^}udYc9h_bzImS1f?>m+ z{cm{SwGL)2YI;F0J+9A&D1^>FUkuYo8xM)v>J|bmVnp3liZz>`X2f!iZFi0inA}M! zRV!&cdNEFQRRM*%7--y7CU1wS`<9-68*(eMix=h&Q5XKt=tbit)`I$Ev_yj8kWpI_X zqt_(DWo`R*NvhSk>l<@{WZX38P@+d8FjzD{cOZMu*vQ_u-TcsO3Z#@gkje@*0)r5j z8%188M5ZQP>l?tpmU?Gup1g+sMdDtd4Pvrrb)hMdPJ!I?;xza)(@?#Y5X6wGP&bPA zz;#{>IF|}7KR>z}Kj`xE4+mmAsdr*pHi*3sR+6NI;1fjKfxsFHA8D>R(a)|%D&AMf z%*NwBI-UxN8xbO&jHD?Lv1XjOwf}R!PvcW|7s&1vf8m9<$wh`Z>gF*CQ$e$EartfDkC+jl$c;zb}LCOTmff={)vRW1ry#0AfM zYB=++HE0%Bv!EF+yGwz{#z4qHQDrb5MNe!ggzqsjUq_}8=ya@wneEIoY>AWpEu4b% zRh=%n(KCASxtry4h%f0Dn`&OEX1m7)7Dp;$3mbz6;L78{HN&PEzz!U0({-fQS@ zlck^A=oPRLzm@L5uPMf=BDI7fa{p}R$m6C;qd z*Y^gKC#sm%Lat_u7>7)EWTa)ZfXlYSkks3+28=1@Lw*Ljimvk*cv{M39E+>`+iUjv z53z8Cw91Q)c?SA^*GLm-Hlb4$bM2gsy8z8y0@orhUDx%oH2!F2z)ye4=Gz3@Oh1C@ev1FlkBO$tVE_f_OT%A?h`>O&Qx|+N&Nr{_5$^O8&z5!At*6jlDRwjr&(X9p`K9W+W*lH zxc!XvQXWZld4|(bq#B1vk+=sq1j1dbFi9gDK7_H&Xk0`>9}DmO-?7^4?7o{S#vKCE z&(%F6nGnHr-a!(x@)P8>U5~jeC^vHuj7)x=N0fQV6y4w_8~VCk$g&SB^M8g6?;6M$ zbi?w^PJ)^kv@Zo}-b&O9VLt9*(|3DWg{@L&(I+bpTxdkOZKa3WiqgL`_@aO7qP8Pk zb zUQYcgUTirddi=9&g}+V;SFl4EiD>U!x*0bF{{`e~!wCD|LtNLM%|x{uyQmVA>lU_| zV$3?il@0VlaQNIARcBBnKb8tPl~~bwcI}eehA+bLru-wM$2E^=Y zD5+ro{w1GDV)fEvS;1by*{--zVGb!}y^+4YW(Ga^H_Wrv!5mM!%#JFxKH6b02= z#K)!K*k5vO@GcHHP{Qjtj^T?Q z*GUcw$IbEmL{zUx)+^lZ^RcfRCzX5rcX4NNuQd)bW6T1Kmk4`n-Jb7fXAWtn?U$@s zpV<6T&al?0J0|0;*+)tkcyqEY2 zEtmlHhk02wM}qiR=?^@imiZMl5%Q-l9`9rCK~ifuliI zo>>$#O@E52C@;?i{_Hg#PuYEjom#5+nO=f0_uIFpl%~?Zj`z{nbSBc1=gL=G$1=|L z7CMGDM+`bR_}FlS5jzp9BfPAyC27r*QN94%V70(Wo0;UKzQWtNu3%zS#@9~I9fzr& zzjrIgCZ$mkkPAuY1ty1DB^YQpCLF_sYuZTgwq(XmN8>!AY!eBJ|R zZA{p22c93@ulEL)xiTP@^>)yU|KReo^bA|Xu9NQ3m-RsrO~q_IzaOCbQOPP zVzE6%SpuhGl&gQrs3x&Pk+(N2-nS^Bkh*ENiu5Iv7Fj?k+5FqTu1QV-KgrEc$P68T zX(KNnzCd-XbQgyQ@uSSo4gQMOh7>Z_S#|CgviiIlnf_|);xr;6!y;XN87v42q*oXU zthO_-#(RytdimyS?N_ep#%b&qQJE1~B|Bl9S5w&yC4IAu%M);-ERzb5A*2R~m;Y>g z=yF%=E!u-oplGTC<;I>mI><-XugaEyiVj2-0JAsg~mwl@F2h{;vA`D5B7)} z_xdv)dg}MBBlHnoR=PJ+aMjhG;{sE$iV`JN^;Lg9v5w(j?A4Xeyt1lWmP%!-? z@!^f!jChLHo7RG0nZS;XvPRP%B5;ZK@$8N`i7v}eP?o?;hl($obx%mq0BYIPG3b$E6tS`0FMYA5!lVsAcl{n3HQ zqw}rh*`b=1-(*~QKqZwh1hVYR%#b%azspF{Y=ZrLTkwva9o6tp{Br3Iw7IZ=fU1~Y z$?1cOevdXJKaXN~fFK7Ar4`mW6j;}+VNPKF_xBz>Z%^@v?d$Fwhvq5dwo4hx(}YX# z#`AmXA>4R^=ur*;u93Z9yOTBX4YUg>lV07rQwiPxF8w)HlY0pTal=o*3Ll7O1t>4u z`JKy_FD-o*N-Jy$Ob4`Cl8dq3ee!K-eDuppTpwPavh-ZQoTZ%Vv=`2Kg14?AN60NV z_Y}<165WxwlU!2l844UtF1WBj+0B4s1!W8Bt~b!jylYX+RPwyXu6DJC%YK@w(>e~Q zvz{kr_Cr)yG}vB1455kJEyP`~ zQC#uaU&n=zaj*GWg`47H0!nfP`}%=^sYblZMAFlkQOG!BSY1LcJDpGwv}O#dlQxg#iu z9|e2k<}9&FT>(;SO(z!H$Xoc`EfCfB{GQqyM`I%orp? zEhtp#hR5#Ij;~;d0N;(n21jeEM-B3&=cCAhj@ucv#k4f-iuQ(= z%NiIi=?GHdTPiFX;rKWxAPkaa_JpB%06W9R%^AI!>oF)INN>=^o;C3VSp2-l&O0&A zPB<_ryr4=Sc|)u#{wvh;BU?#F=Os^u8ajd9s*Z8lyv(}d#&RJUIk<|l&|9LITBIp1 zfm`22aWy{UpzTaf>Z8-`$jskq9=8WBM#B z(`9ISL*5e*_$zb|+{pues=)B%amWrAcB9tsA~5SGOy2oiU)U8f44WHlDk8()i@ue{LZIb{S(1Tzu;DC9QRbT)cuU(xzonY*^gOR?ziL4XGpCr z+w~6wfe@d_9PzE?byIj3Yn8%*#Pf2y zU><%4{ZdUq_8-emW}c{@<=_F;kC7mwS>{H<*Pz^NTS zZQl=X2!-@^hj2(ZFmLB+0yox!iNMh`($jM#CMWVv8nrfspiwc_g?7B28e^d*kos63 zCYvR>Wj$A?0J!5}HN_iI#C+jL>3(^~8Nx2E^I0CGUkD`zh zBNa8UR0v7^he-U{a|hr?d0_!TNm43p(%Foi>FFSmH+Vs9@eBF+Nl>bgyp2v^ax zk43Amzj?Ct0_6ZOj5Y8p+=lYQ<&u@&pUF}y6+(2_Q zyux|eXHn1vHH>^@Z)F&*2FeNB6@G<&Xg6aOVAPau!LbWjeo`*Z(j+}tIuM)S*|&RUE(ne-1htyGWqtSzp4~4)3$!6F6O9J8+|*V zk=52>Rew>s1Lmn(t^6#5jBd@pEl%)hd&lyazc|gq4>tHV>wU{W5U~sp+3|q78E`y` zU0zYuS#-|w<;q8Dvf5IUu_D62f2y&bB>p)8JdyNIz9`)X_cLT+C4N)VMzXwg6}Q9x ziTm|D*T?H*GwPpe{YctR?vY=pI}|+m4>OP24eL%NM*1g^UL_7ql5NA|vgQ@KD?Tm1 z$UlmCDyAkTNMLPG&zaEp~Up*!jRK)vQwObz*#(x5F z1K_@o#>cAAf7*4mTsYm@@f(JaZKO=0nJyJsseFI!EJImsS(Le5JMNTHvGXKtn>PYI zuCjng=l^`3Q%tHj2o0gb5?IkuI`v%3aAAX>oP0Ikg)zQX}PM7oG|`*ylsI|&{N(| z`qJhpf`_`zcdvtkpp%7~7gyVC7~?QGVp3PALtS!2a5nN>%!Qcr&i@$1`SBfWy>xM7 zf|pWUG&K-TA{tcoby{}AQctJ(5a!=u*FGm4?p9(|xX;ESZ?)J=aa`MYa}h~fQSY+< zo=iA3=Tt;r*K2g@T%0TsJ|r@W_>M~#9Zj)136pyh?_L6++au@f92_mTUThY2-qp$w z`sYMHk&kVEqTpH?B5Xp3JR%dd#QK%S^^t)&uCI1z9%Dl|f85}6!{>6C;eT{X!uMw~ z$c#|+nVKhrKWWwrFD?C<*1Eo1S&5n`Abv^4`_rx7bl|;o&s4E~c!u@PpOzBchTMe> zK5MP@CH9@)(VMe1KK3p?R@0m=Hp0D*5f&FR;gq^rqoHeI>LuNSDf{`zNwKn?@!61b zrW}JM3_Jz%@VD4d4gd$}hP&C(aCI7-?20EA0TI|e3^f+B{$*dO#u95u;d0dWt$?Cc z*o&<@pS#Q6s+_yqd(X2Sm<7pD5{Ad!rQWGd+u-2(%_Yz%1q+Md`fRtY2pCVz8R`bz zUzo44zFwQDs;%GWC3RjD3o$|%)NNH*{eaV=uU!6jBQlkM!0t~ z!eYK&Rk90XK-qmRTi$B@uow2WxY(${(QVz2_=+5KQMLDF*a)+P)P0l(+|I$rrec6p zgili3wugxe;mXJM3c46uiCk*z=6XWbMVbmHo1MbmiGs4pNnIJ)u@iw5?vGzW*VhQB zy6wn>IjgIiDk{WzAQj~Rw&p+QxDHw({UKosQg~w&KixO7`g>rMs;WIR@=Og;;abQe z9P~t4K4Ip0y7gjM$jsOu^S|e!Hinh<7d6_3_pYd(O?qnRcsp z&F-h)+*20IO`drz&DH$~3L?mX1jwiCbru0hg*j7v?uL{y{MXh#>@SKc_#nzs7Nz^O zxlBWVfteIQ$kud4;@+3IB4iw!=WJ<#V#$G2v@cUbhC=_TB)Oa!Dq=4f_tHo6e(zjY zpPhHOS^PRWvFTfMB&5b&Tf{o=Z*j3?AH*wrySVt`f}*6+ut&#AyV3QzLkpSku+H}a zkCxeL>y$s!)0I|J&cpv`$1{J?hH$zYQ-TyD7^i2>sw+Rq`gnPX78dq@T)@P*v~NWr zbNBl7s-YvGWsKsL!&&BIysFWSq-nUevw`yor6HYdj=Z0Bue|0+&i&_ager6slH?B$ zHDS#JL8_ce#oF!nzv9w>cy)Ik$b4H88FEr8yX#R{@nPGsCu6J3t4q$xg@_*LcEG(a zyCLY<9(m$DI7M1DTV_)&%M-K+|5Lk;>_8_kzB}n|kZ@l48fz8Czf+J?oxc5C!13cd z;?tMv6rVqM*FoCGF$=OyoUF1wqytaR z619@T;g}!fVaKJi6s03FBWzVy^8)m)HiAPN!pO$l%}IyS3Tq|E6=UxGElw_Hi5l%P zMi2mj#NU?WeiBysN0@qM`Id$?m{JW+_~5rqx4{zi*Y#vaDk^5ky2pB4;uH_~>B>ha z*+<`{xJ2nWCL4y)cNC1Nf9g~x_lsVJzb?!}seyNH{EDjpj+7C^a3CXFN{1OMbQ@cP zw&&b5_UYDibRo&f)t8HhcGu~gRJa3yAWFQ97cxhOp`?O5&Pxq^>E}VcsJ>*R4riGO zGtqXzV-AWLPrd--h19>VMsYRbp*w&2Qa7|+e{$`3-o;UEE6cK&iW{IE8dQ~-sa3jT zs>9v~l)YF5gF-^$Jw~zJEEBe6#*xJH^}*ecIo~vgSLlC5hXH1O=O~D4tmw?oH zrNaS29mUniwjUxf@f-zi+)UU>E}vYAX2+h6{n0b>1@-qs@XH!5dt|C(iHZW@)R!45 z$gtKyMnxbDcxH5F1lE84sq%E204(DeRClC1xj-$%8xtGCI z&}Ci)$BBYd;S#w-g+r%{!Gbs_pkDGzT`y%DVLUtbnM*)_ib})QGpB;`Vg=y(RSYqa z(H$Vo0}57yr^g;=h&s9%ZxNfsPWulyt??LU2FA_@u{TI)IhtRw)wzQKHa>#w}5C&awZ zXmAby-y62dWiKs?nT$RGm2DZn{TdGq@0?*+vsFI3y%sfn$T$B^637k}D2*Y_gyKII z>>Bw**U8Pm&Oe}~uz(=X*@z$p^SXXEA+(JvMn*6U!^^g7*;k_CG&5nw!-z|mFFhNn zMj@HB#h3k1k$!=ImeGAw$grv*P;6q&C|LuZgUx;SvgR z(?voh583`vZoZbKKzaU-$omm{Nd2pS?k-^@;)XV64Y5A5o)H$zB4t+95{?dnRot!g z(UPCx67*)S`g5$3Cg><|W9Lp>=blkCsY8I>5Uz@zhFlD?Zut`IAe5*kd`YaxR?bR&hp}3Nq;+r>p+?Tgas4E~@v_;ghchB8lfEGo?dT!cLWq z3*LWn!h!R>b#mVSY+qe`!korGkI>wqakC*;KfI&`OXf>FvFMegf9sC#Am=x0^dLt7 zm?X_YB1$IfecB5Q3=I4iQ7SU*wAw{#d?2!@^?Im{@L|#-JSJS8L(TZi&H6=|!(Vn0 zRg-ftDFgF!ws3kyNPQz$T6-L9|Y~5*!i9b!BbR%!Gbpn3j~3jHY!tu9hKe zN`mbQhlo6@D5EA2yssF>xL*Q@oSyx##OBJ^r64rIflC;>+hpoKr1r*oAL(oG80hI! zMc9~_Wb;%g*M*}#$S~4g{4VQXrMi-KbpGI?uO1oQv++w}=rV*iW>q|pjfG{RUZ1eo zH_ZVGWJYeN6SyOAgEPhh6{%!n*NYA7=znmezPgX4r&DjKO<0~vE{F&AV?+3FCL@2b z+QPLiQ`T|D)&ZP>Fm?K=eM1(JsE;zdw9V=1>1Db!wzZ`U8j};?A#G~kZ7@$&U(@SO za!Gll1xe+8H)Ln3sZ-Lu`*I}gUFuOdU)d)_6Uy@<@L3o?+v-MnVb;dP+N<6(N_n^j zekD+;ERFdc_EQwNu|m$f!AJMSmDX5#Q3y$$b2r@brG4KxAY`%D?q0Bagf0wW#+ZSz zCy=4IMhf7MOt)oD>7Y>6!W=ZKJ_`SJ@(*bF9LqzSGvxz#rH)Qn|1jF}aX4xFtQBc1 z{hUm1CbOyO`+Ryvyp!e^hFKKzz!={>Fknt4=HG#0^JZs3)<3@gN`*6vf&{!vJ?2{D zw^B)-V86F~Ipa4xS%O7d6`HJpUk{uZ4_oJTO^`=f0v`aD4`m}6E!N(5igEvh=q!+u z8VOAka=o>Cfe}#JJ!+xAtmOQo7gh|$hXR?!B$29MRf(R*t$FjE0I~AxcViKL-DxNH zRCFW7{wMY>gg{`&1_tYNe_$5PU|-zw5cL7Tl$&n|JqTF|=>~Y0HU!dG z(VN(TZ>M}phKCG(YIq)ZpCl8Bi?~~VOBD`$HNDA)3?KqC#QS*}n8gLFxc^D7K)vNj zsVn&q`61f3nRtA%>7&8xKg*{-l^oi={{VF$?Q_WNt{!t{gOqNb)j@sqdhMcoHJc6=S6K)se&A10^v$j;?sU#IOAKlwI( zT;!>%)B1{*1mD(8MU^GBYyRZ{z(064E0iTwJ3K0ikc#r43z%|iF3^5n!6Sll5P9Rd zhYMN)uRIZt`uL$y@^f$l={lIFO1+i9e^6khQSLliZQbLdwTGzMh^1Z=r4`h7 zfBbuY+E3K_T5&lrzoo5*aMgA5a9pV-T@42VLkWJ zQYaUcWHYn(ih{N>{qE~4DlE)R`0S0qh65N!=cf#Q;9vU#h7k^bBsL#JiADLD)J&X2OZ<%3fAw8Z8CNm|2&AZEbBT^3So~WGd2sh#rIsYpbZBL7uX#xSYyc z?!Q7l%)d?WA<@kpUr9;DzSB*!eOMr&PutT<04Bu>Na50Ify#FDT;0c(c_(XM!0=bI zgQ{*BnV76p`&<^ir1LXX7$+>9Bqg7LFe-nL%=Wt2v(n(O1N7_+i}$1Fl}xw6FJoP# zpm>I+*h|`dU<j z>tW#FsL>NLMhD%>+8zMPlwLV-ca0F(nF~l-OdEgTsD`oG#J2y``cU4~QxqlV3LWq< z!+ufyhNm;#VLpZn2sFDoK}=3gTF+EoZtLH_!N*T`3&zQi4kN!j8H3c=E_!$Vz&okb zgEU%A6?@-aRawtE52uQu<5Hd+A8$`r0KMRM+jDgep;^X#F)Sx7K38KYo6^LrI&oX| z-vl;#Jk89_H@8b#7ShDgvvXSPR=bk~9NbU0BwI$CJkH~}%qRuyC5~0E&vrfTE;r(% zl#LyeNYfXJdm)pFVmW1Ki%lLiU?BnLoj+VdAaO{`)fUrwbY&&Cv~*7xg^=^sI3kp9 zA@%dbb&tEyU?T}7r2?ClmX^r*oWp+O@!*i?ec@#ZU5lbLHN#UvbWDaWGG)pTTYVk$`Yj`y7G%?mLwAQqZD z>gwt$Ob13C-y1(4AJA!XKb@(vI{5;(tf$VVN6lV zJw>4Ld%N2!CpvS&6ryb9lt@KBRl#!A9&M)g&@;c{yMC-7vOAkVdou^9{gvB*GmQnARL~SD>HLTwbhT5_=TSCg65tJU_&~ z!Ls@Jek4Qs^lpA(0lolbj80JI4<#M?Q)YzV*nN5&)m)?rS7B@Ox;hz2`$tJhY1cCF z$B*Gg$#pT?WC4eDuvd#yFueITG(W(7rj1s6ZqVC4@U zjXVCBy&eqkGr4g#n@{+5w`TE;ce&T~*$I&od%v3E)UQBe_MGv$&*n7@j9sSxt9iOnDt9`1IF$Vs6DxgJE)%3@+-#?`<*_Uil@#w|ft zKII0#tLQWWzExU``QJe)C%l637eAYXs1<2hgzC)`Q-NIV|0cVi)LV>gU^xNG_2}yz z5u@#nTgv!bB9jqCf(!ZA*jG_Q-RU{2z%6^kC~bFf^ZlKN0&7znOyUIv9O@I!-}=+_ zy_-Rqd3FIiG6GWASia6_ant_u8s1k@h zYTa*Noo-Wk9*FHPH1W(=uO~ebf@kuy2@)D#pY1|~PsdxoqHa4kh4|cDZI=k%mGu&n zxkD?O6$5}uo*~f+6p-!5Nm>>Id14eOM3us0_1ps&belZ|fUyfp;1x8ixYnN+;t01Y z^UirfxCDO~#d)#h(6Ct#Pa{+5f)n=o)6hvu+53gE^_E!B-l7laCx?)b_OZ=eYrHcN zg_F*4`duLD{`gULb&k58XIal3WuP)EsR zbsqt4TNJIR$r|=1j~uu3@!#~RQP?7C_p%#2-yCee^!D~X+1nh+5U4{sdmwQAN^gNQ zkiYfk1%b6|WLOMrylr&UUIJGekpj$SI}l27G9643=-2M&*EEgd=31&*=GR1Z?^*5$ z7#pMVxjCHD_whO&;N#iX`$O3HD_y?>-rv?HMh6=SU}9o2GBQG-hJ}SC5b|1)^SQm= z{jp~^C+u;S*;7|nCr_twu802oc_icQ;{C0@>H6v{OE{%4@@vZ8w^vH7R3O)PdDxhk z>1bp-;47cBNr}k;HTQ(5sPVZH>og$Zml}mF4|z|K+2#2C)OJL4wB){)rsnNI2kwqO za<{_@+UzWfnefm_@TqF)!2Ij$&mg1o_HYp|_pR}~rUp%)6W}bx?w$8i-#trh_ngao za}4s+u_7YPf6eedh;0_kR9Q{sKvHa*FQtz6nr^fgwHs%;)9;2;qM``-_-btC>y_^3 z8(j9?j@NII-^p9+0^UyBo4ASQ&mtl0y^=VZ*VEOmNCMx;e2tT zI_}`I^CzM%k(q|(dwGd$ENhW=4INn`j}?(q{d14VJN;aq2tuYHRLSpA9~^|VE1IkQ zXvL(fw_Ihn8&R&JAh$kEZwaZddWJ-Ycn*C3P7!ry={%ys z03c$~p7VRdakUKpbPu64LguXkB_8T4Nc~;kVc4ea4(w z&^#wS8CQJs=Z-Jk2W`VIcWkG#ZU`K_UNoxMfZCg7h zZ-sTfr04|Vq?n2L1GcvuCxNg0JNbU;?EhW-2AuFCZJ*O|*RDLTA-P}+-e6(T(u|9f zB)X;3JSj!_vRJ59g$YM{xuK-$Bw>a=;;5vR)-*-}HR;tg7R1FHSh30GPgxt26VY!v zn@zL1779PqKPd}mxICZpd8R3Jh0+QnV$qVQ^3TT=HpSr;xm=qP=utpHAyfxTh^Y{` z;+x|k_O?3(DJvRFFUChvNbra9=o!;M-+-hwe;eOIvU1n263@ciCE3hIbl9J*e9x1h zq@;ZI?3tvbWL8!dT>>2n9AIDkyobV0kFGqKnu%IGXmjVC&vc6Jb8ajSmc4E&NPeC$ z%yJ7OM!{p3zrr2(n|;Z_BuUuASxt>dRlJ;*K%M{vf-j(Ia^6wYJ*+=MGOC&KPB7B{ zEygqC^GuNZ%Y8K2AiY7l1f^;K6GScyO9BB_&QZv+%!TIV(j}NDptwd}fbC8`)xM}( z%4PNWx!n@`649x%ST1|{OD*lQd}M0UGB$)$w+|dCkuTAMn;mBb2j$VTkadw9RC6l8 zL7H?hCHel}zd1*^pBw-V9ZXzQ>aPWtvs1M0ACqMx8$EVFo1I+)cSi>m+;}vmqOmj% zCm>RamHSGbEK@%x=6Na!s)%~`&!4aS-lri0cpeZ2$$Lp9u!I@<+XWVgeDEC-qU-^`UqGIQrx^{99jO>(#p9Fn zea?={w&#VYU`+-i!em7}pz^!az)YT;CTEhvH##>TU3A=0kx;Q;c#~Ot_!+)w4!KUI zZkLdcn4>!Cn1dsJ$lA$9xH6ELV}+;I!Q10A0vm}FqYlvO|6IUv({iE~87(dE8M3=( z6^XW%z@LhvEoVk^u@8PJ)%aZ9nL&SYqL=V{C$h!u?WEpKQTtIRmqo!vUz+8*YZqGi z%aD4e`>)HXJoms(O_EgO^H_Gru)u6eWH;gB{eoJcWt%%CUEyBkj7EaIr*E~luG}=^ zKahNm1s?u|YRU(AM%?enh8iemSD7xBY>?+*gl%5^TS%4)h0}35I`fUr-(=1xa15Wt zwbBhF^X}PqCWs}txq!&}#~xSS!7xTd6=izK4hkHAl3NaD_BS9HINOHA)5HE~LD_4M z0Ba4TYR)JSe7O`ygT8ES2K-Oo7Ff|f;lqGwa`vk1wWol!22It+5fZQWM>3TEpf%k_ zGUNSU1Ky|jhVEu_Js<%R-0du)z<9(jUGW)(kXYAY-oR?a%j4-nMS8iWTJGPOKd_#I zFrq1tvL3KX#Einr>udZ=V+y`*p*S-GBCrOJM)tE@i|P_c{hkNg%5U7MlD&Wb9{KEs z$&qCO_vPx4@jVl4|5s0KPO+B9aphCmG{0xxYv3xHUYzHpYr`!fp`J!`u>EDWW&-Pd zZ_lbB+YQ5rocD!DSzL%9+*iKls?WW@4#Cx~1l`QCEFTFk+g*3iILp?c`__5*JG(@M zdhh=p`RpipVe8bSNr?6Hjf?D95-nZ=3W(!i~N5h{&y(OUPBaAAW{W5;#P!1^zFZsa=A=77S5p!nv_?Zb#G|5Lo2*E2QBN2RJ(w7NZ6 z#nDmZsa2cXOi%c*#WKd7SBSt{QYnwGG=h zm?s~+ouzWaMAp4v=iu?Tw1PvpWE@;8<{BB;V?H$pzDvU`b)5sc-*7PGbHIJZJHEIH zs&vXk%;I^k>Vdc3`x3PspKgzZJyWf^rI{jfkk-a&of3676g|qZ=lEmNxZ}iFHayja z!6}*T3c#IA#|UGfV#X%B)pO{}+&X4cWcS?$M^6C%a*0~nG)v>SpU=hWQ$wDBFyO}d zA_%DyJ&Q$*@wsuUFKRYtZ%$_V)RGIeYAoh$-`$6|Xld?$P#ASeQtb9q^iM|+D#kYw zy(XM7YkXqDS-D+1YwA<;^|LU8*S$iZ*d^tm4^B&R(0lk(SA0BU4#v8 z?i71nzuQ#$lT#6bYD?>Jl5@Jy&L3e%?O0ysT<=0cqMv7Y7L|?CsX@{?87dNuKgWlV zoqKnD;c`SA^=E>Oigg0lJI4dC$$o`3V2#7}=GFbC1<7Lek0wM!L+`%~$npJitrfY7 z1jc~^D?|{cI;Ed}MY)HDK~ky4IvqFvw0T_5pynSyYTRqAY^Oido0z-wtWow zi2j+L9(LZ*cm)9k&cd_}PXUZD12zb6t(;5|#r|5iCH6&03!TpuVlILP-C+g1+SB5_ z^hFeuSLP}Dx?1QY%LRMTMH7-!e>oT+*K-L#f#81!QlzvnuZ&flzDdSgmFBP>+sSg^ zVPjpq0C%)KG1!CmG)^H9;J`qkfR|+zm7iv7Y{PXMCfV84)KgAQZ-=|HH!6mlua>@p zO-y>Y@2lL7kMx@AMNh|-`l$$MK3ERyl(*Iox9}ULjeq@p@0gvc$;; z>~?ubD{Jbszu?E~{tn^<)GLHL8V}+lfL2;ix{7;#nLL}fbq>HH@qn`dMh~q%YX`1i zy__Dl#^Idw6^SMl3l?BMI=!1pdSOw+ufN*4Yhz~a=X-Z!kOrq5{Zx2n+?|2!k+64L zk6DX`ZK0ek=S6)YPZ8T2ov~#wQg5+d(EcyrWxR&%Dt=uLN28hSlGlq{loAZ{l%GHE zd=eJUlMXM2BBU${i}ga2MHi#p?8dT9aBw<`bpo5cu7NJ+H8Cs>Q#Y}}!MCAg0o*LI zv8+QnEtJw^!nw2M=C?)uB@Ojqx0f3vmPB5jAgK_NxwR6jTTdg=^Dbhl=~>(+N3hsp zg(HG_y(?DFefeN{e{WuvjX_`qA>h^a&Be(FBR(c$)v8}4jNu;u5X zr9nqPv9ZaYk_p+HV)<7zVAMJhr|wf|Rz{NN#WMHSDk|y}ln-Ld5w7ob%2q$drU;2V z^C_Uc^rk-$%_9(DSIg!j^_(9_m?Xw7Mm!pFp9pxyz_>#RW<67FFq4f0fAGZ4RQ-Aa zJ2?RezL~Awg;`ClY&Bb%nK|6uz}lAl`~n@Bvo4XKj&&paUUl1Mfh0FMc{%e<^?}pO zL_UI)IoF$pa<6M=`MdhbA-*$*>guL#${U`!+=wi3)p`BVmiv?;xEE&t&};U1=zKJp zq|6dUEDCi1nlZ!=ofoG z-?KYYHIeN7)je_zfydH&P9mu|*Xj})jgWt??^2O{D*4??@S$zIQVvP)!PZVPJpp61 zEekIc&JtDH%*!~KeC7S$s1e7?@vJ^Bw#MO&rM8lI;yf1fi7iMa-bwI@`j|1uGcNBE zUbFC~&gUK$h<3hv>~X!TG;j(if;io{S2RzKmhawP_iUfKF{&Qa+WGjLO)JQ;Bh*js z@sU>UqgMzYKjI{vK9=`-?u*botBjdlH;q~UnzAU(q}Hf^{@Uwz;ABr|mVPdLyxcP! zERed%v!D^bV0^%XTSkZbGP^4cwFJ28V@qdwC(D%& zc0tV?Dw*<{`7;Hz`g7okPeJ$m+2v@2x#|S?YIZGllm9n269m(0YLqk2^^n2~1Rk23 z(y~cR)J#A>-^)_AP%6N+)Uzl|;+|IJi}C*I4mIyP5Xkcq4ac%g9M*5rHWK-U{75%A z3_CwkQH7V68>tsdKoYp6j`ip3g=H6~jcIcKUFoRE%q(t`r$GJQ1;CPuhK4UTmMUi| zN6yatNVc(Q!%B)JgzWr$qJTIq2Pk>!6ReX%Yr=^LS4QQYG}(&3esE0%d)wFN*8>SW zO2;xre=~cF>&s5CoIIh67%aW#Vtwv0l*n>lN`k{mB+$mnmYo z+427ihO>~4gyEb8T+jdikTsDw>zk)<#dmP1?i3uZd;bS2C)I%LaP)sQcI9DB98r8h ztVFSD1f`s{#ViCB4HQbCAx*=v5Lj4_dZGvk!E(qUpoT-FC@Rvj;KyYM0TC511X0k` z1P}?(2B-)k3dpHoAX-k9ew*OYfxeDBRTnHYf5nQFf#qeCXY zy#6BG%$zgz`G6oz*UBs4?eX8whYy}~_BLr9eDItSH1b2hWt-W+*vsBsc`?^f7B865 z7{`w5EDPv5oBGuoM|3BRbu)TgZD51u0iLC4NHDjM6B1f8xKndGp?_}sepY!Zg@p75f z?wz5>8(R+cKrAaQyA-Ya-cyUSUEI^5+V1+M&1!%A!bIBqmBod7A4FBXdJ{QJeK0UE z+k=vRY@&w_TD|`}jb`T5^>iH1X*NHd)?i=dzkV{Qgg0!qBkRQJX}4?QKH=4C*S_a5 z7Pq79+2JnR79+ix!C9f{vA%Krqm(C#m8~uY>F;_~)6?qCnlmPDOTBLNQDhN4FR`e# zkSUWK*XI#vzhy1LfYEvN~rCJ z=CljiqC~=GX>IJyHDtoktOQv%v?c7(Ti@pvItPL(xAf0r?UYyZXkXZlnV8DiUd_&m zGp9l%N2)K{)jo7a)^Cn9-Jp47giUrM^g!#P@iN6skC(xsq@tBfJhx^MEc!$qvm*h0 zzH3b;;b7V&A(qGzgEu!jZHSH;^jTqH`zp;~e^3WqV_6QbVu?~tO&?^4Zr4x?{suQ4 z>?L;qT0x(cO$04ibk|eZ-G*Mt@?iOAQ6`|ag_=bdb{_`UJlRCS-TBBIK|$$)X#9*ppkfsFqC6t8D5H666Tp0| z+Zv~x?UD{*70j5%dUT^duE^ut_cG(~@!m0gp06N4n7{te+OG4#~vHpE2v!(!DoojpQObj zn0qmgstQcQx})DgsBjarP;iIpo!qsV$U-K5;o*btb@}EcE_FZ8WAJy43DGM)a{a3_ zqQtRpjL?qW1LT1>pzgE+?^cil=r{AXV^u`RJp2LQ-smE{6=P}fc+ zfSuhOrVPNephW;L06XkgUd68I!LY_M^5lu90Ji%85Wlp>0oWn>Jd&&$9T^>s0RZZV z>o$KnOl!aagBd@sg_Qx|rEoJ>1?av-%6^0*2x1my5kAmpp@($0Emyy_d5BIyk~r9s=TaBeLV>D z7M~zY8X%UA#ak~5R6i&wh`h4i>lj*n{rp{~jR)8xo*^sRZ{Ss|g!k_nDmW2QS literal 0 HcmV?d00001 diff --git a/doc/ccm-core/com.arsdigita.kernel.puml b/doc/ccm-core/com.arsdigita.kernel.puml new file mode 100644 index 000000000..3e8234774 --- /dev/null +++ b/doc/ccm-core/com.arsdigita.kernel.puml @@ -0,0 +1,5 @@ +@startuml + +!include com.arsdigita.kernel.iuml + +@enduml \ No newline at end of file diff --git a/doc/ccm-core/com.arsdigita.messaging.iuml b/doc/ccm-core/com.arsdigita.messaging.iuml new file mode 100644 index 000000000..4693d2165 --- /dev/null +++ b/doc/ccm-core/com.arsdigita.messaging.iuml @@ -0,0 +1,16 @@ +namespace com.arsdigita.messaging { + + class Message <> + class MessagePart <> + class Thread <> + class ThreadedMessage <> + + com.arsdigita.kernel.ACSObject <|-- Message + com.arsdigita.kernel.ACSObject <|-- Thread + Message <|-- ThreadedMessage + + Message -- MessagePart + Message -- com.arsdigita.kernel.Party + Thread -- ThreadedMessage + Thread -- Party +} \ No newline at end of file diff --git a/doc/ccm-core/com.arsdigita.notification.iuml b/doc/ccm-core/com.arsdigita.notification.iuml new file mode 100644 index 000000000..57ddfdd17 --- /dev/null +++ b/doc/ccm-core/com.arsdigita.notification.iuml @@ -0,0 +1,9 @@ +namespace com.arsdigita.notification { + + class Digest <> + class Notification <> + class QueueItem <> + + com.arsdigita.kernel.ACSObject <|-- Digest + com.arsdigita.kernel.ACSObject <|-- Notification +} \ No newline at end of file diff --git a/doc/ccm-core/com.arsdigita.persistence.iuml b/doc/ccm-core/com.arsdigita.persistence.iuml new file mode 100644 index 000000000..a65996924 --- /dev/null +++ b/doc/ccm-core/com.arsdigita.persistence.iuml @@ -0,0 +1,8 @@ +namespace com.arsdigita.persistence { + + class DynamicAssociation <> + class DynamicObjectType <> + + com.arsdigita.kernel.ACSObject <|-- DynamicAssociation + com.arsdigita.kernel.ACSObject <|-- DynamicObjectType +} \ No newline at end of file diff --git a/doc/ccm-core/com.arsdigita.portal.iuml b/doc/ccm-core/com.arsdigita.portal.iuml new file mode 100644 index 000000000..6db0c76f9 --- /dev/null +++ b/doc/ccm-core/com.arsdigita.portal.iuml @@ -0,0 +1,15 @@ +namespace com.arsdigita.portal { + + class AgentPortlet + class Portal + class Portlet + class PortletType + + Portlet <|-- AgentPortlet + com.arsdigita.kernel.Resource <|-- Portal + com.arsdigita.kernel.Resource <|-- Portlet + com.arsdigita.kernel.ResourceType <|-- PortletType + + Portal -- Portlet + PortletType -- com.arsdigita.web.ApplicationType +} \ No newline at end of file diff --git a/doc/ccm-core/com.arsdigita.preferences.iuml b/doc/ccm-core/com.arsdigita.preferences.iuml new file mode 100644 index 000000000..3f89ef1e8 --- /dev/null +++ b/doc/ccm-core/com.arsdigita.preferences.iuml @@ -0,0 +1,7 @@ +namespace com.arsdigita.preferences { + + class PreferenceParameter <> + class Preferences <> + + Preferences -- PerferenceParameter +} \ No newline at end of file