# [SOLVED] Help with C# [Displaying Scores]



## konradgoat

_I am having some problems, adding scores from four questions. How do I set-up the if for those answers. They need to have specified text in various ways to get marked properly. I am also having a problem displaying the score in the label. My questions are split up into tabpages For the label I have:_












> label61.Text("Score " score.ToString();













*Here is the code at the top of my program:*



> namespace Quiz
> {
> public partial class Form1 : Form
> {
> int score;
> public Form1()
> {
> InitializeComponent();
> }


This is how I add up all the scores: When you click finish button on the last page.



> private void button21_Click(object sender, EventArgs e)
> {
> score = 0;
> if (radioButton4.Checked) score++;
> if (checkBox2.Checked) score++;
> if (checkBox7.Checked) score++;
> if (checkBox13.Checked) score++;
> if (checkBox10.Checked) score++;
> if (radioButton8.Checked) score++;
> if (checkBox14.Checked) score++;
> if (checkBox17.Checked) score++;
> if (checkBox19.Checked) score++;
> if (checkBox20.Checked) score++;
> if (checkBox22.Checked) score++;
> if (checkBox25.Checked) score++;
> if (checkBox26.Checked) score++;
> if (checkBox28.Checked) score++;
> if (radioButton15.Checked) score++;
> if (radioButton14.Checked) score++;
> if (radioButton23.Checked) score++;
> if (radioButton12.Checked) score++;
> if (radioButton13.Checked) score++;
> if (radioButton20.Checked) score++;
> if (checkBox30.Checked) score++;
> if (checkBox32.Checked) score++;
> if (checkBox35.Checked) score++;
> if (radioButton27.Checked) score++;
> if (radioButton30.Checked) score++;
> if (radioButton35.Checked) score++;
> if (radioButton38.Checked) score++;
> if (radioButton42.Checked) score++;
> if (radioButton46.Checked) score++;
> if (radioButton50.Checked) score++;
> tabControl1.SelectedTab = tabPage22;
> }


I have been trying to fix this problem for a while


----------



## niemiro

*Re: Help with C# [Displaying Scores]*

Hello!

What you have done so far is excellent! Really well done! 

As for fixing it up, the post of Visual Studio with the 4 errors needs to have 



Code:


label61.Text("Score: " + score.ToString());

replaced with 



Code:


label61.Text = "Score: " + score.ToString();

Basically, brackets are used for methods (blocks of code) and equal signs are used for variables.

Also, technically, there is no need to use .ToString() in this case, because it will be done automatically for you, but it is not wrong :dance:

As for marking text based answers:



Code:


if (radioButton4.Checked) score++;

is shorthand for 



Code:


if (radioButton4.Checked == true) score++;

.

Therefore, for text based variables, 



Code:


if (textBox1.Text == "Local Area Network") score++;

is how you would do it. 

To avoid confusion, a single equals sign (=) is used for *setting* data (set variable x to 5), whereas two equal signs (==) is used for *getting* data (IF variable x equals 5, do this and that).

If you have any further questions or problems, I would be more than willing to help! I am also more than willing to explain sections of this post, or anything related, which you don't understand 

Richard


----------



## konradgoat

*Re: Help with C# [Displaying Scores]*



niemiro said:


> Hello!
> 
> What you have done so far is excellent! Really well done!
> 
> As for fixing it up, the post of Visual Studio with the 4 errors needs to have
> 
> 
> 
> Code:
> 
> 
> label61.Text("Score: " + score.ToString());
> 
> replaced with
> 
> 
> 
> Code:
> 
> 
> label61.Text = "Score: " + score.ToString();
> 
> Basically, brackets are used for methods (blocks of code) and equal signs are used for variables.
> 
> Also, technically, there is no need to use .ToString() in this case, because it will be done automatically for you, but it is not wrong :dance:
> 
> As for marking text based answers:
> 
> 
> 
> Code:
> 
> 
> if (radioButton4.Checked) score++;
> 
> is shorthand for
> 
> 
> 
> Code:
> 
> 
> if (radioButton4.Checked == true) score++;
> 
> .
> 
> Therefore, for text based variables,
> 
> 
> 
> Code:
> 
> 
> if (textBox1.Text == "Local Area Network") score++;
> 
> is how you would do it.
> 
> To avoid confusion, a single equals sign (=) is used for *setting* data (set variable x to 5), whereas two equal signs (==) is used for *getting* data (IF variable x equals 5, do this and that).
> 
> If you have any further questions or problems, I would be more than willing to help! I am also more than willing to explain sections of this post, or anything related, which you don't understand
> 
> Richard


Ok. So if I have like

Someone could type

Local Area Network, they could also do local area network

Do you need two:



Code:


if (textBox1.Text == "Local Area Network") score++;




Code:


if (textBox1.Text == "local area network") score++;

or could you have



Code:


if (textBox1.Text == "local area connection", "Local Area Connection") score++;


----------



## niemiro

*Re: Help with C# [Displaying Scores]*

Hello again!

Yes, this is a problem. It has to be exactly the same. Differing capital letters, for example, will make the answer different. You need to make them separate, using the OR symbol, two vertical bars (||).



Code:


if (textBox1.Text == "Local Area Network" || textBox1.Text == "local area network") score++

However, I might be able to help some.

.Trim() removes all leading and trailing whitespace (so if a student adds an extra space at the end, it will be removed)

.ToLower() returns a string with every character in lower case, so that it becomes case insensitive (technically speaking, and it honestly doesn't matter at this level, you are supposed to use .ToUpperInvarient() to be culture neutral, or use a string comparison method. I shall just tell you, so someone doesn't grill me , but I wouldn't worry about it, if I were you)

Therefore, use this code:



Code:


if (textBox1.Text.Trim().ToLower() == "local area network") score++

Nothing is perfect, but this is slightly better.

Now, you must ensure that there are never any capital letters in the answer, otherwise a question can never be marked correct, and there is never any leading or trailing whitespace.

I hope this helps.

Richard


----------



## konradgoat

*Re: Help with C# [Displaying Scores]*

So you can have:



Code:


if (textBox1.Text.Trim().ToLower() == "local area network" || "Local Area Network") score++

or should I just leave it in lowercase without using the "||"


----------



## konradgoat

*Re: Help with C# [Displaying Scores]*

I also need a timer when they start the quiz when they press the first button on the first tabpage. It needs to be 30mins then after it will tell you that you have 15 mins left, then 5 mins (Maybe if possible). It will then move over to the last tabpage, showing their scores. As at the moment the scores are calculated when you press the finish button.

This information of the student on the first page and their answers need to go into a database. How do I do this?


----------



## niemiro

*Re: Help with C# [Displaying Scores]*

Hello again!

Sadly, 



Code:


== "local area network" || "Local Area Network"

doesn't work. It is a pain, but you have to write it out in full:


Code:


if (textBox1.Text == "Local Area Network" || textBox1.Text == "local area network") score++

because otherwise it is read as 



Code:


if (textBox1.Text == "Local Area Network" || "local area network" == true) score++

which doesn't make sense in this context. 

You need to do EITHER: 



Code:


if (textBox1.Text == "Local Area Network" || textBox1.Text == "local area network") score++

which will mark "LOCAL Area Network" as INCORRECT, 

OR


Code:


if (textBox1.Text.Trim().ToLower() == "local area network") score++

which will mark the above as correct, because it doesn't care about case at all, so "LoCaL ArEa nEtWoRk" is also correct. 

You either supply multiple answers, or you convert to lower case, and supply one answer.

Richard


----------



## konradgoat

*Re: Help with C# [Displaying Scores]*

With the timer

It will need to show on every tabpage a dynamic clock, starting from 00:30:00 ticking down.


----------



## niemiro

*Re: Help with C# [Displaying Scores]*



konradgoat said:


> With the timer
> 
> It will need to show on every tabpage a dynamic clock, starting from 00:30:00 ticking down.


Hello again!

Firstly, at the moment, you have a tab control which is dragged down the entire length of the form. Drag this up a little, so that there is a space below the tab control. You can place the time here, and it will then be independent of whichever tab is selected. If you want, you could place it at the top, or anywhere else, or even a separate label for each page of the tab control.

Into this space, drag a new label. Note down its name (label1 for this example). Change its text to be "Time remaining: 00:30:00" (or whatever text and start time you want - however, this will be overriden after the first second. It controls nothing. It only makes you program look professional for the first second. An alternative is an empty label1.Text property here)

Leave that now.

Drag on a new timer control, if you don't already have one. In this case, timer1.

See it at the bottom of the screen. Single click on it, and modify its properties. Change:

Enabled --> true
Inverval --> 1000 

(interval is in milliseconds, how often the clock will tick. You want it to tick once a second.)

Now double click on timer1 at the bottom of Visual Studio, and you will be taken to the code.

Paste in this:



Code:


tick_count--;

if (tick_count == 0)
{
    // Time's up! Want help writing this bit? Tell me what you want to happen when the time runs out.
}

TimeSpan t = TimeSpan.FromSeconds(tick_count);  
label1.Text = string.Format("Time remaining: {0:D2}h:{1:D2}m:{2:D2}s", t.Hours, t.Minutes, t.Seconds);

Finally, replace:



Code:


namespace Quiz
{
    public partial class Form1 : Form 
    {
        int score;

        public Form1()
        {
            InitializeComponent();
        } 
    ...
    }
}

with:



Code:


namespace Quiz
{
    public partial class Form1 : Form 
    {
        int score;

        // Number of seconds students have to complete the task.
        double tick_count = 1800;

        public Form1()
        {
            InitializeComponent();
        } 
    ...
    }
}

I hope this helps.

Richard


----------



## konradgoat

*Re: Help with C# [Displaying Scores]*



> Now double click on timer1 at the bottom of Visual Studio, and you will be taken to the code.
> 
> Paste in this:
> 
> 
> 
> Code:
> 
> 
> tick_count--;
> 
> if (tick_count == 0)
> {
> // Time's up! Want help writing this bit? Tell me what you want to happen when the time runs out.
> }
> 
> TimeSpan t = TimeSpan.FromSeconds(tick_count);
> label1.Text = string.Format("Time remaining: {0:D2}h:{1:D2}m:{2:D2}s", t.Hours, t.Minutes, t.Seconds);


*This is what happended when I ran the test, The label at the bottom needs to show the timer pattern and not in the middle of the test. The timer will have to start as soon as the user clicks 'start'. The logo at the top is a test logo and wont be the final product.
*










When the time is up, I need it to switch to tabpage22 where it will also add up the scores even if they are middle in the quiz and they dont have to click finish test. It will just move to the page and display their score or something along those lines

--

I'll design a page where when they click Print results it will print their results they got which I have no idea how to do

Then I'll need to hook up their names and information and their results into a database.

If possible, I need the date to be added into the database of when they took the test if that is possible.

This is not an assignment, just a personal test which my students will take and I can see how they are doing. This was my idea and I have tried to build it myself. This will be stored on my laptop


----------



## niemiro

*Re: Help with C# [Displaying Scores]*

Hello again!

Right, to start with, you need to change this line:



Code:


[B]label1[/B].Text = string.Format("Time remaining: {0:D2}h:{1:D2}m:{2:D2}s", t.Hours, t.Minutes, t.Seconds);

from label1 to whatever label you have just dragged onto the form. You need to change the number. 

Then, go back to timer1's properties, and set it to Disabled. 

Inside your start button's event, add this line:



Code:


timer1.Start();

That should solve that problem. 

Then, within the time's up if statement in my last bit of code, insert this:



Code:


            foreach (TabPage page in tabControl1.TabPages)
            {
                if (page != tabPage1 && page != tabPage22)
                {
                    foreach (Control innerControl in page.Controls)
                    {
                        innerControl.Enabled = false;
                    }
                }
            }

tabControl1.SelectedIndex = 21;
Generate_Score();

One final thing to make it work:

Go to your button21_Click event, and highlight the entire contents. Near to File, click on Refactor > Extract Method...

Give the method a name "Generate_Score", or a different name, and remember to modify my code to the new name.

I hope this helps.

Richard


----------



## konradgoat

*Re: Help with C# [Displaying Scores]*



niemiro said:


> Hello again!
> 
> Right, to start with, you need to change this line:
> 
> 
> 
> Code:
> 
> 
> [B]label1[/B].Text = string.Format("Time remaining: {0:D2}h:{1:D2}m:{2:D2}s", t.Hours, t.Minutes, t.Seconds);
> 
> from label1 to whatever label you have just dragged onto the form. You need to change the number.
> 
> Then, go back to timer1's properties, and set it to Disabled.
> 
> Inside your start button's event, add this line:
> 
> 
> 
> Code:
> 
> 
> timer1.Start();
> 
> That should solve that problem.
> 
> Then, within the time's up if statement in my last bit of code, insert this:
> 
> 
> 
> Code:
> 
> 
> foreach (TabPage page in tabControl1.TabPages)
> {
> if (page != tabPage1 && page != tabPage22)
> {
> foreach (Control innerControl in page.Controls)
> {
> innerControl.Enabled = false;
> }
> }
> }
> 
> tabControl1.SelectedIndex = 21;
> Generate_Score();
> 
> One final thing to make it work:
> 
> Go to your button21_Click event, and highlight the entire contents. Near to File, click on Refactor > Extract Method...
> 
> Give the method a name "Generate_Score", or a different name, and remember to modify my code to the new name.
> 
> I hope this helps.
> 
> Richard


For the moment, when you press Test code or w.e - It starts the timer before I click start.

This is in my start button:



Code:


        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Start();
            tabControl1.SelectedTab = tabPage2;
        }

Also. What do you mean by this:



> One final thing to make it work:
> 
> Go to your button21_Click event, and highlight the entire contents. *Near to File, click on Refactor > Extract Method...*
> 
> *Give the method a name "Generate_Score"*, or a different name, *and remember to modify my code to the new name.*
> 
> I hope this helps.
> 
> Richard


Basically. The highligted information

Do you need to have all of this or just from score = 0; to tabControl1.SelectedTab = tabPage22;



Code:


private void button21_Click(object sender, EventArgs e)
        {
            //Redesign Question 10
            //Redesign Question 3
            //Have more textbox questions
            //Timer needs setting up
            //Database needs setting up
            score = 0;
            if (radioButton4.Checked) score++;
            if (checkBox2.Checked) score++;
            if (checkBox7.Checked) score++;
            if (checkBox13.Checked) score++;
            if (checkBox10.Checked) score++;
            if (radioButton8.Checked) score++;
            if (checkBox14.Checked) score++;
            if (checkBox17.Checked) score++;
            if (checkBox19.Checked) score++;
            if (checkBox20.Checked) score++;
            if (checkBox22.Checked) score++;
            if (checkBox25.Checked) score++;
            if (checkBox26.Checked) score++;
            if (checkBox28.Checked) score++;
            if (checkBox30.Checked) score++;
            if (checkBox32.Checked) score++;
            if (checkBox35.Checked) score++;
            if (radioButton27.Checked) score++;
            if (radioButton30.Checked) score++;
            if (radioButton35.Checked) score++;
            if (radioButton38.Checked) score++;
            if (radioButton42.Checked) score++;
            if (radioButton46.Checked) score++;
            if (radioButton50.Checked) score++;
            if (textBox6.Text == "Graphic User Interface" || textBox6.Text == "Graphical User Interface" || textBox6.Text == "graphical user interface" || textBox6.Text == "graphic user interface" || textBox6.Text == "Graphic user interface" || textBox6.Text == "Graphical user interface") score++;
            if (textBox7.Text.Trim().ToLower() == "power supply unit") score++;
            if (textBox8.Text.Trim().ToLower() == "central processing unit") score++;
            if (textBox9.Text.Trim().ToLower() == "excel") score++;
            if (textBox10.Text.Trim().ToLower() == "table") score++;
            if (textBox11.Text.Trim().ToLower() == "columns") score++;
            if (textBox12.Text.Trim().ToLower() == "students") score++;
            if (textBox13.Text.Trim().ToLower() == "information") score++;
            if (textBox14.Text.Trim().ToLower() == "wide area network") score++;
            if (textBox15.Text.Trim().ToLower() == "local area network") score++;
            if (textBox16.Text.Trim().ToLower() == "wired equivalent privacy") score++;
            if (textBox17.Text.Trim().ToLower() == "internet service provider") score++;
            if (textBox18.Text.Trim().ToLower() == "domain name system") score++;
            label61.Text = "Score: " + score.ToString();
            tabControl1.SelectedTab = tabPage22;
        }


----------



## niemiro

*Re: Help with C# [Displaying Scores]*

Hello again!

Did you remember to disable the timer, or is there some other bug which needs killing? 

Also, sorry about the ambiguous instructions. Basically, it is the menu bar: the one at the very top of the screen with: File, Edit, View, Refactor, Project, etc. etc. in Visual Studio.

Drop down Repactor and you will find "Extract Method...".

You need to select everything inside the parantheses, but not the parantheses themselves. Basically, highlight everything in bold below, but nothing else. Red text should NOT be included in the highlighting. 



Code:


private void button21_Click(object sender, EventArgs e)
        {
[B]            //Redesign Question 10
            //Redesign Question 3
            //Have more textbox questions
            //Timer needs setting up
            //Database needs setting up
            score = 0;
            if (radioButton4.Checked) score++;
            if (checkBox2.Checked) score++;
            if (checkBox7.Checked) score++;
            if (checkBox13.Checked) score++;
            if (checkBox10.Checked) score++;
            if (radioButton8.Checked) score++;
            if (checkBox14.Checked) score++;
            if (checkBox17.Checked) score++;
            if (checkBox19.Checked) score++;
            if (checkBox20.Checked) score++;
            if (checkBox22.Checked) score++;
            if (checkBox25.Checked) score++;
            if (checkBox26.Checked) score++;
            if (checkBox28.Checked) score++;
            if (checkBox30.Checked) score++;
            if (checkBox32.Checked) score++;
            if (checkBox35.Checked) score++;
            if (radioButton27.Checked) score++;
            if (radioButton30.Checked) score++;
            if (radioButton35.Checked) score++;
            if (radioButton38.Checked) score++;
            if (radioButton42.Checked) score++;
            if (radioButton46.Checked) score++;
            if (radioButton50.Checked) score++;
            if (textBox6.Text == "Graphic User Interface" || textBox6.Text == "Graphical User Interface" || textBox6.Text == "graphical user interface" || textBox6.Text == "graphic user interface" || textBox6.Text == "Graphic user interface" || textBox6.Text == "Graphical user interface") score++;
            if (textBox7.Text.Trim().ToLower() == "power supply unit") score++;
            if (textBox8.Text.Trim().ToLower() == "central processing unit") score++;
            if (textBox9.Text.Trim().ToLower() == "excel") score++;
            if (textBox10.Text.Trim().ToLower() == "table") score++;
            if (textBox11.Text.Trim().ToLower() == "columns") score++;
            if (textBox12.Text.Trim().ToLower() == "students") score++;
            if (textBox13.Text.Trim().ToLower() == "information") score++;
            if (textBox14.Text.Trim().ToLower() == "wide area network") score++;
            if (textBox15.Text.Trim().ToLower() == "local area network") score++;
            if (textBox16.Text.Trim().ToLower() == "wired equivalent privacy") score++;
            if (textBox17.Text.Trim().ToLower() == "internet service provider") score++;
            if (textBox18.Text.Trim().ToLower() == "domain name system") score++;
            label61.Text = "Score: " + score.ToString();
            tabControl1.SelectedTab = tabPage22;[/B]
        }

With all this highlighted, selected Refactor > Extract Method..., and in the self explanatory box which pops up, give the new method a name of "Generate_Score". Magic will happen. Don't worry too much about all the details for the time being. 

Richard


----------



## konradgoat

*Re: Help with C# [Displaying Scores]*

If I change that code or add stuff what will I need to do. Will I need to refract it?


----------



## niemiro

*Re: Help with C# [Displaying Scores]*



konradgoat said:


> If I change that code or add stuff what will I need to do. Will I need to refract it?


Hello again!

Do you know what a method is? Basically, it is a block of code. 

It is a very bad idea to copy and paste the same code into another part of your project. If you make a change to one, but forget to update the other, and things get out of sink, very strange bugs can occur. It is better to keep one central copy of the code, in a code block or method, and then you only have to update one piece of code.

In your case, you need to score the student from two places: the "time's up" event, and the "finished" button event. 

The refactor button converts everything which is highlighted into a separate code block. 

When you want to update your scoring system, just modify the code inside the code block.

Do not worry about this. I promise that it will be completely self explanatory when you refactor your code. Once you have done it, all will make sense.

Richard


----------



## konradgoat

*Re: Help with C# [Displaying Scores]*

I have a question about a general project, I have a community which evolves around SAMP (Gta SA) and IVMP (Gta 4). I want to have a C# test online, They take the tests and have it stored in a database or something online. How would i go around doing that. IP's will be logged and the date of time they took it.

What type of hosting do you need extra

[Back to my current project]

Ok, What I need now is:

I have a print button, which will allow them to print the results tabpage out or something along those lines. What do I need here.

Also,

The firstname, Surname, College ID* (Not Required field), Department, Age, Result, Date taken* (It this could be automatic) needs to be recorded into a very simple database. How will I need to do this.


----------



## konradgoat

*Re: Help with C# [Displaying Scores]*

Added for above:

If I have a textbox, how do I show in a label whatever they have typed in a textbox. I have tried doing it and I have failed doing it.


----------



## niemiro

*Re: Help with C# [Displaying Scores]*



konradgoat said:


> Added for above:
> 
> If I have a textbox, how do I show in a label whatever they have typed in a textbox. I have tried doing it and I have failed doing it.


Hello again!

Well, the code you need is 



Code:


label1.Text = textBox1.Text;

Where you put that code varies. Maybe when you click a button.

Maybe when you click outside of the textBox (it loses focus). Use the *Leave* event. 

Maybe you want it in real time. Use the *TextChanged* event.

I shall respond to your other post now.

Richard


----------



## niemiro

*Re: Help with C# [Displaying Scores]*



konradgoat said:


> I have a question about a general project, I have a community which evolves around SAMP (Gta SA) and IVMP (Gta 4). I want to have a C# test online, They take the tests and have it stored in a database or something online. How would i go around doing that. IP's will be logged and the date of time they took it.
> 
> What type of hosting do you need extra
> 
> [Back to my current project]
> 
> Ok, What I need now is:
> 
> I have a print button, which will allow them to print the results tabpage out or something along those lines. What do I need here.
> 
> Also,
> 
> The firstname, Surname, College ID* (Not Required field), Department, Age, Result, Date taken* (It this could be automatic) needs to be recorded into a very simple database. How will I need to do this.


Hello again.

These questions are very broad. I can't give a specific answer to such broad questions. Can I please recommend that you search Google for tutorials, or read a book on C#. However, as a starting point, there is an extremely good tutorial on printing basic text from C# here: Printing In C# - C# Tutorials | Dream.In.Code

For more advanced printing, see this tutorial: How to Print Invoice using C#? - CodeProject®

As for accessing a database, modern version of C# offer something called Linq which is worth investigating. For an introduction to Linq to SQL, see here: LINQ to SQL: .NET Language-Integrated Query for Relational Data

However, it is not limited to only SQL. There are many forms of Linq, extending right out to Linq to XML. 

However, I will admit that database access and design is not my strongest area. I shall ask one of my colleagues more familiar with databases to drop in and offer a few pearls of wisdom.

As for the question about the other project, I would advise you to learn C# well before attempting anything too big. I cannot write all of your projects for you. Read a book, and attempt something like this when you have a year or so's experience, and not just a week. I would advise you to check out the latest "Getting started" thread at the top of this Programming forum for some good, general, information.

However, since you want to write in C# (for better or for worse), you need to look at getting hosting which supports Asp.Net, and probably SQL as well. 

Richard


----------



## konradgoat

*Re: Help with C# [Displaying Scores]*

Those links do not work


----------



## niemiro

*Re: Help with C# [Displaying Scores]*



konradgoat said:


> Those links do not work


Hello again.

Do you mean that technically, they do not work, or you cannot understand them?

They work fine for me. Just in case, here are the un-HTML-ified (what a word!) URLs:

http://www.dreamincode.net/forums/topic/44330-printing-in-c%23/
http://www.codeproject.com/KB/cs/PrintInvoice_CS.aspx
http://msdn.microsoft.com/en-us/library/bb425822.aspx

If you can't understand those links, and it is more than one or two specific questions, more study is required, I feel :thumb:

Richard


----------



## konradgoat

*Re: Help with C# [Displaying Scores]*

Just a general question:

If I had two forms, one is where they fill in the information and when they press start it moves onto the next form and starts the timer. This seems to act very strange and the answers are not working out correctly on a form like that.

I am going to switch back, but I am just wandering how you would fix that.


----------



## konradgoat

*Re: Help with C# [Displaying Scores]*

Ive given up on MySQL project. I couldn't get it to work but thanks for helping me get the program to actually work.


----------

