0% found this document useful (0 votes)
1 views34 pages

Cocoa Application Tutorial pdf download

The document provides a tutorial for developing Cocoa applications, focusing on creating a currency converter app using Xcode. It covers essential topics such as the MVC design pattern, project creation, model and view definitions, and application configuration. Additionally, it includes references to various related resources and ebooks available for download.

Uploaded by

fiyazaxamit
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1 views34 pages

Cocoa Application Tutorial pdf download

The document provides a tutorial for developing Cocoa applications, focusing on creating a currency converter app using Xcode. It covers essential topics such as the MVC design pattern, project creation, model and view definitions, and application configuration. Additionally, it includes references to various related resources and ebooks available for download.

Uploaded by

fiyazaxamit
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 34

Cocoa Application Tutorial download

https://ebookbell.com/product/cocoa-application-tutorial-2463144

Explore and download more ebooks at ebookbell.com


Here are some recommended products that we believe you will be
interested in. You can click the link to download.

Inside Mac Os X Developing Cocoa Objectivec Applications A Tutorial

https://ebookbell.com/product/inside-mac-os-x-developing-cocoa-
objectivec-applications-a-tutorial-1351470

Building Cocoa Applications A Stepbystep Guide 1st Edition Simson


Garfinkel

https://ebookbell.com/product/building-cocoa-applications-a-
stepbystep-guide-1st-edition-simson-garfinkel-1200818

Combinatorial Optimization And Applications 14th International


Conference Cocoa 2020 Dallas Tx Usa December 1113 Proceedings Weili Wu

https://ebookbell.com/product/combinatorial-optimization-and-
applications-14th-international-conference-cocoa-2020-dallas-tx-usa-
december-1113-proceedings-weili-wu-21965114

Combinatorial Optimization And Applications 5th International


Conference Cocoa 2011 Zhangjiajie China August 46 2011 Proceedings 1st
Edition Zhixiang Chen

https://ebookbell.com/product/combinatorial-optimization-and-
applications-5th-international-conference-cocoa-2011-zhangjiajie-
china-august-46-2011-proceedings-1st-edition-zhixiang-chen-2470906
Combinatorial Optimization And Applications 4th International
Conference Cocoa 2010 Kailuakona Hi Usa December 1820 2010 Proceedings
Part I 1st Edition Matthieu Latapy

https://ebookbell.com/product/combinatorial-optimization-and-
applications-4th-international-conference-cocoa-2010-kailuakona-hi-
usa-december-1820-2010-proceedings-part-i-1st-edition-matthieu-
latapy-4140940

Combinatorial Optimization And Applications 4th International


Conference Cocoa 2010 Kailuakona Hi Usa December 1820 2010 Proceedings
Part Ii 1st Edition Brad Ballinger

https://ebookbell.com/product/combinatorial-optimization-and-
applications-4th-international-conference-cocoa-2010-kailuakona-hi-
usa-december-1820-2010-proceedings-part-ii-1st-edition-brad-
ballinger-4140942

Combinatorial Optimization And Applications 6th International


Conference Cocoa 2012 Banff Ab Canada August 59 2012 Proceedings 1st
Edition Jing Selena He

https://ebookbell.com/product/combinatorial-optimization-and-
applications-6th-international-conference-cocoa-2012-banff-ab-canada-
august-59-2012-proceedings-1st-edition-jing-selena-he-4140944

Combinatorial Optimization And Applications 7th International


Conference Cocoa 2013 Chengdu China December 1214 2013 Proceedings 1st
Edition Zhizhong Chen

https://ebookbell.com/product/combinatorial-optimization-and-
applications-7th-international-conference-cocoa-2013-chengdu-china-
december-1214-2013-proceedings-1st-edition-zhizhong-chen-4601986

Combinatorial Optimization And Applications Third International


Conference Cocoa 2009 Huangshan China June 1012 2009 Proceedings 1st
Edition Jianping Li

https://ebookbell.com/product/combinatorial-optimization-and-
applications-third-international-conference-cocoa-2009-huangshan-
china-june-1012-2009-proceedings-1st-edition-jianping-li-4606324
Cocoa Application Tutorial
General

2009-08-03
dealer, agent, or employee is authorized to make
any modification, extension, or addition to this
Apple Inc. warranty.
© 2009 Apple Inc. Some states do not allow the exclusion or limitation
All rights reserved. of implied warranties or liability for incidental or
consequential damages, so the above limitation or
exclusion may not apply to you. This warranty gives
No part of this publication may be reproduced, you specific legal rights, and you may also have
stored in a retrieval system, or transmitted, in other rights which vary from state to state.
any form or by any means, mechanical,
electronic, photocopying, recording, or
otherwise, without prior written permission of
Apple Inc., with the following exceptions: Any
person is hereby authorized to store
documentation on a single computer for
personal use only and to print copies of
documentation for personal use provided that
the documentation contains Apple’s copyright
notice.
The Apple logo is a trademark of Apple Inc.
No licenses, express or implied, are granted
with respect to any of the technology described
in this document. Apple retains all intellectual
property rights associated with the technology
described in this document. This document is
intended to assist application developers to
develop applications only for Apple-labeled
computers.
Apple Inc.
1 Infinite Loop
Cupertino, CA 95014
408-996-1010

.Mac is a registered service mark of Apple Inc.


Apple, the Apple logo, AppleScript, AppleScript
Studio, Carbon, Cocoa, eMac, Finder, iTunes,
Mac, Mac OS, Macintosh, Objective-C, Quartz,
and Xcode are trademarks of Apple Inc.,
registered in the United States and other
countries.
Smalltalk-80 is a trademark of ParcPlace
Systems.
UNIX is a registered trademark of The Open
Group
Even though Apple has reviewed this document,
APPLE MAKES NO WARRANTY OR REPRESENTATION,
EITHER EXPRESS OR IMPLIED, WITH RESPECT TO
THIS DOCUMENT, ITS QUALITY, ACCURACY,
MERCHANTABILITY, OR FITNESS FOR A PARTICULAR
PURPOSE. AS A RESULT, THIS DOCUMENT IS
PROVIDED “AS IS,” AND YOU, THE READER, ARE
ASSUMING THE ENTIRE RISK AS TO ITS QUALITY
AND ACCURACY.
IN NO EVENT WILL APPLE BE LIABLE FOR DIRECT,
INDIRECT, SPECIAL, INCIDENTAL, OR
CONSEQUENTIAL DAMAGES RESULTING FROM ANY
DEFECT OR INACCURACY IN THIS DOCUMENT, even
if advised of the possibility of such damages.
THE WARRANTY AND REMEDIES SET FORTH ABOVE
ARE EXCLUSIVE AND IN LIEU OF ALL OTHERS, ORAL
OR WRITTEN, EXPRESS OR IMPLIED. No Apple
Contents

Introduction Introduction to Cocoa Application Tutorial 9

Organization of This Document 9


Goals for Learning 9
Prerequisites 10
See Also 10

Chapter 1 The Essence of Cocoa 11

What Is Cocoa? 11
Classes and Objects 11
The MVC Design Pattern 12
Model Objects 12
View Objects 12
Controller Objects 13
Hybrid Models 13
The Currency Converter Application 13

Chapter 2 Creating a Project in Xcode 15

Open Xcode 15
Make a New Project 15
Choose the New Project Command 15
Choose a Project Type 16
The Xcode Project Interface 17
What’s Next? 18

Chapter 3 Defining the Model 19

Specify the Model Class 19


Declare the Model Interface 20
Declare Instance Variables 20
Declared Properties and Accessor Methods 20
Declare the Model Method: convertCurrency 21
Implementing the Model 22
Define the convertCurrency Method 22
What’s Next? 22

Chapter 4 Defining the View: Building the User Interface 23

User Interface Elements and Interface Builder 23


What Is a Nib File? 23

3
2009-08-03 | © 2009 Apple Inc. All Rights Reserved.
CONTENTS

Windows and Menus in Cocoa 24


Creating the Currency Converter Window 25
Create the Window 25
Resize the Window 25
Changing the Title of the Window 27
Add the Text Fields 27
Assign Labels to the Fields 29
Change the Text Field Attributes 31
Configure a Button 31
Add a Separator to Group Controls 32
Refining the Layout and View Functionality 33
Aligning Objects in a Window 33
Finalize the Window Size 34
Enable Tabbing Between Text Fields 35
Set the First Responder Text Field 36
Test the Interface 37
What’s Next? 38

Chapter 5 Bridging the Model and View: The Controller 39

Paths for Object Communication: Outlets, Targets, and Actions 39


Outlets 39
Target/Action in Interface Builder 40
Which Direction to Connect? 41
Defining the Controller Class 42
Defining the Outlets for the ConverterController Class 42
Declare the Controller Method 42
Interconnecting the Controller with the View 43
Add the ConverterController Class to Your Nib File 43
Connect the ConverterController Instance to the Text Fields 45
Connect the Convert Button to the Appropriate Methods 46
Check Your Work 46
Connecting the Controller to the Model 47
Garbage Collection 48
What’s Next? 49

Chapter 6 Building and Running Your Application 51

Build the Application 51


Extra: Check Out the Documentation 51
Run the Application 52
Correct Build Errors 52
Great Job! 52
What’s Next? 53

4
2009-08-03 | © 2009 Apple Inc. All Rights Reserved.
CONTENTS

Chapter 7 Configuring Your Application 55

The Info.plist File 55


Basic Project Attributes 55
Specify the Identifier, Version, and Copyright Information 58
Create an Icon File 61
What’s Next? 65

Chapter 8 Expanding on the Basics 67

For Free with Cocoa 67


Application and Window Behavior 67
Controls and Text 67
Menu Commands 68
Document Management 68
File Management 68
Communicating with Other Applications 69
Custom Drawing and Animation 69
Internationalization 69
Editing Support 69
Printing 69
Help 70
Plug-in Architecture 70
Turbo Coding with Xcode 70
Project Find 70
Code Sense and Code Completion 70
Integrated Documentation Viewing 70
Indentation 71
Delimiter Checking 71
Emacs Bindings 71

Appendix A Objective-C Quick Reference Guide 73

Messages and Method Implementations 73


Declarations 74

Document Revision History 75

5
2009-08-03 | © 2009 Apple Inc. All Rights Reserved.
CONTENTS

6
2009-08-03 | © 2009 Apple Inc. All Rights Reserved.
Figures and Listings

Chapter 1 The Essence of Cocoa 11

Figure 1-1 An object 12


Figure 1-2 Object relationships in the Model-View-Controller paradigm 12

Chapter 2 Creating a Project in Xcode 15

Figure 2-1 The Xcode application icon 15


Figure 2-2 The New Project Assistant in Xcode 16
Figure 2-3 The new Currency Converter project in Xcode 17

Chapter 3 Defining the Model 19

Listing 3-1 Declaration of the member variables in Converter.h 20


Listing 3-2 Definition of the convertCurrency method in Converter.m 22

Chapter 4 Defining the View: Building the User Interface 23

Figure 4-1 Resizing a window manually 26


Figure 4-2 Resizing a window with the inspector 27
Figure 4-3 Cocoa Views and Cells in the Interface Builder Library window 28
Figure 4-4 Resizing a text field 29
Figure 4-5 Right aligning a text label in Interface Builder 30
Figure 4-6 Text fields and labels in the Currency Converter window 31
Figure 4-7 Measuring distances in Interface Builder 32
Figure 4-8 Adding a horizontal line to the Currency Converter window 33
Figure 4-9 The Currency Converter final user interface in Interface Builder 35
Figure 4-10 Connecting nextKeyView outlets in Interface Builder 36
Figure 4-11 Setting the initialFirstResponder outlet in Interface Builder 37

Chapter 5 Bridging the Model and View: The Controller 39

Figure 5-1 An outlet pointing from one object to another 39


Figure 5-2 Relationships in the target-action paradigm 41
Figure 5-3 A newly instantiated instance of ConverterController 44
Figure 5-4 Outlets and actions in the Converter Controller Identity inspector 45
Figure 5-5 Connecting ConverterController to the rateField outlet 46
Figure 5-6 Checking the outlet connections 47
Listing 5-1 Definition of the convert: method in ConverterController.m 48

7
2009-08-03 | © 2009 Apple Inc. All Rights Reserved.
FIGURES AND LISTINGS

Chapter 7 Configuring Your Application 55

Figure 7-1 Benefits of using application identifiers 56


Figure 7-2 Build and release version numbers in Finder preview panes and About windows
57
Figure 7-3 Locating the application bundle from the Dock 60
Figure 7-4 Application properties as seen by the user 61
Figure 7-5 Dragging c_conv512.png to the icon file editor 62
Figure 7-6 Icon file editor with icon images and icon masks at several resolutions 63
Figure 7-7 Selecting the icon file to add to the Currency Converter project 64
Figure 7-8 Specifying project file-addition options 64
Figure 7-9 Currency Converter sporting an elegant icon 65

8
2009-08-03 | © 2009 Apple Inc. All Rights Reserved.
Other documents randomly have
different content
and-seek with . So many nice
hiding-places—under the -
bushes, behind the rain- , and
around the by the .
At last remembered her hole
in the and crept in, with the
which followed her
everywhere. Then they waited,
keeping very still, till by and by
grew sleepy—for it was
almost -time. She laid her
on the 's soft neck, as they
cuddled down together in their
, and before they knew it
they were fast asleep! hunted
and hunted, till she thought
must have gone in
the , to play a
trick on her; so she
went into her own
a little
vexed. -time came
and her came to the
to call Mary in. "I
guess she's gone home
with Hannah," said , as he
came from the with his .
The often slept together, and
Mary's mother didn't hear the "I
guess," so she only said "It is
naughty to go without telling me.
She mustn't again." So nobody
knew where was, all night!
But next morning she didn't come
home—she was not at 's—and
how frightened everybody was!
They hunted everywhere, and at
last started to drive to the
neighbor's . The noise of the
and of the trampling on
the waked Mary—and how
astonished everybody was, when
she and the came creeping out
of the !
XI.

Once little Mary and her lamb


really did get lost—and something
dreadful almost happened! They
had been picking in the
up Clover , and couldn't
find the way out. The was
setting, and thought of
and ! She was tired and
hungry, too. She was eating
from her , and crying, and the
, who would not eat and
wanted his milk in
the old was
crying, too—"Ba-a-
a!"—when a big, tall
with a in his
broke through the
bushes behind them. He sat down
on a and stared at them,
looking so white and scared that
felt sorry for him. "Did a
chase you?" she asked. "Oh no,"
said he, "It's only I'm so glad you
are alive!" He didn't dare tell her
he had mistaken her little brown
bobbing among the , for a
, and raised his to shoot it
when he saw a little
white bobbing
beside it and stopped
to look closer! So her
little
had saved
Mary's life—but
she never knew
it. "Now how
came you up
here?" the boy
asked. "Are you lost?" "Oh no,"
said , winking away the , and
smiling; "We aren't exactly lost—
only we can't just find our .
And we want our supper, too."
"You shall have it!" said the .
"You are little Mary—I know your
—and I'm going to carry you
there, quicker than a can
trot!" So he took in one
and the in the other, and the
he left hidden in the under
a . Then he quickly found the
(it was close by, after all,)
and in ten minutes they were safe
home again; and Mary's
thanked the big and gave them
all some supper.
XII.

Now Mary and the big with the


became great friends. He used
to bring her in his ; once
he took her out in his to
gather ; and he promised to
take her to the County Fair. Early
on that day he came for her with
his and . Mary
was all ready, in her
new , with
on her
. "Where is the ?" he
asked. " says he mustn't go,"
said Mary sadly, "so I shut him up
in the ". "Oh but he must go!"
cried the . "He's entered—they
expect him." didn't understand
that, but she was very glad to
take her dear with her. They
walked about the Fair grounds
and saw the and and
and in the ; and
visited the where the
and were, in their . And
everywhere that went the
kept close beside her; and all the
looked at them and smiled. At
last the said, "Now
we are going into the
so
we will
leave our
in
this nice little
beside all the other to wait
for us." They looked at the
and and the and in
the . Then they found Marys
and and had dinner together;
and afterward they saw the
race, and the go up, and heard
the play. It was a long time
before they went for the . Some
were looking at him, and just
as Mary ran up they fastened a
blue on his . "Oh, thank
you! How pretty!" she said.
"Hurrah!" cried the . "Our
has won first prize! That means
he's the best in town!" "Of
course!" said little . "He's the
best in the whole !"
*** END OF THE PROJECT GUTENBERG EBOOK MARY'S LITTLE
LAMB: A PICTURE GUESSING STORY FOR LITTLE CHILDREN ***

Updated editions will replace the previous one—the old editions will
be renamed.

Creating the works from print editions not protected by U.S.


copyright law means that no one owns a United States copyright in
these works, so the Foundation (and you!) can copy and distribute it
in the United States without permission and without paying
copyright royalties. Special rules, set forth in the General Terms of
Use part of this license, apply to copying and distributing Project
Gutenberg™ electronic works to protect the PROJECT GUTENBERG™
concept and trademark. Project Gutenberg is a registered trademark,
and may not be used if you charge for an eBook, except by following
the terms of the trademark license, including paying royalties for use
of the Project Gutenberg trademark. If you do not charge anything
for copies of this eBook, complying with the trademark license is
very easy. You may use this eBook for nearly any purpose such as
creation of derivative works, reports, performances and research.
Project Gutenberg eBooks may be modified and printed and given
away—you may do practically ANYTHING in the United States with
eBooks not protected by U.S. copyright law. Redistribution is subject
to the trademark license, especially commercial redistribution.

START: FULL LICENSE


THE FULL PROJECT GUTENBERG LICENSE
PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK

To protect the Project Gutenberg™ mission of promoting the free


distribution of electronic works, by using or distributing this work (or
any other work associated in any way with the phrase “Project
Gutenberg”), you agree to comply with all the terms of the Full
Project Gutenberg™ License available with this file or online at
www.gutenberg.org/license.

Section 1. General Terms of Use and


Redistributing Project Gutenberg™
electronic works
1.A. By reading or using any part of this Project Gutenberg™
electronic work, you indicate that you have read, understand, agree
to and accept all the terms of this license and intellectual property
(trademark/copyright) agreement. If you do not agree to abide by all
the terms of this agreement, you must cease using and return or
destroy all copies of Project Gutenberg™ electronic works in your
possession. If you paid a fee for obtaining a copy of or access to a
Project Gutenberg™ electronic work and you do not agree to be
bound by the terms of this agreement, you may obtain a refund
from the person or entity to whom you paid the fee as set forth in
paragraph 1.E.8.

1.B. “Project Gutenberg” is a registered trademark. It may only be


used on or associated in any way with an electronic work by people
who agree to be bound by the terms of this agreement. There are a
few things that you can do with most Project Gutenberg™ electronic
works even without complying with the full terms of this agreement.
See paragraph 1.C below. There are a lot of things you can do with
Project Gutenberg™ electronic works if you follow the terms of this
agreement and help preserve free future access to Project
Gutenberg™ electronic works. See paragraph 1.E below.
1.C. The Project Gutenberg Literary Archive Foundation (“the
Foundation” or PGLAF), owns a compilation copyright in the
collection of Project Gutenberg™ electronic works. Nearly all the
individual works in the collection are in the public domain in the
United States. If an individual work is unprotected by copyright law
in the United States and you are located in the United States, we do
not claim a right to prevent you from copying, distributing,
performing, displaying or creating derivative works based on the
work as long as all references to Project Gutenberg are removed. Of
course, we hope that you will support the Project Gutenberg™
mission of promoting free access to electronic works by freely
sharing Project Gutenberg™ works in compliance with the terms of
this agreement for keeping the Project Gutenberg™ name associated
with the work. You can easily comply with the terms of this
agreement by keeping this work in the same format with its attached
full Project Gutenberg™ License when you share it without charge
with others.

1.D. The copyright laws of the place where you are located also
govern what you can do with this work. Copyright laws in most
countries are in a constant state of change. If you are outside the
United States, check the laws of your country in addition to the
terms of this agreement before downloading, copying, displaying,
performing, distributing or creating derivative works based on this
work or any other Project Gutenberg™ work. The Foundation makes
no representations concerning the copyright status of any work in
any country other than the United States.

1.E. Unless you have removed all references to Project Gutenberg:

1.E.1. The following sentence, with active links to, or other


immediate access to, the full Project Gutenberg™ License must
appear prominently whenever any copy of a Project Gutenberg™
work (any work on which the phrase “Project Gutenberg” appears,
or with which the phrase “Project Gutenberg” is associated) is
accessed, displayed, performed, viewed, copied or distributed:
This eBook is for the use of anyone anywhere in the United
States and most other parts of the world at no cost and with
almost no restrictions whatsoever. You may copy it, give it away
or re-use it under the terms of the Project Gutenberg License
included with this eBook or online at www.gutenberg.org. If you
are not located in the United States, you will have to check the
laws of the country where you are located before using this
eBook.

1.E.2. If an individual Project Gutenberg™ electronic work is derived


from texts not protected by U.S. copyright law (does not contain a
notice indicating that it is posted with permission of the copyright
holder), the work can be copied and distributed to anyone in the
United States without paying any fees or charges. If you are
redistributing or providing access to a work with the phrase “Project
Gutenberg” associated with or appearing on the work, you must
comply either with the requirements of paragraphs 1.E.1 through
1.E.7 or obtain permission for the use of the work and the Project
Gutenberg™ trademark as set forth in paragraphs 1.E.8 or 1.E.9.

1.E.3. If an individual Project Gutenberg™ electronic work is posted


with the permission of the copyright holder, your use and distribution
must comply with both paragraphs 1.E.1 through 1.E.7 and any
additional terms imposed by the copyright holder. Additional terms
will be linked to the Project Gutenberg™ License for all works posted
with the permission of the copyright holder found at the beginning
of this work.

1.E.4. Do not unlink or detach or remove the full Project


Gutenberg™ License terms from this work, or any files containing a
part of this work or any other work associated with Project
Gutenberg™.

1.E.5. Do not copy, display, perform, distribute or redistribute this


electronic work, or any part of this electronic work, without
prominently displaying the sentence set forth in paragraph 1.E.1
with active links or immediate access to the full terms of the Project
Gutenberg™ License.

1.E.6. You may convert to and distribute this work in any binary,
compressed, marked up, nonproprietary or proprietary form,
including any word processing or hypertext form. However, if you
provide access to or distribute copies of a Project Gutenberg™ work
in a format other than “Plain Vanilla ASCII” or other format used in
the official version posted on the official Project Gutenberg™ website
(www.gutenberg.org), you must, at no additional cost, fee or
expense to the user, provide a copy, a means of exporting a copy, or
a means of obtaining a copy upon request, of the work in its original
“Plain Vanilla ASCII” or other form. Any alternate format must
include the full Project Gutenberg™ License as specified in
paragraph 1.E.1.

1.E.7. Do not charge a fee for access to, viewing, displaying,


performing, copying or distributing any Project Gutenberg™ works
unless you comply with paragraph 1.E.8 or 1.E.9.

1.E.8. You may charge a reasonable fee for copies of or providing


access to or distributing Project Gutenberg™ electronic works
provided that:

• You pay a royalty fee of 20% of the gross profits you derive
from the use of Project Gutenberg™ works calculated using the
method you already use to calculate your applicable taxes. The
fee is owed to the owner of the Project Gutenberg™ trademark,
but he has agreed to donate royalties under this paragraph to
the Project Gutenberg Literary Archive Foundation. Royalty
payments must be paid within 60 days following each date on
which you prepare (or are legally required to prepare) your
periodic tax returns. Royalty payments should be clearly marked
as such and sent to the Project Gutenberg Literary Archive
Foundation at the address specified in Section 4, “Information
Welcome to our website – the perfect destination for book lovers and
knowledge seekers. We believe that every book holds a new world,
offering opportunities for learning, discovery, and personal growth.
That’s why we are dedicated to bringing you a diverse collection of
books, ranging from classic literature and specialized publications to
self-development guides and children's books.

More than just a book-buying platform, we strive to be a bridge


connecting you with timeless cultural and intellectual values. With an
elegant, user-friendly interface and a smart search system, you can
quickly find the books that best suit your interests. Additionally,
our special promotions and home delivery services help you save time
and fully enjoy the joy of reading.

Join us on a journey of knowledge exploration, passion nurturing, and


personal growth every day!

ebookbell.com

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy