Cannot redeclare makequote() (previously
Ik heb een complete UBB parser gemaakt.. werkt ie niet...
Waarom doet PHP weer zo k*t?
Als ik in index.php include("replace.php"); include_once.. maak, dan geeft ie de fout niet, maar dan wordt alleen het eerste bericht geparsed.
Hij geeft de volgende foutmelding:
## index.php, hier wordt replace.php ingevoegd
## replace.php
Waarom doet PHP weer zo k*t?
Als ik in index.php include("replace.php"); include_once.. maak, dan geeft ie de fout niet, maar dan wordt alleen het eerste bericht geparsed.
Hij geeft de volgende foutmelding:
Code (php)
1
Fatal error: Cannot redeclare makequote() (previously declared in E:\UsbWebserver2\Root\Gastenboek\replace.php:76) in E:\UsbWebserver2\Root\Gastenboek\replace.php on line 76
## index.php, hier wordt replace.php ingevoegd
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl" lang="nl">
<head>
<title>Gastenboek © Nick Vu Van</title>
<link type="text/css" rel="stylesheet" href="style/style.css" />
<?php include("replace.php"); ?>
</head>
<body>
<?php
// Vereist voor het verbinden met de database
require("connect.php");
// Aantal entries in tabel tellen
$count = mysql_query("SELECT COUNT(id) FROM berichten");
$totaal = mysql_result($count, 0);
// Aantal reacties per pagina showen
$aantalReacties = 2;
$aantalPaginas = ceil($totaal / $aantalReacties);
// Pagina opvragen, zoniet huidige pagina is 0
$pagina = 0;
if(isset($_GET['pagina']) && $_GET['pagina'] > 0 && $_GET['pagina'] <= $aantalPaginas && is_numeric($_GET['pagina'])){
$pagina = $_GET['pagina'];
}
// Gegevens voor huidige pagina
$reactiesPagina = $pagina * $aantalReacties;
$huidigePagina = mysql_query("SELECT id,naam,email,bericht,datum,tijd,verberg FROM berichten ORDER BY id DESC LIMIT " . $reactiesPagina.",".$aantalReacties);
// Gegevens voor huidige pagina showen
if($totaal == 0){
echo "Er zijn geen berichten, <a href=\"" . $schrijven . "\">plaats</a> als eerste een bericht!";
} else {
while($geg = mysql_fetch_assoc($huidigePagina)){
$geg['naam'] = ucwords(strtolower($geg['naam']));
if($geg['verberg'] == 0){
$poster = '<a href="mailto:' . $geg['email'] . '">' . $geg['naam'] . '</a>';
} else {
$poster = $geg['naam'];
}
$geg['bericht'] = UBB($geg['bericht']);
echo "<div class=\"comments\" id=\"box\">
<div class=\"comments\" id=\"head\"><b>" . $poster . "</b> " . $geg['datum'] . " @ " . $geg['tijd'] . "<span style=\"float:right\"><a href=\"?q=" . $geg['id'] . "\">Quote</a></span></div>
<div class=\"comments\" id=\"bericht\"><p>" . $geg['bericht'] . "</p></div>
<div class=\"comments\" id=\"clear\"></div>
</div><br />";
}
echo "<br /><a href=\"" . $schrijven . "\">Plaats</a> een bericht";
}
echo "<br /><br />";
// Paginanummering
for($i = 0; $i < $aantalPaginas; $i++) {
if($pagina == $i) {
if($aantalPaginas == 1){
echo "";
} else {
echo "<b>".($i+1)."</b>";
}
} else {
echo "<a href=\"".$_SERVER['REQUEST_URI']."?pagina=".$i."\">".($i+1)."</a>";
}
if($i < $aantalPaginas - 1) {
echo " - ";
}
}
?>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl" lang="nl">
<head>
<title>Gastenboek © Nick Vu Van</title>
<link type="text/css" rel="stylesheet" href="style/style.css" />
<?php include("replace.php"); ?>
</head>
<body>
<?php
// Vereist voor het verbinden met de database
require("connect.php");
// Aantal entries in tabel tellen
$count = mysql_query("SELECT COUNT(id) FROM berichten");
$totaal = mysql_result($count, 0);
// Aantal reacties per pagina showen
$aantalReacties = 2;
$aantalPaginas = ceil($totaal / $aantalReacties);
// Pagina opvragen, zoniet huidige pagina is 0
$pagina = 0;
if(isset($_GET['pagina']) && $_GET['pagina'] > 0 && $_GET['pagina'] <= $aantalPaginas && is_numeric($_GET['pagina'])){
$pagina = $_GET['pagina'];
}
// Gegevens voor huidige pagina
$reactiesPagina = $pagina * $aantalReacties;
$huidigePagina = mysql_query("SELECT id,naam,email,bericht,datum,tijd,verberg FROM berichten ORDER BY id DESC LIMIT " . $reactiesPagina.",".$aantalReacties);
// Gegevens voor huidige pagina showen
if($totaal == 0){
echo "Er zijn geen berichten, <a href=\"" . $schrijven . "\">plaats</a> als eerste een bericht!";
} else {
while($geg = mysql_fetch_assoc($huidigePagina)){
$geg['naam'] = ucwords(strtolower($geg['naam']));
if($geg['verberg'] == 0){
$poster = '<a href="mailto:' . $geg['email'] . '">' . $geg['naam'] . '</a>';
} else {
$poster = $geg['naam'];
}
$geg['bericht'] = UBB($geg['bericht']);
echo "<div class=\"comments\" id=\"box\">
<div class=\"comments\" id=\"head\"><b>" . $poster . "</b> " . $geg['datum'] . " @ " . $geg['tijd'] . "<span style=\"float:right\"><a href=\"?q=" . $geg['id'] . "\">Quote</a></span></div>
<div class=\"comments\" id=\"bericht\"><p>" . $geg['bericht'] . "</p></div>
<div class=\"comments\" id=\"clear\"></div>
</div><br />";
}
echo "<br /><a href=\"" . $schrijven . "\">Plaats</a> een bericht";
}
echo "<br /><br />";
// Paginanummering
for($i = 0; $i < $aantalPaginas; $i++) {
if($pagina == $i) {
if($aantalPaginas == 1){
echo "";
} else {
echo "<b>".($i+1)."</b>";
}
} else {
echo "<a href=\"".$_SERVER['REQUEST_URI']."?pagina=".$i."\">".($i+1)."</a>";
}
if($i < $aantalPaginas - 1) {
echo " - ";
}
}
?>
</body>
</html>
## replace.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<style type="text/css">
.num {
float: left;
color: gray;
font-size: 13px;
font-family: monospace;
text-align: right;
margin-right: 6pt;
padding-right: 6pt;
border-right: 1px solid gray;}
body {margin: 0px; margin-left: 5px;}
td {vertical-align: top;}
code {white-space: nowrap;}
</style>
<!-- left, right, center, justify! -->
<?php
function UBB($string){
// HTML verbieden
$string = htmlspecialchars($string);
// Enters maken
$string = nl2br($string);
// Links maken
$string = preg_replace("_\[url](.*)\[/url\]_si", '<a href="http://$1" style="text-decoration: none;">$1</a>', $string);
$string = preg_replace("_\[url=(.*)\](.*?)\[/url\]_si", '<a href="http://$1" style="text-decoration: none;">$2</a>', $string);
$string = preg_replace("_\[email](.*)\[/email\]_si", '<a href="mailto://$1" style="text-decoration: none;">$1</a>', $string);
$string = preg_replace("_\[email=(.*)\](.*?)\[/email\]_si", '<a href="mailto:$1" style="text-decoration: none;">$2</a>', $string);
// Kleuren
$string = preg_replace("_\[color=(.*)\](.*?)\[/color\]_si", '<span style="color: $1">$2</span>', $string);
// Tekstgrootte
$string = preg_replace("_\[size=(.*)\](.*?)\[/size\]_si", '<span style="font-size: $1">$2</span>', $string);
// Vetgedrukt
$string = preg_replace("_\[b\](.*?)\[/b\]_si", '<b>$1</b>', $string);
// Cursief
$string = preg_replace("_\[i\](.*?)\[/i\]_si", '<i>$1</i>', $string);
// Onderstrepen
$string = preg_replace("_\[u\](.*?)\[/u\]_si", '<u>$1</u>', $string);
// Doorstrepen
$string = preg_replace("_\[s\](.*?)\[/s\]_si", '<s>$1</s>', $string);
// Knipperen
$string = preg_replace("_\[blink\](.*?)\[/blink\]_si", '<blink>$1</blink>', $string);
// Superscript
$string = preg_replace("_\[sup\](.*?)\[/sup\]_si", '<sup>$1</sup>', $string);
// Subscript
$string = preg_replace("_\[sub\](.*?)\[/sub\]_si", '<sub>$1</sub>', $string);
// All caps
$string = preg_replace("_\[ac\](.*?)\[/ac\]_si", '<span style="text-transform:uppercase">$1</span>', $string);
// Small caps
$string = preg_replace("_\[sc\](.*?)\[/sc\]_si", '<span style="text-transform:lowercase">$1</span>', $string);
// Marquee, standaard "scroll", andere opties: "slide" & "alternate"
$string = preg_replace("_\[slide\](.*?)\[/slide\]_si", '<marquee>$1</marquee>', $string);
$string = preg_replace("_\[slide=(.*)\](.*?)\[/slide\]_si", '<marquee behavior="$1">$2</marquee>', $string);
// Smilies
$string = str_replace(":)"," <img src=\"images/lach.gif\">", $string);
// Quotefunctie
function makeQuote($tekst){
$regex = '#\[quote(?:\h*=\h*(?|\"(.*?)\"|&\#039;(.*?)&\#039;|([^][=\s]+)))?]'.
'((?:[^[]|\[(?!/quote]|quote(?:\h*=\h*(?|\"(.*?)\"|&\#039;(.*?)&\#039;|([^][=\s]+)))?])|(?R))+)'.
'\[/quote]#';
if (is_array($tekst)) {
$tekst = '<fieldset style="background-color:#FFF; width:50%;">
<legend style="background-color:#FFF;">Quote van' .(empty($tekst[1]) ? '' : ' ' .$tekst[1]). '</legend><p>' .$tekst[2]. '</p></fieldset>';
}
return preg_replace_callback($regex, 'makeQuote', $tekst);
}
// Highlightfunctie
function customHighlight($code){
$code = highlight_string(htmlspecialchars_decode(strip_tags($code[1])), true);
$aLines = explode("<br />", $code);
$iLines = count($aLines);
$output = "<table><tr><td class=num>\n";
for($i = 1; $i <= $iLines; $i++){
$output .= $i ."<br />";
}
$output .= "\n</td><td>\n$code\n</td></tr></table>";
return $output;
}
// Tekst binnen de code-tags highlighten
$string = preg_replace_callback("#\[code\](.*?)\[/code\]#s", "customHighlight", $string);
// Tekst binnen de quote-tags omzetten in een quote
$string = makeQuote(htmlspecialchars_decode($string));
return $string;
}
?>
.num {
float: left;
color: gray;
font-size: 13px;
font-family: monospace;
text-align: right;
margin-right: 6pt;
padding-right: 6pt;
border-right: 1px solid gray;}
body {margin: 0px; margin-left: 5px;}
td {vertical-align: top;}
code {white-space: nowrap;}
</style>
<!-- left, right, center, justify! -->
<?php
function UBB($string){
// HTML verbieden
$string = htmlspecialchars($string);
// Enters maken
$string = nl2br($string);
// Links maken
$string = preg_replace("_\[url](.*)\[/url\]_si", '<a href="http://$1" style="text-decoration: none;">$1</a>', $string);
$string = preg_replace("_\[url=(.*)\](.*?)\[/url\]_si", '<a href="http://$1" style="text-decoration: none;">$2</a>', $string);
$string = preg_replace("_\[email](.*)\[/email\]_si", '<a href="mailto://$1" style="text-decoration: none;">$1</a>', $string);
$string = preg_replace("_\[email=(.*)\](.*?)\[/email\]_si", '<a href="mailto:$1" style="text-decoration: none;">$2</a>', $string);
// Kleuren
$string = preg_replace("_\[color=(.*)\](.*?)\[/color\]_si", '<span style="color: $1">$2</span>', $string);
// Tekstgrootte
$string = preg_replace("_\[size=(.*)\](.*?)\[/size\]_si", '<span style="font-size: $1">$2</span>', $string);
// Vetgedrukt
$string = preg_replace("_\[b\](.*?)\[/b\]_si", '<b>$1</b>', $string);
// Cursief
$string = preg_replace("_\[i\](.*?)\[/i\]_si", '<i>$1</i>', $string);
// Onderstrepen
$string = preg_replace("_\[u\](.*?)\[/u\]_si", '<u>$1</u>', $string);
// Doorstrepen
$string = preg_replace("_\[s\](.*?)\[/s\]_si", '<s>$1</s>', $string);
// Knipperen
$string = preg_replace("_\[blink\](.*?)\[/blink\]_si", '<blink>$1</blink>', $string);
// Superscript
$string = preg_replace("_\[sup\](.*?)\[/sup\]_si", '<sup>$1</sup>', $string);
// Subscript
$string = preg_replace("_\[sub\](.*?)\[/sub\]_si", '<sub>$1</sub>', $string);
// All caps
$string = preg_replace("_\[ac\](.*?)\[/ac\]_si", '<span style="text-transform:uppercase">$1</span>', $string);
// Small caps
$string = preg_replace("_\[sc\](.*?)\[/sc\]_si", '<span style="text-transform:lowercase">$1</span>', $string);
// Marquee, standaard "scroll", andere opties: "slide" & "alternate"
$string = preg_replace("_\[slide\](.*?)\[/slide\]_si", '<marquee>$1</marquee>', $string);
$string = preg_replace("_\[slide=(.*)\](.*?)\[/slide\]_si", '<marquee behavior="$1">$2</marquee>', $string);
// Smilies
$string = str_replace(":)"," <img src=\"images/lach.gif\">", $string);
// Quotefunctie
function makeQuote($tekst){
$regex = '#\[quote(?:\h*=\h*(?|\"(.*?)\"|&\#039;(.*?)&\#039;|([^][=\s]+)))?]'.
'((?:[^[]|\[(?!/quote]|quote(?:\h*=\h*(?|\"(.*?)\"|&\#039;(.*?)&\#039;|([^][=\s]+)))?])|(?R))+)'.
'\[/quote]#';
if (is_array($tekst)) {
$tekst = '<fieldset style="background-color:#FFF; width:50%;">
<legend style="background-color:#FFF;">Quote van' .(empty($tekst[1]) ? '' : ' ' .$tekst[1]). '</legend><p>' .$tekst[2]. '</p></fieldset>';
}
return preg_replace_callback($regex, 'makeQuote', $tekst);
}
// Highlightfunctie
function customHighlight($code){
$code = highlight_string(htmlspecialchars_decode(strip_tags($code[1])), true);
$aLines = explode("<br />", $code);
$iLines = count($aLines);
$output = "<table><tr><td class=num>\n";
for($i = 1; $i <= $iLines; $i++){
$output .= $i ."<br />";
}
$output .= "\n</td><td>\n$code\n</td></tr></table>";
return $output;
}
// Tekst binnen de code-tags highlighten
$string = preg_replace_callback("#\[code\](.*?)\[/code\]#s", "customHighlight", $string);
// Tekst binnen de quote-tags omzetten in een quote
$string = makeQuote(htmlspecialchars_decode($string));
return $string;
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Henk en Annie
Gesponsorde koppelingen:
Je mag een function maar één keer definiëren. Dus het bestand waar het in staat mag je maar één keer includen.
hoe kan ik anders elk bericht door de parser halen?
Quote:
hoe kan ik anders elk bericht door de parser halen?
Misschien door elke keer een functie aan te roepen met het bericht? Ik snap persoonlijk het hele probleem niet helemaal.
Sowieso zie ik niet dat je twee keer dezelfde functie aanmaakt (zie namelijk nergens twee keer de include van replace.php).
Ja en dat doe ik, ik snap ook niet waarom ik deze fout krijg.
Ik denk dat het komt omdat ik in while(){ het volgende heb gezet:
$geg['bericht'] = UBB($geg['bericht']);
Dat het bestand daarom geïnclude wordt, maar ik weet echt niet hoe ik anders alle berichten door de parser haal.
SanThe weet jij hoe ik elk bericht door de parser kan halen zonder die foutmelding?
Ik denk dat het komt omdat ik in while(){ het volgende heb gezet:
$geg['bericht'] = UBB($geg['bericht']);
Dat het bestand daarom geïnclude wordt, maar ik weet echt niet hoe ik anders alle berichten door de parser haal.
SanThe weet jij hoe ik elk bericht door de parser kan halen zonder die foutmelding?
Quote:
Dan heb jij wel een hele magic PHP..., gezien de functie inladen op functie-call voor zover ik weet nog moet worden uitgevonden. Kan het niet gewoon zijn dat je in twee bestanden een functie hebt met dezelfde naam?Dat het bestand daarom geïnclude wordt, maar ik weet echt niet hoe ik anders alle berichten door de parser haal.
Nee ik post hieronder connect.php
maar ik heb echt geen dubbele functies
maar ik heb echt geen dubbele functies
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
// MySQL server, 99% van de tijd "localhost"
$server = "localhost";
// Gebruikersnaam voor MySQL server
$gebruiker = "root";
// Wachtwoord voor MySQl server
$wachtwoord = "***";
// Database voor de entries
$database = "gastenboek";
// Tabel in $database
$tabel = "berichten";
// Pagina waar je de entries kan lezen
$lezen = "index.php";
// Pagina waar je een entry kan toevoegen
$schrijven = "add.php";
// Adminpagina
$admin = "admin.php";
// UBB code aan? true voor aan, false voor uit
$UBB = true;
// Naam (editen)
$naam = "de administrator";
# Functie maken om in te loggen, verander hier de gebruikersnaam en het wachtwoord!
function inloggen(){
# Gebruikersnaam administrator
$gebruikersnaam = "admin";
# Wachtwoord
$wachtwoord = "admin";
if($_SERVER['PHP_AUTH_USER'] != $gebruikersnaam || $_SERVER['PHP_AUTH_PW'] != $wachtwoord){
header("WWW-Authenticate: Basic realm=\"Authenticatie vereist!\"");
header("HTTP/1.0 401 Unauthorized");
echo "Je bent niet ingelogd! <br /><br /> Probeer het <a href=\"javascript:location.reload();\">opnieuw</a>.";
exit;
}
}
// Email bij entry? TRUE voor ja, FALSE voor nee
$mail = false;
// Emailadres
$email = "test@test.nl";
// Onderwerp
$onderwerp = "Nieuwe entry in je gastenboek!";
// Bericht
$bericht = "<html><head><title>" . $onderwerp . "</title></head><body>In je gastenboek is het volgende geplaatst: <br> blabla</body></html>";
// Headers, HTML email sturen
$header = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Headers, verander hier het emailadres en eventueel "Gastenboek"
$header .= 'From: Gastenboek <noreply@test.nl>' . "\r\n";
$db = mysql_connect($server, $gebruiker, $wachtwoord) or die ('Kon geen verbinding maken met MySQL.');
mysql_select_db($database) or die ("Kon de database niet vinden.");
?>
// MySQL server, 99% van de tijd "localhost"
$server = "localhost";
// Gebruikersnaam voor MySQL server
$gebruiker = "root";
// Wachtwoord voor MySQl server
$wachtwoord = "***";
// Database voor de entries
$database = "gastenboek";
// Tabel in $database
$tabel = "berichten";
// Pagina waar je de entries kan lezen
$lezen = "index.php";
// Pagina waar je een entry kan toevoegen
$schrijven = "add.php";
// Adminpagina
$admin = "admin.php";
// UBB code aan? true voor aan, false voor uit
$UBB = true;
// Naam (editen)
$naam = "de administrator";
# Functie maken om in te loggen, verander hier de gebruikersnaam en het wachtwoord!
function inloggen(){
# Gebruikersnaam administrator
$gebruikersnaam = "admin";
# Wachtwoord
$wachtwoord = "admin";
if($_SERVER['PHP_AUTH_USER'] != $gebruikersnaam || $_SERVER['PHP_AUTH_PW'] != $wachtwoord){
header("WWW-Authenticate: Basic realm=\"Authenticatie vereist!\"");
header("HTTP/1.0 401 Unauthorized");
echo "Je bent niet ingelogd! <br /><br /> Probeer het <a href=\"javascript:location.reload();\">opnieuw</a>.";
exit;
}
}
// Email bij entry? TRUE voor ja, FALSE voor nee
$mail = false;
// Emailadres
$email = "test@test.nl";
// Onderwerp
$onderwerp = "Nieuwe entry in je gastenboek!";
// Bericht
$bericht = "<html><head><title>" . $onderwerp . "</title></head><body>In je gastenboek is het volgende geplaatst: <br> blabla</body></html>";
// Headers, HTML email sturen
$header = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Headers, verander hier het emailadres en eventueel "Gastenboek"
$header .= 'From: Gastenboek <noreply@test.nl>' . "\r\n";
$db = mysql_connect($server, $gebruiker, $wachtwoord) or die ('Kon geen verbinding maken met MySQL.');
mysql_select_db($database) or die ("Kon de database niet vinden.");
?>
Wordt die index.php zelf niet per ongeluk ergens in een while opgenomen?
nee sorry
er staat alleen een while in index.php
het is mij echt een raadsel
er staat alleen een while in index.php
het is mij echt een raadsel
Cool!
Ik wist niet dat je functies binnen functies kan defineren.
*hint*
Ik wist niet dat je functies binnen functies kan defineren.
*hint*
Haha bedankt 't werkte inderdaad niet
Ik heb nu 3 aparte functies gemaakt en dat werkt super =)
Ik heb nu 3 aparte functies gemaakt en dat werkt super =)
Volgende keer wat beter inspringen... Dan had je het waarschijnlijk direct gezien :)



