Skip to content
Extraits de code Groupes Projets

Comparer les révisions

Les modifications sont affichées comme si la révision source était fusionnée avec la révision cible. En savoir plus sur la comparaison des révisions.

Source

Sélectionner le projet cible
No results found

Cible

Sélectionner le projet cible
  • spip/medias
  • pierre.laszczak/medias
  • cy.altern/medias
  • MathieuAlphamosa/medias
  • taffit/medias
  • RealET/medias
  • johan/medias
  • Yohooo/medias
  • pierretux/medias
  • placido/medias
  • JLuc/medias
11 résultats
Afficher les modifications
Affichage de
avec 175 ajouts et 83 suppressions
......@@ -31,9 +31,17 @@ class getid3_mod extends getid3_handler
return $this->getITheaderFilepointer();
} elseif (preg_match('#^Extended Module#', $fileheader)) {
return $this->getXMheaderFilepointer();
} elseif (preg_match('#^.{44}SCRM#', $fileheader)) {
} elseif (preg_match('#^.{44}SCRM#s', $fileheader)) {
return $this->getS3MheaderFilepointer();
} elseif (preg_match('#^.{1080}(M\\.K\\.|M!K!|FLT4|FLT8|[5-9]CHN|[1-3][0-9]CH)#', $fileheader)) {
//} elseif (preg_match('#^.{1080}(M\\.K\\.|M!K!|FLT4|FLT8|[5-9]CHN|[1-3][0-9]CH)#s', $fileheader)) {
} elseif (preg_match('#^.{1080}(M\\.K\\.)#s', $fileheader)) {
/*
The four letters "M.K." - This is something Mahoney & Kaktus inserted when they
increased the number of samples from 15 to 31. If it's not there, the module/song
uses 15 samples or the text has been removed to make the module harder to rip.
Startrekker puts "FLT4" or "FLT8" there instead.
If there are more than 64 patterns, PT2.3 will insert M!K! here.
*/
return $this->getMODheaderFilepointer();
}
$this->error('This is not a known type of MOD file');
......@@ -45,17 +53,48 @@ class getid3_mod extends getid3_handler
*/
public function getMODheaderFilepointer() {
$info = &$this->getid3->info;
$this->fseek($info['avdataoffset'] + 1080);
$FormatID = $this->fread(4);
if (!preg_match('#^(M.K.|[5-9]CHN|[1-3][0-9]CH)$#', $FormatID)) {
$this->error('This is not a known type of MOD file');
$this->fseek($info['avdataoffset']);
$filedata = $this->fread(1084);
//if (!preg_match('#^(M.K.|[5-9]CHN|[1-3][0-9]CH)$#', $FormatID)) {
if (substr($filedata, 1080, 4) == 'M.K.') {
// + 0 song/module working title
// + 20 15 sample headers (see below)
// + 470 song length (number of steps in pattern table)
// + 471 song speed in beats per minute (see below)
// + 472 pattern step table
$offset = 0;
$info['mod']['title'] = rtrim(substr($filedata, $offset, 20), "\x00"); $offset += 20;
$info['tags']['mod']['title'] = array($info['mod']['title']);
for ($samplenumber = 0; $samplenumber <= 30; $samplenumber++) {
$sampledata = array();
$sampledata['name'] = substr($filedata, $offset, 22); $offset += 22;
$sampledata['length'] = getid3_lib::BigEndian2Int(substr($filedata, $offset, 2)); $offset += 2;
$sampledata['volume'] = getid3_lib::BigEndian2Int(substr($filedata, $offset, 2)); $offset += 2;
$sampledata['repeat_offset'] = getid3_lib::BigEndian2Int(substr($filedata, $offset, 2)); $offset += 2;
$sampledata['repeat_length'] = getid3_lib::BigEndian2Int(substr($filedata, $offset, 2)); $offset += 2;
$info['mod']['samples'][$samplenumber] = $sampledata;
}
$info['mod']['song_length'] = getid3_lib::BigEndian2Int(substr($filedata, $offset++, 1));// Songlength. Range is 1-128.
$info['mod']['bpm'] = getid3_lib::BigEndian2Int(substr($filedata, $offset++, 1));// This byte is set to 127, so that old trackers will search through all patterns when loading. Noisetracker uses this byte for restart, ProTracker doesn't.
for ($songposition = 0; $songposition <= 127; $songposition++) {
// Song positions 0-127. Each hold a number from 0-63 (or 0-127)
// that tells the tracker what pattern to play at that position.
$info['mod']['song_positions'][$songposition] = getid3_lib::BigEndian2Int(substr($filedata, $offset++, 1));
}
} else {
$this->error('unknown MOD ID at offset 1080: '.getid3_lib::PrintHexBytes(substr($filedata, 1080, 4)));
return false;
}
$info['fileformat'] = 'mod';
$this->error('MOD parsing not enabled in this version of getID3() ['.$this->getid3->version().']');
return false;
$this->warning('MOD (SoundTracker) parsing incomplete in this version of getID3() ['.$this->getid3->version().']');
return true;
}
/**
......
......@@ -315,6 +315,10 @@ class getid3_mp3 extends getid3_handler
$encoder_options .= ' -b'.$thisfile_mpeg_audio_lame['bitrate_min'];
}
if (isset($thisfile_mpeg_audio['bitrate']) && $thisfile_mpeg_audio['bitrate'] === 'free') {
$encoder_options .= ' --freeformat';
}
if (!empty($thisfile_mpeg_audio_lame['encoding_flags']['nogap_prev']) || !empty($thisfile_mpeg_audio_lame['encoding_flags']['nogap_next'])) {
$encoder_options .= ' --nogap';
}
......@@ -750,7 +754,8 @@ class getid3_mp3 extends getid3_handler
unset($thisfile_mpeg_audio_lame['long_version']);
// It the LAME tag was only introduced in LAME v3.90
// http://www.hydrogenaudio.org/?act=ST&f=15&t=9933
// https://wiki.hydrogenaud.io/index.php/LAME#VBR_header_and_LAME_tag
// https://hydrogenaud.io/index.php?topic=9933
// Offsets of various bytes in http://gabriel.mp3-tech.org/mp3infotag.html
// are assuming a 'Xing' identifier offset of 0x24, which is the case for
......@@ -786,7 +791,7 @@ class getid3_mp3 extends getid3_handler
$thisfile_mpeg_audio_lame['lowpass_frequency'] = getid3_lib::BigEndian2Int(substr($headerstring, $LAMEtagOffsetContant + 0xA6, 1)) * 100;
// bytes $A7-$AE Replay Gain
// http://privatewww.essex.ac.uk/~djmrob/replaygain/rg_data_format.html
// https://web.archive.org/web/20021015212753/http://privatewww.essex.ac.uk/~djmrob/replaygain/rg_data_format.html
// bytes $A7-$AA : 32 bit floating point "Peak signal amplitude"
if ($thisfile_mpeg_audio_lame['short_version'] >= 'LAME3.94b') {
// LAME 3.94a16 and later - 9.23 fixed point
......@@ -914,7 +919,7 @@ class getid3_mp3 extends getid3_handler
// LAME CBR
if ($thisfile_mpeg_audio_lame_raw['vbr_method'] == 1) {
if ($thisfile_mpeg_audio_lame_raw['vbr_method'] == 1 && $thisfile_mpeg_audio['bitrate'] !== 'free') {
$thisfile_mpeg_audio['bitrate_mode'] = 'cbr';
$thisfile_mpeg_audio['bitrate'] = self::ClosestStandardMP3Bitrate($thisfile_mpeg_audio['bitrate']);
......@@ -1169,6 +1174,7 @@ class getid3_mp3 extends getid3_handler
$nextframetestarray = array('error' => array(), 'warning' => array(), 'avdataend' => $info['avdataend'], 'avdataoffset'=>$info['avdataoffset']);
if ($this->decodeMPEGaudioHeader($nextframetestoffset, $nextframetestarray, false)) {
/** @phpstan-ignore-next-line */
getid3_lib::safe_inc($info['mp3_validity_check_bitrates'][$nextframetestarray['mpeg']['audio']['bitrate']]);
if ($ScanAsCBR) {
// force CBR mode, used for trying to pick out invalid audio streams with valid(?) VBR headers, or VBR streams with no VBR header
......
......@@ -48,7 +48,7 @@ class getid3_mpc extends getid3_handler
// this is SV7
return $this->ParseMPCsv7();
} elseif (preg_match('/^[\x00\x01\x10\x11\x40\x41\x50\x51\x80\x81\x90\x91\xC0\xC1\xD0\xD1][\x20-37][\x00\x20\x40\x60\x80\xA0\xC0\xE0]/s', $MPCheaderData)) {
} elseif (preg_match('#^[\x00\x01\x10\x11\x40\x41\x50\x51\x80\x81\x90\x91\xC0\xC1\xD0\xD1][\x20-37][\x00\x20\x40\x60\x80\xA0\xC0\xE0]#s', $MPCheaderData)) {
// this is SV4 - SV6, handle seperately
return $this->ParseMPCsv6();
......
......@@ -186,7 +186,7 @@ class getid3_ogg extends getid3_handler
if ($info['ogg']['pageheader']['theora']['pixel_aspect_denominator'] > 0) {
$info['video']['pixel_aspect_ratio'] = (float) $info['ogg']['pageheader']['theora']['pixel_aspect_numerator'] / $info['ogg']['pageheader']['theora']['pixel_aspect_denominator'];
}
$this->warning('Ogg Theora (v3) not fully supported in this version of getID3 ['.$this->getid3->version().'] -- bitrate, playtime and all audio data are currently unavailable');
$this->warning('Ogg Theora (v3) not fully supported in this version of getID3 ['.$this->getid3->version().'] -- bitrate, playtime and all audio data are currently unavailable');
} elseif (substr($filedata, 0, 8) == "fishead\x00") {
......
......@@ -59,6 +59,7 @@ class getid3_voc extends getid3_handler
$thisfile_voc['header']['datablock_offset'] = getid3_lib::LittleEndian2Int(substr($VOCheader, 20, 2));
$thisfile_voc['header']['minor_version'] = getid3_lib::LittleEndian2Int(substr($VOCheader, 22, 1));
$thisfile_voc['header']['major_version'] = getid3_lib::LittleEndian2Int(substr($VOCheader, 23, 1));
$thisfile_voc['blocktypes'] = array();
do {
......@@ -68,6 +69,7 @@ class getid3_voc extends getid3_handler
$BlockSize = getid3_lib::LittleEndian2Int(substr($BlockData, 1, 3));
$ThisBlock = array();
/** @phpstan-ignore-next-line */
getid3_lib::safe_inc($thisfile_voc['blocktypes'][$BlockType], 1);
switch ($BlockType) {
case 0: // Terminator
......
......@@ -17,6 +17,7 @@
/**
* @link https://www.w3.org/Graphics/GIF/spec-gif89a.txt
* @link http://www.matthewflickinger.com/lab/whatsinagif/bits_and_bytes.asp
* @link http://www.vurdalakov.net/misc/gif/netscape-looping-application-extension
*/
if (!defined('GETID3_INCLUDEPATH')) { // prevent path-exposing attacks that access modules directly on public webservers
......@@ -168,14 +169,31 @@ class getid3_gif extends getid3_handler
$ExtensionBlock['byte_length'] = getid3_lib::LittleEndian2Int(substr($ExtensionBlockData, 2, 1));
$ExtensionBlock['data'] = (($ExtensionBlock['byte_length'] > 0) ? $this->fread($ExtensionBlock['byte_length']) : null);
if (substr($ExtensionBlock['data'], 0, 11) == 'NETSCAPE2.0') { // Netscape Application Block (NAB)
$ExtensionBlock['data'] .= $this->fread(4);
if (substr($ExtensionBlock['data'], 11, 2) == "\x03\x01") {
$info['gif']['animation']['animated'] = true;
$info['gif']['animation']['loop_count'] = getid3_lib::LittleEndian2Int(substr($ExtensionBlock['data'], 13, 2));
} else {
$this->warning('Expecting 03 01 at offset '.($this->ftell() - 4).', found "'.getid3_lib::PrintHexBytes(substr($ExtensionBlock['data'], 11, 2)).'"');
}
switch ($ExtensionBlock['function_code']) {
case 0xFF:
// Application Extension
if ($ExtensionBlock['byte_length'] != 11) {
$this->warning('Expected block size of the Application Extension is 11 bytes, found '.$ExtensionBlock['byte_length'].' at offset '.$this->ftell());
break;
}
if (substr($ExtensionBlock['data'], 0, 11) !== 'NETSCAPE2.0'
&& substr($ExtensionBlock['data'], 0, 11) !== 'ANIMEXTS1.0'
) {
$this->warning('Ignoring unsupported Application Extension '.substr($ExtensionBlock['data'], 0, 11));
break;
}
// Netscape Application Block (NAB)
$ExtensionBlock['data'] .= $this->fread(4);
if (substr($ExtensionBlock['data'], 11, 2) == "\x03\x01") {
$info['gif']['animation']['animated'] = true;
$info['gif']['animation']['loop_count'] = getid3_lib::LittleEndian2Int(substr($ExtensionBlock['data'], 13, 2));
} else {
$this->warning('Expecting 03 01 at offset '.($this->ftell() - 4).', found "'.getid3_lib::PrintHexBytes(substr($ExtensionBlock['data'], 11, 2)).'"');
}
break;
}
if ($this->getid3->option_extra_info) {
......
......@@ -73,7 +73,7 @@ class getid3_cue extends getid3_handler
public function readCueSheet(&$filedata)
{
$cue_lines = array();
foreach (explode("\n", str_replace("\r", null, $filedata)) as $line)
foreach (explode("\n", str_replace("\r", '', $filedata)) as $line)
{
if ( (strlen($line) > 0) && ($line[0] != '#'))
{
......
......@@ -85,7 +85,7 @@ class getid3_pdf extends getid3_handler
// "free" object means "deleted", ignore
continue;
}
if (($maxObjLengths[$objectNumber] > 0) && ($maxObjLengths[$objectNumber] < $this->getid3->option_fread_buffer_size)) {
if (!empty($maxObjLengths[$objectNumber]) && ($maxObjLengths[$objectNumber] < $this->getid3->option_fread_buffer_size)) {
// ignore object that are zero-size or >32kB, they are unlikely to contain information we're interested in
$this->fseek($offset);
$objBlob = $this->fread($maxObjLengths[$objectNumber]);
......
......@@ -2064,7 +2064,7 @@ class getid3_id3v2 extends getid3_handler
$parsedFrame['subframes'][] = $subframe;
break;
case 'WXXX':
list($subframe['chapter_url_description'], $subframe['chapter_url']) = explode("\x00", $encoding_converted_text, 2);
@list($subframe['chapter_url_description'], $subframe['chapter_url']) = explode("\x00", $encoding_converted_text, 2);
$parsedFrame['chapter_url'][$subframe['chapter_url_description']] = $subframe['chapter_url'];
$parsedFrame['subframes'][] = $subframe;
break;
......
......@@ -110,7 +110,7 @@ class getid3_write_metaflac
// On top of that, if error messages are not always captured properly under Windows
// To at least see if there was a problem, compare file modification timestamps before and after writing
clearstatcache();
clearstatcache(true, $this->filename);
$timestampbeforewriting = filemtime($this->filename);
$commandline = GETID3_HELPERAPPSDIR.'metaflac.exe --no-utf8-convert --remove-all-tags --import-tags-from='.escapeshellarg($tempcommentsfilename);
......@@ -121,7 +121,7 @@ class getid3_write_metaflac
$metaflacError = `$commandline`;
if (empty($metaflacError)) {
clearstatcache();
clearstatcache(true, $this->filename);
if ($timestampbeforewriting == filemtime($this->filename)) {
$metaflacError = 'File modification timestamp has not changed - it looks like the tags were not written';
}
......@@ -173,14 +173,14 @@ class getid3_write_metaflac
if (file_exists(GETID3_HELPERAPPSDIR.'metaflac.exe')) {
// To at least see if there was a problem, compare file modification timestamps before and after writing
clearstatcache();
clearstatcache(true, $this->filename);
$timestampbeforewriting = filemtime($this->filename);
$commandline = GETID3_HELPERAPPSDIR.'metaflac.exe --remove-all-tags "'.$this->filename.'" 2>&1';
$metaflacError = `$commandline`;
if (empty($metaflacError)) {
clearstatcache();
clearstatcache(true, $this->filename);
if ($timestampbeforewriting == filemtime($this->filename)) {
$metaflacError = 'File modification timestamp has not changed - it looks like the tags were not deleted';
}
......
......@@ -84,14 +84,14 @@ class getid3_write_vorbiscomment
// On top of that, if error messages are not always captured properly under Windows
// To at least see if there was a problem, compare file modification timestamps before and after writing
clearstatcache();
clearstatcache(true, $this->filename);
$timestampbeforewriting = filemtime($this->filename);
$commandline = GETID3_HELPERAPPSDIR.'vorbiscomment.exe -w --raw -c "'.$tempcommentsfilename.'" "'.$this->filename.'" 2>&1';
$VorbiscommentError = `$commandline`;
if (empty($VorbiscommentError)) {
clearstatcache();
clearstatcache(true, $this->filename);
if ($timestampbeforewriting == filemtime($this->filename)) {
$VorbiscommentError = 'File modification timestamp has not changed - it looks like the tags were not written';
}
......
......@@ -132,18 +132,16 @@ function medias_inigetoctets($var) {
* Code HTML de l'image de puce
*/
function medias_puce_statut_document($id_document, $statut) {
if ($statut == 'publie') {
$puce = 'puce-verte.gif';
if ($statut === 'publie') {
$puce = 'puce-publier-xx.svg';
} elseif ($statut === 'prop') {
$puce = 'puce-proposer-xx.svg';
} elseif ($statut === 'prepa') {
$puce = 'puce-preparer-xx.svg';
} elseif ($statut === 'poubelle') {
$puce = 'puce-supprimer-xx.svg';
} else {
if ($statut == 'prepa') {
$puce = 'puce-blanche.gif';
} else {
if ($statut == 'poubelle') {
$puce = 'puce-poubelle.gif';
} else {
$puce = 'puce-blanche.gif';
}
}
$puce = 'puce-preparer-xx.svg';
}
return http_img_pack($puce, $statut, "class='puce'");
......@@ -422,8 +420,8 @@ function medias_trouver_modele_emb($extension, $mime_type, $modele_base = 'file'
* @param int|null $id_document
* @return bool
*/
function media_determine_autolien(string $media, string $extension, int $largeur, int $hauteur, ?int $id_document=0): bool {
if ($media !== 'image') {
function media_determine_autolien(string $media, string $extension, ?int $largeur, ?int $hauteur, ?int $id_document=0): bool {
if ($media !== 'image' || $largeur === null || $hauteur === null) {
return false;
}
if (!defined('_IMAGE_TAILLE_MINI_AUTOLIEN')) {
......
[(#REM)
Legende pour les documents
[(#REM)
Legende pour les documents
]<BOUCLE_legendaire (DOCUMENTS) {id_document=#ENV{id,#ENV{id_document}}} {tout}>
[(#ENV*{titre,#TITRE}|trim|sinon{#ENV*{descriptif,#DESCRIPTIF}|trim}|sinon{#ENV*{credits,#CREDITS}|trim}|oui)
<figcaption class='spip_doc_legende'>
[<div class='spip_doc_titre [(#ENV{titre}|non)#EDIT{titre}]'><strong>(#ENV*{titre,#TITRE}|propre|ptobr)</strong></div>]
[<div class='spip_doc_descriptif [(#ENV{descriptif}|non)#EDIT{descriptif}]'>(#ENV*{descriptif,#DESCRIPTIF}|propre|PtoBR)[(#NOTES|PtoBR)]</div>]
[<div class='spip_doc_credits [(#ENV{credits}|non)#EDIT{credits}]'>(#ENV*{credits,#CREDITS}|propre|PtoBR)</div>]
[<div class='spip_doc_titre [(#ENV{titre}|non)#EDIT{titre}]'><strong>(#ENV*{titre,#TITRE*}|propre|ptobr)</strong></div>]
[<div class='spip_doc_descriptif [(#ENV{descriptif}|non)#EDIT{descriptif}]'>(#ENV*{descriptif,#DESCRIPTIF*}|propre|PtoBR)[(#NOTES|PtoBR)]</div>]
[<div class='spip_doc_credits [(#ENV{credits}|non)#EDIT{credits}]'>(#ENV*{credits,#CREDITS*}|propre|PtoBR)</div>]
</figcaption>
]
</BOUCLE_legendaire>
\ No newline at end of file
</BOUCLE_legendaire>
......@@ -18,19 +18,19 @@
]>
<figure class="spip_doc_inner">
][(#EXTENSION|=={swf}|oui)
<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000'
codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=#ENV{version,'6,0,0,0'}'
<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000'
codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=#ENV{version,'6,0,0,0'}'
width='#GET{largeur}' height='#GET{hauteur}'>
<param name='movie' value='#URL_DOCUMENT' />
[(#ENV{quality,''}|non)<param name="quality" value="high" />]
[(#ENV*|env_to_params)]
<!--#EVAL**{chr(91)}if !IE#EVAL**{chr(93)}> <-->
<!--\[if !IE\]> <-->
<object data="#URL_DOCUMENT" width='#GET{largeur}' height='#GET{hauteur}' type="application/x-shockwave-flash">
[(#ENV{quality,''}|non)<param name="quality" value="high" />]
[(#ENV*|env_to_params)]
<param name="pluginurl" value="http://www.macromedia.com/go/getflashplayer" />
</object>
<!--> <!#EVAL**{chr(91)}endif#EVAL**{chr(93)}-->
<!--> \[endif\]-->
</object>
#SET{done,1}
][(#GET{done,0}|non)
......
<paquet
prefix="medias"
categorie="multimedia"
version="4.1.0-dev"
etat="dev"
compatibilite="[4.1.0-dev;4.2.*]"
version="4.1.2"
etat="stable"
compatibilite="[4.2.0;4.2.*]"
logo="prive/themes/spip/images/portfolio-32.png"
schema="1.7.0"
>
......@@ -45,7 +45,7 @@
<pipeline nom="afficher_metas_document" action="" />
<pipeline nom="medias_documents_visibles" action="" />
<pipeline nom="medias_methodes_upload" action='' />
<pipeline nom="medias_methodes_upload" action='' />
<pipeline nom="renseigner_document" action="" />
<pipeline nom="ieconfig_metas" inclure="medias_ieconfig.php" />
......@@ -54,7 +54,7 @@
<procure nom="ordoc" version="1.1.2" />
<procure nom="mejs" version="4.2.7" />
<necessite nom="archiviste" compatibilite="[0.3.0;]" />
<necessite nom="archiviste" compatibilite="[2.2.0;]" />
<utilise nom="Z" compatibilite="[1.7.30;]" />
<utilise nom="mediabox" compatibilite="[1.2.0;]" />
......
......@@ -59,9 +59,9 @@
background-position: #LEFT var(--spip-tabs-spacing-x) center;
background-repeat: no-repeat;
}
.onglets_simple .medias .image > * { background-image: url(#CHEMIN_IMAGE{media-image-16.png}); }
.onglets_simple .medias .audio > * { background-image: url(#CHEMIN_IMAGE{media-audio-16.png}); }
.onglets_simple .medias .video > * { background-image: url(#CHEMIN_IMAGE{media-video-16.png}); }
.onglets_simple .medias .image > * { background-image: url("#CHEMIN_IMAGE{media-image-16.png}"); }
.onglets_simple .medias .audio > * { background-image: url("#CHEMIN_IMAGE{media-audio-16.png}"); }
.onglets_simple .medias .video > * { background-image: url("#CHEMIN_IMAGE{media-video-16.png}"); }
.choix-type, .choix-type li {display:inline;list-style:none;margin:0;padding:0;}
.choix-type {margin:1em 0;padding:0;}
......@@ -81,13 +81,13 @@ a.bouton_fermer {display:block;text-align:#GET{right};}
background-position: var(--spip-left) var(--spip-list-spacing-x) center;
}
.liste-objets.galerie.media-image .caption {
background-image: url(#CHEMIN_IMAGE{media-image-32.png});
background-image: url("#CHEMIN_IMAGE{media-image-32.png}");
}
.liste-objets.galerie.media-audio .caption {
background-image: url(#CHEMIN_IMAGE{media-audio-32.png});
background-image: url("#CHEMIN_IMAGE{media-audio-32.png}");
}
.liste-objets.galerie.media-video .caption {
background-image: url(#CHEMIN_IMAGE{media-video-32.png});
background-image: url("#CHEMIN_IMAGE{media-video-32.png}");
}
/* Colonne logo */
......
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
<g>
<path d="m 10.672 0 c -1.375 0 -2.672 1.355 -2.672 2.789 l 0 58.42 c 0 1.355 1.375 2.789 2.672 2.789 l 42.656 0 c 1.297 0 2.672 -1.434 2.672 -2.789 l 0 -43.21 l -18 -18 m -27.328 0" style="fill:#c19553;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
<path d="m 42 18 l 14 14 l 0 -14 m -14 0" style="fill:#000;fill-opacity:0.196;stroke:none;fill-rule:nonzero"/>
<path d="m 38 0 l 17.984 18 l -15.227 0 c -1.348 0 -2.758 -1.426 -2.758 -2.773 m 0 -15.227" style="fill:#fff;fill-opacity:0.392;stroke:none;fill-rule:nonzero"/>
<path d="m 18 0 l 6 0 l 0 6 l -6 0 m 0 -6" style="fill:#f9f9f9;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 24 6 l 6 0 l 0 6 l -6 0 m 0 -6" style="fill:#f9f9f9;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 18 12 l 6 0 l 0 6 l -6 0 m 0 -6" style="fill:#f9f9f9;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 24 18 l 6 0 l 0 6 l -6 0 m 0 -6" style="fill:#f9f9f9;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 18 24 l 6 0 l 0 6 l -6 0 m 0 -6" style="fill:#f9f9f9;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 18 32 l 12 0 l 0 12 l -12 0 m 0 -12" style="fill:#f9f9f9;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
<path d="M 10.6875,0 C 9.3125,0 8,1.378906 8,2.8125 l 0,58.375 C 8,62.539062 9.390625,64 10.6875,64 l 42.625,0 C 54.609375,64 56,62.539062 56,61.1875 L 56,2.75 C 56,1.402344 54.597656,0 53.25,0 Z m 0,0" style="fill:#dcdcdc;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
<path d="m 20 20 12 0 0 10 -12 0 z m 0 0" style="fill:#888;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 34 20 10 0 0 2 -10 0 z m 0 0" style="fill:#888;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 34 24 10 0 0 2 -10 0 z m 0 0" style="fill:#888;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 34 28 10 0 0 2 -10 0 z m 0 0" style="fill:#888;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 20 32 24 0 0 2 -24 0 z m 0 0" style="fill:#888;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 20 36 24 0 0 2 -24 0 z m 0 0" style="fill:#888;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 20 40 24 0 0 2 -24 0 z m 0 0" style="fill:#888;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 20 44 24 0 0 2 -24 0 z m 0 0" style="fill:#888;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<g>
<path d="m 10.672 0 c -1.375 0 -2.672 1.355 -2.672 2.789 l 0 58.42 c 0 1.355 1.375 2.789 2.672 2.789 l 42.656 0 c 1.297 0 2.672 -1.434 2.672 -2.789 l 0 -43.21 l -18 -18 m -27.328 0" style="fill:#3468ce;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
<path d="m 42 18 l 14 14 l 0 -14 m -14 0" style="fill:#000;fill-opacity:0.196;stroke:none;fill-rule:nonzero"/>
<path d="m 38 0 l 17.984 18 l -15.227 0 c -1.348 0 -2.758 -1.426 -2.758 -2.773 m 0 -15.227" style="fill:#fff;fill-opacity:0.392;stroke:none;fill-rule:nonzero"/>
<path d="m 20 22 l 12 0 l 0 10 l -12 0 m 0 -10" style="fill:#f9f9f9;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 34 22 l 10 0 l 0 2 l -10 0 m 0 -2" style="fill:#f9f9f9;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 34 26 l 10 0 l 0 2 l -10 0 m 0 -2" style="fill:#f9f9f9;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 34 30 l 10 0 l 0 2 l -10 0 m 0 -2" style="fill:#f9f9f9;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 20 34 l 24 0 l 0 2 l -24 0 m 0 -2" style="fill:#f9f9f9;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 20 38 l 24 0 l 0 2 l -24 0 m 0 -2" style="fill:#f9f9f9;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 20 42 l 24 0 l 0 2 l -24 0 m 0 -2" style="fill:#f9f9f9;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 20 46 l 24 0 l 0 2 l -24 0 m 0 -2" style="fill:#f9f9f9;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
<path d="M 10.6875,0 C 9.3125,0 8,1.378906 8,2.8125 l 0,58.375 C 8,62.539062 9.390625,64 10.6875,64 l 42.625,0 C 54.609375,64 56,62.539062 56,61.1875 L 56,2.75 C 56,1.402344 54.597656,0 53.25,0 Z m 0,0" style="fill:#dcdcdc;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
<path d="m 20 20 12 0 0 10 -12 0 z m 0 0" style="fill:#888;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 34 20 10 0 0 2 -10 0 z m 0 0" style="fill:#888;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 34 24 10 0 0 2 -10 0 z m 0 0" style="fill:#888;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 34 28 10 0 0 2 -10 0 z m 0 0" style="fill:#888;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 20 32 24 0 0 2 -24 0 z m 0 0" style="fill:#888;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 20 36 24 0 0 2 -24 0 z m 0 0" style="fill:#888;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 20 40 24 0 0 2 -24 0 z m 0 0" style="fill:#888;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 20 44 24 0 0 2 -24 0 z m 0 0" style="fill:#888;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<g>
<path d="m 10.672 0 c -1.375 0 -2.672 1.355 -2.672 2.789 l 0 58.42 c 0 1.355 1.375 2.789 2.672 2.789 l 42.656 0 c 1.297 0 2.672 -1.434 2.672 -2.789 l 0 -43.21 l -18 -18 m -27.328 0" style="fill:#3468ce;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
<path d="m 42 18 l 14 14 l 0 -14 m -14 0" style="fill:#000;fill-opacity:0.196;stroke:none;fill-rule:nonzero"/>
<path d="m 38 0 l 17.984 18 l -15.227 0 c -1.348 0 -2.758 -1.426 -2.758 -2.773 m 0 -15.227" style="fill:#fff;fill-opacity:0.392;stroke:none;fill-rule:nonzero"/>
<path d="m 20 22 l 12 0 l 0 10 l -12 0 m 0 -10" style="fill:#f9f9f9;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 34 22 l 10 0 l 0 2 l -10 0 m 0 -2" style="fill:#f9f9f9;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 34 26 l 10 0 l 0 2 l -10 0 m 0 -2" style="fill:#f9f9f9;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 34 30 l 10 0 l 0 2 l -10 0 m 0 -2" style="fill:#f9f9f9;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 20 34 l 24 0 l 0 2 l -24 0 m 0 -2" style="fill:#f9f9f9;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 20 38 l 24 0 l 0 2 l -24 0 m 0 -2" style="fill:#f9f9f9;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 20 42 l 24 0 l 0 2 l -24 0 m 0 -2" style="fill:#f9f9f9;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
<path d="m 20 46 l 24 0 l 0 2 l -24 0 m 0 -2" style="fill:#f9f9f9;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
<g>
<path d="m 10.672 0 c -1.375 0 -2.672 1.355 -2.672 2.789 l 0 58.42 c 0 1.355 1.375 2.789 2.672 2.789 l 42.656 0 c 1.297 0 2.672 -1.434 2.672 -2.789 l 0 -43.21 l -18 -18 m -27.328 0" style="fill:#dcdcdc;fill-opacity:1;stroke:none;fill-rule:nonzero"/>
<path d="m 42 18 l 14 14 l 0 -14 m -14 0" style="fill:#000;fill-opacity:0.196;stroke:none;fill-rule:nonzero"/>
<path d="m 38 0 l 17.984 18 l -15.227 0 c -1.348 0 -2.758 -1.426 -2.758 -2.773 m 0 -15.227" style="fill:#fff;fill-opacity:0.392;stroke:none;fill-rule:nonzero"/>
</g>
<path d="m 32 22 c -6.627 0 -12 5.373 -12 12 0 6.627 8 20 12 20 4 0 12 -13.373 12 -20 0 -6.627 -5.373 -12 -12 -12 z m 0 5.333 c 3.682 0 6.667 2.985 6.667 6.667 0 3.682 -2.985 6.667 -6.667 6.667 -3.682 0 -6.667 -2.985 -6.667 -6.667 0 -3.682 2.985 -6.667 6.667 -6.667 z" style="fill:#888;fill-opacity:1;stroke:none;fill-rule:evenodd"/>
</svg>