From 67be75435adcc66f9c8add189deaf069568b5fcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89loi=20Rivard?= Date: Fri, 6 Nov 2020 11:44:25 +0100 Subject: [PATCH] Documentation --- .gitlab-ci.yml | 5 + .readthedocs.yml | 11 ++ CHANGES.md | 34 ------- CHANGES.rst | 42 ++++++++ CONTRIBUTING.md => CONTRIBUTING.rst | 27 +++-- LICENSE.md => LICENSE.rst | 0 README.md | 65 +++--------- doc/__init__.py | 0 doc/_static/canaille-c.png | Bin 0 -> 4219 bytes doc/_static/canaille-c.svg | 24 +++++ doc/_static/canaille-full.png | Bin 0 -> 20351 bytes doc/_static/canaille-full.svg | 151 ++++++++++++++++++++++++++++ doc/_static/canaille-head.png | Bin 0 -> 7764 bytes doc/_static/canaille-head.svg | 79 +++++++++++++++ doc/_static/canaille-label.png | Bin 0 -> 8749 bytes doc/_static/canaille-label.svg | 77 ++++++++++++++ doc/_static/consent.png | Bin 0 -> 30341 bytes doc/_static/login.png | Bin 0 -> 19192 bytes doc/_static/logo.png | Bin 0 -> 7125 bytes doc/_static/profile.png | Bin 0 -> 35147 bytes doc/changelog.rst | 7 ++ doc/conf.py | 84 ++++++++++++++++ doc/contributing.rst | 1 + doc/index.rst | 46 +++++++++ doc/install.rst | 58 +++++++++++ setup.cfg | 10 ++ 26 files changed, 624 insertions(+), 97 deletions(-) create mode 100644 .readthedocs.yml delete mode 100644 CHANGES.md create mode 100644 CHANGES.rst rename CONTRIBUTING.md => CONTRIBUTING.rst (52%) rename LICENSE.md => LICENSE.rst (100%) create mode 100644 doc/__init__.py create mode 100644 doc/_static/canaille-c.png create mode 100644 doc/_static/canaille-c.svg create mode 100644 doc/_static/canaille-full.png create mode 100644 doc/_static/canaille-full.svg create mode 100644 doc/_static/canaille-head.png create mode 100644 doc/_static/canaille-head.svg create mode 100644 doc/_static/canaille-label.png create mode 100644 doc/_static/canaille-label.svg create mode 100644 doc/_static/consent.png create mode 100644 doc/_static/login.png create mode 100644 doc/_static/logo.png create mode 100644 doc/_static/profile.png create mode 100644 doc/changelog.rst create mode 100644 doc/conf.py create mode 100644 doc/contributing.rst create mode 100644 doc/index.rst create mode 100644 doc/install.rst diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7bbaf95e..bf806764 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -33,6 +33,11 @@ python39: stage: test script: tox -e py39 +doc: + image: python:3.9 + stage: test + script: tox -e doc + coverage: image: python:3.9 stage: test diff --git a/.readthedocs.yml b/.readthedocs.yml new file mode 100644 index 00000000..3ed6ae9d --- /dev/null +++ b/.readthedocs.yml @@ -0,0 +1,11 @@ +--- +version: 2 +python: + install: + - method: pip + path: . + requirements: + - recommonmark + - sphinx + - sphinx-rtd-theme + - sphinx-issues diff --git a/CHANGES.md b/CHANGES.md deleted file mode 100644 index 4480880b..00000000 --- a/CHANGES.md +++ /dev/null @@ -1,34 +0,0 @@ -# Changelog -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [Unreleased] -### Added - -- Login page is responsive. #1 -- Adapt mobile keyboards to login page fields. #2 -- Password recovery interface. #3 -- User profile interface. #4 -- Renamed the project *canaille*. #5 -- Command to remove old tokens. #17 -- Improved password recovery email. #14 #26 -- Use flask `SERVER_NAME` configuration variable instead of `URL`. #24 -- Improved consents page. #27 -- Admin user page. #8 -- Project logo. #29 - -### Fixed - -- Form translations. #19 #23 -- Avoid to use Google Fonts. #21 - -### Removed - -- 'My tokens' page. #22 - - -## [0.0.1] - 2020-10-21 -### Added -- Initial release. diff --git a/CHANGES.rst b/CHANGES.rst new file mode 100644 index 00000000..cd0bfab2 --- /dev/null +++ b/CHANGES.rst @@ -0,0 +1,42 @@ +All notable changes to this project will be documented in this file. + +The format is based on `Keep a Changelog `_, +and this project adheres to `Semantic Versioning `_. + +[Unreleased] +============ + +Added +***** + +- Login page is responsive. :issue:`1` +- Adapt mobile keyboards to login page fields. :issue:`2` +- Password recovery interface. :issue:`3` +- User profile interface. :issue:`4` +- Renamed the project *canaille*. :issue:`5` +- Command to remove old tokens. :issue:`17` +- Improved password recovery email. :issue:`14` :issue:`26` +- Use flask `SERVER_NAME` configuration variable instead of `URL`. :issue:`24` +- Improved consents page. :issue:`27` +- Admin user page. :issue:`8` +- Project logo. :pr:`29` + +Fixed +***** + +- Form translations. :issue:`19` :issue:`23` +- Avoid to use Google Fonts. :issue:`21` + +Removed +******* + +- 'My tokens' page. :issue:`22` + + +[0.0.1] - 2020-10-21 +==================== + +Added +***** + +- Initial release. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.rst similarity index 52% rename from CONTRIBUTING.md rename to CONTRIBUTING.rst index 42df8f3b..34b18c08 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.rst @@ -1,20 +1,27 @@ -# Contribute +Contribute +========== Contributions are welcome! -## Unit tests +Unit tests +---------- + To run the tests, you just need to run `tox`. Everything must be green before patches get merged. -## Style +Style +----- + We use `black` to format our code. Please apply `black` on your patches before submiting them. -## Development environment +Development environment +----------------------- + To try a development environment, you can run the docker image and then open https://127.0.0.1:5000 You can then connect with user *admin* and password *admin* to access an admin account, or user *user* and password *user* for a regular one. -```bash -cp canaille/conf/config.sample.toml canaille/conf/config.toml -cp canaille/conf/oauth-authorization-server.sample.json canaille/conf/oauth-authorization-server.json -cp canaille/conf/openid-configuration.sample.json canaille/conf/openid-configuration.json -docker-compose up -``` +.. code-block:: console + + cp canaille/conf/config.sample.toml canaille/conf/config.toml + cp canaille/conf/oauth-authorization-server.sample.json canaille/conf/oauth-authorization-server.json + cp canaille/conf/openid-configuration.sample.json canaille/conf/openid-configuration.json + docker-compose up diff --git a/LICENSE.md b/LICENSE.rst similarity index 100% rename from LICENSE.md rename to LICENSE.rst diff --git a/README.md b/README.md index f59ae704..6a70e475 100644 --- a/README.md +++ b/README.md @@ -12,59 +12,18 @@ It aims to be very light, simple to install and simple to maintain. Its main fea - No additional database required. Everything is stored in your LDAP server; - The code is easy to read and easy to edit. -## Install +# Screenshots + +
+ Canaille + Canaille + Canaille +
+ +# Documentation ⚠ Canaille is under heavy development and may not fit a production environment yet. ⚠ -First you need to install the schemas into your LDAP server. There are several ways to achieve this: - -### LDAP schemas - -As of OpenLDAP 2.4, two configuration methods are available: -- The [deprecated](https://www.openldap.org/doc/admin24/slapdconf2.html) one, based on a configuration file (generally `/etc/ldap/slapd.conf`); -- The new one, based on a configuration directory (generally `/etc/ldap/slapd.d`). - -Depending on the configuration method you use with your OpenLDAP installation, you need to chose how to add the canaille schemas: - -#### Old fashion: Copy the schemas in your filesystem - -```bash -test -d /etc/openldap/schema && sudo cp schema/* /etc/openldap/schema -test -d /etc/ldap/schema && sudo cp schema/* /etc/ldap/schema -sudo service slapd restart -``` - -#### New fashion: Use slapadd to add the schemas - -```bash -sudo slapadd -n0 -l schema/*.ldif -sudo service slapd restart -``` - -### Web interface - -Then you can deploy the code either by copying the git repository or installing the pip package: - -```bash -pip install canaille -``` - -Finally you have to run the website in a WSGI server: - -```bash -pip install gunicorn -gunicorn "canaille:create_app()" -``` - -## Recurrent jobs - -You might want to clean up your database to avoid it growing too much. You can regularly delete -expired tokens and authorization codes with: - -``` -env CONFIG=/path/to/config.toml FASK_APP=canaille flask clean -``` - -# Contribute - -Want to contribute? Take a look on [CONTRIBUTING.md](CONTRIBUTING.md). +- Please have a look on our [documentation](https://canaille.readthedocs.io>); +- To **install** canaille, just take follow the [installation guide](https://canaille.readthedocs.io/install.html); +- To **contribute** canaille, please read the [contribution guide](https://canaille.readthedocs.io/contributing.html>). diff --git a/doc/__init__.py b/doc/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/doc/_static/canaille-c.png b/doc/_static/canaille-c.png new file mode 100644 index 0000000000000000000000000000000000000000..11b048cb381a1978b0fb3d134aec704e9ae77091 GIT binary patch literal 4219 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 Pe;8wZbG<5^2gv^dR>SPm literal 0 HcmV?d00001 diff --git a/doc/_static/canaille-c.svg b/doc/_static/canaille-c.svg new file mode 100644 index 00000000..fb15e09b --- /dev/null +++ b/doc/_static/canaille-c.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + diff --git a/doc/_static/canaille-full.png b/doc/_static/canaille-full.png new file mode 100644 index 0000000000000000000000000000000000000000..2653737b0fb857b0ffaceef21f828acd073f966f GIT binary patch literal 20351 zcmb5VWpo@p&@MRUF^`!!W@ct)X13#)nJH$b#LSe~F*7s9%*+%sGsX6uym$AU-Tm?H zZlBZLQg^8&l~k&yO5IT^O47&(_y_<109jT>LJa_b3t_ z0Dy!3?}V_-n*~z=@Z2PI+|(VvxOtkoSO7#nJDORL%G#S+TBuo=e)e`Au@C?Nl#yg5 zL^Zrt&oXy3`$<88in$+^1oOyeutdGc4Fm(ov+y?5D$-7n?oc@*+$BmN)UBO%PZ%*^ zUs2ejmkkflua!T(zwERvN$qz^8z~J4aX_5*mm0N}X3Csy2y^woxaR8bSvY0#ai39u z_$wiU1P)S>JyYBmvfAI@VmtSN*+iTYX;h;6<*T(_yx}WE_rKA{2wm;jD3!ADC8k^G z%`yWP8Z(y5N=nGXcu`rF9Mh*_AAd|A>Adig2y_17gXn=HF%Cx*hI$@TF)kUBCA#^^ z^I-VcAlz4YXi!hM>K4y`9X+b%_425JpRti`k9Zyuh`$*;{_ETy4rT`60&(eI&*%|} z9dt%LJn1T?kUHqhU?oVkxd%vKT3*CIoE;`JS%`xD!xUk2`$w6fYH*h80EJ1RizSUW zhL>O5Ug0_yWmxyyo9WSqZ<7+T3bcel1%iH+MvXnBtSOx?2B}{$I%fHNZ`1Jj0|*H8 zK=jZ2F}WKWJZ{>SG_uQb%lSKe`GJWHkL;moD%GIp<`bC^rv0QkJtb|{SoXD=6^_#Y zeWr}xJQIg)l1l_P%$pW8?lZI-zekaf#- zN2hN58Tsuc+=axMLJzgJ$0wFH$#?s=$t*XvF7hjORu$2nR9Y)0#|k^TZUWx_=Uc%06N?g4C8_>mApQ*5X^Pf%!CfM zi_OdV2$JVrMAazIyx(8@EQyki8T=pr$mBf7THyU)?HscdY)JJhoUeBc(vb_&A;pe_ zF{6bs+q|Iw_-eb&vmlAj5q}_Kd{Y7_h)B^8^g#E(T0n8pQZx`u!&^~Xv5D69^7;wM zr{wT>*gi8YrMHlKf45kvGg?vptoRv(C&BbVIfAT+a&5mTVGJ-_wSY0h32}zWPJBp> ziwTj$G+g~$9u)~Iq~2qO0_^ZZ2wc>|bsb?(?a>>!gE_NHYIIO6V4``iQ(-*`_SV|a z1yD9Gb+&j&)9}uY8>+$|Zn3uC$6FIo?)2^VqqhM2d-*{7y+ zdL&aD{|(IwBV4P2x67TK1SP-Xk5A!Jxzfr%-mH<|`8%^wfdXo|=noS> zyF?Sfc>lIiyl8{JeD2#pa?4wVK0Od+hL)iNn~#2r$0@R=lw@vYrbec24L3LxLhmnn zc0cfWC9d=iX50Zu8R8N5%{mtCsX|0UMC*lcRX~lR@Q?kcw6dr}Ex%(#misruL^H)Z zIF(fKv!g6V|H+a7WbcH6BgDk<-nr4rwjm!4(CeQoXU~T-xnVwI#bou@rsF-xk#t47 z7f5>Fb(MLTsycz?OO;kp(X;Et1aZa7mvIw@(-gKY_8+4;=rLw1&a_ZvewvnK>UN{zNw zyM8$011_wUTzb6(zb|3nNx*(b3>hY6i$o&Fk$*-D?6ehBBY^D--wBX`DF`)yd7=ZB z0*qm3A$|oLzp^P|Va9nV5rUz~a~-qvvv-mx zTAt9WbA%~`%aw;0fd*Czhs(+UBJCm%dPSD8G$@*#;XvZ2A@M#&do#7`f9|9r55Bt; z%uC!cm|n3mdEIFcHgA;IB^Y?h4`)IL$-GlD=f-qi1BioG{U(OJNxe%kL#$9}^%VbR zxfRaetjGV_I0$a|t0 z4qIK}beW@bJ%i@%vv8N>QJfJ-rF!s+OdJ^cy-Vj{G+7;p{-VXaG&K4Pd$3To`cXK| zU_|vx&rnoe<_%FTi&TgxxIBjk#rK&pg!MMU*VdAvT|fh4(kFOxJl&21N96q0oh3~e ztk_g^I=)Vym1PsHQC>`D!#CJMUeUEV%XnKBQMNF5dww@Jo_?znvgeQ&kfSF~Dk6~7 z-@G49PjjjnTwW5WBkOt>d;5)~q1ZDWg??6bO zssF0WyMxsk%CkAm;p0G4nwUC+kH*ErT zDGlG0qw?0?wMq-!uSX54kVjyD z^G?l%o5K`pVuDrE&BNMHiO!4GohKA)pydD(toq(=Y?g}uK!hoO|KYtK#dp01>$V;; zDZx;q(5Z2u`^RZl)!66krM~1uU7$-lg0Rn^^;}piVJMNw7mSc+B-w6&gL_o zZAFqei_10C>mbhin)eIJNx|Qmfk`{ADdk=GpX=1P>6&W{4tDM4?tiK9=B!B=;rgI+ zh2IN|45rT2Ra+EV_r&Kwx$nw;UuJRC4aOUE2rgC}vV)#ajcD3mZr9ozQ^ins+G-;X zclV-QD|VnVD>|&6eJeC?KVbCFYW6oC`nuBKz8{?+I?*HZsWu2RCrpVB1uiO&Tl$AP0&-2LU8Nfj~&k8DWU!_V@B8e^Q68gpVYpZ*IX27yyi9rNE4Q(_kua z@>5Qr2V@^~5WEakkHWNLRkpsM=}02ObHv?qM;ctzc|C)_A79Q-{uW1ol{gqFLVN=O zM8p7}paI|nd<1arZN>;YtXL)Q3IiX*G4t4yEOQ&l8BJ778}g;a)GL+mN8$(>w^#-r?h55)VSZ{#8W7vMlURMX^PPJ2L5;@g$v5t#8~6IFgGWUz}{z z#ySe|h~V&dzG8Nq~wZ z*8bii^*UkZVb(8s8!m5+HIDlJRuq#an^ISCex^cd>bp#W@55+aoE`PV8`z|I-sP+5 ze%|M}CE5pcw%Vq}u&1t~{zN{T|8rhwe+wb8LvQm^>f~ljA!|>qDSK0EHr?CKp5-Y> zR-KXZvmjmjc1)RoFPT(@-&Rp}pL~aL>x$g?B<9)?FDyEfK|AgDKq?^-l2126*zYJF^vrRF7>=9#JmqZ&tf~_rg>aKjA(dMUu7J-|_@eyg} z5%-Eu3NC^L%avhukA5CwE|b=7LxJ4q_M*k^52@;S8_oln&Zgd9kAC%`LmGQ2 z&121eaEFBJU1T=d??M{iKI#0}JQX(6sRjSWv1I$(r^t=X5GuQ3vY{Iw9{}R8cFlJ> zbV8O58G zq8Yau{|Qplj?c;TrxX(oxCY!4KjSWd`B4|kjlQXdtW# zN%aU|utCzCcxX|WlfAhSal-rW!>XR~yrvdKXpW=e$YE^0V$;|UDNOW#MMT$IWnyXU z><+AZ^T3|F4U;K$-Tgid!|1Eb`c_s&9f|Beb;OYfZ?%S7`ymvu99y&AO@*weL61P@mEFqU9^2%_`ZJJFJ6X3l$5& zVe8gV-!p$Jt2wq?suK3zaJ7{3?_4*$PbD>j2|OBd#1$Qe%fTo&hkoZwBDy4}xr0)< z<{1b%*=LNNt}0nIF^5dTLl7Fx+QMmWdGG<;N}V<)$_teHMoszdk))k+Xgj+IuI@X8 z`kPicov43H`bfAT2|hd_Gh&zEY$Amat!dy$a}+!8i^iMoTTJ4J;zI>y`B}Yvmzf_V zuSqfbU$NX%K21<3wAU1^;tKvo*$Wye=#ARnm*5+;6Dnt`@y^lPs3Sio*L2{~PeTMQ z+drP4N%1vx%w)sCx4F^`R7Ux`4iP^IwzD0Pb@@8jxzJZg>KDNc)z(Y`-B=q zMQqXagaVJnU{7){i8cjtcI*V4;7ec-jYI0=oo2PXL!RKXy6|92ZXfprtp>isnEI~R z-wM32$l|_Ka^o60VtH6)#dTKG^lQ9y9U($soi}PKP)zQNsQ917e+Z>t%5hP8F2%_+ z%Sqzp7NyXH1d1BQXAXZ<|KJ`kX9(3h4Y*vOg%=demR0CRjjua>a9nS=T36deQ>l2sB#zRKTfHe^mM7i#ARo^fy;WL=Gr3po-YjfZi*H$&8YqMK8?y=Rgez z0~>nJzwiy|kC|DWJEah*WKZZlq)YmPX3z}cR&vldqmX{bBaD>Tdzrrwb;7sFgX_qT z901Ke<%@5y1EB2?5Z8*x#qL9k44S#KC2A%O^r_D-71R+VhocNo5+H4(|1&a)L6=wQ zA?D*w?-7o4)4>WxCp-{T^#j%ns$9neIqbS48aPK@g9Jf_w1^d#5D*>USKgWq=j;#a zh{NpzggK#c^6URB%jZI4_v*1?cVI(OMzTgaCS)5#9Rr1vh3eaoCE=6-#y~X)WaNKf z$3TEY)Zf{9B1i>W%+Hy6PLQl;ta+uuM$u~uoh_Ev9_TW)4tw_M(q_;WwIfvO$0$}1 zDrH17mbex9BS?`XM6?(6KvnSqCQTub83c(Y53;TUNZe}L5Ls~25vw`FLiUs~rH=f^ zY}5ps$I6&nSM1(kX2-)7YdV@w2(Fkr+L_r`k;4}LrSB(fKN{l?--+^kFTA>BHJmd^ zeoStJLL{>QWq~A(1Moj${{Wf&k%m;~{wk@z``ebLl`7_E{9Y2o6|vr;Ly}aP+)MM# zAwxIUG;-!m@Ojs{FswA8%%vEsPqy}R)QQpwpJueRN~R3`-NoL|_QDL+)WjIquf=3$ zu=h5>NK!yu*ex1GbDriYpIWx374-ECz>1W+WshhYEz+T1&U47|TCru( zBWXC~QSB)?z#}<4S5Z9|`{6%wQmlfV$7Ew}zEj@1`hHYc2Ag&P8bI-}M#@K8)$EGR z`-sCoRy61@WrAMaj=v=h^*AGczh<9Wu*?6t-v)OeSn~Z(9IYSi;c~HV#&33olX<^l z^|Vuf*>H%JD2S8$aiRfTKG|48eZV58yV+exyj6KmoK#>aAa8os zIjJDCT|4|x=JXMLjA3jyYW?MYR>GvTVu*g9i)o=deqm~<2^Kw>(zD9o&YC>5Ebn&w zc3(?2M{oU|xxs}&oQ9bV!@_=o<5Wt_;3ulG(Me@_ig`<)>Mq+$4T2&)%N^Q$8-rG7 ze2V*Wn+4JZNDrf_@#*J44GOxme{3_wv2apXRT-0~^f!q3&&3H-s%PFe1qJtJcw%sj zWaGY8nxb@mgsmzf67iz!E7_8JpG*-l4xQ(0D{CB;AmdpQy<_W zRe7+OavDOMQd8}n;HEvKx8wYB7gy|o^>cv|o6HPI)Qq0xqH5374g*h&Q=8&1`HdO{ z+f27yCG`GRgpD9G{}Mh}S&T6iAD3*1bVKK22#!P}%MflOpxb@4h$HG)H&9qZgQAK% zuD(zm?N!Xb5WRs26MvJiLetnurnoCYwWOhr*c_jVBSAzXL{(n9^~oumVv7JH5ZP7o zIplc8@5MZ9q(;b9&kkZvLw%$78UWS1LJ3(g~Uhr3Sm~i zTDS5TH}n{<+m*~#ai?zIg+;g;sI&{#Bb755u8`&^*uxa9S$sLT>R4gsy)DU^+`0M6 zg7^zA)zl0gR^zARDrWUo>IccnB1O0n!j6722G7N`2eUx3`EkuuHua(@s|NBhP4W#5 z+PYQuR0_?eo<~3d1SDy=xJwL0<8~{fY_FhVRX0ytuDT7K0w0^<`xv2gUKfARZYlO_xiq%ok%eM;)dkZfi)YEX{wl7x-$|>QI__HL|0Q>n`_{1Q+vu*- z-?}JQ8s?%2pUv=M?gG^O&@WiggWUJ_*F|^V7ddU-#r;c33>X1JHx~jaj)(ZspBA+y z-bTW(n_Vi(Eru9+YPm{#si`@0n)4i7^7|e&nqOz8--uv@#4gdJ-4<1Jzk1MS_L}Qs zRv#7xo&MdEq6jy=S`WV}a?`ilBRS-4mnGaQRo(n_^~$sPPG=RiIA|e%V=e2r=KYJq;;>c))l$@s(TqDXJ`XL4R+M z$K+l&&hyo%<|{SKXp_fr5^`ykOMISo>8Z*K64C1kiH%Lnsptb96`~J8dFHuIlLA#2 zqtMXzv6xgL52jjSA#7{8ijZHB7OuxJwsl)x3(Z2^==R>bDu=k4Ehy z=)tBKku(-F*XT@DLc(5Utx-$vZ9%I7)@g8FhLnCk#9Cx9{0$SAoJpn;1?TGVuu6WF z0}WsoyV9&9s;WHoNwTLnxn%N~3;YzB?kvC-tTM5Qp8ZKTWq2P~Ffc#8mBy!fIaZZ33~Q z&52+T$}Hb`xJAiJoD}gC_YDmSb0*gDXT~y#N^0beb$J8M!?soFjqDug6~bmti$?YW zPEJbhW!?wZC+xn4X*?V~`&JejOX*HLn<<);9aLzMe4!>hOmmoPfWHv+{oJCQ zZN-kU>digDcu_vW|Dy55OT|>y+T9&JXa(EQ65cQksg_sPdaY9TFpuwjTI}-hS*wQR zv*z|XT$!jL^0`I)sd^ix5h5YEEOQrXZ57@8HTk>qa$k|Yy!%5bHL62$?Ssr*hfPjz zR`6r3T`9zu6l;Pb_B2qb>q%Kxo!mzQ*H$O|1)(M7f)=fRP7-~}s)ka(ef~4y)V%j^ zRex8*ypwE!)2&ZKK{7IK-2+NJpJ|;e~iPhTN?Z5tYC`zEPl;#~$;qX9k_-UF&^k4W1 zM0IqiU)9}KMKsp*=|7O1^vD>+IC3+kJ-g5udIbsSVf+74JAgIx8(y4L{gck%5R=eX zO&;Riy=-jgQ~$&g&TZMh2iHU7Lh*#z?|c_S@_Kk6aiAt(F!=T4xh~B)&uHcaY-@q! zG-hryF090RU4nZKU|cSa)yuHflAzqeuL6rmVV`yXwm(H^B>5Cp*)F zPj69u+gO`%t`?>rY?oJMp|5D}k59xJH zFsLm9J=E2cMv}5v0z}hXwD2UjRi3c+YJnYQ$~;%OHLfqq$6TkxzZ-_`pgL&SFAlFhugJ099OY z!n)2P!ITXtT^)6)rJ1x?h@lAz%TNT#)I_VG+KLHL{?PkDMe6_sO&pgr&)?uv(+O9q zQsaZlIz`(ci&xbr#gBD zM!{g3Tn`{&tAafZ@Vq?g)Eoxkk($AcPKP?82aMkXt+Q5a?;eS_8^0EZ`JmTwqJYFp zOwUKi=<~@G{*Gbut?b;GI2*gDE!8fnL%%1tqc*;xBhus$OpaPEymbhz{2pSv&>l-& zlOMPqJs1mw!5jds;!S$cN*>y;CsaW?&Po2ghGB&ssNokoqR4(Dg`RF=ArFrvd-9bL z@5ZZ}X07DA{FQp~c}knh{SbXjtN*d+@BFh=ZBG`{`1-(-?sN!PaN!^-nZm~ignRVU zYvGV;tw~M0)h|@ohJIC=f1PJ)>|<|)#nZPfaVNq1*nXAiQuP=!MrLSP<>|7Cx6({t)= zC%^v)gc%SE_?vDX&M)WoatzY;xVviuDTjajroz5{%$mUYNoeGGLb;9047fo^9B<=i zxz=Ai4BNKx`#v|dVN5-j)W!%;1gW)9ag}&KA;u2einPt@7*qt*A(LTRMWLl&> z_*SV2Q!?gD`!aM^0IM|4E()887(98;-IAVHU^WQHKsGv>x!y_#{T#IO3FNG6hYAK? z@KSZ0BfJqYu-2T=-r74I^f?ANX&omWf4<93!>vTsj~lRWq;}gap@GB)rWw0Q)HYHd z5?>zK-~Kv~<7RBZbt6*H=Z2d-(N}-XD2?B0cijzG`^=yeK8lpo8<>S1F&x#H2wbt< zHTp3mQ<*<|`_u1oR_r@c^AaP1v5&K5#lGRu^jq7m!M=so(E=82YlQLrZFB)!Dw*3b zA10X$s zi5p1*$IpTt3sYDdcw?ZHY=>4hH&42+m*HXdY!|2vaG?YS?ehb#X|>Zhu;jsTgq`6LLZa4zh*fFOKVw z%#INv?x~_?-13h|s9Mv*tFIPzqIP&|<3YGmsz7_6RJ+U- zU&USoXO0IM%CLS*NcPy9xhRc9CK68Q$AOW(fc2>XoKvZDO^^kIXk!ggD$XD6yJ(X4 z=zz5ky01+HDQRjde$Xs!6`OiUe5zvZ)5#;HAu?-djqX13-YmAfQ6lv-H&%6VUy3_c zVx^Dp{d)U!63sc{Kvoli1q#~=6f&5P%*aK=r`h{jggG75YfptftyZ^8?1Bz?-8eFY z(Z`Oo;BX~Q27LZ9F zwRx*vxgX{ru3#qOp#C*?#XjYa+C|@O4@z=x)K*&TU^?-w_mQ`F2P*diiv#RAP}#M^&RrOKZWrWERBh4(Lcw`c}oH6@%D>!Z7q z9ahC->3!o1vf>2yoGyF?^wG^&(Lyqg6!4L@uP!O$8jO=3zCNXwLNzZZ{EcF{JEU>( zFQfS9|6I+E*6OjkN^9@#a#PI%cb+|+h_>{)ScJM&POQSF* z4vmkl0%t7|V_O3uX4AKrV-(!lSq`Z^nJEiKxp)-U+o#$o)H)GhH(4k+9Y|gdvkOe415som!4cOD`#~ z=5>H4t^$|3kZPY3K2XKh%Z8p6=Qb4V{;7kgRlmA;V&EUjZ0@ydN34GR4s(7*`;zoN z2hGrj(x1K4gVvm&k^5~nLh$xOn86^RY{{|C!oGab1Ox86qD1)Q?@#NMNs!n8=!Gnr z-Tz9sC{%UeGD|P;rdc*f(qiu=Y5qP>v7+Z_;=G9ESaXo0vh!db(Zi2~G3@Wc_6ZD=57C4BAi_9sGJy4Z` z1GbA@qzJtXWoK*eLjq*LaXc~ehsY86M9U%zG6V8ZFhmiOq;_Ot>h&EsOccRHih~#f zW$Q+gGfC!_w;BtN`6ZzrC3l`p z@R`wYsi2n8sqwH$@cc9jHJQs$ez@Z@6#AH6xf@u5O}G}!3`eAGRiMTDN5gO4bOPuB zP%y@zqDDuL8NmatIAuCJG;?HkfsWP5sLT14TAFOExE>K0o*Ck%(dm%KT7K6}J|}-C z@zYAcVnjkpDp2mX(Ip(2yg$!8F!&b-0D$ZNf5uYNZ@(TPv*5>l;r)n3gaeo@%lBdg zG)nsURb6GB3ES_PW5xUlc7U1|&p9g3EBHO3Fa1ST{e;x{b0S3T*=P;?V`=`ik zm58?^`E!`O*{vxfqzN7@MeyPE&{As5HLb%GTpJdcaVqFytaFE8_Yi_b;ejbwod}%- zTB8Drh>s#trP(;45w$2G=hBrleB+qqwuEO#8Q5X<2Mag#o1%-vu$Pgy^5?4%!RJ!f z*Ss(=5fNHnI|}AK9QJO0sEW~7$&r$-fdFH?>@Vsrabcpo9+UybF3m2hMYgWtl&wx7 zp%VKcX#K{DuVOTZJ#1&NWbixYRA#P~+?+^qEVZK`abZWJ1iQIX>b(!6a+_;6@vHJXsDTNk(t4|NpbioECB1VYT*S7?S+OXB;If1SIffzI^^D@O<$ zjZ%jQ!f>n4(!BeIgCsbbU!es3YNRN;$FKL3il41>PE zC2Tf~CnkWcpMEVEQDI&dk6xNF-_K|KV`{WSGqyf^U%#}Oob0}2rXK~=&S{9Q$CKWH@ljO)T#Wv?sv7rG49DIO(_S!$Gycb7Rqn5TjYQwo@CZp)jM-+J?gt zC3%(eFJke6f7&F`j)cTW+<4=NW@(uKa|AWSGRb*~^}ZojUWWY| zgF&02{lnYOg>YcUR8uJOd=jd4kVoiJHzhsixzfhAb$Ck1Dyzb0yiat~9KFl$sgY6{t=r^BjWt=z^!#c%vei8}q$|ol;^=t% z68AcwSY|j#XcAUGnEfkyev?saXe@lG# zY9={J#0O$-+s58I&E-FeAuzE0i-G}%LDS0-v)x6eKDaaM>Q`kQb_0Wdlh|`c^|+~?7e|9^UaQp7@+0(rXJu0B<_w#UM zfFqBmWR9oof`k(LPszdk&v-L3qN@&_TAtnlm<`EIemfSl{JeOjkEPt-iSvM}oA{1- zyEJ#ct-9VvZnReQ)eA>)>wZ!FsY^mm@VYvbymJ|md^s!CBtwaar79bbx#q|=;i#IX z-fzp$unsi!))yoT1^vX8n$Qj%RAoPBpr=>RroDbOa(C#}YEx|#d3Sw=U5v;w&3*oM zo}O9*nOXp4ME})zmOl5hz{*n8Q@Tz76?Vp?A(!`6aVo<%-6+tFQx+mwAXfG`UNk|} z3!-6Bc$nF_ePOd9Bx*4e^G)ZIK~waDs&?8CC$T^lt-K}75|1>H9yzX;iLBw+Tp!1y zDG(hoUdI$QRmqcN#r3z+xS_;`p9?QCkT1o^SG5O{=v(>UXdv z=vPfgJUt)P#2ztpKu&1ty;ZTo9Zz+EX`huuojVY8&{hMI7T2IXf`6?aMmaHV8#_Bwapi$%zI>;Ws3clR*1<6d=gCjC zb%*>f-8hl(aPBzSpXWrW<~OQAiDK@YXCJadqwS5R3z=?RpNh?lNiGncbMxfhg%)vO z*Ph<@yX5kc-)=4DaL7IIx7b%iQ}?CUf^qG{XhO0`cW;U)P_Ksbh1#PbQ$KB?eNhcb z@mOMgdC&!_df)8@kS8tG$RsvpTImyot!fb|0~e0J8>boA*2OhlWlv7uPvl51WLGIu zcveXjsB=o~eFOXEORD{XPli9{R<7OPWJ~BHsx>!VunufYwjp2y1oi9Q-1vX;b)WVs zCM{Ge7w9r^_WupoW#wo)Wq#n>MGqMrv>%rda4e2LDRsk{2n&`vqk*V4+5Vpg;6HCR}!82>G;i z)%Ak9-?f6EX<<~$kn!(VLQaKshdsjF+;YXack}y<({k|lT!R@AH`OOX%Ne%<`+kpQ zV!St1oV6N57L%QKJZybk@?a}r#PlTKo8OOCqs`PxPmO5B5&hU=zGsTsB z3O|HjTPBqzN2!a@4^A9swG{9jwncH|O!2kE)-2WW9`+tAy)c*l(bs1Z|deF+l&^7mw z1rFmum_n|@%TR+q9b*yghgSSA0r3U=K^ZbQxVJrLU-jBX7Im)EWbx`fIdlD*I#63} zar}#Zqx?s6Gj|2}F9QG|HWA|A%@p|W3Isw&P znx?sobRYn23=fc4J}!UHdM!H30%MDoxp)p_A^ug_6ZeFHx}`Jb4d-w?k~*B)YM+-T zVESL1&ai_p^u_if9;=xK#(0`7zO0?WaDqcn;ecsrGMwo5WAyCyJAhCa@^k}vyC?o`!`0~dMfdF*aA#9q2nNu`NUV=f9{dtdzF56RVKox{ zlYNamC>q!2Y`bzJ^PbCf47~|{g3r`5O`t@$Qju!j?;oq4;w!Y7xgy3>I(_w}TKBX% z?pxp`**__ht_*;?BYcw=LeI%+~!?A5n=Z5^p`wc5hyneItCn86aLzTEK zTXn_TmkvC@MhNs0;2Y(aV3epnOL{92ztM>r9;xW+`-{IfrIpUF&AOFuXIPy9zgEXl`< zlRph=?Ki$#KE$2xR8Sne*_`tqRzg?_ldwPl?9dop=PCvKlu_)^&z^5@0@ou9(Zjnd z{Dr=c!sbJr3lob2mO&x~rc>rLlR2bW9@z(?4}_uu&t|Y3&LestoO*ew09MQjlu$iwtS0z) z>%DGlBJ%&ndPIp3Pz3}x3@p&qF(3w5C;0OKcffljSUTu^uW-%(lw_Kymb)RMAiDDp z%|6BAbBJ98wSFVxUCTTSM*p1+3~itos#DF4LpB+V16!C{91{uAM`qii_l zzJR5SZvPapx%ohL=g!ScwA!>pRZMK;TY8dq3c)F0jE6Qii# zJDsTtexkzzcVT*EQd@vqUBAl|`IkUeBOGJh`81@f206YYLwHm6{NLNWvfM&A@MIC$ zAUZ{2J&NVW3UpPN@#;j;V9?q(^_vb#&JI}eS-NuxRaf3(pY$1P@jNAF`mmSKwV4R7~U&T)vQu6SB#>4?J4ff-{-ea4JlD z#Zv7F3`hTK zW}_!HD%-}ZnDmxVffd5fRn?zL!!E(qUx;E8u`|-XbY3(Z^_Y#%0ZLkwKhxp)Fd<|J zZBDq)G#c^2@Nz#dzILwOq7n*-w@MW!((4hF5*wj~dqZk|n)Neq>-_N+H%@J6v%4?{|#}i>q>KCc>30~X8)01>@ioR&JcukbFZbxvxc(BQ5q5>3j zCB>%4=Yhqn6cn+46KxyzTt}&9z}P_(B*mmu+)I_`;dXc9_$v!->_%Y#%1WN$I9P3M zDXoVJrp4NE>3|`JRz*WjqXur7d7re5onggM0jZalN+!|gFxZy#d><5ZmIXDn>{3G zK8afaQf8n$O&W7_TfVc~(O0fx;`Y}g2gi!~m_!>C*k)wAjk9V!?a>-I98bfMW3%zy z{ghDj9N)c0-!WTMovnuH&Q-95LpErR6wh!7;M+bO(VMoIoH8bSY8JEF(6w@!=p0eX zWDMxuN}ZGu%;=B391A4h)r1AF=`Guq372m+>V#v-1q^50wo__GwWN8zv>2fLASPws z&^3lbZ?pR^M5Qtv8!nsF{ue{Em)hp~b)_XlMQW|XFKrXqLA%H)cTC3WM(u@WR(U30 zJ)D_otN$FVZrCQt=_bi}x^-T+dLGAW5PltbI(Ch-gAJ^^WVJ;qcw`Q0zqhvE-Do(D z=XB(sOR&@Re2{iaQKT$9#Hya5GdC=VoE8x#c=YZzyswL^x2vVFJXF3nXlp@1b3Ueo z_~o5D7T=&cbpo@gE$sP~_@CLb;9DpfNfWQ6|2tag7b(C3KBpRVX;^&~I@{A=k zvS!nL?k{)GJVxTobYf2dnKjG^U7}PkjYHUf#Zd-!`tJH&pAt-#ccPyEkiW@DPT6Ed zGBQ~4t2y#p#xU+)RWDENaN6bI!d@XS;zFhe1miI2`w`TID=gYsz_3Y_DtR>&{SdSl z!=yST;D*%KsvtTg%0fHBDJ|J&aNNc_fchtN%t+NqLw-LINK7VfwMYd;kJ$^J`>ib7 zv5QQd@?W;pT_e$O8S8{mKBING6Tt6nkft2S#Rh(bcOe3TmB?Js^1o^0(By3^)U z{>ShlTMR3*PI5`TKaB!{6kXCcGyViqwFWOE^OyR%jAI>MB#Z44u{2EX1RIvOUj^jR z(X{>FHc}Ms6G=9iNcDU2_1!qbvY}<^!nhAqE?9|I(qI3qT|VEXWTKoz*sukRnCc`o z@n|{Y?xhR{qB5cPO&#AtF}d%L*zO@;2{Q%7jW{2D$8lfBii$noyZQd6RhP<1I6S~r zE*ReAe^ZG?8gVPHId!QteUD6@uK1BHNhl$akxDgu{m2z%TS{L+2@MuZAXGSB00}28 z`ur=-ZF)Ak1+bJ0$;}9H-V{Isp*{lGAh)ISa+Py9B@Z}4DGj94g}u&~%zaG@)<0Po z`68%*ie0w|VygiYdm}-#J*ZhyL%b7Iwo!=QSm$}71^qs~oF@M2SYDs$ct^R1xp}Y+ zZ3X28rW`W-z4dVrr5@Chkx6|VxJJhyh3}jd-xbF}iSjgckU86~5vZDey+JKOCNjc> znLs8oWOQ==I{6-=#8})-LEPu|F0MPrIm$j!LQH&I1En9Xc%fa6*0P1@x33#EoPG3# z`J_r9q(07vM`2(y)u(O5okSfQ0<7AkbZkhIaqQ0J%=rRE?9B!=la?*=9=jqXog)m)SN^jw(2?ibEHJ=*!-$_(;gw4 zNbB%ZY4s;DxPJ)LV~8;G-or|1z*PQ1S3oNPk7UdMuGE$WqnC$k!3RHyG<{h*sNO<4 zQNecVWR>m;4)x1u?1~rRFLfUkW`_h)A^ZPg9*Vv&K?2^ zPGWS_KZYe&^Eg8tO^|g30zYd>t98hUg4$H|v+#j+ynD8Jqw8iqiEa!p`3vqp5H^88 zxkSkQeN^(&*8wF)NJ$!tIoj*@oo9%KbLwc3SntcOZsVXl@Sk|%5hPaTJm#-Dl@)8x zZ!-%Y8r^t3zIj*HPLcv4Y(jIC0Y0%_d2SK#EBw!val-zEr81cvo*5?sv%cLNr`B>L zUYe|KKZ_hxdDvIh5aQ<@hQ0{epJnpbE9v-$()`nH5q2@_M07c0yH>$%4)Ut1pX%DR zjR`TugQh2&6jAY;E+5sLe>?t8E+vBqIVi*DV_q2d%+p5L0K9T2A7rrshflOLAA3GFy~SfhkE)IWgPMvp>~ zL{z!{l-ZvvOo3LdJ2w<57D(Kq!3NNX_JOKq7oxI7(Z)xDx`*%ken1BFwrJADDpypKlYmf zetrZ?3KF2PK(zwB;XC#2bMCRluV9u8u1N}nYEC% zSy^WECAh3U%bv%QLLbros~Syhvww_`1V{DON^&ymVh3?0*oo?a?bJO-w@@YYu~Z_Q z0s+Ej(_%D z>7-T4_V@gxmi%qmZyizfOiD2)tK+33X*ORl7D15zWTwX)eq*=Pgc=nbzj~yqk&s_e zF2H|I~1D@3GvE|eKrLar9%s3wl`;-urGNon5OiQR~3-1!+i4BNRy>_|FyR(W}rZ~ zx|2Yg6x07tg7&nV8zbd^p0h#B;B>{WFH?L@{FR2(@c)|diQDJ^~K}bH0 zxLpw{lm17Yi4(5|DM+>N8Z|fi(p@yu7)|${Dg@p6e|q8DL}%bp0w4d_{12{s;G16$ z^v1!_k<5byQRe-7g*aoK@u}>HI<@ZzLapxMm)H7c23c>gW3N|6Fl@dIzms;h>$H1a zv{@RMoivXF=4}exmo%|ztG~4E3(>v&z`qU!Q-i{5^nprerZ!_k#2ZZts#A8I*=kT= zYEZa8cCa{_WK*_zT=y`h+i;sCIE-*YM%U`i%2Q+E5JPjf71`$*DQGkx)HKcl2jE!$ z0@ozb#L!@vSXW1xs!MD=_v%J8-OCq0RMYx_YgD!YYD6ou(IG7mIfxd(w_+5p0mLE_;nxo~ zt2VVk-I8xmrNA+3{NoNB`Wy;Ygy0%xffXNtJ|sYn4Z9>Lb)v^fmufGl6IK@Lq5Swk zwzKGwvU+dDXy{uejBd^EnwQ`9G^awKunYk!Z^7+$>b9;gv3L-CGY*q+Sq%otX;12~EARoeIBt!! z177P55rQ_5#jeCONoKF;ZOT!{oL<`-TYL<28UpeJ}5 z_bH)dI6@urn)gt9@>3kt7g#Hj2g3x!j#KY+b4@U%dLc_qgfzqV5z$ivx1Brj$^TW$ zb%wLSy>G2uy8{hDQM?pw6={rCV^ph zgdlc}MucB_{lES{{J#9|59fS3&$-TZp6i_FzMt#56P~XQ++rBgJg-M;tl4DgGoW7> z`fW$x4P(!IMKUi(bf@TzI(n33a~)T9FN4gLG7Z*q?hI_5y4s7p#+K3BtP_@a_( z`OC59T{a9u&``nB`zMZg{qh>#YZQIPiFXfJK>zT(`^GM5si3f*XLnBK{p|BoDU)`W zaab?1^ZvLz{T$4BEnof5=(@lrFDMFr2lWcu*vl__9gHCV;QoA zLUmXBiI0D!Hq*c)gITSs3Nq9Db1)^~+MN@-Df23R&I>jcsFdRm zxWznAf=8*m?e7_pI_^oijAt!wOZ&PdEs`ev;ruvM55^4QXT7$~BUGoAL{0F?Rvr5B z6(*zt`zn7VpS7$#AF4Zlk7uqz{6N-k47$4T^$Re#kvkwAfQ-U&Ya&NQ>a6GOBf{m7 zac<-aHcp|f@?R=(O90PjMZ=;N6MUGG*v|Jl_9=|9;)H;qWaJfb&JTQ1>%(Xb4<2c^ z^q@$%GRilK{n542fOH}1^#pkOrR^d{=c!Iin*2!5j4d`t1KYiuE@g7@eCzK(%2qO@B+XrpE*COG$It2(0$;)c=4gE;+9X_XCx^OuB zLv<=6PI$`mBhc+b__$Z;#b|EwmGikGblQKIj={OQJ8h8#XT&(E%;+b2Itv)xm(ER> z00Gwrrm5ccsriO;R+e(sAKO);UBkS67NXV<>0f7)?&?>j`Slk zmcDXmTe~cM0Be4g{Y(dW?LsGpqr)y-Xi7U`v3=h=*g;f#K@HsE6ayzJHf2d%4mtxy zcUI!dw&OKM7II`#n*v7{RX!aVeD85$n{H4dn~HBJH?2&R=bPG9y-7LoZa(j+T^(Gx zIOjaOSpA*yb)@lM75zOua|b;>l#)mN&rrtr5~OsSnR9{^Yb_xO+N&`FhZ|m2kb9Bt zoa3?Pd$=NjYcG$kA2MC~lxp8VhK@gfP{VWK`}VUK!2rH)b&FyOu3$HA{}&_btKtJk zYaO7B_Y*BN!fXS8d5rx84|*cOItcgLBauF&()xje)iL`95blkug&vz0AUh zk)sYoX)*g6Ow6O;&f`cz{p6+J2q&7BN^uZqHI8&t#Ecr&v% z0#gc5HLwe=+x7IGEG;LIYUJC}S{RXgqtX+S__o}n`SY?rgel6CBhzS6pg0Gz9x&q( zFtc}*hV-Qh8n3{#1Gj$CW(r%J(kcRRua^df*TC09aB_hpD_X?Lt7Qt!bX;?$Npt8s z11Z1rvKbpBfq5Ya@~Y*X--h!i1BQ4Uy6wf9ZxT=u^Vja{Xu&hL)7d14If0~)T$>P9 zuVsC;cyMHd+;+e}g8#%He!zNPda+l##h?mYXs`tAR=gafL0IMX?(3C28?f=Cd{z<1 zbCYL}zYynewK;9|eRYNC;lGL|OlwBJH^y{H^9^v#lZ+xEKEm&|h^IcXBY@~QFS7lk z^&uIvs;DS=Fc$DYkCZWiobK{T3(bG6uz`ft4X{Br;nLOt(_ic+O&*=lt#68q^gIHz zBP2<8uzRsc|~F=LXc(o|;4}u{f-HJKe2C zZOb>{Tz@?`ETV853$4$h$ZQ7Xeiy6ai~Q=|x}!_Dv7o)IWnYO6c!ZB z7H=NiVazE!4Qm#-n&Z<6R*7+QjJ@!q?@At{vGfQ;~$z&5*_mn2b2un z`P>b9d|AC}4SAi$pY3@Q@bUL378E4mt>Qw~31GEh@bwZnTT560Pl_L|FdX8SXT8=mEj9J`)!&a@iA@HF~zEiCkz%abYQU?I-dZv>qhrISyH~Bj*q9-?}|Bqh#_ZoV$c)b*TRxqwP6}8mcw4L=q z6F^tPG&NsFIM5U=CDDzQTuy)?uJlU$zI#lRP50o6?`^?VEo-rffr9f|Qi%O9Ftc(D zB!go8emxx!gdZV_t!xZ=noe_@{OoUa#~B91$>l3U?ZEjMmg*wC!L){)Mn}@8*q4 zB)JHcJUp5D#Vt8mwf9h?tc)dF&kfJFY$re-MBy!#e$+I%ElmE1H&nj208Hnu<*8xn ziz1JGUfdQ+m`iX)Awq0|HMbtBWo%d~Z+djc-rTp592kR0iSNd)p`>>euCs)z8@DK{ zqtc{$PYWE!)D~a#2C9TdwaK0Q+nj)4PMvMrJ2v9+gJBj%^3UbkcBertCTBl*86a(K zab+Kg&7#UDUbIb)poaK358I+lfaiJ@^gzR~PLYdG^ySM`%#|AM{+xBU!-{1c-D)k4 zoc5ve@f@7H9G}=?w#UWYCRzW19_*8tDM%%P_>=ktv|z<4+kmNFIYJf=dajav53o>W znis_n$ciUNN(T?j`K9jt9lwv&>KkUl?(I=B&y%c#C_SuCbDgNM4T2s?uEtVXo#7W& zDA+lf{`5w9*Q_`K$xM^6KSTA__OF|5>%sk{??!y!n-Z;u_IiDpS0!G{kp_%+=Lc*E7mXEUCD9B(v^5&2oLS8#c(|FcHuWGHeY( zY+!av6^WUDJm%;`Zu4^DZGh;?$?v?k_y2Tx>B7dJk&E}g;*x(<13LbnHt_$&`9r + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/_static/canaille-head.png b/doc/_static/canaille-head.png new file mode 100644 index 0000000000000000000000000000000000000000..e869f9fbd24eb926d3bd61f77ffb3e8613a7dd41 GIT binary patch literal 7764 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 a$o~O%5jvbsb}IV-0000* literal 0 HcmV?d00001 diff --git a/doc/_static/canaille-head.svg b/doc/_static/canaille-head.svg new file mode 100644 index 00000000..55ec9bfc --- /dev/null +++ b/doc/_static/canaille-head.svg @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/_static/canaille-label.png b/doc/_static/canaille-label.png new file mode 100644 index 0000000000000000000000000000000000000000..befb387b539925654dbcbae732a21386e0dfb669 GIT binary patch literal 8749 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 X$6dI&=7ocG00000NkvXXu0mjfT?J|9 literal 0 HcmV?d00001 diff --git a/doc/_static/canaille-label.svg b/doc/_static/canaille-label.svg new file mode 100644 index 00000000..b0e8efc2 --- /dev/null +++ b/doc/_static/canaille-label.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/_static/consent.png b/doc/_static/consent.png new file mode 100644 index 0000000000000000000000000000000000000000..7ea5dfa3d289677a70bfb43588a282ba04b7d840 GIT binary patch literal 30341 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 x#Ju|Pr#jgb}%93HxRMk0|cl^5_{sVQzGH?I@ literal 0 HcmV?d00001 diff --git a/doc/_static/login.png b/doc/_static/login.png new file mode 100644 index 0000000000000000000000000000000000000000..52c8005cf7360c01c9771749d05fbf4ad8247488 GIT binary patch literal 19192 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 b8<_0@yj$Mykl*~*la%DuuH;_68Svi#!nuN% literal 0 HcmV?d00001 diff --git a/doc/_static/logo.png b/doc/_static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..13c4b12257ed65bb1236a2d273bf6c161b2217b1 GIT binary patch literal 7125 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

3()3*=44;M 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 Uk#$q?$P`#>%vPtb-0}Ut1L7@`_ one, based on a configuration file (generally `/etc/ldap/slapd.conf`); +- The new one, based on a configuration directory (generally `/etc/ldap/slapd.d`). + +Depending on the configuration method you use with your OpenLDAP installation, you need to chose how to add the canaille schemas: + +Old fashion: Copy the schemas in your filesystem +================================================ + +.. code-block:: console + + test -d /etc/openldap/schema && sudo cp schema/* /etc/openldap/schema + test -d /etc/ldap/schema && sudo cp schema/* /etc/ldap/schema + sudo service slapd restart + +New fashion: Use slapadd to add the schemas +=========================================== + +.. code-block:: console + + sudo slapadd -n0 -l schema/*.ldif + sudo service slapd restart + +Web interface +============= + +Then you can deploy the code either by copying the git repository or installing the pip package: + +.. code-block:: console + + pip install canaille + +Finally you have to run the website in a WSGI server: + +.. code-block:: console + + pip install gunicorn + gunicorn "canaille:create_app()" + +Recurrent jobs +############## + +You might want to clean up your database to avoid it growing too much. You can regularly delete +expired tokens and authorization codes with: + +.. code-block:: console + + env CONFIG=/path/to/config.toml FASK_APP=canaille flask clean diff --git a/setup.cfg b/setup.cfg index b2b38dba..e6cd999e 100644 --- a/setup.cfg +++ b/setup.cfg @@ -45,6 +45,7 @@ envlist = py37 py38 py39 + doc coverage skipsdist=True @@ -58,6 +59,15 @@ deps = pdbpp pytest +[testenv:doc] +deps = + --editable . + sphinx + sphinx-rtd-theme + sphinx-issues +commands = + sphinx-build doc build/sphinx/html + [testenv:coverage] skip_install = true deps =