<?xml version="1.0"?>

<st-source>
<!-- 
Name: SeasideWebDesignerTool
Notice: All rights reserved
BundleName: SeasideWebDesignerTool
Comment: Tool for Seaside Web Designers

Part of Seaside Bonus Pack version SeasideBonusPack 2.7b1.1.0   8 August 2007, 15:14:13 pm


DevelopmentPrerequisites: #(#(#any 'SeasideImage' '') #(#any 'SeasideAsync' ''))
Parcel: #('SeasideWebDesignerTool')
ParcelName: SeasideWebDesignerTool
PrerequisiteParcels: #(#('SeasideImage' '') #('SeasideAsync' ''))
Version: 2.7b1.1.0
Date: 2:52:12 pm August 8, 2007
 -->
<time-stamp>From VisualWorks®, 7.5 of April 16, 2007 on August 8, 2007 at 2:52:12 pm</time-stamp>


<do-it>(Dialog confirm: 'You are filing-in a Parcel source file!\\While this is possible it will not have\the same effect as loading the parcel.\None of the Parcel''s prerequisites will\be loaded and none of its load actions\will be performed.\\Are you sure you want to file-in?' withCRs) ifFalse: [self error: 'Parcel file-in abandoned.  Choose terminate or close.']</do-it>

<class>
<name>WAWebDesignerLibraryTests</name>
<environment>Seaside</environment>
<super>XProgramming.SUnit.TestCase</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>SeasideStyle</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>WAWebDesignerFileSaver</name>
<environment>Seaside</environment>
<super>Seaside.WAComponent</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>fileViewer savedAs library </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-WebDesigner-Tools</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>WAWebDesignerFileSaverLong</name>
<environment>Seaside</environment>
<super>Seaside.WAWebDesignerFileSaver</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>libraryViewer </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-WebDesigner-Tools</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>WAWebDesignerWelcome</name>
<environment>Seaside</environment>
<super>Seaside.WAComponent</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-WebDesigner-Tools</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>WAWebDesignerLibraryViewer</name>
<environment>Seaside</environment>
<super>Seaside.WAComponent</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>type library </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-WebDesigner-Tools</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>WAWebDesignerComponent</name>
<environment>Seaside</environment>
<super>Seaside.WAAsyncComponent</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>file errorText library </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-WebDesigner-Tools</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>WAWebDesignerEditor</name>
<environment>Seaside</environment>
<super>Seaside.WAWebDesignerComponent</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>type libraryViewer fileEditor </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-WebDesigner-Tools</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>WAWebDesignerLoader</name>
<environment>Seaside</environment>
<super>Seaside.WAWebDesignerComponent</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>fileViewer </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-WebDesigner-Tools</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>SlidingDoors</name>
<environment>Seaside</environment>
<super>Seaside.WAStyleLibrary</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-WebDesigner-Tools</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>WAWebDesignerViewer</name>
<environment>Seaside</environment>
<super>Seaside.WAComponent</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>file type fileSaver uploadDate creationDate </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-WebDesigner-Tools</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>WAWebDesignerPictureViewer</name>
<environment>Seaside</environment>
<super>Seaside.WAWebDesignerViewer</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-WebDesigner-Tools</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>WAWebDesignerQuickPictureViewer</name>
<environment>Seaside</environment>
<super>Seaside.WAWebDesignerPictureViewer</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-WebDesigner-Tools</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>SampleStyles</name>
<environment>Seaside</environment>
<super>Seaside.WAStyleLibrary</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-WebDesigner-Tools</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>SampleTree</name>
<environment>Seaside</environment>
<super>Seaside.WAComponent</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>status </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>WebDesigner-Libraries</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<comment>
<class-id>Seaside.SampleTree</class-id>
<body>This example uses the SampleScripts and the SampleStyles library

</body>
</comment>

<class>
<name>WAWebDesignerFile</name>
<environment>Seaside</environment>
<super>Seaside.WAFile</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>library selector uploadDate creationDate modificationDate modifiedBy image </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-WebDesigner-Tools</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>SampleScripts</name>
<environment>Seaside</environment>
<super>Seaside.WAScriptLibrary</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-WebDesigner-Tools</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>WAPictureServer</name>
<environment>Seaside</environment>
<super>Seaside.WARequestHandler</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>basePath name </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-WebDesigner-Tools</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>WAImageLibrary</name>
<environment>Seaside</environment>
<super>Core.Object</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-Libraries</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>WAWebDesignerLibraryMaintainer</name>
<environment>Seaside</environment>
<super>Seaside.WAWebDesignerLibraryViewer</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>selectedMember editor </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-WebDesigner-Tools</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>WAWebDesignerStyle</name>
<environment>Seaside</environment>
<super>Seaside.WAStyleLibrary</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-WebDesigner-Tools</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>WAWebDesignerTool</name>
<environment>Seaside</environment>
<super>Seaside.WAFrameComponent</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-WebDesigner-Tools</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>WAWebDesignerPictureEditor</name>
<environment>Seaside</environment>
<super>Seaside.WAWebDesignerEditor</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-WebDesigner-Tools</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>WAWebDesignerLibrary</name>
<environment>Seaside</environment>
<super>Core.Object</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>name storage creationDate author members type </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-WebDesigner-Tools</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>WAPictureHandler</name>
<environment>Seaside</environment>
<super>Seaside.WADocumentHandler</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>basePath originalUrl </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-RequestHandler</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>WAWebDesignerStringViewer</name>
<environment>Seaside</environment>
<super>Seaside.WAWebDesignerViewer</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-WebDesigner-Tools</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>WAWebDesignerStringEditor</name>
<environment>Seaside</environment>
<super>Seaside.WAWebDesignerStringViewer</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>isEditMode </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-WebDesigner-Tools</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<class>
<name>SamplePictures</name>
<environment>Seaside</environment>
<super>Seaside.WAImageLibrary</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-WebDesigner-Tools</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</class>

<shared-variable>
<name>Types</name>
<environment>Seaside.WAWebDesignerLibrary</environment>
<private>false</private>
<constant>false</constant>
<category>Static</category>
<initializer>Dictionary new
	at: 'text/css' put: #css;
	at: 'text/javascript' put: #javascript;
	at: 'image/jpeg' put: #jpeg;
	at: 'image/gif' put: #gif;
	at: 'image/png' put: #png;
	yourself</initializer>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</shared-variable>

<shared-variable>
<name>LibraryTypes</name>
<environment>Seaside.WAWebDesignerLibrary</environment>
<private>false</private>
<constant>false</constant>
<category>Static</category>
<initializer>Dictionary new
	at: #css put: WAStyleLibrary;
	at: #javascript put: WAScriptLibrary;
	at: #jpeg put: WAImageLibrary;
	at: #gif put: WAImageLibrary;
	at: #png put: WAImageLibrary;
	yourself</initializer>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</shared-variable>

<shared-variable>
<name>Extensions</name>
<environment>Seaside.WAWebDesignerLibrary</environment>
<private>false</private>
<constant>false</constant>
<category>Static</category>
<initializer>Dictionary new
	at: 'text/css' put: '.css';
	at: 'text/javascript' put: '.js';
	at: 'image/jpeg' put: '.jpeg';
	at: 'image/gif' put: '.gif';
	at: 'image/png' put: '.png';
	yourself</initializer>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</shared-variable>

<shared-variable>
<name>Pictures</name>
<environment>Seaside.WAWebDesignerLibraryMaintainer</environment>
<private>false</private>
<constant>false</constant>
<category>rendering</category>
<initializer>Dictionary new</initializer>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</shared-variable>

<shared-variable>
<name>type</name>
<environment>Seaside.WAWebDesignerComponent</environment>
<private>false</private>
<constant>false</constant>
<category>As yet unclassified</category>
<attributes>
<package>SeasideWebDesignerTool</package>
</attributes>
</shared-variable>

<methods>
<class-id>Seaside.WAWebDesignerLibraryTests</class-id> <category>testing</category>

<body package="SeasideWebDesignerTool" selector="testCreate">testCreate

	| lib |
	lib := WAWebDesignerLibrary new
			type: #css;
			name: #MoreStyles;
			author: 'mb';
			create.
	self assert: lib class == WAWebDesignerLibrary.
	self assert: lib members isEmpty.</body>

<body package="SeasideWebDesignerTool" selector="testDeleteMember">testDeleteMember

	| lib member |
	lib := (WAWebDesignerLibrary librariesForType: #css) first.
	member := lib members first.
	member delete.</body>

<body package="SeasideWebDesignerTool" selector="testLibrary">testLibrary

	| lib |
	self assert: (WAWebDesignerLibrary rootForType: #css) == WAStyleLibrary.
	self assert: (WAWebDesignerLibrary rootForType: #javascript) == WAScriptLibrary.
	self should: [WAWebDesignerLibrary rootForType: #bad] raise: Error.

	self assert: (WAWebDesignerLibrary typeForClass: WAStyleLibrary) == #css.
	self assert: (WAWebDesignerLibrary typeForClass: WAScriptLibrary) == #javascript.
	self should: [WAWebDesignerLibrary typeForClass: Object] raise: Error.

	self assert: (WAWebDesignerLibrary librariesForType: #css) isCollection.
	self assert: (WAWebDesignerLibrary librariesForType: #javascript) isCollection.

	lib := (WAWebDesignerLibrary librariesForType: #css) first.
	self assert: lib class == WAWebDesignerLibrary.
	self assert: lib storage superclass == WAStyleLibrary.
	self assert: lib type == #css.
	self assert: lib creationDate class == Timestamp.
	self assert: lib author isString.
	self assert: lib name == #SampleStyles.</body>

<body package="SeasideWebDesignerTool" selector="testMembers">testMembers

	| lib member |
	lib := (WAWebDesignerLibrary librariesForType: #css) first.
	self assert: lib members isCollection.
	member := lib members first.
	self assert: member class == WAWebDesignerFile.
	self assert: member contents notEmpty.
	self assert: member creationDate class == Timestamp.
	self assert: member modificationDate class == Timestamp.
	self assert: member selector isSymbol.
	self assert: member fileName isString.
	self assert: member library == lib.
	"Style libraries are allowed to hold picture files"
	self assert: (#( 'text/css' 'image/gif' ) includes: member contentType).
	self assert: (#( css gif ) includes: member type).
	member save.</body>

<body package="SeasideWebDesignerTool" selector="testNewMember">testNewMember

	| lib member |
	lib := (WAWebDesignerLibrary librariesForType: #css) first.
	member := WAWebDesignerFile new library: lib.
	self should: [member save] raise: Error.
	member selector: 'newSelector'.
	self should: [member save] raise: Error.
	member contents: 'BODY { font-size: small }'.
	member save.
	self assert: member contentType = 'text/css'.
	self assert: member type = #css.
	self assert: member fileName = 'newSelector.css'.</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerFileSaver</class-id> <category>accessing</category>

<body package="SeasideWebDesignerTool" selector="author">author
	SeasidePlatformSupport ensureAuthorInitials: [self request: 'Please enter your initials'].
	^SeasidePlatformSupport.DeveloperInitials</body>

<body package="SeasideWebDesignerTool" selector="contentType">contentType
	^fileViewer contentType</body>

<body package="SeasideWebDesignerTool" selector="creationDate">creationDate
	^fileViewer creationDate</body>

<body package="SeasideWebDesignerTool" selector="editableLibraries">editableLibraries
	^ self libraries select: [:lib | lib isEditable].</body>

<body package="SeasideWebDesignerTool" selector="fileContents">fileContents

	^ fileViewer fileContents</body>

<body package="SeasideWebDesignerTool" selector="fileName">fileName

	^fileViewer fileName</body>

<body package="SeasideWebDesignerTool" selector="fileViewer">fileViewer
	^fileViewer</body>

<body package="SeasideWebDesignerTool" selector="fileViewer:">fileViewer: anObject
	fileViewer := anObject</body>

<body package="SeasideWebDesignerTool" selector="libraries">libraries
	| libraries defaultLib |
	libraries := (WAWebDesignerLibrary librariesForType: self type).
	libraries isEmpty ifFalse: [
	self library isNil ifFalse:
		[defaultLib := (libraries detect: [:each | each name = self library name] ifNone: [nil])]
	ifTrue:
		[defaultLib := libraries first]].
	self library: defaultLib.
	^ libraries</body>

<body package="SeasideWebDesignerTool" selector="library">library
	^library</body>

<body package="SeasideWebDesignerTool" selector="library:">library: anObject
	library := anObject</body>

<body package="SeasideWebDesignerTool" selector="objectLabel">objectLabel

	^fileViewer extendedLabel</body>

<body package="SeasideWebDesignerTool" selector="suggestedMethodNameFor:">suggestedMethodNameFor: aString

	| temp inStream outStream shift |
	temp := aString copyFrom: 1 to: aString size - (aString reverse indexOf: $.).
	(temp select: [:ea | ea isLetter | ea isDigit | (ea == $_)]) = temp
		ifTrue:
			["Already camel case"
			temp at: 1 put: temp first asLowercase.
			^ temp].
	inStream := temp readStream.
	outStream := String new writeStream.
	shift := false. "For camel case"
	[inStream atEnd] whileFalse:	
		[ | char |
		char := inStream next.
		char isLetter | char isDigit
			ifFalse: [shift := true]
			ifTrue:
				[shift
					ifTrue: [outStream nextPut: char asUppercase. shift := false]
					ifFalse: [outStream nextPut: char asLowercase]]].
	^ outStream contents.</body>

<body package="SeasideWebDesignerTool" selector="suggestedSelector">suggestedSelector
	^self suggestedMethodNameFor: self fileName</body>

<body package="SeasideWebDesignerTool" selector="type">type

	^fileViewer type</body>

<body package="SeasideWebDesignerTool" selector="uploadDate">uploadDate
	^fileViewer uploadDate</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerFileSaver</class-id> <category>rendering</category>

<body package="SeasideWebDesignerTool" selector="children">children

	^#()</body>

<body package="SeasideWebDesignerTool" selector="renderContentOn:">renderContentOn: html 
	html heading: 'Save this ' , self objectLabel.
	html form: 
			[html table: 
					[html tableRow: 
							[html tableData: 'Library'.
							html tableData: 'Member name'].
					html tableRow: 
							[html tableData: 
									[self renderLibraryChoiceOn: html.
									self renderLibraryCreationOn: html].
							html tableData: [self renderMemberNameChoiceOn: html]]]].
	self renderSavedAsOn: html</body>

<body package="SeasideWebDesignerTool" selector="rendererClass">rendererClass
	^WAAsyncRenderCanvas</body>

<body package="SeasideWebDesignerTool" selector="renderLibraryChoiceOn:">renderLibraryChoiceOn: html 
	(html select)
		list: self editableLibraries;
		selected: self library;
		callback: [:v | self library: v];
		labels: [:ea | ea name]</body>

<body package="SeasideWebDesignerTool" selector="renderLibraryCreationOn:">renderLibraryCreationOn: html 
	(html submitButton)
		callback: [self createLibrary];
		text: 'Create new library ...'</body>

<body package="SeasideWebDesignerTool" selector="renderMemberNameChoiceOn:">renderMemberNameChoiceOn: html 
	| selector |
	(html textInput)
		value: self suggestedSelector;
		callback: [:v | selector := v].
	(html submitButton)
		callback: [self saveAs: selector];
		text: 'Save'</body>

<body package="SeasideWebDesignerTool" selector="renderSavedAsOn:">renderSavedAsOn: html 
	savedAs isNil ifTrue: [^self].
	(html span)
		id: #'saved-as';
		with: 'Saved as ' , savedAs , ' in ' , self library name.
	savedAs := nil</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerFileSaver</class-id> <category>actions</category>

<body package="SeasideWebDesignerTool" selector="createLibrary">createLibrary
	| libName cName message |
	cName := String new.
	message := 'A name for your library'.
	[libName := self request: message label: 'Create' default: cName.
	message := 'Agree with this suggested valid name'.
	cName := self suggestedClassNameFor: libName.
	cName = libName] whileFalse.
	[self library: (WAWebDesignerLibrary new
		type: self type;
		name: libName;
		author: self author;
		create;
		yourself)]

	on: Error do: [:ex |
		libName := self request: ex parameter first label: 'Create' default: ex parameter last.
		ex retry]</body>

<body package="SeasideWebDesignerTool" selector="saveAs:">saveAs: selector
	| member |
	member := self library newMember.
	member selector: selector.
	member contents: self fileContents.
	member contentType: self contentType.
	member uploadDate: self uploadDate.
	member creationDate: self creationDate.
	member modifiedBy: self author.
	[member save.
	savedAs := selector] on: Error do: [:ex | self inform: 'Choose another member name'].</body>

<body package="SeasideWebDesignerTool" selector="suggestedClassNameFor:">suggestedClassNameFor: aString

	| temp inStream outStream shift |
	temp := aString copy.
	(temp select: [:ea | ea isLetter | ea isDigit]) = temp
		ifTrue:
			["Already camel case"
			temp at: 1 put: temp first asUppercase.
			^ temp].
	inStream := temp readStream.
	outStream := String new writeStream.
	shift := false. "For camel case"
	[inStream atEnd] whileFalse:	
		[ | char |
		char := inStream next.
		char isLetter | char isDigit
			ifFalse: [shift := true]
			ifTrue:
				[shift
					ifTrue: [outStream nextPut: char asUppercase. shift := false]
					ifFalse: [outStream nextPut: char asLowercase]]].
	temp  := outStream contents.
	temp at: 1 put: temp first asUppercase.
	^ temp.</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerFileSaverLong</class-id> <category>rendering</category>

<body package="SeasideWebDesignerTool" selector="children">children
	| children |
	children := OrderedCollection new.
	libraryViewer notNil ifTrue: [children add: libraryViewer].
	^children</body>

<body package="SeasideWebDesignerTool" selector="renderContentOn:">renderContentOn: html 
	super renderContentOn: html.
	self renderLibraryOn: html</body>

<body package="SeasideWebDesignerTool" selector="renderLibraryChoiceOn:">renderLibraryChoiceOn: html 
	(html select)
		list: self editableLibraries;
		selected: self library;
		callback: [:v | self library: v];
		labels: [:ea | ea name];
		liveCallback: 
				[:item :h | 
				self library: item.
				self renderLibraryOn: h]</body>

<body package="SeasideWebDesignerTool" selector="renderLibraryOn:">renderLibraryOn: html 
	html render: libraryViewer</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerFileSaverLong</class-id> <category>accessing</category>

<body package="SeasideWebDesignerTool" selector="library:">library: anObject 
	super library: anObject.
	libraryViewer isNil ifTrue: [libraryViewer := WAWebDesignerLibraryViewer new].
	libraryViewer library: library.
	libraryViewer type: fileViewer genericType.</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerWelcome</class-id> <category>rendering</category>

<body package="SeasideWebDesignerTool" selector="renderContentOn:">renderContentOn: html 
	(html image)
		document: SeasidePlatformSupport seasideBanner;
		mimeType: 'image/jpeg';
		fileName: 'seaside.jpg'.
	html heading: 'Welcome to the Seaside Web Designer Tool'.
	self renderHelpOn: html</body>

<body package="SeasideWebDesignerTool" selector="renderCreatingLibrariesOn:">renderCreatingLibrariesOn: html 
	(html heading)
		level: 3;
		with: 'Creating Libraries'.
	(html div)
		class: #'help-text';
		with: 
				[html 
					paragraph: 'A new library can be created using the "Create new" button that shows up close to the list of available libraries. The type of library that is created depends on the selected tab : CSS, Javascript or Picture.'.
				html 
					paragraph: 'Under the Upload tab, the type of library that is created depends on the type of file being uploaded.'.
				html 
					paragraph: 'Library names must obey strict naming conventions. If the name you supplied when creating a new library is illegal, a legal name, close to the one you supplied will be suggested. Use the Web Browser "back" button to cancel the creation of the library.']</body>

<body package="SeasideWebDesignerTool" selector="renderCSSPicturesOn:">renderCSSPicturesOn: html 
	(html heading)
		level: 3;
		with: 'Adding pictures to a CSS library'.
	(html div)
		class: #'help-text';
		with: 
				[html 
					paragraph: 'Picture files can be added to a CSS library. This will allow the Web Designers to keep together the CSS style specifications and the picture files that are used in the CSS style specifications.'.
				html emphasis: 'Example'.
				html 
					paragraph: 'Assume that you need to set up a background image for all the pages of your Seaside application.'.
				html 
					paragraph: 'Assume also that your Seaside application has been defined to use a CSS library named MyStyles.'.
				html 
					paragraph: 'The first thing you should do is to upload the background image into your "MyStyles" CSS library. Assume you upload a file named "backg.gif" as member named "background".'.
				html 
					paragraph: 'The next thing to do will be to add a CSS style specification like the one shown below to any of the member in your "MyStyles" CSS library.'.
				html 
					preformatted: '	boby {
		background: url(''/seaside/go/images/MyStyles/background.gif'')
	}
'.
				html 
					paragraph: 'In the above CSS style specification "images" refers to a special Seaside application that is shipped together with this tool and that acts as a Picture file server. "MyStyles" corresponds to the name of your CSS library and "background" corresponds to the member name for your Picture file. The ".gif" extension is optional and is only for clarity.']</body>

<body package="SeasideWebDesignerTool" selector="rendererClass">rendererClass
	^WAAsyncRenderCanvas</body>

<body package="SeasideWebDesignerTool" selector="renderHelpOn:">renderHelpOn: html 
	self renderPurposeOn: html.
	self renderLibrariesOn: html.
	self renderCreatingLibrariesOn: html .
	self renderMembersOn: html. 
	self renderCSSPicturesOn: html.
	self renderStorageOn: html</body>

<body package="SeasideWebDesignerTool" selector="renderLibrariesOn:">renderLibrariesOn: html 
	(html heading)
		level: 3;
		with: 'Libraries'.
	(html div)
		class: #'help-text';
		with: 
				[html 
					paragraph: 'A library can be thought of a folder containing named members. There are three types of libraries'.
				html unorderedList: 
						[html listItem: 
								[html
									strong: 'Picture library';
									paragraph: 'In a Picture library the members are picture files. Supported picture types are GIF, JPEG and PNG'].
						html listItem: 
								[html
									strong: 'CSS library';
									paragraph: 'In a CSS library the members are CSS style sheets. A CSS library is also allowed to contain pictures'].
						html listItem: 
								[html
									strong: 'Javascript library';
									paragraph: 'In a Javascript library the members are Javascript files']].
				html 
					paragraph: 'Some libraries are marked as read-only. It is not possible to add/modify/delete members in read-only libraries. Libraries that are shipped together with this tool are marked as read-only.'.
				html 
					paragraph: 'CSS and Javascript libraries can be added to a Seaside application using the Seaside configuration tool. They can also be added programmatically by coding the following in the #initialize class method'.
				html 
					preformatted: '	initialize
		| app |
		app := self registerAsApplication: ''MyApplication''.
		app libraries remove: WAStandardStyles.
		app libraries add: MyStyleLibrary.
		app libraries add: MyScriptLibrary.
'.
				html 
					paragraph: 'Picture libraries may not be added to a Seaside application.']</body>

<body package="SeasideWebDesignerTool" selector="renderMembersOn:">renderMembersOn: html 
	(html heading)
		level: 3;
		with: 'Adding members to libraries'.
	(html div)
		class: #'help-text';
		with: 
				[html paragraph: 'There are two methods for adding a member to a library'.
				html unorderedList: 
						[html listItem: 
								[html
									strong: 'Uploading';
									paragraph: 'Use the Upload tab to upload a member into a library. Only the supported file types may be uploaded. Picture files can be uploaded into either a CSS or a Picture library'].
						html listItem: 
								[html
									strong: 'Editing';
									paragraph: 'From the CSS or the Javascript tab, select a library, then hit the "New member" button. Editing is not available for Picture members']].
				html 
					paragraph: 'It is not possible to add a member, using either method, into a library that is marked as read-only.'.
				html 
					paragraph: 'Member names must obey strict naming conventions. If the name you supplied when saving a member is illegal, a legal name, close to the one you supplied will be suggested. Use the Web Browser "back" button to cancel the save operation.']</body>

<body package="SeasideWebDesignerTool" selector="renderPurposeOn:">renderPurposeOn: html 
	(html heading)
		level: 3;
		with: 'Purpose'.
	(html div)
		class: #'help-text';
		with: 
				[html 
					paragraph: 'The purpose of this tool is to create, maintain and organize libraries of CSS styles, Javascript and Images']</body>

<body package="SeasideWebDesignerTool" selector="renderStorageOn:">renderStorageOn: html 
	(html heading)
		level: 3;
		with: 'Storage'.
	(html div)
		class: 'help-text';
		with: 
				[html 
					paragraph: 'Libraries and their members are stored as Smalltalk code in the running image. A library is stored as a Smalltalk class and a member is stored as a Smalltalk instance method of the corresponding Smalltalk class.'.
				html unorderedList: 
						[html listItem: 
								[html
									strong: 'Picture library';
									paragraph: 'Picture libraries are stored as subclasses of WAImageLibrary'].
						html listItem: 
								[html
									strong: 'CSS library';
									paragraph: 'CSS libraries are stored as subclasses of WAStyleLibrary'].
						html listItem: 
								[html
									strong: 'Javascript library';
									paragraph: 'Javascript libraries are stored as subclasses of WAScriptLibrary']].
				html 
					paragraph: 'Libraries have class methods that are used to hold metadata about the libraries (date created, owner, read-only flag). Instance methods are annotated using pragmas to hold metadata about members (date created, date modified, date uploaded, author, file type, file name).'.
				html 
					paragraph: 'The Smalltalk image must be saved in order to make the changes to libraries and their members persistent.']</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerLibraryViewer</class-id> <category>rendering</category>

<body package="SeasideWebDesignerTool" selector="emptyStatusText">emptyStatusText
	^ 'No ' , self type , ' defined yet in this library.'</body>

<body package="SeasideWebDesignerTool" selector="renderContentOn:">renderContentOn: html 
	library isNil ifTrue: [^self].
	(html div)
		id: #library;
		with: 
				[html heading: 'Contents of ' , self library name.
				self renderLibraryPropertiesOn: html.
				self renderLibraryMembersOn: html]</body>

<body package="SeasideWebDesignerTool" selector="rendererClass">rendererClass
	^WAAsyncRenderCanvas</body>

<body package="SeasideWebDesignerTool" selector="renderLibraryMember:on:">renderLibraryMember: member on: html 
	^html tableRow: 
		[html tableData: member selector.
		html tableData: member contentType.
		html tableData: member uploadDate.
		html tableData: member creationDate.
		html tableData: member modificationDate.
		html tableData: member modifiedBy]</body>

<body package="SeasideWebDesignerTool" selector="renderLibraryMembersOn:">renderLibraryMembersOn: html 
	self library members isEmpty ifTrue: [^self].
	(html div)
		id: #'library-members';
		with: 
				[html table: 
						[html 
							tableRow: [self libraryHeadings do: [:each | html tableHeading: each]].
						self library members do: [:each | self renderLibraryMember: each on: html]]]</body>

<body package="SeasideWebDesignerTool" selector="renderLibraryPropertiesOn:">renderLibraryPropertiesOn: html 
	(html div)
		id: #'library-properties';
		with: 
				[html text: library shortSummary.
				html break.
				html break.
				self library members isEmpty ifTrue: [html text: self emptyStatusText]]</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerLibraryViewer</class-id> <category>accessing</category>

<body package="SeasideWebDesignerTool" selector="library">library
	^library</body>

<body package="SeasideWebDesignerTool" selector="library:">library: anObject
	library := anObject</body>

<body package="SeasideWebDesignerTool" selector="libraryHeadings">libraryHeadings
	^#('Member name' 'Type' 'Uploaded' 'Created' 'Modified' 'By')</body>

<body package="SeasideWebDesignerTool" selector="type">type
	^type</body>

<body package="SeasideWebDesignerTool" selector="type:">type: anObject
	type := anObject</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerComponent</class-id> <category>accessing-computed</category>

<body package="SeasideWebDesignerTool" selector="author">author
	SeasidePlatformSupport ensureAuthorInitials: [self request: 'Please enter your initials'].
	^SeasidePlatformSupport.DeveloperInitials</body>

<body package="SeasideWebDesignerTool" selector="libraries">libraries
	| libraries defaultLib |
	libraries := (WAWebDesignerLibrary librariesForType: self type).
	libraries isEmpty ifFalse: [
	self library isNil ifFalse:
		[defaultLib := (libraries detect: [:each | each name = self library name] ifNone: [nil])]
	ifTrue:
		[defaultLib := libraries first]].
	self library: defaultLib.
	^ libraries</body>

<body package="SeasideWebDesignerTool" selector="typeLabel">typeLabel
	^self isCSS ifTrue: ['CSS'] ifFalse: ['javascript']</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerComponent</class-id> <category>actions</category>

<body package="SeasideWebDesignerTool" selector="createLibrary">createLibrary
	| libName cName message |
	cName := String new.
	message := 'A name for your library'.
	[libName := self request: message label: 'Create' default: cName.
	cName := libName trimBlanks isEmpty ifTrue:
		[message := 'A name for your libary, but not blank'.
		nil]
	ifFalse:
		[message := 'Agree with this suggested valid name'.
		self suggestedClassNameFor: libName].
	cName = libName] whileFalse.
	[self library: (WAWebDesignerLibrary new
		type: self type;
		name: libName;
		author: self author;
		create;
		yourself)]

	on: Error do: [:ex |
		libName := self request: ex parameter first label: 'Create' default: ex parameter last.
		ex retry]</body>

<body package="SeasideWebDesignerTool" selector="fileTypeForFile:">fileTypeForFile: aFile

	| extension |

	"Trust the filename extension"
	extension := aFile fileName asFilename extension asLowercase.
	extension = '.css' ifTrue: [aFile contentType: 'text/css'. ^#css].
	extension = '.js' ifTrue: [aFile contentType: 'text/javascript'. ^#javascript].
	extension = '.gif' ifTrue: [aFile contentType: 'image/gif'. ^#gif].
	extension = '.jpg' ifTrue: [aFile contentType: 'image/jpeg'. ^#jpeg].
	extension = '.jpeg' ifTrue: [aFile contentType: 'image/jpeg'. ^#jpeg].
	extension = '.jpe' ifTrue: [aFile contentType: 'image/jpeg'. ^#jpeg].
	extension = '.png' ifTrue: [aFile contentType: 'image/jpeg'. ^#png].

	"Trust the contentType"
	aFile contentType = 'text/css' ifTrue: [^#css].
	aFile contentType = 'text/javascript' ifTrue: [^#javascript].
	aFile contentType = 'image/gif' ifTrue: [^#gif].
	aFile contentType = 'image/jpeg' ifTrue: [^#jpeg].
	aFile contentType = 'image/png' ifTrue: [^#png].

	"Give up, file is not supported"
	self error: 'File type not recognized'</body>

<body package="SeasideWebDesignerTool" selector="suggestedClassNameFor:">suggestedClassNameFor: aString 
	| temp |
	temp := self suggestedNameFor: aString.
	self class environment at: temp asSymbol ifAbsent: [^temp].
	"Name clash"
	^temp , 'Library'</body>

<body package="SeasideWebDesignerTool" selector="suggestedNameFor:">suggestedNameFor: aString

	| temp inStream outStream shift |
	temp := aString copy.
	(temp select: [:ea | ea isLetter | ea isDigit]) = temp
		ifTrue:
			["Already camel case"
			temp at: 1 put: temp first asUppercase.
			^ temp].
	inStream := temp readStream.
	outStream := String new writeStream.
	shift := false. "For camel case"
	[inStream atEnd] whileFalse:	
		[ | char |
		char := inStream next.
		char isLetter | char isDigit
			ifFalse: [shift := true]
			ifTrue:
				[shift
					ifTrue: [outStream nextPut: char asUppercase. shift := false]
					ifFalse: [outStream nextPut: char asLowercase]]].
	temp  := outStream contents.
	temp at: 1 put: temp first asUppercase.
	^ temp.</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerComponent</class-id> <category>accessing</category>

<body package="SeasideWebDesignerTool" selector="file">file
	^file</body>

<body package="SeasideWebDesignerTool" selector="file:">file: anObject
	| old |
	old := file.
	file := anObject.
	anObject == old ifFalse: [self fileHasChanged].</body>

<body package="SeasideWebDesignerTool" selector="fileContents">fileContents
	^self file contents</body>

<body package="SeasideWebDesignerTool" selector="fileName">fileName
	^self file fileName</body>

<body package="SeasideWebDesignerTool" selector="fileType">fileType
	^ self fileTypeForFile: self file</body>

<body package="SeasideWebDesignerTool" selector="genericType">genericType
	^self type</body>

<body package="SeasideWebDesignerTool" selector="library">library
	^library</body>

<body package="SeasideWebDesignerTool" selector="type">type
	^self fileType</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerComponent</class-id> <category>events</category>

<body package="SeasideWebDesignerTool" selector="fileHasChanged">fileHasChanged</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerComponent</class-id> <category>testing</category>

<body package="SeasideWebDesignerTool" selector="isCSS">isCSS
	^ self type == #css</body>

<body package="SeasideWebDesignerTool" selector="isPicture">isPicture
	^ #(picture gif jpeg png) includes: self type</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerComponent</class-id> <category>rendering</category>

<body package="SeasideWebDesignerTool" selector="rendererClass">rendererClass
	^WAAsyncRenderCanvas</body>

<body package="SeasideWebDesignerTool" selector="renderErrorTextOn:">renderErrorTextOn: html 
	errorText isNil ifTrue: [^self].
	(html heading)
		level: 2;
		with: errorText.
	errorText := nil</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerEditor</class-id> <category>rendering</category>

<body package="SeasideWebDesignerTool" selector="children">children
	| children |
	children := OrderedCollection new.
	self libraryViewer isNil ifFalse: [children add: self libraryViewer].
	self fileEditor isNil ifFalse: [children add: self fileEditor].
	^ children</body>

<body package="SeasideWebDesignerTool" selector="renderContentOn:">renderContentOn: html 
	(html div)
		id: #libraries;
		with: [self renderLibrariesOn: html].
	self renderSelectedLibraryOn: html.
	(html div)
		id: #member;
		with: fileEditor</body>

<body package="SeasideWebDesignerTool" selector="renderLibrariesOn:">renderLibrariesOn: html 
	| libs |
	libs := self libraries.
	html form: 
			[libs isEmpty 
				ifTrue: [html heading: 'No ' , self typeLabel , ' library defined yet']
				ifFalse: 
					[html heading: 'Available ' , self typeLabel , ' libraries'.
					(html select)
						class: #libList;
						list: libs;
						size: (libs size + 1 max: library size);
						selected: self library;
						callback: [:v | self library: v];
						labels: [:ea | ea name];
						liveCallback: 
								[:item :h | 
								self library: item.
								self renderSelectedLibraryOn: h]].
			html break.
			(html submitButton)
				callback: [self createLibrary];
				text: 'Create new ...']</body>

<body package="SeasideWebDesignerTool" selector="renderSelectedLibraryOn:">renderSelectedLibraryOn: html 
	html render: self libraryViewer</body>

<body package="SeasideWebDesignerTool" selector="script">script
	^ '
function submitFormTriggeringCallback(formName, callbackKey) {
		var ele = document.createElement("input");
		ele.type = "hidden";
		ele.name = callbackKey;
		document.forms[formName].appendChild(ele);
		document.forms[formName].submit();
}
'</body>

<body package="SeasideWebDesignerTool" selector="style">style
	^ '
.listList {
	width: 200px;
}
'</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerEditor</class-id> <category>accessing</category>

<body package="SeasideWebDesignerTool" selector="editorClass">editorClass
	^WAWebDesignerStringEditor</body>

<body package="SeasideWebDesignerTool" selector="fileEditor">fileEditor
	| member |
	self libraryViewer notNil 
		ifTrue: 
			[member := self libraryViewer selectedMember.
			member notNil 
				ifTrue: 
					[fileEditor isNil ifTrue: [fileEditor := self editorClass new].
					fileEditor
						type: self type;
						file: member]]
		ifFalse: [fileEditor := nil].
	^fileEditor</body>

<body package="SeasideWebDesignerTool" selector="library:">library: anObject
	library := anObject.
	libraryViewer isNil 
		ifTrue: [libraryViewer := WAWebDesignerLibraryMaintainer new].
	libraryViewer library: library.
	libraryViewer editor: self.
	libraryViewer type: self genericType.
	fileEditor notNil ifTrue: [fileEditor library: library]</body>

<body package="SeasideWebDesignerTool" selector="libraryViewer">libraryViewer
	^libraryViewer</body>

<body package="SeasideWebDesignerTool" selector="libraryViewer:">libraryViewer: anObject 
	libraryViewer := anObject</body>

<body package="SeasideWebDesignerTool" selector="type">type
	^type</body>

<body package="SeasideWebDesignerTool" selector="type:">type: anObject
	type := anObject</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerEditor</class-id> <category>actions</category>

<body package="SeasideWebDesignerTool" selector="enterEditMode">enterEditMode
	^self fileEditor enterEditMode</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerEditor</class-id> <category>testing</category>

<body package="SeasideWebDesignerTool" selector="handlesType:">handlesType: aType
	^ self type == aType</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerLoader</class-id> <category>rendering</category>

<body package="SeasideWebDesignerTool" selector="children">children
	^fileViewer isNil ifFalse:
		[Array with: fileViewer]
	ifTrue:
		[#()].</body>

<body package="SeasideWebDesignerTool" selector="renderContentOn:">renderContentOn: html 
	self renderUploadFormOn: html.
	self renderErrorTextOn: html.
	html render: fileViewer</body>

<body package="SeasideWebDesignerTool" selector="renderUploadFormOn:">renderUploadFormOn: html 
	html heading: self uploadLabel.
	(html form)
		multipart;
		with: 
				[html fileUpload callback: 
						[:f | 
						
						[self file: f.
						fileViewer uploadDate: Timestamp now] on: Error
								do: [:e | errorText := 'This is not a supported file type, ' , f contentType]].
				html submitButton text: 'Load']</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerLoader</class-id> <category>events</category>

<body package="SeasideWebDesignerTool" selector="fileHasChanged">fileHasChanged
	(#(#css #javascript) includes: (self fileTypeForFile: self file)) 
		ifFalse: 
			[file := self file asImage.
			fileViewer := WAWebDesignerPictureViewer new]
		ifTrue: 
			[fileViewer := WAWebDesignerStringViewer new].
	fileViewer
		type: self type;
		file: self file</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerLoader</class-id> <category>accessing</category>

<body package="SeasideWebDesignerTool" selector="uploadLabel">uploadLabel
	^'Upload CSS, Javascript or Picture'</body>
</methods>

<methods>
<class-id>Seaside.SlidingDoors</class-id> <category>basics</category>

<body package="SeasideWebDesignerTool" selector="basics">basics
	^'div.clearer {clear: both}'</body>
</methods>

<methods>
<class-id>Seaside.SlidingDoors</class-id> <category>halo</category>

<body package="SeasideWebDesignerTool" selector="sourceStyle">sourceStyle
	^'
.halo-source .html-source {
	font-family: courier, serif;
	font-size: 9pt;
}

.halo-source .xmlDeclaration {
	color: limegreen;
	font-style: italic;
}

.halo-source .doctype {
	color: skyblue;
	font-style: italic;
}

.halo-source .tag-known {
	color: purple;
	font-weight: bold;
}

.halo-source .attribute-known {
	font-weight: bold;
}

.halo-source .attribute-value {
	color: blue;
}

.halo-source .template {
	color: blue;
	font-weight: bold;
}

'</body>
</methods>

<methods>
<class-id>Seaside.SlidingDoors class</class-id> <category>properties</category>

<body package="SeasideWebDesignerTool" selector="createdBy">createdBy
	^'Douglas Bowman'</body>

<body package="SeasideWebDesignerTool" selector="creationDate">creationDate
	^'April 13, 2005 12:00:00.001'</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerViewer</class-id> <category>rendering</category>

<body package="SeasideWebDesignerTool" selector="children">children
	^fileSaver isNil ifTrue: [#()] ifFalse: [Array with: fileSaver]</body>

<body package="SeasideWebDesignerTool" selector="rendererClass">rendererClass
	^WAAsyncRenderCanvas</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerViewer</class-id> <category>accessing</category>

<body package="SeasideWebDesignerTool" selector="creationDate">creationDate
	^creationDate</body>

<body package="SeasideWebDesignerTool" selector="creationDate:">creationDate: anObject
	creationDate := anObject</body>

<body package="SeasideWebDesignerTool" selector="file">file
	^file</body>

<body package="SeasideWebDesignerTool" selector="file:">file: anObject 
	| old |
	old := file.
	file := anObject.
	fileSaver isNil 
		ifTrue: 
			[fileSaver := self saverClass new.
			fileSaver fileViewer: self].
	anObject == old ifFalse: [self fileHasChanged]</body>

<body package="SeasideWebDesignerTool" selector="fileContents">fileContents
	^self file contents</body>

<body package="SeasideWebDesignerTool" selector="fileName">fileName
	^self file fileName</body>

<body package="SeasideWebDesignerTool" selector="genericType">genericType
	^self isPicture ifTrue: ['picture'] ifFalse: [self type]</body>

<body package="SeasideWebDesignerTool" selector="library:">library: library

	fileSaver library isNil ifTrue: [fileSaver library: library].</body>

<body package="SeasideWebDesignerTool" selector="saverClass">saverClass
	^WAWebDesignerFileSaverLong</body>

<body package="SeasideWebDesignerTool" selector="type">type
	^type</body>

<body package="SeasideWebDesignerTool" selector="type:">type: anObject
	type := anObject</body>

<body package="SeasideWebDesignerTool" selector="uploadDate">uploadDate
	uploadDate isNil ifTrue: [uploadDate := file uploadDate].
	^uploadDate</body>

<body package="SeasideWebDesignerTool" selector="uploadDate:">uploadDate: anObject
	uploadDate := anObject</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerViewer</class-id> <category>events</category>

<body package="SeasideWebDesignerTool" selector="fileHasChanged">fileHasChanged</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerPictureViewer</class-id> <category>accessing</category>

<body package="SeasideWebDesignerTool" selector="contentType">contentType
	self isGIF ifTrue: [^'image/gif'].
	self isPNG ifTrue: [^'image/png'].
	self isJPEG ifTrue: [^'image/jpeg'].
	^ 'image'</body>

<body package="SeasideWebDesignerTool" selector="extendedLabel">extendedLabel
	self isGIF ifTrue: [^'GIF picture'].
	self isPNG ifTrue: [^'PNG picture'].
	self isJPEG ifTrue: [^'JPEG picture'].
	^ 'Picture'</body>

<body package="SeasideWebDesignerTool" selector="label">label
	self isGIF ifTrue: [^'GIF'].
	self isPNG ifTrue: [^'PNG'].
	self isJPEG ifTrue: [^'JPEG'].
	^ 'Picture'</body>

<body package="SeasideWebDesignerTool" selector="type">type
	^ file type</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerPictureViewer</class-id> <category>testing</category>

<body package="SeasideWebDesignerTool" selector="isGIF">isGIF
	^ self type == #gif</body>

<body package="SeasideWebDesignerTool" selector="isJPEG">isJPEG
	^ self type == #jpeg</body>

<body package="SeasideWebDesignerTool" selector="isPicture">isPicture
	^ true</body>

<body package="SeasideWebDesignerTool" selector="isPNG">isPNG
	^ self type == #png</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerPictureViewer</class-id> <category>rendering</category>

<body package="SeasideWebDesignerTool" selector="renderContentOn:">renderContentOn: html 
	html heading: self extendedLabel.
	(html div)
		id: #pictureView;
		with: 
				[(html image)
					document: file contents;
					mimeType: file contentType;
					fileName: file fileName.
				self renderPictureDetailsOn: html].
	html render: fileSaver</body>

<body package="SeasideWebDesignerTool" selector="renderPictureDetailsOn:">renderPictureDetailsOn: html 
	html heading: self extendedLabel , ' properties'.
	(html div)
		id: #'picture-details';
		with: 
				[html table: 
						[html tableRow: 
								[html tableHeading: 'File name'.
								html tableHeading: 'Width'.
								html tableHeading: 'Height'.
								html tableHeading: 'Content-type'.
								html tableHeading: 'Type'.
								html tableHeading: 'Size'].
						html tableRow: 
								[html tableData: file fileName.
								html tableData: file width.
								html tableData: file height.
								html tableData: file contentType.
								html tableData: file type.
								html tableData: file contents size]]]</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerQuickPictureViewer</class-id> <category>accessing</category>

<body package="SeasideWebDesignerTool" selector="saverClass">saverClass
	^WAWebDesignerFileSaver</body>
</methods>

<methods>
<class-id>Seaside.SampleStyles class</class-id> <category>properties</category>

<body package="SeasideWebDesignerTool" selector="createdBy">createdBy
	^'mbany@cincom.com'</body>

<body package="SeasideWebDesignerTool" selector="creationDate">creationDate
	^'April 13, 2005 12:00:00.000'</body>

<body package="SeasideWebDesignerTool" selector="isEditable">isEditable
	^true</body>
</methods>

<methods>
<class-id>Seaside.SampleTree</class-id> <category>rendering</category>

<body package="SeasideWebDesignerTool" selector="renderContentOn:">renderContentOn: html 
	(html div)
		id: 'tree';
		with: 
				[self renderCreditsOn: html.
				self renderTreeMenuOn: html
					with: 
						[self renderTreeForSearchEnginesOn: html.
						self renderTreeForContactsOn: html]].
	status == #sayHello ifTrue: [self sayHelloOn: html].
	html script: 'initMenus();externalLinks();'</body>

<body package="SeasideWebDesignerTool" selector="renderCreditsOn:">renderCreditsOn: html 
	html paragraph: 
			[(html anchor)
				url: 'http://www.dnolan.com/code/js/listmenu/';
				relationship: 'external';
				with: 'listmenu'.
			html
				space;
				text: 'By Daniel Nolan']</body>

<body package="SeasideWebDesignerTool" selector="renderTreeForContactsOn:">renderTreeForContactsOn: html 
	^self 
		renderTreeNode: 'Contact'
		on: html
		opened: true
		with: 
			[self 
				renderTreeNode: 'Contact us'
				on: html
				opened: true
				with: 
					[self renderTreeLeafOn: html
						with: 
							[(html anchor)
								url: 'http://www.seaside.st';
								relationship: 'external';
								with: 'Seaside!'].
					self renderTreeLeafOn: html
						with: 
							[(html anchor)
								callback: [status := #sayHello];
								with: 'Hello!']]	"End node level 2"]</body>

<body package="SeasideWebDesignerTool" selector="renderTreeForSearchEnginesOn:">renderTreeForSearchEnginesOn: html 
	self 
		renderTreeNode: 'Search'
		on: html
		with: 
			[self 
				renderTreeNode: 'Search engines'
				on: html
				with: 
					[self searchEngines do: 
							[:each | 
							self renderTreeLeafOn: html
								with: 
									[(html anchor)
										url: each first;
										relationship: 'external';
										with: each last]]]]</body>

<body package="SeasideWebDesignerTool" selector="renderTreeLeafOn:with:">renderTreeLeafOn: html with: anObject 
	"A leaf is a list item that does not contain a nested list"

	(html listItem)
		class: #treeleaf;
		with: anObject</body>

<body package="SeasideWebDesignerTool" selector="renderTreeMenuOn:opened:with:">renderTreeMenuOn: html opened: aBoolean with: anObject 
	"A menu is a list"

	(html unorderedList)
		class: #treemenuopen if: aBoolean;
		class: #treemenu if: aBoolean not;
		with: anObject</body>

<body package="SeasideWebDesignerTool" selector="renderTreeMenuOn:with:">renderTreeMenuOn: html with: anObject 
	self 
		renderTreeMenuOn: html
		opened: false
		with: anObject</body>

<body package="SeasideWebDesignerTool" selector="renderTreeNode:on:opened:with:">renderTreeNode: text on: html opened: aBoolean with: submenu 
	"A Node is a list item that contains a nested list"

	(html listItem)
		class: #treenodeopen if: aBoolean;
		class: #treenode if: aBoolean not;
		with: 
				[(html anchor)
					url: '';
					with: text.
				html unorderedList: submenu]</body>

<body package="SeasideWebDesignerTool" selector="renderTreeNode:on:with:">renderTreeNode: text on: html with: submenu 
	self 
		renderTreeNode: text
		on: html
		opened: false
		with: submenu</body>

<body package="SeasideWebDesignerTool" selector="sayHelloOn:">sayHelloOn: html 
	(html div)
		id: #hello;
		with: 
				[html text: 'Hello there !'.
				html break.
				(html anchor)
					callback: [status := nil];
					with: 'OK']</body>

<body package="SeasideWebDesignerTool" selector="style">style
	^' 
#tree {
	float: left;
	font-family: Verdana, Sans;
	font-size: 80%;
}
#hello {
	margin-top: 4em;
	margin-left: 3em;
	float: left;
	font-family: Verdana, Sans;
	font-size: 80%;
	background: lightgreen;
	border: 1px black solid;
	width: 20em;
	padding: 2em;
}

'</body>
</methods>

<methods>
<class-id>Seaside.SampleTree</class-id> <category>resources</category>

<body package="SeasideWebDesignerTool" selector="searchEngines">searchEngines
	^#(
		#( 'http://www.google.com' 'Google!' )
		#( 'http://www.altavista.com' 'Altavista!' )
		#( 'http://www.yahoo.com' 'Yahoo!' )
	)</body>
</methods>

<methods>
<class-id>Seaside.SampleTree class</class-id> <category>seaside</category>

<body package="SeasideWebDesignerTool" selector="description">description
	^'An example using picture, script and style libraries'</body>

<body package="SeasideWebDesignerTool" selector="initialize">initialize
	| app |
	app := self registerAsApplication: 'examples/sampletree'.
	app libraries add: SampleStyles.
	app libraries add: SampleScripts.</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerFile</class-id> <category>accessing</category>

<body package="SeasideWebDesignerTool" selector="computedExtension">computedExtension
	^ self library extensionForContentType: self contentType.</body>

<body package="SeasideWebDesignerTool" selector="contents">contents
	contents isNil ifTrue:
		[contents := self library contentsForMember: selector].
	^ contents.</body>

<body package="SeasideWebDesignerTool" selector="contentType">contentType
	contentType isNil 
		ifTrue: [contentType := self library contentType].
	^contentType</body>

<body package="SeasideWebDesignerTool" selector="creationDate">creationDate
	^creationDate</body>

<body package="SeasideWebDesignerTool" selector="creationDate:">creationDate: anObject
	creationDate := anObject</body>

<body package="SeasideWebDesignerTool" selector="fileName">fileName
	fileName isNil 
		ifTrue: [fileName := self selector , self computedExtension].
	^fileName</body>

<body package="SeasideWebDesignerTool" selector="height">height
	^self image height.</body>

<body package="SeasideWebDesignerTool" selector="image">image
	image isNil ifTrue:
		[image := WAImage fromByteArray: self contents asByteArray].
	^image</body>

<body package="SeasideWebDesignerTool" selector="library">library
	^library</body>

<body package="SeasideWebDesignerTool" selector="library:">library: anObject
	library := anObject</body>

<body package="SeasideWebDesignerTool" selector="modificationDate">modificationDate
	^modificationDate</body>

<body package="SeasideWebDesignerTool" selector="modificationDate:">modificationDate: anObject
	modificationDate := anObject</body>

<body package="SeasideWebDesignerTool" selector="modifiedBy">modifiedBy
	^modifiedBy</body>

<body package="SeasideWebDesignerTool" selector="modifiedBy:">modifiedBy: anObject
	modifiedBy := anObject</body>

<body package="SeasideWebDesignerTool" selector="selector">selector
	^selector</body>

<body package="SeasideWebDesignerTool" selector="selector:">selector: anObject
	selector := anObject</body>

<body package="SeasideWebDesignerTool" selector="type">type
	^self library typeForContentType: contentType</body>

<body package="SeasideWebDesignerTool" selector="uploadDate">uploadDate
	^uploadDate</body>

<body package="SeasideWebDesignerTool" selector="uploadDate:">uploadDate: anObject
	uploadDate := anObject</body>

<body package="SeasideWebDesignerTool" selector="width">width
	^self image width.</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerFile</class-id> <category>save</category>

<body package="SeasideWebDesignerTool" selector="delete">delete
	self library delete: self.</body>

<body package="SeasideWebDesignerTool" selector="save">save
	self library isNil ifTrue: [self error: 'Please select a library'].
	self modificationDate: Timestamp now.
	self creationDate isNil ifTrue: [self creationDate: self modificationDate].
	self library store: self.</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerFile</class-id> <category>testing</category>

<body package="SeasideWebDesignerTool" selector="isPicture">isPicture
	^[self image. true] on: NotAnImage do: [:ex | ^false].</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerFile</class-id> <category>pragmas</category>

<body package="SeasideWebDesignerTool" selector="objectNamed:contentType:creationDate:modificationDate:by:">objectNamed: fName contentType: cType creationDate: cDate modificationDate: mDate by: by

	self contentType: cType.
	self creationDate: (Timestamp readFrom: cDate readStream).
	self modificationDate: (Timestamp readFrom: mDate readStream).
	self modifiedBy: by.
	fileName := fName</body>

<body package="SeasideWebDesignerTool" selector="objectNamed:contentType:uploadDate:creationDate:modificationDate:by:">objectNamed: fName contentType: cType uploadDate: uDate creationDate: cDate modificationDate: mDate by: by

	self uploadDate: (Timestamp readFrom: uDate readStream).
	self objectNamed: fName contentType: cType creationDate: cDate modificationDate: mDate by: by</body>
</methods>

<methods>
<class-id>Seaside.SampleScripts class</class-id> <category>properties</category>

<body package="SeasideWebDesignerTool" selector="createdBy">createdBy
	^'mbany@cincom.com'</body>

<body package="SeasideWebDesignerTool" selector="creationDate">creationDate
	^'April 13, 2005 12:00:00.000'</body>

<body package="SeasideWebDesignerTool" selector="isEditable">isEditable
	^true</body>
</methods>

<methods>
<class-id>Seaside.WAPictureServer</class-id> <category>accessing</category>

<body package="SeasideWebDesignerTool" selector="basePath">basePath
	^basePath</body>

<body package="SeasideWebDesignerTool" selector="basePath:">basePath: anObject
	basePath := anObject</body>

<body package="SeasideWebDesignerTool" selector="name">name
	^name</body>

<body package="SeasideWebDesignerTool" selector="name:">name: aString
	name := aString</body>
</methods>

<methods>
<class-id>Seaside.WAPictureServer</class-id> <category>handling</category>

<body package="SeasideWebDesignerTool" selector="handleRequest:">handleRequest: aRequest 

	"Delegate handling to a new instance of the actual handler
	Could also organize a pool of those actual handlers"
	^WAPictureHandler new
		basePath: self basePath;
		handleRequest: aRequest.</body>
</methods>

<methods>
<class-id>Seaside.WAPictureServer</class-id> <category>testing</category>

<body package="SeasideWebDesignerTool" selector="isApplication">isApplication
	^false</body>
</methods>

<methods>
<class-id>Seaside.WAPictureServer</class-id> <category>initialization</category>

<body package="SeasideWebDesignerTool" selector="setParent:">setParent: aRequestHandler
	"Here only when running with Seaside 2.7"
	super setParent: aRequestHandler.
	self basePath: self parent basePath , '/' , self name</body>
</methods>

<methods>
<class-id>Seaside.WAPictureServer class</class-id> <category>seaside</category>

<body package="SeasideWebDesignerTool" selector="initialize">initialize
	self registerAsPictureHandler: 'images'.</body>

<body package="SeasideWebDesignerTool" selector="registerAsPictureHandler:">registerAsPictureHandler: appName 
	"This is a hack where the idea is to insert a very basic request handler.
	The basic handler receives raw requests"

	^
	["Try  the Seaside 2.7 way"

	WADispatcher default register: ((self new)
				name: appName;
				yourself)] 
			on: Error
			do: 
				[:ex | 
				"The Seaside 2.6 way should work"

				WADispatcher default registerEntryPoint: self new at: appName]</body>
</methods>

<methods>
<class-id>Seaside.WAImageLibrary class</class-id> <category>accessing</category>

<body package="SeasideWebDesignerTool" selector="contentType">contentType
	^ 'image/any'</body>
</methods>

<methods>
<class-id>Seaside.WAImageLibrary class</class-id> <category>properties</category>

<body package="SeasideWebDesignerTool" selector="isEditable">isEditable
	^ false</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerLibraryMaintainer</class-id> <category>actions</category>

<body package="SeasideWebDesignerTool" selector="addNewMember">addNewMember
	self selectedMember: self library newMember.
	^self editor enterEditMode</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerLibraryMaintainer</class-id> <category>accessing</category>

<body package="SeasideWebDesignerTool" selector="editor">editor
	^editor</body>

<body package="SeasideWebDesignerTool" selector="editor:">editor: anObject
	editor := anObject</body>

<body package="SeasideWebDesignerTool" selector="library:">library: anObject
	library == anObject ifTrue: [self selectedMember: nil].
	library := anObject.</body>

<body package="SeasideWebDesignerTool" selector="libraryHeadings">libraryHeadings
	^#('Member name' 'Type' 'Uploaded' 'Created' 'Modified' 'By' 'Actions')</body>

<body package="SeasideWebDesignerTool" selector="selectedMember">selectedMember
	^selectedMember</body>

<body package="SeasideWebDesignerTool" selector="selectedMember:">selectedMember: anObject
	selectedMember := anObject</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerLibraryMaintainer</class-id> <category>rendering</category>

<body package="SeasideWebDesignerTool" selector="renderActionsForMember:on:">renderActionsForMember: member on: html 
	(html span)
		class: #'download-action';
		with: 
				[(html anchor)
					document: member contents
						mimeType: member contentType
						fileName: member fileName;
					with: 
							[html span: 'download'.
							'']].
	(self editor handlesType: member type) 
		ifTrue: 
			[html space.
			(html imageButton)
				callback: [self selectedMember: member];
				form: (Pictures at: #view)].
	library isEditable 
		ifTrue: 
			[html space.
			(html imageButton)
				callback: [member delete];
				form: (Pictures at: #delete)]</body>

<body package="SeasideWebDesignerTool" selector="renderContentOn:">renderContentOn: html 
	library isNil ifTrue: [^self].
	(html div)
		id: #library;
		with: 
				[html heading: 'Contents of ' , self library name.
				self renderLibraryPropertiesOn: html.
				html form: 
						[self renderLibraryMembersOn: html.
						self renderNewMemberButtonOn: html]]</body>

<body package="SeasideWebDesignerTool" selector="renderLibraryMember:on:">renderLibraryMember: member on: html 
	^html tableRow: 
		[html tableData: member selector.
		html tableData: member contentType.
		html tableData: member uploadDate.
		html tableData: member creationDate.
		html tableData: member modificationDate.
		html tableData: member modifiedBy.
		html tableData: [self renderActionsForMember: member on: html]]</body>

<body package="SeasideWebDesignerTool" selector="renderNewMemberButtonOn:">renderNewMemberButtonOn: html 
	^self editor isPicture 
		ifFalse: 
			[(html imageButton)
				callback: [self addNewMember];
				form: (Pictures at: #newMember)]</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerLibraryMaintainer class</class-id> <category>initialize-release</category>

<body package="SeasideWebDesignerTool" selector="gifImageClass">gifImageClass
	^SeasidePlatformSupport gifImageClass</body>

<body package="SeasideWebDesignerTool" selector="initialize">initialize
	| library |
	library := WAWebDesignerStyle new.
	Pictures := Dictionary new.
	#(#download #view #delete #newMember) do: 
			[:each | 
			Pictures at: each put: (self gifImageClass from: (library perform: each))]</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerStyle class</class-id> <category>properties</category>

<body package="SeasideWebDesignerTool" selector="createdBy">createdBy
	^'mbany@cincom.com'</body>

<body package="SeasideWebDesignerTool" selector="creationDate">creationDate
	^'May 11, 2005 11:30:00.000'</body>

<body package="SeasideWebDesignerTool" selector="isEditable">isEditable
	^false</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerTool</class-id> <category>initialize-release</category>

<body package="SeasideWebDesignerTool" selector="initialize">initialize
	self contents:
	 (WASimpleNavigation new
		add: (WAWebDesignerWelcome new) label: 'Home';
		add: (WAWebDesignerEditor new type: #css) label: 'CSS';
		add: (WAWebDesignerEditor new type: #javascript) label: 'Javascript';
		add: (WAWebDesignerPictureEditor new type: #gif) label: 'Pictures';
		add: WAWebDesignerLoader new label: 'Upload';
		yourself).
	self contents select: 'Home'.</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerTool</class-id> <category>actions</category>

<body package="SeasideWebDesignerTool" selector="initializeWebDesignerTool">initializeWebDesignerTool
	WAWebDesignerTool initialize.
	self session expire.</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerTool</class-id> <category>rendering</category>

<body package="SeasideWebDesignerTool" selector="renderContentOn:">renderContentOn: html 
	self rendererClass == WARenderCanvas
		ifTrue: [^self reportInstallationErrorOn: html].
	html render: contents</body>

<body package="SeasideWebDesignerTool" selector="rendererClass">rendererClass
	^#{WAAsyncRenderCanvas} ifDefinedDo: [:aClass | aClass]
		elseDo: [WARenderCanvas]</body>

<body package="SeasideWebDesignerTool" selector="reportInstallationErrorOn:">reportInstallationErrorOn: html 
	html heading: 'Installlation error'.
	html heading: 'The SeasideAsync package is missing' level: 3.
	html text: 'Make sure this package is loaded, then '.
	(html anchor)
		callback: [self initializeWebDesignerTool];
		with: 're-initialize'</body>

<body package="SeasideWebDesignerTool" selector="updateRoot:">updateRoot: anHtmlRoot 
	super updateRoot: anHtmlRoot.
	anHtmlRoot title: 'Web Designer Tool: ' , contents selection asString.
	anHtmlRoot stylesheet 
		resourceUrl: '../images/SlidingDoors/slidingDoors.css'.
	WAWebDesignerStyle stylesheets 
		do: [:ea | anHtmlRoot stylesheet resourceUrl: '../images/WAWebDesignerStyle/' , ea]</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerTool class</class-id> <category>seaside</category>

<body package="SeasideWebDesignerTool" selector="canBeRoot">canBeRoot

	^ true</body>

<body package="SeasideWebDesignerTool" selector="description">description
	^'A tool for uploading/editing CSS stylesheets, Javascript and Picture files'</body>

<body package="SeasideWebDesignerTool" selector="initialize">initialize
	| app |
	app := self registerAsApplication: 'tools/webdesignertool'.
	#{WAStandardStyles} ifDefinedDo: [:lib | app removeLibrary: lib]. "Seaside 2.6"
	#{WAStandardFiles} ifDefinedDo: [:lib | app removeLibrary: lib]. "Seaside 2.7"
	#{WAAsyncScripts} ifDefinedDo: [:lib | app addLibrary: lib].
	^app</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerPictureEditor</class-id> <category>accessing</category>

<body package="SeasideWebDesignerTool" selector="editorClass">editorClass
	^WAWebDesignerQuickPictureViewer</body>

<body package="SeasideWebDesignerTool" selector="genericType">genericType
	^'picture'</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerPictureEditor</class-id> <category>events</category>

<body package="SeasideWebDesignerTool" selector="fileHasChanged">fileHasChanged
	file := self file asImage.</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerPictureEditor</class-id> <category>testing</category>

<body package="SeasideWebDesignerTool" selector="handlesType:">handlesType: aType
	^ #(jpeg png gif) includes: aType</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerPictureEditor</class-id> <category>accessing-computed</category>

<body package="SeasideWebDesignerTool" selector="typeLabel">typeLabel
	^'picture'</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerLibrary</class-id> <category>code generation</category>

<body package="SeasideWebDesignerTool" selector="addClassMethodsTo:">addClassMethodsTo: aClass

	aClass class compile:
'creationDate
	^' , (self stringForTimestamp: Timestamp now) printString
		classified: self classMethodCategory.

	aClass class compile:
'createdBy
	^' , self author printString 
		classified: self classMethodCategory.

	aClass class compile:
'isEditable
	^true' 
		classified: self classMethodCategory.</body>

<body package="SeasideWebDesignerTool" selector="classMethodCategory">classMethodCategory
	^'properties'</body>

<body package="SeasideWebDesignerTool" selector="createLibrary">createLibrary

	| newClass |
	SystemUtils
		validateClassName: self name asSymbol 
		confirm:
			[:msg :newName | 
			self errorSignal raiseWith: (Array with: 'Try this valid suggested name' with: newName)]
		warn:
			[:msg | 
			self errorSignal raiseWith: (Array with: 'A valid library name is required' with: String new)].
	Smalltalk.Seaside defineClass: self name asSymbol
		superclass: (BindingReference pathString: self root environment name , '.' , self root name)
		indexedType: #none
		private: false
		instanceVariableNames: ''
		classInstanceVariableNames: ''
		imports: ''
		category: 'Seaside-WebDesigner-Tools'
		attributes: #( (#package '(none)') ).
	newClass := ('Seaside.' , self name) asQualifiedReference value.
	self addClassMethodsTo: newClass.
	self storage: newClass.</body>

<body package="SeasideWebDesignerTool" selector="instanceMethodCategoryForMember:">instanceMethodCategoryForMember: aMember
	aMember isPicture ifTrue: [^'uploaded-pictures'].
	^self isCSS ifTrue: ['uploaded-styles'] ifFalse: ['uploaded-javascripts'].</body>

<body package="SeasideWebDesignerTool" selector="methodPragmaForMember:">methodPragmaForMember: aMember
	| outStream |
	outStream := String new writeStream.
	outStream
		nextPutAll: '&lt;objectNamed:';
		space;
		nextPutAll: aMember fileName printString;
		cr;
		tab;
		tab;
		nextPutAll: 'contentType:';
		space;
		nextPutAll: aMember contentType printString.
	aMember uploadDate notNil 
		ifTrue: 
			[outStream
				cr;
				tab;
				tab;
				nextPutAll: 'uploadDate:';
				space;
				nextPutAll:  (self stringForTimestamp: aMember uploadDate) printString].
	outStream
		cr;
		tab;
		tab;
		nextPutAll: 'creationDate:';
		space;
		nextPutAll: (self stringForTimestamp: aMember creationDate) printString;
		cr;
		tab;
		tab;
		nextPutAll: 'modificationDate:';
		space;
		nextPutAll: (self stringForTimestamp: aMember modificationDate) printString;
		cr;
		tab;
		tab;
		nextPutAll: 'by:';
		space;
		nextPutAll: aMember modifiedBy printString;
		nextPut: $&gt;.
	^outStream contents</body>

<body package="SeasideWebDesignerTool" selector="sourceCodeForMember:">sourceCodeForMember: aMember

	aMember selector isEmptyOrNil ifTrue: [self error: 'Please supply a name for the ' , self fileLabel].
	^aMember isPicture ifTrue:
		[self sourceCodeForPictureMember: aMember]
	ifFalse:
		[self sourceCodeForStringMember: aMember]</body>

<body package="SeasideWebDesignerTool" selector="sourceCodeForPictureMember:">sourceCodeForPictureMember: aMember

	| source |
	source := (String new: aMember contents size) writeStream.
	source
		nextPutAll: aMember selector;
		cr;
		tab;
		nextPutAll: (self methodPragmaForMember: aMember);
		cr;
		cr;
		tab;
		nextPutAll: '^ ByteArray fromPackedString:';
		cr;
		nextPutAll: aMember contents asPackedString printString.
	^ source contents</body>

<body package="SeasideWebDesignerTool" selector="sourceCodeForStringMember:">sourceCodeForStringMember: aMember

	| source |
	source := (String new: aMember contents size) writeStream.
	source
		nextPutAll: aMember selector;
		cr;
		tab;
		nextPutAll: (self methodPragmaForMember: aMember);
		cr;
		cr;
		tab;
		nextPut: $^;
		nextPut: $';
		cr.
	aMember contents asString do:
		[:each |
		source nextPut: each.
		each == $' ifTrue: [source nextPut: each]].
	source
		cr;
		nextPut: $'.
	^ source contents</body>

<body package="SeasideWebDesignerTool" selector="stringForTimestamp:">stringForTimestamp: aTimestamp

	^ aTimestamp displayStringForLocale: (Locale getLocale: #C)</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerLibrary</class-id> <category>accessing</category>

<body package="SeasideWebDesignerTool" selector="author">author
	^self isStored ifTrue: [self storage createdBy] ifFalse: [author]</body>

<body package="SeasideWebDesignerTool" selector="author:">author: anObject
	author := anObject</body>

<body package="SeasideWebDesignerTool" selector="contentType">contentType
	^ self storage contentType</body>

<body package="SeasideWebDesignerTool" selector="creationDate">creationDate
	^self isStored
		ifTrue: [Timestamp readFrom: self storage creationDate readStream]
		ifFalse: [creationDate]</body>

<body package="SeasideWebDesignerTool" selector="creationDate:">creationDate: anObject
	creationDate := anObject</body>

<body package="SeasideWebDesignerTool" selector="extension">extension
	^ self extensionForContentType: self contentType</body>

<body package="SeasideWebDesignerTool" selector="extensionForContentType:">extensionForContentType: contentType
	^ Extensions at: contentType</body>

<body package="SeasideWebDesignerTool" selector="fileLabel">fileLabel
	^self isCSS ifTrue: ['CSS'] ifFalse: ['javascript'].</body>

<body package="SeasideWebDesignerTool" selector="members">members
	members isNil ifTrue: [self initializeMembers].
	^members</body>

<body package="SeasideWebDesignerTool" selector="members:">members: anObject
	members := anObject</body>

<body package="SeasideWebDesignerTool" selector="name">name
	^self isStored ifTrue: [self storage name] ifFalse: [name]</body>

<body package="SeasideWebDesignerTool" selector="name:">name: anObject
	name := anObject</body>

<body package="SeasideWebDesignerTool" selector="root">root
	^self class rootForType: self type</body>

<body package="SeasideWebDesignerTool" selector="storage">storage
	^storage</body>

<body package="SeasideWebDesignerTool" selector="storage:">storage: anObject
	storage := anObject.</body>

<body package="SeasideWebDesignerTool" selector="type">type
	^self isStored 
		ifTrue: [self class typeForClass: self storage superclass]
		ifFalse: [type]</body>

<body package="SeasideWebDesignerTool" selector="type:">type: anObject
	type := anObject</body>

<body package="SeasideWebDesignerTool" selector="typeForContentType:">typeForContentType: contentType
	^ Types at: contentType</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerLibrary</class-id> <category>members</category>

<body package="SeasideWebDesignerTool" selector="checkEditable">checkEditable
	self isEditable ifFalse: [self error: 'This library is read-only'].</body>

<body package="SeasideWebDesignerTool" selector="contentsForMember:">contentsForMember: memberName
	^ self storage new perform: memberName</body>

<body package="SeasideWebDesignerTool" selector="delete:">delete: aMember
	self checkEditable.
	self storage removeSelector: aMember selector</body>

<body package="SeasideWebDesignerTool" selector="newCSSContents">newCSSContents
	^'
/*
	Short description of this CSS style sheet
	Author : Your Name
	http://www.yourorganisation.com/code/css/mystyle
*/

body {
	font-size: small;
	font-weight: normal;
	font-style: normal;
}
'</body>

<body package="SeasideWebDesignerTool" selector="newJavascriptContents">newJavascriptContents
	^'
/*
	Short description of this Javascript
	Author : Your Name
	http://www.yourorganisation.com/code/js/myscript
*/
'</body>

<body package="SeasideWebDesignerTool" selector="newMember">newMember
	^(self class memberClass new)
		library: self;
		selector: self newMemberName;
		contents: self newMemberContents;
		yourself</body>

<body package="SeasideWebDesignerTool" selector="newMemberContents">newMemberContents
	self type = #javascript ifTrue: [^self newJavascriptContents copy].
	self type = #css ifTrue: [^self newCSSContents copy].
	^ String new.</body>

<body package="SeasideWebDesignerTool" selector="newMemberName">newMemberName
	^'newMember'</body>

<body package="SeasideWebDesignerTool" selector="store:">store: aMember
	| source |
	self checkEditable.
	source := self sourceCodeForMember: aMember.
	self storage compile: source classified: (self instanceMethodCategoryForMember: aMember).</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerLibrary</class-id> <category>creating</category>

<body package="SeasideWebDesignerTool" selector="create">create
	self isStored ifFalse: [self createLibrary].</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerLibrary</class-id> <category>initialize-release</category>

<body package="SeasideWebDesignerTool" selector="getMemberForMethod:">getMemberForMethod: method 

	| file |
	file := (self class memberClass new)
		library: self;
		selector: method selector;
		yourself.
	method attributeMessages isNil ifFalse:
		[method attributeMessages do:
			[:each | file perform: each selector withArguments: each arguments]].
	^file.</body>

<body package="SeasideWebDesignerTool" selector="initializeMembers">initializeMembers
	members := self isStored 
				ifTrue: 
					[self storage methodDictionary collect: [:each | self getMemberForMethod: each]]
				ifFalse: [#()]</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerLibrary</class-id> <category>testing</category>

<body package="SeasideWebDesignerTool" selector="isCSS">isCSS
	^ self type == #css</body>

<body package="SeasideWebDesignerTool" selector="isEditable">isEditable
	^ self isStored and: [self storage isEditable].</body>

<body package="SeasideWebDesignerTool" selector="isJavascript">isJavascript
	^ self type == #javascript</body>

<body package="SeasideWebDesignerTool" selector="isPicture">isPicture
	^ #(gif jpeg png) includes: self type.</body>

<body package="SeasideWebDesignerTool" selector="isStored">isStored
	^ self storage notNil</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerLibrary</class-id> <category>user interface</category>

<body package="SeasideWebDesignerTool" selector="printOn:">printOn: aStream 
	self storage name printOn: aStream</body>

<body package="SeasideWebDesignerTool" selector="readOnlyStatusText">readOnlyStatusText
	^ self isEditable ifTrue: [''] ifFalse: [', read-only']</body>

<body package="SeasideWebDesignerTool" selector="shortSummary">shortSummary
	^ '(library created ' , self creationDate printString , ', by ' , self author , self readOnlyStatusText , ')'.</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerLibrary class</class-id> <category>instance creation</category>

<body package="SeasideWebDesignerTool" selector="fromClass:">fromClass: aClass

	^ (self new)
		storage: aClass;
		yourself.</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerLibrary class</class-id> <category>accessing</category>

<body package="SeasideWebDesignerTool" selector="librariesForType:">librariesForType: type
	| subs rootClasses |
	rootClasses := self rootsForType: type.
	subs := Set new.
	rootClasses do:
		[:root |
		subs addAll: (root allSubclasses select:
		[:each | each respondsTo: #creationDate])].
	subs := subs asOrderedCollection.
	^ subs collect:
		[:each | self fromClass: each].</body>

<body package="SeasideWebDesignerTool" selector="memberClass">memberClass
	^WAWebDesignerFile</body>

<body package="SeasideWebDesignerTool" selector="rootForType:">rootForType: type
	^LibraryTypes at: type</body>

<body package="SeasideWebDesignerTool" selector="rootsForType:">rootsForType: type 
	| rootClasses |
	rootClasses := Set with: (self rootForType: type).
	" CSS style libraries are allowed to hold pictures"
	(rootClasses includes: WAImageLibrary) 
		ifTrue: [rootClasses add: WAStyleLibrary].
	^rootClasses</body>

<body package="SeasideWebDesignerTool" selector="typeForClass:">typeForClass: aClass
	^LibraryTypes keyAtValue: aClass</body>
</methods>

<methods>
<class-id>Seaside.WAPictureHandler</class-id> <category>private</category>

<body package="SeasideWebDesignerTool" selector="authorizedClasses">authorizedClasses

	^Array with: WAImageLibrary with: WAImage with: WAStringLibrary</body>

<body package="SeasideWebDesignerTool" selector="extractFrom:oneTokensAndDo:">extractFrom: tokens oneTokensAndDo: aBlock
	"One token tells us the selector and the file extension,
	the class defaults to WAImage"
 	| x extension class selector |
	class := #{Seaside.WAImage}.
	fileName := tokens at: 1.
	selector := (x := fileName indexOf: $.) &gt; 0 
				ifTrue: 
					[extension := fileName copyFrom: x + 1 to: fileName size.
					fileName copyFrom: 1 to: x - 1]
				ifFalse: 
					[extension := String new.
					fileName].
	aBlock value: class value: selector value: extension.</body>

<body package="SeasideWebDesignerTool" selector="extractFrom:twoTokensAndDo:">extractFrom: tokens twoTokensAndDo: aBlock 
	"Two tokens, first tokens tells us the class,
	the second tells us the selector and the file extension"
	| x class selector extension |
	class := ('Seaside.' , tokens first) asQualifiedReference bindingOrNil.
	fileName := tokens at: 2.
	selector := (x := fileName indexOf: $.) &gt; 0 
				ifTrue: 
					[extension := fileName copyFrom: x + 1 to: fileName size.
					fileName copyFrom: 1 to: x - 1]
				ifFalse: 
					[extension := String new.
					fileName].
	aBlock value: class value: selector value: extension.</body>

<body package="SeasideWebDesignerTool" selector="extractRelevantTokensFrom:">extractRelevantTokensFrom: url 
	| fName |
	^(url indexOfSubCollection: basePath startingAt: 1) = 1 
		ifTrue: 
			[fName := url copyFrom: basePath size + 1 to: url size.
			fName findTokens: $/]
		ifFalse: [#()]</body>

<body package="SeasideWebDesignerTool" selector="isAuthorized:">isAuthorized: anObject
	^ anObject class isMeta ifTrue:
		["class method"
		self authorizedClasses anySatisfy: [:class | anObject == class or: [anObject inheritsFrom: class]]]
	ifFalse:
		["instance method"
		self authorizedClasses anySatisfy: [:class | anObject isKindOf: class]]</body>

<body package="SeasideWebDesignerTool" selector="setContentTypeForExtension:">setContentTypeForExtension: ext

	ext isNil ifTrue: [^self].
	mimeType := 'image/' , ext asLowercase.
	ext = 'jpg' ifTrue: [mimeType := 'image/jpeg'].
	ext = 'jpe' ifTrue: [mimeType := 'image/jpeg'].</body>

<body package="SeasideWebDesignerTool" selector="setupDocument:from:extension:">setupDocument: selector from: anObject extension: extension
	| meth |
	(anObject respondsTo: selector) ifFalse: [^self].
	(self isAuthorized: anObject) ifFalse: [^self].
	document := anObject perform: selector.
	self setContentTypeForExtension: extension.
	"Pragmas"
	meth := anObject class methodDictionary at: selector.
	meth attributeMessages isNil ifTrue: [^self].
	meth attributeMessages 
		do: [:each | self perform: each selector withArguments: each arguments]</body>
</methods>

<methods>
<class-id>Seaside.WAPictureHandler</class-id> <category>accessing</category>

<body package="SeasideWebDesignerTool" selector="basePath">basePath
	^basePath</body>

<body package="SeasideWebDesignerTool" selector="basePath:">basePath: anObject
	basePath := anObject</body>
</methods>

<methods>
<class-id>Seaside.WAPictureHandler</class-id> <category>handling</category>

<body package="SeasideWebDesignerTool" selector="handleRequest:">handleRequest: aRequest 
	"Parse the request and construct file needed"

	| tokens classRef selector extension actionBlock |
	actionBlock := 
			[:a :b :c | 
			classRef := a.
			selector := b.
			extension := c].
	tokens := self extractRelevantTokensFrom: (originalUrl := aRequest url).
	tokens size = 2 
		ifTrue: [self extractFrom: tokens twoTokensAndDo: actionBlock].
	tokens size = 1 
		ifTrue: [self extractFrom: tokens oneTokensAndDo: actionBlock].
	classRef notNil 
		ifTrue: 
			[ | obj |
			obj := classRef value.
			"Try with both class and instance methods"
			(obj respondsTo: selector asSymbol) ifFalse: [obj := obj new].
			self 
				setupDocument: selector asSymbol
				from: obj
				extension: extension].
	^self response</body>

<body package="SeasideWebDesignerTool" selector="response">response

	^ document isNil ifTrue:
		[WAResponse notFound: originalUrl]
	ifFalse:
		[super response]</body>
</methods>

<methods>
<class-id>Seaside.WAPictureHandler</class-id> <category>handling - pragmas</category>

<body package="SeasideWebDesignerTool" selector="objectNamed:contentType:creationDate:modificationDate:by:">objectNamed: name contentType: cType creationDate: cDate modificationDate: mDate by: author
	fileName := name.
	mimeType := cType.</body>

<body package="SeasideWebDesignerTool" selector="objectNamed:contentType:uploadDate:creationDate:modificationDate:by:">objectNamed: name contentType: cType uploadDate: uDate creationDate: cDate modificationDate: mDate by: author
	fileName := name.
	mimeType := cType.</body>

<body package="SeasideWebDesignerTool" selector="pictureNamed:whenUpLoaded:contentType:">pictureNamed: name whenUpLoaded: uDate contentType: cType

	fileName := name.
	mimeType := cType.</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerStringViewer</class-id> <category>accessing</category>

<body package="SeasideWebDesignerTool" selector="contentType">contentType
	self isCSS ifTrue: [^'text/css'].
	self isJavascript ifTrue: [^'text/javascript'].
	^ 'text'</body>

<body package="SeasideWebDesignerTool" selector="extendedLabel">extendedLabel
	self isCSS ifTrue: [^'CSS file'].
	self isJavascript ifTrue: [^'javascript file'].
	^ 'file'</body>

<body package="SeasideWebDesignerTool" selector="label">label
	self isCSS ifTrue: [^'CSS'].
	self isJavascript ifTrue: [^'javascript'].
	^ 'file'</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerStringViewer</class-id> <category>testing</category>

<body package="SeasideWebDesignerTool" selector="isCSS">isCSS
	^ self type == #css</body>

<body package="SeasideWebDesignerTool" selector="isJavascript">isJavascript
	^ self type == #javascript</body>

<body package="SeasideWebDesignerTool" selector="isPicture">isPicture
	^ false</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerStringViewer</class-id> <category>rendering</category>

<body package="SeasideWebDesignerTool" selector="renderContentOn:">renderContentOn: html 
	html heading: 'Source code of ' , self extendedLabel.
	(html div)
		id: #sourceView;
		with: [html preformatted: self fileContents asString].
	html render: fileSaver</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerStringEditor</class-id> <category>accessing</category>

<body package="SeasideWebDesignerTool" selector="enterEditMode">enterEditMode
	isEditMode := true</body>

<body package="SeasideWebDesignerTool" selector="fileContents:">fileContents: aString
	^self file contents: aString</body>

<body package="SeasideWebDesignerTool" selector="saverClass">saverClass
	^WAWebDesignerFileSaver</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerStringEditor</class-id> <category>initialize-release</category>

<body package="SeasideWebDesignerTool" selector="initialize">initialize
	isEditMode := false.</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerStringEditor</class-id> <category>rendering</category>

<body package="SeasideWebDesignerTool" selector="renderContentOn:">renderContentOn: html 
	html heading: 'Source code of ' , self extendedLabel.
	isEditMode 
		ifTrue: 
			[(html form)
				name: #sourceForm;
				with: 
						[(html anchor)
							callback: [isEditMode := false];
							submitFormNamed: #sourceForm;
							with: 'Done with editing'.
						html break.
						(html textArea)
							id: #sourceEdit;
							class: #scrollable;
							rows: 15;
							value: self fileContents asString;
							callback: [:v | self file contents: v]]]
		ifFalse: 
			[(html anchor)
				callback: [isEditMode := true];
				with: 'Edit'.
			(html div)
				id: #sourceView;
				with: [html preformatted: self fileContents asString].
			html render: fileSaver]</body>
</methods>

<methods>
<class-id>Seaside.SamplePictures class</class-id> <category>properties</category>

<body package="SeasideWebDesignerTool" selector="createdBy">createdBy
	^'mbany@cincom.com'</body>

<body package="SeasideWebDesignerTool" selector="creationDate">creationDate
	^'April 13, 2005 12:00:00.000'</body>

<body package="SeasideWebDesignerTool" selector="isEditable">isEditable
	^true</body>
</methods>

<methods>
<class-id>Seaside.WAStringLibrary class</class-id> <category>properties</category>

<body package="SeasideWebDesignerTool" selector="isEditable">isEditable
	^ false</body>
</methods>

<methods>
<class-id>Seaside.WAScriptLibrary class</class-id> <category>accessing</category>

<body package="SeasideWebDesignerTool" selector="contentType">contentType
	^ 'text/javascript'</body>
</methods>

<methods>
<class-id>Seaside.WAStyleLibrary class</class-id> <category>accessing</category>

<body package="SeasideWebDesignerTool" selector="contentType">contentType
	^ 'text/css'</body>

<body package="SeasideWebDesignerTool" selector="stylesheets">stylesheets
	"Answer a collection of stylesheet names"
	^(self methodDictionary select: 
			[:each | 
			each class == AnnotatedMethod 
				and: [(each attributeMessages first arguments at: 2) = 'text/css']]) 
		collect: [:each | each attributeMessages first arguments at: 1]</body>
</methods>

<methods>
<class-id>SeasidePlatformSupport class</class-id> <category>graphics</category>

<body package="SeasideWebDesignerTool" selector="gifImageClass">gifImageClass
	^self isWebToolkit ifTrue: [VisualWave.GIFImage] ifFalse: [Swazoo.GIFImage]</body>
</methods>

<methods>
<class-id>Seaside.SlidingDoors</class-id> <category>uploaded-pictures</category>

<body package="SeasideWebDesignerTool" selector="bg">bg
	&lt;objectNamed: 'bg.gif'
		contentType: 'image/gif'
		uploadDate: 'April 13, 2005 12:00:00.002'
		creationDate: 'April 13, 2005 12:00:00.003'
		modificationDate: 'April 13, 2005 12:00:00.004'
		by: 'Douglas Bowman'&gt;

	^ ByteArray fromPackedString:
'Q4%FNC%!E@@-@LP@@M7#5]/!4?;&gt;?/K4;.[)8M+ 4/3&lt;?OW7&lt;/''9=&gt;+-9NC$5.W(7.;1:.70:^?2:&gt;K%6/#8=/_7=_O5&lt;N'',8?+:&gt;O/;&gt;&gt;/.97]&amp;U^O&amp;6&gt;S''7_7=?^3/:NG$6_G3;.C#6N#+8"G9A@@@@@@@K@@@@@@T@B4@@@W XBFNYF&amp;^JA&amp;,[N.&gt;\B3OK&amp;C_^J;/_N?''"*A0RB0ZO\"$D&amp;%T\I;P:OMA+U*/U8162&gt;56L&gt;B0^C1^&amp;L?(]I*0XK/[!K!&lt;S*?[;?#8Y?&gt;Y&gt;O&gt;@ XDI!HVF!8"I" $V#AZO$IFR$!.U%)^XF06[''I6^'' 2!(*N$)ZHN*J&amp;**:,C+*&gt;0,[D]-KV4,*:6.K.1D+:?0LGAA&lt;SE1,_H2\+FD\7N3=CPDMOT5][VBM''Z6=3]7-?[ENK#9NW%E^#):./+A.;/&lt;OG2&lt;?S0F/_8&gt;_+:@/7&gt;?0@CB!1H,BC@B0 SJ%28L@P@N0@a'</body>

<body package="SeasideWebDesignerTool" selector="left">left
	&lt;objectNamed: 'left.gif'
		contentType: 'image/gif'
		uploadDate: 'April 13, 2005 12:00:00.005'
		creationDate: 'April 13, 2005 12:00:00.006'
		modificationDate: 'April 13, 2005 12:00:00.007'
		by: 'Douglas Bowman'&gt;

	^ ByteArray fromPackedString:
'Q4%FNC%!BPBV@LP_@K^."N?-9^C\3N3*8OG/:^_$6M_R/]/V1M[Q.?S3;_/;&gt;/[5&lt;.#%6-?[2?#7=M''U0.G^4OG/:OC.9&lt;V&gt;(N/(7.7+8.;,8?''8=-3X1+24$MOO-=#S/&gt;;,9NW"5L_@(&gt;K%6"G9A@D@@A&lt;@K@@@@@@I@IX@@@W08B]B"I\A G!L1&gt;@(2/](AF1CT0Q_3+I(C0U/$R!NFLLDHRKIIG+JBL\B:ADI@T.%:$-HK@LJ(H.-TLQ$L8L1U X(!P8DTIPLB!AA 2:%]A(XC0@DD!TLDHD[ 0DC!0\[BH-7@ \F$U"S%Y^LAYRV$)6Z(I:[&amp;Y&gt;X(Z^\)JN"*J2/+*.2)*V)-+B3*+V-.;^=.KR?,[:9/LSA1\KF0;+I3&lt;CQ2MKN5L_U4=''X6=_]3];L8\/#2.WP6.C$9=3_;^K&amp;5.;*&lt;^?+:_C(&lt;/#,=_S3&gt;_4@?.L7&lt;I8=_P\CD-1''4A=C!@8SE(P(&lt;JGB!!T%V (A@C,b'</body>

<body package="SeasideWebDesignerTool" selector="left_on">left_on
	&lt;objectNamed: 'left_on.gif'
		contentType: 'image/gif'
		uploadDate: 'April 13, 2005 12:00:00.008'
		creationDate: 'April 13, 2005 12:00:00.009'
		modificationDate: 'April 13, 2005 12:00:00.010'
		by: 'Douglas Bowman'&gt;

	^ ByteArray fromPackedString:
'Q4%FNC%!BPBV@LP_@O???7]&amp;U_;&gt;?/7=?O+:&gt;O''9=?7=?_3&lt;&gt;/''8=/#7=_W4;?[5&lt;_S2;_K1:?[5&lt;O_6&lt;-7Y5[.3*/W4&lt;8E1X^''&amp;89"K_)NE^INE]::$&amp;-[T3OK1:-[T2&lt;R=-K&amp;1);^.)NK%6"G9A@D@@A&lt;@K@@@@@@I@IX@@@W_8B]&amp;WSTE \!YDRPA0L]!EF1/U67CW+S[E\ OM''$M@4LXD"Y(M MN 6E@CT0GA0J!T@!P,8!D8!GPE!@O!8IQO"_T#TX;;F@4MNU-X+E&amp;Y&lt;&lt;O_@(AA7=!B0-^VE,HXUYSVU-]T%^EA5AM%EULS$=I@D-G'':D?)C.&amp;M*!J(:1I**B-(*:1)[R''-*&amp;8*;N&lt;,+:5/\B?-&lt;GD0;''E2L^;2;CI3LKQ1-KJ5MCS6MWY5=+]7M?N3Z?#..GV9-/(7.+ 9L?,&lt;N;"9_K''=^''7:?''-=O7/&gt;?G&lt;3_,''4E9A_@_5IPPW@ @;'</body>

<body package="SeasideWebDesignerTool" selector="right">right
	&lt;objectNamed: 'right.gif'
		contentType: 'image/gif'
		uploadDate: 'April 13, 2005 12:00:00.011'
		creationDate: 'April 13, 2005 12:00:00.012'
		modificationDate: 'April 13, 2005 12:00:00.013'
		by: 'Douglas Bowman'&gt;

	^ ByteArray fromPackedString:
'Q4%FNC%!$@FV@LP_@MWP.+^."MKL-]''T0^K^4N''&amp;6=;Z2_O2;M[Q/N/(7-[P.&gt;3*8OC.9?_6&lt;&gt;;,8&gt;_$6O+:&gt;O7=?L''B)-SO.MCJ,,7G+\/D*\B8%&gt;W"5M3X1-#S/&lt;?I,L;H+,+C)?3&lt;&gt;&gt;K%6"G9A@D@@A&lt;@K@@@@@BP@YX@@@W?XBBNYF&amp;^ZJ*.[N.&gt;\B3O]F7_^J;/,DQ%''6A$RB0Z#&lt;"$\,%,N)?P*GQJ+U*/6J1627U:H@^B8BHHP,;(-G+M[+/_&lt;K!&lt;S*?[;?"&lt;_,?/&gt;?&gt;@\04GC@$FD&amp;TM"(.L#X:O$IFR$9RU%)^X&amp;Y*[''I6^'':B!(*NVA0\KC0PCE1&amp;&amp;+*&gt;0,[J3-KV6-;"9.+.&lt;/[:?0LGB0&lt;SE1+(LC $XA!$]E 3Q4-OT5][W6M''Z6=3]7-? 8^K#9NW&amp;9&gt;#):-7J*\5#C/G2&lt;?S5=/_8&gt;_+;?O7&gt;?0@CB!1H,JCA 0 SJ.2W(@B3C@LPAE!@,ZKE"1 3Z-3H,ZOG#2AC"!1I,*SI$2!S?:)\2[K%10PIG#0\(BD@3I,8\&gt;+\2[N''39=@ 0(]R+R(4ZMH$2)]2+R)4:]CB;#K(DE" Z-X,6+]2+V+5:= 08(]R;Z,6[M(4:)]2;Z-6;]01&lt;($@AFA1@]8&lt;&gt;+]2;^/7;&gt;@@0,^SK"08\NHD2-^3K"18&lt;^PH1OFPJBY7P$ABF#^3K&amp;39&lt;&gt; P8,^S[*4:]N(T:-^3[*5:=^0X&lt;.^_[*YA @BA@P00K.7;=?@ 0,_S+28&lt;^OH$2-_3+29&lt;&gt;_P(4._S+7:&lt;P0PMT2 PFEC @G 08,_S;:&lt;&gt;_O(4:-_3;:=&gt;?_08&lt;._S;&gt;&gt;?_/8&lt;;N/.)5C!P(A6BW  @PVZNBABBZ(8O&gt;BCC[(8HLPQ"#!!AQVZNFEFFZ(8XLSBKAAAQY4DNBFIIY(8($()*#"""26*BD@GUK W0\"@&amp;C##S#&amp;*NNNOO[(88=@A"''$$DPVZ^RQRBZ)9IILM.''$$4ENDBNHGT P@IQXY*''%%%16:^VWXHXI)YPBTDB%%VJ&amp;*^ZZ[K[)9)-08$"&amp;&amp;RF"F^^]^NZ)999&lt;\#''''&amp;U_6J^" !AY**I-?5!''((X06:."#$OJXZIVKQ&amp;+))Y!&amp;2.Z$]&amp;+*:Z^ !''($)9VJZ.*)*G)JZ**,-.+*(Z.&gt;J..,-KXYZ:689*++$;_.:../0O+XZ;CDE+/+,LX&amp;*62+2B;+;KN*S*$(-MQV"6''?,=Y&amp;*26_6F;+;[^6R$,).NRV.:&amp;8''Y*+;+)Z],/..?@R:V:&lt;=MZ+8;369$,///+6.2:?? XLK,@BE90-0PX''?B3BB#],KLLNQ?0+1AIW#B/EE&amp;_&lt;J,XZ]80*11:GCB+HH)]&lt;K[*%&amp;*02,2"/;KJ+IK&lt;,&lt;:@13623''#W_+CN\N^?,&lt;9(=?204&amp;DDO[_RVQQ&gt;-MJ&lt;-K&gt;54''$$?K[VQTT=-]YQMW:55&amp;EU/;[V\VW&lt;-M)Y]#;556VY_#W[ZT:?M=-M./;547GH_SW_]P=&gt;M=&lt;=:;;5377;_CG# L0=N&gt;L.FG;928(*[3G##H#&lt;N.\^RS:919YY[#G''&amp;D&amp;?N.\N^_:90?.""F41::PJ_#+*?**&gt;.[&gt;..60-;;O.FS_/W,=?&gt;[.::?6-;;6+?C''3[0 &lt;O]?GF385&lt;&lt;''X/373^3#?O]?SR?45==XI_#77!6&amp;&gt;O^O_^K09&gt;&gt;H:OS7;$9)=O^_+*W&lt;9&gt;&gt;9*?C7?''&lt;,&lt;O^/76#89??*[/37?*?/,_:0H(0M\Q,HB2N2@BZ5\&amp;PB7PY[1;XJ8"JLEZT[BB,;( A#^&amp;0@6ZR8L^YATHP?"1C)K0V2L&lt;(Z!R*LJQ&amp;[BEA7,!CJ/E0!%&amp;*(X6/APN\1")G_K0TS;&lt;XZNBJDQX2[BHC3,"D(%E1BWRSH%N''A T(7",JUI1 %Z&lt;( V3*LTL\+FKGF2 ($H@@C,b'</body>

<body package="SeasideWebDesignerTool" selector="right_on">right_on
	&lt;objectNamed: 'right_on.gif'
		contentType: 'image/gif'
		uploadDate: 'April 13, 2005 12:00:00.014'
		creationDate: 'April 13, 2005 12:00:00.015'
		modificationDate: 'April 13, 2005 12:00:00.016'
		by: 'Douglas Bowman'&gt;

	^ ByteArray fromPackedString:
'Q4%FNC%!$@FV@LP_@O????7=?O;&gt;?/S2;_''9=?K1:'']&amp;U_K1:?+:&gt;O_6&lt;/[5&lt;_#7=]GM0YFC]NW!5^#&amp;6.?-9*:$%/''8=.+(7.7*8._#6OW4;?[5&lt;O7=?_G0:_3&lt;&gt;/C.9;65*^/)78A0W&gt;K%6"G9A@D@@A&lt;@K@@@@@BP@YX@@@W?(BFNYF&amp;^ZJ*.[N.&gt;\B3O]F7_^J;/+=]D#H&lt;PPB0Z#&lt;"$\,%,N)?P*GQJ+U*/6J162&gt;4:APDI!QE)\H[^-G+M[+/_&lt;K"\B9YXM.OH^\;/&gt;?&gt;@ XJCQWTVDA4OC@4L!H:O$IFR$66F"@&lt;NDQFT''I6^'':BA%($U":F''*J&amp;**4.#&amp;@8^+KJ3-KV"XX^$C XB/[:?0LGB0&lt;SE1,_H2\+K3L7N3=CQ4-OT5][GFA(R@9\N.0G 8^K#9NW&amp;9&gt;#):./,;^;/&lt;OG2&lt;?S5=/_8&gt;^(ZA@''\D:&lt;LDA!H,JCA 0 SJ%3H,JGC!1@#R)1H,ZKE"1 3Z-3H4^FBB0T(OJ# 3TBB$2!S?:)\2[J%29\0X&lt;*\R[N&amp;3Y,8\&gt;+\2[N''39=@X2*8\FACH&amp;&gt;;A"!]2+R)4:]P(4*]R+V*5Z-X,6+]2+V+5:= 08(]R?U@TP(@$Q((0KZ-6;]08&lt;*]R;^.7[-8&lt;&gt;+]2;^/7;&gt;@@0,^SK#07P0P4K;ZY["18&lt;^PH4.^SK&amp;29\HYM"P&amp;UZFB@[N P8,^S[*4:]N(T:-^3[*5:=^0X&lt;.^S[.6;].8U1]@SBGQ 0\F2@(_S+28&lt;^OH$2-_K/0@[0*=CR"XS+6:=^/X,6/_3+6;=&gt;? 08,_S;:&lt;&gt;_O(4:-_3;;;!P,VA.3VCLG@ //8&lt;&gt;/_3;&gt;???&lt;@A"#  @PVZNBABBZ(8O&gt;BCC[(8HLPB'' R_@N@I%AGFFZ(8XX\].#!!2BF6IDDB2P07W,FHJC"""26:NJKLLX(88045&amp;###S#&amp;*NNNOO[(88=@A"''$$C\NILFQD!" 39ILM.''$$5AFJ^VTUCJ)0YT+&lt;''KM%%16:^VWXHX)9)!$[(''A&amp;V ZXL.Z[K[)Y!)*/"''''''GSVVTR\].Z)99:(8L''''''8@FJ("_ !Y*:JE0H*+(((1NPV"#$D[J:JNRU&amp;+)''9Q^*.&amp;&amp;[6[J:Z^ ,.I)*JRV6,&amp;()*Z*:"B(+.+**7F4B..,-GX!Z:689.*(++36^,V-/ [+J;CBE(,+,\X&amp;&gt;2*22#Y+J+ONQ/,)-MIVZ2''?-]Y&amp;62"66''Y;JK_^! ,(.NJV&amp;2^99*X+I;+*-+,&amp;.&gt;;FJ0.&lt;&lt;-[[);78&lt;$%///1N,&amp;&gt;?@C/2[&lt;@D@3I00P#O\WCBCK.1\LLPI1+11J]R[KF?E6_&lt;2LLZ]&gt;0D11:G''@SHH)]LAL$&amp;"8122!:/3KKFK+=&lt;\\02T4133QG_#GOCN.&gt;\\L&lt;&gt;E0144@DOSWR?Q!&gt;][=IJ6&lt;-44?H&gt;C[V;T$&gt;-[-UV&amp;8-55.I.3[V7W''&gt;-[]!"V4-66]J^#[Z3Z*&gt;-[M-.F0-77LKNS_^0]?-,]=::;,77,W?W;G_ ,09N&gt;KJG,6188*(.3/"3#9_,^NR!S$;9-I^7''G''G%&amp;=&gt;Z^^^U0):#N"Q#$;:-*_[''O+D)*&gt;NZN..F0);;HKNS/.8-?&gt;\N&lt;J6;:9'';;;[BW30]@9O?K+GH94&lt;/&lt;X/36[33-,B__R4SD?=/M]G''W6&lt;5&amp;&gt;_R/_^''0I&gt;&gt;JBLS;8''9)?OR_+*X=1&gt;.N2?C4''&lt;&lt; -\_;_473&gt;(?-''&amp;3?&lt;_?/-_G0H(PHTULE(DOB@\D*!@!3W0[RD@@C,b'</body>
</methods>

<methods>
<class-id>Seaside.SlidingDoors</class-id> <category>uploaded-styles</category>

<body package="SeasideWebDesignerTool" selector="slidingDoors">slidingDoors
	&lt;objectNamed: 'slidingDoors.css'
		contentType: 'text/css'
		creationDate: 'April 13, 2005 12:00:00.017'
		modificationDate: 'April 13, 2005 12:00:00.018'
		by: 'Douglas Bowman'&gt;
	^'
.kalsey .navigation-options {
  background:#fff;
  margin:0;
  padding:0;
  color:#000;
  voice-family: "\"}\""; voice-family:inherit;
  font-size:small;
  }

.kalsey .navigation-options {
  float:left;
  width:100%;
  background:#DAE0D2 url("bg.gif") repeat-x bottom;
  font-size:78%;
  line-height:normal;
  }
.kalsey .navigation-options ul {
  margin:0;
  padding:10px 10px 0;
  list-style:none;
  }
.kalsey .navigation-options li {
  float:left;
  background:url("left.gif") no-repeat left top;
  margin:0;
  padding:0 0 0 9px;
  }
.kalsey .navigation-options a {
  float:left;
  display:block;
  background:url("right.gif") no-repeat right top;
  padding:5px 15px 4px 6px;
  text-decoration:none;
  font-weight:bold;
  color:#765;
  }
/* Commented Backslash Hack
   hides rule from IE5-Mac \*/
.kalsey .navigation-options a {float:none;}
/* End IE5-Mac hack */
.kalsey .navigation-options a:hover {
  color:#333;
  }
.kalsey .navigation-options .option-selected {
  background-image:url("left_on.gif");
  }
.kalsey .navigation-options .option-selected a {
  background-image:url("right_on.gif");
  color:#333;
  padding-bottom:5px;
  }
.kalsey .navigation-content {
	background : #fff;
	border : 1px solid #ccc;
	border-top : none;
	clear : both;
	margin : 0px;
	padding : 15px;
}
'</body>
</methods>

<methods>
<class-id>Seaside.SampleStyles</class-id> <category>uploaded-pictures</category>

<body package="SeasideWebDesignerTool" selector="closed">closed
	&lt;objectNamed: 'closed.gif'
		contentType: 'image/gif'
		uploadDate: 'April 13, 2005 12:00:00.000'
		creationDate: 'April 13, 2005 12:00:00.000'
		modificationDate: 'April 13, 2005 12:00:00.000'
		by: 'Daniel Nolan'&gt;

	^ ByteArray fromPackedString:
'Q4%FNC%!BP@I@O\@@@@@@HRD!O???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????20@@@@@BP@I@@@HI @CBA1HTHCA 0HDG Q0TJEA! XU@) 8LVF@!P4/O,2HLBMA  DA@C,b'</body>

<body package="SeasideWebDesignerTool" selector="open">open
	&lt;objectNamed: 'open.gif'
		contentType: 'image/gif'
		uploadDate: 'April 13, 2005 12:00:00.000'
		creationDate: 'April 13, 2005 12:00:00.000'
		modificationDate: 'April 13, 2005 12:00:00.000'
		by: 'Daniel Nolan'&gt;

	^ ByteArray fromPackedString:
'Q4%FNC%!BP@I@O\@@@@@@HRD!O???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????20@@@@@BP@I@@@HH @CBA1HTHCA 0HDH#2(\FGB@@H@RIS84FEE!04WD-0XHB@@N0@a'</body>
</methods>

<methods>
<class-id>Seaside.SampleStyles</class-id> <category>uploaded-styles</category>

<body package="SeasideWebDesignerTool" selector="listMenu">listMenu
	&lt;objectNamed: 'listMenu.css'
		contentType: 'text/css'
		uploadDate: 'April 13, 2005 12:00:00.000'
		creationDate: 'April 13, 2005 12:00:00.000'
		modificationDate: 'April 13, 2005 12:00:00.000'
		by: 'Daniel Nolan'&gt;

	^'
.treemenu {
	margin : 0px 20px;
	padding : 10px;
	list-style : none;	
	background-color : #EEE;
	border : 1px solid #000;
	width : 200px;
}

.treemenu UL {
	list-style : none;
	margin : 0px 10px;
	padding : 0px 10px;
}

.treemenu LI {
	display : inline;
}

.treemenu A {
	display : block;
	padding-left : 12px;
	text-decoration : none;

}

.treemenu .treeopen {
	background-image : url(''/seaside/go/images/SampleStyles/open.gif'');
	background-repeat : no-repeat;
	background-position : left;
}

.treemenu .treeclosed {
	background-image : url(''/seaside/go/images/SampleStyles/closed.gif'');
	background-repeat : no-repeat;
	background-position : left;
}
'</body>
</methods>

<methods>
<class-id>Seaside.SampleScripts</class-id> <category>uploaded-javascripts</category>

<body package="SeasideWebDesignerTool" selector="listMenu">listMenu
	&lt;objectNamed: 'listMenu.js'
		contentType: 'text/javascript'
		uploadDate: 'April 13, 2005 12:00:00.000'
		creationDate: 'April 13, 2005 12:00:00.000'
		modificationDate: 'April 13, 2005 12:00:00.000'
		by: 'Daniel Nolan'&gt;

	^'
/*
	Expandable Listmenu Script
	Author : Daniel Nolan
	http://www.dnolan.com/code/js/listmenu/
*/

function initMenus() {
	if (!document.getElementsByTagName) return;
	
	var aMenus = document.getElementsByTagName("LI");
	for (var i = 0; i &lt; aMenus.length; i++) {
		var mclass = aMenus[i].className;
		if (mclass.indexOf("treenode") &gt; -1) {
			var submenu = aMenus[i].childNodes;
			for (var j = 0; j &lt; submenu.length; j++) {
				if (submenu[j].tagName == "A") {
					submenu[j].onclick = function() {
						var node = this.nextSibling;
						while (1) {
							if (node != null) {
								if (node.tagName == "UL") {
									var d = (node.style.display == "none")
									node.style.display = (d) ? "block" : "none";
									this.className = (d) ? "treeopen" : "treeclosed";
									return false;
								}
								node = node.nextSibling;
							} else {
								return false;
							}
						}
						return false;
					}
					
					submenu[j].className = (mclass.indexOf("open") &gt; -1) ? "treeopen" : "treeclosed";
				}
				
				if (submenu[j].tagName == "UL")
					submenu[j].style.display = (mclass.indexOf("open") &gt; -1) ? "block" : "none";
			}
		}
	}
}

window.onload = initMenus;
'</body>
</methods>

<methods>
<class-id>Seaside.WAImageLibrary class</class-id> <category>properties</category>

<body package="SeasideWebDesignerTool" selector="objectPragmas">objectPragmas
	&lt;pragmas: #instance&gt;

	^#(
	objectNamed:contentType:uploadDate:creationDate:modificationDate:by:
	objectNamed:contentType:creationDate:modificationDate:by:
	)</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerStyle</class-id> <category>uploaded-pictures</category>

<body package="SeasideWebDesignerTool" selector="delete">delete
	&lt;objectNamed: 'delete.gif'
		contentType: 'image/gif'
		uploadDate: 'May 11, 2005 11:30:00.001'
		creationDate: 'May 11, 2005 11:30:00.001'
		modificationDate: 'May 11, 2005 11:30:00.001'
		by: 'mbany@cincom.com'&gt;

	^ ByteArray fromPackedString:
'Q4%FNC%!O@@O@O\@@@@@@H@@@@B@@HB@@@@@ H@@ @B@ HB@ LC@0O&lt;@@@C?@O??@@@@??&lt;@?0C??????0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L0@@Y @@&amp;P@@3@@@?0@3@@@3L0@3Y @3&amp;P@33@@3?0A&amp;@@A&amp;L0A&amp;Y A&amp;&amp;PA&amp;3@A&amp;?0BY@@BYL0BYY BY&amp;PBY3@BY?0CL@@CLL0CLY CL&amp;PCL3@CL?0C?@@C?L0C?Y C?&amp;PC?3@C??3L@@CL@L3L@Y#L@&amp;SL@3CL@?3L3@CL3L3L3Y#L3&amp;SL33CL3?3M&amp;@CM&amp;L3M&amp;Y#M&amp;&amp;SM&amp;3CM&amp;?3NY@CNYL3NYY#NY&amp;SNY3CNY?3OL@COLL3OLY#OL&amp;SOL3COL?3O?@CO?L3O?Y#O?&amp;SO?3CO??6X@@FX@L6X@Y&amp;X@&amp;VX@3FX@?6X3@FX3L6X3Y&amp;X3&amp;VX33FX3?6Y&amp;@FY&amp;L6Y&amp;Y&amp;Y&amp;&amp;VY&amp;3FY&amp;?6ZY@FZYL6ZYY&amp;ZY&amp;VZY3FZY?6[L@F[LL6[LY&amp;[L&amp;V[L3F[L?6[?@F[?L6[?Y&amp;[?&amp;V[?3F[??9$@@I$@L9$@Y)$@&amp;Y$@3I$@?9$3@I$3L9$3Y)$3&amp;Y$33I$3?9%&amp;@I%&amp;L9%&amp;Y)%&amp;&amp;Y%&amp;3I%&amp;?9&amp;Y@I&amp;YL9&amp;YY)&amp;Y&amp;Y&amp;Y3I&amp;Y?9''L@I''LL9''LY)''L&amp;Y''L3I''L?9''?@I''?L9''?Y)''?&amp;Y''?3I''??&lt;0@@L0@L&lt;0@Y,0@&amp;\0@3L0@?&lt;03@L03L&lt;03Y,03&amp;\033L03?&lt;1&amp;@L1&amp;L&lt;1&amp;Y,1&amp;&amp;\1&amp;3L1&amp;?&lt;2Y@L2YL&lt;2YY,2Y&amp;\2Y3L2Y?&lt;3L@L3LL&lt;3LY,3L&amp;\3L3L3L?&lt;3?@L3?L&lt;3?Y,3?&amp;\3?3L3???&lt;@@O&lt;@L?&lt;@Y/&lt;@&amp;_&lt;@3O&lt;@??&lt;3@O&lt;3L?&lt;3Y/&lt;3&amp;_&lt;33O&lt;3??=&amp;@O=&amp;L?=&amp;Y/=&amp;&amp;_=&amp;3O=&amp;??&gt;Y@O&gt;YL?&gt;YY/&gt;Y&amp;_&gt;Y3O&gt;Y???L@O?LL??LY/?L&amp;_?L3O?L????@O??L???Y/??&amp;_??3O???20@@@@@O@@O@@@H)PAW*AAH\JCA   OJ$3H\JFJ!1@#O/1A,ZKE"1 3Z-3H,^K@#"@)K% P,*SE"Q%G* P9$&amp;MK$19WZG39\&amp;OM%BQ!T$RI,Z[O%RI3?%BY$6!Q(A,?8*1H&lt;6#P)4N]P+6I$^_E''4FIS#TJMZ+V)CJW[.4)5RKV$E[M%/T9U&amp;QW-&amp;A''_&amp;VJ=N]M(GL5)-WI%:?R/(A5; 5LFJ3C!( OD5!L8KAB"QHC@ @;'</body>

<body package="SeasideWebDesignerTool" selector="download">download
	&lt;objectNamed: 'download.gif'
		contentType: 'image/gif'
		uploadDate: 'May 11, 2005 11:30:00.002'
		creationDate: 'May 11, 2005 11:30:00.002'
		modificationDate: 'May 11, 2005 11:30:00.002'
		by: 'mbany@cincom.com'&gt;

	^ ByteArray fromPackedString:
'Q4%FNC%!Q @O@O\@@@@@@H@@@@B@@HB@@@@@ H@@ @B@ HB@ LC@0O&lt;@@@C?@O??@@@@??&lt;@?0C??????0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L0@@Y @@&amp;P@@3@@@?0@3@@@3L0@3Y @3&amp;P@33@@3?0A&amp;@@A&amp;L0A&amp;Y A&amp;&amp;PA&amp;3@A&amp;?0BY@@BYL0BYY BY&amp;PBY3@BY?0CL@@CLL0CLY CL&amp;PCL3@CL?0C?@@C?L0C?Y C?&amp;PC?3@C??3L@@CL@L3L@Y#L@&amp;SL@3CL@?3L3@CL3L3L3Y#L3&amp;SL33CL3?3M&amp;@CM&amp;L3M&amp;Y#M&amp;&amp;SM&amp;3CM&amp;?3NY@CNYL3NYY#NY&amp;SNY3CNY?3OL@COLL3OLY#OL&amp;SOL3COL?3O?@CO?L3O?Y#O?&amp;SO?3CO??6X@@FX@L6X@Y&amp;X@&amp;VX@3FX@?6X3@FX3L6X3Y&amp;X3&amp;VX33FX3?6Y&amp;@FY&amp;L6Y&amp;Y&amp;Y&amp;&amp;VY&amp;3FY&amp;?6ZY@FZYL6ZYY&amp;ZY&amp;VZY3FZY?6[L@F[LL6[LY&amp;[L&amp;V[L3F[L?6[?@F[?L6[?Y&amp;[?&amp;V[?3F[??9$@@I$@L9$@Y)$@&amp;Y$@3I$@?9$3@I$3L9$3Y)$3&amp;Y$33I$3?9%&amp;@I%&amp;L9%&amp;Y)%&amp;&amp;Y%&amp;3I%&amp;?9&amp;Y@I&amp;YL9&amp;YY)&amp;Y&amp;Y&amp;Y3I&amp;Y?9''L@I''LL9''LY)''L&amp;Y''L3I''L?9''?@I''?L9''?Y)''?&amp;Y''?3I''??&lt;0@@L0@L&lt;0@Y,0@&amp;\0@3L0@?&lt;03@L03L&lt;03Y,03&amp;\033L03?&lt;1&amp;@L1&amp;L&lt;1&amp;Y,1&amp;&amp;\1&amp;3L1&amp;?&lt;2Y@L2YL&lt;2YY,2Y&amp;\2Y3L2Y?&lt;3L@L3LL&lt;3LY,3L&amp;\3L3L3L?&lt;3?@L3?L&lt;3?Y,3?&amp;\3?3L3???&lt;@@O&lt;@L?&lt;@Y/&lt;@&amp;_&lt;@3O&lt;@??&lt;3@O&lt;3L?&lt;3Y/&lt;3&amp;_&lt;33O&lt;3??=&amp;@O=&amp;L?=&amp;Y/=&amp;&amp;_=&amp;3O=&amp;??&gt;Y@O&gt;YL?&gt;YY/&gt;Y&amp;_&gt;Y3O&gt;Y???L@O?LL??LY/?L&amp;_?L3O?L????@O??L???Y/??&amp;_??3O???20@@@@@Q @O@@@H0@AW*AAH\JCA   OJ$3H\JFJ!1@#R)2(8(_E"1 3Z-3H,ZOG#1XG !1I,"SI!2YSY%20PBUF%!!EV&amp;QI4&gt;UG&amp;CY?8@1Y\VYK''S=3Z-3)$*!L(A]74 0J,&gt;''O)T2#D%7:$.)E%C:SO-6Z5V%V)FA1D/4*M."O(4*9!&amp;7)]R5Y-TA+.+7ZD&gt;3\,$#17%V+U6?HEU*?3!7\%:?!-3G+P%4)E;G#-EN-1#TJVJ!%(U /Z4;),JG''3 LI"BX@."CE41HC@ @;'</body>

<body package="SeasideWebDesignerTool" selector="newMember">newMember
	&lt;objectNamed: 'newMember.gif'
		contentType: 'image/gif'
		uploadDate: 'May 11, 2005 11:30:00.004'
		creationDate: 'May 11, 2005 11:30:00.004'
		modificationDate: 'May 11, 2005 11:30:00.004'
		by: 'mbany@cincom.com'&gt;

	^ ByteArray fromPackedString:
'Q4%FNC%!W0@O@O\@@@@@@H@@@@B@@HB@@@@@ H@@ @B@ HB@ LC@0O&lt;@@@C?@O??@@@@??&lt;@?0C??????0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L0@@Y @@&amp;P@@3@@@?0@3@@@3L0@3Y @3&amp;P@33@@3?0A&amp;@@A&amp;L0A&amp;Y A&amp;&amp;PA&amp;3@A&amp;?0BY@@BYL0BYY BY&amp;PBY3@BY?0CL@@CLL0CLY CL&amp;PCL3@CL?0C?@@C?L0C?Y C?&amp;PC?3@C??3L@@CL@L3L@Y#L@&amp;SL@3CL@?3L3@CL3L3L3Y#L3&amp;SL33CL3?3M&amp;@CM&amp;L3M&amp;Y#M&amp;&amp;SM&amp;3CM&amp;?3NY@CNYL3NYY#NY&amp;SNY3CNY?3OL@COLL3OLY#OL&amp;SOL3COL?3O?@CO?L3O?Y#O?&amp;SO?3CO??6X@@FX@L6X@Y&amp;X@&amp;VX@3FX@?6X3@FX3L6X3Y&amp;X3&amp;VX33FX3?6Y&amp;@FY&amp;L6Y&amp;Y&amp;Y&amp;&amp;VY&amp;3FY&amp;?6ZY@FZYL6ZYY&amp;ZY&amp;VZY3FZY?6[L@F[LL6[LY&amp;[L&amp;V[L3F[L?6[?@F[?L6[?Y&amp;[?&amp;V[?3F[??9$@@I$@L9$@Y)$@&amp;Y$@3I$@?9$3@I$3L9$3Y)$3&amp;Y$33I$3?9%&amp;@I%&amp;L9%&amp;Y)%&amp;&amp;Y%&amp;3I%&amp;?9&amp;Y@I&amp;YL9&amp;YY)&amp;Y&amp;Y&amp;Y3I&amp;Y?9''L@I''LL9''LY)''L&amp;Y''L3I''L?9''?@I''?L9''?Y)''?&amp;Y''?3I''??&lt;0@@L0@L&lt;0@Y,0@&amp;\0@3L0@?&lt;03@L03L&lt;03Y,03&amp;\033L03?&lt;1&amp;@L1&amp;L&lt;1&amp;Y,1&amp;&amp;\1&amp;3L1&amp;?&lt;2Y@L2YL&lt;2YY,2Y&amp;\2Y3L2Y?&lt;3L@L3LL&lt;3LY,3L&amp;\3L3L3L?&lt;3?@L3?L&lt;3?Y,3?&amp;\3?3L3???&lt;@@O&lt;@L?&lt;@Y/&lt;@&amp;_&lt;@3O&lt;@??&lt;3@O&lt;3L?&lt;3Y/&lt;3&amp;_&lt;33O&lt;3??=&amp;@O=&amp;L?=&amp;Y/=&amp;&amp;_=&amp;3O=&amp;??&gt;Y@O&gt;YL?&gt;YY/&gt;Y&amp;_&gt;Y3O&gt;Y???L@O?LL??LY/?L&amp;_?L3O?L????@O??L???Y/??&amp;_??3O???20@@@@@W0@O@@@H8@AUBA1H,JCA 0 SJ%3H,FGAG1@#R)1H,ZKE"1 3Z-0HT\TJ#"AC"!29TRCI$2 -K%"P&lt;(_G"R0%1&amp;1I,&gt;KJ%"Y%3/21,:YO''#5G/-P9,&gt;!J(4BS0#3J&lt;"!Q(4:]P&amp;R:$6''D&amp;3\#9+2*MF[V+47CT P;5Z/Y,&amp;";''%U[U&amp;+G#3KQ&amp;+VZEF-P,&amp;+)8-4;U6+V"U.''W,V+,&gt;;]-XPG)&gt;V[-#CE(U0UJ&gt;T)&gt;Z=#1(KYZ"Z&lt;E+@J&amp;JC[U.5&lt;.SO]3W5G?;V,E^;O5;@+A(9M&gt;;WG62-0:&lt;;M^;_/7,A?N11NWDU@@C,b'</body>

<body package="SeasideWebDesignerTool" selector="view">view
	&lt;objectNamed: 'view.gif'
		contentType: 'image/gif'
		uploadDate: 'May 11, 2005 11:30:00.003'
		creationDate: 'May 11, 2005 11:30:00.003'
		modificationDate: 'May 11, 2005 11:30:00.003'
		by: 'mbany@cincom.com'&gt;

	^ ByteArray fromPackedString:
'Q4%FNC%!L @O@O\@@@@@@H@@@@B@@HB@@@@@ H@@ @B@ HB@ LC@0O&lt;@@@C?@O??@@@@??&lt;@?0C??????0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L0@@Y @@&amp;P@@3@@@?0@3@@@3L0@3Y @3&amp;P@33@@3?0A&amp;@@A&amp;L0A&amp;Y A&amp;&amp;PA&amp;3@A&amp;?0BY@@BYL0BYY BY&amp;PBY3@BY?0CL@@CLL0CLY CL&amp;PCL3@CL?0C?@@C?L0C?Y C?&amp;PC?3@C??3L@@CL@L3L@Y#L@&amp;SL@3CL@?3L3@CL3L3L3Y#L3&amp;SL33CL3?3M&amp;@CM&amp;L3M&amp;Y#M&amp;&amp;SM&amp;3CM&amp;?3NY@CNYL3NYY#NY&amp;SNY3CNY?3OL@COLL3OLY#OL&amp;SOL3COL?3O?@CO?L3O?Y#O?&amp;SO?3CO??6X@@FX@L6X@Y&amp;X@&amp;VX@3FX@?6X3@FX3L6X3Y&amp;X3&amp;VX33FX3?6Y&amp;@FY&amp;L6Y&amp;Y&amp;Y&amp;&amp;VY&amp;3FY&amp;?6ZY@FZYL6ZYY&amp;ZY&amp;VZY3FZY?6[L@F[LL6[LY&amp;[L&amp;V[L3F[L?6[?@F[?L6[?Y&amp;[?&amp;V[?3F[??9$@@I$@L9$@Y)$@&amp;Y$@3I$@?9$3@I$3L9$3Y)$3&amp;Y$33I$3?9%&amp;@I%&amp;L9%&amp;Y)%&amp;&amp;Y%&amp;3I%&amp;?9&amp;Y@I&amp;YL9&amp;YY)&amp;Y&amp;Y&amp;Y3I&amp;Y?9''L@I''LL9''LY)''L&amp;Y''L3I''L?9''?@I''?L9''?Y)''?&amp;Y''?3I''??&lt;0@@L0@L&lt;0@Y,0@&amp;\0@3L0@?&lt;03@L03L&lt;03Y,03&amp;\033L03?&lt;1&amp;@L1&amp;L&lt;1&amp;Y,1&amp;&amp;\1&amp;3L1&amp;?&lt;2Y@L2YL&lt;2YY,2Y&amp;\2Y3L2Y?&lt;3L@L3LL&lt;3LY,3L&amp;\3L3L3L?&lt;3?@L3?L&lt;3?Y,3?&amp;\3?3L3???&lt;@@O&lt;@L?&lt;@Y/&lt;@&amp;_&lt;@3O&lt;@??&lt;3@O&lt;3L?&lt;3Y/&lt;3&amp;_&lt;33O&lt;3??=&amp;@O=&amp;L?=&amp;Y/=&amp;&amp;_=&amp;3O=&amp;??&gt;Y@O&gt;YL?&gt;YY/&gt;Y&amp;_&gt;Y3O&gt;Y???L@O?LL??LY/?L&amp;_?L3O?L????@O??L???Y/??&amp;_??3O???2G9A@D@@A@@K@@@@@@2@@&lt;@@@#)@E^(DD!0(LFBB@&lt;*SL!0(P(UO7ID''B"1H,VKE#M"7I!11P*MHC&amp;JCD''214NN+OQU$&lt;!C734_5/"-F$$S)L^PK_EE%JV2)D&gt;ZI4G:$MT/4MB"P6W&gt;.FEM''=M&lt;NUK&amp;02EKY,-;H6=29E$-90&lt;\LY&gt;A;W\H+L*V?P3EWJV()&lt;" F:&gt;&amp;W@%S9!B''^OT9 =&amp;OTC=(&gt;Q@U3_*QX55+ &lt;G2^7[5TDYY&gt;;C!$6TO,^N7DD&amp;&amp;]A$1:Z*!&gt;)9EYBW:2=NV&gt;*@RK(%:9]^0D''''")]/4V]6YI^G&gt;7E6S(5[^0G-[5B6&lt;NGBOC!,*S&lt;:&lt;XT@@N0@a'</body>
</methods>

<methods>
<class-id>Seaside.WAWebDesignerStyle</class-id> <category>uploaded-styles</category>

<body package="SeasideWebDesignerTool" selector="editor">editor
	&lt;objectNamed: 'editor.css'
		contentType: 'text/css'
		creationDate: 'May 11, 2005 11:30:00.009'
		modificationDate: 'May 11, 2005 11:30:00.009'
		by: 'mbany@cincom.com'&gt;

	^'
/*
	Styles for the editors and the viewers
	Author : Michel Bany
	http://www.cincom.com
*/

.download-action a {
	/* Fahrner Image Replacement (FIR) */
	background: url("download.gif") no-repeat left top;
	display: block; float: left;
	width: 70px; height: 15px;
	margin: 0; padding: 0;
	text-decoration: none;
}
.download-action a span {
	display: none;
}
#library {
	float: left;
}
#library table {
	border-collapse: collapse;
}

#member {
	clear: both;
}
#library-members td, th {
	border: 1px darkgreen solid;
	padding: 0.3em;
}
#library-members th {
	background-color: lightgreen;
}
#library-members td {
	background-color: lightyellow;
}
'</body>

<body package="SeasideWebDesignerTool" selector="help">help
	&lt;objectNamed: 'help.css'
		contentType: 'text/css'
		creationDate: 'May 11, 2005 11:30:00.009'
		modificationDate: 'May 11, 2005 11:30:00.009'
		by: 'mbany@cincom.com'&gt;

	^'
/*
	Styles for the help
	Author : Michel Bany
	http://www.cincom.com
*/

.help-text {
	width: 70em;
}

'</body>

<body package="SeasideWebDesignerTool" selector="look">look
	&lt;objectNamed: 'look.css'
		contentType: 'text/css'
		creationDate: 'May 11, 2005 11:30:00.005'
		modificationDate: 'May 11, 2005 11:30:00.005'
		by: 'mbany@cincom.com'&gt;

	^'
/*
	Styles for the general look
	Author : Michel Bany
	http://www.cincom.com
*/

body {
	font-family: Verdana;
	font-size: x-small;
}
h1 {
	padding-top: 1em;
	font-size: small;
}
h2 {
	font-size: small;
	color: red;
}
select {
	width: 200px;
}
input[type="text"] {
	width: 400px;
}

'</body>

<body package="SeasideWebDesignerTool" selector="pictures">pictures
	&lt;objectNamed: 'pictures.css'
		contentType: 'text/css'
		creationDate: 'May 11, 2005 11:30:00.006'
		modificationDate: 'May 11, 2005 11:30:00.006'
		by: 'mbany@cincom.com'&gt;

	^'
/*
	Styles for the picture viewer
	Author : Michel Bany
	http://www.cincom.com
*/

#picture-details table {
	border-collapse: collapse;
}
#picture-details td, th {
	border: 1px darkgreen solid;
	padding: 0.3em;
}
#picture-details th {
	background-color: lightgreen;
}
#picture-details td {
	background-color: lightyellow;
}'</body>

<body package="SeasideWebDesignerTool" selector="saver">saver
	&lt;objectNamed: 'saver.css'
		contentType: 'text/css'
		creationDate: 'May 11, 2005 11:30:00.007'
		modificationDate: 'May 11, 2005 11:30:00.007'
		by: 'mbany@cincom.com'&gt;

	^'
/*
	Styles for the savers
	Author : Michel Bany
	http://www.cincom.com
*/


#saved-as {
	font-weight: bold;
}

'</body>

<body package="SeasideWebDesignerTool" selector="sourceCode">sourceCode
	&lt;objectNamed: 'sourceCode.css'
		contentType: 'text/css'
		creationDate: 'May 11, 2005 11:30:00.008'
		modificationDate: 'May 11, 2005 11:30:00.008'
		by: 'mbany@cincom.com'&gt;

	^'
/*
	Styles for the source code editors and viewers
	Author : Michel Bany
	http://www.cincom.com
*/

#sourceView , #sourceEdit {
	width: 80%;
	font-family: "Lucida Console", Courier;
	font-size: 125%;
	background-color: lightyellow;
	border: 1px darkgreen solid;
	overflow: auto;
}
#sourceView {
	height: 15em;
}
#sourceEdit {
	height: 20em;
}
'</body>
</methods>

<methods>
<class-id>Seaside.SamplePictures</class-id> <category>uploaded-pictures</category>

<body package="SeasideWebDesignerTool" selector="cincomSmalltalkLogo">cincomSmalltalkLogo
	&lt;objectNamed: 'cincomSmalltalkLogo.gif'
		contentType: 'image/gif'
		uploadDate: 'April 13, 2005 12:00:00.000'
		creationDate: 'April 13, 2005 12:00:00.000'
		modificationDate: 'April 13, 2005 12:00:00.000'
		by: 'mbany@cincom.com'&gt;

	^ ByteArray fromPackedString:
'Q4%FNC%!6@BE@O\@@FMF$2B2(92G-*G[0Q(AYHQ*)N''316/H,_;=?*:]0\/.0(''S.M+R/T^9*K''&amp;0@OQ)NS];[&gt;04/3)&gt;-#S8&gt;+4&lt;\;C7K/27^;)&lt;5W*-,V:-PBV_.#";$P_ PB.'' BY&amp;_??3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BG9A@D@@@L@K@@@@@CX@HT@@@#&gt;@ADHGD"0(LFCBAL*WL"0(\NGDBMJ''D"1(,VKFCM*7L"1(&lt;^OHDM&gt;WBB2)L&amp;SJC-RVD$A@XTCA5KJ''D&amp;SI,.[KRD,FAB3),&gt;_PB7"1H% 0L8EIHL*W\+TY\&gt;!M1D GV@4Z]N+VDEF_Y$TZ$,JT:$Z3T*6[DV(BB[@-N@R;XR]X,VZ''T,W(]^UQP&lt;, MA6ZEF8\Z''VGU37K(HKO@]&lt;=_,7\E3B$L$Z_''%  $B4K14?#,19:]6V[1^0YW0X\N@EC#*+A&amp;(8;8HK[P5RFCB! %"$.C\\S+B:]4+CE1X\FBC[0(D@F#0,&amp;E@U; PHD!AHJEC@-7VQ!#_(!R7P^HLNF#S&gt;]@C/X_"@B,&lt;%*H&lt;^ [*@:?@9^!68XZ^EAPD:^AC?(C=8&lt;@^,)18DALJVP@DBHA#_ !]EUY@E-J$%W _==Z\A@@PH&lt;H@F:1G(8PXTWIB @BL2ZJIDKQD467\^]J@X@! &lt;LI8FGMSH@PDUXMC@ A8R*M,DBIH(9H%DP''Q__/.E)&lt;DC@6RP@@@66$ @A0)X,HDDOW(HV7-BB,%[$VCJ!)=&gt;R"+YX \E7C!%%C\B@NFUF6PI0PTWGM"%%6G&amp;J]@@YR+Y0PF3#W\ @V-F&amp;RFDVL+I50W.7T''"%7*FFU8GC[0($@GGBQBA@C\ZR(A(C$ PY9YW@.%(%9G&amp;:XA%A\5&amp;PPK&gt;@"R0JZER\ B!AX''6*A,BEPS)Z@DU)B(,W ;,YJ^,''J9I I,CPCC*A"@RAN.)BP8D*[CWKTYTX2OFN".!ABR@*G(DR]A^#\#^RQ57B&amp;J[;W1 C\B%%9.*NX@EJP(4P[K K!/A)%4"FE6/IK++66\H7C^@''U4"R: E&gt;I*KX[&lt;T@1CA-BPV&lt;BWC;1&amp;,F,KEK.0+/P@H@OGDED=IG[ V@91 ,@!4V:7G''D5&amp;5@A70#)-@0G Z0GEGBRP8 P(-91 @YY-LGKAMDL66T9\X"1@@O&amp;M58E(E''@@@J/4E]@^2?&lt;"6AKA##X=VF/5"Y0 5UYOBM:NA-FIPG.2E,@2+ADH1OG&gt;''V[S-R5A3D%(MW"SB!_^A^+QBZ63"H=X];=HB2Q36W6W%R=AE''3W0PP[CKC!)@D,DA4BS7X ''Y0 L!+$8;SBA,GR_E]N%7GH%]&amp;A@0)@@MLD(4\7'']^G(\;+2@$\BF2JYEL+^5$C9F_&amp;&amp;V&lt;KJA6V./TJ@GR#=&amp;  ;DHS9OJ)LB?_E@Y%P#&gt;8A0L$''/6\LZ&gt;[*?[-''0+,/#U**+38VF$&gt;&gt;NC"&lt;Y!%]@H@P@H$P@EETPAH,H.U@O(U-N&lt;M*RXLJ@@@(DR(:!@$@&gt;8)P@XDT#H!Z[@ DS0Z@4BX)"!Y&lt;B@QYELAQ$"PBH9LX0^YGGTV (G=&lt;R&lt;@?/-PV"PX+@.PZ&amp;3&gt;B]PT2&amp;"UK#3QQD64"-HFNV!B4+F)Q UIPIP:1,P''5,&lt; TKJ"5 #BJR,^QH,,SL B[C"#&amp;J3OQ7N##&amp;T&gt;]K''$9P1CBPIW@;7D-YPTR(,CJVFM*)LAJ8XQ@W64DZR4*DRBDCIJ@0''$D07B@C@2YH1$9I6"C@R@@."FN0N!P@P&amp;VLP;9V6G\"0"S_QX(4(.D F$_D&lt;#''7!BPA[R"R(&lt;IPJ2ZDIVB$RQ[E+"PK((28U@,&amp;4]2JFGD@BA@HYOHATHXK&gt;LE+BN"^![T4KV-UB"P(F,4$XBRRTB+,&amp;&amp;B;:RSP@XRC\ET,4*X-NUU&amp;3%KOG($E&gt;BA8_/J1@B%FYIX#8I"[S&gt;H)SE)@[CM@( &amp;ZF&lt;6D102PFB4IHCH=P&amp;PV6$R50.\Y3Y#AI/.E%PP4Y)!@,=)3#Y6\:6"T9K[\0XO)L()VUU0FW@H16BGD[DN):D%5,\2DD7*D6JH/JV!ZP(PT!YGY!VUJXR7RX!B3IT"IB/@]L3B@S.&gt;T&gt;;$URK?-(T]W+XKYXRZ)QSMF !Z1*% 2Z2$EJ4TS!76TR^E(R+M"H%E=O*UX2XJ44L#L@D)G!GJ5X0[@J@#Z''(=\FZGGRZKFP!V+U6337"%JD1Z6HK+V%NC%AQ\$7$Y&amp;FC--DZYPB&amp;E$''&amp;DOO)+:U6:)C:7MRW9.V%AA1SI*STITHT"$#L(-N2,CS&gt;+DHN&gt;-#X[)F[FAQ+YP/*V(''P%XEO#JY'':6)WC AK\ $,W$5R.9CAU/R"P$U,VFV[DC[UE)_!9NY+_8+H-$9DSX_,U@JFR4"JIV52,Y,I\1W"WGK*E+^IS^-B+E,PWEYG.0"8JVZ=N1ER%#](9OVTGH&lt;;OF(1S[6/SH!3D7)S,B*6.%''59''.!V4!ZU ^"EC''(_2M04)F*;IN@L7B,%)/ 5VXU%21,,GP_#AC:R+"T4XV-!_M+(1E"&amp;BH&gt;!R(AB,@W&lt;D[ \ OY)@B%5*T?)&amp;R=B,8*_F%,6DKBUI4F\_EW9R/Y&gt;A*W2\&gt;=:TU2KFAB,P)AHMXW/4K+0@L#FKG,U_K&gt;J6D:WP9,,L5PK !-B0KS;@YU$ZX&lt;984+8-NT%X1+IMKMA)PIMG56\,Q&gt;#[C^.()JMZLY2;&amp;4\$0OB6M-+)WJD]Z"A__L91(1T@@.''Z^PT$[\*G[)-D]&amp;,T&lt;%?Q:G@-VJF&lt;S.":EH2+G&amp;4]EW!GRM7Z/Q#C!U@J(]2@T6&amp;RE( ''YJE=OYS=),Z5X76$Z*SGAF7Q1#JD;Y,@P%Z"E16SG?V!/RI3$W@44[ \&gt;B% LWP3PDLS3SY5=12[2NMJQ5Z^$[#9O[%MX2)3T2:IGVJ DSHCY16QSUZ\;$%F6.*GMU:65*:3+_7HW(J_D][&gt;+.&gt;2HIRE%19T+,&lt;HY6U39I.AW&gt;1&lt;+ZQ5\[3S[58*KCR=''-T/FI.+38QY3*&lt;Z@EGK2 [[YOF*9%,&gt;I2&amp;%ZDEI^!^&gt;-C''!CN+&gt;85&amp;82&lt;$ZDSODLP:O !A\C4&amp;"3P7K4&gt;JA&gt;C^&amp;&amp;.+=2OA!F9HJW58HQ[]M\ \[*''AKBAW!DW@LE&amp;"/D&amp;6M\KL(@AC[5;7@E9];4_9KKT(\;^D7$4AN4=@7:7N=;?.O";%4S-IT4@[D)X]?0Y#N\D]?# KX&lt;-2O^S&lt;&gt;KK\\&amp;*C''+Y%QC.)T^@@6IT(]YW""8J0HC,Y_&gt;@5D"%@P48@N:QJ!GRH6S60A^H@1*@@Y# W G0\TC+YTSFC"B_^_:1F.?IZIK%#4\ A;B!UW+&gt;8&lt;;&amp;C&lt;;6VWF@= UR-\FYQC?;D4#7[6\]&lt;W.?&gt;VU1?&gt;BRT'':+&amp;ZS&gt;59^JC\F?&amp;/_#76(= QW2Y3W4Y4LH$W7[U1G?-2_;91,CJG4C(PC0E7;#!0@KRA@J$G7#$X@T\XG+17&gt;](XG)Q1@CPG4T.C&lt;ENHK$-3?D QD^6HB=&lt;W&lt;\RD[O]1TO^CT+*HHR2HHY\XD%.C&lt; 2A''?58HDPTYA*AP7&amp;HK&amp;M1@0^AD/BHR&gt;&lt;W&lt;A2HP6UHMM$XP9.HPBXX@=2HT_FHT&amp;6A@;2CZ&amp;T1S;D0@XVHDF8PC?M19SJG0U.HC_4XY3VA@".C&lt;MXHUYZG=&amp;BHTDPSV8U3W*50G9 UQ%FAS&gt;&gt;*NBB?FC9''^G 8M&lt;:&lt;^GQ_!&gt;[$ PVF"AA$"I&gt;X\@##"A@?FD74\P''\!;BF@:6Y]=R7FCU''NDA[FC =NF@O!&gt;)E"J&amp;%"I\H"B^7!=,K"D''^!=_&gt;"EST"K"&amp;"J$! T?+\P*%"K/(!=YDRF&gt;?M&lt;%;"@-["EM.RL 4NJO-"DE3 PLXD; +DT+-!&lt;[9"F\]"L &lt;"E0*"EM&lt;!;4V"@OCFJODDRW9"K!0"J*2 P8V"K]QFI.F P&gt;T )$:"H''_!&lt;Z)"N88FFBOBOR%"L:D"O9O"HC*%?34"M"% W#O!&gt;?&amp;!CQH"I"''"Q88E&lt;M&lt;!?"T"H-3!?DT&amp;Q=4"EEP&amp;C6S"BG.%&lt;''UG&gt;"?0W$ E)MP#I AN)^ +0_G+X"_!X#,OH 1FHN&lt;"''!0ZI 129!N.G$.L1"9GQ"7:X$EUX$0]I %OIDBMY! )9$$^9$\"($QF9%D,I!!#9$3''I%BP9DB&lt;I  *P%RZ8%T''I$DI)DFMB"R7X$(OS"U:)F,%X%UI9%$]9$74H$R(9#W=)$''F9"U5)DEAIQ''\I#IS(%K;Q&amp;FYI&amp;F )&amp;F-Y&amp;HXI%=.8&amp;K&gt;(#B8R%)((&amp;P;X_LS1#5YX#UZY$&lt;4G"F&lt;I%E+(&amp;^]X#[ G%(%Y!&amp;-Y$GOQ%+.''^9K9$''=2&amp;EZS&amp;&amp;^8&amp;!A9 8H9%)3Y$KZI%.2''&amp;ZE9&amp;;M)_3]HFK58DFSTD5_&gt;^Y''FNY2\6IC_NXKKFYRC,9D6=HZ6ZX?9Y4N$&amp;QW@^QAYFQN(RYU)"YMK6I$H$IVURXA\6Y0/ZQC)2XW?FY:1ZQ[?^H"_&amp;Y_B&gt;YG4"Y%\"I&lt;WNI:16Y1#FXDAN(K+Q9A8NA"NBZA NY?P:Z@#"I&gt;/6X&gt;]6XPC*)XW*)QW&amp;YUF&amp;QWMY8U-.I&lt;LF*K]&amp;W?:RY=ZBY-2"Y KF)74&gt;I .6XQ!ZAY.RX A\JPHBZK\*ZHS6X$ANHDR6*O_):D*FH%B2*IQJXM5@Y*D2ZRA^ZL0^ZCVJI8&lt;*)#^E1M-.H-Y2(_3&gt;JLHV![&lt;:G5V@ZZ*:ZRDRX$&gt;&gt;ZLK*Y!P"XY=RR$#6Z[&gt;&gt;_^&amp;Q1&amp;\]@F\3\]?&amp;P&amp;]BK)&gt;QN!=*SFUK:&amp;]8K&amp;&amp;3F"N#("PI*"W%&amp;"D =D@$7H&amp;4AL:Z1"L]3*]8&lt;E??6];T7&amp;COXF_D&amp;$5C4BJ:=\SMWRM9L]&lt;[!*LR^$_;U$VB/BNQ@$TN?&amp;"MGF,2I):3M*,3/*,4A(Y:$DAD$@''" L-"=L#33DA7M*-7U(A:@F.8#*.GEZ.?7J.:O(/,+J.1]N.;.*.B"Q"5HH =E)8 W^/&gt;I*/D+R/]C]A?/*/@A.0@Z,5AI-EF''Y.J"\T4TF-J6F-5(*-Y&gt;P!7/*--SF.E ..9W)R:[*1:9),;?*1N$M$&lt;1(0=T*/&gt;)*/%UQI Z^2?\*W+0K;,!N$MUC"+0Q[,CWK\#KWDB''B,MW*,A^0@S&gt;[+QJ;+QM[F4Y;,R^U-A.[+!5;LQ8K,#*#PBH+O1''SKRY;,%!KGR$+PR0K,58;,3D[,0U;,@\[W-E:-&amp;"[-&amp;*;-&amp;3[-&amp;;;-''@[-7H;-7Q[-7Y;-7"[-7*;-73[-7;;-8@[.HH;.HQ[.HY;.H"[.H*;.H3[.H8;D0DA@@@;'</body>

<body package="SeasideWebDesignerTool" selector="madeWithCSS">madeWithCSS
	&lt;objectNamed: 'madeWithCSS.gif'
		contentType: 'image/gif'
		uploadDate: 'April 13, 2005 12:00:00.000'
		creationDate: 'April 13, 2005 12:00:00.000'
		modificationDate: 'April 13, 2005 12:00:00.000'
		by: 'mbany@cincom.com'&gt;

	^ ByteArray fromPackedString:
'Q4%FNC]!V@@_@OL@@O???=;^96ZY&amp;SL3L9''L3@@@@L3L5! XP#L3Y.?/=7Q4&amp;Z6-/T)J\0@@L9&amp;Y&amp;SL3@B0@@@@@V@@_@@@D?!BDRZ.=NN/M^1XAHH9$ZY9(**8,N(QDKL--[]&lt;8&lt;@I3W9BF@2HATA0T(,VAHSH F 7D@)A@GJ8F CJKPF OS(W1^%PL/=''[+#_;#Q[P:QLIXA0ZVTMC,V@4G@$MC@:@UG.ACP%F P(FX84JCT%8NF-,LV:SBH5BS@$GC$\@^%L@WX0FZZY&lt;U''5H^2HLSDU?C)F*MYZW&amp;PB!Y&amp;HLW''A=A:LM)WY:CTIDQY,JCDXN@KB&amp;W+QWTK -.&amp;2&lt;Q''(GB6Z4U''"$UD.LIWARX4SUWRJQBP$N%F(0%0S_A9&gt;R"0;)ZRQ(#HE@34(!R-ANQK1+=G+!,=GMA0%[V*ZL\9QF#BIY? *HJHKF(EPQIH)J&lt;Y%GY52S$IW4;\)A,6ZNGPI2:-R9#4CMY"O**PCZP&amp; J''C-7=.R%1P((J%[RKKA2Y.*UJUWD3[.2"T!WAKLPSCM !9&amp;KDD&amp;U;.N%)&gt;RBKGADAVI PJN AP.H1@6K0L@=I$^T/PH$1DG](6#S9%1J0 )QZDYDWH5U#DR4^59''4P.&lt;A@&gt;(^7$N'' V ^OEZD$IJG@D=:,$P,BPX7YN#F\&lt;&amp;T$]@QSI6[GQ)@X1G&gt;@DZ; 8]KW&lt;"S,*FYILH18G17C,66="4D4 UA6=2QX2#QE$SQONSZ)%7^.HSVSGS^8&lt;^K''&gt;*;H%47TS6-M-_2/IK1=GG$/+Q?*W@]_:Q5L &lt;^\GDDQTFD$WB_T''%Y=NDMN700HTXX/![S1Q6.HJEFVZ88V$#!BINLN.IUX\X]C#P1Q%EWNVDU09L5PUYWY"Q(1N" A#"!RON5LP^[?W!W#C/ASOOLZTL%A\\&lt;OCA9B\%_V_XD&amp;?)DLJOF)Z67TCM7LN]KGWT%,*PLLE!FIG''_MHHOEN(H8JOO0[)CP&amp;Q DEKL&gt;RU.VQ*_9XGAY/LOGEDHML(4Q.]H]))TV1K;K$$DVSF:F@UI^GABIRR4XF(BN%)BPBWPG)IH!U/QZ)\QLF&lt;EP%^H+4EE*],5$#%V9&gt;&gt;YX^()C; ZA,#ABDHDR:F^\XX4YBQ115CL@QA(1IW%QVRNOK51R.)/&lt;+@%H_\")+@@NBFJ&gt;:89IK[;[%3%*/...26:&gt;:;&lt;H([@P@;'</body>

<body package="SeasideWebDesignerTool" selector="poweredBySmalltalk">poweredBySmalltalk
	&lt;objectNamed: 'poweredBySmalltalk.jpeg'
		contentType: 'image/jpeg'
		uploadDate: 'April 13, 2005 12:00:00.000'
		creationDate: 'April 13, 2005 12:00:00.000'
		modificationDate: 'April 13, 2005 12:00:00.000'
		by: 'mbany@cincom.com'&gt;

	^ ByteArray fromPackedString:
'?=#?8@@PR$YIQ @A@ @@Y@A$@@C?;@@QQGU#Z7$@@P@D@@@@Y@@@?&gt;8@I$E$[6I%@FS@@@@@@PL@EPPCA (M@@@HOP@@F"\@@BL7@@@-*/?[@HP@@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PHB@ HB@ HB@ HB@0LC@0LC@0LC@0DA@PDA@PDB@PDB@ HA@ HC@0LC@0LC@0LC@0LC@0LC@0LC@0LC@0LC@0LC@0LC@0LC@0LC@0LC@0LC@0LC@0LC?&lt;H@DP @L C:@0DQ@@HQ@PLQ@_?D@P&lt;@@@HC@PDA@P@@@@@@@@@@@@TFA@\H@0$B@@DA@@DD@0D@@@@@@@@@@@@@@@\CAPXH@ PI@Q@@@PPB@ @CA PG@P@@@@@@APDB@0P@A!DGPCDRDBEAD1PUL"L4I"APH"T5E#\''DP@B@ @D@0XAA@4IBP@@@@@A@ LD@ADRARD1D4EQH#HTA#LPXULUHGFA,TIRX"L4-CU5A;ICX;L$YBTV]-FB(%Q4![T6Y!H@@PHCA@\DAP,E@P@@@@@@@PHC@ADRHSEAAEE!\XD"L!M@(THE$]ERX"LPHEC0,\G1\(H3ENFR(#PUA!LA@P@C@@DBA HC@PDA@@@@@QD@HSEATVE@&lt;GFA$ZDP,RCA4_G!TO?Z@@0C@P@BDPLQ@@@A&lt;?NOV^[/ZKR-U: V&amp;RP%6#1*NP3#"E"21#C@E@8,GDZ3(L /''0P2/2,RBJXI:^T6IS(T3$\])/Q;1V#]J^/W]=V-LI31U:%^W/)U+;K_''A[I(7I=&gt;U&lt;MX?E_&amp;63JA\QWHYJ]K_CAJFL(@EA(O&amp;NSWQ!L6;S1?IF1.%.!/OS4 &lt;3] \"3]^(N7SY=#OT?UN5YM7(5^5I4KA9+XYM&gt;)*-J72,S M!6@90IQ5K^E(\P:U$KX+@H_1ZL6"*^"]1##JD7X_:G&gt;Y&amp;7/$QO&lt;,Q]"-E/"OI/7K@V[4U,!@MRUH#;X-O?@JDG6T"Z:GTT BUZ[SL+%:E_#\WRYUFH,,&lt;73S)@E@14KM7!:AJM0=GMA-%_O7YB8AL) ] 1#IJO17J5OH&lt;W/[!5+D&gt;5-NC FQ=@!WA^P^C9V)Z@"A$,\(D4F@#3YMQ''4R#A)V!&amp;:&gt;]F0X)31=3+FF]PL''@9U*TZ#U%!0_BPD (S"^M@3AL8''8H''4\ VHX"B&amp;KABA0DNMZ$P(UXW5LN!&lt;D!3C.GLYA''C!MI01!$\1-IYGH8QIPN@@,BHI *$HE@PIN_I0;G\?=(@B@DA@@DE@''&amp;:&lt;%9)&amp;2N#F:\VMP%0)$CX#$9R''S.7%&gt;T=G5:+9GOGVJT%^I2/+PSI''C(5+-&amp;,N%&amp;W''"VU[+Y(IJ]^^1M&lt;)&lt;R(1;&lt;,!K5F%:4X"2(9J5JX+^KU[X6RZQE2R)[=T&amp;Q5;E:1Y::6B(6P.TQ!L?EP_=\L0LO]SG]ZZ+SL]_:7_H#DE.+F!\$C:U/+=;V:I-1J$]6/R"]HI,F1DJM.!GF+EY-&gt;/J&gt;R7IKI*Y.!P!6@"4 Z5L3@HI6)[E6WQ2]DUZ6B?FUKZ;[+"#^27*$8U;\^?0ANZ6P+4M#7\4O/AG):\OE?)^.9''):MS)-BZ--!Y=97W&gt;-Q1]WOF+O''6:[H0E #\:-(W15J-)DU/,M,(H[(]&amp;9=2KZS(9H&lt;M+:_5;\\\A2:&gt;W+L1''BX;IW&lt;X2Y\991H%1&amp;,0.4&lt;FJZSKEQSAI[;GYTIK;&lt;&amp;W#IU92Q_]6A+\N)D-P5N/-\U&amp;RZ[K_JU&gt;.SP*?Q77TZTF.WA$03TB6+%*5+:@A$F1QZ7Y4K,,HUM[36!JC7JWX+5,OP)_H"5H-*60ZD3) )L24OHB[&amp;(U@KMD5\:K6$''M-@,A\;HD#ZE7U["T"P&amp;D4W-''A$X09CE?0BX:%E&gt;8=)"S?X(R\L^#&amp;;4]&gt;SW"M=%R:B&amp;NZ3L?N;D96C*Y/ETM*(WTQ!*&gt;!^&gt;G..F31=*EV5-=74XM@G]&lt;(GW_SM25UYL6PS_D7SN.;W,]&lt;QRQ\U^LB=W%=&amp;5&lt;E5U/%\!6 _G''=*5?0C9M5"/;7ON8N]&amp;^&gt;/5 ''=-5?V=/#N;\7=40?&lt;@M=V8SX-+_&gt;8 ,K#^''&amp;01DQIY+E"N%!@!XQ+;6Y7W?''&gt;&amp;;[:"4S0''-\\^54%+YR;VRY%/T- /D+,A7X+EJ%CT#8[#.E1H6.2:$*PQO=D_3DWJ+712N/7KCV+;&amp;O8Q$/N\&lt;9D&amp;PL\"?''2.Q&amp;NQTUEU\S''!*NQYUWD&amp;&amp;!243%Y6&lt;YX[;%["9J''B\9P&gt;]D,4Z(=+L=BX7O"'':S8L&lt;8OM.M&lt;/!C"^TNU_I/8V^T''&amp;''&amp;73&gt;L?8_!Y2[I?I?,''=$G:]&amp;_GO?=(@B@DB@@DE@%YN;D&gt;SX-VYCUMHKRR+8^ZY,JU+!ZYY_PJ2RB22[KC4EUEH6H-/=TIB*YG05U&lt;OU)-IWQ=ZI$_Y9ZR6WB68;$O623!*NVZ7S@$/=#5V1KP5@(=:P,9=O!!*/=MF&lt;9EM@R%.$G+S1M=T.W)X9*901U)O4E4I3W;=&amp;FQ''!:T2PRRQP-DB#5H!]F2P3N&gt;9K"K1%0YT/Q@FS !''"V6Y7CQ(B*N[9I;T]?Q8%+/R''&lt;#?@O?Z@@ A@0@AAPJR:M)I3OAVC;C5=_''IA(HXOC"1"$GGROW0EJ=#;82@ K%=&amp;, D6L&lt;_YAOO,@%''5WW.1D[[U&lt;?C[F[-@P(:BR^SVZSQ8?_=_!QO''955_)4H"AN+I&amp;24VW2$SJUZ:=TU?!#[*"%(1T[K-\!VX&lt;*V(3:)&gt;W&amp;-)MC^IZ=ZG3;AGIV, 1L,&gt;1&gt;G7LJ&lt;+PF.$,3QBKU"WY*-$YC=/S6_^K#8[$&lt;M.Y#FQM&lt;QF6B,&gt;L3MEIKKIMI;UZ''*&lt;R+T\/&lt;@C&lt;OD)9^7?=(@B@DB@ X?@!4^&amp;I''1D=0RBSB_I&amp;:O&gt;"DJV)@WR)1H%"[T G&amp;B^JVH-"Q2SB\*OYET-)I+71R*1Y;Q[^X)2VVZV6K2)H%/TS7BF,19(!+K)_WPF:2T+UJ2"+#QKFWCKB:BC4.''^AL5]8@U.O2U)-3;% 5S=TOY;J*OW2[HV''VV5@+?@K U@;X[3^V.][B4GT(S@6PL&gt;30MD&lt;R]B+*$:K^_CG-GQI$!GM+G,)ND?E*!MBPF!2IE0F''[B,06+8FS3[[C^5@+]N4+,?S@2NX-QQT6\PC:/,#=\-6&amp;DJ,$#;;(^3]J_8"0&lt;6RUCQ K3FPX\)]V7%.XWF 6Z&gt;T"L2-_DAL?[K46PJ.ZWY71K#B;=Q@%:)0%-X''JP''&gt;"/&gt;$IR4V7%_3L0&lt;8P*W"TSX*Q,1#J.FW@!L="+(.#+!IK @*D=E(H5S=DL951%5RD.$&lt;IS^)J$*''N8JR_&lt;XR&lt;D%''K-.+P%@L&gt;@R%[KFB03&gt;75R_Q]6!UWJ-L#B/M\.RB%!R9XD!I,706%+KNHV6!]WDB#8!A]L&gt;Z6UM6L]YRB%!L,[:^TBNW1Z\OW+"X!SK*^EW5''B&lt;$70(L&gt;&gt;3-S''%:KTJ''Y-!U''1%G"=TT#%G3JS6(29/(S?=(@B@DC@ X?@*?LU*@M2T&lt;16_ XU9*:G5^W&amp;WS*P%J0KY6UT*=4&amp;$^;@2^Y\3+_&amp;_,.+:YO9QS43,* 93257*9YOLEVNH'')FH5#-B%KV%+JM&lt;:3!N8@X$8B@#3I?M_2RK@E2V+VF$II%(*!_?DS&amp;PT2)K*T52''[LIHB-T:SNO8*U/C3AM8]RD5GTA]?%-&gt;QK[''&gt;*#"\U;(&lt;H4S.=LN9XI@2-_R@E0RARI[8W$GA1@&amp; &gt;2+Q&gt;T:HO$.]*WHDIV*6"''&amp;X\O"AE+IM/!0;QW%A&lt;]7%U^%+6''U#F$VM"8+ ^YY&amp;)_&amp;FXULJW1JB_ZN%Z.;BDMM6NJQV_.!''?0AI$4_B^@: FB9\04S151&gt;98_+/!ZGT+:#5T"AN1-L2M0''B5@*&amp;)2,VF\%FX6PWAM,E8[[[&gt;&gt;L&amp;06^&amp;&lt;:&lt;"1M:%EZUD;)FZ#\&amp;BT&lt;,&gt;3,,O*,\28MA.T@W@*VA-L5I6DPGF?0A,I,S(@URN:6NJ)O04ID1*5P''HEK!]V!RA0&gt;I(\U/.6V1/!CBG4-DJI[J$3D5B%PM(/F82#(=U-RU-"R)D\-(46"NG8#*)D&amp;TO^_Y#$[8V=Y%RS.D=9;P!="7MYYUP5)L*!7@;([P8NERT680''KI\RZ5)-$[$7VZ-,H2Q3K[#0C RD(%K*&amp;[!L3#&gt;D\6G_&lt;"VWUUAE4;8*S[!,"!@$$])A9TB7UGV26"00WWRUNF&lt;''9 VN[GW*;TJ+T#C;C.&gt; C&lt;3?6 @H@PDAA#&lt;B%(TX9[L%U-E28,L\%R,&gt;WETL-*+EH4S&lt;FK,E5CHA111Y,;W-%*7D=.''Q%7;\.''=V[MX&amp; ITOR60H$&lt;,.QYTX&amp;KU9,3#5LG/.-KX&amp;O!M*&amp;+5-_4X&amp;%V7GD._8IP@]6E*;7-;T)''U''+31M5=-7AH5:$#4[R9#MD&lt;WS[M (I3100E)T+]1"8SSU+26FK%V\I%D#GTTP''K.FB+J2,)J,+@!%X\FU%ODDGBH*L;.0UDTE&amp;Y&amp;NR**#"3L\]F5V''*S @&amp;J1CIAJ@^QJR*+YGB*@VY"@E@3II8@@C"RS#K(R?E=N_3[&lt;KG4A8_F8^W'' *0J,)J,+CI%X\BBC1AA14:&lt;L5"SH-48H7%_RNY4HF[HX4&lt;"NAA8DD\0Q6GADROH0AX!EK$J/&amp;X!P^@0&lt;E"JRFYC$&lt;T*MGH!232YG@YS%!H*&lt;T$&lt;+&gt;RJIF$]/&amp;UDAX8JRH4\"GR:N)U5X\02-$UH0@(IINP@FYIOH@])NJ5:7G4T-S6J:QRBRN2$%XQ,?U!$QR H%FW_&lt;-S[Z)S5E6^N-C5VJ1=RU-J:6B,P.Y;,FF9AKC1$D[/EIF$:(9P20MH"]VH$\BL\LOFZ5 OGC:"U^#I*# 8G+.MNZQYLOD^GG9H*%B+Y/7KK-GV)5D53SN U)NO%!""C#V98K*FG$7O7KQ6ZWS*F7T(X;,5QP/&lt;=[#VOSK6$&amp;T9G%$L K&gt;43IK;%*TZ_*)_\&amp;5MIW-[UWD:Q:;:2FR''[SV\%$2:/O"Q 2207[N7D&lt;[RUZWV+:-NR/:N54I@NO&amp;#"IA&lt;122O;R)?(/5!&lt;Q/6_?@L99O!_$?D?I1AMJ)R_\Y&amp;S[J6W #PM%M.D''4$8&lt;*Y&gt;WOF;;IX#F''^Z56_U%&amp;23"PB''YT?RP-F+ &lt;&lt;V[X8S;UNZ&gt;&gt;T2OCX!"&amp;MZV[)&lt;!MCH/O.06765Z9,M9H7RU Y_*"9K$-ZRNP9=DR,82;0\,WJI[VZU.1U5=$''P%ZLRC&lt;%0.X1;-5;;K;\U-&gt;=+?@NI1Q7I^%)M:SR24@=/I-GCR)&lt;PF_CL#^=76:M(:]&gt;&lt;&lt;4@]]C..%TL3I&gt;B5!5K$\?E"%_/Z1@"V8/TQQ=VV%KY*S58[4\^XK/T%$C&lt;OE08\\,^7], 7A-:,[QC.H-[04U*O5@.7AOW*1&gt;.RN8&lt;]IP\"8GFP9\LKH!J,!CJ2&lt;FT+1AA;BC!W_OI85=5SC44/?@K#E:X^"&lt; A!_(M%HL$GT9&lt;&lt;OIH6*RQ6^Q#3Y7N)&amp;O3$''F&lt;5[$4]VS\H:G)+$:[(4D_)KCR202''Y):&gt;8+5 0H4M%*PZ.FM1/H&lt;\"6[CNIXZ3489^@W*+V%,V)H^*Q*2L#GL8,7Y;G)/&lt;H7RF-JH9IC:2V*25PAF$!AL6WD#RN7D%&amp;3MKX,R''WKMOH&lt;,,#_#OH9Y7O6&lt;[%:&lt;)DK65VJTE*QK+159''%!$GV&gt;+YX[:02+FUX0-+F_]''"V4$4E%^#U!=QW+V*$\7P RKW4;-&amp;7[\ K)52M*_KL X62?ZP/W+VAIJ@.)%FSJIEW-LSM*&gt;9#Z]/"7!=9-T;693SS/C\#?MV#B&lt;V%+\ZL0IA3;&amp;3;L"^O2[M_.R]F)T7F-OX%4OI48(9@3-("U9F2G\B\P;]W7Z[_[S&gt;8-37/5\,E.H4J]2JNNO[\;"*9])E:#"ONHG-NC''#[M0,QS5-&gt;=1;]R=+G+Q]H6M =/6Y+/5!DW@%%#.0S4(R7I1E303]031T%(#?D=7*)Z7[]@''"6:#ZZRRJ.I_9$-)HOKT0&gt;[F8Q1NU6_Z",\?"&lt;]&gt;?I1VFRSOM849-";.U.H^,=7/OKLR''G4@RZC[8A7QKDM^W^&gt;I]+8167"$[[6@3D#0%5,[]LNS0RZBU?EX\L_,=/O4O0/#?Q_Z1V,;[Y+3[_-%G[("-&amp;]J$5Y=1'':TAXLV#YG-VEF)S6G!01CP,11(=RF5-5 +L#):&amp;%&gt;Z-IFP_3)RU^3;^O^UNS]_S1V=46*+IV"*%&lt;8_]66VK&lt;]++2RADEZ5TXL.$9$86&gt;/E?X .65$$+IJ1^V&lt;;5[C!R\9VZJYBMS&gt;UF2GY#][$XTQS7)3BDFR]EW4P9Y_4R#E?][&amp;:0^7OZ-RQA]7W\F_445!R(VJ/UD$P-31=P]*&gt;I-HN(9X:F7?1N =TBE?-&gt;07ZUU69Y^(,20QH)[-3[!"5-L5"-\^+:]/T46Y:4&lt;]*+A\!^M&amp;UR\8[@3;L&gt;V_O9^G6L''.S5D''WS\1PE[P/R49Q''*Z?M''8,[]-&lt;#-D%27CWZQ@B2BQ-IX@&lt;BQ"=-4\#R)S,FEYG@CN@A8"A0GOC[=++&gt;$R5:L1:)OT]WIS''):WS4^K&lt;_O9L/$8X(TZ=*V6-3Y:.9%9$QFQ;E"7BX!(8EUE[''&lt;&gt;O\,%"7MUN1[IO.,WRQG:;0+H^$&gt;/2*]GLXS*223]JMX(.)H3=JIOIEG*I4Q+6@\LR_Z1+''$@%Z+PM*+&amp;(#''DMNVB[P#_&amp;&amp;U[D#L:G-WLC''#\;&amp;7W&amp;(59I=17^N$XW,+K+=2I;X6&gt;,I3J,,[3]S+:&amp;5C#%#[M*+AIU(PF-8FB9"#A46]U_1E@*D''D^9-KQ+P4;UO]IIQ\RU(:V=6)[F7@P192FV1D+^C!%''1231&gt;&amp;V_694? 0_D&gt;%&gt;O&lt;O9.^KTN:;UI.F1[!W*U99*T?(+J-S-"3SV:U!ZDRQ3^RQP $&gt;Y/@M2VJ+\) 7&amp;7RJJ^3EL;":!V6&gt;-H(%TOJ1N$C \[9V63Z](5/V66P[)[E&amp;V6SR &amp;!+Y*$&lt;LS"/+[Q*A4:,U6,3/X7S]IIK\&lt;3Y@&amp;VU3''H*(EUH8NRYY@L@A9VFDWK#68$?!=;"7_?K]&amp;/.K;!-.:RJF)R%''ZUQYX%H&lt;87&amp;\L+/FB.$!,1% 2^7?@GI;Y=1HA*@)7=L3H_H2!QX+&gt;H]&lt;(FI]/7J-KT.U2E&amp;!&amp;G"W B)AAJ.#K1U R)GKG.K^-66"K\7([''TVO1]B0P;;\*PK[USIC@&lt;,/#4&lt;R!NH?[]?6/,EZ'']!,)U%6:'':^9U^B/KY5&gt;)K.3NT"O"F$:.^^KF5;W;V6ZZ/R,SUI;N&lt;1G\K=7(R&amp;NQ3M''F$GTJ''0 L(;,[Y^6..-N+/V50;!:QO!0RO3:P8ADYVW0# C''!&amp;F0U?\\,5Y8J5B3@5*MY6%!$E U%"%L;IGF29\OM31AT77&gt;GV2P[UN6"V^C[_*:3TQ&lt;0IU$$,&amp;W0GKOPE[KF:[[A&amp;4MR9KEBV8-4,&lt;801;VUS%''68&amp;W?:@G? !1,);-1+_5 1/C]=1?/K#5A6#[IT"7BN.Z$$KF-L:11#5T":&lt;3X[-ND$#66#- ##:Y"(Q-GGH]SM5GCL6[&lt;\,F+-O,/[-&lt;-)J9$7F9-+;!)C&gt;VL%QFHEU^&gt;S##7C\7?6#P=.[%-]BW\]//;[@%LV/R033R03U4&amp;$$&lt;$F''1:!$&gt;X22G2[I?)O[_5;]L_1@&gt;_6_^?*9&lt;Q&gt;;_8 P&amp;ZR\Z?[?-@%QZ7Q-CEKV9Q''1U:H[K 7&gt;&lt;C0Q+U,T*N7Q6GOS(;]WV-S+Q9YIEEF/\(8,6[L^I1MQ%3LT:2KC%''''8&lt;2X59&gt;HLR2C-IX\RQ"KY]5(;S/*^-*[\,=9I1[V/C^ $*%&amp; &amp;RF0&lt;KQH:%$&lt;03OG@,L$;R25&amp;!#"RUP3S[!)L Q6T:V4=.Q067^7M ,1/Y&gt;(57JW\+?@E:\U_X8QCP:(+5$2ROS8Q3\=!NO#/3:?0B!T/4+:W%&gt;"?7_3_46BBA''$Q1@HHOMVT9!%H9 &lt;C"K\-"%=KZ O0GY/RS1''KWFG&lt;\%[U%2N.OL&lt;M@FF7:_[K=CZ(888+6:V4PP1.)L''R _*ZK,&lt; X]HI0[OOOS&amp;6E%]]JH"10H^N"IA)Q\&gt;F(9\3&gt;D^OL?IR7/6?_63\[D(,&gt;.6T6(*&gt;8TYH[%"/DC5G:V&amp;^FIYA5F"O#;Q11AY%+_9^#*R)MI.=#\J\R4%P9-L! ,/J9UP^W!;2@\OY6-%&amp;*5J\F7&gt;*#&gt;G[%!%,R2SQ-&gt;GFCO(C\&amp;BY#!%#7#&gt;&gt;M-?V=&amp;1,''?@GK?@LQ_1/W;57G=[&amp;1;L?43U?$QX=35-,$  =4VJ"?U\$. RFIT$5)W]&lt;0BIL"7Y'')I8C!--;7AX%*01[#@9[\-5VU;\0_!AW#V1N&lt;&lt;4''Y6_O#_C?_''&gt;&lt;.I/7&lt;O9DVM&amp;?^E[&gt;,FM6?:-?/K"=-EA(''7JC\Q[EU9D#^VKJK"!] L._D&lt;L1&lt;&gt;H(]2!DD44WVVLR1SG):6SM#B;)1YN?G-&gt;G6YH2)EFU7&amp;B%X#*66.]NHNYF:$S%SX:!XY9,FT9YX=&gt;''^[L_*;G-";%PM9[]6/F-G\L)[J(&lt;*0+K*&lt;G"3NQ;,Y86S?@D''-/:;.&amp;O^52HH4%O63MY#D":82&lt;GT%TRK&amp;MRE%8#.1E;X=7RQT_]\WT&gt;(O\X"""#,2-1V%YRLQ(F&amp;O@(L%$2&lt;NT&amp;V*3-N;5&amp;+V:3\Q3#&amp;#O0;E^S IZ&lt;(8*0&gt;?&amp;L^G!H''EVGLD\PP^08[^]&amp;6&gt;3.U^+OE[7RB&amp;*2STCDU^R_(J0Y*\.V)R(2Q,48CS''@]8^^''Q)+)+TL1:0/2L%$$MGUO9NS2C$P!0H(X5"QRRESOKL&lt;6IX-IH9?FX,1;?@I\#%1;&gt;VI4^T2U8]/R/AW O!E!+''UL,+ ZIH?RE!%''''*TXPC L!&lt;"2Q2OGH/%^M"#+6\FWH#! IX.V+B 9!Y;D,*9=&gt;S,03&gt;2U$IU%NXYRPUH9DD\PQ MOKKLQ0CR.4!@;,7I8_XYXAAJ-7 9D_]0R1IOZ18$?]0SAKKBVFQLT#1$#.N$#LXKM1INYI8$$=)&gt;\?Y3R02OW^K\ZT9_"4D%U^(KTKQ G&lt;89:XA9@D8NYQ&amp;O"IP! R7G&amp;/C9O.X;_$-^[''G2&lt;/8W&amp;?I1?,168;\].N7G[#-&gt;W,16X;O,N3A&gt;P&lt;,GA&gt;0;LWOM2S%&lt;O3#''&lt;&gt;A#,16X??6 @H@PDC@S&lt;!89\N1X^-%UI''*2G#FW;B(QHQ[3K4[(K?@NF[B[_&lt;UU2]T5FILDUX^P"FIC(&amp;:U^C 1C2VX@C(#,\IL#M8V+B@EWF/MKXNS#)&amp;&lt;R&amp;A)^C2  G\!(4IN8,&lt;GY=O&amp;KP&gt;LX(&lt;CH#,\G_;)![,6P23B%HUBHQA1ETN&lt;UP@_W!%*FI&lt;@VX!"\\YIDS?-AX^CE68IEX^UF1JYD]39\@V4Z@;&amp;;?@O._,3;+C''&amp;L?.NEV+@HG&amp;@!+D8;2UV2C%G@TVA*YD9[OX;QH7/HN.KQXL,B!R-_D[$B?%CF&amp;=S_"9 \BU''(!W, Z[8ZN)B&amp;MI,TELZG&lt;FB3&lt;MV2?0CH;AD"(6X.)-D L%NVAL.1)G*^=?W2Q\^N&lt;@U91Y*CIZ&amp;D+YS0:=4''-NRJB/_U_3;T(G D20FP.V9SQ67\HUZ 4F6!2@U+FG388:)T/# LX7)/%DC( T\.[7*IA@Z\0%:BG.5)LREY1:7C ''1]%)A!/Z]8=[)B*AY0U''H$W5?.D@ 1ZTT#&gt;+1C*WAGT)(-A;DK2P34"Q-G#0ZFMBXT$&lt;SKT$8P7]]982D9-P%E7 0N")=LLJY:].?P1^&lt;\&lt;FC'']W+\P''0D=,-(8"+3ZOU #R44N;%*6E;%F)4X]P*"^ C''K]&gt;7J@#]34&amp;ZYZOBT8:+8*8F[RV\AA-V:MK''?Z?%?WJ &lt;MS&gt;I84[HJ3Z!''W\._\0=F@P=,F!PVT7CKJKB&amp;Q=W&lt;[CX0!4(@H%4##*S&lt;"$ADH)PU 5PPK+)"T\&amp;^+.Q&amp;!%CGV8IE4H 5^&gt;''#A@3##D2(%7%Z&amp;;3HJ%.SS%V)6/]2\02#&amp;T&lt;O(^\^Q:55:8/A!M(J]4@&gt;OF?,XEO-&amp;&gt;-Y-YI"0&lt;&amp;3DDF"B]J,IS#''@=01/HY+^D=6/H%8!8L5S-?_@$&amp;= ]U4"@H]MJQS^)\N @P!LQ[_5"(0;"Z&lt;=3SL YZ/B''PQP39HO&amp;?0A.\ I?-?C3*H,8@O5A2Y\+SP7D!C^8IT=M6*!%N%!NCO&lt;@ PLHB"B0_*1H)CY&lt;C-''HA UH\*$]Y)]@^J[0U85C_@MQDX)L CBO[*6\8I-1M;&gt;!6Q,^[*0T1\&gt;;RS4%8B4=&amp;LJ@%F*QMJ0A A@M89LYIJP&amp;#^H!SBK69T-R&amp;VSVM!+$W6ZWW$K!D_(O_BTOR_[O5&lt;S!R6CDKFD]4%&lt;Y5;PB2@Q7^ X I+E6/8SQ-%+H0@#T444B"7TN&gt;S&gt;I;=D#AOQTBJK-%@H]N]G$@WM)%BTTDU3]EMJ^"14H\H&gt;@K#&gt;W;NLIQY)1,"RPUGC;Y-"Z3QE(74&gt;L6:=K?0BHH;Z.ZB-B.'' HZ]Y9UM+9HXJ4P(3J#12X''[C$3HRV]R7+UTP".UU;LK#.F\?-:&lt;KW$@P!&amp;8F#S:36BZ9\X6.[.#!CU]PDT,_6&lt;T(_Y V=%AN[E_3"D[J%^?AS1B/1D,[?@N%6B3P%_A1RW+9;V2X@&lt;8L!OANRIRW;LH]A4BB$X:_Q&gt;P0$(!VZX!44CXGU%#)RN8R-L7 U- 0)U4.Z71?F"+,Z42TK)$N5I0^,AISFXX#2H%\.!F?,C@CE+,45PM ''\_%VT&gt;M&amp;UH$@^PR^8[L2]1@B (F&gt;@-"/K:I4ETL?*3-&lt;8%9Z[ K+[0CB6:''C4R&gt;Y#5E$ P5Y8K/GWOWYQR9]^GC#T@;4C&amp;OWD3;]%6LM:29;XP^C!*02GD3VA#):06U!3W\H^.HS53$;?0AXON[GH=P[L7RWR,=5U3.&gt;A0KQ-L-1ZRTUT]*X-P2"0B/#K8\\CFE2&amp;CH6NU;49[5 7]QQ&lt;T&gt;P+\6;NY&lt;3532?-&lt;=39^''&lt;C"^^&lt;&gt;Q;_0.W.&lt;Y0X9Y?4?SN/*3?@D]?7''G#;\3&gt;!'':O3L?\3''3O(=?9''4/8OZ_[C+?_&lt;S'';?%3&gt;5''2''33C/#''73!;?+C.O$E&gt;WO[N^NX_5_K?C?6 @H@PHC@S&lt;!O($JR?U]= =&lt;6%\:3F*((*"A!-)R5W6^&gt;-''/ 8IJG*^7[=%&gt;HFN?H&lt;.VWC_O.DG:C;XJVQ#N5"%:ZV.GF1@HC''6CG(./)?@\"I''3=G4[W209#^SE^@''5BC2Q%AG)HR,=TL?^R;4C9N@88G!:,M%&gt;G,G.^J)+2D5F2Y''EA@PG)&lt;+0/C7\4-ZA5Q=VK_PF[J8M8GA=?0B]G&amp;^:_J&gt;7K5IF%&amp;;E=6_#@/@#&amp;(ED]F.GJ&gt;L^Q\WP $(KR.-# ECB)+$OSZ(]S@R&lt;B?W3&lt;N8 4-M4W_2O,\+-''0NTYM2ZFQ-KM-+KN:PLR^Q1QB+67("^=SOY_''97$I]C6"8V159+434:),Q:HO%7"J:3(R"*(;MZ@9'']?A8#''5&lt;G8!^4[K;3&lt;YA;&lt;ICG"%BL^N,&amp;9;@#_L+P/%1XB]?HMN[Q6&gt;MU;''=!5=/2_SDWA03T=35&lt;C4S63Y@TO!H(0HP&gt;I)ZDG4V?Y_68AS-_K8OO/!A4\@8_8[U$-OP_KO)&lt;U4PQJL59O/&lt;@?"_?6 @H@PLC@S&lt;!OH+Q/83!F!5, BSP&lt;*I..*52Z[G!5? T&gt;LTX(C[*C2QP5[SW''8 ^JC1;OHSLOQ*X#A9G;%QOJQ=\^6[0DH* 4_^,MC8#JC/%G,L^_K&gt;JT(&gt;(=P&lt;G8^J=LRU8K"0\4K=\TV6''4''/54W0^YO)]"$(!/;!D:NBH&gt;GDDVZDA_/$'' N.(QP@)^Y6@-8]@MXV%E/MW3&gt;5&gt;&gt;G(GQP\IO+9%\''?8G90;R:S/!6;QI.$]8$$''&gt;2*&gt;8_NR?A9)-WY1;80N4[:&lt;CPMUDF00/H%O)8&gt;G\5-Q+ZC8A#WT;#;S5HPX_(:1(AYO,@7Q/1%$''X ".(Q\OQ''L&gt;)&gt;__)&gt;&lt;%0?;:H[I277C!VS8C"A%SC-JXN*%G2&lt;2O8.B8;+GVC;NMZ8\&gt;HAV*O''PG/(?UM.^''J;)2&gt;Y)=S/\4F.J!W\Z%U .#ED*LQ(Z07CU7MCO?MO/&gt;''-&gt;?0BE5.30OQ^/- ;Y@Q:-4_SCI.H&gt;I ,[-8[+=LWQGS6/W?Y=,QN]QU?0" M!SX&lt;I=A6_ENPM*"%?,&lt;O7_&lt;#//S:^_$&gt;J=13?@F]?0??Z@@0C@P@BDPLQ@@@PA- @$ @ DD  D!2VFRHDDDD@ D$@$#_D3[8 $@ $ $@$$DRQ&gt;ZDD $$D$ $@DE%%0P $$$ DD$D@ @1(@L@  D$$  @DD JD@T@D$$DDD  $$$4 ?=(@B@DA@0D?DEA=I/TFBB\=1LYF$M1D,T[&lt;2_X;?Z65A7V]\FJRS6CBOO!$R(IK[95 T%^P6"Q!H"(Z:/Q&gt;0-P0AD.AK%''V1XZ9@@+!L3''@JNFUBQ)0U,_-@@\@ULN8&lt;E$&amp;2PIU]33^C#EC &lt;53HH@"T1"0Z&amp;"I1 771 UG=@!^I("BIGK3&lt;,WJC=\!-SA[&gt;#AB3YD(OGFB=HWE!_Q"LLT&gt;?0B&amp;ME\CI)LPC!1!]+T@ULCEY%WH+PM=TP&lt;!)-]WU=/-\6FTI-=O;3W$/\.)UPTOC ?)AF#83+D''E&amp;ND^1OWW\_T^"%1)T"(MA]66/0,13/C79E7W.WWAB%9J,GZ+N(&gt;IV "CNB/1F"WJV1-?&amp;JW8O4_1D^*-/G=ZP(SA''%,1''.?Y2A/;]..506@F"?$H^"N&lt;E0:2?V)[[4(,DADXU@$E6\UD4T7#&gt;&gt;/U+0&amp;2A0MDZT#*G&amp;T*JIL,TC?@@X$@J+S]AHP5;V):1)OQTLUDK9E8F"C!HTR]$8:K]&lt;9H1((5OQD2@U9!9(&lt;K,]6$FE)''V[]LA:+WZD9I86J/@=YCK5K $[ N@OBAZS.K-Z!\(AK;PCHP4@)$\KW!6UXJV;G!A=L)C1Y- 4_B;R@(X&amp;^AH06GF#FZORW+0?FT''+DS"H,_FRN,&lt;DU/[]N$RS@0-2J0[:&gt;K82R:BG?@B17JJY$[\Q.&amp;#&lt;8 ]\66KP3%YWH"==[WE(%/CY,CG;88,L@!%8SV9Y_75UFNAR7BL&gt;]#;^ET&lt;Y/U9I#/K*6JTAR/NZ6N!!\^@?AE21G U^3J$Z_#64\/T)W3$&lt;ZX,(M]Z5U\C: ''2:X6\$RMD$L(\:Y;R S@3+4U!CQ4@H&gt;F NT[\[1ZMT&lt;&gt;CK@BCUGX_&lt;@&amp;MDTB;OVZ_1%!V7''$&gt;?GIM"6R&lt;,4O*X35DS0^[\]]UT7W./T''@71#(T&amp;G&lt; &gt;0TT0Q&amp;-([Q[N G''H5$R,H:_XB!&gt;/S%J.-M4_+H11:?S?@K QKM3^-NK9HZ/!?0B[1DL&amp;1S(/2TP@Y]_(]&lt;,NB"R:]RFN.6HANM=;XXZM'':&lt;C*^SGB=DA9*@XM;GDV,NH8%!)1P27NBU6N"+U*[B%NVHWK!^  6S&gt;A)&amp;A?F;X&gt;FBEI ZA@P_N#A,=-A MM&gt;*BDQ@C #,&lt;N+0]7MC15LFX@&gt;^";57^KDNVG,(BWY=DC$PTCX\,PEHK''&gt;,5D0VJ"(( N8"6@0$=W3\_5^1C[,(Y+C XJ#FTAQ(N&amp;HQY![NF,)0228;W&gt;]T[G(U$KRWQ@7=R* T Z_W\C.?A]SAXI,Q^#Q?&lt;VF(S:R&gt; =,Z$/J&lt;W&lt;7L5PK2S1''!R/A$''NUH4DQPP&amp;&amp;,X%6!"3.6#MIHB)OVWJ8(X3E+H@.4([/+?@E"^RP''&amp;-W;FW=7QS2?5YS7E7TWBH2#L(^*A14&amp;^JNFL!AX #&amp;0F@PCA5A&gt;E[RRU,!3V''=]?X/@3E"T:00-]G=&gt;0]WG&gt;FJ:6H&lt;K\JK2$%ARYSX^=B7!NCR$T3^-RY5R0Q&lt;;XP%1&gt;&lt;&amp;=I@-UJ$0@@I8OG#$LOT)F''LO;G_:^L +4@O)#@D3E7? #L@B(Y$WS[A_W]?/GOZ-[\73:]2&lt;4&amp;)]WH''JD^GGC+IW''LA@#Y@Y6&gt;IU^P''SVSPLM@T1OM[_''V@FP5);?&lt;\TODZG&amp;=,VWC7(0_.X1D6@VZ2,B[":;EP@U[1F!.\10,B/4*TRUPU3/3=X%%''4!^"W HF''*=7=Q1B-I,^&gt;%%3KK6%J;JQME.V2?6=(*F*&lt;QSW(LYS^$H01ONZ, JKN RY@4SVIIFB4TO9 R34T.QSOIMD"RCI9O%H@FB HH$O*&gt;_OO91@/_AOE5N^6@[(WPV2$A6/LDZ"@&gt;S(O\O]&amp;''F1RPCY&gt;,)D*5O18=,X$-)$B9PTFJ^\I6IR&lt;4=I4K#)F"O_1&amp;6/V!5SQ$230R?O\M.A:^./49:Z)N=C&lt;XW!'';9/%" QK\V+8 &lt;]$HVCK"CN4]G4N3.U X72\9&gt;D0Q,\J''++&lt;FQ&lt;@[=D&lt;&amp;HFD73AUGJ;GDJ''5$ [Z.GU\X#&lt; :@=CPUK/FRSY.G=\***+/FM0E*^''?CM".2,9=6^L*''*^-''''D%NMQM/M:\\JF&gt;+7W[:X*E]4''#37GJ%-JRRPT HL3*&gt;+9J0S\F)^GLY[E*$:9=[09&gt;GL:=8=/''C=WW=''._I_/M&gt;I_,_?CNO.&lt;?_=9&gt;E_&gt;/=9&gt;]O)?;'':;''N^\_6_(N^&gt;]_6?O83%3=OCG=G=&amp;\O]531763?@NA3G[=?4^Y&gt;:93)7O5G?#63#?W''718=+3''''&amp;_IK937O=^Y3=W/4^^&gt;^40&gt;U5=/[N_O''6]1&lt;9&gt;&amp;_"7=WN?.&lt;&lt;;939I/%?(Y&lt;*?V]/_1&lt;-?0??=(@B@DB@0D?DCRUE\&lt;'')''R4Q/B:Z J$@+AAXZA\L0%/ZP;6K21_+BN[G^ A9+A+)&gt;H(P*GUOL@U%NC4ONV''4AK0#Y\.O/2C(+I&amp;E$ZAA)JI*\BYZF/@!F''JYMAY!XXG0LB6"OFK(I5+N5,[2K"A %8M1=EK&gt;!8:QLB!HBV(DBRR%\*1(H"''OS6&gt;GT&amp;L -RHX)^P(U1SCH!AMAD&gt;P0^#"ZF=@2AYBEU/01X:5KVK=+ZE4HZY&lt;$?,?C//$Y#7ULCRHAF74Z2IK@J @:/_;UXW^"Z&gt;C7UR=JSG; %ZQ&amp;RE:PEN.H;QS:0_6/085&amp;%PFZM4D3!T5 GU&lt;H .-P:@UA]7G128*0X@ZTZ$Q78-5A*AZX''229&gt;C/W89?0@Y(BXSO(+YH,-%M0'')F27G#YQT%VZH)1]0QID&amp;RHN2J4PT.%AUZ-UUZ//&lt;O_YD]ZD?*%''53\&amp;8]V%Q"]*@MX#$HXV2P=4&lt;),LF6&amp;,OF#[N @QA''/&lt;@9-?&lt;&lt;!4Q8&amp;''NU?  GXRCM&lt;G"A%,Q''PDC_US$MQVRXA\C8%H1^)]X@(-GKNF3F+.X^ :BN$8N&gt;W''BC!(ZA;GM=W*;U]?8V51B+8@\CD.:K(&amp;?"^]BBEWYO@%OLB%.CS?D&lt;?S8+1?!?=(@B@DC@0D?DHCBA-&lt;!]/N^8A/H7F\VP08)*Z@0U$3!&gt;RG*N4%WC2/E$C^6$@FY&gt;H[_5(" @%KTTX@T"&gt;-7NC]OBT6; L#\LR[DO[4D5Q?$#:@1AM!*$Q*3V$0&amp;371 G (U5"TE/@"YHID=S50SP&lt;5%*H+(R4*DD:$ZMN)#A-DT  IZB%=X=&gt;GI7&lt;K,,=HCX"DI!L/&amp;(SZ:POF&amp;3BDM*=$-:XQ+5NT,Z+B5F;H42(9_6O,_K+.[?G^RNMA^X-0CJ6,XDKL"E)BLN.H$6!B#JRLEQUD&gt;.SJM*P+ (NP1,E 0#:T1="G08[YX4&amp;=)T(A$4&lt;]HIPZ2;.P!TM[1MZP"QDYH(4%E4QL%L6O;-UZ*MHF,?0CL&lt;_I+E0[A/;0IP(@!.Y!77QR%D1@3B"):B&lt;AG]@;EZ+5_SII@:E70D! !]''O!48#NWRLQP&amp;#ZHX(IG+MF10 .T#)WE#)9S0)GXBD@"7CQ:J6[VP)V=");302]?X7;''G;X&lt;)"* _X ZR4EF7DX"OULSXZC5;R[SCM@0H[UW:**/%U_"Q?3V !F2DF!( 3##T*B-1[5S3XZ&lt;''$2&amp;)PE^:&gt;C0\CPA? (O GZ;PW4LC[UHG1J*L_AF]ADU6%]A)?1?0AH^3+7?0B/"/0C''O&lt;@P=O^_8_?6P@a'</body>

<body package="SeasideWebDesignerTool" selector="w3c_CSS">w3c_CSS
	&lt;objectNamed: 'w3c_CSS.gif'
		contentType: 'image/gif'
		uploadDate: 'April 13, 2005 12:00:00.000'
		creationDate: 'April 13, 2005 12:00:00.000'
		modificationDate: 'April 13, 2005 12:00:00.000'
		by: 'mbany@cincom.com'&gt;

	^ ByteArray fromPackedString:
'Q4%FNC%!V@@_@LX@@O???7NT101G''SY$+%Q&lt;.-?&amp;&lt;.;.;$1LSJ:.+)6]''[:&gt;/+GC8JF76YJ+420,K@@@@G5=_Q0\GN;2&gt;BEU),GO9(6M#P0LCA]M(&amp;RH0P-D''X:''4,;N3%5]W]C[;BYY*HN_3TU0-C0&lt;OF1:$V5-[\3L3O?LY&amp;N%1 A&amp;&amp;Q!;+T*T/^_/=4)JR+6=1)&amp;Y&amp;[WV98R55#L3L8RD!BL\C &lt;LA%*\/VY&amp;Y.&gt;?W8%-M#00FF5WJ=&gt;2VZ&gt;LQ$0&lt;G,BYSL&gt;%T%-HIB0#DP0IAI1&lt;O#FL-S$9NQ0VB&lt;N\S..&lt;W)$@@FX3@OSCXYT@@L2YL;&amp;TR.F4V-:1VG-3Y"  D@A&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;PA&amp;&amp;RG&gt;B%Y![F%$HDMST2D@H_$D@P@@_0@,@@@@@E @G0@@A?:@IHJC!HVF!8"I"(.L!W&gt;O#2P@$9RU%)^X&amp;RV[''I6^'':B!(D]FJ9BQ&amp;Z&amp;**ZJ-+*&lt;%)JZ''$*.6-+B9.+F%)7&gt;5-&lt;FX.&lt;R-,+;@0,*S1\6_1;SK4 CN5Y/P$KTA@ NTA@HD%PTB9NW$$0XGA0 @BP*T5-WX*@@K9@VSCN^TC^[%7PX\OA HHPHD^OFZ3_-E"Q2CRQKHK_@&amp;X@HEB-,DT@AP8XFE@1DFI$BX$M!BXM?BS[( @DOCCA(@RFB)4(FECYL8QJ!T,-!IR/(.SN)@3,L$^0H$@O!0[=JCB)PL/BM)80ZN*3%4\M+A82*OG)1&lt;?OB:P=\1IM$(#QL0$R&amp;9C/8@LG@C,OXC)P\FVIV0@VQ 70]A-OXXF@SGPK@:  @6?DAHK%II$D"&amp;M6&amp;@ @@@KKM,@LBC@L;_AG#XBLBA*$47@O/XZ?!G"]QA2%)5''O+A#QH;\C"F]^RF9M&lt;LJSG5DOD2M:HB8HH0-3GD:QH&lt;G.P@-VL 8Q&lt;6R/"0O)CGZ%"&gt;_?=N!)3) K*"J5E BXK#&lt;1?RN_V88]#G#Q08"''P/(^OF6K=@0BJD^L@%@0AKKM%%FS$.URIWT##)IPQ =_T5''VGSP_\@C*&lt;=0LL&amp;NPC62(@D(!T\IP&lt;&amp;A4AF[E&amp;"#4Z+\@H_]4A$U157C9S% 6K\Y_#Z[)6PRFAZ%R@%E@CHB_902X,"WBHUR[#!=0NP6%&amp;E005 []I_U3&amp;T-P&amp;IP"#A"YC"QUMI\P4^BL:JG.@SE3$I#EPIA2M@6QNYRH"II1IKHGOIM1MMH-]C205@ U/-QP@U@N$&lt;\A@3OV7BQH%H;H''DKDQV4(=R&gt;P"@S0D,&amp;PLW@ =DDLI@)-%Y$*T%M(D)YV*)AED7Q8W&amp;PZ@@HACR@13$)^**%H+''QB=&amp;V.J&amp;V)YH@E\0$W(2Z[AJ?CRML,4:R:&amp;X4$;K[KV]OO.[&amp;K2&lt;^*J6.GC[2QO_\)H-.SFZ^&gt;8M8E9C[J[,O.^.JC&gt;1(N&gt;&gt;?O[+;;??F"G00@PW[OCABA&lt;\@1S"$+CB01AGKOGDE@5W[OGEFF_&lt;LAEQ&gt;AHH@BG9A@DJ@G&lt;@K@D@@P@$@A0@@@_&gt; @BB 8RE!(^H"X*K#H6N#9BQ$)NT"@DB@8LD@ RDAPJ (ZBBA \GB@@IB(TK(@VBCJNCCZJ!&amp;PXNC;(PDQBF(@2BD*@K&amp; HSEARW@!P@EP&lt;VA1F:BXZ[''XHW@!"C@!$Z@AKZ6@8VF8H\DX^1E8H](A:B+PHR@A&gt;.  &lt;U 0Z+!)&lt;B"-4C5PD@A$0@@G8X=LA@(0DB@ B@*J4A@@&lt;BKF8R8JDY@@^N;''$XE!GSN0DEPX!*E,KQ2W,CEGH$QDD[BF^O-F%[BADTM4HG:Y53EAP% FTAB&lt;U"A&amp;%^N0@''AQ!ZJ,IPO4P$_0HX]=SCJ8N D%P#1FED($7EAA4L)''H@!XD&lt;M2O,@5C* R=D-N+AD/B* CYQAQD&lt;"AABE&lt;!DA[@I22Q/(8^4@AAL^&lt;CA(ZJ/ 3@KJ5"),&gt;_O(DNKC!4H@C,b'</body>

<body package="SeasideWebDesignerTool" selector="w3c_XHTML10">w3c_XHTML10
	&lt;objectNamed: 'w3c_XHTML10.gif'
		contentType: 'image/gif'
		uploadDate: 'April 13, 2005 12:00:00.000'
		creationDate: 'April 13, 2005 12:00:00.000'
		modificationDate: 'April 13, 2005 12:00:00.000'
		by: 'mbany@cincom.com'&gt;

	^ ByteArray fromPackedString:
'Q4%FNC%!V@@_@O_?@O???0 HBA@PDA XFB$)JSD1LS$9NTIBP$)JR%IRT%)ZV&amp;M#X6-+Z7M3\7-;^&lt;C@0H2L#IRT%J6-+[V5-[6=/\[F1,;N3-[V5-;^7.?/;?_7=5IJR-:-+\9;^&lt;Y3\&lt;Y+Z;5ZV)0HB@ @@IP@@I0@@I0H@J5+X:4!DHP9J[T9FH0)BKUJH[5JH\9#L\YZJZURJ]Y3N\9+L]:DP,9;NVMZT.^TR-:LP''-3Z5)RR''M#T! PBCD!DA@H@FMJJU)BH^&gt;-T*6LV(Q#LTH1FO?/5''-+T)Q;T''MZL^^5X6-RJ]Z%T/^=V)Q+JY2DV+VTV-Z-X&lt;:%V.&gt;=X;6TR.^5V/?FX9Q3N]:-T+VLP(1+LRDXBHQ3T*VLV+6\V-:5X??NZ5IBHZVDP/_FX7-#L\:%T.&gt;=V,Z\R)1;NWMZJYQ3LT(9FF-RHYRL^6-#T*6TV,Z%V.^=X813N[VTR-:5V"$!DN^=V/?NX=Z-T*6LP(Q+LX1;T+V\V-Z5X??VZ6MRJ^?FX?_NX;6\R)Q;N]:5T%)JH_?VX;65''I2T^9RL\7M+T+6%V#$1FCD)DB$!BO?^Z4H9FO?75''-3T/?''\??/\&lt;;N1%IRR)RT^5)ZR!@PBA XB@ H@N?7=?_??=;''9;7F1$IJR-['';&lt;;^9;WN7+7V99R53!AZ%HR-3''N\/VNT/TI;+S%3)Q!Z%M;'';;7N7*7F7#%BR AJ#N_/=&lt;[V9:V=5(2-3(R%1''N\1&amp;.T/UJD-T);+SE+)R%#''AAR%@!J#@AB!E*D-S%+)REZ''AAJ#@!J%@AB#G.\1&amp;NL/TI3+Y255"ER%@@9!@@1^0@1!@@)^=[^;&lt;;V93D9R.?/=?_7?4IBR#$9R @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BG9A@D@@@&lt;@K@@@@@AX@A&lt;@P@#?@B4HGD"0(LFCBB5HV,"0(\NGDBMF+OB ($TK@@@&lt;\?T+H0A&amp;2EA9A@@JFSI!JG$)D0&amp;@0[RWEQ1L2N"HC)4=\@IL,1Q''C1 9&amp;H2DLXMI3!QF$G1L"&lt;NHTY!)N.S85JE#F!UHYZZ=6VN3R903!"1V1C#R%2-[2F(AJGXV&amp;Z2Q@HX!20U@@=2QM[/Z9D*''"5:?_[,L,/&amp;7[=\=_ G77RNC1H Q#$]8FG.7,.WK\OO:7ZOE6Q[DXBY-\KM''R;QIPOAD0&gt;F&amp;&lt;FDX#"NS LE(3=^0X,%"7,5[\&gt;K@0ALK;4I&lt;.NG"1!O_E/-@M0AT0#0A&gt;BRLU3AUIIWY@*@IE3IVFSTT?;! ^P"]PE:&lt;1HD$)!DRJG0D ^$BQ!B_+%\Z1^&amp;298.PN&amp;B 0T\W\3Q"A2QQBBEDH((H4(TT JC 6@^T0SULL.A%ID,21#27SB7P*IIKL+Q(0@A9FT4P@@TY&amp;]_WD8!$DT4^"O5EP2--;CDHD=K T^M&amp;L#1F &amp;L!5FAC[KF)P@%33/G&amp;9E4.S-GEEHQMZ]"U"&amp;D)IYU[D+XGW8X-%=.SYDII6I%()*''&amp;&amp;&amp;1:-PQ.E7&amp;$2T"Z3G%W''W#V.U-M_W!12Q^P6JFCDW8H,\M&lt;XBP"QA1XTMV(IVRT\X$\]Q@7Q"JW%@GIE9''29QUXSG(TR3J3^DQKL*I8]H,2,VQTR#J&amp;YO&lt;D0P@YYKR@@Q8M8Q\#U&gt;04#QVL?FSIGG9@\P$VUN:!UAI]NCTMFV $H(\"]V"E%UVQ_O&amp;)F*E:UEH1@NS2B2/H7AK.K)$@X@(00"QSSBXZPGBY"5%"*]!/U^*U9+5]LSHCY@BO0DFS'';"BSB+)L+LKK;*&lt;@-\*0.22RVU6@^@"GU@8&lt;X 4SW!*FARG-KIAI=DT\]2U^;P00 $?&lt;KUGC[EAE$HGX&lt;JU2S@#ZSBL''ZC$0(,0.XS"4PPB/JQ@+R6"3HX4V0AVGA IHNBD#$-'' V= K@ )F&lt;@-"A%''&amp;VA[+B&gt;&gt;W_ !9U9 .@DE%%]"&gt;WHIH&lt;C0(=\UU]C@@ +$#__^B/C?;W__ O&gt;M]=&gt;U=BBH8S4$#/#"!2&gt;^^NNGM&gt;888)C78LT"M7P[M)&amp;:H._99:BGK'')1\UAQ"NZ[N7$1&amp;:273/)W7MZ\..)4SCGF_G6AL\XTXHAAVN=4=B8&lt;FEO0;#-!/GMI/E:0]?/ILZU8^&lt;1[G+6BR2;XY6=.WQD8 MDED8.=Q1JVXBJ(GG54 PTOWTB2!09X.OGEE8)LD&lt;XW[ S1$!E;LOKFR5_I2%X6T8T31N9+@N EL&amp;C!$ULH@3..R(X-ONFIVDR,FPCHP@@H8H@CCD@@JJKWG(P0CR&lt; Y )2^H$J9SB_K !"F''W(75O.H@H1_FDZ]&lt;CDF:850K8T&lt;H@U@,@+?53AD B\P!''[44P*].D0Y "#XQ$9 K0&lt; "H@5JPKM:RTGF+XAQ5 @ 1\,XPN9+LGK40#BSJ\!!#,&lt;AH;GLEZ I!FH,HPA"+P8R-K$!4@R+FL-02CE=9IUR40AHAYILLU-T!WA!IP,[/T!D+D$YKS*$R6^0&amp;GJ&lt;R)WRX7FX\WA@0D3Q%II''ZQB% H81SOHJT)-5\WU P#FV&gt;)PBO!X!9&gt;SSI_&gt;Z+W2_#UE4X4A$&amp;RB^UHY''DRW+RJEL#86R(^Y!5(XJZV"8EBD8: +:9L(P%8XLHSL(&amp;&amp;SLJ Y\]!#MX^L9$ ^ PW2"BFQ5B!GPCD0!SNAH@,%HDKB%P@K!FP@D5,L/&gt;EMY@,F%,XSIZX8@2+GRDA+]#B/%S6&amp;BK5K4 @\80ITI^QUPP#WQ%Q&amp;GQ ,X.C:PHY(:#UAP3@@@\(XA(I&lt;H #*MSK)PV4[ZEA A9.4(QVDNEL1EEBB,X9)H"NX@V@@JH0:QQO#&lt;32FZE HE04\@DL4OIL''IEFG PJ!^LQPQ)ZXLP G.DLI(@)''B98CFQ:N(HX6LZ@EI7]/JB:AQ240R= 2LDZV+NGM-@ F  8AA_Z5+Y&amp;GP% -OEK&lt;?R(5,-\4SV7]M( [(''K1CB"A''HC3A9&gt;2I0KZL@BEL",Y#_K6\9:U+N\8@P!(/@G4)X6B*QE+V)U^=+U)+Z4,F4-[EEKA#HF_BDMP 4H@C,b'</body>
</methods>

<methods>
<class-id>Seaside.WAStringLibrary class</class-id> <category>properties</category>

<body package="SeasideWebDesignerTool" selector="objectPragmas">objectPragmas
	&lt;pragmas: #instance&gt;

	^#(
	objectNamed:contentType:uploadDate:creationDate:modificationDate:by:
	objectNamed:contentType:creationDate:modificationDate:by:
	)</body>
</methods>

<initialize>
<class-id>Seaside.SampleTree</class-id>
</initialize>

<initialize>
<class-id>Seaside.WAPictureServer</class-id>
</initialize>

<initialize>
<class-id>Seaside.WAWebDesignerLibraryMaintainer</class-id>
</initialize>

<initialize>
<class-id>Seaside.WAWebDesignerTool</class-id>
</initialize>

<do-it>"Imported Classes:"</do-it>

<do-it>self error: 'Attempting to file-in parcel imports.  Choose terminate or close'</do-it>

<class>
<name>Object</name>
<environment>Core</environment>
<super></super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Kernel-Objects</category>
<attributes>
<package>Kernel-Objects</package>
</attributes>
</class>

<class>
<name>WAStyleLibrary</name>
<environment>Seaside</environment>
<super>Seaside.WAStringLibrary</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-Libraries</category>
<attributes>
<package>Seaside-Libraries</package>
</attributes>
</class>

<class>
<name>TestCase</name>
<environment>XProgramming.SUnit</environment>
<super>Core.Object</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>testSelector </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>SUnit</category>
<attributes>
<package>SUnit</package>
</attributes>
</class>

<class>
<name>WARequestHandler</name>
<environment>Seaside</environment>
<super>Core.Object</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>parent </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-RequestHandler</category>
<attributes>
<package>Seaside-RequestHandler</package>
</attributes>
</class>

<class>
<name>WADocumentHandler</name>
<environment>Seaside</environment>
<super>Seaside.WARequestHandler</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>document mimeDocument mimeType fileName </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-RequestHandler</category>
<attributes>
<package>Seaside-RequestHandler</package>
</attributes>
</class>

<class>
<name>WAComponent</name>
<environment>Seaside</environment>
<super>Seaside.WAPresenter</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>decoration </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-Component</category>
<attributes>
<package>Seaside-Component</package>
</attributes>
</class>

<class>
<name>WAFrameComponent</name>
<environment>Seaside</environment>
<super>Seaside.WAComponent</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>contents </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-Components-Frames</category>
<attributes>
<package>Seaside-Components-Frames</package>
</attributes>
</class>

<class>
<name>WAScriptLibrary</name>
<environment>Seaside</environment>
<super>Seaside.WAStringLibrary</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-Libraries</category>
<attributes>
<package>Seaside-Libraries</package>
</attributes>
</class>

<class>
<name>WAFile</name>
<environment>Seaside</environment>
<super>Core.Object</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars>contents contentType fileName </inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>Seaside-HTTP</category>
<attributes>
<package>Seaside-HTTP</package>
</attributes>
</class>

<class>
<name>WAAsyncComponent</name>
<environment>Seaside</environment>
<super>Seaside.WAComponent</super>
<private>false</private>
<indexed-type>none</indexed-type>
<inst-vars></inst-vars>
<class-inst-vars></class-inst-vars>
<imports></imports>
<category>SeasideAsync-Rendering</category>
<attributes>
<package>SeasideAsync-Rendering</package>
</attributes>
</class>

</st-source>
