From eb532a836b61ed2ece5f0d87b87c475e0639458d Mon Sep 17 00:00:00 2001 From: Ventsi <uquzq@student.kit.edu> Date: Mon, 28 Oct 2024 14:11:23 +0100 Subject: [PATCH] Update ReadMe --- README.md | 18 +++++++++++++++++- .../__pycache__/iiwa.launch.cpython-310.pyc | Bin 6485 -> 6485 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 277 bytes .../inverse_kinematics_node.cpython-310.pyc | Bin 0 -> 3408 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 265 bytes .../reference_node_1dof.cpython-310.pyc | Bin 0 -> 2196 bytes .../transformation_node_1dof.cpython-310.pyc | Bin 0 -> 5983 bytes 7 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 ros2_ws/src/iiwa/iiwa_inverse_kinematics/iiwa_inverse_kinematics/__pycache__/__init__.cpython-310.pyc create mode 100644 ros2_ws/src/iiwa/iiwa_inverse_kinematics/iiwa_inverse_kinematics/__pycache__/inverse_kinematics_node.cpython-310.pyc create mode 100644 ros2_ws/src/simple_robot_1dof/simple_robot_1dof/__pycache__/__init__.cpython-310.pyc create mode 100644 ros2_ws/src/simple_robot_1dof/simple_robot_1dof/__pycache__/reference_node_1dof.cpython-310.pyc create mode 100644 ros2_ws/src/simple_robot_1dof/simple_robot_1dof/__pycache__/transformation_node_1dof.cpython-310.pyc diff --git a/README.md b/README.md index fbf17c1..f877cf0 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,23 @@ This workspace contains five simulations of two robots, the "simple robot" and the KUKA robot, following predefined trajectories. The packages are named according to the degrees of freedom (DoF) required by the "simple robot" to perform each motion: one simulation for 1 DoF, two for 2 DoF, and two for 3 DoF. Each movement can be executed with one of two velocity profiles—constant or trapezoidal. +## Setup for the Kuka robots + +Quick guide for setting up the Kuka FRI with Ubuntu and ros2. + +Instructions for installing and using the repo are described below in the README. + +Additionally for inverse kinematics + +1. Follow Installation instructions: +``` +https://github.com/NxRLab/ModernRobotics/tree/master/packages/Python +``` +2. Run +``` +pip install networkx==2.4 urdfpy mr-urdf-loader +``` + ## Getting started ***Required setup : Ubuntu 22.04 LTS*** @@ -18,7 +35,6 @@ This workspace contains five simulations of two robots, the "simple robot" and t ```shell sudo apt install python3-colcon-common-extensions ``` - 4. Pull relevant packages, install dependencies, compile, and source the workspace by using: ```shell git clone https://gitlab.kit.edu/uquzq/trajektorien-des-menschlichen-aufstehens-fuer-die-entwicklung-eines-kooperativen-assistenzsystems.git diff --git a/ros2_ws/src/iiwa/iiwa_bringup/launch/__pycache__/iiwa.launch.cpython-310.pyc b/ros2_ws/src/iiwa/iiwa_bringup/launch/__pycache__/iiwa.launch.cpython-310.pyc index 2117a20787616705932d3d62525753ac79c5811b..4490bf692c9a939d4eda7f5ae947839b7f12b24c 100644 GIT binary patch delta 20 acmca=bk&GEpO=@50SH!A$ZzEKk^}%dWd#iY delta 20 acmca=bk&GEpO=@50SMYl<u-DANdf>mSp?<) diff --git a/ros2_ws/src/iiwa/iiwa_inverse_kinematics/iiwa_inverse_kinematics/__pycache__/__init__.cpython-310.pyc b/ros2_ws/src/iiwa/iiwa_inverse_kinematics/iiwa_inverse_kinematics/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1eb8d3f4dff3c012839e7f77ad985856fe279c94 GIT binary patch literal 277 zcmZ{fF%H5o3`GNCKuDZ{nIS}CMu-!zaDXT@hMG1Bij$UdBRBzPVdWM~xDzZ`^0)ov zXUSnYod}NmWp?cAtC!yx@UY>e5sMW&F&}JiBKG!I-Vap<2dV*|2vv&a1XT(V!AlDy z9e66r8jF$*lMj@DJCcVCQCbAaT#H3jXMdD{o{=hqGenb+Z%RXi%=jyHTpXzwXsKIL r`;4_!h^^7+8;AtDV%#xT&|hEkGA6AT=k7UPxnOe*>;5AevW&zBY>rjV literal 0 HcmV?d00001 diff --git a/ros2_ws/src/iiwa/iiwa_inverse_kinematics/iiwa_inverse_kinematics/__pycache__/inverse_kinematics_node.cpython-310.pyc b/ros2_ws/src/iiwa/iiwa_inverse_kinematics/iiwa_inverse_kinematics/__pycache__/inverse_kinematics_node.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0ce7374f1876d1ee7f117df18cd494a2ece41b31 GIT binary patch literal 3408 zcmaJ@TW=f372eqkxx7h~L`jz93**#47=Too7HR7mZjl5I(l$nFt3^R17_4`O)KYt4 zW`>qYEP(=Y;io?IxhOzBrceDBeedHurcXluK~bPRXO@y>#|?=&d*+<Ep83u<lQkMu z3x0onc5Aq7Sk^zWa`opz<>yf3-#{>nk=W`NU(zS0Zuf2Y+Od<keV3rmiM^!MFB#p9 z%ZcCjlS;p0>Rwz;YW-SL@7I$?zhP`7UhA(zzf#;xHu@XJR*pB5t^StL{kWBE_qU1l ziNz|c`rKkw?w&dQ9k#}5tp1$zclkBeII+cV`R<toeaK@|I_u}KYU^Q#X!l{pIDS9R zB=6XI{TEr3sv{AMc&IWl)vebIpQFFyX#dk+M(Kwco9fD=@lggnQmOq1D<h0}FyxAk zgYYC6aw?Al!6}PGF)FzII1AWs9)0`(^+%ZsRFtJ5F6-*gSykk_pl}OA+qYj>1HuTi zpZk4>IouuC%w^tlx9`2MT&rJtY;{U{`_uF(7m~w*cmjim5_cMsE2Eb{$AXi{Bk(Be z%v!+EOG2#NTG+~Ac5aPa<}BUZq8`{vstl7kO9$${s*I|OnyNGJjIa_bFP%AoHjSmV zSYv)p{%rll#<A3TPR_tXn=o3FRrX+Xx?%LH(Kn4=Gy0a%>qc)Gy<zliIMwy%mfBIf zVBKWRJ?jic{TL*Sc1`Uq_OE)DXgyHZp)Jm|4dvj>ncF#{a^nvxIk5Mvxub3@ZsyLC zEN(5WxqI1S!+3Gm#f~;}d&gSErm$?~?!_K2TeWiU!p1B(itUGbH!9A8o?IRVP2n_V zJBKHelYmCiX>h0lVGsj2JjdLd-8n=%4Mal2EL9?lV=fLyh(D@c0<>vbF)l+9jS)oJ zod`CV)zJR^ANEXT>sNrbC>^#DaqWS~lDln9KGWXgIFd?xpB0}^iqD7mc?BvqEXafM z7@@KcVhBh0Wn~U{%mFaF7H;`Z_E$D+*w*D@k-<5l?Q68yz4tVU#5JfJ@$bJM9%l(Z ze9BWLqeHWu6UeuSr(M`eH{q!akK-sj2176zNX0>u-NA&5E{k{<`khAMNjyo1T@F!| z-IFXEa{)+)F}s13umzsZ<P<)MJQSIHpPtIYCzB{<MPR>uDF5I7=JV@~r@DI21S?C% z_ut0gV5Ih~+52xyzaFJg8YxP9_u?!JVtF4Fj5T%_7_D<m#+iR~w|)DLynT1}?ngl! zPU1ju)_#zQ(?GEH%am^adIBDi!l~bF&))g&w!m-^;^S_+)7GAxK(w@fu^_z_3JzmY zIeBu4B!P?3jWIxy!fN9uz-GFBwS{i3x{W7KU?ay|2)r3|<+85rOlo%=sAKISEJOwU zRfKw+4TrD>H%bSYK*;Nw$ev`1CXgGk*Z_;zM6rdUg<>0o_JC`LTstvOb*+F}8YEn5 zI~{9p#^J1WeFedE7;`Cn>|4XWHN-vzLKM+6T@EDu3L*$}=}I0C^cp4$9Yiq)=7trM zBfTzG+<ei=#U9#+pqOZWO>~9QFb2d?S^)e2XS)Sr9g6$_M4h<AhCj;Ef0|y&t`hgZ zEs%A)PKy6cd&l0iTV#zi$tG#p*U0SVcY_GR3MUgH;x2x5P|8p~f+E`hsGN+f5i!y> z(lOE<x^r83i&72*J$G_vQAX-he(tKuq6%$lrdMr*y=o(82=sVn&pk%wB`9T}{yMV{ zfCWYk=G?OwTo9ny_pDbu-leDXnx}l}@xikOz1N{MbD-N%BQNFUv(gv#+@DwSig=Ox zK;{j#ac0e{;NQ%vbW?3Xt(N<X*3!yrbemQ3+GvOF=GD=)#a>=3h<dcYILNE0BN+op zUx&--2D`L$Y7d9qkFNjgn-BJXc8-x0yC8;8%un2a&pAT+9O>^IugmE7>L2^F?&@r= zX5%0L<gm8N+Jh)%?Vv5Qc!DX{>)g~e!*0brugNn_rkcz&IW2HmF}O6)ssJhrfC@ZH z(F38qK!{)}evG<3j>LQD!PS_QC~^gtDY__dt-7Q#<QB-q6;!2OS5d;LnM%TaqjWh9 zQpAuhjqzTQx)hAZJZ0j0I6`@q#o`^Td63+h=+wmzaEhOz_z~KP5QuT@9#P4(%d=#t zZT{3OQJ3W;47rrLRV3ugi;E_5s68|7%X>kX+<6Oz!wpK@`gKwzKDiCK<C3ORh3qKG zb;or|q-6V~ge@SCnvg%Ux8IyIuW(qWjKqhWL8-1%<eLekJk@oId=M8Nlfs4q1ujT8 zR%sscIKD`AbD{kNyv4#X{nnsJJQ*L-e&;QLwr|~~NUSDDahnP=6dtC3#HW%Cs3yu< zK%N=|lZCs4rz==I{F*0)ZC<YMUXZ|Co(N;Ohk!*RWhMhI8%L?G!#xU*hN*dJXkQ*r z6w6N2jxD}`Ikk%qkk<mQ-6V+8BXCQk<9ZQU;3pAc7l;}9DeaJlojq{}ZMNXzOH`_6 z89g&9=8@hQ0us0qQ#@$d15sQjTdzW(@EGVC)UG4>i<Fw10A8&H$W0<3i)$~PB;#q3 z6bEpE@EC$z<Im`Ls*WMkRxfT@+%s#5poY`&wGH?+x6G~#qw%ySf#Rbe?!kIe2{%w; yGSP(4>{t8_=DQLhbJmDY?cXa9b02SP*#_ZTzJVZskhB1<1*JFb>I1)wRR2Hd9;WsH literal 0 HcmV?d00001 diff --git a/ros2_ws/src/simple_robot_1dof/simple_robot_1dof/__pycache__/__init__.cpython-310.pyc b/ros2_ws/src/simple_robot_1dof/simple_robot_1dof/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dc7e96628c3bcdadffaf41fd3e9f37762e3e6f56 GIT binary patch literal 265 zcmZvXF>b>!3`ON4Lr@@R$lO5@+PMgFf-XIPU|Y1!S`rOWYU11|K~9vlx9C)QYKIcw z`{V~c0n%pksHCo^ZNKQ(g1=SCa**bgz^QljRJ~nPTI^qZ-^@S(%qPUmXmYAQV9b;d zqISSKK;(At*bZXUrQ-}TvF-{a?GUu&j@XXA#9jkNiHt-Oq&lPA)HO3oCZ2f~32YMa si#@Vw3VLT4!{osxYAD-hN8LY;wHPs5yPM|w`ZbU%9`?%@{2*AVA1cOBS^xk5 literal 0 HcmV?d00001 diff --git a/ros2_ws/src/simple_robot_1dof/simple_robot_1dof/__pycache__/reference_node_1dof.cpython-310.pyc b/ros2_ws/src/simple_robot_1dof/simple_robot_1dof/__pycache__/reference_node_1dof.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c513d66f5a983dae3c79dac422d16381bac1b4fb GIT binary patch literal 2196 zcmZuy&2Jk;6rb5IZ?+rPO-h;qg7P822*(svoDe~xv=@{ET#zrLjc4qvz1}r5>$Zu) zsgZi(4}ep0EdK!Fe}F58IU#XCy&w*pH~_ylb{rSFt9|p{n>X*hd0$(tuO|%8cMo13 z{(gzEUx`?K0uUeJGhYBmCV9bnw0Z@fcs-BLd44Yd&o9DB)QdQ~%VZ$K6DC9DJ@k7G zxh5moIN`lmt;u-o>9<w<kl`%<+<ooj3AD4lHn+iEB^B1joubO>_iy!SWA*VDgn1o^ zVm&Td&wIoMTyp81#64g7GB{zq;1LU0FZ`UfL%aEz8Yr#Gz7nKf+`L`g>GKt>gopS@ zx%nHQW)ImZRGx9pj@hYK`_hyCnSabgu%Lql9fFQzD5En(!{Ln;JYK;Og{4d)FD>wf z4A1y!e8xs=(4Ig;LpD}8mmDWv;iQhUw!&F=oMgdiLeFIx0k$M$#g$_=YGK`QyiEyd zaaEGkb2zt!U96*PXC64)k|AW5_w1%##;kNPlhxp8s|$Fud$E<3!$O%SR6|EmSE{1U zY&yvvh<mE2`gwi$8+P1d)2!cDh0<A_SEWs*0+lVOE9c^(UzMiL%Gx&1F=3`k$veZj znm=}jKmAD0pS#0vzoF-c-S%}Gn%Puo8w-(_c`bx(^|i`sC8o3eA~y$0Ys#%nmNZ11 zyB89|UV&5a38&!LMAgu^K2-Gzx%m_+?q$VH;Vu=ds5zw@u%p)qP*gOU3TF4Ks#xr& z#Au8KuBmGqj)f|v<zsj})2PvU89EycvT<E$o7VY6X@Lvom9**NW{&C7B&Jo4bIYsQ z(Ctw-8C47(bGs%4E@q4nkJ(?}cMqzG>fVDblXq*KjTD*5RoRisbSA1a{evR!AApg~ z2BucPOlL4tx+8Pd!MXc+e_YJUVMpa9j*P1c&LOeT*@2lHXUZdUh-G5Bx-##H`=+}; z%L~~x`DBV%>1w~K#Z8pcGdLIZwJg1z>7i~Sauite7C_2dUW=!G%IEKfx54Lc<VQT_ zkw@<qKYH;Q&A)SACr?cQ4{B-NeM~lf2B0bM6-RGyjcysCKSusF^tkZK+rTjiM&X$0 zcW6)YbBuQ8QVW^LQ6x<r)+pbYW1|==dVbWn%C^}!)OQ#Br%xx_WHBf)2S%7RG=H2Y z7gFR`JPx$L3Mt`9vNM<C0ux}ge%d^Cv&?n3zqe?nUv_njYql@D=Fn7``Z@tBTKznM zWi{ItDy1|zb??03^fn2+K)_Y{HDET78S1)4Xk$^3ZBO4I+Mk%Aeht_h(EQdf0krX% zR{^3R@>_f>X!0gc__o*NEgt(#BpK-h*5XHRJ}a3hm;bgvJEB=oqKPpJ5+Np)oT2K3 zO@;V!mKF0IS5eLfyT0fU45dPd6*pfYH=VCk8Wau_0mLlzS~oQD{#QdZX<QAx3#3N% z9OEzdHU1>ENA*;*Q-7X~V}2T(;XepYNUO_^=YE5k9vWOC)cs<5XakyR&KO#Hn!E97 zYF!-)Y7iTngIO)B`z1o%flV6_d*u@3zYQi?UVaM9P`XltG(n%FT;HNygp2ltX!E^x zqIZawIO{u388wFu%h?3(c;(clrj`O3H9M46y0Y`nDbtkF74t6X&WHGec_u!jKd#vT RKp>qLEkF4rZX`VT=U;P5K1Bck literal 0 HcmV?d00001 diff --git a/ros2_ws/src/simple_robot_1dof/simple_robot_1dof/__pycache__/transformation_node_1dof.cpython-310.pyc b/ros2_ws/src/simple_robot_1dof/simple_robot_1dof/__pycache__/transformation_node_1dof.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..039ed69feb5e5deb96458f10c7defe744a9759f7 GIT binary patch literal 5983 zcma)A&668P6`!6NjYc1<)qZ;I^>=_oB)f})Nq|blCUG1{@Rnl-4!R7p>XCM|^C5ah zwpS%rDApmToVan)rYNeyA3$;7mMdI1_LT!{kppKcRpIx#rM0xlCP>w<U%&3@>F)P? zA3f>ZT-m_ykB=^OJ~?j~|DeY7&qm`WO7<xTH#m!ormk6&p>0NHY&9)LGApv<LbITF zJ96S;v#9t&<i@3DN%2lpjw{VdTy0k4x#pabv8dLZ$MeOg9xpT(l+2A5<E7@3;!DwT zywY4zd>Q;|b5-$`=uEuUTvL2CIvbyBo>Tl>v>u;to>zP=x)5J%US!6b2A}8kCkC$v zr30&Zi7)d7zW9VSF9%on(w-^u;PQciXV`sJ8Y@TGv9aA?(!Kq5n7o$qeemm@AoqHH zYtQclUbgFtz~i9^T6rp{+l^A6|Loqa+u-f(lm`t<T3MJ#tCeQb?1hjQZ(~sY(sdeg z*UxuRSMH`+a6k9sUci+YP1NPL(lE&(&#C3y@x@*sz`6HQ$ig%MUwA!ATYD{9>-5hW zH?nuZ1P1A<X?|d|8E4#l;x;XAar=qUw0VI$s0+NvUDOUQ@iOWnukb2rm(TGU>XJUa zX88ldHky_DMq@#)y(|1AYo{Vsi}7f`-nCn4yTzuKLMw4lsLp<lp4>PvMp(xoW5&=J znYqQyq0zOub!ZO_uaG<4;>gWQ+&*Bmx<l(R%gaM{z|dR4$O<o>#gkrD@vh?M6kk$& zP4Q*L&nv#7`1<k8RW<V*W;QXisb*fl$c6FDi;CAXFDYKnysUUV^NQm2%&XYPnS71c zum=k(JFD8~aAvx_uG;5$ecZmF+82R9-G527ExtHzU(VMKXop2kZ!dPQcvmsvnL}gr z4U}&lqEAV`#jzsqS#CfdE8B7{pH)br6vET?V08=h+Lj2~fe4aT;Q2`>3bG?IepwI0 zhrY*ytR=!8!AjbF!P|oh$**1Cq=sa7WZ`}kX1Off(bb!}dQDXeSs3@Cz!T|CntRvi zoiide$>8$V^suc5Vb=GfaG>GSgDniMe$|Lr8Ngs}t4ns_Wn>r`_O{pG^F3PZR_+UB zps=4oY3o4%+X(Z0X~lj|5GWhZ$wJoe1wy)>7baoud2*>G0!-v({hi|z5G6X81=?DW z1j1|iQM3cAm(}S}(u7glv~FqBk_2H~kjs=6eGoA;5Q$Y1pCPhF<SdbMAaZf~I6O62 z)@EdPPK?nin0-#`V^*e>Gb_`Ys*ktZ>+fKDyMYi21oN~F?^x)G8ZEHiQztzoo+I%y zQwo@RW@hE0N+Zwppo*y>N>%!7WObq+>X*)L;B!(;TljI{g<O_Ml`V2_(n`{Y(#caV z&N|Q_c}iIb6CON*gSE3DYRekI)N6+Tq0-3uY}=b&+{a9oJWTCpndg0M{P!<gyJ;K% zFG-$-Td<;Tum_JG2FV7@Vj~WcthF13tz8KGejA_wmu<BBf!N?-uz}|uhOND*pL8~Y zFu@~xX$q79*qCzzuTel6WczqD&bCCFz34s6ws!hq#Agt%Oy^4^r&;!9Z(m%*L9d`> zw?L}QW+whbozI+Nnc1J0%_^Jx9qXi|Zq=FoyXaeGWpi-lG|#>{v6_~NcTIl86ZBt4 z$zA{%vM#wVIP5MQJ%Vd}h_KN$x%skT8XnyJ$U3B8OODIhR;GER?9-Mu_j6yeJ@I`^ zB-c-Dd|HbQQ~ZF&SOA516`UqFh`S7O6D4y&T(fM}Sk)SQ`_z4X!O~}97@2etMQ!l! zU~;2^EMa}JNs3==nOatEj}XDowhmZc)HTLp>m7U2p7d*J2bt4H4Acg-4=KvIn5Bfs zM6u31YaAd}LR!r!%29Nqs8&6oxM+`Xv|V?|4$a5r&_othc;Dns8&5q(BpNNyF{54_ zS~}i#mv|8h=|HwTQGrr}yWRQQU+MSR4ecszRcUe)d;X%7G$yF)hz{t8AaF!jXsif2 zc3H@G19;@uh_5N$gK@W1h%pmburGwaFX&_ir3i8bZaoljz(aD#Vw~m3!XSXfNGl2w z@f?jiI}HO*J0l&@1ifE8OXPVP=^!_W`;ojdc46beI&{qV1X*jPNtTO#ixRwiSL1K# z1pdf>HEfN$OPEFE9ulC3zTn;-44*QgRyLkjUI-HY72QkJ4gVO@fsCIyiDN?C+bG#p zkg8cTZF3Da>frBwwpv^?YgXNa-Qo|+|9o)$RD_?{$n*)$V4V~}MPdE-U~*(@IU(HQ zOk)waL%ueIX}^MAWNs!bfpKf5WzVz<XcaIASw<1L9A#d{$VIC(G=W`fXaTzpuxl&q z+Ie|YQ8F7c*v9)N$q(76dT2bxOryD>JuDoWV<%G7PDH$k1uIC3+u)80)O-V^Q4?<w ze}~965fzUKrW!ITMpIB0cZvLz$UKOwv_%?wP^<_a$)cZmzwG<DT%F)a#Wxkzh-)|+ z8VgD?4NQ6ARJ71oxqb>(ROiABQj}<!L@Gq-tAIz+ljymR4MZr}GRU%7W;OM%14ni9 zBCDH&7ye(o(DXA-pRApV!pZNzP+tGo<ZNhm*~G<<Y~-s2<f|lefDz~re6j0#B|^+` z3;8{_k6RU9P@}4z@_5{Y$9fr9neW!MM@z`FQfm?DQTK@M(ulJ2dEFYV(DTGA-{x!! zTyC`o)94_a{1XMg|J-P-iV7I<B9ZSBxlZJJL|!8DG6)hqC|J4^gO%)&Wc!j0WMxVX zl08)ZPCP@86zGvm7Fto@3+ed19<(MlsH->zkgQFRq_f+Gr4i&jP?t*K)B8^Zw|kJi zhmuh`>6k8C9xJxY$`(|t)H`_gRMpNpy3@7#D@_0OT7?HF4o$=?Wy>Bki5B7(GywgL z>)N=+jR^9(x4>;xFDgyfy`^!Rbht8F)moj_UFXwx{(SNMe;?iuzrd=-sxyoZ8u<O| zM&pdiSieSx&i%VTe&gO7($4pLfwX>f>lU=40+Kptq?X9^1JS~if)fcqpuaRqg=9!e zKs%D{h)wF;1DWWn+Ug5jtq?m1B?vooS3jvZvc=z`WQ0boIG4HP%V++u%hQ!N3zr$! zO;PyRB+1=z)?trfbfDzGVS36*GZ?Cso4AG}3nLR9THOMf=g{(?N>JsPM`fKfC^gvI z(oz2Gnn*CSP6jICC&bg8K-7smH5p|~+HMl$^J0g(w}_}y8;8(}c9Aq9lU3c&v02Vf zwJ7aBd6w^Bu0Nn;^kT<ySeZHIB8o$P?T4p=e{z0P(@z4nzP+~S2q(XpBke+}?7@P! zLM+6wk*CvMjd+riPa_`q9*-$t4DvrEFJKImFy?6tc|Cpnup>l7m8YpAFN|Z_O}thI zHi~JDlDb*x1Dyq`XwyhC3Gp2wQztEA2xOUJS0EC)<C7x`zU*L|82KlZY!Sqnx;oGm zqRs|eUwgD_W(pX}7#dZ&Y?F#{*)Dr@&F$lo=E<r@u{6>>>K3EYcJVsiD=2gca&&@> zMv%4ztxV31FK(?Miac)$6|c|`mHaP&TS8GgaFI5-&$|`(io4`4yG!-Dp#B-dp``KH zaOmjZ%aCz%_8}q&846`QBWPDe7e*!nxr%J#2xHQRLK|NnvW6oIq80V_rA;3g)XQ*1 z?cpO}6_?3er28Iyn2~O_+s}FWFu^_MH+ZMCNj$Y7+KaSfKTJLWm(ex73SUu%uc$Kd zA@$;5so(P&Y`bw)d;poCOi|9$#{`jRL?b0tNse5H65yiL#o6oa=eudLIsTZLsgD=3 z77I^ZoasX*92ntWmeqbX)$%B#qD3J=cIa(IB0Aeo`Y~>!<ah9yB<F;!Y?CZkeN3q) z{)49?+KgQ21h{tRV*jaJ#o;P-&S$t{r{ZZBc^SDn`_1V173yonnXDD|_BS)6@1Y-U z=98~s<3vvHLVZxs-imOb&QbiDxTjH8aq9TpS2SE-rMr&0+qwoFzy2>PRZLpCu3N@? K<!i3Gc>fP=z&Mcr literal 0 HcmV?d00001 -- GitLab