From cbf55ac4e66599437b0003a20e15e6e303891ae4 Mon Sep 17 00:00:00 2001 From: Nick Thomas Date: Thu, 8 Aug 2019 17:15:27 +0000 Subject: [PATCH] Rename blocking MRs to cross-project MR dependencies We're removing the ability for MRs in a single project to block each other, and performing a rename of the feature to go along with that. This necessitates documentation changes --- app/views/shared/issuable/_form.html.haml | 2 - .../shared/issuable/form/_metadata.html.haml | 1 + .../merge_requests/blocking_merge_requests.md | 133 ---------------- ...project-dependencies-edit-inaccessible.png | Bin 0 -> 19461 bytes .../img/cross-project-dependencies-edit.png | Bin 0 -> 19302 bytes .../img/cross-project-dependencies-view.png | Bin 0 -> 37528 bytes .../img/edit_blocking_merge_requests.png | Bin 4369 -> 0 bytes ...t_blocking_merge_requests_inaccessible.png | Bin 4749 -> 0 bytes ...w_blocking_merge_requests_in_mr_widget.png | Bin 9999 -> 0 bytes doc/user/project/merge_requests/index.md | 18 +-- .../merge_request_dependencies.md | 143 ++++++++++++++++++ 11 files changed, 153 insertions(+), 144 deletions(-) delete mode 100644 doc/user/project/merge_requests/blocking_merge_requests.md create mode 100644 doc/user/project/merge_requests/img/cross-project-dependencies-edit-inaccessible.png create mode 100644 doc/user/project/merge_requests/img/cross-project-dependencies-edit.png create mode 100644 doc/user/project/merge_requests/img/cross-project-dependencies-view.png delete mode 100644 doc/user/project/merge_requests/img/edit_blocking_merge_requests.png delete mode 100644 doc/user/project/merge_requests/img/edit_blocking_merge_requests_inaccessible.png delete mode 100644 doc/user/project/merge_requests/img/show_blocking_merge_requests_in_mr_widget.png create mode 100644 doc/user/project/merge_requests/merge_request_dependencies.md diff --git a/app/views/shared/issuable/_form.html.haml b/app/views/shared/issuable/_form.html.haml index 07a7b5ce9de..214e87052da 100644 --- a/app/views/shared/issuable/_form.html.haml +++ b/app/views/shared/issuable/_form.html.haml @@ -33,8 +33,6 @@ = render_if_exists 'shared/issuable/approvals', issuable: issuable, presenter: presenter, form: form -= render_if_exists "shared/issuable/form/merge_request_blocks", issuable: issuable, form: form - = render 'shared/issuable/form/branch_chooser', issuable: issuable, form: form = render 'shared/issuable/form/merge_params', issuable: issuable diff --git a/app/views/shared/issuable/form/_metadata.html.haml b/app/views/shared/issuable/form/_metadata.html.haml index 1e03440a5dc..90a6a98235d 100644 --- a/app/views/shared/issuable/form/_metadata.html.haml +++ b/app/views/shared/issuable/form/_metadata.html.haml @@ -23,6 +23,7 @@ = render "shared/issuable/label_dropdown", classes: ["js-issuable-form-dropdown"], selected: issuable.labels, data_options: { field_name: "#{issuable.class.model_name.param_key}[label_ids][]", show_any: false }, dropdown_title: "Select label" = render_if_exists "shared/issuable/form/weight", issuable: issuable, form: form + = render_if_exists "shared/issuable/form/merge_request_blocks", issuable: issuable, form: form - if has_due_date .col-lg-6 diff --git a/doc/user/project/merge_requests/blocking_merge_requests.md b/doc/user/project/merge_requests/blocking_merge_requests.md deleted file mode 100644 index 0506a7cb4a5..00000000000 --- a/doc/user/project/merge_requests/blocking_merge_requests.md +++ /dev/null @@ -1,133 +0,0 @@ ---- -type: reference, concepts ---- - -# Blocking merge requests **(PREMIUM)** - -> Introduced in GitLab Premium 12.2 - -Blocking merge requests allow dependencies between MRs to be expressed. If a -merge request is blocked by another MR, it cannot be merged until that blocking -MR is itself merged. - -NOTE: **Note:** -Blocking merge requests are a **PREMIUM** feature, but this restriction is only -enforced for the blocked merge request. A merge request in a **CORE** or -**STARTER** project can block a **PREMIUM** merge request, but not vice-versa. - -## Use cases - -* Ensure changes to a library are merged before changes to a project that - imports the library -* Prevent a documentation-only merge request from being merged before the MR - implementing the feature to be documented -* Require an MR updating a permissions matrix to be merged before merging an - MR from someone who hasn't yet been granted permissions - -It is common for a single logical change to span several merge requests. These -MRs may all be in a single project, or they may be spread out across multiple -projects, and the order in which they are merged can be significant. - -For example, given a project `mycorp/awesome-project` that imports a library -at `myfriend/awesome-lib`, adding a feature in `awesome-project` may **also** -require changes to `awesome-lib`, and so necessitate two merge requests. Merging -the `awesome-project` MR before the `awesome-lib` one would break the `master` -branch. - -The `awesome-project` MR could be [marked as WIP](work_in_progress_merge_requests.md), -and the reason for the WIP stated included in the comments. However, this -requires the state of the `awesome-lib` MR to be manually tracked, and doesn't -scale well if the `awesome-project` MR depends on changes to **several** other -projects. - -By marking the `awesome-project` MR as blocked on the `awesome-lib` MR instead, -the status of the dependency is automatically tracked by GitLab, and the WIP -state can be used to communicate the readiness of the code in each individual -MR instead. - -## Configuration - -To continue the above example, you can configure a block when creating the -new MR in `awesome-project` (or by editing it, if it already exists). The block -needs to be configured on the MR that will be **blocked**, rather than on the -**blocking** MR. There is a "Blocking merge requests" section in the form: - -![Blocking merge requests form control](img/edit_blocking_merge_requests.png) - -Anyone who can edit a merge request can change the list of blocking merge -requests. - -New blocks can be added by reference, by URL, or by using autcompletion. To -remove a block, press the "X" by its reference. - -As blocks can be specified across projects, it's possible that someone else has -added a block for a merge request in a project you don't have access to. These -are shown as a simple count: - -![Blocking merge requests form control with inaccessible MRs](img/edit_blocking_merge_requests_inaccessible.png) - -If necessary, you can remove all the blocks like this by pressing the "X", just -as you would for a single, visible block. - -Once you're finished, press the "Save changes" button to submit the request, or -"Cancel" to return without making any changes. - -The list of configured blocks, and the status of each one, is shown in the merge -request widget: - -![Blocking merge requests in merge request widget](img/show_blocking_merge_requests_in_mr_widget.png) - -Until all blocking merge requests have, themselves, been merged, the "Merge" -button will be disabled. In particular, note that **closed** merge requests -still block their dependents - it is impossible to automatically determine if -merge requests that were blocked by that MR when it was open, are still blocked -when it is closed. - -If a merge request has been closed **and** the block is no longer relevant, it -must be removed as a blocking MR, following the instructions above, before -merge. - -## Limitations - -* API support: [gitlab-ee#12551](https://gitlab.com/gitlab-org/gitlab-ee/issues/12551) -* Blocking relationships are not preserved across project export/import: [gitlab-ee#12549](https://gitlab.com/gitlab-org/gitlab-ee/issues/12549) -* Complex merge order dependencies are not supported: [gitlab-ee#11393](https://gitlab.com/gitlab-org/gitlab-ee/issues/11393) - -The last item merits a little more explanation. Blocking merge requests can be -described as a graph of dependencies. The simplest possible graph has one -merge request blocking another: - -```mermaid -graph LR; - myfriend/awesome-lib!10-->mycorp/awesome-project!100; -``` - -A more complex (and still supported) graph might have several MRs blocking -another from being merged: - -```mermaid -graph LR; - myfriend/awesome-lib!10-->mycorp/awesome-project!100; - herfriend/another-lib!1-->mycorp/awesome-project!100; -``` - -We also support one MR blocking several others from being merged: - -```mermaid -graph LR; - herfriend/another-lib!1-->myfriend/awesome-lib!10; - herfriend/another-lib!1-->mycorp/awesome-project!100; -``` - -What is **not** supported is a "deep", or "nested" graph of dependencies, e.g.: - -```mermaid -graph LR; - herfriend/another-lib!1-->myfriend/awesome-lib!10; - myfriend/awesome-lib!10-->mycorp/awesome-project!100; -``` - -In this example, `myfriend/awesome-lib!10` would be blocked from being merged by -`herfriend/another-lib!1`, and would also block `mycorp/awesome-project!100` -from being merged. This is **not** yet supported. - diff --git a/doc/user/project/merge_requests/img/cross-project-dependencies-edit-inaccessible.png b/doc/user/project/merge_requests/img/cross-project-dependencies-edit-inaccessible.png new file mode 100644 index 0000000000000000000000000000000000000000..2dc02634fd889bc23699e0136cfc4dd1510d10f4 GIT binary patch literal 19461 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 literal 0 HcmV?d00001 diff --git a/doc/user/project/merge_requests/img/cross-project-dependencies-edit.png b/doc/user/project/merge_requests/img/cross-project-dependencies-edit.png new file mode 100644 index 0000000000000000000000000000000000000000..362e7e0ead279d3ad81012f9958f2d9bc898ec8a GIT binary patch literal 19302 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 literal 0 HcmV?d00001 diff --git a/doc/user/project/merge_requests/img/cross-project-dependencies-view.png b/doc/user/project/merge_requests/img/cross-project-dependencies-view.png new file mode 100644 index 0000000000000000000000000000000000000000..e00231c839b72ccc530d0c91b2b580674a46c3be GIT binary patch literal 37528 zcmc$`bx@Y=+b)Xo+SrOBWlKp2f+%64f(nSDgdi>5(qJnsB3&va0wN94(j}#IcZzhw zIxc;G>svE>|FQOb-^^ylQQ_fv?)!@KJnFjbC2m~aym8+~3JQwNSFc>WNkKtbLP4>L zW&K)wr#vAd2!H)!eE#aK_4u-0ulfrAr!l#7*F;KR-Na1ENR2{6PhVHOt{wHN^+Tet@`y#Bx9t=0?9zG!bgZ+Tj;&M^NobCBAhuNf&?RZCHqBchy-QOP{y@+fk;^W05x?9!>3Y^}Ww@`c?WeY8=ie(R-jbA*Bw+q~f4R*~s<*+x!Lf01 zC2!8#|9u11J*=#(AA*BxnlDEx{6DYl{NuR4uY0v&P07C(boBr2CjPHq`0Yg6ru~24 zXjPE{pYfaMUoHgNTuE~^I_M)@MA&FG%nK;m9=bQ z6~Sj^E|Raqe*Rg0SMH{)?sodR$D=5NiAif~&$!0DFH!veUTDMFbK~)wHi>sHwnRmq znfiC+)9)uAdb6&$Ht%NTq7ZN1JDCz@u0tDH^^SEP@TEI@^NWAmQSBE>tp8qyMb78v zD>E9}%FODvn`mjZ*^ZBJa+fyFC9gQ{*ts*--ZA&+AoZP{bWZo@WKZo%uvzXa^*qbZ z$+=BfSlES8_Z$Dc8a-)zHlsyQ~dl@A0-c!cyR>L=l`9b;uB*Viue3td0@+k z_c!V;a&r!~O!e{cp_!8692BbCv2pd)sl7q>rm?a8y>Nq6QUmA=0IzLQ!PSC*HUrNYV_*~0!z-xW`LC$Z(U&0Ke78`Z>> zmJ9F7$|~mut2Q0%+VAz#Sg2y6oZZxqSNB^@%}$Cvd-gOY>564oPJQ|ESl5$BsNb>F_N#@oxw%m1F3P#OFYVQy(@w6bhtIrD4jpabjQWwD|x zvuyeCx*u<>LC5(L&*P=o4mDJ7f_`A+YCqo-Ylu^mNijHp%Psl##^K*(Z1|3jj?O7O z{MedJ)T+yibGuk>^+(t|9BsXxWxLd07sHsDnJFH+hvn8QOoh~!`{x7%1vhNjV#}`9 zl&HPu#*G`88p(L|>$1su&dJGqhK7a%jQ*Ryefwr$WYk&W!P+3}Ld&PeX+3MOk5}hP zyn4AezwuEnF0KaIqs88@Uaj}{_djLWna54PlD|ihQ@=I6PyW-2AV+CD6S*mwV`7v& zN5niS+IxFFm0weRF&&b2VGt~-3clR%)l}PI0hha;k1tu(LTD?$QTP3c-ts8LtiYV7 z>*Dds0vGy)=JA#At5>ev@2`CC?c)<`GH_EsK%gF%-rCyQa4*5m!-f9L_(*bF=I;q! z?OLimd%X78Dv+IIA$#o_m7>kmZu&D1LoPW|Q|;w^l>2h4#_TLccr0ffT*kZZoJ~zhQPoN@)xt7TEtA_qMPP4OHn}7!D=RCCuMbB`KHp2*%k!Xe({Zu$=U4ak%1j7~OZP5i zMLis8Y`FLAT202T?c3e#K4Fy_bbMPQ;C~hGjn7FIjGXQZ*Y}?o(?x zR#ey~lAzl(o!T>ZDkf?^EVru4ZSCfLU$pDkRhoWA-l5^VPm!oy7p7L~xj5V9nr-(o zmR%<9*-WdIE0zwoYSFe|EomBbv@|sKFJG?v{{1_TPW@|{cy+heuPL$@=O$zOwTKWRn z&o}KMi;H}^#YAtEd}{TTg{eA4&B}MHhH9gOZ%0a}q@=X>^juQztkEvqjpf%6uR(k6 z#3K)npHi$|!qdwOqg@>x=SEvIBIJ_Ub(@lUirfwrL}p=Rv)?jHIi0qU54;g@S~BgS z?pM>H0{r&l5dAW&Hg7>I-f}-ajhrWID6A*S`FJ#||IyIU2)hwbvM`!eVb*5jrDrQX z*bsm0*RNkDznXov3NLQEvap<=m-lj7kiXUd_mDl<@*cR1lt)I zgY;VM?d{oQ6JDv8`$}fn+F*8aMw*g0P*LR-7u&yny-oeQ|5Y#cdlV^lD?)mDdOuk?q*x13}OIBog?mrcbWP;c(aAJW>o>cv(@y(sx0w}sIV03GS)kN{JAc^oB^k`J6wo6~f zs7wZb*mGnpzQL!eGi6N%UcyRu+cScNGu)KC)y&LHtM2plf$C6;m8BUn8H#pGrVsaw zG9D;h-P2X*s-mQH4)rZiF3?r+nCar|Sf6K~yXae{a}ORcz1~G-w>Vb#mi3N{GcDhV z2bKGeiU;b1P(FM1?2Fb<7GC|=jvYSyyGC5ND#ftt*3bmT(%js?Rr zXP>$qx?CNvA6hx?7qh4*bV>tD9t8Awa&qpT~BCyr$c!z|8zU@OF}~T zOq(6wbomwAuq||_va=sk`UqGUeVx%KZ`_s@T7oev`khi(2%25AchYOO8XE=K~UWu!b&;G$zWVJv=TgEuE5NP5V_?{F*p!n;>&Gj6 zqY5MG%ct++=SOR|H05Quhz0s>9iw%2+Gu7e-p}1;i<5(ca&44M%Ga;eVb^J?ITZYr zkKKD%8h3WCGv5*0{piou0u3cBPM;HMDduCH#-$TiF@^Zx)f9?~ifqS^&rQ~dGb^N@ zIxd^g9-Z8(TmTt{xHpCrqadD|{Y^=r=?AWmbonjj*E=J%5 z>i+LSMmvhDg0Hd73V;6ez|fEy&LCj^df3tJz=anQ8J4E#_Oqy+=+p1zlJ!Vi!dkwW zVxXkb=G3k6>B7q`D7+Hs=3^$KZCHTfxV{Lf@GVC~-;x$OP+O-m&|@<cB{E4qe`&vZD3#ljMhs8%WW`NJ`o9TzB5f^#mK@ zCIW#G?xp1nA9)3}~q6?pEuG>+>_CK^+TjwSNG_8+yIwlyhzeF9kL(&kw~+ zR9$9Vbv0P@*md7$k&&#WUL4_QXISCJD0wCmis|ND;32A5X>51DJkqZFESShHiPGjs zeO&qHr`ye$HhySatFHz{0|gDVW}IP_j(T@9RMd%<@B3Yf`qEOzp}LrOY-CivGL+xB zf$*SZJr4mh8Q#lt=%p2E3}f!&eHG&O@3$LQ%*0yF{8G}^-gH(%VjFg>SS>5V&Yc%p z(=DU~lFmQhm{(Y6yfkkbyedh%?)w#2SJz{TnbrlP*pmeno}Qk7GuvrsuHL$}3;SP` zH#vK9(>iT!ZLHFKv_gx8k>m))ETQYZJX|HZET>L+V}ab)oNJRC>F&-$9W|fqcZ(e{ ztei@bcXM;o{IP=$>m*dnD^923gpQ8R&6bME`~g?WIr&thBTdt@j`r`~?Ppg=_txpR z!bf7S-HMbRi7-;gw4RHY8x5=Tk+x;#Dqk?n_NrcTba3eW9&jcdW6rFgVOd>5+nzDg zs?zs8AVI$^5Hnw$pefaupy{qU9!ZMdK6NT ziN->ZRD~?P%t3TZrxQz+b0@4RHgDO|n^>nn`KH%FI#T+0!)x*V`Hyy8;jN>7BhTXZHb5={6?hpve;yk0vkuS^jF(hf6i(D`S-}%KkA6V^_>{LY)M5 zxb<0n&S(5ev^**KHVf0mNqrST!ar52zrN5YuDE46Gb%I0k&*7Wo3#K4=Iq(C6zjIo zwFkQjeK79(j%s%*KOOa_2)8jdGot|)gL~5sBZ52_IwkMeyc!35;pUA(8}Vmmc@yl(!w~k(o@#6oT%b^#>U1p z3uv%K4+#kcf&oZG%bxsnE8@H>gWyL1Hq)WnP~0Qdu;F<3)kmt4y21?|V{t`sXZh`x z7mKMkh~lTZubiCn%F3LCZ01AKR$9``xas;;Yq3UumaURgz@=J?C#=;K?qZ1F#1 z_Psxm$0o}d+q@}RU!y(yF=^mHC)E*B#{jz3*e*`pMO&%Qu;Rl_iR>S1($A7icu=LW z@zJ;3T+&x8Ml)urhkLB4!Bh@2F}*_JrEOvmvVIj1aL-{>%XTEO?v&Xt`8eIMDL-jj z8fG!AnTmpf7k3map2urc?3?K;w%8q}dpOi6^d~Q%%Gu&KN66Nl8mbFNAHC+y`S{$^ zwWzP2Y!4hA9lJ_7vO+N7Xoj7GgC##Aq#C{`UHJ4kZs5UVOf8KrZ}fDa%s`7@)}f4f zu?RK*BS0_-G_mlKH?0{rhW<3~;w>@h;~QUYp|{ksx_^H^RFL-k8 zP}0-;j)65WFlYy~ZwELQH?^xd`3QBIfDUZtuJ)X#WkJG0s8uxD`~cujF*icVTU?{w zs2RTn+rEll_Kh4pU#%VF$$qZ{5X|G(iC&E2KkL>>#iF`(l@vyRiq)JREMvY~t?oyyM;6(qj~}TtLhLE87QuM$(-!ctjSK z-8CcJ-#|?`t}Cay8lBdKQ>B3F{Q2{z?3M+>#e;6d9v9%ncOawav87C{%?VZs{$L215oL~BSAap(*o5u5g~3ncar_LloOUs4zIV43=H zFa&S>U4qRNn-x$^kIMCirfitz<*KglUYLEu+22Y@`fWFW2Krml_#F3e^mZ4!`wQCz zk}0pRzY7fVC^+~Ku*)uX`PsIg!NX`mu_}f2S$1~57tTI?`V<6hD+LDkhVk|fOA9kQ z85v#O-D`}QRdjUNNKJ$Qa{2P*R;$qr)m#c4U0s=k2it4H#lx{^>zkTtQjInC@#*RC zc%mRdH7NkQjgW~ydPu~H(`DxO@B6401?R=t+1Vqu1liog#HQFTomMGyIf80q{X1t} z0gLIHjl1q+E(nJPEq!xLoIz-|ozj;_bNrT2ZEY<<1VBR7iQ0EC0oP}KwFK>R@!t-- zaCrZIiYptluUlAHjD0^ds(M;n%7gWeI{F)-g1cFz+xz=pp`BpEi8=_DKr^9Y6rzLR zghe0%V8bk*@@1^GIbpo?Rl+YtT-*9hn^fw*D0P>5jYiD(*Mx5cWmL|7vBYNu_eS1{AsBpn*7>0ts!>J+TVG)xrG>hE13n8A9^h`ce#0ih1ja(f<;b`QZyI!0mh zS;!`Pd3E+W?>pIvHe2S;?~eV5@~!C$;SR*O=*0|Tk$vyfO;k@gFiU;e`+>-TSi^E>FA+uE3vT{3R( zTNkoF!<(07+g;QtFbPW&tE6ak1x;vj(8Y^UU4np0@N4;|&X@h3go;8&CH*l9n@5ZJCMV1k8eP7pb zUV7Ctp6a(%PJ_iE+Bl6B@gqeDN zVPU-8immNz$2v^crgwp=f39Y`g_6RRcT`seOEG$+3l@BnN7p0l5w}ZefSRT{s-XAd z<91YF@d*z}vb+x-ToEg~S^vh{`;|{a4f7lM>avdRskgfmr@yUMdjwv`Y214ayAK!F zH9OWNpKk63#f5^foT0SMHSLEgCBo7C@ zUR1Ra+RDKrVH*VjXycPV_uQ>m{EcqB!P}67Me|-y(*}z#_FvaL3Jndl^ptuHl(Osa z7N#V0h9 zcMZ?vJbtj;H1W&(lH>FL@+&qr`bz#_`1Z~HN#_G2gX8b-^Lh>1iAh>TU|_k&SQvPPM{n>fYC-EK5s=hcsROr(LA~ z4|Y@HGZ5g6BBOtOtn_W5_L^bg`z3VejZz`mI__ba8R< zL37F&cewEA#L~{Ya&nX_F52aKAc1NSoc^^>EjGwxzH%puC6F<8uD8wtI`gXj>d;MS z7iG5sB_$`%yy7G)`TUcN7vq{H>3 z8^A#Vyqt}V&1sVT-d9eYdQLb+ON(&lN2~p5LAYh<2nihzX*Tvq+NfllkQ38n&4weK}>rseO%+man%IxnBBCJ7A z1A+4vusE@KA5S)ftG@*!W8}7gK&a?X zzXdL((QLDx*o>;2pP&C6?*St4_Wguz{g=mJbw?s=0tKyz1WN%`rRdQrN`r?F3vd%a zuCxmyEoolR`45+Z1K6_3#C1n3P#U1etldI)1tT-?GqO%fYAq;c5hQEP`Y#6n=L!JK zV5sdM5aQLWeugos1kV6`{RRkd_1d*=h!DYOX9EgDDqvt`-ds=7=Lmzu{&h}3%b$Q+ zRShaBoA5wMz7$&bRgf5X3%t|6CC0z~CkwFjD{b^aTV}@CLUNm}BUChCEDgA?#lKu5 z@bT&C=?_}d`Efn!um_&Kd`UY1YoaH2t8gBO8U*7npl7OTL1)a^N7E;^kk?@>n=`EH zu82owgx4Oe5#w$lQzM^Z@EDu25~!8}mN7)qHOJ+W$eRFt8bYtz6?2aicQ?;|fSukHJt_MLRtxSOTDtLp;P87L4N!DDkv zOEYqDW$-i=q^yz}U_`&cl$pqK-rg!(a_ z1>@bYb!#6ckFp&a9U*CuTet7rnG4W-9#Sd!HIPbGO#b5U+^sa9k4Y(7kF7y%VuSpL zad96N>?#B0lY*H0 zg@x<*`1kb38Zn(W#mkqC zrv`5?PXw*B|N3qo>r1AKV`oP3$%_8y~%vuWBg@w##!G za7t)SsICWPBefzO^Elj?==iUrfzM}>O<*G1u%(3_f-GJgn~=aWI9=S)p&9B5aUbTl zM55Mh=(y^WdZ+pMW5IP=&AT>l+{1ni%Qw|}?nFmN$3S4r*~hDqOL(eiJGbT$OhymP zza(1A!(Yu;feEolgAx0H5B><^W##%x?mtSupygYv;xQ=sUESRmD*^?bCqZ>P`}$sj zUZekfz`lT7whBhhXT_{7kKm~gY64H?Er((tHq&0gzJZ?s5m;AT_p>Q5&sX7Z*gHG- zfbkwae3;W>Topx8q~qIji!NtA5@CQGKtU{GEQ|fj?*tzXdv9lgzFCKk!g%c1F|t%p zyMIqj9pUAjj+ih5BSV>x0$n369dWRrY^)-I184}=yb>LO6{s(P515cBe3 zzwJ08%84?Bs(!`9#Kd<*Fq+p#+LswK49Sg?n>+X0HzJKukmZkN_7Xh~f{QZB>_rig z&Y>Z{V(CAaY-LEHh)#``mKOY6iz-^DEmIJFWC8XeDP^FUDn(HPUxuSpb#()Dgg#=` zz20>Sy_upC*K|k_dM%a(O_uPo!RD(Iq53UfJ#@HE)J!^c&m6Alf>Z+|=KAzwK^7JV zxE(up?tF@OP%C*`oPAsPIMmNCUpOHwKhSZswg%`B&}?{w5Ch<*8hUJVx<$?1cgKSTEkPXBz|EYnt^ivq5o6gOvCMMk zv(7(36eqQQ+=mWQ@VejWt5MHJm?GE>we{+a>KD$R{}LY`Y%)+?kc26}ud93g%9U5K zF#}79ad8J(SXiWbC<3*zdV6~@Y|79^;OOn;)1xDTCMrT+ets32|9)l(g)jG4!CL7A zh&XlXltiYr1@zuj!>+Z+JV096d(|*pR`B_*J;c>a#G8*P!}BbHR&DR<8VC8oDvq8Mt|O079SxEFYSR z7*b;vtyDGN0c{u%D2TrFC}e9(*tv0UE)`OX&{o!QYkbec0PnT+2_WgJxHx4LZ!|-i zrkYKi*Jo@P=6o31Fu5>{y>zVL*aVhFdVZ3QE_t?L=NsMl#KbjkER%3y=J>~KAT(`ByIIFp{d(ZCx$Ha@d}U73o%1KBVPiA zK;=e|upMv)CgO(m>+d5DbL-PBd#UgnG>$f@si~xDXsEfJ2tgbNul$X)fn?NOF8GTg zXnHqCRwc#8=H%oYXm}zMcHuU+Uz zR$lHt#l~?HwzCB`&cjF%g$Lrnzv&({p3NbQvueDY0=A2%$VR{t zg|{U9v(#6?7S*<=oUe^Uuwd`*(~Y?1bE3GnfD(Y=2{H|@@o})fU_9OM46K$=$^JNs z58c~zP4T)kY7IexK)=qqpegI1PQPWj%|e;@I#&C-7<>&NRMIX)VkX>88-U6oUKOH8 zIGt^1Z4Jb#HO3|jZ}ioy_>G=GPdxf`P&|r)B8n?o@nNR_Ts5v)K__~RzKx#Z9aY|% zYWxxo0YHPhx|Mk3^{_gHAXV8y$T8#>;pLUoQv*-{gS~Oyvh5F@ddar=t+@XwC8{73 z2x_QVgq?KczC``VMZugyw1$h1Pop!>zM!&lSQ@r5H19$XD}KYyf6x)FryDdN!S4U5 z0u5LYVv71?wIIXS`KUP`q+n>#OqC#H7g+bfvN0U0J&t*W-j<$|pjiVcrE|C;o`ii0 zVqprw^xg-c1$$v^YKmxkBJ-%zj;LZgkKI5Qc!upncnYZ2m*iv(z$Yw3lB0lVkzz4% z6a&3(zuB*5fKP+rdM+qPE4NZ>#O$ggV={>z`f@AdQAonTf$dr6v_;0X8xxp8cETis zMMU;bLLt5nX9Xe^>Zlsp4+%ec%gG}TfObk?F3=2=w84lq?-*E-SU9O&ODK{^MdE;b zpK`uK6(Bk`(=0FqztuEbU|=Bn(_yI$U!UkRQqMQ;{swG{yE6RM%uh@ga7XtwE5O;k z*o7#@Qt!{NQ2{$?kwLBmo@FnJLe$;ZCm<-H_3q1qkuh=bG`|N5mSUN}9e3usmWjV$ zuD!yI8$$>KPR>P5EXJ0gpg(PLA3+O$0gE@4l@b8|PD&%1i8Bd+QzIusPYW6MI&H6< z>92Z9uBbhG72!J2o4&-xzQ+QhfEo(L&MU&|0NKzhegw*|U%&tK>BjYMMw?S}L6JeL zwt`cBfYOHj@|^G*)S4(Z(Xi|Or`%BB2@6Hg#@X3Tp+P|)wuqdyTotXhNv(zs@l!4C*^2xWNr`d$2RS-!LfI3cIiM*tj}gXgZ-mEm zA5uP1dXdZ9dc{|J2=)fne}7w+Fnj?~-aAuQkyL{d&Sn1lKG^Lw5bigjcGxcj^<$r( z!1oCyLZ_(7u$3aq1l2~ZI^-%cU#=+mv~{|T6C>^IX91z!{M>mK1{GnlVAa7WUvxs& z-k5~&`rHvfQB~E$;Px8e$JPjYp;V#aJcXAEL#`7Gj7$*()6QSN^aS>RffK%lbzc=O z&WQ5m#353xHL96dJlQzpPGWf|0L~K+hwI%y454IR1*9Vl7N5*r%YmdiC-pg!_I0!4 zjnCWl)d8xx)BfR6!0!&^f{Iti+kHw&IYs1%M?`}mSF|`@%28impI#ZK)0E^4LpEe~ zOM~54SVe?zCFwSK4r*1A#ddIf^dYGe)W?0bEIrwK)zs9cV%EPoF!1w)7l&dmrs?p( zgHKSxh+DLW;qZzaNdO{Y!)do{Er0Lc?!$jl-$mR~JY)XI1#J-%6BC;6KP0p?DWzaF zk{B-i#xsiKH^AeG#W@Qu6`ywM??(%>iM{+!YCK)1n$|L!;jeVLef!S;=ztfmG5s5+ z-p=*@U-|H2-m`x-&i{X3=oxVY1)=|v=Y_wTXm{vqt#>*a8Z!q=|LkOp?s@zq#OL$- zKOPD0`oEWc|LK1uy_85cGhJ0NhxKaj79Pm;V#~ zhoV>kml@jKA@mFQlski7XGfXRn(x~E+$tvUuD9P#dirwEpXZ^WN3h%HFRv~8&-5?% zAd6-(`}@Gd>FHf;cR4lXOsI@`b?#UD#vI^sd-m+&(aFKb*myXkFueZM6{tH$?tGR9 zu;%uQX`id6`;QbJ3pZg*uHE8^e(Pbc0D6k5*x0DH_?M&8^HOmJN}|-v-&_v8lu0r@ zQ^gfaLAQk}~YT5_%*e@BLZfFl79~t%y~IDId!W_Y!g&3Q!cU^m5jW3PlHkwzliY zU(@aTDC|?|ud>NLeP%TJ=59hkTUzBcOQpx-PwUsGQ<@nKDlmnQzED=uyOA%DZ^$C? z!nGvpX+UVXBg^05dQlrSMh@yGvAJ-t1Mt^>^_qphP{W(M!%R3xe7SA9L2D{dA_MCS#48Ubd)(p z9;Cu2FkUCtjHNeA|2Yf&yXEyocUDuxTfO(bH@|x#`stOA^}gnNlKV^t1}qO;h_RcS z;Bhu{QRx_Ms-Nkj`IRrw{qP6nqQ1XcYwB^HR(=;szVB)*;$Wvl^Np5GB#emY1n8ik z9culvNc!PN`6#ziE#ZJ{DA1!mHHyzTGH0JuASUbMqT8Ipg-Cuy>O~G$yZNb5wZEG4 z>TSqA00t-Px7miJ$HfJ#1f(mz=o^jglW7}Ql)3FiFgzMJbJ*Pc{0Xp3l+x-lkYgGM zfnE9@UB5eWNlSv1r9PN~t`rZFNdfuxNm|-M8_UaAuLS)5nzy;I?NdPGAt4h0)Kjt> zgZ&M1QYi$n_%v@#ON`txj(cIIEy+Ihk;ek|@piwoS#Gx3`~C9g<4nEn*})%~ZmeBr z-1}_}gNVq@{bqXeiCR}pbl6bmXH#4?%=>Pn-|I0Q9v;E!R|+e+pK7zWw?nB?Whc*G z$|C^>^v6Q%js&W(m{LLp#y&vA*z%M_KkwuHXr8prw z@me!W-3~P^Rt~?igqE@|iHT%;Qb6e3gZW2{Yf-+!jUE`(2NKxW0;&X($sA}?dLrHIL|X90;PB@JW$xtDqVefnI=O8&v;9RSXFA;O1stpUD-|F3%l?F#(S0ZIgtIQPMX!20nGQBbv2 z^@yi{V)~r^GcQncNbnppK+y9dm}Nz}q9__e5k9i|WPU-Mb<;y?{iW?`{``hEXa_<*gZ7x#*pJzZ5&NosD%ecb%;`;T$+%jXVG`RG>~s;dH|Of!uGPM>u}- z4GTEJ-GE~7DCB(_^lYHgmr&&?DuG*1oBb+7*>IkO zb3+azsh4@5L(C957ms$W6KH?PDWMh6OA=v#B@F6Vgdo`is-}Nt5vQEPAB*4ZtMoIb zsNtFWNQOZg<~AL?1u^mxG)reQe?eyW=73LR)dRE7O;iYzP!G_qh(Z`3g*Tr*1DFhy zH%}510lpg^aqm4$t`X3hgpzhxhOHIW}^(){Tk3mp=t5{91@K@ZVOwGXqX^b--Cq3ad^eh*tiRr zR|m2l1`RwKwqRD|PP(o~!3rOb^72G{BnL*H!oOF@FuNIVqGC)l>1P^rB!|@#v zo(Q?*Us83O4xb?k7}0ZfA+`h0Q(0552FebMgwj_3^nzNz;blk zVq^(%A|lLgWtq7(913RUZ09Ci@nwjz9}!_8*N8@YNI<|J9w<4^!Xh2D{_y4_LXdL6 zk!(JVsEfcsB{pdwACz%YWH38KNc(F)GU|_pa2OL884EYiG84IsQcy2@2Zs;fOepW$ z(+VRWi(Kv+87W74?4!i{)foS4hU~J+%72o9h)h76kN|r}${<`kKur=ueZCyXaLkX9+vV+RjvoS+L{UPgeYPNe(w1v$zHDS zDoC)S{*KqHrlv@unNJc7O65Yjot<9`0zba=HD)HJR zz3Zu+`Foda`IMDaiZ%4bYxr8Tzctg1MhjPm-xiCCj&@hzo$qFfISQ(%$`j>FWt_o^sl60*X*(yAzso>F3f9<<5(3*p zGD%0q+S+ zCMWai>b$TuLhlxU&q`t%@OFRng0O2H&8Z>$jkEyg*gw`|`Fo;pXyfBYrbF2X*^@32 z22ckLsRjx*d^t~b8)9x^i^nVFt|f8N!Sr+#)onX=e8X0B+G-1FkEa@k6!Nfoi6Vsa zH97cra#~KV7j>BcI2^V}qkSu9F&j8O!A*p~Ezdhu| z+!vdJv4Ll2XWKhEa!`UBP*WXDIU#-{lRk#`1Q^G0FyRX`6Qjs4Z(Fr$6|q4PqWzho zAcec`+Oy-g{-HyMLcOwo{75KL=tL4VJtHFmDOIdZ z4fv6;Lf=Vz9Uj(!-lkdincj5pM@MR3U>CgR{IW7Cru95WZ}=0tm&7q3?ftW6jhmmJ z7y^k$j~+$ZXcHW4sHE44WEka&4IqUcfy18VFq9kwgdS}_B=Q9(e{g*E5olzF)r>T? zH!((`C!{Y;H<6QfaH(;wDXJ`)DWVLA&Is~YMY)zFan^2SaDvy0HIG|n;xp1p{8|)P zjoN9rIBWQ>J*N=(lB9EyQbh890${2dr4VYdH)0@Y9r?=#S*`;sAOaJHW>3xy9X@iz zaC%rKRENc5W1{TlU5m<#s4SWQb2zm@0yaqOLWq^*`nN8SXH%UslO0JtL=pUtGBrEAhHjFIOlf?Q1jBF736`A$4Y z2uF#zU_;~HvQb=1Z?}aej(tcf%+DuymK^#eHwCrT9LWXZns|(QBuA5t2Gg>vtc;X? z1c7iWCZcTW7r+G8p`n@C<;b5TssW__0{jMtAhQb#U!s#xpI*j5+O8~_k>-z6ZKTZR zz1psJI>@dTIDqTq$sQnPb>vf!Esc@bhi4~1{9Hwp3w*6@Lfgzm+WR|(VgP5RwGtcK zXT-pmXoRd!p?vM7rQJEdGWuFR(>irr5#`~;Vp(3^Go&QAA;bftM0eLj-r>NZJrX!B zDl0q8%IXNXsHCczhXO**;KKjtF7bF%H&)4LdHmV751swX)IX5GD;mKC^`e|pWaHEp z(_Utox9EpE7#YRY)sKSH0X|bglN+Cy*!+vu$;rvVe@3p>& z9ueOH341A>d6-jo)pThgp3=4k4k=nM%7 zVY;9X^FGD6&*dDakGuO*copOE>}S`Q_xfm5KH!0D%?Ms*X%I7tMM(}JkmDpchFgVw zc#wkuSP6kb?|+Zb!lOeRc{e747!d%SnIyt(9&{mE-K{6Txp}UW3bg- ziZy)8EFKO~QEb&UHK|rJpHDoa&PF~0rGE9Uxkn<3=H@9m2KSk~XQXO9N~b9QX)%pf zw8J$V@yw~Ik=nqJo11Iz;=)@$L$p^Mn>=8jOvqQQN}D&kt>CJ4WKO z!0)P++?X^jE?(Y(+FH-aNfQ(xm=+S%c-o94$|3~ZIfzL7;0PoY$S5R#HCQ|CYugAK zU`SZlo1mZyoM#CSVbzkg7xECj-A#GD0d@JpcwFqWMfh8Sa^QyX!p3I z@E#0`Sk}m+#;TX^tBp~NiTZXLWCCQ5DwANL1lf_G!Q)KK?-cMX5==7&Tnf(*feDlY zY+T}RW~i2lvpKMURB-YU`o!8q+3N_zm-y=giJ?4oB4rN9nS0-~y>qbh>eR=#lZWB; z=n~inRObYwvUB(D+gjo>ml7|H9Lj1Il?qIfZCKXvDBBTr z0KCRyJGSiNAG}hCvw+xjcv=ZIgGg}I+tY6w;o+i~d3uYiKadxsp|3BFq%k~O?i4TD zQwI0nCwyJA+tm1#VK>UpfFrF(m+e9yT0R4l}woL&Dpk$!LMh}}$Y zua?x&sUflUXNHHplnz|gy?yx>bJd!d$JH7#^e=Rm+p-uvb~q<}Qt@#atN2)Xxx#tb zPI=n5GDz%N_@&au74fdyfyK?P#H<4o7UjGRPZm3Z1lj(5Yz#7L5NO_x_RnzM%d(|M zn&5oy=(}#ei1c&;lD0z~x0#<*!a)T>2M~?>EYXOR3Rzf0M!_K&aISX%3?yVnjyG#) zT-MQvx~YI2k0W9rqdBl25%k>GT+qbMAzA(^Fs)_z%9+B4@8 zo*Hl|6H4pNQftUVB%=&Mh-HCmF)}tTy%lpB`RXocV{7}8Kqy1P!)eQcsWxmlaOR90 zjc7zgV`JmHm)EnXPS3B>xOsC25C%^6Bo`TBnLozDX1U`e=lUm>)!REx@|8$pDffMqyNgm>HyJ$2 zUAx5K^6nfpi)Z>=AUJUicb^bYSM9>tN%Pv<(L`DlK| zuZ!7Ab8$~lZ^D>XUX;=W8sT@sv>F-3a)(}$@`#t)r}^dCoi;sa@a@z!XXny{8!wV> z7^mFM+t|WCV6d3`!v9aEiW}+;v*g;6mKcf$J@IShM=MzMjJntVP4Iq{@Wt9C$rWr3JT)f-(YOSypQ6kf zD1XRe9OK~Fin8%}z%=-kk@ zwatv%H;)JnLY%H~mNT!mA3BB14a$y0FV$8&+yn&HGcxo2B=2(nG?;%?tjcBTRr}|s=d#i25C!D3Yy%)I8RC%YK}vZP zFC_4D;96|hw5bc?3uL}a4SLGT=bx_KOo#%e0PK!DJVM!31@Wb4&pmW=3VC%KN#Gxm z_FPzsvB}9C#g$@$mtE1F*Ob z&f~}?hQ%;|qZ~-RA7Nrzj|cHULy=LQ%Scbhsh0IJGBR|+wsc5trKgKB_)GzlywyJZ zdfWL|h2+e~wd>bmcoS{kp1PX!Vs~YGS zNyuSd)t-+)`C`)NVPd|g`9teuLqo$|Zyzq(v%(Jksi&IiUSr)Hz z$Gm8Us@!iRrdO^$w&QbbNAIeGjJuk7VzkbzTIU!ytZMfK2;BhT?* zuf00tNhH`}8pz23)sds@tTE{~nHaG*g%*EbK*B#C5g??fl)!Rk=XR&>(8ghzl1Sg` z>T2?+Bp@gJ9%93HaSWB@oS@Ug+<5~@%j=X=9PkJ^=8WeZc$r(1$T_yrHUCrFk%BsU z%{v`6iC^v!bFKQM@h&S5@Lx)KV-o zEv(GVnPPsCL>!s7fcv(=u?C#E4L< zzhyC)mcXmrQ8?fU?h30704VOWc4)OIHx~gyfzI9 zj!o2T?Qmw)Q22qZak}Cxjyt&xn3|r1qlNzQ635`s%VKL^G3+FbH-ELbAcM*Y1Zi4X&?a6H@ASrMO< z6ow*B9$E#jIRJ31DoTbM5zI)FZq#}EA3turYabQWj1gtgQmVYXa-&~h{!3ztNhs2t z$4;Kyjp;7?5q52g@tVj(-T@yOYrDz4_pE*0-TfRjTE1GFP42zTRu<7G;pm?(@0*eu zJ5wiR{v*2d3wvfdztOW3cKpYWZn^6|O z<+?*Ndx`iALl4UEZp$8freVM!qWE*E6x@0!nI~m{=T4xU%XDfdEHj&oO4i!7$f-4= zvuf8yNh<7-mc*3dv$ZYMSwkwgLds5eSKCuMOr9_xcgVZ?5FAS){it1Vo>f0^~G z-HMPFw{cW7TXD^U_4f8^6OW&&_VnJrlgJWmHTB`E^X3CwTzhFF49tuUc6D5+T}*k| zy`b6M)1xGnzmGd{-|ouB8h7bmdim^k<#xH-)JSNatn3--Y>V*UNBMG3@NJ*hGtDK( zjD|`27g|ET*O2{i=&p*>JRM#Njxvm2gG!mJdq~e-N=&%n~gd!h8@8oXv+nDg@lNwCLK|0MHS*g@)uEwP5Szy zH|s(^>c9d%eC(L<$eGJ4;#KD~=~-o@I{ zhCd3d)ln(-A(^?!D1XNgSjlUBAi*&yQg;_S|qCuXce3bYck4I$0%YZy(dHMLrxYejGv!g=C zCM6vm{Z8+x+jQfa^1%z&ubX$xt=x~0R?$(tC@bY zud>3NoTzNKZt8M2rR{HfFF2uK={D>yU%Qg>GUmyXq7wGIuj=G=O8`eZ6W_1o$VVR) z77mK%J74s@B(JGF`bTQL-I37E8J{a}$KZbcyys#f+HO^Ijl1Bc-m3W(MY9KCygfa( z6;&9dB~8=vj!>| z5)mO9h)_flWhha~kV++G78(c*RFYIgs8q@jrCLcv$e57I6lr`u$70>@`{(oLy*+Ke z-`cjds;l!luj4$9eg96o)!+ZzRoka^)_=dddq6wC|L#!RDKh^X{=gW8jh^5&;Kbn( z5l4f94jD(go-C93?}~%l`s;b&%s^y+7pVX7kGoP?{H*1gHROo(q%H71dem|1e>bYO z9=MXK*XQ9w1JvRAbImt|o`&5xbSS6$=+pn*ov&BrWdQl4g&m76vvSbPA%m;Xwtz>8az38T1O$i>Gw{D$4vyJ9gL`*GGTx=!#abJOTf~BP;#E~Hz z*YG8O*V@8dlErStZyz~%()8)wZhvms-ZU@0j|)1J zI7e_AHEGwLJ!jE9OR#_d)WQf1#2f$&dhwDPcYFbrOZ)8RIN=J#tZ1@z%-{9=X4C5^ zsVwSs;A+tVO4x(YZ7ghwu*OoDM5q^*!lH_}LCP6=PiQQ>nYtPcNcwc5eEA zm%jhY~*^w zDI@O&_3BdhF_OJq@SVJe{c~+LY&aMfr-G)C-@Rh_Kn7P@B1aS2K&L);d;VQQUsa4> zA8>Ld6;%8_iFsFGv1B~o&4z5byuM%r#IZ=i66PVLOX2^s?%GI;ci&n{Y8CPp7Wa9U z{h4thb%@GVBvgimhH5{f6S~VcskTO{svi0B<;(t2n~%b>E=k!j9^-`aW@oxq0rvAI z4HGT>mG~*7_Q)AmfB6jui`{4b`?Jl@Xk`w&ySuM?cHsOHo~hQYTdP`R?A8h@rrvQP zqzOZ3S$FxT1qtF^wrq))V~v$;*}$-~v1H;|3WyzvUH2RlvAlfZv|E)yJxEkJ;fHuy zy5n#?Nw0-BLNa>;ubtC;@iJ=q>zR_p`FYG>k(=DhN}Dk%tQl z0b8^v@NV~J8Qu@(5O?Z~DPM2WQ0waJzolT9HvLsUbT7c2!L_OXuAV#Qv%T76C7Db^ zuo+-;V~ahXmY-8L9GhY2?y}X0YgqUwI;29@u2};qI0J%dpwi2<@79k&G9y6k1%(FO zAhB9Bjmi-wC+6Xsc2i7aer|eEq^M5~`y0eGP<_)1Zi4w>!bgnKDDkx0o>^#d!0Ds+ z3zAB|>?_lt@W)7~NB!cJx;jxniu7-r(awO8`RC1;F(ZmtH3|T!kJT^J@{o=Kxn~kg z1=^rw)x?6hjP_AMp&h4$cSkvG+?_O;Z|SKipI2E}c<6+k0YH^ts}f!^qlF7EV-utF zf=HX1(q3K%0^xVHTXQyDfXES`N)|>)dX$!JZm$GL$U-OZAS)|_T3;wL5VnEW;Y{m@ z)#svFaxeMbCEKAPp-1Nsch*=x`YM-Bomd;zUd`&#~# zb7iG?SJ+KjxA$&DZW_o1u=R`&2Fqd19ngz-BdXSt62xF7c0WEWz?khre}PN092i0H zVYKqt6ZdkhG^*3W@p}aHV^zkT|;Ck{& zjsguIGe)5{!I2w^pY2q(o@M6mW4H3D|T*_IaC_PO#(RTuA2@IMwcs76C z2~~@h>@UKSwr<=>wZeh7;OT0yyo*0BA#qbM!r;;Jwy6*dz+SDubc82F=Gm47#Rg8P z=BAAUSb;<=1hVmz{h9;d(xJZzkpbXfY~I~*vg0)sT`a^AUGn+I6Sm@>V#o6|jvoDO zTaeh+6-~TqIv(MkP%iMR z*c;y=XmHzC>dS&#$?E~;Jxz6;482wR`?rF+C(!!{03<4ZIO9aDbF2rN)UfCETyO7} zJL^Yt8->Z6ASwd)azQe0*u8GaebL}G#D~Bl5=wLewfw6`vY!!efNTJs*pipZI%4Xo ztE(#_Q!vcGegEFuINFM*n@opigI?f#;)K5Q_^}`26t3xSd{EO9LF1Ef2C8*N5|j-k7%@tv zOPqyOr6~uvfnd)fs0GU|U41sS{!@e>XTCvWbDsy=;h92u<^ypc%!A-cQXlDbb)fty zRm)iqLJl1foCdfhY18GP1SI!CZtgt>Bv5f}E_}(&7vQa+!uXxH_#j0FgVcIV#0EU{ z6s}g*#XgD^zx1PDq6zwra_lIwBMkm94{y_&8#f&-uyNcH?kowdPpkTV?2|n9FGMoF z!NG@-HgJ@T{`o{4V+%ACN6kOHe}6_!PR#r+&qBl}#zMxoAfAs$>&A)XHCS{j`_mYC zxFg*7acxZ@kH@H~o#j)Zv_hxl;p^+0es&TfIRp@0ILdi2{fk$@W(Bd!V|0rRCpuLP zewK_0$oCl>8@ypwP}9f7)5cKoeZ*C08WSMm(*beG@@O%~(6Ai58S`)V-o5VwXc3+@ zbjp+6~Xx(X}-Q2lzIl~9A z#>1&b)+Ll^&-i#|kR&%JCjv#cfcc08S-D}uLqn}bOS@p9Dul!m!U~aYuIP7Mc@XmM z`1Iyw2!cM_|0KLy#A#xqYt`nq8_%e%K(kPK!O>9biq&Uq+>66%EfnU>pCvXDsV&h) zQ6g3!1Tze-f=pG2bCC*!Ks)%+_bx|#eQ)zLs^afOtIEN57}CM_^y!O!%OWq9U%N3W zZTr_DygcW|X+$()d&M`0u2j3URF{gyk2%+j~?_bX2@q-{X@~1^~ z15%%M4Js=O( zRC|AF>2sotxo8U79n7eX+|em=uw6 z$SXsYi)_BBO|`3e2>skAj2*l1!EKyS?Tj3!l!AJA{ftmL1qLeNc*#Tu!cKkE&o4ZD zth&0&_&DT)uRnh_fFKgp_J|Qu($Zq%TK4(!N!sjpHda;<9W}-SKJt9gQAV5=9om2) z5~-ATs1Mc#J4v~dL5lybkP7KOfk3S-9PzbcOpe)i_mauXfs zlZbxg;dp(UVm3hd7SeYf=+k1pU_;7I7WCh=X3e?Hqv(0OdX?!J7%VC=S?V8gG0DN2 z&43-g*$R;3W;Flh>dqBpVw6XviaDlQ_=mx zrULy-aHzEIak@PIv=$vGh1?v1Ev9!p-#33@K;2l_Zgd)((i#JJIF+oNf0&~CGAYqr zT2d31Ro8gzlSy=;;0bxOP*E6tnyF>zDsa1)Wyi%G4G7RdPRW0mIC-*CO5NSUqp_Vn z#pVDI^>p4K8oKlSdiIh(?!VLLyYFY$osS$l3?7f*fdc2~i4${>{(a-|MMatG)$s_wg04C}#W?_+fAjl?a)N(A+t%rk7h^28R+66OXvA$HRzNb!Qv(=LjBBC9J7wJ1a+v1dF zzPu5~a}U*q*afbboxO0!ogaMr5LKnf<{{Anq@zQJ14Cq!Ja+Z{ z6dpdz^ORa+-v@lE_DHLTtC;PyPN;h@@KyJBWYhxW;t0?)B;&T&eb?`Bl%t@4M}mT4 zepr6Wdt0>D(sCwilus<{c^;Rm#-53`_xwRMxa`S9Ke=7l=y)LECYV=$KgM;5rM$r34GEmZ?9I?vMS#N7NfkL35RoFIQmQauK ztalLd2l^a_NFaakj*HuLv`df(j^`HFQa6e^gH1~BOXoJXlbo4#0R6QDYY#VwWB(Yt z7&_APD^ikY_n|@}4&iQmfEKX@Hr> z5|dc!Xklg}t82xZRIXaojO^#)bOo^3OxuZO30igOAW<@OBn`X5hmgGanRDW=!>(mO4({|Bqx8TZC3m~gtC1u z8P#*<%|l9g?atyyuCA`kCCG$MTq?hor;}n_6`Gy;@wTW|I9hx4(4R9$ep?{$LM{>; zJA3;DC6<6i{$8gC?AiD=_E@j4iYnCWu(h*T6a30M%1&XVW#{f$A9Q@hj(vQO%b31# zW9+wobbm=+X*K`u0y1(7_=;&wEV~R8`qo{CRrqb)sK1ILnm@D-5*T?gL|i^1GPvuG zJvuIR6_G~p|Lp#nF11~uRIM&}PNi7jfZ28VvVGut)#ycvRMI-M`m_h{sa9_gN>pMK z=ihr+Me1bh$MRy8Bj=@1DpRyskNe4qO4JUUAJCK#1hZ&Vkx6Q=$7S|_1-u|?k&uKw zcgPc^W6sE5zkZoat;i4Cv-yyJS;I#-b#|)jO%!BA8mbYPB^qCLH>J2f&R0*@y;Rtg zto(1AC6Kzf#T`0z5=)n5sQ5kkz*%Q^a#kG5CMm`o7SU4Ut;IYA9B8Vfi8xi?6pKhU z>`|{VovT=6vr^R)G(kay>Ki1PNSpX4j&UhJ`(*kIln$j7cKMM%`|i1*3ATNNSdw$x zZO55Q=g*&4>(tHFbU>w(u(MHX-dp`*gY0l+<*LixyY`QK3o9-R2;}}qOiYUPlxFYP zF$p?zaY+V|TEZYmSc~hb85w^_joN6X(eGm}ohc>~hrP60zkUXSbiEy2v*)G%xJ*@` ze7soDuO@?|*PEO}fXCgOPP@h*mZBFDBTE>Ub}jzEh^BCALLouq86;%Uzt6B%0x_b= z`hsHZNO15xq)}``7+1oLvf)HItnZlXdd2P#Nml5Sgz-Yz~rJbK@S zc+(}oeaFhR4w=TB+mMH78oP;oqRVf-lEV-ITH#Zh~ zuP_-WC$#jUtn1oF?|_q1!|=m^U>5XByS==+Awl5I1*Y}o7UJmT*J(S;_O*HN?=SF= znf8i~9};qD%V2*81IL3*GB!(0YeG1*`i#l!kH%R|ulEcThs~|-mAXYNR(ew-lf=f6 zwb%Pa{`u3|n(cZ{{b7ord!pdcclaZWr)9fMN#jllBRcI_Dd65GNX=w}H@rCtJ>dDm zPiiSy@2iz5=xM?>cX5{eb6I=c&OTaINeSYbzYueIvNIz+CczbtJkbCemd(fVYgTB*YS>i&5D3%x^w3a z$DAQ%NaCSvF6F^%(;SrLuXMj*b)u&xj#I-Y6W`YbX$qf(ty5glwolNT35(P{PM z#D%v_&7RH@T<4vIU$}%8V(=tc{{A8Awk0zmI_ZPX-!W>e0p1>Y(%jMUs>~$`3c()E z4x9cMbI2Inan@@4a>FF$VB=CZ9Y@D;_wL=Jbu`(!V8Ak%DL(rJB?R=graW=8uCK-b zNB`&i=6683sf^p|7 zQzn|N3U;p25TOOQ%l+JSi+!&HdJ5|r^e2B+<=YbScnzs>L_J9ljm5$Tp_=H!*?4DT z$5?W6`{nd)a6!4~)C^Hs3!I1pY5bFF;{F(y@Rk8@+F|*^NhdOZ!B+(y&I2=Y)ToZ~ zH!MPk=-}Vhf-7SIJ~Lkq)7yT^Fricx1sL5X<-?KM+U>y8vncY!o8TLZQ^laE6=+$@ z$_WvGh7le>dSf*zky%BVj8ed~YDr-wCe#ruz$lz7a-YTME8w9w6sLN1Xi@|t#Jd$r zcIM?QzBZb1pMS9{QOMk)6X`u>RcnqV5z!}rb*ULE(&|1b3G1M^0WcEOC$j%&?}2LzQQQW)b!M-kNs$!A!1t#r!E)jCq0K_+X}1e zx^aDk1MGCQ*1}>jJP~o9m`}+u#fTFp&!pfntEEIdgm_7sZ6-+#a0jXd4fhL4x0|>{ zx7dhd*fhqt-Qh5trT>I_sI?iYprHG}fjK4=4Wa+o|788cpUG=gba|PJ^NW510?(I| zb&T`R4e{~uk{e);q63F~e{7RK6bdgbF!v`l2=i-&#E!5T?TaMa=C2z>G;Z> z#>y%ilBN{~)?ae17^$-<@xJG0P06Dx-{+?!o!aKs{&nCj^GhdErC%-{d7~+_mA9Ky z=V&=+`;*S@HEE?r-)w%TFSuu$GBeZX@aie6Re0HME@St3)z66f`ZMoIPTfA;mre6h zjiX)G&a#_WQ!Z^Wezi(}tx37n*Q=GDmBdcGcW_{AetlZxB`1f0b4#@z1};;``uW6f zRKrw_ePusVuA1)j`+hlUR#AGG@{3fTPlYcUjt1o1e(tg;u4+wT{+yF4Q?&g9>pvvc z_1M=X-v388T{*|*&nBbJRi7zs7?fH!`kF!gzk7oD?X*er#TW>{9AV}GZG=1%N%-!& z60^jI2M;O?EbJ`b&hzX$-MC4Wq?wu#v%K)qcK` z=e|o?j#Fmj(4n66?&6Jnqjr+%*)zg#FfqG-D|_#>v<%}5i1IY zo2{)IP;RPdlWdTe`!;cWek=&2!le*WDSvnRh2kHcaiCc`Q^lwfEE06;~R+ zoL`^wy>Fh}XSdr?%N|x29MNj&oPRd9Q}>#zUylMhgs&~{rkT)cV8<_S$}9GHeG0wE zL+G8-{h7?yjp|KvobT69x6tdqweg3^$w?)4RsjP&Tth4xiu8AnIH&dVUzNyL$HwSZ zRuabY(8Fbd{oX_QRHkcdnph6IX%=DKq6CU3*-f=UC78A8eD);Ox9^ZrU_ace8FP! zoSAhJNw+%PnbQ|-*dRhEalX99lolS17Rn!ipY1UZ!lZ3FFSMLXA#*;0rsLXD$;gC_~B4;SoRz&Fvv)2e~SbK7I61Y>D~P{7n&c#P?+{9Kia4 zo*l&REbu7O=hx7wC?z-?Ad!23B$f3OyCKgM5-H>oB2$-FpC9EzWwwGr$yjE6 zw?BGZ{Ieku{#J1(6T24ZnFL-9|M8FM$@DQ%J^t|y?3Va&<!--;6P`Ysav?TWXYSlifQRr# zyTD^DxUn~I4fSZ>CM!Fe3Cx|^Ow{*)v1rABeN&BYSNwISo^j5>-Kf$RkWqfU*7O& z<>|PMGb;-xyxyU5Z;!?DyqzWYj%)YWZ{nCItC+|ks<<)+=Rdwc3$rJqUN zK74xJTSK>-<0rTGFdZ(nBk}Fg57TQC;>Y^b&oj|}{b|?rwX-euhDaZ)QeXMaPV2#a zO%TJzga_4*QdL*!NroyZb>QgTy&_Ip@}zQWkDfg(U`{ifc&w0w+~S$^IC-+q0NF@xStqkm(h#Bzj13tZuZP{Z(VL&(OEPJ;djEyF zIcvs}0i)P@7{hMnM;9{Itb6RH%S(2DYvRZ`f8jy~iog1cBI%Z?jBjHRrO7)VosFZtcCjJ2gA&jDpp=I_b7H7 zD0BGwa+^JI(&{a_D|OrKi>0$VQ|t9wFeah2bu|vn_suPg+bnGr#S}{jHp%3-_ZreUSL()@|#ARn%PUWxI!& zbAp;>eLk(?`(QVHOWSHzG!tAThjcvm?{7~H+xFuJ$4TfW24h`Bewe|z`4y~lTf1R* z3KBeWC08No^cyFBdb;L{1;Gz<^z@D`pB-6{zHXfM2wz>D-Vl}HwiAoeyuH1LXlV@u zt=`ULiebgye*E}sB%Ax&vGv>+FJv>PbPrJ}J#ryV?ADv@?b8Wu^P*56O!Lbk6efKZ zo}z(9mBNyWO=e6RZE2m*hk9WGH&Kj)fF3fw5#V69Y*a6Vm~AtKj7A}ZR*`j8_gSAy zsU3XBDYF7j>4d=u%e8A)lhl6f=MytI_uN5O&zzYqF9a9G(+&5ie?>i(hbQq`*y8A|h-kKS8-A@iwsiL2S1`WMA#II%Yq19z zPW?UeNv#c>j_BGE^GZUm*d|=R{;QAt%XMbOg@v!tUM)eK2I(-!_rWlmi~S3Z^&fh+ zva*t%_^jQ{YuAiro>248n^?5W+}hT5)~s1xmYFv8!TnF|aK-+1?9kggrwf!76g;%g zxTmk2W^X@+La+@tOtY!>Z7p)}1&bE#K6`cu9opg(wvr#Ek@cU}=GGM)uPaa< z;yTlD|0KTubs$4;X2tmP$tB)HDnc?1%`V<8yjHRIk+X*Rr-0hbYPXeZ9uIonH`F8g zVVk)z>Z!{bE_np6+h}v#FK^5c*RiweoL_HP-0FwvaPL~Dl^lc|k+)xFH=c_W^YpIY zGaD$sO+8@@iTqTn+o3`&E-$g8_X4<+!SBakCdL>@GCEP^)d|96yXXvG>p+ zubefvDGmAgOGw-?dago%^^bLeJVQpwAUlW-hM@lTrZK(vA2s*%EnBwu40Tv_*!@vn zUR>tpeJ}fVl;RrN_BHO0VHTC1JRnK2Z4!^e^u>#NqTpy7mcN&RPk%sDcNrN*W6h&} zmttO+P&<8nx;A9XvX`uu^U=|sIcvIa{n%6M`2o+_Uu_ah#oW)8G_04Fj1nWa358UV z3#zE73IPyV`@2p(zi zb~_*n+D#oGh#Gknl}u<=RkH3ajysgQ?9VQJ=875Fb6%wA!R9Ym-~pyGNL}4z&h>wH z9K}(iXpf~hrNlIEG6s7rSP-<(w*T)5r*ftQyw<5OjW9~j$>}5%pLn7@!34uXL#MU9 z5EQp~!Ggh0@9V`CqqQ1HkqCe~YwOl)?=lYu*Bx7Z$Nc8JCmQpWm6T=xLeAf~c1Oy9 z;lqbBO}ih;58lsVTopHxw$A%Xi+P8p+G1QEvFphD>%n8ROOD^;?fvuV|8LpJ9v%~# z`n!*@n^|k$ly>!oCU2_EgFQkbCyTXH<+>x>GU%RGw)IiBGg5h<74EzZYuRm5XoZgV z^$gZr?afOviNlY7v9%u`{B+@yr2~uWI-l56=k)5eMe6pgn+DH2p)&OPJDEp5r_(+< zxv1TfY)kBTVCodFv5RXau8&Hu-R5?y+{<5m%4i}Wlg9U!|JBuHW69NaTa)`!;M@TY z*-II)3bIq;PL1>MlzJD@xrxpK;aIz{gj{gHqr7K4@)kIJFPX*&uz`A72%(XmtOlka zF?S%kiLPC{4tm#N+VSy$Q`%&`+4J$-xe<60bvMU4XsB;|-ZuHg;gP}HTM9+G$av<) zZ9BD*Ng?p}-oS*+gJ>z`DYVDhC(*&^0OJagxv*&?QM|L-XG)Q+Ds&hESF0Mx(a#IiSVojAFq80S%c%>BxVcR_ZKyk&qHxb--Z6 zZIp4|Xf1@9xM$Cvl#$v=t_crHtMXyh5xpHbefl7{$RMQpc~gG%ldPnt6smvWVIDU@ zZ`8Wuf3#_yDxh)0i% zEPho}P>vfnZcat8M&2298d0Nt}rOkRF4NH?sjR=7jZ@1J)T z1hrWE-rm5exph^ie^x&0KGgYQ@+sR&w@$Zj%pdshMX-d>Qwhr z!6NMaMIYt<{mo2l7t@z@37pBup81OY8TA|m;90UvHBR(QOmetWV~=!=p+Nlw#Ry)% zY1sg4Yilt>%Y{)ZQ(`?L`#OAiHC>EHhZD@~pCer_$E)X87MMKD4w`k|5LE6i@pFXC z?g9N;&2IJtBrYhosQ*`(Ukh+HAyT$flM{ou=?M{dloq-4KBPm7_@KGRxu(m{DpCK= z#IT40sM>MslRPmmsY$!H{K61nBw^Ry@FJ-vOIa8inU*VFTl9<|#-okJNiR2kCJSliOt=20cR&e?uWkORt4fo1 zj#c4V7GGnevi^Ky=8%ql1b>LHnZ4yjvMpcxROiDSi7y$8P=h}|I4omY;GdtHv)e=M z&(9rg+sf+C&kgDJ|GnS~sVwBh>#VJlUO4?7uaFdR^5jWI!0d{ZgXgFbngSdJ^%m$WKc|0MgRZ*{r&y#@9&e7lQA(dkdTmY zaB%tg`QF~%_4W0dnwse7=#`a~k&%(1p`o3fo$Bi9o12@Il$7}R_}SUn-{0Ty@$tsS z#+R3u;Nal={QSMWz3}kx?Ck8QsHn2Cvbeaov9YoK{{E+@r_0OB?(Xi%$;s2x(=#(O zoSdANmX`MR_Qb@*=H}+BtE;A_re|ko`}_OD!^6+d&)nSH&CSi^!~+Db}F-QC@`wzm5E`mnID;o;%q1prF;&)jT{r_xJaB zcz8`sP0-NLy1KgQ>FKnzw0?em*4EZ;ZfIVeI5;?rjEu*} z$3j9vIyySn*Vm(?qo1FjgoK2wtgL{5fOU0sYHDgZIXRx5o~fy+KtMo>ii$EaGG1O@ zJ3BjOW@dbRd`wJCRaI4KX=#IlgGotAM@L6kSXe|vL}6iJcXxN9qN35!(Nt7aNJvP` z%*=0ZZ&6WEh=_=NeSJ<&PI`KJT3T8(G&E#nWIsPYH8nL~UtefwXo-o5e}8{tV`EZM zQcq7$TU%R#f`W#IhGk`CU|?WIMn*k7Jyup$kB^Ued3jJ!P+3`7K0ZD+Ha0~?MPg!N zTwGjJQ&U%0S8Qx-LqkJBK|yP4Yw^v{F#rG#LrFwIRCwC#+v!6SXC4ReU&wD}$VDKK zlaP==2v>k`Dk)k-R6vnS5usvL5U@gB?{fw3s;yRC?W%2U*KYf2@8h4^XD$dD zSfZ=DtIzjEX6DH}&okpNAD?Fi0BC4vXlQ6?XlQ6?XlQ6?XlQ6?XlQ6?Xx^X1YK)OI zG&CP@jGEZ@Of{oPL2aj@`H-V98Q(A0G$wjcX=pz5m^AOz=@{u)jfRGf*NpGg=|s{i zN<%{vNzaCchK906&xVGEhC=Y}&&I~R#egbw%9ihX`D!#YG?cYv&xZSNu%=qR>*cG_ z(9lrUC~Gt{G?X>U8V$_{$=XMVc;uuP;A2d9`McCqVPU=)MOmY)(a`)Kv3B*)mw2&o z8P>Y-**iSOMEsPpMngmMMyy4F;v`Nk!x{v_`gMLqnB{MQwaEc-sZN?Ns$2JpI~9wI z;x}6GW=lCvwY4H{rL09U3{zG7KlA5o(TobBO6NBnDgVC8hRu*{ ze#?ioGgn;dz4Y#-36C`}pi*GXcXxW|3lD%XXX+YL#8DfI3;sEA?<;_Wp6MIk7C{c`j$|ti|9q_qa{!zVrmi;%y$I#<_O5$F z+n=JQ89Vu@uLisqCPq#xAoA(ZjVncyWKw)hT7PZUY6vdd;$M$7M*~-@?A&e$!I~+W zeDrEUvR27Pa$C1wVneW2>*GHIFSFL@@kAbVzI;*{O!Pbbk&yf2S*z&{i?#k-*s}I5 z9oAZlxGWD))@WXjHQyX=FPuK+z*9F*5!TFj_T*4%oX8p}m$p^k;146Xz?x_1(bKD# z5$GjPij=25Nmuw>TcP}XR|V~x)?;gvxN z-gNut&>N2jAmY(I!rEQD1QKh>Fo}mNQ>Qv$o6Oo6jJy+7dwt{MY=&@5-P8U&05Q)FV56e6V8k* z%RUoWYdUvgQ!-&KNjv^^zPOi>IdP?#u;#Gze7%w5in50vu8x&i6Q`e{Sj%PE;oVA> zWkRuLXUoZ_Dgj4VV49*N;H_t%2 zTAJx)w{&R-+fy1W@x%t}8fCTyY)oTXF7&I@OR}4SYdMP7IKaMHsoxJ^E7qPaU?N~m z0U7)-3Mgwyuc~%0?oVXR5(k+Bs~Tcz1lDTx!WU3^OqoWG)v9f@$bVBj+Pw$%F+%zy zE#@@s-UNqojSu9uGrL?$fA2Bn=VtYM8OTkDM-JstTGy6D$k&oDy3FzkL3Eel=x%V5 zmh<^4&Uk=4bwgvC7gBb`(mR-DrL5iD_TxWN%{*%{NPY_Ia6pY|015@967Y;NYrDzv zquclxph{*f1~%ev1e&r19C3dR=7D=6RRPI_wQq#710rjAAa6JD)khXsJ17)igv)q# zyu>X&Ta(tqWo@Q2zWo@>vlgq`wljlg&DWDVTHUAN>c;zx`r~_q-HvCqnGcq76+J2C zmUA4JW+>nBZLZAP>eEZHR-|Y7+_#2e&BSh4f;Cl(Q0-t!h|!vd>98xky-j1iP^0!$ zX1Ux&Oq&8e(Ql|+y+znXpNyFr(iP|Y+2 z*K#zJMwICrBW9EyFgI8|twF5qTb)oylnCxGh&9G*^C~k4Yh~F^;R4w7#g+LMFIbtK z(VWnDn@hLePnPMn=p=F#m;zg&vSHM=DhlMbGj(|#kd@Tdo~E8J<5}aIkd8byy~UHC zzQCGP4ElQ0{xOYWhsEZWSS!@!RW>tTD2+q;N zgE2f>)xs!EnuOYoq-eOGt8=l z03)*pU?39`car~j(%WrJJHVE1ewNl0R0|wr_*27=cGsIhP5$Xk3#{3hB7m>57WEgz zS{G@TDFnw>SGHgHqDD>FD>w~So%qhDW3#p-f?qL3!Hz_76_k8`C8TS{Ki_s1X`AWb zD}!9dv&J_e9eGm&Sub8-O)B>5tN=3!^OI1*ns9o8i|wu2mJE6q)2xuSTSOSbT0OpS z+kQcB3sJ82-epKVANc@R1+(T!o%SqDLKj#wqq;i;{^0yFMy&RD9MI%NVp;17jByajBKMc#*Ya{$U)^z*z!olv=Hpsj)EufFyq0 zceE+E7XN6hUPpErOY}2si&)ENNU>5M++Q$jtI0Z{#i3?4ipN>cztzw%oK+`oC+iA? zOA1yee3l}ymSyH!$dKFSTQTzGGis2_1lGuhbmX}Mu!uFO7@7_Hc9%ggYr^S?&(=(d zOn~0SG%I0k_VEwr(J8$$xc(RX4*awD(<~bJH=&LAWo-~^Fphs*cxAA_n)?F&{_@mw zx4_pKocAM&a)UQqo<-Eyr|`)&vP}3H=Wd?=(SGFA;q7E_cpE2j z_Sz>K%1PMPn@~cxg*cXDeTz(I3F>CX+MAowS zP1P%`DfwbkaDSm#v$X2D1=iY_GMP2lIN8u#MD`bASpY(+X~ z!7H{)L2e9zrW;@p!48qJgYSl zN&fZm=8&Q<&5hZ|-P&~;9ewq~V?mSCn)?3Y9~;RpX_?6{KKbQOdR*B2==*t|OmEKK zOnM3VeB)~F^$xXWwmc0&pD0>;`%{)}-J)9SW7#St2o)Rbto>}4sx`4X#Ike4s@4=r zEE&u@XdL=m>Fv11v?fv+dT1QFSY*k7(s5miz7CQU4JShknUgfb(QuQ<6Xfsf=;6KX zT00S!bI4kA$CM!SX(?H2V}o?mLp>p+6s-j^QVgr{>io39U_pCDw3Y~((@GF(RfEvn zPdj{ci8kXtNLKm6(VAMfR7;hvUJgRlG*xTaGjHLPAap_sOq-l)vR7IjS@DpeydYHS zp0$OvF`c-}JNS26+aa#Ygsf}ROYm({3&boNDqBYa%gmg?T zj)#P5Cp)s{2@Bowl0jr^>hzmezE-uyM&FtiEq7I|g;S-p#vAAR^~Zz~qqW1XlB2bA z9=-m;VvoM4)@n?b{ZqOH(st=JS9*nLOdT_%!#C|}UXi}r%DiE4>eAb^W-ukHh6azx zS`$sFGo!k(yi&5(PFknxPd^Hg1lKPw8JxQ0ALymUkC;X82R#Mt713HVF)YcubA!T# zNVs+^Uu*QFsWE#aCnfjfYfY_NuI1KUfBzkhsA;O!vS-fLc2-GC26`q_e^KXDll49) z-(MRd1Eztw+>(LRy%r+k@(i#`TKjo<{U>Q2tsF7!XX`J2x9|eA#vV@Ii{BoVwbuUa z>+-Q7`Fo7(WJlt1Px%$Q$QMr-7JlpCc{ zT3#u6+u4}_!_niRw9PV3wbt5ae3YTZ?QWmXZ7*oAsMbh^ljrB_1B|tq6lzUcA@w!- z-+5MR*}COgW&*aRQ&ys;sangPIhimU`{J}?3&LQRw80~rEH>FJv^7oK7S3vov`4wN z>)5vjc28@L>W!Q44wTO`eD=ZY!++SNzDruu(};6ztkSLtJw(53b>(tMLFoUDw6M_p zQrRqBZv0JxJ)pHc+8Z?p9SMoOKh9K`*2JTJZ(3mYn%0hc_?qZ>XbnJX&!@GySoeoa zU8UW@qcLGI-YUOD_#(7+Aa1iH8lg1+tvzQDiW?IF0Ifl5&>8^H8ngzj0RXM-dT;PR zJpiCJ^acO`5ui5!0Ehs+0RTV*JHVmAZxnz^N8{L6-7(;X4ggd|6c@BQI~-i%R2Z00000 LNkvXXu0mjf^5@GL diff --git a/doc/user/project/merge_requests/img/edit_blocking_merge_requests_inaccessible.png b/doc/user/project/merge_requests/img/edit_blocking_merge_requests_inaccessible.png deleted file mode 100644 index b19cf1db94bcd606802bdb3134ae79db5a07b512..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4749 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 Introduced in [GitLab Premium][products] 12.2. -A single logical change may be split across several merge requests, and perhaps -even across several projects. When this happens, the order in which MRs are -merged is important. +A single logical change may be split across several merge requests, across +several projects. When this happens, the order in which MRs are merged is +important. -GitLab allows you to specify that a merge request is blocked by other MRs. With +GitLab allows you to specify that a merge request depends on other MRs. With this relationship in place, the merge request cannot be merged until all of its -blockers have also been merged, helping to maintain the consistency of a single -logical change. +dependencies have also been merged, helping to maintain the consistency of a +single logical change. -[Read more about Blocking Merge Requests.](blocking_merge_requests.md) +[Read more about cross-project merge request dependencies.](merge_request_dependencies.md) ## Security reports **(ULTIMATE)** diff --git a/doc/user/project/merge_requests/merge_request_dependencies.md b/doc/user/project/merge_requests/merge_request_dependencies.md new file mode 100644 index 00000000000..45cb56dfb6b --- /dev/null +++ b/doc/user/project/merge_requests/merge_request_dependencies.md @@ -0,0 +1,143 @@ +--- +type: reference, concepts +--- + +# Cross-project merge request dependencies **(PREMIUM)** + +> Introduced in GitLab Premium 12.2 + +Cross-project merge request dependencies allows a required order of merging +between merge requests in different projects to be expressed. If a +merge request "depends on" another, then it cannot be merged until its +dependency is itself merged. + +NOTE: **Note:** +Merge requests dependencies are a **PREMIUM** feature, but this restriction is +only enforced for the dependent merge request. A merge request in a **CORE** or +**STARTER** project can be a dependency of a **PREMIUM** merge request, but not +vice-versa. + +NOTE: **Note:** +A merge request can only depend on merge requests in a different project. Two +merge requests in the same project cannot depend on each other. + +## Use cases + +* Ensure changes to a library are merged before changes to a project that + imports the library +* Prevent a documentation-only merge request from being merged before the merge request + implementing the feature to be documented +* Require an merge request updating a permissions matrix to be merged before merging an + merge request from someone who hasn't yet been granted permissions + +It is common for a single logical change to span several merge requests, spread +out across multiple projects, and the order in which they are merged can be +significant. + +For example, given a project `mycorp/awesome-project` that imports a library +at `myfriend/awesome-lib`, adding a feature in `awesome-project` may **also** +require changes to `awesome-lib`, and so necessitate two merge requests. Merging +the `awesome-project` merge request before the `awesome-lib` one would +break the `master`branch. + +The `awesome-project` merge request could be [marked as +WIP](work_in_progress_merge_requests.md), +and the reason for the WIP stated included in the comments. However, this +requires the state of the `awesome-lib` merge request to be manually +tracked, and doesn't scale well if the `awesome-project` merge request +depends on changes to **several** other projects. + +By making the `awesome-project` merge request depend on the +`awesome-lib` merge request instead, this relationship is +automatically tracked by GitLab, and the WIP state can be used to +communicate the readiness of the code in each individual merge request +instead. + +## Configuration + +To continue the above example, you can configure a dependency when creating the +new merge request in `awesome-project` (or by editing it, if it already exists). +The dependency needs to be configured on the **dependent** merge +request. There is a "Cross-project dependencies" section in the form: + +![Cross-project dependencies form control](img/cross-project-dependencies-edit.png) + +Anyone who can edit a merge request can change the list of dependencies. + +New dependencies can be added by reference, or by URL. To remove a dependency, +press the "X" by its reference. + +As dependencies are specified across projects, it's possible that someone else +has added a dependency for a merge request in a project you don't have access to. +These are shown as a simple count: + +![Cross-project dependencies form control with inaccessible merge requests](img/cross-project-dependencies-edit-inaccessible.png) + +If necessary, you can remove all the dependencies like this by pressing the "X", +just as you would for a single, visible dependency. + +Once you're finished, press the "Save changes" button to submit the request, or +"Cancel" to return without making any changes. + +The list of configured dependencies, and the status of each one, is shown in the +merge request widget: + +![Cross-project dependencies in merge request widget](img/cross-project-dependencies-view.png) + +Until all dependencies have, themselves, been merged, the "Merge" +button will be disabled for the dependent merge request. In +particular, note that **closed** merge request still prevent their +dependents from being merged - it is impossible to automatically +determine whether the dependency expressed by a closed merge request +has been satisfied in some other way or not. + +If a merge request has been closed **and** the dependency is no longer relevant, +it must be removed as a dependency, following the instructions above, before +merge. + +## Limitations + +* API support: [gitlab-ee#12551](https://gitlab.com/gitlab-org/gitlab-ee/issues/12551) +* Dependencies are not preserved across project export/import: [gitlab-ee#12549](https://gitlab.com/gitlab-org/gitlab-ee/issues/12549) +* Complex merge order dependencies are not supported: [gitlab-ee#11393](https://gitlab.com/gitlab-org/gitlab-ee/issues/11393) + +The last item merits a little more explanation. Dependencies between merge +requests can be described as a graph of relationships. The simplest possible +graph has one merge request that depends upon another: + +```mermaid +graph LR; + myfriend/awesome-lib!10-->mycorp/awesome-project!100; +``` + +A more complex (and still supported) graph might have one merge request that +directly depends upon several others: + +```mermaid +graph LR; + myfriend/awesome-lib!10-->mycorp/awesome-project!100; + herfriend/another-lib!1-->mycorp/awesome-project!100; +``` + +Several different merge requests can also directly depend upon the +same merge request: + + +```mermaid +graph LR; + herfriend/another-lib!1-->myfriend/awesome-lib!10; + herfriend/another-lib!1-->mycorp/awesome-project!100; +``` + +What is **not** supported is a "deep", or "nested" graph of dependencies, e.g.: + +```mermaid +graph LR; + herfriend/another-lib!1-->myfriend/awesome-lib!10; + myfriend/awesome-lib!10-->mycorp/awesome-project!100; +``` + +In this example, `myfriend/awesome-lib!10` depends on `herfriend/another-lib!1`, +and is itself a dependent of `mycorp/awesome-project!100`. This means that +`myfriend/awesome-lib!10` becomes an **indirect** dependency of +`mycorp/awesome-project!100`, which is not yet supported.