From 6c6957d727b05e93cb27b92dd6d4482226cae5f9 Mon Sep 17 00:00:00 2001 From: yomguy Date: Sat, 14 Jul 2012 00:47:43 +0200 Subject: [PATCH] update new conf : TC-202-HD Stereo --- tcserver/conf/etc/stream-m/server.conf | 243 +++++++++++-- .../etc/telecaster/deefuzzer_audio_safe.xml | 4 +- .../conf/etc/telecaster/deefuzzer_webm.xml | 112 ++++++ .../conf/etc/telecaster/edcast_jack_local.cfg | 8 +- .../conf/etc/telecaster/eq_comp_limit_02.rack | Bin 466 -> 464 bytes .../etc/telecaster/eq_comp_limit_02_old.rack | Bin 0 -> 466 bytes tcserver/conf/etc/telecaster/telecaster.xml | 2 +- .../telecaster/telecaster_parisson_mp3.xml | 333 ++++++++++++++++++ 8 files changed, 673 insertions(+), 29 deletions(-) create mode 100644 tcserver/conf/etc/telecaster/deefuzzer_webm.xml create mode 100644 tcserver/conf/etc/telecaster/eq_comp_limit_02_old.rack create mode 100644 tcserver/conf/etc/telecaster/telecaster_parisson_mp3.xml diff --git a/tcserver/conf/etc/stream-m/server.conf b/tcserver/conf/etc/stream-m/server.conf index 94bdbce..fa940e9 100644 --- a/tcserver/conf/etc/stream-m/server.conf +++ b/tcserver/conf/etc/stream-m/server.conf @@ -1,22 +1,221 @@ -# -# Sample configuration file -# Empty lines and lines starting with # and ; are ignored. -# Format: = -# Syntactic elements (words) can be separated by linear whitepace. -# - -# server.port -# listening port -server.port = 8080 - -# stream. -# if defined then a stream can be started with this name -streams.safe = true - -# stream..password -# determines the password to accept the stream -streams.safe.password = source2parisson - -# stream..limit -# maximum number of clients for this stream -streams.safe.limit = 10 + +# server.bindAddress +# example: 127.0.0.1, 192.168.1.1 +# localhost. www.example.com also work +#server.bindAddress = 192.168.0.12 + +# server.port +# listening port +server.port=8080 + +streams.safe=true +streams.safe.password=source2parisson +streams.safe.limit=100 + +streams.crfpa-methodologie-aux-epreuves-juridiques-cours=true +streams.crfpa-methodologie-aux-epreuves-juridiques-cours.password=source2parisson +streams.crfpa-methodologie-aux-epreuves-juridiques-cours.limit=1000 + +streams.crfpa-methodologie-aux-epreuves-juridiques-corrections=true +streams.crfpa-methodologie-aux-epreuves-juridiques-corrections.password=source2parisson +streams.crfpa-methodologie-aux-epreuves-juridiques-corrections.limit=1000 + +streams.crfpa-methodologie-a-la-note-de-synthese-cours=true +streams.crfpa-methodologie-a-la-note-de-synthese-cours.password=source2parisson +streams.crfpa-methodologie-a-la-note-de-synthese-cours.limit=1000 + +streams.crfpa-methodologie-a-la-note-de-synthese-corrections=true +streams.crfpa-methodologie-a-la-note-de-synthese-corrections.password=source2parisson +streams.crfpa-methodologie-a-la-note-de-synthese-corrections.limit=1000 + +streams.crfpa-note-de-synthese-cours=true +streams.crfpa-note-de-synthese-cours.password=source2parisson +streams.crfpa-note-de-synthese-cours.limit=1000 + +streams.crfpa-note-de-synthese-corrections=true +streams.crfpa-note-de-synthese-corrections.password=source2parisson +streams.crfpa-note-de-synthese-corrections.limit=1000 + +streams.crfpa-droit-des-obligations-cours=true +streams.crfpa-droit-des-obligations-cours.password=source2parisson +streams.crfpa-droit-des-obligations-cours.limit=1000 + +streams.crfpa-droit-des-obligations-corrections=true +streams.crfpa-droit-des-obligations-corrections.password=source2parisson +streams.crfpa-droit-des-obligations-corrections.limit=1000 + +streams.crfpa-procedure-administrative-et-contentieuse-cours=true +streams.crfpa-procedure-administrative-et-contentieuse-cours.password=source2parisson +streams.crfpa-procedure-administrative-et-contentieuse-cours.limit=1000 + +streams.crfpa-procedure-administrative-et-contentieuse-corrections=true +streams.crfpa-procedure-administrative-et-contentieuse-corrections.password=source2parisson +streams.crfpa-procedure-administrative-et-contentieuse-corrections.limit=1000 + +streams.crfpa-procedure-civile-cours=true +streams.crfpa-procedure-civile-cours.password=source2parisson +streams.crfpa-procedure-civile-cours.limit=1000 + +streams.crfpa-procedure-civile-corrections=true +streams.crfpa-procedure-civile-corrections.password=source2parisson +streams.crfpa-procedure-civile-corrections.limit=1000 + +streams.crfpa-procedure-penale-cours=true +streams.crfpa-procedure-penale-cours.password=source2parisson +streams.crfpa-procedure-penale-cours.limit=1000 + +streams.crfpa-procedure-penale-corrections=true +streams.crfpa-procedure-penale-corrections.password=source2parisson +streams.crfpa-procedure-penale-corrections.limit=1000 + +streams.crfpa-droit-administratif-cours=true +streams.crfpa-droit-administratif-cours.password=source2parisson +streams.crfpa-droit-administratif-cours.limit=1000 + +streams.crfpa-droit-administratif-corrections=true +streams.crfpa-droit-administratif-corrections.password=source2parisson +streams.crfpa-droit-administratif-corrections.limit=1000 + +streams.crfpa-droit-commercial-des-affaires-cours=true +streams.crfpa-droit-commercial-des-affaires-cours.password=source2parisson +streams.crfpa-droit-commercial-des-affaires-cours.limit=1000 + +streams.crfpa-droit-commercial-des-affaires-corrections=true +streams.crfpa-droit-commercial-des-affaires-corrections.password=source2parisson +streams.crfpa-droit-commercial-des-affaires-corrections.limit=1000 + +streams.crfpa-droit-communautaire-et-europeen-cours=true +streams.crfpa-droit-communautaire-et-europeen-cours.password=source2parisson +streams.crfpa-droit-communautaire-et-europeen-cours.limit=1000 + +streams.crfpa-droit-communautaire-et-europeen-corrections=true +streams.crfpa-droit-communautaire-et-europeen-corrections.password=source2parisson +streams.crfpa-droit-communautaire-et-europeen-corrections.limit=1000 + +streams.crfpa-droit-de-la-famille-et-des-personnes-cours=true +streams.crfpa-droit-de-la-famille-et-des-personnes-cours.password=source2parisson +streams.crfpa-droit-de-la-famille-et-des-personnes-cours.limit=1000 + +streams.crfpa-droit-de-la-famille-et-des-personnes-corrections=true +streams.crfpa-droit-de-la-famille-et-des-personnes-corrections.password=source2parisson +streams.crfpa-droit-de-la-famille-et-des-personnes-corrections.limit=1000 + +streams.crfpa-droit-fiscal-cours=true +streams.crfpa-droit-fiscal-cours.password=source2parisson +streams.crfpa-droit-fiscal-cours.limit=1000 + +streams.crfpa-droit-fiscal-corrections=true +streams.crfpa-droit-fiscal-corrections.password=source2parisson +streams.crfpa-droit-fiscal-corrections.limit=1000 + +streams.crfpa-droit-international-prive-cours=true +streams.crfpa-droit-international-prive-cours.password=source2parisson +streams.crfpa-droit-international-prive-cours.limit=1000 + +streams.crfpa-droit-international-prive-corrections=true +streams.crfpa-droit-international-prive-corrections.password=source2parisson +streams.crfpa-droit-international-prive-corrections.limit=1000 + +streams.crfpa-droit-patrimonial-cours=true +streams.crfpa-droit-patrimonial-cours.password=source2parisson +streams.crfpa-droit-patrimonial-cours.limit=1000 + +streams.crfpa-droit-patrimonial-corrections=true +streams.crfpa-droit-patrimonial-corrections.password=source2parisson +streams.crfpa-droit-patrimonial-corrections.limit=1000 + +streams.crfpa-droit-penal-cours=true +streams.crfpa-droit-penal-cours.password=source2parisson +streams.crfpa-droit-penal-cours.limit=1000 + +streams.crfpa-droit-penal-corrections=true +streams.crfpa-droit-penal-corrections.password=source2parisson +streams.crfpa-droit-penal-corrections.limit=1000 + +streams.crfpa-droit-public-des-activites-economiques-cours=true +streams.crfpa-droit-public-des-activites-economiques-cours.password=source2parisson +streams.crfpa-droit-public-des-activites-economiques-cours.limit=1000 + +streams.crfpa-droit-public-des-activites-economiques-corrections=true +streams.crfpa-droit-public-des-activites-economiques-corrections.password=source2parisson +streams.crfpa-droit-public-des-activites-economiques-corrections.limit=1000 + +streams.crfpa-procedures-collectives-et-suretes-cours=true +streams.crfpa-procedures-collectives-et-suretes-cours.password=source2parisson +streams.crfpa-procedures-collectives-et-suretes-cours.limit=1000 + +streams.crfpa-procedures-collectives-et-suretes-corrections=true +streams.crfpa-procedures-collectives-et-suretes-corrections.password=source2parisson +streams.crfpa-procedures-collectives-et-suretes-corrections.limit=1000 + +streams.crfpa-droit-du-travail-cours=true +streams.crfpa-droit-du-travail-cours.password=source2parisson +streams.crfpa-droit-du-travail-cours.limit=1000 + +streams.crfpa-droit-du-travail-corrections=true +streams.crfpa-droit-du-travail-corrections.password=source2parisson +streams.crfpa-droit-du-travail-corrections.limit=1000 + +streams.crfpa-droit-libertes-publiques-cours=true +streams.crfpa-droit-libertes-publiques-cours.password=source2parisson +streams.crfpa-droit-libertes-publiques-cours.limit=1000 + +streams.crfpa-droit-libertes-publiques-corrections=true +streams.crfpa-droit-libertes-publiques-corrections.password=source2parisson +streams.crfpa-droit-libertes-publiques-corrections.limit=1000 + +streams.crfpa-oral-procedures-communautaires-cours=true +streams.crfpa-oral-procedures-communautaires-cours.password=source2parisson +streams.crfpa-oral-procedures-communautaires-cours.limit=1000 + +streams.crfpa-oral-procedures-communautaires-corrections=true +streams.crfpa-oral-procedures-communautaires-corrections.password=source2parisson +streams.crfpa-oral-procedures-communautaires-corrections.limit=1000 + +streams.crfpa-oral-voies-dex-cours=true +streams.crfpa-oral-voies-dex-cours.password=source2parisson +streams.crfpa-oral-voies-dex-cours.limit=1000 + +streams.crfpa-oral-voies-dex-corrections=true +streams.crfpa-oral-voies-dex-corrections.password=source2parisson +streams.crfpa-oral-voies-dex-corrections.limit=1000 + +streams.crfpa-oral-comptabilite-privee-cours=true +streams.crfpa-oral-comptabilite-privee-cours.password=source2parisson +streams.crfpa-oral-comptabilite-privee-cours.limit=1000 + +streams.crfpa-oral-comptabilite-privee-corrections=true +streams.crfpa-oral-comptabilite-privee-corrections.password=source2parisson +streams.crfpa-oral-comptabilite-privee-corrections.limit=1000 + +streams.crfpa-oral-finances-publiques-cours=true +streams.crfpa-oral-finances-publiques-cours.password=source2parisson +streams.crfpa-oral-finances-publiques-cours.limit=1000 + +streams.crfpa-oral-finances-publiques-corrections=true +streams.crfpa-oral-finances-publiques-corrections.password=source2parisson +streams.crfpa-oral-finances-publiques-corrections.limit=1000 + +streams.crfpa-conference-actualisation-septembre-cours=true +streams.crfpa-conference-actualisation-septembre-cours.password=source2parisson +streams.crfpa-conference-actualisation-septembre-cours.limit=1000 + +streams.crfpa-conference-actualisation-septembre-corrections=true +streams.crfpa-conference-actualisation-septembre-corrections.password=source2parisson +streams.crfpa-conference-actualisation-septembre-corrections.limit=1000 + +streams.crfpa-bilan-formation-cours=true +streams.crfpa-bilan-formation-cours.password=source2parisson +streams.crfpa-bilan-formation-cours.limit=1000 + +streams.crfpa-bilan-formation-corrections=true +streams.crfpa-bilan-formation-corrections.password=source2parisson +streams.crfpa-bilan-formation-corrections.limit=1000 + +streams.crfpa-x-cours=true +streams.crfpa-x-cours.password=source2parisson +streams.crfpa-x-cours.limit=1000 + +streams.crfpa-x-corrections=true +streams.crfpa-x-corrections.password=source2parisson +streams.crfpa-x-corrections.limit=1000 diff --git a/tcserver/conf/etc/telecaster/deefuzzer_audio_safe.xml b/tcserver/conf/etc/telecaster/deefuzzer_audio_safe.xml index 23c8e2e..4b5a473 100644 --- a/tcserver/conf/etc/telecaster/deefuzzer_audio_safe.xml +++ b/tcserver/conf/etc/telecaster/deefuzzer_audio_safe.xml @@ -15,10 +15,10 @@ 0 mp3 - 1 + 2 4 48000 - 64 + 96 /home/telecaster/media/mp3 diff --git a/tcserver/conf/etc/telecaster/deefuzzer_webm.xml b/tcserver/conf/etc/telecaster/deefuzzer_webm.xml new file mode 100644 index 0000000..c8a7494 --- /dev/null +++ b/tcserver/conf/etc/telecaster/deefuzzer_webm.xml @@ -0,0 +1,112 @@ + + /var/www/m3u/telecaster_webm.m3u + + + 1 + 1236 + + + http://127.0.0.1:8080/consume/safe + 1 + Parisson + + + 0 + webm + 2 + 7 + 48000 + 600 + /home/telecaster/media/webm/ + + + 4egZs1dSM37XVY8zXa016Yueku2fleXF2bx8k25V4 + 0 + 76728330-OjKgbHtn4II86Ad7pNUGEzfNAkGTW5Wvw38qUmLE + bla bla + + + angus.parisson.com + stream-m + 8080 + source2parisson + 0 + + + 0 + /home/telecaster/archives + + + 0 + 0 + /path/to/jingles + + + http://parisson.com + Oral + crfpa-droit-international-prive-cours + crfpa-droit-international-prive-cours + crfpa-droit-international-prive-cours + + + 0 + /var/www/rss + + + + + 1 + 1237 + + + http://127.0.0.1:8080/consume/safe + 1 + Parisson + + + 0 + webm + 2 + 7 + 48000 + 600 + /home/telecaster/media/webm/ + + + 4egZs1dSM37XVY8zXa016Yueku2fleXF2bx8k25V4 + 0 + 76728330-OjKgbHtn4II86Ad7pNUGEzfNAkGTW5Wvw38qUmLE + bla bla + + + 127.0.0.1 + stream-m + 8080 + source2parisson + 0 + + + 1 + /home/telecaster/archives + + + 0 + 0 + /path/to/jingles + + + http://parisson.com + Oral + crfpa-droit-international-prive-cours + crfpa-droit-international-prive-cours + crfpa-droit-international-prive-cours + + + 0 + /var/www/rss + + + + +/var/log/telecaster/deefuzzer_mp3_safe.log + diff --git a/tcserver/conf/etc/telecaster/edcast_jack_local.cfg b/tcserver/conf/etc/telecaster/edcast_jack_local.cfg index ab95db6..ae28e09 100644 --- a/tcserver/conf/etc/telecaster/edcast_jack_local.cfg +++ b/tcserver/conf/etc/telecaster/edcast_jack_local.cfg @@ -18,11 +18,11 @@ AutoConnect=1 # Output codec selection (Valid selections : MP3, OggVorbis, Ogg FLAC, AAC, AAC Plus) Encode=MP3 # General settings (non-codec related). Note : NumberChannels = 1 for MONO, 2 for STEREO -NumberChannels=1 +NumberChannels=2 Samplerate=48000 -BitrateNominal=64 +BitrateNominal=96 BitrateMin=32 -BitrateMax=96 +BitrateMax=100 # SaveDirectoryFlag=0 @@ -49,5 +49,5 @@ AACCutoff= # Log Level 1 = LOG_ERROR, 2 = LOG_ERROR+LOG_WARNING, 3 = LOG_ERROR+LOG_WARNING+LOG_DEBUG LogLevel=1 # Log File -LogFile=/var/log/telecaster/mp3_safe.log +LogFile=/tmp/telecaster_streamer_log diff --git a/tcserver/conf/etc/telecaster/eq_comp_limit_02.rack b/tcserver/conf/etc/telecaster/eq_comp_limit_02.rack index 87d5e4c391f9978efd63533adb78b4768a487227..da37e401451ed47ac991e9db2513d15f3f9963d2 100644 GIT binary patch literal 464 zcmV;>0Wba^iwFP!000001MOB#Z-PJ&z56Su=av0(VQIE_s2-a((TgWTWv$i~44}6E zzPnOCi&$w-tt2EnZ-zIMdBcEcz0H)hlu0^?qq{n`QN88Y#7+D0zSn>1Sg*lwn&{i= z_Pf2#gH<1A+58qlgEx%BPDgemGuZC6*Wkc_18h?}%)+{++A#Pv%M!zJ5Jgg@J`r$x zHjXry&6P}oO!`fZ5E5_?F#&V6c$q}zsEtYJW6ZID`j8_s3Z9h={ZXJ&Dd5J;ohz9Q z!sLB$6m$$92CH~D)nJw^_Ci0w!^mZz7BbC24X;ff1GK&b%L81NJ1xG-;<%(hmb{*;DkoII4t5z} z$a5X%L}{lYj@7A>9+h^b(0kcXa1ULF;!;&O0*rXvBgJ(UyMJRGD)r-{ao|Ne;t#Iw zg4S=|DR#bzWdxJ}%qVZVl^Glg^z(YHRAy)p1PlW!|6Y_)U;>cq5L%sq14KxZRCx>X z2V8(mC)p3?*~9c-thduLQs6O%)AA;k&JqHYGMD1Y44Qx-d}bZ)bQEy+WBLKru^7h% G3jhGF_TDD| literal 466 zcmV;@0WJO?iwFP!000001MOE$Z-PJ&z56RDXJJ{sX|{N%9-B7Nizh;1t=1I`tlIwj zE>Z<4Y_-rsQ%y{EW*+YiGsB>0@U|kt7ANT6OyXe4oHW^#pr6iDcNE9~C2U1lwN-9n4RO}3iqhrM&{9>CUzH|A7xI#>am5?rT}XdZ^52q$ zj>A`O0(2p+Gg7X26QB!m2^#!f*T=h%=HK*LcZ@)>?7r?j(^6~pUY^f&?KM3LrlweZ zsAvW>8&YdR{E4Bkow}Fdbtt%9v6Q}{=(erZ=T#r>VjO-{kBi2^{vSJ{rt%j&Qal0` zI&CRnoA+COfz;;bP<}yc0=q4N%F1BarU6?Fv;(#4K)33G)SBTef})KG6#x7_0OxN~ Ilx7Y90AlytwEzGB diff --git a/tcserver/conf/etc/telecaster/eq_comp_limit_02_old.rack b/tcserver/conf/etc/telecaster/eq_comp_limit_02_old.rack new file mode 100644 index 0000000000000000000000000000000000000000..87d5e4c391f9978efd63533adb78b4768a487227 GIT binary patch literal 466 zcmV;@0WJO?iwFP!000001MOE$Z-PJ&z56RDXJJ{sX|{N%9-B7Nizh;1t=1I`tlIwj zE>Z<4Y_-rsQ%y{EW*+YiGsB>0@U|kt7ANT6OyXe4oHW^#pr6iDcNE9~C2U1lwN-9n4RO}3iqhrM&{9>CUzH|A7xI#>am5?rT}XdZ^52q$ zj>A`O0(2p+Gg7X26QB!m2^#!f*T=h%=HK*LcZ@)>?7r?j(^6~pUY^f&?KM3LrlweZ zsAvW>8&YdR{E4Bkow}Fdbtt%9v6Q}{=(erZ=T#r>VjO-{kBi2^{vSJ{rt%j&Qal0` zI&CRnoA+COfz;;bP<}yc0=q4N%F1BarU6?Fv;(#4K)33G)SBTef})KG6#x7_0OxN~ Ilx7Y90AlytwEzGB literal 0 HcmV?d00001 diff --git a/tcserver/conf/etc/telecaster/telecaster.xml b/tcserver/conf/etc/telecaster/telecaster.xml index b6061f1..980fe6f 100644 --- a/tcserver/conf/etc/telecaster/telecaster.xml +++ b/tcserver/conf/etc/telecaster/telecaster.xml @@ -2,7 +2,7 @@ Parisson Parisson - TeleCaster Services + TeleCaster telecaster.parisson.com Various diff --git a/tcserver/conf/etc/telecaster/telecaster_parisson_mp3.xml b/tcserver/conf/etc/telecaster/telecaster_parisson_mp3.xml new file mode 100644 index 0000000..c15ccea --- /dev/null +++ b/tcserver/conf/etc/telecaster/telecaster_parisson_mp3.xml @@ -0,0 +1,333 @@ + + + Parisson + Parisson + TeleCaster Services + telecaster6.parisson.com + Various + + /var/log/telecaster/telecaster.log + + /etc/telecaster/deefuzzer.xml + + + true + /home/telecaster/media/mp3 + /home/telecaster/archives + mp3 + 64 + 1 + 4 + 44100 + + + + jack_rack:out_1 + + + + + CRFPA + + + Droit_administratif_Corrections + + + Droit_administratif_Cours + + + Droit_des_obligations_Corrections + + + Droit_des_obligations_Cours + + + Droit_commercial_des_affaires_Corrections + + + Droit_commercial_des_affaires_Cours + + + Droit_communautaire_et_europeen_Corrections + + + Droit_communautaire_et_europeen_Cours + + + Droit_de_la_famille_et_des_personnes_Corrections + + + Droit_de_la_famille_et_des_personnes_Cours + + + Droit_du_travail_Corrections + + + Droit_du_travail_Cours + + + Droit_fiscal_Corrections + + + Droit_fiscal_Cours + + + Droit_international_prive_Corrections + + + Droit_international_prive_Cours + + + Droit_patrimonial_Corrections + + + Droit_patrimonial_Cours + + + Droit_public_des_activites_economiques_Corrections + + + Droit_public_des_activites_economiques_Cours + + + Droit_penal_Corrections + + + Droit_penal_Cours + + + Droit_Libertes_publiques_Cours + + + Note_de_synthese_Corrections + + + Procedure_administrative_et_contentieuse_Corrections + + + Procedure_administrative_et_contentieuse_Cours + + + Procedure_civile_Corrections + + + Procedure_civile_Cours + + + Procedures_collectives_et_suretes_Corrections + + + Procedures_collectives_et_suretes_Cours + + + Procedure_penale_Corrections + + + Procedure_penale_Cours + + + Oral-Procedures_communautaires + + + Oral-Voies_d_ex + + + Oral-Comptabilite_privee + + + Oral-Finances_publiques + + + TEST + + + + + + + AE + + + Administratif_Cours + + + Adm_Correction + + + Civil_Correction + + + Commercial_Correctio + + + Commercial_Cours + + + Deontologie_Cours + + + Droit civil - Cours + + + Methodo_Oraux + + + Penal_Correction + + + Penal_Cours + + + Procedures_Cours + + + Reunion_info + + + Social_Corrections + + + Social_Cours + + + REUNION + + + TEST + + + + + + ENM + + + TEST + + + REUNION + + + + + + + FJP + + + Actualisation + + + TEST + + + REUNION + + + + + + MARINHO A. + + + GIUSTINIANI G. + + + BOFFA R. + + + MEUNIER J. + + + THERY C. + + + JLB + + + AZZI T. + + + ETIENNEY A. + + + MARKUS J. + + + ANDREU L. + + + ROUMIER W. + + + HAIK R. + + + POISSON S. + + + CARTIER-BRESSON A. + + + MBONGO P. + + + MATHONNET P. + + + FOULQUIER N. + + + RILOV. F + + + JEANSEN E. + + + LA J. + + + MECARELLI G. + + + COLLET M. + + + GILBERT S. + + + VIAL C. + + + PAGNERRE E. + + + PANOU C. + + + GILBERT S. + + + ROBBE S. + + + + 1ere_sem + 2e_sem + 3e_sem + 4e_sem + 5e_sem + 6e_sem + 7e_sem + 8e_sem + 9e_sem + 10e_sem + 11e_sem + 12e_sem + 13e_sem + 14e_sem + 15e_sem + 16e_sem + + + -- 2.39.5