#!/usr/bin/perl
use strict;
use vars qw(%l11ll1lll %l1l1l1ll1 $llll11l1l $VERSION %l1ll1111l $l1111lll1 $lll1lll11 $lll11llll $ll1111l1l);
use vars qw($ll1l11ll1 $ll1111l11 $llllll111 $l1l1l1l1l);
##### CONFIG ###################################
$VERSION='3.06'; # 18/04/2006
$llll11l1l='pg-bannierespro-data';
################################################
##############################################################################
# Ceci est un script CGI Perl, fait par Sébastien Joncheray. Entreprise RAYNETTE#
# Pour avoir le droit d'utiliser ce CGI, vous devez acquérir une licence sur #
# http://www.perl-pro.com. info@perl-gratuit.com. Une licence donne un #
# droit d'utilisation sur UN site pour une organisation. #
##############################################################################
# EN PERDANT BEAUCOUP DE TEMPS VOUS POURRIEZ TROUVER COMMENT UTILISER CE SCRIPT
# SUR D AUTRES SITES WEB SANS PAYER DE LICENCE, EN MODIFIANT CE SCRIPT POUR #
# CONTOURNER LE SYSTEME DE VERIFICATION DE LICENCE. SACHEZ QUE PAR UN CERTAIN#
# MOYEN NOUS SAURONS CELA CAR LE NUMERO DE LICENCE APPARAIT A CERTAINS MOMENTS
# (CGI D ADMINISTRATION UNIQUEMENT). SI NOUS CONSTATONS QU'UN DE NOS SCRIPTS #
# CGI PRO EST UTILISE SUR UN SITE AYANT UNE FAUSSE LICENCE, DES POURSUITES #
# SERONT IMMEDIATEMENT ENTREPRISES DEVANT LES TRIBUNAUX. #
# MERCI DE RESPECTER LE TRAVAIL DE L AUTEUR. CE CGI A DEMANDE DU TRAVAIL, #
# EST DE QUALITE QUASI-INEGALEE ET VOUS REND SERVICE... #
##############################################################################
# #
# En cas de difficultés d'installations veuillez consultez les FAQs et autres#
# sections d'aide sur www.perl-gratuit.com, et dans votre compte PRO SVP... #
##############################################################################
# Tous droits de distribution/vente/modification réservés. #
##############################################################################
%l11ll1lll=&OOOO0O0OOO00000O;
%l1l1l1ll1=&O0O0O00OOOO0O000;
&OO0O00O00000O0O0;
my $ll1111l1l=int($l11ll1lll{'zone'});
$l11ll1lll{'type'}=lc($l11ll1lll{'type'});
if ($l11ll1lll{'type'} eq 'js' or $l11ll1lll{'type'} eq 'popup' or $l11ll1lll{'type'} eq 'popunder' or $l11ll1lll{'type'} eq 'iframe') {
my ($l11l111l1,$l1lll1111,%lll111lll)=();
$l11l111l1=&OOO0OOO0O0OOOO0O({'zone' => $ll1111l1l , 'type' => 'all'});
if (!$l11l111l1) {
$l1lll1111=' ';
} else {
&OOO0O00OOOO0O0OO("$llll11l1l/campaign_$l11l111l1.stats",'P') unless (!$l11l111l1);
&OOO0O00OOOO0O0OO("$llll11l1l/zone_$ll1111l1l.stats",'P') unless (!$l11ll1lll{'zone'});
&OOOOO00O00OOOOO0("$llll11l1l/campaign_$l11l111l1.conf",\%lll111lll);
if ($lll111lll{'CAPPING'} != 0) { &O0O00OOOOO00O00O(name => "campaign_$l11l111l1", value => ($l1l1l1ll1{"campaign_$l11l111l1"}+1), expires => "+1M");}
if ($l11ll1lll{'type'} eq 'popup' or $l11ll1lll{'type'} eq 'popunder') { $lll111lll{'DEST_TARGET'}='_blank'; }
if ($l11ll1lll{'type'} eq 'iframe' and ($lll111lll{'DEST_TARGET'} eq '' or $lll111lll{'DEST_TARGET'} eq '_self')) { $lll111lll{'DEST_TARGET'}='_top'; }
$l1lll1111=&O00O00OOOOO00000($l11l111l1,$ll1111l1l,%lll111lll);
}
print "Cache-Control: no-store, no-cache, max-age=0, must-revalidate\n";
print "Pragma: no-cache\n";
if ($l11ll1lll{'type'} eq 'js') {
print "Content-type: application/x-javascript\n\n";
print &O00OO0OOOOOO0O00($l1lll1111);
} elsif ($l11ll1lll{'type'} eq 'popup' or $l11ll1lll{'type'} eq 'popunder' or $l11ll1lll{'type'} eq 'iframe') {
print "Content-type: text/html\n\n";
print ('
'.$l1lll1111.'');
}
} elsif ($l11ll1lll{'type'} eq 'img') {
my ($l11l111l1,$l1lll1111,%lll111lll)=();
$l11l111l1=&OOO0OOO0O0OOOO0O({'zone' => $ll1111l1l , 'type' => 'img'});
if (!$l11l111l1) {
&O000000O0OOO0000;
} else {
&OOO0O00OOOO0O0OO("$llll11l1l/campaign_$l11l111l1.stats",'P') unless (!$l11l111l1);
&OOO0O00OOOO0O0OO("$llll11l1l/zone_$ll1111l1l.stats",'P') unless (!$l11ll1lll{'zone'});
&OOOOO00O00OOOOO0("$llll11l1l/campaign_$l11l111l1.conf",\%lll111lll);
if ($lll111lll{'CAPPING'} != 0) { &O0O00OOOOO00O00O(name => "campaign_$l11l111l1", value => ($l1l1l1ll1{"campaign_$l11l111l1"}+1), expires => "+1M");}
my $l1ll11lll=$lll111lll{'TYPE_IMG_IMGURL1'};
if ($lll111lll{'TYPE_IMG_IMGURL2'}) {$l1ll11lll=($lll111lll{'TYPE_IMG_IMGURL1'},$lll111lll{'TYPE_IMG_IMGURL2'}) [int(rand(2))];}
if ($lll111lll{'TYPE_IMG_IMGURL3'}) {$l1ll11lll=($lll111lll{'TYPE_IMG_IMGURL1'},$lll111lll{'TYPE_IMG_IMGURL2'},$lll111lll{'TYPE_IMG_IMGURL3'}) [int(rand(3))];}
&OOOOOO0O0000OOOO($l11l111l1,$ll1111l1l);
print "Status: 301 Found\n";
print "Cache-Control: no-cache\n";
print "Pragma: no-cache\n";
print "Expires: Tue, 31 Dec 2002 11:59:59 GMT\n";
print "Location: $l1ll11lll\n\n";
}
} elsif ($l11ll1lll{'type'} eq 'clic') {
my $l11l111l1;
if ($l11ll1lll{'id'} ne '') {
if (! -e "$llll11l1l/campaign_$l11ll1lll{id}.conf") { &O00OO0O0OOO0OO0O("L'identifiant de la bannière sur laquelle vous avez cliqué n'existe pas ou plus.");}
$l11l111l1=$l11ll1lll{'id'};
} else {
$l11l111l1=&OOO0OO000000OO0O;
}
if (!$l11l111l1) {
&O00OO0O0OOO0OO0O("Le serveur n'est pas en mesure de vous rediriger vers la destination
de la bannière sur laquelle vous avez cliquée !
La cause probable est que vous avez cliqué sur une bannière ancienne que votre
navigateur a conservé dans son cache, au lieu de la mettre à jour.");
}
unless ( ($l1ll1111l{'CLICS_IPNORECOUNT'}==1) && (&OOO0OOO0OO00OO0O("$llll11l1l/campaign_$l11l111l1.ips")) ) {
&OO000OOOO00000OO($l11l111l1);
&OOO0O00OOOO0O0OO("$llll11l1l/campaign_$l11l111l1.stats",'C') unless (!$l11l111l1);
&OOO0O00OOOO0O0OO("$llll11l1l/zone_$ll1111l1l.stats",'C') unless (!$ll1111l1l);
&OO0OOO000OO0O0OO("$llll11l1l/campaign_$l11l111l1.ips") unless (!$l11l111l1);
}
my (%lll111lll)=();
&OOOOO00O00OOOOO0("$llll11l1l/campaign_$l11l111l1.conf",\%lll111lll);
print "Status: 301 Found\n";
print "Location: $lll111lll{'DEST_URL'}\n\n";
} else {
&O00OO0O0OOO0OO0O("Le paramètre type est incorrect.");
}
sub OO0O00O00000O0O0 {
%l1ll1111l=();
$l1ll1111l{'CGI_NAME'}='PG-Bannieres PRO';
($l1111lll1,$lll1lll11,$lll11llll)=&OO0OO00O0OO00O00();
$ll1l11ll1='A5 A5 A2 A7 A4 A8 A1 A8 A10 A10 A*';
$ll1111l11='A4 A2 A2 A10 A10';
$llllll111='A4A2A2';
$l1l1l1l1l='A4A2A2 A2A2 A23 A*';
if (! -e "$llll11l1l/config.dat") { &O00OO0O0OOO0OO0O("Merci de vous rendre d'abord à l'URL du CGI d'administration, afin de configurer ce script"); }
&OOOOO00O00OOOOO0("$llll11l1l/config.dat",\%l1ll1111l);
}
sub OOO0O000O0O00O0O {
my ($lll1111ll,$ll1ll11ll)=@_;
if (! -e "$lll1111ll") {
open(TESTW,">$lll1111ll") || (&O00OO0O0OOO0OO0O("Impossible de créer le fichier $lll1111ll : $! Vérifiez le CHMOD 777 du répertoire devant contenir ce fichier."));
close(TESTW);
eval{ chmod($ll1ll11ll,"$lll1111ll");};
}
}
sub OOOOO00O00OOOOO0 {
my ($lll1111ll,$ll1lll111)=@_;
my ($l1l1l1111);
if (open (CONFR,"$lll1111ll")) {
eval{flock(CONFR,2);};
while ($l1l1l1111=) {
chomp($l1l1l1111);
if ( ($l1l1l1111 ne '') && ($l1l1l1111!~ /^\#/) && ($l1l1l1111=~ /^([^\s]+)\s+(.*)/) ) {
$$ll1lll111{"$1"}="$2";
$$ll1lll111{"$1"}=~ s/\|\\n\|/\n/gs;
}
}
close (CONFR);
} else {
&OO0O0OO0O0OO0000; print ("Impossible de lire le fichier de configuration ($lll1111ll) / Cannot read conf file : $!");
exit(0);
}
1;
}
sub OOOO0O0OOO00000O {
my (%l1ll11111,$llll11111,$llll1llll);
$llll11111='';
if ($ENV{'REQUEST_METHOD'} eq 'POST') {
my $l1lll1ll1=$ENV{'CONTENT_LENGTH'};
if (read(STDIN,$llll11111,$l1lll1ll1) != $l1lll1ll1) {&OO0O0OO0O0OO0000; print ("
error reading post data
"); die("Error reading 'POST' data\n"); }
} elsif ($ENV{'REQUEST_METHOD'} eq 'GET') {
$llll11111=$ENV{'QUERY_STRING'};
}
foreach $llll1llll (split('&',$llll11111)) {
my ($l111ll1l1,$l1ll1llll)=split('=',$llll1llll);
$l111ll1l1=~ tr/\0//d; $l1ll1llll=~ tr/\0//d;
$l111ll1l1 =~ tr/+/ /; $l111ll1l1 =~ s/%([0-9a-fA-F]{2})/chr hex($1)/ge;
$l1ll1llll=~ tr/+/ /; $l1ll1llll=~ s/%([0-9a-fA-F]{2})/chr hex($1)/ge;
$l1ll11111{$l111ll1l1}=$l1ll1llll;
}
return %l1ll11111;
}
sub O0O0O000OO0O0000 {
my ($s) = @_;
$s=~ s/ /+/g;
$s=~ s/([^a-zA-Z0-9\_\.\-\+])/uc sprintf("%%%02x",ord($1))/eg;
return $s;
}
sub OO0O0O00O00O00O0 {
my ($s)=@_;
$s=~ s/&/&/gso;
$s=~ s/</gso;
$s=~ s/>/>/gso;
$s=~ s/"/"/gso;
$s;
}
sub O0O0O00OOOO0O000 {
my (%l1l1l1ll1,$l111ll1l1,$l1ll1llll);
if ($ENV{'HTTP_COOKIE'} ne '') {
foreach (split(/; /,$ENV{'HTTP_COOKIE'})) {
($l111ll1l1,$l1ll1llll) = split(/=/);
$l111ll1l1=~ tr/+/ /;
$l111ll1l1=~ s/%([0-9a-fA-F]{2})/chr hex($1)/ge;
$l1ll1llll=~ tr/+/ /;
$l1ll1llll=~ s/%([0-9a-fA-F]{2})/chr hex($1)/ge;
$l1l1l1ll1{"$l111ll1l1"}=$l1ll1llll;
}
}
return (%l1l1l1ll1);
}
sub OO0O0OO0O0OO0000 {
print "Content-type: text/html; charset=ISO-8859-1\n\n" unless ($l1ll1111l{'headers_sent'});
$l1ll1111l{'headers_sent'}=1;
}
sub O00OO0O0OOO0OO0O {
my ($ll1llll1l)=@_;
&OO0O0OO0O0OO0000;
print ("$ll1llll1l");
exit(0);
}
sub O0O00OOOOO00O00O {
my (%ll1l1lll1)=@_;
my @lll1ll1ll;
$ll1l1lll1{'name'} =~ s/ /+/g; $ll1l1lll1{'name'} =~ s/([^a-zA-Z0-9\_\.\-\+])/uc sprintf("%%%02x",ord($1))/eg;
$ll1l1lll1{'value'}=~ s/ /+/g; $ll1l1lll1{'value'}=~ s/([^a-zA-Z0-9\_\.\-\+])/uc sprintf("%%%02x",ord($1))/eg;
push (@lll1ll1ll,"$ll1l1lll1{'name'}=$ll1l1lll1{'value'}");
push (@lll1ll1ll,"domain=$ll1l1lll1{'domain'}") if ($ll1l1lll1{'domain'} ne '');
if ($ll1l1lll1{'path'} eq '') { $ll1l1lll1{'path'}='/'; }
push (@lll1ll1ll,"path=$ll1l1lll1{'path'}");
if ($ll1l1lll1{'expires'} ne '') {
my $llll111ll;
{
my(%ll1l11l1l) = ('s'=>1, 'm'=>60, 'h'=>60*60, 'd'=>60*60*24, 'M'=>60*60*24*30, 'y'=>60*60*24*365);
if (!$ll1l1lll1{'expires'} || (lc($ll1l1lll1{'expires'}) eq 'now')){ $llll111ll=time; }
elsif ($ll1l1lll1{'expires'}=~/^\d+/) { $llll111ll=$ll1l1lll1{'expires'}; }
elsif ($ll1l1lll1{'expires'}=~/^([+-]?(?:\d+|\d*\.\d*))([smhdMy]?)/) { $llll111ll=time + ($ll1l11l1l{$2} || 1)*$1; }
else { $llll111ll=$ll1l1lll1{'expires'}; }
}
my $l1ll1ll11;
{
my(@l11111lll)=qw/Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec/;
my(@llll1l1ll) = qw/Sun Mon Tue Wed Thu Fri Sat/;
my($ll1ll1ll1,$l1lll11l1,$ll1ll11l1,$ll1ll111l,$l11l1lll1,$l1l11111l,$llll1l1l1) = gmtime($llll111ll);
$l1ll1ll11=sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT", $llll1l1ll[$llll1l1l1],$ll1ll111l,$l11111lll[$l11l1lll1],$l1l11111l+1900,$ll1ll11l1,$l1lll11l1,$ll1ll1ll1);
}
push (@lll1ll1ll,"expires=$l1ll1ll11");
}
push (@lll1ll1ll,"secure") if ($ll1l1lll1{'secure'});
print "Set-Cookie: ".join('; ',@lll1ll1ll)."\n";
}
sub OO0OO00O0OO00O00 {
my ($lll111111)=@_;
$lll111111 ||= time();
$lll111111+=3600*$l1ll1111l{'TIME_OFFSET'};
my ($l1l11111l,$l11lllll1,$l111l1l11,$ll1ll11l1,$l1lll11l1)=(localtime($lll111111))[5,4,3,2,1];
$l1l11111l+=1900;
$l11lllll1++;
return (sprintf("%04d%02d%02d",$l1l11111l,$l11lllll1,$l111l1l11),sprintf("%04d%02d%02d%02d%02d",$l1l11111l,$l11lllll1,$l111l1l11,$ll1ll11l1,$l1lll11l1),$lll111111);
}
sub OOO0OOO0O0OOOO0O {
my ($l1l1l11l1)=@_;
my ($l1111l1ll,$l1l1l1111,@l11l1ll1l,$l11l11lll,$l111l111l,%l111l111l);
my ($ll111lll1,$ll1lll1ll,$l1l1ll1ll,$ll11ll1ll,$lll1l11l1,$l11ll11l1,$l11l111ll,$lllll11ll,$lllll1l11,$ll1l1l111,$l1l1l11ll);
srand();
open (ADLISTRW,"+<$llll11l1l/adlist.dat") || (&O00OO0O0OOO0OO0O("Impossible de lire $llll11l1l/adlist.dat: $!"));
eval{flock(ADLISTRW,2);};
seek(ADLISTRW,0,0);
$l111l111l=tell(ADLISTRW);
while ($l1l1l1111=) {
chomp($l1l1l1111);
($ll111lll1,$ll1lll1ll,$l1l1ll1ll,$ll11ll1ll,$lll1l11l1,$l11ll11l1,$l11l111ll,$lllll11ll,$lllll1l11,$ll1l1l111,$l1l1l11ll)=unpack($ll1l11ll1,$l1l1l1111);
$l111l111l{"$ll111lll1"}=$l111l111l;
$l111l111l=tell(ADLISTRW);
next if ( ($l1l1l11l1->{zone}) && ($l1l1l11ll!~ /\b$l1l1l11l1->{zone}\b/) );
next if ( ($l1l1l11l1->{type} eq 'img') && ($ll11ll1ll ne 'IMG'));
next if (($lll1l11l1!=0) && ($l1l1l1ll1{"campaign_$ll111lll1"} >= $lll1l11l1) );
next if ($l11ll11l1 > $l1111lll1);
next if (
( ($l11l111ll eq 'D') && ($l1111lll1 > $lllll11ll) )
|| ( ($l11l111ll eq 'C') && ($ll1l1l111 >= $lllll11ll) )
|| ( ($l11l111ll eq 'P') && ($lllll1l11 >= $lllll11ll) )
);
for ($l11l11lll=1;$l11l11lll<=$l1l1ll1ll;$l11l11lll++) {push(@l11l1ll1l,$ll111lll1);}
}
if (@l11l1ll1l == 0) {
$l1111l1ll='';
} else {
$l1111l1ll = $l11l1ll1l[int(rand($#l11l1ll1l+1))];
}
if ($l1111l1ll ne '') {
seek(ADLISTRW,$l111l111l{"$l1111l1ll"},0);
$l1l1l1111=;
chomp($l1l1l1111);
($ll111lll1,$ll1lll1ll,$l1l1ll1ll,$ll11ll1ll,$lll1l11l1,$l11ll11l1,$l11l111ll,$lllll11ll,$lllll1l11,$ll1l1l111,$l1l1l11ll)=unpack($ll1l11ll1,$l1l1l1111);
$lllll1l11++;
$l1l1l1111=pack($ll1l11ll1,$ll111lll1,$ll1lll1ll,$l1l1ll1ll,$ll11ll1ll,$lll1l11l1,$l11ll11l1,$l11l111ll,$lllll11ll,$lllll1l11,$ll1l1l111,$l1l1l11ll);
seek(ADLISTRW,$l111l111l{"$l1111l1ll"},0);
print ADLISTRW "$l1l1l1111\n";
}
close(ADLISTRW);
return ($l1111l1ll);
}
sub OO000OOOO00000OO {
my ($l11l111l1)=@_;
my ($ll111lll1,$ll1lll1ll,$l1l1ll1ll,$ll11ll1ll,$lll1l11l1,$l11ll11l1,$l11l111ll,$lllll11ll,$lllll1l11,$ll1l1l111,$l1l1l11ll);
my ($l1l1l1111,$l111l111l);
open (ADLISTT,"+<$llll11l1l/adlist.dat") || (&O00OO0O0OOO0OO0O("Impossible d'ouvrir adlist.dat: $!"));
eval{flock(ADLISTT,2);};
seek(ADLISTT,0,0);
$l111l111l=tell(ADLISTT);
while ($l1l1l1111=) {
chomp($l1l1l1111);
($ll111lll1,$ll1lll1ll,$l1l1ll1ll,$ll11ll1ll,$lll1l11l1,$l11ll11l1,$l11l111ll,$lllll11ll,$lllll1l11,$ll1l1l111,$l1l1l11ll)=unpack($ll1l11ll1,$l1l1l1111);
if ($ll111lll1 eq $l11l111l1) {
$ll1l1l111++;
$l1l1l1111=pack($ll1l11ll1,$ll111lll1,$ll1lll1ll,$l1l1ll1ll,$ll11ll1ll,$lll1l11l1,$l11ll11l1,$l11l111ll,$lllll11ll,$lllll1l11,$ll1l1l111,$l1l1l11ll);
seek(ADLISTT,$l111l111l,0);
print ADLISTT "$l1l1l1111\n";
last;
}
$l111l111l=tell(ADLISTT);
}
close (ADLISTT);
}
sub OOO0O00OOOO0O0OO {
my ($lll1111ll,$l1111l1l1)=@_;
my (@ll1111111,$l1l1l1111);
my ($l1l11111l,$l11lllll1,$l111l1l11,$lll1l1lll,$ll11llll1);
&OOO0O000O0O00O0O($lll1111ll,0666);
($l1l11111l,$l11lllll1,$l111l1l11)=unpack($llllll111,$l1111lll1);
open (STATRW,"+<$lll1111ll") || (&O00OO0O0OOO0OO0O("Impossible de lire/écrire dans $lll1111ll: $!"));
eval{flock(STATRW,2);};
seek(STATRW,0,0);
my $l111l111l=tell(STATRW);
while () {
push(@ll1111111,$_);
$l111l111l=tell(STATRW) unless eof(STATRW);
}
if ( (scalar(@ll1111111)==0) || (substr($ll1111111[$#ll1111111],0,8) ne $l1111lll1) ) {
seek(STATRW,0,2);
if ($l1111l1l1 eq 'P') {
$lll1l1lll=1;
$ll11llll1=0;
} elsif ($l1111l1l1 eq 'C') {
$lll1l1lll=0;
$ll11llll1=1;
}
$l1l1l1111=pack($ll1111l11,$l1l11111l,$l11lllll1,$l111l1l11,$lll1l1lll,$ll11llll1);
print STATRW "$l1l1l1111\n";
} else {
seek(STATRW,$l111l111l,0);
chomp($ll1111111[$#ll1111111]);
(undef,undef,undef,$lll1l1lll,$ll11llll1)=unpack($ll1111l11,$ll1111111[$#ll1111111]);
if ($l1111l1l1 eq 'P') {
$lll1l1lll++;
} elsif ($l1111l1l1 eq 'C') {
$ll11llll1++;
}
$l1l1l1111=pack($ll1111l11,$l1l11111l,$l11lllll1,$l111l1l11,$lll1l1lll,$ll11llll1);
print STATRW "$l1l1l1111\n";
}
close(STATRW);
}
sub O00O00OOOOO00000 {
my ($l11l111l1,$ll11l11l1,%lll111lll)=@_;
my $ll1l1l1l1='';
my $l1l1l111l="$l1ll1111l{'CGIURL_ADS'}?type=clic&id=$l11l111l1&zone=$ll11l11l1";
if ($lll111lll{'TYPE'} eq 'IMG') {
my $l1l11ll1l=$lll111lll{'TYPE_IMG_IMGURL1'};
if ($lll111lll{'TYPE_IMG_IMGURL2'}) {$l1l11ll1l=($lll111lll{'TYPE_IMG_IMGURL1'},$lll111lll{'TYPE_IMG_IMGURL2'}) [int(rand(2))];}
if ($lll111lll{'TYPE_IMG_IMGURL3'}) {$l1l11ll1l=($lll111lll{'TYPE_IMG_IMGURL1'},$lll111lll{'TYPE_IMG_IMGURL2'},$lll111lll{'TYPE_IMG_IMGURL3'}) [int(rand(3))];}
$ll1l1l1l1="";
$ll1l1l1l1.="";
$ll1l1l1l1.="";
} elsif ($lll111lll{'TYPE'} eq 'FLA') {
my $ll11ll11l=&O0O0O000OO0O0000($l1l1l111l);
my $l11llll1l=$lll111lll{'DEST_TARGET'} ne '' ? $lll111lll{'DEST_TARGET'} : '_self';
$ll1l1l1l1="";
} elsif ($lll111lll{'TYPE'} eq 'TXT') {
my ($l111llll1,$l1l11l11l)=();
if ($lll111lll{'TYPE_TXT_FACE'}) { $l111llll1.="font-family: $lll111lll{'TYPE_TXT_FACE'}; "; }
if ($lll111lll{'TYPE_TXT_SIZE'}) { $l111llll1.="font-size: $lll111lll{'TYPE_TXT_SIZE'}px; "; }
if ($lll111lll{'TYPE_TXT_COLOR'}) { $l111llll1.="color: $lll111lll{'TYPE_TXT_COLOR'}; "; }
if ($lll111lll{'TYPE_TXT_BGCOLOR'}) { $l1l11l11l.="background-color: $lll111lll{'TYPE_TXT_BGCOLOR'}; "; }
if ($lll111lll{'TYPE_TXT_BOLD'}) { $l111llll1.="font-weight: bold; "; } else { $l111llll1.="font-weight: normal; ";}
if ($lll111lll{'TYPE_TXT_UNDERLINE'}){$l111llll1.="text-decoration: underline; "; } else { $l111llll1.="text-decoration: none; "; }
if ($lll111lll{'TYPE_TXT_ITALIC'}) { $l111llll1.="font-style: italic; "; } else { $l111llll1.="font-style: normal; ";}
if ($lll111lll{'TYPE_TXT_HALIGN'}) { $l1l11l11l.="text-align: $lll111lll{'TYPE_TXT_HALIGN'}; "; }
my $llllll11l=&OO0O0O00O00O00O0($lll111lll{'TYPE_TXT_CONTENT'});
$llllll11l=~ s/\n/ /gs;
$ll1l1l1l1="